Emrah Zengin

ASP.Net, CSS, Javascript, C#, Web üzerine denemeler

Regular Expressions .Net - Düzenlemeli İfadeler - Bölüm 2

clock Ağustos 19, 2008 21:59 by author Emrah Zengin

Şu sıralar bu yazıyla uğraşıyorum, yakında tamamlarım..

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Regular Expressions .Net - Düzenlemeli İfadeler - Bölüm 1

clock Ağustos 19, 2008 13:42 by author Emrah Zengin

Regular Expressions, bir çok yerde hayat kurtaran, zaman ve kod boyutunu (yeri geldiğinde) düşüren, programlama dillerine kazandırılmış en güzel özelliklerden biridir herhalde. Şu anda okuyacağınız yazı, aşağıda kaynaklarını belirttiğim makalelerin bir nevi Türkçeleştirilmiş / uyarlanmış / değiştirilmiş halidir. Önemli değil, maksat Türkçe kaynak anlamında bir şeylerin bu topluluğa kazandırılması :)

Burada yazdığım Regular Expression Patterns (Düzenlemeli İfadeler Desenleri) ücretsiz bir şekilde indirebileceğiniz Rad Software Regular Expression Designer yardımıyla deneyebilirsiniz veya 60 günlük deneme sürümünü indirebileceğiniz Expresso programıylada yazdığınız desenleri deneyip, anlamlı ifadelere dönüştürebilirsiniz.

Regular Expression Nedir?

Çoğunuz DOS zamanında (en azından bu zamanı bilenler) veya Windows ta dosya aratırken *.doc, *.xls, *.mp3 şeklinde aratma yapmışsınızdır. Peki ne demek *.doc şeklinde dosya aratmak?  Özetle, dosya adı kaç karakter veya ne olursa olsun (.) nokta dan sonraki kısmı yani uzantısı doc olan bütün dosyaları ara. Peki ???.jpg yazdığımızda ne anlama gelir? Dosya adı ne olursa olsun ama 3 karakterden oluşan ve uzantısı jpg olan tüm dosyalar. Yani, 003.jpg, ahx.jpg, vb.. .  Aslında biz burada *.doc yazarak bir "Pattern (Desen)" tanımlamış oluyoruz. İşte bunun gibi desenler tanımlayarak bir yazı içinde (ve/veya dosya adı, .. seçenekler uzatılabilir) belirli bir karakter topluluğunu bulmamızı / değiştirmemizi / parçalara ayırmamızı sağlar. Herhalde basit bir anlatımla ne demek istediğimi anlamışsınızdır.

Aşağıdaki gibi bir çok sorunun cevabıdır Regular Expressions;

1- Metin içindeki yazıyı linke çevirmek nasıl olur?
2- HTML Tag içindeki yazıyı nasıl bulurum?
3- Yazıdaki kelimelerin otomatik altını çizmek nasıl yapılır?
4- Bir yazının içindeki HTML tagleri nasıl temizlerim?

 

Örnekler

Örnekler için kullanacağımız metin;

Windows Vista için hazır mısınız?
Windows XP tabanlı bilgisayarınızın Windows Vista çalıştırmaya hazır olduğundan emin olun. Windows Vista Yükseltme Danışmanı'nı karşıdan yükleyip çalıştırın.

Fotoğraf ve videolardan hiç olmadığı kadar keyif alın
Windows Vista'nın, resim ve ev filmlerinizi mükemmel hale getirmek, düzene koymak ve paylaşmak için kullanabileceğiniz araçlarla tek bir konuma nasıl yerleştirdiğini öğrenin.
 
Ücretsiz casus yazılım koruması edinin
Windows XP için Windows Defender'ı karşıdan yükleyerek, bilgisayarınızın casus yazılımlara karşı korunmasına yardımcı olun.
 
Windows haber ve ipuçlarını gelen kutunuza alın
Exploring Windows bülteniyle, Windows güncelleştirmelerini, ipuçlarını, nasıl yapılır makalelerini ve yenilikçi fikirleri doğrudan gelen kutunuza alın.

Yazının Kaynağı : http://www.microsoft.com/turkiye/windows/default.mspx

Örneklerde kullanılmak üzere telefon numarası : 0264 123 45 67 , (0 264) 123 45 67, 02641234567
Örneklerde kullanılmak üzere email adresi : info@example.com, privacy@microsoft.com
Yine aynı şekilde WİNDOWS ve Windowsunuzu veya Windowslar, WindowsXP, WindowsVista şeklindeki kelimelerle Windows'a ait kelimelerden oluşan saçma bir cümle kuralım.

 CodeBehind .cs sayfasında using System.Text.RegularExpressions; satırını eklemeyi unutmayın ;)

