10. e10sって • ようはプロセス分離 • レスポンス向上(=Webページがビジーで操作できない ことを避ける)のためにMobile版だけ導入 o ChromeとContentが別プロセス o Contentプロセスがクラッシュしても、Chromeプロ セスには被害を受けない o デスクトップ版はプラグインのプロセス分離のみ 今後は、たぶん、、、
5. Firefox 4 • スピード • 起動時間の向上 • ハードウェゕゕクセラレーション • JavaScript Engine • User Experience 7. 起動時間の短縮? • 起動時のボトルネックの調査 • Dirty ProfileでのTalosテスト • メインスレッド上でのI/O処理の軽減 • 可能な限り非同期処理を! • Omni JAR • Startup Cache • 利用するJavaScriptフゔイル (Addonも含む) をJARフゔイルにして 再利用
以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。 MySQLのチューニングで最も大切なのは、クエリとスキーマの最適化である。スキーマの設計は一度決めてしまうとそのテーブルを利用する全てのクエリに影響してしまうためなかなか変更することは出来ないが、クエリはそのクエリだけを書き直せば良いので変更の敷居は低い。そして遅いクエリをなくすことは、性能を大幅に向上させるための最も有効な手段である。従って、アプリケーションの性能を向上させたいなら、まず最初にクエリのチューニングを検討するべきなのである。 最適化するべきクエリはスロークエリログやクエリアナライザで見付けられるが、ではそのようなクエリが見つかった場合にはどのように最適化すればいいのか?そのためにはまず現在どのようにクエリが実行さ
Amazon.co.jp: 実践ハイパフォーマンスMySQLを読んでいたら「クエリチューニング」の章(p. 101)でタイトルにある問題が取りあげられていたので考察。 MySQL のバージョンは「5.0.67」。 サンプルDB サンプルとして、よくある商品と注文のテーブルを使います。 作るのが手間だったので、本の例と変えています。あと、説明に関係ないカラム*1も省略しています。 スキーマ > show create table products \G; *************************** 1. row *************************** Table: products Create Table: CREATE TABLE `products` ( `id` int(11) NOT NULL auto_increment, `name` varchar
MySQL 6.0では新たなJOIN最適化手法であるBKA - Batched Key Accessの実装が進んでいる。BKAとは、読んで字のごとくキーを用いたアクセスをバッチ(ひとまとまりの)処理にすることである。現在のバージョンのMySQLでは、2つのテーブルをJOINする際、一つ目のテーブルから選択した行に対して、逐一2つめのテーブルから行が一つずつフェッチされる。例えば次のクエリを用いてテーブルt1とt2をJOINする際には以下のような流れで行われる。 mysql> SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.b WHERE t1.c > 1000 AND t1.c <= 2000; t1からWHERE句の条件(1000 < c <= 2000)に適合する行をフェッチする。 条件に合う行が1000行あったとする。 1行目のt1.aと同じt2.b
EasyMockとの違い Eclipse での利用に際して org.mockito.Mockito モックの利用と妥当性検証 スタブメソッドの定義 引数の照合 メソッド呼び出しの妥当性検証 voidメソッドから例外を返却 API的に EasyMock と大きな違いはありませんが、使用感としては格段に心地良い Mockito。 [:W150] 本家 http://mockito.org/ のドキュメント(というかJavaDoc)をベースにメモ。 EasyMockとの違い Mockito では record モードと replay モードを切り替える必要がない Mockito で作成するモックは常に、EasyMock で言う NiceMock となる スタブメソッドの妥当性検証が常にオプション扱い 大きくは以上となります。具体的に、EasyMock では import static org.e
整数型を扱う 文字列から整数への変換 16進数文字列を整数型へ変換する 16進数文字列から整数値へ変換するメソッドが、数値型のラッパークラスに用意されています。
RFC 4193「一意なローカルIPv6アドレス」では、IPv4のプライベートアドレスのような使い方をするアドレスについて規定しています。家で数台のPCでIPv6の実験(勉強)するときは、この一意なローカルIPv6アドレスを使用するのがよいです。 http://www5d.biglobe.ne.jp/~stssk/rfc/rfc4193j.html で、RFC 4193では一意なIDを生成する方法が記載されています。NTPタイムスタンプとEUI-64を合成し、SHA-1でハッシュを生成し、その40bitを取るアルゴリズムです。 NTPタイムスタンプは64bit固定小数点なので、ハッシュ計算するためにbyte配列に変換したいところです。力技で8bitずつシフトして下位1バイトをマスクして取り出し配列に詰める方法はありますが、面倒です。とりあえず思いつく方法を挙げてみると java.util.
メッセージダイジェストの取得は java.security.MessageDigest を使って簡単に可能です。 MessageDigest#getInstance(String algorithm) を使用してアルゴリズムを指定した MessageDigest のインスタンスを取得します。 アルゴリズム には MD5 の他 SHA-1 等有名なメッセージダイジェストは、ほとんど使用可能なようです。 byte 配列から MD5 byte 配列からメッセージダイジェストを取得する場合は非常に簡単で、MessageDigest#digest で取得可能です。 以下にコードのサンプルを書きます。 ※パスワードの保存等で利用します。 MessageDigest digest = MessageDigest.getInstance("MD5"); byte[] hash = digest.diges
2010/09/07 KVS(キー・バリュー・ストア)に分類されるオープンソースのRedisの新バージョン、「Redis 2.0.0」が2010年9月5日にリリースされた。Redisはmemcachedと同様にキーと値のペアをメモリ上に保持するKVSの一種だが、3つの際立った特徴がある。1つはハッシュ以外のデータ構造もサポートしていることで、リスト型、集合型、順序付き集合型などのデータ構造が扱え、サーバ側でコレクションに対するpush/pop、コレクション同士のunion/intersection、数値のincr、decrなどの操作がアトミックに行える。バージョン2.0では複数の操作を1つにまとめてアトミックに操作するコマンドも増えている。 もう1つのRedisの特徴は、マスター・スレーブによるレプリケーション設定ができ、リード側のスケールアウトが容易にできること。 そして3つ目の特徴は、
HEADS UP! This article was written for an older version of node. More up-to-date information may be available elsewhere. node brings asynchronous, evented I/O to the server. Redis gives you a blazing fast database with support for strings, lists and sets. Both Redis and Node.js follow certain patterns, Redis for data-storage, and node for event based programming. I hope to give an introduction to
Suzuki Junya @suzukij 仕事がなんとかなったので #bpstudy に向かいますー。 js、jQueryいいなぁーと思いつつ、node.jsもJSTAPdもさわったことない人です。 2010-11-30 18:24:58
JsTestDriverとは JsTestDriverはオープンソースで開発されているJavaScript用のユニットテストフレームワークである。JavaScriptの場合、通常は実行エンジンがWebブラウザに依存するため、ブラウザごとに個別にテストしなければならないという難点がある。JsTestDriverを使うことでその悩みは解消できるだろう。 JsTestDriverはWebサーバとして動作するフレームワークである。テストコードはJavaScriptで記述して指定されたディレクトリに配置する。WebブラウザからJsTestDriverの特定のパスにアクセスすると、そのブラウザがテストを実行する環境として登録される。Webブラウザは複数同時に接続しておくことができる。 実際にテストを実施すると、接続されているすべてのWebブラウザのJavaScriptエンジンそれぞれでテストコードを実
まだ本格的なWebアプリケーションを作り込んだことがないので、JavaScriptのユニットテストを必要としたことはないのだが、jQueryやMooToolsなどのJavaScriptフレームワークの利用が進んでいる昨今では間もなくJavaScriptにも適切なテストを行うべきかもしれない。 キャプチャ状況 キャプチャしたデータ テストの基本となるものとしてユニットテストが有名だ。JavaScriptの場合、実行エンジンが各ブラウザに依存するのが難点だが、JsTestDriverを使えばブラウザを越えたテストができるようになる。 今回紹介するオープンソース・ソフトウェアはJsTestDriver、JavaScriptのテストフレームワークだ。 JsTestDriverはサーバとして動作するソフトウェアで、指定したディレクトリにあるJavaScrptファイルとそのユニットテストファイルを読み
HTML5のhistory.pushState、history.replaceStateを試した。 HTML5 pushState/replaceState demoで動かせる。 Minefieldだと完全に意図した通りに動くがWebKitだとURLまわりがうまくいかない。 メインのソースコードは下記の通り。 canvasで適当に壁紙用画像を作るデモで、画像自体をクリックして何度も作り直せるようにした。 こういう物を作るときは、前の画像に戻れるよう履歴管理をすべきだが、今まではlocation.hashを使ったり(hashchangeイベントが入るまではタイマーが必要だった)iframeを使ったハックだったり(ブラウザ間の互換性やhistory.go(-2)をきちんと動かすのが難しい)、あるいはページを遷移する(必要ない部分まで毎回読み込まれる)必要があった。 pushState/repl
TwitterやFacebookのURLには、なぜ#!が含まれるのか (SEOとAjaxのおいしい関係) - kazuhoのメモ置き場 Ajaxを多用しつつパーマリンクも提供しているサイトのURLは、「#!ほげほげ」のような形式になっていることがよくあります。上の記事に書かれているように、これにはちゃんと理由があるわけなんですが、やっぱり「#!なんてのが含まれるURLは格好悪い」と感じる人も多いようです。 そこで、「#!ほげほげ」なんてURLを使わなくてもAjaxの画面遷移を実現する、Session HistoryというHTML5の機能を紹介します。 Session history demo ChromeやSafariで上のページにアクセスし、地図をドラッグしてみてください。地図を動かすたびにURLが変化しているのに気づくでしょう。そこでブラウザの戻るや進むキーを押すと、地図の移動履歴を辿
翻訳について¶ このドキュメントは、RedisのWiki(http://code.google.com/p/redis/wiki/)の内容を参考にしながら、構成などはSphinxに合わせつつ翻訳しています。また、必要に応じて、配布物の中のファイルなども引用しながら訳しています。
Simon Willisonによる2009.11.23のブログエントリ Node.js is genuinely exciting Node.jsの詳しいレビュー。速い理由はV8だけじゃない、等々勉強になる。 以下斜め読んだ内容 Evented I/Oとは? イベントドリブンなサーバーは、従来のスレッド/ブロックメカニズムへのオルタナティブ スレッド/ブロックメカニズムはサーバーサイドプログラミングで主流 おさらい:よくあるWebフレームワークの動き 利用できるサーバーのスレッド・プロセスからの命令で、少数のリクエストを同時にさばく 長時間かかる処理は利用できるスレッド1つと結びつく 利用できるスレッドがなくなればサーバーは応答しなくなる。 大規模なトラフィックをさばくときは、できるだけ早く処理して、割り当てたスレッドを開放して、順番待ちしてる処理へ渡さないといけない よくあるWebフレー
Key-Value Store の Redis について、公式サイトの README を参考に概要をつかむためのメモ(ほぼ、簡易な訳のみ)。 redis - Project Hosting on Google Code README に入る前に、プロジェクトサイトのトップページに書かれている特徴から、いくつか抜粋。 Posix システム向けに ANCI-C で書かれている 対応言語 Ruby (+) Rack::Session と Rack::Cache を Redis に対応させたものもある (+) DataMapper の Redis 用アダプタがある Python Twisted Python PHP Erlang Tcl Perl Lua JAVA Scala Clojure Redis はデータベース Redis はキーと値のペアからなる辞書を実装した非常にシンプルなデータベース
前回「Mac OSXにredisをインストール」で、redisを動かす環境まではできたので、せっかくなんでテスト的に何かサービスを作ってみよう、ということでTwitterクローンのRedTweetを作ってみました。 RedTweet redisを使ったTwitterクローンは、PHP版のRetwisと、それをSinatraで書き直したRetwis-RBがあるのですが、サンプルコードはいくらっても世の中に少しは役立つだろうと思ってRails版で実装してみました。オンラインで動作できる環境はないので、git cloneしてscript/serverで手元の起動で確認ください、、と投げやり気味ですみません。とりあえず次の項目は一通り実装しています。 ユーザID発行 Login / Logout Follow / Remove 自分のTimeline, Public Timeline, 各ユーザの
「人間のストレスのほとんどは、突き詰めていけば "遅い" ことのいら立ちである」といっていたのが、かの天才芸人松本人志。 言われてみれば、そのとおりだなぁと。 つまり裏をかえせばあらゆる事のスピードが上がればストレスはなくなっていくわけです。 というわけで、一日中ずっと使わざるを得ないMacを高速化すればストレスはガクンと無くなるに違いない! ってわけで、訳の分からない口上でございますが、ネットに散らばる1円も使わずMacを高速化出来るTipsをまとめてみたので、お役に立てれば幸いでございやす。 1.OnyXでMac内のゴミを掃除してもらおう。 「Macの不可視ファイル表示」というタイトルにしましたが、クリーニングやメンテナンスにも使える「OnyX」は本当に重宝しています。 .で始まるファイルを確認する | labs.yusukenakanishi.comというエントリーからトラックバック
step1: 動けばいいレベル 適当にざっくり書いて終了 イベントハンドラのなかでテキトーに全て終わらせる メソッドチェイン長いのがかっこいいと思ってる年頃 <div class="item"> <div class="label">A</div> <h2 class="title">itemA</h2> <p class="main">text text text text</p> <p class="showMore">more</p> <p class="more">more more more more</p> <p class="hideMore">hide</p> </div> <div class="item"> <div class="label">B</div> <h2 class="title">itemB</h2> <p class="main">text text
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く