Tek Fotoluk İpucu 112 - Acaba Bu Dosya Microsoft Office Open XML(OOXML) Formatında mı?

Diyelim ki bir yerlerde saklanmış ve kod tarafında byte[] array olarak ifade ediebilecek çeşitli tipte dosya içerikleriniz var ve siz bunların Microsoft Office Open XML formatında olup olmadıklarını anlamak istiyorsunuz. Bir süreci başlatmadan önce DB gibi bir ortamda duran dosyaların gerçekten de istenen tipte olup olmadığını anlamak kritik bir operasyon olabilir. Peki bu tip bir kontrolü gerçekleştirmek için nasıl bir kod parçasına ihtiyacımız olur? [Daha fazla]

ESOGU ve DEU 2015 Bilişim Etkinlikleri

Önümüzdeki hafta benim için epey yoğun geçecek. İlk olarak 7 Mayıs' da ESOGU Bilişim Günlerinde, SOA Gerçekleri' ini anlatacağım. Bir sonraki gün ise istikamet İzmir. İzmir' de günün ilk saatlerinde DEU Matematik Topluluğunun düzenlediği Kariyer Günleri'nde , Finans Sektöründe Nasıl Verimli Yazılımcı Olunur? konulu sunumu gerçekleştireceğim. Öğleden sonra ise DEU Bilişim Günlerinde, Enterprise Applications'ı anlatacağım. Biraz yorucu olsa da, genç meslektaşlarımla buluşacağım ve onlarla bilgilerimi paylaşabileceğim için çok mutlu ve heyecanlıyım. Umarım hepimiz için faydalı geçecek bir etkinlik olur. [Daha fazla]

TFİ 111 - Dosya Adı İçinden Geçersiz Karakterleri Çıkartmak

Diyelim ki elinizde bir takım dosya adları var. Bu dosya adları herhangi bir kaynaktan okunuyor. Ancak bazı dosya adlarında geçersiz karakterler yer aldığını tespit ediyorsunuz(? : < vb) Siz de dosya adlarını kendi uygulamanız içerisinde değerlendirirken bu geçersiz karakterlerden arındırarak hareket etmek niyetindesiniz. Ne yaparsınız? Bunun için bir genişletme fonksiyonu(extension method) yazmak isteseniz nasıl hareket edersiniz? [Daha fazla]

TÜBİTET Bilişim Şenlikleri 2015

Üçüncü kez davet edildiğim Trakya Üniversitesi Bilişim Şenlikleri, 27-28 Nisan 2015 tarihleri arasında Balkan Kongre Merkezi'nde gerçekleşecek. Etkinliğe "SOA Gerçekleri" isimli sunumum ile katılacağım. Trakya bölgesindeki yazılım sektörü çalışanlarının da katılacağını beklediğim oturumlarda, birbirinden değerli konuşmacılar da yer alacak. [Daha fazla]

Nedirtv Yazılım Teknolojileri - SOA Gerçekleri Sunumu

4 Nisan 2015 Cumartesi günü Kadir Has Üniversitesinde gerçekleştirilen Nedirtv Yazılım Teknolojileri Seminer' lerinde anlattığım SOA Gerçekleri konulu oturumun video kayıtlarını Youtube kanalımız üzerinden izleyebilirsiniz.(Ayrıca diğer oturumların kayıtları da zaman içerisinde yüklenecektir. Takipte kalın derim) İtiraf etmek gerekirse sunum teknikleri konusunda epeyce paslanmışım :) Grafik Tableti(Tedariki ve desteği için Uğur Umutluoğlu hocama sonsuz teşekkürler) kullanmadaki başarısızlığım bir yana, SOA' nın tanımını yapmaya çalıştığımız bu oturuma katılan ve beni sabırla dinleyen herkese teşekkür ediyorum. [Daha fazla]

SOA Nedir?

