跳到主要內容

發表文章

Trip for Google Cloud Next '24

Google Cloud Next '24 has a packed schedule. As Google Cloud experts shared incisive speeches and held some brief discussions with them, we deeply felt that artificial intelligence is being further integrated into our daily life and work. (It is really tiring after flying more then 10 hours...)
最近的文章

Rust - 以 JSON 為資料來源建立 Polars DataFrame

緣起 在科技的蓬勃發展中,資料處理和分析變得愈發重要。Rust 語言的 Polars 框架為我們提供了一個強大的工具,讓資料操作變得更加容易且高效。這個框架支援以 JSON 格式匯入資料並建立 Dataframe,為我們提供了一個直觀且方便的方式來操作資料。 本文開始 本文的目的,為使用 JSON 為資料來源,在 Rust 中建立 Polars 的 Dataframe。在以下的文章裡,我們將在 Cargo.toml 中,使用如下的設定: [dependencies] polars = { version = "0.36.2", features = ["json"] } 撰文的當下,Polars 的最新版本為 0.36.2。參考 Polars 的 官方文件 ,它提供了以下的程式碼段落,以匯入 JSON 檔案內容: use polars :: prelude :: * ; let mut file = std :: fs :: File :: open ( "docs/data/path.json" ) . unwrap (); let df = JsonReader :: new ( & mut file ) . finish () . unwrap (); 到這裡,就能輕鬆的利用一個 JSON 檔案的內容,建立出 Dataframe 物件。 好了,故事結束,收工。 . . . . . 如果故事真的就這麼簡單,我想也就沒有撰寫這篇文章的必要了。 想想上面程式段落的例子,過程裡需要透過一個存在於檔案系統中的 JSON 檔案為媒介,儲存我們要處理的資料,再透過「JsonReader」讀入的 Dataframe 中處理。如果這些資料是從網路上取得(例如呼叫RESTful API),以字串變數的形式存在於系統之中,例如下面的內容: let msg = r#"[     {"id": 1, "name": "A", "age": 10},     {"id": 2, "name": "B", "age": 20} ]&

Rust - Polars 資料欄位型態轉換,從 str 變 Date

緣起 Polars 是一個以 Rust 語言開發的 「DataFrame」 新興套件,它可以同時在 Rust 及 Python 中使用。Polars 憑藉著 Rust 的執行速度為基礎,讓它在資料處理的領域中, 逐漸流行起來。 但正由於它還在發展初期,目前網路上的參考文章相對較少,中文的內容更是稀有;所以整理了一下這週末的一些研究心得,一來避免自己忘記,二來也在網路上與大家分享,希望慢慢的能讓 Rust 的中文資源可以越來越完整,有朝一日可以在華人世界中流行起來。 本文開始 本週研究的主題是 Polars 裡,對「DataFrame」某個「str」欄位,進行資料型別轉換為「Date」或「Datetime」。資料的轉換可以有多種方式,應該不只限於接下來提到的方法。 建立第一個資料集 為了開始這個操作,我們需要先建立起一個「DataFrame」。 let date = Series :: new ( "trans_date" , & [ "2023-05-01" , "2023-05-02" , "2023-05-03" , "2023-05-04" , "2023-05-05" , ]); let df = DataFrame :: new ( vec ! [ date ]); println ! ( " { } " , df . clone () . collect () ? );   執行後, 可以看到以下的結果:  shape: (5, 1) ┌────────────┐ │ trans_date │ │ ---        │ │ str        │ ╞════════════╡ │ 2023-05-01 │ │ 2023-05-02 │ │ 2023-05-03 │ │ 2023-05-04 │ │ 2023-05-05 │ └────────────┘ 從執行的結果中,我們可以清楚的看到,目前所建立的「DataFrame」,在「trans_date」的欄位中,它的資料型態為「s

iBus 在 Ubuntu 18.04 上的大易輸入法設定

這麼多年以來,我一直是大易輸入法的使用者,不管到了什麼平台上,我還是習慣這個輸入法的操作方式。 過去在 Linux 上,我一直使用 XCIM/GCIM 做為我的輸入工具,但隨著時間的流逝,這些工具慢慢的與新的 Linux 發行套件產生不相容的狀況,往往都需要做較大的調整與設定才能滿足我的需求。這樣的情況令我感到相當的困擾,同時也不符合經濟效益,甚至曾經想過改學其他的中文輸入法來取代,不過這個方式並沒有成功。 隨著使用的環境更新到了新版的 Ubuntu 18.04 後,系統全面改用 iBus 做為輸入法引擎,找了好多個大易輸入法的安裝方法,始終會面臨到一些問題,例如標點符號沒有辦法輸入等。最後我在 Ubuntu 正體中文討論區中,找到了如下的解決方法: 「 在 Ubuntu 18.04.1 的 IBus 上安裝大易輸入法 」==> 此文說明如何快速在 iBus 中安裝大易輸入法 「 為什麼有些字打不出來 」==> 此文說明如何排除部份文字/符號無法輸入的問題 時間有些久了,裡頭提到的一些欄位已經改名或是調整,但整體的修改方式並沒有什麼太大的改變。按照上頭的方式,目前我可以正常的使用大易輸入法字碼表所定義的標點符號了。

