BigQuery Emulatorとクエリパラメータ

BigQueryのクエリ(Google SQL構文)にはParameterized Queryという機能があり、クエリに任意の式を埋め込むことができます。 cloud.google.com 上記のページより引用すると以下の@genderや@statesのように、@識別子の形式でクエリを書き、実行時にパラメータ…

Log Structured Storageを重ねて使うと起きる問題とLLAMAについて調べたことまとめ

Database Internalsを読んでて、7章の最後 Log Stacking のところで疑問が多くていろいろ調べていたなかのひとつ。 HSEとは何か - Speaker Deck LLAMAの話ではないけど同じような話としてこの↑資料が良かったのでこれを見よう。 Log Structured Storageを重…

RailsではなくRocketでHotwire(Turbo)する その1

HotwireというかTurboは単なるJavaScriptのライブラリなので、Railsじゃないと使えないということはない。Railsでturbo-rails gemを使うととても便利に使えることは間違いないけど。 ということでRust製のウェブアプリケーションフレームワークのRocketでア…

HotwireのTurbo Frame, Turbo Streamでテーブル ( table > tbody ) に行 ( tr )を追加するにはどうしたらよいか

身も蓋もない話ですが、できないのでテーブルのようなDOMを他のエレメントで作りましょう。 tbody 要素のドキュメント に書いてあるように、tbody要素の配下には0個以上のtr要素しか置けない。無理やり置いても外に出されてしまう。 そんなこと言ったらul要…

RocketでカスタムContentTypeを作りレスポンスヘッダに設定する

Responses - Rocket Programming Guide ドキュメントの Responses のページの Rocket Responders にある通り、 Content という Responder が ContentType を書き換えるために使える。 テンプレートをレンダリングして返す場合は Content<Template> を返すように定義し</template>…

fwrite(): send of xx bytes failed with errno=32 Broken pipe のエラーはkeepaliveが切れちゃうせいだった

XML RPC でサーバとやり取りしている PHP のバッチで、fwrite(): send of xx bytes failed with errno=32 Broken pipe のエラーが起きて原因がわからず困ってたことがあった。 そのバッチでは XML RPC のクライアントを最初に作って、それをずっと使いまわし…

Windows サービス関連のメモ

