2008-04-01

Operatör Önceliği ile İlgili SQL Sorusunun Cevabı

Operator önceliği ile ilgili olarak sorduğum SQL sorusunun cevabı İstanbul ilimizin plaka kodu yani 34 olacaktı. Katılımcı arkadaşların ezici bir çoğunluğu operatörlerin önceliği konusunda yeterli bilgiye sahip olduklarını gösterdiler. Umarım bu vesile ile soruya yanlış cevap veren arkadaşlar da operatörlerin önceliği konusundaki eksikliklerini giderirler.
Tüm katılımcı arkadaşlara teşekkürlerimi iletiyorum.

2008-03-24

Bir Devlet Hastanesi Macerası

Geçtiğimiz perşembe ve cuma günleri Tam Teşekküllü Sağlık Raporu almak için Bakırköy Dr. Sadi Konuk Eğitim ve Araştırma Hastanesindeydim. Bir heyet raporunun iki gün sürmesi çok uzun bir süre. Heyet Kurulu için ayrı bir kat buluyor ve muayene olunacak bir çok poliklinik bu katta bulunuyor. Röntgen alt katta, tahlil için yan binaya; tahlil sonuçları için karşıdaki binaya uğramanız gerekiyor. İlk gittiğimde benim gibi heyet raporu alacak 5-10 kişi ancak çıkar diye düşünmüştüm ama en az 150 kişi vardı sırada bekleyen:( Anlaşılan Avrupa yakasında oturan insanların azımsanmayacak bir oranı Bakırköy Dr. Sadi Konuk Eğitim ve Araştırma Hastanesini tercih ediyor. Heyet raporu alacak arkadaşlara birkaç tavsiye:
  1. Gitmeden yanınıza en az 124 YTL para alın(Tam teşekküllü heyet raporu için 124 YTL ödemeniz gerekiyor),
  2. Kimliğiniz ile birlikte elinizde bir vesikalık fotoğrafınız bulunsun,
  3. Sabah erkenden gidip kuyrukta ön sıralarda yer alın(Maalesef sıra için Q-maticler yok o yüzden sıranızı kaptırmamanız için uzun soluklu bir sıra macerasına hazırlıklı olun)
  4. Kayıt işlemlerinizi yaptırdığınız gibi röntgen ve tahlil sırasına koşunuz
  5. Tahliliniz öğleden sonra çıkacağı için Dahiliyede boşu boşuna kuyrukta beklemeyiniz.
  6. Kapı önünde kuyruğu az olan polikliniği tercih edin.
  7. Mümkünse bir yada birden çok kişi ile gidip farklı polikliniklerde sıra alın yoksa tek tek tüm doktorları gezip muayene olmak bir kaç gününüzü alabilir.
  8. Öğleden sonraları muayene yoktur bu yüzden boşu boşuna öğleden sonra beklemeyiniz.
  9. Çarşamba günleri Bakırköy Devlet hastanesinde heyet yoktur. Çarşamba günleri heyetten rapor almayı boşu boşuna beklemeyin:)
  10. Göz polikliniğinin kuyruğu her zaman çok olur bunu göz önünde bulundurun:)
  11. Psikiyatr için boşu boşuna kapıda beklemeyin evraklarınızı içerisdeki sektere verin.
  12. Genel Cerrahi 10:30 dan önce rapor alacaklara bakmaz boşu boşuna ne doktorun kapısında bekleyin ne de Genel Cerrahi Doktorunu rahatsız edin!
  13. Evraklarınızı her zaman 12:00 den önce tamamlayın zira 12:00 den sonra evrak teslimi alınmaz direk ertesi güne kalırsınız.
  14. 12:00 den önce evraklarınızı teslim ettiyseniz aynı günün öğleden sonrasında heyet toplanır ve raporunuzu imzalar.
  15. Heyet günü 13:30 da burda olun derler. Siz 14:00 den sonra gelin. Çünkü en az yarım saat boyunca boşu boşuna beklersiniz. Askeriyedeki mantık gibi insanları 14:00 de toplamak için herkese 13:30 da muhakkak burda olun denilir.
  16. Bu bu adımları sağlıklı bir şekilde aştıktan sonra Sağlam raporunuzu alıp hayırlı işlerde kullanırsınız:)

Burdan hastaneler için de bir kaç önerim olacak:

  1. İ.allah tüm devlet hastanelerine bir an önce online/telefon randevi sistemi gelir. Bahsettiğim hastenede diğer poliklinikler için online ve telefon ile randevu sistemi olmasına rağmen Heyet Raporu için henüz böyle bir güzellik yok maalesef.
  2. Heyet raporu için adam akıllı online bir sitem kurulur i.allah. Böylelikle sistem herkese hangi sırada hangi doktorda ne zaman sıra geldiğini bildirip tüm bürokratik ve eziyetlik işlemleri bitirmiş olur.
  3. Bu yapılamıyorsa hastane yönetimi Heyet Kurulunda kayıt işlemleri için bir Q-matic eklerlerde insanların saatlerce sıralarda sürünmelerini engellemiş olurlar. Kuyruklar saatlerce sürebiliyor ve sıranızı kaybetmemek için sıradan ayrılamıyorsunuz. Sıradan ayrılıp geldiğinizde tantanalar olabiliyor.
  4. Yönetim insanlara sıra numarası veremiyorsa en azından kayıt formuna sıra numarası versinler. Böylelikle insanlar kayıt formundan sıralarını takip ederler.
  5. Hastane döner sermeyesine bu kadar gelir sağlayan bir kurulun kayıt işlemlerini bir kişinin yapması doğru değil. Hem hizmet memnuniyeti hem de daha fazla gelir elde etmek için en azından 3 tane kayıt görevlisi görevlendirilmeli. Şu anki görevli hem tek başına hem de oldukça ağır iş yapıyor:(
  6. İşlemlerin nasıl ve hangi sırada yapıldığını web sayfalarında yada bir panoda güzelce izah edebilirler. Böylelikle gelen insanlar her bulduğu görevliye birden çok soru sorup onların da vaktini çalmamış olurlar, boşu boşuna yorulmamış ta olurlar.

Allah kimseyi hastanelere düşürmesin. Şimdilik hoşça kalın sağlıcakla kalın!

2008-03-19

2008-03-18

Tablolardaki Kayıt Sayısını ve Fiziksel Büyüklüğü Bulmak

Veritabanınızda bulundan tüm tabloların kayıt sayısını ve bu tabloların fiziksel olarak kapladığı yeri KB cisinden aşağıdaki T-SQL cümlecikleri ile bulabilirsiniz:

SET NOCOUNT ON

IF EXISTS(SELECT * FROM TempDb.dbo.SysObjects WHERE NAME = '##Space_Used') DROP TABLE ##Space_Used

CREATE TABLE ##Space_Used (
name nvarchar(128),
rows char(11),
reserved varchar(18),
data varchar(18),
index_size varchar(18),
unused varchar(18)
)

DECLARE @User_Table_Name varchar(200)

DECLARE User_Tables_Cursor CURSOR FOR
SELECT Name
FROM Dbo.SysObjects
WHERE XTYPE = 'U'

OPEN User_Tables_Cursor

FETCH NEXT FROM User_Tables_Cursor INTO @User_Table_Name
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO ##Space_Used
EXEC sp_spaceused @User_Table_Name

FETCH NEXT FROM User_Tables_Cursor INTO @User_Table_Name
END

CLOSE User_Tables_Cursor
DEALLOCATE User_Tables_Cursor

