Yazan: yugruk Haziran 25, 2008
Applet’ler Java’nın webe getirdiği en önemli araçlardan biridir her ne kadar ağır, yavaş vs gibi isimlerle anılsa da zaman içinde appletler büyük gelişmeler gösteriyor.
Sun java6 dan 7 ye geçiş aşamasında appletler içinde geliştirmeler yaptı ve yeni bir applet teknolojisi oluşturdu. Yeni applet teknolojisi tamamen yeniden ele alınmış, tarayıcı plugini ve appletin JVM si gibi yapılar tamamen değiştirilmiş.
Yeni applet teknolojisi ile:
- Artırılmış kullanıcı deneyimi
- Appletler arka planda başlatılacak
- Artırılmış JNLP desteği
- Her applete özgü konfigürasyon
- Heap boyutu ve java2d ayarlama
- Geliştirilmiş Java/JavaScript köprüsü
- Geliştirilmiş Windows Vista desteği
- Signed appletler Internet Explorer ile sorunsuz çalışacak
gibi yenilik ve geliştirmeler gelecek.
Appletlerin çalışma şekli tamamen elden geçirilmiş ve appletler artık tarayıcı içindeki JVM’de değil işletim sisteminde açılmış JVM’ler içinde çalışacak. Bu özellik her applete özgü ayarlama yapmayı kolaylaştırıyor. Çünkü her JVM 1 applet ile ilişkili olacak ve ayarları sadece o applete etki edecek.
Kişisel düşüncem bu tür geliştirmelerin applet’ler ve onlara programcıların bakış açısını değiştirmesi açısından çok önemli çünkü kendim bir kaç applet geliştirdiğim için applet’lerin sıkıntıları ile bizzat uğraştım, bunların en başında ve en önemlisi şu anki appletlerin tarayıcı içindeki JVMde çalışmasından dolayı oluşan gözle görülür ağır açılışlar ve kötü kullanıcı deneyimi (geç tepki vermeler vs). Yeni yapı tahminimce buna çözüm olacak çok güzel haber !
Appletler eğer signed ise Java’nın bütün güzelliklerini kullanabildikleri için kullanıcıya program kurdurmadan bir çok ayrıntıya girmesi gereken programlar yazmada şu anda 1 numara örneğin “file upload” araçlarını ele alırsak flash ve applet ile yazılanları yan yana getirirsek appletin yapabileceği çok şey olduğunu görürsünüz, applet resimi ön izleme yapabilir, resimi yüklemeden yatırmanızı sağlar hatta bir applete editör ekleyip ön düzenleme bile yaptırabilirsiniz, fakat yanlış bilmiyorsam flash resim ön izleme (lokal dosya sistemindeki bir resimi kastediyorum) yapılamıyor, ileride o özelliği eklerlermi bilmem ama applet daha programa yakın bu tür konularda.
Bu yeni gelişmeler için detaylı bilgi https://jdk6.dev.java.net/plugin2/ ve http://java.sun.com/developer/technicalArticles/javase/newapplets/ sayfalarında yer almaktadır.
Yazı kategorisi: Applet, Java | Yorum Yok »
Yazan: yugruk Haziran 19, 2008
JSP de <%@ include file=”sayfa.jsp”%> yöntemi ile include ettiğiniz sayfalara include eden sayfadan parametre aktarmak isterseniz şunu yapabilirsiniz.
request nesnesine include eden sayfa da include edilen sayfa da erişebiliyor. Bu özellik sayesinde request.setAttribute(”degisken_adi”, “deger”); diyerek request içine include edilen sınıfta kullanmak istediğiniz değişkeni atabilirsiniz, yalnız burada ufak bir ayrıntı var request.setAttribute bir HashMap tipi nesneye ekleme yaptığı için primitive yani int, long vs saklayamazsınız bunu yerine böyle değişkenleri kapsayıcı nesneler içine alarak aktarın. mesela int aktaracaksanız request.setAttribute(”my_int”, new Integer(5));
include edilen sayfadan değişkeni alırken de DegiskenTipi degisken = (DegiskenTipi)request.getAttribute(”degisken_adi”); diyerek değeri okuyup include edilen sayfada kullanabilirsiniz.
Örnek :
Test.jsp
<html>
<head>
<%
request.setAttribute(”sonuc”, new Integer(5));
%>
</head>
<body>
<%@ include file=”show_result.jsp”%>
</body>
</html>
show_result.jsp
<%
Integer result = (Integer)request.getAttribute(”sonuc”);
out.write(String.valueOf(result.intValue()));
%>
Yazı kategorisi: JSP, Java | Yorum Yok »
Yazan: yugruk Haziran 19, 2008
Linux’ta terminalı sık kullanıyorsanız büyük ihtimalle sık sık, uzun veya ardı ardına gelen komutlar kullanıyorsunuzdur. mesela bir dizine geçip o dizindeki programı parametreli çalıştırmak…
Eğer bu işlemlerden sıkıldıysanız linux scriptleri imdadınıza yetişir. Sık kullandığınız ardışıl veya uzun komutları bir script dosyasına yazıp terminalde scripte verdiğiniz adı yazıp enter tuşuna basarak çalıştırabilirsiniz.
Böyle bir çok script yazma ihtimaliniz olduğu için öncelik ev dizininde veya istediğiniz silinmeyeceği kesin bir dizin içinde “.scripts” ya da kafanızdan uygun bir isimde klasör yaratın. Klasörün adının “.” ile başlaması iyidir böyle nautilus, dolphin vs gibi dosya yöneticilerinde klasörü görmezsiniz.
Daha sonra scriptlerinizi terminalde sadece adını yazarak başlatabilmek için bu dizini $PATH değişkenine eklemeliyiz. ev dizininizde yer alan .bashrc adlı dosyayı bir text editörü ile açın ve uygun bir yerine şunu ekleyin declare -x PATH=”script_dizini_yolu/.scripts/”:$PATH böylece terminalde ad tamamlama özelliğinden de yararlanabilirsiniz. “.bashrc” dosyası bir terminali açtığınızda terminalinizin ilk olarak çalıştırdığı dosyadır böylece içine koyduğunuz işlemler terminal açıldığında gerçekleştirilir, bu yüzden terminalin takılmasına sebep olabilecek komutları koymamaya dikkat edin.
En son olarak scriptleri saklayacağınz klasörde istediğiniz isimde script dosyaları oluşturun ve içine bir işlem için sık girdiğiniz komutları ekleyin ve dosyayı kaydedin. Kaydettikten sonra “chmod +x script_adi” komutunu vermeyi unutmayın yoksa script çalışmaz.
Yazı kategorisi: Bash, Linux | Yorum Yok »
Yazan: yugruk Haziran 8, 2008
JamVM Robert Lougher tarafından yazılmış JVM spesifikasyonlarına tamamen uygun bir “java sanal makinası”dır. Sun’ın resmi “Java sanal makinası”ndan farkı JamVM nin embedded sistemler düşünülerek yazılmış olması ve doğal olarak da daha ufak boyutlu olması, mesela benim sistemimde 700kb civarı tutuyor ki bu Java versiyonuna göre çok ufak bir rakam.
JamVM embedded sistemlerde çalışanlara elbette çok faydalı, peki başka faydası var mı ? Evet var, bir jvm nasıl çalışır merak edenler için çok faydalı JamVM çünkü az koda sahip, böylece çok fazla kod arasında kaybolmadan kolayca jvm’nin yapısını anlayabiliyorsunuz.
Java ile ilgilenenlerin JamVM kodlarını incelemesini tavsiye ederim.
link : http://jamvm.sourceforge.net/
Yazı kategorisi: Kategori Yok | Yorum Yok »
Yazan: yugruk Haziran 3, 2008
Javascriptte fonksiyon 2 şekilde oluşturulur
1. normal yoldan
function fonk_adi(){
kodlar
}
diyerek
2. ya da
fonk_adi = function(){
kodlar
}
diyerek fonksiyonlar oluşturulur ve fonk_adi() diyerek çağrılır. yani fonk_adinin yanına “()” işareti eklersek javascript fonksiyon çağrısı yapmış oluruz. Bunu zaten biliyorsunuzdur ama bu bilgi çok önemlidir.
Eğer fonksiyonlarınızın referanslarını bir diziye attıysanız “()” dizideki fonksiyonları çalıştırmanızı sağlar.
Örneğin :
var func1 = function(){ alert(”func 1″); }
var func2 = function(){ alert(”func 2″); }
var arr = new Array();
arr.push(func1);
arr.push(func2);
//fonku cagir
arr[0]();
Javascript çok ilginç bir dildir öyle ki normalde -* vs gibi karakter içeren fonksiyonlar oluşturamayız. Fakat değişik bir yöntem ile bu sorun çözülebiliyor bunu prototype kütüphanesinden öğrendim.
var Test = {
“my-func” : function(){
alert(”fonksiyon adi - iceriyor”);
}
}
//fonksiyonu cagir.
Test["my-func"]();
yukardıdaki gördüğünüz gibi “my-func” adlı bir fonksiyon yarattım Test nesnesi içinde. Normal fonksiyon çağırma burada işe yaramaz, yani Test.my-func diyemeyiz çünkü syntax hatası verir. Bu yüzden Test["my-func"](); diyerek çağırıyoruz fonksiyonu.
Bu çağrının anlamı şudur Test nesnesi içinde yer alan bütün propertyler (propertyler, anahtar-değer dizisidir) içinde ilk rastlanılan “my-func” adlı girdinin karşılığında yer alan referansı çalıştırır.
Test["my-func"]() şeklindeki fonksiyon çağırma mantığını değişik yerlerde kullanabilirsiniz. Bu sizin yaratıcılığınıza kalmış bir şeydir.
Yazı kategorisi: javascript | Yorum Yok »
Yazan: yugruk Haziran 1, 2008
C++ ile string split etmek şu şekilde gerçekleşir :
char buf[256];
memset( buf, ‘\0′, 256 );
char * first = strtok( buf, ” “) ;
char * second = strtok(NULL, ‘\0′) ;
cout << first << ” ” << second << endl
C++ stringini split etmeden önce o stringi C char dizisine dönüştürmeliyiz, dönüştürüm yaptıktan sonra string’i diziye kopyalarız ve son adımda strok() fonksiyonunu çağırırız.
Yazı kategorisi: C/C++ | Yorum Yok »
Yazan: yugruk Mayıs 31, 2008
Linux için en önemli masaüstü sistemleri KDE ve GNOME’dur. KDE QT görsel programlama sistemi kullandığı için KDE’nin ana dili C++’dır. GNOME ise GTK görsel programlama kütüphanesini kullandığı için ana dili C.
GNOME için program yazmak isteyenler çoğunlukla C dilini seçmezler çünkü C dili günümüzün hızlı program geliştirme mantığına ters bir dil (C de uzman kişiler alınmasın). Bu yüzden çoğu programcı Python, Java, Mono C# gibi hızlı geliştirme yapılabilen dilleri tercih ederler. Bu diller “sanal makine” denen bir program üzerinde çalışmalarından dolayı “hafızada fazla yer kaplayan” program sorununu doğurmaktadır. Bu dillerde yazılan programlar C, C++ gibi dillerde yazılan programlara nazaran daha fazla hafızaya ihtiyaç duymaktadır ve doğal olarak çoğu zaman yavaştırlar.
Bu sorunlar Vala’nın gelişi ile ortadan kalkacak gibi görünüyor. Vala C# benzeri bir dildir ve yazdığınız Vala kodları GObject’e göre tasarlanmış C kodlarına dönüşmektedir. Yani Vala sayesinde C dili günümüzdeki nesne yönelimli dillerdeki özelliklerin çoğuna kavuşacak, ayrıca Vala hızlı geliştirmeye de izin veren bir dildir.
Vala şu anda 0.3.x li versiyonunda ve 4-5 ay içinde 1.0 a ulaşması bekleniyor daha doğrusu Roadmap’inde öyle yazıyor
şahsen Vala’nın 1.0 a ulaşmasını ve Vala için IDE’ler geliştirilmesini dört gözle bekliyorum çünkü GNOME benim ana masaüstü sistemim ve yukarıda yazdığım sorunları kullandığım programlardan hissedebiliyorum, çok fazla ram istiyorlar vs.
Linkler :
Vala : http://live.gnome.org/Vala
Yazı kategorisi: C/C++, GTK, Linux, Programlama | Etiketler: Linux, vala | Yorum Yok »
Yazan: yugruk Temmuz 20, 2007
Java platform uyulu klasör (dizin) seçme aracı : Directory Chooser, bu komponentin amacı windowsta iseniz windowsa uygun ikon gösterimi, listeleme vs sağlaması böylece projenizde kullandığınız klasör seçme aracını platform uyumlu hale getirebilirsiniz.
Unixteki görünüşü :
Windostaki görünüşü : 
Link : Directory Chooser 1.0
Kullanımı :
Dosyayı indirdikten sonra isterseniz src dizinindeki kaynak kodları projenize ekleyerek kullanın isterseniz lib içindeki jar paketini projenizin kütüphane yoluna ekleyerek kullanın.
Komponentin kullanımını gösteren kaynak kodu buradan indirip komponentin nasıl kullanıldığını görebilirsiniz. Yapmanız gereken com.yugruk.chooser.DirectoryTree nesnesinden yeni bir tane yaratmak ve istediğiniz yere eklemek.
Ayrıca hangi klasörün seçildiği bilgisini takip etmek için de
this.directoryTree1.addDirectorySelectionListener(new DirectorySelectionListener(){
public void directorySelected(File dir) {
System.out.println(dir.getAbsolutePath());
}
});
şeklinde com.yugruk.chooser.DirectorySelectionListener tipinde bir listeneri nesneye eklemek. 1 den fazla listener eklenebiliyor.
Eğer hata bulursanız yorumlardan bildirirseniz sevinirim.
Yazı kategorisi: Java | Yorum Yok »
Yazan: yugruk Haziran 24, 2007
Appletten Javascript fonksiyonlarını çağırmak için JSObject nesnesini kullanmalıyız.
JSObject nesnesi jre_dizini/lib klasörü içindeki plugin.jar içinde yer almaktadır. Yani JSObject nesnesini ve apilerini appletinizde kullanmak istiyorsanız projenizin kütüphanesine bu plugin.jar’ı da eklemelisiniz.
appletin init() metodu içinde tarayıcının JSObject nesnesine referansını almalıyız.
public void init()
{
jso = JSObject.getWindow(this);
}
jso referansını appletin herhangi bir yerinde kullanabiliriz. JSObject nesnesi ile javascript fonksiyonlarını çağırmak için applet içinden, aşağıdaki gibi bir fonksiyon çağrısı yapmalısınız.
if(jso != null )
try {
jso.call(”fonksiyon_adi”, new String[] {parametreler,…});
}
catch (Exception ex) {
ex.printStackTrace();
}
}
Yukarıdaki 2 gösterim applet içinde JSObject nesnesine nasıl referans alınacağı ve JSObject referansı ile nasıl javascript fonksiyonu çağrılacağını göstermektedir. Appletimizde JSObject nesnesine referans alabilmemiz için html kodunda mayscript parametresinin true değerini alması gerekmektedir. Aşağıda örnek bir html kodu yer almaktadır.
<object type=”application/x-java-applet;version=1.4.1″ width= “800″ height= “600″ name=”jsap” id=”jsap”>
<param name=”codebase” value=”applet/”>
<param name=”archive” value=”applet.jar,plugin.jar”>
<param name=”code” value=”com.test.AppletMain”>
<param name=”mayscript” value=”yes”>
<param name=”scriptable” value=”true”>
<param name=”name” value=”jsapplet”>
</object>
Yazı kategorisi: Applet, Java, Programlama, javascript | Yorum Yok »
Yazan: yugruk Haziran 6, 2007
Deneme için yazdığım cairo-saat’i biraz geliştirdim ve DBUS özelliği de kattım. Bu ufak programın Linux üzerinde program yazmak isteyenlere yol göstereceğine inanıyorum. BENiOKU.txt dosyasında bütün dosyaların ne olduğu DBUS arayüzünün python ile nasıl kullanılacağı vs gibi bilgileri var.
DBUS linux üzerindeki programların bir biri ile haberleşmesini sağlayan bir arayüzdür. Haberleşme ile kastedilen programların birbirlerine veri (sayı, metin vs) göndermesidir.
DBUS genellikle programların ayarlanabilmesi için bir arayüz sunması için kullanılmaktadır. Örneğin bir masaüstü yönetim programını (örn GNOME) ele alırsak, arka planı değiştirmek istersek bir şekilde bu isteğimizi masaüstü yönetim programının ilgili programına bildirmeliyiz. masaüstü yönetim programının ilgili programı bir DBUS arayüzü ile dış programların masaüstü arka planını değiştirmesini sağlar. Haberleşmede kullanılan veri atanacak arka planın yoludur. DBUS’ın kullanım alanlarından biri budur ve yaratıcılığınıza göre DBUS’ı çeşitli yerlerde kullanabilirsiniz.
DBUS genel anlamda bir server-client ilişkisine sahip ayrıntılı bilgi için DBUS’ın sitesine bakabilirsiniz. http://dbus.freedesktop.org
Program kodu : http://www.box.net/shared/92pnd9y7so
Yazı kategorisi: Linux, Program, Programlama | Yorum Yok »