bildirgec.org

warnsdorff hakkında tüm yazılar

ikilik düzen ve veritabanı taktikleri

admin | 28 November 2008 10:31

bir çeşit denormalizasyon konusu anlatmak istiyorum aslında, belkide programlamaya giriş derslerinde – yada kitaplarında – genellikle üstü kapalı anlatılan bitwise işlemler.

muhtemelen ilk programlama kitabınızı aldığınızda, ilk sayfalarda anlatılan işlemler bit operatörleridir, 1 byte in 8 bit ettiği, ve

1
2
1 & 0 = 0 # 1 ve 1 = 1
1 | 0 = 1 # 1 veya 1 = 1

Memcache veya Memcached

admin | 22 November 2008 20:20

Memcache Danga.com tarafından livejournal için üretilmiş ama ciddi bir soruna çözüm olduğu için çok hızlı şekilde yayılmış bir program ve library’dir. Yapısındaki hız farkı genel olarak libevent aracılığı ile linux altında epoll kullanımından ve memory’i pahalı olan malloc ve free’lerden uzak şekilde slab allocation mantığında kullanmasından gelmektedir. Network üstünden çalışabiliyor olduğu için bir çok serverın aynı cache sistemini kullanabiliyor hale gelmesini sağlamış ve facebook gibi büyük projelerin düşük server maliyetleri ile ayakta kalmasını sağlar hale gelmiştir.

Cache, Proxy, Web üstünde yüksek verim, PHP, Memcache, APC, Eaccelerator, File Cache

admin | 22 November 2008 19:55

Webde yüksek verim nedir ve genel olarak kullanılan cache(ön bellek) sistemleri nelerdir biraz bakalım. Cache dediğimiz konu aslında temel olarak webdeki program, web server veya database’in üstüne düşen yükün azaltılarak kullanıcıya daha hızlı şekilde verilmesi esasına dayanır.

Yazıyı normalde üç veya dört parçaya bölmeyi düşünmeme rağmen konunun bütünlüğünün bozulmaması için çok fazla bölmemek gerektiğini düşünüyorum. Basitten gelişmiş anlatıma doğru giderek, sadece memcache konusunun detayı fazla olduğu için memcache konusunu farklı bir başlık altında anlattım. Bu yazıda ise biraz daha özet olarak memcache’den bahsedeceğim. Yazıda her dile uygun olabilmesi için, code örnekleri yerine genel olarak yapıyı sorunları ve cözümleri anlatmaya çalıştım. Genede PHP ağırlıklı bir yazı olduğunuda kabul etmek gerekiyor.

spam e-posta koruması

admin | 22 November 2008 17:00

e-posta adresimizi web sitemize yazar yazmaz yükselen bir grafikle posta kutumuza spam postalar yağıyor. e-posta adresimizi resme çevirip sitemize koyarsak bu seferde ziyaretçiler yada site sahibi bu durumdan hoşlamıyor.

e-posta adreslerimizi bir php sayfanın içine yazabiliriz;
adresler.php

1
2
3
4
5
<?php
$ali = "[email protected]";
$veli = "[email protected]";
$kirdokuzelli = "[email protected]";
?>

güvenlik için bu kadar mı kasılır?

admin | 20 November 2008 10:40

online oyunları hilelerden koruma amaçlı bir güvenlik yazılımı yapıyorum. neyse şöyle böyle istediğim korumaları sağladım, fakat bi baktım kendi programımı koruyamamışım. adamlar bir şekilde çalışmasını durdurup hile yapıyorlarmış.

sonra ürettiğim çözüme gülsem de işe yaradı 🙂
çözüm mü?

veritabanı programlayamama yazıları (nested setler)

admin | 18 November 2008 09:46

veritabanı programlayamama konusunda en önemli örneklerden biri, hiyerarşik datalar ve veritabanları. bahsetmek istediğim konu, iç içe geçmiş yorumlar, ağaç şeklindeki menüler vs. gibi basamaklı uygulamalar ve bunların datasının veritabanında saklanması. sırayla kullanılabilecek modelleri inceleyip, örnekle gidip daha sonra kaynakların ekonomik kullanımı konusuna geçelim.

örneğin şöyle bir sayfa oluşturmak istiyoruz :

1
2
3
4
5
6
7
8
yorumlar :
yorum 1
yorum 1 cevap
yorum 2
yorum 3
yorum 4
yorum 4 cevap
yorum 4 cevapa cevap

