<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Memos - lmlab.net</title>
    <link>https://lmlab.net/memos.html</link>
    <description>Memo posts from lmlab.net</description>
    <language>ja</language>
    <atom:link href="https://lmlab.net/memos.xml" rel="self" type="application/rss+xml" />
    

    <item>
      <title>Ruby hidden tools</title>
      <link>https://lmlab.net/posts/2026/2026-09-13-ruby-hidden-tools.html</link>
      <guid>https://lmlab.net/posts/2026/2026-09-13-ruby-hidden-tools.html</guid>
      <pubDate>Sun, 13 Sep 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[ふと思い立ってAIにまとめて貰った記事です。
実はあなたの開発を裏で支える「意外なところのRuby」
Webだけじゃない。他言語のエンジニアも毎日叩いているCLIの裏側
はじめに
「Ruby」と聞いて多くのエンジニアが思い浮かべるのは、WebアプリケーションフレームワークのRuby on Rails (https://rubyonrails.org/)や、GitHub、Shopify、クックパッドといった国内外のWebサービスではないでしょうか。
しかし、Rubyの活躍の場はWebアプリケーショ]]></description>
      
      <category>ruby</category>
      
      
      <enclosure url="https://lmlab.net/posts/2026/2026-09-13-ruby-hidden-tools.jpg" type="image/jpeg" length="0"/>
      
    </item>

    <item>
      <title>&#39;input type=&quot;datetime-local&quot; step base の落とし穴&#39;</title>
      <link>https://lmlab.net/posts/2026/2026-09-07-datetime-local-step-base-gotcha.html</link>
      <guid>https://lmlab.net/posts/2026/2026-09-07-datetime-local-step-base-gotcha.html</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[Rails のある編集画面で「時刻を 13:00:00 にしたいのに、ブラウザが