SELECT
TableName=LEFT(Name, 50),
"RowCount"=Rows,
Phys_Size_KB = CONVERT(int, LEFT(Reserved, PATINDEX('% KB', Reserved) - 1))
FROM ##Space_Used
ORDER BY Phys_Size_KB DESC

IF EXISTS(SELECT * FROM TempDb.dbo.SysObjects WHERE NAME = '##Space_Used') DROP TABLE ##Space_Used


Kaynak: SQLServerCentral

2008-03-17

Bir Parti Kapatma Davası Daha!

Cuma gününden bu yana konu ile ilgili haber dinlemekten ve yazı okumaktan sıkıldım. Ülke gündeminin bir anda değişmesine seyirci olup, ekonomide geçici kırılganlıkların yaşanmasını izledim. Tüm bunları izlerken "Bir ülkede hukuk ve yargı sistemi niçin vardır?" sorusuna cevap aradım.

Gündem başlıklarını aşağıdaki gibi sıraladığımda bu dava süpriz olmasa gerek:

-2001 şubat post-modern darbesinden bu yana demokratik açılımlar

-Türkiye'nin her geçen gün güçlenmesi, dış siyasetteki nüfusunun artması

-Ergenekon Operasyonu

-Doğu ve Güneydoğu ile ilgili açılımlar

-Dünya borsalarındaki ekonomik çalkantılar

-ABD nin Ortadoğu planları(Irak,Afganistan, Pakistan ve olası İran savaşı)

-AB de dönüşüm ve Rusya'nın eski gücüne kavuşması

vs.


Konu ile ilgili Salih Memecan yoruma gerek bırakmamış.

2008-03-13

Fıkra Faslı

Adam otoyolda giderken hız limitini aşmış, ancak tüm arabalar da onunla eşit hızda gidiyorlarmış...
Biraz gittikten sonra polis durdurmuş kendisini, ehliyet ve ruhsatı aldıktan sonra
'Radara yakalandınız ceza kesilmesi için lütfen ekip otosuna buyurun!' demiş...
'Biliyorum hızlıydım!' demiş adam..
'Fakat benden başka bir sürü hızlı giden vardı.. Onları neden durdurmadınız? '
'Hiç balığa gittiniz mi?' diye sormuş polis..
'Uhmm! Evet!' diye cevaplamış adam..
'Siz!' demiş polis, 'Hiç bütün balıkları yakaladınız mı?'

***

Kamyon şoförü otoyolda giderken 'Dikkat alçakköprü!' yazısını görmesiyle köprünün altına sıkışması bir olmuş...
Son derece sinirlenmiş ikaz levhasının daha köprüye gelmeden önce konulmamasına...
Otoyol kapanmış, arkasında kilometrelerce araç birikmiş, haber vermesine rağmen saatler sonra ekip gelmiş, içeriden ağır adımlarla sırıtarak bir polis inmiş, kamyonun yanına gelip ellerini beline koymuş,
'Sıkıştın ha!' demiş..
'Hayır Memur bey!' demiş şoför..
'Bu köprüyü taşıyordum, mazotum bitti..!'

Güzel fıkralar için sevgili dostum Mehmet Döner'e teşekkürler.

2008-03-12

2008 Microsoft Lansmanının Ardından

Bugün öğleden sonra Microsoft 2008 Sunucu ve Yazılım Platformu Lansmanının sunumlarına katıldım. SQL Server 2008 Gelişmiş Veri Platformunu Cem Güven; SQL Server 2008 ile Kritik İş Uygulamalarını Önder Yıldırım-Selçuk Uzun; SQL Server 2008 ile İş Zekasını da Cavit Yantaç -Mustafa Acungil sundular. Sunumlar genel itibariyle yararlı geçti fakat gerek sunumun yapıldığı salon gerekse SQL Server 2008 konusunda beklentilerimin altında kalan bir lansman oldu(Daha önceki lansmanlara göre). Bununla birlikte SQL Server 2008 ile birlikte gelen hoş özellikler de yok değil.

Lansman vesilesiyle Tekofaks'tan Yazılım Müdürüm Osman Özhancı, Türkiye Finans'tan Metin Karabiber, Bilge Adamdan Mustafa Acungil ve günlüğümün sıkı takipçilerinden Adil Erkan ile ayak üstü sohbet etme fırsatı buldum. Bunun yanında BT Akademi'den Sefer Algan ile Oğuz Yağmur ve Daron Yöndem'i gördüm fakat görüşme için zaman olmadı:( Salonda bir şekilde tanıştığımız bir çok insanı görmek güzeldi. Eminim zaman olsaydı ve dikkatli baksaydım bir o kadar daha tanıdık sima çıkardı. Bu tür lansmanların bir faydası da aynı sektörde benzer alanda uğraşan insanları bir araya getirmesi.

Bir sonraki lansmanlarda görüşmek dileğiyle herkese yenilik dolu günler diliyorum.

2008-03-10

T-SQL Sorusunun Cevabı

Sorunun doğru cevabı NULL idi. Ankete toplam 25 kişi katıldı. Katılımcı arkadaşlara teşekkürlerimi sunuyorum.

12 kişi soruyu doğru cevapladı. 10 kişi "Hata Verir" yanılgısına düştü. Benim ortaya çıkan sonuçtan anladığım; ankete katılanların yarısından çoğunun T-SQL bilgilerini gözden geçirmeleri yada T-SQL eğitimi almaları gerekiyor.

2008-03-06

İstanbul'da Anadolu'dan Avrupa'ya Uzun Bir Yolculuk!

İstanbul'da mesai saatlerinde Anadolu yakasından Avrupa yakasına geçmek baya pahalıya mal oluyor. E ne de olsa Avrupa birliğinin Avrupa yakasına geçmek bu kadar kolay olmasa gerek:) Bir sürü engel, uyum paketi, ev ödevleri bu yolculuğu yapacakları bekler.

Sabah uykudan geç uyanınca hergün işe gitmek için kullandığım servisi kaçırdım. Anadolu yakasında oturup ta Avrupa yakasında çalışan birisi için servis kaçırmak çok zorlu ve stresli bir yolculuğun uzun bir başlangıcı olabiliyor çoğu zaman. Neyse can havli ile kendimi otobüs durağında buldum. Duraktan Cevizlibağ'a giden halk otobüsüne bindim. Ön tarafta şoför yanında ayakta bir yer bulabildim. Ayakta da olsa bir yer bulmaya sevinmiştim. Çünkü o an gelen otobüste ayakta da olsa yer bulmamak vardı işin içinde.

Yol uzun -bir kıtadan başka bir kıtaya geçmek kolay mı?- ve yolda aşırı trafik olunca insan oturabileceği bir yer arıyor. Yer bulmanın algoritması belliydi. Mümkün oldukça arka taraftaki sıralara göz dikilmeliydi. Bunun için adım adım da olsa ilerlemiydi. Arka tarafa doğru ağır ama muhakkak yer bulağımı ümit edecek kadar emin adımlarla yürüdüm. Aradan yarım saat geçmeden inenler sayesinde oturacak bir yer buldum. Boş yeri bulmam ile annem yaşındaki bir teyzeye yeri vermem bir oldu. -Yer verme konusundaki dusturum belli bir yaşın üzerindkei yaşlılar, hamileler, özürlüler ve oturmaya benden çok ihtiyacı olan insanlara yer vermeye çalışırım. - Bir kaç adım daha arka tarafa doğru ilerledim. Gel zaman git zaman sol tarafta oturan bir beyefendinin inmesiyle onun yerinde kendimi buldum. Oturur oturmaz en ön tarafta biraz önce yer verdiğim yeyzeden baya yaşlı ve ayakta güçlükle durduğunu hissetiğim bir teyze gözüme ilişti. Yer vermek için niyetlensem de maalesef teyze beni görmüyordu. Beni görseydi küçük bir işaretle yer verecektim. Yerimden ayrılıp ön tarafa gidip teyzeye yerime oturur musunuz diye içimden geçirsem de yerimden ayrıldığım gibi yerimin dolacağından emindim. O yüzden sürekli teyzeyi gözleyip beni tarafa baktığı yada beni görebileceği anı bekledim. Bu arada içerisi yeterince havasızdı bu yüzden camı açayım diye düşündüm. Önce yanımdaki bey amcaya sonra da yer verdiğim hanım teyzeye camı açtığım takdirde içeri girecek hava akımından rahatsız olup olmayacaklarını sordum. Her ikisi de camın açılmasını memnuniyetle karşıladılar. Ben de içeriyi biraz olsun havalandırmak için camı açtım. Ve tekrar yaşlı teyzeye baktım. Baktım yavaş yavaş hareketleniyor. Arka tarafa doğru adım atmaya başladı. Bu duruma çok sevindim. Ardından görüş mesefesine gelince buyrun benim yerime oturmaz mısınız diye teklifte bulundum. Yaşlı teyze bu tekliften çok müteşekkir olup şükranlarını sunup Allah razı olsun dedi.

Yol uzun ve bitmiyor. Yolculuk ile ilgili bir şeyler karalayım dedim. Cebimde kalem ve kağıt var fakat ayakta olduğum için yazmam mümkün değildi. Bir yer olsa da şu yolculukla ilgili bir şeyler karalasam diye düşünürken sağ tarafımda bir koltuğun boşladığını gördüm. Oturup bir şeyler karalamaya başladım. beş on dakikalık bir yazı yazmadan sonra hamile bir bayanın otobüse binip benim oturduğum yere yakın bir yerde ayakta durduğunu gördüm. Anında ayağa kalkıp yerimi hamile bayana verdim. Çok geçmeden nihayet tekrar oturup karalamaya kaldığım yerden devam ettim.

Otobüsten inip tramvaya bindim ardından metbüse binip 3-5 dakika sonra Ataköy-Şirinevler durağından indim. Metrobüs gerçekten Avrupa yakası için bulunmaz bir nimet. Keşke Anadolu yakasında da metrobüslerden olsa da ulaşım hem rahatlardı ve daha hızlı olurdu. Büyük şehir belediyesi metrobüs seferlerini başlatmakla Avcılar-Cevizlibağ trafiğini oldukça rahatlatmış. Ataköy-Şirinevler durağından metroya binip 10 dakika içerisinde iş yerime vardım. Toplamda 3 saati bulan bir yolculuk oldu. Kimi anadolu şehirlerinde şehirlerarası yolculuk süresi bu kadar sürmüyor. Gerçi bu şehirlerarası bir yolculuktan çok kıtalar arası bir yolculuk olduğu için daha uzun sürmüş olabilir:) İ.allah kıtalar arası yolculuk ta olsa bu süreler can sıkmayacak bir süre zarfında biter.

