2009年7月25日 星期六

如何提報Bug-以Google code、sourceforge.net與自由軟體鑄造廠為例

0 意見

很多人使用自由軟體多少都會遇到問題。但是遇到問題了,很多人卻不知道如何提報出去。

軟體放置的地方常為英文介面,也造成提報問題上的不便。

因此很多人常常在論壇上發文提問,或是在自己的blog談論,而開發者卻常常收不到。

這篇文章以Lazyscripts放置的地點與提報Bug的方法為例,說明如何提報bug給開發者。

Lazyscripts主要放置的位置為Google code(現已不用)、sourceforge.net與自由軟體鑄造廠(目前不使用)。

本文即以這三個站點作為教學範例。


深入閱讀......

2009年7月12日 星期日

PowerPC MacOSX 與 Debian 雙開機

0 意見

這幾天剛好朋友拿了一台iBook G4 請我幫忙安裝Linux,因此就有了這篇心得

上網查了一些資料以後,決定選擇Debian lenny來安裝。(因為上一個支援PowerPC的Ubuntu是6.06)

首先先安裝Mac OS X,安裝過程中先點選磁碟管理程式,並且將磁區做分割

需注意的是,要在Mac的硬碟前端加上1MB大小的分割區,作為系統開機使用。

此時分割出開機磁區,Mac分割區與Linux使用的分割區。Swap小弟使用Swap file來處理。


接著在Mac安裝好後,放入Debian光碟按住C開機,並輸入install開始安裝。

之前分割出來1MB大小的分割區,此時要選取分割為newworld分割區,作為開機使用。

過程與其他電腦大同小異。安裝完以後,就有一個差不多可以使用的Linux囉。

緊接著就是Linux最可怕的校調啦!


深入閱讀......

2009年7月10日 星期五

lazyscripts 0.1 released

1 意見

檔案下載:http://sourceforge.net/projects/lazyscripts/files/

這次主要是修了一些bug,還有把文件補齊。
詳見:http://lazyscripts.sourceforge.net/doc/



與Lazybuntu最大的不同

不需頻繁更新主程式:

新版的Lazyscripts不再將 scripts與主程式合併釋出。Lazyscripts懶人包只包含主程式,所有的功能會在執行時才從網路下載。而整個程式架構也分成了使用者介面(GUI)、程式核心(Core)、以及功能(Scripts)。

功能將會隨著維護者的新增而更新,重新執行程式即可更新,不需要更新主程式。

用戶可隨意自訂Scripts:

如果您是進階使用者,未來Lazyscripts也提供幾個簡單步驟,讓您自訂專屬於你自己的scripts。也就是說,使用者對於懶人包所連結的軟體選項,是可以自由修改的。例如,您可以自行定義與客製化組合辦公室或班級內所需要的Lazyscripts。

全新的 Logo


感謝 Honkia 為新生的Lazyscrtipts 設計Logo。

更彈性化的系統架構

現在的lazyscripts裡面的結構已經全部更新,現在變得更容易將客製化的腳本(scripts)放入其中,下一個版本的Lazyscripts可以更容易的置換腳本來源。

自動更新腳本 (Script)

Lazyscripts全部的腳本(script)將會從網路上直接更新,當您每次執行主程式時,都會從網路上自動下載最新的scripts。

新支援的Linux發行版本

Note: SuSE 以及 Fedora 支援正在開發中。

0.1版開始支援 :

Debian 5.0 (安裝桌面環境)
EzGo 自由軟體光碟

開發方式變更

程式碼採用Git管理,並放在 http://www.github.com 上。
主網站移到 http://sourceforge.net/projects/lazyscripts/

採用 Sphinix 作為文件撰寫工具

Sphinix 是 Python 2.6 版所採用的文件生成系統,使用 reStructuredText 語法處理文件內容關聯、排版,並且支援多種格式輸出,包含HTML、PDF、Latext。用 Sphinx 所生成的文件網站除了頁面能自訂樣式,自訂文件導覽順序,甚至還有附有搜尋功能。


深入閱讀......

2009年7月9日 星期四

開源人年會2009

1 意見

開源人年會2009

