ŞİİR DERYASI


10 Şubat 2009 Salı

SİGARAYI EN KISA SÜREDE BIRAKMA

Sigara Nasıl Bırakılır?

72 SAAT İÇİLMEDİĞİ ZAMAN VÜCUT SİGARA İSTEME ARZUSUNU KAYBEDER.siz sadece aklınıza getirmeyin :)


Türkiye'deki ilk sigara bıraktırma polikliniğinin sorumlusu Doç. Dr. Uzaslan,"Yetişkinlerde ağır içiciler, gençlerde ise günde 5-7 sigara içenler hedefe daha çabuk ulaşıyor" diyor...Her 10 saniyede dünyada bir kişi sigara nedeniyle hayatını kaybediyor. Dünya Sağlık Örgütü verileri de dünyada her yıl 4 milyon kişinin sigaraya bağlı bir hastalık yüzünden erken öldüğünü gösteriyor. 2030'da bu sayının yılda 10 milyona çıkması bekleniyor. Türkiye'de de yaklaşık 20 milyon kişinin içtiği sigara, trafik kazalarından 10 kat fazla can alıyor. Sigarayla tek başına mücadele etmeye kalkışanlar, genelde çok fazla yol alamıyor. İstatistikler de sigara içicilerinin yüzde 90'ının sigarayı bırakmak istemesine rağmen başarılı olamadığını gösteriyor. Oysa profesyonel yardım alanlarda bu oran yüzde 35'lere kadar çıkıyor.Hamileler hemen bırakmalıTürkiye'de bu alanda kurulan ilk klinik olan Uludağ Üniversitesi Tıp Fakültesi Sigara Bıraktırma Polikliniği sorumlusu Doç. Dr. Esra Kunt Uzaslan, sigaranın sağlığa zararları ve bırakmaya iten nedenlerle ilgili sorularımızı yanıtladı:Sigara kaç çeşit hastalığa yol açıyor?Kanser, kronik nefes darlığı ve kalp damar hastalıkları başta olmak üzere, üst ve alt solunum yolları enfeksiyonları, felç, mide ve bağırsak hastalıkları, bağışıklık sistemi hastalıkları, beyin ve böbrek hastalıklarına yol açabiliyor.Kimler sigarayı daha kolay bırakabiliyor?Bırakma isteği ani ölüm korkusu yaşayanlarda daha güçlü olabiliyor. Hamileler de bebeklerine zarar verme endişesiyle hemen bırakıyor. Sigara içen annenin bebeğinin daha düşük ağırlıklı ve daha erken doğduğu, sigara içen hamilelerde düşük riskinin fazla olduğu, bebeğin vücut ve beyin gelişiminin geri olabileceği bilimsel olarak kanıtlanmış durumda.Sigara bırakmanın en zor yanı nedir?Erken dönemde sigara bağımlığının getirdiği aşırı içme isteği, sinirlilik, uykusuzluk gibi yakınmalar, geç dönemde ise her an tekrar başlayabilme riskidir. Ancak en güzel yanı, sigarayı bırakır bırakmaz sağlığınızın hızla düzeldiğini algılarsınız.Hangi yaş grubu sigarayı daha kolay bırakır?Günde 5 - 7 tane sigara içen gençler, yetişkinlerde ise ağır içiciler daha kolay bırakabilir. Başarıyı artıran önemli faktörlerden biri ise, eşin ve iş arkadaşlarının içmeyen kişilerden oluşması.Poliklinikler başarıyı nasıl etkiliyor?Sigarayı bıraktırma polikliniklerinin başarısı yüzde 18-35 arasında değişebilir.Sigara bıraktırma tedavilerinin maliyeti nedir?İlaç tedavisi olarak hesapladığımızda, bupropion HCL'nin (Zyban) iki aylık maliyeti 245 YTL, nikotin bandının 2 aylık maliyeti ise yaklaşık 124 YTL' dir. Bu da en ucuz sigaranın 1 YTL, ortalama bir sigaranın ise 3 YTL olduğu ülkemizde, içicinin 2 - 3 aylık sigara harcamasına eşdeğer.'Hiç kilo almadım'14 yıl boyunca günde bir paket sigara içtim. Ocak 1996'da bıraktım. O günlerde şiddetli bir grip geçirmiş ve hastalığım boyunca sigara içememiştim. Hazır böyleyken ben bu işi bırakıyorum dedim ve pat diye bıraktım. Her şeyin beyinde bittiği çok doğru. Herhalde eşimin sigara içmemesi de etkili oldu. Onunla tanışmamızın üzerinden 5 - 6 ay geçmişti, bilinçaltında bu da yatıyor olabilir. Tamam artık içmeyeceğim dedikten sonra bir daha aramadım. Karar vermeyince olmuyor. Ben hiç kilo almadım. Eğer sigarayı aklınıza takmazsanız hırsınızı yemekten almaya da gerek kalmıyor. Sigara içenler çevrelerini de düşünmeli. Artık çok rahatsız oluyorum içenlerin yanında. Gözlerim yanıyor. Kokusu bile ağır geliyor.İlk adımı bu tabloya bakarak atınKansere davetiye çıkarmayınSigara içen bir kişinin, içmeyen bir kişiye oranla kanser olma riski kaç kat daha fazladır?Akciğer: 13 - 22 katAğız: 3 - 30 katDişeti: 5 - 14 katDil: 4 - 33 katGırtlak: 16 katYemek borusu: 8 - 10 katMesane: 3 - 5 katPankreas: 2 katBöbrek: 5 katProstat: 2 katRahim ağzı: 17 katKan kanseri: 2 - 3 kat1- Hazırlık dönemiKendinize bir 'yoldaş' bulunMemorial Hastanesi Sigara Bıraktırma Polikliniği uzmanlarının önerileri şöyle:Olumlu düşünün. Başarılı olamayacağınıza dair fikirleri kafanızdan çıkarın.Bırakmak istemenizin nedenlerini bir kağıda yazın. Sigara aklınıza geldikçe bu listeye göz atın.Sigarasız kaldığınızda çektiğiniz baş ağrılarınızı, nasıl sinirli olduğunuzu ve sevdiklerinize karşı nasıl kırıcı olduğunuzu hatırlayın.Bırakmak için özel bir gün saptayın. Doğum günü veya evlenme yıldönümüne denk düşürün. Çifte kutlama yapın. Sigarayı bırakma kararına başkalarını da ortak edin (arkadaşlarınız, eşiniz, kardeşiniz...).2- Sigarayı bırakmaya doğru...Kötü bir sigara seçinİçmek için hoşlanmadığınız bir marka seçin.Sigara sayınızı azaltın. Bunun için kısıtlamalar koyun, günün belirli dilimlerinde sigara içmeyin, içtiğiniz sigaraları yarıda bırakın.Sigarayı kartonla almayın, yanınızda paket taşımayın.Ev ve işyerinde sigara ve kül tablası bulundurmayın.Kül tablasını boşaltmayın. Bu hem ne kadar sigara içtiğinizi gösterecek hem de çirkin görüntüsü sizi sigaradan uzaklaştıracaktır.3- Sigarayı bıraktığınız ilk günSakın boş kalmayınSigara, çakmak ve kibrit gibi sigarayı çağrıştıracak nesneleri atın.O gün boş kalmayın, spor yapın, sinemaya, alışverişe gidin. Kendinize hediye alın ve kutlama için aktivite düzenleyin. Dişlerinizi temizletin.

İLGİNÇ

BUNLARI BİLİYORMUSUNUZ.. !!
Dünyada her dakika iki tane düşük şiddette deprem olmaktadır.
Hindistan'daki yıllık doğum sayısı, Avustralya'nın toplam nüfusundan fazladır.
Rusya'nın dörtte biri ormanlarla kaplıdır.
Tarih boyunca yeryüzünde bulunan altın 200 kat daha fazlası okyanuslarda bulunmaktadır.
Köpeklerin ter bezleri ayaklarındadır.
Yazar Rudyard Kipling sadece siyah mürekkep kullanırdı.
Mickey Mouse'dan önce en meşhur çizgi film kahramanı Felix The Cat'di.Larry Hagman (JR.)Dallas dizisinin setinde hiç kimsenin sigara içmesine izin vermezdi.
Salatalığın yüzde 96'sı sudur.Bir kilo limonda bir kilo çilekten daha fazla şeker vardır.
Peru'da hiç umumi tuvalet yoktur.
Timsahlar renk körüdür.
Yarım kilo bal yapabilmek için arılar iki milyondan fazla çiçekten bitki özü toplamak zorundadırlar.
Tarantulalar iki buçuk yıl yiyeceksiz yaşayabilirler.
Havuca rengini karoten verir.İnciler sirkede erir.
Venüs saat yönünde dönen tek gezegendir.
İnternetin yıllık büyüme yüzdesi 314.000'dir.
Rodin'in ünlü 'Düşünen Adam' heykeli aslında İtalyan şair Dante'nin portresidir.
En fazla asfaltlı yola sahip ülke Fransa'dır.
Sihirli sözcük 'abrakadabra' ilk olarak yüksek ateşli hastaların ateşlerini düşürmek için söylenmişti.Marilyn Monroe'nun altı ayak parmağı vardı.
Albert Einstein dokuz yaşına kadar düzgün konuşamamıştı.
Her iki taraf da kan bağışında bulunursa, Paraguay'da düello yapmak yasaldır.
Eiffel Kulesi'nin tepesine çıkana kadar 1792 basamak vardır
Sümüklüböceklerin dört tane burnu vardır.
Elektrikli sandalye İsac Edison tarafından icat edilmiştir.
Bugüne kadar bilinen en ağır böbrek taşı 1.36 kg.
Hapşırdığımız zaman, kalbimiz de dahil olmak üzere bütün vücut fonksiyonlarımız bir an için durur...
Külot giymediği için, Donald Duck'in çizgi filimlerinin Finlandiya'da oynatılması yasaktır...
Mexico City her sene 25cm. kadar batıyor...
Çocuklar baharda daha fazla büyüyor.
Bir devekuşunun gözü beyninden büyüktür.
İnek sütünün pH değeri 6'dır.
Bir timsahın gözlerinin arasındaki mesafe, ayaklarının büyüklüğüne eşittir
Dalmaçyalılar gut olmayan tek köpek cinsidir.
Değerli taşların çoğu birkaç elementten oluşur, sadece pırlanta tamamen karbondan oluşur.
Bukalemunların dilleri, vücutlarından iki kat daha uzundur.
Global ısınma yüzünden yükselen deniz seviyesi 2050 yılında Shangai ve deniz kıyısındaki diğer Çin şehirlerinde büyük sellere neden olacak.
Bu sellerde 76 milyon kişi evsiz kalacak.
Kereviz yerken harcanan kalori, kerevizin içindeki kaloriden daha fazladır.
Hipopotamlar insandan daha hızlı koşarlar.
İnsan elinde, en yavaş uzayan tırnak baş parmağınki, en hızlı uzayan tırnak ise orta parmağınkidir.
Hawaii alfabesinde sadece 12 harf bulunmaktadır.
Güney Kore başkenti Seul, Kore dilinde "başkent" anlamına gelmektedir.
Kanada, Kızılderili dilinde "büyük köy" anlamına gelmektedir.
İngilizcedeki Wendy ismi, Peter Pan hikayesinde kullanılmak üzere uydurulmuştur.
Sahra Çölündeki Tidikelt kasabasına on yıl boyunca hiç yağmur yağmamıştır.
Mumyaların ayak parmakları tek tek sarılarak mumyalanmıştır.
Dünyadaki ilk telefon rehberinde sadece elli isim yer almıştı.
1878 yılının şubat ayında Connecticut New Haven'da yayımlanmıştı.
Yataktan düşerek ölme olasılığı iki milyonda birdir.
Ünlü çizgi film kahramanı Temel Reis, 1919 yılında Elzie Crisler Segar tarafından yaratıldı.
Hindistan'da oyun kağıtları yuvarlaktır
Uyurken, televizyon seyrederken yaktığımızdan daha fazla kalori harcıyoruz
Kadınlar erkeklere oranla, iki kat daha fazla göz kırpar...
Buckingham Sarayı'nda 602 oda bulunuyor.
Ortalama bir buzdağının ağırlığı 20 milyon ton.
İnsanlar beyinlerinin %10'unu kullanırlar.
18 Subat 1979 tarihinde sahra çölüne kar yağmış.
Amerikan havayolları, uçuşlarda yolculara sunduğu kahvaltılarda, her tepsiden bir zeytini kaldırarak, 1987 yılında, 40 bin dolar kâr etmiştir.
İlk çamaşır makinesı 1907 yılında Hurley Machine Co. Tarafından pazarlandı.
Kıta isimlerinin hepsi aynı harfle başlayıp aynı harfle biter.
Avustralya'daki tuvaletlerin sifon suları saat yönünde akar.
ABD'de, yaşları 20 ile 29 arasında olan zenci erkeklerin üçte biri ya hapiste ya da gözaltında tutulmaktadır.
Ortalama bir erkek, hayatının 3350 saatini tıraş olmak için harcar.
Geçen 3500 yılın, sadece 230 yılı barış içinde yaşanmıştır.
Sallanan sandalyede hiç durmadan sallanma rekoru 440 saattir.
Bir cam kırıldığında, ufalanan parçalar saatte üç bin millik bir hızla etrafa saçılır.
İnsan saçı, üç kilo ağırlık kaldırabilecek esnekliktedir.
Günümüzde, evlenenlerin yüzde ellisi boşanmaktadır.
Beethoven beste yapmadan önce kafasını soğuk suya sokardı.
Dünyadaki hayvanların yüzde sekseni altı ayaklıdır.
Bir okyanusun en derin yerinde, demir bir topun dibe çökmesi bir saatten uzun sürer.
Bugüne kadar ölçülmüş en büyük buz dağı, 200 mil uzunluğunda ve 60 mil genişliğindedir ve Belçika'dan daha büyük bir yüzölçümüne sahiptir.
Charles Dickens, uykusuzluk hastalığına yakalanmıştı.
Sadece yüzünü kuzeye dönerse uyuyabileceğine inanıyordu.
Bugüne kadar kaydedilmiş en büyük dalga, 1971 yılında Japonya'nın Ishigaki Adası'nda 85 metre yüksekliğine ulaşmıştır.
Açık bir gecede, çıplak gözle iki bin ayrı yıldızı görmek mümkündür.
Herhangi bir okyanusun en uzak olduğu nokta Çin'dir.
Rusya'da doğudan batıya doğru seyahat edilirse, yedi saat kuşağı geçilir.
Norveç'in kuzeyinde, her yaz 14 hafta gece gündüz güneşli geçer.
Dünyanın en hızlı büyüyen bitkisi bambu, bir günde 90cm. kadar uzuyor.
İnsan vücudundaki en güçlü kas dildir..
Eğer Barbi gerçekten yaşasaydı, vücut ölçüleri 97-72-82 cm olacaktı...
İnsanlar vücutlarında 300 adet kemikle doğuyorlar, ama yetişkin olduklarında bu sayı 206'ya düşüyor.Tom Sawyer daktiloda yazılan ilk romandır.
Bir insan yaşamı boyunca iki yüzme havuzunu dolduracak kadar tükürük salgılar.
Newton, yer çekimi kanununu farkettiği zaman, 23 yaşındaydı.
Ödemeli telefon konuşmalarının çoğu, babalar gününde ediliyor.
Sadece insanlar ve yunuslar zevk için cinsel ilişkide bulunurlar.
Ayı inlerinin girişleri her zaman kuzeye bakar.
Kedilerin beyninde 32 adet kas vardır.
Üzerinde barkodu olan ilk ürün Wrigleys marka sakızdır.
Bir devekuşunun gözu beyninden büyüktür.
Aslanlar bir günde 50 kez sevişebilirler.
Güney Kore başkenti Seul, Kore dilinde "başkent" anlamına gelmektedir.
Her 25 kişiden biri astim hastasidir.Uranus, ciplak gozle gorulebilen bir gezegendir.
Kaptan Cook, Antarktika haric butun kitalara ayak basan ilk insandir.
Gunişigindan daha fazla yararlanmak icin saat uygulamasini Benjamin Franklin başlatmiştir.
Bugune kadar kaydedilmiş en buyuk dalga, 1971 yilinda Japonya'nin ishigaki Adasi'nda 85 metre yuksekligine ulaşmiştir.
Sahra colundeki Tidikelt kasabasina on yil boyunca hic yagmur yagmamiştir.
Başkan John F. Kenndy, yirmi dakikada dort gazete okuyabilirdi.
nefes alabilirler!!

8 Şubat 2009 Pazar

İSTANBULUN FETHİ 2

İSTANBULUN FETHİ 1

Photoshop CS2’nin Yeni Mucizesi: Lens Correction

PHOTOSHOP ÖĞRETİMİ

Başlarken

Her gün internette onlarca web sayfası geziyor , yollarda afişler , dergilerin kapaklarına bakıyoruz.Çok hoşumuza giden , göze güzel gözüken albenisi olan bir çok şey görüyoruz. Peki bunlar hangi programla , nasıl yapılıyor, İşte bu yazımızda dünyanın en iyi grafik işleme programlarından biri olan Photoshop’ı tanıyacağız.

Photoshop vektörel bir grafik işlem aracıdır. Çoğu kullanıcıya göre yapılabilecekler sınırlı gözükse de Photoshop ile hayallerinizi grafiğe dökebilirsiniz. Photoshop’ın bir çok sektörde tonlarca arkadaşımıza ekmek kapısı olmuş bir programdır. Kullanılması iyi bilindiği takdirde geniş çaplı bir pazara sahiptir.

Photoshop
Öncelikle Photoshop programı (yazımın ilerleyen kısımlarında PS olarak bahsedeceğim) ayrıntısı ve işlevi çok fazla olan bir program olduğu için yüksek performansta çalışması sizlerin faydasına olacaktır. Adobe firmasının belirlediği en minimum sistem özellikleri ise şu şekilde ;

Windows
+ Intel Pentium III veya IV
+ Servis Pack 3 kurulu Microsoft Windows 2000 veya Windows XP
+ 256 MB Ram
+ 280 MB Disk Alanı
+ 16 Bit Renk veya Daha üstü Ekran Kartı
+ 1024×768 pixel veya daha yüksek destekli ekran çözünürlüğü
+ Cd Okuyucu

Tools Menüsü


1-Marquee Tool
2-Move Tool
3-Lasso Tool
4-Magic Wand
5-Crop Tool
6-Slice Tool
7-Patch
8-Brush Tool
9-Stamp
10-History Brush
11-Eraser
12-Graident
13-Blur / Sharpen / Smudge Tool
14-Dodge / Burn / Sponge Tool
15-Selection Tool
16-Text Tool
17-Pen Tool
18-Rectangle Tool
19-Notes Tool
20-Eye Dropper Tool
21-Hand Tool
22-Zoom

Marquee Tool


Bir alanı belirleyip seçmenize , sadece o alan üzerinden değişiklik yapmanıza , kesmenize yarayan araçtır. 4 farklı çeşit var.

