YAPC::Asia 2012 に参加してオッサンであることを実感できました #yapcasia

f:id:hayajo_prpr:20121001084951j:plain

昨年に引き続き YAPC::Asia に参加してきました。

昨年のブログは...ありませんね。きちんとブログを書きましょう。>自分

LTソンに参加させていただきました

メインセッションとは別に、LTソンというイベントが行われました。

お世話になっている Hachioji.pm 主催のイベントということで、事前登録して参加させていただきました。

発表資料はこちらです。

Perlプチコン」ということで、拙作の p5-Data-Petitcom を紹介しました。

ベーマガ知らないのね...

プログラマが集まるイベントなので、ベーマガ知ってる・読んでた方々がたくさんいるだろうと思っていたのですが、LT聴いていた方々の1/5ぐらいでした。んぐぅ。

まぁそうですよね。懇親会でお話させていただいた方の半数以上は、私と一回りぐらい年齢が違いましたもんね。

思えばずいぶんとオッサンになったものだなぁと。

年齢でもうひとつ

尊敬するある方の年齢が判明。

ずっと年下だと思っていたのですが、実は年上の方でした。年齢をまったく感じさせない若さよ...

ちなみに相手は私の方が年上だと思っていたそうです。

お互いの認識としては合っていたわけですが、まぁ...その...なんだ...

メインセッション

インフラ系のセッションを中心に聴講しました。

個人的にFluentdまわりのお話が大変参考になったのですが、懇親会で登壇者の方々にもうちょっと突っ込んだ話を聞けばよかったなぁと後悔。

下記の3つのセッションがベストトークだとオレの中で話題に。

というわけで

今年も大変楽しく、刺激を受けるイベントでした。

YAPC::Asia 運営の方々はもちろんですが、LTソンという楽しいイベントを用意して下さった Hachioji.pm のメンバーの方々も、たいへんお疲れ様でした。

Niigata.pm も負けじとがんばりますね! (主に猫型さんがw)

Niigata.pm tech talk #2 に参加しました #niigatapm

niigatapm

すでに1週間以上経過していますが、そこはご容赦を。

詳しいまとめはこちらをご覧ください。

あと写真は主催の @neko_gata_s さんが作成した Niigata.pm ステッカーです。ありがたや。

今回は「データ処理」

お題はデータ処理ということで、みなさんテキスト解析分類器を中心にお話されていました。

なるほど…よくわかっ…たようなわからないような。

自分の知識が深まったかどうかは別として、このあたりの技術で困った場合は、皆さんに聞けば詳しく解説していただける!ということが分かっただけでも収穫です。テヘペロ。

LTではご迷惑をお掛けしました

さて、LTで発表をさせていただいたのですが、時間を無視して長々と話してしまったため、後続の方々の発表時間が極端に少なくなってしまいました。

大変ご迷惑をお掛けしてしまいました。申し訳ありませんでした。

発表内容は、目下作成中の Data::Petitcom というモジュールの解説とデモを行いました。

現在も修正&機能追加中なので、YAPCを目処にスライドと併せて公開する予定です。

作成が間に合うようなら LT-THON への参加してみようかなと思っています。がんばれ自分。

次回のテーマ

