2013年1月31日 星期四

台灣零時政府第壹次公地放領黑客松活動報導 #g0v #3du

繼 pingooo 於部落格首發還文於民,在 g0v 舉辦同時,也同時進行了 3du 黑客松活動,近十人左右參與這個 3du 黑客松,pingooo 在早上十點多時發出噗浪訊息後,就有許多噗友熱情回應,其中當然也不乏嘴砲之人..

不到幾個小時,黑客 au 發表了一支教育部國語字典抓取程式,用來抓每個單字的腳本雛形:


TonyQ 也發表了成語典抓取程式,用來彙整成語用法、釋義等等資料:


過沒多久,這些資料就抓的差不多了:





接著  au 發表了一支程式,用來查詢字典資料使用 (連結):
audreyt: 感謝 pingooo 發起 g0v hackath1n 的字典開放資料活動,拿 kcwu 提供的 sqlite3 作基礎,寫了簡單的 bin/moe 命令列 查詢器,還不錯用。
 大家開始幫忙處理造字及實際字碼統合,以下是 au 發表的回應
audreyt: 目前主要需要幫忙的是把教育部的造字和 Unicode 的實際字碼統合:歡迎加入編輯。這張表是 medicalw1i、kcwu、gugod 和我整理後,尚未找到對應的字。之前有找到的,例如 966a 是<幽懷賦>作者李翶的「翶」,fa4c 是<國語.魯語上>罜䍡的「䍡」等等,也歡迎校訂
活動不到 24 小時,餘下三百多字已全數初步檢字完畢,第二輪字也相當快就檢查完成:
audreyt 一夕之間,第二輪 463 字 全部檢完,終於有一部能剪下貼上的萬國碼 #3du #g0v 萌典可用了。感謝 Jun-Yuan Yan. S, Yao Wei、Yaoting Huang、波卡 Poka、Caasi Huang、Daniel Hung-te Liang、favonia、Grey Lee、Irvin Chen、Gugod、Schee 襄助!
後來熱血人士 @racklin 發表了第一個跨平台的國語辭典查詢程式,可以在 Windows, Mac OS, Linux 上使用這個字典查詢:
阿土伯 說 響應 pingooo clkao 3du.tw 及 g0v 活動,我把教育部字典桌面端程式初版寫好了,支援 MacOSX / Linux / Windows.
目前桌面應用程式效果相當不錯,以下是螢幕畫面:


接著不到一天,@racklin 又立刻發表了更新版辭典程式,變得更好用:



然後, @yllan 也發表了一款 Mac OS 原生的辭典應用程式,效果也相當不錯!




相當不錯的活動,各界熱血人士的參與,使得這樣的一個專案不到兩天的時間就完成了。

請試想這樣的一個專案交給政府機關處理,到底要先過多少關卡,接著再拖延幾個月才有辦法做完呢?而且政府機關還要花到上千萬?

以下是 Hackpad 上的相關資料:

2013年1月29日 星期二

用 WIFLY 無線網路下載 AWS 上的檔案真是杯具

這次在 7-11 使用 WIFLY 下載 AWS 上的 moe-dict.app 真是杯具阿... 好像回到十幾年前用數據機撥接,每秒只有 6K~7K。

同樣的檔案,改用中華電信 CHT-WIFI ,速率大概落在 200KB/s 以上。

2013年1月27日 星期日

教育部電子辭典資料應該開放

忍受教育部電子辭典惡劣的操作介面、穩定度的問題已經好幾年了。

最近看到 pingooo 寫的這篇 還文於民 ,談到教育部電子辭典動不動就主機掛點,不需要登入的系統還要你登出等等問題,我覺得這件事情政府早就該做改善了。


首先,辭典資料的版權問題




從以前,我就一直有這個疑問,我們繳納的稅金,請這些教育部公務員做的東西,為何版權是教育部所有而不是納稅人所有?沒有所有權就算了,連資料使用權都沒有的話,那我們這些稅金難道是燒假的嗎?

Pingooo 寫道:
拿納稅人薪水的教育部在上班期間用納稅人的錢產出的智慧財產,納稅人就算所有權因為太多人不好處理,有使用權難道不是天經地義嗎?
不懂電腦的人,可能會說,資料不就在網站上公開使用了嗎?其實,資料跟網站的介面是可以抽離的,同樣的資料,可以透過不同的介面去呈現,如果教育部的電子辭典介面跟系統做得這麼差,為何不把原始資料公開出來,讓民間製作更好的介面供大家使用?


