IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  odeaweb

>
+
Etiketlenen Kullanıcılar

13Beğeni(ler)
  • 1 Post By saywhat
  • 4 Post By saywhat
  • 4 Post By saywhat
  • 1 Post By Sephiroth
  • 3 Post By saywhat

 
 
LinkBack Seçenekler Stil
Prev önceki Mesaj   sonraki Mesaj Next
Alt 03 Ağustos 2014, 00:40   #5
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: kanal girişleri kayıt/arama




uzun bir aradan sonra ,bu kodu hatırlayıp geçen hafta "onarmaya" başladım... onarmaya dememin nedeni,kodun en mühim sorunu yapılan aramalarda ; misal 5 arama çıktısına ayarladıysanız ,ama aradığınız kişi/kriterin 5'ten fazla girdisi/kaydı var ise, dosyayı hep ilk satırdan EOF ,yani sona doğru okuduğu için ,en eski 5 kaydı gösteriyordu. ki bu durumda 5'ten fazla kaydı olan aramalarda hep aynı 5 çıktıyı veriyordu...

geçen haftaiçi aklıma geldi bi el atayım bakalım bir yolunu bulabilecekmiyim dedimdi, ancak ne denesem bir türlü geriye doğru arama/okutma olmadıydı.

gugıl'da oraya buraya dalmama bir dolu döküman tırmalamama rağmen ,şuradaki gibi -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] soruya verilen cevaplarda da belirtildiği gibi ,Tcl kaynak kodları hep ileriye doğru okumak üzerine bunu kısıtlamış.Tcl'nin kaynak kodlarında (ki C ile yazılmıştır Tcl kaynak kodları) oynayıp değişmeyi önerenlere dahi rastladım...

olmadı Tcl destek kanalında sordum bunun bir yolu var mıdır ,dosyayı tersten,yani son satırdan başlayıp ilk satıra doğru ,yeni girdiden eskiye doğru okumanın diye,yine cevap alamadım,cevap diye önerilen/ler de bir işe yaramadıydı...

aklıma okutulan satırlardaki tarih saat girdilerini regexp yada scan ile yakalatıp,birbirleriyle eşleştirip, lsort -decreasing yani terse doğru sıralatmayla yapabilirmiyim acaba diye tırmalayıp durdum ki ...cık oda olmadıydı...

taki dün geceye kadar,,, tcllib paketlerinin dökümanları arasında dolaşırken aradığımı buluverdim ,,,sonunda....


Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.



Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


bu kanal içi girdileri/user kayıtları için :

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
setudef flag userec package require struct::list bind join - * rname:join bind pub nm|oa !ara user:search proc rname:join {nick uhost hand chan} { set userecfile "scripts/[string range $chan 1 end]-users.txt" set ::rnick $nick ;set ::rhost $uhost ;set ::rchan $chan ;set ::userecfile $userecfile if {![channel get $chan userec]} { return 0 } if {![string match -nocase $::botnick $nick] && [onchan $nick $chan]} { putquick "whois $nick $nick" bind raw - 311 rname:check } return 0 } proc rname:check {from key text} { set rname [join [string map -nocase {: ""} [lrange [split $text] 5 end]]] set nick $::rnick ;set uhost $::rhost ;set chan $::rchan ;set userecfile $::userecfile set fp [open $userecfile a+] set stamp [clock format [clock seconds] -format "\002Tarih:\002\00312 %d.%B.%Y %A\003 - \002Saat:\002\00312 %H:%M:%S\003" -locale tr_TR] set host [lindex [split $uhost @] 1]; set ident [lindex [split $uhost @] 0] set data "\00300,04JOIN\003 \00312$stamp\003 | \002Nick:\002 \00311$nick\003 | \002Ident:\002 \00311$ident\003 \ | \002Host:\002 \00311$host\003 | \002Realname:\002 \00311$rname\003 | \002Kanal:\002 \00309$chan\003" puts $fp "$data" close $fp catch {unbind raw - 311 rname:check} return 0 } proc user:search {nick uhost hand chan text} { if {![channel get $chan userec]} { return 0;} if {[llength $text] eq "0"} { puthelp "notice $nick :Kullanımı:\002 $::lastbind <aranacak>\002"; return 0;} set userecfile "scripts/[string range $chan 1 end]-users.txt" set text *[string map {" " *} $text]* putserv "notice $nick :\002$text\002 aranıyor..." set i 0 set fp [open $userecfile r] set lines [split [read -nonewline $fp] "\n"] foreach line [struct::list reverse $lines] { if {[string match -nocase $text $line]} { if {$i == 5} break puthelp "notice $nick :$line" incr i } } close $fp if {$i} { putquick "notice $nick :gösterilen arama sonucu : \002$i \002 [expr {$i == 1?"":"adettir."}]..." } else { putserv "notice $nick :\002aramayla eşleşen kayıt bulunamadı...\002" return 0 } } putlog "Ok..."

