為什麼我們為 Golang 黑客馬拉鬆建立迷你語言
又是黑客馬拉松?
到目前為止,我已經參加了9 場黑客馬拉松,其中一場是國際比賽,甚至在4 場比賽中獲勝。話又說回來,當我的學弟 Dhruv 和 Tushar 告訴我關於 Golang Specific 的黑客馬拉松時,我把 Harsh 也拉了過來,因為為什麼不呢。不只是 Harsh,我還拉了我們 Point Blank 團隊的 40 個人一起參加,這最終讓黑客馬拉松變成了我們自己的內部競賽,哈哈。
我們團隊中的所有人GoGoingGone(lmao)都有使用 Golang 的良好經驗,但我們想做的不僅僅是建立另一個工具。我們想要創新。就在那時,這個想法突然出現—讓我們建立一個迷你語言來定義動態、可設定的資料管道。
介紹
我是 Akash Singh,來自班加羅爾的三年級工程專業學生和開源貢獻者。
這是我的 LinkedIn、GitHub 和 Twitter
我在網路上的名字是SkySingh04。
介紹分形
Fractal 最初是一種資料處理工具,用於從遺留系統(例如 SQL 資料庫和 CSV 檔案)無縫遷移到現代平台,例如 MongoDB 或 AWS S3。但我們想要的不僅僅是另一個 ETL 工具。我們的想法是使其高度靈活且用戶友好,允許用戶使用簡單的聲明性語法(一種迷你語言)定義驗證和轉換規則在工具內。
為什麼是迷你語言?
我們觀察到資料管道空間中的大多數工具都依賴嚴格的配置或自訂腳本。這種方法通常需要大量的程式設計專業知識,這限制了非開發人員的可訪問性。聲明性迷你語言提供:
- 簡單性:使用者以直覺、人類可讀的格式定義規則。
- 靈活性:它適應廣泛的用例,從基本驗證到複雜轉換。
- 可擴充性:迷你語言可以隨著新需求的出現而發展。
這種迷你語言不是要重新發明輪子,而是要提供一個抽象來簡化資料轉換和驗證。
當這與簡單的 yaml 檔案配置相結合時,我們認為我們已經達到了目標,即創建一個易於配置的資料管道,可以大規模地將資料從一個來源處理到另一個來源。
核心:驗證和轉換語法
我們將文法設計得簡單而富有表現力,並專注於兩個主要操作:
- 驗證規則 這些確保傳入的資料在進一步處理之前滿足特定的品質標準。例如:
- 轉換規則 這些可以實現資料豐富或重組。例如:
這種抽象允許使用者以最少的努力處理不同的資料集,從而提高生產力並降低複雜性。
在弄清楚如何製作這種語言的詞法分析器和解析器的過程中,GoFr.dev 的團隊帶我們上樓參加了一次減壓課程,其中充滿了深夜的 sharayis 和即興演奏!
在黑客馬拉鬆上建立分形
黑客馬拉松不只是為了創造迷你語言。我們也必須建造周圍的基礎設施,確保分形:
- 可擴充:支援多種輸入/輸出格式,如 JSON、CSV、SQL 資料庫和訊息佇列。
- 可設定:基於 YAML 的配置,用於定義管道工作流程,無縫整合迷你語言。
- 魯棒:使用 LOG_AND_CONTINUE 或 STOP 等選項優雅地處理錯誤。
我們將工作分為四個模組:
- 迷你語言實作:設計詞法分析器和解析器來解釋自訂語法。
- 資料整合:新增對常見資料來源和目標的支援。
- 管線引擎:編排驗證、轉換與錯誤處理。
- CLI 介面:提供定義和運行管道的簡單介面。
我們面臨的挑戰
- 設計語法 在簡單性和靈活性之間取得平衡是一個挑戰。我們迭代了多次來最終確定語法。
- 建構解析器 在 Golang 中實作自訂詞法分析器和解析器非常耗時,但回報豐厚。
- 即時回饋 確保迷你語言提供有意義的錯誤訊息來引導使用者對於可用性至關重要。
- 時間限制 在黑客馬拉松中建立如此規模的工具需要精確的規劃和無縫的協調。
之後發生了什麼事?
儘管我們在 GO for GOFR 黑客馬拉松中表現出色,但我們在最終評估過程中面臨嚴峻的挑戰。除了我們錄製的演示之外,評審還要求進行現場演示,不幸的是,我們在現場運行期間遇到了解析器邏輯中的意外錯誤。考慮到在短短24 小時內建立強大的自訂解析器的複雜性,這是一項雄心勃勃的開發功能,雖然我們錄製的演示展示了其功能,但在時間限制下實現100% 的準確性被證明是困難的。這個小問題最終讓我們失去了最高獎項。然而,我們的努力仍然受到高度評價,我們團隊的清晰願景和引人注目的交付為我們贏得了「最佳推介」的榮譽,凸顯了我們的潛力和獨創性。
那麼黑客馬拉松是吧?
黑客馬拉松通常是關於突破界限和探索未知領域。 Fractal 是我們重新定義資料處理工具運作方式的嘗試——讓它們變得可存取、模組化且對開發人員友好。
我找不到比這更志同道合的人與我一起工作了,毫無疑問,他們是絕對最好、最勤奮的隊友。期待是什麼讓我參加下一次黑客馬拉松,我敢說,基於 RUST 的黑客馬拉松嗎? xD
查看 GitHub 上的 Fractal
天空辛格04
/
分形
靈活、可設定的資料處理工具
分形
Fractal 是一個靈活的、可配置的資料處理工具,使用 GoFr 和 Golang 建構。 Fractal 旨在處理來自多個來源的資料攝取,應用強大的轉換和驗證,並將輸出傳遞到廣泛的目的地。借助 Fractal,您可以自動化複雜的資料工作流程,而無需管理低階細節 以下是在專案中設定新整合的文件:
驗證和轉換規則的自訂語法文件
1。概述
自訂語法使用戶能夠:
- 驗證傳入資料以確保其符合預定義條件。
- 轉換資料欄位以適應所需的格式、結構或要求。
- 為資料處理管道定義靈活的錯誤處理策略。
可以為任何資料來源或目的地撰寫規則,例如JSON、YAML、CSV、SQL 資料庫、訊息代理,或雲端服務。
2。驗證規則
驗證規則確保資料符合特定的品質和完整性要求。
推廣材料:Drive Link
或自己嘗試一下,讓我們知道您的想法!
以上是為什麼我們為 Golang 黑客馬拉鬆建立迷你語言的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

