如果要把一開始執行程式時,瀏覽器就是最大化(非全螢幕)
可以使用如下的語法,基本上就是在option內加上 start-maximized的設定
Software Note
如果要把一開始執行程式時,瀏覽器就是最大化(非全螢幕)
可以使用如下的語法,基本上就是在option內加上 start-maximized的設定
要在執行程式時,讓chromedp能夠顯示瀏覽器,並且看到瀏覽器一步一步執行你程式內的動作
在程式一開始,先用下面的語法
這樣就可以讓瀏覽器顯示出來
如果還是看不到,或許可以檢查一下,你的程式內是不是在呼叫NewExecAllocator之後有順便使用了
defer cancel()
這個語法,如果有,先暫時註解掉,因為一旦程式執行完畢後呼叫cancel,就會把瀏覽器關閉
所以,如果你的程式執行的很快,很有可能你是看不到瀏覽器的。
開發測試階段,為了看到瀏覽器執行的情況,可以先把defer cancel拿掉,等到上了production之後,再把defer cancel()加回去
在Ubuntu 20.04上,可以使用
sudo systemctl status ssh 來確認ssh是不是有正常執行成功
如果沒有這個服務,那很可能是你的系統上還沒有安裝ssh這個軟體或服務,
這時候可以用
sudo apt-get update
sudo apt-get install openssh-server
來安裝ssh服務。
如果有使用ufw防火牆,記得把port 22打開
sudo ufw allow 22
在Ubuntu 20.04的作業系統中,如果要讓Apache2可以Listen多個Port,必須要去 /etc/apache2/ 目錄底下,找到ports.conf檔案,並且在該檔案裏面加上 你要Listen的Port
例如原本的conf內容如下
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
在某個Case中,需要把一台 linux 的電腦放在外部的網路做一些測試,因此在那台linux電腦上安裝了teamviewer,但是當我把linux 的螢幕拔掉之後,teamviewer連線到該linux後,就看不到畫面了,因此上網找了一些解決方法,下面這方法應該是可行的。
安裝 dummy driver
sudo apt-get install xserver-xorg-video-dummy
然後在 /etc/X11/
資料夾內 建立一個 xorg.conf 檔案
檔案內容如下
Section "Device"
Identifier "Configured Video Device"
Driver "dummy"
EndSection
Section "Monitor"
Identifier "Configured Monitor"
HorizSync 31.5-48.5
VertRefresh 50-70
EndSection
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Configured Video Device"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1280x800"
EndSubSection
EndSection
重開機後,再用teamviewer連線,就可以看到畫面了
利用下面的指令找出可能是popup畫面的process
ps -aux | grep update
通常可以看到有
下面這組 process
/usr/bin/python3 /usr/bin/update-manager --no-update --no-focus-on-map
這一組就是那個彈跳出來的畫面,把這個process的pid記下來
接著用
kill <pid>
把那個process砍掉,就可以關閉那個popup的畫面了。
如果要讓那個畫面永遠都不要跑出來,可以試試看下面這個網址裡面提到的方式。
https://linuxconfig.org/disable-automatic-updates-on-ubuntu-20-04-focal-fossa-linux
最近的工作需要計算CRC的檢查碼,所以在google上找了一些資料,找資料的過程中,把找到的資料記錄下來,免得以後要再次計算時,又要重新找資料。
CRC 是Cyclic redundancy check的縮寫,所以在google的時候,可以用完整的名詞去找可以找到比較正確的資料。
在找資料的時候,會看到一些專有名詞,某些網站有解釋,但有些網站沒有去解釋這些名詞,所以這邊簡單紀錄一下我找到的東西。這裡不做學術上的探討,只是記錄我怎麼看懂這些東西的方式。
生成多項式:
用來對資料做檢查的pattern,例如 CRC-8/MAXIM的生成多項式是X^8+X^5+X^4+1 ,用位元表示就是100110001,如果把最後的那個bit拿掉,就是10011000,可以看到X^8代表最左邊的位元是1,X^5代表第五個位元是1(由右往左算,base為1開始算),X^4代表第四個位元是1,那生成多項式X^8+X^5+X^4+1,最後的那個+1就是在原本8個bit最左邊加上一個bit的1。所以如果有一個生成多項式是X^16+X^12+X^5+1,他的2位元pattern就是10001000000100001,全部就有16+1個bit
Poly:
生成多項式的簡易寫法,假設生成多項式是 X^8+X^5+X^4+1,他的2位元pattern就是100110001,16進位的寫法為131,又因為通常最左邊的那個位元都是1,所以為了表示方便,當我們把最左邊的那個bit為1的部分拿掉以後,就是00110001,而00110001就是16進位的31,3這個值就是Poly表示法,所以X^16+X^12+X^5+1的2位元表示法為10001000000100001,16進位表示法為11021,把最左邊的那個bit拿掉,就會是0001000000100001,16進位為1021,1021就是X^16+X^12+X^5+1這個生成多項式的poly表示法。
Width:
指的就是檢查碼的長度,像是CRC-8/MAXIM這個模式,就是8個bit的寬度。CRC-16/CCITT就是16個bit。只是我們實際使用的時候會在最右邊加上一個bit為1的位元。
refin:
refin就是指我們要被檢查的資料要怎麼排列來開始做運算,例如我們要驗算一組資料,以16進位HEX表示為 0x01 0xA0,2進位表示為00000001 10100000,如果refin=true,代表我們需要把每一個位元組(byte)內的bit順序做反轉,但是位元組(byte)順序不做反轉,如果0x01 0x0A在refin=true的時候,計算時就要反轉成 100000000 00000101 這樣的順序下去做計算。如果refin=false時,代表不用做任何反轉,直接計算。
refout:
若為true,計算結果必須反轉才是答案,若為false就直接是答案。例如: 在refout為true的情況下,我們取得一個計算結果是11011011001000,那答案就是 00010011 011011,那因為這是用CRC16/CCITT模式運算的結果,所以應該會有2個byte的結果,但因為結果只有14bit,所以最後捕兩個0給他就是完整答案了,完整答案就是00010011 01101100,16進位表示法就是0x13 0x6C這兩個Byte。
參考資料:
https://www.lammertbies.nl/comm/info/crc-calculation
https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/
https://reveng.sourceforge.io/crc-catalogue/all.htm
http://www.ip33.com/crc.html
https://blog.csdn.net/pl0020/article/details/82760761