Herkese tavsiyem öncelikle iş-okul servislerinizi kaçırmayın. Şahsi araçlarınız yerine toplu taşıma araçlarını tercih edin ki trafik kilitlenmesin, insanlarımız trafik çilesini daha az çeksin.

Bu trafik bir süredir ciddi bir şekilde canımı sıkıyor. Günde ortalama 4 saatim yolda geçiyor. Bazen anadolunun küçük, şirin ve trafiğin olmadığı sakin kentlerine gidesim geliyor. Bu trafik derdinden kurtulmak için ya İstanbul'dan kaçmalıyım yada evime yakın bir yerde iş bulmalıyım. Bakalım zaman ve trafik neyi gösterecek?

Bir sonraki yazı yolculuğunda görüşünceye dek herkese internet dünyasından hayırlı yolculuklar diliyorum.

2008-03-04

SQL Eğitim Konuları Anketi Sonucu

Ankete katılan tüm arkadaşların nerdeyse her konuda eğitime ihtiyacı olmakla birlikte Temel SQL, Güvenlik ve Yetkilendirme konularında daha çok eğitime ihtiyacı olduğunu görüyorum. Triggerlar, Replikasyon, Veri Transferi ve T-SQL konularındaki isteğin fazla olması da eğitimi almak isteye kişilerin profilini ortaya koyuyor. Herhangi bir konuda eğitim almak isteyen arkadaşlar SQL eğitimi sayfasından ulaşabilirler.

Uluslararası Sertifikalı Yazılım Test Eğitimi(ISTQB)

Geçen hafta Keytorc firmasından Koray YİTMEN'den şirketçe 3 günlük Uluslararası Sertifikalı Yazılım Test Eğitimini(ISTQB=International Software Testing Qualifications Board) aldık. Eğitime her proje grubundan birer kişi ile birlikte Test grubundan tüm arkadaşlar katıldı. Yazılım Geliştirme ekibinden de bendeniz eğitime iştirak ettim. Gayet zevkli ve bir hayli yararlı geçen eğitimin son gününde Yazılım Test ve Kalite Derneği nden görevli bir arkadaş eşliğinde 40 soruluk sertifikasyon sınavı yapıldı. Sertifika alabilmek için minimum 25 soruyu doğru cevaplamak gerekiyorduk. Sınava girerken bu kadar eğitimden sonra 25 doğru cevabımın çıkmaması endişesini taşıyordum. Bugün sınav sonucunu öğrendiğimde endişemin yersiz olduğunu gördüm. Zira 40 sorunun 36 sını doğru cevapladığımı öğrendim. Şükürler olsun.

Eğitimin İçeriği

Yazılım Testinin Temelleri
  • Yazılım hataları, hataların sebepleri ve sonuçları

  • Test kapsamının oluşturulması

  • Test projesinin başarısını etkileyen faktörler

  • Testin limitleri

  • Testlerin önceliklendirilmesi

  • Kalite Risk Analiz Teknikleri - Proje Risk Haritasının Hazırlanması

  • Test Senaryolarının (Test case) tasarlanması, yazılması ve dokümantasyonu

  • Örnek uygulama seçimi (Oracle Problem)

  • Test sonlandırma kriterlerinin belirlenmesi

Yazılım Geliştirme Döngüsünde Testin Yeri

  • Test psikolojisi

  • Temel test süreçleri

  • Farklı yazılım geliştirme süreçlerine testin entegrasyonu (Waterfall, Spiral, RAD, Extreme Programming, V-Model etc.)

  • Doğrulama ve onaylama (Verification and Validation)

  • Test derinliği (birim, sistem, entegrasyon, kullanıcı kabul testleri)

  • Test çeşitleri (fonksiyonel, performans, yapısal, onay testleri)

Test Projesinin Yönetimi

  • Roller ve sorumluluklar

  • Test takımının organizasyonu

  • Test ortamının kurulması (test laboratuarı)

  • Test stratejisi ve planının oluşturulması

  • Kapsam, test proje planı ve risklerin belirlenmesi

  • Test projesi çıktıları (testware)

  • Kritik perfomans göstergeleri

  • Test ve kalite control

  • Hataların önceliklendirilmesi ve raporlanması

Dinamik Testler

  • Kara kutu test teknikleri (Black Box Test Techniques)

  • Denklik sınıfı test tekniği (Equivalence Class Partitioning)

  • Uç nokta test tekniği (Boundary Value Analysis)

  • Karar tablosu test tekniği (Decision table testing)

  • Sistem durumu test tekniği (State transition testing)

  • İş senaryosu test tekniği (Use case testing)

  • Beyaz kutu test tekniği (White Box Test Techniques)

  • Araştırmacı test tekniği (Exploratory Test Techniques)

