Java'nın lisansında değişiklikler

Şu blogta belirtildiği üzere Sun sonunda Java'nın GNU/Linux üzerinde yüklenmesine engel olan lisans problemini çözmüş. Böylece artık örneğin Ubuntu'da uğraştığımız Java'yı paket olarak hazırlayıp kurma işleminden kurtuluyoruz. Artık apt-get install sun-java5-jre diyerek rahatlıkla Java'nın son sürümünü kurabileceğiz.

Düzeltme : Fazla Mesai'de de bahsediliyor.

Eskimoların kar için gerçekten 100'den fazla kelimesi mi var?

Do Eskimos really have over a hundred words for snow?

Yahoo'ya sorunda böyle bir soruyla karşılaştım. Eskimolarda karı tarif etmek için 100'den fazla kelime olduğuna dair bir şehir efsanesi varmış. Hatta Phil James adında bir adam karı tarif eden 97 farklı eskimo terimi listelemiş. Bu terimler arasında çok farklı şeylerde var. Fakat Yahoo askta soruları cevaplayan kişiler bir süre sonra bunun şakacı birinin işi olduğunu çözmüşler. Bazı kelimeler doğru olamayacak kadar iyiymiş.

Neyse benim asıl takıldığım nokta http://ask.yahoo.com adresinin verdiği hizmette. Benim bildiğim Google'ın Answers isimli hizmetinde sorduğunuz sorulara sizin belirlediğiniz bir ücret karşılığı cevap bulunuyordu. Ancak gördüğüm kadarıyla Yahoo'nun hizmeti tamamen ücretsiz. Rekabetin gittikçe artması bizim gibi evrenin bilinmeyenlerini araştıran insanlar için gittikçe işe yarayan bir şey olmaya başladı. Bir de Türkiye'de Telekomla rekabet eden birşeyler çıksa da internetimiz imrendiğimiz Batı'nın hız seviyelerine ulaşsa ve milletçe daha fazla chat, daha fazla forum muhabbeti yapabilsek ne iyi olur değil mi?

Tomcat üzerinde servlet geliştirme

Java ile web programlamaya başlarken yapılan ilk işlerden biri Servlet öğrenmeye başlamaktır. Bunun için hemen işe Tomcat kurup basit bir örnekle başlamak gerekiyor. Bu yüzden bir örnekle Tomcat ve Servlet ilişkisini anlatayım dedim. Buradaki çalışma sadece başlamak isteyenler için bir çalışmadır. Daha gelişmiş ve daha iyi Web programları geliştirmek için daha ayrıntılı incelemeler, okumalar ve çalışmalar yapılması gerekiyor. JSP, Struts, Hibernate, Spring, JSF kavramları daha karmaşık ve gelişmiş web programlama için öğrenilmesi gereken kavramlar. Benim bu yazıyı yazmdaki amacım çok basit web programlarını bireysel olarak geliştirecek olanlara başlamak için bir şeyler göstermek. Daha fazlası için maalesef iyi bir ingilizce ve bol bol kaynak gerekmektedir. Kısa bir sürede uzman olmak kolay değildir.

Gelelim ne Servleti yapacağımıza, çok basit bir örnekle başlayalım. HTML sayfasında girilen iki sayıyı toplayıp ekrana yazan bir Servlet örneği yapalım.
HTML geliştirmeyi en azından HTML sayfası yapmayı bildiğinizi varsayıyorum. HTML içerisindeki form nesnelerinin ne anlama geldiğini, POST-GET aktarımlarının ne demek olduğunu da bildiğinizi varsayıyorum. Bilmiyorsanız araştırmanızı tavsiye ederim. Bu konuyla ilgili olarak web betik (script) dillerinde de bunların bilinmesi gerekliliğinden dolayı bu konuyla ilgili (örneğin nasıl bir sayaç yaparım veya nasıl bir ziyaretçi defteri yaparım) gibi konularda işin HTML kısmında bunları açıklayan Türkçe kaynaklar bulabilirsiniz.

Tamam bu kadar açıklama yeter. Gelelim yapmamız gerekenlere.


