29
Nis
Pardus kullanıcıları eposta listesinde bir soruna çok pratik bir çözüm önerisi gördüm. Çözümü yazan sayın Muhammed Er beye teşekkür ederiz. Java ve Pardus sorunsalına kısa ve anlaşılır bir çözüm yazmış. Soruyu ve cevabı buraya yazıyorum:

Soru:

Ben javaws ile java uygulaması çalıştırıyorum. Fakat program çalıştığında hata alıyorum. Hatanın nedeni javanın update edilmiş olması sanırım. Pardus'ta son sürüm java + update'lerde yüklü durumda oluyor. Benim yüklü olan java versiyonunun update'lerini silmem gerek. Update'leri nasıl silerim?  Veya yüklü olan javayı update'lerle beraber silip nasıl yalın halini ekleyebilirim? Yardımlarınız için şimdiden teşekkürler.

Cevap:

1. java.sun.com sitesinden javayı indirin.
2. Setup dosyasını çalıştırın,
3. "Ev dizini"nize kurun. /home/mehmet/java gibi
4. echo $PATH komutuyla PATH listesinden şu anki javaws nin bulunduğu dizini çıkartın(kurulu olduğu yeri öğrenmek için "which javaws" diyebilirsiniz.)
5. java dizinini PATH'a ekleyin, "export PATH=/home/mehmet/java/bin:$
PATH gibi(dikkat; /java içerinsinde ki bin dizinini ekleyin.)
6. PATH değişkenini değiştirdiğiniz konsoldan, tekrar programınızı çalıştırmayı deneyin. Çünkü o konsoldan çıktığınızda ayarlarınız yok olacaktır.

***
18
Nis
Bilgisayar Mühendisliği bölümünden mezun olmuşsanız sizden bilmenizi bekledikleri bir sürü şey olacaktır. Yazılım mühendisliği öğrencisi bir arkadaşım Gazi Teknopark'ta bir mülakata girmiş ve ona sorulan soruları yazmış. İşte şurdan görebilirsiniz. Fakat biraz yazı düzeninde ve Türkçe de sorun vardı :) Ama çok faydalı bir yazı olmuş. Ben soruları ve kendi cevaplarımı yazıyorum. Umarım size de yardımcı olur.

Soru1: Algorithma üzerine yapar mısın?

Algoritma bilgimizi ve bu konudaki kendimize güvenimizi sorguluyorlar. Bilgisayar mühendisliğinde ve yazılım mühendisliğinde bir sürü aloritma tek tek incelenir ve analizi edilir, bunun üzerine bir yığın ders görüyoruz. Elbette mezun olduğumuzda algoritma çıkarma ve analiz etme bizim için çocuk oyuncağı olacaktır. Kısaca algoritma nedir diye bilmeyenler için açıklayalım: Bir problemin ideal çözümüne giden yola algoritma denir. Burda amaç en hızlı ve en ideal çözümü bulmaktır.


Soru2: Asalsayıları ekrana basan bir program yaz.

Bu soru da sizi programlama bilginizi ve az çok algoritma mantığınızı sorguluyorlar. Ben bu soruya Java ile cevap verebilirim, ya da C ile cavap verebilirim. Başka biri kendi bildiği dillerden birisi ile cevap verebilir. Özellikle asalsayıları ekrana yazdıran problem üniversite 1. veya 2. sınıfta programlamaya girişte yaptığımız ilk işlerden birisidir. Çok kolaydır. Bir asal sayı şöyle tanımlanır: Sadece 2'den sayının yarısına kadar olan bütün sayılara bölümü asla 0 olmayacak. Ya da daha optimum bir çözüm, 1 hariç sayının kareköküne kadar olan bütün pozitif tam sayılara bölümünden kalan 0 olmayacak. Mesela 11 sayısı için bakalım: Karekök 11, 3.11 ediyor. O halde 2 ve 3 ile bölümleri 0 etmediği için bu sayı asaldır. Java ile yazılmış olan cevabı da blogumda şu yazıda bulabilirsiniz.

Soru3: Linux'ta who çekmek nedir?

Hangi kullanıcıların sizin Linux sisteminizde login olduklarını, hangi konsolu kullandıklarını ve login olma saati ile tarihini görmek için Who komutu kullanılır. Örneğin şöyle bir output görebilirsiniz:


who
root tty1 Apr 17 11:26
ahmet tty3 Apr 17 12:43
merve tty2 Apr 17 12:08

Linus Torvalds'ın kendi kitabından hatırlıyorum (kitabın adı "Just For Fun") bunu şöyle açıklamıştı, 1990'ların başında bunlar Linux veya Minix kullanıyorken, terminalden who komutu ile karşındaki kişinin bilgisayarını sorgulayabilir ve kime ait olduğunu öğrenebilirmişsin. Mesela herhangi birisi Linus'a who çektiğinde onun adını tam hatırlamıyorum ama "tanrı linus" gibi bir şey olarak görüyorlarmış, çünkü o kendi bilgisayarının tanrısı olduğunu düşünüyormuş ve böyle bir adı kullanıyormuş. Yani eski Linux kullanıcıları bu who çekme olayını iyi bilirler. Bizim gibi yeni kullanıcılara da bunu sorarak bizi test ederler :)

Bu arada bu konu konuşulurken mülakatta Via'dan bahsedilmiş. Via linux portalını incelemek isterseniz şu adrese bakabilirsiniz.

Soru4: c++ dosya okuma ?

Zaten bu tarz kodları kimse akıldan yazmaz, ben en hakim olduğum dil olan Java'da bile, açıp Java kütüphanesine ait sınıfları incelemeden bir şey yazmam. C++ dosya okuma konusunda internet sitelerinden size bir örnek buldum, buyrun inceleyin şurdan efendim. Ordaki en genel örneği burda da paylaşalım:


// reading a text file
#include
#include
#include
using namespace std;

int main () {
string line;
ifstream myfile ("example.txt");
if (myfile.is_open())
{
while (! myfile.eof() )
{
getline (myfile,line);
cout << line << endl;
}
myfile.close();
}

else cout << "Unable to open file";

return 0;
}


Soru5: 30.000 satırlık bir text dosyasını word açamıyor, bunu nasıl açarım?

Bunu ben de bilmiyordum, BCNF ile açılıyormuş. Bunu ben database dersinde öğrenmiştim geçen yıl. Ama böyle bir işe yaradığından haberim yoktu. Yani benim bildiğim Boyce-Codd Normal Form (BCNF) belki de farklı bir şeydir, tam bilmiyorum. Aynı kısaltmaya sahip başka şeyler olabilir sonuçta.


Sonuçta bu tarz sorular sorulmuş. Sadece bunlar yeterli değil elbette size. Güzel bir iş sahibi olmak için, biliyorum demek yetmez, değişime, bilgiye ve öğrenmeye açık olmak lazım. Herkese kolay gelsin.

***Seval Ünver***
5
Mar
Yine bana gelen soruları derledim. Soruları soran arkadaşlar gizli. Cevaplarımda hatalarım olabilir, bilgisayar/linux/programlama gurularından af diliyorum :)


1- İlk olarak banka programının arayüz kısmını nasıl yaptınız? Tüm proje ne kadar zamanınızı aldı? Sanıyorum GUI için yine kodlar kullandınız ama bana genel olarak bu işin nasıl yapıldığını anlatırsanız çok sevinirim. Çok kısaca mesela, belli classlar var bunları kullanıyorsun, bazı pencere kodları var gibi bir cevap...

Cevap: Arayüz'ü Netbeans IDE ile arayüz hazırlama tool'unu kullanarak yaptık. Otomatik olarak kodlar zaten var oluyor. Sadece hangi tuşa tıklayınca ne olacak onu kendim belirliyorum. Netbeans candır, tavsiye ederim.


