about 4 years ago

如題,這邊不再更新,將改在 Openshift 架設(使用 Ghost)

2016/04/15 更新:OpenShift 已棄用,改用 Hexo,網址不變

新的 Blog

 
over 4 years ago

這陣子常常要爬一些有的沒有的網站,有些網站老舊或是架構凌亂,每爬一個網頁就要寫一個專屬的爬蟲 code。但寫久之後多少還是有規律在(找到元素 -> 抓取資料 -> 加工處理),憑藉著多樣且強大的 CSS3 跟 jquery 的 selector,簡化程式就更加容易,也更能找出規律所在,之後便規劃成只要寫一個專屬的 json 設定檔,剩下的就讓程式自己去跑就好了。

Github

變數設定有點雜,README 還在想怎麼寫比較清楚...

Demo

執行 kickstarter_popular.jssteam_Dota2.js 看抓出來的結果

Runnable.com 這網站挺不錯,省去自己架 Demo 網站的功夫,缺點是挺不穩的,如果網頁閒置太久就會有莫名其妙的錯誤出現。


話說在 publish 幾分鐘後,就看到 Kimono 這個東西,看完 介紹 1介紹 2 後覺得...

_(┐「ε:)_... 這種被巴臉的感覺是什麼...

 
almost 5 years ago

其實這問題已經頗久了,只是很少會點 magnet 連結,以為是 chrome 的問題,今天剛好想到來找找解決方法。

先將 manget 連結指定給自己在用的 BT 軟體,這裡以 qBittorrent 為例。
xdg-settings set default-url-scheme-handler magnet qBittorrent.desktop

檢查設定是否正確
xdg-settings get default-url-scheme-handler magnet

正確會回傳回傳
qBittorrent.desktop

接下來用指令打開試試
xdg-open magnet:foo

報錯了

QWidget: Cannot create a QWidget when no GUI is being used
/usr/bin/xdg-open: line 513: 3707 已經終止 kde-open --noninteractive "$1"

結果這是 KDE 的一個 Bug
用編輯器 (須 root 權限) 打開 /usr/bin/xdg-open
找到這行
kde-open --noninteractive "$1"

--noninteractive 拿掉變成 kde-open "$1",存檔
再用 xdg-open 打開一次試試

成功,chrome 點擊也 OK,收工!


參考來源
 
almost 5 years ago

Kraken.js 不知什麼時候突然跳了 1.0 版,改包裝 express 4.0 版,寫法跟架構也有極大改變,搞 0.7 時就夠蛋疼了,沒想到 1.0 更折騰...

1. Socket.io 怎麼塞?來源

Kraken.js 0.7 的時候是要等他把 require('express') 的 app 處理完後才丟給你,1.0 則變成自己要 require,但他依然會幫你處理好設定的部份,所以只要比照 express 包 socket.io 的方式就好。


2. Formidable 的使用。

跟 0.7 的時候一樣沒有範例,所以還是得翻原始碼,在 config.json 的 middleware 底下加入:


3. 用 connect-redis 當作 session 來源

由於改包 express 4 的關係,connect-redis 就沒有版本限制的問題了
一樣在 config.json 的 middleware 底下加入:

再創一個 js 檔給 json 的 module 載入


4. passport 的 google auth 登入 來源

code 大致上與範例差不多,主要是改 middleware:after:session 裡面的東西

connect-flash 還是需要,不過跟官網範例一樣直接寫在 config.json 就好,無須寫在 app 裡。
最後再自己設定 router 的內容就好


感想

雖說版本號不能代表一切,但我還是覺得這版應該要叫 0.9 而不是 1.0,

就像第一點講的包裝方式不同,1.0 的編寫方式也完全不同,但很多地方還是看不懂,比如 middleware:after:session 到底是啥鬼?0.7 版的 beforeRoute 不好嗎?

至於 config.json 怎麼添加東西,個人建議是去看原始碼裡 config 資料夾裡的 json 檔比較快

 
almost 5 years ago

週末稍微看了一下 Vert.x,邊看 Scala manual 邊弄,結果裡面連簡單的例子都跑不起來,弄老半天又跟 Github 的 example 對老半天後感覺...manual 裡的例子根本不用管...,直接看 Github 的 example 還比較快...浪費時間...

