<?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>just code it!</title>
	<atom:link href="http://www.onurdegerli.com.tr/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.onurdegerli.com.tr</link>
	<description></description>
	<lastBuildDate>Tue, 31 Jan 2012 07:52:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Min-Max Normalleştirilmesi</title>
		<link>http://www.onurdegerli.com.tr/2012/01/30/min-max-normallestirilmesi/</link>
		<comments>http://www.onurdegerli.com.tr/2012/01/30/min-max-normallestirilmesi/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 21:39:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[genel]]></category>
		<category><![CDATA[veri madenciliği]]></category>
		<category><![CDATA[min-max normalleştirmesi]]></category>
		<category><![CDATA[normalizasyon]]></category>
		<category><![CDATA[normalleştirme]]></category>

		<guid isPermaLink="false">http://www.onurdegerli.com.tr/?p=454</guid>
		<description><![CDATA[Uzun süredir gerek iş hayatımda gerek özel hayatımda yaşadığım hareketlilikten dolayı bloguma yeterli ilgiyi gösteremedim. Bir yandan da yüksek lisans devam ediyor ve ben tez yazmaya devam ediyorum. Teknik kısımda büyük yol aldım. Yazım kısmı da fena gitmiyor. Lakin daha da hızlanmam gerektiğinin farkındayım. Yazılarıma Veri Madenciliği konusu ile devam etmek istiyorum. Hatta mümkün olursa bundan [...]]]></description>
			<content:encoded><![CDATA[<p>Uzun süredir gerek iş hayatımda gerek özel hayatımda yaşadığım hareketlilikten dolayı bloguma yeterli ilgiyi gösteremedim. Bir yandan da yüksek lisans devam ediyor ve ben tez yazmaya devam ediyorum. Teknik kısımda büyük yol aldım. Yazım kısmı da fena gitmiyor. Lakin daha da hızlanmam gerektiğinin farkındayım.</p>
<p>Yazılarıma Veri Madenciliği konusu ile devam etmek istiyorum. Hatta mümkün olursa bundan sonra bu konuda daha derinlemesine yazılar yazmayı planlıyorum. Bugün bahsedeceğim konu ise veri dönüştürme sürecinde kullanılan <strong>Min-Max Normalleştirilmesi </strong>konusu. Umarım birilerinin işine yarar <img src='http://www.onurdegerli.com.tr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-454"></span></p>
<p>Veri Madenciliği süreçleri, veri üzerinde herhangi bir algoritma uygulamadan önce, kaba tabirle verinin adam edilmesi de denebilir. Bu süreç içerisinde verinin yapısına uygun olarak, veri, <strong>temizleme, bütünleştirme, indirgeme </strong>ve<strong> dönüştürme</strong> gibi süreçlerden geçirilerek algoritma uygulanmasına uygun hale getirilir. Aksi taktirde veri kümesi içerisinde gürültülü veriler olur ve istenilen sonuçların çıkmasına engel olacağı gibi verilerin yanlış yorumlanmasına da neden olabilmektedir.</p>
<p>Veri dönüştürme süreci, verinin aynen uygulamaya katılmayacağı durumlarda kullanılır. Çünkü değişkenlerin ortalama ve varyansları birbirinden çok uzak aralıklarda olabilir. Bu da veri setinde ortalama ve alt düzeyde yer alan verilerin etkisini azaltır.</p>
<p>Bu problemin önüne geçmek için uygulanan algoritmalardan birisi <strong>Min-Max Normalleştirmesi</strong>'dir. Bu yöntem, veri seti içerisindeki en büyük ve en küçük değerlerin belirlenerek, diğerlerini buna uygun bir biçimde dönüştürme esasına dayanmaktadır. Aslında değerler 0-1 arasında bir sayısal değere dönüştürülmektedir.</p>
<p>Formül ile ifade edersek:</p>
<p><span class='MathJax_Preview'><img src='http://www.onurdegerli.com.tr/wp-content/plugins/latex/cache/tex_a0595c3b71a1063c43a78b339a07dd83.gif' style='vertical-align: middle; border: none; ' class='tex' alt="X=[X-Xmin] / [Xmax - Xmin]" /></span><script type='math/tex'>X=[X-Xmin] / [Xmax - Xmin]</script></p>
<p>X = Dönüştürülmüş değer</p>
<p>X = İlgili değer</p>
<p>Xmin = Veri setindeki en küçük değer</p>
<p>Xmax = Veri setindeki en büyük değer</p>
<p>Örneğin elimizde [30, 36, 45, 50, 60] gibi bir veri setimiz olsun. Bu veri setini aşağıdaki php kodu ile normalizasyon işlemi yapalım.</p>
<pre class="brush: php; title: ; notranslate">
&lt;pre&gt;&lt;?php

class Minmaxnorm {

	private $trainingSet = array(30, 36, 45, 50, 62);
	private $normalizedSet = array();
	private $min;
	private $max;

	public function process()
	{

		$this-&gt;min = min($this-&gt;trainingSet);
		$this-&gt;max = max($this-&gt;trainingSet);
		$this-&gt;doNorm();
	}

	private function doNorm()
	{
		foreach($this-&gt;trainingSet as $val)
		{
			$this-&gt;normalizedSet[] = $this-&gt;formula($val);
		}
	}

	private function formula($val)
	{
		return ($val - $this-&gt;min) / ($this-&gt;max - $this-&gt;min);
	}

	private function setTrainingSet($trainingSet)
	{
		$this-&gt;trainingSet = $trainingSet;
	}

	public function getTrainingSet()
	{
		return $this-&gt;normalizedSet;
	}

	public function getMin()
	{
		return $this-&gt;min;
	}

	public function getMax()
	{
		return $this-&gt;max;
	}

	public function getNormalizedSet()
	{
		return $this-&gt;normalizedSet;
	}
}

$norm = new Minmaxnorm();
$norm-&gt;process();

print_r($norm-&gt;getNormalizedSet());
echo &quot;&lt;br&gt;&quot;;
echo $norm-&gt;getMin();
echo &quot;&lt;br&gt;&quot;;
echo $norm-&gt;getMax();
echo &quot;&lt;br&gt;&quot;;
print_r($norm-&gt;getNormalizedSet());

?&gt;&lt;/pre&gt;
</pre>
<p>İlgili eğitim setinin normalize edilmiş hali ise şöyledir:</p>
<p>30 =&gt; 0,0000</p>
<p>32 =&gt; 0,1875</p>
<p>45 =&gt; 0,4688</p>
<p>50 =&gt; 0,6250</p>
<p>62 =&gt; 1,0000</p>
<p>Normalizasyon işlemi sonucunda verilerimizi daha düzenli bir hale getirerek, seçilen veri madenciliği algoritmasını uygulamaya hazır hale getirmiş olduk.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.onurdegerli.com.tr/2012/01/30/min-max-normallestirilmesi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>en yakın k-komşu algoritması normalizasyon(k-nearest neighbor algorithm normalization)</title>
		<link>http://www.onurdegerli.com.tr/2011/03/22/en-yakin-k-komsu-algoritmasi-normalizasyon-k-nearest-neighboen-yakin-k-kor-algorithm-normalization/</link>
		<comments>http://www.onurdegerli.com.tr/2011/03/22/en-yakin-k-komsu-algoritmasi-normalizasyon-k-nearest-neighboen-yakin-k-kor-algorithm-normalization/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 09:48:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[data mining]]></category>
		<category><![CDATA[genel]]></category>
		<category><![CDATA[veri madenciliği]]></category>
		<category><![CDATA[k-nearest neighbor algorithm]]></category>
		<category><![CDATA[k-nearest neighbor normalization algorithm]]></category>

		<guid isPermaLink="false">http://www.onurdegerli.com.tr/?p=422</guid>
		<description><![CDATA[K-nearest algoritmasının temellerinden önceki  yazımda bahsetmiştim. Bellek tabanlı bir sınıflandırma algoritmasıdır. Sınıfları belli olan bir örnek kümesindeki gözlem değerlerinden yararlanarak, örneğe katılacak yeni gözlemin hangi sınıfa ait olduğunu belirlemek amacıyla kullanılır. Bu yazıda, örneki örnekten farklı olarak normalizasyon işlemi uygulanmaktadır. Normalizasyon işlemi, bir veri grubunun tamamının, aralarındaki oran bozulmadan 0-1 aralığında alınması işlemidir. Yani elimizde bulunan [...]]]></description>
			<content:encoded><![CDATA[<p>K-nearest algoritmasının temellerinden önceki  yazımda <a href="http://goo.gl/TMhic" target="_self">bahsetmiştim</a>. Bellek tabanlı bir sınıflandırma algoritmasıdır. Sınıfları belli olan bir örnek kümesindeki gözlem değerlerinden  yararlanarak, örneğe katılacak yeni gözlemin hangi sınıfa ait olduğunu  belirlemek amacıyla kullanılır.</p>
<p><span id="more-422"></span></p>
<p>Bu yazıda, örneki örnekten farklı olarak <strong>normalizasyon</strong> işlemi uygulanmaktadır. Normalizasyon işlemi, bir veri grubunun tamamının, aralarındaki oran bozulmadan 0-1 aralığında alınması işlemidir.<br />
Yani elimizde bulunan eğitim setindeki verilerin 0-1 aralığında normalize edilmesi demektir.</p>
<table border="1" width="100">
<tbody>
<tr>
<td>X1</td>
<td>X2</td>
<td>X3</td>
<td>Y</td>
</tr>
<tr>
<td>10</td>
<td>5</td>
<td>19</td>
<td>YES</td>
</tr>
<tr>
<td>8</td>
<td>2</td>
<td>4</td>
<td>NO</td>
</tr>
<tr>
<td>18</td>
<td>16</td>
<td>6</td>
<td>NO</td>
</tr>
<tr>
<td>12</td>
<td>15</td>
<td>8</td>
<td>YES</td>
</tr>
<tr>
<td>3</td>
<td>15</td>
<td>15</td>
<td>YES</td>
</tr>
</tbody>
</table>
<p>Yukarıdaki gözlem değerlerine bakılarak yeni bir gözlem olan X1=7, X2=8 ve X3=5 değerlerinin yani (7,8,5) gözleminin hangi sınıfa dahil olduğunu k-en yakın komşu yöntemi ile bulmak istiyoruz.</p>
<ol>
<li><strong>K'nın belirlenmesi: </strong>k=3 alınır.</li>
<li><strong>Normalizasyon:</strong> Normalizasyon işlemi için her bir sütundaki minimum ve maksimum değerler bulunur.  İlk sütun için min=3, max=18, 2.sütun için min=2 max=16, 3. sütun için min=4 max=19 şeklindedir.<br />
Daha sonra her bir veri kendi sütunundaki min ve max değerleri ile normalize edilir.<strong><br />
Formül: Xn = ( X - X(min) / ( X(max)-X(min) ) </strong></li>
<li><strong>Uzaklıkların hesaplanması: </strong>Normalizasyon işlemi uygulandıktan sonra her bir satır için öklid bağıntısı ile uzaklıklar hesaplanır.<br />
2 ve 3. adımlar uygulandıktan sonra aşağıdaki sonuçlar çıkmaktadır:</p>
<table border="1" width="100">
<tbody>
<tr>
<td>X1</td>
<td>X2</td>
<td>X3</td>
<td>Uzaklık</td>
</tr>
<tr>
<td>0.47</td>
<td>0.21</td>
<td>1.00</td>
<td>0.98</td>
</tr>
<tr>
<td>0.33</td>
<td>0.00</td>
<td>0.00</td>
<td>0.44</td>
</tr>
<tr>
<td>1.00</td>
<td>1.00</td>
<td>0.13</td>
<td>0.93</td>
</tr>
<tr>
<td>0.60</td>
<td>0.93</td>
<td>0.27</td>
<td>0.63</td>
</tr>
<tr>
<td>0.00</td>
<td>0.93</td>
<td>0.73</td>
<td>0.87</td>
</tr>
</tbody>
</table>
</li>
<li><strong>Sonucu istenen verilerin normalizasyonu: </strong>X17, X2=8 ve X3=5 verileri için de normalizasyon uygulanır. Buna göre çıkan sonuç:<br />
X1=0,26 , X2=0.43 ve X3=0.07</li>
<li><strong>En yakın uzaklıkların belirlenmesi: </strong> Satırlar küçükten büyüğe doğru ya da büyükten küçüğe doğru sıralanarak en küçük k=3 tanesi belirlenir. Bu k adet nokta verilen (7,8,5) noktasına en yakın gözlem değeridir. Buna göre 2.24, 0.44, 0.63 ve 0.87 sonuçlarının olduğu noktalar en yakın sonuçlardır.</li>
<li><strong>Seçilen satırlara ilişkin sınıfların belirlenmesi:</strong> (7,8,5) noktasına en yakın olan gözlem değerlerinin Y sınıfları göz önüne alınır ve hangisinin daha fazla olduğuna bakılır. Bu 3 sonuç içerisinde 1 adet NO, 2 adet YES sonucu vardır. Buna göre verilen (7,8,5) noktasının sınıfı YES olarak belirlenir.</li>
</ol>
<p>Uygulamanın php ile yazılmış hali aşağıdadır:</p>
<pre class="brush: php; title: ; notranslate">&lt;?php

class K_nearest_normalization {

/*

create k-nearest-normalization.txt file and paste data list

10,5,19,YES

8,2,4,NO

18,16,6,NO

12,15,8,YES

3,15,15,YES

*/

public $dataFile = 'k-nearest-normalization.txt';

private $arrDistances = array();

private $arrValues = array();

public $optimalNearest = 3;

private $arrNearest = array();

public $result = '';

private $x1;

private $x2;

private $x3;

function __construct()

{

header('Content-Type: text/html; charset=utf-8');

$this-&gt;readDataFile();

}

function __setVariables()

{

$this-&gt;arrDistances = array();

$this-&gt;arrNearest = array();

}

public function execute($x1,$x2,$x3)

{

$this-&gt;x1 = $x1;

$this-&gt;x2 = $x2;

$this-&gt;x3 = $x3;

$this-&gt;__setVariables();

$this-&gt;normalization();

$this-&gt;getDistance();

$this-&gt;sortDistances();

$this-&gt;getNearest();

$this-&gt;getResult();

}

private function normalization()

{

$arrColOne   = array();

$arrColTwo 	 = array();

$arrColThree = array();

foreach ($this-&gt;arrValues as $val) {

$arrColOne[]	= $val[0];

$arrColTwo[] 	= $val[1];

$arrColThree[] 	= $val[2];

}

$arrSize = count($arrColOne);

$firstIndex = 0;

$lastIndex = $arrSize-1;

sort($arrColOne);

$minColOne = $arrColOne[$firstIndex];

$maxColOne = $arrColOne[$lastIndex];

sort($arrColTwo);

$minColTwo = $arrColTwo[$firstIndex];

$maxColTwo = $arrColTwo[$lastIndex];

sort($arrColThree);

$minColThree = $arrColThree[$firstIndex];

$maxColThree = $arrColThree[$lastIndex];

$arrTemp = array();

$i=0;

foreach ($this-&gt;arrValues as $val) {

$arrTemp[$i][0] = $this-&gt;normalate($val[0],$minColOne,$maxColOne);

$arrTemp[$i][1] = $this-&gt;normalate($val[1],$minColTwo,$maxColTwo);

$arrTemp[$i][2] = $this-&gt;normalate($val[2],$minColThree,$maxColThree);

$arrTemp[$i][3] = $val[3];

$i++;

}

$this-&gt;arrValues = $arrTemp;

$this-&gt;x1 = $this-&gt;normalate($this-&gt;x1,$minColOne,$maxColOne);

$this-&gt;x2 = $this-&gt;normalate($this-&gt;x2,$minColTwo,$maxColTwo);

$this-&gt;x3 = $this-&gt;normalate($this-&gt;x3,$minColThree,$maxColThree);

}

private function normalate($val,$colMinVal,$colMaxVal)

{

return round(($val-$colMinVal)/($colMaxVal-$colMinVal),2);

}

private function getDistance()

{

$tempVal = 0;

foreach ($this-&gt;arrValues as $val) {

$this-&gt;arrDistances[] = round(sqrt(pow(($val[0]-$this-&gt;x1),2)+pow(($val[1]-$this-&gt;x2),2)+pow(($val[2]-$this-&gt;x3),2)),2);

}

$this-&gt;print_pre($this-&gt;arrDistances);

}

private function sortDistances()

{

asort($this-&gt;arrDistances);

}

private function getNearest()

{

$i=0;

foreach ($this-&gt;arrDistances as $key =&gt; $val) {

if($i&lt;$this-&gt;optimalNearest) {

$this-&gt;arrNearest[] = $key;

}

$i++;

}

}

private function getResult()

{

$countYes = 0;

$countNo = 0;

foreach ($this-&gt;arrNearest as $val) {

if ($this-&gt;arrValues[$val][3] == 'YES') $countYes++;

if ($this-&gt;arrValues[$val][3] == 'NO') $countNo++;

}

if ($countYes&gt;$countNo) $this-&gt;result =  'YES';

if ($countYes&lt;$countNo) $this-&gt;result =  'NO';

if ($countYes==$countNo) $this-&gt;result =  'EQUAL';

}

private function readDataFile()

{

$f = fopen($this-&gt;dataFile, &quot;r&quot;);

$i = 0;

$arrTemp = array();

while ( $line = fgets($f) ) {

$arrTemp = explode(',',$line);

$j = 0;

foreach ($arrTemp as $var) {

$this-&gt;arrValues[$i][] = trim($var);

$j++;

}

$i++;

}

}

private function print_pre($data)

{

echo &quot;&lt;pre&gt;&quot;;

print_r($data);

echo &quot;&lt;/pre&gt;&quot;;

}

}

$kNearest = new K_nearest_normalization();

$kNearest-&gt;execute(7,8,5);

echo $kNearest-&gt;result;
</pre>
<p>Not: Uygulama ve anlatımda Dr. Yalçın ÖZKAN'ın Veri Madenciliği Yöntemleri kitabı esas alınmıştır. Hocamıza teşekkür ediyorum.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.onurdegerli.com.tr/2011/03/22/en-yakin-k-komsu-algoritmasi-normalizasyon-k-nearest-neighboen-yakin-k-kor-algorithm-normalization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sade bayes sınıflandırıcısı(naive bayes classifier)</title>
		<link>http://www.onurdegerli.com.tr/2011/03/17/sade-bayes-siniflandiricisi-naive-bayes-classifier/</link>
		<comments>http://www.onurdegerli.com.tr/2011/03/17/sade-bayes-siniflandiricisi-naive-bayes-classifier/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 19:48:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[data mining]]></category>
		<category><![CDATA[genel]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[veri madenciliği]]></category>
		<category><![CDATA[naive bayes]]></category>
		<category><![CDATA[naive bayes classifier]]></category>
		<category><![CDATA[sade bayes sınıflandırıcısı]]></category>

		<guid isPermaLink="false">http://www.onurdegerli.com.tr/?p=402</guid>
		<description><![CDATA[Bayes teoremi olasılıklar hesabında önemli bir yere sahiptir. Bayes teoremine dayanarak sınıflandırma yapmak mümkündür. Bayes sınıflandırıcıları istatistiksel sınıflandırma teknikleri arasında yer alır. Basit bir olasılıksal sınıflandırıcıdır. Daha detaylı bilgi almak için wikipedia sayfasını ziyaret edebilirsiniz. Teorik bilgiden ziyade uygulamanın daha akılda kalıcı olacağını düşünüyorum. Elimizde aşağıdaki tablo gibi bir eğitim kümesi olduğunu varsayalaım. 8 adet [...]]]></description>
			<content:encoded><![CDATA[<p>Bayes teoremi olasılıklar hesabında önemli bir yere sahiptir. Bayes teoremine dayanarak sınıflandırma yapmak mümkündür.</p>
<p>Bayes sınıflandırıcıları istatistiksel sınıflandırma teknikleri arasında yer alır. Basit bir olasılıksal sınıflandırıcıdır. Daha detaylı bilgi almak için <a href="http://en.wikipedia.org/wiki/Naive_Bayes_classifier" target="_blank">wikipedia</a> sayfasını ziyaret edebilirsiniz.</p>
<p>Teorik bilgiden ziyade uygulamanın daha akılda kalıcı olacağını düşünüyorum.</p>
<p><span id="more-402"></span>Elimizde aşağıdaki tablo gibi bir eğitim kümesi olduğunu varsayalaım. 8 adet adayın <strong>eğitim</strong>, <strong>yaş</strong> ve <strong>cinsiyet </strong>bilgilerine göre <strong>kabul </strong>edilip edilmedikleri gösterilmiştir. Bizden istenen ise Sade Bayes Sınıflandırıcısı ile <strong>eğitim=yüksek</strong>, <strong>yaş=orta</strong> ve<strong> cinsiyet=kadın</strong> şartlarındaki bir isteğin kabul görüp görmeyeceğine karar verilmesidir.</p>
<table border="1" width="100">
<tbody>
<tr>
<th>Başvuru</th>
<th>Eğitim</th>
<th>Yaş</th>
<th>Cinsiyet</th>
<th>Kabul</th>
</tr>
<tr>
<td>1</td>
<td>orta</td>
<td>yaşlı</td>
<td>erkek</td>
<td>evet</td>
</tr>
<tr>
<td>2</td>
<td>ilk</td>
<td>genç</td>
<td>erkek</td>
<td>hayır</td>
</tr>
<tr>
<td>3</td>
<td>yüksek</td>
<td>orta</td>
<td>kadın</td>
<td>hayır</td>
</tr>
<tr>
<td>4</td>
<td>orta</td>
<td>orta</td>
<td>erkek</td>
<td>evet</td>
</tr>
<tr>
<td>5</td>
<td>ilk</td>
<td>orta</td>
<td>erkek</td>
<td>evet</td>
</tr>
<tr>
<td>6</td>
<td>yüksek</td>
<td>yaşlı</td>
<td>kadın</td>
<td>evet</td>
</tr>
<tr>
<td>7</td>
<td>ilk</td>
<td>genç</td>
<td>kadın</td>
<td>hayır</td>
</tr>
<tr>
<td>8</td>
<td>orta</td>
<td>orta</td>
<td>kadın</td>
<td>evet</td>
</tr>
</tbody>
</table>
<p>Bayes sınıflandırması gerçekleştirmek için her bir hipotezin Bayes olasılıkları tek tek hesaplanır.</p>
<p>C1 : KABUL =  EVET<br />
C1 : KABUL = HAYIR</p>
<p>olmak üzere</p>
<p>P(X | C1) * P(C1) ve P(X | C2) * P(C2) ifadelerini hesaplamamız gerekmektedir. İfadelerden büyük olanı örneğin sınıfını verecektir.</p>
<p><strong>a ) P(X | C1) * P(C1) olasılığının hesaplanması</strong></p>
<p>P(X1 | C1) = P(EĞİTİM=YÜKSEK | KABUL=EVET) = 1/5<br />
P(X1 | C1) = P(YAŞ=ORTA | KABUL=EVET) = 3/5<br />
P(X1 | C1) = P(CİNSİYET=KADIN | KABUL=EVET) = 2/5<br />
olduğuna göre;<br />
P(X | C1) = P(X | KABUL=EVET) = 1/5*3/5*2/5 = 6/125<br />
olarak hesaplanır.<br />
P(C1) = P(KABUL = EVET) = 5/8<br />
olduğuna göre;<br />
P(X | C1) * P(C1) = 6/125*5/8 = 0.03<br />
olarak elde edilmiş olur.</p>
<p><strong>b ) P(X | C2) * P(C2) olasılığının hesaplanması</strong></p>
<p>P(X1 | C2) = P(EĞİTİM=YÜKSEK | KABUL=HAYIR) = 1/3<br />
P(X1 | C2) = P(YAŞ=ORTA | KABUL=HAYIR) = 1/3<br />
P(X1 | C2) = P(CİNSİYET=KADIN | KABUL=HAYIR) = 2/3<br />
olduğuna göre;<br />
P(X | C2 = P(X | KABUL=HAYIR) = 1/3*1/3*2/3 = 2/27<br />
olarak hesaplanır.<br />
P(C2) = P(KABUL=HAYIR) = 3/8<br />
olduğuna göre;<br />
P(X | C2) * P(C2) = 2/27 * 3/8 = 0.027<br />
olarak elde edilmiş olur.</p>
<p><strong>c) Sonuç</strong><br />
arg max{ (X | Ci) P(Ci)} = max{0.03, 0.027} = 0.03<br />
Böylece verilen örneğin 0.03 olasılığı ile ilgili olan sınıfa yani <strong>EVET </strong>sınıfına ailt olduğu anlaşılmaktadır.</p>
<p>Örnek php kodu aşağıdadır:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

/*
create sade-bayes.txt file and paste data list
----------------
orta,yaşlı,erkek,evet
ilk,genç,erkek,hayır
yüksek,orta,kadın,hayır
orta,orta,erkek,evet
ilk,orta,erkek,evet
yüksek,yaşlı,kadın,evet
ilk,genç,kadın,hayır
orta,orta,kadın,evet
*/

class Sade_Bayes {

	public $dataFile = 'sade-bayes.txt';
	private $arrValues = array();
	private $cKabulEvet = 0;
	private $cKabulHayir = 0;
	private $arrArgumans = array('egitim','yas','cinsiyet','kabul');
	private $toplamKayit = 0;
	private $kosulEvet = 0;
	private $kosulHayir = 0;

	function __construct()
	{
		header('Content-Type: text/html; charset=utf-8');
		$this-&gt;readDataFile();
	}

	function execute($egitim,$yas,$cinsiyet)
	{
		$this-&gt;getKabulOlasilik();
		$this-&gt;getOlasilikKabulEvet($egitim,$yas,$cinsiyet);
		$this-&gt;getOlasilikKabulHayir($egitim,$yas,$cinsiyet);
		return $this-&gt;result();
	}

	private function getOlasilikKabulEvet($egitim,$yas,$cinsiyet)
	{
		$pEgitim = 0;
		$pYas = 0;
		$pCinsiyet = 0;

		foreach ($this-&gt;arrValues as $var) {
			if ($var['egitim'] == $egitim &amp;&amp; $var['kabul'] == 'evet') $pEgitim++;
			if ($var['yas'] == $yas &amp;&amp; $var['kabul'] == 'evet') $pYas++;
			if ($var['cinsiyet'] == $cinsiyet &amp;&amp; $var['kabul'] == 'evet') $pCinsiyet++;
		}

		$p1 = $pEgitim/$this-&gt;cKabulEvet;
		$p2 = $pYas/$this-&gt;cKabulEvet;
		$p3 = $pCinsiyet/$this-&gt;cKabulEvet;
		$this-&gt;kosulEvet = ($p1*$p2*$p3)*($this-&gt;cKabulEvet/$this-&gt;toplamKayit);
	}

	private function getOlasilikKabulHayir($egitim,$yas,$cinsiyet)
	{
		$pEgitim = 0;
		$pYas = 0;
		$pCinsiyet = 0;

		foreach ($this-&gt;arrValues as $var) {
			if ($var['egitim'] == $egitim &amp;&amp; $var['kabul'] == 'hayır') $pEgitim++;
			if ($var['yas'] == $yas &amp;&amp; $var['kabul'] == 'hayır') $pYas++;
			if ($var['cinsiyet'] == $cinsiyet &amp;&amp; $var['kabul'] == 'hayır') $pCinsiyet++;
		}

		$p1 = $pEgitim/$this-&gt;cKabulHayir;
		$p2 = $pYas/$this-&gt;cKabulHayir;
		$p3 = $pCinsiyet/$this-&gt;cKabulHayir;
		$this-&gt;kosulHayir = ($p1*$p2*$p3)*($this-&gt;cKabulHayir/$this-&gt;toplamKayit);
	}

	private function readDataFile()
	{
		$f = fopen($this-&gt;dataFile, &quot;r&quot;);

		$i = 0;
		$arrTemp = array();

		while ( $line = fgets($f) ) {

			$arrTemp = explode(',',$line);

			$j = 0;
			foreach ($arrTemp as $var) {
				$indis = $this-&gt;arrArgumans[$j];
				$this-&gt;arrValues[$i][$indis] = trim($var);
				$j++;
			}

			$i++;
		}

		$this-&gt;toplamKayit = $i;
	}

	private function getKabulOlasilik()
	{
		foreach ($this-&gt;arrValues as $var) {
			if ($var['kabul'] == 'evet') $this-&gt;cKabulEvet++;
			else $this-&gt;cKabulHayir++;
		}
	}

	private function result()
	{
		if ($this-&gt;kosulEvet &gt; $this-&gt;kosulHayir) return 'EVET';
		else return 'HAYIR';
	}

	private function print_pre($data)
	{
		echo &quot;&lt;pre&gt;&quot;;
		print_r($data);
		echo &quot;&lt;/pre&gt;&quot;;
	}
}

$sadeBayes = new Sade_Bayes();
echo $sadeBayes-&gt;execute('orta','genç','kadın');
echo &quot;&lt;br&gt;&quot;;
echo $sadeBayes-&gt;execute('yüksek','orta','kadın');
</pre>
<p><strong>Not:</strong> Uygulama ve anlatımda Dr. Yalçın ÖZKAN'ın Veri Madenciliği Yöntemleri kitabı esas alınmıştır. Hocamıza teşekkür ediyorum.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.onurdegerli.com.tr/2011/03/17/sade-bayes-siniflandiricisi-naive-bayes-classifier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>en yakın k-komşu algoritması(k-nearest neighbor algorithm)</title>
		<link>http://www.onurdegerli.com.tr/2011/03/15/en-yakin-k-komsu-algoritmasi-k-nearest-neighbor-algorithm/</link>
		<comments>http://www.onurdegerli.com.tr/2011/03/15/en-yakin-k-komsu-algoritmasi-k-nearest-neighbor-algorithm/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 23:08:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[data mining]]></category>
		<category><![CDATA[genel]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[veri madenciliği]]></category>
		<category><![CDATA[en yakın k-komşu algoritması]]></category>
		<category><![CDATA[k-nearest neighbor algorithm]]></category>

		<guid isPermaLink="false">http://www.onurdegerli.com.tr/?p=389</guid>
		<description><![CDATA[Son zamanlarda yüksek lisans tezim ile  uğraşmaktayım. Tez araştırmam Veri Madenciliği(Data Mining) üzerine. Araştırmış olduğum algoritmaları vaktim oldukça uygulamaya döküyorum. Gene vakit buldukça da blogumda paylaşacağım. Araştırdığım algoritmalardan birisi bellek tabanlı sınıflandırma algoritmalarından en yakın k-komşu algoritması(k-nearest neighbor algorithm). Bu yöntem, sınıfları belli olan bir örnek kümesindeki gözlem değerlerinden yararlanarak, örneğe katılacak yeni gözlemin hangi sınıfa [...]]]></description>
			<content:encoded><![CDATA[<p>Son zamanlarda yüksek lisans tezim ile  uğraşmaktayım. Tez araştırmam Veri Madenciliği(Data Mining) üzerine. Araştırmış olduğum algoritmaları vaktim oldukça uygulamaya döküyorum. Gene vakit buldukça da blogumda paylaşacağım.</p>
<p>Araştırdığım algoritmalardan birisi bellek tabanlı sınıflandırma algoritmalarından <strong><a href="http://goo.gl/eMWR8">en yakın k-komşu algoritması(k-nearest neighbor algorithm)</a>. </strong></p>
<p><strong><span id="more-389"></span></strong></p>
<p>Bu yöntem, sınıfları belli olan bir örnek kümesindeki gözlem değerlerinden yararlanarak, örneğe katılacak yeni gözlemin hangi sınıfa ait olduğunu belirlemek amacıyla kullanılır.  Örnek kümedeki gözlemlerin herbirinin, sonradan belirlenen bir gözlem değerine olan uzaklıklarının hesaplanması ve en küçük uzaklığa sahip k sayıda gözlemin seçilmesi esasına dayanmaktadır. Uzaklıkların hesaplanmasında, i ve j noktaları için <strong>Öklid uzaklık formülü</strong> kullanılabilir:</p>
<p><strong>karekök((x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2)</strong></p>
<p>Algoritmanın uygulaması aşağıdaki gibidir:</p>
<ol>
<li>K parametresi belirlenir. Bu parametre verilen bir noktaya en yakın komşuların sayısıdır.</li>
<li>Söz konusu nokta ile diğer tüm noktalar arasındaki uzaklıklar tek tek hesaplanır.</li>
<li>Adım 2'de hesaplanan uzaklıklara göre satırlar sıralanır ve bunlar arasından en küçük olan k tanesi seçilir.</li>
<li>Seçilen satırların hangi kategoriye ait oldukları belirlenir ve en çok tekrarlanan kategori değeri seçilir.</li>
<li>Seçilen kategori, tahmin edilmesi beklenen gözlem değerinin kategorisi olarak kabul edilir.</li>
</ol>
<p>Yukarıdaki bilgiler doğrultusunda php ile kodlanmış örnek bir uygulama yaptım.</p>
<p>Elimizde 10 adet gözlem verisi olsun:</p>
<table border="1" width="100">
<tbody>
<tr>
<th>X1</th>
<th>X2</th>
<th>Y</th>
</tr>
<tr>
<td>2</td>
<td>4</td>
<td>BAD</td>
</tr>
<tr>
<td>3</td>
<td>6</td>
<td>GOOD</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
<td>GOOD</td>
</tr>
<tr>
<td>4</td>
<td>10</td>
<td>BAD</td>
</tr>
<tr>
<td>5</td>
<td>8</td>
<td>BAD</td>
</tr>
<tr>
<td>6</td>
<td>3</td>
<td>GOOD</td>
</tr>
<tr>
<td>7</td>
<td>9</td>
<td>GOOD</td>
</tr>
<tr>
<td>9</td>
<td>7</td>
<td>BAD</td>
</tr>
<tr>
<td>11</td>
<td>7</td>
<td>BAD</td>
</tr>
<tr>
<td>10</td>
<td>2</td>
<td>BAD</td>
</tr>
</tbody>
</table>
<p>Yukarıdaki gözlem değerlerine bakılarak yeni bir gözlem olan X1=8 ve X2=4 değerlerinin yani (8,4) gözleminin hangi sınıfa dahil olduğunu k-en yakın komşu yöntemi ile bulmak istiyoruz.</p>
<ol>
<li><strong> K'nın belirlenmesi:</strong> k=4 olarak alıyoruz.</li>
<li><strong>Uzaklıkların hesaplanması: </strong>(8,4) noktası ile gözlem değerlerinin herbirisi arasındaki uzaklıklar hesaplanır. Bunun için Öklid uzaklık bağıntısı kullanılır.<br />
d(i,j) = sqrt( (2-8)^2 + (4-4)^2 ) = 6.00<br />
d(i,j) = sqrt( (3-8)^2 + (6-4)^2 ) = 5.39<br />
d(i,j) = sqrt( (3-8)^2 + (4-4)^2 ) = 5.00<br />
d(i,j) = sqrt( (4-8)^2 + (10-4)^2 ) = 7.21<br />
d(i,j) = sqrt( (5-8)^2 + (8-4)^2 ) = 5.00<br />
d(i,j) = sqrt( (6-8)^2 + (3-4)^2 ) = 2.24<br />
d(i,j) = sqrt( (7-8)^2 + (9-4)^2 ) = 5.10<br />
d(i,j) = sqrt( (10-8)^2 + (2-4)^2 ) = 2.83<br />
d(i,j) = sqrt( (3-8)^2 + (4-4)^2 ) = 5.00<br />
d(i,j) = sqrt( (3-8)^2 + (4-4)^2 ) = 5.00</p>
<table border="1" width="100">
<tbody>
<tr>
<th>X1</th>
<th>X2</th>
<th>Distance</th>
</tr>
<tr>
<td>2</td>
<td>4</td>
<td>6.00</td>
</tr>
<tr>
<td>3</td>
<td>6</td>
<td>5.39</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
<td>5.00</td>
</tr>
<tr>
<td>4</td>
<td>10</td>
<td>7.21</td>
</tr>
<tr>
<td>5</td>
<td>8</td>
<td>5.00</td>
</tr>
<tr>
<td>6</td>
<td>3</td>
<td>2.24</td>
</tr>
<tr>
<td>7</td>
<td>9</td>
<td>5.10</td>
</tr>
<tr>
<td>9</td>
<td>7</td>
<td>3.16</td>
</tr>
<tr>
<td>11</td>
<td>7</td>
<td>4.24</td>
</tr>
<tr>
<td>10</td>
<td>2</td>
<td>2.83</td>
</tr>
</tbody>
</table>
</li>
<li><strong>En küçük uzaklıkların belirlenmesi: </strong>Satırlar küçükten büyüğe doğru ya da büyükten küçüğe doğru sıralanarak en küçük k=4 tanesi belirlenir. Bu <strong>k</strong> adet nokta verilen <strong>(8,4) </strong>noktasına en yakın gözlem değeridir. Buna göre <strong>2.24, 2.83, 3.16, 4.24</strong> sonuçlarının olduğu noktalar en yakın sonuçlardır.</li>
<li><strong>Seçilen satırlara ilişkin sınıfların belirlenmesi: </strong>(8,4) noktasına en yakın olan gözlem değerlerinin Y sınıfları göz önüne alınır ve hangisinin daha fazla olduğuna bakılır. Bu 4 sonuç içerisinde 1 adet <strong>GOOD, </strong>3 adet <strong>BAD </strong>sonucu vardır. Buna göre verilen (8,4) noktasının sınıfı <strong>BAD </strong>olarak belirlenir.</li>
</ol>
<p>Uygulamanın php ile yazılmış hali aşağıdadır:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

class K_nearest {
/*
create k-nearest.txt file and paste data list
data list&lt;/pre&gt;
2,4,BAD
3,6,GOOD
3,4,GOOD
4,10,BAD
5,8,BAD
6,3,GOOD
7,9,GOOD
9,7,BAD
11,7,BAD
10,2,BAD
*/
 public $dataFile = 'k-nearest.txt';
 private $arrDistances = array();
 private $arrValues = array();
 public $optimalNearest = 4;
 private $arrNearest = array();
 public $result = '';

 function __construct()
 {
 header('Content-Type: text/html; charset=utf-8');
 $this-&gt;readDataFile();
 }

 function __setVariables()
 {
 $this-&gt;arrDistances = array();
 $this-&gt;arrNearest = array();

 }

 public function execute($x1,$x2)
 {
 $this-&gt;__setVariables();
 $this-&gt;getDistance($x1,$x2);
 $this-&gt;sortDistances();
 $this-&gt;getNearest();
 $this-&gt;getResult();
 }

 private function getDistance($x1,$x2)
 {
 $tempVal = 0;

 foreach ($this-&gt;arrValues as $val) {
 $this-&gt;arrDistances[] = round(sqrt(pow(($val[0]-$x1),2)+pow(($val[1]-$x2),2)),2);
 }
 }

 private function sortDistances()
 {
 asort($this-&gt;arrDistances);
 }

 private function getNearest()
 {
 $i=0;
 foreach ($this-&gt;arrDistances as $key =&gt; $val) {

 if($i&lt;$this-&gt;optimalNearest) {
 $this-&gt;arrNearest[] = $key;
 }

 $i++;
 }
 }

 private function getResult()
 {
 $countBad = 0;
 $countGood = 0;

 foreach ($this-&gt;arrNearest as $val) {

 if ($this-&gt;arrValues[$val][2] == &quot;BAD&quot;) $countBad++;
 if ($this-&gt;arrValues[$val][2] == &quot;GOOD&quot;) $countGood++;
 }

 if ($countBad&gt;$countGood) $this-&gt;result =  'BAD';
 if ($countBad&lt;$countGood) $this-&gt;result =  'GOOD';
 if ($countBad==$countGood) $this-&gt;result =  'EQUAL';
 }

 private function readDataFile()
 {
 $f = fopen($this-&gt;dataFile, &quot;r&quot;);

 $i = 0;
 $arrTemp = array();

 while ( $line = fgets($f) ) {

 $arrTemp = explode(',',$line);

 $j = 0;
 foreach ($arrTemp as $var) {
 $this-&gt;arrValues[$i][] = trim($var);
 $j++;
 }

 $i++;
 }

 }

 private function print_pre($data)
 {
 echo &quot;&lt;pre&gt;&quot;;
 print_r($data);
 echo &quot;&lt;/pre&gt;&quot;;
 }

}

$kNearest = new K_nearest();
$kNearest-&gt;execute(8,4);
echo $kNearest-&gt;result;
echo &quot;&lt;br&gt;&quot;;
$kNearest-&gt;execute(1,2);
echo $kNearest-&gt;result;
</pre>
<p><strong>Not:</strong> Uygulama ve anlatımda Dr. Yalçın ÖZKAN'ın Veri Madenciliği Yöntemleri kitabı esas alınmıştır. Hocamıza teşekkür ediyorum.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.onurdegerli.com.tr/2011/03/15/en-yakin-k-komsu-algoritmasi-k-nearest-neighbor-algorithm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bilişim sektöründe yetişmiş personel sorunsalı</title>
		<link>http://www.onurdegerli.com.tr/2010/12/25/bilisim-sektorunde-yetismis-personel-sorunsali/</link>
		<comments>http://www.onurdegerli.com.tr/2010/12/25/bilisim-sektorunde-yetismis-personel-sorunsali/#comments</comments>
		<pubDate>Sat, 25 Dec 2010 14:56:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[genel]]></category>
		<category><![CDATA[bilişim sektörü]]></category>
		<category><![CDATA[iş ilanları]]></category>
		<category><![CDATA[junior]]></category>
		<category><![CDATA[senior]]></category>

		<guid isPermaLink="false">http://www.onurdegerli.com.tr/?p=365</guid>
		<description><![CDATA[Bir süredir yazmıyorum. Sanırım artık eski hevesim kalmadı. Fakat bu aralar tekrar alevlendirmek gibi bir niyetim var. Bu yazımda teknik bir konudan ziyade uzun süredir aklımı kurcalayan bilişim sektöründeki yetişmiş personel sorunsalı konusunda yazmayı tercih ettim. Sosyal ağları yakından takip ediyorsanız bilişim firmalarının ve ajansların sürekli yetişmiş php, .net, java coderler aradıklarını görürsünüz. Bazı ilanlar [...]]]></description>
			<content:encoded><![CDATA[<p>Bir süredir yazmıyorum. Sanırım artık eski hevesim kalmadı. Fakat bu aralar tekrar alevlendirmek gibi bir niyetim var.</p>
<p>Bu yazımda teknik bir konudan ziyade uzun süredir aklımı kurcalayan bilişim sektöründeki yetişmiş personel sorunsalı konusunda yazmayı tercih ettim.</p>
<p><span id="more-365"></span></p>
<p>Sosyal ağları yakından takip ediyorsanız bilişim firmalarının ve ajansların sürekli <strong>yetişmiş </strong>php, .net, java coderler aradıklarını görürsünüz. Bazı ilanlar neredeyse 2 aydır aktif. Hele ki ruby, python gibi dillerde arıyorsalar işleri daha da zorlaşıyor.</p>
<p><strong>Soru:</strong> Bu firmalar neden yetişmiş personel arıyorlar?<br />
<strong>Cevap: </strong>Sürekli gelen işler, yarım kalan projeler, coderın elindeki projeyi yarım bırakıp gitmesi, sektöre yeni giren arkadaşların ise ihtiyçlarını karşılıyamıyor olması gibi sebepler sıralanabilir.</p>
<p>Aslında çözüm basit. Sürekli yetişmiş personel aramaktansa üniversiteden yeni mezun olmuş ya da hala okuyan arkadaşları ekibe dahil edip onları yetiştirmek daha makul bir çözüm gibi geliyor.</p>
<p>Örneğin bir firma yetişmiş personel ararken geçirdiği süre 10 birim ise kendi yetiştirecekleri kişiye ayıracakları zaman kişinin kabiliyetine göre daha az olabilmekte. Bu kişiyi istediğiniz gibi kendi sisteminize entegre edebilirsiniz. Henüz deneyimi olmadığı için sizin çalışma stilinize, yetişmiş bir personele göre belki de daha çabuk adapte olacaktır.</p>
<p>Bu kadar emin olmamın nedeni bizzat çalıştığım firmada bunu uyguluyor olmamız. 2010'un başında sadece 2 programcıyken şu an 4 kişiyiz. Sonradan gelen 2 kişinin de yeterli deneyimi yoktu. Hatta bu konuda kumar oynadığımızı dahi söyleyebiliriz. Fakat sonuç olarak kazanan biz olduk. Hem sektörde iyi işler yapacak arkadaşları yetiştirdik hem de kişi başına düşen iş yükünü oldukça azalttık.</p>
<p>Tabi ki tutmama olasılığı da var. Fakat sürekli yetişmiş personel aramaktansa bu yöntemi kullanmayı tercih ederim.</p>
<p>Bu kişinin kendisini geliştirdikten sonra bırakıp gitmesi de mümkün. Olaya diğer taraftan bakarsak yetişmiş personelin her an gitme ihtimali var. Sizin yetiştirdiğiniz kişi ise en azından size karşı olan minnet duygusundan dolayı uzunca bir süre ekipte bulunacaktır.</p>
<p><strong>Not:</strong> Farkettiyseniz junior, senior gibi kavramları kullanmadım. Hatta özellikle kaçındım. Bu konuda sektörde  hala bir belirsizlik var. Kime senior, kime junior denileceği net değil. Açıkçası benim de kafamda net değil. Bu yüzden bu kavramlar yerine daha farklı terimler kullanmayı tercih ettim.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.onurdegerli.com.tr/2010/12/25/bilisim-sektorunde-yetismis-personel-sorunsali/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>pdf application/octetstream mime type codeigniter patch</title>
		<link>http://www.onurdegerli.com.tr/2010/09/27/pdf-application-octetstream-mime/</link>
		<comments>http://www.onurdegerli.com.tr/2010/09/27/pdf-application-octetstream-mime/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 12:11:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[code igniter]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[application/octetstream]]></category>
		<category><![CDATA[file upload]]></category>
		<category><![CDATA[mime type]]></category>
		<category><![CDATA[mimes.php]]></category>

		<guid isPermaLink="false">http://www.onurdegerli.com.tr/?p=357</guid>
		<description><![CDATA[Codeigniter ile yapmış olduğum bir upload işlemi sırasında daha önce karşılaşmadığım bir mime type ile karşılaştım: application/octetstream. İleride sorun yaşayabilecek arkadaşlara belki yardımı dokunur diyerekten bloguma iliştiriyim dedim. aplication/config.mimes.php ye gelip pdf ile ilgili satırı bulup 'pdf'    =&#62;    array('application/pdf', 'application/x-download'), yerine 'pdf'    =&#62;    array('application/pdf', 'application/x-download','application/octetstream'), yazıyorsunuz. Bu arada upload işlemi ile ilgili fikirlerimi de buradan [...]]]></description>
			<content:encoded><![CDATA[<p>Codeigniter ile yapmış olduğum bir upload işlemi sırasında daha önce karşılaşmadığım bir mime type ile karşılaştım: <strong>application/octetstream</strong>.<strong> </strong></p>
<p>İleride sorun yaşayabilecek arkadaşlara belki yardımı dokunur diyerekten bloguma iliştiriyim dedim.</p>
<p><span id="more-357"></span><strong>aplication/config.mimes.php</strong> ye gelip pdf ile ilgili satırı bulup</p>
<p>'pdf'    =&gt;    array('application/pdf', 'application/x-download'),</p>
<p>yerine</p>
<p>'pdf'    =&gt;    array('application/pdf', 'application/x-download','application/octetstream'),</p>
<p>yazıyorsunuz.</p>
<p>Bu arada upload işlemi ile ilgili fikirlerimi de buradan okuyabilirsiniz. <a href="http://www.onurdegerli.com.tr/2010/04/04/dosya-yuklemefile-upload-mi-uzak-tutun-benden/" target="_blank">Link</a>.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">application/octetstream</div>
]]></content:encoded>
			<wfw:commentRss>http://www.onurdegerli.com.tr/2010/09/27/pdf-application-octetstream-mime/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bilişim kurultayı - 2010 hakkındaki izlenimlerim</title>
		<link>http://www.onurdegerli.com.tr/2010/09/27/bilisim-kurultayi2010-hakkindaki-izlenimleri/</link>
		<comments>http://www.onurdegerli.com.tr/2010/09/27/bilisim-kurultayi2010-hakkindaki-izlenimleri/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 09:05:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[genel]]></category>
		<category><![CDATA[bilisim2010]]></category>
		<category><![CDATA[sansür]]></category>

		<guid isPermaLink="false">http://www.onurdegerli.com.tr/?p=347</guid>
		<description><![CDATA[Geçen hafta Rixos Grand Ankara düzenlenen kurultayın teması Sosyal Dönüşüm üzerineydi. Kurultay kapsamında 4 gün boyunca Twitter'dan Facebook'a, site kapamalardan bilişim hukukuna kadar çeşitli konularda paneller yapıldı. Bunlardan birkaçına katılabildim. Bazı gözlemlerde bulundum. İzlenimlerimi maddeler halinde yazıyorum: Sosyal Medyada ve Yeni Medyada Nefret Söylemi isimli bir panele katıldım. Çeşitli üniversitelerde yüksek lisans ve doktora yapan [...]]]></description>
			<content:encoded><![CDATA[<p>Geçen hafta Rixos Grand Ankara düzenlenen kurultayın teması <strong>Sosyal Dönüşüm </strong>üzerineydi. Kurultay kapsamında 4 gün boyunca Twitter'dan Facebook'a, site kapamalardan bilişim hukukuna kadar çeşitli konularda paneller yapıldı. Bunlardan birkaçına katılabildim. Bazı gözlemlerde bulundum. İzlenimlerimi maddeler halinde yazıyorum:</p>
<p><span id="more-347"></span></p>
<ul>
<li><strong>Sosyal Medyada ve Yeni Medyada Nefret Söylemi</strong> isimli bir panele katıldım. Çeşitli üniversitelerde yüksek lisans ve doktora yapan arkadaşların sunumları vardı. Lisans ve yüksek lisans noktasına gelmiş kişilerin "Nasıl sunum yapılır?" konusunda yeterli bilgiye sahip olmaları gerektiğine inanıyorum (Doktorayı saymıyorum bile). Sunum yapmak, her bir slayta koca koca paragrafları koyup onları okumak değildir. Temel anlamda, başlıklar yazılır, detaylandırmayı kişi kendi sözlü olarak yapar. Yoksa izleyicilerin kafası karışır. Slaytı mı okusun, sunum yapanı mı dinlesin?</li>
<li><strong>Yeni Medya Ortamında Çevrimiçi Riskler ve Olanaklar</strong> isimli panele katıldım. Panelde Avrupa Birliği ile <strong>EU Kids Online</strong> isimli bir projede ortak bir çalışmanın yapıldığını öğrendim. Projede 9-16 yaşları arasındaki çocukların güvenli internet kullanımına yönelik araştırmalar yapılıyormuş. Detaylar için siteyi ziyaret edebilirsiniz. <a href="http://www2.lse.ac.uk/media@lse/research/EUKidsOnline/Home.aspx" target="_blank">http://www2.lse.ac.uk/media@lse/research/EUKidsOnline/Home.aspx</a></li>
<li>Katıldığım panellerden en hararetlisi hiç kuşkusuz <strong>Erişimin Engellenmesi/Olumsuz Etkileri/Çözüm Önerileri</strong> isimli paneldi. Kimler mi vardı? Konuşmacılardan biri BTK'dan Osman Nihat Şen, izleyiciler ise Mustafa Akgül ve ismini bilmediğim hatta cismine bile gerek duymadığım bir "sayın bakanlık yetkilisi" vardı. Aslında bu konu başlı başına bir yazı eder. Sadece ana hatları ile anlatayım.</li>
<li>BTK yetkilisi 2 gün öncesine kadar neredeyse Facebook'da engelleniyordu demesi hayli enteresandı. Evet yanlış duymadınız. FACEBOOK ENGELLENECEKTİ! Şimdi diyeceksiniz ki e Facebook da bir site nihayetinde neden engellenmesin ki? Doğru. Ama Facebook'n engellenmesi ile Facebook api'ler ile çalışan, sırtını Facebook'a yaslamış binlerce sitenin de etkileneceğini unutmamak gerek. Konuyu aynı gün Friendfeed'e taşıdım. <a href="http://friendfeed.com/onurdegerli/28f160ed/bilisim2010-btk-neredeyse-facebook-u" target="_blank">Link</a>.  Bir kaç gün sonra da Mililyet yazarı <strong>Mehveş Evin </strong>aynı konuyu köşesinde yazdı. <a href="http://cadde.milliyet.com.tr/2010/09/26/YazarDetay/1293680/Az_daha_Face_kapanacakti" target="_blank">Link</a>.</li>
<li>Bizi yöneten bürokratların ve siyasilerin tümü olmasa da çoğunun ne kadar yetersiz insanlar olduğunu söylemeye pek gerek yok sanırım. Zira panelde "sayın bakanlık yetkilsi" bunu bir kez daha gösterdi. Youtube engellemesi ile ilgili yorumu aynen şöyle: "Türkiye'de yıllardır dizanferi hastalığı yok ama biz aşımızı vurunuyoruz., önlemimizi alıyoruz" gibi sığ, derinliği olmayan bir yorum getirerek konu hakkında bilgi birikiminin ne kadar yeterli(!) olduğunu göstermiş oldu.</li>
<li>Panel bitiminde Mustafa Akgül "sayın bakanlık yetkilisine" Youtube engellemesinin detaylarını anlatmaya çalıştı. Söyledikleri özetle şöyle: "Engellemeye neden olan 10 videodan 5'i zaten kalktı. 5'ine de Türkiye'deki ip'lerden erişilemiyor. Siteyi tümden engellemenin bir mantığı yok". Fakat algıları tamamen kapalı olan yetkili anlamamak da ısrar etti. Daha 2 gün öncesine kadar da "sayın cumhurbaşkanımızın" "Türkiye'de sansür yoktur" şeklindeki yorumu ise bütün bu olanların tuzu, biberi oldu sanki. Bu konudaki yorumumu ise gene Friendfeed'de yaptım. <a href="http://friendfeed.com/onurdegerli/9accebb3/turkiye-de-internet-sansuru-yok-degil-mi-sayn" target="_blank">Link</a></li>
</ul>
<p>Özetle böyle. Sırada CEBIT var. Fırsat olursa <a href="http://www.ozgurwebgunleri.org.tr/" target="_blank">Özgür Web Günleri</a>'ne de gideceğim.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.onurdegerli.com.tr/2010/09/27/bilisim-kurultayi2010-hakkindaki-izlenimleri/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>code igniter ile jqgrid ve jquery ui layout kullanımı</title>
		<link>http://www.onurdegerli.com.tr/2010/07/06/code-igniter-ile-jqgrid-ve-jquery-ui-layout-kullanimi/</link>
		<comments>http://www.onurdegerli.com.tr/2010/07/06/code-igniter-ile-jqgrid-ve-jquery-ui-layout-kullanimi/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 15:37:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<guid isPermaLink="false">http://www.onurdegerli.com.tr/?p=308</guid>
		<description><![CDATA[Merhabalar. Uzun süredir blogu boşladım. İş, güç, master falan derken... Yok inanmayın. Bahane uyduruyorum. Hayatta herşey için vakit vardır. Hele ki kişinin uzmanlık alanı ile ilgiliyse ekstra bir boş zamana zaten gerek yoktur. Neyse, sosyal mesajımızı da verdikten sonra konumuza dönebiliriz. Code igniter ile olan ilişkim devam ediyor. Bu sefer ki yazım gene code igniter [...]]]></description>
			<content:encoded><![CDATA[<p>Merhabalar.</p>
<p>Uzun süredir blogu boşladım. İş, güç, master falan derken... Yok inanmayın. Bahane uyduruyorum. Hayatta herşey için vakit vardır. Hele ki kişinin uzmanlık alanı ile ilgiliyse ekstra bir boş zamana zaten gerek yoktur. Neyse, sosyal mesajımızı da verdikten sonra konumuza dönebiliriz.</p>
<p>Code igniter ile olan ilişkim devam ediyor. Bu sefer ki yazım gene code igniter ile ilgili. Fakat sadece bunula sınırlı değil. Jquery'nin nimetlerinden de yararlandım. <strong>JQuery</strong> <strong>UI-layout</strong> ve <strong>jqgrid</strong> library'lerini ile kullandım. Şu an yazdığım cms'de bu library'leri kullanıyorum. Madem kullanıyorum küçük bir demoyu da blogumda sizlerle paylaşmak istedim.</p>
<p><span id="more-308"></span>Bütün kodları blog postuna yazmam imkansız. Aslında imkansız değil ama bunları yaparken çok sıkılırım <img src='http://www.onurdegerli.com.tr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  O nedenle tüm dosyalara yazının sonunda vermiş olduğum linkten ulaşabilirsiniz. Eğer herhangi bir problem yaşarsanız bana nasıl ulaşacağınızı zaten biliyorsunuz <img src='http://www.onurdegerli.com.tr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>İlk olarak dosyalar hangi dizinlerde ve programı çalıştırırken nelere dikkat edeceksiniz onlardan bahsetmek istiyorum.</p>
<ul>
<li>Dosyaları indirdikten sonra <strong>cms_yeni.sql</strong> isimli dosyayı phpmyadmin'de çalıştırınız ve veritabanınızı oluşturunuz.</li>
<li>Programı <strong>http://localhost/cms/anasayfa </strong>şeklinde veya sizin belirlediğiniz bir dosya yapısında çağırınız.</li>
<li>Path'lerle iligi ayarları <strong>application/config/config.php</strong>, veritabanı ile ilgili ayarları ise <strong>application/<strong>config/</strong>database.php </strong>dosyalarından<strong> </strong>yapabilirsiniz.</li>
<li>Layout ve grid ile ilgili tüm dosyalar <strong>/js</strong> klasörü içerisinde bulunmaktadır. Dosyayı açtığınız zaman kullanmış olduğum jqgrid'in versiyon numarası ile adlandırılmış olan <strong>jquery.jqGrid-3.7.1</strong> isimli bir klasör göreceksiniz.</li>
<li>Sayfanın arayüzü yani kullanıdığımız <strong>UI layout, </strong>jqgrid için kullandığımız library'ler, css dosyaları ve sayfanın html çatısı <strong>application/views/content.php </strong>içerisine yazılmaktadır.</li>
<li>Kullanmış olduğum UI layout esnek bir yapıya sahiptir. Geliştiricileri tasarım yapma uğraşından kurtaracağı gibi gerektiğinde tasarıma da rahatça müdahale etmemizi sağlamaktadır. İstediğiniz paneli rahatlıkla açıp kapatabilme şansı vererek iyi bir kullanıcı deneyimi sağlamaktadır.</li>
<li>Sayfaya girdikten sonra <strong>sol panelde</strong> bulunan <strong>Menü</strong> butonuna bastıktan sonra çıkacak alt menüden <strong>Haberler </strong>butonuna basarak haber listesini <strong>jqgrid</strong> içerisinde görebilirsiniz.</li>
<li>Sol menüye eleman ekleyip çıkarmak için projenin içerisinde bulunan <strong>tree.xml</strong> dosyasını kullanabilirsiniz. Menü eklemek oldukça basittir. Herhangi bir satırı çoğaltın ve link adı ile url'yi değiştirin. İsterseniz bu dosyayı program içerisinde dinamik olarak da oluşturabilirsiniz. Orası sizin hayal gücünüze kalmış <img src='http://www.onurdegerli.com.tr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>jqgrid üzerinde yapacağınız <strong>ekleme, güncelleme, silme, arama, yenileme(refresh) </strong>gibi işlemlerin tümü <strong>ajax </strong>ile çalışmaktadır.</li>
<li>Haber modülü ile ilgili işlemlerin yapıldığı controller dosyası <strong>application/controllers/haber.php</strong>, model dosyası <strong>application/models/mhaber.php, </strong>view dosyası ise <strong>application/views/vhaber.php</strong>'dir.</li>
</ul>
<p>Biraz da jqgrid'in yüklenme mantığından bahsetmek istiyorum.</p>
<p>Sol menüden <strong>Haberler</strong> linkine tıkladıktan sonra ajax request ile <strong>http://localhost/cms/haber/haber_liste </strong>çalışmaktadır. Buradan da anlaşıldığı üzere <strong>haber</strong> controller'ı içerisindeki <strong>haber_liste</strong> fonksiyona gidiliyor. Bu fonksiyon içerisinde sadece aşağıdaki satırlar bulunmaktadır.</p>
<pre class="brush: php; title: ; notranslate">

public function haber_liste()

{

$this-&gt;load-&gt;view('vhaber');

}
</pre>
<p>Yani <strong>vhaber.php</strong> isimli view dosyası yüklenmektedir.</p>
<p>vhaber.php dosyasının içeriğinde ise grid'e yüklenecek olan haber bilgilerini çağıracak ve grid üzerinde yapacağımız ekleme, düzenleme, silme, arama işlemlerinin opsiyonlarını belirleyen javascript fonksiyonumuz bulunmaktadır. Ayrıca sayfanın en üstünde datanın ve grid pager'ın yerleşeceği html kodları bulunmaktadır.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;table id=&quot;list_haber&quot;&gt;&lt;/table&gt;
&lt;div id=&quot;pager_haber&quot;&gt;&lt;/div&gt;&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function() {

$.jgrid.defaults = $.extend($.jgrid.defaults,{loadui:&quot;enable&quot;,refresh:true});

var lastsel3;
$(&quot;#list_haber&quot;).jqGrid({
url:&quot;&lt;?php echo config_item('base_url')?&gt;haber/haber_liste_grid&quot;,
mtype:&quot;GET&quot;,
datatype: &quot;json&quot;,
imgpath: &quot;&lt;?php echo config_item('admin_grid_theme')?&gt;images/&quot;,
caption:&quot;Haberler&quot;,
height:&quot;auto&quot;,
width:1000,
loadui: &quot;enable&quot;,
autowidth: false,
rowNum:10,
rowList:[10,20,40],
pager: 'pager_haber',
sortname: 'HaberId',
viewrecords: true,
sortorder: &quot;desc&quot;,
multiselect: true,
pgbuttons: true,
editurl: '&lt;?php echo config_item('base_url')?&gt;haber/haber_islem',
refreshicon: 'ui-icon-refresh',
colNames:['Haber Id', 'Baslik', 'Icerik', 'Durum', 'Vitrin', 'Kayit Tarihi', 'Duzenleme Tarihi'],
colModel:[
{name:'HaberId',index:'HaberId', width:50},
{name:'Baslik',index:'Baslik', width:90, editable:true},
{name:'Icerik',index:'Icerik', width:90, editable:true, hidden:true, editrules: {edithidden:true},edittype:&quot;textarea&quot;,editoptions: {rows:&quot;10&quot;,cols:&quot;100&quot;}},
{name:'Durum',index:'Durum', width:90, editable:true,align:&quot;center&quot;,edittype:&quot;select&quot;,editoptions:{value:&quot;Aktif:Aktif;Pasif:Pasif&quot;},stype:'select', searchoptions:{value:&quot;:Hepsi;Aktif:Aktif;Pasif:Pasif&quot;}},
{name:'Vitrin',index:'Vitrin', width:90, editable:true,align:&quot;center&quot;,edittype:&quot;select&quot;,editoptions:{value:&quot;Aktif:Aktif;Pasif:Pasif&quot;},stype:'select', searchoptions:{value:&quot;:Hepsi;Aktif:Aktif;Pasif:Pasif&quot;}},
{name:'EklemeTarihi',index:'EklemeTarihi', width:80, align:&quot;center&quot;, search:false},
{name:'DuzenlemeTarihi',index:'DuzenlemeTarihi', width:80, align:&quot;center&quot;, search:false}
]
}).jqGrid('navGrid','#pager_haber',{edit:true,add:true,del:true,refresh: true},{width:800,height:400,closeAfterEdit:true},{},{},{multipleSearch:true})
.jqGrid('filterToolbar',{stringResult: true,searchOnEnter : false});
});
&lt;/script&gt;
</pre>
<p>Parametrelere bakarak aslında az çok ne işe yaradığını anlarsınız. Hala kafasında soru işareti olan varsa yorum yazabilir, e-posta atabilir veya jqgrid sayfasına bakabilir.<br />
Burada dikkat edilmesini istediğim 2 şey var.</p>
<pre class="brush: php; title: ; notranslate">
url:&quot;&lt;?php echo config_item('base_url')?&gt;haber/haber_liste_grid&quot;,
.
.
editurl: '&lt;?php echo config_item('base_url')?&gt;haber/haber_islem',
</pre>
<p>Buradaki 2 url parametresinden ilki olan <strong>url </strong>parametresi javascript kodu yüklendikten sonra datanın alınacağı sayfayı ve fonksiyonu gönstermektedir. Yani grid objemize yerleşecek olan <strong>json data</strong> <strong>haber</strong> class'ının <strong>haber_liste_grid</strong> fonksiyonundan çekilecektir. Grid üzerinde bulunan ve data eklemeye, düzenlemeye ve silmeyi sağlayan url ise <strong>editurl </strong>parametresinde bulunmaktadır. Bu sayfa <strong>haber</strong> class'ının, <strong>haber_islem</strong> fonksiyonudur.<br />
Bu fonksiyonların işlemlerini anlatırdım ama zaten ci yükleyip çalıştıracak olan kişi neler yaptığının da farkındadır <img src='http://www.onurdegerli.com.tr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<strong>mhaber.php</strong> dosyasında ise iliglii veritabanı işlemleri bulunmaktadır. Burada dikkat edilmesi gerekilen fonksiyon <strong>listeGrid</strong> fonksiyonudur. vhaber.php dosyasından gelecek olan parametreler ile arama kriterleri ve arama kelimelerine göre sql farklı şekillerde yazılmaktadır. Arama işlemlerinde arama opsiyonu olarak <strong>AND</strong> veya <strong>OR</strong> parametresi gelmektedir. Ayrıca birden fazla <strong>where</strong> koşulu da bulunma ihtimali vardır. Bu nedenle sql farklı durumlara göre farklı şekiller alarak CI'nin nimetlerinden faydalanılmıştır. Örneğin eğer şart parametresi AND ise yani farklı durumlar AND ile birleştirilecek ve arama opsiyonu <strong>cn</strong> yani <strong>contain</strong> ise <strong>$this-&gt;db-&gt;like($row['field'],$row['data']);</strong> şeklinde bir satır göreceksiniz. Eğer seçilen arama kriterleri <strong>OR </strong>ile bağlanacaksa<strong> </strong>ve gene <strong>cn </strong>kullanılmış ise bu sefer arama sql'i <strong>$this-&gt;db-&gt;or_like($row['field'],$row['data']);</strong> şeklinde olacaktır. Kodu açıp biraz incelediğinizde ne demek istediğimi eminim daha iyi anlayacaksınız <img src='http://www.onurdegerli.com.tr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Bu sistem eminim çoğu geliştirinini işin oldukça kolaylaştıracaktır. Yapmanız gereken dosyayı indirmek ve gerekli ayar işlemlerini yaptıktan sonra programı çalıştırmaktır. Programı yazarken ben oldukça eğlendim. Sizin de eğleneceğinizi düşünmekteyim <img src='http://www.onurdegerli.com.tr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  İyi çalışmalar.</p>
<p>Kodları indirmek için <a href="http://www.onurdegerli.com.tr/dosya_indir_7.php">tıklayınız</a>.</p>
<p>jqgrid ile ilgili diğer örnekleri görmek ve gelişmeleri takip etmek istiyorsanız burayı ziyaret edebilirsiniz: <a href="http://www.trirand.com/blog/" target="_blank">http://www.trirand.com/blog/</a></p>
<p>ui-layout için daha fazla örnek görmek istiyorsanız burayı ziyaret edebilirsiniz: <a href="http://layout.jquery-dev.net/" target="_blank">http://layout.jquery-dev.net/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.onurdegerli.com.tr/2010/07/06/code-igniter-ile-jqgrid-ve-jquery-ui-layout-kullanimi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>işin alanı (kısa hikaye)</title>
		<link>http://www.onurdegerli.com.tr/2010/04/16/isin-alani-kisa-hikaye/</link>
		<comments>http://www.onurdegerli.com.tr/2010/04/16/isin-alani-kisa-hikaye/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 14:55:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[geek life]]></category>
		<category><![CDATA[genel]]></category>
		<category><![CDATA[programcı]]></category>

		<guid isPermaLink="false">http://www.onurdegerli.com.tr/?p=291</guid>
		<description><![CDATA[x kişi: iş alanınız bilgisayar sanırım. ben: hayır, internet x kişi: :s ben: fazla söze ne hacet. durum ortada...]]></description>
			<content:encoded><![CDATA[<p><span> <span></p>
<div><a id="status_star_12285866829" title="favorite this tweet"> </a></div>
<p></span> <span><strong>x kişi:</strong> iş alanınız bilgisayar sanırım. </span></span></p>
<p><span><span><strong>ben:</strong> hayır, internet</span></span></p>
<p><span><span><strong>x kişi:</strong> :s</span></span></p>
<p><span><span><strong>ben:</strong> <img src='http://www.onurdegerli.com.tr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </span></span></p>
<p><span><span>fazla söze ne hacet.<br />
durum ortada...<br />
</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.onurdegerli.com.tr/2010/04/16/isin-alani-kisa-hikaye/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>dosya yükleme(file upload) mi? uzak tutun benden!</title>
		<link>http://www.onurdegerli.com.tr/2010/04/04/dosya-yuklemefile-upload-mi-uzak-tutun-benden/</link>
		<comments>http://www.onurdegerli.com.tr/2010/04/04/dosya-yuklemefile-upload-mi-uzak-tutun-benden/#comments</comments>
		<pubDate>Sun, 04 Apr 2010 21:57:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[geek life]]></category>
		<category><![CDATA[genel]]></category>
		<category><![CDATA[dosya upload]]></category>
		<category><![CDATA[dosya yükleme]]></category>
		<category><![CDATA[file upload]]></category>

		<guid isPermaLink="false">http://www.onurdegerli.com.tr/?p=288</guid>
		<description><![CDATA[Mutlaka her programcının yapmayı sıkıcı bulduğu,  sevmediği,  kod yazma esnasında en sona bıraktığı bir iş vardır. Benimkisi dosya yükleme(file upload). Dosyayı upload ettir, Uzantıları belirle, İsimlendir, Depolaması ayrı dert, Güvenliği önemli, Daha sonra sildireceksin .... Yapamadğımdan değil tabiki de. Çok kez yaptım, yapıyorum da. Ama file upload olayı sıkıcı geliyor. Karşıma çıktığında "gene mi lan" [...]]]></description>
			<content:encoded><![CDATA[<p>Mutlaka her programcının yapmayı sıkıcı bulduğu,  sevmediği,  kod yazma esnasında en sona bıraktığı bir iş vardır. Benimkisi <strong>dosya yükleme(file upload)</strong>.</p>
<p>Dosyayı upload ettir,<br />
Uzantıları belirle,<br />
İsimlendir,<br />
Depolaması ayrı dert,<br />
Güvenliği önemli,<br />
Daha sonra sildireceksin</p>
<p>....</p>
<p>Yapamadğımdan değil tabiki de. Çok kez yaptım, yapıyorum da.</p>
<p>Ama <strong>file upload </strong>olayı sıkıcı geliyor.</p>
<p>Karşıma çıktığında "gene mi lan" diyorum kendi kendime...</p>
<p>Sizlerin de kod yazarken sıkıcı bulduğunuz konular mutlaka vardır değil mi?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.onurdegerli.com.tr/2010/04/04/dosya-yuklemefile-upload-mi-uzak-tutun-benden/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