Bize bir uygulama sunucusu gerekiyor. Uygulama sunucusu ürettiğimiz servletleri koyup çalıştırıp sunmamız için gerekmektedir. Elbette bunların çok daha karmaşık görevleride vardır ama bize gereken yapacağımız servleti çalıştırmak. Bu kadar basit. O zaman hemen kuralım. Ben
Tomcat 5.028 Core çalıştırılabilir Windows dosyasını indirip bilgisayara kurdum. Karşınıza şifre soran bir yer çıkacaktır. Buraya ne yazdığınızı unutmayın. Bu şifre işinize ileride yarayacaktır. Eğer belirtilen portta başka bir uygulama çalıştırmıyorsanız bırakın olduğu gibi kalsın. Değiştirdiğiniz port sizin servletlere erişeceğiniz porttur.

Hemen HTML dosyamızı yaratalım ve erişebileceğimiz bir yere koyalım.
İlk önce C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps dizinine bir deneme dizini yaratıyoruz. Altınada WEB-INF dizini yaratıyoruz. Daha sonra deneme dizini altında aşağıda gösterdiğim index.html dosyasını yaratıyoruz. HTML Dosyası:
<form action="Topla" method="post">
Birinci Sayi:<input name="sayi1" type="text"><br>
İkinci Sayi:<input name="sayi2" type="text"><br>
<input type="submit">
</form>

Daha sonra bu dosyanın çalışıp çalışmadığını kontrol edelim: tarayıcımızı açıp adres çubuğuna http://localhost:8080/deneme girelim ve deneyelim. Buradaki 8080 yerine eğer değiştirdiyseniz portu girin. Eğer herhangi bir şey açılmazsa Tomcat kapalı olabilir. O yüzden Tomcat servisini başlatalım. Taskbar'da Tomcat'in ikonu var ona sağ tıklayarak Start Service ile başlatabilirsiniz. Öyle bir şey bulamazsanız Başlat->Programlar->Apache Tomcat 5.0->Configure Tomcat diyebilirsiniz. Açılan pencereden Tomcat'in çalışma şeklini belirleyebilir (Ben manual tercih ediyorum, kullanmıyorken boşuna çalışmasın) başlatıp kapatabilirsiniz.
Eğer herşey doğru çalısırsa şu aşağıdaki resmi görmeniz gerekiyor:
Bunun anlamı Tomcat'i doğru kurduk ve çalıştırabildik. Tomcat'i kurduk ve çalıştırdık şimdi ne yapacağız? Elbette bizim sorgulama düğmesine tıklandığı zaman cevap verecek olan Servletimizi yazacağız.

Servletimiz ne yapacak?
HTML Sayfasından gelen iki sayıyı okuyacak ve bu sayıları toplayıp ekrana yazacak.

Çalışacak olan Servlet şu şekildedir:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

// Servletlerin hepsi HttpServlet nesnesinden turemelidir
// javax.servlet.* paketi C:\Program Files\Apache
// Software Foundation\Tomcat //5.0\common\lib dizini
// altinda servlet-api.jar kutuphanesidir.
// Bunu projelerin classpathine eklemek gerekli.

public class Topla extends HttpServlet {
// Form methodumuz post oldugu icin doPost metodunda karsiliyoruz
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

try{
// request nesnesini formlardan gelen verileri okumak icin
// kullanabiliriz
// 1. Sayiyi okuyoruz formda verdigimiz name degerini aynen kullaniyoruz
int sayi1 = Integer.parseInt(request.getParameter("sayi1"));
// 1. Sayiyi okuyoruz formda verdigimiz name degerini aynen kullaniyoruz
int sayi2 = Integer.parseInt(request.getParameter("sayi2"));

int toplam = sayi1 + sayi2;

// response nesnesini cikti tipini vb. seyleri belirlemek icin
// kullaniriz
// Ciktimiz html tipinde olacak
response.setContentType("text/html");

// Ekrana yazmak icin out nesnesini kullaniyoruz
PrintWriter out = response.getWriter();
// Ekrana sonucu yazalim
out.println(sayi1 + "+" + sayi2 + "=" + toplam);
// yazma islemini bitirelim
out.flush();
out.close();
}catch(Exception e){
e.printStackTrace(response.getWriter());
}
}
}

Bu sınıfı doğru bir şekilde derledikten sonra oluşan Topla.class dosyasını daha önce oluşturmuş olduğumuz C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\deneme\WEB-INF dizini altında oluşturduğumuz classes dizini altına kopyalıyoruz. Şimdi adres satırına http://localhost:8080/deneme/ girip HTML sayfasını açalım, sayıları girip sorgumuzu gönderelim. Sonuçta aşağıdaki sayfa gözükebilir:

Bunun anlamı Tomcat'in Servletimizi tanımamasıdır. Tanıtmak için WEB-INF dizinimizin altına web.xml dosyası oluşturup eklememiz gerekiyor. web.xml dosyası bizim Web uygulamamızın tanımlayıcısıdır. Onun içeriği aşağıdaki şekilde olmalıdır:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>Topla</servlet-name>
<display-name>Topla</display-name>
<servlet-class>Topla</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Topla</servlet-name>
<url-pattern>/Topla</url-pattern>
</servlet-mapping>
</web-app>

Bu dosyayı da yarattıktan sonra Tomcat Manager'dan (Kullanıcı adı ve şifreyi biliyorsunuz :) ) web uygulamamızı yeniden yükleyip Tomcat'in Servletimizi tanımasını sağlıyoruz. Aşağıdaki resimde başarılı giriş yaptığım Tomcat Manager var.

Herşey doğru çalıştıktan sonra Sorgulama yaptığımızda sayılar toplanıp ekrana basılacaktır. Aşağıda doğru çalışan uygulamanın resmi var:

Eğer yukarıdaki gibi bir doğru sonuç üreten uygulamanız olduysa tebrikler, ilk servletinizi başarıyla tamamladınız demektir. Darısı daha karmaşık işler yapabildiğiniz servletler yazmanıza.

Kaynaklar:Tomcat 5.0 Kullanıcı Belgesi
http://www.onjava.com/pub/a/onjava/2001/04/19/tomcat.html?page=1

Yeni Nesil RFID (Gen 2)

Tedarik zincirinde nesnelerin konumunun belirlenmesi ve takibi için RFID nin kullanım oranı artması bu teknolojinin çalışma yapısı ve kullandığı kaynaklar üzerinde odaklanılmasına neden olmuştur.

Bu doğrultuda atılan adımlardan sonuncusu, okuyucu ve etiketler arasındaki iletişimin nasıl sağlanacağını tanımlayan UHF protokolü için geliştirilen bir standart oldu. Bu ikinci nesil hava arayüzü protokolü genellikle “Gen 2” olarak bilinir ve elektronik ürün kodu (Electronic Product Code (EPC)) teknolojisinin yürütücülüğü ile bilinen standartlar organizasyonu EPCglobal firması ile anlaşmalı 60 firma tarafından geliştirilmiştir.

İkinci nesli (Gen2) önemli yapan birkaç unsur vardır. Birincisi, ortaya çıkarılabilecek RFID altyapı elemanlarının, dünya çapında birlikte kullanılabilirliğini de sağlayarak, temellerini oluşturur. Ayrıca şu an kullanılan “Class 0” ve “Class 1” okuyucu ve etiketlerle karşılaştırıldığında daha hızlı okuyabilme özelliği ve kısıtlara karşı daha az duyarlılık gibi işlevsel ilerlemeleri beraberinde getirir. Güvenlik kavramı da daha gelişmiş şifreleme teknolojileri, şifre koruma ve yetkilendirme ile yapılmaktadır.

RFID’nin Geleceği

Birçok alanda kullanılabilen RFID “tag”ları ve okuyucuların, mobil öğrenmenin temel taşlarından olan taşınabilir bilgisayarlar ve cep bilgisayarları ile birleştirilmesiyle, öğrenme sürecine çevresel farkındalık, uyarlanabilirlik ve tepki verebilme yeteneğinin de kazandırılabilmesi mümkün olacak ve öğrencilerin konum bilgilerine göre ayrı ayrı öğrenme içeriklerine ulaşabilmesi sağlanabilecektir.

Radio Frequency Identification (RFID) halen gelişmekte olan bir teknoloji olduğundan kullanım modelleri ve bütünleşik mimarisi sürekli değişmektedir. RFID hzlı bir şekilde geleceğe hazırlanmakta; teknolojik gelişmeler, endüstriyel standartlardaki gelişmeler ve bu alana yapılan yatırımlar da RFID yi parlak bir geleceğin beklediğini işaret etmektedir.

