YAPCへの道(2)

まぁ、ダメもとで申し込んだので、ダメならLTに応募しようと考えてます、
暑いですね、こんばんは。

やっと、行きの飛行機を予約したので、
明日にはその支払い期限がきちゃう訳ですが、
明日は帰りの飛行機を予約する予定です。
宿泊は、羽田空港と大岡山を行き来できる場所を予約する予定です。

で、perl meets beatsですが、
WAVファイルの出力を、もう少しきっちりやりたいのと、
読み込みもサポートできたらいいなーって思ってます。
それから、発振処理が思った通りに書けたので、ちょっとうれしいかも。
さっさと、シーケンスを読み込ませて、グルーヴを実装したいです。

おしまい。

ソーシャルボタンを付けたよ

WP Social Bookmarking Lightを入れてみた。

いっぱいアイコンが表示されてるけど、
個人的には、この作者さんのサイトみたいにシンプルな感じになるように、
これからカスタマイズする予定。

ところで、どこから設定するのか分からなくて、
プラグインの一覧に設定が出てこなくて悩んだ数分後に、
左側の「設定」をクリックしたら一覧に追加されてたので、
無事、変更完了しました。

めでたし、めでたし。

PostgreSQL勉強会に行ってきました

昨日は、PostgreSQL勉強会@札幌に行ってきました。

1. 削除フラグ(syachiさん)

削除フラグと仲良くするために、

  1. テーブル作成時に部分インデックスを張る
  2. PKEYを別の用途に使って、親から子に伝搬する
  3. トリガーを使ってDELETE実行時に、
    削除したレコードを違うテーブルに移動する(削除フラグどこいった?)

トリガーも最小限にしましょう。

遅れてくる刺客

  • 一時保存フラグ
  • 一時停止フラグ

これフラグじゃなくて、ステータスでしょ。
業務分析をちゃんとやりましょう。

2. XIDを周回させてみよう(iakioさん)

XID(トランザクションID)の周回とは、

  • あるはずのデータが見えなくなってしまうという、
    XIDの周回問題と呼ばれる現象があるらしい
  • でも、滅多にお目にかかれない
  • 古いバージョンで20億回トランザクションを行うと見れたらしい

しかし、XIDの周回を防止する仕組みは、いくつか実装されている

XIDが周回させるデモンストレーション

  • あるはずのレコードが見えなくなった!
  • PostgreSQLが壊れた!

「定量的なバキューム操作」に目を通すといいよ!

感想

まずは、おつかれさまでした。
数年前にSQLを書いて以来、
DBはblogの設置程度にしか触っていなかったので、
こういう機会でもないと学べないと思い、参加しました。
特にPostgreSQLについては、ほとんど知らなかったのですが、
削除フラグとかトリガーのようなノウハウや、
XIDを周回させるようなプログラム内部の話が聞けて、
とってもカジュアルな勉強会だったと思います。
マイグレーションやpgTAPなどいろいろ気になったので、
次回もぜひ参加したいと思いました。
こういう機会を設けていただき、ありがとうございました!

おしまい。

OpenMPはじめました

#include <stdio.h>
#include <omp.h>

int main(void)
{
	#pragma omp parallel
	{
		printf( "hello world.\n" );
	}
	return 0;
}

って書いたCソースを”test.c”ってファイル名で保存して、

$ gcc -fopenmp test.c
$ ./a.out

ってやれば、コア(スレッド)の数だけ、”hello world.”が出力されるよ!
(Xcodeが入ってないとか、gccのバージョンが古いとダメかも・・・。)

実はこのプログラム、
すべてのコア(スレッド)をフルに使って”hello world.”を出力してるんだよ!
もう、並列プログラミングに片足突っ込んだも同然だね!!

ちなみに、手元のMacBookAirに入ってるgccのバージョンは、
gcc version 4.2.1 (Apple Inc. build 5666) (dot 3)
でした。

おしまい。

YAPCへの道(1)

YAPC::Asia Tokyo 2011のスピーカーに申し込んでみた。

去年の今頃だったと思う、初めてのLTをHokkaido.pm#1でやったのは。
それがきっかけで、YAPCやperl界の有名人の名前を覚え始めた。

それから、釧路LDDでLTして、Hokkaido.pmでLTして、
LTハッカソンにも参加して、OSC Hokkaidoの懇親会でLTした。
テックトークはHokkaido.pmで10分枠を1回やった。

とにかくYAPCに参加してみたいし、友達欲しいし、
なによりコミュニティに参加したという思い出が欲しかった。

まずは、搭乗券と宿の予約から・・・。

Hokkaido.pm#5に行ってきました

みなさん、お疲れ様でした!
今回もJPAのご協力で、nekokakunekokakさんが来てくれました!
(7/19 nekokakさん、ご指摘ありがとうございました><)

という訳で、まずは懇親会からの一枚。
カニの写真

本日のメモ

  • SDLを使ってperlでゲームを作る。
  • mod_perlを使って、リクエストを受け取ってごにょごにょする。
  • libperl++は動かない。
  • カンファレンスは、情熱を貰うところ。
  • テスト駆動開発は、まず失敗するテスト書く。

あと、LTもやりました。
perl meets beats(LTで使ったスライド)

ちなみに動くperl meets beatsはこちら。
https://github.com/techno-cat/NeSynth
SandBox/beats.plが今回お見せしたコードです。

