Karalama Defteri - Giriş SZP.net 4.1 Beta  
Deliliğe Dair
Bugün bir deliyle karşılaştım "Abe bi cigara ver bea, bi cigara". Baktım adam samimi samimi sigara istiyor, kıvırmak yok, estek köstek yok, direk sigara istiyor; verdim. Bir teşekkür bile etmedi, yalakalanmadı, çekti gitti.

Kafama takıldı sonradan, etrafımdaki bir çok insana göre bu delide bir samimiyet var. Sözünde yalan yok, dosdoğru konuşuyor, nokta kadar menfaat için virgül gibi eğilmiyor. Adam gibi istediğini söylüyor. Amacını biliyor, gerekeni yapıyor, hedefine ulaşıyor.

Hakikaten deliler dünyadaki en dürüst insanlardır. Yalan söylemezler. Kendilerini olduklarından zengin, kültürlü, zeki, bilgili vs. göstermeye çalışmazlar. Yaltaklanmaz, yağ çekmezler.

Prensip sahibidirler, bildiklerinden vazgeçmezler.

Özgürdürler, kimse onlara ne yapacağını söyleyemez. İsterlerse yaparlar, istemezlerse yapmazlar. Canlarının istediği yerde gezerler. Kafaları bozulursa söver-sayarlar. İstedikleri gibi giyinirler, genelgeçer kaideleri iplemezler. Nezaket yahut şu bu gereği konuşmaz, dosdoğru bildiklerini okurlar.

Delilere ısınmaya başladım. Bişeyler var bu adamlarda. Yoksa bunlar veli mi?

ufukyayla 07.03.2005 13:14:11 Yorumlar [1]



VT de Kullanılan Alanı Bulmak

Örneğin bu sitede kullanılan site içi iletilerde (PM-ÖM) bir üyenin aldığı ve gönderdiği iletiler için kullandığı alanı hesaplatmak için aşağıdaki kodu kullandım. Burada verdiğim kod sadece alınan iletiler içindir. Diğerinide aynı mantıkla yazmak zor değil zaten.

Function IletiKullanilanAlanGelen()
 Dim RsF, SqlF, xS
 
 SqlF="select konu, metin from ileti_ileti where (alici='" & Session("kod") & "' and asil=false)"
 Set RsF=Server.CreateObject("ADODB.Recordset")
 RsF.Open SqlF, Conn, adOpenStatic, adLockReadOnly, adCmdText
 
 If RsF.Bof=False And RsF.Eof=False Then
  xS=RsF.GetString(,,"x","x")
 Else
  xS=""
 End If
  
 IletiKullanilanAlanGelen=Len(xS)-(RsF.RecordCount*2)
 
 RsF.Close
 Set RsF=Nothing
End Function

Alıcısı aktif üye [Session("kod")] olan iletilerden silinmemiş olanlarının sadece konu ve metin alanlarını seçtirdim. Bu alanlardaki bütün veriyi GetString ile xS adındaki bir değişkene atadım. Bu değişkenin boyutu üyenin gelen iletiler için kullandığı alandır. GetString yaparken hata vermesin diye araya "x" koyduğumdan xS değişkenine kayıt sayısının iki katı kadar "x" ekleneceğinden bunlarıda çıkardım. Çıkarmasakta olurdu, çünkü iletiler için kullanılan alan aslında bu bulduğumuz değerden fazladır.

Bir ileti için, gönderici, alıcı, tarih, okundu bilgisi ve ileti numarası gibi alanlarda kullanılıyor. Bunları göz ardı ettim. Eğer gözardı etmek istemesem select ifadesine bu alanlardan text türünde olanların adlarınıda yazardım. alıcı, gonderici gibi. Tabii o zaman "x" lerin sayısıda artardı. Son olarak bulduğum değere her ileti için tarih alanı 4 byte kullandığından (iletisayısı x 4) eklerdim. Ayrıca ino için integer olduğundan ve 4 byte kullandığından (iletisayısı x 4) eklerdim. Okundu, asil ve gsil alanları true/false olduklarından bunları eklemezdim. Tabii bu kadarı işi abartmak olacağından yapmadım.

Hamiş; konu ve metin alanları unicode sıkıştırmalıdır. Yani harf başına 1 byte kullanır. Aksi halde bulunan değeri 2 ile çarpmak gerekir.

