27 Şubat 2013 Çarşamba

Ubuntu Yüklenmiş Paketleri Listelemek

Merhaba, Ubuntu makinanıza kurmuş olduğunuz tüm paketleri listelemek isterseniz aşağıdaki komutu terminal (komut satırı) aracılığıyla çalıştırınız. Burada sadece sizin yüklediğiniz değil işletim sisteminizle beraber yüklü olarak gelen paketleri de göreceksiniz :
dpkg --get-selections
Selamlar. Devamı için : Ubuntu Yüklenmiş Paketleri Listelemek

20 Şubat 2013 Çarşamba

Webrazzi E-Ticaret'2013

Merhaba, Her yıl Webrazzi tarafından düzenlenen E-Ticaret konferansı bu yıl İstanbul Point Hotel Barbaros'da gerçekleşti. Sabah 9:30 da başlayan etkinlik saat 17:00 de sonlandı. Bende katılımcılar arasındaydım. Bu sektörün bir parçası olarak her ne kadar önemli işler yapıyor olsak da çoğu zaman biz yazılımcılar yaptığımız işin ne kadar önemli olduğundan bihaber durumda oluyoruz. Bize çok normal gelen çalışmaların aslında önemli kilometre taşları olduğunu bu gibi etkinliklerde bu ortamın havasını koklayarak anlamak mümkün. Etkinliklere pek çok önemli firma katıldı. Bunlardan bazıları : - IdeaSoft - Hepsiburada.com - Yemeksepeti.com - BKM - Gittigidiyor.com - Turkcell - Limango Önemli firma yöneticilerinin ortak görüşleri e-ticaretin önümüzdeki yıllarda hızla büyüyecek olması. Bu bağlamda her ne kadar detaylı bilgi verilmesede bu pastadan pay kapmak için tüm firmaların yeni projeleri ve pazarlama stratejileri olduğunu söylemek isterim. Tüm firmalar yine kendi sektörleriyle alakalı geçmiş yılların istatistikleri ve tahmini gelecekle ilgili beklentilerini anlattılar. BDiCC1KCAAAo-Qc Etkinlik için firmalara ayrılan sürenin kısıtlı olması yüzeysel bilgi verilmesine yol açtı diyebilirim. Genellemeler üzerinden hızlı bir sunum yapıldı. Ben sunumların sonunda internette bu firmalar hakkında arama yaparak ulaşabileceklerimden daha fazlasını alamadım. Sunum gerçekleştirecek olan firma isimleri ve onları temsilen sahnede olacak isimler her ne kadar heyecan uyandırsada pek doyurucu olmadığını düşünüyorum. Yine sahne alan firma yöneticilerinin kendinden önceki yada sonraki firmalara kılçık attığını ve üstünlük kurma çabalarının olduğunu kendi gözlemlerime dayanarak söyleyebilirim. Biraz gövde gösterisi gibi oldu diyebiliriz. BKM Genel Müdürü Soner Canko'nun diğer sunum yapan firma rakamlarını yalanlaması, Yemeksepeti.com'un Genel Müdürü Nevzat Aydın'ın kendinden emin ve "bizden büyüğü yok çok firma rakip olmaya çalıştı ama çoğunuz ismini bile bilmezsiniz" şeklinde rahat tavırlarıyla çoğu kez Yemeksepeti'ni övmesi, Evim.net Genel Müdürü Ali Özen'in esprili ve samimi cevapları konferansa damgasını vurdu. Genel gözlemlerim firmaların bu kadar büyük şirketler haline gelmesinin 2 ana sebebi var. Birincisi 2000'li yıllarda henüz Türkiye'de internet sektörü çok yeni gelişmeye başlarken Avrupada ki başarılı projelerin ülkemize getirilmesi (Yemeksepeti.com, Mynet.com) sonucu rakipsizleşmek ve ikincisi dev firmaların internet sektöründe ki pazardan pay almak için dev yatırımları. O yüzden kendi çabalarınızla internette bir yerlere gelmek istiyorsanız özgün şeyler üretmeniz gerekiyor diye düşünüyorum. Ne şuan 2000 yılındayız nede arkanızda dev bir yatırım var. O zaman özgün birşeyler üreterek bir yerlere gelmek hala mümkün gibi gözüküyor. Bu yazı tümüyle benim naçizane görüşlerimi barındırıyor. Sürç-i lisan ettiysek affola. Selamlar. Devamı için : Webrazzi E-Ticaret'2013

ubuntu network device not managed hatasi

