Windows Phone Yazılım Geliştirme Araçları ve Dökümanları

April 26th, 2010

MIX10′da, Windows Phone Yazılım Geliştirme Araçları yayınlanalı yaklaşık olarak iki hafta geçti. Sanıyorum ki birçok yazılım geliştirici Windows Phone 7 Series için uygulama ve oyun geliştirmeye başlamıştır.

Yazılım geliştirmeye başlayan yazılım geliştirici arkadaşlar Windows Phone 7 Series için gerekli dökümanlara ulaşmışlardır. Bu dökümanlara ulaşamayan ve Windows Phone 7 Series için uygulama ve oyun geliştirmek isteyen yazılım geliştiriciler için gerekli dökümanlar için linkler oluşturmaya çalıştım.

Bu kaynaklardan yararlanırken dökümanların Microsoft Visual Studio 2010 Express for Windows Phone CTP versiyonu için olduğunu unutmamanızı istiyorum.
Windows Phone için Örnek Kodlar
Windows Phone için Uygulama Platformları Genel İncelemesi – Parçaların nasıl bir bütün olduğuna dair bir inceleme
Windows Phone için Yazılım Geliştirme Başlangıç Klavuzu – Silverlight ve XNA Framework uygulamaları için gerekli herşeyi içerir.
Windows Phone için Programlama Klavuzu – Özelliklere genel bir bakış ve kod parçalarının nasıl kullanıldığını gösteren örnekler içerir.
Windows Phone için Sınıf Kütüphanesi Referansları

Diğer önemli döküman linleri ise Windows Phone Oyun Geliştirme ve Windows Phone için Silverlight.

Kemal Serkan YILDIRIM http://www.mobileagenda.org/

.NET ile Mobil ve Gömülü Sistemler

April 21st, 2010


Yazılım teknolojileri sürekli bir değişim ve gelişim halinde, bir zamanların vazgeçilmez olan masaüstü uygulamaları neredeyse demode oldu ve yerini çoktan web tabanlı uygulamalara bıraktı. Öte yandan yeni trend; mobilite. 3G, WIMAX gibi terimlerin havada uçuştuğu şu günlerde, her alanda farklı bir mobil uygulama ile karşılaşıyoruz. Evimize gelen kuryeden, sipariş vereceğimiz garsonlara kadar pek çok saha çalışanı mobil cihazlar ve uygulamalar kullanarak işlerini yapar hale geldiler. Gün geçmiyor ki, bir bankanın daha mobil şube veya cep bankacılığı projesi hayata geçmesin. Bu durum cihaz üzerinde çalışan mobil uygulamaların dışında web uygulamalarının da mobil versiyonlarının yazılmasını zorunda, kılıyor. Zira 3G gibi yeni teknolojiler sayesinde kullanıcılar artık hareket halindeyken de çevrimiçi olmak ve web’in imkanlarından faydalanmak istiyor. Öte yandan artık yaşamımızdaki cihazlar gitgide daha fazla akıllı olmaya başladı, akıllı cihaz olgusunun arka planında ise gömülü sistemler yer alıyor.

Aykut TAŞDELEN bu kitabıyla söz konusu teknolojiler üzerine yıllardır yapmış olduğu çalışmalardan, verdiği eğitimlerden elde ettiği deneyimini, özellikle hakkında Türkçe bir kaynak bulunmayan mobil ve gömülü sistemler alanında .NET teknlojileriyle uygulama geliştirmek isteyen yazılımcılara aktarıyor.

Konu Başlıkları :
Compact Framework
Micro Framework
Embedded Sistemler
Emülatörler
GSM ortamı simülasyonu
Mobil GUI uygulamaları
SQL Server CE
Uzak veritabanı erişimi
Senkronizasyon
RDA
XML Kullanımı
Soketler ve Haberleşme
Kızılötesi İletişim
POOM Outlook Entegrasyonu
Telephony Özellikleri
SMS Gönderimi
I/O işlemleri
Deployment
Ve diğerleri …

Mobil Programlamaya Yönelmenin Tam Zamanı

April 21st, 2010

Bundan 15 – 20 sene önce bilim kurgu filmlerinde izlediğimiz şeyler gerçek olmaya başladı. İnternetten okuduğum bir habere göre, görüntülü konuşmayı da destekleyen ve en gelişmiş cep telefonlarındaki tüm özelliklere sahip bir kol saati 2010 yılının başlarında satışa sunulacakmış. Zaten biz elde taşınan kibrit kutusu büyüklüğünde bir cihazla dünyanın öbür ucundaki biriyle görüntülü konuşmaya da razıydık.

3G ile ilgili olarak birçok kişi birçok şey yazdı. Ben sizi bu konuda gereksiz detayla boğmayacağım. Kısaca artık cep telefonunuzla çok daha fazla veri aktarımı gerçekleştirebileceksiniz demek istiyorum. Bu da cebinizdeki o küçücük cihazla görüntülü iletişim yapabilecek, canlı yayın izleyebilecek ve asıl önemlisi hızlı veri aktarımı sayesinde birçok internet bağlantılı yazılımı kullanma şansınız olacak.

Şu an için 3G, görüntülü konuşma, televizyonda dizi ve maç izleme devrimiyle birlikte anılıyor. Biz yazılımcılar için önemli olan yönüyse, mobil cihazlar için internet bağlantılı uygulama geliştirme yönünde önümüzü açması. Şu ana kadar çok düşük kalan gprs/edge hızı nedeniyle mobil cihazlarda internet bağlantılı uygulamalar pek kullanılamıyordu. Şimdiyse düşen maliyetler ve artan hız, çok çeşitli mobil uygulamalar için talep ve fırsat yaratacaktır.

Demedi demeyin! Zaman mobil uygulama geliştirme zamanı.

Hayal gücünüzü kullanın.

Hızlı veri aktarımı ve harita + GPS desteğiyle eşinizin, çocuğunuzun, sevgilinizin gerçek zamanlı olarak nerede olduğunu gösteren bir uygulama hoşunuza gitmez miydi?

Ya da trafikte giderken ayrıntılı olarak yol durumlarını raporlayan ve bulunduğunuz konuma göre, trafik bilgisini de göz önünde bulundurarak en uygun yolu belirleyen bir yol gösterici (navigator).

Belki de vapurda/ otobüste seyahat sırasında dördüncü olarak katılıp, arkadaşlarınızla bir okey partisi düzenlersiniz.

