<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/assets/atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://blog.shinya.click/ja/</id>
  <title>信也のブログ</title>
  <updated>2026-09-20T14:19:56.734+00:00[UTC]</updated>
  <description>インターネットの片隅。shinya の個人ブログ。試行、制作、覚書、日常 —— ネットワークとプロキシ、セルフホスト、Go とシステム内部、そして気づけば週末を丸ごと溶かしていたあれこれ。</description>
  <author>
    <name>shinya</name>
    <email>kobayashi_shinya@outlook.com</email>
    <uri>https://github.com/senshinya</uri>
  </author>
  <link href="https://blog.shinya.click/ja/atom.xml" rel="self"></link>
  <link href="https://blog.shinya.click/ja/" rel="alternate"></link>
  <language>ja-JP</language>
  <generator uri="https://github.com/L33Z22L11/blog-v3" version="3.8.0">Clarity</generator>
  <icon>/icons/favicon.png</icon>
  <logo>https://github.com/senshinya.png</logo>
  <rights>© 2026 shinya</rights>
  <subtitle>コードを書く人</subtitle>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/steamdeck-switch-60fps</id>
    <title>Steam Deckの第二の人生：Switchエミュレーター導入からフレーム補間で60FPSまで</title>
    <updated>2026-09-09T15:59:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/NDPUwc.webp" alt="Steam Deckの第二の人生：Switchエミュレーター導入からフレーム補間で60FPSまで" /> <p>これも一種のNTRですよね</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/steamdeck-switch-60fps" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/steamdeck-switch-60fps"></link>
    <summary>これも一種のNTRですよね</summary>
    <category term="fiddling" label="試行"></category>
    <published>2026-09-09T15:59:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/xiaomi17-root-and-hide-root</id>
    <title>Xiaomi 17を普段使いに：ロック解除、ROM書き込み、root化とroot隠し</title>
    <updated>2026-08-17T15:59:21Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/qfxB0h.webp" alt="Xiaomi 17を普段使いに：ロック解除、ROM書き込み、root化とroot隠し" /> <p>いじればいじるほど、もっといじりたくなります。年を取ってもまだまだ元気、まだまだ元気です。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/xiaomi17-root-and-hide-root" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/xiaomi17-root-and-hide-root"></link>
    <summary>いじればいじるほど、もっといじりたくなります。年を取ってもまだまだ元気、まだまだ元気です。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2026-08-17T15:59:21Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/macos-27-apple-intelligence-chatgpt</id>
    <title>中国本土向けMacでApple Intelligenceを使う：地域変更からChatGPTの取り出しまで</title>
    <updated>2026-06-11T02:00:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/fOFucm.webp" alt="中国本土向けMacでApple Intelligenceを使う：地域変更からChatGPTの取り出しまで" /> <p>今年もWWDCでmacOS 27の新しいApple Intelligenceが登場しました。macOS 26時代の回避方法はもう使えず、引き続きAppleとの知恵比べです。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/macos-27-apple-intelligence-chatgpt" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/macos-27-apple-intelligence-chatgpt"></link>
    <summary>今年もWWDCでmacOS 27の新しいApple Intelligenceが登場しました。macOS 26時代の回避方法はもう使えず、引き続きAppleとの知恵比べです。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2026-06-11T02:00:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/one-trek-twenty-stacks</id>
    <title>TREKひとつのつもりが、20個のスタックに</title>
    <updated>2026-05-11T14:43:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/BBdDWW.webp" alt="TREKひとつのつもりが、20個のスタックに" /> <p>GitHub Trendingで旅行計画ツールを見つけ、自分でも動かしたくなりました。どうせ新しいVPSを借りるなら、ついでにもう少し、いや、だいぶ色々入れてしまおうと。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/one-trek-twenty-stacks" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/one-trek-twenty-stacks"></link>
    <summary>GitHub Trendingで旅行計画ツールを見つけ、自分でも動かしたくなりました。どうせ新しいVPSを借りるなら、ついでにもう少し、いや、だいぶ色々入れてしまおうと。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2026-05-11T14:43:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/msfs2024-joystick-and-pico</id>
    <title>Microsoft Flight Simulator 2024をあれこれ試す</title>
    <updated>2025-12-14T06:31:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/lfhEuE.webp" alt="Microsoft Flight Simulator 2024をあれこれ試す" /> <p>友人の一言からシミュレーターに興味が湧き、Microsoft Flight Simulatorを購入。地図やモデルはリアルタイム配信、アカウントは再ログインが必要、チュートリアルは見つけにくく、キーボード操作も難しい。結局フライトスティックを買い、Pico VRまで設定してようやく一通り体験できました。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/msfs2024-joystick-and-pico" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/msfs2024-joystick-and-pico"></link>
    <summary>友人の一言からシミュレーターに興味が湧き、Microsoft Flight Simulatorを購入。地図やモデルはリアルタイム配信、アカウントは再ログインが必要、チュートリアルは見つけにくく、キーボード操作も難しい。結局フライトスティックを買い、Pico VRまで設定してようやく一通り体験できました。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2025-12-14T06:31:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/moontv-vibe-coding</id>
    <title>MoonTV：Vibe Codingを試してみた</title>
    <updated>2025-07-20T15:32:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/nIeONi.webp" alt="MoonTV：Vibe Codingを試してみた" /> <p>MoonTVはNext.jsとReactで作った動画集約プラットフォームで、連続ドラマなどを手軽に楽しむためのものです。LibreTVを改善しようとしたことが始まりで、数か月の開発を経て多くの関心と利用を集めています。Cursorのおかげで効率よく開発できた一方、複数環境への対応や複雑なデータ依存関係には苦労しました。ユーザーが増える中、フィードバックを受けて改善を続けています。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/moontv-vibe-coding" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/moontv-vibe-coding"></link>
    <summary>MoonTVはNext.jsとReactで作った動画集約プラットフォームで、連続ドラマなどを手軽に楽しむためのものです。LibreTVを改善しようとしたことが始まりで、数か月の開発を経て多くの関心と利用を集めています。Cursorのおかげで効率よく開発できた一方、複数環境への対応や複雑なデータ依存関係には苦労しました。ユーザーが増える中、フィードバックを受けて改善を続けています。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2025-07-20T15:32:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/macos-26-trial</id>
    <title>macOS 26とiPadOS 26を試してみた</title>
    <updated>2025-06-10T12:18:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/TPSaLE.webp" alt="macOS 26とiPadOS 26を試してみた" /> <p>macOSとiPadOS 26では、新しいデザイン言語Liquid Glassが導入され、アイコンやウインドウの印象が一新されました。とくにiPadのアプリをウインドウで扱えるようになったことは、生産性向上のための端末へ進む大きな一歩です。一方、透明なコントロールセンターやLaunchpadの統合には賛否があり、使い勝手には改善の余地もあります。課題はありつつも、今後につながる更新だと感じました。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/macos-26-trial" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/macos-26-trial"></link>
    <summary>macOSとiPadOS 26では、新しいデザイン言語Liquid Glassが導入され、アイコンやウインドウの印象が一新されました。とくにiPadのアプリをウインドウで扱えるようになったことは、生産性向上のための端末へ進む大きな一歩です。一方、透明なコントロールセンターやLaunchpadの統合には賛否があり、使い勝手には改善の余地もあります。課題はありつつも、今後につながる更新だと感じました。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2025-06-10T12:18:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/one-month-using-android</id>
    <title>Androidに乗り換えて1か月</title>
    <updated>2025-06-05T15:26:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/19NIhZ.webp" alt="Androidに乗り換えて1か月" /> <p>OnePlusからiPhoneへと何度も機種変更するうち、いじる楽しさからエコシステムへの依存へと関心が変わりました。最近、彼女の一言をきっかけに写真を改善しようとOPPO Find X8 Ultraを購入。Apple環境からの移行では、Androidアプリの質のばらつきと代替探しの難しさを改めて感じました。1か月をかけて、異なるプラットフォームの摩擦に折り合いをつけた記録です。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/one-month-using-android" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/one-month-using-android"></link>
    <summary>OnePlusからiPhoneへと何度も機種変更するうち、いじる楽しさからエコシステムへの依存へと関心が変わりました。最近、彼女の一言をきっかけに写真を改善しようとOPPO Find X8 Ultraを購入。Apple環境からの移行では、Androidアプリの質のばらつきと代替探しの難しさを改めて感じました。1か月をかけて、異なるプラットフォームの摩擦に折り合いをつけた記録です。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2025-06-05T15:26:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/astro-google-tag-manager</id>
    <title>AstroにGoogle Analyticsを導入する（Tag Manager編）</title>
    <updated>2025-05-28T14:09:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/Q0w4RN.webp" alt="AstroにGoogle Analyticsを導入する（Tag Manager編）" /> <p>ブログをAstroに移行したところ、従来のGoogle Analytics導入方法では性能面が気になるようになりました。headタグにJavaScriptを直接追加してイベントを送ることはできますが、ページの性能に影響します。そこでpartytownでスクリプトをメインスレッドから切り離し、読み込みを妨げないようにしました。サンプルコードに手を加えることでGoogle Analyticsの導入に成功し、性能とアクセス解析を両立できました。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/astro-google-tag-manager" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/astro-google-tag-manager"></link>
    <summary>ブログをAstroに移行したところ、従来のGoogle Analytics導入方法では性能面が気になるようになりました。headタグにJavaScriptを直接追加してイベントを送ることはできますが、ページの性能に影響します。そこでpartytownでスクリプトをメインスレッドから切り離し、読み込みを妨げないようにしました。サンプルコードに手を加えることでGoogle Analyticsの導入に成功し、性能とアクセス解析を両立できました。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2025-05-28T14:09:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/cross-city-network-setup</id>
    <title>上海と杭州の自宅ネットワークをつなぐ</title>
    <updated>2025-04-18T08:43:12Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/O6cAGh.webp" alt="上海と杭州の自宅ネットワークをつなぐ" /> <p>彼女が仕事で北京から上海に引っ越したので、回線の手配も手伝いました。ところが上海電信の500Mは杭州の1000Mより高く、なんとも納得がいきません。そこで上海での透過プロキシ、特定の通信の杭州経由での外部接続、両拠点のLAN相互接続を目指してネットワークを組むことにしました。杭州側はソフトウェアルーターと無線APのシンプルな構成で、普段から自宅経由で通信できる環境があり、次の挑戦に向けた準備はできています。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/cross-city-network-setup" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/cross-city-network-setup"></link>
    <summary>彼女が仕事で北京から上海に引っ越したので、回線の手配も手伝いました。ところが上海電信の500Mは杭州の1000Mより高く、なんとも納得がいきません。そこで上海での透過プロキシ、特定の通信の杭州経由での外部接続、両拠点のLAN相互接続を目指してネットワークを組むことにしました。杭州側はソフトウェアルーターと無線APのシンプルな構成で、普段から自宅経由で通信できる環境があり、次の挑戦に向けた準備はできています。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2025-04-18T08:43:12Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/heart-rate-to-grafana</id>
    <title>My Heart Beats for U：心拍数をGrafanaで可視化する</title>
    <updated>2025-03-31T15:51:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/F4qD2T.webp" alt="My Heart Beats for U：心拍数をGrafanaで可視化する" /> <p>Appleヘルスケアの心拍数を定期的にサーバーへ同期し、Grafanaで可視化して直感的に確認できるようにしました。Health Auto ExportのREST API機能でHTTPエンドポイントへデータを送り、InfluxDBに保存します。Grafanaのダッシュボードから、自分の心拍数の変化を追ったり分析したりできます。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/heart-rate-to-grafana" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/heart-rate-to-grafana"></link>
    <summary>Appleヘルスケアの心拍数を定期的にサーバーへ同期し、Grafanaで可視化して直感的に確認できるようにしました。Health Auto ExportのREST API機能でHTTPエンドポイントへデータを送り、InfluxDBに保存します。Grafanaのダッシュボードから、自分の心拍数の変化を追ったり分析したりできます。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2025-03-31T15:51:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/parser-type-variable-ambiguity</id>
    <title>構文解析で型名と変数名の曖昧さを解消する</title>
    <updated>2025-03-15T12:35:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/2VKHK9.webp" alt="構文解析で型名と変数名の曖昧さを解消する" /> <p>構文解析では、ユーザー定義型名と通常の変数名を見分けることが課題になります。たとえば`a*b;`は算術式とも宣言とも解釈できます。とくに型指定子に関する文法規則によって変数名が型名と解釈され、正確さや読みやすさに影響します。初期化を伴わない変数宣言は多いため、この曖昧さはソースコードの随所に現れます。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/parser-type-variable-ambiguity" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/parser-type-variable-ambiguity"></link>
    <summary>構文解析では、ユーザー定義型名と通常の変数名を見分けることが課題になります。たとえば`a*b;`は算術式とも宣言とも解釈できます。とくに型指定子に関する文法規則によって変数名が型名と解釈され、正確さや読みやすさに影響します。初期化を伴わない変数宣言は多いため、この曖昧さはソースコードの随所に現れます。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2025-03-15T12:35:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/vps-warp-ipv6</id>
    <title>VPSの特定の通信をWARP経由のIPv6で外に出す</title>
    <updated>2025-03-15T08:24:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/McjrrF.webp" alt="VPSの特定の通信をWARP経由のIPv6で外に出す" /> <p>ある平凡な午後、Telegramの通知で魅力的なVPSプランを見つけました。中国電信CN2直結、帯域2.5Gという好条件です。IPv6付きで動画配信サービスの地域制限解除にも便利ですが、すべての通信をWARP経由にする必要はありません。以前のスクリプトは手軽な一方、速度と振り分けに不満があり、もっと柔軟な方法を探すことにしました。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/vps-warp-ipv6" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/vps-warp-ipv6"></link>
    <summary>ある平凡な午後、Telegramの通知で魅力的なVPSプランを見つけました。中国電信CN2直結、帯域2.5Gという好条件です。IPv6付きで動画配信サービスの地域制限解除にも便利ですが、すべての通信をWARP経由にする必要はありません。以前のスクリプトは手軽な一方、速度と振り分けに不満があり、もっと柔軟な方法を探すことにしました。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2025-03-15T08:24:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/vitepress-memos-component</id>
    <title>VitePressにひとこと投稿機能を実装する</title>
    <updated>2025-01-29T13:58:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/hZX6hr.webp" alt="VitePressにひとこと投稿機能を実装する" /> <p>ひとこと投稿機能があれば、静的ブログの記事公開に伴う手間や心理的な負担を減らし、短い思いつきをいつでも共有できます。Cloudflare Workersでバックエンドを実装し、KVで投稿を保存・管理します。フロントエンドはVitePressにVueコンポーネントを埋め込み、投稿を手軽に表示してブログに動きと交流の場を加えます。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/vitepress-memos-component" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/vitepress-memos-component"></link>
    <summary>ひとこと投稿機能があれば、静的ブログの記事公開に伴う手間や心理的な負担を減らし、短い思いつきをいつでも共有できます。Cloudflare Workersでバックエンドを実装し、KVで投稿を保存・管理します。フロントエンドはVitePressにVueコンポーネントを埋め込み、投稿を手軽に表示してブログに動きと交流の場を加えます。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2025-01-29T13:58:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/opnsense-transparent-proxy</id>
    <title>OPNsenseで透過プロキシとトラフィック振り分けを実現する</title>
    <updated>2025-01-16T15:09:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/xA8C1E.webp" alt="OPNsenseで透過プロキシとトラフィック振り分けを実現する" /> <p>OPNsenseは、美しい画面と充実した機能を備えるオープンソースのファイアウォール・ルーターです。いくつかの構成を試した末に、透過プロキシやトラフィック振り分けでの可能性に気づきました。BGPベースの振り分けと組み合わせることで安全性と安定性を高められ、IPリストの自動更新で管理もしやすくなります。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/opnsense-transparent-proxy" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/opnsense-transparent-proxy"></link>
    <summary>OPNsenseは、美しい画面と充実した機能を備えるオープンソースのファイアウォール・ルーターです。いくつかの構成を試した末に、透過プロキシやトラフィック振り分けでの可能性に気づきました。BGPベースの振り分けと組み合わせることで安全性と安定性を高められ、IPリストの自動更新で管理もしやすくなります。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2025-01-16T15:09:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/more-accurate-chnroute</id>
    <title>BGPで中国国内・国外IPの振り分けをより正確にする</title>
    <updated>2024-10-07T08:51:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/MOmM1s.webp" alt="BGPで中国国内・国外IPの振り分けをより正確にする" /> <p>BGPをもとに中国国内・国外のIPを振り分けることで、透過プロキシの効率と精度を高めます。国外の宛先をFakeIPで識別すれば、メインルーターでより適切に通信を振り分けられます。sing-boxのDNS設定も見直し、DNSクエリを柔軟かつ効率的に処理して、ネットワーク全体の使い勝手を改善します。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/more-accurate-chnroute" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/more-accurate-chnroute"></link>
    <summary>BGPをもとに中国国内・国外のIPを振り分けることで、透過プロキシの効率と精度を高めます。国外の宛先をFakeIPで識別すれば、メインルーターでより適切に通信を振り分けられます。sing-boxのDNS設定も見直し、DNSクエリを柔軟かつ効率的に処理して、ネットワーク全体の使い勝手を改善します。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2024-10-07T08:51:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/daily/work-for-3-years</id>
    <title>ByteDanceで3年働きながら、ある程度の正気を保つことも不可能ではない</title>
    <updated>2024-09-28T08:26:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/hnCaht.webp" alt="ByteDanceで3年働きながら、ある程度の正気を保つことも不可能ではない" /> <p>ByteDanceで働いて3年。変化の速い環境で、時間まで加速したように感じながらも、どうにか心のバランスを保ってきました。杭州のオフィスのベランダから遠くの山を眺めていた入社当初を振り返り、仕事の壁や心境の変化、忙しさの中で自分のペースを探してきた日々を記します。</p> <a class="view-full" href="https://blog.shinya.click/ja/daily/work-for-3-years" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/daily/work-for-3-years"></link>
    <summary>ByteDanceで働いて3年。変化の速い環境で、時間まで加速したように感じながらも、どうにか心のバランスを保ってきました。杭州のオフィスのベランダから遠くの山を眺めていた入社当初を振り返り、仕事の壁や心境の変化、忙しさの中で自分のペースを探してきた日々を記します。</summary>
    <category term="daily" label="日常"></category>
    <published>2024-09-28T08:26:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/daily/anti-chronic-gastritis</id>
    <title>慢性胃炎の治療記録</title>
    <updated>2024-09-01T14:03:10Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/0Hr9l5.webp" alt="慢性胃炎の治療記録" /> <p>子どもの頃からの胃腸の不調が大学時代には不思議と消えたものの、就職後の夜更かしと飲酒で再発。慢性胃炎との付き合いは一筋縄ではいきませんでした。吐き気や胃のむかつきが日常になり、何度か検査を受けて生活を振り返るうちに、ようやく腰を据えて治療に向き合うようになりました。</p> <a class="view-full" href="https://blog.shinya.click/ja/daily/anti-chronic-gastritis" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/daily/anti-chronic-gastritis"></link>
    <summary>子どもの頃からの胃腸の不調が大学時代には不思議と消えたものの、就職後の夜更かしと飲酒で再発。慢性胃炎との付き合いは一筋縄ではいきませんでした。吐き気や胃のむかつきが日常になり、何度か検査を受けて生活を振り返るうちに、ようやく腰を据えて治療に向き合うようになりました。</summary>
    <category term="daily" label="日常"></category>
    <published>2024-09-01T14:03:10Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/fake-ip-based-transparent-proxy</id>
    <title>FakeIPを使った透過プロキシの振り分け</title>
    <updated>2024-08-16T15:53:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/S2HHD5.webp" alt="FakeIPを使った透過プロキシの振り分け" /> <p>FakeIPを使った透過プロキシ構成で、従来のサイドルーターの単一障害点、性能不足、複雑なポート転送を改善します。プロキシコアをsing-boxに変えることで、転送性能を高めながら設定も簡単にできます。対応プロトコルが豊富で、従来のClashより最適化も進んでいます。同じ構成はClashでも実現できますが、sing-boxは柔軟な選択肢になります。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/fake-ip-based-transparent-proxy" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/fake-ip-based-transparent-proxy"></link>
    <summary>FakeIPを使った透過プロキシ構成で、従来のサイドルーターの単一障害点、性能不足、複雑なポート転送を改善します。プロキシコアをsing-boxに変えることで、転送性能を高めながら設定も簡単にできます。対応プロトコルが豊富で、従来のClashより最適化も進んでいます。同じ構成はClashでも実現できますが、sing-boxは柔軟な選択肢になります。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2024-08-16T15:53:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/fix-port-forward-in-bypass-router</id>
    <title>サイドルーター環境でポート転送が効かない問題を解決する</title>
    <updated>2024-08-15T15:50:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/mRqws9.webp" alt="サイドルーター環境でポート転送が効かない問題を解決する" /> <p>サイドルーターを導入すると、メインルーターのポート転送が効かなくなることがあります。ゲートウェイをサイドルーターに変えることで通信経路が変わり、メインルーターを前提とした転送が正常に動かなくなるためです。ゲートウェイはアドレスを変換して内部ネットワークの通信を外部へ転送し、各端末は外部との通信にこれを必要とします。この仕組みを理解すると、ポート転送の問題を解決しやすくなります。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/fix-port-forward-in-bypass-router" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/fix-port-forward-in-bypass-router"></link>
    <summary>サイドルーターを導入すると、メインルーターのポート転送が効かなくなることがあります。ゲートウェイをサイドルーターに変えることで通信経路が変わり、メインルーターを前提とした転送が正常に動かなくなるためです。ゲートウェイはアドレスを変換して内部ネットワークの通信を外部へ転送し、各端末は外部との通信にこれを必要とします。この仕組みを理解すると、ポート転送の問題を解決しやすくなります。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2024-08-15T15:50:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/debian-as-bypass-router</id>
    <title>Debianをサイドルーターにする</title>
    <updated>2024-07-13T09:49:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/pPRU5x.webp" alt="Debianをサイドルーターにする" /> <p>Debianをサイドルーターに使うと、OpenWrtやLuCIに依存せず、より安定した柔軟な構成を作れます。Debianを直接設定することでシステムを細かく制御でき、GUIの制約や不安定さを避けられます。一般的なサイドルーター構成と比べて透過プロキシを安定して運用しやすく、性能や効率を重視する場合の選択肢になります。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/debian-as-bypass-router" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/debian-as-bypass-router"></link>
    <summary>Debianをサイドルーターに使うと、OpenWrtやLuCIに依存せず、より安定した柔軟な構成を作れます。Debianを直接設定することでシステムを細かく制御でき、GUIの制約や不安定さを避けられます。一般的なサイドルーター構成と比べて透過プロキシを安定して運用しやすく、性能や効率を重視する場合の選択肢になります。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2024-07-13T09:49:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/tech-about-gfw</id>
    <title>GFWの仕組みを探る</title>
    <updated>2024-06-23T07:31:32Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/sOpJuL.webp" alt="GFWの仕組みを探る" /> <p>GFWは単に出口のゲートウェイを監視するのではなく、通信経路の脇から国際通信を傍受します。出入国するIPパケットをクラスタへ複製し、詳しく分析・フィルタリングする仕組みです。どこで何をしているかを理解することは、検閲回避の検討に欠かせません。ネットワーク構成を調べることで、遮断の経路や技術、対処方法が見えてきます。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/tech-about-gfw" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/tech-about-gfw"></link>
    <summary>GFWは単に出口のゲートウェイを監視するのではなく、通信経路の脇から国際通信を傍受します。出入国するIPパケットをクラスタへ複製し、詳しく分析・フィルタリングする仕組みです。どこで何をしているかを理解することは、検閲回避の検討に欠かせません。ネットワーク構成を調べることで、遮断の経路や技術、対処方法が見えてきます。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2024-06-23T07:31:32Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/daily/plan2024</id>
    <title>2024年の学習計画</title>
    <updated>2024-01-03T18:06:51Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/V3rSQC.webp" alt="2024年の学習計画" /> <p>2024年の学習目標は、日本語をN2レベルに引き上げること、SICPとTAPLを最後までやり切ること、POSIXを完全に実装したカーネルを作ること、そしてブログのテーマを更新すること。どれも簡単ではありませんが、今年取り組む方向は決まりました。</p> <a class="view-full" href="https://blog.shinya.click/ja/daily/plan2024" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/daily/plan2024"></link>
    <summary>2024年の学習目標は、日本語をN2レベルに引き上げること、SICPとTAPLを最後までやり切ること、POSIXを完全に実装したカーネルを作ること、そしてブログのテーマを更新すること。どれも簡単ではありませんが、今年取り組む方向は決まりました。</summary>
    <category term="daily" label="日常"></category>
    <published>2024-01-03T18:06:51Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/spike-install</id>
    <title>RISC-Vツールチェーンとエミュレーターのインストール</title>
    <updated>2023-05-24T09:51:09Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/rWNOKx.webp" alt="RISC-Vツールチェーンとエミュレーターのインストール" /> <p>RISC-Vツールチェーンをインストールするには、まずriscv-gnu-toolchainのソースを取得します。clone時に`--depth=1`を付けるとダウンロード量を減らせます。READMEのPrerequisitesを確認し、必要な依存関係をそろえてから進めます。Debianではコマンドで依存パッケージをまとめて導入できます。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/spike-install" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/spike-install"></link>
    <summary>RISC-Vツールチェーンをインストールするには、まずriscv-gnu-toolchainのソースを取得します。clone時に`--depth=1`を付けるとダウンロード量を減らせます。READMEのPrerequisitesを確認し、必要な依存関係をそろえてから進めます。Debianではコマンドで依存パッケージをまとめて導入できます。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2023-05-24T09:51:09Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/chitchat-about-programming-language</id>
    <title>プログラミング言語についての雑談</title>
    <updated>2023-04-08T05:16:36Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/uO420B.webp" alt="プログラミング言語についての雑談" /> <p>新しいプログラミング言語の設計は、難しくも面白い作業です。複雑なコンパイラ理論や機能の実装詳細をいったん脇に置き、コードがコンピューターのどこで動くかに注目すると、言語の作り方が見えてきます。RISC-VI命令セットを出発点に、基盤となる構造、階層化されたシステム、仮想マシンのモデルをたどり、言語の本質を考えます。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/chitchat-about-programming-language" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/chitchat-about-programming-language"></link>
    <summary>新しいプログラミング言語の設計は、難しくも面白い作業です。複雑なコンパイラ理論や機能の実装詳細をいったん脇に置き、コードがコンピューターのどこで動くかに注目すると、言語の作り方が見えてきます。RISC-VI命令セットを出発点に、基盤となる構造、階層化されたシステム、仮想マシンのモデルをたどり、言語の本質を考えます。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2023-04-08T05:16:36Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/go-os</id>
    <title>失敗に終わったプロジェクト：楽しくなかった春節の7日間</title>
    <updated>2023-02-02T15:24:55Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/xB1Ni5.webp" alt="失敗に終わったプロジェクト：楽しくなかった春節の7日間" /> <p>春節の帰省列車で、Goをベアメタルで動かす記事を読み、低レベルのシステムインターフェースに興味が湧きました。実際に動く実装を見て、高級言語でOSを作る可能性に胸が躍ります。関連研究を調べると先行例も見つかり、積もった熱意は期待に満ちたプロジェクトへと変わりました。しかし、最後は思いどおりにはいきませんでした。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/go-os" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/go-os"></link>
    <summary>春節の帰省列車で、Goをベアメタルで動かす記事を読み、低レベルのシステムインターフェースに興味が湧きました。実際に動く実装を見て、高級言語でOSを作る可能性に胸が躍ります。関連研究を調べると先行例も見つかり、積もった熱意は期待に満ちたプロジェクトへと変わりました。しかし、最後は思いどおりにはいきませんでした。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2023-02-02T15:24:55Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/notes/65840/raftlab2a</id>
    <title>6.5840 Lab 2A：リーダー選出</title>
    <updated>2022-12-15T18:06:10Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/c11Uk4.webp" alt="6.5840 Lab 2A：リーダー選出" /> <p>Lab 2Aでは、Raftのリーダー選出とハートビートを実装し、さまざまな厳しい条件でも任期の交代や選挙が正常に行われるようにします。実習全体は4段階からなり、この後に実装する分散KVストアの土台になります。明示的なロックを使わない設計によって、Raft構造体を簡潔にします。実習の手引きには必要な背景知識が載っていますが、前の実習と比べると参考資料に頼れる部分はほとんどなく、自力で実装することが重視されます。</p> <a class="view-full" href="https://blog.shinya.click/ja/notes/65840/raftlab2a" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/notes/65840/raftlab2a"></link>
    <summary>Lab 2Aでは、Raftのリーダー選出とハートビートを実装し、さまざまな厳しい条件でも任期の交代や選挙が正常に行われるようにします。実習全体は4段階からなり、この後に実装する分散KVストアの土台になります。明示的なロックを使わない設計によって、Raft構造体を簡潔にします。実習の手引きには必要な背景知識が載っていますが、前の実習と比べると参考資料に頼れる部分はほとんどなく、自力で実装することが重視されます。</summary>
    <category term="notes" label="覚書"></category>
    <published>2022-12-15T18:06:10Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/notes/65840/reftextendedpaper</id>
    <title>Raft論文を読む</title>
    <updated>2022-12-03T13:40:09Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/7mmvIZ.webp" alt="Raft論文を読む" /> <p>Raftは、ログレプリケーションの効率を高めるために設計された合意アルゴリズムです。複数のマシンからなるクラスタに適しており、一部のマシンが故障してもサービスを継続できます。複製状態機械モデルを使い、ログに命令の順序を記録することで、クラスタ内の各マシンが同じ状態に到達できるようにします。論文『In Search of an Understandable Consensus Algorithm』は、Raftの設計思想とPaxosとの比較を詳しく論じ、その理解しやすさを示すとともに、信頼できる大規模なソフトウェアシステムを構築するための土台を提供しています。この記事は、その中心的な概念と応用を理解するための読書メモです。</p> <a class="view-full" href="https://blog.shinya.click/ja/notes/65840/reftextendedpaper" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/notes/65840/reftextendedpaper"></link>
    <summary>Raftは、ログレプリケーションの効率を高めるために設計された合意アルゴリズムです。複数のマシンからなるクラスタに適しており、一部のマシンが故障してもサービスを継続できます。複製状態機械モデルを使い、ログに命令の順序を記録することで、クラスタ内の各マシンが同じ状態に到達できるようにします。論文『In Search of an Understandable Consensus Algorithm』は、Raftの設計思想とPaxosとの比較を詳しく論じ、その理解しやすさを示すとともに、信頼できる大規模なソフトウェアシステムを構築するための土台を提供しています。この記事は、その中心的な概念と応用を理解するための読書メモです。</summary>
    <category term="notes" label="覚書"></category>
    <published>2022-12-03T13:40:09Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/golang-deepcopy-between-different-type</id>
    <title>Goで異なる型の構造体をディープコピーする</title>
    <updated>2022-08-14T17:05:01Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/Blhm0I.webp" alt="Goで異なる型の構造体をディープコピーする" /> <p>システムのリファクタリングで、階層ごとのエンティティ変換に苦労しました。ビュー層の商品VO、ドメイン層のentity、永続化層のPOは似ていても、型のわずかな違いで直接変換できず、ディープコピーが面倒になります。そこでリフレクションを使った汎用的な変換処理を実装し、大量のassemblerメソッドを減らして、保守性と柔軟性を高めることにしました。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/golang-deepcopy-between-different-type" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/golang-deepcopy-between-different-type"></link>
    <summary>システムのリファクタリングで、階層ごとのエンティティ変換に苦労しました。ビュー層の商品VO、ドメイン層のentity、永続化層のPOは似ていても、型のわずかな違いで直接変換できず、ディープコピーが面倒になります。そこでリフレクションを使った汎用的な変換処理を実装し、大量のassemblerメソッドを減らして、保守性と柔軟性を高めることにしました。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2022-08-14T17:05:01Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/this-in-javac-string-concat</id>
    <title>Javaのthisキーワードでコンパイル時の定数伝播が効かなくなる問題</title>
    <updated>2022-04-15T16:01:28Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/gKtkYe.webp" alt="Javaのthisキーワードでコンパイル時の定数伝播が効かなくなる問題" /> <p>Javaでは`this`を使うことで、コンパイラの定数最適化が効かなくなる場合があります。このコード例の`ab1`と`ab2`は同じstatic final変数`s`を参照しているように見えますが、比較結果は異なります。静的変数を直接参照して文字列を連結する`ab1`に対し、`this`経由の`ab2`では同じ定数伝播の最適化が行われません。わずかな構文の違いが、コンパイル結果を変える例です。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/this-in-javac-string-concat" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/this-in-javac-string-concat"></link>
    <summary>Javaでは`this`を使うことで、コンパイラの定数最適化が効かなくなる場合があります。このコード例の`ab1`と`ab2`は同じstatic final変数`s`を参照しているように見えますが、比較結果は異なります。静的変数を直接参照して文字列を連結する`ab1`に対し、`this`経由の`ab2`では同じ定数伝播の最適化が行われません。わずかな構文の違いが、コンパイル結果を変える例です。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2022-04-15T16:01:28Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/daily/people-in-three-body</id>
    <title>『三体』における「大多数の人々」</title>
    <updated>2022-04-10T16:13:13Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/LTzbFP.webp" alt="『三体』における「大多数の人々」" /> <p>『三体』では、劉慈欣が壮大な歴史を通して個人と集団の関係を描いています。西側の民主主義への疑念と、大多数の人々に運命を委ねることへの悲観が、三部作を貫いています。英雄たちが力を尽くしても、その努力は歴史の流れに押し流される。文化大革命から始まる物語に、少数の傑出した人物と平凡な大衆の対立を読み、人間性と社会について考えました。</p> <a class="view-full" href="https://blog.shinya.click/ja/daily/people-in-three-body" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/daily/people-in-three-body"></link>
    <summary>『三体』では、劉慈欣が壮大な歴史を通して個人と集団の関係を描いています。西側の民主主義への疑念と、大多数の人々に運命を委ねることへの悲観が、三部作を貫いています。英雄たちが力を尽くしても、その努力は歴史の流れに押し流される。文化大革命から始まる物語に、少数の傑出した人物と平凡な大衆の対立を読み、人間性と社会について考えました。</summary>
    <category term="daily" label="日常"></category>
    <published>2022-04-10T16:13:13Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/notes/65840/mapreducelab</id>
    <title>6.5840 Lab 1：MapReduce</title>
    <updated>2022-01-20T14:29:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/ibVwPJ.webp" alt="6.5840 Lab 1：MapReduce" /> <p>Lab 1では、masterとworkerという2つの主要な部分からなるMapReduceシステムを実装します。GoのRPCと並行プログラミングを十分に使いこなし、MapReduceの処理の流れも深く理解する必要があります。実装は2つの版を作り、mutexでロックする方式から、よりすっきりしたchannelによる明示的なロックを使わない方式へと改めました。後者のほうが設計もシンプルで分かりやすくなっています。実習を理解する鍵は、関連資料、特にフローチャートとその説明をしっかり読むことです。</p> <a class="view-full" href="https://blog.shinya.click/ja/notes/65840/mapreducelab" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/notes/65840/mapreducelab"></link>
    <summary>Lab 1では、masterとworkerという2つの主要な部分からなるMapReduceシステムを実装します。GoのRPCと並行プログラミングを十分に使いこなし、MapReduceの処理の流れも深く理解する必要があります。実装は2つの版を作り、mutexでロックする方式から、よりすっきりしたchannelによる明示的なロックを使わない方式へと改めました。後者のほうが設計もシンプルで分かりやすくなっています。実習を理解する鍵は、関連資料、特にフローチャートとその説明をしっかり読むことです。</summary>
    <category term="notes" label="覚書"></category>
    <published>2022-01-20T14:29:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/notes/65840/mapreducepaper</id>
    <title>MapReduce論文を読む</title>
    <updated>2022-01-16T09:32:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/ApIDdC.webp" alt="MapReduce論文を読む" /> <p>MapReduceは、大規模なデータセットの処理を簡単にするための効率的な並列計算モデルです。利用者はMapとReduceという2つの主要な関数を定義することで、複雑なタスクを簡単な操作に分解できます。データの分配やタスクの割り当てはフレームワークが自動で管理するため、開発者は低レベルの細部に気を取られず、アルゴリズムそのものに集中できます。分散システムで広く使われていることからも、その柔軟性と実用性が分かります。</p> <a class="view-full" href="https://blog.shinya.click/ja/notes/65840/mapreducepaper" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/notes/65840/mapreducepaper"></link>
    <summary>MapReduceは、大規模なデータセットの処理を簡単にするための効率的な並列計算モデルです。利用者はMapとReduceという2つの主要な関数を定義することで、複雑なタスクを簡単な操作に分解できます。データの分配やタスクの割り当てはフレームワークが自動で管理するため、開発者は低レベルの細部に気を取られず、アルゴリズムそのものに集中できます。分散システムで広く使われていることからも、その柔軟性と実用性が分かります。</summary>
    <category term="notes" label="覚書"></category>
    <published>2022-01-16T09:32:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/fiddling/csapplab0</id>
    <title>CSAPP Labの環境構築</title>
    <updated>2021-12-26T16:09:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/vqOC7N.webp" alt="CSAPP Labの環境構築" /> <p>CSAPPの学習では実験が欠かせませんが、Linux環境の構築が壁になりがちです。とくに仮想マシンでは、インストール失敗、互換性、ネットワーク接続などの問題に悩まされます。Windows 10バージョン2004以降なら、WSL（Windows Subsystem for Linux）が有力な選択肢です。従来の仮想マシンの複雑さや性能面の負担を避けながら、Linux環境を手軽に利用できます。</p> <a class="view-full" href="https://blog.shinya.click/ja/fiddling/csapplab0" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/fiddling/csapplab0"></link>
    <summary>CSAPPの学習では実験が欠かせませんが、Linux環境の構築が壁になりがちです。とくに仮想マシンでは、インストール失敗、互換性、ネットワーク接続などの問題に悩まされます。Windows 10バージョン2004以降なら、WSL（Windows Subsystem for Linux）が有力な選択肢です。従来の仮想マシンの複雑さや性能面の負担を避けながら、Linux環境を手軽に利用できます。</summary>
    <category term="fiddling" label="試行"></category>
    <published>2021-12-26T16:09:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/projects/mydb/mydb10</id>
    <title>MYDB 10. サーバー・クライアントの実装と通信プロトコル</title>
    <updated>2021-12-25T10:26:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/PAHrUZ.webp" alt="MYDB 10. サーバー・クライアントの実装と通信プロトコル" /> <p>MYDBはMySQLに似たC/S構成を採用し、複数のクライアントがソケットでサーバーへ接続してSQLを実行し、結果を受け取れます。通信には専用のバイナリー形式を使いますが、実装を簡単にするならプレーンテキストも選択肢です。サーバーとクライアントの基本的な転送構造によって、データのやり取りと処理を行います。</p> <a class="view-full" href="https://blog.shinya.click/ja/projects/mydb/mydb10" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/projects/mydb/mydb10"></link>
    <summary>MYDBはMySQLに似たC/S構成を採用し、複数のクライアントがソケットでサーバーへ接続してSQLを実行し、結果を受け取れます。通信には専用のバイナリー形式を使いますが、実装を簡単にするならプレーンテキストも選択肢です。サーバーとクライアントの基本的な転送構造によって、データのやり取りと処理を行います。</summary>
    <category term="projects" label="制作"></category>
    <published>2021-12-25T10:26:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/projects/mydb/mydb9</id>
    <title>MYDB 9. フィールドとテーブルの管理</title>
    <updated>2021-12-25T07:44:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/zOMyv5.webp" alt="MYDB 9. フィールドとテーブルの管理" /> <p>テーブルマネージャー（TBM）は、フィールドとテーブルの構造を管理します。ParserはSQL風の文を構造化して解析し、文に含まれる情報を対応するクラスへまとめることで、その後の操作を簡単にします。この章ではMYDBのSQL構文も紹介し、管理処理全体を理解する土台を作ります。</p> <a class="view-full" href="https://blog.shinya.click/ja/projects/mydb/mydb9" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/projects/mydb/mydb9"></link>
    <summary>テーブルマネージャー（TBM）は、フィールドとテーブルの構造を管理します。ParserはSQL風の文を構造化して解析し、文に含まれる情報を対応するクラスへまとめることで、その後の操作を簡単にします。この章ではMYDBのSQL構文も紹介し、管理処理全体を理解する土台を作ります。</summary>
    <category term="projects" label="制作"></category>
    <published>2021-12-25T07:44:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/projects/mydb/mydb8</id>
    <title>MYDB 8. インデックス管理</title>
    <updated>2021-12-24T13:01:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/f92X4o.webp" alt="MYDB 8. インデックス管理" /> <p>MYDBはB+木によるクラスタ化インデックスを実装します。IMはバージョンマネージャー（VM）を経由せず、データマネージャー（DM）と直接やり取りし、インデックスデータをデータベースファイルへ直接書き込みます。この章では二分木インデックスの構造を詳しく説明し、葉フラグ、キー数、兄弟ノードの識別子など、インデックス検索の基盤となる要素を扱います。</p> <a class="view-full" href="https://blog.shinya.click/ja/projects/mydb/mydb8" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/projects/mydb/mydb8"></link>
    <summary>MYDBはB+木によるクラスタ化インデックスを実装します。IMはバージョンマネージャー（VM）を経由せず、データマネージャー（DM）と直接やり取りし、インデックスデータをデータベースファイルへ直接書き込みます。この章では二分木インデックスの構造を詳しく説明し、葉フラグ、キー数、兄弟ノードの識別子など、インデックス検索の基盤となる要素を扱います。</summary>
    <category term="projects" label="制作"></category>
    <published>2021-12-24T13:01:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/projects/mydb/mydb7</id>
    <title>MYDB 7. デッドロック検出とVMの実装</title>
    <updated>2021-12-23T13:20:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/BF3yDW.webp" alt="MYDB 7. デッドロック検出とVMの実装" /> <p>VMでは、MVCCに伴うバージョンの飛び越しとデッドロックに対処する必要があります。MYDBはトランザクションに印を付けるだけで取り消しやロールバックを行い、abortedなトランザクションのデータがほかへ影響しないようにします。この設計により並行処理の効率と信頼性を高め、従来の2PLで起こりがちなデッドロックを避けて、システム全体の安定性と性能を向上させます。</p> <a class="view-full" href="https://blog.shinya.click/ja/projects/mydb/mydb7" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/projects/mydb/mydb7"></link>
    <summary>VMでは、MVCCに伴うバージョンの飛び越しとデッドロックに対処する必要があります。MYDBはトランザクションに印を付けるだけで取り消しやロールバックを行い、abortedなトランザクションのデータがほかへ影響しないようにします。この設計により並行処理の効率と信頼性を高め、従来の2PLで起こりがちなデッドロックを避けて、システム全体の安定性と性能を向上させます。</summary>
    <category term="projects" label="制作"></category>
    <published>2021-12-23T13:20:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/projects/mydb/mydb6</id>
    <title>MYDB 6. レコードのバージョンとトランザクション分離</title>
    <updated>2021-12-18T06:58:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/8YzotA.webp" alt="MYDB 6. レコードのバージョンとトランザクション分離" /> <p>VMは二相ロックでスケジュールの直列化可能性を保証し、多版型同時実行制御（MVCC）を導入して読み取りと書き込みの相互ブロックを解消します。また、データベース操作の競合を定義し、特に更新と読み取りの関係を整理することで、トランザクションの分離レベルを理解する土台を作ります。</p> <a class="view-full" href="https://blog.shinya.click/ja/projects/mydb/mydb6" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/projects/mydb/mydb6"></link>
    <summary>VMは二相ロックでスケジュールの直列化可能性を保証し、多版型同時実行制御（MVCC）を導入して読み取りと書き込みの相互ブロックを解消します。また、データベース操作の競合を定義し、特に更新と読み取りの関係を整理することで、トランザクションの分離レベルを理解する土台を作ります。</summary>
    <category term="projects" label="制作"></category>
    <published>2021-12-18T06:58:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/projects/mydb/mydb5</id>
    <title>MYDB 5. ページインデックスとDMの実装</title>
    <updated>2021-12-11T07:16:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/22PSG1.webp" alt="MYDB 5. ページインデックスとDMの実装" /> <p>ページインデックスはDM層の重要な構成要素です。各ページの空き容量をキャッシュすることで挿入処理を効率化し、上位モジュールが長い探索をせずに適切なページを素早く見つけられるようにします。実装ではデータ項目（DataItem）の抽象化とも密接に連携し、データベースの効率的な動作を支えます。</p> <a class="view-full" href="https://blog.shinya.click/ja/projects/mydb/mydb5" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/projects/mydb/mydb5"></link>
    <summary>ページインデックスはDM層の重要な構成要素です。各ページの空き容量をキャッシュすることで挿入処理を効率化し、上位モジュールが長い探索をせずに適切なページを素早く見つけられるようにします。実装ではデータ項目（DataItem）の抽象化とも密接に連携し、データベースの効率的な動作を支えます。</summary>
    <category term="projects" label="制作"></category>
    <published>2021-12-11T07:16:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/projects/mydb/mydb4</id>
    <title>MYDB 4. ログファイルと復旧戦略</title>
    <updated>2021-12-08T14:55:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/TRcbsj.webp" alt="MYDB 4. ログファイルと復旧戦略" /> <p>MYDBでは、クラッシュ後にデータを復旧できるよう、ログファイルが重要な役割を担います。DMは下位のデータを操作するたびにログを生成・記録し、連続したログ列を作ります。チェックサムと各操作の記録を含む所定のバイナリー形式で保存することで、再起動時にデータの状態を正確に再構築し、整合性と完全性を保ちます。</p> <a class="view-full" href="https://blog.shinya.click/ja/projects/mydb/mydb4" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/projects/mydb/mydb4"></link>
    <summary>MYDBでは、クラッシュ後にデータを復旧できるよう、ログファイルが重要な役割を担います。DMは下位のデータを操作するたびにログを生成・記録し、連続したログ列を作ります。チェックサムと各操作の記録を含む所定のバイナリー形式で保存することで、再起動時にデータの状態を正確に再構築し、整合性と完全性を保ちます。</summary>
    <category term="projects" label="制作"></category>
    <published>2021-12-08T14:55:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/projects/mydb/mydb3</id>
    <title>MYDB 3. データページのキャッシュと管理</title>
    <updated>2021-12-05T07:28:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/jlFC4E.webp" alt="MYDB 3. データページのキャッシュと管理" /> <p>DMはファイルシステムをページとして抽象化し、ページ単位で読み書きとキャッシュを行います。データページのデフォルトサイズは8Kで、大量の書き込みではサイズの調整によって性能を高められます。実装済みの汎用キャッシュ基盤を使い、ここではページ構造を具体的に定義して、効率よくページを管理します。</p> <a class="view-full" href="https://blog.shinya.click/ja/projects/mydb/mydb3" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/projects/mydb/mydb3"></link>
    <summary>DMはファイルシステムをページとして抽象化し、ページ単位で読み書きとキャッシュを行います。データページのデフォルトサイズは8Kで、大量の書き込みではサイズの調整によって性能を高められます。実装済みの汎用キャッシュ基盤を使い、ここではページ構造を具体的に定義して、効率よくページを管理します。</summary>
    <category term="projects" label="制作"></category>
    <published>2021-12-05T07:28:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/projects/mydb/mydb2</id>
    <title>MYDB 2. 参照カウント方式のキャッシュ基盤と共有バイト配列</title>
    <updated>2021-11-30T15:18:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/WdIGoG.webp" alt="MYDB 2. 参照カウント方式のキャッシュ基盤と共有バイト配列" /> <p>データマネージャー（DM）は上位モジュールとファイルシステムをつなぎ、ページとキャッシュを管理しながら、データの安全性と復旧を支えます。キャッシュには従来のLRUではなく参照カウント方式を採用し、汎用性と効率を高めて、この先のデータ操作の土台を作ります。</p> <a class="view-full" href="https://blog.shinya.click/ja/projects/mydb/mydb2" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/projects/mydb/mydb2"></link>
    <summary>データマネージャー（DM）は上位モジュールとファイルシステムをつなぎ、ページとキャッシュを管理しながら、データの安全性と復旧を支えます。キャッシュには従来のLRUではなく参照カウント方式を採用し、汎用性と効率を高めて、この先のデータ操作の土台を作ります。</summary>
    <category term="projects" label="制作"></category>
    <published>2021-11-30T15:18:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/projects/mydb/mydb1</id>
    <title>MYDB 1. まずはシンプルなTMから</title>
    <updated>2021-11-28T08:10:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/H4zZAK.webp" alt="MYDB 1. まずはシンプルなTMから" /> <p>MYDBではXIDファイルでトランザクションを管理します。各トランザクションには1から増える一意のXIDがあり、XID 0は常にコミット済みのスーパートランザクションです。TransactionManagerがこのファイルを管理し、実行中・コミット済み・中止済みという3つの状態を記録します。この仕組みにより状態を正確に照会・管理でき、システムの安定性と信頼性を支えます。</p> <a class="view-full" href="https://blog.shinya.click/ja/projects/mydb/mydb1" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/projects/mydb/mydb1"></link>
    <summary>MYDBではXIDファイルでトランザクションを管理します。各トランザクションには1から増える一意のXIDがあり、XID 0は常にコミット済みのスーパートランザクションです。TransactionManagerがこのファイルを管理し、実行中・コミット済み・中止済みという3つの状態を記録します。この仕組みにより状態を正確に照会・管理でき、システムの安定性と信頼性を支えます。</summary>
    <category term="projects" label="制作"></category>
    <published>2021-11-28T08:10:00Z</published>
  </entry>
  <entry>
    <id>https://blog.shinya.click/ja/projects/mydb/mydb0</id>
    <title>MYDB 0. プロジェクト構成と、先に伝えておきたいこと</title>
    <updated>2021-11-27T06:43:00Z</updated>
    <author>
      <name>shinya</name>
    </author>
    <content type="html">
      <![CDATA[<img src="https://blog-img.774352199.xyz/xfci2J.webp" alt="MYDB 0. プロジェクト構成と、先に伝えておきたいこと" /> <p>MYDBは、データベースの基本原理を学び、実装してみるための個人プロジェクトです。空き時間を使い、半月あまりかけて作りました。大学のデータベースシステムの授業で基礎には触れたものの、インターン中は授業を口実にサボってばかりでした。面接で正直に答えても大きな問題にはなりませんでしたが、それをきっかけに自分の知識を見直し、実際に手を動かして学ぼうと考えるようになりました。そうして生まれたのがこのプロジェクトです。</p> <a class="view-full" href="https://blog.shinya.click/ja/projects/mydb/mydb0" target="_blank">全文を読む</a>]]>
    </content>
    <link href="https://blog.shinya.click/ja/projects/mydb/mydb0"></link>
    <summary>MYDBは、データベースの基本原理を学び、実装してみるための個人プロジェクトです。空き時間を使い、半月あまりかけて作りました。大学のデータベースシステムの授業で基礎には触れたものの、インターン中は授業を口実にサボってばかりでした。面接で正直に答えても大きな問題にはなりませんでしたが、それをきっかけに自分の知識を見直し、実際に手を動かして学ぼうと考えるようになりました。そうして生まれたのがこのプロジェクトです。</summary>
    <category term="projects" label="制作"></category>
    <published>2021-11-27T06:43:00Z</published>
  </entry>
</feed>
