2017年12月31日 星期日

虎地坑、藍地水塘-探索屯門的行後山路線

路線 :何福堂夜中學-屯門徑第一段-虎峽谷-虎地坑-藍地水塘-兆康站
點去:屯門輕鐵杯渡站,望向山方向走下樓梯,在馬會旁過馬路到何福堂夜中學,旁邊樓梯級經井頭上村上山。
需時:從輕鐵杯渡站到藍地灌溉水塘,大約2個小時
地圖:https://drive.google.com/open?id=1cIhkt79A0SAOIqCLH8y7eCEDITuc0diU&usp=sharing


之前走過兩段屯門徑,在到達藍地水塘後開始遇著下雨,匆匆離開後就想過要找個日子重遊藍地水塘,而且想一探在上游集水的虎地坑和當中的行者池水潭。
虎地坑

虎地坑・行者池

在今次行進方向下,新發現的另一個藍地水塘觀看位置

2017年12月13日 星期三

香港邊境探索-紅花嶺與蓮麻坑礦洞

路線 :(78K) 担水坑站-山咀村路-叢林小徑-伯公坳-新桂田-礦山-紅花嶺-水泥路-禾徑山路-沙頭角公路(78K 磗窰站)
點去:粉嶺/上水站,乘坐 78K 巴士,到担水坑站下車,沿山咀村路尋找山徑入口。
需時:從担水坑站到禾徑山路/沙頭角公路,約6小時

紅花嶺

從粉嶺吃過早餐後出發,在A3出口附近的巴士站,乘坐78K 到水担坑站下車,這是78K路線上尾二的站,下一站終點站已經是在禁區內,需要沙頭角禁區紙才能前往。下車後在村口的公廁和涼亭整頓過後,進入担水坑村⋯⋯就開始走錯路,如果從公廁的左面入担水坑村就出錯了,看見深圳方向的黑雲向我們移近,我們先是沿路走到村後的拜山路,途中下了一場驟雨,在雨中,一度憂慮今日是否要放棄。而在這條錯路的溪澗上所見的鐵籠,事後才知道可能是非法捕龜的設置物。    - GoogleSearch

正確的路是在公廁的右面有一條車路「山咀村路」。據指路的伯伯所言,上紅花嶺的路現在已經好行得多了,他大概3個鐘可以行到紅花嶺,我們今次沒有從東面直接上紅花嶺,而是取道北面的礦山,不過猜測3小時是偏快的吧?,不熟路的話在偏遠的山徑最好多預留時間。從紅花嶺往禾徑山路的下山段雖然是石屎車路,但宛然曲折,也要花約一小時才走得完,回到78K的巴士站。
下車後,應沿沙頭角公路繼續前行,往涼亭後不遠處的山咀村路。

2017年11月23日 星期四

蒲窩青年藝術節 - 手作成品的滿足感

這個月一直在學習Python Django。由其在看到 Facebook 修改專頁觸及率的演算法後,現在不付廣告費的話,專頁的觸及率就會低。這事加強了推動力去研究寫網頁,為女友在 Facebook上的 E-Commence 平台改成自主度更大的網頁,屆時還可做一些SEO/GA 的優化。因為目標是實際的成品,相信這個項目應該還有一段日子才能完成。這裡先記一記前個周日,去了一個蒲窩在理大舉辦的活動- <蒲窩青年藝術節>,讓參加者可以參與親手製作一些物品。當日就參與了三個工作坊,面對製成品的感覺,很滿足。


手工香

個多月前在雜誌看到它們的訪問。手工香的主要成份是助燃的木粉和提供黏性的榆木皮粉,加水揉成粉團後,再加入不同草本和木本植物打磨的粉,如艾草、黃薑、薄荷、香茅、綠茶等,壓模成型。晒乾後可以豎起來點燃。


藍染布袋

