arşiv

‘Bilgisayar’ kategorisi için arşiv

Klavye Düzenleri – Ek –

Pazar, 10 Kas 2013

5 yıl önceki klavye düzenleri hakkındaki yazım, yıllardır sitenin Türkçe içeriğinde en üst sırada kendisine bir yer edindi ve oradan aşağıya inmiyor. Bu nedenle konu hakkındaki o günden bu yana öğrendiklerimi bir başka yazı olarak eklemek istedim.

Geçtiğimiz yıl Almanya’dan Türkiye’ye geri döndüğümde Almanya’da alışmak durumunda kaldığım QWERTZ düzenden tekrardan Türkçe Q klavye düzenine bir geçiş yaptım. İlk geçiş süreci, “Y”, “Z”, “Ö” ve “Ü” karakterlerinin farklı yerlerde olması nedeniyle birazcık zaman aldı. Birkaç hafta sonra yine alıştım tabii. Ancak bu durumda da özellikle işte yazdığım Almanca e-maillerde başka bir sıkıntı kendini gösterdi. Almanca klavyede kendine yer etmiş “Ä”, “ß” karakterleri Türkçe klavyede yok. Ayrıca şu anki proje gereği kullandığım “µ” karakteri de Almanca klavyede “Alt Gr + M” ile çıkarılabilir durumdayken Türkçe klavyede bunun bir karşılığı yok. Şimdi isterseniz bu iki sıkıntının çözümüne sırasıyla bakalım:

“Ä” ve “ß” karakterleri: Türkçe klavyede sözü geçen bu karakterlerin kendine ait bir tuşu olmasa da klavyeden yine de bunları çıkarmak mümkün. “ß”, “Alt Gr + S” kombinasyonuna basarak kolaylıkla çıkarılabiliyor. “Ä” ise, öncelikle “Alt Gr + Ğ”, daha sonra da “A” karakterlerine basılarak biraz uzun yoldan da olsa elde edilebiliyor. Yeri gelmişken konu ile ilgili bir önceki yazımı okumayanlara kısa bir bilgi vereyim: Klavyedeki bazı karakterler, kendinden sonra gelen bazı karakterleri değiştirme yeteneğine sahiptirler. Burada bastığımız “Alt Gr + Ğ” tuşu da böyle bir karakter olan “¨” ya karşılık geliyor.

Bir diğer dip not olarak bu iki karakterin aslında Almanca’da “muadilleri”nin olduğunu ekleyeyim. Sadece İngilizce karakter düzeniyle yazılan e-mail adresleri gibi yerlerde bu sesleri ifade etmek için kullanılan bir taktik var: “ä”, “ü” ve “ö” karakterleri “ae”, “ue” ve “oe” olarak; “ß” ise “ss” olarak yazılabiliyor. Yani esasen ben mail atarken bu muadil karakterleri kullansam kimse bir şey demez ama düzgününü yapabilecekken bunları kullanmayı tercih etmiyorum.

Bu karakterlerle ilgili bir diğer ilginç nokta da genellikle gazete haberlerinde karşımıza çıkıyor. Örneğin İngilizce bir haberde Alman isimleri yer alıyorsa haberde bu muadil karakterler bulunabiliyor. Bu tarz haberlerin Türkçe’ye çevirisi sırasında bu durumdan haberdar olmayan kimseler bu isimleri Türkçe’de orijinal karakterleriyle yazabilecekken (ü ve ö için), İngilizce metinde yazılmış haliyle bırakıyorlar. Yine bu kuralı bilmeyen yurdum insanı da bu haberleri okurken “adamların ne acayip isimleri varmış” diye düşünüyor.

“µ” karakteri: Bu karakteri Türkçe klavyede çıkarmak diğerlerine oranla biraz daha meşakkatli. İlk yöntem, doğrudan ASCII tablosundan yardım alarak “Alt + 230” kombinasyonunu kullanmak (yani “Alt”a basıp elinizi kaldırmadan 230’u tuşlayacaksınız). Diğer bir yöntem yine muadil olarak “u” karakterini kullanmak. Sol alttaki uydurmasyon kuyruk haricinde zaten karakter “u” ya epeyce benziyor, muhtemelen bunun için de birçok yerde “u” karakteri “µ” yerine kullanılıyor. Ancak benim gibi bu tarz karakterlere pek prim vermiyorsanız ve her seferinde “Alt + 230” kombinasyonu da hoşunuza gitmiyorsa bu durumda yapmanız gereken şey kendi “çakma” klavye düzeninizi oluşturmak. Bu işlem en azından Microsoft işletim sistemleri için “The Microsoft Keyboard Layout Creator” ile epeyce kolay. Bu program sayesinde ben kendime Türkçe Q klavye düzeninden tek farkı “Alt Gr + M”ye basılınca “µ” çıkan bir klavye düzeni oluşturdum. Programı kurduktan sonra Türkçe klavye düzenini baz alan bir düzenle başlayıp, sadece “M” karakterini modifiye edip, kendinize bu düzeni içeren bir kurulum paketi oluşturabilirsiniz. Daha sonra yapmanız gereken şey bu paketi bilgisayarına kurarak denetim masasının dil ayarları ekranlarından kullanmış olduğunuz geçerli klavye düzenini bu yeni kurmuş olduğunuz düzenle değiştirmek. Bunun neresi kolay diye düşünenler için deneyip görmelerini tavsiye ederim, 10 dakikada sorunsuzca istediğiniz çakma klavye düzenini kullanmaya başlayabilirsiniz.

