29 Mayıs 2012 Salı

django framework nedir? farki nedir?

Django; hızlı, temiz ve pragmatik tasarımı teşvik eden , üst seviye bir Python Web Framework'üdür. (Her frameworkun olduğu gibi esnekliğe performansa önem verdiğini iddia etmektedir, gfakat bunu denemeden göremeeceksiniz malesef.) Django , Kendinizi tekrar etmeme prensiplerine (DRY - Dont repeat yourself) bağlı olarak, işlemleri olabildiğince otomatize etmeye odaklandır.

Bir yazılım frameworknden ne beklersiniz? İşte Django

İlişkisel nesne eşleştirmesi Veri modellerinizi tamamen Pythonda tanımlayın. Zengin, dinamik veriatabanı erişimi API'si ni ücretsiz olarak alacaksınız :) İstediğiniz yerde SQL de yazabilirsiniz tabi ki. Otomatik Yönetim Arayüzü Bir WEB projesi yönetim paneli olmadan genelde bir işe yaramıyor. Vaktinizi ve bu işe uğraşma maliyetlerinizi azaltın. ekleme, update etme gibi ihtiyaçlarınız için Django bunu otomatik olarak yapıyor. Kalkışa hazır! Zarif URL tasarımı URL'lerinizi herhangi bir sınır olmadan, istediğniz güzellikte tasasrlayın. İstediğiniz kadar esnek olabilirsiniz. Şablon(template) Sistemi Django'nun güçlü, geliştirilebilir ve tasarımcı dostu şablon dili ile İçeriği , python kodlarını ve tasarımı birbirinden ayırın! Önbellek sistemi Memcached veya diğer cache frameworklerinden fayadalanın! Elbet bir gün ihtiyacınız olacak çünkü... Internationalization Django, çoklu dil uygulamaları için tam destek sağlar. Dil'e özel işlevsellik de sağlar. Okumaya devam etmek için lütfen Djangonun kendi sitesinden devam ediniz. Devamı için : django framework nedir? farki nedir?

RAID nedir?

Raid (redundant array of independent disks) : Türkçesi ; Bağımsız hard disklerin yedekli halde sunulduğu dizi manasına gelir. Depolama ile ilgili konularda veri kaybının önüne geçilmesi için kullanılan yöntemin adıdır. Bu standart ile birlikte verinin(az veya çok) fazladan bir kopyasının tutulması ile birlikte herhangi bir problem durumunda veri kaybının önüne geçmeyi planlamış olursunuz. Serverlar bazında yüksek veri depolama gerektiren, ve özellikle kritik veriler içeren serverlarınız varsa uygulamanız MUTLAKA tavsiye edilir. Çünkü Hard disk dediğimiz de aslında fiziksel olarak bozulabilen bir donanımdır. Bir serverda diskiniz bozulduğunda * Tüm verileriniz gidebilir * Tüm müşterileriniz gidebilir :) RAID bu gibi durumların donanımsal olarak önüne geçer. Sisteme Performans katmak için tasarlandığı modeller de vardır. Birkaç tane Raid seviyesi vardır. Konuyla ilgili okumaya devam etmek için http://www.bilgisayarkavramlari.com/2010/03/27/raid-redundant-array-of-independent-disks/ Devamı için : RAID nedir?

22 Mayıs 2012 Salı

php hata mesajlarını gösterme (linux)

Ubuntuda Apache, Php ve mySql kullanarak web sitesi geliştirirken, notice, fatal error vb. hata-uyarıları görüntüleyebilmek için php.ini dosyası üzerinden bir ayar yapmak gereklidir. Çünkü Ubuntuda php5'i kurduğumuzda php.ini dosyası içerisinde default olarak display_errors = Off gelmektedir.
  sudo gedit /etc/php5/apache2/php.ini  
diyerek php.ini dosyasını editörde açıyoruz, ve display_errors = Off satırını bulup, Off kısmını On ile değiştiriyoruz. Devamı için : php hata mesajlarını gösterme (linux)

20 Mayıs 2012 Pazar

linuxta virtual host ayarları (apache virtual hosts settings)

Apache'yi install ettiğinizi varsayarak, virtual host ayarlarını nasıl yapacağımıza bakalım. Virtual host'un ne işe yaradığına kısaca değinecek olursak, tek bir apache web sunucusu üzerinde birden çok domain barındırmaya yarar. Tek bir IP adresi ile birden fazla domaine sahip oluruz. Buna da name-based virtual hosts denir. Farklı IP adresleriyle farklı domainlere sahip olmak (IP-based virtual hosts) için ayrı bir konfigürasyon gerekmektedir. Biz şimdi name-based virtual hosts dediğimiz ayarlara bakalım. İlk olarak yaptığımız web sitesi çalışmalarını tutacağım klasör yolu; /home/khantunckale/sites/ . Yazının devamında web sitelerini barındıracağım klasör burası olacak, kendi çalışmalarınızı nerede barındıracaksanız dosya yolunu ona göre ayarlayınız. /home/khantunckale/sites/ klasörü içine test adında bir klasör oluşturuyoruz.
  sudo mkdir sites/test  
Daha sonra deneme amaçlı olarak test klasörü içerisinde bir tane index.html oluşturalım.
  sudo gedit sites/test/index.html  
Editörümüzde basit bir html dosyası oluşturduktan sonra kaydedip kapatıyoruz. Şimdi test klasörü içerisindeki index.html dosyasını browserımızdan http://test/ olarak nasıl çağıracağımızı ayarlayalım. Apache ayarlarını yapmak için ilk olarak /etc/apache2/sites-available klasörü içerisindeki default dosyasındaki ayarları test adında başka bir dosyaya kopyalıyoruz.
  cd /etc/apache2/sites-available  /* terminalde işlem yapacağımız dizini değiştiriyoruz */    sudo cp default test  /* default dosyasını cp komutu ile test dosyasına kopyaladık */  
Şimdi test dosyasını açıp, default dosyasından farklı olması gereken yerleri düzenliyoruz.
  sudo gedit test  
