<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Kenji Suzuki</title>
    <description>The latest articles on Forem by Kenji Suzuki (@suzulabo).</description>
    <link>https://forem.com/suzulabo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3439965%2F29b9bfdd-2bca-4cd8-84a9-95b28dc8fbe3.jpg</url>
      <title>Forem: Kenji Suzuki</title>
      <link>https://forem.com/suzulabo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/suzulabo"/>
    <language>en</language>
    <item>
      <title>Restoring files with git</title>
      <dc:creator>Kenji Suzuki</dc:creator>
      <pubDate>Thu, 20 Nov 2025 00:43:34 +0000</pubDate>
      <link>https://forem.com/suzulabo/restoring-files-with-git-34n</link>
      <guid>https://forem.com/suzulabo/restoring-files-with-git-34n</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git restore &lt;span class="nt"&gt;--source&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;main &lt;span class="nt"&gt;--&lt;/span&gt; path/to/fileA.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Rebase and Always Take the Upstream Version</title>
      <dc:creator>Kenji Suzuki</dc:creator>
      <pubDate>Wed, 19 Nov 2025 02:43:47 +0000</pubDate>
      <link>https://forem.com/suzulabo/rebase-and-always-take-the-upstream-version-1m18</link>
      <guid>https://forem.com/suzulabo/rebase-and-always-take-the-upstream-version-1m18</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git rebase main
git checkout &lt;span class="nt"&gt;--theirs&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;path&lt;span class="o"&gt;}&lt;/span&gt;
git add &lt;span class="nb"&gt;.&lt;/span&gt;
git rebase &lt;span class="nt"&gt;--continue&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Error checking for GCE startup scripts</title>
      <dc:creator>Kenji Suzuki</dc:creator>
      <pubDate>Sun, 26 Oct 2025 01:58:08 +0000</pubDate>
      <link>https://forem.com/suzulabo/error-checking-for-gce-startup-scripts-23fi</link>
      <guid>https://forem.com/suzulabo/error-checking-for-gce-startup-scripts-23fi</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo journalctl -u google-startup-scripts.service --no-pager
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>google</category>
      <category>cli</category>
      <category>devops</category>
      <category>linux</category>
    </item>
    <item>
      <title>Cloudflare WorkersのレスポンスをCDNにキャッシュさせたかったが、WorkersがCDNそのものだった</title>
      <dc:creator>Kenji Suzuki</dc:creator>
      <pubDate>Sun, 14 Sep 2025 07:41:16 +0000</pubDate>
      <link>https://forem.com/suzulabo/cloudflare-workersnoresuponsuwocdnnikiyatusiyusasetakatutaga-workersgacdnsonomonodatuta-1cff</link>
      <guid>https://forem.com/suzulabo/cloudflare-workersnoresuponsuwocdnnikiyatusiyusasetakatutaga-workersgacdnsonomonodatuta-1cff</guid>
      <description>&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/announcing-app/announcing" rel="noopener noreferrer"&gt;https://github.com/announcing-app/announcing&lt;/a&gt; ではimmutableなレスポンスを返すように意識して設計している&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.katsubemakito.net/firebase/cloudfunctions-cdn-cache" rel="noopener noreferrer"&gt;https://blog.katsubemakito.net/firebase/cloudfunctions-cdn-cache&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;上記のイメージでWorkersのレスポンスをCDNにキャッシュさせて、Workersの実行回数を減らしたい
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello at &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;toISOString&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;content-type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Cache-Control&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;public, s-maxage=86400, immutable&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;上記のようなコードを書いてもキャッシュされない(毎回日付が変わる)

&lt;ul&gt;
&lt;li&gt;AIに聞いてもとりあえずこういうコードを書いてくる&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;WorkersはCDNの後にぶら下がっているのではなく、CDN(Edge)そのものの上で動いている模様&lt;/li&gt;

&lt;li&gt;
&lt;a href="https://developers.cloudflare.com/workers/reference/how-workers-works/" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://developers.cloudflare.com/workers/reference/how-workers-works/" rel="noopener noreferrer"&gt;https://developers.cloudflare.com/workers/reference/how-workers-works/&lt;/a&gt;
&lt;/li&gt;

&lt;li&gt;このページをちゃんと理解できてなかった&lt;/li&gt;

