ROS SMACH 簡介

前言這次想跟大家介紹一個好用的工具 - SMACH (唸法同 smash)。SMACH 的存在意義是為了讓大家可以用系統化的方式來撰寫機器人的行為。這個系統化的方式是 Finite State Machine,概念上跟之前介紹過的 ecto 的 graph 概念有點相似。 簡單來說,就是讓我們可以很方便地定義機器人的各種狀態,所以機器人就不再只是根據程式碼裡面寫定的一連串行為去行動,而可以根據各種不同的條件進行狀態的切換。舉例來說,一個

Read More...

用 JavaScript 學習資料結構和演算法:集合(Set)篇

什麼是集合(Set)?集合是一個源自於數學理論中擁有不同元素的集合: N = {0, 1, 2, 3, 4, 5, 6, …} 空集合:{} 其特性在於它是由一組無序且不重複的項目組成。你也可以想成是一個沒有重複元素和無順序的陣列。在這篇文章我們會介紹如何實作集合資料結構並使用 交集、聯集、差集等集合操作方式。 集合初體驗事實上,在 ES6 中就有原生的 Set,在這邊我們試著使用 JavaScript 物件模仿 ES6 的 Set

Read More...

與 CSS Grid 的第一次接觸

前言建構網頁佈局是製作網站的基本動作之一,隨著設計多樣性與功能複雜度的提升,開發者必須利用 table, inline, float, clear, 或是 positioning 等方式來 hack 頁面配置,但不管是哪種方式都各自有其缺乏的功能,也因此催生出許多 CSS Framework 提供的 Grid System 來加速佈局開發。 幾年前出現的 FlexBox 宛如神兵利器,讓我們可以擺脫這些困擾,快速進行排版,而隨著 CSS

Read More...

記一次軟體工程師面試心得

前言我自己很喜歡看一些面試的文章,因為可以從裡面學到許多,如果有面試題目的話那就更棒了,可以邊看邊想,測測看自己的實力。這篇文章是我前一陣子面試某間公司的歷程跟一些心得,希望對大家會有幫助。順帶一提,最後是有拿到 offer 的。 我面試的職缺叫做 Software Engineer,軟體工程師,四次面試都是中文的(我原本以為會有英文)。HR 有先跟我聊過,我有說我比較想要做前端,所以有些面試的考題會比較偏前端。但因為這間公司也很注重

Read More...

白話的 Hash Table 簡介

前言最近因緣際會,複習了一些基礎的資料結構。在看到 Hash Table 的時候,也順便看了一下他的時間複雜度。不看還好,一看不得了,怎麼那麼小 (插入元素、移除元素跟找某個元素大概都只要 O(1) 的時間複雜度)!所以想要用很簡潔白話的方式說明一下 Hash Table 這個好用的資料結構。 簡介 Hash TableHash Table 是儲存 (key, value) 這種 mapping 關係的一種資料結構,從圖中可以很清楚地看

Read More...

JavaScript 101 快速入門教學

前言Java 和 JavaScript 雖然名稱相似,但卻是熱狗和狗的差別。JavaScript 是由 Netscape 工程師 Brendan Eich 於 1995 年僅花 10 天所設計的程式語言,也因為一些歷史因素,JavaScript 成為被誤解最深的程式語言。JavaScript 是一種直譯式、基於原型(prototype based)的物件導向程式語言,但又具有函數式程式設計(Functional programming

Read More...

2017,讓我們再來看看 Web Components 吧!

前言先前研究 Progressive Web App 的時候就有注意到 Web Components 這個東西,也看過公司前輩使用過,甚至在前陣子 GDG DevFest Taipei 2016 的官方網站內,不僅使用 PWA,也採用了 Web Components 的技術(當然應該是用 Google 的 Polymer)來搭建。但還是很少看人使用與談論,我自己也是從來沒有仔細研究過(汗.. 我稍微搜尋一下,大部分的介紹文章都是2013

Read More...

一個資淺工程師年末的自我省視

嗨大家,今天是 2016 年的最後一天了,先預祝大家新年快樂,能夠在明年有一個好的開始。同時也感謝大家對 TechBridge 的支持。 我自己喜歡看的技術文章有兩類,一種是分享一些實際的軟硬體技術,例如說教你怎麼用 Node.js 寫一個聊天機器人,或是怎麼用最新的 CSS 語法建造出酷炫的網頁效果等等。另外一種則是比較「軟」一點的心得分享文,例如說最近這陣子滿常看到被分享的這兩篇:接近 2016 年底的我是否有資格稱為資深工程師、技

Read More...

Object Recognition Kitchen 透明物體辨識(演算法概念)

前言這次的文章想要討論一個有趣的題目 – 透明物體辨識,這次的介紹先把題目限定在找出透明物體的位置,並把透明物體的輪廓找出來。 演算法功能簡介我們的演算法目的是要找出影像中的透明物體,並把輪廓圈出來,就像下面這張圖一樣。 其實如果要更精確,應該把想要辨識哪些透明物體、在那些場景、辨識成功率希望有多高、如何定義辨識成功等都說清楚,不過這邊想先帶給大家一個初步的概念,就不討論得太過瑣碎。 演算法概念為了達成這個功能,我們勢必要先收到彩色影

Read More...

Python 101 快速入門教學

什麼是 Python?Python 是一種物件導向、直譯式的跨平台電腦程式語言,它包含了一組功能完備的標準庫和豐富套件生態系,可以輕鬆完成很多常見的任務(例如:讀寫檔案、自然語言處理、網路爬蟲、網站開發、機器學習等),因為它可以很輕易整合其他底層語言,所以又稱為膠水語言。它的語法簡單,與其它大多數程式設計語言使用大括弧不一樣,它使用縮進來定義語句塊。由於具備簡潔易學等特性,許多開發者推薦 Python 為初學者第一個學習的程式語言。

Read More...