2017年4月19日 星期三

Facebook Frame Studio


今早零晨召開的 F8 開發者大會,我沒有看現場直播;反而到了晚上才看一看 Keynote。知道 Facebook 今年重點在 AR 及 AI,也有 Frame Studio 及 AR Studio 供開發者使用。前者不用審批便能使用,後者卻要申請。簡單地從 Sita 的相簿找來一張開心照片,用 Photoshop 退地後儲存成 PNG 格式,並上傳到 Frame Studio。拖拖拉拉、放大縮小。很簡單便製作了一個相框,最後一個步驟是要 Facebook 審批。不知道這個相框會否通過 Facebook 的要求呢?

2017年4月8日 星期六

股票預測首週結果


觀察了幾天,預測都算準確。像上週六推算出 0883.HK 會進入升軌,到今日確定了進入買入區域。而 2888.HK 的突然進入買入區域,也突然跌進賣出區域;意味著漸進式的上升數據比較可靠。同時,看來買入的機會也有很多,像是今日值得留意的是 0012.HK 及 1038.HK。

不過,0012.HK 及 1038.HK 同樣是突然進入的格局,而不是漸進式,有可能同樣出現突然掉進賣出區的機會。另外值得留意, 0012.HK 為「恒基地產」;而 1038.HK 則是「長江基建集團」;兩者都是地產類別,難道還有其他的禹意?

2017年4月3日 星期一

股票預測首天結果


在過去的星期六,程式預測了兩隻股票值得留意買入。今天是預測後的首個交易日,我十分好奇走勢及結果。在午飯時瞄了一下 2888.HK,當時是跌了一點點。到放工後再看,居然止跌回升;雖然只是一點點,但起碼沒有一預測便出錯。再看一看 0833.HK,同樣也是升了一點點。證明運算還算靠得住。至於算法是否成功,需要多看兩星期才能作準。目前是一個好開始。

2017年4月1日 星期六

股票買入通知


昨天在 macOS Server 中加入了 launchd,亦即是 cronjob。系統會在每朝九時從 Yahoo 讀取五十二隻股票。當中五十隻藍籌,兩隻是自己的心水股。今朝起來,看看設定有否正常運作。

用 Sequel Pro 打開資料庫數據,昨天的股票資料能順利導入及進行運算工作。同時恰巧遇到了購入通知。由於單憑數據很難看出有沒有計錯數,又或是短期波動引致的誤鳴。於是重新把之前開發了的股票圖表修改一下,以適合在 macOS Server 之用。把未完成的多餘部份刪除,精簡了由數據據讀取並顯示的圖表。看來星期一是購入 2888.HK 的時機!

2017年3月31日 星期五

繼續股票預測程式


之前編寫了一個程式,能提早三天預測股票買入趨勢。這兩天把程式修改一下,並放到我的 Mac mini 伺服器上運行。它會每日替我到 Yahoo 抓取數據,計算五十隻恒生指數成份股的趨勢。如果預測到買入信號,便會經 LINE Bot 通知我作出準備。

以 3988.HK 為例,在 2017 年 1 月 3 日預測到股價向上,並在 1 月 6 日進入購買價位。如果當日買進,完全不理事況在今日賣出,增值 11%。不過目前誤差還算多,希望再多看幾次及修正一下邏輯後能上場作戰。當然我最想係 ML + Finance 啦~

2017年3月28日 星期二

解決 Django 的 MySQLdb 錯誤


我打算為一個用 Django 框架開發的程式進行滲透測試;若在運行中的伺服器執行,恐怕會影響目前的客戶;而滲透測試的目的是找出應用程式的漏洞及弱點,不需要在正式伺服器中處理;於是另起一台伺服器,安裝 Django 及應用程式。可是,在 Migrate 時卻出現 MySQLdb 錯誤。然而,在正式伺服器中卻沒有這個問題。


要解決 Django 的 MySQLdb 錯誤,我嘗試了很多方法,也對兩台伺服器中 Python 的 site-packages 中做過對比,反而在正式伺服器中沒有 MySQLdb 這個模組。原因是 Python 3 停止了 MySQLdb 的支援。花了數天時間,最後找到把 mysqlclient 移除並重新安裝,才能解決問題。真是奇怪...。

2017年3月22日 星期三

連結直接發出 WhatsApp

如想用連結直接發出 WhatsApp,只需要把連結寫成:
whatsapp://send?text=You%20are%20so%20smart&phone=+85294129112
「text=」後是文字訊息,「&phone=」後的是包含區碼的電話號碼。

2017年3月20日 星期一

解決 json_encode 亂碼問題

在開發微信機械人時遇到一個問題,所有在 PHP 中加入到數組的中文字,在經過 json_encode 後會變成亂碼。就像是:
{"KEY01":"\u6700\u65b0\u8cc7\u8a0a","KEY02":"\u95dc\u65bc\u54c1\u724c","KEY03":"\u5e97\u8216\u4f4d\u7f6e"}
之前用了一個愚蠢的解決方法,先以特訂的關鍵字注入數組,完成 json_encode 後,才用 str_replace 方式把關鍵字替換成中文字, 避開因 json_encode 而導致的亂碼問題。但原來有一個聰明的做法。只要在 json_encode 後加入 JSON_UNESCAPED_UNICODE 參數。例如:
$menuArray = array(
   "KEY01"=>"最新資訊",
   "KEY02"=>"關於品牌",
   "KEY03"=>"店舖位置",
);
echo("<br>JSON: ".json_encode($menuArray));
echo("<br>JSON_UNESCAPED_UNICODE: ".json_encode($menuArray, JSON_UNESCAPED_UNICODE));
echo("<br> ");
上面程式的執行結果如下:
JSON: {"KEY01":"\u6700\u65b0\u8cc7\u8a0a","KEY02":"\u95dc\u65bc\u54c1\u724c","KEY03":"\u5e97\u8216\u4f4d\u7f6e"}
JSON_UNESCAPED_UNICODE: {"KEY01":"最新資訊","KEY02":"關於品牌","KEY03":"店舖位置"}

2017年3月18日 星期六

新的 JPEG 編碼器:guetzli


Google 推出了一個新的 JPEG 編碼器:guetzli。它的效能比一般的編碼器能節省 20-30% 的儲存空間,很適合用在網頁中的 JPEG 圖像。這個 guetzli 算法已在 GitHub 上開源。我就在 MacBook Pro 上進行安裝。由於我的 macOS 已裝有 Homebrew,因此只需要在 Terminal 中輸入「brew install guetzli」便能順利安裝。在 App Store 拿了 Mario 的 App Icon 來進行測試,一張 256x256 像素的圖檔在 Preview 生成 100% 質素 JPEG,得出 97KB;而利用 guetzli 指令「guetzli --quality 100 mario.png quetzli.jpg」生成 100% 質素 JPEG,得出 83KB。的確比一般編碼器生成的 JPEG 更能節省空間。


我把 Preview 及 guetzli 的輸出拿來比較,說算放大到 400%,肉眼也看不出有任何分別。如果把兩張圖做「比較」處理,再把差別強烈放大,才能得出最右圖的分別。既然肉眼上看不出,那當然選用細小的 guetzli 編碼。不過,代價是這個編碼器在編碼時需要用上更多的資源。

2017年3月13日 星期一

Pix2Pix 的地圖訓練成果


上週五開始,花了 26 小時訓練了地圖模型。今日拿來測試,對於之前的經驗,我沒有抱太大的期望。以下是 Pix2Pix 按照左面的輸入圖產生出右面的輸出。四張示範圖出來的效果也差不多,目前也看不清楚。希望日後有待改進。