&quot;正しい値を選択してください。最も近い正しい値は 13:00:42 です&quot; のような端数秒を
勧めてくる」という現象に出くわしました。原因を追うと &lt;input type=&quot;datetime-local&quot;&gt;
の step base（刻みの基準点） の仕様に行き着きましたので、最小再現込みでまとめます。
症状
編集フォームで日時を変更しようとすると、キリのよい HH]]></description>
      
      <category>rails</category>
      
      <category>html</category>
      
      
    </item>

    <item>
      <title>How to install github cli on raspberrypi</title>
      <link>https://lmlab.net/posts/2026/2026-08-26-how-to-install-github-cli-on-raspberrypi.html</link>
      <guid>https://lmlab.net/posts/2026/2026-08-26-how-to-install-github-cli-on-raspberrypi.html</guid>
      <pubDate>Wed, 26 Aug 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[
(type -p wget &gt;/dev/null || (sudo apt update &amp;&amp; sudo apt install wget -y)) \
    &amp;&amp; sudo mkdir -p -m 755 /etc/apt/keyrings \
    &amp;&amp; out=$(mktemp) &amp;&amp; wget -nv -O$out https://cli.github.com/packages/githubcli-archive]]></description>
      
      <category>linux</category>
      
      <category>git</category>
      
      
    </item>

    <item>
      <title>仮想マシンのボリューム拡張手順メモ</title>
      <link>https://lmlab.net/posts/2026/2026-08-03-extend-volume-on-virtual-machine.html</link>
      <guid>https://lmlab.net/posts/2026/2026-08-03-extend-volume-on-virtual-machine.html</guid>
      <pubDate>Mon, 03 Aug 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[オンプレミスで運用している仮想マシンのディスクを拡張した際、OS上でのボリューム拡張手順のメモです。仮想マシンはUbuntu 24.04 LTSで、ディスクはLVM構成になっています。さくらのVPSのディスク拡張手順 (https://manual.sakura.ad.jp/vps/server/disk-expansion/ubuntu-24.04.html)も参考にしながら実施しました。
```
現状確認:lsblkでディスク構成を把握。/dev/sdaが唯一の物理ディスクで、
その中のsd]]></description>
      
      <category>linux</category>
      
      
    </item>

    <item>
      <title>現在時を変更するヘルパー(travel_to)</title>
      <link>https://lmlab.net/posts/2026/2026-06-25-travel-to-helper.html</link>
      <guid>https://lmlab.net/posts/2026/2026-06-25-travel-to-helper.html</guid>
      <pubDate>Thu, 25 Jun 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[今日のClaudeはハルシネーションだらけで、いまいち冴えてないのですが、それでも時々自分の知らない便利ツールを教えてくれる頼れる相棒です。travel_to(travel_back)を使うと現在時刻を任意の値にセットしたかのような操作が可能です。
```
require &quot;activesupport/testing/timehelpers&quot;
include ActiveSupport::Testing::TimeHelpers
travel_to Date.new(2026]]></description>
      
      <category>ruby</category>
      
      <category>rails</category>
      
      
    </item>

    <item>
      <title>prremoteでお絵描き</title>
      <link>https://lmlab.net/posts/2026/2026-06-23-drawing-with-prremote.html</link>
      <guid>https://lmlab.net/posts/2026/2026-06-23-drawing-with-prremote.html</guid>
      <pubDate>Tue, 23 Jun 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[prremote (https://github.com/lumbermill/prremote) は Raspberry Pi Pico W / M5GO（ESP32）に mruby/c ランタイムを載せ、
PC から Ruby スクリプトを転送して即実行できるツールです。M5GO の 320×240 LCD に絵を描く実験をしたので、アプローチをまとめます。
プリミティブ描画
LCD クラスは fill_rect / fill などの低レベル API を提供しています。
ruby
lcd =]]></description>
      
      <category>ruby</category>
      
      <category>esp32</category>
      
      
      <enclosure url="https://lmlab.net/posts/2026/2026-06-23-baikin.jpg" type="image/jpeg" length="0"/>
      
    </item>

    <item>
      <title>nginxを使ってみた（Kamal挫折からの続き）</title>
      <link>https://lmlab.net/posts/2026/2026-06-19-using-nginx-as-proxy.html</link>
      <guid>https://lmlab.net/posts/2026/2026-06-19-using-nginx-as-proxy.html</guid>
      <pubDate>Fri, 19 Jun 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[前回の記事 (/posts/2026/2026-06-17-tried-kamal-and-gave-up.html)では、Raspberry PiでKamalの検証を行い、最終的にDockerを使わない構成へ方針転換することにしました。今回は、その次のステップとして、Nginxのインストールから、複数のPumaアプリケーションへの繋ぎ込み、SSL証明書の発行までの一連の手順をまとめます。
検証対象は前回と同じく、SQLiteを使うtest1とMariaDBを使うtest2の2本のRailsアプ]]></description>
      
      <category>linux</category>
      
      <category>rails</category>
      
      
    </item>

    <item>
      <title>kamalを試してみた（そして諦めた…）</title>
      <link>https://lmlab.net/posts/2026/2026-06-17-tried-kamal-and-gave-up.html</link>
      <guid>https://lmlab.net/posts/2026/2026-06-17-tried-kamal-and-gave-up.html</guid>
      <pubDate>Wed, 17 Jun 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[背景
長年Apache + Passengerで運用してきたRailsアプリ群を新環境へ移行することにしました。ちょうど良い機会なので、Passengerからの脱却も同時に検証したいと考え、Kamal 2を試すことにしました。検証環境にはオフィスのRaspberry Piを使いました。クラウドで使い捨てのVMを立てる案もありましたが、無料で何度でも試せる点を優先しました。検証対象は2本のRailsアプリ（test1: SQLite、test2: MariaDB）で、別々のドメインに割り当てる構成]]></description>
      
      <category>rails</category>
      
      <category>linux</category>
      
      <category>docker</category>
      
      
    </item>

    <item>
      <title>Mermaidを試してみた</title>
      <link>https://lmlab.net/posts/2026/2026-06-08-try-mermaid.html</link>
      <guid>https://lmlab.net/posts/2026/2026-06-08-try-mermaid.html</guid>
      <pubDate>Mon, 08 Jun 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[Mermaid (https://mermaid.js.org/) はテキストでフロー図やシーケンス図を書けるライブラリです。Markdown のコードブロックに ` ``mermaid と書くと、ソースと描画結果を並べて表示します。
フローチャート
処理の流れを表現します。 、LR は左から右、TD にすると上から下になります。

flowchart LR
    A[スタート] --&gt; B{条件分岐}
    B -- Yes --&gt; C[処理A]
    B -- No --&]]></description>
      
      <category>javascript</category>
      
      <category>html</category>
      
      
    </item>

    <item>
      <title>Phusion PassengerのリポジトリGPGキーを更新する</title>
      <link>https://lmlab.net/posts/2026/2026-06-06-update-phusionpassenger-key.html</link>
      <guid>https://lmlab.net/posts/2026/2026-06-06-update-phusionpassenger-key.html</guid>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[To get the update from phusionpassenger.com, you may need to update the key.

