homebrewでインストールしたアプリケーションのソースコードの場所
~/Library/Caches/Homebrew/
にあります。
homebrewは/usr/local/にインストールしてくれるのが売り(のはず)なので、せっかくだからソースコードも/usr/local/src/に置いてくれればいいのに、と思ったり。
どうにも分かりづらいので、とりあえず
cd /usr/local/src ln -s ~/Library/Caches/Homebrew ./
して対応してます。
psqlでTSVファイル(タブ区切り)を出力
PostgreSQLのターミナルフロントエンドpsqlで、結果をタブ区切りのTSVファイルで出力する方法。
何度も忘れて調べてしまうのでメモ。
psql -A -F "※1" -t -d dbname -c "SELECT * FROM tablename;" ※1 Ctrl-v -> TABと入力
これでExcelにも簡単に取り込めますね
LTの虎@LL Tigerにて喋ってきました!
「SQLはLLである」という思想を世に啓蒙すべく、LTの虎@LL Tigerにてチームエレファントカシマシタの一員として、ライトニングトークをしてきました。
スライドはこちら。
9割方ネタで構成されています。本当は単にPL/Parrotを紹介するだけのつもりだったのですが、スライドを作っている内にいつのまにかこうなっていました。どうしてこうなった。
そのせいかこんなTweetまで出る始末
PL/Parrot開発者の方々すいません。見ていた方々、PL/Parrto&PL/Perl6はほんとはできる子なのでよければ使ってみて下さい。
参考URL
http://pl.parrot.org/
GitHub - leto/plparrot: Embed Parrot+Rakudo into PostgreSQL
Google グループ
とりあえずやってみるのって大切
ちなみに人生で初めて技術系の集まりで喋ったのですが、そもそもLL〜自体今年が初参加で規模感やどんな人が集まるかも分からないまま無謀にも突っ込んで行きました。
僕は今までこんなネタで大丈夫なの?とかもう少し技術力を付けてからとか考えてしまって中々発表者として参加できないでいました。今回はチーム戦ということで誘われるままに参加してしまいました。
結果的には参加して大正解だったと思います。喋ったネタは他の参加者の方に比べて残念な感じですが、それでも喋ったことでフィードバックももらえたし、他の参加者とも交流できてとても楽しかったです。
ちなみにLTの虎は世にも珍しいトーナメント形式のLLだったのですが、毎試合ごとに商品が用意されていました。一回戦を勝った商品としてこんなものを貰いました。
この機会にLuaを始めたいと思います。
LTの虎はとても好評だったようです。「LTの虎の発表どれもすばらしい!」というTweetをちらほら見かけます。その中におそらく僕の発表は含まれていないと思われますが、他の方の発表はどれも本当に面白いものばかりでした。資料をまとめてくださっている方がいるので是非見てみて下さい。
lltiger 発表資料集 - てれもえ! -照れこそは萌えが戴くべき最高の至宝-
こんな素敵な経験をできたのも、法林さんを始め、多くの運営に携わって下さった方のおかげです。ありがとうございます。
来年もSQLを世に広めるべく、もっとネタを作り込んで攻め込みます!
PL/ParrotとPL/Perl6を試す - PL/ParrotかわいいよPL/Parrot
先日のLL TigerでPL/Parrot & PL/Perl6について喋ってきたのですが、紹介するつもりが逆にユーザーを減らしてしまった
ようなので、せめてもの罪滅ぼしにPL/Parrot & PL/Perl6のインストール手順を書いておきます。PL/Parrot & PL/Perl6って何?という人は僕のLL Tigerの発表を見て下さい。
LTの虎@LL Tigerにて喋ってきました! - 分け入ってもコード
インストールに必要なもの
- PostgresSQL 8.3.8以上
- Parrot 最新版
- Rakudo 最新版
PostgreSQLのインストール
PostgreSQLのインストールについてはそこら中に情報があるので割愛します。インストール方法はバイナリでもソースからビルドでもかまいません。
気をつける点として、バイナリでインストールする場合は必ずdev版を指定して下さい。aptitude search postgresqlとかyum search postgresqlとかしてやると、devの入ったパッケージがあると出てくるので、それを指定してやればOKです。
また、pg_configコマンドにパスが通っていることを確認して下さい。バイナリの場合は問題ないと思いますが、ソースからビルドする場合は/path/to/postgres/binにパスを通しておいてください。pg_configとはPostgreSQLのインストールオプションとかを表示するコマンドです。PL/Parrotインストール時に必要なファイルはpg_configを使って探しているようです。
Parrotのインストール
LL TigerでDan Kogaiさんが紹介していたように、ParrotはRakudoのインストール時に
#perl Configure.pl --gen-parrot
と指定してやれば自動でインストールされます。が、PL/Parrotを使う場合にはParrotを個別にインストールすることをオススメします。
理由は、作者のBlogに
You must first install a recent version of Parrot and Rakudo Perl 6. I develop with Parrot trunk and Rakudo master because I often need very recent changes/bugfixes
http://leto.net/dukeleto.pl/2010/06/rakudo-perl-6-in-your-postgresql-database.html
とあるように、PL/ParrotはParrot、Rakudoの最新版の変更、バグフィックスを利用している為です。
Parrtoの最新版は公式を参照するとsvnで手に入るようです。
Packages & Source Code | Parrot VM
$svn https://svn.parrot.org/parrot/trunk parrot $cd parrot $perl Configure.pl $make $sudo make install
Parrotのビルドでこけることはそうそうないと思いますが、もしこけたらREADMEを見て、それでもだめなら開発者に連絡して下さい。
Rakudoのインストール
こちらも上で述べたように最新版をビルド。Rakudo最新版といえば、噂のRakudo Star。
公式を見るとtar.gzで配布しています。
http://rakudo.org/how-to-get-rakudo
$wget http://github.com/downloads/rakudo/star/rakudo-star-2010.07.tar.gz $tar zxvf rakudo-star -2010.07.tar.gz
ビルドする前にbuild-essential、libicu-dev、subversionが必要なのでインストールしておいて下さい。Ubuntuならこんな感じ
$aptitude install build-essential libicu-dev subversion
無事インストールできたら、Rakudoをビルド
$cd rakudo-star-2010.07 $perl Configure.pl --parrot-config=/path/to/bin/parrot_config $make blizkost-install $sudo make install
-
- parrot-confinオプションはparrot-configコマンドにパスがとっていれば必要ありません。パスが通っていない場合のみ、parrotのインストール先を指定して下さい。
blizkost-installはPerl6でPerl5のモジュールを動かすblizkostをインストールするためのオプションです。これも必要な場合のみ指定して下さい。
Rakudoのビルドもそうそうこけませんが、こけたらREADMEかメールで。
Perl6動くよ!
Rakudoのインストールまで終えるとPerl6を動かすことができます。
$perl6
とやってやるとインタラクティブシェルが起動するので、say helloとかしてみて下さい。
Rakudoをインストールするといくつかモジュールが付いてきます。LWP::Simpleもあるのでネットから取得することもできます。他のライブラリは
$ls /usr/local/lib/parrot/2.6.0/language/perl6/lib
ってやると一覧を見れます。インストール先を変えた場合は各自パスを読みかえてください。
githubにもちょこちょこPerl6のモジュールが上がってきているので、興味がある人は見てみて下さい。
PL/Perl6のインストール
ようやく本題です。
これも最新版を利用しましょう。まだまだ開発途上なので。
git clone http://github.com/leto/plparrot.git plparrot
次にPerl6のPBCの場所を環境変数で指定してあげます。PBCとはParrot VMのバイトコードファイルのことです。これを指定してあげないと、PL/ParrotをインストールすることはできてもPL/Perl6を動かそうとすると、インタープリターが見つからないというエラーが出て実行することができません。
$export PERL6PBC=/usr/local/lib/parrot/2.6.0/language/perl6/perl6.pbc
PERL6PBCを指定したら、PL/Parrotのビルド
$cd plparrot $make $make install
以上でインストールは終わりです。
PL/Parrot & PL/Perl6をPostgreSQL上で使えるようにする
PostgreSQLで各PL言語を使えるようにするには
$createlang {PL言語名} {DB名}
というコマンドを実行してあげる必要があります。その際に指定したDBのcreatelang権限を持っている必要があります。個別に指定することもできますが、ここではテスト用にスーバーユーザーとDBを新たに作成しましょう。
$createuser test Shall the new role be a superuser? (y/n) y $createdb -O test testdb
ユーザーとDBを作成したらcreatelangです。自分でやってもいいのですが、PL/Parrot、PL/Perl6他を一度にcreatelangしてくれるスクリプトが同梱されているのでそれを利用します。
$psql -d testdb -U test -f `pg_config --sharedir`/contrib/plparrot.sql
- dでDBを、-Uでユーザーを、-fで実行するファイルを指定しています。-fの引数ではpg_configコマンドでPostgreSQLのshareディレクトリを取得しています。もちろん直接パスを記述しても大丈夫です。
お疲れ様です
ここまでやればPL/Parrot & PL/Perl6を使うことができます。
$psql -d testdb -U test -C "CREATE FUNCTION hello() RETURNS text AS $$ return 'hello' $$ LANGUAGE plperl6; SELECT hello();"
という、LL Tigerで紹介したワンライナーを実行してみて下さい。
LANGUAGE plparrot
としてやればParrotのコードを動かすこともできます。
PL/Parrot & PL/Perlについては以下のURLを参考にして下さい。
http://pl.parrot.org/
GitHub - leto/plparrot: Embed Parrot+Rakudo into PostgreSQL
Google グループ
とはいえ、まだまだ情報は少ないです。PL/Parrotを使ったら是非情報を発信して下さい!
PL言語そのものについてはPostgreSQLの公式ドキュメントが充実しています。ドキュメントが充実しているのもPostgreSQLのいいところです。
第42章 手続き言語
Enjoy PL/Parrot & PL/Perl6!
LTの虎@Lightweight Language Tigerに出るよ!
技術系カンファレンスで初めてしゃぺるよ!
トーナメント形式なのに他の出場者が強い人ばっかりでガクブルだね。
みんな見に来てね。よろしく!
http://ll.jus.or.jp/2010/program/lt
Yokohama.pm#6 x PerlCasual#3に行ってきました
2010/7/23 Yokohama.pm#6 x PerlCasual#3@ネイバージャパン株式会社 カフェに参加してきました。
カフェという言葉に少し嫌な予感を感じつつ、着いてみると案の上尋常じゃなくシャレた空間。こういった勉強会にはいつも一人で参加しているので、オシャレな空間にぼっちという修行で心を鍛えつつ、去年参加したYAPC2009以来のPerlな集まりに胸を膨らませていました。
そうこうしている内に始まったので以下プログラム。敬称略です。ブログにまとめるつもりで聴いておらず適当なメモしか残してなかったので、抜けが多いと思いますが、ご了承を。
kazeburo - リソース監視ツール・フレームワークCloudForecastの紹介
Perlで書かれたリソース監視ツールCloudForecastの紹介です。そのまんまですが。
GitHub - kazeburo/cloudforecast: the server metrics gathering
- サーバー監視は主に2つ
- CloudForecastの売りは?
いい感じですね。PerlでWebサービスは作れても、ネットワークやハードウェアの話はさっぱりという僕のような人はきっとたくさんいるはずなので、そういう人にはぴったりのツールだと思います。
会社で使うとなると要件がどうとかの話がついて回るので、まずは家サーバーに使ってみようかなと思います。具合がよければ会社にもプッシュしみよう。
他、詳しくはkazeburoさんのブログで紹介されていますのでそちらを。
CloudForecastっていうリソース監視のツール/フレームワーク作った - blog.nomadscafe.jp
typester - WebアプリケーションエンジニアのためのiPhoneアプリ開発入門
Perlのセッションなのに、Perlのコードはほぼ出てきませんでした。
- iPhoneアプリはWeb APIと連携しているものが多い
- PerlerならWeb APIは作れるので、iPhoneアプリも作れたらまるごとできちゃう
- しかもObjective-CってなんかLLっぽい
- だからiPhoneアプリ作ろう
という話でした。完璧な理論です。
作る時のこつ
HTTP通信
- ASIHTTPRequestかlibcurlを使う。オススメはlibcurl。cのライブラリだけど問題なく使える。
- NSURLRequestは標準だけど。これを使うともれなく挫折
Blocks構文+Grand Central Dispatcher
- Blocks構文とはcでいう無名関数。コールバックみたいのが簡単に書ける。
- これにGCDを組み合わせると、スレッドっぽく通信中に処理をブロックしないようなコードを簡単に書ける。
プッシュ
つまり
- libcurl + JSON Frameworkが最強に楽
- 通信中に処理を止めたくないならBlocks構文 + GCD
- プッシュ通知したいならAnyEvent::APNS
PerlCasual 初心者向け勉強会 テーマ: Web API と Twitter ボット等
の二部構成でした。
yusukebe - PerlとAPI
というごく基本的な内容でした。
一つ一つのステップを漏らさず説明しようとしていたyusukebeさんから、Perlをカジュアルに使ってもらおうという目的に対する本気度がひしひしと伝わってきました。
残念ながらというか、会場にはあまり初心者の方をいなかったようです。
なので、次は自分の参加は見合わせて、代わりに周りのPerlやってみたいけど何つくろう?という人や、Webサービス作ってみたいどうやればいいの?という人に行ってもらうように、どんどんプッシュしていこうと思います。そういう人は参加して絶対に損はない!と思わせるだけの内容でした。
WEB+DB PRESS Vol.58とメディアミックスするという技術系初?の試みをしているそうなので、詳しい内容はそちらを参照してください
Yappo - 位置情報の使い方
位置情報の取得
- Geolocation APIでできるよ!
- ただし常識的なブラウザに限る
polocky - それいけアパッチログレスポンス時間解析
始まったと思ったら終わっていた。何をいっている(ry
マシントラブルで聞けませんでした。実は一番聞きたかったりしたので、残念です。
piarra - Use::Strict::Fast
帰ってから知ったのですが、比較.com - あらゆる商品・サービス・価格の総合比較サイトのCTOの方でした。。そうと知らずどんな会社なんですか?とか質問してしまった、、、
use strict::fastすると早くなるよ!
- なんと6%もの高速化が!
- 本当のおすすめはcommon::sence
- strict, warnings, utf8とかをまとめてやってくれる
おまけ
プレゼンに一ひねり加えたくて当日に作っちゃったらしいです。一秒切れない、、、あの場で0.5秒台をたたき出すとかすごすぎ。さらにmalaさんがXSSでハックしていたとか。
まかまか - 夏コミ新刊Perl同人誌の宣伝
Acme大全の方の、今年の新作の紹介でした。去年は買いそびれてしまったので、今年はチャンスがあればすかさず購入したいです。
以上です。要所要所にネタをしこんでいたり、当日に用意した発表じゃ物足りないといってWebサービス作っちゃたり、エンターテイナー精神あふれるプレゼンが多くて、楽しく聞けました。ただ、やはりPerlcasualとして想定していた層とは少しずれていた感が。Perlの裾野を広げるのがPerlcasualがこういう勉強会を開く目的だと思うので、そういう意味では上に書いたように周りのちょっと興味あるレベルにどんどんPerlcasualを推していくのが、自分にできる貢献の一つなのかなと思います。
最後に素敵なイベントを企画していただいたyusukebeさん、会場を貸していただいたNAVERさん、他運営に携わった方、スピーカーの方、ありがとうございました!