發表文章

Kafka 不只是訊息系統,更偏向於資料庫

圖片
src: https://kafka.apache.org/intro 「Message queue system 極簡說明」 在遠端呼叫機制中,有一種 pattern 為 publisher - broker - consumer 的方式,publisher 負責產生資料/consumer 負責消化資料/broker 負責handle 雙方吞吐的狀況,而這基本上也是現在大多數的訊息系統 (Message queue system )所實作的方式。 「Kafka 極簡說明」 Kafka 在 broker 的實作上是這樣,從 publisher 來的資料放置在 topic 當中,以 log 的方式存下來,並讓 consumer 來消化它,期間 broker 不會主動去 push 資料給 consumer,而是等 consumer 自己來 pull ,如此一來,就減少許多處理 ack 的問題。 「將 kafka 作為資料庫」 既然資料都在 topic 上面,那為何還需要對其他 DB 作 Query 呢?topic 與 DB 通常主要差異是在資料存放的方式,前者為 log,後者為 transaction,前者是連續時間,後者是片段時間。舉生活例子來說明,請問你昨天在哪裡? log的系統會回答"每個時間點"你所在的位置,transaction 只有一個,而且會是最新(最後更動)那個點。 kafka 是可以做為資料庫的,並且以 log 方式貯存資料。 「ktable, kstream, etl, connecter」 “現階段”處理 log 是用 kStream ,如果要取得某個片段時間點資料是用 KTable,如果要和其他DB作 query 則採用 connector,在這套論點當中,會有些文章提出 ETL(Extract-Transform-Load) is dead 的論述, 我覺得這算是某種程度上的 Buzzword 了,ETL 的概念是會一直跟著的,生活中也一直出現過,數學上也常做表達,他會換個方式活著不會就此停止XD 例如說:KStream 可以是 T, connecter 可以是 E/L

[Regular Expression]正規表達式教學,使用狀態機輔助說明-基礎篇

圖片
感謝設計師 Elim 大大幫忙 # ** 目錄** ##**一、前言** ##**二、極度懶人包** ##**三、Regular Expression 介紹** ##**四、基礎語法介紹** ##**五、練習用習題** ##**六、資料來源** # 一、前言 最近被要求幫同事上課(OS: 壓力山大QQQ),為了不讓自己上課沒材料,同時讓部落格有新文章之外,其實也沒啥目的,主要就是把最近學習到關於 Regular Expression(正規表達式)的內容好好記錄下來,在學習過程中發現這玩意兒,其實不只是工程師的工具,也可以是一般人都能以掌握且在日常生活中使用到的,雖然我不曉得什麼時候用得到,但確實 Regular Expression 會出現在許多地方,為此盡可能簡化入手難度而寫出這系列教學,比較屬於工程師的內容還是有,沒相關知識者不去看也沒差XD。 #  二、極度懶人包 下方為沒有時間,習慣於一邊吃飯一邊看影片的人們使用,關於這邊文章中所要提到的知識以及操作。 # 三、Regular Expression 介紹 ## 1.什麼是 Regular Expression? Regular Expression(正規表達式)又可簡寫為 Regex,他不是新的東西,而是大家早已會的技能,他是語言,也可以說是程式語言,也有人會說他是強大的工具,這些都是對的,只是大家又不同的角度去看待 Regex,而有不同的心得,Regex 在數學上是狀態機,電腦實作中是採用樹狀結構方式實現,也因為他是程式語言,就代表是可以被維護,被實作,被重寫的,因此每次在寫新的 Regex 同時,用對待其他語言的方式對待他,就不會覺得他是麻煩而且難以學習的新事物了。Regex 是各位早已熟悉的東西,早已熟悉的存在。 ``` 狀態機補充 狀態機是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。Regex 中 為判斷接收到的事件是否滿足,如果滿足則移動到下一個狀態,直到整個狀態機滿足為止。 ``` ``` 樹狀結構補充 舉例來說這組 Regex 規則這樣寫 /(ab+c)* + aca/,在樹狀結構表示如下圖所示 ![Tree](https://imgur.com/ZCpuizd.png) 當中優先度為 | 大於 +*...

