11 Aralık 2014

Bu makalede propertygrid üzerinde otomatik enum tipi için lokalizasyon yapmanıza yardımcı olacak kodu paylaşacağım.


public class GlobalEnumConverter : EnumConverter
    {
        Dictionary> _lookupTables;

        /// 
        /// Instantiate a new Enum Converter
        /// 
        /// Type of the enum to convert
        public GlobalEnumConverter(Type type)
            : base(type)
        {
            _lookupTables = new Dictionary>();
        }

18 Haziran 2014

Yapay zekadaki makine öğrenmesi(machine learning) algoritmalarından önemli biri olan Perceptron öğrenme algoritmasından ve C# diliyle yazılmış kodlardan bahsedeğim

Öncelikle kodumuzu verelim :

https://github.com/muhammedtanriverdi/Perceptron_Learning_C_Sharp


Perceptron algoritması gözlenmiş verileri kullanarak yeni gelecek verilerin sonuçlarını tahmin etmede kullanılır. Algoritmanın temel prensibini 2 boyutlu düzlemde anlatmaya çalışayım.

X ve Y koordinatları giriş verilerimizi ifade etsin. Sonuç verimiz ise + ya da - olsun.

X = 1 ve Y = 2 olduğunda sonucumuz - olur gibi değerler vererek devam edelim.
Burada şöyle düşünülebilir;
X değeri kandaki X maddesinin değeri
Y değeri kandaki Y maddesinin değeri
+ ya da - değerleri ise;
+ Hasta
- Hasta değil

30 Nisan 2014


Bu algoritma yapay zekada kümeleme algoritmalarının en bilinen ve en basit yöntemlerinden biridir.

Hemen proje kodlarımızı paylaşalım sonra algoritmanın basit anlatımına geçelim.

https://github.com/muhammedtanriverdi/K_mean_Clustering

"K" harfi küme sayısını işaret eder. Yani bu algoritma verilen küme sayısına göre bir yol izler. Küme sayısının belli olduğu durumlarda kullanılır.

İşletim süresi (time complexity) -> O(ndkt)

n -> Veri sayısı
d -> Uzay sayısı (Yani verilerin sahip olduğu özellik sayısı)
                        (2 boyutlu koordinat düzleminde, x-y özellikleri varsa 2;
                         ya da yaş-boy-günlük tüketilen su miktarı özellikleri varsa(3 boyutlu) 3 )
k -> Küme sayısı
t -> İterasyon sayısı

Yukarıdan anlaşıldığı gibi bu algoritma;
her veri için
her özellik için
her küme için
içiçe döngü oluşturuyor.

Algoritması hakkında bahsedelim (2 boyutlu koordinat sistemi üzerinden anlatacağım)


2 boyutlu düzlemde (x,y) koordinatları belli 1000 tane veri yerleştirdik. Gözle görüldüğü üzere 4 farklı küme var.

Peki neye göre 4 farklı küme var deriz?
Koordinat düzlemindeki (öklit) uzaklığa göre diyebiliriz.

1. ADIM : İlk adımda 4 küme olduğunu bildiğimiz için koordinat düzleminde 4 kümeyi rastgele noktalara atarız ve her veriyi herhangi bir kümeye sokarız.

3 Mart 2014

Xcode 5'de boş proje hariç diğer projelerde, özellikle alışık olduğumuz 'Single View Application' da otomatik gelen storyboard'u kaldırma ve projeye yeni viewcontroller ekleme videosunu paylaşmak istedim.

Storyboard küçük projelerde çok kullanışlı olsa da, proje büyüdükçe ve projede 1'den fazla kişi çalıştığında yönetmek zorlaşabiliyor. Bu yüzden küçük ölçekli projeler hariç storyboard kullanımını pek sevmiyorum :)

28 Şubat 2014

Vakit bulduğum zamanlarda başlangıç seviyesinde ya da belirli bir detay üzerinde video eğitim çekmenin iyi fikir olacağını düşündüm. Muhtemelen videolar daha çok iPhone-iPad programlama üzerine olacaktır.

Resim yakınlaştırma işlemi.


20 Şubat 2014

2010 yılında Doç. Dr. Refik Samet hocamla birlikte Ankara Üniversitesi Bilgisayar Mühendisliği 1. dönem bitirme tezimle ilgili bir makale yazmıştık.

Median filtresinin daha hızlandırılmış ve daha etkili bir algoritma haline getirdiğimiz filtreye geliştirilmiş median filtresi adını koymuştuk.

buradan yayınlandığı dergiden indirebilirsiniz

ya da buradan buradan indirebilirsiniz.

İndirmeden göz atmak isteyenler için :)