タスクスケジューラ 起動方法 起動時に実行したいなどイベントドリブンなタスクはタスクスケジューラから登録する(多分 タスクスケジューラはtaskschd.mscなので、ファイル名を指定して実行する powershellのスクリプトをタスクとして登録する .batはわから…

久々のwindows

Powershell7 インストール GitHub - PowerShell/PowerShell: PowerShell for every system! リリースからダウンロードしてインストール keybindをlinuxっぽく PSReadLine は最初から入ってたっぽいので↓実行する Set-PSReadLineOption -EditMode Emacs って…

そんなことにはまるんだってやつ C++編その1

久々にビビるレベルの内容で本当にわからなくて長時間ハマったので記念にメモ。本当にポインタがわか これがコンパイルエラーで小一時間ハマったんだけど、isはmyarrayじゃなくてmyarray*なのでオーバーロードした[]が呼ばれてるわけじゃないので当然…ポイン…

systemtap で udp の daddr, dport が 0.0.0.0 や 0 に見えることがあるのはなんでなのか

(udp だけど)tcpdump すれば当然宛先の ip address や port が見えるが、systemtap で daddr, dport を printf してみると daddr が 0.0.0.0, dport が 0 に見えることがある。 名前解決のトレースをしていて、通常名前解決をしているときは宛先ポートが 53 …

stackprof の wall mode で rails のプロファイルをとろうとしたら mysql の接続エラーがたくさん出てホストが mysql にブロックされてしまう話

起きたこととしては stackprofをrack-stackprofで使って rails アプリのプロファイルを取ろうとした stackprof は wall mode で動いてる すると、Host 'x.x.x.x' is blocked because of many connection errors が発生した 起動後しばらくは正常に動いている…

mac で dev_appserver.py を再起動しないと変更が反映されなかった

OSは mac, runtime は python27 のお話。 Google Cloud SDK のバージョンは 228.0.0。 components のバージョンは最後に書いた 結論から 起動してるGAEアプリケーションが . で始まるディレクトリ以下にあるとダメ 僕の場合は ghq を使って $HOME/.ghq/hoge/…

facebookの自動テストツールの論文を読んだメモ

Facebook がバグの自動修正ツールを発表したという話があり、 code.fb.com その紹介記事を見て、 Sapienz のほうは論文が発表されているという話だったので読んでみた。軽く。 バグの自動修正ツールのほうはSapFixというやつで、バグを修正するためにはまず…

setxkbmapがわからない

xmodmapがもうダメダメなので、 setxkbmap を使うことにした。 しかし、man を読んでも自分で設定する方法がよくわからん… 一応安定のArchLinux wikiで設定方法は載ってるんだが… Xorg でのキーボード設定 - ArchWiki XkbOptionsに色々書き足すか、設定ファ…

Brainf*ckのインタープリタとJITコンパイラ

Adventures in JIT compilation: Part 1 - an interpreter - Eli Bendersky's website Adventures in JIT compilation: Part 2 - an x64 JIT - Eli Bendersky's website これらの記事を読み、part2まで真似して書いてみた。 brainf*ck jit · GitHub 記事では…

Rustで実行可能なメモリを確保

最近JITコンパイラを書いていて、実行可能なメモリ領域に命令列を直接書き込んで実行、ということがしたかった。 cならmmapなどで、PROT_EXECフラグを立ててメモリを確保するか、mprotectでPROT_EXECフラグを立ててやればいいという認識。 まず思いついたの…

windowsからvirtualboxで別パーティションのubuntuを起動したいけどできない話

やりたいことは、日本語だと これとか、 Windows 上の VirtualBox で実パーティション上の Linux を起動する:中年の主張:So-netブログ これとか、 Windons7のVirtualBoxでデュアルブート用のraw partitionにあるLinuxを起動させる | @knok blog にかかれて…

nginx + ngx_mruby を homebrew でインストールしたかった

結論からいうとできたんだけど、ちょっとハマった。 ちょっと、本当にちょっとだけ ngx_mruby 試してみたくて、簡単に入ればいいなーと思って、探して↓を見て喜々として試したわけだけど ngx_mrubyがHomebrewで超簡単にインストールできるようになった - 人…

docker で Run `bundle install` to install missing gems になっちゃう件

Docker で Gemfile に変更があったときだけ bundle install を実行するために、 Gemfile と Gemfile.lock を先に ADD しておいて bundle install を先に実行しておくのはもはや常識だと思う。 ちょいちょい例にこういうのがある。(ここでは Dockerfile とア…

Rust でマルチスレッドプログラミングのメモ

Rust でのマルチスレッドの勉強のためにぷよぷよっぽいゲームを書いているので、学んだことを書いておく。 Rust ではデータ競合は起こせない Rust はデータ競合 ( data races ) がないことを保証している。( data races であって race conditions ではない…

Rustでぷよぷよ風ゲーム

最近遊んでいたおもちゃが形になってきた。 こんなん。ターミナルでプレイするぷよぷよ風ゲームのようなもの。(得点とかないし、まだゲームオーバーすらない) (だいぶカクカクしているのは agif の変換の仕方の問題が大きい) Rust でマルチスレッドでプ…

Rust メモ Windows向けにクロスコンパイル

Windowsでも使いたいコードがあり、Linux上でWindows向けにクロスコンパイルをしてみたメモ。 rustupを使うと簡単にクロスコンパイルができる。 windows向けのtargetを探す $ rustup target list | grep win i586-pc-windows-msvc i686-apple-darwin i686-pc…

Rust メモ String に対して match

Rust の match は非常に強力。 様々なパターンマッチや、 destructuring が使えて非常に便利 詳しくは https://doc.rust-lang.org/book/match.html Patterns たまに String な変数に対して match を使いたいことがある。 が、こんなふうにやろうとしてももち…

Rust メモ Option | 値を取得して None で置き換える

Option を持つ構造体を扱っているときなどに、Option の値を取得してその後 None で置き換えたいことがある。 そんなときは take メソッド が使える。 Rust Playground fn main() { let mut x = Some(10); // Some(v) に対して呼び出すと Some(v) が返ってく…

Rust メモ リテラル

Reference ここにまとまっている https://doc.rust-lang.org/reference.html#literals 文字列関連 文字列関連は6つ 文字リテラル 文字列リテラル Raw文字列リテラル ( rの後に0個以上の任意個の # と " で囲う ) バイトリテラル バイト文字列リテラル Rawバ…

Rust メモ 文字列

文字列 &str と String がある。 通常の文字列リテラルは String ではなく &str. ( staticな生存期間を持つので &'static str. ) Raw String Literal https://doc.rust-lang.org/reference.html#raw-string-literals いわゆるヒアドキュメント的なもの。 複…

TCPのTail Loss Probeと再送周りについて少し

仕様は RFC にはないっぽくて(?) 2013年にgoogleの方々が出してるinternet draft で定義されている模様。 Tail Loss Probe は、一連の送信パケットの最後のパケットがロスした場合に、送信側が再送タイムアウトを待たずにロスを検知して回復することを目的と…

アイドルとかにハマる人の気持ちが少しわかった気がする

わからないしわかった気がするというのもおこがましいが少しわかったような気がする。 去年もろくなブログ書いてないが、今年も書く気はなく、しかし今年は俺ももっとぴょんぴょんしていきたい(知らない

Laravel でログのフォーマット変えたり Monolog の Processor 追加したり

もう Laravel から Rails に移行する決意をしたもののめんどくさくて実際は放置、そうしてる間にもログをみることはあって不便だったりして仕方なくいじる。 やりたいのは ユーザがログインしてたらエラーログに user id を extra に追加する extra を表示す…

Vue.js の observe あたり雑に追う

(まとまりのなさがひどすぎてアレで放置してたらもう1.0.7になってますはい) もう 1.0.4 になっとるやないけ 1.0.4 見ますはい。 データバインディングをどう実現しているのかが気になるのでその辺。 データバインディングといえば Observer ということで…