關於命名變數那回事--使用 codelf 來解決吧!

圖片
圖片擷取自: codelf 目錄 1.前言 2.CODELF 故事 3.CODELF 操作過程 4.參考文獻 1.前言 最近在補充 programmer 該自我要求的資料時,無意間發現產品,一個如何命名變數的小工具,在學習 programming 的過程,最常碰上的困擾就是不曉得該如何取個好的名字,造成這問題的由來可以有很多,書上的範例簡潔使用 int a = 1;或單純字彙量不夠而已XD,反正剛好看到這工具,就記錄一下吧。 2.Codelf 故事 根據這篇詢問  Programmers' hardest tasks 的圖片(如下圖所示),可以明顯看出命名(Naming things)是為難的事情,下面也舉出不少例子來證明這件事情,例如: data -> str_data - > str_data_tmp等,有些人覺得命名應該是一項藝術,但大家最在乎的還是可讀性這件事情,準確且一眼就看出性質與功用的命名可以大幅減少理解與debug的時間。 圖.1 在進行變數命名時,我們可以參考專案的規範或是採用網路上其他人的寫法,但這往往會造成大量的時間在 google 上面,而且還不一定可以找到滿意的,於是乎就有這項工具的誕生啦,這是由  Unbug Lee  所編寫的小工具,由於是中國人,所以工具中英文都適用(簡中)。 3.Codelf 操作過程 一.首先映入眼簾的即為起始畫面,於search中輸入你想要知道的變數即可。 起始畫面 二.在這邊我們就輸入"貨物"試試看,可以看到收尋結果如下,同時也可以參考程式碼片段 我覺得還滿直覺的,應該不用在往下才對XD 4.參考文獻 1.https://unbug.github.io/codelf/

No pain no gain 的實習旅程 - Fandora Shop 實習

圖片
Fandora 駐所地點(攝於面試當天XD) 前言 這本應該是在剛實習完就寫好的文章,由於脫稿症正常運作中,所以拖到至今才發文,本文紀錄下作者於 2015 暑假在 Fandora Shop 的實習過程,看到的,學到的,以及些感想,記錄下那什麼也不知道,就出新手村打怪的歷程XD。 Fandora shop logo圖取自sudo 開始實習 - 認識自我 為了不讓大學最後的暑假荒廢掉,我決定去北部找找 startup 做實習,如此一來可以達到兩項目標:一是確認我對 coding 是否真有興趣,二是了解 Startup 的發展過程。找實習時,由於學校開的缺我能力不吻合,又加上台北的 startup 比較多,所以之後丟履歷的方向都是在台北,透過各種管道,例如 台大媒合實習會 等 圖取自台大媒合實習會網站 找實習過程 - 缺乏經驗的辛酸  這說來就有點艱辛,由於本身是念通訊專業的,但又很想找資工的缺,例如前端網站開發之類的,難免有些專案上的經歷缺失,以及不懂的技術與專業術語,當初我連 git 都不會使用,只好拿著過往在學校做過的實驗經驗去面試,一直被 Rej 也是很正常的,還記得投了快十間的公司吧,記得有海X科技,SXDO,綠X碼,薪X網路等,但最後還是拿到三間公司的面試機會,真的是上輩子有好好燒香。 Fandora shop 的學習歷程 - 世界比想像中的大 我在裡面的實習職稱是前端 RD 實習工程師,實習內容主要是幫忙 CTO 開發網站,撰寫文件, 增加BUG 。 如果你問我在裡面學習到什麼,說實在話,實在太多太多,畢竟根本沒有工作經驗啊XD,不論是公司的運作流程或是程式上的專業技術,對我來說甚麼都是新鮮的,在技術方面,學到 git的用法從而管理程式碼版本,並且 follow  git workflow  來開發專案,還有使用 mocha 進行 unit test,selenium 進行 e2e test,以及 元件規劃,這一切的學習經驗都非常感謝 XP 的耐心,能夠指導沒什麼背景的我,與總是讓我問問題的塔倫斯,還有一起在 RD team 實習的小夥伴,溫溫與品嘉。 總是有新鮮事物的地方 公司上班的氣氛還滿輕鬆快樂的,常有爆笑的事情發生, 通常是CEO童心未泯的表現 ...

