聚會時間公告: 因應COSCUP 2011, Kalug 8月份休會一次

十一月 9, 2009
» 用python讀寫Binary檔案

最近工作上需要修改一個binary檔的特定幾個Bytes,這邊分享一下過程。

假設binary檔案經過 xxd轉換後長這個樣子

0011223344

然後要改成

9911223344

可使用下列程式轉換

from binascii import hexlify, unhexlify
path = 'binaryfile'
contents =  map(hexlify, list(open(path,'rb').read()))
# 將第1組設成 0x99
contents[0] = '99'
open(path, 'wb').write(unhexlify(''.join(contents)))

十月 9, 2009
» 繞過linux driver vermagic檢查

在開發kernel driver時,總是會遇到討人厭的vermagic檢查,只要目前在run的kernel版本跟driver編譯時用的kernel版本不一致,就沒辦法insmod。

bash-3.2# insmod sdio.ko

sdio: version magic '2.6.28-271-gec75a15 preempt mod_unload modversions ARMv7 '

should be '2.6.28 preempt mod_unload ARMv7 '

insmod: init_module 'sdio.ko' failed (Exec format error)

這大大降低了開發速度,尤其是當你拿不到客戶在用的kernel時,又要開發driver給他用,真的是很麻煩……

那麼要怎麼利用噁心的方式繞過去呢???

一、先把 Moudle version 檢查關掉。

user@host # ARCH=arm make menuconfig

--- Enable loadable module support                                             │ │

│ │         [ ]   Forced module loading                                                    │ │

│ │         [*]   Module unloading                                                         │ │

│ │         [*]     Forced module unloading                                                │ │

│ │         [ ]   Module versioning support                                                │ │

│ │         [ ]   Source checksum for all modules

二、 使用modinfo時,可以看到目前這driver的vermagic

filename: external_drivers/omap3530/Linux/sdio/sdio.ko
author: Texas Instruments Inc
alias: TIWLAN_SDIO
license: GPL
description: TI WLAN SDIO driver
depends:
vermagic: 2.6.28-271-gec75a15 preempt mod_unload ARMv7
parm: g_sdio_debug_level:debug level (int)

三、 修改 kernel 的 vermagic,再重新編譯driver

vermagic 的第一個值 2.6.28-noneed 是由這 include/linux/utsrelease.h裡的 UTS_RELEASE 所定義。

#define UTS_RELEASE "2.6.28-271-gec75a15"

之後再由 include/linux/vermagic.h 裡的 macro
去組合出 VERMAGIC_STRING , 也就是 kernel 的vermagic。

#include
#include

/* Simply sanity version stamp for modules. */
#ifdef CONFIG_SMP
#define MODULE_VERMAGIC_SMP "SMP "
#else
#define MODULE_VERMAGIC_SMP ""
#endif
#ifdef CONFIG_PREEMPT
#define MODULE_VERMAGIC_PREEMPT "preempt "
#else
#define MODULE_VERMAGIC_PREEMPT ""
#endif完成編譯後,你就可以得
#ifdef CONFIG_MODULE_UNLOAD
#define MODULE_VERMAGIC_MODULE_UNLOAD "mod_unload "
#else
#define MODULE_VERMAGIC_MODULE_UNLOAD ""
#endif
#ifndef CONFIG_MODVERSIONS
#define MODULE_VERMAGIC_MODVERSIONS "modversions "
#else
#define MODULE_VERMAGIC_MODVERSIONS ""
#endif
#ifndef MODULE_ARCH_VERMAGIC
#define MODULE_ARCH_VERMAGIC ""
#endif

#define VERMAGIC_STRING \
UTS_RELEASE " " \
MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \
MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS \
MODULE_ARCH_VERMAGIC

所以, 我們只要把 UTS_RELEASE 改成我們的數字即可,當然若是懶得去try組合後的字串,也可以直接將VERMAGIC_STRING改成你要的字串 :)

建議修改完 vermagic.h, utsrelease.h後,還是把kernel重編完再編kernel,比較保險。

