Ankara JUG, Ocak 2013 ve Sonrası

Ameleler,

Her ay yazdığım gibi, bu ay da Ankara JUG etkinliğinden sonra etkinlik ile ilgili gayrı resmi yazımı yazayım dedim. Biraz geciktim, çünkü kafamda tam tasarlayamadım yazacaklarımı.

Ocak 2013 etkinliğinin konusu HTML 5 idi. Murat Can Alpay’ın yaptığı sunum ile HTML 5 teknolojilerinin içine daldık. Kendi açımdan HTML 5, her zaman orada bir yerde duran, var olduğunu bildiğim fakat hiç kullanmadığım bir teknoloji. Hangi derde çare olduğunu, nerelerde seçilmesi gerektiğini biliyorum ama bir canvas tag’i açmışlığım yoktur açıkçası. Ankara JUG sayesinde HTML 5’in tarihçesinden detaylarına kadar girdik. Arada, sorulan soruyu yanıtlayarak 3 aydır gözümü diktiğim Oracle Academy mug’ını da kazandım 🙂 İşin ironik kısmı, hiç sevmememe rağmen Microsoft sayesinde bu mug’ı kazanmış olmam..

HTML5

Asıl anlatacağım, etkinlik ve sunum değil, etkinlik sonrası buluşma, ve aslında Ankara JUG’un kendisi. Ankara JUG kurucuları ve benim gibi bir kaç daha katılımcı ile, güzel bir ortamda muhabbet ettik. “Optimus Prime” sağolsun, ilk içkilerimizi ısmarladı. Ankara JUG’un kuruluş hikayesini, motivasyonunu ve hedeflerini birinci ağızlardan öğrenme şansı buldum. Bu şekilde başlayan organizasyonların en büyük eksikliği tanınma ve bilinirlik. Sosyal medya üzerinden elimden geldiğince desteklemeye çalışıyorum. Aynı şekilde, diğer katılanların da desteklemesi gerektiğini düşünüyorum, yapılacak şey de aslında çok basit. Ankara JUG etkinliğine katıldığınızı bir şekilde sosyal medya üzerinden paylaşın yeterli. Takipçilerinizin, arkadaşlarınızın arasında Ankara JUG adı bilinmeye başladıktan sonra, yapılanları merak edenler olacak, bu da etkinliğe olan ilgiyi artıracaktır. Ben elimden geldiğince gönüllü çığırtkanlık yapıyorum, Twitter üzerinden, bu blogdan birşeyler karalamaya çalışıyorum.

Peki neden bu organizasyona ilgiyi artırmaya çalışıyoruz? Büyük JUG’lar, çok katılımcılı, bir kaç gün süren etkinlikler gerçekleştirebiliyorlar. Bu, hem biraz maddi kaynağın artıyor olması (sponsorlar vs.) hem de katılımcıların kalitesinin ve çeşitliliğinin artması sebebiyle ilgi alanlarının artmasından kaynaklanıyor. Bir başka sebep de, JUG’ların, bazı JSR (Java Specification Request) üretimine giriyor ve bunları Java sürümlerine ekleyebiliyor olmaları. Yıllardır kullandığımız platforma destek olabilme fikri bile heyecan verici.

Şubat etkinliği için http://ankarajug.blogspot.com adresini takip edin. Bu organizasyonu beraber büyütelim, Ankara JUG olarak bir adımız olsun.

Scrum Ne Değildir?

Scrum’ın ne olduğu konusunda az çok herkesin bilgisi var. Yazılım geliştirme süreçlerinin iyileştirildiği, güzelleştirildiği, geliştiriciyi daha ön plana koyan bir yöntem olarak biliyoruz. Peki Scrum ne değil?

1- Scrum, “Süper Kahraman” Değildir

Scrum bir süper kahraman değildir. Uçarak gelip süper güçleri ile var olan yönteminizi anında iyileştirmeyecektir. Dönüşüm, takım büyüklüğüne, var olan süreç yönetiminin kullanımına ve değişime olan dirence bağlı olarak günler, haftalar veya aylar alabilir. Scrum dönüşümü için bir Scrum Master geldi ise, aynı süperkahraman yaklaşımını ondan da beklemek yanlıştır. Genelde “Köle Kral” olarak adlandırılır bu kişiler zaten ve ekibin içinde onlarla beraber aynı eziyeti çekenlerden biri olur. Dönüşüm takım işidir, tek bir kişinin bu dönüşümü yapması imkansızdır.