2- Genel anlamda C# mı yoksa Java mı daha iyi? (C# 'ı biliyor musunuz bilmiyorum ama .. Eğer bilmiyorsanız bu soruyu geçebilirsiniz.)


Cevap: Java (1995), C# ve .net(2001)e göre çok daha eskidir. Fakat Java'nın C#'dan daha zor olduğunu söylüyorlar. O yüzden şu anda yaygın olmayabilir ama gelecekte daha yaygın olacak. C# bir çok projede kullanılıyor, fakat dünya çapında yapılan araştırmalar sonucu elde edilen verilere göre Java'ya daha çok önem verildiği için biz Java kullanıyoruz ve Java tercihimdir.


3- Sitenizde Assembly olarak yazdığınız bir Binary Search vardı. Bu assembly dilin özel bir adı var mı? Çünkü eğer yanlış bilmiyorsam her işlemcinin (Intel, AMD, ..) ayrı bir assembly dili var.

Cevap: Assembly dili makine diline en yakın dildir. Programcıların bilmesi lazımgelir. Bütün işlemciler kendi compiler durumuna göre yorumlar. Her işlemcinin assembly kodları farklıdır. Biz bir işlemci modeli üzerinde kullandık bu programı. Fakat işlemcilerin mantığı sonuçta aynı. Aralarında derleme yönünden bir sürü farklı kriter var. Microişlemciler dersinde bu konular uzun uzun anlatılıyor.


4- Ben ubuntu kullanıyorum. Daha önceden Pardus kullandım. 2007de kurdum ilk defa ama sonra bilgisayarım bozuldu ve çeşitli başka sebeplerden olmadı. Bu sene Pardus 2009 çıkar çıkmaz indirdim ve kullandım.. Daha sonra Ubuntu daha iyi dediler, ve Ubuntu Pardus'a oranla biraz daha mmm şey böyle Türkleşmemiş hani alıştığımız Windows tarzı yok. Ben o alışmışlığı kaybetmek için Ubuntu yükledim. Fakat Pardus'a destek vermek istiyorum. Siz aynı anda 2 Linux tabanlı işletim sistemi yüklemişsiniz sanıyorum. Bilgisayar için bir sorun oluyor mu?


Cevap: Eskiden benim bilgisayarım tam bir külüstür olmasına rağmen içinde 3 tane işletim sistemi takır takır çalışıyordu, istersem 8 tane bile yapabilirdim. Memory'yi elle istediğim parçalara bölüp biçimlendiriyorum. NTFS biçimlendirmesini Windows için, ext3'ü de diğerleri için. Geçen yıl 10 gb Ubuntu, 30 gb Pardus 35 gb Windows idi, sorun olmuyor. Yeni bir pc aldım. Bunda durum değişti 130 GB Windows, 40 Ubuntu, 60 da Pardus. Bunları da içlerinde bölümlendiriyorsun, home için ayrı bellek yeri tutuyorum, böylece sistem çökerse dosyalarıma bişe olmuyor.
Linux'da konsol'dan yapıyorsun her şeyi. Windows'da da Regedit'i ve Bilgisayar Yönetimi'ni Çalıştır'dan "C:\WINDOWS\system32\compmgmt.msc" komutu ile açarak incele, işe yarar şeyler var.


5- Son olarak Linux işletim sistemlerini öğrenmek için neler yapmalıyım? Bu işin tabiri caizse Gurusu olmak istiyorum :)

Cevap: Linux kullanmak zor değil, abartıyorlar. Bol bol konsol kullan, ayrıca Gentoo, Archlinux dene seni geliştirir.

***
1
Eyl





MultiThread Programming (ÇokluKanal programlama) terimine kısaca bakmak gerekirse, bir programdaki akış kontrol mekanizmasıdır. Örneğin; klasik batch modunda programlardan farklı olarak kullanıcı herhangibir anda girdi girerken program arka planda başka veriler toplayabiliyor olmasıdır.