Değiştireceğimiz satırların hangileri olduklarını inceleyelim. Öncelikle ServerAdmin satırının hemen altına ServerName test satırını ekliyoruz. Bu bizim browser üzerinden siteyi çalıştıracağımız isimdir, default dosyasında bu satır yok. İkinci değiştirmemiz gereken satır DocumentRoot /var/www satırı. Biz burada /var/www yerine web uygulamamızı nerede barındıracaksak o klasörün yolunu yazıyoruz. Bizim örneğimizde bu klasör /home/khantunckale/sites/test Üçüncü olarak değiştirmemiz gereken satır ise Directory /var/www/ satırı. Burayı da bir önceki değişikliği yaptığımız satırdaki gibi /var/www/ kısmını /home/khantunckale/sites/test/ olarak değiştiriyoruz. Şimdilik bu test dosyasında başka bir değişikliğe ihtiyacımız yok. Değiştirdiğimiz satırları kod olarak da yazayım.
  ServerName test /*Bu satır default dosya içerisinde yok*/  /*Browserımızdan hangi isimle çağırmak istiyorsak ServerName olarak onu yazıyoruz */    DocumentRoot /home/khantunckale/sites/test /*Bu satır default olarak /var/www şeklinde.*/  /*Bunu biz web uygulamamızın bulunduğu klasör olarak değiştiriyoruz, bizim örneğimizde /home/khantunckale/sites/ */    Directory /home/khantunckale/sites/test/ /*Bu satır default olarak /var/www şeklinde.*/  /*Bunu da /home/khantunckale/sites/test/ olarak değiştiriyoruz */  
Şimdi gelelim bilgisayarımızın /etc/hosts dosyasında yapacağımız değişikliklere. Öncelikle terminalde bulunduğumuz dizini değiştirmek için cd ~ yapıp enterlıyoruz (böylece en üst dizine geçiyoruz.). Sonrasında sudo gedit /etc/hosts diyerek metin editörümüzde bu dosyayı açıyoruz. Dosyanın içerisinde
  127.0.0.1	localhost  127.0.1.1	ubuntu.ubuntu-domain	ubuntu  
satırının altına 127.0.0.1 test satırını ekliyoruz ve kaydedip kapatıyoruz. Yapmamız gereken son bir işlem daha var. Yaptığımız sitenin domainini apache'ye bildiriyoruz. Ardından da apache'yi restart ediyoruz.
  sudo a2ensite test    sudo /etc/init.d/apache2 reload  
Artık browserımızın adres satırına http://test/ yazdığımızda /home/khantunckale/sites/test/ klasörü, dolayısıyla onun içerisindeki index.html dosyası açılacak. Devamı için : linuxta virtual host ayarları (apache virtual hosts settings)

Uzman web yazılımcısı arıyoruz.

Ideasoft yazılım departmanında çalışmak üzere Uzman yazılımcı aranıyor. PHP ve Mysql konularında Uzman olması gerekmektedir, ancak Herhangi bir web programlama dilinde ve herhangi bir SQL veritabanında uzman olması da yeterlidir. Yazılım Ofisi Gebze Organize Sanayi Bölgesinde Teknopark bünyesindedir. Servis imkanı mevcuttur. Bilgisayar veya Matematik Mühendisi tercih sebebi olabilir. macitemre [at] gmail.com adresine cv lerinizi ve yaptığınız projeleri gönderebilirsiniz. Detaylı olarak ilk önce mail yoluyla daha sonra yüzyüze görüşülecektir. Devamı için : Uzman web yazılımcısı arıyoruz.

19 Mayıs 2012 Cumartesi

Java Immutable (Değişmez) Sınıflar

Immutable (değişmez) sınıflar, nesneleri bir kez oluşturulduktan sonra nesne içeriği değiştirilemeyen sınıflardır. Bir nevi sabit sınıflardır diyebiliriz. Örneğin, Java'da String sınıfı değişmez sınıflardan bir tanesidir. Diğer bilinen değişmez sınıflardan bazıları, Integer, Double, Boolean, BigDecimal sınıflarıdır. Gelin şimdi hem değişmez sınıfların özelliklerini görmek adına hem de değişmez bir sınıf nasıl yaratılır onu görmek adına bir sınıf yazalım.
public final class ImmutableMutant {            private final String name;      private final int numberOfArms;      private final int numberOfLegs;            public ImmutableMutant(final String name, final int numberOfArms,                              final int numberOfLegs) {          this.name = name;          this.numberOfArms = numberOfArms;          this.numberOfLegs = numberOfLegs;              }            public String getName() {          return name;      }            public int getNumberOfArms() {          return numberOfArms;      }            public int getNumberOfLegs() {          return numberOfLegs;      }  }
Kodu incelediğimizde sınıfın final bir sınıf olduğunu görüyoruz. Sınıfı final olarak tanımlamanın amacı, sınıfın başka sınıflar tarafından extend edilmesini (türetilmesini) engellemek. Yani, final sınıfların alt sınıfları olmaz. Dolayısıyla değişmez sınıflardan herhangi bir şekilde başka sınıflar türetilemez. İkinci olarak, sınıfın tüm elemanları private ve final'dır. Yani, sınıf içinden veya dışından herhangi bir şekilde değiştirilemez. Üçüncü olarak, sınıfın tüm elemanları sadece constructor vasıtasıyla ilklendirilebilir. Ve son olarak, sınıf elemanlarını dışardan değiştirebilecek metodlar (setter metodları) yoktur. Şimdi de değişmez sınıfların özellikleri ve avantajlarından bahsedelim. Değişmez sınıf nesneleri kesinlikle thread korumalıdır (thread-safe). Çünkü, bir kez oluşturulduktan sonra içeriği değiştirilemez bu da threadlerde kullanımda ortaya çıkabilecek senkronizasyon sorunlarını ortadan kaldırır. Değişmez sınıf nesnelerinin içerikleri değişmeyeceği için program akışı içerisinde içerikte istenmeyen değişikliklerin olmasının önüne geçilebilecektir. Değişmez sınıf nesnelerini gönül rahatlığıyla başka referanslara atayabilirsiniz. Örneğin, bir metoda yolladığınızda o metod içerisinde nesnenin değişmeyeceğini garanti etmiş olursunuz. Devamı için : Java Immutable (Değişmez) Sınıflar