Linux 雙螢幕顯示設定

回頭看了一下 Blog 的更新日期,上一篇發文已經是三年以前。 最近手上剛好有一部新筆電安裝了 Linux 後,想透過 HDMI 界面來連接第二顆螢幕,可是卻怎麼樣也沒有辦法投放到第二顆螢幕上。寫下這篇文章作為紀錄。 我的配備如下: Intel 整合顯示晶片 Nvidia Geforce GTX-1050 顯示晶片 筆電內建 LCD 螢幕 外接 BenQ EL2200 螢幕 HDMI -> VGA 轉換器  透過 xrandr -q 指令來查詢目前的顯示狀況:  畫面中出現我的 HDMI 界面是處於 "disconnected" 的狀態,可是我明明就是把轉換器插在 HDMI 座上呀! 又透過了 nvidia-xconfig --query-gpu-info 查詢,我可以查到我的 Nvidia GPU 已經被驅動,同時連現在螢幕上。 到這裡為止,我查到的資料及問題解法,不外乎是要求安裝 GPU 驅動程式(我已經安裝了,所以可以透過 nvidia-xconfig 查到 GPU 的狀態),或是使用 xrandr 增加顯示模式,然後把訊號投放至螢幕上;但這些都沒有辦法真正解決我的問題,螢幕的指示燈處於無訊號的狀態,螢幕上空蕩蕩的漆黑一片。 因此,我改變思考的方向,將問題的調整為 XWindow 的設定問題,並著手尋找將系統設定為雙螢幕的可能。目前新版的 XWindow 已經可以透過自動偵測的方式完成設定,不需要預先準備 xorg.conf 這個設定檔。但是若要自行對 XWindow 進行配置,那勢必需要產生這個檔案。所幸目前的工具很方便,可以透過一些簡單的參數,產生一個基礎檔案;我們再利用這個檔案為基礎,調整為我們需要的配置。 我使用了以下的指令,完成設定檔的產出: Xorg -configure 這個指令只能在 Console 模式下執行,而且執行時需要把目前執行中的 XWindow 停止;完成後,會在執行者的目錄下,產生一個 xorg.conf.new 的檔案。把這個檔案移動到 /etc/X11/ 目錄下,並改名為 xorg.conf 。 nvidia-xconfig 它會參考剛剛的 xorg.conf ,並把 Nvidia 驅動程式相關的設定填入。需要有 root 權限。

Error "Failed to open a session for the virtual machine..."

自從VirtualBox升級到5.0.0以後,我家裡桌機所安裝的VirtualBox就再也沒有正常啟動過,老是出現開啟工作階段錯誤的訊息,同時帶有如下的資訊: Result Code: E_FAIL (0x80004005) Component: MachineWrap Interface: IMachine {f30138d4-e5ea-4b3a-8858-a059de4c93fd} 經過好長一段時間的測試及了解,透過下面的討論串發現,竟然是防毒軟體造成!! Reference: https://forums.virtualbox.org/viewtopic.php?f=6&t=68869 真是太令人不解了,只好把平常不怎麼用的防毒軟體給移除;然後,祝我好運吧!!

Swatch MusiCall 校正

這幾天把多年前買的Swatch手錶翻了出來整理。坦白講,現在的我實在搞不清楚當初為何會買了這麼多錶?擺了這近二十年,雖然一直保存在不見天日的箱子裡,但很多材質還是老化了,一點都不保值,二手價就更不用說了。 可能是電路特性的關係,Swatch MusiCall錶在沒電了好些年之後,重新上電池會出現指針不準的現象,需要特別校正,才能正常使用。步驟如下: 按下控制鈕五秒,進入測試/校正模式; 拉出控制鈕,往上轉會移動時針,往下轉會移動分針; 把時/分根針都指向十二點鐘; 推回控制鈕重置完成; 重新設定時間。 重置後,手錶就能正常的操作及使用了。