測試替身(上篇)

如果你在工作時寫過一些測試程式,也許你聽過什麼是 Mock,但其實 Mock 只是測試替身的其中一種,測試替身包含了 Dummy、Mock、Fake、Stub、Spy。而不同語言或不同 framework 有時候會把類似的概念合在一起。 本系列的目的是讓你寫單元測試的時候,對應不同情況,知道應該用哪一種替身。像筆者常用的 Mockito 基本上把大部份的測試替身都用 Mock 取代,雖然用起來容易,但我以前從來不知道自己用的是哪一種測試

Read More...

一起來玩 OSRF 的 TensorFlow Object Detector

前言上次我們一起 使用 TensorFlow 來做簡單的手寫數字辨識,雖然我們可以自己使用這些 API 兜自己的模組,但我們也可以利用現成的工具,節省開發時間。 安裝安裝步驟可以參考官方的 README文件。我自己是在 Ubuntu 14.04 + Indigo 測試過,也 OK,只要記得將一些安裝 kinetic package 的地方更新成 indigo 就好。例如第二步的 camera dependencies: 1sudo ap

Read More...

Go Web 程式設計入門教學:語法基礎之流程控制(flow control)篇

前言之前我們曾介紹了如何建置 Go 變數和資料型別的使用,接下來的單元我們將透過 Golang Web 程式設計來學習 Go 這個程式語言。而在這個單元中我們將介紹 Go 的流程控制的使用。程式語言唯有動手作才能學的好,你可以參考之前的文章建置開發環境或是使用線上開發環境進行學習。 流程控制簡介一般而言,程式語言是由上往下執行,若我們需要程式依照我們設計的邏輯方向執行就需要流程控制的協助。在這邊主要談的流程控制有三部分:條件判斷、迴圈

Read More...

如何做出一個好的 NodeJS 模組?

前言這篇文章需要知道什麼是 NodeJS,簡單來說 NodeJS 讓 Javascript 可以變成一個後端的語言,而不是僅限瀏覽器才能解讀的前端語言。如果你還沒用過 NodeJS,首先需要安裝他,Windows 和 MacOS 的用戶可以直接上官網下載,Linux 的用戶推薦使用 NVM 安裝。 回想我們一開始學 C++ 的時候,如果想要用數學的函式,必須引入 cmath 函式庫(Library)才能呼叫 sin、cos 等函式。而我

Read More...

Chrome devtools extension 實作介紹

前言身為工程師,想辦法提高自己的工作效率是一件很重要的事情,畢竟這樣才有多餘的時間打電動,除了平時加強各種知識與累積經驗外,撰寫工具的能力也值得培養。剛好在前不久,公司舉辦了一次內部的 hackday,我就利用這個時間針對公司內部的 framework 寫了一個簡單的 chrome devtools 的 extension,增加開發上的便利性。而在開發的過程中,發現關於 Chrome devtools extension 的文章並不是很

Read More...

利用 Github Classroom 加 Travis CI 打造改作業系統

前言這陣子開始了一個自己的 side project,叫做程式導師實驗計畫,希望能在四個月內把學生培養成找得到工作的工程師。 而 Git 身為工程師的必備技能之一,用 Git 來交作業也是合情合理的一件事,可以先培養學生們對 Git 的熟悉程度。 但問題來了:要怎麼用 Git 交作業? 之前有開過另外一個前端的課程,那時候我採取的方式是讓學生自己開一個 Github repo 寫作業,並且設置 Github page,所以我可以看到學生

Read More...

使用 TensorFlow 來做簡單的手寫數字辨識

前言相信大家都知道 TensorFlow 是可以用來建立跟訓練機器學習的模型,今天我們就來跑一個最簡單的 Neural Network,來辨識手寫數字,讓他吐出結果。有了這個程式之後,之後就可以再銜接其他的工具,例如讓機器人裝一個 camera,讀到 camera 的影像之後可以辨識數字,這樣就可以透過數字來對機器人下指令。或是可以再抽換辨識手寫數字的 node,改成辨識物體之類的。 接下來就讓我們開始吧。 TensorFlow 辨識手

Read More...

Git 與 Github 版本控制基本指令與操作入門教學

前言要成為一個真正的軟體工程師(Software Engineer)除了掌握基礎開發能力外,更重要的是和其他工程師和開發者團隊合作和溝通的能力,所以若你能培養出掌握 Git 等版本控制操作和 Git server 架設的能力,你會更容易參與開放原始碼(open source)的社群和提昇自己在職場上的價值。好,那我們就準備開始吧! 什麼是版本控制系統(Version Control System)? 版本控制系統是一種軟體工程的開發技

Read More...

前端也能玩 Deep learning - 以 p5-deeplearn-js 為例

前言還記得約莫是 2012 年我還在唸研究所的時候,有位清大教授(原諒我忘了是哪位…)來系上演講關於類神經網路的應用,當時的我聽得霧煞煞,覺得是離我很遙遠的一門學問,而如今 Machine Learning、Deep Learning 滿天飛,說你沒聽過 KNN 就像說你沒背過 99 乘法表一樣驚人。 對於一個成天在網頁打滾的前端工程師,可能真的沒太多機會碰觸到相關實作或研究。但小心了!AI 的觸角也慢慢伸到前端的領域 - Screen

Read More...

React 性能優化大挑戰:一次理解 Immutable data 跟 shouldComponentUpdate

前陣子正在重構公司的專案,試了一些東西之後發現自己對於 React 的渲染機制其實不太了解,不太知道 render 什麼時候會被觸發。而後來我發現不只我這樣,其實還有滿多人對這整個機制不太熟悉,因此決定寫這篇來分享自己的心得。 其實不知道怎麼優化倒還好,更慘的事情是你自以為在優化,其實卻在拖慢效能,而根本的原因就是對 React 的整個機制還不夠熟。被「優化」過的 component 反而還變慢了!這個就嚴重了。 因此,這篇文章會涵蓋到

Read More...