Sınav

Televizyonda gözüme çarptı bir kaç sahneyi izleme şansını buldum. Film çekim olarak güzele benziyor. Konu tanıdık bir konu. Tamamını izlemek lazım. Beni asıl etkileyen filmin müzikleri oldu. Pek popüler müzik dinleyen biri olmasam da bu tarz film müzikleri hoşuma gidiyor.

İlk olarak Ogün Sanlısoy'dan Koşu Başladı
Sonra Özlem Tekin'den A)Şık
Nil Karaibrahimgil'den Yaş 18
Manga ve Göksel'den Dursun Zaman

Evet dikkatimi çeken ve hoşuma giden parçalar bunlar :D

Aklıma gelmişken yeni takıldığım dizi Kavak Yelleri. Az izlediğim televizyonda, rastlarsam izliyorum. Ne de olsa müziklerini Pinhani yapmış :D

Dosyalarınızı Yedekleyin

Her zaman söylenen önemli dosyalarımızı yedeklememiz gerektiğidir. Yedekleme işi bazen günlerinizi alabilen bir eylem haline gelebilmektedir. Bu işinizi kolaylaştırmak için hazır betikler (aşağıda bu konuyla ilgili bağlantıları vereceğim) veya programlar kullanmanız gerekir. Windows XP içerisinde Yedekleme yardımcısı diye bir araç var. Onu kullanarak yedeklemeler yapabilirsiniz. Windows kullanmak kolay olduğu için (:P) anlatmıyorum.

Linux içerisinde yedekleme yapmak için ise az biraz araştırmayla rahatça öğrenebilmeniz veya hazır betikler bulmanız mümkündür.

İlk olarak SBackup adı verilen programı söyleyeyim. İşinizi bayağı kolaylaştıran bir arayüzü var. Debian ve Ubuntu içerisinde Synaptic aracılığıyla (veya sudo apt-get install sbackup komutuyla) kurabiliyorsunuz. Kurduktan sonra Sistem->Yönetim->Simple Backup Config aracılığıyla arayüzünü açabiliyorsunuz. Arayüzü kullanmak oldukça kolay. Ayrıca Sistem->Yönetim->Simple Backup Restore ile önceden yaptığınız yedeklemeleri geri yükleyebiliyorsunuz.(Resimlerle aşama aşama anlatım - İngilizce)

Diğer bir yöntem tar ile yedeklemedir. Belli başlı bazı dizinleri yedeklemek için, teype yedekleme yapmak için kullanabilirsiniz. Dizin yedeklemek için çok basit bir şekilde sudo tar cvpzf backup.tgz emre/ şeklinde bir komut kullanabilirsiniz (bu komut emre dizini ve altındaki tüm dosyaları backup.tgz adlı bir dosyada yedekler).

Tüm sistemi yedeklemek için sırasıyla
su
cd /
tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys /

komutlarını kullanabilirsiniz. Geri almak için (almadan önce ne yaptığınızdan emin olmalısınız) tar xvpfz backup.tgz -C / komutunu kullanabilirsiniz.

Tekrar uyarıyorum yukarıdaki komut (geri alma komutu) sisteminizde var olan tüm dosyaların üzerine yazacaktır. Oluşacak hatalardan beni sorumlu tutmayın :)

Daha iyi sıkıştırma için BZip2 sıkıştırması kullanabilirsiniz. Bunun için yukarıdaki komutlarda sadece dosya adlarını değiştirmeniz(backup.tgz yerine backup.tar.bz2) ve komutlardaki z'leri j'ye (tar cvpzf yerine tar cvpjf ve tar xvpzf yerine tar xvpjf) çevirmeniz yetmektedir.


Yedeklemeler ile ilgili ayrıntılı bilgiye her zaman google'da uygun aramalarla ulaşabilirsiniz. (Örneğin "How to backup evolution" gibi)

Bağlantılar:
Ubuntu:Feisty Guide Backup Ubuntu System
http://ubuntuguide.org/wiki/Ubuntu:Feisty#Backup_Ubuntu_System
Linux Sistem Yöneticisinin Kılavuzu-Yedek Alma
Debian Linux Backup (Bayağı ayrıntılı)
Howto: Backup and restore your system!

Wikiversity

Özgür öğrenme Topluluğu: http://www.wikiversity.org/

Öğrenmek günümüzde gittikçe kolaylaşan bir eylem haline geldi. XIX. (19) yy ve öncesine baktığımızda bu kadar çok üniversite, bu kadar çok öğretim kurumuyla karşılaşmak mümkün değildi. Günümüzde artık adım başı üniversite, yüksek okul, vb. yapılanmalarla karşılaşabiliyorsunuz. Ayrıca internet adı verilen ve her türlü bilgiye (doğru olsun yanlış olsun) rahatlıkla erişebildiğiniz bir "sanal alem"e sahibiz.

Ancak günümüzde bilimsel gelişme ve teknolojik gelişme artık bir kaç ülkenin tekeline geçmiş durumdadır. Yaptığınız bilimsel çalışmaları dünyadaki diğer insanlara anlatabilmeniz gerekmektedir. Bunu yapabilmek için de sayıları binleri aşan bilimsel dergilerde yayınlatabilmeniz gerekmektedir. Bu da gerçekten zor bir iştir (kendimden biliyorum). Ben bu konuyu geçtim, diğer insanların yaptığı bilimsel çalışmaları, deneyleri tekrarlamak istediğimde başaramıyorum. Halbuki bildiğim kadarıyla bilimsel çalışmanın temelinde deneylerin tekrarlanabilirliği yatar :S