1- Yukarıdaki metinde Windows kelimesini bulmak ve Regex Kullanımı 

using System.Text.RegularExpressions;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Arama yapılacak kaynak paragrafimiz..
            string sKaynakText = @"Windows Vista için hazır mısınız? 
Windows XP tabanlı bilgisayarınızın Windows Vista.. 
yazı yukarıdaki paragrafın aynısı, 
kodu kısaltmak icin gerisini siliyorum..";
            
            //Bulunacak kelime icin Regex Patternimiz
            string regexPatternFind = "Windows";

            MatchCollection collection = Regex.Matches(sKaynakText, regexPatternFind, RegexOptions.Multiline | RegexOptions.IgnoreCase);
            Console.WriteLine("Bulunan Windows Kelime sayısı : {0}", collection.Count);
            Console.WriteLine("");
            

            foreach (Match s in collection)
            {
                Console.WriteLine("Bulunan Kelime : " + s.Value);
                Console.WriteLine("Karakter pozisyon : " + s.Index.ToString());
                Console.WriteLine();

            }

            Console.Read();
        }
    }
}

Bu kodun çıktısı ise;
Bulunan Windows Kelime sayısı : 17

Bulunan Kelime : Windows
Karakter pozisyon : 0

Bulunan Kelime : Windows
Karakter pozisyon : 36

Bulunan Kelime : Windows
Karakter pozisyon : 72

Bulunan Kelime : Windows
Karakter pozisyon : 127

Bulunan Kelime : Windows
Karakter pozisyon : 254

Bulunan Kelime : Windows
Karakter pozisyon : 474

Bulunan Kelime : Windows
Karakter pozisyon : 490

Bulunan Kelime : Windows
Karakter pozisyon : 602

Bulunan Kelime : Windows
Karakter pozisyon : 662

Bulunan Kelime : Windows
Karakter pozisyon : 682

Bulunan Kelime : windows
Karakter pozisyon : 859

Bulunan Kelime : WİNDOWS
Karakter pozisyon : 1084

Bulunan Kelime : Windows
Karakter pozisyon : 1095

Bulunan Kelime : Windows
Karakter pozisyon : 1113

Bulunan Kelime : Windows
Karakter pozisyon : 1125

Bulunan Kelime : Windows
Karakter pozisyon : 1136

Bulunan Kelime : Windows
Karakter pozisyon : 1172

 

Yukarıda gördüğünüz koda benzer örnekleri RegEx Örnekleri sayfasından alabilirsiniz. Bu sayfayı ziyaret ederek sayfanın .aspx ve .cs dosyalarını indirebilirsiniz.

Gelelim kodu açıklamaya;