bu ise sunucu girişlerini kaydedip ,arama yapılabilmesi için:
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
setudef flag userconnect package require struct::list bind raw - NOTICE rname_connect bind pub nm|oa !ara search_user proc rname_connect {from key text} { if {[string match -nocase *!*@* $from]} { return 0 } if {[regexp -nocase -- {Client connecting on port (\d+): (.*) \(([^@]+)@(\S+)\) \[(.*)\]} $text -> port nick ident host rname] && \ ![string match -nocase $::botnick $nick]} { set userecfile "scripts/connecting-users.txt" set fp [open $userecfile a+] set stamp [clock format [clock seconds] -format "\002Tarih:\002\00312 %d.%B.%Y %A\003 - \002Saat:\002\00312 %H:%M:%S\003" -locale tr_TR] set data "\00300,04Connected\003 \00312$stamp\003 | \002Nick:\002 \00311$nick\003 | \002Ident:\002 \00311$ident\003 \ | \002Host:\002 \00311$host\003 | \002Realname:\002 \00311$rname\003 | \002Port:\002 \00309$port\003" puts $fp "$data" close $fp } return 0 } proc search_user {nick uhost hand chan text} { if {![channel get $chan userconnect]} { return 0 } if {[llength $text] eq "0"} { puthelp "notice $nick :Kullanımı:\002 $::lastbind <aranacak>\002"; return 0;} set userecfile "scripts/connecting-users.txt" set text *[string map {" " *} $text]* putserv "notice $nick :\002$text\002 aranıyor..." set i 0 set fp [open $userecfile r] set lines [split [read -nonewline $fp] "\n"] foreach line [struct::list reverse $lines] { if {[string match -nocase $text $line]} { if {$i == 5} break puthelp "notice $nick :$line" incr i } } close $fp if {$i} { putquick "notice $nick :gösterilen arama sonucu : \002$i \002 [expr {$i == 1?"":"adettir."}]..." } else { putserv "notice $nick :\002aramayla eşleşen kayıt bulunamadı...\002" return 0 } } putlog "Ok..."

her ikisi içinde tcllib struct paketi gereklidir.

 
Alıntı ile Cevapla

 

Etiketler
eggdrop, giriş kayıt, girişleri, kanal, kayıt arama, kayıt or arama, tcl


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Arama Motoruna Kayit Fiyatı,Arama Motorlarına Kayıt PauL Alternatif Arama Motorları 0 25 Ekim 2011 14:58
Tüm Arama Motorlarına Kayıt Etme PauL Alternatif Arama Motorları 0 25 Ekim 2011 14:43
Bir tık ile 12 arama motoruna kayıt! fatal Alternatif Arama Motorları 1 25 Eylül 2011 20:43
Tüm Arama Motorlarına Kayıt PauL Diğer Dizinler 0 14 Aralık 2010 15:30