-Kendime Notlar-Dependency Injection ve IoC Java Örnek

Senaryo: Müşterimiz bize veritabanı sisteminin değişebileceğini söylüyor. Yeri geldiğinde Mssql yeri geldiğinde ise Mysql kullanacağız. Bunu Dependency Injection ile Spring kısmına girmeden basit şekilde çözeceğiz.

Proje

Projemize iki Class ekliyoruz, CustomerDal (dal: data access layer) ve CustomerManager.

Manager sınıfında müşteri işlemleri gerçekleşir. Eğer müşteri eklenebilirse biz CustomerDal sınıfını çağırarak belirlenen veritabanı sistemine kaydımızı yapacağız. Add fonksiyonu oluşturalım;

public class CustomerManager {
	public void add() {	
	}
}

Şimdi burada Customer Data Access Layer ile ekleme işlemimizi yapacağız. Bunun için CustomerManager sınıfında Add metodunda CustomerDal nesnesi türeceteceğiz.

public void add() {
    CustomerDal customerDal = new CustomerDal();
    customerDal.add();
}

CustomerDal sınıfında ise

public void add() {
     //Burada oracle komutları olduğunu varsayıp
     //müşteri ekliyoruz
    System.out.println("Oracle Veritabanına Eklendi");
}

işlemini yapıyoruz.

Main sınıfında ise

CustomerManager manager = new CustomerManager();
manager.add();

diyerek bir müşterinin bilgilerini eklediğini varsayıyoruz.

Özet

Buraya kadar iki sınıf oluşturduk. Bu iki sınıftan birisi CustomerDal, burada ilgili (bizde oracle) veritabanı komutlarıyla müşteri eklemeyi gerçekleştiriyoruz. CustomerManager sınıfında ise müşteri bilgileri geçerliyse ilgili veritabanını çağırıp ekleme işini gerçekleştiriyoruz.

Sistemimiz Oracle için çalıştı. Biz sisteme güncelleme getiriyoruz. Artık Mysql’de destekleyen bir sistemimiz var. Ne yapmamız gerek? CustoemrDal içerisinde If’lerle mi uğraşacağız? İşte bi type alalım eğer 1 ise oracle değilse mssql vs vs. Tabiki hayır.

Bölüm 2

Bir sınıf başka bir sınıfı kullandığında kullanılan sınıf new’lenmemelidir. İşte IoC dediğimiz sistem bize onu yapacak. Türetilmeden bu nasıl olacak? Interface’lerle.

ICustomerDal isimli bir interface ekleyip implement edilecek metodu add() yazıyoruz.

public interface ICustomerDal {
public void add();
}

Bunu CustomerDal içerisinde implement ediyoruz. Ardından Csutomer manager’a gelerek constructor metot yazıyoruz. Bu metot ile artık CustomerDal nesnesini kullanabileceğiz.

public class CustomerManager {
private ICustomerDal customerDal;

private ICustomerDal customerDal;
public CustomerManager(ICustomerDal customerDal) {
    super();
    this.customerDal = customerDal;
}

public void add() { 
    CustomerDal customerDal = new CustomerDal();
    customerDal.add();
}
}

Burada constructor olduğu için parametre göndermemiz gerekiyor.

CustomerManager manager = new CustomerManager(new CustomerDal());

Main içerisine bunu yazarak referans tipi olarak CustomerDal’ı gönderiyoruz.

Müdür Geldi

Müdür: Arkadaşlar artık Mysql desteği vereceğiz.

Ben: Allah Allah ne olacak if mif mi yapsak?

Çok basit.

Yeni bir sınıf ekliyoruz: MySqlCustomerDal

Sonra ICustomerDal arayüzünü implemente edip “Mysql Veritabanına eklendi” yazacağız.

public class MySqlCustomerDal implements ICustomerDal{

public class MySqlCustomerDal implements ICustomerDal{
	@Override
	public void add() {
		System.out.println("Mysql Veritabanına Eklendi");
	}
}

Main içerisinde

mysql için

CustomerManager manager = new CustomerManager(new MySqlCustomerDal());

Referans tipi olarak MySqlCustomerDal()’ı yazılan yapıcı metoda göndererek Mysql kullanacağımızı belirliyoruz.

Spring dediğimiz sistem ise IoC’yi otomatik olarak yapan bir sistemdir. Örneklerle anlatılacak.

Cesur Yeni Dünya Kitap Yorumu (Taslak)

0000000066424-1

1984 sonrası okuduğum ikinci distopya kitabı. 1984 beni boğucu diktatör rejimiyle içine çekmişti. Yine sistemi sorgulayan ardından düşünceleri beynine geri hapsedilen karakterimiz vardı. Peki Cesur Yeni Dünya ne sunuyor?

Hikayemiz Ford’dan sonra diye belirtilen bir tarihte başlıyor. Ford olayın geçtiği yıldan yüzyıllar önce tanrı ilan edilmiş. İlk yıllarda insanların üretilmesi denenmiş, çocuklar hipnopedya deneylerine tabi tutulmuş. Yüzyıllar geçtikten sonra sistem rayına oturmuş.

Tüpte Üretilen ve Sosyal Sınıfı Öğrenip Doğan İnsanlar

bridge-baby-death-stranding

Hideo Kojima’nın Death Stranding adlı oyunundan

Bebekler tüplerde büyütülüyor. İlk andan tüpten çıkarılana kadar çeşitli kimyasallarla beslenip, çeşitli ortamlardan geçerek hangi sınıfa ait olacakları bilinç altlarına yerleştiriliyor. Çocuklukta cinselliğin utanılacak bir durum olmadığı öğretilip “herkes herkes içindir” gibi sapkın düşünce bu insanlara empoze ediliyor.

Herkes Herkes İçindir

Yazarın söylediği bu cümlenin meali şöyle; isteyen istediği kişiyle cinsi münasebet kurabilir. Gebelik diye bir şey yoktur. Üremek için bahşedilen şehvet tamamen zevk için kullanılıyor. Bu şekilde toplumun mutluluk düzeyi sürekli yukarılarda tutuluyor.

Günümüz incelendiğinde aslında bu cümlenin gerçekleştirilmek istendiği malum sektörle sabit; yetişkin film içerik sektörü. Burada herkes istediğiyle birlikte olabilir. Peki gerçekten bu olabilir mi? Aslında bakacak olursak İslamiyet, Hristiyanlık ve Yahudilik dinleri bu sapkın düşüncenin önüne geçmiş bulunmakta. Evet bu düşünce sadece sapkın bir düşünce. E gebelik yok, üremek için haram bu ilişkiler dinlerde. O zaman günah durumu kalkıyor? sorusu akıllara gelebilir. Lakin insan şehvetine ne kadar düşüp sürekli farklı insanlarla birlikte olmayı ne kadar çok düşünürse o kadar aptallaşır, o kadar hayvanlaşır. Hangi hayvan bir ay önce çiftleştiği eşini hatırlar? Her yıl aynı eşle mi üremeye çalışır? E üreme yok kardeşim. Peki kısır hayvanların sürekli birlikte olma isteği? Yersiz şekilde bunu yapmaları?

İşte kitabın değindiği nokta bu; hayvanlaşmak iyidir. Şehvetlenmek düşünmeyi giderir. Sürekli unutkanlık halinde olursun. Bu şekilde toplumsal refah sağlanır.

Mesela ana karakterlerden Lenina sürekli şehvet peşinde olduğu için aptal bir şekilde tasvir edilmiş. Sadece bir et parçası. Düşünmekten yoksun, ne koşullandırıldıysa onu sürekli tekrar eden bir et parçası. Sadece işini yapmakla yükümlü et parçası.

Evet, kadın bir et parçası malesef günümüzde de. Sadece bir et parçası. Zerafet ve güzelliğin manası bir çiçek yerine serpme kahvaltı sucuk isteyen kızlar. Çok değil, on beş yıl önce tayt giyip dışarı çıkmaktan utanan hanımlara şimdilerde tayt giymeyi moda yapıp onlara et gözyüle baktıran sistem var karşımızda. Bir parça gülün manasını bilmeyip sucuklu yumurtayı yeğleyen bir nesil. Peki günümüz erkekleri? Kitapta erkek yine egemen şekilde işlenmiş. Yine cinsellik düşkünü hayvan erkekler. Düşünemeyen erkekler.

Aslında bakacak olursak şehvet duygularının niçin üstün tutulduğu anlaşılıyor. İnsan şehvet duygusuyla mutlu olabileceğini sanıyor. Bundandır belki Cennet bahsi her açıldığında Hurilerden bahsedilmesi. Dünyadaki gibi bir münasebet sayılıyor. Bilinmez ki o münasebet başka bir münasebet. Uçkur münasebeti değil…

Velhasıl günümüz dünyasında hanımlarımızın moda, erkeklerimizin şehvet düşkünlüğü malesef bu cümleyi hayata geçiriyor gibi.

İnsan Türleri

gif5

İnsan üretim deneyleri INSIDE

Bu distopik oyunda bulunan insan deneyleri beni çok etkilemişti. Acaba gerçekten işçi sınıfı insan türü olmalı mı? sorusunu sormama sebebiyet verdi. Hiçbir düşüncesi olmayan, sadece çalışacak zombi insanlar. Bir kişi tarafından yönetilen onlarca kişi, bedava çalışan. Tek yapılması gereken onları beslemek. Oturduğun yerden maden çalışması yaptırıyorsun. Sıfır risk. İlginç değil mi?

Kitap bu distopyaya değiniyor. Ütopyalar sadece bir hayal kadar uzağımızda. Gerçekten de yeni bir insan türü denenmiş midir? İnsanlar sınıflandırılmak istenmiş midir? Kesin cevap yok ancak bunu yapmak isteyen birilerinin olduğu kesin. Ne için bunu istiyorlar? Dinsizlik mi buna sebep oluyor? Din yok edilirse bu dünya kurulabilir.

Toplumsal Refah

Kitapta bulunan dünya denetçileri aslında aklı selim insanlar. Herşeyi biliyorlar.

Bu sebepledir ki toplumsal refah düşünmeme ve dinsizlik temeline dayandırılıyor.

Albert Pike

Üçüncü Dünya Savaşı‘nı çıkarmamız için; İslam Aleminin liderleri ve Siyonistler arasında ajanlarımız vasıtasıyla, ayrı düştükleri konular üzerinden gerginlik çıkarmalıyız. Ve bu savaş, Müslüman Arap Dünyası ve İsrail Devleti’nin birbirlerini yok edecekleri şekilde dizayn edilmeli. Ve bu hengame içinde diğer milletleri bu konuda, fiziksel, ahlaki, ruhsal ve ekonomik olarak çökmeleri için mücadeleye zorlamalıyız. Nihilistlerin ve Ateistlerin önlerini açmalıyız ve müthiş bir sosyal çöküş provoke etmeliyiz ki böylece bu kanlı kargaşa ve vahşetin doğurduğu korku içinde mutlak ateizm etkisi ortaya çıksın.

Bu kişi komplo teorisyenleri için ne kadar önemli olsada aslında sadece bir teorisyen değil. Gerçekleştirmek istedikleri Aldous Huxley’in hayal ettiği kara ütopyadan farksız. Düşünmeyen insanlar, bilimin sadece insan kandırmacaları için kullanıldığı bir dünya. Ama bunun kesinlikle mümkün olmayacağını rahatlıkla söyleyebilirim. En azından iyi insanlar buna müsade etmeyeceklerdir.

Kitap

Kİtabın dünyası 1984 kadar gerçekçi gelmedi bana. Olabilirliği düşük karanlık bir dünya. Peki 1984 niçin gerçekleşebilir? Tek bir devlet sadece hayaldir. İnsanlık farklı inançlara sahiptir. Bu sebepledirki tek devlet istikrarı Cesur Yeni Dünyda’da bu şekilde işleniyor; düşünmeyen, koşullandırılmış insan makineler. Karanlık bir dünya. 1984’te ise günümüzden farklı devlet yapıları mevcut. İnsanlar mutlu olmak için hapa veya sadece cinselliğe ihtiyaç duymuyor. En azından düşünebiliyorlar. Tabi ploretler sınıf harici.

Son özet

Yine döndük başa. İşçi insan türü. Bunu yapamayız. Bu insanlık için çöküş olur. Bu sebepledirki robot endüstrisi üzerinde yoğunlaşıp robot işçiler üretmeliyiz. Fakat burada da şöyle bir problem karşışmıza çıkıyor; nüfus çoğunluğu ve işsizlik. Bu isyana sebep olabilir. Tüketmek için para gerek. Para kazanmak için çalışmak. Çalışmak üretmektir. Bu sebeple insanlar güzelce bilinçlendirilmeli. Kara ütopyaya gerek yok. Tüm işleri robotların devraldığı bir dünya değilde çok düşük bir iş kısmının robotlara devredildiği bir iş sektörü kurulmalı. Ülkemizdeki gibi herkes okumalı mantığı silinip üretime katkı sağlayacak “insan” bilinci kişilere aşılanmalı. Boş kalan tarım, hayvancılık gibi sektörlerin bilinci aşılanmalı. Herkes herkes içindir cümlesi ben üretirsem çark döner ben yoksam fabrika durur şeklinde yorumlanmalı. Herkes herkes için bu şekilde olabilir. Bu şekilde refah düzeyi sağlanabilir. Tüm Türkiye yönetici, doktor olursa kim işçi olacak? Kim hasta olacak?

Karmaşık fikirlerimi bozuk bir şekilde yazıya dökmeye çalıştım… 18.04.2020

Kozmozun Harikaları

Dünya

Buradan başlayalım. Yaşadığımız yerden. Bize kocaman gelen, kainata açılınca nokta bile olmayan yaşadığımız yerden: Dünya’dan.

Tam olarak şuradayız;

fghpyqbqybjquk2v8yc6fy-1200-80

Bu görülebilir evrenin bir tasvir’i. Koskoca kainat ve güneş sistemimiz. Milyarlarca galaksi. Sonuza yakın gezegenler ve yıldızlar.

Dünyamıza birazdaha yaklaşalım;

969486_271938189619334_2004201892_n

Hala göremediniz mi? Bu Başak Süper Kümesi. Galaksimiz orada. İyice bakın. Hala göremediyseniz biraz daha yaklaşalım;

sextans-a-member-local-group-of-galaxies

Bu yerel grup. Komşumuz Andromeda galaksisi ve bulunduğumuz Samanyolu galaksisinin bulunduğu grup. Burada 30’dan fazla galaksi mevcut. Bir ucundan diğer ucuna gitmek 10 milyon ışık yılı sürer.

Hala dünyamız yok. Biraz daha yaklaşalım. Belki bu defa göreceğiz dünyamızı.

5d45c3d50f254420441311e8

Ve muhteşem galaksimiz: Samanyolu. E dünya nerede?

Biraz daha yaklaşalım;

2000px-planets2013.svg_

İşte, bakın dünyamız orada.

249332

Koskocaman bir evren, galaksiler, yıldızlar, gezegenler ve dünyamız. Sizce yalnız olabilir miyiz? Sayamadığımız büyüklükte bir sayıyla olasılık kurduğumuzda dünyamızın yaşam için elverişli olması tesadüf mü gerçekten?

Dünyamız galaksimizin merkezine sadece 30.000 ışık yılı uzaklıkta. Güneş sistemimiz samanyolu yörüngesindeki bir turunu 225 milyon yılda tamamlıyor. Saatte 828.000 kilometre hızla evrende sürükleniyoruz…

Vigenere Şifreleme Yöntemi

vigenc3a8re_square_shading

Basit haliyle Vigenere şifreleme ve çözme yöntemini anlatmaya çalışacağım.

Bu yöntem aynı isme sahip kişi tarafından ortaya çıkıyor. Yaklaşık 300 yıllık bir süre sonrası Charles Babbage tarafından ancak çözülebiliyor.

İşleyiş

Doğrusal şifreleme yönteminde olduğu gibi alfabemizi yazacağız. Matris şeklinde bu tablolar yazılıp daha net şekilde çözülebilir. Olayın aslı odur zaten.

Şifrelenecek Metin: Ankara

Anahtar: ODTÜ

Alfabe;

A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş T U Ü V Y Z

Ardından hemen altına anahtarın baş harflerini ekliyorum.

A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş T U Ü V Y Z

O

D

T

Ü

Ardınan bu harflerden başlayarak alfabeyi tekrar yazıyorum.

A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş T U Ü V Y Z

O Ö P R S Ş T U Ü V Y Z A B C Ç D E F G Ğ H I İ J K L M N

D E F G Ğ H I İ J K L M N O Ö P R S Ş T U Ü V Y Z A B Ç D

T U Ü V Y Z A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş

Ü V Y Z A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş T U

Tablomuzu oluşturduk.

Şifreleme

Şifremiz ana metin kadar tekrar edecek harflerden oluşmalı.

Plain Text: Ankara

Anahtar:ODTÜOD

Alt alta yazıyorum aynı şekilde.

ANKARA

ODTÜOD

Ana metinle şifreyi alt alta yazıyoruz. Ardından son tabloda ki ilk alfabede A’nın O daki karşılığına bakıyorum. İlk satırda ki alfabede A’nın hemen altında O alfabesi ve A’ya karşılık O var. Demek A = O

N değerine bakıyorum. N’nin D ile başlayan alfabesine bakıyorum. N’ye karşılık R gelmiş.

Plain text yani şifrelenecek metininin her harfi için bunu yapıyorum.

Son olarak şifreli metnim;

ORGÜĞD oluyor.

Şifreyi Çözme

Yine alfabeye bakılarak çözülebilir.

ORGÜĞD

ODTÜOD

Bu defa tersten gitmemiz gerekecek. O’ya göre o’nun karşılığı = A

D’ye göre R’nin karşılığı = N

T’ye göre G’nin karşılığı = K

Gibi hesap edilerek şifreli mesaj çözülebilir.

Peki upuzun bir mesaj ve anahtar varsa ne yapacağız? Burada sayısal bir çözümleme gerekiyor. Müsait vakitte anlatmayı denerim.

Kriptoloji Doğrusal Şifreleme Yöntemi

1jy1rkmtclldpyf9tievzca

Doğrusal şifreleme yönteminden bahsedip nasıl şifreleme yapılacağını ve şifreli metnin çözüleceğini anlatmak istiyorum.

Formül;

y = (a.X + b)(modalfabeharfSayisi)

a ve b anahtar değerlerdir. X şifrelenecek harf değeridir.

Örnek;

a=4 b=9 anahtarına göre KEŞAN ismini şifreleyin.

1) Alfabeyi yazıyorum

