タグ

ブックマーク / zentoo.hatenablog.com (12)

  • More Transactional Redis (1) - Redis is not a transactional storage - 愛と勇気と缶ビール

    オッス!オラ孫悟空!みんな元気にしてっか? 突然だけど、オラ、Redisに保存してるデータに以下のような操作をしてみたくなっちまったんだ!これ擬似コードな! 1: score = ZSCORE {key} {member} 2: if ( ! score ) { 3: score = defaultScore 4: } 5: ZADD {key} score + diff {member}具体的な処理は何でもいいんだけど、要は「ZSCOREでsorted setからscoreを取って、その値に応じて分岐した上でZADDで値を更新したい」ってことだな!上の場合はZINCRBYでもいいけど、細けぇこたぁ気にするな! ... ここまで読んで勘のいい読者ならばお気づきのことでしょうが、上の擬似コードにはいわゆるrace conditionが存在します。実際にはZSCORE, ZADDのコマンドはそ

    More Transactional Redis (1) - Redis is not a transactional storage - 愛と勇気と缶ビール
    aki77
    aki77 2013/07/17
  • MySQLでstatement-based replicationを使っている場合のtrigger, function, procedureの扱い - 愛と勇気と缶ビール

    row-basedなreplicationの場合はreplicationの対象が文字通りrow=dataであるため特にtrigger, function, procedureの動作について懸念点はないと思われます。でも、MySQLで既に多くの人が使っているであろうstatement-basedなreplicationの場合はどうなるの?masterだけで実行されるの?それとも両方で実行されるの?両方で実行されるとしたらデータの整合性とかはどうなるの? これらの疑問への答えはだいたい以下のドキュメントに書いてあるようですが、日語版は「お前は何を言っているんだ」という部分が多々あり、英語版を読んでもあまり実際の動作がイメージできなかったので確認を兼ねて自分で試すことにしました。 http://dev.mysql.com/doc/refman/5.1/en/replication-featur

    MySQLでstatement-based replicationを使っている場合のtrigger, function, procedureの扱い - 愛と勇気と缶ビール
  • Maintainable JavaScriptにみる、コンテキストとアプリケーションロジックの分離 - 愛と勇気と缶ビール

    個人的なこと 読書はいわゆる自己投資?にあたるものなのでケチるもんじゃないよなあ、とは思いつつも可能なら安い値段でより大きなリターンを得たいよねー、ということで最近はOreillyの半額セールに目を光らせるようになりました。英語は「拾い読み」がし辛いという欠点があるのですが、まぁ、安いし、全てのにちゃんと訳が出るわけでもないので、ええかなぁと。 そんなわけで "Maintainable JavaScript" というを読んでいたのですが、その中のEvent Handlingについての章が「おお、これこれ」という感じだったのでちょっと紹介。 Maintainable Event Handling jQuery覚えたぜ!って感じの人がとりあえずコードを書くと、だいたいこんな感じになりますね。ちなみに、これは別にjQueryがどうとかいう話ではなくて、質的には生DOMでも他のライブラリでも

    Maintainable JavaScriptにみる、コンテキストとアプリケーションロジックの分離 - 愛と勇気と缶ビール
  • Application Cacheの割と実践的な使い方 - 愛と勇気と缶ビール

    これもしばらく昔に調べたものだけど、どうせなので書いておく。調べた当時、あまりこういう情報は見当たらなかったので。 HTML5というすごく大雑把で、具体的にどの技術を指しているのかよく分からないままに広告とプロパガンダに使われる技術用語、その内に含まれると考えられている技術の中でも特殊な立ち位置と振る舞いを持ったApplication Cacheについては、検討して「ああこれはよく分からん」「ああこれは使えない」と思って利用を諦めてしまった人も多いことと思われる。 僕も真面目にリアルのサービスでモリモリ使っております、という訳ではないのでとても偉そうなことは言えないのだが、前に利用の検討をした時に思ったのは「これは既存のWebサービスに後付けするようなものではなく、初めからその存在を前提としてサービスを作るときに意味のあるものだなぁ」ということだった。 既存のWebサービスに乗っける上で特

    Application Cacheの割と実践的な使い方 - 愛と勇気と缶ビール
  • 日本語のオライリー本を買うのはやめた - 愛と勇気と缶ビール

    普通にモリモリ技術書を買ったりするとお金がかかりすぎるので、最近はoreilly.comのセールのタイミングを狙って、買えるものは全部そこで買うことにしている。紙のでなく電子書籍で。 oreilly.comでを買うことのPros/Consは以下のような感じ Pros おおむねのについて、主要な電子書籍フォーマットが揃っている(pdf, mobi, epub等) セールを狙えば日語版と比べて50%くらい安くなる(これが大きい) 日語訳が出ないようなも読める、読みたいの日語訳をいちいち待つ必要がない Cons 英語なので、読むのに時間がかかる セールなのでついつい買いすぎてしまう、そして積読してしまう 人間がを読むためのコストは、金額コスト + 時間コスト で表現できると思っている。oreilly.comのセールで安く買えることによる金額コストの差分が、(日語でなく)英語

    日本語のオライリー本を買うのはやめた - 愛と勇気と缶ビール
    aki77
    aki77 2012/10/28
  • ES5 features on iOS/Android's default browser - 愛と勇気と缶ビール

    iOS, Androidのめぼしいバージョンのデフォルトブラウザについて、ECMAScript 5 compatibility table を使ってES5の対応度合いを調べました。既にありそうだなーと思いつつパッと見当たらなかったので。 どれもエミュレータで調べたものですし、特にAndroidについてはメーカーが手を入れてヘンテコリンなことになっている可能性も結構あるので、目安程度に。 全てのiOSデバイスが6.0以上、Androidデバイスが4.1以上になればstrict mode含めてやりたい放題(かも?)、ということが分かりますね。いつになることやら。 feature/os version ios-4.3.2 ios-5.0 ios-5.1 ios-6.0 android-1.6 android-2.1 android-2.3.3 android-3.0 android-4.0.2

    ES5 features on iOS/Android's default browser - 愛と勇気と缶ビール
  • Google Apps Scriptが気合入りすぎな件 - 愛と勇気と缶ビール

    https://developers.google.com/apps-script/ Google Apps Scriptっていうのは、JavaScriptでコードを書くとそれがGoogle先生のサーバサイドで何しか解釈されて動いて、Googleの各サービスのオブジェクトを簡単に操作できるぞオウイエ!ってやつです。そこまで有名なサービスではないのですが、何気にものすごい気合入ってます。 上のURLの"Default Services", "Google APIs Services"を見るとアクセスできるサービスの一覧が見られるのですが、 GMail Google Calendar Google Docs (SpreadSheetなどを含む) Google Map とかの有名かつ皆さんが大好きなサービスはもちろんのこと、 Finance Charts Sites Adsense とかなんか微

    Google Apps Scriptが気合入りすぎな件 - 愛と勇気と缶ビール
  • jQueryオブジェクトを入れる変数の名前を$で始める話 - 愛と勇気と缶ビール

    前提として、何度も同じelementを操作するのに毎回 $("#your complicated.selector").css({"...":"..."}); とか書いてる奴はくたばれ。それは、参照するデータが同じなのに毎回DBに問い合わせてるのと同じだぞ。 $で変数名を始めるのはなんでキモいか 僕がjQueryを使うときは$()関数で返ってきたオブジェクトを入れる変数名を$から始める、ということをけっこうよくやるのだけども、それについて「なんかキモくないですか」という意見があったのでちょっと考えてみる。ちなみにそれをやり始めたのはどこかで見たからだと思うんだけど、ソースは忘れた。 jQuery objectをつっこむ変数の名前を$で始めることが気持ち悪い理由はだいたい以下の2つくらいだと思う オブジェクトの型(のようなもの)に基づいてprefixをつけているところに、ハンガリアン的な闇の

    jQueryオブジェクトを入れる変数の名前を$で始める話 - 愛と勇気と缶ビール
  • SQL_SLAVE_SKIP_COUNTERについて教えてもらったよ - 愛と勇気と缶ビール

    何らかの理由でmasterとslaveの間で不整合があって、「既にテーブルがある」とか「UNIQUE制約にひっかかる」とかそういう理由でreplicationが止まっている時は、 SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave; show slave status; (確認)って風に一つスキップするんだよ、ってnekokakさんに教えてもらったよ。 普通は慎重を期して1つずつスキップするものらしいんだよ。 こんなのDBの運用とかバリバリやってる人にとっては当たり前かもしれないけど、そんなので一々恥ずかしがってたら前に進めないのでblogに書くんだよ。 で、MySQL 5.0の該当リファレンス↓ http://dev.mysql.com/doc/refman/5.0/en/set-global-sql-slave-skip-counter

    SQL_SLAVE_SKIP_COUNTERについて教えてもらったよ - 愛と勇気と缶ビール
    aki77
    aki77 2012/01/30
    『SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; でのスキップは、transactionalなtableの場合はステートメントではなくてトランザクション単位』
  • 本当はそれなりに面倒くさいJavaScriptとhistoryとAjaxのお話 - 愛と勇気と缶ビール

    口上 historyとAjaxといえば、JavaScriptからある程度任意でhistoryのエントリをpushできるhistory.pushStateとか、history.replaceStateは既に大分有名になった感がある。 素晴らしい未来では、全てのブラウザにpushStateが乗っていて「location.hashを使ったAjax遷移が許されるのは10年前のブラウザまでだよねー」というハッピーな世界が実現するのだろう。が、今現在ではまだpushStateに対応していないブラウザのシェアも多く、Ajaxによる擬似画面遷移をモリモリ行うようなサイトではpushStateのある環境、ない環境の両方を考慮してやる必要がある。 (ちなみに、要件によっては「pushStateがないブラウザは通常の遷移で我慢しろ!」という割り切りも全然ありだと思う) 先に言っておくと、この記事は長いです。 環

    本当はそれなりに面倒くさいJavaScriptとhistoryとAjaxのお話 - 愛と勇気と缶ビール
  • やったーJavaScriptの動くMySQLできたよー - 愛と勇気と缶ビール

    ※ネタです ※UDFです Mysql 5.1 Plugin Development 作者: Andrew Hutchings,Sergei Golubchik出版社/メーカー: Packt Publishing発売日: 2010/08/30メディア: ペーパーバック購入: 1人 クリック: 45回この商品を含むブログ (2件) を見る しばらく積ん読していたこのをちょっと眺めてみたら、MySQLのUDFって簡単に作れるんだなー、と思った && そういやV8ってライブラリとして簡単にリンクできるはずだな、と思い出した ので、ついカッとなって作った。 http://github.com/zentooo/mysqludf-jseval UDFうんぬn ほとんど↑のの受け売りになるけど、一応MySQLのUDFについて備忘録代わりに軽く紹介しておくと UDFを追加する場合、MySQLの再コンパイ

    やったーJavaScriptの動くMySQLできたよー - 愛と勇気と缶ビール
  • githubのアレ(history.replaceStateとかhistory.pushStateの話) - 愛と勇気と缶ビール

    会社で下の記事についてリマインドしてもらって、なんとなく気になっていたことを調べたメモ。 http://webtech-walker.com/archive/2010/12/06160539.html 記事を読んで、history.replaceState(null, "title", "/new.html") とかやると遷移なしでページのcontentも勝手に置き換わるのかなー、だったらあのアニメーションはどこで発火してんだ?とか考えていたがそもそもreplaceStateの動作について勘違いしていた。 要は、次のようなhtml書いてボタンをクリックしても、historyの先頭が置き換わるだけでページ自体には何も起こらない。(ただしlocation.hrefは置き換わっており、reloadすると/replace.htmlにいく) <!DOCTYPE HTML> <html lang="e

    githubのアレ(history.replaceStateとかhistory.pushStateの話) - 愛と勇気と缶ビール
  • 1