2013年9月30日 星期一

《頭條日報》剪報

Headline Daily Old Issues

《頭條日報》是眾多免費報章做得最好,亦提供舊報最多的一家。基本上可追索到 2005 年 7 月 12 日。要下載《頭條日報》的頁面,其中一個方法是解開 iPad 版的 D 格式;另一個方法則是網頁版。

網頁版跟 iPad 版有著相同的構造,都是圖還圖、字還字。圖以 JPG 格式儲存;字為 PNG 格式記錄。找出 JPG 及 PNG 的步驟如下:
  • 打開 Wireshark 並擷取自己電腦的資料進出
  • 打開瀏覽器並跳到《頭條日報》官網
  • 打開想要的報章及報導的頁面
  • 停止 Wireshark 的記錄
  • 找查日期數字,如「20130418」便很容易找到報頁的連結
  • 在連結中 PageType 是指定頁面的格式
  • P 是「Picture」的意思
  • T 是「Text」的意思

    不過,要手動逐個 PNG 及 JPG 下載,又要把兩張圖合拼,實在很花時間。這種工作最適合現腦來做。於是簡單寫了個 PHP 來達成,方便在任何地方都能使用。下載方面用 file_get_contents 及 file_put_contents 就可以。以下是把 PNG 及 JPG 合拼的部份:
     //  Preset values
     $newspaperDate = "20130418";
     $forceDownload = false;
     $folder = "__files__/";
     $page = 86;
    
     $fileType = array("P", "T");
     $extension = array(".jpg", ".png");
    
     //  Merge text and photo to single PNG
     $filename = $newspaperDate."_HeadlineDaily_p".$page."_parts".$extension[0];
     $filePath = $folder.$filename;
     $photoImage = imagecreatefromjpeg($filePath);
     if ($photoImage === false)  {
      echo("<br>Error loading image block $filePath...skip");
      continue;
     }
    
     $width = imagesx($photoImage);
     $height = imagesy($photoImage);
    
     //  Put text onto photo, assume they are same size
     $filename = $newspaperDate."_HeadlineDaily_p".$page."_parts".$extension[1];
     $filePath = $folder.$filename;
     $textImage = imagecreatefrompng($filePath);
     imagecopy($photoImage, $textImage, 0, 0, 0, 0, $width, $height);
    
     //  Save PNG image of whole page
     $filename = $newspaperDate."_HeadlineDaily_p".$page.".png";
     $filePath = $folder.$filename;
     imagepng($photoImage, $filePath);
    
     imagedestroy($textImage);
     imagedestroy($photoImage);
     echo("<br><img src='$filePath'>");
    
  • 2013年9月29日 星期日

    《爽報》剪報

    Sharp Daily Old Issues

    《陳僖儀補完計劃》中的一項任務是剪報。即是把 Sita 的新聞剪輯下來。受到數碼科技的影響,香港的免費報紙都有數碼版,因此,只要找到相關 JPG 儲存就可以。今日先講講爽報。

    在爽報官網中可以瀏覽揭頁版。可是只能找到最近六期。要是想觀看其他日期的話,只要數個簡單步驟就可以:
  • 打開 Chrome 瀏覽器
  • 打開爽報官網中其中一天的揭頁版內容
  • 在網址列輸入 chrome://cache 後拍 Enter 鍵,之後會出現一大堆連結
  • 授索「flippingbook.swf」並點擊一下
  • 把網址前端的「chrome://view-http-cache/」刪去並拍 Enter 鍵一下
  • 你所見到的就是揭頁版的真身
  • 把網址的日期改為你想要的日子,如「20130418」後拍 Enter 鍵便能觀看 2013-04-18 日的揭頁版。那天是陳僖儀車禍新聞見報的日子

    下一步便是要找出 JPG 檔:
  • 翻到想要的內容頁,記下頁碼
  • 在網址列輸入 chrome://cache 後拍 Enter 鍵
  • 授索所輸入的日期,如「20130418」
  • 將會找到不止一個地址
  • 看看哪個地址有想要的頁碼,如「page0002」
  • 並點連結擊一下
  • 把網址前端的「chrome://view-http-cache/」刪去並拍 Enter 鍵一下
  • 你所見到的就是想要的 JPG 檔

    雖然如此,但我還認為解像度不夠。從緩存清單中看到某些頁面的 JPG 檔名最後有「_l」標記,應該是「Large」的意思。把找到的 JPG 加上「_l」一試,如「page0002_l.jpg」,得出的果然是更高解像度 1466x1799 的頁面內容。
  • 2013年9月28日 星期六

    《陳僖儀紀念歌集》

    Sita Chan @Fantasyland

    2013 年 5 月 12 日,陳僖儀的 Fans 提出了製作一本《陳僖儀紀念歌集》的構想。向印刷商查詢過之後,最少要印製 500 本才會受理。經過一星期的認購,終於達到了 500 本這個數量。歌集由 Sita 的第二個家《金浪音樂中心》籌備製作。經過四個月的努力,《陳僖儀紀念歌集》終於趕及中秋節完成。而我則在今天把它拿到手。內裡記載了 Sita 很多歌曲的簡譜,及未曾公開過的相片,也有老師及陳爸爸的序言,是一份相當有紀念價值的刊物。

    2013年9月27日 星期五

    《陳僖儀補完計劃》

    Sita Chan Completion Project

    每朝早都有上 Facebook 的習慣。今日最吸引我眼球的是 Sita 陳僖儀的 Fan Page 更新了。陳媽媽在 Fan Page 更新了 Sita 獲得了《第 13 屆華語音樂傳媒大獎 - 最佳粵語女新人》的消息。對於不會再有更新的 Fan Page 帶來了驚喜及動力。我不時都有備份 Sita 在 YouTube 上的影片,希望能盡力地保存她在世上的時光。某些在 YouTube 上的影片已被版權持有人取諦,幸好我的《陳僖儀補完計劃》都能好好地保留了影片,作為對 Sita 的紀念。

    2013年9月26日 星期四

    RStudio


    這個星期很忙。玩 Grand Theft Auto V、《AMIGO Controller》需要大更新、為製造一架音樂車而搜尋資料、為一個活動而研究技術問題。還有,本周一在 Coursera 展開的新課程《Computing for Data Analysis》。選這個課程是因為在看大數據的書,了解過大數據的實例及發展後,更進一步學習使用方法。這個課程使用的是 RStudio,對於我來說很新鮮,指令也很特別。花了三天時間看畢了首星期的教學影片,也完成了功課,成績不錯。下星期進入戲肉,希望能跟數據玩玩遊戲。

    2013年9月25日 星期三

    動作編輯器.升級版

    Motion Editor with Group

    完成了 iOS 7 的修正工作後,便繼續開發《AMIGO Controller》。

    用過一段時間後,覺得現階段的動作編輯器不夠靈活快捷,特別是動作的最後部份往往是回到站立姿勢,每次都要編輯,實在沒有效率。有見及此,我打算為動作編輯器加入「動作組」概念。例如把站立姿勢放到一個「動作組」內,之後編輯新動作時,只需要拖拉「動作組」到動作時間軸的最後便行。由於改動也大,在落碼之前,還是先畫畫概念圖,想像一下運作有沒有問題...。

    2013年9月24日 星期二

    AMIGO Controller for iOS 7


    昨天處理完 iOS 7 下的新圖示尺寸,今日便是把《AMIGO Controller》的介面改回跟 iOS 6 一樣。

    在以往的 iOS 下,應用程式的畫面基本上無法跟狀態欄重疊,除非是特別處理之外;現在 iOS 7 則預設已經跟狀態欄重疊,要特別處理才能跟以前的 iOS 般分開。我的處理方法如下:
     CGRect rect = [[UIScreen mainScreen] bounds];
     rect.origin.y = 0;
     self.window = [[[UIWindow alloc] initWithFrame:rect] autorelease];
    
     //  Fix iOS 7.0 issue
     if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)  {
      if (isiPad == YES)  {
       [self.window setBounds:CGRectMake(20, 0, rect.size.width, rect.size.height)];
      }  else  {
       [self.window setBounds:CGRectMake(0, -20, rect.size.width, rect.size.height)];
      }
     }
    那個 -20 是試出來的成果,不知為何是負數而不是正數。除了狀態欄之外,UIPopoverController 的視窗亦由以往的深藍色改為預設的淺灰色。影響視窗內白色字體的突出感。然而在 iOS 7 卻可以自行修改底色:
     if ([popoverController respondsToSelector:@selector(setBackgroundColor:)] == YES)  {
      [popoverController setBackgroundColor:PORTSETTINGSVIEW_COLOR];
     }

    2013年9月23日 星期一

    iOS 7 新圖示尺寸

    iOS 7 New Icon Sizes

    很久沒有提交 iOS 應用了。上周收到 Apple 的電郵通知,指《三國》要在七天內提交,否則這個名字將釋放給其他開發者使用。因此我們把當刻版本提交後再取消審批,這樣便能保住名稱。而在提交時,發現需要包含三種新的圖示尺寸。分別是 76x76, 120x120, 152x152。就算沒有這些 iOS 7 的圖示尺寸,目前還是可以成功提交。

    2013年9月22日 星期日

    Tri Robot 小組第六次會議

    昨天早上是 Tri-Robot 小組的第六次會議。今次討論了軟件上的不足及改進,以及下一代的硬件規格。軟件方面主要集中在「動作編輯器」內,希望加入層次概念,就好像 Flash 的 movieClip 或 AfterEffects 中的 Composition 一樣,可以包含另一個 movieClip/Composition。這樣的確更加好用,但畫面會變得複雜,改動內容也較大較花時間。現在希望花點時間設計介面,盡量簡潔之餘,又能達到容易修改的目的。

    至於第二代機體,會用上新的台灣 35kg/cm Servo,比起現時 15kg/cm 提高了一倍有多。同時也會加入加速度檢測器、陀螺儀、數碼羅盤...等。目前還在測試及考慮其他新增改良,反正要完成第一代才會開發第二代...。

    2013年9月21日 星期六

    Jobs


    《Jobs》這套電影雖然是以我敬重的喬布斯為題材,但不知為何總是興趣缺缺,加上預告片沉悶,不打算入戲院觀看。就在星期一,收到 UDomain 送來的《Jobs》電影換票證。由於兩位董事不打算觀看這齣電影,於是乎我便可以拿取兩張換票證,跟內子觀看。

    《Jobs》在星期四才上畫,碰巧是中秋節,第二天是假期。於是在星期二預訂了戲票,由於時候教早,該場次還沒有其他人參與。可能是影評麻麻,到開場前三十分鐘還是沒有其他座位被購買...。而前一場的人次也在 20 名之內,看來票房將會很慘淡。


    年初,同行 Green Tomato 在同一戲院包場《Ironman 3》給嘉賓欣賞,當時我還想像何時才有包場的機會。然而這個機會在半年後如願,實在神奇。

    說回電影,朋友在新加坡看過說:「No good」。我也抱著「No good」的期望去看,結果也很「No good」。如果我沒有看完 Steve Jobs 的自傳,想必有很多地方都不會明白,也不會清楚發展的來龍去脈。這套戲根本只是把自傳拍成電影。但時間有限,內容點到即止,看書好過看戲...。

    2013年9月20日 星期五

    Tri-Robot @TVB


    上個月的 Hong Kong Mini Maker Faire 報導,今晚終於在互動新聞台播出。

    Tri-Robot 最初是以興趣出發,製作一套好的機械人,作為在香港推廣機械人 Hobby 之用。機體的設計也考慮了自行生產的概念,所以遇到發展成套裝的機會時,也能滿足生產的需求。

    2013年9月19日 星期四

    地支逢沖

    最近開始擔心起十一月。西曆十一月冬至之後開始進入癸已年癸亥月,當中地支已相沖;十一月八日更是戊寅日,若遇上申時(下午三時至五時),更是寅申相沖。寅申已亥四驛馬皆出現,而且逢沖,是不是意味著有大事發生?驛馬主交通流動,是不是車、船、地鐵、飛機出現狀況?還是只是自身驛馬,旅行、搬屋、轉工?工作上的關口也不謀而合在十一月發生,不得不有點擔心。

    2013年9月18日 星期三

    拉闊圖書館.九:股市概覽

    BeyondZ Library 9

    又到了《拉闊圖書館》的時間。今次已經是第九課,特別請來了嘉賓講者:姚穎謙先生講解《股市概覽》。姚先生是信報《上善若水》的專欄作家,研究股票市場有十多年經驗,是「價值投資」的支持者。

    我雖然有買賣股票,但卻沒有做功課,最多只是看看公司的業務前景作為參考。就以 2313.HK 申洲國際為例,它是 Uniqlo 主要的成衣製造商。能跟日本首富合作,想必實力非凡。質素有保證之餘,Uniqlo 一直向海外發展,生意額越做越大,認為是不錯的公司。三年前以 HK$6.8 買入,是第一隻自己選擇的股票。無奈買入後即跌,信心動搖。在股價回到 HK$7.2 之際便放售。這幾年間一直繼續留意股價發展,不斷突破到目前 HK$25.25 水平。當中一些眾股皆跌的時候,申洲國際仍然力保不失,甚至輕微上升。實力說明一切。假如當日能把持堅定的信心,今日已經能成為獲利 371% 的戰績。

    說回《拉闊圖書館》,姚先生再一次讓我認識「價值投資」的思考方法及計算方法;也介紹了免費獲得上市公司資料的方法。他以電視廣播公司及香港電視作為例子,及實戰的分析,教了我們怎樣從數據中看到公司的管治、營運狀況及未來危機。雖然有很多不明白的術語及地方,但例子給了我們一個很好的學習方向。多謝姚先生。

    2013年9月17日 星期二

    大數據


    最近聽到很多次「大數據」這個詞,漸漸產生了興趣。我的概念停留在「從很大量的數據中找東西」,於是買了兩本書《大數據》及《精準預測》學習一下。

    花了一個星期,看完了《大數據》。我對這本書有一點期望;希望能深入了解大數據。不負所望,充足的例子、概況、用途、危機、未來的假設都很實在。我也立即在快上線的兩個網頁項目中加入數據監測,同時也得思考如何使用收集得來的數據,來改善介面設計及流程。無論如何,《大數據》是一本值得推薦的好書。

    2013年9月16日 星期一

    CentOS 下的 SSL 錯誤


    上周為 Production 服務器修改 SSL 證書,以配合 2014 年 1 月 1 日實施的 2048-bit 加密通訊。數據如用舊有的 1024-bit 將無法被處理。昨晚發現服務器重啟後,HTTPS 服務未能運作,出現「(98) address already in use make_sock could not bind to address 443」錯誤。經調查後,發現備份出來的 ssl_2013.conf 會影響載入流程,導致 443 埠已被監聽,導致 ssl.conf / httpd.conf 無法成功連接 443。解決方法是把 ssl_2013.conf 改名為非 .conf 結尾,重啟 httpd 就可以。

    2013年9月13日 星期五

    iPhone 5c


    一直守候今日推出的 iPhone 5c,終於在晚上八時等到了。起初在 iPad 登入網站版 Apple Store,但下了兩三次單都出現 Internal Server Error,無法繼續。唯有改用 App 版才能正常落單。

    雖然 iPhone 5c 及 iPhone 5s 都是 Apple 本季的新機,而且 5s 機能更強,但我還是較為喜歡 iPhone 5c。

    2013年9月12日 星期四

    股票助手


    參與股票市場買賣有四年時間。我沒有興趣留意它們的走勢,全部都是買入後放在一邊沒有理會。最近發現全部都跌了近一半。我希望有一個助手能替我留意股價走勢,在能平手離開時通知我一聲。這個助手,莫過於是一台電腦。

    程序用 PHP + Yahoo Finance API + Crontab 來達成。我把需要觀察的股票及條件寫到 config.txt 內,讓 PHP 跟據設定向 Yahoo Finance API 查詢最新的股價,然後跟 config.txt 內的條件做比較。條件成立時會自動發電郵給我。
    {"0148.HK":[{"condition":">","price":"40.0","email":"pacess@pacess.com"}],
     "1225.HK":[{"condition":">","price":"1.2","email":"pacess@pacess.com"}],
     "2628.HK":[{"condition":"<","price":"21.0","email":"pacess@pacess.com"},
                {"condition":">","price":"22.0","email":"pacess@pacess.com"}]}
    Yahoo Finance API 十分簡單易用。它是一個網址。把股票代號發需要的內容加到網址,執行後會傳回一個 CSV 文字檔,內裡就是結果。

    http://finance.yahoo.com/d/quotes.csv?s=0148.HK+1225.HK+2628.HK&f=sb2b3
    s股票代號
    b2叫價
    b3出價

    這個 PHP 程式是透個 HTTP 執行,有需要時可以直接在瀏覽器內執行。而在其他時間,服務器則會跟據 crontab 內設定好的時間自動執行。

    2013年9月11日 星期三

    思考的藝術


    在書展買了一批書籍,是時候得消化一下。快速瞄過每本書後,選了「思考的藝術」。

    看了大半,作者不斷帶給我新鮮的角度與驚喜,很喜歡這本書。當中很多偏誤及錯覺,都是我經常犯的,只有少部份能察覺得到。就例如有網站編輯拿 iPhone 5s 跟 Galaxy Note 3 比較,認為大屏幕就是優勝,本身已跌入「討喜偏誤」。如果讀者們不思考一下就信以為真,就犯了「權威偏誤」。

    又例如大家對 iPhone 5c 價格的反應,也是中了其中一個陷阱。一直以來流出的 iPhone 5c 資料,加上媒體的估算,認為 Apple 不會推出兩款差不多的手機,以及低價市場的需求,使人深信 iPhone 5c 的 c 字代表「Cheap 平價」的意思。大家都對 iPhone 5c 有著強烈低價的慾望,跟 HK$4,688 這個價錢存在著巨大的落差,便認為 Apple 的定價是步向死亡的起點。其實,參閱 iPhone 5c 的硬件規格,它的 3G 通話時間比 iPhone 5 長 2 小時;備用時間長 25 小時;16GB 版本價錢便宜了 HK$900。iPhone 5c 基本上是 iPhone 5 的小升級版,價錢又怎會是平價呢。

    2013年9月10日 星期二

    處理對白的方法


    同事有一天時間處理第一關的對白設定,時間上我認為充足。內容不算多,一個角色一個場景大約八句對白,一關有四個場景,總共四個角色。每一句對白除了文字外,還有頭像檔案、對白位置、按鍵設定、等候時間...資料。同事把以上內容放進 Plist 內。我認為雖然做到對白需要的工作,但修改起上來很不方便、較為難看、也較易出錯,最重要是很耗時。以這樣的方式工作,可能就是造成同事往往加班工作,才能夠勉強完成任務的原因。決定想想法子幫他早日完成。

    要提高效率的方法有三:

    1) 把工作自動化
    以對白為例,要製作的 plist 格式十分固定,人手都只是做剪剪貼貼的工作,何不把它交給電腦,既省時又能減少錯誤。把文字檔內容放到試算表整理一下,簡單寫個工具,把試算表轉換成 plist 檔案。要是修改格式,只要更新工具,便能輸出成新版本。我花了不到一小時,利用 Javascript + PHP 完成工具。選這兩種語言只是因為方便,而且能在任何地方、任何平台、任何人數使用。

    2) 把內容抽離,交給其他人幫忙
    同事的 plist 格式基本上在沒有說明的情況下,是不會知道是甚麼來的。假如能把內容抽出來,變成簡單的格式,這樣就能讓非程序員也能一起分擔工作,加快完成時間及成本。

    3) 加入預設值
    部份內容機乎是恆久不變,這樣就應該把它設定為預設值。在沒有輸入的情況時便調用預設值,減少輸入的內容。


    基本上,同事花了八小時還未能完成的工作,我能在一小時完成,分別只在於想辦法令自己可以輕鬆偷懶,只要有這個目標,就會想出更好更有效的解決方法。

    2013年9月7日 星期六

    Walkera W100S


    今日到旺角一帶的模型店搜集製作 Quadcopter 的零件資訊,看到一台帶 HD 鏡頭的 Walkera W100 四翼飛機,可以用一般遙控器外,更可以使用 iOS 裝置操控。價錢更是 HK$580 左右。跟上星期在 Kickstarter 見到的 Hex 功能及價錢都差不多。勝在即時到手,不到等到 12 月才出貨。很有購買的衝動。受到小時候的習慣影響,一定會格價及三思後才買,以避免一時衝動帶來了無比的後悔。

    在網上看一下資料,發現 W100 的繼航力只有 7 分鐘;而 Walkera 推出了新版本 W100S 則能提升至 10 分鐘,而且飛行得更加穩定。真慶幸沒有即時購買,現在識揀了!雖然只能維持 10 分鐘,但無論如何,W100S 都是我值得購入的目標。

    2013年9月6日 星期五

    招募人才


  • 聘請兩名程序員
  • 年齡、性別、學歷、經驗不限
  • 要熱愛編程
  • 熟悉任何一款編程語言
  • 能跟隊員順利溝通

    有興趣的朋友可將程式作品(或畫面抓圖)電郵到 job@beyondz.com.hk,合適者將會約見面談。謝謝~
  • 2013年9月5日 星期四

    專注

    最近有幾個項目在傾談,不約而同都是較大型的 Enterprise Solution,而不是一直在做的 Business Solution。我自小受益於專注學習,練得一手編程功力。十分同意 Steve Jobs 說要「專注」。現在問題來了,有機會晉升一級,開發企業級的應用,是否應該一試?

    我的想法是要專注做好小中型公司的應用程式,不試。人手不足是一個因素。雖然接到單能聘更多人手,但管理能力又能否在短時間內提升?有否足夠時間做培訓?有否足夠的技術去開發?接得到就要做得到。做不到就不要浪費大家的時間。目前,還未有能力。

    不過,從商業角度來看,機會可能只得一次,不把握就會錯失。失去了想再求也未必如願。向好方面想,凡事都有第三選擇,只要心態正確,沒有難倒的事。可能我缺乏信心,又或者是著重結果,無法履行,就不會承諾。在舉旗不定的當下,唯有交給拍檔決擇。

    2013年9月4日 星期三

    在 Android Studio 中啟動 Genymotion

    Start Genymotion in Android Studio

    要在 Android Studio 中啟動 Genymotion,需要在 Preferences 中的 Plugins,把 Genymotion 打勾。

    2013年9月3日 星期二

    第三屆機器人格鬥大賽

    Robot Boxing League


    2013 年 9 月 1 日,Tri-Robot 三號機出戰台灣 RBL 第三屆機器人格鬥大賽。由 Keith 應戰,我沒有出席。這是 Tri-Robot 第一次參與的比賽,雖則輸了比賽,但卻吸收了一點經驗。首先是 Servo 性能 0.19s @60 度比台灣同好的 0.12s @60 度,慢了 33%。動作較慢帶來一點輸蝕;第二是系統剛完成不久,動作數據不多,操作員有待熟習操作技巧;第三是久缺穩定用的檢測器,增加跌倒的風險;第四是較為致命的,虛擬搖桿在 iPad 平滑的表面上欠缺觸感,操作員在危急的時候較難在不目視的情況下作出反應。

    整個 Tri-Robot 系統還有一些設計未加進去,相信部份問題能夠得到解決。最頭痛的是觸感問題,是意想不到的結果,得花時間找出解決方案。

    2013年9月2日 星期一

    Hex


    最近留意著 Kick Starter 中一個名為 Hex 的項目。它是一個多軸飛行器的項目。在完成 Tri Robot 開發之後,下一個便是 Quadcopter 作品。我想開發一件細小,帶有鏡頭的四軸飛行器,用 iOS 來遙控,可以進行航拍,還可以隊列形式執行任務,價錢最好控制在 HK$1,000 之內。然而,Hex 做到了我以上的設定(除了隊列)。它只而 US$59,亦即是 HK$470 左右,實在吸引。