AllMyListsLE etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
AllMyListsLE etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

31 Mayıs 2013 Cuma

Architecture of AllMyListsLE List Management Software

AllMyListsLE Liste Yönetim Yazılımının Mimarisi

AllMyListsLE yazılımının kökenleri 2011 yılında geliştirmeye başladığım Windows Forms tabanlı AllMyLists yazılımına dayanmaktadır. Bu ilk geliştirmeyi WPF tabanlı AllMyListsWPF uygulaması izlemiş, ardından MVVM mimarisini denemeye çalıştığım AllMyListsWPFMVVM yazılımını geliştirmeye başlamıştım. Daha sonra 2012 yılında bir Windows 8 Store uygulaması olan AllMyListsMetro'yu bütünüyle yeni bir mimari üzerinde geliştirdim (https://meminmutlu.wordpress.com/personalis/pim-projects/).

2013 yılında "Yaşam Boyu Öğrenme Deneyimlerinin Yönetimi Amacıyla Bir Dijital Yaşam Günlüğü Sisteminin Geliştirilmesi ve Uygulanması" isimli projede yaşam ve öğrenme deneyimlerinin yönetimi için bir yazılıma gereksinimi duyulduğunda  AllMyListsWPFMVVM tasarımını temel alarak AllMyListsLE yazılımını geliştirmeye başladım.(http://personalinformationsystems.blogspot.com/2013/02/development-and-implementation-of.html)

AllMyLists yazılımı bir ana pencereye yerleştirilmiş birer ağaç, ızgara ve zengin metin kutusu denetimleri üzerinde çalışmaktaydı. Tüm kodlar ana sayfaya yerleştirilmişti ve sayfadaki denetimlere ait olaylar ana sayfada işlenmekteydi.

AllMyListsWPF'de denetimler Windows Forms yapısından XAML'e taşınmış fakat işleyiş aynı bırakılmıştı. Tüm kodlar ana sayfada yeralmaya devam etmişti. XAML teknolojisi Windows Forms'un rijid yapısına göre büyük tasarım esnekliği sağlamıştı.

AllMyListsWPFMVVM'de ise denetimlerin kendi kodlarını kendi içlerinde barındıracak şekilde düzenlenmeye çalışılmıştır. Bu amaçla ana sayfada bulunan ve denetimlerin altında çalışması daha mantıklı olan tüm kodlar denetimlere birer method olarak taşınmış ve denetimler de birer "UserControl" haline getirilerek birer kopyaları (ilgili "Grid" ler ve "GridSplitter" lar dışında boş olan) ana pencereye yerleştirilmişlerdir.

AllMyListsLE yazılımına başlandığında ise ilk yapılan işlem tüm veritabanı işlemlerinin ayrı bir sınıfa aktarılması olmuştur. Böylece bütün denetimlerin kullandığı ortak bir veri modeli oluşturulmuştur. Diğer taraftan yazılıma LifeLogging görüntülerinin görüntülenmesiyle ilgili yeni "UserControl" ler eklenmiştir. Bu denetimler görüntülerin yerleştirildiği bir görüntü listesi ile verilen bir güne ait görüntülerin hangi cihaza ait olduğunu belirtmek amacıyla kullanılan bir cihaz listesidir.Diğer taraftan yazılımın yapısı düğümleri kullanıcı tarafından oluşturulan "MyList" ve düğümleri kaydedilmiş görüntü klasörlerinden elde edilen "LifeLog" şeklinde iki ayrı ağaç yapısını işleyecek hale dönüştürülmüştür.

Bir süre sonra "MainWindow" ve kendisine yerleştirilmiş olan "UserControl" ler arasında yoğun bir bağımlılık bulunduğu, denetimlerden ana penceredeki değişkenlere ve yöntemlere erişildiği hatta denetimlerin ana pencere üzerinden diğer denetimlere eriştiği gözlenmiştir. Örneğin kullanıcı ağacın bir düğümünü seçtiğinde, ağaç nesnesi cihaz listesi nesnesine erişmekte, cihaz listesi nesnesinden bir cihaz seçildiğinde ise cihaz listesi nesnesi görüntü listesini etkinleştirmektedir.

Bu durum dolaşıklık oluşturmakta ve nesne yaklaşımlı programlama mantığıyla çelişmektedir. Bu sorunu aşmak amacıyla ayrıntılı bir tarama yapılmış ve yazılımın tümünde sadece ana pencereden üzerinde yerleşik bulunan kullanıcı denetimlerine erişimin bulunduğu, denetimlerden ana sayfanın ya da diğer denetimlerin çağrılmadığı duruma kavuşuncaya değin bir ayıklama işlemi gerçekleştirilmiştir. Bu amaçla denetimlere çok sayıda "Event", "Field" ve "Property" eklenmiştir. Böylece bir denetimin diğer bir denetime doğrudan erişmesi yerine kendisine ait özel bir "Event" ı tetiklemesi, bu "Event" ı yakalayan ana pencerenin hedefteki denetime erişmesi şeklinde bir geçişkenlik kullanılmıştır. Veritabanı nesnesinin ana pencere üzerinde çağrılması yerine denetimlerde gerekli olan yerlerde "Private" veritabanı nesnelerinin tanımlanması yoluna gidilmiştir. 

Yukardaki örnek bu durumda şu şekilde çalışmaya başlamıştır: Ağacın bir düğümü seçildiğinde bir olay tetiklenir. Ana pencere bu olayı yakalar ve cihaz listesini etkinleştirir. Cihaz listesi nesnesi bir öğe seçildiğinde bir olayı tetikler. Ana pencere bu olayı yakalar ve görüntü listesini etkinleştirir. Böylece alt denetimler kendi aralarında iletişimi ana pencere üzerinden sağlarlar.

Nisan sonu, Mayıs ortası arasında yapılan ayıklama sonucunda yaklaşık 450 dolaşık çağrı yazılımdan kaldırılmıştır. Böylece AllMyListsLE yazılımında karmaşıklık ortadan kaldırılmış, basit ve anlaşılır bir mimari elde edilmiştir. Gelinen aşamada denetimlerin veri modeline bağımlılığı dışında diğer nesnelere olan bağımlılığı kalmamıştır. Bir sonraki adımda denetimler ile veri modeli arasında bağımsızlık sağlanacak ve bu süreç yazılımda MVVM mimarisine tam anlamıyla geçilene kadar devam edecektir.

20 Şubat 2013 Çarşamba

"Development and Implementation of A Digital Lifelogging System for Management of Lifelong Learning Experiences" Project

"Yaşam Boyu Öğrenme Deneyimlerinin Yönetimi Amacıyla Bir Dijital Yaşam Günlüğü Sisteminin Geliştirilmesi ve Uygulanması" Projesi

Önermiş olduğum "Yaşam Boyu Öğrenme Deneyimlerinin Yönetimi Amacıyla Bir Dijital Yaşam Günlüğü Sisteminin Geliştirilmesi ve Uygulanması" projesi 15 Şubat 2013 tarihinde Anadolu Üniversitesi Bilimsel Araştırma Projesi (Proje No:1301E014) olarak kabuıl edildi.

Projede Şubat ayı içerisinde LifeLoggingSC, LifeLoggingCC ve LifeLoggingCCPhone yazılımları ile elde edilen görüntülerin değerlendirilmesi amacıyla kullanılacak olan LifeLoggingLE yazılımını geliştirmeye devam ettim. 20 Ocak 2013 tarihinde http://personalinformationsystems.blogspot.com/2013/01/management-of-learning-experiences-with.html yayınında yayınlamış olduğum tasarımda önemli değişikler gerçekleştirdim.


İlk tasarımda görüntülerin bulunduğu klasörlere erişen ve bu klasörlerdeki görüntüleri ekranda görüntüleyen bir program geliştirmeye başlamıştım. Bu program verilen bir tarihe ait klasörlere erişerek bu klasörlerdeki görüntüleri listeleyebiliyordu. İkinci aşamada bu görüntülere kullancıların bilgi girmesini sağlamak amacıyla bir veri tabanı tasarlamaya başladım. Bu noktada kullanıcıya sınırsız esneklik sağlamak amacıyla daha önce geliştirmiş olduğum AlMyListsWPFMVVM yazılımını kullanmaya karar verdim. Bu yazılım 2011 yılında geliştirmiş olduğum AllMyListsWPF yazılımının üzerinde MVVM mimarisi denemeleri yaptığım tamamlanmamış bir sürümüydü (https://meminmutlu.wordpress.com/personalis/pim-projects/). 

Bu yazılımda bir ağaç yapısını kullanarak, ağacın herhangi bir düğümü için sınırsız kayıt oluşturmak ve her kayıt için basit bir metin editörü ile açık uçlu bilgi girmek mümkün oluyordu. Bu programda ağaç yapısına yaşam günlüğü görüntülerinin bulunduğu klasör yapısını yükleyerek, kullanıcının seçtiği bir güne ait görüntüleri programda inceleyebilmesi ve o güne ait yorum, düşünce, not, değerlendirme vb. bilgilerini sınırsız kayıtlar halinde girmesi mümkün olabilecekti. 

Bu amaçla 2011 yılında Visual Studio 2010 ile geliştirmiş olduğum AllMyListsWPFMVVM yazılımını VS 2012’ye dönüştürdüm. Bu yükseltme işlemi esnasında yazılımın kullandığı SQL CE 3.5 sürümlü SDF dosyası da SQL CE 4.0’a dönüştü.

Yeni tasarımda LifeLoggingSC, LifeLoggingCC ve LifeLoggingCCPhone yazılımdlarında gelen görüntülerin biraraya getirildiği klasör yapsı değiştirildi. Eski yapıda 
...\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
şeklinde olan klasör yapısı yeni yapıda yıllar, aylar ve günlere ait alt klasörlerden oluşan 

…\LifeLogging\
2012
2013.12
2013.12.20
MEMUTLU-CameraCapture\
MEMUTLU-ScreenCapture\
Giyilebilir Lifelogging Camera\
...

şekline dönüştürüldü. Böylece görüntülere ait klasör yapısı herhangi bir ek dönüştürme yapmadan programın ağaç nesnesine kolayca aktarılabilmektedir. 

Programa Ocak ayında yaptığım denemelerde yazdığım klasör görüntüleme kodlarını ekledim.  Klasör içeriği "Liste" şeklinde ya da "Döşeme" şeklinde olabilmekte.

Diğer taraftan kişisel bilgi yönetimi aracı olan AllMyListsWPFMVVM yazılımının bu niteliğini değiştirmeden korumaya karar verdim. Yazılım yeni düzenlemelerle kişisel bilgi yönetimi aracı olmanın yanısıra bir yaşam günlüğü aracı haline de gelmiş olacak. Kullanıcılar kişisel bilgi yönetimi türü projeleri kullanabilirken, aynı zamanda yaşam günlüğü projelerini de sürdürebileceklerdir.

Yazılımın bu yeni sürümünün adını AllMyListsLE olarak değiştirdim. Zaten Aralık 2012'de proje önerisinde bulunurken geliştirilecek yazılımın adını da AllMyListsLE olarak belirlemiştim.

AllMyListsLe yazılımının yaşam günlüğü uygulaması olarak kullanıldığı durumdaki yapısına ait ekran görüntüsü aşağıdaki görüntüye benzeyecektir. "Öğrenme Deneyimlerinin Yönetimi" amacıyla kullanılabilmesi için bir yaklaşım geliştirildiğinde yazılımın ekran görüntüsü farklılaşabilecektir.


Resim 1. AllMyListsLE yazılımının yaşam günlüğü amacıyla kullanıldığı durumda "Döşeme" yapısındaki görünümü. 

17 Aralık 2012 Pazartesi

Yaşam Günlüğü

Yaşam Günlüğü

Günümüzde yaşam günlüğü teknolojilerinde hızlı bir gelişme var. Microsoft SenseCam aygıtının Vicon Revue adı altında satışı bu yıl sonunda sona erecek. Vicon firması bunun yerine Autographer isminde yeni nesil bir giyilebilir yaşam günlüğü aygıtı üretmeye başladı. Resim kalitesi 5MP ve cihaz üzerinde GPS dışında" ambient light", "accelerometer", "magnetometer", "passive infrared sensor" ve "temperature" olmak üzere 5 ayrı sensör ve Bluetooth bağlantısı özelliği bulunuyor. Resimler 136 derecelik bir açıklığa sahip. Aygıtın 8 GB belleği var. Ağırlığı ise 58 gram.



Kaynak: www.autographer.com


Bir kickstarter projesi olan Memoto ise Şubat 2013'de piyasaya çıkacak. İki gün süreyle 30 saniyede bir 5MP resim çekmesi öngörülüyor. Aygıt bir rozet büyüklüğünde ve GPS sensörü bulunuyor.




Kaynak: www.memoto.com


Yaşam günlüğü konusundaki çalışmamı Kasım ayında İnet-Tr'2012 konferansında sundum (Mutlu, 2012). Bu çalışmayla yaşam günlüğü alanına giriş yapmış oluyorum. Bu bildiride ayrıca AllMyListsMetro uygulamasının manuel bir yaşam günlüğü olarak nasıl kullanılabileceğini gösterdim. Bildirinin tamamına aşağıdaki bağlantıdan erişilebilir.

Bu konuda, yaşam deneyimlerini sürekli kaydeden ve kaydedilen bilgileri öğrenme deneyimlerini yönetmek amacıyla kullanma olanağı sağlayan AllMyLists LE isimli bir yazılım geliştirmeye başlıyorum. Bu yazılımla ilgili yapmayı düşündüğüm çalışmaları bir Bilimsel Araştırma Projesi (BAP) önerisi halinde Anadolu Üniversitesine sundum. Eğer BAP Önerisi kabul edilirse projenin araştırma, geliştirme ve uygulama süreçlerini bu blogda paylaşacağım. 

Kaynaklar
Autographer Sitesi, www.autographer.com

Memoto Projesi, www.memoto.com

M.E. Mutlu, “Yaşam Günlüğü (CARPE) Uygulamaları ve Yaşam Deneyimleri Kaydedicisi için Bir Bilgi Mimarisi Önerisi”, İnet-Tr'12 XVII. Türkiye'de İnternet Konferansı’nda sunulan bildiri, Anadolu Üniversitesi, Eskişehir, 7-9 Kasım 2012 (İnternette yayınlandı) http://inet-tr.org.tr/inetconf17/bildiri/7.pdf