A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş T U Ü V Y Z

Alfabe 0’dan başlıyor. Toplam 29 harf var.

2) Hesaplamaları Yapıp Şifreli Metni Çıkarıyorum

K harfi için hesap: K = (4*13+9)mod28 = 5 yani E harfine denk geliyor.

E harfi için hesap: E = (4*5+9)mod28 = 1 yani B

Ş harfi için hesap: Ş = (4*22+9)mod28 = 13 yani K

A …. = H

N … = V

Şifreli Mesajın Çözümü

Diyelim mesaj geldi.

Ebkhv

  1. Adım: (a-1 *a)mod28=1
  2. a-1 a’nın tersi manasındadır.
  3. Bu değer öyle bir değer olmalı ki mod28’den kalan 1 olmalı.

Burada tam değerle işlem yapalım ki daha anlaşılır olsun. 32 harflik alfabe kullanalım. Saymaya sıfırdan başladığımız için mod31’e göre işlem yapalım.

A B C Ç D E F G Ğ H I İ J K L M N O Ö P Q R S Ş T U Ü X V W Y Z

Anahtarlarım yine belli; a = 4, b = 9

K = (4*13+9)mod31 = 30 yani saydığımızda W harfine karşılık geliyor.

E = …. = X

Ş = …. = D

