おんがえしの blog

作ったプログラムと調べた技術情報

2024-01-01から1年間の記事一覧

ホームページを VitePress でリニューアルした

ongaeshi.me 自分のウェブサイトを VitePress でリニューアルした。 自分がやりたいことは VitePress のデフォルトテーマの機能だけで完全に賄うことができた。一通りそろっていている。起動が早いのもよい。 レポジトリはGitHubで管理されており、push する…

Obsidian Web Clipper がすごい

https://obsidian.md/clipper 最近リリースされたばかりの新機能。ブラウザの拡張機能として使えて、Web 上の記事を簡単に Obsidian 上に取り込むことができる。Web 上にあるたくさんのドキュメントを読むのに重宝している。 iOS からも使える Safari の拡張…

実用 git 第3版を読んだ

内部実装を分かりやすく説明した2章が特に面白い。 それぞれはシンプルな blob, tree, commit の組み合わせで複雑なバージョン管理が実現できているのが分かった。 実用 Git 第3版作者:Prem Kumar Ponuthorai,Jon LoeligerオライリージャパンAmazon blob はB…

「.NETのクラスライブラリ設計 改訂新版」を買った

最近買った C# 系の本の中ではダントツでよい。巨大な API ライブラリを設計するときに気を付けることが具体的に書いてあって参考になる。 neuecc 氏が前書きを書いていて 2章が素晴らしいと書いてあったけどそのとおり2章が素晴らしかった。ここまででも十…

ブログ執筆を加速させるコマンドラインインターフェースを作成した

このブログに素早く投稿するために、個人用のコマンドラインインターフェース(CLI)を作った。 github.com 内部で blogsync を使っている。 Ruby + Thor で作成し、runa で blog という名前のコマンドとして、どこからでも実行できるようにしてある。 投稿: b…

Spotify で5分だけ音楽を聴く

例えば5分だけ休憩したいときや集中して作業したいとき、タイマーをかけるのではなく、せっかくなら Spotify で好きな音楽をかけたくなるときがある。 ところが Spotify は自動再生機能があるため、曲が終わったらそれに関連した別の曲をどんどん流してくる…

blogsync new は標準入力を受け取らない&コミットしない

前回 から引き続き blog new コマンドの改善を続けている。 直接記事をポストしたいときは標準入力から記事の中身を受け取れるのは便利だけど、 自分の場合は VSCode ですぐに編集するのでまず空の標準入力を渡してその処理をキャンセルする。 system("blogs…

プログラマは Obsidian の「読みやすい行の長さ」オプションを OFF にするとよい

Obsidian の不満として、長めのコードブロックがずっと読みにくいと思っていた。 フォーラムを覗いていたらよいオプションを見つけた。 forum.obsidian.md When the “Readable Line Length” feature is turned on, the lines are extremely short in edit mo…

blog new コマンドと blog commit コマンドの実装

自分用の blog コマンド を改善中。 git レポジトリへのコミットと blogsync を同期させる方向で実装してみた。 github.com blog new 引数は --custom-path に渡すことで URL を直接指定できるようにする。 --draft と --title はオプション。 class Main < …

blogsync 20.0.1 への更新

blogsync の置き場所を確認 PowerShell の type は Get-Command (いつも忘れる)。 > Get-Command blogsync C:\app\bin\blogsync.exe ダウンロード https://github.com/x-motemen/blogsync/releases から最新のバイナリをダウンロード。 https://github.com/x…

自分用の blog コマンドを作った

Ruby と thor を使って書いた。Runa を使って blog コマンドとして登録してある。 github.com 使い方 # 新規記事作成 $ blog new タイトル # VSCode で開く $ blog edit # blogsync push $ blog push # blogsync pull $ blog pull # 開く $ blog open # 管理…

補完の効く irb 環境を WSL 経由で Windows に導入するためのメモ

前回 で WSL に Ruby 3.3 が入ったので次は irb の設定をします。 最新の irb では型補完の追加、補完ダイアログの色変更API、デバッグに便利な機能、その他便利な機能追加などが入り、対話的なプロトタイピングやデバッグ、学習や実験の作業効率が大きく向…

WSL に rbenv 経由で Ruby 3.3 をインストールする

Windows 環境で Ruby 3.3 の補完が強化された irb や rbs-inline などの最新の機能を試したいたいときは RubyInstaller を使わずに WSL 経由で入れた方が挙動が安定していておすすめです。 また Ubuntu で snap を使って Ruby をインストールすると標準ライ…

irb の TypeCompletor を Windows で試してみる

RubyKaigi 2024 のWriting Weird Code @tompng や Exploring Reline @ima1zumi で紹介されている新しい irb の補完機能がよさそうなので手元でもインストールしてみた。 Ruby 3.3 のインストール 3.2 でも gem update irb とかすれば動くらしいけどせっかく…

Ruby で JSONCanvas 形式を読み書きできるライブラリを作りました

json_canvas は JSONCanvasは形式のファイルを Ruby で簡単に読み書きできるライブラリです。すでにいくつかの言語のライブラリはあったのですが Ruby 用が無かったので作りました。 インストール方法 json_canvas を使い始めるには、まずアプリケーションの…

読んだ - R3のコードから見る実践LINQ実装最適化コンカレントプログラミング実例

https://neue.cc/2024/05/01_R3_Presentation.html 合わせてスライドも読む。 TIPS: class と struct をエディタ上で視覚的に区別する 44 ちなみに、私はエディタ上で class と struct を視覚的に区別したいので、struct は緑色にしています(enumは黄色)。か…

C# の null 条件演算子と null 合体演算子の組み合わせを理解する

C# における if (obj?.Foo?.Bar ?? false) のような null 条件演算子と null 合体演算子を組み合わせた式が読みにくくて苦手だった。 if (obj?.Foo?.Bar ?? false) { // obj.Foo.Bar の途中に null が存在しない、 // かつ obj.Foo.Bar == true の場合に実行…

はてなブログを git レポジトリで運用する

過去のすべてのブログ記事を git レポジトリで管理することにした。 記事の管理や投稿には blogsync という Go 製のツールを使っている。 github.com blogsync をインストールしたら、以下のコマンドを叩くだけで記事の取得や投稿、更新ができる。 # レポジ…

blogsync で Windows からも直接新規記事を投稿したい

github.com を Windows からもやりたい。 PowerShell で標準入力を終了するにはCtrl+Z Enter なので・・ PS> ~/Documents/blog PS> blogsync post --draft --title=blogsync ongaeshi.hatenablog.com さてかきはじめるか... (Ctrl+Z Enter) これで OK。 ラン…

ChatGPT に Ruby など他のプログラミング言語も実行させたい

ChatGPT はたくさんの種類のプログラミング言語のコードを出力できますが、直接実行できるのは現状 Python のみとなっています。Ruby など他の言語も実行することはできないかと考えていました。 1つのアイデアとして思いついたのは ChatGPT に生成したコー…

Obsidian で情報カードを作るための 5 ステップ

Obsidian では普段デイリーノートを中心にメモを取っていますが、それらの情報を元に、より密度の高い情報カードを作りたくなることがあります。作成したカードを元にブログや SNS に記事を投稿します。 今日は私がどのように情報を整理しているかをシェアし…