サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
beatsync.net
シンプルで力強いタイトルをつけてしまいましたが、2021/09/18に行われたISUCON11の本選にfujiwara組で出場しまして、優勝することができました。メンバーの話とかは予選ブログのほうに書いてますので、そちらを参照ということで、早速やっていった内容を書いていきます。 今回は全然スコアが上がらなくて、とにかく細かいやつでもいいから施策を入れまくって積み上げるみたいな感じでやったので、やったことが大量にあって読むのにとても時間のかかるブログになっております。ちゃんと読もうとすると15〜30分くらいかかるとおもうので、お時間のあるときにゆっくりお読みください。 あわせて読みたい チームメンバーのブログもあります。 ISUCON11で優勝しました by 組長 はじまるまで 基本的には予選とおなじ準備をすればOKというところなのですが、久々の本選出場なのでせっかくなので優勝したいなぁ…と
こんにちは! 本日はほとんどISUCONのことしか書いてないブログへお越しいただきありがとうございます! だって全然旅行できる気配がないんだもの…。 さて、ISUCONの季節ということで今年もfujiwara組で出場しています。メンツも昨年と同じ 組長(fujiwara)、れもん(acidlemon)、まこぴー(macopy) の3人です。昨年は予選通過ラインに2チーム分届かずに予選落ちでしたが、今年はバシッと全体4位のスコアが出たので無事予選通過しております。では、さっそくやったことなど書いていきますね。 3人の分担は特に決まってないですが自然とこんな感じです。普段の仕事と同じ感じ。 組長: インフラ設定、デプロイまわり れもん: 仮説立てて策を考える、ちょろちょろコードを書く、大技をかける(そして不発) まこぴー: バリバリとコードを書く デプロイ、レビュー、パフォーマンス分析とかは3
ざっくりいうとfujiwara組は本戦でいうと2位と3位の間くらいでした、いやー予選さえ突破できていればな〜〜。それにしても今年は1〜3位が全部学生というのはすごいですね! 学生枠じゃなくて社会人枠作ったらというジョークもでるくらいの結果でしたが、お題的にもみんな知ってるISUCONということで参加者によってドメイン知識の偏りがなかった結果学生がいかんなく伸びてきたというところなのかなぁと思っています。 ということで、ここからはfujiwara組のやったことの話とかを書いていきます。 始まるまで 並列チームは運営チームより「ミライノタワーに来ますか?」と聞かれまして、「はい! 行きます!」と答えた我々は新宿で参加することにしました。私は鎌倉住まいなので湘南新宿ラインで新宿にいくにあたって9時までに行くには7時半すぎの電車に乗る必要があるので仕事いくよりもよほど早起きが必要でしたが、ISUC
10月11月は大忙しプロジェクトで過ごしておりましてすっかりブログ書くのが遅くなってしまいました。ということでISUCON7決勝のお話です。 過去のfujiwara組最弱の座を返上するべくfujiwara組として出場してきましたが、結果としてはFAILということで、さらに最弱になってしまいアァ〜という感じです。まぁやったことのうち無事マージされた分については組長のところにかいてありますのでそちらを見ていただくとして、私がやっていったキャッシュ作戦について書いておきます。 だいたい「ここ重いからキャッシュしていこう」って言ったのは私なので、ざくざく書いていきます。 mItemsは変わらないからキャッシュ みんな初手でやるヤーツですね。handlenameがサクッとやってくれました。 getStatusの結果をキャッシュする goだと、serveGameConnという関数がコネクションごとのル
秋も深まりISUCONの季節ですね〜。今年はどういうチームで出ようかなと思ってたのですが、8月に同僚の @fujiwara が学生向けのISUCON夏期講習をやるということで資料を眺めていたところ… ぎゃーーISUCON4の3位が最低成績だなんてーーー オレ歴代fujiwara組最弱じゃないか… となったので、今年はこのチームを再結成してもうちょっと良い成績を取ってリベンジしようというのがぼくの密かな野望でした。ちなみにISUCON4の決勝で3位に伸び悩んだのはCache-Controlっていうヘッダを付けるという解法がわからなかったみたいな話なのですが、その辺は当時の公式の解説と講評を読んでもらえばいいでしょう。一応Cache-Controlつけてない組の中では1位だったんですけどね、そういうのを負け惜しみっていうんですけどね…。 ISUCON7予選のお題は… さて、そんなわけで始まりま
ちなみに3月のYAPC::Kaisai 2017 OSAKAにも行ったのですが、ブログ書いてなかった。あのときは仕事の都合でYAPCの翌日の大阪観光を取りやめて日曜朝から羽田戻ってそのまま台湾に行く羽目になってしまってブログ書くどころではなかったのだ...(機内ではSwitchでずっとゼルダやってた)。 さてそれはともかく、先週末はYAPC::Fukuokaということで福岡に行ってきました。YAPCが地方開催になって早3回目、そろそろなんかトークをしてもいいのでは?という気持ちになっていたのでトーク応募してみました。そして、ありがたいことに採択いただきまして、テーマの「未来」にあわせてここ最近の未来を作ってきた話として社内でDockerをドカドカ使ってみんなが開発に集中できる環境を作る話をしてきました。 巨大Perlプロジェクトに、Dockerが出会った 出番がLTの前とだいぶ遅い時間だっ
すっかり季節は年度末ですね〜。なんと明後日には新年度で新入社員が入社してくるぞ!! ということで新卒研修の準備に追われてる今日この頃ですが、みなさまいかがお過ごしでしょうか。 さて、研修準備も長々やると疲れてくるのでちょっと現実逃避に…というわけではないんですが、最近horensoというGoogleじゃないほうのcronなどでコマンドをwrapして成功失敗の通知を仕組み化するツール(詳しくは作者のSongmuさんのブログをご参照ください)用にSlack Reporterを書きました。ちなみにGoogleのhorensoは漢字入力システムです。 で、きっと今どきのWeb系の会社はSlack使ってるところ多いし、社内の各プロジェクトで汎用的に使えるように作ったから勢いよく全世界に公開しておくか〜と思った次第なので、この記事を(現実逃避に)書いてます。この前とある勉強会に行ったときも自席から前側
そういえば今週末はISUCONですね! ぼくは昨シーズンの成績不振により自由契約の身となったためどうしよっかな〜と思案していましたが、とくに社内のどこのチームからも声がかからなかったので今年はエントリーできず予選不戦敗?となっております。ちょうど今週末F1日本GPだしゴロゴロしながらテレビ観て過ごします。 さて今日はちょっとしたTipsです。最近会社のチャットがIRCからSlackに移行している最中でして、IRCで飼ってたBOTをSlackで再実装している真っ最中の今日この頃。 社内には3時間で書かれたとりあえずIRC BotをSlackにゲートウェイするやつとかもあったりしますが、ぼくのbotは単純に時間がきたらreminderかけるというただそれだけのやつなのでさっさとSlackのWebhookベースで書き直すことにしました。元のIRC BotはPerl製ですが、もうここ1年くらいずっ
さてみなさんApache Drillでドリドリしてますか? えっ、ドリドリしてない? あ、そういうぼくもドリドリしてないですよ〜。そんな感じですが、今日は「Apache Drillつかってみた」的な話です。 具体的には、Apache DrillでnginxのログをSQLで集計してエンドポイント別の平均値とか最大最小を出したりとか、レスポンスボディのサイズの平均を出したりとかそういう感じの使い方です。 はじめてのApache Drill なんでApache Drillを使ってみたかというと、昨日、社内で「Apache Drillを分散モードで使うのにZooKeeper必須なの…」みたいな謎のぼやき(?)が流れまして、あーApache Drillとかあったな〜とその存在を思い出したという感じなんです。 ちょうどその時、Webサービスのパフォーマンス分析をやるというタスクが手元にありまして。具体
まぁなんか報告が遅れましたが実家から20日に戻ってきました。24,5は定山渓へ温泉旅行に出かけてまして、やっと今日から本腰で大学院院試の勉強に本腰が入る…といいたいところですが8月末提出のレポートが…(しかもA4で5枚)。 とまぁそれはおいておいて、実家から戻ってくる列車で台風に巻き込まれながら(私は水難の男なので、Uターンの日程を10日前に決め、その時間めがけて台風が飛んできても最近はもう驚かなくなった)、ちょっと今更ながらC++のポインタと参照の違いについてまじめに考えたんですよ。むしろそれまでの認識は // ポインタバージョンのswap void ptr_swap(int *x, int *y){ int temp=*x; *x=*y; *y=temp; } // 参照バージョンのswap void ref_swap(int &x, int &y){ int temp=x; y=x;
そういえば金沢に行って来た話の2〜4日目をかいてる途中で2ヶ月くらい経ったことに気付きましたが、まぁその話はおいておいて今日はGoの話です。 さて、このタイトルを見てGoに詳しく賢明な読者の方々は「あぁまたこの話題だよ、Goでchannelがcloseしてるかどうか知りたいようなパターンはだいたい書いてるアプリの設計とかchannelの使い方が間違ってるんだからやめとけ」と眉をひそめるかもしれません。まぁちょっとまって! オレもそうなんじゃないかなぁという気はしているし、ハマリどころがありそうということはうすうす分かってるけど一応調べて考えてみてもいいじゃないか。 結局の所調べて「こうすればいいね!」ってことは分かったんですが、それも破綻する場合があるので、アンチパターンだなぁと思いつつこの記事を書くことにしました。 まずGoのchannelのナイーブさを再確認する そもそもGoのchan
年末が近づいてきて仕事が燃えさかっているので記事を書いて現実逃避しています。 さて、(なんかいきなり一年を振り返ってるみたいで唐突ですが)今年はDockerをはじめとしたコンテナ技術がついに一般的な世界に降りてきてみんなドッカードッカーといろんなことを試したりした年でした。 Dockerは個人的に一つ面倒な点があって、基本的にLinuxじゃないと動かないというのがあります。ホントは手元のMacでDockerしたいのですが、さすがにDockerのコンテナはMacでは動きません。で、それに対する一般的なソリューションは、VirtualBoxをインストールしてLinux(CoreOSとかboot2docker)を動かしてそこにつなごう! というものでした。 まーそれでもいいんですが、出来ればMacの上でVMは動かしたくないんですよねー。ぼくの場合は自宅サーバにたくさんVM立ててあるからVMはそっ
おもむろに年を重ねて昨日で32歳になりました。ついに16進数で表記しても0x10台ではなくなってしまったので、月日の流れの厳しさを感じます…。まぁいいけど。あとどうでもいいけど今週の頭からこのサイトがSSLになりました。どうでもいいですね。 さて、その昨日の話になりますが、ISUCON Makers Casual TalksというイベントでISUCON3の出題の話をしてきました。余談ですが、atndのページを開くといきなり ISUCON出題者がビールを飲みながらしゃべる! とデカイ文字で書かれてて「そりゃそうだけどいくらなんでも直接的すぎる」とウケました。 kazeburoさん、tagomorisさん、fujiwaraさんはそれぞれ問題の内容およびポイントについて話をしていましたが、ぼくは実のところ問題を作ったというよりも解いたりデバッグしたりみたいなところを重点的にやる役回りだったので、
今年も残すところあと1ヶ月ですね! さて、先週金曜日にYokohama.pm #12がありました。会場がうちの会社だったのでじゃあ誰かしゃべるよね〜と思って眺めてたのですが、なんかみんなもじもじしてて誰もしゃべりそうになかったので、とりあえずネタ枠としてGoからPerlを呼ぶという一発ネタでもやるかねぇということを考え始めました。 ちょうど最近GoでC/C++のライブラリを呼ぶのを仕事でやっていて、既にcgo周りの知見はだいぶたまっていたので、PerlをCから呼ぶところさえ理解すればたぶんできるなーということでperldocのperlembedを読みながらCのサンプルを動かして、それをGoに移植したら30分くらいで動いたのでじゃあこれで一ネタやろうかなということで15分でエントリーしました。 発表に至ったなりゆきはそんな感じでした。内容はスライドをご参照ください。 表紙の背景の写真はうちの
みなさんISUCON4お疲れ様でした。まずはじめに運営のLINEさん、出題のクックパッドさん、そしていつも大量のサーバを提供していただいているデータホテル改めテコラスさんありがとうございました。ピザとお寿司おいしかったです。 さて、今回はベンチマークの気持ちになってCache-Controlヘッダをつけることが出来たかどうかだけがブレイクスルーできるかどうかを左右するという潔い問題でした。結果は既に既報のとおりで上位2チームだけブレイクスルーし、3位以下はずーっとネットワーク帯域にめいっぱいデータを流し続けてドングリの背比べとなりました。 1Gbpsの帯域を使い切るレベルまでアプリを高速化できると大体スコアが8000〜9000程度となるようで、最後の1時間までほぼ8000台に団子となっていましたが、Cache-Controlでブレイクスルーした2チームを除くと私の所属するfujiwara組
関東も秋が深まり、「紅葉を見にいこうよう」と言ってスベるシーズンがやってきました。みなさんいかがお過ごしでしょうか、れもんです。 さて、自社サイトでGoやるよって発表したので最近はずっとGoを書いているのですが、ついに難題がやってきました。C++で書かれたライブラリをGoで使うというやつです。今日は、GoからC++のライブラリを使おうとするときに何が起きているのかという話と、それゆえにこのオプションを指定するとドツボにはまるのでやめた方がいいよという話です。 GoからC++を使うときの基本的な考え方はRubyとかPerlでC++のライブラリを使うときと同じです。なので、いつものセオリーでやってみることにしました。まぁC++なら素直にSWIG使えよって話もあるんですが、何事も最初は挑戦だってことで手で書きます。 そのいつものセオリーとは何かというと、C++のライブラリをCインタフェースで使え
どーも、れもんです。みなさんNorikra使ってますか? えっ使ってない? まぁストリーム集計処理っていうのがなかなか使いどころ難しいですものねー。よっぽど速報値が必要な場面じゃないと出番がないし、ぼくもインストールしたけどほぼ使ってないという今日この頃です。 ということで! 今回はNorikraを使うとっかかりとして、最近リリースしたサービスのユニークユーザ数をリアルタイムに出したいなぁというお題をNorikraでやってみることにしました。 もともとそのサービスではネイティブアプリにGoogle Analytics SDKが入っててそれを使えば直近5分のリアルタイムユニークユーザ数は見えているのですが、サーバ側でもそれを計測したいということで、そこをNorikraでやってみることにしました。 理由は、よく出来たアプリだと幾つか画面を遷移していても通信しなくてよいように作られていて、クライ
タイトルだけで連絡内容が完結してしまった…。予選結果がでましたのでfujiwara組のリポジトリを公開しました。休日返上でAMI審査を行った運営のみなさまお疲れさまでした。リンクはこちらです。 acidlemon/isucon2014-qualifie (github) 1行で終わりなのもアレなので、githubのソースコードを引用しつつみなさんの感想ブログを読んだ感想を書いていこうかなーと思います。 CSS消すのはレギュレーション的にどうなの問題 AMI締め切り直後に速攻で手の内を出したので結構話題になっていた<link>をJavascriptで出すように変えた件について。 個人的にはIdobataで運営に確認して見た目の確認はJavascriptの有効なWebブラウザで行われるという確認が取れたのでたぶん大丈夫だろうとは思っていました。が、そこはまぁ運営側が意図した競技になっているかど
どうもこんにちは、れもんです。今年もISUCONの季節がやってきましたね。昨年はfujiwaraさんの右腕として出題業をやりまして、今年はそのままfujiwara組として予選に出場しました。 結果は既報の通りですが、ひとまず2日目で暫定1位のスコアを出しています。67782です。では問題の感想とかやったことを振り返っていきます。あ、長いのでマジメに読んだら読むのにたぶん10分くらいかかりますよ。 また、チームメンバーのfujiwara, handlenameのブログも出そろいましたのでそちらも合わせてお読みください。 #isucon 4に参加して予選2日目暫定1位になりました (@fujiwara) #isucon 4にfujiwara組として参加しました (@handlename) 前日まで 金曜日のお昼にチームでランチして分担を確認。fujiwaraさんが「今回は実装が速そうなhand
YAPCが終わり、夏も終わり、みなさんいかがお過ごしでしょうか。れもんです。季節感を先取りしてデザインを冬っぽい感じにしました。 さて、最近仕事でRedshiftをつかっておりまして、ご存じのない方に簡単に説明するとAWSで使えるマネージドで列指向でシェアードナッシングな分散データベースっていう説明でいいんでしょうか。あんまり定義の分野に明るくないのでとりあえずぼくはそんな認識で使っております。MPP! MPP! みたいな感じです。 で、「Goで行こう」というダジャレなのかどうかよくわからないことをぶち上げたというのと、BIツール的なところは比較的言語の作りに依存してどうこうみたいなハマリかたをしなさそうで新しい言語を投入するには無難だなというところで、Redshiftを叩くのをgolangでやっております。 RedshiftはPostgreSQLのドライバで接続可能なので、golangに
完全に個人の日記レベルの話ですが、コンピュータのログと通知の話を書きます。 ログといってもまぁいろいろあるわけですが、何のためにログ取ってるかというと、異常なことが起こったことが分かるように、とか異常が発生したときに原因が分かるように、とかもっと進んだ考え方でいえば異常の予兆をとらえるとか、そんな感じかと思います。 なので最初はとりあえず異常なことが起こったら分かるようにログに記録するというのが最初に一歩になります。それが出来たら異常が発生したときの原因究明がすぐできるように詳細な情報をログに残すようにして、最後に正常な処理もログに残していけば危険な予兆をとらえることができるようになるかなと。なんか書いてみたら至極当たり前っぽい感じになりました。おそらく運用をやっているエンジニアはみんな気をつけていることだと思います。 ログというのは大量に存在して価値があるものなので、記録することに価値が
最近またストーリーテラー期が来ているので今日は小説調です。 —— あれは先週のことだっただろうか。会社でミーティングに出ていた私は、いつものようにMacBook Airに向かって手を動かしていた。すると、ディレクターとデザイナーの雑談が耳に入ってきた。 「じゃあこのセルにこのキャラクターの髪色を指定する色コード入力しておきますー」 「おねがいします」 「入力した色コードが間違ってないか、入力した色コードの色に背景色が自動的に変わればいいのになー」 「そういうのって自動で出来ないんですかね…」 あまりにも何気ない会話だったのでそのままスルーしそうになったが、よくよく考えてみればこれはエンジニアの出番だ。 ということで、そのまま会話を聞いてないフリをしつつ少し考えて、条件付き書式を使うことを検討した。しかしそれはダメだ。たしかに条件付き書式を使えば背景色を変えられる。ただし任意の色コードに対し
4月頭から2週間弱ほど新人研修の講師をやってて、新人に実習させている間に「Perlの初心者が次のステージに踏みだそうとしてよくハマる罠の話」っていうのを書いてる途中だったんですが、後半の研修準備がドタバタしたせいで結局完成に至らずお蔵入りしそうな今日この頃です。 さて、今朝起きたらなんかサーバから高周波の音がしてて、定期的なディスクリードのタイミングだけ高周波の音が止まるのでいやな予感がして確認してみたところRAIDコントローラから1台HDDが見えなくなっていました。 先ほどRAIDコントローラのログをチェックしたところ朝5時半にHDDが1台コマンドタイムアウトを起こして切り離されたようでした。RAID1なのでデータはちゃんと保全されているということで、せっかく勤務地が横浜なんだし横浜で代わりのHDD買ってきて差し替えてリビルドしてやればOKですね! ってことでHDDを買いに行きました。
このエントリはFluentd Advent Calendar 2013の18日目のエントリです。社内引きこもり系のものぐさエンジニアがパブリックなAdvent Calendarに記事を書くなんてまぁめずらしい! さて、今日は何の話かというと、fluent-plugin-redis-publishというプラグインの話です。作者はtypesterなんですが、rubygems.orgにアップロードしたのはhisaichi5518です。なんでそんなことになっているかというと、話は1ヶ月半ほど前に遡ります。もともとこのプラグインは社内で生まれて1年前くらいから普通にバリバリと使っていました。 hisaichi5518: fluent-plugin-redis-publish ってrubygemsにないんですか acidlemon: ない 言われるまで気付かなかったけど、1年以上使ってるのにgithu
こんにちは、れもんです。ISUCON3本戦の事前解答作成、問題フィードバック、ベンチマークのバグ取りとチート対策、当日のオープニングストーリーの作成と封筒ディレクターが主な担当です。ストーリーがだいぶ好評(?)だったようで安堵しています。 みなさんISUCON本戦お疲れさまでした! 予選の時は1日目の競技中にチェッカーのチェックが甘いところが見つかって出題者がダメージを受ける出来事がありましたが、今回は前日徹夜でベンチマークの問題点を探したり、特定の制限によるスコア荒稼ぎができないようにチェックしたりと大分力を入れて調整しました。問題の難易度と相まって前半の時間は全然みんなスコアが伸びてこないので逆に不安になりましたが、しっかり3分計測で6桁スコアを出してきたLINE選抜チームはさすがでした。 解説ネタ さてまぁ準備の様子とか詳しい感想とかは別途書くとして、ひとまず忘れないうちにISUCO
前の会社にいたころはバリバリと音を立ててWindowsでC++を書いていたのでBoostも当然自前でビルドしてたりしていました。ただ年に1回ビルドするかどうかとかなので、あのビルドの長いオプション全然覚えられないんですよねー。ぼくはツイートしてそれをfavしてとりあえずメモっておくみたいなことをやっています。 Boostのコンパイルオプションいつも忘れるからメモ > bjam --toolset=msvc-9.0 --stagedir=. link=static runtime-link=static debug release stage — Masatoshi Kawazoe (@acidlemon) December 11, 2009 これはmsvc-9.0だからたぶんVisual Studio 2008(たぶんSP1)でコンパイルしたときのメモだな…。まぁこんなかんじで当時はbja
しまった、YAPC感想ブログ書いていなかった…。れもんです。 さて、先週末予選を行ったISUCON3の出題に参加しました。先に私の立場を明らかにしておくと、@fujiwaraの同僚で、昨年からWeb業界にやってきてWebサービスの開発経験1.5年くらいのエンジニアです。とりあえず業務ではサーバーサイドのエンジニアリングを行っていますが、iOSアプリも書けますのでそっちのテクニカルなアドバイスをしたりもしています。あ、そうそう、先日@typesterが独立して退社したので、im.kayac.comのiOSクライアントは私が引き継ぎました。ISUCONが終わって落ち着いたら通知サウンドを選べるようにする対応をやりますのでお楽しみに! もうなんか半分くらい書き終わった感じです。 出題内容についての反省項目などは既に@fujiwaraがまとめている通りで、/recentのチェックが甘かったのがやは
GWが始まりましたが、鎌倉のGWは観光客多すぎて逆に住民はげんなりして外に出なくなる感じです。とはいえ路地まで観光客が攻め込んでくることは少ないので、路地を散歩する分には天気がよくていい感じですね。ちなみに人力車のおにーさんはそういう味のある路地を知り尽くしているので人力車で移動するのはそこそこオススメです(ぼくは乗ったことないけど「こんなところも通るんだ!」ってところで見かけたりします)。 さて、jqというコマンドをご存じでしょうか。 jq jq is a lightweight and flexible command-line JSON processor. と書いてあるとおり、コマンドラインでJSONを扱うことができるコマンドです。で、今まさに仕事で巨大JSONと戦うことが多く、このコマンドが大活躍です。 とはいえ、ぼくの使い方としては「巨大JSONをキレイに整形して表示する」とい
昔からとうてい世間に公表出来ないようなものばっかり作っていた私ですが、今年の目標に「パブリックにリリース出来るもの(製品およびライブラリ)をたくさん作る」と掲げておりまして、その第一弾というわけではないですが今をときめくイベントログ収集ツールのFluentのプラグインを書きました。 名前はredeliverプラグインです。ログに別のタグをつけて再送するんです。 必要に迫られて作った感じなんですが、一応作る前にそもそもそういうプラグインありそうじゃね? って思って探してみたりはしました。するとそれっぽいものとしてrewriteプラグインとrewrite-tag-filterプラグインが見つかりました。あら…どちらの作者も名字は違うけどKentaroさんなんですね…ってそれはおいておいて、残念ながらドキュメント読んでみると微妙にぼくの使い方に合致しないため使えませんでした。 ぼくが必要としてい
次のページ
このページを最初にブックマークしてみませんか?
『beatsync.net』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く