obenplus.com | oben+ | Hikayesi bol bir yazılımcının kaleminden, teknoloji dünyasını en önemli ve en ince ayrıntısına kadar takip etmek, bir yazılımcının hayatını, yaşantısını gözlemlemek isteneyenler için...

Archive for Mayıs, 2015

Bugün benim için oldukça gururlu bir gün, çünkü otoparklara ilişkin tasarladığım sistemin patent başvurusu 2014/13521 başvuru numarasıyla kabul edildi. Başvuruyu Turkcell üzerinden yapmıştım ve Turkcell’e oldukça katkı sağlayabilecek bir fikir olduğuna inanıyorum.


Gelişen dünya ile birlikte teknolojinin ilerlemesi neticesinde, kartlı sistemlerde önemli ölçüde gelişmeler yaşanmış, ödeme süreleri oldukça kısa sürelere kadar inmiştir. Fakat yonga kullanan kartlı sistemlerin dezavantajı, müşterilerin ödemelerini yapabilmek için kartları ile birlikte bir görevliye gitmelerinin gerekmesidir. Bu buluşun amacı, Bluetooth LTE teknolojisinin akıllı telefonlarda Bluetooth teknolojisine göre %60 lara varan oranlarda daha az şarj harcamasının avantajını da kullanarak, Turkcell SIM kartları üzerinden, müşterilerin ödemelerini yapmasını sağlamaktır. Buluşun amacı, otopark sistemleri üzerinde bir yöntem ve algoritma kullanarak, insanların otopark çıkışlarında kuyruklarda beklemelerinin önüne geçmeleri ve ödemelerini Turkcell üzerinden hızlı bir şekilde yapmalarını sağlamaktır. Yöntem sayesinde Turkcell müşterisi olmak isteyenlerin sayısında önemli ölçüde artış yaşanması, müşterilerin ödemelerini ister Turkcell üzerinden faturalarına yansıtarak, isterse de Sanal POS üzerinden kredi kartı ile uzaktan ödeme yaparak yapmalarına olanak sağlanmaktadır. Bu süreç sayesinde, Turkcell’e doğrudan fayda sağlayan ödeme alma özelliğinin yanı sıra, örneğin havalimanı otoparklarında ödeme yapan müşteri datasından yola çıkılarak sık sık uçuş yapan müşterilere özel kampanyalar sunulması sağlanabilmektedir.

Read more


Fazla söze gerek yok;


Rest (Representational State Transfer) , “Temsili Durum Transferi” sözcüğünün kısaltılmışıdır ve ağırlıklı olarak web servis tasarım mimarisi olarak kullanılır.

Günümüzde en çok kullanılan servis haberleşme tipleri REST ve SOAP olarak ifade edilebilir. REST kendisine göre daha ağır siklet olan SOAP a göre tercih edilen bir tasarım mimarisidir çünkü daha az bant genişliği tüketimi sayesinde internet üzerinden kullanım için avantaj sağlamaktadır. SOAP servis çağrılarında Remote Procedure Call (RPC) modelini kullanan istemci/sunucu mantığına dayalı bir protokoldür. Daha basitleştirilmiş haliyle, SOAP ile bir web servis yarattığınız zaman o servisin bir XML dökümanı olur ve siz bu XML dökümanındaki tanımları kullanarak methodları çağırırsınız. Server ile Client arasındaki alışveriş SOAP kullanırken hep XML ler üzerinden olmaktadır. Bu nedenle de yüksek bant genişliği kullanımı mevcuttur. Özetle REST ile SOAP arasındaki en büyük fark SOAP ın XML alışverişine dayalı bir standart üzerinden işlem yapması buna karşın REST’in böyle bir standardının bulunmamasıdır. REST, XML ya da JSON formatında mesaj yollar ve geri alır. Sunucuya mesajlar HTTP requestleri olarak iletilir. Google, Amazon, Twitter ve Microsoft gibi bulut bazlı API’ler sunan firmalar, basit ve lightweight yapısı nedeniyle REST mimarisini kullanmayı tercih ederler. Bir web servis REST mimarisini kullandığı zaman RESTful API olarak adlandırılırlar.

rest

Madde madde olarak ifade edecek olursak;

  1. REST, Client – Server iletişimi ile ilgili bir mimaridir.
  2. İletişimini SOAP, RPC gibi kompleks mimariler yerine, HTTP protokolü üzerinden sağlar.
  3. RPC, WSDL in aksine basit ve hafiftir.
  4. SOAP gibi keskin bir standardı yoktur, esnek yapısı vardır. Requestler custom bir şekilde maplenebilmektedir.
  5. WSDL (Web Services Description Language) kullanımı yoktur.
  6. Entegre etmesi SOAP’a göre daha kolaydır.

