利用 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...

【譯】Tokio 內部機制:從頭理解 Rust 非同步 I/O 框架

本文譯自 Tokio internals: Understanding Rust’s asynchronous I/O framework from the bottom up。Thanks David Simmons for this awesome article! Tokio 是 Rust 的開發框架,用於開發非同步 I/O 程式(asynchronous I/O,一種事件驅動的作法,

Read More...

Ceres 函式庫簡介

前言Ceres 是用來求解 Optimization 問題的 C++ 開源函式庫,是由 Google 所釋出的,文件相當完整,而且這個函式庫還有不少 好處(例如 code 品質、使用的方便性等等)。 今天我們會一起來看看怎麼安裝 Ceres,並用 Ceres 來求解一個最簡單的問題。 安裝 Ceres (in Linux)一開始呢,要先安裝一些 Ceres 會使用到的函式庫; 1sudo apt-get install liblapac

Read More...

Linux Command 命令列指令與基本操作入門教學

前言要成為一個真正的軟體工程師(Software Engineer)不一定一定要使用 vim 之類的編輯器進行開發,但熟悉使用終端機(terminal)操作和常用的 Linux 命令列指令碼操作則是必須的。因此接著我們將介紹軟體工程師在開發上常用的 Linux 命令列指令碼給讀者參考。若讀者使用的是 Windows 建議安裝 VirtualBox 並在上面跑 Linux/Ubuntu 來進行指令碼操作,或是使用像是 Cmde

Read More...

一起用 Google Calendar 與 D3.js 進行年終回顧吧!

前言大概是在 2016 年底的時候,我整個人的心理狀態很糟,一直覺得自己對生活的掌控力非常低落,庸庸碌碌的過著每一天,卻不曉得自己的目標在哪,對什麼都興致缺缺,似乎把生活遺失了。 我試著想從過往日常生活中的所作所為來找出一些癥結點,結果發現記憶有限,越想越覺得自己好像什麼都沒完成,接著就進入無止盡的負面迴圈… 為了打破這樣的心理狀態,我從 2017 年的一月開始記錄自己每天的生活,將一整天所做的事項記錄在 Google Calendar

Read More...

希望是最淺顯易懂的 RxJS 教學

前言關注 RxJS 已經好一段時間了,最早知道這個東西是因為 redux-observable,是一個 redux 的 middleware,Netflix 利用它來解決複雜的非同步相關問題,那時候我連redux-saga都還沒搞懂,沒想到就又有新的東西出來了。 半年前花了一些時間,找了很多網路上的資料,試圖想要搞懂這整個東西。可是對我來說,很多教學的步調都太快了,不然就是講得太仔細,反而讓初學者無所適從。 這次有機會在公司的新專案裡面

Read More...