2017年7月5日 星期三

生活周記

近幾個星期的時間過得心情很鬱悶,就像那下雨的天氣一般,想出門做的事都一概無做。最令自己介懷的不是因為下雨而沒有去做的戶外活動,而是那些因為沒有把握時機,自己放棄的時候。回想最近:・想多運動卻懶在床;・咖啡總是戒不掉;・沒有辦法一次鬧鐘響鈴就起床;・PMP未有全力以赴地溫習,不在午飯、通勤時溫書;・火車上反而變成戒不掉手機的低頭族...... 感慨是不是老了?從前半小時空檔可以做到很事情,但現在可能個多小時,甚至大半天也可以在小休和猶豫中流走了。唉,想去的事就應該就去做吧!自律才能避免敗給自己。「成功路上並不擁擠,因為堅持下來的人不多。」、「自我控制,是最強者的本能。」我是早知道的⋯⋯

自小覺得自己的的接受和適應力都幾高,通常這大概是好事,但可怕的是接受了自己的問題而不再去解決問題。而問題不斷累積的結果,就變成充滿缺陷地生活。想到另一個詞語-『容忍』,從能夠短暫的「接受」變成不斷的「容忍」,這可不好了。在日復一日的生活間,總要定期停下來,為自己打掃一下。在數算自己的失敗時,也想起那些帶點無賴自虐式的日本文學,好像有時作者就是太過接受了自己的缺陷,無論作者是因為面對世界給予的挫敗,抑或是追隨像櫻花凋謝吹落的美。在揭露自己的同時,容易帶有一種「我就是這樣了」的無奈,也在某程度的自我放棄。是不是因為這樣,那些經常營造自己最好一面的人,往往更傾向有好的生活? 那我就不應該太沉溺去失意落魄了,哈哈。


2017年6月25日 星期日

[PowerShell] [Office] 自動執行應用程式之間的複製貼上

簡單的補充一篇早前返工時的嘗試,大概這個方法還可以用在其他平台/情況。

話說有個軟件的用家介面在顯示一些設定資料的版面上,沒有「匯出」功能,只讓人逐格地Copy & Paste。不想人手這麼耗時,就找方法來自動Copy&Paste抄寫到Excel中。

# 用家設定參數, 
# $count: 這裡預執行次數=行數-1;
# $winTitle01: Copy的應用程式標題; 
# $winTitle02: Paste的應用程式標題;
param(
$count = 36, 
$winTitle01 = "This Platform x.xx  [ USER - ENVIRONMENT ]",
$winTitle02 = "Book1 - Excel"
)

add-type -AssemblyName microsoft.VisualBasic  #載入VB的部件。
add-type -AssemblyName System.Windows.Forms  #載入System.Windows.Forms的部件。

start-sleep -Milliseconds 1000 #暫停1000微秒
#For-Loop 執行for ($i = 1; $i -lt $count; $i++) { 
    Start-Sleep -Seconds 1  #暫停1秒
  [Microsoft.VisualBasic.Interaction]::AppActivate($winTitle01)  #啟動已在執行中的應用程式。
  [System.Windows.Forms.SendKeys]::SendWait("{DOWN}^(c)")  #傳送指定的按鍵至使用中的應用程式,然後等待訊息的處理。
    Start-Sleep -Seconds 1
  [Microsoft.VisualBasic.Interaction]::AppActive($winTitle02)
  [System.Windows.Forms.SendKeys]::SendWait("{DOWN}^(v)")
}

Powershell - Add-Type
https://ss64.com/ps/add-type.html

MSDN - Interaction.AppActivate Method (String)
https://msdn.microsoft.com/en-us/library/x57y7863(v=vs.110).aspx

MSDN - SendKeys.SendWait Method (String)
https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.sendwait(v=vs.110).aspx

MSDN - SendKeys Class - KeyStoke的對應表
https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys(v=vs.110).aspx

2017年6月16日 星期五