開催日は未定ですが、テーマは「ちゃんと入門! Perl(みたいな感じ」のようです。

@aokcub くんによる Mojolicious 講座もある(ホントか!?)よう なので、次回の開催が待ち遠しいですね。

というわけで

Niigata.pm に関する情報は TwitterアカウントML でお知らせされるので、お見逃しなく。

それでは YAPC::Asia Tokyo 2012 で会いましょう。あでゅー。

LL DECADEに参加してきました。 #lldecade

f:id:hayajo_prpr:20120808094412j:plain

お仕事の一環でLL Decadeに参加してきました。

LL ほげほげ の存在は知っていましたが参加したことはなかったので楽しかったです。

お祭り的なノリのイベントだったので軽くまとめる程度に。


基調講演(@miyagawaさん)

Language Update Decade

プログラム言語処理系を自作してわかったこと

「なるほど。よくわからん。」と聴いていました。

mruby面白そうですね。

俺たちの継続的hogehogeは始まったばかりだ!

LT

@kakutaniさんの言葉はすごく響きました。

頭では分かっていても実践は難しいのですが、この姿勢を忘れたくありません。精進せねば。

あと@takahashimさんの生高橋メソッドを聴けて、とても満足です。

リンク


最近まったくPHPを触っていないのでトレンドが分かりませんが、FuelPHPがよさそうな感じなんですかね。Tシャツ着ている人を見かけましたし。

会社の人にすすめてみよう。


前日に孤独のグルメで採りあげられた 中国家庭料理 楊 2号店 さんの「汁なし担々麺」を食べてきました。山椒がかなり効いていてしびれますが、とても美味しかったです。

あと吉祥寺楽しい。またいきたい。

NDS#27 「Git 入門ハンズオン + いつものLT」 に参加したのでメモ #nds27

f:id:hayajo_prpr:20120729011842j:plain

第27回勉強会(2012/07/28) - 長岡 開発者 勉強会(NDS)

というわけで、Git 入門ハンズオンでの個人メモです。

ハンズオンで解説していないことも書いていますがお気になさらず。(LTまで手が回らなくてごめんなさい)

詳しいところはやんごとなき方々のダイナミックかつスリリングな参加レポートに期待しましょう。


追記です。素晴らしいまとめが公開されました。

こっち読んでこ!

Togetterもありますぞ。


  • HEAD^とHEAD~の違い。

    HEAD^^^^^とかするの大変だからHEAD~5とか。

    HEAD^ == HEAD~

  • git-reflogは必修です。

    git reset –hard とかしちゃっても安心。あきらめないで!

  • branch切ってこ。

    一人開発だと「まぁブランチ切らなくてもいいかなー」なんて考えがちですが、しっかりブランチ切ってこ。

    git add -p (後にsでハンクを細かく区切る)でコミット単位を調整するやりかたではなく、ブランチ切ったほうがよさげですね。

  • mergeとrebaseの使い分け指南。(@neko_gata_s流)

    • 統合ブランチにトピックブランチを取り込むときはmerge。

    • トピックブランチに最新の統合ブランチを取り込むときはrebase。(履歴を一本化)

    このへんは運用で変わりそう。一人開発なのでこのまま採用だけどwww

    mergeとrebaseはここがわかりやすい。

    ブランチの統合【ブランチ】 | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ

  • ~/.gitconfigにaliasを定義して(゚д゚)ウマー

    個人的にこんな感じ。graphのフォーマットはお好みで。

    [alias]
          co = checkout
          br = branch
          st = status
          graph = log --graph --date-order -C -M --pretty=format:\"<%h> %ad [%an] %Cgreen%d%Creset %s\" --all --date=short
    
  • git-now, git-master がよさげ。

    これですかね?

    メモ:git-nowとgit-masterのURL « be free

  • コミットログは「In English, please.」らしいです。

    これ読んででなおしてきます。

    Changelogのための英文テンプレート集 - ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き -


間違っているところがあったらご指摘ください。それでは。

JSON日の金曜日@新潟 1週目 に参加しました #friday13json

image

「昔はEmacsを使ってたが小指に矢を受けてしまってな…」hayajoです。

そういえば仕事中になぜか左手小指に大型のダブルクリップを装着してプログラミングをしていたのですが、EmacsだろうがVimだろうが、小指が使えないとまともにキーボード叩けませんね。小指大事。

JSON日の金曜日@新潟 1週目 7/13(金) #friday13json : ATNDに参加してきました。絵はまったく関係がありませんね。

さて、内容は…

「JSONのRFCを読んでみた」(@saisa6153)やらAndroidで使えるJSONライブラリ」(@Nkzn)やらObjective-CでのJSONライブラリ」(@dictav)やらpythonでJSON」(@mihyaeru21)やら「JSON, BSON, MessagePack, YAML」(@neko_gata_s)やら「GroovyでJSON」(@toby55kij)やらperlでJSON」(@John_7701)やらOpenPNEでJSONでiOSアプリ」(@eb___)と、もりだくさんでした。(内容うろ覚えな部分もありますので間違っていたらごめんなさい)

ネタ勉強会だと思っていたのですが、みなさんしっかりと資料を用意してきていたのでびっくりしました。

最近、勉強会に参加するたびに発表内容のハードルが上がっている気がします。「資料用意できませんでした。テヘペロ。」な勇者がなかなかいませんね。あぁ胃が痛い

ボクの発表は…

VimとJSON」というお題で発表させていただきました。

最近Vimスクリプトをさわり始めたばかりなので勉強不足な感が否めないコードだと思われますが、改善点があればご指摘いただけるとうれしいです。

Vimスクリプトは「関数の引数の扱い方やら変数のスコープやらが結構面倒かなぁ」なんて小生意気にも思ったり。

雑談にて…

スマホでVim使いたい。で、日本語も入力したい。

リモートサーバーにvimskkの環境を用意してssh経由でやってみてはいかがでしょうか。skk使ったことないですけど。

環境構築にはさくらのVPSとか安くておすすめですよ。

でも素直にパソコン用意したほうがよいかと思います。苦行。

ちょろっとVimの設定を…

あとVimnormalモードとinsertモードを視覚的にわかりやすく云々って話もでたようなでなかったような気がしますが、ボクの設定はこんな感じです。求められていないかもしれませんけどね。

普段はターミナル(putty.exeやTerminal.app)越しにVimを使っているので、IMEの状態を視覚化するのはあきらめています。

set cursorline

let s:hi_insert = 'highlight CursorLine guifg=white guibg=darkred gui=bold ctermfg=white ctermbg=darkred cterm=bold'
let s:hi_normal = ''                                                            
if has('syntax')
    augroup InsertHook
        autocmd!
        autocmd InsertEnter * call s:CursorLine('Enter')
        autocmd InsertLeave * call s:CursorLine('Leave')
    augroup END
endif

function! s:CursorLine(mode)
    if a:mode == 'Enter'
        silent! let s:hi_normal = 'highlight ' . s:GetHighlight('CursorLine')
        silent exec s:hi_insert
    else
        highlight clear CursorLine
        silent exec s:hi_normal
    endif
endfunction

function! s:GetHighlight(hi)
    redir => hl
    exec 'highlight '.a:hi
    redir END
    let hl = substitute(hl, '[\r\n]', '', 'g')
    let hl = substitute(hl, 'xxx', '', '')
    return hl
endfunction

ご飯…

ごちそうさまでした。おいしかったです! >@neko_gata_s

醤油をペットボトルからそのままというのは難易度が高かったですけどね。

というわけで…

今度はディストリビューション談義や(Vimに偏った)エディタ談義など「もっとゆっくりとお話ししたかったなぁ」と少々消化不良の感もありますので、次回イベントも楽しみにしていますね。(他人任せ

Acme::Ikamusume の環境構築でゲソ

f:id:hayajo_prpr:20120630214142j:plain

ボクの開発環境(debian squeeze)におけるAcme::Ikamusume環境構築手順でゲソ。

こちらが大変参考になりたでゲソ。ありがとうございますでゲソ。

MeCabのインストールでゲソ

aptのmecab関連パッケージでゲソとmecab-configの吐くパスがアレで、Acme::Ikamusumeのmake時にコケるでゲソ。また、最新のmecab-0.994でゲソとText-MeCab-0.20013のテストが失敗したでゲソ。

というわけで、実績のあるmecab-0.98をソースからインストールするでゲソ。

あとstow使ってパッケージ管理してますでゲソ。

まずはMeCab本体をインストールするでゲソ。

$ cd /usr/local/src
$ wget http://mecab.googlecode.com/files/mecab-0.98.tar.gz
$ tar xzf mecab-0.98.tar.gz $ cd mecab-0.98
$ ./configure --prefix=/usr/local/stow/mecab-0.98 -enable-utf8-only
$ make
$ make check
$ sudo make install

make check で run-cost-train.sh が失敗することがあるでゲソが気にしませんでゲソ。大丈夫でゲソ。多分でゲソ。

引き続きipadicのインストールを行うでゲソ。

$ cd /usr/local/src
$ wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
$ tar xzf mecab-ipadic-2.7.0-20070801.tar.gz $ cd mecab-ipadic-2.7.0-20070801
$ ./configure --prefix=/usr/local/stow/mecab-0.98 --with-charset=utf8 --with-mecab-config=/usr/local/stow/mecab-0.98/bin/mecab-config
$ make
$ sudo make install

最後にstowでシンボリックリンクを張るでゲソ。念のためldconfigも実行しておきましょうでゲソ。

$ cd /usr/local/stow
$ sudo stow mecab-0.98
$ sudo /sbin/ldconfig

ためしてみるでゲソ。

$ echo 'インストールできたでゲソ' | mecab
インストール 名詞,一般,*,*,*,*,インストール,インストール,インストール
で 助詞,格助詞,一般,*,*,*,で,デ,デ
きた 名詞,一般,*,*,*,*,きた,キタ,キタ
で 助詞,格助詞,一般,*,*,*,で,デ,デ
ゲソ 名詞,一般,*,*,*,*,*
EOS

できたでゲソ。


[ご注意] このあとのperlのモジュールのインストールでは、アプリケーションディレクトリ(APP_DIR)にcartonとcpanmを利用してインストールしているでゲソ。これらを使わない場合は適宜読み替えが必要になるでゲソのでご注意くださいでゲソ。


Text::MeCabのインストールでゲソ

carton install Text::MeCab でスパっとインストールしたいのでゲソが、辞書エンコーディングがデフォルトのeuc-jpになってしますでゲソ。

というわけでcpanm -vでインストールして、プロンプトからutf-8を指定するでゲソ。

$ cd APP_DIR $ cpanm -L local -v Text::MeCab
...
Encoding of your mecab dictionary? (shift_jis, euc-jp, utf-8) [euc-jp] utf-8
...

Acme::Ikamusumeのインストールでゲソ

本命のAcme::Ikamusumeのインストールでゲソ。

ここまで手順通りに進んでいれば一番簡単な作業でゲソ。cartonでサクっとインストールしましょうでゲソ。

$ cd APP_DIR
$ carton install Acme::Ikamusume

上記操作でlocalにインストールされたText::MeCabもcartonツリーに登録されるでゲソ。すばらしいじゃなイカ。

使ってみるでゲソ

準備が整ったのでさっそく使ってみなイカ。

$ cd APP_DIR $ cat <<EOF | carton exec perl -- -e 'use Acme::Ikamusume;use open ":utf8";use open ":std";print Acme::Ikamusume->geso(do {local $/;<>})'
pipe heredoc $ この道を行けばどうなるものか
pipe heredoc $ 危ぶむなかれ
pipe heredoc $ 危ぶめば道はなし
pipe heredoc $ 踏み出せばその一足が道となりその一足が道となる
pipe heredoc $ 迷わず行けよ
pipe heredoc $ 行けばわかるさ
pipe heredoc $ EOF
この道を行けばどうなるものじゃなイカ
危ぶむなかれでゲソ
危ぶめば道はなしでゲソ
踏み出せばその一足が道となりその一足が道となるでゲソ
迷わず行けよ
行けばわかるでゲソさ

できたじゃなイカ。


というわけでAcme::Ikamusumeを利用するでゲソまでの手順を紹介したでゲソ。

とくに誰じゃなイカの役に立つでゲソというわけでもないだったね。おそまつさまだったでゲソ。