Virtual Box içinde çalışan ubuntu desktop 12.04 te durduk yere device not managed hatası aldım. bu hatayı düzeltmeden önce static verdiğim ip nin başka bir bilgisayar tarafından aldığını gördüm ancak bir hata var belli. çünkü çakışma vb diye beni uyarmadı.  Anladığım kadarıyla hatayı bu Aynı IP alma durumu tetikledi.   daha sonra buradaki yöntemleri uyguladım ve sorunum çözüldü. Türkçesi :  Terminalden yapıyoruz :
sudo nano /etc/NetworkManager/NetworkManager.conf  
managed=false yazan satırı managed=true diye editliyoruz. Network yöneticisini yeniden başlatıyoruz.
sudo service network-manager restart  
herhangi ihtimale karşı birazdan düzenleyeceğimiz dosyanın yedeğini alalım.
sudo cp /etc/network/interfaces /etc/network_interfaces_backup  
Dosyayı açalım
sudo nano /etc/network/interfaces  
buradaki ayarlarınız static ip için yapılanmış olabilir. Ancak ne var ne yok silip aşağıdaki otomatik kodu koymanız ilk etapta işinizi çözecektir. (ben silmedim, sadece IP'mi değiştirdim.)
auto lo  iface lo inet loopback  
Dosyayı kaydettikten sonra network yöneticisini yeniden başlatalım.
sudo service network-manager restart
  Ve işte düzelmiş olmalı! Devamı için : ubuntu network device not managed hatasi

17 Şubat 2013 Pazar

Zend Studio 10 cikti

Zend Ekibinin bir süredir üzerinde çalışıyor olduğu Zend Studio 10 yayınlandı. Bu linkten download edebileceğiniz Zend Studio 10'un release notlarına buradan bakabilirsiniz.   Mobil ve cloud özellikleri ve kabiliyetleri geliştirilen Zend Studio 10 için  ilk etapta ayrıca Zend Framework 2 ile daha uyumlu olduğunu söyleyebiliriz. Dahasını ilerleyen günlerde paylaşabilmek üzere.. Devamı için : Zend Studio 10 cikti

15 Şubat 2013 Cuma

PHP Namesapace Autoload

Merhaba, PHP 5.3.x ile beraber gelen namespace konusuna bu yazımda değinmiştim. Şimdi namespace autoload konusuna değinerek sizlere bilgilerimi paylaşmak istiyorum. Koskoca bir proje tek bir include ile olur mu demeyin oluyor. Kullanmak istediğimiz namespace'yi use diyerek çağırmak ve ilgili sınıfın otomatik olarak include edilmesi için autoload mekanizması var. Şimdi bu yapıyı kurmak için proje dizinimize composer.json dosyası oluşturarak içine şu jsonu ekleyelim :
  {       "autoload":{        "psr-0":{           "" : "library" // sınıflarımın bulunduğu path (index.php ile aynı seviyede)        }     }  }
Not : composer işletim sisteminizde yüklü olmalıdır (ubuntu için curl -s https://getcomposer.org/installer | php) Şimdi komut satırından proje dizinine gelerek şu komutu çalıştıralım ve ilgili dosyalarımızı oluşturalım :
composer install
Bu komutu çalıştırdıktan sonra vendor isminde bir klasör ve içerisine iligli dosyalar gelmiş olacak.Aynı zamanda composer ile uğraşmak istemiyorsanız internetten çeşitli kaynaklardan bu vendor içindeki dosyaları edinebilir veya kendiniz yazabilirsiniz. Nihayetinde PHP dosyaları ve composer sadece bu işi kolaylaştıran bir yapı. Şimdi kullanımına gelecek olursak index.php dosyamıza vendor klasörü içindeki autoloader.php dosyamızı include etmek dışında hiçbirşey kalmıyor :) Devamı için : PHP Namesapace Autoload

14 Şubat 2013 Perşembe

PHP Namespace

Merhaba, Nedir bu namespace diyerek Google'nin başına geçmiş, araştırmalar yapmış ve tam olarak kafanıza oturmadan çalışmaları sonlandırmış olabilirsiniz. Biraz gerçekçi senaryolar üzerinden giderek sonuca ulaşmaya çalışalım. - library - Form - Data.php (class Data) - Database - Data.php (class Data) Şeklinde iki adet Data.php dosyalarına tanımlanmış Data isimli sınıflarımız var. Buraya kadar sorun yok. Şimdi bunları aynı sayfa üzerinde çalıştırmaya çalışalım.
<?php    require_once('library/Form/Data.php');    require_once('library/Database/Data.php');    $object1 = new Data();    $object2 = new Data();    ?>
İşte burada işler karıştı ve fatalı yediniz. PHP size kızdı. Muhtemelen kullandığınız IDE bile size kızdı. Yazıklar olsun dedi. PHP 5.3.x ile beraber gelen namepsace bu konuda bize çözüm sağlıyor. library/Database/Data.php :
<?php    namespace Database;    class Data{    }    ?>
library/Form/Data.php
<?php    namespace Form;    class Data{    }    ?>
Şimdi namepsace ile doğru kullanımına geçelim
<?php    require_once("library/Database/Data.php");    require_once("library/Form/Data.php");    $object1 = new \Database\Data();    $object2 = new \Form\Data();    ?>
Evet şimdi işlet tıkırında giti ve PHP'de IDE'de kızmadı bize. Çalıştı. Eğer namespace kullanmamış olsaydık 2. Data classımız için Data yerine başka belkide anlamsız bir isim vermek zorunda kalacaktık. Özellikle büyük çaplı projelerde iç içe klasör yapıları ve classlar ile daha anlamsız class isimleri oluşturmak durumunda kalacaktık. Buda kod okunurluğunu ve OOP yapısına uygun olmayan sonuçlar doğurabilirdi. Umarım faydalı olmuştur. Devamı için : PHP Namespace

Twig Kurulumu ve Kullanımı

Merhaba, Profesyonel yazılım projelerinde yazılım tasarımdan ayrı tutularak tasarlanır ve geliştirilir. Özellikle özel şirketlerde yazılım, tasarım ve arayüz için farklı departmanlar bulunmaktadır. Konusunda uzman kişiler çalışmalarını birbirlerine ayak bağı olmadan ilerletir. Ne arayüz geliştiricilerin her iş için yazılımcılara ihtiyacı olur ne de yazılımcıların her iş için tasarımcılara ihtiyacı. Bu bağlamda basit bir yazılım dili gibi HTML değişkenler ile birçok çalışma yapmak mümkün. Önemli template motorlarından Twig kurulumu ve birkaç basit çalışmayı sizlerle paylaşmak istiyorum. Twig 1.12.2 sürümünü indirmek için buraya diğer sürümlere erişmek için buraya tıklayınız. İndirmiş olduğunuz dosyayı çalışmak istediğiniz dizine çıkarmanız gerekiyor. Aslında kurulumdan kastımız buydu :) Sadece çalışır duruma gelmesi için birkaç düzenleme daha yapacağız. Cache ve template dosyalarımızın bulunacağı 2 klasör daha isteyecek bizden. Oluşturmanız gereken klasörleri aşağıda listeliyorum - compilation_cache - templates Templates klasörümüzün içine index.html ekleyelim. Basit bir sayfa olacak
<!DOCTYPE html>  <html>      <head>          <title>My Webpage</title>      </head>      <body>          <h1>My Webpage</h1>          {{ message }}      </body>  </html>
Proje dizinimize index.php oluşturup içine şu kodları ekleyelim :
<?php  require_once 'lib/Twig/Autoloader.php';  Twig_Autoloader::register();    $loader = new Twig_Loader_Filesystem('templates');  $twig = new Twig_Environment($loader, array('message' => "Hello Word!"));  echo $twig->render('index.html');
Twigi oluşturup template dizinimizi belirttik. index.html ile haberleşecek olan verileri array olarak gönderiyoruz. message değişkenimiz var şuan sadece. En son olarak index.html'i render ederek çalıştırmış olduk. Ekrana "Hello Word" yazıldığını görürseniz başardınız demektir :) Devamı için : Twig Kurulumu ve Kullanımı

Ubuntu PHP 5.4'den 5.3'e Geçiş (Downgrade)

Merhaba, Ubuntu ile pek çok şeyin kurulumu oldukça basittir. Bunlardan biride PHP. Tabi sudo apt-get install php5 diyerek en güncel PHP sürümüne erişmiş oluyoruz. Yazıyı yazmış olduğum tarihte ki en güncel versiyon PHP 5.4.6. Tabi ki geliştiriciler olarak en güncel versiyonları takip etmek ve ayak uydurmak durumundayız. Oldukça hızlı gelişen bir platform üzerinde çalışmalar yapmaktayız. Ancak mevcut projeleriniz veya araştırma geliştirme çalışmalarımız için PHP 5.3 sürümüne ihtiyaç duyabiliriz. Bunun için derlenmiş durumda olan PHP 5.3.3 sürümünü makinamıza kuracak olan bir bash script dosyamız mevcut. İndirmek için https://www.box.com/s/utzf230qwdt1i5ifvmiu adresini kullanabilirsiniz. İndirdikten sonra yapmanız gerekenleri aşağıda yazıyorum. Sonrasında PHP 5.3.3 versiyonuna sahip olmuş olacaksınız.
sudo sh php5_4_downgrade_5.3.sh
  Devamı için : Ubuntu PHP 5.4'den 5.3'e Geçiş (Downgrade)

12 Şubat 2013 Salı

3 Genel E-ticaret Hatasi

E-ticaret yapanların genel olarak yaptıkları 3 temel hata süzüldüğünde aşağıdaki maddeler ön plana çıkıyor. Bunlara dikkat ederek ise, kalite standardınızı bir tık yukarı çıkarabilirsiniz. 
  • Trafik yüklenmesinin yanlış hesaplanması.  Çoğu satıcı, satışlarının (ve trafiklerinin) büyük bir oranını tatil zamanlarında yapar. Ancak bir çoğu sitelerinin böyle bir trafiğe ve satış artışına hazır olup olmadığını bilmez. Buna karşın, sitenizi sürekli olarak test gereçleriyle trafiğine göre hazır halde bulundurmasını önerebiliriz onlara.
  • Zayıf  ve Etkisiz Promosyonlar. Genel olarak satıcılar promosyonlarını planlı olarak çıkmaz. Böylece çok satış yapsanız bile, sinirli ve memnun edilmemiş bir müşteri kitlesi edinir. 50 kişilik restorana 500 kişi çağırmak gibi bir şey bu. 450 tane memnun olmayan müşteriniz, bir sonraki tercihini sizden yana kullanmayacaktır.
  • Tamamlama ve teslimat  kısmındaki yavaşlık. Bu tarz gecikmeler, müşterinizi hayal kırıklığına sevk eder. Özellikle tatil, özel günler gibi durumlarda, müşteriler siparişlerinin vaktinde sağlam bir şekilde teslim edilmesini ister. Buradaki çıkabilecek problemleri gidermek ise ayrı bir meziyet istiyor. Çünkü kargo tarafında oluşan bir durumu, müşteri çözmeye çalışırken, senaryo gitgide kötüleşiyor. Şikayet sitelerine konu oluyorsunuz.
Devamı için : 3 Genel E-ticaret Hatasi

CentOS ve Fedora icin Bash Mail komutunun yuklenmesi

CentOS ve Fedora icin Bash Mail komutunun yuklenmesi

Bu komut çok kullanışlı bir komuttur. Biz de genelde cronjoblarınız bir işi yaptıktan sonra outputunu mail olarak bir yere göndermek isteyebiliyoruz.
Normal kullanımı şöyle :
$ cat /bir/dosya | mail adres@domain.com
veya
$ echo "birseyler birseyler" | mail adres@domain.com
Eğer bu mail komutu yüklü değilse şöyle bir hata verecek sisteminiz : $ -bash: mail: command not found  Programı yüklemeniz için ise yapacağınız şey çok basit. Şöyle :
$  yum install mailx
Faydası olur umarım.
Devamı için : CentOS ve Fedora icin Bash Mail komutunun yuklenmesi

6 Şubat 2013 Çarşamba

Owning Side/Inverse Side Terimleri Ne Anlama Geliyor

Bugün Doctrine dokümantasyonunu okurken, kafamı karıştıran bir konu oldu. Dokümantasyonda belirtilen "owning side" ifadesi, yani iki nesne arasındaki "sahip" olan taraf, bildiğimin tam tersi bir anlamda kullanılmıştı. Örneğin bir müşterinin siparişlerinden bahsedersek, "Müşteri" değil, "Sipariş" tablosu sahip taraf olarak belirtilmişti. Bu durumu araştırırken, cevabımı stackoverflow'da buldum. Burada bir cevapta anlatıldığı üzere, OO kodlama yaparken düşündüğümüz sahip taraf, yukarıdaki örnekte tabii ki "Müşteri" oluyor. Yani müşteriye ait siparişler olacağından, müşterinin siparişlere "sahip" taraf olduğunu düşünüyoruz. Fakat bu durum, ORM jargonunda tam tersi olarak belirtiliyor. Müşterilerin ve siparişlerin tabloları olduğunu düşünelim. Siparişler tablosundaki her bir sipariş, bir müşteri referansı tutacaktır. Yani siparişler tablosunda, ilgili müşteriye ait bir referans foreign key olarak tutulacaktır. İşte ORM ile ilgili konuşurken, "sahip taraf (owning side)" bu foreign key'e sahip olan taraf olarak kabul ediliyor. Yani OO programlama yaparken düşündüğümüzün tam tersi :) Umarım bu bilgi faydalı olur. İlerleyen zamanlarda nesneler arası bağlantılar (assosication) ve bağlantı yönleri (unidirectional-bidirectional) hakkında da bir yazı hazırlayacağım. Örneğin yukarıda bahsettiğimiz durum Unidirectional ManyToOne bağlantıya bir örnek teşkil ediyor. Tekrar görüşmek üzere. Devamı için : Owning Side/Inverse Side Terimleri Ne Anlama Geliyor

4 Şubat 2013 Pazartesi

"the update information is outdated" sorunu (ubuntu linux)

Ubuntu 12.10'da bir kaç gündür şu şekilde bir uyarı çıkmaktaydı. Üzerine tıkladığımda da "The update information is outdated" şeklinde bir hata bildirisi vardı. (Kırmızı, ünlem.) the update information is outdated update ve upgrade ettiğimde gördüm ki download repositorylerinde 404 not found şeklinde warning vermekteydi. Bunların altında da "E: Some index files failed to download. They have been ignored, or old ones used instead." diye ne olduğunu açıkca belirtiyordu. Screenshot from 2013-02-04 10:59:50 System Settings -> Software Sources menüsüne girip üstteki tablardan Other Software olanda, tüm repolar bulunmakta. Bulunamayanları buradan kaldırdım ve sorun çözüldü. Bu yazıya işiniz düştüyse buradaki yazıyı da incelemenizde fayda olacaktır. Devamı için : "the update information is outdated" sorunu (ubuntu linux)

3 Şubat 2013 Pazar

Ubuntu DNS Ayarlarını Değiştirmek

Merhaba, Ubuntu işletim sistemi üzerinde DNS ayarlarımızı nasıl güncelleyebileceğimizden bahsedeceğim. Çeşitli sebeplerden ötürü DNS ayarlarınızı değiştirme ihtiyacı duyabilirsiniz. Yaygın olarak kullanılan Google DNSlerini kullanarak ben bu işlemi size anlatacağım. Sizler ihtiyaçlarınıza göre farklı DNS bilgilerini kullanarak işlem yapabilirsiniz. İlk işimiz /etc/dhcp/dhclient.conf dosyasını açarak prepend domain-name-servers yazan satırı bulalım (CTRL+W ile arama yapabilirsiniz.) Muhtemelen bu satırın başında # işareti olacaktır. Bu işareti kaldırarak satırı şu şekilde düzenleyelim ve kaydedelim :
prepend domain-name servers 8.8.8.8 8.8.4.4
Son olarak bir işlemimiz daha kaldı. /etc/network/interfaces dosyamızı açarak düzenleme moduna geçelim. Aşağıdaki gibi düzenleyelim ve kaydedelim :
auto lo  iface lo inet loopback  dns-nameservers 8.8.8.8 8.8.4.4
An itibari ile DNS ayarlarımızı güncellemiş olduk. Yukarıda da bahsettiğim gibi Google DNS bilgilerini kullandım (8.8.8.8 8.8.4.4) Siz başka DNS de tercih edebilirsiniz. Umarım faydalı olmuştur. Devamı için : Ubuntu DNS Ayarlarını Değiştirmek

1 Şubat 2013 Cuma

linux swap değerini arttırma (ubuntu 12.10 - wubi)

Bilgisayarınızdaki swap değerinin kaç olduğunu görmek için öncelikle free -m komutunu kullanabilirsiniz. Yada htop komutunu kullanarak değişimi anlık olarak izleyebilirsiniz. Aşağıdaki komutlar sistemin swap değerini 2 GB yapmakta. Buradaki count değerini ne kadar alan ayırmak istiyorsanız ona göre değiştirebiliriniz.
  sudo su  swapoff -a  cd /host/ubuntu/disks/  mv swap.disk swap.disk.bak  dd if=/dev/zero of=swap.disk bs=1024 count=2097152  mkswap swap.disk  swapon -a  free -m  
Eğer swap değeriniz arttıysa swap.disk.bak'ı kaldırabiliriniz. Eğer bir hata oluşursa swap.disk.bak'ı geri yükleyip tekrar deneyiniz. Detaylar için bu sayfayı inceleyebiliriniz. Devamı için : linux swap değerini arttırma (ubuntu 12.10 - wubi)