Yazılım dünyasının zor anlaşılan kavramlarından birisi de çeşitli mimari modellemeleridir. SOA(Service Oriented Architecture) en popüler yazılım mimarilerinden birisi olmakla beraber, anlaşılması ve uygulanması en zor olanlarındandır. Gelin SOA' yı dilimiz döndüğünce anlamaya ve en önemlisi hangi ihtiyacı/ihtiyaçları çözdüğünü bulmaya çalışalım. İlk olarak basit ve genel bir tanımlama ile işe başlamakta fayda var. [Daha fazla]

9ncu NedirTv Geleneksel Yazılım Teknolojileri Seminerleri

Bu sene 9ncu kez düzenlenecek olan Geleneksel Yazılım Teknolojileri Seminerleri'nde bomba gibi konular bizleri bekliyor. Yıllardır editör olarak görev aldığım NedirTv tarafından organize edilen seminerler 4 Nisan Cumartesi günü Kadir Has Üniversitesi'nde paralel oturumlar şeklinde gerçekleştirilecek. Big Data' dan Clean Code'a, MVVM' den Scrum' a, Test Güdümlü Tasarım'dan, SOA Gerçekleri'ne, Çapraz Platform'lardan, Web Uygulamalarının Hacklenmesine, Tasarım Kalıplarından Xamarin'e kadar pek çok konudan bahsedilecek. Kaçırılmaması gereken bir etkinlik olduğunu düşünüyoruz. Hepinizi bekleriz. [Daha fazla]

İstanbul Aydın Üniversitesi Bilişim Konferansı

14 Mart 2015 Cumartesi günü, İstanbul Aydın Üniversitesi Matematik Bilgisayar bölümünün davetlisi olarak Bilişim Konferansı etkinliğinde olacağım. "Finans Sektöründe Nasıl Verimli Yazılımcı Olunur?" konulu bir oturum gerçekleştireceğim. Etkinlikte Savaş Doğan, Muhammed Cuma Tahiroğlu ve Mert Sarıca gibi çok değerli isimler de yer alacak. Organizasyonda emeği geçen Burak Aras Yılmaz, Halit Güvenili ve Savaş Yılmaz' a çok teşekkür ederim. Davetleri ile bizleri çok mutlu ettiler. [Daha fazla]

Tasarım Desenleri – Template Method

Düzenli olarak teknik paylaşımlarda bulunan internet yazarlarının karşılaştığı en büyük sorunlardan birisi, hızla gelişen teknoloji nedeniyle ele alınan konuların kolayca eskimesidir. Hangi firma olursa olsun bu kural geçerlidir. Bu eskitme işinde elbette başı çeken bir kaç firma var. Zaman zaman yazarların serzenişte bulunup kızdığı Microsoft, Oracle, Google ve diğerleri. Pek tabi teknik yazıların bir yaşam ömrüne sahip olması, kalıcı olan içerik sayısının daha kıymetli olmasına neden olmaktadır. Söz gelimi bir programlama dilinin temel özellikleri, dilden bağımsız düşünülebilen matematik algoritmaları gibi mevzular kolay kolay eskimezler. Hatta eskimeyen konuların başında tasarım kalıpları(Design Patterns) gelir. [Daha fazla]

WCF 4.5–Built-In UDP Desteği

TCP/IP protokolünün katmanlarını incelediğimizde sırasıyla Ağ(Network), Internet, İletişim ve Uygulama katmanlarından oluştuğunu görürüz. İletişim katmanında TCP ve UDP(User Datagram Protocol) olmak üzere iki farklı protokol seçeneği bulunmaktadır. UDP protokolü, minimum kabiliyet ile hızlı bir iletişimin kullanılabilmesine olanak tanımaktadır. UDP, Transaction yönlendirmeli bir protokoldür ve TCP gibi mesajın teslim edildiğine dair bir garanti beklememektedir. Bu kontrolsüzlük, onun hızlı olmasının nedenlerinden de bir tanesidir. Diğer yandan, bu iletişim şekli nedeni ile verinin doğru iletilip iletilmediğini de kontrol etmemektedir. Pek tabi hız için söz konusu olan bu ödün vermeler güvenli olmayan bir iletişimin de doğal sonucudur. [Daha fazla]