Aynı zamanda, Scrum metolojilerini uygulamak, planından sapmış ve teslimata yaklaşmış projelerinizi garantili olarak rayına sokmaz. Scrum’ın amacı, son dakika kahramanı olmak değildir. Doğru, bazı projeleri son dakikada ipten alan Scrum hikayeleri mevcut, fakat bu her zaman olacak diye bir kaide yok. Asıl olay, Scrum yöntemlerini işin başından itibaren uygulamak ve son dakika sürprizlerinden olabildiğince uzak kalmakta.

2- Scrum, CMM-killer Değildir

Geleneksel süreç yönetimi kullanan geliştiriciler, Scrum’ı (ve diğer Agile yöntemleri),  bir CMM anti-tezi olarak görüp, mümkün olduğu kadar uzak dururlar. Hatta, bazı durumlarda saldırgan tavırlar da aldıklarını görüyoruz. Mesela, aldığım yüksek lisans dersinde, bir CMM fanatiği olan hocamız, sunumunu yaptığım Agile yöntemler araştırmasını ilgisizce izlemiş, sunum sonunda da neden CMM ile ilgili bir konu seçmediğimi, Agile yöntemlerin gereksiz olduğunu falan söylemişti. Madalyonun diğer tarafından da bakarsak, Scrum fanatikleri, bu yöntemi ağır CMM (ve diğer waterfall tabanlı süreçler) yöntemlerinden kurtuluş için bir fırsat olarak görür ve zamanında başarılı bir şekilde kullanmış olsalar bile, hiç bir CMM yöntemini uygulamazlar.

Halbuki, iş öyle değil aslında. Ne Scrum’ın amacı CMM’i yok etmektir, ne de bunu yapabilecek bir kapasitesi vardır. Dünya üzerinde bir çok CMM-3 süreç yönetimi ile Scrum tekniklerinin birleştirildiği ve başarıyla uygulandığı örnekler mevcut. Hatta, CMM-5 seviyesi ile birlikte bile kullanıldığını görmüştüm. Yani, önemli olan, başarısı kanıtlanmış olan yöntemlerin, takım için uygun olan yönlerini alarak uygulayabilmekte.

3- Scrum, Anarşi Değildir

Scrum

“Dökümantasyon yok, geniş çaplı plan yok, hatta proje yöneticisi bile yok”. Ee, ne var o zaman diye sorabilirsiniz. Scrum yöntemleri içinde evet, bu yazdıklarımız, bu şekilde olmasa bile yok. Çünkü Scrum ile amaç 2 yıllık bir plan hazırlayıp sakallı proje yöneticilerinin insiyatifinde, tek sayfası bile açılmayacak dökümantasyonlar yazmak değildir. Bu, genelde askeri hiyerarşi düzeninde yönetilen projelerden alınan bir yorum aslında, “yöneten birisi olmayınca burada anarşi olur” şeklinde. İnsiyatifi proje yöneticisine değil takıma bırakmak, bir otorite boşluğu doğuracak gibi görünür, ama aslında durum tam tersi. Geleneksel otoriter yöntemde, proje yöneticisi “emir” verir ve takım üyesi “uygular”. Takım üyesi, böyle bir durumda yaptığı işi sahiplenmez, sorumluluk almaktan, insiyatiften kaçınır ve bütün yükü proje yöneticisinin üzerine atar. Böyle projelerin bitişiyle ile birlikte de takımlar büyük ölçüde dağılır. Scrum ile, takım üyelerinin hepsi projenin sorumluluğunu alır, yapılacak olana birlikte karar verirler ve en önemlisi, yapılan işi sahiplenirler.

Scrum iyidir..

Samsung Galaxy S2 için Jelly Bean Güncellemesi mi Geliyor?

Ameleler,

Android Jelly Bean

Android Jelly Bean

