web

Mac OS X'e Composer'ı nasıl yükledim?

Lavarel deneyimi için PHP dünyasına adım atıyorum. Laravel'i yükleyebilmek için Composer'a ihtiyacımız var.

Her ne kadar kendi sayfasına yapılacak işlemler yazıyorsa da biraz karışık geldi bana. Kendimce özetleyeceğim.

Önce bu sayfada yer alan terminal işlemlerini yaptım:

https://getcomposer.org/download/

Şu an için terminal komutları aşağıdaki gibi, versiyona göre değişiklik gösterdiği için son versiyona uygun olanı yukarıdaki linkten alıntılamanızı tavsiye ederim

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === 'aa96f26c2b67226a324c27919f1eb05f21c248b987e6195cad9690d5c1ff713d53020a02ac8c217dbf90a7eacc9d141d') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Daha sonra ise şu komutu çalıştırdım.

php composer.phar

Artık composer'ı komut olarak kullanabiliriz. Amaç Laravel olduğundan dolayı ben şu komutu çalıştırdım:

composer global require "laravel/installer"

AngularJS Bootcamp 22-23 Kasım'da İstanbul'da

Konu:

Google'ın desteklediği Javascript kütüphanesi olan AngularJS konulu bootcamp bu haftasonu yani 22-23 Kasım'da VNGRS girişimiyle İstanbul YTÜ Beşiktaş Yerleşkesi, Oditoryum'da, üstelik ücretsiz.

Detaylar: http://bootcamp.vngrs.com/

Ücretsiz Kayıt: http://www.eventbrite.com/e/angularjs-haftasonu-bootcamp-etkinligi-ticke...

ExtJS Paging (Sayfalama)

Paging (Sayfalama) Nedir?

Bir grid'e çok fazla kayıt geldiğinde hem bağlantı hem browser açısından performans düşüklüğü oluşabilir. Sunucu tarafında da performansı arttırmak gereksinimi ortaya çıkabilir. Bu yüzden browser üzerinde sayfalama yaparak alınan veri sayısı kısıtlanır. Örneğin 1000 kayıt gelmesi yerine her sayfada 100 kayıt gelecek şekilde bir yapı oluşturulur ve bu şekilde 10 sayfa gerektikçe ajax istekleriyle doldurulur. Buna ExtJS'de paging yani sayfalama denir.

Yapılacaklar

Bunun için ihtiyacımız olan şeyler;

  1. Grid'e ait store'un autoloadfalse olmalı, daha sonra biz load fonksiyonuyla dolduracağız.
  2. Ext.PagingToolbar nesnesi oluşturulur.
  3. Oluşturulan paging nesnesi Grid'in bbar özelliğine eklenir.
  4. load fonksiyonlarımıza start ve limit değerleri verilir.
  5. store'a totalProperty vermemiz gerekiyor
  6. baseParams özelliğini vermemiz gerekiyor ki her ajax sorgusunda bu bilgiler ayrıca verilmeye gerek kalmadan gitsin
  7. Sunucudan gelecek cevabı ayarlayalım.