Managed Extensibility Framework - Hello World

Günümüzde uygulamaların genişletilebilir olması önemli bir konu. Modüler olarak da nitelendirebileceğimiz bu felsefe ile bir uygulamanın kullanıcıları tarafından kolayca genişletilebilmesi amaçlanır. Hatta akıllı uygulamaların kendilerini bu şekilde genişletmesi de mümkündür. Modülerliği kazandırmak için kullanabileceğimiz farklı yöntemler vardır. Bunlardan belki de en basiti Interface tiplerini ve Reflection' ı kullanarak uygulamanın standart fonksiyonelliklerini genişletilebilir şekilde dışarıya açmaktır. Basittir ancak geliştiricinin iyi tasarlamasını gerekitir ve kod maliyeti yükselebilir. [Daha fazla]

Biyütıful Kod - Ninject ile Bir Dependency Injection Macerası

Her yazılım geliştirici özellikle büyük bir projeye girdiğinde kodlarının kaliteli olması için uğraşır. Bu yönde adımlar atar. Çoğu zaman bu bir sanata dahi dönüşebilir. Okunabilir kodlar oluşturmanın dışında, mimari açıdan büyüleyici olan, yeniden kullanılabilirliğin üst seviyede olduğu, fazla uğraşılmadan genişleyebilen ürünler ortaya çıkartmak en büyük gayelerden birisi haline gelir. Martin Fowler' ın ilkeleri sıkı sıkıya takip edilir. Kurumsal çözüm içerisinde Fluent API' ler kullanılmaya, "Dependency Injection Container" gibi kavramlar konuşulmaya başlanır. Ne kadar başarılabilir bilinmez ama amaçlardan birisi de Biyütıful Kodu ortaya çıkartmaktır. [Daha fazla]

WCF 4.5–ChannelFactory Tipi için Caching Kullanımı

Bir WCF(Windows Communication Foundation) servisi ile onun tüketicisi olan istemci arasındaki iletişimde önem arz eden konulardan birisi de kanaldır(Channel). Bu kanalın oluşturulması görevini ChannelFactory tipi üstlenmektedir. İstemci açısından bakıldığında bir kanalın oluşturulması aslında servisin bir Proxy tipinin üretilmesi ve uzak metod çağrıları için gerekli iletişim ortamının sağlanması anlamına gelmektedir. Bir kanal esas itibariyle EndPoint odaklı üretilir. Dolayısıyla WCF' in ABC'si olarak nitelendirilen Address Binding Contract üçlemesi üzerine inşa olunur(ki bu da WCF Service EndPoint tanımıdır) [Daha fazla]

Decimal to Binary to Hexadecimal

Görünen o ki evrenin hemen her alanında matematiğin izlerine rastlamaktayız. İşin gerçeği bildiğimiz tüm bilimler illaki bir ucundan da olsa matematiğe bulaşmak zorunda kalmıştır/kalmaktadır/kalacaktır. Söz gelimi bilgisayar bilimlerini göz önüne alalım. Bilgisayar bilimleri deyince işin içerisine elektronikten tutunda yazılıma kadar geniş bir alan girmektedir. Hatta kapalı ve açık devre ile başlayan ampüllerin zaman içerisinde 1 ve 0’ lar olarak anıldığı ve karşımıza anlamlı, işlenebilir veri olarak çıktığı bir durum da söz konusudur. [Daha fazla]

Yazılım Evreninde Kaybolmadan Nasıl İlerlenir?