Samsung Galaxy S2 kullanıcıları olarak, Ağustos ayından beri Samsung tarafından dolaylı/dolaysız yapılan açıklamaları takip ediyoruz. Yapılan açıklamalarda 2012 yılının son çeyreğinde (gavurların Q4 dediği) Galaxy S2 için Anrdoid Jelly Bean (4.1) güncellemesinin geleceği duyurulmuştu. Bazı kaynaklarda da bu güncellemenin Kasım ayı sonunda çıkacağı yazıyordu. Test için kullanılan 4.1.2 ROM’unun ortamlara düşmesi ile bu sürümün gerçekten çıkacağını bir nevi öğrenmiş olduk. Fakat, 2012 bitmesine rağmen hala bir güncelleme gelmedi.

Son haberlere göre Galaxy S2 için Jelly Bean 4.1 güncellemesi Ocak 2013 sonuna doğru gönderilecek. Büyük ihtimalde, önümüzdeki günlerde, güncellemelerin deneme tahtası Polonya için 4.1.2 güncellemesi gelecektir. Türkiye için Ocak sonunu beklemek gerekecek muhtemelen.

Kaynak: http://www.youmobile.org/blogs/entry/Samsung-GALAXY-S2-and-GALAXY-Note-Jelly-Bean-4-1-2-updates-coming-on-January-2013

Ankara JUG – Aralık 2012 Buluşması Ardından

Ameleler,

Geçen ay ilki düzenlenen Ankara JUG (Java Users Group) buluşmasının ardından, geçen Perşembe günü ikinci buluşma gerçekleşti. Bu buluşmaya da katılarak öncelikle kendi adıma bir başarıya imza attım – bir işin devamını getirebildim 🙂

Ankara JUG

Ankara Java Users Group

Bu ayki konu, Agile (Çevik) Yöntemler ve bu yöntemlerden son zamanlarda en popüler olanı Scrum idi. scrumturkey.com kurucusu Barış Bal’ın yaptığı sunumda Scrum nedir, nasıl uygulanmalıdır sorularına cevaplar bulduk. Katılımcıların Scrum’a olan ilgisi açıkçası beni şaşırttı, çünkü Türkiye koşullarında Scrum gibi geleneksel olmayan bir yöntemin uygulanmasını geçtim bilinip konuşulması bile yargılanıyor. Yüksek lisans yaptığım zamanlarda, geleneksel yöntemin ateşli savunucusu hocama karşı Agile yöntemleri savunurken ne kadar zorlandığımı hatırlıyorum. Aynı durum yazılım sektörünün büyük oyuncuları için de geçerli, sanırım 2 seneden az süreli plan yapıldığı zaman yapılan iş küçük görülüyor. Aldığım proje yönetimi eğitiminde de, dışarıdan hizmet alınan proje yöntecilerinin tavırlarında da aynı havayı sezdim sürekli.

Geleneksel yöntemler bir yere kadar iyi sonuç verdi, fakat bu 1980’lere kadardı! O yıllardan beri yazılım mühendisleri, süreçleri iyileştirmek adına Scrum adı verilen bu yeni yöntemi geliştiriyor ve iyileştiriyorlar. Ankara JUG sayesinde de bu yöntemi belki de ilk kez tanıyan insanlar oldu. Katılımcılardaki heves, belki de Ankara’dan başlayarak yazılım süreçlerinde bir “Scrum Baharı” yaşatabilir.

Etkinlik ile ilgili Ankara JUG blog yazıları:

http://ankarajug.blogspot.com/2012/12/ankara-jug-aralk-ay-etkinligi.html

http://ankarajug.blogspot.com/2012/12/aralk-etkinligi-geri-bildirim-kapmz.html

 

Ankara JUG Kasım 2012 Etkinliği Ardından

Ameleler,

Birkaç iyi niyetli Java programcısının girişimiyle kurulan Ankara Java Users Group (Ankara JUG), ilk açık etkinliğini 22 Kasım Perşembe günü Bilkent Cyberpark’ta gerçekleştirdi. Gidelim, görelim dedik ve katıldık.

Ankara JUG

Ankara Java Users Group

