29 Ekim 2005

Rizedeyim...

Bir yıl olmuş rizeye uğramayalı. Özlemişim bea :) Bilhassa yağmurunu zaten kendisi de beni karşılamayı ihmal etmedi. Pencerden kesişiyoruz şu an.-iftara kadar biter inşallah-

Rizeyle ilgili bi de resim ekleyeyim dedim ama google in resim arama bölümünden karşıma çıkan ilk resim bu oldu. Kırmadım bu mübarek ramazan günü google ı ve ekledim resmi bloga. bundan sonra flickr.com dan aratacam bi resim lazım olursa :) Edit Ali SARI :)

Madem sen ekleyecek fotoğraf bulamadın, buyurun müessesenin ikramı olarak bu fotoğrafları kabul edin :)
soldan sağa : selim, ali, muhsin ve sado soldan sağa : sigara böreği1, sigara böreği2, ..., sigara böreğiN

23 Ekim 2005

Madalyonun iki yüzü

mutluysanız ve bu mutlu anın bozulmasını istemiyorsanız bu linke tıklamayın. -gerçi ne kadar mutlu kalabilirsiniz ki?- http://www.ekincaglar.com/coin/flash-tr.html

22 Ekim 2005

Borlandın yeni stratejisi :)

Bu işi çok abartanlara borland "bu iş çocuk oyuncağı" diyivermiş. stratejiyi oldukça beğendim. 11 yaşındaki bir kızın delphi 2006 kullanarak yaptığı bir eco modellemesini gösteren videoyu sitesine koymuş ve "olay budur abi pardon abla" diyivermiş. borland işi biliyor. elemanları çekirdekten yetiştiriyor ama daha sonra ms hazır yetişmiş bu elemanlara kancayı takıyor. bu kızımızı da bir kaç sene sonra ms de görmek mümkün. hahahhahahha http://bdn.borland.com/article/0,1410,33331,00.html videoyu hemen yandaki linkten izleyebilirsiniz...

11 Ekim 2005

Interfaceler - 2

interfaceler ve guid arasındaki ilişkinin ne olduğunu anlamaya çalışırken yardımımıza yine marco cantu amcamız koşarak geldi ve bize güzel ipuçları verdi. delphi 7 kitabındaki interfacler bölümünden bir notu aktarıyorum buraya.
Her ne kadar interfacler bir GUID belirtmeden derleyerek kullanabilseniz de genellikle bunu yapmamanız gerekir. Çünkü QueryInterface işleminin gerçekleştirilebilmesi ve bu interface tipi kullanılarak dinamik "as" tip atamalarının yapılabilmesi için bu şarttır. Interfacelerin (genellikle) tek amaçları çalışma zamanında büyük oranda artırılmış tip esnekliğinden faydalanmak olduğu için sınıf tipleriyle karşılaştırıldılarında GUID sahibi olmayan arabirimler pek işe yaramaz.
Kısaca queryinterface işlemini kullanabimek veya "as" ifadesini çalışma zamanın da kullanabilmek istiyorsak guidleri kullanmamaız lazım. Aşağıdaki gibi iki adet interface tanımlıyorum ve bunlardan bi tanesine guid numarası veriyorum diğerine vermiyorum.