&lt;li&gt;試しにカスタムドメインのDNSにCNAMEで&lt;code&gt;~~~~.workers.dev&lt;/code&gt;を設定したら、すぐエラー(&lt;code&gt;Connection timed out(522)&lt;/code&gt;)が返ってきたので、やはりoriginのように扱うのは無理そう&lt;/li&gt;

&lt;li&gt;Workers内でCache APIを使うのが正解の模様

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developers.cloudflare.com/workers/runtime-apis/cache/" rel="noopener noreferrer"&gt;https://developers.cloudflare.com/workers/runtime-apis/cache/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Cache APIにより、キャッシュ無効化は管理しやすくなる&lt;/li&gt;

&lt;li&gt;Workersのリクエスト回数をケチろうとしてはいけない

&lt;ul&gt;
&lt;li&gt;(それでも十分安いとは思うが)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;実行コードを軽量にすることを努力する

&lt;ul&gt;
&lt;li&gt;メモリ128MBのIsolatesはそれなりにシビアに考えたほうがよさそう&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>生成AI時代のベテランと若手</title>
      <dc:creator>Kenji Suzuki</dc:creator>
      <pubDate>Sun, 14 Sep 2025 02:45:16 +0000</pubDate>
      <link>https://forem.com/suzulabo/sheng-cheng-aishi-dai-nobeterantoruo-shou-46k6</link>
      <guid>https://forem.com/suzulabo/sheng-cheng-aishi-dai-nobeterantoruo-shou-46k6</guid>
      <description>&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://hibis.connpass.com/event/361994/" rel="noopener noreferrer"&gt;https://hibis.connpass.com/event/361994/&lt;/a&gt; のイベントを聞いてきた&lt;/li&gt;
&lt;li&gt;当たり前のことを当たり前にやることが大事というアタリマエのことを確認できた

&lt;ul&gt;
&lt;li&gt;ドキュメントの整備&lt;/li&gt;
&lt;li&gt;コードレビューは必須&lt;/li&gt;
&lt;li&gt;段階的な対話 etc&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;その中で「若手が臆せずチャレンジできるようになった」という話が印象に残った&lt;/p&gt;

&lt;h2&gt;
  
  
  「ベテラン」と「若手」とは
&lt;/h2&gt;

&lt;p&gt;実現することに対して以下のような人で年齢ではない&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ベテラン -&amp;gt; なにが必要かイメージできる(あれやって、これ調べて、たぶんこのへんでつまづいて...など)&lt;/li&gt;
&lt;li&gt;若手 -&amp;gt; イメージできない部分が多い&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  それぞれの効果
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;AIエージェントの恩恵が大きいのは若手

&lt;ul&gt;
&lt;li&gt;手軽な相談相手&lt;/li&gt;
&lt;li&gt;総合的な能力はAIエージェントのほうが上&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;ベテランは調べるタスクは楽になった&lt;/li&gt;

&lt;li&gt;ただしベテランは生産性についてはAIエージェントがうまく働かなかったときの手戻りで相殺されやすい

&lt;ul&gt;
&lt;li&gt;元々ストレートにゴールに向かえるため&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  どうするか
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;若手はAIエージェントの助けを借りてひたすら成果物を作る&lt;/li&gt;
&lt;li&gt;ベテランはひたすらそれをレビューする&lt;/li&gt;
&lt;li&gt;若手はベテランから正解を学び、ベテランは若手からAIエージェントのノウハウを学ぶ(共に創る)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;というサイクルができれば理想的だろうか&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;これまでは若手を育てるのにロープで引きずり上げたり、下から押し上げたり、またはずっとそばにいるよ的な労力のかかる方法が多かったが、AIエージェントがちょうどいい階段になってくれそう&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>Cloudflare workersのリバースプロキシ</title>
      <dc:creator>Kenji Suzuki</dc:creator>
      <pubDate>Sat, 13 Sep 2025 07:23:15 +0000</pubDate>
      <link>https://forem.com/suzulabo/cloudflare-workersnoribasupurokisi-3gob</link>
      <guid>https://forem.com/suzulabo/cloudflare-workersnoribasupurokisi-3gob</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developers.cloudflare.com/workers/examples/cache-using-fetch/" rel="noopener noreferrer"&gt;https://developers.cloudflare.com/workers/examples/cache-using-fetch/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zenn.dev/yusukebe/articles/647aa9ba8c1550" rel="noopener noreferrer"&gt;https://zenn.dev/yusukebe/articles/647aa9ba8c1550&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;workersのキャッシュを調べていて以下のようなサンプルがあってパニックになった。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="na"&gt;request&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;これだとループするだけに見える。&lt;br&gt;