Ya aslında ben bu konu hakkında yazmayacaktım, yazmış oldum silmiyorum.

Öğrenmenin yüksek maliyetler gerektiren bir eylem olduğunu unutmamak gerekiyor. Evet, etrafımızda yararlanabileceğimiz kaynak sayısı arttı ama bu kaynakları kullanabilen insan sayısı o kadar da artmadı.

Yukarıdaki siteyi böyle konulara meraklı olanlar için veriyorum. Wikipedia'nın kardeş projesi olan bu projenin şu an için en kötü yanı henüz Türkçe desteği olmaması. İngilizcenize güveniyorsanız deneyebilirsiniz. Bu özgür üniversitedeki ilgilendiğiniz alandaki tüm dersleri bitirdiğiniz zaman bir şeyler öğrenmiş olursunuz sanırım :S

İilgimi çeken bir kaç alan:

http://en.wikiversity.org/wiki/Filmmaking
http://en.wikiversity.org/wiki/Portal:Computer_Science

Not: İnsan merakı sayesinde bu kadar bilimsel gelişmeyi, bu kadar teknolojik gelişmeyi üretir bir hale gelmiştir. Bu meraka sahip olduğu sürece "kendi sonunu" kendisi getirecektir :D

Eymir Gölü - Ankara

Geçen hafta sonu bir fırsatını bulup Eymir gölüne gidebildik sonunda. Bu çok güzel bir alanı ODTÜ sahiplenmiş, yalnız kendi mezunlarından üye kartı sahiplerine yar eder bir hale getirmiş. Yani Eymir' e girebilmek için yalnız arabanız olması yeterli değil (toplu taşımacılık diye birşey göremedim ben), üstüne ODTÜ'lü olmanız da yeterli değil, buna ek olarak üyelik kartına sahip olmanız, bir de 4 YTL niz olması gerekli. Üyelik kartınız yoksa sağlam bir ikna kabiliyeti de aynı işi görebilir.

Bizde bir şekilde girdik içeri. Burada uyguladığımız kural Ankara'dan neler öğrendim başlıklı yazımdaki ilk kural. İyiki de girmişiz. İlk görüşte bozkırdan bozma olarak düşündüğüm bu şehrin güzel yanlarının da olduğunu görmek sevindirdi beni. Bu da aynı yazımda geçen ikinci kuralın kanıtı. Farklı bakmak gerek güzellikleri görmek için.

Su, ağaçlar, kuşlar, ördekler, tavşanlar gibi doğal yaşam üyeleri ile birlikte minderinize yayılıp çay, kahve, gözlemeleri mideye indirebileceğiniz güzel ve samimi bir ortam burası. Etraftaki tavşanları kovalayabilir, yakalarsanız oynayabilirsiniz burada; ben yakalayamadım, yakalanmışı ile oynadık :)
ODTÜ arazisi içerisinde bulunan Eymir gölüne arabayla gitmek gerekiyor. Bisikletiniz varsa birlikte götürün derim.

İşte birkaç fotoğraf Eymir'den:



IMG dosyaları bağlamak ("img mount")

Daha önce iso dosyalarının nasıl bağlanacağını yazmıştım. Benzer şekilde img dosyalarını da bağlayabiliyorsunuz. Bunun için kullanılan komut:
mount -o loop dosya.img /mnt/image
Eğer bin dosyasını bağlamak istiyorsanız yapmanız gereken bchunk programı yardımıyla bin dosyasını iso'ya çevirip iso olarak bağlamanızdır. Ubuntu'da bcchunk programını sudo apt-get install bchunk ile rahatlıkla kurabilirsiniz.

Not:Sid Meier's Pirates güzel bir oyun :D Linux sürümü var mı acaba :S

Not 2: cue dosyasına sahip değilseniz bchunk işe yaramıyor. O yüzden aşağıdaki şekilde bir kabuk programcığını işinizi görecektir:
#!/bin/bash
echo "FILE ""$1.bin"" BINARY" >> $1.cue
echo " TRACK 01 MODE1/2352" >> $1.cue
echo " INDEX 01 00:00:00" >> $1.cue
bchunk $1.bin $1.cue $1_
rm $1.cue
Yukarıdaki kodu /usr/local/bin/bchunkcue dosyasına yazıp ( sudo pico /usr/local/bin/bchunkcue yazdıktan sonra içeriği yazın) dosyaya çalıştırma özelliği (sudo chmod +x /usr/local/bin/bchunkcue) verip bchunkcue dosya.bin dosya komutuyla cue dosyası olmadan bin dosyalarını çevirebilirsiniz.

Ajax - 4

Ubuntu işletim sistemi üzerinde, GWT ile yeni bir projeye başlamak için gerçekleştirilmesi gereken adımların komutlarını şu şekilde not aldım. GWT linux versiyonunu indirdikten sonra - ben gwt-linux-1.3.3 ü indirdim - sırasıyla bu komutları uygularsanır yeni bir GWT projesine başlamış olacaksınız. Burada projenin ismi DashboardPrj olarak verilmiş:

--GWT yi PATH olarak tanıtalım
export PATH=$PATH:/media/sda7/mehmetkis/programs/gwt-linux-1.3.3

--Projeyi oluşturacağımız klasöre gidelim. Ben Eclipse ile kullanmak istediğimden workspace klasörü altında oluşturdum.
cd /media/sda7/mehmetkis/workspace/