中途加入這個工作坊。有Tee/布袋/小布袋選擇,染料是預開好的淺藍、深藍、黑。工具有橡筋、麻繩、針線。例如把布拉起一角轉圈,用橡筋扎住,可以做成波點圈圈;麻繩針線製做線條。當然,早有結果不似預期的打算⋯⋯應該要扎得更緊才能避免染料滲進去吧。

紙雕燈

最花時間是紙雕的部分,5 層的紙樣起碼花了個多小時才雕好;其餘的組裝大抵是現成組件。想過以產品而言與淘寶上的成品相比,有何價值呢?如果把這作品分為『科技』、『手作』、『設計』幾部份; 科技大概相同,在消費者身上也大概沒有分別,相信內地的生產成本更低;手作可以被機械代替,但過程也是一種體驗;真正最重要的,我想是紙樣的設計才是價值所在吧?  而這紙雕燈下角的字句也很有意思:
「今天就改變你的人生,不要把賭注放在未來,現在就行動,不要耽擱。」-Simone de Beauvoir



2017年10月25日 星期三

[Math] Derivation of Kepler's Law (Part 2)

上一篇在繼續了解Kepler 1st law 的證明前,先要重溫一下微分方程和幾何,所以到圖書館找找書,借了本 《Applied Maths for Engineering》 重溫一下微積分和各種數學工具。

很多時看微積分的過程時,都會被一些看似是微分 (dx、dy) 的移項而感到混亂。記得聽說過雖然做起來不大分別,但概念仍是不同的。今次重溫的一個得著就是弄清楚這些基礎再出發,對閱讀別人的運算時有幫助。

對導數的正式定義是 $\frac{\text{d}f}{\text{d}t} = \lim_{h \rightarrow 0} \frac{f(t+h)-f(t)}{h}$。但可以換一個形象化的方式再看一次:有一條方程式 y=f(x),在一段很細小的範圍內,斜率是 $\frac{\delta y}{\delta x}$。這裡看成除法或分數仍然有效,因為分母仍不是零,仍未觸及「無窮小」這個所謂「消逝量的幽靈」。接下來當考慮 $\lim_{\delta x \rightarrow 0}$ 時,才開始寫成 $\frac{\text{d}y}{\text{d}x}$。當中的 $\frac{\text{d}}{\text{d}x}$ 是一個符號、函數、或運算子,作用於 $y=f(x)$。所以,從前學「Chain Rule」時可能聽過 $\frac{\text{d}y}{\text{d}x} = \frac{\text{d}y}{\text{d}u}\frac{\text{d}u}{\text{d}x}$ ,或者積分時 $\int \left(u^2 \frac{du}{dx}\right)dx$ 可以「像」分數相約般操作,但實際上,要抽半個符號出來,甚至還能運算,是不合理的。不過,如果回到取「無窮小」($\lim_{\delta x \rightarrow 0}$)之前的 $\frac{\delta y}{\delta x}=\frac{\delta y}{\delta u}\frac{\delta u}{\delta x}$ 或 $\sum_{\delta x} \left(u^2 \frac{\delta u}{\delta x}\right) \delta x$ ,就容易理解了。

還有一個例子是找出一個平面的重心時,可以用這樣的積分:$(x,y) = \left( \frac{\int xy \text{d}x}{\int y \text{d}x}, \frac{\int xy \text{d}y}{\int x \text{d}y} \right) $  也這個有助了解 $x$ 和 $\delta x$ 在積分中的分別。
(這個 $\int xy \text{d}x$ 稱為 "First Moment of Area about y-axis",統計上的 "First moment" $\int x f(x) \text{d}x$  這個名詞跟這個有關嗎?)