Test Otomasyon Araçları

  • Test otomasyonunda dikkat edilmesi gereken konular

  • Test otomasyon araçları seçim süreci

  • Test planlama ve yönetim araçları

  • Statik test otomasyon araçları

  • Dinamik test otomasyon araçları

Eğitimde Yapılacak Pratik Uygulamalar

  • Risk haritasının çıkartılması

  • Test planı yazılması

  • Test senaryosu (Test Case) yazılması

  • Fonksiyonel test

  • Performans testi

  • Kara kutu test tekniğinin uygulanması

  • Beyaz kutu test tekniğinin uygulanması

  • Hata girişi ve raporlanması

Microsoft 2008 Sunucu ve Yazılım Platformu Lansmanı



Tarih: 12 Mart 2008 Çarşamba, 09:00 - 18:00
Yer: Lütfi Kırdar Kongre ve Sergi Sarayı

Gündem

09:00 - 10:00 Kayıt
10:00 - 12:45 Windows Server 2008 Visual Studio 2008 SQL Server 2008
Lansmanı
10:00 - 10:40 Hoş Geldiniz: Microsoft Türkiye Genel Müdürü Çağlayan Arkan ve
Platin Sponsorlar
10:40 - 11:00 Dinamik IT - Microsoft MEA Vice President Ali Faramawy
11:00 - 11:50 Uçtan Uca: Windows Server 2008, SQL Server 2008, Visual Studio 2008
11:50 - 12:10 Ara
12:10 - 12:30 Başarı Hikayeleri
12:30 - 12:45 Kahramanlar Sahnede
12:45 - 13:45 Öğle Yemeği

Paralel Sunumlar aynı anda başlayıp farklı salonlarda yapılacaklardır.

Paralel Sunumlar
13:45 - 14:35
• Windows Server 2008 Geleceğin Platformu
• SQL Server 2008 Gelişmiş Veri Platformu
• Visual Studio 2008 Yeni Nesil Yazılım Platformu
• Platin Sponsor Sunumu: Tradesoft
14:35 - 14:50 Ara
14:50 - 15:40
• Windows Server 2008 Sanallaştırma Teknolojileri
• SQL Server 2008 ile Kritik İş Uygulamaları
• Visual Studio 2008 Yeni Nesil Web Uygulamaları
• Platin Sponsor Sunumu: Fujitsu
15:40 - 15:55 Ara
15:55 - 16:45
• Windows Server 2008 Güvenlik Özellikleri ve NAP
• SQL Server 2008 ile İş Zekası
• Visual Studio 2008 Yeni Nesil Akıllı İstemciler
• Platin Sponsor Sunumu: Intel
16:45 - 17:00 Ara
17:00 - 17:50
• Windows 2008 ve Yeni Nesil Web
• SQL Server 2008 ile Dinamik Uygulama Geliştirme
• Visual Studio 2008 Yeni Nesil office uygulamaları
• Platin Sponsor Sunumu: HP

Kayıt olmak için tıklayın.

Not: Etkinliğe gelecek arkadaşlar etkinlik öncesi haberdar ederlerse buluşabiliriz.

2008-03-03

Replikasyonu Silme

Replikasyonu sistem SP lerini kullanarak T-SQL ile silmek isterseniz aşağıdaki adımları izlemelisiniz:
  1. Tüm subscription'ları silin
  2. Tüm publication'ları silin
  3. Ardından distributor 'ü silin

Subscription Silme:
USE
GO
EXEC sp_dropsubscription @publication = N'', @article = N'all', @subscriber = N'all', @destination_db = N'all'

Publication Silme:
USE
GO
EXEC sp_droppublication @publication = N''

USE master
GO
EXEC sp_replicationdboption @dbname = N'', @optname = N'publish', @value = N'false'

Distributor Silme:
USE master
GO
EXEC sp_dropdistributor @no_checks = 1

Tüm bunların yanında replikasyon nesnelerinin tümünü aşağıdaki SP ile silebilirsiniz:

sp_removedbreplication ''

Not: Yukarıdaki silme işlemlerini Transactional Replikasyona göre yazdım. Diğer replikasyon türleri ve daha ayrıntılı bilgi için SQL Server Books Online kullanabilirsiniz.

Bir Hata Ve Çözümü

Msg 15466, Level 16, State 2, Procedure sp_addlinkedsrvlogin,
Line 91 An error occurred during decryption.

Msg 15185, Level 16, State 1, Procedure sp_addlinkedsrvlogin,
Line 98 There is no remote user 'sa' mapped to local user '(null)' from the remoteserver 'TEST'.


Yukarıdaki hata ile karşılaştığınızda aşağıdaki kod ile sorunu giderebilirsiniz:

ALTER SERVICE MASTER KEY FORCE REGENERATE

(Bu hatayı almışsanız kesin illegal bir işlem yapmışsınızdır: Sorunlu olan bir sistem database i düzgün çalışan bir sistem database ile değiştirmek gibi:) Bu tür durumlarda naçizane önerim tüm işlemlerinizi legal yoldan yapınız!)

2008-03-02

SQL Server 2008 İle Gelen Kolaylıklar

Değişkeni Tanımlarken Başlangıç Değeri Atama

SQL Server 2008'den önceki sürümlerde değişken tanımlarken değişkene bir başlangıç değeri atayamıyorduk. SQL Server 2008 ile birlikte bu eksiklik giderildi. Daha önceleri değişken tanımlamayı ve bu değişkene bir değer atamayı aşağıdaki gibi yapardık:

DECLARE @Sayi1 INT, @Sayi2 INT
SET @Sayi1=34
SET @Sayi2=63

Veyahut SET lemeyi SELECT cümleciği içinde aşağıdaki gibi yapardık:

SELECT @Sayi1=34, @Sayi2=63

SQL Server 2008 ile birlikte değişkeni tanımlarken değişkene ilk değeri de atayabileceğiz:

DECLARE @Sayi1 INT=34, @Sayi2 INT =63


Çoklu Kayıt Ekleme

Bu güzelliğin yanında INSERT cümleciğinde aynı anda birden çok kayıtı tek SQL kodu ile ekleyebileceğiz:

DECLARE @Tablom TABLE(Sayi1 INT, Sayi2 INT)

INSERT INTO @Tablom VALUES(1,2), (2,3), (3,4), (4,5)

SQL Serverın daha önceki sürümlerinde aynı işi yapmak için her kayıt ekleme için ayrı ayrı INSERT cümlecikleri yazmamız gerekirdi.

Üniversitelerde Kılık-Kıyafet Anketi Sonuçları


2008-02-26

T-SQL ile Kullanıcıya Yetki Verme

MS SQL Server'da yetkilendirme GRANT komutu yapılır. GRANT komutunun temel yapısı:

GRANT VerilecekYetkiler ON NesneAdi TO KullaniciAdi

Örnek : Mehmet kullanıcısına Kullanici tablosunda SELECT yetkisi verelim.
GRANT SELECT ON Kullanici TO Mehmet

Şayet yetkiyi Windows Authentication için verecekseniz domain ve kullanıcı adını iki köşeli parantez arasında yazmalısınız[]:

GRANT SELECT ON Kullanici TO [GUZEL\Mehmet]

Bir kullanıcıya birden çok yetki vereceksiniz yetkileri virgül(,) ile ayrıp dileğiniz kadar yetki çeşidini yazabilirsiniz:

GRANT SELECT, INSERT, DELETE, UPDATE ON Kullanici TO Mehmet

