Stallman

No Comments

Bu haftasonu değerli dostlarım ile Stallman ı dinlemeye gittik.Türkiye ye 2. kez gelen Richard Stallman GNU nun yaratıcısı.Açıkçası konu çok teknik değildi.Fakat farkettimki gerçek bir anlam karmaşası yaşadığımız konularda  ve aslında doğru bildiğimiz yanlış konusunda bizleri aydınlattı kendisi.

Konu yazılım lisanları ve lisanların tehlikeleriydi.Başkan yine ufkumuzu gelnişletti. Mikrozoft la savaşın IBM le zavaşın dedi.Aslında pekte güzel şeyler söyledi :)

Özeti şöyle : http://www.gnu.org/music/free-software-song.html

Sanırım Bilmök ün sayfasından sunumu izleyebilirsiniz.

İlk Arabam C4

2 Comments

Bilmiyorum belki Getz den C4 e geçiş yaptığımdan dolayı düyanın en iyi arabasına binmiş gibi hissediyorum kendimi bugünlerde.Getz bana ait değildi ve ilk arabam C4 yani bana ait olan ilk arabam.

Bir kere Citroen alacaklara yada düşünenlere ilk tavsiyem kimseye kulak asmamaları.Zira etrafta o kadar çok boş konuşan adam var ki ağzı olan konuşuyor  un tam anlamını hakkıyla teslim ediyor.Mesela amcam hiç Citroen kullanmamış ama direk “Citroen çok kötü abi” diyebiliyor.”NEDEN ?” sorusuna cevabı ilginç “Bizim arkadaşta vardı bozuldu.Oradan biliyorum.” :) Yahu arabanın bozulması kadar doğal bir durum yok.Bir de şöyleleri vardır.Amcam hayatı boyunca otomatik vites dışında araba kullanmamıştır.Manuel kullanmayı bilmiyordur.Ama büyük araba otoritesidir.”Citroen kötü yaa..!” :) LA havle ….

Gelelim aracın bende bıraktığı ilk izlenime.Arabalardan ciddi anlamda çok anlamam.Araç dizel olmasına rağmen dizellerdeki motor gürültüsü yok.Bu en  sevindiğim nokta.Aracın tasarımı ve görünüşü oldukça iyi.Ama biraz Audi taklidi olmuş gibi geldi bana.Fakat bu durum beni rahatsız etmedi.

İç dizayn ve konforu sınıfından beklenmeyecek kadar iyi.Gece sürüş modu kullanışlı ve analog dijital göstergeler çok şık.Kullanılabilirlik harika.

Motor olayın gelirsek; dediğim gibi gürültüsüz ve performanslı bir motora sahip.92 HP 1.6 18000 devirde turbosu devreye giriyor gazı köklediğiniz zaman ve cidden altınızdaki gücü hissedebiliyorsunuz.Araç kalıbına göre oldukça atik.Klima açık konumda yokuşta kalkarken boğulma olayı olmuyor.

Beklediğimden çok daha üst düzey bir performans aldım diyebilirim.Servis ve diğer olayları kullandıkça göreceğim.Son sözüm eğer yeni bir C4 alma konusunda tereddütler yaşıyorsanız  haklısın aynılarını bende yaşadım.Ama kessinlikle hakkını veriyor.Şiddetle tavsiye ederim.

Ubuntu 10.04 te apttitude sorunu

No Comments

Laptop um bozulunca uzun zamandır yüzüne bakmadığım :) desktop umu kullanmak zorunda kaldım.Tabi üzerinde çalıştığım projeler için yeni bişeyler kurmam gerek malum uzun zamandır kullanmamışım.Önce bir upgrade edelim

apt-get distpugrade

Fakat o da ne :!! :S

mustafa@mustafa-desktop:~$ apt-get dist-upgrade
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
mustafa@mustafa-desktop:~$ sudo apt-get dist-upgrade
Reading package lists... Error!
E: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. Current value: 25165824. (man 5 apt.conf)
E: Error occurred while processing x11-xserver-utils (NewFileVer1)
E: Problem with MergeList /var/lib/dpkg/status
W: Unable to munmap
E: The package lists or status file could not be parsed or opened.

Biraz araştırdım ettim falan şöylede güzel bişey buldum.

