60% 鍵盤主力一段時間後的小小心得
60% 鍵盤用了一陣子,整體來說還是不比 75% 來得有效率,不過讓我終於嘗試替換掉 Caps Lock 以後得到了一個不錯的心得,把 Caps Lock 換成 Fn 再搭配周圍的按鍵設成第二組方向鍵跟六塊肌,還沒用到成為肌肉記憶,不過可以讓我不必把手移開,挺不賴,再花點時間適應。

60% 鍵盤用了一陣子,整體來說還是不比 75% 來得有效率,不過讓我終於嘗試替換掉 Caps Lock 以後得到了一個不錯的心得,把 Caps Lock 換成 Fn 再搭配周圍的按鍵設成第二組方向鍵跟六塊肌,還沒用到成為肌肉記憶,不過可以讓我不必把手移開,挺不賴,再花點時間適應。

從一路發逃難出來前用了好長一段時間,而且算得上頻繁吧,也是逃得很晚了。
後來隨便找了 Shipgo17,起初只覺得怎麼網頁那麼垃圾,委託收貨要填那麼多有的沒的完全不知道意義在哪裡,申請寄回也難用到爆炸,費用上沒有比較便宜,速度又慢。
唯一好處大概就是客服態度還算可以吧,但是回覆速度也很慢。
光上述部份就已經夠糟的,更扯的是後來有遇到幾個實在是極為要不得的狀況。
首先是包裏漏寄回,因為這種服務用很習慣了,頻率高加上一次運回的量也不少,後來基於信任就沒有特別清點,當然這也說明我自己買了啥都沒放心上… 夠蠢的。
後來有一次又運回了一大包,有覺得怪怪的並沒有多想,過了大概一個月,才接到客服通知說整理倉庫發現有東西當初沒打包到寄回來給我,當初整併沒包到所以也沒算到錢。
我當然是要寄回,其實感覺非常差,不過至少還算誠實,所以我也沒特別怎樣,但很確定該放棄這家了。
所以後來經學長推薦改用運匠,體驗真的良好許多,速度快,網頁雖說偏簡陋,但 UX 真的像是正常東西太多了,缺點的話則是國家站點較少,只有日本和支那。
這個站點使用的較為稀少,最初使用的時候沒有什麼問題,然而近期使用一次就讓人完全失去信任,在經過上面事件後還會使用的原因一樣是懶… 只能說自己還是沒學乖。
僅僅是因為運匠沒有美國站就再給他機會,疏不知這一次終於徹底把我打醒,印象中規定上就寫說要 2 天才會入庫,超過請聯絡,光是原本規定的就久到不可思議了,
我還是照規矩來,等到第 4 天還是不見蹤影才找客服,又逢假日,所以等周末過完才有消息,結果說只有收到一件,叫我再跟貨運確認,讓我賭爛到不行。
寫信給線上購物,說他們運出一概不負責,自己去跟 UPS 問,還提醒我他們規定不能送到轉運,整個很三小…
看 UPS 物流追蹤說是丟在碼頭的樣子,明明顯示已送達,查送達證明卻沒有照片,於是提起未送達申訴。
過了一個月 UPS 回說送到了,請再確認,還以為是想隨便把案子結掉,又氣了一回,再過五天 Shipgo 突然通知那包入庫了。
所以總的來說,應該是 UPS 和 Shipgo 都有問題,而且 UPS 或許責任更大一些,無法確定,可 Shipgo 相信是脫不了關係。
怎麼可能這麼大一個集貨服務,會跟這麼大的快遞沒有往來,東西就這樣丟下了也不找下的?我合理懷疑找別家就不會發生同樣問題。
之後打算依照這則[心得] 五家美國集運心得分享改試看看好運,日後有心得再來分享。
平常有在 Raspberry Pi 上用 Spotify 播放音樂的習慣,用的是 Raspotify,就是把 librespot 包成 Debian 尤其是 Raspi 用的套件的專案,前幾天突然播不動,起先以為又是帳號被針對了…
後來弄巧成拙系統掛掉,也不確定是不是我親手搞爆的就是了,總之是乾脆重裝了,正好當作 clean install 升新版,之前一直懶得這麼做就卡在 Buster。
裝好後問題依舊,查到和我症狀一毛一樣的 issue,看起來是有災情,詳見 Getting status code 500s since Ads API sunset · Issue #1527 · librespot-org/librespot。
起初找到的時候沒看到什麼簡便有效的方法,後來持續追蹤就看到有人說在 /etc/hosts 裡加上一筆 0.0.0.0 apresolve.spotify.com 的紀錄就行了,試了下還真的立竿見影,所以就是把那玩意擋掉的意思,蠻莫名其妙的…
我都已經是用付費帳號在播了還會撞到這種廣告關聯的問題…
不過開 issue 的人就有表示相信和 Spotify 的舊版廣告相關 API 下掉了有關…
暫且是這麼處置了,這件事也得記著,天知道會不會之後哪天變成反而因為這筆 DNS record 掛掉。
也不能說沒有收獲啦,因為一些很蠢的問題笨手笨腳的重裝很多次,時間花的遠沒有預期的久,主要好處是藉機升了新版。
再者是順便調整了音效介面相關的設定,音質似乎有顯著的變化,應該是好的方向啦… 我在這上面播也沒有追求音質就是了。
還有多學到了幾個音效相關的指令,像是 aplay 跟 speaker-test,有點太晚就是,發現播不了的時候不確定到底是什麼部份出狀況,
因此重裝後也不曉得到底能不能播出聲音,但 raspotify 又處於播不了的狀態,等到找到有效解法才學會 speaker-test…
過沒太久 Raspotify 0.46.2 把 Librespot 升到最新版就把這問題給解決,不需要 workaround 了。
首次使用吸吸管(環保塑膠吸管)的一些感想。
在 Hacker News Daily 上讀到了這篇文章 - Adding a feature because ChatGPT incorrectly thinks it exists
我大致說下內容:
主角是一個叫作 Soundslice Sheet Music Scanner 的線上服務,提供上傳樂譜相片,將其轉檔為類似 GuitarPro 或 MuseScore 那種打譜軟體用的格式,方便閱讀、播放、編輯。
前陣子開始觀察到一些奇妙的錯誤,檢查了上傳的圖片,竟然是和 ChatGPT 的對話擷圖,上頭有 ASCII tab 譜,作者起先完全不明白這是怎麼回事,直到他親自試過才發現是 ChatGPT 豪洨說如果你想播放這個譜的內容的話可以用他們的服務。
然而該服務並沒有支援這種格式,完全是 ChatGPT 的幻覺。
這令他們受到了不切實際的期待,有損他們的商譽,考慮要直接在網站聲明沒有那種功能,最後決定乾脆把這個不存在的功能給做出來,反正本來就在他們排定會做的功能裡,只是順位在最底。
作者表示這大概是世界上第一次有人去做了 AI 妄想、唬洨存在的功能。
這一切是頗有共鳴的,問些相對冷門的領域的東西的問題 ChatGPT 就很會唬洨,我最近的例子是 Cedar 跟 Spring Web Testing 相關的問題,都回答我一些不存在的功能或用法。
不過我更在意的是這年頭居然還有人在用那種 ASCII tab 譜,我以為是古早的時空背景下才流行,如今已經不太有人使用的東西才是…
我自己是沒有親自經歷過,畢竟是出社會後才真正開始學琴,但我想像中應該是早年網路頻寬比較有限,再加上打譜軟體也沒那麼普及等等因素才蔚為潮流的格式,在 Ultimate Guitar、911 Tabs 之類的網站上廣為使用。
在我還是學生的時候就已經都聽到是在用 gp 譜了啊,我過去還有找到可以讀取 gp 譜格式的開源軟體 powertabeditor,當時也早就有 Songsterr 這種線上網頁形式的,而且我看樂譜數量也是相當龐大了。
實在是有夠謎的…
系統資源不足,無法完成要求的服務。
錯誤碼: Wsl/Service/CreateInstance/CreateVm/HCS/0x800705aa
[process exited with code 4294967295 (0xffffffff)]
You can now close this terminal with Ctrl+D, or press Enter to restart.
昨天正在打 Splitgate 2 突然想開一下 wsl 又遇到上面這個錯誤,前一次遇到的時候明明就沒有在打遊戲,所以困惑到不行。
這次才明暸原來是當下的系統記憶體不足,我桌機只有 32GB 的確是不多啦,可明明就還剩 8GB 以上,關了遊戲以後還真的就能開了…
於是查到 Advanced settings configuration in WSL # Main WSL settings 裡記憶體的預設值竟然是系統總記憶體的 50%。
沒事也切太多了吧,來改小一點看看還會不會撞到,日後電腦升級再順道加大,但絕對不能放預設抓一半就是了,有點瞎,一半的意思不就是要電腦夠閒或是主力都在 wsl2 上,超不合理啊。
後續更新:
看來問題根本不在記憶體… 後來又碰上了,當下關了一堆程式,閒置記憶體剩餘超過一半還是給我同樣的錯誤。
總之再度查找了起來沒什麼鳥結果,只發現這問題遠比想像中的普遍,大家都對於不講明什麼樣的資源不足感到莫名又束手無策。
別名海象符號
What’s New In Python 3.8: Assignment expressions
PEP 572 – Assignment Expressions
3.8 加入的這個海象符號當年有注意到但沒看懂,也就被我淡忘掉了。
本來就很受不了多做一次不必要運算的行為,可是為了省那一次又多寫一個 assignment 也頗令人煩躁不舒爽,近期開始養成每天寫上一、兩題的習慣後特別有感。
讀到這則 Fastest Way to Read Excel in Python | Haki Benita 裡頭有用到才讓我回想起其存在並去找出究竟是什麼意思。
不算很常見,初見也不直覺,但用得上的時候真的能簡潔不少。
直接偷 release note 裡的例子來說明。
沒有 walrus operator 的情況下,一段程式懶惰的寫法如下:
if len(a) > 10:
    print(f"List is too long ({len(a)} elements, expected <= 10)")
