タグ

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

  • Git の仕組み (1) - こせきの技術日記

    目次 はじめに Git を使ったことがない方へ 生のデータが見たい方へ Git の全体像 .git の中身 Git オブジェクトデータベース 4種類のオブジェクト リファレンス リファレンスのリファレンス 大きなツリー Git オブジェクトの ID と 中身 ハッシュ関数 SHA1 の簡単な説明 tree と blob オブジェクト tree と blob の参照関係 ルートツリーの ID でツリー全体を識別する commit オブジェクト リファレンスとブランチランチランチ先頭を指すリファレンス HEAD リファレンス detached HEAD 2種類のタグ 一時待避 (stash) インデックス キャッシュとしての役割 マージ Fast-Forward マージ non Fast-Forward マージ rebase reset 2種類のブランチ 各リポジトリが自分のブランチ

    Git の仕組み (1) - こせきの技術日記
  • はてなIDがクッキーで約50サイトに送られていた話 - こせきの技術日記

    (追記) 要点を整理をした記事を書きました。こっちのほうが、余計なこと書いてない分、わかりやすいかもしれません。 はてなブックマークに、マイホットエントリーという大変すばらしい機能があって、毎日見ている。 マイホットエントリー機能のご紹介 - はてなブックマーク開発ブログ 自分のマイホットエントリーのURLはこう。 http://b.hatena.ne.jp/koseki/ マイホットエントリーを見ていると、はてなID koseki を含むリファラが各サイトに送信される。 リファラは Google アナリティクスの __utmz に記録される。 Firefox には、全クッキーの値を横断検索する機能がある。 設定 > プライバシー > Cookieを個別に削除 > 検索 自分の環境では、およそ50個*1のクッキーに koseki という文字列が含まれていた。 あんなサイトやこんなサイトを、

    はてなIDがクッキーで約50サイトに送られていた話 - こせきの技術日記
    yuiseki
    yuiseki 2014/12/18
  • Google アナリティクスの利用規約と、クッキーとリファラの話の続き - こせきの技術日記

    はてなIDがクッキーで約50サイトに送られていた話 - こせきの技術日記 の続き。 長い、意味がわからない、FUDだ、クッキー関係ない、といった批判を受けて、補足と整理をします。 Google アナリティクスの利用規約 Google アナリティクスについて、知らなかった点を補足。 前の記事に書いたようなことをすると、Google アナリティクスの利用規約違反と見なされる可能性がある。 カスタム変数を使わずに、ビジターIDを Google アナリティクスの画面から検索・取得することはできない。 利用規約の「7. プライバシー」で、個人情報をGAに格納したり関連づけたりする行為が、禁止されている。 7.  プライバシー  お客様は、サービスを利用する(又は第三者が利用する)にあたって、個人を特定するデータ(氏名、Eメールアドレス、請求関係の情報等の個人情報)又はGoogleが当該情報に合理的

    Google アナリティクスの利用規約と、クッキーとリファラの話の続き - こせきの技術日記
    yuiseki
    yuiseki 2014/12/18
  • Vagrant を使って Mac からダブルクリックで操作できる仮想環境を作る - こせきの技術日記

    この記事を公開する直前に Vagrant Cloud がはてブに上がってるのを見て、今あわてて追記しています。すごい楽しいことになってますねー。 Vagrant Cloud Vagrant 1.5 and Vagrant Cloud - Vagrant ブログ記事をざっと読んだ感じだと、Vagrant 1.5 の新機能は、 VagrantShare - まるで公開されてるサイトみたいに VM の URL をチームメンバーに見せる Box を koseki/centos みたいな短い名前で指定できるように。バージョン管理 rsync と SMB でフォルダ同期 Hyper-V - MS の仮想環境に対応 insecure-private-key の代わりに SSH でパスワードが使えるように プラグイン管理 Funtoo, NetBSD, TinyCore Linux のゲストに対応。ネット

    Vagrant を使って Mac からダブルクリックで操作できる仮想環境を作る - こせきの技術日記
    yuiseki
    yuiseki 2014/03/11
  • HTTPのクエリパラメータにコロン(:)を書くのは不正なのか。 - こせきの技術日記

    PHP の $_SERVER['REQUEST_URI'] と parse_url() の予想外な動作について。 - こせきの技術日記 の続き。 PHPのparse_url()は、 "/abc?a=x&time=09:00&x=y" はパースできるのに、 "/abc?a=x&time=09:00" だと失敗する。 相対URIで「動作しない」仕様だかららしいのだが、それはともかく、コロンのパーセントエンコードが必須なのか気になったので調べた。 URIの仕様 RFC 3986 まず、基礎となる URI の仕様 RFC 3986 がある。 RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax Uniform Resource Identifier (URI): 一般的構文 日語訳 RFC 1738 - A Gopher URL

    HTTPのクエリパラメータにコロン(:)を書くのは不正なのか。 - こせきの技術日記
  • SourceTree の圧倒的な素晴らしさと致命的な欠点について。(修正済み) - こせきの技術日記

    (追記) 下記の問題点は、1.5で修正される予定とのことです。 (追追記) 濁点付きの検索はできないようですが、ログの問題は修正されていました。v1.5.3で確認。 SourceTree の UI は最高に素晴らしく、これまで見たどんなバージョン管理アプリケーションと比べても、次元が違う洗練されたユーザエクスペリエリンスが約束されており、有料になったら絶対買うんですが、いまは無料なので当に感動的です。 Free Mac client for Git, Mercurial and SVN - Atlassian SourceTree Git、Mercurial 対応 DVCS Mac クライアント | Atlassian 日語サイト Mac App Store - SourceTree (Git/Hg) Mac App Store でも一つだけ問題があって、、まともなコミットログが書けな

    yuiseki
    yuiseki 2012/05/12
  • Sinatra でアプリケーションログをファイルに書く方法。 - こせきの技術日記

    Sinatra はじめて触ったんだけど、ログをファイルに書く方法がなかなかわからなかった。 ログを、ただファイルに書きたいのです。 結論 独自のミドルウェアで env['app.logger'] を設定し、アプリケーションのloggerメソッドをオーバーライドする。 参考 ruby - Use Rack::CommonLogger in Sinatra - Stack Overflow これに書いてある通りだった。面倒くさいー。 サンプル 以下でログがファイルに出力される。アクセスログとアプリケーションログを別のファイルに出力することもできる。 config.ru Loggerを作ってミドルウェアに渡す。 require 'logger' require 'sampleapp' require 'applog' logdir = File.dirname(__FILE__) + "/log

    Sinatra でアプリケーションログをファイルに書く方法。 - こせきの技術日記
  • TAILQ のソースを読んで C のポインタをマスターする。 - こせきの技術日記

    正月は TAILQ のソースを読んでいた。普段 C を読み書きしないので、とても勉強になった。ポインタの使い方がわかった(ような気持ちになれた)。 TAILQって? TAILQ は C のマクロで書かれた双方向リンクリストの実装。 連結リスト - Wikipedia BSD、OSX や glibc に含まれている。 http://freebsd.active-venture.com/FreeBSD-srctree/newsrc/sys/queue.h.html http://sourceware.org/git/?p=glibc.git;a=blob_plain;f=misc/sys/queue.h;hb=HEAD 基的な使い方は以下のページが参考になった。 Tail queue(TAILQ) C言語系/「デーモン君のソース探検」読書メモ/14, man.conf - Glamenv-S

    TAILQ のソースを読んで C のポインタをマスターする。 - こせきの技術日記
  • 2つの期間が重なり合うかどうかを判定する。 - こせきの技術日記

    2つの期間 A〜B と X〜Y が重なっているかどうかを判定したい場合。 のように4つのパターンがある。これを単純に、 A <= X && Y <= B || X <= A && Y <= B || A <= X && B <= Y || X <= A && B <= Yのように判定してはいけない。 Xは青い線の上を、Yは赤い線の上を動くとき、A〜B と X〜Y は重なり合う。この条件は、 X <= B && A <= Yこれで4つのパターンをカバーできる。ORは不要。始点と終点をわかりやすく書くと以下になる。 始点2 <= 終点1 && 始点1 <= 終点2アルゴリズムに名前がありそうな気がするけど、見つけられなかった。 (追記) 矩形の重なり判定の方が情報が見つかった。 * Life is beautiful: ビル・ゲイツの面接試験-私の場合 * 長方形の重なりを判定する問題 - ザ

    2つの期間が重なり合うかどうかを判定する。 - こせきの技術日記
    yuiseki
    yuiseki 2011/10/22
  • 地獄のようによくわかる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テーブル結合 - こせきの技術日記
    yuiseki
    yuiseki 2010/09/16
  • 永久に使える自分だけのURIを作る。 - こせきの技術日記

    UUIDやTag URIスキームを使うと、永久不滅の自分専用URIを作れる。 urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 tag:user@example.com,2010:foo/bar また、これらのURIをAtomで利用する方法について検討する。 <atom:link rel="tag:nobody@example.com,2010:myself" href="tag:nobody@example.com,2010:myself" /> 自己言及リンク UUID UUIDにはバリエーションが存在する。以下はRFC4122の話。他は調べてない。マイクロソフトのGUIDがRFC4122に適合しているわけではない(ようだ)。 RFC 4122 - A Universally Unique IDentifier (UUID) URN Names

    永久に使える自分だけのURIを作る。 - こせきの技術日記
    yuiseki
    yuiseki 2010/04/29
  • GPLメモ - こせきの技術日記

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

    GPLメモ - こせきの技術日記
    yuiseki
    yuiseki 2010/01/29
  • TimeとDateTimeと2038年問題 - こせきの技術日記

    現在の Unix システムでの最大時刻は、協定世界時の2038年1月19日午前3時14分7秒です。 http://www.ruby-lang.org/ja/man/?cmd=view;name=Time Timeは2038/1/19以降がエラーになる。 >> Time.gm(2038,1,19).strftime("%Y-%m-%d %a") => "2038-01-19 Tue" >> Time.gm(2038,1,20).strftime("%Y-%m-%d %a") ArgumentError: time out of range from (irb):7:in `gm' from (irb):7 from :0DateTimeはもっとずっと先まで大丈夫。 >> require 'date' => true >> DateTime.civil(2038,1,19).strftime(

    TimeとDateTimeと2038年問題 - こせきの技術日記
    yuiseki
    yuiseki 2009/07/22
  • Github APIメモ - こせきの技術日記

    Github API (version 2)のメモ。主に情報取得系のAPIについて。 概要 ドキュメント http://develop.github.com/ フォーマットにxml,yaml,jsonを指定できる。以下ではXMLを指定する。ブラウザで見やすいので。 http://github.com/api/v2/:format (URLのベース) 取得系のURLパターン。 ID不要 repos/search/キーワード …… リポジトリ検索 repos/show/ユーザ …… ユーザのリポジトリ一覧 repos/show/ユーザ/リポジトリ …… リポジトリ情報 commits/list/ユーザ/リポジトリ/ブランチ …… 最近のコミット(コミットID、ルートツリーIDが得られる) commits/list/ユーザ/リポジトリ/ブランチ/パス …… 最近のコミット (コミットID、ルート

    Github APIメモ - こせきの技術日記
    yuiseki
    yuiseki 2009/07/14
  • 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がエラーになる。 - こせきの技術日記
    yuiseki
    yuiseki 2009/07/02
  • はてなダイアリーの記事をgithubでバージョン管理する。 - こせきの技術日記

    github や code repos のような公開リポジトリを使って、ブログに履歴管理機能を追加できるのではないかと考えた。この記事では、はてなダイアリーの記事をgithubでバージョン管理する方法を検討する。また、ブログ記事の履歴を公開するメリットについて考える。 この記事の履歴は、以下で参照できる。 http://github.com/koseki/hatenadiary-koseki2/commits/master/2009-06-29-HatedaGithub.txt これまでにやったこと はてなダイアリーライター(はてダラ)にローダー(はてダロ)を加えてgithubに上げた。 koseki/hatenadiary-writer · GitHub Text::HatenaとWEBrickでプレビューサーバを実装した。 Rakeで更新環境を作った。 最近書いた記事をgithubに上

    はてなダイアリーの記事をgithubでバージョン管理する。 - こせきの技術日記
    yuiseki
    yuiseki 2009/07/01
  • 実行中のアプリケーションを外から観察するコマンド。 - こせきの技術日記

    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ƒ‰ƒŠ‚ÌŠ

  • 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を理解する。 - こせきの技術日記
    yuiseki
    yuiseki 2009/04/25
  • SQLの条件を組み立てるRailsプラグイン Condition Builder 1.1 - こせきの技術日記

    RailsSQLの条件を扱う、Condition Builderプラグインが便利です。 最新版(1.1) http://blog.inquirylabs.com/2007/06/28/condition-builder-11/ 説明 http://blog.inquirylabs.com/2007/01/04/condition-builder-10-released/ 以前の記事 http://blog.inquirylabs.com/index.php?s=condition+builder&submit=Search Conditionクラスのメソッド一覧 通常、ActiveRecordに条件を指定する場合、:conditionsオプションで ["a = ? AND b = ?", 1 , 2] のような配列を指定します。この配列の構築をサポートしてくれるのがConditionBu

    SQLの条件を組み立てるRailsプラグイン Condition Builder 1.1 - こせきの技術日記
    yuiseki
    yuiseki 2009/03/10