18 Mayıs 2012 Cuma

linux process sonlandırma

Ubuntu'da çalışırken ilk defa bir program kilitlendi, Firefox. Çok fazla sekme açtığım ve aynı anda firefox üzerinden bir kaç şey download ettiğim için olduğunu düşünsem de, kilitlendiği zaman ne yapacağımı bilmiyordum. Windows kullanırken herhangi bir program yanıt vermediğinde ctrl+alt+delete (ctrl+shift+esc) yaparak görev yöneticisine ulaşıp oradan programı sonlandırmak ilk olarak yaptığımız iştir. Linux'ta ne yapacağız peki? İlk önce terminali açıyoruz ve ps aux yazarak çalışan processleri buluyoruz.
  ps aux  
Çıkan listeden sonlandırmak istediğimiz processi buluyoruz.
  khantunckale     5609  0.0  3.8 713568 151400 ?       Sl   18:03   0:05 /usr/lib/firefox  
Sonlandıracağımız processin olduğu satırın başında, o processin numarası bulunmaktadır. (Burada 5609) Sonlandırmak için yapmamız gereken işlem ise sudo kill -9 proccessNumarası yazmak. Yani örneğimizde;
  sudo kill -9 5609  
Devamı için : linux process sonlandırma

17 Mayıs 2012 Perşembe

linux foreground(fg) komutu (command)

Linuxta bir komut çalıştırdığınızda belki de yanlış bir şey yaptığınızda, CTRL + Z ile o komutu durdurduğunuzu zannediyorsanız, yanılıyorsunuz. Sadece Pause etmiş oluyorsunuz. (Aslında yapmanız gereken CTRL + C kombinasyonudur.) CTRL + Z ile durdurduğunuzu sandığınız bir komuta devam etmek için ise fg komutunu yazabilirsiniz. Komut kaldığı yerden çalışmaya devam edecektir. denemek için sleep 10 yazın ve sonra 4-5 saniye sonra ctrl + z e basın. Sonra da fg yazıp enter'a basın. göreceksiniz ki 5-6 saniye sonra komutunuz bitmiş olacaktır. Devamı için : linux foreground(fg) komutu (command)

14 Mayıs 2012 Pazartesi

network - genel Telnet komutları

  • ?/help Yardım bilgilerini görüntüler
  • close veya c Mevcut bağlantıyı kapatır
  • display Telnet istemcisine ait ayarları görüntülemeye yarar.
  • open veya o bir Web sitesini bağlanmak için kullanılır
  • quit veya q Telnet'ten çıkış yapmak için
  • set Ayarlar üzerinde değişiklik yapmak için kullanılır.
  • status Telnet İstemcisinin bağlanıp bağlanmadığını görüntüler
  • unset Oturum açmayı ya da parola istemini kapatır.
  • CTRL + ] Bağlı olunan oturumdan Telnet komut satırına geçiş yapar.
Devamı için : network - genel Telnet komutları

network - Telnet nedir?

Telnet, İnternet ve ya özel bir ağ ile ulaşılabilen bir makineye bağlanmak için gerçekleştirilen TCP/IP protokolü ve bu işi yapan programlara verilen genel isimdir. Bağlanılan makinede login olabilmek için orada bir username'e sahip olmanız ve bir telnet erişim programının olması gerekir. Telnet erişimli bazı web servisleri, bağlantı sırasında username istemeyebilirler, ya da girmemiz gereken username bağlantığımızda otomatik olarak karşımıza çıkabilir. Telnet erişim programları genellikle işletim sistemi ile birlikte gelmektedir (Windows 7 işletim sisteminde güvenlik nedeni ile Telnet pasif haldedir. Aktifleştirmek için Program Ekle/Kaldır -> Windows özelliklerini aç ve ya kapat tıklayarak Telnet bileşenlerini aktifleştirebiliriz.). Telnet işlemleri genellikle komut satırından gerçekleşir. Telnet protokolü girdiğimiz username ve password'u, bağlı olduğumuz ağda rahatlıkla görülebilecek şekilde düz metin (plain text) formatında gönderir. Bu yüzden telnet güvensizdir. Çünkü ağa erişebilen herkes girdiğimiz username ve password'u görebilir. Windows ortamında Telnet istemcisini Başlat -> çalıştır -> telnet.exe yazarak çalıştırabiliriz. Daha sonra telnet komutu ardından da bağlanmak istediğimiz makinenin IP adresini yazarız (yazdıktan sonra Enter) ve karşımıza komut satırı gelir. Buraya username ve password yazdıktan sonra karşıdaki makineye bağlanmış oluruz. Komut satırından çalıştırabileceğimiz genel telnet komutlarından burada bahsettim. Telnet karşıdaki makinaya bağlanmak için bir protokol dedik. Http ve Ftp'de karşıdaki makinaya bağlanmak için olan protokollerden bazıları. Özellikle internette uzaktaki bilgisayara bağlanmak ve protokoller izin verdiği ölçüde karşıdaki bilgisayarı kullanmak bu saydığım protokoller için geçerli.

Telnet'in farkı nedir?

Web üzerinde Http protokolünü kullanarak bilgisayarlar arasında gezinebiliyoruz. Genel mantığı, biz browser üzerinden sunucuya bir istekte bulunuruz ve sunucu bize isteğimiz doğrultusunda bir yanıt verir. Aynı şekilde Ftp protokolünde de bilgisayarımızdan sunucuya dosya alış-verişi konusunda istekte bulunuruz, sunucu da bize gerekli dosyayı verir ya da biz oraya dosyayı yükleriz. İki durumda da karşı makineye herhangi bir giriş (login olma) işlemi yok, sadece istekte bulunuyoruz. Telnet kullandığımızda ise uzaktaki makineye giriş yaparız, yani login oluruz. Konsol sayesinde sanki o makinenin başındaymış gibi işlem yapabiliriz. Bu olaya Remote Login denir. Ayrıca, Http ve Ftp protokollerini kullandığımızda uzaktaki bilgisayarın hangi işletim sistemi ile çalıştığı önemli değildir. Telnet kullandığımızda ise sunucunun sahip olduğu işletim sistemi bize sunulur. Dolayısıyla kullanılan işletim sistemi ve yazdığımız telnet komutları sonunca ortaya çıkan sonuç bize aynen yansır. Günümüzde Telnet kullanımı uzaktaki sunucuya erişmek adına pek yaygın değildir. Fakat yine de sunucuya komut yollamak, gelen cevapları kontrol etmek ve SMTP, IRC, HTTP, FTP veya POP3 gibi servislerdeki sorunların tespitinde kullanılmaktadır. Devamı için : network - Telnet nedir?