İlk başta, kısa bir Ankara JUG tanıtımı gerçekleşti. Türkiye için de bir ilk olan Ankara JUG, henüz Oracle tarafından resmi olarak tanınmasa da, bu konuda girişimlerin başladığını öğrendik. Yazılım sektörünün bu kadar geniş olduğu, Java kullanan geliştirici sayısının bu kadar fazla olduğu Ankara’da böyle bir girişimin olması hem sektör açısından hem de bu işle uğraşanların kariyer gelişimleri açısından çok faydalı olacaktır. Özellikle etkinliklerin her ay düzenli bir şekilde yapılması, sektörün bu girişime daha çok destek vermesi ile güçlü bir topluluk oluşacaktır.

Ankara JUG tanıtımından sonra, gecenin sponsoru Prime Teknoloji’nin meşhur ürünü PrimeFaces tanıtımını dinledik. Açıkçası, daha önce PrimeFaces’i internette bulmuş ve denemeye çalışmıştım, fakat arkasında bu kadar büyük bir topluluk olduğunu, dünya çapında bu kadar çok seveni olduğunu bilmiyordum. Türkiye’den Açık Kaynaklı bir ürünün çıkarak dünya çapında başarı sağlaması çok hoşuma gitti. Tanıtımı dinlerken, bir yandan da aklımdaki fikirleri PrimeFaces ile yapabilir miyim diye düşünmeye başladım 🙂

Etkinliğin sonunda T2 Yazılım’ın dağıttığı Scrum Poker kartlarından aldık. Keşke birkaç deste daha alsaymışım diye hayıflandım daha sonradan ama başlangıç için iyi bahane oldu. Yakın bir zamanda, proje planlaması yaparken bu kartları kullanarak ilk denememizi yapacağız.

Şimdilik bu kadar. Aşağıda etkinlik ile ilgili bağlantıları bulabilirsiniz.

https://www.facebook.com/media/set/?set=a.532468203447830.132601.524483007579683&type=3

http://ankarajug.blogspot.com/2012/11/ankara-jug-kasm-2012-etkinligi_23.html

http://ankarajug.blogspot.com/2012/11/geribildirim-kapmz.html

Windows’da Ağ Paylaşım Şifrelerinin Unutturulması

Ameleler,

terminalWindows ortamında, başka bir bilgisayardaki paylaşılmış bir dizine bağlanırken şifre kullandığımız olmuştur. Bazı durumlarda da, paylaşımdaki bir dizini “Ağ Sürücüsü” şeklinde bilgisayarımıza bağlayıp, yerel diskmiş gibi kullanmışızdır. Bazı durumlarda aynı bilgisayar üzerindeki farklı paylaşımlara bağlanmamız da gerekmiştir. Mesela, ortak kullanılan bir sunucu üzerinde Samba ile paylaşıma açılmış değişik dizinler olabilir (\\samba-server\music, \\samba-server\videos gibi). Bu paylaşımlar için de farklı kullanıcı bilgileri kullanmamız gerekebilir. Böyle bir durumda, mesela \\samba-server\music paylaşımına bağlandıktan sonra, \\samba-server\videos paylaşımına bağlanırken, kullanıcı adını girmemize rağmen paylaşım alanına bağlanamayabiliriz. Bunun sebebini bilmiyorum, ama çözümünü biliyorum.

Paylaşım erişimleri için kullandığımız şifrelerin hepsini unutmak için:

$> net use * /delete /yes

Bir sunucuya bağlanırken kullandığımız şifreleri unutmak için:

$> net use \\<samba-server> /delete /yes

Bir sunucu üzerindeki belirli bir paylaşım için kullandığımız şifreleri unutmak için:

$> net use \\<samba-server>\share /delete /yes

İşinize yarar umarım.

Kaynak:

http://r3dux.org/2009/07/how-to-force-windows-to-forget-a-network-share-password/

Samsung Galaxy S2 – Exchange Hizmetleri ve Pil Sorunu

Ameleler,

