23 Mart 2014 Pazar

Asp.Net (C#) Linq to XML ile XML dosyasına veri ekleme

2 comments
Bu yazıda Asp.Net projelerimizde Linq to XML kullanarak, XML uzantılı dosyalara veri ekleme işleminin nasıl gerçekleştirileceğini anlatacağım.

Linq (Language Integrated Query) dil ile bütünleşmiş sorgulardır. Linq kullanılarak nesneler üzerinde aramalar yapılabilir, aramaların sonucunu hızlı bir şekilde List Object haline dönüştürebilir.

İlk olarak yeni bir xml dosyası oluşturuyorum. İçine yalnızca aşağıdaki gibi <kullanicilar> </kullanicilar> satırlarını ekliyorum.



Şimdi yeni bir web form oluşturuyorum. Aşağıdaki gibi textbox'ları ekliyorum. XML dosyasına ekle butonuna tıkladığımda ad ve soyadı ekleyeceğim.


Şimdi butona çift tıklayarak tetiklendiği olaya gidiyorum.

Sayfaya using System.Xml.Linq; referansını ekliyorum.

Aşağıdaki kodları yazıyorum.

protected void Button1_Click(object sender, EventArgs e)
    {
        XDocument xDoc = XDocument.Load(Server.MapPath("~/xml/kayitlar.xml"));
        //XML dosyasını açıyorum.

        if (xDoc != null)
        {
            XElement elements = xDoc.Element("kullanicilar");
            //kayitlar.xml dosyasında bulunan <kullanicilar>...</kullanicilar> etiketinin içine ekliyorum.
            XElement addedElement = new XElement(new XElement("kullanici", new XElement("ad", tb_ad.Text), new XElement("soyad", tb_soyad.Text)));
            //<kullanici> etiketi oluşturuyorum ve içine <ad> ve <soyad> etiketlerini ve textbox'lardan alınan değerleri ekliyorum.
            addedElement.SetAttributeValue("id", "1");
            //id değerine 1 ekliyorum.
            elements.Add(addedElement);
            xDoc.Save(Server.MapPath("~/xml/kayitlar.xml"));
            //XML dosyasını kaydediyorum.
        }
    }

Şimdi sayfamı çalıştırıyorum.

Aşağıdaki gibi textbox'ları doldurup butona tıklıyorum.


XML dosyama bakıyorum.


Görüldüğü gibi verilerim XML dosyasına eklendi. 

İyi çalışmalar...


Read More

5 Mart 2014 Çarşamba

C# ile web browser - tarayıcı yapımı + video

2 comments
Merhaba arkadaşlar. Bu yazıda C# kullanarak basit web tarayıcısı uygulaması geliştirmeyi anlatacağım.

Bir web tarayıcısında olması gereken temel özellikler (adrese git, ileri, geri, sayfa yenileme) özelliklerinin bulunduğu bir tarayıcı geliştireceğim ve bunun için de toolbox'tan WebBrowser aracını kullanacağım.

İlk olarak yeni bir form oluşturuyorum ve aşağıdaki gibi form elemanlarımı ekliyorum.


Git butonuna çift tıklıyorum ve içine aşağıdaki kodu yazıyorum

webBrowser1.Navigate(textBox1.Text);


Daha sonra Yenile butonuna tıklıyorum ve ona da aşağıdaki kodu yazıyorum.

webBrowser1.Refresh();


Şimdi Geri butonuna tıklıyorum ve aşağıdaki kodu yazıyorum.

webBrowser1.GoBack();


Son olarak da İleri butonuna aşağıdaki satırı yazıyorum.

webBrowser1.GoForward();


Böylelikle tarayıcımı tamamladım. Uygulama tam ekran olduğunda web sayfasının da tam ekran olarak görüntülenmesi için webBrowser1 öğesinin Anchor özelliğini değiştirmeniz yeterli. Videoyu izlerseniz bu işlemin nasıl yapıldığını görebilirsiniz.


Read More

4 Mart 2014 Salı

PHP ile bot yapımı ve başka siteden veri çekme

18 comments
Bu yazımda PHP ile istediğimiz sitenin istediğimiz kısmını çekerek sayfamızda nasıl kullanabileceğimizi anlatacağım.

Öncelikle bu işlem için kullanmamız gerek fonksiyonları açıklayıp ardından da konunun pekişmesi için güzel bir örnek olduğunu düşündüğüm IMDB sitesinden film adını ve film puanını çeken bir uygulamayı yazacağım.

PHP ile bir sayfadan veri çekmek için file_get_contents hazır fonksiyonunu kullanıyoruz. Aşağıdaki kodu çalıştırırsak sayfayı olduğu gibi çekebiliriz.

<?php
$url = "http://www.imdb.com/title/tt1675434";
$cekilen_veri = file_get_contents($url);
echo $cekilen_veri;
?>

Ancak biz sayfadaki belli bir alanı almak istiyoruz. Bu durumda ne yapmalıyız?

Böyle bir istediğimiz olduğunda öncelikle bir fonksiyon yazmamız gerekiyor.

function getir($baslangic, $son, $cekilmek_istenen)
{
    @preg_match_all('/' . preg_quote($baslangic, '/') .
    '(.*?)'. preg_quote($son, '/').'/i', $cekilmek_istenen, $m);
    return @$m[1];
}

 Ardından veri çekmek istediğim URL adresini belirliyorum. Ben http://www.imdb.com/title/tt1675434/ adresindeki Can Dostum (Intouchables) filminin bilgilerini çekmek istiyorum.

$url = "http://www.imdb.com/title/tt1675434";

Daha sonra öncelikle sayfanın tamamını çekmem gerektiği için yukarıda da anlattığım file_get_contents metodunu kullanıyorum.

$icerik = file_get_contents($url);

Şimdi en önemli kısma geldik. Film adını ve film puanını çekmek istiyoruz. Peki bunların nerede olduğunu nasıl bulacağız. Belirttiğim URL'ye giderek sağ tıklıyorum ve sayfa kaynağını görüntüle diyorum.


Sayfa kaynağı karşıma geliyor ve burada film adını bulmak için CTRL + F yaparak Can Dostum yazıyorum.


Nihayet istediğim alanı buluyorum. CTRL + F yapıp Can Dostum diye arattığımda yukarıdaki satırlarda da sonuçlar buluyor ancak onlar Can Dostum (2011) şeklinde olduğu için ben sadece film adının yazılı olduğu bu kısmı seçtim.

Görüldüğü gibi Can Dostum yazan yer yani filmin adının olduğu yer <span class="itemprop" itemprop="name"> ve </span> kodlarının arasında. Bu durumda başlangıcım <span class="itemprop" itemprop="name"> ve sonum da </span> olacak.

$film_adi = getir('<span class="itemprop" itemprop="name">','</span>',$icerik);

Şimdi aynı işlemi IMDB film puanı için yapacağım. Sayfa kaynağında 8,6 aratıyorum.


Yukarıdaki gibi 8,6 yazan yerleri buluyorum. 701.satır tam olarak istediğim şey ve hemen onun için de aşağıdaki kodu yazıyorum.

$imdb_puani = getir('class="titlePageSprite star-box-giga-star">','</div>',$icerik);

İstediğimiz bilgileri çektik şimdi sadece bunları göstermek kaldı. Burada dikkat etmemiz gereken nokta array olarak çektiğimiz için değişkeni buna uygun yazmak.

$film_adi değil de $film_adi[0] şeklinde göstermemiz gerekiyor.

echo "<b>Film Adı :</b> " . $film_adi[0] . "<br />";
echo "<b>IMDB Puanı :</b> " . $imdb_puani[0];

Artık herşey tamam. Sayfamı çalıştırdığımda istediğim verilerin çekildiğini görüyorum.

NOT : Sayfaya girdiğimde film adında Can Dostum yazıyor ancak program Intouchables olarak çekiyor diyebilirsiniz. Bunun nedeni IMDB sitesinin tarayıcıdan girildiğinde filmlerin Türkçe adını göstermesi. Ancak program ile çektiğimizde İngilizce olarak geliyor. Zaten yazının başında yapmış olduğum sayfanın tamamını çekme örneğini incelerseniz orada da İngilizce olarak çektiğini görürsünüz.

Şimdi $url değişkenini değiştirerek başka bir film adresi giriyorum.

Görüldüğü gibi onu da sorunsuz şekilde çekiyorum ve sayfamda gösteriyorum.

Çok yakında bu konuyla ilgili video çekip onu da ekleyeceğim.

bot.php dosyasını indirmek için tıklayın.

İyi çalışmalar...
Read More

PHP - Securimage captcha (doğrulama kodu) kullanımı

1 comment
Bu yazıda Securimage adlı CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) uygulamasından bahsedeceğim.

