vChewing 出了 2.4.0 SP2 了!

src: https://twitter.com/bystartw/status/1567200310430662656?s=61&t=UVzhpuQaGcgZkGpySz_yVQ vChewing 出了 2.4.0 SP2 了!🎉 自己覺得 vChewing 是除了官方注音之外,長得最好看(因為有 IMK 加持),而且功能跟選字功能也很棒的輸入法,真的很推薦想嘗試第三方輸入法的朋友試試看!(連結見引文) Figure 1: vChewing 提交很活躍! 資安疑慮 另外關於 vChewing (下稱 vC) 的資安或隱私疑慮: vC 在 2.3.0 之後引入 Apple 官方的沙盒機制,因此只要你沒有授予授權,輸入法本身是看不到你的資料夾的。 雖然我沒有完全閱讀 vC 的 src,但至少它的 Shift 是靠旁敲的方式偵測的,不是記錄所有鍵盤輸入 vC 只有更新和網站相關有連到個人站台 稽核方式 如果有興趣稽核 vChewing 外連的情況,可以自己 clone 回來用 regex 查,或者是直接用這個第三方網站看: sourcegraph ** 如果還是信不過(認為作者會混淆連結)的話,也可以自己掛一個抓包軟體偵測 vC 的所有請求啦…… 雖然我是找不到除了更新以外的請求 code:sourcegraph

September 7, 2022 · pan93412

善用 Swift 的字串擷取功能簡化 I18n 流程

撰文原由 在 威注音 2.1.0 SP1 的更新日誌 下看到了這麼一段話: Interface Builder 給每個標籤的命名都是隨機的,手動改起來又低效又容易改壞,對多語言本地化而言簡直是天災。 事實上在 WWDC21 中,Apple 就為 Xcode 推出了一項可以解決這項痛點的新功能:「使用編譯器擷取字串」。與早期透過從 Swift 原始碼拉取可翻譯字串,經常漏掉一些字串的方式不同——這個功能會先編譯原始碼,然後從編譯出的檔案中判斷可以翻譯的字串。 啟用功能 這項功能在新專案是預設啟用的,但舊專案可以 opt-in:點開專案設定,進入 “Build Settings”,展開所有功能(All),尋找 “Swift” 然後找到 Localization 的 “Use Compiler to Extract Swift Strings”,將其設定為 Yes 即可。 匯出字串 開啟之後的國際化與本地化方式,跟先前會不太一樣。以往需要手動改 strings 檔案,現在可以先到 “Product” > “Export Localization…” 匯出編譯器擷取出的所有字串: 接下來指定匯出的路徑,然後等待 Swift 完成編譯並擷取字串。若是從舊專案 opt-in,擷取字串的過程中可能會拋出一些錯誤,這個時候就得修正(如果只是警告的話也可以忽略): 翻譯流程 接下來就可以進入選擇好的資料夾,使用 Xcode 點開對應語系的 xcloc 檔案: ...

August 27, 2022 · pan93412

Rust for everything

src: https://redd.it/wllpa4 (https://t.me/programmer_humor/38462) low-level programming Rust game development Rust high performance code Rust scientific programming Rust machine learning Rust front-end web development Rust back-end web development Rust You only need ONE languages for everything: Rust. You don’t need more.

August 12, 2022 · pan93412

文科生也能懂的 Rust async 机制

背景 https://twitter.com/repsiace/status/1554103778994900992/ 修改一下:work stealing, thread-per-core, waker, mpsc, task queue 只有他们懂… 正常人不可能看懂 – @twicemoemoe, 22-08-02 作为一个文科生,其实觉得 async 真的没有想象中的这么困难 ⋯⋯ 😂 或许搭配一些图片会好懂很多吧。 TL;DR 不废话版本 Sync(同步):一件事情做完之后,再做下一件事情。 blocking(堵塞):指“等一件事情”的行为。 Async(异步):一件事情还没完成,可以做其他不冲突的事情。 concurrency(并发):程序 架构 中,各个任务可以 独立运行 的特性。 future:Rust 中的一个异步任务的表示。 polling:不停地询问任务,确认事情是否已经完成。 event-driven:事情完成后,任务自己发通知表明完成。 parallelism(并行):同时 运行 数个程序的行为。 thread(线程、线程):系统进程(任务集)的基本单元。thread 通常是交由 CPU 内核运行。 spawn(生成):指产生 thread 的行为。 thread pool(线程池):将 thread 高效分配给每个任务的地方。 Async runtime: 以 tokio 为例 join (macro):并发运行 async 函数,并在全部完成后回传。 select (macro):哪个 async 函数快,回传那个 async 函数的结果。 main (attribute macro):在 main() 初始化 runtime。 block_on:在 sync 上运行 async 函数。 spawn:并行运行 async 函数。 spawn_blocking:在异步函数里面,为一个高耗时且同步 (blocking) 的函数另辟新线程 (thread)。 同步 (Synchronous) 跟异步 (Asynchoronous) “同步”就是整个程序等一件事情完成(blocking,堵塞)。“异步”则是一件事情还没完成,可以做其他不冲突的事情。 ...

