26 Temmuz 2016 Salı

Swagger ve Araçları

Herkese merhaba, bu yaz stajında Swagger ile ilgili çalışmalar yapıyorum. Bu süreçte öğrendiğim konulardan bahsetmek istedim.

*Öncelikle  Open API Initiative'den bahsedecek olursam;

Linux Foundation altında açık denetimli bir yapı olarak oluşturulan, gelişmekte ve yükselişte olan bir tanımlama formatıdır. Swagger Specification doğrudan Open Specification'ın temeline dayanarak OAI'ye eklenmiştir.

*OpenAPI Specification(The Swagger Specification);

OpenAPI Specification'ın hedefi; insanların ve bilgisayarların anlayabilmesi için REST API'lerin arayüzlerine dilden bağımsız bir standard tanımlamaktır. OpenAPI var olan bir apiyi tekrar yazmamamızı sağlar ama OpenAPI Specification'ın yapısında tanımlanmış servislerin yeteneklerini belirlemek gerkir.

*Swagger nedir ve hangi amaçla kullanılır?

Swagger; REST Apilerin web ortamında kullanıcılara daha basit ve kullanışlı bir şekilde sunulmasını sağlar. Birçok dile frameworkü bulunmaktadır.
Bir diğer avantajı, herhangi bir dilde yazılmış bir REST Api'yi başka bir dile dönüştürmeye uygundur( Code Generation ).

Bu proje içinde kendi araçlarını barındırır. Bunları inceleyecek olursak;

*Swagger Core: Swagger'ın bir Java uygulamasıdır diyebiliriz. Github'ta uygulamalı olarak Java ile bir Swagger uygulaması bulunmaktadır.

*Swagger Codegen: Bir dilde yazılmış REST Api'leri istediğimiz dile dönüştürme işlemine yardımcı olur. Bunun java dili yardımıyla yapılışı Github'ta bulunmaktadır.

*Swagger UI: Swagger uyumlu hale getirilmiş Api'yi kullanıcıya sunan bir araçtır. Bu aracın da uyarlanışı Github'ta bulunmaktadır.

*Swagger Editor: Swagger tanımlamalarını YAML veya JSON formatta oluşturur. Sitesinde bulunan api'yi Generate Client bölümünden istediğimiz dile çevirebiliriz. Swagger Codegen'in yaptığı işlem buna karşılık geliyor. Bu uygulama konuyu anlamak için faydalı oldu benim için.
Uygulama linki  

*Swagger IRC

Peki her şeyi tasarladık adımları uyguladık kullanıcıların karşısına nasıl bir görüntü çıkacak;



















Şekilde görüldüğü gibi uygulamadaki bir bölümle iligli işlemler kullanıcıya listelenmektedir. Kullanıcı istediği işlemi gerekli parametreleri girerek gerçekleştirebilir.

Bu yazımda Swagger'ın ne olduğundan, araçlarından, hangi kolaylıkları sağladığından bahsettim. Bir sonraki yazılarımda araçların nasıl kullanıldığından ve bir apinin Swagger uyumlu hale nasıl getirildiği hakkında yazacağım.
Görüşmek üzere.

3 Mayıs 2016 Salı

LibreOffice Hackfest 2016 - Ankara

Herkese merhaba, bu sene Ankara'da TÜBİTAK-ULAKBİM tarafından bir Hackfest gerçekleşti.

Etkinlik heyecan vericiydi benim için. Çünkü LibreOffice geliştiricilerinden Michael Meeks, Marcus Mohrhard ve Jan-Marek Glogowski'de katıldılar.

İlk gün geliştiricilerin yaptığı sunumları dinledik. Bu sunumlar bana birçok şey kattı. Çünkü yeni bakış açılar kazanıp, çalıştığımız alanın bilmediğimiz inceliklerini öğrendik.

Sonraki 2 günde uğraştığım iki tane hata kaydı üzerinde çalıştım. Çalışırken takıldığımız yerlerde geliştiricilere sorup o an halletmek çok iyi oldu.