Rectangular Marquee Tool
Eliptical Marquee Tool
Single Row Marquee Tool
Single Column Marquee Tool
Rectangular Marquee Tool : Kare şeklinde seçimleriniz için ;
Eliptical Marquee Tool : Yuvarlak şekillerse seçimler yapmanız için ;
Single Row Marquee Tool : 1 Piksel boyutunda yatay seçim yapmanız için ;
Single Column Marquee Too : 1 Piksel boyutunda dikey seçim yapmanız için kullanılır.

Move Tool

Seçili olan katmanı olduğu yerden başka bir yere sürükleme yöntemiyle taşımanıza yarar. Açık olan iki dosya arasında katman taşımasında da kullanılır.


Laso Tool


Marquee tool ile sadece belirli bir alanın bir kısmını sınırlı seçebilirken Laso Tool ile el hareketleriniz ile ister düz isterseniz rahat şekilde kesim veya seçim yapabilirsiniz. 3 farklı çeşittir.

Lasso Tool
Polygonal Lasso Tool
Magnetic Lasso Tool

Lasso Tool : Farenizin bir tıkı ile aktif seçim işlemine başlar ve parmağınızı tıklama tuşundan çektiğiniz anda seçim işlemini durdurur.O süre zarfında belirlediğiniz alan üzerinde dilediğinizi yapabilirsiniz.

Polygonal Lasso Tool : Tamamen düz seçimler yapmanızda yardımcı olur. Elinizin titreşimlerinden etkilenmez bu sayede tamamen düz seçimler yapabilirsiniz.

Magnetic Lasso Tool : Lasso ve polygonal lasso ile yapamadığınız işlemi geri alma seçeneğini magnetic lasso tool ile yapabilirsiniz.

Magic Wand

Tolerans azaltıldığında renk yakınlığı azaltılır , arttırıldığında ise renk yakınlığı arttırılır.

Birbirine yakın renkli alanları birkaç tıklama ile seçmenize yardımcı olur.Toleransı ayarladıktan sonra seçilecek renklerin yakınlığını ayarlayabiliyorsunuz.




Crop


Açtığınız dosyanın boyutunu belirli bir ebatta kesmek istiyorsanız kullanmanız egreken araç.Dosyanın olacak boyutunu ayarlaıdktan sonra ENTER tuşuna basmanız veya farenizin sağ tuşla tıklayıp Crop demeniz yeterlidir.

Width : Uzunluk
Height : Yükseklik
Resolution : Çözünürlük (dpi) pixel inch
(Not : Web sitesi grafikleri 72 dpi dir.)




Slice Tool

Yaptığınız veya açtığınız dosyayı parçalara bölmeniz için kullanacağınız araç.2 alt menüsü bulunmakta.

Slice Tool
Slice Selec Tool

Slice Tool : Parçalara bölmek için kullanacağınız araç
Slice Select Tool : Parçalara böldüğünüz alanları seçmek için kullanacağınız araç.



Bu araç çoğunluklu web sitesi tasarlayan (webmaster) kişilerce kullanılır.Bir web sitesinde parçaların ufak boyutlu olması o sitenin daha hızlı açılmasını sağlar. Bu yüzden tercih edilen yöntem Slice Tool ile parçalama yöntemidir.

(Not : Slice Tool ile parçaladığınız dosyanızı web sayfası olarak kaydetmek için File menüsünden Save For Web seçeneğini seçmeniz gerekmektedir.)

Patch Tool

Belirli bir alandaki rengi alıp başka bir yere yumuşatarak koymanıza yarayan güzel bir araç. Fotoğrafçılık sektörünün vazgeçilmez araçlarından biridir.3 alt menüsü bulunur.

Healing Brush Tool
Patch Tool
Color Replacement Tool

Healing Brush Tool : ALT tuşu ile belirlediğiniz noktayı alarak başka bir yere fırça ile taşıanıza yarar.

Patch Tool : Lasso Tool’da olduğu gibi elinizin hareketleriyle seçtiğiniz bölgeyi taşımanıza yarar.

Color Replacement Tool : Boyamak için seçilen rengi renk yakınlığı olan alanlarda kullanmanıza yarar.

Brush Tool

El hareketlerinizi bilgisayarınıza aktarmanıza yarayan araçtır.
2 Alt menüsü bulunuyor.

Brush Tool
Penci Tool

Brush Tool : Fırçalama efektini ellerinizle vermeniz için gerekli araçtır.

Pencil Tool : Geçiş efektleri olmadan direkten kalem şeklinde çizimler yapmanıza yarayan araçtır.

Stamp

Patch Tool ile neredeyse aynı görebi gören fakat genelde daha değişik amaçlara hizmet eden araçtır.Çoğunlukla fotoğraflardaki piksellikleri gidermek veya iki farkı görüntünün geçişinde kullanılır.
2 alt menüsü bulunmaktadır.

Clone Stamp Tool
Pattern Stamp Tool

Clone Stamp Tool : Genel analtımda açıkladığım geçiş ve pikselliğin giderilmesinde kullanılır.

Pattern Stamp Tool : Belirlenmiş bir kaplamanın istediğiniz alana yumuşak darbelerle aktarılmasını sağlar.

History Brush


Belirlediğiniz bir geri zaman noktasına fırça aracı benzeri ile dönmenizi sağlar.Geri tuşundan değişik olarak zadece belirlediğiniz yere geri döndürür.
2 alt menüsü bulunmaktadır.

History Brush Tool
Art History Brush Tool

History Brush Tool : Belrilediğiniz bir noktaya tek bir fırça şekili ile dönmenizi sağlar.

Art History Brush Tool : Belirlediğiniz bir fırça şeklinin artistik darbeleriyle geri dönmenizi sağlar.Yani eskiye geçişi güzel gösterir

Actionscript 2.0 Operatörler

Operatörler

OPERATÖRLER


- Atama Operatörü (=)

Atama operatörü ile değişkenleri ve veri türlerini anlattığımız yazılarda da karşılaşmıştınız. Atama operatörü, değişkenlere
değer atama amacı ile kullanılır.

adi = "Hakan";

örneğinde adi değişkenine "Hakan" değeri atanıyor.

sayi = 5;
sayi = sayi + 1;

yukarıdaki örnekte ise, sayi değişkenine 5 değeri atanıyor daha sonrasında ise yine sayı değişkenine kendisinin 1 fazlası
atanıyor.

Atama operatörü değişkenlere değer atamak için kullanılan tek yol değildir. set() fonksiyonu ile atama operatörü aynı işlevi
görür. Ancak pratikte set fonksiyonu kullanılmaz.

set(adi,"Hakan");

ile

adi = "Hakan";

tamamen aynıdırlar.

MATEMATİKSEL İŞLEM OPERATÖRLERİ

- Toplama Operatörü (+)

Matematikte kullanılan toplama operatörü ile tamamen aynı işleve sahiptir. İstenilen sayısal değerleri birbiri ile toplar.

sayi_1 = 10;
sayi_2 = 13;

toplam = sayi_1 + sayi_2; //toplam = 23

yukarıdaki örnekte sayi_1 ve sayi_2 değişkenlerine sayısal değerler atanıyor ve bu değerler daha sonra toplanarak toplam
değişkenine atanıyor.

+ operatörü sayısal olmayan veriler ile kullanıldığında ise birleştirme operatörü olarak işlev görür. Örneğin aşağıdaki string
örneklerini inceleyelim;

adi = "Hakan";
soyadi = "SULUN";

uzun = adi + " " + soyadi;

trace(uzun); //ciktisi Hakan SULUN olacaktır.

Yukarıdaki örnekte adi ve soyadı değişkenlerine string değerler atanıyor ve uzun değişkeninde birleştiriliyor. Görüldüğü gibi
string değerler sayısal olarak toplanmak yerine birleştirilirler.

- Çıkarma Operatörü (-)

Çıkarma operatörü de yine toplama operatöründe olduğu gibi matematiksel çıkarma işlemini yapmak için kullanılır.

a = 8;
b = 3;

c = a - b; //ciktisi 5 olacaktir.

String veriler ile yapılan işlemlerde de toplama operatöründeki kurallar geçerlidir. Yanlız aradaki bir farka dikkat etmek gerekir;

a = "30";
b = "10";

c = a - b; //ciktisi 20 olacaktir..

a = "ali";
b = "l";

c = a - b; //ciktisi NaN olacaktir.

cikarma operatörü string veriler eğer değer olarak sayısal bir değer içeriyor ise, onları sayısal veri türüne çevirip çıkarma
işlemini gerçekleştirir. Ancak sayısal değer içermeyen string veriler için NaN döndürecektir.

- Çarpma Operatörü (*)

Matematikte kullanılan çarpma operatörü ile aynı işlevi görür, verilen iki sayıyı birbiri ile çarpar.

y = 3;
z = 5;

trace(y * z); //ciktisi 15 olacaktir.

Yine çarpma operatörünün string veriler ile kullanılması, çıkartma operatörü ile tamamen aynıdır. Eğer string veriler sayısal
değerler içeriyorsa çarpma işlemi başarılı olur. Yoksa NaN döndürecektir.

- Bölme Operatörü (/)

Matematikte kullanılan bölme operatörü ile aynı işleve sahiptir. Verilen iki sayıyı birbirine böler.

y = 10;
z = 2;

trace(y / z); //ciktisi 2 olacaktir.

String veriler ile çalışırken, çıkarma ve çarpma operatöründeki kurallar bölme operatöründe de geçerlidir.

- Matematiksel Gruplandırma Operatörü "( )"

Çoğu zaman aynı ifade içinde birden fazla matematiksel işlem yapmamız gerektiği durumlar olabilir. Örneğin;

x = 5 * 2 + 50;

işleminde olduğu gibi. Yukarıdaki örnekte aynı ifadede çarpma ve toplama işlemi yapılmak isteniyor. Ancak hangi işlem diğerinden
önce yapılacak? Kodunuzun akışı bu işlemin sonucuna bağlı ise, işlem önceliği hayati önem taşır hale gelir.

Actionscript yorumlayıcısı bu gibi durumlar için aşağıdaki işlem önceliği sırasını uygular;

+ Parantez içerisindeki işlemler
+ Çarpma işlemi
+ Bölme işlemi
+ Toplama işlemi
+ Çıkarma işlemi

Oysa biz yukarıdaki örnekte 50 + 2 toplamının iki katını almak istesek, actionscript yorumlayıcısı işlem önceliğine göre ilk önce
5 * 2 = 10 ve daha sonra da 50 + 10 = 60 sonucunu üretecektir.

Bu gibi durumlarda gruplandırma amaçlı parantez operatörü işimizi görmektedir. Yukarıdaki örneği aşağıdaki şekilde düzenle
diğimizde, tam istediğimiz gibi çalışacaktır.

x = 5 * (2 + 50); //ciktisi 260 olacaktir.

- Modül Alma Operatörü ( % )

Matematikte kullanılan modül alma işlemini gerçekleştirmek için kullanılır. Bir sayının diğerine bölümünden kalan sayıyı
döndürür.

x = 10;
y = 3;

z = x % y;

trace(z); //ciktisi 1 olacaktir. 10 sayısının 3' e bölümünden kalan 1 dir.

- Arttırma Operatörü ( ++ )

İstenilen sayısal verinin değerini 1 arttırmak için kullanılır. degisken = degisken + 1 işleminin kısaltılmış şeklidir.

x = 9;
x++;
trace(x); //ciktisi 10 olacaktir;

Bu operatörde, değeri arttırılmak istenilen değişkenin sağında ya da solunda kullanılması durumunda ortaya çıkabilecek farklı
sonuçlar vardır.

+ Sağda kullanım:

x = 5;
y = x++;


Yukarıdaki örnekte, x değişkeninin değeri ilk önce 5 olarak atanıyor. İkinci satırda ise ++ operatörü ile değeri bir arttırılıp
6 olarak atanıyor. Ancak;

y = x++;

işleminde, y değişkeninin değeri sandığımız gibi x' in yeni değeri olan 6 olmayacaktır. Tam tersine x değişkeninin değerini arttırmadan
önceki değeri olan 5 olacaktır.

Kısacası, ++ operatörü sağda kullanıldığında ilk önce varolan değeri döndürecek, daha sonrasında ise değeri 1 arttıracaktır.

+ Solda kullanım:

x = 5;
y = ++5;

Yukarıdaki örnekte, ilk önce x değişkenine 5 değeri atanmaktadır. Tıpkı sağda kullanımda olduğu gibi, ikinci satırda ise
++ operatörü bir atama işlemi ile birlikte kullanılıyor.

Ancak bu sefer y değişkeninin değeri beklenildiği şekilde x değişkeninin bir fazlası olan 6 değerine eşit olacaktır.
Kısacası, ++ operatörü solda kullanıldığında ilk önce değeri 1 arttıracak daha sonra yeni değeri döndürecektir.

- Azaltma Operatörü ( -- )

İstenilen sayısal verinin değerini 1 azaltır. degisken = degisken - 1 işleminin kısaltılmış halidir.

x = 5;
x--;
trace(x); //ciktisi 4 olacaktir.

Tıpkı arttırma operatöründe olduğu gibi, çıkartma operatörü de sağda ya da solda kullanıldığında aynı davranışları gösterecektir.

x = 5;
y = x--;

trace(y); //ciktisi 5 olacaktir.
trace(x); //ciktisi 4 olacaktir.

x = 5;
y = --5;

trace(y); //ciktisi 4 olacaktir.
trace(x); //ciktisi 4 olacaktir.

BİRLEŞİK ATAMA OPERATÖRLERİ

- Topla ve Ata ( += )

Kullanımı, ifade1 += ifade2 şeklindedir.

ifade2 alanındaki değeri ifade1 alanında belirtilen değere ekleyerek dönen sonucu yine ifade1 alanında belirtilen ifadeye atar. Yani;

ifade1 = ifade1 + ifade2;

şeklinde de tanımlanabilir.

x = 5;
y = 10;

x += y;

trace(x); //ciktisi 15 olacaktir

yukarıdaki örnekte de görüldüğü gibi ilk önce x ve y değişkenlerine sayısal değerler atanmaktadır. Daha sonra topla ve ata birleşik
operatörü ile x değişkenine kendi değerinin y değişkenindeki değeri ile toplamı atanmaktadır. Dolayısı ile işlemden sonra
x değişkeninin yeni değeri 10 + 5 = 15 olacaktır.

- Çıkar ve Ata ( -= )

Kullanımı, ifade1 -= ifade2 şeklindedir.

ifade1 alanındaki değerden, ifade2 alanındaki değeri çıkartarak dönen sonucu ifade1 alanındaki ifadeye atar. Kısaca;

ifade1 = ifade1 - ifade2;

işleminin kısaltılmış halidir.

x = 10;
y = 5;

x -= y;

trace(x); //ciktisi 5 olacaktir.

- Çarp ve Ata ( *= )

Kullanımı, ifade1 *= ifade2 şeklindedir.

ifade2 alanındaki değeri, ifade1 alanındaki değer ile çarparak dönen sonucu ifade1 alanındaki ifadeye atar. Yani;

ifade1 = ifade1 * ifade2;

işleminin kısaltılmış halidir.

x = 5;
y = 2;

x *= y;

trace(x); //ciktisi 10 olacaktir.

- Böl ve Ata ( /= )

Kullanımı, ifade1 /= ifade2 şeklindedir.

ifade1 alanındaki değeri, ifade2 alanındaki değere böler ve dönen sonucu ifade1 alanındaki ifadeye atar. Yani;

ifade1 = ifade1 / ifade2;

işleminin kısaltılmış halidir.

x = 10;
y = 2;

x /= y;

trace(x); //ciktisi 5 olacaktir.

- Modül al ve Ata ( %= )

Kullanımı, ifade1 %= ifade2 şeklindedir.

ifade1 alanındaki değerin, ifade2 alanındaki değere bölümüden kalanı hesaplar ve dönen değeri ifade1 alanındaki ifadeye atar.

ifade1 = ifade1 % ifade2;

işleminin kısaltılmış halidir.

Operatörler yazımıza bu haftalık burada son veriyoruz. Önümüzdeki hafta eşitlik, karşılaştırma ve mantıksal operatörler ile
devam edeceğiz.

Hepinize iyi çalışmalar.

SQL Server 2005 ve CLR Entegrasyonu

Giriş

Bu yazıda Microsoft'un veritabanı yönetim sistemi SQL Server'ın beta aşamasında olan yeni sürümü SQL Server 2005’i genel hatlarıyla inceleyeceğiz. Başlamadan önce bir noktanın altını çizmek istiyorum. Beta aşamasında, kullanılan bir çok özellik, geliştirilen bir çok araç, dağıtım sürümünde belki çok değişmiş olarak karşımıza çıkacak, belki de tamamen kaldırılmış olacak. Bu yüzden okuyacaklarımızı yazıda geçenleri kesin özellikler olarak algılamak yerine muhtemel özellikler olarak kabul edip değişebileceğini göz önüne almaları daha uygun olacaktır.



CLR Desteği


SQL Server 2005’in en dikkat çekici özelliklerinden biri CLR ile birlikte çalışabilmesi. Bu sayede kendinizi en rahat hissettiğiniz .net dili ile veritabanı nesneleri oluşturma, oluşturduğumuz nesneleri yapılandırma ve hatta veritabanı yönetim sistemimizin yönetimini sağlama imkanına kavuşuyoruz. Artık geliştirici T-SQL kullanmadan, istediği dilde (Vb.Net,C#...) veritabanı üzerinde trigger 'lar , stored procedure'ler ya da fonksiyonlar yazabilecek, veritabanlarını oluşturup silebilecek. Bu aynı zamanda herhangi bir veritabanı nesnesi yazarken binlerce ( abartmıyorum :) ) bileşeni sunan .Net Class Library'den faydalanabilme anlamına da geliyor.

Fikir vermesi açısından, aşağıda girilen ID ‘ye göre isim döndüren bir fonksiyon görüyoruz. Bu fonksiyon .net dillerinden VB.NET ile kodlanmasına rağmen SQL Server’ın üzerinde saklanıyor ve çalıştırılıyor.

Imports System.Data.Sqlserver

Imports System.Data.Sql

Public Class Kitaplik



Public Shared Function YazarDondur() as String

Dim cmdSql As Sqlcommand = Sqlcontext.GetCommand()

cmdSql.CommandText= _

"Select Yazar from Kitap where KitapId = @prmKitapId"

Dim prmKitapId As SqlParameter = _

cmdSql.Parameters.Add("@prmKitapId",SqlDBType.String)

prmKitapId.Direction = ParameterDirection.Input

prmKitapId.Value="K001"

Return Ctype(cmdSql.ExecuteScalar(),String)

End Function


End Class


Bundan önce kullandığımız ADO.NET kodlarına ne kadar da benziyor değil mi? Gördüğünüz gibi SQL Server 2005 için yazılan bu fonksiyonun kodlarını yorumlamak .net ile haşır neşir olanlar için hiç de zor değil. SQL Server’ ı programlamak için yeni bir dil öğrenmek yerine bildiğimiz dili SQL Server’ın desteklemesi elde edinilen bilginin katlanarak artmasına olanak sağlıyor.

Bu noktada T-SQL’in akibetinin ne olacağı sorusu akıllara geliyor. Sanılanın aksine T-SQL rafa kaldırılmış durumda değil! SQL Server 2005’te T-SQL işlevselliğini, geliştirilmiş ve yeni ekleniş birçok özellikle koruyor. Try/Catch yapısının eklenmesi ya da CLR ile bütünleşmesi için eklenen deyimler bu gelişime örnek verilebilir. Aşağıda Try/Catch yapısına ait bir örnek bulunuyor;

BEGIN TRY

BEGIN TRAN

INSERT INTO tblMusteri (Id,MusteriAdi,Bakiye,Tarih)

VALUES (@Id, @MusteriAdi, @Bakiye, GETDATE())

COMMIT TRAN

END TRY



BEGIN CATCH TRAN_ABORT

ROLLBACK

INSERT INTO tblHatalar VALUES ('Hata Oluştu'))