Daha önceki yazımda, Samsung Galaxy S2 için, ICS güncellemesinden sonra pil sorununu nasıl aştığımı anlatmıştım. O zaman bulduğum sorun, büyük ihtimalle güncelleme sırasında eski uygulamaların yeni işletim sistemine tam uymamasından kaynaklanıyordu. Bir süre o çözüm idare etse de, pil sorunu bir süre sonra yeniden ortaya çıktı. Özellikle gün içinde 3G bağlantısını açık bıraktığım zaman, akşam olmadan yeniden şarj etmeye ihtiyaç duyuyordum. Daha sonra, Android 4.0 ile gelen detaylı pil tüketimi ekranında, ekran ve Android sisteminden sonra en fazla gücü Exchange Hizmetleri’nin tükettiğini farkettim. Aslında ilk başta bu hizmetin çok fazla pil tüketmeyeceğini, sadece e-postalarımı kontrol ederken fazla zorlandığını düşündüm. Bir süre, e-postalarıma telefondan bakmadım, e-posta alma sıklığını da tamamen elle yapılacak (manuel) şekilde ayarladım. Fakat, Exchange Hizmetleri’nin güç harcama oranı değişmedi. Harcanan enerjinin %30-%35’lik kısmını bu hizmet yine tüketmeye devam etti. İnternette biraz araştırınca bu sorunun güncellemeden sonra yedeklenen e-posta ayarlarının geri yüklenmesinden, güncelleme sırasında e-posta ayarlarının aynen devam etmesinden vs. kaynaklandığını gördüm. Exchange üzerinden kullandığım e-posta hesabımı telefondan kaldırdım. Biraz da zorlamak için gün içinde cep telefonumdan internet kullanımımı arttırdım. 14 saat içinde pil sadece %40 azaldı. Aynı kullanım ile daha önce pil %70 azalıyordu.

İnternette bulduğum bazı yorumlarda Exchange hesabını kaldırıp yeniden kurunca da pil tüketiminin çok fazla artmadığını yazmışlar. Onu henüz denemedim, birkaç gün içinde deneyebilirsem onu da yazarım.

Denemesi bedava.

Windows’ta Sembolik Link Oluşturma

Sembolik Link

Linux, Unix ve türevleri ile ilgilenenler bilirler, bir dizini ya da dosyayı başka bir yerdeymiş gibi göstermek için kullanabildiğimiz “sembolik link” gibi güzide bir özelliği var. Bu özellik sayesinde kurduğumuz kütüphaneleri ortak bir yerde bırakıp uygulamalarımızın kullanmasını, ev dizinimizde hazırladığımız sayfaların web sunucusu üzerinde görüntülenmesini vb. sağlayabiliyoruz. Hazırladığımız uygulamalar bu sayede bir dosya/dizinin her zaman belirttiğimiz yerde olduğundan emin olarak çalışabiliyor. Tabi, bu durum Windows ortamında uygulama geliştirip bu uygulamayı Linux ortamda çalıştıran geliştiriciler için biraz sıkıntı olabiliyor. Çünkü, ilk bakışta Windows üzerinde böyle bir özellik bulunamıyor – tabi iyi aranmaz ise.

NTFS dosya sisteminin içinde, sembolik link özelliği mevcut. Çoğu kimsenin bilmediği bu özellik, “mklink” komutu ile kullanılıyor. Bir dosyaya hızlı bir şekilde sembolik link oluşturmak için şu komutu kullanabilirsiniz:

$>mklink <link_adı> <hedef_dosya>

Bu komutta, hiç parametre belirtmezseniz, bulunduğunuz dizin içinde <link_adı> ile belirttiğiniz ad ile, <hedef_dosya> ile belirtilen dosyayı gösteren bir link oluşturulacaktır. Bu linki bir dizine vermek için ise /d parametresini kullanmak gerekir:

$>mklink /d <link_adi> <hedef_dizin>

Şimdi, örnek olarak C:\amele dizini altında D:\yazilim dizinine ve bu dizin altındaki yzlm.txt dosyasına link oluşturalım.

$>mklink /d yaz D:\yazilim
$>mklink yzlm D:\yazilim\yzlm.txt

Bu komutlardan sonra, bulunduğumuz dizinde dir komutunu çalıştırırsak, aşağıdaki çıktıyı elde ederiz:

C:\amele>dir
Directory of C:\amele
01.01.1970 00:00 <DIR> .
01.01.1970 00:00 <DIR> ..
01.01.1970 00:00 <SYMLINKD> yaz [D:\yazilim]
01.01.1970 00:00 <SYMLINK> yzlm [D:\yazilim\yzlm.txt]

Gördüğünüz gibi, bu oluşturduğumuz linkler dosya veya dizin olarak değil, SYMLINK ve SYMLINKD olarak görünüyorlar. Silmek için normal dosya ve dizin silme komutlarını (del, rmdir) kullanabilirsiniz.

Unutmayın, buradaki komutların, benim gördüğüm kadarı ile Windows Explorer arayüzünde bir karşılığı yok, o yüzden komut satırından yapma mecburiyetindeyiz.

İyi linklemeler.

Kaynaklar:
[1] http://en.wikipedia.org/wiki/NTFS_symbolic_link
[2] http://technet.microsoft.com/en-us/library/cc753194(WS.10).aspx

VirtualBox, Linux ve Paylaşılan Dizinler

Bir çoğumuzun yeni işletim sistemlerini denemek, güvenli bir şekilde programları denemek için kullandığı VirtualBox sanallaştırma yazılımının, “Paylaşılan Dizinler” (Shared Folders) adında güzel bir özelliği var. Paylaşılan Dizinler özelliği sayesinde, ana işletim sistemimizdeki gerçek dizinleri sanal işletim sistemine bağlayabiliyoruz. Bu özellik gelişmiş seçeneklerde bulunduğu için, kullanmadan önce “Misafir Eklentileri” (Guest Additions) ni yüklemek gerekiyor.

Adım adım VirtualBox üzerine sanal işletim sistemi kurmayı bu yazıda anlatmayacağım. O yüzden, halihazırda kurulu bir Linux sanal sistemi olduğunu farzederek bu yazıyı yazıyorum. Windows veya Linux tabanlı olmayan diğer işletim sistemlerinde daha farklı ayarlar olduğu için bu yazdıklarım uygulanamayacaktır.

VirtualBox - Paylaşılan Dizinler

VirtualBox arayüzünde, sanal sistemin çalıştığı pencerenin sağ alt köşesinde, küçük bir dizin simgesi şeklinde, Paylaşılan Dizinler seçeneğini görebilirsiniz. Bu simgeye sağ tıklayıp özelliklerine girdiğinizde, paylaşmak istediğiniz dizinleri ve bu paylaşımların isimleri, bağlama özellikleri gibi değişik seçeneklere erişebilirsiniz. Bu ekranda, mesela Windows C:\ sürücüsünü, “Otomatik Bağla” ve “Kalıcı Yap” seçenekleri ile paylaşabiliriz. Bu paylaşılan dizinler, sanal Linux’un dosya sisteminde /media/ dizini altına bağlanacaktır.Buraya kadar her şey hoş, fakat sanal Linux sistemine normal bir kullanıcı ile giriş yapıp bu paylaşılan dizinlere erişmeye çalıştığınız zaman karşınıza dosya izinlerinin yeterli olmadığı ile ilgili bir uyarı gelecektir. Muhtemelen, komut satırından sudo ile bu dizinlere erişim sağlayabildiğiniz görüp bir süre bu yöntemi deneyeceksiniz. Daha sonra da sistem ayarlarından root erişmini açarak, tavsiye edilmeyen şekilde sisteme root kullanıcısı ile giriş yapacaksınız.

Yapmayın.

İşin kolayı var.

VirtualBox, dizinleri paylaşıp sanal sisteme tam erişim izinleri ile bağladığı zaman, bu dizinleri “vboxsf” kullanıcı grubu altında bağlar. Temel Linux bilgilerinizi tazelerseniz, Linux dosya sistemlerinde erişim kontrolü için kullanıcı / grup / herkes şeklinde üçlü bir yapılanma vardır. Kullanıcınızın ait olduğu gruba izin verildiği sürece dosya ve dizinlere erişebilirsiniz. O yüzden, değişik ve güvensiz erişim yöntemleri yerine, kullancınızı vboxsf grubuna eklemeniz yeterlidir. Bunu yapmak için aşağıdaki komutu kullanabilirsiniz:

$> usermod -a -G vboxsf <amele>

<amele> burada kullanıcı adımız, oraya kendi kullanıcı adınızı yazarak çalıştırın.

Haydi iyi sanallaştırmalar.

ext3 Dosya Sisteminde “Too Many Links” Hatası

Bildiğiniz gibi, ext4 çıkana kadar bir çok popüler Linux dağıtımında dosya sistemi olarak ext3 kullanılıyordu. Bu dosya sistemi, yaygınlığını ext2 dosya sistemi üzerine, geri uyumlu olarak geliştirilmesine borçlu. Tabi, bu geri uyumluluk bazı dezavantajlar da getiriyor.

Bir çok uygulama (özellikle web uygulamaları) dizini, müzik ve video arşivi gibi dosya ve dizinlerin çok olduğu bir dosya yapısı ile uğraştıysanız, “Too Many Links” hatası almış olmanız muhtemel. Özellikle, doğru tasarlanmamış web uygulamaları, yüklenen dosyaları sadece tek bir dizin altına kopyalıyorsa bu hatanın alınması kaçınılmaz olur. Benzer şekilde, müzik / video arşivini belirli bir hiyerarşiye koymadan tek bir dizin altına toplayanlarınız varsa (ki olmamasını temenni ederim), bu hatayı görmüş olabilirsiniz.

Peki, nedir bu hatanın sebebi?

İlk paragrafta dediğim gibi, ext3 dosya sistemi, ext2 ile uyumlu çalışabilmesi için bazı ext2 özelliklerini aynen devam ettirmek zorunda kaldı. Bunlardan biri de, bir dizin altında bulunabilecek dosya/dizinlerin sayısı. ext2 dosya sisteminde, bir dizin altında bulunacak “link” (dosya/dizin) sayısı, en fazla 32,000 olabilir. Bunlardan 2 tanesi, “.” ve “..” linkleri her dizin için olmak zorunda, o yüzden, bir dizin altında bulunabilecek dizin sayısı 31,998’i geçemez. ext3 dosya sistemi de bu özelliği devam ettirmek için aynı limitleri kullanmaktadır. Bu sayıyı arttırmak ancak uygun parametreleri değiştirerek Linux çekirdeğini (kernel) yeniden derleyerek yapılabilir.

Çok dosyam var, ne yapayım ben?

Eğer müzik arşiviniz için soruyorsanız, bence o diske format atın.

Ama, eğer web uygulamanızın aldığı / ürettiği dosyalar için soruyorsanız, orada birşeyler yapabilliriz. Öncelikle, sisteminize yüklenen dosyaları, orijinal isimleri ile değil, “hash” fonksiyonundan geçmiş halini kullanacağız. Örnek olarak, MD5 hash fonksiyonunu kullanacağız. Bildiğiniz gibi, MD5 fonksiyonu bize 32 karakterlik, 16’lık sayı tabanında bir sonuç verecektir. İşin sırrı, bu 16’lık tabanda elimize gelen 0-f arası 16 karakteri anahtar olarak kullanmak. Dosyaların kaydedildiği yerde bir seviye daha oluşturup, dosyanın MD5 sonucunun ilk karakterini bu dizin adına vereceğiz. Bundan sonra, dosya adının MD5 sonucu o karakterle başlayan dosyaları bu dizin altına koyacağız.

Yani, önce şu şekilde görünen dosya sistemi,

 

 

 

düzenlemeden sonra şu şekilde görünecek:

 

 

 

 

 

Bu sayede, bir dizin altında bulunan dosyaları 16 ayrı dizine, belli bir mantıkla dağıtılmış olacak. Uygulamada yapılacak küçük değişiklikler ile, dosyaları daha düzgün bir şekilde depolayabileceğiz. Bir dizin altında bulunan dosya sayısı da azaldığı için “Too Many Links” hatası almayacağız. Eğer dosya sayısı artarsa, bu dizinlerin altında aynı mantıkla bir seviye daha oluşturulabilir. Bu şekilde, teker teker seviyelendirerek 16 seviye oluşturabiliriz.

Şimdi size uygulamanızda biraz iş düşüyor. Kolay gelsin o halde.