Web sitelerine üye olurken karşımıza bir resim çıkar ve bu resimdeki yazıları ya da sayıları ilgili alana doğru bir biçimde yazmamız istenir. Böylece botların ya da güvenliği tehdit edebilecek unsurların önüne geçilmesi amaçlanır. İşte karşımıza gelen bu resimlere CAPTCHA adı verilir.

Securimage uygulamasını indirmek için http://www.phpcaptcha.org/download/ adresine gidiyoruz ve son versiyonu zip halinde indiriyoruz.

İndirdiğimiz zip dosyasının içindeki securimage klasörünü projemizin ana dizinine atıyoruz.

Şimdi ana dizinde bir php dosyası oluşturalım. (form.php adında bir dosya oluşturdum.) İçine aşağıdaki kodları yazalım.

<form method="post" action="kontrol.php">
<img id="captcha" src="securimage/securimage_show.php" alt="CAPTCHA Image" />

<input type="text" name="captcha_code" size="10" maxlength="6" />
<a href="#" onclick="document.getElementById('captcha').src = 'securimage/securimage_show.php?' + Math.random(); return false">[ Resim Değiştir ]</a>

</div>

<input type="submit" name="Kod Test" />
</form>


Bu kod ile yani form.php sayfası ile doğrulama kodunun doğru olup olmadığını kontrol etmek için kontrol.php dosyasına gönderdik. Şimdi kontrol.php sayfasını oluşturalım. Onun içine de aşağıdaki kodları yazalım.