Gelelim önemine: Çok çekirdekli işlemcilerin piyasaya çıkmasıyla beraber çok kanallı programlar önem kazandı. Performansın önemli olduğu çeşitli algoritmik uygulamalar için ise vazgeçilmez bir kaynak oluyor.

Java her ne kadar platformdan bağımsız olma özelliği gösterse de bu sadece byteCode konusundadır. Java sanal makinesini sonuçta işletim sisteminde çalışır. Bu açıdan işletim sistemlerinin çoğul çekirdekli sistemlerde programları yönetme farklılıkları gösterir. Örneğin C dilinde, dil seviyesinde çok kanallı programlama desteği yoktur. Ancak işletim sistemi öncül tiplerini kullanarak bu yetiye ulaşır.

Bu zamana kadar çeşitli Linux dağıtımları, Java'nın crossPlatform olmasını da kullanarak performans karşılaştırmaları yapmışlar. Örneğin Ubuntu vs Vista. Sunuyu burdan indirebilirsiniz: "JAVA Multi-thread Programming on CMP System" .

Biz de test için bir java sınıfı oluşturduk. Programa göre 1, 3, 5, 7, 10 saniye olmak üzere 5 farklı zaman diliminde, biri yüksek öncelikli(7) diğeri düşük öncelikli (3), 2 kanalın çalışması sırasında while döngüsünün 5 defa tekrarlanarak "counter" sayacını kaç defa arttırdığı ölçüldü.

Bu tip ölçümlerde her ne kadar sistem durumu, uygulamaların etkinliği vs vs birçok etmen olmasına rağmen kabaca bir ölçüm elde ettik.

**00****00****00****00****00****00****00****00****00****00****00**

Her zaman dilimi (1, 3, 5, 7, 10 saniye) için 5 ölçüm yapıldı. Bu beş ölçümün ortalaması ise o saniye dilimi için kullanıldı.

Yüksek Öncelikli Kanal ile Pardus ve Vista'da yapılan ölçümler sonucu:

Düşük Öncelikli Kanal ile Pardus ve Vista'da yapılan ölçümler sonucu:

Grafikleri yorumlamak gerekirse:
  1. Yüksek öncelikli kanalda, programların çalışma sürelerine bağlı olarak artış hızı Pardus'ta daha fazla olduğunu görüyoruz. Bunun yanında Pardus daha düzensiz olarak hızlı arttığını görüyoruz. Pardus burada birim zamanda daha çok döngü sağlayıp eşit süreli çalışma zamanları için daha çok counter hit üretmiştir.

    Vista ise düzenli bir hız artışına sahip ama birim zamanda performansı Pardus'a göre %14.06 daha düşük çıkıyor.

    Pardus dolu dizgin koşarken Vista düzgün ilerlemeyi seçiyor :)

  2. Düşük öncelikli kanalın her iki işletim sisteminde çalışmasını incelemek gerekirse, Pardus'un, her bir zaman diliminde üretilen ortalama sayaç sayısının zamana göre artış hızı Vista'dan daha fazla. Düşük öncelikli kanalda Pardus düzenli bir artışı seçerken Vista da yine düzenli olarak artıyor. Örneğin 5 sn'li çalışma süresince aralarında ki standart sapma ise %19.02 gibi azımsanmayacak bir rakam.
Düşük öncelikli kanalla yüksek öncelikli kanalın 2 işletim sisteminde hız karşılaştırmasını yaptık. Burada ilginç bir diğer nokta ise Pardus'ta yüksek öncelikli kanal bazen düşük öncelikli kanala yetişemiyor. :). Ölçüm sonuçları en sonda verilmiştir. İncelerseniz bu garipliği görebilirsiniz :).


Bu grafikte ise 5 zaman dilimi için(1, 3, 5, 7, 10 saniye) (High level, Low level) çifti çizildi. Bu grafiği Microsoft Math 2007'den çizdim bu arada. Gariptir ki Microsoft bu projeyi açık olarak yürütüyor, yoksa işimiz ne :). Çok kullanışlı bir program tavsiye ederim.

