bildirgec.org

Site arşivi: kodaman

Mysql Left Join ve dahası …

admin | 21 December 2008 22:40

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
32
33
34
35
36
"SELECT forum_topics.*,
COALESCE(threads_table.hits,'0') as hits, COALESCE(posts_table.post_hits,'0') as post_hits,
last_thread.date_updated, last_thread.username as updater_username
FROM forum_topics
LEFT JOIN (
SELECT COUNT(*) AS hits, topic_id
FROM forum_threads GROUP BY topic_id) AS threads_table
ON threads_table.topic_id=forum_topics.id
LEFT JOIN (
SELECT SUM(posts_table_.hits) as post_hits, posts_table_.topic_id
FROM (
SELECT COUNT(*) AS hits, forum_posts.thread_id, forum_threads.topic_id
FROM forum_posts
LEFT JOIN forum_threads
ON forum_threads.id=forum_posts.thread_id
GROUP BY thread_id) AS posts_table_
GROUP BY posts_table_.topic_id) AS posts_table
ON posts_table.topic_id=forum_topics.id
LEFT JOIN (
SELECT last_thread_.topic_id, last_thread_.date_updated, users.username
FROM
(SELECT tt.topic_id, tt.date_updated, tt.last_updater
FROM (
SELECT forum_threads.topic_id, forum_threads.date_updated, forum_threads.last_updater
FROM forum_threads
ORDER BY date_updated DESC) AS tt
GROUP BY tt.topic_id) as last_thread_
LEFT JOIN users
ON users.id=last_thread_.last_updater) as last_thread
ON last_thread.topic_id=forum_topics.id
WHERE is_active=1 AND is_deleted=0 ORDER BY forum_topics.id";

Yazının sonundaki sql sorgusunu üzerinde çalıştığımız projede yer alacak forum uygulamasını geliştirmekteyken yazdım.

JavaScript ile Animasyon Üretme Tekniği

admin | 20 December 2008 23:59

Library’leri her gün artarak çoğalan javascript dili ile artık hayal ettiğiniz bir çok efekt ve rutin işlemleri yapması hiç olmadığı kadar kolaylaştı. Üstelik bu geliştirme kütüphaneleri her geçen gün giderek daha gelişkin özellikler eklenerek sürüm atlıyor ve becerileri artıyor.. Ama.. Hiç merak ettiğiniz oldu mu şu tereyağına düşmüş fare gibi kayan div’ler img’lere bu işlevselliği nasıl kazandırabileceğiniz sorusu? Eminim gelmiştir de.. Ama kendinizce cevap verdiğiniz de olmuş muydu? Örneğin basit bir for döngüsü bir html elementin style ailesinden margin-left parametresini sürekli değiştirir ve sayfadaki nesne de bir anda şahlanı verir.. Ama malesef o kadar basit değil.. Ama zor da değil.. Durun hemen bir örnek verelim ve mantığını yordamaya çalışalım.

asp’de mySQL İşlemlerini Otomatiğe Bağlayın!..

admin | 20 December 2008 16:37

Özellikle microsoftun asp ile .net çıkalıdan beri ilgilenmemesi bir çok asp kodlayıcısınının kendisini yalnız hissetmesine sebebiyet vermiştir. (kendimden biliyorum daa:) ) Ama herşeye rağmen biz sadık asp coder’lar olarak bu işin peşini bırakmıyoruz ve php’mi döver asp’mi dalaşını bir tarafa bırakıp tam bir beyefendi gibi msSQL, mySQL ve access (hatta oracle) ile güçlendirme şansını bulduğumuz projelerimize kısıtlı da olsa nesne odaklı programlama teknikleriyle daha da kullanışlı bir imaj verebiliyoruz. Bu makalede mySQL veritabanı üzerinde işlerliği olacak bir kod örneği sunarak üzerinde bir iki kelam etmek istiyorum..

Delphi’de DLL içersinde API Çağırırken Sıkıntı Yaşamayın…

admin | 20 December 2008 11:50

PROGRAMLAMA DİLİ : DELPHI

Eğer Harici bir DLL içersinden API çağırıyorsanız ve bu DLL içersinde çağırdığınız fonksiyon yoksa EXE çalıştığında hata vericek ve çalışmayacaktır.
Bunu windows version farklarında yaşamak muhtemel, örneğin XP’ye göre bi takım kodlar yazdınız ve kodlarda XP’ye özel bir API çağırdınız, program hatasız çalışacak fakat 98’de bu API olmadığından program hiç çalışamadan hata verecektir.
Bu tür durumları yaşamamak için aşağıdaki koda benze bir kod yazarak sıkıntıdan kurtulabilirsiniz.

