<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6309512779005693354</id><updated>2012-05-18T17:55:25.988+03:00</updated><category term='apache'/><category term='linux'/><category term='screen'/><category term='yerel depo'/><category term='pardus'/><category term='bonobo'/><category term='çomak'/><category term='dosya birleştirme'/><category term='chrome'/><category term='ağ'/><category term='kütüphane'/><category term='socket'/><category term='android'/><category term='pyqt'/><category term='ldap'/><category term='python'/><category term='debian'/><category term='mpd'/><category term='network'/><category term='clamav'/><category term='firewall'/><category term='havp'/><category term='iptables'/><category term='bind'/><category term='svn'/><category term='ncmpcpp'/><category term='subversion'/><category term='dns server'/><title type='text'>Kendime Notlar</title><subtitle type='html'>Bu blog not tutma alışkanlığı olmayan birisi olarak kendime notları barındırmaktadır. Aynı zamanda benim için bir öğrenme yöntemi oluşturmasını da umut etmekteyim.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-3692733921677691475</id><published>2012-01-23T14:19:00.000+02:00</published><updated>2012-01-23T14:19:49.588+02:00</updated><title type='text'>Python'da map, filter ve reduce Fonksiyonları</title><content type='html'>Bu yazıda listelerle kullanıldığında çok yararlı olan üç fonksiyondan bahsedicem:&lt;br /&gt;filter(), map() ve reduce()&lt;br /&gt;&lt;br /&gt;&lt;b&gt;filter&lt;/b&gt;(function, dizi) dizideki her eleman için için function(eleman) değerinin true olduğu bir dizi döndürür.&lt;br /&gt;Dizi string veya tuple tipindeyse sonuç da aynı tipte olur; aksi halde sonuç list tipindedir. Örneğin 2 ve 3'e bölünmeyen&lt;br /&gt;bir sayı dizisini hesaplamak için:&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; def f(x): return x % 2 != 0 and x % 3 != 0&lt;br /&gt;...&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; filter(f, range(2, 25))&lt;br /&gt;[5, 7, 11, 13, 17, 19, 23]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;map&lt;/b&gt;(function, dizi) dizideki her bir eleman için function(eleman) fonksiyonunu çağırır ve dönen değerlerin bir listesini&lt;br /&gt;döndürür. Örneğin, birkaç sayının küpünü hesaplamak için:&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; def cube(x): return x*x*x&lt;br /&gt;...&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; map(cube, range(1, 11))&lt;br /&gt;[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]&lt;br /&gt;&lt;br /&gt;Birden fazla dizi de kullanılabilir. Bu durumda fonksiyonun aynı sayıda parametreye sahip olması gerekir. Fonksiyon dizilerdeki&lt;br /&gt;elemanlar karşılıklı olacak şekilde çağırılır. Eğer dizilerden biri daha kısaysa None değeri kullanılır. Örneğin:&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; seq = range(8)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; def add(x, y): return x+y&lt;br /&gt;...&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; map(add, seq, seq)&lt;br /&gt;[0, 2, 4, 6, 8, 10, 12, 14]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;reduce&lt;/b&gt;(function, dizi) function ikili fonksiyonunun önce dizinin ilk iki elemanı ile çağrılır. Sonra çıkan sonuç ve bir sonraki eleman ve bu şekilde devam eder. En son tek bir sonuç üretilir. Örneğin 1'den 10'a kadar olan sayıların toplamını hesaplamak için:&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; def add(x,y): return x+y&lt;br /&gt;...&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; reduce(add, range(1, 11))&lt;br /&gt;55&lt;br /&gt;&lt;br /&gt;Dizide sadece bir eleman varsa onun değeri döndürülür. Eğer dizi boşsa hata oluşur.&lt;br /&gt;&lt;br /&gt;Başlangıç değeri olarak bir üçüncü parametre eklenebilir. Bu durumda dizi boş ise başlangıç değeri döndürülür ve fonksiyon önce başlangıç değeri ve dizinin ilk elemanı ile çağrılır. inin ilk iki elemanı ile çağrılır. Sonra çıkan sonuç ve bir sonraki eleman ve bu şekilde devam eder. Örneğin:&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; def sum(seq):&lt;br /&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; def add(x,y): return x+y&lt;br /&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return reduce(add, seq, 0)&lt;br /&gt;...&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; sum(range(1, 11))&lt;br /&gt;55&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; sum([])&lt;br /&gt;0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;şekilde devam ederek çağrılmasıyla tek bir sonuç döndür.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-3692733921677691475?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/3692733921677691475/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2012/01/pythonda-map-filter-ve-reduce.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/3692733921677691475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/3692733921677691475'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2012/01/pythonda-map-filter-ve-reduce.html' title='Python&apos;da map, filter ve reduce Fonksiyonları'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-2238710300553222028</id><published>2011-10-28T20:26:00.000+03:00</published><updated>2011-10-28T20:26:10.628+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='screen'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>GNU Screen Hakkıda Kısaca</title><content type='html'>&lt;style type="text/css"&gt;div.example {   padding: 5px;   font-family: Courier;   border: 1px dashed #cccccc;   background-color: #eeeeff;   margin-left: 5%;   margin-right: 5%; } &lt;/style&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Screen genelde çok az kişinin kullandığı çok faydalı bir araç. Screen 'i pencere çoklayıcısı olarak tanımlamak mümkün. Bunun anlamıysa screen kullanarak tek bir terminalde oluşturacağınız değişik sayıda pencerelerde aynı anda değişik programları çalıştırabileceğiniz. Günümüzde grafiksel uç birimler sekme özelliğine sahip olsa da screen 'in yetenekleri çok daha fazla.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Screen 'i paket yöneticinizi kullanarak kurabilirsiniz. Pardus için '&lt;b&gt;$ sudo&lt;/b&gt; &lt;b&gt;pisi it screen&lt;/b&gt;' yeterli olacaktır.&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;b&gt;$ screen&lt;/b&gt;&lt;/blockquote&gt;komutunu vererek yeni bir screen oturumu açabilirsiniz. Screen de birçok program gibi ayar doslarını nokta(dot) dosyası olarak kullanıcının ev dizininde tutar. İlk çalıştırdığınızda muhtemelen sizi screen 'in lisansını, hataların nereye raporlanacağını vb. bilgileri içeren bir sayfa karşılayacaktır. Bu sayfayı kapatmak için ~/.screenrc sayfasına aşağıdaki satırı ekleyebilirsiniz:&lt;span id="intelliTxt"&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span id="intelliTxt"&gt;&lt;code&gt;startup_message off&lt;/code&gt;&lt;/span&gt;&lt;/blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Yaratılan her screen oturumu eşsiz bir numara ile tanımlanır. &lt;span id="intelliTxt"&gt;İlk pencere 0 ile numaralandırılır ve 1, 2, 3 şeklinde devam eder. &lt;b&gt;Ctrl+a &lt;/b&gt;screenin varsayılan komut karakteridir. Bununla birlikte Ctrl+a 'dan sonra girilen komut büyük/küçük harf duyarlıdır. Yani &lt;b&gt;Ctrl+a n&lt;/b&gt; ve &lt;b&gt;Ctrl+a N&lt;/b&gt; farklı anlamlara gelir.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id="intelliTxt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Yeni bir pencere yaratmak için &lt;b&gt;Ctrl+a c &lt;/b&gt;(create)&lt;/span&gt;&lt;span id="intelliTxt"&gt; kombinasyonunu kullanabilirsiniz.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id="intelliTxt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Oluşturulan pencereler arasında geçiş yapmak için değişik yöntemler vardır:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span id="intelliTxt"&gt;&lt;b&gt;Ctrl+a n &lt;/b&gt;(next)tuşlarıyla bir sonraki pencereye, &lt;/span&gt;&lt;span id="intelliTxt"&gt;&lt;b&gt;Ctrl+a p &lt;/b&gt;&lt;/span&gt;&lt;span id="intelliTxt"&gt;(previous) ile de bir önceki pencereye geçebilirsiniz.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="intelliTxt"&gt;&lt;b&gt;Ctrl+a &lt;/b&gt;sonrasında 0-9 arasında bir sayı ile karşılık gelen pencereye geçiş yapabilirsiniz.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="intelliTxt"&gt;&lt;b&gt;Ctrl+a " &lt;/b&gt;ile bütün pencerelerin listesini görebilir, istediğinize geçebilirsiniz.&lt;/span&gt;&lt;span id="intelliTxt"&gt;&lt;/span&gt;&lt;span id="intelliTxt"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ctrl+a A &lt;/b&gt;tuşlarıyla kullanmakta olduğunuz pencereyi yeniden adlandırabilirsiniz.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span id="intelliTxt"&gt;Yeni pencereler oluşturmayı ve aralarında geçiş yapmayı öğrendik. Oturumdan kopmak(detach) için &lt;b&gt;Ctrl+a d &lt;/b&gt;kullanılabilir. Bunun yerine sadece oturumu içeren uç birimi de kapatabilirsiniz. Ama bu yöntemlerden hiçbiri oturumunuzu sonlandırmaz. Yaptıkları oturumunuz ve uç birim arasındaki bağlantıyı koparmaktır. Eğer &lt;b&gt;Ctrl+a d&lt;/b&gt; komutunu kullandığınız sırada hali hazırda çalışan bir program varsa çalışmayı sürdürecektir ve istediğiniz zaman tekrar bağlanarak işinize devam edebilirsiniz.&amp;nbsp;&lt;/span&gt;&lt;span id="intelliTxt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span id="intelliTxt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Koparılan bir oturuma yeniden bağlanmak için aşağıdaki komut kullanılabilir:&lt;/span&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;b&gt;&lt;span id="intelliTxt"&gt;$ screen -r&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Koparılan sadece bir tane screen oturumu varsa direk olarak ona bağlanırsınız. Birden fazla oturum olması durumunda ise bir şuna benzer liste karşınıza çıkar:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;b&gt;$ screen -r&lt;/b&gt;&lt;br /&gt;There are several suitable screens on:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2608.pts-0.pardus2011&amp;nbsp;&amp;nbsp; (Detached)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2665.pts-0.pardus2011&amp;nbsp;&amp;nbsp; (Detached)&lt;/blockquote&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; Bir tanesini seçip yeniden bağlanabilirsiniz:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;$&lt;b&gt; screen -r 2608.pts-0.pardus2011&lt;/b&gt;&lt;/blockquote&gt;&lt;span id="intelliTxt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Screenin bir başka önemli özelliği de bir screen ourumunu paylaşabiliyor olmanızdır. Bunun için aşağıdaki adımları izlemeniz yeterlidir:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span id="intelliTxt"&gt;root olarak: &lt;b&gt;# chmod&lt;/b&gt;&lt;/span&gt;&lt;span id="intelliTxt"&gt;&lt;b&gt; u+s /usr/bin/screen&lt;/b&gt; ()&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span id="intelliTxt"&gt;# chmod 755 /var/run/screen&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="intelliTxt"&gt;root kullanıcısından çıkış yapın ve screen oturumunu paylaşacak kullanıcıyla bir screen oturumu açıp isim verin: &lt;b&gt;$ screen -S oturumAdı&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="intelliTxt"&gt;Çoklu kullanıcı özelliğini açmak için &lt;b&gt;Ctrl+a :multiuser&lt;/b&gt; komutunu verin.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="intelliTxt"&gt;Screen oturumuna bağlanacak ikinci kullanıcıya gerekli izinleri vermek için &lt;b&gt;Ctrl+a :acladd &lt;i&gt;kullanıcı2&lt;/i&gt;&lt;/b&gt; (kullanıcı2 bağlanacak olan diğer kullanıcının ismi)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="intelliTxt"&gt;Daha sonrasında kullanıcı2 SSH kullanarak bilgisayara bağlanmalı ve &lt;/span&gt;&lt;b&gt;$ screen -x kullanıcı1/oturumAdı&lt;/b&gt; (kullanıcı1 screen oturumunu oluşturan kullanıcı) komutuyla oluşturulan screen oturumunu kullanmaya başlayabilir.&lt;/li&gt;&lt;/ol&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Böylece iki kullanıcı da aynı screen oturumunu paylaşabilir ve komut çalıştırabilir.&lt;br /&gt;&lt;br /&gt;&lt;span id="intelliTxt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Screen pencereleri iki veya daha fazla yatay pencereye bölmenizi sağlar. Bu sayede, örneğin, bir yandan sistem kaynaklarını görüntülerken ("top"), pencerenin bir diğer kısmında çalışmaya devam edebilirsiniz. &lt;/span&gt;&lt;br /&gt;&lt;span id="intelliTxt"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Screen'i ikiye ayırmak için önce iki screen oturumu oluşturun. &lt;b&gt;Ctrl+a S&lt;/b&gt; screeni ikiye ayıracaktır; üst kısımda hali hazırda kullandığınız oturum, altta boş bir tane.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alttaki kısma geçmek için &lt;b&gt;Ctrl+a TAB&lt;/b&gt; kullanılabilir. Bu komut konsol imlecini alttaki kısma geçirecektir. Alt kısma geçtiğinizde önceden oluşturduğunuz screen oturumlarından bir tanesini seçmelisiniz. Bunun için &lt;b&gt;Ctrl+a "&lt;/b&gt; kullanın ve varolan screen oturumlarını listeleyin. Listeden bir tanesini seçerek kullanın. Yalnız yukarı kısımda kullanılan oturumu seçmemeye dikkat edin, böyle bir durumda iki kısımda da aynı oturumu kullanıyor olursunuz. Bir screen oturumu seçtikten sonra top komutunu verin ve &lt;b&gt;Ctrl+a TAB&lt;/b&gt; ile yukarıdaki kısma geçin. Şimdi altta sistem kaynaklarını izlerken üst kısımda çalışabilirsiniz.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id="intelliTxt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tekrar tam ekran durumuna dönmek için çalışmaya devam etmek istediğiniz kısma geçin ve &lt;b&gt;Ctrl+a Q&lt;/b&gt; komutunu kullanın.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id="intelliTxt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Screen ayar dosyasında bazı düzenlemeler yaparak screeni daha kullanışlı hale getirmek mümkün. Bazı düzenlemelerle pencerenizin en altında aktif screen oturumlarını listeleyebilir, sistem saati ve bilgisayar ismi gibi bilgileri görebilirsiniz. Bununla yanında başlangıçta oluturulacak screen oturumları da tanımlayabilirsiniz. Örneğin:&lt;/span&gt; &lt;br /&gt;&lt;blockquote class="tr_bq"&gt;hardstatus alwayslastline&lt;br /&gt;hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]'&lt;br /&gt;&lt;br /&gt;# Default screens&lt;br /&gt;screen -t shell1 0&lt;br /&gt;screen -t shell2 1&lt;br /&gt;screen -t server 2 ssh me@myserver&lt;/blockquote&gt;&lt;pre class="”screen”"&gt;&lt;/pre&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; İlk iki satırda durum çubuğunun en altta olması gerektiği ve bu satırda ne olması gerektiği yazılıdır. # ile başlayan satır yorum satırı, yorum satırının altındaki "screen -t ScreenAdı ScreenNumarası KabukKomutu" formatındaki satırlar ise başlatılacak screen tanımlamalarıdır. &lt;br /&gt;&lt;span id="intelliTxt"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Screen oturumlarını kapatmak için ise &lt;b&gt;Ctrl+a Q&lt;/b&gt; komutunu verebilir veya &lt;b&gt;exit&lt;/b&gt; komutunu kullanabilirsiniz.&lt;span id="intelliTxt"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id="intelliTxt"&gt;&lt;b&gt;Kaynaklar:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="intelliTxt"&gt;[1] &lt;a href="http://magazine.redhat.com/2007/09/27/a-guide-to-gnu-screen/"&gt;http://magazine.redhat.com/2007/09/27/a-guide-to-gnu-screen/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="intelliTxt"&gt;[2] &lt;a href="http://news.softpedia.com/news/GNU-Screen-Tutorial-44274.shtml"&gt;http://news.softpedia.com/news/GNU-Screen-Tutorial-44274.shtml&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-2238710300553222028?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/2238710300553222028/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2011/10/gnu-screen-hakkda-ksaca.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/2238710300553222028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/2238710300553222028'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2011/10/gnu-screen-hakkda-ksaca.html' title='GNU Screen Hakkıda Kısaca'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-6106588090222191482</id><published>2011-10-28T02:28:00.000+03:00</published><updated>2011-10-28T02:28:10.398+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ağ'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><title type='text'>Debian: OpenLDAP Kurmak</title><content type='html'>&lt;style type="text/css"&gt;div.example {   padding: 5px;   font-family: Courier;   border: 1px dashed #cccccc;   background-color: #eeeeff;   margin-left: 5%;   margin-right: 5%; } &lt;/style&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Özet&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bu yazının amacı Debian üzerinde OpenLDAP kurulumunu ve yapılandırmasını kolay anlaşılır bir şekilde anlatmaktır.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bu rehberin sonunda, bireysel makinelerde elle kullanıcı yaratmaya gerek kalmayacak şekilde, ağdaki bütün makilerde kullanıcı girişi için merkezi yetkilendirme sistemi olarak hizmet verecek fonksiyonel bir LDAP sunucusuna sahip olacaksınız.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bununla birlikte, gelişmiş yetkilendirme güvenliği ve gerçek bir ağ tabanlı çözüm için, LDAP'ın Kerberos ile birlikte kullanılması önerilir. Kerberos kurulumu &lt;a href="http://techpubs.spinlocksolutions.com/dklar/kerberos.html"&gt;MIT Kerberos 5 Guide&lt;/a&gt; belgesinde anlatılmaktadır,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bu yazı &lt;a href="http://www.spinlocksolutions.com/"&gt;Spinlock Solutions&lt;/a&gt;'ın, &lt;a href="http://techpubs.spinlocksolutions.com/dklar/debian.html"&gt;Debian GNU Guide&lt;/a&gt;, &lt;a href="http://techpubs.spinlocksolutions.com/dklar/kerberos.html"&gt;MIT Kerberos 5 Guide&lt;/a&gt;, &lt;a href="http://techpubs.spinlocksolutions.com/dklar/ldap.html"&gt;OpenLDAP Guide&lt;/a&gt;, &lt;a href="http://techpubs.spinlocksolutions.com/dklar/afs.html"&gt;OpenAFS Guide&lt;/a&gt; ve &lt;a href="http://techpubs.spinlocksolutions.com/dklar/radius.html"&gt;FreeRADIUS Guide&lt;/a&gt;'ı içeren 5 yazılık Unix ağlarına giriş serisinin bir parçasıdır.&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Giriş&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDAP geleneksel olarak sistem yöneticilerinin ve ileri düzey kullanıcıların ilgisini cezbeden bir servistir. Ama yüksek girdi bariyeri(high entry barrier) ve altyapı gereksinimleri birçok kişiyi onu kullanmaktan uzak tutmuştur.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDAP hali hazırda sayısız yayının konusu olmuştur. Burada sadece gerekli bir özet sunacağız; içeriği yerleştirmek ve pratik sonuçlar elde etmek için yeterli bilgi.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Harici bağlantıları izlemek zorunda değilsiniz; bununla birlikte, belirli tekil konuların belirli teknik işleyişine işaret etmesi amacıyla, bağlantılar makale boyunca kullanılmış ve makalenin sonunda hep birlikte sunulmuştur.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Bir ağda LDAP'ın rolü&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; OpenLDAP, Lightweight Directory Access Protocol - Hafifletilmiş Dizin Erişim Protokolü'nün açık kaynaklı bir uygulamasıdır. Dizin ağaç yapısında, okuma-en iyilenmiş(read-optimized) haldedir. Sarı sayfalar ya da bir telefon rehberi, zihinde canlandırmak açısından iyi örnekler ancak LDAP çok daha güçlüdür.&lt;br /&gt;&amp;nbsp; &amp;nbsp; OpenLDAP'ı, bireysel(individual) makinelere ilk eriştiklerinde ev dizinlerini de otomatik olarak yaratacak şekilde, ağda herhangi bir yerdeki kullanıcı girişleri için bir merkezi yetkilendirme konumu sağlamak için kullanacağız.&lt;br /&gt;&amp;nbsp; &amp;nbsp; Bu belge OpenLDAP'ı hem yetkilendirme sağlamak hem kullanıcı üst verisi sunmak amacıyla kullanmak için kendi başına yeterlidir. Bununla birlikte, LDAP sunucusuna yapılan düz metin bağlantıları ve kablo üzerinde parolaların gezinmesi sebebiyle LDAP'ı burada anlatıldığı şekilde yetkilendirme amacıyla kullanmak güvenli değildir. Bu nedenle LDAP'ı üstün ve güvenli ağ yetkilendirme mekanizması Kerberos'la kullanmak tavsiye edilir. Kerberos bir diğer makale &lt;a href="http://techpubs.spinlocksolutions.com/dklar/kerberos.html" target="_top"&gt;MIT Kerberos 5 Guide&lt;/a&gt;'da anlatılmaktadır.&lt;br /&gt;&amp;nbsp; &amp;nbsp; Haydi, LDAP kurulumumuza başlayalım.&lt;br /&gt;&amp;nbsp; &amp;nbsp; Teknik bir bakış açısından, LDAP dizini sıradüzensel olarak düzenlenmiş &lt;span style="font-size: small;"&gt;&lt;i&gt;girdi&lt;/i&gt;&lt;/span&gt;lerin(&lt;span style="font-size: small;"&gt;&lt;i&gt;entries&lt;/i&gt;&lt;/span&gt;) kümesini içerir. Her girdi belli &lt;i&gt;Nesne Sınıflarına &lt;/i&gt;(&lt;i&gt;Object Classes&lt;/i&gt;) aittir ve &lt;span style="font-size: small;"&gt;&lt;i&gt;özellikler&lt;/i&gt;&lt;/span&gt;(&lt;i&gt;attributes&lt;/i&gt;) olarak adlandırılan değişik sayıda&amp;nbsp; &lt;code class="literal" style="color: #3d85c6;"&gt;&lt;i class="replaceable"&gt;&lt;code&gt;anahtar=değer&lt;/code&gt;&lt;/i&gt;&lt;/code&gt;(&lt;code class="literal" style="color: #3d85c6;"&gt;&lt;i class="replaceable"&gt;&lt;code&gt;key=value&lt;/code&gt;&lt;/i&gt;&lt;/code&gt;) çifti içerir.&lt;br /&gt;&amp;nbsp; &amp;nbsp; Her girdi bir &lt;i&gt;Ayırıcı İsim &lt;/i&gt;(&lt;span class="emphasis"&gt;&lt;i&gt;Distinguished name&lt;/i&gt;&lt;/span&gt; - "DN") ile tekil olarak(uniquely) tanımlanır. DN ağacın başından başlayan, girdiye ait "tam yolu" (full path) sağlayan, virgüllerle ayrılmış, bir özellikler kümesi şeklindedir. Örneğin, Example, Inc. şirketi &lt;code class="literal"&gt;&lt;span style="color: #e69138;"&gt;dc=&lt;/span&gt;&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;example&lt;/code&gt;&lt;/i&gt;&lt;span style="color: #e69138;"&gt;,dc=&lt;/span&gt;&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;com&lt;/code&gt;&lt;/i&gt;&lt;/code&gt; 'da ağacın köküne sahip olabilir. Example, Inc. şirketinde çalışmaya başlayan birisi DN'i &lt;code class="literal"&gt;&lt;span style="color: #e69138;"&gt;cn=&lt;/span&gt;&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;person&lt;/code&gt;&lt;/i&gt;&lt;span style="color: #e69138;"&gt;,ou=&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;People&lt;/span&gt;&lt;span style="color: #e69138;"&gt;,dc=&lt;/span&gt;&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;example&lt;/code&gt;&lt;/i&gt;&lt;span style="color: #e69138;"&gt;,dc=&lt;/span&gt;&lt;i class="replaceable"&gt;&lt;code&gt;&lt;span style="color: #3d85c6;"&gt;com&lt;/span&gt; &lt;/code&gt;&lt;/i&gt;&lt;/code&gt;olan bir LDAP girdisine sahip olabilir.&lt;br /&gt;&amp;nbsp; &amp;nbsp; Bir girdide hangi özelliklerin olabileceği ya da olması gerektiği girdinin objectClass'ları tarafından yönetilir.&lt;br /&gt;&amp;nbsp; &amp;nbsp; Farkedebileceğiniz gibi, yukarıdaki  &lt;code class="literal"&gt;&lt;span style="color: #e69138;"&gt;cn=&lt;/span&gt;&lt;i class="replaceable"&gt;&lt;code&gt;&lt;span style="color: #3d85c6;"&gt;person&lt;/span&gt; &lt;/code&gt;&lt;/i&gt;&lt;/code&gt;gibi, DN'in tekil parçaları da&lt;span style="font-size: x-small;"&gt; &lt;i&gt;anahtar=değer&lt;/i&gt;&lt;/span&gt; şeklindedir. Bu "anahtarlar", &lt;code class="literal" style="color: #e69138;"&gt;cn&lt;/code&gt;, &lt;code class="literal" style="color: #e69138;"&gt;ou&lt;/code&gt; ve &lt;code class="literal" style="color: #e69138;"&gt;dc&lt;/code&gt;; &lt;code class="literal" style="color: #e69138;"&gt;Common Name&lt;/code&gt;,  &lt;code class="literal" style="color: #e69138;"&gt;Organizational Unit&lt;/code&gt; ve  &lt;code class="literal" style="color: #e69138;"&gt;Domain Component&lt;/code&gt; kelimelerinin kısaltmalarıdır. Bunlar hergün kullanacağınız LDAP terminolojisinin bir parçasıdır.&lt;br /&gt;&amp;nbsp; &amp;nbsp; ObjectClassları; özellikler, söz dizimler(syntaxes), eşleşme kuralları (matching rules) ve ağaç yapısının diğer detayları LDAP sunucusunun başlangıcında &lt;code class="filename"&gt;/etc/ldap/slapd.conf &lt;/code&gt;dosyasında tanımlı &lt;span class="emphasis"&gt;&lt;i&gt;şema (schema) &lt;/i&gt;&lt;/span&gt;dosyaları okunarak yapılandırılabilir ve yüklenebilir.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hadi hızlıca kurulumumuzdaki LDAP'a özel elemanları tanımlayalım:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;LDAP geleneksel sistem kullanıcı isimleri ya da diğer veriyle herhangi bir şekilde bağlantılı değildir. Bununla birlikte, kurulumumuzda LDAP'ın işlenselliğinin bir kısmı gelenksel Unix dosyaları &lt;code class="filename"&gt;/etc/passwd&lt;/code&gt; ve &lt;code class="filename"&gt;/etc/group&lt;/code&gt;'da bilgi saklamayı içerir.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Kişilerin giriş isimleri (login names) kişileri LDAP ağacında karşılık gelen veriyle eşleştirilerek kullanılacaktır. Örneğin, &lt;code class="literal" style="color: #3d85c6;"&gt;&lt;i class="replaceable"&gt;&lt;code&gt;person&lt;/code&gt;&lt;/i&gt;&lt;/code&gt;  kullanıcı ismi &lt;code class="literal"&gt;&lt;span style="color: #e69138;"&gt;uid=&lt;/span&gt;&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;person&lt;/code&gt;&lt;/i&gt;&lt;span style="color: #e69138;"&gt;,ou=&lt;/span&gt;&lt;span style="color: #3d85c6;"&gt;People&lt;/span&gt;&lt;span style="color: #e69138;"&gt;,dc=&lt;/span&gt;&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;example&lt;/code&gt;&lt;/i&gt;&lt;span style="color: #e69138;"&gt;,dc=&lt;/span&gt;&lt;i class="replaceable"&gt;&lt;code&gt;&lt;span style="color: #3d85c6;"&gt;com&lt;/span&gt; &lt;/code&gt;&lt;/i&gt;&lt;/code&gt;LDAP girdisine eşlenir.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;LDAP kullanıcı parolalarıın içerecek şekilde yapılandırılabilir. Parolalar belirli kullanıcıları yetkilendirmek ve korunan girdilere erişim sağlamak ve kullanıcının doğru parolayı bilip bilmediğini kontrol etmek için kullanılabilir.&lt;/li&gt;&lt;/ul&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Bir kulanıcı bir LDAP istemcisi açıp dizini taradığında, DN'i ve parolası kimlik ve erişim yetkilerini sağlamakta kullanılır. LDAP kullanıcı yetkilendirme işi için yapılandırıldığında, DN'i ve parolası sadece LDAP dizinine bağlantı sağlanması için kullanılır - başarılı bir bağlantı ("bind") kullanıcının doğru parolayı bildiğini gösterir.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; Eksiksiz OpenLDAP belgelendirmesi için &lt;a href="http://www.openldap.org/" target="_top"&gt;OpenLDAP&lt;/a&gt; web sayfasına bakabilirsiniz. Güvenilir bir OpenLDAP kitabı için ise, Gerald Carter'ın  &lt;code class="literal" style="color: #e69138;"&gt;LDAP System Administration&lt;/code&gt; (by O'Reilly) kitabına bakabilirsiniz.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tutkal Katmanlar(Glue layers): LDAP'ı sistem yazılımıyla tümleştirmek&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; NSS&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bütün GNU/Linux-tabanlı platformlarda, &lt;a href="http://www.gnu.org/software/libc/manual/html_node/Name-Service-Switch.html" target="_top"&gt;NSS&lt;/a&gt; ağ veri bulma (network data  retrieval) yapılandırması için erişilebilirdir. &lt;a href="http://www.gnu.org/software/libc/manual/html_node/Name-Service-Switch.html" target="_top"&gt;NSS&lt;/a&gt;,  &lt;code class="literal" style="color: #e69138;"&gt;Name Service Switch&lt;/code&gt; mekanızmasının bir uygulamasıdır.&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; NSS, LDAP'ın -doğal olarak LDAP desteklemese de- bütün servislerin "kullanıcı veri" yollarına ("user data" path) dahil edilmesine izin verir.&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;a href="http://www.gnu.org/software/libc/manual/html_node/Name-Service-Switch.html" target="_top"&gt;NSS&lt;/a&gt; web sayfasında uygun giriş (ve eksiksiz belgelendirmeye) erişebilirsiniz. Ayrıca   &lt;span class="citerefentry"&gt;&lt;span class="refentrytitle"&gt;nsswitch.conf&lt;/span&gt;(5)&lt;/span&gt;  kılavuz (manual) sayfasına bakınız.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;b&gt;PAM&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &lt;/b&gt;Aynı şekilde, bütün GNU/Linux-tabanlı platformlarda, bulmacanın bir diğer parçası,  &lt;a href="http://www.kernel.org/pub/linux/libs/pam/" target="_top"&gt;Linux-PAM&lt;/a&gt;, servis-özel (service-specific) yetkilendirme yapılandırması için bulunur..  &lt;a href="http://www.kernel.org/pub/linux/libs/pam/" target="_top"&gt;Linux-PAM&lt;/a&gt;, &lt;a href="http://www.sun.com/" target="_top"&gt;Sun Microsystems&lt;/a&gt;'ten PAM  ("&lt;code class="literal" style="color: #e69138;"&gt;Pluggable Authentication Modules&lt;/code&gt;")'ın bir uygulamasıdır.&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; Ağ servisleri,&amp;nbsp; hard-coded yetkilendirme arayüzleri ve karar mekanizmalarına sahip olmak yerine, standart, önceden-tanımlı arayüz üzerinden PAM'ı çağırır. Bundan sonrası, herhangi ya da bütün yetkilendirme işlerini işletmek ve sonuçları programa göndermek PAM'a aittir.&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; PAM'ın kararı nasıl verdiği servisin ilgilendirmez. Geleneksel kurulumlarda (set-ups), bu sıklıkla kullanıcı ismini ve parolsını sorarak ve onaylayarak yapılırdı. Gelişmiş ağlarda, bu retina taramalarıyla olabilir ya da — Kerberos biletletiyle, seiden bir diğer makalede anlatıldığı gibi, &lt;a href="http://techpubs.spinlocksolutions.com/dklar/kerberos.html" target="_top"&gt;MIT Kerberos 5 Guide&lt;/a&gt;.&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;a href="http://www.kernel.org/pub/linux/libs/pam/" target="_top"&gt;Linux-PAM&lt;/a&gt; web sayfasında uygun giriş (ve eksiksiz belgelendirmeye) erişebilirsiniz.&amp;nbsp;&lt;a href="http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/sag-configuration-file.html" target="_top"&gt;PAM Configuration File Syntax&lt;/a&gt; sayfasının üzerinde özellikle durun. Ayrıca   &lt;span class="citerefentry"&gt;&lt;span class="refentrytitle"&gt;Linux-PAM&lt;/span&gt;(7)&lt;/span&gt; ve  &lt;span class="citerefentry"&gt;&lt;span class="refentrytitle"&gt;pam&lt;/span&gt;(7)&lt;/span&gt; kılavuz sayfalarına göz gezdirin.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &lt;a href="http://www.blogger.com/post-create.g?blogID=6309512779005693354" name="conventions"&gt;&lt;/a&gt;Conventions&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &lt;/b&gt;Belgelendirmedeki talimatları takip edememek gerçekten moral bozucu. Daha fazla devam etmeden bazı konular üzerinde anlaşalım:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;Üzerinde pratik bir kurulum gerçekleştireceğimiz platform  &lt;a href="http://www.debian.org/" target="_top"&gt;Debian GNU&lt;/a&gt; olacak.&lt;/li&gt;&lt;li&gt;&amp;nbsp;sudo 'yu kurun&lt;span class="application"&gt;&lt;/span&gt;. Sudo normal kullanıcı hesabınızdan sistem yöneticisi işlerini yapmanıza izin veren bir program. Bu makaledeki bütün örnekler root yetkileri gerektirmektedir, sudo kullanarak kodları kopyalayıp kabuğuna(shell) yapıştırmanız mümkün olacak.&lt;/li&gt;&lt;/ul&gt;&lt;div class="example"&gt;&lt;b&gt;su -c 'apt-get install sudo'&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Eğer şifre sorulursa root şifresini girin.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sudo 'yu yapılandırmak için, aşağıdaki satırı &lt;code class="literal"&gt;$USERNAME i &lt;/code&gt;kullanıcı isminizle değiştirerek&amp;nbsp;  &lt;code class="filename"&gt;/etc/sudoers&lt;/code&gt; dosyanıza ekleyin:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;$USERNAME ALL=(ALL) NOPASSWD: ALL&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Debian paketleri &lt;span class="emphasis"&gt;&lt;i&gt;debconf &lt;/i&gt;&lt;/span&gt;arayüzüyle kurulum süreci boyunca bize sorular soracak. debconf 'u bilinen bir duruma ayarlamak için:&lt;/li&gt;&lt;/ul&gt;&lt;div class="example"&gt;&lt;b&gt;sudo dpkg-reconfigure debconf&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sorulduğunda,  &lt;span class="emphasis"&gt;&lt;i&gt;arayüz=Diyalog (interface&lt;/i&gt;&lt;/span&gt;=&lt;code class="literal"&gt;Dialog)&lt;/code&gt; ve &lt;span class="emphasis"&gt;&lt;i&gt;öncelik=düşük (priority&lt;/i&gt;&lt;/span&gt;=&lt;code class="literal"&gt;low&lt;/code&gt;) olarak cevaplayın.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Log dosyalarını görüntülemek hataların yakalanmasında çok kritiktir. Bunu yapmanın anlaşılır, hepsini kapsayan yolu bir terminal açmak ve aşağıdaki kodu çalıştırmak:&lt;/li&gt;&lt;/ul&gt;&lt;div class="example"&gt;&lt;b&gt;cd /var/log; sudo tail -F daemon.log sulog user.log auth.log debug kern.log syslog dmesg messages kerberos/{krb5kdc,kadmin,krb5lib}.log&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Komut hata log mesajlarını oluştukça ekrana yazacaktır.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Test sistemimizin adı &lt;code class="literal"&gt;monarch.spinlock.hr&lt;/code&gt; ve &lt;code class="literal"&gt;192.168.7.12&lt;/code&gt; IP adresine sahip. Sunucu ve istemcinin ikisi de aynı makineye kurulacak. Bununla birlikte, ilişkili oldukları yerlerde sunucu ve istemci rollerini ayırmak için, istemci &lt;code class="literal"&gt;monarch.spinlock.hr&lt;/code&gt; ve sunucu  &lt;code class="literal"&gt;ldap1.spinlock.hr&lt;/code&gt; olarak adlandırılacak. &lt;code class="filename"&gt;/etc/hosts&lt;/code&gt; dosyasına yapılacak aşağıdaki gibi bir ekleme bu şemayı destekleyecektir: &lt;/li&gt;&lt;/ul&gt;&lt;div class="example"&gt;192.168.7.12 monarch.spinlock.hr monarch krb1.spinlock.hr krb1 ldap1.spinlock.hr ldap1&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Dikkat&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &lt;/b&gt;Bazı Debian kurulumlarında sistemin ağ makine adı(hostname), localhost adresi &lt;code class="literal"&gt;127.0.0.1 &lt;/code&gt;'e atanmış olabilir. Bu ağ işlemlerinde bazı hatalara yol açabilir ve açacaktır. Bu yüzden &lt;code class="filename"&gt;/etc/hosts &lt;/code&gt;dosyasındaki "localhost" girdisinin aynen aşağıdaki gibi olmasına dikkat edin(ne eksik, ne fazla):&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;127.0.0.1  localhost  localhost.localdomain&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Son olarak, beklendiği gibi ağ kurulumunu test edelim. Makine isimlerine(hostnames) ping atmak uygun FQDN&amp;nbsp; ve IP'leri gösterecektir:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;b&gt;ping -c1 localhost&lt;/b&gt;&lt;br /&gt;PING localhost (127.0.0.1) 56(84) bytes of data.&lt;br /&gt;....&lt;/div&gt;&lt;div class="example"&gt;&lt;b&gt;ping -c1 monarch&lt;/b&gt;&lt;br /&gt;PING monarch.spinlock.hr (192.168.7.12) 56(84) bytes of data.&lt;br /&gt;....&lt;/div&gt;&lt;div class="example"&gt;&lt;b&gt;ping -c1 ldap1&lt;/b&gt;&lt;br /&gt;PING krb1.spinlock.hr (192.168.7.12) 56(84) bytes of data.&lt;br /&gt;....&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;OpenLDAP&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Sunucu Kurulumu&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &lt;/b&gt;OpenLDAP'ın sunucu bileşeni &lt;b&gt;slapd &lt;/b&gt;olarak adlandırılır ve bütün ihtiyacımız olan bu.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;sudo apt-get install slapd ldap-utils&lt;/div&gt;&lt;br /&gt;Debconf cevapları:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Omit OpenLDAP server configuration? &lt;b&gt;No&lt;/b&gt;&lt;br /&gt;DNS domain name: &lt;b&gt;spinlock.hr&lt;/b&gt;&lt;br /&gt;Organization name? &lt;b&gt;spinlock.hr&lt;/b&gt;&lt;br /&gt;Administrator password: &lt;b&gt;PASSWORD&lt;/b&gt;&lt;br /&gt;Confirm password: &lt;b&gt;PASSWORD&lt;/b&gt;&lt;br /&gt;Database backend to use: &lt;b&gt;HDB&lt;/b&gt;&lt;br /&gt;Do you want the database to be removed when slapd is purged? &lt;b&gt;No&lt;/b&gt;&lt;br /&gt;Allow LDAPv2 protocol? &lt;b&gt;No&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Kurulum tamamlanır tamamlanmaz OpenLDAP sunucusu (&lt;b&gt;slapd &lt;/b&gt;komutu) başlayacaktır.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Başlangıç Yapılandırması&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &lt;/b&gt;OpenLDAP sunucumuz hali hazırda çalışıyor. Hadi önce bütün LDAP istemcileri için ortak bir yapılandırma dosyası olan  &lt;code class="filename"&gt;/etc/ldap/ldap.conf&lt;/code&gt; 'u düzenleyelim. Bu, &lt;b class="command"&gt;ldapsearch&lt;/b&gt; ve diğer komutları her defasında temel parametreleri elle girmemize gerek kalmadan çalıştırmamızı sağlayacak.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;code class="filename"&gt;/etc/ldap/ldap.conf&lt;/code&gt; 'ta aşağıdaki iki satırı ekinleştirin, gerekirse dosyayı kendiniz oluşturun:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;BASE  dc=&lt;i&gt;&lt;span style="color: #3d85c6;"&gt;spinlock&lt;/span&gt;&lt;/i&gt;, dc=&lt;i&gt;&lt;span style="color: #3d85c6;"&gt;hr&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;URI ldap://&lt;i style="color: #3d85c6;"&gt;192.168.7.12&lt;/i&gt;/&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sonrasında, davranışını ayarlamak için sunucunun yapılandırma dosyası&amp;nbsp;&lt;code class="filename"&gt;/etc/ldap/slapd.conf&lt;/code&gt; 'u düzenleyelim.&lt;br /&gt;&amp;nbsp; &amp;nbsp; Bütün şema dosyalarının etkinleştirildiğinden emin olun:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;include         /etc/ldap/schema/core.schema&lt;br /&gt;include         /etc/ldap/schema/cosine.schema&lt;br /&gt;include         /etc/ldap/schema/nis.schema&lt;br /&gt;include         /etc/ldap/schema/inetorgperson.schema&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ayrıntı seviyesini &lt;code class="literal" style="color: #e69138;"&gt;0&lt;/code&gt; veya "&lt;code class="literal" style="color: #e69138;"&gt;none&lt;/code&gt;" 'dan &lt;code class="literal"&gt;&lt;span style="color: #e69138;"&gt;256&lt;/span&gt; &lt;/code&gt;'ya değiştirin:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;loglevel 256&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&lt;code class="literal"&gt;index           objectClass eq&lt;/code&gt;" satırını arayın ve bir başka arama indexi daha ekleyin. Belirli kombinasyonlarda, arama girdileri indexlenmediklerinde herhangi bir sonuç dönmemesi mümkün. Bu yüzden bu adım önemli:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;index           objectClass eq&lt;br /&gt;index           uid         eq&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Yeni index seçeneğinin uygulanması için, aşağıdaki komutları çalıştırın:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;b&gt;sudo invoke-rc.d slapd stop&lt;/b&gt;&lt;br /&gt;&lt;b&gt;sudo slapindex&lt;/b&gt;&lt;br /&gt;&lt;b&gt;sudo chown -R openldap:openldap /var/lib/ldap&lt;/b&gt;&lt;br /&gt;&lt;b&gt;sudo invoke-rc.d slapd start&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Başlangıç Testi&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &lt;/b&gt;Artık kurulumumuzu test etmenin zamanı geldi. OpenLDAP sunucumuz çok fazla bilgi içermiyor ama basit bir okuma işlemi kolayca gerçekleştirilebilir.&lt;br /&gt;&amp;nbsp; &amp;nbsp; LDAP terimleriyle, okuma (read) işlemi "arama" ("search") olarak adlandırılır. Komut satırından bir arama işlemi yapmak için &lt;b class="command"&gt;ldapsearch&lt;/b&gt; ve &lt;b class="command"&gt;slapcat&lt;/b&gt; 'e sahibiz.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;b class="command"&gt;Ldapsearch&lt;/b&gt; (ve "ldap" önekiyle başlayan diğer LDAP komutları) LDAP protokolünü kullanarak "çevrimiçi"("online") işlem gerçekleştirirler.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;b class="command"&gt;Slapcat&lt;/b&gt; (ve "slapd" önekiyle başlayan diğer LDAP komutları) direkt olarak yerel dosya sisteminde dosyalar açarak "çevrimdışı("offline") işlem gerçekleştirirler. Bu yüzden, sadece yerel olarak LDAP sunucusunda çalıştırılabilirler ve yönetici hakları gerektirirler. Veritabanına yazmaları gerektiğinde, OpenLDAP sunucusu genellikle durdurulmalıdır.&lt;br /&gt;&amp;nbsp; &amp;nbsp; İki arama komutunun çıktısında, iki LDAP girdisi farkedeceksiniz, bir tanesi ağaçtaki en uç seviye elemanını, diğeri LDAP yönetici girdisini temsil ediyor. &lt;b class="command"&gt;slapcat&lt;/b&gt; çıktısında, &lt;b class="command"&gt;ldapsearch &lt;/b&gt;çıktısında gösterilmeyen extra özelliklere dikkat edin. Bunlardan bir tanesi &lt;code class="literal"&gt;userPassword&lt;/code&gt;, &lt;code class="filename"&gt;/etc/ldap/slapd.conf &lt;/code&gt;dosyasındaki öntanımlı erişim kısıtlamalarından dolayı anonim okuyuculara gösterilmez.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;&lt;b class="userinput"&gt;&lt;code&gt;ldapsearch -x&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;# extended LDIF&lt;br /&gt;#&lt;br /&gt;# LDAPv3&lt;br /&gt;# base &amp;lt;&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;dc=spinlock, dc=hr&lt;/code&gt;&lt;/i&gt;&amp;gt; (default) with scope subtree&lt;br /&gt;# filter: (objectclass=*)&lt;br /&gt;# requesting: ALL&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock.hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;dn: dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;objectClass: top&lt;br /&gt;objectClass: dcObject&lt;br /&gt;objectClass: organization&lt;br /&gt;o: &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock.hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;dc: &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;# admin, &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock.hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;dn: cn=admin,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;objectClass: simpleSecurityObject&lt;br /&gt;objectClass: organizationalRole&lt;br /&gt;cn: admin&lt;br /&gt;description: LDAP administrator&lt;br /&gt;&lt;br /&gt;# search result&lt;br /&gt;search: 2&lt;br /&gt;result: 0 Success&lt;br /&gt;&lt;br /&gt;# numResponses: 3&lt;br /&gt;# numEntries: 2&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;&lt;b class="userinput"&gt;&lt;code&gt;sudo slapcat&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;dn: dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;objectClass: top&lt;br /&gt;objectClass: dcObject&lt;br /&gt;objectClass: organization&lt;br /&gt;o: &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock.hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;dc: &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;structuralObjectClass: organization&lt;br /&gt;entryUUID: 350a2db6-87d3-102c-8c1c-1ffeac40db98&lt;br /&gt;creatorsName:&lt;br /&gt;modifiersName:&lt;br /&gt;createTimestamp: 20080316183324Z&lt;br /&gt;modifyTimestamp: 20080316183324Z&lt;br /&gt;entryCSN: 20080316183324.797498Z#000000#000#000000&lt;br /&gt;&lt;br /&gt;dn: cn=admin,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;objectClass: simpleSecurityObject&lt;br /&gt;objectClass: organizationalRole&lt;br /&gt;cn: admin&lt;br /&gt;description: LDAP administrator&lt;br /&gt;userPassword:: e2NyeXB0fVdSZDJjRFdRODluNHM=&lt;br /&gt;structuralObjectClass: organizationalRole&lt;br /&gt;entryUUID: 350b330a-87d3-102c-8c1d-1ffeac40db98&lt;br /&gt;creatorsName:&lt;br /&gt;modifiersName:&lt;br /&gt;createTimestamp: 20080316183324Z&lt;br /&gt;modifyTimestamp: 20080316183324Z&lt;br /&gt;entryCSN: 20080316183324.804398Z#000000#000#000000&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Temel Ağaç Yapısını Yaratmak&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &lt;/b&gt;Açıklandığı gibi, LDAP veritabanı ağaç şeklinde yapılandırılmıştır. Kurumunuz için en uç seviye elemanı genellikle alan adıdır(domain name). Alan adının &lt;code class="literal" style="color: #e69138;"&gt;spinlock.hr&lt;/code&gt; olması durumunda, en uç seviye elemanı &lt;code class="literal"&gt;&lt;span style="color: #e69138;"&gt;dc=spinlock,dc=hr&lt;/span&gt;.&lt;/code&gt;&lt;br /&gt;&lt;code class="literal"&gt;&amp;nbsp;&amp;nbsp; &lt;/code&gt;Alttaki bir sonraki seviyede, kurumunuz, insanlar, gruplar, servisler, ağlar, protokoller vb. alt "kurumsal birimlere"("organizational units") ayrılır.&lt;code class="literal"&gt;&lt;/code&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bu nedenle, LDAP dizininde insanların Unix "üst verilerini"("meta data") desteklemek için, bahsedilen kurumsal birimlerden iki tanesinin yaratılmasıyla ilgileneceğiz, &lt;code class="literal"&gt;İnsanlar(People)&lt;/code&gt; ve &lt;code class="literal"&gt;Grup(Group)&lt;/code&gt;. Bu ikisi yaklaşık olarak Unix &lt;code class="filename"&gt;/etc/passwd&lt;/code&gt; ve &lt;code class="filename"&gt;/etc/group&lt;/code&gt; dosyalarına karşılık gelecektir.&lt;br /&gt;&amp;nbsp; &amp;nbsp; Ldap verisi LDIF denilen metinsel bir formata dönüştürülür. Komut satırı LDAP araçları bu formatta veri alır ve üretir. LDIF akışları(stream) aynı zamanda LDAP girdileri ekleme, değiştire ve silme gibi komutlar içerebilir. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bu bilgiyle, sunucuyla etkileşerek iki kurumsal birim ekleyecek basit bir LDIF dosyası yaratalım, &lt;code class="filename"&gt;/var/tmp/ou.ldif&lt;/code&gt;. Boş satırların girdileri ayırdığına dikkat edin:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;dn: ou=People,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;ou: People&lt;br /&gt;objectClass: organizationalUnit&lt;br /&gt;&lt;br /&gt;dn: ou=Group,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;ou: Group&lt;br /&gt;objectClass: organizationalUnit&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDIF dosyasını sunucuya yüklemek için, çevrimdışı aracı, &lt;b class="command"&gt;slapadd&lt;/b&gt;, kullanarak bir örnek gösterelim: &lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="programlisting"&gt;&lt;b&gt;sudo invoke-rc.d slapd stop&lt;br /&gt;sudo slapadd -c -v -l /var/tmp/ou.ldif&lt;br /&gt;sudo invoke-rc.d slapd start&lt;/b&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hadi &lt;b class="command"&gt;ldapsearch&lt;/b&gt; kullanarak yaratılan girdileri kontrol edelim.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;&lt;b class="userinput"&gt;&lt;code&gt;ldapsearch -x ou=people&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;# extended LDIF&lt;br /&gt;#&lt;br /&gt;# LDAPv3&lt;br /&gt;# base &amp;lt;&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;dc=spinlock, dc=hr&lt;/code&gt;&lt;/i&gt;&amp;gt; (default) with scope subt&lt;br /&gt;# filter: ou=people&lt;br /&gt;# requesting: ALL&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# People, &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock.hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;dn: ou=People,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;ou: People&lt;br /&gt;objectClass: organizationalUnit&lt;br /&gt;&lt;br /&gt;# search result&lt;br /&gt;search: 2&lt;br /&gt;result: 0 Success&lt;br /&gt;&lt;br /&gt;# numResponses: 2&lt;br /&gt;# numEntries: 1&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Kullanıcı Hesapları Yaratmak&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &lt;/b&gt;İki kurumsal birim yarattığımız gibi, ilk grubumuzu ve buna ait bir kişi yaratalım. Tekrar, problemi bir LDIF dosyası yaratarak ve yükleyerek çözelim,&lt;code class="filename"&gt; /var/tmp/user1.ldif&lt;/code&gt;. Boş satırlar girdileri ayırmaktadır:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;dn: cn=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;,ou=group,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;cn: &lt;i class="replaceable"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;gidNumber: &lt;i class="replaceable"&gt;&lt;code&gt;20000&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;objectClass: top&lt;br /&gt;objectClass: posixGroup&lt;br /&gt;&lt;br /&gt;dn: uid=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;,ou=people,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;uid: &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;uidNumber: &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;20000&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;gidNumber: &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;20000&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;cn: &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;Mirko&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;sn: &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;Mirko&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;objectClass: top&lt;br /&gt;objectClass: person&lt;br /&gt;objectClass: posixAccount&lt;br /&gt;objectClass: shadowAccount&lt;br /&gt;loginShell: /bin/bash&lt;br /&gt;homeDirectory: /home/&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDIF dosyasını sunucuya yüklemek için, çevrimiçi aracı, &lt;b class="command"&gt;ldapadd&lt;/b&gt;, kullanarak bir örnek yapalım. Önceden bahsedildiği gibi, &lt;b class="command"&gt;ldapadd&lt;/b&gt; LDAP protokolünü kullanır, sunucuya sistem yöneticisi olarak bağlanmalı ve (slapd kurulumu sırasında tanımladığımız) yönetici parolasını girmeliyiz:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;&lt;b class="userinput"&gt;&lt;code&gt;ldapadd -c -x -D cn=admin,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt; -W -f /var/tmp/user1.ldif&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Enter LDAP Password: &lt;b class="userinput" style="color: #3d85c6;"&gt;&lt;code&gt;&lt;i class="replaceable"&gt;&lt;code&gt;PASSWORD&lt;/code&gt;&lt;/i&gt;&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;adding new entry "cn=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;,ou=group,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;adding new entry "uid=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;,ou=people,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;"&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Şimdi kullanıcının parolasını tanımlamak için çevrimiçi bir araç kullanalım: &lt;b class="command"&gt;ldappasswd&lt;/b&gt;. (Eğer LDAP'ı Kerberos ile birlikte kullanırsanız (&lt;a href="http://techpubs.spinlocksolutions.com/dklar/kerberos.html" target="_top"&gt;MIT Kerberos 5 Guide&lt;/a&gt;) bu adım gerekli değildir)&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;code&gt;&lt;b&gt;ldappasswd -x -D cn=admin,dc=&lt;span style="color: #3d85c6;"&gt;spinlock&lt;/span&gt;,dc=&lt;span style="color: #3d85c6;"&gt;hr&lt;/span&gt; -W -S uid=&lt;span style="color: #3d85c6;"&gt;mirko&lt;/span&gt;,ou=&lt;span style="color: #3d85c6;"&gt;people&lt;/span&gt;,dc=&lt;span style="color: #3d85c6;"&gt;spinlock&lt;/span&gt;,dc=&lt;span style="color: #3d85c6;"&gt;hr&lt;/span&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;New password: &lt;b style="color: #3d85c6;"&gt;&lt;i&gt;NEW USER PASSWORD&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Re-enter new password: &lt;i style="color: #3d85c6;"&gt;&lt;b&gt;NEW USER PASSWORD&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Enter LDAP Password:  &lt;b style="color: #3d85c6;"&gt;&lt;i&gt;ADMIN PASSWORD&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Result: Success (0)&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Not&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &lt;/b&gt;Fark edebileceğiniz gibi bütün girdiler her zaman "fully qualified" olmalı ve soneki (dc=&lt;i class="replaceable"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;) ya da DN'in herhangi bir bileşenini gözardı edemezsiniz. Bu genellikle komut satırı örneklerinin uzun ve anlaşılmaz olmasına yol açabilir ve sıkıcı, gereksiz bir iş olarak görülebilir. Bunu sorun olarak görüyorsanız, çözüm için ya bu duruma alışmalısınız ya da bu bilgilerin bir çoğunu sizin için dolduran bir grafiksel LDAP sunucusu kullanmalısınız.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; Şimdi yaratılan kullanıcı girdilerini doğrulamak için &lt;b class="command"&gt;ldapsearch&lt;/b&gt; kullanalım. &lt;code class="filename"&gt;/etc/ldap/slapd.conf &lt;/code&gt;dosyasındaki erişim kısıtlamalarından dolayı, yaratmış olsak bile parola alanı, &lt;code class="literal" style="color: #e69138;"&gt;userPassword&lt;/code&gt;, gösterilmeyecektir.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;&lt;b class="userinput"&gt;&lt;code&gt;ldapsearch -x uid=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;# extended LDIF&lt;br /&gt;#&lt;br /&gt;# LDAPv3&lt;br /&gt;# base &amp;lt;&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;dc=spinlock, dc=hr&lt;/code&gt;&lt;/i&gt;&amp;gt; (default) with scope subtree&lt;br /&gt;# filter: uid=&lt;i class="replaceable"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;# requesting: ALL&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;, people, &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock.hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;dn: uid=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;,ou=people,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;uid: &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;uidNumber: &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;20000&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;gidNumber: &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;20000&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;cn: &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;Mirko&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;sn: &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;Mirko&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;objectClass: top&lt;br /&gt;objectClass: person&lt;br /&gt;objectClass: posixAccount&lt;br /&gt;loginShell: /bin/bash&lt;br /&gt;homeDirectory: /home/&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;# search result&lt;br /&gt;search: 2&lt;br /&gt;result: 0 Success&lt;br /&gt;&lt;br /&gt;# numResponses: 2&lt;br /&gt;# numEntries: 1&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Tebrikler! Çalışan bir LDAP kurulumunuz var.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; NSS Yapılandırması&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &lt;/b&gt;Şimdi LDAP'ta yaratılmış yeni bir kullanıcımız var, sistemin onu görmesine izin vermeliyiz. Örneğin, &lt;code class="literal" style="color: #e69138;"&gt;root&lt;/code&gt; ve &lt;code class="literal" style="color: #e69138;"&gt;mirko&lt;/code&gt; kullanıcılarının varlığını test edelim. &lt;code class="literal"&gt;&lt;span style="color: #e69138;"&gt;mirko&lt;/span&gt; &lt;/code&gt;görünmezken yönetici görünecektir:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;&lt;b class="userinput"&gt;&lt;code&gt;id root&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;uid=0(root) gid=0(root) groups=0(root)&lt;br /&gt;&lt;br /&gt;&lt;b class="userinput"&gt;&lt;code&gt;id &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;id: &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;: No such user&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sistemin LDAP hesaplarını görmesi için &lt;span class="application"&gt;libnss-ldap&lt;/span&gt; (ki otomatik olarak libpam-ldap paketini de kuracaktır) ve nscd'yi kurmalıyız:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="programlisting"&gt;&lt;b&gt;sudo apt-get install libnss-ldap nscd&lt;/b&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bütün debconf cevapları:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;LDAP server URI: &lt;b class="userinput"&gt;&lt;code&gt;ldap://&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;192.168.7.12&lt;/code&gt;&lt;/i&gt;/&lt;/code&gt;&lt;/b&gt; (Note the "ldap://", NOT "ldapi://"!)&lt;br /&gt;&lt;br /&gt;Distinguished name of the search base: &lt;b class="userinput" style="color: #3d85c6;"&gt;&lt;code&gt;&lt;i class="replaceable"&gt;&lt;code&gt;dc=spinlock,dc=&lt;i class="replaceable"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;&lt;/code&gt;&lt;/i&gt;&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;LDAP version to use: &lt;b class="userinput"&gt;&lt;code&gt;3&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Does the LDAP database require login? &lt;b class="userinput"&gt;&lt;code&gt;No&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Special LDAP privileges for root? &lt;b class="userinput"&gt;&lt;code&gt;No&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Make the configuration file readable/writeable by its owner only? &lt;b class="userinput"&gt;&lt;code&gt;No&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Allow LDAP admin account to behave like local root? &lt;b class="userinput"&gt;&lt;code&gt;Yes&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Make local root Database admin. &lt;b class="userinput"&gt;&lt;code&gt;No&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Does the LDAP database require login? &lt;b class="userinput"&gt;&lt;code&gt;No&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;LDAP administrative account: &lt;b class="userinput"&gt;&lt;code&gt;cn=admin,dc=h15,dc=ri&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;LDAP administrative password: &lt;b class="userinput" style="color: #3d85c6;"&gt;&lt;code&gt;&lt;i class="replaceable"&gt;&lt;code&gt;PASSWORD&lt;/code&gt;&lt;/i&gt;&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Local crypt to use when changing passwords. &lt;b class="userinput"&gt;&lt;code&gt;md5&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;PAM profiles to enable: select all&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; NSS modülünü yapılandırmak için, &lt;code class="filename"&gt;/etc/libnss-ldap.conf&lt;/code&gt; dosyasını açın. Yapılandırma satırlarını gösterildiği gibi yerlerştirin ve ayarlayın:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;base dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;&lt;br /&gt;uri ldap://&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;192.168.7.12&lt;/code&gt;&lt;/i&gt;/&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Son olarak, LDAP NSS modulünü etkinleştirmek için, &lt;code class="filename"&gt;/etc/nsswitch.conf&lt;/code&gt; dosyasındaki &lt;code class="literal"&gt;passwd&lt;/code&gt; ve  &lt;code class="literal"&gt;group&lt;/code&gt; ile ilgili satırları aşağıdaki iki satırla değiştirin: &lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;passwd:         files ldap&lt;br /&gt;group:          files ldap&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="application"&gt;Nscd&lt;/span&gt; (the Name Service Caching Daemon) LDAP sunucusunu her seferinde sorgulamak yerine üstveriyi yerel olarak önbelleklemek için kullanılır. Uzun vadede çok etkili bir servis ancak test boyunca veriyi LDAP sunucusundan almak amacıyla bir an için durduracağız:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="programlisting"&gt;&lt;b&gt;sudo invoke-rc.d nscd stop&lt;br /&gt;&lt;/b&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Şimdi LDAP kullanıcılarının görünür olduğunu doğrulayabiliriz:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;&lt;b class="userinput"&gt;&lt;code&gt;id &lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;uid=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;20000&lt;/code&gt;&lt;/i&gt;(&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;) gid=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;20000&lt;/code&gt;&lt;/i&gt;(&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;) groups=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;20000&lt;/code&gt;&lt;/i&gt;(&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;)&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;PAM Yapılandırması&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt;Bu makalenin son adımı LDAP'ı sistem yetkilendirme süreciyle tümleştirmekle ilgili.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span class="application"&gt;libpam-ldap&lt;/span&gt;'ı yükleyip yapılandıralım. (Bu adımı otomatik olarak &lt;span class="application"&gt;libnss-ldap&lt;/span&gt; kurulumu sırasında yapmış olabilirsiniz — bu durumda Debian paketin zaten kurulu olduğunu söyleyecektir).  &lt;br /&gt;&lt;b&gt; &amp;nbsp; &amp;nbsp; &lt;/b&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="programlisting"&gt;&lt;b&gt;sudo apt-get install libpam-ldap&lt;/b&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debconf cevapları:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;Make local root Database admin. &lt;b class="userinput"&gt;&lt;code&gt;No&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Does the LDAP database require login? &lt;b class="userinput"&gt;&lt;code&gt;No&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Local crypt to use when changing passwords. &lt;b class="userinput"&gt;&lt;code&gt;md5&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PAM modülünü yapılandırmak için, &lt;code class="filename"&gt;/etc/pam_ldap.conf &lt;/code&gt;dosyasını açın. Yapılandırma satırlarını gösterildiği gibi yerlerştirin ve ayarlayın:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;base dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;spinlock&lt;/code&gt;&lt;/i&gt;,dc=&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;hr&lt;/code&gt;&lt;/i&gt;&lt;span style="color: #3d85c6;"&gt;&lt;br /&gt;&lt;/span&gt;uri ldap://&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;192.168.7.12&lt;/code&gt;&lt;/i&gt;/&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Şimdi &lt;a href="http://www.kernel.org/pub/linux/libs/pam/" target="_top"&gt;Linux-PAM&lt;/a&gt; 'ın kendisini yapılandıralım. PAM yapılandırması oldukça kırılgandır. Bu yüzden çalıştığı onaylanmış varolan örnekleri kullanın. Herhangi bir değişiklikte,&amp;nbsp; &lt;a href="http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/sag-configuration-file.html" target="_top"&gt;PAM Configuration File Syntax&lt;/a&gt; 'a bakmak isteyeceksiniz. Görünürde önemsiz varyasyonlar üzerinde özellikle durun — PAM'la birlikte, onlar genellikle büyük değişikliklere yol açarlar.&lt;br /&gt;&amp;nbsp; &amp;nbsp; PAM kullanıcının &lt;i&gt;ya&lt;/i&gt; yerel parola dosyasında &lt;i&gt;ya da&lt;/i&gt; LDAP'ta olmasını ve yetkilendirme sürecinin devamı için doğru parolayı bilmesini gerektirir.&lt;br /&gt;&amp;nbsp; &amp;nbsp; Burada anlatıldığı şekliyle LDAP'ta yetkilendirme yapmak LDAP sunucusuna bağlantılar düz metin şeklinde olduğundan ve parolalar kabloda dolaştığından güvenli değildir.&lt;br /&gt;&amp;nbsp; &amp;nbsp; LDAP sunucusuna bağlantının şifrelendirilmesi yerine, aşağıda gösterilen PAM dosyaları, eğer Kerberos kurulumu yaptıysanız, yetkilendirme için Kerberos'u da destekler. Bu durumda, yorum satırı olarak gösterilen PAM satırlarını değiştirin ve yetkilendirme Kerberos kullanılarak tamamen güvenli ve doğru bir şekilde yapılır.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;b&gt;/ETC/PAM.D/COMMON-ACCOUNT&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;account sufficient      pam_unix.so&lt;br /&gt;account required        pam_ldap.so&lt;br /&gt;&lt;br /&gt;# Enable if using Kerberos:&lt;br /&gt;#account required        pam_krb5.so&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;/ETC/PAM.D/COMMON-AUTH&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;# Disable the three lines if using Kerberos:&lt;br /&gt;auth [success=1 default=ignore] pam_unix.so nullok_secure&lt;br /&gt;auth required pam_ldap.so use_first_pass&lt;br /&gt;auth required pam_permit.so&lt;br /&gt;&lt;br /&gt;# Enable the three lines if using Kerberos:&lt;br /&gt;#auth    sufficient        pam_unix.so nullok_secure&lt;br /&gt;#auth    sufficient        pam_krb5.so use_first_pass&lt;br /&gt;#auth    required          pam_deny.so&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;/ETC/PAM.D/COMMON-PASSWORD&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;password sufficient   pam_unix.so nullok obscure md5&lt;br /&gt;&lt;br /&gt;# Disable if using Kerberos:&lt;br /&gt;password required     pam_ldap.so use_first_pass &lt;br /&gt;&lt;br /&gt;# Enable if using Kerberos:&lt;br /&gt;#password required pam_krb5.so use_first_pass&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;/ETC/PAM.D/COMMON-SESSION&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;session required        pam_unix.so&lt;br /&gt;session required        pam_mkhomedir.so skel=/etc/skel/ umask=0022&lt;br /&gt;&lt;br /&gt;# Enable if using Kerberos:&lt;br /&gt;#session  optional  pam_krb5.so minimum_uid=1000&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Sisteme Giriş Yapma&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &lt;/b&gt;Herşey gösterildiği şekilde ayarlandıktan sonra, &lt;code class="literal"&gt;&lt;i class="replaceable"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;&lt;/code&gt; kullanıcısıyla sisteme giriş başarılı olmalıdır:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;Login: &lt;b class="userinput"&gt;&lt;code&gt;&lt;i class="replaceable"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;Password: &lt;b class="userinput"&gt;&lt;code&gt;&lt;i class="replaceable"&gt;&lt;code&gt;PASSWORD&lt;/code&gt;&lt;/i&gt;&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Debian GNU/Linux tty5&lt;br /&gt;&lt;br /&gt;Creating directory '/home/&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;'.&lt;br /&gt;&lt;br /&gt;Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent&lt;br /&gt;permitted by applicable law.&lt;br /&gt;&lt;i class="replaceable" style="color: #3d85c6;"&gt;&lt;code&gt;mirko&lt;/code&gt;&lt;/i&gt;@host:~$&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Sonuç&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &lt;/b&gt;Bu aşamada işlevsel bir LDAP kurulumuna sahipsiniz.&lt;br /&gt;&amp;nbsp; &amp;nbsp; Merkesi ağ yetkilendirmesi ve kullanıcı üstverisinin paylaşılması (kullanıcı IDsi, grup IDsi, gerçek isimler, grup üyelikleri vb.)&lt;br /&gt;&amp;nbsp; &amp;nbsp; Bunula birlikte, yukarıda bahsedildiği gibi LDAP üzerinden yetkilendirme yapmak LDAP sunucusuna bağlantılar düz metin şeklinde olduğundan ve parolalar kabloda dolaştığından güvenli değildir. Bu sorunu çözmek için ağ yetkilendirmesi için LDAP yerine Kerberos kullanılması tavsiye edilir.&lt;br /&gt;&amp;nbsp; &amp;nbsp; Ayrıca, kullanıcılar başarılı bir şekilde yetkilendirildiklerinde, giriş yaptılır ve ev dizinlerine yerleştirilirler. Bununla birlikte, merkezi ağ yetkilendirme şemasında, kullanıcıların yaratılmadığı tekil makinelerde karşılık gelen ev dizinleri vrolmayacaktır. Bu sorun yukarıdaki &lt;code class="literal"&gt;pam_mkhomedir &lt;/code&gt;modülü tarafından halledilir. Bu modül eksik ev dizinlerini otomatik olarak yaratır.&lt;br /&gt;&amp;nbsp; &amp;nbsp; Bunun anlamı kullanıcı ev dizinlerinin ayrı ayrı giriş yaptıkları her makinede oluşturulur. Kullanıcılar değişik makinelerde değişik dosyalara sahip olacağı için, bu sorunlara yol açabilir. Bu durum Kerberos kullanıldığı taktirde, Kerberized ağlar dosyaların makineler arasında güvenilir ve parolasız olarak kopyalanmasını sağladığı için, kendi başına tamamen kabul edilemez olmayacaktır. Yine de kusursuz bir çözümden çok uzakta olacaktır. Bu sorunu gelişmiş, güvenli, heavy-duty dağıtık ağ dosya sistemleri ile çözmek için serideki bir diğer makaleye, &lt;a href="http://techpubs.spinlocksolutions.com/dklar/afs.html" target="_top"&gt;OpenAFS Guide&lt;/a&gt; 'a bakınız.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;span class="bold"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Kurduğumuz iyi bir temelle, LDAP hakkında daha ayrıntılı bilgi için erişilebilir diğer kaynaklara da bakın:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="bold"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;Resmi belgelendirme: &lt;a href="http://www.openldap.org/doc/admin24/" target="_top"&gt;http://www.openldap.org/doc/admin24/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;Mail listeleri: &lt;a href="http://www.openldap.org/lists/" target="_top"&gt;http://www.openldap.org/lists/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;IRC: FreeNode ağında (irc.freenode.net) #ldap kanalı &lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ticari danışma ve AFS içeren infrastructure-based ağlar için, &lt;a href="http://www.spinlocksolutions.com/" target="_top"&gt;Spinlock Solutions&lt;/a&gt; ya da &lt;a href="http://www.openldap.org/support/" target="_top"&gt;OpenLDAP destek sayfasındaki&lt;/a&gt; diğer kuruluşlarla iletişim kurun. &amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Linkler&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Platformlar:&lt;br /&gt;&lt;a href="http://www.gnu.org/" target="_top"&gt;GNU&lt;/a&gt;                              &lt;br /&gt;&lt;a href="http://www.debian.org/" target="_top"&gt;Debian GNU&lt;/a&gt;                              &lt;br /&gt;&lt;br /&gt;LDAP:&lt;br /&gt;&lt;a href="http://www.openldap.org/" target="_top"&gt;OpenLDAP&lt;/a&gt;                              &lt;br /&gt;&lt;a href="http://sourceforge.net/projects/gqclient" target="_top"&gt;Gq&lt;/a&gt; — Gtk LDAP İstemcisi&lt;br /&gt;&lt;a href="http://luma.sourceforge.net/" target="_top"&gt;Luma&lt;/a&gt; — QT LDAP İstemcisi      &lt;br /&gt;&lt;a href="http://jxplorer.org/" target="_top"&gt;jXplorer&lt;/a&gt; — Java LDAP İstemcisi    &lt;br /&gt;&lt;a href="http://directory.apache.org/studio/" target="_top"&gt;Apache Directory Studio&lt;/a&gt; — Eclipse-tabanlı LDAP İstemcisi&lt;br /&gt;&lt;a href="http://www.web2ldap.de/" target="_top"&gt;web2ldap&lt;/a&gt; — web-tabanlı LDAP İstemcisi&lt;br /&gt;&lt;br /&gt;Glue layer:&lt;br /&gt;&lt;a href="http://www.gnu.org/software/libc/manual/html_node/Name-Service-Switch.html" target="_top"&gt;NSS&lt;/a&gt;                              &lt;br /&gt;&lt;a href="http://www.kernel.org/pub/linux/libs/pam/" target="_top"&gt;Linux-PAM&lt;/a&gt;                              &lt;br /&gt;&lt;br /&gt;İlişkil altyapısal teknolojiler:&lt;br /&gt;&lt;a href="http://web.mit.edu/kerberos/" target="_top"&gt;MIT Kerberos&lt;/a&gt;                              &lt;br /&gt;&lt;a href="http://www.openafs.org/" target="_top"&gt;OpenAFS&lt;/a&gt;                              &lt;br /&gt;&lt;a href="http://www.freeradius.org/" target="_top"&gt;FreeRADIUS&lt;/a&gt;                              &lt;br /&gt;&lt;br /&gt;Ticari destek:&lt;br /&gt;&lt;a href="http://www.spinlocksolutions.com/" target="_top"&gt;Spinlock Solutions&lt;/a&gt;                               &lt;br /&gt;&lt;a href="http://openldap.org/support/" target="_top"&gt;OpenLDAP support organizations&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Diğer:&lt;br /&gt;&lt;a href="http://www.docbook.org/" target="_top"&gt;DocBook&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;NOT: &lt;/b&gt;Bu yazı [1]&amp;nbsp; adresindeki makalenin Türkçeye çevrilmiş/çevrilmeye çalışılmış halidir. Anlamsal ve söz dizimsel hatalar içerebilir.&lt;br /&gt;[1]: &lt;a href="http://techpubs.spinlocksolutions.com/dklar/ldap.html"&gt;http://techpubs.spinlocksolutions.com/dklar/ldap.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-6106588090222191482?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/6106588090222191482/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2011/10/debian-openldap-kurmak.html#comment-form' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/6106588090222191482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/6106588090222191482'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2011/10/debian-openldap-kurmak.html' title='Debian: OpenLDAP Kurmak'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-1558927473063163144</id><published>2011-10-21T21:12:00.000+03:00</published><updated>2011-10-21T21:12:00.004+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firewall'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='iptables'/><title type='text'>iptables</title><content type='html'>&lt;style type="text/css"&gt;div.example {   padding: 5px;   font-family: Courier;   border: 1px dashed #cccccc;   background-color: #eeeeff;   margin-left: 5%;   margin-right: 5%; } table.inline {   border-style:none;   background-color:#fff; } table.inline th {   padding:3px;   border:1px solid #8cacbb;   background-color:#dee7ec; } table.inline td {   padding:3px;   border:1px solid #8cacbb; } &lt;/style&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IP Tables, güvenlik duvarı için Linux'ta kullanılan temel araçlardan birisidir. Linux'un çekirdek uzayındaki güvenlik duvarı gerçekleştirimi olan &lt;a href="http://www.netfilter.org/"&gt;netfilter&lt;/a&gt; ile etkileşime giren, kullanıcı uzayında çalışan bir takım araçların bir araya gelmesinden oluşmuştur. IP Tables bir takım kurallar(rules) ve eylemlere(actions) göre davranır. Kurallar hangi paketler (ör. belli bir ağdan gelen paketler) için hangi eylemlerin (ör. paketlerin düşürülmesi) gerçekleştirileceğini belirlerler. Netfilter her paket için bütün kuralları sırasıyla işletecektir. Eşleşen bir kural bulduğunda bu kural için tanımlanan eylemi işletir.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;$man iptables&lt;/div&gt;&lt;br /&gt;ile kılavuzu okuyabilirsiniz.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tablolar&lt;/b&gt; &lt;br /&gt;iptabes ismi iptables'ın tablolar üzerinde çalıştığı gerçeğinden gelmektedir. Tabloların her biri belli bir paket davranışı üzerinde özelleştirilmiştir. Aşağıdakiler Linux 2.6.8 çekirdeği üzerinde varolan tablolardır(değişik çekirdek sürümlerinde değişik tablolar olabilir):  &lt;br /&gt;&lt;br /&gt;&lt;table class="inline"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Tablo &lt;/th&gt;&lt;th&gt;Anlamı &lt;/th&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td&gt;&lt;code&gt;raw&lt;/code&gt; &lt;/td&gt;&lt;td&gt;Paketlerin düşük seviye ayrıştırılması. &lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td&gt;&lt;code&gt;nat&lt;/code&gt; &lt;/td&gt;&lt;td&gt;Paket başlığında değişiklikler (where &lt;a class="interwiki iw_wp" href="http://en.wikipedia.org/wiki/NAT" title="http://en.wikipedia.org/wiki/NAT"&gt;NAT&lt;/a&gt; takes place). &lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td&gt;&lt;code&gt;mangle&lt;/code&gt; &lt;/td&gt;&lt;td&gt;Özelleştirilmiş paket ayrıştırması. &lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td&gt;&lt;code&gt;filter&lt;/code&gt; &lt;/td&gt;&lt;td&gt;Paket filtreleme. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Paketle ne yapmak istediğinize bağlı olarak uygun bir tablo bulunmaktadır.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Zincirler (Chains)&lt;/b&gt;&lt;br /&gt;Ip Tables'ta, her tabloya yapışık ve herbiri farklı trafik tipiyle ilişkili birçok zincir vardır:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class="inline"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Zincir &lt;/th&gt;&lt;th&gt;Anlamı &lt;/th&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td&gt;&lt;code&gt;PREROUTING&lt;/code&gt; &lt;/td&gt;&lt;td&gt;Yönlendirmeden(routing) devreye girmeden makineye gelen trafik. &lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td&gt;&lt;code&gt;INPUT&lt;/code&gt; &lt;/td&gt;&lt;td&gt;Makinenin kendisine gelen trafik. &lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td&gt;&lt;code&gt;FORWARD&lt;/code&gt; &lt;/td&gt;&lt;td&gt;Makine üzerinden geçen trafik (başka makinede üretilen, hedefi başka makine olan). &lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td&gt;&lt;code&gt;OUTPUT&lt;/code&gt; &lt;/td&gt;&lt;td&gt;Yerel olarak yaratılmış trafik (hedef yerel ya da dış bir makine olabilir). &lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;   &lt;td&gt;&lt;code&gt;POSTROUTING&lt;/code&gt; &lt;/td&gt;&lt;td&gt;Dışarı giden trafik. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Ayrıca kendi zincirlerinizi oluşturmak da mümkün.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Veri Akışı&lt;/b&gt;&lt;br /&gt;Linux çekirdeğinde her tablo/zincirde veri akışı aşağıdaki grafikte gösterilmiştir. Her kutuda zincir ve o zincir için geçerli tablolar gösterilmiştir. Trafik her zincir için geçerli her tablodan sırasıyla geçmektedir. Örneğin,&amp;nbsp; &lt;code&gt;&lt;/code&gt;PREROUTING zincirinde raw, mangle ve nat tabloları var. Trafik akışı sırasıyla bu tabloların üçünden de geçer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Incoming&lt;br /&gt;       Traffic&lt;br /&gt;          |&lt;br /&gt;          |&lt;br /&gt;          V&lt;br /&gt;     +----------+&lt;br /&gt;     |PREROUTING|&lt;br /&gt;     +----------+&lt;br /&gt;     |   raw    |  &amp;lt;--------------+&lt;br /&gt;     |  mangle  |                 |&lt;br /&gt;     |   nat    |                 |&lt;br /&gt;     +----------+                 |&lt;br /&gt;          |                       |&lt;br /&gt;          |                       |&lt;br /&gt;       Routing                    |&lt;br /&gt;    +- Decision -+                |&lt;br /&gt;    |            |                |&lt;br /&gt;    |            |                |&lt;br /&gt;    V            V                |&lt;br /&gt;  Local        Remote             |&lt;br /&gt;Destination   Destination         |&lt;br /&gt;    |            |                |&lt;br /&gt;    |            |                |&lt;br /&gt;    V            V                |&lt;br /&gt;+--------+  +---------+           |&lt;br /&gt;| INPUT  |  | FORWARD |           |&lt;br /&gt;+--------+  +---------+           |&lt;br /&gt;| mangle |  | mangle  |           |&lt;br /&gt;| filter |  | filter  |           |&lt;br /&gt;+--------+  +---------+           |&lt;br /&gt;    |            |                |&lt;br /&gt;    |            |                |&lt;br /&gt;    V            |                |&lt;br /&gt;  Local          |                |&lt;br /&gt; Machine         |                |&lt;br /&gt;    |            |                |&lt;br /&gt;    |            |                |&lt;br /&gt;    V            |                |&lt;br /&gt; Routing         |                |&lt;br /&gt; Decision        |                |&lt;br /&gt;    |            |                |&lt;br /&gt;    |            |                |&lt;br /&gt;    V            |                |&lt;br /&gt;+--------+       |                |&lt;br /&gt;| OUTPUT |       |                |&lt;br /&gt;+--------+       |                |&lt;br /&gt;|  raw   |       |                |&lt;br /&gt;| mangle |       |                |&lt;br /&gt;|  nat   |       |                |&lt;br /&gt;| filter |       |                |&lt;br /&gt;+--------+       |                |&lt;br /&gt;    |            |                |&lt;br /&gt;    |      +-------------+        |&lt;br /&gt;    |      | POSTROUTING |      Local&lt;br /&gt;    +----&amp;gt; +-------------+ --&amp;gt; Traffic&lt;br /&gt;           |   mangle    |&lt;br /&gt;           |     nat     |&lt;br /&gt;           +-------------+&lt;br /&gt;                 |&lt;br /&gt;                 |&lt;br /&gt;                 V&lt;br /&gt;              Outgoing&lt;br /&gt;              Traffic&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Örnek olarak makinede üretilen ve yine makineye dönen bir trafik şu şekilde bir yol izler:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Paket yerel bir süreç ya da çakirdek tarafından üretilir&lt;/li&gt;&lt;li&gt;Yönlendirme kararı&lt;/li&gt;&lt;li&gt;OUTPUT: raw&lt;/li&gt;&lt;li&gt;OUTPUT: mangle&lt;/li&gt;&lt;li&gt;OUTPUT: nat&lt;/li&gt;&lt;li&gt;OUTPUT: filter&lt;/li&gt;&lt;li&gt;POSTROUTING: mangle&lt;/li&gt;&lt;li&gt;POSTROUTING: nat&lt;/li&gt;&lt;li&gt;PREROUTING: raw&lt;/li&gt;&lt;li&gt;PREROUTING: mangle&lt;/li&gt;&lt;li&gt;PREROUTING: nat&lt;/li&gt;&lt;li&gt;Yönlendirme kararı&lt;/li&gt;&lt;li&gt;INPUT: mangle&lt;/li&gt;&lt;li&gt;INPUT: filter&lt;/li&gt;&lt;li&gt;Paket yerel bir süreç ya da çekirdek tarafından alınır&lt;/li&gt;&lt;/ol&gt;&amp;nbsp;&lt;b&gt;Kurallar (Rules)&lt;/b&gt;&lt;br /&gt;Belli zincir/tablolar için hangi paketlere hangi eylemlerin uygulanacağını belirlemek için kurallar tanımlamak yeterlidir. Bütün kurallar bütün zincirlere uygulanmaz. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Zincir yönetiminde kullanılan bazı seçenekler ve parametreler&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Zincir yönetiminde kullanılan seçenekler:&lt;/b&gt;&lt;br /&gt;&lt;div class="example"&gt;-N: Yeni zincir ekleme&lt;br /&gt;-X: Boş zincir silme&lt;br /&gt;-P: Temel zincirlerdeki kuralı (policy) değiştirme&lt;br /&gt;-L: Zincir kurallarını listeleme&lt;br /&gt;-F: Zincirlerdeki kuralları boşaltma&lt;br /&gt;-Z: Zincirlerdeki paket ve byte sayacını sıfırlama &lt;/div&gt;&lt;br /&gt;&lt;b&gt;Zincirlere kural tanımlamak için:&lt;/b&gt;&lt;br /&gt;&lt;div class="example"&gt;-A: Zincire yeni kural ekleme&lt;br /&gt;-I: Zincirde herhangi bir konuma kural eklemek için&lt;br /&gt;-R: Zincirde herhangi bir konumdaki kuralı değiştirmek için&lt;br /&gt;-D: Zincirden herhangi bir kural silmek için&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Zincirdeki kuralların yönetiminde kullanılan parametrelerden bazıları:&lt;/b&gt;&lt;br /&gt;&lt;div class="example"&gt;-p: protokol&lt;br /&gt;-s: kaynak makine&lt;br /&gt;-d: hedef makine&lt;br /&gt;-i: Giriş işleminde kullanılacak arabirim&lt;br /&gt;-o: Çıkış işleminde kullanılacak arabirim&lt;br /&gt;-j: Uygulanacak kural&lt;br /&gt;-t: Kullanılacak zincir&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Basit Komutlar&lt;/b&gt;&lt;br /&gt;&lt;div class="example"&gt;sudo iptables -L&lt;/div&gt;&lt;br /&gt;komutu iptables'taki kurallarınızı listeler. Eğer henüz herhangi bir kural tanımlamadıysanız şu şekilde bir çıktıyla karşılaşıcaksınız:&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Chain INPUT (policy ACCEPT)&lt;br /&gt;target     prot opt source               destination&lt;br /&gt;&lt;br /&gt;Chain FORWARD (policy ACCEPT)&lt;br /&gt;target     prot opt source               destination&lt;br /&gt;&lt;br /&gt;Chain OUTPUT (policy ACCEPT)&lt;br /&gt;target     prot opt source               destination&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Kurulu Oturumlara İzin Vermek:&lt;/b&gt;&lt;br /&gt;Halihazırda kurulu oturumların trafiğine izin vermek için:&lt;br /&gt;&lt;div class="example"&gt;$sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Belli Bir Porttan Gelen Trafiğe İzin Vermek&lt;/b&gt;&lt;br /&gt;Öntanımlı SSH portundan (22) gelen trafiğe izin vermek için, iptables'a bu porttan gelen bütün TCP trafiğine izin vermesini söyleyebilirsiniz:&lt;br /&gt;&lt;div class="example"&gt;$sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT&lt;/div&gt;Komutu incelersek:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;-A INPUT: Gelen trafiğe bakmak için kuralı girdi zincirine ekliyoruz&lt;/li&gt;&lt;li&gt;-p tcp: TCP olup olmadığına bakıyoruz&lt;/li&gt;&lt;li&gt;--dport ssh: Eğer öyleyse, girdinin ssh portuna gidip gitmediğine bakıyoruz&lt;/li&gt;&lt;li&gt;-j ACCEPT: Eğer öyleyse, girdiyi kabul ediyoruz&lt;/li&gt;&lt;/ul&gt;Bu eklemelerden sonra kuralları tekrar kontrol edersek: &lt;br /&gt;&lt;div class="example"&gt;$sudo iptables -L&lt;br /&gt;&amp;nbsp;Chain INPUT (policy ACCEPT)&lt;br /&gt;target&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prot opt source&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; destination&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; all&amp;nbsp; --&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; state RELATED,ESTABLISHED&lt;br /&gt;ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp&amp;nbsp; --&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp dpt:ssh&lt;/div&gt;&lt;br /&gt;Şimdi gelen bütün web trafiğine izin verelim:&lt;br /&gt;&lt;div class="example"&gt;$sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT&lt;/div&gt;Kurallarımızı tekrar kontrol edelim:&lt;br /&gt;&lt;div class="example"&gt;$sudo iptables -L&lt;br /&gt;Chain INPUT (policy ACCEPT)&lt;br /&gt;target&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prot opt source&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; destination&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; all&amp;nbsp; --&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; state RELATED,ESTABLISHED&lt;br /&gt;ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp&amp;nbsp; --&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp dpt:ssh&lt;br /&gt;ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp&amp;nbsp; --&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp dpt:http&lt;/div&gt;Özel olarak ssh ve web trafiğine izin verdik ama herhangi bir engelleme yapmadığımız için bütün trafik devam edecektir. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Trafiği Engelleme&lt;/b&gt;&lt;br /&gt;Bir paketi kabul etmek&lt;b&gt; &lt;/b&gt;için bir kural tanımladığımızda, diğer kurallar onu etkilemez. Ssh ve web trafiğine izin veren kurallarımız önce geldiği sürece bütün  trafiği engellesek de bu portlardan gelen trafik devam edecektir. Önemli  olan bu kuralı sona eklemektir:&lt;br /&gt;&lt;div class="example"&gt;$sudo iptables -A INPUT -j DROP&lt;br /&gt;$sudo iptables -L&lt;br /&gt;Chain INPUT (policy ACCEPT)&lt;br /&gt;target&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prot opt source&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; destination&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; all&amp;nbsp; --&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; state RELATED,ESTABLISHED&lt;br /&gt;ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp&amp;nbsp; --&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp dpt:ssh&lt;br /&gt;ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp&amp;nbsp; --&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp dpt:http&lt;br /&gt;DROP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; all&amp;nbsp; --&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&lt;/div&gt;Özel olarak herhangi bir arayüz(interface) belirtmediğimiz için, ssh ve web haricinde bütün portlardaki ve arayüzlerdeki trafik engellenir.&lt;br /&gt;&lt;b&gt;iptables Düzenleme&lt;/b&gt;&lt;br /&gt;Son tanımladığımız kuralla loopback arayüzü de engellenmiş oldu. Engelleme kuralını özel olarak -i eth0 ile sadece eth0 için tanımlayabilirdik. Bunun yanında loopback için de bir kural ekleyebiliriz. Kuralımızı eklediğimizde en sona geleceği ve onun öncesinde bütün trafiği engellediğimiz için bir işe yaramayacaktır. Bu yüzden bu kuralı dah önceye eklemeliyiz:&lt;br /&gt;&lt;div class="example"&gt;$sudo iptables -I INPUT 1 -i lo -j ACCEPT&lt;br /&gt;$sudo iptables -L&lt;br /&gt;Chain INPUT (policy ACCEPT)&lt;br /&gt;target&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prot opt source&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; destination&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; all&amp;nbsp; --&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; all&amp;nbsp; --&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; state RELATED,ESTABLISHED&lt;br /&gt;ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp&amp;nbsp; --&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp dpt:ssh&lt;br /&gt;ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp&amp;nbsp; --&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp dpt:http&lt;br /&gt;DROP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; all&amp;nbsp; --&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&lt;/div&gt;Bu açıdan bakınca ilk ve son satır neredeyse aynı. Daha detaylı bakmak için:&lt;br /&gt;&lt;div class="example"&gt;$sudo iptables -L -v&lt;br /&gt;Chain INPUT (policy ACCEPT 0 packets, 0 bytes)&lt;br /&gt;&amp;nbsp;pkts bytes target&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prot opt in&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; source&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; destination&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; all&amp;nbsp; --&amp;nbsp; lo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; any&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;2661&amp;nbsp; 616K ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; all&amp;nbsp; --&amp;nbsp; any&amp;nbsp;&amp;nbsp;&amp;nbsp; any&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; state RELATED,ESTABLISHED&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp&amp;nbsp; --&amp;nbsp; any&amp;nbsp;&amp;nbsp;&amp;nbsp; any&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp dpt:ssh&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ACCEPT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp&amp;nbsp; --&amp;nbsp; any&amp;nbsp;&amp;nbsp;&amp;nbsp; any&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp dpt:http&lt;br /&gt;&amp;nbsp; 222 24504 DROP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; all&amp;nbsp; --&amp;nbsp; any&amp;nbsp;&amp;nbsp;&amp;nbsp; any&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; anywhere&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Kaynaklar:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://www.belgeler.org/howto/iptables-usage.html"&gt;http://www.belgeler.org/howto/iptables-usage.html&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="https://help.ubuntu.com/community/IptablesHowTo"&gt;https://help.ubuntu.com/community/IptablesHowTo&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href="http://ornellas.apanela.com/dokuwiki/pub:firewall_and_adv_routing"&gt;http://ornellas.apanela.com/dokuwiki/pub:firewall_and_adv_routing&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-1558927473063163144?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/1558927473063163144/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2011/10/iptables.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/1558927473063163144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/1558927473063163144'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2011/10/iptables.html' title='iptables'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-6844775131982938025</id><published>2011-05-09T21:37:00.000+03:00</published><updated>2011-05-09T21:37:18.837+03:00</updated><title type='text'>Geliştirici Ailesinin En Yeni Üyesi</title><content type='html'>&amp;nbsp;&amp;nbsp;&amp;nbsp; Bugün geliştiri listesine gönderilen bir maille geliştici adaylık başvurumu başarıyla tamamladığım ve geliştirici ailesinin en yeni üyesi olduğum duyuruldu[1] :) Benim için çok sevindirici bir haber, o yüzden tüm ayvalı ıhlamurlar benden :) Bu yazıda da bu güne kadar ki süreçten kısaca bahsetmek istedim.&lt;br /&gt;&amp;nbsp;&amp;nbsp; Çomak projesine başlamamızla beraber Necdet Hoca'nın da dürtmesiyle Pardus geliştiricisi olmak için başvurmuştum. Sürecin nasıl işlediğine dair belge şurada[2]. Hata kaydını açtıktan sonra cevaplamam için 12 sorudan oluşan bir quiz gönderildi ve 10 gün içinde soruları cevaplamam istendi. Daha önceki bildiklerim ve bilmediklerimi de araştırıp öğrenerek soruları cevapladım ve gönderdim. Bundan sonra süreç oldukça yavaş işledi ve geri dönüş almam 3 aydan uzun bir zaman aldı. Ama sonunda cevap geldi ve birkaç gün de mentor atanmasını bekledikten sonra bişeyler yapmaya başlayabildim. Bunun için bugzillada junior job olarak işaretlenmiş hatalardan birini seçmem gerekiyordu.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; İlk olarak zsync paketini seçtim. Çomak projesinde çalışırken çokça yaptığım bir iş pisi paketi yapmak ve bu konuda biraz tecrübe edindim diyebilirim. Her neyse hızlıca zsync programını paketledim ve paket 2011 depolarındaki yerini aldı[3][4]. Daha sonra bir python modülü olan &lt;wbr&gt;&lt;/wbr&gt;python-protobuf-socket-rpc ile ilgilendim[5][6]. O da pek fazla sorun yaşamadan review sürecinden geçerek depolara girdi. Bir sonraki adımda "Bejeweled" veya "Diamond Mine" benzeri bir bulmaca oyunu olan gweled ile uğraştım. Gweled de bu süreç sonunda depolara girdi[7][8]. En son uğraştığım hata ise giver uygulamasının paketlenmesiydi[9]. Onu da paketledim ancak bağımlılıklarının depolarda olmaması gibi sebeple giver depolara giremedi. Bu aşamada mentorum Gökhan Özbulak geliştirici adaylık sürecinde yaptığım çalışmaların yeterli olduğunu söyledi ve bugün itibariyle adaylık başvurusu hatam kapanarak Pardus geliştiricisi oldum.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Benim için oldukça zevkli, bilgilendirici ve zevkle çalıştığım bir süreç oldu. Mentorum Gökhan Özbulak ve hocam Necdet Yücel başta olmak üzere bu süreçte bana yardımını ve desteğini esirgemeyen herkese çok teşekkürler ederim. Bundan sonra da elimden geldiğince Pardus'a katkı vermeye çalışacağım.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[1]&lt;a href="http://lists.pardus.org.tr/gelistirici/2011-May/056248.html"&gt;http://lists.pardus.org.tr/gelistirici/2011-May/056248.html&lt;/a&gt;&lt;br /&gt;[2]&lt;a href="http://developer.pardus.org.tr/guides/newcontributor/how-to-be-contributor.html"&gt;http://developer.pardus.org.tr/guides/newcontributor/how-to-be-contributor.html&lt;/a&gt;&lt;br /&gt;[3]&lt;a href="http://bugs.pardus.org.tr/show_bug.cgi?id=17075" target="_blank"&gt;http://bugs.pardus.org.tr/&lt;wbr&gt;&lt;/wbr&gt;show_bug.cgi?id=17075&lt;/a&gt;&lt;br /&gt;[4]&lt;a href="http://bugs.pardus.org.tr/show_bug.cgi?id=17270" target="_blank"&gt;http://bugs.pardus.org.tr/&lt;wbr&gt;&lt;/wbr&gt;show_bug.cgi?id=17270&lt;/a&gt;&lt;br /&gt;[5]&lt;a href="http://bugs.pardus.org.tr/show_bug.cgi?id=15132" target="_blank"&gt;http://bugs.pardus.org.tr/&lt;wbr&gt;&lt;/wbr&gt;show_bug.cgi?id=15132&lt;/a&gt;&lt;br /&gt;[6]&lt;a href="http://bugs.pardus.org.tr/show_bug.cgi?id=17509" target="_blank"&gt;http://bugs.pardus.org.tr/&lt;wbr&gt;&lt;/wbr&gt;show_bug.cgi?id=17509&lt;/a&gt;&lt;br /&gt;[7]&lt;a href="http://bugs.pardus.org.tr/show_bug.cgi?id=16674" target="_blank"&gt;http://bugs.pardus.org.tr/&lt;wbr&gt;&lt;/wbr&gt;show_bug.cgi?id=16674&lt;/a&gt;&lt;br /&gt;[8]&lt;a href="http://bugs.pardus.org.tr/show_bug.cgi?id=17763" target="_blank"&gt;http://bugs.pardus.org.tr/&lt;wbr&gt;&lt;/wbr&gt;show_bug.cgi?id=17763&lt;/a&gt;&lt;br /&gt;[9]&lt;a href="http://bugs.pardus.org.tr/show_bug.cgi?id=8854"&gt;http://bugs.pardus.org.tr/show_bug.cgi?id=8854&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-6844775131982938025?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/6844775131982938025/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2011/05/gelistirici-ailesinin-en-yeni-uyesi.html#comment-form' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/6844775131982938025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/6844775131982938025'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2011/05/gelistirici-ailesinin-en-yeni-uyesi.html' title='Geliştirici Ailesinin En Yeni Üyesi'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-8279517131354757718</id><published>2011-02-18T21:24:00.000+02:00</published><updated>2011-02-18T21:24:04.819+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bonobo'/><category scheme='http://www.blogger.com/atom/ns#' term='çomak'/><title type='text'>Çomak ve Bonobo Hakkında</title><content type='html'>&amp;nbsp;&amp;nbsp;&amp;nbsp; Bildiğiniz üzere bu hafta içinde Pazartesi günü benimde içinde bulunduğum &lt;a href="http://comakp.blogspot.com/"&gt;Çomak&lt;/a&gt; ekibi ilk meyvesini verdi ve Kde'den bağımsız bir Pardus sürümü olan Bonobo'yu, Lxde masaüstü ortamıyla birlikte &lt;a href="http://comakp.blogspot.com/2011/02/kdesiz-lxdeli-pardus-2011-bonobo.html"&gt;yayınladı&lt;/a&gt;. Daha ilk günden çok sayıda kişi tarafından &lt;a href="http://nyucel.blogspot.com/2011/02/bonobo-bir-gunde-1600den-fazla.html"&gt;indirilen&lt;/a&gt; Bonobo genel olarak iyi tepkilerle karşılandı. Tabii ki eksikleri, hataları var ve biz de ekip olarak kullanıcılar tarafından bize ulaştırılan geri bildirimlerle farkettiğimiz hataları çözerek Bonobo'yu daha hatasız bir hale getirmeye çalışıyoruz. Hataların bize bildirilmesi için proje kapsamında kullandığımız &lt;a href="http://liste.pardus.org.tr/mailman/listinfo/comak"&gt;liste&lt;/a&gt; ve &lt;a href="http://comakp.blogspot.com/"&gt;blog&lt;/a&gt;(yorum yazarak) kullanılabilir. Bu yönde ilk güncelleme ve hata çözümü kısa zamanda &lt;a href="http://comakp.blogspot.com/2011/02/bonobo-arkaplan-sorunu-ve-ilk.html"&gt;yayınlandı&lt;/a&gt;. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bu süreç içinde neler yaptığımızdan bahsetmek gerekirse öncelikle iki grup halinde çalıştığımızı söyleyebilirim. Bir grup Kde kütüphanelerini kullanan Pardus yöneticilerini mümkün olduğunca saf Qt kullanacak ve Kde'ye ihtiyaç duymadan çalışacak şekilde düzenlerken diğer grup da masaüstü ortamlarının eksik pprogramlarının paketlenmesi ve çalışan bir sistem elde etmek üzere çalışmaktayız.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pardus yöneticilerinin nasıl Kde bağımsız hale getirildiği hakkında daha ayrıntılı bilgiyi bu konuda çalışan arkadaşların (&lt;a href="http://aydantasdemir.blogspot.com/"&gt;Aydan&lt;/a&gt;, &lt;a href="http://merveyuzbasioglu.blogspot.com/"&gt;Merve&lt;/a&gt;, &lt;a href="http://gokhana.blogspot.com/"&gt;Gökhan&lt;/a&gt;, &lt;a href="http://orcuna.blogspot.com/"&gt;Orçun&lt;/a&gt;, &lt;a href="http://tayfuryilmaz.blogspot.com/"&gt;Tayfur&lt;/a&gt;, &lt;a href="http://kozdincer.blogspot.com/"&gt;Kaan&lt;/a&gt;, &lt;a href="http://msertacturkel.blogspot.com/"&gt;Sertaç&lt;/a&gt;) ve projenin bloğundan ayrıca daha teknik konuların da konuşulduğu projenin &lt;a href="http://liste.pardus.org.tr/mailman/listinfo/comak"&gt;listesinden&lt;/a&gt; takip edebilirsiniz.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Öte yandan yöneticilerin çalışabileceği masaüstü ortamlarının çalışılabilir hale getirilmesi ve eksik programların paketlenmesi çalışmaları devam etti. Gerekli paketler güncellendi. Bazı programlar(pcmanfm) svn,git sürümlerindeki son hallerine güncellendi. Sanal makinalar üzerinden yaptığımız denemeler sonucu arada, yine sanal makinalarda kullanılabilecek .ova dosyaları &lt;a href="http://comakp.blogspot.com/2011/01/comak-projesinin-ilk-urunu.html"&gt;yayınlandı&lt;/a&gt;. Blogda da bahsedilen LXDM'nin otomatik başlamaması gibi sorunlar halledildi.&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bir diğer adım olarak Enlightenment için de çalışmalarımız hızla devam etmekte. Depodaki Enlightenment paketlerinin dışında bir çok yeni Enlightenment bileşeni ve programı paketlendi. Şimdilik çözmemiz gereken bazı sistem programlarının otomatik çalıştırılması, Pardus'a özel ayarların düzenlenmesi(arkaplan vs), dosya ilişkilendirilmelerinin ayarlanması vb. gibi işlerimiz var.&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Birkaç gün içinde (büyük ihtimalle) bu işleri de halledip Bonobo'dan sonra Enlightenment'la çalışan bir Pardus sürümü yayınlayacağız.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-8279517131354757718?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/8279517131354757718/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2011/02/comak-ve-bonobo-hakknda.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/8279517131354757718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/8279517131354757718'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2011/02/comak-ve-bonobo-hakknda.html' title='Çomak ve Bonobo Hakkında'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-7165117501479521226</id><published>2011-01-10T08:07:00.002+02:00</published><updated>2011-01-10T08:19:59.195+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ncmpcpp'/><category scheme='http://www.blogger.com/atom/ns#' term='mpd'/><title type='text'>Pardus Konsolda Müzik Dinlemek</title><content type='html'>MPD, servis (daemon) olarak sistem arkaplanında çalışan, aynı zamanda masaüstü yöneticisinden ve oturumlardan bağımsız olarak çalışan bir müzik çalma servisidir. Açılımı, Music Player Daemon'dur.&amp;nbsp;Pulseaudio desteği vardır ve son derece hafiftir. İnternet üzerinden müzik yayını yapmanıza izin verir. İnternette çeşitli konfigürasyon ayarlarını bulabilirsiniz.&lt;br /&gt;&lt;br /&gt;Paket deposundan kurmak için:&lt;br /&gt;&lt;b&gt;$ sudo pisi it mpd mpc&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Kurduktan sonra servisi çalıştırmak için:&lt;br /&gt;&lt;b&gt;# service mpd start&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Daha sonra, root olarak /etc/mpd.conf dosyasındaki aşağıdaki satırı kendi müzik dizininize göre değiştirin:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;...&lt;/b&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;music_directory &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "/mnt/archive/music"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;...&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Daha sonra aşağıdaki komutla veritabanını güncelliyoruz:&lt;br /&gt;&lt;b&gt;$ mpc update&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Şimdi de ncmpcpp istemcisini kuralım:&lt;br /&gt;&lt;b&gt;$ sudo pisi it ncmpcpp&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;İstemcimizi de kurduğumuza göre konsolda &lt;i style="font-weight: bold;"&gt;ncmpcpp &lt;/i&gt;komutuyla istemciyi çalıştırıyoruz. 1-9 tuşlarıyla ya da (F1-F9) ncmpcpp görünümleri/tabları arasında geçiş yapabilirsiniz. Önce 1(F1) tuşuyla kısayollara göz atsanız iyi olur. İyi dinlemeler.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ivDJ95ItXGo/TSqk2LPYMdI/AAAAAAAAAFA/Unw45P1Lj5o/s1600/ekran+g%25C3%25B6r%25C3%25BCnt%25C3%25BCs%25C3%25BC1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="115" src="http://3.bp.blogspot.com/_ivDJ95ItXGo/TSqk2LPYMdI/AAAAAAAAAFA/Unw45P1Lj5o/s400/ekran+g%25C3%25B6r%25C3%25BCnt%25C3%25BCs%25C3%25BC1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Kaynak:&amp;nbsp;&lt;a href="http://tr.pardus-wiki.org/MPD"&gt;http://tr.pardus-wiki.org/MPD&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-7165117501479521226?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/7165117501479521226/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2011/01/pardus-konsolda-muzik-dinlemek.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/7165117501479521226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/7165117501479521226'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2011/01/pardus-konsolda-muzik-dinlemek.html' title='Pardus Konsolda Müzik Dinlemek'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ivDJ95ItXGo/TSqk2LPYMdI/AAAAAAAAAFA/Unw45P1Lj5o/s72-c/ekran+g%25C3%25B6r%25C3%25BCnt%25C3%25BCs%25C3%25BC1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-1530936737479958896</id><published>2011-01-07T03:28:00.000+02:00</published><updated>2011-01-07T03:28:12.236+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python ConfigParser (Configuration file parser) Modülü</title><content type='html'>Bu modül ConfigParser sınıfını tanımlar. ConfigParser sınıfı&amp;nbsp;Microsoft Windows INI dosyalarında bulabileceğinize benzer yapıda basit ayar dosyası ayrıştırma(parser) dili gerçekleştiri. Bunu son kullanıcılar tarafında kolaylıkla özelleştirilebilecek Python programları yazmak için kullanabilirsiniz.&lt;br /&gt;&lt;br /&gt;Ayar dosyası [section] başlığıyla sağlanan bölümler ve onu takip eden isim: değer girdileri içerir; isim=değer şeklinde de kullanılabilir. Aradaki boşluklar gözardı edilecektir. '#' ya da ';' ile başlayan satırlar gözardı edilir ve yorum için kullanılabilir.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Yorumlar kendi başlarına boş bir satırda veya değerlerin ya da bölüm isimlerinin bulunduğu satırlarda bulunabilir. İkinci durumda yorum olduklarının anlaşılabilmesi için arada(yorumdan önce) boşluk bulunması gerekir. (Geriye uyumluluk için sadece ; satır içi yorum başlatır.)&lt;br /&gt;&lt;br /&gt;Seçimli(optional) değerler aynı ya da özel bir DEFAULT bölümdeki başka değerlere işaret eden format stringleri içerebilirler.&lt;br /&gt;&lt;br /&gt;Örneğin:&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight-python"&gt;&lt;pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; font-family: sans-serif; font-size: 16px; line-height: 15px; overflow-x: auto; overflow-y: hidden; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"&gt;[Section]&lt;br /&gt;foodir: %(dir)s/whatever&lt;br /&gt;dir=frob&lt;br /&gt;long: this value continues&lt;br /&gt;   in the next line&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;burada %(dir)s dir 'in değerine sahip olacaktır(örnek için flob). Bütün referans genişletmeleri gerektiğinde gerçekleştrilir.&lt;br /&gt;&lt;br /&gt;Öntanımlı(default) değerler ConfigParser yapıcısına sözlük tipinde bir parametre olarak verilebilir. Ek öntanımlılar diğer değerleri geçersiz kılacak get() metoduna verilebilir.Bölümler normalde dahili sözlükte saklanırlar. Alternatif bir sözlük&amp;nbsp;ConfigParser yapıcısına parametre olarak verilebilir.&lt;br /&gt;&lt;br /&gt;Örnekler:&lt;br /&gt;Bir ayar dosyasına yazma örneği:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: hidden; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"&gt;&lt;span class="kn" style="color: #007020; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span class="nn" style="color: #0e84b5; font-weight: bold;"&gt;ConfigParser&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ConfigParser&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RawConfigParser&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="c" style="color: #408090; font-style: italic;"&gt;# When adding sections or items, add them in the reverse order of&lt;/span&gt;&lt;br /&gt;&lt;span class="c" style="color: #408090; font-style: italic;"&gt;# how you want them to be displayed in the actual file.&lt;/span&gt;&lt;br /&gt;&lt;span class="c" style="color: #408090; font-style: italic;"&gt;# In addition, please note that using RawConfigParser's and the raw&lt;/span&gt;&lt;br /&gt;&lt;span class="c" style="color: #408090; font-style: italic;"&gt;# mode of ConfigParser's respective set functions, you can assign&lt;/span&gt;&lt;br /&gt;&lt;span class="c" style="color: #408090; font-style: italic;"&gt;# non-string values to keys internally, but will receive an error&lt;/span&gt;&lt;br /&gt;&lt;span class="c" style="color: #408090; font-style: italic;"&gt;# when attempting to write to a file or when you get it in non-raw&lt;/span&gt;&lt;br /&gt;&lt;span class="c" style="color: #408090; font-style: italic;"&gt;# mode. SafeConfigParser does not allow such assignments to take place.&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_section&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt;'Section1'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt;'Section1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'int'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'15'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt;'Section1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'bool'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'true'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt;'Section1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'float'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'3.1415'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt;'Section1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'baz'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'fun'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt;'Section1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'bar'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'Python'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt;'Section1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'foo'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'&lt;/span&gt;&lt;span class="si" style="color: #70a0d0; font-style: italic;"&gt;%(bar)s&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt; is &lt;/span&gt;&lt;span class="si" style="color: #70a0d0; font-style: italic;"&gt;%(baz)s&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt;!'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="c" style="color: #408090; font-style: italic;"&gt;# Writing our configuration file to 'example.cfg'&lt;/span&gt;&lt;br /&gt;&lt;span class="k" style="color: #007020; font-weight: bold;"&gt;with&lt;/span&gt; &lt;span class="nb" style="color: #007020;"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt;'example.cfg'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'wb'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;as&lt;/span&gt; &lt;span class="n"&gt;configfile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;configfile&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Bir ayar dosyası okuma örneği:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: hidden; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"&gt;&lt;span class="kn" style="color: #007020; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span class="nn" style="color: #0e84b5; font-weight: bold;"&gt;ConfigParser&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ConfigParser&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RawConfigParser&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt;'example.cfg'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="c" style="color: #408090; font-style: italic;"&gt;# getfloat() raises an exception if the value is not a float&lt;/span&gt;&lt;br /&gt;&lt;span class="c" style="color: #408090; font-style: italic;"&gt;# getint() and getboolean() also do this for their respective types&lt;/span&gt;&lt;br /&gt;&lt;span class="nb" style="color: #007020;"&gt;float&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getfloat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt;'Section1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'float'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="nb" style="color: #007020;"&gt;int&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt;'Section1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'int'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="k" style="color: #007020; font-weight: bold;"&gt;print&lt;/span&gt; &lt;span class="nb" style="color: #007020;"&gt;float&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;+&lt;/span&gt; &lt;span class="nb" style="color: #007020;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="c" style="color: #408090; font-style: italic;"&gt;# Notice that the next output does not interpolate '%(bar)s' or '%(baz)s'.&lt;/span&gt;&lt;br /&gt;&lt;span class="c" style="color: #408090; font-style: italic;"&gt;# This is because we are using a RawConfigParser().&lt;/span&gt;&lt;br /&gt;&lt;span class="k" style="color: #007020; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getboolean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt;'Section1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'bool'&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;    &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;print&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt;'Section1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'foo'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ayrıntılı belgelendirme ve daha fazla örnek için:&lt;a href="http://docs.python.org/library/configparser.html"&gt;http://docs.python.org/library/configparser.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-1530936737479958896?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/1530936737479958896/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2011/01/python-configparser-configuration-file.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/1530936737479958896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/1530936737479958896'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2011/01/python-configparser-configuration-file.html' title='Python ConfigParser (Configuration file parser) Modülü'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-2622244172224899722</id><published>2010-12-29T05:16:00.000+02:00</published><updated>2010-12-29T05:16:31.686+02:00</updated><title type='text'>Crontab</title><content type='html'>&lt;style type="text/css"&gt;div.example {   padding: 5px;   font-family: Courier;   border: 1px dashed #cccccc;   background-color: #eeeeff;   margin-left: 5%;   margin-right: 5%; } &lt;/style&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Crontab Nedir?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Cron"&gt;Cron&lt;/a&gt;&lt;b&gt;, &lt;/b&gt;istenilen işlerin belirli aralıklarla sistem arkaplanında çalışmasını sağlayan bir yardımcı yazılımdır. Crontab (CRON TABle - CRON TABlosu) çalıştırılacak cron elemanlarını ve ne zaman çalıştırılacaklarını tutan bir dosyadır. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Nasıl Çalışır?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Bir cron iş takvimi (schedule) basit bir ASCII metin dosyasıdır. Her kullanıcı kendi cron iş takvimine sahiptir. Bu genellikle Linux makinelerde /var/spool/cron/crontabs içinde bulunur. Crontab dosyaları direk olarak değiştirilemez ya da yaratılamaz. crontab komutunu kullanmadan dosyaya erişemezsiniz.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;$ crontab -e&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;komutuyla crontab dosyasını düzenleyebilir ya da eğer yoksa yeni bir dosya oluşturabilirsiniz. Dosya sistemdeki varsayılan metin editörüyle açılacaktır. export EDITOR=vi ile vi'yi varsayılan editör yapabilirsiniz (ya da vi yerine istediğiniz editörü yazabilirsiniz).&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;Bütün cron işleri en az 6 bölümden oluşur. Her bölüm tek boşlukla ayrılır. Son bölüm kendi içinde boşluklar barındırabilir. İlk 5 bölümde kendi aralarında kullanılması haricinde boşluğa izin verilmez. Bu ilk 5 Bölüm bir işin ne zaman ve hangi aralıklarla çalışacağını belirler.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Bir işin genel yapısı şu şekildedir:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;*&amp;nbsp;&amp;nbsp; * &amp;nbsp; * &amp;nbsp; * &amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; çalıştırılacak komut&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; +---- day of week - haftanın günü (0-7) (pazar için 0, isim kullanılabilir(ingilizce))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; +-------- month - ay (1-12) (veya ay isimleri)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp; +------------- day of month - ayın günü (1-31)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp; +----------------- hour - saat (0-23)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;+---------------------- minute - dakika (0-59)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Yıldız (*) o zaman birimindeki tüm geçerli değerlerin kullanılacağı anlamına gelir (her saat, haftanın her günü gibi).&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Bir zaman biriminde birden fazla değer kullanmak için değerleri virgülle (,) ayırmak gerekir. Eğer bir aralık girmek istiyorsanız başlangıç ve bitir tire (-) ile ayrılır. Örneğin, eğer komutunuzun pazartesiden cumaya her saat için :05 ve :35 geçe çalışmasını istiyorsanız girdiniz şu şekilde olmalıdır:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;5,35 * * * 1-5&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Altıncı bölüm verilen zaman(lar)da çalıştırılacak komutu içerir. Örneğin, "temp" dizininizi her sabah 4:45'te temizlemek için:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;45 4 * * * rm /home/{kullanıcı-ismi}/temp/*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Dosya kaydedildiği zaman çalışmaya başlar. Başlatmak için herhangi bir şey yapmanıza ya da bir program çalıştırmanıza gerek yoktur. Crontab dosyada bir komut olduğunda zamanı geldiğinde çalıştıracaktır. Bir girdinin/komutun çalışmasını istemediğinizde silmeniz ya da yorum satırı haline getirmeniz yeterlidir (başına # koyarak).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Crontab ile kullanılabilecek parametreler:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;crontab -e&amp;nbsp;&amp;nbsp;&amp;nbsp; crobtab dosyasını düzenler, yoksa yeni bir tane yaratır&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;crontab -l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crontab dosyasını listeler&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;crontab -r&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crontab dosyasını siler&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Daha fazla bilgi ve örnek için man dosyasına bakabilirsiniz.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Öntanımlı olarak cron iş çalıştırıldıktan sonra kullanıcıya email gönderir. Bu özelliği kapatmak için her girdinin/işin sonuna&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;eklenebilir.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Olayları bir log dosyasında toplamak içinse:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;45&amp;nbsp; 4 * * * rm /home/{kullanıcı-ismi}/temp/* &amp;gt; /home/&lt;/span&gt;&lt;span style="font-size: small;"&gt;{kullanıcı-ismi}/cronlogs/log.txt &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Log dosyasına yönlendirirken &amp;gt; kullanmak varolanı değiştirmek, &amp;gt;&amp;gt; kullanmak yeni girdiyi dosyanın sonuna eklemek anlamına gelir.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="example"&gt;&lt;pre class="screen"&gt;&lt;span style="font-size: small;"&gt;# komutları çalıştırmak için /bin/sh kullanılsın,&lt;br /&gt;# /etc/passwd'de belirtilen önemsizdir&lt;br /&gt;SHELL=/bin/sh&lt;br /&gt;# kimin crontab’ı olduğunu boşver, bütün çıktıları ‘paul’e postala&lt;br /&gt;MAILTO=paul&lt;br /&gt;#&lt;br /&gt;# hergün gece yarısından sonra beş dakika çalıştır&lt;br /&gt;5 0 * * *       $HOME/bin/daily.job &amp;gt;&amp;gt; $HOME/tmp/out 2&amp;gt;&amp;amp;1&lt;br /&gt;# her ayın ilk günü saat 14:15 de çalıştır -- çıktılar paul’e postalansın&lt;br /&gt;15 14 1 * *     $HOME/bin/monthly&lt;br /&gt;# hafta içi (Pazartesi-Cuma) hergün saat 22:00’da çalıştır ve Joe’yu kızdır&lt;br /&gt;0 22 * * 1-5   mail -s "Saat 22:00" joe%Joe,%%Çocukların nerede?%&lt;br /&gt;23 0-23/2 * * * echo "her gün 00:23, 02:23, 04:23 de çalışır"&lt;br /&gt;5 4 * * sun     echo "her Pazar 4:05’de çalışır"&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Bkn: &lt;/b&gt;[1]&lt;b&gt;&lt;a href="http://www.linuxweblog.com/crotab-tutorial"&gt;http://www.linuxweblog.com/crotab-tutorial&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;[2]&lt;b&gt;&lt;a href="http://adminschoice.com/crontab-quick-reference"&gt;http://adminschoice.com/crontab-quick-reference&lt;/a&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;[3]&lt;b&gt;&lt;a href="http://www.belgeler.org/man/man5/man5-crontab.html"&gt;http://www.belgeler.org/man/man5/man5-crontab.html&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-2622244172224899722?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/2622244172224899722/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2010/12/crontab.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/2622244172224899722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/2622244172224899722'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2010/12/crontab.html' title='Crontab'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-6835059601312408413</id><published>2010-11-06T23:32:00.001+02:00</published><updated>2010-11-07T00:51:21.599+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pyqt'/><title type='text'>PyQt'yi Etkileşimli(interactive) Kullanmak</title><content type='html'>&amp;nbsp;&amp;nbsp; &amp;nbsp;PyQt ile ilgili olarak Qt kodunun etkileşimli olarak kodlanabileceğini öğrendim. Qt'de yeni bir şeyler öğrenirken çok işe yarayabilecek bir özellik. Şöyle ki konsoldan python yazarak Python yorumlayıcısını açalım.&amp;nbsp;&lt;style type="text/css"&gt;div.example {   padding: 5px;   font-family: Courier;   border: 1px dashed #cccccc;   background-color: #eeeeff;   margin-left: 5%;   margin-right: 5%; } &lt;/style&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Şimdi basit bir pencere yaratalım(kodun kopyalanabilmesi için &amp;gt;&amp;gt;&amp;gt; kullanılmadı):&lt;/div&gt;&lt;div class="example"&gt;PyQt4.QtCore import *&lt;br /&gt;from PyQt4.QtGui import *&lt;br /&gt;app = QApplication([])&lt;br /&gt;window = QWidget()&lt;br /&gt;window.resize(400, 300)&lt;br /&gt;window.show()&lt;/div&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Şöyle pencere göreceksiniz:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_ivDJ95ItXGo/TNXDMb1pYCI/AAAAAAAAAEE/UV8T_RQkSUI/s1600/ekran+g%C3%B6r%C3%BCnt%C3%BCs%C3%BC21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://1.bp.blogspot.com/_ivDJ95ItXGo/TNXDMb1pYCI/AAAAAAAAAEE/UV8T_RQkSUI/s320/ekran+g%C3%B6r%C3%BCnt%C3%BCs%C3%BC21.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Hadi bir buton ekleyelim:&lt;br /&gt;&lt;div class="example"&gt;button = QPushButton("Tikla!", window)&lt;br /&gt;button.show()&lt;/div&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;İşte interaktif şekilde butonumuzu ekledik:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ivDJ95ItXGo/TNXFPqeMaPI/AAAAAAAAAEI/tdr4BwH_0zw/s1600/ekran+g%C3%B6r%C3%BCnt%C3%BCs%C3%BC22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://4.bp.blogspot.com/_ivDJ95ItXGo/TNXFPqeMaPI/AAAAAAAAAEI/tdr4BwH_0zw/s320/ekran+g%C3%B6r%C3%BCnt%C3%BCs%C3%BC22.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Şimdi de butonumuzu pencerenin ortasına alalım:&lt;br /&gt;&lt;div class="example"&gt;&lt;br /&gt;layout = QHBoxLayout(window)&lt;br /&gt;layout.addWidget(button)&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_ivDJ95ItXGo/TNXHyrSbOII/AAAAAAAAAEM/dZ1EcWkX1yM/s1600/ekran+g%C3%B6r%C3%BCnt%C3%BCs%C3%BC23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://1.bp.blogspot.com/_ivDJ95ItXGo/TNXHyrSbOII/AAAAAAAAAEM/dZ1EcWkX1yM/s320/ekran+g%C3%B6r%C3%BCnt%C3%BCs%C3%BC23.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Şimdi addStretch() özelliğinin görünüme etkisine bakalım:&lt;br /&gt;&lt;div class="example"&gt;&lt;span class="Apple-style-span" style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; font-size: 12px; line-height: 14px;"&gt;layout.addStretch()&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ivDJ95ItXGo/TNXHzBseebI/AAAAAAAAAEQ/uG8c_kdfso8/s1600/ekran+g%C3%B6r%C3%BCnt%C3%BCs%C3%BC24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://3.bp.blogspot.com/_ivDJ95ItXGo/TNXHzBseebI/AAAAAAAAAEQ/uG8c_kdfso8/s320/ekran+g%C3%B6r%C3%BCnt%C3%BCs%C3%BC24.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Ve kolaylıkla butonumuzun tıklanma(clicked) özelliğine bir slot bağlayabiliriz(ifade biraz karışık oldu :| ):&lt;br /&gt;&lt;div class="example"&gt;&lt;br /&gt;def mySlot():&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;print "Buton Tiklandi"&lt;br /&gt;button.clicked.connect(mySlot)&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Görüldüğü üzere Qt'yi denemek için iyi bir yöntem.&lt;br /&gt;&lt;br /&gt;Kaynak:&lt;a href="http://pysnippet.blogspot.com/2010/11/getting-interactive-with-pyqt.html"&gt;http://pysnippet.blogspot.com/2010/11/getting-interactive-with-pyqt.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-6835059601312408413?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/6835059601312408413/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2010/11/pyqtyi-etkilesimliinteractive-kullanmak.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/6835059601312408413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/6835059601312408413'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2010/11/pyqtyi-etkilesimliinteractive-kullanmak.html' title='PyQt&apos;yi Etkileşimli(interactive) Kullanmak'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_ivDJ95ItXGo/TNXDMb1pYCI/AAAAAAAAAEE/UV8T_RQkSUI/s72-c/ekran+g%C3%B6r%C3%BCnt%C3%BCs%C3%BC21.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-3802671122785718100</id><published>2010-11-05T04:35:00.002+02:00</published><updated>2010-11-05T05:49:38.057+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='socket'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python'da Socket Programlama</title><content type='html'>&lt;style type="text/css"&gt;div.example {   padding: 5px;   font-family: Courier;   border: 1px dashed #cccccc;   background-color: #eeeeff;   margin-left: 5%;   margin-right: 5%; } &lt;/style&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Socketler ve portlar ağlarla ilgili çoğu programın temelini oluşturur. Soketler, bir tür süreçler arası haberleşme(interprocessing) yöntemidir. Soket, soyut bir tanımla haberleşme uç noktalarıdır. Pratik olarak soketler dosyalara benzer. Soketten okumak ile dosyadan okumak arasında hiçbir fark yoktur. Socketler için üç alan(domain) tanımlanmıştır:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;i&gt;Unix Alanı/Dosya-Sistemi Alanı &lt;/i&gt;: Bu alandaki socketler bir sistemde iki veya daha süreç birbiriyle haberleşeceği zaman kullanılır. Socketler dosya sistemi içinde yaratılırlar.&amp;nbsp;/var/lock/sock ya da /tmp/sock gibi yerel yolları içerecek şekilde string olarak gösterilirler&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;i&gt;İnternet Alanı&lt;/i&gt;&amp;nbsp;: Bu alan TCP/IP üzerinden haberleşen süreçleri göstermektedir. Bu alanda yaratılan socketler (host, port) çiftleri şeklinde gösterilmektedir. Host, string ya da IP adresi şeklinde gösterilebilen host ismidir. Port ise o host üzerinde bağlanılacak portun sayısal değeridir.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;i&gt;NS Alanı &lt;/i&gt;: Bu artık kullanılmayan Xerox protokolü üzerinden haberleşen süreçler için kullanılır.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Bunlardan sadece ilk ikisi çoğunlukla kullanılmaktadır. Python hepsini destekler. Aşağıda TCP/IP socketleri kullanan bir uygulama yaratmak için gerekli adımlar sıralanmıştır:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;1. Socketi yaratmak (create)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;2. Sockete bağlanmak (connecting)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;3. Socketi bir adrese bağlamak (binding to an address)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;4. Bağlantıları dinlemek ve kabul etmek (listening and accepting connections)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;5. &lt;i&gt;Veri göndermek/veri almak&lt;/i&gt; (transffering and recieveing &amp;nbsp;data)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Bir socket yaratmadan önce kütüphanelerin yüklenmesi gerekir. &lt;i&gt;socket &lt;/i&gt;modülü socketlerle çalışmak için gerekli herşeyi içerir.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;1.&amp;nbsp;Socket Yaratmak&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;Python'da socket yaratmak için socket() metodu kullanılır.&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="example"&gt;socket(&lt;i&gt;family&lt;/i&gt;,&amp;nbsp;&lt;i&gt;type,&amp;nbsp;&lt;/i&gt;[&lt;i&gt;protocol&lt;/i&gt;])&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;family &lt;/i&gt;: family parametresi socketin hangi alan için yaratıldığını belirtir. Birçok seçenek mevcuttur.&amp;nbsp;Genel kullanılanlar ise Unix alanı için AF_UNIX ve internet alanı için AF_INET.&lt;/li&gt;&lt;li&gt;&lt;i&gt;type &lt;/i&gt;: type kullanılacak protokol tipini belirtir. Tip TCP gibi bağlantı yönelimli (connection-oriented) ya da UDP gibi bağlantısız (connection-less) olabilir. TCP için SOCK_STREAM, UDP için SOCK_DGRAM sabitleri tanımlanmıştır. Diğer geçerli seçenekler ise SOCK_RAW, SOCK_SEQPACKET ve SOCK_RDM.&lt;/li&gt;&lt;li&gt;&lt;i&gt;protokol &lt;/i&gt;: Bu parametre genellikle varsayılan değer olan 0 olarak bırakılır.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Bunlar göz önüne alındığında internet alanı bir socket yaratmak için:&lt;/div&gt;&lt;div class="example"&gt;s = socket.socket(AF_INET, SOCK_STREAM)&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;2. &lt;i&gt;Sockete bağlanmak&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/i&gt;Yaratılan socketler sunucu-taraflı (server-side) ya da istemci-taraflı (client-side) olarak kullanılabilir. Sunucu-taraflı kullanılacaksa bir hosta bağlanması gerekir. Bunu socket nesnesinin connect() metodu ile gerçekleştiririz. connect() metodu host adresini ya da host adresi ve port numarasından oluşan (host, port) şeklinde bir ikiliyi kabul eder. Örneğin adresi 192.168.51.102 ve port numarası 8080 olan bir hosta bağlanmak için:&lt;br /&gt;&lt;div class="example"&gt;s.connect(("192.168.51.102", 8080))&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;3.&amp;nbsp;&lt;i&gt;Socketi bir adrese bağlamak&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/i&gt;Eğer sunucu-taraflı kullanılacaksa socketin bir adres ve porta bağlanması gerekir. Bunun için bind() metodu kullanılır. bind() metodu parametre olarak socketin bağlanacağı adres ve gelen istekleri dinleyeceği port numarasından oluşan (host, port) şeklinde ikiliyi alır. Örnekse:&lt;br /&gt;&lt;div class="example"&gt;s.bind(("192.168.51.107, 8080))&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;4. &lt;i&gt;Bağlantı dinlemek ve kabul etmek&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/i&gt;Socket belli bir adrese bağlandıktan sonra, belirtilen porttan gelen istekleri dinlemek için görevlendirilmesi gerekir. Bu amaçla listen() metodu kullanılır. Parametre olarak kaç bağlantının kabul edileceğini alır. En az 1 olamalıdır. Aşağıda 2 bağlantı kabul edilmiştir:&lt;br /&gt;&lt;div class="example"&gt;s.listen(2)&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Yapılması gereken sonraki adım bağlantıları kabul etmektir. Bunun için accept() metodu kullanılır. Geriye istemciyi temsil eden bir socket nesnesi ve istemcinin adresini döndürür:&lt;br /&gt;&lt;div class="example"&gt;istemsock, adres = s.accept()&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;5.&amp;nbsp;&lt;i&gt;Veri göndermek/veri almak&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/i&gt;Veri recv() ve send() metodlarıyla aktarılabilir. recv() metodu sunucu ya da istemciden gönderilen veriyi almak için kullanılır. Parametreler tampon boyu (buffer size) ve bayraklardır (flags). Bayraklar isteğe bağlıdır. Veri almak için kod:&lt;br /&gt;&lt;div class="example"&gt;tampon = 1024&lt;br /&gt;s.recv(tampon)&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Veri göndermek içinse send() metodu çağrılır. Parametre olarak gönderilecek veri ve bayrak alır. Örnekse:&lt;br /&gt;&lt;div class="example"&gt;veri = raw_input("&amp;gt;&amp;gt;")&lt;br /&gt;s.send(veri)&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Python'un &lt;a href="http://docs.python.org/library/socket.html"&gt;socket&lt;/a&gt;&amp;nbsp;dökümantasyonunda bulunan sunucu ve istemci örneğiyse şu şekilde:&lt;br /&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Sunucu:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"&gt;&lt;span class="c" style="color: #408090; font-style: italic;"&gt;# Echo server program&lt;/span&gt;&lt;br /&gt;&lt;span class="kn" style="color: #007020; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span class="nn" style="color: #0e84b5; font-weight: bold;"&gt;socket&lt;/span&gt;&lt;br /&gt;&lt;span class="kn" style="color: #007020; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span class="nn" style="color: #0e84b5; font-weight: bold;"&gt;sys&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="n"&gt;HOST&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="bp" style="color: #007020;"&gt;None&lt;/span&gt;               &lt;span class="c" style="color: #408090; font-style: italic;"&gt;# Symbolic name meaning all available interfaces&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;PORT&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="mi" style="color: #208050;"&gt;50007&lt;/span&gt;              &lt;span class="c" style="color: #408090; font-style: italic;"&gt;# Arbitrary non-privileged port&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="bp" style="color: #007020;"&gt;None&lt;/span&gt;&lt;br /&gt;&lt;span class="k" style="color: #007020; font-weight: bold;"&gt;for&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="ow" style="color: #007020; font-weight: bold;"&gt;in&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getaddrinfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;HOST&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AF_UNSPEC&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;br /&gt;                              &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SOCK_STREAM&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi" style="color: #208050;"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AI_PASSIVE&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;af&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;socktype&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;proto&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;canonname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sa&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;&lt;br /&gt;    &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;af&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;socktype&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;proto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;except&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="bp" style="color: #007020;"&gt;None&lt;/span&gt;&lt;br /&gt;        &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;continue&lt;/span&gt;&lt;br /&gt;    &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sa&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: #208050;"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;except&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="bp" style="color: #007020;"&gt;None&lt;/span&gt;&lt;br /&gt;        &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;continue&lt;/span&gt;&lt;br /&gt;    &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;break&lt;/span&gt;&lt;br /&gt;&lt;span class="k" style="color: #007020; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="ow" style="color: #007020; font-weight: bold;"&gt;is&lt;/span&gt; &lt;span class="bp" style="color: #007020;"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;print&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'could not open socket'&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: #208050;"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;addr&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;accept&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span class="k" style="color: #007020; font-weight: bold;"&gt;print&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'Connected by'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;addr&lt;/span&gt;&lt;br /&gt;&lt;span class="k" style="color: #007020; font-weight: bold;"&gt;while&lt;/span&gt; &lt;span class="mi" style="color: #208050;"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;recv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: #208050;"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span class="ow" style="color: #007020; font-weight: bold;"&gt;not&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;break&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;&lt;i&gt;İstemci:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 16px; font-style: normal; font-weight: normal;"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"&gt;&lt;span class="c" style="color: #408090; font-style: italic;"&gt;# Echo client program&lt;/span&gt;&lt;br /&gt;&lt;span class="kn" style="color: #007020; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span class="nn" style="color: #0e84b5; font-weight: bold;"&gt;socket&lt;/span&gt;&lt;br /&gt;&lt;span class="kn" style="color: #007020; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span class="nn" style="color: #0e84b5; font-weight: bold;"&gt;sys&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="n"&gt;HOST&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'daring.cwi.nl'&lt;/span&gt;    &lt;span class="c" style="color: #408090; font-style: italic;"&gt;# The remote host&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;PORT&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="mi" style="color: #208050;"&gt;50007&lt;/span&gt;              &lt;span class="c" style="color: #408090; font-style: italic;"&gt;# The same port as used by the server&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="bp" style="color: #007020;"&gt;None&lt;/span&gt;&lt;br /&gt;&lt;span class="k" style="color: #007020; font-weight: bold;"&gt;for&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="ow" style="color: #007020; font-weight: bold;"&gt;in&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getaddrinfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;HOST&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AF_UNSPEC&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SOCK_STREAM&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;af&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;socktype&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;proto&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;canonname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sa&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;&lt;br /&gt;    &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;af&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;socktype&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;proto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;except&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="bp" style="color: #007020;"&gt;None&lt;/span&gt;&lt;br /&gt;        &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;continue&lt;/span&gt;&lt;br /&gt;    &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sa&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;except&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="bp" style="color: #007020;"&gt;None&lt;/span&gt;&lt;br /&gt;        &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;continue&lt;/span&gt;&lt;br /&gt;    &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;break&lt;/span&gt;&lt;br /&gt;&lt;span class="k" style="color: #007020; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="ow" style="color: #007020; font-weight: bold;"&gt;is&lt;/span&gt; &lt;span class="bp" style="color: #007020;"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class="k" style="color: #007020; font-weight: bold;"&gt;print&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'could not open socket'&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: #208050;"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s" style="color: #4070a0;"&gt;'Hello, world'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o" style="color: #666666;"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;recv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi" style="color: #208050;"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o" style="color: #666666;"&gt;.&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span class="k" style="color: #007020; font-weight: bold;"&gt;print&lt;/span&gt; &lt;span class="s" style="color: #4070a0;"&gt;'Received'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb" style="color: #007020;"&gt;repr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Kaynak ve Bknz:&lt;a href="http://www.devshed.com/c/a/Python/Sockets-in-Python-Into-the-World-of-Python-Network-Programming/"&gt;http://www.devshed.com/c/a/Python/Sockets-in-Python-Into-the-World-of-Python-Network-Programming/&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/library/socket.html"&gt;http://docs.python.org/library/socket.html&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://cekirdek.uludag.org.tr/~meren/belgeler/socket/socket.htm"&gt;http://cekirdek.uludag.org.tr/~meren/belgeler/socket/socket.htm&lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-3802671122785718100?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/3802671122785718100/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2010/11/pythonda-socketler.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/3802671122785718100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/3802671122785718100'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2010/11/pythonda-socketler.html' title='Python&apos;da Socket Programlama'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-2025331691186577959</id><published>2010-11-03T02:52:00.001+02:00</published><updated>2010-11-03T02:53:05.464+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pardus'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='yerel depo'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Yerelde SVN Deposu Yaratmak</title><content type='html'>&amp;nbsp;&amp;nbsp; &amp;nbsp;Projelerinizdeki değişimleri takip edebilmek ve gerektiğinde eski bir duruma ulaşabilmek, projenin gelişimi sürecinde çoğu zaman ihtiyaç duyacağınız bir durumdur. Bunun için &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; (SVN) kullanmak ve projelerinizi sürümlendirmek oldukça uygun ve güçlü bir yöntemdir. Biz de bu amaçla yerelde bir SVN deposunun nasıl yaratılacağına ve kullanılacağına bakacağız. Yaratacağımız depo tek kullanıcı tarafından kullanılacak ki bu da sizsiniz.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;Depoyu Yaratmak&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Öncelikle sisteminizde Subversion'un kurulu olduğundan emin almalısınız. &lt;b&gt;$ svn --version &lt;/b&gt;komutuyla sistemde kurulu olup olmadığını görebilirsiniz. Eğer kurulu değilse &lt;b&gt;$&amp;nbsp;sudo pisi it subversion &lt;/b&gt;komutuyla kurabilirsiniz. Şimdi ilk yapacağımız iş depomuzu yaratmak. Bunun için konsolda şu komutları veriyoruz:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;$ mkdir /home/user/svndepo &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/b&gt;#user yerine kullanıcı isminiz gelmeli&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$ cd ~/svndepo&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$ svnadmin create proje1&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Bu komutlarla kullanıcı dizininde tüm depolarımızı barındıracak "svndepo" isminde yeni bir dizin oluşturduk. Daha sonra bu dizine girdik. Hemen arkasından "svnadmin" komutuyla "proje" isimli depomuzu gerçekten yarattık. Depomuz şu anda boş ve uyarlama 0 (revision 0) durumunda. Depoya bazı veriler girer girmez bu durum değişecek. Şimdi yapmamız gereken depomuza başlangıç projemizi aktarmak:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$&amp;nbsp;&lt;b&gt;svn import /home/user/proje1 file:///home/user/svndepo/proje1/trunk -m "proje1'in ilk aktarımı"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/b&gt;Bu komutla "proje1"in dosyalarını depoya aktardık(proje1'in /home/user/proje1'de olduğunu varsayalım). Proje dizininin sonuna "trunk" eklememizin sebebi bunun birçok Subversion kullanıcısı tarafından kullanılan bir dizin düzenleme geleneği olması. Son kısımsa SVN log 'da aktarmaya eklenecek bilgi içindir. Bu şekilde depomuzu yarattık ve dosyalarımızı aktardık. Şimdi verileri çekip çalışmaya başlamaya hazırız.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;Bir Çalışma Örneği Çekmek ve Çalışmaya Başlamak&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/b&gt;SVN kullanırken doğrudan depo üzerinde çalışmak yerine bir çalışma örneği çeker ve onun üzerinde çalışırsınız. Çalıma örneğini çekmek için:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;$ svn co file:///home/user/svndepo/proje1/trunk /home/user/proje1_calisma_ornegi&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/b&gt;Bu komut "/home/user/proje1_calısma_ornegi" dizini altında deponun bir çalışma örneğini oluşturacaktır. Artık çalışmalarımızı bu dizin/örnek üzerinde yapacağız. Değişiklikleri yaptıktan sonra depoya göndermemiz gerekecek. Çalışma dizininde oluğumuzu düşünürsek bunun için şu komutu vereceğiz:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;$ svn commit -m "degisikliklerle ilgili bilgi"&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/b&gt;Böylece değişiklikleri depoya göndermiş olduk.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Kaynak:&lt;a href="http://www.guyrutenberg.com/2007/10/29/creating-local-svn-repository-home-repository/"&gt;http://www.guyrutenberg.com/2007/10/29/creating-local-svn-repository-home-repository/&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SVN kullanımıyla ilgili:1 -&amp;nbsp;&lt;a href="http://tr.pardus-wiki.org/Pardus:Yeni_geli%C5%9Ftirici_k%C4%B1lavuzu#Subversion_kullan.C4.B1m.C4.B1"&gt;http://tr.pardus-wiki.org/Pardus:Yeni_geli%C5%9Ftirici_k%C4%B1lavuzu#Subversion_kullan.C4.B1m.C4.B1&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://tr.pardus-wiki.org/Pardus:Yeni_geli%C5%9Ftirici_k%C4%B1lavuzu#Subversion_kullan.C4.B1m.C4.B1"&gt;&lt;/a&gt;&lt;/b&gt;&amp;nbsp;2 -&amp;nbsp;&lt;a href="http://svnbook.red-bean.com/"&gt;http://svnbook.red-bean.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-2025331691186577959?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/2025331691186577959/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2010/11/yerelde-svn-deposu-yaratmak.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/2025331691186577959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/2025331691186577959'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2010/11/yerelde-svn-deposu-yaratmak.html' title='Yerelde SVN Deposu Yaratmak'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-1089649117476382620</id><published>2010-10-29T04:23:00.004+03:00</published><updated>2010-10-29T06:32:42.154+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kütüphane'/><title type='text'>Statik ve Dinamik Kütüphaneler</title><content type='html'>&lt;div&gt;Yazılım kütüphaneleri, daha sonra yeni geliştirilecek yazılımlara dahil edilmek üzere saklanan derlenmiş hazır kod ve veri dosyalarıdır. Bazı sebeplerden dolayı kütüphaneler önceden derlenmiş olarak bulunurlar. İlk sebep, kütüphanelerin nadiren değişmesidir. Kullanıldıkları her bir program için kütüphanelerin yeniden derlenmesi vakit kaybı olurdu. İkinci bir sebep de derlenmiş (makine koduna dönüştürülmüş) oldukları için dışarıdan müdahale edilememesidir. Bu da iş dünyası söz konusu olduğunda ya da kişiler çeşitli sebeplerle kodlarını açmak istemediklerinde önem kazanmaktadır.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;&lt;/span&gt;&lt;b&gt;Statik Kütüphaneler&lt;/b&gt;&lt;div&gt;Statik kütüphaneler, yeniden derlenmeye ihtiyaç duymaksızın yazılıma derleme aşamasında yani çalıştırılmadan önce eklenir. Bir programı statik kütüphane kullanacak şekilde derlediğinizde, programının kütüphanenin bütün işlevselliğine sahip olur. Statik kütüphane dosyalarının uzantıları ".a" şeklindedir. Statik kütüphaneleri kullanmanın bir avantajı programınızı tek bir çalıştırılabilir dosya şeklinde dağıtmanızı sağlamasıdır. Ayrıca kütüphane, programınızın bir parçası olduğu için her zaman doğru versiyonun kullanıldığından emin olursunuz. Diğer taraftan kütüphanenin her programa eklenmesi hafıza israfına yol açmaktadır. Ayrıca statik kütüphanelerin güncellenmesi de pek kolay değildir. Bunun için tüm programın yeniden derlenmesi gerekir.&lt;/div&gt;&lt;div&gt;  &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;Dinamik Kütüphaneler&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Dinamik (shared-paylaşımlı) kütüphaneler ise programa çalışma sırasında dahil edilirler. Programınızı dinamik kütüphane kullanacak şekilde derlediğinizde, kütüphane programa o anda dahil edilmez, programa kod eklenmez. Uzantıları ".so" şeklindedir. Bu şekilde farklı programlar aynı kütüphaneyi ortak olarak kullanırlar ve bu sayede program boyutları daha küçülmüş olur. Ayrıca güncelleme yapmak için de kütüphaneyi kullanan tüm programların yeniden derlenmesi gerekmeyeceği için işlem daha kolaydır. &lt;/div&gt;&lt;br /&gt;Kaynaklar:&lt;a href="http://www.belgeler.org/howto/gcc-baslangic-libs.html"&gt;http://www.belgeler.org/howto/gcc-baslangic-libs.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.learncpp.com/cpp-tutorial/a1-static-and-dynamic-libraries/"&gt;http://www.learncpp.com/cpp-tutorial/a1-static-and-dynamic-libraries/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-1089649117476382620?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/1089649117476382620/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2010/10/statik-ve-dinamik-kutuphaneler.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/1089649117476382620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/1089649117476382620'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2010/10/statik-ve-dinamik-kutuphaneler.html' title='Statik ve Dinamik Kütüphaneler'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-6922251603101986616</id><published>2010-10-20T00:43:00.003+03:00</published><updated>2010-10-20T03:14:23.948+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pardus'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Pardus'ta Android SDK</title><content type='html'>Hadi Pardus'a Android SDK kuralım.&lt;br /&gt;Önce &lt;a href="http://developer.android.com/sdk/requirements.html"&gt;sistem gereksinimlerine&lt;/a&gt; bakarak bilgisayarımızın SDK kurulumu için gerekli özellikleri sağlayıp sağlamadığını görelim. Daha fazla devam etmeden sistemimize &lt;a href="http://java.sun.com/javase/downloads/index.jsp"&gt;JDK&lt;/a&gt; kurmamız gerekecek(eğer kurulu değilse). Bunun depodan sun-jdk paketini kurmalıyız:&lt;br /&gt;&lt;br /&gt;$ sudo pisi it sun-jdk&lt;br /&gt;&lt;br /&gt;Eğer geliştirmeyi Eclipse üzerinden Android Development Tools (ADT) Plugin ile yapacaksak -ki yeni başlayanlar için tavsiye edilen budur- sistemimizde Eclipse de olması gerekiyor doğal olarak :) Eclipse'in uygun bir sürümünü &lt;a href="http://www.eclipse.org/downloads/"&gt;şu adresten&lt;/a&gt; indirip kurabileceğiniz gibi:&lt;br /&gt;&lt;br /&gt;$ sudo pisi it eclipse-jdt-binary&lt;br /&gt;&lt;br /&gt;komutuyla depodan da kurabilirsiniz. Eclipse'i de kurduktan sonra şimdi yapmamız gereken Android SDK başlangıç paketini(starter package) kurmak. Bu paket bütün bir geliştirme ortamından ziyade diğer SDK parçalarını indirebileceğiniz bir temel araçları içerir. Uygun SDK başlangıç paketini &lt;a href="http://developer.android.com/sdk/index.html"&gt;şu adresten&lt;/a&gt; indirip güvenli bir yere açıyoruz. İndirdiğiniz dosyayı açtığınızda öntanımlı olarak android-sdk-&lt;makine-platformu&gt; şeklinde bir dosya ortaya çıkacak. Örn. android-sdk-linux_x86. SDK'nın adresi daha sonra gerekli olacağı için not almakta fayda var. SDK'nın tools dizinini sistem yoluna ekleyerek Android Debug Bridge (adb) ve diğer komut satırı &lt;a href="http://developer.android.com/guide/developing/tools/index.html"&gt;araçlarına&lt;/a&gt; doğrudan erişebiliriz. Bunun için:&lt;br /&gt;&lt;br /&gt;$ export PATH=${PATH}:&lt;sdk_dizininiz&gt;/tools&lt;br /&gt;&lt;br /&gt;Geliştirmemizi Eclipse'de yapmamızın başlangıç aşamasında daha faydalı olacağını söylemiş ve nasıl kurulacağından bahsetmiştik. Şimdiyse Eclipse'de Android uygulamaları geliştirmemiz için gerekli olan Android Development Tools (ADT) eklentisini kurmamız gerekiyor. &lt;br /&gt;&lt;br /&gt;*Eclipse'i çalıştırıyoruz. &lt;span style="font-weight:bold;"&gt;Help &gt; Install New Software&lt;/span&gt; diyoruz.&lt;br /&gt;*Açılan Available Software penceresinde &lt;span style="font-weight:bold;"&gt;Add&lt;/span&gt; butonuna tıklıyoruz.&lt;br /&gt;*Açılan pencerede Name kısmına herhangi bir isim yazıyoruz. Location kısmına ise: https://dl-ssl.google.com/android/eclipse/ yazıp Ok diyoruz. Bir sorun olursa https yeri http deneyin.&lt;br /&gt;*Tekrar Available Software penceresine gelindiğinde listede Developer Tools seçeneğinin ekli olduğunu göreceksiniz. Seçiyoruz ve Next diyoruz.&lt;br /&gt;*Açılan yeni pencerede de Next, ardından Finish diyoruz. Yüklemelerden sonra Eclipse'i yeniden başlatıyoruz.&lt;br /&gt;&lt;br /&gt;Şimdi ADT eklentisini düzenlemeliyiz. &lt;span style="font-weight:bold;"&gt;Window &gt; Preferences&lt;/span&gt; diyerek Preferences penceresini açalım. Sol panelden &lt;span style="font-weight:bold;"&gt;Android&lt;/span&gt;'i seçelim. SDK Location kısmında Browse deyip&lt;br /&gt;SDK dizinimizi seçiyoruz. Daha sonra Apply ardından Ok diyoruz.&lt;br /&gt;&lt;br /&gt;Şimdi geliştirme ortamımız için gerekli olan SDK parçalarını kurmalıyız. Bunun için Android SDK and AVD Manager kullanılacak. Android SDK and AVD Manager'ı Eclipse içinden &lt;span style="font-weight:bold;"&gt;Window &gt; Android SDK and AVD Manager&lt;/span&gt; yolunu izleyerek çalıştırıyoruz. Sol panelden Available Packages'ı seçelim. Böylece SDK deposundaki erişilebilir parçaları görebileceğiz. Yüklemek istediğiniz parçayı seçip Install Selected diyoruz. Hangi parçayı seçeceğiniz konusunda &lt;a href="http://developer.android.com/sdk/installing.html#which"&gt;şuraya&lt;/a&gt; bakabilirsiniz (Ben hepsini seçtim). Yüklemek istediğiniz parçaları kabul edip Install Accepted diyoruz. Parçalar SDK dizinimize yüklendi. (Daha fazlası için &lt;a href="http://developer.android.com/sdk/adding-components.html"&gt;burası&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Böylece Android SDK'mızı kurmuş olduk. Bir sonraki yazıda da örnek bir uygulama yapalım.&lt;br /&gt;&lt;br /&gt;Daha ayrıntılı bilgi ve kaynak:&lt;a href="http://developer.android.com/sdk/installing.html"&gt;http://developer.android.com/sdk/installing.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-6922251603101986616?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/6922251603101986616/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2010/10/pardusta-android-sdk.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/6922251603101986616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/6922251603101986616'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2010/10/pardusta-android-sdk.html' title='Pardus&apos;ta Android SDK'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-6606228027797048852</id><published>2010-10-16T17:26:00.003+03:00</published><updated>2010-10-16T17:56:41.863+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pardus'/><category scheme='http://www.blogger.com/atom/ns#' term='dosya birleştirme'/><title type='text'>*.001 - *.999 Uzantılı Dosyaları Birleştirmek</title><content type='html'>Bunun için &lt;a href="http://lxsplit.sourceforge.net/"&gt;LX Split&lt;/a&gt; programını kullanacağız. Lxsplit, hjsplit uyumlu bir komut satırı dosya bölücü/birleştiricidir. Pardus depolarında mevcuttur. &lt;br /&gt;&lt;br /&gt;$ sudo pisi it lxsplit &lt;br /&gt;&lt;br /&gt;komutuyla sisteme yüklüyoruz.&lt;br /&gt;&lt;br /&gt;$ lxsplit -j dosya.001&lt;br /&gt;&lt;br /&gt;komutuyla da dosyalarımızı birleştiriyoruz.&lt;br /&gt;&lt;br /&gt;Ayrıca: &lt;a href="http://wiki.pardus-linux.org/index.php/Programlar:lxsplit"&gt;http://wiki.pardus-linux.org/index.php/Programlar:lxsplit&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-6606228027797048852?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/6606228027797048852/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2010/10/001-999-uzantl-dosyalar-birlestirmek.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/6606228027797048852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/6606228027797048852'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2010/10/001-999-uzantl-dosyalar-birlestirmek.html' title='*.001 - *.999 Uzantılı Dosyaları Birleştirmek'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-3037584690845967842</id><published>2010-10-14T22:38:00.003+03:00</published><updated>2010-10-14T23:14:39.764+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pardus'/><category scheme='http://www.blogger.com/atom/ns#' term='havp'/><category scheme='http://www.blogger.com/atom/ns#' term='clamav'/><title type='text'>Pardus'ta havp kurulumu</title><content type='html'>Öncelikle &lt;a href="http://www.server-side.de/"&gt;havp&lt;/a&gt; nedir? havp (HTTP Anti Virus Proxy) bir proxy hizmeti/programı. Özelliğiyse tarayıcı ve web sunucusu arasında durarak dosyaları virüs taramasından geçirmesi.&lt;br /&gt;&lt;br /&gt;havp Pardus depolarında yok (ben bulamadım en azından). Ama inşa dosyaları &lt;a href="https://svn.pardus.org.tr/pardus/playground/review/server/proxy/havp/"&gt;burda&lt;/a&gt; mevcut. havp programını sisteme kurmak için şu komutları kullanıyoruz:&lt;br /&gt;&lt;br /&gt;$ sudo pisi bi https://svn.pardus.org.tr/pardus/playground/review/server/proxy/havp/pspec.xml -d&lt;br /&gt;$ sudo pisi it havp*.pisi&lt;br /&gt;&lt;br /&gt;İlk komutla pisi paketi oluşturulurken ya da kurulum sırasında clamav programının da kurulmasını gerekecek. Önceden de kurabilirsiniz. Bu program depoda mevcut.&lt;br /&gt;&lt;br /&gt;Bu şekilde paketleri sisteme kurduğumuzda Servis Yöneticisi'nden başlatmamız gerekiyor. Ancak havp servisi bende söyle bir hata verdi: "getpwnam(): name not found: havp ". Bunun üzerine sisteme havp kullanıcısını eklemek için şu iki komutu verdim ve yeniden denedim:&lt;br /&gt;&lt;br /&gt;# groupadd havp&lt;br /&gt;# useradd -g havp havp&lt;br /&gt;&lt;br /&gt;Ancak yine servis başlatılamadı. Şu komutu denedim:&lt;br /&gt;&lt;br /&gt;# chown havp /var/tmp/havp /var/log/havp /var/run/havp&lt;br /&gt;&lt;br /&gt;Bilgisayarı yeniden başlatıp servisleri çalıştırdım:&lt;br /&gt;&lt;br /&gt;$ service clamav start&lt;br /&gt;&lt;br /&gt;sorunsuz şekilde çalıştı. &lt;br /&gt;&lt;br /&gt;$ servis havp start &lt;br /&gt;&lt;br /&gt;havp da çalıştı. Ancak "service havp status" komutunu verdiğinizde çalışır halde görünmüyor. Servis Yöneticisi'nde de çalışır halde görünmüyor. Ama Sistem İzleyici'yi açtığımızda çalıştığını görebiliriz. İki servisi de çalıştırdıktan sonra proxy'yi kullanmak için tarayıcımızın proxy ayarlarını değiştirmemiz gerekiyor. Firefox için Düzen&gt;Seçenekler&gt;Gelişmiş&gt;Ağ&gt;Ayarlar penceresini açıp "vekil sunucu ayarları"nı tıklayıp sunucu adresi olarak localhost port numarası olarak da 8080 yazıyoruz. Tamam Tamam diyerek çıkıyoruz. Test etmek için &lt;a href="http://www.eicar.org/anti_virus_test_file.htm"&gt;adresini&lt;/a&gt; kullanabilirsiniz. Sayfayı aşağı kaydırıp alttaki 4 linkten birine tıkladığınızda eğer bir sorun yoksa şöyle bir sayfa çıkması gerekiyor:&lt;br /&gt;&lt;a href="http://tinypic.com?ref=54bn1k" target="_blank"&gt;&lt;img src="http://i53.tinypic.com/54bn1k.png" border="0" alt="Image and video hosting by TinyPic"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-3037584690845967842?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/3037584690845967842/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2010/10/pardusta-havp-kurulumu.html#comment-form' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/3037584690845967842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/3037584690845967842'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2010/10/pardusta-havp-kurulumu.html' title='Pardus&apos;ta havp kurulumu'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i53.tinypic.com/54bn1k_th.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-5893255898878043407</id><published>2010-10-13T19:43:00.007+03:00</published><updated>2010-10-13T23:03:05.792+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pardus'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Pardus'ta Apache ile Küçük Bir Uygulama</title><content type='html'>Şimdi Pardus üzerinde Apache ile küçük bir uygulama yapacağız. Amacımız apache'den bir sayfa yayınlamak ve Bind ile kullanıcıyı bu yayınladığımız sayfaya yönlendirmek. Bunun içinden youtube.com adresini kullanacağız. Yani sistemimizde Bind ve apache kurulu olacak ve dns adresi olarak bizim dns sunucumuzu kullanan birisini youtube.com adresine bağlanmak istediğinde bizim web sunucumuzdan yayınlanan bir sayfaya erişicek. Umarım anlatabildim. Bind sunucusuyla ilgili bişeylerden daha önce bahsetmiştim&lt;a href="http://atekinalp.blogspot.com/2010/10/pardusta-bind-kurulumu-ve-ayarlanmas.html"&gt;[1]&lt;/a&gt;. Apache kurulumu için ise &lt;a href="http://tr.pardus-wiki.org/NASIL:PAMP"&gt;bu&lt;/a&gt; adrese bakabilirsiniz.&lt;br /&gt;&lt;br /&gt;Apache kurulumu yapıldıktan sonra yapmamız gereken &lt;a href="http://httpd.apache.org/docs/2.0/vhosts/"&gt;sanal konak&lt;/a&gt; oluşturmak. Okuduğum bazı belgelerde /etc/apache2/ dizininin altında sites-enabled, sites-available gibi dizinlerin olması gerektiği yazılıydı. Ama Pardus'ta bu dizinleri göremedim ve şöyle bir yol izledim:&lt;br /&gt;&lt;br /&gt;#cd /etc/apache2/vhost.d&lt;br /&gt;&lt;br /&gt;komutu ile vhost.d klasörüne girdim. Başlangıçta bu klasörde 00_default_vhost.conf dosyası bulunmaktaydı. &lt;br /&gt;&lt;br /&gt;#vi youtube.conf &lt;br /&gt;&lt;br /&gt;komutuyla yeni bir dosya oluşturdum. İçini şu şekilde doldurdum:&lt;br /&gt;&lt;a href="http://tinypic.com?ref=jpkjd4" target="_blank"&gt;&lt;img src="http://i53.tinypic.com/jpkjd4.png" border="0" alt="Image and video hosting by TinyPic"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ip adresleri sunucumuzun ip adresi olacak. Diğer seçeneklerle ilgili bilgilere &lt;a href="http://forum.whmdestek.com/site-server-genel/5429-2-apache-yapilandirmasi.html"&gt;şu&lt;/a&gt; ve &lt;a href="http://httpd.apache.org/docs/2.0/mod/core.html"&gt;bu&lt;/a&gt; adreslerinden bakabilirsiniz. Dosyamızı kaydedip çıkalım. Sonra /var/www/youtube adında bir klasör oluşturup içinde yayınlamak istediğimiz bi index.html dosyası oluşturalım. Daha sonra Bind'le ilgili ayarları yapmalıyız. /etc/bind/named.conf dosyasına şu satırları ekleyelim:&lt;br /&gt;&lt;a href="http://tinypic.com?ref=ve22yb" target="_blank"&gt;&lt;img src="http://i52.tinypic.com/ve22yb.png" border="0" alt="Image and video hosting by TinyPic"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Daha sonra /etc/bind/zones/youtube.com.db dosyasının içeriğini şu şekilde dolduralım(bu dosya yoksa oluşturalım):&lt;br /&gt;&lt;a href="http://tinypic.com?ref=mrqrr5" target="_blank"&gt;&lt;img src="http://i52.tinypic.com/mrqrr5.png" border="0" alt="Image and video hosting by TinyPic"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Buradaki ip adresleri bilgisayarınızın ip si olacaktır. En son /etc/resolv.conf dosyasının başına nameserver 127.0.0.1 satırını ekleyip kaydedelim. bind ve apache servislerini başlatalım (ya da yeniden başlatalım):&lt;br /&gt;&lt;br /&gt;#service bind start ya da restart&lt;br /&gt;#service apache start ya da restart&lt;br /&gt;&lt;br /&gt;Her şey yolunda gittiği taktirde tarayıcınızdan youtube.com adresine girmeye çalıştığınızda karşınıza kendi hazırladığınız index.html sayfası çıkması gerekir.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-5893255898878043407?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/5893255898878043407/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2010/10/pardusta-apache-ile-kucuk-bir-uygulama.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/5893255898878043407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/5893255898878043407'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2010/10/pardusta-apache-ile-kucuk-bir-uygulama.html' title='Pardus&apos;ta Apache ile Küçük Bir Uygulama'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i53.tinypic.com/jpkjd4_th.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-1707917656309395513</id><published>2010-10-02T02:10:00.002+03:00</published><updated>2010-10-13T19:41:05.442+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dns server'/><category scheme='http://www.blogger.com/atom/ns#' term='pardus'/><category scheme='http://www.blogger.com/atom/ns#' term='bind'/><title type='text'>Pardus'ta Bind Kurulumu Ve Ayarlanması</title><content type='html'>Öncelikle "bind nedir?" derseniz &lt;a href="http://en.wikipedia.org/wiki/BIND"&gt;BIND&lt;/a&gt; internette yaygın olarak kullanılan bir &lt;a href="http://en.wikipedia.org/wiki/Domain_Name_System"&gt;DNS&lt;/a&gt; sunucudur. Bu yazıda BIND'in Pardus üzerinde kurulumu ve yapılandırılması naçizane anlatılmaya çalışılacak. BIND Pardus depolarında bulunmaktadır. Dolayısıyla paket yöneticisinden kolayca kurulabilir. Ya da konsoldan:&lt;br /&gt;&lt;br /&gt;$ sudo pisi it bind&lt;br /&gt;&lt;br /&gt;diyebilirsiniz. BIND kurulduktan sonra Servis Yöneticisi'nden ya da konsoldan:&lt;br /&gt;&lt;br /&gt;$ service bind start&lt;br /&gt;&lt;br /&gt;komutu ile çalıştırabilirsiniz. Basit bir örnekle ayarlamaların nasıl yapıldığına değinelim.&lt;br /&gt;Öncelikle /etc/bind/named.conf dosyasını açıyoruz:&lt;br /&gt;&lt;br /&gt;# cd /etc/bind/&lt;br /&gt;# vi named.conf&lt;br /&gt;&lt;br /&gt;sayfanın sonuna ya da oralara bir yere&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tinypic.com/?ref=2ir4tpc" target="_blank"&gt;&lt;img src="http://i52.tinypic.com/2ir4tpc.png" alt="Image and video hosting by TinyPic" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;satırlarını ekleyelim ve kaydedelim. Şimdi aynı klasörde(/etc/bind) zones isimli yeni bir dosya oluşturuyoruz ve içine giriyoruz:&lt;br /&gt;&lt;br /&gt;# mkdir zones&lt;br /&gt;# cd zones&lt;br /&gt;&lt;br /&gt;Daha sonra named.conf dosyasında alper.com için gösterdiğimiz dosyayı oluşturuyoruz:&lt;br /&gt;&lt;br /&gt;# vi alper.com.db&lt;br /&gt;&lt;br /&gt;ve içine şunları yazıyoruz :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tinypic.com?ref=bg1p4p" target="_blank"&gt;&lt;img src="http://i51.tinypic.com/bg1p4p.png" border="0" alt="Image and video hosting by TinyPic"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Son olarak da sunucumuzu sisteme tanıtmak için:&lt;br /&gt;&lt;br /&gt;# vi /etc/resolv.conf&lt;br /&gt;&lt;br /&gt;diyerek açtığımız dosyaya&lt;br /&gt;&lt;br /&gt;nameserver 127.0.0.1&lt;br /&gt;&lt;br /&gt;satırını ekliyoruz.&lt;br /&gt;&lt;br /&gt;$ service bind start   diyerek bind'i başlatalım (Daha önce başlattıysanız $ service bind restart).&lt;br /&gt;&lt;br /&gt;dig alper.com          diyerek test edelim.&lt;br /&gt;&lt;br /&gt;Kaynaklar:[1]&lt;a href="http://glonek.co.uk/linux-server/dns-bind9-configuration-howto/"&gt;http://glonek.co.uk/linux-server/dns-bind9-configuration-howto/&lt;/a&gt;&lt;br /&gt;[2]&lt;a href="http://www.kemalkefeli.com/2010/09/bind9-ile-dns-sunucusu-kurma-ubuntu.html"&gt;http://www.kemalkefeli.com/2010/09/bind9-ile-dns-sunucusu-kurma-ubuntu.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-1707917656309395513?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/1707917656309395513/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2010/10/pardusta-bind-kurulumu-ve-ayarlanmas.html#comment-form' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/1707917656309395513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/1707917656309395513'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2010/10/pardusta-bind-kurulumu-ve-ayarlanmas.html' title='Pardus&apos;ta Bind Kurulumu Ve Ayarlanması'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i52.tinypic.com/2ir4tpc_th.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-8298543641681820705</id><published>2010-07-07T18:46:00.000+03:00</published><updated>2010-07-07T18:56:56.063+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pardus'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><title type='text'>Pardus'ta Google Chrome</title><content type='html'>Pardus'ta &lt;a href="http://www.google.com.tr/chrome"&gt;Google Chrome&lt;/a&gt; nasıl kurulur? İşte böyle:&lt;br /&gt;Komut satırı açılır ve &lt;br /&gt;&lt;br /&gt;sudo pisi bi http://sudrap.org/repository/users/ggorgen/chromium-browser/pspec.xml -d&lt;br /&gt;sudo pisi it chromium-browser*.pisi&lt;br /&gt;&lt;br /&gt;komutları sırasıyla çalıştırılır.&lt;br /&gt;Kaynak ve ayrıntı:&lt;a href="http://linuxsever.wordpress.com/2009/09/26/pardusa-google-chrome-kurmak/"&gt;burda&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-8298543641681820705?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/8298543641681820705/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2010/07/pardusta-google-chrome.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/8298543641681820705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/8298543641681820705'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2010/07/pardusta-google-chrome.html' title='Pardus&apos;ta Google Chrome'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6309512779005693354.post-5038048891592041320</id><published>2010-04-22T00:45:00.000+03:00</published><updated>2010-04-22T01:06:20.244+03:00</updated><title type='text'>Başlarken</title><content type='html'>&lt;object width="250" height="40"&gt; &lt;param name="movie" value="http://listen.grooveshark.com/songWidget.swf" /&gt; &lt;param name="wmode" value="window" /&gt; &lt;param name="allowScriptAccess" value="always" /&gt; &lt;param name="flashvars" value="hostname=cowbell.grooveshark.com&amp;widgetID=20868495&amp;style=metal&amp;p=0" /&gt; &lt;embed src="http://listen.grooveshark.com/songWidget.swf" type="application/x-shockwave-flash" width="250" height="40" flashvars="hostname=cowbell.grooveshark.com&amp;widgetID=20868495&amp;style=metal&amp;p=0" allowScriptAccess="always" wmode="window"&gt; &lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bir bilgisayar mühendisi adayı olarak bir bloğumun olmaması üzücü bir durumdu benim açımdan (başka kimin açısından olabilir ki :P). Birkaç defa başlamaya çalıştım ama olmadı. Ama bu sefer kararlıyım (aferim bana). Bloğun içeriği ne olur bilmiyorum. Temel olarak tabi ki bilgisayar vs. üzerine deneyimlerimi yazmaya çalışmak başlıca hedefim. Çoğunluğu (tamamı) kişisel notlardan oluşacak bu bloğun yeryüzündeki herhangi bir canlıya bi faydası dokunursa (nasıl olucaksa) ne mutlu bana. Ha dokunmasa da burda harcadığım zaman (zaten başka saçma şeyler için harcanıcaktı) ve enerji (elektrik) o kadar da büyük kayıp olmaz herhalde. Yoksa olur mu?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6309512779005693354-5038048891592041320?l=atekinalp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atekinalp.blogspot.com/feeds/5038048891592041320/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://atekinalp.blogspot.com/2010/04/baslarken.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/5038048891592041320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6309512779005693354/posts/default/5038048891592041320'/><link rel='alternate' type='text/html' href='http://atekinalp.blogspot.com/2010/04/baslarken.html' title='Başlarken'/><author><name>Alper Tekinalp</name><uri>http://www.blogger.com/profile/10871208048521315419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-bZO2bKQngw8/TV6YPIRjBqI/AAAAAAAAAFU/EXnhqc3Goa0/s220/DSC00008.JPG'/></author><thr:total>0</thr:total></entry></feed>
