• このエントリーをはてなブックマークに追加

IMGP9129

はじめに

9月27日 〜 29日,Perl のお祭り YAPC::Asia 2012 へ行ってきました.1週間遅れのご報告><

LTソンでしゃべってきた

2日目に「Textile 記法とか Markdown 記法とかあたりで何か」というタイトルで,拙作の Text::Textile::Pluggable (非CPAN)とか SiTeWiki とかのお話をさせていただきました.

Text::Textile が Textile記法 → HTML な変換処理を行う前後に独自処理を割りこませたいな,とか思ったり,そんな処理を定義したものをプラグイン形式で扱えるようなモジュールを作ったり,SiTeWiki の紹介やデモを行ったり...そんな内容です.

それにしても, uzulla さんの MC は頼もしかったです!どんな発表者でも元気づけられますね.uzulla さん,Hachioji.pm のみなさま,ありがとうございました.

地域pm、勉強会、交流会 ミートアップ(LTソン内企画)

途中,neko_gata_s さんの提案で,各地のpmの代表者が前に出てディスカッション形式でしゃべることに.(「代表」は不在だったのでまぁ私がw)

既に立ち上がっている pm では,以前あったディスカッション企画 の頃と同様の問題は残りながらも,各地積極的に取り組んでいる印象を受けました(名古屋はおとなしいなぁ><).あとやっぱりごはんはつよいですね.味噌好きな方大歓迎してますw

Chiba.pm,Tachikawa.pm,Okinawa.pm,Nara.pm ...いろいろ始まりそうな感じなので,こちらも楽しみです!

あと,「Perl Beginners」や「Perl入学式」 の初心者(初学者?)・発表未経験者に対する取り組みは,名古屋の「ゆるい」方でうまいこと取り入れられないかな,などと思ってみたり.

持ち帰りキーワード

  • libjpeg-turbo で ImageMagick をビルド

    • 現在のお仕事でもサムネイル生成とか画像加工とか少しやってたりするので,さっそく試したい
  • OpenMP
  • mod_tofu
  • mod_small_light
  • Ligature Symbols
  • ngx_small_light
  • sandboxディレクトリで遊べ!

    • ついつい tmp ディレクトリでやっちゃうので明確に分けてみたい
  • 以前作ったものを今のスキルで作りなおしてみるといいよ
  • ドヤリング

PhantomJS を Perl で触るお話とか,IRC から Redmine するお話とか,Perl の勘所のお話とか,諸事情で見られなかった・聴けなかったものもたくさんあるので,YouTube や上がっているスライドを確認しなければ.