Bir kullanıcıya tüm yetkileri vermek için tek tek yetki isimleri yazmak yerine ALL deyimini kullanabilirsiniz:

GRANT ALL ON Kullanici TO Mehmet

Birden çok kullanıcıya aynı yetkileri vermek istiyorsanız aynı kodları her kullanıcı için tekrar yazmanıza gerek yok; sadece kullanıcılar arasına virgül(,) ekleyip dileğiniz kadar kullanıcıya yetki verebilirsiniz:

GRANT SELECT ON Kullanici TO Mehmet, Ahmet, Mustafa, Seyfettin


Merak edenler için GRANT komutunun söz dizimi:

GRANT [ ,...n ] ON
[ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
TO [ ,...n ]
[ WITH GRANT OPTION ]
[ AS ]
::=
ALL [ PRIVILEGES ] permission [ ( column [ ,...n ] ) ]
::=
Database_user
Database_role
Application_role
Database_user_mapped_to_Windows_User
Database_user_mapped_to_Windows_Group
Database_user_mapped_to_certificate
Database_user_mapped_to_asymmetric_key
Database_user_with_no_login

2008-02-23

SQL Eğitimleri Tamamlandı

Belbim A.Ş. OSM(Otomatik Satış Makineleri) Saha Ekibine iki grup şeklinde iki hafta boyunca verdiğim eğitimleri tamamladım. İtiraf etmek gerekirse eğitime katılım ve ilgi beklentimin üzerindeydi. Tüm arkadaşlar anlattığım konularla son derece ilgiliydiler. Benim için eğitim çok güzel geçti ve anlatmaktan çok zevk aldım. Her iki gruba da aşağıdaki konular aktarıldı:
  • Veritabanı Bilgileri
  • MS SQL Server 2005'in Kurulumu
  • Temel SQL Konuları
  • Replikasyon Teknolojisi ve Uygulama Alanları

2008-02-17

Trigger İle Insert, Update, Delete Yakalama

/*
Trigger içerisinde aşağıdaki T-SQL kod ile bir kaydın Insert, Update, Delete olduğunu yakalayabilirsiniz.
*/

DECLARE @IfDelete VARCHAR (1), @IfInsert VARCHAR (1)

SET @IfDelete =
(CASE WHEN EXISTS(SELECT * FROM inserted) THEN 'O' -- (O)ld record in update
ELSE 'D' -- (D)eleted record
END)

SET @IfInsert =
(CASE WHEN EXISTS(SELECT * FROM deleted) THEN 'N' -- (N)ew record in update
ELSE 'I' -- (I)nserted record
END)

Seneler önce yazılan bu kodun daha optimize edilmiş hali değerli arkadaşım Levent YILDIZ'dan geldi:

if exists (select * from inserted) and exists (select * from deleted)
select @type = 'U'
else if exists (select * from inserted)
select @type = 'I'
else
select @type = 'D'

2008-02-15

SQL Server 2005'te CLR Enable

SQL Server 2005 e CLR default olarak OFF gelir. Aşağıdaki T-SQL kodu ile CLR'ı enable yapabilirsiniz:

EXEC sp_configure 'clr enabled', 1;
RECONFIGURE WITH OVERRIDE;
GO


Aynı şekide CLR yetkisini tekrardan OFF konuma getirmek için aşağıdaki kodu kullanabilirsiniz:

EXEC sp_configure 'clr enabled', 0;
RECONFIGURE WITH OVERRIDE;
GO


Tüm bu değişiklikleri görsel olarak ta Başlat-> Programlar-> MS SQL 2005->Configuration Tools ->SQL Surface Area Configuration adımından da değiştirebilirsiniz(MSSQLServer->Database Engine->CLR Integration).

2008-02-14

Günlük Kardeşliği Anketi


Ankete ilgili gösteren herkese teşekkürlerimi sunuyorum. Günlük Kardeşliğime katılmak isteyenler kendi web sayfalarına günlüğümü ekledikten(Mehmet GÜZEL) sonra iletişim bölümündeki mail adresim aracılığıyla benimle irtibata geçebilirler.

2008-02-13

SQL'de Tarih Sorunlarını Gidermek

Bugüne kadar bir çok kişiden SQL Server 2005'te tarih ile ilgili sorunlarını dinledim ve sorunlarına bulduğum çözümleri sundum. Benden yardım isteyenlerin büyük kısmının istediği tarih formatlarından birisi de sadece yıl/ay/gün bilgisini alabilmek yada diğer bir ifadeyle zaman bilgisini sorgularında sıfırlamak(00:00:00) istemeleri. Yani bugünün tarihini şöyle almak istiyorlardı. 2008-02-13 00:00:00

Bu sonuca ulaşacak iki farklı SQL çözümüm var:

Çözüm-1:
SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS SMALLDATETIME)

Çözüm-2:
SELECT CAST(CAST(GETDATE() AS VARCHAR(12)) AS SMALLDATETIME)

MS SQL Server 2005 karşılaşılan bu vb sorunları MS SQL Server 2008 de çözmüşler. Dileyenler konu ile ilgili yazmış olduğum MS SQL Server 2008 - Yeni Tarih Veri Tipleri'ni okuyabilir.

2008-02-12

Beyin Kontrolü






Luhn Algoritması

Kredi kartı numarası, sosyal güvenlik numarası gibi seri numaralar Luhn Algoritması ile oluşturuluyor. Bu numaralar bir süredir merak ettiğim bir konu idi. Benimle aynı merakı paylaşan arkadaşların merakını gidereyim dedim. Bu arada kontör kartı seri numalararı ve diğer seri numalararın hangi algoritmadan yola çıkılarak üretildiğini bilen arkadaşlar varsa bu bilgilerini paylaşırlarsa makbule geçer.

Luhn Algoritması ile ilgili işe yarar T-SQL kodlar:

CREATE FUNCTION dbo.fnIsLuhnValid
(
@Luhn VARCHAR(8000)
)
RETURNS BIT
AS

BEGIN
IF @Luhn LIKE '%[^0-9]%'
RETURN 0

DECLARE @Index SMALLINT,
@Multiplier TINYINT,
@Sum INT,
@Plus TINYINT

SELECT @Index = LEN(@Luhn),
@Multiplier = 1,
@Sum = 0

WHILE @Index >= 1
SELECT @Plus = @Multiplier * CAST(SUBSTRING(@Luhn, @Index, 1) AS TINYINT),
@Multiplier = 3 - @Multiplier,
@Sum = @Sum + @Plus / 10 + @Plus % 10,
@Index = @Index - 1

RETURN CASE WHEN @Sum % 10 = 0 THEN 1 ELSE 0 END
END


CREATE FUNCTION dbo.fnGetLuhn
(
@Luhn VARCHAR(7999)
)
RETURNS VARCHAR(8000)
AS

BEGIN
IF @Luhn LIKE '%[^0-9]%'
RETURN @Luhn

DECLARE @Index SMALLINT,
@Multiplier TINYINT,
@Sum INT,
@Plus TINYINT

SELECT @Index = LEN(@Luhn),
@Multiplier = 2,
@Sum = 0

WHILE @Index >= 1
SELECT @Plus = @Multiplier * CAST(SUBSTRING(@Luhn, @Index, 1) AS TINYINT),
@Multiplier = 3 - @Multiplier,
@Sum = @Sum + @Plus / 10 + @Plus % 10,
@Index = @Index - 1

RETURN @Luhn + CASE WHEN @Sum % 10 = 0 THEN '0' ELSE CAST(10 - @Sum % 10 AS CHAR) END
END