<?php
include_once 'securimage/securimage.php';
 
$securimage = new Securimage();

if ($securimage->check($_POST['captcha_code']) == false) {

  echo "Hatalı doğrulama kodu.<br /><br />";

  echo "Lütfen <a href='javascript:history.go(-1)'>geri</a> gidin ve tekrar deneyin.";

  exit;

}
?>

Bu kodda ise doğrulama kodu yanlış ise doğrulama kodunun yanlış olduğu uyarısı veriyoruz.

Böylece captcha uygulamasını sayfamıza eklemiş olduk.


Read More

28 Şubat 2014 Cuma

JavaScript'te klavyeden girilen 10 sayının toplamını ve ortalamasını bulma

Leave a Comment
Klavyeden girilen 10 sayının toplamını ve ortalamasını bulan programın C dilindeki kodlarını yazmıştım. (C'de klavyeden girilen 10 sayının toplamını ve ortalamasını bulmak) Bu yazıda aynı işlemi JavaScript dilinde gerçekleştireceğim.

Kullanıcıdan sayıları alabilmek için prompt komutunu kullanacağım. Prompt komutuyla kullanıcıdan veri alma işlemiyle ilgili yazdığım yazıyı buraya tıklayarak okuyabilirsiniz.

JavaScript Prompt komutu ile ekrandan veri alma


Bu programda 10 sayı alacağım için döngü kullanıyorum.

<script>
var toplam=0;

for(var i=1;i<=10;i++)
{
    var sayi = prompt(i + ".sayıyı girin");
    document.write(i + ".sayı = " + sayi + "<br />");
    toplam = toplam + parseInt(sayi);
}
ortalama = parseInt(toplam) / 10;

document.write("<br />Toplam : " + toplam);
document.write("<br />Ortalama : " + ortalama);
</script>

Görüldüğü gibi gayet basit bir program. 10 sayı girdikten sonra ekran çıktısı da aşağıdaki gibi oluyor.


Read More

Python if - else - elif (else if)

1 comment
Python yazılarıma devam ediyorum ve bu yazıda Python'da if - else - elif komutlarını inceleyeceğim. Bu komutların kullanımı oldukça basit.

Python programlama dili ve Windows'ta Python kurulumu

Python IDLE kullanımı ve Windows'ta Python'u yol'a (PATH) eklemek

Dikkat etmemiz gereken nokta if, elif, else komutlarının bulunduğu satırların sonuna : koymayı unutmamak.

Diğer programlama dillerinden de bildiğimiz gibi if komutu herhangi bir şartı kontrol etmek için kullanılıyor. Örnek olarak input komutu ile kullanıcıdan bir veri alalım.

isim = input("Isim girin : ")

if komutu


if şartıyla ismi kontrol edelim. Eğer isim Berkay olarak girilirse "Merhaba Berkay" yazdıralım.

isim = input("Isim girin : ")
if isim=="Berkay":
    print("Merhaba " + isim)


else komutu


İsim Berkay ise ekrana Merhaba Berkay yazdırdık. Peki girilen isim Berkay değil ise ne olacak? Bu durumu kontrol etmek için de else komutunu kullanacağız. Girilen isim farklı bir isimse "Farklı bir isim girildi" yazdıralım.

isim = input("Isim girin : ")
if isim=="Berkay":
    print("Merhaba " + isim)
else:
    print("Farkli bir isim girildi")

elif komutu


if ve else örnekleri yaptık. Peki ben Berkay isminin yanına bir de Ahmet ismini eklemek istersem nasıl yaparım? Bunun için de çoğu programlama dilinde else if olarak geçen ve Python'daki karşılığı elif olan komutu kullanacağım.

O zaman girilen isim Ahmet ise "Merhaba Ahmet" yazdıralım.

isim = input("Isim girin : ")
if isim=="Berkay":
    print("Merhaba " + isim)
elif isim=="Ahmet":
    print("Merhaba " + isim)
else:
    print("Farkli bir isim girildi")

Programı çalıştırdığımda istediğim gibi çalışıyor.


Read More

Python IDLE kullanımı ve Windows'ta Python'u yol'a (PATH) eklemek

Leave a Comment
Bir önceki Python programlama dili ve Windows'ta Python kurulumu adlı yazının sonunda Python konsol ekranında "Merhaba Dünya" yazmıştık. Konsol ekranında yazdığımız kodları kaydedip tekrar çalıştırabilme imkanı bulunmadığından Python programları yazılırken IDLE kullanılır.

Python kurduktan sonra IDLE için ekstra birşey kurmak gerekmez.

Aşağıdaki gibi IDLE uygulamasını başlatabiliriz.



NOT : Python programlama dili hakkında bilgi edinmek ve Windows işletim sisteminde Python kurulumunun nasıl yapıldığını öğrenmek için "Python programlama dili ve Windows'ta Python kurulumu" adlı yazıyı okuyabilirsiniz.

Yeni Dosya Olusturmak (New File)


Yeni dosya oluşturmak için File -> New File menüsünü takip etmemiz yeterli. Ya da neredeyse tüm programlarda olduğu gibi CTRL + N kısayolu ile yeni dosya oluşturabiliriz.

Yeni dosya oluşturduk peki şimdi ne yapacağız? Kod yazmaya geçeceğiz ancak kod yazmaya başlamadan önce tüm uygulamalarımıza aşağıdaki satırı eklememiz gerekiyor.

#!/usr/bin/env python

Ardından print("Python ornek") kodunu yazalım.

Dosya kaydetmek (Save)


Dosya kaydetmek için de File -> Save menüsünü izliyoruz. Kısayolu CTRL + S.

Masaüstüne ornek adında kaydedelim. Aşağıdaki gibi ornek.py adında dosyam masaüstünde görünüyor.



Kaydedilen programı çalıstırma


Kaydettiğimiz ornek.py dosyasını çalıştırmaya geldi sıra. Komut İstemi'ni açıyoruz (cmd.exe) ve cd Desktop yazarak masaüstüne geçiyoruz.

Daha sonra c:/Python33/python.exe ornek.py yazarak enter tuşuna basıyoruz. Karşımıza ekrana yazdırmak istediğimiz "Python ornek" mesajı geliyor. (c:/Python33 klasörü Python'un kurulu olduğu yer. O kısmı kendinize göre düzenlemeniz gerekir.)



Python'u YOL'a (PATH'e) Eklemek


Linux işletim sisteminde c:/Python33/python.exe kodu yerine yalnızca python yazarak program çalıştırılabiliyor. Windows'ta bunu yapabilmek için Python'u path'e eklemek gerekiyor. Path'e eklemeden python ornek.py komutunu verdiğimizde aşağıdaki gibi bir hata alıyoruz.



Bilgisayar'a sağ tıklayıp Özellikler diyoruz.



Açılan pencereden Gelişmiş Sistem Ayarları seçeneğine tıklıyoruz.


Ardından da Ortam Değişkenleri... butonuna tıklıyoruz.


Daha sonra Sistem Değişkenleri bölümünden Path değişkenini seçip Düzenle... butonuna tıklıyoruz.


Değişken değerinin sonuna C:\Python33 kodunu ekliyoruz.


Böylece Python'u path'e eklemiş olduk. Artık uzun uzun Python'un kurulu olduğu dosya yolunu yazmamıza gerek kalmadı.


Read More

27 Şubat 2014 Perşembe

Python programlama dili ve Windows'ta Python kurulumu

Leave a Comment
Python programlama dili; nesne yönelimli, yorumlanabilen, modüler ve etkileşimli oldukça popüler bir programla dilidir. Neredeyse bütün platformlarda çalışan Python ile masaüstü uygulamaları, web uygulamaları, ağ programlama, veritabanı yazılımı programlama başta olmak üzere hemen hemen aklınıza gelebilecek tüm alanlarda uygulama geliştirebilirsiniz.

Youtube, Google, Linux, NASA gibi teknoloji devleri de Python'u çeşitli alanlarda kullanmaktadır.



http://blog.codeeval.com/codeevalblog/2014 linkinden aldığım yukarıdaki görselde de görüldüğü gibi Python programlama dili en yaygın programlama dili. Ancak ülkemizde hakettiği değeri göremiyor. Bu nedenle de Python programlama dili hakkında kaliteli kaynak bulmak zorlaşıyor ve bu da yeni programlama dili öğrenmek isteyenlerin Python'u elemelerine neden oluyor.

Yukarıda yazdıklarımdan sonra sıfırdan başlayarak Python programlama dili ile ilgili yazılar yazmanın uygun olacağını düşündüm ve yazılarıma Windows üzerinde Python kurulumuyla başladım.

Python sürümünün indirilmesi


Öncelikle http://www.python.org/downloads/windows/ bağlantısına tıklayarak istediğimiz Python sürümünü indirelim.

Python kurulumu


İndirme işlemi bittikten sonra yükleme dosyasını çalıştıralım. Yükleneceği konumu seçip ilerleyelim. Kurulum sırasında yapılması gereken ayarlar olmadığı için bu bölümü daha fazla uzatmak istemiyorum. Tüm dosyalar kopyalandıktan sonra Finish butonuna tıklayarak kurulumu bitirelim.

Ekrana "Merhaba Dünya" yazdırma


Python'u kurduğumuz klasör içindeki python.exe dosyasını çalıştıralım. Karşımıza gelen konsol ekranına

print("Merhaba Dünya") yazalım ve enter tuşuna basalım.


Read More

25 Şubat 2014 Salı

C# ile PostgreSQL veritabanına bağlanma

Leave a Comment
PostgreSQL ile ilgili yazılar yazmaya devam ediyorum. Daha önce PostgreSQL nedir? PostgreSQL kurulumu nasıl yapılır? başlıklı yazımda PostgreSQL veritabanı sunucusu ile ilgili bilgiler vermiştim. Ardından da PostgreSQL'de yeni veritabanı oluşturma yazımda pgAdmin programını kullanarak veritabanı oluşturmayı anlatmıştım.


Bu yazıda PostgreSQL veritabanımıza C# uygulamasından nasıl bağlanacağımızı anlatacağım. Böylelikle MS Access, MySQL, MS-SQL'den sonra C# uygulaması ile bağlanığımız 4.veritabanı PostgreSQL olacak. Yakın zamanda Oracle - C# bağlantısını da anlatacağım.

C# ile MS Access veritabanı bağlantısı 
C# ile MySQL bağlantısı kurma
Asp.NET (C#) ile MS-SQL bağlantısı kurma

Öncelikle bağlantıyı kurabilmek için gerekli olan Npgsql.dll isimli dosyayı indirmemiz gerekiyor. http://npgsql.projects.pgfoundry.org/ adresine giderek sağ taraftaki Current Version bağlantısına tıklayıp GitHub üzerinden dosyayı indiriyoruz.

İndirmiş olduğum zip dosyasının (Npgsql2.0.14.3-bin-ms.net4.5.zip) içindeki Npgsql.dll dosyasını masaüstüne atıyorum.

Daha sonra Windows Application Projeme sağ tıklayarak Add Reference... diyorum.


Açılan pencerede soldaki menüden Browse sekmesine girerek alt taraftaki Browse... butonuna tıklıyorum. Masaüstüne attığım Npgsql.dll dosyasını seçerek projeme ekliyorum.


Bir button ve bir label ekliyorum. Butona tıklandığında veritabanı bağlantısını kontrol edip sonucunu label'a yazdıracağım.

,
Buttona çift tıklayarak kod sayfama geçiyorum. İlk olarak aşağıdaki gibi using Npgsql; satırını ekliyorum.


Ardından buttonun click event'ına aşağıdaki kodları yazıyorum.

string baglantiSatiri = "Server=localhost;User ID=blogger;password=123;Database=blog";
            
            NpgsqlConnection baglanti = new NpgsqlConnection(baglantiSatiri);

            try
            {
                
                baglanti.Open();
                label1.Text = "Bağlantı kuruldu.";
            }

            catch (Exception a)
            {
                label1.Text = "Hata !!! " + a.ToString();
            }

Programı çalıştırıp buttona tıkladığımda sunucu açık ise bağlantı sağlanıyor.
Read More

24 Şubat 2014 Pazartesi

Asp.NET sayfalara TinyMCE metin editörü ekleme

Leave a Comment
Asp.NET ile oluşturduğumuz web formlara TinyMCE zengin metin editörünü eklemeyi anlatacağım.

TinyMCE; platformdan bağımsız, web tabanlı JavaScript HTML WYSIWYG editörüdür. Açık kaynak kodlu yayınlanan TinyMCE, LGPL (Lesser General Public License) lisansı altında bulunmaktadır.

TinyMCE ile ilgili bilgileri verdikten sonra artık kurulumunu anlatmaya başlıyorum.

http://www.tinymce.com/download/download.php adresinden editörü indiriyorum.

İndirdiğim zip dosyasının içindeki tinymce klasörünü web form dosyalarımın olduğu klasörün içine atıyorum.

Yeni bir web form ekliyorum ve forma textbox koyuyoru. TextBox'ın TextMode özelliğini MultiLine yapıyorum. Bunu yapmak çok önemli çünkü MultiLine olmazsa tarayıcı bunu text input olarak algılıyor. Kodlar ile örnek vermek gerekirse;

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

kodu tarayıcıda aşağıdaki gibi görünürken

<input id="TextBox1" name="TextBox1" type="text" />



<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"></asp:TextBox>

kodu ise tarayıcıda aşağıdaki gibi görünür.

<textarea cols="20" id="TextBox1" name="TextBox1" rows="2"></textarea>

Biz de textareaları zenginleştireceğimiz için TextMode özelliğini MultiLine yapmayı unutmuyoruz.

Sayfamızda <title></title> etiketlerinin altına aşağıdaki kodu ekliyoruz.


<script type="text/javascript">
    tinyMCE.init({
        mode: "textareas",
        theme: "advanced",
        theme_advanced_toolbar_location: "top",
        theme_advanced_buttons1: "italic,underline,separator,justifyleft,justifycenter,justifyright,separator,formatselect,separator,bullist,numlist,link,unlink",
        theme_advanced_buttons2: "",
        theme_advanced_buttons3: "",
        encoding: "xml"
    });
</script>

Bu kodu ekledikten sonra TinyMCE, MultiLine textboxlara eklenmiş oluyor.
Read More