タグ

2014年6月24日のブックマーク (9件)

  • 細かすぎて伝わらないmdbm

    おまけ話として、mdbmはLinear Hashingと呼ばれるハッシュアルゴリズムの影響を強く受けています。 Linear Hashingの詳細はwikipediaをご覧ください。 http://en.wikipedia.org/wiki/Linear_hashing このアルゴリズムによりmdbmは、扱うデータサイズが大きくなれば、動的にHashTableを拡大することができる非常に便利な特性を持っています。 しかし、冷静になって考えてみてみましょう。このLinear Hasingの管理用のテーブルを走査する計算コストは可能なら避けるべきです。 mdbmをはじめ、多くのKVSでは最終的なデータのサイズの予想がつくのであれば、あらかじめ大きめのサイズでデータベースファイルを作成する方が好ましいでしょう。 この辺の話に興味がありましたら、コードの「hashval_to_pagenum()」

    細かすぎて伝わらないmdbm
  • Google、ドメイン登録サービス(β)を開始 whois対策付きで年間12ドル

    Googleは6月23日(現地時間)、ドメイン登録サービス「Google Domains」を開始したと発表した。まずは招待制βで、サービスのページから招待をリクエストできる。 同社は、「今や人々が企業の情報を得ようとしてまず探すのはWebサイトだが、驚いたことにスモールビジネスの55%はまだWebサイトを持っていない」とし、そうしたスモールビジネス(ショップやレストランなど、ローカルビジネスとも呼ばれるものを含む)をサポートする目的でGoogle Domainsを立ち上げたとしている。同社は最近、ローカルビジネス向けサービス「Google マイビジネス」を開始している。 Google Domainsではドメインの検索、売買が可能。 .com、.biz、.orgなどの他、gTLDの規制緩和後に承認された新gTLDも購入できる。ドメインの価格は年間12ドル(約1200円)で、プライベートレジ

    Google、ドメイン登録サービス(β)を開始 whois対策付きで年間12ドル
  • Hatena's Infrastructure from the beginning

    5. 株式会社はてな 2001 年創業 @ 京都 従業員 35 名 (+ インターン 10 名 )‏ ウェブのサービス提供会社 人力検索 ブログ ソーシャルブックマーク 会員 80 万人 1,000 万 UU/ 月 6,000 万 PV/ 日

    Hatena's Infrastructure from the beginning
  • Netty 4がTwitterのGCオーバーヘッドを1/5に削減

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Netty 4がTwitterのGCオーバーヘッドを1/5に削減
  • golang で JSONPath 的にデータ取り出したいときは @mattn_jp の go-scan が便利 - tokuhirom's blog

    golangnet/http とってきて JSON を parse して所定のキーを取り出すプログラムを書きたかった。 こういう場合、JSONPath とか使って書きたいのだが、JSONPath が完全にサポートされている go のライブラリは見当たらなくて、mattn_jp さんが JSONPath 書こうとして途中でやめた gist がひっかかってくる程度。あとなんか yasuyuky/jsonpath というのもあるのだが、これはいわゆる JSONPath ではない。 JSONPath なくてマジ不便ヤンケ、と思っていたが、mattn_jp さんが go-scan というライブラリを書いていた。 golangのjson、型を作るかmap[string]interface{}にしてキャストするしかなくて最初はgolang面倒臭いなって思ってたけど小規模なら後者で十分だしそれ以上の

  • バックログの指定 - 揮発性のメモ2

    listenのバックログが指定できない - 揮発性のメモの続き http://www.linux.or.jp/JM/html/LDP_man-pages/man2/listen.2.html int listen(int sockfd, int backlog); backlogでバックログの数=accept()待ちの接続のキューの数を指定できる。 ということになっているけど、実際はキューの数をあまり制限できないっぽい。 カーネル側の設定を # cat /proc/sys/net/ipv4/tcp_syncookies 0 # cat /proc/sys/net/ipv4/tcp_max_syn_backlog 1プログラム側を result = listen( sd, 1 );として制限かけていても、実際にはセッションが確立してしまう。 tcp 0 0 172.16.1.4:5000 1

    バックログの指定 - 揮発性のメモ2
  • ストレージI/O高速化への取り組み:Linux BLK-MQ/SCSI-MQ - Blog

    Linux関連のコア開発者から聞くところによると、ストレージのI/Oアーキテクチャはネットワークに比べ、10年くらい遅れていたらしい。長らくハードディスクという相当に遅いデバイスが相手だったので、それほど気にしなくても済んでいたという。 ところが、最近のフラッシュメモリ等々の急速な広まりで、ソフトウェア部分も強化が進んでいるようだ。1つの論理デバイスに対してCPUのマルチコアを活用するというネットワークでは今や当然となっている仕組みがストレージにもようやく搭載されつつある。Multi-Queue(マルチキュー)と呼ばれている。 Linuxの仕組みとしては、BLK-MQ(Multi-Queue)とSCSI-MQである。Linux以外のOSでは良く分からないが(きっとあると思います)、少なくともLinuxではシングル論理デバイス(LUN)当たり1M IOPS(100万IOPS)を実現すべく、搭

    ストレージI/O高速化への取り組み:Linux BLK-MQ/SCSI-MQ - Blog
  • 高速にGo言語のCLIツールをつくるcli-initというツールをつくった

    高速にGo言語のCLIツールをつくるcli-initというツールをつくった tcnkms/cli-initGitHub cli-initを使えば,Go言語コマンドラインツール作成時のお決まりパターンをテンプレートとして自動生成し,コア機能の記述に集中することができる. デモ 以下は簡単な動作例. 上のデモでは,addとlist,deleteというサブコマンドをもつtodoアプリケーションを生成している.生成結果は,tcnksm/sample-cli-initにある. 背景 Go言語で作られたコマンドラインツールを見ていると,codegangsta/cliというパッケージがよく使われている. これは,コマンドラインツールのインターフェースを定義するためのライブラリで,これを使えば,サブコマンドをもつコマンドラインツールを簡単につくることができる(Usageを自動で生成してくれたり,bash

  • Linux カーネルと FreeBSD カーネルの割り込み処理

    わけあって、 Linux カーネルと FreeBSD カーネルの双方で仕事をした結果、 二つのカーネルで割り込み処理の実装方法が大きく異なっていることに気づきました。 ここでは、それぞれの割り込み処理の仕組みについて、 調べたことを書いてみたいと思います。 割り込みとは、主に入出力ハードウェアによって CPU に送られる処理要求のことです。 一般に、 CPU は入出力ハードウェアよりもずっと高速に動作するので、 入出力処理を行う際に、ハードウェアの動作を待つよりも、 CPU では別の処理を行なっておき、 必要になった時にハードウェア側からの通知を受けて対応する処理を行う方が、 CPU を有効に活用できます。この入出力ハードウェア側からの通知が、割り込みと呼ばれます。 割り込みは、 CPU で動作するカーネルによって処理されることとなります。 ここで、一つの割り込み処理に時間がかかると、他の