Parmaklar Çalışsın

  1. Store'umuzu oluşturalım. Örnek olarak bir JsonStore kullandım. Değerlerin geleceği adres de myAjaxUrl.ajax olsun. JSON biçiminde gelecek sunucu cevabı (response) içinde bir kayıtları barındıran bir liste (json array) olacak. Bu listenin adı 'list' olsun. myRecord adında da bir fieldlerimizi saklayan bir Record olsun. Store otomatik ajax isteği yapıp dolmasın diye autoload: false değerini verelim.
  2. var myRecord = new Ext.data.Record.create([
    	{name:'tip',type:'int'},
    	{name:'sehir',type:'string'},
    	{name:'adres',type:'string'}
    ]);
    
    var myStore = new Ext.data.JsonStore({ 
    	url: 				"myAjaxUrl.ajax",
    	root: 				'list',
    	fields: 			myRecord,
    	autoload: 			false
    });
  3. PagingToolbar nesnesini oluşturalım.
  4. var myPaging = new Ext.PagingToolbar({
    	pageSize:	100,
    	width:		600,
    	store:		myStore,
    	displayInfo: 	true,        
    	displayMsg: 	'Toplam Kayıt: {2}, (Gösterilen:{0}-{1})',
    	emptyMsg: 	"Görüntülenecek kayıt yok."
    });
  5. PagingToolbar'ı grid'e eklemek için grid'in bbar özelliğine atıyoruz.
  6. bbar:	myPaging
  7. start değeri başlangıç kayıt numarası, limit değeri ise her sayfada gelecek kayıt sayısıdır
  8. myStore.load({params:{start:0, limit:100}});

  9. Store'a totalProperty değerini verelim. totalCount yerine farklı bir değer de verilebilir, önemli olan sunucudan gönderdiğimiz anahtar kelime
  10. totalProperty: 'totalCount'

  11. Store'a baseParams değerini atayalım.
  12. myStore.baseParams = {
    	sehir: 'Ankara',
    	tip: 1
    };
  13. Bundan sonra sunucudan gelecek değer yazdıklarımızla uyumlu olmalı. Sunucuda kullandığınız teknolojiye göre bunu kendimiz programlayacağız. Ext tarafında önemli olan gelecek cevabın uygun olması. Öncelikle json formatlı bir dizi (array) bekliyoruz. myStore'da root olarak verdiğimiz değer bu dizinin 'key'i olacak. Yani bir obje olacak, içinde de bir dizi olacak, örneğimizde bu key 'list'. Buna göre beklediğimiz değer şunun gibi:
  14. {list:[obje1,obje2,obje3,...]}

    Bunun yanında totalProperty değeri de root değerinin yanında bir obje olarak gelmeli. Örneğimizde 'totalCount' olarak verdiğimize göre şöyle olmalı;

    {list:[obje1,obje2,obje3,...],totalCount:500}

    Yani 'list' adlı dizideki objeler sayfada görünecek, diğerleri Ext tarafına aktarılmayacak. Toplamda da (örneğimize göre) 500 adet listelenecek obje var, buna göre sadece params olarak gönderdiğimiz parametrelerden 'limit' değeri kadar (örneğimize göre 100 adet) sayfada görünecek. hangi sayfada olduğumuz bilgisini ise Ext, sunucu tarafından aldığı bilgiye göre gösterecek.

Demo şu an mevcut değil. İş yoğunluğundan vakit bulabilirsem demoyu da hazırlamayı düşünüyorum.

Opera'yı Sevmeme Nedenlerim

Not: Yazıya Friendfeed'de yorumlar geldi. Bu yorumlar aşağıdaki sorunlarıma çözümler niteliğinde. O yüzden eklemeler yaptım.

Kullanım açısından en sevdiğim web tarayıcı (browser) Google Chrome. Fakat yakın zamanda Google'ın her şeyde gözünün olması sebebiyle (privacy vs) tüm işlemlerimi Chrome'da yapmak yerine alternatif ürünlere yönelmeye karar verdim. Bu ürünlerden biri de Opera.

