2018年2月25日 星期日

嚤囉山-屯門寮屋區的社區導賞

這已經是一月初參加的一個社區導賞團。屯門舊墟嚤囉山位於后角天后廟的後面。因為在附近工厦租了迷你倉的緣故,經常會經過連接天后廟外和屯門公園的天橋,只是之前一直未曾走進廟前的廣場空地,更不知有後山的這個村屋/寮屋區。現在一般多以天后廟稱呼這邊,天后廟前的天后廟廣場是每年屯門區舉辦年宵市場的地方,今年也去了,地方不大,規模也不算大。這個是從前的屯門舊墟,現今平日已經沒有墟市或市場了,它的一部份在新市鎮發展時納入工廠區。部份舊墟的村民搬到新墟旁立了一個較小的舊墟村,另一部份山上的寮屋區就和小山一起保留了下來,「鄉村範圍圖」中是為 屯門鄉事委員會下的「屯門舊墟」也是一村分為兩地,這邊是是較大面積的嚤囉山村,而搬過去的舊墟村就是新墟旁的那邊。

1976年新市鎮發展時的屯門,
(圖中間)嚤囉山就在河道出海口的小山。
Wiki 上 1866年的《新安縣全圖》- 填海前寬闊的青山灣,
"清山"之下的"田門"出海口,可見口角的形狀和的小山

2018年2月4日 星期日

[Web] Digital Ocean升級 和 部署到One-click app時修改的 Nginx、Gunicorn 設定。

Digital Ocean 升級

之前的一篇記錄過如何在 Digital Ocean 建立一個雲端主機後,不久的某天早上在查看電郵時,留意到 Digital Ocean 為它的服務升級了。以最低價格每月5美元一個標準主機的Droplet 為例,就有以下更新:從 512MB -> 1GB RAM、 20GB -> 25GB SSD。

但如電郵標題已經講明,這是[Action Required]。這個自製網站的規模不怕暫時離線,也未看到有復原到小容量,或預留那 5GB Disk的需要,所以也沒理由不放心進行 Disk, CPU and RAM 的升級。以 Control Panel 的方式升級也非常容易。



參考:https://www.digitalocean.com/community/tutorials/how-to-resize-your-droplets-on-digitalocean

 

2018年1月19日 星期五

[PowerShell] [Office] 用 Regular Expression 轉換日期格式 (US/GB)

前日上班的車程中,想起同事偶爾會碰到日期格式(美式/英式)的問題。雖然可以在打開Excel,為資料分列(Text to Columns)時做處理,去指定每列資料讀取時的格式。但想到要指示得人人明白卻不太易,能否有個只需簡單一按的小工具,可以做美式/英式間的格式轉換呢?

Office 中的問題,PowerShell 解決。也學到一些Regular Expression(正則表達式)的運用:
$inputfile = "test.csv"

(Get-Content $inputfile) | 
Foreach-Object {$_ -replace "([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})", '$2/$1/$3'} | 
Set-Content '_output.txt'


部份 Regular Expression 的解釋:
字元/符號 範例 說明 成立例子
一般字元 / 含字母 “/” 的字串 25/12
^ ^A 比對字串開始位置AB
$ C$ 比對字串結束位置 ABC
\e\^2避開特殊字元 e^2
[......] B[aeiou]t 比對 [......] 內的任意字元 Bit
Bot

[0-9] [0-9] 比對0到9的任意字元,另有[a-z]和[A-Z]等用法 9
{n} B{2} 比對{n}前的字元n次,n必為正整數 BB
{n,m} [0-9]{2,4} 比對{n,m}前的字元至少n次但最多m次,n,m均為正整數 01
2389

(x) ([0-9]+)/([0-9]+) 比對 x 並將符合的部分存入一個變數 可比對 “123/45” 中的 “123” 、 “45”, 並將這個比對得到的字串設定至變數 \$1 和 \$2







