<?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-4770273052506846136</id><updated>2011-09-18T06:12:17.956-07:00</updated><category term='pardus staj'/><category term='özgürlükiçin'/><category term='uekae'/><category term='gezegen'/><category term='müzik'/><category term='open office'/><category term='python'/><category term='programming'/><category term='summer of code'/><category term='pygame'/><category term='pardus'/><category term='towers of hanoi'/><category term='mercurial'/><category term='artistanbul'/><title type='text'>Orçun Avşar</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4770273052506846136.post-5150891702325535894</id><published>2011-06-22T15:08:00.000-07:00</published><updated>2011-06-23T00:30:08.128-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mercurial'/><title type='text'>commit yapmak artık daha kolay!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://cloud.ohloh.net/attachments/292/logo-droplets-150_med.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://cloud.ohloh.net/attachments/292/logo-droplets-150_med.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Mercurial kullanırken 'hg commit' demek beni hep huzursuz etmekteydi. Ta ki MQ ile tanışana dek. Commit yaptıktan sonra commit'in hash'i yeni commit'in parent'ı olarak kullanılacağı için commit'i hiçbir şekilde değiştirmek artık mümkün olmuyor. Push demeden önce bir sorun fark ettiyseniz, bunu yeni bir commit ile halletmekten başka çareniz yok. MQ (Mercurial Queue) burada yetişiyor yardıma. Ana fikri değiştirilebilir changeset'ler yaratmanıza imkan vermek. En çok iki açıdan faydası var.&lt;br /&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&amp;nbsp;Girişte yazdığım gibi, bir commit yapmanız gerek fakat bunun en mükemmel commit olduğuna ikna olmadığınız halde şimdilik yeterli gibi duruyor. Bu durumda bunu bir mq patch olarak kuyruğa atabiliriz ve daha sonra üstüne yeni patchler eklesek dahi geri dönüp tekrar düzenlememiz mümkün. Bunun sayesinde commit'imizi yapmış gibi varsayıp yeni bir commit üzerinde çalışmaya başlayabiliriz. Ya da aynı anda birden fazla commit üzerinde çalışabiliriz.&lt;/li&gt;&lt;li&gt;Bir dosya üzerinde çalışırken çalıştığımız dosyada bir hata bulduk. Bulduğumuz hatayı onarırsak bu değişiklik bizim önceden yaptığımız çalışmalarla birlikte commit edilecek ve atomic commit yerine iki farklı işi tek bir commit'de yollamış olacağız. Ya da hatayı işimiz bittikten sonra düzelteceğimize kendimizi inandırıp unutmamız da mümkün. Bunun yerine mq kullanıp şu ana kadar yaptığımız değişiklikleri bir patch kuyruğuna atıp hatayı onaran kodu commitleyip tekrar patchimize dönüp çalışmaya devam edebiliriz.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Bir patch ile işimizin bittiğine emin olduktan sonra onu gerçek bir commit'e çeviriyoruz.&amp;nbsp;&lt;a href="http://mercurial.selenic.com/wiki/MqTutorial"&gt;Şurada&lt;/a&gt;&amp;nbsp;MQ ile ilgili güzel bir belge mevcut. Ne işe yaradığını ve nasıl çalıştığını tam olarak anlayıp kullanmaya başladıktan sonra hayat daha bir güzel oluyor. Yatmadan önce patch'imi qrefresh edeyim diye buluyorum kendimi.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-5150891702325535894?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/5150891702325535894/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=5150891702325535894' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/5150891702325535894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/5150891702325535894'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2011/06/commit-yapmak-artk-daha-kolay.html' title='commit yapmak artık daha kolay!'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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-4770273052506846136.post-1665370322458965347</id><published>2011-06-06T12:41:00.000-07:00</published><updated>2011-06-06T12:41:27.800-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='summer of code'/><title type='text'>GSoC 2011</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_1KnyCCObihA/TTolXBfhfPI/AAAAAAAAAAM/2WKIapMeyok/s1600/GSOC_2011_300x200px_URL.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="133" src="http://2.bp.blogspot.com/_1KnyCCObihA/TTolXBfhfPI/AAAAAAAAAAM/2WKIapMeyok/s200/GSOC_2011_300x200px_URL.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Gecikmiş bu yazıyı nihayet yazabiliyorum, benim için bir zamanlar gerçekleşmesi oldukça uzak bir hayal olan "Google Summer of Code"a bu sene kabul edildim ve bunun mutluluğu içerisindeyim. Kodlama süreci başlayalı 2 hafta geçti fakat okullar dolayısı ile henüz sıkı bir çalışma sürecine giremedim. &lt;br /&gt;&lt;br /&gt;Bu yaz Summer of Code'da Melange için "Integration with External APIs" projesi üzerine çalışacağım. Melange GSoC ve GCI etkinliklerinin üzerinde çalıştığı Django ve App Engine ile birlikte çalışan bir &lt;a href="http://code.google.com/p/soc/"&gt;çatı&lt;/a&gt;. Geleneksel Django yaklaşımı yerine bir nevi kendi framework'lerini kullanmaktalar ve sanırım dahil olabileceğim en düzenli kod yazılan projelerden birisi. (Açıklama satırının sonuna nokta koymadığım için uyarılmışlığım oldu :) Projem ile ilgili ayrıntıları &lt;a href="http://code.google.com/p/soc/wiki/GSoC2011IntegrationWithExternalAPIs"&gt;buradan&lt;/a&gt; ve Melange &lt;a href="http://melange-dev.blogspot.com/"&gt;bloğundan&lt;/a&gt; takip etmeniz mümkün.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-1665370322458965347?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/1665370322458965347/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=1665370322458965347' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/1665370322458965347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/1665370322458965347'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2011/06/gsoc-2011.html' title='GSoC 2011'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1KnyCCObihA/TTolXBfhfPI/AAAAAAAAAAM/2WKIapMeyok/s72-c/GSOC_2011_300x200px_URL.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4770273052506846136.post-4186965306277286620</id><published>2011-04-15T16:07:00.000-07:00</published><updated>2011-04-15T16:07:17.571-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='müzik'/><title type='text'>Planet Caravan</title><content type='html'>Uykusuz bir sınav gecesinde boşlukta uçmak...&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/DW3pZjmS3rg" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-4186965306277286620?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/4186965306277286620/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=4186965306277286620' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/4186965306277286620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/4186965306277286620'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2011/04/planet-caravan.html' title='Planet Caravan'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/DW3pZjmS3rg/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4770273052506846136.post-6996670627918081109</id><published>2010-08-28T05:17:00.000-07:00</published><updated>2010-08-28T05:17:42.047-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gezegen'/><category scheme='http://www.blogger.com/atom/ns#' term='özgürlükiçin'/><category scheme='http://www.blogger.com/atom/ns#' term='artistanbul'/><category scheme='http://www.blogger.com/atom/ns#' term='uekae'/><category scheme='http://www.blogger.com/atom/ns#' term='pardus staj'/><title type='text'>ben kaçanzi</title><content type='html'>20. gün de tamamlandı ve Pardus staj maceramız sona erdi. Daha öğrenilecek çok fazla şey, gidilecek çok fazla yol olduğu için ayrılmak istemesem de pılımı pırtımı toplayıp eve dönme zamanı geldi. Çok güzel insanlarla tanışma fırsatı buldum ve hepsine staj dönemi boyunca bilgilerini ve tecrübelerini benimle paylaştıkları için buradan teşekkür ederim.&lt;br /&gt;&lt;br /&gt;Staja başladığımda Artistanbul'da çalışacağım için biraz tedirgindim. Sonuçta nasıl bir yerde çalışacağımı bilmiyordum ve Gebze'de çalışmak istememe rağmen Artistanbul tarafına seçilmiştim. Fakat gelecek senelerde de Artistanbul'da staj yapabilecek arkadaşlara belirtmek isterim ki burası oldukça keyifli ve teknik anlamda çok şey öğrenebileceğiniz bir yer, bazı açılardan daha avantajlı.&lt;br /&gt;&lt;br /&gt;Teknik açıdan daha çok web (Django) üzerine çalışılıyor ve bu alanda gelişmek istiyorsanız ofiste size yol gösterebilecek Pardus ve Django konusunda çok bilgili iki kişi (Gökmen Görgen ve Ahmet Aygün) var .Özgürlük İçin, Pardus kullanıcılarına yönelik amaçları olan bir platform olduğu için burası daha çok Pardus'un toplumla ve çevresi ile olan ilişkileri hakkında kafa yorulan bir yer.&lt;br /&gt;&lt;br /&gt;Stajımın son 2 gününü Ali Işıngör'ün de tavsiyesi ile Gebze'de Tubitak kampüsünde geçirdim. Geliştiricilerle tanışma&amp;nbsp; ve UEKAE'deki çalışma ortamını da görme şansı bulum. Bünyem sabah 9:30'da kalkmaya, işe 12 gibi başlamaya alışkın olduğundan 5:45'de uyanıp günde 4 saat yol gitmenin vücudumda 'Noluyor lan!' isimli hormonu salgılatması dışında UEKAE'de bulunmak harikaydı. Burası bir Ütapya. Sosyal yaşamın iğrenç çelişiklikleri içerisinden buraya geldiğiniz zaman önce çok şaşırıyorsunuz. Bilim ahlakına sahip, özgür düşünen insanların bir arada bulunduğu, iki insan arasında ayrım hissedilmeyen, sakin bir toplum. Zaten böyle olması gerektiğini düşününce kendinizi hep olmak istediğiniz yerdeymiş gibi hissediyorsunuz , şaşkınlık yerini keyif ve mutluluğa bırakıyor. &lt;br /&gt;&lt;br /&gt;Staj projem olan tema2'yi henüz tamamlayamadım. Önümüzdeki hafta  evden çalışarak commit yapmaya devam edeceğim.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-6996670627918081109?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/6996670627918081109/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=6996670627918081109' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/6996670627918081109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/6996670627918081109'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2010/08/ben-kacanzi.html' title='ben kaçanzi'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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-4770273052506846136.post-2146670542137161221</id><published>2010-08-20T14:34:00.000-07:00</published><updated>2010-08-20T14:34:28.241-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gezegen'/><category scheme='http://www.blogger.com/atom/ns#' term='pardus staj'/><title type='text'>Pardus Artistanbul Stajında 3. Hafta</title><content type='html'>Tema2 Oİ için tarafında büyük oranda tamamlandı. Simge setleri de içeriklere eklendi. Çok yakında süprüz yaparak sitede değişiklikleri yayına sokabiliriz. Önümüzdeki hafta için işin benim sevdiğim kısmına geldik ve KDE üzerinde (KNewStuff) çalışmaya başlayacağız. Ayrıca django-piston ile&amp;nbsp; Oİ için bir Rest API'si yazacağız. Geriye kalanların hepsini bir haftaya sığdırabilir miyiz emin değilim fakat tüm haftalardan daha yoğun geçeceği muhtemel. "Çok kolay benim proje, iki haftada bitirim" laflarımı da yemiş oldum böylelikle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-2146670542137161221?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/2146670542137161221/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=2146670542137161221' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/2146670542137161221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/2146670542137161221'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2010/08/pardus-artistanbul-stajnda-3-hafta.html' title='Pardus Artistanbul Stajında 3. Hafta'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4770273052506846136.post-6118654568735606251</id><published>2010-08-16T12:15:00.000-07:00</published><updated>2010-08-16T12:15:10.533-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gezegen'/><category scheme='http://www.blogger.com/atom/ns#' term='özgürlükiçin'/><category scheme='http://www.blogger.com/atom/ns#' term='pardus staj'/><title type='text'>Pardus Artistanbul Stajında 2. hafta ~ 2</title><content type='html'>Dün gerçekleşen Oİ IRC toplantısı sonrasında tema2'ye simge setlerini de ekleme kararı aldık. İçerikleri indirirken 3 saniyelik gereksiz beklemeyi de kaldırdık. Oİ deposuna commit yapmama rağmen şu sıralar tema modellerinde çok sık değişiklik olduğu için depoya gönderdiğim commitler Oİ'de henüz görünür değil. Bu arada tema yenileniyor fakat yeni bir Django uygulaması olarak değil. Yani Engin'in beyin2'deki izlediği yoldan farklı olarak, var olan kodda değişiklik yapıyorum. &lt;br /&gt;&lt;br /&gt;Dünkü toplantıda eklenmesi istenen bir diğer özellik sistem sesleriydi, fakat uygulanabilirlik açısından ne kadar kullanışlı olacağını henüz kestiremediğimiz için bu fikri tekrar düşünmek üzere erteledik. Duvar kağıdı yarışması da kısa süreli ertelemek zorunda kaldığımız bir diğer güzel fikirdi. Staj dönemim içinde bazı tema içeriklerini Pardus içerisinden erişilecek ve uygulanacak şekilde entegre etmek istediğimiz için yeni özellik eklemeyi sanırım bir yerde kesip onlar için kafa yoracağız. &lt;br /&gt;&lt;br /&gt;Yazıyı okuyanlar için Django ile ilgili ayrıntıları ve kullanıcı seviyesindeki özellikleri bir arada anlattığım zaman hoş olmayacağını düşündüğüm için Django ile ilgili teknik detayları atlamaya özen gösteriyorum. Başka bir yazımda teknik olarak neler yaptığımı biraz ayrıntılı şekilde&amp;nbsp; anlatmak istiyorum.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-6118654568735606251?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/6118654568735606251/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=6118654568735606251' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/6118654568735606251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/6118654568735606251'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2010/08/pardus-artistanbul-stajnda-2-hafta-2.html' title='Pardus Artistanbul Stajında 2. hafta ~ 2'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4770273052506846136.post-6166623207031030839</id><published>2010-08-13T14:35:00.000-07:00</published><updated>2010-08-13T14:39:47.107-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gezegen'/><category scheme='http://www.blogger.com/atom/ns#' term='artistanbul'/><category scheme='http://www.blogger.com/atom/ns#' term='pardus staj'/><title type='text'>Pardus Artistanbul Stajında 2. hafta</title><content type='html'>Stajda 2. haftamı tamamlamış bulunmaktayım. Zaman hızlı geçti. Şu ana kadar Özgürlük İçin için yaptığım değişikliklerin hiçbirisi görünür durumda değil fakat yavaş yavaş bazı kısımları tamamlamaya başladım. Merak edenler için tema'dan bir ekran görüntüsünü de burada paylaşayım. Teknik bir detay içermese de umarım merak uyandırır.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm5.static.flickr.com/4082/4889235444_ec9ee8c053_z.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="233" src="http://farm5.static.flickr.com/4082/4889235444_ec9ee8c053_z.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Bu arada Ali Işıngör ofise geldiğimde beni eşek şakaları konusunda uyarmıştı fakat pek ciddiye almamıştım. Bugün ilk eşek şakasına uğradım. Yemeğe gittiğim sırada 2-3 kişilik organize bir eylem olarak düzenlendiğini tahmin ediyorum. Yemekten sonra konsol ekranımda Python'u çalıştırmayı denediğimde şok edici bir hata mesajı ile karşılaşmıştım. Gökmen Görgen'e (yemeğe birlikte gitmiştik) durumu anlatınca ilk başta o da şok oldu :) Hemen ekran görüntülerini filan aldık. Fakat Gökmen'in şaşkınlığı benden kısa sürdü ve "Biri seni kekliyor oğlum" diyerek numaranın kaynağını buldu. Çok ucuz bir .bashrc şakasına kurban gitmiştim. Fakat oldukça iyi bir espriydi. Hatayı Python listelerine raporlamadan önce ortaya çıktığı için yine de şanslıydım. Bundan sonra oturumumu açık bırakıp gitmemeyi öğrenmiş oldum.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm5.static.flickr.com/4075/4889309718_a3bc87d5c1_b.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="http://farm5.static.flickr.com/4075/4889309718_a3bc87d5c1_b.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-6166623207031030839?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/6166623207031030839/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=6166623207031030839' title='3 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/6166623207031030839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/6166623207031030839'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2010/08/stajda-2.html' title='Pardus Artistanbul Stajında 2. hafta'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm5.static.flickr.com/4082/4889235444_ec9ee8c053_t.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4770273052506846136.post-3073593431056782720</id><published>2010-08-09T14:03:00.000-07:00</published><updated>2010-08-10T05:57:13.705-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gezegen'/><category scheme='http://www.blogger.com/atom/ns#' term='özgürlükiçin'/><category scheme='http://www.blogger.com/atom/ns#' term='pardus'/><category scheme='http://www.blogger.com/atom/ns#' term='open office'/><title type='text'>Pardus Artistanbul Stajında İlk Hafta ~ 2</title><content type='html'>Bugün Özgürlükİçin'in yeni beyin2'sinde ortaya atılan fikirlerden birisini&amp;nbsp; beğenerek Özgürlükİçin tema bölümü için uygulamaya karar verdik. Beyinde ortaya atılan fikirlerin hepsi ofiste merak ve dikkatle inceleniyor, yeni ve güzel fikirler heyecanla karşılanıyor. Beğendiğimiz ve uygulayacağımız fikir tema kısmında Open Office eklenti ve şablonlarına yer verme fikri oldu. OpenOffice.org'da yer alan şablonları inceledikten sonra, biz de özellikle Türkiye'de işimize yarayacak pek çok kullanışlı yeni şablonun buraya eklenebileceğini düşündük.· Open Office için sınırsız bir özelleştirme imkanı mevcut ve daha fazlası geliştiricilerimizin hayal gücüne kalmış.&lt;br /&gt;&lt;br /&gt;Beyin benim Özgürlükİçin'de en çok hoşuma giden kısımlardan birisi, yeni ve uygulanabilir pek çok fikir burada ortaya&amp;nbsp; çıkabiliyor. Beyin tam Pardus ile kullanıcılar arasında bir köprü kurma görevini üstlenmiş Özgürlükİçin'in hedefine yönelik bir uygulama. Bazen kullanıcılar için son derecede önemli ve uygulanması oldukça basit fikirler çıkabiliyor.&amp;nbsp; Uygulanabilirlik derecesi düşük fikirleri dahi okuyup gülüp geçmek yerine bir şekilde ciddiye almak, hem kullanıcıların neler düşündüğünü anlamak hem de ileride düşünülebilecek fikirlere bir kıvılcım oluşturabilme ihtimali olması açısında çok faydalı bana göre.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-3073593431056782720?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/3073593431056782720/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=3073593431056782720' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/3073593431056782720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/3073593431056782720'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2010/08/pardus-artistanbul-stajnda-ilk-hafta-2.html' title='Pardus Artistanbul Stajında İlk Hafta ~ 2'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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-4770273052506846136.post-7290908882135747823</id><published>2010-08-06T15:39:00.000-07:00</published><updated>2010-08-06T15:39:48.462-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gezegen'/><category scheme='http://www.blogger.com/atom/ns#' term='artistanbul'/><category scheme='http://www.blogger.com/atom/ns#' term='pardus'/><category scheme='http://www.blogger.com/atom/ns#' term='pardus staj'/><title type='text'>Pardus Artistanbul Stajında İlk Hafta</title><content type='html'>Artistanbul gerçekten çok keyifli bir yer. Bir haftadır burada staj yapmanın bana verdiği keyfin neler olduğunu düşünüyorum. Pek çok nedeni var ve en güzel yanı şu demek diğerlerine haksızlık olur. Buradaki herkes özgür yazılımı gerçekten seven insanlar ve yaptıkları işe bu yüzden çok fazla önem veriyorlar. Bunun heyecanını görmek ve benimle paylaşmaları sayesinde ben de yaptığım işten, burada bulunmaktan çok fazla keyif alıyorum. Bu mutluluk ve çalışma heyecanını anlatmak zor. Bu gerçekten burada bulunarak anlaşılabilir. 'Dahil olmak' dedikleri böyle bir şey ve kendinizi yapılan güzel işlerin bir parçası olarak görmek öğrendiklerinizi daha anlamlı kılıyor. Zaten bu da özgür yazılımın neden daha zevkli olduğunun bir nedeni. Burada işin teknik yanı, diğer yanlarından daha az önemli. Herkes konuşmak sosyal anlamda bir şeyler paylaşmak istiyor, bu sayede bir robot gibi değil değerleri olan insanlar olarak bilgisayarın başında herkes. Ali Işıngör ile özgür yazılım ya da herhangi bir başka konuda bir şeyler konuşabilmek kod yazmaktan değerli benim için. Zaten sadece bilgisayar değil ofiste insanların o an aklının ucundan köşesinden geçen herhangi bir saçma şey ile ilgili muhabbetler başlayabiliyor her an. Kızlar gittikten sonra bizimkiler ile erkek erkeğe muhabbet etmek de apayrı bir keyif.&lt;br /&gt;&lt;br /&gt;Tüm bu muhabbetler, şakalaşmalar, şamata, kaos ve dövüş müsabakalarının dışında buradakiler geri kalan zamanlarını sıkı bir biçimde çalışarak geçiriyorlar. Benim de staj döneminde yapacağım şey Özgürlük İçin' in tema kısmında iyileştirmeler yapmak olacak. Ayrıca geriye kalan vaktimde KDE'nin eski &lt;a href="http://ghns.freedesktop.org/"&gt;Get Hot New Stuff&lt;/a&gt; çatısının yerini alan &lt;a href="http://api.kde.org/4.5-api/kdelibs-apidocs/knewstuff/html/index.html"&gt;KNewStuff&lt;/a&gt; ile Pardus üzerinden Özgürlük İçin'in &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;REST API&lt;/a&gt;' sine erişerek yeni masaüstü bileşenleri indirilebilen ve uygulanabilen bir entegrasyon yapmayı hedefliyorum.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-7290908882135747823?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/7290908882135747823/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=7290908882135747823' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/7290908882135747823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/7290908882135747823'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2010/08/pardus-artistanbul-stajnda-ilk-hafta.html' title='Pardus Artistanbul Stajında İlk Hafta'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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-4770273052506846136.post-2883359372782124644</id><published>2010-05-04T17:07:00.000-07:00</published><updated>2010-05-04T17:12:27.842-07:00</updated><title type='text'>Staj @ Pardus</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.ozgurlukicin.com/media/upload/image/pardus-logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="132" src="http://www.ozgurlukicin.com/media/upload/image/pardus-logo.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Hiç beklemediğim anda gerçekleşen bir olay oldu bu. O kadar emindim ki gerçekleşmeyeciğine bilgi işlemde staj yapmak için Necdet hocayla prensipte anlaşmıştık bile. &lt;br /&gt;&lt;br /&gt;Stajın çok yararlı olacağını daha ilk dakikalardan anladım. Müthiş bir gazla Linux'la Pardus'la ilgili ne varsa okuyasım var. Bir de sanki kırk yıllık Pardus geliştiricisiymişim gibi bir sahiplenme geldi bir anda. Tarih gaza gelen stajerlerin hezimetleriyle doludur kesin. Olsun! Tutmayın beni diyorum. Ağustos'a kadar okumam ve öğrenmem gereken çok fazla şey var.&lt;br /&gt;&lt;br /&gt;Artık bloğuma da bol bol yazacak&amp;nbsp; malzemem olacak gibi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-2883359372782124644?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/2883359372782124644/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=2883359372782124644' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/2883359372782124644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/2883359372782124644'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2010/05/staj-pardus.html' title='Staj @ Pardus'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4770273052506846136.post-6239284211422208458</id><published>2010-04-12T11:45:00.000-07:00</published><updated>2010-04-12T12:00:50.820-07:00</updated><title type='text'>R.I.P. Run For Osman</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_8WHpxVcB-7I/S8NtTMyb8FI/AAAAAAAAAAU/qNUP1C8Hzm0/s1600/runforosman.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_8WHpxVcB-7I/S8NtTMyb8FI/AAAAAAAAAAU/qNUP1C8Hzm0/s320/runforosman.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Orta Doğu Teknik Ünivesitesi Bilgisayar Topluluğu'nun düzenlediği programlama yarışmasında finale kaldık fakat Run for Osman'a nazarımız değdi ve şampiyon at sonuçların açıklanmasından 2 gün önce kalp krizi geçirerek öldü.&amp;nbsp; Yarışmadaki grubumuzun isminin gerçek sahibi ve evdeki 'VUHAHAHA Run for Osman  haa' şeklindeki espirilerin nedeni, ilham kaynağımız ata veda ettik.&amp;nbsp; Artık finalde onun için yarışacağız. Run for Run for Osman&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://tjk-live.mncdn.net/fotoftp/2009/09071644.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-6239284211422208458?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/6239284211422208458/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=6239284211422208458' title='3 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/6239284211422208458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/6239284211422208458'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2010/04/rip-run-for-osman.html' title='R.I.P. Run For Osman'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_8WHpxVcB-7I/S8NtTMyb8FI/AAAAAAAAAAU/qNUP1C8Hzm0/s72-c/runforosman.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4770273052506846136.post-6550138243585345149</id><published>2010-04-08T03:38:00.000-07:00</published><updated>2010-04-10T09:41:50.049-07:00</updated><title type='text'>Python 1 Satırda QuickSort</title><content type='html'>İnternette dolaşırken 3 satırlık bir quicksort fonksiyonuna rastladım. Python'un &lt;i&gt;list comprehension&lt;/i&gt;'ının gücünü göstermesi açısından güzel bir örnek fakat bu kodu gerçek hayatta kullanmaktan kaçının. Bunun yerine &lt;a href="/2010/04/python-sralama-ipuclar.html"&gt;sort&lt;/a&gt;'u kullanın.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-py"&gt;def qsort(L):&lt;br /&gt;    if len(L) &amp;lt;= 1: return L&lt;br /&gt;    return qsort( [lt for lt in L[1:] if lt &amp;lt; L[0]] ) + [L[0]] + qsort( [ge for ge in L[1:] if ge &amp;gt;= L[0]] )&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Aslında bunu daha da kısaltmak mümkün:) Python'da &lt;b&gt;and &lt;/b&gt;ve &lt;b&gt;or &lt;/b&gt;operatörleri sadece &lt;i&gt;boolean&lt;/i&gt; tipinde veri döndürmezler. Bu operatörler işlenilen son değeri döndürürler. Bu özelliği 2. ve 3. satırları birleştirmek için kullanabiliriz. Ayrıca fonksiyon tanımını bir &lt;i&gt;lambda &lt;/i&gt;ifadesi olarak belirtirsek kodu tek bir satırda yeniden yazabiliriz:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-py"&gt;qsort = lambda L: (len(L)&gt;1 and qsort( [lt for lt in L[1:] if lt &lt; L[0]] ) + [L[0]] + qsort( [ge for ge in L[1:] if ge &gt;= L[0]]) ) or L &lt;br /&gt;&lt;/pre&gt;&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;i&gt; &lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-6550138243585345149?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/6550138243585345149/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=6550138243585345149' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/6550138243585345149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/6550138243585345149'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2010/04/python-1-satrda-quicksort.html' title='Python 1 Satırda QuickSort'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4770273052506846136.post-3651802848963357007</id><published>2010-04-07T14:19:00.000-07:00</published><updated>2010-04-07T15:50:07.022-07:00</updated><title type='text'>Python Sıralama İpuçları</title><content type='html'>Python'da sıralama yapmak istediğiniz&amp;nbsp; listeniz sayısal olarak değeri olan veri tiplerinden (sayılar,stringler) oluşuyorsa bu listeyi &lt;i&gt;liste.sort()&lt;/i&gt; ile sıralamanız kolaydır.&lt;br /&gt;&lt;br /&gt;Farklı veri tiplerinden oluşan bir listeyi sıralamak biraz daha farklı bir durum fakat Python'un &lt;i&gt;sort'&lt;/i&gt;unun gücünden burada da faydalanmalıyız. Mümkün olduğunca(her zaman) bir sıralama algoritması yazmaktan kaçınmak pek çok açıdan yararlı. En önemlisi sort metodunun performanslı olması. Python'un sıralaması yıllarca Python ile birlikte gelişen,&amp;nbsp; farklı durumlar için (değişik boyutlu listeler,&amp;nbsp; sıralanmışlık derecesi çok ya da az olan listeler, ters sıralanmış listeler) performanslı, teknik açıdan anlaşılması güç yaklaşık 1200 satır C kodundan oluşan bir &lt;i&gt;mergesort&lt;/i&gt; algoritması ve her durumda kullanılması geliştiricileri tarafından da tavsiye ediliyor.&lt;br /&gt;&lt;br /&gt;Python'un&lt;b&gt; &lt;/b&gt;&lt;i&gt;sort&lt;/i&gt; metodunu artık her koşulda kullanmak istiyoruz. Bunu farklı veri tipinden oluşan listeler için kolay ve hızlı bir şekilde kullanmak için &lt;i&gt;"Decorate-Sort-Undecorate"&lt;/i&gt; yöntemini kullanırız. "&lt;i&gt;Decorate" &lt;/i&gt;listeyi sort metodu için uygun hale getirmek, "&lt;i&gt;Sort&lt;/i&gt;" sıralama işlemini gerçekleştirmek, "&lt;i&gt;Undecorate&lt;/i&gt;" ise listeyi tekrar eski görünümüne döndürmek anlamına geliyor.&amp;nbsp; Burada bilmemiz gereken bir diğer nokta &lt;i&gt;sort &lt;/i&gt;metodu arraylerden oluşan bir listeyi sıralarken arraylerin ilk elemanlarına göre karşılaştırma yapar. Örneğin [ (1,4,2) , (0,4,5), (3,0,"b") ] için sort metodu listeyi şu şekle sokar: [(0,4,5),(1,4,2),(3,0,"b")].&amp;nbsp; O halde "&lt;i&gt;Decorate"&lt;/i&gt;den kastımız listeyi sıralanmasında karşılaştırılmasını istediğimiz değerler arraylerin başına gelecek şekilde değiştirmektir: [(deger1,nesne1),(deger2,nesne2),....., (degerN,nesneN)]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Problem:&lt;/b&gt;&lt;br /&gt;Nesnelerden oluşan bir listeyi nesnelerin bir özelliğine göre sıralamak istiyoruz.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Decorate-Sort-Undecorate(DSU) çözümü:&lt;/b&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-py"&gt;nesneler = [nesne1,nesne1,nesne3,nesne4]&lt;br /&gt;decorated_liste = [(nesne.ozellik, nesne) for nesne in nesneler] # decorate &lt;br /&gt;decorated_liste.sort()                                           # sort&lt;br /&gt;nesneler = [ array[1] for array in decorated_liste ]             # undecorate&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;Problem 2:&lt;/b&gt;&lt;br /&gt;Dictionary(Sözlük) tipindeki bir nesnemizi sözlüğün anahtar verilerine göre sıralamak istiyoruz.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;DSU çözümü:&lt;/b&gt;&lt;br /&gt;Çözüm yine benzer fakat dictionary'lerin sıralanma gibi bir özelliği olmadığını unutmamalıyız. Sıralanmış değerlere yine bir liste içinden ulaşabiliriz.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-py"&gt;sozluk = {int1:nesne1,int2:nesne2,int3:nesne3}&lt;br /&gt;ogeler = sozluk.items()                    #decorate  &lt;br /&gt;ogeler.sort()                              #sort &lt;br /&gt;degerler = [array[1] for array in ogeler]  #undecorate (sıralanmış nesneler listesi)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-3651802848963357007?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/3651802848963357007/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=3651802848963357007' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/3651802848963357007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/3651802848963357007'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2010/04/python-sralama-ipuclar.html' title='Python Sıralama İpuçları'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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-4770273052506846136.post-8990114713088293821</id><published>2009-11-12T16:13:00.000-08:00</published><updated>2010-08-04T06:16:34.317-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gezegen'/><title type='text'>Python'da Javascript Kodu Çalıştırmak</title><content type='html'>&lt;a href="http://code.google.com/p/pyv8/"&gt;pyv8&lt;/a&gt;, Google tarafından geliştirilen ve Google Chrome'da da kullanılan V8 Javascript motoru için yazılmış bir çeşit wrapper. Bu sayede Python programları içerisinde gömülü olarak Javascript kodu çalıştırabiliyoruz. pyv8 &lt;a href="http://code.google.com/apis/v8/embed.html"&gt;V8 API&lt;/a&gt;'sini kullanarak çalıştırdığı Javascript kod parçacıklarının sonucu olarak dönen Javascript nesneleri ile Python nesneleri arasında bir köprü kurma görevini yerine getiriyor. Ayrıca Python'da oluşturduğunuz bazı özel sınıfları Javascript'e aktarıp orada kullanmanıza da olanak sağlayabiliyor.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-py"&gt;&amp;gt;&amp;gt;&amp;gt; import PyV8&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; ctxt = PyV8.JSContext()          # bir javascript ortamı oluşturduk&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; ctxt.enter()                     &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; ctxt.eval("1+2")                 # javascript kodunu string argümanıyla çalıştırıyoruz&lt;br /&gt;3                                    # dönen cevap bir python integerı&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; class Global(PyV8.JSClass):      # javascript ile uyumlu bir sınıf&lt;br /&gt;...   def hello(self):               # bir javascript metodu&lt;br /&gt;...     print "Hello World"          &lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; ctxt2 = PyV8.JSContext(Global()) # yeni javascript ortamımıza bu sınıfı dahil ettik&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; ctxt2.enter()                    &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; ctxt2.eval("hello()")            # artık bu sınıfın metoduna javascript içinde erişebiliriz&lt;br /&gt;Hello World                          # dönen cevap bir python nesnesi&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Kütüphane kurulumu ve çalışması için Python haricinde programlara ihtiyaç duyduğu için kaynak dosyadan kurulumu bazı bağımlılıklar gerektiriyor. Bununla ilgili bir belge mevcut: &lt;a href="http://code.google.com/p/pyv8/wiki/HowToBuild"&gt;http://code.google.com/p/pyv8/wiki/HowToBuild&lt;/a&gt;. Windows kullanıyorsanız çalıştırılabilir kurulum dosyaları ile tek adımda kurulabiliyor.&lt;br /&gt;&lt;br /&gt;Javascript kodu yazarken kullandığımız &lt;i&gt;onclick&lt;/i&gt;, &lt;i&gt;XMLHttpRequest&lt;/i&gt;, &lt;i&gt;window.open&lt;/i&gt;, &lt;i&gt;document.url&lt;/i&gt;, &lt;i&gt;DOM elementleri&lt;/i&gt; gibi özellikler Javascript'in özellikleri değildirler ve bunlar Javascript motorları tarafından sağlanmaz. Bu özellikleri tarayıcılar eklentiler ile sağlarlar. pyv8 ile bu değişkenleri kullanmaya çalıştığınız zaman tanımlı olmadıklarını belirten bir hata alırsınız.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-8990114713088293821?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/8990114713088293821/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=8990114713088293821' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/8990114713088293821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/8990114713088293821'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2009/11/pythonda-javascript-kodu-calstrmak.html' title='Python&apos;da Javascript Kodu Çalıştırmak'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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-4770273052506846136.post-6165699094545219677</id><published>2008-10-08T16:47:00.000-07:00</published><updated>2010-04-07T16:07:53.501-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pygame'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='towers of hanoi'/><title type='text'>python tower of hanoi</title><content type='html'>&lt;a href="http://www.pygame.org/shots/918.png"&gt;&lt;img src="http://www.pygame.org/thumb/7dffb0a8690f295e4f2a0d371320c608.png" /&gt;&lt;/a&gt;&lt;br /&gt;"Tower Of Hanoi" is a mathematical puzzle game. there are lots of python examples around but i couldn't find out one with a good UI. &lt;br /&gt;&lt;br /&gt;As honoi solving depends on a recrusive function, it was hard to run UI and solve hanoi at same time. Pre-solving and running UI is seemed to be a solution but in big numbers of disks i would have to wait quite long time for solving. So i used python threading module and created one more thread for hanoi solver. It looks like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;place x disk&lt;br /&gt;&lt;br /&gt;place y disk&lt;br /&gt;keeps going deeper...&lt;br /&gt;wait for ui&lt;br /&gt;y disk placed&lt;br /&gt;&lt;br /&gt;place z disk&lt;br /&gt;keeps going deeper...&lt;br /&gt;wait for ui&lt;br /&gt;zdisk placed&lt;br /&gt;&lt;br /&gt;wait for ui&lt;br /&gt;x disk placed&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You need to have &lt;a href="http://www.pygame.org/download.shtml"&gt;pygame&lt;/a&gt; installed to run code. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://orcun.avsar88.googlepages.com/hanoi.py"&gt;download hanoi.py&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-6165699094545219677?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/6165699094545219677/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=6165699094545219677' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/6165699094545219677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/6165699094545219677'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2008/10/python-tower-of-hanoi.html' title='python tower of hanoi'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4770273052506846136.post-3160346312415977654</id><published>2008-07-05T05:40:00.000-07:00</published><updated>2010-04-07T15:43:39.001-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Python sudoku solver</title><content type='html'>&lt;p&gt;An easy solver. It doesn't make brute-force . So it's able to solve only simple sudokus where at least one field has no doubt about matcing only one number at any time.  &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre class="prettyprint lang-py"&gt;#!/usr/bin/python&lt;br /&gt;# -*- coding: cp1254 -*-&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#sample board&lt;br /&gt;board=[[0,4,0,0,2,0,0,0,8],&lt;br /&gt;      [0,8,0,0,0,7,4,5,0],&lt;br /&gt;      [1,0,5,3,0,0,7,0,0],&lt;br /&gt;      [9,0,4,0,3,8,1,0,7],&lt;br /&gt;      [0,0,0,0,0,0,0,0,0],&lt;br /&gt;      [5,0,7,4,1,0,2,0,9],&lt;br /&gt;      [0,0,8,0,0,1,9,0,6],&lt;br /&gt;      [0,9,1,8,0,0,0,2,0],&lt;br /&gt;      [3,0,0,0,4,0,0,7,0]]&lt;br /&gt;&lt;br /&gt;def get_row_suitables(y):&lt;br /&gt;   lst=range(1,10)&lt;br /&gt;   for x in range(0,9):&lt;br /&gt;       number=board[y][x]&lt;br /&gt;       if number:lst.remove(number)&lt;br /&gt;   return lst&lt;br /&gt;def get_column_suitables(x):&lt;br /&gt;   lst=range(1,10)&lt;br /&gt;   for y in range(0,9):&lt;br /&gt;       number=board[y][x]&lt;br /&gt;       if number:lst.remove(number)&lt;br /&gt;   return lst&lt;br /&gt;def get_square_suitables(y,x):&lt;br /&gt;   ystart=y-(y%3)&lt;br /&gt;   xstart=x-(x%3)&lt;br /&gt;   lst=range(1,10)&lt;br /&gt;   for y in range(ystart,ystart+3):&lt;br /&gt;       for x in range(xstart,xstart+3):&lt;br /&gt;           number=board[y][x]&lt;br /&gt;           if number:lst.remove(number)&lt;br /&gt;   return lst&lt;br /&gt;  &lt;br /&gt;def get_mutuals(a,b,c):&lt;br /&gt;   mutuals=[]&lt;br /&gt;   for i in a:&lt;br /&gt;       if b.count(i) and c.count(i): mutuals.append(i)&lt;br /&gt;   return mutuals&lt;br /&gt;def total_zeros():&lt;br /&gt;   total=0&lt;br /&gt;   for y in range(0,9):&lt;br /&gt;       total+= board[y].count(0)&lt;br /&gt;   return total&lt;br /&gt;def print_board():&lt;br /&gt;   for y in range(0,9):print board[y]&lt;br /&gt;&lt;br /&gt;#main loop&lt;br /&gt;while True:&lt;br /&gt;   has_found_any=0&lt;br /&gt;   for y in range(0,9):&lt;br /&gt;       for x in range(0,9):&lt;br /&gt;           if not board[y][x]:&lt;br /&gt;               a=get_row_suitables(y)&lt;br /&gt;               b=get_column_suitables(x)&lt;br /&gt;               c=get_square_suitables(y,x)&lt;br /&gt;               d=get_mutuals(a,b,c)&lt;br /&gt;               if len(d)==1:&lt;br /&gt;                   board[y][x]=d[0]&lt;br /&gt;                   has_found_any=1&lt;br /&gt;               elif len(d)==0:&lt;br /&gt;                   print "Error! This sudoku is wrong."&lt;br /&gt;                   break&lt;br /&gt;               else:&lt;br /&gt;                   pass&lt;br /&gt;   if not total_zeros():&lt;br /&gt;       print "Sudoku solved succesfully"&lt;br /&gt;       print_board()&lt;br /&gt;       break&lt;br /&gt;   if not has_found_any:&lt;br /&gt;       print "Sudoku isn't solved"&lt;br /&gt;       break&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4770273052506846136-3160346312415977654?l=orcuna.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcuna.blogspot.com/feeds/3160346312415977654/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4770273052506846136&amp;postID=3160346312415977654' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/3160346312415977654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4770273052506846136/posts/default/3160346312415977654'/><link rel='alternate' type='text/html' href='http://orcuna.blogspot.com/2008/07/python-sudoku-solver.html' title='Python sudoku solver'/><author><name>Orçun</name><uri>http://www.blogger.com/profile/06265491627409834851</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>
