14 Aralık 2015 Pazartesi

OpenShift Veritabanı Bağlantı Ayarları (Hibernate - Mysql)



Daha önceleri yazdığım bir yazımda Java EE projelerini yükleyip test edebileceğimiz OpenShift ve Jelastic bulut sistemlerinden kendimce bahsetmiştim. Sonrasında da basit bir uygulamayı upload etmiştim. Bu seferde yine basit bir proje örneğiyle Openshift in bize sağladığı MYSQL ile projemdeki Hibernate arasındaki konfigrasyonunu yaptım. Aşağıda bahsettiğim yazıya ve sonrasında da yaptığım küçük uygulamaların videolarına bakabilirsiniz. Faydalı olması dileğiyle , iyi çalışmalar.

http://www.oguvenir.com/2015/04/openshift-ve-jelastic.html



4 Aralık 2015 Cuma

D3 Js Stacked-to-Grouped Bars



Daha önce D3 js kullanarak yaptığım basit örnekleri paylaşmıştım. Bu yazımda da bir çalışma için yaptığım ve sonradan kullanılmaması tercih edilen bir grafiği paylaşıyorum. Bu grafik aşağıdaki linkte bulunan adresten alıp kendi JSON verime uygun olarak düzenledim.

http://bl.ocks.org/mbostock/3943967

Düzenlemesini yaptığım bu grafik değişen JSON verisine göre şekil almaktadır yani dinamik yapıdadır. Aynı veri üzerinden hem Stack hem de Group Bar Chart grafiği sorunsuz çizilmektedir. Bunlarla beraber isteğe , yeteneğe ve hayal gücüne göre daha da geliştirilebilir.

24 Kasım 2015 Salı

Hibernate 5 x Ayarlarının Yapılması



Yaptığım çalışmaların çoğunda Hibernate 4.3 kullanıyorum ve NetBeans sayesinde kütüphanelerimi kolayca ekleyip gerekli ayarlamaları hızlıca yapabiliyorum. Bu sefer hazırdan vazgeçip hiç kullanmadığım halde Maven ile Hibernate ayarlamasını yapmaya çalışmam gerekti. Bunu yaparken de Hibernate ' nin 5.0.4 Final sürümünü kullandım. 

Aşağıda JSF + PrimeFaces ve Hibernate  ile birlikte oluşturduğum pom.xml dosyası bulunuyor. 



Buraya kadar sıkıntı yok. Ancak NetBeans ile otomatik HibernateUtil oluşturduğumuzda hata veriyor. Hibernate 5 x sürümüyle beraber AnnotationConfiguration silmiş. Bu durumda SessionFactory i belirtildiği şekilde tanımlamamız gerekiyor. Bunu yapabilmek için aşağıdaki linkten gerekli açıklamaları görebilir veya altta benim hazırladığım koddan faydalanabilirsiniz.

https://github.com/hibernate/hibernate-orm/blob/5.0/migration-guide.adoc



İlk aşamada ayarların doğruluğunu kontrol ederseniz çalışmayabilir. Böyle bir şey olmaması için build edip sonra kodlarınızı ekleyip sorgu işlemlerine başlayabilirsiniz.

private SessionFactory sf = SesFactory.getSessionFactory();//new MetadataSources(registry).buildMetadata().buildSessionFactory();

5 Kasım 2015 Perşembe

D3 Js Grup Bar Chart Örneği



Geçtiğimiz haftalarda D3 js hakkında bir giriş yaptıktan sonra küçük bir örnek yapmıştım. Bu yazımda da diğer yazımın devamı niteliğinde değil , direk yaptığım orta düzeyli bir grup bar chart örneğini  sizinle paylaşmak istedim. Bu yaptığım çalışmayı linkteki grouped bar chart grafiğini geliştirerek yaptım.

Linkteki örnekte random data üretip buna göre grafiği oluşturuyor. Burada m ve n değerlerini değiştirdiğimiz zaman x ve y eksenlerindeki değerlerinin ,  bar boyutunun  , grup içerisindeki bar sayısını arttırdığımızda renk dağılımının değiştiğini görebiliriz.

Ben bu örneğin üzerine veriyi Json dan alacak şekilde değiştirdim , sağ üst köşeye legend ekledim ki bu legend değerleri de Json içerisindeki değerlerden dinamik olarak okunmaktadır. Bunun dışında birde tooltip ekledim. Sonuçta aşağıdaki gibi bir grafik elde ettim. Tabloyu test etmek için sekme değişkeninin içeriğini a_c , a_b gibi değiştirmeniz yeterlidir.



Şimdilik bu kadar diğer yazıda görüşmek üzere!

29 Ekim 2015 Perşembe

R dplyr kütüphanesi


Dplyr R programlama dilinde en çok kullanılan kütüphanelerden birisidir. Bu kütüphanenin temel işlevi veri işlemeyi (data manipulation) son derece kolaylaştırmasıdır. Herhangi bir veri tabanı üzerinde sorgu yazmış kişiler için bu kütüphaneyi anlamak ve kullanmak hiçte zor olmayacaktır. Aradaki benzerliği şöyle açıklayayım;

Örneğin bizim veri tabanımızda tablolar ve bu tabloların içerisinde de kayıtlarımız mevcuttur. Biz SQL komutları ile bu verilere erişebilir , sıralayabilir , gruplayabilir , belli kriterlere sahip olanları getirebilir ve daha birçok işlemi yapabiliriz. R içerisinde de kendi oluşturduğumuz veriler ve dışarıdan okuduğumuz csv , txt vb. veri setlerinin içerisinde de benzer işlevleri yapmamızı sağlayan kütüphane "dplyr" dir. Bu yüzden kullanımı çok yaygındır.

Kodlara göz atmadan önce R içerisine bu kütüphaneyi indirmeliyiz , bunun için aşağıdaki kodu kullanabiliriz ya da paket yükleyiciden indirebiliriz;

install.packages("dplyr")

Ben Linux kullanıyorum ve R'ı ilk yüklediğimde 3.0.2 sürümünü yükledi ve bu sürümde kütüphaneyi kullanamıyoruz. Eğer böyle bir sorunla karşılaşırsanız aşağıdaki linkte anlatıldığı gibi R'ı 3.1.0 a yükseltebilirsiniz;

http://sysads.co.uk/2014/06/install-r-base-3-1-0-ubuntu-14-04/

İndirdikten sonra da library(dplyr) ile projemize dahil delim ve R içerisinde hazır bulunan "mtcars" verisi üzerinde birkaç komut yazalım.

> mtcars%>%
+ select(hp)

Yukarıdaki komutu inceleyecek olursak öncelikle verimizi seçiyoruz sonrada %>% ile alt satıra geçiyoruz. Bu işaret sonra anlamına gelir ve bir önceki işlemden sonra yazılan işlemi gerçekleştirileceğini belirtir. Daha sonra select ile hangi sütunun getirileceğini belirtiyoruz tıpkı SQL de olduğu gibi. Burada sadece hp(horse power) sütununa ait veriler getiriliyor.

> mtcars%>%
+ select(hp) %>%
+ filter(hp > 100)