[JS] 用 NodeJS 和 Socket.IO 製作實時更新的自家股價指標查詢網頁

繼續Node.JS 的學習,這篇是要記錄另一個嘗試,在後台的Server不斷更新股價資料和自設的指標,做一個網頁可以讓自己在屋企以外也可以查詢這些後台的資訊。

之前的星期看完了Coursera的那個Node 的課程,內容是充實的,繼之前的內容後,還有HTTP 的session , https, authorise token。 不過未有用到的想法,看完也像過眼雲煙。能夠上心的反而只有自己試的Socket.IO。會這樣做是因為看到一篇Socket.IO 的文章,可以讓客戶端的瀏覽器和伺服器端作實時雙向溝通,不必客戶端去不斷刷新。


2017年6月1日 星期四

[PowerShell] [Office] 快速完成文字檔「搜尋取代」字串的工作

這張圖的設計者應該就是Developer,我也幾喜歡這張圖,但我畢竟不是IT (所以出來寫的code大概在專業眼中會看出奇怪,用的程式也雜亂)。在營運部門的工作中有時接到奇奇怪怪的問題和要求,應不應該做、如何做,都是要討論的問題。其中一個就算要做也是相關的技術部門比我們更適合處理的情況,就是一些批量處理資料庫數據的情況,最近就有個類似的情況。也許我應該也要多站在後面抱頭、蒙眼、尖叫⋯⋯

2017年5月29日 星期一

[JS] 用 NodeJS 製作記錄日間股價的csv檔(Yahoo Finance)

學習Node.JS 有兩個目標希望可以寫到的,一個是自己的後台程式可以按需要查詢自定的指標,二是在日間抓取 網上免費的「即時」股票報價 ( Intraday Data),儲存做本機上的數據庫。兩個需求都在過往星期有所進展,比較接近完成的是日間股價的數據庫。

這個數據庫的建立可以分為兩大部份,首先要可以定時提取數據源的財經數據,免費的當然要數Yahoo Finance,可以自行寫GET request 去用他「隱藏」的接口拿數據,(這是Yahoo Finance 的 CSV API,用Excel的話會用到這方法,它另外還有一套下載歷史股價的方法就好像在這次改版中失效了。以往Yahoo和Google都有股價的API,但似乎在逐漸放棄。原本Yahoo都有寫一些 License上不可 redistribute / commercial usage 的條款,但現在根本連這個功能的說明版面都找不到了)。另外也有現成的Node package,我就當然懶得 Reinvent the wheel,所以這方面就用現有的 node-yahoo-finance。雖然這個Yahoo的API可以有historical 和snapshot的數據,但免費數據一般都沒有即時更新,Snapshot固然一般有15分鐘滯後,所以一定要看Last-Trade-Time。Historical 的也可以留意到一些日子的Close 和ratio數據有點奇怪,引申到52周高低有點問題,大概免費的東西質量總是少點保證的,所以如果打算直接使用的話,一定要小心,不然類似出現 Fat Finger Error 就慘慘了 ( T_T ) ~~

Node package: yahoo-finance

今次的目的是想做一個 Intraday 的數據庫,讓之後可以有數據基礎去研究分析。因為會經過檢查,所以要求並不高。先安裝node-yahoo-finance:
$ npm install yahoo-finance --save

NPM - yahoo-finance
Github - pilwon/node-yahoo-finance
(留意Yahoo在改動原本的API接口 -16May2017,不過見一些常用的field依然可用。open-source的強大之處就是己經有高手去解決 26May2017,原來的snapshot() 功能將被棄用,由新的quotes()。historical() 聲稱不受影響。)

要知如何使用,最好先對Yahoo Finance的接口有點經驗。例如在網址上試試輸入:
http://download.finance.yahoo.com/d/quotes.csv?s=^HSI+0005.HK&f=nsl1t1opc1p2&e=.csv

2017年5月18日 星期四

[JS] Node.JS 開始使用 Express 和 Express-Generator

