3 puan yazan GN⁺ 2024-08-17 | 1 yorum | WhatsApp'ta paylaş
  • PyScript, tarayıcıda Python kodu çalıştırmayı sağlayan ve web sayfasının kendisini bir Python çalışma ortamına dönüştürebilen açık kaynak bir platformdur
  • Web’in evrenselliği ile Python ekosistemini birleştirerek, tarayıcı olan her yerde Python çalıştırmanın mümkün olduğunu öne çıkarır
  • Karmaşık kurulumlar olmadan uygulamalar tarayıcıda çalıştığı için, Python’un öğrenmesi kolay söz dizimiyle web tabanlı uygulamalar geliştirilebilir
  • Kod kullanıcı tarayıcısında çalıştığından pahalı altyapı yükünü azaltır ve ortaya çıkan sonuçlar web URL’leri üzerinden paylaşılabilir
  • Hem yeni başlayanları hem de ileri düzey kullanıcıları hedefler; kolaylık, ifade gücü, ölçeklenebilirlik, paylaşılabilirlik, evrensellik, güvenlik ve güçlülüğü temel özellikleri olarak sunar

Tarayıcı içindeki Python çalışma ortamı

  • PyScript, tarayıcıda Python çalıştırmak için geliştirilen açık kaynak bir platformdur
  • HTML içinde script type="py" kullanarak Python kodu çalıştırmak buna örnek olarak verilebilir
    • Örnek kod, tarayıcı belgesi içinde print('You can!') komutunu çalıştırır
  • PyScript’in temel yönelimi, web ve Python adlı iki teknoloji ekosistemini bir araya getirmektir
    • Web, dünya çapında evrensel bir bilgi işlem platformudur
    • Python, dünyadaki en popüler programlama dillerinden biridir
  • Sonuç olarak, tarayıcı olan her yerde Python çalıştırmanın mümkün olduğu mesajını öne çıkarır

Başlangıç yöntemi ve platform özellikleri

  • PyScript.com üzerinden ücretsiz ve kolayca denenebilir
  • Belgeler, hem yeni başlayanlara hem de ileri düzey kullanıcılara yöneliktir
  • Topluluk kaynakları üzerinden PyScript ile neler yapılabileceği görülebilir
  • Discord aracılığıyla diğer PyScript kullanıcılarıyla bağlantı kurulabilir
  • PyScript’in öne çıkardığı özellikler şunlardır
    • Easy: Karmaşık kurulumlar olmadan uygulamalar tarayıcıda çalışır
    • Expressive: Python gibi güçlü, popüler ve öğrenmesi kolay bir dille uygulamalar geliştirilebilir
    • Scalable: Kod kullanıcı tarayıcısında çalıştığı için pahalı altyapıya ihtiyaç duyulmaz
    • Shareable: Uygulamalar web URL’leri üzerinden paylaşılabilir
    • Universal: Tarayıcının çalıştığı her yerde kod da çalışır
    • Secure: Tarayıcı gibi kendini kanıtlamış bir bilgi işlem platformu üzerinde çalışır
    • Powerful: Web’in ve Python’un avantajlarını birlikte kullanır

