Planet Portakal
by Portakal Teknoloji

May 08, 2008

Bora Güngören

İşleri bitirmek

İngilizce'de "ı've got things to do" dediğiniz zaman, birebir çevimek yerine herhalde "bitirmem gereken işlerim var" demek daha doğru olur. David Allen'ın popüler "getting things done" yöntembilimini de "işleri bitirmek" diye çevirmek doğru olur diye düşünüyorum.

1990'lardan beri yaşamımın çok değişik dönemlerinde çok değişik çalışma yöntembiimleriyle yüzleştim. Herhalde Covey'nin 7 alışkanlık kitaplarını duymayan kalmamıştır. Bir süredir kendimce dersler çıkarmaya çalıştığım yöntembilim ise anlamışsınızdır ki GTD. Peki nedir bu GTD?

Çoğu kişinin yanlış anladığı biçimi ile GTD bir zaman yönetimi aracı. Bununla birlikte size nasıl daha çok zaman yaratacağınızı anlatmıyor. Sadece elinizdeki zamanı daha verimli kullanabilmek için bir yaklaşım sunuyor. Bunda yeni hiç bir şey yok. Ancak Allen'ın GTD'deki temel mantığı burada farklılık yaratıyor. Allen önce bu tür yaklaşımların uygulamada neden başarısız olabileceklerini düşünmüş ve uygulamada başarılı olacak bir yöntem nasıl olur bunu araştırmış.

Hemen herkesin temel kabulleri olan Covey'nin 7 alışkanlığı ve ABC zaman yönetimi üzerine kurduğunuz (ki ben bunu çok iyi yapardım) bir mekanizma içinde aslında o kadar da önemli olmayan bir çok iş de bulunuyor. Üstelik bunlar acil de olmayabilir. Örnek olarak arabanızdaki kış lastiklerini çıkartıp yaz lastiklerini geri takmak kesinlikle önemli bir iş değil, acil de değil - isterseniz dört mevsim kış lastiği kullanabilirsiniz - dolayısı ile bahsettiğim tür işler için iyi bir örnek. David Allen bu örneği veriyor çünkü, Mayıs ayı gelip lastik yakmaya başladığınız zaman bu iş belki hala önemsiz ama kesinlikle acil bir hal alıyor.

Eğer sık sık hayatınızda temiz bir sayfa açamıyorsanız, o zaman herhangi bir anda geçmişte ertelediğiniz önemsiz, geçmişte acil de olmayan işlerden bir yığına sahipsiniz demek. Bunlar yakında acil hale gelecek yada geldi bile. Yani kalkıp sadece önceliklere göre hareket ederseniz aslında önemsiz olan ama aciliyet kazanmış işlerden oluşan bir yığına sahip olmanız kaçınılma. Sonra da bu işler yüzünden önemli işlerinize odaklanamadığınızı düşünüp aralıksız biçimde yakınacaksınız.

Allen'ın önerdiği alıştırmalardan birisi, yatmadan önce "bu gün neyi atlatmaya çalıştım?" sorusunu sormak. Ardından "peki bundan kurtuldum mu yoksa gelecekte karşıma çıkacak mı?" demek de gerekiyor. Eğer bugün atlattığınız bir şey gelecekte yeniden karşınıza çıkacaksa, o zaman aslında onu atlatmış değilsiniz. Dolayısı ile ne kadar küçük olursa olsun, işlerin bitirilmesi gerektiği gerçeğinden kaçarak zaman yönetimi yapmak çok anlamlı değil.

Zaten bu nedenle GTD, bir zaman yönetiminden çok bir eylem yönetimi (İng. action management) olarak görülmeli. Zaten siz zamanı yönetemezsiniz. Zaman akar. Siz sadece kendi eylemlerinizi yönetirsiniz ve zaman bir kaynaktır. Peki eylemlerinizi yönetirken ne yapmalısınız? Allen diyor ki, şu türde bir çevrime girmeliyiz:

Aşağıdaki şekil hepsini özetliyor aslında:

Elbette bu tür bir yöntembilimi kurgulamak için türlü türlü araçlar gerekiyor. Allen standart kırtasiye malzemesinden yararlanabileceğinizi vurguluyor. Ancak ABD'deki bilişim çalışanlarının GTD'ye ilgisi nedeni ile türlü türlü GTD yazılımları ve ekleri kullanılır oldu. Bu nedenle GTD için araç bulmak zor değil.

Ben ne mi yapıyorum, henüz kağıt kalemle çalışıyorum ki GTD'yi sindirmem daha hissedilir olsun; içselleştirdiğimden emin olayım.

May 08, 2008 11:08 PM

Özlem Hangün

Ar-Ge Yardımları Başvurusu Hazırlama Çalıştayı

ODTÜ Teknokent, 3-4-5 Haziran tarihleri arasında, Eğitim Programları kapsamında Ar-Ge Yardımları Başvurusu Hazırlama Çalıştayı düzenleyecek. Çalıştay eğitimini Sn. Müfit Akyos ve Sn. Sema Kendir verecek.

Çalıştayda, katılımcıların temel kavramlar ve ilgili mevzuat konusunda bilgilendirilmeleri hedefleniyor. Uygulamalı çalışmada, TÜBİTAK- TEYDEB tarafından yürütülen 1502- SANAYİ AR- GE PROJELERİ DESTEKLEME PROGRAMI ve 1507- KOBİ AR-GE BAŞLANGIÇ DESTEK PROGRAMI başvuru dokümanları esas alınacak. İlgili mevzuat çalışması uygulamalı atölye çalışması ile pekiştirilecek.

Başvuruda bulunmak için son tarih 27 Mayıs. Ayrıntılı bilgi ise, ODTÜ TEKNOKENT'ten Sn. Betül Sabah'tan (Tel: 0312-2106400) alınabilir.


May 08, 2008 10:46 AM

Bora Güngören

JSR321 yolda

OpenTC projesi içinde çalışırken bir çok projenin aslında Java projeleri olduğunu görüyoruz. Bu nedenle OpenTC projesi Java'da Güvenilir Bilişim uygulamaları için de bir itici güç oluşturuyor. Java standart süreci içinde yakın zamanda yer alan JSR321 kodlu Java standart grubumuzun da neredeyse tamamı OpenTC ortaklarından gelen kişilerden oluşuyor. Bakın kişi diyorum çünkü Java standart süreci aslında gerçek kişilerin katıldığı bir süreç. Eğer bir firmayı temsil etmek isterseniz o zaman firmanın yönetiminden temsil yetkisine dair bir ek izin alıyorsunuz ancak normalde süreç gerçek kişilerin katılımı için tasarlanmış.

Peki bize 321 düştüğüne göre bizden önce 320 tane ekip olmalı değil mi? Java süreci çok geniş kapsamda ve çok kalabalık bir süreç. Bu kadar geniş kapsam söz konusu olunca, ister istemez entegrasyon zorlaşıyor. Bu nedenle her bir JSR grubunun diğer JSR'leri de takip etmesi gerekli.

Bugünkü JSR toplantımızda JSR sürecini tartıştık. Oldukça yararlı olduğunu düşünüyorum. Kısaca özetlersek, JSR süreci aşağıdaki gibi işliyor:

Az iş değil, ama ekip de çok sağlam. Önümüzde Temmuz ayında bir Torino toplantısı var. O toplantıya kadar mümkün olduğunca çok yol kat etmeye çalışacağız ki toplantıdan sonra daha somut çıktılara doğru ilerleyelim.

May 08, 2008 08:51 AM

Proje yönetiminde mükemmellik

Bu aralar giderek artan sayıda projeyle aynı anda muhatap olduğum için, giderek daha çok proje yönetimi konularında kafa yormam gerekiyor. Bir projenin başarılı olması için nitelikli bir proje yönetimi gerektiği ortada.

Nitelik yani kalite dendiği zaman da mükemmellik modelleri akla geliyor. Ancak bu modellerin ucu bucağı yok. Çünkü mükemmellik arayışının hedefi zaten uçcus bucaksız. Bu durumda kendi özel durumunuzu temel alarak mükemmeliyeti kendiniz için tanımlamanız gerekiyor.

Küçük ölçekli ekiplerin, yazılım geliştirme ağırlıklı faaliyetler yürüttüğü projeler için proje yönetiminde mükemmelik modeli dediğiniz zaman nelere odaklanmalıyız bunları araştırmak gerekiyor. Bu kapsamda çalıştığımız zaman bir kaç konuya odaklanmanın herşeyi içermese dahi, en önemli olanları kapsadığını görüyorsunuz.

Özetlersek, bence görev-hız-kalite üçlüsünü o yada bu şekilde kendine özel doğrular üzerine kurgulayan bir organizasyonun proje yönetiminde başarılı olmasını bekleyebiliriz.

Bize önerilen türlü reçeteler ise aslında belli bazı organizasyonlarda başarılı olduğu bilinen kurgulardan oluşuyor. Başkası için işe yarayan şeyin bizim için de işe yarayacağı gibi sıradan bir varsayım ile bu reçeteleri uyguluyoruz. Elbette ki hiç bir şey yapmamaktansa bu reçeteleri uygulamak mümkün ama aslında en doğru reçetenin bizim kendi durumumuz için yazılmış reçete olduğunu da asla unutmamalıyız.

Portakal Teknoloji'de bu üç temel taş üzerine kurgulanmış bir proje yönetimi mükemmeliyet modelini kurmak, hayata geçirmek ve sürekli kılmak önümüzdeki dönem içinde en önemli amacımız olacak.

May 08, 2008 05:00 AM

OpenTC son 1 yılına girdi

Dün başlayan ve Görkem'in organizasyonu sonunda bu kez Antalya'da yapılan OpenTC koordinasyon toplantımız tempolu bir şekilde ilerliyor. Antalya'da toplantı olduğu zaman katılanlar dahil herkes denize girmek, havuzda güneşlenmek gibi aktiviteler düşünürken, olan şey sabah 9'daki başlangıç toplantısına katılan ve sonra gece geç saatlere kadar diz üstü bilgisayarlarını açık tutan 50'den fazla insan oldu. Ben ve Erdem de bu tempoya ayak uydurduk. Aslında Erdem dün gece 5'de yatıp sabaha yetişerek beni de (3 gibi) geçti. Ben odamda çalışırken bir yandan televizyonda açık olan1981 yapımı Excalibur'u bile takip edebildim. Atılacak epostalar, benim yazmadığım ama gözden geçirmem gereken Java kodları, ufak tefek idari işler derken zaman nasıl da geçiyor.

Bugün benim gündemimde Java'da TPM desteği verilmesini öngören JSR321 standart çalışma grubumuzun toplantısına katılmak (ki paralel bir toplantı da aynı anda ABD'de Java One konferansında oluyor), OpenTC'nin 5 ve 6 numaralı iş paketleri arasındaki ortak API'nin tartışılacağı toplantı var. Erdem ise bir süredir başımızı ağrıtan vTPM sorunlarının tartışılacağı toplantıya katılacak.

Bu arada, dün EFS'nin çok güzel bir demosunu yaptık. Yakında altyapımızı oluşturan kodarın IBM tarafından yazılan kısmı CPL ile açıldığı zaman biz de kendi kodlarımızı GPL ile açabiliyor olacağız. Ufak tefek bazı konfigürasyon değişikleri önerilince onları da toplantı bitmeden yapalım dedik. Erdem ve Mete'ye de iş çıktı. Yetiştirebilirsek Cuma akşam yada Cumartesi sabah göstereceğiz.

Çok yoğun bir kaç gün geçireceğiz. Cumartesi gecesi dönünce sıkı bir uyku çekip, Pazar sabahı işe güce odaklanmaya devam etmemiz gerekecek. Hepimize kolay gelsin.

May 08, 2008 03:36 AM

May 04, 2008

Bora Güngören

Macbook Air

1995'den beri merak ettiğim şey nihayet oldu. Bugün itibarı ile ben de bir Mac kullanıcısıyım. Saat 20 sularında benim de bir Macbook Air diz üstü bilgisayarım var.

Henüz çok fazla kurcalama şansım olmadı. Ama şunu söyleyebilirim ki, kurulum dosyasını uygulamalar dosyasına sürükleyip bırakarak uygulama kurmak son derece zevkli. Önümüzdeki günlerde bir çok yeni maceramı buradan aktarıyor olacağım. Hedefim önce Mac OS X'e tam olarak alışmak ardından Mac OS X'in sanallaştırma aracı olan Boot Camp kullanarak aynı anda Pardus kullanmak olacak.