curl https://oss-binaries.phusionpassenger.com/auto-software-signing-gpg-key-2025.txt | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/phusion.gpg &gt;/dev/null

2024年に更新さ]]></description>
      
      
    </item>

    <item>
      <title>Raspberry PiでAmazon Musicを再生できない</title>
      <link>https://lmlab.net/posts/2026/2026-06-01-amazon-music-not-work-on-raspberry-pi.html</link>
      <guid>https://lmlab.net/posts/2026/2026-06-01-amazon-music-not-work-on-raspberry-pi.html</guid>
      <pubDate>Mon, 01 Jun 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[YouTube Music(Premium)からAmazon Music Unlimitedに乗り換えたら、Raspberry Piで音楽を再生できなくなってしまいました。
32bit版のChromiumを入れることで回避できるようです（iPhoneを使うことにしたので、実際には試してません）。
https://yokahiyori.com/raspberry-pi-os64bitvideo_music/#amazon-prime-video%E5%86%8D%E7%94%9F%E3%81%AB]]></description>
      
      <category>linux</category>
      
      
    </item>

    <item>
      <title>Bootstrap template</title>
      <link>https://lmlab.net/posts/2026/2026-05-26-bootstrap-template.html</link>
      <guid>https://lmlab.net/posts/2026/2026-05-26-bootstrap-template.html</guid>
      <pubDate>Tue, 26 May 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[Bootstrapのサンプルではscriptタグをbodyタグの末尾に書くようになっていることが多いのですが、ここがrailsのturboと相性が悪く、ドロップダウンメニューの動作不良などの原因となっていました。headに移動してdefer属性をつけてあげるのが、どうやら良さそうです。

&lt;!doctype html&gt;
&lt;html lang=&quot;ja&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;utf-8&qu]]></description>
      
      <category>rails</category>
      
      <category>html</category>
      
      
    </item>

    <item>
      <title>噂を作る方法</title>
      <link>https://lmlab.net/posts/2026/2026-05-22-making-romors.html</link>
      <guid>https://lmlab.net/posts/2026/2026-05-22-making-romors.html</guid>
      <pubDate>Fri, 22 May 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[Geminiにまとめてもらいました。本来は「そういう声もある or あることにしたい」程度の情報のはずなのですが、ニュースなどを聞くときに意識しておかないと、いつの間にか思考が誘導されてしまうことがあります。
政治・官房系の王道（永田町・霞が関スタイル）
「政府や役所のかなり上層部から聞いた」というニュアンスを出す時の表現です。
政府高官： 基本的に官房長官や官房副長官クラスを指すことが多い。
政府関係者 / 官邸関係者： 非常に範囲が広く、秘書官から事務方まで誰にでも使える万能ワード。
与党幹]]></description>
      
      
    </item>

    <item>
      <title>Raspberry PiをWi-Fiのアクセスポイントとして使う</title>
      <link>https://lmlab.net/posts/2026/2026-05-19-use-raspberrypi-as-hotspot.html</link>
      <guid>https://lmlab.net/posts/2026/2026-05-19-use-raspberrypi-as-hotspot.html</guid>
      <pubDate>Tue, 19 May 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[一昨年の時点 (/posts/2024/2024-01-12-raspi-as-an-access-point.html)では結構あちこち書き換えて実現していたRappberry PiのHotspot化ですが、現在(Trixieで動作確認しましたが、Bookwormもいけるのかも)はGUIのネットワーク設定画面から「Create Wi-Fi Hotspot...」と進むだけで簡単に設定ができてしまうようです。
GUIでは細かい設定は隠されてしまっている場合が多いので、例えばWi-Fi側のネットワ]]></description>
      
      <category>raspi</category>
      
      <category>linux</category>
      
      
    </item>

    <item>
      <title>帯域を節約する</title>
      <link>https://lmlab.net/posts/2026/2026-05-15-mod-deflate.html</link>
      <guid>https://lmlab.net/posts/2026/2026-05-15-mod-deflate.html</guid>
      <pubDate>Fri, 15 May 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[マシンパワーが余ってるけど、回線速度がボトルネックになる場合、リソースをgzip圧縮して送るようにするためのapache設定例。httpd.confなどに追記します。

&lt;IfModule mod_deflate.c&gt;
  AddOutputFilterByType DEFLATE application/octet-stream
  # The following was not required.
  # &lt;FilesMatch &quot;\.bin$&quot;&gt;]]></description>
      
      <category>linux</category>
      
      
    </item>

    <item>
      <title>さくらのドメインでグルーレコードを登録する</title>
      <link>https://lmlab.net/posts/2026/2026-04-27-add-glue-records-on-sakura-domain.html</link>
      <guid>https://lmlab.net/posts/2026/2026-04-27-add-glue-records-on-sakura-domain.html</guid>
      <pubDate>Mon, 27 Apr 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[恥ずかしながら、長年サーバの運用をやっていてDNSの「グルーレコード」という存在を知りませんでした。
（言い訳ですけど）レジストラの提供するUIで事足りていたり、ネームサーバを登録したドメインと別のドメインで運用していたりしていて、自分自身で完結させる運用をしたことが無かったためです。
ドメインの運用を開始する場合、ネームサーバがどこにあるかを教えてあげる必要があるのですが、DNSのNSレコードはネームサーバを名前（ホスト名）でしか指定できません。そのため、ネームサーバのホスト名が自分自身のドメ]]></description>
      
      <category>bind</category>
      
      <category>linux</category>
      
      
    </item>

    <item>
      <title>Claudeに文章を校正してもらう</title>
      <link>https://lmlab.net/posts/2026/2026-04-26-proofread-by-ai.html</link>
      <guid>https://lmlab.net/posts/2026/2026-04-26-proofread-by-ai.html</guid>
      <pubDate>Sun, 26 Apr 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[このブログは自作の CMS で管理しており、notes.rb という Ruby スクリプトが記事の作成やビルドなどをまとめて担っています。そこにサブコマンドを追加して、notes.rb proofread を実行すると Claude が誤字・脱字・表記ゆれ・文法の不自然さをチェックしてくれる仕組みを作りました。
Claude の Pro プランには加入していますが、API は別料金です。そのため Anthropic API を直接叩くのではなく、Claude Code の CLI（claude ]]></description>
      
      <category>ai</category>
      
      <category>ruby</category>
      
      
    </item>

    <item>
      <title>エスケープシーケンスでプロンプトの色を変える</title>
      <link>https://lmlab.net/posts/2026/2026-04-12-change-prompt-color.html</link>
      <guid>https://lmlab.net/posts/2026/2026-04-12-change-prompt-color.html</guid>
      <pubDate>Sun, 12 Apr 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[人生で何回か同じのを書いてる気がしますが、エスケープシーケンスを使ってターミナルの文字色を変えるサンプルを出力するスクリプトです。.bashrcの中でプロンプト(PS1)に色を定義している箇所もこのコードが使われていますので、これで、プロンプトの色分け（テスト機=green、運用機=yellowなど）が出来ます。
```bash
!/usr/bin/env bash
echo &quot;&quot;
echo &quot;=== ANSI Color Preview ===&quot;
ech]]></description>
      
      
    </item>

    <item>
      <title>スマートカードのUIDをRubyで読み取る</title>
      <link>https://lmlab.net/posts/2026/2026-03-31-smartcard.html</link>
      <guid>https://lmlab.net/posts/2026/2026-03-31-smartcard.html</guid>
      <pubDate>Tue, 31 Mar 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[pcsc_scanでカードを認識 (/posts/2026/2026-03-29-nfc.html)できる状態までライブラリのインストールが済んでいる状態を想定しています。まずはgemを追加します。

gem install smartcard

以下のコードを実行すると、カードがリーダーにかざされたときにUIDを読み取って表示するします。
```ruby
require &#39;smartcard&#39;
PC/SCコンテキストの作成
context = Smartcard::PCSC::]]></description>
      
      <category>linux</category>
      
      <category>ruby</category>
      
      
      <enclosure url="https://lmlab.net/posts/2026/2026-03-31-pasori-rc-s300.jpg" type="image/jpeg" length="0"/>
      
    </item>

    <item>
      <title>文字化けしたフォルダを削除する</title>
      <link>https://lmlab.net/posts/2026/2026-03-30-remove-untachable-folder.html</link>
      <guid>https://lmlab.net/posts/2026/2026-03-30-remove-untachable-folder.html</guid>
      <pubDate>Mon, 30 Mar 2026 00:00:00 +0900</pubDate>
      <description><![CDATA[不用意にzipファイルを展開するなどして、文字化けしたフォルダができてしまった場合の対処法です。変な記号が混ざっているため、コマンドの引数に指定しようとしてもエラーになる場合、まずはそのフォルダのiノード番号を確認します。

ls -li

取得したiノード番号を使って、以下のコマンドでフォルダの名前を変更します。

find . -inum NUMBER -exec mv {} new_name \;

]]></description>
      
      <category>linux</category>
      
      
    </item>

  </channel>
</rss>