Buradaki diğer bir komut filter , bununla veri içerisinde filtre uyguluyoruz ve bize hp değeri 100 den büyük olan verileri getiriyor. SQL deki where komutu gibi.

> mtcars%>%
+ select(hp,am)%>%
+ filter(hp>=100)%>%
+ arrange(am,hp)

Diğer bir komutumuz arrange , bu komut sonuç olarak dönderilen veriyi sıralı halde getirir. SQL deki order by gibi.

> mtcars%>%
+ select(hp,am)%>%
+ filter(hp>=100)%>%
+ arrange(am,desc(hp))

Burada da hp nin büyükten küçüğe doğru sıralanmış hali bulunuyor.

> mtcars %>% 
+ mutate (test = hp * 2)

Diğer bir komutta mutate. Bunun ile veri üzerinde işlemler yapabilir ve bu işlemleri yeni bir sütun olarak veriye ekleyebiliriz.  Yukarıdaki komutu inceleyecek olursak test adında bir sütun oluşturuluyor ve içerisine hp değerinin iki katı ekleniyor. Burada veri üzerinde birçok fonksiyonu kullanarak işlem yaptırabiliriz.

> mtcars %>%
+ summarise(sum_hp = mean(hp), sum_am = mean(am))

summarise komutu istatistiksel özet oluşturur.

> mtcars %>%group_by(carb)%>%arrange(carb)

group_by ın ne işe yaradığını söylemiyorum , çok gizli!

Şimdilik bu kadar daha detaylı bilgi için aşağıdaki linki inceleyebilirsiniz;

http://genomicsclass.github.io/book/pages/dplyr_tutorial.html

22 Ekim 2015 Perşembe

D3 Js Giriş




D3 Js verilerimizi görselleştirmeye yarayan bir çok Javascript kütüphanesinden birisidir. Bu kütüphane ile büyük veriler için gelişmiş ve etkileşimli grafikler çizmek mümkündür. Yalnız bu kütüphane bize diğerlerinde olduğu gibi hazır grafikler sunmaz , bizim kendi verilerimize ve  yeteneklerimize göre sıfırdan grafikler çizmemize olanak sağlar. Her şeyi sıfırdan yaptığımız içinde grafiği tasarlamak ve gelen farklı veri tiplerine uyumlu hale getirmek başlangıçta sıkıntılı olabilir. Kod yazdıkça işin mantığını kavramak , güzel ve özelleştirilmiş grafikler elde etmek mümkün olacaktır.

D3 kullanarak oluşturduğumuz grafikler SVG formatındadır. Html , Css ve D3 kullanarak çok farklı grafikler elde etmek mümkündür. Aşağıdaki linkten kendi sitesindeki örnekleri inceleyebilirsiniz.

https://github.com/mbostock/d3/wiki/Gallery

Başlangıç için aşağıdaki gibi basit bir örnekle başlayalım , sonraki yazılarımda da D3 ile daha gelişmiş grafikler yapmaya başlarız. Bu arada SVG nin koordinat ekseni sol üst köşeden başlar yani sol üst köşe (0,0) noktasıdır ve "Y" ekseni aşağı doğru artmaktadır.


9 Ekim 2015 Cuma

JSF Form Sorunu?


JSF ile bir şeyler yapmaya çalışırken en çok sıkıntı yaşadığım yerlerden biriside dialog içerisinde oluşturduğum form verilerini Managed Bean lere aktarmak oldu. Anlam veremediğim şekilde veriler Bean içerisine aktarılamıyor. Basit uygulamalarda böyle bir sorunla genelde karşılaşmadım ancak çalışma biraz daha büyüyüp olgunlaşınca böyle bir hata ile çok karşılaşmaya başladım. İnternette yaptığım araştırmalar sonucu bu problemi aşmayı becerebildim.

Aslında çözümü oldukça basit , diyalog içerisinde yeni bir h:form  ekliyoruz ve commandButton içerisinde de process = "@form" yazdığımızda sorunsuz bir şekilde çalışmasını sağlamış oluyoruz.



Bazen bunu yapmadan sadece process = "@this"  şeklinde commandButton içerisine yazarsak yine bir çözüm olabiliyor , deneyip görmek lazım.

Bu aralar sıkça aynı hata ile karşılaşıp çözümü sürekli unuttuğum için en azından kendime hatırlatma olarak buraya not düşmüş oldum. Şimdilik bu kadar size iyi çalışmalar.

27 Eylül 2015 Pazar

Tomcat 7 Omnifaces Sorunu


Tomcat 7.0.61 üzerinde geliştirdiğim java web uygulamama Omnifaces 2.1 kütüphanseini eklediğim anda deploy hatası verdi. Aynı işlemi Glassfish 4.1 de yaptığımda ise herhangi bir sıkıntı olmadı. Bunun üzerine küçük bir araştırma yaptım ve sorun çözüldü. Çözüm aşağıdaki linkte mevcut;

http://stackoverflow.com/questions/31899406/omnifaces-exception-on-deployment-on-tomcat-7

Yukarıda da anlatıldığı gibi önce weld-servlet-2.2.9.Final.jar kütüphanesini indirip projemize dahil ediyoruz.  Sonra META-INF altındaki context.xml içerisine


ekliyoruz. Bir de WEB-INF içerisinde boş bir beans.xml dosyası oluşturduktan sonra projemiz derlenecektir. Artık Omnifaces'in sağladığı kolaylıklardan faydalanabiliriz.

23 Eylül 2015 Çarşamba

R Shiny File Upload


R ve Shiny kullanarak son derece kolay bir şekilde yaptığım dosya yükleme uygulaması. Bu küçük uygulama ile yüklenen dosyadaki verileri kolay bir şekilde görebilir veriler için en büyük , en küçük , medyan , varyans , standart sapma ve standart hata gibi temel işlemlerin sonucunu görebiliriz.






16 Ağustos 2015 Pazar

JSF ManagedProperty

Bu yazımda son derece faydalı olduğunu düşündüğüm 'ManagedProperty'  anotasyonunu elimden geldiğince açıklamaya çalışacağım. Kısa bir örnek vererek başlayayım;

Bir sitede kullanıcı girişi olduğunu ve giriş yaparken kullanıcı bilgilerini userBean de tuttuğumuzu varsayalım. Sitenin işleyişine göre bir sayfa içerisinde birden çok Managed Bean kullanmamız mümkün. Kullanıcının girişini onaylayıp anasayfaya yönlendirdik. Anasayfada farklı bir Bean içerisinde kullanıcı bilgilerine göre veritabanından veri çekmemiz gerekiyor. İşte böyle bir durumda bu kullandığımız Bean içerisine userBean deki kullanıcı verilerini diğer Bean içerisine aktarmamız gerekiyor. 'ManagedProperty' anotasyonu tam olarak bu işe yarıyor. Kullanımı oldukça kolay. Ama verinin aktarıldığı Managed Beanler için kullandığımız Scope türüne dikkat edelim , aksi taktirde hata almamız muhtemeldir.

