20 Kasım 2005, 01:29 | #1 | |
Guest
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
| Hash Tables Yazar : Ben tabii ki Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Kalite kontrol uzmanı ve onaylayan (:p) : Alience Öncelikle hash table nedir onu açyklamaya çalışayım, Hash table'lar bildiğiniz ini belgesine veri kaydetme yöntemine benzer. Fakat hash işlemleri hafızada(ram) yapıldığı için hdd(hard disk) işlemlerine göre çok daha hızlıdır, ama komple bir scriptte aşırı derecede kullanılıp hafızayı doldurmaya başlarsak bu avantajıda ortadan kaldırırız. Table oluşturma /hmake: /hmake -s <tabloismi> <slot sayısı> Hash tablosu oluşturmak için komutumuz bu. Hash table slot ve değerlerden oluşur. Her slota istediğiniz kadar değer yerleştirebilirsiniz, fakat slot sayısını komutta önceden belirlemeniz gerekiyor. Yani 10 tane slot bile oluştursak, 1000 tane değer kaydetmemiz mümkün, çünkü slotlar sınırsız değer alabilirler. Fakat slot başına düşen değer sayısının az olması için slot sayısını fazla tutmak mIRC'i daha az kasar ve daha kısa sürede işlem yapmasını sağlar. Komuttaki -s anahtarı ise hash table'ın oluşup oluşmadığına dair bir bilgi vermesi içindir. Onu yazmadan da komut çalışır, fakat hash table oluştu mu oluşmadı mı diye merakta kalmak istemiyorsanız -s koymalısınız. Örneğin: /hmake -s asd 10 komutunu yazdığınızda: * Made hash table 'asd' (10) diye bir uyarı gelir, bu da işlem başarıyla tamamlandı demektir. -s koymazsanız bu uyarı gelmez. Table silme /hfree: Oluşturduğumuz tabloyu silmek için ise /hfree komutunu kullanacağız. Komutun kullanımı şu şekilde: /hfree -sw <tabloismi> Buradaki s parametresinin görevi aynı, w ise wildcard (* ve ? gibi işaretler) kullanmamıza olanak sağlıyor. Örneğin a.1 a.2 a.3 diye 3 tane tablomuz var ve bunların hepsini bir kerede silmek istiyoruz. O halde: /hfree -sw a.* komutunu kullanırsak, a. ile başlayan tüm tablolar silinir. Sadece belirli bir tabloyu silmek için: /hfree -s a.1 Table'ye ekleme /hadd: /hadd -smzuN <tabloismi> <slot> değer Bu komutu tabloya değer eklemek için kullanıyoruz. Komuttaki "smzuN" parametrelerinin görevleri ise şöyle: -s yukarıda da bahsettiğim gibi işlemin tamamlanıp tamamlanmadığı hakkında uyarı verir. -m eğer isim yerine yazdığımız tablo daha önce oluşturulmadıysa şimdi oluşturur. -u değerin kaç saniye boyunca geçerli olacağını belirtir, ve yanındaki N de saniye yerine yazılır. Örneğin -u10 yazdığımızda 10 saniye sonra değer slottan silinir. -z değeri saniyede 1 değer küçülterek 0'a kadar indirir ve 0 olduğunda değeri siler. Yani bir nevi inc komutundaki -c parametresini burada bu şekilde kullanıyoruz. Onun dışında saniyelik değil de manual olarak düşürmek veya yükseltmek için /hinc ve /hdec komutlarını kullanabilirsiniz. inc ve dec komutlarından pek bir farkı yok. Örneğin: Table'de bir değeri artırma /hinc: /hinc <tabloismi> <değer> <arttırma miktarı> /hinc -s asd x (burada asd tablosundaki x'i sadece 1 artırır) veya /hinc -s asd x 15 (asd tablosundaki x değerini 15 artırır) * Inc item 'x' in hash table 'asd' Bunun dışındaki parametreler için help dosyasına bakabilirsiniz. Fakat yeni başlayanlar için şimdilik öğrenmemelerini tavsiye ederim <img src="images/smilies/smile.gif" border="0" alt="" title="Smile" class="inlineimg" />, ayrıca -s parametresini yukarıda da belirtilmiş olduğu gibi yazmanıza gerek yok ama şu anda öğrenme aşamasında olduğunuz için ne yapıldığını görmeniz açısından yazılmıştır. Table'de bir değeri azaltma /hdec:[/b] /hinc in aynısı tek farkı artırmıyor azaltıyor. örnek: /hdec -s asd x 3 (asd tablosundaki x değerini 3 azaltır) Table'den değer silmek /hdel: /hdel -sw <tabloismi> <değer> Buradaki w parametresi yine wildcard kullandığınızı belirtiyor. Eğer belirli bir değeri silecekseniz: /hdel -s tablo1 deger1 Eğer deger ile başlayan 10 tane değeriniz varsa ve hepsini birlikte silmek istiyorsanız: /hdel -sw tablo1 deger* komutunu kullanacaksınız. Bu komut ile deger1 deger2 deger3 degeraaaddd gibi bütün değerler silinir. Şimdi oluşturduğumuz hash tablolarını kaydetmeye ve yüklemeye gelelim. Eğer oluşturduğunuz tabloyu kaydetmezseniz mIRC kapandığında tablo silinir. Hatta tablonuzu kaydedip başkasına yollayıp hload komutu ile onun da kullanmasını sağlayabilirsiniz. Table'yi hdd'den yükleme /hload: Bir hash oluşturduk çokta iyi gidiyoruz ama bu meret ini dosyası gibi kaydolmuyor mirc kapanınca gidiyor diyorsanız /hload, /hsave kullanmanız gerekli, yok ben kendim $hget ile değerleri bulup kaydettirecem diyorsanız oda mümkün ama hem zaman alır hemde uğraştırır sizi. /hload -sni <tabloismi> <dosyaismi> Table'yi hdd'ye kaydetme /hsave: /hsave -snioau <tabloismi> <dosyaismi> /hload, /hsave parametreleri: -s yine uyarılar için kullanılıyor. -n sadece tablodaki slotları kaydeder/yükler, değerleri kaydetmez/yüklemez. -i kaydedeceğimiz/yükleyeceğimiz dosyanın ini dosyası olduğunu belirtir.. -o kaydedeceğiniz dosya varsa üstüne yazmak istediğinizi belirtir. -a kaydedeceğiniz dosya var ise dosyanın üstüne eklemek istediğinizi belirtir. -u ise tabloya eklerken belirli bir süre sonra silinecek (-uN) değerlerle birlikte dosyaya kaydedilmesini sağlar. Normalde kaydettiğinizde -uN ile eklediğiniz değerler süresi dolmuş olsa da olmasa da dosyaya kaydedilmez. Table okuma $hget(): $hget(isim/numara) Eğer varsa ismini veya sıra numarasını yazdığımız tablonun ismini verir. Bununla tablonun olup olmadığını kontrol ettiririz. Örneğin: $hget(1) ilk tablonun ismini verir, eğer $hget(0) yazar iseniz kaçtane hash tablosu olduğunu görürsünüz. Bununla birlikte .size parametresini kullanarak tablonun kaç slottan oluştuğunu öğrenebiliriz. Örneğin: /hmake tablo1 10 komutu ile bir tablo oluşturduk. $hget(1) = tablo1 $hget(1).size = 10 cevaplarını verir. Eğer tablo yok ise: $hget(1) = $null $hget(1).size = 0 cevaplarını verir. Table'deki değerleri okutma $hget(Table,değer): $hget(isim/numara,değer) Bu identifier ise verdiğiniz numaralı sıradaki tablodaki değerin karşılığını verir. Örneğin: /hmake tablo1 10 10 slotlu tablo1 adında bir tablo oluşturduk. /hadd -u10 tablo1 kanallar #a #b #c Kanallar slotu ekledik ve buna değer olarak #a #b #c verdik, ve bu değerlerin 10 saniye sonra silinmesini istedik. bu durumda 2 seçeneğimiz var. Eğer tablo ve slot numaralarını biliyorsak bu şekilde: $hget(1,1).data = #a #b #c eğer bilmiyorsak bu şekilde: $hget(tablo1,kanallar) = #a #b #c cevaplarını alabiliriz. .data kullanmak için mutlaka slot numarasını bilmemiz gerekir. .item ise slot numarasının kaç olduğunu öğrenmek için kullanılır. Örneğin tek slotunuz varsa ve bunun adı kanallar ise: $hget(tablo1,kanallar).item = 1 cevabını verir. .unset parametresi ise değerlerin ne zaman silineceğini, yani -uN ile belirttiğimiz sürenin bitmesine ne kadar kaldığını görmemize yarar. 10 saniyelik oluşturduğumuz bu tabloda uygularsak: $hget(tablo1,kanallar).unset = 10 olmayan bir tablo üzerinde denersek veya süre belirtilmemiş bir tablo üzerinde denersek 0 cevabını alırız. Table'de arama yapmak $hfind(): $hget(isim/numara,aranacak yazı,kaçıncı item,parametre) parametre yerine nwWrR yazabilirsiniz ama benim tavsiyem bir şey yazmamanız böylece mirc default olarak n görecektir buda normal yazı karşılaştırmasıdır. Alience'nin notu: Hash table'lerinin tümünü görmek için aşağıdaki kodu aliasese ekleyin Kod: Kodu kopyalamak için üzerine çift tıklayın!
ve ekledikten sonra komut olarak /hlist yazarsanız hash listesini görürsünüz /hlist -i ekstra boyutu: 10 kullanılan: 1 gibisinden açıklama içindir, kodu sizi bilgilendirmesi açısından yazdım istediğiniz gibi değiştirebilirsiniz. | |
|
20 Kasım 2005, 01:35 | #2 |
Guest
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
| Ellerine Sağlık , çok güzel bir döküman olmuş. |
|
23 Şubat 2006, 18:40 | #3 |
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0) | Tebrik ederim dokuman cok yararli okurken mest oldum. Kisilerin kendilerini gelistirmeleri icin yeterli. ama kaliplara cok alisik insanlariz biz gerekli degeri sorgulamak icin hep ogrendiklerimiz bazen asamiyoruz bu yuzden aciklamalarin tamamini ogrenmek gerekiyor ornegin aciklanmamis olan hmatch aciklama yapip ukalalik yapmak yerine konu sahibinin bu konuda da yeterli bilgisi olduguna inanip kendisinin bu konuda aciklama yapmasini rica ederim. |
|
23 Şubat 2006, 18:58 | #5 |
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0) | Konu ile alakası olan kişilerden biri olarak: $hmatch(tablo ismi,karşılaştırılacak slot stringi,[0-x]) [0-x] : 0 yazılırsa kaçtane değer bulduğunu belirtir örnek: /hmake test 10 /hadd test deneme_1 vs vs //echo - $hmatch(test,deneme_1) yazarsak ilk uyan slot ismini verir //echo - $hmatch(test,deneme_1,0) yazarsak kaç tane uygun değer buldu ise onun sırasını verir değerleride 0 yerine 1 2 .. yazarak alabiliriz şimdi zaten deneme_1 var ne gereği var 0 a derseniz: yukardaki örneğe ek olarak /hadd test deneme_2 bu da 2 şimdi deneme_ ile başlayan 2 tane slotumuz var bunları //echo - $hmatch(test,deneme_?,0) yazarak alabiliriz Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. ? yerine * da kullanabiliriz * birden çok karakteri ? bir karakteri temsil eder. öğrendiklerimizi asamamak ile ilgisi yok sanırım hashı kodu yazan oluşturduğu için istediği değeri almasında genelde hmatch in kullanılabilirliği olmuyor Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. birde $hfind in kullanımı da ? * lar hariç hemen hemen aynı Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. |
|
Etiketler |
hash, mirc, mirc download, mirc indir, tables |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| |
Benzer Konular | ||||
Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
Debug && Hash Tables - Badnick,Reklam,Küfür Korumaları | Doktrin | mIRC Scripting Hazır Kodlar | 10 | 26 Eylül 2017 17:23 |
Adele - Turning Tables | Blood | Yabancı Şarkı Sözleri | 0 | 01 Ekim 2014 15:38 |
Hash Tables | RedLine | mIRC Scripting Sorunları | 1 | 18 Şubat 2008 19:58 |
hash table mi? | leet_haxor | mIRC Scripting Sorunları | 2 | 05 Mayıs 2005 14:29 |