Ya da akıllı evinize bağlanır, odaları ve evin dışını görüntülü olarak denetleyip, ışıkları açıp/kapatabilir, perdeleri örtebilirsiniz.

Bunlar ve daha fazlası er ya da geç yapılacak. Mesele bunları yapanlardan biri de siz olacak mısınız?
Kadir Çamoğlu /CHİP

HTML ve Javascript ile Mobil Uygulamalar – PhoneGap

April 21st, 2010

PhoneGap, Iphone, Android ve Blackberry platformlarını destekleyen geliştiricilerin HTML ve Javascript ile mobil uygulamalar geliştirmesini kolaylaştıran bir araçtır.

.Net Compact Framework 3.5 – System.IO.Compression

April 10th, 2010

Bu makalemizde .Net Compact Framework 3.5 ile mobil cihaz uygulama geliştiricilerin kullanımına sunulan ve mobil cihaz uygulamalarında sıkıştırma işlemlerine olanak sağlayan System.IO.Compression namespace’ i içerisindeki sınıfları inceleyecek, örnek bir uygulama geliştiriceğiz.

Bilgisayarların tüm gelişim tarihi boyunca farklı ihtiyaçlar üzerinde birçok metodoloji geliştirilmiş ve tüm bu metodolojiler zamanla standart bilgisayar hayatımıza girmiş bulunmaktadır. İnsanoğlunun bu gelişim sürecinde üzerinde çalıştığı en önemli nokta ise temel olarak byte dizileri olarak adlandırılan veri kümelerini bilgisayar ortamında daha efektif ve daha iyi nasıl depolanacağıdır. Bu noktada araştırıldığında ise zaman içerisinde bu veri kümelerinin taşınılabilirlilik ve depolama noktasında hayatımızı kolaylaştırabilmesi açısından birçok çalışma gerçekleştirilmiş ve bugün birçoğumuzun günlük hayatında farkında olmadan yüzlerce kez kullandığımız yöntemlere dönüşmüştür.

Bu metodolojilerin en başında hepinizin tahmin edebileceği üzere sıkıştırma (zip / unzip) işlemleri gelmektedir. Sıkıştırma mantığına temel olarak bakıldığında böyle bir işlemin gerçekleştirilebilmesi için gereken yazılım kodlanabilmesi için çok yüksek bir matematik bilgisine ve bu matematik bilgisini yazılımsal olarak destekleyebilecek programlama bilgisine sahip olunması gerektiği kolay bir şekilde anlaşılabilmektedir. Sıkıştırma işlemleri tüm gelişim tarihi boyunca çok önemli bir yer kaplamış, farklı algoritmalar üzerinden bugünkü standart olarak kabul edilebilecek ve günlük hayatta yüzlerce kez kullandığımız / kullanıyor olduğumuz halini almıştır. Bugün araştırıldığında en meşhur ve en çok kullanılan sıkıştırma uygulamalarının arka tarafında tarihteki en meşhur sıkıştırma algoritmalarından Deflate Algoritması kullanılmaktadır. Deflate algoritması ile ilgili ayrıntılı bilgiye http://en.wikipedia.org/wiki/DEFLATE_(algorithm) adresinden ulaşabilir, bu algoritmanın arka tarafındaki matematiksel altyapıyı öğrenebilirsiniz.

Bu makalemizde ise bu algoritmaları kullanan sınıfların hazır olarak tanımlandığı System.IO.Compression namespace’ i içerisindeki sınıfları kullanarak mobil cihaz uygulamalarında sıkıştırma işlemlerinin nasıl gerçekleştirilebileceği ile ilgili konuyu ifade edecek ve örnek bir uygulama geliştirilecektir.

Hızlı bir şekilde .Net Compact Framework 3.5 ile mobil cihaz uygulamalarında hayatımıza giren sınıfları tanımaya geçelim.

Öncelikle belirtmemiz gerekirki bu sınıfları masaüstü .net Framework uygulama geliştiricileri .net Framework 2.0 sürümünden beri kullanmakta, kendi uygulamalarında Deflate algoritması üzerinden sıkıştırma işlemleri gerçekleştirebilmektedirler. Biz ise bugün .net Compact Framework 3.5 ile mobil cihaz uygulama geliştiricilerinde hayatına giren bu sınıflarla mobil cihaz üzerinde çalışan ve zip / unzip işlemleri gerçekleştirebileceğimiz bir uygulama geliştireceğiz.

Üstteki resimden de anlaşılabileceği üzere System.IO.Compression içerisinde aslında birbiriyle küçük bir fark dışında tamamen aynı iki adet sınıf bulunmaktadır.

DeflateStream adından da anlaşılabileceği üzere Deflate algoritmasını kullanarak sıkıştırma ve açma işlemi gerçekleştirmeye yarayan altyapıyı içerisinde barındırmaktadır. GzipStream ise yine Deflate algoritmasını kullanmaktadır, fakat içerisine Gzip dosya formatına uygun bazı başlık bilgileri eklemekte, dolayısıyla gzip uzantısına sahip dosyaları açabilecek tüm uygulamalarda açabilecek hale getirmektedir.

Hiç vakit kaybetmeden Visual Studio 2008 üzerinde bir mobil cihaz uygulaması açarak işe başlayalım. Bu noktada belirtmemiz gerekise geliştirilecek olan uygulamanın hedef platformu Windows Mobile 6.0 yüklü dokunmatik özelliğe sahip (Windows Mobile 6.0 Professional) cihazlar olduğundan dolayı ilgili SDK’ yı sisteminize kurmanız gerekmektedir. İlgili SDK ‘ yı http://www.microsoft.com/downloads/details.aspx?familyid=06111A3A-A651-4745-88EF-3D48091A390B&displaylang=en adresinden indirebilirsiniz. Visual Studio üzerinde bir mobil cihaz uygulaması oluşturarak hızlı bir şekilde örnek projemizi geliştirmeye başlayalım.

Projemizin adı MobiZip.


Hedef platformumuz ise Windows Mobile Professional 6 SDK üzerinde .Net Compact Framework 3.5 sürümü olacaktır.

Uygulama ekranını tasarlamaya geçmeden önce hızlı bir şekilde uygulamamızın senaryosunu ifade edelim.

