Rumah > pembangunan bahagian belakang > Golang > Mengapa kami Membina Bahasa Mini untuk Hackathon Golang

Mengapa kami Membina Bahasa Mini untuk Hackathon Golang

Mary-Kate Olsen
Lepaskan: 2024-11-30 20:48:22
asal
250 orang telah melayarinya

Hackathon, Lagi?

Pada ketika ini, saya telah pergi ke 9 hackathon, salah satu daripadanya ialah antarabangsa, malah menang pada 4 daripadanya. Kemudian sekali lagi, apabila junior saya Dhruv dan Tushar memberitahu saya tentang hackathon Spesifik Golang, saya mengheret Harsh bersama kami kerana mengapa tidak. Dan bukan sahaja Harsh, saya menyeret bersama 40 orang daripada pasukan Point Blank kami, yang akhirnya menjadikan hackathon itu persaingan dalaman kami sendiri haha.

Kami semua dalam pasukan kami GoGoingGone (lmao) mempunyai pengalaman yang baik bekerja dengan Golang, Tetapi kami mahu melakukan lebih daripada sekadar membina alat lain. Kami mahu berinovasi. Pada ketika itulah idea muncul—mari bina bahasa mini untuk menentukan saluran paip data yang dinamik dan boleh dikonfigurasikan.

pengenalan

Saya Akash Singh, pelajar tahun tiga kejuruteraan dan Penyumbang Sumber Terbuka dari Bangalore.
Berikut ialah LinkedIn, GitHub dan Twitter saya

Why we Built a Mini-Language for a Golang Hackathon

Saya menggunakan nama SkySingh04 dalam talian.

Memperkenalkan Fraktal

Fraktal bermula sebagai alat pemprosesan data untuk pemindahan lancar daripada sistem lama (seperti pangkalan data SQL dan fail CSV) kepada platform moden seperti MongoDB atau AWS S3. Tetapi kami mahukan lebih daripada sekadar alat ETL yang lain. Ideanya adalah untuk menjadikannya sangat fleksibel dan mesra pengguna, membolehkan pengguna mentakrifkan pengesahan dan peraturan transformasi dengan sintaks deklaratif yang ringkas—bahasa mini dalam alat.

Mengapa Bahasa Mini?

Kami mendapati bahawa kebanyakan alatan dalam ruang saluran paip data bergantung pada konfigurasi tegar atau skrip tersuai. Pendekatan ini selalunya memerlukan kepakaran pengaturcaraan yang ketara, yang mengehadkan kebolehcapaian untuk bukan pembangun. Bahasa mini deklaratif menyediakan:

  1. Kesederhanaan: Pengguna mentakrifkan peraturan dalam format intuitif yang boleh dibaca manusia.
  2. Fleksibiliti: Ia menampung pelbagai kes penggunaan, daripada pengesahan asas kepada transformasi yang kompleks.
  3. Skalabiliti: Bahasa mini boleh berkembang apabila keperluan baharu timbul.

Bahasa mini ini bukan tentang mencipta semula roda—ia tentang menyediakan abstraksi untuk menyelaraskan transformasi dan pengesahan data.

Apabila ini digabungkan dengan konfigurasi fail yaml yang mudah, kami fikir kami mencapai tanda untuk menjadikan saluran paip data mudah untuk mengkonfigurasi yang boleh memproses data dari satu sumber ke sumber yang lain pada skala.

Why we Built a Mini-Language for a Golang Hackathon

Teras: Sintaks Pengesahan dan Transformasi

Kami mereka bentuk sintaks supaya mudah tetapi ekspresif, memfokuskan pada dua operasi utama:

  1. Peraturan Pengesahan Ini memastikan data masuk memenuhi piawaian kualiti tertentu sebelum diproses selanjutnya. Contohnya:
   FIELD("age") TYPE(INT) RANGE(18, 65)
   FIELD("email") MATCHES(EMAIL_REGEX)
   FIELD("status") IN ("active", "inactive")
Salin selepas log masuk
  1. Peraturan Transformasi Ini membolehkan pengayaan atau penstrukturan data. Contohnya:
   RENAME("old_field", "new_field")
   MAP("status", {"0": "inactive", "1": "active"})
   ADD_FIELD("processed_at", CURRENT_TIME())
   IF FIELD("age") > 50 THEN ADD_FIELD("senior_discount", TRUE)
Salin selepas log masuk

Abstraksi ini membolehkan pengguna memproses set data yang pelbagai dengan usaha yang minimum, meningkatkan produktiviti dan mengurangkan kerumitan.

Sedang memikirkan cara membuat lexer dan parser bahasa ini, pasukan di GoFr.dev membawa kami semua ke tingkat atas untuk sesi menghilangkan tekanan, yang penuh dengan sesi sharayi dan jam larut malam!

Membina Fraktal di Hackathon

Hackathon bukan sekadar mencipta bahasa mini. Kami juga terpaksa membina infrastruktur sekeliling, memastikan Fractal ialah:

  1. Boleh Diperluas: Menyokong berbilang format input/output seperti JSON, CSV, pangkalan data SQL dan baris gilir mesej.
  2. Boleh dikonfigurasikan: Konfigurasi berasaskan YAML untuk menentukan aliran kerja saluran paip, menyepadukan bahasa mini dengan lancar.
  3. Teguh: Mengendalikan ralat dengan anggun dengan pilihan seperti LOG_AND_CONTINUE atau STOP.