プロキシ関連なのでrequestにoriginのURLが入ってくるなにかがあるのかと思ったが少し違った。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;workers.mydomain.com&lt;/li&gt;
&lt;li&gt;workers.myorigin.com&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;というようなドメインがあり、&lt;code&gt;mydomain.com&lt;/code&gt;のCloudflareのDNSレコード設定で、&lt;code&gt;workers CNAME workers.myorigin.com&lt;/code&gt;というような設定をして、proxiedをONにすると、workers.mydomain.comがworkers.myorigin.comのリバースプロキシとなる。&lt;br&gt;
さらにWorkers Routesの設定で&lt;code&gt;workers.mydomain.com&lt;/code&gt;にworkersを紐づけると、&lt;code&gt;workers.mydomain.com&lt;/code&gt;のアクセス時にそのworkersが実行される。&lt;br&gt;
workers内で&lt;code&gt;workers.mydomain.com&lt;/code&gt;をfetchすると、CNAMEの&lt;code&gt;workers.myorigin.com&lt;/code&gt;へのリクエストになる、という仕組みだった。&lt;/p&gt;

</description>
    </item>
    <item>
      <title>dev.toにインポート</title>
      <dc:creator>Kenji Suzuki</dc:creator>
      <pubDate>Wed, 20 Aug 2025 08:05:54 +0000</pubDate>
      <link>https://forem.com/suzulabo/devtoniinpoto-4lo8</link>
      <guid>https://forem.com/suzulabo/devtoniinpoto-4lo8</guid>
      <description>&lt;ul&gt;
&lt;li&gt;雑多なメモの記録にdev.toを使うことにした

&lt;ul&gt;
&lt;li&gt;短文でもよさそう&lt;/li&gt;
&lt;li&gt;テック系以外も大丈夫そう&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;過去の投稿日にすることはできないようなので、本文に日付を入れた&lt;/li&gt;

&lt;li&gt;とりあえず地道に投稿してたがlimitに引っかかるようになったので、バッチでimportしたくなった&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://github.com/sinedied/devto-cli" rel="noopener noreferrer"&gt;devto-cli&lt;/a&gt;を試したが使いづらかった&lt;/li&gt;

&lt;li&gt;自前で用意することにした

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/suzulabo/devto-posts" rel="noopener noreferrer"&gt;https://github.com/suzulabo/devto-posts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ChatGPTの出力を手直し&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;5秒のインターバル開けても3投稿くらいで&lt;code&gt;Failed to post article: 429 Too Many Requests&lt;/code&gt;のエラーになった&lt;/li&gt;

&lt;li&gt;60秒開けたら最後までできた&lt;/li&gt;

&lt;li&gt;今後は普通にWebコンソールから入力する&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>devto</category>
      <category>cli</category>
      <category>automation</category>
      <category>productivity</category>
    </item>
    <item>
      <title>SentryのUptime Monitoring</title>
      <dc:creator>Kenji Suzuki</dc:creator>
      <pubDate>Wed, 20 Aug 2025 07:51:36 +0000</pubDate>
      <link>https://forem.com/suzulabo/sentrynouptime-monitoring-54m1</link>
      <guid>https://forem.com/suzulabo/sentrynouptime-monitoring-54m1</guid>
      <description>&lt;h6&gt;
  
  
  2025-08-17
&lt;/h6&gt;




&lt;ul&gt;
&lt;li&gt;最初の一個が勝手に追加されて 1m 毎にリクエストが飛んでくる&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Issues&lt;/code&gt;-&amp;gt;&lt;code&gt;Alerts&lt;/code&gt;から設定できる&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>monitoring</category>
      <category>alerts</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>FCMの404メッセージ</title>
      <dc:creator>Kenji Suzuki</dc:creator>
      <pubDate>Wed, 20 Aug 2025 07:50:36 +0000</pubDate>
      <link>https://forem.com/suzulabo/fcmno404metusezi-fil</link>
      <guid>https://forem.com/suzulabo/fcmno404metusezi-fil</guid>
      <description>&lt;h6&gt;
  
  
  2025-08-08