August 7, 2022 · pan93412

文組也能懂的 Rust async 機制

背景 https://twitter.com/repsiace/status/1554103778994900992/ 修改一下:work stealing, thread-per-core, waker, mpsc, task queue 只有他们懂… 正常人不可能看懂 – @twicemoemoe, 22-08-02 作為一個文組,其實覺得 async 真的沒有想像中的這麼困難 ⋯⋯ 😂 或許搭配一些圖片會好懂很多吧。 TL;DR 不廢話版本 Sync(同步):一件事情做完之後,再做下一件事情。 blocking(堵塞):指「等一件事情」的行為。 Async(非同步):一件事情還沒完成,可以做其他不衝突的事情。 concurrency(並行、併發):程式 架構 中,各個任務可以 獨立執行 的特性。 future:Rust 中的一個非同步任務的表示。 polling:不停地詢問任務,確認事情是否已經完成。 event-driven:事情完成後,任務自己發通知表明完成。 parallelism(平行):同時 執行 數個程式的行為。 thread(執行緒、線程):系統處理程式(任務集)的基本單元。thread 通常是交由 CPU 核心執行。 spawn(生成):指產生 thread 的行為。 thread pool(執行緒池):將 thread 高效分配給每個任務的地方。 Async runtime: 以 tokio 為例 join (macro):並行執行 async 函數,並在全部完成後回傳。 select (macro):哪個 async 函數快,回傳那個 async 函數的結果。 main (attribute macro):在 main() 初始化 runtime。 block_on:在 sync 上執行 async 函數。 spawn:平行執行 async 函數。 spawn_blocking:在非同步函數裡面,為一個高耗時且同步 (blocking) 的函數另闢新執行緒 (thread)。 同步 (Synchronous) 跟非同步 (Asynchoronous) 「同步」就是整個程式等一件事情完成(blocking,堵塞)。「非同步」則是一件事情還沒完成,可以做其他不衝突的事情。 ...

August 7, 2022 · pan93412

該選名聲未知的科大,還是私立普大?