Kami membahagikan kerja kepada empat modul:

  • Pelaksanaan Bahasa Mini: Mereka bentuk lexer dan parser untuk mentafsir sintaks tersuai.
  • Penyepaduan Data: Menambah sokongan untuk sumber dan destinasi data biasa.
  • Enjin Saluran Paip: Mengatur pengesahan, transformasi dan pengendalian ralat.
  • Antara Muka CLI: Menyediakan antara muka yang mudah untuk mentakrif dan menjalankan saluran paip.

Cabaran Yang Kami Hadapi

  1. Merancang Sintaks Mencapai keseimbangan antara kesederhanaan dan fleksibiliti adalah satu cabaran. Kami mengulang beberapa kali untuk memuktamadkan sintaks.
  2. Membina Penghurai Melaksanakan lexer dan parser tersuai di Golang memakan masa tetapi bermanfaat.
  3. Maklum Balas Masa Nyata Memastikan bahawa bahasa mini menyediakan mesej ralat yang bermakna untuk membimbing pengguna adalah penting untuk kebolehgunaan.
  4. Kekangan Masa Membina alat skala ini dalam tetapan hackathon memerlukan perancangan yang tepat dan penyelarasan yang lancar.

Dan apa yang berlaku selepas itu?

Walaupun menunjukkan persembahan yang mantap di GO untuk hackathon GOFR, kami menghadapi cabaran kritikal semasa penilaian akhir. Para hakim meminta demonstrasi langsung sebagai tambahan kepada demo kami yang direkodkan, dan malangnya, kami menghadapi pepijat yang tidak dijangka dalam logik penghurai kami semasa siaran langsung. Memandangkan kerumitan membina penghurai tersuai yang teguh dalam masa 24 jam sahaja, ia merupakan ciri yang bercita-cita tinggi untuk dibangunkan, dan sementara demo kami yang direkodkan mempamerkan fungsinya, mencapai ketepatan 100% di bawah kekangan masa terbukti sukar. Cegukan ini akhirnya menyebabkan kami mendapat hadiah utama. Walau bagaimanapun, usaha kami masih dipandang tinggi, dan visi pasukan kami yang jelas serta penyampaian yang menarik memberi kami penghormatan sebagai "Ladang Terbaik", yang menonjolkan potensi dan kepintaran kami.

Jadi Hackathon ya?

Hackathon selalunya tentang menolak sempadan dan meneroka wilayah yang belum dipetakan. Fractal ialah percubaan kami untuk mentakrifkan semula cara alat pemprosesan data boleh berfungsi—dengan menjadikannya boleh diakses, modular dan mesra pembangun.

Saya tidak mungkin meminta kumpulan orang yang lebih berfikiran sama untuk bekerjasama dengan saya dalam bidang ini, rakan sepasukan yang terbaik dan bekerja keras tanpa sebarang keraguan. Melihat ke hadapan untuk apa yang membawa saya ke hackathon seterusnya, beranikah saya katakan, hackathon berasaskan KARAT? xD

Lihat Fractal di GitHub

Why we Built a Mini-Language for a Golang Hackathon SkySingh04 / fraktal

Alat pemprosesan data yang fleksibel dan boleh dikonfigurasikan

Fraktal

Fractal ialah alat pemprosesan data yang fleksibel dan boleh dikonfigurasikan dibina dengan GoFr dan Golang. Fractal direka bentuk untuk mengendalikan pengingesan data daripada pelbagai sumber, menggunakan transformasi dan pengesahan yang berkuasa serta menyampaikan output ke pelbagai destinasi. Dengan Fractal, anda boleh mengautomasikan aliran kerja data yang kompleks tanpa perlu mengurus butiran peringkat rendah Berikut ialah dokumentasi untuk menyediakan penyepaduan baharu dalam projek anda:

Dokumentasi Sintaks Tersuai untuk Peraturan Pengesahan dan Transformasi

1. Gambaran Keseluruhan

Sintaks tersuai membolehkan pengguna untuk:

  1. Sahkan data masuk untuk memastikan ia memenuhi syarat yang telah ditetapkan.
  2. Ubah medan data agar sesuai dengan format, struktur atau keperluan yang diingini.
  3. Tentukan strategi pengendalian ralat yang fleksibel untuk saluran paip pemprosesan data.

Peraturan boleh ditulis untuk mana-mana sumber data atau destinasi, seperti JSON, YAML, CSV, Pangkalan Data SQL, Broker Mesej, atau Cloud Perkhidmatan.


2. Peraturan Pengesahan

Peraturan pengesahan memastikan data memenuhi keperluan kualiti dan integriti tertentu.

Lihat di GitHub



Pitch Deck : Pautan Pandu

Atau Cuba Sendiri dan beritahu kami pendapat anda!

Why we Built a Mini-Language for a Golang Hackathon

Atas ialah kandungan terperinci Mengapa kami Membina Bahasa Mini untuk Hackathon Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan