YAPC行ってきました(2日目)

2日目です。
この日は朝から風邪が悪化して行くのがかなりつらかったんですが、
なんとしても行きたかったので午前中休んで午後から行ってきました。

Evolution of API With Blogging

  • comewalkさんのBlog APIについてでした。
    ブログに関しては私はあまり知らないのでちゃんと理解出来てなかったです。
    内容としてはRSSAtomなどのフィードとかトラックバックの話が主でした。
    あと聞いたことなかったPubSubHubbubは後で調べてみようかと思いました。



なぜ、高校生がPerlを使うのか?

  • 次は北海道の高校生akiymさんの発表です。
    きっかけが小学生で掲示板を作りたかったとかで、30代の私にはピンとこないジェネレーションギャップを感じました。。
    実際Perlをやりだしたのが中学生の時で影響を与えていたのがなんとゆーすけべーさんwww
    流石だと思いましたwwあの人は中高生の神ですねwでもこうやって中高生がPerlを初めている時代っていいですねー。おっさんも頑張らないと!



PerlでJCL、基幹バッチをダウンサイジング

  • 次はminemazさんのCOBOLとかJCLとかの話です。はっきり言ってさっぱり分かりませんでしたww!!
    ただ、COBOLの話がなんとなくウケました。



Perlで仮想サーバ制御

  • 次はdebilityさんのPerlで仮想サーバ制御の話でした。
    libvirtとかSys::Virtを使うと仮想サーバー制御が出来るようです。
    またBeccoameというのがEC2っぽいクラウド製品らしいので、機会があったら使ってみたいと思います。
    まー何より福岡が熱いようです。特に福岡ではRubyが盛り上がっているようなので福岡出身のエンジニアが福岡に戻らないように気を付けたいですww



LT Day 2

  • LT2日目です。
    なぜか最初の方にEmacsやCommonLispとかPerl関係ない話が続きましたが
    2日目で面白かったのはkamipoさんのMySQLでMessagingPack検索とかやっぱりtakesakoさんの無理げー攻略ですね。
    Yappoさんの転職後の仕事内容とかも面白かったですねー。勉強になりました
    ガイアックスさんの福岡自慢も面白かったですwやはり福岡熱いですねー



Managing A Band Of Hackers

  • 最後は期待のhidekさんの発表です。
    マネージメントの苦労話やどうやったらGeekを抱えてやっていけるかなどマネージメント側の私としても非常に共感できて為になりました。
    また自分がエンジニアのマネージメントとしてやってきたこととあまりズレていなかったので、
    自分のやり方が間違ってなかったと思い、これからもこの方向で進もうという後押しをされたような気分でした。
    やはりエンジニアのマネージメントはエンジニアしか出来ないですよね!
    それと同時に尊敬されるエンジニアにならないとエンジニアはついても来ないなーと思い、これからもエンジニアとして頑張っていこうと気合が入りました。



まとめ

  • 今回初めてYAPCに行きましたが、勉強になったというより(勉強にもなりましたが)いい刺激を受けてまた頑張ろうとう気になれたのが一番良かったです。
    今後はもっと勉強して出来ればコミュニティにも貢献出来るようになりたいし、こういういい影響を与えられるエンジニアになりたいなーと実感出来、いい時間を過ごせました。
    来年は風邪に気をつけよう!

YAPC行ってきました(1日目)

YAPC行ってきました!
以前からShibuya.PMとかは行っていたんですが、実はYAPC初めてなんです。

そんなタイミングで風邪を引いてしまいましたが、重たい体を引きずっていざ大岡山へ


今回は私が所属しているngi groupもスポンサーとして参加させていただきました。
色々ご案内してくれた941さんには感謝です。



ちょっと遅れていったので既に始まっていました。。

Perl 5.16 and beyond

  • まずはJesse Vincentさんの「Perl 5.16 and beyond」です。
    印象に残ったのはPerlの今後について。現在のPerlは5.14.2ですが、今どんどん開発が進んでいます。
    今後は下位互換性を持たせながらコア機能をどんどんCPANに移行してスリムにしていきEncodeやwarningなどもデフォルトとして標準化していくということでした。今後のPerlも期待ですね。



Carton: CPAN dependencies manager

  • 次はPerl界のロックスター宮川さんです。(写真がうまくとれてませんでした。。)
    今回の宮川さんの発表は「Carton」について。
    いわゆるCPANモジュールなどのVersionによる依存関係を解決するモジュールです。
    個人的にはlocal::libをよりソリューション的にしたモジュールのように見えました。
    Makefile.PLにモジュールとバージョンを書いておけばそのアプリ用に自動でモジュールをインストールしてくれるようです。
    carton installで一発インストール出来るみたいです。これCapistranoに是非仕込んでdeploy時に解決してくれるようにしたいですねー。



