気合いで実装、どうもかわしんです。 この記事はRust Advent Calendar2023 の6日目 兼 情報検索・検索技術 Advent Calendar2023 の 6 日目です。Rust でSQLite をフルスクラッチで実装しています。github.com なぜSQLite をRust で再実装しようと思ったのかについては以前の記事で紹介しています。一言で言えば、誰もRust でSQLite を書いている人がいなかったからやってみたのですが、そもそもSQLite が強すぎるということが再実装しているうちにわかってきて絶望しています。 kawasin73.hatenablog.com 4 ヶ月前にこの記事を書いたときは簡単な SELECT 文しか実行できなかったのですが、現時点では SELECT, INSERT, DELETE 文をサポートし、express
ripgrepが圧倒的に速い。こんなに速い理由は大きく2つ。 ripgrepは、検索する必要がなさそうなファイル(たとえば、隠しファイル、バイナリファイル)をデフォルトで無視するようになっている。上記計測に使ったディレクトリを確認したところ、20万ファイル中14万ファイルは無視されるものだった。つまり、ripgrepは実質20万-14万=6万ファイルだけを検索していたのに対し、従来のgrepでは全20万ファイルを律儀に検索していたことになる。 ripgrepは、シンプルに検索のアルゴリズムが優れている。隠しファイル等を無視せず検索するオプションを指定し、検索対象となるファイル数を同じ20万に揃えて計測してみたところ、それでもripgrepは22秒で検索が終わった。 もっと厳密なベンチマークは公式を参照のこと。 https://blog.burntsushi.net/ripgrep/ デフォ

Rust Playgroundではコンピュータに何もインストールすることなく、オンラインでRustを試すことができます。 インストールせずにRustを試すRustup:Rustインストーラおよびバージョン管理ツール 一般によく採用されるRustのインストール方法は、Rustupというツールを介するものです。このツールはRustインストーラとバージョン管理ツールを兼ねたものです。 あなたはmacOSかLinuxまたはその他のUnix系OSを使用しているようです。RustupをダウンロードしてRustをインストールするには、ターミナルで以下のコマンドを実行してください。それから画面に表示される指示に従ってください。Windowsユーザである場合には、「その他のインストール方法」を参照してください。curl --proto '=https' --tlsv1.2 -sSf https://sh

実用的なプログラミングにおいて、名前と概念を結びつける「束縛」はほぼ必須の概念である。しかし、その言葉には大きな誤解と混乱が根付いていた。 事の発端となったのは「Haskellにおいては、変数は値を代入するものではなく、値に束縛するものである」という議論である*1 *2。しかし、これは大きな誤解を孕んでいる。言葉の定義に立ち返ってその誤解を解いていこう。 束縛とバインディング 実は「束縛」には二つの意味がある。一つは、数学的な意味での変数の束縛*3、もう一つは、識別子と実体の結合という意味での束縛*4だ。 前者は変数の導入と言い換えることもできる。ラムダ計算におけるラムダ抽象と変数の関係もこれである。重要なのは、これはあくまで変数とそれを導入する抽象の関係であり、変数と実体の関係ではないことだ。 「AをBに束縛する」と言った場合後者で、プログラミングの文脈ではこちらを耳にすることが多いだろ
2016年個人的に注目したいというか力を入れたいというか成行を見守りたいというか、そんな技術達を書き連ねていく。ものによっては「何を今更」と思うかもしれないがあくまで私にとって、だ。 順不同。 Apache Drill 公式。様々なデータソースに対してANSISQLでクエリを投げれるやつ。 ビッグデータの時代にETL無しで迅速にデータを分析出来るようにするために開発されてるらしい。 様々なデータソースというのは本当に凄くて、CSVとJSONをJOIN出来たりする。 あるいはTSVの生ログとRDBにあるマスタデータをJOIN出来たりする。 個人的にはデータベースから抽出したCSVにクエリを投げたい時に便利かな、と思って注目してる。viewや一時テーブルを作る権限がないデータベースだってある。 あるいは、Zookeeperを使って分散モードで実行も出来るのでBigQueryみたいなのをオンプ

おはようございます。奥さん出張中の息子達との実家生活もそろそろ終了です。kjunichiです。 TL;DR https://github.com/trusterd/libtrusterd/tree/master/examples/trusterd_rs 初めにRustも1.0がリリースされたり、rebuildfmでもRustが話題になった回もあったので、また、懲りずにやってみることにした。 libtrusterdをRustで動かそうとして学べたこと Cの文字列を扱う 以前は、 title.with_c_str(| title | unsafe { cvNamedWindow(title); } と変換していたところ、1.0以降は以下のようになった。 use withGist Search Link https://doc.rust-lang.org/std/ffi/struct.C

第7回くらいのServo Readingで話したことをざっくりまとめた。誰がどれを話したかはmangleしてあるので御容赦を。 個人的にざっくりとTwitterなどなどをクロールして得た感想だけど、GoはCompiledPythonともいうべき立ち位置な気がする。PythonとかPerlとかRubyとかシェルスクリプトとか以上C未満な箇所を、JavaやScalaよりももっとスマートに置き換える、そういう意味での「システム」開発言語。 対する?Rustは、カーネルとかブラウザエンジンとかゲームエンジンとか、ハードウェアに近いエリアの計算機資源をがしがしと叩きまくるための言語。C/C++の面倒くさい因習やエクストリームな部分をうまく隠蔽しつつ、時々必要になったらunsafeブロックで例外的に許容する。その安全性の担保として、コンパイラを使った静的チェックをCPUとメモリにものを言わせてブイブ
1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く