IKus=interface(iinterface)
['{2B67EB54-6856-411A-B331-203FC6987574}']
{ procedure Uc;
end;

IFutbol = interface(iinterface)
procedure TakimAdi;
end;

her iki interfaceide kullanan iki tane sınıf tanımlıyorun.

tkanarya = class(TInterfacedObject,iKus,ifutbol)
procedure uc;
procedure TakimAdi;
end;

tkartal = class(TInterfacedObject,iKus,ifutbol)
procedure uc;
procedure TakimAdi;
end;
bu sınıfların gövdelerini ise aşağıdaki gibi tanımladım.

{ tkanarya }

procedure tkanarya.TakimAdi;
begin
ShowMessage('kestane :)');
end;

procedure tkanarya.uc;
begin
ShowMessage('uç kanarya');
end;

{ tkartal }

procedure tkartal.TakimAdi;
begin
ShowMessage('beşikaş');
end;

procedure tkartal.uc;
begin
ShowMessage('uç kartal');
end;
button1 in kodları ise şu şekilde

procedure TForm1.Button1Click(Sender: TObject);
var
kus:IKus;
futbol:IFutbol;
kartal:tkartal;
begin

kartal := tkartal.Create;
kus := kartal as ikus; // bu satır başarılı bir şekilde derleniyor
// futbol := kartal as ifutbol; //delphi bu satırı derlemeyi
// kibarca reddediyor.
futbol := kartal; //anlamadığım nokta bu. bu satır geçerli bi satır :)

if kus.QueryInterface(StringToGUID('{2B67EB54-6856-411A-B331-203FC6987574}'),
kartal) = s_ok then 
ShowMessage('destekliyor')
else
ShowMessage('desteklemiyor');
kus.Uc;
//guid belirtirsek bu if ifadesi düzgün çalışıyor. aksi takdirde 
//çalışmıyor...

end;
bu şekilde "as" ifadelerini nerde kullanıyoruz diye düşündüğümde aklıma ilk gelen örnekler aşağıdakiler gibi. doc := WebBrowser.Document as IHTMLDocument2; Range := ((WB.Document AS IHTMLDocument2).body AS IHTMLBodyElement).createTextRange; -kafamdaki soru işaretlerini tam olarak gidermesede- interfacelere guid numaraları vermekteki maksat bu şekilde ki ifadelerin çalışabilmesini sağlamak.

08 Ekim 2005

Unutmayın ! Ramazan demek yardım demek.

Mevzu bahis olan arkadaşla internetten tanışmıştım. İyi hoş çocuktu. Kredi kartı aldığı zaman "aman ha ! dikkatli kullan" diye de uyarmıştım halbuki fakat harcama limitini iyi belirleyemeyince, bırakın yorganı ayaklar artık yatağa sığmaz olmuş. Üstüne birde işten çıkartılınca haciz kapısına dayandı arkadaşın. Arkadaşlar arasında toplandık biraz yardım toparladık ama topladıüımız miktar devede kulak kaldı malesef. Arkadaşın başka çaresi kalmayınca evdeki bazı eşyalarını satmak zorunda kaldı. Bazılarını gittigidiyor.com aracılığıyla bazılarını da önümüzdeki pazar günü evinin bahçesinde yapacağı bir açık artırmayla satmayı düşünüyor. Hem sizin ihtiyacınızı gidermek hemde arkadaşımızın ihtiyacaını gidermek için satılan eşyalara göz atmak isterseniz aşağıdaki adresten eşyaları görebilirsiniz. ihtiyacanız olmasa bile ramazan dolayısıyla katkıda bulunmak isterseniz yine çok büyük sevap kazanırsınız. not: arkadaşın ismini ve adresini burdan veremiyorum. bu bilgilere ulaşmak isteyen arkadaşlar bana mail atabilirler. bu vesileyle bende mübarek ramazan ayının hayırlara vesile olmasını diliyorum. allah hiç kimseye yokluk göstermesin. http://www.flickr.com/photo_zoom.gne?id=50526478&size=o

07 Ekim 2005

Ajax

web uygulamaları masaüstü uygulamalarının önemli bir özelliğini yakalamak üzere (mi?). ajax'la ilgili incelediğim bir çok demo vasatın altındaydı daha doğrusu yeni birşey değildi. daha önceden dhtml,xml gibi şeylerle zaten yapılabilen şeylerdi. burdaki uygulama biraz daha dişe dokunur nitelikte. web uygulamalarına bu özellik kendimi bildim bileli kazandırılmaya çalışılıyor ama nedense bir türlü sonuca ulaşılamıyor. applet, flash ve diğerleri... bakalım ajax bu bayrağı nereye kadar taşıyacak.

05 Ekim 2005

Interface'ler

Nedense interfaceleri aklımda hep com ile ilişkilendirdiğim ve com'dan da çok fazla hoşlanmadığım için hep uzak durdum. Karşıma çıktığında ise hep şöyle gözucuyla bakarak ortamdan sıvışma yolunu seçtim. Genelde java örnekleri bulunan bir kitapta sıklıkla interfacelerden söz edilmesi, bazı tasarım kalıplarını uygularken interfaclerin kullanılması, bazı tekniklerin uygulanması sırasında interfaclerin ne kadar işe yaradığından bahsedilmesi ve son olarakta furkan'la yaptığımız sohbette konunun interfacelere gelmesi ortamdan sıvışmakla pekte iyi yapmadığım hususunda beni uyardı. Elimdeki kitapların ilgili bölümlerini tekrar gözden geçirerek -bu sefer gözucuyla değil- nedir ne değildir anlamaya çalıştım. İlk anladığım nokta com ile interfacein göbeklerinin bir kesilmediği oldu. Kylix'te bile interfaceler mevcutmuş hatta benim gibi com ile gelen bir teknoloji olduğunu düşünen bir çok kişi olmalı ki daha önceden IUnknown olarak delphide bulunan interface kavramını delphi 5 ten sonra borland -kendi interface desteğini tam olarak gösterebilmek için- com'un ata nesnesi olan IUnknown tanımından IInterface tanımına geçmeyi uygun görmüş. Yani interfaceler oop'un çok önemli bir öğesi olmakla birlikte güçlü ve popüler dillerin hepsi bu kavramı destekler pozisyonda. Valla ms, com sayesinde bu interfaceleri öyle bir hale sokmuşki bu kavramın ms'nin olmadığını çakozlamak biraz zaman alıyor :) gerçi ms bunu hep yapıyor. xml'i ms standartı olarak bilen kaç kişi vardır sizce? Ya neyse boşverin biz konumuza dönelim. -Asım, şu pencereyi kapa ceyran yapıyor.- Interfaceler kısaca nasıl tarif edilir bilmiyorum ama okuduklarıma dayanarak şunu sallayabilirim. Interfaceler sadece "NE" sorusuna yanıt verirler, "NASIL" sorusuna ise yanıt vermezler. Bu da nedemek şimdi ? İlkokuldaki türkçe dersimize dönelim. "Yazılışları(okunuşlaru) aynı anlamları farklı" olan kelimelere ne diyorduk ? eşsesli veya sesteş. interfacelerde bunun gibi birşey işte. Dışardan bakınca bütün metod ve fonksiyonları aynı ama içerden bakınca farklı. dışı seni yakar içi beni misali.... hepten karıştı ya .... ! -Her yiğidin yoğurt yiyişi farklı mıdır abicim? -farklıdır -peki ben fazla kafa karıştırmadan Yigit.YogurtYe diye bir komut versem ve bu komutun -değişik yiğitler için değişik sonuçlar vermesini sağlayabilir miyim ? -bildim bildim. interface kullanacan di mi? -sen ne zekisiyin ya. gözlerim yaşardı. hah. kitaptaki örnek geldi aklıma. bu sefer kesin anlarsınız. bu yoğurt meselesine dönecez sonra. arabirimlerler dolaptaki kıyafetler gibidir. o gün hangi kıyafeti (Tobject) giymek isterseniz (siz /gizli özne (Interface)) onu giyebilirsiniz. takım elbise, spor, plaj , palyaço, pijama..... ne varsa artık... şu yoğurt meselesine geri dönelim. şimdi interface i yazıyorum. -bismillah-
type
  IYigit = Interface(IInterface)
     Procedure YogurtYe();
  end;