Bugün benim için yine özel günlerden birisi. Mezun olduğum Matematik Mühendisliği bölümündeki genç arkadaşlarımla bir araya gelecek ve yazılım alanında ilerlemek isteyenler için bilgi ve tecrübemi paylaşma fırsatı bulacağım. Kendimi evimde hissettiğim bir etkinlik daha olacak. Emeği geçen herkese buradan sonsuz teşekkürlerimi sunmak isterim. [Daha fazla]

Entity Framework - Generic Repository ve Unit of Work Uyarlaması

DDD denilince aklımıza daha çok veri odaklı uygulamalar gelir ve bu tip ürünlerde RDBMS(Relational Database Management System) lerin yeri hatırı sayılır ölçüde fazladır(Her ne kadar son yıllarda NoSQL cephesinde önemli gelişmeler ve kullanımda ciddi artışlar olsa da…) Hal böyle olunca O/RM(Object Relational Mapping) araçlarının kullanımı da önem kazanmaktadır. Yıllardır hayatımızda olan bu araçlar modellerin nesnel olarak inşasında da önemli bir yere sahiptirler. Lakin Object Oriented dünyasının kuralları içerisinde yaşarlar ve bu yüzden bazı kurumsal prensipleri uygulamaları gerekmektedir. [Daha fazla]

WCF–Custom AuthenticationService

WCF(Windows Communication Foundation) ile servis yazan bir geliştiriciye, “en çok hangi konuların uygulanmasında zorlanıyorsun?” diye sorsak, sanıyorum ki ilk sıralardaki maddelerde şu anahtar kelimeler yer alıyor olacaktır; Security, Authentication, Authorization. Her ne kadar WCF’ in konfigurasyon bazlı özellikleri ve getirdiği dekleratif yaklaşım bu işlemlerin mümkün mertebe kolay uygulanabilmesini öngörse de, çabuk unutulan konular olduklarından sık sık kitapları ve blogları tekrardan karıştırmak zorunda kalmaktayız. [Daha fazla]

Finans Sektöründe Nasıl Verimli Yazılımcı Olunur - Sunum ve Video

Sunumda, Junior(İşe yeni başlayan geliştiriciden) seviyeden Consultant(Danışman) pozisyonuna uzanan süreçteki izlenimler ela alınmaktadır. Bu izlenimler elde edilirken, yaşanan tecrübeler ve çevresel gözlemler göz önünde bulundurulmuştur. Teknik detaydan ziyade insan psikolojisi üzerine yoğunlaşılmış daha verimli olunması için gerekebilecek temel nitelikler sadece öneri olarak sunulmuştur. İki ana kısımdan oluşan sunumun birinci bölümünde, yazılımcıların temel karakteristik özellikleri ve çevresi tanımlanır. İkinci bölümde ise verimliliği arttırmak üzerine bazı ipuçlarına yer verilir. [Daha fazla]

Bilişim Sohbetleri 22 - Yazılım Sektöründe .NET'in Yeri ve Önemi

Geçtiğimiz günlerde değerli üstadlar Mimar Aslan ve Orhan Eripek' in konuğu olarak, Uğur Umutluoğlu hocam ile birlikte Bilişim Sohbetleri programına katıldım. Yaklaşık 2,5 saatlik keyifli bir söyleşi oldu. Ağırlıklı olarak .Net teknolojilerinin sektördeki yeri üzerine konuşmaya çalıştık. Youtube üzerinden canlı olarak yayınlanan söyleşi umarım siz değerli okurlarımız içinde faydalı olmuştur/olur. [Daha fazla]

WCF–SOAP Servislerinde Custom Header Kullanmak

