29 Ocak 2013 Salı

Management of Learning Experiences with Lifelogging

Yaşam Günlüğü ile Öğrenme Deneyimlerinin Yönetimi

Ocak ayı içerisinde LifeLoggingSC, LifeLoggingCC ve LifeLoggingCCPhone yazılımlarını geliştirmeye devam ederken bir yandan da bu yazılımlarla elde edilen görüntülerin değerlendirildiği LifeLoggingLE yazılımını da tasarlamaya başladım.

LifeLoggingLe yazılımı kullanıcının kamera görüntüsü ve ekran görüntülerine ait kayıtlardan yararlanarak yaşamış olduğu öğrenme deneyimlerine ait etkinlik, olay ve öykülere ait not, yorum ve gözlemlerini girmesine ve daha sonra bunları inceleyerek değerlendirebilmesine  olanak sağlayan bir yazılımdır. 

Ekran ve kamera görüntüleri kullanıcının yaşadığı öğrenme deneyimlerine ilişkin birer hatırlatıcı (hatırlamayı destekleyici) öğelerdir. Bu görüntüler  etkinlik, olay ve öykülere ait birer içerik (content) olmayıp, etkinlik, olay ve öykülere ait birer bağlam (context) durumundadırlar.

Veritabanı seçimi

Daha önceleri Windows Phone 7.1 için yazdığım AllMyListsPhone programında LINQ to SQL kullanmıştım. Bu nedenle LifeLoggingLE için de .NET 4.5 üzerinde SQL LocalDB ve LINQ to SQL kullanmayı planladım. Ama daha sonra SQL Local DB için SQL Server Express kurulması gerektiği, bu yazılımın da120 MB olduğu ortaya çıktı. Kolay taşınabilirlik için SQL CE 4.0 kullanmaya karar verdim. SQL CE 4.0 64 bit için hem geliştirici hem de kullanıcı için en fazla 2.5 MB büyüklüğünde bir yükleme gerektiriyor. Fakat incelemelerim sonucunda SQL CE 4.0 üzerinde LINQ to SQL kullanılamadığı ortaya çıktı. En son SQL CE 3.5 SP2'de bu özelliğin olduğunu (AllMyListsPhone'da bunu kullanmıştım) ve SQL CE 4.0'a taşınmadığını belirledim. Sonuç olarak LifeLoggingLE yazılımını WPF 4.5 üzerinde ve SQL CE 4.0 veritabanını geleneksel System.Data.SqlServerCE API'si kullanarak yazmaya başladım. 

Bu konuda http://erikej.blogspot.com/2011/01/comparison-of-sql-server-compact-4-and.htmlhttp://erikej.blogspot.com/2012/04/using-linq-to-sql-with-sql-server.html ve http://blogs.msdn.com/b/jerrynixon/archive/2012/02/26/sql-express-v-localdb-v-sql-compact-edition.aspx kaynaklarına başvurulabilir.

SQL CE 4.0 ortamında LINQ to SQL kullanmak için SQL Server Compact Toolbox isimli bir Extension bulunmakta  http://visualstudiogallery.msdn.microsoft.com/0e313dfd-be80-4afb-b5e9-6e74d369f7a1. Bunları kullanmak yerine Microsoft'un bir çözüm geliştirmesini bekleyeceğim.

Ekran tasarımı

Programda üst panelde "Capture" klasörlerinden gelen görüntülere ait bant bulunacak, ortada seçili görüntünün büyük görüntüsüne yer verilecek, alt bantta ise seçili resim(lere) yönelik olarak veritabanına girilecek yorumlar için bir bant bulunacaktır. En altta ise bir zaman çizgisi şeklinde yıl-ay-gün bilgisinin seçilebildiği bir takvime yer verilecektir. LifeLoggingLE programında klasörlerden görüntüleri alarak bir bant şeklinde görüntülemek amacıyla Microsoft PhotoStore Sample'dan yararlandım (http://code.msdn.microsoft.com/windowsdesktop/Photo-Store-Demo-2777188e). 



Yaşam günlüğü görüntüsü yakalama yazılımlarından elde edilen görüntüler, bu yazılımların çalıştığı bilgisayarda bu amaç için belirlenmiş bir klasörün altında aşağıdaki alt klasörler şeklinde gün bazında biriktirilecektir (Windows Phone 8'de görüntüler henüz CameraRoll'da saklanmakta, tablet ve masaüstünde çalışan Windows 8 için bu özellik hazır) :


\LifeLogging\<Bilgisayar Adı>\2013.01.17\ScreenCapture
\LifeLogging\<Bilgisayar Adı>\2013.01.17\CameraCapture

LifeloggingLE yazılımı şu andaki aşamada bu klasörler arasında takvimde seçilen bir güne ait olan klasördeki  görüntüleri ekrana yükleyebilmekte ve kullanıcının bu görüntüler üzerinde veri panelindeki hücrelerle senkronize bir biçimde gezinmesine olanak sağlamaktadır. Kullanıcı ayarlardan ScreenCapture ya da CameraCapture seçimi yapabilmektedir. 

İzleyen aşamalarda veri girişi, çoklu görüntü seçimi ve bu seçime yönelik veri girişi gibi özellikler eklenecektir. Veri panelinde Kayıt (log), Etkinlik (Activity), Olay (Episode) ve Öykü (Story) gibi değişik düzeyde temel verilerin girilebilmesine olanak sağlanacaktır. Bunların dışında kullanıcıya ayrıca öğrenme deneyimlerine ait bilgileri girebileceği bir veri katmanı da sunulacaktır. 

Öğrenme deneyimlerinin yönetimi için yararlandığım kuramsal altyapıya ait yayınları kisiselogrenmeortamlari.blogspot.com'da yayınlayacağım. LifeLoggingLE programının sadece öğrenme deneyimlerinin yönetimi için değil, kişisel bilgi yönetimi için de geliştirilmesi mümkündür. Bu yöndeki düşüncelerimi bu blogta yayınlamaya devam edeceğim.

Görüntü verilerini birleştirme

Projede telefon, tablet ve masaüstü bilgisayarlarda elde edilen kamera ve ekran görüntülerinin bir ana bilgisayarda bir araya getirilmesi ve görüntülerin bu bilgisayarda çalışan LifeLoggingLE yazılımı ile değerlendirilmesi öngörülmektedir.

Görüntülerin diğer aygıtlardan ana bilgisayara aktarılması amacıyla bulut depolama yaklaşımı uygulanabilir mi? Bulut çözümü için aşağıdaki senaryoyu geliştirdim. 

  • Microsoft Skydrive, Google Drive ve Dropbox’da Selective Sync özelliği bulunmakta.
  • Client bilgisayarlarda (Tablet, Phone, İş bilgisayarı) “Bu bilgisayara yalnızca bazı klasörleri senkronize et” seçeneğinde sadece client bilgisayardaki \LifeLogging\ klasörü  seçilecek. 
  • Ana bilgisayarda ise tüm client bilgisayarların klasör isimleri seçilecek. Böylece dosyalar client bilgisayardan buluta, buluttan da ana bilgisayara doğru akacak. 
  • Ana bilgisayardan client bilgisayar klasörlerine herhangi bir dosya yazma/silme işlemi yapılmayacağı için veri akışı sadece client bilgisayarlardan buluta, buluttan da ana bilgisayara doğru olacak. Tersi yönde bir veri akışı oluşmayacak. 
  • LifeLoggingLE yazılımının veri dosyası ana bilgisayarda tutulacak ve bu bilgisayardaki görüntü klasörlerine erişilecek. 
  • Ana bilgisayarda aşağıdaki gibi bir klasör yapısı ortaya çıkacaktır.
...\LifeLogging\<Bilgisayar Adı1>\2013.01.17\ScreenCapture
...\LifeLogging\<Bilgisayar Adı1>\2013.01.17\CameraCapture
...
...\LifeLogging\<Bilgisayar AdıN>\2013.01.17\ScreenCapture
...\LifeLogging\<Bilgisayar AdıN>\2013.01.17\CameraCapture
  • Kullanıcının zaman çizgisi boyunca herhangi bir anda sadece bir aygıtı kullandığı varsayılacaktır. Böylece herhangi bir anda sadece bir aygıt üzerinde ekran ya da kamera görüntüsü elde edilecektir. Diğer bir deyişle yukarıdaki klasörlerin çoğu günlük deneyimde oluşturulmayacaktır. Ya da bir klasörde çok sayıda dosya varken diğer klasörlerde az sayıda dosya bulunacaktır.
  • Kullanıcı LifeLoggingLE yazılımı ile sadece ekran görüntüsü - kamera görüntüsü klasörü ve tarih seçimi değil aynı zamanda blgisayar seçimi de yapmak zorundadır.
  • Bu yaklaşım ile aktarılacak dosya sayısı, toplam depolama alanı büyüklüğü ve depolama maliyeti hesaplamaları yapılmalıdır.