一些有用的總結:
 $y=f(x)$  $\frac{\text{d}y}{\text{d}x}$
 $ax^n$  $anx^{n-1}$
 $\sin ax$  $a \cos ax$
 $\cos ax$  $-a \sin ax$
 $\tan ax$  $a {\sec^2} ax$
 $e^{ax}$  $a e^{ax}$
 $\ln ax$  $\frac{1}{x}$
 $uv$  $u\frac{dv}{dx} + \frac{du}{dx} v$
 $f(u)$  $\frac{\text{d}y}{\text{d}u}\frac{\text{d}u}{\text{d}x}$
 $y=f(x)$  $\int y \text{d}x$
 $ax^n$  $\frac{a x^{n+1}}{n+1} + C$   $(n\neq -1)$
 $\sin ax$  $-\frac{1}{a}\cos ax + C$
 $\cos ax$  $\frac{1}{a}\sin ax + C$
 $\sec ax$  $\frac{1}{a}\tan ax + C$
 $e^{ax}$  $\frac{1}{a} e^{ax} + C$
 $\frac{1}{x}$  $\ln{x} + C$
  • $\delta A = y \delta x$  =>  $\int dA = \int y(x) dx $   或   $\int_{A_{x0}}^{A_{x1}} dA = \int_{x_0}^{x_1} y(x) dx$
  • $\sin^2 x =\frac{1}{2}(1-\cos 2x) $

Kepler 1st Law:行星循橢圓軌道圍繞焦點上的太陽運行

回到 Kepler 1st Law 的證明,今次更多需要用到微積分的技巧。溫習過後,從維基就可以找到看得明白的證明。以下開始前先再補充一下背後是什麼回事。當初人們相信地球的公轉軌道應該是完美的圓,但後來從觀察發現似乎是橢圓軌道,這怎樣解釋呢?天上的世界不應該是完美的嗎?......直到牛頓發現了描述物體運動和引力的數學方程式,我們就是要由這些工具導出橢圓形的公轉軌道,原來,數學邏輯和物理規律就是背後的自然原理。 

現在,我們想得到一條形容地球位置的方程式,而這結果中的方程式應該會符合橢圓方程。我隨著物理量的定義和物理關係的理解,手上有大堆砌圖板塊有關,部分是「質量」、「引力常數」等不會隨時間變化的量,變量部分例如地球在軌道上運行時的「位置」、「速度」、「加速度」。而其實,速度是位置隨時間的變化:加速度是速度隨時間的變化;透過形容這些位置衍生量(Derivatives)關係的方程,去找出形容位置的方程,就是求解「微分方程」所能做的事。

從動量 $L= \omega mr^2 = \frac{d \theta}{dt}mr^2$ 開始。設 u=1/r。

$\theta$ 的一次導數:
\begin{align}
\dot{\theta} = \frac{L}{mr^2} = \frac{Lu^2}{m} \\
\end{align}

根據 Chain Rule 和角動量 $L=\dot{\theta}mr^2$,$\frac{d}{dt}$ 的表達可以轉化為 $ \frac{d}{dt} = \frac{d\theta}{dt}\cdot\frac{d}{d\theta} = \frac{L}{mr^2}\cdot\frac{d}{d\theta}
= \frac{Lu^2}{m}\cdot\frac{d}{d\theta} $

r 的一次導數:
\begin{align}
\dot{r} = \frac{d}{dt}(r) &= \frac{d}{dt}(\frac{1}{u})  \\
&= \frac{Lu^2}{m}\cdot\frac{d}{d\theta}(\frac{1}{u})  \\
&= \frac{Lu^2}{m}\cdot-\frac{1}{u^2}\frac{d}{d\theta}(u)  \\
&= -\frac{L}{m}\cdot\frac{d}{d\theta}(u)  \\
\end{align}

r 的二次導數:
\begin{align}
\ddot{r} = {\frac{d}{dt}}^2(r) &= \frac{d}{dt}(\frac{d}{dt}(r))  \\
&= \frac{Lu^2}{m}\cdot\frac{d}{d\theta}(-\frac{L}{m}\frac{d}{d\theta}(u) )  \\
&= -\frac{L^2u^2}{m^2}\cdot\frac{d}{d\theta}(\frac{d}{d\theta}(u) )  \\
&= -\frac{L^2u^2}{m^2}\cdot{\frac{d}{d\theta}}^2(u)  \\
\end{align}

