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]
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]
Tek Fotoluk İpucu 152 - DebuggerDisplay Niteliği ile Debugging Daha Sevimli Olabilir 17 Şubat 2017 Burak-Selim-Senyurt Tek Fotoluk Ipucu Nitelikler bildiğiniz üzere çalışma zamanına bilgi taşıma amacıyla kullanılan önemli kabiliyetlerdendir. Visual Studio tarafında da işimize yarayan bir çok nitelik(Attribute) yer alır. Bunlardan birisi de DebuggerDisplay niteliğidir. Önce aşağıdaki ekran görüntüsündeki kod parçasını göz önüne alalım. [Daha fazla]
Ruby Kod Parçacıkları 33 - Observer Deseninin Uygulanışı 13 Şubat 2017 Burak-Selim-Senyurt Ruby Bir önceki kod parçasında Singleton kalıbının Ruby tarafında nasıl uygulandığını incelemeye çalışmıştık. Hatırlayacağınız gibi hazır Singleton modülünü kullanarak bu işi gerçekleştirmek son derece kolaydı. Benzer durum Observer tasarım kalıbı için de geçerli... [Daha fazla]
Ruby Kod Parçacıkları 32 - Singleton 04 Şubat 2017 Burak-Selim-Senyurt Ruby 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]
GoLang - Harici Paket(Package) Yazıp Kullanmak 28 Ocak 2017 Burak-Selim-Senyurt GoLang Go dilinin paketler üzerine kurulu bir yapısı olduğunu biliyoruz. fmt, math, strings, net/http, time, log, encoding/json ve benzerleri şu kısa go geçmişimde kullandıklarımdan sadece bir kaçı. Geliştirdiğimiz ürünlerde ortak sorumlulukları barındıran fonksiyonellikleri aynı paketler içerisinde toplamak son derece mantıklı. [Daha fazla]
Duck Typing Nedir? 20 Ocak 2017 Burak-Selim-Senyurt Ruby 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]
Gopher Olma Çalışmaları 13 Ocak 2017 Burak-Selim-Senyurt GoLang Geçtiğimiz sene Ruby diliye uğraşmaya başlamıştım. Ruby dilini sevenler ve ona gönül verenlere Rubyist deniyor. Benzer bir yaklaşım meğer Go tarafında da varmış. Onlarda kendilerine logolarına esin kaynağı olan Gopher diyorlarmış. Aslında Go dilinin logosu gerçekten bir canlıdan esinlenilerek tasarlanmış. Yaklaşık 15 ila 20 cm boylarında olan gopher'lar oldukça sevimliler(Bana göre) Elbette logo çok daha sevimli. Bu arada Gopher aynı zamanda TCP/IP tabanlı HTTP öncesi bir internet protokolu olarak da geçiyor. Detaylara Wikipedia adresinden bakabilirsiniz. [Daha fazla]
Tek Fotoluk İpucu 151 - C#, Reflection ve About Info 13 Ocak 2017 Burak-Selim-Senyurt Tek Fotoluk Ipucu Programlardaki About Info kısımlarını bilirsiniz. Yazdığımız uygulama hakkında bir takım bilgiler verir. Genellikle ürünün adı, bir iki cümle ile ne yaptığı, üreticisi ve hatta versyion numarası ve benzeri bilgiler yer alır. Micorosoft .Net tarafında aslında bu tip bilgileri Assembly'a ait niteliklerde(attribute) belirtiriz. Aynen aşağıdaki ekran görüntüsünde olduğu gibi. [Daha fazla]
Tek Fotoluk İpucu 150 - Sertifika Tabanlı REST Çağrısı Yapmak 13 Ocak 2017 Burak-Selim-Senyurt Tek Fotoluk Ipucu Geçtiğimiz günlerde üzerinde çalıştığımız projede şöyle bir ihtiyaç oldu: Uygulamanın şirket ağı dışındaki bir kuruma ait REST(Representational State Transfer) tabanlı servis noktalarını kullanması gerekiyordu. Bu noktalara göndereceğimiz HTTP Get,Post taleplerine göre bir takım sonuçlar alacak ve kurum içi süreçleri işletecekti. Söz konusu servis ve sunduğu EndPoint'ler ile olan iletişim ise X509 standardındaki bir sertifika üzerinden gerçekleştirilmeliydi... [Daha fazla]
Go Dilini Anlamaya Çalışırken 06 Ocak 2017 Burak-Selim-Senyurt GoLang Liseye başladığım 1990 yılından beri arkadaşım ve aynı zamanda adaşım olan sevgili dostum Burak ile üniversite yıllarında öğrenip oynamaya başladığımız GO oyunu geldi aklıma. Öğrenmesi zor, kavramak için yıllar geçmesi gereken, iyi bir oyuncu olmak için sizden daha iyi birisiyle yine yıllarca maç yapmanızı gerektiren zevkli bir strateji oyunu. Ünlü matematikçi John Forbes Nash'ten Albert Einstein'a, Alan Turing'den Bill Gates'e tarihi değiştiren pek çok kişinin de oynadığı bir oyun. [Daha fazla]
Tek Fotoluk İpucu 149 - SecureString ile Caydırıcılık 05 Ocak 2017 Burak-Selim-Senyurt .Net Temelleri Elimizde veritabanı bağlantı bilgisi, kullanıcı şifresi, uygulamamıza özel port numaraları, finansal oranlar gibi hassas olabilecek içerikleri tutan bir sınıf olduğunu düşünelim. Bu sınıfı kullanmak için doğal olarak bir şekilde örneklenmesi gerekir. Nesnenin kullanılabilir olması içeriği ile birlikte belleğe açılması anlamına da gelir. Uygulama, .Net'in çalışma zamanı ortamında kendisi için oluşturulan Application Domain içerisinde yaşar. [Daha fazla]
Ruby Kod Parçacıkları 31 - Kendi gem Paketimizi Hazırlamak 04 Ocak 2017 Burak-Selim-Senyurt Ruby Bildiğiniz gibi günümüz popüler programlama dillerinin çoğunun internet üzerinden ulaşılabilen paket destekleri mevcut. Özellikle açık kaynak tabanlı ürünlerde önem verilen bir konu olduğu ortada. Yazılımcıların birbirlerinin kullanımına açtığı bu paketler Ruby tarafında da mevcut ve gem olarak adlandırılmakta. Hatta şu adresten bir çok değerli mücehvere ulaşabilir kendi paketlerinizi de yükleyebilirsiniz. Peki kendi gem paketlerimizi en basit haliyle nasıl yazabiliriz? Hatta yazdığımız bir gem'i herkesin kullanımına nasıl açabiliriz? Gelin bu konuyu kısaca incelemeye çalışalım. [Daha fazla]
Ruby Kod Parçacıkları 30 - Programın Çalışma Zamanını İzlemek 04 Ocak 2017 Burak-Selim-Senyurt Ruby 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]