前五篇露水

第一次登上嘉道理農場的上山區,有美景,有暖氣,也有猴子
2014 年 12 月 17 日 (星期三) 20:27

近年我都多次到嘉道理農場閒遊(連結),今天見放假,就乘農場專車到處遊覽(假日多數沒有剩下座位),第一次走到園區如此高處。由於在車程中每個景點只逗留十至十五分鐘,算是走馬看花吧。這次沒有帶相機,唯有用手機拍攝,還好冬天幾乎沒有花開吧。

等車的時候去探訪赤麂:
IMG_7776

車票:
IMG_7782

第一站,蕨類植物小徑,聽說是各地移植過來的:
IMG_7785
IMG_7795
IMG_7797
IMG_7798

第二站,蘭花園,司機都說現在不是花期,所以都幾乎不見有花:
IMG_7799
IMG_7800
IMG_7802

終於見到蘭花:
IMG_7803
IMG_7804

整天都是八度十度:
IMG_7805

園林又幾雅致:
IMG_7809
IMG_7810
IMG_7811
IMG_7812
IMG_7814
IMG_7816
IMG_7822
IMG_7823
IMG_7824
IMG_7836
IMG_7837
IMG_7839

谷中望出去,很美:
IMG_7830

這就是帶我們到處去的專車:
IMG_7833

第三站,嘉道理兄弟紀念亭,是農場的最高處,約海拔五百八十米:
IMG_7842

很美的雲:
IMG_7845

拱門:
IMG_7849

望向突出的觀音山:
IMG_7851

大刀屻和雞公嶺:
IMG_7853

大刀屻:
IMG_7854

嘉道理兄弟紀念亭,由於嘉道理兄弟是猶太人,所以亭頂有大衛之星:
IMG_7858
IMG_7861

望向八鄉、石崗、錦田一帶,遠處可見錦田河、天水圍和后海灣:
IMG_7864
IMG_7877
IMG_7865
IMG_7871

可見大帽山的茶圃梯田遺跡:
IMG_7875
IMG_7876

第四站,觀音山,我家能望見這座山,從小就想登上,今天總算達成了:
IMG_7884

望向大帽山頂,不算太遠吧:
IMG_7886
IMG_7895

林村谷和康樂園:
IMG_7890

對面是剛才到過的嘉道理兄弟紀念亭,也就是大帽山山腰的位置:
IMG_7898
IMG_7900

完全想不到這裡會有猴子,我一直以為金山、城門水塘、大埔滘、中文大學周圍才有,原來嘉道理農場的觀音山上也有:
IMG_7901
IMG_7902

觀音像的意義,竟也拉上耶穌和猶太意義:
IMG_7904
IMG_7908
IMG_7906

熱氣洞,真的有暖氣滲出來啊:
IMG_7910

看不透,聞說是連接了地殼深處的熱源:
IMG_7929
IMG_7911
IMG_7918

同車的「團友」:
IMG_7920

石崗機場的跑道,另外是八鄉、石崗、錦田一帶,隱約見到對面的深圳市:
IMG_7933
IMG_7935
IMG_7936

林村、大埔、吐露港和八仙嶺,亦可見遠方的梧桐山:
IMG_7945
IMG_7952

望向農場的下山區,後面是大刀屻:
IMG_7950
IMG_7956

海拔 1812 尺,即是五百五十多米:
IMG_7959
IMG_7981
IMG_7985
IMG_7989

第五站,蝴蝶園,寒冷的天氣明顯就沒有蝴蝶啦:
IMG_7991
IMG_8013
IMG_8015

完成車程,我繼續在下車區閒遊:
IMG_8016

聽溪水聲,很舒暢:
IMG_8018

算清澈了:
IMG_8023

冬天荷花都枯了:
IMG_8026
IMG_8027
IMG_8028
IMG_8030
IMG_8033

小瀑布:
IMG_8034
IMG_8036

被趕入室內的豬:
IMG_8042
IMG_8043

不安的野豬:
IMG_8047
IMG_8050

多彩多姿的田:
IMG_8055

被我嚇到企上去的麻雀:
IMG_8067
IMG_8069
IMG_8071
IMG_8073
IMG_8075
IMG_8077
IMG_8083
IMG_8084
IMG_8089
IMG_8091
IMG_8100

參考資料:
嘉道理農場暨植物園