Peter Larsson
Helsingborg, Sweden

Bir Hata ve Birkaç Öneri

Microsoft OLE DB Provider for SQL Server error '80004005'

The transaction log for database 'ceturkdb' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases

Hatalar:


  1. Hatada database ismi vermek güvenlik nedeniyle sakıncalı
  2. Database yada programsal hataların üyelere yansıtılması sakıncalı

Öneriler:

  1. Genel hatalar için error sayfaları düzenlenip kullanıcılara hatayla ilgili genel bilgiler verilebilir. Böylelikle hem hatayı gören kişiler sizi basite almamış olur hem de sisteminiz hakkında hatadan bir şey yakalama imkanı bulmaz.
  2. SQL Server ile ilgili Auto Shrink yapılabilir yada database boyu kısıtlı ise Transation Log a maximum size verilebilir. Yada tüm bunların yerine gecenin bir saatinde çalışan joblar düzenlenebilir. Bu joblar shrink te yapabilir yada dosya size ı belli bir seviyeye ulaşmışsa e-mail, cep telefonu vb iletişim aracılığıyla yönetici uyarılabilir. Bunu yapmadığınız zaman siz hatayı görene kadar saatler geçebilir sitenizi ziyaret eden ziyaretçiler çoktan sıkılmış ve kaçmış olabilir.

Hatayı bazen dostlar "post" eder, bazen yöneticiyi tanıyan üyeler. Tüm bu ücretsiz kaynaklarınız yoksa bilin ki bu size belli bir "cost" eder. Siz siz olun birileri tarafından hatalarınız için uyarılmayı beklemeyin; hatalarınızdan herkesten önce siz haberdar olun ve hemen müdahale edin. Hatta öyle bir zamanlama ve düzen ile müdahale edin ki kimsenin ruhu duymasın, sesi çıkmasın.

Hatalar hepimizin başına gelebilir fakat hatalardan ders alıp hatanın neresinden dönersek kardır. Siz siz olun hatalardan uzak durun. Hata sizi çok sıkıştırdığında; ha bre size yakınlaşmak istediğinde en fazla onu hata sayfasına yönlendirip hataya haddini bildirin! Hataya haddini bildiremiyorsanız bilin ki hata size haddinizi bildiriyordur.

2008-02-10

CETURK Forum Sorumluları Belirlendi

Merhaba Değerli Arkadaşlar,

Uzun süren bir görüşme trafiğinin ardından nihayet forum sorumlularını belirledim.
Forum Koordinatörlüğü görevini birkaç gün önce bıraktığım bir kısmınızın malumu. Artık malumu olmayanlar da bu vesile ile öğrenmiş oldular. CETURK Forum Koordinatörü iken üzerimde yük olarak duran bu son görevi de yerine getirmek istiyorum. Bu görevde iken
forumlarda beraber çalışmayı düşündüğüm arkadaşlar aşağıdaki gibidir:



Forum Adı


Sorumlu

ASP


Ali S. KAN


Genel- Güncel


Aycan AYHAN


Delphi / Kylix


Bahadır EKİCİ


Network


Barış İÇEN


PHP


Bünyamin KOPDUR


SQL Server


Emre ÇALIŞIR


Üniversitelerden


Hasan Erdem YANT


Diğer Programlama Dilleri


Hayriye TANYILDIZ


Proje Havuzu


Hüseyin Fatih KARAKOÇ


Diğer .NET Teknolojileri


İbrahim ERSOY


Windows


Kadir BOZKURTOĞLU


Visual Basic


Kurtman ÇELİK


MySQL


Levent MENEKŞE


Java


Mehmet ÖZCAN


XML - XHTML


Mehmet Zahir SOLAK


Pascal


Merve GENCER


Oyun Programlama


Mesut GÜLER


Diğer Veritabanları


Mustafa DEMİRBİLEK


Faydalı Linkler


Mustafa ŞAHİN


Elektronik / Donanım


Mustafa YAZAR


Photoshop-PaintshopPro-Fireworks


Mustafa ZENGİN


VB.NET


Nazmi DUMAN


HTML/ DHTML CSS Scripts


Nedim ŞAHİN


Güvenlik - Virüs


Olcay KÜK


C / C++

Oya ŞİMŞEK


CGI / PERL


Ömer GÖK


3D Modelleme / Animasyon


Özgür AL


C#


Sadullah KELEŞ


Yapay Zeka


Sedat GOLGİYAZ


Veri Madenciliği


Serdar GÖREGEN


Web Editörleri


Serkan ÖNCE


Oracle


Tonguç YILMAZ


Unix / Linux


Tutku DALMAZ


Flash


Yağmur MERAL


ASP.NET


Yavuz ÇOŞAR


Kariyer ve İnsan Kaynakları


Yıldırım ÖZSUBAŞI


Proje Tanıtımı


Yücel DAĞLAR


Multimedia


Yüksel Berk YAVUZ


Algoritma


Zafer YAVUZ


Şu an Forum Koordinatörlüğünü bıraktığım için bu arkadaşları ilgili forumlara atama yetkisi yeni kurulacak yönetimde olup bu seçtiğim ekibin de yeni yönetimle çalışıp çalışmayacağı kendi şahsi kararlarına bağlıdır.

Sevgi ve saygı ile duyurulur.

2008-02-08

Replikasyon İçin Olması Gereken Role?

Bir kullanıcının Replikasyon konfigürasyonunu yapabilmesi için minimum sysadmin server rolünde olması gerekir.

Replikasyon(Replication) için kullanılan Agent'larda ise minimum aşağıdaki roller olmalı:
Snapshot Agent: distrubition database, publication database için db_owner olmalı

Log Reader Agent: distrubition database, publication database için db_owner olmalı

Distribution Agent for a push subscription: distrubition database için db_owner olmalı, snapshot paylaşımına erişim yetkisi olmalı. Bunun yanında Subscriber a erişmek için en az db_owner olmalı

Distribution Agent for a pull subscription: subscription database için db_owner olmalı, snapshot paylaşımına erişim yetkisi olmalı.

Merge Agent for a push subscription: distrubition database için db_owner olmalı, snapshot paylaşımına erişim yetkisi olmalı

Merge Agent for a pull subscription: subscription database için db_owner olmalı, snapshot paylaşımına erişim yetkisi olmalı.

Queue Reader Agent : Distrubition, publication ve subscription databaseler için db_owner olmalı

Siber Savaş Provası mı?

Kuzey Afrika ve Ortadoğuyu içeren geniş bir bölgenin internet çıkışını sağlayan deniz altındaki fiber obtik kabloların ard arda kesilmesi sabotaj yada geniş çaplı bir tatbikatı akıllara getirdi. Bunlar arasında en çok zikredilen komplolar "3.Dünya Savaşı" ve "İran'a karşı bir operasyon" oldu.

İlk başta olayın bir kaza olduğu bildirildi fakat Mısır hükümeti olayın meydana geldiği yerde deniz trafiğinin olmadığını söyledi. Bunun üzerine bölgedeki bir depremin kablolara zarar verdiği iddia edildi fakat geçen hafta kabloların koptuğu bölgelerde herhangi bir deprem kaydedilmedi.

Konu ile ilgili açıklama yapan uzmanlar terör örgütlerinin denizin yüzlerce metre altındaki kablolara sabotaj yapacak donanımlarının olmadığını söylüyor. Savaş karşıtı internet sitelerinde geçen yorumlarda , geçtiğimiz günlerde Pentagon'a ait gizli bir belgede "internetin düşman silahı" olarak görülmesi gerektiği kaydediliyor. ABD yönetiminin olası geniş çaplı bir savaşta internetin bloke edilmesi ile ilgili bir tatbikat yapmış olabileceği dile getiriliyor.