--Projeyi oluşturma. - eclipse parametresi Eclipse projesi olarak oluşturmasını sağlıyor.
projectCreator -eclipse DashboardPrj -out DashboardDir

--Uygulamayı oluşturma
applicationCreator -eclipse DashboardPrj -out DashboardDir org.gwtbook.client.Dashboard

--Uluslararasılık (internationalization) özelliği kazandırma. Bu özellik, kullanıcı arayüzlerini farklı dillerde sunabilmenizi kolaylaştırıyor
i18nCreator -eclipse DashboardPrj -out DashboardDir org.gwtbook.client.DashboardConstants

--Uluslararasılık (internationalization) özelliğini gerçekleştirme
DashboardConstants-i18n/DashboardConstants-i18n


GWT kullanımını öğrenmek zorunda değiliz aslında. Ama gelişmiş projeler yaratırken, Javascript kodlaması ile uğraşmak yerine, doğrudan, bildiğimiz Java kodlamasını yaparak AJAX yöntemini uygulamış oluyoruz. Yazdığımız Java uygulaması, GWT ile derleme sonucunda, javascipt ve xml dosyalarına dönüşüyor.
Java ile programlarken tek kısıt GWT nin henüz java1.4 üstü sürümleri desteklemiyor olması.

Ajax - 3

GWT gibi bir araç kullanmadan, doğrudan Javascript kodlaması yapabilir veya hazır kütüphanelerden yararlanabilirsiniz.

Javascript kodlama için en çok önerilen metin düzenleyicilerden biri Aptana. Eclipse eklentisi olarak kurdum, başarılı. Yanında prototype gibi yaygın kullanılan birçok javascript kütüphanesi ile birlikte geliyor. aptana ile ilgili birkaç bağlantı şöyle:

http://www.aptana.com/documentation.php
http://www.aptana.tv/Publish Post
http://www.aptana.com/docs/index.php/Main_Page#Aptana_Tutorials

Hazır kodlara ulaşabileceğiniz bir adres ise şöyle:
http://www.dhtmlgoodies.com

Bu adreste doğrudan alıp sayfalarınızda kullanabileceğiniz dhtml ve ajax bileşenleri bulabilirsiniz.

Ajax - 2

Ajax ile geliştirme yapılırken kullanılabilecek bir çok aracın farklı yaklaşımlar önerdiğini gördüm. Kimi sunucu tarafına yüklenirken, kimi istemci de çalıştırıyor kodları. Bir diğer farklılık da programlama yöneteminde. AJAX 'ın temel bileşenleri olan Javascript ve XML üzerinde doğrudan çalışabileceğiniz gibi, GWT gibi araçlar kullanarak, örneğin sadece Java programlama diliyle AJAX uygulamaları geliştirebilirsiniz.

Ajax yöntemini PHP ile kullanabiliyorsunuz[1]. Ben ise java ile kullanmayı tercih ettim. Bunun için de araçlar buldum ama Emre'nin daha önce bahsettiği Google Web Toolkit(GWT) i seçtim. GWT ile ilgili iyi bir e-kitap buldum: GWT in Action EASY AJAX WITH THE GOOGLE WEB TOOLKIT


--alıntı

AJAX Programlama Şekilleri[2]:

Mevcut tool ve geliştirme ortamları kullanılarak tercih edilebilecek 3 farklı programlama yöntemi ortaya çıkıyor. Bunlar Java, Javascript ve XML programlama olarak belirtilebilir.

Javascript Programlama: Burada en büyük sıkıntı diğer populer dillerde olduğu gibi gelişmiş editor, compiler ve debuggerların bulunmaması. Bazı çalışmalar var, benim en çok dikkatimi çekenler, bir open source proje olan Aptana ile IBM'in alpha work çalışması olan ATF. Her ikisi de Eclipse üzerinde geliştirilmiş. Ayrıca EchoStudio gibi projeye özel ücretli uygulama geliştirme ortamlarına da rastlamak mümkün.

Aptana: http://www.aptana.com/
ATF: http://www.eclipse.org/atf/
EchoStudio: http://www.nextapp.com/platform/echo2/echostudio/

XML Programlama: Burada editor, compiler ve debugger sıkıntısı daha büyük olmakla birlikte daha az efor sarfedip daha az programlama bilgisi ile daha kolay web uygulamaları oluşturma hedeflenmiş.

Java Programlama: Bana en mantıklı gelen bu yöntem ile mevcut java uygulama geliştirme ortamları kullanılabilmekte, javascript ve XML ile yapılan geliştirmedeki handikapları ortadan kaldırmaktadır. Ayrıca javascript dünyasında meydana gelebilecek değişikliklerin entegrasyonunda bir interface oluşmasını sağlamıştır.

Bu yöntemin iki farklı uygulamasını görmek mümkün:

  • Bir tanesi Google'ın yaptığı gibi java ile geliştirilen AJAX uygulamasını kendi compiler'ı ile javascript ve HTML'e dönüştürülmesi. Bu yöntemin avantajı, uygulamanın server bağımsız olmasını sağlamasıdır, java ile geliştirdiğiniz uygulamayı çalıştırmak için bir java web server'ına ihtiyaç duymazsanız.
  • Diğeri ise java ile geliştirilen uygulama bir java web server üzerinde çalıştırılması esasına dayanır. Server'e istekler geldikçe server tarafında javascript ve HTML sayfalar üretilir ve client'a gönderilir.
--alıntı sonu