あと,データベースの接続まわりについて不勉強すぎるので,そのへんを何とかしないといけない,などと思いました.あと fork についても無知なので(ry

後夜祭

短時間で 80 人入るお店を確保された mandy_44 さんには感謝です.

karupanerura さん,hatyuki さんに,Text::Textile::Pluggable について助言をいただいたので,ちょっと修正してみよう.とか,kawanet さんに「CPAN に上げちゃおうぜ」的なことを言われた気がするので上げてしまおうかどうか.

また,yusukebe さんはコメダ好きだということを本人から聞けたので,なにかごにょごにょできたらいいな.

そんな感じで「ダブルゆうすけ」に「Perl11」していただきましたw

ダブルゆうすけ!! #yapcasia

呑みの記録

前夜祭

会場の雰囲気と立食形式が,しょっぱなから「懇親会」を行った,という感じでした,面識のある方々とも会えてお話もできたせいか,けっこう酔っ払った気がします.

その後,Hachioji.pm の先導による(?) 二次会にもおジャマさせていただきました.

Day 1

懇親会はもちろん,その後近くの さくら水産 でも.

Day 2

午後に地域 pm のミートアップがあることもあり,昼食のときに生中を 1杯.

懇親会後はそのまま解散後,宿付近の「落第横丁通り」にあるバー「Green Apple」にてぼっちで2時間くらいいました.東京ドームでの SMAP コンサート帰りのおばちゃんにキムタクのうちわ(ジャンボサイズ?)を見せてもらったりしてましたw

ジャニーズの団扇と初のツーショットw

自戒を込めて掲載w

写真いくつか

Flickr にいくつか上げてますのでよろしければ:

おわりに

前々回や今回の地域 pm 企画,Twitter や IRC でコンタクト(私からの一方的な Follow のみの場合もありw)したり本ブログを見たことがあったり(ありがとうございます!),といったきっかけで,いろいろな方と Perl を肴にお話できる機会が毎年増えている,というのを実感できた今回だった気がします.(自分の発表したものが 1人,2人にでも話のネタになるように努めなければ,というのも課題に上げときたいです><)

お話させていただいた中では,名古屋地方を いろいろな意味で見守っていただいてる方も全国で少なからず(?)みえるということで,味噌カツはダメだとしてもひつまぶしに招待できるような場をもっと整備しないといけないな,とか思ったりしました.

あと,今私が住んでいるのが尾張旭市なので, Owariasahi.pm とかいう名前の呑み会でもやってみたいなとか考えてみたけど,多分ぼっちなので家でビール呑むのとかわらないんじゃね? でも誰か興味ある人とかいたらそのときはぜひ外で呑みたいですね!

以上,YAPC::Asia 2012 へ行ってきたお話を,1週間遅れでビールを呑みながら書きました(350ml 3本目).開催関係者,参加者みなさま,毎度楽しいお祭りをありがとうございました!

おまけ

外に持ち出し用のマシンが変わったので,またサインをいただきました.

IMGP9434

自演じゃないよw

  • このエントリーをはてなブックマークに追加

恥ずかしながら,これまでこういうことをしたことがなかったのでメモ.

Linux で,あるコマンドがどのライブラリに依存しているかを確認するには, ldd コマンドを使うとよいみたい.Mac OSX では otool というのがその役目を果たすみたい.

ldd コマンド:

% ldd ~/local/bin/convert
	linux-vdso.so.1 =>  (0x00007fff83ec3000)
	libMagickCore.so.5 => /home/www/local/lib/libMagickCore.so.5 (0x00007fd46c9b0000)
	libMagickWand.so.5 => /home/www/local/lib/libMagickWand.so.5 (0x00007fd46c6c0000)
	libtiff.so.4 => /usr/lib/libtiff.so.4 (0x00007fd46c456000)
	libc.so.6 => /lib/libc.so.6 (0x00007fd46c0d3000)
	libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007fd46be4d000)
	libjpeg.so.62 => /home/www/local/lib/libjpeg.so.62 (0x00007fd46bbeb000)
	libgs.so.8 => /usr/lib/libgs.so.8 (0x00007fd46b02a000)
	libpng12.so.0 => /lib/libpng12.so.0 (0x00007fd46ae03000)
	libfftw3.so.3 => /usr/lib/libfftw3.so.3 (0x00007fd46ab07000)
	libz.so.1 => /lib/libz.so.1 (0x00007fd46a8f0000)
	libpthread.so.0 => /lib/libpthread.so.0 (0x00007fd46a6d3000)
	libdl.so.2 => /lib/libdl.so.2 (0x00007fd46a4ce000)
	libgomp.so.1 => /usr/lib/libgomp.so.1 (0x00007fd46a2c0000)
	libm.so.6 => /lib/libm.so.6 (0x00007fd46a03d000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fd46cf44000)
	libpaper.so.1 => /usr/lib/libpaper.so.1 (0x00007fd469e38000)
	libcupsimage.so.2 => /usr/lib/libcupsimage.so.2 (0x00007fd469c1f000)
	libcups.so.2 => /usr/lib/libcups.so.2 (0x00007fd4699d3000)
	libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00007fd46979e000)
	libgnutls.so.26 => /usr/lib/libgnutls.so.26 (0x00007fd4694fc000)
	libcrypt.so.1 => /lib/libcrypt.so.1 (0x00007fd4692c3000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fd468fae000)
	libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00007fd468d79000)
	librt.so.1 => /lib/librt.so.1 (0x00007fd468b70000)
	libavahi-common.so.3 => /usr/lib/libavahi-common.so.3 (0x00007fd468963000)
	libavahi-client.so.3 => /usr/lib/libavahi-client.so.3 (0x00007fd468752000)
	libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00007fd46848d000)
	libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00007fd468267000)
	libcom_err.so.2 => /lib/libcom_err.so.2 (0x00007fd468063000)
	libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00007fd467e5a000)
	libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x00007fd467c57000)
	libresolv.so.2 => /lib/libresolv.so.2 (0x00007fd467a3e000)
	libtasn1.so.3 => /usr/lib/libtasn1.so.3 (0x00007fd46782c000)
	libgcrypt.so.11 => /lib/libgcrypt.so.11 (0x00007fd4675b4000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007fd46739d000)
	libexpat.so.1 => /lib/libexpat.so.1 (0x00007fd467173000)
	libdbus-1.so.3 => /lib/libdbus-1.so.3 (0x00007fd466f34000)
	libgpg-error.so.0 => /lib/libgpg-error.so.0 (0x00007fd466d2f000)

