首頁 > 後端開發 > Golang > 為什麼我們為 Golang 黑客馬拉鬆建立迷你語言

為什麼我們為 Golang 黑客馬拉鬆建立迷你語言

Mary-Kate Olsen
發布: 2024-11-30 20:48:22
原創
250 人瀏覽過

又是黑客馬拉松?

到目前為止,我已經參加了9 場黑客馬拉松,其中一場是國際比賽,甚至在4 場比賽中獲勝。話又說回來,當我的學弟 Dhruv 和 Tushar 告訴我關於 Golang Specific 的黑客馬拉松時,我把 Harsh 也拉了過來,因為為什麼不呢。不只是 Harsh,我還拉了我們 Point Blank 團隊的 40 個人一起參加,這最終讓黑客馬拉松變成了我們自己的內部競賽,哈哈。

我們團隊中的所有人GoGoingGone(lmao)都有使用 Golang 的良好經驗,但我們想做的不僅僅是建立另一個工具。我們想要創新。就在那時,這個想法突然出現—讓我們建立一個迷你語言來定義動態、可設定的資料管道。

介紹

我是 Akash Singh,來自班加羅爾的三年級工程專業學生和開源貢獻者。
這是我的 LinkedIn、GitHub 和 Twitter

Why we Built a Mini-Language for a Golang Hackathon

我在網路上的名字是SkySingh04。

介紹分形

Fractal 最初是一種資料處理工具,用於從遺留系統(例如 SQL 資料庫和 CSV 檔案)無縫遷移到現代平台,例如 MongoDBAWS S3。但我們想要的不僅僅是另一個 ETL 工具。我們的想法是使其高度靈活且用戶友好,允許用戶使用簡單的聲明性語法(一種迷你語言)定義驗證轉換規則在工具內。

為什麼是迷你語言?

我們觀察到資料管道空間中的大多數工具都依賴嚴格的配置或自訂腳本。這種方法通常需要大量的程式設計專業知識,這限制了非開發人員的可訪問性。聲明性迷你語言提供:

  1. 簡單性:使用者以直覺、人類可讀的格式定義規則。
  2. 靈活性:它適應廣泛的用例,從基本驗證到複雜轉換。
  3. 可擴充性:迷你語言可以隨著新需求的出現而發展。

這種迷你語言不是要重新發明輪子,而是要提供一個抽象來簡化資料轉換和驗證。

當這與簡單的 yaml 檔案配置相結合時,我們認為我們已經達到了目標,即創建一個易於配置的資料管道,可以大規模地將資料從一個來源處理到另一個來源。

Why we Built a Mini-Language for a Golang Hackathon

核心:驗證和轉換語法

我們將文法設計得簡單而富有表現力,並專注於兩個主要操作:

  1. 驗證規則 這些確保傳入的資料在進一步處理之前滿足特定的品質標準。例如:
  1. 轉換規則 這些可以實現資料豐富或重組。例如:

這種抽象允許使用者以最少的努力處理不同的資料集,從而提高生產力並降低複雜性。

在弄清楚如何製作這種語言的詞法分析器和解析器的過程中,GoFr.dev 的團隊帶我們上樓參加了一次減壓課程,其中充滿了深夜的 sharayis 和即興演奏!

在黑客馬拉鬆上建立分形

黑客馬拉松不只是為了創造迷你語言。我們也必須建造周圍的基礎設施,確保分形:

  1. 可擴充:支援多種輸入/輸出格式,如 JSON、CSV、SQL 資料庫和訊息佇列。
  2. 可設定:基於 YAML 的配置,用於定義管道工作流程,無縫整合迷你語言。
  3. 魯棒:使用 LOG_AND_CONTINUE 或 STOP 等選項優雅地處理錯誤。

我們將工作分為四個模組:

  • 迷你語言實作:設計詞法分析器和解析器來解釋自訂語法。
  • 資料整合:新增對常見資料來源和目標的支援。
  • 管線引擎:編排驗證、轉換與錯誤處理。
  • CLI 介面:提供定義和運行管道的簡單介面。

我們面臨的挑戰

  1. 設計語法 在簡單性和靈活性之間取得平衡是一個挑戰。我們迭代了多次來最終確定語法。
  2. 建構解析器 在 Golang 中實作自訂詞法分析器和解析器非常耗時,但回報豐厚。
  3. 即時回饋 確保迷你語言提供有意義的錯誤訊息來引導使用者對於可用性至關重要。
  4. 時間限制 在黑客馬拉松中建立如此規模的工具需要精確的規劃和無縫的協調。

之後發生了什麼事?

儘管我們在 GO for GOFR 黑客馬拉松中表現出色,但我們在最終評估過程中面臨嚴峻的挑戰。除了我們錄製的演示之外,評審還要求進行現場演示,不幸的是,我們在現場運行期間遇到了解析器邏輯中的意外錯誤。考慮到在短短24 小時內建立強大的自訂解析器的複雜性,這是一項雄心勃勃的開發功能,雖然我們錄製的演示展示了其功能,但在時間限制下實現100% 的準確性被證明是困難的。這個小問題最終讓我們失去了最高獎項。然而,我們的努力仍然受到高度評價,我們團隊的清晰願景和引人注目的交付為我們贏得了「最佳推介」的榮譽,凸顯了我們的潛力和獨創性。

那麼黑客馬拉松是吧?

黑客馬拉松通常是關於突破界限和探索未知領域。 Fractal 是我們重新定義資料處理工具運作方式的嘗試——讓它們變得可存取、模組化且對開發人員友好。

我找不到比這更志同道合的人與我一起工作了,毫無疑問,他們是絕對最好、最勤奮的隊友。期待是什麼讓我參加下一次黑客馬拉松,我敢說,基於 RUST 的黑客馬拉松嗎? xD

查看 GitHub 上的 Fractal

Why we Built a Mini-Language for a Golang Hackathon 天空辛格04 / 分形

靈活、可設定的資料處理工具

分形

Fractal 是一個靈活的、可配置的資料處理工具,使用 GoFrGolang 建構。 Fractal 旨在處理來自多個來源的資料攝取,應用強大的轉換和驗證,並將輸出傳遞到廣泛的目的地。借助 Fractal,您可以自動化複雜的資料工作流程,而無需管理低階細節 以下是在專案中設定新整合的文件:

驗證和轉換規則的自訂語法文件

1。概述

自訂語法使用戶能夠:

  1. 驗證傳入資料以確保其符合預定義條件。
  2. 轉換資料欄位以適應所需的格式、結構或要求。
  3. 為資料處理管道定義靈活的錯誤處理策略。

可以為任何資料來源或目的地撰寫規則,例如JSONYAMLCSVSQL 資料庫訊息代理,或雲端服務


2。驗證規則

驗證規則確保資料符合特定的品質和完整性要求。

在 GitHub 上查看



推廣材料:Drive Link

或自己嘗試一下,讓我們知道您的想法!

Why we Built a Mini-Language for a Golang Hackathon

以上是為什麼我們為 Golang 黑客馬拉鬆建立迷你語言的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板