https://github.com/benweet/stackedit
這是一個 markdown 的編輯器, markdown是與org-mode齊名的輕量級標記語言。
https://github.com/slap-editor/slap
仿 osx 上的 sublime 編輯器
https://github.com/petkaantonov/bluebird
一種名為 promise 的語法(糖),寫出類似try...catch的語法
https://github.com/vthibault/roBrowser
"新仙境傳說"的瀏覽器版(I know...我也驚呆了)
https://github.com/feross/webtorrent
bt 的客戶端
https://github.com/bartaz/impress.js https://github.com/hakimel/reveal.js
簡報工具
2014年9月28日 星期日
2014年9月26日 星期五
pdf.js初探
我覺得這個基於javascript的pdf viewer有前途,主要是因為潛在的線上多人協作的可能性
開發時由於無法參照本地檔案,因此必需配合 web server 來讓本地檔案以 http 協定存取
原作者已經設想此一情況,搭配的伺服器是 node.js 。
先安裝 node.js ,參 http://www.codedata.com.tw/javascript/using-nodejs-to-learn-javascript
(win8用戶請注意:win-Q搜尋 node.js command prompt 的捷徑,按右鍵以管理員身份執行)
以下參考 https://github.com/mozilla/pdf.js
取得完整原始碼(不是prebuild,請按 https://github.com/mozilla/pdf.js 上的download zip)並解壓
打開一個 node.js command prompt ,進入剛才解壓的目錄並執行
node make server
此時網頁伺服器即開始執行。開測試網頁 http://localhost:8888/web/viewer.html
即可看到測試結果
( node make server 是 shelljs 專案中的 make 工具的語法,參 https://github.com/arturadib/shelljs#make-tool )
開發時由於無法參照本地檔案,因此必需配合 web server 來讓本地檔案以 http 協定存取
原作者已經設想此一情況,搭配的伺服器是 node.js 。
先安裝 node.js ,參 http://www.codedata.com.tw/javascript/using-nodejs-to-learn-javascript
(win8用戶請注意:win-Q搜尋 node.js command prompt 的捷徑,按右鍵以管理員身份執行)
以下參考 https://github.com/mozilla/pdf.js
取得完整原始碼(不是prebuild,請按 https://github.com/mozilla/pdf.js 上的download zip)並解壓
打開一個 node.js command prompt ,進入剛才解壓的目錄並執行
node make server
此時網頁伺服器即開始執行。開測試網頁 http://localhost:8888/web/viewer.html
即可看到測試結果
( node make server 是 shelljs 專案中的 make 工具的語法,參 https://github.com/arturadib/shelljs#make-tool )
2014年8月20日 星期三
AnyEvent , POE , IO::Async 的比較
https://blog.afoolishmanifesto.com/posts/concurrency-and-async-in-perl/
這篇文章滿新的,作者比較了這三種事件驅動模式,作了以下結論:
初學者建議用 AnyEvent ,但工作上建議用 IO::Async 或 POE 。尤其是 IO::Async 作者非常推薦,某方面來說可能也是因為這個架構比較新的關係(吧?)。
2014年8月19日 星期二
超酷的逆向代理(reverse proxy):使用bash one liner
參考 http://www.frameloss.org/2013/12/14/wicked-cool-reverse-proxy-with-bash-and-netcat/
Process substitution 是裏面最重要的概念,使得 pipe 可以同時雙向轉送。
File descriptors 也是滿新鮮的概念。檔案和 socket 因此可視為等效,使得 nc/netcat 的功能實質上可以用 cat 來達成。
或許很多程式一開始只要寫成針對 stdio / stdout 就好,再利用這些上述提到的概念,在 shell 的層次導入 socket / network 的參數。
這個小技巧可以 work ,首先要思考的是 proxy 和 nc 的本質。 proxy 本身同時是 server 和 client ,server端接受外來的連線,再利用 client 端將資料轉送到真實的 server 。nc 依執行時所提供的參數,可以是 client ,也可以是 server ,而資料則轉送到該程式自身的 stdin / stdout 。所以在實質上來看,同時啟動一個 nc server 和 nc client ,然後把它們的 stdin / stdout 串起來,就可以等效於一個 proxy。
理想上一個雙向 bidirectional filter 可以插入到這兩個 nc server/client 之間,但是 bash 的版本可能要在4以上 (2010年3月以後)。先檢查版本:
$ echo $BASH_VERSION
利用 mkfifo 建立 4 個具名管道 a b c d,使用<及>運算子將 a output b input 指定給 nc server 的 io ,c output d input 指定給 nc client ,然後將 a input b output c input d output 作為參數啟動 filter 。自行建立的 fileter 如果是用 perl 撰寫,可參考文件如何使用open打開管道。
如果讀寫之間不需要協調的話,那麼這樣形式的 filter 是更為簡單的,讀、寫各兩個管道,所以不需要使用具名管道。指令的形式如下
[ ! -p $pipefwd ] && mkfifo pipeback;#只需要執行一次
[ ! -p $pipefwd ] && mkfifo pipeback;nc -l -p 9090 <pipeback | perl -e "while(<>){print STDERR;}" | nc 127.0.0.2 9999 | perl -e "while(<>){print STDERR;}" > pipeback
如果需要在螢幕上顯示,可以搭配 tee
[ ! -p $pipefwd ] && mkfifo pipeback;nc -l -p 9090 <pipeback | tee >(perl -e "while(<>){print STDERR;}") | nc 127.0.0.2 9999 | tee >(perl -e "while(<>){print STDERR;}") > pipeback
20170202更新:嚴格說來 ssh 才是比較安全的作法,請參考 http://chimerhapsody.blogspot.tw/2015/09/ssh.html
http://chimerhapsody.blogspot.tw/2015/09/ssh.html
Process substitution 是裏面最重要的概念,使得 pipe 可以同時雙向轉送。
File descriptors 也是滿新鮮的概念。檔案和 socket 因此可視為等效,使得 nc/netcat 的功能實質上可以用 cat 來達成。
或許很多程式一開始只要寫成針對 stdio / stdout 就好,再利用這些上述提到的概念,在 shell 的層次導入 socket / network 的參數。
這個小技巧可以 work ,首先要思考的是 proxy 和 nc 的本質。 proxy 本身同時是 server 和 client ,server端接受外來的連線,再利用 client 端將資料轉送到真實的 server 。nc 依執行時所提供的參數,可以是 client ,也可以是 server ,而資料則轉送到該程式自身的 stdin / stdout 。所以在實質上來看,同時啟動一個 nc server 和 nc client ,然後把它們的 stdin / stdout 串起來,就可以等效於一個 proxy。
延伸--bidirectional filter
理想上一個雙向 bidirectional filter 可以插入到這兩個 nc server/client 之間,但是 bash 的版本可能要在4以上 (2010年3月以後)。先檢查版本:
$ echo $BASH_VERSION
利用 mkfifo 建立 4 個具名管道 a b c d,使用<及>運算子將 a output b input 指定給 nc server 的 io ,c output d input 指定給 nc client ,然後
如果讀寫之間不需要協調的話,那麼這樣形式的 filter 是更為簡單的,讀、寫各兩個管道,所以不需要使用具名管道。指令的形式如下
[ ! -p $pipefwd ] && mkfifo pipeback;#只需要執行一次
[ ! -p $pipefwd ] && mkfifo pipeback;nc -l -p 9090 <pipeback | perl -e "while(<>){print STDERR;}" | nc 127.0.0.2 9999 | perl -e "while(<>){print STDERR;}" > pipeback
如果需要在螢幕上顯示,可以搭配 tee
[ ! -p $pipefwd ] && mkfifo pipeback;nc -l -p 9090 <pipeback | tee >(perl -e "while(<>){print STDERR;}") | nc 127.0.0.2 9999 | tee >(perl -e "while(<>){print STDERR;}") > pipeback
20170202更新:嚴格說來 ssh 才是比較安全的作法,請參考 http://chimerhapsody.blogspot.tw/2015/09/ssh.html
http://chimerhapsody.blogspot.tw/2015/09/ssh.html
2014年8月16日 星期六
github 上熱門的專案統計
GitHub 上的熱門專案
滿有趣的 ,看來是用討論的熱度來作統計。有時間的話,一定要好好的看一看啊…
perl 竟然幾乎全滅的了…冏rz
看來 javascript / css 真.的.是.很.紅.啊…
滿有趣的 ,看來是用討論的熱度來作統計。有時間的話,一定要好好的看一看啊…
perl 竟然幾乎全滅的了…冏rz
看來 javascript / css 真.的.是.很.紅.啊…
如何寫一個模組,並上傳到 cpan
寫得太好了…
補充幾點:
- 模組架構可以用 Module::Starter 來建立,或是使用經典的 Module::Starter::PBP ,可參考 使用 Module::Starter 建立模組框架
- 上傳可以用 CPAN::Uploader
- 寫模組的風格可以參考 PBP (Perl Best Practices)
訂閱:
文章 (Atom)