Register | Password Reset

Search

Pages

  • Dosyalar
  • Ozgecmis
  • Projeler

Blogs

  • barkmaz.blogspot.com .NET & Sharepoint and Engineering
  • carryonwayward.com invalid karamela sepeti
  • konuralp.gen.tr Alper Konuralp’in Blog Sitesi
  • onderozcan.blogspot.com Önder ÖZCAN

Softwares

  • Debian Universal Operating System
  • EasyWords Learn New Words
  • Opera Faster & Safer Internet

Tag Cloud

.net api books browser c# captcha chrome cleartype cloud code desktop desktop tools encoding firefox font games gelecek google graphics gsm internet explorer lambda library linux live cd moba opengl opera operating system optimization organization prıvacy put.io recaptcha search silverlight task parallel library threading type casting userscript utility windows 7 windows vista wpf xaml
RSS feed


AdminElevator

Eser Ozvataf December 1st, 2011 No comments

Günün en az 15 saati bilgisayar karşısında olan biri olarak masaüstü özelleştirmek, ev temizliği yapmak gibi temel bir ihtiyaç benim için. DOS kullandığım zamanlardan bu yana 30-40 Kilobyte’lık programların mutluluğun anahtarı olduğunu düşünen biri olarak, nette araştırıp bulduğum ufak utilityler ile Windows 7 günlerimde de benim için vazgeçilmez. Ama her zaman tam olarak işinize yarayacak bir utility bulamıyorsunuz, işte bu noktada eğer biraz programlama yeteneğiniz varsa iş başa düşüyor. Yıllardır bir çok utility yazdım kendim için, şimdi onları paylaşma ve revize etme zamanı geldi diye düşünüyorum. Bu utility’lerden ilki UAC ile ilgili.

Windows Vista ile birlikte sonra biz yazılımcılar UAC’den en fazla çeken kesim olmuşuzdur heralde. Sürekli kullanılan IDE’ler, Console uygulamalarını önce bir kez açar, ardından yetkimizin yetmediğini fark edip tekrar aynı programı bu sefer “Administrator” olarak açarız.

Peki hep Administrator olarak çalıştırsak olmuyor mu? Oluyor. Ama sıradan bir kullanıcının erişemeyeceği bir biçimde bu özellik de Windows’un derinliklerinde saklı. Geliştirdiğim yazılım ise, kendisi aracılığıyla listeye eklediğiniz çalıştırılabilir “exe” dosyalarını çalışmadan önce sizden Administrator yetkisi istiyor. Böylece siz de en basitinden Command Prompt açmak için Search’e “cmd” yazıp, ardından sağ tıklayıp Run as Administrator demek yerine direkt Start->Run (Win+R kısayolu ile) aracılıyla “cmd” yazıp Admin olarak Command Prompt’u kullanabiliyorsunuz. Ayrıca daha önce eklediğiniz programı işiniz bittiğinde listeden kaldırabilirsiniz.

Programa ilişkin kurulumu “Dosyalar” bölümünden veya bu post’un altından indirebilirsiniz.

AdminElevator
AdminElevator
AdminElevatorSetup.zip
Version: 0.9

Author:Laroux
Category:.NET
Date:01-12-2011
284.9 KiB
4 Downloads
Details...
Categories: Bilisim Tags: desktop tools

Cloud Computing

Eser Ozvataf November 29th, 2011 No comments

Geçtiğimiz hafta ODTÜ’nün KKTC kampüsünde gerçekleşen Cloud Computing and Internet Security Seminer’ine katıldım. IBM, Tubitak ve Kaspersky’den gelen konuşmacılar temsili olarak geldikleri kurumların Cloud Computing’e nasıl baktıkları hakkında bende bazı izlenimler bıraktılar.

Cloud Computing Client-Server mimarisindeki “Server”ın monarşik rolünü tamamen kaldırıyor. Ve devamında cloud avantajlarını kullanmak isteyen her organizasyon/proje için hem yazılım hem de donanım olarak sıfırdan bir yapılandırma gerektiriyor. Bu da bir çok IT firması için yeni fırsatlar anlamına geldiğinden Cloud Computing’i IT sektörünün yeni para kazanma metodu olarak değerlendirmeliyiz.

Her ne kadar servis üreten yazılım firmalarının güçlenmesi beni mesleki olarak memnun edecek olsa da, bu senaryo benim gibi özgürlükçü birinin zihninde ister istemez kaygılar oluşuyor. İşyerleri için Dedicated Hostinglerin, kişiler için de External Disklerin azaldığı yerlerine verilerin servislere taşındığı bir dünyadan bahsediyoruz. Başka bir değişle kişisel/kurumsal datanız üzerindeki sahipliğinizi tamamiyle servisi aldığımız firmanın/organizasyonun sanal storage’ı ile paylaşıyoruz. Bu firmalarınsa bizim haklarımıza ne kadar saygı göstermesi gerektiğini ise ancak ve ancak geleneksel yasalar belirleyebiliyor.

“E yasa işte?” demek yeterli olmuyor. Facebook ve Google gibi firmalar şimdiden kişisel bilgilerimizle bizi profilleyerek yasal yollardan olsa dahi bizim tercih etmeyeceğimiz şekilde gizlilik haklarımızı çiğneyebiliyorlar. Şu an bir telefon aldığınızı, arayanın mobil operatörünüzün olduğunu ve “x firması ile bilgilerinizi paylaşmak isteyip istemediğini” varsayın, cevabınız %80 hayır olurdu. Fakat social networkler ve çeşitli servisler bunu haberiniz olmadan yapıyorlar.

Bir çözümüm olmasaydı bu yazıyı yazmayı da düşünmüyor olacaktım, işte benim çözümüm. Cloud Computing, OpenSource Community’den ilham almalı ve servis-kullanıcı ilişkisini lisans zorunluluğu ile yönetmeli. Kullanıcıların ortak kullanacağı lisans tipleriyle şu an Apple’dan tutun Google’a kadar bizim hakkımızda bilgi sahibi olan kurumların ellerindeki datamız üzerinde söz sahibi olmamız sağlanabilir. Aklıma gelen örnek bir kaç kullanım şekli:

* Kişisel bilgileri servislerin kullanımına açmak,
* Kişisel bilgileri ancak servisde tanımlı kişilerin (kullanıcının kendisi, arkadaş listesi, v.s.) kullanımına açmak,
* Kişisel bilgilerden edinilecek gelirin kullanıcıyla paylaşılmak kaydıyla bilgileri servisin kullanımına açmak,
* Kişisel bilgileri yalnızca gelir amacı taşımayan organizasyonlarca kullanımına açmak.
* Kişisel bilgilerin servis tarafından kullanılmaması.

* Kişisel bilgilerin ve yedeklerinin servis üzerinden kullanıcının istediği an silinmesi.
* Kişisel bilgilerin servis üzerinden kullanıcının istediği an download edebilmesi veya başka bir servise taşınması.

“Taşınması” evet, madem Cloud Computing’den bahsediyoruz ben Gmail üzerindeki tüm bilgimi Fastmail’e geçirmek için işlemleri başlatabilmeliyim. XMPP gibi protokoller arası konuşma sağlayan ekstra protokollere Cloud sistemlerin kullanıcılar ve abonelikler üzerinden konuşacağı varyasyonları olması gerekiyor diye düşünüyorum. Aslında bu alanda prototip olarak bir çalışmam da mevcut, bir ihtiyaç olduğu gerçek.

Categories: Bilisim Tags: cloud, prıvacy

Put.io User Script

Eser Ozvataf November 22nd, 2011 No comments

put.io kullanıcısı iseniz, sizin için yolunda gitmeyen şeylerden biri elbetteki download edilen her dosyanın kendi sayfasına girip download linkini tıklamaktır. Zamanla herşeyi zip package olarak indirmeye başlayan biri olarak, bu sefer de paket oluşturma süresi ve download’dan sonra extract işlemiyle uğraşmaktan sıkılıp Put.io arabiriminde değişiklikler yapan bir UserScript yazdım.

Opera veya Firefox üzerinden GreaseMonkey kullanıcısıysanız, aşağıdaki linkten script’i indirebilirsiniz.

Put.io User Script

