Ruby Tarafından Redis(Docker Bazlı) Veritabanı ile Konuşmak

Nihayet Ahch-To(MacOS Mojave - Intel Core i5 1.4Ghz, 4 Gb 1600 Mhz DDR3) üzerinde ki ilk çalışmamı gerçekleştirebildim. 2020 yılı için planlarım arasında yer alan kendimi yetiştirme turları kapsamında çıktığım bu ilk macerada epeydir eğilmediğim Ruby kodları ile tekrar bir aradayım. Bu ilk maceradaki amacım Ruby kodlama ile docker container üzerinde host edilmiş bir Redis veritabanında basit işlemler yapabilmek. [Daha fazla]

Bir Ruby Uygulamasını Google Cloud Platform Üzerine Taşımak

Ben bu Cloud platformlarını çok tuttum. Gerek Azure, gerek AWS, gerek Google Cloud Platform...Hepsi çok çekici duruyor. Benim ilgimi çeken şey onları araştırırken özellikle west-world dünyasında yazılmış bir programın ilgili platform üzerinde konuşlandırılması ve yürütülebilmesi. Ağırlıklı olarak REST tipinden servis uygulamalarını taşımaya çalışıyorum. Bu seferki hedefimse rastgele bir sözü sunan ruby ile yazılmış bir REST servisinin Google Cloud Platform'a taşınması ve oradan kullanılabilmesi. İşlemlerime başlamadan önce Google Cloud Platform üzerinden geçerli bir ödeme seçeneğinimizin olması gerekiyor. Yani bir kredi kartı bilgimizi tanımlamış olmalıyız. Bir ablam olduğu için çok şanslıyım :) Sağolsun bu proje için sanal kredi kartını kullanmama izin verdi. Gelin adım adım ilerleyelim. [Daha fazla]

GoLang - Bir Go Paketini Ruby'den Çağırmak

Pek çok kaynak GO dilinin ileride C'nin yerini alabileceği yönünde görüşler belirtmekte. Özellikle IoT alanında bu dilin daha fazla ön plana çıkacağı vurgulanıyor. Bu düşüncenin haklı olabileceği yönünde bazı tespitlerim var. Söz gelimi GO ile yazılmış bir paketi başka bir dilden çağırmamız mümkün. C, Python, Java ve Ruby bunlardan sadece bir kaçı. [Daha fazla]

Ruby Kod Parçacıkları 34 - Fiber ve Eş Zamanlı Programlama

Eş zamanlı programlanın farklı dillerde veya çatılarda farklı uygulanma şekilleri olabiliyor. Esas itibariyle genel amaç eş zamanlı olarak birden fazla işin gerçekleştirilmesini sağlayabilmek. Bu noktada en zorlayıcı noktalardan birisi işlemcinin ve işletim sisteminin bu çalışma taleplerine olan anlık tepkilerinin yönetilmesi. Neredeyse pek çok programlama ortamında Thread'ler ile karşılaşıyoruz. Ruby tarafında da böyle bir yapı mevcut ama bunun dışında Fiber adı verilen farklı bir tip daha var. [Daha fazla]

Yoğun Gündem

Son bir senelik zaman dilimi içerisine epeyce seminer ve eğitim sığdırdığımı ifade edebilirim. Genellikle Üniversitelerin bilişim kulüplerince düzenlenen etkinliklerde Ruby sevdamı anlatmaya çalıştım. Ayrıca DevNot etkinliklerinde de görev aldım. İşte son bir kaç ayın programı. [Daha fazla]

DevNot Developer Summit Ankara

8 Nisan tarihinde gerçekleştirdiğimiz DevNot Summit etkinliği arından sıradaki durağımız Ankara. Uzun zamandır ziyaret etme fırsatı bulamadığım, yedek subaylık anılarımla dolu Ankara'ya gitmek için şimdiden sabırsızlanıyorum. İstanbul etkinliğinde Script Tabanlı Dillerin Önemi ve Geleceği'nden bahsetmeye çalışmıştım. Ankara etkinliğimize de Ruby programlama dilini götürüyorum :) [Daha fazla]

Ruby Kod Parçacıkları 34 - Struct ve OpenStruct