Ben LibreOffice Base bileşeni üzerinde çalışıyorum. Bununla ilgili Michael Meeks'e merak ettiğim bütün soruları sordum. Etkinliğin en iyi yönlerinden birisi de buydu benim için; o an merak ettiğim ya da takıldığım konuyu geliştiricilerle çözmek.

Etkinliğe çalışmaktan büyük keyif aldığım Çanakkale ekibi ile katıldım :)


Etkinlikte sabahtan akşama kadar kodlama yaptık ama keyifimiz gayet yerindeydi. Çünkü çalışma performansımızdan memnunduk :)



Etkinliğe katılmam beni hem mutlu edip hem de birçok şey kattı.
Öncelikle +Necdet hocama, TÜBİTAK-ULAKBİM'e, orada tanıştığımız Muhammet Kara ve Gökhan Gurbetoğlu'na, tabiki yurt dışından gelen Michael Meeks, Marcus Mohrhard ve Jan-Marek Glogowski'ye çok teşekkür ediyorum.

Yakında görüşmek üzere :) 

28 Mart 2016 Pazartesi

Özgür Yazılım ve Linux Günleri - 2016

Herkese merhaba, Özgür Yazılım ve Linux Günleri bu sene 26-27 Mart tarihlerinde İstanbul Bilgi Ünversitesi'nde gerçekleşti. Etkinliğe ilk defa bu sene katıldım.

Neden daha önceden katılmadığımı kendime birçok kez sordum :) Çünkü oradaki ortam çok mutlu etti beni. Yeni insanlarla tanışmak yeni bilgiler öğrenmek farklı bakış açıları kazanmak insana çok fayda sağlıyor.

Etkinlikte dinlediğim beni en çok etkileyen sunum +Necdet Yücel  ve +Kaan Ozdincer 'in "Yine Yeniden Özgür Yazılım" sunumuydu. Özgür Yazılım ile ilgili doğru bilinen yanlışlar, eksik kalan tanımlamalar, bu alanda nelere dikkat etmemizin gerektiği gibi daha birçok şey öğrenmiş oldum. Bunlar benim için teknik bir bilgiden daha önemliydi. Çünkü benimsediğim ve çalışmayı istediğim bir alan hakkında en ince ayrıntıya kadar bilgi sahibi olmuştum. Böylece hayatımda etkisi çok fazla olan bir 45 dakikaydı benim için :)


Bir başka severek dinlediğim sunum ise +Aydan Taşdemir 'in "Pgbarman ile PostgreSQL Yedekleme" sunumuydu. LibreOffice Base bileşeni üzerinde çalıştığım için veritabanıyla ilgili bir sunum dinlemek çok iyi oldu benim için. Özellikle şu anda uğraştığım iş PostgreSQL ile ilgili olduğundan bu sunum bana çok faydalı oldu. PostgreSQL ile ilgili yeni bir özellik öğrenmiş oldum.

Biz yine Çanakkale'den kalabalık bir ekiple geldik. Bu etkinliğin benim açımdan önemi ayrı bir büyüktü. Çünkü sunumlardan birisini biz yapacaktık, içimde sadece o an tanımlayabileceğim bir heyecan vardı :)

Bizim sunumumuz "LibreOffice Geliştirme ve Yaygınlaştırma" toplantısı şeklinde gerçkleşti. 13 kişilik büyük bir ekip olarak bugüne kadar yaptığımız çalışmalardan bahsettik. Kendi söylediklerimde ve arkadaşlarımı dinlerken şunu farkettim; gerçekten süreç çok fazla çalışmayı gerektiriyor. Bir iş üzerinde haftalarca hatta aylarca pes etmeden ısrar etmek gerekebiliyor. Ama sonunda kazanılan bilgiler ve çalıştığınız işi bitirdiğinizi görmek aşırı mutluluk veriyor :)