Categories: Bilisim Tags: put.io, userscript

Task Parallel Library

Eser Ozvataf November 8th, 2011 No comments

Diskden bir klasör içerisindeki tüm dosyaları okumak, elimizde bulunan birden fazla URL adresinden feedleri veya web sayfalarını download etmek ve elimizdeki verilerin güncel kopyalarının olup olmadığını kontrol etmek. Bütün bu örnekler için genellikle bir döngü yapısı kullanırız. Fakat kodu yazma amacımız belirli bir sırayı takip etmesi değil de, tüm sistem kaynaklarını kullanarak işlemi gerçekleştirmesi olduğunda birden fazla thread ile işlem yapmak en uygun çözümdür.

Threading’le ilgili biraz bilginiz varsa “Producer/Consumer Queue” kavramını duymuşsunuzdur. Bu kavramı en basit haliyle “dış bir kaynaktan beslenen iş kuyruğu, ve bu iş kuyruğundan objeleri çeken birden fazla thread” olarak tanımlayabiliriz.

Klasik thread yaklaşımında kullanacağımız kadar thread oluşturur ve bu threadlerin sürekli veya iş kuyruğu tamamiyle boşalana kadar kuyruktaki objeleri aldığı bir yapı oluştururuz. Yönetimi low-level bilgi gereksinimi istediğinden zor ve mantık hatalarına açık bir yöntemdir.

.NET CLR bu nedenle .NET 2.0 ile birlikte ThreadPool yapısı, ardından .NET 4.0 ThreadPool üzerine oturttuğu daha high-level bir yapı olan TPL yani Task Parallel Library ile oluşabilecek sorunlar konusunda yazılımcılara çözümler sunmakta. ThreadPool ve TPL’in çalışma mekaniği yapılacak her kalem iş’e bir Task (Görev) olarak bakmak, ve bu işleri yazılımcının yalnızca tanımlayıp kodların işletim kısmıyla ilgilenmemesini, ancak bu görevleri iptal etmek veya görevler tamamlandığında haberdar olmak gibi genel kısımlarda yazılımcının kod yazmasını sağlar.

Fakat .NET 4.0 ile gelip, işlemcinin sanal/fiziksel tüm çekirdeklerini sonuna kadar kullanmamızı sağlayan TPL’in bir kaç eksikliğinin olduğunu fark ettim. Çalışacak maximum thread sayısına biz karar veremiyoruz, dolayısıyla vermiş olduğumuz her kalem iş .NET tarafından içeride bir yerlerde kuyruğa dahil edildiğinden kod ile bu kuyruğu izleyemiyoruz.

Bu nedenle kendi yazdığım ve aslında daha büyük bir Framework’ün parçası olan Channel sınıfını burada paylaşmak istiyorum.

Örnek Kullanım:

// yapılacak her iş için çalışacak action delegate'ini tanımlayalım
Action<object> _action = new Action</object><object>(delegate(object obj) {
	// yapılacak iş objesi delegate'e parametre olarak geldi
	Console.Write("{0}\t", obj);
});

// belirttiğimiz action delegate'ini her iş için maximum 5 thread halinde çalıştıracak Channel sınıfını oluşturalım
Channel _channel = new Channel(5, _action);

// kuyruğa dummy olarak 1000 adet iş objesi ekleyelim
for(int _i = 0;_i < 1000;_i++) {
	_channel.AddTask(_i);
}

// işlerin oluşturulmasına başla
_channel.Fill();

Categories: .NET Tags: .net, c#, code, task parallel library, threading

GsmEncoding

Eser Ozvataf October 25th, 2011 No comments

Cep telefonunlarımıza gelen kısa mesajlarda genel kanının aksine geleneksel 8bit’lik ASCII tablosu değil de, GSM operatörü tarafından özelleştirilebilen 7bit’lik GSM alfabesi kullanılmaktadır.

Bunun zorluğu ile en çok servis sağlayıcı tarafından filtrelenmeyen, daha doğrusu işin bu kısmını tamamiyle biz API kullanıcılarına bırakan kısa mesaj gönderimlerinde karşılaşırız. Sık karşılaştığım ve internet üzerinde pek kaynak bulamadığım için işin başa düştüğünü ve kendim .NET’in klasik Encoding’leri ile çevirim uyumlu bir sınıf yazmam gerektiğini düşündüm. GsmEncoding’e ait kaynak kodları bu post’un ekinde bulabilirsiniz.

Kodları kullanmak için .NET’in CLR’ında herhangi bir Encoding’i nasıl kullanıyorsanız, yeni oluşturduğunuz bir GsmEncoding instance’ını da bu şekilde kullanmanız yeterli. Örneğin:

Encoding _encoder = new GsmEncoding();
byte[] _data = _encoder.GetBytes(text);
Categories: .NET Tags: .net, c#, code, encoding, gsm

Browser Karşılaştırması

Eser Ozvataf October 2nd, 2011 No comments

lifehacker yayında olan browserları test ederek benchmark sonuçlarını paylaşmış. Genel skorları paylaşmak gerekirse:

  1. Opera 11.51: 82%
  2. Firefox 7: 73%
  3. Internet Explorer 9: 47.5%
  4. Chrome 14: 43%

Opera’nın 12.00 release’ine az kaldığını ve Chrome’un da JavaScript rutinlerinde sorunların olduğunu göz önünde bulundurduğumuzda Opera’nin “hız” liderliği en az 6 ay daha sürecek diye düşünüyorum. Yine de bu konuda çok hızlı bir çıkış yapan Firefox’u yabana atmamak gerekiyor, Firefox 7 memory-management ve hız konusunda bir milad olabilir Mozilla için.

Testler ve detaylı sonuçlar için lifehacker: Browser Speed Tests: Firefox 7, Chrome 14, Internet Explorer 9, and More.

Categories: Bilisim Tags: browser, chrome, firefox, internet explorer, opera

50 yıl içinde tükenecekler

Eser Ozvataf October 1st, 2009 No comments

“Futurologist” Richard Watson 50 yıl içerisinde kullanımı sona erecek şeylerin bir listesini oluşturmuş. Her ne kadar kendimi internet gazetesi haberciliği olarak nitelendirdiğim bu tarz “catchy” şeyleri paylaşırken hayal edemiyor olsam da, 90 jenerasyonu mensubu olarak “geleceğe ve bilime olan merak” nedeniyle bunu paylaşmak istiyorum.

- 2009: Tamir.
- 2012: Tüplü televizyon.
- 2013: Faks makineleri.
- 2014: Kaybolmak.
- 2016: Emeklilik.
- 2017: Cep telefonu, mendil.
- 2018: Sekreter, DVD.
- 2019: Postane, Kütüphane, Kasap, Bedava Araç Parkı.
- 2020: Patentler.
- 2022: Bloglar.
- 2024: Haftasonu Tatilleri.
- 2025: Ücretsiz Otoyollar, AM Radyo.
- 2026: Cilt Kırışıklıkları.
- 2027: Öğle Yemeği, Gizlilik Hakkı.
- 2028: Birleşimler.
- 2030: Anahtarlar, Reality Şovlar.
- 2033: Bozuk Paralar.
- 2035: İşlenmemiş Yağ, Spam E-Mailler.
- 2036: Bağımlılıklar.
- 2039: Sağırlık, Karbon Emisyonu, Ulusal Para Birimleri, Kağıt Para, Cüzdanlar, Uyku.
- 2040: Kravat.
- 2045: Oturma Odası.
- 2049: Gazeteler, Körlük.
- 2050′den Ötesi: Ölüm, Acı, Çirkinlik, Plastik Cerrahi, Ulusal Devletler.

Categories: Gunluk Tags: gelecek

WPF’de Font Rendering

Eser Ozvataf January 1st, 2009 No comments

Eminim WPF ile geliştirme yapan herkes native Win32 formları aradaki font rendering farkının bilincindedir. TextBlock/Label objeleri bir resim ile birlikte aynı container içerisinde render edilirken daha da flu bir hal alıyorlar.

Microsoft bu durumun farkında, diğer yandan konuyla ilgili şikayetler de artmaktayken eğer siz de bu durumdan müzdaripseniz .Net Framework’ün bir sonraki sürümünü beklemek yerine “Give me back my ClearType” isimli yazıyı okuyarak sorunun üstesinden gelebilirsiniz.

Categories: .NET Tags: .net, cleartype, font, graphics, wpf

Lambda Deyimleri

Eser Ozvataf December 29th, 2008 No comments

Bu kez programcılıktaki kullanımı benim için oldukça “gri” olan bir konu hakkında yazacağım. Lambda benim için her zaman okuması ve bazen de yazması oldukça zor bir yazılım dili fonksiyonu olmuştur. Benim kağıt kalemle algoritma debug edilen bir dönemden kalma bir yazılımcı olmamla ilişkisi olduğunu düşünsem de; koda bakan kişinin hafızasıyla çalışma anını öngöremeyeceği şekildeki kodların evrimleşiyor olmasını eleştirmem çok da haksızlık değildir diye düşünüyorum.

Yine de, her iyi programcı gibi kodlama hakkındaki yeni bir bilgiyi reddetme lüksümüz olmadığı için MSDN dökümantasyonu dışında bir kaç kaynak arayışına girdim. Önceleri CodeHappy’nin Introducing Lambdas in C# makalesini bulmuştum. Fakat bunun internet üzerinden kısa bir süre sonra kaldırılmasıyla Eric White’ın MSDN bloglarından Lambda Expressions yazısına ulaştım.

C# özelinde konuşmak gerekirse Lambda’nin en büyük özelliği “kasvetli” delegate kullanımı yerine C’den alıştığınız void* kullanımına daha yakın bir şekilde Action<> ve Func<> isimli iki hazır delegate template ile birlikte gelmeleri.

Categories: .NET Tags: .net, c#, code, lambda

Dynamic Code with XAML

Eser Ozvataf November 13th, 2008 No comments

XAML ile ilgili yaptığım bir araştırma esnasında dış bir kaynaktan gelen kodu XAML içerisinde nasıl çalıştıracağım konusunda bir kaç örnekle karşılaştım. Eğer özellikle banner rotation yapacaksanız, veya canlı bir feed’i tamamiyle dışarıdan almayı düşünüyorsanız eminim oldukça işe yarayacaktır.

using Sys = System;
using SysIO = System.IO;
using SysWinMarkup = System.Windows.Markup;
using SysXml = System.Xml;
using SysXmlLinq = System.Xml.Linq;

public static class XamlUtils {
public static object GetXamlObject(string source) {
SysXml.XmlDocument _xmlDocument = new SysXml.XmlDocument();
_xmlDocument.LoadXml(source);

return Xaml.GetXamlObject(_xmlDocument);
}

public static object GetXamlObject(SysXml.XmlDocument xmlDocument) {
const string xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation";
const string xmlns_x = "http://schemas.microsoft.com/winfx/2006/xaml";

if(string.IsNullOrEmpty(xmlDocument.DocumentElement.GetAttribute("xmlns"))) {
xmlDocument.DocumentElement.SetAttribute("xmlns", xmlns);
}
if(string.IsNullOrEmpty(xmlDocument.DocumentElement.GetAttribute("xmlns:x"))) {
xmlDocument.DocumentElement.SetAttribute("xmlns:x", xmlns_x);
}

SysIO.TextReader _stringReader = new SysIO.StringReader(xmlDocument.OuterXml);
SysXml.XmlReader _xmlReader = new SysXml.XmlTextReader(_stringReader);

return SysWinMarkup.XamlReader.Load(_xmlReader);
}
}

Kullanımı:

System.Windows.Controls.Grid _gridObject = XamlUtils.GetXamlObject("<grid><textblock>ok</textblock></grid>") as System.Windows.Controls.Grid;
this.Content = _gridObject;

Görüldüğü gibi, dış bir kaynaktan alınan/okunan string’i XamlUtils.GetXamlObject metodu ile XAML’e dönüştürebiliyoruz. Burada dikkat etmemiz gereken bu metoddan dönen objenin XAML’in root element’ine düzgün cast edilmesinin gerekliliği. (Örnekte root element’i Grid olarak ele aldım)

Categories: .NET Tags: .net, c#, code, wpf, xaml
Page 1 of 3123

eser.ozvataf.com.