[Zemberek-pardus] ZemberekServer protokolü

Mehmet D. AKIN mdakin at uekae.tubitak.gov.tr
8 Nis 2005 Cum 22:57:20 EEST


Tekrar Merhaba.

Aslında rakam kullanmamın gerçek nedeni soket haberleşmesinde alt seviyede
mesajların tipine göre özel muamele yapmamktı sanırım. Yani server her
koşulda kendisine gönderilen mesajları, içeriği ne olursa olsun Boy-mesaj
şeklinde okur, cevapları da daima boy-mesaj şeklinde gönderir şeklindeydi.
Yani soket seviyesindeki fonksiyonlar gelen verideki rakamları çekiyor,
daha sonra da o rakam kadar byte okuyup uygulama katmanına gönderiyordu.
Aynı şekilde gönderilmek istenen herhangi bir string mesajın UTF-8 e
dönüştürülmesi, baş tarafına boy bilgisinin iliştirilmesi de bu alt seviye
bölümün rolü idi.

Önersdiğin protokolü biraz düşününce işleri senin için kolaylaştırmaktan
çok zorlaştıabileceğini farkettim, yani rakamlar aslında bizim mesajlaşma
protokolümüzün dışında düşünüp hep rakamlardan sonrasındaki protokole
bakmak belki daha iyi olabilir. (Yani şu andaki hali gibi, ama ONER ve
DENETLE Stringleri * ve & ile değiştirilebilir) Çünkü senin önerdiğin
protokolde doğru ve yanlış cevaplarını kotarman çok kolay olsa da,
öneriler için rakamı okuma, cevabı parse etme eziyeti ile her halukarda
karşı karşıya kalacaksın.

Ama gene de protokolü implement edeceğim, belki düşündüğüm gibi olmaz.

selamlar
Mehmet.

> Denetleme işleminde geri dönen değerler aşağıdaki gibi mi?
>
> "1 *" kelime doğru
> "1 #" kelime yanlış
> "1 ?" bir hata oluştu (bunu kelime yanlış olarak işleyeceğim sanırım?)
>
> Böyle ise yalnızca bir karakter göndermek daha mantıklı değil mi. Eğer
> denetleme sırasında her durumu (doğru/yanlış/hata) tek karakter ile
> ifade edebiliyorsak tabi... Bana edebiliriz gibi geliyor.
>
> Aslında her durumda mutlaka bizim "sihirli" karakterlerimizi öncelikli
> olarak göndermek daha mantıklı olur gibi geliyor. Yalnızca öneri
> durumunda tek karakterden uzun olacağını düşünüyorum. Bu durumda da
> biraz daha okutup kaç karakter geleceğini öğrenebilirim.
>
> Yani, önerim şöyle:
>
> DENETLEME:
> "*" kelime doğru
> "#" kelime yanlış (bu cevabı aldıktan sonra ONER komutunu göndereceğim)
> "?" bir hata oluştu (bu cevabı aldıktan sonra ONER komutunu
> 		     göndermeyeceğim)
>
> ÖNERME:
> "#" kelime için bir öneri yok.
> "?" bir hata oluştu (öneri yok diye kabul edeceğim)
> "&" kelime için bir/birkaç öneri var (önerileri almak için okumaya devam
> 				      edeceğim)
>
> ÖNERİ GELMESİ DURUMUNDA ALINAN TAM CEVAP:
> "& 28 (zemberek,zerdali,zencefil)"
>
> Öneri durumunda 28 kendisinden sonraki karakterlerin kaç byte olduğu
> ifade ediyor. 28'i okuyana kadar ne kadar okumam gerektiğini bilmiyor
> olacağım.
>
> Protokolde ilk önce tanım karakterlerinin gönderilmesini istememin
> nedeni, socket'den okuduğum ilk karakteri tanımlı karakterleri iterate
> ederek kontrol edebilir ve daha sonra ne yapacağıma karar verebilirim.
> Bu önce boyut oku, sonra değeri oku, iterate et ve karar ver
> aşamalarından daha hızlı olur.
>
> İkinci önerim!
>
> ZemberekServer'a veri gönderirken de "DENETLE"/"ONER" gibi komutlar
> yerine tek karakterlik komutlar kullanalım derim (yukarıda anlattığım
> aynı nedenden dolayı).
>
> "* 5 pardus" pardus kelimesini denetle
> "& 5 parduk" parduk kelimesi için doğru kelime(ler) öner.
>
>> Önerme işlemi sadece gerekli olduğu zaman (örneğin kullanıcı istediği
>> zaman )çağırılmalıdır, çözümlemeden yaklaşık 20 kat yavaştır.
>
> Tamam, yalnızca Zemberek kelimenin yanlış olduğunu söylediği zaman
> "öneri" isteyeceğim.
>
>> Yapılabilecek şeyler:
>> - Hatalar "?" yerine daha mantıklı şekilde söylenebilir.
>> - Henüz kişisel sözlük yok.
>> - Birden fazla kelimenin denetlenebilmesi için DENETLE
>> ("Merhaba","Naber","Zemberek","pardus")
>> gibi bir komut eklenebilir.
>
> Bu son madde çok iyi olur. Fakat bunun için protokolde zemberek
> server'ın cevap verme şeklini değiştirmek gerekir sanırım. Yani;
>
> parduk kelimesi için:
>
> "& 8 (pardus)"
>
> yerine
>
> "& parduk 8 (parus)"
>
> şeklinde öneriyi getirmek ve istemci programın (zpspell) kendi
> gönderdiği kelimeleri bunun içerisinden ayırt etmesi gerekiyor.
>
>
> Biraz uzun yazdım, kusura bakma :(. Gerçekten eline sağlık. Eğer senin
> için de uygunsa yukarıda bahsettiğim bir iki maddeyi netleştirebilirsek
> hemen yazabilirim zpspell istemcisini.
>
> iyi çalışmalar,
> --
> Baris Metin
> http://www.metin.org
> _______________________________________________
> Zemberek-pardus mailing list
> Zemberek-pardus at uludag.org.tr
> http://liste.uludag.org.tr/cgi-bin/mailman/listinfo/zemberek-pardus
>




Zemberek-pardus hakkında daha fazla bilgi için