Bir sonraki yazıma kadar daha çok çalışıp sizlere daha iyi haberler vermek istiyorum görüşmek üzere :)

8 Şubat 2016 Pazartesi

AB2016 - LibreOffice Geliştirme Atölyesi

Bu sene Akademik Bilişim Aydın Adnan Menderes Üniversitesi'nde gerçekleşti. Etkinlikte 4 gün süren eğitimler ve sonrasında 3 gün konferanslar yapıldı.

Biz Çanakkale'den kalabalık bir ekiple "LibreOffice Geliştirme Atölyesi" eğitimine katıldık. 4 gün boyunca sabah 9 - akşam 6 saatleri arasında çalışmak benim için çok faydalı oldu. 4 gün boyunca LibreOffice deposuna gönderdiğim 2 yamam alındı :) bunların linkleri Link1 ve Link2 

Eğitimde her gün kendime bir şeyler katarak ilerledim. Biten günün sonunda yeni bilgiler öğrenerek yurda gitmek gerçekten çok mutluluk verici oluyor. Sabah bir de yama kabul mailiyle uyanmak +1 mutluluk oluyor :)



Çalışırken bir yerde takıldığımızda soru sormak istediğimizde hemen yardımımıza koşan sabırla bizleri dinleyen :) +Gülşah Köse , +aybüke özdemir , +Berk Güreken ve +yeliz taneroğlu eğitmenlerimize teşekkür ediyorum.

Bu organizasyonda emeği geçen +Mustafa Akgul ve +Necdet Yücel hocalarıma çok teşekkür ederim.

Çok çalışmak gerçekten çok mutluluk verici :)

26 Ocak 2016 Salı

Packathon Macerası

23 Ocak tarihinde İstanbul'da Bahçeşehir Üniversitesi'nde gerçekleşen Packathon etkinliğine Kripton ekibi olarak katılmaya karar verdik. Etkinlikle ilgili bilgiye buradan ulaşabilirsiniz.

Etkinlikte çalıştığım ekip arkadaşlarımla 1 gün boyunca öyle bir ortamda çalışmak bana çok şeyler kazandırdı. Günün başlangıcında ekip olarak görev paylaşımında bulunduk. Üzerime düşen görevi yapmam gerektiğinin bilinciyle insan çalıştığından daha fazla çalışıyor. Hepimiz çok çalışıp hedeflediğimiz işleri yerine getirdik. Günün sonunda böyle sonuçlar görmek insanı çok fazla mutlu ediyor ve daha çok çalışma isteği kazandırıyor.

Gün içerisinde çalışırken sürekli meslek hayatımda da böyle bir ortamda olmanın beni mutlu edebileceğini düşündüm. Çünkü üzerinde çalıştığım alan keyif veriyor, birlikte çalıştığım arkadaşlarla o alanda çalışmak gerçekten çok keyifli oluyor. Tatil gününde dışarda kar yağarken birlikte kod yazmak gerçekten çok mutlu edici :) 

Etkinliğinin düzenlenmesinde emeği geçen herkese teşekkür ediyorum. Beni çok mutlu eden etkinlikten sonraki duygularımı paylaşmak istedim ve tabiki bir gün boyunca benimle birlikte çalışan ekip arkadaşlarıma da teşekkür ediyorum. 

O günden çok sevdiğim bir fotoyu paylaşmak istiyorum ( Gerçekten haberimiz yoktu :) ) 

24 Temmuz 2015 Cuma

PROMOQUBE Yaz Stajı (for Ruby :D ) 


Aslında yaz stajlarının hiçbir zaman faydalı geçmediği bir şey yapılmadığı konusunda neredeyse herkes hem fikirdir. Hatta boş boş oturarak geçer 20 iş günü :) Benim geçen seneki yaptığım stajda aynen bu şekilde olmuştu o yüzden biraz akıllanmıştım. Bu sefer farklı olmalıydı bazı şeyler.

