タグ

ブックマーク / kazuhooku.hatenadiary.org (29)

  • 「Linux-DBシステム構築/運用入門」がすごい - あなたのシステム、ガラパゴス化していませんか? - kazuhoのメモ置き場

    松信さんがやってくれました。 ずいぶん前からデータベースの「正しい」構築と運用方法についてまとめたはないかなーと思ってました。自分はこれまで、様々なネットワークアプリケーションのプログラミングやデータベースの設計、チューニングを行ってきています*1が、問題が解決できたようには見えても、果たしてそれが最適な解決策だったのか不安に感じることがありました。それは、体系的な知識に欠けているからです。だから、網羅的な教科書がほしいなぁって思ってたんです。 とあるインターネットでこの前、松信さんから「いま書いてる」って話を聞いて、一部を見せていただいたりしたんですが、つい昨日、手元に届きました。やったね☆ 名前は「Linux-DBシステム構築/運用入門」。「入門」と銘打たれているものの、基礎的な知識から、なぜそうなるのか、どう応用すればいいのか、といった点まで広くカバーしている*2、全方位的な隙のな

    「Linux-DBシステム構築/運用入門」がすごい - あなたのシステム、ガラパゴス化していませんか? - kazuhoのメモ置き場
    advblog
    advblog 2009/09/16
  • C++ でヘッダファイルだけでグローバル変数を定義する方法 - kazuhoのメモ置き場

    今日、会社で出た話。C言語だとグローバル変数を (宣言ではなく) 定義するには、必ずソースファイル内を書かなければいけなくて面倒だけど、C++ なら簡単。テンプレートクラスを使えば、ヘッダファイルだけでグローバル変数を定義できる。以下、参考。 なので、テンプレートクラスのstaticメンバは異なる翻訳単位で複数回定義されて いても、全く同じ定義ならば、一回しか定義されていないのと同義です。 cppll:8425 Re: クラステンプレートのstaticメンバ変数 具体的なコードとしては、以下のような感じ (picojson から一部変更して引用)。 template <typename AlwaysBool> struct last_error_t { static std::string s; }; template <typename AlwaysBool> std::string l

    C++ でヘッダファイルだけでグローバル変数を定義する方法 - kazuhoのメモ置き場
    advblog
    advblog 2009/07/11
  • Tokyo Cloud Developers Meetup #02 に参加して - kazuhoのメモ置き場

    講演は ustream で見て、懇親会だけ参加してきた。かな〜り勉強になった。GAE Data Store 関連でよくわからないことがあったので、2点質問をした。 Q. entity を更新してから index を更新していると言うが、それだと unique secondary index はサポートできないと思うのだが、どうか。 A. unique secondary index については、別途テーブルを作って管理してください。 感想. 複数の、ノードを跨がる unique secondary index があると 2-phase commit 的な話になるので、その割り切りはアリなのかなー。 Q. range query をサポートしていないというが、sharded, sorted array なのに何故? A. 上下の両界をサポートしていないだけで、片方を指定した ascendin

    Tokyo Cloud Developers Meetup #02 に参加して - kazuhoのメモ置き場
    advblog
    advblog 2009/06/11
  • C で split をどう書くかという、昭和時代の自転車置き場の議論 - kazuhoのメモ置き場

    でまあというわけで split/join とかしたい時は 99% 速度なんて気にしてないという法則から、普通に vector かえす split がとりあえずあったりいいんじゃないかなぁとか思うわけです。 split/join - はじめてのにき(2009-03-17) C++ の場合であれば 100% 同意です。ただ、good old な C 言語の場合はどうするのがいいのかな、と思ったのでした。メモリ確保したりしたら、解放めんどくさいし。で、自分だったら、 size_t split_str(char *s, int split_char, char **list, size_t max_count) { size_t count = 0; if (count < max_count) list[count] = s; count++; for (; *s != '\0'; s++) {

    C で split をどう書くかという、昭和時代の自転車置き場の議論 - kazuhoのメモ置き場
    advblog
    advblog 2009/03/18
  • Mac OS X のドライバ色々書いた感想 - kazuhoのメモ置き場

    年をはさんで Mac OS X のドライバをいろいろ書いたりいじったりしたわけですが、感想。 イベントドライバをマルチスレッドで書けるのは、とても楽 while ループで待ち受けとか IODelay (IOKit 内の sleep) はビジーループってことになってるけど、他スレッドが走行してるような それ自体はいいこと レジューム処理とか、全ドライバの復帰用スレッドが同時に立ち上がるのが面白かった ドライバも仮想メモリ空間で動作 DMA する際とか明示的にアドレス変換が必要 TLB cache のクリアコストとかどういう風に設計してるのか OS 内のオープンソース化されてる部分とされてない部分が思ってた以上にパッチワーク状態 safe mode がないので、テスト環境は復活用 USB メモリとか必須

    Mac OS X のドライバ色々書いた感想 - kazuhoのメモ置き場
    advblog
    advblog 2009/01/07
  • 「ループは -1 まで回せ」 - kazuhoのメモ置き場

    元の話題は int vs size_t problem のあたり。符号なし型の減算ループをどう書くかという話。 実は、一定数までカウントアップするよりも 0 を通り過ぎるまでカウントダウンする方が速度とコードサイズの両面で良い、ってのは最適化の定石だと思ってました。特にアセンブリレベルでは。 自分が使ってた 68000 だと、ずばり、「レジスタの値をデクリメントして -1 じゃなければジャンプ」という DBRA 命令がある (しかも速い) し、x86 でも、 loop: ... subl $1, %esi jns loopみたいな形で、カウンタが符号なし型であっても高速なループが書けるんじゃないかと。 でもそういえば Metrowerks のコンパイラはこの最適化をしてくれなかったような気がするけど GCC (4.0.1 (Apple Inc. build 5465)) だとどうなんだろと

    「ループは -1 まで回せ」 - kazuhoのメモ置き場
    advblog
    advblog 2009/01/07
  • メモリの消費電力 - kazuhoのメモ置き場

    現在,4GバイトのDRAM DIMMは消費電力が10Wほど 「新しいNOR市場を創る」,米Spansionがサーバ向けメモリ拡張技術の詳細を発表 | 日経 xTECH(クロステック) ということなので、メモリ増設後のパストラックのサーバだと、 モジュール 電力消費 CPU 95Wx2=190W メモリ 10Wx16=160W ってことで、ほぼ同じくらい、ってことになるのかなー 参考: グリーンITとメモリの消費電力 - kazuhoのメモ置き場

    メモリの消費電力 - kazuhoのメモ置き場
    advblog
    advblog 2008/11/28
  • グリーンITとメモリの消費電力 - id:kazuhookuのメモ置き場

    昨日、GREE Engineering (SAKURA インターネットさんの講演でグリーンITの話題が出ていた) の懇親会で、環境に優しい memcached サーバを構築するには古い CPU を捨てるべきかみたいな話を id:hyoshiok さんがしてて、それに「メモリの消費電力のが重要なのでは」みたいな絡みかたをしていたわけですが (またかよ、的ですみません) で、ちょっと気になって調べてみた。以下 facts DDR → DDR2 に移行して消費電力が下がった (動作電圧が下がったため) FB-DIMM の実消費電力はアイドル時で 10W/DIMM くらい *1 DDR2 DIMM の絶対最大定格は、 18W/DIMM とか *2 Opteron の CPU slot あたり DIMM が8なサーバ組むような場合だと、メモリをかなり気にする印象があった*3けど、平均消費電力的な意

    グリーンITとメモリの消費電力 - id:kazuhookuのメモ置き場
  • Linux で共有ライブラリをビルド&配布する際に気をつけること - kazuhoのメモ置き場

    Linux の共有ライブラリをリンクするためのハッシュテーブルは、従来、.hash というセクションに収められていたのが、CentOS 5.0 や Fedora Core 6 以降? といった新しい環境では、.gnu.hash という新しいセクションに収められるようになった。 で、後者の環境で何も考えずに共有ライブラリをビルドすると、.gnu.hash セクションのみをもつものができあがるんだけど、それを Debian Etch とかに持っていくと、dlopen した際に SIGFPE で落ちてしまう。 問題を回避するためには、リンカに --hash-style=both というオプションを渡してやれば、両方のセクションが作成されるので、この問題を回避できる。 Q4M もこの問題にはまって、0.8.2 をリリースすることになりました。幸い問題を発見した人が id:hirose31 さん (

    Linux で共有ライブラリをビルド&配布する際に気をつけること - kazuhoのメモ置き場
    advblog
    advblog 2008/08/31