<?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-2099774886325008935</id><updated>2012-01-08T12:28:07.284+02:00</updated><category term='Python'/><category term='Algorithm'/><category term='Energy'/><category term='Driver Recognition'/><category term='Abroad'/><category term='software'/><category term='cinema'/><category term='Pardus'/><category term='Benchmark'/><category term='Işık'/><category term='Hardware'/><category term='Project'/><category term='Canada'/><category term='Internship'/><category term='Parallel Programming'/><category term='PyQt4'/><category term='Robinviz'/><category term='school'/><category term='academic'/><category term='book'/><category term='Google'/><title type='text'>Ahmet Emre Aladag</title><subtitle type='html'>The English blog site of Ahmet Emre Aladag, a graduate Computer Engineering student in Turkey.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-3812217590051490911</id><published>2012-01-08T12:22:00.005+02:00</published><updated>2012-01-08T12:28:07.292+02:00</updated><title type='text'>Viaport Tuzla Servisi - Tren yoluyla</title><content type='html'>Internet arşivinde yer alsın, başkalarına yol göstersin diye not etmek istiyorum.&lt;br /&gt;&lt;br /&gt;Eğer Tuzla'dan Viaport'a gitmek istiyorsanız ve Tuzla'ya tren yoluyla ulaşacaksanız işte yol tarifi:&lt;br /&gt;&lt;br /&gt;Trenden İçmeler istasyonunda inin.&lt;br /&gt;Tren yolunun güneyine (deniz tarafına) geçin.&lt;br /&gt;Tuzla Belediyesinin otoparkını göreceksiniz. Ana caddeye çıkın. (Hatboyu cd)&lt;br /&gt;Tuzla Belediyesi Otobüs durağında bekleyin.&lt;br /&gt;&lt;br /&gt;Yaklaşık saat başı Tuzla merkezden servis kalkıyor. Güncel saatlere Viaport'un sitesinden bakabilirsiniz. Kalkıştan yaklaşık 20 dakika sonra servis ulaşmasını bekleyebilirsiniz. Haftasonu erken gelirseniz soğuk havada bekleyebileceğiniz bir yer yok gibi. Haftaiçi belediye veya kaymakamlıkta beklenebilir.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-3812217590051490911?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/3812217590051490911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=3812217590051490911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/3812217590051490911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/3812217590051490911'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2012/01/viaport-tuzla-servisi-tren-yoluyla.html' title='Viaport Tuzla Servisi - Tren yoluyla'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-2172469153764357068</id><published>2011-12-27T20:16:00.003+02:00</published><updated>2011-12-27T20:19:11.478+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='school'/><title type='text'>PhD of Computer Engineering in Boğaziçi University</title><content type='html'>I forgot to write here for a long time. This fall I started my PhD studies in Boğaziçi University. I'm currently taking some courses but I'll be working on Complex Network Analysis in general. In these days I'll be starting to study for my final exams. This semester I've taken Complex Networks, Social and Semantic Web, Artificial Intelligence courses.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-2172469153764357068?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/2172469153764357068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=2172469153764357068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/2172469153764357068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/2172469153764357068'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2011/12/phd-of-computer-engineering-in-bogazici.html' title='PhD of Computer Engineering in Boğaziçi University'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-6278538521531865793</id><published>2011-12-27T20:09:00.002+02:00</published><updated>2011-12-27T20:12:00.732+02:00</updated><title type='text'>Django 'matching query does not exist'</title><content type='html'>When you encounter 'ClassName matching query does not exist' error in Django, it means that somewhere you have such code:&lt;br /&gt;&lt;br /&gt;item = ClassName.objects.get(key=value)&lt;br /&gt;&lt;br /&gt;but there's no item that satisfies key=value. So it gives this error. Be aware of this. There are some other sites which makes you confuse although this is a very simple error&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-6278538521531865793?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/6278538521531865793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=6278538521531865793' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/6278538521531865793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/6278538521531865793'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2011/12/django-matching-query-does-not-exist.html' title='Django &apos;matching query does not exist&apos;'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-4645659508770107580</id><published>2010-12-16T19:12:00.006+02:00</published><updated>2010-12-16T19:27:34.959+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Benchmark'/><category scheme='http://www.blogger.com/atom/ns#' term='Parallel Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>ParallelPython vs multiprocessing</title><content type='html'>Today I'm working on parallelisation of a process I have written. Process is simply a text conversion. I have a translator class, organism directories and files inside these directories. What I want to do is to split the data among the processors and perform the operation faster.&lt;br /&gt;&lt;br /&gt;To do this, I tested multiprocessing and ParallelPython modules of python. Without using these modules, it took 38 seconds to perform the task whereas with the help of these modules, it went down to 29 seconds(multiprocessing) and 30 seconds (ParallelPython). Not a great deal but better than nothing. By the way, ParallelPython is way too complicated compared to multiprocessing.&lt;br /&gt;&lt;br /&gt;Here is the code for ParallelPython:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;import translator&lt;br /&gt;import os&lt;br /&gt;from utils.pp import pp&lt;br /&gt;&lt;br /&gt;base = "/some/path"&lt;br /&gt;organisms = [ "organism1", "organism2", ...] &lt;br /&gt;&lt;br /&gt;def convert_organism(base, organism):&lt;br /&gt;    t = translator.BiogridOspreyTranslator()&lt;br /&gt;    # uses os module here&lt;br /&gt;    t.translate()&lt;br /&gt;&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;    job_server = pp.Server(ppservers=())&lt;br /&gt;    jobs = [(organism, job_server.submit(convert_organism, (base, organism,), (), ("os","translator",))) for organism in organisms]&lt;br /&gt;    for organism, job in jobs:&lt;br /&gt;        job()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;ParallelPython requires you to tell him the modules the functions requires. I didn't like that.&lt;br /&gt;And here is the code for multiprocessing:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;from translator import *&lt;br /&gt;import os&lt;br /&gt;from multiprocessing import Pool&lt;br /&gt;&lt;br /&gt;base = "/some/path"&lt;br /&gt;organisms = [ "organism1", "organism2", ...] &lt;br /&gt;&lt;br /&gt;def convert_organism(organism):&lt;br /&gt;    t = BiogridOspreyTranslator()&lt;br /&gt;    # uses os module here&lt;br /&gt;    t.translate()&lt;br /&gt;&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;    pool = Pool(processes = 2)&lt;br /&gt;    pool.map(convert_organism, organisms)&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-4645659508770107580?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/4645659508770107580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=4645659508770107580' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/4645659508770107580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/4645659508770107580'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2010/12/parallelpython-vs-multiprocessing.html' title='ParallelPython vs multiprocessing'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-7597165306555901414</id><published>2010-12-07T19:42:00.002+02:00</published><updated>2010-12-07T19:49:50.895+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Robinviz'/><category scheme='http://www.blogger.com/atom/ns#' term='Project'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='academic'/><title type='text'>Uploading on sourceforge</title><content type='html'>Today, we're trying to publish our project Robinviz. It'll be a 1.0-beta version seperately for windows/linux source/binary. Binary files are around 400MB so it's a bit hard to upload it. Google Code -which we use for project management- limits the maximum file size for uploads. So we had to switch to sourceforge. But uploading on http was still a problem. So I found this solution: &lt;a href="https://sourceforge.net/apps/trac/sourceforge/wiki/Rsync%20over%20SSH"&gt;Rsync over SSH&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;At first, I found it hard to understand the URL format but then understood and wanted to share it with you. With the following command, I was able to send my 400MB file with resume support:&lt;br /&gt;&lt;br /&gt;rsync -avP -e ssh robinviz-1.0-beta-linux-binary.tar.gz aladagemre,robinviz@frs.sourceforge.net:/home/frs/project/r/ro/robinviz/linux-1.0-beta&lt;br /&gt;&lt;br /&gt;robinviz-1.0-beta-linux-binary.tar.gz: filename&lt;br /&gt;aladagemre: username on sourceforge&lt;br /&gt;robinviz: project name&lt;br /&gt;/r/ro/robinviz: the first letter, the first two letters and all letters of the project joined by /&lt;br /&gt;linux-1.0-beta: the folder I'd like to put my file in.&lt;br /&gt;&lt;br /&gt;Hope it's useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-7597165306555901414?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/7597165306555901414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=7597165306555901414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/7597165306555901414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/7597165306555901414'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2010/12/uploading-on-sourceforge.html' title='Uploading on sourceforge'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-8151880723862610249</id><published>2010-10-30T14:22:00.005+03:00</published><updated>2010-10-30T15:48:40.787+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><title type='text'>Dell Wireless 1515 Wireless-N Adapter and WPA timeout on Vista</title><content type='html'>I'm using a Dell Wireless 1515 Wireless-N Adapter and having connection problems in Vista. When I use WPA for authentication, it doesn't connect to my wireless network and says authentication failed due to timeout. Sometimes it doesn't connect and very rarely it connects. When I looked at the Event viewer, I saw the following details:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Detailed root cause:&lt;br /&gt;Layer 2 security key exchange did not generate multicast keys before timeout&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;After a long research, I thought that I found a way to fix that. I went to Dell drivers site and wrote my laptop Service tag to get appropriate driver updates. I  downloaded the one for my wireless adapter: R198377.exe. The reason why the research was long is that I had to do it on another OS and wanted to find a sound solution not to fail and return back. The dates for the driver were earlier than the date I purchased my laptop but it seems like the drivers coming with it are pretty old.&lt;br /&gt;&lt;br /&gt;After installing that, my wireless card -surprisingly- immediately connected to the wireless network. I was gonna say "Well done!" but it turned out to be a coincidence that it worked! After a restart, it was the same problem again. Re-installing driver didn't work. Sigh.&lt;br /&gt;&lt;br /&gt;I don't know what to do with this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-8151880723862610249?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/8151880723862610249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=8151880723862610249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/8151880723862610249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/8151880723862610249'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2010/10/dell-wireless-1515-wireless-n-adapter.html' title='Dell Wireless 1515 Wireless-N Adapter and WPA timeout on Vista'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-2773388909264656651</id><published>2010-09-05T05:27:00.003+03:00</published><updated>2010-09-05T05:49:07.217+03:00</updated><title type='text'>Keyword Argument Injection with Python Decorators</title><content type='html'>In most of the object oriented codes we write, we need to set class variables to the given argument values and this is a very line-consuming thing. See what I mean:&lt;br /&gt;&lt;pre lang="python"&gt;&lt;br /&gt;class Test:&lt;br /&gt;    def __init__(self, x, y, z, t):&lt;br /&gt;        self.x = x&lt;br /&gt;        self.y = y&lt;br /&gt;        self.z = z&lt;br /&gt;        self.t = t&lt;br /&gt;        print x,y,z,t&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To get over these redundant lines, I found a solution using decorators:&lt;br /&gt;&lt;pre lang="python"&gt;&lt;br /&gt;def injectArguments(inFunction):&lt;br /&gt;    def outFunction(*args,**kwargs):&lt;br /&gt;        _self = args[0]&lt;br /&gt;        _self.__dict__.update(kwargs)&lt;br /&gt;        inFunction(*args,**kwargs)&lt;br /&gt;    return outFunction&lt;br /&gt;&lt;br /&gt;class Test:&lt;br /&gt;    @injectArguments&lt;br /&gt;    def __init__(self, x, y, z, t):&lt;br /&gt;        print self.x,self.y,self.z,self.t&lt;br /&gt;&lt;br /&gt;    @injectArguments&lt;br /&gt;    def fonksiyon(self, ad):&lt;br /&gt;        print "Ad:",self.ad&lt;br /&gt;&lt;br /&gt;t = Test(x=4, y=5, z=6, t=7)&lt;br /&gt;t.fonksiyon(ad="Emre")&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;args dictionary contains the arguments and kwargs dictionary contains the keyword arguments. arg[0] corresponds to self argument. So what we do is we update self.__dict__ with {'x':4, 'y':5,'z':6,'t':7} where self corresponds to the Test instance. This way, bulky self.x = x, etc. codes are eliminated.&lt;br /&gt;&lt;br /&gt;I don't know if any built-it decorator like this exists in Python libraries but it seems like I'll be using this a lot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-2773388909264656651?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/2773388909264656651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=2773388909264656651' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/2773388909264656651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/2773388909264656651'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2010/09/keyword-argument-injection-with-python.html' title='Keyword Argument Injection with Python Decorators'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-630976027418507840</id><published>2010-07-08T02:23:00.003+03:00</published><updated>2010-07-08T02:31:23.051+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PyQt4'/><title type='text'>QActionGroup and exclusive menu actions</title><content type='html'>Today I was working on exclusive menu action selection in PyQt4 and got stuck. After some struggling, I managed to find it out. Now I want to share it with you.&lt;br /&gt;&lt;br /&gt;What is exclusive menu action? It's a menu item, when you select it, its friends are deselected. When one of its friends is selected, it gets deselected. It's like a radio button group in a menu.&lt;br /&gt;&lt;br /&gt;We're going to use QMenu, QAction and QActionGroup for this purpose.&lt;br /&gt;# assume we are in a QMainWindow method, constructing the menu.&lt;br /&gt;&lt;br /&gt;        menu = QMenu('Alignment', self.menuBar())&lt;br /&gt;        menuGroup = QActionGroup(menu)&lt;br /&gt;        menuGroup.setExclusive(True)&lt;br /&gt;       &lt;br /&gt;        left = QAction('left', menuGroup)&lt;br /&gt;        center = QAction('center', menuGroup)&lt;br /&gt;        right = QAction('right', menuGroup)&lt;br /&gt;&lt;br /&gt;        actions = (left, center, right)&lt;br /&gt;        map(menu.addAction, actions)&lt;br /&gt;        map(lambda action: action.setCheckable(True), actions)&lt;br /&gt;       &lt;br /&gt;        center.setChecked(True)&lt;br /&gt;        self.menuBar().addMenu(menu)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In this way, you are able to select either left or center or right for alignment submenu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-630976027418507840?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/630976027418507840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=630976027418507840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/630976027418507840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/630976027418507840'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2010/07/qactiongroup-and-exclusive-menu-actions.html' title='QActionGroup and exclusive menu actions'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-6732298013816705489</id><published>2010-06-29T20:52:00.006+03:00</published><updated>2010-06-29T21:10:28.849+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PyQt4'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>QGraphicsItem.itemChange event and ItemPositionChange in Qt 4.6</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;Recently, I had a bug in &lt;a href="http://code.google.com/p/robinviz"&gt;Robinviz&lt;/a&gt; that I could not figure out where it come from. I was drawing a graph and nodes could be moved. Whenever I moved the node, edges connected to it used to come with it to the new position. But after upgrading to Qt 4.6, I saw that edges were not moving.&lt;br /&gt;&lt;br /&gt;After some investigation, I realized that QGraphicsItem.itemChange event did not produce QGraphicsItem.ItemPositionChange but only selected, deselected signals. Googling for it, I hardly &lt;a&gt;&lt;/a&gt;&lt;a href="http://www.qtforum.org/article/31535/itemchange-doesn-t-pick-up-on-qgraphicsitem-itempositionchange.html"&gt;found&lt;/a&gt; that the problem was with the update. Due to performance reasons, Qt developers decided to stop emitting geometrical signals and wanted us to switch it on by supplying a flag for the QGraphicsItem:&lt;br /&gt;&lt;br /&gt;  &lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;  try:&lt;br /&gt;           # available only in Qt 4.6&lt;br /&gt;           self.setFlag( QGraphicsItem.ItemSendsGeometryChanges)&lt;br /&gt;  except:&lt;br /&gt;           # no need to do this in Qt 4.5&lt;br /&gt;           pass&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;You can do this flag option in your constructor. I used try/except because I didn't know what might happen in 4.5 as there was no flag called ItemSendsGeometryChanges. In some other websites, following flag was suggested but it did not work for me:&lt;br /&gt;&lt;br /&gt;      &lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;self.setFlag(QGraphicsItem.ItemSendsScenePositionChanges,  True)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;For those who might be interested how I used itemChanged, I'll provide a portion of my code:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;  def itemChange(self, change, value):  &lt;br /&gt;     if change == QGraphicsItem.ItemPositionChange:&lt;br /&gt;         self.updateEdges()&lt;br /&gt;&lt;br /&gt;     return QVariant(value)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-6732298013816705489?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/6732298013816705489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=6732298013816705489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/6732298013816705489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/6732298013816705489'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2010/06/qgraphicsitemitemchange-event-and.html' title='QGraphicsItem.itemChange event and ItemPositionChange in Qt 4.6'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-3807135740970373506</id><published>2010-05-29T18:06:00.007+03:00</published><updated>2010-05-29T18:39:00.085+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project'/><category scheme='http://www.blogger.com/atom/ns#' term='academic'/><title type='text'>Spring term finished</title><content type='html'>&lt;div style="float: left; text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NgrhKnmLZHY/TAEvjRdpOZI/AAAAAAAAC6Y/AGeHcPzHC48/s1600/ekran6.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 143px; height: 320px;" src="http://2.bp.blogspot.com/_NgrhKnmLZHY/TAEvjRdpOZI/AAAAAAAAC6Y/AGeHcPzHC48/s320/ekran6.png" alt="" id="BLOGGER_PHOTO_ID_5476710904888899986" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NgrhKnmLZHY/TAEvqrU_-kI/AAAAAAAAC6g/zS9y9tIax-U/s1600/ekran5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 143px; height: 320px;" src="http://1.bp.blogspot.com/_NgrhKnmLZHY/TAEvqrU_-kI/AAAAAAAAC6g/zS9y9tIax-U/s320/ekran5.png" alt="" id="BLOGGER_PHOTO_ID_5476711032091048514" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;The spring term has finished. Courses were pretty time-consuming this semester so I could not focus o   n our research as I did last semester. Grades are not available yet but I expect them to be satisfying. I've taken Data Mining, Analysis and Design of Algorithms, Software Engineering courses.&lt;br /&gt;&lt;br /&gt;In the data mining project, I worked on Yeast localization of proteins database and did classification&amp;amp;clustering analysis.&lt;br /&gt;&lt;br /&gt;In the Software Engineering project, as I told before, I've developed a bus-timetable program &lt;a href="http://github.com/aladagemre/jistanbul"&gt;JIstanbul&lt;/a&gt; which has both mobile and desktop versions with J2SE+Swing and J2ME. My project was selected as the best in the class. Currently, in the mobile version, the program can detect the day and fetch the timetable for that day. In the future, I'm planning to add storing time information, closest bus time, frequently used buses features.&lt;br /&gt;&lt;br /&gt;Now I have 1 course and masters-thesis left for the next year. I'll be focusing on Robinviz in these summer days.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NgrhKnmLZHY/TAE0QLg7UqI/AAAAAAAAC6o/0WkeDnheffg/s1600/ekran4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 136px;" src="http://3.bp.blogspot.com/_NgrhKnmLZHY/TAE0QLg7UqI/AAAAAAAAC6o/0WkeDnheffg/s320/ekran4.png" alt="" id="BLOGGER_PHOTO_ID_5476716074432680610" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-3807135740970373506?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/3807135740970373506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=3807135740970373506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/3807135740970373506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/3807135740970373506'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2010/05/spring-term-finished.html' title='Spring term finished'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NgrhKnmLZHY/TAEvjRdpOZI/AAAAAAAAC6Y/AGeHcPzHC48/s72-c/ekran6.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-255564996214140237</id><published>2010-04-04T00:33:00.002+03:00</published><updated>2010-04-04T00:44:12.331+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='school'/><category scheme='http://www.blogger.com/atom/ns#' term='academic'/><title type='text'>RobinViz Paper and School Projects</title><content type='html'>After releasing RobinViz, I focused on my school projects. I've written a Turkish Flag drawer, Conway's Game of Life and Julia Set Fractals drawer in Java and presented the latter one in the Software Engineering class. &lt;br /&gt;&lt;br /&gt;Currently I'm developing an Optimal Binary Search Tree implementation in Python as part of my Algorithms class. I've registered for a github account and I put all my codes &lt;a href="http://github.com/aladagemre/misc"&gt;there&lt;/a&gt;.&lt;br /&gt;On the other hand, I'm working on some edge bundling stuff nowadays as part of my academic work. It's really nice but complicated. I hope I can come by a good solution to our problems in our mind.&lt;br /&gt;&lt;br /&gt;I think I'll be fixing some problems of Robinviz in the following months. Our published paper (An integrated model for visualizing biclusters from gene expression data and PPI networks) can be found &lt;a href="http://doi.acm.org/10.1145/1722024.1722052"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As part of my Software Engineering project, I'm planning to develop a J2ME application to fetch bus timetables from the Internet and display the closest bus times for you to find the best route without waiting your bus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-255564996214140237?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/255564996214140237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=255564996214140237' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/255564996214140237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/255564996214140237'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2010/04/robinviz-paper-and-school-projects.html' title='RobinViz Paper and School Projects'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-7810117800308460456</id><published>2010-02-18T20:14:00.002+02:00</published><updated>2010-02-18T20:40:36.146+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>RobinViz Beta released</title><content type='html'>Things are going well and I've finished my first semester of my Masters. All of my grades are great and I'm just starting the second semester. On the other hand, I'm working on our project. When I joined the project in September 2009, one last step was missing. That was the Horizontal Coordinate Assignment Problem in Layered Graph Drawings. I've implemented Fast and Simple Horizontal Coordinate Assignment paper of Brandes et. al and we submitted our paper to International Symposium in Biocomputing (ISB 2010) in Calicut, India. Our paper was accepted and after that we decided to improve the GUI of our implementation. We developed a brand new GUI with PyQt4 and used the C++ code behind the scene to do the most of the scientific calculations. We published this novel software, RobinViz Beta version on &lt;a href="http://code.google.com/p/robinviz"&gt;http://code.google.com/p/robinviz&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;With RobinViz, you can visualize PPI Networks and Gene Ontology as biclustered graphs. In these graphs, reliability of interactions are expressed with the thickness of the edges, h-value of the biclusters are expressed as node width etc. So the most important part of the data comes in front. I hope it shall be useful for all the scientists working on this subject.&lt;br /&gt;&lt;br /&gt;This semester I'll be taking Algorithms, Data Mining and Advanced Java courses. I hope I'll learn a lot from them. By the way, while our professor presented our paper at the conference, I gave Introduction to Java tutorial lectures in his classes. That was also a nice experience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-7810117800308460456?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/7810117800308460456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=7810117800308460456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/7810117800308460456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/7810117800308460456'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2010/02/robinviz-beta-released.html' title='RobinViz Beta released'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-3491780943132867924</id><published>2010-01-05T20:36:00.008+02:00</published><updated>2010-01-25T21:49:21.052+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cinema'/><title type='text'>Avatar 3D</title><content type='html'>After a long time, I went to cinema, to the film Avatar. I was not sure wheter to see this film but I wanted to taste a 3D movie so this could be a good candidate for my first 3D film. &lt;br /&gt;&lt;br /&gt;The film was more than I expected, but not the 3D effects. It had both sorrow and thrill. For the ones who was not seen it, I won't spoil it but here's a summary.&lt;br /&gt;&lt;br /&gt;It's the year 2154 and humans want to mine a valueable mineral on the Planet Pandora. But this mineral lies under a great tree, in which all the Pandora folk lives. So humans want Pandorians to leave their homes but of course, Pandorians won't do it. So a war begins and one human, who controls a mind-controlled avatar (Pandorian body) for diplomatic purposes, sees the fact that this is not fair and lines up on the Pandorians side. Going further, he becomes the commander of them by achieving the rank "Toruk Macto".&lt;br /&gt;&lt;br /&gt;I felt so ashamed of being a human while watching this film. How cruel these humans are!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-3491780943132867924?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/3491780943132867924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=3491780943132867924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/3491780943132867924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/3491780943132867924'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2010/01/toruk-mactop.html' title='Avatar 3D'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-5423147865730328452</id><published>2009-12-27T02:18:00.006+02:00</published><updated>2009-12-27T13:15:46.208+02:00</updated><title type='text'>Research Assistantship</title><content type='html'>Again, it's been a long time since I wrote last time. Things went unexpectedly and I've found myself in a position nowhere near I imagined.&lt;br /&gt;&lt;br /&gt;I said that I applied Boğaziçi University for masters but although all of my qualifications were well above most of the applicants, I got rejected because that I did not bring a reference letter from my thesis advisor. Well, I went to him and he was off the office so I took the letters from my other professors. I thought these letters would be enough as they even admit students with 2,77 / 4.00 GPA! So reference letter should not have been a major issue. But it seems like it was. &lt;br /&gt;&lt;br /&gt;Meanwhile, I had some job interviews but could not find an appropriate position according to my taste :)&lt;br /&gt;&lt;br /&gt;Then my ex-professor who transferred to &lt;a href="http://www.khas.edu.tr/english.html"&gt;Kadir Has University&lt;/a&gt; from Işık University (where my BSc is from) offered me a position in his funded project. I was going to do my masters in Kadir Has University and get paid for working on the project. I accepted and started working. We are working on Graph Drawing and Visualization of Bioinformatics Networks. I'm using Pardus Linux and Python for my implementation works and I'm really happy about that. Thanks to my advisor who lets me be free on choosing my tools.&lt;br /&gt;&lt;br /&gt;Our team consists of 3 members: me, my professor Cesim Erten and my ex-school-mate &lt;a href="http://melihsozdinler.blogspot.com"&gt;Melih Sözdinler&lt;/a&gt;. After I joined the team, I've done the unfinished part of their work and we submitted it to a conference and it got accepted. I'm really happy about that. I'll write about the paper when it's officially published (in February 2010).&lt;br /&gt;&lt;br /&gt;My new university is pretty infant compared to my ex but I like it. At least everybody  seems to be much more friendly. The biggest problem for me is that it takes 2-3 hours to get there and that much to come back home via public transport although we are in the same city. So I'm going to school on limited days. &lt;br /&gt;&lt;br /&gt;Fall term is about to finish. I've taken Parallel Programming from Computer Engineering (my) department and Operating Systems, System Programming courses from IT department. They are mostly homework and presentation based. I've done my presentation on Parallel Sorting algorithms last Friday and it was good.&lt;br /&gt;&lt;br /&gt;So, I'm a unofficial research assistant from now on. Great!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-5423147865730328452?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/5423147865730328452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=5423147865730328452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/5423147865730328452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/5423147865730328452'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2009/12/research-assistantship.html' title='Research Assistantship'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-6092463279388538059</id><published>2009-07-22T15:56:00.001+03:00</published><updated>2009-07-22T15:56:25.377+03:00</updated><title type='text'>Back from Carleton, graduated!</title><content type='html'>Again, it's been a long time since I wrote last time. I've been struggling with writing my extensive Canada diaries in Turkish. So I couldn't write even a word here. I talked about my exchange plans and my final project. Our final project was a late success. It was late because at the first sight, we thought it was unsuccessful. But then I found out that it is indeed successful. We managed to get an error rate of 2.25% after we applied PCA on the channels. &lt;br /&gt;&lt;br /&gt;Before finishing the project, I went to Carleton University, Ottawa, ON, Canada. It was the 1st of January and -13*C when I got there. The weather was terrible going down to felt like -32*C. I stayed in the dorms of the university and I liked Carleton except for its dorms with cartoon-seperated walls. The system in university was both similar to and different from Işık University. In the first days, I found it difficult to talk and understand what I hear but after 3 weeks, I got used to it. Lecturers were great and they did their best to make us understand the material. They were welcoming to any kind of problem we faced preventing our studies (I would especially thank Julie Thorpe. She was the greatest instructor I've ever seen in my university life.). They were relax and I saw a nice learning / research environment. &lt;br /&gt;&lt;br /&gt;University also provides great facilities to the students. There are over 120 student clubs and they are very active. I should admit that only Computer Society was a bit passive. They organized “Eclipse plug-in development seminar”, a faculty-student meeting, and some movie nights.  That might be normal for 4 months but I get this result when I compare it with our club in Turkey.&lt;br /&gt;&lt;br /&gt;Of course, I have to talk about Canadian People. They are very kind, respectful, trustworthy and helpful. But they won't talk first unless you start a chat. They are mostly busy people and rush all the day. But the foreigner people are more warm and welcoming. Because of that, most of my friends were non-Canadians. &lt;br /&gt;&lt;br /&gt;Ottawa is a really pleasant city. I returned back to Turkey at the end of the April, when the best times of Ottawa had just been starting. It has a wonderful nature. Parks, green fields, waterfalls, bike paths of total 110 km... It is also very safe compared to Toronto. People, even women are not afraid to walk in the late hours of the night. Transportation is very easy. I also visited Toronto (and of course Niagara Falls) but I didn't like Toronto that much. It seems a bit dangerous.&lt;br /&gt;&lt;br /&gt;I've been in Canada for 4 months and it was a great experience for me. Living on your own, without anybody you know to help, being obliged to speak only in English, seeing different cultures (Canada is a real mixture of cultures), meeting people from all over the world and of course examining the academic life there. I wanted to apply for Master of Computer Science in Carleton but the envelope carrying my reference letter had been opened by DHL on the way! A note was posted on the package: “This package has been inspected under the supervision of the shipper.”. Shipper seems to be the local carrier company, not my professor! So I could not apply for the masters program. Maybe I might try it later.&lt;br /&gt;&lt;br /&gt;Among the other applications I've made, I've been admitted to Master of Artificial Intelligence program in Katholieke Universiteit Leuven, Belgium. I've been put in waitlist of Purdue University, USA but then rejected because of the limited quota. And finally Sweden central placement system has lost my documents so I was rejected as they said “you haven't finished university, you haven't taken Algebra and Programming courses...”! &lt;br /&gt;&lt;br /&gt;Returning back to Turkey, I graduated and I applied for Master of Computer Engineering in Boğaziçi University, Istanbul. Now I'm between KUL and Boğaziçi. KUL will be more costly for me and recently we're facing liquidity problems. So it seems my next university will be Boğaziçi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-6092463279388538059?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/6092463279388538059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=6092463279388538059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/6092463279388538059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/6092463279388538059'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2009/07/back-from-carleton-graduated.html' title='Back from Carleton, graduated!'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-4734101224346952577</id><published>2008-12-10T14:10:00.003+02:00</published><updated>2008-12-10T14:45:11.209+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Canada'/><category scheme='http://www.blogger.com/atom/ns#' term='Abroad'/><category scheme='http://www.blogger.com/atom/ns#' term='Işık'/><category scheme='http://www.blogger.com/atom/ns#' term='Driver Recognition'/><title type='text'>Exchange plans</title><content type='html'>I haven't written for a long time, among the reasons I can say is that blogspot is unreachable from Turkey and whenever it is reachable, it has a long response time. That's not the only reason of course. I've been very busy. I've completed my Pardus Internship and received my TOEFL scores. I've scored 105 (R:27, L:27, S:22, W:29) in iBt. That's a great score for me, I needed 92 to apply for exchange to Carleton University in Ottawa,ON,Canada. Then I applied and I was the only student nominated for this exchange agreement. I sent a course list that I'd like to take and after some iterations, they registered me to Computer Vision and Applied Cryptography with 3 additional social courses. But I will consider dropping some of them when I arrive there, figuring out their course loads and the study time requirements. I need 2 courses to take and I'll graduate when I return back to Turkey if I don't face any problems.&lt;br /&gt;&lt;br /&gt;After the registration, they sent me the letter of acceptance and I applied for Canadian Visa with Student Permit. I've sent the application documents wednesday afternoon and my visa had come back the next tuesday! It is wonderful that they are that fast! The next step was to look for a plane ticket. I've spent my 2 days in searching for the cheapest and the best alternative and finally I've found one on http://www.ekobilet.com. The plane will take off on 1st of January and fly to Frankfurt and then Ottowa waiting me 6 hours in Frankfurt airport. My return flight is on 28th of April.&lt;br /&gt;&lt;br /&gt;Meanwhile, I had made some research on the accomodation and decided to stay in the residences with the suggestion of some friends there. Hasan, Serhat and other people I've found through facebook has helped me a lot in deciding what to do in the preparation process. I want to thank all of them, especially Hasan. I've applied for the residences on the Carleton Central web site and specified my preferences (quiet, wake up and sleep early etc.) and they offered me a single suite Leeds residence room. Rooms are great as far I see on the net. There are 4 single rooms around a common kitchen and there are 2 bathrooms which are shared by 2 people each. The residences get open on 3rd of January and I'm flying there 2 days before so I will need to stay somewhere. We'll look at it when the time comes. But the only thing I know for now is that Ottawa is freezing cold around -19*C.&lt;br /&gt;&lt;br /&gt;Nowadays I'm looking for the payment options for the residence fees and the health insurance. And I have started to pack up slowly. I won't bring my laptop there as I need a new one so I have to organize my files and take the important ones with me. I also started to-know, to-bring, to-do lists to avoid any surprizes on the way. Hope I haven't forgotten much to tell :)&lt;br /&gt;&lt;br /&gt;We're now on holiday and we have already passed half of it :( Now I have to do the master application organization and study the courses I'm currently taking: Bioinformatics, Software Engineering, Computer Networks, Cultural Anthropology and the Final Thesis. I and my friend Remzi are working on the Driver Recognition project of Assist. Prof. M. Taner Eskil. I'm planning to focus on that issue in another post but as far as I can sum, the project aims to recognize the car driver by analyzing the driving features (acceleration, velocity, engine RPM, brake, steering). We're trying to do PCA on the features to find the most dominant features to reduce the processing time.&lt;br /&gt;&lt;br /&gt;Hope to write soon! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-4734101224346952577?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/4734101224346952577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=4734101224346952577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/4734101224346952577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/4734101224346952577'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2008/12/exchange-plans.html' title='Exchange plans'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-6924693802325882240</id><published>2008-09-01T10:52:00.015+03:00</published><updated>2008-09-03T12:31:26.050+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project'/><category scheme='http://www.blogger.com/atom/ns#' term='Pardus'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='Internship'/><title type='text'>Internship @ Pardus</title><content type='html'>I've entered my TOEFL exam and it was pretty good, except for the listening part in which I lost my attention and thought about the examination software (it was written in Java but the Cambridge, Longman etc. preparation CDs are prepared in Shockwave as I saw). I asked myself: "Why don't they write them in Java too so that I can use them on Linux? And guess what, at that moment, a lecture was being given on the computer and I lost lots of details :D&lt;br /&gt;&lt;br /&gt;Nevermind, I started my third internship last week, in TÜBİTAK (National Scientific Research Center) on Pardus Linux Distribution Project. It's been very beneficial for me so far. I've learned lots of things about software, python, GUI design and opensource. I want to share what I've learned in this blog as much as I can do. You can see examples &lt;a href="http://svn.pardus.org.tr/uludag/trunk/staj-projeleri/sahip"&gt;here&lt;/a&gt;. I've written a program called Sahip, which is an XML generator. It produces the installation settings for Yali (installation software of Pardus) to perform silent installs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;PyQt4 GUI Building&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Let's start with PyQt4 GUI building. I used to think that we could not import GUI files from python modules and this caused us to refactor our python code whenever we wanted to change the gui, unlike GTK with Glade (you can import XML from python). But I was wrong. There was some options I could follow. One of them is the kdedesigner module for python. But I used the other one, inheriting the compiled GUI.&lt;br /&gt;&lt;br /&gt;After you design a GUI on Qt Designer 4, you can compile it to Python code with:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;pyuc4 gui.ui -o mygui.py -x&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;and after that we can import and inherit it as written below:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;from PyQt4 import QtCore, QtGui&lt;br /&gt;from sahip.usergui import Ui_UserDialog&lt;br /&gt;&lt;br /&gt;class UserDialog(QtGui.QDialog):&lt;br /&gt;  def __init__(self, caller=None, user=None):&lt;br /&gt;    QtGui.QDialog.__init__(self, None)&lt;br /&gt;    self.ui = Ui_UserDialog()&lt;br /&gt;    self.ui.setupUi(self)&lt;br /&gt;          &lt;br /&gt;    self.ui.lineEdit.setText('test')&lt;br /&gt;    # All the other stuff here or in other methods.&lt;br /&gt;&lt;br /&gt;if __name__ == "__main__":&lt;br /&gt;  import sys&lt;br /&gt;  app = QtGui.QApplication(sys.argv)&lt;br /&gt;  UserDia = UserDialog(None)&lt;br /&gt;  UserDia.show()&lt;br /&gt;  sys.exit(app.exec_())&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;That's all!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Opening up a new dialog&lt;/span&gt;&lt;br /&gt;I imported UserDialog class above and used it as a dialog.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def slotUserNew(self):&lt;br /&gt;      self.userDialog = QtGui.QDialog(self)&lt;br /&gt;      self.userDialog.ui = UserDialog(self) # caller=self&lt;br /&gt;      self.userDialog.ui.show()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Lists items with checkboxes&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;You can set all the items of a list have a checkbox near it with the following code:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;for i in range(count):&lt;br /&gt;  item = self.ui.groupList.item(i)&lt;br /&gt;  item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)&lt;br /&gt;  item.setCheckState(QtCore.Qt.Checked)&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Handlers&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;In lists, I could only store the username of a user but the rest of the information should be stored somewhere else. That could be a dictionary, list etc. Dictionary was the most convenient for me but I had to define a dictionary for each list/combobox. That was a replication of code! So I wrote WidgetHandler, and specialized ListHandler, ComboBoxHandler to store them and defined addItem/removeItem, etc. methods to update both the dictionary and the widget. It was much more clear.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;i18n&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have always wondered about internationalization and I saw that it was pretty easy. What you should do is to add the following code to the beginning of each of your files you want to be translated.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import gettext&lt;br /&gt;__trans = gettext.translation('sahip', fallback=True)&lt;br /&gt;_ = __trans.ugettext&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and you will use _('string') instead of 'string' if you want that string to be translated. And here comes the pot file generation part. As you can see the example project on the link above, I have a tools, po and sahip directory. So I recommend you to create such directories. I put pot generator sh file into tools dir and po/pot files into po dir. After creating an empty po dir, you can execute the following script (above po dir)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;LANGUAGES=`ls po/*.po`&lt;br /&gt;set -x&lt;br /&gt;&lt;br /&gt;xgettext -L "python" -k__tr -k_ sahip/sahip sahip/*.py -o po/sahip.pot&lt;br /&gt;for lang in $LANGUAGES&lt;br /&gt;do&lt;br /&gt;  msgmerge -U $lang po/sahip.pot&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As you might understand, this script crawls through the given paths (sahip/sahip and sahip/*.py) and generates pot file by reading the py files and main (non-extensioned) sahip file. You will then find the pot file in your po directory. You can translate and rename it to lang.po format (tr.po, de.po, es.po). Then the python setup script will probably compile po file into mo file and copy it into proper place.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Setting Icon&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create a directory called images in the same directory of your codes.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Put an image file in it, such as icon.png&lt;/li&gt;&lt;li&gt;Create a qrc file such as resources.qrc and fill it with the content&lt;rcc&gt;&lt;qresource&gt;&lt;br /&gt;&lt;br /&gt; &lt;file alias="icon"&gt;images/icon.png&lt;/file&gt;&lt;/qresource&gt;&lt;/rcc&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open your GUI with Qt4 Designer and click on ... button of windowIcon on the Property Editor when main form is selected.&lt;/li&gt;&lt;li&gt;A dialog will be shown, click on pen and then the open button (middle). Select the qrc file you created.&lt;/li&gt;&lt;li&gt;Select the icon appeared on the right side of the dialog and click OK.&lt;/li&gt;&lt;li&gt;Save the GUI.&lt;/li&gt;&lt;li&gt;On the console, apply the following command:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;pyrcc4 resources.qrc -o resources_rc.py&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Generate your gui py file with pyuic4 and that's all!&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Publishing the Code&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;I needed to copy YALI setup.py file and modify it for sahip. This file compiles po and qrc files, and then copy required files to the system for installation. Then I wrote a digestrelease.py script which copies the program directory to desktop and removes the unnecessary ones. Then the packager.py file compresses the directory and sha1sums it, updates a sample pisi pspec.xml file with the sha1sum, uploads the compressed targz file to ftp server and then build the pisi package, and install it.&lt;br /&gt;&lt;br /&gt;It was a good way of automation for me. I could make modifications and try the result in seconds. I might have written this entry too confusing, sorry but I don't have much time. My next project is to develop a web site where files can be searched within the pisi packages so that for instance you can find which package the 'ls' file comes from. I'm currently writing the database generator and after I'll pass to the Django side.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-6924693802325882240?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/6924693802325882240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=6924693802325882240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/6924693802325882240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/6924693802325882240'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2008/09/internship-pardus.html' title='Internship @ Pardus'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-387823628394919506</id><published>2008-08-08T18:20:00.003+03:00</published><updated>2008-08-08T18:31:41.130+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>Les Miserables</title><content type='html'>I've just finished the book Les Miserables from Victor Hugo. Yeah, it's pretty late for me, for a 21-old boy(or should I say man)! In my childhood, this novel was tought to be tough for children, so hard to read. I even remember my mother saying "Look at her! She even read the Les Miserables" for somebody whom I don't remember. Maybe I was really too young and told my subconscious even not to attempt to read that book or forgot about it later. &lt;br /&gt;&lt;br /&gt;By the way, it was pretty easy to read it now. Because it was the Penguin simplified edition(3000-words Advanced) which I had bought in High School by mistake. I just had misunderstood which reading books we had to buy and bought the ones for the English Language class, who study English in detail. So I did not attempt to read them, until now. Getting prerpared for the TOEFL exam, I see that I have weakness of speaking and vocabulary. So I tought this book could help some. Yes, I learned more than 20 words. &lt;br /&gt;&lt;br /&gt;The book is very beautiful, indeed I think the writer has some sadistic side because I felt really bad in the first 4 chapters(how can people be so cruel!). But afterwards, it tended to make me so curious abot what would be the next pages that I read it too fast. As a result, I probably missed a lot of words to learn. I recommend this book to be read!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-387823628394919506?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/387823628394919506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=387823628394919506' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/387823628394919506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/387823628394919506'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2008/08/les-miserables.html' title='Les Miserables'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-5006693249201687083</id><published>2008-08-08T12:06:00.006+03:00</published><updated>2008-08-08T12:29:26.077+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Energy'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='Internship'/><title type='text'>New electrolyzers open up the way to Solar Century</title><content type='html'>In the earlier days of this week, while watching CNN International, I run into a wonderful news. The visitor was a professor from MIT and they were going to talk about a recent invention on storing solar energy.&lt;br /&gt;&lt;br /&gt;As you may know, solar energy is known to be unlimited as long as the sun lives but limited as it can't be used efficiently because not only the solar panels can't absorb all the energy but also the energy can be obtained only during the daytime. It seems that the absorption is still a problem but the recent news promise in storing the excess energy.&lt;br /&gt;&lt;br /&gt;The scientists at MIT, have found a new method to store the excess energy by dividing the water into its ingredients, Hydrogene and Oxygene. Heey, this is already being done worldwide, you might say. But this operation needed high maintenance costs and abnormal operation conditions(temperature, pressure, etc.). This new method, inspired by the photosynthesis, uses a new catalyst consisting of cobalt metal, phosphate and an electrode to produce Oxygen and another catalyst like platinum to produce Hydrogen and does not require any special conditions for the reaction to start.&lt;br /&gt;&lt;br /&gt;As this is an easy-implementing method of storing energy, it is tought to change the world, contributing to the works on solutions for the global warming problem. But as the proffessor says, it will take 8 years for us to have these sets on our roofs. I wish it was closer if it was that easy to implement but maybe the other (efficient absorption) problem needs to be solved in order these products to be more efficient.&lt;br /&gt;&lt;br /&gt;By the way, I have finished my internship. Nowadays I'm preparing for my TOEFL exam and working on Python as usual. My Python presentation went very well and I saw that most of the aspects of Python could be introduced in 2 hours! Such a beautiful language...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-5006693249201687083?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/5006693249201687083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=5006693249201687083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/5006693249201687083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/5006693249201687083'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2008/08/new-electrolyzers-open-up-way-to-solar.html' title='New electrolyzers open up the way to Solar Century'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-305166582147251413</id><published>2008-07-25T23:44:00.006+03:00</published><updated>2008-07-26T00:04:33.983+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='Internship'/><title type='text'>BOLO and Python</title><content type='html'>&lt;span style="font-family: georgia" &gt;We worked on BOLO for some time but we found it very complex. The code is unnecessarily too much (less code could achieve the same functionality). One manager for each POJO is defined although those manager methods could be defined in POJOs. So, crawling in the code is a funny(!) way of spending time for us (me and Melih). We tried to implement the search by status functionality but got stuck at the enumarator types for the Status class properties. Showing them on JSF and selecting them is a problem. Then we tried to add a timestamp on the CVs uploaded. But finding the code where the file is uploaded, where the filepath is inserted into the database were the problem in that case. Moreover, the service had been giving "Out of memory" errors after 10 minutes of run.&lt;br /&gt;&lt;br /&gt;Getting bored from all these stuff, I tried to write the model in Python/Django. It was a good try. I found a model to UML Diagram script and generated a database model diagram. Showing the diagram, Melih was impressed by the easiness and practicality. Then he wanted me to show my work to the team leader and I showed what I did:&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_NgrhKnmLZHY/SIo9k2yrjdI/AAAAAAAAAeY/DtxCkH_bYBw/s1600-h/alozg.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_NgrhKnmLZHY/SIo9k2yrjdI/AAAAAAAAAeY/DtxCkH_bYBw/s320/alozg.png" alt="" id="BLOGGER_PHOTO_ID_5227058020909551058" border="0" /&gt;&lt;/a&gt;But he did not welcome my work as much as I expected: "Good, but when your internship ends, there's nobody to maintain it here. I don't want my staff to learn Python for such a thing. Because nobody uses Python". I didn't know what to fell sorry for. For my effort, or the misknowledge for Python.&lt;span style="font-family:times new roman;"&gt; &lt;span style="font-family: georgia;"&gt;Nevermind, I'm spending my time with some trying on that BOLO stuff, and some with fixing some errors in my Python projects.&lt;br /&gt;&lt;br /&gt;By the way, some colleagues wanted me to give a talk about Python and how it is used. I'm going to get prepared for it and give a brief presentation called "Python for Java Geeks". So, first of all, I have to find some resources on the differences between Java and Python so that making it easier to understand, I can go faster. Maybe in 3 hours, instead of 8 hours that I had given at school for programming newbies.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-305166582147251413?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/305166582147251413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=305166582147251413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/305166582147251413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/305166582147251413'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2008/07/bolo-and-python.html' title='BOLO and Python'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_NgrhKnmLZHY/SIo9k2yrjdI/AAAAAAAAAeY/DtxCkH_bYBw/s72-c/alozg.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-681803420490900273</id><published>2008-07-22T15:33:00.005+03:00</published><updated>2008-09-03T12:27:31.524+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Project'/><category scheme='http://www.blogger.com/atom/ns#' term='Internship'/><title type='text'>BOLO</title><content type='html'>After the crazy boring minutes of trying to develop a new project with appfuse, my guide told me that he has found a project of his colleagues: &lt;a href="http://code.google.com/p/bolo"&gt;BOLO&lt;/a&gt;. This is an interview manager, developed using appfuse (JSF+Hibernate) as a final thesis in Ege University. We are going to improve it by fixing some lackness and adding new features on it. We are going to work on it this evening (overtime) to understand its structure. Now, I'm preparing my internship report, filling the part for SOA. This is at the same time a preparation for my SOA presentation which will be at the end of my internship.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-681803420490900273?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/681803420490900273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=681803420490900273' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/681803420490900273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/681803420490900273'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2008/07/bolo.html' title='BOLO'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-1157035747475206668</id><published>2008-07-20T19:50:00.001+03:00</published><updated>2008-07-20T20:22:16.954+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Algorithm'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Google Code Jam</title><content type='html'>Last Thursday, I saw a blogpost on a Python related RSS, mentioning about the &lt;a href="http://www.google.com/codejam/"&gt;Google Code Jam&lt;/a&gt;. I saw that it was a programming contest and took a look at it. Reading the rules, I saw that there was a 4 - 8 minute limit. At first I thought that it was the time to solve a problem that is given to you. I thought it was a crazy idea to solve a problem in 4 minutes and code it. As I was at the company, I put it off to the evening for details. When I came home, I did some stuff I needed to do and when I realized that the limit is not for solving but submitting the output after downloading the input, I was angry with myself. Why didn't you read it! There had been 4 hours left. It was 10 pm and the contest was going to end by 2 am. So I started to look at the questions. There were 3 questions of which I had to solve 1 of them correctly to qualificate to the first round. I needed to code to solve the problem and then download two (small and big) inputs and submit them.&lt;br /&gt;&lt;br /&gt;I started with the first question, here you are a summary: "In a planet, there are some search engines. When you search the name of a search engine on itself, the planet explodes. So you shouldn't search for Gogool on the Gogool engine. Scientists developed a central system to prevent this. This system forwards the search requests to the engines other than the engine with the name in the request. The question is that with the least switch between the engines, how many switches are required to serve all the search requests."&lt;br /&gt;&lt;br /&gt;I developed a greedy algorithm. First, I was going to determine the indexes of the engines where they were first seen. Then I was going to find the furthest one and serve the request before that with this engine. For example below, the furthest first seen engine is NSM. So I should handle the first 4 requests with NSM:&lt;br /&gt;&lt;br /&gt;Yehhaw&lt;br /&gt;Yehhaw&lt;br /&gt;Gogool&lt;br /&gt;Dont Ask&lt;br /&gt;NSM&lt;br /&gt;Gogool&lt;br /&gt;DontAsk&lt;br /&gt;DontAsk&lt;br /&gt;Gogool&lt;br /&gt;Yehhaw&lt;br /&gt;&lt;br /&gt;Then I had to remove the indices below 5 which belongs to NSM. Then I looked ahead like having a new beginning from NSM:&lt;br /&gt;Gogool&lt;br /&gt;DontAsk&lt;br /&gt;DontAsk&lt;br /&gt;Gogool&lt;br /&gt;Yehhaw&lt;br /&gt;&lt;br /&gt;So, it is now obvious that the index 11, (i.e. Yehhaw) is the engine to be used for serving 5-10 (NSM-Gogool). And then the previous indices would be removed after that and so on. The input files were large with the 20 different cases in the number of various engines and the number of searches.&lt;br /&gt;&lt;br /&gt;I coded this algorithm on Python and when I ran the sample input, it was successful. Then I downloaded the input file but it told me that my output was incorrect. After the contest, I learned that there were only 3 digits wrong, possibly caused by boundary checking or exceptional conditions.&lt;br /&gt;&lt;br /&gt;After the wrong answers, I decided to look for the other questions and started the second question, the train question. There were two towns, A and B between which there were train routes. Input file consisted of the turnaround time for the trains, the timetable from A and timetable from B. The question is that with how many trains at minimum you can handle these timetables such a way that a train coming from A, after completing the turnaround can handle the closest train route on the timetable B to go back to A.&lt;br /&gt;&lt;br /&gt;A: 9.00 - 12.30&lt;br /&gt;Turns around in 5 minutes&lt;br /&gt;B: 13.00 - 15.00&lt;br /&gt;The turned around train undertakes the 13.00 route and goes to A. So there's no need to have an additional train to go from B to A at that time.&lt;br /&gt;&lt;br /&gt;At first I did not have a clear algorithm but I thought it would be great if I could match the trains as complement and show the complement pairs on the screen so that I could draw inferences on it. Maybe I could develop a matching algorithm after marking them as complements. But the things were not the same as they seemed to be. When marking as complement, I fell into a infinite loop, the train from A matched B and the train from B matched A and A did the same, etc ... They matched each other again and again. Then I realized the time was nearly up. I could not do anything but to post my code and the small output. They were incorrect, of course. But at least a hope that they would look at the codes.&lt;br /&gt;&lt;br /&gt;So, I could not qualificate to the first round. I wish I could know it before. For months, they had been practicing for the contest and I hadn't ever heard about it. It was the contest day (last day) when I saw it. So all I can do is this in four hours. Maybe I can do better next year, using all the 24 hours. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-1157035747475206668?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/1157035747475206668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=1157035747475206668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/1157035747475206668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/1157035747475206668'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2008/07/google-code-jam.html' title='Google Code Jam'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-2782841691451050461</id><published>2008-07-18T14:55:00.001+03:00</published><updated>2008-07-18T15:28:43.466+03:00</updated><title type='text'>appfuse</title><content type='html'>I have never seen such an un-documented framework, tool or whatever it is! You just can’t know what it is and what you have to do. There are lots of directories with the same name and nobody describes you which directory is for what. It always errors... I don’t want to use it, I want my Python baaaaaaaaaack!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-2782841691451050461?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/2782841691451050461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=2782841691451050461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/2782841691451050461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/2782841691451050461'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2008/07/appfuse.html' title='appfuse'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-7511803173731540647</id><published>2008-07-16T16:16:00.001+03:00</published><updated>2008-07-16T17:26:38.145+03:00</updated><title type='text'>First days in the Alcatel-Lucent Internship</title><content type='html'>Hello everybody, now I decided to write here about my internship journeys. I won’t be able to write all the details of my previous days but  I’ll give you some summary. First of all, I normally write on my personal web site http://www.emrealadag.com in Turkish and I had my first internship as a Network intern in Tellcom, a telecommunication company and now I’m in Alcatel-Lucent, as  a Software intern.&lt;br /&gt;&lt;br /&gt;The first day, I was taking a look at the Eclipse and the J2EE plugins when they saw me that I’m using Linux and asked me to install one on their server which needed to be re-installed. Then I installed Fedora 9, but with a wrong preference: KDE4. It was a terrible experience. I could not do any kind of basic desktop operations. We could not install gnome on it either just because we didn’t know the package names required for it. Then I installed RHEL5 and installed/configured Oracle 10g Enterprise server, for a test purpose. After that, I installed and configured the VNC server. Both were to launch at startup. Then I wrote some documentation about it. You can reach them here: &lt;a href="http://www.emrealadag.com/dosyalar/it/Ora10gonRhel5.pdf"&gt;Oracle 10g on RHEL5&lt;/a&gt; , &lt;a href="http://www.emrealadag.com/dosyalar/it/vncserverOnRHEL5.pdf"&gt;VNC Server on RHEL5&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I worked on the pre and post configurations a lot. So I wanted to automatize this process. So I worked on a Python Script, pyorainstaller for two days. This script does all the pre-configruation like configuring kernel parameters, security levels, some prerequisite checking, etc. and post-configuration like hostname and launching at startup. You can download this program from its &lt;a href="http://sourceforge.net/projects/pyorainstaller"&gt;site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I worked a lot on testing this site, as I did not have any testing machine at work so I had to test it on my desktop PC at home which meant I had to spent my nights with it. Then I was faced with JSF. They told me that I was going to develop two projects with JSF and gave me a book called Core JavaServer Faces 2nd edition. There were examples on glassfish but the examples did not work :) So they told me ’Nevermind, just use Tomcat.’ But there was nothing about Tomcat in the book. So I got crazy; because there was no short and smart tutorials for the first learners. Then I finished the day, looking over the web sites. Some collegues told some stuff about the JSF architecture but there were too many things to keep up in mind. I cought the general idea up.&lt;br /&gt;&lt;br /&gt;Then at the weekend, I upgraded to Pardus 2008 on a clean system and on Tuesday, I worked on Tomcat+JSF to build a login form. I wanted to get the session information and used the core jsf libraries but they conflicted with the Tomcat’s catalina. I just was going to fix that but they told me to move on appfuse. As I was told, I am going to develop an HR system for the employment, managing the reviews about recent employee candidates.&lt;br /&gt;&lt;br /&gt;Appfuse is an project-automator which gathers the tools required for you depending on your project-type. I now just created a new JSF Modular project and run the mvn command but it gave a strange error:&lt;br /&gt;&lt;br /&gt;Embedded error: The following error occurred while executing this line:&lt;br /&gt;/home/emre/dev/hr/web/src/test/resources/web-tests.xml:52: Wrong document title found!. Expected value ".*Login.*" but got "Error - Error calling action method of component with id passwordForm:execute | AppFuse"&lt;br /&gt;&lt;br /&gt;I’m now trying to figure out what it is. I can’t do anything just because of these silly errors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-7511803173731540647?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/7511803173731540647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=7511803173731540647' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/7511803173731540647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/7511803173731540647'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2008/07/first-days-in-alcatel-lucent-internship.html' title='First days in the Alcatel-Lucent Internship'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2099774886325008935.post-170275276083417306</id><published>2007-09-25T18:01:00.000+03:00</published><updated>2007-09-25T18:11:44.629+03:00</updated><title type='text'>Selamlar</title><content type='html'>Selamlar,&lt;br /&gt;&lt;br /&gt;Bu blogu geçici olarak açtım. Şu anda &lt;a href="http://www.emrealadag.com"&gt;http://www.emrealadag.com&lt;/a&gt; adresimdeki günlüğümü kullanıyorum. Ancak ileride burayı da belki İngilizce günlük olarak kullanabilirim.&lt;br /&gt;&lt;br /&gt;Hakkımda bilgiyi &lt;a href="http://www.emrealadag.com/hakkimda"&gt;buradan&lt;/a&gt; bulabilirsiniz.&lt;br /&gt;You can find information about me &lt;a href="http://www.emrealadag.com/about-me"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fotoğraf Galerilerim:&lt;br /&gt;My Photograph Galleries:&lt;br /&gt;&lt;span class="on" style="display: block;" id="formatbar_CreateLink" title="Ba&amp;gbreve;la" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://aladagemre.deviantart.com"&gt;Deviant Art&lt;/a&gt; , &lt;a href="http://picasaweb.google.com/aladagemre"&gt;Picasa Web&lt;/a&gt; , &lt;a href="http://emrealadag.fotopic.net"&gt;Fotopic&lt;/a&gt;&lt;span class="on down" style="display: block;" id="formatbar_CreateLink" title="Ba&amp;gbreve;la" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2099774886325008935-170275276083417306?l=aladagemre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://aladagemre.blogspot.com/feeds/170275276083417306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2099774886325008935&amp;postID=170275276083417306' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/170275276083417306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2099774886325008935/posts/default/170275276083417306'/><link rel='alternate' type='text/html' href='http://aladagemre.blogspot.com/2007/09/selamlar.html' title='Selamlar'/><author><name>Ahmet Emre Aladağ</name><uri>http://www.blogger.com/profile/05779913288059842422</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_NgrhKnmLZHY/THJwaxe8naI/AAAAAAAAC7E/_DSVe1U18Q4/S220/uskudarsahil.jpg'/></author><thr:total>0</thr:total></entry></feed>