Bazen kurum içerisinde kullanılan SOAP(Simpe Object Access Protocol) bazlı servisler istemcilerin kimliklerine göre operasyonlarını farklılaştırmak isterler. Böyle bir durumda istemcilerin kendilerini servis tarafına bir şekilde tanıtmaları ve özelleştirilmiş operasyon için gerekli bilgileri iletmeleri beklenir. En bilinen yollardan birisi de SOAP zarfının(Hah işte mektup meselesi ile bağlayabildiğimiz nokta) Header kısmına bu tip bilgileri ilave etmektir. XML Web Service zamanlarından beri var olan bu yaklaşım, WCF tabanlı SOAP servisleri için de geçerlidir. Pek tabi Header bilgisi network trafiğini dinleyenler tarafından yakalansa da sorun teşkil etmeyecek vakalarda ele alınması daha uygundur. [Daha fazla]

Ankara Yazılım Teknolojileri Seminerleri

Hatırlayacağınız üzere Nedirtv?com ekibi olarak İstanbul Şehir Üniversitesinde, yazılım teknolojileri üzerine bir etkinlik gerçekleştirmiştik. Benzer bir etkinliği Ankara' da Windows Programlama Topluluğu' nun bir davetlisi olarak 29 Kasım Cumartesi günü gerçekleştireceğiz. Muhammed Cuma Tahiroğlu' nun Fonksiyonel Programlama, Ercan Bozkurt' un Sanal Gerçeklik, Arda Çetinkaya' nın Scrum konularını ele alacağı etkinliğe ben de NoSQL dünyası ile katkıda bulunmaya çalışacağım. [Daha fazla]

Nedirtv Yazılım Teknolojileri Semineri Sunumu ve Video Kaydı

Geçtiğimiz günlerde İstanbul Şehir Üniversitesinde, Nedirtv?com olarak gerçekleştirdiğimiz Yazılım Teknolojileri etkinliğindeki sunumuma aşağıdaki bağlantıdan ulaşabilirsiniz. Eğer sunumu indirirseniz, notlar kısmında yer alan açıklamalardan da yararlanabilir ve slaytların içerikleri hakkında daha fazla bilgi sahibi olabilirsiniz. Bu şekilde konu bütünlüğünü takip etmenizin de kolaylaşacağını düşünmekteyim. Diğer yandan bir süre önce YouTube kanalımıza yüklediğimiz video kaydını da izleyebilirsiniz. [Daha fazla]

Entity Framework–İki Entity Bir Table ile Lazy ve Eager Loading

Özellikle içerisinde CLOB veya BLOB benzeri alanlar barındıran tabloların Entity Framework tarafındaki kullanımlarında network yükünü hafifletmek adına bir tablonun iki Entity ile ifade edilebilmesi düşünülebilir. Böyle bir durumda Lazy Loading’ i tablo içerisindeki alanlar bazında uygulama şansına sahip oluruz. Bu, özellikle LINQ(Language INtegrated Query) sorgularını işlettiğimiz yerlerde performans açısından faydalı bir iyileştirmedir. Kısacası bir tablonun kendi alanları içerisinde ilişki kurup bunu Entity seviyesinde ifade etmemiz gerekmektedir. Gelin basit bir örnek üzerinden ilerleyerek konuyu incelemeye çalışalım. [Daha fazla]

TFİ 110 - Control Tipini Extend Edip Basit Bind İşlemleri Gerçekleştirmek

Diyelim ki, geliştirdiğiniz Windows Forms tabanlı ekranlarınızdaki kontrollerin içerikleri farklı bir veri kaynağından(Strongly Typed özellikte) geliyor ve siz bunları kontrollerin ilgili özelliklerine bağlayacak generic özellikte bir metod geliştirmek istiyorsunuz. Doğrudan özelliklere değer set etmek ile uğraşabilirsiniz de ama, veri kaynağından okuma yapan kod parçasının içerisinde bu işlemi merkezileştirmeyi de düşünüyorsunuz. Ancak ilk adım olarak Control türevli tipler için bir Extension metod üzerinden özelliklere değer bağlama işlemlerini yapmak istiyorsunuz. Nasıl bir yol izlersiniz? [Daha fazla]