<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Yusuf FIRAT - Günlüğüm (Istanbul)</title>
	<atom:link href="http://www.yusuffirat.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.yusuffirat.com</link>
	<description>Bir başka WordPress blogu.</description>
	<lastBuildDate>Thu, 29 Jul 2010 08:00:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Karekod (2d Barkod) 2d Barcode Datamatrix Code</title>
		<link>http://www.yusuffirat.com/?p=40</link>
		<comments>http://www.yusuffirat.com/?p=40#comments</comments>
		<pubDate>Thu, 29 Jul 2010 08:00:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://www.yusuffirat.com/?p=40</guid>
		<description><![CDATA[İlaç Takip Sistemlerinin, doğuşu gelişmesi ve son hali.]]></description>
			<content:encoded><![CDATA[<p><strong>İlaç Takip Sistemleri (2D Barkod) (Karekod)</strong></p>
<p>2008 Yılında ilk Microsoft İstanbul Binasında Microsoft ve AGE firmasının ortak düzenlemiş olduğu seminerde, bu sistemi tanımaya başladım. O zamanlar henüz olması gereken yapı oluşmamış ancak projelendirme aşamasına başlanmıştı.</p>
<p>Sonra ki, süreçte T.C. Sağlık bakanlığı ve İlaç işverenleri sendikası, Türk ilaç sanayicileri derneği gibi ve bu konuda mal ve hizmet vermeye aday olan firmaların toplantılarına seminerlerine katıldım ve tüm sürece dahil olacak herkesin öneri ve eleştirilerini dinleyerek süreci daha iyi anladım.</p>
<p>2009 yılında ise, kendi “İlaç Takip Sistemi” ‘mizi kurmak adına işe başladım.</p>
<p>Süreç şöyle işliyor;</p>
<p>a-)</p>
<ol>
<li>Sağlık bakanlığının bu şarta haiz saydığı firma ilaçlarının bir veritabanına kaydedilmesi,</li>
<li>Sürecin başlaması için proses iş emri hazırlanması,</li>
<li>Bu ürünler için bağımsız özel ve tekrar etmeyecek  (özel belirlenecek şartlarda artışı sağlanan) numaraların bir veritabanında oluşturulması,</li>
<li>Bu numaraları da içeren (GTIN, Seri No, Lot, S.K.T. ve gerekirse fiyat ve ürün ismi gibi) bilgilerin üretilmesi ve bu bilgilerin ilaç kutusu üzerine uygulanması,</li>
<li>Uygulanmış olan bu kutuların tamamının sırasıyla, bir kamera ile okutulması ve okunurluğunun doğrulanması</li>
<li>Eğer bu kameradan kaçıyor, okunmuyor ise reject edilerek işlemden çıkartılması,</li>
<li>Okunabilenlerin, bilgisayardaki veritabanına işlenmesi,</li>
<li>Son olarak ta, bir kamera aracılığı ile, bilgisayara işlenmiş bu bilginin, istediğimiz bilgi olup olmadığının kontrolünün sağlanması(Bu metin Yusuf Fırat tarafından www.yusuffirat.com için oluşturulmuştur. Kopyalanması suçtur.)<br />
.<br />
Normalde iç işlem süreci burada bitmektedir. Ancak, çok hızlı çalışması istenecek sistemlerde 2. Bir kontrole ihtiyaç duyulacaktır.</li>
<li>Bu aşamada son kontrol olması hızlı çalışan konveyörlerde kesinlikle gerekli olup, bu özel kontrolde elle hiçbir müdahale veya kontrole gerek kalmaksızın, tüm okunmuş sisteme alınmış ürünlerin hem, baskı kalitesi hem ürün sayısı, hem de veri doğrulamasının doğru olup olmadığı yeniden kontrol edilecektir.</li>
<li>Tüm işlemlerin yapılması sırasında, belirli rutin aralıklarda ürünlerden numune alınarak baskı’nın ISO standartlarından A,B veya C sınıfına girip girmediği denetlenir. Ve uygun ise bir uygunluk sertifikası üretilir.</li>
</ol>
<p>b-) Okunmuş bu verilerin, bizim sistemimizde ürettiğimiz verilerle karşılaştırılmasının yapılması ve girilen iş emrine uygunluğunun kontrol edilmesi sağlanmaktadır.</p>
<p>c-) Bilgiler sağlık bakanlığının istemiş olduğu servise (üretim bilgisi) olarak XML servisleri ile kayıt edilir. Bu noktadan sonra sağlık bakanlığı bizim ürettiğimiz ürünler hakkında bilgi sahibi olmuşlardır.</p>
<p>d-) Tüm yapılan işlemler firmanın kendi kullandığı sistemle entegre edilir.</p>
<p>e-) Üretilen ürün, üretilen çeşit, üretilen lot, üretim performansı, üretim hızı gibi raporlar da nihai olarak yönetici  için rapor olarak hazırlanır. (Firma bazında, üretim miktarı, ay bazında üretim miktarı, ürün bazında üretim miktarı gibi çeşitli raporlar oluşturulur.)</p>
<p>Bu süreçlerin tamamını yapmayı test ederek ve hatalar yaparak, çözerek öğrendim. Nihayetinde yaptığım işte başarılı oldum. Şu an sistem çok güzel şekilde işliyor ve firmalara karekod hizmeti veriyoruz.</p>
<p>Tüm bu çalışmalar bittiğinde, aslında 2d Barkot (Karekod) çalışmaları hemen en iyi şekilde sonuçlanmadı. Akla gelmeyen onlarca hatta yüzlerce farklı sorunlar meydana gelmeye başladı. Ancak yaşayarak ve tecrübe ederek sorunlar bir bir çözülmeye başlandı. Bu süreçte, Sağlık bakanlığının da, Eczaneler ve Eczacı odalarının da, İlaç firmaları ve derneklerinin de hataları ve eksiklikleri oldu. Dünya’da benzeri uygulanmamış bir projenin ilk kez uygulanmasından doğan hatalar meydana geldi ve hepsi de zamanla ve düşünerek, çeşitli platformlarda tartışarak, hatta bazen, bakanlık ile eczacıları karşı karşıya getirerek çok az zamanlarda da, halkın ilaca ulaşmasının bile zorlaşmasına neden olarak hatalar anlaşıldı ve acil çözümler bulundu. Bazen bu acil çözümler başka hataların oluşmasını sağladı vs. Nihayetinde dönüp baktığımızda Türkiye de bu iş oturmaya başladı ve ilaç üzerinden yapılan sahtecilikler önlenmeye başlandı.</p>
<p>Bu sürece başlamak isteyenlerin bizim yaşadığımız sorunları yaşamasına gerek kalmadan, bu süreçleri geçmesi daha kolay çünkü örnek çalışmalar ve yapılmış işler ortada. Bu konuda bilgi ve destek isteyenler olursa her türlü bilgimi paylaşmaya hazırım.</p>
<p>Yusuf FIRAT.</p>
<p>(Bu makale, www.yusuffirat.com için oluşturulmuştur. İzinsiz kopyalanamaz)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yusuffirat.com/?feed=rss2&amp;p=40</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Taksim</title>
		<link>http://www.yusuffirat.com/?p=35</link>
		<comments>http://www.yusuffirat.com/?p=35#comments</comments>
		<pubDate>Thu, 25 Feb 2010 08:02:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://www.yusuffirat.com/?p=35</guid>
		<description><![CDATA[İstiklal caddesi, Asmalı Mescit, Tepebaşı, Galatasaray, Nevizade, Cihangir, Gümüşsuyu, Kurtuluş, Elmadağ, Cezair sokak, Fransız sokağı, Sıraselviler, Firuzağa, Hayriye cad., İmam Adnan sok., Yeşil çam sok., Büyük Parmak Kapı sok., Tam neresi iyi bi öğrenmeye, onlarca yıldır baktığım Taksim&#8217;e artık sadece bakmaya değil görmeye karar verdim.
Geç mi kaldım?
Daha yeni başlıyorum.  Sırada, Sur içi İstanbulu, Üsküdar, Beşiktaş, [...]]]></description>
			<content:encoded><![CDATA[<p>İstiklal caddesi, Asmalı Mescit, Tepebaşı, Galatasaray, Nevizade, Cihangir, Gümüşsuyu, Kurtuluş, Elmadağ, Cezair sokak, Fransız sokağı, Sıraselviler, Firuzağa, Hayriye cad., İmam Adnan sok., Yeşil çam sok., Büyük Parmak Kapı sok., Tam neresi iyi bi öğrenmeye, onlarca yıldır baktığım Taksim&#8217;e artık sadece bakmaya değil görmeye karar verdim.</p>
<p>Geç mi kaldım?</p>
<p>Daha yeni başlıyorum.  Sırada, Sur içi İstanbulu, Üsküdar, Beşiktaş, Boğaz&#8217;ın iki yanı, Haliçin iki yanı ve adalar var.</p>
<p>Bi yerden başlamak gerek.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yusuffirat.com/?feed=rss2&amp;p=35</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# ile Word dosyası oluşturma ve Word dosyasını açma.</title>
		<link>http://www.yusuffirat.com/?p=34</link>
		<comments>http://www.yusuffirat.com/?p=34#comments</comments>
		<pubDate>Fri, 22 Jan 2010 16:10:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://www.yusuffirat.com/?p=34</guid>
		<description><![CDATA[C# ile Microsoft Word Dokümanı Oluşturma ve Açma


Bu makalemde sizlere c# yardımı ile varolan bir microsoft word dokümanını nasıl açabileceğinizi ve yeni bir Microsoft word dokümanını nasıl oluşturabileceğinizi anlatmaya çalışacağım.
Bu işlem için öncelikle bir Windows Application Project oluşturalım ve ismini de wordapp olarak verelim.Bu işlemden sonra karşımıza gelen Windows Form nesnesi üzerine iki adet button ve [...]]]></description>
			<content:encoded><![CDATA[<h2><a title="Permanent Link to C# ile Microsoft Word Dokümanı Oluşturma ve Açma" rel="bookmark" href="http://www.csharpdersleri.net/?p=35">C# ile Microsoft Word Dokümanı Oluşturma ve Açma</a></h2>
<p><small></small></p>
<div>
<p>Bu makalemde sizlere <a href="http://www.csharpdersleri.net/">c# yardımı</a> ile varolan bir microsoft word dokümanını nasıl açabileceğinizi ve yeni bir Microsoft word dokümanını nasıl oluşturabileceğinizi anlatmaya çalışacağım.</p>
<p>Bu işlem için öncelikle bir <a href="http://www.csharpdersleri.net/?tag=Windows-Application-Project">Windows Application Project</a> oluşturalım ve ismini de <strong><a href="http://www.csharpdersleri.net/?tag=wordapp">wordapp</a></strong> olarak verelim.Bu işlemden sonra karşımıza gelen <a href="http://www.csharpdersleri.net/?s=Windows%20Form">Windows Form</a> nesnesi üzerine iki adet button ve bir adet de openfiledialog nesnesi yerleştirelim. Bütün bu işlemleri yerine getirdikten sonra formumuzun görünümü Şekil 1′deki gibi olacaktır.</p>
<p><img src="http://www.msakademik.net/makaleler/word_kas%C4%B1m21_1.JPG" border="0" alt="" width="315" height="355" /></p>
<p>Şekil 1. Form Görünümü</p>
<p><a href="http://www.csharpdersleri.net/?tag=net">.NET</a> üzerinden Microsoft Word ile ilgili işlemleri yapabilmemiz için .NET Project’imize <strong>Microsoft Word 11.0 Object Library</strong> isimli COM referansı eklememiz gerekmektedir. Bunun için Solution Explorer penceresi üzerinde bulunan References seçeneği üzerinde sağ tuşa tıklayalım ve Add Reference seçeneğini seçelim. Karşımıza gelen pencerede COM sekmesini seçip buradan Microsoft Word 11.0 Object Library referansını bulup OK tuşuna basalım. Böylece projemiz için gerekli olan COM referansı projemize eklemiş olacağız. Bu durum Şekil 2′de gösterilmiştir.</p>
<p><img src="http://www.msakademik.net/makaleler/word_kas%C4%B1m21_2.JPG" border="0" alt="" width="467" height="382" /></p>
<p>Şekil 2. Referans Ekleme</p>
<p>Programımızı yazmaya başlamadan önce formumuzun kod kısmına geçerek aşağıdaki namespace’i kodumuza eklememiz gerekir.</p>
<p>using Microsoft.Office.Interop.Word;</p>
<p>Bu işlemden sonra programımızı yazmaya başlayabiliriz. Öncelikle Form1 classımız içerisinde <strong>Application </strong>class türünde global bir nesne tanımlamalıyız.</p>
<p>ApplicationClass uygulama = new ApplicationClass();</p>
<p>Bundan sonra “Word Dokumanı Aç” etiketli butonun click event’ine aşağıdaki kod parçası yazılmalıdır.</p>
<p>private void button1_Click(object sender, EventArgs e)<br />
{<br />
if (openFileDialog1.ShowDialog() == DialogResult.OK)<br />
{<br />
//Açılacak Olan Dosya Adını gösteren değişken<br />
object dosyaadi = openFileDialog1.FileName;<br />
//Açılan dokumanın salt okunur olup olamayacağını belirleyen değişken<br />
object sadeceokunur = false;<br />
//Açılan dokumanın gösterilip gösterilmeyeceğini belirleyen değişken<br />
object gorunur = true;<br />
object missing = System.Reflection.Missing.Value;<br />
//Word Programını görünür yapan satır<br />
uygulama.Visible = true;<br />
Document dosya = uygulama.Documents.Open(ref dosyaadi, ref missing, ref sadeceokunur, ref missing, ref missing, refmissing, ref missing, ref missing, ref missing, ref missing, ref missing, ref gorunur, ref missing, ref missing, ref missing, refmissing);<br />
dosya.Activate();<br />
//Açılan dokumanın ilk satırına parametre olarak gönderilen texti yazar<br />
uygulama.Selection.TypeText(“Merhaba Dünya”);<br />
//Bir alt satıra geçmenizi sağlar<br />
uygulama.Selection.TypeParagraph();<br />
//Sıradaki Satıra Tarihi ekleyen method<br />
uygulama.Selection.InsertDateTime(ref missing, ref missing, ref missing, ref missing, ref missing);<br />
uygulama.Selection.TypeParagraph();<br />
}<br />
}</p>
<p>Yukarıdaki kod yardımı ile seçtiğimiz bir word dokümanını c# yardımı ile açmış oluyoruz. Yukarıdaki kod da missing isimli parametreler dikkatinizi çekmiş olmalı. .NET’de <a href="http://www.csharpdersleri.net/?s=com%20nesneleri">com nesneleri</a>ne erişmek için opsiyonel olan parametreleri simüle etmede System.Reflection.Missing.Value değeri kullanılabilir. Ben de burada bir önceki cümlede anlattığım nedenle missing isimli değişkeni kullandım.</p>
<p>Şimdi de yeni bir word dokumanı oluşturalım. Bunun için de “Word Dokumanı Oluştur Butonunun” click event’ine aşağıdaki kodlar yazılmalıdır.</p>
<p>private void button2_Click(object sender, EventArgs e)<br />
{<br />
object missing = System.Reflection.Missing.Value;<br />
//Yeni dokuman oluşturuluyor<br />
Document dosya = uygulama.Documents.Add(ref missing, ref missing, ref missing, ref missing);<br />
uygulama.Visible = true;<br />
dosya.Activate();<br />
//Yeni dosyadaki hizalamanın ortada olması sağlanıyor<br />
uygulama.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;<br />
//Yazı Koyu yapılıyor<br />
uygulama.Selection.Font.Bold = (int)WdConstants.wdToggle;<br />
// Yazı dokumana yazdırılıyor<br />
uygulama.Selection.TypeText(“İlk Dokuman”);<br />
}</p>
<p>Bu makalemde sizlere .NET Yardımı ile bir word dokümanının nasıl açılabileceğini ve yeni bir word dokümanının nasıl oluşturulabileceğini anlatmaya çalıştım. Bir sonraki makalede görüşmek üzere.</p>
<p>Kaynaklar:<br />
1. <a onclick="javascript:pageTracker._trackPageview('/outgoing/www.refikicen.com');" href="http://www.refikicen.com/">csharpcorner</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.yusuffirat.com/?feed=rss2&amp;p=34</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XML ile Adres Defteri</title>
		<link>http://www.yusuffirat.com/?p=31</link>
		<comments>http://www.yusuffirat.com/?p=31#comments</comments>
		<pubDate>Fri, 22 Jan 2010 14:37:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://www.yusuffirat.com/?p=31</guid>
		<description><![CDATA[


Xml Ile Adres Defteri





XML(Extensible Markup Language) dilinde veriler bazı işaretlerle (etiket) işaretlenirler. Örneğin bir HTML kodunda bir başlık yazısı &#60;h1&#62; etiketi ile işaretlenir. Sonuç olarak bir belgedeki verileri işaretlemeye yarayan dillere işaretleme dilleri denir.
W3C (World Wide Web Consortium) organizasyonu tarafından tasarlanan  XML , kişilerin kendi sistemlerini oluşturabilecekleri, kendi etiketlerini tanımlayarak çok daha rahat ve etkin [...]]]></description>
			<content:encoded><![CDATA[<table border="0" cellspacing="1" cellpadding="5" width="780" align="center">
<tbody>
<tr>
<td height="28" bgcolor="#efefef"><span>Xml Ile Adres Defteri</span></td>
</tr>
<tr>
<td bgcolor="#ffffff"></td>
</tr>
<tr>
<td><strong>XML(Extensible Markup Language)</strong> dilinde veriler bazı işaretlerle (etiket) işaretlenirler. Örneğin bir HTML kodunda bir başlık yazısı &lt;h1&gt; etiketi ile işaretlenir. Sonuç olarak bir belgedeki verileri işaretlemeye yarayan dillere işaretleme dilleri denir.</p>
<p>W3C (World Wide Web Consortium) organizasyonu tarafından tasarlanan  XML , kişilerin kendi sistemlerini oluşturabilecekleri, kendi etiketlerini tanımlayarak çok daha rahat ve etkin veri haznesi yapabilecekleri ve bu belirlenen etiketleri kendi yapıları içerisinde standardize edebilecekleri esnek, genişleyebilir ve kolay uygulanabilir dildir.</p>
<p>Çok farklı tipteki verileri orjinal formatlarında tek bir havuzda tutabilen XML, bilgiye hızlı, kolay ve ortamdan bağımsız olarak erişebilme imkanı sunar. Günlük yaşantımızda kullanmakta olduğumuz verilerin %80’ini oluşturan ve “unstructured” olma özellikleri nedeniyle kendi bulundukları medya dışında veri özelliklerini koruyamayan (kelimeişlem, elektronik tablo çıktıları, PDF dokümanları, ses,resim vb) farklı tipteki verilerin, oryantasyona gerek duymadan hiyerarşik bir yapıda kullanılabilmelerine olanak vermekte ve bu verilerin hızlı bir şekilde sorgulanabilmelerini sağlamaktadır. Öncelikle veri transferinin kolaylaşmasını ve verinin içerik bilgisiyle saklanabilmesini hedefleyen XML, içerik ve sunum bilgilerini birbirinden ayırır. Bu özelliği ile de HTML&#8221;den farklılaşır</p>
<p>XML in diğer bir özelliği ise farklı platformlar arasında veri taşınabilmesine imkan sunmasıdır.</p>
<p>Örnek olarak bir adres defteri yapıp inceleyecegiz. Uygulamamıza system.xml namespaceini import edeceğiz. Yarattıgımız XML dosyamız</p>
<table>
<tbody>
<tr>
<td bgcolor="#cccccc">&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;myAddresses&gt;<br />
&lt;myAdress&gt;<br />
&lt;name&gt;Adım&lt;/name&gt;<br />
&lt;surname&gt;Soyadım&lt;/surname&gt;<br />
&lt;address&gt;Adresim&lt;/address&gt;<br />
&lt;phone&gt;Telefonum&lt;/phone&gt;<br />
&lt;/myAdress&gt;<br />
&lt;/myAddresses&gt;</td>
</tr>
<tr>
<td>Şeklinde olacaktır.Adres defterimizdeki her kayıt &lt;myAddresses&gt; düğümünün içinde bulunacak ve bu kayıda ait alt bilgiler ise alt düğümlerde yer alacaktır. Bu xml dosyası uygulamamızda aynı klasörde ve adress.xml ismindedir.</td>
</tr>
<tr>
<td bgcolor="#cccccc">Sub GetAddresses()<br />
Dim ds As New DataSet<br />
ds.ReadXml(&#8220;adress.xml&#8221;)<br />
If ds.Tables.Count &gt; 0 Then<br />
dgAdres.DataSource = ds.Tables(0)<br />
Dim doc As New XmlDocument<br />
doc.Load(&#8220;adress.xml&#8221;)<br />
Dim currentNode As XmlNode<br />
currentNode = doc.DocumentElement<br />
Label1.Text = &#8220;Toplam &#8221; &amp; currentNode.ChildNodes.Count.ToString &amp; &#8221; adet kayıt bulundu.&#8221;<br />
Else<br />
Label1.Text = &#8220;Kayıt Bulunamadı<br />
End If<br />
End Sub</td>
</tr>
<tr>
<td><img src="http://www.yazgelistir.com/makaleler/resimler/1000000919_1.jpg" alt="" /><br />
Uygulamamızda bu XML dosyasının verilerini datasete aktarmak için datasetin <strong>ReadXml()</strong> metodunu kullanabiliriz.ReadXml metodu ile xml dosyanın yapısını tamamen içeren bir dataset oluşacaktır. Ve biz bu dataseti i datagrid in source u olarak gösterirsek verileri datagridimize doldurabiliriz. Yukarıda bulunan sub bu işlemi yapmaktadır, ancak xml dosyada veri bulunmuyorsa dataset in içindeki tablo dolmayacağından tablo oluşmayacaktır. Bundan dolayı tablo oluşmuyorsa belirlediğimiz bir label da kayıt yok yazısını yazdırmamız uygun olacaktır.Kaç kayıt döndüğünü saymak için ise root elementimizin altındaki child node ların sayısını alabiliriz.</td>
</tr>
<tr>
<td bgcolor="#cccccc">Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click<br />
Dim doc As New XmlDocument<br />
doc.Load(&#8220;adress.xml&#8221;)<br />
Dim node As XmlNode<br />
Dim currentNode As XmlNode<br />
currentNode = doc.DocumentElement<br />
node = currentNode.SelectSingleNode(&#8220;//myAdress[name="" &amp; dgAdres.Item(dgAdres.CurrentRowIndex, 0).ToString &amp; ""][surname="" &amp; dgAdres.Item(dgAdres.CurrentRowIndex, 1).ToString &amp; ""][address="" &amp; dgAdres.Item(dgAdres.CurrentRowIndex, 2).ToString &amp; ""][phone="" &amp; dgAdres.Item(dgAdres.CurrentRowIndex, 3).ToString &amp; ""]&#8220;)<br />
currentNode.RemoveChild(node)<br />
doc.Save(&#8220;adress.xml&#8221;)<br />
End Sub</td>
</tr>
<tr>
<td>Seçili bir kayıdı silmek için yazdığımız bu sub da ise ilk önce bir tane xmlDocument tanımlayarak ve load metodunu kullanarak xml dosyamızı programımızda açıyoruz.Current node değişkenine root elementimizi atıyoruz. Ve root elementimizin altından selectsinglenode kullanarak tek bir düğümü geri döndürecek şekilde bir sorgulama yaptırıyoruz.Bu sorgulamada datagridde bulunan her bir hücredeki veriyi barındıran benzersiz olması gereken düğümü geriye döndürüyoruz ve bulundugumuz düğümün removechild metodunu kullanarak sorgulama sonucu elde ettiğimiz düğümü kaldırıyoruz. Burada unutulmaması gereken xml dosyayı programımızda açıp değişiklik yaptıktan sonra mutlaka save metodunu kullanarak kaydetmemizdir.</td>
</tr>
<tr>
<td bgcolor="#cccccc">Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click<br />
Dim xmlnodename As String<br />
Select Case cbCriteria.SelectedItem.ToString<br />
Case &#8220;Ad&#8221;<br />
xmlnodename = &#8220;name&#8221;<br />
Case &#8220;Soyad&#8221;<br />
xmlnodename = &#8220;surname&#8221;<br />
Case &#8220;Adres&#8221;<br />
xmlnodename = &#8220;address&#8221;<br />
Case &#8220;Telefon&#8221;<br />
xmlnodename = &#8220;phone&#8221;<br />
End Select<br />
Dim doc As New XmlDocument<br />
doc.Load(&#8220;adress.xml&#8221;)<br />
Dim currentNode As XmlNode<br />
currentNode = doc.DocumentElement<br />
Dim results As XmlNodeList<br />
If CheckBox1.Checked Then<br />
results = currentNode.SelectNodes(&#8220;//myAdress[contains(" &amp; xmlnodename &amp; ","" &amp; txtSearch.Text &amp; "")]&#8220;)<br />
Else<br />
results = currentNode.SelectNodes(&#8220;//myAdress[" &amp; xmlnodename &amp; "="" &amp; txtSearch.Text &amp; ""]&#8220;)<br />
End If<br />
Dim x As Integer<br />
Dim ds As DataSet = New DataSet<br />
Dim xReader As XmlTextReader<br />
For x = 0 To results.Count &#8211; 1<br />
xReader = New XmlTextReader(results.Item(x).OuterXml, XmlNodeType.Element, New XmlParserContext(Nothing, Nothing, Nothing, XmlSpace.None))<br />
ds.ReadXml(xReader, XmlReadMode.InferSchema)<br />
Next x<br />
If ds.Tables.Count &gt; 0 Then<br />
dgAdres.DataSource = ds.Tables(0)<br />
Label1.Text = &#8220;Toplam &#8221; &amp; ds.Tables(0).Rows.Count &amp; &#8221; adet kay? bulundu.&#8221;<br />
Else<br />
dgAdres.DataSource = Nothing<br />
Label1.Text = &#8220;Kay? Bulunamad?<br />
End If<br />
End Sub</td>
</tr>
<tr>
<td>Xml dosya içinde arama yapmak için ise silmede yaptığımız gibi xml document i açarak içinden uygun kriterlere göre düğümlerden oluşan bir nodelist döndürmek. Ancak burada sorgulama bire bir eşleşen kayıtları bulmak için = kullanarak içinde geçen kelimeye göre kayıt bulmak için xpath komutlarından contains i kullanarak olmaktadır. Fakat şimdi oluşturduğumuz bu xml dosyadaki düğüm listesini dataset e aktarmak için xmltextreader kullanarak geçici bir xml dosya yapısı elde ediyoruz. ve bunu dataset e aktarıyoruz.</td>
</tr>
<tr>
<td bgcolor="#cccccc">Sub AddAddress()<br />
Dim doc As New XmlDocument<br />
doc.Load(&#8220;adress.xml&#8221;)<br />
Dim NewMyAdress As XmlNode = doc.CreateElement(&#8220;myAdress&#8221;)<br />
Dim newName As XmlNode = doc.CreateElement(&#8220;name&#8221;)<br />
Dim newSurname As XmlNode = doc.CreateElement(&#8220;surname&#8221;)<br />
Dim newAddress As XmlNode = doc.CreateElement(&#8220;address&#8221;)<br />
Dim newPhone As XmlNode = doc.CreateElement(&#8220;phone&#8221;)<br />
Dim NewnameText As XmlNode = doc.CreateTextNode(txtName.Text)<br />
Dim NewsurnameText As XmlNode = doc.CreateTextNode(txtSurname.Text)<br />
Dim NewaddressText As XmlNode = doc.CreateTextNode(txtAddress.Text)<br />
Dim NewphoneText As XmlNode = doc.CreateTextNode(txtPhone.Text)<br />
NewMyAdress.AppendChild(newName)<br />
newName.AppendChild(NewnameText)<br />
NewMyAdress.AppendChild(newSurname)<br />
newSurname.AppendChild(NewsurnameText)<br />
NewMyAdress.AppendChild(newAddress)<br />
newAddress.AppendChild(NewaddressText)<br />
NewMyAdress.AppendChild(newPhone)<br />
newPhone.AppendChild(NewphoneText)<br />
Dim targetnode As XmlNode<br />
targetnode = doc.SelectSingleNode(&#8220;//myAddresses&#8221;)<br />
targetnode.AppendChild(NewMyAdress)<br />
doc.Save(&#8220;adress.xml&#8221;)<br />
End Sub</td>
</tr>
<tr>
<td><img src="http://www.yazgelistir.com/makaleler/resimler/1000000919_2.jpg" alt="" /><br />
XML dosyada kayıt eklemeler root element içine yapılacağından her node tek tek yaratılır. ve en alttaki node içine yazılması gereken değerler de yaratıldıktan sonra nodelar hiyerarşik yapılarına göre birbirlerine appendChild metodu kullanılarak bağlanır. ve birbirlerinin altında yer almaları sağlanarak bir tek node altında kayıtlar oluşturulur. Bu kayıdı taşıyan node ise root elemente append child ile eklenerek döküman kaydedilir ve xml dosyaya veri ekleme işi bitirilir.</td>
</tr>
<tr>
<td bgcolor="#cccccc">Sub getUpdateInformation()<br />
For Each xe As XmlElement In Guncellemi<br />
If xe.Name = &#8220;name&#8221; Then<br />
txtName.Text = xe.InnerText<br />
ElseIf xe.Name = &#8220;surname&#8221; Then<br />
txtSurname.Text = xe.InnerText<br />
ElseIf xe.Name = &#8220;address&#8221; Then<br />
txtAddress.Text = xe.InnerText<br />
ElseIf xe.Name = &#8220;phone&#8221; Then<br />
txtPhone.Text = xe.InnerText<br />
End If<br />
Next<br />
End Sub</td>
</tr>
<tr>
<td>Güncelleme yapmak için ilk önce seçili kayıdın bilgilerine ulaşmak gerekir buda yukarıda incelendiği gibi basit bir sorgu sonucu oluşan node ın içindeki değerlerin okunması ile elde edilir.</td>
</tr>
<tr>
<td bgcolor="#cccccc">Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click<br />
Dim doc As New XmlDocument<br />
doc.Load(&#8220;adress.xml&#8221;)<br />
Dim currentNode As XmlNode<br />
currentNode = doc.DocumentElement<br />
Guncellemi = currentNode.SelectSingleNode(&#8220;//myAdress[name="" &amp; dgAdres.Item(dgAdres.CurrentRowIndex, 0).ToString &amp; ""][surname="" &amp; dgAdres.Item(dgAdres.CurrentRowIndex, 1).ToString &amp; ""][address="" &amp; dgAdres.Item(dgAdres.CurrentRowIndex, 2).ToString &amp; ""][phone="" &amp; dgAdres.Item(dgAdres.CurrentRowIndex, 3).ToString &amp; ""]&#8220;)<br />
Dim cust As XmlNode<br />
Dim newNode As XmlNode<br />
Dim NewMyAdress As XmlNode = doc.CreateElement(&#8220;myAdress&#8221;)<br />
Dim newName As XmlNode = doc.CreateElement(&#8220;name&#8221;)<br />
Dim newSurname As XmlNode = doc.CreateElement(&#8220;surname&#8221;)<br />
Dim newAddress As XmlNode = doc.CreateElement(&#8220;address&#8221;)<br />
Dim newPhone As XmlNode = doc.CreateElement(&#8220;phone&#8221;)<br />
Dim NewnameText As XmlNode = doc.CreateTextNode(txtName.Text)<br />
Dim NewsurnameText As XmlNode = doc.CreateTextNode(txtSurname.Text)<br />
Dim NewaddressText As XmlNode = doc.CreateTextNode(txtAddress.Text)<br />
Dim NewphoneText As XmlNode = doc.CreateTextNode(txtPhone.Text)<br />
NewMyAdress.AppendChild(newName)<br />
newName.AppendChild(NewnameText)<br />
NewMyAdress.AppendChild(newSurname)<br />
newSurname.AppendChild(NewsurnameText)<br />
NewMyAdress.AppendChild(newAddress)<br />
newAddress.AppendChild(NewaddressText)<br />
NewMyAdress.AppendChild(newPhone)<br />
newPhone.AppendChild(NewphoneText)<br />
Dim oldNode As XmlNode<br />
Dim targetnode As XmlNode<br />
targetnode = doc.SelectSingleNode(&#8220;//myAddresses&#8221;)<br />
For Each nd As XmlNode In targetnode.ChildNodes<br />
If nd.InnerText = Guncellemi.InnerText Then<br />
oldNode = nd<br />
End If<br />
Next<br />
cust = currentNode.ReplaceChild(NewMyAdress, oldNode)<br />
doc.Save(&#8220;adress.xml&#8221;)<br />
Me.Close()<br />
End Sub</td>
</tr>
<tr>
<td><img src="http://www.yazgelistir.com/makaleler/resimler/1000000919_3.jpg" alt="" /><br />
Update işlemi için ilk önce seçtiğimiz kayıda ait verileri bulunduran düğümü seçiyoruz. Daha sonra ise verilerin yeni hallerini barındıran düğümü aynı yeni kayıt ekleme işleminde olduğu gibi oluşturuyoruz ve replaceChild metodunu kullanarak eski düğümü yeni düğümle değiştirip dosyamızı kaydediyoruz.</td>
</tr>
<tr>
<td bgcolor="#cccccc">Private Sub btnExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExport.Click<br />
Dim doc As New XmlDocument<br />
doc.Load(&#8220;adress.xml&#8221;)<br />
Dim currentNode As XmlNode<br />
Dim str As String<br />
currentNode = doc.DocumentElement<br />
For Each x1 As XmlNode In currentNode<br />
For Each x2 As XmlNode In x1<br />
str &amp;= x2.InnerText &amp; &#8220;,&#8221;<br />
Next<br />
str = str.Substring(0, str.Length &#8211; 1)<br />
str &amp;= vbNewLine<br />
Next<br />
SaveFileDialog1.ShowDialog()<br />
Dim strwriter As New StreamWriter(SaveFileDialog1.FileName)<br />
strwriter.Write(str)<br />
strwriter.Close()<br />
End Sub</td>
</tr>
<tr>
<td>Verileri dışarıyla ortak bir dosya olan csv yani Comma Separated Value (Virgülle ayrılmış değerler) olarak kaydediyoruz. Bunun için root element içindeki düğümlerde tek tek dolaşıp değerlerini alarak &#8220;,&#8221; lerle ayırarak yeni bir text dosyası oluşturuyoruz.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.yusuffirat.com/?feed=rss2&amp;p=31</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>String veri türlerini inceleyelim.</title>
		<link>http://www.yusuffirat.com/?p=28</link>
		<comments>http://www.yusuffirat.com/?p=28#comments</comments>
		<pubDate>Mon, 18 Jan 2010 21:07:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://www.yusuffirat.com/?p=28</guid>
		<description><![CDATA[String veri türleri hakkında yazmayı düşündüm. Hangi konulardan bahsediyim diye bakarken, şöyle bir yazı buldum.
Yıllardır bilgisayarlar kullanıcılarla iletişim kurmak için yazıyı kullanırlar. Programlama dillerinde karakter kelimesi, bir harf, sayı, noktalama işareti ya da bir sembol anlamına gelir. String kelimesi ise karakterlerin yan yana gelerek oluşturdukları dizi anlamına gelir. C# Dilinde string bir anahtar kelimedir. String [...]]]></description>
			<content:encoded><![CDATA[<p>String veri türleri hakkında yazmayı düşündüm. Hangi konulardan bahsediyim diye bakarken, şöyle bir yazı buldum.</p>
<p>Yıllardır bilgisayarlar kullanıcılarla iletişim kurmak için yazıyı kullanırlar. Programlama dillerinde karakter kelimesi, bir harf, sayı, noktalama işareti ya da bir sembol anlamına gelir. String kelimesi ise karakterlerin yan yana gelerek oluşturdukları dizi anlamına gelir. C# Dilinde string bir anahtar kelimedir. String türünde bir değişken tanımlarken aşağıdaki gibi yazarız.</p>
<p>string Yazi;</p>
<p>Burada Yazi adında, string türünde bir değişken tanımlaması yapılmıştır ya da başka bir deyişle, Yazi string bir değişkendir.</p>
<p>C#taki string veri türü .net Framework içerisindeki System.String sınıfının bir aliasıdır yani string yazmakla System.String yazmak aynı şeydir.</p>
<p>Yani aşağıdaki gibi de string değişken tanımlaması yapılabilir.</p>
<p>System.String Yazi;</p>
<p>Eğer programımızın üst kısmında using direktifi ile</p>
<p>using System;</p>
<p>yazmışsak, başındaki System. ifadesini yazmayabiliriz. Bunu zaten daha önceki yazılardan biliyorsunuz.</p>
<p>String Yazi;</p>
<p>Şimdi burada bir karışıklık oldu. Eğer usnig direktifi ile System isim uzayı direktifi yazılmışsa büyük harfle yazılan String yeterlidir ama C#ta bir veri türü olan ve küçük harfle yazılan string kelimesi de kendi başına System.String anlamına gelen bir alias olduğundan aşağıdaki gibi bir ifadeyi yazmak yanlış olur.</p>
<p>System.string Yazi; //Yanlış oldu.</p>
<p>Çünkü string kelimesinin karşılığı olan System.String ifadesini yukarıdaki ifadede yerine yazarsak</p>
<p>System.System.String Yazi; //Yanlış oldu.</p>
<p>yazmış oluruz. Tabi ki böyle bir ifade yoktur, çalışmaz.</p>
<p>Şimdi string türünde bir değişken nasıl tanımlanır öğrendiğimize göre değer ataması yapalım.</p>
<pre>Yazi = "C#Türkü çok seviyorum.";</pre>
<p>Yukarıdaki ifadenin sağındaki değere string literal denir. Bir string literal sıfır ya da daha fazla karakterden oluşur. Karakterin tanımını yukarıda yaptığımıza göre içinde neler bulunabileceği de açıktır: Harf, rakam, noktalama işareti ayda sembol. Dikkat ederseniz bir string literal çift tırnak arasına yazılır. Bu durumda string literali başlatan ve bitiren çift tırnak işaretleri string ifadenin kendisine dâhil değildir.</p>
<p>Yazı dilinde noktalı virgül, soru işareti gibi işaretler çift tırnakların içine yazılır. Ama C#ta noktalı virgül atama işlemini bitiren işarettir ve en sona yazılır. Karıştırmamak gerekir.</p>
<p>Bir string literal tek satır olmak zorundadır. Aşağıdaki atama işlemi çalışmayacaktır.</p>
<p>Yazi = &#8220;C#Türkü çok<br />
seviyorum.&#8221;; // Yanlış oldu.</p>
<p>Tamsayılar yazısında da anlattığımız gibi, string türü değişkenlere de tanımlama esnasında ilk değer ataması yapabiliriz.</p>
<p>string Yazi = &#8220;C#Türkü çok seviyorum.&#8221;;</p>
<p>Bir stringi ekranda göstermek için daha önceden de bildiğimiz Console.Write ya da Console.WriteLine yöntemlerini kullanabiliriz.</p>
<p>Console.WriteLine(Yazi);</p>
<p>Bu ifade konsolda aşağıdaki gibi bir çıktı verecektir.</p>
<p>Çift tırnak işaretleri, ekranda görünmedi. Çünkü onlar string ifademizin bir parçası değildir. Bir değişken tanımlaması yapmadan da bir string ifadeyi direkt Console.Write ya da Console.WriteLine yöntemlerine geçebilirsiniz.</p>
<p>Console.WriteLine(&#8220;C#Türkü çok çok seviyorum&#8221;);</p>
<p>Console.WriteLine ile tamsayıları gösterebildiğimiz öğrenmiştik. Şimdi de string ifadeleri gösterebildiğini öğrendik. Bunu yapması mümkündür, çünkü Console.WriteLine yönteminin aynı isimde birden çok sürümü vardır. Aynı yöntemin birden çok sürümleri olmasına yöntemlerin aşırı yüklenmesi denir. Başka bir yazıda bu meseleyi anlatacağız.</p>
<p>Aşağıdaki ilginç örneği dikkatle inceleyelim.</p>
<p>using System;</p>
<p>class stringler</p>
<p>{</p>
<p>static void Main()</p>
<p>{</p>
<p>string A, B, C;</p>
<p>A = &#8220;Merhaba, &#8220;;</p>
<p>B = &#8220;Dünya&#8221;;</p>
<p>C = A + B;</p>
<p>Console.WriteLine(C);</p>
<p>Console.ReadLine();</p>
<p>}</p>
<p>}</p>
<p>Ekran çıktısını incelersek çok temel bir örnek, ama programda ilginç bir yer var. 3 tane değişken tanımladık. İlk 2 tanesine değer ataması yapma işlemi daha öncekilerle aynı, sadece sayı değil de yazı kullandık. 3. değişkene değer ataması yapma işlemi biraz ilginç görünüyor. Çünkü iki tane yazı arasında toplama işlemi yapmaya çalışyıoruz.</p>
<p>Bu ne anlama geliyor? Artı işareti iki tane string ifadeyi birleştirir. Programı çalıştırdığımızda aşağıdaki çıktıyı görürüz.</p>
<p>Merhaba dünya cümlesi çok meşhur bir programcı selamıdır. 1978 yılında C Programlama Dili kitabının yazarları Brian W. Kernighan ve Dennis M. Ritchie tarafından ilk defa kullanılan bu ilk yazılan programın dünyaya merhaba demesi olayı gelenek haline geldi.</p>
<p>Ama Kernighan ve Ritchie string birleştirme örneğini yapamadılar, çünkü standart C dilinde string birleştirme yoktur, hatta string yoktur.</p>
<p>Değişik işlemler için aynı operatörün kullanılması, mesela toplama operatörü, operatörlerin aşırı yüklenmesi olarak bilinir. Bu meseyi de yine başka bir yazıda anlatacağız.</p>
<p>Dikkat ederseniz A değişkenine bir string literal ataması yaptık ama virgülden sonra bir boşluk bıraktık. Çünkü 2 tane stringi birleştirdiğimizde arasına kendisi boşluk koymaz bunu bizim belirtmemiz lazım.</p>
<p>Stringlerle de yine artı eşittir operatörünü kullanabilirsiniz.</p>
<p>string Yazi = &#8220;Bu bir yazıdır.&#8221;;</p>
<p>Yazi += &#8220;Bu da bir yazıdır.&#8221;;</p>
<p>Artı eşit operatörü, ilk string ifadenin sonuna ikinci string ifadeyi ekler. Bunlardan başka diğer operatörler stringlerle kullanılmaz.</p>
<p>String birleştirme işlemi, eğer çok uzun bir string ifadeyi bir değişkene atayacaksak çok işlevseldir.</p>
<p>string Kavgam =</p>
<p>&#8220;Kader beni, iki Alman devletinin tam sınırları üzerinde bir kasabada,&#8221; +</p>
<p>&#8220;Braunau am Inn&#8217;de dünyaya getirdi. Alman olan Avusturya, büyük Alman vatanına&#8221; +</p>
<p>&#8220;tekrar dönmelidir. Hem bu birleşme, iktisadi sebeplerin sonucu olmamalıdır. &#8221; +</p>
<p>&#8220;Bu birleşme, iktisadi bakımdan zararlı olsa bile, mutlaka olmalıdır.&#8221; +</p>
<p>&#8220;Aynı kan, aynı imparatorluğa aittir. &#8220;;</p>
<p>Aynı zamanda string literaller ile string değişkenlerin bir kombinasyonu olarak string birleştirmeyi kullanabilirsiniz.</p>
<p>string programlama_dili = &#8220;C# &#8220;;</p>
<p>Console.WriteLine(&#8220;Ben &#8221; + programlama_dili + &#8221; programlamayı çok seviyorum.&#8221; + &#8221; Ya sen?&#8221;);</p>
<p>Yukarıdaki birleştirilmiş ifade aslında aşağıdaki şekilde ayrı ayrı da yazılabilir.</p>
<p>string programlama_dili = &#8220;C# &#8220;;</p>
<p>Console.Write(&#8220;Ben&#8221;);</p>
<p>Console.Write(programlama_dili);</p>
<p>Console.Write(&#8221; programlamayı çok seviyorum.&#8221;);</p>
<p>Console.WriteLine(&#8221; Ya sen?&#8221;);</p>
<p>Dikkat ederseniz ilk dört ifadede Console.Write kullanırken sonuncusunda Console.WriteLine kullandık. Çünkü Console.Write yöntemi imleci alt satıra geçirmez.</p>
<p>Yukarıda yazdığımız her iki örneğin de ekran çıktısı aşağıdaki şekildedir.</p>
<p>System.String sınıfının Length diye bir özelliği vardır. Yöntem ve alan gibi özellik de bu cümlede teknik terim olarak kullanıldı. Özellikler de alanlar gibidir. Başka bir yazıda alanlar ve özelliklerden bahsedeceğiz. Şimdilik sadece Length özelliğinin ne işe yaradığını bilelim. Bir string ifadenin karakter sayısını bize verir.</p>
<p>Kavgam.Length</p>
<p>ifadesi bize 327 sayısını verir.</p>
<p>C#ta stringleri çift tırnak arasına yazarız. Eğer string literalin kendi içinde çift tırnak varsa onu nası yazabiliriz? Mesela aşağıdaki gibi bir string literali ekranda göstermek istiyoruz.</p>
<p>Atalarımız boşuna söylememiş “sakla samanı, gelir zamanı” diye.</p>
<p>Bu tür özel karakterlerin kullanılması programlama dillerinde her zaman problem olur. C# çözümü C ve C++ dillerinden almıştır. Bir string literal çift tırnak içeriyorsa, çift tırnakların soluna bir ters bölü işareti koymalıyız.</p>
<pre>string Yazi = "Atalarımız boşuna söylelemiş \"sakla samanı, gelir zamanı\" diye";</pre>
<p>Bu ters bölü işareti burada kaçış karakteri olarak görev yaptı. Kaçış karakteri sağındaki özel işaretin gerçek anlamında kullanılmasını engeller.</p>
<p>Peki, ters bölü işaretinin kendisini yazı içerisinde nasıl kullanırız? Yazı dilinde belki çok fazla kullanılmayan bir işaret ama MS-DOS ya da Windows programlarında dizin isimlerini ayırmada ters bölü işareti kullanılır. Bu ters bölü işaretinin çok acıklı bir hikâyesi var. UNIX işletim sisteminde dizin isimleri normal bölü işareti ile ayrılır, ters bölü işaretiyle değil. C dilinde de kaçış karakteri olarak kullanılma sebebi hiçbir özel anlamı olmamasıdır. MS-DOS 1.0 işletim sisteminde ise UNIX benzeri hiyerarşik bir dizin yapısı olmadığından normal bölü işareti komut satırı argümanı olarak kullanıldı.UNIX işetim sisteminde komut satırı argümanlarının solunda çizgi vardır. MS-DOS 2.0 işletim sisteminde hiyerarşik dosya yapısı gelince, C dilinde problem olacağı hiç akıllarına gelmedi ve dizin isimlerini ayırmakta normal bölü işareti yerine ters bölü işareti kullanıldı.</p>
<p>Bir string literal içerisinde eğer ters bölü işareti varsa yan yana iki tane kullanırız.</p>
<p>string Dizin = &#8220;C:\\Makaleler\\String Makalesi\\Metin.doc&#8221;;</p>
<p>Şimdi bunu ekrana yazdırıp çıktısına bakalım.</p>
<p>Artık MS-DOS ya da Windows programlarında ters bölü işareti kullanma zorunluluğumuz yok, onun yerine normal bölü işareti de kullanabilirsiniz.</p>
<p>string Dizin = &#8220;C:/Makaleler/String Makalesi/Metin.doc&#8221;;</p>
<p>Bilgisayarın içerisinde bir string literalin karakterleri sayılarla ve nihayetinde bitlerle saklanır. Uzun yıllar, bir çok bilgisayar ASCII (American Standard Code for Information Interchange – Bilgi Değişimi İçin Amerikan Kod Standardı) dediğimiz bir karakter kodlaması kullandı. ASCII 7-bit kodlardan oluştuğu için toplam 128 (27) çeşit karakteri gösterebilir.</p>
<p>Eğer standart Amerikan İngilizcesi klavyesi kullanıyorsanız, Üst Karakter Tuşuna (Shift Tuşu) bağlı olarak (harf, sayı ya da sembollerden) 47 tane tuştan 94 tane karakter oluşturabilirsiniz. Boşluk tuşu ayrı bir ASCII karakteri ile temsil edilir. ASCII ayrıca, yazıda gösterilmeyen, yazının nasıl gösterileceğini kontrol eden 33 tane kontrol karakteri sağlar. Bunlardan sadece bazıları günümüzde kullanılıyor. Satır başı tuşu, Sonraki satıra geçme tuşu (Bu ikisi imlecin bir sonraki satırın başına gitmesini sağlar), Geri Al Tuşu, Tab Tuşu, ESC tuşu. Bütün ASCII karakterleri klavyeden Ctrl tuşunu harf ve sembol kombinasyonları ile kullanarak oluşturulabilir. Yani 128 tane ASCII kodunu klavyeden yazabiliriz.</p>
<p>Fonksiyon tuşları (F1,…, F12), yön tuşları ve imleç hareket tuşları biraz farklıdır. Bunlar ASCII kodu üretmezler.</p>
<p>Pratikte kişisel bilgisayarlar ASCII tarafından sağlanan 128 karakteri de içeren yazı karakterlerini göstermek için 8-bit kullanırlar. Bu 8-bit kodlamaya ise genişletilmiş ASCII karakter kodlama seti denir.</p>
<p>Maalesef, genişletilmiş ASCII, tek standart değildir. Orijinal IBM Bilgisayar çizgi çizmek ve basit matematik semboller için ek rarakterler de kullandı. Windows ise Batı Avrupa dillerinde kullanılan sembolleri göstermek için Latin 1 adlı bir kodlamayı da destekler. Bir çok ülkede standart komiteleri kendi karakter kodlamalarını oluşturdular. Tabi ki bunların içinde Latin olmayan Arapça, İbranice, Yunanca, Kiril (Rusça) da var.</p>
<p>Sonuç karışıklık ve belirsizlik oldu. Eğer başka bir ülkeden ya da Apple Machintosh gibi başka platformlardan gelen e-posta mesajları almışsanız ve bunlarda anlamsız karakterler görmüşseniz bunların sebebi iki değişik 8-bit karakter kodlamasıdır.</p>
<p>1980lerin başında bu problemlere bir çözüm bulmak için çalışmalar yapıldı. Sonuç Unicode oldu. Unicode; Çince, Japonca ve Korece gibi şekilsel alfabeler de dâhil, bilgisayar iletişiminde kullanılan bütün dillerin karakterlerini gösterebilecek şekilde 65,536 (216) tane karakter içeriyor, 16-bit kodlama kullanıyor. Unicode karakterlerinin ilk 128 karakteri yine ASCII’nin aynısıdır. İkinci 128 tanesi ise Latin 1 karakterlerinin aynısıdır. Unicode hakkında daha fazla bilgi http://www.unicode.org adresinde mevcuttur. Unicode Standart Verison 3.0 adlı kitabın online sürümüne de yine bu siteden ulaşabilirsiniz.</p>
<p>8-bit karakter kodlamalarının yerini 16-bit Unicode karakterlere bırakması için uzun bir yol var. Ama bazı programlama dilleri, mesela C#, stringleri 16-bit Unicode olarak tutuyor. Unicode ile aşağıdaki gibi bir string ifadeyi rahatlıkla yazabilirsiniz.</p>
<p>Hem Yunan alfabesi hem de derece işareti ASCII karakter tablosunda yoktur.</p>
<p>Yunan harflerini Yunanca klavye ile rahatlıkla yazarsınız, ama derece işareti Yunan klavyeside yoktur. Genellikle, bir Unicode karakteri string içerisinde kullanabilmek için karakteri Unicode standardı sürüm 3.0 şekilde yazmak lazım ya da http://www.unicode.org/charts adresindeki şekilde ve bir ters bölü şareti daha sonra küçük ya da büyük harflerle U ya da X koyduktan sonra 4-basamak hex karakter kodu yazarak gösterilir.</p>
<p>string Angle = &#8220;The angle \u03B1 equals 60\u00B0&#8243;;</p>
<p>İlginçtir ama \u ve 4-basamak hex karakter kodlarını değişken isimleri diğer belirteçlerde kullanabilirsiniz. bu konuda daha fazla bilgi için C# Language Specification, 2.4.2 özellik dokümanına bakabilirsiniz.</p>
<p>C# ayrıca C dilinden aşağıdaki kaçış durumlarını da miras almıştır.</p>
<table border="1">
<tbody>
<tr>
<td>Kaçış Karakterleri</td>
<td>Unicode Kodlaması</td>
<td>Karakter İsmi</td>
</tr>
<tr>
<td>\0</td>
<td>\u0000</td>
<td>Null</td>
</tr>
<tr>
<td>\a</td>
<td>\u0007</td>
<td>Uyarı (beep)</td>
</tr>
<tr>
<td>\b</td>
<td>\u0008</td>
<td>Geri al Tuşu</td>
</tr>
<tr>
<td>\t</td>
<td>\u0009</td>
<td>Tab</td>
</tr>
<tr>
<td>\n</td>
<td>\u000A</td>
<td>Yeni Satır</td>
</tr>
<tr>
<td>\v</td>
<td>\u000B</td>
<td>Dikey Tab</td>
</tr>
<tr>
<td>\f</td>
<td>\u000C</td>
<td>Form besleme</td>
</tr>
<tr>
<td>\r</td>
<td>\u000D</td>
<td>Satır başı</td>
</tr>
<tr>
<td>\&#8221;</td>
<td>\u0022</td>
<td>Çift Tırnak</td>
</tr>
<tr>
<td>\’</td>
<td>\u0027</td>
<td>Tek Tırnak</td>
</tr>
<tr>
<td>\\</td>
<td>\u005C</td>
<td>Ters Bölü İşareti</td>
</tr>
</tbody>
</table>
<p>Örneğin aşağıdaki ifadede ekrana yazı gösterirken \a karakterine gelince hoparlörden beep sesi çıkar ve devam eder. \a sadece konsolda geçerlidir. \v ve \f ise sadece yazıcıda geçerlidir.</p>
<p>Console.WriteLine(&#8220;Uyarı sinyali ver \a ve devam et.&#8221;);</p>
<p>ASCII kodlamasının çıkış kaynağı daktiloda kullnılan karakterlerdir. Mesela \r ve \n işlemini ancak daktilo ile anlayabiliriz. \r Satır başı kodu, yazma kafasını satırın başına getirir. \n ise yazma kafasını bir sonraki satıra geçirir. \n ve \r birlikte kullanıldığında bir sonraki satırın başına gitmiş oluruz. Text dosyalarda bu işlemler olmaz, platform uyumsuzluğu vardır. MS-DOS ve Windows platformlarında text dosyalarda bütün satırlar satır başı ve yeni satır kodlarıyla sonlanır. UNIX platformunda ise sadece yeni satır koduyla sonlanır. Macintosh ortamında ise sadece satır başı kodu satırı sonlandırır.</p>
<p>C# konsol programlamada, sadece yeni satır kodu bir sonraki satırın başına geçmek için yeterlidir.</p>
<p>Aşağıdaki ifadelerden her ikisi de aynı işi yapar.</p>
<p>Console.Write(&#8220;\n&#8221;);</p>
<p>Console.WriteLine();</p>
<p>C# kaçış karakteri olarak ters bölü kullnmaya bir alternatif sunar. Eğer bir string literalin önüne @ işareti koyarsak kaçış karakteri kullanmaya gerek kalmaz.</p>
<p>string Dizin = @&#8221;C:\Makaleler\\String Makalesi\Metin.doc&#8221;;</p>
<p>Buna verbatim string (harfi harfine – aynısı) de denir. Ters bölü işareti de normal diğer karakterlerden biri olarak algılanır.</p>
<p>Tabi bu durumda çift tırnak için iki tane çift tırnak kullanmak gerekiyor.</p>
<p>string Yazi = @&#8221;Atalarımız boşuna söylelemiş &#8220;&#8221;sakla samanı, gelir zamanı&#8221;" diye&#8221;;</p>
<p>Daha önce artı işaretinin string ifadeleri birleştirmek için kullanıldığını göstermiştik. Artı işaretini string ifadeleri sayılarla birlikte yazmak için de kullanabiliriz.</p>
<p>int toplamTutar = 100;<br />
Console.WriteLine(&#8220;Toplam tutar :&#8221; + toplamTutar + &#8221; YTL dir.&#8221;);</p>
<p>Burada kural oldukça basittir. Eğer artı operandının bir tarafındaki ifade string ise diğer tarafındaki ifade de string ifadeye dönüştürülür ve daha sonra da string birleştirme işlemi gerçekleşir.</p>
<p>Aşağıdaki ilginç durumu inceleyelim.</p>
<p>int A = 12;</p>
<p>int B = 20;</p>
<p>Console.WriteLine(A + B + &#8221; toplamlarıdır.&#8221;);</p>
<p>Console.WriteLine(&#8220;Toplamları &#8221; + A + B);</p>
<p>Yukarıdaki program kodunun çıktısı aşağıdaki gibi olacaktır.</p>
<p>Peki neden ikisi farklı çıktı. Operatör önceliği kavramından tamsayılar yazısında bahsetmiştik. Operatör önceliği kurallarına göre toplama işlemlerinde öncelik soldan sağa doğrudur. İlk ifadede soldan itibaren başlandığından önce A + B işlemi yapıldı daha sonra da string ifadeye dönüştürülerek sonraki string ifade ile birleştirildi. İkinci WriteLine çağrısında ise “Toplamları” string ifadesi 12 ile birleştirildi. Daha sonra “Toplamları 12” string literali 20 ile birleştirildi. “Toplamları 1220” ifadesi oluştu.</p>
<p>Bu problemi çözmek için aşağıdaki gibi bir çözüm bulabiliriz.</p>
<p>int A = 12;</p>
<p>int B = 20;</p>
<p>Console.WriteLine(A + B + &#8221; toplamlarıdır.&#8221;);</p>
<p>Console.WriteLine(&#8220;Toplamları &#8221; + (A + B));</p>
<p>Parantezlerin toplama işlemine göre önceliği olduğundan ilk önce parantez içindeki işlem gerçekleşir ve sonuç aşağıdaki gibi olur.</p>
<p>Tamsayılar yazısında da ifade edildiği gibi bütün tamsayı türler .net Framework içerisindeki yapılardan türetilir. string veri tipi ise System.String sınıfından türetilir.</p>
<p>Sınıflar ve yapılar birbirlerine benzerler. Ama çok temel bir farklılıkları var, yapılar değer tiptirler, sınıflar referans tip. Daha fazla bilgiyi Değer Tip &amp; Referans Tip adlı yazımızdan öğrenebilirsiniz.</p>
<p>Alıntı: http://www.csharpturk.net/Rehber.aspx?Makale=11</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yusuffirat.com/?feed=rss2&amp;p=28</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# &#8216;ta Switch Case yapısı (Eski Select Case)</title>
		<link>http://www.yusuffirat.com/?p=26</link>
		<comments>http://www.yusuffirat.com/?p=26#comments</comments>
		<pubDate>Thu, 14 Jan 2010 15:55:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://www.yusuffirat.com/?p=26</guid>
		<description><![CDATA[Her dilde olduğu gibi C# dilinde de kontrol yapıları vardır. Bunlardan biri de switch case döngüsüdür&#8230; Peki nedir switch case, ne yapar?
Mantık olarak &#8220;if else&#8221; koşul yapısına benzer. Kendisine gönderilen parametreyi değerlendirir ve ona göre ayrılan kod bloğunu çalıştırır.
Şimdi bütün bunları kod bloğumuzda görelim&#8230;

switch(değişken)
{
       case kosul1:
    [...]]]></description>
			<content:encoded><![CDATA[<p>Her dilde olduğu gibi C# dilinde de kontrol yapıları vardır. Bunlardan biri de switch case döngüsüdür&#8230; Peki nedir switch case, ne yapar?</p>
<p>Mantık olarak &#8220;if else&#8221; koşul yapısına benzer. Kendisine gönderilen parametreyi değerlendirir ve ona göre ayrılan kod bloğunu çalıştırır.</p>
<p>Şimdi bütün bunları kod bloğumuzda görelim&#8230;</p>
<pre>
switch(değişken)
{
       case kosul1:
              //kodlar bu panele gelecek
       break;

      case kosul2:
              //kodlar bu panele gelecek
      break;

       .
       .
       .

      case kosuln:
              //kodlar bu panele gelecek
      break;

      default:
            //eğer hiç bir koşul desteklenmiyorsa bu koşul gerçekleşecek
            break;
}
</pre>
<p>Evet arkadaşlar, yapıyı gördük; şimdi bunu daha iyi anlamak için bir örnekle açalım:</p>
<p>Bir button ve bir textbox koyalım formumuzun üzerine ve textbox&#8217;a girdiğimiz rakamı switch case kontrol yapısı ile kontrol edelim&#8230;</p>
<pre>
int sayi = int.parse(textbox1.text);
/* burda int tipi sayi değişkenine int.parse() fonksiyonu ile textbox1'în textini sayıya çevirerek aldık...  */

switch (sayi)
            {
                case 0:
                    MessageBox.Show("Girdiğiniz Sayı Sıfır'dır...","Uyarı");
                    break;
                case 1:
                    MessageBox.Show("Girdiğiniz Sayı Bir'dir...","Uyarı");
                    break;
                case 2:
                    MessageBox.Show("Girdiğiniz Sayı İki'dir...", "Uyarı");
                    break;
                case 3:
                    MessageBox.Show("Girdiğiniz Sayı Üç'tür...", "Uyarı");
                    break;
                case 4:
                    MessageBox.Show("Girdiğiniz Sayı Dört'tür...", "Uyarı");
                    break;
                case 5:
                    MessageBox.Show("Girdiğiniz Sayı Beş'dir...", "Uyarı");
                    break;
                case 6:
                    MessageBox.Show("Girdiğiniz Sayı Altı'dır...", "Uyarı");
                    break;
                case 7:
                    MessageBox.Show("Girdiğiniz Sayı Yedi'dir...", "Uyarı");
                    break;
                case 8:
                    MessageBox.Show("Girdiğiniz Sayı Sekiz'dir...", "Uyarı");
                    break;
                case 9:
                    MessageBox.Show("Girdiğiniz Sayı Dokuz'dir...", "Uyarı");
                    break;
                default:
                    MessageBox.Show("Girilen Değer Bir Rakam Değildir!","Uyarı");
                    break;
            }
</pre>
<p>Örneğimizi bitirdik bu basit bir örnek</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yusuffirat.com/?feed=rss2&amp;p=26</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>active directory</title>
		<link>http://www.yusuffirat.com/?p=23</link>
		<comments>http://www.yusuffirat.com/?p=23#comments</comments>
		<pubDate>Wed, 13 Jan 2010 07:53:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://www.yusuffirat.com/?p=23</guid>
		<description><![CDATA[ACTIVE DIRECTORY




Active Directory Windows Server 2003 ağlarındaki bir dizin hizmetidir. Dizin  hizmeti, ağdaki kaynakların bilgisini tutan ve bu bilgiyi kullanıcılara ve  uygulamalara sunan ağ hizmetidir. Dizin hizmeti ağ kaynaklarına ulaşmak, bu  kaynakları isimlendirmek ve güvenli bir şekilde yönetmek için gereken ortamı  sağlamak amacıyla oluşturulur.






Active Directory ortamdaki ağ altyapısına büyük ölçüde işlevsellik [...]]]></description>
			<content:encoded><![CDATA[<h1>ACTIVE DIRECTORY</h1>
<div id="node_191">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>Active Directory Windows Server 2003 ağlarındaki bir dizin hizmetidir. Dizin  hizmeti, ağdaki kaynakların bilgisini tutan ve bu bilgiyi kullanıcılara ve  uygulamalara sunan ağ hizmetidir. Dizin hizmeti ağ kaynaklarına ulaşmak, bu  kaynakları isimlendirmek ve güvenli bir şekilde yönetmek için gereken ortamı  sağlamak amacıyla oluşturulur.</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td><strong>Active Directory</strong> ortamdaki ağ altyapısına büyük ölçüde işlevsellik  kazandırmaktadır. Özellikle kaynakların kontrolünün ve yönetiminin  merkezileştirilmesi <strong>Active Directory</strong> organizasyonunun en önemli  özelliğidir. Active Directory, fiziksel topoloji üzerine dayalı bir sistemin  kullanıcıya daha baside indirgenmiş şekilde görünmesini ve kaynaklara erişim  esnasında kullanıcının eriştiği kaynağın (örneğin printer) ağın neresinde  olduğunu veya kaynağın ağa ne şekilde bağlanmış olduğunu bilmeksizin  bağlanmasını sağlar.<strong>Active Directory</strong> çok büyük işletmelerdeki yoğun bilgileri alt kümelere  bölerek saklayabilir ve böylece verilerin büyümesi veya küçülmesi durumunda,  yani şirketin büyümesi veya küçülmesi durumunda sistemöe esneklik kazandırır.</p>
<p><strong>Active Directory </strong>kurulu bir <strong>Windows Server 2003</strong> ağ çapında  sistem konfigürasyonlarını, kullanıcı profillerini ve uygulama bilgilerini  Active Directory veritabanında saklar. Active Directory sistem yöneticilerinin,  <strong>domain</strong> kapsamındaki tüm bilgisayarlarda desktop özelliklerini, <strong>ağ  servislerini </strong>ve uygulamaları <strong>merkezi</strong> bir noktadan yönetebilmelerini  sağlar.<br />
<strong>Active Directory</strong> ayrıca, kullanıcıların sisteme bir kez dahil  olmasını, yani <strong>logon</strong> olmasını ve ardından ağdaki birçok kaynağa tek bir  logonla güvenli bir şekilde erişebilmesi konusunda da sistem yöneticilerine  merkezi erişim kontrolü sağlar.</p>
<p><strong><span style="text-decoration: underline;">1. Active Directory Objeleri</span></strong><br />
Active Directory,  veritabanında <strong>ağ objeleri </strong>hakkındaki bilgileri saklar. Bu Active  Directory objeleri başta kullanıcılar, gruplar, bilgisayarlar ve yazıcılar olmak  üzere ağ kaynaklarını temsil etmektedir. Dahası, Active Directory çapındaki tüm  sunucular, <strong>Domain</strong>’ler ve <strong>Site</strong>’lar da Active Directory objeleri  arasında yer almaktadır. Active Directory tüm objeleri dağıtılmış bir veritabanı  üzerinde sakladığı için sistem yönticisi bu objelerin yönetimi kolaylıkla tek  bir noktadan yürütebilir.<br />
Yeni bir obje oluşturulduğu zaman bu objenin  özellikleri (attribute) obje hakkında onu tanımlayan bilgiler içerir.  Kullanıcılar bu objeye erişmek istediği zaman objeye atanan bu özelliklerden  faydalanabilirler. Örneğin, bir kullanıcı domain içerisinde bir yazıcıya  ulaşıyorken yazıcının bulunduğu yere (kat, bina, departman) göre arama  yapabilir.</p>
<p><strong><span style="text-decoration: underline;">2. Active Directory: Mantıksal Yapı</span></strong><br />
Active Directory,  organizasyon içerisinde hiyerarşik bir sistem oluşturmak için esnek bir yapıya  sahiptir ve bu yapı hem yöneticiler için hem de kullanıcılar için kolayca  anlaşılabilir özelliklere sahiptir. (Şekil 1) Active Directory’nin mantıksal  bileşenleri şunlardır:<br />
• Domains<br />
• Organizational Units (OUs)<br />
•  Trees and Forests<br />
• Global Catalog</p>
<table border="0" cellspacing="0" cellpadding="4" width="400" align="center">
<tbody>
<tr>
<td><a rel="nofollow" href="/imagecatalogue/imageview/798/?RefererURL=/article/articleview/2032/1/2/active_directory"><img src="http://www.olympos.org:81/ezimagecatalogue/catalogue/variations/798-400x400.jpg" border="0" alt="ACTIVE DIRECTORY" width="400" height="258" /><span style="text-decoration: underline;"> </span></a></td>
</tr>
<tr>
<td>Şekil 1</td>
</tr>
</tbody>
</table>
<p><strong><span style="text-decoration: underline;">Domain</span></strong><br />
Active Directory en temel mantıksal bileşeni  Domain’dir. Domain, aynı dizin veritabanını paylaşan bilgisayarlar bütünüdür ve  sistem yöneticisi tarafından oluşturulur. Her bir Domain benzersiz bir isme  sahiptir ve sistem yöneticisi tarafından belirlenmiş olan kullanıcı ve grup  hesaplarına erişim sağlar.</p>
<p>Ayrıca Domain’ler <strong>güvenlik sınırı (Security Boundary)</strong> olarak da  bilinir. Güvenlik sınırı sayesinde, eğer sistem yöneticisi ayrıca bir izin  belirlememişse, bir kullanıcının hakları sadece o Domain içerisinde geçerli  olacaktır. Her bir Domain kendi güvenlik yapısına sahiptir.<br />
Domain’ler  ayrıca replikasyon birimi olarak adlandırılır. Bir Domain içerisinde, Active  Directory veritabanı kopyalarını bulunduran Domain Controller’lar bu koyaları  Domain içerisinde yapılan değişiklikleri birbirlerine kopyalarak replikasyon  yaparlar.</p>
<p><strong><span style="text-decoration: underline;">Organizational Units</span></strong><br />
Organizational Unit bir Domain  içerisindeki objeleri organize etmek amacıyla oluşturulmuş objelerdir. Bir  Organizational Unit kendi içerisinde kullanıcılar, gruplar, bilgisayarlar veya  başka <strong>OU</strong>’lar olmak üzere başka objeler barındırabilirler.<br />
OU’ları,  organizasyonun ihtiyacını en iyi şekilde karşılayacak mantıksal bir hiyerarşi  oluşturuyorken objeleri gruplamak amacıyla kullanabilirsiniz.<br />
Örneğin,  objeleri grupluyorken yönetimsel gereksinimleri ön planda tutabilirsiniz.  Mesela, organizasyonda bir yönetici kullanıcılarda bir diğer kullanıcı da  bilgisayarlardan sorumlu olacaksa, biri kullanıcılar için biri de bilgisayarlar  için iki adet OU oluşturulur ve kullanıcılar birinde bilgisayarlar da diğerin  toplanır. Son olarak da ikisini de ilgili kullanıcı yönetici olarak atanabilir.<br />
OU birimlerinin kullanılabileceği bir başka örnek ise organizasyonun  departmansal birimlere ayrılmasında geçerli olabilir. Örneğin bir “Muhasebe” bir  de “Pazarlama” departmanları için OU oluşturulur ve bu departmanlarda çalışan  kullanıcılar ilgili Oulara yerleştirildikten sonra departman şefleri bu  birimlere yönetici olarak atanabilir.</p>
<p><strong><span style="text-decoration: underline;">Trees ve Forests</span></strong><br />
Oluşturulan ilk Windows Server 2003  Domain’i, Active Directory yapısındaki Kök Domain’i (Root Domain) ifade eder.  Bundan sonra oluşturulacak olan yeni ek Domain’ler dizinin mantıksal Tree veya  Forest yapısını oluşturacaktır.</p>
<p><strong>Tree</strong><br />
Birbirine ardışık bir isim aralığını paylaşan <strong>Windows  Server 2003 Domain</strong>’lerinin hiyerarşik olarak düzenlenmiş şeklidir.<br />
Önceden oluşturulmuş bir Tree yapısında yeni bir Domain eklediğiniz zaman,  yeni eklenen Domain sondan eklendiği Domain’inin Child Domain’i durumunda olur  ve eklendiği Domain de eklenen Domain için Parent Domain olur. Yeni oluşturulan  Child Domain’in ismi Parent Domain’den gelen isimle birleştirilir ve yeni oluşan  Domain’in DNS ismi ortaya çıkar.</p>
<p>Örneğin ozgur.com bir <strong>Root Domain</strong>’dir. Bu Domain’e eklenecek yeni bir  Domain ozgur.com Domain’inin Child Domain’i olacaktır, buna örnek olarak  satis.ozgur.com Domain’ini gösterebiliriz. Bu örnekte satis.ozgur.com, ozgur.com  Domain&#8217;inin Child Domain’i olacaktır. ozgur.com Domain’i ise Parent Domain  konumundadır.</p>
<p><strong>Forests</strong><br />
Forest, birden fazla Tree’nin birleşmiş halidir. Forest  içerisindeki Tree’ler ardışık isim aralığına sahip değildirler. Oluşturulan ilk  Domain bir Tree’yi ifade edecektir ve ilk Tree’nin oluşturulmasıyla Forest’da  oluşmuş olacaktır. Sonradan bu Forest’a eklenecek olan Tree’ler, diğer  Tree’lerle aynı isim aralığını paylaşmayacak olasalar da aynı Schema ve Global  Catalog’a sahip olacaktır. Forest oluşturulurken kurulmuş olan ilk Tree  Forest-Root olarak bilinir ve diğer Tree’ler bu Forest Root altında toplanırlar.</p>
<p><strong>Global Catalog</strong><br />
Global Catalog, Active Directory’deki tüm objelerin  özelliklerinin bir alt kümesini taşıyan bilgi deposudur. Bu barındırılan  özellikler, varsayılan olarak, sorgulamalar esnasında en sık kullanılan  özelliklerdir (örneğin kullanıcı ön ismi, son ismi ve logon ismi). Global  Catalog kullanıcılara şu hizmetleri sunar:<br />
• Gereken verinin nerede  olduğundan bağımsız olarak Active Directory objeleri hakkında bilgiler sunar.<br />
• Bir ağa logon oluyorken Universal Group Membership bilgisini kullanır.<br />
Global Catalog Sunucusu Domain’deki bir Domain Controller’dır ve Domain’de  oluşturulan ilk Domain Controller otomatik olarak Global Catalog seviyesine  yükseltilir. Sonradan ek Global Catalog Sunucular eklenebilir.</p>
<p><strong><span style="text-decoration: underline;">3. Active Directory: Fiziksel Yapı</span></strong><br />
Active Directory’de  mantıksal yapı ve fiziksel yapı birbirlerinden bütünüyle ayrık ve farklıdır.  Mantıksal yapı ağ kaynaklarını organize etmek için kullanılıyorken fiziksel yapı  ise ağ trafiğini yapılandırmak ve yönetmek için kullanılır. Domain  Controller’lar ve Site’lar Active Directory’nin fiziksel yapısını oluşturan  bileşenlerdir. (Şekil 2)</p>
<table border="0" cellspacing="0" cellpadding="4" width="400" align="center">
<tbody>
<tr>
<td><a rel="nofollow" href="/imagecatalogue/imageview/801/?RefererURL=/article/articleview/2032/1/2/active_directory"><img src="http://www.olympos.org:81/ezimagecatalogue/catalogue/variations/801-400x400.jpg" border="0" alt="ACTIVE DIRECTORY" width="400" height="280" /><span style="text-decoration: underline;"> </span></a></td>
</tr>
<tr>
<td>Şekil 2</td>
</tr>
</tbody>
</table>
<p><strong>Domain Controllers</strong><br />
Domain Controller, üzerinde Active Directory  veritabanının bir kopyasını (replica) bulunduran bilgisayardır.Domain’de  gerşekleştirilen herhangi bir değişiklik bir Domain Controller üzerinde  gerçekleştirilir ve daha sonra domain’deki tüm Domain Controller’lar bu  değişiklikleri replikasyon yoluyla birbirlerine kopyalarlar. Domain  Controller’lar dizin bilgisini bulundururlar ve kullanıcıların logon  işlemlerini, kimlik doğrulama işlemlerini ve dizin arama işlemlerini yürütürler.<br />
Bir Domain’de bir veya daha çok Domain Controller olabilir. Ufak çapta bir  organizasyona (LAN) bir Domain ve iki Domain Controller yetecekken farklı  fiziksel lokasyonlara yayılmış büyük bir işletme için (WAN), her bir bölge  başına bir veya iki Domain Controller daha uygun olacaktır. Bir Domain’e birden  fazla Domain Controller yerleştirmenin amacı hem hata toleransı sağlamak hem de  Domain Controller’lar arasında yük dağılımı yapmaktır.</p>
<p><strong>Sites</strong><br />
Bir Site, birbirlerine yüksek bant genişliğine sahip dış  hatlarlar bağlanmış bir veya birden fazla IP (Internet Protocol) alt ağlarını  ifade etmektedir. Site’ları doğru bir şekilde yapılandırarak kullanıcıların  logon işlemlerinde oluşan ağ trafiğini ve replikasyon işlemleri sırasında oluşan  yoğunluğu en aza indirgemek için Active Directory’nin alt ağlar arasındaki  fiziksel bağlantıları en efektif şekilde kullanmasını sağlayabiliriz.<br />
Site  oluşturmaktaki başlıca sebepler şunlardır:<br />
• Replikasyon trafiğinin optimize  edilmesi<br />
• Kullanıcıların logon olması esnasında en hızlı ve en güvenilir  bağlantıyı kullanarak doğru Domain Controller’ı bulabilmeleri</p>
<p><strong><span style="text-decoration: underline;">4. Active Directory ve DNS</span></strong><br />
Active Directory ve DNS  entegrasyonu Windows Server 2003 Sisteminin en önemli özelliklerinden biridir.  Active Directory ve DNS, objelerin hem Active Directory objeleri hem de DNS  domainleri ve kaynak kayıtları (Resource Records) olarak sunulabilecek şekilde  benzer bir hiyerarşik isimlendirme yapısına sahiptirler. Bu entegrasyonun sonucu  olarak Windows Server 2003 Ağındaki bilgisayarlar, Active Directory’ye özgü  birtakım servisleri çalıştıran bilgisayarların yerini öğrenmek için DNS  Sunucuları kullanmaktadırlar. Örneğin, bir client Active Directory’ye logon  olmak veya herhangi bir kaynağı (yazıcı veya paylaşılmış bir klasör) dizin  içerisinde aratmak için bilmesi gereken Domain Controller’ IP adresini DNS  Sunucu üzerinde SRV kayıtlarından öğrenmektedir. Active Directory’nin sorunsuz  bir şekilde çalışması için DNS sunucuların SRV kayıtlarını eksiksiz bir şekilde  barındırması gerekmektedir. SRV kayıtlarının amacı, client’lara logon esnasında  veya herhangi bir kaynağa ulaşıyorken Domain Controller’ların yerlerini  belirtmektir ve bu kayıtlar DNS sunucularda tutulur. SRV kayıtlarının olmadığı  bir ortamda, client’lar Domain’e logon olamayacaklardır.<br />
Ayrıca Windows  Server 2003, DNS bilgilerinin Active Directory veritabanı ile tümleşik olarak  saklanmasına olanak vermektedir. Bu sayede DNS bilgilerinin replikasyonu daha  efektif ve güvenli bir hale gelmektedir.</p>
<p>Windows Server 2003, Active Directory organizasyonunu kurmadan, önce  oluşturulacak olan Domain’in DNS altyapısını önceden oluşturmayı  gerektirmektedir. Eğer oluşturulacak olan Domain’in DNS altyapısı kurulum  öncesinden hazırlanmamışsa, kurulum esnasında da DNS altyapısı kurulabilir.</p>
<p><strong><span style="text-decoration: underline;">Active Directory Kurulum</span></strong><br />
Active Directory kurulumunu şu  aşamalarda inceleyebiliriz:<br />
<strong><span style="text-decoration: underline;">5. Domain Controller for a new  Domain:</span></strong><br />
1. Start menüsündeki Run kutusuna dcpromo yazın ve Enter’a  basın. Karşınıza Active Directory Kurulum Sihirbazı gelecektir. (Şekil 1)</p>
<table border="0" cellspacing="0" cellpadding="4" width="504" align="center">
<tbody>
<tr>
<td><a rel="nofollow" href="/imagecatalogue/imageview/803/?RefererURL=/article/articleview/2032/1/2/active_directory"><img src="http://www.olympos.org:81/ezimagecatalogue/catalogue/att67B.tmp.jpg" border="0" alt="ACTIVE DIRECTORY" width="504" height="385" /><span style="text-decoration: underline;"> </span></a></td>
</tr>
<tr>
<td>Şekil 1</td>
</tr>
</tbody>
</table>
<p><strong>2. Operating System Compatibility:</strong> İlk ekranda Next butonuna tıklatıp  bir sonraki ekrana geçiniz. Karşınıza sistem uyumluluklarını açıklayan Operating  System Compatibility ekranı gelecektir. Burda yazılanları okuduktan sonra  sıradaki ekrana geçmek için Next butonuna tıklatınız. (Şekil 2)</p>
<table border="0" cellspacing="0" cellpadding="4" width="505" align="center">
<tbody>
<tr>
<td><a rel="nofollow" href="/imagecatalogue/imageview/800/?RefererURL=/article/articleview/2032/1/2/active_directory"><img src="http://www.olympos.org:81/ezimagecatalogue/catalogue/att678.tmp.jpg" border="0" alt="ACTIVE DIRECTORY" width="505" height="386" /><span style="text-decoration: underline;"> </span></a></td>
</tr>
<tr>
<td>Şekil 2</td>
</tr>
</tbody>
</table>
<p><strong>3. Domain Controller Type:</strong> Bu ekranda Domain Controller tipi  belirlenmelidir. Üstteki seçenek “<strong>Domain controller for a new domain</strong>”  yeni bir Domain oluştururken seçilmelidir. Eğer varolan bir Domain’e ek bir  Domain Controller eklenecekse “<strong>Additional domain controller for an existing  domain</strong>” seçeneği işaretlenmelidir. Gerekli seçeneği işaretleyip Next  butonuna tıklatınız. (Şekil 3)</p>
<table border="0" cellspacing="0" cellpadding="4" width="505" align="center">
<tbody>
<tr>
<td><a rel="nofollow" href="/imagecatalogue/imageview/796/?RefererURL=/article/articleview/2032/1/2/active_directory"><img src="http://www.olympos.org:81/ezimagecatalogue/catalogue/att674.tmp.jpg" border="0" alt="ACTIVE DIRECTORY" width="505" height="386" /><span style="text-decoration: underline;"> </span></a></td>
</tr>
<tr>
<td>Şekil 3</td>
</tr>
</tbody>
</table>
<p><strong>4. Create New Domain:</strong> Bu ekranda Domain’in tipi belirlenmelidir. Üç  adet seçenek bulunmaktadır (Şekil 4):<br />
• Domain in a new forest: Yeni bir  Forest için yeni bir Domain Controller oluşturmak için işaretlenir.<br />
• Child  domain in an existing domain tree: Önceden oluşturulmuş bir Domain Tree yapısına  bağımlı yeni bir Child Domain oluşturmak için işaretlenir.<br />
• Domain tree in  an existing forest: Önceden oluşturulmuş bir Forest yapısına yeni bir Domain  Tree eklemek için işaretlenir.<br />
Gerekli seçeneği işaretledikten sonra Next  butonuna tıklatınız.</p>
<table border="0" cellspacing="0" cellpadding="4" width="505" align="center">
<tbody>
<tr>
<td><a rel="nofollow" href="/imagecatalogue/imageview/794/?RefererURL=/article/articleview/2032/1/2/active_directory"><img src="http://www.olympos.org:81/ezimagecatalogue/catalogue/att672.tmp.jpg" border="0" alt="ACTIVE DIRECTORY" width="505" height="386" /><span style="text-decoration: underline;"> </span></a></td>
</tr>
<tr>
<td>Şekil 4</td>
</tr>
</tbody>
</table>
<p><strong>5. New Domain Name:</strong> Bu ekranda yeni oluşturulacak olan Domain’in tam  DNS ismi girilmelidir. Örneğin, ozgur.com. Domain’in tam DNS ismini yazdıktan  sonra Next butonuna tıklatınız. (Şekil 5)</p>
<table border="0" cellspacing="0" cellpadding="4" width="505" align="center">
<tbody>
<tr>
<td><a rel="nofollow" href="/imagecatalogue/imageview/795/?RefererURL=/article/articleview/2032/1/2/active_directory"><img src="http://www.olympos.org:81/ezimagecatalogue/catalogue/att673.tmp.jpg" border="0" alt="ACTIVE DIRECTORY" width="505" height="386" /><span style="text-decoration: underline;"> </span></a></td>
</tr>
<tr>
<td>Şekil 5</td>
</tr>
</tbody>
</table>
<p><strong>6. NetBIOS Domain Name:</strong> Bu ekranda Domain’in NetBIOS ismi  belirlenmelidir. Varsayılan olarak gelen NetBIOS isminin kullanılması tavsiye  edilir. Domain’in NetBIOS ismini belirledikten son Next butonuna tıklatınız  (Şekil 6).</p>
<table border="0" cellspacing="0" cellpadding="4" width="505" align="center">
<tbody>
<tr>
<td><a rel="nofollow" href="/imagecatalogue/imageview/790/?RefererURL=/article/articleview/2032/1/2/active_directory"><img src="http://www.olympos.org:81/ezimagecatalogue/catalogue/att66E.tmp.jpg" border="0" alt="ACTIVE DIRECTORY" width="505" height="386" /><span style="text-decoration: underline;"> </span></a></td>
</tr>
<tr>
<td>Şekil 6</td>
</tr>
</tbody>
</table>
<p><strong>7. Database and Log Folders:</strong> Bu ekranda Active Directory veritabanı  dosyası olan NTDS.DIT dosyasının ve Logların nerede tutulacağını giriniz. Yoğun  işlemlerde en iyi performansı elde etmek için Active Directory veritabanını ve  Loglarını ayrı fiziksel harddiskler üzerine yerleştirmek tavsiye edilir.  Varsayılan olarak veritabanı da loglar da “%SystemRoot%\NTDS” klasörüne  yerleştirilir. Gerekli girdileri yazıp Next butonuna tıklatınız. (Şekil 7)</p>
<table border="0" cellspacing="0" cellpadding="4" width="505" align="center">
<tbody>
<tr>
<td><a rel="nofollow" href="/imagecatalogue/imageview/791/?RefererURL=/article/articleview/2032/1/2/active_directory"><img src="http://www.olympos.org:81/ezimagecatalogue/catalogue/att66F.tmp.jpg" border="0" alt="ACTIVE DIRECTORY" width="505" height="386" /><span style="text-decoration: underline;"> </span></a></td>
</tr>
<tr>
<td>Şekil 7</td>
</tr>
</tbody>
</table>
<p><strong>8. Shared System Volume:</strong> Bu ekranda SYSVOL olarak bilinen Active  Directory paylaşım klasörünün yeri belirlenmelidir. Bu klasör NTFS ile  biçimlendirilmiş bir bölüm üzerine yerleştirilmelidir. Varsayılan olarak bu  klasör “%SystemRoot\SYSVOL” şeklinde oluşturulur. Gerekli yolu girip Next  butonuna tıklatınız (Şekil <img src='http://www.yusuffirat.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> </p>
<table border="0" cellspacing="0" cellpadding="4" width="505" align="center">
<tbody>
<tr>
<td><a rel="nofollow" href="/imagecatalogue/imageview/802/?RefererURL=/article/articleview/2032/1/2/active_directory"><img src="http://www.olympos.org:81/ezimagecatalogue/catalogue/att67A.tmp.jpg" border="0" alt="ACTIVE DIRECTORY" width="505" height="386" /><span style="text-decoration: underline;"> </span></a></td>
</tr>
<tr>
<td>Şekil 8</td>
</tr>
</tbody>
</table>
<p><strong>9. DNS Registration Diagnostics:</strong> Bu ekranda DNS Server testi sonuçları  gösterilmektedir.Eğer DNS altyapısı Active Directory kurulumu öncesinde  hazırlanmamış ise Active Directory Kurulum Sihirbazı bize bu konuda üç seçenek  sunmaktadır:<br />
• “<strong>I have corrected the problem. Perform the DNS diagnostic  test again</strong>.” : DNS altyapısının hazır olduğunu, ve testin tekrarlanmasını  belirtir.<br />
• “<strong>Install and configure the DNS server on this computer, and  set this computer to use this DNS server as its preferred DNS server</strong>.” : DNS  altyapısının oluşturulması Active Directory kurulumuna bırakır.<br />
• “<strong>I will  correct the problem later by configuring DNS manually</strong>.” : DNS altyapısının  kurulumdan sonra yönetici tarafından manüel olarak gerçekleştirileceğini  belirtir.<br />
Gerekli seçeneği işaretleyip Next botununa tıklatınız (Şekil 9).</p>
<table border="0" cellspacing="0" cellpadding="4" width="505" align="center">
<tbody>
<tr>
<td><a rel="nofollow" href="/imagecatalogue/imageview/799/?RefererURL=/article/articleview/2032/1/2/active_directory"><img src="http://www.olympos.org:81/ezimagecatalogue/catalogue/att677.tmp.jpg" border="0" alt="ACTIVE DIRECTORY" width="505" height="386" /><span style="text-decoration: underline;"> </span></a></td>
</tr>
<tr>
<td>Şekil 9</td>
</tr>
</tbody>
</table>
<p><strong>10. Permissions:</strong> bu ekranda Domain’deki minimum işletim seyivesi  belirlenmelidir ve Domain izinleri bu velirlenen seviyeye göre oluşturulacaktır.  İki adet seçenek bulunmaktadır:<br />
• “<strong>Permissions compatible with  pre-Windows 2000 server operating systems</strong>” : Eğer Domain’de Windows 2000  öncesi sunucu tipi işletim sistemi olacaksa bu seçenek seçilmelidir.<br />
•  “<strong>Permissions compatible only with Windows 2000 or Windows Server 2003  operating systems</strong>” : Eğer Domain’deki tüm sunucu tipi işletim sistemleri  Windows 2000 sonrası ise bu seçeneğin seçilmesi güvenlik açısından tavsiye  edilir.<br />
Gerekli seçeneği işaretleyip Next butonuna tıklatınız (Şekil 10).</p>
<table border="0" cellspacing="0" cellpadding="4" width="505" align="center">
<tbody>
<tr>
<td><a rel="nofollow" href="/imagecatalogue/imageview/793/?RefererURL=/article/articleview/2032/1/2/active_directory"><img src="http://www.olympos.org:81/ezimagecatalogue/catalogue/att671.tmp.jpg" border="0" alt="ACTIVE DIRECTORY" width="505" height="386" /><span style="text-decoration: underline;"> </span></a></td>
</tr>
<tr>
<td>Şekil 10</td>
</tr>
</tbody>
</table>
<p><strong>11. Directory Services Restore Mode Administrator Password:</strong> bu ekranda  Directory Services Restore Mode için girilecek olan şifrenin belirlenmesi  gerekmektedir (Şekil 11)</p>
<table border="0" cellspacing="0" cellpadding="4" width="505" align="center">
<tbody>
<tr>
<td><a rel="nofollow" href="/imagecatalogue/imageview/792/?RefererURL=/article/articleview/2032/1/2/active_directory"><img src="http://www.olympos.org:81/ezimagecatalogue/catalogue/att670.tmp.jpg" border="0" alt="ACTIVE DIRECTORY" width="505" height="386" /><span style="text-decoration: underline;"> </span></a></td>
</tr>
<tr>
<td>Şekil 11</td>
</tr>
</tbody>
</table>
<p><strong>12. Summary:</strong> Bu son ekranda yapılan ayarlamaların bir özeti  bulunmaktadır. Eğer herhangi bir değişiklik gerçekleştirilmeyecekse Next  butonuna tıklatıp Active Directory kurulumunu başlatınız (Şekil12).</p>
<table border="0" cellspacing="0" cellpadding="4" width="505" align="center">
<tbody>
<tr>
<td><a rel="nofollow" href="/imagecatalogue/imageview/797/?RefererURL=/article/articleview/2032/1/2/active_directory"><img src="http://www.olympos.org:81/ezimagecatalogue/catalogue/att675.tmp.jpg" border="0" alt="ACTIVE DIRECTORY" width="505" height="386" /><span style="text-decoration: underline;"> </span></a></td>
</tr>
<tr>
<td>Şekil 12</td>
</tr>
</tbody>
</table>
<p><strong>6. Additional Domain Controller for an existing Domain:</strong><br />
1. Start  menüsündeki Run kutusuna dcpromo yazın ve Enter’a basın. Karşınıza Active  Directory Kurulum Sihirbazı gelecektir.<br />
<strong>2. Operating System  Compatibility:</strong> İlk ekranda Next butonuna tıklatıp bir sonraki ekrana  geçiniz. Karşınıza sistem uyumluluklarını açıklayan Operating System  Compatibility ekranı gelecektir. Burda yazılanları okuduktan sonra sıradaki  ekrana geçmek için Next butonuna tıklatınız.<br />
<strong>3. Domain Controller  Type:</strong> Bu ekranda Domain Controller tipi belirlenmelidir. Varolan bir  Domain’e ek bir Domain Controller ekleneceği için <strong>&#8220;Additional domain  controller for an existing domain&#8221;</strong> seçeneği işaretlenmelidir. Gerekli  seçeneği işaretleyip Next butonuna tıklatınız.<br />
<strong>4. Network  Credentials:</strong> Bu ekranda, bilgisayarın ek Domain Controller olarak dahil  olacağı Domain’den yetkili bir kullanıcının kimlik bilgilerinin girilmesi  gerekmektedir. Bir Domain Admin veya Enterprise Admin kullanıcı ismini,  şifresini ve bu kullanıcının dahil olduğu Domain’i yazıp Next butonuna  tıklatınız.<br />
<strong>5. Additional Domain Controller:</strong> Bu ekranda bilgisayarın  ek Domain Controller olacağı Domain’inin tam DNS ismini yazınız. Yandaki Browse  butonu ile Domain Ağacınının yapısını görebilir ve ek Domain Controller olarak  katılmak istediğiniz Domain’i Browse görünümünden de seçebilirsiniz.<br />
<strong>6.  Database and Log Folders:</strong> Bu ekranda Active Directory veritabanı dosyası  olan NTDS.DIT dosyasının ve Logların nerede tutulacağını giriniz. Yoğun  işlemlerde en iyi performansı elde etmek için Active Directory veritabanını ve  Loglarını ayrı fiziksel harddiskler üzerine yerleştirmek tavsiye edilir.  Varsayılan olarak veritabanı da loglar da “%SystemRoot%\NTDS” klasörüne  yerleştirilir. Gerekli girdileri yazıp Next butonuna tıklatınız.<br />
<strong>7.  Shared System Volume:</strong> Bu ekranda SYSVOL olarak bilinen Active Directory  paylaşım klasörünün yeri belirlenmelidir. Bu klasör NTFS ile biçimlendirilmiş  bir bölüm üzerine yerleştirilmelidir. Varsayılan olarak bu klasör  “%SystemRoot\SYSVOL” şeklinde oluşturulur. Gerekli yolu girip Next butonuna  tıklatınız.<br />
<strong>8. Directory Services Restore Mode Administrator  Password:</strong> bu ekranda Directory Services Restore Mode için girilecek olan  şifrenin belirlenmesi gerekmektedir.<br />
<strong>9. Summary:</strong> Bu son ekranda  yapılan ayarlamaların bir özeti bulunmaktadır. Eğer herhangi bir değişiklik  gerçekleştirilmeyecekse Next butonuna tıklatıp Active Directory kurulumunu  başlatınız.</p>
<p><strong><span style="text-decoration: underline;">7. Child Domain in an existing Domain Tree:</span></strong><br />
1. Start  menüsündeki Run kutusuna dcpromo yazın ve Enter’a basın. Karşınıza Active  Directory Kurulum Sihirbazı gelecektir.<br />
<strong>2. Operating System  Compatibility:</strong> İlk ekranda Next butonuna tıklatıp bir sonraki ekrana  geçiniz. Karşınıza sistem uyumluluklarını açıklayan Operating System  Compatibility ekranı gelecektir. Burda yazılanları okuduktan sonra sıradaki  ekrana geçmek için Next butonuna tıklatınız.<br />
<strong>3. Domain Controller  Type:</strong> Bu ekranda Domain Controller tipi belirlenmelidir. Üstteki seçenek  <strong>&#8220;Domain controller for a new domain&#8221;</strong> Child Domain oluştururken  seçilmelidir. Sonuçta Child Domain de yeni bir Domain’dir ve Child’ı olarak  tanımlandığı Parent Domain ile kendisi arasında bir Trust Relationship  olacaktır. Gerekli seçeneği işaretleyip Next butonuna tıklatınız.<br />
<strong>4.  Create New Domain:</strong> Bu ekranda Domain’in tipi belirlenmelidir. Üç adet  seçenek bulunmaktadır:<br />
• <strong>Domain in a new forest:</strong> Yeni bir Forest için  yeni bir Domain Controller oluşturmak için işaretlenir.<br />
• <strong>Child domain in  an existing domain tree:</strong> Önceden oluşturulmuş bir Domain Tree yapısına  bağımlı yeni bir Child Domain oluşturmak için işaretlenir.<br />
• <strong>Domain tree  in an existing forest:</strong> Önceden oluşturulmuş bir Forest yapısına yeni bir  Domain Tree eklemek için işaretlenir.<br />
Burda seçmemiz gereken seçenek  “<strong>Child domain in an existing domain tree</strong>” seçeneğidir. Gerekli seçeneği  işaretledikten sonra Next butonuna tıklatınız.<br />
<strong>5. Network  Credentials:</strong> Bu ekranda, Child Domain’in ilişkisi olduğu Parent Domain’den  yetkili bir kullanıcının kimlik bilgilerinin girilmesi gerekmektedir. Bir Domain  Admin veya Enterprise Admin kullanıcı ismini, şifresini ve bu kullanıcının dahil  olduğu Domain’i yazıp Next butonuna tıklatınız.<br />
<strong>6. Child Domain  Installation:</strong> Bu ekranda Parent Domain’in tam DNS ismini ve yeni  oluşturulacak olan Child Domain’in ismini girmemiz gerekmektedir. Parent Domain  kutusunun yanındaki Browse butonuna tıklatıp Child Domain’in katılacağı Domain  Ağacınının yapısını görebilirsiniz. Yine Child olarak katılacağınız Domain’i  Browse görünümünden de seçebilirsiniz. Parent Domain’i ve Child Domain’i yazınca  yeni oluşacak olan Child Domain’in tam DNS ismini alttaki kutuda görünecektir.  Gerekli bilgileri girip Next butonuna tıklatınız.<br />
<strong>7. NetBIOS Domain  Name:</strong> Bu ekranda Child Domain’in NetBIOS ismi belirlenmelidir. Varsayılan  olarak gelen NetBIOS isminin kullanılması tavsiye edilir. Child Domain’in  NetBIOS ismini belirledikten son Next butonuna tıklatınız.<br />
<strong>8. Database  and Log Folders:</strong> Bu ekranda Active Directory veritabanı dosyası olan  NTDS.DIT dosyasının ve Logların nerede tutulacağını giriniz. Yoğun işlemlerde en  iyi performansı elde etmek için Active Directory veritabanını ve Loglarını ayrı  fiziksel harddiskler üzerine yerleştirmek tavsiye edilir. Varsayılan olarak  veritabanı da loglar da “%SystemRoot%\NTDS” klasörüne yerleştirilir. Gerekli  girdileri yazıp Next butonuna tıklatınız.<br />
<strong>9. Shared System Volume:</strong> Bu  ekranda SYSVOL olarak bilinen Active Directory paylaşım klasörünün yeri  belirlenmelidir. Bu klasör NTFS ile biçimlendirilmiş bir bölüm üzerine  yerleştirilmelidir. Varsayılan olarak bu klasör “%SystemRoot\SYSVOL” şeklinde  oluşturulur. Gerekli yolu girip Next butonuna tıklatınız.<br />
<strong>10. DNS  Registration Diagnostics:</strong> Bu ekranda DNS Server testi sonuçları  gösterilmektedir.Eğer DNS altyapısı Active Directory kurulumu öncesinde  hazırlanmamış ise Active Directory Kurulum Sihirbazı bize bu konuda üç seçenek  sunmaktadır:<br />
• “<strong>I have corrected the problem. Perform the DNS diagnostic  test again</strong>.” : DNS altyapısının hazır olduğunu, ve testin tekrarlanmasını  belirtir.<br />
• “<strong>Install and configure the DNS server on this computer, and  set this computer to use this DNS server as its preferred DNS server</strong>.” : DNS  altyapısının oluşturulması Active Directory kurulumuna bırakır.<br />
• “<strong>I will  correct the problem later by configuring DNS manually</strong>.” : DNS altyapısının  kurulumdan sonra yönetici tarafından manüel olarak gerçekleştirileceğini  belirtir.<br />
Gerekli seçeneği işaretleyip Next botununa tıklatınız.<br />
<strong>11.  Permissions:</strong> Bu ekranda Domain’deki minimum işletim seyivesi belirlenmelidir  ve Domain izinleri bu velirlenen seviyeye göre oluşturulacaktır. İki adet  seçenek bulunmaktadır:<br />
• “<strong>Permissions compatible with pre-Windows 2000  server operating systems</strong>” : Eğer Domain’de Windows 2000 öncesi sunucu tipi  işletim sistemi olacaksa bu seçenek seçilmelidir.<br />
• “<strong>Permissions  compatible only with Windows 2000 or Windows Server 2003 operating systems</strong>”  : Eğer Domain’deki tüm sunucu tipi işletim sistemleri Windows 2000 sonrası ise  bu seçeneğin seçilmesi güvenlik açısından tavsiye edilir.<br />
Gerekli seçeneği  işaretleyip Next butonuna tıklatınız.<br />
<strong>12. Directory Services Restore Mode  Administrator Password:</strong> Bu ekranda Directory Services Restore Mode için  girilecek olan şifrenin belirlenmesi gerekmektedir.<br />
<strong>13. Summary:</strong> Bu  son ekranda yapılan ayarlamaların bir özeti bulunmaktadır. Eğer herhangi bir  değişiklik gerçekleştirilmeyecekse Next butonuna tıklatıp Active Directory  kurulumunu başlatınız.</p>
<p><strong><span style="text-decoration: underline;">8. Active Directory Kurulum Sonrası Kontroller</span></strong><br />
Active  Directory kurulumundan sonra Directory veritabanı dosyalarının, SYSVOL  dosyalarının, DNS SRV kaynak kayıtlarının düzgün bir şekilde yapılandırılmış  olduğunun doğrulanması gerekmektedir. Active Directory Kurulum sihirbazı işlemi  sonlandırdıktan sonra şu adımları izleyerek kurulumun sorunsuz bir şekilde  gerçekleştiğini doğrulayabilirsiniz:<br />
• DNS veritabanını inceleyerek SRV  kayıtlarının doğru şekilde oluşturulmuş olduğunu kontrol edin.<br />
• SYSVOL  klasörünün düzgün şekilde oluşturulduğundan ve paylaştırılmış olduğundan emin  olun.<br />
• Active Directory veritabanı ve log dosyalarının oluşturulduğunu  doğrulayın.<br />
• Olay Görüntüleyicisini (Event Viewer) açarak kurulum sırasında  herhangi bir hatanın gerçekleşip gerçekleşmediğini kontrol edin.</p>
<p><strong><span style="text-decoration: underline;">SRV kaynak kayıtlarının kontrolü:</span></strong><br />
Active Directory  kurulduktan sonra Domain Controller yeniden başlatıldıktan sonra DNS  veritabanına SRV kaynak kayıtlarını kaydeder. Bu kayıtların oluşturulmuş  olduğunu test etmek için Administrative Tools kısmından DNS yönetim konsolunu  tıklayarak ilgili SRV kayıtlarının kontrol edebilir veya nslookup komudunu  çalıştırarak DNS veritabanını sorgulayabilirsiniz.</p>
<p><strong><span style="text-decoration: underline;">SYSVOL klasörünü doğrulamak:</span></strong><br />
SYSVOL klasörünü doğrulamak  için önce klasörün disk üzerinde oluşturulmuş olduğunu daha sonra da bu klasörün  paylaştırılmış olduğunu doğrulamamız gerekir. Eğer SYSVOL klasöründe herhangi  bir hata varsa bu klasörde saklanan veriler (Group Policy gibi) Domain  Controller’lar arasında replike edilemeyecektir. SYSVOL klasörünün varsayılan  yeri %SystemRoot%\SYSVOL yoludur.</p>
<p><strong><span style="text-decoration: underline;">Active Directory veritabanı ve log dosyalarını doğrulamak:</span></strong><br />
Active Directory veritabanının ve log dosyalarının düzgün şekilde  oluşturulmuş olması gerekmektedir. Bunu doğrulamak için bakmamız gereken yer,  eğer kurulum sırasında başka bir yer belirlemediysek, %SystemRoot%\NTDS  klasörüdür. Bu klasör içerisinde şu dosyalar yer almalıdır:<br />
•  <strong>Ntds.dit</strong> : Active directory veritabanı dosyası.<br />
• <strong>Edb.*</strong> :  Transaction logları ve checkpoint dosyaları.<br />
• <strong>Res*.log</strong> : Rezerve  edilen log dosyaları.</p>
<p><strong>Olay Görüntüleyicisi kontrolü:</strong><br />
Active Directory kurulumu esnasında  oluşabilecek herhangi bir hata için Olay Görüntüleyicisinin kontrol edilmesi  gerekmektedir. Olması muhtemel hataların raporları için aşağıdaki logları  kontrol edin:<br />
• System Log<br />
• Directory Service<br />
• DNS Server<br />
•  File Replication service</td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.yusuffirat.com/?feed=rss2&amp;p=23</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>c# ile access&#8217;e bağlanmak ve veri çekmek</title>
		<link>http://www.yusuffirat.com/?p=19</link>
		<comments>http://www.yusuffirat.com/?p=19#comments</comments>
		<pubDate>Wed, 13 Jan 2010 07:42:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Yazılım & Programlama]]></category>

		<guid isPermaLink="false">http://www.yusuffirat.com/?p=19</guid>
		<description><![CDATA[c# ile access mdb dosyasına bağlanmak ve orada bulunan verileri eklediğimiz bir windows form application'u içinde görüntülemek.]]></description>
			<content:encoded><![CDATA[<p><!-- end posthead -->Aşağıdaki örnekte c#da access’e bağlanıp verileri bir buton sayesinde listboxa ekleyeceğiz..</p>
<p><img src="http://img198.imageshack.us/img198/9176/aftery.jpg" alt="" width="452" height="340" /></p>
<p>1. database dosyasi (*.mdb) projenin kayıtlı olduğu klasörde bin/debug klasörünün içinde  olmalıdır.</p>
<p>2. data.oleb import edilmelidir.<br />
using System.Data.OleDb;</p>
<p>3. bağlantıyı gerçekleştirecek kod parcasi her veri cekme isleminde kullanılacağı için bir fonksiyon halinde yazılması işleri kolaylaştıracaktır.</p>
<div>
<div><a title="view source" href="http://turkcekaynak.net/tag/csharp#viewSource">view source</a></p>
<div><object id="highlighter_584122_clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="flashvars" value="highlighterId=highlighter_584122" /><param name="src" value="http://turkcekaynak.net/wp-content/plugins/syntaxhighlighter/syntaxhighlighter/scripts/clipboard.swf" /><param name="wmode" value="transparent" /><embed id="highlighter_584122_clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://turkcekaynak.net/wp-content/plugins/syntaxhighlighter/syntaxhighlighter/scripts/clipboard.swf" wmode="transparent" flashvars="highlighterId=highlighter_584122"></embed></object></div>
<p><a title="print" href="http://turkcekaynak.net/tag/csharp#printSource">print</a><a title="?" href="http://turkcekaynak.net/tag/csharp#about">?</a></p>
</div>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>01</code></td>
<td><code>using</code> <code>System;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>02</code></td>
<td><code>using</code> <code>System.Collections.Generic;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>03</code></td>
<td><code>using</code> <code>System.ComponentModel;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>04</code></td>
<td><code>using</code> <code>System.Data;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>05</code></td>
<td><code>using</code> <code>System.Drawing;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>06</code></td>
<td><code>using</code> <code>System.Linq;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>07</code></td>
<td><code>using</code> <code>System.Text;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>08</code></td>
<td><code>using</code> <code>System.Windows.Forms;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>09</code></td>
<td><code>using</code> <code>System.Data.OleDb;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>10</code></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>11</code></td>
<td><code>namespace</code> <code>WindowsFormsApplication3</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>12</code></td>
<td><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>13</code></td>
<td><code> </code><code>public</code> <code>partial</code> <code>class</code> <code>Form1 : Form</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>14</code></td>
<td><code> </code><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>15</code></td>
<td><code> </code><code>public</code> <code>Form1()</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>16</code></td>
<td><code> </code><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>17</code></td>
<td><code> </code><code>InitializeComponent();</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>18</code></td>
<td><code> </code><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>19</code></td>
<td><code> </code><code>public</code> <code>OleDbConnection baglanti;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>20</code></td>
<td><code> </code><code>public</code> <code>void</code> <code>Baglanti()</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>21</code></td>
<td><code> </code><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>22</code></td>
<td><code> </code><code>try</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>23</code></td>
<td><code> </code><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>24</code></td>
<td><code> </code><code>baglanti = </code><code>new</code> <code>OleDbConnection</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>25</code></td>
<td><code> </code><code>(</code><code>"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=courses.mdb"</code><code>);</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>26</code></td>
<td><code> </code><code>baglanti.Open();</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>27</code></td>
<td><code> </code><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>28</code></td>
<td><code> </code><code>catch</code> <code>(OleDbException ex)</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>29</code></td>
<td><code> </code><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>30</code></td>
<td><code> </code><code>MessageBox.Show(ex.Message);</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>31</code></td>
<td><code> </code><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>32</code></td>
<td><code> </code><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>33</code></td>
<td><code> </code><code>private</code> <code>void</code> <code>Verileri_yazdirma()</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>34</code></td>
<td><code> </code><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>35</code></td>
<td><code> </code><code>OleDbCommand komut;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>36</code></td>
<td><code> </code><code>OleDbDataReader oku;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>37</code></td>
<td><code> </code><code>try</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>38</code></td>
<td><code> </code><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>39</code></td>
<td><code> </code><code>Baglanti();</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>40</code></td>
<td><code> </code><code>komut = </code><code>new</code> <code>OleDbCommand();</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>41</code></td>
<td><code> </code><code>komut.CommandText =</code><code>"Select courseName from  course_name"</code><code>;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>42</code></td>
<td><code> </code><code>komut.Connection = baglanti;</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>43</code></td>
<td><code> </code><code>oku = komut.ExecuteReader();</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>44</code></td>
<td><code> </code><code>while</code> <code>(oku.Read())</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>45</code></td>
<td><code> </code><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>46</code></td>
<td><code> </code><code>listBox1.Items.Add(oku[0]);</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>47</code></td>
<td><code> </code><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>48</code></td>
<td><code> </code><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>49</code></td>
<td><code> </code><code>catch</code> <code>(OleDbException ex)</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>50</code></td>
<td><code> </code><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>51</code></td>
<td><code> </code><code>MessageBox.Show(ex.Message);</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>52</code></td>
<td><code> </code><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>53</code></td>
<td><code> </code><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>54</code></td>
<td><code> </code><code>private</code> <code>void</code> <code>button1_Click(</code><code>object</code> <code>sender, EventArgs e)</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>55</code></td>
<td><code> </code><code>{</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>56</code></td>
<td><code> </code><code>Verileri_yazdirma();</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>57</code></td>
<td><code> </code><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<div>
<table>
<tbody>
<tr>
<td><code>58</code></td>
<td><code> </code><code>}</code></td>
</tr>
</tbody>
</table>
</div>
<table>
<tbody>
<tr>
<td><code>59</code></td>
<td><code>}</code></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.yusuffirat.com/?feed=rss2&amp;p=19</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encription &amp; Decription Şifreleme Algoritmaları</title>
		<link>http://www.yusuffirat.com/?p=15</link>
		<comments>http://www.yusuffirat.com/?p=15#comments</comments>
		<pubDate>Mon, 11 Jan 2010 08:14:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://www.yusuffirat.com/?p=15</guid>
		<description><![CDATA[Encription ve Decription / Şifreleme ve Şifre çözme algoritmaları. ]]></description>
			<content:encoded><![CDATA[<table border="0" cellspacing="2" cellpadding="0" width="100%">
<tbody>
<tr>
<td>Algoritma konusunu en iyi şifreleme teknikleri ile işleyebileceğimi düşündüm.<br />
Bu nedenle şifrelemeye kısaca göz atmak istiyorum.II. Dünya savaşında Alman denizaltı şifresi enigma&#8217;nın çözülebilmesi savaşın dengesini değiştirmişti. Bu düşünce lise yıllarında bana kendi şifreli dilimi geliştirmeye itmişti. Her harfin yerine başka harfler oluşturmuştum. Harfler tamamen kendime özel olduğu için yazdığımın çözüleceğine olanak tanımıyordum. Yıllar sonra kendi günlüğüme almış olduğum bu şifreli alfabedeki notları (alfabeyi unuttuğum için) okumakta zorlandığımda kendim çözmek için çaba sarfettiğimde çözülebileceğini keşfetmiş oldum.</p>
<p>Klasik harf değiştirme yöntemleri ile elde edilen şifreli dillerin çözümü için. O dil&#8217;in yapısı hakkında bilgi sahibi olmanız yetiyor. (Örneğin Türkçe de en çok A, E kullanılır sesli olduğu ve seslilerin sessizlere oranla az olduğu için). Ve bu kısa bilgi sayesinde cümle içinde en çok kullanılan karakteri aratıyorsunuz. Ve bu harf&#8217;in A olduğunu varsayıp okumaya çalışıyorsunuz. Nihayetinde bir kaç denemeden sonra diğer harfler kendini ele veriyor.</p>
<p>Yüz yıllar öncesinden beri gelen harf kaydırma teknikleri de aynı şekilde çözülür.</p>
<p><strong>y</strong>usuf <strong>t</strong>uran <strong>f</strong>ırat yerine harf kaydrıma ile (kendinden bir ya da x sonraki harfi yazma)<br />
<strong>z</strong>yşyg <strong>u</strong>vsbo <strong>g</strong>isbu kullanılarak harf kaydırma şifresi oluşturuluyordu.</p>
<p>Oysa bu gün SSL dediğimiz güvenli şifreleme sistemlerinde ise özet olarak;</td>
</tr>
<tr>
<td bgcolor="#cccccc">
<table border="1" cellpadding="0">
<tbody>
<tr>
<td width="351" valign="top"><strong><em>RSA Public Key Sistemi</em></strong></td>
<td width="199" valign="top"><strong><em>Örnek</em></strong></td>
</tr>
<tr>
<td width="351" valign="top"><em>Hem p’nin hem de q’nun asal olduğu p ve q seçilir.</em></td>
<td width="199" valign="top"><em>P =11; q=13;</em></td>
</tr>
<tr>
<td width="351" valign="top"><em>Mod alınacak değer hesaplanır <strong>n</strong> = <strong>pq</strong>.</em></td>
<td width="199" valign="top"><strong><em>N</em></strong><em> = 11*13 = 143.</em></td>
</tr>
<tr>
<td width="351" valign="top"><em>Euler&#8217;s totient fonksiyonu uygulanır <strong>t</strong> = (<strong>p</strong>-1)(<strong>q</strong>-1).</em></td>
<td width="199" valign="top"><strong><em>t</em></strong><em> = (11-1)*(13-1) = 120.</em></td>
</tr>
<tr>
<td width="351" valign="top"><em>T değeri ile en büyük ortak böleni 1 olan bir e değeri hesaplanır.</em></td>
<td width="199" valign="top"><strong><em>e</em></strong><em> = 7. (7&lt;120, ve 7 ve 120 nin en büyük ortak böleni 1 dir</em></td>
</tr>
<tr>
<td width="351" valign="top"><strong><em>e*d</em></strong><em> = 1 mod <strong>t</strong> olacak şekilde d değeri hesaplanır</em></td>
<td width="199" valign="top"><em>7*<strong>d</strong> = 1 mod 120 =&gt; <strong>d</strong> = 103, </em><br />
<em>çünkü </em><br />
<em>7*103 = 721 = 1 mod 120.</em></td>
</tr>
<tr>
<td width="351" valign="top"><em>public key (<strong>e</strong>,<strong> n</strong>).</em></td>
<td width="199" valign="top"><em>public key (7, 143).</em></td>
</tr>
<tr>
<td width="351" valign="top"><em>Private key (<strong>d</strong>, <strong>n</strong>).</em></td>
<td width="199" valign="top"><em>private key (103, 143).</em></td>
</tr>
<tr>
<td width="351" valign="top"><em>Plaintext <strong>M </strong>olsun.</em></td>
<td width="199" valign="top"><strong><em>M</em></strong><em> = 5 kabul edelim.</em></td>
</tr>
<tr>
<td width="351" valign="top"><em>ciphertext <strong>C</strong> = <strong>M</strong>^<strong>e</strong> mod <strong>n</strong>.</em></td>
<td width="199" valign="top"><em>Ciphertext: </em><br />
<strong><em>C </em></strong><em>= 5^7 mod 143= 47</em></td>
</tr>
<tr>
<td width="351" valign="top"><em>Şifre çözme işlemi =&gt;</em><br />
<em>plaintext = <strong>C</strong>^<strong>d</strong> mod <strong>n</strong> = (<strong>M^e</strong>)^<strong>d</strong> mod <strong>n</strong> = <strong>M</strong>.</em></td>
<td width="199" valign="top"><em>Plaintext:</em><br />
<em>47^103 mod 143 = 5</em><br />
<em>47^103 = (5^7)^103 = 5^721<br />
= 5*[5^720] =5*[(5^120)^6]<br />
= 5*[ 1^6] = 5.</em><br />
<em>5^120 = 5^t = 1 mod 143 (Euler teoremi)veya, </em><br />
<em>daha basitçe, </em><br />
<strong><em>x^(e*d) = x</em></strong><em>; bu sebepten, 5^721 = 5’tir.</em></td>
</tr>
</tbody>
</table>
<p>Bunun gibi 64 bit, 128 bit ya da 256 bit gibi şifreleme yöntemleri uygulanmaktadır.<br />
Bu tür şifreleme yöntemlerinde işlemci şifrelemek yada çözmek için gönderilen her tür veri için zaman kaybetmekte ve şifreleme şifre çözme işi sunucuyu bu oranda zorlamaktadır.<br />
Ancak şifre algoritması ne kadar yüksekse çözülme kırılma olasılığıda o düzeyde zor olacaktır. Ticari işlemler, bankacılık işlemleri, özel mesajlaşma yöntemleri, ulusal güvenlik kuruluşları, uluslar arası gizli kuruluşlar bu yöntemle bilgi alışverişini kullanmaktadır.</td>
</tr>
<tr>
<td> Ben Algoritma&#8217;mı kendim oluşturduğum ve anahtarlarının, çözümünün daha da kolay ve anlaşılır olduğu bir yöntem kullanacağım. Ancak metin şifrelendikten sonra anahtarları ele geçirmeden şifrenin çözülmesinin mümkün olmayacağı bir yöntem olacak.</p>
<p>Öncelikle algoritmamı anlatayım;</p>
<p>Yine her harf&#8217;e bir numara vererek bu işe başlayacağız. Bu işi ileride geliştirmek isteyenler, harflere 256 ascii karakterlere, karakter numarasına başvurarak çalışma yapabilir.</p>
<p>x grubu : A=1 &#8216;dir<br />
y grubu : B=2 &#8216;dir</p>
<p>Cümlemiz ALİ olsun</p>
<p>Cümle grubu: A=1 , L=15 , İ =12<br />
Şifreleme tekniğimiz şu olsun: Cümle grubu1 + x grubu1 &#8211; ygrubu1 , Cümlegrubu2+xgrubu1-ygrubu1 &#8230;.</p>
<p>Buna göre formülümüz</p>
<p>A+A-b = 1+1-2=0<br />
L+A-b = 15+1-2=14<br />
İ+A-b = 12+1-2= 11</p>
<p>ALİ = 1,15,12 olarak tanımlıyken şimdi şifreli olarak 0,14,11 oldu<br />
anahtar harflerimiz A ve B eğer bu iki harfi biliyorsak çözüm çok kolay olacaktır.<br />
0 +2 -1 = 1 = A<br />
14 +2-1=15 = L<br />
11+2-1= 12 = İ</p>
<p>Sonucu elde edilir.<br />
Ancak, bu çok ta basit bir yöntem oldu farkedeceğiniz gibi. Zaten bende basit olsun kolay anlaşılsın diye kısa yoldan anlattım. Şimdi algoritmamıza biraz zorluk katalım.</p>
<p>Bunun için anahtar&#8217;ın dişlilerini artırmamız gerekecek.</p>
<p>Diyelimki x grubu anahtarımız FIRAT y grubu anahtarımız ise İSTANBUL olsun.<br />
x grubu : FIRAT<br />
y grubu : İSTANBUL<br />
Cümle Grubu : KULLANICI ADINIZ STURK</p>
<p>Buna göre şifreleme yapacak olursak<br />
cümle grubu1 + x grubu1 &#8211; ygrubu1 = K+F-İ = 14+7-12 = 9<br />
cümle grubu2 + x grubu2 &#8211; ygrubu2 = U+I-S = 26+11-23=14<br />
cümle grubu3 + x grubu3 &#8211; ygrubu3 = L+R-T = &#8230; şeklinde giderse sonuç şu olur.</p>
<table border="1" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td bgcolor="#cccccc">K</td>
<td bgcolor="#cccccc">+</td>
<td bgcolor="#cccccc">X</td>
<td bgcolor="#cccccc">-</td>
<td bgcolor="#cccccc">Y</td>
<td bgcolor="#cccccc">=</td>
<td bgcolor="#cccccc">S</td>
<td bgcolor="#cccccc"> </td>
<td bgcolor="#cccccc"> </td>
</tr>
<tr>
<td width="3%">K</td>
<td width="3%" bgcolor="#ffffcc">+</td>
<td width="3%">F</td>
<td width="2%" bgcolor="#ffffcc">-</td>
<td width="3%">İ</td>
<td width="3%">=</td>
<td width="18%">14+7-12</td>
<td width="7%">9</td>
<td width="58%">Ğ</td>
</tr>
<tr>
<td>U</td>
<td bgcolor="#ffffcc">+</td>
<td>I</td>
<td bgcolor="#ffffcc">-</td>
<td>S</td>
<td>=</td>
<td>26+11-23</td>
<td>14</td>
<td>K</td>
</tr>
<tr>
<td>L</td>
<td bgcolor="#ffffcc">+</td>
<td>R</td>
<td bgcolor="#ffffcc">-</td>
<td>T</td>
<td>=</td>
<td>15+22-25</td>
<td>12</td>
<td>İ</td>
</tr>
<tr>
<td>L</td>
<td bgcolor="#ffffcc">+</td>
<td>A</td>
<td bgcolor="#ffffcc">-</td>
<td>A</td>
<td>=</td>
<td>15+1-1</td>
<td>15</td>
<td>L</td>
</tr>
<tr>
<td>A</td>
<td bgcolor="#ffffcc">+</td>
<td>T</td>
<td bgcolor="#ffffcc">-</td>
<td>N</td>
<td>=</td>
<td>1+25-17</td>
<td>9</td>
<td>Ğ</td>
</tr>
<tr>
<td>N</td>
<td bgcolor="#ffffcc">+</td>
<td>F</td>
<td bgcolor="#ffffcc">-</td>
<td>B</td>
<td>=</td>
<td>17+7-2</td>
<td>22</td>
<td>R</td>
</tr>
<tr>
<td>I</td>
<td bgcolor="#ffffcc">+</td>
<td>I</td>
<td bgcolor="#ffffcc">-</td>
<td>U</td>
<td>=</td>
<td>11+11-26</td>
<td>-4</td>
<td> </td>
</tr>
<tr>
<td>C</td>
<td bgcolor="#ffffcc">+</td>
<td>R</td>
<td bgcolor="#ffffcc">-</td>
<td>L</td>
<td>=</td>
<td>3+22-15</td>
<td>10</td>
<td>H</td>
</tr>
<tr>
<td>I</td>
<td bgcolor="#ffffcc">+</td>
<td>A</td>
<td bgcolor="#ffffcc">-</td>
<td>İ</td>
<td>=</td>
<td>11+1-12</td>
<td>0</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td bgcolor="#ffffcc">+</td>
<td>T</td>
<td bgcolor="#ffffcc">-</td>
<td>S</td>
<td>=</td>
<td>0+25-20</td>
<td>5</td>
<td>D</td>
</tr>
<tr>
<td>A</td>
<td bgcolor="#ffffcc">+</td>
<td>F</td>
<td bgcolor="#ffffcc">-</td>
<td>T</td>
<td>=</td>
<td>1+7-25</td>
<td>-17</td>
<td> </td>
</tr>
<tr>
<td>D</td>
<td bgcolor="#ffffcc">+</td>
<td>I</td>
<td bgcolor="#ffffcc">-</td>
<td>A</td>
<td>=</td>
<td> </td>
<td> </td>
<td>&#8230; şeklinde devam eder.</td>
</tr>
<tr>
<td>I</td>
<td bgcolor="#ffffcc">+</td>
<td>R</td>
<td bgcolor="#ffffcc">-</td>
<td>N</td>
<td>=</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>N</td>
<td bgcolor="#ffffcc">+</td>
<td>A</td>
<td bgcolor="#ffffcc">-</td>
<td>B</td>
<td>=</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>I</td>
<td bgcolor="#ffffcc">+</td>
<td>T</td>
<td bgcolor="#ffffcc">-</td>
<td>U</td>
<td>=</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Z</td>
<td bgcolor="#ffffcc">+</td>
<td>F</td>
<td bgcolor="#ffffcc">-</td>
<td>L</td>
<td>=</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td bgcolor="#ffffcc">+</td>
<td>I</td>
<td bgcolor="#ffffcc">-</td>
<td>İ</td>
<td>=</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>S</td>
<td bgcolor="#ffffcc">+</td>
<td>R</td>
<td bgcolor="#ffffcc">-</td>
<td>S</td>
<td>=</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>T</td>
<td bgcolor="#ffffcc">+</td>
<td>A</td>
<td bgcolor="#ffffcc">-</td>
<td>T</td>
<td>=</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>U</td>
<td bgcolor="#ffffcc">+</td>
<td>T</td>
<td bgcolor="#ffffcc">-</td>
<td>A</td>
<td>=</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>R</td>
<td bgcolor="#ffffcc">+</td>
<td>F</td>
<td bgcolor="#ffffcc">-</td>
<td>N</td>
<td>=</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>K</td>
<td bgcolor="#ffffcc">+</td>
<td>I</td>
<td bgcolor="#ffffcc">-</td>
<td>B</td>
<td>=</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</tbody>
</table>
<p>Burada dikkat edilmesi gereken noktalar,</p>
<p>1. sıradaki K harfinin karşılığı Ğ çıktığı gibi 5. sıradaki A harfinin karşılığı&#8217;da Ğ harfi çıkmıştır.</p>
<p>2. dikkat edilmesi gereken nokta ise -4, -17 gibi çıkan negatif değerlerdir.</p>
<p>- (negatif) çıkan değerlerin&#8217;de çözülebilir bir değer olabilmesi için Mod alma yönetmini uygulayacağız. (Bu tür yöntemleri işi daha da karıştırmak, zorlaştırmak için uyguladım) Örneğin -4 değerini aldığımız I+I-U : 11+11-26 = -4 değerini aldığımız formül üzerinden gidelim. Bunun için önce mod alacağımız bir sayı bulmamız gerek. Ben bu örnekte mod alınacak sayı olarak 32 sayısını buldum. a-z&#8217;ye kadar 29 , 0=&#8217;boşluk&#8217;, 30=&#8217;:&#8217; 31=&#8217; &#8221; &#8216; 32=&#8217;.&#8217;<br />
Bu karakterleri de katarak 32 karakterden oluşan bir alfabe kullanmış oldum.</p>
<p>Mod 32 kabul ederek işlemimize devam edelim.<br />
I+I-U formülünü mod((I+I-U),32) şeklinde yeniden kurgulayalım. Mod((11+11-26),32)<br />
sonuç olarak 28 rakamını elde ederiz. Ancak burada dikkat etmemiz gerekn şudur.<br />
Biz cümlemizde hangi kelimenin &#8211; sonuç hangisinin + sonuç vereceğini tahmin edemediğimiz için tüm formülü Mod içine alarak yeniden yapmamız gerekecektir.</p>
<p>DECRYPTION YÖNTEMİ<br />
Formülü tersten uygulamamız sonucu verecektir. Yeterki anahtar kelimeleri ve sırasını (hangi anahtar kelime x hangi anahtar kelime y) bilelim.<br />
Şifreleme yöntemimiz S = K+X-Y &#8216;idi. (S=Şifre, K= Kelime, X = Anahtar1, Y= Anahtar2)<br />
Şimdi S&#8217;yi biliyoruz K &#8216;yı bilmiyoruz, X ve Y&#8217;yi biliyoruz.<br />
örneğin ilk harf için;<br />
Şifrede elimizde olan harf = Ğ, X= F, Y=İ &#8216;dir<br />
Ğ=9 , F=7, İ=12<br />
Ğ= K + F &#8211; Y<br />
9 = K + 7 &#8211; 12 olduğuna göre K&#8217;yı yalnız bırakmak için K=S-X+Y<br />
K= -7 + 12 + 9 olur.<br />
K= 14 tür. Yani K = K &#8216;dır. (K(Kelime) = K (Kullanıcı adınızın ilk harfi olan K) &#8216;dır.<br />
Ancak çözüm yolu içinde de mod alma yöntemini aynen uygulamak durumundayız. Çünkü şifrelerken mod alarak şifreleme yapmıştık.<br />
Bu durumda formül<br />
K= MOD(S) &#8211; X + Y &#8216;dir.</p>
<p>Bu formülü daha da zorlaştırmanın bir yolu&#8217;da şudur.</p>
<p>FIRAT ve İSTANBUL gibi kullanılan anahtarların yanına rakamlar koymaktır. Örneğin FIRAT4578 gibi. Bu da şu anlama getirilerek kullanılmalıdır.<br />
FIRATFIRATFIRATFIRATFIRAT şeklinde yan yana kullanılacak şifreleme anahtarı&#8217;nda<br />
1. seferde FIRAT 4 ile toplanacak. F= 7 + 4= 11 , I=11+4=15, R=22+4=26 gibi.<br />
2. FIRAT yazılımında 4578&#8242;in ikinci karakteri olan 5 ile toplnacak böylece anahtar her seferinde farklı değerlerle çarpılmasını sağlayacaktır.<br />
Bu yöntemle de daha da karmaşık hal alan şifrenin anahtarlar olmadan çözülebilmesi milyonda bir ihtimal bile değildir.</p>
<p>Şifreleme ve çözme konusunu ileride daha derinlemesine belkide örnekleriyle ele alabilirim. Şimdilik bu kadar yeter.</p>
<p>[Not: Bu metin tamamen Yusuf FIRAT tarafından oluşturulmuştur. İzinsiz alınması, kullanılması yasaktır. Yusuf FIRAT]</td>
</tr>
</tbody>
</table>
<p> </p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>İşte gelişimini anlatmış olduğum yukarıdaki yöntemin üzerine şöyle bir yöntem düşün ki, 128 bitlik ya da 256 bitlik şifrelemeler nasıl olduğu hakkında yorumlarınız daha net oluşsun.</p>
<p>Örneğin : Kimsenin bilmesini duymasını istemediğimiz ve sadece parolayı bilecek kişinin bilmesini istediğimiz gizli kelime : &#8220;<strong>aba baba</strong>&#8221; olsun. Ve bu şifrenin çözülmesi için gerekli parola ise, Adivar Super Gazi olsun.</p>
<p>Şifreleme yukarıdaki algoritmaya göre şöyle yapıldığını düşünün.</p>
<p>1. Parola&#8217;yı mod alma sayısı olarak kullanacağız. Örn: Adivar = A+D+İ+V+A+R = 1+5 + 9 + 27+ 1+20 = 63 = 6+3 = 9 yani mod 9 üzerinden işlem yapacağız.</p>
<p>2. Parola olan Süper ve 3. parola olan Gazi kelimelerinin ilk harflerine göre mod 9 cinsinden gizlenmesi gereken cümleyi analiz edelim.</p>
<p>Önce aba &#8216;yı analiz edelim.</p>
<p>a = <strong>1</strong>  (aba&#8217;nın 1. harfi olan a &#8216;nın alfabedeki sırası)<br />
S= 21 (Mod 9&#8242;a göre <strong>3</strong>)<br />
G= 9 (mod 9&#8242;a göre <strong>9</strong>)<br />
a+S+G= 1+3+9 = 13</p>
<p>şimdi ekranda <strong>13</strong> yazınca biz onun<strong> a</strong> olduğunu anlayacağız.</p>
<p>Ancak aba kelimesinin 3. harfi olan a için tekrar aynı motoru çalıştırdığımızda ise sonuç farklı çıkacak.<br />
Hemen analizi başlatalım<br />
a = <strong>1 </strong> (Aba&#8217;nın 3. harfi olan a &#8216;nın alfabedeki sırası)<br />
P= 19 (Mod 9&#8242;a göre <strong>1</strong>) (Süper in  3. harfi P)<br />
Z= 29 (mod 9&#8242;a göre <strong>9</strong>) (Gazi&#8217;nin 3. harfi Z)</p>
<p>a+p+z = 1+ 1 + 9 = 11<br />
Görebileceğiniz gibi, yukarıdaki örnekte a = 13 idi şimdi ise a = 11  işte aynı harfin bile başka başka sonuçlarla yazıldığı bu algoritmaların çözülme olasılığı bu nedenle çok çok daha düşmektedir.</p>
<p>(Not: Bu makale yusuffirat.com için Yusuf FIRAT tarafından yazılmıştır. Link (Bağlantı) verilmeksizin alınması ve kullanılması yasaktır.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yusuffirat.com/?feed=rss2&amp;p=15</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Projelerim</title>
		<link>http://www.yusuffirat.com/?p=8</link>
		<comments>http://www.yusuffirat.com/?p=8#comments</comments>
		<pubDate>Mon, 11 Jan 2010 08:00:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://www.yusuffirat.com/?p=8</guid>
		<description><![CDATA[BuyCOMM (Online Ticaret Paketi) http://www.buycomm.com.tr / http://www.onlineticaret.net
BuyCOMM İsmi, yazılış stili, ticari uygulama yöntemleri, programlanması, tasarımı, işleyiş mantığı gibi tüm aşamaları. Proje sahibi firma : markum.net
Projenin İçinde bulunduğum süreç boyunca katılımcı düzeyinde.

Felibase (Tekstil İşleyiş Programı)
Tekstil firmasının 4 ayrı şubesinde farklı yazılım şirketleri tarafından yazılmış programlardan ortak veri alarak
şirket yönetimine bilgi sunmak. Grafik / sms mesaj vs.. [...]]]></description>
			<content:encoded><![CDATA[<p>BuyCOMM (Online Ticaret Paketi) http://www.buycomm.com.tr / http://www.onlineticaret.net<br />
BuyCOMM İsmi, yazılış stili, ticari uygulama yöntemleri, programlanması, tasarımı, işleyiş mantığı gibi tüm aşamaları. Proje sahibi firma : markum.net<br />
Projenin İçinde bulunduğum süreç boyunca katılımcı düzeyinde.<br />
<img src="http://www.yusuffirat.com/eski_bilgiler/images/buycomm.jpg"></p>
<p>Felibase (Tekstil İşleyiş Programı)<br />
Tekstil firmasının 4 ayrı şubesinde farklı yazılım şirketleri tarafından yazılmış programlardan ortak veri alarak<br />
şirket yönetimine bilgi sunmak. Grafik / sms mesaj vs.. Proje sahibi firma: felicita.com.tr<br />
Projenin başından sonuna kadar tüm aşamalarında tek başına.</p>
<p>Feliçita Web Sitesi (Tekstil sektöründen bir firmaya yapılan web sitesi) http://www.felicita.com.tr<br />
Proje sahibi firma: felicita.com.tr<br />
Projenin başından sonuna kadar tüm aşamalarında tek başına. (Yetkililerden iş bilgileri almak kaydıyla)</p>
<p>Terrabase (Paperless firma içi işleyiş takip programı)<br />
Fazla departman&#8217;a sahip olan firmalarda departmanlar arası diyaloğu kurmak, şirket yöneticilerinin departman<br />
işleyişlerini takip edebilmesi, departman yöneticilerinin kendi departmanlarına tam hakimiyetinin sağlanması, şirket çalışanlarının günlük, haftalık ve aylık iş süreçlerini daha iyi programlayabilmesi. Proje sahibi firma terrailac.com.tr<br />
Projenin başından sonuna kadar tüm aşamalarında tek başına. (Yetkililerden iş bilgileri almak kaydıyla) </p>
<p>Terra İlaç Web Sitesi (İlaç sektöründen bir firmaya yapılan web sitesi) http://www.terrailac.com.tr<br />
İlaç firması web sitesi, online sipariş, online T.U.S. sınavı. Proje sahibi firma: terrailac.com.tr<br />
Projenin başından sonuna kadar tüm aşamalarında tek başına. (Yetkililerden iş bilgileri almak kaydıyla)<br />
<img src="http://www.yusuffirat.com/eski_bilgiler/images/terra.jpg"></p>
<p>Doğan Haber Ajansı (DHA) Haber Yönetim Sistemi. (Uluslar arası haber ajans&#8217;ı haber portali) http://www.dha.com.tr </p>
<p>Türkiyenin en büyük haber ajanslarından biri olan D.H.A. web sitesi. Muhabirlerin web üzerinden Doğan Grubu Haber merkezi ile iletişim kurarak, haber, video, resimlerin merkeze gönderilmesi, editörlerin onayladığı haberlerin yayınlanabilir havuza alınması, üst düzey yöneticilerin&#8217;de buradaki haberler&#8217;den onayladıklarının yayına verilmesi.<br />
Projenin başından sonuna kadar tüm aşamalarında yazılım yöneticisi olarak. (Yetkililerden iş bilgileri almak kaydıyla)<br />
<img src="http://www.yusuffirat.com/eski_bilgiler/images/dha.jpg"> </p>
<p>FARMAVISION Lojistik, stok takip ve etiket programı.</p>
<p>Lojistik merkezinde uluslar arası lojistik program&#8217;ına yardımcı olarak yazılmış olan, promosyon takip ve etiket(barkod) baskı programı.<br />
Projenin başından sonuna kadar tüm aşamalarında.<br />
<img src="http://www.yusuffirat.com/eski_bilgiler/images/farmavision.jpg"></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yusuffirat.com/?feed=rss2&amp;p=8</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