12 Mayıs 2012 Cumartesi

Bozulmaktaki Türkçe'miz..

Gün geçtikçe dilimiz ne yazık ki içler acısı bir hal alıyor. Sokağa çıktığımızda, etrafta tabelalar, konuşulan şeylerin, şehrin neredeyse yarısı yabancı dilde. Çay bahçesi veya Kahve yok artık hiçbir yerde. Café var. Pub var, bar var.. 40 yıllık pastanelerimiz bile "patisserie" olmuş durumda. Kuaförlerimiz Coiffeur oldu. Araçlarımız doğan, şahindi eskiden şimdi hepsi ultra mega thunder oldu. Televizyondaki reklamlar ingilizce olunca daha bir ilgi çekici ve karizmatik oluyor. Halkla ilişkiler ve pazarlama uzmanlarının umrunda değil ki Türkçemiz bozulmuş! Önemli olan müşteri toplamak.. Daha da önemlisi karizma yapmak. Bir yazılımcı olarak bilgisayar kavramları arasında boğuşup dururken elbet ki Türkçe-İngilizce birbirine çok karışıyor ve tarzanca diye nitelendirdiğim bir garip dil ortaya çıkıyor. Fakat günlük dilde konuşurken biraz da olsa dikkat etmeye çalışıyorum. Elimdeki A ürününü B ürünüyle "change" yapmıyorum örneğin. Ama dediğim gibi ; Bir projede milestone yerine "mihenk taşı" diyorum, ne yazık ki derdimi anlatamıyorum. Mecburen ben de milestone diyorum dilimi yuvarlaya yuvarlaya.. Günlük konuşmamız içinde de Türkçe sözlüğümüzde olmayan o kadar çok kelime var ki... Hangisini söyleyeyim? Türkçemize sahip çıkmalıyız, durum git gide kötüleşiyor yoksa... Devamı için : Bozulmaktaki Türkçe'miz..

11 Mayıs 2012 Cuma

Apache Performans Ayarları (Performance tuning) Önerileri

Apache'de Performans ayarını yapmaya yeltenmişseniz, öyleyse bazı terimleri biliyor, bazı sorunlarla karşılaşmış, bazı sıkıntılar yaşıyor olduğunuz manasını çıkarıyorum çok rahatlıkla. Öyle değilse de, bilgi iyidir, okuyunuz. :)   Apache, güzel(!) bir web serveri. Bir sürü de ayarı mevcut. Burada bahsetmek istediğim konu, genel olarak hangi 3 ü 5 yapacağınız, hangi 200 yerine 50 yazacağınız ile ilgili değil. Yani hesapsal ayarlardan bahsetmeyeceğim. O apayrı ve ihtiyaca yönelik bir konu çünkü. Peki bunlardan bahsetmeyeceksemne manası kaldı bu yazının? Şöyle ki, Apache de performans ayarı yapmak istiyorasnız, hali hazırda yoğun çalışan bir veya birkaç apache web serveriniz olduğu yorumunu çıkarıyorum. Burada Sayısal değerler sistemden sisteme değişiklik göstermekte. Benim bir uygulamam session ve mysql bağlantısı bile kullanmadan, yoğun çalışıyorsa bu ayrı bir durum ve ayrı bir optimizasyon gerekiyor, veya veya veritabanı ve statik içerik durumu yoğun ise bu ayrı bir optimizasyon gerektiriyor. Ben burada sadece bakış açısını izah etmeye çalıaşcağım. Bu noktada bazı denemelerimiz oldu bunları paylaşmak isterim. Apache istekleri karsılarken statik veya php isteklerinde, gelen isteklerin sayısıyla birlikte parabolik olarak artan bir grafik çiziyor. gelen istek arttıkça, makina load'u artarak artıyor ve bir süre sonra sistemi kitleyebiliyor. (%95 kitliyor emin olun.)

Statik dosyalar (Resimler, css, js, vb..)

Apache php isteklerini normal bir şekilde verirken, statik içerik devreye girdiğinde içeride açtığı portları iyi yönetemiyor. Bir web sitesinin bir sayfasında genelde 1 php isteği, 40-50 tane de statik içerik isteği oluyor. Bu noktada apache den dolayı saçlarımız dökülmeye başlıyor. Statik içerik ile ilgili noktada cache için EXPIRES headeri göndermek ilk yapılacak şey olabilir. Browser bir içeriği cachelese bile o dosya değişmiş mi diye server a soruyor. Bu noktada bu sorgu da request olarak bir maliyet oluşturuyor. Expıre cache i ile server browser a bu dosyaya verdiğiniz süre kadar değişmeyeceğinin garantisini veriyor, ve dosyalarınız değişmeyeceğinin teyidi alındığından browser o dosya cacheinde varsa, server a hiç sormuyor. Bir değişiklik durumu için ise, statik dosyalarınızın sonuna ?time=2938748292 şeklinde bir timestamp koyarak çekmesini sağlyabilirsiniz. Örneğin bir dosyanız var ve normalde adı header.jpg . Siz bubunu EXPIRES ile cachelemesini söylerseniz, değiştirseniz bile browser eski dosyayı yeni gibi gösterecektir. Bu noktada siz isteği header.jpg?t=23984729493 şeklinde gönderirseniz, ve dosyanızı değiştirdiğinizde , bu timestampı da değiştirirseniz, veya dosya ismine bu timestampı kaydederseniz, browser cachelediği eski dosyayı bulamayacağından, yeni dosyayı çekmiş olacaktır. Anlatmak istediğim, siz bir dosya değiştirmedikçei sayfanıza bir kere gelen kişi, 2. sorgudan itibaren gereksiz request göndermemeye başlayacak. 1 sayfa ilk açılışta 45 statik + 1 php = 46 request dersek,2. requestten itibaren 1 requeste inecektir. Bu da CİDDİ avantaj olacaktır.

