27 Mart 2009 Cuma

C# da Regular Expressions - 1

Merhaba arkadaşlar;

Bugünkü konumuz regular expressions. Son derece önemli olan buu konuya genel bir giriş yapıp ilerleyen zamanlarda bir iki örnek vererek pekişmesini sağlayacağız. Öncelikle regular expressions dan genel anlamda biraz bahsettikten sonra nerelerde kullanıldığına ve nasıl kullanıldığına değineceğim. Başka bir yazıda da bir iki örnek vereceğim. Yol haritamızı çizdikten sonra yavaş yavaş başlayalım isterseniz...

Once
regular expressions ın ne olduğu ile ie başlayalım.

Regular expressions, bir metni düzenlemek ya da metin içerisinden belli kurallara uyan alt metinler elde etmek için kullanılan bir dildir.

Kullanımı:
-----------------
Regular expressions, uzunluk sınırlaması olmaksızın string tipindeki karakter topluluğuna uygulanır. Sonuçta iki olasılık vardır. Ya substringler oluşur ya da orjinal metnin bir kısmını içeren değiştirilmiş yeni metinler elde edilir.
Bu işlem kendine has bir method ile yapılır. Şimdi gelin bu işi nasıl yaptığına ve hangi ifadeleri kullandığına bakalım...


Regular Expressions da Kullanılan Özel karakterler ve İşlevleri :
-------------------------------------------------------------------------------------

"." Karakteri
------------------

Tek bir karakteri temsil eder(yeni satır karakteri hariç).

ör: blogger.om ifadesindeki . yerine her karakter yazılabilir. Yani
blogger.om ifadesi bloggercom, bloggertom, bloggerkom gibi versiyonlara dönüşebilir..


" [ ] " Karakterleri
-------------------------

Bir dizi (array) ya da aralık temsil eder.

ör: "blogger[ctk]om" ifadesi bloggercom, bloggertom, bloggerkom stringine dönüşebilir.

ör-2 : Aralığın tüm alfanumerik karakterleri kapsamasını istiyorsak;
blogger[a-z]om ifadesini kullanmamız yeterli olacatır.
ör-3 : Aralığın numerik değerler almasını istiyorsak;
blogger[0-9]om ifadesini kullanmamız yeterli olacaktır.



" ? " Karakteri
----------------------
Kendinden önceki karakterin string'de olması ya da olmamasının sorun teşkil etmemesini sağlar.

ör :
blogger?com ifadesi bloggercom ya da bloggecom olabilir.



