Cast Phone Screen to Computer

有沒有一種經驗是某的應用程式手機板操作勉強算順暢,但是一電腦上就炸開,反應慢到靠北、界面又很難用(沒錯 messenger 我正在看著你)。這個時候相信你會和我一樣想把手機畫面投影到電腦上的一個視窗裡面,最好可以互動、可以打字。有人第一個想法是在手機開 VNC 伺服器,但是這個方法有點麻煩,這篇文章介紹的是目前我覺得最佳解決方案。 SCRCPY 這個軟體支援有線( USB debug )、無線( WIFI )的連接,還支援螢幕錄影和傳檔案。最重要的是,開在電腦上的視窗可以調整大小,不需要侷限在一個小小的視窗內,你最大可以放大到全螢幕!在某種意義上你獲得了一台和電腦一樣大的手機。 Installation 安裝流程意外的簡單,只需要用 apt 就可以安裝了,或是你可以自己 build,稍微看了一下 說明 ,看起來不困難,但是既然 apt 就可以安裝了我們就省一點時間 $ sudo apt install scrcpy USB debug 首先無論是有線無線都要先打開手機的 USB debug 選項,在開發人員選項裡面,詳細步驟請看 官方文件。 USB 如果不介意有一條線插著~~(順便充電)~~的話,投影畫面非常簡單,只有兩個步驟: 插上 USB 並且無論跳出什麼都按「同意」「OK」 打開終端機,執行 scrcpy 然後就會有一個視窗跳出來,你現在就可以在電腦上滑手機了! Wireless 無線的話比較麻煩,首先是必須要可以連線,看是在同一個區域網路或是 VPN、ssh tunnel 都可以。再來是因為連線設定頗麻煩,所以我把相關的步驟寫成一個 script,下載後給予執行權限就可以執行了(當然要安裝 scrcpy )。有線的方式一樣很簡單,不用加任何選項就可以連接了。 如果要啟用無線,只需要加上 -w 選項(用預設的 ip 192.168.43.1) 如果 ip 不是預設的話,可以加上 -i IP 來指定其他的 ip 加上 -f 可以開啟全螢幕 參連連結 https://github.com/Genymobile/scrcpy https://developer.android.com/studio/debug/dev-options https://gist.github.com/simbafs/9132289f63368ad325d6a2ef62be7a20

2021-June-14 · 1 分鐘 · simbafs

docker login error

錯誤說明 昨天我在 terminal 登入 docker 的時候發現不知道為什麼不能登入,我先透過網頁登入確認過密碼沒有問題,也不是打錯字的關係,但還是不能當入。總是會有類似以下的錯誤訊息。 Error saving credentials: error storing credentials - err: exit status 1, out: `exit status 1: gpg: simbafs: 已跳過: 沒有公鑰 gpg: [stdin]: encryption failed: 沒有公鑰 Password encryption aborted.` 解決方法 經過搜尋之後,我按照 https://github.com/docker/docker-credential-helpers/issues/102#issuecomment-388634452 的方法成功登入了,但是在這之前要先安裝 gpg 和 pass apt install gnupg2 pass 接下來是我用的指令 apt install gnupg2 wget https://github.com/docker/docker-credential-helpers/releases/download/v0.6.3/docker-credential-pass-v0.6.3-amd64.tar.gz tar xvf docker-credential-pass-v0.6.3-amd64.tar.gz chmod 755 docker-credential-pass sudo mv docker-credential-pass /usr/bin/ ass insert docker-credential-helpers/docker-pass-initialized-check pass insert docker-credential-helpers/docker-pass-initialized-check pass show docker-credential-helpers/docker-pass-initialized-check docker-credential-pass list docker login 參考連結 https://github....

2020-December-5 · 1 分鐘 · simbafs

connect to ethernet in docker container

如何在 docker container 裡連接 ethernet 今天突然有個需求是在一個已經開啟的 container 弄東西,需要網路,但是不知道為什麼一直不上,後來發現是 docker 沒有設定 DNS 的問題,只要在外面輸入兩行指令就可以了 DOCKER_OPTS="--dns 8.8.8.8" systemctl restart docker 然後重新啟動 docker

2020-November-28 · 1 分鐘 · simbafs