Şimdi küçük bir örnekle nasıl yapıldığını görelim. Bu yaptığım örnekte User adında bir POJO var ve bu POJO da kullanıcının adı ve soyadı yer alıyor. Web sayfamda bir inputText , commandButton ve outputLabel var. inputText içerisine aldığım veriyi firstBean içerisinde saklıyorum. Butona bastığımda ise outputLabel içerisine secondBean içerisine aktardığım firstBean deki veriyi getiriyorum. Anlatırken karmaşık gelmiş olabilir ancak aşağıdaki kodları incelediğinizde ne kadar kolay olduğunu görebilirsiniz.






Şimdilik bu kadar diğer yazılarda görüşmek üzere!

4 Ağustos 2015 Salı

R Shiny ve İlk Uygulama


Yaklaşık iki haftadır R ve Shiny öğrenmeye çalışıyorum ve şimdiye kadar 4-5 adet küçük uygulama yaptım. Bu yazımda R dili hakkında yaptığım ve kafamda oluşan görüşlerden bahsedeceğim. Yazının sonunda da ilk kez başlayanlar ya da nasıl bir şey olduğunu görmek isteyenler için küçük bir uygulama videosu da çektim.

Öncelikle R bir programlama dili ve Shiny de R dilini kullanarak web projeleri yapmamızı sağlayan frameworktür. R dili açık kaynak bir dildir. Açık kaynak olmanın bir avantajı olarak birçok konuda hazırlanmış yığınla kütüphane mevcut. Bu kütüphanelerle birçok işimizi hızlı bir şekilde halledebiliriz. Bu dili genelde istatistikçiler kullanıyor veya daha çok onlara hitap ediyor diyebilirim.(yaptığım araştırmalara ve duyumlarıma göre) İstatistikçilere hitap ettiği içinde görsel ve grafiklere bu dilde çok önem verilmiş. Bunun bir sonucu olarak da birkaç satır kod ile diğer dillerde çizdirilmesi zor olan grafikleri kullanıcıya yansıtmak oldukça kolay. Aynı zamanda dışarıdan csv , xls gibi dökümanları kolayca ekleyip veriler üzerinde işlem yapabiliyoruz.

Bu dili bilgisayarınıza yükleyip geliştirmeye başlayabilmek için öncelikle R yi bilgisayarınıza indirip kurmanız ardında da R Studio yu indirip kurmanız gerekiyor.

https://cran.r-project.org/

https://www.rstudio.com/

Bu aşamalar tamam ise sonrası çok daha eğlenceli olacaktır. Derleyici çok sade ama oldukça kullanışlı , aşağıdaki resmi inceleyebilirsiniz. Sağında solunda ne var anlatmıyorum zaten bakınca görebilirsiniz.


R dilinin kullanımı bana Matlab a benzer geldi , yine yaptığım araştırmalarda normal programlama dillerine göre yavaş olduğunu belirtiyorlar.

Derleyici üzerinde hazır kütüphaneleri hemen indirip kurabiliyoruz. Bunun için Tools menüsünden install packages i seçmemiz yeterli olacaktır.

Birazda Shiny den bahsedelim. Shiny R dilini kullanarak Web sitesi yapmamıza olanak sağlıyor. Üstteki paragrafta anlatıldığı gibi Shiny kütüphanesini indirip direk Web uygulaması geliştirmeye de başlayabiliriz.

Shiny nin sloganı No HTML, CSS, or JavaScript knowledge required  . Dediği gibi hiçbirini bilmeye gerek yok. Bir web projesi yaptığınızı düşünün ama ne Javascript ne Css ne de HTML kodu var. Evet başta bana da ilginç gelmişti ama alıştım. Bu kütüphaneyi yapan vatandaş Bootstrap ile R yi birleştimiş ve hiç html bilmeden web projesi yapmamızı sağlamış. Bootstrap olması hem tema uygulama hem de responsive yapıda olması açısından son derece kullanışlı olmuş. Ancak her şeyi kütüphanelerle yapamayız , illaki Css , Javascript veya HTML koduna müdahale etmemiz gerekebilir. İşte böyle durumlarda ciddi sıkıntılar yaşabiliriz. Buna dairde çözümler var ancak biraz araştırma yapmak zorunda kalabiliriz.

Bu yazıyı yazmadan önce R dili nedir ne değildir diye yerli kaynaklara bir göz attım. Bazıları zor felan demiş bence alakası yok. Çok kısa sürede öğrenilebileceğini düşünüyorum. 

Şimdi uygulama zamanı , kolay gelsin ;


5 Temmuz 2015 Pazar

JSF ui composition & graphicImage & outputStylesheet



Bu yazımın konusu başlıkta da görebileceğiniz gibi birkaç temel JSF bileşenin kullanımı ve bize sağladığı faydalardır. Bu bileşenler haricinde bir çok faydalı bileşende mevcut ancak bu yazıda bunları anlatmamın sebebi JSF ile proje geliştirirken bu bileşenleri kullandığımızda yaptığımız işin karmaşıklığını azaltacak olmasıdır. Şimdi sırası ile göz atalım;

1. ui:composition & ui:include


Bir web projesi yaparken genelde sayfalarda aynı kodların sürekli tekrar tekrar yazılması istenmeyen bir durumdur. Örneğin 10 farklı sayfanız var ve bu sayfaların hepsinde de menubar olduğunu düşünelim. Tüm sayfalara tek tek menubar kodları ekleyeceğimize bir yerde menubar kodlarımız olsa ve tüm sayfalardan bu kodu çağırsak hem yazdığımız kod sayısı azalır hem de çalışmamız daha düzenli ve anlaşılır hale gelir. Diğer teknolojilerde buna Master Page deniliyor. Aynı yapı JSF içerisinde de mevcut ve kullanımı oldukça basit. Menubar örneğinden devam edecek olursak yeni bir sayfa oluşturarak etiketini ekledikten sonra içerisine birde etiketini ekleyerek menubar kodlarımızı yazıyoruz. etiketi içerisine yazdığımız bütün kodları artık diğer sayfalarımızdan çağırabiliriz. Bunun içinde etiketini kullanmamız ve "src" içerisine menubar kodlarımızı yazdığımız jsf page in adını ekleyerek çağırmamız gerekiyor. Hepsi bu kadar , anlatırken biraz karmaşık gelmiş olabilir ancak aşağıdaki kodlara bakarak kullanımının oldukça basit olduğunu görebilirsiniz.  

2. graphicImage & outputStylesheet


Çalışmamız içerisindeki css , javascript ve resimler için bildiğimiz HTML etiketlerini kullanabiliriz. Ancak çalışmamız bitti ve artık sunucumuza yükleme vakti geldiğinde CSS kodlarımızın çalışmadığını veya resimlerimizin yüklenemeyip kırık link görmemiz olası bir durumdur. Bu sorunların önüne geçebilmek için aşağıdaki gibi temel JSF etiketlerini kullanmamız isabetli olacaktır!

11 Haziran 2015 Perşembe

Aşı ve Kan Dolabı Sıcaklık Takip Sistemi


Uzun zamandır üzerinde çalıştığım çalışmam için ayırdığım sürenin sonuna geldim. Bu geçen süre içerisinde gerçek zamanlı sıcaklık takip sistemi gerçekleştirmeye çalıştım. Aşağıda da bu çalışmama ait açıklama sunum ve tanıtım videoları bulunmaktadır.

