GitHub 上程式語言的趨勢

GitHub 給了從 2008 年到 2015 年現在,放在 GitHub 上專案所使用程式語言的排名:「Language Trends on GitHub」。

這同時包括了公開與私人 repository:

The rank represents languages used in public & private repositories, excluding forks, as detected by Linguist.

可以看到 Java 專案的排名逐步上升,應該是愈來愈多 Java 專案放到 GitHub 上 (應該是跟 Android 有關)。而 Perl 是掉出去很久了,PHP 則是萬年不動... XD

幾個程式語言對引號以及 backslash 解讀...

三個 P 開頭的語言...

PHP

#!/usr/bin/env php
<?php
 
echo "\\\"\'", "\n";
echo '\\\"\'', "\n";

Perl

#!/usr/bin/env perl
 
use 5.010;
use strict;
use warnings;
 
INIT {
    $a = "\\\"\'";
    $b = '\\\"\'';
 
    say $a;
    say $b;
}
 
__END__

Python

#!/usr/bin/env python
 
print "\\\"\'"
print '\\\"\''

結果是:

$ ./quote.php
\"\'
\\"'

$ ./quote.pl
\"'
\\"'

$ ./quote.py
\"'
\"'

這...

FreeBSD 上 Perl 升級的問題...

以往升級 Perl 後要跑 perl-after-upgrade -f,把本來在 /usr/local/lib/perl/5.12.4 的東西搬到 /usr/local/lib/perl/5.12.5 下,然後還是要到目錄下確認有沒有東西遺漏,漏掉的還是得用 portmaster 跑一次...

現在則是改成 /usr/local/lib/perl/5.12 這樣的路徑,把最後的 minor version 拿掉,至少同個主版本升級時 (5.12.x 之間) 比較不會痛了...

不過順便趁這次換成 5.16 好了,5.12 應該也快過保了...

利用 cpanm 的資料計算 Perl 版本分佈狀況...

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

Perl 其中一個討厭的問題是版本太多了... 不是官方說 EoL 就可以 EoL 啊 :/

node.js 版的 YUICompressor...

看「Fantastic front-end performance Part 1 – Concatenate, Compress & Cache – A Node.JS Holiday Season, part 4」的時候發現 node.js 版的 YUICompressor 比起 Perl 版本更早之前就 porting 完成了:「UglifyCSS」,甚至是官方版本的「yuicompressor / ports / js / cssmin.js」也都遠早於 Perl 版本...

npm 裝 uglifycss 就可以用了...

支援新版 Plurk API (OAuth Core 1.0a) 的 Twitter To Plurk Script

code 放在「Plurk 新版 OAuth Core 1.0a 的 twitter to plurk」,其中裡面用到的 SQLite 的表格結構請參考「Twitter 轉 Plurk 的程式...」這篇文章的說明。把本來是 plaintext password 的程式換過去後看起來舒服多了,不過中間寫起來讓人頗 orz...

先是一直沒辦法透過 OAuth::Lite 送出 UTF8 內容,於是決定換成 Net::OAuth,結果因為文件內的範例都沒講到重點而倒地不起...

然後遇到 Plurk API 2.0 beta 的文件沒有列出是 GET 或是 POST,於是又試了老半天...

文件真的很重要...

Perl 5.14.0...

The Perl Foundation News 上有 Perl 5.14.0 釋出的公告:「Perl 5.14」。講了一堆新功能,比較重要的其實是:

It is important to note that this version marks the official end of support for Perl 5.10.

換句話說,目前使用 Perl 5.10 的系統都... (狂抓頭)

這包括 Debian 全系列 (squeeze/perl 以及之前的 lenny/perl),以及 Ubuntu 目前所有 release 版本 (包括前陣子才出的 Natty)。

這要怎麼玩啦,並不是 perlbrew + cpanminus 就可以這樣搞啊... 預定明年四月出 5.16.0,這代表現在在跑的 5.12.3 準備再活一年?每個版號只活兩年是怎樣...

Ubuntu 11.04 下使用 App::perlbrew 安裝 Perl 5.12.3

感謝 gugod 提供的新版把 Ubuntu 11.04 (Natty) 下無法 compile 的問題搞定了:「Ubuntu 11.04 and perlbrew installation problems」。主要的原因在於 library 放置的路徑改變,造成 PerlConfigure 抓不到。

順便紀錄一下,有時 CPAN mirror 更新不夠快,cpanm 安裝可能會失敗,這個問題加上 cpan.cpantesters.org mirror 就可以解決:(放到 .bashrc 裡)

export PERL_CPANM_OPT="--mirror http://cpan.nctu.edu.tw/ --mirror http://cpan.cpantesters.org/"

Perl 的 eval

沒有把 eval 的 manual 弄清楚,結果中了不少槍... 以這段 code 來說:

#!/usr/bin/env perl

use strict;
use warnings;
use Data::Dumper;

sub a {
    eval {
        return 'Inside eval';
    };

    return undef;
}

print Dumper a();

__END__

輸出結果會是 undef,而非 Inside eval,因為:

the value returned is the value of the last expression evaluated inside the mini-program; a return statement may be also used, just as with subroutines.

沒專心看 manual 的結果 XD

不過這還是沒解決我遇到在 eval 裡面仍然會因為 croak 而結束的情況... 再加油吧 :o

DotCloud 提供 Perl (PSGI) PaaS 服務...

DotCloud 在官方的 blog 上宣佈提供 Perl PaaS:「DotCloud introduces Camel-as-a-Service with its new Perl stack」,這應該是第一個 Perl Paas,也應該跟 miyagawa (PSGI 協定的建立者與維護者) 加入 DotCloud 有些關係。

協定是 PSGI,系統目前是用 nginx 加上 uWSGI。目前只有 web 端的部份可以用 Perl,Worker 還不行。

等帳號下來後再來玩看看...