2025年3月27日 星期四

2025年2月15日 星期六

Dropbox 網路硬碟未同步的解決順序

8 Ways To Fix Dropbox Not Syncing Issues 

第一步就是要去按一下 icon ,看是不是已經沒有回應,每一台電腦都要按,幾乎99%都是某一台電腦上的 Dropbox 當掉了造成停止同步

第二步也就很理所當然,重啟 Dropbox

千萬不要看它 icon 還在就以為沒當掉,一定要去按按看,一定要去按按看,一定要去按按看


2025年1月8日 星期三

Perl one-liner 中 -MO=Deparse 參數--反向剖析功能

 以上回的指令為例,加上 -MO=Deparse  參數,產生如下輸出

>perl -MO=Deparse -0777 -ne "$temp=$1 and $temp=~s/\n//g and print $temp while /(?s)--- -- --(.+?)---/g" abc.ini

BEGIN { $/ = undef; $\ = undef; }

LINE: while (defined($_ = readline ARGV)) {

    $temp = $1 and $temp =~ s/\n//g and print $temp while /(?s)--- -- --(.+?)---/g;

}

-e syntax OK

這個選項在除錯時滿有幫助的,例如,我們可以用分號代替 and 關鍵字看看結果

>perl -MO=Deparse -0777 -ne "$temp=$1 ; $temp=~s/\n//g ; print $temp while /(?s)--- -- --(.+?)---/g" abc.ini

BEGIN { $/ = undef; $\ = undef; }

LINE: while (defined($_ = readline ARGV)) {

    $temp = $1;

    $temp =~ s/\n//g;

    print $temp while /(?s)--- -- --(.+?)---/g;

}

-e syntax OK

其中 $1 還沒被定義就使用了,在執行期會發生錯誤。




2025年1月2日 星期四

以 perl one-liner 對多行文字檔進行跨行比對,印出相符字串

先講結論。abc.ini為輸入檔,要比對--- -- --開頭、---結尾的字串,允許跨行。一行以蔽之:

perl -0777 -ne "$temp=$1 and $temp=~s/\n//g and print $temp while /(?s)--- -- --(.+?)---/g" abc.ini

之前遇到這種問題都會用暫時變數記一堆狀態來解決,昨天突發奇想,找到一些參數,沒想到也能一行解決。簡單來說就是兩個技巧的連續技。

第一個技巧是 -0777 參數, 參 Slurp a file from the command line with -g – The Effective Perler ,如果 perl 是 5.36 以後的版本,也可以直接下 -g 參數即可。顧名思義就是把輸入檔串成一個字串。

第二個技巧是 (s?) 開關, 參 Perl regex match string including newline - Stack Overflow  ,其作用是讓 DOTALL 開關打開,使單字元萬用比對符納入換行符號。

其它的小變化有二,一是 while 的使用,因為你把資料串成一行了,-ne 中幫你做的 while 就沒有原來的迴圈效果了,因此要手動加上;二是 /g 開關要加上,理由同上。

額外的變化有二, (.+?) 是讓比對不要貪心(greedy),$temp 是把結果的換行字元取代掉。

又是一個充實的補丁日呢~~



2024年12月26日 星期四

"it's not a bug, it's a feature" (INABIAF) 再次發功--論 scrapy 的 SpiderLoader

問題是這樣呈現的, scrapy 撰寫的爬蟲以 scrapy crawl 啟動 spider A 時,卻啟動了不相關的 spider B,吐出來一堆該 spider B 中未實做完成而造成的(執行期)錯誤。

一開始的直覺是,我啟動了錯誤的 spider ,因此瘋狂修改命令列指令,甚至故意啟動 spider B,當然,錯誤仍然一直出現。寫程式最怕的就這種隔離不了的錯誤,看不到的臭蟲躲在角落竊笑,笑得你心裏發寒。

python - Scrapy spider shows errors of another unrelated spider in the same project - Stack Overflow 這篇討論是我翻查過的串文中最接近的一篇,但是與我遇到的問題不直接相關。然而,他其中一句話隔了半天以後才點醒了我:

SpiderLoader imports and caches all of the spiders in a project when initiated.

所以 spider B 被載入了,這是完全沒有必要的;所以 spider B 中尚未準備好被執行的程式碼被執行了,吐出了錯誤訊息,而讓人誤以為 spider B 被錯誤地執行了,其實它只是被載入而已;當然對某些動態形態系統 ( dynamic typing system ) 來說,這是很自然且被稱許的事情。

相關的知識可以查看 https://www.cnblogs.com/kingron/p/14345855.html 及 https://docs.scrapy.org/en/2.11/_modules/scrapy/spiderloader.html,然而這個問題的呈現是如此的幽微,除錯起來格外的吃力。謹以此梗圖致敬



2024年12月14日 星期六

chkdsk c: /r #時不時硬碟就要來檢查一下

了解Chkdsk指令程式並在Windows上用CHKDSK診斷和修復磁碟機 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

 Chkdsk命令用於執行廣泛的磁碟機的檢查,尋找檔案系統中的實體磁片錯誤,並嘗試從任何受影響的磁片磁區復原資料。其中c可替換成其他需要檢查的磁碟機代號。

若修復成功,但出現"存取被拒"訊息,請參 外接硬碟無法存取別擔心丨6+方法輕鬆修復 中的"修復3. 獲取外接硬碟的權限",新增使用者權限;"群組或使用者名稱"中若無"Authenticated Users",則按"新增",手動增加一個。



2024年12月10日 星期二

ckiptagger 在 Google Colab 上出現 `LSTMCell` is not available with Keras 3 錯誤

參 https://www.facebook.com/groups/pythontw/posts/10163853295558438/

改用 ckip-transformers 

安裝指令(colab中)

!pip install -U ckip-transformers

引入模組

from ckip_transformers.nlp import CkipWordSegmenter

宣告實例

ws_driver  = CkipWordSegmenter(model="bert-base",device=0)

執行分詞

word_sentence_list = ws_driver(sentence_list, delim_set = {...},use_delim=True)

又做了一早的 Monkey Patching ,頭腦都變好了呢(並沒有)