所以,教育部應該公開這些辭典資料,交給民間去做,反而會做得更好,不是嗎?看看民間做的實價登錄網站就知道,以民間的技術來做總是可以比政府外包或自己製作做得好。

另一方面,公開原始資料的同時,也該修法,對那些使用這些公開資料營利的企業該如何處理也是一大課題。

公開資料有哪些好處?


一旦原始資料公開民間使用,不管是行動版網頁介面、iPhone App / Android App、或是使用先進的 HTML5 介面所使用的服務,相信都會有人願意去做出來。

甚至,教育部根本就不需要透過標案的方式外包給廠商,也可以節省一大筆費用。政府標案常有收受回扣的問題,外包廠商的品質也不見得穩定,公務員平常主要處理公務,對於資訊技術本來就不是很了解,交給這些公務員去選出來的外包廠商,也不見得能夠把這個標案做得完善。

把這些資料交給民間,透過自由市場的機制,這些服務自然就會做得越來越好,不是嗎?

2013年1月24日 星期四

Gentoo Linux: What to do if you deleted package.use file accidentally?

In Gentoo Linux, package information is stored in /var/db/pkg

And the installed USE flags is stored in `USE` file, for example: /var/db/pkg/dev-lang/php-***/USE.

To restore these USE flags back to your /etc/portage/package.use file, simply type the command below:

cd /var/db/pkg/ && ls -d */* | while read pkg ; do echo -n "$pkg " ; cat $pkg/USE ; done >> /etc/portage/package.use

2013年1月19日 星期六

WIFLY 無線網路頻寬比我想的還慢

需要用無線網路,不得已購買了 WIFLY 月卡 ($ 500),下行只有 0.83Mbps 的速率。

本來想要買年卡 ($ 1200) 沒想到年卡居然限制只有平板、手機可以使用。

以前曾經被年卡騙過,買了才發現居然筆電無法使用,結果還搞了很麻煩的退費手續,搞了一個月費用才退給我。

以 speedtest.net 為證:


然後 ping 還會掉封包:


2013年1月10日 星期四

PHPBrew 日本語 README


PHPBrew

PHPBrewは異なるバージョンのPHPをホームディレクトリにビルド(build)とインストールすることができます。
環境変数の管理もでき、個人の需要に応じてバージョンを切り替えて利用することが可能です。
PHPBrewのできること::
  • PDO、mysql、sqlite、debugなど様々なバリアント(variant)を持つPHPをビルドします。
  • apache phpモジュールをコンパイルし、ヴァージョンごとに分けます。
  • 異なるバージョンのphpをホームディレクトリにインストールするので、ルートパーミッション(root permission)は必要なくなります。
  • 簡易にバージョンを切り替えることができます。しかもbash/zshシェルと統合されました。
  • 自動機能検知。
  • system-wide環境に複数のPHPバージョンをインストールできます。

支援OS

  • Mac OS 10.5+
  • Ubuntu
  • Debian

必須環境

  • PHP5.3
  • curl
  • gcc, binutil, autoconf, libxml, zlib, readline

Mac OS X 必須環境

MacPorts使用者:
port install curl automake autoconf icu $(port echo depof:php5)
HomeBrew使用者:
brew install automake autoconf curl pcre re2c mhash glibtool icu4c gettext jpeg libxml2 mcrypt gmp libevent
brew link icu4c

Ubuntu/Debian必須環境

sudo apt-get install autoconf automake curl build-essential libxslt1-dev re2c libxml2-dev
sudo apt-get build-dep php5

Cent OS必須環境

Cent OS必須環境の設定
sudo rpm -Uvh http://repo.webtatic.com/yum/centos/5/latest.rpm

# phpがない場合
sudo yum install --enablerepo=webtatic php php-xml
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
sudo rpm -Uvh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
sudo yum install --enablerepo=rpmforge re2c libmhash

PHPBrewのインストール

PHPBrewをダウンロードしてください:
curl -O https://raw.github.com/c9s/phpbrew/master/phpbrew
chmod +x phpbrew
sudo cp phpbrew /usr/bin/phpbrew

基本用法

まずはシェル環境にbash scriptをInitします。
$ phpbrew init
そして次の行を.bashrc または.zshrc ファイルに追加します:
$ source ~/.phpbrew/bashrc
既知のバージョンを一覧表示します:
$ phpbrew known
Available stable versions:
    php-5.3.10
    php-5.3.9
    php-5.3.8
    php-5.3.7
既知のサブバージョンを一覧表示します:
$ phpbrew known --svn
古いバージョン(5.3以前)を一覧表示します:
$ phpbrew known --old

ビルド(build)とインストール

簡易にデフォルトバリアントのPHPをビルドとインストールします:
$ phpbrew install php-5.4.0 +default
こちらではdefault VARIANTセットをお薦めします。デフォルトセットは常用のVARIANTクラスを収録しています。最小限インストールの場合、default VARIANTセットを削除してください。
テスト:
$ phpbrew install --test php-5.4.0
debugメッセージ:
$ phpbrew -d install --test php-5.4.0

バリアント(variants)

PHPBrewはConfigureオプションを管理できます。VARIANTのクラス名を指定するだけで、PHPBrewはincludeパスとオプションを検知します。
PHPBrewは常用のVARIANTクラスを収録し、デフォルトのVARIANTセットを提供しています。 収録されているVARIANTクラスを確認するには、簡単にサブコマンドvariantsを実行して一覧表示を確認できます:
$ phpbrew variants

Variants:
    pear
    mysql
    debug
    sqlite
    pgsql
    cli
    apxs2
    cgi
    soap
    pcntl
    ... (etc)
最新のPHPBrewは2つのVARIANTセットを提供しています:
  1. default (最も常用のバリアント, 例えば:filter bcmath ctype fileinfo pdo posix ipc pcntl bz2 cli intl fpm calendar sockets readline, zip)
  2. dbs (sqlite, mysql, pgsql, pdo)
例:
$ phpbrew install php-5.4.5 +default+dbs
それ以外のVARIANTクラスのPHPをビルドすることも可能です:
$ phpbrew install php-5.3.10 +mysql+sqlite+cgi

$ phpbrew install php-5.3.10 +mysql+debug+pgsql +apxs2

$ phpbrew install php-5.3.10 +mysql +pgsql +apxs2=/usr/bin/apxs2
PDOはデフォルトで起動されています。
PHPとpgSQL (Postgresql)拡張モジュールをビルドします:
$ phpbrew install php-5.4.1 +pgsql
あるいはpostgresqlのベースディレクトリを生成してpgSQL拡張モジュールをビルドします:
$ phpbrew install php-5.4.1 +pgsql=/opt/local/lib/postgresql91
注意点:
  1. apacheのphpモジュールをビルドする場合、 モジュールディレクトリのパーミッションを変更してください。 例:/opt/local/apache2/modules/。 パーミッションは書き込む可能です。PHPBrewはパーミッションを変更することができます。 インストールした後、httpd.conf設定ファイルを確認し、PHPモジュールを切り替わってください。
  2. 現時点PHPBrewはapxs2 (apache2)しか支援しません。 複数のPHPをインストールした環境の下でapxs2 VARIANTを有効化したなら、apacheのconfファイルは以下のように示されています:
# LoadModule php5_module        modules/libphp5.3.10.so
# LoadModule php5_module        modules/libphp5.4.0.so
# LoadModule php5_module        modules/libphp5.4.0RC8.so
# LoadModule php5_module        modules/libphp5.4.0RC7.so
# LoadModule php5_module        modules/libphp5.4.1RC2.so
# LoadModule php5_module        modules/libphp5.4.1.so
# LoadModule php5_module        modules/libphp5.4.2.so
LoadModule php5_module          modules/libphp5.4.4.so
コメント化や非コメント化を利用して簡単にphp5 apacheモジュールを無効化/有効化にすることができます。 編集したあとは必ずapache http サーバーを再起動してください:)

エクストラオプション

エクストラconfigure引数を渡すには、以下のようにしてください:
$ phpbrew install php-5.3.10 +mysql +sqlite -- \
  --enable-ftp --apxs2=/opt/local/apache2/bin/apxs

使用と切り替え

使用 (switch version temporarily):
$ phpbrew use php-5.4.0RC7
切り替え (特定のバージョンをデフォルトとして切り替えます)
$ phpbrew switch php-5.4.0
終了:
$ phpbrew off

インストールされたPHPを一覧表示します

$ phpbrew list

PHPから拡張モジュールをビルドとインストール

(インストール手順の後):
phpbrew install-ext pdo
phpbrew install-ext mcrypt --with-mcrypt=/opt/local

拡張モジュールを有効にします

pecl install mongo
phpbrew enable mongo
enable コマンドはconfig {current php base}/var/db/{extension name}.iniを作成し、拡張モジュールを有効にします。

PHPBrewのアップグレード

PHPBrewをアップグレードする場合、 self-update コマンドを実行するだけで済みます。 このコマンドは最新バージョンのgithubのmaster branchをインストールすることができます:
$ phpbrew self-update

インストールされたPHPファイル

インストールされたPHPファイルは~/.phpbrew/phpに置かれます。例えば、php 5.4.0RC7の場合は:
~/.phpbrew/php/5.4.0RC7/bin/php
設定ファイルは以下の位置に置く必要があります:
~/.phpbrew/php/5.4.0RC7/etc/php.ini
拡張モジュールの設定ファイルは下記の位置に置く必要があります:
~/.phpbrew/php/5.4.0RC7/var/db
~/.phpbrew/php/5.4.0RC7/var/db/xdebug.ini
~/.phpbrew/php/5.4.0RC7/var/db/apc.ini
~/.phpbrew/php/5.4.0RC7/var/db/memcache.ini
... etc

system-wide環境のPHPBrewインストール:

まずは、sudoをルートユーザにする、またはルートユーザでログインします:
sudo -i
そしてPHPBrewのbashrcを初期化します:
phpbrew init
PHPBrewのパスを指定のパスにエクスポート(export)してから、 ~/.phpbrew/init を編集してください。
export PHPBREW_ROOT=/opt/phpbrew
PHPBrew bashrcをソース(source)する。
source ~/.phpbrew/bashrc
インストールsystem-wide PHP:
phpbrew install php-5.4.5 +default +dbs
これでPHPファイルは /opt/phpbrew の下にインストールされました。 PHPBrewがビルドしたPHPをユーザーに使用させるには、bashユーザーがphpbrew/bashrcを読み込む前にPHPBREW_ROOT 環境を/etc/bashrc または/etc/profile.d/phpbrewにエクスポートする必要があります。。
export PHPBREW_ROOT=/opt/phpbrew
source /opt/phpbrew/bashrc
システムの安定を保つため、rootを使ってPHPをインストールしてください。
非ルートのユーザーは新しいPHPをインストールまたは切り替えることができません。
ファイルは非ルートユーザーでインストールする場合、パーミッションを修正してください。
chown -R root: /opt/phpbrew

バージョン情報プロンプトの有効化

PHPバージョン情報をシェルプロンプトに追加するには、"PHPBREW_SET_PROMPT=1" 変数を利用してください。
デフォルトは"PHPBREW_SET_PROMPT=0" (無効化). 有効化にする場合、~/.phpbrew/bashrcをソースする前に、下記の行を~/.bashrc ファイルに追加してください。
    export PHPBREW_SET_PROMPT=1
バージョン情報をプロンプトに埋め込む場合、current_php_version シェル関数を利用してください。この関数は.phpbrew/bashrcの中に定義されています。 そしてバージョン情報をPS1変数に設定することができます。 例:
    PHP_VERSION=$(current_php_version)
    PS1=" $PHP_VERSION \$ "

既知の問題点:

ハッキング(Hacking):

まずはOnionをインストールしてください:
$ curl http://install.onionphp.org/ | sh
依存性(dependency)インストール:
$ onion -d install
初期化:
$ php bin/phpbrew init
既知のバージョンを一覧表示にします:
$ php bin/phpbrew known
インストール:
$ php bin/phpbrew -d install --no-test 5.4.0RC7
PHPBrewが実行している動作を表示します:
$ unset -f phpbrew
$ which phpbrew
pharファイルをリコンパイルします:
$ bash scripts/compile

PHP配布先

コミュニティ

お気軽にirc.freenode.netにて#php-twの話題に参加してください。

協力者

  • yftzeng
  • Gasol

開発者

Yo-An Lin (c9s) cornelius.howl@gmail.com