3 poin oleh GN⁺ 2024-08-17 | 1 komentar | Bagikan ke WhatsApp
  • PyScript adalah platform open source yang memungkinkan kode Python dijalankan di browser, sehingga halaman web itu sendiri bisa menjadi lingkungan eksekusi Python
  • Dengan menggabungkan universalitas web dan ekosistem Python, PyScript menonjolkan bahwa Python dapat dijalankan di mana pun ada browser
  • Karena aplikasi berjalan di browser tanpa instalasi yang rumit, pengguna dapat membuat aplikasi berbasis web dengan sintaks Python yang mudah dipelajari
  • Kode dijalankan di browser pengguna sehingga mengurangi beban infrastruktur yang mahal, dan hasilnya dapat dibagikan sebagai URL di web
  • Menargetkan pemula maupun pengguna tingkat lanjut, dengan karakteristik utama: kemudahan, daya ekspresi, skalabilitas, kemudahan berbagi, universalitas, keamanan, dan kekuatan

Lingkungan eksekusi Python di dalam browser

  • PyScript adalah platform open source untuk menjalankan Python di browser
  • Salah satu contohnya adalah menjalankan kode Python di dalam HTML menggunakan script type="py"
    • Kode contoh menjalankan print('You can!') di dalam dokumen browser
  • Arah utama PyScript adalah menggabungkan dua ekosistem teknologi: web dan Python
    • Web adalah platform komputasi yang universal di seluruh dunia
    • Python adalah salah satu bahasa pemrograman paling populer di dunia
  • Hasilnya, pesan utama yang ditonjolkan adalah Python dapat dijalankan di mana pun ada browser

Cara memulai dan karakteristik platform

  • Dapat dicoba dengan mudah dan gratis di PyScript.com
  • Dokumentasi ditujukan untuk pemula maupun pengguna tingkat lanjut
  • Di materi komunitas, pengguna dapat melihat apa saja yang bisa dibuat dengan PyScript
  • Pengguna dapat terhubung dengan pengguna PyScript lain melalui Discord
  • Karakteristik yang ditonjolkan PyScript adalah sebagai berikut
    • Easy: aplikasi berjalan di browser tanpa instalasi yang rumit
    • Expressive: pengguna dapat membuat aplikasi dengan bahasa yang kuat, populer, dan mudah dipelajari seperti Python
    • Scalable: kode dijalankan di browser pengguna sehingga tidak membutuhkan infrastruktur yang mahal
    • Shareable: aplikasi dapat dibagikan sebagai URL di web
    • Universal: kode berjalan di mana pun browser dapat dijalankan
    • Secure: berjalan di platform komputasi yang telah teruji, yaitu browser
    • Powerful: memanfaatkan keunggulan web dan Python secara bersamaan