1 yorum

 
GN⁺ 2024-08-17
Hacker News görüşleri
  • Kullanım örneğini merak ediyorsanız Dallas suç istatistikleri Panel panosunu burada görebilirsiniz: https://crimede-coder.com/graphs/Dallas_Dashboard
    İlk açılış yaklaşık 1 dakika sürüyor; buna çeşitli Python kütüphanelerinin kurulumu ve harici 5MB veri kümesinin yüklenmesi dahil. Bir kez açıldıktan sonra oldukça iyi tepki veriyor ve iPhone'da da iyi çalışıyor
    Birlikte çalıştığımız birçok kuruluş Tableau'nun ücretsiz sürümünü kullanıp verileri manuel güncelliyor, çünkü ücretsiz sürüm veri deposuna doğrudan bağlantıya izin vermiyor. Bu ücretsiz bir alternatif ve sıkıştırılmış CSV dosyalarını GitHub Actions ile üretip ortamın içe aktarmasını sağlayacak şekilde kurduk

    • Bellek kullanımı oldukça yüksek görünüyor. Tarayıcı görev yöneticisine göre bu sekme 657MB kullanıyor; diğer sekmelerin çoğu ise yaklaşık 25~70MB civarında
    • “İlk açılış yaklaşık 1 dakika sürüyor” denmiş ama 2023 sonbaharı model 13 inç iPad Pro'da, NYC bölgesel geniş bant ağı ve WiFi ile açtığımda bağlantıya tıkladıktan sonra spinner'ın kaybolup filtrelerin etkinleşmesine kadar yaklaşık 8 saniye sürdü
      Safari içinde iPad'de bir Panel uygulamasını çalıştıracak kadar Python'u bootstrap etmenin 8 saniyeden çok daha uzun süreceğini sanmıştım. Shift yenileme ise yaklaşık 6 saniye sürdü
    • Darboğazın ne olduğunu merak ediyorum. Yurt içi geniş bantta yaklaşık 20 saniye sürdü
    • Oldukça havalı. Suç istatistikleri panosuyla ilgilenenler için NYPD'ninkini de bırakayım: https://compstat.nypdonline.org/
    • Site güzel. “Birçok kuruluş Tableau'nun ücretsiz sürümünü kullanıp verileri manuel güncelliyor” ise neden React ya da Angular gibi bir şey kullanmadıklarını merak ediyorum
      Veri analizi için Python gerektiği ve sunucu maliyeti yüzünden bunu sunucu tarafında çalıştırmak istemedikleri bir sorun olup olmadığını da merak ediyorum
  • Ana sayfaya bakınca da kafam karıştı, belgeleri okuduktan sonra da bunun tam olarak ne olduğundan pek emin değilim
    Kendim biraz kurcalayınca web sitesine koyup “Hello World” gösterebildim. type="py" olan script'leri arayan ve Pyodide üzerinden Python'dan JavaScript'e transpile eden bir script gibi görünüyor
    Ama ana sayfa demosu bir REPL ve başlıkta da “platform” yazıyor, bu yüzden hâlâ kafam karışık

    • “Python'u JavaScript'e transpile ediyor” demektense, PyScript daha çok Python kodunu doğrudan çalıştırıyor gibi görünüyor. WebAssembly'ye derlenmiş bir Python yorumlayıcısı kullanıyor; Pyodide'ın CPython'unu ya da MicroPython'ı kullanıyor
    • “Platform” gibi muğlak ve sınırları belirsiz terimler kullanılmasından hoşlanmıyorum. Bunu doğrudan Pyodide ile Python script tag'lerinin içindeki kodu değerlendiren bir framework diye söylemek yeterli olurdu
    • Belgeleri ya da kaynak kodunu gerçekten okumadım ama js paketi muhtemelen gerçek window nesnesine eşleniyor ve bir tür Proxy nesnesi üzerinden DOM metotlarını çağıran bir API sunuyor
    • Terminalle ilgili bilgiyi burada buldum: https://docs.pyscript.net/2024.8.2/user-guide/terminal/
      Tarayıcı konsolunda Python çalıştırabilmeyi umuyordum
  • Bu, Pyodide'dan nasıl farklı? https://pyodide.org/en/stable/

    • Pyodide, CPython'un WebAssembly platformuna taşınmış hali. PyScript ise Pyodide kullanarak tarayıcıda Python uygulamaları geliştirmeyi sağlayan bir framework. Kısa tanımıyla “Pyodide üzerinden script tag'lerinin içindeki Python” denebilir
    • Bu, Pyodide kullanıyor. Gerçek anlamda bir transpiler olmasa da Python'dan JS'ye giden bir transpilere daha yakın bir his veriyor ve Python ile tarayıcı uygulamaları geliştirmeye yönelik. Yani Pyodide + tarayıcı API'leri olarak görülebilir
    • Pyodide bir runtime
      PyScript, Pyodide ya da MicroPython kullanabiliyor ve MicroPython gerçekten oldukça küçük. PyScript, runtime'ın üstünde sadece Python kodu çalıştırmanın ötesine geçip, Python'u web programlamada gerçekten kullanabilmek için kolaylıklar ve yaşam kalitesi iyileştirmeleri sunuyor
    • Bir wrapper
  • Son zamanlarda PyScript ile Python CLI uygulamalarını tarayıcıda çalıştırma konusuna epey derin girdim
    Her şey baştan sona epey hacky hissettirdi, özellikle işin içine bağımlılıklar girince daha da fazla. Pydantic 2.x kullanamadığım için geçici çözüm olarak wrapper sınıfları yazmak zorunda kaldım; tüm mantığı Python dosyalarında tutmaya çalıştım ama eksik özellikler yüzünden bir kısmını JavaScript'e koymam gerekti
    Python kodunun üstüne basit bir arayüz ve özelleştirilmiş UI mantığı eklemek istediğiniz durumlarda işe yarayabilir ama Streamlit ya da Gradio daha uygun olabilir
    GitHub deposu: https://github.com/data-catering/data-contract-playground
    Web sitesi: https://data-catering.github.io/data-contract-playground/

    • Birçok Python projesinin Rustlaşması, Python'u her yerde kullanmayı gerekenden daha zor hale getiriyor
  • Gerçek kullanım örnekleri bulmak zor. Makine öğrenmesi modelleri çalıştırmak istiyorsanız ONNX ile build edebilirsiniz: https://onnxruntime.ai/docs/tutorials/web/
    JS/TS yerine tarayıcı tabanlı uygulamalar yapmak için bunun ne kadar verimli olacağını merak ediyorum

    • Bazı insanlar JS/TS'ye hiç dokunmak istemeyebilir
    • Programlama dilleri dağıtım ortamından ayrı olmalı
  • Firefox'ta script yazıp tarayıcıyı kontrol edebilmek güzel olurdu. Bunu, GET anında, tüm GET'lerden sonra, JavaScript değerlendirilmeden önce ve sonra gibi istenen herhangi bir aşamada değerlendirme yapacak şekilde kastediyorum
    Bunun gibi bir şeyi yapabilen ve Python'un tüm özelliklerine de host üzerinde erişilebilen araçlar olup olmadığını merak ediyorum

  • Bu, Brython ile aynı fikir değil mi? BRowser pYTHON: https://brython.info/
    https://github.com/brython-dev/brython

  • Biraz övünmek gerekirse, PyScript kullanarak daha katı görüşlere sahip reaktif bir frontend framework'ü yaptım. Biraz Vue.js'den ilham aldı: https://puepy.dev

  • Geçmişte bununla bir Markdown renderer yapmıştım. Çok basit kaynak kodunu burada görebilirsiniz: https://pyscript.com/@stuartmaxwell/markdown-previewer-v2/la...
    Uygulama mobilde iyi çalışmayabilir ama masaüstünde sorun çıkarmayacaktır. Django ile yazdığım blog uygulamasında bu kodu kullandım

  • Her türlü WASM kurulumunda, sonuçta CORS yüzünden birçok API'yi çağıramamak veya siteleri scrape edememek gibi büyük bir kısıt olması gerçekten can sıkıcı
    Elbette CORS, XSS gibi şeyleri önlemek için önemli; ama CORS'u kaldıran bir proxy kurmak dışında başka bir yol olsa iyi olurdu. Bunu yaptığınızda, konut tipi IP yerine engellenme olasılığı daha yüksek IP'lerle kalıyorsunuz

    • Bu sorun yalnızca COOP ve COEP ile cross-origin isolation etkinleştirildiğinde mi geçerli?