END CATCH

Peki bazı işlemleri hem T-SQL ile hem .Net programlama dillerinden biriyle yapabileceksek T-SQL ve .Net kodu arasında tercihi neye göre belirleyeceğiz? Genel olarak T-SQL'in, veriye erişim ve veri üzerinde toplu işlemler için kullanılması daha uygunken, .net kodlarının veri üzerinde daha karmaşık (ileri düzey matematik ya da katar işlemleri gibi) işlevleri yerine getirirken kullanılması uygun diyebiliriz.

CLR ile bütünleşme beraberinde arttılmış güvenliği (code access security v.b.), bellek yönetimini (garbage collection v.b.) ve çok kanallı (multi threading) programlanabilmeyi de getiriyor. Burada sadece adını andığımız bu başlıkların hepsi başlı başına birer makale konusu. Genel olarak değerlendirdiğimizde ise SQL Server 2005-CLR işbirliği işlevsellik açısından ani bir patlama gibi.


Saklı Yordamlarımızı .NET İle Kodlayalım


SQL Server 2005 (Yukon) getirmeyi vadettiği yeni özellikleri ile veritabanı programlama konusunda bambaşka bir bakış açısı sunuyor. SQL Server 2005’in getirdiği bir çok yeni özelliğin arkasında CLR ile entegrasyonu yatıyor.

.net framework'un çekirdeği olan CLR SQL Server 2005 ile birleştirilmiş durumda. Yani artık veritabanı sunucumuz .net'çe konuşabiliyor. Örneğin C# ile yazdığınız kodları SQL Server 2005 kendi üzerinde çalıştırıbiliyor ve bu kodları VB.NET ile yazdığımız kodlarla hiç bir sıkıntı yaşamadan entegre edebiliyor..

Şu ana kadar yapılagelmiş yöntem iş katmanını bildiğimiz yüksek seviyeli programlama dilleri ile oluşturmak, veri katmanını ise veritabanı sunucumuzun bize sağladığı T-SQL olanaklarıyla oluşturmaktı. Genel problemler için gayet makul olan bu yöntem veri katmanında, veritabanı dışında bazı işler gerçekleştirmek istediğimizde yetersiz kalmaktaydı. Örneğin SQL Server üzerinde oluşan bir hatanın Event Log (Seyir kaydı) olarak yazılmasını T-SQL ile sağlamak pek kolay olmamaktaydı. Genişletilmiş saklı yordamlar (extended stored procedures) ise bunu c++ dili ile mümkün kılmakta, fakat uyulması gereken arayüzler ve kodlama zorluğu bu sorunu pratik olarak çözmemekteydi.

SQL Server 2005 bu tarz işlemleri rahatlıkla yapabilmemize olanak sağlıyor. Peki nasıl mı ? Bu soruyu bir örnek ile cevaplandıralım.

SQL Server 2005 altında .net kodlarını çalıştırabilmek için yapılması gerekenler adım adım şöyledir;

1. .net kodlarıyla bir sınıf kütüphanesi oluşturun ve derleyin. (SQL Server 2005 .exe uzantılı dosyaları çalıştırmaz. .dll uzantılı derlenmiş kütüphaneleri çalıştırır.) Burada dikkat edilmesi gereken sınıfın public yordamların ise static (vb.net'te shared) olması gerekliliğidir.
2. Oluşturduğunuz assembly'i SQL Server 2005’e kaydedin
3. Assembly'i sarmalayacak bir veritabanı nesnesi (stored procedure, user defined function, trigger ..) oluşturun.
4. Oluşturduğunuz nesnesi istediğiniz yerden kullanın.

Şimdi bu adımları sırasıyla uygulayalım. Önce csYukonOrnek isimli yeni bir class library projesi oluşturun ve otomatik olarak oluşturulan şablon sınıf dosyasının ismini csYukonLibrary.cs olarak değiştirip içine aşağıdaki kodları yazın;

using System;
public class csClassYukon
{
public static int csFunctionCLRToplama(int a, int b)
{
return a + b;
}
}



Bu fonksiyondaki işlemleri T-SQL kullanarak basit bir saklı yordam ile yapabilirdik. Bu örnek için CLR kullanmak pek mantıklı olmasa da yoğun ve karmaşık işlemlerin CLR ile yapılması çoğu iş yükünü ortadan kaldıracaktır.

Derlediğimizde oluşan dll 'i aşağıdaki, SQL Server 2005 Management Studio içine yazacağımız kod ile sunucumuza kaydedelim;

CREATE ASSEMBLY asmYukon FROM 'C:\csYukonLibrary.dll'
-- Oluşturduğunuz dll'in yolunu yazmaya dikkat edin !



Bu sayede assembly artık sunucumuza kaydedilmiş durumdadır. Dll dosyasını silsek bile SQL Server 2005 içinden bu kütüphanenin fonksiyonlarını kullanmaya devam edebiliriz.

Şimdi de oluşturacağımız saklı yordam ile bu assembly'i sarmalayalım;



CREATE PROCEDURE [dbo].[spCLRToplama]
@IlkDeger [int],
@IkinciDeger [int]
AS
EXTERNAL NAME [asmYukon].[csClassYukon].[csFunctionCLRToplama]


Bu bölümde dikkat ederseniz T-SQL'e yeni eklenen EXTERNAL NAME deyimi ile oluşturduğumuz assembly'nin mantıksak olarak tam yolunu belirtiyoruz. Dikkat edilmesi gereken nokta .net ile oluşturduğumuz fonksiyon ile stored procedure aynı tip parametreler almak zorundadır. (Bu örnekte her ikisi de integer tipinde iki parametre almaktadır.) Artık bu stored procedure sayesinde .net ile oluşturduğumuz bir fonksiyonu istediğimiz yerde kullanabiliriz.

Buraya kadar yaptığımız işlemler sonucu bir assembly'i (asmYukon) Yukon üzerinde çalışmak üzere kayıt ettik ve onu kullanacak bir stored procedure (spCLRToplama) oluşturduk. Management Studio'dan kontrol ettiğimizde bu nesneleri aşağıdaki gibi görebiliriz ;

Son olarak oluştur oluşturduğumuz stored procedure üzerinden .net kodlarımızın çalıştığını kontrol edelim ;

DECLARE @Sonuc INT
EXECUTE @Sonuc = spCLRToplama 3 , 5
SELECT @Sonuc AS CLRToplama

Linux Altında Video İşlemleri

Giriş

Gelişen teknoloji sayesinde birçok yeni ve gelişmiş multimedya aleti evlerimize, hatta ceplerimize girer oldu. Bu aletlerin başında yüksek kalitede fotoğraf ve video çekimi yapabilen küçük makineler gelmekte. Ev kullanıcıları da bu minik ama çok maharetli cihazlarıyla çektikleri ya da Internet aracılığıyla edindikleri birçok video dosyasını bilgisayarlarında izleyebilmekte. Ancak gerek disklerde kapladıkları alan nedeniyle olsun, gerekse de eş, dost ve arkadaşlara izletme nedeniyle olsun, bu videoları yedekleme ya da VCD/DVD formatlarına çevirmek ihtiyacı duymaktalar. İşte bu noktada kullanmakta olduğunuz Linux işletim sisteminiz sizi yarı yolda bırakmaz.



İçerik Başlıkları

Giriş
AVI Dosyalarını SVCD Yapalım
-X Değerinin Skript İle Hesaplanması
Bağlantılar
AVI Dosyalarını SVCD Yapalım


SVCD (Super Video CD) her DVD çalar aygıtının oynatabileceği, VCD'den daha iyi kaliteye sahip olan bir formattır. En iyi MPEG-2 standardı olan 480x578 pixel değerlerini kullanılır. Bu yüzden günümüzde bu formatı çalamayacak DVD çalar neredeyse yok gibidir. Linux altında SVCD formatlı filmler oluşturmak ise oldukça basittir. Bunun için ilk önce aşağıdaki programların sisteminizde kurulu olması gerekmektedir: Transcode, Mplayer, Vcdimager, MJpegtools, Mpeg2Dec, Avifile, cdrdao

Bu programlar genelde sisteminizde mevcut değildir. Ancak büyük ihtimal ile kurulum CD'lerinizde vardır. Eğer CD'nizde de mevcut değil ise,
www.google.com adresinden kısa bir araştırma yaparak, gerekli olan paketlere kolayca erişebilirsiniz.



SVCD formatındaki filmleri hem konsoldan hem de grafiksel ara yüzü olan programlar yardımı ile yapabilirsiniz. Benim tercihim konsol tabanlı programlar olmakla birlikte, grafik ara yüzü olan Kavi2svcd adındaki programda tercih ettiğim programlar arasındadır. Kullandığınız Linux dağıtımında gerekli olan bütün paketlerin kurulu olduğunu farz ediyor ve işlemlerimize başlıyoruz. Mevcut bir AVI dosyasının ilk önce MPEG2 formatında çevrilmesi gerekir. Çünkü yazı için kullandığım DVD çalar maalesef DIVX formatındaki (mesela avi) dosyaları çalabilecek olan DVD çalarlardan değil. Bu yüzden AVI filmlerini ilk önce MPEG2 formatına çevirmem ve sonra CD üstüne yazmam gerek.
Aşağıdaki komut, benim kullandığım komutun aynısıdır. Yani bir AVI formatındaki filmden mpeg formatında bir dosya oluşturuyorum:

$ transcode -i istediginiz.avi -x mplayer,mplayer -o cikti -V \
ympeg2enc,mp2enc -X 18,13,16 -F 4, “-S 792 -B 260 -V 230” -E 44100 -b 192

Şimdi bu komut ile kullanabileceğiniz diğer seçeneklere kısaca bir bakalım:

-i : İşlenecek olan avi dosyasının ismidir, yani orjinal avi dosyası.
-x : Kullanacak olduğumuz kodlayıcı (“-x mplayer,mplayer” ya da Avifile kodlayıcısı “-x af6,af6”)
-o : İşlem sonucunda olusacak olan MPEG dosyasının ismidir.
-V : “.yuv” dosyası için takas dosyası oluşturulacağını belirtir. (eğer renk kayması ya da bozulması görülürse “-V” yerine “-k” kullanılabilir)
-y : video (mpeg2enc, mpeg, divx5) ve ses kodlayıcısı (mp2enc, toolame, divx5)
-X : Büyütme yüksekliği, genişliği, çarpanı (aşağıda, örnek bir betik ile basitçe anlatılacaktır).
-B : Küçültme yüksekliği, genişliği, çarpanı tanımlar.
-Y : Encode ederken karelerin kenarlarına çerçeve ekleneceğini belirtir.
-J : Yukarı, sağ, aşağı, sol (kenarlık konumlarını belirtir).
-F : Video kodlama seçenekleri (-F 4=svcd, -F 3=vcd).
-E : Ses örnekleme değeridir. Bu ayar genelde 44.1 kHz'dir.
-b : Ses kalitesidir (bitrate). SVCD için 224 Kbps ve VCD için 192 Kbps seçilebilir.
Bu değerler genelde tavsiye edilen değerlerdir.
-S : 792 ise bir CD'ye yazılabilecek veri miktarıdır (overburn kullanılmadan). Eğer AVI dosyasının boyutu fazla ise, oluşacak olan image dosyamız 792MB’lık parçalar halinde oluşturulur.


-X Değerinin Skript İle Hesaplanması


Burada üzerinde durmamız gereken bir başka önemli nokta var. “-X” değerinin hesaplanması.
Bu hesaplamayı basit bir betik (script) yardımı ile yapabilirsiniz. Bu betiğin ismi “zoomto” ve Internet üzerinden kolayca indirebilirsiniz. Bu betiği kullanmamızdaki amaç, üzerinde çalıştığımız avi dosyasının boyutlarının hesaplanıp değiştirilebilmesini sağlamak. Örneğin, benim bu yazıyı hazırlarken kullandığım avi dosyasının boyutları 512 x 288 pixel ama benim istediğim boyut ise 720x576 pixel, yani normal bir SVCD’nin standart ebatları. İşte bu hesapları yapabilmeyi kolaylaştırmak için “zoomto” betiğini kullanabiliriz. Peki diyelim ki Internet bağlantınız yok ya da bu betiği kurmak ve kullanmak istemiyorsunuz, o halde üzülmeyin çünkü bu hesaplamayı şu şekilde elle yapabilirsiniz:

576-288=288 (eni) 720-512=208 (boyu) 288/16=18 208/16=13

Ama betiğimizin yardımı ile daha kolay bir şekilde hesaplayabilirsiniz:

$ sh zoomto.sh orjinal_boyut istedigimiz_boyut
$ sh zoomto.sh 512x288 720x576
Multiples of 32: -X 9,7,32 -Y 0,8,0,8
Multiples of 16: -X 18,13,16 Multiples of 8: -X 36,26,8

Bu şekilde netice alıyoruz ve hangi çarpanı istiyorsak onu yazıyoruz. -X/-B seçeneğine eğer sizin seçeneğiniz farklı ise ona göre -X ve -B çıkabilir. Bu bilgileri topladıktan sonra, yukardaki AVI den MPEG oluşturacak olan komutu verebiliriz.
Bu işlem oldukca uzun sürebilir (1 veya 1.5 saat). İşlem bittikten sonra dizinde yeni iki dosya oluşur. Bunlar “cikti.m2v” ve “cikti.mpa” (ses ve görüntü) dosyalarıdır. Daha sonra bu dosyaları “mplex” yardımıyla birleştiriyoruz:

$ mplex -f 4 -o istediginiz_film_ismi_%d.mpg cikti.m2v cikti.mpa

“-f 4” seçeneği SVCD için ve “-f 1” seçeneği ise VCD içindir.



NOT: “istediğiniz_film_ismi” sonunda “_%d.mpg” parametresinin yazılması şarttır. “%d” yerine daha sonra, parçaların sıra numaraları gelir:
örn. film_ismi_1.mpg film_ismi_2.mpg
Yukarıdaki verdiğimiz komut işlemi bitince, bulunduğunuz dizinde

- film_ismi_1.mpg
- film_ismi_2.mpg

dosyalarını göreceksiniz. .MPEG dosyalarını oluşturduktan sonra “cue/bin” image dosyalarını hazırlayıp, kolayca CD ye yazdırabiliriz:

$ vcdimager -t svcd -c ilkcd.cue -b ilkcd.bin film_ismi _1.mpg
$ vcdimager -t svcd -c ikinci.cue -b ikinci.bin film_ismi _2.mpg

Komut sonucunda yukarıda gördüğünüz gibi “cue/bin” dosyalarımız oluştu ve artık bunları CD’ye yazabiliriz. İlk önce CD yazıcımızın aygıt numarasını tespit edelim. Bunu aşağıdaki komut yardımı ile kolayca öğrenebiliriz:

# cdrecord -dev=ATAPI --scanbus

Bu komut benim makinemde aşağıdaki gibi bir çıktı veriyor :

0,1,0 1) ‘TEAC ‘’CD-W552E ‘ ‘1.09’ Removable CD-ROM

Burada bize lazım olan bilgi, ilk baştaki 0,1,0 numara dizgisi. Eğer birden fazla CD ROM aygıtı takılıysa, bu komut sizde farklı bir sonuç verebilir.
Son olarak sıra, “CUE/BIN” dosyalarını yazmaya geldi. K3b veya başka bir grafiksel program
ile bunu yapabileceğiniz gibi, komut satırından da kolayca CD’ye yazdırabilirsiniz:

# cdrdao write --force --driver generic-mmc --device ATAPI:0,1,0 \
--overburn --speed 40 --eject ilkcd.cue
# cdrdao write --force --driver generic-mmc --device ATAPI:0,1,0 \
--overburn --speed 40 --eject ikinci.cue

Hepsi bu kadar. AVI formatındaki filmimizi DVD çalarda gösterilebilecek formata çevirdik. Artık filmimizi, fan gürültüsünden uzakta, koltuğumuza yayılarak kendi televizyonumuzda rahat rahat seyredebiliriz.
En başta da söylediğim gibi, komut satırında herhangi bir sebepten dolayı başarılı olamazsanız, Kavi2svcd programını kullanmanızı tavsiye ederim.
Yukarıdaki açıklamalar, Kavi2svcd programı için de aynen geçerlidir.


Bağlantılar

http://kavi2svcd.sourceforge.net/
http://tibit.org/video/zoomto.sh

Delphi

Metin Fonksiyonları


Bu yazıda da Delphi'nin sunduğu çok çeşitli metin fonksiyonlarından benim en yaralı gördüklerime değineceğiz. Benim en yararlı gördüklerim diye özellikle yazdım çünkü siz daha farklı fonksiyonlara ihtiyaç duyabilirsiniz. Buradaki fonksiyonların da anlatıldığı Delphi Help'i kurcalarsanız mutlaka işe yarar bir şeyler bulursunuz :) Haydi başlayalım!

Copy fonksiyonuyla başlayabiliriz sanırım. Bu fonksiyon uzun bir metnin sadece belirli bir kısmını çıkartıp kullanmak istediğinizde işe yarar. İlk parametresi string tipinde bir dğeişkendir -ki buraya ana metni içeren değişkeni yazmalısınız- ikinci parametre başlama karakteri, son parametre de buradan itibaren kaç karakter okunacağıdr. Fonksiyondan geriye parameterelere göre çıkartılmış metin döner, Ana metinde bir değişiklik yapılmaz. Başlangıç karakteri 1'den başlar. Yani ilk karakter için buraya 1, sonraki için 2 vs. yazmalısınız. Okunacak karakter sayısı da başlangıç karakterinden "itibaren" "kaç karakter okunacağını" belirtiyor. Yani Copy(metin,1,1); fonksyionundan geriye 1 karakter içeren -metin değişkeninin ilk karakteri- bir string dönüyor.

Delete fonksiyonu verdiğiniz stringin belirli bir kısmını siler. Parametrelerinin çalışma şekli aynı "Copy" fonksiyonu gibidir. İlk parametre üzerinde işlem yapılacak string değişkendir, ikinci parametre silinmeye başlanacak karakter numarasını gösterir. Yine ilk karakter 1 ile temsil edilir. Sonraki parametre de belirtilen başlangıç karakterinden sonra kaç karakter silineceğini gösterir. Burada dikkat edilmesi gereken nokta bu fonksyionun geriye bir değer döndürmek yerine işlemi direk verilen string değişkeni üzerinde yapması ve sonucu yine bu değişkene koymasıdır.

