13 Şubat 2012 Pazartesi

WP7 SOAP Web Service with Custom Headers

Evet, page rank lazim gençler. İngilizce yazalım, sevgili yabancı arkadaşlarımız da algılasınlar. Hem zaten bizler zeki insanlarız, İngilizce'de nedir yani?


Fellows! Today I am going to show you how you can add your custom headers to your web service requests. I have searched for it for a while in the past, lost my hope, forced my customers to write a new web service with a naive authentication. 


But the thing we are going to accomplish is not easy at all.


<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<AuthHeader xmlns="http://tempuri.org/">
<Username>string</Username>
<Password>string</Password>
</AuthHeader>
</soap:Header>
<soap:Body>
<BolgeSorgu xmlns="http://tempuri.org/" />
</soap:Body>
</soap:Envelope>


In here we see the soap envelope that we are going to send to get a response. I added the web service with Service References -> Add.

ASP.NET Ajax & Linq to SQL

Merhabalar.
Bugun ASP.NET ile birlikte gelen ScriptManager Extension’u kullanarak, Web sayfamizda, Ajax’i etkin hale getirerek, sadece belirtecegimiz bir alanin dinamik olarak guncellenmesini saglayacagiz.
Ajax (Asynchronous JavaScript and XML) web applicationlarimizda XMLHttpRequest objesini kullanarak, veri transferini saglar. Ne kadar XML yazsada, XML kullanimi gerekli degildir, ve Requestlerimiz de asenkronik olmak zorunda da degil.
XMLHttpRequest (XHR) bir API yani Application Programming Interface olmakla beraber Web Browser Scripting Languages (WBSL) lerde bulunur, JavaScript’de buna dahildir. Calisma prensibi, Web Server’a HTTP ve ya HTTPS Requestleri gonderip, yaniti yani Response’i Script’in icine yuklemektir.
PHP’den Ajax’a asina olanlar hatirlarlar,
if (typeof XMLHttpRequest == "undefined")
XMLHttpRequest = function () {
try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); }
catch (e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); }
catch (e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) {}
//Microsoft.XMLHTTP points to Msxml2.XMLHTTP.3.0 and is redundant
throw new Error("This browser does not support XMLHttpRequest.");
}
Bu ve bunun gibi scriptleri kullanmak zorunda kaldigimizi. Fakat ASP.NET’de kullanilan ScriptManger ogesini kullanarak (Bu oge, kendisini kullanacagimiz yerden once sayfaya eklenmelidir, server=”runat” iceren bir HTML Form icine konulmalidir.) cok rahat bir sekilde, Ajax kullanmamizi sagliyor. Tabi isteyenler hala eski yontemi kullanabilir.
Ajax Eklentimizi’ Toolbox’dan tutup, formumuzun icine surukluyoruz.

12 Şubat 2012 Pazar

WP7 Picasa Upload

Yeni yazi dizimizde (cok cool bir insan gibi hissetmek (aslinda coolum selam.)) telefonumuzdan picasa'ya resim upload edecegiz. Benim gibi bir bardak sütü önünüze alıp, Visual Studio'nuzu açın. Arkadan MFÖ çalsın, yoksa  Exception veriyor.


Projeyi açalım, adı PicasaUploader olsun. Sayfaya 1 adet Button koyalım, adı uploadBtn, content'ı "Fotoğraf Çek" olsun.


Blend ile sayfamızı açalım, 8gb ramli i7 makinamda, Visual Studio nedense designer'da çok yavaş. Evet.


private void uploadBtn_Click(object sender, RoutedEventArgs e)
{
     Microsoft.Phone.Tasks.CameraCaptureTask task = new Microsoft.Phone.Tasks.CameraCaptureTask();
     task.Completed += new EventHandler<Microsoft.Phone.Tasks.PhotoResult>(task_Completed);
     task.Show();
}
Evet, button'a bastığımızda, CameraCaptureTask açılıyor. Task bittiğinde event handler yoluyla task_Complete fonksiyonuna gidiyor. Event Handler'ı verdikten sonra task'ı çalıştırıyoruz.


Şimdi, kod yazacağımız yer completed eventı.


Eğer kullanıcı, resim çekmiş yada seçmiş, ardından OK tuşuna basmışsa, upload yapıcaz.


if (e.TaskResult == Microsoft.Phone.Tasks.TaskResult.OK)
{

}

İşte o IF ifadesi.

Amacımız çekilen resmi byte arrayine çevirmek, stream'e yani.

BitmapImage bmpl = new BitmapImage();
bmpl.SetSource(e.ChosenPhoto);
WriteableBitmap wb = new WriteableBitmap(bmpl);
MemoryStream memSt = new MemoryStream();
wb.SaveJpeg(memSt, 1024, 768, 0, 70);
Sırasıyla, bitmap image yaratıyoruz, çekilen resmi içine atıyoruz, bu bitmapten writablebitmap yaratıyoruz, bu obje içeriğini bir stream'e yazabiliyor, o stream ise MemoryStream'i.

Neyse, bir şekilde resmi, stream'e çevirmeyi başardık. 
Şimdi yapmamız gereken şey, bir rest client bulmak.

RestSharp gayet güzel, kullanışlı. Buyrun: http://restsharp.org/
var client = new RestClient("https://www.google.com");
var request = new RestRequest("accounts/CLientLogin"Method.POST);
request.AddParameter("service""lh2"ParameterType.GetOrPost);
request.AddParameter("accountType""google"ParameterType.GetOrPost);
request.AddParameter("source""exampleCo-exampleApp-1"ParameterType.GetOrPost);
request.AddParameter("Email""upload@hebele.me"ParameterType.GetOrPost);
request.AddParameter("Passwd""91sa99113d"ParameterType.GetOrPost);

Buradan account bilgilerinizi giriyorsunuz, o account'un picasa hesabına upload edeceğiz. Albüm ID vermek mümkün, default albüme atmak ta mümkün. Lütfen mail hesabıma girmeyin, kredi kart bilgilerimin hepsi onda.

Source kısmı ne işe yarıyor çok merak ediyorum. Application adı sanki ama, laylaylom koysam olcak gibi.

Belli bir aşamada bu stream'i byte array'e çevirmek gerek tabi.

byte[] array = new byte[memSt.Length];
array = memSt.ToArray();
Onu da bu şekilde yapabiliyoruz. Kod geliyor!

WP7 Facebook Client Side Flow

Evet. Daron Yondem'in blogunda gösterdiği, wp7 uygulamalarınıza facebook desteği eklemek için Visual Studio'ya indirebileceğiniz eklentiler....

diye bir cümle kuruyordum fakat araya giren baş ağrısıyla yazıya 40 dakika sonra devam etmek zorunda kaldım.

Şimdi arkadaşlar, görev basit, WP7 ile Facebook post yapacağız. Malzemeler, bir adet Visual Studio, bir adet WP7sdk, bir adet internet bağlantısı, bir adet emulatör.

Şimdi sevgili, içinde Windows Phone 7 uygulama aşkını barındıran yazılımcı arkadaşım. Facebook'tan bir application yaratıyorsun. Bu adresten yapabilirsin onu: http://developers.facebook.com/

Hizmette sinir tanimiyoruz. Maksat insanlar windows phone kullansin, ablalarina windows phone alsin doğum günü hediyesi olarak. Neyse


  1. appID
  2. redirectUrl
adlarında iki değişken yaratalım sevgili WP7 severler. ikiside constant, ikiside string olsun, şimdi yürek yırtılır tey tey.

Ekrana bir adet WebBrowser kontrolü sürükleyip bırakın. Ben, adini feriha koydum ama siz webBrowser1 koyabilirsiniz.


Evet koda bakalim. appId miz var, bu facebook uygulamamizin idsi. Onun dışında facebook login için adresimiz var, bu da sabit bir adres.

Bizi ilgilendirek 1 event var, o da webBrowser1'in yani ferihanın başka bir sayfaya geçtiğinde elimize ulaşan html içeriği.

Onun dışında Initialize kısmında, sayfa yüklendiğinde, internet varsa, ferihayı login URLsine yolluyoruz.

11 Şubat 2012 Cumartesi

WP7 ItemsSource ile ListBox doldurmaca

İngilizce yazmıştım bu yazıyı sevgili okur, bi yerden Türkçe yazmaya başlamak lazım dedim. Türkçe güzel dil.
Kısa ve öz kesicem, ekran görüntüleri zaten hazırdı. Oku öğren, aklında soru olmasın. Olursa sor ama tamam mı şeker.


Şimdi diyelim ki, emülatörümüzde elimizdeki katalogdan, insanların isimlerini ve telefon numaralarını göstereceğiz ve her bir kayda tıklandığında numara aranacak.


İlk başta insanın telefon numarasını ve adını gösterebileceğimiz bir veri türüne ihtiyacımız var. Kendisi:




        public class Member
        {
            public string Name { get; set; }
            public string Number { get; set; }
        }
İşte burada. Member nesnesini tutacak bir generic list yaratıp, o listeyi doldurduktan sonra, Listemizin ItemsSource propertysine atadıktan sonra, tamam nerdeyse.













Kinect Mouse

Eskilerden, ingilizce bir postum geliyor.


My first post will be about Kinect. As you know Microsoft has released a beta sdk for Windows use of Kinect. Which can be downloaded via this link.


The SDK is beta, maybe that is the reason that, we can see some ​inconsistency in the positions we get. You can see, your leg position is changing, even if you don't move it at all.


So let's start with building something.


Let's start with building a WPF application;






That was the hardest part :D


Now, if you installed the SDK, you have to add some dlls to your solution. To accomplish, right click to references and click "Add Reference".


The DLL files you have to add are:


Microsoft.Research.Kinect.dll;
Coding4Fun.Kinect.dll;


Coding4Fun contains an extension class, which helps us to scale the environment and get positions as pixels. You can find it here.


After you add required dlls (btw Kinect dll can be found in Program Files (x86)\Microsoft Research KinectSDK\) now it's time to add namespace directives:


using Microsoft.Research.Kinect.Nui;
using Coding4Fun.Kinect.Wpf;


Now, to start, we initialize a Kinect Runtime, which MUST be disposed when the user closes the application, unless if the user wants to see the red laser light coming from the depth camera all the time. :D

To initialize a runtime we type;




Runtime nuiRuntime;


public MainWindow()


{


    InitializeComponent();


    nuiRuntime = new Runtime();


    this.Closed += (sender, e) => nuiRuntime.Uninitialize();


}


As you know, we have depth sensor, rgb camera. We can start the peripheral in different ways. We can get pictures, video frames, or just skeleton positions, which is the only thing we need for kinectMouse.


To get skeleton positions, we add event handler, and then initialize nuiRuntime to get skeleton positions. Our code will look like:







Now, in SkeletonFrameReady event, arguement e holds skeletonframes. SkeletonFrames contains SkeletonData which has attributes such as:
TrackingState
TrackingID
Joints
Position




TrackingState must be tracked, we are going to move the mouse only if someone stands front of it. Tracking ID is the unique id given to each different skeleton. Joints holds positions for joints, and position is the general skeleton position.