<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>科技 on Jabee&#39;s Blog</title>
    <link>https://jabee.net/tags/%E7%A7%91%E6%8A%80/</link>
    <description>Recent content in 科技 on Jabee&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-tw</language>
    <lastBuildDate>Fri, 23 Jan 2026 17:39:47 +0800</lastBuildDate><atom:link href="https://jabee.net/tags/%E7%A7%91%E6%8A%80/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Empowering Traditional Industry with AI and Global Connectivity</title>
      <link>https://jabee.net/notes/260123/</link>
      <pubDate>Fri, 23 Jan 2026 17:39:47 +0800</pubDate>
      
      <guid>https://jabee.net/notes/260123/</guid>
      <description>In the second half of 2025, I participated in the Taoyuan AI University program, an experience that gave me a profound understanding of the critical importance of AI and digitalization in traditional industries. My team and I had the privilege of partnering with Hsuan Jui Co., Ltd. (宣瑞股份有限公司) to spearhead their digital transformation. During this period, I focused on developing and</description>
      <content:encoded>&lt;p&gt;In the second half of 2025, I participated in the Taoyuan AI University program, an experience that gave me a profound understanding of the critical importance of AI and digitalization in traditional industries.&lt;/p&gt;
&lt;p&gt;My team and I had the privilege of partnering with Hsuan Jui Co., Ltd. (宣瑞股份有限公司) to spearhead their digital transformation. During this period, I focused on developing and implementing a Digital Quotation System enhanced with AI assistance. This solution successfully saved the company over one hour of processing time per order quotation, drastically improving operational efficiency and allowing the team to focus on high-value tasks.&lt;/p&gt;
&lt;p&gt;As we move into 2026, the rise of Large Language Models (LLMs) and AI Agents is no longer just a trend; it is a fundamental shift in how business is conducted.&lt;/p&gt;
&lt;p&gt;For Taiwan’s traditional industries, the challenge is clear: it is no longer about whether to adopt AI, but how to strategically leverage AI to stay competitive. Integrating AI Agents into legacy workflows isn&amp;rsquo;t just about saving time and costs—it’s about enabling enterprises to focus on higher-value initiatives and innovation.&lt;/p&gt;
&lt;p&gt;I am proud to have contributed to the smart upgrade of our local enterprises and am excited to see how AI-human collaboration will continue to reshape our industries this year! I will continue to help traditional industries adopt AI, empowering them to connect with the global market and stay ahead in the world stage.&lt;/p&gt;
&lt;!DOCTYPE html&gt;
&lt;html lang=&#34;en&#34;&gt;
&lt;head&gt;
    &lt;meta name=&#34;viewport&#34; content=&#34;user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1&#34;&gt;
    &lt;script src=&#34;https://cdn.jsdelivr.net/npm/jquery@3.3.1/dist/jquery.min.js&#34;&gt;&lt;/script&gt;
    &lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdn.jsdelivr.net/npm/nanogallery2@3.0.5/dist/css/nanogallery2.min.css&#34;&gt;
    &lt;script src=&#34;https://cdn.jsdelivr.net/npm/nanogallery2@3.0.5/dist/jquery.nanogallery2.min.js&#34;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div data-nanogallery2=&#39;{
	 &#34;thumbnailDisplayTransition&#34;:          &#34;none&#34;,
    &#34;thumbnailHeight&#34;:  &#34;400&#34;,
      &#34;thumbnailWidth&#34;:   &#34;auto&#34;,
    &#34;galleryMosaic&#34; :   [
      { &#34;c&#34;: 1, &#34;r&#34;: 1, &#34;w&#34;: 2, &#34;h&#34;: 2 },
      { &#34;c&#34;: 3, &#34;r&#34;: 1, &#34;w&#34;: 1, &#34;h&#34;: 1 },
      { &#34;c&#34;: 3, &#34;r&#34;: 2, &#34;w&#34;: 1, &#34;h&#34;: 1 },
      { &#34;c&#34;: 4, &#34;r&#34;: 1, &#34;w&#34;: 1, &#34;h&#34;: 1 },
      { &#34;c&#34;: 4, &#34;r&#34;: 2, &#34;w&#34;: 1, &#34;h&#34;: 1 },
      { &#34;c&#34;: 1, &#34;r&#34;: 3, &#34;w&#34;: 2, &#34;h&#34;: 1 },
      { &#34;c&#34;: 3, &#34;r&#34;: 3, &#34;w&#34;: 2, &#34;h&#34;: 1 },
      { &#34;c&#34;: 1, &#34;r&#34;: 4, &#34;w&#34;: 1, &#34;h&#34;: 1 }
    ],
     &#34;thumbnailDisplayTransitionDuration&#34;:  500,
     &#34;thumbnailDisplayInterval&#34;:            30,
     &#34;galleryDisplayTransition&#34;:            &#34;none&#34;,
     &#34;galleryDisplayTransitionDuration&#34;:    500,
     &#34;galleryDisplayMode&#34;: &#34;rows&#34;,
     &#34;thumbnailDisplayOutsideScreen&#34;: &#34;false&#34;,
     &#34;eventsDebounceDelay&#34;: 10,
     &#34;thumbnailL1BorderHorizontal&#34;: 0,
     &#34;thumbnailL1BorderVertical&#34;: 0,
     &#34;thumbnailLabel&#34;: {
        &#34;titleFontSize&#34;: &#34;0.6em&#34;
     },
     &#34;thumbnailHoverEffect2&#34;: &#34;image_scale_1.00_1.10|label_backgroundColor_rgba(0,0,0,0)_rgba(255,255,255,0)&#34;,
     &#34;galleryTheme&#34;: {
        &#34;thumbnail&#34;: {
            &#34;borderRadius&#34;: &#34;8px&#34;
        }
     },
     &#34;thumbnailToolbarImage&#34;: {
        &#34;topLeft&#34;: &#34;&#34;,
        &#34;topRight&#34;: &#34;&#34;,
        &#34;bottomLeft&#34;: &#34;&#34;,
        &#34;bottomRight&#34;: &#34;&#34;
     },
     &#34;viewerToolbar&#34;:   {
        &#34;display&#34;: true,
        &#34;standard&#34;: &#34;label&#34;
     },
     &#34;viewerTools&#34;:     {
        &#34;topLeft&#34;:    &#34;pageCounter, playPauseButton&#34;,
        &#34;topRight&#34;:   &#34;downloadButton, rotateLeft, zoomButton, fullscreenButton, closeButton&#34;
     },
     &#34;viewerGalleryTWidth&#34;: 40,
     &#34;viewerGalleryTHeight&#34;: 40
}&#39;&gt;
    