Bilgisayar , , , , ,

Facebook ve Diğer Mesajlar

Pazartesi, 25 Mar 2013

Bugün bilumum haber sitesindeki Facebook mesajlarının paralı olması haberlerinden Facebook’ta ilk defa “diğer mesajlar” diye bir mesaj kutusunun olduğunu öğrendim. Biraz önce belki de bu haberlerin de etkisiyle ilk defa diğer mesaj kutusunda okumamı bekleyen 5 mesajımın olduğunu fark ettim.

Mesajların en eskisi 2010 Ekim ayında atılmış, en yenisi de 6 aylık. Bu yüzden artık cevap versem mesaj atanla dalga geçiyormuşum gibi olacak. O yüzden hiçbir şey yazmamayı tercih ediyorum. Mesaj atanlar benimle halen iletişim kurmak istiyorsanız doğrudan mail adresimi kullanabilirsiniz. Diğer mesajlar diye bir şey olduğunu yeni fark ettim ama ben onu kesin unutup sonra da kontrol etmem çünkü.

Bilgisayar ,

Site Değişiklikleri

Cumartesi, 08 Eyl 2012

Yaklaşık 1 yıl önce çeşitli planlardan dolayı sunucumu yükseltmiştim. SSL sertifikası, dedicated IP ve benzeri özelliklerin yanında daha performanslı ve daha az siteye paylaştırılan bir sunucuya geçtiğimden site hızı epey artmıştı. Ama planlar gerçekleşmediği için diğer özellikleri kullan(a)madım, sadece site hızı için aylık 25$ ödemek istemediğimden tekrar eski paketime geri döndüm. Yalnız kısa bir süre önce barındırıcı şirketim hostmonster cloudflare ile anlaşmış, CDN sayesinde hızı arttıracağını iddia ediyor. Bakalım görücez. Olmadı barındırıcı şirketimi değiştiririm (desem de inanmayın, muhtemelen 1 yıl boyunca üşenip sonra hesabımın süresinin dolmasına birkaç gün kala yine bir yıl daha uzatırım).

Bunca aradan sonra bu yazı pek yeterli değil tabii ama sonraki yazımın konusu olacak olan hayattaki büyük değişiklikleri yazmak uzun ve zahmetli. O yüzden bir süre daha sitede güncelleme olmayabilir.

Site , , ,

Site Güncellemeleri

Pazartesi, 10 Eki 2011

Bir önceki yazımda üniversite projelerimi GitHub’a aktarmaya başladığımı yazmıştım biliyorsunuz. Aktarımı dün bitirdim, bugün siteyi güncelledim. Projeler bölümünde artık daha önceki sıkıştırılmış dosyalar yerine GitHub deposuna bağlantı bulunmakta. Bu sayede kodlar daha göz önünde bulunacak, şöyle bir göz atmak istiyorum diyen bunu GitHub üzerinden kolayca gerçekleştirebilecek. Onun dışında kendim sayfasına da küçük bir ekleme yapıp çeşitli sitelerdeki kullanıcı bağlantı adreslerimi paylaştım.

Afiyet olsun…

Site ,

Üniversite Projeleri

Çarşamba, 05 Eki 2011

Üniversite süresince yapmış olduğum projelerden saklayabildiklerimi ve stajlarda yaptıklarımdan yayınlamaya iznim olanları sitede şu adreste yayınlıyorum biliyorsunuz. Bunları daha erişilebilir ve aranabilir hale getirmek için birkaç gün önce GitHub’a aktarmaya karar verdim. Hepsini bodoslama GitHub’a yollamaktansa biraz tertipli düzenli olmaları için mümkün olduğunca çoğunu Eclipse veya Visual Studio projeleri haline getiriyorum şu sıralar. Bu süreçte şimdiye kadar iki şey dikkatimi çekti:

  1. Epey kötü kod yazıyormuşum o zamanlar :). Özellikle ilk projelerim hatalarla dolu (Halbuki ben hepsini iyi çalışıyor diye hatırlıyordum). Aslında sadece kodları IDE’ye atıp birer kere derleyip çalıştırıyorum, yani öyle hata aramak gibi bir amacım yok ama yine de bu sırada bile bir sürü hatayla karşılaştım. Tamam, o kodları daha programlamaya yeni başlayan birinin yazdığı kodlar olarak değerlendirmek lazım ama yine de yazmadan duramadım. Diğer bir merak ettiğim konu da bundan birkaç sene sonra şu an yazdığım kodlar hakkında ne düşüneceğim…
  2. Eclipse, birden fazla çalıştırılabilir dosya ya da kütüphane içeren C/C++ projelerinin Makefile’ını kendimizin yapmasını şart koşuyormuş. Otomatik algılayayım, gruplayayım, farklı exeler oluşturayım gibi bir derdi yok yani. Bu işlemin Visual Studio’da ne kadar kolay bir şekilde yapılabildiğini bildiğim için epey şaşırttı bu beni (Bir solution altında birden fazla proje oluşturmak). Aslında amacım IDE olarak sadece Eclipse kullanmaktı ama açıkçası Makefile yazmaya üşendim, C/C++ projelerim için Visual Studio C++ Express Edition kullanmaya karar verdim.