" \ " Karakteri
--------------------
Kendinden sonra kullanılan /*%& gibi özel karakterin stringe dahil edilmesini sağlar.

ör :
blogger\.com ifadesinin blogger.com şeklinde algılanmasını sağlar. Eğer \ ifadesini kullanmasak bunu en başta söz ettiğimiz özel karakter olarak algılayacak ve bloggertom, bloggermom, bloggerrom, gibi ifadeleri de doğru kabul edecekti...


" * " Karakteri
--------------------

Kendinden önceki karakterin ya da stringin hiç olmaması ya da istediği sayıda olmasını sağlar.

ör :blogger.com* ifadesi
blogger.co veya blogger.comm ya da blogger.commmm şeklinde olabilir...


ör-2 : blogger.(com)* şeklindeki ifade ise blogger. veya blogger.com veya blogger.comcom şeklinde olabilir...


" { } " Karakterleri
--------------------------

Kendinden önce gelen karakterin belirtilen sayıda tekrar etmesini sağlar.

ör :
blogger.com{4} deseni blogger.commmm şeklinde değer döndürür.



" ^ " Karakteri
------------------------

Satır başını ifade eder.

ör :
^blogger.com ifadesi satır başında blogger.com stringi varsa bunu döndürür...


" $ " Karakteri
------------------------
Satır sonunu ifade eder.

ör : blogger.com$ ifadesi satır sonunda blogger.com stringi varsa bunu döndürür...




18 Mart 2009 Çarşamba

C# da Bir Sayfadaki Değişkeni Başka Bir Sayfada kullanma

Merhaba arkadaşlar;

Bugün C# ın temellerinden olan değişkenler üzerinde üzerinde önemli bir konudan söz edeceğiz. Bir çoğunuz belki de anlatmaya çalışacağım konuyu biliyordur; fakat bilmeyenlerin ve öğrenmek isteyenlerin olabileceğini düşünerek konuya anlatmanın faydalı olacağını düşünüyorum.

Öncelikle iki sayfamız olduğunu düşünelim. Bunlardan biri Müsterilerin yer aldığı Musteri.aspx sayfası olsun. Diğeri de siparişlerin yer aldığı Siparis.aspx olsun. Şimdi müşteri sayfasında yer alan Musteri adının tutulduğu bir label daki bilgiyi Siparis sayfasına almamız gerektiğini düşünelim. Bu durumda yapmamız gereken sıralama aşağıdaki gibi olacak arkadaşlar.

İlk olarak ana sayfamız olan Musteri.aspx sayfasındaki Müşteri adının tutulduğu label i bir değişkene atalım. Değişkenimizi ise public static Musteri_name olarak tanımlayalım.
Oncelikle neden public olarak tanımladığımızı belirtelim. Public tipi değişken sayesinde bu değişkenimize istediğim scoplar arasından ulaşmamıza imkan tanır. (Scop: Süslü parantezler yani {...} arasında kalan alanın genel adı. )

Public tamam; peki static ne oluyor diyecek olursanızs onu da şöyle izah etmeye çalışayım. Public bir değiken sadece aynı sayfa içerisinde istediğimiz bir scop arasında erişime izin verir. Yani default olarak private tir. Yani sadece bu sayfa içinde kullanılabilir. static ise bu bilginin adresinin doğrudan ram'e yazıldığı anlamına gelir. Yani program kapatılana kadar bu bilgi sürekli ram'deki ilgili adreste tutulur. public ve static kavramlarını tek tek açıkladıktan sonra bunları nasıl çağıracağımıza bakalım isterseniz.

Çağırma işlemini sözel anlatarak canınızı sıkmak istemiyorum. O yüzen kod üzerinde anlatacağım.

Kod:
--------

İlk sayfadaki(Musteri.aspx.cs) kod:
----------------------------------------

namespace ConFactor
{
public partial class Musteri : System.Web.UI.Page
{
public static string Musteri_name; //yukarıdaki ifadeleri uygun olarak değişkeni tanımladık.
}
}


protected void Page_Load(object sender, EventArgs e) //sayfamızın load kısmına değişkenimizin nereden set edileceğini yazdık. Bu setleme olayı bir buton altında da olabilir. Tamamen istege bağlı
{
Musteri_name =lbl_musteri.text; //Musteri_name değişkenine lbl daki değeri set ettik.
}



Şimdi ikinci sayfamız olan Siparis.aspx e gecelim.
---------------------------------------------------

namespace ConFactor
{
public partial class Siparis: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
lbl_musteri_name.Text = Musteri.Musteri_name.ToString(); //label in text'ine Musteri sayfamızın Musteri_name değişkenindeki değeri yazdırmış olduk. ve string tipinde yazmasını söyledik.
}
}
}


Evet arkadaşlar olay bu kadar. Biraz uzun olduğunu farkındayım. Fakat iyice anlaşılmasını sağlamak için böyle bir yöntem izledim. Umarım faydalı olmuştur. Kolay gelsin...

NOT: Web uygulamalarında bunun yerine Session da verilerin tutulması önerilir. Sebebini ve Session Konusunu ilerleyen yazılarımda anlatmaya çalışacağım :)

16 Mart 2009 Pazartesi

Data Grid View i Oracle Veri Tabanına Bağlama

Merhaba arkadaşlar;

Hepinizin bildiği gibi datagrid view nesneni veri tabanı ile ilişkilendirmenin birçok yolu vardır. En kolayı ise wizard kullanarak yapmaktır ki bu pek de kullanışlı değildir. Neden kullanışlı olmadığını açıklayalım isterseniz. Bunlardan sadece birini söyleyeceğim ki bence bu yeterli olacaktır. :) Kod hakimiyeti. Evet wizard kullanıldığı zaman kod hakimiyeti ortadan kalkmasa bile oldukça sıkıntı yaşatabilmektedir. Bu yüzden grid'i kodla doldurmanızı öneririm.

Öncelikle bir tane Connection tanımlayacaığız. Bu connection u tanımlayabilmek için eğer ekli değilse kodumuzun en başına using System.Data.OleDb; eklenmelidir.

Şimdi isterseniz kodumuzu ve üzerinde açıklamalarını verelim.

KOD:
-------------

OleDbConnection conn = new OleDbConnection("Provider=MSDAORA;Data Source=Elegance;Persist Security Info=True;Password=eln;User ID=TTkrl");
//conn adında bir connection tanımlıyoruz. Bu kısım db ile bağlantıyı sağlamaktadır. Eğer db nizde kullanıcı adı ve şifre yoksa o kısımları yazmamanız gerekmektir.

string v_sql;
v_sql= "select* from.... "; //Bu kısım sql imiz

try
{
conn.Open(); //Bağlantımızı açıyoruz.
OleDbDataAdapter da = new OleDbDataAdapter(v_sql, conn); // da diye bir data adapter tanımladık.

DataSet ds = new DataSet(); //Yeni bir data set tanımladık.
da.Fill(ds); // Datamızım tabloyu doldurması için adaptoru fill etmek gerekmektedir.
GridView1.DataSourceID = null; // Daha sonra DataSourceID yi null yaptık.
GridView1.DataSource = ds; //GridView1 in datasource unu tanımladık. Yani datayı nerden alacağını. Bir diğer ifade ile data kaynağını...
GridView1.DataBind(); //Gridimizi bind ederek veri alma işlemini tamamlıyoruz...
}

catch (Exception exp) //hata olması durumunda buraya düşer ve hatayı ekrana yazar.
{
conn.Close();
Response.Write("Hata oluştu : " + exp.Message);
}

finally
{
conn.Close(); //Bağlantımızı kapatıyoruz...
}


Evet arkadaşlar. Artık GridView1 adlı gridimiz istediğimiz şekilde doldu. Eğer bir değişiklik olması durumunda istediğimiz gibi değiştirmemiz mümkün olacaktır.

Hepsi bu kadar. Gördüğünüz gibi oldukça basit bir yöntem. Kolay gelsin...

15 Mart 2009 Pazar

ListBox da Multiple Seçim

Merhaba arkadaşlar;

Bilgiğiniz üzere Listbox ile Dropdownlist ler birbiri ile benzer ozellikler taşımaktadır. Listbox'ı ayıran en büyük özellik, Mültiple seçeneğinin olmasıdır. Yalnız burada küçük bir sorunumuz var. Listbox'ın properties inden multiple özelliğini her ne kadar aktif etsek de arkada bir takım kodlar yazmamız gerekiyor.

Şimdi dilerseniz o kodlara geçelim. Geçmeden önce kısa bir bilgi verelim. Eğer birden fazla seçim söz konusu ise oralarda bir yerde mutlaka for ifadesi kullanmamız gerek. Bu kısa bilgiden sonra kodumuzu verelim artık değil mi? :)

Senaryomuz: Bir tane listboxımız var. Bu listboxımızın altında da Hepsi adında bir linkbutton var. Link butona tıklayınca yapış olduğumuz seçimleri dikkate almasını istiyoruz.

protected void Hepsi_Click(object sender, EventArgs e)
{
for (int i = 0; i < style="color: rgb(51, 51, 255);">if (lstboxArea.Items[i].Selected == true)
{
lst_area_array = lst_area_array + lstboxArea.Items[i] ;
}
}
}

Burada öncelikle listbox ımızdaki toplam eleman sayısını alıyoruz. Bu değeri for döngümüzün ne kadar döneceğini belirlemek için kullanıyoruz. Daha sonra for içerisinde bir if bloğu kullanıyoruz. Burada lstboxArea dan bir seçim yapılmışsa yapılacak olan işlemi yazıyoruz. ( Burada lst_area_array adında bir değiken tanımladık. Bu değişken seçili olan ögeleri bir array e atmak için kullanıldı. )

Evet şimid seçmiş olduğumuz ifadeleri almış olduğumuz için amacımıza ulaşmış oluyoruz. :) Bir sonraki yazıda görüşmek üzere. Kolay gelsin...

12 Mart 2009 Perşembe

Ajax Toolkit i Visual Studio IDE sine nasıl yuklenir?

Merhaba arkadaşlar;

Çevremde sıkla duyduğum ve bir zamanlar benim de karşılaştığım bir sorunun cevabına açıklık getirmek istiyorum. Konu Ajax toolkit i Visual Studio IDE sine nasıl yuklenir. Ajaxın IDE mize yüklenişini adım adım anlatmaya çalışacağım sizlere.

Öncelikle Ajax ToolKit i olmayanlar için download Linkini verelim :
Buradan İndirebilirsiniz...

Bu linkte Download The Control TookKit Diye bir buton var. Onu tıklayıp ToolKİt in indirilme işlemini başlatabilirsiniz. İndirme işlemi tamamlandıktan sonra sıkıştırlmış halde olan klasörümüzü dışarıya çıkartalım.

İndirme işlemini ve dosyayı dışarıya çıkarma işlemi tamamladıktan sonra asıl sorun olan İmport olayına gelelim. Bundan sonraki adımları anlaşılabilirliği arttırmak için madde madde halinde yazacağım.

Klasörümüzün içinde yer alan AjaxControlToolkit.sln ye çift tıklayarak Visual Studio ile açılmasını sağlayalım.

Daha sonra aşağıdaki gibi Release i seçelim ve projemizi derleyelim.



Şimdi VS Toolbaxımıza dönelim. Aşağıdaki resimden de anlaşılacağı gibi Toolbox ımızdaki General e sağ tıklayıp açılan pencereden Add Tab ı seçelim. Tabımıza herhangi bir isim verelim. Ben Ajax ToolKit vermenizi öneririm; ama yine de tercih sizin. :)



Daha sonra oluşturduğumuz ve ismini verdiğimiz tab a sağ tıklayarak Choose Items.. ı tıklayalım. Karşımıza gelen pencereden .Net Frame Component Tab ının altında Browse... seçeneğine tıklayalım.



Adres olarak indirdiğimiz klasorden AjaxControlToolkit / bin / Release klasörlerindeki AjaxControlToolkit.dll i gösterelim.


Son olarak ise OK e basıp VS yi kapatıp yeniden açalım. Artık Ajax ToolKit imiz kullanıma hazır.


Artık Ajax ımızı hazırladığımıza göre ilerleyen zamanlarda ajax ile ilgili örnekler yapmamızda bir engel yok :)


Bu yazının da sonuna geldik. Bir sonraki yazıda görüşmek üzere...




11 Mart 2009 Çarşamba

Visual Studio 2005-2008 de Default Browser Ayarı

Merhaba arkadaşlar;

Aranızda eminim İE sevip Firefox a gıçık olanlar ya da benim gibi Firefox u sevip IE ye gıcık olanlar vardır. Bu arkadaşlarımız eğer web sitesi ile uğraşıyorsa yapmış oldukları web sitesinin her ikisine de uyumlu olduğunu görmek zorundalar. IDE olarak VS 2005-2008 kullanıyorsa zırt pırt default Browswer i değiştirmenin yontemini şu şekilde açıklayalım.
  1. Solution exp. açıp oradaki herhangi bir .aspx dosyasına sağ tıkla
  2. Açılan menüden Browse with...seçeneğini seç.
  3. Default olarak kullanılmakta olan browserin yanında (Default) ifadesi yer alır.
  4. Açılacak olan pencereden istediğin gibi default browserini değiştir ve çık.
Hepsi bu kadar arkadaşlar. Bazı arkadaşlara göre biraz basit bir yazım olabilir; fakat bu tip ayarlamaları bilmeyen yeni arkadaşlar olabileceği için yazmakta fayda gördüm. Ne demişler. Bilmemek ayıp değil, mğrenmemek ve bildiğini paylaşmamak ayıp :)

Asp.Net de Multiview Kontrolü

Merhaba arkadaşlar;

Şimdi de Asp.net deki güzel bir kolaylıktan bahsedeceğiz. Kolaylık sağlayan yapımızın adı Multiview. Bu araç bence oldukça faydalı bir meret :) Şimdi kısaca Multiview in ne işe yaradığından bahsedelim isterseniz.. Diyelim ki web de dinamik bir yapı kurmak istiyorsunuz. Ya da yetkilendirme yapmak istiyorsunuz. İşte o zaman Multiview seçeneği tam size göre bir yapı. Şimdi lafı uzatmadan gelelim kullanılışına.

Öncelikle toolbox ımızdan bir tane Multiview alıyoruz ve web sayfamıza sürükleyip bırakıyoruz. Daha sonra Multiview i kullanabilmek adına yine toolbox ımıza başvuruyoruz. Bu sefer de ihtiyacımız kadar view alıyoruz. Bu viev lerimizi Multiview içine taşıyoruz. Daha sonra viewlerimizin içeriğini istediğimiz gibi dolduruyoruz. Şimdi 3 tane view kullandığımızı varsayaraktan yazmamız gereke küçük kodu yazalım ki yaptıklarımız işlev kazansın...

Ornek Uygulama ve Kod:
----------------------------

protected void Button1_Click(object sender, EventArgs e)
{
Label2.Text = username.ToString();
if(username !="")
{
MultiView1.ActiveViewIndex = 0;
}

else
{
MultiView1.ActiveViewIndex = 1;
}



Yukardaki örneğimizin işlevi şu arkadaşlar : Eğer siteye giriş yapan kullanıcımızın username i boş değilse ilk view i, boş ise 2. view i gösteriyor. Buradaki username ise db sonucu sonrası dönen bir değer :)


Faydalı olmasını ümid ederekten bir sonraki yazıda buluşana dek hoşçakalın :)

Data Grid View deki Verileri Excel'e Yazdırma

Merhaba arkadaşlar;

İnternette farklı yontemler olmasına rağmen data griddeki verileri nasıl excel'e basacağımıza dair detaylı bir örnek vermek istiyorum. İnternetteki örnekleri incelediğimde genel itibari ile dataylı anlatılmamasından kaynaklanan eksiklikler olduğundan bir de ben şansımı denemek istedim. :)

Öncelikle kodun açıklamsını önden uzun uzun yapmak yerine kod üzerinde comment satırları ile açıklama yapmanın daha faydalı olacağını düşünüyorum.

Öncelikle aşağıdaki kodun çalışabilmesi için aşağıdaki alanın htm tarafında en üstteki bölüme eklemek gerekiyor. Eklenecek olan alan kırmızı renkte olan alandır. Başındakli<%@ Page Language="C#" ifadesini ise ekelecek yeri karıştırmamak adına verdim.

<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true"


Şimdi dilerseniz koda geçelim :)
------------------------------------

protected void btnExportToExcel_Click(object sender, EventArgs e) //Excel'e aktarımı saglayacak olan Butona tıklanma
{
string attachment = "attachment; filename=ProdDefects.xls"; //Dosyamızın adını belirttiğimiz kısım. Once string bir degisken tanımladık. Sonrasında ifadeyi yazdık...

Response.ClearContent();

Response.AddHeader("content-disposition", attachment);

Response.ContentType = "application/ms-excel"; //Contenttype ımızı ms-excel olarak belirledik...


StringWriter sw = new StringWriter (); //Şimdi de ihtiyacımız olacağından bir tane StringWriter ı tanımladık...

HtmlTextWriter htw = new HtmlTextWriter (sw); //Aynı şekilde bir de HtmlTextWriter tanımladık...

GridView1.RenderControl(htw); //Grid deki ifadeyi html e yukledik.

Response.Write(sw.ToString()); //Daha sonra da onu StringWriter kullanarak yazdırdık...

Response.End();

}

public override void VerifyRenderingInServerForm(Control control) //Bu kısım işlev geçerliliği için gerekli
{
}

===========
Not:
===========

Kod denendi ve çalışır durumda. Eğer sizde çalışmaması durumda;
  1. Solution Exp. da projenize sağ clikleyin.
  2. Açılan menüden Add Referance yi seçin. Sizi bir pencere karşılayacak..
  3. Açılan olan pencereden Com tabını tıkayın.
  4. Buradan Microsoft.Office.Interop.Excel ve Office ve System.Core u ekleyin.
  5. Bu eklemeleri yaptıktan sonra aşağıdakileri projenize import edin...

using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Core;
using System.IO;


Evet. Hepsi bu kadar. Gridinizdeki tüm özellikler artık xls dosyasında... :)

Kolay gelsin...

4 Mart 2009 Çarşamba

SQL/PLSQL de DECODE Komutu

Merhaba arkadaşlar;

Uzun zaman kullanmamış olduğumdan dolayı kullanımını unuttuğum; fakat bi iş için gerekince tekrar araştırdığım bir sql komutunu sizlerle paylaşmak istiyorum.
Bir sorguda, elimizdeki sabit ya da değişken bir ifadenin (bundan sonra a diye anılacak), farklı bir veri (bundan sonra b diye anılacak ) ile kıyaslanması gerektiğini düşünelim. Eğer a ile b birbirine eşit ise c yi, değil ise d yi çalıştırmasını isteyelim. Bu tip bir durumda decode komutu oldukça kullanışlı bir hal almaktadır. Gerek değerleri doğru sıra ile parantez içine yazmamız durumda çok basit bir şekilde istediğimiz sonuca ulaşmış olacağız.

Kullanımı :
---------------

decode (a,b,c,d)
a=b ise c yi yap a≠b ise d yi yap

Şimdi ne demek istediğimizi somut bir örnekle ele alalım..

Sql imiz:

---------
SELECT
status, description, information defect_reasoncode,
error_begintime, application_system,

workaround_solut, workaround

FROM
busuness_flow
WHERE
status
LIKE
DECODE ('CLOSED', 'Seçiniz...', '%%', 'CLOSED') -- ilk CLOSED alanı drop down listten seçilen alanı temsil etmektedir...

Şimdi isterseniz yukarıdaki örneğimizi a
çıklayalım. ve sonucunda ne yapmak istediğimiz belirtelim.

Yukarıdaki sql bir tane grid wiew i doldurmak için kullanılıyor. Bu grid içinde bir takım filtreleme işlemleri ise bir tane drop down list tarafından yapılıyor. Drop down listimizin varsayılan değeri Seçiniz... busuness_flow tablomuzdaki status alanı bazı değerleri tutmaktadır. Drop down listimizin içinde yer alan alanlardan bir tanesi de CLOSED. Eğer drop down listten hiç bir seçim yapılmamışsa o zaman hiç bir filtreleme işlemi yapılmadan ('%%') grid i olduğu gibi doldurur. Tabi tabloyu olduğu gibi doldurma işlemi CLOSED dışındaki herhangi bir seçim için de geçerlidir. Yani eşitlik sağlanmadığı sürece gridimizde hiç bir filtreleme olmayacaktır.

Şimdi biraz daha kapsamlı bir örnek verelim. Bu örneğimiz yukarıdakinin biraz gelişmiş hali. Yine giridi
drop down list den gelen değerlere göre dolduruyoruz. Fakat, burada doldurma işlemini tek bir drop down list ile değil, 3 farklı drop down list den gelen değerlere göre dolduracağız. Burada da decode oldukça işimizi görecektir. Çünkü birden fazla drop down list olduğundan dolayı bunlardan bazılarının Seçiniz.. olarak gelme olasılığı var. Bu durumda da sql imiz hata alacak ya da hatalı çalışacaktır.

Şimdi örnek sql i verelim.
-----------

SELECT
status,problem_severity, defect_area,
defect_reasoncode, application_system,
workaround_solut, workaround
FROM
busuness_flow
WHERE
status
like decode('CLOSED','Seçiniz...','%%','CLOSED')
and problem_severity
like decode('HIGH','Seçiniz...','%%','HIGH')
and defect_area
like decode('BC','Seçiniz...','%%','BC')
and defect_reasoncode like decode('Seçiniz...','Seçiniz...','%%','Seçiniz...')
and workaround_solut like decode('No','','%%','No')
and workaround like decode('','','%%','')



Bu sql üzerinde herhangi bir açıklama yapma ihtiyacı dudymadım. Çünkü bir üst örnek ile aralarında sadece drop down list sayısı ve buna bağlı olarak da kullanılan decode kullanım sayısı farklılık göstrermektedir.


Evet arkadaşlar. Örneğimizi tamamladık. Umarım faydalı olmuştur. İlerleyen zamanlarda Bir data grid wiew i drop down list ile nasıl doldurabileceğimizi anlatmaya çalışalım. Bakalım ne zaman.... :)

1 Mart 2009 Pazar

İlk Yazım

Merhaba;

Uzunca bir süre blog oluşturmayı düşünmeme rağmen ilk defa bugün (daha doğrusu bu gece) hayata geçirebildim.

İlk kez bu fikre kapıldığımda acaba ne yazabilirim ki?, ya da yazacak zamanı ayırabilir miyim diye kendi kendime sordum. Aldığım cevaplar ise şöyle: Birinci sorumun cevabını zaman içerisinde aldım. Sürekli birşeyler ögreniyorum. Ve bu ögrendiklerimi öğrenmek bazen zamanımı alabiliyor. Bundan dolayı bunları bir yerde yazmanın insanlara faydalı olabilec
eğini düşündüm. Ve bundan dolayı bir adım daha yaklaştım blog olayına. :)
İkinci soruma gelince... Aslında zaman konusunda hala emin değilim.

Ama hiç başlamamaktansa bir başlangıç yapmanın iyi olağını düşündüm ve bu başlangıcı yaptım.

Umarım hayal ettiğim gibi bilgi anlamında zengin bir içeriğe kavuşturabilirim blogumu. :) Bir sonraki yazıda görüsmek üzere....