18 Nisan 2013 Perşembe

Transfer Images From SkyDrive Folders To Local Folders

Görüntüleri SkyDrive Klasörlerinden Yerel Klasörlere Taşıma

Önceki yayından günümüze geçen süre içerisinde bir Windows Store uygulaması olan LifeLoggingCC yazılımının masaüstü sürümünü geliştirdim. LifeLoggingCCDesktop olarak adlandırdığım bu yazılım Windows 7 ve Windows 8 masaüstünde çalışmakta ve yerel klasörlere erişebildiği için doğrudan SkyDrive klasörüne kayıt yapabilmektedir. Kamera görüntüsü kaydeden yazılımlar genellikle kamera görüntüsünü önce ekrandaki bir "image" nesnesine yansıtmakta ve bu nesne üzerinden kayıt gerçekleştirmektedirler. Bu durum kullanılan API'lere göre değişen çeşitli sorunlara neden olmaktadır. Bazı durumlarda "image" üzerin başka bir pencere geldiğinde "overlay" gerçekleşmekte ve kaydedilen resimde üstteki pencereye ait parça da görünmekte. Bazı durumda da "image" 'ı içeren pencere küçültüldüğünde görüntü alınamamakta. Bu nedenle LifeLoggingCCdesktop'u geliştirirken image kullanmayan bir çözüm aradım ve OpenCV'yi keşfettim. OpenCV'yi .Net ortamında kullanmak amacıyla EMGU.CV wrapper'inı kullandım. Sonuçta LifeLoggingSC şeklinde çalışan bir uygulama ortaya çıktı.



Bu arada LifeLoggingCC yazılımını LifeLoggingCCPhone'da olduğu gibi görüntüleri doğrudan SkyDrive'a "upload" yapacak şekilde yeniden düzenledim. Bu amaçla Live SDK 5.3 kullandım.

 "Capture" Ekranı

"Images" Ekranı

"Upload" Ekranı

4 Nisan'daki http://personalinformationsystems.blogspot.com/2013/04/data-gathering-from-lifelogging-devices.html sayfasında LifeLogging yazılımlarıyla oluşturulan ve SkyDrive'da biriken görüntülerin yerel klasörlere aktarılması amacıyla LifeLoggingTransporter  isimli bir uygulamanın geliştirilmesi gerektiğini belirtmiştim. Geçen süre içerisinde LifeLoggingTransporter programını tamamladım.

Program kullanıcıya üç seçenek sunmaktadır. Bunlardan birincisi LifeLoggingSC ve LifeLoggingCCDesktop uygulamalarının oluşturduğu ve SkyDrive altındaki Resimler\LifeLogging klasörüne kaydettikleri ekran görüntüleri ve kamera görüntülerinin buradan alınarak yerel Resimlerim\LifeLogging klasörüne taşınmasını sağlıyor. İkinci seçenek LifeLoggingCC ve LifeLoggingCCPhone Windows Store uygulamalarının oluşturduğu ve doğrudan SkyDrive'a "upload" yaptıkları kamera görüntülerinin yerel klasörlere taşınmasını sağlamaktadır. Üçüncü seçenek ise giyilebilir yaşam günlüğü kameralarının görüntülerinin yerel klasörlere aktarılması amacıyla rezerv edilmiştir.


 "Seçenekler" Ekranı


"Birinci Aşama" Ekranı


"İkinci Aşama" Ekranı

Taşıma işlemleri iki aşamadan oluşmaktadır. Birinci aşamada SkyDrive klasörlerindeki görüntüler belirlenmekte ve kullanıcıya raporlanmakta, ikinci aşamada ise görüntüler yerel klasöre aktarılarak SkyDrive'dan kaldırılmaktadır.

Bu düzenlemeler sonucunda proje kapsamında ihtiyaç duyulan yazılımların tümü temel işlevlerini yerine getirecek düzeyde geliştirilmiş oldu. Geliştirilen yazılımların genel durumu aşağıdaki tabloda verilmiştir:




Ortamlar
Programlar
 Kullanılan API
Windows 7
Windows 8 Masaüstü
Windows 8 Store
Windows Phone 8
LifeLoggingSC
.Net 4.0
X
X
1
2
LifeLoggingCC
.Net 4.5 & Live SDK 5.3
X
LifeLoggingCCDesktop
.Net 4.0
EMGU SDK (.Net Wrapper for OpenCV)
X
X
3
LifeLoggingCCPhone
.Net Phone 8 SDK & Live SDK 5.3
X
LifeLoggingTransporter
.Net 4.0
X
X
AllMyListsLE
.Net 4.0
X
X
AllMyListsMetro (Tercihe bağlı)
.Net 4.5
X
1 Windows 8 Store uygulamalarının ekran görüntüsü almaları OS düzeyinde engellenmiştir.
2 Windows Phone 8 uygulamalarının ekran görüntüsü almaları OS düzeyinde engellenmiştir.
3 LifeLoggingCCDesktop Windows 8 masaüstünde çalıştırıldıktan sonra Windows Store uygulamalarına geçildiğinde de ekran kaydetmeye devam etmektedir.

