タグ

ブックマーク / songmu.jp (15)

  • 何故僕はエンジニアとして対外発表をするのか | おそらくはそれさえも平凡な日々

    僕は来、人前に出て積極的に話そうとは思わないし、目立たずにおとなしく引きこもっていたいみたいな気持ちがある。潔癖な部分もあるので、プレゼンスばかり高くて技術力がないような中身が無い人間になりたくないし、そうなったら死ぬしか無い、みたいな気持ちもある。それなのに何故、ものすごく技術力があるわけではない自分が対外発表をするのか。 それは元はと言えば対外発表をするような側に行かないとエンジニアとして生き残れないのではないかという危機感があったからです。 Shibuya.pmの衝撃 初めて参加したShibuya.pmは#10だった。その頃の僕は一企業のよくある何でも屋の1人システム担当であり、開発のメインは前担当者から引き継いだレガシーASPだった。そしてつぶしの効く技術を習得したいと思いPerlを学び始めた頃だった。そしてPerlがそこそこ書けると手応えを感じ始めているところだった。 ところが

    何故僕はエンジニアとして対外発表をするのか | おそらくはそれさえも平凡な日々
    pycol
    pycol 2015/06/02
  • ソースコード以外もとにかくテストする。もしくはカバレッジだけではダメだという話 | おそらくはそれさえも平凡な日々

    あなたはプロジェクトのソースコードに対して適切にCIを回しているかもしれません。定期的にコードカバレッジの測定も行い、90%以上もしくは100%の数字を出しているかもしれません。 しかし果たしてそれで十分でしょうか?もしくはコードカバレッジだけにとらわれすぎていないでしょうか? 監視とは(システムに対する)継続的なテストである、というのは筆者の尊敬する奥一穂氏の言葉ですが、その逆もしかりで 「テストとはプロジェクトに対する継続的な監視である」 ということも言えます。 その観点に立ってみると、プロジェクトのソースコード以外にもテストが必要なものがたくさんあることに気づくでしょう。以下に実際に筆者が自分のプロジェクトの中でソースコード以外にテストを書き、CIを回していたものを挙げてみます。 アプリケーション設定ファイルのテスト 開発中に番用の設定ファイルを使うことはないため、番用の設定ファ

    ソースコード以外もとにかくテストする。もしくはカバレッジだけではダメだという話 | おそらくはそれさえも平凡な日々
    pycol
    pycol 2014/12/25
  • クソコードに対する怒りとコードレビューにおける人格攻撃について | おそらくはそれさえも平凡な日々

    デキるプログラマだけが知っているコードレビュー7つの秘訣 7つの秘訣の1〜5は当にそのとおりだと思います。 「怒り」って言葉を使っているところはなかなか画期的だと感じた。というのも僕は前から「人格攻撃に思われて」しまうような、コードで人を殴るようなことをしてしまう人が出てきてしまうのは何故かということを考えた時に、そこには「コードに対する怒り」があるからだろうなと思っていたからである。怒りがあるからこそ強く指摘しすぎてしまうことが起こりうる。 「怒り」というのはつまり「感情」である。であれば、「その『怒り』はコードに向けられたものであり、書いた人に対してのものではないので、その人に対しての攻撃ではない」というのは、理屈ではかろうじて通るかもしれないが、書いた人の「感情」的には通らないこともあることは理解したほうが良いと思う。 じゃあ怒らなければ良い、という話にはしたくなくて、どうしても怒

    クソコードに対する怒りとコードレビューにおける人格攻撃について | おそらくはそれさえも平凡な日々
    pycol
    pycol 2014/08/20
  • 退職とFA宣言のお知らせ | おそらくはそれさえも平凡な日々

    所属的には5月いっぱいですが、5月12日(月)が最終出社で有給消化中です。理由はいろいろありますが、結婚離婚がそうであるように、結局のところはタイミングの問題です。 一番大きな理由は家庭の都合です。家庭の都合というとネガティブに聞こえてしまうかも知れませんが、実際にはポジティブな挑戦です。 ただ、そのために会社を辞める必要は必ずしもなく、会社も引き止めの時にその事情を鑑みてバックアップしてくれる事は伝えてくれました。CTOに 「会社は社員の夢を実現する場所だと思っていて、だからといって全員が別の方向を向いているわけにもいかないので、誰かの夢に乗っかる形で事業を作っている。なので『こいつの夢に乗っかりたい』とか思わせたり、逆にそう思えるようなイイヤツを採用している。ただ、松木くんくらい会社に貢献してくれた人間だったら、自分の個人的な夢や目的のために会社を利用してくれて構わないし、むしろそう

    退職とFA宣言のお知らせ | おそらくはそれさえも平凡な日々
    pycol
    pycol 2014/05/13
  • おそらくはそれさえも平凡な日々: CPANで意図しない名前空間の取得を防ぐために

    だいたいこのへんで教えてもらった話のまとめです。 http://lingr.com/room/perl_jp/archives/2013/04/03 CPANで名前空間を取るのは簡単です。今ならCPANに上げるコードベースの「どこか」に package Hoge; と書けば、CPAN Indexerにインデックスされていとも簡単にHoge名前空間のオーナーになれます。 (執筆時現在Hogeのオーナーはいません) これはlib/以下の.pmファイルやファイル先頭のpackage宣言だけに限った話ではありません。 例えば、example/MyApp.pmとかも対象です。 ちなみに誰がどの名前空間を持っているかは以下を見ることでわかります。 http://www.cpan.org/modules/02packages.details.txt 多くの場合この挙動に困ることはありませんが、以下の様な

  • おそらくはそれさえも平凡な日々: サーバーマシンのコア数に応じてworker数を調整する方法

    PSGI/Plackアプリケーションの起動方法いろいろと番環境アレコレ 便乗ポスト。最近は、上記内の「シェルスクリプトでラップする方法」で運用していることが多いです。その場合のone more tips. appサーバーごとにマシンスペックが違う場合がたまにあって、その場合マシンごとに worker数を調整したいけど、deployの都合上サーバー起動スクリプトは同じやつを使いた いってことがあります。 そこでおすすめなのが、CPUコア数に応じてworker数を計算する方法です。 シェルスクリプトの場合、 % cat app.sh #/bin/sh NCPU=`getconf _NPROCESSORS_ONLN` WORKERS=$(expr $NCPU \* 5) exec plackup -E production -s Starlet --max-workers=$WORKERS と

  • おそらくはそれさえも平凡な日々: Redis::LeaderBoardっての書いてた

    https://github.com/Songmu/p5-Redis-LeaderBoard https://metacpan.org/module/Redis::LeaderBoard RedisのSorted Setがランキング作るのとかに便利だよーってのは今や多くの人に知られるところですが、 同率問題とかがめんどくさかったりするので、その辺解決したやつを書いてみました。 というか、このへんみなさん個別に書いてると思うんですけど、色々めんどくさくなってカッと なってCPANに上げました。Synopsis丸コピですが、以下のような感じで使います。 use Redis; use Redis::LeaderBoard; my $redis = Redis->new; my $lb = Redis::LeaderBoard->new( redis => $redis, key => 'lead

  • おそらくはそれさえも平凡な日々: Perl製のWebアプリケーションをherokuで3分で動かすの法

    PSGIアプリなら簡単にherokuで動かせます。 Miyagawaさんのbuildpack(https://github.com/miyagawa/heroku-buildpack-perl)を 使います。使い方もREADMEに書いてあったけど、以下にも書きます。 アプリ側の準備 deployしたいアプリケーションのgitリポジトリ上で以下をやります。 cpanm --installdeps . で依存モジュールがちゃんと入るようにする(cpanfile使うのがオススメ) アプリ起動用のapp.psgiを配置する herokuにアカウントを作る https://www.heroku.com/ toolbeltを入れる https://toolbelt.heroku.com/ インストールが終わるとherokuコマンドが使えるようになります。 % heroku login と打ってコマンド

  • おそらくはそれさえも平凡な日々: ジンバブエドルとギャンブルに関するお役立ち情報です

    紙くず同然に思われがちなジンバブエドルですが、2009年に 12桁のデノミ(旧1兆ジンバブエドル=1ジンバブエドル)を行った 発行自体も止めた(=ハイパーインフレが止まった) という感じなので、今は実はレートはそんなに低くありません。 発行が止まり、ジンバブエの公式通貨でもなくなっていて、死にゆくことが約束されている通貨ではありますが、通貨価値が消滅したわけではなく、一部の地域で使えはするようです。 具体的には、2013年5月現在1ジンバブエドル=0.3円程度のレートとなっています。これは多くの人に取って意外な数字なのではないでしょうか。ついうっかり1億ジンバブエドルを賭けて負けてしまうと3000万円の損失です。 入手も困難ですし、使える地域も限られているという意味ではやはり紙くず同然なので、安易に多額のジンバブエドルを賭けるのは危険ですし、賭けに勝った方もやはり嬉しくないので、皆様注意し

  • おそらくはそれさえも平凡な日々: CSRFDefender的なやつでコンテンツフィルタはしないほうがいいんじゃないかという話

    日の組長のお話。 Ark::Plugin::CSRFDfenderに機能追加したりいろいろバグっていたりしたのに手を入れていたのだが、それに対して組長に意見を頂いた話。結論はタイトルの通り。 CSRF対策をフレームワーク側で入れるのは良いと思うが、フィルタしてformに自動的にhiddenを埋め込むのはあんまよろしくないんじゃないかという話です。 CSRFDefender的なやつには以下のような機能があるが、それぞれに関して述べる。 POST, PUT, DELETE時に自動でtokenチェックしてエラー画面強制表示 自動的にコンテンツフィルタしてform要素にhiddenを埋め込む POST, PUT, DELETE時に自動でtokenチェックしてエラー画面強制表示 OK。安全側に倒している。 自動的にコンテンツフィルタしてform要素にhiddenを埋め込む あまり好ましくない。厳密

  • おそらくはそれさえも平凡な日々: 「仕事に対する愛と情熱とプライド」若しくは新卒に向けたスピリチュアルな話

    そろそろ新卒研修とかどうしようかとかで、エンジニア陣でわたわたしたりしています。「Songmu先生にはスピリチュアルな話をしてもらわないといけませんね」みたいなことを言われてなんかスピリチュアルキャラとして定着しているのもどうかと思います。 去年も「『仕事に対する愛と情熱とプライド』ってお題でソーシャルゲームチームの新卒向けに話してください」とか研修担当の人に言われて、なんでそんな熱いキャラとして認知されてるか謎だったんだけど、それで30分くらい話しました。 それが結構評判良かったみたいで、直接はあまり言われなかったんだけど「研修の時の先輩の話の中で一番印象に残っている」って言ってくれている人が多いって話を2年目の人から又聞きで知って嬉しく思っていました。 とか思っていたら、hisaichi5518の人は「なんかすごくいい話してた覚えはあるんですけど内容全く覚えてません」とかsoh335の

  • おそらくはそれさえも平凡な日々: もにかじでオレオレ監視ツールについて話してきました

    オレ自身を監視するツールって話なんだけどな!発表資料は以下。 オレオレ監視ツール 自分が触っているアプリケーションでのタイプ数を可視化するツールです。 なんか手元のMacにGrowthforecastが簡単に入らなかったのでカッとなって VPS上に構築しました。これで僕の行動が世界中からまるわかりです! 3/11追記 手元にHRForecast立ててそれで代用したのでURL消しました 適当に設定したら偶然にも調度良く赤系(iTerm,Macvim)が仕事、緑系(Chrome, Limechat) がサボり系になりました。Limechatがちゃんとライム色になっているのが素晴らしいですね。 仕組みとしてはごく単純で以下のような感じ。 KeyRemap4MacBookをdebugをONにしてキーイベントをログ出力 Slateでアプリの切り替えを検知してそれをログ出力 それらのログをtailで読

  • おそらくはそれさえも平凡な日々: CPANモジュールのパッケージングの歴史

    最近同僚が次々とCPAN Authorになってて良い流れだなーとか思っています。 ただ、CPANへのモジュールの上げ方がわからないとか、M::Iを使えばいいのか M::Bを使えばいいのか、それらがそもそも何やってるのか分からないという話も 聞くので、僕自身もその辺の知識を整理してアップデートしました。 とりあえず、今はModule::Buildを使っておけば良いんじゃないかと 思っていますが、そこに至る歴史的経緯をまとめてみます。 大体、以下に書いてあることに加えて、最近の動きを書いています。 Module::Build:MakeMakerの後継者を目指して PerlでCPAN形式のモジュールを配布する場合は、Makefile.PLなりBuild.PLなりを モジュール作者が用意して、それがインストールに必要なファイル類を自動生成 するという流れになっています。 既存の雛形を使うと色々ファ

  • おそらくはそれさえも平凡な日々: #isucon2 で連覇させてもらってきました

    主催の皆様素晴らしいイベントの提供当にありがとうございました。 まさかの2連覇ですが、@fujiwaraの恐ろしさを再認識するとともに、@typesterのチート性能を見せつけられた感があります。 まずは個人的な反省点から 去年よりかは大分成長しているつもりだったのに、@fujiwaraとの力関係が何もかわっていなかったことに衝撃 @typester(Redis期)がRedis使ってくることはわかっていたのに、競技中に brew install redisとかやってるのはダサすぎ ということで、isucon2を振り返ります。 事前準備 事前にIRCチャンネルを作っておいてnopate botを呼んでおいたくらい。カヤックから別チームも出ていたので、お互いのチャンネルには入らないという紳士協定。 去年の経験から、revサーバーに直接gitリポジトリを作れれば捗ることは分かっていたので、その

  • おそらくはそれさえも平凡な日々: shipped Plack::Middleware::Auth::OAuth

    Plack::Middleware::Auth::OAuthをリリースしたのでお知らせします。 https://metacpan.org/release/Plack-Middleware-Auth-OAuth ソーシャルゲーム開発等、OAuthの署名検証が必要な場面では必須のモジュールかと思います。ご活用ください。 いきなりバージョンが0.03になっているのはこれまでCPANに上がっていなかった中で変更が加えられてきたからです。そもそもこれは@hidekさんがgithubにあげているもので、僕は一回pull reqを送ったくらいです。それを@hidekさんの許可を得て僕が代理でCPANに上げました。 このモジュールは社内で活用していたので、CPANにあげて欲しいなーと思っていたのですが、YAPCの前夜祭後の飲み会で@hidekさんに「上げてもらえませんか?」みたいな話をしたら「あれ、まだ上

  • 1