Aşı ve Kan Dolabı Sıcaklık Takip Sistemi

Birçok sağlık kuruluşunda depo halinde kan , aşı ve ilaç mevcut olarak bulunmaktadır.
Bunlar insan sağlığını doğrudan etkilediği için kontrollü şekilde saklanması
gerekmektedir. Sıcaklık değişimi ile aşı ve ilaçların özelliği bozulabilir , kanın ise
bakterilenmesine yol açabilir. Bu şekilde bozulmuş kan , aşı ve ilaçlar bireylere
verildiğinde doğrudan kişinin hayatını tehdit eder. Bu yüzden Sağlık Bakanlığı’nın da
bu konu ile ilgili sağlık kuruluşlarının kesinlikle uyması gereken şartnameleri
mevcuttur.

Kan ve Aşı dolapları kullanıcıların birçok işini kolaylaştırmaktadır ancak gerçek hayatta
karşılaşabileceğimiz sıkıntılar karşısında ciddi eksikleri bulunmaktadır. Örneğin alarm
devreye girdiği halde etrafta kimsenin olmamasından kaynaklanan sorunlar, sıcaklığın
artma ve azalma sürelerinin tam belirlenememesi veya güncel takip için dolabın
ekranını sürekli takip etmemiz gerekmesi ve en önemlisi de elektrik kesildiğinde bu
dolapların tüm fonksiyonlarının durması gibi açıkları mevcuttur.
Bu çalışmada Web ve Mobil cihazlar üzerinden güncel sıcaklık ve nem takibini
sağlayan kullanıcı dostu ara yüz tasarlanması, elektrik kesintisi olduğunda düşük güç
tüketimi sağlayan mikro denetleyici ile sıcaklık ve nem ölçümünün devam ettirilmesi,
ölçülen bu değerlerin her an (elektrik kesintisi olduğunda da) SD kart içerisine kayıt
edilmesi, sıcaklık değişiminde veya elektrik kesintisi gibi durumlarda Sesli Arama ,
SMS ve E-posta ile belirlenen kişilerin uyarılması, ölçülen değerlerin tasarlanana cihaz
üzerinde kendi ekranında görüntülenmesi, birden fazla sıcaklık/nem sensörü kullanarak
daha verimli ve hassas ölçüm yapılması hedeflenmektedir.

Günümüzde hastane ve eczanelerde bu kontrolü sağlamak için aşı ve kan dolapları
kullanılmaktadır. Bu dolapların teknik özellikleri ise aşağıdaki gibidir;

  • +4 dereceye ayarlanmış olarak gelirler. İdeal saklama sıcaklığı +2 - +8 derece aralığıdır.
  • Alarm sistemleri mevcuttur. Dolabın kapağı açık kaldığında veya sıcaklık değişiminde belirlenen aralıktan dışarı çıkmış ise sesli alarm sistemleri devreye girer.
  • Dijital bir ekranı mevcuttur ve kullanıcıyı bu ekran üzerinden bilgilendirirler.
  • Termometresi değişen hassasiyetlerde ölçüm yapabilmektedir.
  • Şifre ile korunmaktadır. Böylece sadece şifreyi bilen kişiler sıcaklık ayarını değiştirebilmektedir.

Proje kapsamında tüm bu sorunları çözecek şekilde aşağıda belirtilen amaçlar
gerçekleştirilecektir:
  • Web sitesi ve Mobil cihazlar üzerinden gerçek zamanlı sıcaklık ve nem takibini sağlayan kullanıcı dostu ara yüz tasarlanması
  • Elektrik kesintisi olduğunda düşük güç tüketimi sağlayan mikro denetleyici ile sıcaklık ve nem ölçümünün devam ettirilmesi
  • Ölçülen bu değerlerin her an (elektrik kesintisi olduğunda da) SD kart içerisine kayıt edilmesi
  • Sıcaklık değişiminde veya elektrik kesintisi gibi durumlarda Sesli Arama , SMS veya Mail ile belirlenen kişilerin uyarılması
  • Ölçülen değerlerin tasarlanan cihaz üzerinde kendi ekranında görüntülenmesi
  • Birden fazla sıcaklık/nem sensörü kullanarak daha verimli ve hassas ölçüm yapılması







11 Mayıs 2015 Pazartesi

Blogger Embed Gist



Blogger üzerinde blog yazmanın üst sıralara kolay tırmanma gibi çeşitli avantajları olabilir. Ama yazılım üzerine yazıyorsanız ve bloğa kod ekliyorsanız benim gibi çok sıkıntı çekmiş olmanız muhtemeldir. Blogger üzerine bir çok şekilde kod eklemeye yarayan script kodları var ama her ne hikmetse bunların bir türlü burada doğru dürüst çalıştıramadım. Bu scriptleri kullanırken C# , Java gibi dillerinin kodlarını derli toplu gösteriyor ama html , xml kodlarını eklediğimde ise yorumlayıp kodu bozarak gösteriyor. Yönetici panelinde Seçenekler kısmında HTML'i olduğu gibi göster seçeneği mevcut ancak o da doğru dürüst bir sonuç almama yaramadı.

Bu sebeplerden ötürü geçenlerde Blogger' a Gist (Github'ta tutabileceğimiz ve paylaşabileceğimiz kod parçaları) nasıl eklenir bunu detaylıca araştırdım ve sonunda aradığım adam akıllı çalışan bir javascript koduna ulaştım. Bu yazıyı yazmamın asıl sebebi de benzer sıkıntıları yaşayan arkadaşlara birçok alternatiften bir tanesini tanıtabilmektir.


Github Gist - Örnek xml


Yukarıda görüldüğü gibi xml için de sorunsuz çalışıyor. Üstelik github ın sade ve şık kod yapısı ile birlikte çalışıyor.

Açık kaynak bir çalışma olan bu projeye yine github üzerinden aşağıdaki linkten ulaşabilirsiniz. Bu linkten nasıl kullanıldığına göz atabilirsiniz. (Gösterdiği kodları sayfamıza ekleyip , oluşturduğumuz gistin id kısmını sayfaya eklediğimiz  kodlar içerisinde belirtiyoruz) Son derece kolay ve kullanışlı olduğunu söyleyebilirim.

https://github.com/blairvanderhoof/gist-embed

Şimdilik bu kadar , sizlere iyi çalışmalar!

5 Mayıs 2015 Salı

Youtube & Wordpress



İki yılı aşkın süredir edindiğim bilgileri , yaptığım uygulamaları kodları ile birlikte buradan yayınlamaya gayret ettim. Amacım benim öğrenirken sıkıntısını çektiğim işlerin nasıl yapılabileceğini paylaşarak aynı işlerle uğraşan kişilere faydalı olabilmekti. Verilerden anladığım kadarıyla iyi kötü birilerine katkıda bulunabilmişim. Bundan sonrada öğrendiğim yeni bilgileri , yaptığım uygulamaları yine buradan paylaşamaya devam edeceğim.