————————-

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
32
33
34
unit Main;
interface
uses {...}
Type {...}
.
.
.
Var
GetDiskFreeSpaceEx : FUNCTION (lpRootName : PChar;
Var FreeBytesAvailableToCaller,
TotalNumberOfBytes ,
TotalNumberOfFreeBytes : COMP) : Bool; STDCALL;
.
.
.
implementation
.
.
.
function DLLCagir(): Boolean;
Var
Lib : THandle;
begin
If (@GetDiskFreeSpaceEx = Nil) then begin
Lib := GetModuleHandle ('kernel32');
If Lib <> 0 then GetDiskFreeSpaceEx := GetProcAddress (Lib, 'GetDiskFreeSpaceExA')
Result := True;
end;
If (@GetDiskFreeSpaceEx = Nil) then begin
Result := False;
end;
end;

Php’de Nesne Yönelimli Programlama

admin | 18 December 2008 19:08

Php kodunuzu tasarlarken veritabanı ve tasarım arasında nesnelerinizde bir katman yaratmak isteyebilirsiniz. Daha esnek daha düzenli bir tasarım için nesne yönelimli programlamanın ne kadar önemli olduğunu hepimiz biliyoruz. Bu yazıda Php’de Veritabanı Sorguları İçin Nesneleri Kullanmaya giriş yapacağım.

Veritabanı sınıflarını tasarlarken veritabanı yapınıza paralel gitmek uygun olacaktır. Sık sık kullanılan tabloların hepsini kaydedip gerektiğinde kullanmak uygun bir çözüm olabilir. Örneğin renklerin tutulduğu bir tablo için

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
32
33
34
35
36
37
38
39
40
41
42
43
<?php class renk
{
private $no;
private $deger;
private function __construct($no)
{
self::$nesneler[$no]=$this;
$this->no=$no;
}
public function __toString()
{
return $this->deger;
}
private static $nesneler;
public static function sec($no)
{
if(!(isset(self::$nesneler[$no])))
self::tumunuyarat();
if(!(isset(self::$nesneler[$no])))
throw new Exception('Obje yaratılamadı.');
else
return self::$nesneler[$no];
}
private static tumunuyarat()
{
$renksec = mysql_query("SELECT no, deger FROM renk WHERE 1 ");
while($renksatir=mysql_fetch_row($renksec))
{
$renk=new renk($renksatir[0]);
$renk->deger=$renksatir[1];
}
}
} ?>

php ile, hızlı ve basit bir cache uygulaması…

admin | 17 December 2008 10:30

Bir yöntemin büyüklüğü biraz da ne kadar basit ve uygulanabilir olduğunda gizlidir.

Herseferinde, sık değişmeyecek kıstasları defalarca sorgulayıp ekrana basmak gibi bir zahmete neden katlanalım ki. Sayfamızı oluşturalım ve oluşan html çıktısını bellekleyelim.

bu durumda bir tane bellek klasörü belirliyoruz

//bellek

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
<?php
//güvenlik
//sayfabaşlığı
//bellekte bir şey var mı?
$filename = 'bellek/bellektekidosya.php';
if (file_exists($filename))
{
// dosya varsa cache den okuyoruz
$fileway = fopen($filename, "r");
$fileinfo = fread($fileway, filesize($filename));
//$fileinfo.="cache time ;)";
fclose($fileway);
}
else
{
//
// *** Makaleye bakınız
//
//bellekte yoksan belleğe gel
$fileway = fopen($filename, "w");
fwrite($fileway, $fileinfo);
fclose($fileway);
}
?>
<?=$fileinfo?>
<?
//sayfasonu
//bağlantıyı kes
?>

//makaleye bakınız 😉
Burda en dikkat edilmesi gereken nokta bellekleyeceğimiz kısım. Dilersek sadece SQL sorguların bellekleriz… Lakin bu bize yeterli hızı sağlamaz… Kimi durumlarda sayfaları bütün çıktıları ile belleklemekte yarar var…

Ajax nedir, ne değildir.

admin | 16 December 2008 13:37

