Web Yazılım

Javascript'te parseInt() Kullanmak Problem Olabilir

Coderwall sitesinde programlama ile alakalı 'küçük ipuçları'nın (tips & trricks) bulunduğu bir bölüm var. Orada gördüğüm bir detayı paylaşacağım.

Javascript dili genel anlamda stabil olsa da bazen ilk bakışta anlam veremediğimiz noktalarla dolu olabiliyor. Bunlardan biri de parseInt() metodunun döndürdüğü değer.

parseInt('23');      // değer 23
parseInt('023');     // değer 19 (oktal - sekizlik tabandaki değeri)

Chrome, Firefox 21 ve Safari 6 ile bu iki değer de 23 çıkıyor fakat NodeJS shell'inde baktığımızda 23'ün sekizlik tabandaki değeri olan 19'u görüyoruz. Bu sorunla karşılaşmamak için parseInt() metoduna ikinci parametre olarak 10 veririz ve onluk sayı sistemindeki cevabı alırız.

parseInt('023',10);  // 23

Bunun yanında farklı yollar da var;

+'023';              // 23
~~'023';             // 23
Number('023');       // 23

Bununla ilgili bir de benchmark ve doğruluk değerlerini görmek isterseniz şuraya göz atmanızı tavsiye ederim: http://phrogz.net/JS/string_to_number.html
Sayfayı tekrar yüklediğinizde değerler farklı çıkabilir, bunu da gözden kaçırmayın. Bu sayfada yazana göre 'Hangisini kullanalım?' sorusunun cevabı neye ihtiyacınız olduğuna göre değişebilir. Fakat benim gördüğüm kadarıyla, ikinci tabloda yer alan değerlere de dikkatli inceleyerek şu sonucu çıkardım: elinizde düzgün bir str tipinde sayı olacağından eminseniz Number(str) genel olarak daha uygun görünüyor.

Kaynak: https://coderwall.com/p/4eaixa

Apache2 (httpd) Varsayılan Portu Nasıl Değiştiririm?

Kısaca: /etc/apache2/ports.conf dosyası içindeki NameVirtualHost *:80 ve Listen 80 satırlarındaki 80 sayısı isteğe göre değiştirilir. (80 yerine istediğiniz port numarasını yazın)
Ardından /etc/apache2/sites-enabled/000-default dosyası içindeki <VirtualHost *:80> satırındaki 80 sayısı da aynı şekilde değiştirilir.

Uzunca:
Ünlü PHP sunucusu Apache'nin varsayılan portu 80. Bunun yerine http varsayılan portu olan 80'i kullanan diğer herhangi bir uygulama nedeniyle farklı bir port kullanmak isteyebilirsiniz. Bunun için Apache'nin yapılandırma dosyası olan /etc/apache2/ports.conf dosyasında NameVirtualHost *:80 ve Listen 80 satırlarındaki 80 sayısı isteğe göre değiştirilir. (80 yerine istediğiniz port numarasını yazın)
Aynı değişiklik VirtualHost için de diğer bir yapılandırma dosyası olan /etc/apache2/sites-enabled/000-default dosyasında <VirtualHost *:80> satırındaki 80 sayısı için de yapılır.

Bundan sonra Apache'yi yeniden başlatmak gerekir.

Kaynak: http://www.cyberciti.biz/faq/linux-apache2-change-default-port-ipbinding/

Kodcu.com Node.js Sunum Videosu

Madvens uyardı;


Kodcu.com'da Arda Başoğlu tarafından Node.js ile ilgili yapılmış Node Nedir Ve Artan Popülaritesini Neye Borçlu adlı sunum videosu, Node.js'i merak edenlere duyurulur;

http://www.kodcu.com/2012/07/video-node-nedir-ve-artan-popularitesini-ne...

Ayrıca sunumun kendisini (slayt olarak) görmek isteyenler buraya bakablir: http://www.ardabasoglu.com/1/post/2012/06/node.html

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.

IaaS, PaaS, SaaS

Ünlü Microsoftçulardan Daron Yöndem, sitesinde IaaS, PaaS ve SaaS hakkında bir yazı yayımlamış
(Infrastructure as a Service, Platform as a Service, Software as a Service).

Bu yazıda, Microsoft odaklı olan tarafı bir yana, tüm bilişim camiasını aydınlatacak, bilgilerimizi düzenleyecek, taşları bir nebze daha yerine oturtacak bir görseli alıntı yapmak istiyorum. Ne de olsa "bulut bilişim", sayın bakanımız Binali Yıldırım'ın da dediği gibi karmaşık, fazla kafayı takarsan sıyırırsın.

İlgili yazı: http://daron.yondem.com/tr/post/IAAS_PAAS_SAAS_ve_Windows_Azure

Sayfalar

Subscribe to RSS - Web Yazılım