fmatak

fmatak


0 takip ediyor | 0 takip ediliyor


Bilgi alanları


İlgi alanları

Fazlamesai'ye soralım: Yeniden yazmak ya da yazmamak ( 8)

hem yeniden yazma, hem de refactoring projelerinde yer aldım. ikisinin de fail ettiğine yada başarıya ulaştığına şahit olduğum durumlar oldu. ama büyük oranda sonuç istenenin altında vasat bir görüntü oluyor. bunun çeşitli sebeplerini kendimce şöyle sıralamak istiyorum: 1) var olan projenin küçümsenmesi (under-estimate) (bkz: 2 haftada cillop) 2) yeni yazılacak projenin küçümsenmesi (bkz: 2 haftada cillop) 3) kodlama dışı kısmın küçümsenmesi: 3rd parti entegrasyonları, business tarafının isteyeceği değişiklikler, bunlarla ilgili son kararların verilmesi, hazır yeniden yazılıyorken şu iş akışlarını da değiştirelim vs gibi değişiklik istekleri 4) ekibin gücünün büyütülmesi: (over-estimate) tek başıma 50bin satırlık projeyi 3 ayda bitirdim, 10 kişi bir milyon satırlık işi şu kadar sürede çok rahat yaparız kafası. Ekip büyüdükçe verimlilik liner olarak artmamakta, aksine düşmekte. iletişim için 2^n adet olası küme oluşabiliyor. bunların her birinin aldığı kararlar diğerlerini etkileyebiliyor. sadece ekibin büyümesi bile işleri yavaşlatabiliyor. 5) projeye eklenen 3üncü modül ile 20inci modülün aynı zorlukta olduğunu düşünmek: 3üncü modülü eklediğinizde, elinizdeki diğer 2 modülle uyumlu çalıştığını garanti etmeniz yeterli olacakken, 20inci modülün ayağına basmadan çalışması gereken modül sayısı 19. bunun kontrolü, garanti edilmesi vs. i ilkine göre kat kat uzun sürer ve zor olur. zaman planlamasında ikincisine bekli 5 kat daha uzun süre ayırmak gerekebilir duruma göre. 6) var olan proje ile hayal edilen proje arasındaki uzaklığın dikkate alınmaması: bu uzaklık, aslında refactor mü yapılsın yoksa yeniden mi yazılsın bunun kararını vermek için kullanılması gereken birkaç kritik metrikten biri. (bir diğeri için development vs. maintenance cost) Sizin elinizde bir e-ticaret sistemi altyapısı varsa, ama gitmek istediğiniz yer bir haber sitesi ise, "zaten kullanıcı login vs kısımları hazır. bunu refactor edelim" yaklaşımı doğru olmayabilir. diğer yandan, amacınız var olan siteninizin ön yüzünü değiştirmekse, tekrar yazmak mantıksız olabilir. 7) küçük ama emin adımlar atmak yerine devasa adımlar atmaya çalışmak. devasa adımlar daha dikkat çekici olabilir. üst yönetimden daha çok takdir alabilir. ama devasa bir adım atabilmek için uzun süreye ihtiyaç vardır. ve bu uzun sürenin, özellikle büyük ekiplerde, ekip değişimlerine denk gelmesi kaçınılmazdır. bu durumda ekibe yeni gelen - ekipten ayrılan kişilerin işlerinin devredilmesi, yeni iş bölümlerine gidilmesi ve yeni uyum süreci zaten uzun sürecek olan dev adımın daha da uzun sürmesine sebep olacaktır. ayrıca birisi tarafından başlanıp, tamamlanmadan başkası tarafından devranılan işlerin başarılı olma oranı daha düşük olmaktadır. sadece yarım bırakan kişinin kafasında kalmış olan çeşitli kısımlar, ileride eklemeyi planladığı kontroller vs. yüzünden işler karışmaktadır. 8) sadece refactoringe özel olmayan, genel yazılım proje sıkıntıları. ör: yönetimin teknik konulara müdahale etmekten kaçınmaması, ekibe güvenmemesi, ekibin yönetime güvenmemesi, bu yüzden iki tarafında bir birinden gizli işler çevirmeleri, tutamayacakları sözler vermeleri vs. gibi.

daha çok şey yazılabilir aslında. ama genel olarak 10 durumun en az 8inde refactoring'in daha iyi bir seçenek olarak karşımıza çıktığınız düşünüyorum.

fazlamesai.net'e Soralım: Erdös Sayısını Hesaplayan Program Yazabilir Misiniz? ( 11)

sanırım soru da bir eksiklik var. bir miktar yazarın erdös numarası verilmeli. ayrıca, makalelerin yazarların connected olduğu da garanti edilmeli. yoksa, çözümsüz durumlar çıkabilir: makale1 erdös ali makale2 veli hüseyin burada, ali ninkini bulabiliriz ama veli ile hüseyin in durumu muamma..

fazlamesai.net'e soralım: Özgür yazılım için neden GNU/Linux? ( 68)

Biraz gecikti belki ama eklemeden edemedim...
Bazı arkadaşlar, Linux da kurulum yapmanın çok kolay olduğunu iddia ediyorlar. Evet elinizin altında ADSL 512K internet varsa, yada server a ssh üzerinden bağlantı yapıyorsanız kolay olabilir. ama bir de internetiniz olmadan yapmayı deneyin.

