Entries from 2013-01-01 to 1 year
ウェブサービス,UI変えると,改悪とか,元に戻してとか,そういう意見が出る. サービス提供する側の立場では,新しいUIのほうが使いやすかったり,機能が増えたり,収益が増えたりするので,新しい方を多くの人に提供することに価値がある.使いやすいかと…
若い人たちは、「文字列型」があるプログラミング言語しか知らないかもしれない。だが、汎用的な文字列型が一般的になったのは、プログラミング言語の歴史の中でも比較的最近のことである。たとえば、1972年に誕生したC言語には文字列型がない。1980年代に良…
※タイトルは釣りです。先のエントリで、 採るべき技術的アプローチに関しては、ソフトウェアの修正コストによってかわるという議論があって、ウェブサービスの場合にはソフトウェア製品(やSI)と比べて圧倒的に修正コストが安い。ウェブサービスの場合にロケ…
Webサービスのようなプロダクトについての議論について教えて下さい - Kentaro Kuribayashi's blog で呼ばれたような気がしてたけど放置してた。でも今日、express という node.js 上で動作するメジャーなウェブアプリケーションフレームワークを作っている…
※この記事はJSX Advent Calendar 2013の一部です。アドベントカレンダーの目的は、関連情報を増やすこと。だったら公式ドキュメントを増やせばいいじゃん!!!!! もしかしてオレ天才ちゃう?ということで今日はCompiler Reference - Documents - JSXを書…
Test::Mocha::PhantomJSというPerlモジュールをリリースしました。一言でいうと、Perlで書いたサーバサイドロジックを、PhantomJS上で動くMochaのテストコードで検証するためのモジュールです。具体的な手順としては、 t/ 以下に次のようなテストコードを書…
※この記事はJSX Advent Calendar 2013の一部です。JSXでプログラムを書く上で参考になるドキュメントといえば、なんといっても公式ドキュメントです。量は少ないですが、チュートリアルや型に関するリファレンスはhttp://jsx.github.io/doc.htmlにあります。…
※この記事はJSX Advent Calendar 2013の一部です。JSXでは「this(...)」と書くことで、あるコンストラクタから別のコンストラクタを呼び出すことができます。下の例はJSXのコンパイラからの抜粋。 class NodePlatform extends Platform { function construct…
※この記事はJSX Advent Calendar 2013の一部です。JSXでは、JavaScriptで定義されているオブジェクトをJSXのクラスとして簡単に取り込めるようになっています。やりかたは簡単。「native」属性を付与してクラス定義を書くだけです。たとえばJavaScriptの組み…
オレオレ認証局が忌避されるべきものとされてきた理由は、X.509 PKIが保証する安全性は、最も信頼性が低い認証局(trusted root)のそれに等しいからです。しかし、X.509 v3以降ではName Constraintsが導入され、「特定のドメインに対してのみ証明書を発行可…
以前、 いつでもどこからでもサーバにログインしたくなるときってありますよね。かといって、サーバの sshd への接続を全世界から可能にしておくというのは、たとえパスワード認証を無効化していても避けたいところ。 Dynamic DNS を使って SSH アクセスを制…
フレームワークの責務とセキュリティ - MugeSoの日記についての感想文です。世の中にはたくさんの通信プロトコルが存在し、中には、特定の条件でパスワードを含む文字列をハッシュ化した値を検証しなければならないものも含まれています。例えば、HTTP Diges…
サーバサイドからクライアントサイドのJavaScriptを呼び出す際のベストプラクティス - kazuhoのメモ置き場 の件、id:tokuhirom がさくっと HTML::CallJS というモジュールを書いて公開してくれた (Shipped HTML::CallJS - tokuhirom's blog 参照) ので、どう…
JavaScript文字列のエスケープ – yohgaki's blog に対して、 最近だと id="hoge" data-foo="" しておいて $("#hoge").data('foo') でとりだすのが主流かと思います。 はてなブックマーク - JavaScript文字列のエスケープ – yohgaki's blog のように、 そもそ…
plackup -R とか grunt-contrib-watch とか、ウェブアプリケーションの処理系とかビルドツールには、割とこの手のものが組み込まれているんだけど、Windows を無視できるなら、*1外部ツールを使えばいいわけで。具体的には App-watcher-0.11 - watch the fil…
@ITに以下のような記事が出て、 今回からしばらくの間は、まったく逆の例、つまり使うとプログラムの処理性能が上がるというシステムコールを紹介していく。システムコールを呼ぶ回数は少ない方が処理性能は高くなるという原則は変わらないが、呼び出してお…
「よくわかるFOSSライセンスまとめなんてないよねー」と煽られたので3分で書く。オープンソースライセンスは、以下の3種類に大別される。 代表的なライセンス 改変部分のソースコードの開示が必要 リンクして使う、他のソフトウェアのソースコード開示が必…
前提: ゲームに限らずランキング機能が必要になるケースは多い つまり需要はある だが、MySQLで高速なランキング表示は難しい 具体的に言うと、以下の要件を満たすのが不可能 1行の更新コストが要素数Nに対して O(log N) 以下 任意のランキング位置周辺のSE…
Linux のシステムコールである write(2) の ドキュメントを読むと Atomic/non-atomic: A write is atomic if the whole amount written in one operation is not interleaved with data from any other process. This is useful when there are multiple wri…
JavaScriptのTyped Arrayにおいて、JavaのSystem.arraycopy相当の関数は以下のような形で実装することができる。 function arraycopy(src, srcPos, dest, destPos, length) { dest.set(src.subarray(srcPos, length), destPos); }
最近、パスワードの使い回しをしているユーザーに対する攻撃が出回るようになってきています (参照: パスワード攻撃に対抗するWebサイト側セキュリティ強化策 | 徳丸浩の日記) が、マスタパスワードからサービスごとに異なるパスワードを自動生成するのが簡…
Twitter で聞いてみたところ @hasegawayosuke さんいわく、Bookmarklet の文字数制限は最短だと約2,000文字らしいです。でも、その長さで bookmarklet を書くのって難しいですよね。かといって、別のサーバから JavaScript をダウンロードして実行するとなる…
Monoceros は @kazeburo さんが開発してる Plack 用ウェブサーバ。prefork型だけど、待機中の接続をイベントドリブンのマネージャで管理することで、同時接続10,000本とか行ける(ソケットの受け渡しは SCM_RIGHTS とか使う)。で、雑感 大好き!!! Starle…
超軽量Twitterクライアント「もふったー」コンシューマシークレットキー難読化最後の挑戦 - GIGAZINE もふったーコンシューマシークレットキー難読化最後の挑戦 ・ω・ - Windows 2000 Blog あたりの話について。記憶に頼って書いてるので間違ってたらごめん…
asm.jsに関する客観的意見があまりないようなので、ツイートをまとめてメモ。現時点での機能はC/C++コードの移植に特化している 文字列にもオブジェクトにも配列にもアクセスできない JavaScriptの値で使えるのは数値だけ*1 typedarrayについては、同時に1…
Test::mysqldというモジュールがあって、MySQLを使うテストを簡単に書けるので好評なわけですが、今回これに copy_data_from って、既存のデータディレクトリをコピーして mysqld を起動するオプションを足しました。このオプションを使うことで、以下のよう…
go言語なんか import "http://github.com/mattn/xxx " だったりする。rubyもそういうの面白いかもしれない。require "http://github.com/mattn/xxx "みたいな。 mattn on Twitter: "go言語なんか import "http://t.co/9qiwho7OMZ" だったりする。rubyもそう…
静的型付けと動的型付けのどっちが優れているか。どのようなプログラムを書いているかによって答えはかわるんじゃないの?たとえば、自社で開発・運用しているウェブサービスなら「問題が出たら修正」すればいいんだし、バグがないことを保証するよりも迅速…
開発者の皆さんは、gzipされたcore-fileを送りつけられた経験をお持ちのことだと思います。ですが、ディスク容量に厳しいSSDやVM上で作業していると、展開すると数10GBにもなるコアファイルを受け取ってもどうしようもありません。で!も! コアファイルをス…
Labeled Tab-separated Values (LTSV) がブームのようです。LTSV については、ラベルをつけることで柔軟に拡張できるという点が、その特徴として取り上げられますが、もう一点、タブをセパレータに使うことでログのパースが簡単になった、という点を忘れるべ…