3 poin oleh GN⁺ 2024-01-30 | 1 komentar | Bagikan ke WhatsApp

Menggunakan --libcurl

  • Disarankan menggunakan libcurl: Pengguna disarankan untuk terlebih dahulu mencoba transfer yang diinginkan dengan alat baris perintah curl, lalu ketika sudah kurang lebih bekerja seperti yang diinginkan, jalankan lagi dengan menambahkan opsi --libcurl [nama_file] pada baris perintah.
  • Pembuatan kode: Opsi baris perintah --libcurl menghasilkan program C dengan nama file yang diberikan. Program C ini menggunakan libcurl untuk menjalankan transfer yang dilakukan alat baris perintah curl.
  • Pengecualian dan perbedaan: Hasilnya tidak selalu 100% sama, tetapi dapat memberi inspirasi yang sangat baik mengenai opsi libcurl dan argumen tambahan yang ingin digunakan.

Contoh kode

  • Contoh eksekusi: Menjalankan perintah curl http://example.com --libcurl example.c akan membuat file example.c di direktori saat ini.
  • Kode yang dihasilkan: Kode yang dihasilkan mencakup berbagai pengaturan opsi menggunakan curl_easy_setopt(), dan beberapa opsi tidak mudah dihasilkan langsung sebagai source code sehingga pengguna mungkin perlu mengimplementasikannya sendiri atau tidak menggunakannya.

Opini GN⁺

  • Kegunaan libcurl: Fitur ini memungkinkan pengembang dengan mudah mengubah perintah curl yang berfungsi di baris perintah menjadi program C, sehingga mempercepat pengembangan aplikasi yang menggunakan libcurl.
  • Keunggulan pembuatan kode: Kode yang dihasilkan secara otomatis dapat membantu pengembang memahami dan menerapkan API libcurl dengan lebih cepat.
  • Nilai sebagai alat pembelajaran: Ini bisa menjadi materi pembelajaran yang baik bagi insinyur perangkat lunak pemula untuk melihat opsi libcurl dan contoh penerapan nyata pemrograman jaringan.