Şimdilik bu kadar. İşimi bitirince siteyi zaten güncellemem gerekecek. O sırada tekrar bir yazıyla haber veririm tekrardan.

Bilgisayar, Site , , , ,

HTC Touch HD ile Android 2.3 Maceraları

Perşembe, 02 Haz 2011

android

Geçen hafta sonu fırsat bulup halen kullandığım HTC HD’ye (Blackstone) Android 2.3 (Gingerbread) yükledim. Öncelikle yazayım, Android’i telefonda çalıştırabilmek demek günlük hayatta Windows Mobile’i terk edip tamamen onu kullanabileceğiniz anlamına gelmiyor, boşuna heveslenmeyin yani :). Ama bu zaman zaman açıp Android’i kurcalamayı, ya da birkaç oyun oynamayı da engellemiyor.

 

 

 

Şimdi yemek tarifi gibi bu işin nasıl yapıldığını anlatayım:

  1. Şu adresten baz olarak kullanılacak dosyaları indirin.
  2. Bir adet yeni FAT32 formatlanmış microSD kartına indirdiğiniz dosyaları kopyalayın. Bu kartı telefona takacaksınız sonra.
  3. Şu adresten system.ext2 dosyasını indirin, karta kopyalayın, var olan dosyanın üzerine yazın.
  4. Şu adresteki dosyayı indirin, zip içindeki dosyanın adını rootfs olarak değiştirin, karta kopyalayın, var olan dosyanın üzerine yazın.
  5. Şu adresten telefon için özelleştirilmiş güncel Android kernelini indirin. Arşivdeki adı zImage ile başlayan dosyanın adını zImage olarak değiştirin, onu ve adı modules ile başlayan tar dosyasını karta kopyalayın, var olan zImage dosyasının üzerine yazın, karttaki adı modules ile başlayan diğer tar dosyasını silin.
  6. Kartı telefona takıp dosya yöneticisini açın, karttaki Haret.exe’yi çalıştırın.

Bunların hepsini doğru yaptıysanız Android telefonunuzda birkaç dakika sonra açılacak.

Olası sorunlar: Her SD kart desteklenmiyor. Haret.exe yi çalıştırdıktan bir süre sonra komut satırında bir birinin peşi sıra “Waiting for SD Card” yazısını görürseniz bu muhtemelen kartınızın desteklenmediği anlamına geliyor. Kaynak sitede Class 6 ve yukarısının desteklenmediği yazıyordu, ama benim Transcend marka orijinal kartım Class 4 olmasına rağmen problem oldu, aynısının Sandisk’ini aldım, problemsiz çalıştırabildim.

Genel izlenimler: Android hazırda telefonun birçok özelliğini destekliyor; telefon edilebiliyor, SMS çalışıyor, internete girilebiliyor (sadece Wi-Fi çalışıyor; 3G, EDGE ya da GPRS’i çalıştıramadım), fotoğraf çekilebiliyor (video çekilemiyor). Ama daha önce de yazdığım gibi pek günlük hayatta kullanılabilme imkanı yok. Öncelikle sistemde bir kararlılık sorunu var. İlk başladığında bulunan şebeke, telefonun yeri değişmemesine rağmen birkaç saat sonra yok oluyor. Alet canı istediğinde kendini yeniden başlatıyor. Özellikle internet ile ilgili uygulamalarda bu kendini yeniden başlatma çok sık oluyor. Onun dışında genel olarak tepki süreleri de sorunlu, ekran efektleri örneğin takılarak ve gecikmeyle çalışıyor. Ancak bütün bu yazdığım negatif özellikler, Android Market’ten birkaç oyun indirip oynamaya engel olmuyor. Özellikle benim gibi telefon değiştirmeyi diğer sistemdeki oyunlar ve uygulamalar için düşünenler, kendilerini biraz daha bu geçici çözümle oyalayabilirler.

Sonuç: Var olan telefonumu değiştirmeye gerek kalmadan Android’in şu anki son versiyonunu kurcalama şansına sahip oldum. Bu işlemin telefonun var olan işletim sistemine ya da içindeki bilgilere zarar vermemesi, istenildiği an Windows’a dönülebilmesi de ekstra bir güzellik (ama siz yine de bu işlemlerden önce telefonunuzdaki bilgilerin tam bir yedeğini alın, ne olur ne olmaz…). Bir de daha stabil olsaydı süper olacaktı ama buna da şükür diyoruz.

Kaynaklar: Öncelikle kullandığım ilk kaynak, xda-developers sitesi oldu, her şeyi forumlarındaki şu sayfa başlattı. Yazıyı okuyup siz de denemek isterseniz güncel dosyalarla çalışmak daha mantıklı olabilir. Şu adreste system.ext2 dosyalarının, bu adreste rootfs in, şu adreste Android kernelinin güncel versiyonlarını bulabilirsiniz.

Edit: Ölü linkler nedeniyle youtube’da bu konuyla ilgili bulduğum başka bir kaynağı ekliyorum:

Bilgisayar , , , ,

eminsenay.com.tr Yayında

Perşembe, 17 Şub 2011

Uzun zamandır yapmak istememe rağmen üşengeçliğimden ancak kurtulup www.eminsenay.com.tr alan adını da kiraladım. Basit bir URL yönlendirmesi ile artık o da buraya yönleniyor.

Site