&lt;a href=&#34;https://jabee.net/notes/260123/1_hu521b1d8cd362f3e53fe2f89541ff8555_2858049_0x0_q85_h2__3.webp&#34; data-ngThumb=&#34;/notes/260123/1_hu521b1d8cd362f3e53fe2f89541ff8555_2858049_0x0_q85_h2__3.webp&#34;
    &gt;&lt;/a
&gt;
&lt;a href=&#34;https://jabee.net/notes/260123/2_hu2a7452ffe7eaad81622ff1481bc9e3b5_2843522_0x0_q85_h2__3.webp&#34; data-ngThumb=&#34;/notes/260123/2_hu2a7452ffe7eaad81622ff1481bc9e3b5_2843522_0x0_q85_h2__3.webp&#34;
    &gt;&lt;/a
&gt;
&lt;a href=&#34;https://jabee.net/notes/260123/3_hubfb9dd93560d20048406c2728aacfb93_2815537_0x0_q85_h2__3.webp&#34; data-ngThumb=&#34;/notes/260123/3_hubfb9dd93560d20048406c2728aacfb93_2815537_0x0_q85_h2__3.webp&#34;
    &gt;&lt;/a
&gt;

&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;

</content:encoded>
    </item>
    
    <item>
      <title>當我們被各種訂閱服務綁架</title>
      <link>https://jabee.net/notes/241231/</link>
      <pubDate>Tue, 31 Dec 2024 13:37:50 +0800</pubDate>
      
      <guid>https://jabee.net/notes/241231/</guid>
      <description>本週，我的父親沒有付款我們家的，Youtube Premium，讓我開始很難受。 我和訂閱服務的起源 我從國中開始就有在使用 KKBOX，後來發現 Spotify</description>
      <content:encoded>&lt;p&gt;本週，我的父親沒有付款我們家的，Youtube Premium，讓我開始很難受。&lt;/p&gt;
&lt;h1 id=&#34;我和訂閱服務的起源&#34;&gt;我和訂閱服務的起源&lt;/h1&gt;
&lt;p&gt;我從國中開始就有在使用 KKBOX，後來發現 Spotify 更便宜、更好用，改訂閱 Spotify。&lt;/p&gt;
&lt;p&gt;後來上了高中，陸續訂閱了 YT、Netflix、Disney+（拼車）、Apple Music、 Xbox game pass、Switch Online、Tidal。&lt;/p&gt;
&lt;p&gt;除了遊戲的訂閱很少用以外，其實我開始大量依賴在各種訂閱服務，我當時甚至覺得 Meta 出訂閱服務的話，我一定會買，因為我受夠了看各種詐騙廣告。&lt;/p&gt;
&lt;h1 id=&#34;這兩年大量減少了訂閱的服務&#34;&gt;這兩年大量減少了訂閱的服務&lt;/h1&gt;
&lt;p&gt;我自己認為我在雲儲存的服務上面，已經省下大量的費用，因為自己有 NAS ，所以備份的價格只需付電費即可。&lt;/p&gt;
&lt;h2 id=&#34;音樂&#34;&gt;音樂&lt;/h2&gt;
&lt;p&gt;但其他的串流服務真的是無法不依賴付費訂閱，特別是音樂方面。音樂的訂閱服務我認為是在整個全球訂閱服務市場中，對我來說最具價格優勢的。如果想聽音樂，在現今還要一張一張唱片購買數位版，那我大概還沒買到我想聽的音樂，我家就已經傾家蕩產了。所以一個月 3-6塊美金的價格，可以聽一整個月的音樂，個人覺得相當不錯。
整體服務來說，最好的一定是 Apple Music。在古典樂的數量來說，相當完整；在音質方面，蘋果提供最高 24 Bits 的 Lossless。&lt;/p&gt;
&lt;p&gt;但今年夏天，我的學生方案突然被 Unidays 取消，聯絡了蘋果和 Unidays 互踢皮球，告訴我是對方的問題。後來懶得處理就乾脆先聽 YT Music（反正我比較少坐在房間聽音樂了）。&lt;/p&gt;
&lt;h2 id=&#34;減少訂閱服務&#34;&gt;減少訂閱服務&lt;/h2&gt;
&lt;p&gt;截至今年底，目前我已經沒有任何的訂閱服務（除了 Azure）。&lt;/p&gt;
&lt;h1 id=&#34;最難受的點&#34;&gt;最難受的點&lt;/h1&gt;
&lt;p&gt;我覺得最難受的大概就是 YT，我原先每天使用的頻率相當高，所以目前替代方案就是少看 YT，多看 B站。我個人認為， YT 目前的廣告已經多到不能看了。&lt;/p&gt;
&lt;p&gt;至於音樂的部分，本週我馬上自架了 Navidrome ，讓我可以繼續聽音樂，不過實際上真的不會比 Spotify 還要好用&amp;hellip;&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>DDPM paper notes</title>
      <link>https://jabee.net/notes/241226/</link>
      <pubDate>Thu, 26 Dec 2024 11:41:33 +0800</pubDate>
      
      <guid>https://jabee.net/notes/241226/</guid>
      <description>這篇主要是參考李教授的影片，以及網路上的文章，整理的筆記。 Algorithm 1: Training 第 1 行：repeat 作用： 開始一個迭代訓練過程，直到模型收斂 第 2 行 作用： 從數</description>
      <content:encoded>&lt;p&gt;這篇主要是參考李教授的影片，以及網路上的文章，整理的筆記。&lt;/p&gt;
