GoLang - Web Programlamaya Giriş 27 Mayıs 2017 Burak-Selim-Senyurt GoLang Bir web uygulamasının temel malzemeleri nelerdir? Sunucu tarafında çalışan bir çatı, içeriklerin gösterildiği dinamik web sayfaları, tasarım, görsel zenginlik katan materyaller(resimler,css'ler vb), veri depolama enstrümanları ve diğerleri. Aslında internet programcılığının ilk yılları düşünüldüğünde basit HTML sayfalarının neredeyse her tür ihtiyacı karşılayacağı düşünülüyordu. Zaman geçtikçe programlama dillerinin dinamik web sayfaları ile olan etkileşimi, istemci taraflı çalışan betiklerin sunucu taraflı kullanılabilmesi de gündeme geldi. Modern programlama dillerinin neredeyse tamamı web uygulamaları geliştirebilmek için gerekli temel donanıma sahip. Backend tarafında eş zamanlı işlemlerde yüksek performans sunan GO diliyle de web tabanlı uygulamalar geliştirebilmemiz mümkün. [Daha fazla]
Tek Fotoluk İpucu 159 - GoLang ile Fonksiyonları Parametre Olarak Kullanmak 22 Mayıs 2017 Burak-Selim-Senyurt GoLang GoLang fonksiyonel programlama konusunda oldukça fazla kabiliyete sahip. Birinci sınıf fonksiyonlar(first-class functions), yüksek öncelikli fonksiyonlar(higher-order functions), closures, birden fazla değer döndüren fonksiyonlar,function literals ve kullanıcı tanımlı fonksiyon tipleri(user defined function types) bu kabiliyetler arasında. Dili anlamaya çalışırken strings paketinde yer alan FiledsFunc fonksiyonu ile karşılaştığımda etkilendiğim bir tanımlama keşfettim. [Daha fazla]
Bir SOAP Web Servisini Proxy Olmadan WebClient ile Çağırmak 22 Mayıs 2017 Burak-Selim-Senyurt XML Web Services Geçtiğimiz günlerde şirket dışı bir kurumun web servislerini çağırma ihtiyacımız oldu. Lakin Header bilgisinde bir OAuth Token değeri de geçmemiz gerekiyordu. Bu Header bilgisini SOAP bazlı Web servisine nasıl ekleyeceğimizi düşünürken WebClient sınıfı ile SOAP bazlı servisleri de çağırabileceğimizi öğrendim. [Daha fazla]
Tek Fotoluk İpucu 158 - GoLang'de Constructor var mı? 16 Mayıs 2017 Burak-Selim-Senyurt GoLang GO tam anlamıyla nesne yönelimli bir dil değildir. Object yerine aslında Type kavramının öne çıktığı bir ortam söz konusudur. Geliştirici tanımlı tipler için struct'lardan yararlanılır ve onların varsayılan olarak doğal yapıcı metodları(constructor) vardır. Ancak istersek kendi yapıcı metodlarımızı da işin içerisine dahil edebiliriz. [Daha fazla]
GoLang - Concurrency (goroutine, channel) 15 Mayıs 2017 Burak-Selim-Senyurt GoLang Go dilinin en önemli özelliklerinden birisi de eş zamanlı görevlerdeki performansıdır. Concurrency ile bir sürece ait n sayıda görevi(Task) aynı anda başlatabiliriz. Okuduğum kaynaklarda buna verilen en güzel örnek web sunucuları. İstemcilerden gelen talepler(Request) web sunucusu üzerinde ait oldukları uygulamalara yönlendirilip işletilmekte. Hiç bir talep için bir diğerini bekleme söz konusu değil. Web sunucusu bu görevleri eş zamanlı olarak yürütebilmekte. Concurrency'deki temel amaç da bu zaten. Görevleri aynı anda işletebilmek. Go dilinde Goroutine ve Channel yapıları ile Concurrency işlemlerini gerçekleştirebiliriz. [Daha fazla]
GoLang - Interface Kavramı 07 Mayıs 2017 Burak-Selim-Senyurt GoLang GO dilinde metod şablonlarının koleksiyonunu tutmak için kullanılan tiptir. Burada iki ayrı nokta vardır. Birincisi gövdesi olmayan metod tanımlamalarını içermesi, ikincisi ise kendisinin bir tip olmasıdır. [Daha fazla]
Ruby Kod Parçacıkları 34 - Fiber ve Eş Zamanlı Programlama 05 Mayıs 2017 Burak-Selim-Senyurt Ruby 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]
Tek Fotoluk İpucu 157 - GO ile Bir Queue Yazalım mı? 04 Mayıs 2017 Burak-Selim-Senyurt GoLang Go programlama dilinde C#,Java veya bunlara benzer dillerden gelenler için söz konusu olan pek çok kolaylık bulunmayabilir. Söz gelimi Stack veya Queue gibi bir koleksiyon kullanmak istersek bu veri yapısını bizim tasarlamamız gerekebilir. Nitekim bu adresteki standart kütüphanelerde Queue ile ilgili bir şey bulamadığımı ifade edebilirim(aslında github üzerinde açık kaynak ek kütüphaneler var) Olsa da olmasa da biz kendimiz de bir queue veri yapısı tasarlayabiliriz. Aynen aşağıdaki fotoğrafta olduğu gibi. [Daha fazla]
JSON to BSON 01 Mayıs 2017 Burak-Selim-Senyurt C# Amacımız çalışan listesinin içeriğini BSON formatında bir dosyaya yazdırmak ve sonrasında bu içeriği tekrar okuyup ters-serileştirme işlemini gerçekleştirerek ekrana yazdırmak. [Daha fazla]
Yoğun Gündem 20 Nisan 2017 Burak-Selim-Senyurt Seminerler 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 20 Nisan 2017 Burak-Selim-Senyurt Seminerler 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]
Tek Fotoluk İpucu 156 - Sevimli Ruby Block'ları 16 Nisan 2017 Burak-Selim-Senyurt Ruby Farklı programlama dillerini çalışırken alışkın olduğum programlama dillerindeki ortamlardan çok daha farklı kabiliyetleri görme şansını buluyorum. Bazı dillerin kabiliyetleri bana çok ilgi çekici geliyor. Örneğin Ruby dilindeki block kavramı. [Daha fazla]
Ruby Kod Parçacıkları 34 - Struct ve OpenStruct 10 Nisan 2017 Burak-Selim-Senyurt Ruby 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]
Tek Fotoluk İpucu 155 - C# 7.0 Tuple İyileştirmeleri 10 Nisan 2017 Burak-Selim-Senyurt C# 7.0 C# 7.0 tarafında geliştiricileri mutlu eden iyileştirmelerden birisi de Tuple tipi ile ilgili. Klasik olarak bir tip tanımı yapmamıza ihtiyaç duymadan özellikle metodlardan dönüş yaptığımız noktalarda faydalanabildiğimiz generic Tuple tipinin en büyük handikapı üye isimlendirmesiydi. Aşağıdaki kod parçasında bu durumu görebilirsiniz. [Daha fazla]
DevNot - Script Tabanlı Dillerin Önemi ve Geleceği 07 Nisan 2017 Burak-Selim-Senyurt Seminerler 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]
GoLang - Pointers 01 Nisan 2017 Burak-Selim-Senyurt GoLang 1993 yılında girdiğim Matematik Mühendisliği bölümünün bilgisayar programlama ağırlıklı bir müfredatı vardı. GWBasic ile başlayan maceramızda Pascal, C, C++, Cobol gibi programlama dillerine uğradık. Sınavlarımız çoğunlukla kağıt üzerinde olurdu. Basit for döngülerini dahi kağıt üzerinde yazarak algoritma çözmeye çalışırdık. [Daha fazla]
Tek Fotoluk İpucu 154 - C# 7.0 out İyileştirmesi 20 Mart 2017 Burak-Selim-Senyurt C# 7.0 Henüz C# 6.0'ın nimetlerini şirket projelerinde deneyimleme fırsatı bulamamışken yakın zaman çıkan Visual Studio 2017 ile birlikte gündeme oturan C# 7.0 kabiliyetlerini yeni yeni keşfetmeye başlıyorum. C# 7.0 tarafında epey yenilik var. Bunlardan birisi de özellikle TryParse operasyonlarında ele alınan out kullanımına yönelik. En yaygın senaryo string bir içeriğin sayısal tipe dönüştürülmesi sırasında TryParse fonksiyonunun kullanılması. Normal şartlarda aşağıdaki kod parçasındaki gibi gerçekleştirdiğimiz bir operasyon. [Daha fazla]
C# 6.0 - Collection Initializers için Add Metodunu Yönlendirmek 19 Mart 2017 Burak-Selim-Senyurt C# 6.0 C# 6.0 ile gelen yeni özelliklerden birisi de geliştirici tanımlı koleksiyonlar içerisindeki üyeler için Collection Initializers kullanılabilmesi. Bunun için Add genişletme metodunun istenen metoda atanması yeterli. Konuyu daha iyi anlamak için C# 6.0 öncesinden bir örnekle işe başlayalım. Elimizde aşağıdaki gibi bir sınıf olduğunu düşünelim. [Daha fazla]
GoLang - defer, panic ve recover Kavramlarını Tanıyalım 10 Mart 2017 Burak-Selim-Senyurt GoLang Geçtiğimiz günlerde panic anahtar kelimesini incelerken aslında rescue ve defer kavramları ile birlikte kullanımının daha anlamlı olduğunu gördüm. Pek tabii defer ve rescue nedir öğrenmem gerekiyordu. Bu makalemizde bahsetmiş olduğumuz kavramları basitçe anlamaya çalışacağız. [Daha fazla]
DevNot Developer Summit İstanbul 06 Mart 2017 Burak-Selim-Senyurt Seminerler 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]
GoLang - Slice ve Map Kavramları 03 Mart 2017 Burak-Selim-Senyurt GoLang Gopher olma çalışmalarına veri türlerini tanıyarak devam ediyorum. Geçtiğimiz günlerde Slice ve Maps veri türlerini anlamaya çalıştım. Her ikisi de sağladıkları esneklikler açısından kullanışlı. Şimdi gelin kısaca bu türleri tanıyalım. [Daha fazla]
Tek Fotolu İpucu 153 - Config Sekmesini Harici Dosyadan Okumak 27 Şubat 2017 Burak-Selim-Senyurt .Net Temelleri Uygulamalarımıza ait pek çok parametrik bilgiyi zaman zaman config uzantılı dosyalar içerisinde tuttuğumuz çok olmuştur. Web tabanlı uygulamalarda web.config veya exe tipi uygulamalarda app.config gibi. Bu dosyalarda standart olarak kullanılan içerikler mevcuttur. appSettings, connectionStrings sanıyorum en popüler olanlarından. Peki bu tip konfigurasyon segmentlerinin harici dosyalara refere edilebileceğini biliyor muydunuz? Örneğin uygulamanın appSettings içeriğinin farklı bir dosyadan gelmesini sağlayabiliriz. Nasıl mı? [Daha fazla]
GoLang - Kalıtımsız Bir Dünya 26 Şubat 2017 Burak-Selim-Senyurt GoLang Go hızlı ve performanslı bir programlama dili olarak anılıyor. Diğer yandan nesne yönelimli dil özelliklerini büyük ölçüde içermediği gibi bir gerçek de var ortada. [Daha fazla]
AREL Üniversitesi Bilişim, Teknoloji ve Endüstri 4.0 Etkinliği 24 Şubat 2017 Burak-Selim-Senyurt Seminerler Kısmet olursa 7 Mart 2017 günü AREL Üniversitesi Bilgisayar Mühendisliği Kulübü tarafından düzenlenen "Bilişim, Teknoloji ve Endüstri 4.0" isimli etkinlikte Ruby programlama dili ile ilgili bilgilerimi aktarmaya çalışacağım. Dolu geçecek etkinliklte ilgi çekici ve günümüzün popüler konuları da yer alıyor. İşte program. [Daha fazla]
GoLang - Basit HTTP Web Server Yapımı 21 Şubat 2017 Burak-Selim-Senyurt GoLang Geçtiğimiz günlerde REST(Representational State Transfer) servislerinin nasıl yazıldığına bakarken bir kaç yeni şey daha öğrendim. Amacım HTTP Get metodu ile basit REST servis talebi yapmak ve örneğin bir ürün listesini JSON(JavaScript Object Notation) formatında istemciye döndürmekti (Daha önceden Ruby ve Python'da REST servislerin nasıl yazılabileceğine de bakmıştım) Go tarafındaki durumu araştırırken HTTP olarak gelecek talepleri nasıl karşılayabileceğimi de gördüm. [Daha fazla]