A = … = H

N = … = İ

Şifreli mesaj bu defa WXDHİ oldu.

Şimdi bu şifreli mesajın bize geldiğini varsayalım. Anahtarlarda geldi. Şifreyi çözeceğiz.

Adım 1

(a-1 *a)mod31 = 1 olmalı

a-1 öyle bir değer olmalı ki bunu sağlamalı.

8 seçelim

(8*4)mod31 = 1 sağladı

Adım 2

W = 30. Harf

a-1 * (X – b) mod31 => 8 * (30 – 9)mod31 => 13 kalır. Yani K değerine gelir.

X = 28. Harf

8 * (28-9)mod31=5 = E

D = … = Ş

H = … = A

İ … = N

Doğrusal şifreleme yöntemi bu şekilde uygulanabilir.

Matematiğin Aydınlık Dünyası Kısa Yorum

matematigin-aydinlik-dunyasi4d72ef1fdcb774e64b384b8c95080f01

Ancak anladığımız şeyleri severiz.

Sinan Sertöz

Kitap matematik hakkında Sinan Sertöz tarafından yazılmış. TRT’de yayınlanan bir belgesel dizisinin kitabı. Küçük bir yorum;

Başlangıç

Galiba yıllarca Matematik dersini bu sebeple sevmedim. Ta ki anlayana kadar. Ne zaman anlamaya başladım o zaman matematiği sevmeye başladım.