COSCUP 【開源人年會】已邁入第四年,不但成為台灣各地社群朋友一年一度相聚的盛事,更在各地社群共同舉辦之下,逐漸成長茁壯。繼去年EeePC推出linux版netbook之後,Google 也開始推出Android手機,許多新的open source專案和產品都爆炸性發展。順應今年的Open Source發展趨勢,本活動分成四大主題:Android 和嵌入式系統、雲端運算和 Web 技術、開發者工具及使用者桌面。無論您是寫 open source 軟體的開發者、熱衷 open source 軟體的推廣者、熟悉 open source 軟體的使用者、還是想瞭解 open source 軟體的新手,也不論您是因為工作而接觸 open source 軟體、因興趣而沉迷於 open source 軟體、還是被朋友拉著加入 open source 社群,歡迎一同共襄盛舉。
其他詳細活動資訊,如下:


日期:2009/8/15 (六) - 8/16 (日)
地點:臺灣大學應用力學研究所 國際會議廳
活動網頁:http://coscup.org/2009/zh_tw/
報名網站:http://coscup.org/2009/zh_tw/register
開放報名:2009/07/15
報名費用:全程免費!歡迎參加!
深入閱讀......

【GeeKlothes宅衣】訂購系統上線囉

0 意見

【GeeKlothes宅衣】訂購系統上線囉!
終於終於...GeeKlothes宅衣的訂購系統上線啦!!!
即日起開放訂購,到2009/07/14晚上23:59截止。


訂購網址:http://get.geeklothes.e04.us/
除了宅衣,還有三款社群及活動(布料)徽章讓大家選購:
有MozTW狐耳摩莎、ubuntu-tw、COSCUP2009
三款徽章販售之盈餘 (扣掉成本之後),將全數贈予相對應的社群組織 (MozTW、Ubuntu-TW、COSCUP),支持他們的推廣活動。
而宅衣販售之盈餘(扣掉成本之後),亦是贈與給自由軟體界的社群*,
希望能為所有不斷為自由軟體努力的社群朋友們盡一點心力,表達支持之意!
也希望所有朋友可以支持GeeKlothes

宅衣活動結束後會公佈活動財務收支狀況,計算完所有成本支出後之盈餘會捐贈給自由軟體界社群。

*︰宅衣盈餘贈與之社群,將於活動結束後,計算完所有金額後若有盈餘,公佈於宅衣活動首頁。
深入閱讀......

2009年3月21日 星期六

2009 三月 SA@Tainan 我所知道的 C 語言 (3/28)

0 意見

緣起:
余光中教授曾對「知性」分析為兩端:一是知識,一是思考。有知識而無見解,只是一堆死資料;思想得多而知識不夠,又淪於空想。有幸得以在短暫的人生中,以半數的光陰透過程式設計,賦予冰冷的硬體一些新的生命,背後強大的工具,正是C 程式語言,而廣泛接觸了多樣的作業系統與硬體架構後,更覺探索資訊系統「知性」的可貴。如何將「知識」與「思考」融合,並投射於以豐富面貌出現的資訊系統,正是本議程所要探討與分享的。

建議聽者背景: (任一)
(1) 已熟悉 C 語言程式設計者,企求探索多元的開發
(2) 粗淺知曉 C 程式語法,對現實資訊應用的知性,有高度興趣者
(3) 具任何一種程式語言之實務經驗者

講題簡介:
C 語言雖然是一種通用的程式語言,但本質上是為了開發 UNIX 作業系統而提出,我們非但不可忽略這個事實,反而要適度從硬體的觀點去反思軟體設計,是的,透過 C 語言這個「不軟不硬」的美妙語言。本議程將以物件導向與資料表示等題材,探討遊覽 C 語言開發的知性美。

預定提綱:
(1) 海角 C 語言 -- 被遺忘的淒美故事
(2) 高度物件導向的 C 語言
(3) 窺探 C 程式、尋訪 C 程式的資料表示、奇妙的 pointer 與 macro
(4) C 語言與硬體擦出的火花,呈現 C 設計的彈性

軟硬體規格:x86/IA32, C99, gcc 4.3.3, Ubuntu Linux 9.04, kernel 2.6.28


講者簡介:
Jim Huang (黃敬群),慣用網路暱稱為 "jserv",熱血工讀生,家境貧困而買不起套裝軟體,所以習慣動手寫程式解決自身需求。自 1999 年開始對自由軟體發展作貢獻,於 2005 年起提供以自由軟體為基礎的技術資訊服務,涉及手機、GPS 導航、數位電視、電子廣告系統、機器人等嵌入式系統設計。

參考資料:
(1) 我是軟體 -- 那些處理器教我的事
http://blog.linux.org.tw/~jserv/archives/002064.html
(2) 深入淺出 Hello World
http://jserv.sayya.org/helloworld/
(3) 快快樂樂學 GNU Debugger (gdb)
http://blog.linux.org.tw/~jserv/archives/002043.html

