用 Python 自學程式設計:程式設計思維入門

什麼是程式設計思維?最近幾年全球刮起了一股爭相學習電腦科學(Computer Science)和程式設計(Programming)的風氣,上至總統、首相下至升斗小民都爭相開始學寫程式。事實上,學寫程式最重要的是學習電腦科學背後思考方式和邏輯,學習如何透過科技解決生活上的問題。更進一步說,程式設計與其說是一種科學,更偏向一種藝術人文的創作與科學的混合體。以前畫家或是作家是拿紙筆創作,現在只要有一部電腦,連上網路,就可以透過敲打鍵盤將自

Read More...

C++ Header Guard 簡介

前言C++ 的 header guard (中文譯作表頭哨兵,聽起來超帥) 是在開源/大型專案中常常用到的功能,所以如果想要踏入開源專案的世界,看到 header guard 就覺得親切熟悉,絕對可以幫助你更把心思放在體會到這些開源程式碼的美! 而且這個例子正巧是有朋友去面試美國某間新創公司時,實際被問到的問題,所以才興起想要動筆寫下這篇文章的念頭。畢竟很多小地方有沒有真正弄通是技術實力紮不紮實的重要指標! 我剛剛隨便選了一個 C++

Read More...

使用 JavaScript 處理二進位資料

由於高度封裝與抽象,JavaScript 的執行效率比不上 C 的語言。例如 JavaScript 的 Array 下標(subscript)是根據 hash key 而非實體記憶體位址 offset 取值,雖然方便,卻多了效能開銷。當 Canvas、WebGL、WebVR 開始走紅,效能越來越受重視,如何讓 JavaScript 達到如同 C 指標般操作 binary data 變得至關重要。

存在許久但最近才變為 ES6 標準「Typed Array」就是解放 JavaScript 操作 binary data 能力的好工具!一起來了解 Typed Array 吧!

(基於 ECMAScript 6+,Node.js 8.3)

Read More...

D3v4 工作坊 - WebVR 與資料視覺化

前言Q2 的時候稍微玩了一下 WebVR,主要是瞭解了 Mozilla 主導推出的 A-Frame,驚訝於其簡單方便的 API 設計外,也一直在想還能做什麼有趣的應用,直到最近在構思 D3 的一些範例時,才突然又再想起 WebVR:既然 A-Frame 提供了一系列的 VR DOM object,而 D3.js 又能操作 DOM,那理論上一起使用是沒有問題的。 果不其然,稍稍在網路搜尋一下就看到 WSJ 的這篇 Is the Nasda

Read More...

前後端分離與 SPA

前言這篇的原文(你走你的陽關道,我走我的獨木橋:前後端分離)是我之前在 iT 邦幫忙鐵人賽的其中一篇文章,寫完之後有陸陸續續收到一些回饋,就想說可以重新整理一下這篇文章,讓它變得再更清楚一點。 如果你有以下疑惑的話,這篇文章非常適合你: 為什麼前端會有 MVC? 前端 MVC 跟後端 MVC 有什麼不一樣? 為什麼要有 SPA(Single Page Application)? (其實關於 MVC 到底是什麼就有很多討論了,但因為這

Read More...

Go Web 程式設計入門教學:基礎介紹與環境建置

前言Go 程式語言 是 Google 推出的靜態程式語言,其特色在於核心語法和關鍵字非常精簡(全部只有 25 個關鍵字!)並擷取了靜態語言的效能和動態語言的開發效率的優點,具備垃圾回收、快速編譯等特性,且針對平行化程式設計在使用上非常方便。接下來的文章我們將透過 Golang Web 程式設計來學習 Go 這個程式語言。程式語言唯有動手作才能學的好,你可以參考本篇文章建置開發環境或是使用線上開發環境進行學習。 Go 環境建置安裝方式:

Read More...

Udacity RoboND - Rover project 簡介

前言最近 Udacity 的 nano degree 算是滿紅的,他們也有把很多教學資源放到 github 上面,例如 Rover project,我覺得拿來上手還不錯,以下就稍微來簡介一下這個 project 有趣的地方。 Project 簡介 這個 project 是要讓 Rover 在世界中自由自在地行走,然後尋找特定的岩石樣本並收集,因為他們將岩石的顏色設計得跟背景很不一樣,所以我們只要可以在環境中走來走去,然後一直尋找畫面中有

Read More...

D3v4 & Canvas 工作坊 - D3 + Canvas 繪製動態路線圖

前言HTML 5 的 Canvas 是許多人做動畫、做遊戲常常會用到的工具,此外,如果是進行資料視覺化,在繪製大量的圖形與動畫時,Canvas 可以為你的 performance 帶來很大的改善,從 D3.js 實戰 - Canvas 把我的視覺化變「快」了! 中最後的範例就可以看得出來差異。 總之,身為前端工程師的我卻沒有實作做過 Canvas 相關應用,在羞愧之餘也得奮發向上扳回劣勢才可以,所以決定把上次用 d3 與 svg 繪製的

Read More...

一起用 JavaScript 來複習經典排序法吧!

前言最近剛好上到 CS50 Week3,這一週的主題是:Algorithms,裡面介紹到了幾種經典的排序法,像是選擇排序、泡沫排序、插入排序以及合併排序。 我覺得身為一個軟體工程師,大概一輩子都脫離不了排序了,畢竟這是經典演算法之一嘛!與其每次要面試之前都凌亂的準備,不如現在就整理出一篇,紀錄一下各個排序法的心得,幫自己做個統整。 因此,這一篇將利用 JavaScript 來實作各個經典排序演算法。 這次實做的排序法都會是由小到大排序,

Read More...

Python Web Flask 實戰開發教學 - SQLAlchemy 與 ORM

前言Web 開發涉及層面很廣,包含了前後端開發、資料庫優化、平行處理、負載平衡、高可用性、資訊安全、雲端伺服器部屬等議題,本系列文章將透過介紹 Python Web Flask 實戰開發來學習現代化網站開發的方方面面。上一篇我們完成了環境建置,這一單元我們將進入 MVC 架構的 Models 部分並學習如何使用 SQLAlchemy 建立和資料庫互動的 ORM 機制。 什麼是 MVC?MVC 模式(Model–view–cont

Read More...