タグ メモ置き場
人気順 5 users 10 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 v1.0.0 - tagomorisのメモ置き場
English article以前からスキーマレスなストリーム処理をSQLで!というソフトウェアとして作っていたNorikra、このたびあちこち機能改善したりしたので、既にお仕事で絶賛稼働中ということもあるし、区切りとして v1.0.0 としてリリースした。ついでにロゴとかも作ったので、なんとなくいい感じになりつつある。https://rubygems.org/gems/norikra/versi... 続きを読む
DRY(don't repeat yourself)するかしないか、その判断基準について - kazuhoのメモ置き場
「過剰なDRYが技術的負債を生む」みたいな内容の記事を書きたいが、うまく言語化できない。「過剰な食事制限が健康を損なう」程度の内容に成り下がりそうだけど、そんなんじゃないんだよ…@methane 実装におけるDRYみたいなものを考えていて、そうすると前者のDRYというのがどこに位置づけられるかはわからないんですが、とにかく暗黙知みたいなものを過剰に増やすDRYは良くないよね、というような話なんです... 続きを読む
テストファーストなGitワークフローについて - kazuhoのメモ置き場
Gitのワークフローに関する話題が、また盛り上がっているようなので、僕が好んで使っているGitワークフローについて書きます。対象となるソフトウェアは、GitHubやGitHub Enterprise等を使って開発されている、リリースブランチを切らずにmasterにリリースタグを打っていくだけで十分な程度の、ウェブサービス(の部品)やオープンソースプロジェクトです。まず、以下の2点を原則として考えて... 続きを読む
WebSocket(RFC 6455)上で使用するプロトコル設計についての備忘録 - kazuhoのメモ置き場
一般論として、全二重の通信プロトコルを実装するにあたっては、いくつか注意すべき点があって、具体的には、到達確認と切断シーケンスについて定めておかないと、送達されたはずのメッセージがロストしていたり、切断タイミングによってエラーが発生*1したりする。具体例をあげると、たとえばTCP/IPにおいてshutdown(2)を用いずに、いきなりclose(2)を呼んでいると、read(2)やwrite(2)... 続きを読む
「今日使われているプログラミング言語の多くは、なぜ1990年前後に誕生したものなのか」に関する一考察 - kazuhoのメモ置き場
若い人たちは、「文字列型」があるプログラミング言語しか知らないかもしれない。だが、汎用的な文字列型が一般的になったのは、プログラミング言語の歴史の中でも比較的最近のことである。たとえば、1972年に誕生したC言語には文字列型がない。1980年代に良く使われていたPascalの文字列型は最大255文字しか格納できなかった。なぜか? それはメモリが貴重なリソースだったから。1980年代のPCの搭載メモ... 続きを読む
ソフトウェアのアップデートとウェブサービス運用における継続性リスクについて - kazuhoのメモ置き場
Webサービスのようなプロダクトについての議論について教えて下さい - delirious thoughts で呼ばれたような気がしてたけど放置してた。でも今日、express という node.js 上で動作するメジャーなウェブアプリケーションフレームワークを作っているチームが、次世代の製品に取り組み始めたと聞いたので、メモを以下に貼ります。 --------------------------... 続きを読む
個人サーバのファイアウォールを活かしつつ、どこからでもログインする方法 (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... 続きを読む
mmapのほうがreadより速いという迷信について - kazuhoのメモ置き場
@ITに以下のような記事が出て、 今回からしばらくの間は、まったく逆の例、つまり使うとプログラムの処理性能が上がるというシステムコールを紹介していく。システムコールを呼ぶ回数は少ない方が処理性能は高くなるという原則は変わらないが、呼び出しておくと処理性能が向上するシステムコールというものが存在するのだ。こうしたシステムコールを使わないでいることは、とてももったいない。 今回紹介するシステムコールは... 続きを読む
30秒でわかるオープンソースライセンスまとめ - kazuhoのメモ置き場
「よくわかるFOSSライセンスまとめなんてないよねー」と煽られたので3分で書く。代表的なライセンス改変部分のソースコードの開示が必要リンクして使う、他のソフトウェアのソースコード開示が必要GPL (コピーレフト型)○○LGPL /MPL (準コピーレフト型)○×BSDL / MITL (非コピーレフト型)××自作のソフトウェアをオープンソースで公開する場合、コピーレフト型にする場合は「GPLv2以... 続きを読む
MySQL用にランキング専用ストレージエンジンを作る話 - kazuhoのメモ置き場
前提: ゲームに限らずランキング機能が必要になるケースは多い つまり需要はある だが、MySQLで高速なランキング表示は難しい 具体的に言うと、以下の要件を満たすのが不可能 1行の更新コストが要素数Nに対して O(log N) 以下任意のランキング位置周辺のSELECTコストが O(log N) 以下 ならば、専用のストレージエンジンを作ればいいのではないかいつやるの? 今でしょ! 以下理由MyS... 続きを読む
同時にwrite(2)すると混ざるかどうか - kazuhoのメモ置き場
Linux のシステムコールである write(2) の ドキュメントを読むとAtomic/non-atomic: A write is atomic if the whole amount written in one operation is not interleavedwith data from any other process. This is useful when there a... 続きを読む
サービスごとに異なるパスワードを使い分ける方法 - kazuhoのメモ置き場
最近、パスワードの使い回しをしているユーザーに対する攻撃が出回るようになってきています (参照: パスワード攻撃に対抗するWebサイト側セキュリティ強化策 | 徳丸浩の日記) が、マスタパスワードからサービスごとに異なるパスワードを自動生成するのが簡単な対策ですよね。プログラマなら(もしくはコマンドライン操作に慣れているのなら)、こんな感じでできるかなーと思います。 $ perl -MDigest... 続きを読む
巨大な bookmarklet を信頼できる形で配布する方法 - kazuhoのメモ置き場
Twitter で聞いてみたところ @hasegawayosuke さんいわく、Bookmarklet の文字数制限は最短だと約2,000文字らしいです。でも、その長さで bookmarklet を書くのって難しいですよね。かといって、別のサーバから JavaScript をダウンロードして実行するとなると、そのダウンロードされたスクリプトが安全か、という問題が出てきます。ならば、暗号学的ハッシュ... 続きを読む
Monoceros雑感 - kazuhoのメモ置き場
Monoceros は @kazeburo さんが開発してる Plack 用ウェブサーバ。prefork型だけど、待機中の接続をイベントドリブンのマネージャで管理することで、同時接続10,000本とか行ける(ソケットの受け渡しは SCM_RIGHTS とか使う)。で、雑感 大好き!!!Starletより遅い問題は、以下のようにすれば解決できると思う listen するソケットに TCP_DEFER... 続きを読む
本番環境でのperl/ruby/nodeのセットアップ - tagomorisのメモ置き場
本番環境にperlとかrubyとかnodeを入れるんだけど、もちろん system perl じゃやってられないので指定したバージョンのものを一般ユーザの管理下に突っ込みたい。で、そういうのをこれまで perlbrew とか rvm とか rbenv とか nvm とか nodebrew とかでやってたんだけど、さすがに色々疑問が湧いてきた。バッチで単発実行するために eval "$(rbenv ... 続きを読む
なぜPHPでrequire("http://...")したらセキュリティホールなのに、Goならいいのか - kazuhoのメモ置き場
go言語なんか import "http://github.com/mattn/xxx " だったりする。rubyもそういうの面白いかもしれない。require "http://github.com/mattn/xxx "みたいな。Twitter / mattn_jp: go言語なんか import ...@mattn_jp それコンパイル型言語なら許されるけどスクリプト型だとセキュリティホールと... 続きを読む
なぜ動的型付けの言語が流行ったのか (Re 静的型付けと動的型付けのどちらが優れているかという話) - kazuhoのメモ置き場
静的型付けと動的型付けのどっちが優れているか。どのようなプログラムを書いているかによって答えはかわるんじゃないの?たとえば、自社で開発・運用しているウェブサービスなら「問題が出たら修正」すればいいんだし、バグがないことを保証するよりも迅速に開発できるプログラミング言語(つまり動的型付けの言語)がいい。逆に、客先への納品が発生するソフトウェア製品なら「バグがない形で出荷する」ことが重要だから、静的型... 続きを読む