Apachedeki gereksiz modüller

Apachenizde kullanmadığınız yani gereksiz modüller açık olabilir. Bunları kapatın. Neyi kullanıp neyi kullanmadığınızı araştırmanız biraz zzaman alabilir, ama bunların da küçük de osla bir miktar etkisini görürsünüz.

Apache .htaccess desteğini kapatın

.htaccess dosyaları çeşitli server ayarlarını yapabildiğiniz dosyadır. Buna ihtiyacınız yoksa, htaccess desteğini direkt kapatın. İhtiyacınız varsa da httpd.conf seviyesinden genel olarak yapmaya özen gösterin. Yani imkan varsa hiç kullanmayın. Ama zend framework gibi frameworkler mod_rewrite vb modüllerine ihtiyaç duyuyor diyorsanız da httpd.conf seviyesinden de ihtiyazınıcı görebiirsiniz. (Tabi ki yönetimi daha zor oluyor haliyle) Apache htaccess desteği varsa, her requestte isteğin gittiği php dosyasına kadarki klasör ailesinde (örneğin /usr/local/php/deneme/example/html/index.php php sayfasına gelen requestte, sırasıyla usr, sonra local sonra php sonra deneme sonra example sonra html klasörlerinin içinde) .htaccess dosyası var mı? varsa load et kuralları çalıştır işlemini yapıyor. bu da tekil bir isteğin gecikmesine sebep olabiliyor. Bunu da kapatmanız sizi pembe bir gökyüzüne kavuşturmayacak ama bir miktar avantaj sağlayacaktır. Bahsetmek istediğim daha çok şey var fakat, amaç burada bakış açısı olarak, kendinizi bilgisayar yerine koyarak düşünmektir. Böyle yaparsanız, belirli seviyeye kadar performansı artırabiirsiniz. Belirli seviye dememin sebebi ise, ileride bazı performans ihtiyaçlarınıza apachenin yeterli olmayacağını farkedeceksiniz. Bu zaman ise, apache'nin yerine ne koymamız gerektiğini konuşuruz. :) Devamı için : Apache Performans Ayarları (Performance tuning) Önerileri

midnight commander - mc - konsol tabanli klasor-dosya yoneticisi

Midnight commander linux sistemlerde çalışabilen konsol tabanlı bir programdır. dosya ağacını daha görsel bir ortamda gezebilmenize olanak sağlar. Sağ ve Sol 2 ekranda ayrı klasörleri gezip, dosya kopyalama klasör kopyalama vb gibi işlemleri yapmanıza olanak sağlar.

MC nasıl yüklenir?

redhat tabanlı sistemler için YUM paketi ile
yum install mc
diyerek, debian ubuntu tabanlılar için APT paketi ile
apt-get install mc
diyerek sisteminize yükleyebilirsiniz. Centos ta yüklediğinizde her tarafın garip karakterler ile dolduruğunu görürseniz , muhtemelen putty üzerinden iletişim kuruyorsunuzdur. (şu linkte olduğu gibi)Böyle ise encoding ile ilgili bir problem var demektir. Bunu da putty ayarlarınızdan Traslation kısmında encoding'inizi UTF-8 yaparak düzeltebilirsiniz. Ayrıca programın search, copy paste,vb gibi konsol tabanlı olmasına rağmen bir çok özelliğinin bulunduğunu da belirteyim. Bunları da kurcalayıp bulabilirsiniz. (programı açtığınızda f1,f2 gibi function tuşlarıyla ulaşabilirsiniz) Bir de aynı şekilde mcedit programı var. Bunu da ayrı bir yazıda yazmak isterim. Bu programı uzak bağlantı ve server ortamında bir şeyler ile uğraşan herkese tavsiye ederim. Devamı için : midnight commander - mc - konsol tabanli klasor-dosya yoneticisi

network - Port Forwarding nedir?

İnternete her bağlandığımızda bir adet IP adresine sahip olduğumuz biliyoruz. Bu IP adresi internete bağlandığımız bilgisayarın internet üzerindeki adresine denk gelmektedir. Ama aslında internete giren bilgisayarımız değil, modemdir. İnterneti bilgisayarla paylaşan modem olduğu için, bilgisayarla modem arasında da bir network olması gerekir. Ortada bir network varsa her iki tarafın da IP adresi var demektir. Bilgisayarın, modemle kurduğu LAN için bir adet IP adresi, modemin ise hem bilgisayarla kurduğu LAN için bir IP adresi, hem de internetteki IP adresi vardır. Bilgisayar ile internet arasındaki iletişimin modem üzerinden olduğunu, yani bilgisayar ile modem arasındaki local IP'ler üzerinden olduğunu artık biliyoruz. Port forwarding işlemi (port yönlendirme) biz internete girerken genellikle lazım olmayabilir. Çünkü biz erişmek istediğimiz yere kendi IP adresimizi veriyoruz. Eğer bilgisayarımıza dışardan erişmek istiyorsak, karşı tarafa hangi IP adresine sahip olduğumuzu ve hangi portu kullandığımızı bildirmemiz gerekir. Verdiğimiz IP adresi ile ancak modeme erişilebilir, çünkü demin de söylediğim gibi internete erişen aslında modemdir. Uzaktaki bilgisayarın erişmek istediği bizim bilgisayarımız ise, modemin yapması gereken, dışarıdan gelen isteği bizim bilgisayarımıza yönlendirmektir. Örnek vermek gerekirse, modem, kendisine uzaktaki bilgisayardan, internet üzerindeki IP adresi ve A portuyla gelen bir isteği, bilgisayarımızın ilgili portuna yönlendirir. Modem yönlendirir diyorum fakat bu işlemi de biz gerçekleştiririz. Gerçekleşen bu işleme port forwarding denir. Devamı için : network - Port Forwarding nedir?