時間:3月28日13:30:00-17:00

地點:台南市社區大學 3F 305教室

台南市社區大學網頁:
http://www.tncomu.tn.edu.tw/
地址:
台南市公園路750號
http://www.tncomu.tn.edu.tw/modules/tinyd5/content/map.gif

報名網址:
http://registrano.com/events/satn09031

原文網址:
http://phorum.study-area.org/index.php/topic,55774.0.html
深入閱讀......

2009年3月1日 星期日

2009 三月 SA@Tainan 為什麼資訊部門永遠是苦力(3/7)

0 意見

內容簡介:
除了技術能力,你還要加強甚麼
1.引言:為何資訊部門地位日益低落
a.外包風氣盛行
b.技能門檻日益降低
c.組織內角色過於被動:

2.你不要犯的幾種錯誤:
a.陷入規格框架
b.不清楚公司運作
c.只專注於資訊技能
d.說明過程,卻忘了結果?
e.滿口術語
f.制式回答

3.資訊人的角色:
-->討論

4.其他能力 :
a.觀察力
b.思考力,
c.溝通技巧

講師簡介:
Roger Cherng

前職:上市公司營運長,負責企業購併,CRM系統導入,新事業開發建置
現職:科技公司應用加值處負責人
專長:資料庫行銷,專案管理,預算控制,組織再造,組織整併,教育訓練

時間:3月7日14:00:00-17:00

地點:台南市社區大學 3F 305教室
台南市社區大學網頁:
http://www.tncomu.tn.edu.tw/
地址:
台南市公園路750號
http://www.tncomu.tn.edu.tw/modules/tinyd5/content/map.gif

報名網址:
http://registrano.com/events/satn0903

原文網址:
http://phorum.study-area.org/index.php/topic,55665.0.html
深入閱讀......

2009年2月6日 星期五

2009 二月份的 SA@Taipei - 雙連發之 Python超超超新手入門

2 意見

主辦單位:酷學園
協辦單位:巨匠電腦 http://www.pcschool.com.tw/

主題:Python超超超新手入門-寫給想知道怎麼寫程式的

內容:
Python是2007年TIOBE所選出的年度程式語言,同時也為GOOGLE所採用,作為內部開發使用之語言。
國外許多大學也開始使用Python作為新手學習之用。
本講以講者學習Python之心得分享,逐步說明程式語言的思維以及語法。
希望能有更多朋友了解,寫程式原來可以這麼快樂!

對象是不會程式語言,但想學習的朋友,
另外也歡迎有經驗的同好前來經驗分享。
課程內容以Python基礎語法為主,搭配實作,不涉及物件導向。


時間:
2009 年 02 月 22 日 (星期日) 13:00 - 16:00
時間規劃: 3 hr

講師簡介:
雨蒼,目前擔任台南窗口,以及lazybuntu維護成員之一。
於2008年中開始學習Python。

地點:巨匠電腦-台北認證中心 (台北市公園路30號3F)

費用: 0 -

地理位置/交通路線:
http://www.pcschool.com.tw/school/school_pic.asp?b1=qq&sts=&page=1&DEPT_AREA=1&aaa=BD++

活動報名網址:
http://registrano.com/events/sataipei200902-1

請注意,同場加映:2009 二月份的 SA@Taipei - 網站行銷之技術層面 with Joomla!
http://phorum.study-area.org/index.php/topic,55345.msg282553.html
深入閱讀......

2009 二月 SA@Tainan 企業級資料儲存概論(2/7)

0 意見

主題內容簡介:

入門篇,大約50分鐘左右,如果你有管過EMC或NetApp,這一段可以不用聽,:
1. DAS
2. NAS
3. SAN
4. RAID
5. 金錢上的概念
6. 這些東西的關係

觀念篇,大約50分鐘左右:
7. 使用上的分界點
8. 需求在哪邊
9. SWAT分析
10. 該買怎樣的東西
11. VTL是什麼
12. 異地備援可以吃嗎

講演者簡介:

黃立夫,David.Huang

最後一任TCLUG連絡人,最常拿來說嘴的事情,就是把TCLUG在手上結束掉,結果數年之後聽到人家抱怨,為什麼有TNLUG,沒有TCLUG,自己心想我們在燒命搞TCLUG的時候你們在哪裡,XD。
歷任過哈利波特產品維修人員,NB維修人員,也玩過PDA,現在看到3C就像看到裸體的女人,一點興趣都沒有。花過太多學費,現在在做商用網路視訊設備的 FAE,不過發覺好像沒有搞頭[昏],之前作儲存軟體的QA工程師,參與過規格的制定到產品的Release,ARM、MIPS、PowerPC等NAS 平台都測試過.