İleti tablosu

Alan Tipi Alan Adı
counter ino
text(50) alici
text(50) gonderici
datetime zaman
bit okundu
longtext konu
longtext metin
bit gsil
bit asil



ufukyayla 06.03.2005 20:29:07 Yorumlar [0]



Yalnızlık Şarkısı
İnternette başıboş gezen paketler,
Sitemde sizin kadar yalnızım,
Bir blog olsa belki duyulur sesim,
Ben yalnızım, ben yalnızım, yalnızım.

Scriptim bu, böyle yazılmış kodum,
Hiç kimsenin tasarımında yoktur gözüm,
Bir blog kodu yazar ki'bördüm,
Ben yalnızım, ben yalnızım, yalnızım.

Girmediğim site kalmadı dünyada,
Hangi foruma girdimse kaldı izim,
ASP'ye geçer, kendime geçmez sözüm,
Ben yalnızım, ben yalnızım, yalnızım.

ufukyayla 05.03.2005 15:46:11 Yorumlar [1]



Caching Meselesi
Eğer bir yerde göstereceğiniz veri çok yerden derleniyorsa ve bir çok bağlantı açıp-kapatmak zorunda kalıyorsanız bütün bu verileri önceden derleyip bir yerde saklayıp, sonra her istek geldiğinde oradan okuyup yollamak sitenizi hızlandırabilir. Mesela işbu Karalama Defterinin sağ tarafındaki sabit kısmın oluşturulması için Bölümleri, Son Karalamaları, Son Yorumları ve vs. yi listelemek için tam 4 sorulamanın ve bunu  yanısıra bir sürü kod satırının çalışması gerekiyor. Her istekte bunu yapmak iyi bir fikir değil. Ben bütün bu listele işlemlerinin sonucusu bir tablodaki bir LongText alanda saklıyorum. Tabii her değişiklikte (Bölüm ekle-sil, Karalama ekle-sil, Yorum ekle-sil vs.) bu alanı güncelliyorum. Karalama Defterini göstermek üzere bir istek gelince bu sağdaki sabit kısmı göstermek için sadece LongText alandaki veriyi yolluyorum. Tabii bu iş için bir tablodaki LongText alanı değilde, bir text dosyasını da kullanabilirdim. Ancak verileri text dosyalarında tutmaktan hoşlanmıyorum. Hem bir bağlantı kurmulmuş ve açıkken neden fazladan FSO nesnesi oluşturayım.

Bu sebeplerden dolayı HTML formatındaki veriyi bir LongText alanda tutmak bana iyi bir fikir gibi görünmüştü ve öyle yapmıştım.

Sonra bu iş için XML kullanmayı düşündüm. Ama sunucuda parsing işi çok zaman alıyor ve yavaş. Yada bu XML dosyasını hiç parsing yapmadan XSL ile gösterilmek üzere istemciye yollayabilirdim. Bu durumda XML dosyasını istemci yorumlamak ve XSL'e göre biçimlendirerek göstermek zorunda kalırdı. Mesele şu ki bütün istemcilerin (browser) XSL dosyalarını yorumlayabileceklerinden veya aynı şekilde yorumlayacaklarından emin değilim. Dahası (aslında 'Doğrusu' demeliydim) XML teknolojisi konusunda bilgi eksikliğim var.

ufukyayla 03.03.2005 10:22:04 Yorumlar [0]



SQL Cümlecikleri

MySQL konusunu epeyce bir araştırdım. Sonuç olarak henüz ASP, VB gibi Microsoft teknolojilerinde kullanılmak üzere hazır olmadığını gördüm. ADO nesne modeline kesinlikle uymuyor. Recordset kullanımı çok sorunlu. Recordset sadece veri okumada kullanılabiliyor, diğer durumlar fiyasko. .Update olmuyor. ANSI SQL'e bile uyumlu değil. Avantaj olarak sadece limit anahtar kelimesinin kullanım biçimi iyi. Bu yüzden MySQL ile vaktimi harcamamaya karar verdim.

