使用 Rust 建立更好的 sqlite3 相容 JavaScript 套件

https://blog.turso.tech/building-a-better-sqlite3-compatible-javascript-package-with-rust-a388cee9

使用 Rust 打造一個兼容 better-sqlite3 的 JavaScript 套件

libSQL 專案是 SQLite 的分支,增加了生產使用上的需要的功能,例如伺服器模式、複製和 S3 備份。我們決定在 Rust 實現擴展,以確保安全性和開發速度。

然而,使用 Rust 也意味著我們無法只依賴現有的生態系統,還必須自己提供語言綁定。例如,在 JavaScript 生態系統中,一個流行的提供 SQLite3 綁定的套件是 better-sqlite3。

我們的目標是開發一個設計良好的套件,可以無縫地替換 better-sqlite3,讓使用者可以輕鬆遷移而不需修改現有的程式碼,同時也提供使用 libSQL 的高級功能和擴展。

當然,我們並非第一個希望將 Rust 代碼引入 JavaScript 生態系統的人。有兩個 Rust crates,Neon Bindings 和 NAPI-RS,允許您在 Rust 中編寫代碼並將其導出到 JavaScript。我們最終選擇了 Neon Bindings,但稍後發現 Prisma 使用 NAPI-RS,這也是個不錯的選擇。

better-sqlite3 API 的實現是怎樣的?

使用 Neon Bindings 實現 API 的方式:

我們需要構建一個同時包含 package.json 和 Cargo.toml 文件的源代碼庫,因為它是一個雙語言套件。

我們向包中添加了 neon crate 和 libsql crate 作為依賴項。

我們添加了一個具有 Neon 特性的 index.js 文件,import Rust 函數和 Database 類:

[更多詳細內容,請參閱原文]

總而言之,我們學習了使用 Rust 構建一個與 better-sqlite3 兼容的 JavaScript 套件所需的組件。這些組件包括 libsql npm 套件、@libsql/以及 libsql Rust crate。實現 JavaScript API 在 Rust 中沒有太多複雜的地方,特別是將 Rust 值轉換為 JavaScript 值。

via Hacker News

February 28, 2024 at 04:09PM

處理科特林方式的錯誤

https://blog.kotlin-academy.com/error-handling-the-kotlin-way-7e2fb31b1aff

Kotlin 是一種現代化的程式語言,於 2016 年 2 月首次穩定發布。它的開發始於 2010 年,由於開發人員發現需要建立一種簡潔、優雅且表達力強的語言,但又能與 Java 互通。本篇文章將探討 Kotlin 的錯誤處理方式,以及如何按原設計實珽。 Java 的 Checked Exceptions 機制通常導致引發的例外狀況清單過長,這成為糟糕的開發體驗,也促使開發者開始習慣性地捕捉和忽略例外狀況。

via Software Engineering on Medium

February 28, 2024 at 03:57PM

科特林內聯值類別解釋

https://medium.com/@michalankiersztajn/kotlin-inline-value-classes-explained-090fe64829e6

Kotlin 內聯值類別解釋

在專案中常常會使用單一值,為了封裝其邏輯並避免創建多個 Util 類別,我們可能會將其封裝在類別中。 Kotlin 內聯值類別避免了額外的類別分配,保留效能優勢並支援函數、建構子和繼承。然而,唯一限制為僅能針對單一屬性的類別使用。此外,這些內聯類別在使用上會進行包裝(boxing)和拆封(unboxing),需注意效能影響。

via Kotlin on Medium

February 28, 2024 at 03:18PM

使用 Spring 框架 6 解鎖 Java 17 及更多

https://www.javacodegeeks.com/2024/02/unlocking-java-17-and-beyond-with-spring-framework-6.html

Spring Framework 6 全面運用 Java 17 的功能,並引入多項改進,包括 Records、Sealed Classes、Switch Expressions 等。Spring WebFlux 以 React-or 3.5 提升效能;Spring Security 提供 OAuth 3.0 整合、Web Application Firewall 及增強的認證提供者;Spring Cloud 2023 整合 Alibaba、強化配置管理與 API Gateway。通过掌握 Spring 6,開發者能建立高效、安全及未來穩健的應用系統,發揮 Java 17 與 Spring 6 的巨大潛能。

