記一次幫開源專案 spectrum 修 bug 的經歷

前言最近又開始了自己的教學計畫,第一期的時候寫了這篇:利用 Github Classroom 加 Travis CI 打造改作業系統,第二期寫了這篇:AWS Lambda + GitHub API + Google Sheet = 自動化簽到系統,都是利用現成工具來快速湊出符合自己需求的系統。 而第三期開始前我希望課程能有個討論區,讓學生們可以在上面很方便地問問題。一直以來都是用 Slack,但 Slack 最大的缺點就是免費版會吃訊息

Read More...

一起來讀論文 - Robot Learning via Human Adversarial Games

前言這次要跟大家介紹一篇論文 - Robot Learning via Human Adversarial Games。這篇論文主要想研究的問題是,在機器人透過 Reinforcement Learning 學習抓東西的過程中,如果有人類來干擾機器人、試圖讓機器人抓到的東西被弄掉,是不是有辦法讓機器人學習得更有效率? 這篇論文透過一個簡單的實驗場景,透過讓一些測試者參與實驗,證明人類的干擾可以讓機器人學習得更好,就讓我們繼續看下去。

Read More...

如何使用 Python 實現 LRU Cache 快取置換機制

前言由於電腦記憶體空間(memory)的限制,無法容納所有資料和文件,所以當有新的文件要被置換進入快取(cache)時,必須根據一定的規則來取代掉適合的文件,這就是所謂的快取文件置換機制。 一般來說常見的快取文件置換機制有: FIFO(First In, First Out)先進先出算法 LFU(Least Frequently Used)最近最不常使用算法 LRU(Least Recently Used)最近最少使用算法 NMRU

Read More...

用 TypeScript 輕鬆學 Design pattern - Command Pattern

前言雖然直到最近才實際在工作上使用 TypeScript 進行開發,但是早在去年就有斷斷續續在自己的 side project 上玩玩 TypeScript,剛好後來公司讀書會在研讀經典的 Design Pattern 書籍,就索性使用 TypeScript 來製作範例,意外發現 TypeScript 在講解一些 Design Pattern 的時候非常適合,不僅能夠有類別、物件等清楚的表示,也能夠直接在網頁上做出會動的範例。 雖然這是

Read More...

從 React 原始碼看 keyPress 與 keyDown 事件

前言前陣子有個學生跑來問我一個問題,說他在寫 React 的時候分不清楚 keyPress 與 keyDown 這兩個事件,還有 keyCode 跟 charCode 這兩個東西,有時候拿得到值,有時候卻拿不到,覺得十分困惑。 我原本以為是 React 做了一些處理,所以去看了一下原始碼。後來發現 React 的確有做一些處理,但實際上這個問題跟 React 沒什麼關係,而是 keyPress 跟 keyDown 這兩個原生的 Java

Read More...

Vatic 安裝教學

前言Vatic 是用來標註影片中 bounding box 的好用工具,因為它提供了 bounding box tracking 的功能,不需要一個一個 frame 去重新標註,所以想用 Machine Learning 學習影片中 bounding box 的人來說是很好用的工具。 因為 vatic 的安裝步驟有一點複雜,所以寫這篇教學提供給需要的讀者朋友。筆者自己有在 Ubuntu 16.04 裝成功,這篇教學主要會 cover

Read More...

基礎電腦科學:排序(sorting)演算法入門上

前言排序(sorting)和搜尋(search)是演算法(algorithm)中最常見的入門知識。雖然我們在一般程式開發的場合中較少會需要自己實作排序和搜尋演算法,但排序(sort)和搜尋(search)的觀念也常出現在其他的演算法當中,應用層面很廣。本系列文章將使用 Python 來實作幾個經典演算法。首先我們先來介紹:選擇排序、插入排序和氣泡排序法。 選擇排序法選擇排序法是一種十分直觀的排序演算法(就是選擇最小的值和第一個初始值互

Read More...

基礎電腦科學:演算法概要

前言隨著資訊科技發展,演算法已經無所不在存在我們的生活當中。舉凡上網 google 搜尋資料、下載檔案的壓縮方法、檔案的加密傳輸等,都可以看到演算法運作的蹤跡。一般來說資料結構和演算法是程式設計最基本的內涵,所以有人說:程式設計 = 資料結構 + 演算法。那究竟什麼是演算法/算法呢? 咱們維基百科給了個非常需要慧根才能理解的解釋: 演算法(algorithm),在數學(算學)和電腦科學之中,為任何良定義的具體計算步驟的一個序列,常用

Read More...

淺談 JavaScript 頭號難題 this:絕對不完整,但保證好懂

前言在 JavaScript 裡面,有一個令新手十分頭痛,老手也不一定能完全理解的主題:「this 是什麼?」。身為一個以 JavaScript 當作吃飯工具的前端工程師,我也被這個問題困擾了許久。 我原本以為我這輩子都不會寫有關於 this 的文章。 原因有兩個,第一個是講解 this 的文章已經超級無敵多了,而且每一篇都寫得很不錯,之前看完 What’s THIS in JavaScript ? 系列之後覺得講解的很完整,若是沒有把

Read More...

如何用 TensorFlow object detection API 的 Single Shot MultiBox Detector 來做 hand detection

前言今天要來教大家怎麼用 TensorFlow 的 Object Detection API 來偵測人的手,因為筆者最近在使用 這個 repo 的 code時,還是遇到了一些問題,需要自己再去找資料解決,所以決定基於前人的基礎之上再補充說明一些 相比起去年寫過的 一起來玩 OSRF 的 TensorFlow Object Detector,這一篇會有更多對於演算法和細節的敘述,讓大家之後也可以自己學習深入研究各個 model。 Tens

Read More...