タグ

ブックマーク / mikio.hatenablog.com (3)

  • Go言語勉強中 - 豪鬼メモ

    TkrzwのGo言語インターフェイスを鋭意製作中であるが、今更ながら、「プログラミング言語Go」を読んだ。20年前に愛読した「プログラミング言語C」や「プログラミング作法」や「UNIXプログラミング環境」のカーニハン先生が著者の一人なので、なんか懐かしい気分になった。Go言語の概要についてはこれで理解したのだが、そので詳述されていなかった点でいくつかはまったので、メモしておく。 GoからC++言語のライブラリを直接呼ぶことはできないが、C言語の関数は直接呼ぶことができる。そのためにはcgoという機能を使う。家のチュートリアルを読めば概要はつかめる。ユーザの環境に自動的にインストールできるようにするためには、"#cgo pkg-config" により、pkg-config経由でコンパイルやリンクのオプションが参照できるようにしておかねばならない。 Goオブジェクトのポインタをuintpt

    Go言語勉強中 - 豪鬼メモ
  • DBサービスを作ろう その0 準備 - 豪鬼メモ

    Tkrzw体でやりたい事をやり切ったので、データベースサービスでも作ってみよう。既にガチなデータベースサービスは山ほどあるので、レッドオーシャンに敢えて飛び込むのも気が引ける。とはいえ、gRPCを使うとかなり気軽に高性能なサービスを実装できるので、日曜大工のつもりで取り組む。おそらく10回くらいの連載になるだろうか。これからしばらくデータベースサービスの設計と実装について述べていきたい。 初回は、gRPCの基的な使い方を確認する。インストール方法、ビルドの自動化、APIの定義、実装、そしてテストまでの一連の流れを追う。 まず技術選定についてだが、これはもうgRPC一択なのだ。Tokyo TyrantやKyoto Tycoonでは、socketとかselectとかpollとかepollとかkqueueとかいったシステムコールを駆使して自分でRPC機能を実装していたが、面倒くさすぎる。競争

    DBサービスを作ろう その0 準備 - 豪鬼メモ
  • C++/Java/Ruby/Pythonの並列I/O用ファイルインターフェイス - 豪鬼メモ

    ファイルの読み書きをマルチスレッドで並列に行うための仕組みを、各種プログラミング言語(C++、C、JavaRubyPython)で利用できるようにライブラリを整備した。メモリマップI/O、通常I/O、ダイレクトI/Oを同じインターフェイスで利用できる。Tkrzw-0.9.38からこの機能が利用できる。メモリマップI/Oと通常I/Oは全ての処理系で、ダイレクトI/OはLinuxMacWindowsで利用できる。 データベースライブラリTkrzwはマルチスレッド環境での並列処理性能を重視して開発しているが、そこで利用しているファイル層の機能を直接利用できるようにAPIを整備した。データベースとしてではなく、単なるフラットなファイルとして利用するためのAPIである。テキストにもバイナリにも利用できる。 C++ API C API Java API Python API Ruby API

    C++/Java/Ruby/Pythonの並列I/O用ファイルインターフェイス - 豪鬼メモ
  • 1