Tabi ki bu geçen zaman içerisinde yaptığım veya aktarmak istediğim bilgileri yazılarla aktarmak sıkıntı olmaya başladı. Yazdığım her bir yazı için uygulamaya ayırdığım vakit hariç en az bir saat zaman harcıyorum. Kısacası yazı yazmak zor bir iş , inanmayan oturup deneyebilir: ) Sayfalarca sürecek bir yazıyı 5-10 dakikalık bir video ile çok rahat karşıdakine aktarabiliriz diye düşünüyorum. Bu amaçla bir youtube kanalı açtım.

Aynı şekilde bir süredir yazılımcılık üzerine veya çeşitli alanlarda içimden geldiği gibi yazılar yazmak istiyordum. Bu blogun içeriğine ve yapısına uygun olmadığı için yeni bir blog hesabı oluşturdum. Bu yeni blogta daha çok kişisel görüşlerim , eleştirilerim vb. içerikli yazılar yazmayı hedefliyorum. İçerik olarak okuyan kişiye bilgi katacak şekilde yazılar yazmaya çabalıyorum.

Kısacası arkadaşlar 2 yeni hesap oluşturdum(Youtube & Wordpress) ve bu blogta dahil 3 kanal üzerinden elimden geldiğince bire şeyler paylaşamaya devam edeceğim. Sizleri de yeni kanallarıma beklerim! Kanal adreslerime aşağıdaki linklerden erişebilirsiniz;

Youtube Kanalım

Wordpress Bloğum

28 Nisan 2015 Salı

JSF Internationalization



Bu yazının temel konusu JSF ile geliştirdiğimiz bir web sitesi için dil desteği oluşturmaktır. Normalde yukarıdaki başlığı direk tarayıcımızda aratırsak bu işin nasıl yapıldığını benden daha iyi anlatan ingilizce kaynaklar bulabiliriz. Ama bu kaynaklarda Türkçe dil desteğinin nasıl sağlandığını bulmamız için biraz daha fazla araştırma yapmamız gerekiyor.

Şimdi dil desteğini nasıl yapabileceğimize bakalım;

Dil desteği için properties dosyaları oluşturmamız gerekiyor. Bunu java kodlarımızın bulunduğu dizine ekleyerek başlayalım.



Bu oluşturduğumuz properties dosyalarının içerisinde dillere göre belirlediğimiz kelimelerin karşılıkları olmalı ;



Daha sonra aşağıdaki gibi faces-config.xml dosyamıza default dil , desteklenen dilleri ve bu dillerin hangi dizinde bulunduğunu belirtiyoruz;


Ayarlamaları yaptıktan sonra aşağıdaki gibi dillerin değişmesini sağlayacak bir Managed Bean oluşturuyoruz;

Yukarıdaki new Locale şeklinde Türkçe'yi tanıtmalıyız. Son olarak xhtml sayfamızı da ekleyerek test edebiliriz!




Görülebileceği gibi sadece buton ve ortadaki label için ayarladığımız değerler otomatik olarak değişiyor.




18 Nisan 2015 Cumartesi

OpenShift ve Jelastic


          Belki Java EE öğrenmeye gayret ettik , kendimizce çalışmalar yaptık ama çalışmalarmızı hayata geçiremediğimiz zaman yaptığımız bu çalışmalar büyük ihtimalle kendi bilgisayarımızda kalıyor. Bir başkası görmüyor ve kullanmıyor. Belli bir süre sonunda da kodları saklamamış isek bir şekilde silinip gidiyor.

          Böyle durumlarda kendi yaptığımız Java EE uygulamalarını web ortamında test edebileceğimiz veya yayınlayabileceğimiz yerler(bulutlar) mevcut. Bunlara OpenShift ve Jelastic'i örnek verebiliriz. Bu yazımın temel konusu da aslında bu , hiçbir ücret ödemeden veritabanı dahil bir Java EE projesini nasıl webe taşırız bundan bahsetmeye çalışacağım.

          Öncelikle OpenShift ile başlayalım. Bu bir RedHat projesidir. RedHat grubunu ise bilen bilir , bilmeyenler için kısaca Java EE için JBoss Server ' ı geliştiren , RedHat Linux ile kurumsal çözümler sunan  , Linux ' u bile parayla satan sağlam bir ekiptir diyebilirim. Topluluğu bildiğim kadarıyla çok geniş. JBoss Server ücretsiz olması lazım. OpenShift'te geliştiricilerin 3 adet projelerini internet ortamına ücretsiz taşımalarına izin veren bir bulut bilişimdir. Burada yalnızca Java değil , Ruby , PHP , Node.js , Perl , Python ... gibi dillerde yazılan projeleri de yayınlayabiliyoruz. Server olarak Java için JBoss ve Tomcat mevcut. Veritabanı kısmında da MySQL , MongoDB , PostgreSQL , SQLite gibi alternatifler mevcut. Bunların yanı sıra Wordpress bloglarımızı da bu site üzerinden yayınlayabiliyoruz.  Ben burada Java EE için araştırma yaptığım için Java üzerinde duruyorum , diğer birçok dil ve platform desteği mevcut. Dileyen arkadaşlar ayrıca araştırabilirler.

https://www.openshift.com/

          Bu siteye ücretsiz üye olarak bize verdiği talimatlar doğrultusunda projelerimizi siteye yükleyerek hemen yayına koyabiliriz. Peki bu adamlar bu işi niye yapıyor , hayır olsun diye mi? Elbetteki hayır. Burada karşılıklı menfaat söz konusu. Bizlere sunduğu imkanların bir sınırı var. Kısacası bize diyor ki projeni yükle , veri tabanını da kullan projen 7/24 çalışsın sıkıntı yok. Bizde projemizi yükledik , proje tuttu ve bize verdiği bant genişliği veritabanı boyutu yetmemeye başladı. Bu durumda OpenShift bize diyor ki projen ve verilerin bizde kalsın , bizim şöyle paketlerimiz var aylık veya yıllık fiyatlarımız bunlar gel seninle anlaşalım. (Karşılıklı fayda galiba biyolojide buna mutualizm deniyordu.) Durum bundan ibaret , bizim ilgimizi çeken kısmı ise ücretsiz tarafı. 3 adet uygulamayı yükleyip ücretsiz bir şekilde kullanabiliriz.

          Bu arada atlamadan bu projelerin kodları GitHub a yükleniyor , yani kodlarınızı bir başkasının görmesi muhtemel. Bu yüzden yüklerken iki kere düşünün! Başlangıç için bir kaç araç yüklememiz gerekiyor. Ben Linux üzerinde bunları yaptım ama diğer işletim sistemleri için detaylı açıklamaları aşağıdaki linkten görebilirsiniz;

https://developers.openshift.com/en/getting-started-overview.html

          En kısa haliyle OpenShift böyle anlatabildim. Şimdi uygulama zamanı. Aşağıdaki videoda Ubuntu üzerinde oluşturduğum basit bir java ee uygulamasını (.war dosyasını) terminal üzerinden OpenShift ' e yüklemeyi gösterdim. Kendim denedim çalışıyor. Aşağıdaki linkte ise son çalışmamın kaba taslak anasayfa tasarımı bulunuyor , oraya da göz atabilirsiniz. Unutmadan bize verdiği domain de ".rhcloud" var.