加入給使用者的簡介部份:
$rePattern = '([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})'
Write-Host "This will do date-format conversion for your AA/BB/CCCC into BB/AA/CCCC,"
Write-Host "Output as '_converted.txt'. Enjoy."
Write-Host ""
$fileRaw = Read-Host -Prompt 'Input your filename (same folder, ever with file extension): '
(Get-Content $fileRaw) | Foreach-Object {$_ -replace $rePattern, '$2/$1/$3'} | Set-Content '_convert.txt'


對這類辦公室日常出現的問題,有時太重技術層面去應對了就算的話,也明白就像是諸侯舞庶人之劍的感覺。 而且,這個日期格式的問題本來已有專案去處理和做了改變,好處是應該可以更完善的解決問題。但世上總有意外或突然的需要,再啟動一個項目的形式,過程往往會快費較長時間,而小修小補就是quick-and-dirty。

再者,參考使用者自己也會用的方法,就好像社區提案的概念,這些方案可能更切合用家的需要。如果能讓人人都有能力和空餘可以做些小創新、小改變,應該對人對己都是好處吧。

2018年1月16日 星期二

[Web] 為網站準備的 雲端主機 (Digital Ocean) 和 域名註冊 (Hosting speed)

按此推薦網址註冊,可獲得10美元Credit的優惠【 https://m.do.co/c/586afef63cee 】。

為老闆娘做網頁,自從寫好基本的網頁框架,就把它放下了一段日子,十二月尾至一月初忙著做線下的工作,為訂單起貨。現在網頁仍欠一些產品照和字型配色等的外觀設計,還有要等待和店主討論希望如何展示定價和包裝等等。在這個等待的時候,為了準備之後的正式部署上線,12月中開始租了一個Digital Ocean的雲端主機作虛擬專用伺服器(VPS) 用來寄存和運行網站;1月初還在 Hostingspeed.net 買了一個 .hk 的域名。

Digital Ocean

當開發階段有了雛型時,就向身邊的朋友示範和搜集意見,"上線"這部分就推介了DigitalOcean (D.O.) 這個VPS主機商。作為個人運作的網站,還要是對寫網頁仍在學習中的階段,它的好處是入門門檻相對很低。DO 有不同的租用計劃選擇,最便宜的只需每月$5美金,(新用戶用朋友的邀請連結去註冊,有$10的credit,如上),可以分到一個在新加坡的伺服器, 512mb記憶體,20GB硬碟空間,我選擇 1-click app的版本,預設好 Ubuntu 16.04, Python 2.7.12, Django 1.8.7。


按邀請 [連結] 建立帳戶:

2018年1月7日 星期日

老虎頭 - 從「情侶放閃」變成「挑戰情侶」路線

路線 :愉景灣-寶峰徑-涼亭瞭望台-老虎頭-山頂瞭望台-石堆-亞婆塱-白芒-東涌
點去:港鐵東涌站 D 出口,乘愉景灣巴士 DB01R 往海燕徑15號 ,登對面梯級往寶峰徑盡頭
需時:從愉景灣到東涌,大約 5 小時
地圖:https://drive.google.com/open?id=1-bHko-mKUSBE_A_cM0H4tpoFnWWt9IhD&usp=sharing



這個星期在電視港台31台,看到一集「聖誕特備情侶放閃一日遊」介紹老虎頭郊遊徑 。近年網上也見多了那張從山上望向愉景灣的相片,山咀處的山勢伴隨小徑和荒草,呈現出一個老虎頭後頸脊的形態。2017年未周日的行山Group就選取了這條少行的山嶺路去走一走。
<自在8點半(旅遊) 第十六集>:  http://www.rthk.hk/tv/dtt31/programme/830magazine/episode/469877

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大概在專業眼中會看出奇怪,用的程式也雜亂)。在營運部門的工作中有時接到奇奇怪怪的問題和要求,應不應該做、如何做,都是要討論的問題。其中一個就算要做也是相關的技術部門比我們更適合處理的情況,就是一些批量處理資料庫數據的情況,最近就有個類似的情況。也許我應該也要多站在後面抱頭、蒙眼、尖叫⋯⋯