Güncelleme – Ocak 2011

Pazar, 16 Oca 2011

Efendim son yazımdan bu yana yine boş durmadım. Acısıyla tatlısıyla aklımda kalanlar şöyle:

Projemin yıl sonu toplantısında uzunca bir sunum yaptım. Tia-Portal’da yaptığım geliştirmelerin otomasyon sisteminin performansına ne derece etkisi olduğunu çeşitli projeler aracılığı ile test etmiştim. Öncelikle bunu sundum. Daha sonra da geliştirilen her bir özelliğin o sırada açık bulunan herhangi bir projede kullanılıp kullanılmadığını anlamanın yöntemlerini ve bu özelliklerin projelerde nasıl aktive edilebileceklerini anlattım. Firmware tarafında çalışan ezici çoğunluk da benim Tia-Portal’da geliştirdiğim özellikleri cihazlara kazandırmak için uğraşıyorlar. Bir yıldır üzerinde çalıştığımız özelliklerin sisteme neler kattığını açıkça görebilmek onları da mutlu etti. Bir kısmı da özelliklerin aktive edilme yollarını birinci elden öğrendikleri için memnundu, bu sayede istedikleri testleri daha rahat yapabileceklerdi. Bu sunumun bana da faydası oldu. Almanya’daki ilk sunumumu Almanca olarak yapmış oldum. Projenin genelinden farklı bir konumda çalıştığım için yüzümün tanınırlığı diğer kişilere oranla daha az idi, sunum sayesinde bunu arttırdım. Ayrıca evosoft ve evoline’a projem hakkında anlatabileceğim bir şeyim olmuş oldu. Hakkımdaki olumlu izlenimlerin artmasının bir gün bana faydası olacağı inancındayım. Ayrıca sunumun bir diğer faydası ise normalde çok fazla ilgilenmediğim performans ile ilgili değerlere daha hakim olmamı sağlamasıydı.

Geçtiğimiz günlerdeki bir diğer olay da Selin, İrem ve Mertcan ile yaptığımız İtalya gezisi idi. Gezinin Roma ayağında Buğra ve Necip de zaman zaman bize eşlik etti. Şirketteki hemen herkes bu süre içinde tatile çıktığından ve belki de alışkanlıktan bu sene izin günleri açısından pek bir faydası olmasa da Noel haftasını yine tatilde geçirdik. Başlangıcı biraz sıkıntılı oldu, Milano’ya gecikmeli inince Sixt’in arabamızı başkasına vermiş olduğunu öğrendik. Uçuş numarasının daha önceden bildirilmemesi durumunda Sixt ofisleri rezervasyonda belirtmiş olduğunuz saatten sonra en fazla 1 saat içinde arabayı almanızı bekliyormuş, bunu da acı bir şekilde tecrübe ettik. Peugeot 308 sınıfı bir araç rezerve etmiştik, içine biraz zor sığdığımız bir Fiat Panda ile yetinmek durumunda kaldık. Belki İtalya şehir trafiğinde aracın küçüklüğü iyi bile oldu ama herhalde yine bir tercihte bulunacak olsam bugün de daha büyük bir aracı tercih ederdim. Geziye 25 Aralık’ta Milano’da başladık, sırasıyla Venedik, Floransa, Pisa, Siena, Roma, Pompei ve Napoli’yi gezdik, 2 Ocak’ta da Roma’da bitirdik. Şehir gezileri, en azından Avrupa içindekiler bana artık o kadar da zevk vermiyor. İlk başlarda epey hevesliydim ama artık içinde güneş, deniz ve dalıştan en az birinin olduğu tatilleri daha çok sevdiğimi fark ettim. Yine de tam o sıralarda -15 leri görmüş olan Nürnberg’de kalmaktansa sıcak denizlere inmiş olmak güzeldi.

Geziyle ilgili birkaç anı da şöyle:

  • Bir keresinde hava alanında aynı uçağa binecekken karşılaştığım Çağıl ile bu sefer de Coloseum’da karşılaştık. Bu nedenle kendisini bundan sonra beklenmedik yerlerde karşılaştığım arkadaşım olarak hatırlayacağım :).
  • Aslında Napoli ve Pompei gezinin orijinal planına dahil değildi. Daha sonradan Roma’da gezilecek yerler erken bittiğinden plana son gün dahil oldu. İyi de oldu, bu sayede içimizdeki oraya ait merakı da gidermiş olduk. Yalnız Napoli tam anlamıyla varoş bir şehir imiş, insan şehirde bulunduğu sürece kendini tam güvende hissetmiyor. 1 Ocak’ta gitmek de işin tuzu biberi oldu, açık bir pizzacı bile bulamadık, İtalya’nın pizzasıyla en ünlü şehrinde pizza yiyememiş olduk.
  • Gezinin ayarlamalarını yapan kişi olarak kendimi daha bir sorumlu hissettim. O nedenle diğer gezilerime oranla mental açıdan daha az bir rahatlama oldu. Aklım da o sırada Türkiye’de idi (sonraki paragrafta nedeni var), bu da bir etken olmuş olabilir.
  • Yılbaşına Roma’da girdik. Çok etkileyici bir havai fişek gösterisinin yanında sokaklarda da o kadar çok patlayıcı kullanıldı ki gözlerinizi kapatsanız kendinizi cephede hissedebilirdiniz.
  • Gezilerde normalde yürüyüş sırasında harita ihtiyacı olduğu zaman şu ana kadar Tomtom’u kullanıyordum ama açıkçası kendisinden çok da memnun değildim. Aklımda hep çevrimdışı Google haritalarını kullanan bir uygulama kullanmak vardı ama o zamana kadar bu işi Windows Mobile’da yapan bir uygulamanın varlığından haberdar değildim. Sonunda geziden bir gün önce böyle bir uygulamanın varlığından haberdar oldum. Ücretsiz uygulamanın adı NaviComputer, sitesi de şu. Sitede bilgisayara kurulup istenilen haritayı indirmenizi sağlayan bir uygulama da var. Uygulamada varsayılan olarak opensteetmap haritalarını indirme seçeneği açık olarak geliyor, Google gibi diğer harita siteleri için ne yapılması gerektiğini şu adresten öğrenebilirsiniz.