Pos fonksiyonu bir metin içinde başka, daha kısa bir metni aramak için kullanılır. Örneğin bu yazı içinde "metin" kelimesini aramak için kullanılabilir. En büyük dezavantajı aranan metnin asıl metin içinde birden fazla olması durumunda sadece ve daima onun ilk bulunduğu yer ile ilgili bilgi alabilmeniz. Pos fonksiyonu ilk parametre olarak arancak metni(altmetin) alır. İkinci parametre olarak da içinde arama yapılacak metni içeren değişken adını girmelisiniz. Fonksiyondan geriye dönen değer aranan metnin bulunduğu İLK karakterin adresini verir. Eğer geriye "0" değeri dönmüşse altmetin anametin içersinde bulunamadı demektir.

PosEx fonksiyonu Pos fonksiyonundan farklı olarak aramaya başlayacağı başlangıç adresini de ister. Yani aramaya metinin 10'uncu karakterinden başlayabilrisiniz. Ki bu durumda Pos fonksiyonu gibi buradan sonraki ilk eşlemenin başangıç adresi size verilir.

AnsiLowerCase fonksiyonu verilen metnin tüm harflerini küçük harfe çevirir ve sonuç olarak bunu döndürür. Aynı şekilde AnsiUpperCase fonksiyonu da verilen metnin tüm harflerini büyük harf yapar. Bu iki fonksiyonun da tek zayıf noktası küçük "i" ve büyük "I" ları İngiliz Alfabesi'ne göre dönüştürmeleri. Yani "I=i" oluyor, buna dikkat edin.

AnsiReplaceStr fonksiyonu verilen bir metinde, parametre olarak verilen altmetinlerin tamamını başka bir metinle değiştirmeye yarar. Örneğin bu yazıdaki tüm noktaları virgüle çevirmek isteseydik bu yazıyı içeren değişkeni, ardından '.', ve ',' verdiğimizde[AnsiReplaceStr(degisken , '.' , ',')] fonksiyondan geriye dönüştürülmüş metin çıkacaktı. Unutmayın, tüm noktalar... Fonksiyonun ana metinde değişiklik yapmak yerine değiştirilmiş metni sonuç oalrak verdiğini unutmayın.

Length fonksyionu adından da anlaşılacağı üzere kendisine parametre olarak verlien metinin uzunluğunu döndürüyor :)

Trim fonksiyonu metinin başındaki ve sonundaki boşlukları atar ve bu halini sonuç olarak döndürür. TrimLeft ve TrimRight diye iki versiyonu daha vardır. Bunlardan left olan soldaki boşlukları, right olansa sağdaki boşlukları atar ve bu hali döndürür.

Evet yazımız bu kadarcık ama Delphi'nin yardım dosyalarında daha birçok metin fonksiyonu var. Ben sadece en çok işinize yarayabilecekleri seçip anlatmaya çalıştım dediğim gibi. Umarım işinize yarar...


--------------------------------------------------------------------------------

C# ve Serileştirme (Serialization)

Serileştirme nedir?


Serialization (yazının bundan sonraki bölümlerinde “serileştirme” adı ile anılacaktır); bir nesnenin saklanacak / transfer edilecek forma dönüştürülmesi işlemidir.

Serileştirmenin tersi olarak adlandırılan Deserialization ise, bir akışın (Stream) nesne modeline dönüştürülmesi işlemi olarak adlandırılır.

.NET Framework içerisinde buluan System.Runtime.Serialization isim uzayından erişebileceğimiz serileştirme sınıfları ve araçları sayesinde, kendi nesnelerimizi istediğimiz formatta saklayabiliriz.

.NET Framework, bize serileştirme için iki metod sunar;

XML ve SOAP Serileştirme (XML and SOAP Serialization)
İkili Serileştirme (Binary Serialization)
İkili serileştirme, tür bağımlılığı açısından önemlidir. İkili serileştirme işlemi daha çok birbirinden bağımsız iki uygulama arasında nesne modellerini taşımak için kullanılır.

Bu metod ile örneğin; bir nesne modelini diskinizdeki bir dosyaya, yada networkteki başka bir bilgisayara hatta .NET remoting kullanarak farklı bir domain içerisinde bulunan bir bilgisayardaki uygulamalara bile taşıyabilirsiniz.

XML ve SOAP serileştirme ise, tür esnekliği ile ön plana çıkmaktadır. XML serileştirme işleminde sadece ortak özellik ve metodlar serileştirilebilir. Bu modelde verinizi, kullanacak olan uygulamayı kısıtlamadan saklayabilirsiniz. XML ve SOAP açık bir standart olduğundan ve her türlü uygulama tarafından rahatlıkla okunabildiğinden veri paylaşımı oldukça hızlı sağlanabilmektedir.


Binary ve XML serileştirme


İkili (Binary) Serileştirme:

İkili serileştirme işlemi; bir nesnenin durumunun saklama ortamına uygun hale getirilip yazılması süreci olarak tanımlanabilir. İşlem süresince, nesnenin “public” ve “private” öğeleri, sınıfın adı, sınıfı barındıran Assembly’ nin adı saklama ortamına yazılmak üzere “byte” lar akışına çevirilir.

Nesne, Deserialize edildiğinde ise nesnenin tam bir kopyası oluşturulur ve kullanıma sunulur.

XML ve SOAP serileştirme (eXtensible Markup Language & Simple Object Access Protocol)

Xml serileştirme, veri türünü dikkate almaksızın bir nesnenin tüm ortak metodlarını, özelliklerini ve değişkenlerini serileştirir. XML serileştirme ile her uygulamada kullanılabilen nitelikte sınıf örnekleri yaratılabilir.

XML serileştirmenin yıldızının parladığı noktalar ise, klasik Windows uygulamaları ile İnternet uygulamaları arasında iletişim gerektiği durumlar olarak bilinmektedir.

Bir Windows uygulamasında kullandığınız sınıf örneğini, bir Web servisi aracılığı ile Web uygulamanıza taşımanıza olanak sağlayan yegane yöntem XML serileştirmedir.

Aşağıdaki örneği incelediğinizde, XML serileştirme işlemi ile serileştirilen bir nesne modelinin nasıl bir hal alacağını görebilirsiniz.

public class Musteri
{
public string musteriAdi;
}

Yukarıdaki sınıfın bir örneği serileştirildiğinde ise, aşağıdaki hali alacaktır;


Kemal Kartalayak


Gördüğünüz gibi, yukarıdaki formata sahip herhangi bir datayı istediğini bir uygulamada kullanmak sizin elinizde. Tür bağımsızlığı bu gibi durumlarda kendisini göstermektedir.

Yine bir örnekle açıklamak gerekirse; Asıl veritabanı yerel bilgisayarınızda bulunan bir müşteri listesini güncel olarak web sitenizde yayınlamanız gerekmekte. Ancak bu ortam hem web sitesinden erişilebilir olmalı, hem de yerel makinenızdaki bir program tarafından okunabilmeli. İşte bu durumda veritabanı içerisindeki verileri XML ile serileştirmeniz hem Web uygulamanız tarafından okunmasını sağlayacaktır, hem de istediğiniz Windows uygulaması tarafından görüntülenebilecektir.

Binary serileştirme hakkında


Binary Serileştirme uygulaması:


Serileştirme üzerine bu ilk makalemizde, ikili serileştirme uygulamasına yer verelim ve daha sonrakilerde de XML serileştirmeyi derinlemesine inceleyelim.

İkili serileştirme işlemi en basit yöntem ile nesneye Serializable etiketi verilerek yapılır. Aşağıdaki örneğimizde basit bir sınıf serileştirilmekte ve bir dosyaya yazılmaktadır.


[Serializable]
public class BinarySerial

{
public int sayi1;
public string strName;
}


//aşağıda bu nesnenin bir örneği yaratılmakta ve myFile.bin dosyasına serileştirilmektedir.

BinarySerial nesneOrnegi = new BinarySerial();
nesneOrnegi.sayi1 = 15;
nesneOrnegi.strName = “Hakan”;


IFormatter bicimlendirici = new BinaryFormatter();
Stream akis = new FileStream(“myFile.bin”,FileMode.Create,FileAccess.Write);
bicimlendirici.Serialize(akis,nesneOrnegi);
akis.Close();


Nesnemizin dosyadan tekrar alinmasi ise “Deserialization” işlemi ile yapılır;
IFormatter bicimlendir = new BinaryFormatter();
Stream akis = new FileStream(“myFile.bin”,FileMode.Open,FileAccess.Read);
BinarySerial nesnem = (BinarySerial) bicimlendir.Deserialize(akis);
akis.Close();


//aşağıdaki şekilde nesnemizin değerlerini test edebilirsiniz;

Console.WriteLine(“{0}”,nesnem.sayi1);
Console.WriteLine(“{0}”,nesnem.strName);

Uygulama

Kendi verinizi kendiniz saklayın:

Binary serileştirme ile ilgili son örneğimiz, tıpkı bir veritabanı kullanır gibi kendi verimizi saklayıp daha sonra istediğimiz zaman erişebileceğimiz bir uygulama.

Uygulamamızda, Storage sınıfı saklayacağımız veriyi biçimlendirmek için kullanacağımız sınıf olmakla beraber bu örnekte içerisinde sadece temel metodları barındırmaktadır.

Veri saklamak için klasik Hashtable yapısını kullanacağız. C# için bir konsol uygulaması başlatıyoruz ve yeni bir sınıf ekleyip adını “Storage.cs” olarak ayarlıyoruz.

Storage.cs:

//istedigimiz program datasini kaydetmek icin, serializable bir class yaratiyoruz


[Serializable]
public class Storage
{
private Hashtable storageData; //ikili tablo olarak saklayacagimiz verileri tutacak
public Storage()
{


//constructor metodumuz, deseriazlize edildigi zaman
//cagirilmayacagi icin, icerisine onemli islemleri yazmiyoruz.

storageData = new Hashtable();
}




//yeni bir datayi saklamak istedigimizde, kullanacagimiz metod.


public void AddData(object data, string identifier)
{
if(!isExists(data) || !isExists(identifier))
{
storageData.Add((object) identifier,data);
}
}




//herhangi bir data silmek istedigimizde, bu metod yardimimiza kosuyor.


public void RemoveData(string identifier)
{
if(isExists(identifier))
{
storageData.Remove((object) identifier);
}
}




//hashtable icerisindeki bir verinin, key ini aramak icin


public string GetIdentifier(object data)
{
if(isExists(data))
{
foreach(string strKey in storageData.Keys)
{
if(storageData[strKey] == data)
{
return strKey;
}
}




return null;
}
return null;
}




//storageData hashtableimizi dondurecek property.


public Hashtable storage
{
get
{
return this.storageData;
}

}




#region Herhangi bir verinin HashTable icerisinde olup olmadigini degerlendir
private bool isExists(object dataToSearch)


{
if(storageData != null)
{
if(storageData.ContainsValue(dataToSearch))
{
return true;
}
}
return false;
}




private bool isExists(string idToSearch)


{
if(storageData != null)
{
if(storageData.ContainsKey((string) idToSearch))
{
return true;
}
}


return false;
}


#endregion




Storage sınıfımız hazır olduğuna göre artık bu sınıfı kullanarak saklanan veriyi serileştiren uygulamamızı yazabiliriz.





class Class1


{


//storage nesnemizin ornegini olusturuyoruz.


private static Storage sakla;


//ikili (binary) serilestirme icin interface ornegini tanimliyoruz.


private static IFormatter IBinaryBicimle;


//serilestirilmis datayi hangi dosyada saklayacagimiz.


private static string storageFileName = "myDatabase.bin";


//dosyaya yazmak icin kullanacagimiz strem


private static Stream isle;




[STAThread]


static void Main(string[] args)


{


Console.WriteLine("Serilestirme ornek projesi, by scriptMan");




//storage nesnemize saklanacak verileri yaziyoruz


sakla = new Storage();


for(int i=0; i<50; i++)


{


sakla.AddData(i,"saklanan"+i);


}




Console.WriteLine("Serilestirme islemine baslamak icin bir tusa basin");


Console.ReadLine();




DoSerialize(); //serilestir




Console.WriteLine("Serilestirme tamamlandi, Serilestirilen veriyi okumak icin bir tusa basiniz");


Console.ReadLine();




PurgeData(); //deserialize et, ve ekrana yaz.




Console.ReadLine();


}




private static void PurgeData()


{


//serilestirilmis nesneyi geri cagirip, datayi ekrana basalim


IBinaryBicimle = new BinaryFormatter();


isle = new FileStream(storageFileName,FileMode.Open,FileAccess.Read);


sakla = (Storage) IBinaryBicimle.Deserialize(isle);


isle.Close();




System.Collections.Hashtable serializedHashTable = sakla.storage;




foreach(string strData in serializedHashTable.Keys)


{


Console.WriteLine("Key: {0} Data: {1}",strData,serializedHashTable[strData]);


}


}




private static void DoSerialize()


{


//binaryformatter nesnesinin bir ornegini aliyoruz..


IBinaryBicimle = new BinaryFormatter();


//filestream kullanarak, olusturacagimiz dosyayi belirliyoruz..


isle = new FileStream(storageFileName,FileMode.Create,FileAccess.Write);


//serilestirme icin yapmamiz gereke tek sey, binaryformatter nesnemizin..


//serialize metodunu cagirmak ;)


IBinaryBicimle.Serialize(isle,sakla);


isle.Close();




//program icerisinde olusturdugumuz hashtable' in icini temizliyoruz..


//bolece serilestirilmis nesne tekrar okundugunda, otomatik doldugunu..


//gorebilecegiz.


System.Collections.Hashtable htClear = sakla.storage;


htClear.Clear();


}


}


Uygulamamızı çalıştırmadan önce, dahil etmemiz gereken isim uzaylarını da yazmakta fayda görüyorum.


Class1 için;


System.Runtime.Serialization

System.Runtime.Serialization.Formatters.Binary

System.IO


Storage sınıfı için:


System.Collections


Serileştirme yazı dizimizin ikinci bölümünde XML serileştirmenin detaylarına ineceğiz ve örnek uygulamalar geliştireceğiz.


Hepinize iyi çalışmalar.

ASSEMBLY

Giriş


Öncelikle hemen söyleyeyim bu yazı programlamayla EN AZ orta seviye ilgilenenlere yöneliktir. Yani bu kritere uymuyorsanız bence hiç bulaşmayın, sonra program yazma işinden tiksinebilirsiniz :). Tabi tiksinme kısmı şaka ama yine de size çok sıkıcı gelebilir. Neyse uzatmadan başlayalım yazımıza.

Programlarınızı yazdığınız ortamları merak ettiniz mi hiç? Acaba onlar nasıl yapıldılar? Ya da ilk programlama dili nasıl ve hangi dille yazıldı(biliyorum biraz garip bir cümle oldu)? İşte bütün bu sorulara genel olarak verilebilecek cevap ASSEMBLY'dir. Assembly, aslında makina dili diye de geçer. Bu dili kullanırken -ki aslında tam olarak bir dil demek de yanlış- işlemcinin temel komut setinde ne varsa onları kullanırsınız. Aynı zamanda bildiğiniz şekilde değişken oluşturma ve yönetme şansınız da yoktur(Örn "int i=10;" gibi komutlarınız yok). Tabi bunlar yüzeysel yorumlar. Çünkü Assembly kullanırken bütün bunları -birçok fonksiyon, değişken yönetimi vs.- siz yaparsınız. Yani bir değişkenin saklanacağı bellek adresi, uzunluğu vs. tamamen sizin denetiminiz ve sorumluluğunuzdadır.

Şimdi önce isterseniz gelin programlama dillerinin sınıflandırılmasına bakalım. Programlama dilleri makinaya yakınlığından insana yakınlığına göre sıralanır. Mesela .NET dillerinden C# insana en yakın dillerden biridir. Bir çok alt seviye işlem derleyici tarafından otomatik yapılır veya yapılması için gerekli kod programa eklenir. Bunun yanında C en alt seviye dillerden biridir. Bellek denetimi gibi şeyler programcıya bırakılmıştır ama bu dille yapabilecekleriniz ve alacağınız performans C#'tan çok daha fazla olacaktır. İşte assembly bu sınıflandırmada makinaya en yakın yerde bulunuyor. Eğer bu dili iyi öğrenirseniz ve kullanabilirseniz deyim yerindeyse bilgisayara takla bile attırabilirsiniz. :)

Bilgisayarlar verileri 2'lik sistemde işler ancak 16'lık sistemde saklarlar. Örneğin 2 sayıyı toplamak istediğinizde bunlar işlemciye bitler şeklinde iletilir ki bu 2'lik sistemdir. Ancak bunları bir dosyaya yazmak isterseniz bu sefer bir byte'lık alanlara yazarsınız ki bu alanlardaki bilgiler de 16'lık sistemde saklanır. Biz de bilgisayarda artık EN ALT seviyede uğraşacağımıza göre bu sistemleri iyi bilmeli, bu sistemler ve 10'luk sistem arasındaki dönüşümleri rahatça yapabilmeliyiz.

Bilgisayarda saklanan ve işlenen verilerden bahsetmişken hemen bunların çalışan programlar için nerelerde yapıldığına bakalım. Normal dillerle yazılan programların tamamı değişkenleri bellekte saklar. Her değişkene ait bir bellek adresi vardır. Hatta pointerlar'la haşır neşir olanlar bu bellek adresilerini anımsayacaklardır. İşte assembly kullanırken bu pointerlar bizim değişkenlerimizi temsil edecek dersek çok da yanlış olmaz. Ancak işlemci komutları genelde doğrudan bellek üzerinde işlem yapmak yapmak yerine genelde REGISTER adını verdiğimiz işlemci çekirdeği üzerindeki sabit değişkenler üzerinde değişiklikler yaparlar.

Bellekle ilgili bilmeniz gereken bir başka şey ise belleğin segmentlere ayrılmış olduğudur. Segment sözcüğünü dilimize kabaca KATMAN olarak çevirebiliriz. Bu katmanlarda benzer tip veriler bir arada tutulur. Örneğin Code Segment(CS)'ta programınızın kodları bulunurken Data Segment(DS)'ta kullandığınız bazı değişkenlerin verileri tutulur. Bunların yanında Stack Segment(SS) ve Extra Segment(ES) gibi başka katmanlar da bulunur. Tüm bu katmanların başlangıç adresleri yanlarında parantez içinde belirttiğim kısaltmalarla aynı adlardaki özel registerlarda tutulur. Bunları yeri geldiğinde göreceğiz. Segmentlerin içindeki hücrelere ulaşmak için de offsetleri(adresleri) kullanırız. Veri yazma ve oku işlemleri DS üzerinde yapılır. O zaman biz bir bellek okuması veya yazması yapacağımız zaman sadece işlemi yapacağımız offseti bilmek zorundayız. İşlemci otomatik olarak DS'de tutlan değere bizim verdiğmiz offset değerini ekler ve ilgili hücreye veriyi yazar yada bu hücreden veriyi okur.