Bu senaryonun uygulanabilirliği test etmek amacıyla çalışmalar yapacağım.

Design of Lifelogging Image Capture Applications - 2

Yaşamgünlüğü Görüntü Yakalama Uygulamaları Tasarımı - 2

Aralık 2012 ayı içerisinde tasarımına başladığım görüntü yakalama yazılımlarına Ocak 2013 ayı içerisinde bir takım ayarlar ve sensör bilgilerini yakalama özellikleri ekledim.

LifeLoggingSC ekran görüntüsü yakalama yazılımına eklenen özellikler

LifeLoggingSC yazılımında Image Quality, Image Size, Capture Folder, Capture Interval ve File Prefix değerleri ayarlanabilir hale getirildi. 


Böylece kullanıcı programın Settings menüsünden yararlanarak resim kaydetme aralığı, resim kalitesi (jpeg quality), ekran çözünürlüğüne göre belirlenen resim büyüklüğü ve görüntülerin kaydedildiği klasörü belirleyebilmektedir.


LifeLoggingSC'de yapılan diğer bir değişiklik ise Screen Video Recording özelliğinin kaldırılması olmuştur. Böylece programın Expression Encoder bağımlılığı sona erdirildi. Ekran yakalama yazılımını gelştirmeye ilk başladığım günlerde yazılım forumlarında masaüstünde çalışan ekran yakalama yazılımlarının Windows 8 Başlat Menüsü ve Windows Store uygulamalarına ait ekran görüntülerini kaydetmediğine ilişkin çok sayıda yorumla karşılaşmıştım. WPF 4.5 ile bir masaüstü uygulaması olarak geliştirdiğim LifeLoggingSC programında bu sorun bulunmamaktadır. Hem masaüstü hem de Windows Store ekranları kaydedilebilmektedir. 

LifeLoggingCC kamera görüntüsü yakalama yazılımına eklenen özellikler

LifeLoggingCC'de ise Capture Interval, Image Quality ve Capture Prefix seçenekleri eklendi.

  
Bu yazılımda görüntü büyüklüğü 640x480 olarak sabitlenmiştir ve görüntü kalitesi henüz değiştirilememektedir.



LifeLoggingCCPhone kamera görünütüsü yakalama yazılımına eklenen özellikler

LifeLoggingCCPhone'da ise Capture Interval seçeneği eklendi. Standart 640x480 büyüklüğünde resim kaydedilmekte ve henüz bu aşamada görüntü kalitesi ve kaydetme klasörü (CameraRoll) değiştirilememektedir. 

Sensörler

Uygulamalara eklenen diğer bir özellik ise Tarih ve Saat etiketlerinini yanısıra sensör bilgilerinin algılanması olmuştur. 

LifeLoggingCC  görüntü kaydederken aynı zaman konum bilgisi, hız bilgisi ve ışık düzeyi bilgisini de belirleyebilmektedir. LifeLoggingCC denemeleri emülatörde gerçekleştirilmektedir. Gerçek denemeler için Windows 8 yüklü bir tabletin gelmesini bekliyorum.


LifeLoggingCCPhone ise görüntü kaydederken konum ve hız bilgisini de algılamaktadır. Programın denemeleri emulatör üzerinde gerçekleştirilmekte olduğundan dolayı gerçek denemeler için bir Windows Phone 8 telefonunun gelmesini beklemekteyim.


LifeLoggingSC'ye herhangi bir sensör algılaması eklenmemiştir. Sensör bilgileri henüz bu aşamada kaydedilmemektedir.  Sensör bilgilerinin resimlere gömülebilmesi için araştırma yapacağım.

Uyku modu

Geliştirilen ekran ve kamera görüntüsü yakalama yazılımlarının sürekli çalışabilmesi için üzerlerinde çalıştıkları aygıtların uyku moduna geçmemeleri gerekmektedir. Uyku modunda yazılımlar ya son yakaladıkları görüntüyü saklamaya devm ediyorlar ya da siyah ekran kaydediyorlar. Masaüstünde uyku modunu kapatmak çok sorun yaratmaz. Tablet'te bu durum kullanım süresini etkileyecektir. Telefonda ise uyku modu iptal edilebilir mi araştırılacak.