Bu güncellemenin son olayı maalesef pek hoş bir haber değil. Yaklaşık 1 aydır durumu çok iyi olmayan dedemi 3 Ocak’ta kaybettik. Kendisi epeydir hastaydı, bir dizi diğer problemin yanında solunum ve dolaşım sıkıntıları vardı. 20 gün kadar hastanede kaldı, ancak hastanenin çabaları da bir yere kadar yardımcı olabildi. Haberi alır almaz Denizli’ye gittim. 9 Ocak’a kadar oradaydım, sonra da tekrar Almanya’ya geri döndüm. Hastaneye giriş yapıldığı andan itibaren doktorumuz her şeye karşı hazırlıklı olmamız gerektiğini söylemişti, yani beklenmedik bir son değildi bu. Yine de insan üzülüyor.

Be seferlik de bu kadar…

Bilgisayar, Ivır zıvır , , , , , , , , , , , , , , ,

Aklımda Ne Vardı Benim?

Pazar, 25 Tem 2010

Başlıktaki soruyu hemen hemen her gün kendime soruyorum. Özellikle hafta içleri yatmak üzereyken aklıma gelenleri (nedense hep yatmak üzereyken aklıma süper fikirler geliyor) devamlı sonraki akşamlarda daha uygun bir vakitte yapmak için bırakıyorum. Sonraki akşamlarda da ne yapacağımı unutuyorum ama nedense bir şeyler yapacağım aklımda kalıyor, o yüzden evin içinde kendime bu soruyu sorarak aval aval geziniyorum (mecazi anlamda, deli değilim yoksa 😉 ).

Neyse, uzun zamandır gecenin bir yarısı aklıma gelenlerden biri de buraya yeni bir yazı yazmak idi. Hayatta pek de sık olmayan şeyler oldu en son yazımdan bu yana geçen zamanda. Onun dışında normal sayılabilecek ama yine de buraya yazmak istediğim birkaç olay daha var tabii.

iremMertcanÖncelikle İrem’i Mertcan’la evlendirdik. 3 + 1 gün süren düğün bittiğinde kimsenin düğün lafını duyacak hali kalmamıştı herhalde. Son anda eklenen imam nikahı ile başlayan düğün merasimleri kına gecesi ve yemekli nikah ile devam etti, düğün ile son buldu. Yandaki fotoğraf da düğünden. Her düğünde yaşanılabilecek sıkıntılar haricinde bir sorun olmadan atlattık. Canım kardeşime ve eşine tekrardan bir ömür boyu mutluluklar diliyorum :).

Bu arada düğün için Türkiye’ye gittiğimi yazmama gerek yok herhalde. 1 hafta öncesinden gidip hazırlıklara elimden geldiği kadar yardım ettim (bolca şoförlük yaparak), düğünden sonraki salı günü de geri döndüm. Birkaç gün denize girme şansım da oldu ancak 3 yıldır hayalini kurduğum güzel bir deniz tatilini bu sene de yapamadan geri döndüm. Yıl sonuna kadar 10 gün daha izin hakkım var ama deniz tatili yapabileceğimden pek umudum yok. Artık önümüzdeki seneye inşallah diyorum.

Yeri gelmişken Selin’in Lufthansa ile yaşadığı tatsız olaydan da bahsedeyim: Selin, dersleri ve işi nedeniyle düğüne çarşamba günü gelebildi, pazar günü de geri döndü. Ama az daha Lufthansa’nın fazladan bilet satması yüzünden gelemiyordu. Bu da aslında başka bir yazı konusu, uzun uzun saydırmak istiyorum buradan Lufthansa’ya, o yüzden ayrıntıya girmeden geçiyorum şimdilik. Yine de “Aklımda ne vardı benim?” diyerek hiç hatırlayamama ihtimaline karşılık şu iki linki vereyim.

Şimdi biraz daha başa döneyim. Ege düğünlerinde adettendir, düğün sonunda zeybek oynanır. Başka istek gelmediği sürece gelin ve damat, daha sonra da yakın akrabalar harmandalı oynamaya kaldırılır, oynamak neredeyse zorunludur. Ben de  bu sebepten dolayı epeydir harmandalı öğreneyim istiyordum, sahneye çıkmak zorunda kalırsam mal gibi kalmayayım ortada diye. Nürnberg’de tabii zeybek öğretecek birisini bulmak pek mümkün değil. Selin de bir arkadaşı aracılığıyla Münih’te bir şeyler buldu ama kim gidecek, ne sıklıkla gidecek diye düşündüğümden “Ben bunu kendim öğrenirim” dedim. Hakikaten de çalışınca oldu. Aşağıdaki videoya baka baka az bir şey öğrendim, çıktığımda az çok oynuyormuş havası verebildim.