為了確定到底是哪邊的問題,還弄了一下 Java 版,不過還是不喜歡寫 Java...

看來對 Vert.x 的 Scala Binding 還是再觀望一下比較好...

 
about 5 years ago

以 kickstarter 首頁為例,抓取 popular 欄位的專案。

1. request + cheerio 參考來源


2. phantom + cheerio 參考來源

註:要先安裝 phantomjs(非 npm 套件)


3. phantomjs 參考來源

註:此為直接用 phantomjs 直接執行,與 node 無關


抓取結果 (phantomjs)


相關連結
 
about 5 years ago
作者:傑瑞米.里夫金 - Jeremy Rifkin
譯者:張體偉、孫豫寧
出版社:經濟新潮社
出版日期:2013/05/02
圖片及資料來源:博客來

跟大自然要的東西,總有一天會被連本帶利的要回來。

人類發展的歷史過程,無一不是在不斷的跟大自然跟地球要資源卻很少有所返還,包含死後的屍體,不是關在處理過的大木箱中,就是燒成灰再放進牢牢封起的罈子裡。

撇開這些不說,人類發展與大自然最相關的莫過於能源獲取,從鑽木取火到發電廠,從食衣住行到戰爭,都是建立在能源穩定供應的狀態下才能成立。從比較普遍的火力發電開始大量使用石油與煤礦,最後 的出現顛覆了這個世界。

不過 雖然迷人,但目前真正能把能源拿來直接使用的情形,大概還是只有核彈頭了,拿來發電還是受限於用熱能燒開水,後續的核廢料處理又是更可怕的問題,再加上人們容易對壞事放大,想要讓人相信核電很安全不會爆炸幾乎是不可能的,更別說過度索取鈾礦也可能會引發其他國家不必要的猜測,比如對核電過度需求的日本。

我反核,不為其他,光是核廢料這點,就能讓我打從心底的討厭核能,但我不知道在將來核一核二一旦退場,之後再起的能源爭議該怎麼處理?要讓核一核二繼續撐,潛在風險會比運行核四低?我願意相信核電廠的高標準安全措施,即使他是台拼裝車我也寧願去相信 (不知道還有多少人知道當初是反這件事?),畢竟這不是人命關天四個字可以描述的,但如果那些官員真的有蠢到連這點安全考量都沒,那就炸吧。再說,如果核四停了,來個打著高安全、非拼裝車的核五,大家會不會接受?更基本的問題:到那時有錢蓋嗎?核一二三 + 火力發電撐得到那時候嗎?到那時別說研擬替代方案,連生活都是大有問題。

打著能源旗號的貪以及以環境環保為名的自私,哪個才是正確的?

替代方案總是有,但走在世界領頭這件事沒幾個有那個膽,一直以來,政府對「環保」、「綠色能源」等措施,一直讓我覺得他們想表達的是「我們有做了,你們看一下」的心態,不過風力、太陽能等「陸地上」的能源獲取方式,都需要廣大的土地面積以及標準的「靠天吃飯」,對台灣來說,這是悲劇的事實。但海洋資源的利用,試過了嗎?

我想,要讓他們知道第三次工業革命正在進行,了解環境能源最該做的是什麼,知道我們到底有多落後,在建議他們看這本書前,先將這本書狠狠地往他們的臉上甩過去才對。

希望這是政府最後一次的任性。

有點扯遠了。

舉幾個本書的要點

- 西方國家的進展

相對於美國以世界警察自居,對石油的熱愛不遺餘力,把民主放在飛彈裡射出去。歐洲很多國家反而在積極探討人類發展、環境能源的最大利用與建設。

但即使如此,也不是所有歐洲國家都如此積極,加上能源獲取方式與以往將會有重大差異,發展順利與否還是在政府官員的共識與積極程度上,反倒是其中的小國家或是幾個省份這種面積不大的地區比較積極,推行起來也容易。

台灣常看外國有一定成效後才開始模仿,但在這場革命進行式中,不能在模仿了。

- 分散式智慧型電網

