<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux on 只放拖鞋的鞋櫃</title><link>https://jchu.cc/tags/linux/</link><description>Recent content in Linux on 只放拖鞋的鞋櫃</description><generator>Hugo</generator><language>zh-TW</language><lastBuildDate>Thu, 20 Mar 2025 09:41:30 +0800</lastBuildDate><atom:link href="https://jchu.cc/tags/linux/index.xml" rel="self" type="application/rss+xml"/><item><title>編輯器的黃昏</title><link>https://jchu.cc/2025/03/20-editor.html</link><pubDate>Thu, 20 Mar 2025 09:41:30 +0800</pubDate><guid>https://jchu.cc/2025/03/20-editor.html</guid><description>&lt;p&gt;去年公司辦了程式實作相關的活動，鼓勵不同辦公室的同事組隊，協同開發小玩具的競賽。我應台灣同事之邀，參加了為期三天的活動。&lt;/p&gt;
&lt;p&gt;很可惜地點在東京，我沒有因此賺到免費機票。但是有幸跟優秀有趣的同事見面，在職場開著熟悉的台灣哏玩笑，也是難得的經驗。&lt;/p&gt;</description></item><item><title>連接 Serial Port 的程式 neocon</title><link>https://jchu.cc/2024/11/22-neocon.html</link><pubDate>Fri, 22 Nov 2024 17:44:53 +0800</pubDate><guid>https://jchu.cc/2024/11/22-neocon.html</guid><description>&lt;p&gt;連接 &lt;code&gt;/dev/tty*&lt;/code&gt; console 的軟體，許多人用的是 minicom&lt;/p&gt;
&lt;p&gt;而我個人最愛則是輕薄短小的 neocon&lt;/p&gt;</description></item><item><title>GnuPG 基本觀念與指令介紹</title><link>https://jchu.cc/2022/05/17-gnupg.html</link><pubDate>Tue, 17 May 2022 00:25:27 +0800</pubDate><guid>https://jchu.cc/2022/05/17-gnupg.html</guid><description>&lt;p&gt;GnuPG 應該是絕大多數 Linux user 或是開發者都用過的工具。說起來真不好意思，十多年前剛開始工作的時候就用過它，懵懵懂懂查了幾個常見指令就擺著不放。現在終於振作起來，稍微多花點時間，重新認識這個工具&lt;/p&gt;</description></item><item><title>在 Debian 上 dm-crypt 的緊急救援</title><link>https://jchu.cc/2018/09/15-dm-crypt.html</link><pubDate>Sat, 15 Sep 2018 17:26:15 +0800</pubDate><guid>https://jchu.cc/2018/09/15-dm-crypt.html</guid><description>&lt;p&gt;這兩年來工作的主力機是 MacBook Pro，原本的 x220 比較少出動，系統的 debian testing 也因此許久沒更新。&lt;/p&gt;
&lt;p&gt;前幾天拿出來用 aptitude 升級套件的時候，因為衝突與相依數量太多，一度讓 aptitude 不會動。同時自己又不知道在哪個地方犯了傻，有些套件只更新到一半就重開機，結果掛載家目錄的時候失敗，一直無法開機，連 tty 都沒拿到。&lt;/p&gt;
&lt;p&gt;所幸只是小問題，以下紀錄過程，希望能給類似的苦主一點幫助。&lt;/p&gt;</description></item><item><title>Change directory helper function</title><link>https://jchu.cc/2018/03/13-cd.html</link><pubDate>Tue, 13 Mar 2018 21:56:26 +0800</pubDate><guid>https://jchu.cc/2018/03/13-cd.html</guid><description>&lt;p&gt;This function might be the most useful one in my own scripts, and I had introduced it for several times.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s say you are working in a big project such as Android Framework, or your are a command-line heavy user. The change-directory-command, &lt;code&gt;cd&lt;/code&gt;, would be typed thounsands times per day. THAT IS SO ANNOYING!.&lt;/p&gt;
&lt;p&gt;Try adding this function to &lt;em&gt;~/.bashrc&lt;/em&gt;&lt;/p&gt;</description></item><item><title>使用 ffmpeg 編輯影片</title><link>https://jchu.cc/2018/02/27-ffmpeg.html</link><pubDate>Tue, 27 Feb 2018 23:25:41 +0800</pubDate><guid>https://jchu.cc/2018/02/27-ffmpeg.html</guid><description>&lt;p&gt;長話短說，可以用 ffmpeg 做到一些簡單的影片編輯功能，好比說&lt;/p&gt;
&lt;p&gt;把 input.mp4 裡面 00:24:32 到 00:29:34 這段時間的影像擷取出來&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ffmpeg -i input.mp4 -ss 00:24:32 -to 00:29:34 -threads &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; -y clip001.mp4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;從一張圖片產生一個長度 15 秒的影片，同時把尺寸轉為 1280x720&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ffmpeg -loop &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; -i image.png -t &lt;span style="color:#ae81ff"&gt;15&lt;/span&gt; -vf scale&lt;span style="color:#f92672"&gt;=&lt;/span&gt;1280:720 -pix_fmt yuv420p -y image.mp4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;將一個完全沒有音軌的影片，塞入 15 秒的無聲音軌，指定頻率為 48000 Hz。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ffmpeg -f lavfi -i anullsrc&lt;span style="color:#f92672"&gt;=&lt;/span&gt;r&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;48000&lt;/span&gt; -i image.mp4 -t &lt;span style="color:#ae81ff"&gt;15&lt;/span&gt; -c:v copy -c:a aac -y silent.mp4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;接著把幾個 mp4 檔接成一個檔案，先把它們都轉成 ts 檔，最後再接回 mp4 檔&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;6
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ffmpeg -i clip0.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y clip0.ts
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ffmpeg -i clip1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y clip1.ts
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ffmpeg -i clip2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y clip2.ts
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ffmpeg -i &lt;span style="color:#e6db74"&gt;&amp;#34;concat:clip0.ts|clip1.ts|clip2.ts&amp;#34;&lt;/span&gt; -c copy -bsf:a aac_adtstoasc -y output.mp4
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ rm clip0.ts clip1.ts clip2.ts&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Inkscape crashed in Debian testing</title><link>https://jchu.cc/2016/07/30-debian-inkscape.html</link><pubDate>Sat, 30 Jul 2016 11:34:22 +0800</pubDate><guid>https://jchu.cc/2016/07/30-debian-inkscape.html</guid><description>&lt;h1 id="summary"&gt;Summary&lt;a class="anchor" href="#summary"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;這個問題持續發生好長一段時間了：只要同時選擇了兩個以上的物件，Inkscape 就會 crash。問題簡單來說就是中文翻譯的問題，所以用其他語言的人不會遇到。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For debian inkscape 0.91, It only happens in Traditional-Chinese conext&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;You could reproduce this problem by launching inkscape in Traditional-Chinese context. (It won&amp;rsquo;t happen in Simplified-Chinese context. explain later).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ LANGUAGE&lt;span style="color:#f92672"&gt;=&lt;/span&gt;zh_TW.utf8 /usr/bin/inkscape&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then create any two objects, select all of them. boom!&lt;/p&gt;
&lt;img src="https://jchu.cc/2016/07/30-debian-inkscape/inkscape_crash_in_zh.png" alt="inkscape_crash_in_zh.png" style="max-width: 800px; margin: auto;"&gt;&lt;p&gt;If you only need workaroud for now.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ LANGUAGE&lt;span style="color:#f92672"&gt;=&lt;/span&gt;en_US /usr/bin/inkscape&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;img src="https://jchu.cc/2016/07/30-debian-inkscape/inkscape_works_in_eng.png" alt="inkscape_works_in_eng.png" style="max-width: 800px; margin: auto;"&gt;&lt;p&gt;因為困擾我超久的，今天就用 gdb 稍微追一下問題&lt;/p&gt;</description></item><item><title>從 GDM 換成 lightDM</title><link>https://jchu.cc/2015/10/28-lightdm.html</link><pubDate>Wed, 28 Oct 2015 01:27:51 +0800</pubDate><guid>https://jchu.cc/2015/10/28-lightdm.html</guid><description>&lt;p&gt;最近發生了奇怪的事情，就是我的 root file system (/) 會整個被吃光，同時還注意到 rsyslogd 會跑到 CPU 100%。接著就發現是 &lt;code&gt;/var/log&lt;/code&gt; 底下的 syslog 或是 message 幾個檔案變成好幾 Gigabyte 的大小，裡面滿是 gdm3 的錯誤訊息&lt;/p&gt;
&lt;p&gt;幾乎都是發生在我跑 Android Studio 之後才會遇到這樣的情況，我還以為是 openjdk 配上我的 awesome window manager 有什麼問題。今天還忍痛換成 orcale java 8，也停掉了 rsyslogd。直到剛剛我才發現一件奇怪的事情&lt;/p&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;竟然有個 gnome-shell 的 process 在跑！
竟然有個 gnome-shell 的 process 在跑！
竟然有個 gnome-shell 的 process 在跑！&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>