İlk kısımda çok güzel bir soru var, matematik insan tarafından mı ortaya çıkarıldı yoksa bulunuyordu da biz mi keşfettik? Tabi ki keşfettik. Şu anda bile keşfetmediğimiz kim bilir neler vardır matematikte…

Kitapta vurgulanan şu nokta çok güzel; bilim para için yapılırsa bilim değildir. Aynı şekilde bilimle uğraşmak için profesör olmaya gerek yok (tabi çalışmaların itibarı için önemli). Gerçi uzman olunan alanda zaten otomatikman kişi profesör oluyor. Bu iş unvan meselesi değil.

Kitapta bazı noktalarda Fuat Sezgin hocayı bolca yad ettim. Mesela Ömer Hayyam’ın matematik üzerine yaptığı çalışmalar batıda yıllarca başkalarının ismiyle ortalıkta bulunmuş. Yine bu kitapta batının kötü bir hırsız olduğu ortaya çıkıyor.

I. Bölüm

Sonsuzluk konusuna değinilmiş. Fraktalların hayret verici şekilde yaratıldığını görüyoruz. Fraktalların teorik olarak sonsuza kadar gidebileceği teorik olarak mümkün olsa bile teknik olarak pekte mümkün olmadığı görülüyor. Yine Fuat Sezgin Hocayı anmak istiyorum. Yazar Sinan Sertöz Pisagor isimli kişinin Çin, Hindistan ve Ortadoğu gibi yerlere gidip bilgiyi öğrendikten sonra kitaba aktarmasından bahsediyor. Tabi kaynak göstermeden yapıyor. Kendi malıymış gibi bu bilgileri kullanıyor. Kitapta dik üçgen teoreminin Pisagor tarafından ortaya çıkarılmadığı belli oluyor.

Fuat Sezgin’i vurgulamamın sebebi batı bilgiyi çalmış, kendi ürünü gibi pazarlamış. Şuanda teknolojide ve bilimde bu kadar ileriye gidebilmelerinin sebebi depoladıkları bilgiyi artık yaratıcılığa dökebilmeleri. Bilim Tarihi Sohbetleri kitabında da yaratıcılığın önemi vurgulanıyordu. Artık onlar yaratıcılık kısmında. Peki biz ne yapacağız? Bizde onlardan öğrenip çok daha iyisini yapacağız. Tarih tekerrürden ibaret. Bizim bu zamandaki farkımız ise binlerce bilgiye kolayca ulaşabilmemiz olacak. Bu bilgileri yaratıcılığa dökebiliriz.

III. Bölüm

IV. Bölüm

Matematik => Matesis yani ben bilirimden türeme bir kavram.

Calculus: Çakıl taşlarıyla hesap yapma.

Son

Matematik sisteminin pek de sıkıcı olmadığı ortaya çıkıyor. Yaratıcının insanlar için yarattığı inşa edebilme ve diğer şeyleri ortaya çıkarabilmeleri için yarattığı güzel bir sistem.  Yazar İlimle uğraşan adını sildirmez noktasına çok iyi değinmiş. Ünlü olmak isteyen varsa ilimle uğraşsın. İlim sahibi üretir. Üretmek gerek. Saçma, gereksiz demek yerine araştırma yapmak gerek. Boş vakit kavramını hayatımızdan çıkarmamız ve bolca kitaplarla haşir neşir olmamız gerek.

Bilim Tarihi Sohbetleri (Fuat Sezgin) Kitap Yorumu

9789753524957-600x500

“Din gerilemenin sebebi değildir, bilimle ters düşmez.”

Fuat Sezgin

“Bilimler Tarihi bütün insanlığın ortak tarihidir.”

Matthias Schramm

