タグ

ブックマーク / blog.everqueue.com (23)

  • YAPC::Kyoto 2023参加してきました | へぼい日記

    YAPC::Kyoto 2023に参加してきました。YAPCにはYAPC::Asia Tokyo 2015以来の参加なので、なんと8年ぶり(!)。 トーク応募もせずに京都までいくのはどうなんだろうとも思ったのですが、実は京都に一度も訪問したことがなかったため家族も呼び寄せ京都旅行も兼ねて行ってきました。 聞いた発表からいくつか感想 2023年春のPerl Perl最新情報ぜんぜん追えてないマンとしてはすごくためになりました。 売上と開発環境を同時に改善するために既存のPerl Web アプリケーションをどのようにリプレイスするか Perlでつくられた古いサービスをどうやって持続的に運用していくのか…。おそらくYAPCに参加されている方の多くに共通する悩みですよね。言語としてはPerlを維持しつつモダンにしていくという選択とその方法とても参考になりました。 ORM – Object-rela

    nihen
    nihen 2023/03/24
    書きました #yapcjapan
  • #isucon10 予選惨敗してきました | へぼい日記

    今年もISUCON10に山形組として参加してきました。 結果はベストスコア(1400ぐらい)もボーダーに届かないまま、ギリギリまで修正をいれてfailで終了ということになりました。 できたこと – nginxでbotに503 – app2台、db1台構成 – UPDATEのWHEREにstock > 0を追加してaffected rowsをみてbuyのFOR UPDATE外し – recommendedを $w, $h, $dの昇順から2つとって(door_width >= %1 AND door_height >= %2) OR (door_height >= %2 AND door_width >= %1)に単純化 – nazotte検索をmysqlのPOINT型に変換してSPATIAL INDEXを貼ってクエリ一回で解決できるように – 手当たり次第にindex – index済みd

    nihen
    nihen 2020/09/13
  • #isucon9 参戦記録 | へぼい日記

    去年もisucon9に参戦してたのだけど、いろいろいそがしくて何もブログをかけていなかったので一応簡単に記録として記事にしておくことにします。このあと今年のisucon10の記事も書きます。 予選 予選は14位で通過 – Perlを選択 – 無駄なAPI呼び出し排除 – N+1の解決 – FOR UDPATE外し – campaign値の操作 – worker数調整 などなどである程度順調にスコアを伸ばしていった模様。(当時のコミットログより 戦 isucon9回目の参加(戦は7回目)にして初のfail終了。 競技中の最終コードはスコアがでていたので(まったく上位に絡めるスコアではなかったけど)再起動によるものだったのか不確定要素がなにかあったのか、よくわからないまま無気力になり記憶が途絶えてます。 1年ブログがかけなくて申し訳なかったのですが運営の皆様、ありがとうございました。

    nihen
    nihen 2020/09/13
    おくればせながらかきました
  • #isucon 8 本戦10位で負けてきました | へぼい日記

    ISUCON8戦に山形組でISUCON6以来の2年ぶりに参加してきました。結果は既報の通り学生チームである「最大の敵は時差」さんが優勝され、我々は10位という残念な結果となりました。(そういえば今回、戦の結果の受賞チーム以外の公式発表が対参加者以外にないですね) 山形組の過去を振り返ると ISUCON1、下から数えたほうが早い順位 ISUCON2、準優勝かつ特別賞 ISUCON3、予選総合3位、選5位 ISUCON4、予選総合4位、選10位 ISUCON5、予選落ち ISUCON6、予選総合2位、選10位 ISUCON7、予選落ち ISUCON8、予選総合15位、選10位 とまあ、なぜか2年おきに戦出場し10位になるということを繰り返しております。来年はジンクスを打ち破って2年連続で予選突破して戦優勝を果たしたいです。 やったこと 選んだ言語はもちろんPerl初期スコア:

    nihen
    nihen 2018/11/03
    書きました
  • #isucon 8 予選15位で通過しました | へぼい日記

    毎年でているISUCONに今年も山形組として参加してきました。 結果は総合15位ということで、ギリギリでしたが予選通過しました。第1回からずっと同じ2人チームで参加していて、戦出場回数は6回(1, 2, 3, 4, 6, 8)になったみたいです。そろそろ戦優勝したいです。 やったこと 事前準備は空レポジトリ作成と、情報共有と秘伝のタレのコピペ用のスプレッドシートの作成など選んだ言語はもちろんPerlそろそろGoで挑戦しますか?というのを3年ぐらい言い続けて未着手普段の仕事Perlなので手に馴染んだ道具を使うということでいいと思っている最初のおきまりの作業初回ベンチ初期コードのレポジトリコミットデプロイスクリプト用意アプリの挙動確認コードリーディング 作戦会議ここまでで2時間ほど作戦会議 「あー、これはISUCON2再来な問題ですねぇ。」そのISUCON2のときに我々はアプリケーション

    nihen
    nihen 2018/10/10
    やっとですが書きました
  • 404 エラー | へぼい日記

    perlのこととかjavascriptのこととかwebのこととかを書いていくかも

    nihen
    nihen 2017/02/28
    はじめました / 新規事業やるぞってことで無理やり編み出した感は否めないですが問い合わせがきたらちゃんと取り組みますのでよろしくおねがいします
  • #isucon 6 本戦10位で負けてきました | へぼい日記

    ISUCON6戦に山形組でISUCON4以来の2年ぶりに参加してきました。結果は既報の通り予選で1位だった「この技術部には問題がある!」チームさんが勢いそのままに優勝され、予選2位だった我々は選では10位という残念な結果となりました。(予選の結果は選には何も関係ありませんが) 山形組の過去を振り返ると ISUCON1、下から数えたほうが早い順位 ISUCON2、準優勝かつ特別賞 ISUCON3、予選総合3位、選5位 ISUCON4、予選総合4位、選10位 ISUCON5、予選落ち ISUCON6、予選総合2位、選10位 とまあ、なんとも煮え切らない歴史になっており、せめてISUCON5で予選通過さえしてれば全部でてるんだと胸を張れた部分もあるんですが。 やったことなど Docker( Compose)で Node.js, mysqld, App が起動されていて、かつNode.

    nihen
    nihen 2016/10/30
    負けました
  • #isucon 6 予選二位で通過しました | へぼい日記

    去年は初めて予選敗退し悔しい思いをしたISUCONに今年も山形組として参加してきました。 結果は総合二位で戦出場を決めました。やった! 事前準備 前日にメンバーで作戦会議をして、「フルスクラッチ書き換えはやらない」という方針で大決定。過去フルスクラッチ書き換えでそこそこの結果を残してきた我がチームですが、去年の予選で手痛い失敗をしたのもあり今年は確実に予選を突破しようということで封印することになりました。 過去問を改めて解いたりはしなかったですが、matsuuさんのazure-isucon-templatesの一つをazureにdeployしてみて、なるほどazureはこういう感じかというのを確認したりはしていました。 当日 10:00 はじまっておもむろにazureにdeployしたところ テンプレート デプロイ 'Microsoft.Template' は、検証プロシージャによって無

    nihen
    nihen 2016/09/24
    遅くなりましたが、書きました。本戦優勝するぞ!
  • #isucon 5 予選、惨敗でした | へぼい日記

    毎年でているISUCONに今年も山形組として参加してきました。 今年もオンライン予選があり、9/26(土)の一日目に参加し結果は最高スコアが3000を少し超えるぐらいで惨敗でした。 簡単に何をしたのかをまとめると 事前作戦会議 チーム数多いしボーダーあがって厳しいことになるだろうしトップ狙うつもりでやらないとだろうなとは思ってます イチかバチかで飛び道具でも使って普通じゃないことをやらないと勝てないと思い込み kazeburoさんのこの時のエントリなどを読み込み脳内素振りを繰り返す。 当日 11:00 動作確認、コードリーディング 11:30 apt-get update;apt-get dist-upgrade;apt-get install xxx,xxx,xxx & reboot diskがroの罠にはまる。解決策はわからず、instance作り直し 12:30 第一回作戦会議 今回

    nihen
    nihen 2015/09/28
    書きました!
  • YAPC::Asia Tokyo 2015に参加してきました | へぼい日記

    8月20日から3日間にわたって東京ビッグサイトで開催されたYAPC::Asia Tokyo 2015に参加してきました。 2012年にスピーカーで参加してから、2回連続で足が遠のいてしまっていましたが、やはり参加すると刺激をうけてよいものですね。 3年前の自分のトークのようなPerl製の(モジュール|プロダクト)名がタイトルに入っているトークはほとんどなくて(あ、LTではcpmがありましたね!)何とも言えないわびしい気持ちになったりもしましたが、その多様性を受け入れる文化も日PerlCommunityの素晴らしさなのかなと思ったりもしたり。自分が参加したトークの中ではやはりGoの話が多くなっていて、そろそろ手を付けるか…という気分になって帰ってきました。 YAPC::Asia、lestrratさん(JPA?)が主催するものとしては10回目の今回で最後とのことで、いままで主催されてきたm

  • #isucon 4 予選参加してきました | へぼい日記

    毎年でているISUCONに今年も山形組として参加してきました。 今年もオンライン予選があり、9/27の一日目に参加し結果は暫定で7位でAMI審査に問題がなければほぼ予選通過はすると思われます。 で、今年は何をやったか、というとあいも変わらず去年と同じことをしておりました。去年と同じ方式でかくと やったこと 静的ファイルはnginx serve アプリ全書き換え 1fileなPSGI データはすべてオンメモリ 永続化はテキストファイルへ追記 nginx embedded perl + Plack::Handler::Nginx ←NEW! 最終形の構成をgithubにおいときました。 やれなかったこと 無し 最終提出スコア –workload 8で 62145 コンテスト中の流れ 事前にHDD8G メモリ15Gのm3.xlargeインスタンスだとわかっていたので、それがボトルネックの解消につ

    nihen
    nihen 2014/09/29
    書きました
  • #isucon 負けてきました | へぼい日記

    ISUCON3戦に毎度おなじみ山形組で参加してきました。結果は過去2回の出題者チームであるLINE選抜チームが圧倒的スコアで優勝という結果で、さすがでした。 うちは一応番計測で完走したため5位という結果でしたが、途中経過では11位ぐらいをさまよっていましたので惨敗といって良いと思います。 ちなみに、予選も含めた過去4回の番計測すべてを完走しているのはうちだけじゃないでしょうか。パーマネントなチーム自体が少ないので個人単位ならいるかもしれませんが。 やったこと nginx化 serve static x-accel-redirect 既存画像の事前リサイズ 新規画像のPOSTはオリジナルを置くだけにして、リサイズをApp::watcherで実施 明らかに無駄なコードの最適化 やれなかったこと インメモリDB化 画像ファイルのストレージ分散 新規画像のリサイズ処理のCPU分散 コンテスト

    nihen
    nihen 2013/11/10
    悔しいですが、楽しかったです!ありがとうございました。
  • #isucon 3 予選総合3位でした | へぼい日記

    毎年でているISUCONに今年も山形組として参加しております。 今年からオンライン予選があり、10/5の一日目に参加し結果は現在のところ暫定で3位で予選通過の予定です。 暫定なのは使ったサーバの運営側による検査が残っているためです。 で、今年は何をやったか、というとあいも変わらず去年と同じことをしておりました。去年と同じ方式でかくと やったこと アプリ全書き換え 1fileなPSGI https://gist.github.com/nihen/6852251 feersum(1プロセスマルチスレッド) データはすべてオンメモリ スレッド間でシェア 永続化はテキストファイルへjsonで追記 html renderのキャッシュ(といってもmarkdownぐらいか) リバースプロキシをnginxにして静的ファイルもそこでserve やれなかったこと benchmark –workloadの試行

    nihen
    nihen 2013/10/07
    書きました
  • #ISUCON2 で特別賞を頂いて来ました | へぼい日記

    というわけで前回に引き続き山形組として参加してきました。 まとめブログはこちら 結果は、スコア18万切りに最初に到達すると頂ける特別賞を16時ごろ10万ちょうどぐらいのスコア(スコアは低いほうが優秀)で頂いたものの、その直後に藤原組さんにさくっと8万あたりのスコアで抜かれ、こちらも9万台のベストスコアはだしたものの、最終結果は10万あたりで、藤原組さんは8万台で2位で終了。 スコア的には僅差だったので正直かなり悔しいですが、藤原組さんは「実運用に突っ込んでも運用が破綻しない状態」を維持されていたようで、うちはかなりチート手法でしたのでこれはもう完敗ですね。次があったら正攻法で戦えるように経験値を上げて望みたいなと思いました。 やったこと アプリ全書き換え 1fileなPSGI https://gist.github.com/4006644 feersum(1プロセスマルチスレッド) データ

    nihen
    nihen 2012/11/04
    blogged
  • YAPC::Asia Tokyo 2012に参加してきました | へぼい日記

    参加してきました。YAPC::Asia Tokyo 2012。 初発表してきました Tengにpull requestをよく送っていたからか、nekokakさんにやりませんかとIRCで声をかけて頂いて、やりますーと軽く答えて参加申し込みをしたはいいものの、ちゃんとした話ができるのか不安でしかたがなく、直前は緊張で吐きそうになるなどしつつ、発表者席に向かったところ目の前にnekokakさんが陣取っており(その場ではじめましてのご挨拶(!))、プレッシャーでクラクラしながらも、なんとか発表させていただきました。 反省点は多々ありますが、なんとか最後まで喋りきることはできたので一応満足はしています。今後は自分のプロダクトでの発表や、40分枠で喋れるような濃い発表ができるように日々意識して活動していこうと気持ちを新たにしました。 プレゼン資料公開しておきます。 追記: 2012/10/6 動画アッ

    nihen
    nihen 2012/09/30
    blogged
  • YAPC::Asia Tokyo 2011に参加してきました | へぼい日記

    YAPC::Asia Tokyo 2011に参加してきました。 ブログ書くまでがYAPCというわけで印象にのこったセッションを中心に参加報告を。 前夜祭 myfinderさんの「サービス運用者のための継続的監視」はさすが日で1番目か2番目か3番目のSNSの運用をされてるだけあってさすがという感じでした。自分は小規模システムばかりやっていて開発者も運用についてかなりコミットしなきゃいけない状況で働いているのですが、ここまできちんとできてないなーと痛感。さっそく監視項目をどんどん増やしていこうと思いました。 会場外のプチ懇親会的なものでは、ほぼボッチでしたが夏菜子推しTを装備していたsugyanさんと初めて挨拶させていただくなど。 一日目 寝坊&体調不良で昼から参加。Jesse Vincentさんの「Perl 5.16 and beyond」とmalaさんの「Webアプリケーション高速化」が

  • ISUCONに参加してきました | へぼい日記

    なんでもありのWebアプリケーション高速化バトル、#isuconに山形組として参加してきました。 結果はみなさんご存知の通り、藤原組さんの圧勝という感じになりました。 自分はというと、DBボトルネックの解消までは藤原組さんとほぼ同じ手法で解決して、4700req/minあたりのbest scoreを出した後には有効なチューニングが行えずにnginx導入の罠にひっかかって200req/minとかになってしまって泣きながらapacheに戻したりしつつ、最後はサイドバーのcacheをmmapにいれる作業をしていたらバグでfailするようになってしまってぎりぎりでDBのボトルネック解消直後にロールバックして、10000req/3minくらいがたしか最終スコアだったと思います。failしたチームを除けば下から数えたほうが早い感じになってかなり悔しい結果でした。 DBボトルネック解消直後にappサーバ

    nihen
    nihen 2011/08/30
    blogged
  • DBD::mysql 4.020がリリースされました | へぼい日記

    DBD::mysqlの4.020が昨日リリースされました。 このリリースにはmysql_server_prepare=1を使っている場合のバグの修正が5件ほど含まれています。(ChangeLog) DBD::mysqlmysql_server_prepare=1 のとき TEXT 型の欄が自動 utf8::decode されなくなる こちらのブログで指摘されていた件を直してパッチを送ろうと思っておもむろにmysql_server_prepare=1の状態でDBD::mysqlのテストを実行したら失敗しまくったため、もう駄目かもしれないと思ったのですが、何故かmysql_server_prepareと心中する腹をくくり一応すべてのテストを通すようにパッチを送りまくってみたところ取り込まれたという感じになりました。(リリース後に2つほどさらにpull reqしていますが…。) TEXT型

    nihen
    nihen 2011/08/22
    blogged
  • Gearmanのはまりどころ | へぼい日記

    最近Gearmanに入門しているのですが、いろいろとはまったのでメモ。 $worker->workは”Do one job”ではなくDo job loop Gearman::WorkerのPODには $worker->work while 1; みたいなサンプルが書いてあったり Gearman::Job->work(%opts) Do one job and returns (no value returned). You can pass "on_start" "on_complete" and "on_fail" callbacks in %opts. って書いてあるのですが(しかもこれは、Gearman::JobではなくてGearman::Workerだし、、、) workはオプション無しで呼ばれた場合はwhile 1なんかなくてもloopします。 work_once的な動きにしたい

  • X-Content-Type-Options: nosniffのつけ方 | へぼい日記

    Apache mod_headersでできます Header set X-Content-Type-Options nosniff Nginx add_header X-Content-Type-Options nosniff; 但し、上記だとproxyなんかで既にX-Content-Type-Options: nosniff;が付いていると X-Content-Type-Options: nosniff, nosniff のようなヘッダになってしまう。問題ないかもしれないが気になる場合はNginxHttpHeadersMoreModuleを使って more_set_headers 'X-Content-Type-Options: nosniff'; とすると良いのかも。 Plack Plack::Middleware::Headerを使うと簡単です。 enable 'Header', s

    nihen
    nihen 2011/01/06
    id:kits 静的かどうかではなくそのファイルの由来が重要なんだと思いますけど。webサーバレベルで設定して安全側に倒れるようにしといたほうがいいって話だと思ってますが。