ADVANCED ADAPTIVE MEDIAN FILTER FOR IMPULSIVE NOISES

Refik Samet1, Muhammed Tanriverdi2

Ankara University, Ankara, Turkey

1samet@eng.ankara.edu.tr, 2muhammedtanriverdi@gmail.com

One of the most important stages of signal and image processing is noise elimination.
Noise is an unwanted perturbation to a wanted analog or digital signal or image [1]. A noise can
be categorized depending on its source, frequency spectrum and time characteristics. Depending
on a source, the noises are categorized into six types: acoustic noise; thermal and shot noise;
electromagnetic noise; electrostatic noise; channel distortions, echo and fading; processing
noise. On the other hand, depending on the frequency spectrum or time characteristics, the
noises are also categorized into six types: white noise; band-limited white noise; narrowband
noise; coloured noise; impulsive noise; transient noise pulses [2].

19 Şubat 2014

Bulanık Mantık / Fuzzy Logic

Bulanık mantığı giriş seviyesinde örnekler ile açıklamaya çalışacağım. Sonraki derslerde bulanık mantığın detaylarına gireceğim.

Lisede öğrendiğimiz kümeler kavramında bir eleman bir kümede vardır ya da yoktur. Mesela '1' tek sayı mıdır diye sorduğumuzda cevabı evet(1, true); '2' tek sayı mıdır diye sorduğumuzda cevabı hayır(0, false) olacaktır.

Bulanık mantıkta bu durum farklıdır. Kümede bulunan her elemanın derecesi vardır. Örnek verelim;

Aslı 40 kilo
Ayşe 55 kilo
Ahmet 65 kilo
Mehmet 85 kilo
Hasan 90 kilo
Ramazan 120 kilo olsun.

Evrensel kümemiz yukarıdaki elemanlardan oluşsun. Alt küme olarak 'şişmanlar' kümesini tanımlamak istediğimiz zaman nasıl tanımlarız? Burada bulanık mantık kullanılırsa ;
- Evrensel kümedeki herkes şişmandır
- Her elemanın şişmanlık derecesi vardır

7 Şubat 2014

Prims Algorithm in C#
Prim's Algorithm in C#

Prim algoritması bir graph(çizge) üzerinde verilen bir başlangıç noktaya göre en kısa ağaç yapısını oluşturan algoritmalardan biridir. 

Anlatıma başlamadan önce kodumuzu verelim
https://github.com/muhammedtanriverdi/Prims_Algorithm_C_Sharp/
(kodda eksiklikler hatalar ya da fazlalıklar varsa (ki vardır) affola)



Aşağıdaki örnek graph(çizge) üzerinde algoritmayı anlatalım. Aşağıdaki graphı ele aldığımızda kümemiz

S : A B C D E F G H

gibi ele alabiliriz.


Algoritmanın başlangıcı bütün vertexlerin uzunluğu(distance) sonsuz yapılır. 

Havel Hakimi Algorithm in C#

Anlatıma başlamadan önce kodumuzu verelim :)

https://github.com/muhammedtanriverdi/Havel_Hakimi_C_Sharp

Havel Hakimi algoritması verilen özelliklerden bir graph(çizge) oluşup oluşmadığını bulmaya yarayan algoritmadır. (Türkçe karşılıklarını tam bilmediğim için yanlış olabilir, affola)