docker commit

前言 上次提到可以用 Dockerfile 建立 docker image,但我們還有令一個方法可以建立 docker image,那就是 docker commit 指令 和 Dockerfile 差別 docker commit 有點像是手動版的 Dockerfile,在用 Dockerfile 建構 docker image 的時候,docker build 的工作就像是自動根據 Dockerfile 操作 docker commit。 Dockerfile 比較適合用在自動化交付和部屬,例如說你有一份程式碼,要將他包成 Docker 就很適合用 Dockerfile 自動化操作,因為程式碼會改變,但是包裝的流程基本上都是一樣的。 docker commit 適合用在建構環境,因為會有比較麻煩的操作,如果寫成 Dockerfile 會比較麻煩,當然如果可以的話還是寫成 Dockerfile 會比較好,因為更新的時候會比較方便。 在建構 image 的時候要用哪個方法就看個人取捨了。 docker commit 指令 docker commit 可以把運行中的 comtainer 轉成 images,有點類似令存新檔的概念。先來看看參數吧! 參數 $ docker commit --help Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] Create a new image from a container's changes Options: -a, --author string Author (e....

2020-November-27 · 1 分鐘 · simbafs

docker 基礎指令

Install apt install docker docker.io docker-compose What is docker Docker 是一個容器化的技術,基本上使用的時候可以把他當成虛擬機,雖然他們的使用的技術完全不一樣。對新手來說,在 Docker 裡面有四個重要的名詞:dockerfile, docker image, docker container, docker-compose。 dockerfile 純文字檔,定義建立 docker image 的步驟,有點像是一個 bash shell。通常命名成 Dockerfile ,在 build 的時候會預設用這個,也可以用 -f 來指定其他的檔案。 docker image 這是透過 docker build 編譯出來的東西。可以想成 docker container 的藍圖,在 docker pull 的時候也是下載 docker image 而不是 dockerfile。基本上 image 裡面已經包括了編譯好的執行檔和基本的環境設定,所以在 docker 外面是不用做他設定的,這也是 docker 的魅力所在。 docker container 每個 docker image 可以產生很多個 container,也就是執行中的程式。在這裡你已經可以用 docker 來建立各種服務了。這裡也可以想像成虛擬機,用 docker exec -it container_name bash 可以進到 container 裡面(如果裡面有 bash 的話) docker-compose...

2020-September-10 · 1 分鐘 · simbafs

文章更新時間錯亂問題

問題 在設定完 GitHub Action 之後,我發現我的文章的更新時間都錯了,會全部變成當天日期。但是本地生成的就沒有這個問題,經過一番盤查和猜測後,我發現問題是因為 git 不會把 modified date 紀錄,因為每台電腦的時區都是不一樣的,紀錄起來沒有意義。但是我們需要這項 meta data,所以我們就要自己想法紀錄 解法 v1.0 首先,因為每一篇文章 hexo 都會紀錄建立時間,所以我們可以直接把他抓出來,然後把檔案的更新時間設成這個時間就可以啦! 更改檔案的 modified time 這個功能只要用我們最熟悉的 touch 就可以做到了。一般我們使用 touch 的時候會把 modified time 改成當下時間,那要改任意時間只要加上 -t 選項就可以啦 -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time 假設我們有個檔案 tmp ,我想把他的日期改成 1999/3/23 12:32:33 ,那我可以這樣下指令 ted timeouch -t'19993231232.33' tmp 抓出檔名、日期 # git create time grep -rnw source/_posts -e 'date' output:(這裡的 date: 後面我多加了一個空白,原因後面會說) source/_posts/hexo-installation.md:3:date: 2020-02-10 17:26:45 source/_posts/blessed.md:3:date: 2020-02-17 23:24:10 source/_posts/bash.md:3:date: 2020-02-16 22:15:10 source/_posts/hexo-cli-extras....

2020-August-20 · 2 分鐘 · simbafs

gpg