準備有關做成「引力」和「圓周運動」的向心加速度方程式
\begin{align}
a &= -\frac{GM}{r^2} + r{\omega}^2   \\
\ddot{r} - r \dot{\theta}^2 &= -\frac{GM}{r^2}  \\
\end{align}

把 $\theta$ 和 $r$ 的導數放進去,會整理出一條二階微分方程。
\begin{align}
-\frac{L^2u^2}{m^2}\cdot{\frac{d}{d\theta}}^2(u) - \frac{1}{u} \frac{L^2u^4}{m^2} &= -{GMu^2}  \\
{\frac{d}{d\theta}}^2(u) + u &= \frac{m^2}{L^2u^2}\cdot{GMu^2}  \\
{\frac{d}{d\theta}}^2(u) + u &= \frac{GMm^2}{L^2}  \\
\end{align}

$u$ 的一個特解是 $\frac{GMm^2}{L^2}$ 。以及相關的齊次微分方程 ${\frac{d}{d\theta}}^2(u) + u = 0$ 。這個形式的齊次微分方程的解是:$C\cos(\theta-\theta_0)$。

所以完整的一般解是:$u = \frac{GMm^2}{L^2} + C\cos(\theta-\theta_0)$

取 $\theta_0$ 令 $\cos(\theta-\theta_0)=-\cos\theta$;和設 $e = C \frac{L^2}{GMm^2}$,代入後得到 $ \Rightarrow u = \frac{GMm^2}{L^2} (1- e\cos{\theta})$,所以:
$$  r = \frac{L^2/GMm^2}{1-e\cos{\theta}}$$


對比圓錐曲線的方程式:$r = \frac{l}{1-e\cos{\theta}}$ ,對於 $0<e<1$ 會得到橢圓;$e=0$ 會得到正圓軌道;$e=1$ 會得到拋物線軌道;$e>1$ 會得到雙曲線軌道。可以留以到,圓形或拋物線都是一種特例(圓形應該更難得)。如果系統轉動的動量夠大的話,會沿雙曲線軌道接近後飛走;動量不夠大的話,就會被捕獲而循橢圓形軌道公轉。 這些留下來的天體,如太陽系的行星,吸引到開普勒綜合出他的第一定理。

2017年10月17日 星期二

[Math] Derivation of Kepler's Law (Part 1) 和 Briefing on Conic Section

上周提到在重溫《改變世界的17個方程式》。書的第 3、4 篇寫到有關微積分的 $\frac{\text{d}f}{\text{d}t} = \lim_{h \rightarrow 0} \frac{f(t+h)-f(t)}{h}$ 和萬有引力公式 $F=\frac{Gm_1m_2}{d^2}$ 。這書也寫到 Isaac Newton(牛頓) 和 Robert Hooke(虎克) 誰發現萬有引力的爭議,以及牛頓寫成的數學式驗證了 Johannes Kepler(開普勒)行星軌道定律,這個實際應用上的貢獻。開普勒從大量的觀察數據和自身的數學能力,綜合出有關行星軌道的三條定律,在實際運用時比傳統的圓形軌道計算更接近觀察,所謂「The truth is out there」,雖然當時未必明白定律背後的原理,但絕對是當時天文學上的偉大發現。這直到牛頓的出現,1687發表的《自然哲學的數學原理》(Mathematical Principles of Natural Philosophy),一口氣涵蓋了微積分的基本概念、物體運動三大定律、有關引力性質的方程式,從而數學化地推導出開普勒定律,等等⋯⋯ 看到這些,就想起中學數學老師說過他也曾嘗試推導開普勒定律,是用當時我們所學的程度就足夠,現在想來大概是想鼓勵我們嘗試吧。嗯... 我旦求明白就好了。

開普勒三大定律
一:行星循橢圓軌道圍繞焦點上的太陽運行;
二:行星運行時,行星與太陽的連線,在相同時間內所掃過的面積相同;
三:行星公轉的周期平方和橢圓軌道半長軸的立方成正比。 $T^2 \propto a^2$;