&lt;h1 id=&#34;algorithm-1-training&#34;&gt;Algorithm 1: Training&lt;/h1&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image_hu9a8e53ec596526a4bd07c57d031e7b5d_49773_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;h3 id=&#34;第-1-行repeat&#34;&gt;&lt;strong&gt;第 1 行：&lt;code&gt;repeat&lt;/code&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;作用：&lt;/strong&gt; 開始一個迭代訓練過程，直到模型收斂&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;第-2-行&#34;&gt;&lt;strong&gt;第 2 行&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;作用：&lt;/strong&gt; 從數據分佈 中取一個樣本 (x0)（即從訓練數據集中抽取一個數據點）。
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;x0 代表 clean Image&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;q(x0)：&lt;/strong&gt; 數據分佈，即訓練集中數據的真實分佈。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;第-3-行&#34;&gt;&lt;strong&gt;第 3 行&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;作用：&lt;/strong&gt; 隨機選擇一個時間t。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;第-4-行&#34;&gt;&lt;strong&gt;第 4 行&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;作用：&lt;/strong&gt; 取一個隨機噪聲樣本 。
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;解釋：&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;擴散過程中，數據會逐步被加上噪聲，最終變成完全隨機的高斯噪聲。&lt;/li&gt;
&lt;li&gt;在訓練過程中，需要用隨機噪聲模擬這個擴散過程。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;第-5-行梯度下降更新&#34;&gt;&lt;strong&gt;第 5 行：梯度下降更新&lt;/strong&gt;&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;∇_θ ‖ε − ε_θ(√ᾱ_t x_0 + √(1−ᾱ_t) ε, t)‖²
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;細節解釋：&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ε 為原始噪聲&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ε_θ(√ᾱ_t x_0 + √(1−ᾱ_t) ε, t) 這一段做的則是 noise predictor。&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;而 noise predictor 會有以下兩個 input&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;input 1. √ᾱ_t x_0 + √(1−ᾱ_t) ε ; input 2. t 代表第幾個回合的 回合越後面，加上的噪聲越多。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image1_huff62052c052522d8a295d72b507967e2_288851_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;√ᾱ_t x_0 + √(1−ᾱ_t) ε ：這邊 ᾱ_t 是根據 Unuiform 出來的 t ，如果 t 值越大，ᾱ_t 越小。 ᾱ_t 越小，代表加上的噪聲比例則越多（右邊乘上的√(1−ᾱ_t)）。&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;目標：&lt;/strong&gt; 最小化 ，即讓模型輸出的噪聲與實際加入的噪聲越接近越好。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;梯度下降：&lt;/strong&gt; 對模型的損失函數進行梯度下降，更新參數 。利用 MSE 平均平方差損失去算 梯度下降率。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;第-6-行until-converged&#34;&gt;&lt;strong&gt;第 6 行：&lt;code&gt;until converged&lt;/code&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;作用：&lt;/strong&gt; 持續迭代，直到模型訓練收斂。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1 id=&#34;algorithm-2-sampling&#34;&gt;Algorithm 2: Sampling&lt;/h1&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image2_hua27a9c6b5b4395b8fc11c69cef33b5fd_49463_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;h3 id=&#34;第一行-給訂一個-x-大-t-純雜訊圖&#34;&gt;&lt;strong&gt;第一行 給訂一個 X 大 T 純雜訊圖&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;意義&lt;/strong&gt;：從標準高斯分佈（均值為 0，方差為 1）中隨機生成一個噪聲樣本作為起始點。&lt;/li&gt;
&lt;li&gt;X 大 T 代表的是 &lt;strong&gt;純雜訊圖&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;第二行-迴圈開始&#34;&gt;&lt;strong&gt;第二行 迴圈開始&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;從純噪聲一路 Sampling 到 生成圖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;意義&lt;/strong&gt;：從時間t（最純的噪聲）開始，逐步回溯到 （逐漸去噪直到還原出清晰的數據）。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;第三行-噪聲條件&#34;&gt;&lt;strong&gt;第三行 噪聲條件&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;意義&lt;/strong&gt;：在 Sampling 階段，會在做完減去 Noise predictor 後，再加上 z 噪聲（請看第四行）
&lt;ul&gt;
&lt;li&gt;但在 t == 0 時，已經完成 Sampling ，因此不再加上 z 。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;第四行&#34;&gt;&lt;strong&gt;第四行&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image3_hue0212841e2be39d38ad103616c075fba_70948_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;x_{t-1} = (1 / √(a_t)) * (x_t - (1 - a_t) / √(1 - ᾱ_t) * ϵθ(x_t, t)) + σ_t * z&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;詳見：Sampling 階段 Denoise function 化簡&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;分解理解&lt;/strong&gt;：
&lt;ol&gt;
&lt;li&gt;ϵθ(x_t, t)：Noise predicotr 根據當前 t (哪一階段) 生成噪聲&lt;/li&gt;
&lt;li&gt;(x_t - (1 - a_t) / √(1 - ᾱ_t) * ϵθ(x_t, t)：從當前數據中減去預測的噪聲部分。
&lt;ol&gt;
&lt;li&gt;x_t 代表的則是上一階段的結果，因此 = 右邊是x_{t-1} ，也就是逐步 Sample 到 x0 （clean image）。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;(1 / √(a_t))：（乘號左邊）調整信號幅度，使其回到正確的分佈範圍。&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;σ_t * z：添加隨機噪聲 ，&lt;strong&gt;模擬反向過程的隨機性&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;目的&lt;/strong&gt;：從當前的t還原到上一個t 。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image4_hue0e43d715d34150e5ba8b05b28733b9b_581244_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;第五行-迴圈結束&#34;&gt;&lt;strong&gt;第五行 迴圈結束&lt;/strong&gt;&lt;/h3&gt;
&lt;hr&gt;
&lt;h3 id=&#34;第六行-最終輸出&#34;&gt;&lt;strong&gt;第六行 最終輸出&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;意義&lt;/strong&gt;：當迴圈結束時，輸出最後的結果 ，這就是還原出的清晰數據（如圖像）。
&lt;ul&gt;
&lt;li&gt;x0 代表 clean image，因此 return x0。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1 id=&#34;maximum-likelihood-estimation&#34;&gt;Maximum Likelihood Estimation&lt;/h1&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image5_hu3de75f61d7c4fd6e1408fb9e5ecff9d8_344482_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;MLE 的目的是為了讓 Pθ 盡可能的接近於 Pdata。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pθ(x)：model 所 sample 出的 distribution 機率。&lt;/li&gt;
&lt;li&gt;Pdata(x) : 真實世界的 dataset，和 model 的 network 無關。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image6_hube5c5b645e29616129331690b0b0031c_31930_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;將每一個 sample 出來的 xi 拿 pθ 算出機率 並相乘，竟可能找出最大 θ。&lt;/p&gt;
&lt;p&gt;所以我們要找的 θ 就是機率最高的那一個（LHY 在投影片用 θ* 代表）。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;network 的目標是學習數據的規律（真實分佈𝑞(𝑥0)q(x0)），然後模擬這些數據的機率，這就是𝑝𝜃(𝑥0)pθ(x0)。它代表模型認為數據𝑥0x0有多「合理」或「可能」。
*from chatgpt&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image7_hue5935d827bd376d77279d56409934c27_130360_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;從log 相乘轉換成 相加log ，相加 log 這樣會近似於 從 pdata 取出的 x ，然後 pθ 算出機率 要越大越好。&lt;/p&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image8_hu985a566deb124e14013397997cb8c792_188358_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;接著從 expectation 轉換為積分，然後可以算出就等同於 KL(Pdata||Pθ) ，所以我們要找 minimun KL。&lt;/p&gt;
&lt;p&gt;讓 ptheta 讓 pdata的差異最小。&lt;/p&gt;
&lt;h1 id=&#34;vae-compute-pθ&#34;&gt;VAE: Compute pθ&lt;/h1&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image9_hu25cbc34ad3aab1b698520ecf28d83181_409259_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;這邊主要是在講說，因為我們不可能去直接看 pθ(x|z) ，因為不可能 sample 出完全一模一樣的圖，這樣會造成 pθ(x|z) = 0。&lt;/p&gt;
&lt;p&gt;因此我們是去看 Mean of Gaussian (去看距離，也就是 x 和 G(z)的距離)。&lt;/p&gt;
&lt;h1 id=&#34;vae-lower-bound-of&#34;&gt;VAE: Lower bound of&lt;/h1&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image10_hucc8db87a6aa2898737831e317f9c57ed_469758_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;≥ 0 是因為 它可以看作 KL divergence 而完全一樣就為0，因此 ≥ 0。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;ddpm-compute--pθx&#34;&gt;DDPM: Compute  pθ(x)&lt;/h1&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image11_hu269bc3b971fbe039b2e50b165f382de0_1744258_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image12_huc3ea954ffe3f4fdb67debc677eaab503_298120_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;在算 DDPM 時，和 VAE 不同的是， Maximize 期望值時，原先的 Encoder 替換成 Diffusion Process，也就是在加 Noise 的那個階段。&lt;/p&gt;
&lt;p&gt;將式子展開後為以下。&lt;/p&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image13_hu0024304ad7f8ed83b6a7835f66b4c6f1_85132_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;從 x1 一直做到 X 大 T&lt;/p&gt;
&lt;h1 id=&#34;單個-qxt--xt-1-算法&#34;&gt;單個 q(XT | XT-1) 算法&lt;/h1&gt;
&lt;p&gt;我們首先要先定義一組 &lt;strong&gt;β1 ~ βT&lt;/strong&gt; ，這組數值為自定義的，類似 Learning rate，會根據修改影響 Network。 因為這會影響在每一 t 加上的噪聲&lt;/p&gt;
&lt;p&gt;（以下李教授有筆誤，應為 Xt = √1-Bt * Xt-1 + √Bt * noise）&lt;/p&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image14_huf1c8900600d95a3f2ea2a0873024db54_1082242_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;h1 id=&#34;如果要算出-qxt--x0&#34;&gt;如果要算出 q(XT | X0)&lt;/h1&gt;
&lt;p&gt;其實是可以不用一次一次去把它算出來（不用一步一步把它+上噪聲）。&lt;/p&gt;
&lt;p&gt;從下方可以推導出 q(X2 | X0)&lt;/p&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image15_huf56ae1847b4294bc56a307168f8690dc_1071569_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image16_hu42c7a93d7b54d816ebbb5974971fb27a_681547_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image17_hufe18e4eb3ca4c2a50e0a08b363e239ca_1326415_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image18_hu0df049ef65847020c2162c677f0bd9a8_297934_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;因此 q(Xt | X0) 就可以整理成上圖。&lt;/p&gt;
&lt;h1 id=&#34;噪聲預測&#34;&gt;噪聲預測&lt;/h1&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image19_hu357ae630a39d85f068aa7ec576e1a1a1_44475_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;從上圖推導至下圖&lt;/p&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image20_hua1bbd84e0b1b1ff71cdbcd8f923ba5ae_98238_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;目標就是去最大化，而為了最大化，也就是盡可能地將 KL Divergence 最小化。（看後面的：KL Divergence between 向前 and 向後）&lt;/p&gt;
&lt;p&gt;算出 KL Divergence 向前 𝑞 ( 𝑥 𝑡 ∣ 𝑥 𝑡 − 1 ) q(x t  ∣x t−1  ) 與向後 𝑃 𝜃 ( 𝑥 𝑡 ∣ 𝑥 𝑡 − 1 ) P θ  (x t  ∣x t−1  ) 的差異。&lt;/p&gt;
&lt;p&gt;$\sum_{t=2}^T E_{q\left(x_t \mid x_0\right)}\left[D_{K L}\left(q\left(x_{t-1} \mid x_t, x_0\right)|| p_\theta\left(x_{t-1} \mid x_t\right)\right]\right.$&lt;/p&gt;
&lt;h2 id=&#34;算出中間xt-1到xt的分佈-qxt-1--xt-x0&#34;&gt;算出中間xt-1到xt的分佈 q(Xt-1 | Xt, X0)&lt;/h2&gt;
&lt;p&gt;前面我們已經講過了，如何算出從 X0 到 Xt，也知道要如何算出 xt-1 到 xt-1 的分佈。&lt;/p&gt;
&lt;p&gt;推倒公式如下&lt;/p&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image21_hue64cb8facf9a89b574ff047f2cb21706_85861_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image22_hu10bd28081fb51b7db6b955e84b96e7c7_430272_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;h2 id=&#34;kl-divergence-between-向前-and-向後&#34;&gt;KL Divergence between 向前 and 向後&lt;/h2&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image23_hu7333dba900fa18afe8a8dbdf47cbad5a_403355_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;因為向前的 Mean 是不可動的，所以我們唯一可動的就是 P(Xt-1|Xt) 的 Mean ，使兩者離中心點的距離最小，這樣一來，就可以使得 KL Divergence 盡可能的小。&lt;/p&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image24_hu435758a617ea9069e748195c4faac74d_387597_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;所以說以上在做的事情也就是訓練 denoise function ，使得它們兩者越相近越好。&lt;/p&gt;
&lt;h1 id=&#34;sampling-階段-denoise-function-化簡&#34;&gt;Sampling 階段 Denoise function 化簡&lt;/h1&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241226/DDPM/image25_hueed41e048d6f48fa33b24b76569cab3a_462964_0x0_q85_h2__3.webp&#34;
        alt=&#34;image.png&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;原先右上角的式子的 x0 可以根據我們上面已經寫好關於 x0 和 xt 的關係，在帶回去化簡。&lt;/p&gt;
&lt;p&gt;而這邊也就回到 Algorithm Sampling 階段的第四行。&lt;/p&gt;
&lt;h3 id=&#34;ref&#34;&gt;Ref&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://www.cvmart.net/community/detail/7942&#34;&gt;深入浅出扩散模型(Diffusion Model)系列：基石DDPM（人人都能看懂的数学原理篇）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://youtube.com/playlist?list=PLJV_el3uVTsNi7PgekEUFsyVllAJXRsP-&amp;amp;si=_y39Uu28junvh9re&#34;&gt;李弘毅 DDPM&lt;/a&gt;&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>Mac OS 無法連上公共網路的解決方法</title>
      <link>https://jabee.net/notes/241224/</link>
      <pubDate>Tue, 24 Dec 2024 12:13:34 +0800</pubDate>
      
      <guid>https://jabee.net/notes/241224/</guid>
      <description>今天在桃園圖書館，因為手機訊號不是很好，所以想連 iTaiwan 網路。結果登入的畫面始終就是連不到，相當的納悶。雖然這個情況在 Mac 上面是常態，但我今天怎麼樣</description>
      <content:encoded>&lt;p&gt;今天在桃園圖書館，因為手機訊號不是很好，所以想連 iTaiwan 網路。結果登入的畫面始終就是連不到，相當的納悶。雖然這個情況在 Mac 上面是常態，但我今天怎麼樣就是連不上。查了一下文章，找到簡單的解法如下，以下的方法皆為自己試過可行的。我認為這個可以算是個玄學，因為每個地方 router 設計皆不同，最好的辦法就是多試試。&lt;/p&gt;
&lt;h1 id=&#34;解決不了首先重開機&#34;&gt;解決不了首先重開機&lt;/h1&gt;
&lt;p&gt;首先最重要就是先將 cache 清掉，這邊建議直接重開機最快，有機率重開機就會自動跳出。如果重開機還是解決不了，那請繼續往下看。&lt;/p&gt;
&lt;h1 id=&#34;可以試試看-router-的-ip--用可以跳出的裝置的-domain&#34;&gt;可以試試看 Router 的 IP &amp;amp;&amp;amp; 用可以跳出的裝置的 Domain&lt;/h1&gt;
&lt;h2 id=&#34;router-的-ip&#34;&gt;Router 的 IP&lt;/h2&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241224/image-20241224122232417_hueb6e76a6f2c33a6905085fa3b778e366_80420_0x0_q85_h2__3.webp&#34;
        alt=&#34;image-20241224122232417&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;打開設定後點選 wifi 的 detail，可以看到 Router 的 IP address ，有些公共網路的登入會直接設定在 Router ，不過最近比較少見到這種的。&lt;/p&gt;
&lt;h2 id=&#34;使用其他裝置的-domain&#34;&gt;使用其他裝置的 Domain&lt;/h2&gt;
&lt;p&gt;可以借用其他裝置，如果可以跳出登入畫面，那就用該 Domain ，paste 試看看。&lt;/p&gt;
&lt;h1 id=&#34;清除-dns-server&#34;&gt;清除 DNS server&lt;/h1&gt;
&lt;p&gt;以桃園圖書館總館 iTaiwan 為例，若有自定義 DNS server，會導致無法連線。先將 DNS server 清除，並且將 Proxy 關閉，就可以解決。&lt;/p&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241224/image-20241224122812679_hu8357c52c7b8088a3094741bd2d3ba498_101769_0x0_q85_h2__3.webp&#34;
        alt=&#34;image-20241224122812679&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;像我原本就有自定義一個 1.1.1.1 ，先將自定義的按 - 清除掉，接著會跳出灰色字，此為 Router 設定的 DNS Sevrers。接著按 OK 馬上就跳出登入畫面了。&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>解決 Pop OS 的手勢捏合 &amp;&amp; Scaling 的問題</title>
      <link>https://jabee.net/notes/241218/</link>
      <pubDate>Wed, 18 Dec 2024 13:53:21 +0800</pubDate>
      
      <guid>https://jabee.net/notes/241218/</guid>
      <description>這兩天在重裝 Surface Go 3 的系統，試了幾個，覺得 Pop OS 最符合我的需求，所以開始安裝。 裝是裝好了，但遇到的問題還不少。趁這個機會記錄一下。 Gnome 長久以來的 Scaling</description>
      <content:encoded>&lt;p&gt;這兩天在重裝 Surface Go 3 的系統，試了幾個，覺得 Pop OS 最符合我的需求，所以開始安裝。&lt;/p&gt;
&lt;p&gt;裝是裝好了，但遇到的問題還不少。趁這個機會記錄一下。&lt;/p&gt;
&lt;h1 id=&#34;gnome-長久以來的-scaling-問題&#34;&gt;Gnome 長久以來的 Scaling 問題&lt;/h1&gt;
&lt;p&gt;Gnome 預設 Scaling 只有 100% &amp;amp;&amp;amp; 200% 可以選擇，這個對 Laptop 用戶來說就比較不友好了，不過解決方法也是比較簡單（就是很勸退剛入門的使用者）。&lt;/p&gt;
&lt;p&gt;可以用圖形介面的 dcnof Editor 來設定 org.gnome.mutter experimental-features 額外的參數： &amp;lsquo;scale-monitor-framebuffer&amp;rsquo; ，以此開啟小數點的縮放。&lt;/p&gt;
&lt;p&gt;或是在 terminal 輸入：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;gsettings set org.gnome.mutter experimental-features &amp;#34;[&amp;#39;scale-monitor-framebuffer&amp;#39;]&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;正常來說就可以在設定看到更多縮放選項了。&lt;/p&gt;
&lt;h1 id=&#34;無法使用觸控板的手勢和螢幕的觸控手勢&#34;&gt;無法使用觸控板的手勢和螢幕的觸控手勢&lt;/h1&gt;
&lt;p&gt;在裝好的時候，我就發現在 Firefox 中，在觸控板中操作 Pinch zoom in (捏合放大) 無法正常操作，一旦操作捏合，會變成 Ctrl + and Ctrl -，螢幕觸控也無法使用，因此我就開始排查，才 &lt;strong&gt;發現原來 Pop OS 還在使用 X11 而非 Wayland&lt;/strong&gt; 。&lt;/p&gt;
&lt;p&gt;在 Pop OS 從 X11 替換成 Wayland 也很簡單，只要 Enable 就好。&lt;/p&gt;
&lt;p&gt;在 /etc/gdm3/custom.conf 中有一行為&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;WaylandEnable=false
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;只要將 false 替換成 true 即可。&lt;/p&gt;
&lt;p&gt;接著重啟服務&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo systemctl restart gdm3
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;記得再重新登入的時候要在輸入密碼的右下角替換成 Wayland 的環境。&lt;/p&gt;
&lt;p&gt;這樣一來就可以使用捏合了。&lt;/p&gt;
&lt;p&gt;下次再來分享 Surface Go 3 的心得。&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>為什麼我把threads刪了</title>
      <link>https://jabee.net/notes/241121-2/</link>
      <pubDate>Thu, 21 Nov 2024 13:20:29 +0800</pubDate>
      
      <guid>https://jabee.net/notes/241121-2/</guid>
      <description>刪了？ 我大概兩個月前把 threads 刪了。 但我自認為，我應該早把 threads 刪了。在我刪的一個禮拜後，Joeman發了部影片，證實了我自己的決定是對的。 可怕的時間</description>
      <content:encoded>&lt;h1 id=&#34;刪了&#34;&gt;刪了？&lt;/h1&gt;
&lt;p&gt;我大概兩個月前把 threads 刪了。&lt;/p&gt;
&lt;p&gt;但我自認為，我應該早把 threads 刪了。在我刪的一個禮拜後，Joeman發了部影片，證實了我自己的決定是對的。&lt;/p&gt;


    
    &lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen=&#34;allowfullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/pBu0f3024jw?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;
      &gt;&lt;/iframe&gt;
    &lt;/div&gt;

&lt;h1 id=&#34;可怕的時間消耗&#34;&gt;可怕的時間消耗&lt;/h1&gt;
&lt;h2 id=&#34;政治文&#34;&gt;政治文&lt;/h2&gt;
&lt;p&gt;我一開始會沈淪在 threads 中，主要是每天打開都可以看到一堆政治文，其實我喜歡看的根本不是政治文，是看底下的大家在吵架的部分。 threads 的演算法真的和以往應用程式不同，threads 可以每天都讓你看到一堆你不喜歡的文章。&lt;/p&gt;
&lt;p&gt;當你不喜歡這篇文章的時候，你會怎麼做？&lt;/p&gt;
&lt;p&gt;沒錯就是留言嗆他啊！&lt;/p&gt;
&lt;p&gt;看似留個言，沒什麼。但你留1個言，100個呢？&lt;/p&gt;
&lt;p&gt;再者，跟你相同立場的人一定也有一堆，你的回文開始會有一堆人回你，好的回文讓你爽到，壞的回文你再嗆回去。一來一往花的時間可是相當可觀。別忘了，平台如何賺錢？靠你花上的時間，你花越多，他賺越多。平台就是希望你可以留得更久。&lt;/p&gt;
&lt;h2 id=&#34;初次嚐到被大家吹捧的感受&#34;&gt;初次嚐到被大家吹捧的感受&lt;/h2&gt;
&lt;p&gt;Joeman 在影片中提到，threads 讓大家常到當網紅的感覺（就是所謂當代的 &lt;strong&gt;脆網紅&lt;/strong&gt; ）。我倒認為，當網紅不至於，但讓大家感受到一堆的同溫層吹捧自己。你僅僅只需要，寫一段簡單的文字，就會有流量爆擊。ex:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;xx黨的xxx竟然貪污了1000萬！！&lt;/li&gt;
&lt;li&gt;抱睡真的好舒服，誰懂！！&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;（抱睡不懂，只會報稅）&lt;/p&gt;
&lt;p&gt;（只是舉例，我也不是脆網紅，不懂如何流量爆擊）&lt;/p&gt;
&lt;p&gt;短短三兩行就可以感受到同溫層的吹捧，豈不美哉？&lt;/p&gt;
&lt;h1 id=&#34;刪了後多的時間&#34;&gt;刪了後多的時間&lt;/h1&gt;
&lt;p&gt;當然，我也不是學霸，不會因為刪了 threads ，每天多出一小時安排寫功課讀書。但我多出來的時間，現在就可以拿來寫 blog，繼續滑 reels 找美食、看 yt 旅遊影片。&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;我確實不希望沈淪在對立，還有無意義的被同溫層吹捧的感覺。當然，有沒有缺點？肯定有，當下最流行的梗，我就開始不懂了。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;不懂又如何？無意義的東西沒必要懂這麼多！&lt;/em&gt;&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>我平常會使用的應用程式</title>
      <link>https://jabee.net/notes/241121/</link>
      <pubDate>Thu, 21 Nov 2024 12:17:53 +0800</pubDate>
      
      <guid>https://jabee.net/notes/241121/</guid>
      <description>持續更新中 作業系統 macOS：世界上最好用的作業系統，沒有之一 Pop!_OS：目前體感最好的 Linux distro，比 Ubuntu 不臃腫。 Bazzite：Ba</description>
      <content:encoded>&lt;p&gt;持續更新中&lt;/p&gt;
&lt;h1 id=&#34;作業系統&#34;&gt;作業系統&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;macOS：世界上最好用的作業系統，沒有之一&lt;/li&gt;
&lt;li&gt;Pop!_OS：目前體感最好的 Linux distro，比 Ubuntu 不臃腫。&lt;/li&gt;
&lt;li&gt;Bazzite：Based on Fedora 的 Steam OS，支援 Game Mode （AMD顯卡）&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;macos-軟體&#34;&gt;macOS 軟體&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Typora：目前我認為最好用的 markdown editor，在插入圖片的部分&lt;/li&gt;
&lt;li&gt;Magnet：一款可以讓舊版 macOS 實現視窗管理的工具&lt;/li&gt;
&lt;li&gt;Arc browser：目前幾乎沒有類似媲美的瀏覽器，可以實現不同身份的切換，基於 chromium&lt;/li&gt;
&lt;li&gt;Zen Browser：類似 Arc ，基於 firefox，目前還是有一些bug，但可以在 Linux 上使用&lt;/li&gt;
&lt;li&gt;jetbrains 全家桶：比 vscode 好用多了，壞處就是要一個個下載&lt;/li&gt;
&lt;li&gt;adobe LR：因為就真的只有它比較好用，但月費是真的貴&lt;/li&gt;
&lt;li&gt;Zed：純文字的編輯器，可以算是 Atom 停更以後的版本&lt;/li&gt;
&lt;li&gt;Termius：沒有付費就很好用的 ssh 工具&lt;/li&gt;
&lt;li&gt;MonitorControl：使用多螢幕調整螢幕亮度很好用，要使用可以支援的 hub 和螢幕才可以（但是要支援什麼，我有點忘了，應該是hdmi 的一個協定）&lt;/li&gt;
&lt;li&gt;Notion：我很想用其他的 Self-hosting 的（ex: Anytype），但常常會需要和同學共編，所以還是只能用它。事實上也不錯用，但在導出的部分不太優&lt;/li&gt;
&lt;li&gt;Rnote：目前 Linux 使用到比較好的可以搭配筆書寫的並編輯 PDF 的軟體&lt;/li&gt;
&lt;li&gt;EasyDict：非常好使用的翻譯插件，能搭配各種有開放 api 的翻譯軟體使用&lt;/li&gt;
&lt;li&gt;TailScale：沒有對外固定IP時很好用&lt;/li&gt;
&lt;li&gt;Lark：國際版飛書，可以免費使用自定義的 Domain 來發信，非常方便&lt;/li&gt;
&lt;/ul&gt;
</content:encoded>
    </item>
    
    <item>
      <title>吵得沸沸揚揚的 Mac mini M4 開機按鍵</title>
      <link>https://jabee.net/notes/241119/</link>
      <pubDate>Tue, 19 Nov 2024 13:34:08 +0800</pubDate>
      
      <guid>https://jabee.net/notes/241119/</guid>
      <description>最近科技圈鬧得沸沸揚揚的肯定是新 mini 的開機按鍵，大家一直在吵按鍵坐在那邊要確定誒之類的話，但我完全覺得沒什麼。 身為麥金塔老用戶 身為 Mac 6 年老用戶</description>
      <content:encoded>&lt;p&gt;最近科技圈鬧得沸沸揚揚的肯定是新 mini 的開機按鍵，大家一直在吵按鍵坐在那邊要確定誒之類的話，但我完全覺得沒什麼。&lt;/p&gt;
&lt;h1 id=&#34;身為麥金塔老用戶&#34;&gt;身為麥金塔老用戶&lt;/h1&gt;
&lt;p&gt;身為 Mac 6 年老用戶，從 high sierra、mojave 到現今的 Sonoma （還沒更新，我都穩定了才會更新），從黑蘋果一路用到白蘋果，一路用到現在。我可以肯定是，我一年主動的關機次數真的是沒有，大約就是一隻手手指可以數得出來。&lt;/p&gt;
&lt;h2 id=&#34;為什麼都不關機&#34;&gt;為什麼都不關機&lt;/h2&gt;
&lt;p&gt;其實我也不太能理解為什麼要一直關機，macOS 一直以來在休眠表現都相當的好。從很早開始，蘋果就開始使用 NVRAM，確保在斷電之後的重新啟動可以恢復斷電前的狀態。我記得我在一開始使用的時候，這方面讓我讚嘆不已。畢竟，為了省電（尤其是 Laptop ），休眠還是盡可能的做斷電。以我的 m1 MacBook Air 來說，剛拿到全新的時候，最長有試過用5天都還是可以正常使用。即使不關機，我在和同學的電腦對比起來，我從來不用在考試、圖書館沒插座的時候，去擔心沒有電的問題。（反而是我的 iPhone 整天一直沒電真的很躁）&lt;/p&gt;
&lt;p&gt;所以如果你還在使用 Windows 筆電，然後每次都要打開來的時候開機，關起來的時候關機，就只是為了省電。我可以保證，在 Mac 不會有這個問題。&lt;/p&gt;
&lt;p&gt;另一個層面來想，我真的很討厭，我需要做事的時候，卻要等待開機。用 Mac 回不去的原因就是一個，&lt;strong&gt;這個作業系統整體給我的回應速度是快的&lt;/strong&gt;，我永遠不需要去擔心，當我要做事的時候 -&amp;gt; 按下開機鍵 -&amp;gt; 等 20 秒開機進桌面 -&amp;gt; 等待 30 秒一堆開機自起的應用程式 -&amp;gt; 然後再等待 10 秒開啟你要用的程式，然後開始工作（如果今天你用的不是 pcie 的 ssd，那你可能要把時間再加30秒）。 其實你等待的時間，不只是這些時間，因為這些時間還要再加上額外的因為等太久而去滑手機的時間（其實開機好你還是繼續滑手機）。&lt;/p&gt;
&lt;h1 id=&#34;所以為什麼按鍵做在下面&#34;&gt;所以為什麼按鍵做在下面&lt;/h1&gt;
&lt;p&gt;&lt;img
        src=&#34;https://www.apple.com/tw/mac-mini/images/overview/mac-iphone/mac_iphone_mirroring__f420q7238wuy_large.jpg&#34;
        alt=&#34;銀色 Mac mini 的正面，展示正面連接埠與指示燈；Mac mini 擺放在 Mac 顯示器下方，螢幕上呈現色彩繽紛的畫面以及 Dock 中的多款 app 圖像&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;前面解釋了一堆為什麼不關機，其實也就間接解釋了為什麼按鍵做在下面。因為這個作業系統就是希望你有良好的體驗，不是給你要用才開機，用完就關機的。若是你的手機要用才開機，你還不瘋掉？&lt;/p&gt;
&lt;h2 id=&#34;不是只有-mac-mini-這樣設計&#34;&gt;不是只有 Mac mini 這樣設計&lt;/h2&gt;
&lt;p&gt;&lt;img
        src=&#34;https://jabeehugo.netlify.app/notes/241119/DSC00202.jpg_compressed_hu5438825b9b6d1014226d20d231e650c2_348751_0x0_q85_h2_.webp&#34;
        alt=&#34;&#34;loading=&#34;lazy&#34;
        decoding=&#34;async&#34;
        style=&#34;max-width: 100%; height: auto&#34;
/&gt;&lt;/p&gt;
&lt;p&gt;其實不止 Mac mini，我有在使用的包含 google nest hub 2、nest mini，都有同樣的設計，更跨張的是，他們甚至沒有開機按鍵，這樣的設計我想就是除了你需要移除裝置之外，不希望你關機。&lt;/p&gt;
&lt;p&gt;所以，對我來說，一個好用的作業系統就是要及時、快速，能不耽誤我的工作，目前真的只有 macOS 能滿足我的體驗。&lt;/p&gt;
</content:encoded>
    </item>
    
  </channel>
</rss>