http://test-oguvenir.rhcloud.com/Open/faces/home.xhtml



          Diğer bir yöntem ise Jelastic. Bu siteye de ücretsiz üye olup projelerimizi test edebilir veya direk parasını ödeyip yayınlamaya başlayabiliriz. Ücretsiz sürümü 2 hafta veriyor. İçerisinde Glassfish ve Tomcat sunucuları mevcut , veritabanı seçenekleri de bulunuyor. Ancak 2 hafta ücretsiz olması pekte bir işe yaramıyor. Eğer projemizi Glassfish üzerinde yazmış isek girip test edebiliriz , onun haricinde bana pek işlevsel gelmedi. 



          Şimdilik bahsedeceklerim bu kadar. Sizlere kolay gelsin!

11 Nisan 2015 Cumartesi

RFID Nedir?

Radio-Frequency Identification (RFID)
1.RFID Tarihçesi
            1945 yılında Leon Theremin Sovyetler Birliği için casusluk amacı ile ses dinleme cihazı üretmek için çalışmalar yapmıştır. Bunu gerçekleştirirken havadaki radyo dalgalarının belirli bir yüzeye çarptırıp  sese çevirmeye çalışmıştır. Bu çalışmalar esnasında bu dalgaların alıcı cihazda güç kaynağı olmamasına rağmen resenator (yankı) yapma özelliğinden faydalanmıştır. Buradaki pasif (passive) özelliği sebebiyle RFID teknolojisinin başlangıcı kabul edilebilir. Aşağıda bu cihazın resmi bulunmaktadır.
           Benzer teknolojileri Almanlar’da ikinci dünya savaşında kendi uçaklarını düşman uçaklarından ayırabilmek için kullanmışlardır.
            Mario Cordullo’nun 1973 yılında patentini aldığı passive radio transponder with memory çalışması ise modern RFID teknolojisinin gerçek atası olarak kabul edilmektedir.
2.RFID Nedir?
Radio Frequency Identification (RFID) ya da “Radyo Frekanslı Tanımla” şeklinde Türkçeleştirilirse; canlıları ya da nesneleri radyo dalgaları ile tanımlamak için kullanılan teknolojilere verilen genel isimdir. Radyo frekansı ile haberleşen ve içinde bilgi depolayabilen chip teknolojisi olarak da tanımlanabilir. Chip’ in kullandığı frekansa, hafızaya, haberleşmede kullanılan protokole ve ürünün şekline göre çok farklı RFID tipleri vardır. Bir RFID ürünü kart şeklinde olabileceği gibi, disk, tüp veya herhangi bir geometride de olabilir. Tüm bu ürünler TAG olarak adlandırılmaktadır. Bilgi alışverişi sırasında tamamen radyo frekansı kullanıldığı için temassız kontrol sistemi olarak da bilinmektedir. Bugün bilgi depolayabilen tanımlama için teknolojinin ulaştığı son noktadır denilebilir.
2.1.Tag (Etiket)
RFID bir okuyucu ve bir etiketten(tag) meydana gelen otomatik bir tanıma sistemidir. Bir RFID etiketi ise çip, güç kaynağı ve antenden oluşmaktadır. Etiket, bu sayede RFID okuyucularıyla iletişim kurabilir ve veri aktarıp alabilir. Günümüzde kullanım alanı oldukça geniş olduğu için bu tag lar da ihtiyaca yönelik olarak çeşitlilik göstermektedir. Bunlardan en yaygın olarak kullanılanı kart şeklindeki diyebiliriz. Bunlara içerisinde çip bulunduran kredi kartları , kimlik kartları , pasolar … şeklinde örneklendirebiliriz. Kartlar dışında da NFC sistemler ve bina girişlerinde kullanılan anahtarlıklar da farklı şekillerdeki taglara örnek verilebilir.
Tipik olarak RFID etiketi 2 KB’tan fazla bilgi alamaz. Ancak üzerinde bulunduğu cisim hakkında basit bilgileri kaydetmek için yeterlidir. Şirketler genelde 96 bit seri numarası alabilen basit etiketler kullanırlar. Bu basit etiketlerin hem üretimi kolaydır hem de ürünün paketi ile birlikte atılabilirler.
2.2.Reader (Okuyu)
             RFID okuyucular RFID etiketten gelen verileri okuyup bağlı olduğu mikro denetleyici veya bilgisayarın anlayabileceği şekilde radyo dalgalarını elektrik sinyallerine dönüştürür.
             RFID ürünleri farklı enerji bandında çalışan çeşitleri mevcuttur. Bu farklılığın gereği olarak tag ve reader çeşitleri de farklılaşmaktadır.
2.3 Frekans
Band
Regulations
Range
Data speed
Remarks
120–150kHz (LF)
Unregulated
10 cm
Low
Animal identification, factory data collection
13.56MHz (HF)

ISM band worldwide

10 cm - 1 m
Low to moderate
Smart cards (ISO/IEC 15693, ISO/IEC 14443 A,B). Non fully ISO compatible memory cards (Mifare Classic, iCLASS, Legic, Felica ...). Micro processor ISO compatible cards (Desfire EV1, Seos)
433MHz (UHF)
Short Range Devices
1–100 m


Moderate
Defense applications, with active tags
865-868MHz (Europe)
902-928MHz (North America) UHF
ISM band
1–12 m
Moderate to high
EAN, various standards
2450-5800MHz (microwave)
ISM band
1–2 m
High
802.11 WLAN, Bluetooth standards
3.1–10GHz (microwave)
Ultra wide band
to 200 m
High
requires semi-active or active tags


RFID, düşük frekans (LF) 125–134kHz, yüksek frekans (HF) 13.56MHz, ultra yüksek frekans (UHF) 860–960MHz, 2.45GHz ve süper yüksek frekans (SHF) 5.8GHz frekanslarında kullanılabilmektedir.
2.4.Aktif ve Pasif RFID
Kullanım amacına göre RFID teknolojisine sahip ürünler pasif ve aktif olmak üzere 2 temel sınıfa ayrılır. Pasif tipteki ürünlerin içinde bir pil kaynağı yoktur. Gerekli enerjiyi kendilerini okuyan cihazların antenlerinden dolayı oluşan elektrik alanından elde ederler. Bu yüzden ömürleri yaklaşık 100 yıl gibi uzun bir süredir. Ancak okuma mesafeleri kullanılan frekansa da bağlı olarak oldukça kısadır. Aktif ürünler ise enerji elde etmek için dahili bir enerji kaynağı bulundurur. Bu kartların ömürleri genelde 5-10 yıl civarındadır. Ancak okuma mesafeleri daha uzundur. Ülkemizde otoyollarda kullanılan OGS sistemi aktif, KGS sistemi ise pasif ürün grubuna ait birer örnektir.
RFID teknolojisi bugün tüm dünyada yaygın bir kullanım alanına sahiptir. Personel kontrolü, ürün ve hayvan takibi, güvenlik bunlardan sadece birkaçıdır. RFID kartların yüksek güvenliğe sahip olanları Dünya'da kimlik kartı ve kredi kartı olarak da kullanılmaktadır.
3.RFID Nasıl Çalışır?
             Etiketin içinde bir mikroçip ve mikroçipi saran bir anten bulunmaktadır. Okuyucu ile etiket arasında, elektromanyetik dalgalar vasıtasıyla iletişim kurulmaktadır. Okuyucunun yaydığı elektromanyetik dalgalar, bir enerji olarak çiple buluşup onu harekete geçirmekte ve etiketten okuyucuya veri transferi yapılmaktadır. Tüm bunlar belli bir mesafede, herhangi bir temas olmadan ve kablosuz olarak gerçekleşmektedir. Okuyucu aldığı veri dalgasını sayısal dalga biçimine dönüştürerek bilgisayara aktarmaktadır.