May 04, 2008 09:05 PM

May 03, 2008

Bora Güngören

İşkolik ne demek?

Zaman zaman LinkedIn'den bahsettiğimi biliyorsunuzdur. Bugün sitedeki forumlarda gezerken ilgimi çeken bir forum ile karşılaştım. Birisi çalışkan insan ile işkolik nasıl ayırt edilir diye sormuş. :)

Elbette türlü türlü yanıtlar var. IBM'den Eric Vonheim isimli bir yönetici ikisini nasıl tanımladıklarını vurgulamış. Ona göre çalışkan bir kişi

gibi özelliklere sahip, bir işkolik ise gibi özelliklere sahip. Buradan yola çıkarak kişinin durumunu değerlendirebildiklerini ifade ediyor. Önerdiği çözüm ise, kişilere zaman zaman kariyer değişikliği yaptırtıp, değişikliğe sorlayıp, bir anlamda cesarete zorlayıp bu şekle dönüşmelerini engellemek. Aslında haksız da değil. Ne de olsa işkoliklik bir birikim süreci. Bu süreci arada kesintiye uğratmak sorunun kökenine saldırmasa da gelişmesini engelleyici ve yavaşlatıcı bir şey.

Yine benim hoşuma giden bir diğer yanıtı da Mel Wildermuth vermiş. Çok kısaca çalışkan bir kişinin çalışmaktan aldığı zevk ile bir işkoliğin alamadığı zevki karşılaştırmış. Daha sonra da 5 Faktör Modeli (FFM) için gönderme yapmış. Bu model de aslında başka bir zaman uzun uzun tartışılabilecek bir konu. Ama anladığım kadarı ile Mel Wildermuth çalışkanlık ve işkoliklik arasındaki ayrımı nevrotik olmak üzerine kuruyor.

Biz 'de çok çalışıyoruz. Geçenlerde Serdar ile konuşan birisi "sizin oradakilerin bu ara işi çok anlaşılan" demiş. Evet işimiz çok. Ama yaptığımızdan ciddi zevk aldığımıza göre, belki de işkolik değiliz. :)

May 03, 2008 11:26 AM

Benim de feedburnerım oldu

Bir süredir yapmayı erteleyip duruyordum. En sonunda az önce yaptım. Artık benim blogum da FeedBurner üzerinden RSS veriyor.

bunu yapında büyük bir şey mi oldu? Hayır. Aynı anda on binlerce kişi blogumu mu okuyacak? Yine hayır. Ama heves ettim diyelim. El değmişken aşağıdaki küçük simgeyi de koyalım.

I heart FeedBurner

May 03, 2008 10:42 AM

May 01, 2008

Bora Güngören

Yaz staj projeleri -5-

Bu son girdi ile, yaz projelerini tanıtma işini bitirmiş oluyorum.

TOBB ETÜ'den gelen ve 28 Nisan - 8 Ağustos gibi geniş bir aralıkta (16 hafta) staj yapacak arkadaşlarımıza ise daha uzun soluklu bir proje vereceğiz. Yurt dışında yüksek lisans öğrencilerinin stajlarında verilen türde bir projenin bir kısmını yapmalarını isteyeceğiz. Bu proje elbette diğer stajyerlerimizin de katkı koyacağı bir proje. TVQ diye kısaltacağımız (Task-Velocity-Quality / Görev-Hız-Kalite) kendi çapında çevik bir yaklaşımı uygulamak için gereken araç kümesini geliştirecekler. Kümenin içinde üç temel parça olacak.

  1. TVQ::Task - Görev takip yazılımı (Struts2 / Spring / Hibernate) : Bu alt projede bir yazılım projesinde geliştiricilerin kendilerine ve ekip arkadaşlarına görevler atamaları ve bu görevleri takip etmelerini hedefliyoruz. Doğaldır ki görev takip sistemi içinde faydalı bazı özellikler de olacak.
  2. TVQ::Velocity - Proje hızı takip yazılımı (Struts2 / Spring / Hibernate) : Bu alt projede XP pratiklerinden birisi olan proje hızı takibini hedefliyoruz. Proje hızını, önceki varsayımlarımız ile karşılaştırarak, giderek daha iyi varsayımlar yapmamıza dönük bir geri besleme mekanizması da projenin ilerleyen aşamalarında ortaya çıkacak.
  3. TVQ::Quality - Proje kalite takip yazılımı (Struts2 / Spring / Hibernate) : Bu alt projede, yazılım kalitesi kavramının peşine düşeceğiz. Tabii bu son derece geniş bir anlam ifade edebilecek bir kavram. Bu nedenle kalitenin tanımlanması gerekecek. Bu anlamda her bir yazılım projesi için o projenin niteliklerini de gözönüne alarak öncelikle belirteçlerin (indicators) seçilmesi ve bu belirteçlerin takip edilmesi ile başlayan bir süreç öngörüyoruz. Dolayısı ile bu alt projede çevrimler öncelikle belirteçleri takip edebilecek alt yapının geliştirilmesi, ardından tek tek yeni belirteçlerin eklenip test edilmesi üzerine kurulu.

May 01, 2008 11:25 PM

Yaz staj projeleri -4-

Yaz stajında stajyerlerimizin uğraşacağı projeleri daha tanıtmaya devam. Bu sefer doğrudan bizim bir ihtiyacımızı ortaya koymasa dahi, gözlemlediğimiz iki önemli ihtiyacı giderecek iki proje daha var:

May 01, 2008 11:20 PM

Emre Yüce

Donanma Komutanlığı Malzeme Sergisi Ankara'da

Türkiye'de üniversite sanayi işbirliğini artıracak bir sergi olan ve Deniz Kuvvetleri Komutanlığı envanterinde bulunan yedek/ onarım malzemeleri içerisindeki yerli malzeme oranını artırmak, yurt dışından tedarik edilen malzemelerin yerli sanayi imkanları ile üretilebilirliğini tespit etmek, yurt içinden temin edilen malzemeler içerisinde rekabet ortamı yaratmak ve alternatif üretici firmaları tespit etmek maksadıyla düzenlenen "Donanma Komutanlığı Malzeme Sergisi'nin 6’ncısı; 07–20 Mayıs 2008 tarihleri arasında OSTİM Organize Sanayi Bölgesi/ Ankara’da ziyarete açık olacak. 

Ostim Yönetim kurulu başkanı Orhan Aydın'ın açıklamasına göre "aralarında makine, elektrik, elektronik, silah sistemleri yedek parçaları, filtreler, rulmanlar, yataklar, elektronik kartlar, güç kaynakları, elektronik bileşenler, lambalar vb.. olmak üzere yaklaşık 2.000 kalem malzeme; alınacak miktar ve fiyatlarıyla birlikte sergileneceği" bu sergi tüm sanayicileri ve öğretim üyelerini buluşturmayı hedefliyor.

May 01, 2008 05:48 PM

Bora Güngören

Work at Jelly

Benim ilgimi çekti. Siz ne dersiniz?

May 01, 2008 05:42 PM

April 30, 2008

Bora Güngören

Yaz staj projeleri -3-

Birer ikişer proje başlıklarını anlatmaya devam edersek, bir de hem Portakal Teknoloji'de hem de bir çok yerde üretilen bilginin işlenmesi ve sunulmasına yardımcı olabilecek projeler olmalı değil mi? İşte bu amaçla bir şeyler üretsek isteyince, "yazsak yazsak yazın ne yazsak?" deyince, aklımıza aşağıdakiler geldi:

April 30, 2008 09:43 PM

Bilgi toplumu ve özgür yazılım üretimi

Geçenlerde bir sohbet sırasında, "bilgi toplumu dediğimiz şeye doğru ilerlerken, özgür yazılımın etkisi ne olur?" sorusu ile karşılaştım. O sırada bir yanıt veremedim ama bir kaç gündür kafamı meşgul edip duruyordu. Aklıma gelenleri bir yaz-boz tahtası gibi buraya yazmak istedim.

Bilgi toplumu dediğimiz zaman dört ana kavramın toplum hayatımızın olmazsa olmazı haline gelmesini kast ediyoruz.

Bu dört boyutun nasıl gerçekleştiği, bilgi toplumu diye nitelediğimiz geleceğin de nasıl olacağını ortaya koyacak. Temelde bilim insanlarının yeni bilgiyi ürettiği varsayımı ile başlayan bir değer zinciri üzerinden analiz yapıyoruz. Halbuki günümüzde bu tek ana kaynak varsayımı zayıflamış. Çoğu kez, veri yığınlarını da bilgi olarak görenlerle karşılaşıyoruz. Sizin hangi gün hangi otobüslere bindiğinizin verisi, otobüse binen herkesin aynı verisi ile birleştirildiği zaman hem size hem de tüm topluma yararlı sonuçlar çıkabilir. Bakın burada veriyi üreten sizsiniz. Buradan hareketle kitap yayınlayan yayınevleri, makale veri tabanları gibi rollere bankaların bilgi işlemleri, otobüs firmaları gibi veri depolayan herkes de ekleniyor. Böylece veriyi düzenleyen ve örgütleyenler inanılmaz bir çeşit ve örgüt yapısı kazanmış. Bilgiyi işleyen kişiler de alışıldık uzman yada danışman kimliğine uymak zorunda değil. Belki de verinin ve başka kaynaklardan gelen bilginin işlenmesi ile yeni bilgi elde etmek sürecinin otomatikleştiren yazılımların yaygınlaşması ile uzmanlık kavramını da yeniden tanımlamak gerekiyor. En son olarak da bilginin yaygınlaştırılmasında klasik eğitmen rolü ve klasik yayıncı rolü de zayıflıyor. Hem öğreten kişiden çok öğrenen kişiye odaklı bir anlayış gelişiyor hem de yayıncılık farklı boyutlar kazanıyor.

Batı dünyasındaki ekonomik düzendeki değişme, bilgiyi üretmekle ve işlemekle sorumlu olanlara yüklediği sorumluluklara da yansıyınca aslında uzun dönemde çok da hoşa gitmeyecek sonuçlar doğabiliyor. Şöyle ki, büyük şirketlerin çeyreklerde kar açıklama kaygısı uzun dönemde zararı olacak kararlar vermelerine neden olabiliyor. Bu kararlar sadece üretim maliyetleri, dağıtım ağları gibi fiziki şeyler değil aynı zamanda bilginin nasıl üretildiği, nasıl yaygınlaştığı gibi konularda da etkilere sahip. Bir fabrika ile o fabrikanın ürettiği ürünün testlerini yapan tesisi ayırmak, aslında önemli etkilere sahip.

Özgür yazılım tam da burada devreye giriyor. Aslına bakarsanız iyi özgür yazılım geliştirme pratikleri, öncelikle yazılım geliştirme ama ayrıca bilgi üretiminin yoğun olduğu her türde süreç için bir örnek teşkil edebilir. Buradaki örnekleri temel alan denemeler yapılmalı ve sonuçları irdelenmelidir.

Yani bana kalırsa, özgür yazılımın etkisi, sadece yazılım kullanımında değil, genel olarak bilgi toplumunun işleyişinde de olacaktır.

April 30, 2008 06:32 PM

Staj başvuruları ikinci dönem kapanışı

Az önce itibarı ile 2008 yaz stajında ikinci ve son grup başvuruları kapatmış olduk.

Herkese hayırlı, uğurlu olsun diyoruz.

April 30, 2008 02:04 PM

Yaz staj projeleri -2-

Nasıl derler, efendime söyleyeyim, bu yaz stajyerlerimizi bekleyen projelerin hepsi de OpenTC odaklı olmayacak tabii ki. Bazıları da daha farklı amaçlara hizmet edecek. Mesela bizim oldukça farklı, bir anlamda yalın bir insan kaynakları sürecimiz var. Özlük işleri dediğimiz kısmı muhasebecimiz hallettiği için o konuda hiç bir sıkıntımız olmuyor. Ancak geri kalan konularda ufak tefek aksaklıklar yaşamadığımız da olmuyor. Özellikle belli bir yere faaliyet raporu verilen türde projelerde istenen bazı raporlar aslında sistematik işleyen bir İK sistemine ihtiyaç doğduğunun göstergesi.

Bu dönemki bir diğer staj projemiz de buna değinecek. Bizim insan kaynakları sürecimizi yansıtacak, ayrıca standart özlük işleri ile entegre edecek.

