タグ メモ置き場
人気順 10 users 50 users 100 users 500 users 1000 usersAnsible playbookで1台でも失敗したら即座に実行を止める方法 - tagomorisのメモ置き場
毎回あれー?ってなってドキュメント読んだりググったりするんだけどうまく見付けられないので書いておく。Ansibleはデフォルトだとtaskの実行が全ホストで失敗しない限り続く。言いかえると、あるタスクがあるホストで失敗したらそのホストについては以降実行されないが、成功した他のホストについてはplaybookの実行は継続される。これは特に分散ストレージのセットアップなどにおいて、大変よくない。よくな... 続きを読む
ISUCON4 いってきた&勝ってきた! #isucon - tagomorisのメモ置き場
連覇だ! ヒャッホウ!!!#isucon 2014で優勝しました - すぎゃーんメモISUCON4 で優勝してきました!!! #isucon - blog.nomadscafe.jp特にkazeburoさんのエントリに最終的な状況についての詳細が書いてありますので、ぜひそちらもどうぞ。sugyanは自分で力不足とか言ってますが、ISUCON本戦という場で、業務でほぼ使ったことがないはずのRedis... 続きを読む
はじめてのmaven central 公開 - tagomorisのメモ置き場
前置き:このエントリはJavaおよびJava周辺の*1開発環境に全く縁の無い人間が、可能な限り依存ソフトウェアを少なく手順をシンプルに保ったままやろうとしたものであり、知識・経験のある人にとっては全く最適な手段でなかろうことをお断りします。先日のエントリ で書いたとおり woothee 1.0.0 をリリースした。Perl, Ruby, Node.js および PHP などはそれぞれの言語毎のモジ... 続きを読む
Norikra meetupやってきた - tagomorisのメモ置き場
Norikra meetup : ATNDDeNA Technology Seminar #Norikra meetupNorikra がいい感じになってきたので、ユーザ(とコミッタ)もうちょっと増えないかなーと思い、Norikra meetupという勉強会をやった。会場、Ustream中継および懇親会を:DeNAさんにご提供いただきました。いつもいつも本当にお世話になっていますが、すばらしい会場... 続きを読む
Ansible勉強会#1 にいってきた&しゃべってきた - tagomorisのメモ置き場
Ansibleの勉強会あるといいねーという話をしていたら開催されることになったAnsible勉強会#1にいってきた。んでしゃべってきた。Ansible 勉強会 #1 - connpassAnsible 勉強会 #1 - 資料一覧 - connpass開催はIanががんばりました。おつかれ! あとレッドハットさんの会場を借りての実施がたいへんスムーズですばらしかった。なぜか申し込みが殺到して、新宿の... 続きを読む
Norikra v1.0.0 - tagomorisのメモ置き場
English article以前からスキーマレスなストリーム処理をSQLで!というソフトウェアとして作っていたNorikra、このたびあちこち機能改善したりしたので、既にお仕事で絶賛稼働中ということもあるし、区切りとして v1.0.0 としてリリースした。ついでにロゴとかも作ったので、なんとなくいい感じになりつつある。https://rubygems.org/gems/norikra/versi... 続きを読む
LINE Developer Meetup in Fukuoka #1 でしゃべってきた - tagomorisのメモ置き場
勤務先であるところのLINE株式会社*1がこれから月イチでdeveloper meetupを福岡でやる、ついては第一回目でしゃべってくるがよい、ということになったので、いってきた。わーい出張だー。*2LINE Developer Meetup in Fukuoka #1 - connpass話題はどうしようかと思ったけど、普通に自分のお仕事そのものについて話すか、ということでログ収集・集計システム... 続きを読む
WebSocketsでの送信処理に関する注意点(CLOSINGステートとcloseイベントに関する疑問) - kazuhoのメモ置き場
WebSocketsの接続状態には、CONNECTING / OPEN / CLOSING / CLOSEDのステートが定められている。一方、CLOSING状態への遷移に対応するイベントは存在せず、CLOSE状態へ遷移した際にcloseイベントが発生するとされている。つまり、「closeイベントが来るまでは送信できるぜー」ってなコードを書いてると、正常系なのにsend()で例外発生する可能性がある... 続きを読む
DRY(don't repeat yourself)するかしないか、その判断基準について - kazuhoのメモ置き場
「過剰なDRYが技術的負債を生む」みたいな内容の記事を書きたいが、うまく言語化できない。「過剰な食事制限が健康を損なう」程度の内容に成り下がりそうだけど、そんなんじゃないんだよ…@methane 実装におけるDRYみたいなものを考えていて、そうすると前者のDRYというのがどこに位置づけられるかはわからないんですが、とにかく暗黙知みたいなものを過剰に増やすDRYは良くないよね、というような話なんです... 続きを読む
トピックブランチ内の変更を無視してgit bisectする方法 - kazuhoのメモ置き場
merge commitについては1st parentのみをたどりながらgit bisectしたいことってありますよね? (参照: テストファーストなGitワークフローについて - kazuhoのメモ置き場)そういうとき、1st parent以外に属するcommitをgit bisect skipするの、どうやったらきれいに書けるのかなと思ってたのですが、以下のやりかたが一番よさげ。 $ git ... 続きを読む
テストファーストなGitワークフローについて - kazuhoのメモ置き場
Gitのワークフローに関する話題が、また盛り上がっているようなので、僕が好んで使っているGitワークフローについて書きます。対象となるソフトウェアは、GitHubやGitHub Enterprise等を使って開発されている、リリースブランチを切らずにmasterにリリースタグを打っていくだけで十分な程度の、ウェブサービス(の部品)やオープンソースプロジェクトです。まず、以下の2点を原則として考えて... 続きを読む
npm (node package manager)の菱形依存問題とdedupeと社内モジュールとJSX - kazuhoのメモ置き場
npmで色々コードを書いていると、以下のような依存関係ができてしまうことがある*1。 a +-- b このように「bが依存するc」と「dが依存するc」が異なるものになってしまうと、(2回cがロードされる分)プログラムが無駄に大きなものになってしまったり、(bとdがお互いで生成したcを使う場合に)片方で生成されたcのインスタンスをもう片方で「instanceof c」してもfalseが返ってきてしま... 続きを読む
WebSocket(RFC 6455)上で使用するプロトコル設計についての備忘録 - kazuhoのメモ置き場
一般論として、全二重の通信プロトコルを実装するにあたっては、いくつか注意すべき点があって、具体的には、到達確認と切断シーケンスについて定めておかないと、送達されたはずのメッセージがロストしていたり、切断タイミングによってエラーが発生*1したりする。具体例をあげると、たとえばTCP/IPにおいてshutdown(2)を用いずに、いきなりclose(2)を呼んでいると、read(2)やwrite(2)... 続きを読む
2013年を振り返ってみる - tagomorisのメモ置き場
今年はよくコードを書いたなあ、という気がする。OSSな年だった。個人の感想です。Fluentd今年はプラグイン等を書いた数はさすがに落ち着いた、けどpullreqをよくもらうようになって、人のコードを見る機会が増えた気はする。今年新規に作ったのはこれだけ。 fluent-plugin-secure-forward fluent-plugin-norikra fluent-plugin-ruby-m... 続きを読む
「今日使われているプログラミング言語の多くは、なぜ1990年前後に誕生したものなのか」に関する一考察 - kazuhoのメモ置き場
若い人たちは、「文字列型」があるプログラミング言語しか知らないかもしれない。だが、汎用的な文字列型が一般的になったのは、プログラミング言語の歴史の中でも比較的最近のことである。たとえば、1972年に誕生したC言語には文字列型がない。1980年代に良く使われていたPascalの文字列型は最大255文字しか格納できなかった。なぜか? それはメモリが貴重なリソースだったから。1980年代のPCの搭載メモ... 続きを読む
GCとかロケット科学すぎてウェブサービス屋さんには似合わない - kazuhoのメモ置き場
※タイトルは釣りです。先のエントリで、採るべき技術的アプローチに関しては、ソフトウェアの修正コストによってかわるという議論があって、ウェブサービスの場合にはソフトウェア製品(やSI)と比べて圧倒的に修正コストが安い。ウェブサービスの場合にロケット科学的な「正しいけど大げさ」なアプローチよりも、小さく作って動かしながら修正していく手法が好まれるのにはそういう背景もあるソフトウェアのアップデートとウェ... 続きを読む
ソフトウェアのアップデートとウェブサービス運用における継続性リスクについて - kazuhoのメモ置き場
Webサービスのようなプロダクトについての議論について教えて下さい - delirious thoughts で呼ばれたような気がしてたけど放置してた。でも今日、express という node.js 上で動作するメジャーなウェブアプリケーションフレームワークを作っているチームが、次世代の製品に取り組み始めたと聞いたので、メモを以下に貼ります。 --------------------------... 続きを読む
Test::Mocha::PhantomJSを書いた - kazuhoのメモ置き場
Test::Mocha::PhantomJSというPerlモジュールをリリースしました。一言でいうと、Perlで書いたサーバサイドロジックを、PhantomJS上で動くMochaのテストコードで検証するためのモジュールです。具体的な手順としては、 t/ 以下に次のようなテストコードを書いて Mochaのテストが含まれるHTMLを返すようにするの2点さえやってしまえば、あとはmake testするだ... 続きを読む
[JSX] JavaScriptバインディングの書き方 - kazuhoのメモ置き場
※この記事はJSX Advent Calendar 2013の一部です。JSXでは、JavaScriptで定義されているオブジェクトをJSXのクラスとして簡単に取り込めるようになっています。やりかたは簡単。「native」属性を付与してクラス定義を書くだけです。たとえばJavaScriptの組み込みオブジェクトであるRegExpのバインディングは、以下のように定義されています。 native fi... 続きを読む
個人サーバのファイアウォールを活かしつつ、どこからでもログインする方法 (CGI編) - kazuhoのメモ置き場
以前、いつでもどこからでもサーバにログインしたくなるときってありますよね。かといって、サーバの sshd への接続を全世界から可能にしておくというのは、たとえパスワード認証を無効化していても避けたいところ。 Dynamic DNS を使って SSH アクセスを制限する方法 - kazuhoのメモ置き場ということでDynamic DNSを使う方法でやってきてたんだけど、いろいろ不便があったので、HT... 続きを読む
オレオレ認証局の適切な運用とName Constraints - kazuhoのメモ置き場
オレオレ認証局が忌避されるべきものとされてきた理由は、X.509 PKIが保証する安全性は、最も信頼性が低い認証局(trusted root)のそれに等しいからです。しかし、X.509 v3以降ではName Constraintsが導入され、「特定のドメインに対してのみ証明書を発行可能な認証局」を定義できるようになっており、同constraintをcritical key usage extens... 続きを読む
パスワードをソルトつきハッシュ化してDBに保存するのがベストプラクティス…とは限らないという話 - kazuhoのメモ置き場
フレームワークの責務とセキュリティ - MugeSoの日記についての感想文です。世の中にはたくさんの通信プロトコルが存在し、中には、特定の条件でパスワードを含む文字列をハッシュ化した値を検証しなければならないものも含まれています。例えば、HTTP Digest認証の場合は、MD5("realm:user:password")を保存しておく必要がありますし、APOPの場合は生のパスワードを、CRAM... 続きを読む
Inline JSONPの長所について (続: サーバサイドからクライアントサイドのJavaScriptを呼び出す際のベストプラクティス) - kazuhoのメモ置き場
サーバサイドからクライアントサイドのJavaScriptを呼び出す際のベストプラクティス - kazuhoのメモ置き場 の件、id:tokuhirom がさくっと HTML::CallJS というモジュールを書いて公開してくれた (Shipped HTML::CallJS - blog.64p.org 参照) ので、どういう Inline JSONP を使うとどういう形で書けるか、ぱっと例をあげた... 続きを読む
サーバサイドからクライアントサイドのJavaScriptを呼び出す際のベストプラクティス - kazuhoのメモ置き場
はてなブックマーク - JavaScript文字列のエスケープ あたりで盛り上がっていた件、僕も、そもそもそういうことはやめたがいい派ですが、一方で、 タグ内に動的生成したデータを埋め込むのは、それほど難しいことではないかと思います。というのは、元のエントリではエスケープ関数を自作していますが、実際はありもののエスケープ関数を組み合わせるだけで、タグ内に正しくエンコードされたデータを埋め込むことが... 続きを読む
ディレクトリの変更を監視して、任意のコマンドを再起動する話 - kazuhoのメモ置き場
plackup -R とか grunt-contrib-watch とか、ウェブアプリケーションの処理系とかビルドツールには、割とこの手のものが組み込まれているんだけど、Windows を無視していいなら、外部ツールを使えばいいわけで。具体的には MATSUNO★Tokuhiro / App-watcher - search.cpan.org をインストールして % watcher --dir s... 続きを読む