&lt;/h6&gt;






&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Requested entity was not found.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;NOT_FOUND&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;details&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;type.googleapis.com/google.firebase.fcm.v1.FcmError&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;errorCode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;UNREGISTERED&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>typescript</category>
      <category>bug</category>
      <category>errors</category>
    </item>
    <item>
      <title>sveltekit - snapshotのrestoreのdataが`{}`</title>
      <dc:creator>Kenji Suzuki</dc:creator>
      <pubDate>Wed, 20 Aug 2025 07:49:35 +0000</pubDate>
      <link>https://forem.com/suzulabo/sveltekit-snapshotnorestorenodataga-2ecc</link>
      <guid>https://forem.com/suzulabo/sveltekit-snapshotnorestorenodataga-2ecc</guid>
      <description>&lt;h6&gt;
  
  
  2025-08-06
&lt;/h6&gt;




&lt;ul&gt;
&lt;li&gt;VirtualScrollList で発生&lt;/li&gt;
&lt;li&gt;条件で生成されたり、しなかったりすると発生するのかも&lt;/li&gt;
&lt;li&gt;要検証&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>sveltekit</category>
      <category>bug</category>
      <category>frontend</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>+layout.tsと+error.svelte</title>
      <dc:creator>Kenji Suzuki</dc:creator>
      <pubDate>Wed, 20 Aug 2025 07:48:34 +0000</pubDate>
      <link>https://forem.com/suzulabo/layouttstoerrorsvelte-48cn</link>
      <guid>https://forem.com/suzulabo/layouttstoerrorsvelte-48cn</guid>
      <description>&lt;h6&gt;
  
  
  2025-08-03
&lt;/h6&gt;




&lt;ul&gt;
&lt;li&gt;+layout.ts の error は上位の+error.svelte に流れる&lt;/li&gt;
&lt;li&gt;同じ階層の+error.svelte を使うには+page.ts から error する必要がある&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>svelte</category>
      <category>typescript</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>cloudflare workersのdeployでエラー</title>
      <dc:creator>Kenji Suzuki</dc:creator>
      <pubDate>Wed, 20 Aug 2025 07:47:34 +0000</pubDate>
      <link>https://forem.com/suzulabo/cloudflare-workersnodeploydeera-352j</link>
      <guid>https://forem.com/suzulabo/cloudflare-workersnodeploydeera-352j</guid>
      <description>&lt;h6&gt;
  
  
  2025-07-16
&lt;/h6&gt;






&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;packages/reader deploy:  ⛅️ wrangler 4.22.0 (update available 4.24.3)
packages/reader deploy: ─────────────────────────────────────────────
packages/writer deploy:  ⛅️ wrangler 4.22.0 (update available 4.24.3)
packages/writer deploy: ─────────────────────────────────────────────
packages/writer deploy: ✘ [ERROR] Build failed with 1 error:
packages/writer deploy:   ✘ [ERROR] Could not resolve "minimatch"
packages/writer deploy:
packages/writer deploy:       .svelte-kit/output/server/chunks/hooks.server.js:22328:34:
packages/writer deploy:         22328 │             globMatcher = require("minimatch").minimatch;
packages/writer deploy:               ╵                                   ~~~~~~~~~~~
packages/writer deploy:
packages/writer deploy:     You can mark the path "minimatch" as external to exclude it from the bundle, which will remove this error and leave the unresolved path in the bundle. You can also surround this "require" call with a try/catch block to handle this failure at run-time instead of bundle-time.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/getsentry/sentry-javascript/issues/16613" rel="noopener noreferrer"&gt;https://github.com/getsentry/sentry-javascript/issues/16613&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;sveltekit のアップデートで治る模様&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;catalog:&lt;/code&gt;を使ったバージョンアップの挙動が意味不明&lt;/li&gt;
&lt;li&gt;pnpm-workspace.yaml をアップデートしても monorepo に反映されない&lt;/li&gt;
&lt;li&gt;writer で outdated すると反映されているが、reader で outdated すると反映されてない&lt;/li&gt;
&lt;li&gt;reader で update すると reader の outdated で反映されているが、writer が戻るというよくわからない状況が発生&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pnpm update -r @sentry/sveltekit @sveltejs/kit --latest&lt;/code&gt;という感じでアップデートするのがよさそう&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
  </channel>
</rss>