8 Mayıs 2012 Salı

network - Bridge nedir?

Aynı protokolü kullanan alt ağları birbirine bağlamaya yararlar. Nasıl çalışırlar? Şöyle; birbirine LAN ile bağlı 4 bilgisayar düşünelim, bunlardan bağımsız ama yine birbiriyle LAN ile bağlı 4 bilgisayar daha düşünelim. Bu iki LAN'ı birbirleriyle (bridge kullanarak) bağladığımız zaman mantıken ortaya bir LAN çıkar. Bridge burda ne işe yarar, ne yapar kısmına gelelim. Bu bahsi geçen 2 LAN'ın kendi içlerinde oluşturduğu bir veri akış trafiği vardır. Bir LAN'dan diğerine veri aktarmak istediğimizde doğal olarak trafik artışı olacaktır. Bu iki bağımsız ağ arasına konulan köprü, iki tarafa da aktarılmak istenen verileri inceler. Eğer verinin gitmesi gereken adres diğer ağda değilse, onu diğer ağ tarafına geçirmez ve böylece diğer tarafın trafiği boş yere artmaz. Yani bridge verilerin gideceği adresleri tutar diyebiliriz. Bunlara ek olarak bridge süzme işlemi yaptığı için, yani bir LAN'dan diğerine verileri kontrol ederek geçirdiği için, LAN'lardan herhangi birinde oluşan hatalar ya da arızalar diğer LAN'ı etkilemez. Devamı için : network - Bridge nedir?

7 Mayıs 2012 Pazartesi

Linuxta bir klasordeki dosya sayisini bulmak

Çok basit bir komut ile linuxta bir klasör içindeki toplam dosya sayısını bulabilirsiniz.
  $ ls -1 targetdir | wc -l  454  
Devamı için : Linuxta bir klasordeki dosya sayisini bulmak

network - DHCP nedir?

DHCP (Dynamic Host Configuration Protocol) TCP/IP ağında bulunan makinelere otomatik olarak IP adresi ve DNS sunucusu ayarlarının (ve network üzerinde bulunan diğer yapılandırma ayarlarının) yapılması için kullanılır. IP çakışmasının önüne geçilir ve ağdaki makinelerin yönetimi merkezileşmiş olur. DHCP sunucusunun nasıl çalıştığına bakacak olursak, İlk olarak istemci (mesela bilgisayar) DHCPDISCOVER mesajını DHCP sunucusuna gönderir, mesaj içinde kendi MAC adresi de vardır. Daha sonra DHCP sunucusu DHCPOFFER mesajı ile istemciye bir IP adresi önerir.
Aslında bu mesajı direk istemciye göndermez, Broadcast olarak yayımlar, fakat mesaj içerisinde istemcinin MAC adresi olduğu için karışıklık önlenmiş olur.
İstemci bu mesajı aldıktan sonra önerilen IP adresini istediğini belirten DHCPREQUEST mesajını yayınlar, (Broadcast), mesajın içinde bu sefer DHCP'nin MAC adresi vardır. Son olarak DHCP sunucusu DHCPACK mesajını yayınlar ve istemci IP adresini almış olur. Devamı için : network - DHCP nedir?

Neden Ubuntu?

Uzun süre windows kullandıktan sonra ubuntuya acil geçiş yapan birisi olarak hem 'neden ubuntu?' olduğunu hem de ubuntu geçmişim çok eski bir tarihe dayanıyor olmasa da geçiş sürecinden kendim üzerinden bir kaç örnek verebilirim. Çoğumuz windows kullandığımız için virüs programlarının bilgisayarı ne kadar kastığını biliriz. Linux tabanlı işletim sistemlerinde böyle bi sorun yok. Çünkü sistem dosyaları üzerinde işlem yapmaya çalıştığımızda bize yönetici şifresi sormakta. Windowsta herhangi bi program kurduğumuzda, o program bütün dosyalara erişebilir, değiştirebilir ve silebilir. Bilgisayarı restart yaptığımızda ise hiç hoş olmayan şeylerle karşılaşabiliriz. Ubuntuda ise virüsler kafalarına göre dosyalara erişemezler, çünkü yetkileri yoktur. Açılış kapanış sürelerine de özellikle değinmek istiyorum. Windows XP, Windows Vista kullanmış ve Windows 7 kullanmaya devam eden biri olarak, şimdiye kadar 30 saniyede açılan bir windowsum olmadı. Ki bence öyle bir windows yok. Üşenmedim ve saniye tuttum, tek sefer de değil bir kaç kere denedim bunu, Ubuntu en kötü ihtimalle 35 saniye içinde kullanıma hazır hale geldi. Windowsun hazır hale gelmesi ise en az 1:30 ya da 2 dakikayı buluyor. Windowsunuz eğer onarılamaz hale gelirse, format atmaktan başka çareniz kalmaz. Hepimiz illa ki formatlamışızdır kullandığımız windowsu çünkü bir süre sonra virüs, trojan, spy vs. bir sürü şey bulaştığında windows yavaşlar. Ubuntuda ise böyle bir sorun yok yukarıda bahsettiğim sebeplerden ötürü. Yani Ubuntu kurduğunuzda format gibi bir derdiniz olmaz. Hiç windows ile Hata Raporu gönderdiniz mi? Microsoftun sınırlı sayıda çalışanı olduğu için dünyada milyonlarca insanın taleplerine geri dönüşleri doğal olarak çok geç olabiliyor. Ama Ubuntuda bir problem olduğunda, açık kaynaklı olduğu için tüm geliştiriciler aynı anda müdahale edebilirler. Tek bir satır kodun bile on binlerce belki de yüz binlerce kişi tarafından incelendiğini, onarıldığını düşündüğümüzde Ubuntunun ne kadar güvenli olduğunu da anlamış oluruz. Bir de Driverlar var. Sürücüler. Yeni bir windows kurduğunuz zaman(önceki sürümler için), ekran kartı, anakart, ses kartı vs. bir sürü sürücüyü kurmamız gerekmekte. Kurulumu gerçekleştirdikten sonra da tabi ki Windowsu restart etmemiz gerekmekte. Microsoft artık buna yavaş yavaş çözüm bulmaya başlamış olsa da, araştırdıktan sonra öğrendim ki Ubuntuda bu yıllardır böyleymiş. Hala daha Windows için driver gereken şeyler olabiliyor, (VINN denilen tak-çalıştır cihazlar gibi). Ayrıca bilgisayarınıza bir şey yüklemek istediğiniz zaman internette aramanıza gerek yok. Ubuntu Software Center ile istediğiniz şeye rahatça ulaşıp anında bilgisayarınıza kurabiliyorsunuz. Windowstaki gibi internette saatlerce arayıp crackleme derdi yok. Windowstaki Windows Update, sadece işletim sisteminin güncellemeleriyle ilgilenir. Kullandığınız herhangi bi programın updatei geldiği zaman da(microsofta ait olmayan), özel olarak o programı update etmeniz gerekmektedir. Ubuntuda ise Update Manager, gerekli tüm güncellemeleri tek tık ile yapmakta. Hatta, Ubuntunun son sürümüne de tek bir tık ile geçtim dakikalar önce. Ram kullanımı da bir çok kullanıcı için önemlidir. Kullandığım Windows 7 (64 bit), bilgisayar açıldığında sistem hazır halde beklerken yaklaşık 1.1 GB ram kullanmakta. Ubuntu ise yine yaklaşık olarak 300-400 MB arasında ram kullanmakta. Yine genel olarak bilgisayarlarımız windowsun herhangi bir sürümü kurulu olarak gelir. Biz aslında farkında olmadan işletim sistemine para vermiş oluruz. Ubuntu ve linux kaynaklı işletim sistemleri ücretsizdir. Hatta daha yeni çıkan Ubuntu 12.04 LTS burada. Windowstan vazgeçemem diyenler için Wubi.exe şiddetle tavsiye edilir :)

