示例(影片有聲音)
Noise 4.2.0 新功能「Multiple Sounds」
可以在事件上綁定「多個」聲音,可選擇是否隨機播放。
安裝 Noise:
註:套件裡面「沒有提供」影片中的聲音檔,要自己去生喔。
首頁
可以在事件上綁定「多個」聲音,可選擇是否隨機播放。
安裝 Noise:
註:套件裡面「沒有提供」影片中的聲音檔,要自己去生喔。
Feeders 法規頁,這是第一篇試做 digest,記錄近期比較有意思的判例。
公司員工長期餵食,狗從公司空地竄出,嚇到送貨員。
一開始也辯稱是流浪狗,但認「因公司員工長期固定的飼養行為,因此才會以公司內部為活動範圍,進出往返於公司內部空地,關係緊密,客觀上已非單純之流浪犬與不特定飲食提供者之關係」。
結果公司負責人被認定為飼主之一,確定罰 3 千。
註:判決書看起來,沒有深入追究餵食以外的行為,只說狗沒有綁、自由進出,大致以長期餵食和活動範圍認定。
開車撞到狗(當場死亡)未送醫,也未下車查看,一審要罰駕駛 3 萬。
提行政訴訟後,認定當場撞死「送醫治療並無法達成保護動物生命之目的」所以撤銷。(有說仍算過失傷害致死,但不在這個裁判的範圍)
既然有法規保護流浪動物生命,那麼讓狗流浪,儘管讓牠暴露在危險中,但對牠的生命是有保障的?
美化流浪,民眾會以為這樣可以,而不是萬不得已才流浪。 越是容忍,動物福利越差。
公共政策網路參與平臺上的「第四次動野保大戰」第一輪,官方逐字稿還沒出來,先寫一些感想。
2025-9-16 公共政策網路參與平臺提案「落實收容所人道安樂死,強化飼主責任管理,餵食者同管領人應依動保法承擔飼主責任」意見蒐集會議 - YouTube
「推動人」大量發言,提案人反而很少講話。 會議一開始就無視議程,逕自檢討技正洩資、打十年前的黃泰山、質疑利益團體入場。 後面也跟陳祺忠搭配開火,讓很多人看了「很爽」。
但對我而言是扣分,沒有打到點上,加重對立誤會。
※動保司應該是本來就有做功課,這次剛好拿出來撐場面,沒關係還是給肯定。
總結,農業部還是照他的步調在走,提案也不真的代表動保、野保群體,不要對平台有錯誤期待,更不要當成聖戰。
vim-cycle 1.4.0
14 年前發布 vim-cycle 0.1.0(貼文)有得到一些迴響,但後來可能宣傳上被同名 zef/vim-cycle 掩蓋,接著又有 switch.vim 打破限制支援 pattern,繼續用 vim-cycle 的理由就不多了。
今年為了清掉古早 issue,幫專案加了 test,體質提昇後就開始加功能,結果變出了不錯的成果。
新增 regex 選項,大致就是跟 switch.vim 一樣的機制,例如 ruby 的 :bar =>
可以變成 bar:
,以往是做不到的。
設定上也可以收割 switch.vim 的豐富資產,只要做一些微調(主要是把 vim dictionary 換成 list)即可。
新增 matcher
/ changer
定義,也就是「什麼東西要 cycle」「要怎麼 cycle」變成可抽換的,這麼一來 regex 也只是一種變體而已。
於是出現了紀年轉換,可以從民國年、日本元号、泰國佛曆、西元年之間轉換。
還有 naming convention 也被獨立出來,變成跟 regex 不太一樣的思維,比較好維護和擴充。
前陣子新增的 select 介面有時也很實用,將選項列出來用選的,而不是一個一個跳,也支援 telescope 等不同 UI。
錄了 demo 影片(影片有聲音):
歡迎多加利用或宣傳,至少讓類似專案的「類似專案」不要老是忽略我。
以前寫 Rails 的時候,有自己寫一套跑測試的 vim 函數,按 \tl 會在右邊切 tmux pane 跑最接近游標的 it
block(RSpec 語法),按 \tj 切在下方、\tw 開新視窗,\t. 則是用最後開的視窗或 pane 跑最後一次跑的測試。
多年後才知道有 vim-test 這個專案,但看起來沒有我寫的好用,就沒關心了。
直到最近嘗試 vim-themis 測試框架,無法直接套以前的工具,才想來研究這個還算熱門的專案。
專案 README 第一行寫著:
A Vim wrapper for running tests on different granularities.
各種測試框架被定義為 test runner,例如 ruby 的 minitest、rspec,JS 的 jest、vitest、cypress。 能自動辨識處於哪個環境,然後在編輯特定檔案時(不一定要是測試檔本身),能找到對應測試然後執行,即使 runner 不支援 "Nearest"(只跑最接近游標的、最小粒度的測試)也有機會用搜尋湊出來,然後只測這個範圍。
持續收錄大家的貢獻,支援更多語言和框架,讓我們進入新專案時直接可用,就是它最棒的地方。
至於跑測試的介面,例如用 :!
開、用 tmux 開、用 vim-dispatch 開,這些被定義為 strategy。
Strategy 就比較貧弱了,雖然提供了 34 種,但這個抽象並沒有提供額外能力(有幾個例外,能支援 quickfix 等),從實作 autoload/test/strategy.vim 可以看見,幾乎每個 strategy 都只是呼叫一個開啟指令就結束了。
最後我是直接指明 custom strategy,接到自己寫的 tmux 功能(暫未公開),才能取得「開在右邊、下面、新視窗、重用」這些能力。
let g:test#custom_strategies = {'tmux_window': function('TmuxTestStrategy')}
let g:test#strategy = 'tmux_window'
定義 g:test#strategy
還有一個好處,就是會跳過載入 autoload/test/strategy.vim
,如果你只用其中一個 strategy,實在不必每次吃這個檔。
現實世界中,很多專案的測試都有客製化,或者用一個 script 包裝過,例如 ./test/run.sh
、npm run test
,這時候用自動偵測的 runner 去跑反而是偏差的。
vim-test 提供的解法,簡單的狀況是指定 test#{runner}#executable
(只改執行指令)或 custom transformation(只微調測試指令),再複雜就需要用到 custom runner 才能解決問題。
Custom runner 已經是在實作一個 runner,所以也會建議寫完貢獻回上游專案。
但就是因為需求處於「一次性的設計」和制式標準之間,所以問題就一直重複下去。
去年也有人提出相關議題,其中一步是增加了 generic runner: #820 Add support for generic command runner
後來又有一個想法是單發的 :TestCommand
(討論後已 close):
#862 Add :TestCommand for one-off tests
目前我還沒想辦法改善,也許要支援一個測試情境本來就難,終究要弄一個 runner 或類似的東西。
test#base#nearest_test()
在尋找 Nearest 的實作上,內部函數 test#base#nearest_test()
扮演關鍵角色,也比較難自己刻出來,某方面也是這個 plugin 的精華所在。
這個專案已經 11 年了,最初是一位捷克的 ruby 開發者 Janko Marohnić 啟動,現在也有其他人幫忙維護,處理 issue 很快,是健康可靠的專案。