Open Flash Chart for java (ofc4j)
Ödev, sunum, rapor, tanıtım, reklam... Bir konuyu daha anlaşılır, anlatılmak isteneni daha çarpıcı kılmak çoğu zaman görsel objelerin gücüyle sağlanır. Bazen akıllıca hazırlanmış bir çizim paragraflar süren bir konuyu 2-3 saniyede anlatabilir. Grafikler de bu görsel anlatımın önemli elemanlarından biridir. Uygulama geliştirirken veya rapor üretirken ya da web sitesi tasarımlarında sıklıkla ihtiyaç duyduğumuz grafikleri üretmek için ayrıca bir yazılım yapmamıza gerek kalmıyor. Çünkü açık kaynak dünyası bu konuyla ilgili birçok alternatif sunuyor.
Java dünyasının en önemli açık kaynak kodlu projesi
JFreeChart inanılmaz geniş bir çeşitlilikle bu ihtiyacı karşılayan bir projedir.
JFreeChart ve
onun gibi birçok açık kaynak kodlu proje resim tabanlı grafikler üretmenizi sağlayan projelerdir. Geçtiğimiz günlerde RSS'ime düşen yeni bir proje ilgimi çekti ve biraz inceledim:
Open Flash Chart (OFC). Bu projenin diğerlerinden farkı Macromedia Flash tabanlı grafikler üretiyor olmalısıydı. Eğer
Google Analytics kullandıysanız bilirsiniz, o da Flash tabanlı grafikler kullanır.
OFC ile
Google Analytics grafiklerine çok benzeyen grafikler üretmek mümkün:
OFC Örnek:
Google Analytics Örnek:
OFC grafiklerini herhangi bir tarayıcıda veya bir Flash oynatıcı program ile izlemeniz mümkün, bundan başka bir bağımlılığı bulunmamaktadır.
İlişkili projelerle şu an grafiklerinizi PHP, Python, Perl, Ruby, Struts2 ile üretebilmeniz mümkün durumda.
OFC'nin sourceforge'taki aktivitesinin yoğun olması, çok kısa sürede daha bir çok özelliği bünyesine katacağını gösteriyor,
OFC projesine ben de katkıda bulunabilmek için başlangıçta alt seviyede java API'si sunan bir
proje başlatmaya karar verdim. Adına
ofc4j verdiğim proje şu an indirilebilir ve kullanılabilir durumda.
Ofc4j'nin proje sayfasından,
OFC'nin sunduğu özelliklerin hemen hemen tamamını içeren bir kütüphaneye (ofc4j.jar) ve
ofc4j'nin tüm yeteneklerini 21 tane örnek grafik ile gösteren bir demo uygulamaya (ofc4j-demo.war) ulaşabilirsiniz.
Farklı grafik tipleri için ekran görüntüleri:Etiketler: açık kaynak, chart, flash, java, ofc4j
Uzak Makinalar
Zaman zaman iş veya hobi amaçlı kimi zaman sadece meraktan uzak makinalara erişim ihtiyacı duyarız. Uzaktan erişimin atası telnet protokolü denebilir, telnet son yıllarda yerini daha güvenli olan açık ssh protokolüne bırakmıştır, bu yöntemle uzak makinaları komut satırından komutlar vererek yönetmek mümkündür. Bu protokolleri destekleyen sunucu ve istemci programları sayesinde erişimi sağlayabiliriz. Uzak makinada sunucu servisi, kendi makinamızda istemci programı çalışıyor olmalıdır. Bu programlardan açık kaynak kodlu bir çok alternatif bulmak mümkün, zaten blogumda fırsat buldukça bunları tanıtıyorum. Bugün de bir tanesini tanıtacağım ancak önce bir diğer uzaktan erişim şekli olan "uzaktan masaüstünü kontrol etme" yönteminden bahsetmek istiyorum yani ağ veya internet üzerinden bilgisayarı uzaktan kullanmayı.
Uzak Masaüstü Erişimi ve VNC
En konforlu uzak makinaya erişim yöntemi denebilir, yüksek ağ trafiği gerektirdiği için yerel ağlarda tercih edilir ancak internet hızındaki artış, internet üzerinden de masaüstü erişimini mümkün kılmaktadır. Uzak masaüstü erişiminde "açık RFB" protokolü kullanan VNC yazılımları bu amaca yönelik bir standart haline gelmiştir. Çalışma mantığı oldukça basittir, uzak makinaya kurulan VNC sunucusu, tüm masaüstü ve pencere görüntülerini, görüntü akışı şeklinde bize gönderir, bizim makinamızda bulunan VNC istemcisi (VNC viewer da denir) bir video oynatıcısı gibi çalışarak bu görüntüleri bize gösterir, tıpkı youtube'tan video seyreder gibi, VNC istemcisi fare ve klavye ile yaptığımız hareketleri sunucuya gönderir, sunucu da bu işlemleri üzerinde çalıştığı makinada gerçekleştirir.
RFB protokolünü geliştiren ve uygulayan RealVNC şirketi ücretli ve ücretsiz sunucu ve istemci yazılımları sunmaktadır. Hem Windows hem de Linux/Unix üzerinde çalışan açık kaynak kodlu VNC yazılımları da mevcuttur (TightVNC, UltraVNC, TurboVNC vb.). Bu yazılımlarla bir Windows makinadan bir Unix server'ı ya da bir Linux dağıtımından bir Windows makinayı kullanmak mümkün olabilmektedir. Tüm VNC yazılımları ortak bir protokol kullandığı için birbiriyle uyumlu çalışabilmektedir sadece RFB protokolü de sürekli gelişim içinde olduğu için aynı RFB sürümüne göre haberleşmeleri gerekir.
Diğer Uzak Masaüstü Erişim Yöntemleri
VNC dışında da uzak masaüstü erişimi sağlayan sitemler vardır mesela Microsoft Windows bunu kendi Remote Desktop yazılımı ile gerçekleştirir. Yerel ağlarda çok sorun yaşanmamakla birlikte Internet üzerinden uzak bağlantılarda bir çok karmaşık ayar yapmak gerekir: firewall ayarı, port yönlendirme veya virtual host tanımlama gibi. Bütün bu ayarlardan sizi kurtarıp, tarayıcınızla Internet üzerinde gezebiliyorsanız, başka bir ayar yapmanıza gerek olmadan uzak masaüstü bağlantı yapabileceğiniz sistemler de vardır, bu sistemler genelde sizinle uzak makina arasında kendi serverlarını kullanarak iletişim kurmanızı sağlar (GoToMyPC, TeamViewer vb.).
X Pencere Sunucuları (X Server)
Linux/Unix işletim sistemlerinde uygulamaların grafik arayüzleri (GUI), işletim sistemi üzerinde bulunan pencere sunucuları tarafından görüntülenir. Çalışma şeklini, klavye ve fare hareketlerini VNC sunucusuna ileten bir VNC istemcisine benzetebiliriz, yani aynı makinada hem görüntü istemcisi hem de sunucusu olduğunu farz edebiliriz. 1984'te kurulan bu sisteme X Window System adı verilmiştir, daha sonra X11 adını almıştır. Açık bir protokoldur ve MIT lisansına sahiptir. Uygulama ile onun grafik arayüzünü böyle bir mimari ile ayırmanın çok önemli getirileri olmuştur, açık dünya toplulukları protokolleri belirleyip Dünya ile paylaşarak, bu protokolleri kullanan bir çok özgür yazılımın ortaya çıkmasını sağlamış, sürekli gelişen, çok alternatifli ve özgür bir platform oluşmasına ön ayak olmuştur. X Window System'in en önemli özelliği X server'ı yerel ağ veya internet üzerinde herhangi bir makinada tanımlayabiliyor olmanızdır yani çalışan herhangi bir uygulamanın grafik arayüzünü bir başka makinaya göndermesini sağlayabiliyorsunuz. Uzak masaüstüne erişim sistemi gibi bir yapı UNIX tabanlı sistemlerde temel özellik olarak X11 sayesinde 1984'ten beri vardır.
Bir Unix/Linux uzak makinasını grafik arayüzüyle birlikte nasıl yönetebilirim? Yukarıda bahsettiğim VNC ve diğer uzak masaüstü erişim yöntemleri ile bunu yapmak mümkündür ama hemen iki adet handikap göze çarpıyor:
- Bir uzak makina aynı anda bir kişi tarafından yönetilebilir/kullanılabilir.
- Yüksek bir ağ trafiğine neden olur.
Oysa telnet veya ssh ile bağlandığınız bir uzak makinaya "senin X Sunucun benim makinamdır" diyebilirseniz, telnet/ssh ile komut satırından çalıştırdığınız programın grafik arayüzü sizin makinanızda oluşacaktır hem de yukarıda bahsettiğim her iki handikapın da önüne geçerek...
Eğer siz de bir Linux/Unix makina kullanıyorsanız, Bu zaten bir X sunucusuna sahipsiniz anlamına gelir, aşağıdaki komutlarla uzak makinanın grafik arayüzlerini kenndi makinanıza yönlendirebilirsiniz. SSH ile bağlandıysanız: - Öncelikle ssh bağlantısını şu komutla kurmalısınız, örnekteki IP: uzak makinanın IP'sidir. username: uzak makinada var olan bir kullanıcıdır.
ssh -l username -X -C 192.168.1.2
- Bundan sonraki adımlar telnet adımları ile aynıdır.
Telnet ile bağlandıysanız:
- Uzak makinada DISPLAY değişkenini kendi IP'niz olarak belirtmelisiniz sonuna 0.0 eklemeyi unutmayın.
export DISPLAY=192.168.1.3:0.0
- X sunucunuza uzak makinanın size grafik arayüzü göndermesine izin vermelisiniz, bunun için kendi makinanızda aşağıdaki komutu vermelisiniz, örnekteki IP uzak makinanın IP'sidir.
Eğer bir Windows makina kullanıyorsanız, Bu sizin bir X sunucusuna sahip olmadığınız anlamına gelir ama hemen açık kaynak kodlu bir X sunucusu kurabilirsiniz mesela XMing - Xming' i kurduktan sonra komut satırında şu komutu girerek X sunucunuzu çalıştırabilirsiniz:
"C:Program FilesXmingXming.exe" :0 -clipboard -multiwindow -ac
Tabi kurulumu siz de benimle aynı yere yaptıysanız bu komutu kullanmalısınız. Bu komutu kullanarak bir kısa yol tanımlamak sizin için daha kolay olacaktır.
- Şimdi telnet veya ssh ile uzak makinaya bağlantı kurarak DISPLAY değişkenini kendi IP'niz olarak belirtmelisiniz sonuna 0.0 eklemeyi unutmayın.
export DISPLAY=192.168.1.3:0.0
Artık uzak makinada herhangi bir uygulama çalıştırıp görüntünün gelmesini bekleyebilirsiniz. Bu işlemi çok fazla sorun yaşamadan yerel ağlarda gerçekleştirebilirsiniz ancak internet üzerinden bir uzak makinaya ulaşmak istiyorsanız kendi makinanıza port yönlendirme yapmalısınız dışarıdan 6000 portuna gelecek istekleri kendi makinanızın 6000 portuna yönlendirmeniz gerekir. Uzak makinada DISPLAY değişkenini tanımlarken 0.0 yerine 0.1 kullandıysanız iletişim 6001 portundan başlayacaktır dolayısıyla 6001 portunu yönlendirmeniz gerekir, 0.2 için 6002 ... ya da kendi makinanızı DMZ olarak tanımlarsanız dışarıdan gelecek tüm istekler direk sizin makinanıza iletilir.
Eğer uzak makinadaki bir uygulamaya Windows'tan tek tıklama ile ulaşmak istiyorsanız Xming bunu da sağlayabiliyor, ihtiyacınıza göre aşağıdaki komutlardan birini kullanabilirsiniz. - Telnet ile erişebildiğiniz bir uzak makina ise
"C:Program FilesXming\plink.exe" -X kullanici@192.168.1.2 mozilla
- SSH protokolü ile erişmek istiyorsanız
"C:Program FilesXming\plink.exe" -ssh -X kullanici@192.168.1.2 konqueror
- Eğer şifre girmek istemiyorsanız:
"C:Program FilesXming\plink.exe" -ssh -X -pw sifre kullanici@192.168.1.2 ksnake
Yukarıdaki örneklerde mozilla, konqueror ve ksnake uygulmalarını çalıştırdık, hepsi ayrı birer pencerede kendi makinamızda açıldılar, eğer uzak makinanız Linux ise ve masaüstünü kullanmak istiyorsanız - KDE masaüstü için startkde komutunu
- Gnome masaüstü için gnome-session komutunu çalıştırmalısınız.
Etiketler: açık kaynak, Linux, ssh, telnet, vnc, windows, x server, x11