Bir süredir tek günlük bir Ruby eğitimine hazırlanmaktayım. İşlerden çok vakit kalmasa da önceki notlarımı ve farklı kaynakları takip ederek bir içerik oluşturmaya çalışıyorum. Konular üzerinden geçerken struct ve openstruct kavramlarına da rastladım. Struct aslında Ruby'nin built-in sınıflarından birisi. Temel olarak bir sınıf tanımı yapmadan nitelik barındıran tip kullanımına olanak sağlıyor diyebiliriz. Aşağıdaki kod parçasını göz önüne alalım. [Daha fazla]

DevNot - Script Tabanlı Dillerin Önemi ve Geleceği

Bir kaç ay önce yaklaşık beş yıldır çalışmakta olduğum turuncu bankanın oldukça yaşlı bir ürününde değişiklik yapmamız istendi. Söz konusu ürün bir devlet kurumunun eski nesil SNA protokol tabanlı sunucuları ile iletişim kurmaktaydı. Bankanın kritik süreçlerinde rol alan bu ürün VbScript tabanlı klasik ASP ile yazılmış bir Web uygulamasıydı. Uygulamanın neredeyse 13 yaşındaydı. Geliştiricisi olan 3ncü parti firma çok uzun zaman önce kapanmıştı. [Daha fazla]

DevNot Developer Summit İstanbul

Nisan'ın 8inde DevNot adına düzenlenen birbirinden değerli konuşmacıların yer aldığı DevNot Developer Summit'de kısmet olursa Script Dillerin Önemi ve Geleceği konulu bir sunum yapacağım. Doğruyu söylemek gerekirse benim için oldukça kazık bir konu. Script dillerdeki kısa geçmişim ve katılımcılar arasında Script diller konusunda duayen olmuş isimler olduğundan biraz çekinerek hazırlandığımı itiraf etmek isterim. [Daha fazla]

Ruby Kod Parçacıkları 32 - Singleton

Ruby'nin oldukça geniş bir program kütüphanesi bulunuyor. Fırsat buldukça bazılarını incelemeye çalışıyorum. Geçtiğimiz günlerde Singleton isimli bir modüle rastladım. Kısaca tasarım kalıplarından(Design Patterns) olan Singleton deseninin kolayca uygulanmasını sağlıyor. [Daha fazla]

Duck Typing Nedir?

Son bir yıldır Ruby ve Python gibi script diller üzerinde araştırmalar yapıyor. Daha çok bu dilleri öğrenme, anlama gayretindeyim. En azından orta seviye bilgi sahibi olmak benim için yeterli. [Daha fazla]

Ruby Kod Parçacıkları 30 - Programın Çalışma Zamanını İzlemek

Diyelim ki geliştirdiğimiz kodların çalışma zamanındaki işleyişlerini izlemek istiyoruz. Sırasıyla hangi nesneler örnekleniyor, çağırılan metodlar ve varsa sonuçları hangi aşamada icra ediliyor, devreye giren C veya block çağrıları bulunuyor mu? Bu gibi sorular aslında bir uygulamayı Monitor etmek olarak da adlandırılmakta. Büyük kod parçalarında işleyiş sıralarını takip etmek ve olası istisna durumlarında kodun hangi aşamada kalmış olduğunu görmek açısından değerli bir konu. Peki Ruby kodlarının çalışma zamanı işleyişlerini nasıl izleyebiliriz. Konu ile ilgili bir çok gem veya API olsa da gömülü olarak gelen TracePoint sınıfı bize basit anlamda izleme kabiliyetleri sunmakta. Aşağıdaki örnek kod parçasını bu anlamda ele alabiliriz. [Daha fazla]

Ruby Kod Parçacıkları 29 - Kod Yazan Kodlar

Ruby programlama dilinin öne çıkan özellikleri arasında dinamiklik ve meta programlama yetenekleri de yer almaktadır. Aslında işin özeti kod yazan kodlardır diyebiliriz. Ruby yorumlamalı bir dildir ve doğal olarak her şey çalışma zamanında icra edilmektedir. Ancak bazı senaryolarda metinsel olarak gelen bir içeriğin kod parçası şeklinde değerlendirilmesi ve çalışma zamanında yürütülmesi istenebilir. Hatta çalışan kod üzerinde değişiklikler yapılabilmesi de belli ölçülerde mümkündür. Konu pek tabii benim burada anlatacağım kadar basit değil. Örneğin Amazon'da bu konu üzerine yazılmış kitaplar bulabilirsiniz. Bu yazımızda kodu çalışma zamanında üretmek veya çalışan kodu manipule etmek için yapılabileceklerden bir kaçına değinmeye çalışacağız. [Daha fazla]