1 komentar

 
GN⁺ 2024-01-30
Komentar Hacker News
  • Pola mencari request yang diinginkan di tab Network pada developer tools browser, menyalinnya dengan “copy as curl”, lalu mengonversinya menjadi kode request untuk bahasa yang dipakai dengan alat seperti https://curlconverter.com/ sangat bagus
    Dalam beberapa hal, curl dipakai seperti representasi perantara yang bisa diterjemahkan ke mana saja

    • Pengguna R bisa mengubah perintah “copy as curl” menjadi kode request dengan fungsi curl_translate dari paket httr2, penulisan ulang terbaru dari httr
      https://httr2.r-lib.org/reference/curl_translate.html
    • curlconverter.com tampak cukup bagus untuk langsung di-bookmark
      “copy as curl” dari browser membawa header autentikasi dan encoding dalam kondisi yang pasti berfungsi, sehingga jauh lebih praktis daripada mengutak-atik sendiri perintah curl multi-baris
    • Pemecahan masalah endpoint API jadi jauh lebih mudah
      Parameter request bisa diubah lalu dikirim ke instance lokal, dan output juga bisa dipipe ke jq untuk merapikan formatnya
    • Pengamatan bahwa saat sebuah endpoint tidak berfungsi, langkah pertama menjadi “apakah bisa dengan curl?” memang sangat tepat
    • HTTP sendiri sebenarnya tidak memerlukan representasi perantara, tetapi karena universalitas cURL, pada praktiknya ia bekerja seperti itu
      Karena begitu luas dipakai, muncul alat yang mengekspor request ke cURL dan juga alat yang mengimpor cURL
  • Cukup keren bahwa command-line interface punya flag yang mengeluarkan source code program yang melakukan hal yang sama dengan perintah saat ini
    Rasanya seperti membuka kap mesin dan menunjukkan apa yang terjadi di dalam; bukan hanya membantu memahami perilakunya lebih baik, tetapi juga memudahkan untuk memodifikasi atau memperluasnya sesuai kebutuhan

    • Ini juga sangat bagus sebagai dokumentasi library pemrograman
      Jika sedang memakai libcurl lalu membutuhkan sesuatu seperti range request, atau menekan “copy as curl” dari tab Network browser, Anda bisa menjalankannya di command line lalu menambahkan --libcurl saja untuk mengetahui persis bagaimana melakukannya dengan library C
    • Akan bagus jika pendekatan seperti ini juga diterapkan pada pengaturan Gnome, pengaturan jaringan, GUI pengaturan firewall, dan apa pun yang bisa dijalankan sebagai perintah CLI
  • Pendekatan seperti ini adalah salah satu alasan makro Visual Basic Microsoft Office sukses
    Anda bisa melakukan tindakan di Word atau Excel, melihat makro yang dihasilkan, lalu menyesuaikan kodenya sesuai kebutuhan. Konsepnya sederhana tetapi kuat, jadi menyenangkan melihatnya juga di curl

    • Microsoft juga pernah membuat alat serupa yang berguna: alat itu memungkinkan kita memeriksa struktur dokumen Office tertentu dan melihat kode C# yang menghasilkan komponennya
      Sepertinya sudah lama tidak diperbarui: https://github.com/dotnet/Open-XML-SDK/releases/tag/v2.5
    • Untuk hal seperti ini rasanya ada pola yang bisa digeneralisasi
      AREXX dari Amiga juga terlintas di pikiran
    • Paralel XAML/UI di sisi Excel yang terlihat di editor WPF Visual Studio juga terasa mirip
  • Untuk mengompilasi, Anda perlu memberi tahu gcc agar melakukan link ke libcurl, misalnya dengan menambahkan -lcurl
    Contohnya, buat alamat IP dan ip_fetcher.c dengan curl https://ifconfig.me --libcurl ip_fetcher.c, kompilasi dengan gcc -o ip_fetcher ip_fetcher.c -lcurl, lalu jalankan ./ip_fetcher; alamat IP akan tercetak
    Bagi orang yang tidak menulis kode C setiap hari, langkah linking dasar seperti ini juga merupakan informasi yang berguna

    • Jika lebih nyaman memakai make daripada mengetik perintah cc langsung, ada cara yang lebih mudah
      Setelah curl https://ifconfig.me --libcurl ip_fetcher.c, jalankan make LDFLAGS=-lcurl ip_fetcher, lalu ./ip_fetcher
  • Sedikit promosi: Hurl adalah CLI open source yang menggunakan libcurl untuk menjalankan dan menguji request HTTP dalam teks biasa
    Dengan memanfaatkan keandalan tinggi libcurl dan fitur seperti HTTP/3, Hurl menambahkan kemampuan merangkai request, menangkap data dari respons lalu meneruskannya ke request berikutnya, serta pengujian respons seperti JSONPath dan XPath
    Ada juga syntactic sugar untuk request REST/SOAP/GraphQL API, tetapi intinya tetap libcurl, dan dengan opsi verbose Anda juga bisa meng-grep perintah curl. Saya ikut mengelolanya
    https://hurl.dev

  • Akan bagus jika fitur seperti ini juga memungkinkan di ffmpeg

  • Daniel Stenberg benar-benar sangat teliti memperhatikan detail serta pengalaman developer dan pengguna
    Tingkat pemolesan seperti ini luar biasa

  • Saya ingat Daniel Stenberg sendiri menyebut opsi ini dalam video 3 jam yang menelusuri sebagian besar opsi command-line curl
    https://www.youtube.com/watch?v=V5vZWHP-RqU

  • Judul kiriman seharusnya memakai dua tanda hubung (--), bukan kombinasi em dash lebar penuh dan tanda hubung (—-)

    • Jika mengirim email ke pengelola lewat tautan Contact di footer, mereka bisa melihatnya dan memperbaikinya
  • Apakah maksudnya opsi ini membuat program C yang bisa dikompilasi untuk menggantikan skrip yang membungkus pemanggilan curl asli?

    • Benar. Dengan libcurl sebenarnya ini memang sudah mungkin, tetapi selama ini kita harus menulis sendiri kode boilerplate-nya
    • Idenya adalah kode C yang dihasilkan bisa disalin-tempel ke program yang sudah ada, atau setidaknya dipakai sebagai referensi untuk melihat pemanggilan API libcurl apa saja yang diperlukan agar pemanggilan curl tersebut bisa direproduksi
    • Agar berguna untuk halaman web umum dan sejenisnya, kemungkinan beberapa parameter perlu diubah
      Lebih tepat melihatnya sebagai titik awal yang menghindarkan Anda dari membongkar dokumentasi selama berjam-jam