4.Kullanım Alanları
RFID sadece tek bir alan ya da sektörde kullanılır denemez. Bugün büyük alışveriş merkezlerinde, zincir marketlerde, hayvan takiplerinde, havayolları-kargo şirketlerinde kullanılan örnekleri vardır. Bu teknoloji ile şirketlerin avantajları, zamanla azalan insan gücü maliyeti, otomatikleştirilmiş stok kontrolü, ürün takibi ve anında ulaşılabilen envanter bilgisidir. Ayrıca RFID sayesinde şirketlerin iş süreçleri hızlanacak ve ihtiyaç duyulan gelişmiş raporlar hızlı ve doğruluğu yüksek bir şekilde oluşturulabilecektir.
RFID teknolojileri, günümüzde lojistik, eğitim, üretim, güvenlik ve sağlık gibi çeşitli alanlarda kulanılmaktadır. Bu değişik alanlar için, kimlik tespiti amaçlı RFID etiket taşıyan çipler içeren pasaportlar, kütüphanelerde kitapların içine antenli etiketler yerleştirilerek kullanılan RFID sistemler, nesneleri veya canlıları takip etmek için üzerlerindeki etiketlerin kullanıldığı sistemler, stok ambarlarında ürün tanımlama ve takip için kullanılan otomatikleştirilmiş süreçler, otomatikleştirilmiş tedarik zinciri akış uygulamaları, belirli alanlara izinli giriş ve çıkış sistemleri, alış veriş sektöründe büyük marketlerdeki uygulamalar ve benzeri birçok uygulama örnek gösterilebilir.
RFID sistemlerinin bir çok kullanım alanı bulunmakla birlikte bunlardan bazılarını şöyle sıralayabiliriz;
  • Sağlık Sektörü,
  • Kapı giriş çıkış sistemleri,
  • İnsan Kimliklendirilmesi (Fabrikalar, Hastaneler),
  • Araç Kimliklendirilmesi (Otoyollar, Otoparklar),
  • Bagaj Takip Ve Çeşitlendirilmesi (Havayolları),
  • Envanter Sayımı (Depo Giriş ve Çıkışları),
  • Lojistik (Posta Servisleri, Kurye Servisleri),
  • Endüstriyel Üretim Kontrolü,
  • Kütüphane Yönetim Sistemi,
  • Hayvan Kimliklendirilmesi (Besi Ciftlikleri),
  • Çamaşırhane Yönetim Sistemi,
  • Atık Ve Çöp Toplama Dökme Yönetim Sistemi,
  • Fabrika Otomasyonu,
  • Basınçlı Tüp Takip Sistemleri (Lpg, Basınçlı Fıçılar),
  • Akıllı Raf Sistemleri (Süpermarketler Yapı Marketleri)

5. RFID SİSTEMLERİNDE GÜVENLİK
5.1 RFID Sistemlerinde Bulunan Güvenlik Tehditleri

İzinsiz Okuma : Bu güvenlik tehditi  kısaca RFID etiketlerini okuma yetkisi olmayan kişilerin bu etiketlere erişerek üzerindeki verileri okuması olarak açıklanabilir.

Veri Tahrifi: Veri tahrifinde etikette bulunan güveliği ve etiketi tanımlayan değil de bu sınıfların dışında kalan verilerin tahrifi söz konusudur. Bu tarz bir güvenlik tehdidi ancak etiketler güvenlik ve tanıtıcı bilgileri dışında bilgi taşıyorlarsa söz konusudur.

Etiketlerin Taklidi: Etiketlerin taklit edilmesi durumunda etiketin tanımlayıcı ya da güvenlik bilgileri (parola vs) ele geçirilir. Daha sonra bu veriler aracılığıyla etiketler klonlanır.

Etiketlerin Çalışamaz Duruma Getirilmesi: Bu güvenlik tehditinde etiketlerin fiziksel olarak çalışamaz duruma getirilmesi (tahribatı) ya da yetkisi bulunmayan kişiler tarafından “kill” komutu kullanılarak kullanılamaz hale getirmesi söz konusudur.

Etiketlerin Objelerden Sökülmesi: Etiketlerin monte edildikleri objelerden sökülerek ait olmadıkları başka bir objeye takılması da bir güvenlik tehditidir.

Etiket ve Okuyucu Arasındaki Frekansın Bozulması: Bu tehdit haberleşmeyi sağlayan radyo frekanslarının parazit gönderme istasyonları (Jamming Stations) tarafından bozulması olarak ifade edilebilir. Frekans bozulması durumu aynı zamanda etiketlerin alüminyum folyo gibi  radyo frekanslarının iletimini kesecek yapıdaki materyallerle kaplanması sonucunda da gerçekleşebilir.

Okuyucuyu Tanımlayan Verilerin Taklit Edilmesi: Güvenli bir RFID Sisteminde etiketleri ancak yetkisi olan okuyucular okuyabilir. Bazı durumlarda yetkilendirilmemiş okuyucuların sahip olduğu etiketler yetkilendirilmiş başka bir okuyucu tarafından yetkilendirilmiş okuyucunun verilerini taklit etme suretiyle okunabilir. Bu da başka bir güvenlik tehdidi türüdür.

Okuyucu ve Etiket Arasındaki İletişimin İzinsiz Olarak Dinlenmesi: Bu güvenlik tehtidi okuyucu ile anten arasındaki radyo arayüzü üzerinden gerçekleştirilen iletişimin radyo sinyallerinin deşifre edilmesi sonucunda gizlice dinlenmesidir.

Yönlendirme Saldırıları: Okuyucu ve etiket birbirleri ile iletişim kurduklarını düşünürlerken bazı durumlarda araya ‘Ghost’(Hayalet) ve ‘Leech’ (Sülük) olarak adlandırılan parçalar tarafından iletişimin yönlendirilmesi durumu söz konusu olabilir. Bu gibi durumlarda RFID okuyucu ile iletişimi sağlayan ve etiket gibi görünen Ghost  ile etiketle olan iletişimi devam ettiren okuyucu gibi görünen Leech araçları devreye girer. Böylece okuyucudan hayalete yapılan her talep sülüğe iletilir ve sülük bu talebi etikete iletir. Gelen talebe verilen cevap da etiketten sülüğe, sülükten hayalete ve oradan da okuyucuya iletilmek suretiyle iletilir. Hayaletten gelen cevap doğru cevap olduğu için hayalet onaylanmış olur. Böylece hayaleti kullanan kişiler erişimleri sınırlı olan bir alana erişim hakkına sahip olurlar.

  RFID Zararlı Yazılımları
