karupanerura/gomikuji · GitHub
こうして、
go get github.com/karupanerura/gomikuji
こう
gomikuji
すると、
運勢がでます。
ご査収ください。
karupanerura/gomikuji · GitHub
こうして、
go get github.com/karupanerura/gomikuji
こう
gomikuji
すると、
運勢がでます。
ご査収ください。
昨年のKPT: 2013年のKPT - 時計を壊せ
技術と関係ないこと: 技術以外で2014年を振り返ってみる - あふれだす
続けたい事、良かった事。
といいつつ、まともにコード書いたのはCoffee ScriptとXSだけ…。(PROBLEM)
問題であること、よくないこと。
英語の勉強が捗らなかったり、タイムゾーンを適切に処理するための良いインターフェースの研究が捗らなかったり、積ん読の消化が捗らなかったり。モチベーションを上げるの難しい…。
はい…。
プロダクトよりも個人名が有名になったら、もはやエンジニアじゃなくIT芸人
— Kazuho Oku (@kazuho) November 1, 2011
自分が作った代表的なプロダクト的なものが無いまま名前だけそこそこ知られてるって状況になりつつあってエンジニアとしての危機を感じている。(1年ぶり2度目)
かといって、焦って変なもの生み出してしまうのも良くない。
挑戦したいこと。試したいこと。
最高のYAPC::Asiaにするぞ!!!!! というわけでなにかお手伝いする。
縁あって、WEB+DB Press Vol.84のPerl Hackers Hubのコーナーで記事を書かせていただくことになり、 データベースプログラミングの入門的なことについて書かせていただきました。商業誌デビューとなります。 昨日発売となっておりますのでお近くの書店などで今すぐにでも購入できるようになっております。
ざっくり以下のようなことがわかるような内容になっているはずです。
データベースの必要性とトランザクションの説明も簡単に書いておりますので、PerlとSQLがちょっと分かれば大方の内容は理解頂けると思います。 なお、SQLをよく知らない方は別途SQLを勉強して頂ければ幸いです。 DBIの基本的な使い方をかなりしっかり目に解説したつもりですので、いままさにPerlを勉強しているという人には是非読んで頂きたい内容となっております。 Tengについては基本的な使い方からRowクラス拡張の勘所まで書いております。 SQLインジェクションにも少し触れているので、この内容に沿ってプログラムを書いて頂ければほぼほぼ実践的な内容は抑えられるかと。
ページ数の見積もりが甘く、本来書こうとしていた内容から相当な量を削ることになってしまいましたが、なんとか重要なトピックに絞りまとまっているかと思います。DBIのbind系メソッドの紹介とか、TengのPluginの紹介とか、DBICやDBIx::Sunnyの紹介もしたかったけど泣く泣く削りました。
また、サンプルコードとして、MySQLを使ったチャット機能を提供するWebアプリをDBIとTengで実装したものを用意しておりますので、そちらも参考になれば幸いです。
昨日発売となっておりますのでお近くの書店などで今すぐにでも購入できるようになっております。
あわせて読みたい:
Webエンジニアのための データベース技術[実践]入門 (Software Design plus)
初めての商業誌での執筆ということもあり、慣れないことも多く、関係者の方々にはとても助けて頂きました。 名前を出して良いものか迷うので名前は伏せさせて頂きますが、この場を借りて御礼を申し上げます。ありがとうございました。
Gotanda.goはみんなでA Tour of Goをやっていました。
Goは数年前にちらっと触ったきりだったので、だいぶ忘れていましたが、
スライスの仕組みをちゃんと理解できたのは大きな収穫でした。
わいわい話をしながらやっていたので、わからないことを気軽にきけてとても良い会でした。
GotandaのGoはGolangのGoだと思います!
主催者の @polidog さん、会場提供のヴォラーレ株式会社さん、ありがとうございました!
諸事情でちょっと遅刻してしまいましたが、いい感じにもくもくすることができて良かったです。
実は主催側だったのですが、片付けしか手伝えず、ひたすらもくもくしていました。
当日はカップラーメンが振る舞われ、カップラーメンの空腹をそそる匂いが充満し、
また1人、また1人とカップラーメンの誘惑に負けてカップラーメンを食べはじめるという、
カオスな感じの場に仕上がったのが面白かったです。*1
ほぼ無限ビールとほぼ無限お菓子も好評だったようで良かったでした。
またやると思います。主催の id:kfly8 さん。お疲れ様でした!次回は準備から手伝います!><
Gotanda.pm Perl Technology Conference #2 - connpass
明日やるんでよかったら!
*1:ただ、
タイトルが長い。
ここを読むと良い。
概要 / ABOUT - YAPC::Asia Tokyo 2014
いまどき色々な言語が開発に利用されるのは当たり前だし、特定の言語だけに絞るメリットはあまり無いのではって思う。
Perlを使ってい(る|た)人が興味が深い他言語/他分野の話をしてもPerlの人には面白いし役立つしべつに良いじゃないか。楽しみ方はいくらでもある。
YAPC::Asiaは2011年から毎年参加しているが、質が高く素晴らしいイベントであり、良いコミュニティになっていると思う。
僕は毎年ここで開発への情熱を貰っている。色々な技術に触れてわくわくする。エンジニアとしての将来のキャリアに希望が持てる。色々な人に来てもらいたい。
そういう素晴らしいイベントも、継続するためにはやはりお金が必要だと思う。個人で出来る事は少ないけれど、少しでも運営の助けになればと思い、小額ではあるが個人スポンサーをさせて頂いた。
2012年から個人スポンサーはやらせて頂いていたが、今年からJPAのYAPC運営委員会がYAPCの主催を行うということになり、
運営リーダーも牧さんから和田さんに変わるなど、新体制での運営となった。
いろいろ大変なこともあるかもしれないので少しでも力になれればと思い、コアスタッフとしてお手伝いすることも考えたが、
ボランティアスタッフすら経験していないのに勝手が分かるはずが無いと思い、まずはボランティアスタッフとしてお手伝いしていこうと思ったので参加を決めた。
作業としてはコアスタッフの人々が殆どの事を決めてくれていたので、殆ど手を動かすだけで済んだ。
具体的には、特典のTシャツを畳んだり、マイクを質問者のもとに届けたり、懇親会の参加者への案内をしたり、イベントホール外で飲食が無いよう*1目grepしてblockしにかかる仕事とかをしていた。
今年はひたすらスタッフをやってみようと思っていたので、トークは殆ど聞かなかった。*2
ぼくは短大の頃に文化祭の主催をするなどしていたので、懐かしい気分になれた。一部でもYAPC::Asiaをつくることに貢献できることに喜びがあった。
終われば懇親会やHUBでいろんなひとと飲んで騒いでできたし、keynote sessionのときは仕事は全部終わっていたので生で見た。楽しかった。
Perl5 meta programming - YAPC::Asia Tokyo 2014ということで、Perl5でメタプログラミングをするための基礎的な要素について初学者向けに実際のコードを交えつつ解説した。(スライドはリンク先に掲載している) UNIVERSALとAUTOLOADは隣り合わせにするつもりだったがスライドを整理しているうちにズレてしまっていたなど、いろいろ不手際はあったが、少しでもpure perlでメタプログラミングをするための方法について伝われば幸いである。 本当はもう少し実践的な話もしたかったが、これは別の機会でも良いだろう。 なお、このトークのスケジュールはPerl入学式とGithubの裏側の話、 Perlあるある、そして あやかNowという人気トークの裏にあったので、当日はそんなに人は来ないだろうと目論んでおり、非常に気を抜いてリラックスして発表していたが、最終的には立ち見で聴いて頂く方も出てくるなど思いのほか多くの人に来て頂き本当に有難い限りだった。ありがとうございました。 毎年YAPCに来るたびに英語力の無さを実感していたので、英語力を鍛える意味を込めつつ英語でスライドを書いたが、もう一つ海外ゲストの人との話のネタにしたいという思いもあった。しかし、案の定というかGithubの裏側の話に吸い込まれたようでそれは叶わなかった。来年までにはもうちょっと喋れるくらいの英語力とコミュ力を身に付けたい。
reject conでLTをした。
これのデモをひたすらやった感じ。酔っ払ってたのでだいぶテキトーだった。 デモをやる裏で動画をひたすら流していて最高にカオスだった。 自分でやっておいて自分で吹き出してしまってしょうもない感じだった。
きました。
#yapcramen @karupanerura @hitode909 @catatsuy pic.twitter.com/dLiPSM9uwM
— Perl::Lint公式アカウント (@moznion) 2014, 8月 31
やりました。
dump sql type name. · b57ce92 · karupanerura/p5-Teng · GitHub
めっちゃ楽しかったし継続していきたいので来年も(ボランティア)?スタッフやりつつ参加したいです! 関係者の皆様おつかれさまでした!ありがとうございました!来年もやりましょう!(手伝います!
だいたいみんな、Message QueueとしてGearmanとかQ4MとかResqueとかRabbitMQとかZeroMQとかまあたくさんあるけど、なにかを使っていると思う。
Perlの人だとQudoとかTheSchwartzとかをつかっている人も多いと思う。
でも、preforkなworkerを実装するとなるとSignal処理とかをちゃんとやるのが意外と難しい。
下の2つのスライドを読むと難しいんだなぁという事がなんとなくわかるとおもう。
graceful shutdownとかgraceful restartとかは欲しいし、max_reqs_per_child的なこともしたいし、時間が掛かり過ぎているjobはリトライして新しいworkerで処理させたいとかそういう要求がある。
そこで、そのへんが共通化されたプロダクトがあると良いのではないかと考えた。
なお、perlにおいては似ている既成のプロジェクトとしてDainamoというものがある。*1
これは以下のような事ができて、以下のようなメリットがある。
これは業務で運用しているが、とても便利な反面、困ったこともいくつかでてきた。
というわけで、もっとシンプルなものが欲しいと思っていた。そこで最近、Workman というプロジェクトを開始した。 Job-Queue Worker frameworkと銘打っている。だいたい以下のような事が出来る事を目標にしている。
実は、だいたいコア部分はできている。 たまにテストがコケる事はあるが、sleepとか絡むので仕方ないのかなともおもう。 以下のような感じで書くともうだいたい動く。
use strict; use warnings; use utf8; use Data::Dumper; use Workman::Server; use Workman::Server::Profile; use Workman::Queue::Gearman; use Workman::Task; my $queue = Workman::Queue::Gearman->new(job_servers => ['127.0.0.1:7003']); my $profile = Workman::Server::Profile->new(max_workers => 10, queue => $queue); $profile->set_task_loader(sub { my $set = shift; warn "[$$] register tasks..."; $set->add( Workman::Task->new(Echo => sub { my $args = shift; warn Dumper $args; return $args; }) ); $set->add( Workman::Task->new(Abort => sub { my $args = shift; die Dumper $args; return; }) ); $set->add( Workman::Task->new(Busy => sub { my $args = shift; sleep 1 for 1..1000; return; }) ); }); Workman::Server->new(profile => $profile)->run();
set_task_loaderはWorkerプロセスで実行されるのがミソ。
この中でモジュールのロードを行えばgraceful restartしたときでもTaskが再読み込みできるし、
メモリを節約したいなら先に読んでおいてCoWを効かせてメモリを節約することもできる。
重いモジュールは先に読ませておくとかそういう小手先の諸々ができる。
use strict; use warnings; use utf8; use Workman::Client; use Workman::Queue::Gearman; use Try::Tiny; use Data::Dumper; my $queue = Workman::Queue::Gearman->new(job_servers => ['127.0.0.1:7003']); my $client = Workman::Client->new(queue => $queue); $client->enqueue_background(Echo => { msg => 'hello' }) for 1..10000;
こんなかんじで、共通化のインターフェースでenqueueできる。 ドキュメンテーションとか、configファイルから読む機能とか、簡単にworker serverを立ち上げるためのコマンドとかはこれからという段階だが、なんとなく雰囲気は伝わるかなと思う。 どうだろうか?
*1:gearman限定であればMasayuki Matsuki / Gearman-Starter - search.cpan.orgがある