Kaynak Dosyalar ve Bilgisayar bileşen özellikleri için: Burdan

Ayrıntılı ölçüm sonuçları ve Grafikler için: Burdan


Eksik ve eklemek istedikleriniz varsa yorumlarınızı beklerim...
9
Nis

seamlogo8. Linux ve Özgür Yazılım Şenliği kapsamında 17 Nisan Cuma günü, 13:00-15:00 arasında, JBoss Seam Atölye Çalışması yapılacak.

Çalışma içeriği ise şöyle :

  • EJB3, JPA, JSF teknolojilerine giriş
  • gerekli çalışma ortamının oluşiturulması
  • seam-gen kullanılarak bir seam projesi oluşturulması
  • eclipse ve netbeans altında ilgili projenin açılması
  • ajax destekli küçük bir uygulamanın yazılması

Atölye çalışması konuyla ilgilenen herkesin katılımına açık olmakla birlikte temel java ve web teknolojileri bilgisi faydalı olacaktır.

24
Mar

Bu hatayı aldığınızda öncelikle listelerde geçerli olan remove(int index) fonksiyonunun referans sayfasına bakalım;

Throws:
UnsupportedOperationException - if the remove method is not supported by this list.

Aslında hata gayet açıklayıcıydı ama başka tür hatalar aldığınızda da referans sayfasına bakmanızda fayda olduğundan bu aşamayı da yazdım.

Ben bu hatayı Arrays.asList ile liste oluşturduğumda aldım;

        List enumList = Arrays.asList(ApplicationStatus.values());
        enumList.remove(3);

Bu kodun amacı ApplicationStatus sınıfındaki enum degerleri bir listeye atıp ardından bazı elemanları silme işlemi yapmaktı.

Bu şekilde asList ile oluşturulan listeler java.util.Arrays$ArrayList gibi bir liste döndürüyor ve bu tip listeler remove() add() gibi fonksiyonları desteklemiyor. Bu sebepten UnsupportedOperationException hatasını alıyoruz.

Bunun çözümü bir şekilde düzgün bir liste oluşturmak. Ben şöyle yaptım;

        List enumList = Arrays.asList(ApplicationStatus.values());
        List realList = new ArrayList();
        for (int i = 0; i &lt; enumList.size(); i++) {
            realList.add(enumList.get(i));
        }
        realList.remove(3);

Artık realList ile istediğim gibi remove(), add() fonksiyonlarını kullanabiliyorum.

8. Linux ve Özgür Yazılım Şenliği, bu sene İstanbul Bilgi Üniversitesinde 17-18 Nisan  tarihlerinde gerçekleştiriliyor.

Bu sene şenlik sırasında JBoss Seam konusunda bir atölye çalışması yapıyor olacağım. İlgilenen herkesi beklerim…

16
Ara

turkcell-isolaTurkcell’den beklemediğim ve beni şaşırtan bir haber geldi. Turkcell Teknoloji ilk açık kaynaklı, GPL lisanslı ürünü Isola Framework’u duyurdu. Isola, Java ile web uygulaması geliştirenler için yine bir javascript frameworku olan Extjs’i temel alarak geliştirilmiş bir javascript frameworku. Sanırım ajax4jsf’e benzer bir işi yapıyor.

Böyle büyük ölçekteki bir şirektin özgür yazılıma destek vermesi, ülkemizde özgür yazılımın gelişmesi adına güzel bir gelişme. Turkcell Teknoloji için bu bir ilk ama son olmayacaktır diye düşünüyor ve umuyorum.

Bu güzel hareketinden dolayı Turkcell’i ben de (*) tebrik ediyorum.

Turkcell Teknoloji’nin nasıl bir yer olduğunu merak edenleriniz varsa Televidyon’un videosunu izleyebilirler ve bilgi alabilirler.

Bu arada haberi sevgili Görkem Çetin‘in linux sohbet listesine attığı posta sayesinde öğrendim. Kendisine bu güzel haberi ilettiği için teşekkür ederim.

