豪鬼メモ

一瞬千撃

圧縮アルゴリズムの事前調査

データベースにレコードを格納する際に可逆圧縮をかけると便利なことがある。 データベースファイルが小さくなり、また入出力のデータ量が減るので早くなることすらある。圧縮アルゴリズムを自分で実装するのは手に余るので、既存の実装を組み込むのが現実的…

マルチシャードのトランザクション

TkrzwにはShardDBMというクラスがあり、シャーディングで分割した複数のデータベースファイルをあたかも単一のデータベースであるかのように透過的に扱うことができる。複数マシンに分散しないローカル環境でも、シャーディングを施すと、並列処理性能や再構…

CRCをデータベースに内蔵する

データベースにレコード単位のCRCを内蔵することで、データが破損した際の検出率を高められるようにした。ハッシュ関数の性能測定とそれを組み込んだ際のデータベースの性能測定もして、実用になることを確かめた。これにより、Synchronizeを呼ばない運用で…

壊れないデータベースと壊れにくいデータベース

前回までの議論で、Tkrzwを追記更新モードで運用した場合、トランザクションのACID特性を満たすデータベースとして機能することを確かめた。Synchronizeした時に状態が決定してファイルに固定され、次にSynchronizeするまでにプロセスが死んだなら、直前にSy…

トランザクションのACID特性と自動リストア機能

Tkrzwにトランザクション機能を実装したので、ACID特性について確認しておきたい。AとCとIは正常系のみを検討するのであれば容易に達成されるのだが、問題はDだ。Durability=耐久性=耐障害性がちゃんと確保されているかどうか、仕様を説明しながら確認して…

マルチレコードトランザクション機能

Tkrzwでマルチレコードトランザクションを実装してみたという話。シングルレコードトランザクション、つまり同一のレコードに複数の操作をアトミックに行う機能は従来から実装されていた。それを複数のレコードでもできるようにしたのがマルチレコードトラン…

はじめてのDBM

データベースライブラリTkrzwの改良を地道に続けて、そろそろ1.0にしようかなと思っているところだ。日本語の資料がないとなかなか日本では使ってもらえないということで、書いてみた。データベース関連のアルゴリズムの基礎や検索エンジンなどの事例につい…

I/Oのバッチ化によるDBの性能改善

前回までの一連の実験で、ダイレクトI/Oを使ってデータベースを運用する際の性能特性が見えてきた。そこで洗い出された課題を解決し、おそらくは最善の効率に到達した。性能評価の結果としては、ダイレクトI/Oを使ったデータベースの性能を、書き込みが9.3倍…

各種データベース実装と各種ファイル実装の性能比較

dependency injectionで任意のファイル実装を利用できるTkrzwだが、ダイレクトI/Oのファイル実装を各種のデータベースに組み込んだのが前回までの物語である。Tkrzw 0.9.18をリリースしたので、お試しいただきたい。今回は、完成した実装の性能を測定する。…

ダイレクトI/O用のキャッシュ実装

ハードウェアと直接お話するダイレクトI/Oが遅いのは仕方ないことだが、アプリケーション層で小さなキャッシュ機構を使うと大分マシになるという話。

DBMのダイレクトI/O対応

ファイルシステムのキャッシュ機構を介さずにストレージデバイスに対して直接入出力を行う機能をダイレクトI/Oなどと言ったりするが、それをデータベースライブラリTkrzwからも使えるようにした。LinuxとWindowsで使える。その前提として、アドレスとサイズ…

alloc_alignedの野良実装

デバイス等とやり取りするためや、他の様々な理由で、ある数の倍数にアラインメントされたメモリ領域を動的に確保する必要が生じることがある。mallocフレームワーク上でそれを行うのが標準C++のalloc_alignedという関数なのだが、それはすべての処理系でサ…

TkrzwのWindows対応 その弍

データベースライブラリTkrzwのWindows対応の実装が一通り完了した。前回、C++標準のstd::fstreamによるダミーのファイル入出力を使ってWindows対応した話をしたが、今回はそれを本番の真面目な実装に置き換える。メモリマップIOと位置指定IOの実装と性能評…

TkrzwのWindows対応 その壱

やるやる言ってやってなかったデータベースライブラリTkrzwのWindows対応を始めた。実装は何段階かに分けて行うが、とりあえず全機能が動くというところまでは来た。ここで作業の方針と進捗についてメモっておこう。

スター機能付きポップアップ辞書

真にフリーなポップアップ辞書を改良して、任意の見出し語に星印(スター)をつけられるようにした。これで多読と語彙力強化を高いレベルで両立できる。

TkrzwのMac対応とSetAndGet

