近況

對上一篇文章已經是一年前(突然變成年更,期間是有在blogger發佈過投資心得啦)。

上次文章後比想象中快找到工作,結果原本計畫回國內探親的計畫又被延遲了(14天隔離真的有點難熬)。

新找到的公司是寫Delphi的,所以花了3個月時間適應,畢竟之前只看過代碼跟修一些小bug,沒試過用Delphi寫一些專案(對於有得選都是C#輾過的人不意外)。基本上那三個月是超級難熬的,除了要熟悉語言特性外,還要熟悉公司的framework(這也是為甚麼還在堅持用Delphi,因為有很多現成frameworks換其他語言基本是砍掉重練。現在商業社會不會允許花大量時間去做基礎的東西)。接著是忙得要死的前期開發,然後是在家工作。花了一年時間,最近專案上線後終於有時間可以喘息了,也有時間碰碰C#/Paython。

這個blog的主機系統可能又要重裝了,因為出現空間不足的問題,但我找不到是甚麼佔用了大量空間,對Linux不熟悉結果花費大量時間也沒找到問題在哪。現在都是刪除Cache跟Log來維持正常更新。還好之前部署用的是docker-compose,轉換應該不至於太複雜吧。

好吧,下次想的甚麼再繼續,希望不是一年後⋯

失業…

2020年,是被消失的一年,疫情下基本上超過半年都是在放NPL,所以今年基本沒存到錢,還要動用到後備資金,雖然不至於沒錢過活,但是也不想眼睜睜看著積蓄越來越少。一直放NPL也讓我萌生離開公司的想法,最終在年尾正式提出辭職。

現在一邊找新工作一邊進修中。畢竟舊公司一直都一大堆繁雜的工作讓人OT到天昏地暗,根本沒時間進修。

最近時間應該會比較多,正好更新一下網誌~~

再次重新處理Blog

之前一直忙著都沒怎麼更新Blog,然後因為我是用的是Arch系統,每次執行pacman -Syu更新系統後也有一定概率導致mariaDB不會自動運行(莫名其妙,手動開啟又正常,找不到問題在哪裡),結果就導致Blog經常處於offline狀態。

現在重新部署一下,系統底層還是Arch(Arch神教萬歲),然後將mariaDB,Nginx跟wordpress都獨立到Docker上,之後更新就比較不會影響到實際運行。另外也方便運行其他的Docker容器而不互相影響。

之後希望可以抽多一些時間出來寫Blog吧,感覺很多東西都忘記了。畢竟現在這份工作不太需要寫程序,都有些生疏了。

處理主頁亂碼

低級錯誤,明明utf編碼,之前舊託管都沒問題,沒想到打包下來搬到新vps就出事。

檢視了整個源代碼都沒發現哪裡有錯(只有幾行簡單html代碼而已,負責顯示標題跟自動跳轉,完全沒出錯的可能),最後才發現,怎麼編碼格式是big5????

改成UTF-8後完全正常,下次遇到亂碼的時候檢查一下文件編碼,說不定不是代碼錯,而只是簡單的儲存編碼問題。

至於這次哪裡出錯,只能說是謎了,因為我一句代碼都沒碰過,上載也是直接sftp將完整備份上載vps再用tar解壓,但之前hostingspeed是正常顯示的…

C# Lambda表達式筆記

之前一直搞不清楚Lambda表達式的用法,現在抽空看了一下,感覺沒有那麼複雜…

簡單說就是:

args => expression

簡單取替整個Method,簡單常見有

沒有參數:() => …

一個參數:(x) => …

三個參數:(x,y,z) => …

通常會用短variable,因為lambda表達式本身就為簡潔而存在。(可老師教不要用abc做variable名啊,但lambda越簡越好)

lambda表達式預設會自動套用之前用的variable,例如:
var books = new bookshelf().Getbooks();
var cheapBooks = books.FinAll(b => b.Price < 100);

上述中b就預設是books,因為這一句明顯是在處理books,所以C#自動的將它定義為books.

通常Lamdba都會跟委托(Delegate) func<>及action<>一起使用。

 

 

 

SSL搞定

等了24小時,明明Cloudflare那裡顯示SSL證書已經issue,但網頁卻沒有轉成SSL,試了一下設定rule強制轉成SSL,結果發現頁面顯示不正常,delvelope mode顯示一堆轉移錯誤,要修改一堆東西。

還好最後找了個wordpress插件Really Simple SSL,安裝後,Cloudflare crypto那邊設定flexable,不用任何page rules,直接插件按[開始]就全部自動搞定不用煩~~

回來了

應該超過一年未更新過BLOG,因為實在太忙,結果之前的承諾一直跳票,真是抱歉啦。(也不打算繼續,隨心更新內容好了)

原本網站是託管在HostingSpeed,不過後來速度越來越慢,而且價格相對較貴(on9hosting最平$10蚊港紙一個月啊,真係好吸引)。所以將內容備份之後,打算到期後就遷移。

結果一拖就是大半年,本來打算將blog上載到on9hosting,問過之後才發現未必能轉移成功,因為對方只提供最新版wordpress,同我備份版本相差太遠,而且是託管網站,即是我不能修改系統參數,加上不知道原本hostingspeed設定(之前懶直接套用範本),所以對方建議要保留資料最好自己host。

剛好Linode推出$5美金的vps,個人覺得值得,正好嘗試自己架設服務器。根據說明,開頭一切都順利。我揀選的系統是Arch,設定時間,hostname,user,ssh port,ufw,fail2ban,mariadb,nginx,php-fpm等等。然後根據之前備份的資料重新建立wordpress資料庫,將wordpress資料庫還原進去,根據原設定重新設定資料庫用戶及密碼。跟住就噩夢開始了,一直不停出錯,都是權限問題,上網看了一大堆文章,都說要將資料夾設定成755,文件為644,花了一整個晚上,blog終於可以正常運作。但還是有一些問題未能解決,例如升級版本及主題要用FTP,雖然修改wp-config.php之後可以升級,但會出現無法建立檔案錯誤,明顯是權限問題。但根據網上文章試了設定各種權限都無法解決。暫時只好先將wordpress資料夾設定成777,升級完才設定回來。幸好linux這部分很快,要不我真會哭死。

根據觀察,網上www都是有一個user叫www-data或者是nobody的,但我安裝完成後卻沒有這個user/group,嘗試owner改成nobody都一樣。而且奇怪的是我nginx是運行在root權限下的。真不知道哪一部分出問題,明明都跟足教程,依然出錯。

算了,將就用著先,這問題下一次升級再處理。(應該很快,聽說最近wordpress有很多0day)

p.s.順手將cloudflare都用上了,SSL部分好像還沒生效,不知是我設定錯誤還是要等24小時。反正主機ip已經隱藏了(ip日本->美國)

p.s.難怪做網絡的朋友說搬網站是最麻煩的,他從來只做服務器設定,不做搬遷服務。設定服務器,裝好LEMP不需要一小時,簡簡單單搬遷一個wordpress卻花費整晚卻還有手尾要跟。

ffmpeg合併檔案

對於ffmpeg這個全能多媒體轉換工具,大家應該非常熟悉,就不再介紹了。

ffmpeg其中有三種合併功能,大家Google搜尋[ffmpeg 合併]應該會有一大堆,這次會講講比較少人用的concat filter。

老實說光看官方Document的話估計就會一頭霧水。直接看例子:

ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
'[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
concat=n=3:v=1:a=2 [v] [a1] [a2]' \
-map '[v]' -map '[a1]' -map '[a2]' output.mkv

先不管分行用的\,還有windows要替換成雙引號(“)的(‘),直接運行的話,如果三個文件resolution跟sar一致的話那還沒問題,萬一有一點不一樣,那肯定要悲劇。

剛巧我需要用到這功能,花了一些時間研究後做了以下修改(我只需要一條video跟一條audio,聰明的朋友自己看著上面例子修改應該也不會出問題)

ffmpeg.exe -i 001.mp4 -i 002.mp4 -i 003.mp4 -filter_complex "[0:v]scale=1280:720,setsar=1/1[v0];[1:v]scale=1280:720,setsar=1/1[v1];[2:v]scale=1280:720,setsar=1/1[v2];[v0][0:a] [v1][1:a] [v2][2:a] concat=n=3:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output.mkv

一開始輸入3個文件,然後用filter_complex濾鏡

[0:v]scale=1280:720,setsar=1/1[v0] 中[0:v]代表第0個檔案的video部分,設定成1280*720,sar=1:1 ,之後賦予參數[v0],其他的照樣

[v0][0:a] [v1][1:a] [v2][2:a] [v0][0:a] 要上面的處理過的[v0]跟第0個檔案的audio

concat=n=3:v=1:a=1 [v] [a] 內n=3代表有3個檔案,v=1代表一條video軌,a=1代表一條audio軌,然後就是將video軌跟audio軌分別賦予[v]跟[a]

-map “[v]” -map “[a]” 代表將[v]跟[a]輸出到對應輸出文件。

output.mkv 是輸出檔案,當然也可以在之前加c:v之類的參數控制輸出檔案類型跟編碼參數。

p.s.留意,這方法不能套用-an或者-vn參數,因為在filter裏面就指定了一條video跟一條audio。

講到這裡估計大家也明白大概運行方式了,那麼只輸出video/audio或者多於3個檔案要怎麼改也不需要我羅嗦了。

下次再講些有關編碼的東西吧。

2016-22-10 補充:應該是FFMPEG的BUG吧,部分影片合併後會出現黑色方塊,但用Movie Maker又沒有問題。這個問題也出現在Corel VideoStudio(會聲會影),估計是對某些編碼格式檔案的兼容問題,暫時無解。建議合併後測試影片再使用。

最近實在太忙了,都沒有上來更新~~