<?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-23995915</id><updated>2011-04-21T22:18:16.759+03:00</updated><title type='text'>Çoğunlukla Zararsız</title><subtitle type='html'>test</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://muhuk.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://muhuk.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>muhuk</name><uri>http://www.blogger.com/profile/15482583441536572332</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-23995915.post-116221261958801170</id><published>2006-10-30T14:46:00.001+02:00</published><updated>2008-07-10T22:42:05.061+03:00</updated><title type='text'>Py-Hesap: Fonksiyonlar 1</title><content type='html'>En büyük ortak böleni hesaplamak istediğimizi düşünelim.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;def gcd_iterative(a, b):&lt;br /&gt;    a, b = sort2Numbers(a, b)&lt;br /&gt;    r = remainder(a, b)&lt;br /&gt;    while r &amp;gt; 0:&lt;br /&gt;        print r, a, b&lt;br /&gt;        a, b = b, r&lt;br /&gt;        r = remainder(a, b)&lt;br /&gt;    return b&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Bu fonksiyon &lt;span style="font-style: italic;"&gt;sort2Numbers&lt;/span&gt; ve &lt;span style="font-style: italic;"&gt;remainder&lt;/span&gt; fonksiyonlarını kullanmakta:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;def remainder(a, b):&lt;br /&gt;    while a &amp;gt;= b:&lt;br /&gt;        a -= b&lt;br /&gt;    return a&lt;br /&gt;&lt;br /&gt;def sort2Numbers(a, b):&lt;br /&gt;    if b &amp;gt; a:&lt;br /&gt;        return b, a&lt;br /&gt;    else:&lt;br /&gt;        return a, b&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;remainder fonksiyonu verilen a'nın b'ye bölümünden kalanı hesaplıyor. Bunu yaparken a, b'den büyük olduğu sürece a'dan b'yi çıkarmaya devam ediyor. a &gt;= b şartı sağlanmadığında &lt;span style="font-style: italic;"&gt;a -= b&lt;/span&gt; satırı işletilmiyor ve a'nın o anki değeri döndürülüyor. &lt;span style="font-style: italic;"&gt;a -= b&lt;/span&gt; demek aslında &lt;span style="font-style: italic;"&gt;a = a - b&lt;/span&gt; ile aynı anlama gelir. Ve matematik derslerinin aksine bunun bir anlamı vardır. Önce eşittirin sağ tarafındaki değişkenler çözümlenir ve sonuç eşittirin sol tarafındaki değişkene atanır.&lt;br /&gt;&lt;br /&gt;sort2Numbers fonksiyonu verilen iki sayı için her zaman birincinin büyük olmasını sağlıyor. b &gt; a durumunda &lt;span style="font-style: italic;"&gt;a, b&lt;/span&gt; yerine &lt;span style="font-style: italic;"&gt;b, a&lt;/span&gt; döndürüyor ama &lt;span style="font-style: italic;"&gt;gcd_iterative&lt;/span&gt; fonksiyonuna bakarsanız bu değerlerin "a, b"ye atandığını göreceksiniz. Böylece b, a'dan büyükse a, b'ye, b de a'ya eşitleniyor.&lt;br /&gt;&lt;br /&gt;En küçük ortak kat fonksiyonumuza geri dönelim:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;def gcd_iterative(a, b):&lt;br /&gt;    a, b = sort2Numbers(a, b)&lt;br /&gt;    r = remainder(a, b)&lt;br /&gt;    while r &amp;gt; 0:&lt;br /&gt;        print r, a, b&lt;br /&gt;        a, b = b, r&lt;br /&gt;        r = remainder(a, b)&lt;br /&gt;    return b&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Pozitif tamsayılarla çalıştığımızı varsayarsak r sıfır olana dek r a'nın b'ye bölümünden kalanına eşitleniyor. Daha sonra b, r'ye, a'da b'ye eşitleniyor. b, a'yı kalansız böldüğünde en büyük ortak kat b'nin değeri olarak döndürülüyor.&lt;br /&gt;&lt;br /&gt;Fonksiyonlar (parantez içlerinde belirtilen) değişkenleri alarak işleyen ve bir (ya da birden fazla) değer (&lt;span style="font-style: italic;"&gt;return&lt;/span&gt; ile) döndüren kod parçalarıdır. Hiçbir değişken almayan ya da hiçbir değer döndürmeyen (ki bu durumda &lt;span style="font-style: italic;"&gt;None&lt;/span&gt; döndürüldüğü kabul edilir) fonksiyonlar olabilir. Bir fonksiyonu çağırırken döndürdüğü değeri gözardı edebiliriz. Örneğin:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;def quotePrint(s):&lt;br /&gt;    print '"' + s + '"'&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Bu fonksiyon s değişkenindeki karakter dizisini tırnak işaretleri arasına alarak ekrana yazıyor. return komutu olmasa da bu fonksiyon None değerini döndürmektedir. Ama biz döndürdüğü değeri önemsemeyip oluşturduğu &lt;span style="font-style: italic;"&gt;yan etki&lt;/span&gt;yle ilgileniyoruz. Yan etkiler fonksiyonların kendi kapsamı dışında yaptıkları değişikliklerdir. Fonksiyonların kapsamı verilen fonksiyon değişkenleri ve kendi içinde tanımlanan değişkenlerdir&lt;sup&gt;1&lt;/sup&gt;. Bu değerlerin dışında yapılan değişikliklere yan etkiler denir.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;def popMidItem(l):&lt;br /&gt;    list_length = len(l)&lt;br /&gt;    return l.pop(list_length/2)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Bu fonksiyon hem yan etkiye (parametre olarak verilen listenin ortadaki elemanını çıkarma) hem de return komutuyla (çıkarılan elemanı) değer döndürmeye sahiptir. Bu durumda yan etki kaçınılmazdır ama döndürülen değeri gözardı edebiliriz.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt;l_mid = popMidItem([1,2,3,4,5])&lt;br /&gt;3&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;popMidItem([1,2,3,4,5])&lt;br /&gt;3&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Birinci komut ile döndürülen değer l_mid değişkenine atanmıştır. İkinci komut ise aynı değeri döndürdüğü halde gözardı edilmiştir.&lt;br /&gt;&lt;br /&gt;1: Bazı (mutative) nesneler fonksiyon değişkenleri olarak verilse değiştirilmesi de yan etkiye sebep olur. Bunları daha sonra inceleyeceğiz.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23995915-116221261958801170?l=muhuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://muhuk.blogspot.com/feeds/116221261958801170/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23995915&amp;postID=116221261958801170' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/116221261958801170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/116221261958801170'/><link rel='alternate' type='text/html' href='http://muhuk.blogspot.com/2006/10/py-hesap-fonksiyonlar-1.html' title='Py-Hesap: Fonksiyonlar 1'/><author><name>muhuk</name><uri>http://www.blogger.com/profile/15482583441536572332</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23995915.post-115986414589908698</id><published>2006-10-03T11:26:00.000+03:00</published><updated>2006-10-03T12:03:26.626+03:00</updated><title type='text'>Py-Hesap: Isınma Hareketleri</title><content type='html'>Diyelim ki belli bir değişkenin gün içindeki değişimini gözlemlemek için rastgele zamanlarda ölçümler yapıyorsunuz (Günden güne değişiklik olmadığını varsayalım). Ölçümlerinize son verdiğinizde elinizde sıralanmamış ve çok sayıda ölçüm sonucu bir metin dosyasında aşağıdaki gibi saklanmış olsun:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;14, 394&lt;br /&gt;12, 171&lt;br /&gt;21, 407&lt;br /&gt;14, 17&lt;br /&gt;17, 449&lt;br /&gt;11, 141&lt;br /&gt;4, 289&lt;br /&gt;6, 295&lt;br /&gt;11, 27&lt;br /&gt;10, 137&lt;br /&gt;2, 342&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;İlk kolon ölçüm saatini [1~24] ve ikinci kolon ölçülen değeri gösteriyor [1~500]. Kolonlar birbirinden virgül ile ayrılmış. Şimdi bu verileri alalım ve daha anlamlı hale getirelim.&lt;br /&gt;&lt;br /&gt;Önce Python yorumlayıcısını çalıştıralım. Python yorumlayıcısını kullanmamızın nedeni verdiğimiz komutların sonuçlarını anında görebilmemiz ve kodlarımızı aşama aşama girip çalıştırma olanağı. Yorumlayıcı ile çalışırken bilgisayarımızla (daha doğrusu Python ile) bir diyaloğa giriyoruz. Aynı kodları bir metin dosyasında toplayarak hep birlikte (daha doğrusu sırayla) da çalıştırabiliriz. Biz şimdilik sonuçtan çok sonuca gidiş yoluyla ilgilendiğimiz için yorumlayıcı ortamı bizim için ideal.&lt;br /&gt;&lt;br /&gt;Yorumlayıcıya girdikten sonra aşağıdaki kodları girin:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;muhuk@pardus py-hesap $ python&lt;br /&gt;Python 2.4.2 (#1, Jan 25 2006, 00:43:19)&lt;br /&gt;[GCC 3.4.5] on linux2&lt;br /&gt;Type "help", "copyright", "credits" or "license" for more information.&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; def readData(filename):&lt;br /&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return [[int(line.split(',')[0]), int(line.split(',')[1])] for line in open(filename).readlines()]&lt;br /&gt;...&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Yukarıda verileri dosyadan okumak için bir fonksiyon tanımladık. Sizden istediğim bu kodların ne olduğunu şimdilik merak etmemeniz (Zaten iyi kod da değil). Ama dikkat etmenizi istediğim birkaç şey var;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Komut yazmaya başladığımız satırın başında üç büyüktür işareti vardı ("&amp;gt;&amp;gt;&amp;gt;"), bu yorumlayıcının yeni komut beklediğini gösterir. İkinci satırın başındaki üç adet nokta ise bir komutu girmeye devam ettiğimiz anlamına gelir&lt;sup&gt;1&lt;/sup&gt;.&lt;/li&gt;&lt;li&gt;İlk satırın sonundaki iki-nokta-üstüsteye ve sonraki satırın başındaki boşluğa dikkatinizi çekerim. Kapsam değişeceği zaman satır sonuna iki-nokta-üstüste koyar ve girintiyi&lt;sup&gt;2&lt;/sup&gt; bir seviye arttırırız&lt;sup&gt;3&lt;sup&gt;.&lt;/li&gt;&lt;li&gt;"return" ile başlayan satırdan sonra bir satır boş bıraktık. Bu fonksiyon tanımını bitirdiğimiz anlamına gelir.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; raw_data = readData('001.dat')&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Bu komut ile tanımladığımız &lt;span style="font-style:italic;"&gt;readData&lt;/span&gt; fonksiyonunu çağırarak &lt;span style="font-style:italic;"&gt;001.dat&lt;/span&gt; dosyasını okuttuk ve sonuçları &lt;span style="font-style:italic;"&gt;raw_data&lt;/span&gt; değişkeninde sakladık. Şimdi bu raw_data değişkeninde ne olduğuna bakalım:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; raw_data&lt;br /&gt;[[21, 333], [14, 17], [19, 421], [17, 321], [14, 394], [12, 171], [21, 407], [14, 17], [17, 449], [11, 141], [4, 289], [6, 295], [11, 27], [10, 137], [2, 342], [6, 108], [7, 340], [3, 259], [23, 84], [9, 276], [11, 273], [1, 129], [1, 4], [3, 154], [11, 166], [6, 416], [20, 36], [21, 73], [11, 75], [1, 41], [22, 339], [5, 237], [3, 17], [14, 405], [22, 58], [5, 423], [18, 264], [10, 129], [21, 458], [17, 113], [2, 260], [5, 319], [15, 173], [22, 146], [11, 174], [13, 213], [13, 282], [6, 192], [8, 170], [14, 456], [8, 396], [8, 80], [3, 144], [9, 59], [20, 375], [17, 401], [18, 151], [4, 105], [4, 178], [20, 312], [2, 47], [2, 428], [10, 13], [2, 439], [23, 305], [4, 323], [8, 110], [20, 415], [5, 304], [13, 128], [7, 122], [19, 214], [1, 375], [18, 443], [24, 449], [6, 427], [19, 96], [15, 285], [24, 459], [5, 31], [3, 401], [8, 318], [21, 96], [9, 255], [5, 320], [15, 179], [10, 334], [7, 43], [24, 126], [8, 273], [18, 301], [12, 102], [11, 427], [22, 413], [8, 393], [20, 45], [23, 70], [20, 17], [12, 128], [16, 46], [16, 117], [19, 254], [2, 319], [12, 162], [18, 390], [24, 252], [21, 264], [16, 359], [14, 254], [12, 127], [16, 495], [23, 438], [19, 66], [23, 299], [8, 192], [5, 220], [7, 261], [7, 455], [9, 45], [1, 251], [14, 327], [21, 338], [12, 268], [2, 230], [19, 400], [15, 272], [15, 445], [13, 413], [10, 467], [16, 127], [18, 446], [11, 69], [6, 478], [11, 12], [6, 304], [4, 11], [8, 283], [15, 380], [11, 354], [24, 80], [14, 441], [15, 492], [18, 187], [19, 338], [17, 67], [19, 64], [9, 283], [21, 124], [2, 28], [6, 414], [2, 426], [2, 487], [21, 144], [3, 77], [6, 333], [12, 139], [21, 281], [24, 259], [8, 253], [4, 101], [2, 368], [22, 207], [5, 278], [4, 134], [16, 481], [4, 278], [14, 441], [12, 439], [4, 221], [17, 61], [19, 356], [5, 357], [7, 31], [10, 140], [1, 219], [11, 277], [8, 160], [5, 441], [21, 474], [20, 144], [12, 490], [21, 81], [5, 472], [10, 46], [22, 61], [10, 120], [15, 161], [5, 188], [24, 469], [2, 264], [2, 118], [4, 12], [17, 245], [2, 492], [14, 427], [10, 113], [4, 493], [3, 144], [2, 391], [4, 121]]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Etkileşimli yorumlayıcıya komut olarak sadece bir nesne adı&lt;sup&gt;4&lt;/sup&gt; girdiğimizde bize bu nesnenin içindekileri gösterir. Gördüğünüz şey sayılar ve köşeli parantezlerden oluşan bir çorbaya benzese de dikkatli bakıldığında her bir elemanı iki elemanlı birer liste olan bir liste olduğunu göreceksiniz. Bir Python listesi tanımlamak için elemanların arasına virgül koymanız ve tüm listeyi köşeli parantezlerle çevrelemeniz gerekir. Listelerin elemanları sayılar, yazılar, başka bir liste ya da herhangi birşey olabilir.&lt;br /&gt;&lt;br /&gt;raw_data listesindeki sayılar ne anlama geliyor? Her eleman bir ölçümü temsil ediyor. Ölçümlerin birinci elemanı ölçüm saati, ikinci elemanı da ölçülen değer. Aynı veri dosyamızdaki gibi. Şimdi verilerimizi Python'un anlayabileceği hale getirmiş olduk. Artık onlar üzerinde işlem yapabiliriz.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; aggregated = []&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; for hour in range(1, 25): &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;count = 0&lt;br /&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sum = 0&lt;br /&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for row in raw_data:&lt;br /&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if row[0] == hour:&lt;br /&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;count += 1&lt;br /&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sum += row[1]&lt;br /&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;aggregated.append([count, sum])&lt;br /&gt;...&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Burası işin can alıcı kısmı, adım adım inceleyelim:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;İlk satırda &lt;span style="font-style:italic;"&gt;aggregated&lt;/span&gt; adında boş bir liste tanımladık.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;İkinci satırda bir döngü hazırladık. 1'den başlayarak 24'e kadar sayacak ve bu değeri her turda hour değişkenine atayacak.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;5~8 satırlarında (yine bir döngü kullanarak) o an incelemekte olduğumuz saate dair verileri arıyor ve bu saatte yapılan ölçüm sayısıyla ölçüm sonuçlarının toplamını &lt;span style="font-style:italic;"&gt;count&lt;/span&gt; ve &lt;span style="font-style:italic;"&gt;sum&lt;/span&gt; değişkenlerinde topluyoruz.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;row[0] ve row[1], &lt;span style="font-style:italic;"&gt;row&lt;/span&gt; listesinin birinci ve ikinci elemanlarını döndürürür&lt;sup&gt;5&lt;/sup&gt;. Yani ölçüm saati, ki burada saydırılan saat ile karşılaştırılıyor, ve ölçüm değeri, ki o da sum'a eklenerek toplam hesaplanıyor.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Son satırda da aggregated listesine yeni bir eleman ekliyoruz. Bu eleman birinci elemanı ölçüm sayısı ve ikinci elemanı ölçüm değerleri toplamı olan bir liste. Burada eklenen elemanın sırasının saat sırasına göre olacağına dikkatinizi çekerim.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; aggregated&lt;br /&gt;[[6, 1019], [15, 4639], [7, 1196], [12, 2266], [12, 3590], [9, 2967], [6, 1252], [11, 2628], [5, 918], [9, 1499], [11, 1995], [9, 2026], [4, 1036], [10, 3179], [8, 2387], [6, 1625], [7, 1657], [7, 2182], [9, 2209], [7, 1344], [12, 3073], [6, 1224], [5, 1196], [7, 2094]]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Şimdi raw_data nesnesi ile aggregated nesnesi içindeki bilgileri karşılaştırabilirsiniz. Örneğin saat 2'deki ölçümlerin sayısı 15 ve ölçülen değerler toplamı 4639 olacaktır. aggregated listesinde saat bilgisinin olmadığını düşünebilirsiniz, ama var. Örneğin aggregated[0], 1. saatin verilerini içerir ve aggregated[16]'da 17. saatin. Yani n'inci saatin verilerine ulaşmak için aggregated[n-1] dememiz yeterlidir&lt;sup&gt;6&lt;/sup&gt;.&lt;br /&gt;&lt;br /&gt;Şimdi sonuçların çıktısını alalım:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; for hour in range(1, 25):&lt;br /&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data = aggregated[hour-1]&lt;br /&gt;...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print 'Saat:', hour, '\tÖlçüm sayısı:', data[0], '\tToplam:', data[1], '\tOrtalama:', data[1]/data[0]&lt;br /&gt;...&lt;br /&gt;Saat: 1         Ölçüm sayısı: 6         Toplam: 1019    Ortalama: 169&lt;br /&gt;Saat: 2         Ölçüm sayısı: 15        Toplam: 4639    Ortalama: 309&lt;br /&gt;Saat: 3         Ölçüm sayısı: 7         Toplam: 1196    Ortalama: 170&lt;br /&gt;Saat: 4         Ölçüm sayısı: 12        Toplam: 2266    Ortalama: 188&lt;br /&gt;Saat: 5         Ölçüm sayısı: 12        Toplam: 3590    Ortalama: 299&lt;br /&gt;Saat: 6         Ölçüm sayısı: 9         Toplam: 2967    Ortalama: 329&lt;br /&gt;Saat: 7         Ölçüm sayısı: 6         Toplam: 1252    Ortalama: 208&lt;br /&gt;Saat: 8         Ölçüm sayısı: 11        Toplam: 2628    Ortalama: 238&lt;br /&gt;Saat: 9         Ölçüm sayısı: 5         Toplam: 918     Ortalama: 183&lt;br /&gt;Saat: 10        Ölçüm sayısı: 9         Toplam: 1499    Ortalama: 166&lt;br /&gt;Saat: 11        Ölçüm sayısı: 11        Toplam: 1995    Ortalama: 181&lt;br /&gt;Saat: 12        Ölçüm sayısı: 9         Toplam: 2026    Ortalama: 225&lt;br /&gt;Saat: 13        Ölçüm sayısı: 4         Toplam: 1036    Ortalama: 259&lt;br /&gt;Saat: 14        Ölçüm sayısı: 10        Toplam: 3179    Ortalama: 317&lt;br /&gt;Saat: 15        Ölçüm sayısı: 8         Toplam: 2387    Ortalama: 298&lt;br /&gt;Saat: 16        Ölçüm sayısı: 6         Toplam: 1625    Ortalama: 270&lt;br /&gt;Saat: 17        Ölçüm sayısı: 7         Toplam: 1657    Ortalama: 236&lt;br /&gt;Saat: 18        Ölçüm sayısı: 7         Toplam: 2182    Ortalama: 311&lt;br /&gt;Saat: 19        Ölçüm sayısı: 9         Toplam: 2209    Ortalama: 245&lt;br /&gt;Saat: 20        Ölçüm sayısı: 7         Toplam: 1344    Ortalama: 192&lt;br /&gt;Saat: 21        Ölçüm sayısı: 12        Toplam: 3073    Ortalama: 256&lt;br /&gt;Saat: 22        Ölçüm sayısı: 6         Toplam: 1224    Ortalama: 204&lt;br /&gt;Saat: 23        Ölçüm sayısı: 5         Toplam: 1196    Ortalama: 239&lt;br /&gt;Saat: 24        Ölçüm sayısı: 7         Toplam: 2094    Ortalama: 299&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;En baştaki readData fonksiyonu gibi bu son komutların da ne işe yaradığını şimdilik fazla merak etmemenizi tavsiye ediyorum. Konunun ortasından girip size çalışan ve önemsiz de olsa birşeyler yapan küçük bir program örneği vermek istedim. Bu basit programda bile öğrenilmesi gereken birçok şey var ve bunlar zamana yayılarak kolayca öğrenilebilir. Özellikle aklınızda kalmasını istediklerim:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Python ile tam bir programlama dilinin gücü elinizin altında. Neredeyse herşeyi yapabilirsiniz.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Verilerinizi bilgisayarın da anlayabileceği bir şekle getirmek ve yapacağınız işlemleri bu şekil üzerinden düşünmek çok önemli.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Listeler, Python'un taşıyıcı nesne tiplerinden bir tanesi. En önemlisi olmasa da hesaplamalarınızda en çok kullanacağınız.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Bir sonraki yazıda listeleri, döngü ve koşullu ifadeleri daha detaylı inceleyeceğiz.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1: Burada &lt;span style="font-style:italic;"&gt;komut&lt;/span&gt;dan kast ettiğim &lt;span style="font-style:italic;"&gt;def&lt;/span&gt;'dir ve fonksiyon tanımlamakta kullanılır. İkinci satırda ikinci bir komut olsa da, birinci komutun, yani fonksiyon tanımının içindedir.&lt;br /&gt;2: Girinti bir boşluk ya da tab karakteri olabilir. Program dosyalarında her bir girinti seviyesi için 4 adet boşluk kullanmak en uygunudur. Çünkü iyi programcılar böyle yapar. (Şaka şaka, mantıklı bir sebebi var.)&lt;br /&gt;3: Burada def ile fonksiyonumuzu tanımladıktan sonra bu fonksiyonun kapsamındaki (=içindeki) komutları girintiyle giriyoruz.&lt;br /&gt;4: Java'cılar &amp; C#'cılar; Python'da herşey bir nesnedir.&lt;br /&gt;5:  İndeks değerleri sıfırdan başlar ve doğrudan bir elemanı değil iki elemanın arasını gösterir. Böylece bir elemanın seçime dahil olup olmayacağı konusunda karışıklık yaşanmaz. Eğer tek indeks değeri varsa hemen sonraki tek eleman geri döndürülür, eğer iki index değeri belirtilmişse bu ikisinin arasında kalan bütün elemanlar geri döndürülür. Örneğin ikinci satırda 1 ve 24 yerine 1 ve 25 denmesinin sebebi 25. indeksin 24 ve 25 sayılarının arasında olmasıdır.&lt;br /&gt;6: İşin ilginç yanı n = 0 (yani 24:00) için de geçerlidir. aggregated[-1] bize sondan bir önceki elemanı, yani aggregated[23]'ü döndürecektir.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23995915-115986414589908698?l=muhuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://muhuk.blogspot.com/feeds/115986414589908698/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23995915&amp;postID=115986414589908698' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/115986414589908698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/115986414589908698'/><link rel='alternate' type='text/html' href='http://muhuk.blogspot.com/2006/10/py-hesap-isnma-hareketleri.html' title='Py-Hesap: Isınma Hareketleri'/><author><name>muhuk</name><uri>http://www.blogger.com/profile/15482583441536572332</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23995915.post-115947613725921937</id><published>2006-09-28T23:38:00.000+03:00</published><updated>2006-09-28T23:51:20.316+03:00</updated><title type='text'>Py-Hesap: Yılanı Salalım</title><content type='html'>Yalnız kağıt-kalem ya da yalnız hesap makinesinin yetmediği yerde her ikisini birden kullanıyoruz. Ya da çözümü, Allah korusun, tablolama programlarında&lt;sup&gt;1&lt;/sup&gt; arıyoruz. En uygun yöntem kişiye ve duruma göre değişebilir. Py-Hesap başlığını taşıyacak yazılarda alternatif bir yöntemden bahsedeceğim. Basit ve karmaşık hesaplarınızı programlayarak yapmak. Programlama deneyimi olmayanlar için bu biraz ürkütücü olabilir. Siz yine de bozuntuya vermeyin, sonunda yeni ve zevkli birşey öğreneceksiniz.&lt;br /&gt;&lt;br /&gt;Programlama dilimizin adı &lt;a href="http://www.python.org"&gt;Python&lt;/a&gt; (evet yılan olan, piton). Aslında hangi dili kullandığınız fark etmez demek isterdim, ama fark ediyor. Hem de çok. Python esnek, güçlü ve kapsamlıdır. Değişik programlama tarzlarını uygulayabilir, bunları birbiriyle karıştırabilirsiniz. En önemlisi Python eğlencelidir.&lt;br /&gt;&lt;br /&gt;Programlama dillerinin de konuştuğumuz diller gibi bilmemiz gereken dilbilgisi kuralları vardır. Yine de yabancı dil öğrenirken yaptığımız şekilde aşama aşama öğrenebiliriz. Yani herhangibir şey yapabilmek için tüm yazım kurallarını biliyor olmamız gerekmiyor, "ben Tarzan, sen Jane" ile başlayabiliriz.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Kurulum&lt;/span&gt;&lt;br /&gt;Python programlama ortamını kurmak için &lt;a href="http://www.python.org/download/"&gt;http://www.python.org/download/&lt;/a&gt; adresinden işletim sisteminize uygun dosyayı seçerek indirmeniz gerek. Windows kullananların Python x.x.x Windows installer (x'ler sürüm numaraları) bağlantısından kurulum dosyasını indirerek çalıştırmaları yeterli. Linux kullananların önce Python'un kurulu olup olmadığını kontrol etmelerinde fayda var, zira bazı &lt;a href="http://www.pardus.org.tr/"&gt;dağıtım&lt;/a&gt;larda varsayılan olarak kuruluyor. Eğer yüklü değilse büyük olasılıkla paket yöneticinizden yükleyebilirsiniz (pakedin adı da, yaratıcılıktan uzak şekilde, python'dur herhalde). Mac OS X kullananlar Python x.x.x for Macintosh OS X bağlantısını kullanarak yükleme yapabilir&lt;sup&gt;2&lt;/sup&gt;.&lt;br /&gt;&lt;br /&gt;Python'un yüklenip yüklenmediğini kontrol etmek için konsolda &lt;span style="font-style:italic;"&gt;python&lt;/span&gt; yazmanız yeterlidir&lt;sup&gt;3&lt;/sup&gt;. Eğer herşey yolundaysa aşağıdaki gibi bir çıktı ile karşılaşırsınız:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;muhuk@pardus ~ $ python&lt;br /&gt;Python 2.4.2 (#1, Jan 25 2006, 00:43:19)&lt;br /&gt;[GCC 3.4.5] on linux2&lt;br /&gt;Type "help", "copyright", "credits" or "license" for more information.&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Son satırdaki "&amp;gt;&amp;gt;&amp;gt;" etkileşimli yorumlayıcının komutlarınızı beklediğini gösterir. Etkileşimli yorumlayıcıya bir dahaki yazıda değineceğiz. Şimdi CTRL+D ile yorumlayıcıdan çıkabilirsiniz&lt;sup&gt;4&lt;/sup&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Belgeler&lt;/span&gt;&lt;br /&gt;Bir programlama dilini öğrenirken (ve benim gibi herşeyi aklınızda tutmayı sevmiyorsanız kullanırken) en büyük yardımcınız o programlama dilinin belgeleri olacaktır. Belgelerdeki üç önemli bölüm; &lt;span style="font-style:italic;"&gt;Tutorial&lt;/span&gt; (ders, anlatım, Türkçe'si neyse artık), &lt;span style="font-style:italic;"&gt;Language Reference&lt;/span&gt; (imla kılavuzuyla deyimler sözlüğünün aşkının meyvesi, ileride kıymetini daha çok anladığımız kaynak) ve &lt;span style="font-style:italic;"&gt;Global Module Index&lt;/span&gt; (modül kavramına daha sonra değineceğiz, ama Python'un sloganının &lt;span style="font-style:italic;"&gt;Batteries included&lt;/span&gt;, yani &lt;span style="font-style:italic;"&gt;Pilleri içinde&lt;/span&gt; olduğunu söyleyeyim şimdilik). Belgelere &lt;a href="http://www.python.org/doc/"&gt;http://www.python.org/doc/&lt;/a&gt; adresinden ulaşabilirsiniz. Ben tüm belgeleri &lt;a href="http://docs.python.org/download.html"&gt;indir&lt;/a&gt;menizi öneririm. Hangi formatta olduğu önemli değil ama her an elinizi altında olmaları yararlı. Ben HTML formatında indirip &lt;a href="http://www.mozilla.com/firefox/"&gt;tarayıcı&lt;/a&gt;mda kısayol oluşturmayı tercih ediyorum.&lt;br /&gt;&lt;br /&gt;Bir dahaki yazıda; ilk programımızı yazıyoruz, ama öyle merhaba dünya gibi basit ve sıkıcı birşey olmayacak.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1&lt;/span&gt;: Adı üstünde tablolama programı, tablolar hazırlamak için. Bu programların hiç de küçümsenmeyecek hesaplama yetenekleri var ama hataları|http://www.eusprig.org/ pahalıya mal olabiliyor.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2&lt;/span&gt;: Mac kullanan bir [arkadaş|http://surtas.blogspot.com/]ımdan öğrendiğime göre dmg uzantılı dosya bir sanal diskmiş ve içinden çıkan macpython.mpkg'ye çift tıklanarak kurulum yapılabiliyormuş.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3&lt;/span&gt;: Windows'da konsol açmak için çalıştır komutunu (WIN+R) verip "cmd" yazabilirsiniz.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4&lt;/span&gt;: Windows kullananlar CTRL+Z'den sonra ENTER'a basmalılar, hatta Windows kullanmayı Linux kurmalılar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23995915-115947613725921937?l=muhuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://muhuk.blogspot.com/feeds/115947613725921937/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23995915&amp;postID=115947613725921937' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/115947613725921937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/115947613725921937'/><link rel='alternate' type='text/html' href='http://muhuk.blogspot.com/2006/09/py-hesap-ylan-salalm.html' title='Py-Hesap: Yılanı Salalım'/><author><name>muhuk</name><uri>http://www.blogger.com/profile/15482583441536572332</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23995915.post-115843344007833031</id><published>2006-09-16T22:01:00.000+03:00</published><updated>2006-09-16T22:06:44.910+03:00</updated><title type='text'>Zaman öldürmek için...</title><content type='html'>Size gösterilen 2 fotoğrafdan beğendiğinizi/beğenmediğinizi seçiyorsunuz. Sonra da beyin size sizin hakkınızda tahminlerini söylüyor. Bilin bakalım beyin bunu nasıl yapıyor? (Çok basit aslında)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.likebetter.com/"&gt;likebetter.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.hatemore.com/"&gt;hatemore.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Eğer gerçekten sizi zorlayacak birşeyler arıyorsanız &lt;a href="http://www.planarity.net/"&gt;planarity&lt;/a&gt;. En azından oynadıktan sonra kandırıldığınızı hissetmeyeceksiniz.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23995915-115843344007833031?l=muhuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://muhuk.blogspot.com/feeds/115843344007833031/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23995915&amp;postID=115843344007833031' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/115843344007833031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/115843344007833031'/><link rel='alternate' type='text/html' href='http://muhuk.blogspot.com/2006/09/zaman-ldrmek-iin.html' title='Zaman öldürmek için...'/><author><name>muhuk</name><uri>http://www.blogger.com/profile/15482583441536572332</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23995915.post-115287081261304952</id><published>2006-07-14T12:39:00.000+03:00</published><updated>2006-09-30T21:56:18.086+03:00</updated><title type='text'>Türkçeleştirme, Öyle Kalsın</title><content type='html'>Ben Türkçe yazılım kullanmak istemiyorum. Türkçe'yi sevmediğimden değil, seviyorum. Kullandığım yazılımlar Türkçe yazılımlar değil, Türkçeleştirilmiş yazılımlar. Basit bir şey için bile menülerde, diyalog kutularında dolaşıp durmak, açık ve kesin olmayan çevirilerin acaba gerçekte ne olabileceğini tahmin etmeye çalışmak sıkıntı veriyor. Anlatmaya çalıştığım şeyi bir önceki cümlede yazdığım &lt;span style="font-style:italic;"&gt;diyalog kutusu&lt;/span&gt; sözü çok iyi ifade ediyor; bilgisayarlarla, teknolojiyle ilgisi olmayan birine &lt;span style="font-style:italic;"&gt;diyalog kutusu&lt;/span&gt; deseniz ne anlam çıkarır bundan? Ya da herhangibir anlam çıkarabilir mi?&lt;sup&gt;1&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;Türkçeleştirme çalışmalarında yapılan, arayüzü Türkçe olarak yeniden yaratmak değil, mevcut teknik altyapıyla yabancı dil kelimelerin yerine Türkçe'lerini koymak. Oysa Türkçe söz dizimiyle, cümle yapısıyla yabancı dillerin (örneğin İngilizce) özellikleri birbirine uymuyor. Sonuç hem Türkçe'ye haksızlık ediliyor hem de kullanım kalitesi düşüyor.&lt;br /&gt;&lt;br /&gt;Kullanıcı açısından baktığımızda; İngilizce bilenler açısından zaten bir sorun yok, İngilizce bilmeyenler Türkçeleştirilmiş program kullanıyor ve programların Türkçe'ye çevrilmesini istiyorlar. Herkes istediği programı, istediği dilde kullanmakta özgür. Ama bu kullanıcılar, çoğu zaman bunun farkına bile varmadan, basit işlevler dışında, kullandıkları yazılımlardan ve bütün olarak bilgisayarlarından yararlanamıyor. Çünkü sadece onlara sunulan kadarını öğrenebiliyor, teknik detayları araştırmıyor, tartışmalara giremiyor. Terimlerini bilmediğiniz teknik bir konuda nasıl tartışmaya katılabilirsiniz?&lt;br /&gt;&lt;br /&gt;3 boyutlu animasyon, hem sanatsal hem de teknik öğeleri içinde (bana göre) eşit oranda barındıran bir alan. Bir çok teknik terimin Türkçe karşılıkları yok. Örneğin &lt;span style="font-style:italic;"&gt;render&lt;/span&gt;, ya da &lt;span style="font-style:italic;"&gt;mesh&lt;/span&gt;, &lt;span style="font-style:italic;"&gt;patch&lt;/span&gt;. Bu sözcükler için Türkçe sözlükten bakıp bir karşılık uyduramazsınız, aslının yerini tutmaz. Mesh için ağ mı diyeceğiz? Patch'e yama deyince anlaşılır oluyor mu? O zaman 3 boyutlu animasyon programlarını Türkçe'ye çevirmenin anlamı ne?&lt;br /&gt;&lt;br /&gt;Türkçe'ye çevrilmiş 3 boyutlu animasyon programı da yok bildiğim kadarıyla. Ama forumlarda bu programlar hakkında Türkçe kaynak arayan çok. Aradığını bulsa bile şu veya bu düğmeye bastığında ne olacağını öğrenecek o kadar. Amaç düğmelere basmaksa ya da doğru zamanlamayla, doğru sırayla basmaksa bunun için daha pratik çözümler üretilebilir. Örneğin program kendi düğmelerine basılmış gibi davranabilir. Işıkları yerleştirmeyi, malzemelerin gerçek hayattaki özelliklerinin bilgisayar ortamında nasıl taklit edildiğini bilmeden üzerinde "render" yazan düğmeye basmak kendini kandırmak oluyor.&lt;br /&gt;&lt;br /&gt;Bilgisayar konusunda basit ofis işlevleri&lt;sup&gt;2&lt;/sup&gt; dışında, teknik bir konuda yabancı dilde çalışmaya (haydi dürüst olup ismini de koyalım; İngilizce) mahkumsunuz. Türkçe kaynaklar az ve yetersiz. Türkçeleştirme'ye ağırlık vermek de akıntıya karşı yüzmek. Ne kadar çevirirseniz çevirin çeviri hiç bitmez. Eğer Türkçe'ye hizmet etmek istiyorsak, önce öğrenelim. Kaynağından, İngilizce olarak öğrenelim. Sonra Türkçe birşeyler yaratalım. İthalata değil, üretime ağırlık verelim. Kendi dilimizde üretelim ki böyle yazılar anlamını yitirsin.&lt;br /&gt;&lt;br /&gt;Son olarak çeviri çalışmalarında çalışanlara ve yaptıkları işe saygı duyduğumu belirtmek isterim. Yaptıklar gerçekten fedakarlıktır ve değerleri bilinmeli. Benim yukarıdaki tepkim öğrenme tembeli olup da şikayet eden, zoru görünce de saçma sapan bahaneler uyduranlara.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1&lt;/span&gt;: İngilizce konuşan birine söylesek anlam çıkarır mı diye soracak olursanız, onların &lt;span style="font-style:italic;"&gt;box&lt;/span&gt; sözünü kaç değişik anlamda kullandıklarına bakmanızı öneririm.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2&lt;/span&gt;: E-posta göndermek ve almak, hesap tablosu ve raporlar hazırlamak, belki bir muhasebe programı ya da onun gibi bir paket program kullanmak...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23995915-115287081261304952?l=muhuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://muhuk.blogspot.com/feeds/115287081261304952/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23995915&amp;postID=115287081261304952' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/115287081261304952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/115287081261304952'/><link rel='alternate' type='text/html' href='http://muhuk.blogspot.com/2006/07/trkeletirme-yle-kalsn.html' title='Türkçeleştirme, Öyle Kalsın'/><author><name>muhuk</name><uri>http://www.blogger.com/profile/15482583441536572332</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23995915.post-115173662029091364</id><published>2006-07-01T09:34:00.000+03:00</published><updated>2006-07-01T09:50:20.300+03:00</updated><title type='text'>Tırmık</title><content type='html'>Anasayfa: &lt;a href="http://www.muhuk.com/software/tirmik.html"&gt;TIRMIK&lt;/a&gt;&lt;br /&gt;Tırmık Pardus için bir çöp kutusu yöneticisi. Kurmak için anasayfasından indirebileceğiniz arşivden çıkacak TIRMIK.py dosyasına çalıştırılma izni (örneğin 755) verdikten sonra kolayca ulaşabileceğiniz bir yere kopyalayın (örneğin /usr/bin). Bu aşamadan sonra Tırmık'ı &lt;span style="font-style:italic;"&gt;TIRMIK.py&lt;/span&gt; yazarak çalıştırabilirsiniz. Kullanabileceğiniz parametreler anasayfada ya da &lt;span style="font-style:italic;"&gt;TIRMIK.py --help&lt;/span&gt;.&lt;br /&gt;Eğer Tırmığın çöp kutunuzu otomatik olarak yönetmesini istiyorsanız yönetici haklarıyla &lt;span style="font-style:italic;"&gt;crontab -u &lt;kullanıcı-adınız&gt; -e&lt;/span&gt; komutuyla bir cron işlemi eklemeniz yeterli. Açılan metin dosyasına:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;0 */2 * * * TIRMIK.py -a 30 -s 2048 &gt;&gt; $HOME/logs/tırmık.log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;satırını eklemeniz yeterli. Bu komut Tırmık'ın her 2 saatte çalıştırılmasını, 30 günden eski dosyaları silmesini, daha sonra gerekirse çöp kutusu büyüklüğünü 2 gigabayt'a düşürmesini ve çıktısının ev dizini içindeki logs/tırmık.log dosyasına eklenmesini sağlar.&lt;br /&gt;&lt;br /&gt;Tırmık işinize yaradıysa ya da hataları / eksiklikleri varsa buraya yorum olarak ekleyiniz.&lt;br /&gt;&lt;br /&gt;İyi çalışmalar :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23995915-115173662029091364?l=muhuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://muhuk.blogspot.com/feeds/115173662029091364/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23995915&amp;postID=115173662029091364' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/115173662029091364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/115173662029091364'/><link rel='alternate' type='text/html' href='http://muhuk.blogspot.com/2006/07/trmk.html' title='Tırmık'/><author><name>muhuk</name><uri>http://www.blogger.com/profile/15482583441536572332</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23995915.post-115130879159040464</id><published>2006-06-26T10:54:00.000+03:00</published><updated>2006-06-26T11:46:16.690+03:00</updated><title type='text'>İstemek</title><content type='html'>Ben bu kavramı tamamen yanlış anlamış olabilirim. Ama çevremdeki insanlar &lt;span style="font-style:italic;"&gt;istiyorum&lt;/span&gt; dediklerinde ben &lt;span style="font-style:italic;"&gt;olsa iyi olur, ama ben gerçekleşmesi için en ufak çaba harcamayacağım&lt;/span&gt; duyuyorum.&lt;br /&gt;&lt;br /&gt;- Şöyle fazla kilolarından kurtulup forma girmek istemez misin?&lt;br /&gt;- İsterim tabi.&lt;br /&gt;- Ama kolay değil biliyorsun, uğraşman lazım.&lt;br /&gt;- Yahu, uğraşırım n'olcak.&lt;br /&gt;- Yani bu amacına ulaşmak için gereken fedakarlığı yapacaksın?&lt;br /&gt;- Ne fedakarlığı?&lt;br /&gt;- Haftada 4 gün ağırlık çalışması, her gün en az 1 saat cardio&lt;sup&gt;1&lt;/sup&gt;, artı diyet, artı düzenli uyku...&lt;br /&gt;- Bunları yapmam mümkün mü benim, bir kere bu kadar zamanım yok.&lt;br /&gt;- İstiyorsun ama.&lt;br /&gt;- İstiyorum.&lt;br /&gt;&lt;br /&gt;Bunun insanların özgür iradelerinin farkında olmadan yaşamasıyla ilgili olduğunu düşünüyorum. Özgür irade demek sadece &lt;span style="font-style:italic;"&gt;ben istediğimi yaparım&lt;/span&gt; demek değil. Kendi kontrolünde değilmiş gibi görünen durumlar karşısında bile bir seçim yaptığını kabul edebilen kişi ancak özgür iradesinin farkında olabilir. Önümüzde hiçbir zaman tek seçenek yok, zaten &lt;span style="font-style:italic;"&gt;tek&lt;/span&gt; olsaydı &lt;span style="font-style:italic;"&gt;seçenek&lt;/span&gt; olmazdı. Zor olanı - ama çoğu zaman doğru olanı - görmezden gelerek &lt;span style="font-style:italic;"&gt;başka seçeneğim yoktu&lt;/span&gt; demek vicdanen rahatlatıyor insanları.&lt;br /&gt;&lt;br /&gt;Ben &lt;span style="font-style:italic;"&gt;istemek&lt;/span&gt; kavramına kendimce anlamlar yüklüyor olabilirim. Ama gerçekten istemek; karar vermek, sonuçları değerlendirmek, yapılması gereken fedakarlığı göze almak ve harekete geçmektir bana göre. Gerisi yalan.&lt;br /&gt;&lt;br /&gt;1: Türkçe'sini bilmiyorum, kusura bakmayın. Kilo vermek amacıyla yapılan aerobik egzersiz.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23995915-115130879159040464?l=muhuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://muhuk.blogspot.com/feeds/115130879159040464/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23995915&amp;postID=115130879159040464' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/115130879159040464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/115130879159040464'/><link rel='alternate' type='text/html' href='http://muhuk.blogspot.com/2006/06/istemek.html' title='İstemek'/><author><name>muhuk</name><uri>http://www.blogger.com/profile/15482583441536572332</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23995915.post-114776567995100563</id><published>2006-05-16T10:45:00.000+03:00</published><updated>2006-05-16T10:47:59.963+03:00</updated><title type='text'>Hayretler İçinde İzledim</title><content type='html'>David Copperfield de kimmiş, hıh :)&lt;br /&gt;&lt;br /&gt;&lt;A HREF="http://video.google.com/videoplay?docid=194633005204962690&amp;pl=true"&gt;http://video.google.com/videoplay?docid=194633005204962690&amp;pl=true&lt;/A&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23995915-114776567995100563?l=muhuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://muhuk.blogspot.com/feeds/114776567995100563/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23995915&amp;postID=114776567995100563' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/114776567995100563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/114776567995100563'/><link rel='alternate' type='text/html' href='http://muhuk.blogspot.com/2006/05/hayretler-iinde-izledim.html' title='Hayretler İçinde İzledim'/><author><name>muhuk</name><uri>http://www.blogger.com/profile/15482583441536572332</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23995915.post-114664133050114212</id><published>2006-05-03T10:03:00.000+03:00</published><updated>2006-05-03T10:28:50.510+03:00</updated><title type='text'>Kendime Notlar: Sunum</title><content type='html'>Dün arka arkaya dinlediğim dört e-Ticaret sunumundan sonra, sunum hazırlama ile ilgili aklımda kalanlar:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Rakamlar yerine şekiller kullanmalı.&lt;/span&gt; Tablolar büyük de olsa küçük de olsa sunum sırasında zor algılanıyor. Durup tablodaki rakamları açıklamak da sunumun temposunu düşüreceğinden verileri rakamlar yerine şekillerle vermek ve tabloları özet halinde ifade etmek bence daha iyi. Belki tablo detayları yansıtmada gösterilmeden söylenebilir. Daha da iyisi belki tabloyu hiç göstermeyip grafik kullanmak. (Ama pie chart olmasın lütfen.)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Azla yetinmeyen, çoğu aktaramaz.&lt;/span&gt; İnsan ömrü sınırlı, odaklanma süresi daha da sınırlı, üstelik genelde size sunumunuz için verilen zaman da sınırlı olacaktır. Her şeyi anlatayım, çok slayt göstereyim mantığıyla hazırlanan obez sunumlar TV reklamlarında alttan en küçük harflerle ışık hızında geçen yazıların etkisini yapıyor. Sunum sonrasında izleyenlerin birbirine sunumda ne anlatıldığını sorması istenmiyorsa zamanın yeteceği kadar detaylandırmalı. (Özellikle Ragga Oktay değilseniz.)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;İzleyiciler karanlıkta bırakılmamalı.&lt;/span&gt; İzleyenlerin dikkatlerini sunumda tutmak için çabalamak iyi. Ama izleyicilere dikkatlerini sunumun bütününe (veya onları daha çok ilgilendiren parçalarına) dağıtmak için ipuçları vermek de toplamda sunumun etkinliğini arttırabilir. Örneğin başlangıçta sunumun içindekiler gösterilebilir. Daha da iyisi her slaytta sunumun neresinde olunduğu ve ne kadarının tamamlandığı görselleştirilebilir.&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23995915-114664133050114212?l=muhuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://muhuk.blogspot.com/feeds/114664133050114212/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23995915&amp;postID=114664133050114212' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/114664133050114212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/114664133050114212'/><link rel='alternate' type='text/html' href='http://muhuk.blogspot.com/2006/05/kendime-notlar-sunum.html' title='Kendime Notlar: Sunum'/><author><name>muhuk</name><uri>http://www.blogger.com/profile/15482583441536572332</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23995915.post-114594656223446783</id><published>2006-04-25T09:02:00.000+03:00</published><updated>2006-04-25T09:29:22.276+03:00</updated><title type='text'>Güzel Bir Magazin Örneği</title><content type='html'>Mutfakta tezgahın üzerine gazete/dergi sererim akar kokar birşey yapacaksam. Kağıtları attıktan sonra tezgahı temizlemek kolay oluyor. Evdeki kağıt stoğum azaldığı için bir Aktüel dergisi almıştım.&lt;br /&gt;İçinde gerçekten güzel haberlerin olması beni şaşırttı. Eski başbakanın açıklamalarını ya da ot çöp hakkındaki gerçekleri kim takar. Dinozorların nesli çoktan tükendi, güzel insanlarımız da "bana birşey olmaz" geni taşıdığı için bilinçli beslenmeyi uzaktan severler. Benim hoşuma giden bu "kadın programı" denen sirk gösterilerine gidenlerle ilgili yazıydı.&lt;br /&gt;Bu insanların normal olduğunu kabul ettiğim gün gidip en az 8 katlı bir binanın 1. katından atlarım. Ama bu yazıyı okuduktan sonra biraz daha geniş bakmaya çalıştım. Sanırım bu insanlar o programa gitmeden de yeterince garip, o programlar belki de onları normale yaklaştırıyor. Deşarj oluyorlar, küçük düşürücü şekilde de olsa kendilerini ifade ediyorlar. Belki de o programlar ve konukları toplum olamamamızın görüp görebileceğimiz en güçlü ifadesi.&lt;br /&gt;Habercilikten anlamam ama okurluk hakkında biraz bilgim var. Bence &lt;a href="http://www.yeniaktuel.com.tr/tur113,41@2100.html" target="_new"&gt;bu haber&lt;/a&gt; konu seçimi&lt;sup&gt;1&lt;/sup&gt; ve işlenişi olarak başarılı. İçinde hiç yorum yok, sizi düşünmeye sevk ediyor. Işıltılı olmasa da okunmaya değer. Eğer Aktüel almadıysanız çok geç kalmış sayılmazsınız.&lt;br /&gt;&lt;br /&gt;1: Eğitim Türkiye'nin en önemli konularından biriyse çocukları kadınların eğittiğini, ülkemizin geleceğini onların hazırladığını hatırlamak gerekir. Yoksa siz okullarda eğitim verildiğini mi düşünüyorsunuz?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23995915-114594656223446783?l=muhuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://muhuk.blogspot.com/feeds/114594656223446783/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23995915&amp;postID=114594656223446783' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/114594656223446783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/114594656223446783'/><link rel='alternate' type='text/html' href='http://muhuk.blogspot.com/2006/04/gzel-bir-magazin-rnei.html' title='Güzel Bir Magazin Örneği'/><author><name>muhuk</name><uri>http://www.blogger.com/profile/15482583441536572332</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23995915.post-114301576674128996</id><published>2006-03-22T10:21:00.000+02:00</published><updated>2006-04-12T10:33:13.903+03:00</updated><title type='text'>Müzik</title><content type='html'>Çağdaş insanlar olarak müziği de herşey gibi tüketiyoruz. Eski insanların da aynen böyle yaptıklarını düşünüyorum. Onlar da (genelleme yapıyorum) yaşamlarını sorgulamadan yaşıyor ve ürettiklerinden fazla tüketiyorlardı. Bizim tek farkımız uygarlığımızla öğünüp kendimize çağdaş dememiz (Onlar da kendilerine çağdaş deseler yanlış olmazdı sanırım).&lt;br /&gt;&lt;br /&gt;Müziği üretenler, ya da - önce toprağa gömülüp, kafama taşlar atıldıktan sonra asılırken ateşe verilmeyi göze alarak - yaratanlar da diğerleri gibi tüketiyor. Eğer gerçek müzikten söz ediyorsak tükettiklerinden fazla üretiyorlardır. Yine de yaşamak için onların da gereksinimleri var. Müzisyenler de (bir anlamda) müziklerini satarak bu gereksinimlerini karşılıyor.&lt;br /&gt;&lt;br /&gt;Çağdaş insanlar bu alışverişi çok doğal karşılasa da, müziğin satışı diğer tüketim malzemelerinden farklı bir olay olduğunu düşünüyorum. Müzik, doğası gereği ekmek ya da kağıt havludan farklı; ekmek ve kağıt havlunun üretimi endüstriyel bir süreçken, müziğin yaratımı sanatsal bir süreç. Ekmek ve kağıt havlu birer ürün. Bugün bir ürün haline getirilmiş müziğin, ne kadar müzik olduğunun kararını size bırakıyorum.&lt;br /&gt;&lt;br /&gt;Yakın zamana kadar müzisyenler albüm yaparak geçimlerini sağlıyordu (ve parti veriyor ve ev-araba-yat-uçak alıyor ve burada yazmak istemediğim çeşitli etkinliklerde bulunuyordu). Yapılan albümler dağıtıcılar tarafından çoğaltılarak satılıyordu. Dağıtıcıların ticari kuruluşlar olması büyüme ihtiyacını, büyüme ihtiyacı da niceliğin niteliğe tercih edilmesini getirdi. Bu da müzik endüstrisi denilen canavarı yarattı. İşte yukarıda bahsettiğim çağdaş insan müzik ihtiyacını böyle karşılıyor ya da karşılayamıyor.&lt;br /&gt;&lt;br /&gt;Ben müzikle tanıştığımda kasetler vardı ve kolayca kopyalanabiliyordu. Daha sonra CD'lerle (dönerteker miydi tekerçalar mıydı?) tanıştık. Önce kopyalanamıyordu, sonra kolayca kopyalanmaya başlandı. Şimdi zaman sayısal müzik ya da MP3 zamanı ve hepimizin bildiği gibi kolayca kopyalanabiliyorlar. O zamandan bu zamana değişmeyen iki önemli şey var. Birincisi müzik albümlerini kopyalamanın yasadışı olması. İkincisi dağıtıcıların müziğe müzikal anlamda hiçbirşey katmamaları. Onların işlevi sadece müziği bize ulaştırmak.&lt;br /&gt;&lt;br /&gt;Dağıtıcılar, ticari kuruluşlar olarak gelişen teknolojiye kucak açarak müziği MP3 kanalıyla dağıtmaya başladı. Hayır, aslında bu büyük bir yalan. O kadar büyük bir yalan ki sadece henüz dünyanın iğrenç kapitalist gerçekleriyle haşır neşir olmayan gençler ve aptal yetişkinler inanır [1]. Dağıtıcıların, daha doğrusu geniş anlamda müzik endüstrisinin yaptığı şey DRM dedikleri bekaret kemeriyle MP3 (ve diğer formatları) sakatlamak oldu.&lt;br /&gt;&lt;br /&gt;DRM, sayısal hak yönetiminin kısaltması. Burada sözü geçen hakkın sizin haklarınız olmadığını tahmin etmişsinizdir herhalde. Sözü geçen haklar üreticiler ve dağıtıcıların hakları. Bu haklar uygulamada size kısıtlamalar olarak yansıyor. Örneğin parasını ödeyerek satın aldığınız bir şarkıyı CD'ye yalnızca bir kere yazabilmek ya da iPod'unuza yükledikten sonra tekrar bilgisayarınıza atamamak gibi. Elbette siz bu şarkıları satın alırken bu şartlar size belirtilecektir, siz de özgür iradenizle kısıtlamalı şarkıyı indirecek ya da indirmeyebileceksiniz. Ancak işin ilginç tarafı bir şekilde bu şarkıların DRM'siz bir kopyası çıkartılırsa (ki bu pek zor değil) o zaman bu kopyayı kullanan kişiler için hiçbir kısıtlama kalmayacağı. Yani korsan kullananlar şarkılara bedava ve kısıtlamasız sahip olacak, parasını verip satın alanlar ise kısıtlamalarla cezanlandırılacak.&lt;br /&gt;&lt;br /&gt;Eğer bugün müziği sayısal olarak (örneğin MP3) dağıtabiliyorsak, bu artık büyük dağıtıcılara ihtiyaç kalmadı demektir. Müzisyenler çok daha küçük operasyonlarla büyük kitlelere ulaşabilir ve yine ihtiyaçları olan parayı kazanabilir. Hatta albümlerini ücretsiz dağıtarak, sadece konser gelirleriyle bile yaşayabilirler. Belki yatlar katlar alamazlar, ama müzikle ilgilenme sebebi zengin olup sürekli parti yapmak olan birisi müziğiyle başarılı olabilir mi? Gerçek müzik yapanın da doğru stratejiyle varlıklı hale gelmesi mümkün değil mi? Gidip bir CD aldığınızda ödediğiniz paranın ne kadarının o müziği yaratanlara aktarıldığını düşündünüz mü? Ne kadarı vergi? Ne kadarı dağıtıcıya ve yapımcıya gidiyor?&lt;br /&gt;&lt;br /&gt;Sanatçıların sürekli "Sanatçı farklı birşeydir, herkes sanatçı olamaz, farklı birşeydir sanat!" demesi ne kadar komik oluyorsa sanatın bir iş olarak görülmesi o kadar şaşkınlıktır bence. Profesyönellik başka birşeydir, ekmek parası için yapıyorum demek başka. Sanat kendini ifade etmek değil midir? O zaman müziğin (ve diğer sanat dallarının) baskın özelliği paylaşmak olmalıdır. Değişen koşullara rağmen at gözlüğüyle eskinin uygulamalarını sürdürmek yerine yeni metodlar aranmalıdır. Ne de olsa değişen sadece teknoloji değil, toplum da değişiyor, insan da.&lt;br /&gt;&lt;br /&gt;Müziğin insanlara nasıl ulaştırılacağı müzik endüstrisinin en çok da bu sistem içerisinde ağırlığı giderek azalan müzisyenlerin sorunu. Dinleyiciler olarak biz gerçekten müziğini beğendiğimiz sanatçıları bir şekilde desteklemek zorundayız. CD'lerini alabiliriz [2], konserlerine gidebiliriz, yasal MP3'lerini indirebiliriz. Diğer yandan müzik alışkanlıklarımızı da gözden geçirmeliyiz. Müzik korsanlığı da diğer korsanlıklar gibi yasadışı ve ahlaken yanlış. Ama bu bize sunulan sistemi de sorgulamayacağız anlamına gelmez. En azından sadece rafları doldurmak için yapılmış beş para etmez albümlere paramızı çarçur etmeyerek müzik endüstrisine bir mesaj verebiliriz; müziğin endüstriyel bir ürün olmadığı mesajını.&lt;br /&gt;&lt;br /&gt;1: Kapitalist düşünceye diğerlerinden daha yakınım, ama bu kapitalizmin iğrenç yanlarını daha az iğrenç yapmıyor.&lt;br /&gt;2: Ama rootkitlere dikkat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23995915-114301576674128996?l=muhuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://muhuk.blogspot.com/feeds/114301576674128996/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23995915&amp;postID=114301576674128996' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/114301576674128996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23995915/posts/default/114301576674128996'/><link rel='alternate' type='text/html' href='http://muhuk.blogspot.com/2006/03/mzik.html' title='Müzik'/><author><name>muhuk</name><uri>http://www.blogger.com/profile/15482583441536572332</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