《自然哲學的數學原理》據 此連結 分為三篇,開始時先下了有關 質量(m)、動量(mv)、 慣性、力(F)、向心力、向心加速度的八個定義,提出三大運動定律,及其推論。第一篇討論與微積分有關的定理、萬有引力定律和行星運動;第二篇討論介質對物體運動的影響。第三篇討論萬有引力理論在天體運動上的應用。現在物理課學到 Newton's Laws 時,大概也沒有提到這是牛頓為了天體運動的研究。

2017年10月5日 星期四

[Math] 重溫 畢氏定理 及 對數運算公式( Also: Euler's Number e)

問題:試證明長方形 BPDE 的面積等於 $a^2$。
(提示:證明三角形 ABF 與 EBC 全等。)
今個月翻借了這本書《改變世界的17個方程式》來看,回顧一些重要的公式,開首第一篇就是直角三角形的畢氏定理 $a^2+b^2=c^2$。雖然知道畢氏定理的證明有很多很多,但慚愧一直沒有記得過怎樣證明畢氏定理。於是今次上網看看,原來經典的證明就已經很簡單,以 Euclid 在《Elements》中的證法為例,用到全等三角形、和三角形與矩形間的面積等化,只要幾步就可以完成。

2017年9月23日 星期六

屯門徑、虎峽谷、藍地水塘-探索屯門人的行後山路線

搬到屯門前就已經想著要探索屯門的行山路線,屯門在東、西方分別被青山和九徑山夾著,青山在幾年前到訪過,還是當年的起心肝在這裡寫的第一篇記錄,5 年間大家生活的變與不變,都有著令人感慨之處;近良景村的菠蘿山峽谷近年也是出了名,和朋友走過幾次;而另一邊的九徑山、屯門徑則一直未曾走過,新假期寫的藍地水塘和洪水坑水塘、劉克襄寫過的虎地坑和行者池,都在這邊。到了今個星期開始放長假,沒有離開香港,首日就走了趟屯門徑的第一段,以觀音廟的一段最有特色。沿路兩次見到往藍地水塘的分岔路,幾天後,就以藍地水塘作為目標。

先補充一下,如果只是想到水塘的話,輕鬆一點可以從景峰上山,經若夢園梯級進入;從藍地/富泰走今次的回頭路;或者車路到虎地燒烤場行一小段路到達。

路線 :何福堂夜中學-屯門徑第一段-虎峽谷-屯門徑第二段-虎地燒烤區-藍地水塘-福亨村路-藍地大街-藍地站
點去:屯門輕鐵杯渡站,望向山方向走下樓梯,在馬會旁過馬路到何福堂夜中學,旁邊有樓梯級經井頭上村上山。
需時:從輕鐵杯渡站到藍地灌溉水塘,大約2小時
地圖:https://drive.google.com/open?id=1PoDKvWheVq5qmmhi4WUcM1f5eYA&usp=sharing


2017年9月17日 星期日

[R] Tidyquant 的練習-利用200天平均線的測試

最初大約是3-4月,當時參加了一個 R User group的 Machine Learning Beginner 的課堂,接觸到 "tidyverse" library。Tidyverse" 中的 "dplyr" 在數據整理上十分方便,不過課堂中處理的都是一些非時間序列的數據,好奇在時間序列的股票方面有什麼好工具可以使用呢?那時候開始留意到有一個叫 "tidyquant" 的 R Library,就一直想找時候來學習一下。例如,好不好把之前的股價研究換成用 Tidyquant再試一次?終於,上星期在 Feedly 看到一篇評論信報某專欄的blog post,就正好用這研究來作為練習,有興趣的話建議先看以下兩篇原文:

分析數據還是以數據「作」分析呢?
https://htmichael.blogspot.hk/2017/08/blog-post.html

【EJFQ信析】港股未脫超買 不離三種下場
http://www2.hkej.com/instantnews/market/article/1636469


2017年8月26日 星期六

小型四驅車改造工作坊-RC Mini 4WD-繼續玩 手機的藍牙遙控+3D打印

周日參加了一個由 Loftwork, FabCafe 在青年廣場舉辦的遙控小型四驅車工作坊,將從前孩童時期玩的模型四驅車底板改造成手機遙控的四輪車。

這組遙控車的轉向原理,與去年淘寶購入玩的自組Arduino 小車不同 (參考上年的這篇:<Android + Arduino 小車的手機藍牙遙控計劃> )。今次是由一個 DC馬達 驅動後輪,和一個 Servo馬達 控制前輪左右轉動的方向。(而之前的Arduino小車是用左右兩個DC摩打,分別控制左右兩邊前輪的轉速);同樣透過藍牙連接後可以用手機的Apps控制。整套電子和手機部份都已經有現成的印刷電路板(PCB) 和App Store上的Apps可以使用,

前輪和之間的白色部份,就是打印出來作轉向之用的,3D Print的檔案公開在網上 https://www.thingiverse.com/thing:2230768 。雖然之前都聽過3D 打印成品都比較粗糙,不過多數所見都是已處理好的成品,今次就接觸到未磨好的列印件,所以工作坊當日就有不少時間是用來研磨這些3D打印出來的特製膠件,有些螺絲孔在自己回家還是用電鑽把它再開通開通,Servo與連接杆的接駁位置最好也加個扣穩固一下,前輪才不會亂擺。另外的一些金屬配件就是各種螺絲、墊片等,除此以外就是小型四驅車 TAYIMA - VS Chassis 本身的底盤組裝了。



在後輪馬達上的電路板可見以下這組字,找到那應該就是它的藍牙模組 BLE-113,作用好比之前所用的HC-06藍芽模組,用作手機的藍牙遙控。
   Model: BLE113    
IC: 5128A - BLE118
   www.silabs.com    
Bluegiga BLE113:  https://www.silabs.com/products/wireless/bluetooth/bluetooth-low-energy-modules/ble113-bluetooth-smart-module


2017年8月17日 星期四

Data Science UnHackathon - 加密貨幣,開放數據

這天去了一個以 Data Science 為題的團體所舉辦的 UnHackathon Meetup,https://datasciencehongkong.com/2017/08/22/unhackathon-at-the-hive/。半日時間加上Meetup/性質算比較小規模,不過都有幾組實際地寫出一些Code和有可以展示的結果,至於我在自由的環境下,就只做了花生組中的一員,哈哈~今日也留意到一個香港的hackathon現象,就是香港人還是花生友多,外國人和學生才比較認真。不過另外也聽聞今次的花生比例還己經算低了,今日的 5:1 可能出面己經是1:5。而相比之前的一些IT event,這種Data Science 的活動有個好處,就是R 和 Python 明顯是大家的共同語言,之前那些更著重實際去寫一個應用,就偏向JS, Java, Python,Data Science的角色很少,之前講起R,在開發的導向中真的找不到什麼存在價值。(其實,R就是統計起家的吧,而在這場數據科學熱之中的Machine Learning都去到很多人無需要留意前設或者原理,的純IT Coding知識......)

傾計之前都有留意一些有興趣的題目,首先是一個有關虛擬的加密貨幣Cryptocurrency投資策略,只是我未了解這些虛擬貨幣的交易,例如周初才知道比特幣升穿4000USD,而電視上一個市場解讀是連繫到特朗普作風下的地緣風險,我就未有理解過的,到本周中又繼續上到4400USD了。在策略方面的取向也不同,一向覺得 投資市場內小投資者做短期投機相對風險和心力之下,利潤空間不大;在單一貨幣的Time Series中研究也未必有多大策略的空間。不過這次才體會到,原來至今已發展到市場上幾百種的加密貨幣,從平日多見到 Bitcoin 比特幣 (佔市值50.7%)、 Ethereum 以太幣 (市值佔19.9%),到俗稱Alt-Coins的大量後起的仿效品;也有眾多的交易所同樣進行虛擬貨幣的交易。所以,一些考慮的方向就是這種多貨幣、多交易所的亂象中套利。不過這就是講求Product Knowledge 多於 Statistics 的時候。

至 2017-08-17,https://coinmarketcap.com/ 上超過800種加密貨幣的市值合共 USD$142,970,123,566。需要數據的話,也有一個以JSON格式提供資訊的API:https://coinmarketcap-nexuist.rhcloud.com/


交易所方面比較多見到提及的就有外國的Coinbase、Poloniex;中國的BTCC、OKCoin、CHBTC 等;香港在各處實體的比特幣ATM,到ANX、Gatecoin;台灣也有所涉獵:http://blockcast.it/2017/05/24/introduction-of-local-and-global-cryptocurrency-exchanges/


另一個有興趣的題目是有關Web Data Extraction,提出的人也是今次的主辦者。在開放數據中,香港在開放數據方面的落後已經是經常被咎病了吧,從資料類別、原始程度、開放程度、到檔案格式等問題,不過當日就只是一個網頁資訊擷取的主意,也未見其他人勾起興趣,所以未見有人發展下去。但現在事後想來,如果做到一個像 https://webb-site.com/ 那樣眾多資訊(期望是自動更新),而介面外貌比較好的網站,應該也會是很好的經驗。另外,或許除了不斷『說』開放數據的意義和重要性之外,如果有人專門以開放數據來做研究分析,或許可以透過實際應用的結果,去勾起香港人/政府部門 對這方面的注意。

最後,在聽了當日成果的發佈後,原來自己在這個Blog嘗試過的項目,也有其他人有興趣做類似的東西,也許這個門外漢的興趣都有點意思。這個Blog的紀錄也起碼讓自己儲起生活中嘗試過的結果和方法,有需要時也可以找回這些Source code來加快實作。最後,花生友閒聊之中見識到一間做 保險科技 平台的Startup人,問到一些從前台介面到後台運算的語言選擇,有點欣慰自己早前所嘗試學習的 JS 也許是正確選擇;與Java等相比,Python也許不應放下。

忙完上幾個月的家居事宜,是時候繼續記待記的:有機蔬果、 Tidyquant、ML4B #4、Gym、PMP, etc..... ^_^



2017年8月11日 星期五

首次置業做「宅男」-買賣與裝修的心血記錄

這幾個月都有為新屋作準備。一直期望自己可以搬出來自住,留意了幾年的物業租售後終於初嘗置業,從去年十月看中決定購買這個單位,但因為放租中而要等待租約完結後才交吉,所以有一段長成交期。十一月簽了正式買賣合約,之後做銀行按揭,到今年二月成交。之後才真正睇樓和找裝修報價,二十多年樓齡的單位一直未有太大改動,本著自住的角度,所以預算來個徹底的大翻新。

今次預了需要大裝的。裝修方面,約裝修公司度尺報價,不妨多問幾間,除了價錢之外,也可以從中更了解自己想裝修的範圍,和多參考行內人的意見,今次之後就更明白應該儘早多找報價比較。最後選了一間朋友的朋友的公司,在不熟悉的裝修上,雖然價錢不是最便宜,裝修時間感覺也放長了,但考慮到最少質素應該比較公道,而不會是大伏吧?

自從裝修完成,便經常到屯門作準備,新界東-新界西-九龍,之間的往返需時,好像空閒時間都這樣花光了,漸漸明白應該刻意減少這類時間消耗,儘量周未一天和一個平日夜晚就算了。買好的東西當然集中起來送貨,但自己買的雜物也是應該這樣。也不要太多考慮遲疑,可能少量價錢的分別,也比不上因而遲上一星期到貨,而影響入伙的時間成本。

現在,期待儘快入伙。

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月時跟人到大埔滘夜探青蛙時的相,一次過整理這些動植物的相。

大埔滘

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