Bu aşamadan sonra biraz daha derinlemesine inceleyecek olursak öncelikle REST’de kullanılan Request Tipleri’ne değinmemiz faydalı olacaktır.

Rest Request Tipleri;

  • GET : Belirtilen collection ya da collectionların kimliğini ya da detaylarını listelemede kullanılır.
  • PUT : Bütün bir collection’ı başka bir collection ile yer değiştirmede kullanılır.
  • POST: Yeni bir collection oluşturmak ve oluşan collectionun kimliğini dönmek için kullanılır.
  • DELETE: Collection silmek için kullanılır.
  • PATCH: Collectionun bir kısmını güncellemek için

Örneğin, http://api.bimo.org.tr/api/v1 adresli bir REST Api’miz olsun. Bu API nin amacının bir mesajlaşma sistemini yönetmek olduğunu düşünelim.

Aşağıdaki örnekler ve amaçlarını inceleyecek olursak, REST Api aklımızda çok daha iyi canlanacaktır.

GET /messages Mesaj Listesini Çek
GET /messages/192 192 kimlikli li mesaj detayını çek
POST /messages Yeni mesaj ekleme
PUT /messages/192 192 kimlikli mesajı güncelle
PATCH /messages/192 192 kimlikli mesajın bir kısmını güncelleme
DELETE /messages/192 192 kimlikli mesajın bir kısmını güncelleme

Bu örnekleri çoğaltmamız da mümkündür. Çünkü REST’de request mapping tamamen bizim kendi tasarımımıza kalmıştır. Örneğin GET /messages/192/userinfo requesti bizim tasarımımızda 192 kimlikli mesajı yaratan userın bilgileri anlamına gelebilir.

Örneğin Twitter REST Api’sinde kullanıcının timeline ında bulunan son 10 mesajı çekmek için https://api.twitter.com/1.1/statuses/user_timeline.json?count=10 şeklinde bir GET request’i gönderebilirsiniz.

Buna karşılık olarak da Twitter API’si JSON contentli bir response dönmektedir.

Son olarak da, REST API’lerin hata yönetimlerinin nasıl olabileceği üzerine inceleme yapacak olursak, REST API’ler HTTP request response ları ile iletişim kurmamızı sağladıkları için klasik HTTP response kodları ile durum hakkında bilgi sahibi olabiliriz.

En sık karşılaşılan HTTP kodları aşağıdaki gibidir;
  • 200 OK: Genelde veri listeleme sonuçları 200 ile dönüş yapılır.
  • 201 CREATED: Veri eklendiği zaman verinin kendisi ile 201 dönülüyor.
  • 204 NO CONTENT: Veri silindiği zaman 204 dönülüyor.
  • 400 BAD REQUEST: Genel olarak kayıt ekleme ya da güncelleme isteklerinde gönderilen veri validasyondan geçemediyse neden geçemediği hakkında bilgiyle beraber 400 http statusuyla dönülür.
  • 403 Forbidden: Yetkiye dayalı bir işlem yapılıyorsa bu api uç noktasında işlem yapmaya çalışan kişinin bu işlemi yapmaya yetkisi yoksa 403 status kodu döndürülür.
  • 401 Unauthorized: Api ucunuzda bu işlemi yapmak için login olmak zorunlu ise ve apiye istek yapan kullanıcı login değil ise bu http status ile cevap verilir. Örneğin kullanıcının kendi bilgilerinin güncellemesi denilebilir.
  • 404 Not Found: Bu http status  kullanıcının istek yaptığı url yok ise ya da url deki veri geçersiz ise bu hatayı alırız. örneğin şöyle bir url miz olsun /api/v1/account/bahattincinic sondaki bölüm kullanıcı adı. Buraya sistemimizde olmayan bir kullanıcı girersek 404 alırız.
  • 405 Method Not Allowed: Bu http status u istek yapılan api uç noktası gönderilen methodu implemente etmemiş ise bu http status unu alırız. Örneğin login olması için token verdiğimiz bir api ucumuz var ve bu uçta sadece post isteğini kabul ediyor. Kullanıcı bu api urline GET isteği yaparsa bu hatayı alır.
  • 429 Too Many Requests: Bu http statusunu saatlik ya da dakikaklık kısıtlanan sınırdan fazla istek yaparsak bu http statusunu alırız. 