sudo touch /etc/apt/apt.conf.d/30cache
#add
APT::Cache-Limit "125829120";

Derdimi çözdü mü ?

Evet çözdü…

Git Üzerine

No Comments

Git versiyonlama sisteminde krınik olarak karşılaştığım ve her seferinde çözümünü aramak zorunda kaldığım şeyleri sonunda buraya yazmaya karar verdim.
Öncelikle bir depoyu clone lamak…
git clone git@github.com:depoadı.git
Bu şekilde bir depoyu oulşturabiliriz.Remote taki bir branch ta çalışmak için ise:
git checkout -b  branch-adi origin/branch-adi
kullanılıyor.Şimdilik bu kadar .Yeni sorunlarla karşılaştıkça bu yazıyı geliştirmeyi düşünüyorum

Git versiyonlama sisteminde krınik olarak karşılaştığım ve her seferinde çözümünü aramak zorunda kaldığım şeyleri sonunda buraya yazmaya karar verdim.
Öncelikle bir depoyu clone lamak…

git clone git@github.com:depoadı.git

Bu şekilde bir depoyu oulşturabiliriz.Remote taki bir branch ta çalışmak için ise:
git checkout -b  branch-adi origin/branch-adikullanılıyor.Şimdilik bu kadar .Yeni sorunlarla karşılaştıkça bu yazıyı geliştirmeyi düşünüyorum

Kızıyorum Ama…

2 Comments

Bu h****r denilen firmadan kendinme bir sunucu almıştım.Amcamlar bozuk diski çakınca bna sorun üzerine sorun.Zaten hiç iyi olmadığım bir konu sunucu yönetimi birde böyle sorunlar yaşayınca iyice tiksindim.Bu yüzden blogum bir süreliğine kapalıydı.Şimdi linode a gçetim bakalım.İnşallah burada dikiş tutturabilirim.

Yılın müzik videosu

No Comments

Bu adamlar harbi çok iyi.Geldikleri kültürün dışında bu işin eğitimini de almışlar sanki.Dinledikçe dinleyesim geliyor.

İşte bu da linki: http://www.facebook.com/video/video.php?v=446528778800

İyi seyirler…

WordPress Kullanıcı Dostu URL

No Comments

Hiç adetim değildir ama madem yapmak için 15 – 20 dakikamı ayırdım, herkes faydalansın diye ilk wordpress yazımı yazayım dedm :)

Nette çok sevdiğim bir arkadaşım ile konuşuruken o uyardı,”Madem blog tutuyorsun, şu url leri düzelt” dedi. Bende düzelteyim dedim.Baktım oradaki yapılar biraz garip.

Ne bileyim işte tarihe göre falan tutuyor.Saçma geldi.Bence en uygun kategori ve ileti başlığı olmalı.Ayarlar ->Kalıcı Bağlantılar kısmında özel sekmesini tıklayın ve şunu yapın:

/%category%/%postname%/ artık url leriniz gayet şk gözükecek :)

Bir hatırlatma eski url lerinizde yönlendirildi.Sanırm eski sürümde böyle bir özellik yokmuş ki millet bu konuda eklenti ve makaleler yazmış.

E malum bilmiyorum, çünkü sadece 8 9 aydır kullanıyorum WordPress…

Nesne Yönelimli Programlama Giriş

No Comments

Ne zamandır yazmak istediğim konuların başında geliyordu.Yazma amacım çok iyi bildiğimden değil sadece pekiştirmek, unutmamak ve hatırlamak.

Nesne yönelimli programlama 4 temel prensibe dayanıyor ve bu prensipler etrafında şekillenmiş tasarım desenlerini kapsıyor.Tasarım desenlerinin çıkış sebebi ise aslında problemlere dayanıyor.Yani karşılaşılaşılan bir problem tipi var buna bir çözüm uygulanması gerekiyor.Uygulanılan çözüm her seferinde o durumu çözüyor ise işte o bir tasarım deseni oluyor.

