<?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-7202293029705073090</id><updated>2011-04-21T23:17:16.401+03:00</updated><category term='чекмеджета'/><category term='компютри'/><category term='цирей'/><category term='гъз'/><category term='Бира'/><category term='last.fm'/><category term='Безсъние'/><category term='ураган'/><category term='задник'/><category term='лайна'/><category term='алкохол'/><category term='пиене'/><category term='азиатско порно'/><category term='скапан интерфейс'/><category term='jvascript'/><category term='задръстеност'/><category term='псувни'/><title type='text'>Безсъние. Кодирам...</title><subtitle type='html'>I can't get no sleep. The internet never sleeps.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>85</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-5119803591517426841</id><published>2009-01-08T00:50:00.002+02:00</published><updated>2009-01-08T00:52:46.503+02:00</updated><title type='text'>Последен пост!</title><content type='html'>Този блог е мъртъв. Новия ми блог може да бъде намерен на:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://trikolka.blogspot.com/"&gt;http://trikolka.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Този блог няма да се трие, дори смятам да го архивирам.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-5119803591517426841?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/5119803591517426841/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=5119803591517426841' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5119803591517426841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5119803591517426841'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2009/01/blog-post_08.html' title='Последен пост!'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-5570307985915312741</id><published>2009-01-07T23:03:00.002+02:00</published><updated>2009-01-07T23:28:03.488+02:00</updated><title type='text'>Ново приключение!</title><content type='html'>Понеже вече нямам особено много време за блогване и програмиране, реших да пенсионирам този блог. Първият пост тук е направен на 25 Юли 2008 година. Това е доста време. За това време сайтът е посетен от 1213 човека. Мамка му! Средно по 300 на месец! 60% от тези хора са влизали тук само веднъж. Тяхна загуба. 14 човека сте влизали повече от 200 пъти(вие не спите ли бе :D). Този блог е първия ми сериозен опит в блогерството. Въпреки усилията ми имам чувството че не успях да постигна много. Целта на този блог е била да се науча да блогвам. Научих се вместо това да пиша(полуграмотно) интересни неща. Научих доста неща за публиката ми(благодарение на гугъл аналитикс) и също така научих много неща за себе си.&lt;br /&gt;&lt;br /&gt;Въпреки че пенсионирам блога, аз далеч не съм готов да се пенсионирам. Това че съм доста зает сега с учене не означава че няма да намирам време за блогване, дори съм по убеден че трябва да намеря такова време. Много скоро ще стартирам нов блог с който смятам да ви сритам шибаните задници! Точно така, новия блог ще има супер сили, като например ще може да говори с риби! :D &lt;br /&gt;&lt;br /&gt;Искам да благодаря на svejo.net за тези 60% от 1213 човека, които са посетили сайта ми само веднъж! Повечето са от вас :D Другата част, макар и по малка, е по важна за мен, и смятам да даря тази аудитория със супер мега екшън блогинг! &lt;br /&gt;&lt;br /&gt;Искам да благодаря на тези 14 човека които са влизали в сайта ми повече от 200 пъти! Сериозно, макар да сте само 0.75% вие сте най важните :D &lt;br /&gt;&lt;br /&gt;В крайна сметка този блог е провал, но беше забавен провал. Готов съм за следващия си провал. Дано е интересен провал. Имам чувството че ме чака провал, но...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-5570307985915312741?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/5570307985915312741/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=5570307985915312741' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5570307985915312741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5570307985915312741'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2009/01/blog-post_07.html' title='Ново приключение!'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-7484645817456602819</id><published>2009-01-03T19:35:00.004+02:00</published><updated>2009-01-03T20:16:47.610+02:00</updated><title type='text'>Може би последния ми проект до лятото приключи...</title><content type='html'>Тази ваканция беше най яката от години. Миналата беше доста яка, защото отидох на хардкор феста в София, но това беше 1 ден и ми струваше 20 кинта. Тази година обаче удоволствието дойде от продуктивността, която демонстрирах. &lt;br /&gt;&lt;br /&gt;Още от ноември се чудех какъв проект да подхвана за ваканцията. Първоначално си мислех за всякакви щуротии, които нямаше да мога да свърша никога, пък камо ли за 10 дена в къщи. В последната седмица преди ваканцията реших да науча Common Lisp. Вече знаех Scheme и реших че няма да е толкова трудно, отворих Practical Common lisp и прочетох първите 2 глави, след което се отказах. Ето как мина процесът. Докато четох книгата се сетих че вече знам Scheme и ще е добра идея, вместо да си губя времето в учене на нов език, да взема да си изцапам ръцете и да напиша нещо на scheme. Реших да е някъкво уеб приложение, защото това е модерно сега. Като отворих документацията на plt scheme се сетих че вече знам python много по добре от колкото знам scheme и че ако искам да свърша нещо за 10 дена, ще трябва да е на python. След като избрах любимия ми език python за основа на новия ми проект, реших  да го напиша използвайки cherry py, известен http фреймуърк. Изтеглих си една книга за него и започнах да чета. След около половин час реших че вече имам малко опит със Django, една от най популярните python уеб фреймуърки и че би било глупаво да програмирам на нещо толкова low-level като cherry-py, освен ако наистина нямам нужда от предимствата на минимализмът му. И така в рамките на 2 дни преминах през целия този процес и реших да напиша новия си супер сайт на python със Django. Този проект го бях мислил още септември, когато излезе Django 1.0, но за съжаление в същия този месец се появи гадното даскало и нямах особено време(всъщност имах, но обичам празните извинения). &lt;br /&gt;&lt;br /&gt;И така проектът ми за блог със Django се върна от света на мъртвите и започнах работа по него. Първите 2 дена от ваканцията четях документацията на Django, туториълът им е доста добър, преминах през него, и на края ми казаха че това е било само 10% от документацията!!! Стресирах се от това колко още имам да чета и си изтеглих всички епизоди на "Терминатор: Хрониките на Сара Конър" и прекарах 2 дни гледайки това. Бих го нарекъл супер прокрастинация. След като изхабих 2 дни в зомбирано състояние(22 епизода със една почивка от 5 часа да се наспя, по средата) се върнах към джанго. Започнах да чета за HTML и CSS, имам само повърхностни познания по HTML и почти никакви познания по CSS, след като прегледах сорса на няколко сайта, имах от къде да започна, и написах шаблона за сайта ми. 2 дни го работих. Може да се каже че като първи опит се е получил прилично, но истината е че е говно и за това няма да ви покажа как изглежда. Също така изглежда още по зле под IE6 и firefox под уйндолс, въпреки че е направен за firefox на линукс, проблемът е във шрифтовете, но ме мързеше да ги оправям.&lt;br /&gt;&lt;br /&gt;Следващите 2 дни работих върху бекенд-а на сайта. Django е цар тук, кодът който трябваше да напиша за да имам прост блог беше супер малко! Ама наистина малко. Както туториълът си го казва:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Take a few minutes to marvel at all the code you didn't have to write.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Повечето време само четох документация и почти не писах код, въпреки това имам напълно функционален блог. Вчера реших че няма да го хоствам никъде. Доволен съм от Blogger, а и беше забавен проект, научих доста, а и нямам нерви да доразвия кода и да поддържам сайта, за това по добре да го оставя като добър спомен, и да премина към други предизвикателства. И така след като няколко месеца си търсих извинение за да не се занимавам с Django, изведнъж този проект все едно се бореше да се роди, бореше се 2 дни и заради него не научих common lisp, не задълбочих познанията за scheme и не научих cherry-py, но за сметка на това разбрах че не ставам за уеб дизайнер, но доста хитро се справих със генерализирането на моделът ми за базата данни. Вместо да имам 3 модела за блог пост, есе и проект, написах само един модел за entry и добавих таг за тип, това означава че вместо да пиша 3 почти идентични класа, имах 1. За сметка на това CSS-а ми е супер грозен :D&lt;br /&gt;&lt;br /&gt;Сега днес и утре са последните ми 2 свободни дни. 12-ти клас съм и няма да имам повече ваканции, имам да уча за матурите и наистина ми е кофти че няма да мога да се втурвам в подобни преживявания до лятото. Може би един от последните ми проекти преди ваканцията ще е през януари. А кой знае, може да открия начин да съвместя програмирането и ученето и да се забавлявам втория срок, като в същото време се подготвя за изпитите ми и т.н. Дори смятам да направя точно това, само че не съм преминал през детайлите, трябва да медитирам върху проблема. Знам само че това ще бъде жестоко лято!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-7484645817456602819?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/7484645817456602819/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=7484645817456602819' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/7484645817456602819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/7484645817456602819'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2009/01/blog-post.html' title='Може би последния ми проект до лятото приключи...'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-6493402827844233425</id><published>2008-12-30T19:42:00.003+02:00</published><updated>2008-12-30T19:51:03.076+02:00</updated><title type='text'>Не слагайте сняг в сайтовете си!</title><content type='html'>Сериозен съм. Дори и &lt;a href="http://wordpress.com/"&gt;wordpress.com/&lt;/a&gt; имат шибан сняг на сайта им, ако това не беше достатъчно, фонът им е БЯЛ! Бял фон, бял сняг, имам чувството че ослепявам. Текста е нечетим. Не са само те, много сайтове слагат такъв сняг за "Празнично настроение". Майната ви, това не е 90-те и вие нямате право да ползвате сняг и нямате право да изполвате blink тагове в html-а си. Повече ме е грижа за очите ми от колкото за празничното настроение! Весели празници на всички останали, които имат акъл и не ни тормозят с "настроението си".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-6493402827844233425?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/6493402827844233425/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=6493402827844233425' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/6493402827844233425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/6493402827844233425'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/12/blog-post_30.html' title='Не слагайте сняг в сайтовете си!'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-4517431346668589080</id><published>2008-12-21T20:37:00.002+02:00</published><updated>2008-12-21T20:47:09.045+02:00</updated><title type='text'>Бесеница в ~60 реда python код</title><content type='html'>Една от първите програми които бях написал докато учех python беше игра на бесеница. Мъчих се върху нея със дни и накрая се отказах. Вчера докато наливах бира и водка(голяма грешка) се сетих къде съм cгрешил преди толкова време и днес от скука написах кода. Сега ще го споделя, макар да е доста "бърз" и да съдържа някой доста не-елегантни части, работи и дори е забавно :D &lt;br /&gt;&lt;br /&gt;hangman.py:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="python"&gt;&lt;br /&gt;#!/usr/bin/env python&lt;br /&gt;#-*- coding: utf-8 -*- &lt;br /&gt;&lt;br /&gt;from random import choice&lt;br /&gt;from hangman_lib import hang,wordlist&lt;br /&gt;&lt;br /&gt;def find_index(word,char):&lt;br /&gt;    """find all the positions of char in word"""&lt;br /&gt;    index_list=[]&lt;br /&gt;    for i in range(len(word)):&lt;br /&gt;        if word[i]==char:&lt;br /&gt;            index_list.append(i)&lt;br /&gt;    return index_list&lt;br /&gt;&lt;br /&gt;def replace_letter(blank,word,char):&lt;br /&gt;    """insert char in the positions, where char apears in word"""&lt;br /&gt;    index_list=find_index(word,char)&lt;br /&gt;    for i in index_list:&lt;br /&gt;        blank[i]=char&lt;br /&gt;    return blank&lt;br /&gt;&lt;br /&gt;def inp():&lt;br /&gt;    """validate input, only 1 letter per turn.&lt;br /&gt;       Also, some recurtion-foo at the end :D"""&lt;br /&gt;    i=raw_input(u"вход=&gt;".encode('utf-8'))&lt;br /&gt;    if len(i)==1:&lt;br /&gt;        return i&lt;br /&gt;    else:&lt;br /&gt;        print "one letter at a time"&lt;br /&gt;        return inp()&lt;br /&gt;&lt;br /&gt;def win(blank, word):&lt;br /&gt;    """check if we win"""&lt;br /&gt;    if blank == word:&lt;br /&gt;        return True&lt;br /&gt;    else:&lt;br /&gt;        return False&lt;br /&gt;&lt;br /&gt;def main(blank,word,lives):&lt;br /&gt;    """main function, some more recurtion-foo here :D"""&lt;br /&gt;    print blank&lt;br /&gt;    if lives &gt;0:&lt;br /&gt;        char=inp()&lt;br /&gt;        if char in word:&lt;br /&gt;            blank=replace_letter(blank,word,char)&lt;br /&gt;            if win(blank,word):&lt;br /&gt;                print "you win"&lt;br /&gt;                print word&lt;br /&gt;            else:&lt;br /&gt;                main(blank,word,lives) #recurse with new blank&lt;br /&gt;        else:&lt;br /&gt;            print hang[lives-1] #hang is the dict with the graphics&lt;br /&gt;            print 'you have %s lives left' %(lives-1)&lt;br /&gt;            main(blank,word,lives-1) #recurse with one live less&lt;br /&gt;    else:&lt;br /&gt;        print hang[0]&lt;br /&gt;        print "you lose!"&lt;br /&gt;        print word&lt;br /&gt;&lt;br /&gt;if __name__=='__main__':&lt;br /&gt;    print hang[9]&lt;br /&gt;    word=choice(wordlist) #choice chooses a random item from a list&lt;br /&gt;    main(['_']*len(word),list(word),9) #blank is initialy only&lt;br /&gt;                                      # ["-"]*len(word)&lt;br /&gt;                                      #word is list(word),&lt;br /&gt;                                      #because blank is list&lt;br /&gt;                                      #and word must be list&lt;br /&gt;                                      #to compare them&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;а ето и другия файл hangman_lib.py(излъгах че е само в 60 реда, но лесно мога да събера целия файл на 2 много дълги реда:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="python"&gt;&lt;br /&gt;wordlist=["boy","man","kid","worm","word","disk",&lt;br /&gt;          "hello","phone","desck","camera","python",&lt;br /&gt;          "marker","notepad","hangman","piramid",&lt;br /&gt;          "bullshit","hardcore","octopuss"]&lt;br /&gt;&lt;br /&gt;hang={&lt;br /&gt;    0:&lt;br /&gt;"""&lt;br /&gt;_____&lt;br /&gt;|   |&lt;br /&gt;|   o&lt;br /&gt;|  /|\ &lt;br /&gt;|   |&lt;br /&gt;|  /\\&lt;br /&gt;|__________""",&lt;br /&gt;&lt;br /&gt;    1:&lt;br /&gt;"""&lt;br /&gt;_____&lt;br /&gt;|   |&lt;br /&gt;|   o&lt;br /&gt;|  /|\ &lt;br /&gt;|   |&lt;br /&gt;|  / &lt;br /&gt;|__________""",&lt;br /&gt;&lt;br /&gt;    2:&lt;br /&gt;"""&lt;br /&gt;_____&lt;br /&gt;|   |&lt;br /&gt;|   o&lt;br /&gt;|  /|\ &lt;br /&gt;|   |&lt;br /&gt;|  &lt;br /&gt;|__________""",&lt;br /&gt;&lt;br /&gt;    3:&lt;br /&gt;"""&lt;br /&gt;_____&lt;br /&gt;|   |&lt;br /&gt;|   o&lt;br /&gt;|   |\ &lt;br /&gt;|   |&lt;br /&gt;|  &lt;br /&gt;|__________""",&lt;br /&gt;&lt;br /&gt;    4:&lt;br /&gt;"""&lt;br /&gt;_____&lt;br /&gt;|   |&lt;br /&gt;|   o&lt;br /&gt;|   |  &lt;br /&gt;|   |&lt;br /&gt;|  &lt;br /&gt;|__________""",&lt;br /&gt;&lt;br /&gt;    5:&lt;br /&gt;"""&lt;br /&gt;_____&lt;br /&gt;|   |&lt;br /&gt;|   o&lt;br /&gt;|      &lt;br /&gt;|    &lt;br /&gt;|    &lt;br /&gt;|__________""",&lt;br /&gt;&lt;br /&gt;    6:&lt;br /&gt;"""&lt;br /&gt;_____&lt;br /&gt;|   |&lt;br /&gt;|    &lt;br /&gt;|      &lt;br /&gt;|    &lt;br /&gt;|    &lt;br /&gt;|__________""",&lt;br /&gt;&lt;br /&gt;    7:&lt;br /&gt;"""&lt;br /&gt;_____&lt;br /&gt;| &lt;br /&gt;|  &lt;br /&gt;|   &lt;br /&gt;|   &lt;br /&gt;|  &lt;br /&gt;|__________""",&lt;br /&gt;&lt;br /&gt;    8:&lt;br /&gt;"""&lt;br /&gt;&lt;br /&gt;|   &lt;br /&gt;|  &lt;br /&gt;|   &lt;br /&gt;|   &lt;br /&gt;|  &lt;br /&gt;|__________""",&lt;br /&gt;&lt;br /&gt;    9:&lt;br /&gt;"""&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt; __________""",&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-4517431346668589080?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/4517431346668589080/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=4517431346668589080' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/4517431346668589080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/4517431346668589080'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/12/60-python.html' title='Бесеница в ~60 реда python код'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-9215380375024217321</id><published>2008-12-16T00:03:00.002+02:00</published><updated>2008-12-16T00:58:47.816+02:00</updated><title type='text'>Булшит детектор</title><content type='html'>Нали знаете какво е булшит детектор? Това е гласът в задната част на главата ни който ни казва че светът е прецакан някъде, че някой ни ебава, че нещо не работи както трябва, че нещо не бива да е така. Общо взето това е усещането ни за нередности. Забелязах че през последната една година, от както се занимавам с програмиране по сериозно, този мой сензор се е изострил страшно много. Не знам дали е заради възрастта ми, която е по голяма от миналогодишната ми(но шит?), или заради опитът който съм натрупал през последните 19 години като човешко същество и гражданин на републиката, или е заради промените които настъпиха в моделът ми на мислене и светоусещане, от както се занимавам с програмиране, това което знам е че имам доста по чувствителен булшит-метър от повечето хора. &lt;br /&gt;&lt;br /&gt;Всъщност повечето булшит в този свят ползва познати схеми и модели на разпространение и влияние, така че за да изостри човек усещането си за булшита, трябва просто да научи как той работи. Прост пример: Телевизионна реклама. Повечето хора не разбират колко сериозно се ебават с мозъците им, защото идеята е да се прави незабележимо и за дълъг период от време. От близо година избягвам да гледам телевизия и когато гледам, забелязвам колко невероятно баламски са рекламите които се пускат по телевизията, за мен са прозрачни. Повечето трикове които се използват за да ни измамят са прости и ясни, ето някой от тях: &lt;br /&gt;&lt;br /&gt;Повтаряй името на марката за да се набие в главите на хората&lt;br /&gt;Представяй образи с които хората да могат да се асоциират&lt;br /&gt;Използвай кратки набиващи се в главата фрази, за да асоциират определени думи със продукта ти&lt;br /&gt;&lt;br /&gt;и т.н. Повечето от тези неща са ясни, и причината поради която работят е че повечето хора не се замислят за това, не е и нужно, тяхното подсъзнание ще свърши цялата работа вместо тях. Един добър начин да се предпазите от този вид булшит е просто да не го гледате, ще се учудите какви положителни ефекти върху живота ви ще окаже отказът от телевизия. Освен повече свободно време, това че мозакът ви не се промива от реклами също помага. Когато имам рядкото щастие(играта на думи не е случайна) да гледам телевизия, обикновено рекламите не ми действат, поради 2 причини:&lt;br /&gt;&lt;br /&gt;за да действа една рекламна кампания, тя трябва да бъде видяна много пъти от един и същ човек, иначе не се набива в главата му.&lt;br /&gt;Напълно осъзнавам целта и методите на рекламата, което не ме предпазва от подсъзнателните трикове, но със сигурност е удобно да си упражняваш булшит детектора, опитвайки се да разбереш точно как те ебават.&lt;br /&gt;&lt;br /&gt;До тук с рекламата, има още много начини по които светът може да бъде скапан, и няма да влизам в подробности за всеки вид, тъй като нямам особено познание по всеки вид, за сметка на това имам частично познание по някой частични видове.&lt;br /&gt;&lt;br /&gt;Какво не е наред с горния абзац? Булшит детекторът ми се включи и ми каза че пиша простотии. Всеки човек който се занимава с креативна дейност е способен да засича дефектите в своята продукция, а ако не е способен, обикновено продуцира говна. Няма две мнение по въпроса, ако не можеш да видиш къде грешиш, няма да поправиш грешките си, а надеждата че няма да згрешиш е фалшива, в най добрия случай. Това е вярно не само за писането, както споменах, вярно е за всякакъв вид креативна дейност, освен експресионизма, разбира се, там целта е да се продуцира булшит, за да се шокират хората, или да се разсмеят, което си изберете. При програмирането, това е едно от основните умения които са необходими за да можеш да си вършиш работата, нарича се ДЕБЪГВАНЕ И РЕФАКТОРИРАНЕ. Точно така, дебъгерите са просто специализирани автоматични булшит детектори. Но да оставим на страна дебъгерите, говоря за естествения булшит-метър, който повечето програмисти би трябвало за развият от рано в кариерата си(както аз правя в момента, защото съм в доста ранен етап от кариерата ми, ако не сте забелязали, съм на 18).&lt;br /&gt;&lt;br /&gt;Друг термин, който се шири из международната, и по специално- англо-езичната, блогосфера е "code smell". Вероятно е случайно това че проблемите с код(и като цяло дизайна на системата ви) се наричат "миризми", а вътрешния усет за тези проблеми се нарича "детектор за бикови говна", всъщност може да го наричате просто "нюх", но това е по скучното му наименование. Такива "миризми" са 2 вида, едните са специфични, а другите са универсални, специфичните, както името намеква, са специфични за езика, фреймуйрка или като цяло парадигмата с която изразявате идеите ви с редактора(в повечето случаи зле). Ето няколко примера, които ако имате достатъчно чувствителен "нюх"(по кратко е от булшит детектор), би трябвало да ви напомнят да си рефакторирате кода:&lt;br /&gt;&lt;br /&gt;Дълги имена на методи и функции. Няма нищо по гадно от това да трябва да пишеш realy_long_method_name_that_bugs_me(). Добре че повечето свестни редактори имат автоматично дописване, но какво става ако има много методи с близки имена? &lt;br /&gt;&lt;br /&gt;realy_long_method_name_that_bugs_me_alot()&lt;br /&gt;realy_long_method_name_that_bugs_me_sometimes()&lt;br /&gt;realy_long_method_name_that_bugs_me_FUCK!!!()&lt;br /&gt;&lt;br /&gt;Това определено би трябвало да мирише на гадно!&lt;br /&gt;&lt;br /&gt;Методи и функции с много параметри. Това е ясно, излишна сложност.&lt;br /&gt;&lt;br /&gt;Повтарящ се код. Дрън, дрън...&lt;br /&gt;&lt;br /&gt;Големи класове, големи функции...&lt;br /&gt;&lt;br /&gt;Общо взето би трябвало да е ясно какво се опитвам да ви кажа, пишете lean and mean Код, а не big papa bear код(ебахти метафората :D) &lt;a href="http://www.codinghorror.com/blog/archives/000589.html"&gt;Колегата блогър Джеф Атууд го е обяснил&lt;/a&gt; и ме мързи да повтарям думите му, просто ще инклуудна списъкът му, за да няма повтарящ се текст. Простото е по добро от сложното, краткото е по добро от обширното и всички тея други неща които би трябвало да знаете, ако сте програмисти. &lt;br /&gt;&lt;br /&gt;Ето какво означава добре трениран булшит детектор:&lt;br /&gt;&lt;br /&gt;1.Забелязвате много малки и дразнещи неща, които повечето хора игнорират, защото ги вземат за дадено, това са всякакви нередности или неефективности в света.&lt;br /&gt;2. Осъзнавате че тези частни нередности са просто инстанции на по общи и фундаментални проблеми със света, в много случаи причинени от един особен вид плешиви маймуни, които го обитават.&lt;br /&gt;3. Категоризиране на различните видове нередности в общи категории и търсене на уместни и ефективни решения.&lt;br /&gt;&lt;br /&gt;Това общо взето сумира професията на програмистите :D Лека нощ, надявам се че не ви пречи факта че светът е покрит с "урина и фекалии", защото иначе ще ви е много кофти да живеете, спокойно, свиква се :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-9215380375024217321?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/9215380375024217321/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=9215380375024217321' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/9215380375024217321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/9215380375024217321'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/12/blog-post_16.html' title='Булшит детектор'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-264350048944675574</id><published>2008-12-13T22:05:00.002+02:00</published><updated>2008-12-13T23:37:30.764+02:00</updated><title type='text'>Завръщане в IRC</title><content type='html'>От години не съм стъпвал в irc, но днес се регнах в irc.freenode.net и цял ден Lurck-вам в #python, #python-dev, #clojure, #django, #django-dev и #vim. Наложи ми се да си припомня много неща за IRC, които бях забравил, за щастие kubuntu идва с един доста приличен клиент "konversation", разбира се както всичко в kde и тук С е заменено с K :D. &lt;br /&gt;&lt;br /&gt;След дълги бъзикания успях да си настроя клиента да се свързва със сървъра, да ме идентифицира и да ме свързва с каналите които искам. За съжаление, някой канали ,като #python и #clojure, изискват идентификация(ника ми да е регнат) за да мога да се включа в тях. Проблемът е че когато се свързвам към сървъра, клиента ми се опитва да влезе в тези канали преди да съм се идентифицирал с паролата си. Като решение на този проблем аз първоначално се идентифицирах, и след това се реджойнвах в каналите които искат идентификация, но това е доста тъпо, защото трябва да върша ненужни действия. Решението което открих беше в едно поле което ми позволяваше да пращам автоматично команди към сървъра при самого свързване, в това поле просто въведох командата за идентификация и командите за джойнване в годните 2 канала, а останалите канали въведох в полето за канали към които автоматично да ме присъедини. &lt;br /&gt;&lt;br /&gt;Трябва да спомена че лъркването е доста забавно, научих някой интересни неща, irc не е само за пишлемета без работа(една от причините да се изнеса от там преди години, просто го надрастнах). Никът ми там е pavelludiq, ако на някой му се говори за технологии и глупости.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-264350048944675574?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/264350048944675574/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=264350048944675574' title='1 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/264350048944675574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/264350048944675574'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/12/irc.html' title='Завръщане в IRC'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-5915079103532072291</id><published>2008-12-11T22:55:00.003+02:00</published><updated>2008-12-11T23:12:56.450+02:00</updated><title type='text'>От Vim към gVim</title><content type='html'>Ако имате толкова свободно време колкото мен, най- вероятно сте се натъквали на статии от рода на "from vim to emacs" или "from emacs to textmate", или каквато и да е комбинация от редактори,операционни системи или браузари. Днес аз реших да премина от конзолната версия на Vim, към неговата графична версия gVim и причината за това е... изцяло естетическа, инсталнах си нов шрифт и нова схема за оцветяване. Шрифтът се казва Monaco и ако сте гледали онези тъпи(добре де, преувеличавам тук) Ruby или Rails презентации направени на макове, ще видите че всички ползват този шрифт. Шрифтът е готин, но под линукс изглежда супер гадно в конзолата, за това там предпочитам стандартния Monospace шрифт, или Bitstream Vera Sans Mono, но това само там, Monaco изглежда грозно в конзолата. Също така си смених цветовата схема, сега ползвам wombat, който също не е подходящ за конзолата. Ето няколко скриина, единия вече сте го виждали в поста ми за това &lt;a href="http://nosleepbg.blogspot.com/2008/11/blog-post_15.html"&gt;как използвам Linux&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://farm4.static.flickr.com/3274/3031489985_6226b89a19_o.png"&gt;&lt;img src="http://farm4.static.flickr.com/3274/3031489985_be75f4246e_m.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;А ето и gVim със новия шрифт и цветова схема:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://farm4.static.flickr.com/3179/3100382679_be9879b214_o.png"&gt;&lt;img src="http://farm4.static.flickr.com/3179/3100382679_41f4c835c2_m.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Предполагам че ще се съгласите с мен, че освен естетическа стойност, новата среда е и по приятна към очите, защото е по малко контрастна.&lt;br /&gt;&lt;br /&gt;Ако някой се интересува, файла от втория скриин е от стандартната библиотека на Python3.0 и се казва parse.py и е част от модула urllib, и се използва за парсване на url-и. Доста готино четиво.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-5915079103532072291?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/5915079103532072291/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=5915079103532072291' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5915079103532072291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5915079103532072291'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/12/vim-gvim.html' title='От Vim към gVim'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3274/3031489985_be75f4246e_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-6105674058717647452</id><published>2008-12-08T21:09:00.004+02:00</published><updated>2008-12-08T21:36:22.790+02:00</updated><title type='text'>reStructuredText към html. Скрипт.</title><content type='html'>Днес написах един доста прост скрипт който конвертира .rst(reStructuredText) файлове в html. Може и да съм блогвал за ResT преди, но ако не съм, този пост ще  е малко по подробен от всичко което може би съм споменавал.&lt;br /&gt;&lt;br /&gt;Какво е Rest? Това е markup език, но доста по прост от html, в повечето случаи се използва за писане на документация, която после се конвертира в html,pdf,LaTeX и др. формати. Основното предимство на този език е че е мнооого прост. Мога да ви науча на повечето от важните неща на няколко реда, ето един .rst файл, да речем test.rst:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class='html'&gt;&lt;br /&gt;========&lt;br /&gt;Заглавие&lt;br /&gt;========&lt;br /&gt;&lt;br /&gt;1. Първа точка&lt;br /&gt;&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст::&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    def some_code(param):&lt;br /&gt;        for x in param:&lt;br /&gt;            do_someshit()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;a) това е под хараграф&lt;br /&gt;&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;&lt;br /&gt;b) това е друг под параграф:&lt;br /&gt;&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;&lt;br /&gt;2. Втора точка&lt;br /&gt;&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;този файл дори има и грешка при подточка а) :D &lt;br /&gt;Както виждате заглавието е обградено от горе и от долу със '=', което го прави голямо заглавие, подзаглавията, макар и че няма такива в този пример, са само подчертани. За заглавия и подзаглавия може да се използват всякакви знаци('#','@','=','$','-' и др.) Важното е заглавието да е покрито от началото си до края със еднаквите знаци от горе и от долу(няма да работи ако са по къси от заглавието, или ако имат различна дължина), а подзаглавията трябва да са подчертани.&lt;br /&gt;&lt;br /&gt;Както може би предполагате, точките и подточките са си част от Markup-а на езика и те дефинират подпараграфи и списъци. А самите параграфи са просто блокове от текст със празни пространства от горе и от долу. Блоковете с код са отместени на дясно, и на предния параграф има двойни двоеточия(::) които по късно стават на единична двоеточие(:). Сега вече знаете достатъчно reStructuredText за да пишете добри документи, &lt;a href="http://docutils.sourceforge.net/rst.html"&gt;за повече подробности посетете сайта им.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Сега, за да ги конвертирате в html или друг формат ви трябва някакъв инструмент, един от най добрите инструменти е &lt;a href="http://sphinx.pocoo.org/"&gt;Sphinx&lt;/a&gt;. Това е изключително мощен инструмент, с чиято помощ е генерирана документацията на &lt;a href="http://docs.python.org/"&gt;python&lt;/a&gt;. За моя скрипт аз използвах модула &lt;a href="http://docutils.sourceforge.net/"&gt;docutils&lt;/a&gt;. Ето скриптът:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="python"&gt;&lt;br /&gt;#!/usr/bin/env python&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;#convert a bunch of RestructuredText files to html&lt;br /&gt;#version 0.3.14&lt;br /&gt;&lt;br /&gt;from docutils.core import publish_string&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;def read_file(f):&lt;br /&gt;    """reads the file, returns a string"""&lt;br /&gt;    i=open(f,'r')&lt;br /&gt;    z=i.read()&lt;br /&gt;    i.close()&lt;br /&gt;    return z&lt;br /&gt;&lt;br /&gt;def converter(rst):&lt;br /&gt;    """turns the rst formated string in to html and returns is as a str"""&lt;br /&gt;    return publish_string(source=rst,writer_name='html')&lt;br /&gt;&lt;br /&gt;def write_to_file(name,content):&lt;br /&gt;    """writes the html string to a file"""&lt;br /&gt;    name=name[:-4]+'.html'  #turn .rst into .html&lt;br /&gt;    o=open(name,'w')&lt;br /&gt;    o.write(content)&lt;br /&gt;    o.close()&lt;br /&gt;&lt;br /&gt;if __name__=='__main__':&lt;br /&gt;    for f in sys.argv[1:]:&lt;br /&gt;        i=read_file(f)&lt;br /&gt;        i=converter(i)&lt;br /&gt;        write_to_file(name=f,content=i)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;ако искате да го използвате, просто го запишете в някакъв файл и му дайте права за изпълнение, и го стартирайте:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code"&gt;&lt;br /&gt;$./фяйл списък с файлове за конвертиране&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;всеки файл ще бъде конвертиран във съответния html файл със същото име(но различно разширение, от .rst на .html) Ето изходът от горния rest файл:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;br /&gt;&lt;?xml version="1.0" encoding="utf-8" ?&gt;&lt;br /&gt;&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&lt;br /&gt;&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;&lt;br /&gt;&lt;head&gt;&lt;br /&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;&lt;br /&gt;&lt;meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" /&gt;&lt;br /&gt;&lt;title&gt;Заглавие&lt;/title&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;:Author: David Goodger (goodger@python.org)&lt;br /&gt;:Id: $Id: html4css1.css 5196 2007-06-03 20:25:28Z wiemann $&lt;br /&gt;:Copyright: This stylesheet has been placed in the public domain.&lt;br /&gt;&lt;br /&gt;Default cascading style sheet for the HTML output of Docutils.&lt;br /&gt;&lt;br /&gt;See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to&lt;br /&gt;customize this style sheet.&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;/* used to remove borders from tables and images */&lt;br /&gt;.borderless, table.borderless td, table.borderless th {&lt;br /&gt;  border: 0 }&lt;br /&gt;&lt;br /&gt;table.borderless td, table.borderless th {&lt;br /&gt;  /* Override padding for "table.docutils td" with "! important".&lt;br /&gt;     The right padding separates the table cells. */&lt;br /&gt;  padding: 0 0.5em 0 0 ! important }&lt;br /&gt;&lt;br /&gt;.first {&lt;br /&gt;  /* Override more specific margin styles with "! important". */&lt;br /&gt;  margin-top: 0 ! important }&lt;br /&gt;&lt;br /&gt;.last, .with-subtitle {&lt;br /&gt;  margin-bottom: 0 ! important }&lt;br /&gt;&lt;br /&gt;.hidden {&lt;br /&gt;  display: none }&lt;br /&gt;&lt;br /&gt;a.toc-backref {&lt;br /&gt;  text-decoration: none ;&lt;br /&gt;  color: black }&lt;br /&gt;&lt;br /&gt;blockquote.epigraph {&lt;br /&gt;  margin: 2em 5em ; }&lt;br /&gt;&lt;br /&gt;dl.docutils dd {&lt;br /&gt;  margin-bottom: 0.5em }&lt;br /&gt;&lt;br /&gt;/* Uncomment (and remove this text!) to get bold-faced definition list terms&lt;br /&gt;dl.docutils dt {&lt;br /&gt;  font-weight: bold }&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;div.abstract {&lt;br /&gt;  margin: 2em 5em }&lt;br /&gt;&lt;br /&gt;div.abstract p.topic-title {&lt;br /&gt;  font-weight: bold ;&lt;br /&gt;  text-align: center }&lt;br /&gt;&lt;br /&gt;div.admonition, div.attention, div.caution, div.danger, div.error,&lt;br /&gt;div.hint, div.important, div.note, div.tip, div.warning {&lt;br /&gt;  margin: 2em ;&lt;br /&gt;  border: medium outset ;&lt;br /&gt;  padding: 1em }&lt;br /&gt;&lt;br /&gt;div.admonition p.admonition-title, div.hint p.admonition-title,&lt;br /&gt;div.important p.admonition-title, div.note p.admonition-title,&lt;br /&gt;div.tip p.admonition-title {&lt;br /&gt;  font-weight: bold ;&lt;br /&gt;  font-family: sans-serif }&lt;br /&gt;&lt;br /&gt;div.attention p.admonition-title, div.caution p.admonition-title,&lt;br /&gt;div.danger p.admonition-title, div.error p.admonition-title,&lt;br /&gt;div.warning p.admonition-title {&lt;br /&gt;  color: red ;&lt;br /&gt;  font-weight: bold ;&lt;br /&gt;  font-family: sans-serif }&lt;br /&gt;&lt;br /&gt;/* Uncomment (and remove this text!) to get reduced vertical space in&lt;br /&gt;   compound paragraphs.&lt;br /&gt;div.compound .compound-first, div.compound .compound-middle {&lt;br /&gt;  margin-bottom: 0.5em }&lt;br /&gt;&lt;br /&gt;div.compound .compound-last, div.compound .compound-middle {&lt;br /&gt;  margin-top: 0.5em }&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;div.dedication {&lt;br /&gt;  margin: 2em 5em ;&lt;br /&gt;  text-align: center ;&lt;br /&gt;  font-style: italic }&lt;br /&gt;&lt;br /&gt;div.dedication p.topic-title {&lt;br /&gt;  font-weight: bold ;&lt;br /&gt;  font-style: normal }&lt;br /&gt;&lt;br /&gt;div.figure {&lt;br /&gt;  margin-left: 2em ;&lt;br /&gt;  margin-right: 2em }&lt;br /&gt;&lt;br /&gt;div.footer, div.header {&lt;br /&gt;  clear: both;&lt;br /&gt;  font-size: smaller }&lt;br /&gt;&lt;br /&gt;div.line-block {&lt;br /&gt;  display: block ;&lt;br /&gt;  margin-top: 1em ;&lt;br /&gt;  margin-bottom: 1em }&lt;br /&gt;&lt;br /&gt;div.line-block div.line-block {&lt;br /&gt;  margin-top: 0 ;&lt;br /&gt;  margin-bottom: 0 ;&lt;br /&gt;  margin-left: 1.5em }&lt;br /&gt;&lt;br /&gt;div.sidebar {&lt;br /&gt;  margin: 0 0 0.5em 1em ;&lt;br /&gt;  border: medium outset ;&lt;br /&gt;  padding: 1em ;&lt;br /&gt;  background-color: #ffffee ;&lt;br /&gt;  width: 40% ;&lt;br /&gt;  float: right ;&lt;br /&gt;  clear: right }&lt;br /&gt;&lt;br /&gt;div.sidebar p.rubric {&lt;br /&gt;  font-family: sans-serif ;&lt;br /&gt;  font-size: medium }&lt;br /&gt;&lt;br /&gt;div.system-messages {&lt;br /&gt;  margin: 5em }&lt;br /&gt;&lt;br /&gt;div.system-messages h1 {&lt;br /&gt;  color: red }&lt;br /&gt;&lt;br /&gt;div.system-message {&lt;br /&gt;  border: medium outset ;&lt;br /&gt;  padding: 1em }&lt;br /&gt;&lt;br /&gt;div.system-message p.system-message-title {&lt;br /&gt;  color: red ;&lt;br /&gt;  font-weight: bold }&lt;br /&gt;&lt;br /&gt;div.topic {&lt;br /&gt;  margin: 2em }&lt;br /&gt;&lt;br /&gt;h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,&lt;br /&gt;h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {&lt;br /&gt;  margin-top: 0.4em }&lt;br /&gt;&lt;br /&gt;h1.title {&lt;br /&gt;  text-align: center }&lt;br /&gt;&lt;br /&gt;h2.subtitle {&lt;br /&gt;  text-align: center }&lt;br /&gt;&lt;br /&gt;hr.docutils {&lt;br /&gt;  width: 75% }&lt;br /&gt;&lt;br /&gt;img.align-left {&lt;br /&gt;  clear: left }&lt;br /&gt;&lt;br /&gt;img.align-right {&lt;br /&gt;  clear: right }&lt;br /&gt;&lt;br /&gt;ol.simple, ul.simple {&lt;br /&gt;  margin-bottom: 1em }&lt;br /&gt;&lt;br /&gt;ol.arabic {&lt;br /&gt;  list-style: decimal }&lt;br /&gt;&lt;br /&gt;ol.loweralpha {&lt;br /&gt;  list-style: lower-alpha }&lt;br /&gt;&lt;br /&gt;ol.upperalpha {&lt;br /&gt;  list-style: upper-alpha }&lt;br /&gt;&lt;br /&gt;ol.lowerroman {&lt;br /&gt;  list-style: lower-roman }&lt;br /&gt;&lt;br /&gt;ol.upperroman {&lt;br /&gt;  list-style: upper-roman }&lt;br /&gt;&lt;br /&gt;p.attribution {&lt;br /&gt;  text-align: right ;&lt;br /&gt;  margin-left: 50% }&lt;br /&gt;&lt;br /&gt;p.caption {&lt;br /&gt;  font-style: italic }&lt;br /&gt;&lt;br /&gt;p.credits {&lt;br /&gt;  font-style: italic ;&lt;br /&gt;  font-size: smaller }&lt;br /&gt;&lt;br /&gt;p.label {&lt;br /&gt;  white-space: nowrap }&lt;br /&gt;&lt;br /&gt;p.rubric {&lt;br /&gt;  font-weight: bold ;&lt;br /&gt;  font-size: larger ;&lt;br /&gt;  color: maroon ;&lt;br /&gt;  text-align: center }&lt;br /&gt;&lt;br /&gt;p.sidebar-title {&lt;br /&gt;  font-family: sans-serif ;&lt;br /&gt;  font-weight: bold ;&lt;br /&gt;  font-size: larger }&lt;br /&gt;&lt;br /&gt;p.sidebar-subtitle {&lt;br /&gt;  font-family: sans-serif ;&lt;br /&gt;  font-weight: bold }&lt;br /&gt;&lt;br /&gt;p.topic-title {&lt;br /&gt;  font-weight: bold }&lt;br /&gt;&lt;br /&gt;pre.address {&lt;br /&gt;  margin-bottom: 0 ;&lt;br /&gt;  margin-top: 0 ;&lt;br /&gt;  font-family: serif ;&lt;br /&gt;  font-size: 100% }&lt;br /&gt;&lt;br /&gt;pre.literal-block, pre.doctest-block {&lt;br /&gt;  margin-left: 2em ;&lt;br /&gt;  margin-right: 2em }&lt;br /&gt;&lt;br /&gt;span.classifier {&lt;br /&gt;  font-family: sans-serif ;&lt;br /&gt;  font-style: oblique }&lt;br /&gt;&lt;br /&gt;span.classifier-delimiter {&lt;br /&gt;  font-family: sans-serif ;&lt;br /&gt;  font-weight: bold }&lt;br /&gt;&lt;br /&gt;span.interpreted {&lt;br /&gt;  font-family: sans-serif }&lt;br /&gt;&lt;br /&gt;span.option {&lt;br /&gt;  white-space: nowrap }&lt;br /&gt;&lt;br /&gt;span.pre {&lt;br /&gt;  white-space: pre }&lt;br /&gt;&lt;br /&gt;span.problematic {&lt;br /&gt;  color: red }&lt;br /&gt;&lt;br /&gt;span.section-subtitle {&lt;br /&gt;  /* font-size relative to parent (h1..h6 element) */&lt;br /&gt;  font-size: 80% }&lt;br /&gt;&lt;br /&gt;table.citation {&lt;br /&gt;  border-left: solid 1px gray;&lt;br /&gt;  margin-left: 1px }&lt;br /&gt;&lt;br /&gt;table.docinfo {&lt;br /&gt;  margin: 2em 4em }&lt;br /&gt;&lt;br /&gt;table.docutils {&lt;br /&gt;  margin-top: 0.5em ;&lt;br /&gt;  margin-bottom: 0.5em }&lt;br /&gt;&lt;br /&gt;table.footnote {&lt;br /&gt;  border-left: solid 1px black;&lt;br /&gt;  margin-left: 1px }&lt;br /&gt;&lt;br /&gt;table.docutils td, table.docutils th,&lt;br /&gt;table.docinfo td, table.docinfo th {&lt;br /&gt;  padding-left: 0.5em ;&lt;br /&gt;  padding-right: 0.5em ;&lt;br /&gt;  vertical-align: top }&lt;br /&gt;&lt;br /&gt;table.docutils th.field-name, table.docinfo th.docinfo-name {&lt;br /&gt;  font-weight: bold ;&lt;br /&gt;  text-align: left ;&lt;br /&gt;  white-space: nowrap ;&lt;br /&gt;  padding-left: 0 }&lt;br /&gt;&lt;br /&gt;h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,&lt;br /&gt;h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {&lt;br /&gt;  font-size: 100% }&lt;br /&gt;&lt;br /&gt;ul.auto-toc {&lt;br /&gt;  list-style-type: none }&lt;br /&gt;&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;/head&gt;&lt;br /&gt;&lt;body&gt;&lt;br /&gt;&lt;div class="document" id="id1"&gt;&lt;br /&gt;&lt;h1 class="title"&gt;Заглавие&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol class="arabic simple"&gt;&lt;br /&gt;&lt;li&gt;Първа точка&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст:&lt;/p&gt;&lt;br /&gt;&lt;pre class="literal-block"&gt;&lt;br /&gt;def some_code(param):&lt;br /&gt;    for x in param:&lt;br /&gt;        do_someshit()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ol class="loweralpha simple"&gt;&lt;br /&gt;&lt;li&gt;това е под хараграф&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;/p&gt;&lt;br /&gt;&lt;ol class="loweralpha simple" start="2"&gt;&lt;br /&gt;&lt;li&gt;това е друг под параграф:&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;/p&gt;&lt;br /&gt;&lt;ol class="arabic simple" start="2"&gt;&lt;br /&gt;&lt;li&gt;Втора точка&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;br /&gt;Това е параграф, той е просто текст,Това е параграф, той е просто текст,&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/body&gt;&lt;br /&gt;&lt;/html&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Надявам се този пост да е бил полезен до някъде :D &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-6105674058717647452?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/6105674058717647452/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=6105674058717647452' title='1 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/6105674058717647452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/6105674058717647452'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/12/restructuredtext-html.html' title='reStructuredText към html. Скрипт.'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-8820995318608628651</id><published>2008-12-06T01:55:00.005+02:00</published><updated>2008-12-06T02:16:26.756+02:00</updated><title type='text'>"Трябва да намеря антидота"- гадна седмица без кофеин</title><content type='html'>Тази седмица си дадох малко почивка от кофеина, защото забелязах че вече не ми действа особено добре. Просто реших да го спра за известно време и да си върна нивата на аденозин в нормата, така че отново да съм продуктивен, без да трябва да се "дрогирам" с кафе и кола, а само да си пиивам от време на време, когато имам нужда.&lt;br /&gt;&lt;br /&gt;Това доведе до една кофти седмица, всеки който е пристрастен физически към нещо(кафе, цигари, хероин) ще ви каже че ако спрете веществото към което сте привикнали изведнъж, ще се чувствате гадно. В моя случай симптомите на абстиненция включваха главоболие, умора, трудност при концентриране, раздразнителност и режимът се скапа, вместо 8 почнах да ставам в 11 и вместо в 3 почнах да си лягам в 8, и после да ставам посред нощ и да си лягам в 4. Не че и преди не съм бил така, но обикновенно е било планирано и съм бил в контрол, сега просто заспивам на клавиатурата в 7:30 вечерта.&lt;br /&gt;&lt;br /&gt;Като следствие от това, можете да се сетите че тази седмица не свърших почи нищо полезно от нещата които си бях планирал. Намерих време да работя по един доста интересен програмистки пъзел(за който ще блогвам някой ден), но освен тези 3 часа, тази седмица си беше непродуктивна. Опитах да седна и да чета, но общо взето просто ми се доспиваше, или главата ме болеше прекалено много за да мога да свърша каквото и да било.&lt;br /&gt;&lt;br /&gt;Днес най накрая започнах да се чувствам по добре, благодарение на факта че пикът на абстиненцията, вчера, отмина, а и също така започнах да вдигам гирите от из под леглото ми и това определено помага да не полудея. Утре ако е хубаво времето може и да се кача на платото(Шуменското) и да побягам, това определено ще помогне.&lt;br /&gt;&lt;br /&gt;Оставям ви със един от класическите дилбърт комикси:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.energyfiend.com/wp-content/dil.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 385px; height: 133px;" src="http://www.energyfiend.com/wp-content/dil.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.energyfiend.com/wp-content/dil.gif"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-8820995318608628651?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/8820995318608628651/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=8820995318608628651' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/8820995318608628651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/8820995318608628651'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/12/blog-post_06.html' title='&quot;Трябва да намеря антидота&quot;- гадна седмица без кофеин'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-9167205220291607679</id><published>2008-12-02T22:12:00.002+02:00</published><updated>2008-12-02T22:39:23.358+02:00</updated><title type='text'>Типичен случаен блог пост, от типичен случаен блог</title><content type='html'>&lt;span style="color: rgb(255, 102, 102);"&gt;Внимание, това е случаен пост, написан от нестабилен човек, който забрави да редактира написаното, и да го провери за грежки и др. и от мързел просто добави това.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Днес вместо типичните 3 изпих само 2 кафета, едно сутрин и едно на обяд, заради сривът ми вечерта около 8 снощи, при който заспах пред компютъра за 1 час, когато се събудих, видях че съм си сложил възглавничка на бюрото, странното е че не си спомням. След като се събудих, вечерях и си легнах, малко преди това пуснах един туит(звучи тъпо на англииски и още по тъпо на български): http://twitter.com/pavelludiq/status/1032850787&lt;br /&gt;&lt;br /&gt;Поради това че нивата на аденозин в мозака ми са супер повишени, заради прекомерната употреба на кафе и кола, и заради намалената ми доза днес, този пост ще е случаен. Виждате ги постоянно в &lt;a href="http://svejo.net/"&gt;svejo.net&lt;/a&gt;. Нищо особено, проосто някой си пуска тъпи снимки в блога, които всеки който сърфира в нета повече от половин час на ден, по дълго от няколко години, е виждал. Или блог тип дневник, тези са най дразнещи, въпреки това всеки блогър, включително и аз го прави! Кво ми пука кво си праил днеска, ако е нещо което ще забравиш след 2 дни, най добре не го споделяй! Или тъпите постове тип "Образовай се мухльо", които вземат някъква концепция или термин за който блогърът е чувал и е прочел някъде нещо, и е решил да сподели знанието. За това престъпление против блогосферата съм виновен и аз, разбира се, ако погледнете последните ми 4 поста, те са точно нещата които не бих чел, най лошото за тях е че са разделени на 4 части, за да имам повече трафик в статистиката ми. Хитро а? Мразя сайтове които разделят статиите си на части, и още повече мразя блогове които го правят със отделни постове, разделени помежду им с определен интервал от време, понякога доста дълъг, със жалката цел да привлекът вниманието ви по 2 начина:&lt;br /&gt;&lt;br /&gt;1-во след като видите едно заглавие повече от 1-2 пъти в svejo, подсъзнанието ви се адаптира към това и любопитството надделява при някой хора, това разбира се означава повече трафик за мен(гарантирам ви че работи, миналага седмица беше почти рекордна)&lt;br /&gt;2-ро гради суспенс, очаквате нещо, нямате търпение да дойде утрешния ден за да прочетете още следвнащия пост. Това разбира се има и страничен ефект, свързан с първото, когато влезете повече от 1-2 пъти в даден блог, го запомняте, макар и бегло, и може да се върнете, или ако се върнете, някой ден може да прочетете и по стари постове, просто от любопитство.&lt;br /&gt;&lt;br /&gt;След като обясних защо заслужавам линчуване, или диплома по маркетинг, зависи от гледната точка, нека продължа на татък.&lt;br /&gt;&lt;br /&gt;Философските блог постове, о буда, и ти света майко на пресветия собственик на РАЯ И ЗЕМЯТА АД(АД-акционерно дружество, майтап, за по бавните от вас), колко мразя този тип постове. Случайно и този който четете е от тях. Някакъв случаен човек пише и разсъждава за случайни теми свързани с нашето ежедневие, начин на живот, емоционално и морално здраве и общо взето все познатата ни дървена философия.&lt;br /&gt;&lt;br /&gt;Следват разбира се политическите публикации, тук ще кажа само че не чета такива, а само кликвам на линковете на някой от по интересните, защото аз кликвам на много слуайни линкове, които не чета по късно, защото съм хроничен прокрастинатор, който не е пил кафе този слетобед и тази вечер е супер сънен и пише блог.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ето и последния вид блогове, тези които пускат линкове към тъпи клипове в нета:&lt;br /&gt;&lt;br /&gt;Diarrhea pockets cooool:&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/jOSd9T6_04A&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/jOSd9T6_04A&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-9167205220291607679?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/9167205220291607679/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=9167205220291607679' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/9167205220291607679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/9167205220291607679'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/12/blog-post.html' title='Типичен случаен блог пост, от типичен случаен блог'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-472188048776076641</id><published>2008-11-28T20:37:00.003+02:00</published><updated>2008-11-28T20:41:48.933+02:00</updated><title type='text'>Прокрастинация. Опити за контра-атака към мързелът. Част 4(финал)</title><content type='html'>Това е последната част. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Стратегии за решаване на проблема&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В предишния пост дефинирах проблемът. Сега ще се опитам да намеря решение. &lt;br /&gt;&lt;br /&gt;Първото което трябва да направя, е да премахна възможно най много ненужни неща от дневния ми режим, за даскалото не мога почти нищо да направя, но имам списък с дребни задачи, които трябва да се свършат. Ако ги компресирам и ги свърша преди обяд, това ще ми остави малко време за прокрастинация сутринта, и поне стаята ми ще е чиста. Хубавото за тези to-do списъци  е че можеш да ги отлагаш, но и можеш да ги свършиш бързо, стига да не си отлагал прекалено много.&lt;br /&gt;&lt;br /&gt;Основния проблем с прокрастинацията е че съм пристрастен към нея. Изпитвам нужда са си пусна музика и просто да си блея и да оставя мозъкът ми да се лута из пространството. Същото важи и за блогосферата. Освен че това е вредно, в смисъл че вреди на продуктивността ми, е и полезно, защото най добрите ми идеи идват в тези моменти когато не ги очаквам.&lt;br /&gt;&lt;br /&gt;Както всяка друга зависимост, тези могат да бъдат овладени със строга дисциплина, но както споменах в предишния пост, това не е моята цел. За целта ще използвам само малко дисциплина за да намаля зависимостта ми от тях. &lt;br /&gt;&lt;br /&gt;В крайна сметка в началото ще е трудно да се концентрирам за дълго време, но ако погледнем логически на нещата, ако прекарам достатъчно дълго време в концентрирано състояние, мозакът ми ще привикне и няма да е толкова проблемно, в същото време ще привикне и на по малки "дози" прокрастинация, но напълно достатъчни за да балансират деня ми. &lt;br /&gt;&lt;br /&gt;Да погледнем например следния сценарии: докато си сърфирам ми хрумва идея, и първата ми работа е да си я запиша, за да я свърша по късно, след като свърша другите неща на дългия ми списък, който не чета. Ако идеята е много интересна, може да я започна още на момента, но обикновено със започването, firefox остава отворен и си сърфирам паралелно, като прескачам от едната на другата задача. Ако свърша нещо, обикновено сейвам за да довърша по късно, и обикновено не отварям отново задачата на същия ден. Идеята е сега да мога да стартирам дадена задача и да мога да работя само върху нея за определен интервал от време. Това ще стане чрез изключване на нета и колонките ми. Въпреки че е груб хак, този трик би трябвало да свърши работа(всички тези постове са написани за 3 часа прекарани без нет). &lt;br /&gt;&lt;br /&gt;Макар и да е трудно, това има ефект и помага. Определено изпитвам нуждата да си отворя браузарът, или най малкото да се разходя из стаята докато слушам музика, но не бива да се разконцентрирам, и за това се напъвам да изкарам още малко. Въпросът е обаче, кога ще си изключвам кабела? Очевидно е че много често просто ще ме домързи да го правя, но се надявам с времето да няма нужда от това. Последните 3 часа не бяха толкова зле, и съм сигурен че си заслужих следващите 4 часа уеб комикси(завърших това в 23ч).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-472188048776076641?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/472188048776076641/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=472188048776076641' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/472188048776076641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/472188048776076641'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/11/4.html' title='Прокрастинация. Опити за контра-атака към мързелът. Част 4(финал)'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-3948521026437887884</id><published>2008-11-27T19:45:00.002+02:00</published><updated>2008-11-27T19:51:18.825+02:00</updated><title type='text'>Прокрастинация. Опити за контра-атака към мързелът. Част 3</title><content type='html'>Днес ще направя малко анализ на сегашното ми поведение:&lt;br /&gt;&lt;br /&gt;От първия пост:&lt;br /&gt;&lt;br /&gt;"Ставам към 8-9, правя си кафе, ям баничка за закуска с кафето, отварям Firefox и преглеждам комиксите които следя докато закусвам. Като свърша преглеждам блоговете които следя. Като свърша преглеждам социалните новинарски сайтове които следя(Hacker News, Reddit) и чета почти всичко което сметна за интересно. След това преглеждам видеотата в Youtube от каналите към които съм субскрайбнът, след това обядвам(не винаги) и отивам на даскало към обяд. В даскало тъпея 7 часа, защото уча английски, литература и история от 12 години и малко ми омръзна(особено английския). След това вечерта обикновено изигравам една-две бързи партии на шах срещу компютъра ми, или играя малко Starcraft или lock on. След това ребуутвам отново в линукс и преглеждам блогосферата отново по гореописания начин, проверявам групите ми в гугъл, мейлинг листите в които съм записан и след това блогосферата отново, след това отново блогосферата и пак комикси до 2-3 часа сутринта. По добре е от нищо нали :D. "&lt;br /&gt;&lt;br /&gt;За мен е ясно че най много време губя във сърфирането и слушането на музика по цял ден. На второ място са игрите които играя. Общо взето ето как изглежда рамката на деня ми:&lt;br /&gt;&lt;br /&gt;9ч. ставам&lt;br /&gt;между 9ч и 12ч имам 3 свободни часа, част от които губя.&lt;br /&gt;Между 12ч и 19ч имам 7 часа в даскало(или на път от и към даскало) в които не правя нищо полезно.&lt;br /&gt;От 19ч до 3ч сутринта имам 8 часа, които могат да се използват пълноценно.&lt;br /&gt;&lt;br /&gt;Да дефинираме ясно проблемът, имайки предвид данните. Трите часа сутринта са почти безполезни, защото ги използвам за закуска(понякога и обяд) и други приготовления за даскало, а и дори да бяха напълно свободни, са прекалено малък интервал за сериозна работа.&lt;br /&gt;&lt;br /&gt;Времето прекарано в даскало е загубено, въпреки че си нося книги и други материали с които да се занимавам по време на някой от по скучните часове, в този период просто продуктивността ми е ограничена. За сметка на това там ми идват добри идеи, за това си нося тефтерче за да ги записвам.&lt;br /&gt;&lt;br /&gt;Вечерта е интересното време. Това време има потенциал.&lt;br /&gt;&lt;br /&gt;След дълги размишления, осъзнах проблемът ми в неговата цялост. Имам проблем с концентрацията. Години на използване на Интернет и преди това години на гледане на телевизия са оптимизирали мозъкът ми за бързото сортиране на информация. Моето желание е просто да мога да седна и да върша нещо полезно с часове наред, без да почувствам нужда да проверя имейла ми, или да прегледам новините. Това което НЕ искам е да се боря с прокрастинацията ми. Въпреки че съм пристрастен към интернета, не искам да се боря, просто искам да се фокусирам по добре върху нещата които искам да правя. Искам да мога да седна и да чета книга, и да прочета повече от 10 страници на веднъж, искам да седна и да почна да пиша код, без да отварям firefox за да се разсейвам, искам да седна и да напиша някой блог пост, без да се боря със нуждата ми да си губя времето.&lt;br /&gt;&lt;br /&gt;Имам нужда от прокрастинацията, за да върша работата си. Имам нужда да си губя времето и съзнанието ми да се лута безцелно на посоки. Тази хаотичност ми дава много идеи, някой от тях добри. Ако не бях мързелив, много от идеите ми нямаше да ги има. Тази хаотичност е определяща за личността ми. Но искам и да мога да върша работа. Както се казва на английски: "Get shit done".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Утре ще напиша разсъжденията относно възможните решения на проблема. Въпреки че вече го написах още вторник, може и да го пренапиша още веднъж за утре, или просто да го удължа.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-3948521026437887884?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/3948521026437887884/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=3948521026437887884' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/3948521026437887884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/3948521026437887884'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/11/3.html' title='Прокрастинация. Опити за контра-атака към мързелът. Част 3'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-1020309821107561565</id><published>2008-11-26T18:34:00.003+02:00</published><updated>2008-11-26T18:40:05.035+02:00</updated><title type='text'>Прокрастинация. Опити за контра-атака към мързелът. Част 2</title><content type='html'>Втора част, днес ще говоря за двата вида задачи с които се сблъсквам.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Дребните задачи:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Съществуват 2 вида задачи, малки и бързи, и големи и трудни. Малките и бързи обикновено стават за няколко часа и не изискват много концентрация(както разказът ми от предишния пост). Големите и трудни изискват много време и концентрация.&lt;br /&gt;&lt;br /&gt;Имам много такива "дребни задачи", които трябва да свърша. Те се трупат, и аз все отлагам, или разтягам тяхното извършване във времето, мислейки си "поне съм ги започнал, не е като да не правя нищо". Да ама аз наистина не правя нищо.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;To-do списъци:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Тези неща не са особено полезни. Имат и своите положителни и отрицателни страни. Да речем че имате един куп неща за правене и ги компилирате в удобен To-do списък, тези задачи могат да бъдат или бързи и лесни, т.е. Можете да минете през списъкът за няколко часа или по малко, например "изхвърли боклука", или могат да бъдат съставени от няколко ясни и големи задачи, като например задача от типа на "Реши проблема си с прокрастинацията. По мое мнение този тип списъци биха били удобни за краткосрочни и малки задачи, но не особено полезни при големите, причината е че ако имате големи цели, е добра идея да имате и гъвкавост, докато дребните задачи можете да решите бързо, само ви трябва малко мотивация. Проблемът с тези малки списъци е че те никога не остават празни.Прокрастинация-2&lt;br /&gt;&lt;br /&gt;Вероятно свойството на тези задачи, да се натрупват, е причина да не са толкова приятни за вършене. Когато трябва да измиеш чиниите, желанието ти да не го направиш е достатъчно слабо че да може да го игнорираш, но когато трябва да измиеш чиниите и да изхвърлиш боклука, и още един куп други неща, желанието ти да решиш всички тези проблеми един по един намалява. Ето защо колкото по дълъг е списъкът, толкова по гадно е изпълнението му, и шишетата се натрупват(в момента са 18 празни бутилки в стаята ми).&lt;br /&gt;&lt;br /&gt;Всеки сам за себе си може да открие някакъв трик с който да се накара да премине през неговия списък. В по-нататъшен пост ще коментирам начините за борба с тези проблеми, които работят при мен.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Големи и трудни задачи:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В миналия пост коментирах дребните и досадни задачи, които просто трябва да свършите. Хубавото при мен е че те са малко, и могат да се свършат бързо, въпрос е само на малко дисциплина. За сметка на това обаче, списъкът ми с големи задачи е огромен. В него има задачи от естеството на "Прочети книга X", "Напиши дълго есе за прокрастинацията","Спри глобалното затопляне","Спаси косатките от изчезване" и др. Този списък е доста по труден, не просто заради трудността на задачите, проблемът идва от това да започнеш, и да продължиш да правиш нещо за дълги периоди от време(повече от няколко часа). Такава дейност е програмирането, и до сега не съм седял пред редактора повече от 2 часа без да отворя файърфокс и да си пусна youtube. Очевидно е че имам проблем с концентрацията за дълъг период от време, именно това се опитвам да реша, двата проблема са А)"Започни да работиш" и Б)"Продължи да работиш", вече C)"Завърши проекта" е нещо което я стане, я не. Понякога е дори по добре да не завършите нещо, и просто да убиете проекта, понякога е по добре и просто да не започвате нещо. За тази гъвкавост говорех, когато казах че To-do списъците не са особено полезни за подобен род задачи. За сметка на това обаче, можете да ги използвате за вътрешна организация на проекта. Един от най често срещаните съвети при проблемна прокрастинация сред програмистите е просто да разделиш проблема на малки под-проблеми, които да може да свършиш бързо и един по един, както правиш с дребните задачи. Това не е подходящо за всякакъв вид дейности, но е един трик повече в арсенала ви против прокрастинацията.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Очаквайте утре(евентуално) анализ на сегашния ми начин на работа, и разсъждения върху недостатъците му.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-1020309821107561565?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/1020309821107561565/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=1020309821107561565' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/1020309821107561565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/1020309821107561565'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/11/2.html' title='Прокрастинация. Опити за контра-атака към мързелът. Част 2'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-5177673007908103251</id><published>2008-11-25T21:52:00.004+02:00</published><updated>2008-11-27T21:25:18.274+02:00</updated><title type='text'>Прокрастинация. Опити за контра-атака към мързелът. Част 1</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Въведение&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Прокрастинация означава вършене на някаква незначителна дейност, или отлагане извършването на някаква друга дейност. Да речем ако четеш този блог, вместо да учиш за утрешния тест, това е прокрастинация. Поул Греам(да, той е писал за всичко) е написал страхотно есе(дори 2) на темата. Good and bad procrastination и Disconecting distraction. Той определя 2 вида прокрастинация добра и лоша. Лошата е ясна, имаш важна работа, но вместо това не вършиш нищо, или вършиш нещо не особено полезно(като да четеш блога ми например). Полезната прокрастинация е когато вършиш нещо важно, но игнорираш други по маловажни неща, които трябва да се свършат, например работиш върху нещо(тъй като това е програмистки блог, да речем че е програма) и си толкова фокусиран, че не си се бръснал от седмици, купчината с чинии в стаята ти расте и имаш 20 бутилки от кола на шкафа ти, чакащи те да ги изхвърлиш. Поул твърди че вместо да се борим с прокрастинацията, по добра идея е да максимизираме добрата прокрастинация, и да минимизираме лошата.&lt;br /&gt;&lt;br /&gt;В тази серия от постове, ще разсъждавам по темата. Постовете представляват разделено на части есе. Причината поради която е разделено е че ако сте прокрастинатори, най вероятно няма да го прочетете цялото.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Основно описание на проблема:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Самия аз съм ужасен прокрастинатор. Дори мисля че съм блогвал за това. Малко самооргранизация би трябвало да реши проблема, да ама не. Проблемът има дълбок психологически корен, и не винаги е проблем, понякога е ефективна защита против вършенето на ненужни неща.&lt;br /&gt;&lt;br /&gt;Отне ми 2 месеца да си подам документите за шофьорската книжка. 3 седмици се мотах докато отида да се запиша на курс в БЧК за първа помощ, после 1 седмица чаках, после 1 седмица ме домързя да си потърся дипломата от 9-ти клас, после още толкова отлагах медицински преглед и накрая 2 седмици се чудих кога ще ми е удобно да отида да си подам документите. Разбира се много обичам да вися по гишетата и да се занимавам с българската бюрокрация, и явно заради това подсъзнанието ми(в някой случаи и съзнанието) отлагаше целия процес.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ето как минава денят ми:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ставам към 8-9, правя си кафе, ям баничка за закуска с кафето, отварям Firefox и преглеждам комиксите които следя докато закусвам. Като свърша преглеждам блоговете които следя. Като свърша преглеждам социалните новинарски сайтове които следя(Hacker News, Reddit) и чета почти всичко което сметна за интересно. След това преглеждам видеотата в Youtube от каналите към които съм субскрайбнът, след това обядвам(не винаги) и отивам на даскало към обяд. След това вечерта обикновено изигравам една-две бързи партии на шах срещу компютъра ми, или играя малко Starcraft или lock on. След това ребуутвам отново в линукс и преглеждам блогосферата, отново по гореописания начин, проверявам групите ми в гугъл, мейлинг листите в които съм записан и след това блогосферата отново, след това отново блогосферата и пак комикси до 2-3 часа сутринта. По добре е от нищо нали :D.&lt;br /&gt;&lt;br /&gt;Това е общо взето описанието на проблема. Утре(или ако ме домързи, в други ден) очаквайте следващия пост, в който ще говоря за дребните и скучни задачи.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-5177673007908103251?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/5177673007908103251/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=5177673007908103251' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5177673007908103251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5177673007908103251'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/11/1.html' title='Прокрастинация. Опити за контра-атака към мързелът. Част 1'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-452797176794180564</id><published>2008-11-20T00:28:00.002+02:00</published><updated>2008-11-20T00:43:03.437+02:00</updated><title type='text'>Маймунизаторски скрипт</title><content type='html'>Един приятел ме помоли да напиша програма която да превежда кирилица на език от рисунки, като за всяка буква има съответната рисунка. Понеже още не ми е дал самите рисунки и другите детайли които ми трябват, не мога да започна работа. Но понеже нямах какво да правя начатках този бърз скрипт, написан на python3.0, защото имах проблем с unicode-а при 2.5, поради unicode проблеми, все още не мога да си инсталирам и python2.6, но все тая. Ето скрипта, който превръща кирилица в латиница:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="python"&gt;&lt;br /&gt;#!/usr/bin/env python&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;letters={&lt;br /&gt;        "а":"a","б":"b","в":"v","г":"g","д":"d","е":"e","ж":"j","з":"z",&lt;br /&gt;        "и":"i","й":"i","к":"k","л":"l","м":"m","н":"n","о":"o","п":"p",&lt;br /&gt;        "р":"r","с":"s","т":"t","у":"u","ф":"f","х":"h","ц":"c","ч":"ch",&lt;br /&gt;        "ш":"sh","щ":"sht","ъ":"a","ь":"","ю":"ju","я":"ja","А":"A",&lt;br /&gt;        "Б":"B","В":"V","Г":"G","Д":"D","Е":"E","Ж":"J","З":"Z","И":"I",&lt;br /&gt;        "Й":"J","К":"K","Л":"L","М":"M","Н":"N","О":"O","П":"P","Р":"R",&lt;br /&gt;        "С":"S","Т":"T","У":"U","Ф":"F","Х":"H","Ц":"C","Ч":"Ch","Ш":"Sh",&lt;br /&gt;        "Щ":"Sht","Ъ":"A","Ь":"","Ю":"Ju","Я":"Ja"}&lt;br /&gt;&lt;br /&gt;def parse(inp):&lt;br /&gt;    inp.split(" ")&lt;br /&gt;    for word in inp:&lt;br /&gt;        yield word&lt;br /&gt;&lt;br /&gt;def translate(word):&lt;br /&gt;    newd=""&lt;br /&gt;    for char in word:&lt;br /&gt;        if char in letters.keys():&lt;br /&gt;            newd=newd+letters[char]&lt;br /&gt;        else:&lt;br /&gt;            newd=newd+char&lt;br /&gt;    return newd&lt;br /&gt;&lt;br /&gt;def main():&lt;br /&gt;    inp=open(sys.argv[1])&lt;br /&gt;    output=''&lt;br /&gt;    for x in [translate(word) for word in parse(inp.read())]:&lt;br /&gt;        output+=x&lt;br /&gt;    print(output)&lt;br /&gt;&lt;br /&gt;if __name__=="__main__":&lt;br /&gt;    main()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;А що се отнася до програмата която трябва да се занимава с изображенията, най вероятно ще използвам &lt;a href="http://www.pythonware.com/products/pil/"&gt;PIL&lt;/a&gt;, проблемът е че PIL още няма потдръжка за python3.0 и за това ще трябва или да разбера от къде ми идва проблема с уникода при 2.5 или да търся начин да хакна горния скрипт, така че да вика python2.5 и да му подава латинизирания текст, така че да може да се направят изображенията. С други думи преебан съм.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-452797176794180564?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/452797176794180564/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=452797176794180564' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/452797176794180564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/452797176794180564'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/11/blog-post_20.html' title='Маймунизаторски скрипт'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-4989452955192468326</id><published>2008-11-15T17:09:00.006+02:00</published><updated>2008-11-15T18:11:19.906+02:00</updated><title type='text'>Как използвам линукс?</title><content type='html'>Попадайки на тази интересна статия &lt;a href="http://www.tbray.org/ongoing/When/200x/2008/11/12/How-I-Use-OS-X"&gt;How I Use My Mac&lt;/a&gt; и отговорът към нея How &lt;a href="http://nullisnotanobject.com/2008/11/how-i-use-my-dell/"&gt;I Use My Dell&lt;/a&gt; реших да напиша нещо подобно, но понеже нямам лаптоп от известна марка(все още, аз съм от dell феновете) реших да пиша за линукс десктопа ми. &lt;br /&gt;&lt;br /&gt;ХАРДУЕР&lt;br /&gt;&lt;br /&gt;Машината ми е прилична intel pentium 4 3.4 Ghz клокнат до 3.6, 1gb рам и една доста скапана видео карта, която трябва да сменя скоро(nvidia 7300 LE). Мониторът е 17 инчов LG и ми е малък вече, трябва да си взема нещо с по голям цолаж. Когато си го взех беше доста мощен, но така е, след две години ще мога да го разменя за зарядно за телефон и ще мога да се фукам че съм направил супер зделка.&lt;br /&gt;&lt;br /&gt;ОПЕРАЦИОННА СИСТЕМА&lt;br /&gt;&lt;br /&gt;Kubuntu 8.04, 8.10 се оказа доста бъгаво, за това се върнах към доброто старо KDE3 и hardy heron. ще чакаме 9.04. &lt;br /&gt;&lt;br /&gt;БЕКЪП&lt;br /&gt;&lt;br /&gt;Повечето от по важните ми неща са текстови файлове и музика. Музиката ми е на отделен партишън, защото е трудно да я възтановяваш от дискове(40 гб), текстовите файлове ги съхранявам със една програма на име &lt;a href="https://www.getdropbox.com/"&gt;dropbox&lt;/a&gt;. Тази програма създава една папка dropbox и я синхронизира между онлайн папката ви(2гб) и другите ви машини свързани с акаунта ви. Доста е удобно за бекъп на малки файлове, използвам го и за прехвърляне на файлове от уйндолс на линукс без да трябва да маунтвам линукс партишъните ми под уйндолс, защото съм патил от това. Линукс версията е просто nautilus плъг-ин, което означава че трябваше да го инсталирам(ъх гаден gnome интерфейс), но не е проблем, ако можете да толерирате gnome библиотеките които трябва да се инсталират със тая програма. Хубавото е че поне интерфейса и е open source така че някой някой ден ще може да направи KDE версия. &lt;br /&gt;&lt;br /&gt;ДЕСКТОП&lt;br /&gt;&lt;br /&gt;ето скрииншот:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://farm4.static.flickr.com/3270/3031426043_dee6f5fb7e_o.png"&gt;&lt;img src="http://farm4.static.flickr.com/3270/3031426043_d2c3e0bf61_m.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Първото което виждате е УОУпейпъра Debian разбира се, нищо че ползвам кубунту, дебиян е върхът. А и този уоупейпър е як защото е светъл и както виждате долния ми панел е прозрачен, и ако фона беше тъмен нямаше да мога да чета имената на прозорците. Също така използвам иконите &lt;a href="http://www.everaldo.com/crystal/"&gt;crystal project&lt;/a&gt; и са едни от най красивите които съм виждал. &lt;br /&gt;&lt;br /&gt;Виждате че имам 8 десктопа от които използвам само 4-6 макс, това е така защото ако имах 6 редовете нямаше да са в пропорция 1 към 2 и нямаше да е толкова красиво :D Самия ми панел както казах е прозрачен и е с размери 90% от широчината на екрана и е висок 40 пиксела, което е по малко от настройките на кубунту, не обичам да пилея вертикално пространстро(па дори и 14 пиксела).&lt;br /&gt;&lt;br /&gt;Софтуер. Освен Firefox, amarok, ktorrent, kaffeine и okular май не ползвам други десктоп програми, повечето ми работа е във firefox, okular и в конзолата.&lt;br /&gt;&lt;br /&gt;ТЕРМИНАЛ&lt;br /&gt;&lt;br /&gt;В конзолата използвам най вече vim и python интерпретатора, за python няма да говоря, но ето vimrc файла ми:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="cpp"&gt;&lt;br /&gt;"spaces when tab is pressed:&lt;br /&gt;set expandtab&lt;br /&gt;" do not break lines when line lenght increases&lt;br /&gt;set textwidth=0&lt;br /&gt;" user 4 spaces to represent a tab&lt;br /&gt;set tabstop=4&lt;br /&gt;set softtabstop=4&lt;br /&gt;" number of space to use for auto indent&lt;br /&gt;" you can use &gt;&gt; or &lt;&lt; keys to indent current &lt;br /&gt;" line or selection&lt;br /&gt;" in normal mode.&lt;br /&gt;set shiftwidth=4&lt;br /&gt;" Copy indent from current line when starting &lt;br /&gt;" a new line.&lt;br /&gt;set autoindent&lt;br /&gt;" makes backspace key more powerful.&lt;br /&gt;set backspace=indent,eol,start&lt;br /&gt;" shows the match while typing&lt;br /&gt;set incsearch&lt;br /&gt;" case insensitive search&lt;br /&gt;set ignorecase&lt;br /&gt;" show line and column number&lt;br /&gt;set ruler&lt;br /&gt;" show some autocomplete options in status bar&lt;br /&gt;set wildmenu&lt;br /&gt;"show line numbers&lt;br /&gt;set number&lt;br /&gt;" share clipboard with windows clipboard&lt;br /&gt;set clipboard+=unnamed&lt;br /&gt;" minibufexplorer settings:j&lt;br /&gt;let g:miniBufExplMapWindowNavArrows = 1&lt;br /&gt;let g:miniBufExplMapCTabSwitchWindows = 1&lt;br /&gt;&lt;br /&gt;"autoread chaneged files (me)&lt;br /&gt;set autoread&lt;br /&gt;set background=dark&lt;br /&gt;colorscheme torte&lt;br /&gt;syntax on&lt;br /&gt;&lt;br /&gt;"indent plugin&lt;br /&gt;filetype indent on " load indent.vim&lt;br /&gt;&lt;br /&gt;" this turns on hlsearch, but clears the &lt;br /&gt;" highlighting when Enter is hit&lt;br /&gt;" show a menu of matches when doing completion&lt;br /&gt;set wildmenu &lt;br /&gt;" highlight the current search pattern&lt;br /&gt;set hlsearch &lt;br /&gt;" shows the current filename and path &lt;br /&gt;" in the term title.&lt;br /&gt;set title &lt;br /&gt;" in normal mode enter clears search highlight&lt;br /&gt;nnoremap &lt;silent&gt;&lt;CR&gt; :nohlsearch&lt;CR&gt;&lt;CR&gt; &lt;br /&gt;if version &gt;= 700&lt;br /&gt;    "set cusorline " highlight the line with the cursor&lt;br /&gt;    set numberwidth=4 " width of line numbers&lt;br /&gt;endif&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ето и скриин:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://farm4.static.flickr.com/3274/3031489985_6226b89a19_o.png"&gt;&lt;img src="http://farm4.static.flickr.com/3274/3031489985_be75f4246e_m.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Това е за сега Thththats all folks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-4989452955192468326?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/4989452955192468326/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=4989452955192468326' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/4989452955192468326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/4989452955192468326'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/11/blog-post_15.html' title='Как използвам линукс?'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3270/3031426043_d2c3e0bf61_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-2385147924762597006</id><published>2008-11-12T19:26:00.002+02:00</published><updated>2008-11-12T20:18:45.150+02:00</updated><title type='text'>Спрете IE6</title><content type='html'>Може би се досещате от характера на постовете ми че не съм особен фен на microsoft, въпреки това вече преминах през вманиачените си "анти" тинейджърски години и съм доста по толерантен, що се отнася до потребителските технологии. В последните години Майкрософт загубиха много от властта си, благодарение на уеб технологиите и нарастващата популярност на ubuntu и MacOSX. Но все още живеем в сянката на Internet Explorer 6. Причината е че браузърът е една от най важните програми в днешно време, но много хора още използват остарелия IE6, а той е на 7 години! Точно така, 7 годишна дупка между интернетът за който е създаден и интернетът който е днес. Преди 7 години Майкрософт бяха всевишни и можеха да си позволят да пробутат продукт като IE6, защото те диктуваха правилата, днес технологичния свят е много по децентрализиран и е пълно с алтернативи на всичко, но защо IE6 още съществува? Две причини:&lt;br /&gt;&lt;br /&gt;1)Потребителите не го ъпдейтват. Не бихме могли да им се сърдим, по скоро трябва да ги съжаляваме. Тези хора се свързват проблемите си със сигурността със факта че използват остаряла технология. Те не са длъжни да разбират това, те са просто хора, невежи, но хора със живот. Ако не виждат полза, няма да ъпдейтнат браузърът си до 7-ма версия, и със сигурност няма да си го сменят със някой по добър. Това е подхранено и от провала на Виста, тази операционна система може да не е много по добра от ХП, но поне идва със IE7, което си е напредък.&lt;br /&gt;&lt;br /&gt;2)Сайтовете го поддържат. Това също е разбираемо, защото ако не го поддържат, губят много потребители и съответно приходи. Радвам се че 60% от посетителите на този блог ползват firefox и само 25% IE, от тези 25, половината са със IE6, което е доста малко, но ако сайта ви има милиони посетители, ситуацията е различна, това са хиляди изгубени потребители, а като добавим и факта че блога ми не привлича толкова много типични IE6 потребители, за един комерсиален сайт ситуацията е съвсем различна.&lt;br /&gt;&lt;br /&gt;Това е неспирен цикъл, от една страна потребителите няма да сменят браузърът си без причина, от друга страна сайтовете няма да им я дадат, защото те самите губят, въпреки че поддръжката на IE6 вероятно им струва доста усилия, особено ако използват доста от по модерните уеб технологии. &lt;br /&gt;&lt;br /&gt;Опит да намерят решение на този проблем правят хората зад проекта &lt;a href="http://www.stopie6.org/"&gt;Stop IE6&lt;/a&gt;. Сайтът се опитва да образова хората относно нуждата да ъпгрейднат браузърът си. За дизайнерите на сайтове също така са предоставени 2 скрипта с които могат да "накарат" потребителите на IE6 да преминат на IE7 или 8 или дори още по добре, на някой от алтернативните браузъри. Единия е толерантен и изкарва съобщение, което може да се игнорира, а другия е безмилостен и блокира достъпът на тези потребители с Интернет експлорер с версия под 7.&lt;br /&gt;&lt;br /&gt;Всъщност забравих да спомена една причина поради която много потребители ползват IE6: нямат избор. В повечето училища инсталирането на софтуер е невъзможно и единствения браузър е IE6, същото се отнася за много офис машини, така че не бива да подхождаме едностранчиво към проблемите в технологията, те почти никога не са толкова прости.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-2385147924762597006?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/2385147924762597006/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=2385147924762597006' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/2385147924762597006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/2385147924762597006'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/11/ie6.html' title='Спрете IE6'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-7820902988836857576</id><published>2008-11-09T20:32:00.002+02:00</published><updated>2008-11-09T21:02:36.548+02:00</updated><title type='text'>Beginning Unix Ревю</title><content type='html'>Вече 3-ти ден чета &lt;a href="http://www.amazon.com/Beginning-Unix-Programmer-Paul-Love/dp/0764579940"&gt;Beginning Unix (Programmer to Programmer)&lt;/a&gt;. Преминах през по голямата част на книгата, но прескачах на местата които не ми се струваха толкова интересни. Такива места бяха например главите посветени на редактора Vi и на perl(От Vi разбирам, а perl ще науча някой друг път). &lt;br /&gt;&lt;br /&gt;Това което ме впечатли е че във скромния обем от 450 страници са събрани толкова много неща. Ето съкратен списък на нещата които покрива книгата(някой по подробно, други по постно):&lt;br /&gt;&lt;br /&gt;Основите, това само прегледах на бързо, защото имам достатъчно опит с Linux, пропуснах също и главата със историята на уникс и различните му варианти.&lt;br /&gt;&lt;br /&gt;Обясняват се потребителите и групите, както и управлението им&lt;br /&gt;&lt;br /&gt;Подробно се обяснява за файловата система, навигацията в нея, както и поддръжката и. Тази глава е доста обширна и полезна.&lt;br /&gt;&lt;br /&gt;Обяснение на някой от по сложните команди.&lt;br /&gt;&lt;br /&gt;редактиране с Vi, това го пропуснах.&lt;br /&gt;&lt;br /&gt;Регулярни изрази, sed и awk това го преминах на бързо, имам отделна книга от която ще уча регулярни изрази, а sed и awk ми се струват интересни инструменти, но няма да се занимавам за сега да се задълбочавам.&lt;br /&gt;&lt;br /&gt;Управление на процеси и задачи.&lt;br /&gt;&lt;br /&gt;Следва глава посветена на изпълнението на задачи в определено време.&lt;br /&gt;&lt;br /&gt;Глава посветена на сигурността&lt;br /&gt;&lt;br /&gt;Две глави посветени на shell скриптове(точно стигнах до тях, не съм чел на татък).&lt;br /&gt;&lt;br /&gt;Следват една глава за системните log-ове, и една за мрежовите способности на уникс&lt;br /&gt;&lt;br /&gt;Следва една солидна глава посветена на perl, няма да я чета, но имам чувството че ще ми се наложи да науча този език някой ден.&lt;br /&gt;&lt;br /&gt;Следващата глава е за правене на back-up-и и една глава за инсталирането на програми от сорс, и двете неща знам как да правя, но може да ги прегледам, останалите две глави са за потребителите на mac OS 9 и Windows, идеята е да им покаже как да минат на уникс(mac os X в първия случай). Няма да чета. &lt;br /&gt;&lt;br /&gt;Това означава че трябва само да прочета главите посветени на shell скриптовете и съм готов с тази прилична книга. Както виждате, тази обширна гама от теми които книгата съдържа и дават доста точки, въпреки че  е предназначена за начинаещи, е добра и за хора с малко повече опит(като мен). &lt;br /&gt;&lt;br /&gt;Първата книга която реших да прочета в петък беше &lt;a href="http://www.amazon.com/Linux-Bible-2008-openSUSE-Distributions/dp/0470230193/ref=sr_1_4?ie=UTF8&amp;s=books&amp;qid=1226257042&amp;sr=1-4"&gt;linux bible&lt;/a&gt;, но тя след като преминах през съдържанието се оказа че повечето от главите са инструкции за инсталиране на различните дистрибуции, вероятно е полезна ако сте напълно начинаещ и се чудите как да започнете. Следващата книга която смятам да погълна е &lt;a href="http://www.amazon.com/Debian-System-Concepts-Techniques/dp/1593270690/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1226257042&amp;sr=1-1"&gt;The Debian System: Concepts and Techniques&lt;/a&gt;. Все още не знам кога ще ми остане пак време, както стана този уйкенд, но се надявам да намеря такова.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-7820902988836857576?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/7820902988836857576/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=7820902988836857576' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/7820902988836857576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/7820902988836857576'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/11/beginning-unix.html' title='Beginning Unix Ревю'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-1009267253638875834</id><published>2008-11-06T22:57:00.003+02:00</published><updated>2008-11-06T23:53:14.153+02:00</updated><title type='text'>Rootless root</title><content type='html'>Може и да знаете за тази колекция от Unix притчи, но ако не я знаете, прочетете &lt;a href="http://catb.org/esr/writings/unix-koans/ten-thousand.html"&gt;тази&lt;/a&gt;, и ако имате време, прочетете и &lt;a href="http://catb.org/esr/writings/unix-koans/"&gt;другите&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Имам чувството че познанията ми по Unix са наистина повърхностни и че имам нужда наистина да овладея тази система. За целта ще се отдам на медитация, четене и писане на shell скриптове(най вероятно на python и bash). Ето какво знам да правя под Linux:&lt;br /&gt;&lt;br /&gt;1. Имам средни познания по Vim.&lt;br /&gt;&lt;br /&gt;2. Когато кубунту си ъпдейтне ядрото прекалено много пъти, знам как да редактирам menu.lst файла ми, за да не ми се налага да избирам между десет ядра, когато grub boot-не.&lt;br /&gt;&lt;br /&gt;3. Знам как да се ориентирам във файловата система със cd,ls и други команди&lt;br /&gt;&lt;br /&gt;4. Знам как да си настроя клавиатурата от xorg.conf, така че да използвам dvorak и bg вместо us.&lt;br /&gt;&lt;br /&gt;5. Най важното е че знам как да използвам man командата :D&lt;br /&gt;&lt;br /&gt;Знам и още куп други неща, но това вече са отделни програми(apt,htop и др.) Това е общо взето минимума който трябва да се знае за да има един човек право да стои неизбръснат повече от 1 седмица, ако стоиш така с брадата си, без да знаеш повече, не я заслужаваш и трябва да се избръснеш(unix 1337-неса се измерва по брадата :D). Това е и една от причините поради които заминавам за планината с няколко Unix книги и едно Arch CD(не че не съм инсталирал Arch и преди, но не съм го овладял). Както казва негъра, който сега управлява половината свят "It's Time for chage". &lt;br /&gt;&lt;br /&gt;PS. Всъщност истинската причина да стана монах е че не се сещам за интересни python проекти които да кодирам, и след медитация открих че причината е че нямам особено големи проблеми, които да трябва да реша, но ако си задълбоча познанията, най вероятно ще се натъкна на нещо което да трябва да автоматизирам със някой скрипт, това е мястото където ще мога да приложа "теоретичното" си познание по програмиране.Това и желанието ми да стоя неизбръснат :D &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS2(уоу). Защо шибания python2.6 не иска да се компилира на шибаното кубунту!!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-1009267253638875834?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/1009267253638875834/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=1009267253638875834' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/1009267253638875834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/1009267253638875834'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/11/rootless-root.html' title='Rootless root'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-1994423840924889803</id><published>2008-11-03T23:41:00.003+02:00</published><updated>2008-11-03T23:59:26.331+02:00</updated><title type='text'>Ъпдейт относно туториъла(отново)</title><content type='html'>За съжаление загубих черновата на втората част от туториъла ми за python(да, и бекъпа е загубен), за щастие обаче всичкия код е запазен, следователно не всичко е загубено. Смятам да сменя стратегията. Тъй като така и така трябва да почвам от начало, ще публикувам всяка част като блог пост(както правих с първата част). Така ще си осигуря материал за писане за следващите няколко седмици, също така имам възможност да напиша още код и самия аз да поекспериментирам със turtle модула. &lt;br /&gt;&lt;br /&gt;Наистина мързелът ме е налегнал напоследък, но мисля че се оправям. Днес си изчистих стаята, което говори че има надежда да свърша този туториъл някога. Блог постовете ще бъдат редактирани, но не толкова мощно колкото черновата на първата част, но няма и да са толкова сурови както оригиналните постове за python(тези пълни с грешки и тъпи изцепки от моя страна). &lt;br /&gt;&lt;br /&gt;Други новости около мен, които бих написал в twitter, но ме мързи са:&lt;br /&gt;&lt;br /&gt;Зарибих се да играя шах, супер слаб съм, но се уча.&lt;br /&gt;&lt;br /&gt;Почнах малко тренировки, когато имам време бягам, лицеви преди лягане и други упражнения, компа изтощава и имаш нужда от малко тонус, всичко освен бягането е в домашни условия.&lt;br /&gt;&lt;br /&gt;Даскалото си е все така скука, но имам най високата оценка по математика от целия клас, на последното контролно: 4.50 :D супер много, но повечето други хора имат 2-ки и 3-ки, а само аз имам едно гордо &lt;span style="font-weight:bold;"&gt;5&lt;/span&gt; в дневника, имам уча повече по математика.&lt;br /&gt;&lt;br /&gt;Това е за сега.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-1994423840924889803?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/1994423840924889803/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=1994423840924889803' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/1994423840924889803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/1994423840924889803'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/11/blog-post.html' title='Ъпдейт относно туториъла(отново)'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-1123664683082496895</id><published>2008-11-01T16:24:00.005+02:00</published><updated>2008-11-01T17:01:02.453+02:00</updated><title type='text'>Публикуваха един от постовете ми в новия Home Linux</title><content type='html'>Вчера излезе новия брой на&lt;a href="http://vestnik.hbcom.info/comment.php?comment.news.201"&gt; Home Linux&lt;/a&gt;. Статията ми &lt;a href="http://nosleepbg.blogspot.com/2008/09/blog-post_07.html"&gt;диктатурата в опън сорса&lt;/a&gt; е на 5-та страница, отделени са и 3. Искам да благодаря на хората които правят този проект, въпреки че сте пълни аматьори в сферата на публицистиката, си личи че се кефите на проекта си. Обаче се надявам следващия път да има повече материали, сериозно момчета, този брой сте си го изсмукали из пръстите. Стига съм се фукал с това че са ме публикували някъде.&lt;br /&gt;&lt;br /&gt;In other news, изминалата седмица беше доста напрегната в даскало и нямах особено време да се занимавам със някой от проектите си, ще видя до къде ще мога да ги докарам и ще ви държа в течение.&lt;br /&gt;&lt;br /&gt;Това е за сега от мен, както вероятно сте забелязали, изминалия месец имах доста малко публикации, надявам се сега да има повече. Ако остане време, довечера ще поста нещо, което може да ви се стори интересно.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-1123664683082496895?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/1123664683082496895/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=1123664683082496895' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/1123664683082496895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/1123664683082496895'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/11/home-linux.html' title='Публикуваха един от постовете ми в новия Home Linux'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-3841154526223793865</id><published>2008-10-28T20:56:00.002+02:00</published><updated>2008-10-28T20:59:02.167+02:00</updated><title type='text'>Ъпрейтвам до Kubuntu 8.10</title><content type='html'>Няма да чакам финалната версия, и няма да ъпдейтвам нормално. Ще направя фреш инсталация, и без това сега имам прекалено много странни пакети, които не използвам, а факта че още ползвам KDE 3.5.9 усложняа ъпдейта още повече. Очаквайте по късно(утре най вероятно) първите ми впечатления от новото дистро.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-3841154526223793865?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/3841154526223793865/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=3841154526223793865' title='2 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/3841154526223793865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/3841154526223793865'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/10/kubuntu-810.html' title='Ъпрейтвам до Kubuntu 8.10'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-5308260380172789116</id><published>2008-10-26T19:03:00.004+02:00</published><updated>2008-10-26T19:37:03.811+02:00</updated><title type='text'>Синтактично оцветяване</title><content type='html'>Реших да добавя синтактичо оцветяване към блога си. Нещата са доста прости, има &lt;a href="http://fazibear.googlepages.com/blogger.html"&gt;блогер плъгин, с който да оцветявам кода си.&lt;/a&gt; Трябва само да оставите полето със заглавието празно, защото иначе страницата на блога ви ще има заглавие, без съдържание(плъгинът е просто javascript който ще оцветява кода ви). След това просто добавете кода си и го сложете във: &lt;pre name="code" class="html"&gt;&lt;pre name="code" class="тип на кода"&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;До сега използвах само &lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;Ето резултата:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class AttrDict(dict):&lt;br /&gt;&lt;br /&gt;    def __getattr__(self, name):&lt;br /&gt;        if name in self:&lt;br /&gt;            return self[name]&lt;br /&gt;        raise AttributeError('%s not found' % name)&lt;br /&gt;&lt;br /&gt;    def __setattr__(self, name, value):&lt;br /&gt;        self[name] = value&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Но сега ето какво получавам:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="python"&gt;&lt;br /&gt;class AttrDict(dict):&lt;br /&gt;&lt;br /&gt;    def __getattr__(self, name):&lt;br /&gt;        if name in self:&lt;br /&gt;            return self[name]&lt;br /&gt;        raise AttributeError('%s not found' % name)&lt;br /&gt;&lt;br /&gt;    def __setattr__(self, name, value):&lt;br /&gt;        self[name] = value&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Използвах таговете:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&lt;pre name="code" class="python"&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Надявам се промяната да ви хареса, ако имам време ще ъпдейтна и някой от старите блог постове.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-5308260380172789116?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/5308260380172789116/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=5308260380172789116' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5308260380172789116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5308260380172789116'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/10/blog-post_26.html' title='Синтактично оцветяване'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-7408226643308657937</id><published>2008-10-21T11:55:00.002+03:00</published><updated>2008-10-21T12:02:15.832+03:00</updated><title type='text'>Речник с директен достъп до стойностите в Python</title><content type='html'>Често попадам на интересни хакове в python, които с помощта на някакъв странен клас, със странни нечетими методи, успява на направи нещо готино с езика, но от друга страна е супер грозно. Днес попаднах на един прост и елегантен хак, който не е грозен, а напротив, дори е красив.  Ето кода който намерих:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;blockquote&gt;class AttrDict(dict):&lt;br /&gt;&lt;br /&gt;    def __getattr__(self, name):&lt;br /&gt;        if name in self:&lt;br /&gt;            return self[name]&lt;br /&gt;        raise AttributeError('%s not found' % name)&lt;br /&gt;&lt;br /&gt;    def __setattr__(self, name, value):&lt;br /&gt;        self[name] = value&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Както виждате този клас описва речник, който има странни __getattr__ и __setattr__ методи, които му придават чара. Общо взето, този код дефинира нов вид речник, със директен OO достъп, да речем че направим това:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;blockquote&gt;person = AttrDict({'id': 5})&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Виждате че personе инстанция на този клас, който пък от своя страна наследява от инстанция на метакласът dict, т.е. казваме му да наследи всичките атрибути и методи на речника {'id': 5}, но всеки речник, би свършил работа, ако бяхме оставили скобите празни, само щяхме да имаме празен речник от новия тип. Сега, новите атрибути __settattr__ и __getattr__, които горния клас предефинира, имат готин ефект:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;blockquote&gt;print person.id # 5&lt;br /&gt;person.id = 6&lt;br /&gt;print person.id # 6&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Това е синтактична захар за това:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;blockquote&gt;print person[id] # 5&lt;br /&gt;person[id] = 6&lt;br /&gt;print person[id] # 6&lt;br /&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Елегантно и красиво, но ето и недостатъка, не може да използвате литерали(числа, например), като ключове в речника, или поне няма да можете да имате достъп до тях, т.е. Това не работи:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;blockquote&gt;person = AttrDict({1: 5})&lt;br /&gt;person.1  #изписва грешка&lt;br /&gt;person[1] #връща 5 &lt;br /&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Може би това е една от причините поради която Python няма това нещо вградено, не бих си представил как Гуидо би реагирал, но или ще избухне в гняв, или ще падне на пода от смях.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-7408226643308657937?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/7408226643308657937/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=7408226643308657937' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/7408226643308657937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/7408226643308657937'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/10/python_21.html' title='Речник с директен достъп до стойностите в Python'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-8869272132109501376</id><published>2008-10-20T22:03:00.004+03:00</published><updated>2008-10-20T22:49:31.813+03:00</updated><title type='text'>Преосмисляне на блогинг стратегията ми.</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Извинение&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Радвам се че въпреки факта, че напоследък блогвам супер малко(6 дена ме нямаше), все още има хора които ми посещават блога всеки ден, преглеждайки го за нови статии, или хора, намерили го в гугъл(търсещи специфична информация). Благодаря на редовните посетители, и още веднъж се извинявам за редките постове. Не знам дали ще зачестят, но не пречи да опитам да анализирам причините за ниската ми продуктивност, и да ги отстраня. Мисля че го дължа на читателите(колкото и малко да са редовните).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Време&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/09/blog-post_15.html"&gt;Тук&lt;/a&gt; споменах че ще блогвам по рядко, причината е че даскалото почна и имах по малко свободно време. Ето една неефективност. Не организирам свободното си време достатъчно добре. За съжаление няма много какво мога да направя тук. Денят ми е разцепен на сутрин и вечер, следобедът ми е в даскало(90% от което е загуба на време и ресурси). Наистина е неприятно това че всеки ден трябва да прекарвам 7 часа затворен някъде, без да има особена полза от това(имам 2 часа математика и 1 физика на седмица, всичко друго е шум). Хмм, дойде ми добра идея, да направя скриптче което да брои дните до абитуриентската.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Мотивация&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Колкото и малко свободно време да имам, ако не го прахосвам с тъпи неща(като 6 часов knights of honor маратон, или рисуване на грозни комикси, или гледане на самурайски филми от 50-те) обикновено или се уча да програмирам(като програмирам) или пиша туториъла, за да се учат други да програмират, или уча математика(за шибаната матура) или правя нещо друго, което бих сметнал за продуктивност. Не мисля че е толкова интересно да блогвам само за шибания ми туториъл, малко се изтърква. За матурата също не е интересно блогването(все още ми е гадно че ще трябва да правя матура по български). А и не пиша толкова много код, че да блогвам за него(може би трябва да правя точно това).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Идеи&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Разбира се, всичко опира до идеите. Отне ми 6 дни да измисля това, а дори този пост е изсмукан из пръстите ми. Не че нямам за какво да пиша, просто идеите ми се струват ТЪПИ. Днес в един блог прочетох едно интересно решение на този проблем.(това звучи като реплика от виц, "днес в един блог прочетох, защо понито не може да се разкрещи на орела, защото е малък кон" извинете за това) Просто записвам голямо количество идеи и след това започвам да ги пиша една по една, и ако са добри, ги поствам, така мога да имам по равномерен режим на постване, вместо да поствам 3 статии в първите 3 дена на седмицата и след това да мълча 6 дена, мога да ги разпределя по 1 на 2 дни, и така ще трафика ми няма да е на такива пикове и долове, както е сега. Това е защото сега просто си отварям writer-a(Open Office, да няма объркване) и пиша нещо, ако е сравнително добро го трия и пиша на ново и ако е достатъчно добро, го поствам.(този пост няма да бъде пренаписан, само прередактиран на места) Сега може да пробвам друга стратегия, пиша каквото мога, за да имам запас от статии, така ще е по добре за всички.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Заключение&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Освен по добрата организация на времето, повече мотивация, и по добри идеи, както и по редовно постване, този блог се нуждае и от сериозен маркетинг, и не говоря само за svejo.net(90% от посетителите ми от там ползват win+IE(половината от тях с IE6!@!), хора,очевидно без самоуважение, далеч от аудиторията за която пиша). Със повече публика, ще има и повече критика и по голямо качество.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-8869272132109501376?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/8869272132109501376/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=8869272132109501376' title='2 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/8869272132109501376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/8869272132109501376'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/10/blog-post_20.html' title='Преосмисляне на блогинг стратегията ми.'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-6651011781438122495</id><published>2008-10-14T23:08:00.004+03:00</published><updated>2008-10-14T23:20:47.435+03:00</updated><title type='text'>Казанът вече ври, II-ра част на туториълът ми за python</title><content type='html'>Кодът за тази II-ра част е готов от толкова време, просто не намерих време да напиша самия туториъл. Сега понеже съм болен, имам повече време, и може да очаквате да е готов след известно време, дори не знам днескашната дата, така че финална дата няма да давам. И все пак, когато II-рата част е готова, ще се слее с I-вата и ще бъдат форматирани със reStructuredText и издадени в 3 варианта, първия е сорса на reStructuredText файла, html версия и pdf. За сега мога да ви дам само черновите на първите 2 глави. Това е все още първия текст, който съм написал И ЗАДЪЛЖИТЕЛНО ЩЕ БЪДЕ ПРЕНАПИСАНО, но до тогава, ви оставям с краткия текст, който написах днес, борейки се с треската си, и главоболието, и умората...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;II-ра част&lt;br /&gt;&lt;br /&gt;1. Въведение&lt;br /&gt;&lt;br /&gt;Втората част е на този туториъл е по практически настроена от предишната. Това ще рече, че ще има повече код, освен това, ще може да видите веднага(почти) резултата от своя код. Това ще се постигне чрез модула turtle. Този модул е част от python и е предназначен за просто чертане на екрана. Подобно е на езика Logo, ако някой преди това е учил logo, знае че там имате една "костенурка", и и давате команди, на къде да върви, и където отиде, оставя следа. По този начин, като и даваме поредица от команди, можем да чертаем по сложни фигури. В тази част подходът ми ще е най вече да ви науча как да използвате мощните функции на python, за да чертаете сложни геометрични фигури. Не оставайте с погрешно впечатление, идеите с които ще се запознаем, въобще не са детска работа. Надявам се че ще се забавлявате, или ще полудете от отчаяние, все ми е тая, честно казано.&lt;br /&gt;&lt;br /&gt;2. Какво имаме в инвентара&lt;br /&gt;&lt;br /&gt;Шесте основни функции, с които ще работим са:&lt;br /&gt;    &lt;br /&gt;    turtle.forward()&lt;br /&gt;    turtle.backward()&lt;br /&gt;    turtle.left()&lt;br /&gt;    turtle.right()&lt;br /&gt;    turtle.up()&lt;br /&gt;    turtle.down()&lt;br /&gt;&lt;br /&gt;Това са основните функции с които ще се занимаваме, ще обясня за всяка една по късно. Има още няколко, които не са чак толкова важни, някой от тях ще използваме, други не. Ще обясня за всяка от тях, когато ги срещнем. Сега да поясня относно горните шест функции:&lt;br /&gt;    &lt;br /&gt;    turtle.forward() &lt;br /&gt;    &lt;br /&gt;    тази функция приема аргумент число n, и чертае линия направо, която е дълга точно n пиксела.&lt;br /&gt;    &lt;br /&gt;    turtle.backward()&lt;br /&gt;    &lt;br /&gt;    общо взето същото, но на обратно.&lt;br /&gt;    &lt;br /&gt;    turtle.left()&lt;br /&gt;    &lt;br /&gt;    завърта костенурката с n градуса на ляво, тача че да можем да променяме    посоката на линиите които рисуваме.&lt;br /&gt;    &lt;br /&gt;    turtle.right()&lt;br /&gt;    &lt;br /&gt;    същото, но на дясно.&lt;br /&gt;    &lt;br /&gt;    turtle.up()&lt;br /&gt;    &lt;br /&gt;    тази функция повдига костенурката, така че тя да може да се движи, но да не рисува по екрана, докато е повдигната. Полезна е, ако искаме да преместим   костенурката от едно място на друго, без да оставяме линия.&lt;br /&gt;    &lt;br /&gt;    turtle.down()&lt;br /&gt;    &lt;br /&gt;    след като е повдигната костенурката, тази функция я сваля на земята и сега можем да продължим да пишем по екрана с нея.&lt;br /&gt;    &lt;br /&gt;Това е общо взето, всичко друго което трябва да знаете, е в първата част.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-6651011781438122495?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/6651011781438122495/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=6651011781438122495' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/6651011781438122495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/6651011781438122495'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/10/ii-python.html' title='Казанът вече ври, II-ра част на туториълът ми за python'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-4964174829168064301</id><published>2008-10-12T19:24:00.002+03:00</published><updated>2008-10-12T19:37:15.944+03:00</updated><title type='text'>ViViVi редактора на звяра</title><content type='html'>Vim е страхотен редактор, както и предшественикът му Vi. До скоро се задоволявах само с начални познания с този редактор, но когато посегнах да редактирам текс със Kate, осъзнах че нещо не е наред. Не познавах редактора достатъчно добре за да го владея и като последствие, не можех да редактирам така ефективно, както мога със Kate. Но kate е подсладена вода, няма истинска мощ, освен няколко евтини калории. За това вчера се занимавах с бъзикане на .vimrc файла ми. Освен че се опитвах да разбера какво правят всичките тея работи(за щастие беще добе коментиран), си го модифицирах и сега съм сравнително доволен.&lt;br /&gt;&lt;br /&gt;Днес цял ден чета една книга за Vim. Освен че я чета и изпробвам съветите, си записвам в едно тевтерче разни команди, имам си свестен cheat sheat, но е добре да записваш нещата с ръка, помага за запомнянето на нещата. Необходимо е човек да се потруди за да получи мощта на  Vim, това не ви е подсладена вода.&lt;br /&gt;&lt;br /&gt;Едно от основните усещания, което редактора оставя в теб, докато работиш, е това че ти си шефа, точно това усещане ме привлича и към Linux. Но за да си шефа, трябва и да си компетентен. Колкото повече се трудя сега, да науча трикчетата, толкова по малко ще се мъча после, когато редактирам, защото ще го правя ефективно и лесно.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-4964174829168064301?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/4964174829168064301/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=4964174829168064301' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/4964174829168064301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/4964174829168064301'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/10/vivivi.html' title='ViViVi редактора на звяра'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-1684983449795105548</id><published>2008-10-11T20:05:00.002+03:00</published><updated>2008-10-11T20:14:10.285+03:00</updated><title type='text'>XKCD обичат дискавъри ченъл.</title><content type='html'>Ето тази реклама на дискавъри:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/V5BxymuiAxQ&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/V5BxymuiAxQ&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;беше превърната преди известно време във пародия на уебкомикса &lt;a href="http://xkcd.com/442/"&gt;XKCD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Най якото е че това е поредния случай когато животът имитира комиксът. Преди това, нинджи нападнаха Ричард Столман, заради комикс, в който се бие с нинджите на Майкрософт, в друг комикс пък някъкви хора залепят шах фигури за дъската, и се снимат така на влакчето на ужасите, със замислени физиономии, това е правено повече от веднъж. &lt;a href="http://en.wikipedia.org/wiki/Xkcd#Life_imitates_xkcd"&gt;Има и други случаи&lt;/a&gt;. Ето поредния пример, горната реклама, след като беше направена на комикс, сега е направена на видео клип:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YvGhEJyfC7U&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/YvGhEJyfC7U&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-1684983449795105548?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/1684983449795105548/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=1684983449795105548' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/1684983449795105548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/1684983449795105548'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/10/xkcd.html' title='XKCD обичат дискавъри ченъл.'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-5843216292363992175</id><published>2008-10-09T21:55:00.004+03:00</published><updated>2008-10-09T22:23:32.791+03:00</updated><title type='text'>C, сагата продължава</title><content type='html'>Така и не научих С. Лятото четох, пробвах разни неща, писах малко код, обаче не прочетох K&amp;amp;R до края. Вместо това задълбах червата на python, и започнах да изучавам синтактичните особености и детайли на езика, също така подхванах и до известна степен Scheme. Та защо днес си отворих отново тази пуста книга за С, този архаичен език от 70-те? Ами просто е, след като изгледах последните няколко &lt;a href="http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/"&gt;лекции от поредицата SICP&lt;/a&gt;, видях че в тези лекции, предназначени да те научат на Lisp, въобще не са предназначени да направят това. Идеята е да премахнат "магията".&lt;br /&gt;&lt;br /&gt;Ще поясня, лекциите се занимават с различни конкретни проблемни области от компютърните науки, като динамични езици, функционално програмиране, рекурсивни алгоритми, вложени езици, pattern matching, логическо програмиране, и писане на интерпретатори за такива езици. Това всичкото в 10 лекции(всяка от по 2 части). В предишна лекция бяха описали целия мета циркулярен интерпретатор на лисп, написан на лисп, т.е. лисп е самосъдържащ се език, който е дефиниран чрез себе си, и се самоинтерпретира, или нещо такова. Но в една от следващите лекции, направиха нещо интересно. Описаха абстрактен модел на компютър, такъв с регистри, стек, контролер и т.н. Освен абстрактния модел на компютър, дефинираха и вложен в lisp синтаксис, с който да описвах процесите в този псевдо компютър(псевдо асемблер, с лисп синтаксис). Идеята беше да премахнат магията.&lt;br /&gt;&lt;br /&gt;Този мета циркулярен интерпретатор за лисп, написан на лисп, има много магия в него. На какво е написан лисп, че да може да се самоинтерпретира, с този прост интерпретатор(събра се на 5 дъски!)? След това започнаха да описвах процесите в тази машина, давайки пример с итеративен и рекурсивен алгоритъм. И двата са дефинирани по рекурсивно със lisp синтаксис, но интересното е какво става в интерпретатора, начинът по който единия и другия алгоритъм пълни и празни стека, показва доста ясно каква е разликата между рекурсия и итерация, дори и ако изглеждат синтактично еднакви, защото са дефинирани рекурсивно, процесите които описват са различни.&lt;br /&gt;&lt;br /&gt;След като обясниха процесът, който става в регистрите и стека, магията изчезна. Това някак си промени мирогледа ми за С, проблемът ми е че се опитах да пиша python на С, това освен че е глупаво, е и невъзможно, без да напиша python интерпретатор, преди това. С е език от ниско ниво, един вид абстрактен асемблер. Сега с нов поглед върху проблема, се надявам най накрая да разбера тоя шибан език, и тая шибана Фон Нойманова архитектура.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-5843216292363992175?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/5843216292363992175/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=5843216292363992175' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5843216292363992175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5843216292363992175'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/10/c.html' title='C, сагата продължава'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-6249970289435210685</id><published>2008-10-06T19:45:00.005+03:00</published><updated>2008-10-06T21:05:40.960+03:00</updated><title type='text'>Дилема. С какво хоби да си запълня свободното време?</title><content type='html'>&lt;a href="http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/"&gt;Снощи не публикувах допълнителен блог пост, защото гледах лекции за програмиране от 86-та година.&lt;/a&gt;  Ако не бях, снощи щях да пусна блог пост относто &lt;a href="http://docutils.sourceforge.net/rst.html"&gt;reStructuredText&lt;/a&gt; и &lt;a href="http://sphinx.pocoo.org/"&gt;Sphinx&lt;/a&gt;. Тези теми са интересни, и някой ден ще им обърна внимание, но днес ми се пише за нещо друго. След като един вид завърших проекта си за игра &lt;a href="http://nosleepbg.blogspot.com/2008/09/blog-post_30.html"&gt;морски шах&lt;/a&gt;, и след като публикуах&lt;a href="http://nosleepbg.blogspot.com/2008/10/python.html"&gt; черновата на туториъла ми за Python&lt;/a&gt;, започнах да се чудя, какво да правя. Да, туториъла все още има нужда от работа, и трябва да напиша 2-рата част, също така, морския шах още няма изкуствен интелект. Обаче на мен тези неща не са ми толкова интересни, колкото бяха, когато си казах че искам да ги направя. Време е да си намеря други проекти, нещо което да ми е интересно, и върху което да си блъскам главата няколко седмици, и по възможност да прави нещо истинско.&lt;br /&gt;&lt;br /&gt;Намирането на нов проект е вариант, друг вариант е да прочета документацията на споменатия горе &lt;a href="http://docutils.sourceforge.net/rst.html"&gt;reStructuredText&lt;/a&gt; и да работя върху туториъла, използвайки го. Или пък да се посветя на някое от другите ми многобройни и интересни хобита, които не съм практикувал от известно време, или пък да си намеря нови. Общо взето съм в нещо като мини- криза.&lt;br /&gt;&lt;br /&gt;Мога да си изтегля някоя книга за рисуване, и да се посветя на това, последните няколко дни отново започнах да рисувам и искам да си обогатя уменията.&lt;br /&gt;&lt;br /&gt;От друга страна обаче, напоследък се заинтересовах от електроника и схеми, може да се задълбоча в тази област.&lt;br /&gt;Или пък да си изтегля документацията на Django и да пробвам да си направя някакъв сайт.&lt;br /&gt;&lt;br /&gt;Или пък, може да пробвам да се науча да играя шах като хората, или поне да оцелея повече от 5 хода.&lt;br /&gt;&lt;br /&gt;Това са общо взето нещата, които са ми интересни в момента, може да се каже че не знам какво да избера, в крайна сметка довечера ще медитирам и е възможно да избера някое, или да избера нещо което въобще не е в списъка. Разбира се, след седмица- две, ще имам други интереси и пак ще съм в това състояние, случва ми се често, искам да знам всичко. Кофти. Както и да е, ако има някой интересуващ се, ако избера нещо, ще го съобщя в &lt;a href="http://twitter.com/pavelludiq"&gt;twitter&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-6249970289435210685?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/6249970289435210685/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=6249970289435210685' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/6249970289435210685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/6249970289435210685'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/10/blog-post.html' title='Дилема. С какво хоби да си запълня свободното време?'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-8276205380997189160</id><published>2008-10-05T14:39:00.002+03:00</published><updated>2008-10-05T15:58:44.953+03:00</updated><title type='text'>Документацията на Python</title><content type='html'>Днес ъпдейтнах версията ми на python до 2.6, и най якото нещо за нея е, че новата версия има и нова документация, или по скоро нов сайт за документация. &lt;a href="http://www.python.org/doc/2.5.2/index.html"&gt;Ето как изглеждаше документацията за предишната версия 2.5 .&lt;/a&gt; &lt;a href="http://docs.python.org/"&gt;А ето как изглежда тя за 2.6 .&lt;/a&gt; Освен готиния редизайн, новия сайт е много добре организиран, намерих някой неща, които и да ги е имало преди в документацията, не съм ги намерил. Да започнем с преглед на нещата, на заглавната страница ще намерите:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/whatsnew/2.6.html"&gt;Новите неща в Python 2.6&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/tutorial/index.html"&gt;Туториъл(по добър от моя :D)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/using/index.html"&gt;Наръчник за употреба на различни платформи&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/reference/index.html"&gt;Описание на синтаксиса и елементите на езика&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/library/index.html"&gt;Описание на стандартната библиотека&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/howto/index.html"&gt;Колекция от интересни How-to-а(след малко ще задълбоча тук)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/extending/index.html"&gt;Наръчник, за това как да се пишат С/С++ разширения&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/c-api/index.html"&gt;Както и съответната документация за C/C++ API-а&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/install/index.html"&gt;Как да се инсталират модули&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/distutils/index.html"&gt;Как да се дистрибутират модули&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/documenting/index.html"&gt;И как да се пише ефективно документация за Python&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Други неща в списъкът са и различни индекси и справочници.&lt;br /&gt;&lt;br /&gt;Това на което искам да обърна особено внимание са How to-тата, ето какво включват те:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/howto/advocacy.html"&gt;Как да пропагандираме Python пред тъпите си шефове&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/howto/cporting.html"&gt;Как да портваме библиотеки към 3.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/howto/curses.html"&gt;Как да програмираме използнвайки curses(това ми е четивото за довечера)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/howto/doanddont.html"&gt;Няколко примера за лош стил&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/howto/functional.html"&gt;Как да пишем функционален код&lt;/a&gt;(това ще се прегледа по късно, имам особено отношение към функционалното програмиране)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/howto/regex.html"&gt;Regular expressions Voodoo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/howto/sockets.html"&gt;Socket-и&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/howto/unicode.html"&gt;Уникод&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/howto/urllib2.html"&gt;urllib2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;и най накрая:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/howto/webservers.html"&gt;как да използваме Python в мрежата.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Защо подяволите няма повече проекти с такава документация, да разбирам че python ми е почти набор, и хората са имали време да напишат това, обаче погледнете да речем &lt;a href="http://docs.djangoproject.com/en/dev/"&gt;Django&lt;/a&gt;, тяхната документация е страхотна, за разлика от документацията на &lt;a href="http://www.muppetlabs.com/%7Ebreadbox/bf/"&gt;brainfuck&lt;/a&gt;(това е истински език, доказателство е &lt;a href="http://delysid.org/emacs/bf.html"&gt;emacs lisp имплементацията за него&lt;/a&gt; :D)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-8276205380997189160?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/8276205380997189160/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=8276205380997189160' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/8276205380997189160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/8276205380997189160'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/10/python_05.html' title='Документацията на Python'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-632228280447100058</id><published>2008-10-05T00:53:00.005+03:00</published><updated>2008-10-14T23:19:39.356+03:00</updated><title type='text'>Черновата на туториълът за Python е готова</title><content type='html'>Водейки се от опън сорс философията "пускай често, пускай бързо", днес ще пусна първата версия на туториъла ми за Python, кръстен иронично от мен "Python:червеното хапче". Иронично е защото всички знаят че Ruby е червения език, а Python е синкаво жълт :D. Представям ви първите чернови, за сега съдържащи само първа част, втората е в прекалено начален стадии за да се показва на хора, като се има в предвид колко пъти пренаписах само тази първа част :D Ето самите чернови:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pavelludiq.data.bg/Python-draft"&gt;Чист текст&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pavelludiq.data.bg/Python-draft.pdf"&gt;PDF версия&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Имате право да разпространявате, променяте и принтирате този текст.Ако промените, и разпространите този труд, трябва да включите този текст, с правата и задълженията на получателите, също така сте задължени да упоменете оригиналния автор. Ако направите промени, и искате да разпространите променения текст, изпратете променения файл(в чист текст) на оригиналния автор, дори и ако не сте получили вашето копие от него.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update 14.10.08: днес започна работа по втората част. Подробности &lt;a href="http://nosleepbg.blogspot.com/2008/10/ii-python.html"&gt;тук&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-632228280447100058?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/632228280447100058/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=632228280447100058' title='1 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/632228280447100058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/632228280447100058'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/10/python.html' title='Черновата на туториълът за Python е готова'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-7373555813087222711</id><published>2008-09-30T09:14:00.003+03:00</published><updated>2008-09-30T10:11:01.008+03:00</updated><title type='text'>Бъг Ми</title><content type='html'>Както споменах снощи, днес ще разгледаме гадния бъг от играта ми на морски шах(&lt;a href="http://www.math10.com/informatika/viewtopic.php?t=3131"&gt;сорс и обяснения тук&lt;/a&gt;). Ако не разбирате Python няма да ви е лесно, за щастие имам няколко много зле написани блог поста, които обясняват по прост и тъп начин нещата. &lt;br /&gt;&lt;br /&gt;Започваме от самото начало, играта представлява един списък от 3 други списъка, които представляват редовете на матрицата, в която се съхраняват позициите. ето как изглежда:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;matrix=[[[], [], []], [[], [], []], [[], [], []]] &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;С функцията printmatrix() принтираме на екрана матрицата както трябва:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[[], [], []] &lt;br /&gt;[[], [], []] &lt;br /&gt;[[], [], []]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Това е полето. Следващата стъпка е да се създаде списък със неговите елементи(редове, колони, диагонали):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#първия списък от матрицата е и първия ред&lt;br /&gt;#съответно същото се отнася и за другите редове&lt;br /&gt;row1=matrix[0] &lt;br /&gt;row2=matrix[1] &lt;br /&gt;row3=matrix[2] &lt;br /&gt;&lt;br /&gt;#съответните колони са съответните&lt;br /&gt;#редове от списъците, първите елементи&lt;br /&gt;#cа от първата колона, и т.н. &lt;br /&gt;col1=[x[0] for x in matrix]&lt;br /&gt;col2=[x[1] for x in matrix]&lt;br /&gt;col3=[x[2] for x in matrix]&lt;br /&gt;&lt;br /&gt;#диагоналите са ясни, надявам се.&lt;br /&gt;diag1=[matrix[0][0],matrix[1][1],matrix[2][2]]&lt;br /&gt;diag2=[matrix[2][0],matrix[1][1],matrix[0][2]]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;и самия списък rcd(съкратено от редове, колони и диагонали):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;rcd=(row1,row2,row3,col1,col2,col3,diag1,diag2) &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Имаме функция която ще провери дали в някой от тези елементи има 3 еднакви елемента(X или O), имаме и функция която ще върти ходовете за да определи кой е победител и т.н., няма да се занимавам с цялата програма, основната идея беше да имам списък от елементите, и за да видим дали след някой от ходовете, нямаме печеливша тройка. Оказа се че програмата не работи както трябва, ако направиш печеливша 3-ка по диагонал или колона, не печелиш. първия ми заподозрян беше функцията good(), предположих че може би тя не си върши работата правилно. След блъскане на главата ми с нея, си легнах, без решение. След като спах около 1 час, се събудих, сетил се за причината. Все още нямах решение, просто станах, записах причината на едно листче, и си легнах. На листа е записано "списъкът се променя, но колоните и диагоналите-не". Сетих се къде е проблема, списъкът е съставен от списък със списъци. Списъците могат да се променят, това е цялата идея, имам един глобален списък, който променям, след това инспектирам, но колоните и диагоналите са указатели към първоначалните елементи([]), които по късно се заменят със X или O, докато редовете са указатели към целите списъци от списъци([[],[],[]]), което означава че row1,2 и 3 се променят по очакванията, но col1,2,3 и diag1 и 2, не се променят както трябва. Първото решение беше да се сложи всичко това във функция която да рефрешва съдържанието на всички елементи, това е и прословутия хак, около който се върти всичко:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def refresh():&lt;br /&gt;    row1=matrix[0]&lt;br /&gt;    row2=matrix[1]&lt;br /&gt;    row3=matrix[2]&lt;br /&gt;    col1=[x[0] for x in matrix]&lt;br /&gt;    col2=[x[1] for x in matrix]&lt;br /&gt;    col3=[x[2] for x in matrix]&lt;br /&gt;    diag1=[matrix[i][i] for i in xrange(3)]&lt;br /&gt;    diag2=[matrix[i][m] for (i,m) in zip((2,1,0),xrange(3))]&lt;br /&gt;    #най- грозния ред:&lt;br /&gt;    global rcd                                  &lt;br /&gt;    rcd=(col1,col2,col3,row1,row2,row3,diag1,diag2)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Забелязвате че просто на променливите им ъпдейтваме съдържанието, имаме една глобална променлина rcd, която приема нужните стойности, и след това с good() можем да я проверим за съвпадения(в тази версия на сорса, вече се казва same()). Този код работи, втората версия от горния линк е работеща игра на морски шах, работи и няма този бъг. Всъщност бъгът си е там, но просто сме го заоликолили. Истинския проблем е че зависех от един куп глобални променливи, които се променят постоянно и трябва да им следя състоянието. Това доведе до проблеми, и след като ги пооправих, да не си личи кафявото по гащите ми, реших да преработя програмата използвайки идеите на функционалното програмиране. Резултатът е пет функции, и сериозно опростяване, виждате в първия линк колко прост е кода в 3-тата версия, по къс е и няма глобални променливи, спестих и локални променливи на местата където можех, също така се опитах да изолирам до някъде страничните ефекти(присвояване, принтиране), но не се увлякох особено много, можех да напиша програмата в още по функционален стил, можеше и да я напиша на scheme(може да пробвам), можех да се гавря с езика, &lt;a href="http://www.pick.ucam.org/~ptc24/yvfc.html"&gt;както тук са направили колегите.&lt;/a&gt; Но разбира се аз не съм от тея които бъркат пръднята с аналния оргазъм, за това реших да не насилвам python да го правя на lisp. &lt;br /&gt;&lt;br /&gt;Това беше един сравнително приличен пример за използването на полезни функционални идеи, във един обектно ориентиран език(ооп понякога е просто процедурно програмиране, със фънки синтаксис).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-7373555813087222711?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/7373555813087222711/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=7373555813087222711' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/7373555813087222711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/7373555813087222711'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/blog-post_30.html' title='Бъг Ми'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-4766733520467230473</id><published>2008-09-29T22:32:00.002+03:00</published><updated>2008-09-29T23:35:52.754+03:00</updated><title type='text'>Липсвах ли ви?</title><content type='html'>&lt;style type="text/css"&gt;  &lt;!--   @page { margin: 2cm }   P { margin-bottom: 0.21cm }  --&gt;  &lt;/style&gt;  &lt;p style="margin-bottom: 0cm;"&gt;Този пост е нещо като равносметка за последната 1 година, малко сме далече от нова година, ама аз не движа по човешкия календар(прекалено съм готин за да се подчинявам на човешките дати). Най вече ще говоря за прогреса ми с програмирането. Определено има напредък. Почваме с нещата които съм изчел:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Прочетох един куп  книги до край, това не ми се е случвало  много често. Сред тях „Да научим Python“.  „Dive into Python“ и „Learn Scheme in a fixnum of days“.  Преди малко повече от година прочетох  и Unix на Крис Херборт, интересна книга,  която не е особено добра, но свърши  работата си да ме научи на най-най-  основните неща свързани със Линукс,  също така  ме запали по Vim, въпреки че  информацията за него вътре е прекалено  малко.   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Прочетох много книги  до половината(или някъде между първата  и последната страница). Това включва  „Програмния език С“ на Керниган и  Ричи, „SICP“ на Абелсън и Сусман(също  така изгледах и половината лекции от  поредицата, препоръчвам на всички  маниаци), „Programing Python“, книга която тежи  колкото мен(65 кила), „Езицици за  функционално и логическо програмиране  I-ва част“ на М. Тодорова, книгата ми се  струва свястна, но в нея има прекалено  много математически формули(математическата  нотация може да бъде доста грозна, ако  си развален от python), както и безсмислени  схеми и диаграми, които не ми говорят  нищо, дори няма легенда за тях(личи си  че е учебник за студенти, не е писан за  простосмъртни като мен). Иначе не е лоша  книга, смятам да я довърша. Други книги  от този параграф са и учебника ми по  физика от 8-ми клас(сетих се).   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Много, много блог  постове, ама много, казвам много,  разбирайте че цялото ми лято е прекарано  в програмистката блогосфера(hacker news,  reddit). Научих доста от други хора като  мен, обикновени програмисти, които си  пишат относно разни глупости които ги  кефят.   &lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;Може да  се каже, че за една година програмиране, начинът ми на мислене се промени значително. Освен по умен(сериозно, поумнял съм), станах и по арогантен и нихилистично настроен към някой неща, и преди бях така, обаче сега съм направо задник с 3 бузи(пфхааа).&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;Интересите ми от хуманитарните науки се пренесоха към техническите(никога не съм вярвал че български език, ще ми стане по приятен предмет от литературата, или физиката по интересна от философията).  &lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;Днес свърших един мой малък проект(незнам дали е свършен, но е по добре от вчера). Става въпрос за играта ми на морски шах, написана на python. Първата версия я пуснах август, преди няколко дена открих бъг(не бях пипал играта от доста време и за това ми трябваше толкова дълго), поправих бъгът с един бърз хак(някой ден ще блогвам специално за него, като контра пример за това как не бива да изглеждат хаковете). Днес разсъждавах как да подобря програмата. Нямаше причина да я подобрявам, работеше и нямаше бъгове, защото я тествах доста дълго, ако във всичките и 60 реда код имаше бъг, шях да го намеря. Но кодът беше доста грозен, ама много грозен. Не го пренаписах, може да се каже че го префасонирах в по елегантен вид, сега е 45 реда, и е по приятна гледка. Когато писах кода, вкарах в действие знание, което имах от  функционалното програмиране и Scheme, което означава че е добра идея да се знае за това, защото първото ми решение беше нещо като заобиколка на проблема, когато префасонирах кода във функционален стил, проблемът го нямаше вече, ако бях започнал така още от началото, нямаше да има този гаден бъг. Но това е животът, днес помъдрях още малко, осъзнах че си е струвало четенето, сега е време да пиша повече код. &lt;a href="http://www.math10.com/informatika/viewtopic.php?t=3131"&gt;Ако някой се интересува от играта, тук може да видите развитието на кода, с обяснения от моя страна.&lt;/a&gt; Приемете това като извинение, защото ме мърди за блогвам за него, вече съм го описал в темата във форума, но определено ще напиша пост специално за хака със refresh(). Лека нощ и приятни сънища, сбогом, леща нощ...&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-4766733520467230473?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/4766733520467230473/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=4766733520467230473' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/4766733520467230473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/4766733520467230473'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/blog-post_29.html' title='Липсвах ли ви?'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-5043665833436829670</id><published>2008-09-25T22:10:00.003+03:00</published><updated>2008-09-25T22:18:23.697+03:00</updated><title type='text'>Жълто, ама не е злато.</title><content type='html'>Случвало ли ви се е да си напишете ника в  google или друга търсачка и да намерите нещо което сте писали отдавна, от което да ви е срам? На мен ми се случва учудващо често. Ето на какво попаднах:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dreal.net/wiki/index.php/%D0%A5%D0%B0%D1%80%D0%B4%D0%BA%D0%BE%D1%80"&gt;http://dreal.net/wiki/index.php/%D0%A5%D0%B0%D1%80%D0%B4%D0%BA%D0%BE%D1%80&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dreal.net/wiki/index.php/Pavelludiq"&gt;http://dreal.net/wiki/index.php/Pavelludiq&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Мамка му. Първото дори не е смешно, ако не сте запознати със състава на пънкарскaтa и хардкор субкултури. Препоръчвам ви да отворите линковете на своя отговорност. Имам чувството че съм поумнял от тогава, вие какво мислите?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-5043665833436829670?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/5043665833436829670/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=5043665833436829670' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5043665833436829670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5043665833436829670'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/blog-post_25.html' title='Жълто, ама не е злато.'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-7659369546174427009</id><published>2008-09-24T19:52:00.006+03:00</published><updated>2008-09-24T20:33:25.989+03:00</updated><title type='text'>Трябват ни повече псувни във вестниците!</title><content type='html'>Нямах няколко дни нет, за това не ъпдейтвах от известно време. Днес, понеже ми пуснаха отново нета, реших да понаваксам малко от изпуснатото. Разбира се, в предишен блог пост бях споменал че &lt;a href="http://svejo.net/"&gt;svejo.net&lt;/a&gt; ми е безполезен сайт, защото голяма част от съдържанието ми е безинтересно, за разлика от други подобни сайтове, които посещавам, обаче от там ми идва трафик понякога, така че от време на време преглеждам ако има някакви коментари оставени там за публикациите ми, или ако случайно намеря някой интересен пост, и днес чета че някакви мутри пребили някакъв журналист. Хм, да взема да блогвам за това ли? Нее, не е в мой стил, може би сте забелязали че избягвам поличитески теми, май само един път писах за Русия и Грузия и толкоз. Политика, икономика, социология, майната му на това, аз съм нърд, кефя се на технологии, музика, изкуство, за това блогвам. Разбира се реших поне да спомена това събитие с журналиста, всъщност, ще спомена още някой неща, които други блогери крещят, става въпрос за оня протест, срещу шпионирането, както и онова дето ония мутри щели да махат анонимноста на нета, или някакви такива измислици, защо не блогвам за тея работи? Имат общо със технологията до известна степен, интернетът е основната технология, която позлвам, засяга ме. Е, други хора блогван за това, още един, дето само говори не му трябва на блогосферата, трябват ни повече артисти. Ами, всъщност майната му на всичко. Да сменим темата на нещо което ИМА значение. Например, майната му, не ми се блогва, пише ми се поезия:&lt;br /&gt;&lt;br /&gt;Шибаните хора, с шибани идеали,&lt;br /&gt;шибани ченгета, с шибани морали,&lt;br /&gt;шибани дебелаци, и шибани лайняри,&lt;br /&gt;майната им,&lt;br /&gt;шибана е тайната им,&lt;br /&gt;със лопати в гъзовете,&lt;br /&gt;всички просяци ще мрете!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Толкова много обичам тая шибана дума, шибано, шибано, шибано....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-7659369546174427009?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/7659369546174427009/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=7659369546174427009' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/7659369546174427009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/7659369546174427009'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/blog-post_24.html' title='Трябват ни повече псувни във вестниците!'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-3173576470821994032</id><published>2008-09-19T21:00:00.003+03:00</published><updated>2008-09-19T21:17:31.794+03:00</updated><title type='text'>"Python: червеното хапче" preview II</title><content type='html'>Вчера бачках доста до късно и свърших с първата част на туториъла. Както може би някой от вас знаят, тази първа част е базирана изцяло на блог постовете за python, които пуснах тук, някой от тях бяха напълно пренаписани, някой само леко редактирани(най леко редактирах и най популярния &lt;a href="http://nosleepbg.blogspot.com/2008/08/python-5.html"&gt;пети&lt;/a&gt; пост). Добавих и още една глава, за модулите и импортирането, първата и версия, която вчера написах със едва отворени очи, сега ви предоставям за четене, не знам дали няма да я променя до деня в който излезе целия туториъл, всъщност, този ден все още е неизвестен, защото все още не съм сигурен колко време ще ми отнеме да напиша втората част. Както може би сте разбрали от предишни постове, тя ще ви учи как да чертаете на екрана с модула turtle, и за това беше добра идея да добавя и малко информация за модулите и импортирането, вместо да го обяснявам във втората част. Ето и самата глава:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt; В програмирането обикновено когато програмата стане достатъчно голяма, тя започва да се разделя на отделни модули с логика. Тези модули са отделни файлове със код. Тези същите файлове които завършват с .py. Понякога имаме нужда от допълнителни инструменти(функции и класове) и ще открием че някой вече е написал нещо което ще ни свърши работа. Вместо да пишем свои собствени инструменти, няма да е лошо ако можехме да вземем на готово чужди такива. Python идва в комплект със доста голямо количество библиотеки и модули, които можем да използваме, също така понякога ние самите ще си напишем библиотеки под формата на други модули, и ще искаме да можем използваме функциите и класовете от тях и в новата си програма. За целта ще можем да използваме конструкцията import. Нищо сложно, просто създаваме една функция, да речем от горните примери функцията square в папката ви C:\mypython\:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;square=lambda x: x*x&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt; Този код го запишете в файла square.py. Отворете command prompt-а и напишете следната команда:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;cd c:\mypython\&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt; &lt;br /&gt; С тази команда се придвижвате към директорията в която е вашия файл. След това стартирайте python като напишете следното за уйндолс:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;c:\python25\python.exe&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt; А за Линукс е просто python.&lt;br /&gt; Сега можете да импортирате файла си със командата import:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&gt;&gt;&gt;import square&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt; Сега имаме достъп до имената във square, там има само едноименната функция:&lt;br /&gt;&lt;br /&gt; &lt;blockquote&gt;&lt;pre&gt;&gt;&gt;&gt;square.square(4)&lt;br /&gt; 16&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt; Сега ако искаме да добавите функция във файла си, и после да я имате в интерпретатора, може да използвате функцията reload() която презарежда импортирани файлове. Да речем че добавим следната функция към файла ни:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;def sumofsquares(x,y):&lt;br /&gt;   return square(x)+square(y)&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt; Сега в интерпретатора пишем:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&gt;&gt;&gt;reload(square)&lt;br /&gt;&gt;&gt;&gt;square.sumofsquares(4,4)&lt;br /&gt;32&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt; Това е ок, но да речем че искаме да импортираме само една от двете функции, можем да го направим по следния начин:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&gt;&gt;&gt;from square import square&lt;br /&gt;&gt;&gt;&gt;square(4)&lt;br /&gt;16&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt; Можем също така да импортираме неща и да им даваме имена:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&gt;&gt;&gt;from square import square as sq&lt;br /&gt;&gt;&gt;&gt;sq(4)&lt;br /&gt;16&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt; Можете също така да импортирате всички имена, без да трябва по късно да осъществявате достъп до тях със операторът '.', просто пишем:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt;from square import*&lt;br /&gt;&gt;&gt;&gt;square(4)&lt;br /&gt;16&lt;br /&gt;&gt;&gt;&gt;sumofsquares(4,4)&lt;br /&gt;32&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt; Това не се препоръчва много, защото е възможно да се импортират имена, които да не искаме да импортираме, също така се замърсява глобалната среда с прекалено много имена и по късно трудно се разбира коя функция от кой модул е и четимоста на кода отива на вятъра.&lt;br /&gt; Е, това е за сега, първата част приключи.&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/7202293029705073090-3173576470821994032?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/3173576470821994032/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=3173576470821994032' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/3173576470821994032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/3173576470821994032'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/python-preview-ii.html' title='&quot;Python: червеното хапче&quot; preview II'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-2501514439794757165</id><published>2008-09-18T16:40:00.002+03:00</published><updated>2008-09-18T16:46:06.672+03:00</updated><title type='text'>Безплатни онлайн курсове от Станфорд</title><content type='html'>&lt;a href="http://see.stanford.edu/default.aspx"&gt;Тук&lt;/a&gt; може да си изтеглите безплатни курсове и материали(задачи за домашни, изпитни материали) от Станфорд. Курсовете са 10 и обхващат различни теми, компютърни науки, роботика, електронно инжинерство, изкуствен интелект... Лично аз си тегля в момента всички лекции и тази година ще си ги гледам на mp4-ката.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-2501514439794757165?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/2501514439794757165/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=2501514439794757165' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/2501514439794757165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/2501514439794757165'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/blog-post_18.html' title='Безплатни онлайн курсове от Станфорд'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-992584279490397652</id><published>2008-09-18T11:54:00.003+03:00</published><updated>2008-09-18T12:09:50.821+03:00</updated><title type='text'>"Python: червеното хапче" preview</title><content type='html'>Това доста тъпо заглавие което измислих, вдъхновен от матрицата, е на туториълът за който говоря доста от отдавна. Напредвам сериозно, вече написах почти половината от първата част, която ще е базирана на блог постовете които публикувах тук, но малко по добре написани, и поносими за четене. Ето бета версия на втора глава, която обяснява как се изпълнява код. Вчера я пренаписах за 3-ти път:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;blockquote&gt;        В тази глава ще ви запозная със основните неща които трябва да знаете. Вече видяхте как се изпълнява код. Сега по подробно. Кодът се изпълнява по 2 начина. Първия е като се пише директно в интерпретатора, този който започва със &gt;&gt;&gt; . Другия начин е да се запишете кодът във файл, и да се отвори със Python. Файловете винаги завършат със .py. Когато пишем код директно в интерпретатора, ние ще видим резултатът веднага, но кодът няма да бъде запазен, той се губи в мига в който затворите интерпретатора. За да не се губи код, съхранявайте го във .py файлове. Стартирането е под Линукс е лесно, само отваряте интерпретатора и пишете python file.py, където file.py е вашата програма, интерпретаторът ще отвори файла, ще го изпълни и ще върне резултат. При уйнсолс нещата са малко по сложни. Вече споменах че можете да използвате IDLE. Препоръчвам ви да си направите папка директно във C:\, за да ви е лесно да я отворите. В нея ще съхранявате всичките си файлове, разбира се става и на всякъде, но аз предпочитам адреса да е кратък, за да не печатам много. Да речем, създайте папката с името mypython във C:(или ако предпочитане някоя друга папка) Сега пътят до папката е C:\mypython\ . Да речем че там сме съхранили файла от миналата глава, сега имаме файла C:\mypython\stupid.py, за да го стартираме имаме 2 избора, първия е със дясното копче на мишката да дадем edit with IDLE, след което даваме на Run-&gt;run module и би трябвало да видите изписан резултатът на екрана във другия прозорец с интерпретатора. Не е толкова трудно, сега по трудния вариант, макар и командния ред в уйндолс да е малко черна магия, всъщност нещата са доста лесни. Отворете command prompt-а от старт менюто, както виждате, той ви показва в коя директория се намирате. За да използвате командния промпт, първо трябва да добавите python към него, за целта напишете&lt;br /&gt;&lt;br /&gt;                 path=c:\python25\;%path%&lt;br /&gt;&lt;br /&gt;        Това ще добави python към командния ред, и ще си спестите малко писане, сега можете да отворите файла stupid.py като напишете:&lt;br /&gt;&lt;br /&gt;  python c:\mypython\stupid.py&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        Готово, вече стартирахте програмата си. Малко много говорих за уйндолс, но предполагам че доста от вас ползват него. Ако искате да научите повече, поразровете се в нета.&lt;br /&gt; Има още нещо което трябва да научите. Това са коментарите. Коментарът е текст, който интерпретаторът игнорира, той не се изпълнява от компютърът, а е само там за да могат програмистите да оставят малки съобщения за други програмисти, или за себе си за в бъдеще, нещо като малки бележки, например обяснение защо този код е написан така или бележка която да напомня че даден код трябва да се пренапише, или че има грешка в даден код. Ето как изглеждат коментарите:&lt;br /&gt;&lt;br /&gt;     #Този текст е коментар, той започва със знакът '#',&lt;br /&gt;     #всеки ред със решетка в началото си е коментар&lt;br /&gt;     #и се се игнорира от  #интерпретаторът.&lt;br /&gt;     #Те могат да се разпространяват на много редове,&lt;br /&gt;     # но трябва всеки да започва с решетка&lt;br /&gt;&lt;br /&gt; Има и още един вид коментари, със тройни кавички ''' '''(“““ “““ също става), който може да се простира на много редове:&lt;br /&gt;&lt;br /&gt;     '''Този коментар е на много&lt;br /&gt;        редове&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/7202293029705073090-992584279490397652?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/992584279490397652/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=992584279490397652' title='2 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/992584279490397652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/992584279490397652'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/python-preview.html' title='&quot;Python: червеното хапче&quot; preview'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-2133765723814379236</id><published>2008-09-15T23:29:00.001+03:00</published><updated>2008-09-15T23:33:42.399+03:00</updated><title type='text'>Даскалото почва, за щастие последна година!</title><content type='html'>&lt;style type="text/css"&gt;  &lt;!--   @page { margin: 2cm }   P { margin-bottom: 0.21cm }  --&gt;  &lt;/style&gt;  &lt;p style="margin-bottom: 0cm;"&gt;Когато събереш хората от моя клас, обикновената дискусията протича по следния начин:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Първо кратка дискусия  за плесен и червеи които промиват  мозъците на мравки и буболечки и ги  убивах като им експлодират мозъците,  или като ги принуждават да се самоубият  във вода.&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Дискусия за големия  адронен корайдер&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;дискусия за теорията  на струните(свързано с горното)&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;дискусия за квантовата  физика и шанса да премина през една  стена, определен от квантовата механика&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;дискусия за дядо  коледа, дали е капиталист или социал  декомкат, стигнахме до извода че е  християн-демократ&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;дядо мраз и комунистите&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;северния полюс и  комунистите&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Дискусия за KRS One, ако  не знаете кой е той, намерете си музиката  му, той е философ и учител, и хардкор  рапър.   &lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;Днешния блог пост е по кратък. Тъй като почва даскалото може да очакване 2 неша:&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Ще ъпдейтвам по  рядко, около 3 пъти седмично, може и по  рядко, или по често, зависи от това колко  ми е напрегната програмата, не се  сърдете, няма да ви липсвам.&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Ще пиша по технически  неща, или най малкото една ли ще има  блогове като този, или разни философски  есета като предишния пост.  Ако напиша  нещо интересно обаче, ще го публикувам,  просто няма да ми е това фокусът, блогът  ми си е и винаги ще бъде технологично  ориентиран.   &lt;/p&gt; &lt;/li&gt;&lt;/ol&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;Причините за това че ще намаля малко темпото е не само даскалото(то е дори по малката причина). Проосто искам да поработя върху някой истински проекти, да имам нещо за което да блогвам, забелязах че последните няколко дни нямам никъкви теми, всъщност това е защото когато човек само блогва, няма за какво да блогва, това е нещо като парадокс.  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-2133765723814379236?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/2133765723814379236/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=2133765723814379236' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/2133765723814379236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/2133765723814379236'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/blog-post_15.html' title='Даскалото почва, за щастие последна година!'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-1387547323057011354</id><published>2008-09-14T00:14:00.001+03:00</published><updated>2008-09-14T00:33:29.581+03:00</updated><title type='text'>Перфекционизъм</title><content type='html'>&lt;style type="text/css"&gt;  &lt;!--   @page { margin: 2cm }   P { margin-bottom: 0.21cm }  --&gt;  &lt;/style&gt;  &lt;p style="margin-bottom: 0cm;"&gt;Перфекционизъм  &lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;Версия 4*&lt;/p&gt;  &lt;p style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;      Причината поради която не поставах нищо вчера, беше че написах първия си опит за този пост, след това го препрочетох и осъзнах колко е скапан, след това започнах да разсъждавам и като всеки друг път когато разсъждавам върху нещо, стигнах до интересен извод. Аз се превръщам в перфекционист.&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;     Какво е перфекционизъм? Преди време тренирах паркур. Основната идея във паркура,  е че всеки може да прескочи парапет, важното е да го направиш с финес и елегантност, и да изразходваш най малко енергия. Идеята не е да правиш пируети и да се фукаш с трикчета, а да се придвижиш от точка А до точка Б най ефективно. Това е нещото което прави паркура освен спорт и изкуство. Перфекционизмът е стремежът да подобряваш това което правиш, в същото време опитът ти те кара да подобряваш самият себе си.&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;     Започнах да се стремя към перфекционизъм от скоро, дни всъщност. Може би защото започнах да пиша повече, и забелязах че мога да се справя по добре, полагам толкова усилие.  Програмиране, рисуване и блогване са 3-те ми хобита. Напоследък най много пиша, на второ място кодирам, и най малко рисувам. Преди винаги съм рисувал с химикал малки карикатури  и комикси, сега рисувам с молив, и открих, че ползвам гумата доста често, очевидно стремежът към съвършенство се е пренесъл и там.&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;     Може би коренът на този стремеж идва от програмирането. При програмирането, ако си мислиш че можеш да напишеш някаква програма перфектно от първия път, жестоко се лъжеш. И не говоря само за бъгове, а за архитектура и дизайн, тези неща почти винаги трябва са променят в последствие, програмирането е мястото където перфекционизмът е най нужен.&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;     Не съм особено добър художник, или програмист, или писател(ър..блогер...ъ..не съм писател..) , постоянно уча нови неща и се стремя към подобрение. Ако сте чели по старите ми блог постове, повечето са УЖАСНИ, особено онези за Python, те са супер скапани, нищо чудно че вече пренаписах половината за pdf варианта на туториъла, те са просто ужасни и плачеха за редакция. Надявам се самия туториъл да стане добре, полагам доста труд.  &lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;     Специално за писането, една от причините да полагам толкова труд, е може би факта че чета доста блогове, и повечето са или на моето ниво, или малко по добре, или в някой случаи супер зле. Но сред тях има няколко които са страшно добри, точно тези блогове(и не само, тук включвам есета, туториъли, документация и всякакъв друг текст публикуван в интернет) ме карат да се стремя да съм по добър, чувствам се задължен поне да опитам да пиша добре, и да ми е приятно да чета старите си писания.  &lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;     Въпреки това, след няколко седмици(редакция: 1 час :D)ще отворя този документ и ше си кажа “Можех да се справя и по добре“, и все пак тази реакция е по добра от колкото сегашното “Как съм могъл да напиша това? Заслужавам анална клизма за наказание“. Това е нормално, ако нещо дори малко не те накара да искаш да го промениш, не си истински перфекционист.&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: italic;"&gt;&lt;span style="font-size:85%;"&gt;&lt;blockquote&gt;*Първата версия беше половин страница, изхвърлих я напълно, втората беше 2 страници, от тези 2 страници остана само първите 2 параграфа, третата версия ми хареса и само леко я коригирах, когато я поствах, което означава че на практика това е 4-та версия. Писането общо отне 5 часа.  &lt;/blockquote&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-1387547323057011354?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/1387547323057011354/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=1387547323057011354' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/1387547323057011354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/1387547323057011354'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/blog-post_14.html' title='Перфекционизъм'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-5326366762370481233</id><published>2008-09-10T13:06:00.003+03:00</published><updated>2008-09-10T15:02:20.621+03:00</updated><title type='text'>XKCD, или как се научих да не се притеснявам и да обичам математиката! част 1</title><content type='html'>&lt;a href="http://xkcd.com/"&gt;XKCD&lt;/a&gt; е известен уеб комикс, създаден от &lt;a href="http://en.wikipedia.org/wiki/Randall_Munroe"&gt;Рандъл Мънроу &lt;/a&gt;. Рандъл е физик и програмист и супер забавен човек. А комиксът му е един от най популярните в интернетите(Джордж Буш така ги нарича "The Internets"). Този пост е посветен на XKCD и представлява списък на някой от любимите ми комикси, те са над 470 и продължават да растът със скорост от 3 комикса на седмица. Комиксът е за романтика, сарказъм, математика и език и е супер забавен.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/45/"&gt;Schrodinger&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Това е 45-тия подред комикс, ако не разбирате от квантова физика поне малко, и ако не знаете за &lt;a href="http://en.wikipedia.org/wiki/Schr%C3%B6dinger%27s_cat"&gt;котката на Шрьодингер&lt;/a&gt; няма да разберете този комикс :D Също така не забравяйте да сложите мишката си на картинката, Alt- текстът който се появява го има във всеки комикс на XKCD&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/54/"&gt;Science&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Науката работи кучки! За да разберете това ви трябва &lt;a href="http://en.wikipedia.org/wiki/COBE"&gt;това&lt;/a&gt; Става въпрос за фоновата радиация на вселената и т.н&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/55/"&gt;Useless&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Това е безспорно любимият ми от всикчи, математиката е безполезна когато става дума за любов.&lt;br /&gt;&lt;a href="http://xkcd.com/62/"&gt;&lt;br /&gt;Valentine - Karnaugh&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Karnaugh_map"&gt;И отново Wikipedia на помощ!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/66/"&gt;Abusive Astronomy&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Обидна астрономия :D Задници!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/72/"&gt;Classhole&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Задник от класа(класник!?!) &lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/74/"&gt;Su Doku&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Бинарно судоку :D &lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/79/"&gt;Iambic Pentameter&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Iambic_pentameter"&gt;&lt;br /&gt;http://en.wikipedia.org/wiki/Iambic_pentameter&lt;/a&gt; Това почти ми върна интереса към литературата :D &lt;br /&gt;&lt;a href="http://xkcd.com/85/"&gt;&lt;br /&gt;Paths&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Това и аз съм го правил :D &lt;br /&gt;&lt;a href="http://xkcd.com/86/"&gt;&lt;br /&gt;Digital Rights Management&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fuck the RIAA&lt;br /&gt;&lt;a href="http://xkcd.com/87/"&gt;&lt;br /&gt;Velociraptors&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Авторът Рандъл има някъква фобия от раптори, и има основание, рапторите са опасни!!! &lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/89/"&gt;Gravitational Mass&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Комиксът си се коментира сам.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/90/"&gt;Jacket&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Това е супер смешно ако го преведеш на бг :D &lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/91/"&gt;Pwned&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ако CS беше текстова игра :D &lt;br /&gt;&lt;a href="http://xkcd.com/94/"&gt;&lt;br /&gt;Profile Creation Flowchart&lt;/a&gt;'&lt;br /&gt;&lt;br /&gt;Как се създава AIM профил :D &lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/99/"&gt;&lt;br /&gt;Binary Heart&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;и ние програмистите имаме сърца :D &lt;br /&gt;&lt;a href="http://xkcd.com/103/"&gt;&lt;br /&gt;Moral Relativity&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Не е задължително за този комикс, но е добре да почетете малко &lt;a href="http://en.wikipedia.org/wiki/Theory_of_relativity"&gt;Айнщайн&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/105/"&gt;&lt;br /&gt;Parallel Universe&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Един от най странните комикси.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/111/"&gt;Firefox and Witchcraft - The Connection?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;всички които използваме firefox сме вещици, запомнете, библията е closed source :D&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/113/"&gt;Riemann-Zeta&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Riemann_zeta_function"&gt;http://en.wikipedia.org/wiki/Riemann_zeta_function&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/114/"&gt;Computational Linguists&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;това вече е малко прекалено :D &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/117/"&gt;Pong&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Това е просто брутално смешно :D &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/123/"&gt;Centrifugal Force&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Джеймс Бонд, физик :D &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/124/"&gt;Blogofractal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Този изисква два линка:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Blogosphere"&gt;&lt;br /&gt;http://en.wikipedia.org/wiki/Blogosphere&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Fractal"&gt;http://en.wikipedia.org/wiki/Fractal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/128/"&gt;dPain over dt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;математиката понякога боли :D &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/134/"&gt;&lt;br /&gt;Myspace&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Мразя аутоплей!!! За това използвам flashblock.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/135/"&gt;Substitute&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;На живот и смътр!!! :D &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/138/"&gt;Pointers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Някой ден трябва да си дочета K&amp;R. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/146/"&gt;Join Myspace&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;моя акаунт не е ъпдейтванот както осъзнах че в Myspace няма нищо друго интересно освен снимки от концерти на някой банди които харесвам. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/148/"&gt;Mispronouncing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ф момента благвам това в моя уабсайт :D &lt;br /&gt;&lt;a href="http://xkcd.com/149/"&gt;&lt;br /&gt;Sandwich&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;най известния xkcd комикс!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/150/"&gt;&lt;br /&gt;Grownups&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;9 месеца и 10 дена съм официално възрастен, чувството е гадно.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/153/"&gt;&lt;br /&gt;Cryptography&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;трябва да чета повече за криптографията, тук имам бяло поле в главата си :D &lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/154/"&gt;Beliefs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ако сред вас има креационисти, ищо, съществуването ви си е достатъчно наказание :D &lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/155/"&gt;&lt;br /&gt;Search History&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;и при мен е същото, но заменете раптори със бира. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/156/"&gt;Commented&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;понякога ми се иска да беше толкова лесно.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/162/"&gt;Angular Momentum&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;романтика+наука=XKCD &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/163/"&gt;Donald Knuth&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ако не знаете кой е Доналд Кнут-&gt;&lt;a href="http://en.wikipedia.org/wiki/Donald_Knuth"&gt;http://en.wikipedia.org/wiki/Donald_Knuth&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/171/"&gt;String theory&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/String_Theory"&gt;http://en.wikipedia.org/wiki/String_Theory&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;откачена работа?!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/173/"&gt;Movie Seating&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;в alt-текста се споменава за пътуващия продавач, ако не знаете за този проблем:&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Travelling_salesman_problem"&gt;http://en.wikipedia.org/wiki/Travelling_salesman_problem&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/177/"&gt;Alice and Bob&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;отново криптография :D &lt;a href="http://en.wikipedia.org/wiki/Alice_and_Bob"&gt;http://en.wikipedia.org/wiki/Alice_and_Bob&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;това са любимите ми xkcd комикси от първите 177 комикса, ако не ме мързи ще има и още части, но едва ли, това "част 1" в заглавието е просто застраховка че ако някой ден ми доскучее, ще имам извинение да препрочета комиксите по още веднъж :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-5326366762370481233?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/5326366762370481233/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=5326366762370481233' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5326366762370481233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5326366762370481233'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/xkcd-1.html' title='XKCD, или как се научих да не се притеснявам и да обичам математиката! част 1'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-2568926042248102185</id><published>2008-09-08T19:30:00.003+03:00</published><updated>2008-09-08T20:24:26.096+03:00</updated><title type='text'>Import turtle</title><content type='html'>Открих един модул за Python наречен turtle. В момента пиша и туториъл за него, който ще бъде включен във pdf туториълът ми за Python който е базиран на поредицата от туториъли които постнах тук(само че добре оформен, с цветен код и повече инфо и екстри + още няколко глави, които може би ще постна и тук).&lt;br /&gt;&lt;br /&gt;Та модулът turtle е доста интересна играчка, ако някой от вас знаят какво е LOGO, това е език за деца, при който се пишат команди с които се управлява една "костенурка" на един екран и се чертаят фигурки и такива неща. Страхотен език, учил съм го като малък, и когато открих модулът turtle, който позволява да се чертаят такива неща и в Python направо онемях и започнах да си играя веднага. Написах няколко функции които чертаят готини фигури. Първата функция чертае кръг, модулът има вградена функция за чертане на кръг, но тя е доста бавна, за целта пиша ето този код:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;import turtle&lt;br /&gt;&lt;br /&gt;def circle():&lt;br /&gt;    for x in xrange(360):&lt;br /&gt;        turtle.forward(1)&lt;br /&gt;        turtle.left(1)&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;първия ред импортира функциите в turtle(в туториълите не съм говорил много за модули и импортиране, но в pdf-а ще има инфо за това). След това функцията просто изпълнява едни и същи действия 360 пъти, чертае черта дълга един пиксел, след това променя посоката си с 1 градус, така след 360 итерации получаваме кръг. Това е доста яко, реших да видя дали можем да получим нещо по сложно, реших да начертая сложен кръг, съставен от малки кръгове, така че да прилича на спирала, за целта написах тази функция:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;def ccircle(f):&lt;br /&gt;    for x in xrange(360):&lt;br /&gt;        circle()&lt;br /&gt;        turtle.up()&lt;br /&gt;        turtle.forward(f)&lt;br /&gt;        turtle.left(1)&lt;br /&gt;        turtle.down()&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Тук кодът е приблизително същия, при всяка итерация, функцията чертае кръг, след това костенурката която чертае на екрана се повдига, за да не може да чертае вече, мести се f пиксела на пред, изменя посоката си с 1 градус и след това се връща ан долу, за да може да пише. Така се получава един доста голям кръг от кръгове, в зависимост от f кръговете са близко един до друг и се пресичат в по голямата си част, или са далече и не се пресичат, разбира се е нереалистично да даваме по големи стойности на f от 4-5 защото кръгът ще е прекалено голям за да се побере на екрана, дори сега не се побира правилно, защото е голям и костенурката пие в средата на екрана. Следващата функция която написах е такава която влага такива кръгове един в друг, на практика се получава нещо от рода на голям кръг, след това по малък, и още по малък в него, като матрйошка, но не са концентрични, т.е. кръговете имат допирна точка в долната си част, и не изглеждат като мишена, а като топчета, вкарани една в друга, гравитацията ги дърпа на долу:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;def cccircle(n):&lt;br /&gt;    if n:&lt;br /&gt;        ccircle(n)&lt;br /&gt;        cccircle(n-1)&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Тук виждаме един доста готин трик наречен рекурсия, всъщност в туториълът този пример ще се използва именно за да се обясни рекурсия. На кратко докато n има някаква стойност(не е 0) ще се чертае кръг от кръг(ccircle) със аргумент n, след това ще се вика същата тази функция cccircle със n-1, по този начин това е нещо като цикъл, можем да получим същия резултат ето така:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;while n:&lt;br /&gt;    ccircle(n)&lt;br /&gt;    n-=1&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;така n си променя стойноста, при всеки while. това отнема доста време, чертането е бавно, все пак ако дадем на n аргумент 5, това означава че първите 2 функции от circle()(turtle.forward(1),turtle.left(1)) ще трябва да се извикат общо 1296000 пъти, като включим 4-те функции от ccircle които трябва да се извикат 1800 пъти, нещата стават тежки, отнема минути, не знам точно колко, но определено ще ви доскучае ако го гледате как чертае. И сега да стигна до интересната част. turtle има едан функция turtle.fill() която може да запълва фигури, за да я запълни първо трябва да напишем turtle.fill(1) и след това да начертаем фигурата и след това да напишем turtle.fill(0) и фигурата ще се запълни. Ако опитате да запълните горната супер сложна фигура резултатът ще е трагичен. при мен(3.4 гх,1гб рам) за няколко минути целия ми комп замря, след това крашна python,bash,прозореца на който се чертаеше както и двата ми прозореца на firefox които бяха отворени. Явно да запълниш 648000 кръга е трудна задача :D &lt;br /&gt;&lt;br /&gt;pdf-ът с туториълът незнам кога да очаквате, вече не е просто 8 блог поста в pdf формат, смятам да поработя малко върху него, имаме нужда от свестен бг туториъл.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-2568926042248102185?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/2568926042248102185/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=2568926042248102185' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/2568926042248102185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/2568926042248102185'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/import-turtle.html' title='Import turtle'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-4692114014705790233</id><published>2008-09-07T00:59:00.001+03:00</published><updated>2008-09-07T01:01:46.068+03:00</updated><title type='text'>Диктатурата в Опън Сорса</title><content type='html'>&lt;style type="text/css"&gt;  &lt;!--   @page { margin: 2cm }   P { margin-bottom: 0.21cm }  --&gt;  &lt;/style&gt;  &lt;p style="margin-bottom: 0cm;"&gt; Днес се замислих върху един аспект на разработката на софтуер, върху който в последните месеци не съм се замислял особено. Преди няколко години открих концепцията на отворения код и свободния софтуер.  Като цяло идеята ми хареса, но какво разбира едно 16 годишно пишлеменце без понятие от програмиране? Преди близо 13 месеца преминах напълно на Линукс, и разбира се започнах да попивам още повече информация относно тази култура, която дойде с операционната система(културата в последствие се оказа много по благотворно за мен, от колкото самата система, всичко което правя на Линукс, го мога и на уйндолс, но я няма културата).  Гледах всеки възможен документален филм, четох много туториъли, както и статии за културата, също така и технически такива. Най- важното от тях се оказа &lt;a href="http://www.catb.org/%7Eesr/faqs/hacker-howto.html"&gt;Как да стана хакер.&lt;/a&gt; То се оказа важно, защото ме вдъхнови отново да се занимавам с програмиране, дейност с която бях решил да не се занимавам, поради тъпи причини, най- важната от тях беше че ще ми се наложи да работя в офис, зад компютър докато се пенсионирам, със шеф и ще трябва да пиша код по цял ден и общо взето че ще имам скучна работа. Разбира се опън сорс-а ми отвори очите, че има и забавна страна на нещата, всички тези хора пишат код за без пари, най- вероятно е забавно? Защо ще го правят иначе. Това есе беше общо взето началото      . По късно следваха есетата на &lt;a href="http://www.paulgraham.com/index.html"&gt;Поул Греам.&lt;/a&gt; От тях открих още един начин да избягаш от така наречената “Ферма с кубчета“ , той говори за малки компании, стартирани от хакери, в които те имат контрол, а не мениджърите и хората в костюми. Тези компании наречени “Start-up's“ Са малки, езиците на които се пише софтуера са забавни и мощни(python, ruby), а не скучни и корпоративни(java,C#). Продуктите са интересни и полезни(reddit, youtube) а не скучни(windows, IE). Опън сорс софтуерът и старт-ъп компаниите имат много общи черти, и нерядко са полезни един на друг. Някой от общите им неща са:&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;И двете в повечето  случаи се управляват от хакери&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Като цяло са интересни  технологии&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Създателите им се  интересуват повече от това да изкарат  добър софтуер, от колкото да печелят  пари(старт-ъпите имат интерес от  качеството, защото ако е качествено,  ще печелят пари, те нямат преимуществата  на големите компании)&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;И двата типа модели  на разработка имат голям интерес от  това потребителите им да са доволни, и  често разчитат на това хората да им  пращат мнения и препоръки, първите имат  нужда от това, защото искат по добър  софтуер, и искат софтуера им да се  използва от повече хора, същото искат  и вторите, но те имат и нуждата да  задоволяват клиентите си, клиентът е  шефът, те не могат ад си позволят да  имат скапана система за съпорт, и много  често на телефона на такава компания  ще е някой от разработчиците, който  познава системата и може дори да оправи  проблема ви докато сте на телефона,  някой други компании имат некомпетентни  телефонистки, които се консултират с  мениджърите си, които се консултират  с мениджърите на разработчиците, които  се консултират с разработчиците, които  се консултират със...&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;И двата вида организации  са очевидно непрофесионални. При опън  сорса това е очевидно, повечето от тези  хора са аматьори, които пишат код през  свободното си време, всъщност това не  е съвсем вярно, защото повечето всъщност  са професионалисти, а на някой дори им  е работата да пишат опън сорс. Вторите  също са професионалисти, защото ръководят  компания, но тази компания е малка и  тези хора са предимно млади момчета  със лаптопи в апартамент, или малък  офис.  Те не си говорят с пауърпойнт  презентации, а си говорят докато пият  кафе, не си обличат костюми, а си карат  с дънки, не работят от 9 до 5, а когато им  се работи. Последното изречение е горе  долу вярно и за двете групи.   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Много често членове  на една група, са и членове на друга.  Отличен пример са създателите на Django,  уеб фреймуъркът за Python, който набира  популярност. Създателите му Адриан  Холовати и Джейкъп Каплан-Мос работели  за малък вестник, когато създават кодът  на това което в последствие се превръща  в Django, днес Адриан има своя компания,  но продължава работа върху опън сорс  проектът си Django. Това не е изненадващо,  тези хора са едни и същи, те са хакери,  културата им е една, просто формата на  проектите им е различна.  Някой проекти  просто трябва да са компании за да могат  да оцелеят(youtube), защото имат нужда от  силен централизиран контрол, а други  не могат да оцелеят като компании(Django),  защото опън сорс алтернативите биха  ги смачкали(колко от любимите ви сайтове  са написани на .net?)&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt; Темата на поста е относно благотворителните диктатори. Може да сте чували термина Benevelont dictator for life(BDFL) Някой от по известните лидери в опън сорс обществото носят тази титла. Горните Адриан Холовати и Джейкъб Каплан-Мос са диктаторите на Django,  Гуйдо Ван Россум е диктаторът на Python, Матц е диктаторът на Ruby, DHH е на Rails. Повечето опън сорс проекти имат нужда от някаква силна личност която да води проекта. В повечето случаи това е човекът започнал проекта, но това не е задължително. Няма да влизам в подробности относно вътрешната структура на различните проекти, &lt;a href="http://catb.org/%7Eesr/writings/homesteading/homesteading/index.html"&gt;Ерик Реймънд както винаги се е справил по добре от колкото аз ще мога някога.&lt;/a&gt;  &lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt; Ето някой мои мисли които имах днес докато разсъждавах за начина по който тези проекти се ръководят, както и вътрешната структура на млади компании за които съм чел, както и мисли вдъхновени от горното есе:&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Ето още нещо което  е общо между опън сорс проекти и старт-ъп  компании. И двете обикновено започват  от един(или няколко) програмисти, със  даден проблем който искат да решат. Без  значение дали е липсата на добър опън  сорс уеб фреймуърк за Python или липсата  на свестен сайт за споделяне на снимки,  или нещо от сорта, всичко започва с  нечия неволя, като резултат обикновено  проектите не започват със комерсиална  цел, в много случаи дори и компаниите  не започват с такава цел, а се превръщат  в компании в последствие.&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;За да оцелее проектът  в последствие той се превръща или в по  голям опън сорс проект, или става  компания, понякога става и двете  едновременно(Ubuntu)&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Истински добрите  проекти имат един или двама (максимум  3-ма) диктатори, които го ръководят,  проекти организирани и създавани от  комисии обикновено се оказват или  провали, или просто са ниско качествени.  При компаниите няма голям избор, защото  хората които са на чело, са и собствениците  на компанията и те автоматично командват  парада като следствие, дори и да  позволяват известна свобода на  служителите си, те все пак са служители.   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Диктаторът(или  CEO-то) слуша внимателно какво казват  потребителите, както и разработчиците,  и взема решения базирано на това,  понякога обаче не го правят. Ето това  е взето от сайта на Python описващо това  какво става ако общността не може да  вземе консесусно решение по даден  въпрос:&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p style="margin-bottom: 0cm;"&gt;If a thread has gone on for dozens or hundreds of posts with no clear consensus emerging, one of two things will happen. Either Guido will make a BDFL pronouncement, which consists of him saying "We'll do it this way", or he's given up on the thread and isn't reading it at all any more. In either case, there's little point in continuing the discussion.&lt;/p&gt; &lt;/blockquote&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Работата на  диктаторът/шефът е да движи разработката,  и да не позволява на работата да замре,  ако софтуерът не напредва като развитие  и опън сорс проекта и компанията са  застрашени от смърт. Ако Линукс спре  да получава пачове, най вероятно ще  минем на BSD(или ако сте BSD фенове, приемете  метафората на обратно, ако FreeBSD спре да  се ъпдейтва, минавате на OpenBSD или Linux)&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Ако диктаторът види  че общността е неспособна да вземе  консесусно решение, той го взима вместо  тях, но не си позволява просто да прави  каквото си иска, за да не го детронират.  Шефът на компания обаче няма такива  проблеми, неговия проблем са потребителите,  той не може да си позволи да прави  каквото си иска без да се съобразява с  потребителите, защото просто ще  загине(метафорично, а ако прехраната  му зависи от това, е възможно и буквално).&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;Това е нормално в Старт-ъп модела, но опън сорса е демократична система, нали? Истината е че опън сорса не е демокрация, а дарвинизъм. Също като старт-ъп компаниите, опън сорс проектите трябва да оцеляват, трябва да се развиват, за целта им трябва силна воля, която големи общности трудно могат да предоставят(има изключения разбира се). Илюзията за демократичност идва от нуждата от опозиция, както и обратната връзка на потребителите, тези неща са много важни за “животните“ , каквито са опън сорс проектите и старт-ъп компаниите. Те нямат привилегията на монополисти. Истината е че те не си приличат само защото се управляват от един и същ вид хора, а защото средата им и опасностите които ги дебнат са близки, те не са от различни планети, за това е логично че и двете имат дробове с които да дишат, и имат очи с които да виждат, и имат нервна система, която е близка, общо взето и двата модела са земни и живеят в истинския свят, ако не живеят в истинския свят в повечето случаи умират(Gnu Hurd, pets.com).  &lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;До тези изводи стигнах след като дълго време(от началото на годината) наблюдавам няколко опън сорс проекта, както и няколко млади компании, както и като цяло опън сорс и старт-ъп модела. Също така някой изводи и идеи идват от различни есета, статии, блог постове и мнения във различни форуми, някой от хората пишещи ги дори имат авторитет в хакерските общности, казвам това, защото аз нямам такъв, а говоря големи думи в този пост.  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-4692114014705790233?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/4692114014705790233/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=4692114014705790233' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/4692114014705790233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/4692114014705790233'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/blog-post_07.html' title='Диктатурата в Опън Сорса'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-8456466270143290645</id><published>2008-09-06T17:48:00.002+03:00</published><updated>2008-09-06T18:02:34.812+03:00</updated><title type='text'>Twitter имал полза</title><content type='html'>Може да сте чували за &lt;a href="http://twitter.com"&gt;http://twitter.com&lt;/a&gt;. Това е популярен инструмент за микро-блогинг. Дълго време не се занимавах с него, защото ми е беше безполезен, много хора го ползват просто за да пишат какво правят, и тъпите им MySpace приятели да знаят какво правят, сякаш на някого му пука. Пример:&lt;br /&gt;&lt;br /&gt;Мия си косата- 45 minutes ago&lt;br /&gt;&lt;br /&gt;чопля си носа- 30 minutes ago&lt;br /&gt;&lt;br /&gt;Сърби ме скротумът- 15 minutes ago&lt;br /&gt;&lt;br /&gt;Може да видите че имам малък Twitter уйджет в блога ми. Идеята ми е че вече имам стабилно количество посетители(разбирайте че всекидневно поне 10 човека влизат тук :D) И сега вместо да ми се налага по междудругото в различин блог постове да пиша разни дребни новини, свързани с нещо което съм написал в някой друг пост по междудругото, просто ще преместя тази цяла линия от мисли в тои малък уйджет за малки новини свързани с това какво правя, и с какво се занимавам(няма да видите неща от рода на "Сърби ме скротумът" Освен ако не съм пиян. Повечето неща ще са новини свързани с блога, аз не съм много интересен(всъщност съм интересен, но не ми е интересно да се правя на интересен) за това ще пиша повече за нещата които правя свързани с блога или други мои проекти, от колкото за нещата които правя свързани с други дейности от живота ми, като личната ми хигиена и състоянието на скротумът ми. А сега просто за забавление, незнам дали знаете, но Twitter имаха доста проблеми с големия брой потребители които се бяха навлекли по едно време, и сайтът им досат често крашваше, като пародия на това ето едно клипче:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.techcrunch.com/2008/08/08/the-rise-and-fall-of-twitter/"&gt;http://www.techcrunch.com/2008/08/08/the-rise-and-fall-of-twitter/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-8456466270143290645?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/8456466270143290645/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=8456466270143290645' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/8456466270143290645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/8456466270143290645'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/twitter.html' title='Twitter имал полза'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-5806670966648384335</id><published>2008-09-03T22:21:00.002+03:00</published><updated>2008-09-03T23:31:30.947+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jvascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ураган'/><category scheme='http://www.blogger.com/atom/ns#' term='лайна'/><title type='text'>Yagcbp: yet another google chrome blog post</title><content type='html'>Въпреки заглавието този пост няма да е точно за новия гугъл супер джаваскрипт мега браузър, а за послредствията от него. Какво знаем за този браузър? Че ще е ефективен при много отворени табове, и че има нова супер мощна джаваскрипт виртуална машина. Това означава 2 неща, първо край на firefox краш-овете. Arena-bg има лошото свойство да срива браузарът ми когато отворя прекалено много страници на веднъж, въпреки че използвам flash-block за да блокирам огромното количество спам на тракера им. Ако изключа Flash-block нещата стават още по непоносими, защото сега и целия ми компютър(сравнително мощна машина работеща с Линукс) започва да се държи нестабилно. Сега този проблем е до някъде решен с chrome до известна степен, всеки таб е отделен процес, и джаваскрипт трябва да върви доста по стабилно, също така и ако някой таб излезе извън контрол, няма да крашне целия ми браузър, както става сега. До този момент firefox беше най- добрия браузър който съм ползвал, но най доброто беше супер скапано, крайно време е да се размърдат и да оправят лайняния си ураган наречен интернет. Със новата джаваскрипт виртуална машина, имаме шанс да видим нова революция в нета. Все повече и повече приложения се изнасят в облакът, един от най тъпите термини които някога съм чувал, по добър от "потокът" ако някой си спомня един от епизодите на "До краен предел" преди години, когато всички хора имаха чипове в главата им, които ги свързват с интернета, който се нарича потока, днес сме почти на това ниво. iPhonе-ът ни помага доста в това направление, ако можехме да имплантираме iPhone-а в главите си, животът щеше да е толкова по лесен(сериозно, намерете си "до краен предел" почти всички епизоди са брутално яки, а този с потока е направо предсказание за бъдещето, правен е преди идеята за web 2.0 да излезе, така че говорим за качествена научна фантастика). Всичко това със тоя облък и тоя хром и тоя i телефон и всички тея втори версий на нещата накара много хора да се занимават със една тъпа тема. От известно време хората започваха да определят браузърът като новата операционна система, твърдейки че скоро няма да има много значение на каква система работиш, дали е линукс, макинтош, уйндолс или iPhone-а, или чип закован за челото ти, важното е че всичко някой ден ще се върши на сървърът и ще ти пращат просто html-страници. След това се появява AJAX и ОУ МАЙ ФЪКИНГ ГОД колко ужасии съм виждал. за всеки добър AJAX сайт има 100 сайта тип "Вижте ме, имам javascript и хвърчащи букви" Десет години преди тези хора имаше едни други хора които правеха сайтове тип "Вижте ме използвам blink html таговете и анимирани gif-ове и имам мигащ текст и дразнещи реклами" После се появиха и сайтове тип "Вижте ме, имам FLASH и сайта ми се зарежда 4 минути!". Blizzard на теб говоря, трябва да направите toggle flash по видимо, или направо да разкарате flash-а, не всички живеем в Корея, и не всички имаме достъп до гигабитови интернет връзки!(това е преувеличение разбира се, но аз живея в град където за 20 лева получаваш 10 пъти по малко от колкото получаваш в софия за същите пари, говорим за интернет достъп).&lt;br /&gt;&lt;br /&gt;AJAX означава "Джаваскрипт вече работи", разбира се има някой много готини AJAX сайтове, но в много случаи може да се мине без помията. Разбира се сега AJAX и Chrome променят малко играта, идеята за облакът е че приложенията ще работят на сървърът, а браузърът ще е просто интерфейса. Нещата се променят сега, когато javascript не само работи, но работи като хората. Това отваря врати към възможността да набутаме още говна в браузърът, но и също така да родим гениални приложения, разбира се съотношението както винаги е 100 към 1 в полза на лайняния отбор. По мое мнение хората които се надяваха десктопа да умре и да набутат всичко в облака, малко са преебани, защото сега браузърът става десктопа, а облакът е просто облакът който е още един инструмент и ресурс до който потребителят има достъп. Вместо KDE вече ще ползваме Chrome и вместо c++ ще ползваме javascript(Някой хора се радват че няма да им се налага да пишат C++, но хора като мен се ужасяват, защото ще трябва да пишем javascript, сами преценете кое е по лошо). Тези нови тенденций накараха разни хора да се замислят за предефиниране на терминът "Операционна система", вече операционната система от програма която управлява ресурси и прави връзка между хардуера и приложенията, се превръща в браузър, който управлява ресурси и осъществява връзката между Low-level операционната система и уеб приложенията, които се изпълняват в браузърът. Това е БулШит! &lt;a href="http://whydoeseverythingsuck.com/2008/09/redefining-operating-system.html"&gt;Ето статията от която разбрах за тези циркулиращи идеи&lt;/a&gt;(преди само го бях чувал като метафора, но не и като реално предложение за терминология)&lt;br /&gt;&lt;br /&gt;Тази статия беше постната на &lt;a href="http://news.ycombinator.com/news"&gt;Hacker News&lt;/a&gt; и нялокло минути след като я прочетох написах първия коментар:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://news.ycombinator.com/item?id=293816"&gt;http://news.ycombinator.com/item?id=293816&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;за сега имам най много положителни гласове в цялата тема:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://news.ycombinator.com/item?id=293816"&gt;http://news.ycombinator.com/item?id=293792&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Превод на коментарът ми:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Вече има термин за това в какво се превръща браузарът:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Operating_environment"&gt;http://en.wikipedia.org/wiki/Operating_environment&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Защо хората се карат? Вместо приложението да работи върху Х или в Bash, ще работи в браузърът, няма смисъл от спорове.&lt;br /&gt;&lt;br /&gt;пп Всъщност си измислих термина "оперативна среда" И като го проверих в гугъл, той вече го е имало&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Историята е истинска, странното е че определението което си измислих за термина и това което вече съществуваше, наистина бяха едно и също нещо, един вид да не знаеш какво е телевизор, да измислиш машина която да показва картиин и звук, и да го кръстиш телевизор, и да разбереш че същото нещо със същото име е съществувало вече. Това е офтопик, извинявам се.&lt;br /&gt;&lt;br /&gt;Истината е че в началото беше шел-а, Bash и още куп други, по късно се е създаден Alto PC-то(технически погледнато е било доста преди bash и дори преди Bourne Shell) и начинът по който използваме компютрите си се промени(е от 68-ма до 84-та има един период в който повечето хора дори не са чували за домашен компютър, а после период от 84-та до 91-ва когато повечето хора не са чували за мишката, но все тая). След това е измислен Х, и по късно KDE и Gnome за уникс, както и windows за DOS се появяват, това всичко за оперативни среди, нещо в което ти работи програмата, днес имаме доста оперативни среди, всякакви, почти всеки различен модел телефон си има различна оперативна среда, а уникс света е разпилян на десетки уйндол мениджъри и шелове, програмирането на истински мулти-платформени приложения беше ад. 90-те, странното е че през това десетилетие 90%+ от програмистите пишат за една единствена платформа(днешно време предимно игнорирана) Проблем няма, повечето хора си пишат С++ за win32 и не се притесняват. появата на мобилни устройства направо ги разтърсват, windows CE се появява и се проваля, и това странно нещо интернет също се появява, но не се проваля, хората които не го разбират се провалят(.com мехурат е причинен най вече от тъпи ню-йорк бизнес курвета, не от лоша технология, ако сте гледали филма Август, хора като главния герой са виновни). Идва Sun, и JAVAAAAAA, "най после език от който не ме боли десния лоб" Възкликнали умните C++ програмисти, "най после мултиплатформена система за програмиране на мулти платформени решения" казали тъпите C++ програмисти, "Sun Sux" казали Unix C++ програмистите и си продължили живота. Java се проваля в ролята си на език за писане на приложения които да работят в браузарът, поради няколко причини, първо Java съкс, и Sun съкс, второ тогава интернет връзката е била по скапана, и трето по дяволите, някога да сте ползвали Java аплет в нета? Не съм виждал свестен Java аплет в живота си, всеки един е бил боклук, и не е работил както хората, понякога не е работил с нищо друго освен IE6. И за това години наред хората си мислят, няма проблем, ще напишем perl скриптове които да генерират html-а и cgi скриптове за да ги пращаме до браузърите и така се ражда идеята за облакът. По късно идва php и лайняния ураган става все по мощен, после идва и RoR и в лайняния ураган започват да хвърчат и рубини, но кой иска да е сред ураган в който остри рубини хвърчат с 200 километра в час във всички посоки? да не броим и лайната. Javascript е само едно от проклятията на нета и само един от различните цветове говна в нета. Crome е една от първите стъпки да укротим този лайнян ураган, от милиони некадърни php програмисти, и от милиони ужасни флаш сайтове, и отекуп ужаси. Ето лошата страна, тези неща няма да изчезнат, просто ще се появят повече рубини и повече качествени приложения, така че ще имаме избор и ще можем да игнорираме лайната. А какво е бъдещето на десктопа? Близкото бъдеще е много добро, някой виждал ли е на скоро KDE? Красота! Уеб приложенията няма да могат да настигнат много от функционалността на десктоп приложенията с години, едва ли ще видим QT еквивалент написан на javascript скоро(Говоря не в смисъла на javasript библиотеки, а за javascript библиотеки със еквивалентна мощ и леснота на разработване). Също така ще отнеме известно време докато се появят и други скриптови езики за браузарът, за сега Ruby и Python се използват за server side програмиране, а javascript е за client side, кога ще можем да пишем изцяло на Python всичко от моделите, до интерфейса в браузарът? Нещата са близо и има положителна разработка в тази насока, &lt;a href="http://news.ycombinator.com/item?id=293544"&gt;вече дори може да се ползва Ruby заедно със Crome javascript виртуалната машина(и е по бързо от оригиналното ruby) &lt;/a&gt; Нещата изглеждат добре, Скоро ще имаме мобилност и компютри които струват 50 долара ще имат същите възможности като този за 500 долара сега, или поне за потребителска работа(офис, филми, музика) iPhone-ът е първата стъпка. Информацията ти ще е по сигурна защото ако си изпуснеш лаптопа, имаш 10 бекъпа в нета, и имаш безжичен интернет почти на всякъде къдет оима цивилизация. Дали друг подобен лайнян ураган като уеб ураганът от 90-те и 00-те(иронично е че всеки век започва с знака за тоалетна, един вид започваме добре, означава че миналия век сме се хранили добре) е възможен, но не ми се занимава да предсказвам далечното бъдеще, нямам представа какво ще е то. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;пп Вече работя върху pdf версия на python турориълът ми, ще бъде редактирано, ще има синтактично оцветяване и още материали които не съм поствал тук, очаквайте до края на седмицата, ако не ме пребият някъде преди това, или ако не се напия прекалено много утре и в други ден, и в по други ден.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-5806670966648384335?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/5806670966648384335/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=5806670966648384335' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5806670966648384335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5806670966648384335'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/yagcbp-yet-another-google-chrome-blog.html' title='Yagcbp: yet another google chrome blog post'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-5293400926032671535</id><published>2008-09-02T22:21:00.002+03:00</published><updated>2008-09-02T22:59:38.759+03:00</updated><title type='text'>Любими песни от лятото</title><content type='html'>Лятото е към края си, и реших да си направи кратък списък с песните които слушах това лято. Last.fm е удобен инструмент, но информацията от сайта е сортирана, така че да има тематичон летни песни в нея, както и няколко песни, които не съм слушал много лятото, но определно ми харесват. http://www.last.fm/user/Pavelludia/charts?rangetype=3month&amp;subtype=tracks тук може да видите песните които съм слушал през последните 3 месеца, това е пълен списък, от тях сега ще отделя по летните :D &lt;br /&gt;&lt;br /&gt;1.  Sublime – Burritos  слушана 34 пъти за последните 3 месеца, това не включва мп3-ката ми разбира се :D Доста готина песен, на една мнооого яка банда! Сублайм общо взето бяха лятната ми банда, това лято бяха с мен всеки ден, докато закусвах, докато четях, докато спортувах, докато спах дори(когато спа през деня, ако съм изморен, си оставям музиката да свири). Любима банда, въпреки че и слушам от сравнително скоро.&lt;br /&gt;&lt;br /&gt;2.  Sublime – Pawn Shop 25 пъти слушана песен, отново сублайм&lt;br /&gt;&lt;br /&gt;3.  Q-check – Смокиня. Невероятна банда на име Кю-чек(точно така се казва бандата, и не е случайно) Енергичен пънк, смесен със ска и реге, и малко диско и поп- фолк за вкус(извратено :D) готина банда, с готини песни, мисля че трябва да ги има из нета безплатно някъде, намерете си ги, не съм чувал подобна банда никога!&lt;br /&gt;&lt;br /&gt;4.   Joey Ramone – What a Wonderful World От скоро слушам и The Ramones, първата пънк банда, доста готина песен, кавър разбира се, изпълнена от Джоуи Рамоун, вокалиста на The Ramones. I see skies of blue, and clouds of white...&lt;br /&gt;&lt;br /&gt;5.   Jimi Hendrix – Purple Haze О Джими, трябва ли да споменавам повече? &lt;br /&gt;&lt;br /&gt;6.   Уйкеда – Да Живее Революцията. Уйкеда разбира се, и тази невероятна готина песен, освен лятно, тропическо и революционно звучене, тази песен има и разбира се известна романтичност, особено за нас, хората вдъхновени от различни исторически революций, макар и понякога да ни е нужна известна мъдрост за да преценим последствията от тези революций, пак е по добре да ги има, динамичноста е важно нещо, застоялата вода освен жабуняк, друг живот няма!&lt;br /&gt;&lt;br /&gt;7.  Q-check – Махмурлук блус. Отново Кю-чек, тази песен наистина е кючек, защото след известна пънк/ска/регге част в началото, започва пънк/ска/регге кючека със елементи откраднати от великия АМЕТ!!! Да чуеш Гъци Гъци съпроводено от брутални китари и мощни барабани е наистина освежаващо, и трябва да знаем че ние, хората обичащи музиката, не трябва да мразим чалгата, а трябва да и се смеем, друго не заслужава, трябва да се смеем и да се наслаждаваме на живота, без омраза към чалгата, само с подигравки :D&lt;br /&gt;&lt;br /&gt;8. Обратен Ефект – Колю Пияндето. Някой спомня ли си тая банда? Разбира се че ги помните, лятото е перфектното време да си ги спомните, да живее ска/регге/пънка!!!&lt;br /&gt;&lt;br /&gt;9. Mark Foggo's Skasters – What a lovely day for a hanging Тази много готина ска банда трябва да е на списъкът на всеки ска-маниак, защото марк фогго и неговите скейтъри разбиват, макар и тази песен да не е най-емблематичната им(по любима ми е тази за хашиша) пак е невероятно готина!&lt;br /&gt;&lt;br /&gt;10.  Обратен Ефект – Плис-ПЛИС Морски Бриз. Отново Обратен ефект, и този път със друга тяхна невероятна лятна песен. &lt;br /&gt;&lt;br /&gt;11.  Q-check – Шопска салата. Може да сте чували тази песен, пее се нещо от сорта на "Обичам шопската салата, мастика ледена да пия..." На татъка не знам текста, това е някъква чалга пак, но разбира се в ска-регге вариант звучи супер невероятно мега унищожително ЯКО! &lt;br /&gt;&lt;br /&gt;12. The Paley Brothers/Ramones – Come On Let's Go  Тази песен е вероятно по стара от вас, Тази версия е записана през 79-та година от тандема The Paley Brothers/Ramones, Рамоунс свирят инструментала, а другите там са по вокалите. Оригинала е написан и изпълнен от Ричи Валенс(Ричард Валенсуела) Може да сте го чували, през 50-те записва La Bamba, Donna и тази песен Come on let's Go, този кавър на The Ramones е приличен, и ме кефи доста, рокен рол форевър!!&lt;br /&gt;&lt;br /&gt;13.  Bob Marley – Redemption Song как може да минем без Боб марли? Очуден съм че съм слушал толкова малко боб марли лятото, повече го слушам на mp3-та и за това вероятно го няма никакъв във класацията ми.&lt;br /&gt;&lt;br /&gt;14.  Crowfish – Apart. Момчетата от варна са доста готини, макар и да не слушам точно този стил много, и макар и да не слушам точно тази банда много, все пак ги смятам за яки.&lt;br /&gt;&lt;br /&gt;15.  Уйкеда – А ми да не би да съм се пак объркал Отново уйкеда, и отново невероятна песен, в тази се пее за изгревите, през седмицата в която се будех в 5 сутринта, защото не можех да спа през ноща(незнам защо, но една седмица просто не можех да спя) досат често посрещах изгревите с тази песен.&lt;br /&gt;&lt;br /&gt;16.  Уйкеда – Уйски с фъстъци Отново уйкеда, уйски с фъстъци, супер песен, и на мен ми е кофти че пия сам понякога :D &lt;br /&gt;&lt;br /&gt;17. Plastic Bo. – Шахта. След бутилка и половина, люта гроздова ракия, кющата си да намеря, тръгнах смело на бургия, тротоара ляв не давах, и десния си беше мой, след паважната екзема, сякъш бях участник в бой, лошо е да пиеш нещо, с градус близък до бензин, после я прегърнах страстно и целия останах син" СУпер банда от Асенов град, дори имам последния им албум на оригинално СД, заслужава си парите!&lt;br /&gt;&lt;br /&gt;18. Jimi Hendrix – All Along the Watchtower  Отново Джими, Никой не може да го надмине, никога!&lt;br /&gt;&lt;br /&gt;19. Sublime – Smoke Two Joints Песен, която доста често се присвоява на Боб Марли, не, той няма такава песен, оригиналната песен е от The Toyes, и е написана през 83-та, кавърът на Sublime има едно изпълнение на живо, при което гласът на Брадли Ноуел(вокала на Sublime) малко напомня този на Боб Марли, но не е негова песен. Може да ми вярвате, ако не на мен, то на уйкипедия http://en.wikipedia.org/wiki/Smoke_Two_Joints&lt;br /&gt;&lt;br /&gt;20. Plastic Bo. – Старата пловдивска Свършвам отново с Plastic Bo. тази песен, за разлика от повечето гореспоменати, я притежавам легално, чрез СД, купено, с пари, да! Голям кеф е да слушаш тази песен във Flac, вместо във гадния mp3 формат!! &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;И така, ако погледнете профиал ми в last.fm и линкът от горе, ще видите че това лято съм слушал доста по тежки неща, които не бихте си пуснали на плажа докато лежите и пиете мастика. И все пак не ми пука! Обичам всякъква музика, видяхте, дори и чалга до някъква извратена и ограничена степен :D Да живее Хардкора, пънка, регето, ска-то, хип-хоп-а, джаз-а, рокенрол-а, блус-а, метъла(щях да го забравя) и всеки друг откачен стил който слушах това лято!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-5293400926032671535?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/5293400926032671535/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=5293400926032671535' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5293400926032671535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5293400926032671535'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/blog-post.html' title='Любими песни от лятото'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-5499490760377827131</id><published>2008-09-02T18:47:00.003+03:00</published><updated>2008-09-02T20:03:08.276+03:00</updated><title type='text'>Първи стъпки в програмирането с Python. част 8. Нещата от живота</title><content type='html'>&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Index:&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-1.html"&gt;1.Интродукция&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-2.html"&gt;2.В началото бе словото&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-3.html"&gt;3.Ю толкинг ту ми?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-4.html"&gt;4.Ужаст и страхопаника&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-5.html"&gt;5.Императорът и дракона&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-6.html"&gt;6. Драконът и Императора&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/09/python-7.html"&gt;7.Писна ми да измислям тъпи имена&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;8. Нещата от живота&lt;br /&gt;&lt;br /&gt;Стигнахме до последната част от каквото и да е това което го пиша. Днес ще говорим за нещата. Какво е едно нещо? Ами това е нещо което има някакви свойства, може да правиш нещо с него, и понякога то самото може да прави нещо. Какво е свойство? Това е също нещо, свойствата също имат свойства, може да правиш неща със свойствата и понякога те самите могат да правят неща, А какво е "Способността на нещото да прави" нещо? също е нещо, също има някакви свойства и също може да правиш нещо с тази способност на нещата. Обърках ли ви? Това е обектно ориентираното програмиране: Най лесния начин да си заслужиш боя, като напишеш програма, 80% от която е ненужна архитектура и изпълнява просто административна функция. Кой ще те бие ли? Всеки който има нещастието да работи с теб някой ден :D До тук с абстракциите.(чети от тук на татък почвам с истинските абстракции, а не абстракции на абстракциите)&lt;br /&gt;&lt;br /&gt;В обектно ориентираното програмиране най основния елемент е така наречения клас. Класовете са един вид описание на нещата, на обектите. В python на теория всичко е обект, защо само на теория? Няма да ви обяснявам, вече сте достатъчно объркани. Обектите имат свойства, които в някой езици се наричат точно така, "свойства" или properties, в python обаче им викаме атрибути, т.е. нещо което принадлежи на обекта. Обектите с които можеш да правиш нещо с класовете, и способността им да правят те самите нещо се наричат методи. Вече разглеждахме тези неща, методът е подобно на функция нещо, което се съдържа в класа и или променя самия клас, или извършва някакво действие в зависимост от класа. Да разгледаме един клас:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;class classs:&lt;br /&gt;   i=1222&lt;br /&gt;   def pp(self):&lt;br /&gt;           return self.i&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Този клас на име classs има един атрибут и един метод, атрибутът i е равен на 1222, а методът му pp връща този атрибут. Методът се дефинира също като функция, само че първия аргумент е self. Няма да разберете self ако го обясня точно сега, ще ви стане ясно след момент. Класът е просто описание на нещо, той обяснява как нещо работи, какво има в това нещо и как се казва класът от такива неща(от там идва и името на конструкцията). За да имаме наистина нещо с което можем да работим трябва да го създадем, използвайки класът като негово описание. Това е по просто от колкото може да си представите:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt;x=classs()&lt;br /&gt;&gt;&gt;&gt;x.i&lt;br /&gt;1222&lt;br /&gt;&gt;&gt;&gt;x.pp()&lt;br /&gt;1222&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Действието от първия ред се нарича инстанциране, т.е. създаваме обекта тип classs. Сега х е обект и има атрибут i и метод pp() до които имаме достъп. както виждате от горния пример. Сега е времето да обясна self. Това е нещо като псевдоним за името на инстанцията. Методът pp() трябва да ръвне като стойност един от атрибутите на x, но понеже това е само описание на обекта, а не истинския обект, не знаем как ще се казва той, за това първия аргумент на методите винаги е self, за да имаме достъп до имената в обекта(в случая това е x но е същата файдата като sluchainoimenaobect, все ти трябва self). Това self дразни много хора, разбира се на мен не ми пука, защото не пиша много обектно ориентиран код, и ако мога го избягвам(невъзможна задача понякога, или поне непрактична).&lt;br /&gt;&lt;br /&gt;Вече ви обяснявах за средите и за пространствата от имена, класовете в своята същност са точно това: среди с имена. В тях се съдържат имената и дефинициите на методите и атрибутите, единствената разлика е че сега е в отделно пространство от имена, както при функциите, ако си спомняте, там всяка променлива е локална, вътре във функцията, тук тези променливи са локални вътре в обектът. Достъп до тези имена имаме чрез точката x.i означава "дай ми i, който е от пространството x" Без значение дали е от клас, или модул. Не съм обяснявал модулите, но на кратко това са файловете с .py на края, в които си пишете кодът, те са модули, и също са пространства от имена, като класовете и също съдържат имена и променливи(тези които вие пишете). Всъщност класовете и модулите са на теория почти едно и също нещо, контейнер с имена и функции. Може дори да слагате вътрешни класове в класовете си, те са един вид отделни програми(или поне така може ад мислите за тях). Не знам тук какво успяхте да разберете от това обяснение, но когато аз учех тези идеи не ми беше лесно. Не случайно ви обърках в началото, защото наистина е объркващо. Веднъж схванете ли простите концепции обаче, ще разберете че обектно ориентираното програмиране в същността си е тривиално. Поради тази причина и е доста често експлоатирано по нехуманни начини, но в повечето случаи лош обектно ориентиран код не означава катастрофа, а по скоро купчина неприятности, които просто се трупат, и не могат да навредят докато не се натрупат МНОГО. Убунту има 46433(правилно сте прочели) бъгове, и това са само отворените, има около 21342 непотвърдени, и от всички тези само 28 са критични, трябва да благодарим на обектно ориентираното програмиране, където бъговете са трудно доловими и лесни за постигане, с достатъчно невнимание. За да не е сухо съвсем вашето дърво със знание, да го напоим още малко, със знание за наследяването. Да речем че имате един тип нещо, и искате да имате друг тип нещо, който е като другото, но по раклично, да речем, имате клас голф, и друг клас мерцедес, те са общо взето същите, само че мерцедесът има друга цена :D, може да създадем един клас car и два субкласа golf и merc:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;class car:&lt;br /&gt;   type="automobile"&lt;br /&gt;   country="Germany"&lt;br /&gt;   def action(self):&lt;br /&gt;           print "moveing"&lt;br /&gt;&lt;br /&gt;c=car()&lt;br /&gt;&gt;&gt;&gt; c.type&lt;br /&gt;'automobile'&lt;br /&gt;&gt;&gt;&gt; c.country&lt;br /&gt;'Germany'&lt;br /&gt;&gt;&gt;&gt; c.action()&lt;br /&gt;moveing&lt;br /&gt;class golf(car):&lt;br /&gt;   def action(self):&lt;br /&gt;           print "moveing loud"&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; g=golf()&lt;br /&gt;&gt;&gt;&gt; g.action()&lt;br /&gt;moveing loud&lt;br /&gt;&gt;&gt;&gt; g.type&lt;br /&gt;'automobile'&lt;br /&gt;&gt;&gt;&gt; g.country&lt;br /&gt;'Germany'&lt;br /&gt;class mercedes(car):&lt;br /&gt;   def action(self):&lt;br /&gt;           print "moveing with style, bitch"&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; m=mercedes()&lt;br /&gt;&gt;&gt;&gt; m.action()&lt;br /&gt;moveing with style, bitch&lt;br /&gt;&lt;br /&gt;class golf3(golf):&lt;br /&gt;   def action(self):&lt;br /&gt;           print "chalga, bitch!"&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; g3=golf3()&lt;br /&gt;&gt;&gt;&gt; g3.action()&lt;br /&gt;chalga, bitch!&lt;br /&gt;&gt;&gt;&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Да видим какво разбрахме от тук, мерцедес и golf са коли, те са от германия и са тип автомобил, също така колата се движи, голфа се движи шумно, а мерцедесът със стил, имаме и golf3 който е тип голф, който освен шумно се движи и с чалга! Виждате добре синтаксисът и вероятно разбирате че това е умствен модел, за това какво ние разбираме под нещо, което съществува. Можем да си мислим колкото си искаме, за компютърът този модел е само пространство от имена, със методи и атрибути, които ние може да наричаме така, но те са просто променливи и функции. Става въпрос за мислене, ние възприемаме света като изгладен от тези неща които съществуват, а в програмирането работим със абстрактни концепции, които не съществуват извън нашите глави и в представата на компютъра за нашето разбиране. Всичко което използвате като софтуер, е просто метафора, за инструмент, нещо което ползвате за да постигнете нещо. И ето с какво ни оставя обектно ориентираното програмиране на края:&lt;br /&gt;&lt;br /&gt;С много мощен инструмент за моделиране на обекти от истинския свят, система за абстракция, която може да се използва по много гъвкави начини, както и много прост синтаксис, бихте се съгласили с мен че класовете имат по прост синтаксис от изразите генератори, да речем. Също така имаме начин да създаваме свои инструменти за работа в самия език, можете да напишете своя версия на списъкът, който да им само 10 елемента, а не безкраен брой, знаков низ, който да може да се променя на място, и да не е непроменяем, както е сега в езикът. Разбирате за каква мощ говорим нали? Обектноориентираното програмиране е инструмент, но трябва да сте мъдри с него, той не  всемогъщ и всезнаещ и всеможещ, и лесно може да се увлечете в програмистка авантюра и да произведете код, който буквално прилича на спагети.    &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Изход: Това беше последната част от тази поредица за python, имам план да я вкарам в едно лесно pdf-че и може би да поразширя съдържанието и да оправя някой гафове в другите части, така че да става за четене, също така ще има и други поредици, python е единствения език за който мога да блогвам, този наръчник едва ли ще е много полезен за всеки, той е върхът на върхът на върхът на айсберга, но python е толкова прост, и толкова прозрачен, че под водата няма много айсберг, така че ако подхванете сериозно езика, едва ли ще бъдете изненадани прекалено много от него. От тук не можете да научите езика, идеята беше да направя нещо като въведение, така че ако някой се интересува от езика, да го изгоня с правописните си грешки и лош стил на писане, и ако наистина е мераклия да го накарам да търси другаде материали и да се научи добре на езика. Python е лесен и забавен език, писането на това беше забавно, дори никой да не го харесва, пак беше забавно и се накефих, също така открих колко скапан е blogger редактора за писане на код в него и форматирането му правилно. Майната му, pdf-а ще си има и оцветяване и всичко :D Майната му на html!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-5499490760377827131?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/5499490760377827131/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=5499490760377827131' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5499490760377827131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5499490760377827131'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/python-8.html' title='Първи стъпки в програмирането с Python. част 8. Нещата от живота'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-269520823829131167</id><published>2008-09-01T18:28:00.004+03:00</published><updated>2008-09-01T19:39:34.968+03:00</updated><title type='text'>Първи стъпки в програмирането с Python. част 7.Писна ми да измислям тъпи имена</title><content type='html'>&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Index:&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-1.html"&gt;1.Интродукция&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-2.html"&gt;2.В началото бе словото&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-3.html"&gt;3.Ю толкинг ту ми?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-4.html"&gt;4.Ужаст и страхопаника&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-5.html"&gt;5.Императорът и дракона&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-6.html"&gt;6. Драконът и Императора&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7.Писна ми да измислям тъпи имена&lt;br /&gt;&lt;br /&gt;Днес бях обещал класове, Всъщност като се замисля май не обещах нищо, така че ще си позволя вместо с класове, днес да се запознаем с функциите генератори, с изразите генератори, и с генератори на списъци. Също ще засегна малко и темата за итераторите. Май стана много.&lt;br /&gt;И така, спомняте си как можем да използваме for за да преминем през всички елементи на дадена последователност, това се нарича итериране. Итераторите са обекти които имат метод next(), т.е. обекти които дават някакъв резултат, когато извикате методът next() върху тях. Не съм обяснявал методите, но на кратко, това са тези неща, които приличан на функций, които следват след даден обект и точка след него, да речем имаме списък x=[1,3,2,4,6,5] и след това напишем x.sort() и ще x ще е преобразуван на [1,2,3,4,5,6], това е различно от функциите, защото методите са вътрешни на обектите(числа, списъци и т.н.), а функциите са външни, в повечето случаи методите променят самия обект, а функциите връщат друг обект като резултат(това не винаги е така). След краткото обяснение на методите, да се върнем на итераторите. Същия този списък x който сега е [1,2,3,4,5,6] ще го направим на итератор, както прави for цикълът.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt;x=iter(x)&lt;br /&gt;&lt;listiterator object="" at="" 0x8355f8c=""&gt;&lt;listiterator&gt;&lt;br /&gt;&lt;/listiterator&gt;&lt;/listiterator&gt;&lt;/pre&gt;&lt;/blockquote&gt;x сега е итератор, можем да използваме методът next() върху него:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt; x.next()&lt;br /&gt;1&lt;br /&gt;&gt;&gt;&gt; x.next()&lt;br /&gt;2&lt;br /&gt;&gt;&gt;&gt; x.next()&lt;br /&gt;3&lt;br /&gt;&gt;&gt;&gt; x.next()&lt;br /&gt;4&lt;br /&gt;&gt;&gt;&gt; x.next()&lt;br /&gt;5&lt;br /&gt;&gt;&gt;&gt; x.next()&lt;br /&gt;6&lt;br /&gt;&lt;stdin&gt;&lt;module&gt;&lt;stdin&gt;&lt;module&gt;&lt;stdin&gt;&lt;module&gt;                        &lt;br /&gt;&lt;/module&gt;&lt;/stdin&gt;&lt;/module&gt;&lt;/stdin&gt;&lt;/module&gt;&lt;/stdin&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;както виждате, методът next() връща следващия елемент от итератора, по този начин ако има много елементи в списъкът, for ще е по бърз като изпълнение, защото само по 1 стойност от списъка се обработва на веднъж, вместо целия списък. Това има по общо приложение.&lt;br /&gt;&lt;br /&gt;Генераторите са подобни неща, те са функции, които вместо return използват думичката yield. "Само това ли?" ще си кажете вие, и "Не съвсем" ще ви отговоря аз. Тази функция, която използва yield вместо return връща обект генератор, който е като итератора, т.е. можем да минем през него с for и можем да използваме метода next(), всеки път когато бъде повикан този метод, получаваме генерирана стойност. Да видим подобен пример:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;def gen(list):&lt;br /&gt;for x in list:&lt;br /&gt;  yield x&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;когато повикаме функцията x=gen([1,2,3,4,5,6]) получаваме x който е генератор:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt; x.next()&lt;br /&gt;1&lt;br /&gt;&gt;&gt;&gt; x.next()&lt;br /&gt;2&lt;br /&gt;&gt;&gt;&gt; x.next()&lt;br /&gt;3&lt;br /&gt;&gt;&gt;&gt; x.next()&lt;br /&gt;4&lt;br /&gt;&gt;&gt;&gt; x.next()&lt;br /&gt;5&lt;br /&gt;&gt;&gt;&gt; x.next()&lt;br /&gt;6&lt;br /&gt;&lt;stdin&gt;&lt;module&gt;&lt;br /&gt;&lt;stdin&gt;&lt;module&gt;&lt;br /&gt;&lt;stdin&gt;&lt;module&gt;&lt;br /&gt;&lt;/module&gt;&lt;/stdin&gt;&lt;/module&gt;&lt;/stdin&gt;&lt;/module&gt;&lt;/stdin&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Същата ситуация. Може да пишете по сложни функций, които да изчисляват нещо и да го връщат при всеки yield, но няма да давам по сложни примери за сега.&lt;br /&gt;&lt;br /&gt;Сега ще поговоря малко за list comprehentions или генератори на списъци, и изразите генератори(genrator expretions). Първите се използват по често от вторите, ще ги обясня и двете. Горния примерен х може да бъде получен и по следния начин:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;x=(x for x in xrange(1,6))&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;тук (x for x in xrange(1,6)) е израз генератор, генераторът се слага в кръгли скоби и в него се пише изразът x for x in xrange(1,6), това е малко слошно за обяснение, ето как може да се прочете, за да ви е по ясно, "дай ми x за всяко x във интервала от 1 до 6, и го сложи в генератор. Това ще ви стане по ясно, като обясня генераторите на списъци. Те имат почти същия синтаксис, но се пишат в квадратни скоби вместо в кръгли([]), и връщат списък вместо генератор, ето как:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt;x=[x for x in xrange(1,6)]&lt;br /&gt;&gt;&gt;&gt;x&lt;br /&gt;[1,2,3,4,5,6]&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;сега разбирате ли? "Направи списък в който всеки елемент е елемент от обхвата 1 of 6", можем да го направим да създава списък със четни или нечетни числа по следния начин:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt;x=[x for x in xrange(1,6) if x%2 != 0]&lt;br /&gt;&gt;&gt;&gt;x&lt;br /&gt;[1,3,5]&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Този код връща само нечетните числа, чете се "създай списък, в който всеки елемент е елемент от обхвата 1 до 6, ако остатъкът от деление с 2 е различен от 0" Спомнете си делението с остатък, ако разделите 4 на 2 няма остатък, но 3 делно на 2 дава остатък 1, ако сте в 2-ри клас де :D Това прави операторът %. Същото става и със изразите генератори, само че вместо списък ще върнат генератор който има само нечетни елементи.&lt;br /&gt;&lt;br /&gt;Това е за сега, останете за да видите по късно, за да видите и краткото ми обяснение на синтаксисът на класовете.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-269520823829131167?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/269520823829131167/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=269520823829131167' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/269520823829131167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/269520823829131167'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/09/python-7.html' title='Първи стъпки в програмирането с Python. част 7.Писна ми да измислям тъпи имена'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-1633964314458452758</id><published>2008-08-30T21:51:00.002+03:00</published><updated>2008-08-30T22:51:07.212+03:00</updated><title type='text'>Сайтовете за социални новини</title><content type='html'>Днес с помощта на великия голям брат Гугъл и неговия прекрасен инструмент &lt;a href="http://www.google.com/analytics/"&gt;Google Analytics&lt;/a&gt; видях че около 11% от трафикът към блога ми(да имам десетки хора които ме четат всеки ден) идва от сайта&lt;a href="http://svejo.net"&gt; http://svejo.net&lt;/a&gt;. Проверих сайта и видях че това е &lt;a href="http://digg.com/"&gt;Digg&lt;/a&gt; клонинг. Видях също така че е написан на Ruby on Rails. Хората които го правят със сигурност разбират от програмиране, сайтът е конструиран прилично, и изглежда имат успех. Разбира се аз едва ли ще ползвам тяхната услуга. Имам доста специфични изисквания към моите новинарски сайтове. Не ползвам Digg, и едва ли ще ползвам svejo.net поради една единствена причина: Съдържанието им! Аз съм прекалено Nerdcore Geeksta и повечето съдържание в тези сайтове е чист шум в моите очи(това има потенциала на култова фраза). Ето какво има на първата страница на svejo.net в този момент:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Сама няма да се оближе&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Палави саудистки жени (14 снимки)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Феномен в Китай, откриха котка с крила&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Това бяха просто по абсурдните имена на статии :D Аз съм техничар, имам нужда от технически новини, влизам в поддиректорията технологии:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Стоп на перверзните снимки с новия 3G iPhone&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Телевизор-аквариум&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Това за iPhone-а го знаех от мнооого отдавна, а това за телевизора аквариум не ме интересува особено, не гледам телевизия, и не харесвам риби, предпочитам влечуги. Общо взето нищо интересно, няколко новини за google и apple и нищо особено, което да ме заинтригува. На помощ идва &lt;a href="http://www.reddit.com/"&gt;reddit.com &lt;/a&gt;. Като идея е сщия, имате сайт в който хората постват линкове и ги гласуват на долу и на горе. Хората ги коментират и т.н. Какво е различното? В reddit също има абсурдни и тъпи статии, скучни политически новини и други неща които не ме интересуват, защото съм прекалено задръстен, ето какво обаче мога да правя с reddit, мога да си къстомизирам началната страница, да показва само новини от интересни sub-reddit-и като такива специализирани с определена технология или език, или такива за програмиране и технологии като цяло. Аз най вече си прекарвам времето в &lt;a href="http://www.reddit.com/r/programming/"&gt;programming.reddit.com&lt;/a&gt; и &lt;a href="http://www.reddit.com/r/python"&gt;python.reddit.com&lt;/a&gt; Новините са интересни и много, за разлика от голямото количество скучни и неорганизирани технологични новини в svejo.net, за digg не знам, но там не влизам. Reddit не е перфектен, има проблем със спама в коментарите, проблем с който slashdot и digg са известни, проблемът на редит е примерно в някоя статия за програмиране някой ще каже:&lt;br /&gt;&lt;br /&gt;In Soviet Russia Meta-programing lisps you&lt;br /&gt;&lt;br /&gt;и някой ще отговори&lt;br /&gt;&lt;br /&gt;In Lisp Russia Meta-programming soviets you&lt;br /&gt;&lt;br /&gt;и така докато не свършат комбинациите, когато се добавят нови думи и т.н. Не веднъж съм виждал такива поредици от простотии. Непоносимо е, и за това рядко чета коментарите в reddit. &lt;br /&gt;&lt;br /&gt;Доста по приятно място за прекарване на свободното време е &lt;a href="http://news.ycombinator.com/news"&gt;Hacker News&lt;/a&gt;. Сайтът създаден от небезизвестния предприемач, лисп хакер и есеист &lt;a href="http://www.paulgraham.com/"&gt;Paul Graham&lt;/a&gt;. Създателя на фирмата за seed инвестиции в млади уеб компании &lt;a href="http://ycombinator.com/"&gt;Y combinator&lt;/a&gt;, автор на 2 книги за Lisp и създател на един &lt;a href="http://arclanguage.org/"&gt;нов диалект на езика&lt;/a&gt; създава невероятния хакерски форум hacker news специално за хора които се интересуват от технологии и IT бизнес, всичко от нови езици и библиотеки, до новини за инвестиции и проекти. Сайтът има много прост дизайн, толкова прост, че чак е красив. Работи много просто, ако искаш да пуснеш линк към блог или статия или сайт го правиш, и хората го виждат и гласуват, коментират и т.н. Ако искаш да започнеш дискусия просто оставяш полето с линка празно и пишеш коментар. Системата за оценяване е много проста, ако имаш над 25 карма точки може да гласуваш и на долу мненията на съфорумците ти, ако спамят или ако не ги харесваш :D Те се движат на долу и избледняват. Ако харесваш някое мнение го гласуваш на горе и то излиза на пред. Простата идея на digg и reddit в този сайт е изпълнена перфектно, за сега нивото на коментарите е много високо. Поради причината че сайта е написан на Lisp от олд скуул Lisp програмист с две дебели книги в резюмето си, спамът е доста рядък. Paul Graham е създател на доста интересна технология за филтриране на спам, базирана на изкуствен интелект, в сайта му има есета на темата. Сайтът е достатъчно умен да филтрира повечето спам, а каквото не се филтрира бива изтрито от модератори, или гласувано на долу. Тайната на успехът на този сайт освен технологична е и културна. Като се концентрира най вече върху по хардкор технологичните си потребители, и не допуска политически или други тъпи новини, сайтът се пази от мейнстрийм влиянието и проблемите с масовия спам. Въпреки това сайтът не е елитарен, просто ако си 14 годишно спамерче в този сайт няма да и ти е интересно, както в digg или reddit, там не се допускат тежки огнени битки, въпреки че се случват интелигентни дискусии, които понякога прекаляват с остротата си. Сайтът не е Startup както digg, reddit или svejo.net, т.е. не му трябва да прави пари, за това може да си позволи да е скучен за масовия потребител на интернета, той е за програмисти и хора които си изкарват хляба с това, не за хора които си губят времето в блогосферата(като мен :D)&lt;br /&gt;&lt;br /&gt;Ако някой от авторите на svejo.net или хората пряко свързани с неговата разработка четат това, продължавайте добрата работа. България има нужда от повече готини проекти и start-up-и, и ако искате да подобрите сайта си, така че да е по привлекателен за нас елитарните копеленца програмистите, погрижете се качеството на съдържанието ви в отделните категории да е по високо, поучете се от конкурентите си :D И благодаря за 15-те човека трафик. Нищо че bounce rate-а е 100% :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-1633964314458452758?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/1633964314458452758/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=1633964314458452758' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/1633964314458452758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/1633964314458452758'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/08/blog-post_30.html' title='Сайтовете за социални новини'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-3596615879978598179</id><published>2008-08-29T21:53:00.002+03:00</published><updated>2008-08-29T23:42:02.585+03:00</updated><title type='text'>Адът на училищната математика</title><content type='html'>Почти сме септември, това означава че имам не повече от 2 седмици свобода. 12-ти клас, ужас. За 12-та поредна година ще трябва да стоя затворен в една стая по 6-7 часа на ден, с почивки на всеки 40 минути, в които ще имам право да ям и да ходя до кенефа, в останалото време нямам право на никакви други действия освен да слушам и изпълнявам заповеди. Имам книга в която се записва прогресът ми, и се отбелязват проблемите с поведението ми, в нея се записват оценките, не толкова на знанието ми, колкото на умението да изкарвам добри оценки(умението да хаквам тестове и да преписвам, в което съм майстор). В тази книжка също така има списък с правата и задълженията ми. Много напомня описанието на затвор нали? Аз съм природно любопитен, на практика и да се мъчите е можете да ме спрете да уча, това е основната функция на мозъкът ми. Даскалото се опитва да ми помогне със моят поход към знанието, но за жалост това е по скоро страничен ефект от нуждата да държиш хлапетата далеч от улицата цял ден докато родителите им са на работа. Обучението им в псевдо-полезни дисциплини с средно-ефективни методики е само страничен ефект, не може да ги държите затворени цял ден без да правят нищо нали? За да изпълнява задълженията си едновременно да държи учениците под контрол и да ги образова до някъква прилична степен, колкото да могат да функционират в обществото, образователната система използва едно много древно зло- администрация! Много голяма част от администрацията в нашата държава(а и в повечето други държави в които има администрация) е създадена само и единствено да потдържа другата администрация. В училищните власти положението е същото, има много голямо количество документи които са там само за да контролират истински нужната администрация. Това се отразява на учебния процес. Цялата система е структурирана като прогресивен процес в който се вкарват деца, и се изкарват образовани млади хора. Ето проблемът, системата е създадена с презумцията че процесът на учене е следния:&lt;br /&gt;&lt;br /&gt;Учителя предава знанието, учениците приемат знанието в различни степени, тестовете филтрират успелите да научат, от неуспелите, успелите продължават, неуспелите повтарят.&lt;br /&gt;&lt;br /&gt;Колко голяма част от този процес който описах горе не е пряко свързан с процесът на ученето, умствения процес на  усвояването на теоретичен и практичен материал? " учениците приемат знанието в различни степени" е единствената част която е пряко свързана с този процес. Останалото е администрация и формалност. Теоретично горния процес работи приемливо добре, имаме определен брой успели ученици които са природно умни и след образователния процес са и културно богати и способни членове на обществото. Ето проблемът: хората като мен. Аз не съм особено добър в помненето, забравян неща които не са жизненоважни, или не са ми достатъчно интересни. НЕ обичам да се занимавам с едно и също нещо повее от половин час, освен ако не е нещо наистина интересно, което изисква продължително внимание(като програмирането) и дори тогава не седя 6 часа с ръце на клавиатурата пишейки код, а се разхождам, отивам да хапна и си подрямвам за да ми поработи подсъзнанието. Също така не обичам да правя излишни дейности, не обичам да се занимавам с формалности и администрация, и не обичам други хора да ме съдят и оценяват, не обичам да ми се заповядва, не обичам да седя на едно място продължително време, изморяващо е, имам нужда ад се разтъпча на всеки 20-тина минути, да подишам въздух, или да си взема нещо за пиене. Човек като мен способен ли е да извлече максимална полза от образователната ни система? НЕ! Група Нови Цветя(първата българска пънк група, сформирана през далечната 79-та) имат една песен дресировка, част от чийто текст ще цитирам:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;дресираха ме в къщи, в детската градина,&lt;br /&gt;в даскалото цели 11 години,&lt;br /&gt;не можех да решавам правилно задачите,&lt;br /&gt;шестици получават само натегачите.&lt;/blockquote&gt;&lt;br /&gt;Ето за кого е създадена системата, за хора които се натискат за да работят за системата, за да минеш системата не ти трябват знания, а умения да минаваш системата. Това е слабото място на която и да е образователна система на света, която официално копира този модел на европейско образование(този с класните стаи и учителите). За хора като мен далеч по ефективен модел на образование е самостоятелната инициатива. Не обичам да уча ненужни детайли, за това не ги уча, а ги записвам докато ми потрябват, вместо това се уча да анализирам тази информация, без да трябва да я знам на изуст, уча се да я прилагам, и да си вадя изводи, да я комбиниам с различин методи които усвоявам. Не харесвам да върша ненужни неща, за това използвам инструменти за автоматизацията им, най вече компютърът ми. Не обичам да действам чисто теоретично, за това което уча изпробвам на компютъра си(това е приложимо с почти всички науки, копютърът е универсален инструмент, всеки от музиканат и писателя, до физика и биоинжинерът може да го ползва в практиката си). Това е общо взето проблемът ми с математиката. Обичам математиката, но начинът и на преподаване и изпитване, както и изискванията ми идват в повече. Ако имам математичен проблем, ще напиша програма да я реши вместо мен, системата ме задължава вместо да прекарам 10 минути в мислене и писане на код, да прекарвам часове в запаметяване на формули и учене на методите им за прилагане, както и ме задължава ръчно да ги прилагам върху изходните данни, поради тази причина имам 4-ки по математика, допускам грежки, защото правя нещо ръчно, вместо да оставям машината да го направи место мен, не съм бърз сметач, и имам ужасен потчерк и често стават грежки при проверките. И все пак има нещо красиво в математиката, начинът по който всичко има смисъл, начинът по който всичко си има място и светът не е толкова хаотичен вече. Начинът по който нещата си взаимодействат. Математиката наистина е езикът на природата с койо можем да разберем красотата и. Много хора ще кажат че проблемът е в мен, просто съм мързелив и тъп, и грозен, и..., ами прави сте, и мързелив и тъпи грозен са думи които ми прилягат, но не виждам с какво ме превъзхождате в сферите в които се стремя да напредвам, друго освен теоретични познания и липса на опит не ми липсва в сферата на компютърните науки, гези две неща са важни, но ако ги нямаш, винаги може да ги натрупаш, иска се само време. Другото което ако го нямаш, не е добре да се захващаш, го имам. Ентусиазъм, достатъчен интелект, вкус към красотата и вдъхновение, всичко това го имам. И сега ме чака една година, в която учителите ми няма да ме учат на математика и български, а ще ме учат как да мина матурата, а аз наистина искам да уча... Не съм роден за този век вероятно, или пък греша? Може би точно ози век ми дава шанса да уча, въпреки системата непригодна за моя характер? Точно така, нищо не е загубено, само ще трябва да се справя с дразнението да прекарам още 1 година без да уча, а да се подготвям за тестове.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-3596615879978598179?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/3596615879978598179/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=3596615879978598179' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/3596615879978598179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/3596615879978598179'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/08/blog-post_29.html' title='Адът на училищната математика'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-3368106320172137635</id><published>2008-08-28T20:55:00.002+03:00</published><updated>2008-08-28T22:01:05.066+03:00</updated><title type='text'>Ексцентричност</title><content type='html'>Днес трябваше да пиша последната част от поредицата ми за Python която да покрие основния синтаксис и семантика на класовете и обектно ориентираното програмиране. Не познавам много тази област, също така не я харесвам достатъчно, но общо взето имам достатъчно познания за добър начален туториъл по ООП. Въпреки това не го написах днес и може би няма да го напиша утре, вероятно в други ден. Вместо това днес ще пиша за ексцентричността която доста често се проявява от много програмисти/артисти/учени.&lt;br /&gt;&lt;br /&gt;Може би сте чували за Айнщайн, той се е плезил, държал се е ексцентрично с журналистите и с хората които се интересуват с него и е бил забавен човек общо взето, мислили са го за луд. Изглежда ли ви луд?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://z.about.com/d/physics/1/0/C/0/-/-/Einstein_tongue.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 315px; height: 393px;" src="http://z.about.com/d/physics/1/0/C/0/-/-/Einstein_tongue.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ричард Фейнман е един от най известните физици на 20-ти век заедно с Айнщайн и Стивън Хопкингс са светата троица на физиката на 20-ти век. Той е бил известен с това че е свирил на барабани, имал е неописуемо чувство за хумор, и се е занимавал с разбиване на сейфове по времето на манхатанския проект, от чисто любопитство, не защото е бил немски шпионин, просто му е било забавно да чете свръх секретни документи до които няма достъп. Кажете ми че този човек ви изглежда нормален:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/4/41/Richard_Feynman_ID_badge.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 243px; height: 337px;" src="http://upload.wikimedia.org/wikipedia/commons/4/41/Richard_Feynman_ID_badge.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ричард Столман, бащата на свободния сорс, идеологът на едно от най важните движения в софтуерната индустрия, философ, и гениален програмист. Също така фанатичен параноик, не ползва мобилни телефони за да не го следят, не ползва кредитни карти за да не го следят, не ползва безжичен интернет по същата причина, а и лаптопът му няма свободен драйвер за wi-fi картата му, също така този лаптоп е едно от най скъпите му притежания, той не ползва софтуер който не е свободен, въпреки че няма свястна свободна алтернатива за много типове софтуер, също така го мислят за луд. Нормален ли е според вас?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.softpanorama.org/People/Stallman/Images/saintignucius.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.softpanorama.org/People/Stallman/Images/saintignucius.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Линус Торвалдс, също толкова важен за свободния софтуер колкото Столман, не толкова луд, но все пак ексцентричен финландец от шведски произход с американско гражданство. &lt;a href="http://en.wikiquote.org/wiki/Linus_Torvalds"&gt;Всеки който му е чел цитатите знае че той е арогантно копеле което не обича да си мери думите &lt;/a&gt;. Изглежда ли ви луд?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://m0sia.ru/gallery2/d/40-2/Linus+Torvalds+in+a+Speedo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://m0sia.ru/gallery2/d/40-2/Linus+Torvalds+in+a+Speedo.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Стив Уозняк. Гениален програмист и инжинер, шегаджия и майтапчия, легенди се носят за номерата му и шегите му. Веднъж направил заглушител за TV сигнали и го използвал за да се майтапи с приятели, заглушавайки телевизора им и карайки ги за даемат странни пози за да се оправя картината. Веднъж направил това в университета си, но имало проблем и без малко да го хванат, някой човек излязъл от стаята, после успял да изключи заглушителя и друг поел вината му, веднъж напралим шокър с който да бие ток на хора които сядат на столове, а дру гпът в даскало сложил часовников механизъм в кутия която директора помислил за бомба, часовникът бил свързан към вратата на щафчето на някакъв ученик и когато директорът го отворил часовникът затиктакъл по бързо. Този човек създава модерната ни представа за PC, неговия apple I e може би първия персонален компютър със клавиатура и монитор, както сме свикнали да ги гледаме днес, преди това са били кутий с мигащи светлини и копчета. Този човек изглежда ли ви луд?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Steve_Wozniak_thumbs_up.jpg/750px-Steve_Wozniak_thumbs_up.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Steve_Wozniak_thumbs_up.jpg/750px-Steve_Wozniak_thumbs_up.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Всички тези са ексцентрични гений(ако някой ми прати hate mail за дето сравнявам Линус Торвалдс с Айнщайн да си гледа работата, няма да му отговарям!) Не всички ексцентричи в трудните науки са гений, но със сигурност повечето то тях са поне над средното. При програмистите това е най усезаемо. Цялата им култура е един майтап, скуката и рутината са зли, това е едно от основните твърдения в хакерската култура, или поне така казва ESR, още един ненормалник, този има оръжия(да, Ерик Реймандс е собственик на оръжие, и е защитник на правото си да го притежава, също така е нео-езичник) Стереотипния хакер има следните черти:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Непоносимост към рутинни и тривиални задачи, ако може ще ги избегне. Това включва чистене, спане, и в екстремни случаи ядене, също така документация, офис събрания, упражнения за изграждане на умения в колектив, и всякъкви други безсмислени инициативи измислеин от шефовете им за да повишат продуктивноста им, като ги отделят от работата им&lt;/li&gt;&lt;li&gt;Непоносимост към некомпетентност, очакват хората да са компетентни, повечето не си правят илюзията че хората трябва да разбират от тяхната област, но наистина се ядостав когато псевдо експерти в някоя област не си вършат работата както трябва, такива са най често хора от отдели маркетинг, и мениджмънт, както и повечето им шефове, и в най- лошите случаи и подчинените им. Много често се чудят защо всички около тях са толкова тъпи, въпреки че в повечето случаи хората не са тъпи, просто те са много умни, но от скромност не твърдят че са гений, с изключението на Линус Торвалдс. В много случаи самите те не знаят че те са по умните и за това просто предполагат че всички други са тъпи.&lt;/li&gt;&lt;li&gt;Непоносимост към образователната система. Много от тях са имали проблеми в даскало, ако са били късметлий и не са били тормозени от съучениците си в даскало, са били тормозени от скуката и некомпетентноста на много от даскалите си. Това е актуален проблем при мен. В много малко от часовете които имам в даскало се чувствам заинтересован от материала. Системата е изградена така че вместо да ме учи да върша нещо, ме учи да мина изпитите си и да вляза в университет, където евентуално ще бъда научен да върша някъква работа. Проблемът е че аз нямам проблем с тестовете, имам проблем с материала, много от нас са природно любопитни и искаме да учим, но когато такива нещастници които са смачкани от живота се опитват да преподават на бъдещите нещастници, които още не са смачкани от живота, за нас, тези с потенциал, които искаме да учим, не ни остава много за учене, и за това или се убочаваме сами, или не се убочаваме и спим. Като се замислиш че съм прекарал 11 години от които 9 месеца на година съм прекарвал по 20 дни в месеца затворен в стая, против волята ми, принуждаван да правя неща които не искам. Със сигурност има по добър подход към образованието. Много хакери израстват подозрителин към образователната система(дори в страни къдено не е скапана) и това е оправдано, тя не им е помогнала, а ги е принужавала да търсят свои решения на проблемите си, за да я заобикалят.&lt;/li&gt;&lt;li&gt;Непоносимост към авторитетни личности. Ако сте мениджър и имате гениален програмист, който очевидно не е в час с политиката на фирмата ви и отказва да се впише в колектива ви, не разбира идеите ви и изискванията ви, отрязва предложенията ви като ненужни, и не ви харесва като цяло, това е защото повечето хакери са подозрителни към личности с власт, било то политици, държавни служители или шефове. Опитът и инстинктът им им казва че хората на чело на групи в повечето случаи са случайни некадърници, този опит идва най-вече от даскалото. Разбира се хакерите са много индивидуалистични хора и не приемат добре заповеди, препоръките са препоръчителни и дори тогава има риск да бъдете отрязан като некомпетентен(Искам да апишеш интерфейс за новото API, използвайки VB). Много често хора като тези ще изказват радикални политически идеи, които вие не бихте посмели да изречете на глас. Много от обществено приетите идеи, като например евро-интеграция и евро-атлантически ценности, за тях са кухи думи, зад които се крие думата още бумаища за попълване. В българия това не е проблем, има много хора които изказват такива мнения, но опитайте да кажете в америка че ако не е бил арабския свят, днес античните гръцки текстове на които се радваме нямаше да ги има, заради дядовците на европейците които а ги горили с кеф. Чака ви пътешествие до Гуантанамо&lt;/li&gt;&lt;li&gt;Остър език и незачитане на етикет. Истинския хакер няма да се притеснява да извади злия си език и да наплюе нещо което не харесва. Това води до много лоши неща, и последствията са очевидни, Slashdot,Digg, reddit, тези сайтове са бойни полета, и хокусът от технологични дискусий се е отместил към свещенни войни. &lt;a href="http://www.zedshaw.com/"&gt;Зед Шоу&lt;/a&gt; е добър пример тук, думата fukin' се среща доста често в блога му, той ведъж много брутално нахрани цялата Ruby on Rails общност наричайки ги гето, и обяснявайки колко некомпетентни некадърници са повечето хора в Rails обществото(говори за високите етажи). Много често с острия си тон засяга много различни софтуерни продукти които не харесва, също така много фирми и хора които го дразнят. Най вече бизнес типове които си мислят че стават за лидери на технологични фирми, с които е работил. Този човек изгглежда ли ви луд?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.zedshaw.com/funky_hat.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 240px; height: 286px;" src="http://www.zedshaw.com/funky_hat.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Много хакери могат да бъдат определени като ренесансови хора. Освен с програмиране, се занимават и/или с музика, изобразително изкуство, електронно инжинерство, писателство, журналистика, други науки, други изкуства. Аз лично се занимавам очевидон и с блогерство, което и вид аматьорска журналистика, също така и си драскам разни карикатурки, и за известно време писах комикс, който малко съм занемарил, и може би ще възтановя в близко бъдеще. Също така съм меломан и мога да запоявам.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Социални трудности. Представете си човек на който даскалото му е изключително скучно, той е по умен от повечето си познати, интересува се от много по различни неща, не харесва властни личности, не понася скучни хора, и намира за скучно това което много други хора намират за интересно(телевизия, поп музика, офис сърания, маркетинг кампаний). Този човек не обича да чисти или да полага какъвто и да е излишен труд, той дори няма да си помисли нещо ако е ненужно. Такива хора със сигурност имат проблем в социалните кръгове. Много от тях се явяват един вид шутовете на компанията, те са шегаджий и е забавно да си около тях, въпреки че не разбирате хобитата им и намирате идеите им за странни, едва ли бихте искали такива хора да живеят в къщата ви, а в много случаи са ви неприятни заради арогантното им поведение. Много такива хора имат приятели, не много, но имат, за жалост винаги в по късен етап от живота им, когато за свободни от оковите на образователната система, която ги принуждава да седят в една стая с 20 случайни хора, които те не са избирали за свои познати. В повечето случаи приятелите са състуденти, или колеги, или просто хора от интернет които се интересуват от същите неща. Истината е че ние не сме пристрастени към интернетът защото сме болни наркомани които имаме нужда от помощ, просто обикновенните хора са скучни, а в интернетът има толкоав много хора които разбират мъката ни.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Този пост е вдъхновен от тези два други блог поста:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lispy.wordpress.com/2008/08/25/do-you-know-any-programmers-that-exhibit-these-personality-traits/"&gt;http://lispy.wordpress.com/2008/08/25/do-you-know-any-programmers-that-exhibit-these-personality-traits/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lispy.wordpress.com/2008/08/27/how-to-get-the-most-out-of-your-eccentric-programmergenius/"&gt;http://lispy.wordpress.com/2008/08/27/how-to-get-the-most-out-of-your-eccentric-programmergenius/&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-3368106320172137635?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/3368106320172137635/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=3368106320172137635' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/3368106320172137635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/3368106320172137635'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/08/blog-post_28.html' title='Ексцентричност'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-2738500067785602123</id><published>2008-08-25T18:09:00.002+03:00</published><updated>2008-08-25T19:29:47.892+03:00</updated><title type='text'>Първи стъпки в програмирането с Python. част 6. Драконът и Императора</title><content type='html'>&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Index:&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-1.html"&gt;1.Интродукция&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-2.html"&gt;2.В началото бе словото&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-3.html"&gt;3.Ю толкинг ту ми?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-4.html"&gt;4.Ужаст и страхопаника&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-5.html"&gt;5.Императорът и дракона&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;6. Драконът и Императора&lt;br /&gt;&lt;br /&gt;Императоре, време е да ви запозная с дракона. Днес ще говорим за функциите. Функционалното програмиране е един от най мощните похвати в програмирането, и ако се използва правилно може да доведе до много добри резултати. Властта ти над функциите не може да идва от прости заповеди както до сега. За да имаш власт над функциите трябва да ги разбираш дълбоко. Трябва да знаеш името на духът, за да имаш власт над него. Днес ще се опитам да ви обясня какъв е духът на функциите и как да го овладеете, не може със сила или с воля, трябва с разбиране и акъл! &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;В математиката функциите представляват зависимости между променливи. Да речем функцията f, е такава че за всяко x има число y което е равно на x+1. Или нещо такова, математиката не е толкова интересна нали :D При програмирането е донякъде същото. Имаме конструкции наречени функции, те приемат за вход някакви стойности и връщат някакъв резултат със тези стойности. Ето как изглежда една python функция:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;def име на функция(параметри):&lt;br /&gt;    действия с параметрите&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;функции конструираме с def, това е съкратено от дефинирай, т.е. дефинирай функция с това име, с тези параметри, да извършва тези действия и да върне този резултат. Параметрите се слагат в скоби и са разделени от запетаи, отново имаме на края на главния ред двоеточие и отново следващите редове са отместени с 4 интервала(или 2 ако бачкате за гугъл, но НЕ и табове, много хора ще ви намразят ако ползвате табове). Ето една истинска функция:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;def square(x):&lt;br /&gt;    return x*x&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;тази конструкция дефинира функцията square() която приема едно число x и връща като отговор x на квадрат. Ето как се ползва това в интерпретатора на python:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt;def square(x):&lt;br /&gt;...    return x*x&lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt;square(4)&lt;br /&gt;16&lt;br /&gt;&gt;&gt;&gt;square(5)&lt;br /&gt;25&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Готино, а? Ето как викаме функциите, като слагаме параметрите им в скоби за да ги извикаме, трябва само да кажем името им и какво искаме от тях, малкото духче веднага ще дойде да ни свърши работата. Балък. Думата return се използва често във функциите, когато искате да ви върнат стойност, тук искаме функцията да върне стойност x*x, ако го нямаше и просто бяхме написали x*x вместо return x*x, функцията нямаше да върне нищо. Резултатът може да се съхранява в променливи:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt;x=square(4)&lt;br /&gt;&gt;&gt;&gt;x&lt;br /&gt;16&lt;br /&gt;&gt;&gt;&gt;x=square(x)&lt;br /&gt;&gt;&gt;&gt;x&lt;br /&gt;256&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Тук виждате как на х присвоихме резултатът върнат от square, х не е равно на square, a на резултатът му. Ето как може да направите x да е равно на square&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt; x=square&lt;br /&gt;&gt;&gt;&gt; x(4)&lt;br /&gt;16&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Когато присвоим на x името square, ние не го присвояваме, а само го караме да сочи съм същия обект(функцията) Променливите в python само сочат към обекти, а не ги съхраняват в себе си, за разлика от C++ да речем, където променливите съхраняват обекти. а square е просто променлива сочеща функция. Важно е да отбележим и че х-ът вътре в square е различен от x-а извън него. Ето какво имам предвид:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt;def square(x):&lt;br /&gt;...    return x*x      &lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt;x=square(4)        &lt;br /&gt;&gt;&gt;&gt;x=square(x)         &lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Първия х във дефиницията на функцията е локален, той е само за самата функция, втория х на който присвояваме square(4) и по късно даваме като аргумент на square е глобален х. Представете си че всичко в def е отделна програма с отделни имена и променливи и отделен код, тя е напълно изолирана от външния свят, освен със входа си в скобите и изхода си от return, това се нарича пространство от имена(namespace). Българския термин е среда, глобалната среда е мястото където живее втория х, а локалната за square среда съдържа първия х.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt;def square(y):&lt;br /&gt;...    return y*y      &lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt;x=square(4)         &lt;br /&gt;&gt;&gt;&gt;x=square(x)         &lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;това е същото като горното, можем също така да напишем:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt;def square(x):&lt;br /&gt;...    return x*x      &lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt;y=square(4)         &lt;br /&gt;&gt;&gt;&gt;y=square(y)         &lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;същото като горните 2, ето още един пример:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt;def square(y):&lt;br /&gt;...    return y*y      &lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt;y=square(4)         &lt;br /&gt;&gt;&gt;&gt;y=square(y)         &lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;няма значение, двете променливи са различни неща. Това е важно да се знае. Да разгледаме следния пример:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt; y=1&lt;br /&gt;&gt;&gt;&gt; def pp(x):&lt;br /&gt;...     return x+y&lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt; pp(2)&lt;br /&gt;3&lt;br /&gt;&gt;&gt;&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Тук имаме глобалното име y което е равно на 1, също така имаме и функцията pp, която приема едно число и добавя y към него. Тази функция не е особено добре написана. Всеки може да промени y и цялата функция ще започне да прави глупости. По добър вариант ще е да се напише така:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt; y=1&lt;br /&gt;&gt;&gt;&gt; def pp(x,z):&lt;br /&gt;...     return x+z&lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt; pp(2,y)&lt;br /&gt;3&lt;br /&gt;&gt;&gt;&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Така функцията pp има два параметъра, и ги събира, когато я викаме първия е 2 а втория е y. Сега е по добре написано именно защото ако някой промери y, функцията пак ще си има предвидим изход, просто променяш параметъра и. Сега може да използваш pp и с други числа, да речем pp(2,5) ще върне 7, преди това беше невъзможно. &lt;br /&gt;&lt;br /&gt;Във функциите може да слагаме всички други конструкции които сме разглеждали, включително и други функции. Ето една която принтира всички елементи на редица(списък, низ, наредена n-торка)&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt; def printlist(list):&lt;br /&gt;...     for x in list:&lt;br /&gt;...             print x&lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt; printlist('hello')&lt;br /&gt;h&lt;br /&gt;e&lt;br /&gt;l&lt;br /&gt;l&lt;br /&gt;o&lt;br /&gt;&gt;&gt;&gt; printlist([1,2,3,4,5])&lt;br /&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Може да ползвате while,if и общо взето всичко друго във функциите, и како казах и други функции. Ето един интересен пример:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt; def makeadder(num):&lt;br /&gt;...     def adder(x):&lt;br /&gt;...             return x+num&lt;br /&gt;...     return adder&lt;br /&gt;...&lt;br /&gt;&gt;&gt;&gt; addr2=makeadder(2)&lt;br /&gt;&gt;&gt;&gt; addr2(4)&lt;br /&gt;6&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Функцията makeadder приема число за аргумент и връща друга функция която приема друго число за аргумент и прибавя старото към него, искаме да създадем функцията adder2 която да добавя 2 към някакво число? Можем да използваме def, но защо като вече имаме makeadder и той е създаден специално да прави подобни функции. Това се нарича процедура от висок ред, т.е. функция която приема друга функция като аргумент, или връща такава като резултат, видяхме втория тип, да видим още подобни:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt; list=[1,2,3,4,5]&lt;br /&gt;&gt;&gt;&gt; map(square,list)&lt;br /&gt;[1, 4, 9, 16, 25]&lt;br /&gt;&gt;&gt;&gt;              &lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Функцията map() е вградена в Python, тя приема някаква функция и някаква последователност като аргументи и прилага тази функция към всеки елемент от последователността, и връща нова последователност със новите елементи, в случая приложи square към list и върна нов списък. &lt;br /&gt;&lt;br /&gt;Остава да видим още една малка подробност за функциите. Анонимните функции. Това са функции без имена(очевидно). Те се създават с конструктора lambda, защо ламбда? Защото на клавиатурите ни няма гръцки букви, ето защо! Ако имаше щяхме да използваме оная буква дето мяза на Л от гръцката азбука вместо цялата дума lambda. Ето как се ползва ламбда:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;square=lambda x: x*x&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Тук на променливата square просто задаваме стойност функция, която приема един аргумент, и връща квадратът му. Синтаксисът е малко по различен. Lambda-та е спорен въпрос в python, и не е толкова мощна колкото def-функциите, защото не може да има повече от един ред, и не може да има синтактични конструкции като for, while, print, или if. Това я прави малко кастрирана, но в някой случаи е досат полезно нещо. Вече сме запознати с по голямата част от езика, остава да поразгледаме класовете(нещо което няма да задълбочавам) и след това ще почна със обикновени трикчета които съм посъбрал за езика, с които могат да се правят готини работи, ще ви давам примери и програми от които да се учите на основите, но общо взето по голямата част от синтаксиса го знаете вече. Сега остава да си купите някоя дебела книжка(или да си изтеглите, като мен) и да си я прочетете, все пак това е блог, не шибана енциклопедия, не може да научите език от блог.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-2738500067785602123?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/2738500067785602123/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=2738500067785602123' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/2738500067785602123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/2738500067785602123'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/08/python-6.html' title='Първи стъпки в програмирането с Python. част 6. Драконът и Императора'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-5099259884588686490</id><published>2008-08-23T19:25:00.002+03:00</published><updated>2008-08-23T20:50:50.165+03:00</updated><title type='text'>Първи стъпки в програмирането с Python. част 5.Императорът и дракона</title><content type='html'>&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Index:&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-1.html"&gt;1.Интродукция&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-2.html"&gt;2.В началото бе словото&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-3.html"&gt;3.Ю толкинг ту ми?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-4.html"&gt;4.Ужаст и страхопаника&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;5.Императорът и дракона&lt;br /&gt;&lt;br /&gt;Днес ще говорим за императивното програмиране. Нали се сещате, онова в което казваш на компютъра стъпка по стъпка какво да прави. Заповядваш му, казваш му да направи нещо. Ти си императорът. Имаш неограничена власт, единственото ограничение което имаш е словото ти. Владението на езикът ти е единственото ограничение на властта ти. Да ти дадем малко власт. Конструкциите на езика и синтаксисът са днешните ни теми. Нямам много встъпителни думи освен само че с властта идва и отговорността. Вече не си дете което се мъчи да разбере сложната материя на програмирането, а си император на света, и думите ти са закон, подбирай си думите мъдро.&lt;br /&gt;&lt;br /&gt;Ако,ако,ако...&lt;br /&gt;&lt;br /&gt;if, else конструкциите са най известните в програмния свят, почти всеки истински език ги има(дори LOLcode if can has chezeburger?) Това дава много мощ. Ето как изглежда:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;if bored:&lt;br /&gt;    kill kittens&lt;br /&gt;else:&lt;br /&gt;    not kill kittens&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Ето как работи: Имаме ключовата дума if следвана от израз, ако изразът е верен(например ако bored е вярно) да изпълни действието на следващия ред(да убие котета). На следващия ред има else това се изпълнява ако bored е грешно, дано не ви е скучно, защото ако ви е скучно ще убия котката ви!!! Така след това отклонение да се върнем на въпроса. Забелязвате че втория и четвъртия ред са подредени малко по на дясно от другите, това е защото в python не харесваме фигурните скоби {} и ги ползваме само за речници. Вместо да слагате изразите си в скоби просто конструирайте блоковете си с интервали. Не използвайте табове, ако редакторът ви е настроен да слага интервали вместо табове, ок, НО НЕ ИЗПОЛЗВАЙТЕ ТАБОВЕ, също така използвайте ако можете 4 интервала, или 2, ако работите за Гугъл, ако не работите 4!!! Всички структури в Python се конструират със интервали, така знаеш кога нещо принадлежи на нещо друго, а и е по четимо, няма фигурни скоби, и всичко е подредено, красиво е, чисто е, ако не ти пука за чистотата на кода ти ще убия кот.. та ето още един по практичен пример:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;if 5 in [1,2,3,4,5]:&lt;br /&gt;    print '5 e vuv spisukut'&lt;br /&gt;else:&lt;br /&gt;    print '5 ne e v spisukut'&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;просто е нали? Ето още една готина конструкция elif това е съкратено от else if и се използва ако трябва да проверите повече от 1 нещо:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;if 5 in [1,2,3,4,5]:&lt;br /&gt;    print '5 e vuv spisukut'&lt;br /&gt;elif 4 in [1,2,3,4,5]:&lt;br /&gt;    print '4 e vuv spisukut, no 5 ne e'&lt;br /&gt;else:&lt;br /&gt;    print '5 i 4 ne sa v spisukut'&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;това е еквивалентно на:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;if 5 in [1,2,3,4,5]:&lt;br /&gt;    print '5 e vuv spisukut'&lt;br /&gt;else:&lt;br /&gt;    if 4 in [1,2,3,4,5]:&lt;br /&gt;        print '4 e vuv spisukut, no 5 ne e'&lt;br /&gt;    else:&lt;br /&gt;        print '5 i 4 ne sa v spisukut'&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Кое е по четимо и просто? Разбира се първото, следователно ако предпочитате второто сте тъпи и грозни, и нямате вкус към красотата. Да продължим.&lt;br /&gt;&lt;br /&gt;Какво е 5 in [1,2,3,4,5]? Това е израз който връща една от двете стойности вярно или невярно, ако 5 е в списъкът връща вярно, ако не е, връща невярно. Сега ще ви разкажа за един човек наречен Бул. Бул бил блестящ математик и измислил буленовата логика. Край. Не ви ли хареса? Не съм по приказките, на кратко буленовите типове са два истина и неистина, пир python всичко е истина освен нулата и неистината(пише се False) Ако напишете примерно:&lt;br /&gt;&lt;br /&gt;5==0  ще получите False защото 5 не е 0, освен ако не сте надрусани, но ако сте надрусани ви е забранено на програмирате, по добре да се качите да карате, щетите ще са по малки, виждали ли сте winamp напоследък? Точно когато си мислех че тази програма не може ад стане по скапана и хвърлих един поглед днес, не пийте/друсайте докато програмирате за доброто на всички ни.&lt;br /&gt;&lt;br /&gt;ако напишем:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;if 5==0:&lt;br /&gt;    нещо си&lt;br /&gt;else:&lt;br /&gt;    нещо друго&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;тук ще се изпълни само другото нещо след else-а, но ако напишем&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;if (5==0)==False:&lt;br /&gt;    нещо си&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;винаги това нещо ще се изпълни, защото 5==0 винаги е грешно. Това се нарича буленова логика, има смисъл нали? 5 НЕ Е 0 никога!!!&lt;br /&gt;&lt;br /&gt;Ако напишете:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;if 0:&lt;br /&gt;    нещо си&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;също нямад а се изпълни това нещо, защото 0 е грешно, но ако напишете:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;if 0==False:&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;тук вече ще получите отговор вярно(True)&lt;br /&gt;&lt;br /&gt;нулата е грешна? това вече не е особено логично, но карай, логиката не е основата на нашата вселена, погледнете MTV за доказателство.&lt;br /&gt;&lt;br /&gt;Продължаваме със следващата конструкция while. Ето как изглежда:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;while not bored:&lt;br /&gt;    not kill kittens&lt;br /&gt;else:&lt;br /&gt;    kill kittens&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;чете се докато не е скучно, не убивай котета, ако това не е вярно, убивай котенца(повтарям, не скучайте, защото умират котета)&lt;br /&gt;&lt;br /&gt;Тук е почти същото, имаме буленов израз който се проверява и се изпълнява нещо, след като се изпълни се проверява отново дали изразът е правилен, и ако е се изпълнява отново, ако не е се изпълнява else-а, а ако няма такъв се прекратява изпълнението на цикълът. Ето един по практичен пример:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;x=0&lt;br /&gt;while x != 5:&lt;br /&gt;    x=x+1&lt;br /&gt;    print x&lt;br /&gt;else:&lt;br /&gt;    print "x is now 5"&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Тук имаме операторът за неравенство != който е обратен на == и означава 'не е равно на'&lt;br /&gt;Това връща следния резултат:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;x is now 5&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Виждате ли каква мощ имате сега императоре? Вместо да пишете нещо от рода на:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;x=0&lt;br /&gt;print x&lt;br /&gt;x=1&lt;br /&gt;print x&lt;br /&gt;x=2&lt;br /&gt;print x&lt;br /&gt;x=3&lt;br /&gt;print x&lt;br /&gt;x=4&lt;br /&gt;print x&lt;br /&gt;x=5&lt;br /&gt;print x&lt;br /&gt;print 'x is now 5'&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;може да напишете този малък цикъл и да не се занимавате с глупости. Това е красота, а горното е ГРОЗНО!!!Дори изглежда грозно на вид Ъгфхх!!!&lt;br /&gt;&lt;br /&gt;Сега да видим какво ни остава от днешния списък със задачки. for цикълът!! Да!! любимия ми! Ето как изглежда той&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;for x in [1,2,3,4,5]:&lt;br /&gt;    print x&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;чете се за всяко х във списъкът [1,2,3,4,5] принтирай х, при всяко преминаване на цикълът, х ще приема някоя стойност от списъкът, първия път е 1, втория 2 и т.н. до края на списъкът, това работи и с редици и низове и общо взето всички последователности.&lt;br /&gt;&lt;br /&gt;Вече имате малко мощ, и знаете малко повече за синтаксисът. Не навлизах в дълбочина в темите които разглеждахме до сега. Не знаете много за низовете, нто за списъците, нито за речниците, нито за буленовите типове, нито за if-овете, нито за while-овете, нито за for-овете. НО знаете достатъчно за сега. Медитирайте над всичко това, от утре ще преобразуваме начина ви на мислене, защото ще разглеждаме функциите. Ще видите магии, и ще видите как тези магии изчезват и вие започвате да разбирате магьосническите ми номера. ще видите мистерии и решения. ще видите чудеса и ще видите че светът и властта която ви дадох днес не са вчичко, а има и скрита мъдрост в езикът и словото, която трябва да се намери.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-5099259884588686490?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/5099259884588686490/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=5099259884588686490' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5099259884588686490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5099259884588686490'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/08/python-5.html' title='Първи стъпки в програмирането с Python. част 5.Императорът и дракона'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-5822004244184304871</id><published>2008-08-22T18:25:00.003+03:00</published><updated>2008-08-22T19:54:52.219+03:00</updated><title type='text'>Първи стъпки в програмирането с Python. част 4.Ужаст и страхопаника</title><content type='html'>&lt;blockquote&gt;&lt;span style="font-weight:bold;"&gt;Index:&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-1.html"&gt;1.Интродукция&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-2.html"&gt;2.В началото бе словото&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-3.html"&gt;3.Ю толкинг ту ми?&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;4.Ужаст и страхопаника&lt;br /&gt;&lt;br /&gt;Започваме със примитивните типове данни. Числа и низове, вчера говорихме малко за низове(ако летете това в същия ден в който четохте предишната глава, не е било вчера, а преди малко). След като говорим за числата и низовете, ще говорим за променливите и имената, после за сложните типове данни, като списъци и речници. Трябва да свърша с това бързо, за разлика от други книги и туториъли няма д се занимавам много със подробностите, има си още туториъли и книги които ще трябва да прочетете, от един блог програмист не се става. Причината поради която ще ви начаткам всичко това на веднъж е че искам да имам повече време за по интересните части, това не е много интересно. ще ви прехвърля на бързо през типовете данни и операциите, след това в следващия пост на бързо ще минем през синтаксиса и някой други оператори и ще преминем към интересната част, интересни програми, или скучни програми ако не харесвате математика :D &lt;br /&gt;&lt;br /&gt;Да минем отново през низовете. Имаме низ:&lt;br /&gt;&lt;br /&gt;"shishe", той е същия като низът 'shishe', това че имат различни кавички не е важно, важното е да не се смесват. можете да ги събирате&lt;br /&gt;&lt;br /&gt;'shi'+'she' -&gt; 'shishe'&lt;br /&gt;&lt;br /&gt;или умножавате&lt;br /&gt;&lt;br /&gt;'shi' * 5 -&gt; 'shishishishishi'&lt;br /&gt;&lt;br /&gt;по късно ще ви покажа още няколко готини номера с тях.&lt;br /&gt;&lt;br /&gt;Сега да видим числата. Те както предполагам знаете може да са цели и дробни, в програмирането дробните числа се наричат числа с плаваща запетая, или float, а целите се наричат int. Има още няколко вида, но те няма да ви трябват за сега. Да видим примери&lt;br /&gt;&lt;br /&gt;5 е цяло число, но 5.0 е float, можем да ги съберем&lt;br /&gt;&lt;br /&gt;5 + 5.0 -&gt; 10.0 както виждате това връща float. А ако ги умножим:&lt;br /&gt;5 * 5.0 -&gt; 25.0 отново float, можем и да ги разделим&lt;br /&gt;5 / 5.0 -&gt;  1.0 а ако ги извадим &lt;br /&gt;5 - 5.0 -&gt; се получава един фънки резултат 0.0, това е магия&lt;br /&gt;&lt;br /&gt;можем да преобразуваме типове, да речем искаме числото 5.0 да стане цяло:&lt;br /&gt;&lt;br /&gt;int(5.0) -&gt; 5 готово, ако напишем float(5) ще получим обратно 5.0, а ако направим някое друго число например 5.5 на int ще получим отново 5, забравете какво са ви учили в даскало при закръглянето. &lt;br /&gt;&lt;br /&gt;При деленето обаче се получават интересни резултати. Искаме да разделим да речем 5 на 2:&lt;br /&gt;&lt;br /&gt;5 / 2 -&gt; 2, странно нали? Този проблем се отстранява лесно, като се използват float-ове:&lt;br /&gt;5.0/2.0 -&gt; 2.5 ето това вече е по добре. Проблемът остава със делене на по големи числа:&lt;br /&gt;2 / 3 -&gt; 0 отново със float се решава проблемът:&lt;br /&gt;2.0/3.0 -&gt; 0.66666666666666663 Това число всъщност е безкрайно, но компютърът го реже в определен момент, едва ли ще ни трябва някога по голяма точност, а ако ни трябва, има инструменти за това.&lt;br /&gt;&lt;br /&gt;Можем също така да получаваме остатък със оператора % :&lt;br /&gt;&lt;br /&gt;5 % 2 -&gt; 1 това е остатъкът от делението.&lt;br /&gt;4 % 2 -&gt; 0 тук няма остатък&lt;br /&gt;2 % 3 -&gt; 2 тук остатъкът е 2&lt;br /&gt;&lt;br /&gt;Оправихме до известна степен числата. Сега да се занимаваме малко с променливите. В python а и в програмирането като цяло е прието = да означава присвояване, а не равно, равно е ==, когато казваме x=5 обикновено се разбира че x има стойност 5, а не че x е равно на 5, ако кажем че x=5, и после кажем че x==5, това ще бъде вярно, защото x вече Е равно на 5, но чак след като сме му дали стойност 5, преди това е просто празна променлива. на променливи можем да присвояваме почти всичко, каквото се сетите. Да видим сега няколко интересни примерчета:&lt;br /&gt;&lt;br /&gt;x='shi'&lt;br /&gt;y='she'&lt;br /&gt;z=x+y&lt;br /&gt;сега z е 'shishe'&lt;br /&gt;сега можем да кажем например&lt;br /&gt;a=z*5&lt;br /&gt;сега а е 'shisheshisheshisheshisheshishe'&lt;br /&gt;сега можем да променим променливите с други стойности, да речем искамe:&lt;br /&gt;x=a&lt;br /&gt;сега х е 'shisheshisheshisheshisheshishe'&lt;br /&gt;y=5&lt;br /&gt;a=3&lt;br /&gt;сега y и a са цели числа, сега можем да комбинираме това цялото:&lt;br /&gt;z=x*(y+a)&lt;br /&gt;сега z e &lt;br /&gt;&lt;br /&gt;'shisheshisheshisheshisheshisheshisheshisheshisheshisheshishe&lt;br /&gt;shisheshisheshisheshisheshisheshisheshisheshisheshisheshishe&lt;br /&gt;shisheshisheshisheshisheshisheshisheshisheshisheshisheshishe&lt;br /&gt;shisheshisheshisheshisheshisheshisheshisheshisheshisheshishe'&lt;br /&gt;&lt;br /&gt;т.е. 40 шишета, това вече се нарича тежко пиянство.&lt;br /&gt;&lt;br /&gt;Продължаваме със следващата страхотия, това е списъкът, или list. Той се пише между две квадратни скоби ето така: [], и може да съдържа всякакви работи, дори и други списъци.&lt;br /&gt;&lt;br /&gt;[1,2,3,4,5] това е списък от числа&lt;br /&gt;['tova','e','spisuk','ot','nizove']&lt;br /&gt;[1,'niz',['spisuk v spisukut']]&lt;br /&gt;&lt;br /&gt;Както виждате тук списъкът може да съдържа много работи. Сега да видим някой готини трикчета с него.&lt;br /&gt;&lt;br /&gt;x=[1,2,3,4,5]&lt;br /&gt;x[0] -&gt; 1&lt;br /&gt;&lt;br /&gt;какво стана тук? просто поискахме първия елемент от x който е 1, при списъците броенето на елементите почва от 0, тоест първия елемент(0) е 1,втория елемент(1) е 2. Малко е объркващо, но сеща ще обясня, списъците, наредените n-торки, и низовете броят елементите си от 0. ето:&lt;br /&gt;&lt;br /&gt;[1,2,3,4,5]&lt;br /&gt; 0 1 2 3 4&lt;br /&gt;&lt;br /&gt;виждате индексът на всеки елемент. При списъците можем да променяме елементи:&lt;br /&gt;&lt;br /&gt;x[0]=0&lt;br /&gt;&lt;br /&gt;сега х е:&lt;br /&gt;[0,2,3,4,5]&lt;br /&gt;&lt;br /&gt;можем също така да 'режем' части от списъкът, да речем искаме първите 3 елемента:&lt;br /&gt;x[0:2] ще върне:&lt;br /&gt;[0,2,3]&lt;br /&gt;&lt;br /&gt;тук използваме един готин трик [0:2] се нарича slice(слайс) това казва 'дай ми всички елементи от първия до 3-тия. Можем да кажем също така и [3:] което ще рече 'дай ми всички елементи от четвъртия до последния, което в случая на x е [4,5]. Можем да го направим и в обратна посока [-1:-2] ще върне същия резултат, това се чете 'върни ми всички елементи от последния, до предпоследния. Забелязвате че когато ползваме отрицателни индекси се брои от -1, а не от -0. Това е важно да се запомни, ако искаме да копираме даден списък можем да поискаме [:] което означава 'дай ми всички елементи от първия до последния'. както виждане нулата може да се изпуска [:2] е същото като [0:2]. Тези трикчета могат да се използват и за низове:&lt;br /&gt;&lt;br /&gt;x='12345'&lt;br /&gt;x[:2] -&gt; '123'&lt;br /&gt;x[3:] -&gt; '45'&lt;br /&gt;&lt;br /&gt;Красота! Има един проблем обаче, низовете не могат да се променят. т.е ако напиша x[0]='0' това няма да работи. За целта трябва да приложим малко други трикчека:&lt;br /&gt;&lt;br /&gt;x='0'+x[1:] това ще върне x='02345' , ако искаме да променим нещо по средата, ето номера&lt;br /&gt;&lt;br /&gt;x=x[:1]+'SHISHE'+[3:] това ще върне '02SHISHE45'&lt;br /&gt;&lt;br /&gt;Ако това беше списък, това щеше ад бъде много по лесно:&lt;br /&gt;&lt;br /&gt;x=[1,2,3,4,5]&lt;br /&gt;x[2]='SHISHE'&lt;br /&gt;x -&gt; [1,2,'SHISHE',4,5]&lt;br /&gt;&lt;br /&gt;Но така е било писано. Да видим следващото мъчение за мозъците ви:&lt;br /&gt;&lt;br /&gt;Сега да видим едни подобни на списъците обекти наречени наредени n-торки, аз ги наричам редици за кратко, на английски tuple. Те са като списъците, но използват кръгли скоби (1,2,3,4,5) За разлика от списъците те не могат да се променят и да се разширяват, имат постоянен размер и постоянни членове, но могат да имат всякакви елементи в себе си. и отново [:] и подобните работят, просто не можете да присвоявате стойности, също както низовете. Няма да влизам в подробности тук, в продължение на цялата поредица ще виждате допълнителни трикчета и методи свързани с тези структури и обекти, за сега това ви стига. Останаха само речниците. На английски dict. Те са просто хеш таблици(сякаш очаквам да знаете какво е хеш-ове) Та при тях имаме двойки от ключ и стойност. да речем нещо от рода на &lt;br /&gt;&lt;br /&gt;x={1:'a', 2:'b', 3: 'c'}&lt;br /&gt;&lt;br /&gt;сега по ключ можем да достигнем до дадена стойност:&lt;br /&gt;x[1] връща 'a', а ако дадем&lt;br /&gt;x[1]='aa' сега речникът ще е такъв&lt;br /&gt;{1:'aa', 2:'b', 3: 'c'}&lt;br /&gt;&lt;br /&gt;за сега това трябва да знаете, би трябвало да ви стига. По късно когато разглеждаме по сложни конструкции ще разгледаме още трикове с речниците. &lt;br /&gt;&lt;br /&gt;И така оцеляхте. Това е просто формално запознаване със основните структури и типове в Python, следващия път ще разгледаме синтаксисът и конструкциите на езика. Този път не беше толкова забавно колкото предните писания, защото просто тук трябваше да обяснявам теория, не друго. Но програмирането не е само вицове за пингвини, трябва и пот.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-5822004244184304871?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/5822004244184304871/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=5822004244184304871' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5822004244184304871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/5822004244184304871'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/08/python-4.html' title='Първи стъпки в програмирането с Python. част 4.Ужаст и страхопаника'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-2033268193224929630</id><published>2008-08-21T22:46:00.004+03:00</published><updated>2008-08-21T23:17:46.597+03:00</updated><title type='text'>Първи стъпки в програмирането с Python. част 3.Ю толкинг ту ми?</title><content type='html'>&lt;blockquote&gt;&lt;span style="font-weight:bold;"&gt;Index:&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-1.html"&gt;1.Интродукция&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-2.html"&gt;2.В началото бе словото&lt;/a&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3.Ю толкинг ту ми?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Да на теб говоря, няма никой друг в стаята момче(или момиче, Интернет анонимност, сори :D). Ето как се говори с компютъра. Той е мноо тъп. Ама мноо. Мноо мноо мноо тъп. На него трябва да му казваш точно какво да прави, в точни инструкции наречени асембларен език. Това е почти машинен език, труден за разбиране от хората и труден за програмиране. Някогя всички програми са се писали на този точен език. По късно умните програмисти, понеже били мързеливи(това е факт, не си го измислям за да увелича хумора) и не скали да пишат толкова много код написали програма, която да превежда един нов език на машинен език. Сега можели да пишат кратки програми на новия език, създаден за хората, а понеже компютърът е тъп и не го разбира, имат програма която го превежда на машинен език. Умните програмисти обаче били още по мързеливи и не искали да да пишат код в новия език, той все още бил много дълъг и труден за писане, за това решили да създадат нов език, нови езици всъщност, много хора започнали да си пишат всевъзможни езици, използвайки асемблер или стария нов език, сред всички тези нови езици бил и Python. Благодарение на python, програмистите можели да пишат кратък и ясен код който се разбира лесно от тях, и който по късно може да се изпълнява от машината. Езикът е близък до човешкия и лесен за разбиране. Кажете ми какво прави следния код?&lt;br /&gt;&lt;br /&gt;print ('shi' + 'she') * 5&lt;br /&gt;&lt;br /&gt;Точно така, първо събира shi със she, образувайки shishe, след това го принтира 5 пъти на екрана. получава се:&lt;br /&gt;&lt;br /&gt;shisheshisheshisheshisheshishe&lt;br /&gt;&lt;br /&gt;Ако сложите един интервал след 'she' така че да стане 'she ' ще бъдат и разделени&lt;br /&gt;&lt;br /&gt;print ('shi' + 'she ') * 5&lt;br /&gt;&lt;br /&gt;shishe shishe shishe shishe shishe&lt;br /&gt;&lt;br /&gt;Просто нали? Сега малко теория. print е оператор, той принтира неща на екрана. Това е лесно за разбиране. Сега да видим другите неща.&lt;br /&gt;&lt;br /&gt;'i am stupid','shi','she','she ' са 3 различни думи. Думите в python се наримат string, на български се наричат низове. те са заобиколени от кавички, единични '' или двойни "", няма значение, важното е в един низ да няма от двете(по подробно ще обясня после). 'she' и 'she ' са различни низове, защото втория има интервал на края си. също така 'SHЕ' и 'she' са различни, т.е. има значение дали са големи или малки букви. &lt;br /&gt;&lt;br /&gt;следват + и *, това са събиране и умножение. Те са по принцип за числа, но стават и за низове. Да речем:&lt;br /&gt;&lt;br /&gt;'shi'+'she' &lt;br /&gt;&lt;br /&gt;връща&lt;br /&gt;&lt;br /&gt;'shishe'&lt;br /&gt;&lt;br /&gt;а &lt;br /&gt;&lt;br /&gt;'shi'*5&lt;br /&gt;&lt;br /&gt;връща&lt;br /&gt;&lt;br /&gt;'shishishishishi'&lt;br /&gt;&lt;br /&gt;можем да ги комбинираме, но трябва да внимаваме:&lt;br /&gt;&lt;br /&gt;('shi' + 'she') * 5&lt;br /&gt;&lt;br /&gt;връща&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;shisheshisheshisheshisheshishe&lt;br /&gt;&lt;br /&gt;скобите са там за да кажат че първо трябва да се съберат двете думи, и после да се умножат. иначе ще се получи това:&lt;br /&gt;&lt;br /&gt;'shi' + 'she ' * 5&lt;br /&gt;&lt;br /&gt;shi she she she she she&lt;br /&gt;&lt;br /&gt;както виждате първо се извършва умножението(така ви учат в даскало нали?) и после събирането, и за това имаме едно 'shi' и 5 'she '-та &lt;br /&gt;&lt;br /&gt;До тук добре, утре ще покрием по подробно основните видове данни като числа, думи и списъци. До утре скакалецо и неща шишето бъде с теб..хлъц...залита пиян&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-2033268193224929630?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/2033268193224929630/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=2033268193224929630' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/2033268193224929630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/2033268193224929630'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/08/python-3.html' title='Първи стъпки в програмирането с Python. част 3.Ю толкинг ту ми?'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-3742755153226341281</id><published>2008-08-21T22:14:00.003+03:00</published><updated>2008-08-21T22:41:03.831+03:00</updated><title type='text'>Първи стъпки в програмирането с Python. част 2.В началото бе словото</title><content type='html'>&lt;blockquote&gt;Index:&lt;br /&gt;&lt;a href="http://nosleepbg.blogspot.com/2008/08/python-1.html"&gt;1.Интродукция&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;&lt;br /&gt;2.В началото бе словото&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Първо трябва да ви подготвим психически, после технически. В първата част ви подготвих психически(или ви обърках тотално, зависи от психиката ви), сега ще ви подготвя технически(всъщност няма, сами ще се подготвите)&lt;br /&gt;&lt;br /&gt;Какво ви е необходимо за да програмирате? Текстов редактор, клавиатура и монитор.&lt;br /&gt;&lt;br /&gt;Ако клавиатурата и мониторът могат да си останат тези които в момента имате пред екрана си, то редакторът е нещо различно. Ако сте като повечето хора, най вероятно живеете в къща с прозорци и имате pc с Windows. Което означава че операционната ви система няма нито свестни езици инсталирани с нея, нито свестни редактори за програмиране. Операционната ви система ви ПРЕЧИ да програмирате. Препоръчвам да я разкарате. Точно така, разкарайте уйндолса ако можете. В днешно време платформата е все по маловажна, ако не играете игри почти няма значение дали ползвате уйндолс, макинтош, линукс или BSD, дори и iPhone-а е сравнително сносен pc, който става за сърфиране и гледане на клипове и музика. Няма да ви казвам как да си инсталирате линукс, или как да научите линукс, всъщност няма да ви помагам в тази част, има мнооого такива туториъли и помощни сайтове на бг в нета, потърсете ги просто. А ако ви мързи, и имате малко излишни пари, купете си нов макинтош, много по добър от уйндолс, красив, елегантен, бърз и има свестни редактори и езици за него.&lt;br /&gt;&lt;br /&gt;Ако ви мързи да си сменяте операционната система, или ако обичате уйндолс(хахаххаха), не се притеснявайте, пак може да програмирате, просто ще трябва да се борите с операционната си система. Първо си вземете свестен редактор. За уйндолс, понеже ме мързи да търся, най вероятно &lt;a href="http://notepad-plus.sourceforge.net/uk/site.htm"&gt;notepad++&lt;/a&gt; ще свърши добра работа. В никакъв случай не ползвайте обикновенния notepad, или wordpad, или microsoft word. Това не са текстови редактори, а дяволът. &lt;br /&gt;&lt;br /&gt;Ако сте на линукс или bsd, най- вероятно имате някакъв прост редактор, ако сте с gnome имате някакъв редактор там, а с kde имате kedit и kate. Може да ползвате тях, аз ползвам Vim, но него ако искате ще научите по късно. За мак-а вече се оправяйте сами, нямам кинти и не мога да си позволя мак :D &lt;br /&gt;&lt;br /&gt;След като оправихме този малък проблем, сега да си изтеглите езика, на линукс или на макинтош имате python инсталиран по дифоулт. Но под уйндолс нямате нищо, нъцки, нищо! Трябва ви &lt;a href="http://www.python.org/download/"&gt;PYTHON&lt;/a&gt;. Теглите си програмата, инсталирате и отваряте интерпретатора. Ако сте под уйндолс трябва да отворите онази зла магическа програма command prompt от старт меню-то и да се научите как бачка. За сега обаче не ви трябва, просто си отворете старт менюто, дайте на python и отворете интерпретатора. Готово, вече сте в pyhon. Тук виждате нещо от сорта на:&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt;&lt;br /&gt;&lt;br /&gt;Това е интерпретатора, той чака командите ви. Напишете 2+2 и вижте какво ще стане. Ок. Сега напишете:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;print "I am stupid"&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Браво, напредвате :D Напишете горния код във файл stupid.py и го отворете със интерпретатора. Как става това ли? Под линукс просто пишете в конзолата python stupid.py и наекрана трябва да се появи 'I am stupid', под уйндолс е същото, отворете comand promp-a и напишете напишете нещо от сорта на:&lt;br /&gt;&lt;br /&gt;C:\python25\python stupid.py&lt;br /&gt;&lt;br /&gt;това ако stupid.py е в папката вашите документи.(не съм сигурен, нямам уйндолс да проверя дали бачка)&lt;br /&gt;&lt;br /&gt;Добре хлапе, до тук добре, ако си се справил де, ако не си, пробвай пак.&lt;br /&gt;&lt;br /&gt;Очаквайте 3-та част&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-3742755153226341281?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/3742755153226341281/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=3742755153226341281' title='2 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/3742755153226341281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/3742755153226341281'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/08/python-2.html' title='Първи стъпки в програмирането с Python. част 2.В началото бе словото'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-6559045655713015456</id><published>2008-08-21T20:48:00.002+03:00</published><updated>2008-08-21T22:13:46.516+03:00</updated><title type='text'>Първи стъпки в програмирането с Python. част 1.Интродукция</title><content type='html'>&lt;blockquote&gt;&lt;span style="font-weight:bold;"&gt;1.Интродукция&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://matematika.bg/wiki/%D0%9F%D1%8A%D1%80%D0%B2%D0%B8_%D1%81%D1%82%D1%8A%D0%BF%D0%BA%D0%B8"&gt;Тук бях написал малко текстче&lt;/a&gt; за хората които искат да почнат да учат програмиране. Текста е малко общ и като цяло е зле написан, и пълен с правописни грешки, и има много излишна информация, която не е нужна, също така е във супер грозен wiki формат, да видим дали по добре форматирания блогер формат ще е по подходящ за новата статия :D&lt;br /&gt;&lt;br /&gt;Тази поредица от блог постове е увод в програмирането, използвайки Python, като първи език, ако вече знаете други езици, има по подходящи туториъли, но може да прочетете и този, моя поне ще е забавен(до колкото мога)&lt;br /&gt;&lt;br /&gt;В статията препоръчвам и други готини езици, например руби. Руби е супер може би дори по готин от python, и то само заради един човек който го използва. Това е &lt;a href="http://en.wikipedia.org/wiki/Why_the_lucky_stiff"&gt;_Why?&lt;/a&gt; Да това е името му :D така се пише. Той е автор на &lt;a href="http://poignantguide.net/ruby/"&gt;Why’s (Poignant) Guide to Ruby&lt;/a&gt;. Доста готина книга с рисунки за програмиране с руби. Тази серия от туториъли се стреми да направи забавен български туториъл за python. Едва ли ще имам комикси и едва ли съм толкова ненормален колкото _Why?(близко съм, но не съвсем), така че ако искате комикси в туториълът ви, минете на руби и се радвайте на картинките на _Why?(Ако бях на ваше място щях да избера руби, комиксите са яки). &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;След като ви дадох възможност да избирате, време е да започнем. Що е програмиране? Имам една стара книга за правещ 8 в която една от първите глави отговаря на този въпрос. Правец използва basic, език който е супер скапан, но когато излизат през 80-те тези малки компютри които могат да се поберат на бюрото ти, това е бил единствения език който са имали и с него много хлапета се учат да пишат игрички и програмки, защото е сравнително лесен. Та книгата отговаря по следния начин на въпроса "Що е програмиране?":&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Що е програмиране?&lt;br /&gt;Трудно е да се обясни. Най-сигурния начин човек да разбере що е "програмиране" е сам да се научи да програмира! С други думи - да напише програма, да я "въведе" в компютъра, да се убеди във верността и (отстранявайки допуснатите граматически и логически грешки)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Този текст е писан през 86-та година в книга издавана от ЦК на ДКМС народна младеж и просвета..дрън дрън дрън... Това е едно от най точните определения които съм чел. Процесът на програмиране представлява въвеждане на програма в компютър и отстраняването на грешките в нея. Това е всичко, това е основата. Ако сте родени 20 години по рано и сега бяхме 88-ма и имахте нов правец 8 пред вас и някаква книга за BASIC, най вероятно щяхте да бликате с ентусиазъм да се научите да програмирате. В днешно време обаче ентусиазмът да програмирате собствения си компютър е много по малък, ентусиазмът ви сега е да си намерите порно в нета или нещо от сорта. Програмите които ще пишете в първата година едва ли ще изпъкват с нещо особено, едва ли някой ще даде повече от половин стотинка за тях, едва ли ще бъдат красиви, или особено функционални, но ще бъдат забавни, ще навлезете в нов свят на невероятни възможности, изведнъж небето ще ви се стори много по ниско от обикновено и ще имате чувството че ако се протегнете ще може да хванете звездите.&lt;br /&gt;&lt;br /&gt;Това чувство имат художниците, поетите и музикантите когато творят, това чувство имат и програмистите. Ние наричаме кода си 'красив' и 'грозен' не защото изглежда по определен начин, а защото мозъкът ни осмисля неговото значение като красиво или грозно, както и думите на дадена песен или поема, те не изглеждат грозно, но имат грозен смисъл, или съответно красив. Python доста често изглежда красиво, чисто визуално. Синтаксисът е много чист и спретнат, кара ви да пишете красив код. Преди да продължите, осъзнайте че програмистите не са учени, не са инженери, не са математици, те са поети, художници, архитекти, математиката, инженерството и науката са просто инструменти, както е четката в ръката на художника, или химикалката в ръката на поета. Като разберете че трябва да се стремите към красота, простота и чистота на изказа, а не научност и сложност, тогава ще сте готови да продължите. Програмите се пишат за хората, които ще ги четът, не за учителката ви по литература, така че няма нужда да използвате най- сложния възможен изказ. Трябва да пишете прост и разбираем код, един от белезите на красотата е простотата. &lt;br /&gt;&lt;br /&gt;Сигурно се чудите защо тоя ненормалник пише само някъкви мета-физични глупости и кога ще почне с истинския код и истинското програмиране? Всичко с времето си скакалецо(ако не знаете в едно старо кунг фу шоу, учителя по кунг фу се обръща към ученикът си със "скакалецо") този първи пост е само началото. Днес ще напиша и втория пост, който ще е с истински код, но първия увод е това което трябва да прочетете задължително(ако четете това, най- вероятно вече сте го прочели де :D) Съветвам ви да го прочетете отново. Ако някой неща не са ви ясни, магията ще изчезне когато започнем да пишем код.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-6559045655713015456?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/6559045655713015456/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7202293029705073090&amp;postID=6559045655713015456' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/6559045655713015456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7202293029705073090/posts/default/6559045655713015456'/><link rel='alternate' type='text/html' href='http://nosleepbg.blogspot.com/2008/08/python-1.html' title='Първи стъпки в програмирането с Python. част 1.Интродукция'/><author><name>Павел Пенев</name><uri>http://www.blogger.com/profile/11858763847691808594</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_sy4B4AOaH5s/Sig3ZThIwRI/AAAAAAAAAEI/dEndTkeysMs/S220/sk.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7202293029705073090.post-5789049535988672344</id><published>2008-08-18T15:17:00.002+03:00</published><updated>2008-08-18T15:51:25.015+03:00</updated><title type='text'>Python Blub ли е?</title><content type='html'>&lt;a href="http://www.math10.com/informatika/viewtopic.php?p=18533&amp;highlight=#18533"&gt;В ето това мнение в форума за информатика&lt;/a&gt; давам два линка към един блог, първия линк намерих във втория, а втория линк е от ето този пост:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://arvindn.livejournal.com/91103.html"&gt;Python is now Blub! Run!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Очевидно авторът се притеснява че python се е превърнал в Blub. За тези които не знаят какво е Blub, това е хипотетичен език измислен от Paul Graham в есето му &lt;a href="http://www.paulgraham.com/avg.html"&gt;Beating the Averages&lt;/a&gt;. На кратко Blub е средно мощен език, не е най мощния, но е по мощен и абстрактен от C да речем. Най- често този етикет се лепва върху езици като C++,Java,PHP,javascript,C#,VB и т.н. Нали се сещате? този обикновен език, който не е особено иновативен, няма странни екстри, синтаксисът е обикновен и най важното е че много посредствени програмисти го използват. Blub е винаги популярен, сред най популярните езици. Основна черта на Blub програмистите е че когато те гледат по слаби езици, разбират че са по слаби, как можеш да програмираш без екстра Х в този скапан език? Същия този програмист може да гледа колкото си иска даден по- мощен език от неговия, но така и няма да разбере какво е толкова специално за езикът, за него ще му се стрива просто някакъв странен синтаксис(примери: скобите и префиксния синтаксис на лисп са странни, но те помагат за мета-програмиране и дават огромна мощ в някой ситуации). Блъб програмистът смята Блъб за най добрия език, разбира се той осъзнава проблемите с езика си, и с удоволствие ги заобикаля с всевъзможни трикчета които е научил с опитът си, но не си и помисля че може би езикът му да е скапан, просто е добър за някой неща, и малко груб за други, но е мощен и върши добра работа. Това безспорно е така, а сега да се върнем на темата за Python. Python е мощен мулти-парадигмен език, с динамични типове и модерни екстри без коио модерните езици не могат. Езикът набира популярност и вече започват да се въдят и посредствени програмисти които да го използват. Според авторът Python се превръща в Blub, защото го използват много хора. Популярността му расте с всеки изминал ден, Гугъл го използват в своя app Engine, и т.н.&lt;br /&gt;&lt;br /&gt;Ето един интересен пост от уважавания от мен блогер Reginald Braithwaite:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://weblog.raganwald.com/2006/10/are-we-blub-programmers.html"&gt;Are we Blub programmers?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;В него той обяснява че за да бъде един език Блъб, програмистът който го използва, трябва да бъде сляп за по мощните езици. Странния парадокс тук е че човекът който създава терминът Blub, Paul Graham е блъб програмист, защото за него Lisp е най мощния език, върхът на абстрактния континиум. Може да не четете горните два поста, но постът на Реджиналд задължително прочетете, след това прочетете и коментарите.&lt;br /&gt;&lt;br /&gt;Аз ползвам python, знам Scheme и малко ruby, както и малко C. Scheme, Ruby и С в някой ситуации имат предимства пред python, той не е най мощния език в никакъв случай, Scheme е по мощен функционален език, има макроси и мета-програмирането е по лесно, също така е по чист език синтактично от python(ако не ви пречат скобите и префиксния синтаксис). Ruby е по мощен обектно ориентиран език, има някой готини екстри като блокове, и някой синтактични улеснения за някой ситуации които помагат, също така е по лесно да бъзикаш вътрешността на езика. С е...ам...Хайде да оставим това за друг път :D Според горния параграф, по определение аз не съм Blub програмист, защото не твърдя че python е най абстрактния и мощен език, за сметка на това съм убеден че е един от най удобните, има много умни хора които го използват и пишат библиотеки, има много добър синтаксис и приличен арсенал от екстри, също така се използва за такова разнообразие от приложения, и е удобен за почти всяко от тях. Той е истинско швейцарско ножче, не е най добрия нож, но едва ли ако ще ходиш в гората, ще си носиш комплекта швайсермайнермесер ножове за 200 евро от телешопинг :D С подарък ножица за разчленяване на птици :D &lt;br /&gt;&lt;br /&gt;Така че според Реджиналд, python не е блъб, защото аз не съм блъб програмист, разбира се има много блъб python програмисти и те са доста настойчиви когато твърдят че езикът им е най добрия. Python със сигурност е по абстрактен от C++,java и php, и горе долу еквивалентен на руби, по слаб от лисп и хаскел, но си върши прекрасно работата, и е красив на всичкото от горе.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7202293029705073090-5789049535988672344?l=nosleepbg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nosleepbg.blogspot.com/feeds/5789049535988672344/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogge
