19 Aralık 2013 Perşembe

Microsoft Teknolojileri Etkinligindeki Sunumum


Bugün bölümdeki msp arkadaşlarımızın düzenlediği etkinlikte ben de Kinect oturumum ile katkı vermeye çalıştım. Aslında bu etkinliğin amacı Teknopark'ta haftasonu ERU ACM, Erciyes Teknopark ve Microsoft'un ortaklaşa düzenleyeceği en uzun gecede yapılacak hackhaton etkinliğine gitmeden Windows Phone uygulama geliştirmeye giriş yapmaktı, bu açıdan Kinect biraz ekstra oldu :) umarım faydalı olmuştur. Kod yazmadık belki ama örnek projeleri inceleme fırsatımız oldu. Etkinliğe katılan herkes en azından basit düzeyde Kinect ile uygulama (hatta oyun :)) yazabilir duruma geldi diye düşünüyorum. Etkinlikte anlatmaya çalıştığım (hazır) uygulamalara tekrar göz atmak isterseniz diye linklerini ekliyorum:

Eklem açılarına ulaşım: http://www.uerkal.com/post.aspx?pid=107
İskelet yapısına ulaşım: http://www.uerkal.com/post.aspx?pid=96
Temel Ses Tanıma İşlemleri: Speech Basics

Hackhaton'da görüşmek dileğiyle :)

5 Aralık 2013 Perşembe

Socket Programming Using Boost Asio

Boost birçok uygulamada tercih edilen oldukça kullanışlı bir kütüphane.
Asio ise network uygulamalarında kullanmak için geliştirilmiş Boost'un alt kütüphanesi diyebiliriz. Daha önce Winsock Kullanarak C++ ile Socket Programlama başlığında Boost'un kurulumunun uzun olduğu ve Intelisense'in saçmalamasına sebep olduğunu bahsetmiştim. Yeni versiyonlarla (1.55.0) bahsettiğim ikinci sorun düzelmiş gibi görünüyor ancak Intellisense'in tepkisi yine biraz yavaş.

Öncelikle Windows 8 ve Visual Studio 2012 yüklü bir makinede Boost kurulumunun nasıl gerçekleştirildiğine bakalım:

Video sonunda oluşturulan konfigüre edilmiş projenin bir kopyasını saklamanızı tavsiye ederim. Böylece yeni projeler için tekrar nasıl konfigüre ediyorduk diye düşünmek zorunda kalmazsınız.

Kod kısmına geldiğimizde ise elimizde bir client bir de server var. Tahmin edeceğiniz üzere server'dan gelecek veriyi client dinleyecek. Bunları yaparken senkron bir UDP bağlantısı kullanacak. Temel bir uygulama olması adına ben yalnızca aldığım veriyi ekrana yazdırmayı tercih ettim.

Kodlaru şu şekilde: (Yorum satırlarını okursanız anlaşılır olacağını düşünüyorum.)

SyncUDPServer.cpp


SyncUDPClient.cpp

Burdaki örneği alıp Visual Studio'da compile ettiğinizde client'a string'in gelmediğini farkedeceksiniz. Bunun sebebi client'ın komut satırı parametresi olarak (hatırlatma: argc, argv) host'un adresini istemesi. Bende iki program da aynı makinede çalıştığı için host'umun adresi "localhost".

"localhost" parametresini gönderirken ister komut satırından;
SyncUDPClient.exe localhost yazabilir parametreyi elle gönderebilirsiniz.
İsterseniz proje özelliklerinde küçük bir konfigürasyonla bu işi halledebilirsiniz:


Böylece Boost Asio ile temel düzeyde, senkron çalışan, UDP üzerinden haberleşen sender ve receiver fonksiyonları yazmış olduk.