Kaynaklar:
[1] http://www.nothingrows.net/files/ajax-ve-php-ile-komple-proje-yonetimi-bolum-1/
[2] http://www.yesiltas.net/sezer/2006/10/ajax.html

Ankara'dan neler öğrendim

-Yer, kurum ve zaman ne olursa olsun, her işin bir oluru olduğunu öğrendim; önemli olan ikna edebilmek.
-İnsanın, etrafını ve yaşadığı koşulları güzelleştirenin yine kendisi olduğunu öğrendim.
-Eski dostlukları devam ettirmenin ne kadar önemli olduğunu öğrendim.
-Çalışmak için değil yaşamak için şehir seçmenin daha doğru olduğunu öğrendim.
-Bir yerlerde, bir şeyler olmak istiyorsan, farklı yerlerde (sağlam) tanıdıkların olması gerektiğini öğrendim.
-Yaşıyor olmanın, şehit asteğmenlerden tek farkımız olduğunu öğrendim.

Bir Temel Hak Olarak İnternet

Geçmişten günümüze işçiyle işveren arasında pek çok farklı sebepten(ücret politikaları, çalışma şartları, vb.) anlaşmazlıklar çıkmıştır, çıkmaktadır ilerde de çıkacaktır. Günümüzdeyse bu sebeplere yeni bir tanesi katılmak üzere: İnternet.

Şöyle düşünelim, BT sektöründe çalışıyorsunuz. Bütün gün bilgisayar başındasınız. İşiniz gereği zaten kullanmakta olduğunuz interneti aynı zamanda alışveriş, kişisel gelişim, günlük hayatı takip, bankacılık işlemleri için de kullanıyorsunuz. Ve birden işvereniniz güvenlik gerekçesiyle şirketin bütün internet çıkışını kapatıyor. Ya da sayılı bir kaç siteye erişim imkanı sağlıyor. N'aparsınız?

Evet yukardaki ikinci durum benim başıma geldi. Çalışmakta olduğum banka; şube çalışanları, BT personeli ve genel merkezde çalışanlar da dahil olmak üzere bütün çalışanlarının internetini resmen kırptı. Önce bir güvenlik açığı ve bunun araştırması sebebiyle internet tamamiyle bir hafta kesildi. Bir hafta sonrasında ise geri gelen şeye internet demek çok zor.

Kendisi hariç diğer bankaların internet şubelerine, Hürriyet ve Milliyet hariç diğer gazete ve haber sitelerine, fazlamesai'ye, ek$i sözlük'e, alışveriş sitelerine, blog sayfalarına yani neredeyse hemen her siteye erişimi engellemiş durumda. Yani, kendisini toplumun itici ve yenilikçi gücü olarak gören bankalar ve bunları yönetenler interneti hala bir lüks, olmasa da olur bir araç olarak görüyor.

Şimdi gelelim sorulara: Bir işveren, şirketin güvenlik politiklarına uyacağını işe girerken zaten taahüt etmiş çalışanının internetini hangi gerekçeyle ne kadar sansürleyebilir?

Bu taahütüne uymayan çalışanlar olursa bunun faturası sadece o kişiye mi bütün çalışanlara mı kesilmelidir?

Sektör farketmeksizin mesaisini bilgisayar başında geçiren bir çalışan için özgür bir internet erişimi, aynen sigorta veya sendika gibi temel bir hak mıdır?

Güncelleme: Çalışanlardan gelen yoğun şikayetler sonucu filtreleme biraz daha genişletildi neyseki. Diğer banka internet şubelerine, gazete ve haber sitelerine, IT sitelerine, google haricindeki arama motorlarına artık erişilebiliyor. Beklentim bu genişlemenin süreceği yönünde.

Neden herkes GNU/Linux kullanmalıdır?

Bugün benim için internette dolaşma günü oldu resmen. İlginç yazılarla karşılaştım. Hemen bir tanesini size "Türkçeleştirmek" (çeviriyi aynen yapmıyorum kendi cümlelerimi yazmaya çalışıyorum, hatam varsa affola :) )istiyorum.

Bu yazıda neden GNU/Linux kullanmanız gerektiğine dair 5 neden sunuluyor. Ben de bu nedenleri tek tek yazacağım.
  1. Eğlence: Windows XP uzun zamandır ortalıkta ve çok az değişti. Yeni Vista ise pahalı ve çoğu donanımda çalışamıyor. GNU/Linux bir kaç sene önce Windows XP'yi yakaladı ve çoktan geçti, Vista ile yarışmaya ise zaten çok önceden başlamıştı (3D Masaüstü, saydam pencereler, güvenlik, vb.). Temel olarak düşünürseniz yeni bir işletim sistemi ve uygulamalar öğrenmek başlı başına eğlencelidir.
  2. Özgürlük: Kullanıcı dostu bir dağıtım indirip bir CD'ye çekip kullanabilirsiniz. Bunu özgür bir şekilde yapabilirsiniz. Maddi olarak bakarsak bile bu size sadece boş bir CD parasına mal olacaktır. Hiç kimse sizi bu CD'yi kopyalayıp arkadaşlarınıza dağıttığınız veya çok sayıda bilgisayara kurduğunuz için durdurmayacaktır, hatta destekleyecektir.
  3. Topluluk: Geleneksel olarak işletim sistemleri ve yazılımlar kullanıcı rehberi ve yardım masası desteği ile gelir. GNU/Linux geniş bir kullanıcı ve geliştirici topluluğu ile gelir, böylece canınızı sıkan telefon görüşmeleri veya eksik belgeler olmaz. Elbette GNU/Linux ile birlikte uygulamaların kullanım rehberleri dğaıtılmakta ama takıldığınız bir şeyi internet üzerinde IRC veya forumlarda sorup öğrenme şansınız daha yüksek ;)
  4. Sorumluluk: Sahipli yazılım aldığınızda yazılımınız belli derecede (kaçak olarak kullanmıyorsanız :D ) garantili olarak gelir. Ama GNU/Linux dağıtımları açıkça herşeyden sorumlu olduğunuzu belirtirler. Yaptığınız her hata, her değişiklik, her deneme sizin sorumluluğunuzdadır. Bu nedenle bir şey yapmadan önce yedeklemek, vb. eylemleri gerçekleştirmeniz yine sizin sorumluluğunuzda olacaktır. Özetle GNU/Linux yetişkinler içindir.(Bkz: 5. neden)
  5. Güvenilirlik: GNU/Linux dağıtımları yeterince güvenilirdir. Siz deneme sürümü veya yeni yazılmış bir uygulama kullanmıyorsanız genellikle sisteminiz kolay kolay çökmez. Çökmesi için bayağı uğraşmanız gerekmektedir. Çökse bile bir parçası çöker, tüm sistem çökmez. (Eğer benim gibi unstable (=istikrarsız) sürüm manyağı değilseniz sisteminiz istikrarlı ve güvenilir bir şekilde hayatını sürdürecektir). Windows sistemlerle karşılaştırıldığı zaman virüs ve solucanlara karşı "doğuştan" bağışıklığı olduğunu söylemeye gerek yok sanırım :)
Buraya kadar 5 nedeni yazdım. Şimdi gelelim GNU/Linux kullanmanız için 10 öneriye:
  1. Yeni kullanıcılar LiveCD (Yaşayan CD) kullanarak ısınma turları yapmalıdırlar.
  2. Yaşayan CD'leri kullanarak Windows sisteminizi bile kurtarabilirsiniz.
  3. Çoğu yaşayan CD dilediğinizde kullanmak üzere masaüstüne bir "Kur (Install)" simgesi koyar.
  4. Kurulum yapmadan önce mutlaka verilerinizi yedekleyin. Hatta belli aralıklarla bilgisayarınızdaki önemli verileri yedekleyin.
  5. Binlerce dağıtım arasından size en uygununu seçmeyi unutmayın. Başlangıç için Ubuntu, SUSE, Mandriva, Fedora veya Pardus (Ulusal dağıtım) deneyebilirsiniz.
  6. Özgür yazılım geliştiricileri açık biçimleri (.xml, .jpg, .png, .odt, .html, .pdf) tercih ederler. Siz de kapalı biçimlerden (.xls, .doc, .wav,) ziyade bunları tercih etmeye çalışın.
  7. GNU/Linux kullanırken sistem hakkında araştırma yaparak dizinleri ve anlamlarını (Türkçe kaynak) öğrenmeye çalışın. (/ ne demektir, /home/ nedir, vb.)
  8. Çok sayıda var olan özgür ve açık yazılımlar Windows karşılıklarına göre daha başarılı sonuçlar üretebilmektedir.
  9. Wine kullanmayı öğrenin. Oyunları oynamak istiyorsanız Cedega'dan yararlanabilirsiniz.
  10. GNU/Linux ağ için vardır. Yeni başlayanların bile rahat bir şekilde ağ bağlantısı kurmasını sağlar.
Not: Yukarıdaki nedenleri ve önerileri arttırabilirsiniz. Her türlü öneriye açığım.

