<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
 <META http-equiv="Content-Type" content="text/html; charset=iso-8859-9">
 <META NAME="GENERATOR" CONTENT="lfparser_2.46">
 <META NAME="LFCATEGORY" CONTENT="SoftwareDevelopment">
 <link rel="icon" href="../../common/images/lf-16.png" type="image/png">
 <TITLE>lf338, SoftwareDevelopment: �al��an Bir ��lem ile Konu�mak</TITLE>
<style type="text/css">
<!--
 td.top {font-family: Arial,Geneva,Verdana,Helvetica,sans-serif; font-size:12 }
 pre { font-family:monospace,Courier }
 pre.code { font-family:monospace,Courier;background-color:#aedbe8; }
 p.cl { color:#EE9500 }
 a.nodec { text-decoration:none }
 p.trans { font-size:8pt; text-align:right }
 p.clbox { width:50%; alignment:center; background-color:#FFD700; 
           border-style:none; border-width:medium; border-color:#FFD700; 
           padding:0.5cm;  text-align:center }
 p.code { width:80%; alignment:center; background-color:#aedbe8; 
          border-style:none; border-width:medium; border-color:#aedbe8; 
          padding:0.1cm;  text-align:left }
 p.foot { background-color:#AAAAAA; color:#FFFFFF; border-style:none; 
          border-width:medium; border-color:#AAAAAA; padding:0.5cm ; 
          margin-top:0.1cm; margin-right:1cm; margin-left:1cm; 
          text-align:center }
 .mark  { background-color:#e6e6ff }
-->
</style>
 
</HEAD>
<BODY bgcolor="#ffffff" text="#000000">
 <!-- this is generated html code. NEVER use this file for your
 translation work. Instead get the file with the same article number
 and .meta.shtml in its name. Translate this meta file and then
 use lfparser program to generate the final article -->
 <!-- lfparser can be obtained from http://main.linuxfocus.org/~guido/dev/lfparser.html -->

<!-- this is used by a number of tools:
 =LF=AUTHOR: Bob Smith 
 =LF=CAT___: SoftwareDevelopment
 =LF=TITLE_: �al��an Bir ��lem ile Konu�mak
 =LF=NUMBER: 338
 =LF=ANAME_: article338.shtml
 -->

<!-- 2pdaIgnoreStart -->

<!-- start navegation bar, style=2 -->
 <!-- top navegation bar -->
 <TABLE summary="topbar_1" cellspacing="0" cellpadding="0" border="0" align="center" width="90%">
   <TR bgcolor="#2e2292">
     <TD class="top"><TABLE summary="topbar_1_logo" cellspacing="0" cellpadding="0" border="0" width=
       "100%">
         <TR><TD width="319"><IMG src="../../common/images/logolftop_319x45.gif"
           alt="[LinuxFocus-icon]" width="319" height="45" align="left" 
           border="0"></TD>

           <TD class="top">
             <TABLE summary="topbar_1_links" width="100%">
               <TR align="right">
                 <TD class="top">
                 <A class="nodec" href="index.shtml"><FONT color=
                 "#DDDDDD" size="2">&lt;--</FONT></A> &nbsp;| 
                 <A class="nodec" href="../index.shtml"><FONT color=
                 "#DDDDDD" size="2">Ana Sayfa</FONT></A> &nbsp;| 
                 <A class="nodec" href="../map.html"><FONT color=
                 "#DDDDDD" size="2">Eri�imd�zeni</FONT></A> &nbsp;| 
                 <A class="nodec" href="../indice.html"><FONT color=
                 "#DDDDDD" size="2">��indekiler</FONT></A> &nbsp;| 
                 <A class="nodec" href="../Search/index.shtml"><FONT color=
                 "#DDDDDD" size="2">Arama</FONT></A> </TD>
               </TR>

               <TR align="right">
                 <TD class="top">
                   <HR width="100%" noshade size="1">
                 </TD>
               </TR>
             </TABLE>
           </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end top navegation bar -->
 <!-- blue bar -->
 <TABLE summary="topbar_2" cellspacing="0" cellpadding="0" border="0" align="center"
 width="90%">
   <TR bgcolor="#00ffff">
     <TD><IMG src="../../common/images/transpix.gif" width="1" height=
     "2" alt=""></TD>
   </TR>
 </TABLE>
 <!-- end blue bar -->
 <!-- bottom navegation bar -->
 <TABLE summary="topbar_3" cellspacing="0" cellpadding="0" border="0" align="center"
 width="94%">
   <TR bgcolor="#000000">
     <TD>
       <TABLE summary="topbar_3_links" cellspacing="0" cellpadding="1" border="0" width=
       "100%">
         <TR align="center">
           <TD WIDTH="20%"><A class="nodec" href="../News/index.html"><FONT color=
           "#FFFFFF">Duyumlar</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../Archives/"><FONT color=
           "#FFFFFF">Belgelikler</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../Links/index.html"><FONT color=
           "#FFFFFF">Ba�lant�lar</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../aboutus.html"><FONT color=
           "#FFFFFF">LF Nedir</FONT></A> </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end bottom navegation bar -->
<!-- stop navegation bar -->

<!-- SSI_INFO -->

<!-- tr_staticssi include virtual -->
<!-- tr_staticssi exec cmd -->
<!-- addedByLfdynahead ver 1.5 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">Bu makalenin farkl� dillerde bulundu�u adresler: <A href="../../English/May2004/article338.shtml">English</a> &nbsp;<A href="../../Deutsch/May2004/article338.shtml">Deutsch</a> &nbsp;<A href="../../Francais/May2004/article338.shtml">Francais</a> &nbsp;<A href="../../Nederlands/May2004/article338.shtml">Nederlands</a> &nbsp;<A href="../../Russian/May2004/article338.shtml">Russian</a> &nbsp;<A href="../../Turkce/May2004/article338.shtml">Turkce</a> &nbsp;</FONT></TD></TR></TABLE><br>
 


<!-- SSI_INFO STOP -->
<!-- 2pdaIgnoreStop -->

<!-- SHORT BIO ABOUT THE AUTHOR -->
<TABLE ALIGN=LEFT BORDER=0  WIDTH="190" summary="about the author">
<TR>
<TD>

<img src="../../common/images/article300/BobSmith2.jpg"
 alt="[Photo of the Author]">
<BR>   Bob Smith  <br> <small>&lt;bob/at/linuxtoys.org&gt;</small>
<BR><BR>
<I>Yazar hakk�nda:</I><BR>
<!-- aboutauthor_start -->
<p>
Bob, Linux programc�s�d�r ve hobisi elektroniktir. Onun en son projelerini <a href="http://www.runtimeaccess.com">www.runtimeaccess.com</a>'dan ve www.linuxtoys.org ana sayfas�ndan ��renebilirsiniz.</p>
<!-- aboutauthor_stop -->
<!-- TRANSLATED TO tr -->
<BR><BR><I>T�rk�e'ye �eviri:</I><BR>
�zcan G�ng�r <small>&lt;ozcangungor(at)netscape.net&gt;</small>
<br>
<!--
 =LF=TRANSTO=tr: �zcan G�ng�r
-->
<!-- TRANSLATED TO STOP -->
<BR><i>��erik</i>:
<UL>
  <LI><A HREF="#338lfindex0">10 Saniyelik Genel Bak��</A></LI>
  <LI><A HREF="#338lfindex1">Bir�ok Kullan�c� Aray�z� - Tek Hizmet</A></LI>
  <LI><A HREF="#338lfindex2">Bir Veritaban� Aray�z�</A></LI>
  <LI><A HREF="#338lfindex3">Tablolar� Tan�mlama</A></LI>
  <LI><A HREF="#338lfindex4">Tablo Edit�r�</A></LI>
  <LI><A HREF="#338lfindex5">�ki Komut</A></LI>
  <LI><A HREF="#338lfindex6">�ndirme ve Kurma</A></LI>
  <LI><A HREF="#338lfindex7">�AE'nin Avantajlar�</A></LI>
  <LI><A HREF="#338lfindex8">�zet</A></LI>
  <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=338">Bu yaz� i�in g�r�� bildiriminde bulunabilirsiniz</A></LI>
</UL>

</TD></TR></TABLE>
<!-- HEAD OF THE ARTICLE -->
<br>&nbsp;
<table border="0"><tr><td>
<H2>�al��an Bir ��lem ile Konu�mak</H2>
 <img src="../../common/images2/article338/top_image.gif" alt="Run Time Access" hspace="10">
<!-- ABSTRACT OF THE ARTICLE -->
<P><i>�zet</i>:
<P>
<!-- articleabstract_start -->

�al��ma An�nda Eri�im(Run Time Access), program�n�zdaki veri yap�lar�n� PostgreSQL'de tablolar olarak ya da sanal dosya sisteminde (/proc benzeri) bir dosya olarak alman�z� sa�layan k�t�phanedir. �AE kullanarak artalan s�recinize (daemon) ya da hizmetinize �e�itli y�netim aray�zleri ekleyebilirsiniz. �rne�in web, kabuk, SNP ya da �er�eve belle�i.


<!-- articleabstract_stop -->

<br><!-- HR divider --><center><font color="#8282e0"><b>_________________ _________________ _________________</b></font></center><br>
</td></tr></table>
<!-- BODY OF THE ARTICLE -->



<A NAME="338lfindex0">&nbsp;</A>
<H2>10 Saniyelik Genel Bak��</H2>

<p>Yap� katarlar�nda verilerinizin oldu�u bir program�n�z olsun. Yap� ve katar �u �ekilde tan�mlanm��t�r:
<table border=0><tr><td>
<pre class="code">struct mydata {
    char   note[20];
    int    count;
}

struct mydata mytable[] = {
  { &quot;Lable note&quot;, 100 },
  { &quot;Music note&quot;, 200 },
  { &quot;No note&quot;, 300 },
};
</pre></td></tr></table></p>
<p>
E�er program�n�z� �AE ile yazarsan�z, program�n�z�n i� verilerini sanki PostgreSQL veritaban�ndaym�� gibi komut sat�r�ndan ya da ba�ka bir programdan de�i�tirebilir ve inceleyebilirsiniz. A�a��daki �rnek, progarm�n�zdaki verileri Bash ve psql (PostgreSQL komut sat�r� arac�) ile nas�l okuabilece�inizi ve de�i�tirebilece�iniz g�sterir:

<pre># myprogram  &amp;

# psql -c &quot;UPDATE mytable SET note = &#39;A note&#39; LIMIT 1&quot;
UPDATE 1

# psql -c &quot;SELECT * FROM mytable&quot;
   note     | count
------------+-------
 A note     | 100
 Music note | 200
 No note    | 300

#
</pre></p>
<p>
Bu makale, �AE gibi bir �eye neden gereksinim duyuldu�unu, RTA k�t�phanesinin nas�l kullan�laca��n� ve �AE kullanarak ne gibi avantajlar sa�lanaca��n� a��klayacakt�r.
</p>
<p>&nbsp;</p>

<A NAME="338lfindex1">&nbsp;</A>
<H2>Bir�ok Kullan�c� Aray�z� - Tek Hizmet</H2>

<p>
Var olagelen UNIX, bir hizmet ile ayar verilerini /etc/hizmet.conf dosyas�na koyarak ileti�irdi ve hizmetin olu�turdu�u ��k�� /var/log/hizmet.log dosyas�na yaz�l�rd�. Bu kabul edilmi� yakla��m, cihazlar �zerinde �al��an ve e�itimsiz sistem y�neticileri taraf�nda ayarlanan g�n�m�z hizmetleri i�in b�y�k olas�l�kla yanl��t�r. Bu var olagelen yakla��m i�e yaram�yor ��nk� art�k �e�itli, ayn� anda �al��an kullan�c� aray�zleri istiyoruz ve her aray�z�n hizmet ile ayalar�, durumu ve istatistikleri, hizmet �al���rken de�i�tirebilmesini istiyoruz. Gereken �ey, �al��ma an�nda eri�im.
</p>
<p>
Yeni hizmetler, �ok �e�itli kullan�c� aray�zlerine gereksinim duyuyorlar ve biz geli�tiriciler, en �ok hangi aray�ze gereksinim duyulaca��n� �nceden kestiremeyebiliriz. Yapmam�z gereken, ortak protokolleri kullanarak, kullan�c� aray�zlerini hizmetten ay�rmal�y�z ve ortak protokolleri kullanarak aray�zleri olu�turmal�y�z. Gereksinim duyuldu�unda yeni aray�z eklemek b�ylece daha kolay olur ve ay�rma testleri kolayla�t�r�r ��nk� her par�a ayr� ayr� test edilebilir. �una benzer bir yap� istiyoruz:
</p>
<center>
<img src="../../common/images2/article338/many_ui.gif" alt="Tek hizmet -- �ok aray�z"
 hspace="10" >
</center>
<p>
Aray�z �e�itleri �unlar olabilir: web, komut sat�r�, �er�eve belle�i, SNMP, tu�tak�m� ve LCD, LDAP, do�al Windows ve di�er iste�e ba�l� aray�zler. A��k�a b�t�n kullan�c� aray�zlerine tek ortak API ve protokol iyi olurdu ama hangi �e�it API ve protokol?
</p>
<p>&nbsp;</p>

<A NAME="338lfindex2">&nbsp;</A>
<H2>Bir Veritaban� Aray�z�</H2>

<p>
�AE, ortak API ve protokol olarak PostgreSQL'i kullanmay� se�mi�tir. Ayarlama, durum ve istatistikler, API �zerinde PostgreSQL veritaban�ndaki tablolar olarak g�r�nen yap� dizilerine konur. Kullan�c� aray�z� programlar�, bir PostgreSQL veritaban�na ba�lanan istemciler olarak yaz�l�r. Bu yakla��m�n iki b�y�k faydas� vard�r:
</p><ul>
<li>Kullan�c� aray�z� istemcileri, iyi bilinen, iyi dok�mana sahip ve hatalardan iyi ay�klanm�� API kullan�r. PostgreSQL kullanarak, geli�tirme zaman� azal�r. Ayr�ca, PostreSQL C, Java, PHP, Perl ve hemen hemen di�er b�t�n pop�ler diller i�in ba�lant�ya sahiptir. B�ylece kullan�c� aray�z� yazarken, i� i�in uygun dili se�ebilirsiniz.
</li><li><i>veriataban�ndaki tablolar</i> paradigmas�, bir hizmet sa�layan program� nas�l yazd���m�zla birebir kar�� gelir. Veri yap�lar�na kar�� gelen <i>sat�rlar</i> ve diziler ya da ba�l� listelere kar�� gelen <i>tablolar</i>.
</li></ul>
<p></p>
<p>
�AE k�t�phanesi, dizileri, ba�l� listeleri ya da veri yap�lar�n� PostgreSQL istemcilerine ba�layan bir yap��t�r�c�d�r. �AE kullanan uygulaman�n mimarisi �una benzer...
</p>

<center>
<img src="../../common/images2/article338/app_arch.gif" alt="�AE Uygulama Mimarisi"
 hspace="10" >
</center>

<p>
Bunu <i>y�netim aray�z�</i> olarak adland�r�yoruz ��nk� durumu, istatistikleri ve ayarlar� g�stemesi beklenmektedir. Sadece bir aray�z�n g�r�mesine ra�men, daha �ok aray�z�n olabilece�ini unutmay�n ve hepsi ayn� anda uygulamaya eri�ebilir.
</p>
<p>
PostgreSQL, ula��m protkol� olarak TCP'yi kullan�r. Uygulaman�z bir TCP portuna ba�lanabilmeli ve �e�itli kullan�c� aray�zlerinden ba�lant�lar� kabul edebilmelidir. Kabul edilmi� bir ba�lant�dan gelen b�t�n baytlar dbcommand() ile �AE'ye aktar�l�r. Bir istemciye d�necek olan veriler, dbcommand()'dan d�nen bir  tampondad�r.
</p>
<p>
�AE, hangi tablolar�n kullan�labilir oldu�unu nereden biliyor? Bunu s�ylemek zorundas�n�z.
</p>
<p>&nbsp;</p>


<A NAME="338lfindex3">&nbsp;</A>
<H2>Tablolar� Tan�mlama</H2>

<p>
�AE'ye veri yap�lar� olan tablolar�n�z hakk�nda rta_add_table() fonksiyonu ile bilgi verirsiniz. TBLDEF veri yap�s�, bir tablo tasvir eder ve COLDEF yap�s�, bir s�tun tasvir eder. A�a��da �AE'ye nas�l bir tablo ekleyece�inizi g�sterir:
</p>
<p>
Uzunlu�u 20 karakter olan bir katara sahip bir veri yap�s�na sahipsiniz ve bu yap�da olan 5 tabloyu d�� ortama ta��mak istiyorunuz.Yap�y� ve tabloyu �u �ekilde tan�mlars�n�z:
<br>
<pre class="code">    struct myrow {
        char    note [20];
        int     count;
    };

    struct myrow mytable[5];
</pre>
</p>
<p>
<tt>myrow</tt> veri yap�s�ndaki her alan, veri taban� tablosundaki bir s�tundur. �AE'ye, s�tunun ismini, hangi tablo i�inde oldu�unu, veri tipini, sat�r�n ba�lang�c�n� refarans alarak yerini, salt-okunur olup olmad���n� bildirmeliyiz. Bir de s�tun yaz�ld�ktan sonra ve/ve ya okunmadan �nce �a�r�lacak olan <tt>geri�a��r�m</tt> rutinini eklemeliyiz. Bizim �rne�imizde, <tt>count</tt> salt-okunurdur ve <tt>do_note()</tt> fonksiyonu, <tt>note</tt> s�tununa her yazma i�lemi oldu�unda �a�r�l�yor. TBLDEF'e eklenmi� olan COLDEF dizisini olu�turduk. Her yap� �yesine bir COLDEF kar��lk gelir.

</p><pre class="code">    COLDEF mycols[] = {
        {
            &quot;atable&quot;,          // SQL'deki tablo ad�
            &quot;note&quot;,            // SQL'deki s�tun ad�
            RTA_STR,           // s�tun/alan i�in veri tipi
            20,                // s�tunun byte olarak geni�li�i
            0,                 // sat�r�n ba�lang��tan uzakl���
            0,                 // boolean bayraklar� i�in bit olarak OR
            (void (*)()) 0,    // okuma'dan �nce �a�r�l�r
            do_note(),         // yazma'dan sonra �a�r�l�r
            &quot;S�tun tan�mlamas�n�n son alan�, s�tunu tan�mlayan bir katar�d�r.&quot;
            &quot;Burada isterseniz s�tundaki verinin ne oldu�unu ve tipini a��klayabilirsiniz.&quot;},
        {
            &quot;atable&quot;,          // SQL'deki tablo ad�
            &quot;count&quot;,           // SQL'deki s�tun ad�
            RTA_INT,           // s�tun/alan i�in veri tipi
            sizeof(int),       // s�tunun byte olarak geni�li�i
            offsetof(myrow, count),  // sat�r�n ba�lang��tan uzakl���
            RTA_READONLY,      // boolean bayraklar� i�in bit olarak OR
            (void (*)()) 0,    // okuma'dan �nce �a�r�l�r
            (void (*)()) 0,    // yazma'dan sonra �a�r�l�r
            &quot;E�er tablolar�n�z, kullan�c� aray�z� ile hizmet aras�nda bir aray�z ise  &quot;
            &quot;s�tun ve tablo tan�mlamalar�n�z projrniz i�in i�levsel bir �zellik olur ve geli�tiriciler i�in en iyi dok�mantasyondur.
    };
</pre>
<p>
Yazma geri�a��r�mlar�, uygulaman�z� s�ren ger�ek motorlar olabilirler. Bir tablo de�i�ikli�inin ba�ka bir de�i�ikli�i ya da uygulaman�z�n yeniden ayarlanmas�n� tetiklemesini isteyebilirsiniz.
</p>
<p>

�AE'yi tablo ismini, her sat�r�n uzunlu�unu, s�tunlar� tan�tan COLDEFS dizisini, s�tun say�s�n�, e�er baz� s�tunlar�n kaybolmas�n� istemiyorsan�z s�tunun kaydedilece�i dosyay� ve tabloyu tan�tan bir katar� vererek tablo hakk�nda bilgilendirirsiniz. E�er tablo yap�lar�n dura�an bir dizisi ise ba�lama adresini ve sat�r say�s�n� vermelisiniz. E�er tablo ba�l� listeler �eklinde uygulan�yorsa �AE'ye bir sat�rdan di�erine ge�meye yard�mc� olacak fonksiyonu vermelisiniz.

</p><pre class="code">TBLDEF   mytableDef = {
      &quot;atable&quot;,                 // tablo ismi
      mytable,                  // tablonun adresi
      sizeof(myrow),            // her sat�r�n uzunlu�u
      5,                        // sat�r say�s�
      (void *) NULL,            // iterasyon fonksiyonu
      (void *) NULL,            // iterasyon geri�e��r�m verisi
      mycols,                   // s�tun tan�m�
      sizeof(mycols / sizeof(COLDEF), // # s�tunlar
      &quot;&quot;,                       // kay�t dosyas�
      &quot;Tablonun tam bir tan�t�m�.&quot;
};
</pre>
<p>
Normal olarak, SQL taraf�ndan g�r�nen tablo ismi ile programda kullan�lan tablo isminin ayn� olmas�n� istersiniz. �rnekte, <tt>mytable</tt> <tt>atable</tt> olarak, tablo isimlerinin ayn� olmak zorunda olmad�klar�n� g�sterebilmek i�in de�i�tirildi.
</p>
<p>
�imdi �AE'ye kendi tablonuzu tan�tabilirsiniz.
</p><pre class="code">    rta_add_table(&amp;mytableDef);
</pre>
<p>
Hepsi bu. �AE'yi kullanabilmek i�in, iki veri yap�s�n� (COLDEF ve TBLDEF) ve iki fonksiyonu (dbcommand() ve rta_add_table()) nas�l kullanaca��n�z� ��renmelisiniz.
</p>
<p>
Yukar�daki kod, �AE'nin nas�l �al��t���n� g�sterebilmek amac�yla verilmi�tir. Tam bir bilgi kayna�� veya tamamen �al��am bir �rnek olarak verilmemi�tir. �AE API'si ile ilgili tamamen �al��an �rnek ve tam a��klamalar, �AE <a
href="http://www.runtimeaccess.com">ana sayfas�ndad�r</a>.
</p>
<p>
Kendi uygulaman�zda kullana��n�z tablolar� tan�mlad�ysan�z, �AE, kendi i� tablolar�n� tan�mlam��t�r. Bunlardan en ilgin� olanlar�, listelenecek tablolar ve tan�mlad���n�z tablolar� tan�tan rta_tables ve tra_columns tablolar�d�r. Bunlara genellikle <tt>sistem tablolar�</tt> denir. Sistem tablolar�,<tt>ls</tt> bir dosya sistemi i�in ne yap�yorsa, <tt>getnext</tt> SNMP i�in ne yap�yorsa,  bir veritaban� i�in onu yapar.
</p>
<p>&nbsp;</p>


<A NAME="338lfindex4">&nbsp;</A>
<H2>Tablo Edit�r�</H2>

<p>
�AE ile birlikte gelen programlamlardan biri k���k bir PHP program�d�r. Bu program ile sistem tablolar�n� web taray�c�s� ile ekranda g�rebilirisiniz. Tablo adlar� k�pr�lenmi�tir ve bir tablo ad� t�kland���nda o tablonun ilk 20 sat�r� g�r�lebilir. E�er sat�r de�i�tirilebilir ise o sat�r t�klanarak d�zenleme penceresi yard�m�yla bilgi de�i�tirilebilir. Bunlar�n hepsi sistem tablolar�ndaki tablo ve s�tun bilgileri yard�m�yla olmaktad�r. Veri ak��� a�a��da g�sterilmi�tir.
</p>

<img src="../../common/images2/article338/tbl_edit.gif" alt="Generic Table Editor" hspace="10"
 >

<p>
�AE �rnek uygulamas� i�in tablo d�zenleyecisinin en �st seviye g�r�nt�s� a�a��dad�r.
</p>

<table cellpadding="8" align="center" width="95%">
<tbody><tr><td>
<center><h4>�AE Tablo D�zenleyici</h4></center>
<table border="3" cellpadding="4" align="center" width="95%" style="font-size: smaller;">
<tbody><tr><th>Tablo Ad�</th><th>A��klama</th></tr>
<tr>
<td><a href="http://www.runtimeaccess.com/rta_view.php?table=rta_tables&amp;offset=0&amp;nrows=7">rta_tables</a></td>
<td>Sistemdeki t�m tablolar�n tablosu. Bu asl�nda ger�ekte olmayan(pseudo) bir tablodur ve di�er tablolar gibi yap�lar dizisi de�ildir.</td></tr>
<tr>
<td><a href="http://www.runtimeaccess.com/rta_view.php?table=rta_columns&amp;offset=0&amp;nrows=54">rta_columns</a></td>
<td>B�t�n tablolardaki b�t�n s�tunlar�n b�t�n �zelliklerini de i�eren tablodur.</td></tr>
<tr>
<td><a href="http://www.runtimeaccess.com/rta_view.php?table=pg_user&amp;offset=0&amp;nrows=1">pg_user</a></td>
<td>Postgres kullan�c�lar�n�n tablosu. Bu tabloyu, WHERE c�mleci�i i�indeki her kullan�c� ismini ger�ek ve s�per kullan�c�, createDB, trace ya da catupd haklar�na sahip de�ilmi� gibi g�stertmek i�in kullan�r�z.</td></tr>
<tr>
<td><a href="http://www.runtimeaccess.com/rta_view.php?table=rta_dbg&amp;offset=0&amp;nrows=1">rta_dbg</a></td>
<td>�evrimi�i olmay� ayarlama ya da hata ay�klama. &#39;target&#39 alan�ndaki bir geri�a��r�m fonksiyonu, syslog()'u kapat�r ve tekrar a�ar. Bu tablodaki hi�bir de�er diske yaz�lmaz. E�er belirlenmi� varsay�lan de�erleri istemiyorsan�z, �AE'nin kodunu de�i�tirmelisiniz ya da SQL_string() yaparak program� ba�latt���n�zda de�erleri verebilirsiniz.</td></tr>
<tr>
<td><a href="http://www.runtimeaccess.com/rta_view.php?table=rta_stat&amp;offset=0&amp;nrows=1">rta_stat</a></td>
<td>�AE paketinin kullan�m� ve hata say�s�</td></tr>
<tr>
<td><a href="http://www.runtimeaccess.com/rta_view.php?table=mytable&amp;offset=0&amp;nrows=20">mytable</a></td>
<td>�rnek bir uygulama tablosu</td></tr>
<tr>
<td><a href="http://www.runtimeaccess.com/rta_view.php?table=UIConns&amp;offset=0&amp;nrows=20">UIConns</a></td>
<td>Bir kullan�c� aray�z�nde yap�lm�� TCP ba�lant�s� hakk�nda bilgi</td></tr>
</tbody></table>
</td></tr></tbody></table>




<p>
E�er bu makaledeki her�ey do�ru gittiyse, yukar�da verilen tablo isimleri, Santa Clara'daki �AE' ewb sunusu �zeinde �al��an k�pr�ler olarak g�nmelidir. Takip edilecek en iyi k�pr� <tt>mytable</tt> k�pr�s�d�r.
</p>
<p>&nbsp;</p>


<A NAME="338lfindex5">&nbsp;</A>
<H2>�ki Komut</H2>

<p>
�AE, PostgreSQL istemci k�t�phanesiyle (libpq) yaz�lm�� kullan�c� aray�z� ya da y�netim programlar�n�, sizin uygulamalar�n�za ya da artalan programlar�n�za ba�layan bir k�t�phanedir. �AE, bir aray�zd�r, veritaban� de�il. Sadece, SELECT ve UPDATE SQL komutlar�na gereksinimi vard�r.
</p>
<p>

SELECT ifadesi i�in gerekli yaz�m �ekli:<br>

<pre>  SELECT column_list FROM table [where_clause] [limit_clause]
</pre>

</p>
<p>
column_list, virg�lle ayr�lm�� s�tun isimleri listesidir. where_clause, AND ile ayr�lm�� kar��la�t�rma listesidir. Kar��la�t�rma i�aretleri =, |=, &gt;=, &lt;=, &gt;, ve &lt;. limit_clause, <tt>[LIMIT i] [OFFSET j]</tt> �eklindedir. <tt>i</tt>, geri d�nd�relecek maksimum sat�r say�s�d�r ve <tt>j</tt> kadar sat�r� g�stermeden atlar�z. Yaz�m� anlamak i�in birka� �renek verelim:
</p><pre class="code">  SELECT * FROM rta_tables

  SELECT notes, count FROM atable WHERE count &gt; 0

  SELECT count FROM atable WHERE count &gt; 0 AND notes = &quot;Hi Mom!&quot;

  SELECT count FROM atable LIMIT 1 OFFSET 3
</pre>
<p>
LIMIT'i 1 yapma ve belirli bir sat�r� alabilmek i�in OFFSET belirleme. En son �rnek C'deki <tt>(mytable[3].count)</tt> ifadeye benzer.
</p>
<p>

UPDATE ifadesinin yaz�m�: <br>
<pre>UPDATE table SET update_list [where_clause] [limit_clause]
</pre>
<br>
where_clause ve limi_clause, yukar�da anlat�ld�. update_list, s�tun atamalar�n�n virg�lle ayr�lm�� listesidir. Tekrar, �rnekler yard�mc� olacakt�r:
</p>
<pre class="code">  UPDATE atable SET notes = &quot;Not in use&quot; WHERE count = 0

  UPDATE rta_dbg SET trace = 1

  UPDATE ethers SET mask = &quot;255.255.255.0&quot;,
                    addr = &quot;192.168.1.10&quot;
                WHERE name = &quot;eth0&quot;
</pre>
<p>
�AE, �rneklerde hep b�y�k harf kullan�lmas�na ra�men, k���k/b�y�k harf ayr�m� yapmaz.
</p>
<p>&nbsp;</p>


<A NAME="338lfindex6">&nbsp;</A>
<H2>�ndirme ve Kurma</H2>

<p>
�AE'yi kendi anasayfas� <a href="http://www.runtimeaccess.com">www.runtimeaccess.com</a> (LGPL lisansl�d�r)'dan indirebilirsiniz. �AE'nin hangi s�r�m�n� indirece�inize dikkat edin. �AE'nin son s�r�m�, PostgreSQL'in 7.4 s�r�m� ile �al���r. �o�u Linux da��t�m� 7.3 s�r�m� ile birlikte gelir. Ba�lang�� i�in �AE'nin eski s�r�mlerini kullanabilece�iniz gibi iyile�tirilmi� ve hatalardan ar�nd�r�lm�� s�r�m� i�in en son s�r�m�n� kullanmal�s�n�z.
</p>
<p>
Paketi a�t���n�zda a�a��daki dizinlerin olu�mas� gerekir:
<pre>
 ./doc            # �AE ana sayfas�n�n bir kopyas�
  ./empd           # �AE ile olu�turulmu� bir prototip artalan s�reci
  ./src            # �AE k�t�phanesinin kaynak dosyalar�
  ./table_editor   # Tablo d�zenleyicinin PHP kayna��
  ./test           # �rnek bir uygulaman�n kayna��
  ./util           # �AE'yi yazarken kullan�lan yard�mc� programlar
</pre>

</p>
<p>
Graham Phillips'e te�kk�rler, �AE'nin 1.0 s�r�m� autoconf deste�ine sahiptir. Graham, �AE'yi Linux'tan Mac OS X'e, W,ndows'a ve FreeBSD'ye uyarlam��t�r. 1.0 s�r�m�n� kullanarak, �AE'yi s�radan komutlarla y�kleyebilirisiniz.
</p><pre class="code">  ./configure
  make
  make install      # ( root olarak)
</pre>
<p>
Y�kleme, librtadb.so ve ilgili dosyalar� /usr/local/lib sizinine koyar. �AE'yi kullanabilmek i�in bu dizini /etc/ld.so dosyas�na yazmal� ve ldconfig komutunu �al��t�rmal�s�n�z ya da dizini y�kleme yoluna �u �ekilde eklemelisiniz:
</p><pre class="code">  export LD_LIBRARY_PATH=/usr/local/lib
</pre>
<p>
Y�kleme, �AE ba�l�k dosyas�n�, rta.h, /usr/local/include dizinine koyar.
</p>
<p>

make, bir test program�n� <tt>test</tt> dizininde olu�turur ve y�klemenizi test etmek i�in test dizinine gidin ve <tt>./app &amp;</tt> komutunu �al��t�r�n. <tt>netstat -nat</tt> komutu size 8888 nolu portu dinleyen bir program oldu�unu s�yleyecektir. Art�k psql komutunu �al��t�rabilir ve SQL komutlar�n� test program� ile kullanabilirsiniz.
 </p><pre class="code">  cd test
  ./app &amp;

  psql -h localhost -p 8888
  Welcome to psql 7.4.1, the PostgreSQL interactive terminal.

  Type:  \copyright for distribution terms
         \h for help with SQL commands
         \? for help on internal slash commands
         \g or terminate with semicolon to execute query
         \q to quit

  # select name from rta_tables;
      name
  -------------
   rta_tables
   rta_columns
   rta_dbg
   rta_stat
   mytable
   UIConns
  (6 rows)
</pre>
<p>
Bir veritaban�na ba�l�ym��s�n�z gibi g�r�nmenize ra�men asl�nda ba�l� de�ilsiniz. Unutmay�n: Kullanabilece�iniz iki komut SELECT ve UPDATE'dir.
</p>
<p>&nbsp;</p>


<A NAME="338lfindex7">&nbsp;</A>
<H2>�AE'nin Avantajlar�</H2>

<p>
Kullan�c� aray�z� programlar�n� artalan s�recinden ay�rman�n avantaj�, geni� dizayn, kodlama, hata ay�klama ve yap�labilik kategorlerine girer.
</p>
<p>
Dizayn a��s�ndan bakarsak, bu ayr�m, aray�z�n nas�l g�sterilece�ini dert etmeden, dizayna en ba��nda karar vermeye zorlar. Tablolar�n dizayn�n� d���nme a�amas�, uygulaman�z�n ger�ek dizayn�n� d���nmeye zorlar. Tablolar, uygulaman�z�n i� i�levsel �zelliklerini �ekillendirir.
</p>
<p>
Kullan�c� aray�z� ve artalan s�re�lerinin ayr�m�, kullan�c� aray�z� uzmanlar�n� ve artalan uzmanlar�n� ayr� ayr� i�e alabilirsiniz ve bu ki�iler kodlar�n� ba��ms�z olarak yazarlar ve daha sonra bu kodlar pazarlama i�in hemen birle�tirilebilirler, demektir. PHP, Tcl/Tk, Perl ve C i�in Postgres ba�lant�lar� oldu�undan, i�iniz i�in uygun olan�n� se�ersiniz.</p>
<p>
Hata ay�klama daha kolay ve daha h�zl� olur ��nk� her iki taraf da di�erini kolayl�kla sim�le edebilir. �rne�in, aray�z m�hendisleri, porgramlar�n�, ayn� tablo izinlerine sahip ger�ek bir Postregs veritaban�yla �al��t�rabilirler. Artalan s�recini test etmek daha kolay ve daha eksizdir ��nk� bir aray�z�n yapt�klar�n� yapan betik yazmak kolayd�r. Ve bir test �al���rken, i� durumu ve istatistikleri kontrol etmek kolayd�r. Bir i� durumu ya da �art� zorlayabilmek, u� durumlar� test etmeye yard�mc� olur. Laboratuar ortam�nda b�yle durumlar� test etmek genelde zordur.</p>
<p>
�r�n�n�z�n yeteneklerini, �AE ile geni�letebilirsiniz. M��teriniz , program �al���rken, ayr�nt�l� durum raporunu ve istatikleri g�rebilmeyi ger�ekten taktir edecektir.

Kullan�c� aray�z� ile artalan program�n� ay�rmak, birden fazla aray�z�n�n olabilir, demektir: SNMP, comut sat�r�, web, LDAP vs. Bu esneklik, e�er m��teriniz iste�e ba�l� aray�zler isterse �ok �nemli olacakt�r.
</p>
<p>
�AE, bu tip bir paket i�inde olamas�n� isteyebilece�iniz bir �ok �zellik sunar:
</p><ul>
 <li> API veri modeli taraf�ndan yans�t�lan uygulama veri modeli</li>
 <li> Uygulamaya uzaktan eri�im </li>
 <li> Uygulama taraf�ndan standartlar�n ve varolan yaz�l�m�n kullan�m�</li>
 <li> ��renilecek birka� yeni protokol ve API</li>
 <li> Uygulama i�in ke�fetme mekanizmas�</li>
 <li> Uygulama �zerinde birka� k�s�tlama</li>
 <li> Kaynak k�s�tlamas�</li>
 <li> CPU ve belle�in etkin kullan�m�</li>
</ul>
<p>&nbsp;</p>


<A NAME="338lfindex8">&nbsp;</A>
<H2>�zet</H2>

<p>
Bu makalede �AE k�t�phanelerine ve yeteneklerine k�sa bir giri� yap�ld�. �AE anasayfas�, SSS ve API'nin tam bir tan�t�m�n� ve bir�ok �rnek istemci program�n� i�erir.
</p>
<p>
�AE sizin veri yap�lar�n�z� bir veritaban�nda tablolar olarak olarak g�sterebildi�i gibi, sanal dosya sistemindeki dosyalar olarak da g�sterebilir ( Miklos Szeredi'nin yazd��� Kullan�c� alan�nda Dosya Sistemi (FUSE) paketi). �AE anasayfas�, dosya sisteminin nas�l kullan�laca�� hakk�nda fazlas�yla bilgi i�ermektedir.
</p>




<!-- vim: set sw=2 ts=2 et tw=74: -->

<!-- 2pdaIgnoreStart -->
<A NAME="talkback">&nbsp;</a>
<h2>Bu yaz� i�in g�r�� bildiriminde bulunabilirsiniz</h2>
Her yaz� kendi g�r�� bildirim sayfas�na sahiptir. Bu sayfaya yorumlar�n�z� yazabilir ve di�er okuyucular�n yorumlar�na bakabilirsiniz.
<center>
<table border="0"  CELLSPACING="2" CELLPADDING="1" summary="tb-button-outerpart">
 <tr BGCOLOR="#C2C2C2"><td align=center>
  <table border="3"  CELLSPACING="2" CELLPADDING="1" summary="tb-button">
   <tr BGCOLOR="#C2C2C2"><td align=center>
    <A href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=338"><b>&nbsp;talkback page&nbsp;</b></a>
   </td></tr></table>
</td></tr></table>
</center>

<HR size="2" noshade>
<a style="background-color:#bdc6d5" href="index.shtml">&lt;--, Bu say�n�n ana sayfas�na gider </a><br><HR size="2" noshade>
<!-- ARTICLE FOOT -->
<CENTER><TABLE WIDTH="98%" summary="footer">
<TR><TD ALIGN=CENTER BGCOLOR="#bdc6d5" WIDTH="50%">
<A HREF="../../common/lfteam.html">G�rsely�re sayfalar�n�n bak�m�, LinuxFocus Edit�rleri taraf�ndan yap�lmaktad�r</A>
<BR><FONT COLOR="#FFFFFF">&copy; Bob Smith , <a href="../../common/copy.html">FDL</a> <BR><a href="http://www.linuxfocus.org">LinuxFocus.org</a></FONT>
</TD>
<TD BGCOLOR="#bdc6d5">
<!-- TRANSLATION INFO -->
<font size=2>�eviri bilgisi:</font>
<TABLE summary="translators">
  <tr><td><font size="2">en --&gt; -- : Bob Smith  <small>&lt;bob/at/linuxtoys.org&gt;</small></font></td></tr>
  <tr><td><font size="2">en --&gt; tr: �zcan G�ng�r &lt;ozcangungor(at)netscape.net&gt;</font></td></tr>
</TABLE>
</TD>
</TR></TABLE></CENTER>
<p><font size=1>2004-06-26, generated by lfparser version 2.46</font></p>
<!-- 2pdaIgnoreStop -->
</BODY>
</HTML>