實際講授時間約100到150分鐘。因為我也不知道聽者的層次的分布,所以還是從頭開始講,希望以對話的方式來做講演,所以時間的分段沒有強制性,基本上就是滿50分鐘就休息十分鐘,休息完繼續講。個人保留修改講演內容的權利,也等於提供聽者修改講演內容的機會,XD
時間:2月7日下午14:00~17:00

地點:台南崑山科技大學 資訊科技大樓 5F I3502教室; 台南縣永康市大灣路949號

地理位置/交通路線:
http://www.ksu.edu.tw/introduction/images/location.jpg
校園配置
http://www.ksu.edu.tw/introduction/images/campus_1024.jpg

報名網址
http://registrano.com/events/satn0902
原文網址
http://phorum.study-area.org/index.php/topic,55299.0.html
深入閱讀......

2009年2月5日 星期四

使用Git與Github管理軟體開發專案

4 意見

之前聽聞git這個版本控制時,看到有人介紹github這個服務。
https://github.com/

http://zh-tw.whygitisbetterthanx.com/#github

git是個分散式的版本控制軟體。大部分的版本控制軟體都需要一個伺服端,在commit的同時,提交到伺服器上面。git當然也可以集中管理,但是他另外多了分散管理的方式。簡單來說,billy開了一個專案,tom覺得這個專案有意思,他想玩玩看,他可以把整個repo(reoisitories)都clone過去,並且在他那邊自己有一個repo。tom可以自由的對這個repo做各種提交修改,直到他覺得滿意為止。這時候tom可以告訴billy,他改了一些什麼,若billy覺得不錯,可以從tom那邊fetch回去並merge。

由於repo可以綁在寫程式的人身上,不用一定要有中央伺服器的主從架構,因此就出現了github這個網站。github是用ruby寫的,上面的ruby專案也非常活躍。github中,每個人都可以有多個repo,這些repo都是綁在user上的。user之間可以互相clone repo,watch repo,或是 follow 其他 user,就好像twitter或是plurk這些社交網站一樣。


深入閱讀......

2009年1月27日 星期二

_NET_WM_ICON 資料在64bit OS上之輸出

0 意見

日前由於手上有一個64bit的Linux,便幫忙PCMan前輩測試了一段程式碼,茲將心得貼於下方。

此bug由來是因為Lxpanel中的工作列上,工作圖示無法正確顯示。




先來看看來自xmisc.c的原始碼:

data=alloca((pib.width*pib.height+2)*sizeof(long));
data[0]=pib.width;
data[1]=pib.height;
for(j=0;j
a=&(pib.pixelPtr[j*pib.pitch]);
r=&(a[pib.offset[0]]);
g=&(a[pib.offset[1]]);
b=&(a[pib.offset[2]]);
a=&(a[pib.offset[3]]);
p=&(data[2+j*pib.width]);
for(i=0;i
*p=(*a<<24)|(*r<<16)|(*g<<8)|*b;
p++;
a+=pib.pixelSize;
r+=pib.pixelSize;
g+=pib.pixelSize;
b+=pib.pixelSize;
}
}


這邊將這些顏色資料宣告為long並儲存

根據 freedesktop.org 規範視窗管理程式的 EWMH spec,視窗的圖示 (顯示在視窗左上角那個),是用 property 的方式儲存,其他程式可以透過讀取視窗的 _NET_WM_ICON 這個 property,來取得視窗的圖示。

EWMH spec 原文:

_NET_WM_ICON CARDINAL[][2+n]/32

This is an array of possible icons for the client. This specification does not stipulate what size these icons should be, but individual desktop environments or toolkits may do so. The Window Manager MAY scale any of these icons to an appropriate size.

This is an array of 32bit packed CARDINAL ARGB with high byte being A, low byte being B. The first two cardinals are width, height. Data is in rows, left to right and top to bottom.

照這段說明所寫,我們呼叫 Xlib 的函數 XGetWindowProperty 來取得視窗的 _NET_WM_ICON 這個 property 時,他會以一個陣列的形式傳回視窗的圖示,而陣列中的每個元素儲存的,是圖示上每個畫素的 32 位元 ARGB 值。在陣列的開頭兩個元素儲存的,分別是圖示的寬度和高度。

所以我們預期,XGetWindowProperty(); 會傳回給我們的是一個 32 位元整數的陣列,開頭兩個元素是圖示的寬度和高度,而後面的其他元素則是點陣圖的 pixels 資料。