Opera'yı eskiden de sevmezdim, hâlâ da sevmeden kullanıyorum. Belli bir süre için "bunun sebebi alışmamaktır herhalde" diye düşünüyordum. Şimdi ise yeterince kullandığımı düşünüyorum ve sevmeme nedenlerim sadece alışkanlık farkından kaynaklanmıyor.

  • Metin Seçildi Ve...
  • Bir sayfada geziniyorsunuz, bir kelimeyi çift tıkla seçtiniz (ya da bir cümleyi üç tıkla seçtiniz). Opera otomatik olarak bir menü açıyor. Bu menü açılınca Ctrl + C tuş kombinasyonu çalışmıyor. İlla ki açılan menüden "Kopyala" seçeneğini seçeceksiniz ya da bir şekilde o menüyü, metin seçmeyi bırakmadan kapatacaksınız. Dolayısıyla hızlı bir şekilde Ctrl+C ile kopyalama yapamıyorsunuz. Belki "işleri kolaylaştırmak için bir menü yapalım" gibi bir mantık yürütmüş olabilirler ama bir metni seçtikten sonra Ctrl+C ile hemen kopyalama yapamıyor olmak benim işime taş koyuyor.

    Ekleme:

    ilk sorununun çözümü basit. ayarlar>tercihler>gelişmiş>araç çubukları altındaki "İçerik menüsünü açmak için metnin üzerinde çift tıklayın" kutucuğundaki işareti kaldırman halinde ctrl+c kullanımında sorun yaşamazsın. http://gyazo.com/03b88456551a3f74badb180247e00d9d

  • Kapanmıyor
  • Bir bug olabilir. Bilemiyorum. Operayı kapatalı yeterince vakit geçti fakat Görev Yöneticisi'nde hala 400MB kadar bir bellek harcayan Opera'yı görüyorum. En Opera, ne yapıyorsun?

  • Varsayılan Tarayıcı
  • Nezaketen bile olsa "Ben kendimi varsayılan yapayım mı?" diye sormayan bir tarayıcı, Opera. Yüklüyorsunuz ve bir de bakıyorsunuz ki varsayılan tarayıcınız oluvermiş. İnsanın aklına geliyor: "İyi de, bana sordun mu?"

  • Tüm URL'i Gizleme
  • Hangi mantıkla bunun yapıldığını da merak ediyorum ama bir sayfada dolaşırken Opera o sayfanın parametrelerini görmenize izin vermiyor. Örneğin bir Youtube videosu izlerken o videonun URL'ine bakarsanız sadece youtube.com/watch görürsünüz. Daha fazlasını görmeniz için adres çubuğuna tıklamanız gerekiyor. Yani işi uzatıyor.

    Ekleme:

    tüm url'yi görmek içinse, adres çubuğunun hemen solundaki dünya simgesine sağ klik yaparak "tüm adresi göster" kutucuğunu işaretlemen yeterli. http://gyazo.com/95e57387fa0c4937aadee583780cbf26

Bunlardan beşka Chrome'da alıştığım için eksikliğini hissettiğim birkaç özellik var. Bunlardan dolayı Opera'yı suçlamıyorum ama yapsalar fena olmazdı;

  • Yeni Sekmede Ara
  • Bir metni seçip sağ tıkladığımızda "Ara" seçeneğini görüyoruz fakat bu arama aynı sekmede yapılıyor. Dolayısıyla içerik gidiyor. Halbuki Chrome'daki gibi yeni sekmede arama yapsa daha uygun olur.

    Ekleme:

    seçili metni sağ klik yaparak yeni sekmede aramasını sağlamak içinse "ara"ya tıklama esnasında shift tuşuna basılı tutmak işe yarıyor. ben öyle hallediyorum

    Diğer bir yorum:

    yeni sekmede arama yapabilmek için ayarlar>tercihler>gelişmiş kısmından "açık sekmeyi yeniden kullan" tikini kaldırman yeterli

  • Tab ile arama
  • Bir sayfada arama yapılabiliyorsa o sayfaya gitmeden, doğrudan URL yazdığımız yere, yani adres çubuğuna arama kelimelerini girmemiz güzel bir özellik olurdu. Örneğin seslisozluk.com sitesine girin, en az bir arama yaptıktan sonra Chrome artık sesslisozluk sitesinde doğrudan arama yapmamıza izin veriyor. Fakat ne Firefox'da ne Opera'da bu özelliği göremedim.

Şimdilik bu kadar. Kullandıkça belki daha fazlasını yazarım.

Java Magazine Ocak-Şubat 2012 Sayısı Çıktı

Konu:

Oracle Eylül ayından bu yana Java Magazine adında dijital bir dergi çıkarıyor. İnternetten bu dergiye ücretsiz olarak ulaşabilirsiniz. Üye değilseniz, derginin full sürümü için bir ücretsiz üyelik gerekiyor.

Java Magazine Ocak-Şubat 2012 Kapağı

Sayfalar

Subscribe to RSS - web