highlight.js
星期四, 9月 29, 2016
Arduino 1.6.10 編譯中文資料夾下的程式問題
從 Arduino 1.6.10 版開始, 如果你的專案儲存在有中文名稱的路徑下, 而你的程式中又包含有函式的定義在呼叫函式處之後的狀況, 例如以下的範例:
其中 foo() 定義在程式最尾端, 但是在程式一開始的 setup() 中就呼叫了 foo()。這時編譯會出現 "'foo' was not declared in this scope" 錯誤訊息。只要把程式移到沒有中文名稱的路徑下就可以正常編譯。推測可能是 Arduino 1.6.10 之後, 在編譯的細節中有所變動, 導致編譯前段蒐集所有定義項目的資訊無法存回存到位在中文名稱路徑下的專案資料夾, 因而在後段編譯時認不得這些定義在引用處之後的名稱。
附註:在『文件』以及『桌面』下並不會有問題, 因為實際上『文件』與『桌面』的真實資料夾名稱是 Document 與 Desktop, 並不含中文。
星期三, 9月 28, 2016
在 Visual Studio Code 為新語言增加語法標示 (Syntax Highlighting)
Visual Studio Code 寫程式很好用, 但如果遇到特殊或是很新的語言, 就不見得有前人製作好的套件可以幫程式碼標示語法, 這時候就只好自己動手做了。這得自行設計好對應該語言的語法規則套件, 相關說明可參考 Visual Studio Code 的文件。大致步驟如下:
附註:TextMate 的語法規則檔不只 Visual Studio Code 使用,鼎鼎大名的 Sublime Text 以及 Atom 也都是使用同一格式來描述語法的規則, 儼然成為文字編輯器界的標準了。
- 撰寫該語言的語法規則檔
- 以語法規則檔為基礎建立該語言的擴充功能 (extension)
- 將建立好的擴充功能加入 Visual Studio Code 後重新啟動 Visual Studio Code
- 開啟該語言的檔案或手動選用該語言擴充功能, 就可以看到語法標示發揮效用
附註:TextMate 的語法規則檔不只 Visual Studio Code 使用,鼎鼎大名的 Sublime Text 以及 Atom 也都是使用同一格式來描述語法的規則, 儼然成為文字編輯器界的標準了。
星期六, 6月 11, 2016
保留 Arduino 程式碼語法上色貼到 PowerPoint 的方法
我目前的工作需要用投影片解釋 Arduino 程式, 最理想的結果就是可以貼上和 Arduino 開發環境中同樣顏色標示語法的程式碼, 所需的步驟如下。
先在 Arduino 開發環境中選取要貼到 PowerPoint 的程式段落, 然後按滑鼠右鍵選取『當作 HTML 進行複製』, 這個功能會用 HTML 碼描繪所要複製的程式碼:
接著, 可以將複製的 HTML 碼貼到文字檔中, 然後用瀏覽器開啟檢視, 或是使用線上的 HTML 檢視器 (例如:http://codebeautify.org/htmlviewer/) 直接貼上 HTML 碼後檢視, 然後複製瀏覽器上 HTML 碼的顯示結果:
再將複製的內容貼到 Word 中,這個步驟看起來好像多餘, 但如果你直接把從瀏覽器複製的內容貼到 PowerPoint, 雖然程式碼的語法顏色都會正常顯示, 但是會變成沒有斷行的一長串文字, 像是這樣:
因此, 要先貼到 Word 中, 再從 Word 中複製一次內容:
最後, 再將從 Word 複製的內容用『選擇性貼上』的方式:
再選取『格式化文字 (RTF)』:
就可以貼上保留語法顏色標示的程式碼了:
先在 Arduino 開發環境中選取要貼到 PowerPoint 的程式段落, 然後按滑鼠右鍵選取『當作 HTML 進行複製』, 這個功能會用 HTML 碼描繪所要複製的程式碼:
接著, 可以將複製的 HTML 碼貼到文字檔中, 然後用瀏覽器開啟檢視, 或是使用線上的 HTML 檢視器 (例如:http://codebeautify.org/htmlviewer/) 直接貼上 HTML 碼後檢視, 然後複製瀏覽器上 HTML 碼的顯示結果:
再將複製的內容貼到 Word 中,這個步驟看起來好像多餘, 但如果你直接把從瀏覽器複製的內容貼到 PowerPoint, 雖然程式碼的語法顏色都會正常顯示, 但是會變成沒有斷行的一長串文字, 像是這樣:
因此, 要先貼到 Word 中, 再從 Word 中複製一次內容:
最後, 再將從 Word 複製的內容用『選擇性貼上』的方式:
再選取『格式化文字 (RTF)』:
就可以貼上保留語法顏色標示的程式碼了:
星期一, 3月 07, 2016
ESP8266 韌體燒錄
ESP8266 是創客界的實用玩具, 許多人都客製了不同的韌體, 以下蒐集了幾種不同的韌體供大家切換使用:
- MicroPython:使用 Python 程式語言開發應用, 可在此處 (https://s3.amazonaws.com/adafruit-download/MicroPython_ESP8266_Firmware_5_12_2015.zip) 下載, 這版韌體的序列埠速率使用 115200bps。
- Espruino:使用 JavaScript 程式語言開發應用, 可在此處 (http://www.espruino.com/binaries/) 下載韌體, 請在其中找到專為 ESP8266 晶片設計的韌體, 序列埠的速率應該是 115200bps。
- NodeMCU:使用 lua 程式語言開發應用, 可在這裡 (https://github.com/nodemcu/nodemcu-firmware/releases) 下載韌體, 韌體有區分 int 與 float 版本, 一般應用需要浮點數計算就要下載 float 版本, 否則數值只有整數可用。或者, 您也可以在這裡線上客製自己的韌體, 客製後的韌體使用的序列埠速率是 9600bps。
- AT 指令:使用傳統的 AT 指令控制 ESP8266, 雖然沒有上述程式語言的好處, 但對於瞭解 ESP8266 的運作很有幫助。你可以在這裡 (http://bbs.espressif.com/viewforum.php?f=46) 尋找討論串中標題為 AT Releases 的就是 AT 指令集的韌體。要特別留意的是 1.5 版後的 AT 指令集因為程式碼太大, 無法燒錄到 4MB Flash 版本的 ESP8266 晶片, 必須使用具有 8MB 的晶片。有關相關燒錄步驟, 可參考這篇文章。
星期六, 2月 13, 2016
Google Drive 相同檔名重複儲存的怪問題
我很喜歡雲端硬碟, 可是在我的使用經驗中, 只有 Dropbox 幾乎算是無痛使用, OneDrive 則是同步速度有點緩慢, 而 Google Drive 常常有些我不能理解的作法, 比如說你如果透過網頁拖放的方式上傳檔案, 就可以像是這樣上傳同樣的檔案多次, 而 Google Drive 就會出現重複的同名檔案:
糟糕的是它就是兩個同樣名稱的檔案, 也不會加上像是 "(1)" 的字尾區分, 所以如果你不注意, 就會在 Google Drive 中重複多份檔案, 佔用空間配額。
更遭的是, 如果你有檔案放置在其他使用者與你共用的資料夾中, 還可能會發生這樣的情況, 共用資料夾所有者刪除了某個檔案, 而你再重新上傳同一個檔案, 很可能會發現兩個檔案都佔據了空間, 而且在你的 Google Drive 中看不到已經被刪除但仍佔據空間的檔案。要找出這種檔案, 目前我所知的方法就只能利用網頁介面左邊『已使用 XX GB』的儲存空間使用資訊中顯示個別檔案佔用的空間配額:
只要點選『雲端硬碟』後面的 i 圖示, 就可以顯示所有檔案的佔用大小。或者你也可以用搜尋的方式, 像是以下就是我自己 Google Drive 上找到的例子:
在這個例子中, 你可以看到同樣的檔名可以找到 3 個檔案, 其中第一個檔案是目前儲存在 Google Drive 的檔案, 你可以在底下看到這個檔案的路徑。 如果點選第二個檔案, 你會發現下方無法顯示它的儲存路徑, 而且右邊的資訊欄中也告訴了我這個檔案已經被共用資料夾的使用者刪除了:
但是這個檔案仍然佔據了 Google Drive 的儲存空間, 解決的方案就是刪除它, 清空 Google drive 的垃圾桶。至於第 3 個同名檔案, 則是共用資料夾所有人的檔案連結。
我之前一直覺得很疑惑, 明明看我自己硬碟上 Google Drive 同步的內容只有大約 3GB, 為什麼看空間配額一直說我佔用了 14GB, 利用上述方式重新檢視之後, 現在就恢復成 3GB 了。
糟糕的是它就是兩個同樣名稱的檔案, 也不會加上像是 "(1)" 的字尾區分, 所以如果你不注意, 就會在 Google Drive 中重複多份檔案, 佔用空間配額。
更遭的是, 如果你有檔案放置在其他使用者與你共用的資料夾中, 還可能會發生這樣的情況, 共用資料夾所有者刪除了某個檔案, 而你再重新上傳同一個檔案, 很可能會發現兩個檔案都佔據了空間, 而且在你的 Google Drive 中看不到已經被刪除但仍佔據空間的檔案。要找出這種檔案, 目前我所知的方法就只能利用網頁介面左邊『已使用 XX GB』的儲存空間使用資訊中顯示個別檔案佔用的空間配額:
只要點選『雲端硬碟』後面的 i 圖示, 就可以顯示所有檔案的佔用大小。或者你也可以用搜尋的方式, 像是以下就是我自己 Google Drive 上找到的例子:
在這個例子中, 你可以看到同樣的檔名可以找到 3 個檔案, 其中第一個檔案是目前儲存在 Google Drive 的檔案, 你可以在底下看到這個檔案的路徑。 如果點選第二個檔案, 你會發現下方無法顯示它的儲存路徑, 而且右邊的資訊欄中也告訴了我這個檔案已經被共用資料夾的使用者刪除了:
但是這個檔案仍然佔據了 Google Drive 的儲存空間, 解決的方案就是刪除它, 清空 Google drive 的垃圾桶。至於第 3 個同名檔案, 則是共用資料夾所有人的檔案連結。
我之前一直覺得很疑惑, 明明看我自己硬碟上 Google Drive 同步的內容只有大約 3GB, 為什麼看空間配額一直說我佔用了 14GB, 利用上述方式重新檢視之後, 現在就恢復成 3GB 了。
訂閱:
文章 (Atom)