回應 (0)
用 Python 下載科大 LMES 檔案
2014 年 12 月 12 日 (星期五) 14:38

由於我在香港科技大學讀了好些課程,之前都未從 LMES 下載那些講義、筆記和檔案。現在發現要下載這麼多內容實在不容易。

故此我寫了一個 Python 小程式,好讓我可以快一點把它們都下載回來(注意,本人不保證程式的正確性,及只在 Linux 上測試)。

先複製下面的程式碼,儲存成一個 .py 檔案:
from HTMLParser import HTMLParser
import os
import urllib2

#config
urlToScan = 'http://lmes2.ust.hk/portal/tool/xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx'
cookieValue = 'xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx.lmes5.ust.hk'

class MyHTMLParser(HTMLParser):
    started = False
    currentFile = {}
    currentFolder = {}
    currentFolderDepth = 0
    isFolder = False
    def __init__(self):
        HTMLParser.__init__(self)
    def handle_starttag(self, tag, attrs):
        if tag == "td":
            if len(attrs) == 0:
                pass
            else:
                for(variable, value) in attrs:
                    if variable == "style" and value.startswith("text-indent:"):
                        currentFolderDepthStr = value.split("text-indent:")[1]
                        currentFolderDepthStr = currentFolderDepthStr.split("em")[0]
                        self.currentFolderDepth = int(currentFolderDepthStr)
        elif tag == "a":
            if len(attrs) == 0:
                pass
            else:
                haveTitle = False
                for (variable, value)  in attrs:
                    if variable == 'title':
                        haveTitle = True
                if haveTitle == True:
                    for (variable, value)  in attrs:
                        if variable == "href" and value.startswith("http") and not value.endswith("URL"):
                            self.currentFile["file"] = value
                            self.started = True
                            break
                        elif variable == "title" and value == "Folder":
                            self.started = True
                            self.isFolder = True
                            break
                        
    def handle_endtag(self, tag):
        if self.started and tag == "a":
            
            if self.isFolder:
                #print self.currentFolderDepth
                'ok'
            else:
                # concat
                folderPath = "lect_notes/"
                for i in range(0, self.currentFolderDepth):
                    folderPath =  folderPath + self.currentFolder[i]["name"] + "/"
                # save the file
                try:
                    os.makedirs(folderPath)
                except:
                    'path exists, nothing to handle'
                filePath = folderPath + self.currentFile["file"].split("/")[-1].replace("%20", " ")
                print "Downloading: " + filePath
                opener = urllib2.build_opener()
                opener.addheaders.append(('Cookie', 'JSESSIONID=' + cookieValue))
                f = opener.open(self.currentFile["file"])
                fileContent = f.read()
                f.close()
                with open(filePath, 'w') as fileToSave:
                    fileToSave.write(fileContent)
                print "Saved: " + filePath
                self.currentFile = {}
            self.started = False
            self.isFolder = False
            

    def handle_data(self, data):
        if self.started:
            if data.strip() != '':
                if self.isFolder:
                    tempFolderList = {}
                    for i in range (0, self.currentFolderDepth):
                        if i in self.currentFolder:
                            tempFolderList[i] = self.currentFolder[i]
                    tempFolderList[self.currentFolderDepth] = {}
                    tempFolderList[self.currentFolderDepth]["name"] = data.strip()
                    self.currentFolder = tempFolderList
                else:
                    self.currentFile["name"] = data.strip()

print "Starting"


opener = urllib2.build_opener()
opener.addheaders.append(('Cookie', 'JSESSIONID=' + cookieValue))

f = opener.open(urlToScan)
urlContent = f.read()
f.close()
print "Parsing page"
hp = MyHTMLParser()
hp.feed(urlContent)
print "Finished"

用自己的帳戶登入 LMES。登入後用瀏覽器的 Inspector,找出 HTTP Request 的 SESSION ID,這裡是 JSESSIONID,由 = 後複製到 ; 前,取代程式中 cookieValue 的內容:
lmes4

再點選所需科目:
lmes1

點選 Course Content,利用新 Tab 的方式點擊綠色圈內的連結:
lmes2

先按綠色圈內的掣以打開全部資料夾,再刪除網址上的 ?panel=Main,進入該網址,確認資料夾都是打開的,複製那網址,取代 urlToScan 的值
lmes3