GDG DevFest Edirne'de Buluşalım

Bu sene yeni yetme bir Rubyist olarak Bolu Abant İzzet Baysal Üniversitesi'nin düzenlediği GDG festivaline katılma fırsatı bulmuştum. Ardından Ruby dilini Karabük Üniversitesi'ndeki genç meslektaşlarımızla da paylaştım. Her ne kadar Google'ın bir ürünü olmasa da Ruby dilini anlatmak için bir fırsat daha buldum. Bir aksilik olmazsa 18 Aralık Pazar günü GDG Edirne'nin düzenlediği etklinlikte Ruby dilini tanıtmaya çalışacağım. Program inanılmaz derecede güzel. İtiraf etmek gerekirse diğer konulara bakıldığında arada biraz sırıtıyor gibiyim. Yine de değerli katılımcılarımıza Ruby konusundaki bilgilerimi elimden geldiğince iyi bir şekilde aktarmaya çalışacağım. [Daha fazla]

Ruby Kod Parçacıkları 28 - Multithreading ve Mutex Kullanımı

Ruby Kod Parçacıkları serimizin bir önceki bölümünde çoklu iş parçacıklarının(Multithreading) nasıl yazılabileceğini incelemeye başlamıştık. Başrol oyuncumuz olan Thread sınıfının kullanımını gördük. Lakin birden fazla iş parçacığının ele alındığı senaryolarda dikkat edilmesi gereken önemli konulardan birisi de ortak veriler üzerinde işlemler yapıldığında ortaya çıkmaktadır. Eş zamanlı olarak çalışan iş parçacıkları bazı durumlarda verinin tutarlılığının bozulmasına neden olabilir. Nitekim n sayıda iş parçacığının farklı anlarda aynı veri üzerinde işlem yapması söz konusudur. Birbirlerinin işlerini kesebilirler. [Daha fazla]

Tek Fotoluk İpucu 147 - Port Dinlemek

Diyelim ki bir sunucu üzerinde tanımlı portların anlık durumları hakkında bilgi sahibi olmak istiyorsunuz (Örneğin sunucuda SQL Server yüklü ise varsayılan 1433 portu açık mı veya ftp portu cevap verir konumda mı vb) Ruby dilinde bu tip bir işlevselliği gerçekleştirmek son derece basit. Tek yapmamız gereken makine adı ve port bilgisini kullanmak. Nasıl mı? Aynen aşağıdaki fotoğrafta olduğu gibi. [Daha fazla]

Karabük Üniversitesi Bilişim Günleri 2016

Kısmet olursa 7 Aralık günü Karabük Üniversitesi Bilişim Teknolojileri Kulübü'nün düzenlediği etkinlikte Ruby konulu bir sunum yapacağım. Uzun süredir amatör olarak ilgilendiğim Ruby programlama dilini değerli meslektaşlarıma tanıtmaya gayret edeceğim. İki gün sürecek etkinlikler boyunca birbirinden değerli konuşmacıların sunumları da olacak. [Daha fazla]

Ruby Kod Parçacıkları 27 - Hello Multithreading

Multithreading, programlamanın zor konularından birisidir. Aslında amaç işlemciye aynı andan birden fazla iş yaptırabilmek ya da bir işi parçalara bölerek eş zamanlı olarak yürütebilmektir. İşlemcinin bu farklı iş parçacıkları(Thread) arasında kısa sürelerde geçişler yapması sonucu istenen sonuçlara daha çabuk ulaşılması sağlanır. Bu, performans gerektiren bazı vakalarda oldukça önemlidir. Büyük veri kümelerinde arama yapan algoritmalar, yüksek boyutlu video görüntülerinin render eden programla, çeşitli matematik problemleri, oyun programlama ve daha pek çok alanda çoklu iş parçacığı tekniklerine başvurulur. [Daha fazla]

Ruby Kod Parçacıkları 26 - Eğlenerek Binary Dosya Okumak

