在linux kernel中,編譯單一模組

在學習linux driver 時總是需要 compile kernel,但是為了單一module而重新compile整個kernel可就浪費時間了 所以最好的方式就是只compile單一module,這樣不但數度快,也方便debug

取得kernel source code

首先你要知道目前你系統的 kernel 的版本號,才可以去取回對應的 kernel source 使用 uname -r 查詢目前所使用的 kernel 版本是個不錯的選擇

Read More

一個簡單的 Linux Kernel Module

以下會建立一個非常簡單的 linuxk kernel,只會包含兩個 funciton -- 即 init 與 exit 分別在 module 載入及退出的時候會呼叫到

建立 hello.c

這邊不免俗的使用 hello module,先建立 hello_init 與 hello_exit,並且印出訊息

當使用 insmod hello.ko 時,會自動的呼叫到 hello_init 這個 function, 而使用 rmmod 時,也會呼叫到 hello_exit, 也就是說,如果順利載入的話,會在 dmesg 裡面看到這些訊息。

Read More

製作 Yahoo news 全文輸出的 RSS

緣由

每次使用 Yahoo News 的 RSS 訂閱功能都有一種美中不足的感覺,就是他只有提供部分文章,而且是少的可憐, 如果你用 Flipboard 之類的訂閱軟體來做閱讀的話,還真的會很不舒服,所以就讓我們來打造一個全文輸出的 RSS Feeds 吧。

整個想法的 flow 如下

  1. 取回 yahoo news RSS 的資料,擷取每則新聞的連結
  2. 根據 Rss 的連結,再把每則新聞的內文取回來
  3. 把所有內文取回來後,產生新的 RSS 輸出

工具

我使用的是 ruby + sinatra(有點類似小型的 ROR) + Nokogiri,所以要先搞定這三個, 不過安裝的方式也只是用 gem install 就搞定了,沒啥難度。

因為以下的教學是假定你對這兩種工具有一定的認識,所以如果你對 sinatra 與 Nokogiri 不熟的人可能要先去熟悉一下。 若對 nokogiri 不熟的朋友們,這邊有篇 Nokogiri 教學、簡介 可以參考看看。

Read More

使用 Ruby 產生 RSS feeds

Ruby 是一種很適合拿來處理網路資料的一種語言, 使用 Ruby 網頁框架 ROR or sinatra 都可以很容易的建立動態網頁, 就連產生 RSS feeds 也有專屬的 class

使用方式

在檔案前面加入

1
require 'rss/maker'

使用 RSS::Maker 產生 content,如下所示 ( 以下為 code 的一部分 )

Read More

Nokogiri 教學、簡介

Nokogiri 是 Ruby 上的一個 HTML, XML, SAX 的 parser,他可以藉由 XPath or CSS3 selectors 來尋找 XML/HTML 中的 tag,功能強大,速度快速

安裝

使用 gem 安裝

gem install nokogiri

使用時,要在 .rb 檔案 include nokogiri 與 open-uri

require 'nokogiri'
require 'open-uri'

Read More