跳至正文

Yen-Chin, Lee

關於 Emacs、Clojure、Linux 與開發工具的筆記。

coldnew's blog

在 emacs 下使用 json.el 來讀取 JSON 資料

JSON (JavaScript Object Notation) 是一種輕量級的資料交換語言。隨著 web 變得越來越重要以及 node.js 的興起,JSON 已經變成現在非常重要的資料格 式了。 JSON 格式到底有什麼好的呢?這要從 XML 開始說起了,在 XML 當中對於資 料會寫成以下的形式 或是 你也可以寫成這樣 當然你也可以寫成其他你喜歡的 XML 格式。如果我們將這樣的資料轉換成 JSON 格式的話,則會變成這樣 有沒有注意到原本很複雜的資料格式,突然變成清爽多了? 若你有興趣想更加理解 JSON 格式,可以參考: 你不可不知的 JSON 基本介紹 使用 json.el em…

閱讀全文 »

使用 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…

閱讀全文 »
© 2012–2026 Yen-Chin, LeeRSSPowered by Astro