Hiç mi dezavantajı yok Ubuntu'nun?

Var elbette. Ama size bağlı. Eğer oyunlarınızdan vazgeçemiyorsanız, ya da sadece windows üzerinde çalışan uygulamaları kullanmaya mecbursanız (adobe photoshop, autocad benzeri), windows ile kalabilirsiniz, ama bu sizin bilgisayarınıza ayrıca Ubuntu kurmanıza engel değil. Ayrıca yıllar ilerledikçe sadece windows üzerinde çalışan her uygulamanın Ubuntu için alternatifleri çıkmakta. Bir kaç örnek için buraya bakabilirsiniz. Yaklaşık 5 aydır bilgisayarımda iki işletim sistemi var, Windows 7 ve Ubuntu. Mecbur kalmadıkça windowsa geçmiyorum, aslında pek mecbur da kalmıyorum. Tabi ki kullanımla alakalı büyük ölçüde. %70 Ubuntu, %30 Windows diyebilirim kullanım oranlarım için şu anda. Windows daha çok son kullanıcıya yönelik olduğu için insanları cezbediyor. Live Messenger ve Gtalk yerine Empathy kullandığım zamanlar, ilk başta tuhaf gelmeye başlamıştı ama artık diğerleri garip gelmeye başladı. Gwibber gibi bir uygulama da mevcut. Şöyle ki, facebook ve twitter benzeri sosyal ağlarınızı bağlayıp tek bir akış yaratabiliyorsunuz. Bildirimleri de isteğinize bağlı olarak masaüstünüzde görebiliyorsunuz. Korkmayın Ubuntu'dan :) Devamı için : Neden Ubuntu?

5 Mayıs 2012 Cumartesi

ttnet e gonderdigim mail - ttnet sikayet

Merhabalar; Ben emre macit.internetten başvuru yapmıştım. aradınız ettiniz, herşey çokgüzel formu da dorldurduk gönderdik ettik herşey ok. 28 mart 2012 de. başvurmuştum. fakat hizmetim açılmadı. (bugün 5 mayıs 2012) tc kimlik no xxxxxxxxxxx sabır testi misiniz insanın sinirlerini zorluyorsunuz... xxx xxx xx xx numaralı hattımdan bugün 28 dakika daha konuştuk temsilci arkadaşlarınızla. almak nasip olmayan hizmetimi bari iptal edin. bir de utanmadan benden para istiyorsunuz iptal için. modem var elimde gönderdiğiniz, kutusunda çıkarmadım. onu da size kargoyla göndereyim iptal edin. Az önce iptal biriminizdeki bir takım lideri vasıtasıyla bir de şikayet ilettim. bu konuyla iligli de dönüş yapmanızı rica ediyorum. 1 ayda 1 internet hizmeti açılmıyorsa, siz ortada fiber miber diye bağırıp reklam yapmayın boşuna. 1 kişi gelip kablomu takmıyorsa, istediğiniz kadar uğraşın. Bu mailimi de sosyal medyada yayınlamayı düşünüyorum. saygılarımla. ------ Emre Macit Devamı için : ttnet e gonderdigim mail - ttnet sikayet

3 Mayıs 2012 Perşembe

Symfony2 - Ek Kutuphaneleri Yonetmek

Symfony2 için kullanılan ek kütüphaneleriyle tek bir bilgisayarda çalışırsanız sorun yaşamayabilirsiniz. Fakat canlı bir ortama ve ya başka bir yazılımcının bilgisayarına kurmak istediğinizde, hangi kütüphanenin hangi versiyonunu kurduğunuzu unutabilirsiniz ya da zamanla herkes farklı bir versiyona sahip olabilir. Ayrıca ek kütüphane klasörünüz fazlasıyla şişeceği için kullandığınız git deposunda gereksiz yer kaplar. Hataları önlemek ve işleri kolaylaştırmak için Symfony2 ile birlikte ek kütüphanelerinizin versiyonlarının yönetildiği bir dosya ve bunun için tek basit bir komutla çalıştırabileğiniz bir program geliştirilmiş. Bu program git versiyon kontrol sistemini kullanıyor, dolayısıyla git sisteminin bilgisayarınızda yüklü olması gerekiyor. Eğer git yüklü değilse Windows'ta yüklemek için şuradaki talimatları izleyebilirsiniz.