Bundan sonraki aşamada AllMyListsLE yazılımına ağırlık verilecektir. Gerçek görüntüler ile denemeler gerçekleştirilecek, yazılıma Öğrenme Deneyimlerini Betimleme Sihirbazı eklenecek, yazılımın öğrenme deneyimlerinin kaydedilmesi, planlanması ve değerlendirilmesi amacıyla kullanımı araştırılacaktır.

LifeLogging yazılımlarında ise çok kameralı bilgisayarlarda kamera seçimi olanağı sağlanacaktır. Görüntülere konum ve IP bilgisi gömülmesi araştırılacaktır. Ayrıca tüm yazılımların görsel yapısı üzerinde çalışılacaktır. Projenin uygulama aşamasına kadar geçecek sürede yazılımların ayrıntılı kurulum ve kullanım testleri gerçekleştirilecek, dokümantasyonu tamamlanacaktır.

4 Nisan 2013 Perşembe

Data Gathering from LifeLogging Devices with the Personal Cloud Storage Services

Yaşamgünlüğü Cihazlarından Bulut Depolama Hizmetleri İle Veri Toplama

"Yaşam Boyu Öğrenme Deneyimlerinin Yönetimi Amacıyla Bir Dijital Yaşam Günlüğü Sisteminin Geliştirilmesi ve Uygulanması" projesinde kullanıcıların yaşamgünlüğü cihazlarını kullanarak gerçekleştirdikleri günlük kayıtlarının  depolanması ve biraraya getirilmesi süreci yavaş yavaş olgunlaşmaya başladı. 

Proje kapsamında kullanıcıların tüm bilgisayarlarından 30 saniyede bir ekran görüntülerinin alınması, cep bilgisayarları ve taşınabilir yaşam günlüğü kameralarıyla da 30 saniyede bir fotoğraf çekilmesi öngörülmüştü. Gelinen aşamada aygıtların görüntüleri Microsoft SkyDrive bulut depolama hizmetini kullanarak biraraya getirmeleri sağlandı. 

Ekran görüntüsü kaydetmek amacıyla kullanılan LifeLoggingSC ve LifeLoggingSCWin7 yazılımları görüntüleri bilgisayardaki SkyDrive klasörü altındaki LifeLogging klasöründe oluşturulan yıl, ay, gün tarihli klasörlerin içerisinde açtıkları kendilerini tanımlayan klasörlere kaydetmektedirler. 

Fotoğraf çekmek amacıyla kullanılan LifeLoggingCCPhone yazılımı ise görüntüleri kullanıcının http://skydrive.live.com sitesine SkyDrive uygulamasını kullanmadan kendisi yüklemektedir. Kullanılan Microsoft Live SDK 5.3 ile kullanıcı SkyDrive'da kendisine ait oturum açabilmektedir. Bu aşamada henüz sadece SkyDrive'in bilinen klasörlerine kayıt yapılabilmektedir. Sorun çözüldüğünde resimler SkyDrive\Resimler\LifeLogging klasörü altında yıl, ay, gün, cihaz klasörleri altına kaydedilecektir.

Windows 8 uygulaması olarak geliştirilen LifeLoggingCC ise şu anda kullanıcının Resimlerim\LifeLogging klasörüne kayıt yapmaktadır, ama bu yazılımın da görüntüleri online olarak SkyDrive sitesine yüklemesi sağlanacaktır. Ayrıca Windows 7 ve 8 altında masaüstü uygulaması olarak çalışacak bir LifeLoggingCCWin7 programı da esneklik sağlayacaktır. "CC" programları şu aşamada sadece bir kamerayı kullanabilmektedirler. Programlara cihazdaki kullanılabilir bütün iç ve dış kameraların arasından seçim yapma olanağı eklenmesi gerekmektedir.

Gerçekleştirilen tasarımın daha genel amaçlı olması amacıyla ekran kaydedici ve kamera görüntüsü kaydedici cihaz sayısında bir kısıtlama yapılmamıştır.  Kullanıcılar bilgisayarlarını ve telefonlarını uygun bir şekilde isimlendirmeleri koşuluyla sınırsız cihaz tanımlayabilirler. Bu aşamada taşınabilir yaşam günlüğü kamerası henüz temin edilmemiş olduğundan dolayı bu aygıtların nasıl isimlendirileceği konusunda bir deneyim bulunmamaktadır.