12
Mar

Uygun Teknoloji, Java EE teknolojileri ile geliştirmekte olduğu özgür yazılım ürünlerinde birlikte çalışacak takım arkadaşları arıyor.

İlgilenenlerin CV’lerini bilgi [at] uygunteknoloji.com adresine göndermeleri rica olunur…

14
Oca

Pardus 2007.3′e kurduğum Eclipse yazılım geliştirme programında java dili kullanarak MySQL’e bağlanmaya çalışıyordum bir süredir (1-2 gündür). Ama bir türlü bağlanamadım. Bağlanmaya çalıştığımda şu hatayı alıyordum;

Cannot connect to db/user. Check your URL
Communications link failure

Last packet sent to the server 0 ms ago

Sonunda çözümü buldum… Problem mysql’in ilk kurulumuyla gelen ayarların dışarıdan erişime izin vermemesiymiş.. Düzeltmemiz gereken dosya /etc/mysql/my.ini dosyası.. Pardusta düzeltmeyi şu şekilde yapabiliyoruz;

Önce ALT+F2 ile çalıştır’ı açalım..

kdesu kwrite /etc/mysql/my.ini

yazıp root şifremizi girelim. daha sonra açılan dosyadaki

skip-networking

satırını bulun ve o satırın başına # ekleyin ve o satırı yorum satırı yapın. Yani o satır şöyle olsun,

# skip-networking

dosyayı kaydedip kapatın. daha sonra konsol açıp şunu yazarak mysql-serverı yeniden başlatın.

service mysql-server restart

Artık Pardus linuxta Eclipse kullanarak MySQL’e bağlanabiliyoruz…

Bu arada bu çözümü uzun araştırmalar sonucu buradan buldum..

20
Eyl

RedHat’ın Exadel’den devir alıp özgür yazılım haline getirdiği RichFaces JSF bileşen setinin yeni sürümü yayınlandı. Live demosuna buradan kendisine de şuradan erişebilirsiniz.

Seam uygulama çatısının 2.0 CR1 sürümü duyuruldu. Güncel kararlı sürüm 1.2.1′e göre bir çok yenilik içeren bu sürüm uzun zamandır beta aşamasındaydı. Sürüm hakkında bilgi için buraya indirmek için ise şuraya bakabilirsiniz.

Oracle ADF’den sonra Ajax destekli yeni bileşen setini de Apache vakfına bağışladı. Bilgi için buraya demo için ise şuraya bakabilirsiniz.

24
Ağu


Sun, SUNW olan NASDAQ borsa işaretçisini JAVA olarak değiştirme kararı almış. Sun ismin pek bilinmediğini Java adının ise daha çok tanındığını düşünüyorlarmış. Bakınız…

Bunun Sun için iyi olup olmadığını bilemeyeceğim ama sanırım Java için pek iyi olamayacak. Böyle bir hareketle Sun, insanların kafasında Java isminin kendileri ile daha yakın bağlar kuracağını hedeflemekte. Java’nın diğer teknolojilere göre en önemli üstülüğünün bir birine rakip bir çok şirketin ve kurumun bir arada aynı teknolojiyi geliştirmesiydi. Dolayısı ile de ismin / markanın biraz daha ortada, bir şirkete bu kadar da bağlı olmamasını, kendi adıma tercih ederdim.

31
Eki
Önce gelişmelerden bahsedeyim: Java ile bir program (hocanın verdiği java projesi) yaptım. İyi bir deneyimdi, nesne yöneliminin nasıl kolaylık sağladığını görmüş geçirmiş oldum. Ama tasarım kalıpları öğrenmeden bu iş zor gibi görünüyor. Amarok'un yüzünü görmüyorum, müzikten sıkıldım galiba... Java projesini yaparken Eclipse ile iyi ikili olduk :) . Pisidepo sürekli genişliyor ve wikilendi. Bu sayede wiki yönetmeyi de öğrendim. Eh bakalım tatilde ne yapacağız...