サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
デスク環境を整える
blog.ymgyt.io
なぜ依存を注入するのか DIの原理・原則とパターン 著者: Steven van Deursen, Mark Seemann 訳者: 須田智之 表紙には.NETやC#の文字はないのですが、前の版は"Dependency Injection in .NET"で.NETを前提した本のようでした。 ただ、はじめにで 本書では、.NETとC#を用いて、依存注入に関する用語や指針を包括的に紹介し、描写しているのですが、本書の価値が.NETの外の世界にも届くことを望んでいます。 とありました。 RustのDIでなにか活かせる教えを期待して、読んでみました。 第1部 依存注入 (Dependency Injection: DI) の役割第1章 依存注入 (Dependency Injection: DI) の基本: 依存注入とは何なのか? なぜ使うのか? どのように使うのか?まず、保守容易性(maint
BlogをHatena blogからGithub pagesに移行しました。 Markdownで記事を書いて、Rust製のstatic site generator zolaでhtmlを生成する構成です。 本記事では、移行にあたって調べた事や行った設定について書きます。 Zolaのversionは0.16.1です。 機能の概要最初にzolaでできることの概要をまとめました。 Markdownをtemplateでhtlmに変換する仕組み Markdown中から呼び出せるDSL(shortcodes)Markdownをparseしてtemplate rendering時に参照できる変数として提供Template engine(tera)の拡張Draftsによる公開の制御機能(build対象のfilterling)Syntax highlight(codeblockからhtml+cssへの変換)
Part 1 NixOSをinstall (👈 この記事) Part 2 deply-rsでNixOS Configurationを適用 Part 3 ragenixでsecret管理 Part 4 opentelemetry-collectorとopenobserveでmetricsを取得 Part 5 CPUの温度をmetricsとして取得 本記事はNixOSとRaspberry Piで自宅serverをはじめる記事のPart 1です。 まずはRaspberry PiにNixOSをinstallするところから始めていきます。 先日、Raspberry Pi 5が発表されましたが、本記事で利用するのはRaspberry Pi 4 Model Bです。RAMは4GBですが、8にすればよかったと思っています。台数は4で始めました。 Part 1では、4台のRaspberry Pi(以下ra
本記事ではNixを利用して、linux(nixos)とmacの開発環境を宣言的に管理していく方法について書きます。 設定は一つのrepositoryで管理し、git cloneして、makers applyを実行するだけという状態を目指します。 依存していいのはnixのみとします。 現状設定できている内容は以下です。 SSH(daemonの起動, authentication方法, userのauthorized keyの設置)FontTimezoneInput methodDesktop environmentUserPackage(実行コマンド+設定file)作成したrepository Nixについてまだまだわかっていないことが多いのですが、ひとまず使い始められた感じです。 そもそもNixとは現状の自分の理解ではNixとはpackage manager + build systemと
本記事ではRustでOpentelemetryをはじめることを目標に以下の点について書きます。 OpenTelemetryの概要RustのapplicationにOpenTelemetryを導入する方法前半は公式docを読みながら登場人物を整理し、後半は実際にdocker-compose上でそれらを動かします。 またRustではtracing-opentelemetry crateを利用します。 tracingについては別の記事で基本的な仕組みについて書いたのでopentelemetry固有の処理について述べます。 sample code traceの設定については、別の記事に詳しい説明を書きました。 OpenTelemetryとは最初にOpenTelemetryについての現時点での自分の理解は以下です。 OpenTelemetryとは文脈により以下のいずれかを指す CNFNのprojec
Rust Atomics and Locks 著者: Mara Bos 楽しみにしていたRust Atomics and Locksを読んだので感想を書いていきます。 Kindle版の 2022-12-14 First Releaseを読みました。 まとめ非常におもしろく是非おすすめしたい本です。 なんといっても、一冊まるごとAtomicとLockについて書かれておりstd::sync::atomic::Orderingがわからない自分のために書かれたのではと錯覚してしまうほどに刺さりました。 また、説明の後には必ず具体例をつけてくれるので理解を確かめられながら読み進められる点もうれしいです。 特に以下のような方におすすめしたいです。(全て自分のことなのですが) atomic api(AtomicI32::{compare_exchange,load,...})を使う際のOrdering(
本記事ではRustのtracing/tracing-subscriberでログが出力される仕組みをソースコードを読みながら理解することを目指します。 具体的には以下のコードにおいてtracingがどのようにしてログを出力するかを見ていきます。 use tracing::{info, info_span}; fn main() { tracing_subscriber::fmt() .init(); let span = info_span!("span_1", key="hello"); let _guard = span.enter(); info!("hello"); } Cargo.toml [dependencies] thread_local = "1.1.4" tracing = "=0.1.35" tracing-core = "=0.1.30" tracing-subscr
Mark Richards, Neal Ford 著, 島田 浩二 訳ソフトウェアアーキテクチャの基礎 Fundamentals of Software Architecture 日本語版は紙、英語版はKindleで読みました。Kindle版は図がカラーで見れます。 本書を読んだ感想を書いていきます。 Chapter 1. IntroductionSoftware ArchitectureとはSoftware Architectureの定義が業界でよく定まっているわけではないところから話が始まります。 その理由として、Microserviceような新しいArchitectの台頭によってsoftware architectの役割が拡大していることが挙げられています。 また、本書はsoftware architectを一度作ればその後は変更の対象にならない静的なものではなく常に漸進的に変化して
tower::Service traitについての公式のGuideがとてもがとてもわかりやすかったです。 そこで本記事ではこれを辿りながらtower::Serviceがなにを抽象化しようとしているかの理解を試みます。(libraryのAPIがどうして今のsignatureに至ったのかをここまで丁寧に一歩ずつ解説してくれているのはなかなか見られないのではないでしょうか) versionは現時点の最新版(0.4.13)を対象にしています。 axumやtonicを動かす際にmiddlewareを追加しようとするとtower::Layerやtower::Service traitがでてくるかと思います。 例えば、gRPC serverを実行する以下のようなコードです。 fn trace_layer() -> tower_http::trace::TraceLayer { todo!() } ton
Rick Battagline 著入門WebAssembly The Art Of WebAssemblyの翻訳書です。 本書を読みながらサンプルコードを写経したので感想を書いていきます。 著者のWebサイトには他にもWebAssemblyについてのトピックがあります。 サンプルコードはGitHubから見れます。 canvasに3000個のobjectの衝突判定をrenderingするサンプルを動かすところまでやりました。 https://wasmbook.com/collide.html collide.htmlきっかけRustでWASMのecosystemにふれていく前に素のWASMについてなんとなくでも理解したいと思っていました。(ある程度生成されたグルーコード読めないと落ち着かない) 本書ではWATを書いてWASMに変換して動かしながらWASMの仕様を追っていくので、WASMだけを
nom nom nomこの記事ではparser combinator nom1について書きます。versionは v6.1を前提にしています。 nomは小さいparserを組み合わせて、目的とするデータ構造を入力から読み取るためのpackageです。 nushell のコードを読んでいてみかけたのが初めてでしたが他のpackageでも時々利用されているのをみるので、読めるようになるのが目標です。 そもそもparser combinatorといわれてもピンときていなかったので、自分と同じ様な方はLearning Parser Combinators With Rust がおすすめです。この記事を読んでparserを組み合わせるという意味がわかりました。 nomで組み合わせるparserは概ね以下のような関数signatureをしています。 fn parse_unicode<'a, E>(in
この記事ではRustのproconio::input! macroについて書きます。 documentやtest caseで想定されているユースケースをどうやって実現しているのかを追っていきます。 versionは記事を書いている時点で最新のp-v0.4.3 を対象にしています。 proconio::input! とはproconio とは以下のREADME にあるように競技プログラミングで利用されることを意図したIO libraryです。 Easy IO library for competitive programming. proconio provides an easy way to read values from stdin (or other source). The main is input! macro. input! は出題としてstdinからあたえられる入力を読み
この記事ではRustの非同期runtimeのひとつtokioの公式Tutorialを通じてtokioのAPIに入門していきます。 TutorialではMini-RedisというRedisのclient/serverを実装したlibraryを通してtokioとfuture/asyncの概念を学んでいきます。Redisについての前提知識は必要とされていません。 Rustでasync/awaitが使えるになりましたが、実際にアプリケーションを書くにはruntimeを選択する必要があります。今だとtokioかasync-stdが現実的な選択肢なのでしょうか。非同期のruntimeを選択すると基本的にI/Oをともなう処理はすべて(?)選択したruntimeのAPIを利用することになると思います。そのため、Rustの非同期ecosystemの恩恵にあずかるにはruntime/tokioのAPIになれて
会社のフロントエンドエンジニアの方にReact/Typescript関連のおすすめのドキュメントを聞いたところりあクトを教えてもらいました。 読んでみてとてもおもしろく、おおげさですが感動してしまったので感想を書きます。 読んだ本りあクト! TypeScriptで始めるつらくないReact開発 第3版(200912) りあクト!第3版Ⅰ. 言語・環境編Ⅱ. React基礎編Ⅲ. React応用編私とフロントエンド 普段仕事ではmovoという物流業界向けのSaaSのバックエンドでGoを書いています。 各種プロダクトのフロントエンドはReact(16.9)/Typescript(3.7)で書かれているのですが、swagger/openapiの生成までしかタッチしていないので フロントのコードを読めるようになりたいと思っていました。 ReactについてはUdemyのコースを買ってみてTODOを中
現地時間(PDT) 8/22 ~ 23、オレゴン州ポートランドで開催されたRustConfに参加してきたので、その模様を書いていこうと思います。 参加のきっかけ Rustに関わっておられる方々がにどんな人達なのか実際に見てみたいと思い、ちょうどRustConfの開催時期に夏季休暇と有給で1週間休みがとれそうだったので、思い切っていってみることにしました。 一人海外旅行もアメリカも初めてでした。 道のり 成田空港からポートランド国際空港(PDX)まで、デルタ航空の直通便が就航しており、片道10時間程度です。時差はJST - 16時間。 会場はオレゴンコンベンションセンターで、空港からMaxLightRailという電車で20分程度の距離でした。 入国審査で、目的は観光で滞在日数は4日と答えたところ、"Very Short" と言われました。 portlandの場所 PDXとオレゴンコンベンショ
このページを最初にブックマークしてみませんか?
『blog.ymgyt.io』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く