SmartPhone development guide with Node/CoffeeScript and HTML5 technologies, for Perl programmers

  • 次はGreeのnaoyaさんの発表です。
    やはりスマートフォン関連ということで要チェックです。
    最近のアプリの作り方としてネイティブ+Webのハイブリッドが主流らしいです。
    実際には以下のプロダクトを使用して作っていくようです。それぞれ特徴なども合わせて。
    • PhoneGap
      • UIWebViewのjsにネイティブブリッジjsで実装。JITコンパイラがないのでちょっと遅い
    • Titanium Mobile
      • Javascriptで記述してネイティブコードを吐き出す仕組み。細かいチューニングが出来ず、純粋なネイティブに比べると遅い
    • SL4A
      • PerlAndroidアプリが書けるが、速度や安定性を考えるとおもちゃのようなもの
  • まとめとして今後この方向性のFWは増えていきそうなので、チェックが必要そうですね。
  • ちなみにサーバー側ですが、クライアント側をJSで書くならサーバーもってことでNode.jsについても言及されていました。
    Nodeも今開発が進んでいてFWやモジュールなどが充実してきているようでした。
    またNodeの売りでもあるWebSocketに対応するsocket.ioですが、PerlでもPocketIOというものがあるのでPerlでも全然いけそうです。nodeのもう1個の売りのイベントドリブンもAnyEventで実装出来そうだし。でもやっぱり今後nodeは熱いです。早く手をつけなければ!