繼續之前的<Node.JS>記錄。開始了Node.JS的學習,當可以架設到一個簡單Server之後,在Coursera找了一個Node.JS的 Open Course (這應該有三個星期前了)。下一步就是用Express模組來建構同樣的伺服器端程序,Express是一個Node.js 的Web應用程式架構,方便創建各種Web應用、APIs等。今後就會用到它實現旳路由控制(Route),去代替之前要自行寫代碼解析URL中的的請求;用它對模板(Template)的支援,去更方便地回傳HTTP的內容。另外,還會多看幾個模組:Morgan、body-parser,這些稱為Middleware的東西。最後會用Express Generator去生成Express架構。

Express

首先,為你的新專案開啟一個新資料夾,cd到這個資料夾中:
$ npm init  //用npm init開始建立一個專案
$ npm install express --save  //安裝Express, 新增至相依關係清單

例子: server-1.js 。可以看到己經在使用app.get、res.send,去代替url的解析工作和內容顯示:
var express = require('express');
var app = express();

app.get('/', function (req, res) { //當收到 "/" 這個請求時,回應下面的 "Hello World!"
  res.send('Hello World!');
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

METHOD 可以使用的 GET, POST, PUT, DELETE 的作用好比: Read, Write, Append, Delete。
路由定義的結構:app.METHOD(PATH, HANDLER)。其中一種 app.all() 是所有的request都會被觸發,適合處理必需執行的部份。下面的例子中應用到。

2017年5月14日 星期日

生活周記:一級運動攀登;檔案研究(香港前途談判)

一級運動攀登 (07 May)

朋友報了攀總的一級運動攀登課程讓我頂上了,上星期就上了一晚理論課,和星期日一次朝九晚六的練習堂。上水這個攀石場在保榮路運動場,距離車站都有段距離,中午要找食飯的地方,最近要到清河邨或彩園邨的商場。攀石有三種路線,我們預了右邊六塊板的範圍,開了4線作課堂練習。

2017年4月28日 星期五

[R] ML4B 課堂重溫 - 淺談 KNN (K-th Nearest Neighbors) 算法

將今個星期二的 R Machine Learning 堂記錯成星期三,錯過最重要的最後一堂(哭)。 原本想打得太慢的記錄可以等埋最後一堂。算了吧.... 當上一堂講了Regression model,第3堂開始講分類Classification的問題。從使用 KNN (K-th Nearest Neighbors) 算法,在Class套件中的knn() 開始,一路講了 Logistics regression 的 glm()、分類樹的rpart()、支持向量機(Support Vector Machine)的svm(),最後在垃圾郵件的分類時,提到為中文句子斷詞的JiebaR套件。

這種分類問題的簡單例子,例如你找來了100個男生的資料,包括資產、收入、樣貌、才華、談吐等評分。再找女生們去評定他是否「荀盤」。有了這組Training Set的數據,可以用來訓練你的電腦中的一個「荀盤分類器」。讓它透過學習這群女生的判斷結果,從而當有新一筆資料(男生)時,可以從他的「Package」判別他是否女生心目中的荀盤。又或者,找出要成為荀盤的條件,看看你....在哪方面可以改進改進。

How a Math Genius Hacked OkCupid to Find True Love

拿KNN 算法來解釋,這算法是利用特徵空間中"距離"最近的K個鄰居去預測目標(或者是你)的分類。例如,當相近的5個近鄰中有3個是+,2個是-,就預測自己也是+ 。就是一種物以類聚,人以群分的想法。當然這鄰居不是指在你生活圈子中身邊附近的人(但大概你們也有某些相似之處),而是考慮上面所收集的一組多維度的「Package」中各個因素的接近程度。
https://commons.wikimedia.org/wiki/File:KnnClassification.svg#/media/File:KnnClassification.svg
k=3:預測= ▲
k=5:預測= ■

2017年4月25日 星期二

到訪紅石門+穿迷椏走廊; 再訪砵甸乍炮台+發現安聯村; - 假期應當這樣充實

日期:2017-04-16
路線:烏蛟騰-下苗田-大峒-觀音峒-(近)紅石門坳-紅石門-牛角涌-黃竹涌-馬尿河-下苗田-烏蛟騰
時間:7小時15分

紅石門
印洲塘一角

今個周日的目標是紅石門,我對這個地方已經心儀很久。自己清單上這類未實現的路線還有很多,可以了結一個目標實在太好。上一次與紅石門有關的路線,已經是13年9月,走船灣淡水湖郊遊徑時,順道尋找在紅石門坳的入口。那次漫長而炎熱的路線仍感受深刻,所以今次都準備充足,2.75L的水、山杖、帽,地圖和指南針都帶備了。九點在大埔火車站集合和食早餐,一行3人坐275R到新浪潭總站,行入烏蛟騰的郊野公園指示地圖,大約在10.45am起行。

2017年4月18日 星期二

[JS] Node.JS 的起手式 / D3.JS 的測試

這個其實是上上星期的嘗試,一是Node.JS, 另一個是D3.JS。

Node.JS

這次在圖書館的HyRead電子書庫見到Javascript的書,打算重溫一下之際,找到兩本專講Node.js的。之前就因為辦公室的環境很多程式語言都不能隨便安裝,Javascript 這種有瀏覽器就可以支援的語言一起引起興趣。聽過有了Node.js 以後的Javascript 也可以做伺服器端的語言,一些用JS做爬蟲也是指向Node.js。可惜之前未能弄懂如何入手這個。今次就裝起來可以一試了。

2017年4月16日 星期日

丫髻山 - 橫洲與周邊的發展

早前看到 文化葫蘆 Hulu Culture 在Facebook上有一個活動宣傳 — 「入鄉‧隨續」X 元朗 & 屯門 :元朗棕地問題考察團,上丫髻山看橫洲了解該處的棕地情況。這丫髻山最初是因為攝影界日落水田的景色而認識,去年橫洲事件之後,這篇《橫洲登山記》也勾起興趣該親自走走看看。
上周日,一行人下午三時才在朗屏村出發,經過巴士站後橫過朗屏路,上山的路徑在東莞學校對面。在這段路旁的屋外已見寫上「不遷不拆」等橫條。據帶隊的區議員張生講解,在朗屏路這邊路旁的舊屋,就是橫洲「第一期」4000伙公屋計劃的選址。收地涉及綠化地帶上的三條非原居民村 - 永寧村、鳳池村及楊屋新村。據指當年政府初步估計當中永寧村只有14伙住戶,計劃出台時才知有40多戶。沿小徑在「梁山后土之神」兩邊各有上山的路,右邊是石屎梯級,我們走左面的泥路。這段路線也是附近居民晨運行山的路,前行不久便會到一個風雨亭,旁邊有晨運花園和觀音廟。當日也有上來參拜的人。向右望對面的山頭就是丫髻山,山高只有約百米,但已是元朗平原上最高的小山丘,兩丘南北相連,形如頭上雙髻而得名。清明過後,一面山坡被山火燒成啡啡黑黑的,山上多墳,混凝土的灰白也格外顯眼。

2017年4月4日 星期二

R User Group 的 Machine Learning for Beginners (三月)

三月另一個開始的活動,是R User Group 辦的Machine Learning for Beginners。共四堂,暫時上了一半,雖然不幸收工前總有意外,兩次都錯過了開頭的部份,還好有source code 看著理解,和對基本的統計總算仍有概念,

第一堂主是R 的數據處理。主要用"tidyverse"套件包,"tidyverse"是打包了一組有著共同資料形態和'API'設計,方便一齊使用的套件。透過"tidyverse"處理這些套件的 install (core + select) 和 load (core)的工序。當晚用到的主要指令包括來自 "magritti" 的 piping operator %>%,可以將一個output當做另一個指令的1st input,這個比起要括號配對括號的寫法的確方便很多。另外,還有來自 "dplyr" 的6個指令,包括'select', 'filter', 'arrange', 'mutate', 'group_by', 'summarise' 。在dataframe的數據處理上算十分方便。還有n, top_n, tally等一起使用。之後我把這用在處理問卷資料上已比去年方便得多了。
  • select: 根據給定的變數名稱選擇column
  • filter: 根據設定的條件做篩選row
  • arrange: 根據選定的變數內容做排列
  • mutate: 根據給定的值賦予新變數,或是變更舊變數
  • group_by: 根據給定變數做group,以銜接summarise
  • summarise: 資料整併

這些專門處理dataframe的數據,tidyverse有一個叫lubridate的套件處理日期時間,但另一方面自己所仍要找尋xts, zoo 等財務上時間序列的處理方法。見到有另一個"tidyquant"的套件,大概之後可以一試。

"tidyverse"的介紹和教學可以到:
  1. https://blog.rstudio.org/2016/09/15/tidyverse-1-0-0/
  2. http://r4ds.had.co.nz/model-basics.html

2017年3月29日 星期三

重溫拼布熊仔的做法

之前上完了青年廣場開的一個三堂的拼布熊仔工作坊。雖然不是第一次玩拼布公仔,但上一次是兩年多前的Felissimo 拼布松鼠。之後那年學勾冷公仔,還未有完成.... 今次學這個雖然都是拼布公仔,但有些步驟已經忘記,還好今次再學可以重新回憶下。

2017年3月8日 星期三

富亨/松嶺的後山徑-大埔第9區和頌雅路附近的舊徑新修


為了要證實報導所見的傻人樂園是不是自己認識的大埔「傻人樂園」,上星期也花了一個早上上山看看。走的是我每次行九龍坑山首選的富亨邨山徑,山徑無名,但山下本來有個松嶺村,山上有人漆上「玉秀峰」。從富亨邨後的匡智松嶺學校旁開始上山,到288標高柱後向大埔頭方向落山,落山途中就會經過大埔的「傻人樂園」。當初都有進去過,但之後都只是從外經過,今次刻意走進去了解規模。這個「傻人樂園」的地方不大,是一個連接康樂園只有幾層的後花園,除了從衛奕信徑分支一小段出來和連接康樂園外,不見得會有連接金山衛徑「傻人樂園」的路。而且今次所見,連昔日衛徑上的避雨亭的詩全都不見了,果樹也留意不到了。不知還有多少人會打理這個後花園?金山「傻人樂園」都只剩90多歲的公公婆婆參與過當年1970年的落成。大埔傻人樂園不知歷史如何?大埔康樂園前身是李福林的果園,到1980年代後人創立加拿大發展公司發展建成康樂園,猜想是當時的屋主有模仿金山傻人樂園的主意。現在不知還有多少人來打理這個「傻人樂園」?
【傻人樂園·影片】侵佔者講舊時:山上大世界如何建成
昔日貼滿詩句的避雨亭
「傻人樂園」

今次最意外的是重修的山徑已接近完成。從前這段路只有起步不久時的石屎涼亭和近山頂的晨運健身處搭建的避雨亭,現在中間再多了兩個涼亭。新建的梯級可以上到晨運健身處,有了這條梯級路應該晚上夜行也可以,當晚已經急不及待的再上來影相。

2017年3月4日 星期六

主教山 - 石硤尾的晨運綠洲

九龍區另一條晨運路線,可以數石硤尾的主教山,它是位於巴域街的聖方濟各堂後的一座小山。當初聽聞這個地方,是源於2016年<香港01>的一篇報導,主教山山頂的一片小草地因為是配水庫範圍,一直由水務署管理,也就是以鐵絲網圍封不動。但十多年來附近街坊早已習以為常地「闖入」。開闖為晨運勝地,還有「土炮」健身器材供街坊使用。不過2015年有搞手用作舉辦派對的場地,惹來附近居民投訴,令水務署和警方一度加強了管理。之後,兩棵10-20年前由街坊種植的樹,也因為擔心影響水庫結構而有計劃提出要砍掉。地區聲音希望保存大樹和善用這個空地。今日所見一切尚能保存。香港在城市空間的規劃、部門間的協調、對於自下而上的使用習慣和意見是否做到從善如流?

Totoro Typhoon: An Inside Look At Hong Kong’s Secret Pop-Up Parties

主教山配水庫晨運樂園攻防戰-街坊開墾-水務署報警-計劃斬樹

2017年2月21日 星期二

嘉頓山 - 靜看今夜的市區燈火

嘉頓山,在深水埗也可以暫時離開密集的樓宇,只花半個小時就可以輕輕鬆鬆的上山。它和附近的主教山一樣,都是座落九龍市區之中,因著水庫而留下的小山,也正好當起城市的綠色區肺。方便的位置令它也是地區人士的一個晨運選擇。不過,我想不少人(特別是攝友)和我一樣,都是經過深水埗城市夜景的相片而知道嘉頓山這個地方。

一直想到這鬧市中的小天地看看,渣馬當日下午才決心出動,我覺得都是動者恆動的一種心理上的習慣因素吧。我大約五時半到山上看日落的位置,已經有很多腳架放好有利位置(近樓梯那邊,可以直望拍攝深水埗欽洲街)。還有很多年輕的情侶會上來影相。要走到最入邊,大約是薩凡納學院上面才有坐下來的空間。日落過後會走了一些人,但拍夜景的人就繼續留下。


繼續沿樓梯向上就會看到標高柱,只有幾步路的距離。山岡頂是一片水泥平台的空地,周圍有休憩的座椅。這裡不忘嘉頓山在成為新文青拍照熱點之前,還是附近居民的晨運休憩處。另一天刻意下午過來,補拍些引路的相,叔叔伯伯和小朋友們就在這邊遛狗、閑遊、和玩樂。山後的小路有鐵絲網封住了配水庫。網上看過前人的記錄,這裡鐵絲網的網門本來是長開的,走進去是一大片綠草地,找到石峽尾第三配水庫幾個大字之後,對面有另一個破損了的鐵絲網,穿過鐵絲網會有褔德祠和山徑下山。可惜現在出了名就通通給修補了。 在啟德還是舊機場而非新發展區的年代,人們記得這裡還有座訊號燈塔。不知那個年代,是否也有某對情侶,會牽著手走上來,在這個當年仍是北九龍裁判處的後山,看著山下的萬家燈火,看飛機在低空飛過。傾訴著對幾十年後生活的憧憬?

2017年2月16日 星期四

月記 - 大阪假期、PMP、夢、渣馬2017

生活上的事,農曆年前和女友去了一趟大阪,同事都笑說日本唔似我會旅遊的地方。強韌的印象太深入民心了吧,不過想來這年工餘時候其實是懶了很多,比上年少了運動,覺得都已經略見肚腩了。本來想起日本旅行,就有個印象:日本是應該會讓女人瘋狂購物的地方,誰知計起來我比女朋友花了更多錢購物。先歸咎低日圓的匯率和高質素的產品,消費上只有交通是比較貴,食和買都感覺比香港抵。男裝比女裝貴是常識吧,主要是買了兩件大衣和袋;然後買了個健身的腹輪啞鈴、少許藥品,足夠令我的購物金額超越女友。不過,到了上機時看到別人手提的行李,也許我們是很節制了。

腹胸兩用。當健腹輪開始熱門時,就想要一個這樣的設計了。

新年假期開始,約好今年要完成PMP,再下定決心完成之前擱下了大半年,當作35 contact hours 的online course。之後報名入會PMI,也交了PMP Program的申請。現在是要按圖書館借的p的《Rita Exam Prep》自習了,目標今年上半年要順利考到合格。
舊同事走,新同事來,現在的職位也上任快半年了,努力用新腦袋做事。要讓自己慢活下來,不知是否年紀漸大,感覺下班後少了時間/精力再做自己想做的事。好的領導者角色,要學習如何管理好事情的輕重緩急,下放事情時做到放手而不放任⋯⋯

踏入二月,一早就應該為渣馬練跑了。只有在新年後跑了兩次不足10k 的距離。擔心當日能不能完成21公里的挑戰,會不會身體應付不來而有意外。 大約個多星期前就嘗試從大埔跑到沙田練習。練跑的時候想起Newton 1st law,大概身體也是一直不動就會繼續不想動,動起來就會持續的動。雖然,渣馬前還是只跑過兩次不足十公里的路程。

想記下一個夢境:
「新學期開始,不過走了好多課沒有上。有一課由"陳敏華"教的歷史課,我是連上堂的課室也不知道,這天打算上堂了。在校園裡周圍找一個正在教歷史的課室,不過看到最像樣的只有一個教書法的教室。尋找的過程中遇到中學時的Miss Lam,原來鄺Sir介紹了她到新開的"駿昇"學院進修,這是之前鄺Sir也有讀過的。傾談間講到要一邊返工一邊上課就要如何遷就時間,有時直到下午一時的整個上午都要過來上課,那天中學就不安排教上午的班⋯⋯然後夢境變成我帶著行李出遊,趕著車⋯⋯然後又變了一個跑步的場景,是要打倒對手鬥快到終點的。臨近終點時有兩個跑在前面,我手上有一件很長的武器,像拿著長劍的手法握著,武器的質料像是紙做的,我伸盡武器,但在對手過終點後才能擊中。」


從幾星期前開始記,寫到現在渣馬後。今年挑戰渣馬前未有好好準備,最近連十公里都沒有跑過。事前幾日沒有信心的,抱著心態是大不了就是跑不完全程,先去試試,不會出事就可以。起碼要有10k,之後每跑得多些少都已經是成就。 當日,從彌敦道出發,跑到5公里的標誌時,心想跑了這麼久才只是5k... 繼續一直跑到10k,超過一小時了。起步時預算過如果能夠保持前年十公里跑一小時的狀態,那就最多有2小時完成餘下的11k(半馬限3小時內完成),就應該不成問題了。嗯,所以現在要繼續努力跑⋯⋯還好之後不經不覺就跑到20k了,可能是這一段的新鮮景色,還有特別是跑西隧時大家的興奮。到了最後 1-2 公里才開始感到雙腳的肌肉很緊。
西區海底隧道
回想3年前開始跑步,以渣馬十公里作為目標,半馬/全馬當時是太困難和遙遠的難以想像。晚上從2k、4k、8k的慢慢跑得更多。完成渣馬十公里後的那年,十公里賽只是小事,山野跑是挑戰,也一次次的成功做到。現在完成到渣打半馬,有種感覺全馬好像也不是那麼遙遠了,不是只有少數的專業跑者才能跑到,我也會可以的。 有個憧憬想到海外跑,日本的馬拉松、澳洲和美國的山野跑⋯⋯。下年要達到2小時內完成半馬,之後應該就可以跑到全馬。

[渣馬2017大數據] 一張圖睇下自己成績屬百分之幾



2017年1月18日 星期三

[Java] 將照片的像素資料儲存成csv檔

之前Show Me The Code的講者介紹 Machine Learning 的 Python版本,上星期找到如何用 R 做之後,就只差準備資料。

記得學Java時有處理過圖片的。以下就是要將 3 (MaxN) 張 32*32 (Heigth*Width) 的JPEG 相片,轉換成灰階資料,儲存成 3*1024 的CSV 檔案。

當中幾個 Functions 提供以下功能:
  1. 相片轉換成灰度,記錄到 2D Array:
    convertTo2DUsingGetRGB() 或 convertTo2DWithoutUsingGetRGB()
  2. 2D Array 轉換成 1D Array:
    two2oneD()
  3. 3. 2D Array 儲存成 Csv 檔:
    save2csv()

2017年1月13日 星期五

[R] Show Me The Code - Machine Learning的簡易入門

上星期去了一個程式員的講座交流活動,6個講者就著不同題目介紹和展示相關的coding。怎樣擔起一場有魅力的演說,這種能力很多時候都需要。大約10分鐘的演講,不用Powerpoint的投影片,即場示範效果和做法。同一個活動,今個星期就見到別人已經好好地寫出一篇『親睹Machine Learning辨別靚仔靚女』

收工到場時已經錯過第一位講者講的WebVR。第二位分享用elm這個前端應用開發的經驗,只有少量Javascript認識的我只記得它是讓開發者可以寫完後compile成HTML+CSS+JS,因為先編譯,就不會等到執行時才出現運行時期的錯誤。第三位的標題很吸引,如何用十分鐘開發Facebook Bot』。原來前排見過的應用程式是透過這種工具開發。這技術可以充當你專頁的回覆的機械人,也可以是當FB Messager成為你應用程式的用戶介面。講者用的應該是PHP,網上也有其他用Node.JS,Python 的示範。

「[程式開發] Facebook Messenger 聊天機器人 API 環境建置 教學 (Node.JS)」

「用 Python 開發 Facebook Bot」


第二節開始的一個講者介紹API.AI,雖然示範的只是特定句子的對答,但API.AI這家被Google收購了機械人對話開發公司,還做到更多型式的文字/語音辨析。然後見到R、Python這些比較有親切感的語言。 R有電鋸陳分享他在Network Analysis的過程中,用Rcpp套件以C寫looping 的經驗,這樣編譯和運行的時間可以比用apply function的即譯式更快。之後嘗試rJava時可以留意這個用法吧。不過他的分享中其實有很多時間是放在解釋研究的方法:怎樣的數據形式、什麼是Network analysis 的Triad Census。他做過的分析和文章可以參考明報的報道,報道版當時也讓我深感佩服,原來香港還是有做數據分析的人。

「通識導賞﹕佔領時代的facebook專頁版塊巴爾幹化社會網絡分析」

「數據新聞:香港網絡生態系列之三 沒有最撕裂 只有更撕裂——後佔領時代的Facebook專頁板塊」

用Python 的Andy展示的是所謂Machine Learning、Deep Learning 今天已經可以如何容易地做到。示範用 Keras套件 以神經網絡Neural Network 的方式分辨男或女的面孔照片。有男女各大約1300+ 張相片,32*32 pixel的黑白大頭照。轉換成共約2800行1024列的數據集。2/3 Training, 1/3 Testing。想想這件事應該可以用R 做吧?如果先準備好代表這些相片的矩陣,就可以讓R做緊接的神經網絡分析。數據仍需要準備,但Coding的例子呢? 有,Google 一下就找到 R-Bloggers 上的Coding 例子:

2017年1月5日 星期四

香港的郊野公園動植物記 - 2016年末

上年報了AFCD郊野義工的導賞計劃,完成了蝴蝶導賞的訓練和評核等基本要求後,今年卻一直未有空,到年尾才出來開始。在服務別人之餘也看看自己可以遇到什麼品種,拍拍照。之後見相機中還有9月時跟人到大埔滘夜探青蛙時的相,一次過整理這些動植物的相。

大埔滘

青綠色的蛇,在香港最出名的一種大概是青竹蛇,牠是香港毒蛇中常見的一種,而這裡另一種更常見、無毒、青綠色的翠青蛇就因而經常被誤認。青竹蛇是紅眼白腹赤尾,頭呈三角型的;而全條青色橢圓形頭的則是翠青蛇。好幾次在野外見到的蛇都是翠青蛇。如果不想碰運氣的話,見過在鰂魚涌紅屋的展館中就有飼養。
翠青蛇