今天心血來潮想設定 GPG,網路上查了一個教學,無疑的又遇到一個坑 坑 & 解法 我按照他的作法弄完後就是沒辦法 commit 他說 GPG 無法簽章 後來我發現是我的 name 填錯(應該啦,我猜的) 總而言之就重新產生 GPG key 就好了 name 和 git 設定的一樣 指令 $ gpg --full-gen-key $ gpg --list-secret-keys $ gpg --armor --export <secret key> 刪除金鑰 在刪除的時候分成兩步驟,刪除私鑰、刪除公鑰。在刪除之前要先知道要刪除的金鑰的 ID gpg --list-keys 找到那串很長的文字,那就是 ID,複製起來,他起來也許會像這樣 JFDKSA8FEWHE29HFVC92UHFPA93WOHFVDOPA39U2 再來用兩個指令就可以刪除了,注意一定要先刪私鑰。 gpg --delete-secret-key <ID> gpg --delete-key <ID>

2020-March-28 · 1 分鐘 · simbafs

isolate

我有一個放了很久的計畫,就是自己寫一個 OJ,因為我覺得現在的那個太難用了。 我很快的建立 repo 但是卻完全沒有進展,我寫了一個 shell script 幫忙編譯執行程式之後我就在也沒有動過他了 我沒有繼續動工的原因是我不知道如何隔離使用者提交的程式碼 我想過 docker 可是據說還是不安全 還有 chroot 但是我不知道有沒有比 docker 安全而且設定好麻煩 昨天去考 TOI 入營考(當然沒進)的時候,我終於看到大名鼎鼎的 CMS 了! 出來之後我發現他是用一個叫 isolate 的程式來做沙箱測試 而且這好像是 IOI 自己寫的,應該是蠻安全的(吧?) 今天成功編譯過後把心得寫下來

2020-March-9 · 1 分鐘 · simbafs

ssh-tunnel

昨天架好了 reverse ssh 讓我可以連回學校 server 今天來研究 ssh tunnel 簡介 ssh tunnel 分正反向 其實他們的差別只有在方向不一樣 連語法參數都一樣 正向 tunnel 正向的 tunnel 參數是 -L 語法: ssh -L [bind_address:]port:host:hostport ssh -L [bind_address:]port:remote_socket ssh -L local_socket:host:hostport ssh -L local_socket:remote_socket 反向 tunnel ssh -R [bind_address:]port:host:hostport ssh -R [bind_address:]port:local_socket ssh -R remote_socket:host:hostport ssh -R remote_socket:local_socket ssh -R [bind_address:]port 心得 看起來好像很難 但是其實用下面這個就夠了 正向: ssh -L <local port>:localhost:<remote port> <user>@<remote> 反向; ssh -R <remote port>:localhost:<local port> <user>@<remote> 總而言之就是前面的和選項一樣 如果是 -L 那前面就是 local port 如果是 -R 那前面就是 remote port...

2020-February-24 · 1 分鐘 · simbafs

reverse-ssh

一直以來連線回社辦的電腦都要走 webtty 再開 tmate 但是今天發現了一個新的方法可以透過反向的 ssh 連回社辦 reverse ssh 在社辦電腦 $ ssh -NfR 2222:localhost:22 [email protected] 這可以建立一個連線 這時候到 simba-vps $ ssh [email protected] -p 2222 就可以連線回社辦伺服器了 autossh 但是這樣做 ssh 連線有可能會超時然後斷掉 這時候可以透過 autossh 來幫我們自動建立連線 在社辦電腦 $ apt install autossh $ autossh -Mf 2222 -NR 1111:localhost:22 [email protected] -p 22 這樣就可以在 vps 上 $ ssh [email protected] -p 1111 來連回社辦啦! 最後可以把這堆在 vps 上再做一次就可以在 internet 連回社辦伺服器了 參考網址 https://stackoverflow.com/questions/15983795/how-do-i-establish-a-bidirectional-ssh-tunnel https://ez3c.tw/2043 https://www.ubuntu-tw.org/modules/newbb/viewtopic.php?viewmode=compact&topic_id=17538&forum=7 http://blog.adahsu.net/2007/11/ssh-reverse-tunnel.html https://codertw.com/%E4%BC%BA%E6%9C%8D%E5%99%A8/377688/ 這篇講 ssh tunnel 最清楚 https://yu-jack.github.io/2019/01/08/ssh-tunnel/

2020-February-23 · 1 分鐘 · simbafs