Fuat Sezgin beyi vefatında duymuştum. Halbuki 2016 senesinde bizatihi açtığı müzeyi ziyaret etmiştim. Fakat aklıma hiç bura kimin eseri, bu aletler tekrar nasıl yapılmış gibi sorular gelmemişti. Kalmış olduğum yurtta Fuat Sezgin konulu bir söyleşide kendisini tanımış iyice merak salmıştım. 2018 sonları (hoca vefat ettikten sonra) yazdığı kitapları araştırmaya koyulmuş “Bilim Tarihi Sohbetleri” eseri dikkatimi çekmişti. Söyleşide bu ve başka kitapları tavsiye edilmişti. Sonunda alabilmiştim. Bitirdim. Özetini detaylıca yazdım. (Tabi burada özetin özeti olacak)

Kitap bitince “vay be, keşke müzeyi bu gözle gezseydim” dedim. Fuat hoca gerçekten çok önemli işlere imza atıp çok güzel eserler ortaya koymuş.

Gerileyen Müslümanlar

Bir noktadan sonra Müslümanların gerileme sebebi bilgiden uzaklaşmaları. Bilgiyi çalan Avrupa bu bilgiyi pratiğe döküyor ve bir anda gelişmeye başlıyor. (Evet “çalan” Avrupa. Ortadoğu, Hindistan gibi yerlerden almış oldukları isimsiz kitapları dillerine çevirip, çevirmenin adını üzerine basıp utanmadan benim kitabım dediği Avrupa. Yıllarca Müslüman bilim adamlarının yazmış olduğu çoğu eser Avrupalı yazar damgasıyla basılıp okutulmuş. Araştırılıp öğrenilebilir.) Müslümanlar kaynağın kendileri olduğunu unutuyor ve çöktükçe çöküyor. Cumhuriyet döneminin ilk yıllarında cahil bir güruh ortaya çıkıyor ve “dinin bilime engel teşkil eden unsur” olduğunu iddia ediyor. Bu maalesef bugün de devam etmekte… Nasıl ki Osmanlı çöktükten sonra iman davası için canla başla çalışan alimler bir nimet olarak ortaya çıkmış, aynı şekilde Fuat hocada Müslümanların ilk günden bu yana cahil, bilim düşmanı, geri kafalı olmadığını ispat için çabasını göstermiş.

Cahil Müslümanlara Bakın Hele!

Müslümanlar hicri üçüncü yüzyıldan itibaren kendilerini bilgiye aç hissetmeye başlamış. Avrupa’nın anlattığı gibi olmayan kadim medeniyet Hindistan bilginlerinden olsun, gerek Yunan bilginlerinden olsun bilgiyi almışlar. Fakat görgüsüz Avrupa bilginleri gibi yapmamışlar, kaynağa saygı göstererek bilgiyi almışlar, kaynak bu demişler. Bilgiyi öğrendikçe öğrenmiş Müslümanlar. Fuat hoca Müslümanlarda bilimin sadece dünyalık olarak görüldüğünü belirtmiş. Bilimle inancı birbirine fazla karıştırmadıklarını ifade ediyor. Daha sonra Müslümanlar bilgi doyumuna ulaştıktan sonra yaratıcılık kısmına geçiyorlar. Yeni şeyler ortaya çıkıyor ve tam ilerleme başlıyor.

İlk Üniversite? Oku? İlk Harita?

Mesela üniversitelerin temelinin camiler olduğu bilgisi ilginç. Bundan önce şunu belirtmek gerek, Müslümanlar öğrenmede yeni bir boyuta geçiyorlar. Şöyle ki bilgiyi artık sadece okuyarak değil, hoca vasıtasıyla da öğretmeye başlıyorlar. Dinimizin getirdiği “oku” emrini çok güzel işliyorlar. Sadece kuran okuyup ibadet anlayışından uzak olarak dünyevi işlerde de meşgul olmuşlar. Mesela Halife Me’munun harita yaptırması. Te 9-10. Yüzyıllarda harita yapılması için çalışmalar başlatılıyor. Ve bu harita o zamanlarda yapılıp günümüzde tutarlı olan harita. Avrupa ilk biz yaptık desede kim bilir nereden çaldı…. Sanılanın aksine sadece Osmanlı devrinde bilimle ilgilenilmemiş.

Çöküş

Müslümanların bilim ve teknolojide ileri seviyelere gitmesi 16. Yüzyılda durmaya başlıyor. Bunun sebebi tam olarak bilinmiyor. Neden gerilediler? Aslında cevabı basit ama yok. NP problemi gibi…

Amerika’yı Kim Keşfetti

Kolombun keşfetmediği ortada… Sadece detaylı bir araştırma gerek. Her şey hazır olmasın canım 😊

Son olarak hoca “Ardılların öncelleri hep geçtiği görülmüştür” diye bahsetmiş. Muhteşem bir cümle. Bu sebeple öğrenmeli, bu öğrendiklerimizi kreatif bir şekilde kullanmalıyız. Tabi bilgiyi aldığımız kaynağı unutmadan, aşağılık kompleksine kapılmadan.

Hoca

Fuat hoca zamana çok değer veren bir kişilik. Boş vakit kavramından nefret eden birisi. Vakit değerlendirmeyi başaran birisi. Hayatı çok güzel. Keşke birisi yazsa da gençlik bunlardan haberdar olsa.

Kitaptan çıkardığım birkaç şahsi fikirlerimdi…

Veri Yapıları Çift Yönlü Bağlı Listeler