Bir gün yine Ruby çok öğrenme aşkıyla doldum ve Ruby-tr mail grubuna mail attım "Yaz için stajyer arayan var mı?" diye :) Geriye dönüşler oldu pek umudum yoktu ama her şey beklediğimin tersine gitti. Gayet güzel oldu her şey. Memnun kaldım stajımın sonunda. 

Ruby bilgim 2014 Akademik Bilişim'de 4 günlük eğtimde ne aldıysam o kadardı. Daha sonraları hoby olarak üstüne gide gide bir şeyler öğrendiğimleydi. 

Promoqube'de Ruby ile ilgili (bana göre) çok büyük işler yapmaya çalıştım. Her gün yeni bir şeyler öğreniyordum her öğrendiğimi yazıyordum. Unutmayayım kalıcı kalsın ileriki zamanlara da kalsın diye. Stajım böylelikle baya faydalı geçti. 

Uludağ sözlük için bir web parser yazdım. Staj bittikten sonra şimdiki hedefim bir türlü öğrenmeye cesaret edemediğim Rails'i öğrenmek :) Umarım onda da güzel şeyler yaparım ve Ruby ile çalışmalarıma devam ederim.

Staj yapıcak arkadaşlara tavsiyem; github hesabınızda birşeyler olsun en azından, blog yazmıyorsanız acilen bir şeyler yazın ve "Özgür Yazılım ulan!" diyin dikkat çekiyorsunuz zaten :) 

Çünkü staj mülakatında birçok konu üstüne konuştuk fakat karşımdaki insanların merak ettiği şeyler; "Python nerde öğrendin?" "Ne zamandır Ubuntu kullanıyorsun?" "Neden Özgür Yazılım düşünüyorsun?" ve anladım ki bu alanda gerçekten bir şeyler öğrenmek istedikçe kapılar her zaman açılıyor. En şaşırtıcı noktada en son soru olarak "Okulun neydi?" dediler bir kez daha anladım bizim meslekte okul ve nottan çok neyi yapabiliyor olduğunun daha önemli olduğunu.

Staj yapıyor olan ve yapacak olan arkadaşlara başarılar dilerim şimdiden :)

Son olarak meşhur Promoqube Logosu :)


23 Temmuz 2015 Perşembe

Ruby ile Kendimize Özel Gem Oluşturmak


Bu yazımda Ruby de kendi istediğimiz işlevleri programda yerine getiren bir gem oluşturmaktan bahsedeceğim.

Ruby çok sayıda büyüleyici ve kullanışlı kütüphanelere sahiptir, bir çoğu klasik gem dosyası olarak yayınlanmıştır. Diğer kütüphaneler kaynak kodunun .zip ya da .tar.gz arşivlenmişi olarak yayınlanır.

Şimdi öncelikle bir ekrana "Merhaba naber nasılsın :) " yazdıran ruby kodumuzu tasarlayalım.














Tamam şimdi bu işlevi yerine getirecek bir gem dosyamızı oluşturalım. Bunun uzantısı .gemspec olmalıdır. Onun kodu da aşağıdaki gibidir:
















Artık kodlarımız hazır. Terminali açıp aşağıdaki kodu yazdığımızda gem'i oluşturmuş oluyoruz.



Evet oluşturduğumuz gemi install edelim. Onu yapmak için konsola;

% sudo gem install ./merh-0.0.0.gem komutunu yazıyoruz.



Artık kendi oluşturduğumuz gem yüklenmiş oldu istediğimiz ruby koduna require ederek kullanabiliriz. Yapmamız gereken tek şey .rb uzantılı ruby kodumuzun başına;

>>  require 'merh' yazmaktır.

Ben bu işlemleri ilk öğrendiğimde çok keyif almıştım çünkü istediğimiz işleri yaptıran kendimize özel bir gem oluşturarak çok farklı şeyler yapabiliriz. Bu başlangıç olarak size örnek göstermek istediğim bir gemdi. Umarım ilgilenenlere faydalı olmuştur.