HTTP statuslarını gruplayacak olursak;

  • Bilgilendirme – 1xx
  • Başarılı İşlem – 2xx
  • Yönlendirmek – 3xx
  • Kullanıcı Taraflı hata – 4xx
  • Server Taraflı hata – 5xx

Bu yazıyla sizlere, REST API’nin temel mimari yapısını, SOAP ile arasındaki farklarını, güncel kullanım alanlarını, kolay kullanımını ve request mapping’in nasıl olabileceğini anlatmaya çalıştım. Yazıyı noktalamadan önce belirtmek gerekir ki, REST günümüzde henüz kurumsal ve kompleks sistemler için mükemmel bir çözüm olarak görülmemekle birlikte, kullanım alanı zamanla hızlı bir şekilde artmaktadır. Özellikle mobil uygulamalar ve daha butik uygulamalar, yeni çıkan API’ler REST mimarisini tercih etmektedirler.

REST hakkında yukarıda anlattığımız içeriği eğlenceli bir şekilde bir video ile izlemek isterseniz, aşağıdaki videoyu öneriyorum 🙂


İZNİK, 2015

İZNİK, 2015

Canım annem,

Beni 25 sene önce, yağmurlu bir günde dünyaya getirdiğinde sana kendimi ınga ınga diyerek ifade etmeye çalışmıştım. Şimdi ise her sene olduğu gibi bu sene de blogumu kullanarak bu günü ölümsüzleştirmek istiyorum.

Dünya üzerinde hiç bir akraba, hiç bir dost, hiç bir arkadaş ya da hiç bir kimse yoktur ki, beni senin kadar sevebilsin, üstelik herşeye rağmen. Hata yapsam, yine annem beni korur, doğru birşey yapsam, annem benden çok sevinir, çünkü onun kalbi dünyalara sığabilecek bir kalp değildir, o kendisinden çok beni sever. Anneciğim, ben de seni çok ama çok seviyorum, yanımda olduğun her an için o kadar mutluyum ki…

Beni hiç bir saniye yalnız bırakmadığın için ve her derdime benden çok üzülüp beni bu kadar çok önemsediğin için teşekkür ederim altın kalpli meleğim…

Seni çok seviyorum,

Oben


Başlığı gördüğünüzde sizlere de ilginç ya da anlamsız mı geldi ? Ben de bu haberi gördüğümde şaşırmıştım 🙂

Hepimiz JAVA dilini, her yerde koştururum ben bu kodu olarak görürüz değil mi ? Ama en çok da içimizde bir uktedir iOS cihazlarda JAVA koşturamıyor olmak. Oracle da bu konuda çok içerlemiş olacak ki, ne yaparım da JAVA kodunu iOS da koşturabilirim diye düşünmüş ve Oracle ADF Mobile adında bir çözümle gelmiş.Bu çözüm, iPhone, iPad vb. gibi iOS cihazlar için sizlere mantıksal katmanı tasarlamanıza ve kodlamanıza olanak veriyor. (Ekleyeyim, aynı kod Android de de koşabiliyor.)

Oracle JDeveloper indirerek, yeni bir ADF projesi oluşturuyorsunuz ve geliştirmenizi yapmaya başlıyorsunuz. Eğer Oracle ADF Mobile kullanacağım derseniz aslında UI katmanını HTML5/CSS3 ile tasarlamış oluyorsunuz ve business layer için JAVA kullanıyorsunuz. UI için geçmişten bir Primefaces vb. geçmişiniz varsa AMX bileşenlerini kullanarak da geliştirme yapmanız mümkün. ADF nin mimarisi ise aşağıdaki gibi;

Burada amaç, JAVA developerlarının da kolayca iOS developer olarak iş yapabilir olmasını sağlamak diye düşünüyorum. İnceleme fırsatım olmadı, bu nedenle ADF nin ne kadar başarılı olduğu hakkında fikir sahibi değilim, sizlerden inceleyenler olursa benimle paylaşmalarını rica ederim.

Belirtmekte fayda var ki, ADF nin içeriğinde aynı zamanda SQLite database de bulunuyor.

iOS için Oracle ADF ile yapılmış olan ilk uygulamaya buradan ulaşabilirsiniz.

ADF geliştirmesinin nasıl yapıldığına dair fikir sahibi olmak için buradaki videoyu izleyebilirsiniz.

ADF’yi download etmek için buradaki linki kullanabilirsiniz.