Uygulamanın temel amacı mobil cihaz üzerinde konumlandırılmış bir dosyayı sıkıştırmak ya da belirli koşullar sağlandığı taktirde bu sıkıştırılan dosyayı açıp tekrardan eski haline getirmektir. Bu noktada bu koşulları ifade etmemiz gerekirse ;

Uygulamamızın kullanacak olduğu dosya uzantısı DosyaAdi.mobizip olacaktır. DeflateStream yapısı gereği dosyanın sıkıştırılmadan önceki adı ve boyut bilgisini tutmadığından ve dosyanın eski haline getirilmesi noktasında bu bilgilere ihtiyaç duyulacağından sıkıştırılmış dosyanın yanına uzantısı DosyaAdi.mobizip.info olan bir bilgi dosyası daha oluşturulacaktır. Bu dosya içerisinde arasında | işareti koyularak dosyanın orjinal adı ve sıkıştırılmadan önceki boyutu kaydedilecektir.

Hızlı bir şekilde uygulama ekranını tasarlayalım.

Uygulama ekranına baktığımızda çokta karmaşık bir arayüz olmadığını, ihtiyaçlar noktasında sıkıştırma yada açma işlemi gerçekleştirilecek olan dosyanın seçilebilmesi için gereken 3-4 adet kontrol yerleştirilmiştir. Ayrıca ekran üzerinde görünmeyen ve dosya seçme diyaloğunu temsil eden OpenFileDialog kontrolüde arayüz üzerine yerleştirilmitir. (OfdSelectFile)

Hızlı bir şekilde kod altyapısını oluşturmamız gerekirse ;

Senaryo gereği kullanıcı OpenFileDialog vasıtasıyla sıkıştırılacak yada açma işlemi gerçekleştirilecek dosyayı seçecektir.

… yazan button’ a tıkladığımızda aşağıdaki kod bloğu çalıştırılacaktır.

Yukarıdaki kod bloğundan anlaşılabileceği üzer dosya seçme ekranı üzerinden herhangi bir dosya seçildiğinde bu dosya bilgisi metin kutusu içerisine yazdırılmaktadır.

Bir sonraki aşamada sıkıştırma işlemlerinde kullanacak olduğumuz 3 adet stream obje referansını global’ e yerleştiriyoruz.

Bu noktada açıklamamız gerekirse ; DeflateStream adından da anlaşılabileceği üzere sıkıştırma ya da açma işlemlerini gerçekleştirecek olan Stream objesini temsil etmektedir. FsSource senaryoya göre o an işleme sokulan dosyanın stream’ i FsTarget ise o an senaryoya göre işlem görecek olan dosyanın stream’ ini temsil etmektedir.

Sıra geldi sıkıştırma / açma işlemlerini gerçekleştirecek olan Operate button’ una tıklandığında çalıştırılacak olan kod bloğunu hazırlamaya geldi.

Uygulamamız hangi işlemin yapılacağına (sıkıştırma / açma) seçilen dosyanın türüne bakarak karar verecektir. Eğer seçilen dosyanın uzantısı *.mobizip ise açma, değilse sıkıştırma işlemi gerçekleştirecektir. Aynı zamanda *.mobizip uzantısına sahip olsa bile dosyanın eski haline getirilebilmesi için gereken *.mobizip.info dosyasınıda sıkıştırılmış dosyanın yanında arayacak şayet bulabilirse hata vermeden işlemi tamamlayacaktır.

Operate tuşuna basıldığında ilk olarak dosyanın türünü inceliyoruz ;

Bu if koşulunun else ayağında ise sıkıştırma işlemi gerçekleştirilmektedir

Hızlı bir şekilde uygulamamıza devam edelim. Eğer seçilen dosya mobizip uzantısına sahip ise açma işleminin yapılacağı ile ilgili kod bloğu çalıştırılmaktadır. Bu kod bloğunda ise ilk olarak ilgili dosyanın bilgilerinin bulunduğu info dosyası aranmaktadır.

Dosya eğer başarılı bir şekilde bulunabilmiş ise dosya içeriği | işaretine göre split edilmekte ve bir diziye aktarılmaktadır.

Bir sonraki aşamada açma işlemi için gereken kodlar yazılmaktadır.

Yazılan kodları sırasıyla incelediğimizde ilk olarak global’ de tanımlanan Stream objelerinin instance’ ları oluşturulmakta ; FsSource açılacak olan dosyayı temsil etmekte, FsTarget ise açıldıktan sonra oluşturulacak olan eski dosyayı temsil etmektedir.

DeflateStream objesinin instance’ ının oluşturulduğu satırda ise ilk parametresinde açılacak olan stream’ a referans, ikinci parametresinde ise gerçekleştirilecek olan işlem seçilmiştir.

Bir sonraki satırda info dosyasının yardımıyla dosyanın açıldıktan sonraki halinin byte dizisini depolayabilecek bir buffer oluşturulmuş, boyut olarakta yine info dosyasının yardımıyla eski dosyanın (sıkıştırılmadan önceki) boyutu atanmıştır.

ds.Read ile başlayan satırda sıkıştırılmış dosyanın tekrardan açılmış hali buffer ‘ a kopyalanmakta,bir sonraki satırda ise buffer içerisindeki açılmış hali FsTarget stream’ i üzerinden yeni oluşturulmuş ve açılmış olan dosyaya yazılmaktadır. İşte bu kadar ! Bu noktadaki en önemli uyarı ise stream’ leri kullandıktan sonra kesin olarak kapatmanızdır. Aksi taktirde dosyalara erişim kısıtlanacak ve hata alınacaktır.

Bir diğer çalıştırılacak olan kod bloğu ise sıkıştırma işlemi için gereken kod bloğudur. Uygulama uzantının *.mobizip olmadığı durumlarda sıkıştırma işlemi gerçekleştirmekte ; bununla birlikte bir info dosyası oluşturmaktadır.

Yukarıdaki kod bloğu incelendiğinde ise aslında bir önceki işlemle karşılaştırıldığında tam ters hareket uygulanmaktadır.

İlk iki satırda sıkıştırılmış ve sıkıştırılacak olan dosyalar ilgili stream’ lere yüklenmekte, bir sonraki aşamada ise dosya bilgilerinin tutulduğu FileInfo değişkeni oluşturulmaktadır.