Assembly dilindeki komutlar yani işlemcinin temel komutları genelde 2 parametre kullanır -ki bunlara artık OPERAND diyeceğiz- ve bunlar register adı, bellek bölgesi ya da sabit bir sayı olabilirler. Örnek vermek gerekirse: MOV komutu bri register ya da bellek bölgesine değer atamak için kullanılır. İlk operand atama yapılacak bellek bölgesi ya da register adı, ikinci operand da oraya atanacak değeri içeren bir başka bellek bölgesi, register ya da sabit sayı olabilir. Yeri gelmişken operandları ayırmak için aralarına ","(yazıyla=virgül, rakamla=?!?! :)) koyuluyor. O zaman offseti 100 olan bellek bölgesine 10 değerini atamak için "MOV [$64],$0A" komutunu vermemiz gerekiyor. Dikkat ettiyseniz 100 yerine $64 ve 10 yerine de $0A yazdım. Çoğu assembler(asm kodlarını derleyen program) direk onluk tabandaki sayıları kabul eder ve siz 16'lık tabanda bir sayı girmek istediğiniz zaman başına $ işaretini koymanızı ister. Ancak debug gibi basit ve alt seviye bir derleyici kullanırsanız bütün sayılar standart oalrak 16'lık sitemde yorumlanacaktır. Bu arada komutta da gördüğünüz gibi bellek bölgelerine ulaşmak veya oralarda işlem yapmak için offsetini köşeli parantez içinde yazmamız gerekiyor. Ve son olarak o komut aslında hatalı. Çünkü bellek bölgesine byte cinsinden mi word(2 byte'lık veri) cinsinden mi yazacağımızı belirtmedik. O ne ki derseniz hemen açıklayayım. Bellek bölgeleri aslında 1 word'lük kapasiteye sahiptirler ancak oralara sabit sayılar atanırken 1 byte uzunluğundaki veriler de yazılabilir. Bunu açıklığa kavuşturmak için operandlardan önce "BYTE PTR" ya da "WORD PTR" yazmamız gerekiyor. Vay be, bir komutla amma çok şey anlatmış oldum! :)

Aslında buraya öyle detaylı bir kullanım rehberi ya da birçok komutun kullanım şeklini falan yazmayı düşünmüyorum. Çünkü hem ben o konuda anlatabilecek kadar yetkin değilim hem de zaten bu yazının amacı giriş yapmanızı sağlamak. Zaten sadece assembly kullanarak bir program yazmak aslında biraz çılgınlık :)(kabul ediyorum zamanında 16bitlik programlar yazdık biz arkadaşımla ama cidden kafayı yeme noktasına geldik :)). Bu sebeple buradan öğrendiğiniz genel bilgiler ve komutları öğrenebileceğiniz bir kaynağın da yardımıyla programlarınızda hız artışı veya boyut azaltışı(!) yapabilirsiniz.

Bu kadar gevezelikten sonra genel kullanım ve birkaç komut açıklamsıyla yazımızı bitrelim. Daha önce de dediğim gibi burada komutlardan sonra operand giriyorsunuz. Bazı komutlar operandsız da olabiliyor. Ve bir komut en çok 2 operand alabiliyor(aslında daha çok alan da olabilir ama bildiğim kadarıyla 2 ile sınırlı). Daha önce bahsettiğim MOV komutu 2 operand alır. İlk operand atama yapılacak yeri belirtirken ikinci operand atama yapılacak değeri belirtir. Buraya sabit bir sayı yazabileceğinizi gibi birbellek bölgesi ya da register adı da yazabilirsiniz.

