Şimdi Ara

Forumlar Üzerine Biraz Mantık

Bu Konudaki Kullanıcılar:
2 Misafir - 2 Masaüstü
5 sn
33
Cevap
0
Favori
592
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • evet, forumların özelliklerini düşünerek bunlara mantık geliştirelim arkadaşlar...

    örneğin yeni mesaj, eski mesaj olayı. çalışma mantığı nedir sizce?



  • quote:

    Orjinalden alıntı: makurdoglu

    evet, forumların özelliklerini düşünerek bunlara mantık geliştirelim arkadaşlar...

    örneğin yeni mesaj, eski mesaj olayı. çalışma mantığı nedir sizce?

    horoza sormuşlar tavukmu yumurtadan yumurtamı tavuktan çıkar diye
    horoz da ben işimi yaparım gerisine karışmam arkadaş demiş

    bana ne mantığından
    ben kurmasını bi, öğreniyim işimi yaparım gerisi beni ilgilendirmez
  • arkadaşlar lütfen ciddi ciddi fikir yürütebilecek olanlar mesaj atsın. sırf yazı yazmak amacıyla mesaj atanları CAKIR42 arkadaşımızda olduğu gibi bloklamak zorunda kalacağım.
  • sanırım dediğin olay bence bir tarih yardımıyla yapılıyor olabiliryani mesala 1 gün önceki eski oluyor
  • quote:

    Orjinalden alıntı: necrozan™®

    sanırım dediğin olay bence bir tarih yardımıyla yapılıyor olabiliryani mesala 1 gün önceki eski oluyor


    peki ozaman şu şekilde düşünelim. database benim en son burada bulunduğum zamanı table da bir field a kaydediyor. son girdiğim zamandan sonraki mesajları yeni mesaj olarak bana iletiyor. ama şuda var forumlarda yeni mesaj demek okunmamış mesaj demek.

    mesala 23.09.04, 18:48 de forumdan çıkış yaptım. ama buraya bırakılan mesaj 23.09.04, 17:21 de bırakılmış ve ben okumamışım. yukarıdaki durumda foruma tekrar giriş yaptığımda o mesaj eski mesaj (okunmamış) olarak gözükecektir... tarih belki bir etken olabilir ama tam olarak bir çözüm olmuyor bize. bu durum için ne yapabiliriz?




  • Eğer amaç sana son ziyaretinden sonra atılan mesajları göstermekse, son hit anını (session başlangıç anını) bir veri olarak kayıt eder. Sonraki ziyaretinde bu tarihe göre yeni olanların hepsini yeni işaretler.

    Yada aynı işlemi cookie olarak kayıt ettidiği değeri kullanarak yapar.

    Amaç ne? önce onu konuşmak lazım. Yada hangi forumdaki uygulamanın mantığı lazım..
  • quote:

    Orjinalden alıntı: gurol

    Eğer amaç sana son ziyaretinden sonra atılan mesajları göstermekse, son hit anını (session başlangıç anını) bir veri olarak kayıt eder. Sonraki ziyaretinde bu tarihe göre yeni olanların hepsini yeni işaretler.

    Yada aynı işlemi cookie olarak kayıt ettidiği değeri kullanarak yapar.

    Amaç ne? önce onu konuşmak lazım. Yada hangi forumdaki uygulamanın mantığı lazım..


    amacımız siteden son çıkışımızdan itibaren gelen mesajları yeni olarak göstermek değil. o mantıkda necrozanın dediği doğruydu tarih olayı. amacımız siteden son çıkımızın öncesinde gelen ve görüntülemediğimiz mesajlar varsa çıkıp girdikten sonrada görüntülemediğimiz tüm mesajlarıda yeni (okunmamış) olarak göstermeye çalışıyoruz.

    örneği tekrarlıyorum...

    mesala 23.09.04, 18:48 de forumdan çıkış yaptım. ama buraya bırakılan bir mesaj var 23.09.04, 17:21 de bırakılmış ve ben okumamışım. yukarıdaki durumda foruma tekrar giriş yaptığımda o mesaj eski mesaj (okunmamış) olarak gözükecektir... tarih belki bir etken olabilir ama tam olarak bir çözüm olmuyor bize. bu durum için ne yapabiliriz? yani son girişimiz bizim için bir etken olmayacaktır. her girişimde okumadığım mesaj yeni mesaj olarak görüntülenmelidirler...

    bu arada herhangi bir forumu baz alarak birşey düşünmüyoruz. sıfırdan bir forum hazırladığımızı varsayalım ve böyle bir problemimiz var. amaç biraz düşünmeyi sağlamak ve progralama mantığını artırmak.



    < Bu mesaj bu kişi tarafından değiştirildi makurdoglu -- 23 Eylül 2004, 17:51:34 >




  • quote:

    Orjinalden alıntı: makurdoglu

    arkadaşlar lütfen ciddi ciddi fikir yürütebilecek olanlar mesaj atsın. sırf yazı yazmak amacıyla mesaj atanları CAKIR42 arkadaşımızda olduğu gibi bloklamak zorunda kalacağım.

    hah hah ha
    çok komik
    sadece biraz espri yapalım dedik ettiğin laflara bak
    ilk defa biraz sulandıralım dedik senin gibi birine düştük
  • Bildiğim kadarıyla forumlarda böyle bir olay yok. Hiç görmedim. Yani sadece mesajların tarihi gösterilir, kullanıcının o mesajı okuyup okumadığı gösterilmez.

    Ama illa ki böyle bir şey yapılmak istenirse bir okundu/okunmadı flagı kullanmak gerekir. Mesela o kullanıcıya ait okunan mesajlar tablosu oluşturulur ve kullanıcının görüntülediği her mesaj bu tabloya kaydedilir.

    Düşünerek de anlaşılabileceği gibi böyle bir sistem -forumlarda- mesaj tabanlı olarak çalışamaz. Çünkü insanın ekranın nerelerini okuduğunu tespit eden bir teknoloji yaygın değil henüz. Bu yüzden kullanıcının o anda görüntülemekte olduğu sayfadaki tüm mesajlar adı geçen table'a kaydedilir. Ve bir daha ki girişinde kullanıcı bir sayfaya girdiğinde ordaki mesajlar tablodakilerle karşılaştırılıp okunmamış olanlar işaretlenir.

    Ama bir forum sistemi içerisinde böyle bir yapının ya çok zor ya da çok kullanışsız olacağı kanaatindeyim.



    < Bu mesaj bu kişi tarafından değiştirildi leonheart -- 23 Eylül 2004, 19:16:59 >




  • of iyice kafam karıştı ha felsefe yaptınız bence benim dediğim mantıklı değilmiydi
  • Seninki işe yaramaz M.A Kurdoğlu'nu yanlış anlamadıysam. Dediğin tarih olayı sadece mesajın tarihini belirtir. Hangi mesajın okunup hanginin okunmadığını belli edemez tam olarak. Yorma kafanı bu tür olaylar genelde mail sistemlerinde kullanışlı olur.
  • leonheart nerde demissin misal burada kullaniliyor
    makurdoglu güzel bi konu dedigine göre son girisini baz alip ondan sonrakileri yeni die gösterirsin ciktiktan sonrakileri degil
    table ac bi tane "songiris" die sonra sayfada songiristen sonrakileri bold yap de misal burda öle onlar yeni görünür

    senin dediginde öle bi bug cikiyo forumda kaldigin sürede atilan mesajlar eski sayilir...
    giristen sonrasini baz al derim ben öle bi deniyim
  • quote:

    Orjinalden alıntı: leonheart

    Bildiğim kadarıyla forumlarda böyle bir olay yok. Hiç görmedim. Yani sadece mesajların tarihi gösterilir, kullanıcının o mesajı okuyup okumadığı gösterilmez.

    Ama illa ki böyle bir şey yapılmak istenirse bir okundu/okunmadı flagı kullanmak gerekir. Mesela o kullanıcıya ait okunan mesajlar tablosu oluşturulur ve kullanıcının görüntülediği her mesaj bu tabloya kaydedilir.

    Düşünerek de anlaşılabileceği gibi böyle bir sistem -forumlarda- mesaj tabanlı olarak çalışamaz. Çünkü insanın ekranın nerelerini okuduğunu tespit eden bir teknoloji yaygın değil henüz. Bu yüzden kullanıcının o anda görüntülemekte olduğu sayfadaki tüm mesajlar adı geçen table'a kaydedilir. Ve bir daha ki girişinde kullanıcı bir sayfaya girdiğinde ordaki mesajlar tablodakilerle karşılaştırılıp okunmamış olanlar işaretlenir.

    Ama bir forum sistemi içerisinde böyle bir yapının ya çok zor ya da çok kullanışsız olacağı kanaatindeyim.


    aslında var burada kullanılıyır freede nin dediği gibi. bahsettiğiniz çözüm aslında uygundur. ama her mesaj için bunu yapacak olursanız ve eski mesajların orada kalacağını düşünecek olursak bu epey bir sorun yaratacakdır. tabii yığın için belirli bir süre sonra temizlerim derseniz bu sefer verileri sildiğiniz için konuya atılan eski mesajlar okunmadı olarak gözükecektir...

    ama forum yapısını şu şekilde düşünelim;

     
    a - forum kategorisi
    b - forum isimleri
    c - forum içerisinde açılan konu
    d - konuya verilen cevap mesajları


    şimdi forum table yapısı hakkında biraz bilgi vereyim. yukarıdaki tüm verilen tek bir table da toplanıyor. sıralama için bir tane sıralama fieldı ekliyorsunuz

     
    a - forum kategorisi 1
    b - forum isimleri 2
    c - forum içerisinde açılan konu 3
    d - konuya verilen cevap mesajları 4


    okunup/okunmadı olayını gerçekleştireceğimiz kısım c olan 3. seviyedir. yani açılan konular. birden fazla kategori, forum, konu ve mesaj olacağı için hangi mesaj hangi konuya, hangi konu hangi foruma ait bunu ayırt etmemiz gerekir. birden fazla kırılım olduğu için bir bağ oluşturmamız gerekir. bağ yapısıda aşağıdadır.

     
    oto.number alan adı seviye bağ
    17 a - forum kategorisi 1 (1. seviye bağı yoktur.)
    25 b - forum isimleri 2 17, (1. seviyeye aittir)
    28 c - forum içerisinde açılan konu 3 17,25, (2. seviyeye aittir)
    36 d - konuya verilen cevap mesajları 4 17,25,28, (3. seviyeye aittir.)
    55 d - konuya verilen diğer cevap mesajı 4 17,25,28, (3. seviyeye aittir.)


    şimdi 28 id sine sahip konuyu açtınız. ve 36 id li mesajı görüntülediniz. o mesajı görüntülediğiniz an okundu table ına gider ve table a uye idnizi okudugunuz mesajın bagını (17,25,28,) ve mesajın id isini 36 alanlara yazdırırsınız. bir daha forum baglandınız da konuları listelediğiniz bir kontrol koyarsınız.

    yeni forum konusu okundu bilgisi:
    uye idsini alırsınız ve "c" nin bağını alır sonuna kendi id sini ekler (17,25,85, tarzı bir değer olur) ve okundu tableında ıkı secenegınde b olup olmadığına bakarsınız. yok ise okunmadı olarak işaretlersiniz. eğer ki var ise forum table ında select komutu ile like 17,25,85,% komutu ile o konuya ait mesajları açarsınız daha sonra move.last komutu ile son eklene konuya gidersiniz. bu mesajın id bagını ve uye id sini alır okundu table ına gidersiniz burada bag ve uye id ile alanı select ile açarsınız. daha sonra bir if komutu ile mesaj id sinin (oto.number) forumdakı son mesajın id ile aynı olup olmadıgına bakarsınız. aynı ise bu mesaj okunmustur. degilse okunmamıstır.

    daha sonra mesajı goruntulerseniz yıne bag ve uye id ile okundu tableında alanı acar yeni goruntulenen mesaj id sini buraya yazar e update ederseniz.

    bu şekilde ve bir konu için 100 mesajın yazıldıgını var sayarsak her mesaj için bir satur değilde her ana konu için bir satır kullanmış oluruz düşüncesindeyim.

    aynı zamanda bu şekilde son eklenme zaman verisi ile uğraşmış olmayız. öyleki tarihi var saati var. ayrı ayrı kıyaslamanız gerekecektir.


    aslında düşenecek olursa 2 den falza kırılım yapısı için bu yöntem tek bir table kullanılarak yapılan pratik bir çözümdür. kırılım örneği için

     
    1 ülkeler
    2 şehirler
    3 ilçeler


    verilebilir...

    sizce mantık doğrumudur? yada eksiklikleri nelerdir? (kafanız karışmış olabilirim) ama anladıkça bahsi geçen konunun forumdaki okundu/okunmadı olayının dışında bi de bağ yapısı ile çok kullnışlı bir bilgi olduğunu anlayacaksınızdır...



    < Bu mesaj bu kişi tarafından değiştirildi makurdoglu -- 23 Eylül 2004, 22:44:21 >




  • quote:

    Orjinalden alıntı: Freede

    leonheart nerde demissin misal burada kullaniliyor
    makurdoglu güzel bi konu dedigine göre son girisini baz alip ondan sonrakileri yeni die gösterirsin ciktiktan sonrakileri degil
    table ac bi tane "songiris" die sonra sayfada songiristen sonrakileri bold yap de misal burda öle onlar yeni görünür

    senin dediginde öle bi bug cikiyo forumda kaldigin sürede atilan mesajlar eski sayilir...
    giristen sonrasini baz al derim ben öle bi deniyim


    ewet dediğiniz gibi zaman belirterek yapılan çalışmalarda bug çıkacaktır. en basitinden sadec tarihi kullanırsanız bu sefer araya saat farklılıkları yansıyacaktır.




  • quote:

    Orjinalden alıntı: makurdogluamacımız siteden son çıkışımızdan itibaren gelen mesajları yeni olarak göstermek değil. o mantıkda necrozanın dediği doğruydu tarih olayı. amacımız siteden son çıkımızın öncesinde gelen ve görüntülemediğimiz mesajlar varsa çıkıp girdikten sonrada görüntülemediğimiz tüm mesajlarıda yeni (okunmamış) olarak göstermeye çalışıyoruz.

    örneği tekrarlıyorum...

    mesala 23.09.04, 18:48 de forumdan çıkış yaptım. ama buraya bırakılan bir mesaj var 23.09.04, 17:21 de bırakılmış ve ben okumamışım. yukarıdaki durumda foruma tekrar giriş yaptığımda o mesaj eski mesaj (okunmamış) olarak gözükecektir... tarih belki bir etken olabilir ama tam olarak bir çözüm olmuyor bize. bu durum için ne yapabiliriz? yani son girişimiz bizim için bir etken olmayacaktır. her girişimde okumadığım mesaj yeni mesaj olarak görüntülenmelidirler...

    bu arada herhangi bir forumu baz alarak birşey düşünmüyoruz. sıfırdan bir forum hazırladığımızı varsayalım ve böyle bir problemimiz var. amaç biraz düşünmeyi sağlamak ve progralama mantığını artırmak.
    Madem anlaşamadık soru sorarak anlamaya çalışayım.

    son çıkış anının nasıl (ne yöntemle) belirlendiğini varsayıyorsun?

    Normalde server ile ilişkimizi "tık"ladığımız zamana göre belirleriz. Yani çıkış butonuna tıklamazsan server seni son tıkladığın an'dan hatırlar.

    Başka bir soru da "okundu/okunmadı" ile ilgili. Bunu da tık'ladığın yada tık'lamadığın olarak algılıyorum, doğru mu?




  • Yalniz sanirim bahsedilen olayda bir konunun okunup okunmadigindan bahsediyoruz degil mi yani bir mesajin degil ?
    Son tikladigimiz ani baz alsak bile diyelim ki kullanici bir konunun içindeyken yeni bir mesaj atildi konuya. Bu durumda nasil belirleyebiliriz?
    Daha dogrusu tam anlamadigim bizim sorumuz ne ? Bir forum konusunda bizim en son girisimizden sonra yeni mesaj atilip atilmadigini mi belirlemeye calisiyoruz yoksa kullanicinin hic girmemis oldugu konulari mi belirlemeye calisiyoruz. Eger kullanici girse de girmese de yeni mesajlarin oldugu konular belirlenecekse kullanicinin hic girmedigi konular okunmamis mesajlarla dolu görünecektir. Oysa kullanici bu konuya hic girmemek istiyor olabilir.
    Ayrica burda var dediginiz olay tam olarak bizim bahsettigimiz olay mi?
  • quote:

    Orjinalden alıntı: makurdoglu
    ewet dediğiniz gibi zaman belirterek yapılan çalışmalarda bug çıkacaktır. en basitinden sadec tarihi kullanırsanız bu sefer araya saat farklılıkları yansıyacaktır.


    ya simdi adam online oluyo db de user bölümüne "giristarihi" ac sonra girdiginde "rs" le o zamani kayit et ondan sonra bide forum vede cevaplara "sonyazimtarihi" yap
    giristarihinden itibaren son yazilan konular vede cevaplar i bold yap
    sanirim uygun ben okula gidiyim bi bos kaliyim kendi forumumda denicem...
  • quote:

    Orjinalden alıntı: leonheart

    Yalniz sanirim bahsedilen olayda bir konunun okunup okunmadigindan bahsediyoruz degil mi yani bir mesajin degil ?
    Son tikladigimiz ani baz alsak bile diyelim ki kullanici bir konunun içindeyken yeni bir mesaj atildi konuya. Bu durumda nasil belirleyebiliriz?
    Daha dogrusu tam anlamadigim bizim sorumuz ne ? Bir forum konusunda bizim en son girisimizden sonra yeni mesaj atilip atilmadigini mi belirlemeye calisiyoruz yoksa kullanicinin hic girmemis oldugu konulari mi belirlemeye calisiyoruz. Eger kullanici girse de girmese de yeni mesajlarin oldugu konular belirlenecekse kullanicinin hic girmedigi konular okunmamis mesajlarla dolu görünecektir. Oysa kullanici bu konuya hic girmemek istiyor olabilir.
    Ayrica burda var dediginiz olay tam olarak bizim bahsettigimiz olay mi?


    zaten explorer bunu kendi belirliyor tiklanan linkleri bi style dosyasi acip renkleri degis
    buradan okunup okunmadigini belirleyebilirsiniz
    illada grafikle belirlicekseniz okundu okunmadi die o biraz daha karisik düsünmem lazim üstünde




  • quote:

    Orjinalden alıntı: makurdoglu
    aynı zamanda bu şekilde son eklenme zaman verisi ile uğraşmış olmayız. öyleki tarihi var saati var. ayrı ayrı kıyaslamanız gerekecektir.

    Hayır, gerekmez. tarih ve saati birlikte tutan değişken ve bunların karşılaştırılması yapılabiliyor.
  • quote:

    Orjinalden alıntı: gurol

    son çıkış anının nasıl (ne yöntemle) belirlendiğini varsayıyorsun?

    Normalde server ile ilişkimizi "tık"ladığımız zamana göre belirleriz. Yani çıkış butonuna tıklamazsan server seni son tıkladığın an'dan hatırlar.

    Başka bir soru da "okundu/okunmadı" ile ilgili. Bunu da tık'ladığın yada tık'lamadığın olarak algılıyorum, doğru mu?


    aslında son çıkış anını bulmamızın yolu nedir bilemiyorum. logout yaparsa sorun değil ama direk sayfayı kapatırsak son zamanı nasıl buluruz bilemiyorum. sonuç olarak adamın her hareketini izleyemiz en kötü ihtimalle giriş tarihini çıkış tarihi olarak belirleriz. bu da yağacağımız işde ne derece doğru olur bilmiyorum. ama sonuç olarak zaten "çıkış tarihi" mantığı çok doğru değil. unutalım çıkış tarihini...

    ewet. konuyu tıklayıp açtığımız zaman okundu oluyor. konuyu açmazsak okunmadı oluyor.

    dip not: konu ve mesaj iki ayrı durumdur karıştırmayalım.




  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.