Daha sonra sıkıştırılacak olan dosyanın verileri Buffer’ a yüklenmekte, ve DeflateStream üzerinden FsTarget isimli stream’ e bu veriler sıkıştırılarak gönderilmektedir.

Bu işlemden sonra *.mobizip.info uzantılı dosya da kaydedilmekte ve işlem tamamlanmaktadır. İsterseniz hiç vakit kaybetmeden uygulamamızı Emulator üzerinde deneyelim.

Uygulamamızı çalıştırdığımızda aşağıdaki görüntüyü elde etmemiz gerekmektedir.

Dosya seçme ekranını açarak daha önceden cihaza kopyaladığımız ve sıkıştırılmaya çok müsait olan bir BMP dosyasını seçiyoruz.

Ve son görünüm,

Operate tuşuna tıkladığımızda uygulama dosyanın uzantısına bakacak ve sıkıştırma işlemi gerçekleştirecektir.

Dosyanın bulunduğu yere gidip baktığımızda dosyanın yanında 2 adet daha dosya görmekteyiz. Bunlardan biri sıkıştırılmış olan dosya (*.mobizip) ve sıkıştırılan dosyanın eski boyut bilgisi ve isim bilgisini tutan *.mobizip.info dosyası.

Dikkat edilecek olursa dosya boyutu neredeyse 20 kat küçülmüştür.

Bir sonraki aşamada OrnekBMP isimli bmp dosyasını siliyoruz.

Ve bu dosyayı sıkıştırıldığı halinden tekrar oluşturuyoruz.

Öncelikle uygulamamızdan mobizip uzantılı sıkıştırılmış dosyayı seçiyoruz.

Operate tuşuna bastığımda ise açma işlemi başarıyla gerçekleştirilmektedir ;

Dosyanın bulunduğu yere tekrar gidip baktığımızda ;

Dosyanın tekrar oluşturulmuş olduğunu görmekteyiz.

İşte bu kadar !

Bu makalede .net Compact Framework 3.5 ile birlikte gelen System.IO.Compression sınıflarını kullanarak bir sıkıştırma / açma işleminin nasıl gerçekleştirilebileceği ile ilgili örnek bir uygulama geliştirdik.

Başka bir makalede daha görüşmek dileğiyle.

Ekin Özçiçekçiler’in http://www.netcfturkiye.org’daki yazısından alınmıştır.

Device Application Development MVP

Zend PHP5 Sertifikası

April 2nd, 2010

Zend PHP ve PHP 5 sertifikalarının yavaş yavaş ülkemizde de ilgi görmeye başlayacağını ve bu konuda kaynak eksiğini olan kaynaklara da ulaşmanın zor olduğunu farkettiğimizden dolayı sınavla ilgili yazan arkadaşların yazılarından bir derleme yapmaya karar verdik buyrun umarız yararlı olur .

Zend PHP5 Sertifikası

Zend PHP5 Sertifikasını almak isteyen, ama bu sınav için nasıl hazırlanacağını bilmeyen, sınavın içeriğini merek eden arkadaşları düşünerek bu yazıyı yazmaya karar verdim.

Genel olarak sınav zor denemez. Sorular biraz şaşırtmacalı, akıl çelici. Sınav soruları şu bölümlerden geliyor :
PHP Basics
Syntax
Operators
Variables
Constants
Control Structures
Language Constructs and Functions
Object Oriented Programming
Instantiation
Modifiers/Inheritance
Interfaces
Exceptions
Static Methods & Properties
Autoload
Reflection
Type Hinting
Class Constants
PHP 4/5 Differences
Object Orientation
E_STRICT
References vs. Object Handles
Streams and Network Programming
Files
Reading
Writing
File System Functions
Streams
Security
Configuration
Session Security
Cross-Site Scripting
Cross-Site Request Forgeries
SQL Injection
Remote Code Injection
Email Injection
Filter Input
Escape Output
Functions
Syntax
Arguments
Variables
References
Returns
Variable Scope
Databases and SQL
SQL
Joins
Analyzing Queries
Prepared Statements
Transactions
Strings and Patterns
Quoting
Matching
Extracting
Searching
Replacing
Formatting
PCRE
Arrays
Enumerated Arrays
Associative Arrays
Array Iteration
Multi-Dimensional Arrays
Array Functions
SPL
XML and Web Services
XML Basics
SimpleXML
XML Extension
Xpath
Webservices Basics
SOAP
REST
Web Features
Sessions
Forms
GET and POST data
Cookies
HTTP Headers
Design and Theory
IDesign Patterns
Code Reuse
OOP Theory
Biliyorum, böyle bakınca hayli karmaşık görünüyor. Ama şu adımları izleyerek sertifikayı alacağınıza inanıyorum :
Buradan sertifika için ihtiyacınız olan herşeyi (pdf çalışma kitapı, sınav çeki,10 adet deneme sınavı) temin edebilirsiniz.
Buradaki çalışma kitapçığını en az bir kez okumanızı tavsiye ediyorum. Ve deneme sınavlarına girmeyi de ihmal etmeyin. Gerçi, deneme sınavları sürekli tekrarlayan sorulardan oluşmasına rağmen, gerçek sınava çok benzediği için, sizi sınava hazırlayacak ve size bir bakış açısı kazandıracak.
Kitap ve deneme sınavları haricinde, isteyen arkadaşlar sınavda çıkacak konu başlıklarını PHP manuelden de ayrıntılı inceleyebilirler.
Sınavı Pearson Vue aracılığı ile, bu şirketin onayladığı test merkezlerinden girebiliyorsunuz. Sertifikasyon için yukarıdaki paketi aldığınızda, size verilen voucher ile Vue ye kayıt yaptırarak istediğiniz gün ve saat de, size uygun olan bir test merkezini seçerek sınav için randevu alabiliyorsunuz.
Son olarak sınavın 70 soru ve 90 dk olduğunu, sınavın ingilizce olduğunu, okuduğunuz anlayacak derecede ingilizce bilmeniz gerektiğini ekleyeyim.
Bol şanslar,-ki şansa ihtiyacınız yok aslına, isterseniz başarabilir ve ZCE sayısını (28-Haziran-2009 itibarı ile 11 kişi) arttırabilirsiniz, buna inanıyorum.

Yazının Orjinal Hali İçin :http://www.ersindogan.com/php-web-programlama/zend-php5-sertifikasi

Zend PHP5 Sertifikasyon Öğrenci Rehberi
Sanırım birçok PHP geliştiricisi Zend’in PHP5 sertifikasını almak için uğraşıyor.Ayrıca geliştiricilerin sınava nasıl hazırlanacaklarını belirten bir kaynak yok.Ayrıca türkçe kaynak arayanlarında kaynak bulamaması normal çünkü ingilizce bilmeyenlerin sınava girmeside anlamsız.

O yüzden ciddi derecede sınava girecekler için PHP Architect’in yayınladığı Sertifikasyon Öğrenci Rehberinin çok iyi bir kaynak olduğunu düşünüyorum.Kitabın tamamını inceledim ve gerçekten çok faydalı örnekleri var.İngilizce bilmeyenler de örneklerinden faydalanabilir diye düşünüyorum.Kitabı buradan bilgisayarınıza indirip büyük bir heyecanla okumaya başlayabilirsiniz.
Yazının Orjinal Hali İçin :http://www.guraysuerdem.com/zend-php5-sertifikasyon-ogrenci-rehberi/

Zend PHP5 Sertifikası
Geçen ay, bir hışımla nedir bu Zend Sertifikası dedim ve kendimi geçen hafta sınav merkezinde buldum. Bir aksilik olmadı sınavı geçtim

Girmek isteyen arkadaşlara detaylı bilgi vereyim, çünkü ben aradığım zaman bulamadım. Genel olarak Türkiyede pek bilinmiyor, bilenler ise çok büyüterek sınavda çok zor ve gereksiz sorular olduğunu düşünüyor. Sınava girdiğimde anladım ki hiç de büyütülecek bir zorluğu yokmuş.

Sınav için istediğiniz gün ve saati seçip, Kadıköy Bilge Adam’da girebiliyorsunuz. Sınav bitiminde sonuç hemen ekranınızda geçtiniz veya kaldınız diye çıkıyor.

Sınava çalışmak için, Zend’in sitesinden 10 tane deneme sınavı aldım ama sadece 5 tanesine girdim. Açıkcası ordaki soruların yarısını hayatımda ilk kez duydum. Gereksiz soru olduğu doğrudur. Zaten deneme sınavındaki soru çeşitliliği baya az ve hep aynı sorular çıkıyor. Gerçek sınav soruları deneme sınavlarından kesinlikle daha kolay ve anlaşılır.

Zend’in sitesinde hangi konulardan çıktığını güzel bir şekilde listeliyor ve gerçekten o konuların hepsinden en az bir soru çıkıyor. Ben çalışırken PHP Manual’i kullandım, internette bazı kitaplar bulabilirsiniz ama ordaki bilgi bence yetersiz kalıyor.

Sınava girmeden önce bunları bilseniz iyi olur, gördüğüm her sınavda mutlaka çıktı
Echo ile print’in farkını
if (1==”1abc”) ifadesinin true döndürdüğünü
instanceOf ifadesinin gerçek anlamda ne işe yaradığını ve hangi durumlarda kullanılması gerektiğini
& (call by reference) nerelerde nasıl kullanıldığını
Interface ile Abstract class’ın farklarını
Protected, private, public ifadelerinin ne işe yaradığını
++$var ile $var++ arasındaki farkı
array_shift, array_unshift, array_walk_recursive fonksiyonlarını
Azıcık regular expression, fazlası zarar
Temel string manipulation fonksiyonları, özellikle strstr
Güvenlik konuları için özellikle Cross site scripting ve session güvenliği
SQL de Prepared Statement’ların yararları

Bu sınavın gerekliliği ne işe yaradığı tartışılır. Ama yurt dışında yakın çevremden bildiğim gayet geçerli bir sertifika olduğudur. Gerçekten PHP’yi seven bilen kişilere tavsiyem bu sertifikayı almalarıdır. Gerçekten sınava gireceklere, bende kalan deneme sınavlarını verebilirim.

Yazının Orjinal Hali İçin :http://www.midye.org/blog/zend-php5-sertifikasi/

Son olarak sizin için yararlı olabilecek bazı linklere de aşağıdan ulaşabilirsiniz .
Türkiye’de şu anda kimler de Zend PHP 5 sertifikası var buradan öğrenebilirsiniz.(Yazının yazıldığı tarihte 15 kişide vardı.)

Türkiye’de sınava girebileceğiniz merkezleri aramak için şuradan faydalanabilirsiniz.

Zend PHP5 Sertifikasyon sınavının şu anki fiyatı : 125 $

Mobil Teknoloji Terimler Sözlüğü

March 20th, 2010

3G – 3G (veya 3-G), üçüncü nesil cep telefonu teknolojisinin kısaltmasıdır. 3G ile ilişkili hizmetler, hem sesli veri (telefon görüşmesi), hem de sessiz veri (karşıdan bilgi yükleme, e-posta gönderme/alma ve anında ileti) aktarımına olanak verir. 384kbps’ye ulaşabilen veri iletim hızları ile, standart çevirmeli bağlantıya göre yedi kat daha hızlıdır. 3G kapsama alanının dışına çıktığınızda, bağlantınız kesilmeden hizmet otomatik olarak GPRS’ye geçiş yapar.

802.11a – 802.11a — 5 GHz bandında 54 Mb/s hızına kadar çıkan iletim sağlar. Radyo frekansı karışma olasılığı 802.11b ve 802.11g’den daha azdır. Kapsama aralığı 802.11b’den göreli bir şekilde daha kısadır (yaklaşık 60 metre). 802.11b ile birlikte çalışmaz.

802.11b – 802.11b — 2,4 GHz bandında 11 Mb/s iletim sağlar. 802.11a ile birlikte çalışmaz. Merkez istasyondan 100 metrelik uzaklık içinde veri erişimi sağlar.

802.11g – 802.11g — 2,4 GHz bandında 54 Mb/s (normalde 22 Mb/s) hızına kadar iletim sağlar. 802.11b’in ardılı kabul edilir ve bununla uyumludur. Merkez istasyondan 100 metrelik uzaklık içinde yüksek hızda veri erişimi sağlar.

