如標題 :p 只拿 cpanm 分析一定會有偏差,所以數字參考看看就好:「Perl versions usage stats (with cpanm)」。

Perl 其中一個討厭的問題是版本太多了... 不是官方說 EoL 就可以 EoL 啊 :/
幹壞事是進步最大的原動力
如標題 :p 只拿 cpanm 分析一定會有偏差,所以數字參考看看就好:「Perl versions usage stats (with cpanm)」。
Perl 其中一個討厭的問題是版本太多了... 不是官方說 EoL 就可以 EoL 啊 :/
整理下來:
有玩過 HMAC 的人,讀這些文件應該不難...
TOTP 在預設的情況下,其實就是 HMAC-SHA-1 後取後面 32bits,然後轉成數字取 100000 的餘數,而 TOTP 文件是架構在 HOTP 的定義上,把時間切齊 (預設 30secs) 變成整數丟進去攪和,然後特地交代要處理 2038 年超過 Int32 的 case XDDD
最後 Google 那份文件是要輸出 QR code 讓手機可以讀的方式,建議不要用網路服務產生 QR code (因為有 secret key 啊),寧可自己抓 library 建一個用...
另外 Google Authenticator 一堆東西都只能用預設值 (Currently, the XXX is ignored by the Google Authenticator implementations.),所以也沒什麼好選的,就拿預設值吧... :o
Server side 的話,至少我在 CPAN 上面看到 Authen-OATH 可以用了,用起來也很簡單 :o
剛剛看到 CPAN 網站上直接由官方支援 Syntax Highlighter:Syntax highlighting for search.cpan.org,雖然目前的 UI 做的並不太好 (選擇 theme 的選擇條應該是上下都要有,目前只有最下方),但仍然是進步不少...
之前的 Greasemonkey script 在 Firefox 4.0 上爛掉 (因為 async loading 的關係),本來還在想要怎麼處理,現在看起來就用官方提供的就好了...
雖然看到別人提很多次了,但一直都沒有試著去看看...
剛剛把 App::cpanoutdated 裝起來,剛好跟 App::cpanminus 配合一起升級:
cpan-outdated -p | cpanm -n
這樣完全不需要用到 cpan (跑 upgrade /.*/
)。
跟 gugod 討論後發現我之前所寫的方式有問題,所以重寫一篇...
首先是安裝 App::perlbrew 的方式:
wget --no-check-certificate http://xrl.us/perlbrew
chmod a+x perlbrew
./perlbrew install
./perlbrew init
這樣在自己的目錄下就會有 perlbrew 了,接下來是設定環境變數:
source ~/perl5/perlbrew/etc/cshrc # (for csh/tcsh)
source ~/perl5/perlbrew/etc/bashrc # (for bash)
並將自己的 ~/.cshrc
或是 ~/.bashrc
裡加入上面的 source
指令。
原來下載的 perlbrew 就可以砍掉了,然後把 Perl 5.12.3 的環境建好:
rm perlbrew
perlbrew install perl-5.12.3
perlbrew switch perl-5.12.3
接著是用 App::cpanminus (standalone) 安裝 App::cpanminus (套件):
wget --no-check-certificate -O cpanm http://cpanmin.us/
chmod a+x cpanm
./cpanm -n App::cpanminus
然後一樣把下載下來的 cpanm
砍掉:
rm cpanm
這樣可以在不碰到「CPAN」這個大模組的情況下,把基本的系統裝好...
之前寫過一篇「產生 Perl Module 的工具:Module::Starter」是用 Module::Starter 管理,另外再配合其他工具上傳到 CPAN 上。前陣子在 GitHub 上亂逛的時候看到有人 Perl module 裡面只有一個 dist.ini
與 Changes
,另外就是 lib/
與 t/
,就感覺到應該是我要的東西 XD 花了一些時間測試後發現功能不多,但對於初期應該足夠了,等到熟悉後再跳到功能比較完整的管理軟體...
首先先用 dzil setup
設定環境,如果有 PAUSE 帳號的話也能夠整合進去。設定完後記得將 ~/.dzil/
設為 700,裡面的檔案設為 600。
接下來就是建立模組,像是 dzil new Plack::Middleware::HTMLMinify
這樣的指令。建好後就把 module 寫完,然後設定 dist.ini
。(文件上的說明應該夠用)
接下來可以用 dzil build
編,或是用 dzil test
測試。沒問題之後用 dzil release
上傳到 PAUSE。
基本的功能大概就這樣...
Update:dist.ini
的範例可以在 plack-middleware-htmlminify-perl 的 repository 裡看到。
在 Ubuntu 上系統內建的 Perl 是 5.10.1,而且系統內建的 Perl module 有時會與自己裝的衝到,於是就找了一下要怎麼產生獨立環境的方法... 結果發現 gugod 早就把細節都包好 XD
首先是用系統的 cpan
安裝 App::perlbrew:
cpan App::perlbrew
因為我不打算繼續用之前透過 App::cpanminus (cpanm
) 裝的 module,所以我把 ~/perl5
全砍了再跑下一步,也就是初始化 perlbrew 環境:(如果是 csh/tcsh 使用者,記得先下 rehash
清 cache)
perlbrew init
然後安裝 Perl 5.12.3:
perlbrew install perl-5.12.3
如果安裝失敗的話,可以看 build log。我在 FreeBSD 上遇過 test fail 的情形,可以直接強制安裝,大家就自己看著辦 XD
接下來是切換過去:
perlbrew switch perl-5.12.3
然後把 .cshrc
或是 .bashrc
加上對應的設定:
source ${HOME}/perl5/perlbrew/etc/cshrc
或是:
source ${HOME}/perl5/perlbrew/etc/bashrc
然後重新登入 (或是執行 source
那串,讓設定檔生效),接下來就可以用 cpan
指令裝 App::cpanminus 了。
另外,可以參考這些文章:
在「CPAN 的 Greasemonkey 工具…」這邊提到打算寫一個 Greasemonkey script,將 CPAN 上面的 source code 部份加上 syntax highlight,因為有不少現成的 Highlighter 是 javascript-based,所以程式只要套一套就可以了...
Greasemonkey 的程式在這:「CPAN Syntax Highlight」。
使用前:
使用後:
去 Userscripts.org 翻一些工具,發現有些 script 看起來還蠻有趣的。像是「CPAN Search Dependents」會在搜尋頁列出模組的 dependency 數量。
不過,用過以後發現他的優點是可以先在搜尋頁看出來有哪些 module,至於 script 本來做的事情 (計算 dependency 的數量) 反而不是重點...
等下來寫個可以把 Syntax Highlight 加進去的工具,看了一下 CPAN 的頁面,操作這些 DOM element 應該不難...
因為對 FreeBSD 還算熟悉,所以在 FreeBSD 上遇到 Ports 內沒有的 CPAN module,我會做一個新的 port 出來 send-pr,但對於 Debian 的熟悉度沒有 FreeBSD 高,想了老半天想不到什麼好方法,在 #perl.tw 上問了這個問題,不過還是沒有滿意的答案...
然後想到,在 Stack Overflow 上面說不定有人問過,丟一些關鍵字後有兩筆相關討論可以參考:(至少是可行的解法)
有人是建議自己 compile 一個 Perl 出來裝到 /usr/local
下 (於是就可以惡搞到底),有的人則是建議用 dh-make-perl 做 .deb 出來用,但還是會有很多問題...
再想看看好了,真麻煩...