LXPanel的taskbar.c中的原始碼則為:

if(result == Success)
{
guint32* pdata = data;
guint32* pdata_end = data + nitems;
guint32* max_icon = NULL;
guint32 max_w = 0, max_h = 0;

/* get the largest icon available. */
/* FIXME: should we try to find an icon whose size is closest to
* iw and ih to reduce unnecessary resizing? */
while(pdata + 2 < w =" pdata[0];" h =" pdata[1];" size =" (w" w="%d," h="%d," size="%d">


這邊是使用guint32來撈出資料。在32bit OS上,這段程式碼很正常;但在64bit OS上,我們卻發現回傳的值是64bit的array

底下這段測試程式碼來自好友rick68
int main(void)
{
printf("sizeof(int) = [%d]\n", sizeof(int));
printf("sizeof(long) = [%d]\n", sizeof(long));
printf("sizeof(long long) = [%d]\n", sizeof(long long));

return 0;
}


將這個程式在32bit OS下編譯執行,產生結果為:
sizeof(int) = [4]
sizeof(long) = [4]
sizeof(long long) = [8]

在64bit OS下編譯執行,結果則為:
sizeof(int) = [4]
sizeof(long) = [8]
sizeof(long long) = [8]


這邊可以發現,long的長度在32bit OS下是32bit,而在64bit OS下則為64bit。

查詢 XgetWindowPropert 的文件,找到如下的敘述:

If the returned format is 8, the returned data is represented as a char array. If the returned format is 16, the returned data is represented as a array of short int type and should be cast to that type to obtain the elements. If the returned format is 32, the property data will be stored as an array of longs (which in a 64-bit application will be 64-bit values that are padded in the upper 4 bytes).


如果傳回的 format 是 32,代表資料是 long integer 陣列 (在 64 位元程式內就會是 64 位元)。也就是實際上資料只有 32 bit,但是他傳回的會是加上 4 bytes 作 padding 的 64 bit 整數,所以程式的處理必須用 long int 的 array,而不是 32bit int。

因此若使用guint32儲存,在64bit OS上就會發生錯誤。將guint32改用gulong來撈取資料後此問題就正常了,也可正常顯示icon



參考資料
http://code.google.com/p/gatos2/source/browse/trunk/avview/xmisc.
http://mlblog.osdir.com/video.gatos.devel/2005-10/msg00031.shtml
http://www.mail-archive.com/rxvt-unicode@lists.schmorp.de/msg00321.html
http://standards.freedesktop.org/wm-spec/wm-spec-latest.html#id2552223
http://linux.die.net/man/3/xchangeproperty

特別感謝PCMan大哥檢視並修改此篇文章!
深入閱讀......

2009年1月14日 星期三

讓OpenSUSE 11.0 每個虛擬主控台都有背景

0 意見

日前使用openSUSE 11.0,驚訝於他的tty1有背景。但其他tty就沒有相對應的背景,因此上網找資料想達成這個目的。
以下即為我找到的方法

openSUSE的文字背景,是bootsplash這個程式提供的功能。
這個程式主要提供開機畫面(silent),以及tty背景畫面。

該程式主要設定檔在/etc/splashy/config.xml
主題放在/etc/bootsplash/themes/資料夾中
預設主題為openSUSE,在其中的config資料夾中,存有不同解析度的config檔案。
但這些config檔案載入以後會秀出silent的畫面,也就是會出現開機畫面。
因此我們要對這個檔案作修改,讓它只含有background的設定。


深入閱讀......

2009年1月2日 星期五

Python特色簡述-變數與記憶體管理

0 意見

Python是一個專注於易讀性與一致性的程式語言。
小弟將最近學習Python所感受到的一些Python的特色紀錄於下。

Python的主要變數型態有:number string list tuple dictionary
其中number list tuple是不可變更的,dictionary的key也是不可變更的(但可新增)。
雖說這些變數不可變更,我們仍可透過指定新值的方式去變更。
而tuple是list不可變更的版本,若是希望程式的list不要在執行過程中變更,一開始可宣告為tuple
list tuple dictory都可任意巢狀化。

為何list內可以不限定資料型態,且可自由巢狀化?
這是因為Python的變數事實上不是存放物件本身,而只是Reference,類似C語言的指標,指向物件所在之記憶體位置。當指定新值給變數時,就是改變Reference指向新的物件。
因此當list中某一欄的指標指向新的list,就成為巢狀結構了。


深入閱讀......