Peki tasarım desenleri neden ihtiyaç duyuyoruz.
Tasarım desenleri, test sağlayarak kanıtlanmış kalkınma paradigmaları geliştirme sürecini hızlandırır.Kodun okunabilirliğini arttırır.En önemlisi kod kontrol altında olur ve yazmış olduğunuz kod bug fixler ile yamalanmış bohça yerine düzenli büyüyen kod haline gelir.Bunu şehir planllaması gibi düşünebiliriz aslında, eğer tasarım kalıpları kullanılırsa buna düzenli kentleşme, kullanılmaz ise buna düzsensiz kentleşme diyebiliriz. Sisteminiz ne kadar çok büyür ise bir o kadar da içinden çıkılmaz hal alır (eğer tasarım kalıpları kullanılmaz ise).

Tasarım desenlerine tekrar döneceğim.Şimdi açıklamam gereken 4 prensip

1. Encapsulation (Kapsülleme) : Oluşturacağımız sınıfların özelliklerine erişimi kısıtlama ve gizlemeyi işaret eder.Şöyle ki ihtiyaca göre  oluşturacağınız bir sınıf  belirli değerlerini verdikten sonra işlemleri kendi içinde yapmasını  ve dışarıdan bire müdahale görmemesini  isteriz.Bunun için özelliklerimizi private yapıp bunları getter ve setter metodlar yardımı ile kullanmalıyız.Basit bir örnek

class Person {
 private String name;
 private String surnname;

 public void setName(String name) {
 this.name = name;
 }
 public String getName() {
 return name;
 }
 public void setSurnname(String surnname) {
 this.surnname = surnname;
 }
 public String getSurnname() {
 return surnname;
 }

 public static void main(String[] args) {
 Person person = new Person();
 person.setName("Mustafa");
 person.setSurnname("İleri");

 System.out.println(person.getName());
 System.out.println(person.getSurnname());

 }

}

2. Abstraction (Soyutlama) : Soyutlama karmaşıklığı önlemek, nesnelerin birbirleri ile olan bağımlılığını yönetebilmek için kullanılır.Soyutlama ile miras aslında farklı şeylerdir.Soyutlamada kullanacağınız abstract class ve interface ile bir sınıfın bağımlı olduğu metodları belirleyebilirsiniz.

3.Inheritance (Miras): Nesneleri birbirlerinden türetmedir.Mesela her futbolvu bir sprocu ise futbolcu nesnesi sporcu dan türeyebilir. Miras alınan üst sınıf a parent alt sınıfa child der isek; üst sınıftaki bütün metodlar ve özellikler alt sınıfa gelir.Bir soyut sınıf değil ise üst sınıftaki metodları tekrar tanımlamak zorunda değilsiniz.Java PHP ve C# dillerinde çoklu miras alma yoktur.Yani siz bir  A sınıfı hem B den hem C den miras alsın diyemezsiniz.

4.Polymorphism (Çok Biçimlilik): Nesneler birbirlerinden farklı olabilir fakat miras ilişkisine ikisi de aynı ana sınınftan türemiş ise o sınıflara hükmedebilirsiniz. Bunu şöyle örnekleyelim. Şimdi bir soyut sınıf oluşturacağım adı Insan olan, sonra buna bağlı olan Muhendis veOgrenci sınıfları oluşturacağım. Daha sonra buna bağlı olmayan bir Makine sınıfı oluşturacağım. Sonra bunları tip olarak insan isteyen bir metod a sokacağım sonuca bakalım.

Insan.java
public abstract class Insan {
 abstract void nefesAl();
 abstract void yasa();
}
Makine.java
public class Makine {
 public void calis() {
 }
}
Muhendis.java
public class Muhendis extends Insan {

 @Override
 void nefesAl() {
 System.out.println("Muhendis nesef alıyor");
 }

 @Override
 void yasa() {
 System.out.println("Muhendis nesef yaşıyor.");
 }

}

Ogrenci.java
public class Ogrenci extends Insan {

 @Override
 void nefesAl() {
 System.out.println("Ogrenci nesef alıyor");
 }

 @Override
 void yasa() {
 System.out.println("Ogrenci nesef yaşıyor.");
 }

}
Test.java
public class Test {
 public static void main(String[] args) {
 Test test = new Test();
 Ogrenci ogrenci = new Ogrenci();
 Muhendis muhendis = new Muhendis();
 Makiine makine = new Makine();
 test.nefesAl(ogrenci);
 test.nefesAl(muhendis);
 test.nefesAl(makine);
 }

