1 puan yazan GN⁺ 2025-01-18 | 1 yorum | WhatsApp'ta paylaş
  • Giriş

    • Learn Yjs, Yjs CRDT kütüphanesini kullanarak gerçek zamanlı iş birliği uygulamalarının nasıl geliştirileceğini öğreten etkileşimli bir eğitim serisidir.
    • Bu sayfanın kendisi de gerçek zamanlı iş birliği uygulamasına bir örnektir; diğer kullanıcıların imleçleri gerçek zamanlı olarak gösterilir.
    • Bitkilere tıkladığınızda yapılan değişiklikler diğer kullanıcılara da yansıtılır.
  • Yjs'in Temelleri

    • Yjs'in temel kavramlarıyla başlayarak dağıtık uygulamalarda durumun nasıl ele alındığını inceler.
    • CRDT'nin ne olduğu ve neden kullanıldığı açıklanır.
    • İş birliği uygulamalarında ortaya çıkabilecek sorunlar ve bunlardan kaçınma yöntemleri sunulur.
    • Gezilebilir demolar ve kod alıştırmalarıyla Yjs'in nasıl çalıştığını deneyimleyebilirsiniz.
  • Demo Örnekleri

    • Her kutu, Yjs kullanan bir uygulamayı çalıştıran ayrı bir bilgisayarı (istemciyi) temsil eder.
    • Bir istemcide gerçekleştirilen etkileşimler diğer istemcilere de otomatik olarak senkronize edilir.
    • Sol üstteki kaydırıcıyla ağ gecikmesini ayarlayarak istemciler arasındaki etkileşimi gözlemleyebilirsiniz.
  • Site Tanıtımı

    • Learn Yjs, gerçek zamanlı uygulamalar geliştirme platformu olan Jamsocket'in bir projesidir.
    • Bu sayfadaki gerçek zamanlı imleçler ve çok oyunculu bahçe, açık kaynaklı Yjs sunucusu Y-Sweet ile çalışır.
    • Web sitesi Astro ile oluşturulmuş, etkileşimli demolar ve alıştırmalar ise React ve Yjs ile geliştirilmiştir.

1 yorum

 
GN⁺ 2025-01-18
Hacker News görüşü
  • Jamsocket geliştiricileri, Yjs kullanarak işbirlikçi ve local-first uygulamalar geliştirmeye yardımcı olan interaktif bir eğitim hazırlamış. Yjs bir CRDT kütüphanesi ve dağıtık durumlarla çalışmaya aşina olmayanlar için bir öğrenme eğrisi var. Bu eğitim sezgisel görünüyor ve keşfedilebilir demolar ile kodlama alıştırmaları üzerinden temelden anlayış oluşturacak şekilde tasarlanmış

  • Yjs’in genelleştirilmiş yetenekleri karmaşık hale gelebiliyor; özellikle de birden fazla nesne birbiriyle ilişkili olduğunda. Tüm öğeleri tek bir dokümana koyan basit model, tüm veritabanının aktarılmasını gerektirme sorununu doğuruyor. Bu yüzden öğeleri ayrı nesnelere bölüp doğrudan kalıcı hale getirmenin bir yoluna ihtiyaç var

    • Bu sorun Subdocuments kullanılarak çözülebilir, ancak bazı provider’lar bunu desteklemiyor. Yjs’in çekirdek protokolü dokümante edilmemiş ve ilgili kod farklı yerlere dağılmış durumda
  • Yjs’in avantajı, P2P sonuçlarını kolayca elde edebilmek. Ancak backend kalıcılığı, çakışma çözümü, geçmişi geri sarma gibi konular zor mühendislik problemleri. Platejs gibi blok editörlerle iyi bir deneyim istenmiş ve Liveblocks gibi çözümler geliştirici deneyimini basitleştirmeye çalışıyor

  • Yjs kullanarak çevrimdışıyken de çalışması gereken bir uygulama geliştiriliyor. Bu bir gerçek zamanlı işbirliği uygulaması değil ama sunucuyu tek bir işbirlikçi gibi düşünürseniz çeşitli kullanım senaryoları hayal edilebilir

  • Yjs küçük bir projede kullanılmış ve istemci tarafı öğrenmesi ve kullanması kolaymış. Sunucu tarafında Node dışındaki diller için neredeyse hiç örnek yokmuş; bu yüzden LevelDB tabanlı kalıcılık kullanılarak Node’un y-websocket yapısı biraz değiştirilip kullanılmış

  • Fractional indexing denen teknik, indeksleri tamsayı yerine kesir olarak kullanmak anlamına geliyor. Bunun kaç kez kullanılabileceği konusunda soru işaretleri var

  • İnteraktif demodaki gecikme kaydırıcısı, ağ gecikmesinden ziyade bir debounce buffer gibi çalışıyor gibi görünüyor. Neden böyle olduğunu anlamak zor

  • İnteraktif demo çok güzel. Bunu oluşturmak için kullanılan bir kütüphane olup olmadığı merak ediliyor

  • Dört yapraklı yonca alınmış ama biri gelip bozmuş. Üreticiye övgüler; eğlenceliymiş

  • Banner görselindeki oyun çocukça ama eğlenceli