ne baktın ? farklı mı geldi? :) Bu kadar ya. 2 satır. Dedik ya "ne" sorusuna cevap verir "nasıl" sorusuna cevap vermez diye. işte "ne" sorusuna cevap veriyor. Yiğit ne yiyecek? el cevap. Yoğurt yiyecek. yiyecek yüklem... kim ? yiğit, özne. yiğit ne yiyecek ? yoğurt,belirtili nesne oss suali gibi oldu. şimdi bu interface'i kullanan bir sınıfta burda belirtilen YogurtYe prosedürünü kendine göre yorumlayıp kullanacak. Bu kısımda "nasıl" sorusunun cevabı oluyor. şimdi düşünelim. bu interfacei kullanan bir den fazla sınıfımız varsa ne olur? cevabı basit. "ne" sorusuna karşılık birden fazla (nesne sayımız kadar) "nasıl" cevabımız olur. örnek mi?
  TFatihSultanMehmet = Class(TInterfacedObject,IYigit)
  public
    Procedure YogurtYe();
  end;

  TKanuniSultanSuleyman = Class(TInterfacedObject,IYigit)
  public
    Procedure YogurtYe();
  end;
Yukarıdaki kodlarda iki tane yiğidimiz var ve bu yiğitlerimizin ikisi de IYigit arabirimini kullanıyorlar. Yani iki nesnede de YogurtYe prosedurumuz var ama bunların gövdeleri kendilerine özel.
procedure TFatihSultanMehmet.YogurtYe;
begin
  Showmessage('Önce Kaymağını Ye')
end;

{ TKanuniSultanSuleyman }

constructor TKanuniSultanSuleyman.Create(Stil: String);
begin
  Showmessage('Bandıra Bandıra Ye')
end;



Yahu iyi de ne işimize yaradı bu şimdi derseniz mesela şöyle bir kod yazabilirsiniz. yukarıdaki "istediğiniz kıyafeti giyebilirsiniz" örneğini hatırlayın.
procedure TForm1.Button1Click(Sender: TObject);
var
  Yigit :IYigit;
begin

if  RadioButton1.Checked Then
  Yigit := TFatihSultanMehmet.Create()
else
  Yigit := TKanuniSultanSuleyman.Create();

