Yaşamgünlüğü Literatürü
Geçen yıl Mendeley'de yaşam günlüğü alanında 70-80 civarında yayından oluşan bir liste oluşturmuştum. Aynı zamanda https://meminmutlu.wordpress.com/personalis/lifelog/ sitesinde bir wiki sayfası açmıştım. Bu hafta Lifelogging konusundaki kaynakçamı güncellemeye başladım. İlk aşamada Mendeley'de "Lifelog" anahtar kelimesi içeren 120 yayını bir araya getirdim. Önümüzdeki günlerde bu listeyi eksiksiz hale getireceğimi umuyorum. Bu amaçla tarih sırasına göre en eski yayınlardan başlayarak çapraz kaynakça taramasına başlayacağım. Ardından bu alandaki bloglar, projeler, konferans ve çalıştayları eksiksiz olarak listelemeye çalışacağım.
80'ler ve 90'larda de Steve Mann'in gerçekleştirdiği giyilebilir bilgisayar denemeleri ile 2000'lerdeki Gordon Bell'in MyLifeBits projesi günümüzdeki yaşam günlüğü çalışmalarının temeli sayılmaktadır. Bu arada Vannevar Bush'un 1945'deki "As we may think" isimli makalesi ile Ivan Sutherland'ın 1968'de yayınlanan "A head-mounted three dimensional display" isimli bildirisi yaşam günlüğünün kavramsal temellerini ilk kez ortaya koyan şaşırtıcı çalışmalardır. Diğer taraftan Edward O. Thorp ile Claude Shannon tarafından kumar tahminleri için geliştirilen ve ayakkabı içerisine saklanan ve 1961'de Las Vegas'da denenen aygıtın ilk giyilebilir bilgisayar olduğu düşünülmektedir.
2000 yılı öncesine ait saptayabildiğim tarihi yaşam günlüğü çalışmaları bunlar. Belirlediğim yayınları yıl yıl bir wiki sayfasında yayınlamaya çalışacağım.
V. Bush (1945). As We May Think, The Atlantic Monthly, 176(1), pp. 101-108, 1945; http://www.theatlantic.com/magazine/archive/1945/07/as-we-may-think/303881/
Sutherland, I. E. (1968). A head-mounted three dimensional display. In Proceedings of fall joint computer conference, part I (pp. 757-764). ACM, Washington, DC, 1968. Thompson Books
Thorp, E. O. (1998). The invention of the first wearable computer. In . Digest of Papers. Second International Symposium on Wearable Computers, 1998 (pp. 4-8). IEEE.
31 Temmuz 2013 Çarşamba
30 Haziran 2013 Pazar
Windows Phone "Tracker" Apps
Windows Phone “Tracker”
Uygulamaları
Windows Phone 8 için geliştirmekte olduğum LifeLoggingCCPhone uygulamasını Windows Phone Store’a yüklemeden önce şu anda benzer ne gibi uygulamaların bulunduğunu görmek amacıyla www.windowsphone.com sitesindeki uygulamaları taradım.
Windows
Phone 8 ortamı için geliştirilmiş olan ve "Lifelogging"
anahtar kelimesi içeren her hangi bir uygulama bulamadım. Buna en yakın terim
olan "Tracker" ile tarama yaptığımda ise çok sayıda uygulamayla
karşılaştım. 24 Haziran 2013 tarihindeki taramada toplam 699 uygulamadan oluşan bir liste elde ettim. Bu listede hem Windows 7 ve alt
sürümleri hem de Windows 8 uygulamaları olduğundan dolayı aynı uygulamanın
birden çok sürümü de bulunabilmektedir. Uygulamaların listesi ve ilk aşamada
oluşturduğum sınıflandırmaya https://meminmutlu.wordpress.com/personalis/windows-phone-tracker-apps/ adresinden erişilebilir.
İlk
aşamada oluşturabildiğim uygulama grubu sayısı 56. Fakat daha detaylı bir
çalışmayla bu sayı hiyerarşik olarak düzenlendiğinde daha da artacaktır.
Örneğin “Spor” grubu spor dallarına göre alt gruplara ayrıştırılabilir.
Spor
|
Yakıt
|
Proje Yönetimi
|
Fitness
|
Etkinlik
|
Adres
|
Sağlık
|
Arkadaş/Sosyal
|
Avlanma
|
Diyet
|
Yolculuk/Seyahat
|
Son kullanım tarihi
|
Finans
|
Dua/Meditasyon
|
Bahçe
|
Kadın Sağlığı
|
Otomobil
|
Faaliyetler
|
Bebek
|
Zaman/Kronometre
|
İnternet Kullanımı
|
GPS
|
Skor Kartı
|
Taşınma
|
Telefon
|
Araçlar
|
Günlük
|
Lig/Takım
|
Pet Bakım
|
Rutinler
|
Oyun
|
Eğitim
|
Bağlantılar
|
Doğa/Olayları
|
Duygu Durum
|
Navigasyon
|
Bira/Viski
|
Sayaç
|
SMS
|
Ulaşım
|
Varlıklar
|
Veri Toplama
|
Kargo
|
Sorun
|
Gözlem
|
Media
|
Fırsatlar
|
Tanımlamayanlar
|
Alışveriş
|
Haberler
|
|
Uydu/Uzay İstasyonu
|
Tarih/Randevu/ajanda
|
|
Uçuş
|
Ekip Çalışması
|
|
İş-Görev-Çalışma
|
Geliştirme
|
Uygulama
listesindeki uygulamaların her ne kadar adında ya da açıklamalarında “Tracker”
sözcüğü geçse de aralarında kişisel bir durumun izlenmediği uygulamalar da
bulunmaktadır. İlk aşamada bu uygulamalar ayıklanmamıştır. Kişilerin akıllı
telefonlarla neleri izlemeye değer bulduklarını genel olarak değerlendirdikten
sonra ayıklama yapmak daha doğru olacaktır.
Örneğin,
televizyon dizilerinin yayın tarih/saatlerini izlemek amacıyla kullanılan bir
uygulama eğer izlenen bölüm hakkında bilgi kaydına olanak sağlıyorsa, o uygulama
kişisel bir durumun (bir televizyon dizisinin bir bölümünün belirli bir tarih
ve saatte izlendiği bilgisi) kaydedilmesi amacıyla kullanılabilmektedir.
Bir
uygulama kişinin kendisine ait olmayan bir bilgiyi kaydetmek amacıyla
kullanılmasına rağmen yine de dolaylı olarak kişisel bir durum kaydedilmiş
olabilir. Örneğin bebek gelişimini izleme uygulamalarında anne kendisine ait
hiçbir bilgi kaydetmese bile girilen tarih ve saatlerde bebeğiyle ilgilendiğine
dair bir durum bilgisini kaydetmiş olmaktadır.
İçerdiği
uygulama sayısı açısından öne çıkan türler şunlardır: Spor (47), Fitness (16), Sağlık (31), Diyet
(50), Finans (83), Kadın Sağlığı (13), Bebek (14), GPS (35), Telefon (20),
Lig/Takım (19), Oyun (55), Ulaşım (24), Kargo (13), Medya (15), Alışveriş (16),
Uçuş (18), Yakıt (20), İş-Görev-Çalışma (9), Etkinlik (12), Arkadaş/Sosyal
(13), Yolculuk/Seyahat (23), Zaman/Kronometre (34), Skor Kartı (17), Araçlar
(12), Varlıklar (9), Haberler (9).
En
fazla uygulamanın “Finans” grubunda olduğu görülmektedir. Bu alanda harcama, borç
alma-verme, nakit akışı, bütçe denetimi, fatura takibi, para cüzdanı izleme,
hesap-bahşiş paylaştırma gibi uygulamalar bulunmaktadır. Finansal faaliyetlerin
çoğu rutin işlemler olsa da hayatımızdaki önemli pek çok olayın mutlaka finansal
bir boyutu vardır. Eğer sürekli olarak kullanılırlarsa bu uygulamalarla kişi
kendisine ait daha sonra hatırlayabileceği çok sayıda “yaşam günlüğü” bilgisini
kaydetmiş olur.
Uygulama
sayısının fazla olduğu diğer bir grup ise “Oyun” uygulamalarıdır. Bu yanıltıcı
bir durumdur. “Tracker” sözcüğü her türlü oyun içinde geçebilecek bir sözcük
olduğundan dolayı bu uygulamaların çoğu kişisel izleme özelliği olmayan sıradan
bilgisayar oyunlardır. Yine de bu grup içerisinde bireylerin sahip oldukları
oyunları ve performanslarını izlemeleri amacıyla geliştirilmiş izleme
uygulamaları da bulunmaktadır. Bilgisayar oyunlarının gençlerin zamanlarının
önemli bir bölümünü kapsadığı düşünülürse, bu kayıtlar “yaşam günlüğü”
açısından önem kazanmaktadır.
Üçüncü
grup “Diyet” uygulamalarından oluşmaktadır. Bu uygulamalarla bireyler
ağırlıklarını kaydederek izleyebilirler, kalori hesabı yapabilirler. Bazı
uygulamalarda yiyecek ve içecek bilgileri de kaydedilebilmektedir. Bu
uygulamalar sürekli kullanıldığında (eğer yemekte bulunan diğer kişilere ait
bilgi de kaydedilmişse) önemli bir “yaşam günlüğü” kaynağı olabilir.
Dördüncü
grup “Spor” uygulamalarından oluşmaktadır. Bu grupta yürüyüş vb. doğa
sporlarının GPS ile izlenmesi, hemen her spor türü için kişisel ve ekip
gelişiminin izlenmesi gibi uygulamalar bulunmaktadır. Bu uygulamalar yardımıyla
haftanın doğa sporları yapılan birkaç saatinin gerçek zamanlı kaydı
tutulabilir.
En
fazla uygulamanın olduğu beşinci grup ise GPS uygulamalarını barındırmaktadır.
Bu uygulamalar genel amaçlı olarak bireylerin konumlarını belirlemekte,
kaydetmekte ve harita üzerinde göstermektedir. Bu gruptan seçilebilecek uygun
bir uygulama ile tüm zamana ait gerçek zamanlı konum bilgisinin kaydı
tutulabilir.
Altıncı
uygulama grubunda zaman takibi ve kronometre gibi uygulamalar yer almaktadır.
Özellikle “freelance” ya da saat hesabı çalışanların projelere harcadıkları
zamanları belirlemeleri için yararlıdırlar. Özellikle serbest çalışanların ne
zaman ne yaptıklarına dair ayrıntılı bir kayıt havuzu oluşturulabilir.
Yedinci
grup ise “Sağlık” uygulamaları grubudur. Bu uygulamalarla kişiler sağlık
durumlarını kaydederek izleyebilirler. Bunların arasında sigara kullanımını
izleme, ilaç takibi gibi uygulamalar da bulunmaktadır. Bu uygulama grubu ile
kişinin zaman ekseninde yer alan önemli bir olay-durum bilgi kümesinin kaydı
gerçekleşir.
Bir
başka uygulama grubu ise “Ulaşım” grubudur. Çeşitli şehirler için geliştirilmiş
otobüs, metro, feribot vb. toplu ulaşım araçlarının harekat saatlerine
erişilebilmektedir. Eğer ulaşım aracını kullanma bilgisi de kaydediliyorsa bu
bilgi bir yaşam günlüğü bilgisi olarak kişinin zaman eksenine
yerleştirilebilir.
İzleyen
grup “Yolculuk/Seyahat” uygulamaları grubudur. Bu uygulamalarla seyahatlar
planlanabilir, GPS ile izlenebilir, iş ve özel seyahat harcamaları izlenebilir.
Tarih, saat, olay ve konum bilgisinin kaydı ile önemli bir yaşam günlüğü verisi
elde edilir.
“Yakıt”
uygulamaları otomobillerinde harcadıkları yakıtı izlemek isteyen kişilere
yöneliktir. Daha çok finansal amaçlarla kullanılmasına rağmen üstteki “Yolculuk/Seyahat”
grubu için söylenenler bu grup için de geçerlidir.
“Telefon”
uygulamaları ağırlıklı olarak arayan telefonun konumunu belirlemeyi amaçlamakla
birlikte kullanılan telefon operatörünün bu hizmeti vermesi gerekmektedir. Eğer
saptanan bilgi kaydedilebiliyorsa yaşam günlüğü açısından destekleyici bilgi
olarak kullanılabilir.
İlginç
bir grup ise “Lig/Takım” uygulamaları grubudur. Kişilerin ilgilendikleri spor
karşılaşması liglerini ve spor takımlarını izlemeleri için geliştirilmiştir.
Alaska köpek yarışlarından basketbol takımlarına kadar çeşitlilik
göstermektedir. Çoğu yetişkin spor karşılaşmalarını izlemek için önemli zaman
harcar. Bu zaman bilgisinin kaydedilmesi yaşam günlüğü açısından önemli veri
sağlar.
“Uçuş”
uygulamaları havayolu tarifeleri ve uçuş bilgilerini izlemek amacıyla
kullanılabilir. Uygulamaların çoğunda uçuş numarası ve tarih girilerek kalkış
ve varış konumu ve saatlerine erişilebilmektedir. Gerçekleştirilen uçuşa ait
bilgi kaydedildiğinde destekleyici bir yaşam günlüğü verisi elde edilir.
“Skor
Kartı” uygulamaları kişilerin amatör spor etkinliklerinin puanlarını
kaydetmelerini ve izlemelerini sağlar. Bilardodan golfe kadar her türlü
karşılaşmada kullanılabilecek uygulamalar bulunmaktadır. Bu bilgi
kaydedildiğinde kişinin boş zamanlarını değerlendirmesiyle ilgili yaşam günlüğü
verileri elde edilir.
“Fitness”
uygulamaları kişilerin fitness programlarını oluşturmaları ve izlemelerine
olanak sağlar. Haftada üç gün ve günde iki saat olan standart bir fitness
programı ile haftada yaşanan 6 saate ait verinin kaydedilmesi sağlanabilir.
Bir
diğer grup ise “Alışveriş” uygulamalarıdır. Bu uygulamaların çoğu alışveriş
sitelerindeki bir ürünün fiyatını takip etmeyi sağlar. Genellikle bir firmanın “istemci”
uygulamalarıdır. Finans ve varlıklar gibi gruplardaki uygulamalardan elde
edilen bilgileri desteklemek amacıyla kullanılabilir.
“Medya”
uygulamaları kişilerin kitap, film, dizi film gibi etkinlikleri izlemeye alması
ve durum, tarih, saat ve yorum bilgilerini kaydetmelerini sağlar. Kişilerin
medya ortamlarında geçirdikleri süre günde en az birkaç saat olabilmekte ve böylece
önemli bir yaşam günlüğü verisi üretilmektedir.
“Bebek”
uygulamaları hamilelik takibi, yenidoğan
bebeklerin günlük olarak izlenmesi çocuk gelişimini izleme gibi uygulamaları içerir.
Annenin hayatının önemli bir dönemine ait detaylı bir yaşam günlüğü verisi
sağlar.
“Kadın
Sağlığı” uygulamaları özellikle kadınların adet dönemlerini takip etmeleri için
kullanılır. Kadınların yaşam günlüğü zaman ekseninde bulunması gereken bir veri
kümesidir.
"Arkadaş/Sosyal”
uygulamalarıyla bir sosyal ağ üzerinden kayıtlı arkadaşların gerçek zamanlı
olarak bulundukları yer izlenebilir. Etkileşimlere ait yaşam günlüğü verisini
türetmek amacıyla kullanılabilir.
“Kargo”
uygulamalarında kargo şirketlerinin sağladıkları izleme numaralarıyla bireyler
kargolarının durumlarını izlemeye alabilirler. Finans, alışveriş ve varlıklar
uygulamalarını destekleyici veriler elde edilebilir.
“Etkinlik”
uygulamaları ile kişiler günlük etkinliklerini planlayabilirler ve gelişmeleri kaydederek
izleyebilirler. “İş-Görev-Çalışma” uygulamaları ile kişiler çalışma hayatına
yönelik iş, görev ve faaliyetleri planlayabilir, kaydedebilir ve izleyebilirler.
Bu uygulamalar ile kişiler kendi 9-5 zaman dilimlerine yönelik yaşam günlüğü
verisini kaydedebilirler.
“Varlıklar”
grubundaki uygulamalar ile sahip olunan maddi varlıklar kaydedilebilir ve
izlenebilir. Diğer gruplarla desteklendiğinde zaman eksenindeki pek çok
kilometre taşı belirlenebilir.
“Haberler”
grubundaki uygulamalar ise kişinin abone olduğu haber kaynaklarından gelen
haberleri izleyebilmelerine olanak sağlar. Eğer bireyin okuduğu-seyrettiği haberlere
ait içerik kaydedilebilirse kişinin zaman eksenine paralel olarak bir dış dünya
bilgisi ekseni de oluşturulabilir.
“Araçlar”
grubu ise çok sayıda işlevi barındıran araç setlerini içerir. Bu setlerde bir
ya da birkaç izleme işlevi de bulunabilmektedir. Bu uygulama grubu, tüm izleme
işlevlerini içeren olası bir süper izleme setinin tasarımına yönelik ilham vermektedir.
Sınıflandırma
listesinde az sayıda uygulamanın yer aldığı ama “yaşam günlüğü” açısından önemli
gruplar da bulunmaktadır. Bunlar arasında “Duygu Durum” bilgisinin kaydedildiği
uygulamalar, “Dua/Meditasyon” etkinliklerini yönetmek için kullanılan uygulamalar,
“Proje Yönetimi”, “Avlanma”, “Bahçe Bakımı” uygulamaları, Kuaför vb. İzlemek
için kullanılan “Faaliyetler”, “Taşınma” etkinliklerini izleme, “Günlük”
uygulamaları, “Pet Bakımı”, sık tekrar edilen faaliyetleri yönetmeyi sağlayan “Rutinler”,
“Doğa Olayları”, “Sorun” izleme, “Tarih/Randevu/Ajanda” ve “Ekip Çalışması”
uygulamaları bulunmaktadır.
Bu
çalışmada grupların genel değerlendirmesine yer verildi. Eğer gruplardaki
uygulamalar kendi başlarına ele alınarak “yaşam günlüğü” bağlamı açısından değerlendirilirse
ele alınması gereken bir dizi özellik bulunmaktadır.
İlk
göze çarpan özellik “izlenen” bilginin kaydedilip kaydedilmediğidir. Bu özellik
uygulamanın “Life Logging” uygulaması olarak kullanılıp kullanılmayacağını belirlemektedir.
İkinci
özellik izlenen bilginin akıllı telefon tarafından kendiliğinden mi, yoksa
kullanıcı tarafından elle (manuel)
olarak mı kaydedildiğidir. Bazı durumlarda kayıt süreci hem otomatik hem
de manuel kayıt içerebilir. Ya da bilginin bir bölümünün kendiliğinden (örneğin
konum, tarih ve saat bilgisi gibi), bir bölümünün ise kullanıcı yorumu şeklinde
manuel olarak girilmesi gerekebilir.
Üçüncü
özellik kaydedilen bilginin akıllı telefon tarafından işlenerek
özetlenmesi-raporlanmasıdır. Bazı uygulamalarda bilgi bir algoritma ile
izlenerek kullanıcının yönlendirilmesi, uyarılması ya da bilgilendirilmesi
sağlanmaktadır. Örneğin diyet ve spor uygulamalarının çoğu bu şekildedir.
Bunların
dışında uygulamanın hatırlatıcı bir özelliğe sahip olup-olmaması, uygulamanın
arka planda gerçek zamanlı olarak çalışıp çalışmadığı, bilgileri telefonda mı
yoksa bulut ortamında mı tuttuğu, sosyal ağ oluşturup oluşturmadığı gibi
değişik teknik özellikler de ele alınabilir.
Şu
anda Windows 8 ortamında çalışan AllMyListsMetro ve LifeLoggingLE
uygulamalarıyla genel amaçlı bir yaşam günlüğü deneyimi gerçekleştirmek
mümkündür. 2011 yılında Windows Phone SDK 7.1 ortamında deneysel olarak geliştirdiğim
AllMyListsPhone uygulamasını dışarıda tutarsak henüz akıllı telefon ortamında
çalışan ve kendi başına çalışan bir yaşam günlüğü uygulaması geliştirmiş
değilim. LifeLoggingCCPhone uygulaması Windows Phone üzerinde 30 saniyede bir
kamera görüntüsü alabilmesine rağmen elde edilen görüntüler Windows 8 Masaüstü
ortamında LifeLoggingLE ile değerlendirilebilmektedir.
Gelecekte
Windows Phone ortamındaki “Tracker” uygulamaları ayrıntılı olarak ele alınarak
aralarında seçilecek kullanışlı uygulamalarla, kapsamlı bir “yaşam günlüğü”
uygulama seti elde edilebilir. Böyle bir deneyim sonucunda Windows Phone
ortamında çalışan ve bütün “yaşam günlüğü” işlevlerini barındıran bir süper
uygulama tasarlanarak geliştirilebilir.
31 Mayıs 2013 Cuma
Hardware of LifeLogging Project
LifeLogging Projesinin Donanımları
"Yaşam Boyu Öğrenme Deneyimlerinin Yönetimi Amacıyla Bir Dijital Yaşam Günlüğü Sisteminin Geliştirilmesi ve Uygulanması" projesinde geliştirme ve uygulama sürecinde giyilebilir yaşam günlüğü kameraları, akıllı telefonlar, tabletler, diz üstü bilgisayarlar ve masaüstü bilgisayarlar kullanılacaktır. Windows Phone 8 yüklü olan Nokia Lumia 920 model akıllı telefonlar 12 Mart 2013 tarihinde temin edilmiştir. Bu telefonlarda projede geliştirilen LifeLoggingCCPhone yazılımı kullanılacaktır. Uygulayıcılar hareket halindeyken ya da bilgisayarları başında değilken bulundukları ortamı görüntülemek istediklerinde bu yazılımdan yararlanacaklardır.
Projede kullanılacak donanımların arasında sadece giyilebilir yaşamgünlüğü kameraları henüz temin edilememiştir. Bu donanım türü için Autographer ya da Memoto marka giyilebilir kameralar düşünülmektdir. Henüz her iki kamera da piyasaya sürülmemiştir.
Uygulayıcılar bu kameraları günlük yaşamlarında içinde bulundukları ortamı kaydetmek amacıyla kullanacaklardır.
"Yaşam Boyu Öğrenme Deneyimlerinin Yönetimi Amacıyla Bir Dijital Yaşam Günlüğü Sisteminin Geliştirilmesi ve Uygulanması" projesinde geliştirme ve uygulama sürecinde giyilebilir yaşam günlüğü kameraları, akıllı telefonlar, tabletler, diz üstü bilgisayarlar ve masaüstü bilgisayarlar kullanılacaktır. Windows Phone 8 yüklü olan Nokia Lumia 920 model akıllı telefonlar 12 Mart 2013 tarihinde temin edilmiştir. Bu telefonlarda projede geliştirilen LifeLoggingCCPhone yazılımı kullanılacaktır. Uygulayıcılar hareket halindeyken ya da bilgisayarları başında değilken bulundukları ortamı görüntülemek istediklerinde bu yazılımdan yararlanacaklardır.
30 Mayıs 2013 tarihinde ise tümünde Windows 8 Pro işletim sistemi yüklü olan tablet, dizüstü ve masaüstü bilgisayarlar gelmiştir.
Projede tablet bilgisayar olarak Samsung Ativ Smart PC Pro kullanılacaktır. Bu cihazda projenin uygulama sürecinde LifeLoggingSC, LifeLoggingSCDesktop ve LifeLoggingCC yazılımları yüklü olacaktır. Uygulayıcıların bu tableti mobil durumda iken ya da iş dışında sosyal medyaya erişirken ekran görüntülerini kaydetmek ya da ortamı görüntülemek amacıyla kullanacakları öngörülmektedir.
Projede kullanılacak olan dizüstü bilgisayarlar için Lenovo IdeaPad Yoga 13 seçilmiştir. Bu bilgisayarlarda da LifeLoggingSC, LifeLoggingCC ve LifeLoggingSCDesktop çalışacaktır. Uygulayıcılar bu bilgisayarı iş ortamı dışında seyahat halindeyken profesyonel kullanım anında ekran ve ortam görüntülerini kaydetmek amacıyla tercih edeceklerdir.
Projede kullanılacak masaüstü bilgisayar olarak Sony Vaio L seçilmiştir. Bu bilgisayar ev ortamında kullanılacaktır ve diğer yazılımların yanısıra AllMyListsLE ve LifeLoggingTransporter yazılımları için kullanılacaktır. Bu yazılımlarla yaşam ve öğrenme deneyimlerini yönetebileceklerdir.
Uygulayıcılar bu kameraları günlük yaşamlarında içinde bulundukları ortamı kaydetmek amacıyla kullanacaklardır.
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.
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.
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.
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.
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:
1 Windows 8 Store uygulamalarının ekran görüntüsü
almaları OS düzeyinde engellenmiştir.
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.
Ö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ı
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
|
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.
Kaydol:
Kayıtlar (Atom)