11. satırda içerisinde arama yapacağımız değişkenimizi tanımlayıp, bir değer atadık. ( " Çift tırnaktan hemen önceki @ işaretinin anlamı için tıklayınız )
string sKaynakText = @".." 

17. satırda arama yapacağımız kelimeyi/deseni string türünden tanımladık
string regexPatternFind = "Windows";  

19. satırda ise bize MatchCollection olarak dönecek olan Regex.Matches metodunun 3 parametre alan şeklini kullanıp, collection adındaki değişkenimize atıyoruz.

Regex.Matches() Metodu iki farklı parametre çeşidiyle kullanılan ve System.Text.RegularExpressions.MatchCollection türünde değer döndüren bir metoddur. Kullanım şekilleri ;

Regex.Matches(string IcerisindeAramaYapilacakMetin, string AramaTurunuBelirtenDesen)

veya

Regex.Matches(string IcerisindeAramaYapilacakMetin, string AramaTurunuBelirtenDesen, RegexOptions RegexIcinKullanilicakSecenekler)

Buradaki RegexOptions Enum değerleri: Compiled, ECMAScript, ExplicitCapture, IgnoreCase, IgnorePatternWhitespace, Multiline, None, RightToLeft, Singleline

Birden fazla RegexOptions metod içerisinde OR (|) bitwise operatörü yardımıyla tanımlanır. Örneğin;

MatchCollection collection = Regex.Matches(sKaynakText, regexPatternFind, RegexOptions.Multiline | RegexOptions.IgnoreCase);

Bunlardan en azından şimdilik Multiline ve IgnoreCase in açıklamalarını yapmakta fayda var;

RegexOptions.MultiLine : Arama yapılacak olan metnin birden fazla satırdan oluştuğunu ayrıca ^ ve $ karakterlerinin metnin başlangıcı ve sonu değil, satır başlangıcı ve satır sonu anlamına geldiğini ifade eder. 

RegexOptions.IgnoreCase : Arama yapılacak olan metinde arama yapılırken BüYüK-KüçüK harf duyarlılığını kaldırır. Aranılan kelime "anahtar" kelimesi ise, Anahtar, ANAHTAR, ANahtar şeklindeki tüm ifadelerin bulunmasını sağlar. 

Kısacası, 19. satırımızın Türkçe anlamı şudur;

Ben sKaynakText değişkenimde bulunan yazıdaki, içerisinde Windows geçen kelimeleri arıyorum ama benim metnim 
birden fazla satırdan oluşuyor / birden fazla satır başı var 
ve metin içerisinde arama yaparken Büyük-Küçük Harf hassasiyeti olmadan (yani WİNDOWS, windows, Wİndows, hepsi kabulümdür)
bulunacak olan değerleri collection adını verdiğim değişkene ata.

Örnekte bulunan 17 Windowsun içerisinde aslında WindowsXP, WindowsVista gibi sadece tek başına "Windows" olmayan kelimelerde bulunuyor ama bulunan değer olarak WindowsXP veya WindowsVista gibi kelimenin tamamı değil, sadece aradğımız kısmı olan "Windows" kelimesi collection değişkenimizin içerisine ekleniyor.  RegEx Örnekleri sayfasında bununla ilgili daha fazla örneği inceleyebilirsiniz.

Serinin Devamı - Regular Expressions .Net - Düzenlemeli İfadeler - Bölüm 2 >>

Kaynaklar :
http://www.codeproject.com/KB/dotnet/regextutorial.aspx
http://www.regular-expressions.info
http://msdn.microsoft.com/en-us/library/ms998267.aspx

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


ASP.Net Tutorial Serisi - Bölüm 1

clock Ağustos 12, 2008 18:07 by author Emrah Zengin

Aradan yine biraz vakit geçti ama artık başlamanın zamanı geldi sanırım. Sıfırdan ASP.Net deyişimi yanlış anlamamak gerekir. Sonuçta benim size göstereceklerim ilk etapta basit html bilgisinden hemen sonra klasik asp ciler için asp.net olacak. Normal şartlarda asp.net le uğraşmadan önce en azından;

  • HTML
  • CSS
  • Javascript

 ile ilgili temel seviyedede olsa (ilerisi makbul ama) bilginiz olması gerekiyor.

HTML

Web üzerinde dolaştığınız sayfalar, arka planda hangi teknolojiyi kullanırlarsa kullansınlar, tarayıcıda görüntülenmek üzere HTML çıktısı üretirler. En basit haliyle bir HTML sayfası şu şablondadır;

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta />
<title>Basit HTML Sayfa</title>
</head>
	<body>
<h1>Basit HTML sayfaya örnek</h1>
		<p>HTML sayfada olabilecek basit tagler bunlardır.</p>
	</body>
</html>

Burada ilk satırda DOCTYPE declaration adı verilen ve yazdığımız HTML in hangi formata uyacağını gösteren tanımlama. İkinci satırda <html> tagımız, sonrasında ise CSS, Javascript, Title ve Meta taglerinin  içinde bulunduğu <head> bölümü ve en sonra içeriği barındıran <body> bölümü.

ASP ve PHP yle kod yazan bir çok arkadaşın içine düştüğü bir hata var ki, o da HTML çıktı üreten sayfaları <html> tag ininde üstünde include edip, HTML sayfanın formatının çorbaya dönmesine neden olmak.

Ciddi olarak web programlamayla ve ASP.Net le ilgilenecekseniz ve yukarda bahsettiğim HTML,CSS, Javascript hakkında bilginiz yoksa, bu yazıları okumayı bırakıp, bahsettiğim konular hakkında bir şeyler öğrenmeye başlasanız iyi olur. Çünkü bulunduğunuz sayfa size HTML, CSS ve Javascript öğretmeyecek.

Sıra geldi bu iş için kullanacağımız programları indirmeye. Peki nedir bize lazım olanlar?

İlk etapta, sadece Visual Web Developer 2008 -ki şu anda ücretsiz olarak indirebileceğiniz sürümü budur- yeterli olacaktır. Ben ileriyide düşünerek Visual Studio 2008 Express Edition i indirip, iso dosyası içinden Visual Web Developer in kurulumunu yaptım. Ama siz sadece Visual Web Developer 2008 i indirip kurabilirsiniz. Peki Visual C# 2008 Express Edition bize nerde lazım olacak derseniz; İleride bazı yardımcı kodları .dll olarak derleyip web sitemizde bu kodları kullanacağız. Tabi bu .dll dosyalarımızı Visual C# la hazırlamamız gerekecek. Benim size tavsiyem, en baştan -bazı programları lazım olmayacakta olsa-  Visual Studio 2008 Express Edition i indirip, indirdiğiniz ISO dosyayı bir dvd ye yazmanız yada Daemon Tools  gibi ücretsiz bir programla sanal CD/DVD sürücünüze mount ederek ordan kurulum yapmanız olacaktır. Kurulum bilgisayarınızın konfigürasyonuna göre 15 - 30 dk arası bir zamanda tamamlanacaktır. O yüzden biraz sabırlı olmak gerekiyor.

 

 

2 kişi tarafından 2.5 olarak değerlendirildi

  • Currently 2,5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


GeoGreeting

clock Ağustos 4, 2008 14:02 by author Emrah Zengin

Sevdiklerinize ya da sevmediklerinize Google Maps üzerinden mesaj göndermek için yapılmış güzel bir uygulama.. Wink

GeoGreeting i bi kontrol edin isterseniz..

2 kişi tarafından 2.5 olarak değerlendirildi

  • Currently 2,5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


ASP.Net Tutorial Serisi - Bölüm 0

clock Ağustos 4, 2008 00:00 by author Emrah Zengin

Türkiye'de web tabanlı programlamayla uğraşan ve bu iş için hala Klasik ASP kullanan bir çok insan var. Bunun çeşitli nedenleri olabilir ama benim aklıma gelenleri sayayım :

  • Türkçe öğretici kaynakların yeterli olmaması
  • 1. sebeple bağlantılı olarak İngilizce kaynakları takip edecek seviyede İngilizce bilmeme
  • Sphagetti Code yöntemine alışıp, .Net le gelen CodeBehind ın nasıl bir şey olduğunu henüz kavramamış olmak
  • Ve sonuncusu "Amaaan, şimdi ben bildiklerimi bırakıp yeni bir dil nasıl öğrenecem?" bahanesinin arkasında ki gö(z)ün yememe durumu:)