Konuyu Türkiye'de ilk defa Yenişafak gazetesinin Ortadoğu ve Güvenlik Uzmanı İbrahim KARAGÜL Denizlerde neler oluyor? İnternet kabusa dönecek! başlığıyla dile getirdi. Aynı konu dünya basınında geniş yankı buldu.

2008-02-06

CETURK Forum Koordinatörlüğünü Noktalama Zamanı!

Dört yıldır yönetim ekibinde olduğum CETURK'teki görevimi(Forum Koordinatörlüğü) bugün itibasiyle noktalıyorum. Bundan böyle bana ulaşmak isteyen arkadaşlar kendi kişisel sitem(www.mehmetguzel.net) üzerinden ulaşabilirler.

Dört kişilik ekip üyelerine; özellikle son bir senedir beraber omuz omuza verdiğimiz, düzenlediği etkinlikleriyle herkesin gönlünde taht kuran İbrahim DEMİR'e sonsuz teşekkürlerimi iletiyorum. Belki beraber bir yıl çalıştık ama benim için dört yıla bedel bir yıldı. Bu arada değerli dostum İbrahim de Etkinlik ve Tanıtım Koordinatörlüğü görevine son noktayı koydu. Kendisine iş hayatında başarılar diliyorum.

Forumlarda 4 sene boyunca toplamda 1541; günde ortalama 1.12 mesaj yazmışım. Bu süre zarfından forumlar dışında da yardımcı olmaya çalıştığım insan sayısını hatırlamıyorum. İ.allah bundan sonra da kendi sitem üzerinden vakit buldukça bildiğim ve ilgilendiğim konularda ihtiyacı olan arkadaşlara yardımcı olmaya devam edeceğim.

Bizler inandığımız için, inandığımız yerde vardık. Belki ailemizden, eşimizden, çoluk çocuğumuzdan zamanı çalıp inandığımız uğurda fedarkarlıklar yaptık. Artık inandığımız yerlerde ülkemizdeki bilişim dünyasına elimizden geldiğince katkı yapmaya çalışacağız. Bizi izlemeye ve bizimle olmaya devam edin.

Beni izleyen, dinleyen, o yada bu şekilde benimle yolları bir yerde keşişen, yardımcı olduğum yada olamadığım, beni seven yada sevmeyen, sayan yada saymayan, manen destek olan herkese sevgi ve saygı ile duyurulur.

2008-02-04

NAND ile Diskler Hızlanıyor!

NAND bellekleri Dr. Fujio Masuoka 1984 yılında Toshiba'da çalışırken keşfetmiş. Günümüzde ise Intel ve Micron'un ortak çalışmasıyla üretilen ve müşterek girişimleri olan IM Flash Technolgies tarafından üretimi yapılan yeni nesil teknolojiye sahip NAND flash belleklerin performansı oldukça iyi. Yapılan açıklamada, üzerinde çalışılan yeni nesil NAND flash bellekler, 200 MB/s'ye kadar okuma ve 100 MB/s hızına kadar da yazma performansı verebiliyor. Şu anki mevcut hard disklerin okuma/yazma hızları ise tek bir modülün 40 MB/s okuma ve 20 MB/s civarında da yazma ile sınırlı. En son okuduğum kadarıyla NAND flash belleklerin şu an en büyük kapasiteleri 640 GB fakat TB 'lık NAND bellekler üzerinde çalışıldığını biliyorum. Bir dezavatajları şu an ki fiyatları epey yüksek fakat seri üretime geçtikleri zaman fiyatlarının herkesin alabileceği makul değerleri ineceğini düşünüyorum.

Diskleri hızlı okuyup/yazmak; diski kullanan tüm işlemlerimize hız getirecektir. Veritabanları açısından baktığımda ise uzun süren I/O sürelerinin kısalmasına vesile olup sorgularımızın daha hızlı bitmesine vesile olacaktır. Hadi bakalım NAND flash bellekleri ne zaman kullanmaya başlayacağız.

2008-02-02

Fibonacci’nin Tavşanları ve Apaçların Yaprakları