以前我覺得在家家戶戶裝設太陽能源板只是小補,並沒有太大幫助,但書裡面以分散式經濟 (分散式資本主義) 為基礎,讓每個家庭變成一座座的小型發電廠,就像維基百科、3D 列印那樣人人操之在己的感覺,讓我印象深刻。

發電廠輸送電力時免不了會有能量流失的情形,在發電廠輸送電力到各個家庭的過程,實際上已經流失不少能量了,透過家庭式發電,電力可以直接取用,過剩的能量可以透過類似網路系統集中儲存或分送給其他地區。

但政府總想把這些掌握在手裡,透過集中式分發、南水北送的方式,將花費掉大量的金錢與資源,對以後的土地利用與人民們的居住選擇增加了更多的限制。

- 洲際化與泛大陸

比起跨洋跨地球的全球化,我比較認同書中提出的「洲際化」,一種鄰近國家或是國界兩邊的省份相互合作的經濟型態,比如歐盟或是美國與加拿大邊界省份的合作方式,讓彼此的利益關係更明確,也更能團結一致的看待問題。除了歐盟之外,東協、非盟、南美洲聯盟以及北美自由貿易協定等洲際化聯盟也相繼產生,再由各個聯盟的相互來往,實現實質上的全球化、經濟來往所連接而成的「泛大陸」。


好像沒有台灣的份。

- 以熱力學重新看待經濟發展

簡單來說就是任何物質在轉換、加工等過程,總是會有所散失,比如燃燒後的二氧化碳、生鏽剝落後的金屬屑、加工後的殘渣等,這些都是難以回收分解利用的東西,而且產品製造過程大部分都是不可逆的,將這些加總起來,其實我們損失的比我們想像的多。若是再繼續揮霍資源,總有一天地球會充滿難以回收再利用的物質,經濟發展將會更為困頓。


對於許多有爭議的事情,我想不能只以抗議方式來表示,也要共同商討解決方案,無奈的是共識難以達成、杯葛不會有結束的一天,爭吵與對立只會變本加厲而已。


相關連結
 
about 5 years ago

Linux (ArchLinux)

問題:出現 device 'UUID=.....' not found. Skipping fsck
  1. 以安裝光碟或 USB 開機
  2. 進入 Arch 的命令安裝模式
  3. fdisk -l 確認自己的 Linux 根目錄的分割區,我的是 /dev/sdb2
  4. mount /dev/sdb2 /mnt
  5. mount /dev/sdb1 /mnt/boot (我這邊 mount 失敗,不過對後續好像沒影響)
  6. arch-chroot /mnt (接下來就可以使用分割區裡的 bash 指令)
  7. cd /boot
  8. mkinitcpio -p linux (讓 kernel 重新 hook 硬體資訊)
  9. 重開機,收工。
參考來源

Windows 7

問題:四色球開機畫面後直接藍白

注意:如果你還沒換的話,建議先看完再弄,有前置作業要處理

  1. (前置作業) 把新的主機板驅動程式光碟以資料夾方式開啟
  2. 進去之後把裝有驅動程式的資料夾 (通常是叫 Driver) copy 進 D 槽
  3. (換完主機板後) 放進 windows 安裝光碟,在一開始的選擇語系畫面按「下一步」,之後按左下角的「修復你的電腦」
  4. 在修復視窗點選命令提示字元
  5. 在裡面輸入 dism /Image:D:\ /Add-Driver /Driver:E:\Driver\ /Recurse (註1)
  6. 系統會開始嘗試安裝 Driver 資料夾裡的所有驅動程式
  7. 安裝完畢後重開機 (註2)
  8. 如果開機成功,windows 7 會開始抓剩下的驅動跟幾次的重開機
  9. 收工。
註1:如果當初在安裝時,沒有特別去把 windows 7 保留的 100MB 分割給清掉的話,安裝光碟在讀取時會把 100MB 判別為 C 槽,原本的 C 槽會變成 D 槽,以此類推去更換 Image:D:E:\Driver\ 的代碼。
註2:通常不會成功安裝所有的驅動,所以結束訊息通常會是錯誤訊息,只要安裝過程的訊息有成功字樣就可以重開機試試。
參考來源
 
about 5 years ago
作者:王光波
出版社:大旗出版社
出版日期:2013/03/01
圖片及資料來源:博客來