otool コマンド:

% otool -L ~/local/bin/convert
/Users/issm/local/bin/convert:
	/Users/issm/local/lib/libMagickCore.5.dylib (compatibility version 6.0.0, current version 6.0.0)
	/Users/issm/local/lib/libMagickWand.5.dylib (compatibility version 6.0.0, current version 6.0.0)
	/usr/local/lib/liblcms2.2.dylib (compatibility version 3.0.0, current version 3.3.0)
	/usr/local/lib/libtiff.5.dylib (compatibility version 7.0.0, current version 7.0.0)
	/usr/local/opt/freetype/lib/libfreetype.6.dylib (compatibility version 16.0.0, current version 16.0.0)
	/usr/local/lib/libjasper.1.0.0.dylib (compatibility version 2.0.0, current version 2.0.0)
	/usr/local/opt/jpeg-turbo/lib/libjpeg.62.0.0.dylib (compatibility version 63.0.0, current version 63.0.0)
	/usr/local/opt/libpng/lib/libpng15.15.dylib (compatibility version 29.0.0, current version 29.0.0)
	/usr/local/lib/liblzma.5.dylib (compatibility version 6.0.0, current version 6.4.0)
	/usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.5)
	/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
	/usr/lib/libltdl.7.dylib (compatibility version 10.0.0, current version 10.2.0)

参考:

  • このエントリーをはてなブックマークに追加

はじめに

Homebrew で,nginx_tcp_proxy_module をつけて nginx を入れる手順のメモ.

参考

Formula を編集する

% brew edit nginx
diff --git a/Library/Formula/nginx.rb b/Library/Formula/nginx.rb
index 5dd5eb7..497f291 100644
--- a/Library/Formula/nginx.rb
+++ b/Library/Formula/nginx.rb
@@ -42,6 +42,7 @@ class Nginx < Formula
             "--with-ipv6",
             "--with-cc-opt=-I#{HOMEBREW_PREFIX}/include",
             "--with-ld-opt=-L#{HOMEBREW_PREFIX}/lib",
+            "--add-module=./nginx_tcp_proxy_module",
             "--conf-path=#{etc}/nginx/nginx.conf",
             "--pid-path=#{var}/run/nginx.pid",
             "--lock-path=#{var}/nginx/nginx.lock"]
@@ -49,6 +50,8 @@ class Nginx < Formula
     args << passenger_config_args if build.include? 'with-passenger'
     args << "--with-http_dav_module" if build.include? 'with-webdav'
 
+    system "git clone git://github.com/yaoweibin/nginx_tcp_proxy_module"
+    system "patch -p1 < ./nginx_tcp_proxy_module/tcp.patch"
     system "./configure", *args
     system "make"
     system "make install"

インストールする

あとはインストールするだけ(同じバージョンが既に入っている場合は, brew uninstall nginx するしかないのかなぁ):

