沒穿方服

索引

顯示╱隱藏內文

文件網站如 MDNMicrosoft Learn 有提供中文翻譯,有時候確實有幫助,像我就是看中文比較快。

但不是每個網頁都翻譯品質良好,差的時候,或者不確定差不差的時候就很尷尬,要切回原文確認,反而浪費時間。

有些領域則是已經習慣原文,但 google 搜到翻譯版連結,點進去反而陌生。

功能不親切的網站也是問題,例如 zh-hant.reactjs.org,要改語言就會離開目前主題(會跳去首頁)。

於是寫了一個瀏覽器套件 Delocalizer,它是 localize 的相反。

圖示是長得像丸子串的東西

提供一個工具列按鈕,「轉換目前頁面」會抓 URL 裡的 locale 部份(zh.xxx.comxxx.com/zh/yyy),把它拿掉,再把 accept-language 請求標頭改成 en,讓網站吐英文。

Firefox 版工具列按鈕

也可以設定 xx 網站自動轉換,或者從 google 點連結才自動轉換。 以下是選項畫面:

選項畫面

隨意感想:

重開電腦才發現 WSLg 終於下放給 Win 10 使用了(見 microsoft devblogs 文章),之前要跑 cypress 還要用 VcXsrv 搞個 X server 實在辛苦,我也是 Windows 支持者卻要受這等待遇。

那麼終於能用 Vim 的 sound_playfile('我的酷音效.wav') 了嗎? (自從 patch 8.1.1502 已經等了三年)

結果是可以發聲,但功能很有限。 我……很失望。

Vim help 舉的例子是播放 ubuntu 的系統音效,位置在 /usr/share/sounds/freedesktop/stereo,下面程式碼最後是能動的:

call sound_playfile('/usr/share/sounds/freedesktop/stereo/bell.oga')
call sound_playevent('bell')

但首先會遇上 wslg/issue #864,因為 WSLg 是在 PulseAudio 做整合而沒有打理 ALSA 底層,而 Vim +sound 看起來是跟 ALSA 溝通,所以會遇到沒有音效卡之類的問題: Vim has serveral errors when playing sound 解法如 issue 說的裝 libasound2 然後在 ~/.asoundrc 加入

pcm.default pulse
ctl.default pulse

重開 WSL 就能播放這兩個聲音了。

然而繼續試下去,發現只能播這些聲音啊,餵它別的音檔路徑是沒反應的。
原因應該是 +sound 在 ubuntu 的實作是基於 libcanberra,看它介紹是處理桌面音效的,所以不是系統主題的聲音,我可是不播的喔?

總之最後就放棄了,改用 PulseAudio 的 pactl,這個至少還堪用。

pactl upload-sample {PATH_TO_AUDIO_FILE} {SOME_ID}
pactl play-sample {SOME_ID}

104 會員中心的「工作」頁面(職缺搜尋),例如 pda.104.com.tw/work/mate/list,一堆公司不寫清楚在做什麼,看介紹才發現又是博奕,直接進黑名單。

但是內建的排除功能不太方便,所以寫了一支簡易自救;
將 bookmarklet 加進書籤 → 104 職缺 忽略特定公司

原始碼放在 bootleq/bookmarklets/blob/master/tw-104-mate-list.js
單純是用 MutationObserver,沒有很特別的地方。


其實 104 有提供排除功能(自訂配對條件才有),可以排除 20 個公司。 104 內建的排除功能

團隊在 rails console 用了 ap 來顯示每個指令的執行結果,有好有壞,缺點之一是遇上層層包疊的類別,又沒有特別處理 inspect 方法時,會直接輸出大段文字,格式難看,干擾開發。

其實 ap 會對特定類別調整顯示,例如 ActiveRecord::Base 物件會被顯示為 attributes 的 hash,但想自訂其他規則的話,目前還沒有簡單方法。

最後用了 monkey patch 達成,對想改的類別逐一動手,暫時夠用了。 我改的是 PG::ResultReform::FormTrailblazer::Operation 三個類別,見 gist,放到 Rails 專案的 config/initializers/ 下面。

例子,PG::Result 物件

調整前,顯示的是 inspect 結果,加上 raw 選項會漂亮一些,但資訊不算有用。 調整前

調整後,模仿 AR 顯示查詢出來的記錄。 另外如果有裝 table_print,可以選擇輸出 table 格式。 調整後

總算可以簡單偵測分頁關閉,發生順序是 TabLeaveTabClosedTabEnter,在 TabClosed 的時候就能取得新的 tabpagenr('$') 了。

簡化 Vim 切換至最後選取的 tab 功能:

if exists('##TabClosed')
  function! LastTab(act)
    let lt = g:lasttab

    if a:act ==# 'TabLeave'
      let lt.prevLeave = lt.leave
      let lt.leave = tabpagenr()
    elseif a:act ==# 'TabClosed'
      let lt.leave = lt.prevLeave
    elseif a:act ==# 'switch'
      let to = lt.leave
      if to == tabpagenr()
        echo 'Already on last tab.'
      else
        execute "tabnext " . lt.leave
      endif
    endif
  endfunction

  if !exists('g:lasttab')
    let g:lasttab = {'leave':1, 'prevLeave':1}
  endif

  autocmd TabLeave * call LastTab('TabLeave')
  autocmd TabClosed * call LastTab('TabClosed')

  nnoremap <silent> <LocalLeader>t :call LastTab('switch')<CR>
  inoremap <silent> <LocalLeader>t <C-\><C-N>:call LastTab('switch')<CR>
endif