XOR komutu ilk operand ile ikinci operandı XOR mantıksal işleminden geçirir ve sonucu ilk operanda atar. AND, OR gibi diğre mantıksal operasyon komutları da aynı şekilde çalışır.({a:=a xor b} deyimi assemblyde {xor a,b}'ye denk gelir)

PUSH komutu arkasından verilen operandın değerini bellek yığınına atar ve arkasından çağırılan POP komutuyla bu değeri POP komutunun operandına geri yükler. Yanlız burada işlemin sırayla olduğunu unutmamanız gerekiyor. Yani

PUSH EAX
PUSH EBX
.
.
POP EAX
POP EBX

gibi bir komut yazarsanız EAX'ın değeri EBX'e, EBX'in değeri de EAX'a atanmış olur. Çünkü en son EBX'in push edilmesine rağmen ilk POP işleminde EAX kullanıldı. Özetlersek ilk giren son çıkar ya da son giren ilk çıkar diyebiliriz.

CMP komutu kıyaslama yapmak için kullanılır. Verilen ilk opranddan ikinci operand çıkartılır ancak operandların değerlerinde bir değişiklik olmaz. Bu işlem sadece FLAG adı verilen bazı kontrol bitlerinin değerlerinin değişmesine sebep olur ki bu da zaten kıyaslama sonucunda yapılacak işlemi berlemek için yeterlidir. Şöyle ki: burada BASIC'tenbildiğiniz "GO TO"ya benzer bir yapı kullanılıyor. Yani şu şöyleyse buraya git ve oradan devam et gibi bir yapı var. Bunları da GO TO değil JMP, JNZ gibi atlama komutlarıyla yapıyorsunuz. JMP komutu hiçbir koşul gözetmeden operand olarak verilen adrese atlar ve oradan devam eder. JNZ ise "Zero Flag"i olarak geçen ve son işlemin sonucu 0 ise değeri 1 yapılan bir bitin değerine göre atlama yapar. CMP işleminde de iki operandın değeri birbirinden çıkarıldığında sonuç sıfır ise bu iki değer birbirine eşit demektir ki bu durumda JNZ komutu(Jump if Not Zero) hiçbirşey yapmaz çünkü "Zero Flag"i 1'dir. Yani sonuç sıfırdır. JZ komutu ise JNZ'nin tam aksine Jump if Zero yani sonuç sıfırsa şu adrese git anlamına gelir. Yine az önceki durumu düşünürsek bu komutu kulanırsanız program belirtilen adrese sıçrayacak ve buradan devam edecektir.

Son olarak for ve/veya while döngülerine karşılık gelen LOOP komutunu da verelim. For döngülerinde kullandığınız değişken sanırım genel de "i" oluyor. Burada ise bu iş için standart olarak ECX register'ı kullanılıyor. Bu register'a döngünün kaç kez çalıştırlacağını atadıktan sonra işletilecek komutların sonuna LOOP {adres} komutunu yazıp adres olarak da komutların başlangıç adresini verirseniz tam bir for döngüsü elde etmiş olacaksınız. Yalnız burada dikkat etmeniz gereken birkaç nokta var. Öncelikle döngü komutu içerisinde ASLA ECX'in değerini değiştirmemelisiniz. Değiştirmek zorunda kalırsanız da mutlaka PUSH ve POP komutlarını gerekli şekilde kullanıp orijinal değerini geri döndürmeniz gerekir. Aksi takdirde döngünün uzunluğu alakasız şekilde değişebilir. İkinci olarak, LOOP'a operand olarak verdiğiniz adres ECX'registerına döngü sayısını atadığınız yerden sonra olmazsa programınız sonsuz döngüye girer. LOOP'un 2 farklı versiyonu daha var: LOOPZ ve LOOPNZ. Bunlar da hem ECX'in değerine bakıyorlar hem de "Zero Flag"inin değerine. LOOPZ, Loop if zero; LOOPNZ ise loop if not zero yani LOOPZ sıfır olduğu sürece, LOOPNZ de sıfır olmadığı sürece döngüye devam et anlamına geliyor. Eğer döngü içinde bir CMP işlemi varsa bu komutlardan birini kullanarak döngü sayısı bitmeden döngüden çıkılmasınıa sağlayabilirsiniz.(Bu da döngü içinde kullandığımız "break;" komutuna benziyor.)

Evet arkadaşlar biraz dağınık bir yazı oldu, farkındayım. Ama bu kadar geniş ve zor bir konuyu basitçe anlatmak benim için gerçekten çok zor. Ne kadar detaya gireceğimi, hangi komutlardan nasıl bahsedeceğimi belirlemek zor oldu. Umarım yararlı bir yazı olmuştur. Bir de bitirmeden önce bu yazıyı yazmama yardımcı olan değerli arkadaşlarım Yaman UMUROĞLU ve Şenol ÖZKAN'a buradan teşekkürlerimi yolluyorum. Bir sorunuz olursa e-posta adresim aşağıda, çekinmeden mektup yollayabilirsiniz.


--------------------------------------------------------------------------------

ASP ile Dinamik Grafikler

ASP ile Dinamik Grafikler
Microsoft’un ücretsiz olarak sunduğu Office Web Components (OWC) sayesinde profesyonel görünümlü dinamik grafikler oluşturabilirsiniz.
İçerik Başlıkları

Giriş

Bir web sayfası için olmazsa olmaz öğelerden biri grafiklerdir. Tasarım ne kadar iyiyse siteye geleceklerin sayısı da o kadar fazla oluyor. Çekici grafikler hem göze hoş gelmesi hem de okunurluğu kolaylaştırması açısında 21. yüzyılın tarzını yansıtıyor. Sitenin tasarımı, grafiklerin yerleşimi, bunların optimizasyonu ve hatta bunların animasyon halinde gösterimiyle ilgili birçok makale yazılıp-çiziliyor. Bizse bu ay grafiklere faklı bir açıdan bakarak dinamik olarak ASP aracılıyla oluşturulmasını inceleyeceğiz.

Grafiksel gösterimin yazı ile veri listelemekten daha etkin olduğu yadsınamaz bir gerçek. Borsayla uzaktan-yakından ilgilenenlerin de bileceği gibi, borsa verilerinden oluşturulan grafikler gidişatın ne yönde olduğunu, kağıdı almanın karlı mı zararlı mı olduğunu bir çırpıda gösterir. Aynı şekilde işyeri ortamında Excel’de oluşturulan grafikler sayfalar dolusu rakamdan daha akılda kalıcı ve çarpıcı.

Web programcılarının büyük bir bölümü artık veritabanı programcılığı konusunda da bilgi sahibi. Verinin girilmesi, güncellenmesi, silinmesi web sitelerinin ve intranetlerin standart işlemleri arasında. Fakat bunların sunumunda sorunlar yaşanıyor. Bu konuyu isterseniz bir örnek üstünde açalım. Siteye gelen ziyaretçilerin kaydını veritabanında tutulduğunu farz edelim. Ay bazında aldığımız rapor Ocak-200, Şubat-230, Mart-180... şeklinde bir sunumla karşımıza gelirse hangi aylarda site ziyaretçilerinin arttığı, hangi ayda kaç kişi geldiği, bunların genel ortalamaya oranları gibi aslında istediğimiz bilgiler hakkında bakar-bakmaz fikir vermesi oldukça güç. Fakat bunlar basit bir grafikle gösterilmiş olsalardı, raporu anlamak ve sonuçlar çıkartmak çok daha kolay olacaktı! Bunu basit bir bar grafiği ile göstermek bir web programcısı için oldukça kolay bir uygulama olacaktır.

Veri yığınlarından yorum yapacak şekilde grafikler ziyaretçi sayısı gibi tek parametreye sahip olacak kadar basit olmuyor. Borsa verilerini düşündüğümüzde veya kişi-satış rakamlarını düşündüğümüzde işler daha da karmaşıklaşır ve gereksinim duyulan grafik şekilleri de değişir.


HTML Sağ Olsun


Bar halinde kullanılan grafikleri oluşturmak için HTML’in nimetlerinden yararlanmak, çok web programcısının ilk aklına gelecek seçenektir. Tabloları, bir piksellik .gif resimleri ve katmanları (layer) harmanlayarak güzel grafikler oluşturmak mümkün. Geçen ay yaptığımız site yoğunluğunu gösteren uygulamayı da bu kategoriye katabiliriz.

Geçen ay yaptığımız uygulamada sitenin doluluk oranını göstermiştik. Bunun için tam boyda bir .gif dosyasını hücrenin arka planı olarak döşemiş, genişliğini blank.gif ile belirlemiştik.



Bir diğer yöntem ise, hücreleri uygun genişlikte açmak ve yine bir piksellik renkli .gif dosyalarını hücre boyutunda açmaktır.

Bar_tablo.asp














Hangi yöntem size daha uygunsa veritabanından veya dosyadan çekeceğiniz verilerle ASP yardımıyla bu tabloları oluşturmak oldukça kolay olacaktır. İstediğiniz gibi de bu grafikleri özelleştirmek kolay. İsterseniz yatay isterseniz de dikey olarak grafikleri yapabilir, grafik başlığı renklerin ne anlama geldiğini anlatan tabloyla profesyonel görünüşlü bar grafikler yapabilirsiniz.


Ofis Web Bileşenleri


Grafiksel gösterimin özellikle web uygulamalarına ayrı bir çekicilik katacağı kesin. Tabloları kullanarak bar grafiklerini HTML ile oluşturmanın ne kadar kolay olduğunu biraz önce inceledik. Fakat dinamik oluşturulan grafiklerde daha fazlasına ihtiyaç duyduğunuzda (ki genellikle duyulur) 3. parti araçlara yönelmek zorundasınız. 3. parti üreticilerin sunduğu bu araçları edinmek ve web sunucusuna yüklemek ayrı bir sorundur. Çoğu web barındırma hizmeti satan şirket güvenlik gerekçesiyle size kendi yükledikleri bileşenlerin dışında başka bir araç yüklettirmezler. Bu yüzdende eliniz kolunuz bağlı kalır. Tabii bu araçları satın almak için gözden çıkartacağınız paradan hiç bahsetmiyorum. Küçücük uygulamalarını işletim sistemi fiyatına satıyorlar.

Peki, çözüm yok mu? Var tabii. Ailemizin yazılım firması Microsoft, web uygulamalarımızda dinamik grafikler oluşturmamız için bizlere Office Web Components’i (OWC) sunuyor. OWC ile Excel’de grafik oluşturur gibi (hatta Excel sayfalarında da veri çekebiliriz) grafikler oluşturmamıza yardımcı oluyor. Allahtan barındırma şirketleri bu seçeneği göz ardı etmiyorlar da sunucuya Office paketini yada en azından OWC’yi yüklüyorlar.

Microsoft’un ücretsiz olarak sunduğu bu kullanışlı COM bileşenler seti sayesinde çörek (pie) tadında grafikler oluşturmak mümkün oluyor. Grafiğin dışında, Excel bileşeni, pivot tablo bileşeni gibi başka işlemler için de kullanılabiliyor. OWC ile yapılabilecek bir sürü işlem var. Fakat bu ay sadece OWC ile grafik oluşturmaya odaklanacağız.

Web uygulamaları diğer GUI uygulamalardan farklı olarak grafiklerin dosya olarak bulunmasını istemekte. GUI uygulamalarında ise ister dosya olarak istersek de bellekte olan bir grafiği ekranda görüntüleyebiliriz. Bu yüzden işin temelinde içinde grafiğimizi barındıran bir gif dosyası oluşturmak var. Oluşturduğumuz dosyayı yer kaplamaması için hem sunucudan silebilir veya sadece belli bir adda dosya kullanarak devamlı olarak üzerine yazılmasını sağlayabiliriz. Oluşturduğumuz grafiklere gif, png veya jpg dosya formatlarından istediğimizi verebiliriz. Bu tarz grafikler için benim tercihim gif. Zaten Microsoft’ta varsayılan olarak da gif dosya formatını tanımlamış.

OWC ile yapabileceğimiz 60’ın üzerinde grafik türü var. Bazı grafiklerin gösterimden dolayı kendilerine has ayrıca özellikleri de bulunuyor.

Grafik oluşturmak için ilk önce ChartSpace (grafik alanı) oluşturmanız gerekiyor. Bu grafik alanı bir veya daha fazla grafiği barındıracak olan alan tanımlaması. Grafik alanını grafikleri çizeceğimiz bir tuval yüzeyi gibi de düşünebiliriz. Bu tuvale tek bir grafik oluşturmak ve kullanıcıya göstermek genel yaklaşım. Fakat istenirse bu yüzeyde birden fazla da grafik gösterilebilir. Grafikleri tek tek oluşturmak ve bunları tek bir sayfada alt alta göstermek daha mantıklı bir iş olacaktır. Yine de tercih sizin!

Microsoft Office 2000 ve XP’den farklı olarak Office 2003’de tanımlama daha değişik yapılıyor. Sunucunuzda veya bilgisayarınızdaki Office versiyonuna göre tanımlama yapmanız gerekiyor. Kullanımları arasında fazla farklılık olmasa da nesneyi oluşturma (tanımlama) sırasında küçük bir fark var.

set GRAFİK_NESNESİ = CreateObject("OWC.Chart") 'Office 2000 ve XP için
set GRAFİK_NESNESİ = CreateObject("OWC11.Chartspace") 'Office 2003 için

Görünümü istediğiniz gibi özelleştirebilmeniz için oluşturduğunuz grafik nesnesine ait çok fazla sayıda özellik ve metot bulunmakta. Grafiğin arkaplan rengi, ızgara gösterimi, boyutu gibi bir çok özelleştirilebilir parametre. Bir kere grafiğinizi ayarladıktan sonra, istediğiniz sayıda veri kümesini grafiğe yönlendirebilirsiniz.

Veri kümeleri dizi veya string tipinde olabilir. Dizilerin anlaşılması ve uygulaması daha kolay olduğu için stringlere göre daha çok tercih edilir. String tipinde bir veri ile uğraşmak istiyorsanız (veya elinizdeki veri bu tipteyse) veriler arasında virgül veya tab gibi ayırıcı bir özellik bulunmalı. Ben hiç biriyle uğraşmak istemiyorum veriler bulunması gereken yerde: “veritabanında” diyorsanız ne ala. Veritabanından veri çekmeye geçmeden önce basit bir dizi örneği üzerinde ilk grafiğimizi oluşturulalım.

Diziden Grafiğe


Yapacağımız örnek uygulamada, 2005 yılı içinde sitenize gelen ziyaretçilerin aylara göre dağılımının grafiksel olarak göstereceğiz. İşe ilk önce değişkenleri tanımlamakla başlıyoruz, daha sonra ilk değerlerini verip grafik yüzeyini oluşturacağız. Grafiğimiz için gerekli verileri ayarlayıp, grafiğin tipini seçerek özelleştireceğiz. Son adımda ise grafiğimizi bir gif dosyasına yazıp sayfada görüntüleyeceğiz.

1. Adım Tanımlama
Grafiğin dışında sayfada gerekli olan ay ve ziyaretçi dizileriyle (ay, ziyaretci), gif dosyasının adını tutacak olan değişkeni (DosyaAdi) tanımlıyoruz.

Dim oGrafik ' Grafik Nesnesi
Dim oSabitler ' Sabitler Nesnesi
Dim Grafik ' Grafiğimiz
Dim SC, SCA ' Sıra koleksiyonu
Dim ay(11), ziyaretci(11) ' Veriler
Dim DosyaAdi ' Oluşturduğumuz grafik dosyasının adı


2. Adım İlk Değerler
Grafik nesnesini OWC’nin sürümüne göre daha önce belirttiğim gibi tanımlıyoruz. Her iki tanımlamayı da yapmam mümkün değil. Bu yüzden sunucunuzun OWC sürümünü öğrenmenizde fayda var. Bilgisayarınızdaki sürüm ile sunucudaki sürüm farklıysa mutlaka sunucuya göndermeden önce gerekli değişikliği yapmanız gerekir.

'set oGrafik = CreateObject("OWC.Chart") 'Office 2000 ve XP için
set oGrafik = CreateObject("OWC11.Chartspace") 'Office 2003 için oGrafik.Clear()
oGrafik.Refresh()

set oSabitler = oGrafik.Constants 'Önceden tanımlanmış sabitlere erişiyoruz
set Grafik = oGrafik.Charts.Add 'Yeni bir grafik tanımlıyoruz
set SC = Grafik.SeriesCollection 'Seri koleksiyonuna ait tanımlamalar
set SCA = Grafik.SeriesCollection.Add



3. Adım Veriler

Dizi olarak tanımladığımız değişkenleri kendimize göre dolduruyoruz. Ay dizisini Ocak ayından başlayarak Aralığa kadar, ziyaretçi dizisini ise değişimi görebileceğimiz şekilde istediğimiz sayılarla dolduruyoruz.

Oluşturduğumuz verileri grafiğe bağlamamız gerekiyor. Bu yüzden grafik nesnesine eklediğimiz grafiğin seri koleksiyonuna verileri tanımlayacağız. Gerekli parametreler için daha önceden yine grafik nesnesinden türettiğimiz sabitler nesnesini kullanıyoruz.

ay(0) = "Ocak"
...
ziyaretci(0) = "140"
...

SCA.setData oSabitler.chDimCategories, oSabitler.chDataLiteral, ay
SCA.setData oSabitler.chDimValues, oSabitler.chDataLiteral, ziyaretci
SCA.setData oSabitler.chDimSeriesNames, oSabitler.chDataLiteral, "Ziyaretçi Sayısı"



4. Adım Grafik Türü
OWC’de önceden tanımlanmış atmışın üzerinde grafik türü var. Fakat bunları kabaca 13 gruba indirebiliriz. Bu 13 grup birbirinden tamamen farklı. Grup içindeki grafikler ise birbirleri arasında küçük değişiklikler gösteriyor. Ben örneğimizde chChartTypeArea3D tipini kullanacağım.

Grafik.Type = oSabitler. chChartTypeArea3D

5. Adım Özelleştirme

İstenilen etkiyi oluşturabilmek için grafiğimizi özelleştirmemiz (süslememiz) gerekir. Ayları gösterecek bir açıklama tablosu, başlık, değerler gibi öğeleri grafiğimize ekliyoruz. Arena3D tipinde bir grafik için aslında açıklama tablosuna gerek yok. Zaten gösterilmeyecekte. Fakat pie tarzında bir grafik yapsaydık ihtiyaç olacaktı. Bu yüzden çalışmak istediğiniz grafiği belirleyerek ona uyun olarak özelleştirme yapmanız gerekiyor. Arena3D için örneğin boyutlandırmada grafiğin duracağı eksen veya derinlik gibi özellikleri de kullanılabilir.

Grafik.HasLegend = TRUE 'Açıklama tablosu var
Grafik.HasTitle = TRUE 'Başlık var
Grafik.title.caption = "www.sitem.com Ziyaretçi Sayısı"
Grafik.title.font.name = "Tahoma"
Grafik.title.font.size = 10
Grafik.title.font.bold = TRUE

SC(0).DataLabelsCollection.Add.Interior.Color = RGB(255, 255, 255)
SC(0).DataLabelsCollection.Add.Font.Size = 8



6. Adım Gif Dosyası
Sondan bir önceki adımda gif dosyasını oluşturacağız. Gif yerine istenirse JPG veya PNG de kullanılabilir. Dosya sistemini kullanarak istenirse farklı isimlerde dosyalar oluşturulabilir, kopyalanabilir veya silinebilir. Biz örneğimizi basitleştirmek için bunları kullanmayacağız. Tek bir dosya üzerine her defasında yazacağız ve sadece ilgili dosyayı okuyacağız. Yazma işlemi gerçekleştireceğimiz için sistem tarafımdan hem yazma hem de okuma izinleri olan bir dizinde çalışmanız gerekiyor.

DosyaAdi = Server.MapPath(".") & "\" & "byte.gif"
oGrafik.ExportPicture DosyaAdi, "gif", 600, 400

7. Adım Gösterim
Gif dosyası olarak oluşturduğumuz grafiğimizi HTML’de basit bir resim gösterir gibi ekranda görüntüleyeceğiz. Burada dikkat edilmesi gerek husus, oluşturulan resmin tam yolunun, adının ve boyutlarının verilmesi gerektiği.



Grafiğimizi üzerine yerleştireceğimiz bir grafik nesnesi (oGrafik) tanımlamamız gerekiyor. Bu grafik nesnesinin üzerinde istediğimiz sayıda grafik tanımlayabileceğimizden bahsetmiştim. Biz sadece bir tane grafik oluşturacağımız için bir adet grafik değişkeni (Grafik) tanımlıyoruz. Grafik nesnesine ait sabit değerlerini almak için bir de sabitler nesnesi (oSabitler) nesnesi tanımlamamız gerekir. Son olarak da sıra koleksiyonuna ait değişkenleri (SC, SCA) tanımlıyoruz. Bu değişkenler sayesinde grafiğimizi özelleştirme şansına sahip olacağız. Sadece bu tanımlama adımından da anlaşılacağı gibi nesneye dayalı programcılık (OOP) yapacağız.


Veritabanını Bağlama

OWC grafiğine veritabanını da bağlayabilirsiniz. OWC’ye dizi değişkenlerini bağlamaktan çok da farklı değil. Sadece kayıt setinizi grafik nesnesinin DataSource özelliği ile ilişkilendirmeniz ve veri atamada işleminde veritabanının gerekli alanını vermeniz gerekiyor. Tanımlamalarda farklığa dikkat edin!

set oSabitler = oGrafik.Constants
set Grafik = oGrafik.Charts.Add

Dim strSQL, rst, strConnectionString
strConnectionString = "provider=microsoft.jet.oledb.4.0; data source=" & Server.MapPath(".") & "\data.mdb"

set rst = Server.CreateObject("ADODB.Recordset")

strSQL = "SELECT * FROM tblZiyaretci"
rst.open strSQL, strConnectionString, 3, 3

set oGrafik.DataSource = rst

Grafik.Type = oSabitler.chChartTypeArea3D
Grafik.SetData oSabitler.chDimCategories, 0, "ay"
Grafik.SetData oSabitler.chDimValues, 0, "ziyaretci"


Değerlendirme



Web dahil bütün uygulamalarda grafiklerin konu anlatış biçimi ve akılda kalırlığı yadsınamaz bir gerçek. Başta Intranet olmak üzere pek çok alanda web uygulamasıyla alınan raporda grafiksel anlatıma da yer verilmesi uygulamanın başarısını arttıracaktır.

Grafikleri oluşturmak için birkaç yöntem var. Bunlarda ilk akla geleni (ve çok karşılaşılanı) tablolar yardımıyla yapılan grafiklerdir. Bir diğer olası yöntem ise, 3. parti yazılım satın alarak kısıtlı grafik imkanlarından yararlanmak. Buradaki en büyük sorun ise uzak sunucuya 3. parti yazılımın (bileşenin) yüklenmesi. Bunlar dışında Adobe’nin Scalable Vector Graphics (SVG) ve MacroMedia’nın Flash teknolojileri de dinamik grafikler oluşturabileceğiniz ortamlar.

OWC ise Microsoft tarafından sunulan ücretsiz geniş bir bileşen kütüphanesi. Farklı işlemler için de kolaylıkla kullanılabilen OWC profesyonel görünümlü çekici grafikler oluşturmak için biçilmiş kaftan. Üzerinde biraz çalışarak Excel’de çıkarttığınız grafikleri rahatlıkla web ortamına da aktarabilirsiniz.

Çeşitli grafik uygulamalarını www.anilsezer.com/byte/asp adresinde bulabilirsiniz.

7 Şubat 2009 Cumartesi

SULTAN MEHMED VAHİDUDDİN(VAHDETTİN)

Sultan Mehmed Vahiduddin (Vahdettin)

Babasi : Sultan Abdülmecid
Annesi: Gülistü Kadin Efendi

Dogumu : 2 Subat 1861

Vefati : 15 Mays 1926

Saltanati : 1918 - 1922 (4) sene



--------------------------------------------------------------------------------

Mehmed Vahidüddin de Istanbul'da dogmustur. Orta boylu, zayü fakat kuvvetli bir vücudu vardi. Kiymetli ulema tarafindan iyi bir tahsil yaptirildi.Tahta çiktiginda Osmanli Devleti en kötü günlerini yasiyordu. Birinci Dünya Savasinda kendi cephelerimizde gâlip gelmemize ragmen yenik çikmistik. En agir sartlari ihtiva eden Mondros ve Sevr anlasmalari yapildi. Devletin tamamen elden çiktigini gören padisahin yüksek seviyede bir gizli toplanti yaparak zamaninin kabiliyetli subaylarina, Anadolu'ya geçip milleti istilâcilara karsi ayaklandirip teslim olmamalarini tavsiye ettigi söylenir. Anadolu'da Milli kiyam harekâti oldu. Milli Meclis tesekkül etti. Yeni meclis Padisahligi kaldirarak, Cumhuriyet idaresini kabul etti. Zaten Istanbul isgal altinda idi.Padisahin elinde ne bir kuvvet ve ne de bir selâhiyet vardi. Padisahligin kaldirilmasi ve Osmanli Hanedanina yapilan tenkitlerin son hadde varmasiyla Istanbul'dan, dolayisiyle Türkiye'den ayrildi. 641 senelik Osmanli Hanedaninin son üyesi, son padisahi ve müslümanlarin yüzüncü halifesinin bu ayrilisinda sene 1922 idi. Avrupa'nin bir çok yerlerine ugradi. Pek çok yerden oturma teklifi aldi. Fakat hiç kimsenin gizli gayesine alet olmadi. Nihayet Italya'nin San Remo sehrinde oturmaya karar verdi. Vefatina kadar orada kaldi. Hayati maddi sikintilar içinde geçti. 15 Mayis 1926 tarihinde vefat etti. Cenazesi Türkiye'den istenmedigi için Türkiye'ye getirilemedi. Borçlari bulundugundan tabutuna haciz kondu. Suriye Devlet Baskani cenazeye sahip çikti ve tabutu Suriye'ye getirtti. Sam'da Sultan Selim Camii avlusuna defnedildi. Vefatinda 65 yasinda idi. Defnedildigi mezarlik 1965 senesinde park haline getirildi. Simdi mezarinin da kat'i olarak nerede oldugu belli degildir. (Allah rahmet eylesin). Son padisahin Seyhülislamlari: Musa Kazim Efendi, Dagistanli Ömer Hulusi Efendi, Hayderi Zâde ibrahim Efendi, Mustafa Sabri Efendi, Dürri Zade Abdullah Efendi, Medeni Mehmed Nuri Efendi.

Sadrazamlari : Talat Pasa, Izzet Pasa, Ahmed Tevfik Pasa,Damad Ferid Pasa, Ali Riza Pasa, Hulusi Salih Pasa ve Tevfik Pasa.

Erkek çocuklari: Mehmed Ertugrul Efendi.

Kiz çocuklari: Rukiye Sultan, Sabiha Sultan,Fatma Ulviye Sultan.

SULTAN MEHMET RESAT

Sultan Mehmed Resad

Babasi : Sultan Abdülmecid
Annesi : Gülcemal Kadin Efendi

Dogumu : 2 Kasim 1844

Vefati : 3 Temmuz 1918

Saltanati : 1909 - 1918 (9) sene



--------------------------------------------------------------------------------

Besinci Mehmed Resad Istanbul'da dogdu.Orta boylu, mavi gözlü ve beyaz tenli idi. Siirle de mesgul oldu. Fakirlere ve hastalara çok yardim ederdi. Tarih kitaplarini okumaktan zevk alirdi. Çok kuvvetli bir hafizaya sahipti.Babasi onun tahsiline cok ehemmiyet verdi.Daha ziyade sark ilimleri ile mesgul oldu.Sultan Devrinde idareye hiç tesiri olmuyordu.Daha ziyade devlet pasalarin ellerindeydi. Mesrutiyet ilân edilmis ve Meclis-i Mebusan karari müessir olarak bulunuyordu.Bu devirde 1910 senesinde Arnavutluk isyani bastirildi. 1912'de Balkan Harbi basladi.1914'de Almanlarin safinda, Birinci Dünya Savasina girildi. 1915'de Müttefikler hemen bütün taarruzlari durdurdu. Ingilizler ve Fransizlar Çanakkale'de 130.000 ölü verdiler.1916'da Çanakkale'yi geçemiyeceklerini anlayan Ingiliz ve Fransiz kuvvetleri çekildiler.1917'de yapdan antlasma ile Rusya, Kars,Batum ve Ardahan'dan çekildi. 1918 senesinin Temmuz ayinda Besinci Mehmed Resad vefat etti. Vefatinda 73 yasini geçiyordu. Eyüp Sultan'daki türbesine gömüldü. (Allah rahmet eylesin)

Erkek çocuklan : Mehmed Necmeddin,Mehmed Ziyaeddin, Ömer Hilmi.

Kiz çocugu olmamistir.

2.ABDULHAMID HAN

II. ABDULHAMID HAN

Osmanli pâdisâhlarinin otuzdördüncüsü, Islâm halîfelerinin doksandokuzuncusudur. Sultan Abdülmecîd'in ikinci oglu olup 1842'de dünyâya gelmistir.

Genç yasta dînî ve fennî ilimleri mükemmel bir sekilde ikmâl etti. Sâzeliyye tarîkati seyhi Mehmed Zâfir Efendi ve Kâdiriyye tarîkati seyhi Ebu'l-hüdâ Efendi'den feyz alarak zâhirdeki dirâyetini, mânevî bir kemâl ile de tâçlandirmistir.

Daha genç yasta zekâsi ve siyâsî kâbiliyetleriyle temâyüz etmis bulundugundan amcasi Sultân Abdülazîz Han, Misir ve Avrupa seyâhatlerinde O'nu da yaninda götürmüstü.

Çok nâzik idi. Herkesin gönlünü almasini bilirdi. Fevkalâde bir zekâ ve hâfizaya sâhibdi. Bir defa gördügü veya sesini isittigi kisiyi aslâ unutmadigina dâir kaynaklarda sayisiz misâller vardir. Alman birligini kurmus olan Prens Bismark rivâyete nazaran:

"Dünyâda yüz gram akil varsa, bunun doksan grami Abdülhamîd Han'da, bes grami bende, kalan bes grami da diger dünyâ siyâsîlerindedir..." demistir.

O'nun en büyük talihsizligi, devleti çok kötü sartlar altinda eline almis olmasidir. Buna ragmen hiç yilmadan, bikmadan müthis bir zekâ, sabir ve büyük bir mahâretle devleti, otuzüç sene ciddî bir kayba ugratmadan idâre etmistir.

Sultân Abdülazîz merhûm gibi büyük masraflari ve dis borçlanmayi mûcib olan harpçi bir siyâset takibi yerine, gelisen sanayî hareketleri dolayisiyla batida temâyüz etmis bulunan iki devleti karsi karsiya getirmek ve onlarin menfaat çatismalarini tahrîk ederek ülkeyi -âdetâ- bir sirat köprüsü üzerinde yürütmek, O'nun siyâsetinin temel esasi olmustur.

Bu sulhçu siyâsetin neticesinde yeni askerî yatirimlarin masrafindan kat'an nazar dis borçlarin 300 milyon altindan, 30 milyona indirilmesi saglanmistir. Abdülhamîd'in Almanlar'i Ingiliz siyâsî emellerine karsi mâhirâne bir sûrette kullanmasinin çok çesitli ve parlak tezâhürleri vardir. Medîne demiryolu imtiyâzinin Almanlar'a verilmesi ve stratejik bir mevkî olan Akabe'nin onlarin yardimiyla Ingilizler'den kurtarilmasi, bunun târihte en tipik bir misâlidir.



Abdülhamîd Han, 93 Harbi felâketinden aldigi dersle gayr-i mütecânis ve devleti parçalamaya sürükleyebilecek cereyanlarin müsâhede edildigi Meclis-i Mebûsân'i böyle bir felâkete mânî olabilmek için 1878'de süresiz olarak kapatmistir.

Mithat Pasa ve avanesinin sebep oldugu 93 Harbi felâketinin neticesinde Rumeli'de kaybedilen topraklardan pek çok müslüman ahâli, muhâcir olarak Istanbul'a gelmis bulunuyordu. Bunlarin magdûriyetlerini istismâr ederek toplayabildigi bir kisim issiz-güçsüz takimiyla Çiragan Sarayi'na yürüyen Ali Suâvî, Sultân Abdülhamîd'i devirerek, bu sarayda mahbus bulunan V. Murad'i tekrar tahta geçirmeye tesebbüs etti. Sultan V. Murad, mason Mithat Pasa ve avanesi tarafindan tâ sehzadeliginden beri hususî bir sûrette yetistirilmisti. O da, akil hocasi Mithat Pasa gibi otuzüç dereceden bir masondu. Fakat hiç süphesiz bu teskîlata onun gerçek hüviyetini bilmeden girmisti. Bununla beraber serîrler, kendisi pâdisâh olsa menfûr emellerine daha kolay ulasacaklarini düsünüyorlardi. Ali Suâvî ise, Sulltan Abdülhamîd Han tarafindan Galatasaray Lisesi müdürlügünden bozuk siyâsî düsünceleri sebebiyle azledilmis bulunmanin igbirâri (gücenikliligi) ile haraket ediyordu. Gerçekten de Ali Suâvî, yavas yavas yahûdî siyâsî emellerinin hâkim olmasiyla Osmanli aleyhtarligina meyleden Ingiliz siyâsetinin kör bir âleti durumundaydi.

Besiktas muhâfizi yedi-sekiz Hasan Pasa'nin kafasina indirdigi bir sopa ile Ali Suâvî'nin can vermesi bu ihtilâl tesebbüsünün akîm kalmasini saglamistir. Ancak Sultân Abdülhamîd, bu ve benzerî vak'alar dolayisiyle mâruz bulundugu büyük tehlikeyi kavramis, devrinin sözde münevverlerinin hamâkat ve ihânetlerine ilâveten rum, ermeni ve yahûdîlerin kaynattiklari fitne kazani sebebiyle muârizlarinin "istibdâd" diye adlandirageldikleri siki bir dâhilî siyâset tâkibine mecbûr kalmistir.



Abdülhamîd Han, bu karisik iç bünyeye ragmen halkin huzûru ve ülkenin selâmetini saglayabilmek için bugünkü modern devletlere bile örnek olabilecek derecede sumüllü bir istihbarat teskilati kurmustur. Bu teskilâtta kendisine karsi bombali bir suikasti gerçeklestirmis bulunan ermeni asilli Jorris'i dahi bir istihbârât elemani olarak kullanmasi, sâyân-i dikkattir. Hattâ Ingilizler'in Madrit büyükelçileri vefât ettiginde, onun açilan çelik kasalarinda Sultân Abdülhamîd'le muhâbere hâlinde bulunduguna dâir vesâikin ortaya çikmasi, Ingilizler'i bu istihbârâtin kuvvet ve sumülü hakkinda dehsete sevketmistir. Kendisi tahttan indirildikten sonra azili muhâlifleri tarafindan Çiragan Sarayi'nin yakilmis bulunmasi da, O'nun bu müthis istihbârât teskilâti ile alâkalidir. Zîrâ bu sarayin bodrum katlari, lebâleb Sultân Abdülhamîd'e verilmis jurnallerle doluydu ve hiç süphesiz ki saray, onlari yok etmek için yakilmisti. Çünkü bu jurnaller, Ittihat ve Terakkî'nin ileri gelenlerini birbirine düsürecek mâhiyetteydi. Sathî bir nazarla bakildiginda, bunlarin birbirleri aleyhine Sultân Abdülhamîd Han'a jurnallik ettikleri ortaya çikmaktadir.

Bu jurnal keyfiyeti dolayisiyle de Sultân Abdülhamîd, muârizlari tarafindan haksiz ve çirkin bir sûrette itham edilegelmistir. Gûyâ ulu orta verilmis saçma-sapan jurnallere istinâden birçok insani sürgüne gönderdigi pek çok yazilip söylenmistir. Bu hususdaki gerçegin lâyikiyle kavranabilmesi ve merhûmun dirâyet, liyâkat ve hassasiyyetinin anlasilabilmesi için bir tek misâl zikredelim:

Birgün yüksek seviyede bir me'mûrun Çiragan Sarayi önünden geçerken gûyâ:

"–Âh Sultân Murâd Efendimiz!.. Sen basimizda olsaydin, böyle mi olurdu?!."

meâlinde bir söz söylemis oldugu yolunda bir jurnal alinmis ve bundan dolayi da o me'mûrun Fizan'a sürgün edilmesi hususunda irâde-i seniyye sâdir olmustu. Buna îtiraz eden Sadrazam Saîd Pasa:

"–Efendimiz, bu ne hâldir, anlayamiyorum?!. Bu me'mûrun takriben alti ay önce ihtilâs (rüsvet) cürmü sâbit oldugu halde onu afvetmistiniz.. Simdi ise, enti-püften bir jurnale istinâden onu sürgüne gönderiyorsunuz?!." demesi üzerine, o koca Sultân Sadrazam'a su cevâbi vermistir:

"–Hayir Pasa Hazretleri, ben onu bu jurnalden dolayi sürgüne göndermiyorum! Asil sebep, o zikrettiginiz ihtilâs cürmüdür. Esâsen bu jurnali de kasden kendim verdirttim. Lâkin onu, alti ay evvel böyle bir tertibe bas vurmadan cezâlandirsaydim, yalniz kendisini degil, çoluk-çocuk ve akrabâlarini da cezâlandirmis olurdum. Onlar da es ve dostlarina karsi mahcûb olurlardi. Simdi ise, bu adami gûyâ benim istibdâdima karsi çikmis bir insan sifatiyla kahraman telâkkî edecekler. Böyle olmasini tercih ettim!.."

Bu öyle bir hâdisedir ki, O'nun devri için sürüp gelen hakli-haksiz tenkîdlerin degerlendirilmesinde bize büyük bir isik tutar.



Sultân Abdülhamîd'in kalbî rikkatini kavramaya yarayacak bir hâdise de sudur:

Sultan Abdülazîz'in sehîd edilmesinden bes sene geçmesine ragmen halk, bu menfûr hâdiseyi unutmamisti. Kâtillerin yakalanip cezâlandirilmasini istiyordu. Bu umûmî arzu üzerine Yildiz'da hususî bir mahkeme kuruldu. Bu mahkemede Mithat Pasa, Hüseyin Avni Pasa ve daha bazilarinin Abdülazîz Han'in kâtili olduklari sâbit oldu. Mahkeme bunlar hakkinda îdam cezâsi verdi. Ayrica Plevne kahramani Gâzî Osman Pasa ve Ahmed Cevdet Pasa gibi sahsiyetlerin dâhil oldugu kirk kisilik mûteber bir hey'ete de bu karar bir kere daha tedkîk ettirildi. Onlar da, müttefikan karâri isâbetli gördüklerini beyân ettiler. Buna ragmen Sultân Abdülhamîd Han, îdâm cezâlarini sürgüne tahvîl etti. Fazladan olarak da suçunu îtiraf etmis bulunan Mithat Pasa'nin cebine sürgüne giderken 800 altin harçlik koydu. Insan, hâdiselerin içyüzüne vâkif olunca, bu büyük merhametli pâdisâha karsi dil uzatanlari aslâ afvedip hos göremez!..

Sultân Abdülhamîd Han'in Dünyâ çapinda ithâmina vesîle olan sebeplerden biri de, devrinde basgösteren ermeni mes'lesidir. Ermeniler, ülkemizde yasayan gayr-i müslim teb'a arasinda bizim örf ve âdetlerimizi benimsemek yönünden müstesnâ bir durumda idiler. Asirlarca "teb'a-i sâdika" olarak yâdedilmislerdi. Fakat günün birinde kendilerini kullanarak siyâsî emellerine ulasmak isteyen Ruslar'in propagandalarina muhâtab olarak sadâkatten ayrildilar. Ilk önce Rus tahrikiyla baslayan ermeni kipirdanislari, sonradan bütün hiristiyan bati devletlerinin alâkasini celbetmis ve onlar da bu ihtilâfa dâhil olmuslardir.

Bu maksadla ermenileri silâhlandiran Ruslar'in faâliyetini ve bunun nihâî gâyesini görmekte gecikmeyen dâhî Sultân Abdülhamîd Han, ermenileri toplu olduklari bölgelerden saga sola cebrî bir sûrette göç ettirmek gibi bir tedbire bas vurmustur. Fakat bu kadar mâsumâne bir hareket, yahûdî destegi ile de beslenerek onun aleyhinde beynelmilel bir propaganda tezgahlanmasini intâc etmistir. Neticede kendisine Viyana'da îmâl edilerek gönderilmis bir kupa arabasina îmâlât esnasinda uzun bir zamana ayarlanmis saatli bir bomba yerlestirilmis ve bu bomba, kendisinin seyhulislâm ile Cum'a namazi hitâminda mûtâd hârici üç-bes dakika ayaküstü konusmasi sebebiyle o daha arabaya binmeden Yildiz Câmî-i Serîfi önünde infilâk etmis, asker, sivil bir çok insan ölmüs ve yaralanmistir. Herkesin telâsa kapildigi o hengâmede Sultân Abdülhamîd Han, sükûnetini muhâfaza ederek:

"Korkmayin, korkmayin!.."

diye bagirmis ve arabanin seyis mahalline oturarak ecnebî sefirlerin alkislari arasinda atlari kirbaçlayip sarayina avdet etmistir.

Devrinin sözde münevverlerinin gafletine bakiniz ki, Belçikali ermeni Jorris'in tertibi eseri olan bu suikati alkislayanlar görülmüstür. Hattâ zamanin gözde sâiri Tevfik Fikret, bu hâdiseyi anlatan 'bir anlik gecikme' anlamindaki "Bir Lahza-i Teaahur" isimli siirinde suikastçiyi 'sanli avci' diyerek tebcil etmekte ve suikasdin muvaffakiyetsizlikle neticelenmesinden dogan teessürlerini terennüm etmekteydi. Buna ragmen Sultân Abdülhamîd'in kendisine karsi en küçük bir mukâbelesini tarihler kaydetmemektedir.



Sultân Abdülhamîd devrinin gâilelerinden biri de o siralarda filizlenmeye baslayan yahûdî mes'lesidir. 1982 yilinda Isviçre'nin Bazel sehrinde 'ilk siyonist kongresini' toplamis olan Teodor Hertzel, daha önce yazdigi "Yahûdî Devleti" isimli kitâbiyla dünyâ yahûdîlerinin Filistin'de yeniden toplanmalari gerektigi yolunda tesebbüse geçmis ve bu gâye için o gün dünyânin en büyük zengini olan yahûdî Roçilt âilesinin destegini saglamisti. Onun namina iki kere Türkiye'ye gelen ve yahûdîlerin Filistin'e avdet edip orada ikâmet eylemeleri mukâbilinde Osmanli Devleti'nin dis borçlarini ödemek teklifini Roçilt namina Sultân Abdülhamîd'e arzetmis olan Hertzel'in, O'nun çelik gibi sert irâdesine çarparak redde mahkûm olmasi sebebiyle, yahûdîler tarafindan bütün dünyâda o büyük hükümdar için bir karalama kampanyasi baslatilmistir.

Bu kampanya sebebiyledir ki, otuzüç senelik saltanati boyunca hiç kimsenin burnunu kanatmamis, ancak ana ve babasini öldürmüs olan bir cânî disinda normal mahkemelerce verilen îdâm cezâlarini bile tenfiz ettirmemis, kendisine suikast yapan bir haremagasini ve hattâ ermeni Jorris'i dahî afvetmis bulunan Sultân Abdülhamîd Han için haksiz ve mesnedsiz bir sûrette 'kizil sultan' lakabi, meshur ve harciâlem bir hâle getirilmistir. Hayfâ ki, yahûdîlerin îcâd edip ermenilere armagan ettikleri bu iftirâ, böyle ecnebî kimselerden ziyâde vatanin o gün bugündür bir çok talihsiz Türk asilli nesilleri arasinda da revaç bulmustur.

Filistin'e göç edip yerlesmek gibi ilk nazarda mâsumâne görünen arzularinin Sultân Abdülhamîd tarafindan mutlak bir sûrette redde mahkûm oldugunu gören yahûdîler, o mübârek sahsiyeti bertaraf etmedikçe emellerine ulasamayacaklarini anlamakta gecikmediler. Bundan dolayidir ki, önce Istanbul'da ve sonra da yahûdî muhiti Selânik'te temerküz eden Ittihat ve Terakkî cemiyetini kurdurarak vatanin bir kisim bedbaht evlâdlarini bir propaganda sisinde bogdular.

Tehlikeyi gören Sultân Abdülhamîd, yahûdîlerin Filistin'de toprak satin almalarini yasakladigi gibi, onlarin bu emellerine muvâzaa yoluyla ulasmalarini engellemek için de, her arâzîsini satmak isteyenin yerini sahsî parasiyla satin alarak "emlâk-i sâhâne" hâline getirmistir. Filistin Çiflikât-i Sâhânesi böylece vücûda gelmistir. Sultan Abdülhamîd bunlara ilâveten oradaki müslüman nüfûsu da artirma yoluna gitmistir.

O sirada Rus tahrikiyle tesekkül etmis çeteler, Balkanlar'i cadi kazani hâline getirmis bulunuyordu. Bunlarla mücâdele eden birliklerin birtakim subaylari, Ittihat ve Terakkî ve onun arkasindaki yahûdîlerce igfâl edilmislerdi. Bunlar isyân ederek Abdülhamîd Han'i II. Mesrûtiyet'in ilânina zorladilar.

Abdülhamîd Han, yeni bir kânûn-i esâsî hazirlatip tatbik etmeyi düsünüyordu. Fakat gayet buhranli ve ihtilâl hazirliklarinin yapildigi karisik bir ahvâl içinde buna firsat bulamamisti. Mecbûren eski kânûn-i esâsîyi yürürlüge koydu.

Meclis-i Meb'ûsân 17 Aralik 1908'de toplandi. En azili Osmanli düsmanlari dahi meb'ûs seçilerek meclise girmisti. Hatta ne hazîndir ki, mecliste azinliklarin te'sîri müslüman meb'ûslardan daha çoktu.

Ittihat ve Terakkî iktidari, kisa zamanda halkin umûmî sûrette nefretini kazandi. Karsilastigi tenkîdleri siddetle bastiriyor ve muhâliflerini gazeteci veya fikir adami demeden suikastlerle yok ediyorlardi. Bu durum, zuhûr eden nefreti had safhaya çikarinca, kendi iktidarlarini korumak için sâdik adamlari sandiklari avci taburlarini Rumeli'den getirip Taskisla'ya yerlestirdiler. Ancak bunlarin baslarindaki subaylar, kisa zamanda Beyoglu âlemleriyle siyâset girdabina sürüklenip askerleriyle alâkalarini kestiler. Serbest kalan avci taburlari efrâdi, halkla temas edince, Ittihat ve Terakkî'nin irtikâb ettigi mel'ûnâne zulüm ve hiyâyetlerini ögrenerek kendilerini korumaya me'mur olduklari bu kadroya karsi ayaklandilar. Istanbul'da birkaç gün terör hâkim oldu. Bazi Ittihat ve Terakkî milletvekilleri sokak ortasinda katledildi. Iste 31 Mart Vak'asi denilen hâdise budur. Bu ayaklanma sebebiyle iktidarlarini tehlikede gören Ittihat ve Terakkî, Rumeli'den "Hareket Ordusu" denilen çogu rum, ermeni ve yahûdî çapulcusu onbes bin kisilik bir kuvveti Istanbul üzerine sevk ettiler.

Sultân Abdülhamîd, bu gürûha karsi -maalesef- asiri merhameti sebebiyle hareketsiz kaldi. Halbuki sarayinin etrafinda iyi tâlim ve terbiye görmüs otuz bin asker vardi. Neticede tâc ve tahti için su hengâmede bile kan dökmeye râzi olmayan Sultân Abdülhamîd, Hareket Ordusu'na arkalanan Ittihat ve Terakkî hükûmetince hal' olunarak tahttan indirildi. Usûlen tanzîm edilen fetvâ da, tamamen haksiz ve mesnedsizdi. Kendisine bulunabilen kusur, "kütüb-i mu'tebere-i dîniyyeyi cem' u ihrâk", yâni mûteber dînî kitaplari toplatip yaktirmakti.

Bu bühtanin asli sudur: O zaman Kur'ân-i Kerîm'in sahislarca basim ve yayini yasakti. Kur'ân-i Kerîm'i devlet bastirir ve parasiz dagitirdi. Sahislarin Kur'ân-i Kerîm tab'inda gereken ihtimâmi gösteremeyecekleri düsüncesiyle konulmus bulunan bu yasaga ragmen Kur'ân-i Kerîm tab' olursa, bunlar müsâdere edilip ihrâk olunur (yakilir), külleri de îtinâ ile çignenmeyecek bir topraga gömülürdü.

Diger taraftan, hal' fetvâsi âid oldugu makamdan sâdir olmamistir. Bu maksadla parlementoya celbedilen ve kendisine baski tatbik edilen fetvâ emîni Haci Nûrî Efendi, Pâdisâh'in hal'i için kâfî bir ser'î sebep mevcûd olmadigini beyândan sonra:

"Hal' mes'ûmdur (ugursuzdur)! Sultân Abdülazîz hal' edildi. Arkasindan koca Rumeli elden gitti. Rumeli'den milyonlarca muhâcir Istanbul'a geldi. Medrese ve câmîler, lebâleb bunlarla doldu. Ben o zaman medrese talebesiydim. Yetîm çocuklari sirtimda tasimaktan omuzlarim çürümüstü. Mâdem ki ille de Pâdisâh'in hal'ini arzu ediyorsunuz, kendisine arzediniz; O, kendi kendisini azletsin!.." dedi.



Bu münâkasaya sâhid olan Talat Pasa, ipin ucunun elinden kaçacagini anlayinca, ulemâdan olan milletvekillerine istenilen fetvâyi vermeleri için baski yapti. Bu baski neticesinde tefsir sâhibi Elmalili Hamdi Efendi'nin takrîri (söyleyip yazdirmasi) ile Sultân Abdülhamîd Han hakkindaki mâhut hal' fetvâsi ortaya çikti.

Hazindir ki, bu keyfiyeti Sultân Abdülhamîd'e teblig için parlementoca seçilmis bulunan dört kisilik hey'ete israrla Selânik meb'ûsu yahûdî Emanuel Karassou Efendi kendisini de dâhil ettirmisti. O koca Sultân, bu hey'ette su yahûdî çifiti da görünce, digerlerine dönüp:

"–Sizler müslümansiniz! Beni halîfe olarak görüp görmemeyi arzu etmek hakkinizdir. Lâkin bu yahûdînin aranizda isi ne?!." demekten kendini alamadi.

Onlar da, bu söz üzerine baslarini önlerine egdiler. O zaman Sultân, bütün bu olanlarin mukadderât îcâbi oldugunu düsünerek:

"Bu, azîz ve alîm olan Allâh'in takdîridir..." meâlindeki âyet-i kerîmeyi okudu.

Azledildikten Sonra...

Hal' edilmesinin hemen ardindan Sultân, kasden bir yahûdî muhiti olan Selanik'e gönderilip orada zengin bir yahûdî âile olan Alâtîn-i Biraderler'in kösküne hapsedildi. Burada siradan bir adama bile revâ görülmeyecek zulüm ve baskilar altinda tutuldu. Çoluk-çocuk bütün âile efrâdi günlerce aç birakildi. "Emlâk-i sâhâne"si millîlestirildigi (!) gibi, menkul serveti de tamamen elinden alindi. Hareket Ordusu, Istanbul'a geldiginde Pâdisâh'in tahttan indirilmesini mutaakiben Yildiz Sarayi'ni tamamen yagmalayarak zenginlesmis bulunan subaylar, bir de bu sürgün hâdisesinden sonraki yagma ile "orduya hediye" (!) adi altinda âdetâ büyük bir servete kondular. O derecede ki, takriben on yil sonra Sultân Vahidüddîn merhûmun tâlimati ile yapilan tahkîkatta ortaya çikan tablo yüz kizarticidir. Yagmagir ve hirsizlarin listesi, Hareket Ordusu Mahmud Sevket Pasa'dan baslayarak en küçük zâbite kadar kocaman bir liste teskil etmis, fakat o buhranli zamanda bu hiyânetin hesâbini sormak -maalesef- mümkün olmamistir.

Sultân Abdülhamîd Han'i bertaraf eden Ittihat ve Terakkî erkâni ülkeyi câhilâne bir sûrette idâre etmeye basladi. Yumusak huylu pâdisâh Sultân Resâd, kendilerinin elinde âciz bir kukladan farksizdi.

Ittihat ve Terakkî hükûmetinin gaflet ve cehâletleri, birçok aci felâketlere sebeb oldu. Trablusgarb'daki mahallî mukâvemet devâm ederken Balkan Harbi çikti. Ordunun hiçbir ciddî hazirligi ve istihbarati yoktu. Düsmanin sür'atle ilermesi karsisinda Selânik'i tehlikede gören Ittihat ve Terakkî hükûmeti, Sultân Abdülhamîd'i oradan Istanbul'a nakletmek tesebbüsünde bulundu. Sultân Abdülhamîd, ne sebeple Istanbul'a nakledilmek istendigini sorunca, kendisine karsi karsiya bulunduklari askerî tehlike nakledilerek, düsmanin Selânik'e yaklasmakta oldugu bildirildi. Pâdisâh'in dis dünyâ ile yillardan beri bütün alâkasi kesilmis bulundugundan olup bitenlerden haberi yoktu. Durumu ögrenince dehsete kapildi ve:

"–Gâlibâ siz kiliseler mes'elesini hallettiniz!.." diye hicranla haykirdi.

Ardindan bunu kendisine haber veren Râsim Bey'e büyük bir öfke ile:

"Râsim Bey! Râsim Bey!.. Selânik demek, Istanbul'un anahtari demektir! Ordumuz nerede, askerimiz nerede?.. Ecdâd kanlariyla sulanan bu topraklari nasil terkederiz? Biz buralari birakip gidersek, târih ve ecdâd bizim yüzümüze tükürmez mi?.. Birâderim Hazretleri, buranin tahliyesine râzi mi oldular? Nasil olur? Hayir, ben râzi degilim!... Yetmis yasimda olduguma bakmayin! Bana bir tüfek verin, asker evlâdlarimla beraber Selânik'i son nefesime kadar müdâfaa edecegim..." dedi.

Fakat kendisine Sultân Resâd'in selâmi ve ricâsi iletilince, bir Osmanli hânedâni mensûbu olmanin mes'ûliyeti ile Pâdisâh'in irâdesine boyun egmek zorunda kalarak Istanbul'a nakledilmeyi kabul ederken, büyük bir teessür içindeydi.

Dogruydu. Balkan kavimlerinin aralarinda bir ittifak kurulmasinin asil sebebi, kiliseler mes'elesinin halledilmis olmasiydi.

Oysa Abdülhamîd Han, Istanbul'da Balat'taki Rum ortodoks patrikliginin karsisina bunlarin Rum patrikligine muâdil ve onunla ayni hukûka sahib "erksahlik" adiyla Bulgar kilise riyâsetini te'sis etmisti. Patrikhâne demek olan bu müessesenin binasini da, bir gecede monte ettirmisti.

Bu surette Bulgar kilisesi, Sultân Abdülhamîd'in bu siyâsî manevrasi ile teessüs etmis oldu. Bu bir ihtiyaç oldugu ortaya çikinca, Bulgar ve Rumlar'in müstereken oturduklari yerlerde kavga basladi.

Gâfil Ittihatçilar, is basina gelince, "kiliseler kanunu" denilen bir kanun çikardilar. Rum ve Bulgarlar'in müstereken yasadiklari yerlerdeki kiliseleri onlar arasinda taksimi için nüfûs ekseriyetini esas aldilar. Sayim yaptilar. Hangi taraf ekseriyette ise kiliseyi hükûmet kuvvetlerini kullanarak o tarafa teslim edip kilisesiz kalan tarafa da iki sene içinde devlet parasiyla yeni bir kilise yaptirarak aralarindaki ihtilâfi bertaraf ettiler.

Bu surette kiliseler kavgasi hitâma erince, Bulgarlar ve Yunanlar, birkaç yil içinde dost olduklari gibi, ezelî düsmanimiz Sirplilar'i da yanlarina alarak Balkan Harbi'ni baslattilar.

Ittihat ve Terakkî hükûmetlerinin cehâlet ve hiyânetleri saymakla bitmez... Sultân Abdülhamîd Han'in artik yahûdî güdümüne girmis bulunan Ingiliz siyâsetine karsi Almanlar'i tahrîk etmesinin mâhiyyetini anlayamayan Ittihatçilar, Balkan Harbi'ni mütaakiben ortaya çikan I. Cihan Harbi'ne de Almanlar'in yaninda girmek ahmakligini gösterdiler. Hem de bir yahûdî emr-i vâkîsi ile...

Ittihatçilar, düsman tazyîkindan kaçiyormus gibi yaparak Çanakkale Bogazi'ndan içeriye giren Goben ve Breslaw isimli iki Alman zirhlisini gûyâ onlari satin aliyorlarmis gibi göstererek müttefiklerin protestolarindan kurtulmak istediler. Bu gemilerin filo kumandani Amiral Suson yahûdî asilli idi. Hususî bir tâlimatla hareket ediyordu. Gemi efrâdinin Istanbul'da sikildigini söyleyerek Karadeniz'e açilmak müsaadesi istedi. Artik Osmanli bayragi çekmis olan bu gemilere bir Türk kumandan tâyin edilmemisti. Amiral Suson, Karadeniz'de bir Rus nakliye gemisine taarruz ederek Osmanli Devleti'ni bu emr-i vâkî ile harbe soktugu zaman, bundan, Enver Pasa disinda hükûmet erkânindan hiç kimsenin haberi yoktu.

Henüz Balkan Harbi fâciasinin yaralari sarilmamisken sirf Almanlar'in yükünü hafifletmek maksadiyla Osmanli Devleti'nin hazirliksiz bir surette harbe dâhil olmasi, yikilisin en korkunç âmili olmustur.

Harbin sonu belli olmaya basladigi hengâmede, Sultân Abdülhamîd'i devirmekle hatâ ettiklerini nihâyet anlayabilen Ittihat ve Terakkî reisleri Enver ve Talat Pasalar, artik Beylerbeyi Sarayi'nda ikâmet etmekte bulunan mahlû (tahttan indirilmis) Pâdisâh'i ziyâret edip fikrini sordular. O koca Sultân, bir atlas getirterek onlara, Ingiliz sömürgelerini göstertti. Nüfûslarini yekûn ettirdi. Sonra Almanlar'in sömürgelerini sordu. Tâbi Almanlar'in sömürgesi olmadigi ortaya çikti. Sultân keder dolu bir hüzünle:

"–Su hesâbi da mi yapamadiniz?!. Hiç Ingiltere'ye karsi Almanlar'in yaninda harbe girilir miydi? Ben Almanlar'i Ingiliz emellerini dengelemek için kullandim. Bundan öteye birsey düsünmedim. Simdi fikrimi soruyorsunuz!.. Bu evvelce gerekliydi; artik çok geç!.." dedi.

Ikisi de nemli gözlerle sarayi terkederlerken:

"–Bizler böyle bir sultanin kiymetini takdîr edemedik! Ne büyük bir hatâya düstük!.." diyorlardi.


a
Çanakkale Harbi esnasinda düsman donanmasinin Marmara Denizi'ni geçebilecegi endisesi ile tedbir olarak pâdisâh ve hükûmetin Eskisehir'e nakli kararlastirilmisti. Abdülhamîd Han, durumdan haberdar olunca bunu büyük bir cesâret ve secâatle redderek:

"–Ben Fâtih Sultan Mehmed Han'in torunuyum!.. Hiçbir zaman Bizans imparatoru Kostantin'den asagi kalamam! Dedem Fâtih Istanbul'u alirken, Kostantin askerinin basinda savasa savasa ölmüstür. Birâderim nereye giderlerse gitsinler.. Fakat bilinmelidir ki, o ve hükûmet, Istanbul'dan ayrilirlarsa bir daha dönemezler. Bana gelince; ben, Beylerbeyi Sarayi'ndan ayagimi disariya atmam!" dedi.

Nitekim O'nun bu kararliligi karsisinda pâdisâh ve hükûmet Istanbul'da kaldi. Böylece devletin daha o gün yikilmasi önlenmis oldu.

Son derece yogun, yorgun ve çileli bir ömürden sonra Abdülhamîd Han, yetmis yedi yasinda 10 Subat 1918'de rahmet-i Rahmân'a kavustu. Mekâni cennet olsun!.. Rahmetullâhi Aleyh..


a
Ulu Hâkan, 1918'de vefât ettigi zaman bütün magdur ve mazlûm millet yas baglamis, bütün Istanbul halki görülmemis mahserî bir kalabalikla O'nu dîvân yolundaki türbesine defnederek Âhiret'e yolcu ederlerken bazilari:

"Bizi birakip nereye gidiyorsun Ulu Hakan?" diyerek agit yakmislardir.

Kendisine karsi en çirkin ve siddetli muhâlefeti göstermis bulunanlar bile, zamanla ve arkasindan sökün etmis olan fâcialarin îkâziyla uyanarak nedâmet hislerini terennüm etmislerdir. Bunlardan biri olan filozof Rizâ Tevfîk'in de kulaktan kulaga yayilip meshur olmus bulunan Abdülhamîd-i Sânî'nin Rûhâniyetinden Istimdâd isimli si'rini dikkatlerinize sunalim:

Nerdesin sevketli Abdülhamîd Han?

Feryâdim varir mi bârigâhina?..

Târihler adini andigi zaman;

Sana hak verecek ey koca Sultan!

Bizdik utanmadan iftirâ atan;

Asrin en siyâsî Pâdisâhina!..

Pâdisâh hem zâlim hem deli dedik;

Ihtilâle kiyâm etmeli dedik;

Seytan ne dediyse biz "belî" dedik;

Çalistik fitnenin intibâhina...

Dîvâne sen degil, meger bizmisiz;

Bir çürük iplige hülyâ dizmisiz;

Sâde deli degil, edebsizmisiz;

Tükürdük atalar kiblegâhina!..

Nâdimlerden biri olan Süleyman Nazif de nedâmet hislerini söyle ifâde eder:

Kaç zamandir gelmemisken yâda biz;

Iste geldik Sen'den istimdâda biz;

Hasret olduk eski istibdâda biz!..


a
Filistin'in ilk mazlûmu Abdülhamîd Han'dir. Çünkü hal'i O'nun Filistin mes'elesinde yahûdî Teodor Hertzel'e mukâvemeti sebebiyle gerçeklesmistir.

Vefâti ile bütün Islâm âlemi âdetâ yetim kalmistir. Çünkü gerçek mânâsiyla hilâfeti ayakta tutan O idi. Kendisinden sonra -askerî gâileler sebebiyle- bir daha bu dirâyeti göstermek mümkün olmamistir. Gerçekten Sultân Abdülhamîd, 1900 yilinda Çin'de milliyetçi bir grup tarafindan Alman büyükelçisi Kettler katledilip büyük bir bati aleyhtari hareket baslayinca, "Boxer Isyâni" denilen bu hâdise dolayisi ile Wilhem'in kendisinden yardim istemesini bahane ederek oraya bir "nasîhat hey'eti" göndermis ve Pekin'de uzun müddet faâliyet gösterecek olan "Hamidiyye Üniversitesi" adiyla bir dînî tedris müessesesi kurmustur.

Yine Japonya'ya, tarihimizde "Ertugrul Fâciasi" diye bilinen bir ilmî hey'et gönderip Islâm'i oralara kadar yaymak ve hilâfet nüfûzunu âlem-sumül bir duruma getirmek yolunda yürüyen Sultân Abdülhamîd'in su Islâmci siyâsetinin sumül ve kuvvetini anlayabilmek için, Medîne-i Münevvere'ye kadar dösetmis oldugu demiryolu hattinin, devlet kesesinden bir kurus çikmadan sirf dünyâ müslümanlarinin yardimlariyla gerçeklesmis bulundugunu hatirlamak kâfîdir.

Sultân Abdülhamîd, o ileri görüslü insandi ki, Amerika'da horlanan zencilerin maruz kaldiklari zulümlerden istifâde ile onlari Islâm'a çekmek maksadiyla oraya propagandacilar gönderdigi ve bugünkü zenci-müslüman varliginin tesekkülüne âmil oldugu da bir gerçektir.

Oturdugu yerden dünyâyi fotograflarla tâkib eden ve bundan dolayi bugün kendisinden üç binden ziyâde albüm kalmis bulunan Sultân Abdülhamîd, zamaninda dünyâdaki bütün gelismeleri harfiyyen tâkib etmekteydi. Meselâ 1904 Rus-Japon harbinde dünyâda hiçbir Allâh kulu Japonlar'in gâlip gelecegine ihtimal vermezken O, uzak sarka gitmek üzere bogazdan geçen Rus gemilerinin, Sadrazam'ina geri dönmeyeceklerini söylemistir. Hattâ bu harbi meshur Pertev Pasa vâsitasiyla günü gününe tâkib ederek Ruslar'in Japonlar'a maglûb olmasinin kendi devleti hesâbina kazançli neticelerini devsirmekten geri kalmamistir.

Son söz olarak su husûsu belirtmeliyiz ki, Sultân Abdülhamîd, O'nun mübârek sahsiyeti, siyâsetinin incelikleri ve zamaninin dâhilî ve hâricî gâileleri böyle makale hacimli yazilara sigmaz... O umûm milletin müstehak oldugu musîbetleri bertaraf için bir beser tâkatinden umulmayacak derecede gayret gösterdigi hâlde, netice serîrlerin galebesi sûretinde tahakkuk etmisse, bunu kader perspektifinden bakmadikça anlamak mümkün degildir. Böyle bir dirâyet içinse, kendisinin su sözünü okuyucularimiza yardimci olabilecegi düsüncesiyle zikrederek yazimiza nihâyet verelim:

O, Hareket Ordusu'na karsi hareketsiz kaldigi yolundaki tenkidlere cevâben buyurmustur ki:

"–O gürûhun önünde Hizir -aleyhisselâm-'i görmesem, böyle yapmazdim!.."

Abdülhamîd Han'in dindarligi, hizmetleri, merhameti, zekâsi ve kâbiliyeti destanliktir. O'nun ihlâsini su hâtira ne güzel ifâde eder:

Sultan Abdülhamîd Han, âcil bir is zuhûr edince, gecenin hangi vakti olursa olsun uyandirilmasini ister, ertesi güne birakilmasina rizâ göstermezdi. Bu hususda mâbeyn baskâtibi Es'ad Bey, hâtirâtinda söyle demektedir:

"Bir gece yarisi, çok mühim bir haberin imzâsi için Sultân'in kapisini çaldim. Fakat açilmadi. Bir müddet bekledikten sonra tekrar çaldim, yine açilmadi. diye endiselendim. Biraz sonra tekrar çaldim; bu sefer kapi açilarak Sultân, elinde bir havlu ile kapida göründü. Yüzünü kuruluyordu. Tebessüm etti:

"Evlâd! Bu vakitte çok mühim bir is için geldiginizi anladim. Kapiyi daha ilk vurusunuzda uyanmistim, ancak abdest aldigim için geciktim; kusura bakma!. Ben bu kadar zamandir milletimin hiçbir evrakina abdestsiz imzâ atmadim... Getir imzâliyayim!.." dedi.

Ve "besmele" çekerek evrâki imzâladi."

Hattâ zevcesi, Abdülhamîd Han'in bu husûsiyetiyle alâkali olarak, O'nun yataginin basinda dâimâ temiz bir tugla bulundurdugunu ve bununla yataktan kalktiginda çesme mahalline kadar abdestsiz yere basmamak için teyemmüm aldigini, sebebini sordugunda da kendisine:

"Bunca müslümanlarin halîfesi olarak, biz sünnet ölçülerine dikkat etmezsek, ümmet-i Muhammed bundan zarar görür!.." dedigini nakleder.

Mâbeyn kâtiplerinden Abdülhamîd Han baglilarindan olmayan birisi de hâtirâtinda su câlib-i dikkat hâdiseyi anlatir:

"Bir aksamdi. Mâbeynde nöbetçi olarak ben kalmistim. Gelen mektub, telgraf, rapor ve tezkerelerin listesini tertibleyip huzûra çikmak üzre iken bir telgraf geldi. Istanbul Lâleli Postahanesi me'mûrlarindan birinin Hünkâr'a çektigi bir telgrafti bu:

Bîçâre me'mur, karisinin o gece dogum yapacagini ve dogumun da tehlikeli olacagina dâir doktorlarin îkâz ettigini, fakat elinde hiçbir imkân bulunmadigini, bu sebeple merhamet-i sâhâneye sigindigini, bildiriyordu.

Ben de bunu pek kayda deger görmeyerek zât-i sâhâneye verecegim listenin içerisine almadim.

Ancak huzûrda, Pâdisâh âdeti üzere herseyi ayri ayri gözden geçirdikten sonra ilâve etti:

"–Baska birsey var mi?"

"–Kayda deger birsey yok efendim!" dediysem de Sultân'in israrla suâlini tekrarladi ve:

"–Sen kayda deger saymadigini da söyle!" dedi.

Bunun üzerine mâlum telgraftan bahsettim. Arza degmeyecegini düsünerek listeye almadigimi bildirdim. Hüzünlenerek tâlimat verdi:

"–Hemen getiriniz!"

Saskin bir vaziyette telgrafi getirdim. Sultân, orada yazilanlari dikkatle okudu. Ardindan düsündügümün tam aksine derhal saray doktorunu çagirtarak bana döndü:

"Derhal beraberce Lâleli'ye gidiniz ve dogum yapacak olan kadincagiza gerekli müdâheleyi yaptiriniz!" diye ferman buyurdu.

Sultân'in bu emri üzerine saray doktoru ile o memurun evine gittik. Vazîfemizi yerine getirip hastaneden döndügümüzde ise, vakit sabaha yaklasmisti. Saraya girince, kapinin sesinden bizi farkeden Sultân, perdeyi araladi ve eliyle "gelin" diye isâret etti.. Odasinin isiklari yaniyordu. Demek ki, sabaha kadar ibâdet ve duâ ile mesgul olmustu.

Hemen huzûruna girdik. Neticeyi sordu. Oldugu gibi anlattim:

"–Sultânim, dogum bir hayli müskil oldu. Ancak mütehassis doktorlarin gayretleri ile hasta kurtuldu elhamdülillâh.. Bir erkek çocuk dünyaya getirdi. Adini da Abdülhamîd koydular. Sabaha kadar gözyaslari içinde zât-i âlînizin ömür ve devletlerine duâ ettiler..."

Bizi ayakta dinleyen milletin merhametli babasi olan Hünkâr, bu durum üzerine rahatlayarak derinden bir "elhamdülillâh" dedi. Sonra paravananin arkasina geçerek iki rek'at namaz kildi.

Osmanli Devleti'nin 620 senelik san ve seref dolu târîhini sâir ne güzel hulâsa eder:


Kimdim?
A'sâra sorarsan, beni söyler sana kimdi?

Bir baska denizdim, kürenin rub'u benimdi!..

Mermîler, alevler beni bir kal'a sanirdi,

Efserlerin enkâzi uçar, dalgalanirdi...

Cevvâl atimin kanli, kivilcimli izinde,

Bir umk idi aksim ebediyyet denizinde.

Çarpardi gögün kalbi hilâlin avucunda,

Titrerdi yerin tâlii mermîmin ucunda...

A'sâr elimin çizdigi mecrâdan akardi,

Üç kit'ada magrûr atimin izleri vardi...

Fevkinde uçarken o nesîbin, bu firâzin,

En sanli hükümdâr-i hurûsânina arzin

Tek bir nazarim berk-i inâyetti, keremdi;

Iklîli hediyyemdi, ekaalîmi hibemdi...

........

Dünyâ bilir iclâlimi, "ben böyle degildim!"