タグ

ブックマーク / lukesilvia.hatenablog.com (9)

  • MySQLのINSERT/UPDATE時におこる不整合対策 - LukeSilvia’s diary

    先日、作っているアプリケーションにバグが発生しました。バグの内容は次のようなものでした。 同時に存在してはいけないはずのデータが、DB に存在する 整合性のチェックはアプリケーションレベルで行っている 一意制約のような単純なものではないので、アプリケーションレベルで実装 整合性のチェックロジックは正しい これに対し、バグは次のような状況で発生したと仮説を立てました。 ユーザがレコードを一括登録しようとする 登録ボタンを押したがレスポンスが遅い この間、整合性チェックが走っている ユーザはもう一度登録ボタンを押した 2回目の登録の整合性チェックが走り始める 1回目の登録の整合性チェックが完了、INSERTが始まる 2回目の登録の整合性チェックが完了、INSERTが始まる 2回目の登録の整合性チェックの間、DBにはまだ1回目の登録によるINSERTが実行されていないので、チェックを通過した 結

    MySQLのINSERT/UPDATE時におこる不整合対策 - LukeSilvia’s diary
  • vim でファイルを保存した時にGoogle Chrome で開いているページをリロードする - LukeSilvia’s diary

    HTML を編集している時に必須の機能。今回試した方法は、 AppleScript を使う ChromeReplを使う livereload の3つです。最終的に、(不満ながらも)AppleScript 版を使っています。 追記 不満はvim でファイルを保存した時にChrome で開いているページをリロードするのはAppleScript で十分でした - Slow Danceにて解消されました。 1. AppleScript を使う http://blog.cohtan.org/2008/03/vimhtmlyacss.htmlを参考にしました。 AppleScript の設置 ~/bin/chrome_reload.scpt tell application "Google Chrome" to activate tell application "System Events" to

    vim でファイルを保存した時にGoogle Chrome で開いているページをリロードする - LukeSilvia’s diary
  • vim でファイルを保存した時にChrome で開いているページをリロードするのはAppleScript で十分でした - LukeSilvia’s diary

    一昨日、vim でファイルを保存した時にGoogle Chrome で開いているページをリロードする - Slow Danceというエントリーを書きまして、AppleScript だとChrome に一瞬フォーカスを奪われてしまうのが問題と書きました。 しかし、ChromeAppleScript に対応していたので、フォーカスを奪われることなくリロードすることができました。 ~/.vim/plugin/chrome.vim command! -bar ChromeReload silent !osascript -e 'tell application "Google Chrome" to reload active tab of window 1' command! -bar ChromeStartObserve ChromeStopObserve | autocmd BufWrit

    vim でファイルを保存した時にChrome で開いているページをリロードするのはAppleScript で十分でした - LukeSilvia’s diary
  • UNIQE INDEXと JOIN とORDER BY で無用なソートが発生するケースとその回避方法 - LukeSilvia’s diary

    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

    UNIQE INDEXと JOIN とORDER BY で無用なソートが発生するケースとその回避方法 - LukeSilvia’s diary
  • Emacs からVim へ移行しました - LukeSilvia’s diary

    今までCarbon Emacs を使っていたのですが、カスタマイズによって動作が重くなったり少し不満に思っていました。そうした中、Emacs23 がリリースされたり、Carbon EmacsからCocoa Emacsへの流れも来ていました。 僕もCocoa Emacs に移行しようと思ったのですが、Web+DB の記事やRails ユーザにVim を使う人が多いことを知り、ふとわず嫌いだったVim を試してみようと思いました。 少しカスタマイズしてある程度使えるレベルになったので、まとめておきたいと思います。 環境 Mac OS X(10.5.8) Vim のバージョン macvim-kaoriya(7.2 KaoriYa 20090802) Mac OS X 用 Vimのいろいろを見ると分かる通り、Macvim を使うにも色々種類があります。 僕の場合は、ターミナルと別に使いたかっ

    Emacs からVim へ移行しました - LukeSilvia’s diary
  • REST について調べたまとめ - LukeSilvia’s diary

    普段仕事Rails を使っている身ですが、Rails 2.x 系を使っているものが1つもない。結構前からRails 3 の話題がでてきている今、そろそろRails 2.x をまともに使っておきたいと思ったので、まずはREST について調べました。最初にREST について調べたのは、REST がRails 2.x (実際には1.2.x から)で導入された最も大きな概念だからです。 REST とは REST とはアーキテクチャスタイルである アーキテクチャスタイルとはデザインパターンのようなもので、システムを設計する上での方針をまとめたものである。 REST は「REpresentational State Transfer」の略である 直訳すると、「(リソースの)表現可能な状態の転送」。あるリソースの状態を表現したものがサーバからクライアントに転送されるのがREST。ここにでてきた「リソー

    REST について調べたまとめ - LukeSilvia’s diary
    teppeis
    teppeis 2009/10/28
  • データベースを用いたセッションデータ管理について - LukeSilvia’s diary

    Web アプリケーションとは切っても切れないセッション機構。DB ベースでセッション管理を行なって得られた知見と、それを元に考察した結果をまとめてみます。 セッションデータの特性 DB で管理される他のデータに比べ、セッションデータはかなり特殊です。主な特徴は次のような感じ。 データが増加するのが速い 定期的な削除が必要 頻繁に更新される リクエスト毎に読みに行く必要がある このデータを読めないとアプリケーション全体にアクセスできない アクセス頻度が高いということです。あと、1つ目の特徴からセッションデータについては意識的に管理してやる必要があります。 現在の環境 アプリケーションの領域が少し特殊で、セッションデータがやたらたまります(ユーザ数何百万のサービスとかそういうのではないです)。 RDBMS MySQL 4.0.22 ストレージエンジン InnoDB レコード数 6千万 テータサ

    データベースを用いたセッションデータ管理について - LukeSilvia’s diary
  • MySQL とメモリに関するまとめ - LukeSilvia’s diary

    前回のエントリーデータベースを用いたセッションデータ管理についてで、MySQL とメモリの関係について良く分からない部分があると書きました。 実はここに関する理解はかなり曖昧な部分があって、調査して追記します。とくにメモリ利用量について。mysqld のプロセスが利用できるメモリの上限が、32bit OS の場合は3G 程度ということは、innodb_buffer_pool_size もこの制限を受け、これについての警告が、先に紹介したリファレンスマニュアルのものという理解だけどいいのだろうかというのが1つ。 2 つ目は、この理解があっているとすると、4G 以上のクラスのメモリをつんだサーバをDB サーバとして利用する場合、64 bit OS でないとリソースの有効活用ができないか。それとも、先に書いたとおり、OS レベルのキャッシュとして利用できるから、結果としてデータファイルを読み込む

    MySQL とメモリに関するまとめ - LukeSilvia’s diary
  • ハッカーと遅延評価勉強法 - LukeSilvia’s diary

    の(というかはてな界隈)ハッカーはほぼ「遅延評価勉強法」をしている気がします。 僕はまだまだ世界のハッカーについて詳しくもないし、日ハッカーですら、はてな界隈で有名な人を知っているくらいです。それでも、上記のような確信を持ちました。 遅延評価勉強法とは 遅延評価勉強法とは、僕が知る限りでは、id:amachangさんのブログで作られた造語です。元はプログラム用語の「遅延評価」から来ています。 「遅延評価」という言葉を調べてみると、「ある式を、その結果が当に必要になる時点までは評価しないでおくテクニック」とあります。そのメリットは、「条件次第で捨ててしまうような値を事前に準備することは非効率的である。このような場合遅延評価を行うと必要なときだけ値が計算されるので計算量を低減できる」とありました。 ここから遅延評価勉強法とは、「その知識が必要になった時に初めて勉強する方法」です。もっ

    ハッカーと遅延評価勉強法 - LukeSilvia’s diary
  • 1