Bluetooth® – Bluetooth®; Bluetooth® özelliği etkinleştirilmiş bir cihaz ile bir diğerini ağınızı kullanmadan hızlı ve kolay bir şekilde bağlamaya olanak verdiğinden kablosuz Yerel Ağı mükemmel bir şekilde tamamlar. Örneğin, dizüstü bilgisayarınızı kullanarak uydu iletişimli bir işyerinde kapsama alanı içindeki herhangi bir Bluetooth® özelliği etkinleştirilmiş yazıcıda belge yazdırabilirsiniz (Bluetooth® ürünleri kablosuz ağlardan daha kısa uzaklıklarda, yaklaşık 10 metre içinde çalışır). Buna ek olarak geçici bir ağ oluşturarak (kişisel ortam ağı (PAN) da denir) resmi olmayan toplantılarda, mesela müşterinin toplantı masasında, dosya alışverişi yapabilirsiniz. Bluetooth® özelliği esnek ve doğaçlama çalışmaya olanak sağlar, özellikle sabit veya kablosuz bir ağa bağlanmaya zamanınız olmadığında yararlıdır.

Dolaşım – Dolaşım, kablosuz kullanıcının kablosuz yerel ağa (WLAN) kesintisiz bir şekilde bağlantı sağlayarak binada, kampüste veya büyük bir komplekste serbestçe hareket edebilmesi veya “dolaşabilmesi” demektir. Bu olanak stratejik bir şekilde yerleştirilen erişim noktaları kullanılarak sağlanır. Kullanıcı bir erişim noktasının kapsama alanı dışına çıktığında otomatik olarak diğer erişim noktasına aktarılır.

EDGE – EDGE (Enhanced Data Rates for Global Evolution) mobil aygıtlara geniş bant hızına yakın veri hızlarında çalışma olanağı sağlayan bir 3G teknolojisidir. Dünya çapındaki GSM operatörleri tarafından hızlı bir şekilde yaygınlaştırılan global bir kablosuz geniş alan veri iletişimi standardıdır.

Erişim Noktası (Access Point) – Erişim Noktası (Access Point), WLAN ağındaki kullanıcıları bağlayarak veri ileten ve alan (bazen alıcı verici de denir) bir cihazdır buna ek olarak WLAN ve şirketin Yerel Ağı gibi bir kablolu ağ arasında bağlantı noktası olarak da hizmet verir. Erişim Noktaları, yükseltilmiş kablosuz güvenlik sağlamaları ve kablosuz kullanıcının erişmesi gereken hizmetlerin fiziksel kapsama alanını genişletmeleri nedeniyle önem taşırlar. Her erişim noktası tanımlı ağ alanı içinde birden çok kullanıcıya hizmet edebilir; kişiler bir erişim noktasının kapsama alanı dışına çıktığında bu kullanıcılar otomatik olarak bir sonraki erişim noktasına aktarılır. Küçük bir WLAN ağında tek bir erişim noktası yeterli olabilir; gereken sayı ağ kullanıcıları sayısına ve ağın fiziksel boyutuna bağlı olarak artar.

Etkin Nokta (Hotspot) – Etkin Nokta İngiltere ve Avrupa’nın geri kalanındaki hava alanlarında, otellerde, konferans salonlarında ve diğer kamu alanlarında bulunan ortak WLAN ağlarıdır. (Yerel Starbucks Kahve Mağazalarında amblemi görmüş olabilirsiniz.) Bir Etkin Nokta’nın kapsama alanı içinde olduğunuzda dizüstü bilgisayarınızı veya PDA’nizi kullanarak Internet’e kablosuz bağlanabilirsiniz. İngiltere ve Avrupa’nın diğer kısmında şu anda yüzlerce etkin nokta vardır ve yakında kurulması planlanlanan pek çok etkin nokta vardır.

GPRS – GPRS, General Packet Radio Service (Genel Paket Radyo Servisi) tanımının kısaltmasıdır ve bu standart, hücresel şebekelerde devre anahtarlamalı bağlantılar yerine paket bağlantılara olanak verir. Kullanılabilir toplam GPRS bant genişliği, herhangi bir zamanda gönderi yapan kullanıcılara derhal tahsis edilerek yalnızca aralıklı olarak veri gönderip aldıkları durumlarda bağlantıdan daha fazla yararlanmaları sağlanır. Bu, Internet erişimi gerekli olduğunda yüksek hızlı mobil erişim ve cep telefonu şebekesine bağlanma olanağı sağlar.

GPS – GPS, Global Konumlandırma Sistem’inin kısaltılmış halidir; GPS dünya yüzeyine yakın bir yerde bulunan (bazen dışında da olabilir) uygun donanıma sahip kullanıcılara 24 saat üç boyutlu konum, hız ve zaman bilgisi veren uydu tabanlı radyo konumlandırma sistemlerini belirtir. GPS teknolojisi çok çeşitli uygulamalarda kullanılır; denizcilik, çevre, havacılık, izleme ve gözlemleme gibi.

Kızılötesi - Kızılötesi, eş düzeyde ağ oluşturmaya yönelik başka bir yöntem olması açısından Bluetooth®’a benzer. Bu yöntemde veriler kısa uzaklıklardaki cihazlar arasında radyo dalgalarıyla iletilir. (Verilerin kızılötesi ile gönderilebildiği kapsama alanı Bluetooth®’dan kısadır.) Örneğin bir iş arkadaşınızla dizüstü bilgisayarlarınızı yaklaştırıp her ikisinin kızılötesi bağlantı noktasını kullanarak veri alışverişi yapar ve arkadaşınıza bir metin belgesi gönderebilirsiniz.

Ortam Erişim Denetimi (MAC – Media Access Control) - MAC adresi cihazın ağa bağlandığı fiziksel adrestir. Bu benzersiz donanım kimliği cihazların erişim noktası aracılığıyla kablosuz ortam ağı (WLAN) gibi ağlara erişimini sağlamak için kullanılabilir.

PAN – Kişisel ortam ağları olan PAN’lar, geçici bir ağ oluşturarak sabit veya kablosuz ağdan ayrı bir şekilde çalışan, kapsama alanı kısa sıradan ağlardır. Ani toplantılarda kolaylıkla dosya alışverişi yapabilir, sabit veya kablosuz ağa bağlanmak zorunda kalmadan belge bastırarak zaman kazanabilir ve Bluetooth® özelliği etkinleştirilmiş cihazlar arasında gittiğiniz her yerde bilgi paylaşımı yapabilirsiniz.

Saniyedeki megabit sayısı (Mb/s) – Saniyedeki megabit sayısı (saniyede bir milyon bit) bilgi aktarım hızını ölçmek için kullanılır. [Bit ikili rakam yerine kullanılır, bilgisayarın tutabileceği en küçük bilgi birimidir]