Aslında en büyük sebepte sonuncusu. (Kendimden biliyorum..) Çünkü Asp.Net e şöyle uzaktan bakıpta ASP cilerin aklına bir sürü soru geliyor.

"Ya ben Server.CreateObject("ADODB.Connection") diyordum, sonra Server.CreateObject("ADODB.Recordset") diyordum, Recordset("SutunAdi") deyip istediğimi yazdırıyodum. Recordset.Update diyordum kaydediyordum.  Şimdi bu OleDbAdapter,SQLAdapter midir nedir, onlar ne öyle? Nerde benim recordsetim? DataSet nedir? Ben şimdi veritababına nasıl kayıt gircem? Sürükle-Bırak veriyi göstersin, iyi güzel ama ben bunları hep kodla yazarak yapmıştım, bu sürükleyip bıraktığım şeyleri nasıl kontrol edicem?" şeklindeki klasik ASP cilerin sorduğu sorular listesi uzar gider..

 Türkçe kaynak az dediğime bakmayın, aslında YazGeliştir, ASPNedir, C#Nedir gibi faydalı siteler mevcut. Ama bu sitelerde, birden fazla geliştiricinin makalelerinden oluştuğu için hep spesifik konulara yönelik ve çoğunlukta Orta veya İyi seviye bilgi gerektiren makaleler.

 Neyse lafı uzatmiyim, bende özellikle ASP den ASP.Net e geçmek isteyen, bir türlü geçemeyen, gö(z)ü yemeyen arkadaşlara yönelik sıfırdan ASP.Net Tutorial (Türkçesi için öğreticimi uygun?) serisi hazırlamaya karar verdim. Diğer öğreticilerden farklı olarak, herşey sürükle bıraktan ziyade data kontrollerin ve bunlara yönelik işlemlerin "kod yazarak" halledilmesi üzerine olacak. Yok kardeşim ben standart nasıl oluyorsa onu öğreneyim diyenler burdaki İngilizce tutorial ları seyredebilir.

Serinin birinci yazısını çok yakında yazacağım, inşallah araya çok vakit girmez.

 

2 kişi tarafından 4.0 olarak değerlendirildi

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Bu sefer olacak

clock Ağustos 3, 2008 23:30 by author Emrah Zengin
Kaçıncı defa sıfırdan blog yazıyorum bilmiyorum.. Bazılarını hiç yayınlama imkanım bile olmadı. Ama bu sefer azimliyim..

1 kişi tarafından 1.0 olarak değerlendirildi

  • Currently 1/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5