1 komentar

 
GN⁺ 2024-08-17
Komentar Hacker News
  • Jika penasaran dengan contoh penggunaannya, dashboard Panel statistik kejahatan Dallas bisa dilihat di sini: https://crimede-coder.com/graphs/Dallas_Dashboard
    Startup memakan waktu sekitar 1 menit, termasuk instalasi beberapa library Python dan pemuatan dataset eksternal 5MB. Setelah tampil, responsnya cukup baik dan berjalan dengan baik juga di iPhone
    Banyak organisasi yang bekerja sama dengan saya memakai versi gratis Tableau dan memperbarui data secara manual, karena versi gratis tidak mengizinkan koneksi langsung ke penyimpanan data. Ini adalah alternatif gratis, dan saya menyiapkan GitHub Actions untuk membuat file CSV terkompresi agar bisa diimpor oleh lingkungan tersebut

    • Penggunaan memori tampak cukup tinggi. Menurut task manager browser, tab ini memakai 657MB, sementara sebagian besar tab lain hanya sekitar 25~70MB
    • Disebutkan bahwa “startup memakan waktu sekitar 1 menit”, tetapi saat saya membukanya di iPad Pro 13 inci keluaran musim gugur 2023 lewat broadband kawasan NYC dan WiFi, perlu sekitar 8 detik dari klik tautan sampai spinner hilang dan filter aktif
      Saya kira perlu jauh lebih lama dari 8 detik untuk mem-bootstrap Python hingga bisa menjalankan aplikasi Panel di Safari pada iPad. Shift refresh memakan waktu sekitar 6 detik
    • Penasaran apa bottleneck-nya. Di jaringan broadband domestik, butuh sekitar 20 detik
    • Cukup keren. Bagi yang tertarik dengan dashboard statistik kejahatan, ini juga ada versi NYPD: https://compstat.nypdonline.org/
    • Situsnya keren. Kalau “banyak organisasi memakai versi gratis Tableau dan memperbarui data secara manual”, saya jadi penasaran kenapa tidak memakai sesuatu seperti React atau Angular
      Saya juga penasaran apakah masalahnya adalah butuh Python untuk analisis data, tetapi tidak ingin menjalankannya di sisi server karena biaya server
  • Bahkan setelah melihat homepage dan membaca dokumentasinya, saya masih kurang paham ini sebenarnya apa
    Setelah saya coba sedikit sendiri, saya bisa membuatnya menampilkan “Hello World” di sebuah website. Ini tampaknya seperti skrip yang mencari tag script dengan type="py" lalu mentranspilasi lewat Pyodide dari Python ke JavaScript
    Namun demo di homepage adalah REPL dan judulnya menyebut “platform”, jadi tetap membingungkan

    • Daripada “mentranspilasi Python ke JavaScript”, PyScript tampaknya lebih ke menjalankan kode Python secara langsung. Ia memakai interpreter Python yang dikompilasi ke WebAssembly, menggunakan CPython dari Pyodide atau MicroPython
    • Saya tidak suka penggunaan istilah yang ambigu dan samar seperti “platform”. Bilang saja ini adalah framework yang mengevaluasi kode dalam tag script Python menggunakan Pyodide
    • Saya belum benar-benar membaca dokumentasi atau source code-nya, tetapi paket js tampaknya dipetakan ke objek window yang sebenarnya dan mungkin merupakan API untuk memanggil metode DOM lewat semacam objek Proxy
    • Saya menemukan info tentang terminal di sini: https://docs.pyscript.net/2024.8.2/user-guide/terminal/
      Saya tadinya berharap bisa menjalankan Python dari konsol browser
  • Apa bedanya ini dengan Pyodide? https://pyodide.org/en/stable/

    • Pyodide adalah port CPython ke platform WebAssembly. PyScript adalah framework yang menggunakan Pyodide agar kita bisa mengembangkan aplikasi Python di browser. Elevator pitch-nya kira-kira “Python dalam tag script melalui Pyodide”
    • Ini memakai Pyodide. Walau bukan benar-benar transpiler, rasanya lebih dekat ke transpiler dari Python ke JS, dan ditujukan untuk membuat aplikasi browser dengan Python. Jadi bisa dilihat sebagai Pyodide + browser API
    • Pyodide adalah runtime
      PyScript bisa memakai Pyodide atau MicroPython, dan MicroPython sendiri sebenarnya cukup kecil. Di atas runtime itu, PyScript bukan sekadar menjalankan kode Python, tetapi juga menyediakan fitur kemudahan dan peningkatan kualitas hidup agar Python benar-benar bisa dipakai untuk pemrograman web
    • Ini adalah wrapper
  • Belakangan ini saya cukup mendalami penggunaan PyScript untuk menjalankan aplikasi CLI Python di browser
    Rasanya sangat hacky sepanjang proses, terutama ketika dependency mulai terlibat. Saya tidak bisa memakai Pydantic 2.x sehingga harus membuat kelas wrapper sebagai solusi, dan walau saya ingin menaruh semua logika di file Python, ada fitur yang hilang sehingga sebagian tetap harus ditaruh di JavaScript
    Mungkin cocok jika Anda ingin menambahkan UI sederhana dan logika UI kustom di atas kode Python, tetapi Streamlit atau Gradio mungkin lebih pas
    Repositori GitHub: https://github.com/data-catering/data-contract-playground
    Website: https://data-catering.github.io/data-contract-playground/

    • Karena banyak proyek Python sedang di-Rust-kan, memakai Python di mana saja jadi lebih sulit daripada yang seharusnya
  • Sulit menemukan use case nyata. Jika ingin menjalankan model machine learning, Anda bisa membangunnya dengan ONNX: https://onnxruntime.ai/docs/tutorials/web/
    Saya penasaran apakah ini efisien untuk membuat aplikasi berbasis browser alih-alih memakai JS/TS

    • Sebagian orang mungkin memang tidak ingin menyentuh JS/TS
    • Bahasa pemrograman seharusnya dipisahkan dari lingkungan deployment
  • Akan bagus kalau bisa menulis skrip di Firefox untuk mengendalikan browser. Maksudnya, evaluasi bisa dijalankan pada tahap mana pun yang diinginkan, seperti saat GET, setelah semua GET selesai, atau sebelum dan sesudah evaluasi JavaScript
    Penasaran apakah ada alat yang bisa melakukan hal seperti ini, dan juga memberi akses ke semua kemampuan Python dari host

  • Bukankah ini konsep yang sama seperti Brython? BRowser pYTHON: https://brython.info/
    https://github.com/brython-dev/brython

  • Sedikit promosi, saya membuat framework frontend reaktif yang lebih opinionated menggunakan PyScript. Sedikit terinspirasi oleh Vue.js: https://puepy.dev

  • Dulu saya pernah membuat renderer Markdown dengan ini. Kode sumber yang sangat sederhana bisa dilihat di sini: https://pyscript.com/@stuartmaxwell/markdown-previewer-v2/la...
    Aplikasinya mungkin tidak berjalan dengan baik di ponsel, tetapi seharusnya cukup oke di desktop. Saya memakai kode ini di aplikasi blog yang sedang saya tulis dengan Django

  • Untuk konfigurasi WASM apa pun, pada akhirnya sangat menjengkelkan bahwa ada batasan besar karena CORS, sehingga tidak bisa memanggil banyak API atau melakukan scraping situs
    Tentu saja CORS penting untuk mencegah hal-hal seperti XSS, tetapi akan bagus jika ada cara lain selain menyiapkan proxy yang menghapus CORS. Kalau begitu, yang tersisa adalah IP yang lebih mungkin diblokir karena bukan IP residensial

    • Apakah masalah ini hanya berlaku ketika isolasi lintas asal diaktifkan dengan COOP dan COEP?