Archive for the ‘.NET’ Category

Mobil Programlama Kitapları Serisi

Tuesday, April 26th, 2011

mobil programlama kitabı

Volkan Ataseverin Mobil Programlama kitabı kitabın tanıtımını yazarın kendi makalesinden iletmekteyiz .

Kitabımın tanıtımına geçmeden önce bu kitap hakkında bir kaç söz söylemek istemekteyim. Öncelikle büyük bir emek harcanan bu kitap daha iyisi yapılana kadar sektörde öncü konumda olacaktır. Mobil Programlama konusunda Türkiye’de yayınlanan en kapsamlı kitaplardan biridir. Mobil programlamayla ilgilenen herkesin başucu kitabı olacağı iddası içerisinde olduğumu, kitabın çıkacağı duyurusunu yaptığımda da dile getirmiştim. Ben Volkan Atasever ve değerli Kadir Çamoğlu ile birlikte yazdığımız bu kitap düşündüğümüzden daha büyük bir eser haline geldi. Kitabı yazmaya başlarken koyduğumuz 300 sayfa hedefi kitabı bitirdiğimizde 500 sayfa olarak planlananın da ötesine geçti. Siz okuyanlarında yorumlarını her daim beklemekteyim. Resmi olarak 7.Kasım.2010 tarihinde kitabımız raflardaki yerini alacak.

Kitabın yayınevi tanıtımı için: http://kodlab.com/#/detay&kitap=mobilprogramlama

Kitabın Basın Bülteni için: http://kodlab.com/#/detay&kitap=mobilprogramlama linkinden sayfanın aşağısında basın bültenini bilgisayarınıza indirebilirsiniz.

Kitabın iç sayfalarının listesi için: http://kodlab.com/#/detay&kitap=mobilprogramlama linkinden sayfanın aşağısında iç sayfaların listesini bilgisayarınıza indirebilirsiniz.

Eser Hakkında Tanıtım:

Mobil Dünyanın Kontrolünü Elinize Alın!

Bu kitap ile mobil programlamayı adım adım uygulamalı olarak öğreneceksiniz.

Kitap, temel seviyede programlama bilgisi olan herkese hitap etmektedir. Mobil dünya ve programlama konseptinden, “Merhaba Mobil” uygulamasıyla başlayarak, performanslı uygulama projeleri ile biten bu kitap ile adım adım ilerleyerek mobil programlama alanında uzman olacaksınız.

Kitapta anlatılan Mobil Programlama teknikleri C# ve VB.NET dilleri ile hazırlanılarak yapılmıştır.

Mobil programlama kitabında aşağıdaki konuları öğreneceksiniz:

• Mobil Cihazlar ve Teknolojiler
• Dosya ve Dizin Okuma/Yazma İşlemleri
• XML Dosyalarıyla Çalışmak
• XML Web Servisleriyle Çalışmak
• ADO.NET Ve Dataset
• Visual Studio 2008
• Emülatörlerle ve Cihazlarla Çalışmak
• SQL Server Compact Edition
• Grafik Programlama
• .NET Compact Framework
• Mobil Uygulamalar İçin Arayüz Geliştirmek
• SMS, E-posta Göndermek
• Performanslı Uygulamalar Geliştirmek
• Test ve Hata Ayıklamak
• Uygulama Örnekleri

Kitap Hakkında:

500 Sayfa
ISBN: 978.605.4205.370
Boyut: 15 x 21
1. Baskı

Java ile mobil programlama

Friday, September 24th, 2010

Arkadaşlar yaklaşık 2 ay gibi bir süre mobil programlama ekibi olarak sizlerden uzak kaldık ama artık geri dönmek ve yeni makalelerle mobilprogramlama.com’da birlikte olmak için geri döndük özellikle java ile mobil programlama alanına bir süre ağırlık vermeyi düşünüyoruz ama çok yetersiz kaynak olduğundan java ile mobil programlama konusunda kaynak sıkıntımız var sizlerinde desteklerini bekliyorum mobil programlama,java ile mobil programlama,.Net ile mobil programlama ile ilgili makalelerinizi,sitelerinizi sitemizde tanıtmak bizlere mutluluk verecektir comment olarak istek öneri desteklerinizi bekliyoruz.

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

Monday, 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

Wednesday, 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 …

.Net Compact Framework 3.5 – System.IO.Compression

Saturday, 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