Rubyist のための Perl ウェブアプリケーション開発入門

  • お昼ゆっくりしていたらMarc LehmannさんのAnyEvent、Coroについてを見逃してしまったので、あとでyoutubeでチェックするとして、次はペパポの刺身☆ブーメランさんのRubyistのためのPerlウェブアプリケーション開発入門です。
    以下RubyPerlの比較
  • Ruby
    • Enviroment
      • RVM(Ruby Version Manager」でrubyのバージョン管理をする
    • WAF
      • Railsではなく最近流行りの軽量FWとしてSinatra、Padrino、Ramazeがあるよ
    • Platform
      • Rubyが使えるPaasとしてHeroku
  • Perl
    • Enviroment
      • 言わずと知れたperlbrew
    • WAF
      • Catalystではなく軽量FWではDancer、Mojolicious::Lite、Amon2::Liteなんかがあるよ。実は僕まだ使ってないので早く触りたい。
    • Platform
      • PSGIが動くPaasって?→dotCloud、ありました!
  • 結論:PerlRubyも同じような問題があり、同じような解決策がある。どっちもいい感じ!
  • そしてペパポさん、福岡に支社を作るようです。
  • 実はdotCloud名前は聞いてたんですが、PSGIが使えるとも思ってなかったので、早速実践したいです!



Perl Mongerなりきりカードゲームの考案と実践

  • なんとなく流れでそのままいたんですが、まかまかさんのPerlでカードゲームっていう謎の公演が始まりました。
    なんかPerlのカードゲームを作ったらしいです。「Parumon」。。詳細は語りませんが、かなり大爆笑でしたww



perl meets beats.

  • Perlと音楽?と思っていましたが、techno_nekoさんが実際に聞いているとPerlで音をWaveファイルに書き出すとのこと!昔僕も音楽やっててかなり打ち込みにハマッていたのでワクワクな感じになりました。
    中身としてはWaveファイルフォーマットの話から始まり、波形データや波形以外のメタデータPerlでpackして書きだすとWaveファイルが作れるようです。
    その後ドラム音の波形などの話があり、私も昔Cで音楽を作ろうと思って挫折したことを思い出しました。
    またGrooveの作り方など(おっcubase的なとこキターー!)やtechno_nekoさんが作っているモジュールを見てオシレータパラメータとかアンプパラメータがあり、オモシロ懐かしく興味津々で聞きいってしまいました。このあと「あのモジュール、オシレータとアンプがあったからフィルターとかもないのかなー」なんてつぶやいたらtechno_nekoさんから「すいません。間に合いませんでした!」とのリプライが。
    分かってらっしゃるwwリプライいただけて大変嬉しかったです!ありがとうございました。
    ぜひ今度社内のどこかで私も音楽発表したいです!
  • これ後で絶対触る!



他言語から見たPerlのテスト

  • その後くらいから風邪が辛くなってきて息切れしてきたので、申し訳ないですがさらっと書きます。
  • Perlでのテストについてですが、PerlにはTest::More、TAPを始めとする色々なテストFWがあり、またウェブ再現系のCatalystのテストやPlackのテストなど色々あるようです。テストってついつい手を抜いてしまいますが、テスト計画に基づいたリグリッションテストはちゃんとやったほうがいいですねー。
    気になったのはスタブとモックは明確に違うようです。混同してました。。実際の処理をするのがスタブでハリボテオブジェクトがモックですね。
    なるほどです。



Apporoで類似文字列検索

  • 類似文字列検索ということで、全文検索システムのApporoを紹介してもらいました。
    LuceneやSimStringと比較されていました。メンテナンスコストをかけずに類似検索が出来るって便利ですねー。全文検索使う際は今後検討してみたいです。



LT Day 1

  • この日の最後はLTです。
    気になったのはKAYACさんのPerl道場とかYappoさんのIkachan、kamipoさんのDBIx::Handlerとかですね。
    でも一番爆笑だったのがSixApartさんのiSteveですね。
    詳しくは動画を見てください。
    あとリクルートさんのMA7も気になりました。
    社内からも何名か参加してみたいと思います。




1日目まとめ

  • 1日目からお腹いっぱいの内容でした。また色々やりたくなってしまいました。懇親会出たかったんですが熱があってあまりにもつらかったので(帰って計ったら38度超えてた。。)泣く泣く帰りました。
    2日目に続く・・・

MySQLからPostgreSQLへ移行するときの注意

元々MySQL使ってましたがGISの関係で急遽PostgreSQLに変更したのでメモ

LIMIT [offset], [limit]
OFFSET [offset] LIMIT [limit]
  • UNIXTIMESTAMPへの変換
UNIX_TIMESTAMP([datetime])
extract(epoch from [timestamp])
  • ジオメトリー扱い
    • MySQL
      • CREATE TABLEでGeometry型を指定
CREATE TABLE hoge (
    id int NOT NULL 
    point GEOMETRY NOT NULL
);
CREATE TABLE hoge (
    id integer NOT NULL
);
SELECT AddGeometryColumn('hoge', 'point', 4301, 'POINT', 2);

※ちなみにAddGeometryColumnの引数はテーブル名、カラム名、SRID、次元です
※SRIDはよくわかりませんが、4301が日本測地系らしいです。

中間管理職

久しぶりの投稿。
最近管理業務で忙しすぎ。
というのも最近の人事で縁があってか
出世して完全に管理職になってしまいました。
ちょっと前にアフター5プログラマーとか言ってたけど今はアフター5も管理業務。
プログラムもたまには書きたいけど
みんなが楽しくプログラムを書くための
環境を作るためにも、中間管理職は頑張りますよ!

JQuery UIのダイアログでやっちゃった。。

クローズのイベントハンドラにクローズ書いたらダメだよね。

$("#dialog").dialog({
  bgiframe: true,
  autoOpen: false,
  height: 200,
  width: 400,
  modal: true,
  buttons: {
    '登録': regist,
    'キャンセル': function() {
      $(this).dialog('close');
    }   
  },  
  close: function() {
    $(this).dialog('close');
  }
});

全部これでやってたから全部修正しないと。。
でもstackoverflowって出るのはIEだけなんだよね

jqGridでフッターにサマリを付ける方法

以前sigmaGridで出来なかったグリッドのフッターにサマリを付けることが
jqGridだと簡単に出来てしまいます。

$("#list").jqGrid({
  url:'report.pl',
  datatype: 'json',
  mtype: 'POST',
  colModel : data, 
  rowNum:50,
  rowList:[50,100,200],
  jsonReader: {
        repeatitems : false
  },  
  pager: '#pager',
  caption: 'レポート',
  height: '480',
  width: 800,
  footerrow : true,
  userDataOnFooter : true,
  altRows : true
});

まずfooterrowでフッター行の表示設定をします。
次にロード時にサマリデータをフッター行にセットするuserDataOnFooterを設定します。
これでuserdataというハッシュを戻りのjson内にセットするとサマリが表示されます。
もちろんuserdataのハッシュの中身はcolModelと同じキー名で値に各サマリデータです。
簡単ですね。

なんだかCPANにコミットしたくなったので

これを参考にまずPAUSEアカウントの申請をしてみた
http://www.kawa.net/works/perl/tips/cpan.html


DBIx::Class::Fixturesみたいなモジュールを作ろうと思ってます。
このモジュールってデータ管理がyamlで1レコード1ファイル作成されるので
管理がものすごい大変でテーブル構造変わったら毎回データの作り直しになるんですね。
以前Javaやってたときに使ってたDBUnitExcelベースでテストデータを作って
compareもExcelベースで出来ていたので、これをDBIx::Classで実装したいなと思ったのと
ついでにCPANコミットもいい経験になるかなと急に思い立ったのでまずアカウント申請してみました。

また追って報告します