USB / USB 2.0 – Evrensel Seri Veri Yolu’nun kısa biçimidir [bilgisayarı dış belleğe ve çevre birimlere bağlama], USB 12 Mb/s hıza USB2 ise 480Mb/s hıza kadar veri aktarımına olanak sağlayan dış veri yolu standardıdır. USB bağlantı noktası fare, yazıcı ve klavye gibi çevre birimlerini bilgisayara bağlamak için kullanılır.USB bilgisayarla dış çevre birimleri ve cihazları arasında iletişim kurmaya yönelik bir dış arabirim standardı veya bağlayıcıdır. USB varolan seri bağlantı noktalarının, paralel bağlantı noktalarının, klavye ve monitör bağlantılarının yerini almayı hedefler ve klavye, fare, monitör, yazıcı ve çıkarılabilir sabit sürücülerle kullanılabilir. USB, düşük fiyatlı çevre birimlerine özgü koşullarda 1,5 ve 12 Mb/s (Megabit/saniye) hızında çalışır. Yüksek hızlı USB olarak da adlandırılan USB 2.0 geliştirilmiş daha hızlı bir sürümdür ve 480 Mb/s hızında çalışır.

VPN - Sanal Yerel Ağ veya VPN, kullanıcıları işlerine veya kişisel ağlara veya sunuculara güvenli bir “tünel” üzerinden bağlamak için Internet kullanır. Bu, Internet erişimi olan herhangi bir yerden işyeri ağınıza güvenli bir şekilde bağlanabilmeniz anlamına gelir. Örneğin, İngiltere ve Avrupa’nın diğer kısmındaki hava alanları, oteller ve konferans merkezlerinde bulunan yüzlerce Etkin Noktadan birinden bir VPN kurabilirsiniz.

WLAN – Kablosuz Yerel Ağ veya WLAN ağları dizüstü bilgisayarlar, masaüstü bilgisayarlar, yazıcılar, PDA’ler ve işyeri ağınız arasında kablosuz erişim noktaları aracılığıyla kablosuz bağlantı sağlar. Bu ek kablolama maliyetine ve karmaşıklığına girmeden ağınızı (ve işinizi) genişletmeniz için kolay bir yöntem sağlar.

Wi-Fi – Wi-Fi, 802.11 standardını temel alan Kablosuz Yerel Ağ ürünleriyle birlikte çalışma sertifikası sağlamak amacıyla oluşturulan kar amaçlı olmayan bir kuruluştur.

Yerel Ağ - Yerel ağlar sabit ağınızı oluşturan bağımsız sabit kablolu ağlardır. Cihazlar kablo ve bağlantılarla sunucularınıza bağlanır. Yerel Ağlar en çok kullanılan ağ türüdür, ancak bu durum uzun sürmeyeceğe benzer, kablosuz yerel ağlar giderek daha çok tercih edilmeye başlamıştır..

Kitap : Mobil Programlama

March 19th, 2010

Mobil ProgramlamaKADİR ÇAMOĞLU – ÇAĞDAŞ DAVULCU

yayın tarihi:01.02.2008, 272sf, 1.Hamur, 19,5 x 24, 260gr

Mobil programlamanın temellerini öğrenmek için hazırlanmış ilk kitap! Bu kitapla .Net Compact Framework ile güçlü ve verimli uygulamaları kolaylıkla geliştirebilir, SQL Server 2005 Everywhere sürümüyle mobil cihazlarda veri işlemenin derinliklerine dalabilir, akıllı aygıtlarla profesyonel uygulamalar geliştirmenin keyfini yaşayabilirsiniz.

Kitapta işlenen konular kısaca şöyle:
• Program Geliştirme Arabirimi (IDE)
• Standart Mobil Kontroller Kullanıcı
Arabirimi ve Formlar
• Zengin Kullanıcı Arabirimleri
• Metinler, Sayılar ve Tarihlerle Çalışmak
• Dosya ve Dizinlerle Çalışmak
• Koleksiyonlarla Çalışmak
• Özel Amaçlı Mobil Kontrolleri
• XML ve DataSet ile Mobil Programlama
• Sql Server 2005 Mobile Edition ve
ADO.Net ile Veri Erişimi
• XML Web Servisleriyle
Mobil Programlama
• Hata Ayıklamak
• GDI+ ve Yazdırma İşlemleri

Kadir ÇAMOĞLU
1974 İstanbul doğumlu olan Kadir Çamoğlu iktisat alanında lisans sahibidir. 1995 yılından bu yana çeşitli yazılım projelerinde görev almış, veritabanı ve yazılım geliştirme başlıklarında danışmanlık yapmıştır. 1994 yılında başlayan eğitim sektörü deneyimini 2000 yılından itibaren teknik eğitmen olarak devam ettiren Kadir Çamoğlu, New Horizons Bilimer Bilişim Akademisi’nde, Yazılım ve Veritabanı Eğitimleri İş ve Ürün Geliştirme Yöneticisi olarak çalışmaya devam etmektedir.

Çağdaş DAVULCU
İzmir Atatürk Anadolu Lisesi mezunu olan ve İstanbul Üniversitesi İktisat Fakültesi Ekonometri Bölümü kültürü ile yetişen Çağdaş DAVULCU, profesyonel kariyerinde Microsoft teknolojileri üzerine yüzlerce saat eğitim aldı. Öğrenciyken çalışmaya başladığı BAY-TEK Software firmasından sonra Bilimer Bilişim Akademisinde Yazılım Geliştirme Eğitmeni olarak 2 sene görev aldı.

PUSULA YAYINLARI

Android İle 30 dolara robot

March 19th, 2010

Tim Heath ve Ryan Hickman, Android işletim sistemi tabanlı bir
cihaz ile basit de olsa bir robot yapmayı başardı. Bu basit robotun üzerinde sadece 30 dolarlık bir cihaz bulunuyor. Bilgisayar üzerinden gerekli komutları verilip uzaktan yönlendirilebilen bu robot bir şekilde Android’in gücünü de ortaya koyuyor. Cihaza ait videolara ve yapım süreçlerine ait bilgileri bulabileceğiniz kendi internet sitelerine buradan ulaşabilirsiniz.

Android’de Başlangıç Programı Yazmak

March 19th, 2010

