<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>HowTo on 瓶子裡的小狐狸</title>
    <link>https://szeching.com/tags/howto/</link>
    <description>Recent content in HowTo on 瓶子裡的小狐狸</description>
    <generator>Hugo</generator>
    <language>zh-Hant</language>
    <lastBuildDate>Thu, 30 Apr 2026 22:45:54 +0200</lastBuildDate>
    <atom:link href="https://szeching.com/tags/howto/rss" rel="self" type="application/rss+xml" />
    <item>
      <title>ComfyUI 搶佔 DeepTutor 後端端口的排查過程及解決方案</title>
      <link>https://szeching.com/port-conflict-electron-pwa-background-process/</link>
      <pubDate>Thu, 30 Apr 2026 22:45:54 +0200</pubDate>
      <guid>https://szeching.com/port-conflict-electron-pwa-background-process/</guid>
      <description>&lt;p&gt;DeepTutor 的 backend 跑起來了，但前端所有 API 請求都沒有響應。打開 http://localhost:8001 看到的不是 FastAPI 的文檔頁，而是一個完全陌生的 UI。&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-排查過程&#34;&gt;1. 排查過程&lt;a class=&#34;anchorjs-link&#34; href=&#34;#1-%e6%8e%92%e6%9f%a5%e9%81%8e%e7%a8%8b&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id=&#34;11-確認哪些端口被佔用&#34;&gt;1.1. 確認哪些端口被佔用&lt;a class=&#34;anchorjs-link&#34; href=&#34;#11-%e7%a2%ba%e8%aa%8d%e5%93%aa%e4%ba%9b%e7%ab%af%e5%8f%a3%e8%a2%ab%e4%bd%94%e7%94%a8&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;Get-NetTCPConnection -State Listen |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;  Select-Object LocalPort, OwningProcess |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;  Sort-Object LocalPort -Unique |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;  ForEach-Object &lt;span style=&#34;color:#ff79c6&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;$proc&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt; Get-Process -Id &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;$_&lt;/span&gt;.OwningProcess -ErrorAction SilentlyContinue&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff79c6&#34;&gt;[&lt;/span&gt;PSCustomObject&lt;span style=&#34;color:#ff79c6&#34;&gt;]&lt;/span&gt;@&lt;span style=&#34;color:#ff79c6&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;Port&lt;/span&gt;    &lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;$_&lt;/span&gt;.LocalPort&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;PID&lt;/span&gt;     &lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;$_&lt;/span&gt;.OwningProcess&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;Process&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;$proc&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;$proc&lt;/span&gt;.ProcessName &lt;span style=&#34;color:#ff79c6&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;Unknown&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff79c6&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff79c6&#34;&gt;}&lt;/span&gt; | Sort-Object Port | Format-Table -AutoSize&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;結果顯示 8001 上有兩個 &lt;code&gt;python&lt;/code&gt; 進程同時 LISTENING，一個綁定在 &lt;code&gt;127.0.0.1:8001&lt;/code&gt;，另一個綁定在 &lt;code&gt;0.0.0.0:8001&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>修復 WordPress 中 Kirki Webfontloader MIME 類型錯誤</title>
      <link>https://szeching.com/fix-kirki-plugin-mime-type-error-in-wordpress/</link>
      <pubDate>Sat, 25 Apr 2026 13:17:04 +0200</pubDate>
      <guid>https://szeching.com/fix-kirki-plugin-mime-type-error-in-wordpress/</guid>
      <description>&lt;p&gt;最近 Y Cheung 在 WordPress 後臺的發現有一個無法載入 kirki js 文件導致的錯誤，發生頻率很高，每個後臺管理頁面都會加載這個 js 文件但每次都找不到這個文件。&lt;/p&gt;&#xA;&lt;h2 id=&#34;錯誤訊息&#34;&gt;錯誤訊息&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e9%8c%af%e8%aa%a4%e8%a8%8a%e6%81%af&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;figure&gt;&#xA;  &lt;a class=&#34;paragraph-image&#34;&gt;&#xA;    &lt;img data-src=&#34;https://szeching.com/images/Screenshot_2026-04-25_131103.png&#34; data-action=&#34;zoom&#34; alt=&#34;error cause by Kirki&#34;  title=&#34;You can see 404 error clearly.&#34; class=&#34;lazyload&#34;&gt;&#xA;  &lt;/a&gt;&#xA;  &#xA;  &lt;figcaption class=&#34;image-caption&#34;&gt;You can see 404 error clearly.&lt;/figcaption&gt;&#xA;  &#xA;&lt;/figure&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fix Nginx Warning ssl_stapling ignored, no OCSP responder URL in the certificate</title>
      <link>https://szeching.com/fix-nginx-warning-ssl-stapling-ignored-no-ocsp-responder-url-in-the-certificate/</link>
      <pubDate>Mon, 17 Nov 2025 00:41:05 +0100</pubDate>
      <guid>https://szeching.com/fix-nginx-warning-ssl-stapling-ignored-no-ocsp-responder-url-in-the-certificate/</guid>
      <description>&lt;p&gt;從2025年5月7日起，Let&amp;rsquo;s Encrypt 從其證書中移除了OCSP URL，2025年8月6日完全關閉 OCSP 響應器，因此如果之前在 Nginx 配置中啓用了 &lt;code&gt;ssl_stapling&lt;/code&gt;就會出現這個警告：&lt;/p&gt;</description>
    </item>
    <item>
      <title>修復 Docker Desktop for Windows 升級後的 WSL integration 錯誤</title>
      <link>https://szeching.com/fix-wsl-error-after-upgrading-docker-desktop-on-windows-10/</link>
      <pubDate>Wed, 19 Feb 2025 17:01:48 +0800</pubDate>
      <guid>https://szeching.com/fix-wsl-error-after-upgrading-docker-desktop-on-windows-10/</guid>
      <description>&lt;p&gt;Windows 10 上的 Docker Desktop 最近升級至 v4.38.0 後突然冒出了 WSL 錯誤。&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&#xA;  &lt;a class=&#34;paragraph-image&#34;&gt;&#xA;    &lt;img data-src=&#34;https://szeching.com/images/photo_2025-02-19_17-06-14.jpg&#34; data-action=&#34;zoom&#34; alt=&#34;Docker Desktop WSL integration with distro Legacy unexpectedly stopped&#34;  title=&#34;running wsl distro proxy in Legacy distro: running proxy: exit status 1&#34; class=&#34;lazyload&#34;&gt;&#xA;  &lt;/a&gt;&#xA;  &#xA;  &lt;figcaption class=&#34;image-caption&#34;&gt;running wsl distro proxy in Legacy distro: running proxy: exit status 1&lt;/figcaption&gt;&#xA;  &#xA;&lt;/figure&gt;&lt;/p&gt;&#xA;&lt;p&gt;嘗試了 Restart the WSL integration 和 Skip Legacy WSL distro 都不行，問 AI 可能的原因是：&lt;/p&gt;</description>
    </item>
    <item>
      <title>解決 MySQL 升級 8.4 Docker 容器啟動問題</title>
      <link>https://szeching.com/fix-errors-on-mysql-docker-image-upgrade-to-8-4/</link>
      <pubDate>Fri, 14 Jun 2024 11:13:28 +0800</pubDate>
      <guid>https://szeching.com/fix-errors-on-mysql-docker-image-upgrade-to-8-4/</guid>
      <description>&lt;p&gt;Y Cheung 最近將系統中很久沒更新的 MySQL Docker Image更新到了最新的lts版本&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;，結果容器就起不來了，哭哭，一直不停重啟。&lt;/p&gt;&#xA;&lt;h2 id=&#34;修復-unknown-variable-default-authentication-plugin-錯誤&#34;&gt;修復 unknown variable default-authentication-plugin 錯誤&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e4%bf%ae%e5%be%a9-unknown-variable-default-authentication-plugin-%e9%8c%af%e8%aa%a4&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;查閱docker log信息發現：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;[Server] unknown variable &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;default-authentication-plugin=mysql_native_password&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;啊，原來之前在MySQL升級到8的時候 &lt;a href=&#34;https://szeching.com/fix-laravel-connect-mysql-8-authentication-error/&#34;&gt;Y Cheung 曾寫過&lt;/a&gt;需要使用 &lt;code&gt;--default-authentication-plugin=mysql_native_password&lt;/code&gt; 這個參數將預設密碼加密方式改為&lt;code&gt;mysql_native_password&lt;/code&gt;，而現在MySQL升級到8.4後，這個參數也失效啦&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;，需要改成 &lt;code&gt;--mysql_native_password=ON&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>加載速度慢如牛？揭秘如何找出Wordpress網站加載緩慢的原因！</title>
      <link>https://szeching.com/documenting-the-steps-to-improve-loading-speed-on-wordpress-site/</link>
      <pubDate>Fri, 24 May 2024 22:45:06 +0800</pubDate>
      <guid>https://szeching.com/documenting-the-steps-to-improve-loading-speed-on-wordpress-site/</guid>
      <description>&lt;p&gt;WordPress作為一個老牌的CMS系統，有著龐大插件與豐富的社群資源。然而，它自身也是變得相當臃腫。優化WordPress網站的速度已經成為一個老生常談的話題，其解決方法無非就是以下幾種：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Pixel 7a 免 Root 解鎖 VoLTE 功能</title>
      <link>https://szeching.com/enable-volte-support-on-pixel-7a-without-root/</link>
      <pubDate>Sun, 24 Sep 2023 14:37:36 +0000</pubDate>
      <guid>https://szeching.com/enable-volte-support-on-pixel-7a-without-root/</guid>
      <description>&lt;p&gt;Y Cheung 有張SIM卡很奇怪，在 Pixel 7a手機上無法使用，能識別出號碼，但是就是無法註冊網絡，而這張卡在iPhone上使用是沒問題的。於是上網查了一下，原來是Google搞的鬼！連韓國網友也深受其害。幸好不是沒有解決方案，一二三，搞起！&lt;/p&gt;</description>
    </item>
    <item>
      <title>修復wp_redirect跳轉被瀏覽器緩存</title>
      <link>https://szeching.com/fix-browser-cache-when-using-wp_redirect/</link>
      <pubDate>Thu, 21 Sep 2023 10:58:05 +0000</pubDate>
      <guid>https://szeching.com/fix-browser-cache-when-using-wp_redirect/</guid>
      <description>&lt;p&gt;Wordpress中某個下載頁面匿名用戶只能在提交表單後訪問，方法是在頁面加載的時候檢查表單提交成功的標記是否存在，不存在就跳轉去表單頁面，這裡使用了 wp_redirect() 方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>解決 Drupal 9 Media 列表縮略圖無法生成問題</title>
      <link>https://szeching.com/fix-source-image-not-found-while-trying-to-generate-derivative-image-for-drupal-9/</link>
      <pubDate>Fri, 24 Jun 2022 11:11:00 +0000</pubDate>
      <guid>https://szeching.com/fix-source-image-not-found-while-trying-to-generate-derivative-image-for-drupal-9/</guid>
      <description>&lt;p&gt;站點安裝設置失誤導致在S3上缺失了 &lt;code&gt;public://media-icons/&lt;/code&gt; 下的所有文件，如今在media 中上傳任何 video、document、audio 都無法生成縮略圖，fallback 到本地path 提示 404 not found，檢視 Recent log messages 日誌，發現了相關錯誤信息：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Universal Analytics 遷移至 Google Analytics 4（GA4）</title>
      <link>https://szeching.com/migrate-from-google-analytics-to-google-analytics-4/</link>
      <pubDate>Tue, 31 May 2022 12:02:00 +0000</pubDate>
      <guid>https://szeching.com/migrate-from-google-analytics-to-google-analytics-4/</guid>
      <description>&lt;p&gt;近來登錄 Google Analytics 管理後台常看到催用戶改用GA4的通知信息（&lt;a href=&#34;https://support.google.com/analytics/answer/11583528#zippy=%2C%E5%A6%82%E4%BD%95%E5%BE%9E%E9%80%9A%E7%94%A8-analytics-%E5%88%86%E6%9E%90-%E8%B3%87%E6%BA%90%E5%8C%AF%E5%87%BA%E8%B3%87%E6%96%99&#34; target=&#34;_blank&#34;&gt;關於通用 Analytics (分析) 即將停止服務說明詳情&lt;/a&gt;）：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;🔔Universal Analytics will no longer process new data in standard properties beginning July 1, 2023. Prepare now by setting up and switching over to a Google Analytics 4 property.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Drupal 9 Views 分頁器設置首頁顯示不同的條目個數</title>
      <link>https://szeching.com/drupal-9-views-pager-set-different-page-size-at-first-page/</link>
      <pubDate>Fri, 27 May 2022 06:46:00 +0000</pubDate>
      <guid>https://szeching.com/drupal-9-views-pager-set-different-page-size-at-first-page/</guid>
      <description>&lt;p&gt;在Drupal Views 中自帶了分頁功能 Pager，可以在界面上自定義每頁要顯示條目個數 &lt;em&gt;Items to display&lt;/em&gt;，要跳過的個數 &lt;em&gt;Offset (number of items to skip)&lt;/em&gt;，總頁數 &lt;em&gt;Number of pages&lt;/em&gt;，分頁的標籤 &lt;em&gt;Page Link Labels&lt;/em&gt;，指定分頁顯示的個數 &lt;em&gt;Number of pager links visible&lt;/em&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cross-Origin Resource Sharing (CORS) 跨來源資源共用錯誤解決方法</title>
      <link>https://szeching.com/fix-the-cors-error/</link>
      <pubDate>Fri, 20 May 2022 10:10:00 +0000</pubDate>
      <guid>https://szeching.com/fix-the-cors-error/</guid>
      <description>&lt;p&gt;最近Y cheung 遇到了兩個典型 CORS error問題，XMLHttpRequest 和 Fetch 請求了跨來源資源被瀏覽器阻擋，記錄一下解決方法。&lt;/p&gt;&#xA;&lt;h2 id=&#34;什麼是cross-origin-resource-sharing-cors-跨來源資源共用&#34;&gt;什麼是Cross-Origin Resource Sharing (CORS) 跨來源資源共用？&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e4%bb%80%e9%ba%bc%e6%98%afcross-origin-resource-sharing-cors-%e8%b7%a8%e4%be%86%e6%ba%90%e8%b3%87%e6%ba%90%e5%85%b1%e7%94%a8&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Cross-Origin Resource Sharing (CORS)&lt;/strong&gt; is an HTTP-header based mechanism that allows a server to indicate any origins (domain, scheme, or port) other than its own from which a browser should permit loading resources. CORS also relies on a mechanism by which browsers make a &amp;ldquo;preflight&amp;rdquo; request to the server hosting the cross-origin resource, in order to check that the server will permit the actual request. In that preflight, the browser sends headers that indicate the HTTP method and headers that will be used in the actual request.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Drupal 9 多語言站點解決 Paragraphs 字段在custom block 中I18翻譯無法正確顯示問題</title>
      <link>https://szeching.com/fix-paragraphs-field-translate-failed-in-drupal-9-custom-block/</link>
      <pubDate>Fri, 08 Apr 2022 12:29:00 +0000</pubDate>
      <guid>https://szeching.com/fix-paragraphs-field-translate-failed-in-drupal-9-custom-block/</guid>
      <description>&lt;p&gt;Drupal 9 多語言站點啟用 &lt;a href=&#34;https://www.drupal.org/project/paragraphs&#34; target=&#34;_blank&#34;&gt;Paragraphs 模組&lt;/a&gt;，如果在 &lt;a href=&#34;https://www.drupal.org/docs/core-modules-and-themes/core-modules/block-module/managing-blocks&#34; target=&#34;_blank&#34;&gt;custom block&lt;/a&gt; 中使用了 paragraphs 類型的字段 ，會遇到字段內文字的翻譯無法顯示問題。該 paragraphs 字段的內容始終加載的是 default 的語言內容（通常是英文），需要在custom module 代碼中使用 &lt;code&gt;hook_preprocess_block()&lt;/code&gt; 修改一下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>獲取最新惡意爬蟲列表配置 Fail2ban Filter</title>
      <link>https://szeching.com/secure-nginx-with-fail2ban-badbot-filter/</link>
      <pubDate>Thu, 25 Nov 2021 11:04:00 +0000</pubDate>
      <guid>https://szeching.com/secure-nginx-with-fail2ban-badbot-filter/</guid>
      <description>&lt;p&gt;安裝並設置好 Fail2ban 後（可以參考Y Cheung 之前寫的『&lt;a href=&#34;https://szeching.com/fail2ban-nginx-filter-config&#34;&gt;Fail2ban 配置 Nginx filter&lt;/a&gt;』），可以看到在&#xA;&lt;code&gt;/etc/fail2ban/filter.d/nginx-badbots.conf&lt;/code&gt; 內容如下：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;# /etc/fail2ban/filter.d/nginx-badbots.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;# Fail2Ban configuration file&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;# Regexp to catch known spambots and software alike. Please verify&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;# that it is your intent to block IPs which were driven by&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;# above mentioned bots.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;[Definition]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;badbotscustom = EmailCollector|WebEMailExtrac|TrackBack/1\.02|sogou music spider|(?:Mozilla/\d+\.\d+ )?Jorgee&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;badbots = Atomic_Email_Hunter/4\.0|atSpider/1\.0|autoemailspider|bwh3_user_agent|China Local Browse 2\.6|ContactBot/0\.2|ContentSmartz|DataCha0s/2\.0|DBrowse 1\.4b|DBrowse 1\.4d|Demo Bot DOT 16b|Demo Bot Z 16b|DSurf15a 01|DSurf15a 71|DSurf15a 81|DSurf15a VA|EBrowse 1\.4b|Educate Search VxB|EmailSiphon|EmailSpider|EmailWolf 1\.00|ESurf15a 15|ExtractorPro|Franklin Locator 1\.8|FSurf15a 01|Full Web Bot 0416B|Full Web Bot 0516B|Full Web Bot 2816B|Guestbook Auto Submitter|Industry Program 1\.0\.x|ISC Systems iRc Search 2\.1|IUPUI Research Bot v 1\.9a|LARBIN-EXPERIMENTAL \(efp@gmx\.net\)|LetsCrawl\.com/1\.0 \+http\://letscrawl\.com/|Lincoln State Web Browser|LMQueueBot/0\.2|LWP\:\:Simple/5\.803|Mac Finder 1\.0\.xx|MFC Foundation Class Library 4\.0|Microsoft URL Control - 6\.00\.8xxx|Missauga Locate 1\.0\.0|Missigua Locator 1\.9|Missouri College Browse|Mizzu Labs 2\.2|Mo College 1\.9|MVAClient|Mozilla/2\.0 \(compatible; NEWT ActiveX; Win32\)|Mozilla/3\.0 \(compatible; Indy Library\)|Mozilla/3\.0 \(compatible; scan4mail \(advanced version\) http\://www\.peterspages\.net/?scan4mail\)|Mozilla/4\.0 \(compatible; Advanced Email Extractor v2\.xx\)|Mozilla/4\.0 \(compatible; Iplexx Spider/1\.0 http\://www\.iplexx\.at\)|Mozilla/4\.0 \(compatible; MSIE 5\.0; Windows NT; DigExt; DTS Agent|Mozilla/4\.0 efp@gmx\.net|Mozilla/5\.0 \(Version\: xxxx Type\:xx\)|NameOfAgent \(CMS Spider\)|NASA Search 1\.0|Nsauditor/1\.x|PBrowse 1\.4b|PEval 1\.4b|Poirot|Port Huron Labs|Production Bot 0116B|Production Bot 2016B|Production Bot DOT 3016B|Program Shareware 1\.0\.2|PSurf15a 11|PSurf15a 51|PSurf15a VA|psycheclone|RSurf15a 41|RSurf15a 51|RSurf15a 81|searchbot admin@google\.com|ShablastBot 1\.0|snap\.com beta crawler v0|Snapbot/1\.0|Snapbot/1\.0 \(Snap Shots&amp;amp;#44; \+http\://www\.snap\.com\)|sogou develop spider|Sogou Orion spider/3\.0\(\+http\://www\.sogou\.com/docs/help/webmasters\.htm#07\)|sogou spider|Sogou web spider/3\.0\(\+http\://www\.sogou\.com/docs/help/webmasters\.htm#07\)|sohu agent|SSurf15a 11 |TSurf15a 11|Under the Rainbow 2\.2|User-Agent\: Mozilla/4\.0 \(compatible; MSIE 6\.0; Windows NT 5\.1\)|VadixBot|WebVulnCrawl\.unknown/1\.0 libwww-perl/5\.803|Wells Search II|WEP Search 00&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;failregex = ^&amp;lt;HOST&amp;gt; -.*&amp;#34;(GET|POST|HEAD).*HTTP.*&amp;#34;(?:%(badbots)s|%(badbotscustom)s)&amp;#34;$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;ignoreregex =&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&lt;/span&gt;&lt;span&gt;datepattern = {^LN-BEG}%%ExY(?P&amp;lt;_sep&amp;gt;[-/.])%%m(?P=_sep)%%d[T ]%%H:%%M:%%S(?:[.,]%%f)?(?:\s*%%z)?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19&lt;/span&gt;&lt;span&gt;              ^[^\[]*\[({DATE})&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20&lt;/span&gt;&lt;span&gt;              {^LN-BEG}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21&lt;/span&gt;&lt;span&gt;      &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22&lt;/span&gt;&lt;span&gt;# DEV Notes:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23&lt;/span&gt;&lt;span&gt;# List of bad bots fetched from http://www.user-agents.org&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24&lt;/span&gt;&lt;span&gt;# Generated on Thu Nov  7 14:23:35 PST 2013 by files/gen_badbots.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25&lt;/span&gt;&lt;span&gt;#&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;26&lt;/span&gt;&lt;span&gt;# Author: Yaroslav Halchenko&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果沒有找到這個文件，請新建一個，或者將 &lt;code&gt;apache-badbots.conf&lt;/code&gt; 拷貝並重命名。&lt;/p&gt;</description>
    </item>
    <item>
      <title>停止定時任務守護進程cron daemon發送郵件</title>
      <link>https://szeching.com/how-to-stop-cron-daemon-from-sending-emails/</link>
      <pubDate>Mon, 22 Nov 2021 12:35:32 +0000</pubDate>
      <guid>https://szeching.com/how-to-stop-cron-daemon-from-sending-emails/</guid>
      <description>&lt;p&gt;默認情況下，crond 會將所有的輸出或者錯誤信息通過email發送給執行用戶。Y CHEUNG 一個沒注意就超過mailgun的每月免費額度，2個月了，趕緊查找問題解決它。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Win 10 讀取 Mac HFS&#43; 格式硬碟</title>
      <link>https://szeching.com/how-to-read-mac-formatted-drivers-on-windows-10/</link>
      <pubDate>Sun, 18 Apr 2021 12:29:53 +0000</pubDate>
      <guid>https://szeching.com/how-to-read-mac-formatted-drivers-on-windows-10/</guid>
      <description>&lt;p&gt;因需找出了多年不用的移動硬碟SSD，結果win 10 無法讀取！檢查了驅動什麼的都沒問題，也看到有這個硬碟了，就是不能正常加載出來，著急。&lt;/p&gt;&#xA;&lt;p&gt;原本還以為是TOSHIBA的問題，因為看到網上有說win 10更新後無法正常使用東芝硬碟的，但是那都是2018年的事情了啊，應該早修復了呀。&lt;/p&gt;</description>
    </item>
    <item>
      <title>XDebug升級更新配置</title>
      <link>https://szeching.com/upgrading-xdebug-settings-from-2-to-3/</link>
      <pubDate>Tue, 13 Apr 2021 11:14:00 +0000</pubDate>
      <guid>https://szeching.com/upgrading-xdebug-settings-from-2-to-3/</guid>
      <description>&lt;p&gt;不知不覺中，XDebug 已經是Version 3 了！&lt;/p&gt;&#xA;&lt;p&gt;根據官方文檔 &lt;a href=&#34;https://xdebug.org/docs/upgrade_guide&#34; target=&#34;_blank&#34;&gt;https://xdebug.org/docs/upgrade_guide&lt;/a&gt; ，之前XDebug 2 的配置 (/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini )如下所示：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;xdebug.remote_connect_back=0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;xdebug.remote_autostart=1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;xdebug.remote_enable=1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;xdebug.remote_host=&amp;#34;host.docker.internal&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;xdebug.remote_port=9001&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;xdebug.idekey=PHPSTORM&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;7&lt;/span&gt;&lt;span&gt;memory_limit = 1024M&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;8&lt;/span&gt;&lt;span&gt;xdebug.remote_log=&amp;#34;/tmp/xdebug.log&amp;#34;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;需要改成這樣(v3)：&lt;/p&gt;</description>
    </item>
    <item>
      <title>解決Laravel連接MySQL8驗證失敗錯誤</title>
      <link>https://szeching.com/fix-laravel-connect-mysql-8-authentication-error/</link>
      <pubDate>Thu, 15 Oct 2020 10:49:45 +0000</pubDate>
      <guid>https://szeching.com/fix-laravel-connect-mysql-8-authentication-error/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;💡 2023-06-14 update&lt;/p&gt;&#xA;&lt;p&gt;MySQL升級至8.4後這篇文章的方法就失效咯，請移步&lt;a href=&#34;https://szeching.com/fix-errors-on-mysql-docker-image-upgrade-to-8-4&#34;&gt;《解決 MySQL 升級 8.4 Docker 容器啟動問題》&lt;/a&gt;查看最新解決方案。&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;之前一直用MariaDB沒感覺，這次因為需求變動改用最新的MySQL 8 後， Laravel 就無法連接上資料庫了，囧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Chrome 實驗性功能 CSS Overview</title>
      <link>https://szeching.com/enable-css-overview-in-chrome/</link>
      <pubDate>Fri, 03 Jul 2020 06:30:25 +0000</pubDate>
      <guid>https://szeching.com/enable-css-overview-in-chrome/</guid>
      <description>&lt;p&gt;Chrome上了新的實驗性功能 CSS Overview，感覺對做網站前端十分有用，可以快速查閱網站上所使用的顏色、字體、未使用的css申明、定義的媒體查詢。&lt;/p&gt;</description>
    </item>
    <item>
      <title>解決 Rejecting re-init on previously-failed class &lt;androidx.core.view.ViewCompat$2&gt; 警告</title>
      <link>https://szeching.com/resolve-rejecting-re-init-on-previously-failed-class-androidx-core-view-viewcompat/</link>
      <pubDate>Tue, 23 Jun 2020 06:43:39 +0000</pubDate>
      <guid>https://szeching.com/resolve-rejecting-re-init-on-previously-failed-class-androidx-core-view-viewcompat/</guid>
      <description>&lt;p&gt;新建一個安卓項目， compileSdkVersion 29，然後啟動MainActivity就看到 Logcat中有警告信息：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;Rejecting re-init on previously-failed class java.lang.Class&amp;lt;androidx.core.view.ViewCompat$2&amp;gt;: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;雖然不會拋出錯誤或異常，但是看到也很噁心。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wordpress 主題顯示預估閱讀時間</title>
      <link>https://szeching.com/show-estimate-reading-time-on-wordpress/</link>
      <pubDate>Tue, 16 Jun 2020 12:02:00 +0000</pubDate>
      <guid>https://szeching.com/show-estimate-reading-time-on-wordpress/</guid>
      <description>&lt;p&gt;突然發現Y CHUENG寫的遊記太長了，有的遊記居然有好些人看了15分鐘，於是想在頁面靠前的地方顯示預估閱讀時間，讓讀者有個文太長的心理準備😂&lt;/p&gt;&#xA;&lt;h2 id=&#34;如何計算文章閱讀時長&#34;&gt;如何計算文章閱讀時長&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e5%a6%82%e4%bd%95%e8%a8%88%e7%ae%97%e6%96%87%e7%ab%a0%e9%96%b1%e8%ae%80%e6%99%82%e9%95%b7&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;這個預估閱讀時間的計算很粗暴，就是文章字數/平均閱讀速度。Y CHEUNG 抓的平均閱讀速度是500。一般人大約是200～500左右，隨意哈。雖然 PHP 內建有計算字數的函數 &lt;code&gt;str_word_count&lt;/code&gt; ，但是中文用這個不好使，得出的數字不對，還是用正則匹配後計算啦。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fail2ban 配置 Nginx filter</title>
      <link>https://szeching.com/fail2ban-nginx-filter-config/</link>
      <pubDate>Mon, 15 Jun 2020 12:00:00 +0000</pubDate>
      <guid>https://szeching.com/fail2ban-nginx-filter-config/</guid>
      <description>&lt;p&gt;簡要紀錄一下目前服務器上的 fail2ban 關於 nginx 的 filter 配置。&lt;/p&gt;&#xA;&lt;h2 id=&#34;惡意爬蟲過濾器&#34;&gt;惡意爬蟲過濾器&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e6%83%a1%e6%84%8f%e7%88%ac%e8%9f%b2%e9%81%8e%e6%bf%be%e5%99%a8&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;# /etc/fail2ban/filter.d/nginx-badbots.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;[Definition]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;badbotscustom = Sogou web spider|DotBot|AhrefsBot|Baiduspider|PetalBot|WOW64|Daum|Barkrowler|360Spider|Buck|Photon|SEOkicks|magpie-crawler|SemrushBot|SeznamBot|MJ12bot|EmailCollector|WebEMailExtrac|TrackBack/1\.02|sogou music spider|(?:Mozilla/\d+\.\d+ )?Jorgee&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;badbots = Atomic_Email_Hunter/4\.0|atSpider/1\.0|autoemailspider|bwh3_user_agent|China Local Browse 2\.6|ContactBot/0\.2|ContentSmartz|DataCha0s/2\.0|DBrowse 1\.4b|DBrowse 1\.4d|Demo Bot DOT 16b|Demo Bot Z 16b|DSurf15a 01|DSurf15a 71|DSurf15a 81|DSurf15a VA|EBrowse 1\.4b|Educate Search VxB|EmailSiphon|EmailSpider|EmailWolf 1\.00|ESurf15a 15|ExtractorPro|Franklin Locator 1\.8|FSurf15a 01|Full Web Bot 0416B|Full Web Bot 0516B|Full Web Bot 2816B|Guestbook Auto Submitter|Industry Program 1\.0\.x|ISC Systems iRc Search 2\.1|IUPUI Research Bot v 1\.9a|LARBIN-EXPERIMENTAL \(efp@gmx\.net\)|LetsCrawl\.com/1\.0 \+http\://letscrawl\.com/|Lincoln State Web Browser|LMQueueBot/0\.2|LWP\:\:Simple/5\.803|Mac Finder 1\.0\.xx|MFC Foundation Class Library 4\.0|Microsoft URL Control - 6\.00\.8xxx|Missauga Locate 1\.0\.0|Missigua Locator 1\.9|Missouri College Browse|Mizzu Labs 2\.2|Mo College 1\.9|MVAClient|Mozilla/2\.0 \(compatible; NEWT ActiveX; Win32\)|Mozilla/3\.0 \(compatible; Indy Library\)|Mozilla/3\.0 \(compatible; scan4mail \(advanced version\) http\://www\.peterspages\.net/?scan4mail\)|Mozilla/4\.0 \(compatible; Advanced Email Extractor v2\.xx\)|Mozilla/4\.0 \(compatible; Iplexx Spider/1\.0 http\://www\.iplexx\.at\)|Mozilla/4\.0 \(compatible; MSIE 5\.0; Windows NT; DigExt; DTS Agent|Mozilla/4\.0 efp@gmx\.net|Mozilla/5\.0 \(Version\: xxxx Type\:xx\)|NameOfAgent \(CMS Spider\)|NASA Search 1\.0|Nsauditor/1\.x|PBrowse 1\.4b|PEval 1\.4b|Poirot|Port Huron Labs|Production Bot 0116B|Production Bot 2016B|Production Bot DOT 3016B|Program Shareware 1\.0\.2|PSurf15a 11|PSurf15a 51|PSurf15a VA|psycheclone|RSurf15a 41|RSurf15a 51|RSurf15a 81|searchbot admin@google\.com|ShablastBot 1\.0|snap\.com beta crawler v0|Snapbot/1\.0|Snapbot/1\.0 \(Snap Shots&amp;amp;#44; \+http\://www\.snap\.com\)|sogou develop spider|Sogou Orion spider/3\.0\(\+http\://www\.sogou\.com/docs/help/webmasters\.htm#07\)|sogou spider|Sogou web spider/3\.0\(\+http\://www\.sogou\.com/docs/help/webmasters\.htm#07\)|sohu agent|SSurf15a 11 |TSurf15a 11|Under the Rainbow 2\.2|User-Agent\: Mozilla/4\.0 \(compatible; MSIE 6\.0; Windows NT 5\.1\)|VadixBot|WebVulnCrawl\.unknown/1\.0 libwww-perl/5\.803|Wells Search II|WEP Search 00&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;failregex = ^&amp;lt;HOST&amp;gt; -.*&amp;#34;(GET|POST|HEAD).*HTTP.*&amp;#34;*(?:%(badbots)s|%(badbotscustom)s).*&amp;#34;$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;ignoreregex =&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;datepattern = {^LN-BEG}%%ExY(?P&amp;lt;_sep&amp;gt;[-/.])%%m(?P=_sep)%%d[T ]%%H:%%M:%%S(?:[.,]%%f)?(?:\s*%%z)?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;              ^[^\[]*\[({DATE})&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;              {^LN-BEG}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;/etc/fail2ban/filter.d/nginx-badbots.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;自定義規則&#34;&gt;自定義規則&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e8%87%aa%e5%ae%9a%e7%be%a9%e8%a6%8f%e5%89%87&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;# /etc/fail2ban/filter.d/nginx-custom.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;[Definition]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;failregex = ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+XDEBUG.+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+GponForm.+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+phpunit.+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+ajax-index\.php .+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+sellers\.json .+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+adminer\.php .+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+wp-configuration\.php.+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+ThinkPHP.+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+wp-config.+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+dede\/login\.php .+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+plus\/recommend\.php .+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+e\/install\/index.php .+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+m\/e\/install\/index\.php .+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+e_bak\/install\/index.php .+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+\.aspx .+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; \- \S+ \[\] \&amp;#34;(GET|POST|HEAD) .+\.act .+$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt;.*] &amp;#34;(GET|POST|HEAD) .*xmlrpc\.php.*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; -.*&amp;#34;(GET|POST|HEAD).*HTTP\/1\.1.*&amp;#34;*.Mozilla/5\.0 \(Windows NT 6\.1\; rv\:60\.0\) Gecko\/20100101 Firefox\/60\.0.*&amp;#34;$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; -.*&amp;#34;(GET|POST|HEAD).*HTTP\/1\.1.*&amp;#34;*.Photon.*&amp;#34;$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; -.*&amp;#34;(GET|POST|HEAD).*HTTP\/1\.1.*&amp;#34;*.Mozilla\/5\.0 zgrab\/0\.x.*&amp;#34;$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; -.*&amp;#34;(GET|POST|HEAD).*HTTP\/1\.1.*&amp;#34;*.XTC.*&amp;#34;$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; -.*&amp;#34;(GET|POST|HEAD).*HTTP\/1\.1.*&amp;#34;*.python-requests.*&amp;#34;$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; -.*&amp;#34;(GET|POST|HEAD).*HTTP\/1\.1.*&amp;#34;*.bidswitchbot.*&amp;#34;$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;26&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; -.*&amp;#34;(GET|POST|HEAD).*HTTP\/1\.1.*&amp;#34;*.Google-adstxt.*&amp;#34;$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;27&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; -.*&amp;#34;(GET|POST|HEAD).*HTTP\/1\.1.*&amp;#34;*.Apache-HttpClient.*&amp;#34;$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;28&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt;.*] &amp;#34;POST .*HTTP\/1\.1.*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;29&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; -.*&amp;#34;(GET|POST|HEAD).*HTTP\/1\.1.*&amp;#34;*.Go-http-client\/1\.1.*&amp;#34;$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;30&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; .* &amp;#34;.*\\x.*&amp;#34; .*$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;31&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; -.*&amp;#34;(GET|POST|HEAD) .+wp-login\.php .*HTTP\/1\.1.*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;32&lt;/span&gt;&lt;span&gt;            ^&amp;lt;HOST&amp;gt; -.*&amp;#34;(GET|POST|HEAD) .*wp-includes/wlwmanifest.xml .*HTTP\/1\.1.*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;33&lt;/span&gt;&lt;span&gt;ignoreregex = ^&amp;lt;HOST&amp;gt;.*] &amp;#34;POST /xmlrpc\.php\?for=jetpack.*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;34&lt;/span&gt;&lt;span&gt;              ^&amp;lt;HOST&amp;gt;.*] &amp;#34;POST /wp-cron\.php\?doing_wp_cron=.*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;35&lt;/span&gt;&lt;span&gt;datepattern = {^LN-BEG}%%ExY(?P&amp;lt;_sep&amp;gt;[-/.])%%m(?P=_sep)%%d[T ]%%H:%%M:%%S(?:[.,]%%f)?(?:\s*%%z)?&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;36&lt;/span&gt;&lt;span&gt;              ^[^\[]*\[({DATE})&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;37&lt;/span&gt;&lt;span&gt;              {^LN-BEG}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;簡要說明一下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ghost 0.4.2 跨世代升級到 3.19.2 版本</title>
      <link>https://szeching.com/upgrade-ghost-from-0-4-2-to-latest-version/</link>
      <pubDate>Mon, 15 Jun 2020 04:31:50 +0000</pubDate>
      <guid>https://szeching.com/upgrade-ghost-from-0-4-2-to-latest-version/</guid>
      <description>&lt;p&gt;Y Cheung 從最早的 Ghost 0.1版本就開始嘗試使用 ghost 平台來寫博客了，由於nodjs版本升級太麻煩就沒有慾望升級ghost版本，之後就一直停留在 0.4.2 版本很多年了。終於下定決心要把它更新！（握拳）&lt;/p&gt;</description>
    </item>
    <item>
      <title>修復SSL_do_handshake() failed 錯誤</title>
      <link>https://szeching.com/fix-ssl_do_handshake_faild_error/</link>
      <pubDate>Tue, 09 Jun 2020 04:20:24 +0000</pubDate>
      <guid>https://szeching.com/fix-ssl_do_handshake_faild_error/</guid>
      <description>&lt;p&gt;最近WP網站遇到了詭異的問題，Jetpack 的統計數據與 Google Analytics 上的不一致，wordpress.com 面板上又顯示無法訪問這個站點，但是 Y Chueng 用瀏覽器打開網站又正常，很奇怪。然後本應該在昨日計劃發佈的 Post 沒有被發佈。太奇怪了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Laravel 7 配置郵件服務 Mailgun</title>
      <link>https://szeching.com/sending-emails-with-laravel-7-and-mailgun/</link>
      <pubDate>Thu, 12 Mar 2020 11:45:03 +0000</pubDate>
      <guid>https://szeching.com/sending-emails-with-laravel-7-and-mailgun/</guid>
      <description>&lt;p&gt;2016年的時候，Mailgun 免費註冊帳號還能添加自定義域名（當時Y Cheung 曾寫過一篇blog：&lt;a href=&#34;https://szeching.com/config-postfix-and-mailgun-on-centos-7/&#34; target=&#34;_blank&#34;&gt;Centos7 安裝 Postfix 並配置 mailgun 服務&lt;/a&gt;），想不到現在新註冊帳號已經是需要先綁定銀行卡才能使用自定義域名，而註冊分配給你的測試域名Sandbox subdomain壓根就不能用，你會遇到類似以下的報錯信息：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Laravel Database Migrations中的 timestamps 與 nullableTimestamps</title>
      <link>https://szeching.com/timestamps-and-nullabletimestamps-in-laravel-database-migrations/</link>
      <pubDate>Tue, 25 Feb 2020 16:10:50 +0000</pubDate>
      <guid>https://szeching.com/timestamps-and-nullabletimestamps-in-laravel-database-migrations/</guid>
      <description>&lt;p&gt;才知道Laravel Database Migrations 中的 &lt;code&gt;timestamps&lt;/code&gt;和&lt;code&gt;nullableTimestamps&lt;/code&gt; 在版本5.5之後數據庫中建立的是相同類型和屬性的column！！！好坑啊！！！&lt;/p&gt;</description>
    </item>
    <item>
      <title>CSS實現寶可夢劍盾對話框樣式</title>
      <link>https://szeching.com/pokemon-sword-shield-dialog-style-css/</link>
      <pubDate>Sun, 22 Dec 2019 06:56:44 +0000</pubDate>
      <guid>https://szeching.com/pokemon-sword-shield-dialog-style-css/</guid>
      <description>&lt;p&gt;這一版寶可夢的設計走極簡風啊，感覺缺乏童真了，嚶嚶嚶。&lt;/p&gt;&#xA;&lt;p&gt;Y.Cheung用CSS實現了寶可夢劍盾遊戲中對話框的樣式，如下：&lt;/p&gt;&#xA;&lt;iframe height=&#34;300&#34; style=&#34;width: 100%;&#34; scrolling=&#34;no&#34; title=&#34;CSS3 - Pokemon Sword and Shield dialogs style&#34; src=&#34;https://codepen.io/yukich/embed/oNgWLjZ?default-tab=html%2Cresult&#34; frameborder=&#34;no&#34; loading=&#34;lazy&#34; allowtransparency=&#34;true&#34; allowfullscreen=&#34;true&#34;&gt;&#xA;  See the Pen &lt;a href=&#34;https://codepen.io/yukich/pen/oNgWLjZ&#34;&gt;&#xA;  CSS3 - Pokemon Sword and Shield dialogs style&lt;/a&gt; by Yuki (&lt;a href=&#34;https://codepen.io/yukich&#34;&gt;@yukich&lt;/a&gt;)&#xA;  on &lt;a href=&#34;https://codepen.io&#34;&gt;CodePen&lt;/a&gt;.&#xA;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title>非ROOT用户使用docker命令</title>
      <link>https://szeching.com/run-docker-commands-without-sudo/</link>
      <pubDate>Mon, 08 Oct 2018 03:35:14 +0000</pubDate>
      <guid>https://szeching.com/run-docker-commands-without-sudo/</guid>
      <description>&lt;p&gt;Docker安装完之后，如果是以非ROOT用户登录的必须加sudo执行docker命令，否则会报错:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-zed&#34; data-lang=&#34;zed&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;Got &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;permission&lt;/span&gt; denied while trying to connect to the Docker daemon socket at unix&lt;span style=&#34;color:#ff79c6&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#6272a4&#34;&gt;///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/json: dial unix /var/run/docker.sock: connect: permission denied&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解决办法是把&lt;strong&gt;当前用户添加进docker用户组&lt;/strong&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决 postgreSQL truncate table过慢无响应问题</title>
      <link>https://szeching.com/solve-truncate-table-slowly-in-postgresql/</link>
      <pubDate>Tue, 25 Sep 2018 05:30:14 +0000</pubDate>
      <guid>https://szeching.com/solve-truncate-table-slowly-in-postgresql/</guid>
      <description>&lt;p&gt;在 postgreSQL 清空表 &lt;code&gt;TRUNCATE TABLE table_name RESTART IDENTITY RESTRICT;&lt;/code&gt;的时候，突然发生等了很久都没反应的问题，忧郁之。&lt;/p&gt;&#xA;&lt;p&gt;查了一下，一般遇到表操作过慢或者无响应之类的问题，可以像对操作系统一样kill掉process就好了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>解決Windows Docker 客戶端使用 Mariadb 官方image啟動報錯</title>
      <link>https://szeching.com/fix-mariadb-container-with-volumes-mapping-failing-to-start-on-windows/</link>
      <pubDate>Mon, 17 Sep 2018 14:03:32 +0000</pubDate>
      <guid>https://szeching.com/fix-mariadb-container-with-volumes-mapping-failing-to-start-on-windows/</guid>
      <description>&lt;p&gt;MariaDB Image使用的是當前最新的v10.3版本&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;docker pull mariadb:latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;docker-compose.yml文件內容：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yml&#34; data-lang=&#34;yml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;version&lt;/span&gt;: &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;services&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#ff79c6&#34;&gt;mariadb&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff79c6&#34;&gt;image&lt;/span&gt;: mariadb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff79c6&#34;&gt;container_name&lt;/span&gt;: mariadb&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff79c6&#34;&gt;restart&lt;/span&gt;: always&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff79c6&#34;&gt;volumes&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;      - ${DATA_DIR}:/var/lib/mysql&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff79c6&#34;&gt;ports&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;3306:3306&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#ff79c6&#34;&gt;environment&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff79c6&#34;&gt;MYSQL_ROOT_PASSWORD&lt;/span&gt;: password&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#ff79c6&#34;&gt;MYSQL_DATABASE&lt;/span&gt;: public&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;.env 文件內容：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker容器内PHP项目使用Visual Studio Code配置XDebug</title>
      <link>https://szeching.com/setup-xdbug-on-vscode-when-project-run-on-docker/</link>
      <pubDate>Tue, 10 Apr 2018 10:14:28 +0000</pubDate>
      <guid>https://szeching.com/setup-xdbug-on-vscode-when-project-run-on-docker/</guid>
      <description>&lt;p&gt;以下VSCODE XDEBUG 配置文件使用场景：项目在docker内运行（docker内项目位置为/var/www/html），项目代码映射在docker外，vscode编辑器安装在docker外。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nodejs中使用Async進行流程控制</title>
      <link>https://szeching.com/nodejs-flow-control-with-async/</link>
      <pubDate>Thu, 12 Oct 2017 06:24:33 +0000</pubDate>
      <guid>https://szeching.com/nodejs-flow-control-with-async/</guid>
      <description>&lt;p&gt;由於Node.js 是異步編程模型，在流程控制上很麻煩很複雜，幾個簡單的順序步驟就會寫出一堆回調嵌套，很頭疼。試了幾個庫都不能很好的解決這個問題，在同事Michael推薦了Async給我後順利的簡化了不少代碼！&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用pulp解決線性規劃問題</title>
      <link>https://szeching.com/a-case-study-of-stardew-valley-planting-optimization-with-pulp/</link>
      <pubDate>Thu, 12 Oct 2017 06:24:00 +0000</pubDate>
      <guid>https://szeching.com/a-case-study-of-stardew-valley-planting-optimization-with-pulp/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.nintendo.com/games/detail/stardew-valley-switch&#34; target=&#34;_blank&#34;&gt;Stardew Valley(星露谷物語)&lt;/a&gt; 在 nintendo switch&#xA;上架的消息刺激 Y.Cheung 又回鍋啦～這次想做出完美開局，於是在研究過 &lt;a href=&#34;https://stardewvalleywiki.com/Stardew_Valley_Wiki&#34; target=&#34;_blank&#34;&gt;wiki檔案&lt;/a&gt;&#xA;後決定計算出在一個季度月內使用初始資金種植什麼農作物種多少最轉錢。不考慮跨季度農作物與季度月內收成後售出後增加的資金部分，並且默認每天晚上都會澆水讓其生長。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux命令行簡單壓縮JPG圖片</title>
      <link>https://szeching.com/optimize-jpeg-image-using-linux-command/</link>
      <pubDate>Thu, 29 Jun 2017 08:56:00 +0000</pubDate>
      <guid>https://szeching.com/optimize-jpeg-image-using-linux-command/</guid>
      <description>&lt;h3 id=&#34;環境&#34;&gt;環境&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e7%92%b0%e5%a2%83&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;CentOS&lt;/p&gt;&#xA;&lt;h3 id=&#34;安裝jpegotim&#34;&gt;安裝JPEGOTIM&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e5%ae%89%e8%a3%9djpegotim&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;yum install jpegoptim&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;壓縮命令&#34;&gt;壓縮命令&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e5%a3%93%e7%b8%ae%e5%91%bd%e4%bb%a4&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;jpegoptim image.jpg&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;批量壓縮&#34;&gt;批量壓縮&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e6%89%b9%e9%87%8f%e5%a3%93%e7%b8%ae&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;for&lt;/span&gt; i in *.jpg; &lt;span style=&#34;color:#ff79c6&#34;&gt;do&lt;/span&gt; jpegoptim &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;$i&lt;/span&gt;; &lt;span style=&#34;color:#ff79c6&#34;&gt;done&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;find . -type f -name &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;*.jpg&amp;#34;&lt;/span&gt; -exec jpegoptim &lt;span style=&#34;color:#ff79c6&#34;&gt;{}&lt;/span&gt; &lt;span style=&#34;color:#f1fa8c&#34;&gt;\;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>解決本站故障小記</title>
      <link>https://szeching.com/solving-http-502-error-on-this-site/</link>
      <pubDate>Tue, 02 May 2017 15:58:32 +0000</pubDate>
      <guid>https://szeching.com/solving-http-502-error-on-this-site/</guid>
      <description>&lt;p&gt;本站突然發生 HTTP502 錯誤，導致幾天不能訪問，又適逢勞動節休假，Y.CHEUNG 沒帶電腦，而且縂想著反正訪問量極低，也就不趕著修復站點，今日才來細細察看一番。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MYSQL外鍵導致無法清空表</title>
      <link>https://szeching.com/mysql-truncate-table-error-with-foreign-key/</link>
      <pubDate>Thu, 27 Oct 2016 12:46:45 +0000</pubDate>
      <guid>https://szeching.com/mysql-truncate-table-error-with-foreign-key/</guid>
      <description>&lt;p&gt;最近設計的數據庫表含有外鍵，結果在開發時truncate table的時候報錯了，&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-mysql&#34; data-lang=&#34;mysql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;SQL错误（&lt;span style=&#34;color:#bd93f9&#34;&gt;1701&lt;/span&gt;）：Cannot truncate a &lt;span style=&#34;color:#ff79c6&#34;&gt;table&lt;/span&gt; referenced &lt;span style=&#34;color:#ff79c6&#34;&gt;in&lt;/span&gt; a &lt;span style=&#34;color:#ff79c6&#34;&gt;foreign&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;key&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;constraint&lt;/span&gt; (&lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt;rollcall2&lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt;.&lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt;oncall&lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt;, &lt;span style=&#34;color:#ff79c6&#34;&gt;CONSTRAINT&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt;FK__calls&lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;FOREIGN&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;KEY&lt;/span&gt; (&lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt;calls_id&lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt;) &lt;span style=&#34;color:#ff79c6&#34;&gt;REFERENCES&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt;rollcall2&lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt;.&lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt;calls&lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt; (&lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt;id&lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解決辦法如下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 extundelete 恢复rm误操作</title>
      <link>https://szeching.com/using-extundelete-to-recovery-files/</link>
      <pubDate>Thu, 27 Oct 2016 04:41:50 +0000</pubDate>
      <guid>https://szeching.com/using-extundelete-to-recovery-files/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;系统：CentOS 7&lt;/li&gt;&#xA;&lt;li&gt;文件系统：EXT4&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;今天 YCHEUNG 不小心用 &lt;code&gt;rm&lt;/code&gt; 命令误删了一个名字奇奇怪怪的文件，因为名字太奇怪想不起来它是啥，怕是重要文件，所以急急忙忙去找办法恢复。&lt;/p&gt;</description>
    </item>
    <item>
      <title>FEDORA安装electron-builder报错make:g&#43;&#43;:命令未找到之解决</title>
      <link>https://szeching.com/solve-fedora-npm-install-electron-builder-g-error/</link>
      <pubDate>Tue, 27 Sep 2016 03:38:53 +0000</pubDate>
      <guid>https://szeching.com/solve-fedora-npm-install-electron-builder-g-error/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;系统环境: Fedora 24&lt;/li&gt;&#xA;&lt;li&gt;Node v4.5.0&lt;/li&gt;&#xA;&lt;li&gt;NPM v2.15.9&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;npm安装electron-builder报错&#34;&gt;NPM安装electron-builder报错&lt;a class=&#34;anchorjs-link&#34; href=&#34;#npm%e5%ae%89%e8%a3%85electron-builder%e6%8a%a5%e9%94%99&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-mysql&#34; data-lang=&#34;mysql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;$npm install electron&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;builder &lt;span style=&#34;color:#ff79c6&#34;&gt;--&lt;/span&gt;save&lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt;dev&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;npm WARN package.json test&lt;span style=&#34;color:#ff79c6&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#bd93f9&#34;&gt;1&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;0&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;0&lt;/span&gt; No repository field.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;npm WARN package.json test&lt;span style=&#34;color:#ff79c6&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#bd93f9&#34;&gt;1&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;0&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;0&lt;/span&gt; No README data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;&amp;gt;&lt;/span&gt; inotify&lt;span style=&#34;color:#ff79c6&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#bd93f9&#34;&gt;1&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;4&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;1&lt;/span&gt; install &lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;var&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;www&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;html&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;test&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;node_modules&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;dev&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;node_modules&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;inotify&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;&amp;gt;&lt;/span&gt; node&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;gyp rebuild&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;make: Entering directory &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;/var/www/html/test/node_modules/dev/node_modules/inotify/build&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#50fa7b&#34;&gt;CXX&lt;/span&gt;(target) &lt;span style=&#34;color:#ff79c6&#34;&gt;Release&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;obj.target&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;inotify&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;src&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;bindings.o&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;make: g&lt;span style=&#34;color:#ff79c6&#34;&gt;++&lt;/span&gt;：命令未找到&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;inotify.target.mk:&lt;span style=&#34;color:#bd93f9&#34;&gt;97&lt;/span&gt;: recipe &lt;span style=&#34;color:#ff79c6&#34;&gt;for&lt;/span&gt; target &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;Release/obj.target/inotify/src/bindings.o&amp;#39;&lt;/span&gt; failed&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;make: &lt;span style=&#34;color:#ff79c6&#34;&gt;***&lt;/span&gt; [&lt;span style=&#34;color:#ff79c6&#34;&gt;Release&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;obj.target&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;inotify&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;src&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;bindings.o] Error &lt;span style=&#34;color:#bd93f9&#34;&gt;127&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;make: Leaving directory &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;/var/www/html/test/node_modules/dev/node_modules/inotify/build&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;gyp ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; build error &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;gyp ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; stack Error: &lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt;make&lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt; failed &lt;span style=&#34;color:#ff79c6&#34;&gt;with&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;exit&lt;/span&gt; code: &lt;span style=&#34;color:#bd93f9&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;gyp ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; stack     at ChildProcess.&lt;span style=&#34;color:#50fa7b&#34;&gt;onExit&lt;/span&gt; (&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;usr&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;lib&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;node_modules&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;npm&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;node_modules.bundled&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;node&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;gyp&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;lib&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;build.js:&lt;span style=&#34;color:#bd93f9&#34;&gt;276&lt;/span&gt;:&lt;span style=&#34;color:#bd93f9&#34;&gt;23&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;gyp ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; stack     at &lt;span style=&#34;color:#50fa7b&#34;&gt;emitTwo&lt;/span&gt; (events.js:&lt;span style=&#34;color:#bd93f9&#34;&gt;87&lt;/span&gt;:&lt;span style=&#34;color:#bd93f9&#34;&gt;13&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&lt;/span&gt;&lt;span&gt;gyp ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; stack     at ChildProcess.&lt;span style=&#34;color:#50fa7b&#34;&gt;emit&lt;/span&gt; (events.js:&lt;span style=&#34;color:#bd93f9&#34;&gt;172&lt;/span&gt;:&lt;span style=&#34;color:#bd93f9&#34;&gt;7&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19&lt;/span&gt;&lt;span&gt;gyp ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; stack     at Process.ChildProcess._handle.&lt;span style=&#34;color:#50fa7b&#34;&gt;onexit&lt;/span&gt; (internal&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;child_process.js:&lt;span style=&#34;color:#bd93f9&#34;&gt;200&lt;/span&gt;:&lt;span style=&#34;color:#bd93f9&#34;&gt;12&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20&lt;/span&gt;&lt;span&gt;gyp ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; System Linux &lt;span style=&#34;color:#bd93f9&#34;&gt;4&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;7&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#bd93f9&#34;&gt;200&lt;/span&gt;.fc24.x86_64&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21&lt;/span&gt;&lt;span&gt;gyp ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; command &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;/usr/bin/node&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;rebuild&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22&lt;/span&gt;&lt;span&gt;gyp ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; cwd &lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;var&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;www&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;html&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;test&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;node_modules&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;dev&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;node_modules&lt;span style=&#34;color:#ff79c6&#34;&gt;/&lt;/span&gt;inotify&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23&lt;/span&gt;&lt;span&gt;gyp ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; node &lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;v v4.&lt;span style=&#34;color:#bd93f9&#34;&gt;5&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24&lt;/span&gt;&lt;span&gt;gyp ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; node&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;gyp &lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;v v3.&lt;span style=&#34;color:#bd93f9&#34;&gt;4&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25&lt;/span&gt;&lt;span&gt;gyp ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;not&lt;/span&gt; ok &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;26&lt;/span&gt;&lt;span&gt;npm WARN optional dep failed, continuing appdmg&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;tf&lt;span style=&#34;color:#ff79c6&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#bd93f9&#34;&gt;0&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;4&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;9&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;27&lt;/span&gt;&lt;span&gt;npm WARN deprecated lodash.assign&lt;span style=&#34;color:#ff79c6&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#bd93f9&#34;&gt;4&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;2&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;0&lt;/span&gt;: This package &lt;span style=&#34;color:#ff79c6&#34;&gt;is&lt;/span&gt; deprecated. &lt;span style=&#34;color:#ff79c6&#34;&gt;Use&lt;/span&gt; Object.assign.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;28&lt;/span&gt;&lt;span&gt;npm WARN optional dep failed, continuing &lt;span style=&#34;color:#bd93f9&#34;&gt;7&lt;/span&gt;zip&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;bin&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;win&lt;span style=&#34;color:#ff79c6&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#bd93f9&#34;&gt;2&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;0&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;29&lt;/span&gt;&lt;span&gt;npm WARN optional dep failed, continuing &lt;span style=&#34;color:#bd93f9&#34;&gt;7&lt;/span&gt;zip&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;bin&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;osx&lt;span style=&#34;color:#ff79c6&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#bd93f9&#34;&gt;1&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;0&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;30&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; Linux &lt;span style=&#34;color:#bd93f9&#34;&gt;4&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;7&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#bd93f9&#34;&gt;200&lt;/span&gt;.fc24.x86_64&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;31&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; argv &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;/usr/bin/node&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;/usr/bin/npm&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;install&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;electron-builder&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;--save=dev&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;32&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; node v4.&lt;span style=&#34;color:#bd93f9&#34;&gt;5&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;33&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; npm  v2.&lt;span style=&#34;color:#bd93f9&#34;&gt;15&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;9&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;34&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; code ELIFECYCLE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;35&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;36&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; inotify&lt;span style=&#34;color:#ff79c6&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#bd93f9&#34;&gt;1&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;4&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;1&lt;/span&gt; install: &lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt;node&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;gyp rebuild&lt;span style=&#34;color:#ff79c6&#34;&gt;`&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;37&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;Exit&lt;/span&gt; status &lt;span style=&#34;color:#bd93f9&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;38&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;39&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; Failed at the inotify&lt;span style=&#34;color:#ff79c6&#34;&gt;@&lt;/span&gt;&lt;span style=&#34;color:#bd93f9&#34;&gt;1&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;4&lt;/span&gt;.&lt;span style=&#34;color:#bd93f9&#34;&gt;1&lt;/span&gt; install script &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;node-gyp rebuild&amp;#39;&lt;/span&gt;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;40&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; This &lt;span style=&#34;color:#ff79c6&#34;&gt;is&lt;/span&gt; most likely a problem &lt;span style=&#34;color:#ff79c6&#34;&gt;with&lt;/span&gt; the inotify package,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;41&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;not&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;with&lt;/span&gt; npm itself.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;42&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; Tell the author that this fails &lt;span style=&#34;color:#ff79c6&#34;&gt;on&lt;/span&gt; your system:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;43&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt;     node&lt;span style=&#34;color:#ff79c6&#34;&gt;-&lt;/span&gt;gyp rebuild&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;44&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; You can get information &lt;span style=&#34;color:#ff79c6&#34;&gt;on&lt;/span&gt; how &lt;span style=&#34;color:#ff79c6&#34;&gt;to&lt;/span&gt; open an issue &lt;span style=&#34;color:#ff79c6&#34;&gt;for&lt;/span&gt; this project &lt;span style=&#34;color:#ff79c6&#34;&gt;with&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;45&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt;     npm bugs inotify&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;46&lt;/span&gt;&lt;span&gt;npm ERR&lt;span style=&#34;color:#ff79c6&#34;&gt;!&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;Or&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;if&lt;/span&gt; that isn&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;t available, you can get their info via:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;47&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f1fa8c&#34;&gt;npm ERR! &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;48&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f1fa8c&#34;&gt;npm ERR!     npm owner ls inotify&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;49&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f1fa8c&#34;&gt;npm ERR! There is likely additional logging output above.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;50&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f1fa8c&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;51&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f1fa8c&#34;&gt;npm ERR! Please include the following file with any support request:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;52&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f1fa8c&#34;&gt;npm ERR!     /var/www/html/test/npm-debug.log&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;解决方法&#34;&gt;解决方法：&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;安装G++ &lt;code&gt;$sudo dnf install gcc-c++&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unity AvProVideo Plugin 中設置影片在安卓SD卡上的絕對地址</title>
      <link>https://szeching.com/setting-android-sdcard-absolute-path-on-unity-avprovideo-plugin/</link>
      <pubDate>Sat, 28 May 2016 13:14:31 +0000</pubDate>
      <guid>https://szeching.com/setting-android-sdcard-absolute-path-on-unity-avprovideo-plugin/</guid>
      <description>&lt;h2 id=&#34;media-play-設置&#34;&gt;Media Play 設置&lt;a class=&#34;anchorjs-link&#34; href=&#34;#media-play-%e8%a8%ad%e7%bd%ae&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Video Location 選擇 &lt;code&gt;Absolute Path Or URL&lt;/code&gt;。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;找到安卓設備sdcard的根目錄root-path&#34;&gt;找到安卓設備SDCard的根目錄(ROOT PATH)&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e6%89%be%e5%88%b0%e5%ae%89%e5%8d%93%e8%a8%ad%e5%82%99sdcard%e7%9a%84%e6%a0%b9%e7%9b%ae%e9%8c%84root-path&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;如果電腦上安裝了&lt;a href=&#34;https://developer.android.com/tools/adb&#34; target=&#34;_blank&#34;&gt;adb工具&lt;/a&gt;，使用指令 &lt;code&gt;adb shell echo $EXTERNAL_STORAGE&lt;/code&gt; 打印SD Card Root directory。&lt;/li&gt;&#xA;&lt;li&gt;如果安卓設備上安裝了terminal工具，(比如&lt;a href=&#34;https://play.google.com/store/apps/details?id=jackpal.androidterm&#34; target=&#34;_blank&#34;&gt;Terminal Emulator for Android&lt;/a&gt;)，使用指令 &lt;code&gt;ls&lt;/code&gt; 根據經驗篩選可能的目錄。&lt;/li&gt;&#xA;&lt;li&gt;一般而言，SD卡的根目錄可能但不限於以下幾種：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;/mnt/sdcard&lt;/li&gt;&#xA;&lt;li&gt;/storage/sdcard0&lt;/li&gt;&#xA;&lt;li&gt;/storage/sdcard&lt;/li&gt;&#xA;&lt;li&gt;/sdcard&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;設置權限&#34;&gt;設置權限&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e8%a8%ad%e7%bd%ae%e6%ac%8a%e9%99%90&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;在 &lt;code&gt;AndroidManifest.xml&lt;/code&gt; 文件中的&lt;code&gt;&amp;lt;uses-sdk&lt;/code&gt;前添加以下語句：&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;&amp;lt;uses-permission&lt;/span&gt; &lt;span style=&#34;color:#50fa7b&#34;&gt;android:name=&lt;/span&gt;&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;android.permission.READ_EXTERNAL_STORAGE&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;/&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;通常該文件位於&lt;code&gt;Assets/Plugins/Android/&lt;/code&gt;文件夾內，該配置文件詳解請參閱官方文檔&lt;a href=&#34;https://developer.android.com/guide/topics/manifest/manifest-intro.html&#34; target=&#34;_blank&#34;&gt;《App Manifest》&lt;/a&gt;（有中文版）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows7安裝Android Studio報錯 ERROR1812</title>
      <link>https://szeching.com/android-studio-installation-error-unable-to-elevate-error1812/</link>
      <pubDate>Tue, 24 May 2016 14:22:48 +0000</pubDate>
      <guid>https://szeching.com/android-studio-installation-error-unable-to-elevate-error1812/</guid>
      <description>&lt;p&gt;在 Win7 上運行 Android Studio 安裝包的時候，一直報錯 &lt;code&gt;Unable to elevate[error:1812] &lt;/code&gt;&#xA;上網搜了一下，原來是windows兼容性問題orz&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;解決方案&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;p&gt;鼠標右擊，選擇 &lt;strong&gt;“兼容性疑難解答”&lt;/strong&gt;，選擇 &lt;strong&gt;“嘗試建議的設置”&lt;/strong&gt;，選擇啟動程序 ，然後一直點擊下一步就好了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Aliyun MySQL Aborting</title>
      <link>https://szeching.com/aliyun-mysql-aborting/</link>
      <pubDate>Thu, 10 Dec 2015 09:48:55 +0000</pubDate>
      <guid>https://szeching.com/aliyun-mysql-aborting/</guid>
      <description>&lt;p&gt;放了wordpress的主機最近經常掛掉，提示無法連結數據庫，檢查log信息發現是因為內存不足，把InnoDB的buffer pool&#xA;size改小後似乎好了一些，可今天還是出錯了，log信息如下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Youtube上直播屏幕內容</title>
      <link>https://szeching.com/live-screen-stream-to-youtube/</link>
      <pubDate>Tue, 17 Nov 2015 12:38:00 +0000</pubDate>
      <guid>https://szeching.com/live-screen-stream-to-youtube/</guid>
      <description>&lt;p&gt;Y.CHEUNG 換手機喇終於～換了Sony Z5 Compact。看過的評測中我認為比較中肯的一篇《&lt;a href=&#34;http://www.chiphell.com/thread-1386729-1-1.html&#34; target=&#34;_blank&#34;&gt;[开箱评测] SONY Xperia z5 compact 红黄首发开箱&lt;/a&gt;》&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&#xA;  &lt;a class=&#34;paragraph-image&#34;&gt;&#xA;    &lt;img data-src=&#34;https://szeching.com/images/photo9295744203860728.jpg&#34; data-action=&#34;zoom&#34; alt=&#34;Sony Z5 Compact&#34;  class=&#34;lazyload&#34;&gt;&#xA;  &lt;/a&gt;&#xA;  &#xA;&lt;/figure&gt;&lt;/p&gt;&#xA;&lt;p&gt;and then&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;更新系統的時候就發現多了一個叫 ==Live Screen Streaming== 的APP，可以直播手機屏幕到youtube上（&lt;a href=&#34;https://www.xperiablog.net/2015/07/07/sonys-live-screen-streaming-app-allows-mobile-gamers-to-stream-live/&#34; target=&#34;_blank&#34;&gt;Sony’s “Live screen streaming” app allows mobile gamers to stream live&lt;/a&gt; ），覺得很有趣就試了試。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wordpress主题添加ogp协议meta标签</title>
      <link>https://szeching.com/add-ogp-meta-to-wordpress-theme/</link>
      <pubDate>Fri, 30 Oct 2015 06:40:31 +0000</pubDate>
      <guid>https://szeching.com/add-ogp-meta-to-wordpress-theme/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://ogp.me/&#34; target=&#34;_blank&#34;&gt;OGP（The Open Graph protocol）&lt;/a&gt;协议是一种新的HTTP头部标记，即Open Graph&#xA;Protocol，即这种协议可以让网页成为一个“富媒体对象”。由于现在社交类网站大行其道，在HTML头部添加引用此类协议标注有助于被社交网站识别。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Highslide Image WP插件完成</title>
      <link>https://szeching.com/highslide-image-wordpress-plugin/</link>
      <pubDate>Tue, 16 Jun 2015 14:04:32 +0000</pubDate>
      <guid>https://szeching.com/highslide-image-wordpress-plugin/</guid>
      <description>&lt;p&gt;Y Cheung的玩樂博客要搬家啦，用了N多年的插件原作者一直不更新，嗚嗚嗚，只好自己重新寫一個喇！&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/amyuki/Highslide-Image&#34; target=&#34;_blank&#34;&gt;Highslide Image - Wordpress插件&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;我的思路是：&#xA;編輯器上添加一個按鈕——彈出窗口——供填寫圖片URL及描述的表單——插入代碼至編輯器中——前台樣式化效果顯示。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ubuntu vps上的文件权限配置</title>
      <link>https://szeching.com/how-to-set-file-permissions-on-ubuntu-vps/</link>
      <pubDate>Tue, 05 May 2015 06:55:13 +0000</pubDate>
      <guid>https://szeching.com/how-to-set-file-permissions-on-ubuntu-vps/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;设置目录内所有文件及文件夹（包括子文件夹内）的权限为-rw-r&amp;ndash;r&amp;ndash;（644）：&lt;/p&gt;&#xA;&lt;p&gt;chmod -R 644 *&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;设置目录内所有文件（不包括子文件夹内）的权限为-rw-r&amp;ndash;r&amp;ndash;（644）：&lt;/p&gt;</description>
    </item>
    <item>
      <title>修復a2ensite 報錯 Site does not exist</title>
      <link>https://szeching.com/a2ensite-error-site-does-not-exist/</link>
      <pubDate>Thu, 04 Dec 2014 07:44:23 +0000</pubDate>
      <guid>https://szeching.com/a2ensite-error-site-does-not-exist/</guid>
      <description>&lt;p&gt;給ubuntu主機配置一個子域名的時候，發現用 a2ensite 居然報錯了！明明看了好些教程，比如&lt;a href=&#34;https://wiki.ubuntu.org.cn/Apache%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%8C%87%E5%8D%97&#34; target=&#34;_blank&#34;&gt;這個&lt;/a&gt;，&lt;a href=&#34;https://songup.diandian.com/post/2011-09-13/4996309&#34; target=&#34;_blank&#34;&gt;這個&lt;/a&gt;，都是講的差不多的東西，我都完全照著做，怎麼我一運行這個命令就報錯ERROR呢 = 3 =&lt;/p&gt;&#xA;&lt;p&gt;網上找了一下沒什麼特別有用的，於是還是去看相關文件，終於解決了。原來是新版本的配置文件都必須採用 &lt;code&gt;*.conf&lt;/code&gt;命名方式，也就是說要&lt;code&gt;a2ensite filename.conf&lt;/code&gt;因為 &lt;code&gt;/etc/apache2/apache2.conf&lt;/code&gt; 文件中的以下代碼片段：&lt;/p&gt;</description>
    </item>
    <item>
      <title>指定分類目錄下的最新文章列表小工具widget</title>
      <link>https://szeching.com/wordpress-widget-posts-list-under-specific-category/</link>
      <pubDate>Wed, 03 Dec 2014 07:07:00 +0000</pubDate>
      <guid>https://szeching.com/wordpress-widget-posts-list-under-specific-category/</guid>
      <description>&lt;p&gt;根據需求模仿著wordpress官方原生小工具（widget）&#x9;寫了一個能夠列出指定分類目錄下最新文章列表的小工具。代碼如下（先貼出來，以後有空再做解釋說明）：&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决找不到jquery.min.map文件404错误</title>
      <link>https://szeching.com/jquery-min-map-not-found/</link>
      <pubDate>Thu, 27 Nov 2014 19:46:20 +0000</pubDate>
      <guid>https://szeching.com/jquery-min-map-not-found/</guid>
      <description>&lt;p&gt;更新网页的时候突然看到 chrome 报错：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&#x9; GET http://localhost/m/js/jquery.min.map404 (Not Found)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;找了一下，代码中并没有引用这个文件啊，奇怪！&lt;/p&gt;&#xA;&lt;p&gt;上网找了一下，还蛮多人问这个问题的 = = ，网上提供的解决办法有以下几个：&lt;/p&gt;</description>
    </item>
    <item>
      <title>drupal中获取 entity reference field 的 node type 值</title>
      <link>https://szeching.com/get-entity-reference-node-type-in-drupal/</link>
      <pubDate>Tue, 25 Nov 2014 21:40:34 +0000</pubDate>
      <guid>https://szeching.com/get-entity-reference-node-type-in-drupal/</guid>
      <description>&lt;p&gt;标题很拗口我知道……&lt;/p&gt;&#xA;&lt;p&gt;用过 entity reference 模组的朋友都知道，这个模组（module）能让你在节点（node）中添加一个 Entity Reference 的字段（Field），可以引用其他的实体（entity）。此次添加引用的是节点。根据需求，须输出节点类型（node type），但是 entity reference 的字段只能输出被引用实体的ID（本例是 nid），所以……&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wordpress默认相册与文字内容分开显示及定制显示格式</title>
      <link>https://szeching.com/split-content-and-gallery-in-wordpress-and-custom-gallery-output/</link>
      <pubDate>Mon, 17 Nov 2014 22:28:14 +0000</pubDate>
      <guid>https://szeching.com/split-content-and-gallery-in-wordpress-and-custom-gallery-output/</guid>
      <description>&lt;p&gt;最近工作上要重新建站，公司有些站点是ASP的，程序老旧经常被黑。因为就是一般的企业展示类站点，就直接用wordpress重建了，页面样式还是用原来的，工作重点就是如何output出跟旧站一样的html结构。得益于这大半年的几个drupal项目，在做的时候思路跟以前不同了，不得不说drupal的核心思维还是很赞很科学的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wordpress中修改自定义导航菜单标签输出格式</title>
      <link>https://szeching.com/custom-wordpress-navigation-menu-output/</link>
      <pubDate>Thu, 13 Nov 2014 23:25:02 +0000</pubDate>
      <guid>https://szeching.com/custom-wordpress-navigation-menu-output/</guid>
      <description>&lt;p&gt;wordpress自3.0版本后增加了一个自定义导航菜单的功能，但是默认生成的菜单会被包含在&lt;code&gt;&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&lt;/code&gt;列表标签中，对于修改主题来说甚为不便。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wordpress在循环LOOP中获取 post_date 使用自定义日期时间格式</title>
      <link>https://szeching.com/formatting-date-using-mysql2date-in-wordpress/</link>
      <pubDate>Mon, 10 Nov 2014 22:59:19 +0000</pubDate>
      <guid>https://szeching.com/formatting-date-using-mysql2date-in-wordpress/</guid>
      <description>&lt;p&gt;code示例：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;&amp;lt;?&lt;/span&gt;php &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;$args&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;array&lt;/span&gt;(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;numberposts&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;16&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;category&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;8&amp;#39;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;&#x9;  &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;$recent_posts&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt; wp_get_recent_posts( &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;$args&lt;/span&gt;, ARRAY_A );&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;&#x9;  &lt;span style=&#34;color:#ff79c6&#34;&gt;foreach&lt;/span&gt; (&lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;$recent_posts&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;as&lt;/span&gt; &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;$recent&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;&#x9;  &#x9;&lt;span style=&#34;color:#ff79c6&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;&amp;lt;li&amp;gt;&amp;lt;a href=&amp;#34;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;.&lt;/span&gt; get_permalink(&lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;$recent&lt;/span&gt;[&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;ID&amp;#34;&lt;/span&gt;])&lt;span style=&#34;color:#ff79c6&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;&amp;#34;&amp;gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;$recent&lt;/span&gt;[&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;post_title&amp;#34;&lt;/span&gt;]&lt;span style=&#34;color:#ff79c6&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;&amp;lt;/a&amp;gt;&amp;lt;span class=&amp;#34;list-meta&amp;#34;&amp;gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;.&lt;/span&gt; mysql2date(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;Y-m-d&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;$recent&lt;/span&gt;[&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;post_date&amp;#34;&lt;/span&gt;]) &lt;span style=&#34;color:#ff79c6&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&amp;#39;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;&#x9;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;?&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;原本直接用&lt;code&gt;$recent[&#39;post_date&#39;]&lt;/code&gt;输出的是&lt;code&gt;2014-11-11 14:30:24&lt;/code&gt;这样的格式，但现在不需要时间的输出，Y.Cheung 只需要输出日期，找了一下用mysql2date函数就可以。&lt;/p&gt;</description>
    </item>
    <item>
      <title>忘記 Mysql ROOT 密碼的解決辦法</title>
      <link>https://szeching.com/when-i-foget-mysql-root-password/</link>
      <pubDate>Mon, 10 Nov 2014 06:49:54 +0000</pubDate>
      <guid>https://szeching.com/when-i-foget-mysql-root-password/</guid>
      <description>&lt;p&gt;豬腦袋是記不住密碼的。&lt;/p&gt;&#xA;&lt;p&gt;靠別人也是記不住密碼的。&lt;/p&gt;&#xA;&lt;h2 id=&#34;環境&#34;&gt;環境&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e7%92%b0%e5%a2%83&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Ubuntu&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;操作步驟&#34;&gt;操作步驟&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e6%93%8d%e4%bd%9c%e6%ad%a5%e9%a9%9f&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id=&#34;修改mysql配置&#34;&gt;修改MySQL配置&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e4%bf%ae%e6%94%b9mysql%e9%85%8d%e7%bd%ae&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在 &lt;code&gt;/etc/my.cnf&lt;/code&gt; 中的 &lt;code&gt;[mysqld]&lt;/code&gt;段尾處加入以下語句：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;        skip-name-resolve&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;        skip-grant-tables&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;重啟mysql&#34;&gt;重啟MYSQL：&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e9%87%8d%e5%95%9fmysql&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;        service mysql restart&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;登錄mysql並修改密碼&#34;&gt;登錄MYSQL並修改密碼&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e7%99%bb%e9%8c%84mysql%e4%b8%a6%e4%bf%ae%e6%94%b9%e5%af%86%e7%a2%bc&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;        mysql&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;        USE mysql;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;        UPDATE user &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;Password&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt; password&lt;span style=&#34;color:#ff79c6&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;your-password&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;)&lt;/span&gt; WHERE &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;User&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;root&amp;#39;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;        // or you can use:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;        // SET PASSWORD FOR &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;root&amp;#39;&lt;/span&gt;@&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt; PASSWORD&lt;span style=&#34;color:#ff79c6&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;your-password&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;)&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;        flush privileges;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;7&lt;/span&gt;&lt;span&gt;        quit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;還原mysql配置&#34;&gt;還原MySQL配置&lt;a class=&#34;anchorjs-link&#34; href=&#34;#%e9%82%84%e5%8e%9fmysql%e9%85%8d%e7%bd%ae&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;修改MYSQL配置文件，刪除在前述步驟中添加的語句；&lt;/p&gt;</description>
    </item>
    <item>
      <title>獲取最新文章並附特色圖片的代碼</title>
      <link>https://szeching.com/code-for-get-latest-post-thumb/</link>
      <pubDate>Wed, 07 Dec 2011 13:36:32 +0800</pubDate>
      <guid>https://szeching.com/code-for-get-latest-post-thumb/</guid>
      <description>&lt;p&gt;幫朋友寫的，順便放在這裡mark一下好了。 以下代碼實現獲取最新10篇日誌及其100×100像素的特色圖片。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#ff79c6&#34;&gt;&amp;lt;?&lt;/span&gt;php query_posts(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#39;posts_per_page=10&amp;#39;&lt;/span&gt;); &lt;span style=&#34;color:#ff79c6&#34;&gt;if&lt;/span&gt; (have_posts()) &lt;span style=&#34;color:#ff79c6&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#ff79c6&#34;&gt;while&lt;/span&gt; (have_posts()) &lt;span style=&#34;color:#ff79c6&#34;&gt;:&lt;/span&gt; the_post(); &lt;span style=&#34;color:#ff79c6&#34;&gt;?&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;&amp;lt;?php if (has_post_thumbnail()){the_post_thumbnail(array(100,100)); } ?&amp;gt; &amp;lt;?php the_title(); ?&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;&amp;lt;?php echo get_the_date(); ?&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;7&lt;/span&gt;&lt;span&gt;&amp;lt;?php endwhile; endif;?&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;thread-comments&#34;&gt;&#xA;&lt;h2 id=&#34;comments-7&#34;&gt;COMMENTS (7)&lt;a class=&#34;anchorjs-link&#34; href=&#34;#comments-7&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://www.blog1984.com&#34; target=&#34;_blank&#34;&gt;老武&lt;/a&gt;&lt;/strong&gt; · 2012-03-26T10:42:20+08:00&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