感想
毎回思うのですが、やはり本州から来てくれるのはありがたいです。
初スピーカーの方も話す事がないなんて言いながらもすばらしいトークで、
スピーカーのマンネリ化も着実に改善している気がします。
ゲストを呼ぶことで、確実にスピーカーが変わるのもポイントですよね。
よく、USTで他所のLTを見てると何人もやってるので、
それを羨ましく感じていたのですが、
Hokkaido.pmもこうやってLTで盛り上がれて、すごくうれしかったデス。
そして何より、情熱を貰えたので明日からがんばれそうデス。

P.S.
あと、perl meets beatsのあらぬ疑いはおいしかったデス!

phpとmysqlをアップデートしました

ServersMan@VPSを使ってるのですが、
WordPress3.2を入れるには外部リポジトリからphpとmysqlをアップデートする必要があって、
これまた不慣れなのでおっかなびっくりやったのですが、なんとかなりました。

まずは、「php serversman」とかでググるといろいろ出てくるのですが、
アップデート後、こんなエラーに遭遇しました。

PHP Warning: PHP Startup: Unable to load dynamic library
'/usr/lib/php/modules/imagick.so'
- /usr/lib/php/modules/imagick.so:
undefined symbol: php_set_error_handling in Unknown on line 0

php-pearがアップデートから漏れてたので、
先にこれをアップデートした後、こんな感じで回避しました。
$ pecl uninstall imagick
$ pecl install imagick

おしまい。

bassment 10th Anniversary

bassment 10th Anniversary

bassment 10th Anniversary

まずは、bassment 10周年おめでとうございます!

今回は、金曜と月曜に有休を取って、万全の準備で行ってきました。
10周年ということもあり、フロアも大賑わいでした。
自分はというと、しばらくはドアの前で涼みながら、
空いたのを見計らって踊ってました。

正直に言うと、後半は眠くてあまり覚えてないのですが、
一番印象に残ってるのみんなの笑顔です。
帰り際、みんな笑顔で手を振って帰っていく、
これがパーティーですよね。
今年も参加できて良かったと心から思いました。

それでは、来年もみんな笑顔で帰れますように!

P.S.
三日月のつけめん、おいしかったデス!
ごちそう様でした!!

Sapporo.coffee#2に行ってきました

今日は、えにしテックさんにお邪魔しました。
おいしいコーヒーを頂きながらのCoffeeScript勉強会デス。

※以降は、MacOS Xで実行したメモです

1. homebrewのインストール
https://github.com/mxcl/homebrew
rubyスクリプトが載っているので、それを使ってインストール

2. node.jsのインストール
Xcodeがインストールされていることを前提に、
$ brew install node
(このMacBookAirだと、インストール完了まで約6分)

3. npmをインストール
$ curl http://npmjs.org/install.sh | sh

4. CoffeeScriptのインストール
どこからでもコマンドを使うためには、-gオプションを付ける
$ npm install -g coffee-script
(-gオプションがないと、パスの設定が必要になる)

5. 実行方法

  • コマンドライン
  • コンパイル(JavaScriptに変換)
  • ブラウザ(実行時にJavaScriptに変換)

6. 便利なモジュール?cakeコマンド
まず、Cakefileというファイルがないと、cakeコマンドがエラーになる

7. CoffeeScriptのドキュメント生成
PygmentsのCoffeeScript専用ラッパー

$ easy_install Pygment
$ npm install -g docco

スクリプトとコメントが左右に分離されたHTMLが出力される

8. テスト
CoffeeScriptのテストフレームワーク
https://github.com/pivotal/jasmine

9. 困ったこと

  1. CoffeeScriptだった時のエラー番号が表示されない
    -> 作者も認識している問題
  2. ECMA Script5で実装されたsetter/getterがCoffeeScriptで表現できない
    -> しばらくは対応しないってIssueに書いてある
  3. IE6だと、GCの関係でメモリリークが起きる場合がある
    関数の戻り値で参照とか返す場合に起こりえる
  4. 関数の最後に付加されるreturnが頻発して見づらくなる
    -> CoffeeScript上でreturnを書くことで回避できる
  5. C言語のforに相当するJavaScriptを生成しようとしても意図しない結果になる
    ex.)
    # aとbは変数
    hoge for number in [a..b]
  6. すべての関数が無名関数なので、デバッグがしずらい
    -> JavaScriptをCoffeeScriptに埋め込むくらいしか・・・

ってな感じの内容でした!

個人的な感想
最近、JavaScriptに興味が出て、CoffeeScriptのリアルタイム変換に感動して、
勢いで参加してみた訳ですが、node.jsがインストール出来たし、
とても有意義な時間を過ごすことが出来ました、感謝!!
でも、C言語のforに相当するJavaScriptが生成できないのは気持ち悪いですね。

これが、
list = [ 1, 2, 3, 4, 5 ]

n = list.length
console.log( list[i] ) for i in [0..(n - 1)]

こうなっちゃう。

var i, list, n, _ref;
list = [1, 2, 3, 4, 5];
n = list.length;
for (i = 0, _ref = n - 1; 0 <= _ref ? i <= _ref : i >= _ref; 0 <= _ref ? i++ : i--) {
  console.log(list[i]);
}

次回は、読書らしいので、都合を合わせて参加したい所存です。
関係者のみなさま、今日は大変ありがとうございました!

おしまい。

カフェで更新

実はe-mobileを契約しました。
MacBookAirを買ったからには、カフェでブログとか書いてみたいじゃないですか。
あと、perlとかしてみたいですよ。

そんなこんなで契約を済ませて、
PocketWifiを入れる袋を買ったり、PCアクセサリを入れるポーチも衝動買いして、
今はカフェでブログを書いてます。

次は、カフェでプログラムを書いて、カフェでコミットとかしてみたいです。

ではでは。