Yazıyı sonlandırırken son bir bağlantı vermek istiyorum. Bu bağlantıda GNU/Linux "podcast"leri bulabilirsiniz. İşinize yarayabileceğine inanıyorum. (Türkiye'de daha hızlı internet lazım)

Açık Kaynak Bağlantıları

Açık kaynak yazılımlarının yasal ve ekonomik gelişmeleriyle ilgili yazılar içeren bir günlük(En son 2005'te yazı yazılmış): http://www.oslawblog.com/

Açık kaynak yasa danışmanlığı yapan bir avukatın sitesi: http://www.opensourcelaw.biz/

Software Freedom (Yazılım Özgürlüğü) Yasa Merkezi: http://www.softwarefreedom.org/

Özgür yazılım magazini: http://www.freesoftwaremagazine.com

Java 6 Yenilikleri

Uzun bir aradan sonra teknik bir konuda yazmaya karar verdim. Yazacağım bu yazıda Java 6 (Kod adı Mustang :) ) ile birlikte gelen yeniliklerden kısaca bahsetmeyi düşünüyorum. Yazı kendi cümlelerimden oluşacağı gibi biraz da çeviri olacaktır.

Öncelikle başlıklar halinde Java 6 ile birlikte gelen yeni özellikleri görelim(Parantez içerisindeki JSR ifadeleri "Java Specification Request" anlamına geliyor ve ilgili özelliğin tanımlandığı belirtim dosya numarasını gösteriyor):
Genel olarak başlıkları gördükten sonra kısaca ne yenilikler getirildiğinden bahsedelim.

Web Servisleri:Web servis istemcileri geliştirmek için kullanımı kolay bir uygulama geliştirme arayüzü sunulmaktadır. (Bkz)
Betik Kullanımı:Java kodunuz içerisinde betik kodu kullanıp ikisini bir arada kullanabiliyorsunuz (Bkz). Bir çok betik dilini ekleyerek genişletebiliyorsunuz (Bkz). Bu bayağı tartışılan bir konuydu. Çoğu insan çok kolay işleri bir betik dili ile yaparak Java'ya eklemeyi önemli olarak görüyor.
JDBC 4.0: Güncel JDBC uygulama geliştirme arayüzü bu sürümle birlikte dağıtılıyor (Bkz). Daha önce bu günlükte bahsettiğim Java DB birlikte dağıtılarak gömülü veritabanı kullanımı destekleniyor (Bkz).
Yeni Masaüstü Özellikleri: Swingworker, JTable sıralama, GroupLayout ve daha fazla yeni özellik bu sürümde eklenmiştir (Bkz).
İzleme ve Yönetim: Tüm izleme ve yönetim araçları (Bkz) gereksinim durumunda eklenecek hale getirildi. Ve yeni bir araç olan jhat eklendi.
Derleyici Erişimi: Program içerisinden javac derleyicisini kontrol edebiliyorsunuz.
Eklenebilir ("pluggable") açıklayıcı bilgiler ("annotation"):Kendi açıklayıcı bilgilerinizi tanımlayarak uygulamanız içerisinde kullanıp işleyebiliyorsunuz.
Masaüstü Konuşlandırma: Swing artık daha güzel görünüp, daha hızlı çalışıyor. Çalışma zamanı ve uygulama kurulumu yenilendi.
Güvenlik: PKI, Java GSS, Kerberos ve LDAP gibi servislerle bütünleştirme desteği geldi.
Başarım ve Kalite: İstemci ve sunucuda iki basamağa kadar başarım artışı sağlandı.

Yukarıdaki özellikler genel olarak Java 6 ile gelen yenilikleri içeriyor. Özelde ne yenilikler var, onları da kod örnekleriyle bir günlük yazısından faydalanarak Türkçeleştiriyorum.

I/O'daki değişiklikler

Şifreleri ekranda göstermeden okuma: Java SE 6 ile terminalden ekranda görünmeden (özellikle şifre okumak için çok iyi) girdi alabilme özelliği sağlanmış durumda. Bunu java.io.Console ile yapabiliyorsunuz:
import java.io.Console;
...
char[] password = System.console().readPassword("password: ");
// sifreyi kullan
...
// sifreyi temizle
java.util.Arrays.fill(password, '\0');
Belirtilmesi gereken bir kaç özellik:
  • System.console() standart giriş veya standart çıkış terminal değilse null döndürür.
  • readPassword() bir dizi döndürür, böylece yukarıda gösterildiği şekilde null haline getirebilirsiniz.
  • readPassword() terminalin karakter kümesini kullanır. Bu Charset.defaultCharset() olmayabilir.
Kritik mesaj kutusu gösterimi: Windows'ta bir hata oluştuğunda ekranda kritik hata mesajı çıkabiliyor. Örneğin disket sürücüye eriştiğinizde bu hata mesajı çıkabilir ve rahatsız edici olabilir. Yeni sürümde bu önleniyor.
    new File("A:\\tmp.txt").exists();
Şeklinde bir kod çalıştığı zaman herhangi bir mesaj çıkmadan eğer A sürücüsünde disket yoksa exists() false döndürüyor.

Disk alanının bulunması: java.io.File içerisinde eklenen aşağıdaki metodlar disk alanı ile ilgili bilgiye erişmenizi sağlıyor:
Dikkat edilmesi gereken nokta bu metodların döndürdüğü değerler, yaklaşık değerlerdir. Arka plandaki işleri dikkate almamaktadırlar.

Konuyla ilgili bir kaç not:
  • getUsableSpace() sadece Microsoft Windows için quota'ları hesaba alıyor.
  • Her metod sonucu long olarak döndürüyor. Dönüş değeri erişim haklarıyla ilgili bir bilgi taşımıyor. Alana yazma izni olmayabilir.
  • 0 dönmesi disk bölümünün olmadığı veya alan olmadığı anlamına gelir.
Erişim kontrolleri:java.io.File içerisinde gelen diğer üç yeni metod erişim kontrollerini ayarlamak için kullanılabilir:
İşlemlerin başarılı olması durumunda metodlar true döndürür.

Microsoft Windows aygıtları artık dosya olarak görülmüyor: CON, NUL ve LPT gibi Windows aygıtları File.isFile() sorgusunda artık false döndürüyor.

File.toURL kullanımdan kaldırılıyor: Dosya isminden doğrudan URL oluşturmak saçma URL'lerin ortaya çıkmasına neden olabiliyor. Bu nedenle toURL metodu yerine
    URL u = File.toURI(dosyaAdi).toURL()
şeklinde bir kullanım yapılması gerekiyor.

Microsoft Windows için uzun yol ismi: Windows için artık 260 karakterlik (bu platformun sınırı) dosya yolu ismi kullanılabiliyor.

Diğer Dosya Sistemi Değişiklikleri:
  • File.length() pagefile.sys gibi özel dosyalar için 0 döndürüyor. (Bkz)
  • File.createNewFile() varolan bir dizin için yanlışlıkla IOException atarken artık false döndürüyor. (Bkz)
  • File.listFiles() bağlanmış nfs dizinleri için artık doğru sonuçlar döndürüyor. (Bkz)
  • File.deleteOnExit() yapılan dosyalar kapanma esnasında doğru çalışması için listeye atılarak çıkarken tek tek siliniyor. (Bkz)
Koleksiyonlardaki Yenilikler
jar ve zip değişiklikleri
  • Açılan jar dosyasındaki dosyaların zaman bilgisi olarak açılma zamanı yerine diğer araçlardaki gibi dosyaların zamanı kullanılmaya başlandı.
  • Açık zip dosyalarının sayısındaki 2036 üst sınırı kaldırıldı. Artık platformun destekleyebildiği sayıda zip dosyası açık olabiliyor.
  • Bir zip dosyasındaki girdi (dosya) sayısı sınırı dosyadaki girdi sayısı sahasının 2 byte olması yüzünden 64k oluyordu. Bu yüzden bu saha gözardı edilerek bu sınır kaldırıldı.
  • Microsoft Windows için uzun isimlendirme zip dosyaları için de gerçekleştirildi.
Buraya kadar yazdıklarım genel olarak yeniliklerdi. Aşağıdaki bağlantılar ve o bağlantılar içerisindeki diğer bağlantılar yardımıyla daha ayrıntılı bilgilere erişebilirsiniz.

Kaynaklar ve Ayrıntılı Bilgiler için Bağlantılar:
Java SE 6
What's New in Java SE 6.0
Java SE 6 Key Features
Java SE 6: Top Ten
Introduction to Java 6.0 New Features, Part I

Laboratuvar testleri

Eskiden kardeşlerim her gün yanımdaydı, en ufak ağrıda sorardım, birçok sağlık terimini öğrenirdim. Şimdi ise dağıldık, her birimiz bir yerde.
Soramıyorum artık, iş başa düştü. İnternette güzel bir site öğrendim neyseki. Laboratuvar testleri ile ilgili güzel bir site:
http://www.mc.metu.edu.tr/labtest.html

Emre'de sormamanın getirdiği sıkıntıları yaşıyordur sanırım. Birkaç ay daha böyle internetten idare edeceğiz ;)

TAK! TAK! TAK!

Televizyonu acinca abuk subuk programlarla karsilasiyorum. Haberler de birbirinden o kadar kopuk ki... Guzellik ile ilgili bir haberden sonra bir olum haberi, bir muzik haberinden sonra kotu bir hastaliga yakalanmis insan goruntuleri... Yani bir haberde bogazim dugumleniyor, bir digerinde ise en guzel kadinlari ciplak sekilde gorup aklima olmadik seyler getiriyorum. En iyisi televizyonu kapatmak diye dusunurken, birdenbire secimlerde bir hayat kadininin bagimsiz aday oldugu haberi ile karsilastim.

Evvel zamanin birinde, Emre ile buyuk parkta yuruyorduk. Onumuzde uc tane guzel kicli kiz vardi, kiclari bir saga bir sola sallaniyor, bizim de gozlerimiz olay merkezinden ayrilamiyordu. Veritabanindan cektigimiz verileri musterilere masraf olarak saplamaya alismis olan beyinlerimiz, bu sefer hayvansal gudulerimiz ve hormonlarimizin etkisiyle devreden cikmisti. Hedefe kilitlenmis bir patriot fuzesinden farksizdik. O an dunyanin merkezinde biz ve uc adet kic vardi.

Ve ne olduysa o an oldu... Gayptan "TAK! TAK! TAK!" diye sesler isitmeye basladik. Bir kor adam, bastonunu yere "TAK! TAK! TAK!" diye vuruyordu. O vurdukca gok inliyor, yer sanki yariliyordu... O "TAK! TAK! TAK!" diye vurdukca, biz yerin dibine giriyorduk, geberiyorduk, biz de kor oluyorduk, hic birsey goremiyorduk... Bir tiyatro sahnesinde, cevremizde seyirciler, adam bastonunu vuruyor; o vurdukca bizim kalbimiz on parcaya ayriliyordu... Bir yanimizda uzaklasan uc kic, bir yanimizda ilerleyen kor bir adam... Arada biz... Ve biz ki uc kici her acidan gorebilen ama kor adamdan daha kor iki adam!

Hayat kadini, kor adam, 3 kic ve biz... Hayat devam ediyor, birileri hic birsey goremiyor, birileri hicbir hayat yasayamiyor, birileri kicini ovunerek gosterip dolasiyor; birileri uc kicin, kor adamin ve hayat kadininin arasinda mutlu bir hayat yasadigini zannediyor.

Uc kicin, o hayat kadininin ve o kor adamin da mutlu bir hayat yasayabildigi bir dunyada dolasabilmesini diliyorum. Takip edenin kim oldugunun onemi yok...

Yine Aynı Konu

Bugün daha önce yazmış olduğum bir yazı ile ilgili bağlantılar vermeyi planlıyorum. Öncelikli olarak bu pazar gününün de gerçekten çok sıcak olduğunu belirtmeliyim. Bütün gün evden sadece ekmek almak için çıkmış olan ben, bilgisayar karşısında otururken resmen terledim. Burnumdan bile ter damladı. Peki bundan şikayetçi miyim, şimdilik hayır. Terlemek iyidir :) . Bilgisayar başında oturmayı bile dün telefonda konuşabildiğim kuzenim sayesinde bir nimet olarak görüyorum.