Edit: Youtube videosu uçmuş, yeni eklesem o da uçar belli olmaz; siz en iyisi youtube’da “Harmandalı Öğreniyorum” yazıp ona göre artık ne çıkarsa oradan bakın.

Sonuç da bu oldu:

EminHarmandali

Tekrar güncel olaylara dönüyorum. Uzuuun zamandır bir bilgisayarwall3-800x600 (daha) almayı düşünüyordum. Şu an bu yazıyı yazdığım dizüstüm 4 yıldır çekiyor kahrımı, diğer bilgisayarım Mac Mini sayesinde Mac OS X ile de tanışmış oldum, kendisini severek kullanıyorum. Ancak her ikisi de Intel ekran kartına sahipler ve bu nedenle eski oyunları bile oynatmıyorlar. Gerçi oyun oynamak için PS3 almıştım geçenlerde ama strateji olsun RPG olsun bol klavye kullanılan oyun türleri için PS3 maalesef çok uygun bir ortam değil. Ha bir de tabii yine yeni teknoloji merakım da yok değil, dizüstüme Windows 7 kuramadım, Mac in sabit diski de kendine ancak yetiyor. Zaten bir de zamanında Starcraft 2’nin geliştirildiğini duyduğumda “Bu oyun bana bilgisayar aldırır” demiştim, o olmasa Diablo 3 aldıracaktı zaten. Sonunda Starcraft 2’nin de yakında çıkacağını duyunca araştırmalarımı biraz daha yoğunlaştırdım. Önce dizüstü bilgisayarımı yenileyeyim demiştim ama sonra bundan vazgeçip bir kasa almaya karar verdim. Döndüm dolaştım yine Dell’in bir modelini (D00SX704) beğendim, sipariş ettim, gelmesini bekliyorum. Gönderim sistemleri çok yavaş ama yapacak bir şey yok. Bu arada ilk defa da AMD kullanmış olacağım. Unutmadan yazayım, günün birinde Dell’den bir sipariş verecek olursanız internetten mutlaka indirim kuponu arayın. Kampanyada olduğu için 380€ ucuzlamış bu kasayı internetteki 10 dakikalık araştırmam 50€ daha ucuzlattı. Dizüstü bilgisayarımı da bu sayede 750$ daha ucuza almıştım. Hatta siparişimden sonra Dell’in bana gönderdiği %10’luk kupon kodunu da buraya yazayım, bu aralarda Dell’den bir şeyler almak isteyen olursa kullansın (31 Temmuz’a kadar geçerli): V3Z7?$TGFHRQL7

İşte de keyfim yerinde bu aralar. Bana yetişemedikleri için yaptığım işin hızını düşürmek zorunda kaldım, rölantide çalışıyorum. Ayrıca birkaç gün önce şu anki çalışma modelimin 1 yıl daha devam edeceğini öğrendim. Yani yine PROFINET yeniliklerinin test edilebilmesi için gerekli olan mühendislik sistemini geliştirmeye devam ediyor olacağım. Şansım mı yaver gidiyor bu konularda bilmiyorum ama Almanya’ya geldim geleli çalıştığım projeler neredeyse her zaman türünün ilk örneği oldu. Bu da insana çalışmak için ayrı bir heves veriyor. Tek problemim şu anki işimi yanımda Türkiye’ye götüremeyecek olmamın verdiği küçük rahatsızlık. Ama zaten yaklaşık 2 yıl daha Almanya’da çalışmaya devam edeceğimden bunu şu an için o kadar da büyük bir sorun olarak görmüyorum.

İşte geçen haftanın bir diğer konusu ise hata kayıt sistemimizdi. Sisteme 1 milyonuncu kaydın düşmesini bekledik. Her ne kadar daha sonradan bu 1 milyon numaralı kaydın sistemde gerçekten 1 milyon kayıt bulunduğunu göstermediğini anlamış olsam da yine de birkaç gün heyecan yaptık, kime gidecek bakalım bu kayıt şeklinde konuştuk. Bu arada sistemi Siemens’in birçok projesinin yoğun bir şekilde kullandığını ve yıllardır açılan kayıt sayısının toplamının belki 1 milyon tane olmasa da yüzbinlerle ifade edilecek bir miktarda olduğunu söylemek gerek. Merak edenler için de sistemin Clearquest tabanlı olduğunu da yazayım.

Az daha unutuyordum. Bir dünya kupası daha geçti hayatımızdan. Ben de Almanya’da bulunduğum süre boyunca birkaç maç seyrettim. Maçları tahmin ettiğiniz gibi projektörümden yaptım diyecektim ki projektör aldığımı buraya yazmadığımı fark ettim. Hemen onu da araya sıkıştırayım:

DSC02863Şubat ortasından bu yana bir projektör sahibiyim. Panasonic AX200E modelin adı. Buğra sayesinde birkaç yıl önce tanışmış olduğum projektör keyfini artık evde yaşıyorum, oyunları büyük ekranda oynuyor, filmlerimi de burada seyrediyorum. Kendisine bir de Ikea’dan raf aldım, Playstation ve oyunlar ile birlikte oturma odasının uygun bir yerinde duruyorlar. Alttaki çekmeceden çıkan kablo da bilgisayara gidiyor film ihtiyaçları için. Teoride işi bittiği zaman kabloyu kaldırıp çekmeceye koymak, ortalıktaki kablo karmaşasını azaltmak da mümkün. Çekmeceleri aynı zamanda konsolun bilumum kontrolörleri vs. için de kullanıyorum. Neden LCD ekran değil diyenlere ben de zamanında öyle düşünüyordum ama ekran boyutunu görünce fikrim değişti diyorum. Bir diğer sebep de bu aleti dönerken Türkiye’ye getirebilecek olmam, ne de olsa ekrandan daha taşınabilir durumda. Unutmadan, projektörden çok memnunum, almak isteyenlere kesinlikle tavsiye ederim.

Bunlar da ekrandan birkaç görüntü (Alman kanallarının internet üzerinden HD yayını sağ olsun):

DSC01654 DSC01658

Bilgisayar, Ivır zıvır , , , , , , , , , , , , , , , , , ,

Çizge Algoritmaları?

Pazar, 25 Nis 2010

Son projeme başladığımdan beri üniversitede öğrendiklerim daha bir işe yaramaya başladı. Hatta ilginçtir,  aklımda biraz daha bişeyler kalmış olsa daha iyi olurdu dediğim bir ders bile var, Graph Algorithms (Çizge Algoritmaları). Burada beni en çok düşündüren 2 problemi yazayım istedim, sonradan baktığımda “vay be, zamanında bunlarla da uğraşmışım” diyebilmek için. Ama tabii konu ile ilgili paylaşmak istediğiniz bir fikir varsa beklerim, hatta çok da memnun olurum.

Soruların ilki bir graphta ring (cycle, circuit, yuvarlak,… ne isim verirseniz artık) belirlemekle ilgili. Elimizde undirected bir graph var diyelim. Bunun içindeki elementary cycle ları bulup listelememiz gerekiyor. Graphta sadece cycle olup olmadığını belirlemek yetmiyor yani. Elementary cycle, sadece başlangıç nodunu 2 defa, diğer nodeları sadece 1 defa içeren cycle demek. Yazacağımız algoritma örneğin aşağıdaki graphta çalıştırıldığında şu sonuçları vermeli: 1 – 2 – 5 – 1, 1 – 2 – 3 – 4 – 5 – 1, 2 – 3 – 4 – 5 – 2.  1 – 2 – 3 – 4 – 5 – 2 – 1 gibi bir sonuç çıkmamalı çünkü bu sonuç elementary bir cycle değil.

Soru basit aslında. Ama verimli bir algoritma yazmak o kadar basit değil maalesef. Problemin boyutunun farkına varmadan oturup kendim çalışan bir kod yazdım aslında bununla ilgili. O da basitçe anlatmak gerekirse graphtaki her bir node a gidip o nodun bağlı bulunduğu bütün cycle ları buluyor. Bir yandan bulunan bütün cyclelar bir liste halinde tutuluyor, yeni bulunan cycle ın daha önce bulunanlardan farklı olduğu anlaşıldığında bu cycle da listeye ekleniyor.

Bu çözüm aslında 2 sorunu da beraberinde getiriyor. Bunlardan ilki, her node için yapılan aramada graphtaki node ve edge lerin tamamının dolaşılıyor olması, yani yavaşlık. İkincisi ise boş yere yapılan aramalar. Örneğin bir cycleda 10 node var diyelim, aynı cycle bu 10 nodun her biri için tekrar bulunuyor, bir de sonra tekrardan bu cycle bulunmuş muydu diye karşılaştırma yapılıyor. Yani yine yavaşlık. Büyük graphlar için tahminen feci yavaş çalışan bir algoritma yani bu.

Neyse, bunun farkına vardıktan sonra internette zaten paralel bir şekilde yaptığım araştırmaları biraz daha hızlandırdım ve bu konu ile ilgili yazılmış olan bir makale buldum. Etraflıca düşünmeden makalenin üzerine atladım, araya başka işler girdiği için hemen yazamadım ama sonunda bu hafta başında çalışır bir kod vardı elimde. Tam ne güzel yazdım, hallettim diye sevinirken benim akıllılığım ortaya çıktı, bu algoritmanın directed graphlar için yazılmış olması ve benim undirected graphı kolayca directed grapha çeviririm nasılsa düşüncem bir anda çöküverdi. Bunun üzerine tabii şöyle büyük bir bardak soğuk su içtim, sonrasında cidden undirected graphlar için yazılmış olan bir makale var mı onu araştırmaya başladım. Şunu ve bunu buldum şimdilik ama makalelerin orijinallerine ulaşamadığım için halen bunlar işe yarar mı bilmiyorum. Üniversite ağından bu yazıyı okuyan arkadaşlar makaleleri gönderebilirlerse süper olur hatta, sade vatandaşa paralı çünkü makaleler.