Çift Yönlü Bağlı Listelerde İşlemler (Ortalama, Yer Değişim, Araya Ekle)

Bu yazı uzunmuş gibi görünsede lütfen sadece sakince oku. Bağlı listelerde kesinlikle kalem kağıt olmadan olmaz. İstenilen problemin çözüm yoluna kalem kağıt ile çok daha net şekilde ulaşırız. Aşağıda paylaşacağım kodlar bağlı listede ki temel ve akla gelen işlemler.

Problemler genel olarak Iterator kullanlarak çözüldü. Şadi Evren Şeker hocam sayesinde iterator kullanımını kavradıktan sonra bağlı listelerde işlem yapmak benim için oldukça kolaylaştı. Nedir bu iterator dersek kök’ü yani bağlı listenin ilk elemanını bozmadan işlemleri kolayca yapabilmemizi sağlayan ikinci bir kök verisi diyebiliriz. Değişimleri ve diğer işlemleri onun üzerinden gerçekleştirmeye çalıştım.

Araya Ekleme

Bu işlem ilk bakıştığımızda bana oldukça zor gelmişti. Ama kalem kağıt sonrası oldukça basit şekilde hallettim. Buraya sadece algoritmasını yazacağım.

1- iter isimli node_t tipinde düğüm oluştur, bu düğümü başlangıç(kök) verisine eşitle

2- Düğümü nereden verisine kadar götür(nereden dediğimiz hangi elemandan sonra eklenecek verisi)

3- daha sonra yeni bir düğüm oluştur

4- Yeni düğümün next’ini iter’in next verisine bağla.

5- iter düğümünün next verisinin prev verisini yeni verinin next’ine bağla

6- iter’in next yani sonraki verisi yeni düğümü içersin

7- yeni verinin prev yani önceside iter’e bağlansın

8- yeni düğümün data’sı gelen veriyi alsın

node_t *iter = root;
int i;
for(i=0;i<nereden;i++) { iter = iter->next;
}
node_t *yeni = (node_t*)malloc(sizeof(node_t));

yeni->next = iter->next;
iter->next->prev = yeni->next;
iter->next = yeni;
yeni->prev = iter;
yeni->data = veri;

Yer Değişme

İki adet iter düğümümüz olacak. Hangi indisler yer değişecekse onlar girilecek. Ardından ilk ve ikinci tanımladığımız düğümler belirtilen indekslere gelip verileri alacak. Sonra veri kaybı olmaması için int tipinde a değişkeni tanımlıyoruz. a’ya iter1’in data’sını, iter1’in datasınada iter2’nin datasını, iter2’nin datasınada a’ya almış olduğumuz iter1’in datası yani a’yı bağlıyoruz. Çok karmaşık geldiyse kalem kağıt!

void xchange(int data, int data2) 
{ 
int i; 
node_t *iter = root; 
node_t *iter2 = root; 
for (i = 0; i < data; i++)  {  iter = iter->next; 
} 
for (i = 0; i < data2; i++)  {  iter2 = iter2->next; 
} 
int a = iter->data; 
iter->data = iter2->data; 
iter2->data = a; 
}

Bunun harici ortalama alma, maksimum eleman gibi işlemler ana kod içerisinde.

Ana kod;

typedef struct node
{
	int data;
	struct node* next;
	struct node* prev;
}node_t; //Yeni bir düğüm oluşturmak için oluşturduğum yapı.
node_t *root = NULL;//kök verim

void add(int data)
{
	node_t *yeniYer = (node_t*)malloc(sizeof(node_t));//Hafızada Yer Açtım
	if (yeniYer == NULL)return;//Yeni yer açılmıyorsa devam et.
	yeniYer->data = data;//if'e girilmediğinde buraya devam edecek. yeniYer'in datası
	//gelen data oalcak.
	
	if (root == NULL)//Kök boşsa yapılacak işlemler
	{
		yeniYer->prev = NULL;
		yeniYer->next = NULL;
		root = yeniYer;
	}
	else
	{
		node_t *iter = root;
		while (iter->next)//iterator kullanarak liste elemanları arasında geziyorum
		{
			iter = iter->next;
		}
		iter->next = yeniYer;//Gösterici en son veriye gelince ekleme işlemini
		//yapıyorum.
		yeniYer->prev = iter;
		yeniYer->next = NULL;
	}
}

void list()
{
	node_t *iter = root;
	while (iter->next)
	{
		printf("%d ", iter->data);
		iter = iter->next;
	}
}

void arayaEkleme(int nereden,int veri)
{
	int i = 0;
	node_t *iter = root;
	for (i; i < nereden; i++)iter = iter->next;
	node_t *yer = (node_t*)malloc(sizeof(node_t));
	yer->next = iter->next;
	iter->next->prev = yer->next;
	iter->next = yer;
	yer->prev = iter;
	yer->data = veri;
}

int ortalamaAl()
{
	node_t *ort1 = root;
	ort1->data = 0;
	int sayac = 0;
	node_t *iter = root;
	while (iter->next)
	{
		ort1->data += iter->data;
		iter = iter->next;
		sayac++;
	}
	ort1->data /= sayac;
	return ort1->data;
}

