<?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>GÜVEN ATBAKAN &#187; C++</title>
	<atom:link href="http://www.guvenatbakan.net/kategoriler/web-tasarim-yazilim/yazilim/cplusplus/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.guvenatbakan.net</link>
	<description>Lorem ipsum dolor sit amet.</description>
	<lastBuildDate>Sun, 05 Feb 2012 15:40:02 +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>Linux&#8217;ta Sıkıştırılmış Yedek Oluşturma</title>
		<link>http://www.guvenatbakan.net/2011/01/18/linuxta-sikistirilmis-yedek-olusturma/</link>
		<comments>http://www.guvenatbakan.net/2011/01/18/linuxta-sikistirilmis-yedek-olusturma/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 17:35:51 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[bash ile yedek alma işlemi]]></category>
		<category><![CDATA[c++ bash komutları çalıştırma]]></category>
		<category><![CDATA[c++ ile konsol kullanımı]]></category>
		<category><![CDATA[Execute bash commands and running programs by c++]]></category>
		<category><![CDATA[linux yedekleme]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=825</guid>
		<description><![CDATA[Zayıf C++ bilgimle istenilen dosyayı/klasörü istenilen klasöre yedekleyen bir program yazdım.
Ancak bu program öyle ahım şahım değil. Zaten Linux komut satırını kullanıyor. Linuxta konsola yazdığınız kodu kısmen bu program içerisine yazıyorsunuz. Bunu konsoldan da yapabilirim diyebilirsiniz, ancak  [...]]]></description>
			<content:encoded><![CDATA[<p>Zayıf C++ bilgimle istenilen dosyayı/klasörü istenilen klasöre yedekleyen bir program yazdım.</p>
<p>Ancak bu program öyle ahım şahım değil. Zaten Linux komut satırını kullanıyor. Linuxta konsola yazdığınız kodu kısmen bu program içerisine yazıyorsunuz. Bunu konsoldan da yapabilirim diyebilirsiniz, ancak isterseniz cronjob ile dilediğiniz zaman programın çalıştırılıp yedek almasını sağlayabilirsiniz. Ben bilgisayar kapanırken veya yeniden başlatılırken yedek almasını sağlamak için yapacağım bunu.</p>
<p>Programın kodları aşırı derece de amele usulü olabilir, kabulümdür. Malum üniversitemizde C++ öğreteceğiz dediler ama for,while ve bir kaç string fonksiyonu dışında hiçbirşey göstermediler. Buna rağmen araştırmacı kişilik olarak işimi görecek bu programı yazmayı başardım <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Kodların devamında açıklamalarda bulunacağım.<span id="more-825"></span></p>
<pre class="brush: cpp; title: ; notranslate">
#include &lt;iostream&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;unistd.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/wait.h&gt;
#include &lt;string.h&gt;
#include &lt;time.h&gt;

using namespace std;

int RunCommand(const char *strCommand)
{
	int iForkId, iStatus;
	iForkId = vfork();
	if (iForkId == 0)	// This is the child
	{
		iStatus = execl(&quot;/bin/sh&quot;,&quot;sh&quot;,&quot;-c&quot;, strCommand, (char*) NULL);
		exit(iStatus);	// We must exit here,
				// or we will have multiple
				// mainlines running...
	}
	else if (iForkId &gt; 0)	// Parent, no error
	{
		iStatus = 0;
	}
	else	// Parent, with error (iForkId == -1)
	{
		iStatus = -1;
	}
	return(iStatus);
} 

int main(int argc, char *argv[])
{
	int iNumProc = 0, iChildiStatus = 0, iStatus = 0, iDeadId = 0;
	int iExitFlag = 0;

    time_t rawtime;
	struct tm * timeinfo;
	char buffer [80];

	time ( &amp;rawtime );
	timeinfo = localtime ( &amp;rawtime );

	strftime (buffer,80,&quot;%Y_%m_%d-%H.%M.tar.gz&quot;,timeinfo);

	//puts (buffer);
	//cout&lt;&lt;buffer;

	char command[100] = &quot;tar cvzf &quot;;
	char topath[100] = &quot;/home/guven/yedekler/&quot;;
	char tocompress[100] = &quot;/home/guven/public_html/&quot;;
	char topath2[200];
	// Yedek oluşturulacak dosya
	strcat(topath2,topath);strcat(topath2,buffer);

	//komuta yedek dosyası ekleniyor
	strcat(command,topath2);
	strcat(command,&quot; &quot;);
	//dosyaya sıkıştırılacak konum-dosya ekleniyor
	strcat(command,tocompress);

	//if (Exists( topath ) )
	//{

		clock_t baslangic = clock(); // performans bilgisi

		iStatus = RunCommand(command);
		if (!iStatus)
			iNumProc++;
	//}

	// Wait till the commands complete
	while (iNumProc &amp;&amp; !iExitFlag)
	{
		iDeadId = waitpid(-1, &amp;iChildiStatus, WNOHANG);
		if (iDeadId &lt; 0)
		{
			// Wait id error - exit the loop
			iExitFlag = 1;
		}
		else if (iDeadId &gt; 0)
		{
			iNumProc--;
			// You can check the process exit iStatus here - its in the
			// iChildiStatus variable
		}
		else  // iDeadId == 0, no processes died
		{
			sleep(3);	// give them time to die
		}
	} 

	clock_t bitis = clock(); // performans bilgisi
	cout&lt;&lt;endl&lt;&lt;&quot;Bu islem &quot;&lt;&lt;(((double)bitis - (double)baslangic) / (double)CLOCKS_PER_SEC)&lt;&lt;&quot; saniyede yapildi.&quot;&lt;&lt;endl;

	return 0;
}
</pre>
<ul>
<li>Programın 52. satırındaki kodda yedeğin yapılacağı hedefi belirtiyorsunuz. Şöyle ki ben /home/guven/yedekler klasörüne atıyorum sıkıştırılmış dosyayı.</li>
<li>53. satırdaki kodda ise yedek alınacak dosya veya klasörü giriyorsunuz. Örneğin ben public_html klasörümü yedekliyorum.</li>
<li>Programda klasörü/dosya var mı yok mu kontrolü bulunmuyor. Dolayısıyla hedef ve kaynak dosyalarınızın/klasörlerinizin mutlaka bulunması gerekmektedir, yoksa program hata verir ki normali de budur <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Yedek dosyasının ismi şu şekilde oluşturulmaktadır: 2011_01_18-19.31.tar.gz Yani Yıl_Ay_Gün-Saat.Dakika.tar.gz.</li>
</ul>
<p>Şimdilik bunlar aklıma geldi, kafanıza takılan birşey olursa yorum bölümünden sorabilirsiniz. Bir sonraki yazımda bu programı bilgisayarın kapanış servislerine eklemeyi göstereceğim, tabii ki öncelikle bu işlemi doğru düzgün yapabilmem gerekecek <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Kaynakça</strong><br />
<a href="http://kengine.sourceforge.net/tutorial/g/execute-command-eng.htm" target="_blank">Execute bash commands and running programs by c++</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2011/01/18/linuxta-sikistirilmis-yedek-olusturma/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TBDGenç Algoritma Sorusu 8: Yalancılar</title>
		<link>http://www.guvenatbakan.net/2010/11/28/tbdgenc-algoritma-sorusu-8-yalancilar/</link>
		<comments>http://www.guvenatbakan.net/2010/11/28/tbdgenc-algoritma-sorusu-8-yalancilar/#comments</comments>
		<pubDate>Sat, 27 Nov 2010 23:41:20 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[c++ türkçe karakter kontrolü]]></category>
		<category><![CDATA[tbdgenc]]></category>
		<category><![CDATA[tbdgenc algoritma sorusu]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=767</guid>
		<description><![CDATA[Geçen ayki sorunun çözümünü gecikmeli de olsa paylaşıyorum. Soruya ulaşmak için tıklayın.
Çözümü görmek için yazının devamına bakın.

]]></description>
			<content:encoded><![CDATA[<p>Geçen ayki sorunun çözümünü gecikmeli de olsa paylaşıyorum. Soruya ulaşmak için <a href="http://www.tbdgenc.com/soru/soru8.html" target="_blank">tıklayın</a>.</p>
<p>Çözümü görmek için yazının devamına bakın.<br />
<span id="more-767"></span></p>
<pre class="brush: cpp; title: ; notranslate">
#include &lt;iostream&gt;
#include &lt;string.h&gt;

using namespace std;

int turkcekontrol(char kelime[100])
{
	int sonuc=0;
	unsigned int i;
	unsigned int uzunluk = strlen(kelime);
	for(i=0;i&lt;uzunluk;i++)
	{
		if(!((kelime[i] &gt;= 95 &amp;&amp; kelime[i] &lt;= 122) || (kelime[i] &gt;= 65 &amp;&amp; kelime[i] &lt;= 90 )) )
		{
		sonuc = 1;
		}
	}

	if (sonuc==1)
		return 1;
	else
		return 0;
}

int main()
{
	int k,n,i,m,j;
	char * bulunan;
	char * bulunan2;
	char * bulunan3;
	char * boslukvarmi ;

	cout&lt;&lt;&quot;Kasabadaki kisi sayisini girin:&quot;;

	ntekrar:
	cin&gt;&gt;n;
	cin.ignore(256, '\n');

	if (n&lt;1 || n&gt;1000)
	{
	cout&lt;&lt;&quot;Yanlis giris yaptiniz! Kasabadaki kisi sayisini girin:&quot;;
	goto ntekrar;
	}

	int listuzunluk = (n*100)+n+2;

	char name[n][100],kisi[n-1][100],list1[listuzunluk],list2[listuzunluk];

	strcpy(list1,&quot;,&quot;);
	strcpy(list2,&quot;,&quot;);

	for(k=0;k&lt;=n-1;k++)
	{

		nametekrar:
		cout&lt;&lt;endl&lt;&lt;&quot;Kasabadaki &quot;&lt;&lt;k+1&lt;&lt;&quot;. kisiyi girin:&quot;;
		cin.getline(name[k],100);

		boslukvarmi = strstr(name[k],&quot; &quot;);

		if (strlen(name[k])&lt;1 || strlen(name[k])&gt;10)
		{
			cout&lt;&lt;&quot;\nGirdiginiz isim hatali! Maksimum 10 karakter giriniz! \n&quot;;
			goto nametekrar;
		}
		else if (turkcekontrol(name[k])==1)
		{
			cout&lt;&lt;&quot;\nIsimler turkce karakter-bosluk-sayi-ozel karakter iceremez. Lutfen tekrar giriniz! \n&quot;;
			goto nametekrar;
		}

		mtekrar:
		cout&lt;&lt;name[k]&lt;&lt;&quot; kac kisinin ismini vericek:&quot;;
		cin&gt;&gt;m;
		cin.ignore(256, '\n');

		//öyle bi kontrol işte
		if(m+1&gt;n)
		{
			cout&lt;&lt;&quot;Kasabadaki kisi sayisi asildi: Tekrar giris yapin! \n&quot;;
			goto mtekrar;
		}

		if (m!=0)
		{
			for(i=0;i&lt;=m-1;i++)
			{
			kisitekrar:
			cout&lt;&lt;&quot;\t &quot;&lt;&lt;i+1&lt;&lt;&quot;. kisiyi girin: &quot;;
			cin.getline(kisi[i],100);

			if (strlen(kisi[i])&lt;1 || strlen(kisi[i])&gt;10)
			{
				cout&lt;&lt;&quot;\nGirdiginiz isim hatali! Maksimum 10 karakter giriniz! \n&quot;;
				goto kisitekrar;
			}
			else if (turkcekontrol(kisi[i])==1)
			{
				cout&lt;&lt;&quot;\nIsimler turkce karakter-bosluk-sayi-ozel karakter iceremez. Lutfen tekrar giriniz! \n&quot;;
				goto kisitekrar;
			}
				//ilk kayıt için kişiler listelere otomatik yazılıyor
				//söyleyen list1 e
				//söylenenler list2 ye
				if(k==0)
				{
					//söyleyen kişi list1 de tekrar tekrar yazılmasın diye kontrol
					bulunan = strstr(list1,name[k]);
					if (!bulunan)
					{
					strcat (list1,name[k]);
					strcat (list1,&quot;,&quot;);
					}

					strcat (list2,kisi[i]);
					strcat (list2,&quot;,&quot;);
				}
				else
				//dananın kuyruğu kopuyo
				{
					//eğer söyleyen kişi herhangi bir listede varsa
					//söylediği kişiler fişleniyor
					bulunan = strstr(list1,name[k]);
					bulunan2 = strstr(list2,name[k]);
					if (bulunan || bulunan2)
					{
						if(bulunan)
						{
							bulunan3 = strstr(list2,kisi[i]);
							if(!bulunan3)
							{
							strcat (list2,kisi[i]);
							strcat (list2,&quot;,&quot;);
							}
						}
						else if (bulunan2)
						{
							bulunan3 = strstr(list1,kisi[i]);
							if(!bulunan3)
							{
							strcat (list1,kisi[i]);
							strcat (list1,&quot;,&quot;);
							}
						}
					}
					else
					//eğer söyleyen kişi herhangi bi listede yoksa
					//söylediği kişiler içinde herhangi bi listede olan varsa
					//ona göre söyleyen kişi fişlenecek
					{
						bulunan = strstr(list1,kisi[i]);
						bulunan2 = strstr(list2,kisi[i]);
							if (bulunan || bulunan2)
							{
								if(bulunan)
								{
									strcat (list2,name[k]);
									strcat (list2,&quot;,&quot;);
								}
								else if (bulunan2)
								{
									strcat (list1,name[k]);
									strcat (list1,&quot;,&quot;);
								}
								//söyleyeni listeye yazdığımıza göre
								//bu kişiden önceki tüm söylediği kişileri
								//gerekli listeye yazalım
								//tabi bu söylenen kişi ilk kişi değilse
								if(i!=0)
								for(j=0;j&lt;=i-1;j++)
								{
										if(bulunan)
										{
											strcat (list1,kisi[j]);
											strcat (list1,&quot;,&quot;);
										}
										else if (bulunan2)
										{
											strcat (list2,kisi[j]);
											strcat (list2,&quot;,&quot;);
										}
								}
							}
					}
				}//dananın kuyruğu bitiş
			}
		}

	}
	unsigned int l;
	int list1sayi = 0,list2sayi=0;

	for (l=0;l&lt;= strlen(list1);l++)
	{
	if (list1[l] == ',')
	list1sayi++;
	}

	for (l=0;l&lt;= strlen(list2) ;l++)
	{
	if (list2[l] == ',')
	list2sayi++;
	}

	cout&lt;&lt;endl;

	if (list1sayi == 0 &amp;&amp; list2sayi == 0)
	cout&lt;&lt;n&lt;&lt;&quot; 0&quot;;
	else if (list1sayi&gt;list2sayi)
	cout&lt;&lt;list1sayi-1&lt;&lt;&quot; &quot;&lt;&lt;list2sayi-1;
	else if (list2sayi&gt;=list1sayi)
	cout&lt;&lt;list2sayi-1&lt;&lt;&quot; &quot;&lt;&lt;list1sayi-1;

	cout&lt;&lt;endl&lt;&lt;endl;
	return 0;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2010/11/28/tbdgenc-algoritma-sorusu-8-yalancilar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++ ile Dönem sonu ortalama hesabı</title>
		<link>http://www.guvenatbakan.net/2009/11/11/c-ile-donem-sonu-ortalama-hesabi/</link>
		<comments>http://www.guvenatbakan.net/2009/11/11/c-ile-donem-sonu-ortalama-hesabi/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 18:36:13 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[eskişehir]]></category>
		<category><![CDATA[esogu]]></category>
		<category><![CDATA[esogu.net]]></category>
		<category><![CDATA[ogu]]></category>
		<category><![CDATA[ortalama]]></category>
		<category><![CDATA[osman gazi]]></category>
		<category><![CDATA[osman gazi üniversitesi]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=262</guid>
		<description><![CDATA[Merhabalar,
c++ ile dönem sonu ortalama hesabı yapan program yazdım. Kaynak kodları aşağıdadır. Bu sistem Eskişehir Osmangazi Üniversitesi için geçerlidir. Ayrıca 8lik harf sistemini kullanan okullar için de geçerlidir.
Her ne kadar basit bir yazılım olsa da c++ öğrenmeye yeni başlayanlar için  [...]]]></description>
			<content:encoded><![CDATA[<p>Merhabalar,</p>
<p>c++ ile dönem sonu ortalama hesabı yapan program yazdım. Kaynak kodları aşağıdadır. Bu sistem Eskişehir Osmangazi Üniversitesi için geçerlidir. Ayrıca 8lik harf sistemini kullanan okullar için de geçerlidir.</p>
<p>Her ne kadar basit bir yazılım olsa da c++ öğrenmeye yeni başlayanlar için önemli bir kaynak olabilir. Birden fazla özelliği barındırıyor.<span id="more-262"></span></p>
<blockquote><p>#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>void main()<br />
{<br />
cout&lt;&lt;&#8221;Ders sayisini girin:&#8221;; //kullanıcıya kaç tane dersin hesaplanacağını girmesi için ekrana bilgi yazdırıyoruz.<br />
int derssayi; //derssayısını tanımladık<br />
cin&gt;&gt;derssayi; //kullanıcıya girdirtiyoruz</p>
<p>int i,toplam=0,kreditop=0;//döngü için i değişkenini tanımladık. ayrıca döngüde kullanılacak olan krediyle çarpılmış genel not toplamını ve ortalamayı bulabilmemiz için gerekli olan toplam kredi sayısının değişkenlerini tanımladık.<br />
for(i=1;i&lt;=derssayi;i++)//döngü başlıyo.<br />
{<br />
double not;<br />
cout&lt;&lt;i&lt;&lt;&#8221;. dersin notunu girin:&#8221;&lt;&lt;endl;//kullanıcıya ders notunu girmesini söylüyoruz<br />
cout&lt;&lt;&#8221;(Dikkat: Notunuza karsilik gelen sayiyi girin)&#8221;&lt;&lt;endl;//bilgi ekrani<br />
cout&lt;&lt;&#8221;(AA  BA   BB  CB   CC DC   DD FF)&#8221;&lt;&lt;endl;//bilgi ekranı<br />
cout&lt;&lt;&#8221;(4   3.5  3   2.5  2  1.5  1   0)&#8221;&lt;&lt;endl;//bilgi ekranı<br />
cin&gt;&gt;not;</p>
<p>int kredi;<br />
cout&lt;&lt;i&lt;&lt;&#8221;. dersin kredisini girin:&#8221;;//dersin kac kredi oldugunu soruyoruz<br />
cin&gt;&gt;kredi;//oda bize soyluyor</p>
<p>toplam+= kredi*not;//genel not toplamını topla-aktar yöntemiyle topluyoruz<br />
kreditop += kredi;//kredi toplamını topla-aktar yontemiyle topluyoruz<br />
}<br />
double sonuc;//sonucumuz ondalıklı çıkabileceği için double aldık.<br />
sonuc = toplam/kreditop;//ortalamayı hesaplıyoruz<br />
cout&lt;&lt;&#8221;\n\nGenel Toplam: &#8220;&lt;&lt;toplam&lt;&lt;endl;<br />
cout&lt;&lt;&#8221;Ortalamaniz: &#8220;&lt;&lt;sonuc&lt;&lt;endl&lt;&lt;endl;</p>
<p>if (sonuc&lt;1.8)<br />
cout&lt;&lt;&#8221;Ortalamayi gecmek icin yaz okuluna bi ugramalisin&#8221;&lt;&lt;endl&lt;&lt;endl;<br />
else if (sonuc&gt;1.8 &amp;&amp; sonuc&lt;2.0)<br />
cout&lt;&lt;&#8221;Ortalamayi gectin ancak DC ve DD li notlarini yaz okulunda vermelisin. Veya seneye alirsin.&#8221;&lt;&lt;endl&lt;&lt;endl;<br />
else if (sonuc&gt;2.0)<br />
cout&lt;&lt;&#8221;Ortalamayi gectin Bravo! Bunun yani sira varsa DC ve DD li notlarinda temizlendi. Hayirli olsun <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#8221;&lt;&lt;endl&lt;&lt;endl;<br />
}</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2009/11/11/c-ile-donem-sonu-ortalama-hesabi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

