またRustでB+Treeかいたよ

Rust標準ライブラリのBTreeMapの実装コードを参考にB+Treeをフルスクラッチで実装しました。 get, insert, remove, rangeなどの基本的な操作は実装できているので、ひとまずここに記録します。 ソースコードはGitHubリポジトリに公開しています。そちらもみ…

RustでB+Treeかいたよ

2021年2月24日4月18日追記: 新しいほうがあります。 (見返すと大分筋が悪く思えてはずかしかったので再実装しました) totechite.hatenablog.com 素の二分木とかAVL木かいたりと細々と継続していた、アルゴリズムとデータ構造の学習の延長です。こいつ木しか…

Builderscon2019:0831メモdump

hyperloglogは面白い リアルタイムアクセス解析システム アクセスユーザ数 アクセスcookie数 従来: ユニークユーザー数どう出すかが課題 全ての要素を覚えるひつよう(ユニークでなければいけない - O(N)必要 - abuse耐性がない hyperloglogで解決: 確率的…

Chrome拡張つくってTwitterのUI変えた

最近TwitterのUIが変更された。 数日使ったものの未だ違和感がある。具体的には右手のカラム(トレンド表示されるとこ)が文字密度高くてごちゃごちゃっとなってるのが気になる。 はやく良くなってほしいがいつになるかわからんので、取り敢えずカラムを消すCh…

国税庁法人番号公表サイトがよさげ

これです https://www.houjin-bangou.nta.go.jp 神社のデータを集めるのに役立った。 確からしい住所データを大量にシュっと取得できてよい。 取れるデータは3種類あり、 このサイトでは、法人番号の指定を受けた者の 1.商号又は名称、 2.本店又は主たる事務…

神社の座標データセットを見つける

神社のデータを集めるために色々調べたメモ、リンク集。 「ポケGOみたいな位置情報つかったなんかつくりたい」とゆるふわな思い付きで始めたその名も寺社仏閣GOという開発テーマがあったが2週間ほどで飽いて無事プロジェクト凍結と相成った為なんらかの成果…

AVL木かいた

以前プレーンな二分探索木をかいたことがあって、今回もそんな感じ。 totechite.hatenablog.com AVL構造体にinsert, search, deleteメソッドが生えてて、それぞれNode構造体の要素の挿入と探索と削除処理のインターフェースになるみたいな雰囲気。 なおこの…

Vcpkg-rsでCargoからVcpkgをいい感じに利用する

github.com 以前SnappyをFFIで利用するプログラムをつくった際、ビルドスクリプトを書く機会があって下のようなコードを書いた Before //build.rs fn main{ // static library(*.lib) println!("cargo:rustc-link-search=native=<path_to_vcpkg>/installed/x64-windows/lib/</path_to_vcpkg>…

データ圧縮ライブラリSnappyをRustで利用する

概要 タイトル通りです。というかTRPLのここの内容まんまです。 旧版日本語訳:https://doc.rust-jp.rs/the-rust-programming-language-ja/1.9/book/ffi.html 本家:https://doc.rust-lang.org/nomicon/ffi.html いわゆるやってみた系ですがWindowsでやるとな…

Rustで二分探索木かいた

最近C言語勉強してみたりしてアルゴリズムとデータ構造に興味持ってきたんだけど、そういや二分木かいたことないなーと思いRustでやってみた。 「二分探索木」で検索して一番上にレコメンドされたサイトみながらやったけど、正直雰囲気でかいたので自分のこ…

ドキュメンテーションテストでコードスぺニットを実行しないには

事情あってテストで実行したくないコードスぺニットが出てきた時の解決記事です。 結論 no_runアトリビュートを使う。以上。詳細は以下 doc.rust-lang.org 余談 Rustにはrustdocというドキュメント自動生成ツールがある。 markdownを書くとhtmlとしていい感…

Kotlinからネイティブコードを呼んでAndroidで動かす

totechite.hatenablog.com 前回は共有ライブラリをつくって終わりました。 今回はAndroidで動かす編です。 はじめに 環境 Windows10 Home Android Studio3.2.1 Kotlin 1.3.2 この記事のゴール 共有ライブラリをAndroid/Kotlinで利用できるようになる やるこ…

RustをクロスコンパイルしてAndroidで動かす

RustのコードがAndroidで動くとか動かないとかいう話をtwitterでみて興味が湧きました。 調べたところmozillaが記事を書いててくれてたので読みながら手を動かしてみた記事です。 読みながらといっても自分はフィーリングでやってた感が多分にあるので、英語…

rustlingsでRust筋のストレッチ

github.com 今夏からRustの筋トレをしてて、いまいち所有権やポインタ周りが咀嚼できてない感があり、 良さげなチュートリアルで手を動かしたいと色々ググってたらみつけたやつです。 なにこれ Rustの基礎ドリルみたいなの 構文が間違ってたりなんか足りてな…

crates.ioのTravisCIバッジはtravis-ci".com"じゃなくてtravis-ci".org"なので気をつけよ

はまりました 要点 TravisCIにはtravis.comとtravis.orgの二つドメインがある Cargo.toml[badges] travis-ciでcrate.ioに貼れるバッジはtravis.orgのステータスをみてる .orgから.comに移行予定らしい The Travis CI Blog: Announcing support for open sour…

RustでオレオレMarkdownパーサーつくった

github.com MarkdownのString与えるとそれっぽいHTMLのStringを吐くライブラリです。 せつめい CommonMarkの仕様を見ながらよく使いそうな機能をかいつまんで実装した。 オレオレとあるのはこの仕様を網羅してないからだ。なんか細かい挙動の仕様は気にせず…

collect()とか::<T>構文とか

collect()はイテレータを指定のコレクション型にキャストするメソッド 利用場面はこんな感じだと思う //処理をして再びコレクションとして扱う let v = vec![1u8, 2, 3, 4, 5, 6, 7, 8, 9]; let closure = ここで処理内容は重要ではない ; let result: Vec<u8> =</u8>…

イテレータの要素をフィルタリングして返すやつ

イテレータの中から条件にマッチする要素をフィルタリングして、別のイテレータオブジェクトにつめこみたいとき Rubyではselectというメソッドをつかって簡単に書くことができる array = [1, 2, 3, 4, 5, 6, 7, 8, 9] a_result = array.select { |n| n%3 == …

webpackとvue-loader v15ではまって解決した

webpack4+Vue単一ファイルコンポーネント+Babelの記事を参考にしたらはまった 最新版で学ぶwebpack 4入門 - BabelでES2018環境の構築(React, Vue, Three.js, jQueryのサンプル付き) - ICS MEDIA 結論からいうとvue-loaderのv15以上を扱う場合、以下の記述が…

builderscon tokyo 2017

はじめに 今回でカンファレンス参加はCEDEC2016に次いで2回目となる。 催しが終わってからゆっくり書くつもりだったけど、 東京から大阪へのトンボ返りや少し早めの盆を迎えるなど忙しい日が連日ありクタクタで書く元気がなかった。 閉幕してから既に4日経っ…

心構え的なアレ

自己発信する習慣をつけたかったのでブログ始めてみた。 実はアカウントは2年前に既につくってあったのだが何故当時始めなかったのかは忘れた。 勢いで垢つくったがどうせ書くことないしいいやみたいな感じだったのだろう。多分 ここでは学習中のプログラミ…