西鄉隆盛像(圖片來源)

適合睡前閱讀,每晚讀一小章節後,在睡著之前可以慢慢咀嚼回想並自省。

本書每篇開頭的遺訓都以簡短為主不長篇大論,即使不看白話解說也容易理解,而且西鄉隆盛本人多少也受到儒家等中國文學的影響,武士精神與儒學修養調和而成為一個不朽人物。裡面提到的事情,比如品格、行為舉止等思想,很多都是其他書籍會提到的,而這些思想,我想每個人或多或少都心知肚明,但這些自律的品德卻是不容易作到的。這本書不多扯經營、商業等其他現實色彩 (多少還是會有),而是紮實的人生經歷,對我來說還比較有強烈的說服力與認同感。

除了西鄉本人的經歷外,書中也舉了其他例子來佐證每篇遺訓裡的內容,只要身體力行作到其中幾樣,便能為自己帶來明顯的改變。

在睡前平靜心情,排除一天工作及生活的負面情緒,好好讀完一個章節,多少會有用的。


題外話

在搜尋這本書的相關資料時,看到與大陸的簡體書封面設計以及章節標題有點像 (連結),不知道這本書是純粹的簡轉繁還是作者有自行加其他東西進去?

相關連結
 
about 5 years ago

Kraken.js 是 Paypal 以 express 3 為基礎整合而成的 framework,具體介紹請看這裡
這邊紀錄幾個用 Kraken.js 開發時的筆記。

註:官方已發布 1.0 版,寫法跟架構都有所不同,如需參考請移至這裡

1. Socket.io 該塞在哪裡? 來源

index.js 裡最下面找到:

if (require.main === module) {
    kraken.create(app).listen(function (err) {
        if (err) {
            console.error(err);
        }
    });
}

修改成:

var SocketIO;
if (require.main === module) {
  kraken.create(app).listen(function (err, server) {
    if (err) {
      console.error(err.stack);
      return;
    }
    
    SocketIO = require('socket.io').listen(server).sockets;
    SocketIO.on('connection', function(socket) {
      socket.on('事件名稱', function(data) {});
    });
  });
}

2. Formidable 的使用。

Kraken.js 的 0.7.1 版已整合進 formidable 套件,不過相關的範例還沒出來,在大概看了一下原始碼後,在 config/middleware.json 加入:

"multipart": {
    "params": {
        "uploadDir": "path: 你的暫存路徑"
    }
}

限制上傳容量還在研究,大概只能從 node_module 裡的 apicore.js 下手了。


3. connect-redis 版本問題。來源

跟據 connect-redis 的公告:
connect-redis >= 1.5.0 support only express >= 4.0.0. Use connect-redis 1.4.7 for express 3x.

Kraken.js 是以 express 3 為基礎打包的,所以 npm 只能安裝 1.4.7 版本:npm --save i connect-redis@1.4.7


4. Dust.js 的 render 問題。來源

這不算是 Kraken.js 的問題,但官方預設的 render engine 是 Dust.js,所以就在這裡一併記上。

如果在 dust 裡使用 <script></script> 標籤,裡面有雙斜線註解時:

<script>
    // 註解

    console.log('javascript')
</script>

由於 Dust.js 在產生 html 時會去掉斷行,所以 render 完後 <script></script> 標籤裡面會變成這樣:

<script>// 註解 console.log('javascript')</script>

請以 /* */ 註解來取代雙斜線以避免之。


5. Localization (多國語言) 的路徑問題。

官方的 Localization 範例 裡 index.dust 的 {@pre type="content" key="index.greeting"/},在新版的 key 可以去掉 index 字樣變成 key="greeting"

這會對應到 locales/語言路徑/index.properties

所以當新增一份新的 dust 檔案時,如果有用到 @pre 關鍵字,在語言資料夾就要產生相對應的 properties 檔,否則會跳出 Error: Content bundle not found: undefined 錯誤。

例如:public/templates/資料夾1/資料夾2/frontpage.dust
對應到:locales/en/US/資料夾1/資料夾2/frontpage.properties

不只名稱,連資料夾路徑都要對應到才行。



相關連結