文章

顯示從 1月, 2022 起發佈的文章

[技巧] 同硬碟不同OS動態切換 Rustup/Cargo 路徑

問題 Linux 上不管切換到 x86 還是 Arm 工作上都是用同一個 mount 到的路徑,所以 $HOME 其實資料都一樣。 但如果我在 x86 上安裝 Rustup 和 Cargo 到預設的路徑 ~/.rustup 和 ~/.cargo,假設我安裝了 exa ,切換到 Arm 上後就會跳出下面這樣的錯誤訊息: -bash: /xxx/.cargo/bin/exa: cannot execute binary file 原因 因為 Cargo 的 packages 當初是在 x86 上編譯的,當然就沒辦法在 Arm 平台上執行。 解決方式 第一個直覺想法就是,有沒有辦法在 x86 與 Arm 上都安裝同一個 package,只是安裝在不同路徑。查了一下網路就看到如何 客製化 Rustup/Cargo 安裝在自訂的路徑 : Rustup: 執行 rustup-init 前設定 RUSTUP_HOME Cargo: 執行 rustup-init 前設定 CARGO_HOME 利用這樣的環境變數,我們就可以寫一些 Bash scripts 來達到多個 OS 上的安裝和動態切換。 Bash Script: 安裝 Rustup 在不同的 OS 上 例如我們在 x86 上安裝就可以這樣寫: #!/bin/bash export RUSTUP_HOME="$HOME/x86_64/rustup" export CARGO_HOME="$HOME/x86_64/cargo" cd "$RUSTUP_HOME" # Download rustup script curl https://sh.rustup.rs -sSf >rustup.sh # Install rustup bash rustup.sh -y --no-modify-path 在 Arm 上安裝就換一下 RUSTUP_HOME 和 CARGO_HOME 路徑就好: #!/bin/bash export RUSTUP_HOME="$HOME/arm64/rustup" export CARGO_HOME="$HOME/arm64/cargo" cd "$RUSTUP_H

[技巧] 只看就好! 瀏覽被IT封鎖的網頁,不安裝任何軟體

圖片
公司為了怕檔案外洩或上班偷懶難免會封鎖一些特定的網站,但有時候做研究或查資料卻也被擋下來就會頗無奈的。 但其實如果我們只想 "看一下" 被封鎖的網頁,不需要與網頁互動的話,其實有幾種繞過 IT 封鎖的簡單方式。不需要亂裝什麼軟體,也不用 Proxy/VPN,為什麼呢? 因為 Proxy/VPN/隨身碟在我們公司擋得非常徹底,想裝軟體也不是那麼容易,不然就是很容易被發現。 方法 1: 利用 Google Cached 公司把 LINE 相關的網頁和軟體全部封鎖了,可是我想看一下最新的貼圖有哪些? 我只想看一下就好的話可以利用 Google Cached (頁庫存檔): 網頁搜尋結果右上角三角形箭頭點一下,再點 "頁庫存檔": 英文版不太一樣 英文版的話步驟稍微多一點,Google 網頁搜尋結果右上角通常會有三個點的圖示: 點下去之後會額外跳出一個關於這個頁面的資訊,下面有個 Cached 按鈕: 再點下去就可以看被 cached 的網頁: 雖然被 cached 的網頁也不代表最新的就是了,但至少我可以看一下。 方法 2: 利用 Google Translate 公司把 Google Drive 相關的網頁都封鎖了,所以 Google 文件和表單是最容易看不見的。但很常一些活動消息會放在 Google Drive 上就會看不見很麻煩,例如說彰化縣衛生局的  COVID-19疫苗接種合約院所 網頁裡面從公司電腦看,就會發現名冊和名單全部都被封鎖看不到。 這時候就可以把網址貼到 Google 翻譯中: 翻譯成什麼語言不重要,接著點一下右邊的連結進到翻譯過的網頁: 再點右上角翻譯的語言改回 Original 原本的語言,不然就算你選翻譯成繁體中文他也會經過翻譯變得怪怪的。(另外 Google Docs 會以為網頁故障跳出一些 error overlay,我這邊就用 DevTools 把他強制移除。) 雖然翻譯的網頁常常格式會跑掉,但只少我們可以看的到重要資訊了。 方法 3: 利用 Wayback Machine 網站時光機 ( Wayback Machine ) 是類似方法 1 的方式,也是把想要看的網址貼進去: 底下會有 calendar 提供不同時間的網頁快照 (snapshot),或是直接點最新的日期像是上面圖片中的 "

[Side Project] 用 PySide2 (Qt Python) 實作 Prototype Pattern 與樂譜編輯器

圖片
最近讀書會剛好要報 Prototype Pattern,看了一下  Design Patterns: Elements of Reusable Object-Oriented Software 的 prototype 這章節。書中一開始動機說明一個五線譜的 GUI 編輯器,後面 sample code 卻是用像是 toy example 的迷宮,這樣真的兜不攏也看不太懂。 網路上找了一下也沒有人為了 prototype pattern 做五線譜的範例,剛好最近工作上會碰到 PySide2 ,於是我想想,乾脆來把五線譜的範例做出來順便練習一下 Qt 的 QGraphicsView 要怎麼使用,也順便展示 prototype pattern 的優缺點。 Side Project on  GitHub 簡單的樂譜編輯器 GUI Users 可以從左邊拖曳樂譜上的符號到右邊的畫板上,畫板 (canvas) 上的符號也可以事後再進行拖曳、旋轉。 就算簡單也該有的功能 為了讓範例簡單,我就只做了書中提到的 half note 和 whole note,不要加進一大堆其他符號來讓整個 example 複雜化。但相對地我們也不能弄得太簡單太像 toy example 看了沒感覺。 我就多做了幾個比較像 real project 的功能: 拖曳的符號會像是磁鐵一樣 snap to lines/spaces 到最近的五線譜線上或空格(間) 內 拖曳符號時我把預設有的圖示 (indicator) 隱藏,拖曳中 (dragging) 也看的到放開 (drop) 後的樣子 我限制拖曳的符號只能在畫板 (canvas) 中移動,不給使用者拖曳到不見或卡在邊邊一半 Prototype Pattern 優點 1: 可以 Reuse Framework 不用 prototype pattern 我們會怎麼做創 object 的 framework? 我們可能就會創出一大堆平行化的 GraphicTool ( 橘色 的部分) 用來造代表樂譜符號的 Graphic: 書中說 framework 不應該知道 application 任何細節才對,萬一今天 application 改成做遊戲地圖編輯器呢? 難道要創更多 GraphicTool? 那可能我們會先發瘋。 所以 prototype patter

此網誌的熱門文章

[試算表] 追蹤台股 Google Spreadsheet (未實現損益/已實現損益)

[Side Project] 互動式教學神經網路反向傳播 Interactive Computational Graph

[插件] 在 Chrome 網頁做區分大小寫的搜尋