Az önce bir kaç yazı okudum. Her zamanki gibi (aslında her zamanki gibi değil benim dikkatimi her zaman çeken diyelim) konu geliştirici ("developer") ve programcı ("programmer") arasındaki fark. Yazar yaşadığı deneyimi bizimle paylaşarak nasıl Java Geliştiricisinden VB6 Programcısına dönüştüğünü masumiyet kayboldu başlığıyla veriyor. Yazıda geliştirici ve programcı sorumlulukları arasındaki farklar maddeler halinde belirtiliyor. Aslında yazıyı Türkçe'ye çevirmem gerekiyor ama şu an için üşeniyorum. Bu günlüğün tamamen Türkçe yapılması gerektiğini savunsam da arada sırada bu şekilde İngilizce bağlantılar verdiğim için hepinizden şimdiden özür diliyorum. Belki de kendimi iyi hissettiğim bir günde yazardan izin alarak Türkçeleştiririm (söz vermiyorum :) ).

O yazıdan bir başka yazıya geçiyoruz. Aynı yazıdaki bir bağlantıdan ulaştığımız bu yazı klasik soruyu soruyor. "Geliştirici misiniz, programcı mı?" Evet bu soru kritik bir soru. Bu yazımı okuyan Yazılım mühendisliği adayları varsa bu soruyu kendilerine sormalılar. Bu sorunun cevabına göre iş bulmalılar. Gözüme çarpan en önemli nokta "programcı" etiketlilerin "geliştirici" etiketlilere göre %50 daha az maaş aldığı noktası. Maaş benim düşünceme göre o kadar önemli değil. Önemli olan hangi şekilde mutlu olacağınız. Programcılık mı, geliştiricilik mi sizi mutlu edecek? Yazı İngilizce. Yukarıdaki dil ile ilgili sözlerim bu yazı için de geçerli :)