Golang在並發性上優於C ,而C 在原始速度上優於Golang。 1)Golang通過goroutine和channel實現高效並發,適合處理大量並發任務。 2)C 通過編譯器優化和標準庫,提供接近硬件的高性能,適合需要極致優化的應用。

goimpactsdevelopmentpositationality throughspeed,效率和模擬性。 1)速度:gocompilesquicklyandrunseff,IdealforlargeProjects.2)效率:效率:ITScomprehenSevestAndardArdardArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdEcceSteral Depentencies,增強的Depleflovelmentimency.3)簡單性。

goisidealforbeginnersandsubableforforcloudnetworkservicesduetoitssimplicity,效率和concurrencyFeatures.1)installgromtheofficialwebsitealwebsiteandverifywith'.2)

Golang適合快速開發和並發場景,C 適用於需要極致性能和低級控制的場景。 1)Golang通過垃圾回收和並發機制提升性能,適合高並發Web服務開發。 2)C 通過手動內存管理和編譯器優化達到極致性能,適用於嵌入式系統開發。

Golang和Python各有优势:Golang适合高性能和并发编程,Python适用于数据科学和Web开发。Golang以其并发模型和高效性能著称,Python则以简洁语法和丰富库生态系统著称。

Golang和C 在性能上的差異主要體現在內存管理、編譯優化和運行時效率等方面。 1)Golang的垃圾回收機制方便但可能影響性能,2)C 的手動內存管理和編譯器優化在遞歸計算中表現更為高效。

C 更適合需要直接控制硬件資源和高性能優化的場景,而Golang更適合需要快速開發和高並發處理的場景。 1.C 的優勢在於其接近硬件的特性和高度的優化能力,適合遊戲開發等高性能需求。 2.Golang的優勢在於其簡潔的語法和天然的並發支持,適合高並發服務開發。