void xchange(int data, int data2)
{
	int i;

	node_t *iter = root;
	node_t *iter2 = root;

	for (i = 0; i < data; i++) 	{ 		iter = iter->next;
	}
	for (i = 0; i < data2; i++) 	{ 		iter2 = iter2->next;
	}

	int a = iter->data;
	iter->data = iter2->data;
	iter2->data = a;

}


int maks()
{
	node_t *iter = root;
	int buyuk = iter->data;
	while(iter)
	{
		if(buyukdata)
		{
			buyuk = iter->data;
		}
		iter = iter->next;
	}
	return buyuk;
}


int min()
{
	node_t *iter = root;
	int kucuk = iter->data;
	while(iter)
	{
		if(kucuk > iter->data)
		{
			kucuk = iter->data;
		}
		iter = iter->next;
	}
	return kucuk;
}


int main()
{
	int veri, nereden,n1,n2;
	add(1);
	add(2);
	add(5);
	add(7);
	add(6);
	add(9);

	add(5);
	//add(1);
	list();



	printf("Hangi Veriler Yer Degisecek:");
	scanf_s("%d %d",&n1,&n2);
	xchange(n1, n2);//Mesela 7 ile 6 rakamlarının yerini değişmek için 3,4 yazmam
	//gerek. Saymaya sıfırdan başlarız!




	/*node_t *ortalama = root;
	ortalama->data = ortalamaAl();
	printf("%d\n", ortalama->data);
	printf("Hangi Siraya Hangi Veri Eklenecek:");
	scanf_s("%d %d", &nereden, &veri);*/

	/*arayaEkleme(nereden, veri);
	list();*/
	list();
}

Event’lar

Event’lar

Olay bildirimi için Delegate(temsilci) ile birlikte kullanılan ifadelerdir. Örneğin Button Event’ı. Button’a basılınca istenilen fonksiyon çalıştırılır. Bu fonksiyonu çağıran ise olay yöneticisi dediğimiz temsilcilerdir.

Kullanım;

Erişim_Belirteci event Temsilci_Adı(Delegate) Olay_İsmi

Örnek 1;

Bu örnekte basitçe event nasıl çalışır ona bakıyoruz.

delegate void Temsilci();
class Sinif
{
	pubolic event Temsilci Eventim;//Event property olarak yazılarak delegateye bağlandı
	public void eventMetodu()
	{
		if(Eventim != null)
		{
			Eventim();
		}
	}
}

class Program
{
	static void main()
	{
		Sinif mySinif = new Sinif();
		mySinif.Eventim += new Temsilci(my_eventim);//Event üzerine ekleme.
		mySinif.eventmetodu();
		Console.ReadKey();
	}
}

static void my_eventim()
{
	Console.Write("Olay Oldu");
}

Örnek 2;

Bu örnekte ise stok miktarı hikayesi oluşturup stok azaltıyoruz. Stok<0 olduğu zaman olay tetiklenip “toptancı gelecek” mesajı veriyor.

delegate void StokAzaldiEvent();

class Urun
{
	public event stokAzaldiEvent stokAzaldi;
	private string adi;
	private int stokMiktar;
	public int StokMiktarı
	{	
		get{return stokMiktar;}
		set{stokMiktar = value;
		if(value<10 && StokAzaldi != null)
			StokAzaldi();
		}
	}
	
	public string ad
	{
		get{return ad;}
		set{ad = value;}
	}
	
	public Urun(string adi,int StokSayisi)
	{
		ad = adi;
		stokMiktar = StokSayisi;
	}
}


class program
{
	static void Main()
	{
		Urun gazoz = new Urun("Niğde",35);
		gazoz.stokAzaldi += new stokAzaldiEvent(gazoz_stok); //Delgate'e bağlandı.
		for(i=0;i<10;i++){//Burada stok miktarı 10 defa azaltılıyor.
                //i<10 yerine stok miktarı ayarlanabilir.
		gazoz.stokMiktar; -=2;
		thread.Sleep(600);
		cw(gazoz.ad + "için stok miktarı:" gazoz.StokMiktarı.toString());
		}
		Console.ReadKey();
	}
	
	static void gazoz_stok()
	{
		Console.WriteLine("Toptancı Gelecek");
	}
	
}

Örnek 3;

Burada projeye referens kısmından Windows Forms kütüphanesi eklenmeli. Sürükle bırak olmadan form uygulaması. Ne kadar zor değil mi? 🙂

using System.Windows.Forms;

public delegate void StartDelegate();

class eventDemo : Form
{
    public event StartDelegate StartEvent;

    public eventDemo()
    {
        Button click = new Button();
        click.Parent = this;
        click.Text = "Buton";

        click.Click += new EventHandler(onClick);
        StartEvent += new StartDelegate(onStartEvent);
        StartEvent();
    }

    public void onClick(object sender, EventArgs e)
    {
        MessageBox.Show("You Clicked!");
    }

    public void onStartEvent()
    {
        MessageBox.Show("I Just Started");
    }
}

namespace Finaller
{
    class Program
    {
        static void Main(string[] args)
        {
            Application.Run(new eventDemo());
            Console.ReadKey();
        }
    }
}