前述的減少不必要運算的不偷懶寫法則可能變成:
n = len(a)
if n > 10:
    print(f"List is too long ({n} elements, expected <= 10)")
用上這個新符號的化就能夠簡化成:
if (n := len(a)) > 10:
    print(f"List is too long ({n} elements, expected <= 10)")
拿這個例子來看就很容易理解,也就是顧名思義 assign 的同時亦是一個 expression,所以才能用在 if 的後頭。
另一個顯然很好用的情況就是在 while loop 裡:
# Loop over fixed length blocks
while (block := f.read(256)) != '':
    process(block)
傳統的寫法多半會變成:
block = f.read(256)
while block != '':
    process(block)
    block = f.read(256)
最近開始拾起一些在 Java 裡屬相對較新的功能,例如本次想要稍微提下的 Text Blocks,這也是我個人期盼已久的功能。
自 Java 15 起 Text Blocks 脫離預覽成為標準功能,然而我的理解只停留在類似 Python 用 3 個引號括起來就可以寫下多行內容的程度。
至於縮排是怎麼認定的?尾巴的空白會保留還是被去掉?等問題由於過往的輕度使用大概都是在 SQL 語句上,便不是那麼在乎實際字串組成後的排版會長成什麼模樣,只要在原始碼裡面看起來順眼就行。
這回我下定決心要有足夠的理解便找到了這則官方教學 Programmer's Guide to Text Blocks,內容相當完善,相信已經涵蓋絕大部份使用上需注意的要點,亦有充足易懂的範例,強烈建議讀過原文,看似有相當長度實際上非常好理解且有不少示範,所以閱讀起來並不花費太多時間,以下取出一些摘要:
以上要點大部份都是我原先沒想過要知道的事情,著是獲益匪淺,若干年前老覺得 Java 各種沒人性,近年許多實用功能補上來變成正式版,對於 Java 反而變得頗有好感了。
你所不知的塑膠貨幣歷史
2023-09-03 plastic money on Computers Are Bad
上面是一篇在 Hacker News Daily 看到專門講述 stored value cards,也就是一種餘額實際存在卡片內,離線進行交易的應用之興衰史。
裡頭從緣起、規範制定開發及相關技術、成功試驗案例乃至如今仍在營運中的大規模應用皆有涵蓋,相當詳盡。
令人感慨的是網路連線已經相當普及可靠,使得該技術在現代條件下沒有太多選用的理由,即便他有較線上交易簡便之處,當然也有其更複雜之處。
很喜歡這種講古的文章,這則又帶有一股哀傷的情緒…