Verilen özelliklerden kastımız tanımlanan vertexler (köşe) ve her vertex için tanımlanan edgeler(kenar ya da derece)dir. Bunlara uygun graph var mı yok mu bunun kontrolünü yapacağız.

Örnek ile başlayalım :
2 tane vertex olsun A ve B
A'nın 2 tane edge'i olsun
B'nin de 2 tane edge olsun
gözle görülebilen problem oldu, verilen özelliklere uygun graph oluşmaz, çünkü 2 vertex arasında 1 edge olur ve her iki vertex de 1 edge'e sahip olabilir en fazla.


Bunun yerine 3. vertexi de ekleyip her vertex 2 edge sahiptir desek, ve bu özelliklere uygun graph var mıdır diye sorarsak

28 Ocak 2014

Xcode 5 ile autolayout kullanırken uiscrollview boyutlarında sıkıntı oluşuyor. Bunu nasıl çözebileceğimizi kısa bir video ile gösterdim.


Umarım yardımcı olabilmişimdir...

20 Ocak 2014

Wındows/system32 klasörünün altında 'mscoree.dll' dosyasının ismini 'mscoreebak.dll' yapıyoruz. Sonra işlemimizi bitirdikten sonra tekrar eski ismini veriyoruz.

İsim değiştirme izniniz yoksa (you require permission from trustedinstaller hatası alırsanız)

18 Ocak 2014

Aşağıdaki linkteki dosyayı indirip "InstallTakeOwnership.reg" çalıştırıdığıktan sonra, bir dosyanın ya da klasörün üzerine sağ tıkladığınızda "Take Ownership" seçeneğini  görecekseniz. Bu seçenek ile sorununuz çözülecek.

"RemoveTakeOwnership.reg" dosyasını çalıştırısanız, ownership özelliğini tekrar kaldırmış olursunuz.

Buradan indirebilirsiniz

7 Ocak 2014

(Düzeltme (24.11.2014) : kütüphanelerin güncellenmesi nedeniyle kod çalışmıyor olabilir. Kütüphanenin de içinde bulunduğu test kodlarını buradan indirebilirsiniz.
https://github.com/muhammedtanriverdi/php-mailer )

Bu yazımda php ile smtp üzerinden mail göndermeyi basit bir şekilde anlatmaya çalışacağım.
Kullandığım güzel bir php mail kütüphanesi var. https://github.com/PHPMailer/PHPMailer
Kütüphaneyi indirdikten sonra işlemlerimize başlayabiliriz.

Kodlar (içerisinde gerekli yorumlarla birlikte) :


<?php

/// Gelen email adresine basligi ve icerigi kullanalarak mail olusturup yollar
/// $to_email = Alici kisi email adresi
/// $subject = 'Email basligi';
/// $body = '<b> Email Icerigi </b>';
/// return basarili = true, basarisiz = false
function smtp_mail_gonder($to_email, $subject, $body)
{

6 Ocak 2014

Daha önceki yazılarımda PHP ile MSSQL bağlantısı yapabilmek için 2 farklı kütüphaneden bahsetmiştim. Birincesi php 5.2'den önce kullanılan mssql.dll ve ikincisi php 5.3 ve sonrası için kullanılan sqlsrv.dll kütüphaneleri.

sqlsrv kütüphanesini server üzerinde çalıştırırken biraz sorun yaşadım ve çalıştıramadım. Bununla ilgili kısa bir bilgi paylaşmak istedim.

Kurulum bilgilerini daha önceki yazımda bulabilirsiniz.
http://www.kodyazma.com/2013/10/sqlsrv-ile-php-uzerinden-mssql-baglantisi.html

Sqlsrv kütüphanesi için öncelikle sistem gereksinimlerine göz atmakta fayda var.

Supported Operating System
Windows 7, Windows Server 2008 R2, Windows Server 2008 Service Pack 2, Windows Vista Service Pack 2

Bu Blogda Ara

İletişim

Ad

E-posta *

Mesaj *