Hikaye: Telefonunuz yeni açıldığında, programınızın otomatik olarak açılmasını sağlayabilir, ya da arka planda bazı önyüklemeleri gerçekleştirebilirsiniz. İşte bende bugün yeni yapmaya başladığım bir programın benzer bir özelliği olmasını istediğim için bu konuyu araştırmaya koyuldum. Zaman içerisinde değişen Android API’leri yüzünden internetten araştırıp bulduğum hiç bir bilginin tam ve geçerli olmaması sonucunda,  yarım saatte yapmayı planladığım şeyi ancak yarım günde yapabildim. Zaten bu dökümanı yazma sebebim de tam olarak bu oluyor.

Background: Öncelikle Broadcast Receiver (ya da eski ismiyle Intent Receiver) ile, cep telefonumuzun açıldığını anlayacağız. Peki ama Broadcast Receiver’da ne oluyor? derseniz; Broadcast kelime manası olarak, “yayın yapmak” demektir. Bunu televizyon yayınına benzetebiliriz. Ortada bir antenden, her tarafa yayın yapılır ve o sinyali almak isteyen herkes alır. Tam olarak Android işletim sistemi içerisindeki broadcast yayını da böyle yapılır. İşletim sistemi içerisinde gerçekleşen bir olay karşısında, “ben bunu yaptım” diye bir yayın yapar. Bu bilgiyi almak isteyen her program bunu alarak kullanır, tepki verir. Mesela cep telefonuna bir SMS mesajı geldiğinde, Android bir broadcast yayını ile(intent göndererek) tüm programlara SMS alındığına dair bilgilendirir. Aynı şekilde, cep telefonumuz açıldığında, Android bize telefonun açılışını haber verebilir. Biz yeter ki bu yöne kulağımızı kabartalım :)

İcraat: İşte BroadReceiver sayesinde, tüm broadcastlara ulaşabiliriz. Fakat önemli olan tüm broadcast yayınları içerisinden işimize yarayacak olana ulaşabilmek. Bunun için gelen broadcastları AndroidManifest.xml içerisinde filtreleyeceğiz. Tabi bir de tüm bu işlemler için gerekli permission’ları yine AndroidManifest.xml içerisinde tanımlamış olmamız gerekiyor. İsterseniz artık icraata geçelim..

<receiver android:name=”.StartupIntentReceiver”>
<intent-filter>
<action android:name=”android.intent.action.BOOT_COMPLETED” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</receiver>

Yukarıdaki gibi bir receiver’ımız için bir filtre yazıyoruz. Yani, tüm broadcast yayınları içerisinden telefonun açılışının ardından yapılan yayını yakalayacağız. Bunu android.intent.action.BOOT_COMPLETED sayesinde anlayacağız. Fakat bu broadcast yayını dinleyebilmemiz için de, belli izinleri almış olmamız gerekiyor. Bunun için yine AndrodManifest.xml’in içerisine şu permission kodunu ekliyoruz.

<uses-permission android:name=”android.permission.RECEIVE_BOOT_COMPLETED” />

Yanılgı: Her ne kadar Android’in kendi sitesindeki dökümanlarda ve diğer bir çok sitede yukarıdaki permission’un yeterli olduğu yazsa da, telefon açılışının dinlenmesinde kullanılacak izin için aslında bu tek başına yeterli değildir.  Benim yarım gün boyunca boşuna uğraşmamın sebeblerinden bir tanesi olan bu permissionun yanına aşağıdakilerin de tamamını eklemediğiniz sürece, (Android 1.5 ve 2.0′da test edilmiştir) almak istediğimiz broadcast yayınını asla alamayacağız. Ekleyeceğimiz extra permission’lar.

<uses-permission android:name=”android.permission.ACCESS_LOCATION” />
<uses-permission android:name=”android.permission.ACCESS_GPS” />
<uses-permission android:name=”android.permission.ACCESS_ASSISTED_GPS” />
<uses-permission android:name=”android.permission.ACCESS_CELL_ID” />

Ne alaka? diyebilirsiniz.. fakat uzuuun araştırmalarım sonucunda ben internette çözüm yolu olarak sadece bunun işe yaradığını gördüm. (Extra not: gerçek bir telefona bu programı kurmaya çalıştığımda, bu extra izinlerin install ekranındaki bilgilendirmede karşıma çıkmadığını gördüm. Bunun manası, “ben aslında bu özellikleri kullanmıyorum” demek olsa da, bize neden bu izinleri aldırttığını henüz çözebilmiş değilim.)

Sıra geldi, filtreleyerek aldığımız broadcastımızın çalışacağı class’ı oluşturmaya.

public class StartupIntentReceiver extends  BroadcastReceiver  {
@Override
public void onReceive(Context context, Intent intent) {
Intent startupIntent = new Intent(context, RunMfa.class);
startupIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startupIntent);
}
}

Filtreleyerek aldığımız broadcastımız bu classın çalışmasına neden oldu. Ve bizde Intent ile RunMfa activity’sinin çalışmasını söylüyoruz. (Mesela bu programımızın ana ekranı olabilir..)

public class RunMfa extends Activity{
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.serialTV);
tv.setText(“Run start up ile calisti -by Mustafa Ferhan Akman”);
}
}

AndroidManifest.xml’in son hali:

<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android“
package=”com.androidprogramcisi” android:versionCode=”1″  android:versionName=”1.0″>

<uses-permission android:name=”android.permission.RECEIVE_BOOT_COMPLETED” />
<uses-permission android:name=”android.permission.ACCESS_LOCATION” />
<uses-permission android:name=”android.permission.ACCESS_GPS” />
<uses-permission android:name=”android.permission.ACCESS_ASSISTED_GPS” />
<uses-permission android:name=”android.permission.ACCESS_CELL_ID” />

<application android:icon=”@drawable/icon”   android:label=”@string/app_name”
<activity android:name=”.RunMfa” android:label=”@string/app_name”></activity>

<receiver android:name=”.StartupIntentReceiver”>
<intent-filter>
<action android:name=”android.intent.action.BOOT_COMPLETED” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion=”3″ />
</manifest>

inşaallah benim gibi uzun uzun araştırmak zorunda kalmadan bu dökümana ulaşırsınız diyerek yazımı sonlandırıyorum..
Yazan: Mustafa Ferhan Akman http://ferhanakman.wordpress.com/