サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Pixel 9
laysakura.github.io
ストリーム処理とバッチ処理を統合して扱えるプログラミングモデル(あるいはデータ処理のフロントエンド)である Apache Beam が、特にGoogle Cloud DataflowやApache Flinkからの利用を背景にシェアを伸ばしています。 Apache Beamの特色として、複数のプログラミング言語のSDKを持つこと・複数のバックエンド処理系(Flinkなどを指す)を持つことが挙げられますが、これがどう実現されているのかをまとめます。 目次 前提知識: Beam入門 Exampleコードからざっくり理解 Beamのプログラミング体験 Beamのコードを見てみる Beamにおけるパイプライン実行 Beamのプログラミングモデルをちゃんと理解 前提知識: Beamでは複数種類のバックエンドが使える 前提知識: Beamプログラムは多言語で記述できる 多言語・他バックエンド対応の課題
まとめ: std::sync::RwLock::{write(), try_read()} を併用した場合には「書き込みロックを最優先」という挙動は必ずしも期待できない (LinuxではNG) Pthread の規約が挙動に自由度をもたせており、Linuxにおけるデフォルト実装では writer starvation が発生する Rustにおいて writer starvation を回避しつつ readers-writer lock を使うには parking_lot::RwLock を使うと良い 目次 背景: Readers-writer lock とは? 背景: Rustにおける readers-writer lock 背景: RwLock::write() と RwLock::try_read() 再現コード 原因分析 修正: parking_lot::RwLock を使う おわり
前回の転職エントリから3.5ヶ月、すなわちトヨタに入社してから3.5ヶ月が経ちました。 3.5ヶ月間とても気持ちよく働けたので、振り返り記事を書いていきます。座右の銘は「後ろを振り返らない」だったのに、歳を取ると振り返りがちになるんでしょうか。 インターネットの向こうの皆様にもぜひ弊社に興味を持っていただきたいので、弊社の良いなと思うところを書きます。嘘で興味持ってもらっても誰も得しないので、嫌だなと思うところもちゃんと書きます。 目次 前提: 所属とか経歴とか よかったこと1: 機会がめちゃ多い よかったこと2: 分散データ処理屋にとっては最高の戦場では? よかったこと3: 伸び伸び研究開発させてもらえる よかったこと4: 偉い人はすごい びっくりしたこと1: 同じ会社に知らない部署がすごいある びっくりしたこと2: 組織をまたいだディレクションがすごく緩い チョット嫌なこと1: コミュ
人生初の転職エントリです。お手柔らかにお願いします。 2021/09/01付でトヨタ自動車株式会社に入社しました。 大手町オフィス というソフトウェアエンジニアが多く集まる場所で、自動車のデータ収集から分析まで、エッジ(自動車)からクラウドまでの研究開発をやっていきます。 目次 転職活動の軸 業務内容(やりたいこと)について なぜトヨタを選んだか 終わりに 転職活動の軸今までの1回の新卒入社と2回の転職ではほぼ直感でズバズバ決めてきたのですが、今回の転職では自分なりにきっちりと転職活動の軸を決めて臨みました。 必須要件 年収: XX円以上(ストックオプションなどを加味して減額することあり) 業務内容: ミドルウェア以下の自分が好き&得意な領域の研究開発 嬉しい条件 一緒に働きたいと思える 人 よい 事業内容 業務内容(やりたいこと)について「ミドルウェア以下の自分が好き&得意な領域の研究開
Rustで DI (Dependency Injection)、してますか? 今日話題にするのはドメイン層でインターフェイスを定義してインフラ層でその実装を書くやつです。 例えばドメイン層で trait UserRepository を書いて、インフラ層で struct UserRepositoryImpl するやつです。 テストを書くとき、 struct UserRepositoryImpl はDBアクセスなどしてしまうので取り回しが悪いから、mock を作って fixture を入出力したいことありますよね。 Rustでそういうことやるなら mockall がオススメだよという記事です。 そんなに不満はないのですが、もしベターなやり方があったら記事末尾のコメントやTwitterやらもらえたら嬉しいです。 前職のFOLIO時代の同僚で現CADDiの むらみんさんの記事 に 外部通信のよう
/// Returns some reference to the boxed value if it is of type `T`, or /// `None` if it isn't. pub fn downcast_ref<T: Error + 'static>(&self) -> Option<&T> { ... } 「・・・2つめのなんだっけ?」 という人はぜひ読んでみてください🦀 この記事では、Rustの2種類の 'static 、 'static ライフタイム 'static ライフタイム 境界 を解説します。 目次 'static ライフタイム 'static ライフタイム 境界 おまけ: 'static じゃないライフタイム境界 記事を書いた背景 'static ライフタイムあまり難しくないです。 'static ライフタイムは、 プログラムが走っている間ずっと有効な値
あまり見ない気がするので書きました。特徴は、 lint, testなどの各ジョブが並列に動く(ジョブ実行数を多くしてないとdocker containerの立ち上げ分むしろ全体時間はロスになることもあるが…)。 Travis CI のマトリクスビルド に近いことを、 parameters: を使ってやっている。 rust-toolchain ファイル に書かれたバージョンと、 .circleci/config.yml に書かれた MSRV (Minimum Supported Rust Version) の2つでビルドしている。 cargo-readme を使ってrustdocとREADMEを比較し、どちらかがメンテされていない場合にエラーにする(お好みで)。 キャッシュ使う。 あたりです。見慣れなさそうなところはインラインコメント付けましたので参考にしてください 💁♀️ 更新履歴 2
2020年1月から、趣味エンジニアリング活動として自作CPUと自作OSをやっていく。 今回は、64ビットRISC-V (RV64I) の “Hello World” をRustで作ったので、そのリポジトリの紹介。 自作CPU & 自作OS タグで、この前後の進捗とか目指しているもの(初回記事)とかを追えるようにしている。 冒頭にも貼ったが、 のリポジトリに公開している。READMEに全部書いてあるが、特徴を抜粋すると Dockerfile を書いているので、面倒なコンパイラツールチェインなどのインストールを自前でしないで良い。 64ビットなRISC-Vターゲットへコンパイルされる(世のサンプルは32ビット版が多いのでちょっと参考になるかも)。 RustのStableビルドを使う。Nightlyビルドは使わない。 xargo を使わず cargo を使う。 Visual Studio Cod
2020年1月から、趣味エンジニアリング活動として自作CPUと自作OSをやっていく。 今回は、自作CPUのパフォーマンスベンチマークとして利用するつもりの riscv-tests の挙動を追ってみる。 関心があるのは、命令セットやOSの機能をどこまで用意してあげればベンチマークが実行できるのかという点。とりわけ、以下の観点をチェックしていく。 ISA (命令セット) RV64F (単精度浮動小数点演算), RV64D (倍精度浮動小数点演算) を利用しているベンチマークはあるか。あるとしたらどれか。 RV64V (ベクトル演算) を利用しているベンチマークはあるか。あるとしたらどれか。 RV64A (アトミック命令) を利用しているベンチマークはあるか。あるとしたらどれか。 OS機能 ヒープ領域は必要か(スタック領域のみで十分か)。 スレッドをCPUコアに割り当てるスケジューラは必要か。
Rustの特徴のひとつは、所有権(ownership)・移動(move)・借用(borrow)の概念です。これらがコンパイル時に厳格にチェックされることにより、古くから未定義挙動でプログラマを悩ませてきたダングリングポインタなどの問題がなくなり、メモリ安全性がもたらされます。 しかし一方で、自分で多少複雑なデータ構造を定義しようとする場合にはコンパイルを通すだけでもかなりの知識・力量が要求されます。 この(不定期)連載では、 Rustではじめるデータ構造とアルゴリズム と題し、プログラミングコンテストなどでよく見かける基礎的なデータ構造とアルゴリズムを、できるだけシンプルにRustで実装していきます。 &, &mut, Box, Rc, Cell, RefCell などの使い分けや、なぜそれを使う必要があるかの解説を、実例を通して行います。 今回第2回では、 二分探索木 を取り扱います。値
Rustの特徴のひとつは、所有権(ownership)・移動(move)・借用(borrow)の概念です。これらがコンパイル時に厳格にチェックされることにより、古くから未定義挙動でプログラマを悩ませてきたダングリングポインタなどの問題がなくなり、メモリ安全性がもたらされます。 しかし一方で、自分で多少複雑なデータ構造を定義しようとする場合にはコンパイルを通すだけでもかなりの知識・力量が要求されます。 この(不定期)連載では、 Rustではじめるデータ構造とアルゴリズム と題し、プログラミングコンテストなどでよく見かける基礎的なデータ構造とアルゴリズムを、できるだけシンプルにRustで実装していきます。 &, &mut, Box, Rc, Cell, RefCell などの使い分けや、なぜそれを使う必要があるかの解説を、実例を通して行います。 第1回は、最もシンプルな木構造である 二分木 を
picoCTF 2024に個人参加し、6954チーム中72位でした。 感想とwriteupを書きます。問題スクリーンショットは開催期間中のものなので、Solved数やLike数は参考程度に見てください。 picoCTFの問題は開催期間終了後もご自身で解けるはずなので是非挑戦してみてください。 続きを読む
全世界のプレイングマネージャーに捧ぐ・・・ 自分自身がプレイングマネージャー的な役割をこなす場面があるときに、「プレイヤー仕事たのし〜」「マネージメント仕事戻るの気が重いよ〜〜」となることがあります。多々あります。 そんな自分を慰めるために、自分の心に秘めた独自理論があります。名付けて です。 一生自分の胸だけに秘めるつもりだったのですが、同僚と1on1してポロッと話してみたら意外とウケたので、増長してブログに書きました。 「プレイヤーとマネージャーを『反復横跳び』?」 プレイングマネージャーのポテンシャルエナジー理論とは FAQ Future Work 終わりに 07/10追記 「プレイヤーとマネージャーを『反復横跳び』?」「プレイヤーとマネージャーを『反復横跳び』する」というフレーズをよく聞きます。聞きませんか? わかりやすく図にするとこんな感じですかね。 軽やか〜〜〜 … …… ……
活動報告。 Rustで簡潔データ構造のライブラリを3つリリースしました。 これらの簡潔データ構造に興味のある方、APIを綺麗に整備してREADMEも分かりやすく書いたつもりですので、是非スターをお願いします✌ SIGMOD 2018の論文を眺めていて、Best PaperのSuRF: Practical Range Query Filtering with Fast Succinct Triesを読んで興味を持ちました。 一致検索も範囲検索も高速にできる省メモリなデータ構造SuRFに関する論文。どうやら簡潔データ構造を使っているらしい。 簡潔データ構造というのは、データサイズが情報理論的下限と同程度に小さく、かつ非圧縮なデータ構造と比肩する高速さを兼ね備えたデータ構造です。 チート級ですが、多くの場合「データの追加や更新には対応してない」などの制約があるため、使う場面は限定されたりします。
はじめにこの記事は,前回のエントリの続きものです. まだご覧になっていない方は,前回分をお読みになってからこちらの記事を見てください. 対象プロセッサ 参考文献 perf stat でキャッシュミスを正確に測定するのは難しい perf のソースを覗いて実際に測っているものを調べる キャッシュ・メインメモリの構成を正しく把握する キャッシュミスを計算する L1データキャッシュミスの計算を例に,考え方を知る その他のレベルのキャシュミスについて キャッシュに関するイベントを計測するスクリプト スクリプトの実装上の細かい注意点 対象プロセッサこのエントリは,AMDの次のプロセッサを対象に書かれています. AMD Athlon 64 AMD Opteron AMD Phenom ただし, これらのプロセッサでは本エントリの記述がそのまま当てはまる という意味であって, 他のプロセッサでも,記憶域の
高いセキュリティが要求されるLAN内のサーバに自宅などのリモートからSSHログインしたい場合、VPNが有効です。 VPNを使うと、リモートからLAN内に仮想的に参加することができるので、プライベートIPアドレスのみが割り振られたサーバにもSSHログインできるようになります。 VPNには色々な認証方式がありますが、SSL-VPNプロトコルでクライアント証明書方式の認証を行えば、誰がいつVPNに参加したのかを高い信頼度でログに記録することができます。 本記事では、OpenVPNを使ったSSL-VPNの構築方法をAmazon EC2での構築も踏まえ詳しく紹介します。 目的: プライベートネットワークに閉じた環境にリモートアクセスしたい社内に置かれたサーバは、基本的にはインターネットからのアクセスをできないようにプライベートネットワークに置くことが多いかと思います。 「WebサーバはHTTP(S)
このページを最初にブックマークしてみませんか?
『俺とお前とlaysakura』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く