Herkesin şu ajax dediği şeyi bir ele alma vakti geldi artık!
Ajax anlam olarak Javascript ve XML’in farklı zamanlarda (asynchronous/senkron olmayan) kullanması anlamına geliyor.
Özetle sayfanız yüklendikten sonra sayfanızın hala veri alıyor ya da gönderiyor olması.
Ajax 2005 yılında Google’ın önerisi üzerine popülerleşmiştir.

  • Ajax yeni bir dili programlama değildir, mevcut dilin farklı şekillerde kullanılmasıdır.
  • Ajax animasyon yapımında kullanılan bir şey değildir, yani sağdan soldan kayan şeyler ajax değildir. Onlar yalnızca Javascriptin ve CSS in birlikte etkin kullanıldığı sayfalardır ki biz buna DHTML diyoruz. (Dom, javascript, css)
  • Ajax iyidir çünkü web site trafiğini düşürür, tüm sayfanın yeniden yüklenmesi yerine sadece gerekli yerler değiştirilerek trafikten kazanılır.
  • Ajax, javascript ile yazılır onu ASP, PHP, ColdFusion gibi diller ile zengin ve aktif olarak kullanabilirsiniz.

Ajax kullanımı, göz atıcınızın bu standartı (http request) desteklemesi ile gerçekleşir. Bu explorer için Microsoft.XMLHTTP ve bir çok diğer göz atıcı için XMLHttpRequest özelliğidir. Method isimleri farklı olsa da kullanımları aynıdır.

Php’de browser tespit etme

admin | 16 December 2008 13:36

Program yazarken giriş yapan kişinin kullandığı browser için ekrana gönerilecek olan kodların düzenlenmesi gerekte. İşte bu durumlarda aşağıdaki kodları kullanarak gelen kişinin browser tipini öğrenebilirsiniz. Bu fonksiyon ile AmigaVoyager, Apple Generic, Camino, Ensemble2, Epiphany, Firefox, Firefox 1.0, Firefox 1.5, Firefox 2, Firefox 3, Firefox prerelease, Galeon, Google Chrome, iCab, Iceweasel, Internet Explorer, Internet Explorer 5, Internet Explorer 6, Internet Explorer 7, Internet Explorer 8, K-Meleon, Konqueror, Lynx, Mozilla Minefield, Netscape, NewsCopier, Opera, Pocket Internet Explorer, Radianrss, RssReader, Safari, SeaMonkey, Swiftweasel, Thunderbird, Vienna.

Flash içerisine XML Veri Çekerken Türkçe Karakter Problemi Çözümleri

admin | 16 December 2008 07:16

Flash Action Script kodlayıcı arkadaşlarımızın yaşadığı en büyük problemlerden birisi olan şüphesiz Türkçe karakter.

Bunun en kolay ve zahmetsiz çözümü hepimizin bildiği gibi UTF-8 standardını kullanmaktır. Ancak Flash nesneler içerisine XML veri çekerken bu tür işlemlerin yada yöntemlerin genelde yalnış yapılmasından ötürü işe yaramadığı söylenir.

Kısaca kullandığım yöntem şu ki;
XML sayfasının en başında yer alan; versiyon ve tip belirten satır içerisindeki bölüme

1
encoding="utf-8"

kodunu mutlaka eklenmesi gerekiyor. Hatta bazen bu encoding işlemini Flash nesne içerisine eklediğimiz her dosyada aynı değerde tutmamız gerekiyor.

Php’de Spider tespit etme

admin | 15 December 2008 20:37

Bazen web sayfası hazırlar iken gelen ziyaretçilerin normal ziyaretçimi yoksa spidermı olup olmadıklarını test etmem gerekiyor. İşte o zaman aşağıdaki kodları kullanıyorum. Hazır bu blogu açmışken neden diğer arkadaşlarım ile paylaşmıyayım dedim. Kullanıma sunduğum fonksiyonlar ile spider testi, browser testi ve işletim sistemi testlerini yaptırabilmektesiniz. Hazırladığım eklenti “GoogleBot, Google AdSense, Google FeedFetcher, Google Images, Google Mobile Spider, Google Wireless Transcoder, Lycos, Ask Jeeves, Hot Bot, What You Seek, Archive.org, Altavista, Alexa, MSN Search, Yahoo!, Yahoo Publisher Network, Yahoo! Blogs, Yahoo! FeedSeeker, Yahoo! Vertical Crawler” tanıyabilecek şekilde ayarladım.