Bir kaç ay öncesine kadar bilgisayarımda emektar bir 56K modem ile sürünmek ile meşgul olduğum için, ve ne yazık bu bir winmodem olduğu için, (TC deki büyük çoğunluk hala bu şekilde bilgisayar kullanıyor), linmodems de driver bulamadığım için, dediğiniz komutlar çalışmıyordu. örneğin, windows için olan bir programı bir şekilde bir dergi CDsinde de bulabiliyorum, yada başka birinden direk kopyalayabiliyorum, ancak aynı şeyi linux için yapmam gerektiğinde, linux un doğru distro nun doğru versiyonunun doğru architecture ı için vs. vs. hepsi uyan paketler gerekiyor. ve çoğunlukla tesadüf eseri işyerinde bir arkadaşınızda bulamıyorsunuz. milyonda bir ihtimalle bulsanız bile daha iyi performans için kodu indirip local de compile etmeniz vs. gerekebiliyor. tamam, belki bunları ben biliyorum, ama INTEL adını ilk defa duyan ekran kartının AMD olduğunu iddia eden, bilgisayardaki tüm parçaların markasının CASPER olduğunu sanan bir kullanıcı için bunlar Sanskritçe gibi geliyor. Ben böyle bir kullanıcı olmadığım için bu adımda elenen büyük çoğunlukta değildim, ve bir sonraki eleme raunduna geçmeye hak kazandım:

bu mahkumiyete (windows ta download, linux da install) rağmen, linux u biraz daha işe yarar hale getirmek için çeşitli programlar kurmaya başladım. Ör: VCD, DVD izlemek için Xine. (Distro ile gelmiyordu) Windows tan RPMLerini indirdim. linux a geçip kurmayı denedim, ve dependency vs. hatası verdi. eksik olan bir library indirmek gerekiyordu. bunun gibi bir internet işi için bilgisayarı reboot etmeniz gerekiyor, windows açıyorsunuz, dialup bağlanıyorsunuz, (TTNET bağlanırsa) google dan arıyorsunuz, bir şekilde doğru dosyayı buluyorsunuz, TTNET in elverdiği maximum hızda dowload edip, Fat32 olan bir bölüme kopyalıyorsunuz (evet NTFS desteği de yok), tekrar restart ediyorsunuz, linux açıyorsunuz, mount edip install ediyorsunuz.. ve TATAA: karşınıza başka bir hata çıkıyor. bazen hatanın ne olduğunu anlamak için bazen de eksik dosyaları indirmek için sürekli reboot ediyorsunuz. 30 dakikanızın 15-20 dakikası restart ekranlarını izleyerek geçiyor. çıldırmak işten değil. Bu noktada ilk raund da elenmemiş olan azınlığın büyük kısmı eleniyor. Ama ben yine de azmettim, bu filmi seyredeceğim diye.. sonunda direk Source ları indirip compile etmeye karar verdim. bazı bileşenleri ignore etmesi, bazı libraryleri görebilmesi vs için bir sürü environment variable tanımlamam gerekti. (aslında rpm kurmaktan daha kolay oldu :) ) sonuçta, saatler sonunda Xine kurmayı başardım. (MUTLU SON) (acaba kaç kişi bu kadar uğraştı/uğraşırdı?)
sıradan bir next next tipi kullanıcının kesinlikle bu kadar uğraşacağını sanmıyorum. Mesela benzer birşeyi windowsta yaptığımızı varsayalım. (ki yaptım da) DVD izlemek için NVDVD kurdum, 30sn civarı sürdü. Evet, next next ile. (time-trial olduğu için süresi dolduktan sonra xine'a geçiş yaptım) tabii son kullanıcı bunu seçer. Maddi yönden de biraz rahatsa verir 20-30$. sorunsuz izler filmlerini.

başka bir örnek: ilk linux kurduğumda tam 9 saat aralıksız uğraşmıştım. sonunda öğrendim ki, CD bozukmuş. o dağıtımlarda nasıl bir mantık yürüttülerse artık, CD sağlam mı diye test yapmıyordu, bu sebeple kurarken alakasız yerlerde Signal 11 veriyordu. sebebini bulmak saatlerinize maloluyordu. neyse ki, artık o sorunlar yok.

şimdilerde yeni bilgisayar topladım, ve SATA disk aldım. ve yine linux kurulum sorunu. Elimdeki linuxlardan hiç birine göstermeyi beceremedim. O yüzden linux kullanamıyorum şu sıralar. (çok da kasmadım açıkcası, şu sıralar pek vaktim yok. ubuntu CD lerimin gelmesini bekliyorum, sonra tekrar deneyeceğim)

Sonuç olarak, BENCE hem son kullanıcı için, hem ileri düzey kullanıcı için linux zor. yada belki de zor dan ziyade ameleliklere mahkum edebiliyor ve saatlerce uğraşmanızı gerektirebiliyor desem daha doğru.

Ben bunu, RedHat 6.2 den beri program geliştirme (Tomcat/Apache, MySQL, Java, C, vs.) amaçlı Linux kullanan birisi olarak söylüyorum. Evet isteyen aptal diyebilir, dalga da geçebilir. ama bir sistem, kolay değilse, son kullanıcıya hitap etmiyorsa, ne kadar güçlü olursa olsun, sıradan kullanıcı düzeyinde popüler olması çok zor. Ve bu durumda da microsoft parayı götürmeye devam eder gibi görünüyor :(

(biraz uzattım artık kusura bakmayın)