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.
Saya Akash Singh, pelajar tahun tiga kejuruteraan dan Penyumbang Sumber Terbuka dari Bangalore.
Berikut ialah LinkedIn, GitHub dan Twitter saya
Saya menggunakan nama SkySingh04 dalam talian.
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.
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:
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.
Kami mereka bentuk sintaks supaya mudah tetapi ekspresif, memfokuskan pada dua operasi utama:
FIELD("age") TYPE(INT) RANGE(18, 65) FIELD("email") MATCHES(EMAIL_REGEX) FIELD("status") IN ("active", "inactive")
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)
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!
Hackathon bukan sekadar mencipta bahasa mini. Kami juga terpaksa membina infrastruktur sekeliling, memastikan Fractal ialah:
Kami membahagikan kerja kepada empat modul:
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.
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
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:
Sintaks tersuai membolehkan pengguna untuk:
Peraturan boleh ditulis untuk mana-mana sumber data atau destinasi, seperti JSON, YAML, CSV, Pangkalan Data SQL, Broker Mesej, atau Cloud Perkhidmatan.
Peraturan pengesahan memastikan data memenuhi keperluan kualiti dan integriti tertentu.
Pitch Deck : Pautan Pandu
Atau Cuba Sendiri dan beritahu kami pendapat anda!
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!