Foto İpucu
Foto İpucu kategorisinde toplam 162 yazı var.Sayfa 1 / 9.
-
Tek Fotoluk İpucu 160 - Bir Sertifikanın Base64 Encoded Değerini Bulmak
Önceki yazımızda WsHttpBinding kullandığımız sertifika tabanlı bir WCF senaryo çalışmamız vardı. Aynı örneği göz önüne alarak BasicHttpBinding kullanabileceğimizi de belirtelim. Nitekim bu bağlayıcı tipi ile de Message tabanlı güvenliği sertifika bazlı gerçekleştirebiliriz. Bunun en gerekli sebeplerinden birisi de servis tüketicilerinin eski nesil uygulamalar olabilmesi sebebiyle sadece SOAP 1.1 haberleşme kurmasıdır. Olmaz demeyin oluyor. Geliştirmekte olduğumuz projede buna benzer bir ihtiyaçla karşılaştık. Bazı servis tüketicilerimiz sadece SOAP 1.1 paketi gönderebilir durumdalar. Tabii öncelikle bizim.Net ortamında bu senaryoyu test edebilmemiz gerekmekteydi. Bağlayıcı tipini belirledik, Message güvenliğini ayarladık, sertifika tanımlamalarını yükledik ve servisi ayağa kaldırıp istemciye proxy tipini indirttik. İstemci web.config dosyasında gerekli ayarlamaları yaptık. Ne varki istemci tarafındaki endpoint bildiriminde yaptığımız aşağıdaki örnek tanımlama işe BasicHttpBinding tipi özelinde işe yaramadı ve çalışma zamanında “The request message must be protected” şeklinde hata aldık.
-
Tek Fotoluk İpucu 159 - GoLang ile Fonksiyonları Parametre Olarak Kullanmak
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 (çeviremedi:)), birden fazla değer döndüren fonksiyonlar (multiple return values), literals ve kullanıcı tanımlı fonksiyon tipleri (user defined function types) bunlar arasında sayılabilir. Neredeyse her gün GO dili ile ilgili bir şeylere bakmaya çalışırken geçenlerde strings paketinde yer alan FiledsFunc fonksiyonunu ile karşılaştım. Derken kendimi ikinci parametresini nasıl kullanıyoruzu anlamaya çalışırken buldum. FieldsFunc fonksiyonu
-
Tek Fotoluk İpucu 158 - GoLang'de Constructor var mı?
GO tam anlamıyla nesne yönelimli (Object Oriented) bir dil değildir. Hatta object terimi yerine Type kavramının daha çok öne çıktığı bir programlama dilidir. Geliştirici tanımlı tipler için struct’lardan yararlanılır ve onların örneklenmesinde kullanılabilecekk doğal yapıcı metodlar (built-in constructor) vardır. Yine de istersek kendi yapıcı metodlarımızı yazabiliriz. Nasıl mı? Aynen aşağıdaki fotoğrafta olduğu gibi.
-
Tek Fotoluk İpucu 157 - GO ile Bir Queue Yazalım mı?
Go programlama dilinde C#,Java veya 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 baştan 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 bir queue veri yapısı tasarlayabiliriz. Hem basit ve temel bir antrenman yapmış oluruz. Aynen aşağıdaki fotoğrafta olduğu gibi (Sisteminizde benim şirket bilgisayarımda olduğu gibi GO ortamı var olmayabilir. https://play.golang.org/ adresindeki online derleyiciyi bu anlamda kullanabilirsiniz)
-
Tek Fotoluk İpucu 156 - Sevimli Ruby Block'ları
Farklı programlama dillerini öğrenmeye çalışırken alışkın olduğum programlama dillerindeki ortamlardan çok daha farklı kabiliyetleri görme şansı buluyorum. Bazı dillerin kabiliyetleri çok dikkat çekici oluyor. Örneğin Ruby dilindeki block kavramı. İlk tanımaya çalıştığım şu kod parçasında mevzuyu az çok anlamış olsam da asıl gücünü görmek için Ruby’nin kendi built-in yapılarındaki block kullanımlarını incelemem gerekti. Sonunda asıl faydasını anladım diyebilirim. Konuyu anlamak için dizilere sıklıkla uygulanan each, find_all, reject gibi metodları göz önüne aldım. Örneğin bir dizide belirli kurallara uyan elemanları elde etmek için kullanılan find_all metodunu kendim yazmak istesem ve bir block kullanmam gerekse bunu nasıl yapabileceğimi bulmaya çalıştım. Siz, Ruby’yi geliştiren kişi olsanız ve metodlara parametre olarak kod bloklarını geçirme yeteneğini ilave etseniz veri yapılarında bu özelliği nasıl kullandırtınız? Aşağıdaki örnek ekran çıktısında yer alan findSomething metodu gibi olabilir mi?
-
Tek Fotoluk İpucu 155 - C# 7.0 Tuple İyileştirmeleri
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 isilmendirmeleri. Aşağıdaki kod parçasında bu durumu açık bir şekilde görebiliriz.
-
Tek Fotoluk İpucu 154 - C# 7.0 out İyileştirmesi
Henüz C# 6.0’ın nimetlerini şirket projelerinde deneyimleme fırsatı bulamamışken yakın zamanda çı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 da epey yenilik var. Bunlardan birisi de özellikle out anahtar kelimesinin 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 bu.
-
Tek Fotolu İpucu 153 - Config Sekmesini Harici Dosyadan Okumak
Uygulamalarımıza ait pek çok parametrik bilgiyi zaman zaman config uzantılı dosyalar içerisinde tuttuğumuz çok olmuştur. Web tabanlı uygulamalar ve servislerde web.config, exe tipi uygulamalarda ise app.config dosyaları söz konusudur. Bu dosyalarda standard olarak kullanılan içerikler mevcuttur. appSettings, connectionStrings sanıyorum ki en popüler olanlarındandır. Peki bu tip konfigurasyon segmentlerinin harici dosyalardan da alınabileceğini biliyor muydunuz? Örneğin uygulamanın appSettings içeriğinin farklı bir dosyadan gelmesini sağlayabiliriz (appSettings içerisine alınacak olan key:value çiftlerinin çok kalabalık olduğu senaryolarda bu teknik oldukça işe yarayabilir) Nasıl mı? Aynen aşağıdaki ekran görüntüsünde olduğu gibi.
-
Tek Fotoluk İpucu 152 - DebuggerDisplay Niteliği ile Debugging Daha Sevimli Olabilir
Nitelikler bildiğiniz üzere çalışma zamanına bilgi taşımak amacıyla kullanılan önemli tiplerdendir. Visual Studio tarafında da işimize yarayan bir çok nitelik (Attribute) yer alır. Bunlardan birisi DebuggerDisplay’dir. Önce aşağıdaki ekran görüntüsündeki kod parçasını göz önüne alalım.
-
Tek Fotoluk İpucu 150 - Sertifika Tabanlı REST Çağrısı Yapmak
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. Test ortamında yaptığımız çalışmada, sunucu sertifikasının doğrulanması sonrası devreye girecek Callback operasyonunda hata mesajı aldık. Kurumla yaptığımız mutabakat sonrasında ise bu adımı atlayabileceğimizi öğrendik. Çözüm olarak küçük bir hile yaptık. Nasıl mı? Aynen aşağıdaki fotoğrafta görüldüğü gibi.
-
Tek Fotoluk İpucu 151 - C#, Reflection ve About Info
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.
-
Tek Fotoluk İpucu 149 - SecureString ile Caydırıcılık
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.
-
Tek Fotoluk İpucu 148 - Hassas Bilgiyi Hash'leyerek Saklayalım
Yazdığımız bir uygulamada kullanıcının anne kızlık soyadı, kimlik numarası, şifre ve benzeri bilgilerini aldığımızı düşünelim. Bir arayüz üzerinden giriliyor olabilirler. Bu bilgileri herhangibir amaçla veritabanında sakladığımızı varsayalım. Şirket güvenlik politikları gereği ilgili bilgiler açık bir şekilde tutulmamalı. Yani anne kızlık soyadı, şifre veya kimlik numarası gözle okunabilir halde tutulmamalı. Buna göre ilgili bilgileri veritabanı üzerinde maskeleyerek saklamak doğru bir çözüm olabilir. Bunu yapabilmek için akla gelen yollardan birisi de tahmin edileceği üzere Hash algoritmalarına başvurmaktır. Peki güçlü bir Hash algoritması ile bu maskeleme işlemini yapmak ister misiniz? Aşağıdaki fotoğraf size yol gösterebilir.
-
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.
-
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?
-
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. Zaman içerisinde servis odaklı yaklaşımlarda kullanılan WCF gibi alt yapılar.Net Remoting yerine tercih edilmeye başlandı. Dağıtık Uygulamalar (Distributed Applications) olarak geçen bu konu Ruby dilinde de kullanılabiliyor. Üstelik çok çok daha basit. Standart Ruby kurulumu ile birlikte gelen drb modülü bu işler için ele alınmakta (dRuby, Masatoshi Seki tarafından geliştirilmiş bir üründür ve standart Ruby kütüphanesi içerisinde yer almaktadır)
-
Tek Fotoluk İpucu 139 - Singleton Method
Gün geçmiyor ki Ruby dilinde beni şaşırtan bir kabiliyet ile daha karşılaşmayayım. Dün gece Ruby kitapları arasında dolanırken öğrendiğim yeni bir kavram var; Singleton Method. Instance metodlarından farklı olarak sadece belli bir nesne örneği için çalışabilecek fonksiyonellikler tanımlayabilmemizi sağlayan önemli bir yetenek. Yani sınıf tanımı içerisinde yer almayıp nesne örneği üzerinden tanımlanabilen ve sadece o örnek için kullanılabilen fonksiyonlar geliştirebildiğimizi düşünün. Konuyu aşağıdaki fotoğrafta yer alan kod parçasında daha net bir şekilde görebiliriz.
-
Tek Fotoluk İpucu 138 - Bir Web Sayfa İçeriğini İndirmek
Vakti zamanında (90lı yılların ortaları diyelim) internette dolanırken bir şeyler öğrenmeye çalıştığım geliştirici siteleri olurdu. Internet o zamanlar kıymetli olduğundan site içeriklerini offline olarak da dolaşabilmek için bazı yardımcı uygulamaları kullanırdık. O yıllarda Delphi konulu makaleler içeren bir sitenin tüm içeriğini indirdiğimi hatırlıyorum. Geçenlerde bu tip bir uygulamayı nasıl yazabilirim diye düşünerken işe web içeriklerini nasıl indirebileceğimi araştırarak başlayayım dedim..Net tarafında bununla ilgili daha önceden uğraşmıştım ama bu sefer Ruby’yi seçtim. Aşağıdaki ekran görüntüsünde bu işi gerçekleştiren basit bir kod parçasını görebilirsiniz (Fotoğraftaki Zero Hour Maps tab’ına aldırmayın:D)
-
Tek Fotoluk İpucu 137 - Temporary File ile Çalışmak
Geliştirdiğimiz uygulamanın sadece çalışma zamanında oluşturup kullanacağı ve herhangi bir anda ortadan kaldıracağı geçici bilgilere ihtiyacı olduğunu düşünelim. İlk akla gelen bu tip bilgileri bir yerlerde işi bitene kadar saklamak olacaktır. Bunun için veritabanında geçici bir tabloyu veya işletim sisteminin Registry gibi alanlarını kullanabiliriz. Aslında nesne yönelimli dünyada söz konusu içerikleri birer sınıf örneği olarak tutmakta mümkün.
-
Tek Fotoluk İpucu 136 - Dosyayı Külçeler Halinde Okumak
Büyük boyutlu dosyalar neredeyse her programlama ortamının en büyük sorunlarındadır. Nitekim bu tip içeriklerin bir yerden bir yere taşınması, içeriklerinde arama yapılması ve benzeri senaryolarda oluşan sistemsel yükler söz konusudur. Tek işlemli süreçlerde sıkıntı olmasa da eş zamanlı olarak n sayıda dosya üzerinde toplu işlemler söz konusu olduğunda farklı tekniklerin uygulanması önerilmektedir.