要望があったので、データベースライブラリTkrzwを久しぶりに更新して0.9.5をリリースした。Macでビルドできないという不具合を修正して、SetAndGetというマニアックな機能をつけた。瑣末な話だが、メモがてら経緯を書いておこう。

ポップアップ辞書の実装の解説

Chrome拡張機能としてポップアップ辞書を作成して公開したが、その実装方法についてメモがてら書いておこう。Chrome拡張機能としての実装をする前に、まずは各ページに明示的にロードしてポップアップ辞書として機能するJavaScriptのライブラリを実装する。…

武蔵野サイクリング

ポタリングって和製英語らしいので、今後は普通にサイクリングと称することにする。先日、天気が良かったので、目黒から北東方向に自転車を流してみた。玉川上水に沿いの道が緑豊かで気持ちよかったので、そこをずずっと遡って行った。

ポップアップ英和辞書のChrome拡張機能

WiktionaryとWordNetから作った真にフリーな英和辞書を、Chromeブラウザのポップアップ辞書として利用できるように、拡張機能を作った。これをインストールすると、任意のWebページ内の任意の言葉を選択すると、その意味を辞書で調べて、結果がポップアップ…

各地の桜 その弍

子供は相変わらずレゴブーストに夢中である。プログラム組むと、「音に反応して超信地旋回を決めてから躍進射撃」みたいな挙動ができてかなり面白い。それはさておき、今日も天気が良かったので、ブロンプトンを駆ってぶらぶらしてみた。

各地の桜

子達が懐かなくなってきたので写真を撮る機会もめっきり減った今日このごろだが、桜が満開なのでカメラを持ち出してみた。ゆっくりサイクリングすることをポタリングというらしいのだが、愛車ブロンプトンに乗って各所をポタリングしてみた。これは目黒天空…

Wiktionaryの語義を使ったルールベースの訳語伝搬

Wiktionary英語版の語義説明を利用してWiktionary日本語版と日本語WordNetの訳語を伝搬させてカバー率を向上させる方法について述べる。これを行うと、新たに1万語くらいに訳語を付与することができ、かなりの難解語にも訳語が割り当てられることになる。こ…

和英方向の語彙力診断

英単語の意味を知っているかどうか聞くことで語彙力を測定する診断サービスについて前回述べた。今回は、逆方向の質問を実装した。すなわち、日本語の意味を提示して、それに該当する英語の単語または熟語を選んでもらうというものだ。どちらの方が語彙力を…

英語力年齢診断・改

英単語の意味を知っているかどうかの質問に答えていくと語彙力が診断できるサービスを作った。英単語の獲得年齢データベースを使って、ネイティブ英語話者の何歳程度の語彙力に相当するかを検証するものだ。まずは、実際のサービスを使ってみて欲しい。

Word Wise風の英文自動和訳注釈サービス

長い英文を読みたいが、語彙力が足りない。未知語に会う度にいちいち辞書を引いていたら時間がかかって仕方ない。そんなあなたのために、英文の中の全ての単語とフレーズの意味を辞書で予め調べて注釈をつけるサービスを作った。これで赤毛のアンやトムソー…

日英対訳コーパスから自動的に英和辞書を作る

英和辞書を自動生成するにあたって、対訳コーパスを使って自動に対訳フレーズを抜き出す方法についてメモがてら説明する。

レベル別の英単語リストの自動生成

レベル別の単語集を自動生成するという目標を持って、今までいろんなデータを集めてきた。必要なデータは全て揃っているが、レベル別の単語集という体裁に整える前に、辞書内の単語を重要順に並び替えて表示する機能を作ってみた。だいたい直感に合う結果に…

Wikipediaから作るN-gramフレーズ頻度DB

Wikipediaの英語版と日本語版のデータを解析して、単語Nグラムの生起確率のデータベースを作ってみた話。このデータは獲得年齢の推定にも使われるし、他にも様々な場合に単語やフレーズをポピュラーな順に並べるのに利用できる。誰かの役に立つかもしれない…

英単語の獲得年齢の分析

英単語の獲得年齢の統計値を辞書に統合してみた。データがない語に関しては関連語から推定することで、主要な語のほとんどをカバーすることができた。このデータを使うと、実力別の英単語集や実力診断テストなどを自動生成することができるようになる。

和英辞書の語義正規化と伝搬による再現率向上

WordNetとWiktionaryから作った統合英和辞書を転置して和英辞書を作る際に、訳語を正規化するとともに、関連語の訳語を伝搬して、再現率を高めようという話。公開運用サイトはこちらなので、使ってみていただきたい。これで再現率に関しては英辞郎に匹敵する…