% brew install nginx
==> Downloading http://nginx.org/download/nginx-1.2.3.tar.gz
Already downloaded: /Library/Caches/Homebrew/nginx-1.2.3.tar.gz
==> Patching
patching file conf/nginx.conf
==> git clone git://github.com/yaoweibin/nginx_tcp_proxy_module
==> patch -p1 < ./nginx_tcp_proxy_module/tcp.patch
==> ./configure --prefix=/usr/local/Cellar/nginx/1.2.3 --with-http_ssl_module --with-pcre --with-ipv6 --with-cc-opt=-I/usr/local/include --with-ld-opt=-L/usr/local/lib --add-module=./nginx_tcp_proxy_module --conf-path=/usr/local/e
==> make
==> make install
==> Caveats
In the interest of allowing you to run `nginx` without `sudo`, the default
port is set to localhost:8080.
 
If you want to host pages on your local machine to the public, you should
change that to localhost:80, and run `sudo nginx`. You'll need to turn off
any other web servers running port 80, of course.
 
You can start nginx automatically on login running as your user with:
  mkdir -p ~/Library/LaunchAgents
  cp /usr/local/Cellar/nginx/1.2.3/homebrew.mxcl.nginx.plist ~/Library/LaunchAgents/
  launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
 
Though note that if running as your user, the launch agent will fail if you
try to use a port below 1024 (such as http's default of 80.)
==> Summary
/usr/local/Cellar/nginx/1.2.3: 9 files, 984K, built in 21 seconds

成功!

% nginx -V
nginx version: nginx/1.2.3
built by clang 3.1 (tags/Apple/clang-318.0.61) (based on LLVM 3.1svn)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/Cellar/nginx/1.2.3 --with-http_ssl_module --with-pcre --with-ipv6 --with-cc-opt=-I/usr/local/include --with-ld-opt=-L/usr/local/lib --add-module=./nginx_tcp_proxy_module --conf-path=/usr/local/etc/nginx/nginx.conf --pid-path=/usr/local/var/run/nginx.pid --lock-path=/usr/local/var/nginx/nginx.lock

入ってるっぽいですね!

おわりに

さて,nginx で WebSocket が使えるように設定ができるかどうか,それが問題です><

  • このエントリーをはてなブックマークに追加

これまで crontab -e でエディタを起動しての設定しかしてきていなかったので,そのあたりを改めるためのメモ.

crontab コマンド

タスクを記述したファイルを引数として渡して実行することで設定できることを,本日知りました><

* * * * * touch /Users/issm/tmp/file_by_cron

こんな感じのファイルが /path/to/crontab としてあった場合,次でタスクを登録できます:

% crontab /path/to/crontab

で,登録されているタスクを確認したければ,-l オプションで実行します:

% crontab -l
* * * * * touch /Users/issm/tmp/file_by_cron

ちなみに,ファイルを複数渡して実行しても最初のファイルしか登録されないので,そんな場合は,複数ファイルを cat して,それを crontab コマンドにパイプしてやればよいと思います:

% < crontab.a
0-59/2 * * * * echo "task a"
% < crontab.b
1-59/2 * * * * echo "task b"
% < crontab.{a,b} | crontab
% crontab -l
0-59/2 * * * * echo "task a"
1-59/2 * * * * echo "task b"

crontab ファイルの場所

ユーザ issm の場合:

MacOSX (10.7)
/var/lib/tabs/issm
Ubuntu
/var/spool/cron/crontabs/issm
CentOS
/var/spool/cron/issm

参考

  • このエントリーをはてなブックマークに追加

メモ.

RVM を少し使い始めていて .rvmrc ファイルが便利なので,.perlbrewrc みたいなのってあるのかな,とググっていたら,perlbrew@github でそのことに言及されていました.

その最後のコメントが次:

I recommend using smartcd https://github.com/cxreg/smartcd for the purpose, it is an external solution but it requires very minimum setup.
Pull Request #49: add per-project perl version by franckcuny · gugod/App-perlbrew

smartcd というものがあるみたいです.

特定のディレクトリに入ったり出たりするところにフックをかけられてごにょごにょできるツールのようです.

便利そうなので,近いうちに少しかじってみたいと思います.

20 of 1221...10...1819202122...304050...122