via Java Code Geeks

February 28, 2024 at 02:33PM

2024 年春季預算:多利議員的「五個家庭」希望看到傑里米·亨特宣布什麼?

https://www.cityam.com/spring-budget-2024-what-do-the-five-families-of-tory-mps-want-to-see-jeremy-hunt-announce/

杰瑞米亨特在 2024 年春季預算中,將宣佈哪‘五個家族’的保守黨議員希望看到?

保守黨議員們希望亨特的預算能扭轉他們的命運,提供真正的保守主義,但他們對於這個願景的一致性並不見得。

一國派議員小組想看到一個為勤奮工作的人減稅的預算。

成長委員會主張控制政府超支,提高公共部門效率,以創造財政餘地。

新保守黨希望看到削減所得稅、更廣泛的兒童照顧支持,以及保留燃油稅減免等措施。

下一代保守黨倡議支持 45 歲以下的人,希望看到基本稅率減少 1 penny,廢除印花稅,將租金納入抵押貸款負擔,提供更多長期固定利率的抵押貸款。

via CityAM

February 28, 2024 at 02:06PM

英國:春天的傳言者 — EPO 考試新指引-HLK

http://www.mondaq.com/Article/1427942

UK: Heralds Of Spring – New Guidelines For Examination At The EPO – HLK
英國:春天的使者–歐洲專利局新審查指南的更新
對於那些覺得聖誕節過後的冬季有些無聊的人來說,春天即將到來是一線希望。特別關注歐洲專利局的新審查指南,期待春天的到來。

via Mondaq.com – feed of articles

February 28, 2024 at 01:56PM

2024 年每個 Java 開發人員應該知道的 Java 最佳實踐

https://learnwithstatanalytica.medium.com/java-best-practices-that-every-java-developer-should-know-in-2024-ea84bc0b0fec?source=rss——programming-5

2024 年每個 Java 開發者都應該了解的 Java 最佳實踐,《中》中闡述了 2024 年至關重要的 Java 最佳實踐,以編寫高效、可靠且易於維護的程式碼,同時提升生產力和程式碼品質。

via Programming on Medium

February 28, 2024 at 01:30PM

豐富的春季咖啡廳菜單-科斯塔咖啡春季菜單將於跳躍日推出 (Trendhunter.com)

https://www.trendhunter.com/trends/costa-coffee-spring-menu

Costa Coffee 的春季菜單將在閏日推出
Costa Coffee 的春季菜單將在正式進入春天之前首次亮相,為了讓消費者為更溫暖的天氣做好準備,提供各種高品質飲料和美食。菜單包含多樣的新品和經典美食,將於 2024 年 2 月 29 日閏日首次登場,在參與的店鋪中會長期提供。菜單包括 KITKAT®系列飲品、熱餅干朱古力蛋糕等美食。該春季菜單值得期待,為消費者帶來獨特的體驗。

via TrendHunter.com – Food Trends

February 28, 2024 at 01:24PM

在 Kotlin 的密封類和密封接口之間進行 Android 開發選擇

https://proandroiddev.com/choosing-between-sealed-class-and-sealed-interface-in-kotlin-for-android-development-d53bf3e3d56e?source=rss—-c72404660798—4

在 Kotlin 中,封閉類(sealed classes)和封閉接口(sealed interfaces)是 Android 開發中強大的工具,用於定義受限類型的層次結構。對 Android 開發者而言,了解何時使用每種工具可以極大地增強程式碼的結構和可維護性。封閉類適用於管理 UI 元件的狀態,而封閉接口則適用於定義不相關類型之間的共享行為。选用封閉類或封閉接口需根據具體專案需求,須深入了解它們的實際實踐,才能做出明智的決定。

via ProAndroidDev – Medium

February 28, 2024 at 12:42PM