Birbiriyle uyumsuz RFID standartları bu teknolojinin daha yavaş büyümesine sebep olmaktadır. Çoğu öncü RFID üreticisi kendi sistemini farklı frekans ve protokollerle üretmektedir. Yinede hem ABD’de hem de Avrupa’da bazı kurumlar RFID kullanımı için standartlar geliştirmeye çalışmaktadır.

RFID kullanımında küresellik gözönünde bulundurulmalı, RFID veri yapısı standarlara uygun olmalıdır. Standartların kullanımı okuyucu ve etiketlerin fiyatlarını düşüreceği gibi yeni buluşlarında artmasını sağlayacaktır. Bugün RFID kullanılan en yaygın standart “electronic product code (EPC)” olarak bilinen elektronik ürün kodudur.

Bugün RFID çalışmaları yönünü, radyo vericilerinin daha iyi yayın yapmasını sağlayabilcek olan Nano teknoloji kullanmaya doğrultmuştur.

RFID teknolojisi, hücresel telefonlardan sonra en hızlı gelişecek kablosuz teknoloji olarak görülmektedir ve 2009 yılına kadar %120 lik bir artış beklenmektedir. RFID kullanımının yaygınlaşması için anahtar gereklilik 0.3-0.5 Dolar civarında olan tag fiyatlarının düşmesidir.Nano teknolojinin bu seviyeyi 0.05 Dolara kadar düşürmesi ve RFID’nin yaygın kullanımını sağlaması beklenmektedir.

RFID tagların bir çoğu bakır veya alüminyum antenler kullanmaktadır. Nano teknoloji üreticileri ise bu antenleri nano boyutlarda parçalardan oluşan mürekkep baskı kullanarak yapmayı başarmak için uğraşmaktadırlar. Kağıt üzerine antanler basmak dah hızlı ve ucuz üretim sağlayacaktır.

RFID taglarn maliyetinin yarısını üzerlerindeki çipler oluşturmaktadır, bu nedenle araştırmalar bu çip kullanım yönteminin nano boyutlarda çözülmesi üzerine çalışmaktadırlar.

RFID mikro çiplerin kapasite attırımı konusunda ise Micromem firması “magnetic RAM” veya MRAM üzerinde çalışmaktadır. MRAM, RFID teknolojisine büyük yenilikler ve fırsatlar getirecektir. Elektrik enerjisini saklamak mantığına dayalı varolan bilgisayar belleklerinin aksine, MRAM, nano boyutlardaki manyetik bit dizileri ile bilgiyi saklar. MRAM üzerine yazma işlemi, her bir bit’in manyetik kutuplarını değiştirerek yapılır ve bu değer elektrik gereksinimi duymadan saklanabilir.

Bunun yanında, “flash memory” olarak tabir edilen hafıza cihazlarının aksine MRAM ler radyasyona karşı da dirençlidirler. Bu özelliği ile MRAMlerin, havayolları ve askeri alanlar gibi yerlerde bulunabilen X- ışını uygulamalarında kullanılabilirlikleri daha yüksektir.

Gelecekteki nanoteknoloji uygulamaları, mürekkep tabanlı RFID devrelerini mümkün kılarak silikon çip gereksinimini ortadan kaldırabilecektir. Bunun en iyi örneği tamamen mürekkepten geliştirilen bir prototip olan “Organic ID” dir ve maliyeti 0.01 doların altındadır. Organic ID’nin 5-10 yıl arasında yaygınlaşması beklenmektedir.

RFID, insanların, taşıdıklarının veya satın aldıklarının uzaktan ve habersiz izlenebilmelerini sağlayabildiği için özel yaşamı tehdit unsuru olarak görülebilmektedir ve kullanım karşıtları da bulunmaktadır. Ancak geliştiriciler ikinci nesil RFID’nin bu konuları da dikkate alarak gerçekleştirildiğini söylemektedirler; yeni nesil RFID etiketleri istenildiğinde okunamaz veya bir daha kullanılamaz hale getirilebilmektedirler.

RFID teknolojisi, konum bilgisinin kullanılması yoluyla öğrenme içeriğinin tek birey için uyarlanarak öğrenmenin daha etkin yapılabilmesini sağlayacak, dolayısıyla öğrenme sürecinin verimliliğini arttıracaktır.


Kaynaklar:

http://www-128.ibm.com/developerworks/wireless/library/wi-rfid/ http://tech.monstersandcritics.com/news/article_1006608.php/Nano_World_Nano_will_boost_RFID_tags