deps Dosyası ve bin/vendors komutu

Öncelikle Symfony2 framework şu adresten ek kütüphaneler olmadan (without vendors) indiriyoruz, arşiv dosyasını açıyoruz. Arşivin açıldığı  klasörde deps ve deps.lock isminde 2 adet dosya göreceksiniz. Deps dosyasındaki her bir blok ek kütüphaneleri göstermekte ve ek kütüphaneler kurmak için kullanacağımız program bu dosyayı okuyor. Deps.lock dosyası ise yüklediğiniz kütüphanenin git tarafından oluşturulan ve o commit'e ait commit-hash bilgisini (burada bahsetmiştim) tutuyor. Peki yeni bir kütüphane yüklemek için ne yapacağız? Oldukça basit, deps dosyasına yeni bir kayıt gireceğiz. Deps dosyasına göz atarsanız kayıtlar genel olarak şöyledir:
[FOSUserBundle]   git=git://github.com/FriendsOfSymfony/FOSUserBundle.git   target=bundles/FOS/UserBundle   version=1.2.0
Bu blokta [] içindeki bilgi ek kütüphanemizin ismini gösterir. Eğer target parametresiyle herhangi bir klasör belirmediyseniz varsayılan olarak burada verilen isimde bir klasör yaratılır ve dosyalar bu klasöre indirilir. git=<git_repo_url> kısmına yazılan adres kısım ek kütüphanenini alınacağı adresi gösterir. Bu adrese git ve http/https ile başlayan kütüphane adreslerini girebilirsiniz. Gerekli olan parametreler aslında bu kadar, fakat diğer parametrelere de göz atalım. target=<vendor_target> kısmında kütüphane dosyalarının indirileceği klasörü giriyoruz. Buraya girilen klasör <proje_klasörü>/vendor altında yaratılıyor. Son olarak version= <versiyon> kısmında ise bir kütüphane için belli bir versiyon ve ya branch belirtebiliyoruz. Deps dosyasında kayıtlı olan ek kütüphaneleri indirmek için proje klasörüne geçtikten yapmamız gereken sadece aşağıdaki komutu çalıştırmak:
php bin/vendors install
Bu komuttan sonra eğer vendor klasörünüzde hiçbir klasör görmezseniz ve ya klasörleriniz hepsi boşsa, git sistemini işletim sisteminize düzgün kuramamış olabilirsiniz. Eğer bazı kütüphaneler yüklenemiyorsa tekrar denediğinizde bunlar da yüklenecektir. İlk kez çalıştırdığınızda bu işlem zaman alabilir, sabırlı olun :)

Sistem Nasıl İşliyor?

Peki sistem nasıl işliyor, yukarıdaki komutu çalıştırdığımda neler oluyor diyenler için aşağıdaki şemayı hazırladım. Ek kütüphanelerimiz hayırlı olsun :) vendors script flowchart   Devamı için : Symfony2 - Ek Kutuphaneleri Yonetmek

network - MAC adresi nedir?

MAC (Media Access Control) adresi, herhangi bir bilgisayar ağında, Ethernet, Wifi, Bluetooth gibi protokollerde kullanılmak üzere, cihazın ağ donanımını tanımaya yarar. MAC adresi dediğimiz şey her cihazda farklıdır. 48 bit olan bu adres 2 x 24 bitlik adresten oluşur. İlk 24 bitlik adres üretici firmayı temsil eder. (IEEE tarafından üretici firmalara verilen adres.) Yani her üretici firmanın kendine özgü 24 bitlik bir adresi vardır. İkinci 24 bitlik adres ise, üretici firmanın ürüne verdiği adrestir. Bu adres üretici firma tarafından ürünün üzerindeki ROM (Read-only Memory) üzerine kaydedilir ve değiştirilemez.

MAC adresini nasıl öğreniriz?

Windows tabanlı bilgisayarlarda Başlat -> Çalıştır -> cmd açtıktan sonra ipconfig -all yazdığımızda karşımıza çıkan ekrandaki Physical Address alanları (12 hanelidir) her ağ bağdaştırıcısı için yer almaktadır. Linux bilgisayarlarda ise terminali açtıktan sonra ifconfig -a yazdıktan sonra MAC adreslerini görüntüleyebiliriz. Devamı için : network - MAC adresi nedir?

network - NAT (network address translation) nedir?

NAT (Network Address Translation) için açıklama yapmadan önce bilmemiz gereken şey, bazı IP adreslerinin sadece kendi yerel ağımızda (LAN) kullanmamız için tanımlanmış olmasıdır. Bu IP adreslerinin aralıkları şöyledir; 10.0.0.0 - 10.255.255.255 arası 172.16.0.0 - 172.31.255.255 arası 192.168.0.0 - 192.168.255.255 arası Yani biz bu IP adreslerini internet üzerinde kullanamayız. İşte tam burada NAT teknolojisi devreye girmekte. Nasıl olduğuna bakalım. Bilgisayarınızın IP adresinin yukarıda bahsi geçen aralıklardan birinde olduğunu düşünelim, internete bağlanırken NAT sayesinde bu IP adresi public bir IP adresine çevirilir. Ya da ofisinizde 10 bilgisayar olduğunu düşünelim, her bir bilgisayarın IP adresi olacağı için, bu bilgisayarlar internete bağlanırken her birinin ayrı ayrı IP adresi olacaktır. Bu da sıkıntı yaratacaktır, çünkü hali hazırda sınırlı sayıda IPv4 vardır. Bu bilgisayarların internete ulaşırken tek bir IP ile erişmeleri için NAT devreye girer. Yani aynı yerel ağdaki birden fazla bilgisayar internete erişmeye çalıştıklarında servis sağlayıcı bu bilgisayarlara tek bir IP adresi verir. Güvenlik açısından da NAT önemlidir, misal bahsettiğimiz örnekte dışarıdan herhangi biri siz izin vermediğiniz sürece sizin yerel ağınıza erişemez. Devamı için : network - NAT (network address translation) nedir?