JSON (JavaScript Object Notation) 是一種輕量級的資料交換語言。隨著 web 變得越來越重要以及 node.js 的興起,JSON 已經變成現在非常重要的資料格 式了。 JSON 格式到底有什麼好的呢?這要從 XML 開始說起了,在 XML 當中對於資 料會寫成以下的形式 或是 你也可以寫成這樣 當然你也可以寫成其他你喜歡的 XML 格式。如果我們將這樣的資料轉換成 JSON 格式的話,則會變成這樣 有沒有注意到原本很複雜的資料格式,突然變成清爽多了? 若你有興趣想更加理解 JSON 格式,可以參考: 你不可不知的 JSON 基本介紹 使用 json.el em…
在 emacs 下使用 json.el 來讀取 JSON 資料
使用 git-wip 來替你自動備份檔案
git-wip 是一個能夠不斷幫你進行備份檔案的 shell script 程式,會將你正在進行編輯的檔案, 放置到 wip branch (Work in Process),這樣假如你不小心滅掉了你的 commit, 或是某天想找尋 某次被遺忘的修改,你都可以透過 git-wip 很簡單的完成他。 使用過 git-wip 後,你可以在你的 git 紀錄看到像下圖這樣的資訊 git-wip 需要配合文字編輯器才能擁有他最強大的 備份 功能,我們將在本 篇文章說明 git-wip 的設計以及 vim、emacs 使用 git-wip 的方式。 安裝 git-wip Gentoo Linux Ge…
在 x86 下 chroot 到 ARM 平台的 rootfs
QEMU 除了是很棒的虛擬機以外,在 Linux 下我們也可以透過他來進行 chroot 到 ARM 平台 的環境,這樣當你要針對某個 ARM 平台下的執行檔進行測試的時候,你不必複 製他到 ARM 的開發板下,直接在本機就可以做測試了。 [!NOTE] 注意: 在這篇文章的範例,都必須以 root 權限 運行。 預先準備 要能夠在 x86/amd64 環境下透過 QEMU 進行 chroot, 必須要有具有 binfmtmisc 的 linux 系統,如果沒有的話,則必須重新編譯 kernel,並將 kernel 加入以 下設定。 安裝 QEMU 既然我們是要使用 QEMU 來幫我們摹擬 A…
讓你的 Raspberry Pi 透過 GPIO 閃爍 LED 燈
Raspberry Pi 提供了許多的 GPIO 讓使用者可以配合電路來做出許多不同的設計, 本篇文章使用 Raspbian 作為 Raspberry Pi 的系統,並透過 Python、C 語言與 newlisp 幾種類型的範例,來展示如何在 Raspberry Pi 下透過 GPIO 來操作 GPIO。 [!NOTE] 注意: 在這篇文章的範例,都必須以 root 權限 運行。 使用設備 要完成本篇文章所描述的部份,你需要以下幾種器材 1. Raspberry Pi 2. LED 3. 電阻 220 Ω 或其他適合阻值 4. 麵包板 5. 單蕊線 硬體線路 下面的硬體線路使用 Fritzi…
讓你的 Raspberry Pi 透過 I²C 讀取 eeprom
Raspberry Pi 對於剛接觸嵌入式系統開發的人而言,無疑是一個非常好的管 道,除了購買開發板僅需要約 NT $1350 以外,更重要的是,他保留了 SPI 與 I²C 這一類的常用通訊接口。 本篇文章將講述如何使用 Raspberry Pi 進行讀/寫 EEPROM,以及 i2c-tool 的基 本使用方式。 使用設備 要完成本篇文章所描述的部份,你需要以下幾種器材 Raspberry Pi EEPROM 24c02 麵包板 單蕊線 硬體線路 下面的硬體線路使用 Fritzing 軟體來繪製,連線到 EEPROM 的線路很簡單,只 要將 I²C 所需要使用的線路連接就好,其中 EEPR…
在 Raspberry Pi 下使用 Barebox
barebox 是 uboot 的第二代版本,和 u-boot 相比,barebox 的設計和 Linux Kernel 類似,因此對於有 Linux Kernel 開發經驗的使用者而言,要進行 barebox 的開發相對簡單。此外,barebox 亦提供有和編譯 Linux Kernel 使用 的 menuconfig 相同的介面,開發者可以快快樂樂的使用 menuconfig 來配置你的 barebox,而不需要像配置 uboot 那樣還要修改許多麻煩的巨集。 本文描述如何編譯以及讓你的 Raspberry Pi 一開機就進入到 barebox 環境, 以實務上而言並沒有多大用處,但是對於…
切換 shell 到 emacs 目前正在編輯文件的資料夾
有些時候我們切換到 console 下操作,想要快速切換目前的資料夾到 emacs 正在編 輯的文件所在的資料夾,你可以將以下程式加入到你的 ~/.bashrc 這樣一來,當你身處在 bash 下的時候,使用 jm 就可以快速切換到 emacs 正在 編輯文件的資料夾下了。
使用 newlisp 寫 GTK 的 Hello World!!
newlisp 是另外一個我很喜歡的 lisp 方言,他的語法比較接近 Scheme,適合做 為腳本語言,此外,由於他的程式體積非常輕巧,只有大約 300k 的大小,因此 做出來的執行檔也比較小。本文將透過 GTK 版的 Hello World 來展示使用 newlisp 的 FFI (Foreign Function Interface) 來建立 GTK 的視窗。 程式截圖 由於我們要用 C 語言與 newlisp 寫同樣的東西,先來看看最後結果會長怎樣。 C 語言版本 這整個 newlisp 程式是依樣畫葫蘆從 C 語言版本轉換過去,我們先來看看 C 語言 的版本。 newlisp 版本 …
umount 時出現 Device is busy 的解法
在 Linux 下,有時候對 deviec 進行 umount 的時候,會出現 Device is busy 的情況,出現這個狀況的原因,可能是你有某個 shell 還停留在掛載這個設備 的資料夾下,也有可能是這個設備正在進行檔案儲存等狀況,那遇到這個狀況 時要怎麼辦呢? 使用 fuser 找出佔用的程式 假設我們掛載設備的路徑為 /media/share ,則你可以使用 fuser 指令來對他進行查詢 使用這個命令後,你會看到如下的顯示 這代表 process 25023(pid)有使用到此目錄,後面的 c 的意思可以參照下表 釋放被佔用的資源 要釋放被佔用的資源,我們可以使用傳統的 kil…
使用 lein 來管理你本地的 maven repo
lein 已經成為開發 Clojure 程式的必備工具,最近在 GitHub 看到很方便的 lein 擴展 lein-localrepo ,使用他可以很簡單的將需要的 Java Libraries 加入到本地的 Maven repo 來複習一下傳統的作法 在 用 Clojure 寫 javafx 的 Hello World 一文有說到你可以使用以下的命 令將 javafx 加入到你本地的 Maven repo, 是不是覺得這個方法很麻煩? 使用 lein-localrepo 來簡化這麻煩的步驟 要讓 lein 有管理本地 repo 的功能,首先你需要在 ~/.lein/profiles.clj…