“Mankafa” Fibanocci’nin tavşan problemi
SÖYLENTİLERE bakılırsa komşularının gözünde o tam bir Bigolloneé imiş. Bigolloneé, yani mankafa! Ama bugün, aklı başında olan hiç kimse, Leonardo Fibonacci’nin mankafa olduğunu söyleyemez.
Ortaçağın en büyük Matematikçilerinden biri olan Fibonacci, 1170’li yıllarda İtalya’nın Pissa şehrinde doğmuş. Ancak babasının işi nedeniyle, Kuzey Afrika’ya, gitmiş ve Cezayir’de Müslüman Matematikçilerden ders almak gibi bir şans yakalamış. Fibonacci, kendi ülkesinde kullanılan baş belası ve hantal Roma rakamları’nın yanında, yeni öğrendiği Arap rakamlarının pratikliğini derhal kavrayıvermiş. Sonrasında Müslümanların kullandığı 0’lı bu ondalık sistem hakkında pek çok Arapça kitabı da okuma fırsatı bulmuş.
Müslümanlardan öğrendiği bilgileri kendi ülkesine taşımak gayretiyle 1201 yılında, henüz 27 yaşındayken Liber Abaci (Cebir Kitabı) adında bir eser yazmış.
İçinde o zamanın en önemli Aritmetik ve Cebir bilgilerinin bulunduğu bu kitap, ilk zamanlar pek kimsenin dikkatini çekmediyse de, kısa bir zaman sonra, ondalık Arap sayı sistemi, Avrupa’ya bu kitap yoluyla girmiş olmuş.
Ancak, Fibonacci’yi 19. yy. başlarında tekrar meşhur eden ve o tarihlerden bugünlere kadar şöhretine şöhret katan, Batı bilimine yaptığı bu olağanüstü kıyak değildir. (Aslında asıl kıyağı yapanlar, Fibonacci’ye ders veren Müslüman bilim adamları idi.) Bir arkadaşının sorduğu sıradan bir tavşan problemini çözeyim derken, farkına varmadan keşfettiği esrarengiz sayı dizisi oldu.
Bu esrarengiz sayılara geçmeden önce, şu tavşan problemi neymiş ona bir bakalım:
Fibonacci’nin dostlarından biri, günlerden bir gün kendisine gelerek şöyle bir soru sormuş:
“Sevgili Fibo! Diyelim bir çift yavru tavşanım var. Bunlar bir ay sonra yavrulayacak hâle gelse ve bir çift tavşan yavrulasa ve bu yavru çift tavşan da bir ay sonra yavrulayacak kadar büyüse ve onlarda diğerleriyle beraber ayda bir çift tavşan yavrulasa, ancak tavşanlarım hiç ölmese 100 ay sonra kaç tavşanım olur?”
Soruyu anladınız mı? Tavşanlar çabuk çoğalır bilirsiniz. Bir çift yavru tavşanımız var. Bunlar bir ay sonra bir çift tavşan dünyaya getiriyorlar. Bir sonraki ay bu ilk çift tavşan bir çift tavşan daha dünyaya getiriyor. Üçüncü ayda ise, hem ilk çift tavşan hem de ikinci çift tavşan dünyaya yeni bir çift tavşan getiriyor ve bu böyle devam edip gidiyor! Olay çok basit yani!
Şimdi bu tavşan çiftlerini aylara göre sayılarla gösterelim:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144...
İşte böyle tavşanlar çoğalır durur; bu sayı dizisi de uzar gider. Ve bu uzayıp giden sayı dizisine Fibonacci Sayıları denir. Ama dikkat ettiyseniz, bu dizide bir tuhafık vardır? İlk ikisi dışında, her sayı kendisinden önce gelen iki sayının toplamından oluşuyor! Yani bir sonraki sayıyı bulmak isteyene, ondan önce gelen iki sayıyı toplamak yeterlidir!
Merak edenler için 100. Ayda kaç tavşan olduğunu hemen söyleyeyim:
354.224.848.179.261.915.075 Cevap bu, boşuna kendinizi telef etmeyin.
İlginç bir gerçek:
Bu sayılar her yerde!
FIBONACCI sayıları neden esrarengizdir? Çünkü basit bir tavşan hesabından çok daha fazla şey ifade eder. Bu sayı dizisi, Allah’ın yeryüzünde var ettiği pek çok eserde kendini gösterir. Özellikle de bitkiler âleminde “tesadüf” kelimesini en hafif anlamıyla bile kapı dışarıya koyacak kadar çok görülür.
ETRAFINIZDAKİ ağaçlara ve öteki bitkilere baktığınızda, ama sadece baktığınızda ilk gördüğümüz şey; bir gövdenin orasından burasından gelişi güzel göğermiş dallar ve yine o dalların sağından solundan fırlayan daha ince dallar ve bütün bu dal karmaşasının üzerine adeta pilavın üzerine karabiber serpiştirmek gibi serpiştirilmiş binlerce yaprak, çiçek ve meyvedir. Ama görünüş sizi aldatmasın. Bu manzaranın en küçük parçacığında bile ne bir karmaşa, ne de bir gelişi güzellik vardır. Her dal, her yaprak ve her meyve olması gerektiği yerde olması gerektiği gibidir.
Hangi dalın ağacın neresinden çıkacağı bellidir. Hangi dalda kaç yaprak olacağı da bellidir. Hangi yaprağın, dalın hangi istikametine doğru, hangi açıyla uzanıvereceği de bellidir. Bütün bunlar sonsuz bir ilmin hesabı ile hesap edilmiştir.
Her ağacın ve her bitkinin kendine göre bir şekli şemali ve büyüme tarzı vardır. Biz o tarz farklılıklarına bakarak onları sınıflandırır ve birbirinden ayırırız.
Allah her ağaç için ayrı bir formül belirlemiştir ve her ağaç, kendine ait formülün zerre dışına çıkamaz. Bu, İstanbul’daki bir çam ağacı için nasılsa, Pekin’deki bir çam ağacı için de öyledir. Her iki çam ağacı da, bir çam ağacının uyması gereken kuralların dışına çıkamaz. Neticede ortaya çıkan güzellik, işte Rabbimizin bu sonsuz ilminin sonsuz hesaplamalarının sonucudur. Her şey hesap edilmiştir.
Fibonacci sayılarının bütün bu anlattıklarımızla ne alâkası var, şimdi ona gelelim.
Eğer yapraklı bir bitkiyi elinize alıp incelerseniz biraz sonra ilk farkedeceğiniz şey, yaprakların birbirlerinin üzerini—belli bir mesafeye kadar—örtmeyecek şekilde dalın veya sapın etrafında dizildiği olacaktır. Böylece üsteki yaprak altakinin güneş ışığı ile önünü kesmez. Yağmur yağdığında ise, yaprakların tamamı, rahmetten nasibini eksiksiz alır.
Bir sap üzerindeki yapraklardan birini seçelim ve ona 1 numarasını verelim. Sonra 1 numara ile aynı yönde olan öteki yaprağa doğru gidelim. Saat yönünde 3 tur attıktan sonra 1 numara ile aynı hizadaki ilk yaprağa ulaşmış oluruz. Ve bu sırada tam 5 yaprak sayarız. Bu işlemi saat yönünün tersine yaparsak 2 tur atarız. Böylece 2, 3, 5 rakamlarına ulaşırız ki, bunlar ardışık Fibonacci sayılarıdır. Bu sayılar, bitkiden bitkiye göre değişse de, bazen saat yönünde, bazen de tersi istikamette olsa da her zaman Fibonacci sayısıdır.
Mesela, bir meşe, yahut elma ya da kiraz ağacının dallarını inceleyecek olursak, seçtiğimiz başlangıç yaprağının hizasındaki bir sonraki yaprak için saat yönünde 2 tur atmamız gerekir. Bu esnada tam 5 yaprak sayarız. Bu hesap hiç şaşmaz. Fibonacci’nin tavşan hesabı yaparken bulduğu bu sayı dizisi, bitkiler âleminindeki sonsuz ince hesapları görmemiz açısından son derece ilginçtir.
İyi Matematik bilgisine sahip olanlar buradan istedikleri sonucu çıkarsınlar, ama benim gibi Matematik özürlüsü olanların bile ilk çıkarması gereken sonuç, Allah’ın izni olmadan düşmeyen o yaprakların, elbette O’nun izni olmadan da dallarında gelişi güzel ve kendi kendine yeşermiyor olduğudur. Evet, her şeyin bir ölçüsü, sayısı ve miktarı vardır. Tesadüf ise yoktur.
(Bir sonraki ay: Fibonacci dizisi ve Altın oran mucizesi)
Bir sap üzerindeki yapraklardan birini seçelim ve ona 1 numarasını verelim. Sonra 1 numara ile aynı yönde olan öteki yaprağa doğru gidelim. Saat yönünde 3 tur attıktan sonra 1 numara ile aynı hizadaki ilk yaprağa ulaşmış oluruz. Ve bu sırada tam 5 yaprak sayarız. Bu işlemi saat yönünün tersine yaparsak 2 tur atarız. Böylece 2, 3, 5 rakamlarına ulaşırız ki, bunlar ardışık Fibonacci sayılarıdır. Bu sayılar, bitkiden bitkiye göre değişse de, bazen saat yönünde, bazen de tersi istikamette olsa da her zaman Fibonacci sayısıdır.
Çiçekler, tohumlar ve kozalaklar…
FIBONACCI sayılarının yeryüzünde görünmesi yapraklardan ibaret değildir. Pek çok çiçeğin taç yapraklarının sayısı Fibonacci sayısıdır. Yoncalar 3, papatyalar, düğün çiçekleri, sardunyalar ve menekşeler 5 yapraklıdır…
Yapraklar, çiçekler derken, çiçeklerin tohumlarında da Fibonacci sayılarını okursunuz. Mesela ayçiçeklerinin ilginç sarmallarını saat yönünde olanlar ve olmayanlar diye sayarsanız ardışık Fibonacci sayılarını bulursunuz.
Bu ilginç durum, papatyaların altın kalplerinde, çam kozalaklarında, ananas meyvesinde ve soğanın kat kat tabakalarında da görülür.
Çam kozalakları bu konuda çok iyi örneklerdir. Kozalağın üzerindeki taneler, kozalağın alt kısmındaki sabit bir noktadan başlayarak tepedeki sabit bir noktaya kadar eğriler çize çize gelişir. Bu gelişme sonunda, taneleri soldan sağa ve sağdan sola doğru sayarsanız Fibonacci dizisi elde dersiniz. Bitkiler âleminde her şey, belli bir sırada ve sayıdadır. Tıpkı bütün kâinattaki, bütün âlemlerde olduğu gibi.
Çünkü: “Allah, herşey için bir ölçü kılmıştır.” (Talak Suresi, âyet,3)

Tarık Uslu

.::YASAL UYARI::.

©2004-2024 Mehmet GÜZEL, www.mehmetguzel.net

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.