タグ

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

  • 退職 | おそらくはそれさえも平凡な日々

    12月末でLaunchableを退職します。実際には11月30日が業務最終日で12月は求職活動をしていました。幸い12月中に転職先を決めることができ、1月から次の会社で働きます。次の会社は年明けにお知らせします。 求職活動中は多くの方や会社から連絡をいただき当にありがたかったです。全てにお返事をすることができず申し訳ありませんが、直接お知らせできなかった方にはこちらでお知らせとなることをご了承ください。 以上でお知らせは終わりで、以降は単なる中年男性のしょうもない独白です。 退職は非常に残念で、Launchableでまだまだやりたいことはあり、これからというところでもあったのですが、言ってしまえば西海岸外資の洗礼を受けたということです。 今回の僕の挑戦はあっけなく終りを迎え、ほろ苦い体験となりました。とはいえ間違いなく良い経験にはなりました。Launchableの事業は引き続き応援してい

    退職 | おそらくはそれさえも平凡な日々
    kazuph1986
    kazuph1986 2023/01/01
    なんと、お疲れ様でした!この文章を公開してくれたことに感謝です。
  • Launchableに入社しました | おそらくはそれさえも平凡な日々

    日10月1日、LaunchableにPrincipal Software Engineerとして入社しました。最近日エンジニア界隈でも少しづつ聞かれるようになったIC(Individual Contributor)としてのキャリアです。 ご存知の方も多いとは思いますが、LaunchableはあのJenkinsを作った川口さんらが2年前に創業された、まだ若いスタートアップです。自動テストにおける、スローテストやflakyテスト等の痛みを、AIの力で解決するプロダクトを作っています。 シリーズAの調達を終え、採用にも力を入れています。現在は、サービスの肝に関わるData Scientistを一番求めているようなので、興味のある方は是非採用応募してください。 Careers: Data Scientist - US or Japan | Launchable Inc. 元々優秀なスタッフ揃

    Launchableに入社しました | おそらくはそれさえも平凡な日々
    kazuph1986
    kazuph1986 2021/10/01
    お、おめでとうございます!
  • Goで外部コマンドのtimeoutを管理するやつを書いた | おそらくはそれさえも平凡な日々

    https://github.com/Songmu/timeout 使い方はSynopsisに書いてますが、以下の様な感じです。 tio := &Timeout{ Cmd: exec.Command("perl", "-E", "say 'Hello'"), Duration: 10 * time.Second, KillAfter: 5 * time.Second, // Optional } exitStatus, stdout, stderr, err := tio.Run() コマンド実行に時間がかかった場合は、Duration後にSignalが送られて、それでも終了しない場合には、KillAfterの指定があれば、KillAfter後にSIGKILLが送られるという具合です。 インターフェースは、coreutilsのtimeoutになんとなくあわせている感じです。go-timeo

    Goで外部コマンドのtimeoutを管理するやつを書いた | おそらくはそれさえも平凡な日々
    kazuph1986
    kazuph1986 2016/07/01
    これ超便利そう。
  • #ISUCON 5の予選をトップ通過してきました | おそらくはそれさえも平凡な日々

    雑に稼ぐにはPerlはサイコーだぜ tokuhirom 主催のLINE様、毎年ありがとうございます。GCP使いやすかったです、Google様もありがとうございました。 さて、いつもながらfujiwaraさんと組んで1位を取ると、つい自分がすごいと錯覚してしまいそうになるのですが、すごいのはfujiwawaさんであって「僕ではない」ということを強く意識しないといけない。 とはいえ、久しぶりにfujiwaraさんと組んで、自分がどれくらい戦えるのか楽しみだったのですが、以前優勝させてもらった時よりも自分としては大きな手応えがあり、僕もfujiwaraさんと組ませてもらって恥ずかしくないくらいの実力はあるなと思いました。 今年のISUCON予選は、とにかくやることが尽きず、ずっと手を動かしながら改善を続けられる楽しさがあって、疲れましたが充実した時間を過ごすことができました。最近仕事でコード書く

    #ISUCON 5の予選をトップ通過してきました | おそらくはそれさえも平凡な日々
    kazuph1986
    kazuph1986 2015/10/04
    最強だ
  • 何故僕はエンジニアとして対外発表をするのか | おそらくはそれさえも平凡な日々

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

    何故僕はエンジニアとして対外発表をするのか | おそらくはそれさえも平凡な日々
    kazuph1986
    kazuph1986 2015/06/01
    「情報を発信する人のもとに情報が集まる」これです。
  • 株式会社はてなに入社しました | おそらくはそれさえも平凡な日々

    日は9月1日。エイプリルフールではなくて、防災の日です。 勤務地は東京の表参道ですが、今日から2週間だけ京都で働くので、新幹線の中でこのエントリを書いています。YAPCのトークでも話しましたが、東京で僕と一緒に働いてくれるエンジニアを絶賛募集中です。 長くなるのでとりあえずwishlistを置いておきますね。 http://www.amazon.co.jp/gp/registry/wishlist/3L07LJZVYI89C/ FA宣言したら20数社から連絡を頂いたんですが、その中からはてなを選ぶことにしました。はい。Perlの会社ですね。とは言えPerlは書かない予定です。とか言いつつちょいちょい書いてしまうことでしょう。 「Perlで、日語の会社じゃねーか!」というツッコミが飛んできそうですが、はてなが一番自分を必要としてくれたと感じたので、入社させてもらうことにしました。こういう

    株式会社はてなに入社しました | おそらくはそれさえも平凡な日々
    kazuph1986
    kazuph1986 2014/09/02
    こんなにはてブついてる入社エントリを知らない。
  • Perlで一枚岩のスクリプトをテスタブルにする | おそらくはそれさえも平凡な日々

    Perlで単一ファイルのスクリプトを書くと、すぐに配置して動かせるので重宝しますが、テストを書きづらいのが難点です。 ちゃんとpmファイルに分割して云々とかやると単一ファイルで動かなくなるし、かと言ってfatpackするのもちょっとした用途だったらやり過ぎだしめんどくさい。 ということで以下のように書いてはどうか。 if ($0 eq __FILE__) { main(); } sub main { ... } $0に実行ファイル名が入っているので、それがスクリプトファイル名と一致していたらmainの処理を実行する。pythonのif __name__ == '__main__':みたいな感じ。 このスクリプトをテストしたいときは、普通にテストスクリプトを書いてrequire 'main.pl';とかやれば、plファイルの中で定義されている関数とかが個別に呼び出せるのでそれをテストしてやれ

    Perlで一枚岩のスクリプトをテスタブルにする | おそらくはそれさえも平凡な日々
    kazuph1986
    kazuph1986 2014/08/14
    自分もよくやる。
  • 退職とFA宣言のお知らせ | おそらくはそれさえも平凡な日々

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

    退職とFA宣言のお知らせ | おそらくはそれさえも平凡な日々
    kazuph1986
    kazuph1986 2014/05/13
    衝撃、お疲れ様でした。
  • Daiku and Daikufile are now production ready | おそらくはそれさえも平凡な日々

    https://metacpan.org/release/Daiku Daiku, building tool by perl now support many features inspired by rake and I released version 1.00. We can automate building or any tasks in your project by using Daikufile and daiku command. Addtion, you can create your original automate tool by use Daiku; in your scripts. Most of DSLs (ex. desc, task, rule, file, sh and namespace) are taken from rake then, you

    Daiku and Daikufile are now production ready | おそらくはそれさえも平凡な日々
    kazuph1986
    kazuph1986 2014/05/12
    rubyでいうところのrakeのperl版。よさーげ。
  • plackcon #1でLTしてきました | おそらくはそれさえも平凡な日々

    発表資料: Graduate from .psgi 行けそうになかったけど予定が空いたので申し込もうと思ったら、すでに枠が埋まったのでLTで入れてもらうというライフハックで参加した。 psgiにベタっと書くよりも、ちゃんとpmファイルを書いたほうが良いよ そういうアプリを簡単に書ける(?)拙作のPuncheurっていうWAFの紹介 そのPuncheurで作ったGithub::Hooks::Managerの話 という3部構成でした。 機会があったら、それぞれもうちょっとちゃんと解説したい。あと、Puncheurだいぶ書き直したくなった。 Github::Hooks::Managerはまだちょっと作りかけクオリティですが、便利だと思うので使ってみてください。

    plackcon #1でLTしてきました | おそらくはそれさえも平凡な日々
  • List::Util#pairmap|pairkeys が便利 (Re: ハッシュっぽい配列からkeysだけ取り出したい) 追記有り | おそらくはそれさえも平凡な日々

    List::Util#pairmap|pairkeys が便利 (Re: ハッシュっぽい配列からkeysだけ取り出したい) 追記有り http://hisaichi5518.hatenablog.jp/entry/2013/03/25/151942 Github::Hooks::Manager作ってるときに、HTML::Shakanに手を入れたりしてて、その流れでHTML::Shakanのオーナーになったりしてたのですが、その際に知った List::Util#pairmapが便利だった。 PSGIのSPECでも使われていたりしていることも関連しているのか、最近key valueのペアが入った配列を見かける頻度が上がってきたように思います。 で、そういうのを上手く扱う方法が無いのかなーとかみんな思っていたかとおもうのですが、灯台下暗し、List::Utilにpairmap()ってのがありまし

    List::Util#pairmap|pairkeys が便利 (Re: ハッシュっぽい配列からkeysだけ取り出したい) 追記有り | おそらくはそれさえも平凡な日々
    kazuph1986
    kazuph1986 2013/11/24
    便利。
  • CPANモジュールは依存モジュールのバージョンを固定しない方がいい | おそらくはそれさえも平凡な日々

    Perl界隈ではCarton周りのtoolchainが整ってきて「これからはsemantic versioningやー」みたいな意識が高まりそうですが、そういうルールに則ってバージョニングをするのは大いに結構だとは思うのですが、バージョン違いのモジュールを同一プロセスで共有するとかそういうことはPerlではできないのでどちらにせよ注意が必要です。 まあ、バージョン違いのモジュールを共有できたところで、バージョン違いのオブジェクトが変なところに渡って死ぬみたいな話もあったりなかったりするらしいので夢を見過ぎるのも良くないですね。 それとタイトルのとおりですが、CPANに上げるモジュールの場合はバージョンは固定したり最大バージョンを決めない方が良いでしょう。 例えば、 Super::ORM が Mouse 2.0に固定依存 Hyper::WAF が Mouse 3.0に固定依存 だったりすると

    CPANモジュールは依存モジュールのバージョンを固定しない方がいい | おそらくはそれさえも平凡な日々
  • Teng::Plugin::RowObjectCreationSwitcherが便利な件 | おそらくはそれさえも平凡な日々

    https://metacpan.org/release/Teng-Plugin-RowObjectCreationSwitcher @tsucchi さんに上げてもらったのでその話。 追記 注意 tokuhiromに意見をもらって0.02でインターフェースが変わりました。 temporary_suppress_row_objects_guard( 1 / 0 ) を新設 (dis|en)able_row_object を廃止 ガードオブジェクト受け取らないとエラーになるように 「こういう$tengみたいなグローバルなオブジェクトの内部を一時的に変えるみたいなのはやらないほうがいいですね!」 と、tokuhiromに言われており、実際そうなので、やるなら自己責任で気をつけて使いましょう。 言われてみると、$teng->suppress_row_objectsがそもそもrwなのが怖い感じがし

    Teng::Plugin::RowObjectCreationSwitcherが便利な件 | おそらくはそれさえも平凡な日々
  • YAPC::Asia2013に行ってきました | おそらくはそれさえも平凡な日々

    今年もホント楽しかった。スタッフの皆様には感謝の言葉もありません。会場も最高だったしネットワークかつて無く快適だった。lestrattさん、941さん体制の最後にふさわしい非の打ち所のないYAPC::Asiaだったと思います。お二方はこれまで当にありがとうございました。 弊社の若い人が幾つかトークをして何れも好評だったようで良かったです。まーもともとポテンシャルの高い人達なので、そういう経験を経てもっと成長してもらえるといいと思うし、他のトークに応募しなかった人も機会があったら応募すると良いと思います。トークをすることを期待されいてる人もいると思うので。他にも弊社の若い人たちが、大分モチベーションアップにつながったようなブログ記事を幾つか見かけて、非常に嬉しく思います。 僕も今年は割と色々な人に話しかけてもらったりも増えて、著名な人と色々議論とかもできたりして世界が広がった感じがして

    YAPC::Asia2013に行ってきました | おそらくはそれさえも平凡な日々
    kazuph1986
    kazuph1986 2013/09/24
    ”ハッカー文化だったりとか、エンジニアが会社を主体的に引っ張っていける文化をどうやったら醸成できるのか”
  • おそらくはそれさえも平凡な日々: モダンなPerlを「読む」上で覚えておくとよい構文 第1回(?)

    Perl学習者がある程度Perlに慣れてくると、他の人の書いたコードを読む機会も増えてきます。そこでつまづく人は多いのではないでしょうか。かく言う私自身がその一人です(笑) モダンなPerlはDSL(黒魔術?)的な書き方をしている部分も多く、雰囲気として処理内容をつかみやすいのですが、逆に文法的に構文を理解するのが難しいことも多いです。 「知っている人には当たり前、知らない人には黒魔術」 Perlにはそういうのが多いので、そういったところで悩んでいる人も多いのではないかと思い、このエントリーを書いてみることにしました。気が向けば続きも書きます。間違っている部分もあるかと思うので、ブクマコメ等でご指摘いただけると助かります。 日の目標とサンプルコード 裸のワード(bareword)は怖くない encode cp932 => $str; sub PI(){3.1415926535} てことで

  • YAPC::Asia Tokyo 2013でカジュアルなデータベース関連開発についてトークします | おそらくはそれさえも平凡な日々

    今年もYAPC::Asia Tokyoが開催されます。 僕も去年に引き続きトークを採択していただいたので、「今時のカジュアルなデータベース関連開発」というタイトルで発表する予定です。 プロポーザルにも書いてありますが、最近こんな感じでDB関連開発してるよーっていう内容を話す予定です。結構盛り盛りな内容になっているので、どこまで話せるかはわかりませんが…。初心者がちょっとしたアプリから一歩進んだアプリを作ろうとすると、どうしてもデータベースを使わざるを得なくなってくると思うので、そういった時にどういう風に開発を進めて行ったら良いのかとかそういう指針も示せれば良いかなーとも思っています。 チケットも8/11まで絶賛発売中なのでまだ購入していないかたはお早めに。 去年一昨年からすると運用寄りのトークの割合が減って、開発環境とかテストとかのトークが増えた印象です。トレンドに即しているのでしょう。あ

    YAPC::Asia Tokyo 2013でカジュアルなデータベース関連開発についてトークします | おそらくはそれさえも平凡な日々
  • おそらくはそれさえも平凡な日々: #isucon2 で連覇させてもらってきました

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

  • おそらくはそれさえも平凡な日々: DBIx::FixtureLoaderってのを書きました

    https://metacpan.org/module/DBIx::FixtureLoader これもまたどこも同じようなの作ってるんでしょうけど、テストとかでさくっとfixture 読み込んでInsertして欲しい的な要件で作りました。使い方は以下の様な感じ。 use DBI; use DBIx::FixtureLoader; my $dbh = DBI->connect(...); my $loader = DBIx::FixtureLoader->new(dbh => $dbh); $loader->load_fixture('item.csv'); $loader->load_fixture('item-2.yaml', update => 1); # ON DUPLICATE KEY UPDATE ORM非依存で$dbhを渡すだけで簡単にお使いいただけます。 CSVYAML、J

  • おそらくはそれさえも平凡な日々: サーバーマシンのコア数に応じて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 と

  • おそらくはそれさえも平凡な日々: Cache::Redisってのを書いたら意外と大変だった件

    最近Redis使うのは当たり前で、開発とかテストでmemcachedすら立てるのめんどくさくて、なるべくRedisに寄せたいと思っている。 セッションストレージもRedisで良くねって思って、ArkだとCache::Cacheなインターフェースのモジュールがあれば簡単にセッションストレージを差し替えられるようになっているので、Cache::Redisってのを書いた。 先のエントリーでも書いたとおり データに対するメタ情報をRedisの場合もたせられないので、[$data, $flags] って データを作ってそれ毎まるっとシリアライズするという乱暴な作りになっている。 なので、ストアされているデータをredis-cliとかで読もうとしても読めないのが難点。 redis-cliで読めるように値をRedisのリスト型にして持たせることも検討したけど、普通に setする場合と比べて大分遅くなって