Yigit.YogurtYe; 

end;
eğer Yigit := TFatihSultanMehmet.Create() satırı çalışmışsa ekranda "Önce Kaymağını Ye" mesajını görürüz aksi takdirde "Bandıra Bandıra Ye" mesajını görürüz. Bunu sağlayan satıra dikkat edin. Yigit.YogurtYe; daha bir çok özelliği mevcut ama şimdilik bu kadar yeter diycem ama bir kaçını söylemeden edemiycem. - bir sınıf birden fazla interface kullanabilir. TKanuniSultanSuleyman = Class(TInterfacedObject,IYigit,IYigit2,....,xxxx) gibi -Birden fazla interface kullanıldığında aynı isimler varsa bunlara lakap verilebilir -Her interface'e GUID numaraları verilmesinde fayda var. .net için gerekli olmasada win32 için gerek olabilir. -as, is operatorlerini kullanabilirsiniz. -google :) bu da hazır yapılmış bir örnek constructor Create(Stil:String); satırı biraz gereksiz oldu gibi ama bu satır olmadan ctrl + space'i bi türlü çalıştıramadım. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type IYigit = Interface(IInterface) Procedure YogurtYe(); end; TYigitlerinAtasi = class(TInterfacedObject) private fStil:String; end; TFatihSultanMehmet = Class(TYigitlerinAtasi,IYigit) public Procedure YogurtYe(); constructor Create(Stil:String); //bunlar olmadan kod tamamlama bir türlü aktif olmadı nedense end; TKanuniSultanSuleyman = Class(TYigitlerinAtasi,IYigit) public Procedure YogurtYe(); constructor Create(Stil:String); //bunlar olmadan kod tamamlama bir türlü aktif olmadı nedense end; TForm1 = class(TForm) Button1: TButton; RadioButton1: TRadioButton; RadioButton2: TRadioButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var Yigit :IYigit; begin if RadioButton1.Checked Then Yigit := TFatihSultanMehmet.Create('Önce Kaymağını Ye') else Yigit := TKanuniSultanSuleyman.Create('Bandıra Bandıra Ye'); Yigit.YogurtYe; end; { TFatihSultanMehmet } constructor TFatihSultanMehmet.Create(Stil: String); begin fStil := Stil; end; procedure TFatihSultanMehmet.YogurtYe; begin ShowMessage(fStil); end; { TKanuniSultanSuleyman } constructor TKanuniSultanSuleyman.Create(Stil: String); begin fStil := Stil; end; procedure TKanuniSultanSuleyman.YogurtYe; begin ShowMessage(fStil); end; end. bu da dfm dosyası object Form1: TForm1 Left = 216 Top = 140 Width = 696 Height = 480 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Button1: TButton Left = 48 Top = 176 Width = 217 Height = 25 Caption = 'afiyet olsun' TabOrder = 0 OnClick = Button1Click end object RadioButton1: TRadioButton Left = 40 Top = 120 Width = 225 Height = 17 Caption = 'fatih sultan mehmet yiyişi' Checked = True TabOrder = 1 TabStop = True end object RadioButton2: TRadioButton Left = 40 Top = 144 Width = 209 Height = 17 Caption = 'kanuni sultan süleyman yiyişi' TabOrder = 2 end end

04 Ekim 2005

eee ! ne de olsa ab' ye girdik

http://www.milliyet.com.tr/2005/09/27/son/sonyas01.html http://www.skyturk.tv/h_45731_7.html http://www.haberturk.com/habermetni.haberturk?@=199500&c_id=

ab(i), nedir bu?

yahu ya biz salağız ya da ab'den bakınca öyle görünüyoruz. neydi dün kü o trafik anlam veremedim bi türlü. ortaya bi avusturya çıktı sonra güya ingiltere avusturyayı bu kararından vazgeçirmeye çalıştı. ingilizlerin ırakta ne haltlar karıştırdığı geçen haftalar da açıkça meydana çıkmıştı zaten. hadi geçtim tüm bunları. biraz hafıza tazeleyelim. biz 14 kasımda neden sevinmiştik ? tayyip amca kızılayda neyi kutlamıştı ? 17 Aralıkta 3 ekim için söz almamışmıydık biz avrudapadan ? ab(i), söz vermişsin daha avusturyayı önümüze neden koyuyorsun ? viyana kuşatmasından kalma bi karın ağrısı mı var? avusturya bizden korkuyor mu? senin söz vermen bu şekil de ise müzakerelerin sonucunu ben düşünmek bile istemiyorum ve şunu söylemek istiyorum. ab'ni al da başına çal.