 public void nefesAl(Insan insan) {
 insan.nefesAl();
 }
}

Şimdi Test.java dosyamızı çalıştırdığımızda nefesAl metoduna sadece Insan tipinde nesne verebiliyoruz.Buraya muhendis veya orgenci verebiliyorken makineyi veremedik.Basit olarak çok biçimliliği böyle anlatabilirim.

Tasarım desenleri uygulanma şekline göre şu şekilde kategorilendiriliyor.

1. Cretional Design Patterns (Yaratılışsal Tasarım Desenleri)

  • Abstract Factory
  • Builder
  • Factory Method
  • Object Pool
  • Prototype
  • Singleton

2. Structural Design Patterns (Yapısal Tasarım Desenleri)

  • Adapter
  • Bridge
  • Composite
  • Decorator
  • Facade
  • Flyweight
  • Private Class Data
  • Proxy

3. Behavioral Design Patterns (Davranışsal Tasarım Desenleri)

  • Chain of responsibility
  • Command
  • Interpreter
  • Iterator
  • Mediator
  • Memento
  • Null Object
  • Observer
  • State
  • Strategy
  • Template method
  • Visitor

İlk yazımda bu kadar anlatabildim bundan sonraki hedefim tüm bu tasarım desenlerini örnek kodlarla anlatmak.

Ubuntu yu Cennete Çevirmek

No Comments

Görsel olarak Ubuntu nun Windows tan daha kötü olduğu yazılır çizilir.Benim gibi hem açık kaymak gönüllüsü iseniz, hem görselliğe önem veriyorsanız hem de Linux ta yeni iseniz :) Sizlere Masaüstünüzü güzelleştirmeniz konusunda iblgi vermeye çalışacağım.Bilgisayarınızın donanımsal bir manisi yok ise 2 sihirli kelime var.

1. Compiz
2.  Awn

Compiz Awn ye göre daha bilindik birşeydir.Compiz yardımı ile masaüsütmüzü gerçekten inanılmaz, Wndows çuların  yalnızca rüyalarında görebileceği harika efektler ile süsleyebiliriz.İşin güzel tarafı bu donanımsal olarak bir probleminiz yok ise herhangi bir performans sorunu oluşturmuyor.

AWN ise Gnome için bir pencere navigasypn sistemidir.Aslında toolbar diyelim biz ona.Ama gerçektek işleri o kadar güzel o kdar eğlenceli ve kullanışlı hale getiriyor ki.Bir kullanmaya başladığınızda vazgeçilmeziniz oluyor.

Eğer Linux ta benim gibi çaylaksanız ve masaüstünüzü biraz daha şenlendirmek istiyorsanız bu 2 araç çok fazla işinize yarayacaktır.

Süper Sunucu Nasıl Yapılandırılır ?

2 Comments

Sunucu konusunda çok yeniyim.Kendime bir makine edindim ve bakalım neler yapabileceğim diyerek bir maceraya atıldım.Sunucuyu Almanya üzerinden aldım.1 2 başarısız deneme sonrasında moralim oldukça bozuldu.Adamlarla yazışa yazışa tarzanca olan İngilizce mi az da olsa geliştirme fırsatı bulabildim(Allah translate.google.com dan razı olsun).

Peki nasıl yapmalıydı ? Bir yolu olmalı bu iş bu kadar zor olmamalıydı.Cesaret aldığım nokta şu oldu.Bir dostumun bana ISPConfig i göstermesi ile telrar denemeye kara verdim.Herşeyi sil baştan yaptım.Neye göre mi ? İşte bu makaleye göre. Eğer bir sunucu edindiyseniz ve benim gibi çaylaksanız tam bu noktadan başlayabilirsiniz.E tabi sadece bu kadar ile kalmıyor, gereksinimlere göre yeni şeyler kurmanız gerekiyor.Ama şu bir gerçek ki çok şey öğreniyorsunuz.Gençlere önerim :) karşılayabilecek paranız var ise bir sunucu edinin ve gerçek deneyimler yaşayın derim :) Gelişiminizde çok katkısı bulunabilir böyle bir olaayın.

Older Entries