Son birkaç aydır sıkça ziyaret ettiğim bir sitede MsSQL kullanmışlar. Anlık ziyaretçi sayıları 10'u geçmediği halde adamların sitesi korkunç yavaş. Aynı site optimize edilse üstelik Access kullanılsa bundan daha hızlı olur. Birçok kişi sorgularda * kullanmaya, her veri için bağlantı açmaya alışkındır. Site yavaşlayınca önce Access'den, sonra bir SQL sunucusuna geçilip SQL sunucusundan şikayet edilir. Anlık ziyaretçi sayısı 10 civarında olan bir sitede Access'in altından kalkamayacağı bir durum oluşmaz. Eğer oluşuyorsa sorun koddadır. Mesele kesinlikle optimizasyon meselesidir. Veri eklemede Recordset (.AddNew) yerine INSERT INTO kullanılması pek fayda sağlamıyor. Zaten siteler genelde ekleme değil okuma yapar. Yani bir kere eklenen veri defalarca okunur. Dar boğaz eklemede değil okumadadır. Bence ekleme için açılan Recordset'i 0 kayıt döndürecek şekilde (where kno=-1 gibi) açmak yeterlidir. Özellikle çoğu programcının INSERT INTO ile VT'ye veri eklerken ziyaretçinin ' " % ? _ * # ; vs. girmiş olabileceğini unutmaları ilginç sorunlara sebep oluyor. UPDATE kullanımında da aynı hatalar yapılıyor. Birçok programcının JOIN kullanmayı bilmediğini, bu yüzden basit bir iş için 2-3 kayıt kümesi açtıklarını ve hatta .Find ile (en kötüsü döngü ile) işi kotarmaya çalıştıklarını incelediğim çoğu örnekte gördüm. Hatta tek sorgu kullansalar bile elde ettikleri veriyi gruplandırmadıklarından işi koda havale etmek kolaycılığına da rastlıyorum. Bu konuda bir otorite değilim, iyi bir programcı da sayılmam, ama burada saydığım hataların hepsini defalarca yapmış biri olarak hatalarla aramdaki ünsiyet gereği "Kimse hataları benim kadar iyi tanıyamaz" diyebilirim. Bu sebeple bu karalamanın yorumlarında bazı SQL sorgu örnekleri vereceğim. Verdiğim örnekler bu sitede (özellikle işbu karalama defterinde) kullanılanlar arasından seçilecek. Umarım yararı olur. Yoruma açık tabii.



ufukyayla 01.03.2005 13:03:00 Yorumlar [13]



Sayfalar : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [17] 18 19 20 21

Blog - ASP.NET!VB
  Karalama Defteri
 Giriş
 Bölümler
 Son Yorumlar
 
  Bölümler
 Deli Gömleği
 Eşeryakoli
 Makaleler
 Projeler
 UfukSZP Dağıtımı
 ASP.NET Maceraları
 
  Son Karalamalar
 Foruma üye girince oluşan ...
 Taşındık
 SoulTips Gibi Birşey
 Ya Nasip
 Ulan Ubuntu
 El Yapımı Projeksiyon
 Ne İstiyor Bu Üyeler
 Sınıflarda Kalıtım (Inheri...
 Sadeleştirme Şart
 South Park
 
  Son Yorumlananlar
 Ya Nasip
 Ben Ziraat Mühendisiyim
 UfukSZP Dağıtımını Kullananl...
 Grup Hepsi
 Ne İstiyor Bu Üyeler
 Ziyaretçi Defteri
 Powered By Access
 Ulan Ubuntu
 Network A.K.T. (Arada Kafamı...
 Sınıf, Nesne, Nesneye Yöneli...
 
  Güzel İnsanlar
 Fındık Kabuğu
 Evren AYAN
 Halil TUNÇ
 Can HANHAN
 Mehmet TURAC
 Bloglar Alemi
 
  Şu Anda Bağlılar
 Misafir, Misafir, Misafir, Misafir, Misafir, Misafir, Misafir, Misafir, Misafir, Misafir 
 
  Ordan Burdan
  
 
 
 
 
 
 
 
 
 

Bu sayfa 0,031 saniyede derlendi.





Bu sitede çalışan bütün ASP.net ve JavaScript kodları orjinaldir ve sıfırdan yazılmıştır.
Site yaygın bütün tarayıcılarla (IE, Firefox vs.) uyumludur.
Bu sitede kullanılan SZP.net 4.1 Beta altyapısı MS Access, MySQL Server ve MS-SQL Server ile çalışabilmektedir.

Tasarım & Kodlama
Ufuk YAYLA