Payday 2(劫薪日2) 全 Skin 破解測試 (含測試過程)

圖片
全skin擁有畫面 前言     由於 OVK 近日的一些遊戲策略,使玩家對於遊戲公司不滿,所以有網民就把這份全skin做出來,好好的讓OVK重視玩家的心聲。我也就抱著好奇的心態測試真實性,並體驗看看全Skin的爽感XD,因為DLC海 + 微量交易以及先前的乾爹包,真的讓人感受到吃相難看是怎麼一回事。不過原文發出之後幾小時內,就有開發人員回應會盡快修復這問題,所以過沒幾天這玩意兒應該就沒用了XDD *若讀者對於這份檔案有所疑慮,就不要使用,後果自負 * * 本人僅測試是否可以使用而已 * 使用過程 1.首先把BLT or BLT:CSE 安裝到payday2的資料夾中 若玩家已經有安裝其他模組(ex:hoxhud),請安裝 BLT:CSE 若玩家什麼模組都沒安裝,完全是乾淨的payday2,請安裝 BLT Payday2 資料夾位置:打開steam>右鍵payday2>內容>本機檔案>瀏覽本機檔案 payday2資料夾 2.安裝全skin檔案 下載 Link 中的壓縮檔,再將壓縮檔的資料放進payday2資料夾的mods中 3.享受成果 結果畫面 *若讀者對於這份檔案有所疑慮,就不要使用,後果自負 * * 本人僅測試是否可以使用而已 * 參考文獻 1.http://steamcommunity.com/sharedfiles/filedetails/?id=547527646 2.https://www.reddit.com/r/Games/comments/3rir0p/recently_created_mod_for_payday_2_allows_players/

使用 homebrew 在 Mac 上安裝 mysql

圖片
圖片來源:wiki 前言     由於課程需求,需要練習SQL指令,既然要練習SQL只好找最多人在用的MySQL,這樣除錯起來比較方便XD 安裝步驟 為了極簡化安裝步驟,我們先行安裝homebrew在mac上,接著輸入以下指令  $ brew install mysql 這樣就安裝成功啦~ 基礎使用 啟用mysql.server $ mysql.server start 驗證root帳號可以使用 $ mysql -u root -p 密碼為空,什麼都不用輸入即可使用 顯示DataBases > show databases 參考文獻 1.http://chaneswin.pixnet.net/blog/post/31535983-mac-%E5%8A%A0%E8%A3%9D-mysql

Mac 開發人員必用神器 -- homebrew

圖片
圖片來源:http://brew.sh/index_zh-tw.html 前言     身為Mac 重度使用者,常常會需要去安裝有的沒有的軟體,但安裝時候安裝的步驟的真的超麻煩,有些還要去修改路徑或環境變數,更別提還有要 make install 的...,只要有了這個管理神器 -- homebrew 就可以輕鬆解決這些困擾,讓你安裝軟體減輕不少負擔。 安裝Homebrew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 你會發現這是用ruby的環境來安裝,但mac本身內建Ruby,所以不用太擔心 基本指令 man brew    跟 brew約會 brew help    查詢使用說明 brew serach 查詢可安裝套件 brew list      列出已安裝套件 brew install 安裝套件 應用 我們來安裝git,只要輸入以下即可安裝成功 brew install git 或是安裝 mysql,只要輸入 brew install mysql 就是這麼簡單,這麼輕鬆!!! 安裝前建議先打上 brew doctor,會顯示建議的設定需求 參考文獻 1.http://brew.sh/index_zh-tw.html