Diğer taraftan aynı bilgisayarları birden fazla kullanıcının kullanılması durumunda, kullanıcıların birbirlerinden ayırt edilebilmeleri için her kullanıcının bilgisayarı kendisine ait ayrı bir oturumda kullanması gerekmektedir. Şu anda LifeLoggingSC ve LifeLoggingSCWin7 yazılımları cihaz adı ve kullanıcı adına göre kayıt yapmaktadırlar.



Bu yöntemle Memutlu-Fujitsu bilgisayarını kullanan Memutlu kullanıcısının 4 Nisan 2013 tarihine ait ekran görüntüleri
C:\Users\memutlu\SkyDrive\Resimler\LifeLogging\2013\2013.04\2013.04.04\MEMUTLU-FUJITSU-ScreenCapture
klasörüne kaydedilmektedir. SkyDrive uygulaması bu dosyaları kendiliğinden http://skydrive.live.com bulutuna yüklemekte ve kullanıcının SkyDrive uygulaması kurulu olan bütün bilgisayarlarına güncellemektedir. 

Denemelerde kullanmakta olduğum ve kullanmayı planladığım cihazlar için belirlediğim cihaz klasörlerinin isimleri aşağıdaki gibi olacaktır.


LifeLoggingSC & LifeLoggingSCWin7
MEMUTLU-LENOVO-ScreenCapture
MEMUTLU-FUJITSU-ScreenCapture
MEMUTLU-MACBOOK-ScreenCapture
MEMUTLU-HP-ScreenCapture
MEMUTLU-SAMSUNG-ScreenCapture
LifeLoggingCCPhone
MEMUTLU-NOKIA-CameraCapture
LifeLoggingCC & LifeLoggingCCWin7
MEMUTLU-LENOVO-CameraCapture
MEMUTLU-FUJITSU-CameraCapture
MEMUTLU-MACBOOK-CameraCapture
MEMUTLU-HP-CameraCapture
MEMUTLU-SAMSUNG-CameraCapture
            Autographer
                        MEMUTLU-AUTOGRAPH-CameraCapture
            Memoto
                        MEMUTLU-MEMOTO-CameraCapture


Bütün cihazların görüntü göndermek amacıyla bulut kullanmaları önemli miktarda veri trafiğine yol açacaktır. Herhangi bir anda bir cihazın kullanılması ve günde ortalama 16 saat aktif olunması durumunda günlük 1 GB mertebesinde veri aktarımı oluşacaktır. Sistemin optimizasyonunu daha sonraki aşamalarda ele almayı planlıyorum. Bu amaçla akla gelen  iyileştirmelerden birisi belirli bir limit içerisinde aynı içeriğe sahip görüntülerin ayıklanmasıdır. 

AllMyListsLE yazılımında yeni yaşam günlüğü listesi olarak SkyDrive\LifeLogging klasörü tanımlandığında sorunsuz çalışmaktadır. Dolayısıyla sistem, veriler sürekli SkyDrive'da tutularak kullanılabileceği gibi, SkyDrive\LifeLogging klasörünün içeriğini düzenli aralıklarla yerel diske kopyalanarak da kullanılabilir. Bu durumda görüntüler SkyDrive'dan silinerek SkyDrive'ın şu andaki kapasitesi olan 7 GB limiti altında kalınabilir. Veriler sürekli SkyDrive'da tutulacak ise yıllık 100 GB için 50$ ödenerek bu işlem gerçekleştirilebilir. Günümüzde 1 TB kapasitesindeki taşınabilir disklerin fiyatlarının 100$ civarında olduğu düşünülürse SkyDrive'ın sadece aktarım için kullanılması, görüntülerin büyük kapasiteli taşınabilir disklerde tutulması daha çok tercih edilebilir. Bu amaçla LifeLoggingTransporter isimli bir aktarım programı yazılmasında yarar vardır. LifeLoggingTransporter hem giyilebilir yaşam günlüğü kamerasına ait görüntülerin hem SkyDrive'ın kökündeki kamera görüntülerinin hem de SkyDrive'daki ekran görüntülerinin kullanım ortamına aktarımını gerçekleştirebilir. Bu yazılım bağımsız bir yazılım olabileceği gibi AllMyListsLE içerisinde de yeralabilir.

"SC" yazılımlarının Microsoft SkyDrive yerine Google Drive ya da DropBox kullanmalarını sağlamak son derece kolaydır. Bu amaçla yazılımlara bir "ayar" ekleyerek masaüstü Google Drive ya da masaüstü DropBox uygulamalarının klasörlerini kullanmalarını sağlamak yeterli olacaktır. "CC" yazılımlarında ise "online upload" amacıyla Google Drive SDK ve DropBox SDK'larının kullanılması gerekmektedir. Bu nedenle "CC" yazılımlarının GoogleDrive ve DropBox bulutlarına kayıt yapabilmelerini bu proje kapsamının dışında tutuyorum.