以下是修改後,用modinfo看的結果

filename: external_drivers/omap3530/Linux/sdio/sdio.ko
author: Texas Instruments Inc
alias: TIWLAN_SDIO
license: GPL
description: TI WLAN SDIO driver
depends:
vermagic: 2.6.28 preempt mod_unload ARMv7
parm: g_sdio_debug_level:debug level (int)

九月 13, 2009
» COSCUP 2009 簡報懶人包

COSCUP 2009 落幕已久,這幾天區區偷得些許空閒,將散亂無章的簡報梳理一翻,做成懶人包,盡我身為COSCUP 2009 議程組的義務。

簡報檔幾已悉數入內,至於那 Joston 大神所授之「COSCUP影片下載法」,業已整合在內,看官只需進到「Vidoe」目錄,點那「點我下載影片」,錄影檔便自動下載,何不快意至極? 又活動兩天爆笑歡樂的IRC Log,自是不會讓他成為遺珠之憾 :)

此懶人包有84Mb大,下載時得耐心等候,尚請見諒一二。

本懶人包包含

  1. 議題簡報檔 - 缺少部份簡報,若你是講者,但不在裏面,歡迎提供,謝謝。
  2. 影片自動下載程式 - 點「點我下載影片」,可以自Youtube下載FLV檔。
  3. IRC Log - freednode.net 上 #coscup 的歡樂聊天紀錄。 (必看,必看)

P.S 徵求將高橋留簡報(firefox xul)轉成PDF的方法…

如何使用

  • 請用 Firefox 開啟 index.html (因有簡報檔為 xul 格式)

九月 8, 2009
» Android on Devkit8000, Using 0xdroid