Zararlı yazılımlar 3 ana gruba ayrılmaktadır:

Korunmasızlık Sömürücüleri: Bu sömürücüler SQL Injection vb gibi internette bulunan korsan saldırılara benzemektedir.  Bu saldırılardan tek farkı sömürücü saldırıların kaydedildiği etiket belleğinin veri kapasitesinin küçük olmasıdır.

RFID Solucanları ve Virüsleri: Korunmasızlık sömürücü kodunu yeni RFID etiketlerine kopyalayan korunmasızlık sömürücü türüdür.  Bu zararlı yazılım türünün virüslerden tek farkı solucanların yayılması için ağ bağlantısına ihtiyaç duymaları ancak virüslerin ise ağ bağlantısına gerek duymadan RFID sistemi aracılığıyla kendi kendilerine yayılabilmesidir.

RFID zararlı yazılımları etiketler okunduklarında aktif hale gelir ve sistemin ara katman yazılımına veya arka uçta bulunan veri bankasına geçer. Sistemin güvenliği yeterince sağlanmamışsa sisteme bulaşan zararlı yazılım sistemin bu zayıflığından yararlanır ve kendini diğer etiketlere kopyalar.
5.2 RFID SİSTEMLERİ İÇİN GELİŞTİRİLEN GÜVENLİK ÖNLEMLERİ

Kimlik Doğrulama: Bu güvenlik önlemi türünde verilere erişim ancak başarılı bir kimlik doğrulama sonrasında mümkün hale gelmelidir. Bu kimlik doğrulama işlemi parola sorgulama ya da başka türlü bir kimlik doğrulama kodu ile mümkün hale gelmelidir.

Kod Saklama: Kod saklama gizli dinleme saldırılarına karşı ileri yönde kanal üzerinden transfer edilen verileri saklayan bir metottur. Bu tür bir güvenlik önlemini kullanan etiket türünde okuyucu etikete etiketten bir anahtar istediğine dair bir mesaj gönderir. Bu isteğin sonucunda etiket bir anahtar üretir ve okuyucuya gönderir. Okuyucu bu anahtarı kullanarak göndereceği metni şifreler ve etikete gönderir. Etiket daha sonra anahtarını kullanarak şifreli metni deşifre eder. Bu işlem sonucunda kod anahtar yardımıyla şifrelenmiş ve saklanmış olarak etikete iletilmiş olur. Üçüncü bir şahıs tarafından veri ele geçirilse bile şifreli olduğu için anahtar olmadan çözülemez.

Kalkanlama: Kalkanlama metodu RF sisteminin bulunduğu mekanın ya da sistemin ilgili bileşenlerinin bir materyal kullanılarak korunması ve sinyallerin sınırların dışına yayılmasının önlenmesidir.

Press – to – Activate Butonunun Kullanılması: Etiketlerde press – to – activate butonunun kullanılması ile etiketler istendiğinde bu butona basılarak aktif hale getirilir. Butona basılmadığı sürece etiketler çalışamaz durumda bekler. Butona basıldığı zaman aktive olan etiket aynı şekilde aktif durumdayken butona tekrar basılmak suretiyle  deaktif konuma geçer. Böylelikle etiket istenilen zaman aralığında istenilen zaman kadar çalıştığı için izinsiz dinleme – okuma saldırıları önlenmiş olur.

Kill Komutunun Kullanılması: “Kill” komutunun kullanılması ile etiketlerin etkinliğinin daimi olarak sonlandırılması mümkündür. Bu komut etiketler üzerindeki verilerin yetkisiz kişilerce kullanılmasını ve okunmasını önler. Bu komutun yetkisiz kişilerce kullanılmasının önlenmesi için komutun bir pin kodu ya da parola doğrulaması ile kullanılması sağlanmalıdır.

Kırılır Etiketler Kullanımı: Kırılır etiket kullanımı ile etiketlerin etkinliğini sonlandırmak ve yetkisiz kişilerce okunmasını, izlenmesini önlemek mümkündür. Bu tip etiketlerde kullanıcı etiketin antenini imha ederek etiketin aktivitesini sonlandırabilir.

Aktif Sinyal Bozma Yaklaşımı: Aktif sinyal bozma yönteminde rastgele radyo sinyalleri yayam bir radyo frekansı cihazı ile radyo kanalı rahatsız ettirerek etiketlerin okunması, izlenmesi önlenir.


7.RFID ve Barkod
            RFID'nin etkileyeceği ve yerini alacağı yegane teknoloji barkod teknolojisidir. Sadece dünyada değil, ülkemizde de çok yoğun bir şekilde kullanılan barkodun RFID'ye göre bazı dezavantajları vardır. Örneğin;
  1. Görüş sahası
  2. Sadece veri okuma
  3. Kısıtlı alan ve okuma oranı
            Ancak barkod teknolojisinin şu anda RFID'ye göre çok güçlü bir özelliği bulunmakta. O da etiket başına maliyeti. Olaya bir de RFID yönünden bakılırsa, kolaylıkla görülebilir ki, maliyet dışında RFID teknolojisi barkoda göre oldukça avantajlı. Çünkü RFID'de;
  1. Görüş sahası kavramı yoktur
  2. Etiket üzerinde veri okuma/yazma işlemi yapılabilmektedir.
  3. Uzun mesafe ve her okumada birden çok kalem mal okunması imkanı vardır. Bu sayede ambarınızda ya da deponuzdaki stoklarınızı haftalar - günler - saatler yerine dakikalar içinde sayabilirsiniz.
  4. İnsan / operatör müdahalesine gerek yoktur. Bu sayede uzun dönem maliyetlerinizi tahmin edemeyeceğiniz kadar düşürebilirsiniz.
  5. Daha fazla veri taşınabilir. Bu sayede sadece ürünün kodu değil, gerekiyorsa geldiği depo, son kullanma tarihi ya da istenen başka bilgiler etiketlere yüklenebilir.
             RFID etiketlerinin ayırt edici bir diğer özelliği de çalıştıkları frekans aralıklarıdır. Günümüzde yaygın olarak kullanılan etiketlerin frekansları daha çok HF (High Frequency) aralığındadır. Bir etiketin maliyeti sadece aktif ya da pasif olmasına göre değil, çalıştığı frekansa göre de değişmektedir. Endüstride 13.56 MHz'lik etiket kullanılan projeler, şirketlere maliyetleri açısından da oldukça çekici gelmektedir. Ancak bazı uygulamalarda UHF frekans aralığı (800-900 MHz) kullanılması performans adına daha iyi sonuçlar vermektedir.
Herhangi bir projede hangi frekans aralığını kullanan etiketlere karar verilmesi, o projenin düşünülen ortamda gerçekleştirilip gerçekleştirilemeyeceği kararı gibi kritik kararlar tamamen tecrübe ve bilgi birikimi ile donatılmış uzman ekipler sayesinde olmalıdır. Aksi halde RFID projeleri, maliyetleri ve sonunda yaşanan koca bir başarısızlık ile birçok şirket ve kuruma faydadan çok zarar getirmiştir.

8.Kaynakça