hasManyのテーブルの対象1行のみとjoinする

めずらしいSQLを見たのでメモ 1対多のテーブルとjoinして、Many側の最大、または最小のレコードのみjoin対象とする時、 SELECT * FROM master m JOIN rows r on m.id = r.master_id AND not exists (select 1 from rows r2 where r2.id > r.id and r2.master…

Rust lettreで日本語を含むメールを送信

MTA含めてハマりまくったので記録しておきます。 ローカルMTAを使う場合、 現在の最新lettre 0.10-alphaの場合、 SmtpTransport::unencrypted_localhost(); 0.9の場合、 SmtpClient::new_unencrypted_localhost().unwrap().transport(); 但し、Dockerで25por…

Rust rusoto_s3でS3読み書き用署名付きURLを取得する

rusoto_s3でS3非公開bucketへのpresign URLを取得したので記録しておきます。 参考にしたページ rusoto/s3.rs at master · rusoto/rusoto · GitHub rusoto_s3 presignで検索するも上記のテストコードしかめぼしい情報がなく、テストコードを読み進めていく。…

Rust Futureを返す非同期関数を高階関数で使用する

例えば、以下のような関数。 pub async fn func_name() -> String { "".to_string() } 実際は以下のようにimpl futures::Futureが返される関数のようになる。 pub fn func_name() -> impl futures::Future<Output = String> で、こういった関数を、高階関数の引数として与えた</output>…

Vue TypeScript マウント済みコンポーネント再利用時に非同期処理を行う。及びVuexのwatchについて

普段、非同期でデータを取ってきてデータを表示する時は、createdライフサイクルで非同期でこと足りるんだけど、$router.pushで同じコンポーネントに遷移しようとした場合、mount済みコンポーネントを再利用しようとして、created, mountedなんかが呼び出さ…

vue-router遷移時にbootstrap JQueryがリロードしないと動作しない

vue + bootstrapで構成したページ。 signin成功時に this.$router.push("/"); いつも通りvue-routerにpushするも、遷移先のページでbootstrapのJQueryが動作しない...。 ブラウザをリロードすると動作するんだけど(^_^;) ググってみるとRailsにはそういった…

Rust Diesel r2d2のpool数設定

diesel = { version = "1.4.4", features = ["postgres", "chrono", "r2d2"] } で、r2d2でconnection poolingを使用する時。 デフォルトのpool数は10個みたい。 で、actix-webなんかだと起動時にアプリケーションが4スレッド立ち上がるので、4 * 10個のセッ…