Devkit8000 is a clone version of BeagleBoard, It has a LCD touch panel, and a built-in RJ-45 ethernet that is better than BeagleBoard for demo, devel purpose. please check the following url for more detail. (http://elinux.org/DevKit8000)

I just hacked the kernel of 0xdroid to run in Devkit8000, It basically works, but the touchscreen does not work well, and I am going to fix it someday.

The source codes is ready in  http://gitorious.org/~hychen/0xlab-kernel/hychens-clone , patchs are welcome!

九月 6, 2009
» VIM basic configure file.

VIM is one of best editors around world, I use it many years, but still not learn good enough, c9s is a famous star knows in Vim fans in Taiwan, so when I am a commitee in COSCUP’09, I invit him to give a talk in Best Practice in Software Development track. He shows the fast moving, modification, smart way to do anything in Vim, that really shocks me! Oh! also all audinces there.

You may interest what he talks about. please check out video(thanks COSCUP’09 record team) and slide.

Videos:1, 2,3,4

Slide: http://www.slideshare.net/c9s/vim-hacks

After one month more, I spent one holiday to write a configure file on my own finally, here is the future and hotkey list. It just a basic version, will be improve more and more and more! It’s already in GitHub, the git repoisitory is avaliable in https://github.com/hychen/hyconfig/tree.

just type ,help to get all description of hotkeys,and thanks

  • Amix <http://amix.dk/vim/vimrc.html>
  • c9s <http://c9s.blogspot.com/search/label/Vim>
  • Bart <http://www.jukie.net/~bart/blog/20061007151802>
  • Fourdallars <http://fourdollars.blogspot.com/>
  • Kanru <http://github.com/kanru/myconfig/>
  • Piao Tech<http://piao-tech.blogspot.com/search/label/Vim>
  • Nion <http://nion.modprobe.de/setup/vimrc>

“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”
” General Abbrevs
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”
“Map abbr today to datetime e.x 2009/09/06/ 02:49:17
“Map abbr myname to your name. (need setting)
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”
” General
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”
“Use xdg-open to opens a file or URL in the user¡Šs preferred application
“Get out of VI’s compatible mode..
“All custom macros start with ,
“Enable syntax hightlight
“Set to auto read when a file is changed from the outside
“Show briefly matching bracket when closing it.
“Key:F6 Highlight search things Enable/Disable
“No sound on errors.
“Make no backups
“Modelines is 3 hight
“set modelines 3
“Always read last position.
“Remove trailing whitespace when writing a buffer, but not for diff
“files. From: Vigil
“Key:Ctrl+Z Use shell
“Key:; Fast switch command mode, use ; insted :
“Key:,w Fast saving
“Key:,q Fast leaving without save
“Key:,z Fast leaving with save
“Key:,aq Fast leaving without save (all window)
“Key:,reload Fast reloading .vimrc
“Key:,help Get help of shorcut
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
” Text options
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
“Shift width is 2
“Key:,t2 Set shift width = 2
“Key:,t4 Set shift width = 4
“Highlight trailing whitespace characters Vim Tip #1274
“Key:F12 Enable/Disable checking in latex, bib and txt files
“Key:[s jump to next bad word
"Key:]s jump to prev bad word
“Key:z= suggest word
“Key:zg mark word as good (add to dictionary)
“Key:zw mark word as bad  (remove from dictionary)
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”
” Indent
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”
“Auto indent
“Smart indet
“C-style indeting
“Wrap lines
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”
” Filetype
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”
“Set suffixes that get lower priority when doing tab completion for filenames.
“Favorite filetypes and encoding.
“Default encoding is utf8
“Key:,big5 Convert fileto big5
“Key:,utf8 Convert file to utf8
“Key:,fd Convert current file to dos formate
“Key:,fu Convert current file to unix formate
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”
” User Interface
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”
“Turn on WiLd menu
“Always show current position
“Key:F4 Show line number Enable/Disable
“The commandbar is 2 high
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
” Moving around and tabs
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
“Map space to / and c-space to ?
“Key:Space as /, foward search
“Key:Shift+Space as ?, backward search
“Smart way to move btw. windows
“Key:Ctrl+j move to bottom window
“Key:Ctrl+k move to up window
“Key:Ctrl+h move to right window
“Key:Ctrl+l move to left window
“Tab configuration
“Key:,tn New tab
“Key:,te Edit tab
“Key:,tc Close tab
“Key:,tm Move tab
“Fast shift
“Key:Tab left shift
“Key:Shift-Tab right shift
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”
” Visual
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”
” From an idea by Michael Naumann
“Basically you press * or # to search for the current selection !! Really useful
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
” Misc
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
“Key:,m Remove the Windows ^M
“Super paste
“Fast modify in equation Ex.(a=b)
“Key:cr modify left statment
“Key:cl modify right statment
“Enable inserts links & anchors on a TOhtml export automatic.
” Notice:
” Syntax used is:
” Link
” Anchor
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
” External Application
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
“Key:,hex View file in hex mode
“Key:,y Search the word under cursor in Yahoo dictionary
“From:fourdollars.blogspot.com/2008/05/vim-ydict.html
“Key:,d Search the word under cursor in devhelp
“Key:,p Search the word under cursor in pydoc
“Key:,c Search the word under cursor in Google Code Search.
“Key:,g Search the word under cursor in Google Search
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
” Plugins
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
” Ctags <From:Fourdallars>
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
“Kye:F2 Show taglist
“Key:Ctrl+F9 Create Ctag of current file.
“Key:g+ View in new tab
“Key:g- View in new tab
“Key:g= View in new stack
“Key:g+ View in new tab

八月 25, 2009
» 手動的亂數程式

最近 HackingTursday 總會留下半小時做近況分享,之前都是靠Mat翻書來決定誰開始,湊巧Mat昨日忘了帶書。

怎麼辦?

我們科技人啊!!!!

Fourdollars 版

$ printf “%d %% 9 + 1\n” 0x$(dd if=/dev/random of=/dev/stdout bs=1
count=1 2>/dev/null | hexdump -C | head -n 1 | cut -d ‘ ‘ -f 3) | bc

Python 版

$ python -c ‘import random;print random.randint(1,9)’

Bash Sell版

$ expr $RANDOM % 9

連聖博也不甘示弱,來個 Puredata版

六月 16, 2009
» Lazyscripts 的自由軟體鑄造場的宣傳報導

之前 Authr 邀約的宣傳文出來了,上面還有我跟其他開發者的玉照。  >/////<

<專案簡介>

使用 Linux 的朋友又有福了!最新版 Linux 懶人包 Lazyscripts 於 4 月份正式釋出。除了承襲 Lazybuntu 的簡單上手、容易使用外,這次的懶人包更同時支援 Ubuntu、Debian,並且開始開發支援 Fedora 及 openSUSE 等台灣常見的 Linux 版本。Lazyscripts 能夠一鍵設定中文化介面,並自動從網路下載多媒體編碼器、

安裝更好用的燒錄軟體、字典、廣播收聽軟體、BBS 連線程式等,輕易滿足一般辦公室應用與校園學生使用之需求。

延伸閱讀

五月 20, 2009
» 職場對話錄

找什麼?

場景:晚餐吃麥當勞時間,我正搖頭晃腦的在找番茄醬。

同事問道:「在找什麼。」
我:「在找愛。」
眾同事:「………………」

讓我心碎啊!

女同事:「你今天早上說的話讓我心碎啊!」
男同事:「心碎拼回來就好了呀!」

“你今天要吃晚餐嗎? (吃晚餐意味著加班)” ~ 早上說的話

剛才有我的電話嗎

同事:「剛才有我的電話嗎」
我:「沒有」
我:「如果有從地獄打來的,我會通知你。」

我問你一件事

同事:「我問你一件事」
我:「什麼事?」
同事:「就是…」
我:「我上知天文,下知地理,就是不知人間任何事。」
同事:「…………………」

果然是好朋友

今日同事語重心長的跟我說

「我們果然是好朋友,你那天說沒有利益關係才能成為好朋友。我現在有很深的感觸」

» Lazyscripts 0.1rc2 release note

忘了在自己的blog上發了,補一下 :p

簡介
經過二個多禮拜的開發,lazyscripts 懶人包又推出第二個候選版本囉。這次更新最主要的部份是在改進易用性以及增加執行速度。希望採用新架構的 lazyscripts 可以在開啟速度方面盡量接近 lazybuntu。

修正
使用者經驗改進

* 預設安裝軟體減少成只剩 git-core 跟 python-git,加快安裝速度。
* 安裝必備軟體如 git-core 時從原本的 apt-get 安裝,改為用 synaptics 安裝。
* 點選後提醒使用者第一次執行 lazyscripts 需要安裝 git-core 跟 python-git
* 下載 scripts 時新增下載畫面
* 懶人包預設包含所有 scripts,僅在執行時連上網路檢查是否有更新的 scripts。

錯誤修正

* devtool/build/build.sh 現在可以在任何路目執行
* 將所有 tab 改成空白,以杜絕奇怪的 bug。
* 修正檢查是否有 git-core, python-git 的程序。

安裝
1. 請到 lazyscripts 網站 右邊下載 lazyscripts 0.1rc2 版本,請依照您的 CPU 架構選擇檔案。如果你不知道電腦的 CPU 架構,請選擇 lazyscripts-0.1rc2-i386.tar.gz。

2. 在下載的檔案上按下右鍵,選擇在此解壓縮,這樣將會解開一個 lazyscripts 執行檔,請點選兩下執行。

3. 第一次執行 lazyscripts 將會提示您執行 lazyscripts 需要安裝 git-core 以及 python-git 軟體,連接上網路後按下確認開始執行。

4. lazyscripts 將會修改您的 APT 來源,如果你不知道什麼事 APT 來源,請直接按下『是』。

5. 等待修改 APT 來源並且從網路上更新 scripts 後,即可開始使用懶人包。

聯絡資訊
專案網址:http://sites.google.com/site/lazyscripts/
Google Groups:http://groups.google.com/group/lazyscripts-dev/

成員神秘的散落在 KaLUG 與 Hacking Thursday 聚會,你可以分別在高雄跟台北找到我們。

support:

biggo.com.tw

A Django site.