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.

Reklamlar

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.

#PGDayTR’nin Ardından

2. Türkiye PostgreSQL konferansı, geçen sene olduğu gibi, bu sene de İstanbul’da Bahçeşehir Üniversitesi’nde yapıldı. Geçen sene, vaktimi nöbet kulelerinde harcadığım için katılamamıştım, Bu sene, biraz zorlamayla da

2. Türkiye PostgreSQL Konferansı

olsa 3+1 arkadaş bu sene katıldık. Biraz deniz, biraz İstanbul derken konferans zamanı gelmişti. İlk icraatımız, Foursquare üzerinden etkinliği oluşturmak ve check-in yapmak oldu. Daha sonra, #PGDayTR hashtag’i ile Twitter üzerinden
Birbirinden değerli insanların sunum yaptığı konferansta, iki kişi benim için özellikle etkiliydi. Birincisi, PostgreSQL Avrupa Başkanı Magnus Hagander, ikincisi de – affına sığınarak – “İmparator Penguen” olarak niteleyebileceğim Devrim Gündüz. yazmaya başladık. Twitter’da bu tag ile arayınca etkinlik sırasında atılan yazılara – çok olmasa da – ulaşabilirsiniz.

Magnus Hagander, konferansın ilk konuşmasını yaptı. Bu konuşmada, devrim niteliğinde bir sürüm olarak görülen 9.2 sürümü ile gelen özellikleri, süresi yettiğince anlattı. Yeni gelen performans iyileştirmeleri, “Yeşil Bilişim – Green Computing” için yapılan güç tüketimi ayarları, yeni veri yapıları gibi bir çok yeniliği paylaştı. Tabi, bunları şimdi buraya ayrıntılarını yazmayacağım, biraz araştırın ya da PostgreSQL 9.2’nin çıkmasını bekleyin.

Devrim Gündüz, aslında bıraksak tek başına bir konferans yapabilecek enerjideydi. İlk konuşmasında bizim uyguladığımız RedHat + PostgreSQL Cluster çözümünü anlatması bir garip yaptı beni. Onca kişinin önünde, kendi uyguladığımız bir çözümün anlatılması ve önerilmesi, güzel bir duyguymuş. Belki de, artık bu çözümü bizim anlatma zamanımız geldi, di mi Devrim?

İkinci konuşmada Oracle’a giydirme seansı, stand-up şov gibi oldu, çok da eğlenceliydi. Keşke biraz daha giydirebilseydik.

Yazacak daha çok şey bulunabilir, ama gerek yok. Seneye siz de gelin, siz de görün.

Adres ne mi? İşte: http://pgday.postgresql.org.tr

Peki Twitter yok mu? O da var: https://twitter.com/#!/PGDayTR

Eski bir Hitit atasözünün dediği gibi, “May the source be with you!”

Samsung Galaxy S2 – ICS Güncellemesi ve Pil Sorunu

Selam ameleler,

Aranızda Galaxy S2 kullanan, rootlamak istemediği için de ICS güncellemesinin Kies ile gelmesini bekleyenleriniz vardır. Ben de onlardandım, ve en sonunda Kies ile ICS güncellemesi geldi. Güncelleme, açıklanmasından yaklaşık 50 gün sonra Türkiye’ye geldi ama, olsun, geldi mi geldi. Ben de, deli gibi beklediğim bu güncellemeyi çıkar çıkmaz telefonuma yükledim.

..ve, ilk başta pişman oldum.

Samsung Galaxy S2 ICS

Çünkü, güncellemeyi yükledikten sonra telefon, eski model Mercedes’lerin benzin tükettiği gibi şarj tüketmeye başladı. Sabah şarjdan çıkardığım telefonu öğleden sonra yeniden şarj etmek durumunda kaldım. Böyle olacaksa ben neden taş gibi çalışan 2.3.6’dan vazgeçtim?

O kadar uygulama yüklüyken, o kadar ayar varken böyle büyük bir güncelleme yapıp herşeyin düzgün olmasını beklemek biraz fazla iyimserlik olur. Böyle düşündüm ve çözüm olarak telefonu “fabrika ayarlarına sıfırlama”, ya da gavurca tanımı ile “factory reset” işlemini buldum. Şöyle ki, telefona güncellemeyi yüklemeden önce yedeğini aldım, güncellemeyi yaptım ve güncellemeden sonra telefonu fabrika ayarlarına sıfırlayıp kullandığım uygulamaları kendim elle yükledim. Sonuç gayet tatminkar oldu.

Sayılarla konuşmak gerekirse, test ortamı olarak kendi kullanımımı ele alacağım. Sabah saat 8’de şarjdan çıkardığım telefonun data bağlantısı ve bluetooth bağlantısı ortalama 12 saat boyunca açık bırakıldı. Oyun oynanmadan, sadece arada Mail, Facebook, Twitter, Foursquare şeklinde listeleyebileceğim günlük uygulamalar kullanıldı. Arama – konuşma minimumdaydı, gün içinde yarım saati geçen konuşma süresi olmadı. Bu koşullarda, Android 2.3.6 yüklü iken yaklaşık 12 saatin sonunda şarj durumu ortalama %40-%50 seviyesi arasında oluyordu. Güncellemeyi yaptıktan sonra en minimum kullanımda aynı sürede şarj durumu %20 seviyesinde idi. Güncelleme yapıldıktan ve fabrika ayarlarına sıfırlandıktan sonra aynı kullanımda şarj durumu %60-%70 seviyelerine yükseldi.

Kurulu uygulamaların çok etkisi olacağını biliyorum. Yine de, fabrika ayarlarına sıfırladıktan sonra pil performansının yükselmesi en azından benim sorunumu çözdü.

İyi güncellemeler..

Not: Şarjı çok azaltan başka bir sorunun çözümü için: Samsung Galaxy S2 – Exchange Hizmetleri ve Pil Sorunu

Hello World!

İlk “Hello World!” çıktısını ekranda görmek için, arkadaşımın bir şekilde bulup benimle paylaştığı Q-BASIC kitabındaki yönergeleri, o zamanlar biraz korktuğum bir komut satırı arayüzünden girmiş ve “debug” komutunu vermiştim. Daha sonrasında, üniversite eğitiminin de etkisiyle değişik dilleri kullandım, en sonunda iş hayatına atılarak işlerimi genelde Java ile yapmaya başladım.

Bu sektöre girdikten sonra, yapılan işlerin çoğunluğunun amelelikten farksız olduğunu görmüş olmak beni biraz üzmüş olsa da, kaçış yok, bu işin içindeyiz artık. Mühendisliğin getirdiği yetenekleri, bu ameleliklerden kurtulmak için kullanmak gerekiyor. O yüzden, karşılaştığım ameleliklerden çıkış yöntemlerimi, bulduğum güzel teknikleri, hayatı kolaylaştıracak ipuçlarını buradan paylaşmaya çalışacağım. Umarım faydalı olur yazdıklarım.