Tabii bu proje de özgür yazılım çıktı üreteceği için, sadece biz değil bir çok firma da bu yazılımdan yararlanabilir diye düşünüyoruz.

April 30, 2008 12:47 AM

April 29, 2008

Bora Güngören

Yaz staj projeleri -1-

Yaz dönem stajyerlerimizin listesi neredeyse tamamen belirlenmişken ufak ufak yapılacak projelerden de bahsetmekte yarar gördüm. Proje başlıklarını belirlerken, bir kaç kriteri dikkate aldık. Olmazsa olmaz koşulumuz çıktıların da kullanılacak araçlarında da özgür yazılım olması idi. Bunu kenara koyarsak, öncelikle Portakal Teknoloji'nin var olan birikimini temel alacak ve bu birikimin üzerine inşa edilecek projeler olsun istedik. İkinci olarak somut net ihtiyaçlara yanıt versinler istedik. Bu sayede hem bizim stajyerlere faydalı olabileceğimiz hem de stajın topluma faydası olacak bir süreç oluşacaktı.

Peki aklımıza gelen projeler neler oldu? Birer ikişer bunları listelemek istedim. Öncelikle OpenTC ile ilişkilendirilebilecek olan ilk bir kaç tanesini görelim:

  • OpenTC EFS Windows Vista İstemcisi (Python .NET) : Portakal Teknoloji tarafından OpenTC projesi içinde geliştirilen güvenilir bilişim (trusted computing) destekli şifreli dosya servisi, servise odaklı mimari ile çalışmakta olsa da Linux üzerinde yazılmaktadır. Sistemin istemci tarafı şu anda Linux üzerinde C/C++ ile yazılmıştır. Bu projede Python dili ve .NET kitaplıkları kullanılarak Linux sunucular üzerinde çalışan EFS servislerine erişen bir şifreli dosya servisi (ŞDS) istemci tarafı yazılacaktır. Bu istemci tarafı böylelikle Windows Vista üzerinde rahatça çalışabilecek.
  • Güvenilir geri alma (Java) : Belli bir zamana yada duruma geri dönmek, bir çok yazılım sistemi için son derece önemlidir. Teorik bir geri alma sistemi çok basit bir yapı ile sağlanabilir. Ancak sistemlerin karmaşıklığı arttıkça bunu yönetmek zorlaşır. Bu projede bir sistemin ayarlarını içeren bir veri yapısı yada bir dosyanın her değişiklikte sürümlenmesi ve istendiği zaman belli bir zamana geri dönülerek geri almayı sağlayacak bir veri tabanı yapısı içinde saklanması hedeflenmektedir. Ancak bu veri tabanına kayıt eklemek ve kayıtta geriye dönmek için sistemin güvenilir bilişim (trusted computing) kullanan bir yapısı olması gerekmektedir. Sistem değişiklikleri sadece GPM'ye erişim olduğu zaman kaydedilebilecek veya geri alınabilecektir. Projenin uygulama örneği, çok sayıda Xen sanal makinası içeren bir sunucuda, dom0'da çalışan ve sanal makinalarla ilgili Xen ayarları ile sanal makinalara erişimle ilgili güvenlik duvarı ayarlarını yedekleyen bir yazılım olacaktır.
  • Güvenilir göz tarama (C / Java) : Biyometrik ölçüm önemli bir kimlik kanıtlama aracıdır. Bu nedenle çok faktörlü doğrulamanın (multi factor authentication) vazgeçilmez bir parçası olmaktadır. Ancak biyometrik ölçümlerin doğru alınması ve doğru saklanması son derece kritik bir konudur. Bu projede, standart bir web kamerasını kullanarak alınan göz görüntüsünden yararlanarak ek bir kullanıcı doğrulama faktörü oluşturan bir yazılım, güvenilir bilişim ve sanallaştırma kullanarak bir doğrulama servisi (XML-RPC) sunacaktır. Projede aygıt sürücüsü ve USB erişimlerinden Java ile XML-RPC arayüzü yazılmasına kadar eksiksiz bir dikey kapsam bulunmaktadır.
  • Bir kaçar gün ara ile projeleri listelemeye devam edeceğim.

    April 29, 2008 05:29 PM

    April 28, 2008

    Bora Güngören

    Devlet ar-ge projesi yapar mı?

    Devlet ar-ge yapar mı sorusuna türlü türlü yanıt vermek mümkün. Çoğu kişi kısaca evet yada hayır diyerek kestirip atabiliyor. Ama esas olarak bu soruya önce ar-ge olarak neyin kastedildiği sorusu ile yanıt vermek gerekli. Çünkü bir mühendis olarak benim aklıma gelen ar-ge ile başka birisinin aklına gelen ar-ge çok farklı şeyler olabiliyor.

    Dolayısı ile proje fikirleri de çok değişken olabilir. Mesela Milli Eğitim Bakanlığı'nın "Eğitimi" Araştırma ve Geliştirme Dairesi adında bir Daire Başkanlığı var. Burada yapılan ve yapılması durumunda desteklenecek olan projeler listesi oldukça geniş ve hepsinin de ciddi bir Ar-Ge niteliği var. Benim hemen dikkatimi çekenleri burada listelemek istedim.

    Böylesi konuların varlığını da düşününce Ar-Ge nedir sorusuna olan yanıt da oldukça geniş bir kapsama ulaştığı için devlet ar-ge projesi yapar mı sorusuna olan yanıt da düz bir evet yada hayır olarak gelemiyor.

    April 28, 2008 01:19 PM

    Staj başvuruları sürüyor ama bitişe az kaldı.

    Staj başvurularında ikinci grup mülakatların bir kısmını bitirdik ve gecikme olmasın diyerek hızlıca duyurmaya karar verdik. Bu hafta ve önümüzdeki hafta içinde bir kaç arkadaşımızla daha mülakat yapıp staj sürecinin ilk aşamasını tamamlamış olacağız.

    Geçtiğimiz bir kaç hafta içinde kabul ettiğimiz arkadaşlara gelince. Aşağıda listeledim.

    Bu aşamada arkadaşlarımız ile bağlantıya geçtik. Dönem içi çalışma programlarını kurguluyoruz.

    Bu arada staj başvurularını 30 Nisan günü kapatacağımızı yeniden hatırlatıyorum.

    April 28, 2008 12:49 PM

    April 26, 2008

    Bora Güngören

    Üç yaşındaki birine göre Yıldız Savaşları

    Çok kısa çok öz ve hatta dürtüsel. :)

    April 26, 2008 03:36 PM

    April 23, 2008

    Erdem Bayer

    Eski sunumlar ve bildiriler

    Daha önce verdiğim sunum ve bildirileri buraya koyma niyetim uzun zamandır vardı, ancak kısmet bugüneymiş.

    Çanakkale'de Akademik Bilişim 2008 konferansında verdiğim "Xen 3.1 Üzerinde Sanal Ağ Tasarımı" konulu sunum (ppt) ve bildiri metni (pdf).

    Bilkent Üniversitesi Bilgisayar Teknolojileri ve Programlama (CTP) bölümünde "Networking Principles and Applications" (204) dersi öğrencilerine verdiğim "IP Routing" konulu sunum. (odp , ppt , pdf)

    April 23, 2008 02:29 AM

    Xen üzerinde sanal Pardus'ta otomatik gui başlatmak

    Daha önceki bir yazımda (kesin konuşmak gerekirse şu yazımda) Xen üzerinde sanal Pardus kurmuş ve normal kullanıcı olarak oturum açıp, ağdaki herhangi diğer bilgisayar veya dom0'dan VNC ile bağlanıp sanal Pardus'umuzu kullanmıştık.

    Kısaca özetlemek gerekirse:

    1. domU'da normal kullanıcı olarak VNC sunucusu çalıştırılır.
    2. Normal kullanıcının DISPLAY çevre değişkeni çalıştırılan VNC sunucu olacak şekilde ayarlanır.
    3. domU'da KDE başlatılır.

    Ancak bir süre sonra fark edeceğiniz gibi, her grafik arayüz kullanmak istediğimizde bütün bu işlemleri baştan yapmak epey vakit kaybettiriyor. Ben de yukarıda saydığım adımları bizim adımıza yapan bir COMAR servis betiği ile sorunu çözmeye çalıştım. Betik son derece basit ve kirli, ancak özellikle Linux sistemleri yönetmenin kolaylığı ve elimizin altındaki araçlar konusunda fikir vermesi açısından yararlı olacağını düşünüyorum.

    Önce COMAR tarafından çağrılacak başlatma betiği:

    #!/bin/bash

    export USER="otc"
    export HOME="/home/otc"
    /usr/bin/vncpasswd < /home/otc/.vnc/vnc-passwd
    /usr/bin/vncserver :1 > /home/otc/vnc.log 2>&1
    export DISPLAY="pardus-client:1"
    /usr/kde/3.5/bin/startkde > /home/otc/kde.log 2>&1

    vncserver programını başlatabilmek için bir şifre girme zorunluluğu bizi vncpasswd programı ile şifreyi önceden belirlemek zorunda bırakıyor. Bu şifre kullanıcımızın ev dizinindeki bir dosyadan okunacak şekilde ayarlanıyor. DISPLAY çevre değişkeni ayarlanıp KDE başlatılıyor. USER ve HOME çevre değişkenlerinin ayarlanması vncserver programını başlatabilmek için gerekli, eğer bunları ayarlamaz iseniz vnc sunucunuz başlatılamıyor.

    Sırada vnc sunucumuzun otomatik başlamasını sağlayacak COMAR servis betiği var:

    from comar.service import *
    import os

    serviceType = "script"
    serviceDesc = _({
    "en": "Vnc Server",
    "tr": "Vnc Sunucu",
    })
    serviceDefault = "on"

    @synchronized
    def start(boot=False):
    if status():
    return

    run("/sbin/start-stop-daemon --start --quiet --chuid otc -b --exec /etc/init.d/startvnc")


    @synchronized
    def stop():
    run("/sbin/start-stop-daemon --stop --quiet --name startkde")
    run("/sbin/start-stop-daemon --stop --quiet --name Xvnc")

    def status():
    return isServiceRunning("/home/otc/.vnc/pardus-client:1.pid")

    COMAR servis betikleri Python ile yazılan ve servis ile ilgili işlemlerin tanımlandığı betiklerdir. Bu işlemler tanımlanırken COMAR Service API'si bize çok çeşitli metodlar sunar. Siz service komutunu veya TASMA'dan Servis Yöneticisi'ni çalıştırdığınızda COMAR servis betiğinizi çalıştırarak size istediğiniz bilgiyi sunar.

    COMAR API'leri sistemde /usr/lib/pardus/comar altında bulunur. Bu dizinin içindeki service.py ve utility.py betikleri içerisinde servis betiğinde kullanabileceğiniz metod ve sınıfların kaynak kodları bulunur.

    serviceDefault değişkeni ile servisin öntanımlı durumu (her açılışta başlatılıp başlatılmayacağı) belirtilir.

    serviceDesc ile Servis Yöneticisi veya service komutunun çıktısında servisin açıklama hanesinde görünecek değer belirtilir.

    Bir COMAR servis betiğinde servisin çalıştırılması, durdurulması ve o anki durumunun öğrenilmesi için gerekli 3 metod tanımlanması yeterlidir.

    Servisleri başlatmak için run (/usr/lib/pardus/comar/utility.py içinde tanımlı) veya startService (/usr/lib/pardus/comar/service.py içinde tanımlı) çağrılarını kullanabilirsiniz. Run metodu yeni bir kabuk başlatmadan verilen komutu çalıştırır.

    vncserver programı kendi süreç numarasını kullanıcının ev dizinindeki bir dosyaya yazar. COMAR isServiceRunning metoduna bu dosyanın yolunu vererek, dosyanın içinde yazan süreç numarasını okuyup o numaralı sürecin aktif olup olmadığını kontrol etmesini istiyoruz.

    Servis başlatılacağı ve durdurulacağı zaman /sbin/start-stop-daemon programını çalıştırılmasını istiyoruz. start-stop-daemon orjinalde debian için yazılmış, servis başlatmak ve durdurmak için aşağı yukarı her linux dağıtımında bulunan yararlı bir program. Bu program ile ilgili daha ayrıntılı bilgi almak isteyenler programın man sayfasına bakabilirler.

    start-stop-daemon ile servis başlatılırken /etc/init.d/startvnc betiğini otc kullanıcısı olarak start parametresi ile çalıştırmasını ve hata çıktıları haricinde hiçbir çıktıyı ekrana yazdırmamasını istiyoruz. startvnc betiğinde de vncserver ve startkde programlarının standart ve hata çıktılarını kullanıcının ev dizinindeki bir dosyaya yönlendiriyoruz ki COMAR ile servisi başlattığımızda bu çıktıları dosyadan takip edebilelim.

    Servis durdurulacağı zaman Xvnc ve startkde adındaki tüm programların SIGTERM sinyali ile durdurulmasını istiyoruz. Belirtilen programların hangi sinyal ile durdurulacakları start-stop-daemon'un --signal parametresi ile belirtilebilir.

    Hazırladımız COMAR servis betiğini kullanması için COMAR'a kaydettirmemiz gerekli. COMAR ile komut satırından haberleşmek için hav komutunu kullanıyoruz.

    # hav register System.Service vnc service.py

    Yukarıdaki komut ile service.py betiğini vnc adı ile COMAR Service sınıfı altına kaydettik. Artık Servis Yöneticisi veya service komutu ile vnc adını verdiğimiz servisimizi kullanmaya başlayabiliriz.

    # service vnc start
    # service vnc stop
    # service vnc status

    Servis betiğinizde bir hata olduğunu fark eder, veya artık bu servisi kullanmak istemediğinize karar verirseniz COMAR'a bu servisi silmesini söylemeniz gerekir.

    # hav remove vnc 

    April 23, 2008 12:46 AM

    April 21, 2008

    Bora Güngören

    Olgun (ve dolgun) geliştirici...

    Bahar ayları geldiği zaman hem üniversite öğrencilerini hem de yazılım şirketlerini bir telaş alıyor. Yeni mezun olacak olan arkadaşlar içinden elbet bir bölümü daha yaz bitmeden bir iş yerinde işe girmiş oluyorlar. Dolayısı ile yaz ayları ve sonbahar aylarında da staj sonrasındaki ilk gerçek iş deneyimi ile yüzleşen genç arkadaşlarımızı görüyoruz. ODTÜ Teknokent'de bu çok daha kolay fark ediliyor. Sabah saat 9:00 sularında mesaiye gelenler arasında yepyeni yüzler görüyorsunuz.

    Bu arkadaşlarımız meslek yaşamlarına ilk başlarken elbette okulda çeşitli nedenlerden öğretilemeyen şeyleri öğrenmek zorunda kalıyorlar. Mesela okulda aynı anda bir çok ders aldıkları için uzun süreli ve kalabalık ekip çalışmalarına giremiyorlar. Belki bir istisna olarak TOBB ETÜ'nün Ortak Eğitim Programı'nı gösterebiliriz. O konuda bu yıl biz de deneyim yaşayacağız, daha sonra aktarırım herhalde. Ama uzun lafın kısası, genç geliştiricilerin olgunlaşması - ve tipik olarak kilo alıp dolgunlaşması - süreci yaz aylarında başlıyor.

    Peki bu süreç içinde genç arkadaşların neler öğrenmeye hazır olması gerekir. Yada 3-4 yıl deneyimli bir uygulama geliştirici ile yeni mezun birini ayıran neler vardır? Belli teknolojilerin (örneğin AJAX yada JBOSS Seam) bilinmesini kenara koyarsak esasında ne bilindiğinden çok o bilginin nasıl kullanıldığı üzerine farklar görüyoruz. Yani olgun geliştirici ne biliyorumdan çok nasıl yaparım (İng. know-how) üzerinde deneyime sahip. Bu deneyim farkının da odaklandığı bazı kritik işler yada süreçler olması kaçınılmaz. Peki bunlar nelerdir? Uzunca süredir aklıma gelenleri bir yazayım diyordum, şu ana denk geldi.

    Şimdi düşünelim. Aklımıza neler gelecek.

    1. Olgun uygulama geliştiriciler, projelerin daha uzun sürdüğünü bildikleri için uzun dönemli bir bakış açısı geliştiriyorlar. Bu da onların geçmişte arkalarında bıraktıkları işlerin ileride başlarına bela olmaması için farklı tür çalışmalarına neden oluyor. İşin ilginç yanı, bu yaklaşım daha nitelikli yani daha kaliteli iş çıkmasına neden olduğu gibi bazen işlerin daha çabuk bitmesini de sağlıyor. Bu yaklaşım hemen her şeye yansıyor.
    2. Olgun geliştiriciler hemen her konuda disiplinli oluyorlar. Bu da tabii ki bir öz disiplin ve genelde kendi kendilerine koydukları kişisel kurallardan oluşuyor. Bu kuralar çalıştıkları iş yerlerinde uygulanan yazılı kurallar olsun olmasın genel anlamda yararlı şeyler. Zaman zaman kendi kurallarının ihlal edilmesi istenince ("aman abi bugünlük uyduruk bir şey teslim edelim" lafı gelince) itiraz etmekten de çekinmiyorlar. Çünkü kendi içlerinde biliyorlar ki, bu kurallar onların kendi iyilikleri için kendi koydukları kurallar.
    3. Olgun geliştiricilerin yazdıkları kodlarla ilgili disiplinleri onların kodlama stilleri kadar çalışma ortamlarına da yansıyor. Neyin nasıl kurulduğu ve nasıl kullanıldığı çok da iyi anlaşılmayan araçlardan oluşan kümeler yerine temiz görünümlü, aralarındaki ilişki iyi tanımlanmış araçlar kullanıyorlar. Bu ille de belli bir firmanın araçlarına saplanmak demek değil. Hatta bir çok defa özgür yazılım araçlar yada kendi ihtiyaçları için kendi yazıp geliştirdikleri ve çevreleri ile paylaştıkları araçları da içeriyor.
    4. Olgun geliştiriciler, yazdıkları kodların temiz, kolay anlaşılabilir arayüzlere sahip olmasına özen gösteriyorlar. Gerektiği zaman kendi kodlarını bu amaçla yeniden yapılandırmaktan da kaçınmıyorlar. Aynı şekilde kodun sınanması yani test edilmesi için gerekli yaklaşımları kullanmayı ihmal etmiyorlar. Özellikle testlerin eksiksiz ve hatasız olduğuna dikkat ediyorlar. Test verilerini ilk baştan talep ediyorlar.
    5. Olgun geliştiriciler kodlarını yönetmek için CVS yada SVN gibi bir aracı kullanırken de bazı farklar gösteriyorlar. Özellikle ilk dikkat çeken şey, yaptıkları katkıların (İng. commit) açıklama notlarını girmeleri ve bunları da uzun uzun yazmaları. Ayrıca bu notlarda yazım hatalarından kaçınmaları da önemli. Çünkü hata ayıklamaya çalıştığınızda, belli bir değişikliğin ne zaman yapıldığını aramaya kalkarsanız içinde bir kaç bin katkı bulunan bir SVN deposunda arama yapmanız gerekecektir. Katkıların açıklamalarının yazılması bu işi inanılmaz hızlandırabiliyor.
    6. Olgun geliştiricilerin bir diğer çok önemli özelliği de yaptıkları işi yazmaları. Bu sadece haftalık rapor şeklinde olmak zorunda değil; özellikle kodlama yada bir sistem yapılandırma gibi karmaşık işlerini kesinlikle belgeler ile anlatıyorlar. Bir çok yazılımın kaçınılmaz biçimde çevreden aldıkları parametreler ile çalışacağını (örneğin bir Java uygulaması için dahi çok dil desteği için .properties dosyalarına erişmek yapılandırmaya hasas biçimde bağlı) düşünürsek, bu önemli bir şey. Bu sayede hem kendileri eski projelere geri döndüklerinde, hem yeni kişilere eldeki projeyi anlatırlarken kolaylık yaşıyorlar.
    7. Olgun geliştiriciler, sürekli olarak bir şey öğrenmek zorunda olduklarının bilincindeler ve çalışmalarını da buna göre yapılandırıyorlar. Hangi projede çalışırlarsa çalışsınlar, hangi aracı kullanırlarsa kullansınlar bu değişmiyor. Hem kendi öğrencikleri şeyleri belgelemeleri, hem de bunu insanlarla tartışarak bilgiyi iyice sinfirme çabaları ile dikkat çekiyorlar. Bir konudaki teknik bir sorunu araştırdığınızda, olgunlaşmış, kıdem kazanmış bir geliştiricinin bloguna denk geldiğiniz zaman aslında onun kendi çalışma defterine de denk gelmiş oluyorsunuz.
    8. Olgun geliştiriciler, hem geliştirme hem öğrenme süreçlerinde daha sabırlı. Bu sadece yaşla ilgili bir şey de değil. Genel olarak daha yaşlı kişilerin daha sabırlı olduğunu görebilirken, uygulama geliştiricilere baktığımızda resim oldukça farklı olabiliyor. Özellikle olgun geliştiriciler daha sabırlı. Aslında bu bir ikilemi de barındırıyor. Olgun geliştiriciler daha verimli çalıştıkları için daha çabuk sonuç alıyorlar. Ama bu onları gelirgin bir şekilde daha atılgan yada sabırsız yapmıyor. Bununla birlikte belli yaşı görmüş ama çalışma tarzı itibarı ile olgunlaşmamış bir çok kişi de son derece sabırsız biçimde çalışıyor. Belki de sabır ve disiplinli çalışma arasında bir bağlantı vardır.
    9. Sabrın yanı sıra, olgun geliştiriciler aynı zamanda insan ilişkileri ve iletişim konusunda da belli beceriler geliştirmiş oluyor. Geyik muhabbeti yapacakları zaman yapıyorlar ama konu iş olduğu zaman iletişimi verimli tutacak bir yaklaşım belirliyorlar. Sorun tespit etmek ve çözüme doğru ilerlemek amaçlarından kopmayan, odaklı ve verimli bir iletişim tavırları var. Bu tavrın bazı nitelikleri kişiden kişiye değişse dahi, özü aynı kalıyor.
    10. Olgun geliştiriciler, yaptıkları işin boyutlarını ve ne kadar sürede yapabileceklerini daha iyi tahmin ediyorlar. Bu elbette ki daha önceden bir çok benzer-benzemez proje yapmaktan ve teslim etmekten kaynaklanıyor. Ama bundan daha önemlisi, olgun geliştiriciler ilk tahminlerini zaman içinde güncelliyorlar. Dolayısı ile aylar önceden yapılmış bir tahmin yerine yakın zamanda güncellenmiş bir tahmin üzerinden hareket ediyorlar. Bu onların kısa dönemli planlarını daha iyi yapmalarını sağlıyor. Henüz olgunlaşmamış geliştiriciler ise ya hiç tahmin ve plan yapmıyor yada çok önceden, henüz eksik bilgi ile yaptıkları tahmin ve planların geçerli olduğunu sanıyorlar.

    Bunların dışında akla gelecek şeyler elbette olacaktır. Ama benim ilk aşamada düşünebildikleirm bunlar. Sadece yeni mezun arkadaşlar değil, istediğimiz kadar deneyimli olalım, bu saydığım noktalarda kendimizi geliştirmek için hepimizin daha çok potansiyele sahip olduğumuzu düşünüyorum.

    Yine önemli bir düşünce geliştirme noktası da özgür yazılım projeleri ile bireysel olgunlaşma arasındaki ilişki olabilir. Bu iki kavram arasında doğrudan yada dolaylı ilişkilerin saptanması ciddi bir konu olur herhalde.

    Şapkayı önümüze koyacak olursak, biz Portakal Teknoloji'de ne kadar olgunuz yada ne şekilde olgunlaşıyoruz sorusunu da sormalıyız ve kendimizce yanıtlamalıyız.

    Bakalım ileride bu konuya tekrar değinirsem, kesinlikle bir şeyler daha eklerim.

    April 21, 2008 04:01 PM

    April 14, 2008

    Bora Güngören

    Torino Toplantısı

    Arada 2 hafta geçmiş ama yazmadan edemedim. Mart ayı sonunda küçük bir OpenTC toplantısı için Torino'ya gittim. HP'den Dirk, Polito'dan Gianluca ve TUM'den Chun-Hui ile aralıksız 12 saat 30 dakika süre ile bizim OpenTC içinde yazdığımız Kriptolu Dosya Servisi (kısaca EFS) ve yazılımdaki güvenilir bilişim (İng. trusted computing) kullanımı üzerine toplantı yaptık.

    Görülen o ki, hem kullanıcıların mahremiyetine saygı gösteren ve denetimi kullanıcıya veren hem de özgür yazılım bir güvenilir bilişim altyapısını bireysel kullanıma sunmak için 1-2 yılımız var. Hoş zaten OpenTC projesinin bitmesine de 1 yıl var ama benim gözümden bu süreç oldukça ağırkanlı işliyor.

    Şimdi OpenTC olarak biz güvenilir sanallaştırma (İng. trusted virtualization) diye bir kavram üzerinden gidiyoruz. Diyoruz ki, güvenilir bilişim yaklaşımları - ister Linux ister Windows üzerinde olsun - istemci işletim sistemlerindeki güncelleme hızına yetişmekte sorun yaşıyor. Çünkü işin özünde yüklenen işletim sisteminin bütünlüğünü (İng. integrity) denetleyen bir önyükleyici kullanmak (örneğin Trusted GRUB) var. Buradan yola çıkınca sanallaştırma iki avantaj sağlıyor. Birincisi, sanallaştırılan ve güvenlik uygulamasını barındıran ikinci işletim sistemi daha nadir güncelleneceği için onun güncelleme mekanizması daha az yük getirecektir. Yani güncelleme yükünü bir işlev olarak görürsek, sanallaştırma, toplamın işlevinin işlevlerin toplamından büyük olacağını düşünenler için yönetim kolaylığı sağlayacak. Tipik bazı uygulamalar için bu gerçekten de böyle. İkincisi, sanallaştırma sayesinde bazı güvenlik becerilerini ve yetkilerini değişik işletim sistemlerine, böylelikle değişik taraflara dağıtıyorsunuz. Bu da en azından teorik açıdan önemli olan hakların ayrılması (İng. Separation of Privileges) kavramını destekliyor.

    Bununla birlikte, güvenilir sanallaştırma o kadar kolay da kurgulanan bir şey değil. Şu ana kadar gelinen noktanın üzerine eklenmesi gereken en önemli şey özgür yazılım bir sanal GPM (İng. virtual TPM) hazırlanması. Şu anda Xen için çalışan sanal GPM uyarlamaları, sizin bir adet gerçek GPM'ye erişen bir işletim sisteminde (Xen için dom0) çalışan bir sunucunuz olmasını varsaymakta. Diğer işletim sistemlerindeki (Xen için domU) sanal GPM'lerin ise buna bağlanan birer istemci olmasını öngörmüş.

    Bu istemci sunucu temelli yaklaşım ciddi bir çalışmanın eseri ancak özgür yazılım olan sürümlerinde hala eksikler var. Şu andaki güvenilir bilişim uygulama örneklerinin çoğu GPM'nin belli özellikleri kullanıyor ama belli özelliklerini kullanmıyor. E haliyle özgür yazılım camiası da şimdilik o özelliklerin mükemmelleştirilmesi üzerine odaklı. Halbuki hazır olmayan bazı özellikler de var.

    EFS'de bizi yoran şeylerden birisi de bu. Siz istediğiniz kadar proje planları yapın, detaylı tasarım belgeleri yazın. Eğer üçüncü kişilere olan bağımlılıklarınız sağlanmıyorsa, istediğiniz hızda ilerleyemezsiniz. Hele özgür yazılım projelerinde bu aslında daha da karmaşık bir ağa dönüşüyor. Biz vTPM'in belli bir özelliğini ilk kullanan bir kaç yerden birisi oluyoruz ve ciddi bir hata tespit ediyoruz. Sonra bu hatanın giderilmesi süreci başlarken, bu sefer de bizim takvimin fazla sarkmaması için alternatif yollar buluyoruz.

    Bütün bunlar tabii sadece geliştirici yönü. Bir de bütün sistemi entegre eden insanların (ör. Pardus, Suse, Debian) deneyimleri var. Onların da başı ayrı dertli. Ama kimin değil ki?

    April 14, 2008 01:27 PM

    April 04, 2008

    Bora Güngören

    Staj başvuruları 1. grup sonuçları

    Staj başvurularını kabul ederken herkesin özgeçmişini ince eleyip sık dokuyarak okuyalım, özgeçmiş yollamayanlardan bir daha rica edelim ve bekleyelim, Ankara dışındakileri telefonla mülakata alalım, sonra her mülakat sonucuna göre kişileri olası projelere atamaya çalışalım derken ilk gruptaki bayağı kalabalık başvuruları işlememiz zaman aldı.

    Arada OpenTC'de ara teslimat çılgınlığı ile günde 20 saat bilgisayar başında kalmanın da etkisi oldu.

    Sabırla bekleyen bütün öğrenci arkadaşlardan özür diliyorum. Sonuçta 10 kişilik bir listeyi seçmiş bulunduk. Bu liste kesinlikle bir en iyiler yada en havalılar listesi değil. Bizim çalışma tarzımıza uygun, bizim çalıştığımız konularda çalışmak isteyen ve gözlemlediğimiz kadarı ile azimli, çalışkan ve dürüst öğrenciler listesi. Çok başarılı öğrenciler olup da bizim çalışma alanlarımızla ilgisi olmadığı için seçemediklerimiz oldu. Bazıları Ankara'daki çalışma yerimize gelip çalışmakta sorun yaşayacaklarını belirttiler, vs.

    Bu arada bir şey gördük. Sanırım tüm iş yerleri üçüncü sınıftan dördüncü sınıfa geçen stajyerleri tercih ediyorlar ve bunu bir de o kadar sertçe ifade ediyorlar ki, ikinci sınıf öğrencileri korkmuşlar. Bizde öyle bir şey yok tabii ki.

    Uzun lafın kısası, ilk grup içinden çalışmayı umduğumuz 10 öğrenci aşağıda. Kendileri ile ayrıca doğrudan iletişime de geçeceğiz. Yer veremediğimiz öğrencilere de ayrıca birer mesaj yollayacağız.

    Not 1: Nisan ayı geldi, İkinci grup başvuruları almaya da başladık. Onlarla mülakatları da önümüzdeki haftalar içinde başlatacağız.

    Not 2: TOBB ETÜ'deki öğrenci arkadaşlarımızın staj prosedürü farklıymış; onların 2.5 ay süren bir stajları varmış. Onlara uymak için okullarının süreci üzerinden gidiyoruz.

    Not 3: Stajyer arkadaşlar için çok yeni çok güzel bir çalışma ortamı kurmaktayız. Yakında onu da ben olmam ama birileri yazabilir herhalde.

    April 04, 2008 02:57 PM

    March 27, 2008

    Emre Yüce

    Bankaların Güvenlik Uygulamaları

    Gün geçtikçe gelişen teknoloji hayatımızı kolaylaştırmakla birlikte bizi tehlikelere daha açık hale getiriyor. İnternet bankacılığının yaygınlaşması; faturalarımızı yerimizden kalkmadan yatırabilmemizi sağlarken, oluşabilecek güvenlik açıkları ise bizleri paraları başka hesaplara havale edilecek hedefler haline getirebiliyor. Bu tarz tehlikelerden korunmak için biz kullanıcıların uyanık olması (e-posta adresinize gelen sahte bir mesajdaki internet sitesine girip tüm kişisel bilgilerinizi girmenizi engellemek için bankanın da elinden sizi uyarmaktan başka bir şey gelmeyecektir) gerekiyor. Elbette bankaların da bu tarz tehlikelere karşı aldığı bazı önlemler var. Peki bunlar neler ve ne kadar işe yarıyorlar ?

    Herhangi bir güvenlik sistemine giriş yapmayı deneyen bir kullanıcıyı doğrulayabilmek için temelde aşağıdaki metotlar kullanılır:

    Ayrıca bunlara ek olarak kullanıcının nereden ve ne zaman girdiği de kontrol edilebilinir.

    Peki bankalar bu yöntemlerden hangilerini, nasıl kullanıyor ?

    Bankaların güvenliği temelde kullanıcıların ne bildiğine dayanıyor. Bir kullanıcı kişisel bilgilerini (müşteri numarası, adı, soyadı vs.) ve parolalarını kullanarak internet bankacılığına giriş yapabilir. Ancak zamanla çoğalan sahte e-postalar (phishing), zararlı yazılımlar (key logger, screen logger vs.) bir kullanıcıyı sadece bildiği bir şeye göre doğrulamanın çok da güvenli olmadığını ortaya çıkardı. Her ne kadar bankalar sürekli uyarıcı e-postalar yollasalar da, veya internet sayfalarında uyarılar yayınlasalar da bir anlık dikkatsizlik (veya banka hesabımızın kapanacağını öğrendiğimizde oluşan panik) kişisel bilgilerimizin kolaylıkla yanlış ellere geçmesine sebep olabilir.

    Sahte e-postaların ve kötü amaçlı yazılımların yaygınlaşması bankaların da internet şubeleri için ek güvenlik önlemleri almalarını zorunlu hale getirdi. Güvenliği kullanıcının bildiği bilginin yanında, sadece kullanıcının sahip olduğu bir şey (çok da düşünmeye gerek yok kimin cep telefonu yok ki bu devirde) ile artırmayı hedeflediler. Bankanızdan alabileceğiniz tek kullanımlık bir şifre cihazı ile her internet şubesine girmeyi denediğinizde ürettiğiniz tek kullanımlık şifreyi kullanarak sizin gerçekten siz olduğunuzu ispatlayabilirsiniz. Gelişmiş cep telefonlarına kurabileceğiniz java uygulaması ile cep telefonunuzu da tek kullanımlık şifre cihazı olarak kullanmanız mümkün. Tek kullanımlık şifre üreteci kullanmıyorsanız da bankanız sizi bu yöntemi bir şekilde kullanmaya zorunlu hale getirebiliyor. Örneğin havale yapacağınız zaman sistemde kayıtlı olan cep telefonu numaranıza gönderilen tek kullanımlık şifre bu uygulamaya bir örnek.

    Sistemin güvenliğini sağlamak için cep telefonuna olan güvenin bir üst seviyesi ise son zamanlarda iyice yaygınlaşan mobil imza uygulaması. Kanunlarda ıslak imza ile eş değer olan bu uygulama ile yaptığınız her işlemi, kanun karşısında inkar edemeyeceğiniz şekilde, onaylamış oluyorsunuz. Aslında bu yöntem bana bankanın, herhangi bir olumsuzluk durumunda, yükü yasa karşısında kendi omuzlarından atma çabası gibi geliyor.

    Tüm bunların yanı sıra güvenlik için kendi tanımlamalarınızı yapabilirsiniz. Girdiğiniz internet sitesinin doğru olduğunu anlamak için bir karşılama mesajı ya da bir resim seçebilirsiniz, para aktarımı için limitlerinizi belirleyebilirsiniz, internet sitesine bağlanacağınız saat veya ip aralıklarını belirleyebilirsiniz. Ayrıca bankaların kötü amaçlı yazılımlardan korunmak için sunduğu olanakları (keylogger tarzı programlara karşı koruma sağlayan küçük programlar,sanal klavye vs.) tarzı programlar kullanılabilinir. Tabii ki sürekli güncellediğiniz bir antivirüs, anti-spyware ve firewall programınız olmasının gerekliliğinden, özellikle Windows kullanıcısı iseniz ki daha büyük tehlikedesiniz, bahsetmiyorum bile.

    Bankaların yaptığı tüm bu güvenlik uygulamalarına karşın, işin içinde her zamanki gibi en zayıf nokta insan unsuru, yani kullanıcının insan olması. Şifresini unutmamak için bir yere yazmak, kolay şifre seçmek, aceleyle yanlış bir siteye kişisel bilgilerini girmek, internet kafeden ya da yabancı bir bilgisayardan internet şubesine giriş yapmak yapılmaması gereken en temel hatalar.

    NOT: Bankanızın güvenlik uygulamaları hakkında bilgiyi bankanızın internet sitesinde bulabilirsiniz. Yazımı yazarken T. İş Bankası ve Garanti Bankası‘nın güvenlik sayfalarında yer alan bilgilerden de faydalandım.

    March 27, 2008 12:28 PM

    February 29, 2008

    Bora Güngören

    1. Dönem Staj Başvuruları Kapanışı

    Portakal Teknoloji olarak staj başvuru sürecimizi nasıl yürüttüğümüzü daha önce başka bir yazımda belirtmiştim.

    Şubat ayının son günü olan bugün ile birlikte birinci tur başvuruları kapatıyoruz. Mülakatlara zaten başlamıştık. Bu hafta ve önümüzdeki hafta içinde bir grup öğrencimizi daha mülakata çağıracağız. Bu hafta sonu ve önümüzdeki hafta içinde akşam saatlerinde Ankara dışındaki öğrencileri de telefonla arayarak görüşmeye çalışacağız. Ne de olsa 10 dakikalık bir görüşme için insanları zorla Ankara'ya getirtecek değiliz.

    İkinci tur başvuruları Nisan ayında alacağız ve Mayıs ayı içinde değerlendireceğiz.

    February 29, 2008 11:26 AM

    February 24, 2008

    Bora Güngören

    EMO Ankara Şube 19. Dönem

    Dün yapılan Genel Kurul ve bugün yapılan seçimler sonucu ile EMO Ankara Şubesi'nde 19. Dönem (2008 - 2010) Yönetim Kurulu'nu tekrar Demokrat Mühendisler listesi oluşturdu. Ben de listeyle birlikte ikinci defa seçilmiş oldum. Bir önceki dönem Yönetim Kurulu asıl listesinden 3, yedek listesinden 1 kişi bu dönemki asıl listede devam ediyoruz. Diğer arkadaşlarımız ise yeni isimler.

    Önceki dönem üç listenin yarıştığı seçimde, 1400'den fazla oy almıştık. Bu dönem karşımızda farklı bir liste çıkmadı. 1903 üyenin katıldığı seçimde tek liste olarak katılınca, hatalı kullanılan oyları düşersek herhalde 1900 civarı oy alarak seçilmiş olacağız. Tam sonuçları alamadım çünkü hem iş yoğunluğu hem de Genel Kurul ve Seçim koşturması derken biraz sağlıktan oldum. Bugünün çoğunu evde istirahat ederek geçirdim.

    Ama geçen hafta kendi aramızda aday listesi belirlemek için yaptığımız ön seçime gelen 1400'den fazla demokrat mühendise, bu hafta tek liste olduğu halde seçimin kendisine, katılımcı demokrasiye olan inancından dolayı gelen 1903 üyemize çok teşekkür ediyorum. Aralarında o sırada şehir dışında işi olduğu halde sırf seçim için gelip geri dönenler dahi var.

    Önümüzde uzun bir iki yıl var. Ülkemizde, sektörümüzde karşımıza çıkacak çok sorun var. Hem yanlışın önünde dikilip dur demek, hem de çözümün parçası olmak zor bir iş. Ama üyesi ile çalışanı ile barışık, geleneklerini gençliğin dinamizmi ile besleyen bir EMO için söz vererek seçildik. Sözümüzü tutmamız gerekiyor.

    Önümüzdeki günlerde 19. Dönem hedeflerimiz konusunda bir kaç yazı daha yazabilirim sanırım. Ne de olsa çalışma programımız dahi hazır. Sadece onu somutlaştıracak eylem planımızı kaleme almamız gerekiyor.

    Bu arada küçük bir dip not, 18. ve 19. Dönemlerden sonra 2010-2012'yi içeren 20. Dönem için EMO Ankara Şubesi'nde aday olmayı düşünmüyorum. Çünkü hem yeni insanlara yer açmak hem de işin mutfağı olan komisyonlara geri dönmek gerek.

    February 24, 2008 09:28 PM

    February 18, 2008

    Bora Güngören

    Portakal Teknoloji'de stajyer seçme süreci nasıl işler?

    Hiç unutmam daha 2004 yılıydı, şirket kurulalı 1 yıl dahi olmamıştı ve yazın bir stajyerimiz olabilir mi diye düşünmüştük. O zamanki emektarlarımızdan Cem Vedat henüz öğrenciydi ama onu bir çeşit stajyer sayamıyorum. LKD eposta listelerine bir mesaj attık ve daha sonra ilk stajyerimiz Yermiz Sezgin ile tanıştık. Yermiz bizimle birlikte Bolu'da Abant İzzet Baysal Üniversitesi'ndeki Bilişim Yaz Kampı'na katıldı ve 5 hafta boyunca neredeyse uyumaksızın Linux ile çalıştı. Hem eğitimlere yardım etti, hem de türlü türlü sistemler kurdu. Ayrıca ata bindi, hamakta sallandı, ben dahil herkes ile birlikte fotokopi de çekti. Stajyerlere fotokopi çektirirlermiş ya.

    Daha sonra kabul ettiğimiz stajyerler ile olan çalışmalarımızı da gözlemleyerek 2007 içinde iyiden iyiye oturacak bir süreç hayata geçirmek istedik. 2008 ile birlikte de uyguluyoruz. Peki nasıl oluyor?

    /

    Bu bir kaç hafta içinde, 2008 yaz stajı için stajyer adaylarımız ile mülakat tarihlerini saptıyor ve mülakatları yapıyor olacağız. Daha önce başka bir girdimde belirttiğim gibi, bu sadece ilk tur ama gelen başvurular arasında çok nitelikli öğrenciler gördük. Nitelikli herkesi staja almak da istiyoruz. Bakalım ne yapacağız.

    February 18, 2008 03:52 PM

    February 15, 2008

    Erdem Bayer

    Xen ile sanal makinede yazıcı tanıtma

    Xen ile domU altında herhangi bir gerçek aygıtı kullanmak isterseniz öncelikle aygıtı sadece domU'nun kullanması için transfer etmeniz gerekir.

    Xen ile USB portlarını domU'lara transfer edemezsiniz. Şu an (3.2.0 kararlı sürümü ile) Xen sadece PCI aygıtlarının domU'ya transfer edilmesi özelliğini sağlamaktadır. Ancak USB aygıtlar, birer PCI aygıtı olan USB Controler aracılığı ile kullanılırlar. :-)

    PCI aygıtları domU'ya transfer etmek için Xen'in PCI Backend (pciback) sürücüsü kullanılır. dom0 içinde yüklü olan pciback sürücüsü Xen'in fiziksel aygıtları kullanabilmesi için bir arayüz sunar. Buna benzer bir arayüz olan PCI Frontend (pcifront) de domU'larda bulunur ve her ikisi birlikte sanal makinelerin gerçek aygıtlarla güvenli bir şekilde iletişimini sağlar.

    Herhangi bir aygıtı domU'ya transfer etmek, backend sürücüsünün aracılığını ortadan kaldırmak demek olduğu için aygıt artık dom0 veya diğer domU'lar tarafından kullanılamaz. Aynı zamanda Xen hipervizörünün de aracılığı ortadan kalktığı için (normalde bütün aygıtlar Xen hipervizörü tarafından yönetilen backend sürücüsü aracılığıyla kullanılırlar.) domU'nun aygıtın kullanımı konusunda sınırsız yetkisi olur.

    Aşağıda örnek olarak yazıcınızı nasıl domU'ya transfer edebileceğinizi göstereceğim.

    Bir aygıtı domU'ya transfer etmeniz için önce onu pciback sürücüsünü kullanarak dom0'dan saklamanız ve daha sonra domU ayar dosyasında aygıtın kullanılacağını belirtmeniz gerekir.

    Bunu sağlamak için üç yöntem mevcuttur. Birinci yöntem sadece pciback ve pcifront sürücüleri dom0 ve domU kerneli içinde statik olarak derlenmişse işe yarar. Eğer her iki sürücüden biri modül olarak derlenmişse sadece diğer yöntemler kullanılabilir.

    Her üç yöntem için de önce hangi aygıtı transfer edeceğinizi bulmanız gerekir. Bunun için lspci çıktısını kullanabilirsiniz. Benim makinemde lspci çıktısı aşağıdaki gibidir:

    # lspci 
    00:00.0 Host bridge: Silicon Integrated Systems [SiS] 741/741GX/M741 Host (rev 03)
    00:01.0 PCI bridge: Silicon Integrated Systems [SiS] SiS AGP Port (virtual PCI-to-PCI bridge)
    00:02.0 ISA bridge: Silicon Integrated Systems [SiS] SiS964 [MuTIOL Media IO] (rev 36)
    00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (rev 01)
    00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] AC'97 Sound Controller (rev a0)
    00:03.0 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f)
    00:03.1 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f)
    00:03.2 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f)
    00:03.3 USB Controller: Silicon Integrated Systems [SiS] USB 2.0 Controller
    00:04.0 Ethernet controller: Silicon Integrated Systems [SiS] SiS900 PCI Fast Ethernet (rev 90)
    00:05.0 IDE interface: Silicon Integrated Systems [SiS] RAID bus controller 180 SATA/PATA [SiS] (rev 01)
    00:09.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
    01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS] 661/741/760/761 PCI/AGP VGA Display Adapter

    Bu çıktı içinden bir transfer etmek istediğiniz pci aygıtını bulmanız gerekir. Usb portuna herhangi bir aygıt takın. dmesg çıktısında aygıtın hangi Controller üzerinde olduğunu görebilirsiniz. Burada örnek olarak transfer etmek istediğimiz USB portunun 00:03:0 adresinde olduğunu farzedeceğim.

    1. YÖNTEM

    Xen sanal makine yöneticisine açılışta vereceğiniz kernel parametreleri ile pciback sürücüsünün hangi aygıtları dom0'dan saklaması gerektiğini belirtebilirsiniz. Örnek bir grub girdisi şöyle olabilir.

    title           Xen 3.1.0 / Debian GNU/Linux, kernel 2.6.18-xen
    root (hd0,1)
    kernel /boot/xen-3.1.0.gz
    module /boot/vmlinuz-2.6.18-xen root=/dev/sda2 ro console=tty0 pciback.hide=(00:03.0)
    module /boot/initrd.img-2.6.18-xen
    savedefault

    Bu yöntemin işe yaraması için pciback sürücüsünün dom0 kernel'i içine statik olarak derlenmesi gerektiğini unutmayın.

    2. YÖNTEM

    pciback sürücüsüne göndereceğiniz parametreler ile aygıtın saklanmasını sağlayabilirsiniz. Ancak pciback sürücüsünün aygıtı kontrol altına alması için o aygıtın hiçbir sürücünün kontrolü altında olmaması gerekir. Eğer saklayacağınız PCI aygıtı için bir sürücü yüklenmiş ise öncelikle bu sürücüye aygıtı bırakmasını söylemeniz gerekir. Örneğin dmesg çıktısına göre benim yazıcımın bağlı olduğu PCI Controler aygıtı ohci_hcd sürücüsü tarafından kullanılmaktaymış.

    ohci_hcd: 2005 April 22 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
    usb 1-1: new full speed USB device using ohci_hcd and address 2

    O halde ohci_hcd sürücüsüne bu PCI aygıtının kontrolünü bırakmasını söylemeliyiz.

    # echo -n 0000:00:03.0 > /sys/bus/pci/drivers/ohci_hcd/unbind

    Eğer yukarıdaki komut bir hata veriyorsa (hatayı dmesg çıktısında görebilirsiniz) yanlış sürücüye parametre yolluyorsunuz demektir.

    Artık bu aygıtı pciback sürücüsünün kontrol etmesini söyleyebiliriz.

    # echo -n 0000:00:03.0 > /sys/bus/pci/drivers/pciback/new_slot
    # echo -n 0000:00:03.0 > /sys/bus/pci/drivers/pciback/bind

    Yukarıdaki 3 komutu bir açılış betiği içine yazarak her açılışta otomatik olarak çalıştırılmasını sağlayabilirsiniz.

    Bu yöntemi kullanırsanız hatırlamanız gereken şey, pciback modülü herhangi bir nedenle kaldırılırsa veya yeniden yüklenirse aynı işlemleri yeniden yapmanız gerektiğidir.

    3. YÖNTEM

    Modül ayarlarının yazıldığı dizinde birkaç oynamayla aynı işlemi yapabilirsiniz. Bu yöntemin yararı herhangi bir nedenle pciback modülü kaldırılsa veya yeniden yüklense bile ayarların yeniden yapılması gerekmez. Ancak bu yöntemin uygulanması dağıtımdan dağıtıma farklılık gösterir. Örneğin modüller ile ilgili ayarlar Debian' da /etc/modprobe.d/ dizini altında herbir modül için modülün adıyla aynı birer dosya şeklinde tutulur. Pardus'ta bu dizin /etc/modules.d/ adını alırken, Red Hat, CentOS ve Fedora gibi dağıtımlarda bütün modüller ile ilgili ayarlar /etc/modprobe.conf içine yazılırlar.Kullandığınız dağıtımda bu özelliği nasıl kullacağınızı bulmak size kalmış. :-)

    Örneğin Debian'da /etc/modprobe.d/pciback dosyasındaki ayarlar aşağıdaki gibi olmalıdır.

    options pciback hide=(0000:00:03.0)

    Ancak eğer ohci_hcd modülü pciback modülünden önce yüklenirse bu parametre işe yaramaz. (2. YÖNTEM'de anlatılan sebepten dolayı) O halde ohci_hcd modülünün ayar dosyasına da pciback modülünden önce yüklenmesini engelleyecek bir ayar koymalıyız.

    install ohci_hcd /sbin/modprobe pciback ; /sbin/modprobe --first-time --ignore-install ohci_hcd

    Bu ayar ile ohci_hcd modülü ilk defa yükleneceği zaman önce pciback modülünün yüklenmesini sağladık.

    Eğer bu üç yöntemden birini kullanarak aygıtı pciback kontrolüne verdiyseniz artık aygıtınız domU tarafından kullanılmaya hazırdır. domUayar dosyasına yazılan pci parametresi ile aygıtı domU'nun kontrolüne verebilirsiniz.

    pci=['00:03.0']

    Eğer herşey yolunda gittiyse domU başladığında yeni bir PCİ aygıtı görüp kullanmaya başlayacaktır.

    # lspci
    00:00.0 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f)
    # lsusb
    Bus 001 Device 003: ID 04e8:325b Samsung Electronics Co., Ltd
    Bus 001 Device 002: ID 058f:9254 Alcor Micro Corp. Hub
    Bus 001 Device 001: ID 0000:0000

    Sadece bir usb portunu domU'ya atamadığımıza dikkat edin. Atadığımız PCI aygıtı USB Controler idi, dolayısı ile aynı USB Contoler'a bağlı USB portlarının hepsini birden domU'ya atadık. Bu portların sayısı birden fazla olabilir.

    Ayrıca bu işlem her PCI aygıtı için tekrarlanabilir. Böylelikle birden fazla aygıtı (örneğin iki ağ kartı ve bir yazıcıyı) domU'nun kontrolüne verebilirsiniz.

    February 15, 2008 03:44 AM

    Pardus'ta komut satırında makine adını (hostname) değiştirmek

    Pardus'ta makine adını (hostname) komut satırından "hostname" komutu ile değiştirirseniz yaptığınız değişiklik COMAR'a kaydedilmediği için bilgisayarınız yeniden başlatıldığında makine adınız eski haline dönecektir. COMAR her açılışta makine adını yeniden ayarlar.

    Pardus'u sürekli grafik arayüz ile kullanmaya alıştı iseniz bu tip ince ayrıntıları unutabiliyorsunuz. ("Neden ağ programcığı varken komut satırından komut satırından makine adını değiştireyim ki" dediğinizi duyar gibiyim.) İşte size adım adım makine adını COMAR ile değiştirmenin yöntemi:

    1) Herhangi bir python yorumlayıcısı başlatın.

    # python

     

    2) Python yorumlayıcısında sıra ile aşağıdaki komutları girin.

    import comar
    link = comar.Link()
    link.Net.Stack.setHostNames(hostnames="makine_adı")
    reply = link.read_cmd()
    reply.command
    reply.data.split("\n")

    3) reply.command komutunun çıktısı 'result' ise makine adınız bir dahaki açılışta makine_adı olarak değiştirilecek. Şimdi güvenle hostname komutunu kullanabilirsiniz.

    # hostname makine_adı 

     

    February 15, 2008 02:17 AM

    Xen üzerinde sanal Pardus kurulumu

    Açık kaynak Sanal Makine Yöneticisi (Virtual Machine Monitor - VMM) olan Xen son versiyonlarında eklediği özelliklerle gerçekten kullanışlılığı ile dikkat çekmeye başladı. Ben de bu ilk girdimde Xen üzerinde sanal Pardus kurulumunu anlatmaya karar verdim.

    Bu girdide Xen kurulumundan veya ayarlarından bahsetmeyeceğim. Makinenizde zaten Xen'in kurulu ve düzgün çalışıyor olduğunu varsayıyorum. Eğer Xen kurulumu ile uğraşacaksanız yine dom0 olarak Pardus kullanmanızı tavsiye ederim. Hergün sanal makineler ile uğraştığım için bugüne kadar birçok işletim sistemi altında Xen kurdum, çalıştırdım ve hatta kendim derledim. Gerçekten de şunu rahatlıkla söyleyebilirim ki Xen kurulumu ve kullanımı en rahat Pardus altında oluyor.

    Ancak sanal Pardus kullanmak için mutlaka dom0'ınızın da Pardus olması gerekmiyor. En azından Pardus kurulu bir makineye erişiminiz olmalı ki temel bir imaj hazırlayabilesiniz.

    İşte size adım adım Pardus kurulumu. (Aşağıdaki işlemler Pardus 2007.3 altında 2007-test deposundan alınan Xen ve kernel-dom0 kernel-domU paketleri ile test edilmiş ve doğrulanmıştır.)

    1) Eğer sanal makinelerinizin diskleri için imaj kullanacaksanız öncelikle bir disk imajı oluşturmalısınız. dd komutu bu konuda işimizi görür.

    # dd if=/dev/zero of=imaj_dosyası bs=1k seek=4096k count=1

    Yukarıdaki komut 4 GB'lık bir imaj dosyası oluşturur. seek parametresi olarak verilen değer ile oynayarak daha küçük veya büyük imajlar hazırlanabilir. Eğer domU'da GUI kullanacaksanız min 3 GB, kullanmayacaksanız 1GB minimum değerler olmalıdır.

    Eğer disk olarak imaj yerine başka bir yöntem (mantıksal [lvm] veya fiziksel bölüm, NFS vs.) kullanacaksanız bu işlemi atlayabilirsiniz.

    2) Daha sonra yarattığınız imajın içinde dosya sistemi oluşturmalısınız. (Eğer imaj yerine mantıksal ya da fiziksel bölüm kullanacaksanız kullanacağınız bölüm üzerinde dosya sistemi oluşturun.)

    # mkfs.ext3 imaj_dosyası

    3) İmajı (veya mantıksal yada fiziksel bölümü) dosya sisteminiz altında herhangi bir yere bağlayın (örn. /mnt/pardus)

    # mount -o loop imaj_dosyası /mnt/pardus

    4) Bağlanan diskte pisi'nin kullanması için bir depo oluşturun.

    # pisi ar pardus-2007 http://paketler.pardus.org.tr/pardus-2007.3/pisi-index.xml.bz2 -D /mnt/pardus/

     

    Eğer kendi lokal deponuz varsa Pardus deposunun adresi yerine kendi deponuzun adresini yazın.

    5) Sanal makinenin diskine Pardus temel sistem bileşenlerini kurun.

    # pisi it -c system.base -D /mnt/pardus --ignore-comar

    --ignore-comar dememizin sebebi sistemin kurulduğu yerde Comar kurulu olmaması, bu problemi daha sonra halledeceğiz.

    Yukarıdaki komut ile 63.13 MB'lık paket indiriyorsunuz.

    6) Yeni oluşturduğunuz dizine chroot edin.

    # chroot /mnt/pardus

    7) linker için gereken dosyaları oluşturun.

    # cp /usr/share/baselayout/ld.so.conf /etc/ && ldconfig 

    8) Yeni kurduğunuz sistemin ilk ayarlarının yapılabilmesi için Comar'ı başlatın.

    # service comar start 

    9) Comar'ın paketlerin --ignore-comar seçeneğinden dolayı eksik kalan ayarlarını yapmasını sağlayın.

    # pisi configure-pending

     

    10) Yeni sistemde root kullanıcısının parolasını belirleyin.

    # passwd

    11) /etc/fstab dosyasını gerektiği şekilde düzenleyin.

    /dev/xvda1	none		swap	defaults	0 0
    /dev/xvda2 / ext3 noatime 0 1
    none /proc proc nosuid,noexec 0 0
    none /dev/shm tmpfs defaults 0 0

    12) Boot etmek için gerekli aygıt node'larını oluşturun.

    # /usr/bin/mknod /dev/console c 5 1
    # /usr/bin/mknod /dev/null c 1 3 

    13) /etc/inittab içindeki tty2-6 arası bütün terminalleri kapatın. Xen altında sadece 1 terminalimiz olacak.

    c1:12345:respawn:/sbin/mingetty --noclear tty1
    #c2:12345:respawn:/sbin/mingetty --noclear tty2
    #c3:12345:respawn:/sbin/mingetty tty3
    #c4:12345:respawn:/sbin/mingetty tty4
    #c5:12345:respawn:/sbin/mingetty tty5
    #c6:12345:respawn:/sbin/mingetty tty6

    14) exit komutu ile chroot'dan çıkın.

    15) domU başlatma dosyasını oluşturun.

    name = "pardus"
    memory = 256
    kernel = /boot/kernel-2.6.18.8-16-domU
    disk = [ "file:swap_imajı, xvda1, w", "file:imaj_dosyası, xvda2, w" ]
    root = "/dev/xvda2"
    vif = [ "" ]

    Dikkat etmeniz gereken şey fstab içinde hangi diski root olarak belirtti iseniz burada da root parametresine aynı değeri girmeniz.

    16) domU'nun kullanacağı kernel'in modüllerini imajınızın içine kopyalayın. (domU kernel'ini kernel satırında belirttik.)

    # cp -r /lib/modules/kernel-2.6.18.8-16-domU /mnt/pardus/lib/modules

    Pardus'ta Modül bağımlılıkları her açılışta yeniden hesaplandığından depmod komutunu çalıştırmanıza gerek yok.

    18) imaj dosyanızı umount ile çözün ve domU'yu başlatın.

    # xm cr -c domU_başlatma_betiği

    Terminalde çalışan minimal bir Pardus'unuz var. :-)

    Eğer ben GUI olmadan çalışamam diyorsanız işte size KDE'li sanal Pardus kurmak için fırsat.

    19) KDE için gerekli paketleri kurun.

    # pisi it arts artwork kdeaccessibility kdeaddons kdeadmin kdeartwork-emoticons kdebase kdebindings \
    kdeedu kdegames kdegraphics kdelibs kdemultimedia kdenetwork kdepim kdesdk kdetoys \
    kdeutils qt libvncserver tightvnc sudo

    Yukarıdaki komut tek bir satıra yazılmalıdır.

    Ayrıca aşağıdaki çıktıya dikkat etmenizi öneririm:

    Paket(ler)in toplam boyu: 285.75 MB
    Bağımlılıklar yüzünden ek paketler var. Devam etmek istiyor musunuz? (evet/hayır)

    Bunlar KDE çalıştırabilmek için zorunlu olan paketler. Bir de seçimlik olanlar var. Örneğin ben Pardus ayarlarımı yapmak için Tasma kullanmak istiyorum diyorsanız:

    # pisi it tasma 
    Bağımlılıkları sağlamak için bu paketler verilen sırada kurulacaktır:
    sip qscintilla PyQt PyKDE PyKDEeXtensions package-manager user-manager dbus-python disk-manager
    boot-manager pygobject libglade2 libsvg libsvg-cairo pycairo pygtk startup-notification libwnck
    libsexy notification-daemon libnotify notify-python network-manager iksemel service-manager
    python-iptables iptables firewall-config tasma
    Paket(ler)in toplam boyu: 8.01 MB

    20) Kurulum tamamlandıktan sonra KDE kullanırken ihtiyacınız olacak bütün servisleri açın.Benim makinemde service komutunun çıktısı aşağıdaki gibi:

         Servis     |   Durum   | Otobaşla | Açıklama
    -------------------------------------------------
    PolicyKit | çalışıyor | evet | Politika Araçları
    cups | çalışıyor | evet | CUPS Yazıcı Sunucusu
    cyrus-sasl | | | Cyrus-SASL Sunucusu
    dbus | çalışıyor | evet | DBUS Masaüstü İletişim Sistemi
    gpm | | | Konsol için Fare Sunucusu
    hal | çalışıyor | evet | Donanım Soyutlama Katmanı (HAL)
    iptables | | | Güvenlik Duvarı
    kdebase | | | KDE Masaüstü Ortamı
    lirc | | | InfraRed Bağlantı Yöneticisi
    mDNSResponder | çalışıyor | evet | Zeroconf İstemcisi
    nas | | | Ağ Ses Sistemi
    net-snmp | | | SNMP Sunucusu
    openssh | çalışıyor | evet | Güvenli Kabuk Sunucusu
    samba | çalışıyor | evet | SMB Ağ Paylaşımı
    subversion | | | SVN Sunucusu
    sysklogd | çalışıyor | evet | Sistem Mesajları Kütüğü
    vixie-cron | çalışıyor | evet | Cron Görev Zamanlayıcı
    zemberek-server | çalışıyor | evet | Zemberek Yazım Denetimi

    21) Eğer grafik ekrana root kullanıcısı olarak giriş yapmayacak iseniz (benim önerim yapmayın, pardus geliştiricileri düşünmüşler, taşınmışlar ve bu konuda bir karar almışlar, bu karara saygı duyun :-) ) yeni bir kullanıcı yaratın ve onu istediğiniz gruplara üye yapın.

    # useradd -m -d /home/pardus -k /etc/skel -g users -G wheel pardus 

    Yukarıdaki komut ile wheel grubuna üye (sistem yönetimi yetkilerine sahip) pardus isminde bir kullanıcı yarattık.

    Tabii ki bu kullanıcının bir de şifresi olmalı. Onu da tanımlayın eliniz değmişken.

    # passwd pardus 

    22) Yeni kullanıcı olarak login olun.

    # su - pardus

    23) Diğer makinelerden (dom0 veya uzaktaki bir makine olabilir.) bağlanabilmek için VNC sunucusunu başlatın.

    $ vncserver

    Bu komut sizden VNC bağlantılarınız için bir şifre tanımlanızı ister ve aşağıdakine benzer bir çıktı verir.

    You will require a password to access your desktops.

    Password:
    Verify:
    Would you like to enter a view-only password (y/n)? n
    xauth: creating new authority file /home/pardus/.Xauthority

    New 'X' desktop is pardus:1

    Creating default startup script /home/pardus/.vnc/xstartup
    Starting applications specified in /home/pardus/.vnc/xstartup
    Log file is /home/pardus/.vnc/pardus:1.log

    Burada X sunucusunun adresi 6. satırda verilmiştir. Bu adresi not edin.

    24) VNC sunucunun öntanımlı başlatma betiği Pardus'un öntanımlı pencere yöneticisi yerine başka bir pencere yöneticisi kullanır. Eğer benim gibi alışmakta zorluk çekecekseniz bunu değiştirmeniz gerekir.Değiştirmeniz gereken başlatma betiğinin adresi yukarıdaki komut çıktısında var.

    $ nano /home/pardus/.vnc/xstartup
    #!/bin/sh

    xrdb $HOME/.Xresources
    xsetroot -solid grey
    xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
    #twm &
    kwin &

    En son satırdaki twm programı yerine Pardus'un öntanımlı pencere yöneticisi olan kwin programının çalıştırılmasını söyledik.

    Değişikliklerin etkin olması için VNC sunucuyu yeniden başlatmalısınız.

    $ killall Xvnc && vncserver

    25) vncserver komutunun çıktısında yazan X sunucunuzun adresini not ettiniz değil mi? Siz not ettiniz ama Pardus'a da söyleyin hangi sunucuyu kullandığınızı:

    $ export DISPLAY=pardus:1 

    26) Artık kde başlatmaya hazırsınız:

    $ startkde&

    Bu işlemi root olarak yapmaya çalışırsanız (yapmamanız konusunda uyarmıştım değil mi! bkz. madde 21 :-) ) komutun bulamadığı şikayeti ile karşılaşacaksınız. Korkmayın ...

    # /usr/kde/3.5/bin/startkde&

    Artık KDE çalışan bir sanal Pardus'unuz var. Ama göremiyoruz :-(

    27) dom0 veya uzaktaki herhangi bir bilgisayarda VNC istemcisini çalıştırın. vncviewer veya krdc olabilir.

    $ vncviewer pardus:1

    veya

    $ krdc pardus:1

    İstemcinizi başlatırken makine adı yerine adres de verebilirsiniz.

    $ krdc 192.168.1.1:1

    28 ) Eğer ağ ayarlarınızı yapmak için bugüne kadar hep Tasma'yı veya panelde sağ köşedeki ağ programcığını kullandı iseniz, sanal makinenizin terminalinde ağ ayarlarını yapmakta zorlanabilirsiniz. Aradığınız programın adı network.

    # network help

    ile kullanımı ile ilgili yardım alabilirsiniz.

    February 15, 2008 01:48 AM

    February 08, 2008

    Emre Yüce

    Diffie Hellman ve Java

    Diffie Hellman anahtar anlaşma protokolü iki kişinin bir gizli anahtarı güvensiz bir kanal üzerinde nasıl paylaşabileceklerini göstermektedir. Anahtar değişimi yapacak iki taraf kriptografi camiasının ünlü isimleri Alice ve Bob olsun. Protokol kabaca aşağıdaki gibi ilerler:

    Açık bilgiler: p ( büyük bir asal sayı, java uygulamasında 1023 basamaklı bir sayı kullanılmıştır. ) , g

    Adımlar:

    1. Alice gizli tutacağı bir sayı seçer ( a ) ve g^a mod p değerini hesaplar ve bu değeri Bob’a yollar.
    2. Bob gizli tutacağı bir sayı seçer ( b ) ve g^b mod p değerini hesaplar ve bu değeri Alice’e yollar.
    3. Alice, Bob’dan gelen bilgiyi ( g^b mod p ) kullanarak , g^(a*b) mod p değerini hesaplar.
    4. Bob, Alice’den gelen bilgiyi ( g^a mod p ) kullanarak , g^(a*b) mod p değerini hesaplar.
    5. Gizli anahtar g^(a*b) mod p olarak belirlenmiştir.

    Diffie Hellman

    Protokolün güvenliği ayrık logaritma ( umarım Türkçe’sini doğru yazmışımdır, ingilizcesi discrete logarithm ) problemine dayalı. Bu problem kabaca g^a mod p değerini bilerek a değerini bulmanın zorluğundan kaynaklanıyor. Diffie Hellman güvenliğini g^a mod p ve g^b mod p değerleri bilinerek g^(a*b) mod p değerinin elde edilmesinin de ayrık logaritma problemi ile aynı derecede olmasına dayandırıyor.

    Diffie Hellman protokolü anahtar anlaşmasına güzel bir çözüm getirmiş olsa da, bu protokolü kullandığımızda kiminle iletişim kurduğumuza dair herhangi bir bilgi elde edemiyoruz. Bu sorun paylaşılan gizli bilgi ya da açık anahtar kriptografisi ve bir sertifika otoritesi kullanılarak çözülebilir. Açık anahtar kriptografisi kullanılırsa her iki taraf da gönderdiği g^(a*b) mod p değerini imzalayarak yollar. Ancak yine de protokolü başlatan tarafın kendini önce tanımlamasının zorunlu hale getirilmesi güvenliği artıracaktır.

    Gelelim protokolün java uygulamalarına; bu sayfada protokolün Java 6 kütüphaneleri kullanılarak yazılmış bir örneğine erişebilirsiniz. Bu kodu -gen argümanı ile çalıştırırsanız p ve g değerlerini rastgele baştan üretiyor, kullanmazsanız tanımlanmış değerler kullanıyor p ve g için. -gen argümanı ile çalıştırmak çok uzun sürer diye bir uyarı çıkıyor ama standart bir masaüstü bir bilgisayarda 1 dakikayı geçmiyor. İşin güzel yanı ise protokolü doğal haliyle biraz daha ilerletmişler ve sonuna üretilen gizli anahtarın kullanıldığı bir DES uygulaması eklemişler. Ayrıca bu sayfada diğer protokoller ve çeşitli algoritmalar için Java 6 ile yazılmış kodlar da bulabilirsiniz.

    Çeşitli Kaynaklar:

    Java’da kullanabileceğiniz sınıflar ile ilgili bilgiye burada bulabilirsiniz.

    Diffie Hellman üzerine Java uygulamaları geliştirmek için bu sayfaya göz atabilirsiniz. Diffie Hellman üzerine RSA firmasının bu konudaki sayfasını inceleyebilirsiniz. Diffie Hellman hakkında başka bir yazıyı bu sayfada bulabilirsiniz. Burada da konuyla ilgili bir makale var.

    Not: Bu sitede yer alan bilgiler genel bilgilendirme amaçlıdır. Bazı ülkelerde kriptografi kullanımı kısıtlandırılmış ya da yasaklanmış olabilir, bu kurallara uymak okuyucuların sorumluluğundadır.

    February 08, 2008 05:07 PM

    February 06, 2008

    Mete Alpaslan

    Nasıl Düzgün Staj Başvurusu yapılır?

    Bizi takip edenler şirketimizde staj dönemi başvurularının başladığını biliyorsunuzdur.Gelen yüze (100) aşkın başvuruyu bugün Bora Bey'le inceledik. Eski bir Portakal Teknoloji stajyeri ve aynı süreci yaşamış biri olarak başvurularda gördüğüm hatalardan biraz bahsetmemin adaylara yardımcı olacağını düşünüyorum...

    Birkaç maddede özetlersek; 



    Staj başvurularınız için kariyer[at]portakalteknoloji.com

     

    February 06, 2008 11:39 AM

    Serdar Tuğcu

    RPM Oluşturmak

    Linux kullanıcılarının (en azından bir kısmının) görmeye alışkın olduğu bir paket türü vardır: RPM

    RPM haline getirilmiş bir paketi kurmak genellikle zor değildir. Paketi hazırlayan kişi ya da kişiler zaten sizin işinizi en kolay şekilde halletmeniz için uğraşmış oluyorlar. Peki biz kendimiz bu paketlerden hazırlamak için ne yapmalıyız?

    Aşağıda yazdıklarım adım adım takip edeceğiniz bir kılavuz değildir. Ama RPM paketleri hazırlamak istiyorsanız mutlaka bilmeniz gereken konuları anlatacağım. Detaylarla ilgili aklınıza takılan sorular olursa serdar.tugcu[at]portakalteknoloji.com adresine mail atabilirsiniz.

    1. RPM nedir?

    RPM(Rad Hat Package Manager), Red Hat tarafından geliştirilen bir paket yönetim sistemidir. Bu sistem hem sistemdeki paketleri yönetmek, hem de yeni paketler oluşturmak için kullanılabilir. Bu paketler sadece sizin program kurmanızı kolaylaştırmakla kalmaz, aynı zamanda kurduğunuz programın sistem tarafından daha kolay tanınmasını da sağlar.

    1. RPM paketi nasıl kurulur?

    RPM paketi kurmak günümüzdeki linux sürümlerinde sadece arayüzle bile yapılabilen bir iştir. Fakat komut satırından kurmak da hiç de zor değildir.


    rpm –I [packagename].rpm


    Eğer daha önceden kurduğunuz bir paketi yükseltmek istiyorsanız, -U parametresiyle amacınıza ulaşabilirsiniz.


    rpm –U [packagename].rpm


    1. Kurulmuş paket nasıl kaldırılır?

    Daha önceden kurulan bir paketi kaldırmak oldukça kolay bir iştir. Tek yapmanız gereken –i parametresini kullanmaktır.


    rpm –e [packagename].rpm


    1. RPM nasıl oluşturulur?

    Geldik işin en önemlli kısımına. RPM nasıl oluşturulur? Öncelikle, RPM paketini oluşturacağınız kodun sorunsuz derlenebilen bir kod olması gerekir. Malum koda sahip olduğunuzu varsayarak devam ediyorum:

    Bir RPM paketi oluşturmak istiyorsanız, temel olarak iki şeye ihtiyacınız vardır: kaynak kodları ve paketiniz için yazılmış bir SPEC dosyası. Kaynak kodunuzda bir sorun olmadığından yola çıkarak, SPEC dosyasından işe girişelim.

    SPEC dosyası, yazılımınızın nasıl ve nereye kurulacağına, hangi ek özelliklere sahip olması gerektiğine ve buna benzer bilgilere sahip olan dosyadır. SPEC dosyasının alışılan isimlendirme yöntemi şudur:

    [isim]-[versiyon]-[sürüm numarası].spec

    Yukarıdaki yapı zorunlu olduğunuz bir yapı değildir. Fakat yazılımcılar iyi bilir ki mevcut yazılımınız asla son sürüm değildir. Farklı sürümlerin spec dosyaları arasında kaybolmamanız için bu yapıyı tavsiye ediyorum.

    Örnek bir SPEC dosyası şablonu:


    Summary: [Yazılımın özetini yapan yazılar]

    Name: [Yazılımın ismi]

    Version: [versiyonu]

    <