Vakit buldukça Ruby programlama dili ile ilgili bir şeyler yapmaya çalışıyorum. Halen daha dilin kabiliyetlerini tanıma aşamasındayım. Geçtiğimiz günlerde de Ruby Cookbook kitabından binary dosyalar üzerinde yapılan işlemlere ait örnekleri inceliyordum. Hoşuma giden uygulamalardan birisi de MP3 dosyalarına ait Tag bilgilerinin elde edilmesiydi. Gerçek hayat örneği olduğundan benim için daha öğretici idi. Örnekleri inceledim ve kendime göre farklılaştırarak basit bir kod parçası oluşturmaya çalıştım. [Daha fazla]

Ruby Kod Parçacıkları 25 - Unit Test Yazmak

İyi yazılım geliştirmenin olmazsa olmaz parçalarından birisi de birim testleridir(Unit Tests) Tahmin edileceği üzere Test Driven Development denildiğinde(aklımızda hemen Red Green Blue - Fail, Fix, Refactoring oluşmalı) birim testleri ön plana çıkmaktadır. Pek çok programlama ortamında birim testler için hazır kütüphaneler yer alır. Ruby dilinde ise standart kütüpanede yer alan Test::Unit modülü kullanılmaktadır. Testlere dahil edilecek savlar(assert diyelim) oldukça geniştir. assert, assert_not_equal, assert_nil, assert_respond_to, assert_raise ve benzeri fonksiyonellikler söz konusudur (Kullanılabilecek savların listesine şuradan bakabilirsiniz) Aşağıdaki kod parçasında basit bir test düzeneğine yer verilmiştir. [Daha fazla]

Ruby Kod Parçacıkları 24 - Binary Tree ve Morse Kodları

Geçtiğimiz günlerde çalışma arkadaşımla aramızda gelişen teknolojiler üzerine bir takım konuşmalar geçti. Amazon Alexa'dır, Facebook'un Face Recognation teknolojileridir, Arduino'dur, Drone'lardır vs derken OCR konusuna da değindik. Bükük duran bir kağıdın fotoğrafını çeken uygulamanın, kağıt üzerindeki şekli düz bir biçimde algılayabilidiğini, bunu yapmak içinse matematik'teki Laplace denklemleri ve Fourier serilerine başvurduğunu öğrendik. Bir Matematik Mühendisi olarak bu dersleri hep teorik olarak okumuştum. Tabii o zamanlarda bu tip denklemlerin gerçek hayat uygulamalarını pek görememiştim. Bu yüzden çoğu teori soyut olarak kalmıştı. [Daha fazla]

Tek Fotoluk İpucu 141 - Dosyadan Rastgele Satır Çekmek

Elinizde N sayıda şarkı adının kayıtlı olduğu fiziki bir dosya olduğunu düşünün. Amacımız ise bu dosya içerisinden rastgele şarkılar çekmek. Ancak bunu yaparken ilgili dosyanın tamamını belleğe açmak istemiyorsunuz. Nitekim dosyayı okuma modunda açıp readlines gibi bir metod ile tüm içeriğ okuduktan sonra içinden rastgele bir satırı seçme yolunu tercih edebilirsiniz. Ama bu büyük boyutlu bir dosyanın tamamen belleğe yüklenmesine de neden olacaktır. Performans ve hız açısından farklı bir şey yapılabilmelidir. Örneğin belleğe sadece o anki satırı okuyup ileri yönlü hareket edecek bir iterasyon kodu geliştirilebilir. Peki Ruby'de bunun için nasıl bir yol izlerdiniz? Aşağıdaki fotoğraftaki gibi olabilir mi? [Daha fazla]

Tek Fotoluk İpucu 140 - Distributed Ruby(dRuby)

Eğitmenlik yaptığım dönemlerde .Net'in en zor alanlarından birisi de Remoting idi. Konu aslında Client-Server mantığına uygun olacak şekilde farklı process'ler arasında veri alışverişinin yapılmasından ibaretti ancak uygulaması web servis geliştirmek kadar kolay olmuyordu. TCP/IP bazlı ağlarda .Net Remoting epeyce iyi performans sergilemekteydi. Özellikle ağ üzerinde hareket eden nesnelerin Binary olarak serileşmesi ve TCP/IP protokolünün devrede olması hız avantajı sağlıyordu. [Daha fazla]