Geldik ikinci probleme. Şimdiden söyleyeyim, daha problem tanımı değişebileceği için uygulanacak çözüm de değişmek durumunda kalabilir ama her şekilde enteresan gördüğüm bir problem olduğu için yazıyorum buraya. Olay networkte dolaşan frameleri numaralandırmak ile ilgili. Elimizde bir network var diyelim, burada dolaşacak olan her bir frame i de önceden bildiğimizi kabul edelim. Bu dolaşacak framelere birbirinden farklı numaralar vermemiz gerekiyor. Networkte IO Controllerlar (IOC) ve IO Devicelar (IOD) var. Frameler ya bir IOC ile bir IOD arasında (genel durum), ya da bir veya birkaç IOC arasında (sayıları IOC – IOD framelerinden genelde daha az) transfer ediliyor, yani başlangıç ve bitişi IODler olan frameler yok. Networkü oluşturan graph connected, yani herhangi bir başlangıç nodunu seçtiğimiz zaman oradan diğer bütün nodelara ulaşabiliyoruz. Graphta cyclelar olması mümkün, hatta işi zorlaştıran kısım bu cycle lar. Yolculuğu sırasında herhangi bir cycle a ait bir node dan geçen bir frame a bandından, hiçbir cycle la alakası olmayan bir node da b bandından numara alıyor. Bu bantlar da birbirine bitişik. b bandı x ile y arası numaraları kapsarken a bandı da y+1 ile z arası numaraları kapsıyor.

Sorunun sıkıntılı kısmı şu: Her bir node (IOC ya da IOD) kendi üzerinden geçen framelerin numaralarını bir yerde tutuyor. Yalnız bu frameler öyle numaralandırılmalı ki bir nodun tuttuğu frame numaralarının en büyüğü ile en küçüğü arasındaki fark, o nodun maksimum tutabileceği farkı geçmesin. Örneğin bir node için bu değer 512 ise bizim verdiğimiz frame numaralarının en büyüğü ile en küçüğü arasındaki fark 512 den küçük olmalı. Bu değer her bir node için farklı bir değer olabilir.

Soruyu biraz daha elle tutulur hale getirebilmek için bir örnekle birlikte tekrar anlatmaya çalışayım:

Bu graphta dolaşan frameler de şu şekilde olsun: IOC1-IOD1, IOD1-IOC1, IOC1-IOD2, IOD2-IOC1, IOC1-IOD3, IOD3-IOC1, IOC2-IOD4, (her bir IOD ile o sütunun başındaki IOC arasında 2 frame şeklinde doldurulacak)…,IOD8-IOC3, IOC2-IOC4.

Her bir noddan geçen frameler de şu şekilde olmuş oluyor (Birkaç node için örnek):

IOC1 –> IOC1-IOD1, IOD1-IOC1, …, IOD3-IOC1

IOD1 –> IOC1-IOD1, IOD1-IOC1, IOC1-IOD2, IOD2-IOc1, IOC1-IOD3, IOD3-IOC1

IOC3 –> IOC3-IOD8, IOD8-IOC3, IOC2-IOC4

Bu örnekte IOC3 için bu maksimum fark değerinin 5 olduğunu varsayalım. Böyle bir durumda diğer her bir node için olan fark değerlerinden bağımsız, IOC3 üzerinden geçen frame numaraları birbirine çok yakın olmalı. IOC3 üzerinden geçen framelere baktığımızda IOC2-IOC4 frameinin cycle üzerinden geçen bir frame olduğu görülebilir. Bu frame için cycle frame bandı kullanılacağı için algoritma bu node üzerinden geçen bütün frameleri y’ye mümkün olduğunca yakın tutmaya çalışmalıdır. Örnek bir çözümdeki frame numaraları şöyle olabilir: IOC3-IOD8: y-1, IOD8-IOC3: y-2, IOC2-IOC4: y

Neyse, soru bu. Dediğim gibi daha üzerinde çok fazla düşünmeye vaktim olmadı. Bu soru gerçekten bana patlarsa daha sonra bulduğum çözümü de buraya yazarım. Bu arada dediğim gibi herhangi bir soruya, fikre ve çözüme de açığım.

Güncelleme: İlk problemle ilgili makaleleri sağolsun Soner gönderdi. İlk incelediğim makalede pek iş yoktu ama ikincisi beni tam anlamıyla kurtardı.  Makalede o zamana kadar bu problem ile ilgili yazılmış olan algoritmalar karşılaştırılmış. Sonuç olarak benim de implemente ettiğim Johnson’un algoritmasının içlerindeki en hızlısı olduğu sonucuna varılmış (O(e+n)(c+1), e: Edge sayısı, n: Node sayısı, c: Cycle sayısı). Ayrıca daha da güzeli, bu algoritmanın undirected graphlara nasıl uygulanabileceği de yazılmış, aslında tam da benim ilk başta yaptığım çevrim yapılmış.  Benim bu çevrimin çalışmayacağını düşünme sebebim, yöntemin kendisinin de çevrim sırasında orijinal undirected graphta olmayan cycleların ortaya çıkmasına sebep olmasıydı. Düşünemediğim şey ise bu sonradan çıkan cycleların sayısının aslında o kadar da çok olmamasıymış (Orijinal undirected graphta c cycle varsa directed çevriminde 2c+e kadar). O nedenle algoritma koştuktan sonra mantıklı bir eleme yapılabiliyor. Hatta şimdi yazarken aklıma geldi, diğer bir optimizasyon da bu algoritmanın verilen graphta gerçekten cycle varsa koşmasının sağlanması olabilir, bu sayede örneğin büyük graphlarda e fazladan ortaya çıkan e kadar cycle aranmak durumunda kalınmaz.

Bilgisayar , , , , , , , , , , ,