原問題在「學霸模擬機」。放在 Blog 純粹是為了更大的排版自由。 TL;DR - 核心問題 究竟該走「已經特選上」,但「未知名聲」的科技大學;還是放棄科大,繼續準備個申,走傳統的私立大學? 簡短自我介紹 我目前是普高生,但對程式實作有濃厚的興趣。目前是幾個知名專案的維護者或共同創辦者,能力也在幾間大學的特殊選才中獲得肯定(書審都過)。 因為數學和自然上的短板,我是社會組,且想要走偏資的資管(數學不重,同時可以滿足我程式探索的興趣)。經過深入比較,我投了包含 高雄科技大學 的 智慧商務系 的幾間科技大學,而我最終也上了。 這間科大的優點在哪裡? 根據某學校資料,智慧商務系的前身,是偏資訊的 資訊管理系。我有看過課程大綱,且我對這個科系的課程 頗有興趣。而且身為高雄人,若我讀這間科技大學的話,不僅 學費比較省(國立學費通常比私立來得便宜),而且也可以 省下通勤和在外租房的費用。 那這間科大的缺點是什麼? 其實不全然是這間科大的問題。 這間科大特選通過第二階段的有 8 個人(3 正取 / 5 備取)。然而這 8 個人當中,有 5 個人(62.5%)選擇放棄資格。最近我聽聞剩下 3 個人當中,有一個也想要放棄。雖然我確定最後一個人是因為人生規劃而萌生放棄想法,但這也難免會讓我懷疑:「這科系是不是沒人想讀?」 其實我有認識一位就讀本科系的學長,據他所說:「這個科系比較自由,更適合你發展自己想要的東西」。 我不擅長讀言下之意,雖然我喜歡給予比較多自學空間的學校,但他的意思也有沒有可能是 科系課程有點水? 學測成績,及落點可上的大學 我的學測成績如下:(# = 未考) 國 英 數 A 數 B 社 自 12 12 3 8 14 # 此外英聽 B、APCS 觀念 3 實作 2。使用 https://www.com.tw 進行落點分析,國立和私立的大致情況如下: 國立:[地名大學] 如屏東大學、臺北大學 私立:[傳統大學] 如淡江大學、輔仁大學 別人的想法是什麼? 我問過其中一位老師,他覺得出外縣市(即便是私立大學)比較能拓展視野,也能獲得比較多的資源。 ...

March 7, 2022 · pan93412

Rust 的 crate/super/self 關係

假設 rust_hello_world 的目錄架構長這樣:(範例源自於我手邊的某個 production 專案) rust_hello_world Cargo.toml src cli opt.rs lib.rs cli.rs logger.rs 「crate」概括來說就是一個專案,用 Cargo.toml 區分。每個 mod 都是一個層級,super 就是上個層級,self 就是本層級。上面的圖已經把 crate / super / self 的對應關係寫得很清楚了,以下寫範例: cli::opt::Opt 想要讀取 LoggingLevel,路徑可以這樣走: super::super::logger::LoggerLevel crate::logger::LoggerLevel cli::opt::Opt 想要讀取 PROG_NAME,路徑可以這樣走: super::PROG_NAME crate::cli::PROG_NAME 事實上 Rust 的模組關係也沒這麼複雜。把上面的例子變成目錄: [crate] / [mod] cli/ [mod] opt/ [struct] Opt.txt [const &str] PROG_NAME.txt [[pub] mod] logger/ [[pub] enum] LoggingLevel.txt super 等價於 ..,self 等價於 .,而 crate 則類似 /。

October 13, 2021 · pan93412

為何退租 VPS。

是時候退租自己的 Contabo VPS 了。這台主機陪了我 7 個月,陪伴我寫了非常多篇文章,要跟它分離,著實不捨。 然而,我思考了很久,除了放部落格和一些很沒必要的服務之外,我真想不到這筆支出的必要性。很多東西都可以用免費的服務代替,真的沒有必要為了這幾個服務和所謂的情感,每三個月花 500 多續租下去。 這讓我想到「極簡主義」——斷捨離造就乾淨,依依不捨只會佔據空間。我的主機不也一樣——為什麼要因為情感而租沒必要的東西呢?依依不捨也難道不是徒增支出的浪費和主機商資源的浪費? 支出這種東西,理性大於感性會比較好。退租吧。

May 4, 2021 · pan93412

未成年在 Upwork 活該拿不回錢。

TL;DR 我因未通過身份驗證,無法領回自己已經在 Upwork 賺到的錢。理由是未滿 18 歲,但是 Upwork 事先沒有任何明確的標示,即使我沒看 ToS 錯在先,但這樣使我覺得很不公平。 正文 我大概 11 月左右想為自己購置一台效能更高的電腦,而看中了 MacBook。想著「自己的東西自己賺」,我決定找一個 Freelancer 平台賺取筆電的錢。 在看過國內和國外的 Freelancer 自由業平台之後,我決定了聲稱 Microsoft 都在使用的 Upwork。註冊時 Upwork 完全沒有年齡確認,我當初以為 Upwork 開放給未成年使用。註冊要求確認 ToS 的部分,我沒認真看卻勾選「我同意」了,我沒想過幾天後我會因此想痛罵我自己。 自介填完後,我便開始尋找工作。其中一個 $50 USD 的案子我接成了,並且對方也著實把案子交給我了。案子做了一陣子後,跳出了一個小提示: 在 2020 年 12 月 9 日前驗證您的身份後,就能繼續在 Upwork 找尋工作機會。(2021-1-10) 按下「Get started」認證後,我卻卡關了。 生日 > 您必須至少有 18 歲。 (2021-1-10) 如字面意思所示,我不滿 18 歲所以過不了。但是案子都接了,甚至都快寫完了,我便沒在 Upwork 按下「Withdraw」收回案子了。做完之後,對方也撥給我錢了,我才發現到沒驗證會拿不回錢(withdraw earning)。但是我當時認為是自己是看錯了,就等 Upwork 在我設定的 12 月底把錢匯進去我的 PayPal 帳戶。 ...

January 11, 2021 · pan93412

評論:「行」,還是「列」?

很高興我的數學老師有正確解釋「列」跟「行」。他的解釋很好——大部分人常會說「一列車廂」,而列車在你眼前都是橫向移動,所以「列」是橫的。畢竟你不會站在行駛中的列車前,看到的必定都是左到右移動,而且台灣沒人講「一行火車」。 不過在觀察同儕間的回答時,我發現到一堆人認為「列」是行,「行」是列。不知道是搞不清楚,還是受到中國那邊的用詞影響呢? 所以,我在翻某些針對普羅大眾的軟體時,我都會盡可能不要提到這兩個字,保持「row」和「column」,因為對於某些不清楚這些用詞的人,硬塞正確的用法會造成誤解。 當然,如果是針對部分現代被中國文化影響較重的青少年,就例如我段落開頭說到的那個案例。那些人可能也不知道 row 和 column 是什麼,所以我就比較傾向保持中國那邊的講法,也就是 row = 行,column = 列。因為這要解釋起來太麻煩了,且多數人相信中國的用法才是正確的。 但是這樣治標不治本,台灣應該加強台灣本土用詞的教育與指正。而非放行中國用詞,讓新一代年輕人帶著從抖音、微信學來的用詞到處跑。

January 9, 2021 · pan93412