ブックマーク / dqn.sakusakutto.jp (9)

  • 軽量・シンプルなHTTPサーバMongooseのインストール方法 · DQNEO日記

    インストール方法(Linux) git clone git://github.com/cesanta/mongoose.git cd mongoose/build/ make unix ソースコードをとってきてmake unixするだけです。 簡単ですね☆ 起動する ./mongoose これだけ!! デフォルトでは8080ポートで、カレントディレクトリがドキュメントルートになります。 ポート番号やドキュメントルートを変更したい場合はオプションで ./mongoose -listening_ports 8888 -document_root /path/to/www などすればOKです。 その他オプション 他にもオプションがいろいろあります。 ヘルプはこんな感じ。 ./mongoose --help Mongoose version 4.2 (c) Sergey Lyubka, built

    tmatsuu
    tmatsuu 2013/11/03
    ほほう
  • Gitレポジトリはパッチの集積ではなくてスナップショットの集積である。 · DQNEO日記

    Gitはパッチを保存してはいない 勘違いしてる人が非常に多いのですが、Gitレポジトリに保存されているのはパッチ(差分)ではなくスナップショットです。 例えば、1から1億までの数字が書かれたテキストファイルを作ったとしましょう。 1 2 3 [中略] 100000000 このファイルをコミットすると、Gitレポジトリには巨大なファイルが1つ追加されます。 (※実際にはコミットオブジェクトやツリーオブジェクトといったファイルも別途追加されますが、細かいことは省きます) ここまでは誰でも理解できるでしょう。 巨大なファイルに「追記」するとどうなるか では次に、このファイルの末尾に1行追記します。 100000000 100000001 ← 追記 でこのファイルをコミットします。 するとどうなると思いますか? Gitレポジトリに巨大なファイルが2つできます。 この後 git show -pしたり

    tmatsuu
    tmatsuu 2013/10/31
    そうなのね
  • Gitの驚愕の真実:1億行のファイルに1行追記するとレポジトリ容量が200MB増える[※補足あり] · DQNEO日記

    1億行のファイルに1行追記するだけでレポジトリ容量が2倍になった 以前の記事「Gitレポジトリはパッチの集積ではなくてスナップショットの集積である。」を確認するために、1億行のファイルを作って実験してみました。 結果は、なんと1行追記しただけでレポジトリ容量が200MB増加し、サイズが2倍になりました。 実験手順 空のレポジトリを作る 1億行のファイルを作ってgit addしてgit commit コミットする そのファイルに1行だけ追記してgit addして git commitする 空のレポジトリを作る $ git init 1億行のファイルを作る 1億行のファイル(1から1億までの数字が書かれたファイル)を作ります。 $ seq 1 100000000 > numbers.txt この時点で、ワーキングツリーとレポジトリ容量を調べてみます。 $ ls -lh 合計 848M -rw-

    tmatsuu
    tmatsuu 2013/10/31
    前提のスナップショットの集積ってのを知らなかった。パッチだと思ってた。
  • [Perl]use Fatalはレガシーでuse autodieがモダン · DQNEO日記

    Perlたまにしか書かないので、昔覚えた知識がいつのまにかレガシー知識になっていることがよくあります。 use Fatal;はもう古いみたいです。 use autodie;を使いましょう。 適当なscriptでは use autodie; する おそらくはそれさえも平凡な日々: PerlのIdiomをCPANモジュールを使って可読性を高くしてみる ありがとうそしてありがとう。

    tmatsuu
    tmatsuu 2013/10/12
    まじか。use strict; use warnings; use autodie;
  • いい加減、<script src="http://.. と書くのはやめましょう - DQNEO起業日記

    外部サイトのJSファイルを読み込むときに、こういう書き方するのはやめましょう。 <script src="http://example.com/js/jquery.js"></script> 理由 あなたのサイトが、いつの日かSSLに対応することになったとき、そのscriptタグがバグの原因になります。 ご覧のとおり、HTTPSページの中でHTTP要素を読み込もうとすると、ブラウザによっては安全装置が働いて読み込んでくれないのです。 上の例ではjQueryの読み込みに失敗していますが、エラーメッセージ「Uncaught ReferenceError: jQuery is not defined 」を見てもHTTPS/HTTPのプロトコルが原因だとはすぐ気づかないので、わかりにくいバグになってしまいます。 結論 JSファイル(とかCSSとか画像とか)を読み込むときは、"http:"の部分を省

    tmatsuu
    tmatsuu 2013/05/19
    network-path referenceとしてRFC3986で定義されてるが、file://の時も同様に解釈される、IE7,8の二重ダウンロード、IE6で動作しないといった問題が。jsならlocation.protocolを見て組むのが良いと思う
  • 仕事で使ってる巨大SVNレポジトリをGithubに移管するためにやったことまとめ · DQNEO日記

    動機 Subversionで困ってない ぶっちゃけSubversionで全然困っていませんでした。 コードレビューはちゃんとやっていたし、マージ・ブランチングも自作シェルスクリプトのおかげてスムーズにやれていました。 よく「Gitはマージが賢い、ブランチ作成が一瞬でできる」とかいわれますが、Subversionだってちゃんと使えばコンフリクトなんかめったに起きないし、ブランチ管理・マージだって全然めんどくさくない。 特にver1.7からはサーバもクライアントも大幅に高速化されたし、.svnディレクトリが.gitみたいに1個になったし、rebaseみたいなことだってできる。(sync merge & reintegrate) ただ、世の中が一斉にGitにシフトしている中でいつまでもSubversionを使っててよいのかという不安がありました。 また、月から金までSubversionにどっぷり

    tmatsuu
    tmatsuu 2012/10/22
    git svn cloneは使わない方がよい。このノウハウは後で使いそうなのでメモ。
  • 引数なしのgit pushは危険なので気をつけましょう · DQNEO日記

    絨毯爆撃pushの例 いまmasterブランチに、未プッシュのコミットがあるとします。 ここで、新たにbr1ブランチを作ってチェックアウトします。 $ git checkout -b br1 master $ git branch * br1 master br1ブランチでコミットを作ります。 echo hello >> hello.txt git add . git ci -m "add file" 引数なしでプッシュします。 git push すると、どこに何がpushされると思いますか? 実は、master -> masterにpushされます。 masterがまだpushできる状態でない場合、これはかなり痛い。すごく痛い。頭が頭痛でおなかが腹痛。 しかもpushしたかった当のbr1ブランチはpushされないというオチ。(リモートにbr1ブランチがない限りは) この挙動は大半のユーザ

    tmatsuu
    tmatsuu 2012/10/21
    あら、そうだっけ。無意識のうちにブランチ名を明示してたから気づかなかっただけだろうか。
  • JavaScriptで、もう連想配列の最後のカンマに悩まない!(※追記あり) · DQNEO日記

    末尾に要素を増やしたい、または減らしたいときに問題が起こります 例えば" c : 3 "の行を単純に削除するとバグるので削除したいときに、" b: 2,"のカンマを削除する必要があります。 また、" d : 4 "を追加したいときに、" c : 3 "の後にカンマを入れる必要があります。 これは面倒くさいですね。 (エンバグについてはjslintなどのツールで防げばよいという指摘があったので修正しました。) より良いやりかた var x = { a : 1, b : 2, c : 3, dummy : null } このように最後に "dummy : null" というダミーの要素を書いておきます。 こうすれば、プロパティa, b, cはどれもカンマ付きで平等になります。 ぜひ一度試してみてください。 (もしかして常識だったらすみません。あとこの手法は for in で走査したいときはよく

    tmatsuu
    tmatsuu 2012/05/05
    昔同じこと考えたけど、やってない。前カンマも1行目を削除する可能性を考慮すると微妙だよね。 俺の座右の銘は「郷に入っては郷に従え」
  • MongoDBをext3とext4でベンチマークしてみたらext4が圧勝だった。 · DQNEO日記

    マシン:ニフティクラウド サーバタイプmini [1vCPU(1GHz)・512MB] ディスク:Disk200 B OS:CentOS release 6.2 (64bit) MongoDB: mongodb-linux-x86_64-1.6.4 実験方法 マシン内で mongod(サーバ)を1プロセス起動する。 mongoシェルを3つ立ち上げる。 mongoシェルから次のようなsaveクエリを無限ループで投げ続ける。 > var x = { a : new Date() , b:(new Date()).toString(), c: 'hoge hoge foobar' , d: 1234567890 }; > while (1) { db.foo.save({ x : x, t : new Date()}) } サーバのログファイルに書かれたアロケーション所要時間を記録。 Wed A

    tmatsuu
    tmatsuu 2012/04/27
    ext3はプリアロケートで0を埋めるから遅い
  • 1