kaptandusukdon
Picopat
- Katılım
- 16 Kasım 2024
- Mesajlar
- 181
Daha fazla
- Cinsiyet
- Erkek
Ne kadar net doktun Discord'un tum gereksinimlerini ortaya. Realtime messaging applerle tecruben cok herhalde. MySQL onerdigine gore. (!)
Konu sahibi icin;
Discord benzeri open-Source bir proje var, revolt adi. Backend'de kullandiklari dil Rust agirlikli olarak; GitHub - revoltchat/backend: Monorepo for Revolt backend services. dB icin MongoDB kullaniyorlar.
Frontend icin ise React kullaniyor bu proje.
Discord'un kendisi, React ve React + electron frontend icin, backend icin ise; agirlikli Elixir ve Python kullaniyor ama bunlarin yani sira, C++, GO ve Rust'da kullaniyorlar. Discord gibi sacelability goz onunde bulundurularak gelistirilen sistemler monolithic yapiya sahip olamazlar isteselerde. Dolayisiyla moduler gelistirilirler, bir modulu gelistirmeye en uygun dil/arac kiti neyse o tercih edilir.
User data Storage icin genelde geleneksel rdbms cozumleri kullanirlar, mesajlar icinse nosql veri tabanlari daha uygun. Horizontal scaling mumkun hale geliyor ve islemleri sunucular arasinda ya da ulkeler arasindaki sunucular arasinda bile dagitabiliyorsun. (bolgesel sunucu sistemleri, mesela Discord'da sesli sohbetteyken gormussunuzdur sesli sohbete baglandiginiz sunucunun konumunu degistirebildiginizi.)
Tek sunuculu bir sey yapmak istiyorsan WebRTC ustune bir sey yapabilirsin. Tek Python yeter ama front end icin de biraz HTML/CSS/JS bilmen lazim.Yani hocam dediklerinizden çok anlamadım ama sanırım Python tek yetmeyecek. Öyle bir uygulama yapmak için neleri bilmem gerek ve Revolt'dan nasıl yapılıyor? Basitçe anlatır mısınız? Ve uygulamayı sadece aramızds kullancaz o yüzden tek sunucu yetmez mi?
Tek sunuculu bir şey yapmak istiyorsan webrtc ustune bir şey yapabilirsin. Tek Python yeter ama front end icin de biraz HTML/CSS/JS bilmen lazim.
Hocam mesajlasma servisi neden RDBMS ile islemez? NoSQL cok daha verimli mi oluyor. Sadece NoSQL kullanan DB'ler mesajlasma gecmisi gibi veriler midir. Yani bir DWH mı kurulur?Ne kadar net doktun Discord'un tum gereksinimlerini ortaya. Realtime messaging applerle tecruben cok heralde. MySQL onerdigine gore. (!)
Konu sahibi icin;
Discord benzeri open-source bir proje var, Revolt adi. Backend'de kullandiklari dil Rust agirlikli olarak; GitHub - revoltchat/backend: Monorepo for Revolt backend services. DB icin Mongodb kullaniyorlar.
Frontend icin ise React kullaniyor bu proje.
Discord'un kendisi, React ve React + Electron frontend icin, backend icin ise; agirlikli Elixir ve Python kullaniyor ama bunlarin yani sira, C++, Go ve Rust'da kullaniyorlar. Discord gibi sacelability goz onunde bulundurularak gelistirilen sistemler monolithic yapiya sahip olamazlar isteselerde. Dolayisiyla moduler gelistirilirler, bir modulu gelistirmeye en uygun dil/arac kiti neyse o tercih edilir.
User data storage icin genelde geleneksel RDBMS cozumleri kullanirlar, mesajlar icinse NoSQL veri tabanlari daha uygun. Horizontal scaling mumkun hale geliyor ve islemleri sunucular arasinda yada ulkeler arasindaki sunucular arasinda bile dagitabiliyorsun. (Bolgesel sunucu sistemleri, mesela Discord'da sesli sohbetteyken gormussunuzdur sesli sohbete baglandiginiz sunucunun konumunu degistirebildiginizi.)
Madem python başladın, python ile devam et. Klasik tcp/udp üzerinden socket programlama yap. iki farklı client sunucunla (socket-server) eşleşsin ve sunucu üzerinden mesajlaşabilsinler.Öncelikle herkese merhaba, arkadaşlarımla aramızda konuşabileceğimiz ve mesajlaşabileceğimiz bir uygulama yapmak istiyorum ama bu yazılım işlerine daha yeni başladım. Daha bir hafta önce https://www.youtube.com/playlist?list=PLY20HpFruiK17gQBHXjJN-YiFujiE1zVE şu playlistten pythona başladım. Ne yapmam gerek, öneriniz var mıdır?
Discord alternatif uygulamalar var bunları neden kullanmıyorsun o halde? Team, Slack, Skype vs?Ve uygulamayı sadece aramızds kullancaz o yüzden tek sunucu yetmez mi?
Madem Python başladın, Python ile devam et. Klasik tcp/udp üzerinden socket programlama yap. İki farklı Client sunucunla (socket-server) eşleşsin ve sunucu üzerinden mesajlaşabilsinler.
UI şimdilik gerek yok, server tarafını hallettikten sonra girersin UI kısmına. Bu sebeple yine Python Console üzerinden mesajlaşmasını sağlayabilirsin.
Mesajlaşma kısmını hallettikten sonra, mesajları bir yere kaydet. Nereye kaydettiğin, senin için önemli değil.
Sonra UI tarafını halledeceksin. Socket destekleyen bir programlama dili ile Client tarafınıda halledersin. Sadece masaüstü bir proje istiyorsan, Python Tkinter veya qt ile yapılabilir. Ya da websocket kullanacaksın, web üzerinden devam edeceksin.
İnternette zibilyon tane örnek var artık bu konu ile ilgili. Hatta birçok kütüphane bile var.
Discord alternatif uygulamalar var bunları neden kullanmıyorsun o halde? Team, slack, Skype vs?
Bu tarz bir proje yapmak için hem zaman hem de maddi kaynak lazım.
Madem Python başladın, Python ile devam et. Klasik tcp/udp üzerinden socket programlama yap. İki farklı Client sunucunla (socket-server) eşleşsin ve sunucu üzerinden mesajlaşabilsinler.
UI şimdilik gerek yok, server tarafını hallettikten sonra girersin UI kısmına. Bu sebeple yine Python Console üzerinden mesajlaşmasını sağlayabilirsin.
Mesajlaşma kısmını hallettikten sonra, mesajları bir yere kaydet. Nereye kaydettiğin, senin için önemli değil.
Sonra UI tarafını halledeceksin. Socket destekleyen bir programlama dili ile Client tarafınıda halledersin. Sadece masaüstü bir proje istiyorsan, Python Tkinter veya qt ile yapılabilir. Ya da websocket kullanacaksın, web üzerinden devam edeceksin.
İnternette zibilyon tane örnek var artık bu konu ile ilgili. Hatta birçok kütüphane bile var.
Discord alternatif uygulamalar var bunları neden kullanmıyorsun o halde? Team, slack, Skype vs?
Bu tarz bir proje yapmak için hem zaman hem de maddi kaynak lazım.
UI; user interface kelimelerin baş harfinden geliyor. Arayüz açıkçası.Peki hocam o dediğiniz UI, TCP HDP falan ne demek ben hiç anlamıyorumda.
UI; user interface kelimelerin baş harfinden geliyor. Arayüz açıkçası.
Tcp/udp; bir internet protokolü. Mesajlaşmayı sağlar.
TCP, güvenli bağlantı sağlar. Gönderilen paket (gönderilen data genelde packet olarak geçer) karşı tarafa ulaştığını garanti eder. Ayrıca paketleri sırayla gönderir. Dosya indirme, mesajlaşma gibi yapılar için uygun.
UDP de güvenlik önemli değil. Karşıya ulaştı mı ulaşmadı mı sırayla gitsin falan gibi dertleri yok. Sender gönderdi mi? Evet. Bitti. Receiver almadıysa yapacak bir şey yok der. Bu yüzden hızlıdır. Oyunlarda, canlı yayın gibi ıvır zıvırda tercih edilir. Mesajlaşmada kesinlikle tercih edilmemeli.
Hobi olsun diye yapabilirsin. Yukarıda bahsettiğim şekilde yap. Hem Python bilgin gelişir hem de socket programlama nedir öğrenmiş olursun.
NoSQL databaseleri genelde daha yuksek I/O kapasitesine sahip ve daha dusuk gecikmeye sahipler (Constraintler yok, esnek yapi, dolayisiyla sadece indexing). Bunun arkasindaki sebep icin ACID ve BASE farklarini aratabilirsin. NoSQL veritabanlari genelde BASE modeli kullanirlar (ACID destekleyebilirler ancak tercih edilmelerinin sebebi BASE'in getirdigi esneklik).Hocam mesajlasma servisi neden RDBMS ile islemez? NoSQL cok daha verimli mi oluyor. Sadece NoSQL kullanan DB'ler mesajlasma gecmisi gibi veriler midir. Yani bir DWH mı kurulur?