bunu yapmak için temelde 2 farklı veritabanı modeli kullanabilirsiniz, Adjacency List Model ve Nested Set Model ( çok üzgünüm bunların türkçe isimlerini bilemiyorum, ve bulamıyorum, umarım yorumlarda türkçe karşılıkları verilir, bende yazıyı güncellerim )

Apache mod_rewrite ile üşengeç seo

admin | 13 November 2008 21:05

Merhaba, internet siteleri para kazandırmaya başladığından beri, site sahipleri daha çok para kazanmak için daha çok ziyaretçi kazanmaya çalışıyor. Bunun en kolay yöntemi ise arama motorlarının huyuna gitmek.

Apache web sunucusunun özelliği olan mod_rewrite ile adres satırlarımızı kodlama dilinin değişkenlerinden arındırıp siteadı.com/yazi/Yazi_Basligi şeklinde yayınlayabiliyoruz. Tabi bunu yapmak için popüler olan yol regex değerleri ile enteresan bir htaccess dosyası oluşturmak. Örnek:

1
RewriteRule ^blog/([A-Za-z0-9_)(:!-',-]+)/?$ blog.php?yazi=$1 [L]

T-SQL : ‘Kayıt varsa güncelle, yoksa ekle’ durumu için iki farklı yöntem

admin | 13 November 2008 19:25

İlk Yöntem

Öncelikle update işlemi gerçekleştirilir, bu işlem sonucunda etkilenen kayıt sayısı kontrol edilir, eğer @@ROWCOUNT = 0 ise güncellenebilecek bir kayıt bulunmuyor demektir, bu durumda kayıt eklenir.

1
2
3
4
5
6
7
UPDATE Tablo1 SET Kolon1 = @Kolon1_Degeri WHERE
ID = @ID
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO Tablo1 (Kolon1)
VALUES (@Kolon1_Degeri)
END

Büyük siteler için php ile google sitemap yapımı

admin | 13 November 2008 15:00

Sitemap ya da diğer bir deyişle site haritaları, sitemizin google ve diğer arama motorlarına daha hızlı endekslenmesini sağlayan önemli faktörlerden biri.

Bir site haritası temel olarak sitemizin içindeki sayfaların bir listesini içeren bir tür xml dosyasıdır.

Sitemizin haritasını çıkarmak için, eğer sitemiz küçük veya orta ölçekteyse hazır araçlar kullanabiliriz. Bu araçlar genelde crawling mantığı ile çalışırlar. Fakat örneğin sitemizde en az 200.000 sayfa varsa, bu durumda kullandığımız hazır araçlar site haritası yapımında sadece zaman kaybına sebep olacaktır.

xaml ile dinamik kod çalıştırma

admin | 13 November 2008 13:30

kodaman.org yeni bir oluşum olduğu için ne kadar ilgileneni var bilemiyorum ama benim ilk yazım microsoft’un hem windows presentation foundation’da hem de silverlight’da ortak kullandığı xaml hakkında olacak.

xaml ile dinamik olarak herhangi bir dış kaynaktan penceremizin içerisine kod ekleyebilmemiz mümkün. bu ne işimize mi yarar? eğer programlarımızda değişen reklam alanlarına veya kullanıcı girdisine göre oluşacak static bir animasyondan fazlasına ihtiyacımız olduğunda bize yardımcı olur.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using Sys = System;
using SysIO = System.IO;
using SysWinMarkup = System.Windows.Markup;
using SysXml = System.Xml;
using SysXmlLinq = System.Xml.Linq;
public static class XamlUtils {
public static object GetXamlObject(string source) {
SysXml.XmlDocument _xmlDocument = new SysXml.XmlDocument();
_xmlDocument.LoadXml(source);
return Xaml.GetXamlObject(_xmlDocument);
}
public static object GetXamlObject(SysXml.XmlDocument xmlDocument) {
const string xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation";
const string xmlns_x = "http://schemas.microsoft.com/winfx/2006/xaml";
if(string.IsNullOrEmpty(xmlDocument.DocumentElement.GetAttribute("xmlns"))) {
xmlDocument.DocumentElement.SetAttribute("xmlns", xmlns);
}
if(string.IsNullOrEmpty(xmlDocument.DocumentElement.GetAttribute("xmlns:x"))) {
xmlDocument.DocumentElement.SetAttribute("xmlns:x", xmlns_x);
}
SysIO.TextReader _stringReader = new SysIO.StringReader(xmlDocument.OuterXml);
SysXml.XmlReader _xmlReader = new SysXml.XmlTextReader(_stringReader);
return SysWinMarkup.XamlReader.Load(_xmlReader);
}
}