タグ

ブックマーク / koseki.hatenablog.com (16)

  • Google アナリティクスで使われるクッキーについて __utma / __utmb / __utmz - こせきの技術日記

    公式な仕様は無さそう。ソースを読むのは厳しい。整形しただけでは全然読めなかった。 クッキー 4種類 現行バージョンの ga.js が使用するクッキーは、主に4つ。 __utma ユーザを識別。2年有効。 __utmb 今回のセッションを識別。30分有効。 __utmz どこから来たか。リファラ。6ヶ月有効。 __utmv カスタム変数。2年有効。 __utma, __utmb, __utmz は、ga.js が実行されたときに、無かったら作られる。 __utmv は、_setCustomVar() で作られる。 有効期間は、最後に更新した時点からカウントする。4つとも、GAにデータが送られる度に更新される。 たとえば __utma なら、ユーザが2年間サイトに来なかったら消える。2年以内に再度アクセスすると、そこからまた2年の有効期間が与えられる。 他に、 __utmc 古いバージョンであ

    Google アナリティクスで使われるクッキーについて __utma / __utmb / __utmz - こせきの技術日記
    kamipo
    kamipo 2013/05/02
  • Varnish の設定ファイルを使って Basic 認証を実装する。 - こせきの技術日記

    Varnish 体に Basic 認証の機能はない。VCL を使って、Basic 認証を実装することならできる。 原始的な実装。 Authorizationヘッダが一致しなかったら401エラーを出す。 backend apache { .host = "127.0.0.1"; .port = "80"; } # vcl_recv は、クライアントからリクエストを受け取った時に実行される。 sub vcl_recv { set req.backend = apache; # Authorization ヘッダが一致しなかったら401エラー。 if (req.http.Authorization != "Basic dXNlcjpwYXNz" && req.http.Authorization != "Basic dXNlcjI6cGFzczI=" ) { error 401; } retu

    Varnish の設定ファイルを使って Basic 認証を実装する。 - こせきの技術日記
  • Varnish の hit_for_pass ってなに? - こせきの技術日記

    結論 「キャッシュしない」ことをキャッシュするのが hit for pass キャッシュオブジェクト。 同じ URL に、同時にアクセスされたとき、 キャッシュが見つからない場合 …… 先頭のリクエストだけをバックエンドに送り、残りはそのレスポンスを待つ。 hit for pass キャッシュが見つかった場合 …… 他のリクエストを気にせず、全部バックエンドに送る。 という動作になる。 発端 Varnish を3.0にバージョンアップしたら vcl_fetch のreturn (pass); がエラーになった。どうやら、単純に return (hit_for_pass); に置き換えればいいらしい。 Upgrading from Varnish 2.1 to 3.0 — Varnish version trunk documentation 2.1から3.0にアップグレードする際のVCLフ

    Varnish の hit_for_pass ってなに? - こせきの技術日記
  • mod_rewriteのコンテキストとサブリクエストについて調べた。 - こせきの技術日記

    発端 WordPressでパーマリンクをカスタマイズすると、下の設定を.htaccessに書くように言われる。 Using Permalinks « WordPress Codex RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]これをhttpd.confに移すと以下のように書ける(と思っていた)。 RewriteEngine On RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d RewriteRule . /index.php [L]Dir

    mod_rewriteのコンテキストとサブリクエストについて調べた。 - こせきの技術日記
  • 地獄のようによくわかるSQLテーブル結合 - こせきの技術日記

    テーブルのJOINが苦手でしたが、この例を思いついてからは、すっきりくっきり理解できるようになりました。むしろ頭から離れません……。 ※ INNER、OUTERは飾り。省略できる。 INNER JOINJOIN LEFT OUTER JOIN → LEFT JOIN RIGHT OUTER JOIN → RIGHT JOIN ※ ON ...=... をまとめて USING(属性) と書ける。 ※ 何で結合するか言うまでもない時は、NATURALを指定すると勝手にJOINしてくれる。NATURALにJOINして……。 ※ WHEREは結合した結果に作用する。 ※ 現実には上図のように1対1で結合しません。 ※ おまけ。CROSS JOIN。 こんなの使いません。 ブクマ用画像。

    地獄のようによくわかるSQLテーブル結合 - こせきの技術日記
    kamipo
    kamipo 2010/09/16
  • Apacheのアクセス制御をちゃんと理解する。 - こせきの技術日記

    Apacheの設定で Order deny,allowとか Satisfy anyとか、なんだか意味わからん人のために。僕はずっとわかってなかった。 基 Apacheのアクセス制御には、 ホストによる制御 (Order,Allow,Deny) ユーザ認証による制御 (Auth*, Require) の2通りがある。 Satisfyは、2通りあるアクセス制御の両方を満たす必要があるかどうかを決定する。デフォルトはSatisfy all。Satisfy anyなら、どちらか片方満たせばよい。 Order http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order Order deny,allowは、全てのホストからのアクセスを許可する。 Order allow,denyは、全てのホストからのアクセスを拒否する。 Order d

    Apacheのアクセス制御をちゃんと理解する。 - こせきの技術日記
  • TCP接続が切れるまで - こせきの技術日記

  • こせきの技術日記 - Rails + MySQL (+ Mongrel?) でDB接続の通信が無い状態が続くとデッドロックする。

    (追記) この問題について、原因はRubyの側にあるのではないかと考えています。特定の条件下でTCPSocket#flushを実行すると、スレッドが停止したまま処理が戻ってこなくなります。以下の投稿で、Railsを使わず再現する方法を説明しました。 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/43356 (追記おわり) 開発サーバが翌日になるとデッドロックする、という現象が続いていて悩みました。 解決方法は、MongrelのFAQに上がっていました。 http://mongrel.rubyforge.org/faq.html Q: Mongrel stops working if it’s left alone for a long time. If you find that Mongrel stops work

    こせきの技術日記 - Rails + MySQL (+ Mongrel?) でDB接続の通信が無い状態が続くとデッドロックする。
  • GPLメモ - こせきの技術日記

    配布とソースコード GPLの派生物を渡した相手が希望するなら、ソースコードを渡さなければならない。 不特定多数にソースを公開する義務はない。 AさんがBさんにGPLのソースから作ったバイナリを渡すとき、Bさんに要求されたらソースも渡さなければならない。 BさんがAさんから受け取ったバイナリを100人に売ったとき、その100人に要求されたらソースも渡さなければならない。 顧客の100人がバイナリを購入せず、BさんやAさんにソースを要求しても渡す必要はない。 オープンソースで行こう!: 第2回 オープンソースライセンス事情を俯瞰する 「特にGPLのソフトウェアをビジネス用途などで第三者に販売・提供する場合、その第三者からソースコードの開示要求があればそれに応じなければなりません」 ソースを渡した相手に、再配布を許可しなければならない。 渡された相手が「再配布しなければならない」わけではない。

    GPLメモ - こせきの技術日記
  • Tokyo TyrantでテーブルDBを指定するとtcrtestがエラーになる。 - こせきの技術日記

    Tokyo Cabinet / Tokyo Tyrant を使ってみているのだが、テーブルDBにTTのRuby binding経由で読み書きを繰り返していると、 エラーコードがずっとEMISC(9999)のままになる。 結果がたまに空で返ってくる。 再接続すると正しい結果が返る。 この時のエラーコードは大抵EMISCだがESUCCESSの場合も。 という問題が発生して困っている。原因を絞り込むためtcrtestを試したら、同じようにmiscエラーが出た。 ttservctlをテーブルDBに修正してttserverを起動。 tcrtest misc 127.0.0.1 1000 Linux(32bit) の場合、rnum=1000で2回に1回くらいmiscエラーが出る。 Mac OSX(64bit) の場合、rnum>4095でmiscエラーが出る。 自力で原因を調べると3年くらいかかりそう

    Tokyo TyrantでテーブルDBを指定するとtcrtestがエラーになる。 - こせきの技術日記
  • メールをどこにも送らずHTMLで保存するSMTPサーバ mocksmtpd.rb - こせきの技術日記

    (2014/6/3 追記) MailCatcher がおすすめです。 MailCatcher (2008/11/4追記) gem版も作ってみました。 RubyでSMTPサーバを作る(1) - バリケンのRuby日記 - Rubyist id:muscovyduckさんの(素晴らしい)記事を参考に、ちょっとだけ手を加えて開発用のSMTPサーバ mocksmtpd.rb を作成しました。メールを外に出さずにHTMLで保存する単純なSMTPサーバです。 これを使うと、Seleniumでメールのテストが簡単にできるようになります。ユーザ登録時にURLをメールで送信して人確認とか。間にメールが挟まってもテストがつながります。 使い方 # コンソールで実行 mocksmtpd.rb # デーモンとして実行 mocksmtpd.rb -d # デーモンを停止 mocksmtpd.rb stop他にオプ

    メールをどこにも送らずHTMLで保存するSMTPサーバ mocksmtpd.rb - こせきの技術日記
  • mod_rewriteの考え方。 - こせきの技術日記

    http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html を見ながら。 URLが正規表現(A)にマッチし、かつ 文字列(B)が条件(C)を満たす場合に、 URLを(D)に書き換える。 というのが基。 RewriteRule URLが(A)の正規表現にマッチしたら(D)で書き換える。 正規表現(A)は、リライトを実行するかどうかの条件(真偽値)であって、置換 url =~ s/(A)/(D)/ ということではない。たとえば、以下のような正規表現でリライトされる。 Google Code Search # 1文字マッチしたらリライト実行。空文字列でなければ実行する。 RewriteRule . index.php [L] Google Code Search # 先頭にマッチしたらリライト実行。常に実行する。 RewriteRule ^ -

    mod_rewriteの考え方。 - こせきの技術日記
  • 実行中のアプリケーションを外から観察するコマンド。 - こせきの技術日記

    strace システムコールをトレース。カーネルと何を話しているか。 strace -p PID でプロセスにアタッチ。実行中のプロセスをトレース。 straceを使ったデバッグ - SourceForge.JP Magazine : オープンソースの話題満載 Linuxカーネルの作り出す世界 − @IT自分戦略研究所 - ふつうのLinuxプログラミング 青木峰郎 システムコールとライブラリ関数 − @IT自分戦略研究所 システムコール・ライブラリルーチン - UNIX の部屋 ltrace 共有ライブラリの呼び出しをトレース。*.soと何を話しているか。 ltrace -p PID でプロセスにアタッチ。実行中のプロセスをトレース。 ltrace で共有ライブラリの関数呼び出しをトレースする - bkブログ 404 - エラー: 404 - Linux JF ƒ‰ƒCƒuƒ‰ƒŠ‚ÌŠ

    kamipo
    kamipo 2009/06/22
    gdbを使うには-gオプション付きでコンパイルしておく必要がある。(ここが敷居高い)
  • 最近のMac OSXで、PATHをスマート(?)に管理するやり方。 - こせきの技術日記

    MacPorts用の/opt/local/binなどを全ユーザのPATHに設定したくて、やり方を調べました。 ~/.profile(zshなら~/.zprofile)に設定してもいいのですが、これだとユーザごとに設定しなければなりません。できれば全てのユーザに対して、デフォルトで/opt/local/binを優先したいところです。 path_helperを使う。 以下のファイルを見ると、 /etc/profile /etc/zprofile /etc/csh.login 全部が/usr/libexec/path_helperを読み込んでいます。path_helperの冒頭のコメントを見てみます。 /usr/libexec/path_helper #!/bin/sh # # Each line of the text files in /etc/paths are directories t

    最近のMac OSXで、PATHをスマート(?)に管理するやり方。 - こせきの技術日記
    kamipo
    kamipo 2009/06/07
    path_helperを使う。
  • JavaScript正規表現メモ。 (JavaScriptでよく使う書き方。) - こせきの技術日記

    タイトル変えました。旧タイトル「JavaScriptでよく使う書き方」。よく使うけど毎回忘れる。 正規表現にマッチするかどうか。 RegExp#testを使う。 /abc/.test("abcdefg") // => true String#searchはマッチした位置を返す。マッチしない場合は-1。先頭にマッチすると0でfalseなので注意。真偽値が欲しい場合はString#searchを使わない。 "abcdefg".search(/xxx/) // => -1 "abcdefg".search(/def/) // => 3 "abcdefg".search(/abc/) == false // => true 正規表現の部分マッチを得る。 部分マッチを得るには、RegExp#execかString#matchを使う。execとmatchの速度は大して変わらない。 正規表現のベンチマー

    JavaScript正規表現メモ。 (JavaScriptでよく使う書き方。) - こせきの技術日記
  • 地雷だらけのrsyncを理解する。 - こせきの技術日記

    rsync -avz --exclude-from=pattern-file --delete SRC/ DEST SRCの末尾に/をつける。たいてい必要。 SRCスラッシュの有無は、mv SRC DEST と mv SRC/* DEST の違いと一緒。スラッシュの後ろに*が省略されているものと考える。 DESTのスラッシュの有無は関係なし。 --dry-run(-n)をつけて試す。 SRC、DESTともローカルのディレクトリを指定して試す。 DESTはまず空ディレクトリで試す。DESTが同期済みだと何が更新されるのか正確にわからないので。 --list-onlyをつけてファイル一覧を得る。 DESTを省略してファイル一覧を得る。 --list-onlyと同じ? --deleteはDESTのファイルを根こそぎ削除する可能性がある。注意。 --delete-excludedは使わない。--d

    地雷だらけのrsyncを理解する。 - こせきの技術日記
  • 1