Peki ben niye kafayı bu konuya bu kadar takmışım? Hiç bilmiyorum. Her zaman kafamı kurcalar bu konu. Daha önemli konular düşünülebilecekken neden bu konu, ben de bilmiyorum. Evet, bugün hiç iyi değilim ben :)

Kapatmadan önce son olarak bir bağlantı vermek istiyorum. Kardeşim tarafından bana iletilen düşümce sitesi. Sanat yapıtları hakkında düşüncelerin paylaşıldığı bir site. Yapıtlar hakkında yorumları okuyarak fikir edinebilirsiniz.

Bir zam hikayesi...

Odaya girdigimizde, mavi gozlu ve tombul parmakli adam hafif bir saskinlikla iceri zincirleme olarak giren muhendis sayisini hesaplamaya calisiyordu. Bes adet sandalyeden hangisine oturmali kararini almaya calisan bes adam ise bes bir agizdan:

-‘Merhaba mavi gozlu ve tombul parmakli adam’, dediler.

Sandalyesini secmeye ve oturmaya baslayan bes adam, oturulacak sandalye sayisini birer birer azaltip diger arkadaslarinin secebilecegi sandalye kombinasyonunu azaltiyorlar, bir yandan da kiclarini sandalyede en rahat edecekleri sekilde konumlandirmaya calisiyorlardi. Kicti bu, bir bilgisayarcinin en fazla kullandigi organiydi ve sakaya gelemezdi. Mavi gozlu ve tombul parmakli adami ana fikri anlayabilecek duzeye getirmek icin siraladiklari anlamsiz cumlelerden sonra, hedef cumle hep bir agizdan yukseldi:

-‘Emegimizin hakkini istiyoruz!’

Muhendisler sessice mavi gozlu ve tombul parmakli adama bakiyorlar ve suratindaki garip hareketlerden anlamlar cikartmaya calisiyorlardi. Mavi gozlu ve tombul parmakli adam bir muhendise gore ‘Hasiktir oradan!’ der gibi bakiyordu. Bir baskasi adamin olayi anlayip anlayamadigini anlayamamisti. Bir digeri buradan sonra calisabilecegi is yerlerini birer kez daha aklindan gecirdi. Yuregi yuregine en sigmaz olani camdan disari bakiyor ve kendini 20. kattan asagi atacak gibi yaparak “bana genel muduru getirin!!” diye bagirmak istiyordu. Salakca bir dusunce olmasina ragmen o anin mantiksizligi icinde cok mantikli gelmisti.

-‘Cevabi ust yonetime iletip size alinan karari en kisa surede bildirecegim.’ dedi mavi gozlu ve tombul parmakli adam.

Bes adam ayni anda ayaga kalkti ve odadan bir trenin vagonlari gibi birer birer cikti. Hepsi uretimden gelen guclerini kullanmanin verdigi mutluluk ve klavyelerinden baska kaybedecek birseyleri olmadigi dusuncesi ile gozlerinin zincirlendigi bilgisayar ekranlarina tekrar bakmaya basladilar.

Hayat yine eski seyrine donmustu. Kodlar bir nehir gibi akiyor ve umutlari da alip goturuyordu. 20. kattaki deniz manzaralı iskence koltugunda bana kanserojen cihazlarla işkence yapılmaktaydı. Nefes alamiyordum, kubital tunnel sendromlu kollarim uyusuyordu ve emegimin karsiligini verecekler mi sorusu kafami kurcaliyordu. Bana yapilan insan haklarina aykiriydi ama tam olarak ne kadar ettigini bilmedigim emegimin karsiligini aldigimda susup daha bir zevkle calisacaktim. En azindan sahiplerim oyle dusunuyordu. Tam o anda herhangi bir SSK kuyrugunda herhangi bir yasli teyze yere dustu, son nefesini verirken etrafinda toplanan insanlar acima ve saskinlik duygulari ile ona baktilar. Bunu bilemeyecek kadar o teyzeye uzak bir dunyada yasayan ben, isten cikip kordonda denize karsi cayimi yudumladim. Kafamda emegimin karsiligini alip alamayacagim sorusu vardi, ve fena halde kurcalaniyordum…