最後以 Python 執行,檔案會儲存在執行資料夾內的 lect_notes 內。要下載其他科,就是修改 urlToScan 再執行就行了:
lmes5

回應 (0)
一堆連結
2014 年 12 月 11 日 (星期四) 21:41

Java Doesn’t Suck – You’re Just Using it Wrong
Which Programming Language Pays the Best? Probably Python
Oracle宣布更多Java 9新特性
Google釋出新版reCAPTCHA機制,只要點「我不是機器人」!
國內IT發展有前景 本港專才北上做管理層有得諗
养孩子太贵了
「江南 Style」播放次數爆表突破 21 億次,YouTube 緊急更新播放計數器
任性的非洲国王用Skype远程统治王国
英国学生意外收到价值千镑的亚马逊货物,他决定将货物卖回给亚马逊
偽資料庫叢集設計
飞机上乘客突然死亡怎么办?
A brief history of web design for designers
要瀏覽器不要送出 Referrer 的 Referrer Policy
Introducing .NET Core
Not everyone is excited about Google’s new captchas
[AMAZING SCIENCE’S] SIMPLE ELECTRIC TRAIN
HTTPS的“S”的代价
Hebocon:低科技笨蛋机器人大赛
C 语言中你想不到的一些问题
實屬巧合?《星際啟示錄》部份劇情與《多啦 A 夢》電影極度相似
Cartographic Design Principles: Simplicity
Which City Has The Most Unpredictable Weather?
究竟有多少男人比他的伴侣矮
順時鐘逆時鐘?南北半球的馬桶水流真的不一樣?
「自閉症」到底是什麼?
神級 Coder 絕不犯的錯誤:為炫耀編出超短碼
介绍.NET Core
看看蘋果各職位年薪跟你差多少,最基層員工年薪4萬4千美元起跳
养只萌萌的天气瓶 -- 教你如何制作天气瓶
分析成龍喜劇動作片與別不同的 9 個原因
紐約時報數字顯示:人生只要到90分,真的就可以了
創業 CEO / 現代領導者必備的社群智慧
在平壤教英文写作
互联网的一面是暴政
智能家居四大派:忘掉该死的入口思维
[感受心跳] 人工心脏会影响人的精神行为吗
大數據年代 你的人生被計算
怎样保存纸质书籍
內媒看香港創業者
谷歌地图准确性背后庞大神秘的运营:算法加手工纠正
101個拍攝家庭照的方式與技巧
落葉太煩人,荷蘭鐵路局考慮為列車加裝雷射系統應對
random in the wild
Facebook 因為 Connection Pool 選擇機制,加上系統的複雜性而導致的慘案...
贊助 Kickstarter?請先停看聽!
去死吧,精益创业
哪里有光,哪里就有网,Li-Fi 离颠覆 Wi-Fi 还有多远?
Hagupit remembered
人們不支持「開放地圖」,卻願意免費幫助 Google 地圖盈利?
剪頭髮、彈吉他、打電動,歡迎光臨 Facebook 矽谷總部!

回應 (0)
短遊中文大學內的氣候變化博物館和建築學院
2014 年 12 月 11 日 (星期四) 19:25

氣候變化博物館:
IMG_7683
IMG_7642
IMG_7644
北極的生態環境:
IMG_7641
IMG_7648
南極今天的天氣:
IMG_7652
香港的都市化問題:
IMG_7671
IMG_7680

建築學院,一座很舒服的建築:
IMG_7684
IMG_7688
IMG_7718
IMG_7689
IMG_7692
圖書館望出去:
IMG_7695
IMG_7699
IMG_7700
天台菜田:
IMG_7701
IMG_7702
IMG_7704
IMG_7710
不知道什麼實驗:
IMG_7712
IMG_7715

回應 (0)
試用 scikit-learn 做分類
2014 年 12 月 10 日 (星期三) 23:16

上課學到 Weka 學習機器學習/資料挖掘,易用,但用法其實有點奇怪,也許是因為我未用慣吧。回家我就試用 Python scikit-learn 做類似的事,也不錯,最煩的就是要自己編寫程式碼。

下面的例子是我利用 csv 格式的氣象數據作訓練,利用溫濕度和風向等數據,用決策樹判斷低層雲的雲量。這不是好的例子,但卻有足夠數量的數據做實驗。

scikit-learn

回應 (0)

前五篇露水
© 2002-2014 Harold Chan. 版權及聲明
counter