24 септември 2008

Трябват ни повече псувни във вестниците!

Нямах няколко дни нет, за това не ъпдейтвах от известно време. Днес, понеже ми пуснаха отново нета, реших да понаваксам малко от изпуснатото. Разбира се, в предишен блог пост бях споменал че svejo.net ми е безполезен сайт, защото голяма част от съдържанието ми е безинтересно, за разлика от други подобни сайтове, които посещавам, обаче от там ми идва трафик понякога, така че от време на време преглеждам ако има някакви коментари оставени там за публикациите ми, или ако случайно намеря някой интересен пост, и днес чета че някакви мутри пребили някакъв журналист. Хм, да взема да блогвам за това ли? Нее, не е в мой стил, може би сте забелязали че избягвам поличитески теми, май само един път писах за Русия и Грузия и толкоз. Политика, икономика, социология, майната му на това, аз съм нърд, кефя се на технологии, музика, изкуство, за това блогвам. Разбира се реших поне да спомена това събитие с журналиста, всъщност, ще спомена още някой неща, които други блогери крещят, става въпрос за оня протест, срещу шпионирането, както и онова дето ония мутри щели да махат анонимноста на нета, или някакви такива измислици, защо не блогвам за тея работи? Имат общо със технологията до известна степен, интернетът е основната технология, която позлвам, засяга ме. Е, други хора блогван за това, още един, дето само говори не му трябва на блогосферата, трябват ни повече артисти. Ами, всъщност майната му на всичко. Да сменим темата на нещо което ИМА значение. Например, майната му, не ми се блогва, пише ми се поезия:

Шибаните хора, с шибани идеали,
шибани ченгета, с шибани морали,
шибани дебелаци, и шибани лайняри,
майната им,
шибана е тайната им,
със лопати в гъзовете,
всички просяци ще мрете!


Толкова много обичам тая шибана дума, шибано, шибано, шибано....

19 септември 2008

"Python: червеното хапче" preview II

Вчера бачках доста до късно и свърших с първата част на туториъла. Както може би някой от вас знаят, тази първа част е базирана изцяло на блог постовете за python, които пуснах тук, някой от тях бяха напълно пренаписани, някой само леко редактирани(най леко редактирах и най популярния пети пост). Добавих и още една глава, за модулите и импортирането, първата и версия, която вчера написах със едва отворени очи, сега ви предоставям за четене, не знам дали няма да я променя до деня в който излезе целия туториъл, всъщност, този ден все още е неизвестен, защото все още не съм сигурен колко време ще ми отнеме да напиша втората част. Както може би сте разбрали от предишни постове, тя ще ви учи как да чертаете на екрана с модула turtle, и за това беше добра идея да добавя и малко информация за модулите и импортирането, вместо да го обяснявам във втората част. Ето и самата глава:



В програмирането обикновено когато програмата стане достатъчно голяма, тя започва да се разделя на отделни модули с логика. Тези модули са отделни файлове със код. Тези същите файлове които завършват с .py. Понякога имаме нужда от допълнителни инструменти(функции и класове) и ще открием че някой вече е написал нещо което ще ни свърши работа. Вместо да пишем свои собствени инструменти, няма да е лошо ако можехме да вземем на готово чужди такива. Python идва в комплект със доста голямо количество библиотеки и модули, които можем да използваме, също така понякога ние самите ще си напишем библиотеки под формата на други модули, и ще искаме да можем използваме функциите и класовете от тях и в новата си програма. За целта ще можем да използваме конструкцията import. Нищо сложно, просто създаваме една функция, да речем от горните примери функцията square в папката ви C:\mypython\:

square=lambda x: x*x

Този код го запишете в файла square.py. Отворете command prompt-а и напишете следната команда:

cd c:\mypython\


С тази команда се придвижвате към директорията в която е вашия файл. След това стартирайте python като напишете следното за уйндолс:

c:\python25\python.exe


А за Линукс е просто python.
Сега можете да импортирате файла си със командата import:

>>>import square


Сега имаме достъп до имената във square, там има само едноименната функция:

>>>square.square(4)
16


Сега ако искаме да добавите функция във файла си, и после да я имате в интерпретатора, може да използвате функцията reload() която презарежда импортирани файлове. Да речем че добавим следната функция към файла ни:

def sumofsquares(x,y):
return square(x)+square(y)


Сега в интерпретатора пишем:

>>>reload(square)
>>>square.sumofsquares(4,4)
32


Това е ок, но да речем че искаме да импортираме само една от двете функции, можем да го направим по следния начин:

>>>from square import square
>>>square(4)
16


Можем също така да импортираме неща и да им даваме имена:

>>>from square import square as sq
>>>sq(4)
16


Можете също така да импортирате всички имена, без да трябва по късно да осъществявате достъп до тях със операторът '.', просто пишем:

>>>from square import*
>>>square(4)
16
>>>sumofsquares(4,4)
32


Това не се препоръчва много, защото е възможно да се импортират имена, които да не искаме да импортираме, също така се замърсява глобалната среда с прекалено много имена и по късно трудно се разбира коя функция от кой модул е и четимоста на кода отива на вятъра.
Е, това е за сега, първата част приключи.

18 септември 2008

Безплатни онлайн курсове от Станфорд

Тук може да си изтеглите безплатни курсове и материали(задачи за домашни, изпитни материали) от Станфорд. Курсовете са 10 и обхващат различни теми, компютърни науки, роботика, електронно инжинерство, изкуствен интелект... Лично аз си тегля в момента всички лекции и тази година ще си ги гледам на mp4-ката.

"Python: червеното хапче" preview

Това доста тъпо заглавие което измислих, вдъхновен от матрицата, е на туториълът за който говоря доста от отдавна. Напредвам сериозно, вече написах почти половината от първата част, която ще е базирана на блог постовете които публикувах тук, но малко по добре написани, и поносими за четене. Ето бета версия на втора глава, която обяснява как се изпълнява код. Вчера я пренаписах за 3-ти път:


В тази глава ще ви запозная със основните неща които трябва да знаете. Вече видяхте как се изпълнява код. Сега по подробно. Кодът се изпълнява по 2 начина. Първия е като се пише директно в интерпретатора, този който започва със >>> . Другия начин е да се запишете кодът във файл, и да се отвори със Python. Файловете винаги завършат със .py. Когато пишем код директно в интерпретатора, ние ще видим резултатът веднага, но кодът няма да бъде запазен, той се губи в мига в който затворите интерпретатора. За да не се губи код, съхранявайте го във .py файлове. Стартирането е под Линукс е лесно, само отваряте интерпретатора и пишете python file.py, където file.py е вашата програма, интерпретаторът ще отвори файла, ще го изпълни и ще върне резултат. При уйнсолс нещата са малко по сложни. Вече споменах че можете да използвате IDLE. Препоръчвам ви да си направите папка директно във C:\, за да ви е лесно да я отворите. В нея ще съхранявате всичките си файлове, разбира се става и на всякъде, но аз предпочитам адреса да е кратък, за да не печатам много. Да речем, създайте папката с името mypython във C:(или ако предпочитане някоя друга папка) Сега пътят до папката е C:\mypython\ . Да речем че там сме съхранили файла от миналата глава, сега имаме файла C:\mypython\stupid.py, за да го стартираме имаме 2 избора, първия е със дясното копче на мишката да дадем edit with IDLE, след което даваме на Run->run module и би трябвало да видите изписан резултатът на екрана във другия прозорец с интерпретатора. Не е толкова трудно, сега по трудния вариант, макар и командния ред в уйндолс да е малко черна магия, всъщност нещата са доста лесни. Отворете command prompt-а от старт менюто, както виждате, той ви показва в коя директория се намирате. За да използвате командния промпт, първо трябва да добавите python към него, за целта напишете

path=c:\python25\;%path%

Това ще добави python към командния ред, и ще си спестите малко писане, сега можете да отворите файла stupid.py като напишете:

python c:\mypython\stupid.py


Готово, вече стартирахте програмата си. Малко много говорих за уйндолс, но предполагам че доста от вас ползват него. Ако искате да научите повече, поразровете се в нета.
Има още нещо което трябва да научите. Това са коментарите. Коментарът е текст, който интерпретаторът игнорира, той не се изпълнява от компютърът, а е само там за да могат програмистите да оставят малки съобщения за други програмисти, или за себе си за в бъдеще, нещо като малки бележки, например обяснение защо този код е написан така или бележка която да напомня че даден код трябва да се пренапише, или че има грешка в даден код. Ето как изглеждат коментарите:

#Този текст е коментар, той започва със знакът '#',
#всеки ред със решетка в началото си е коментар
#и се се игнорира от #интерпретаторът.
#Те могат да се разпространяват на много редове,
# но трябва всеки да започва с решетка

Има и още един вид коментари, със тройни кавички ''' '''(“““ “““ също става), който може да се простира на много редове:

'''Този коментар е на много
редове
само трябва текста да започва и завършва с тройни кавички'''

15 септември 2008

Даскалото почва, за щастие последна година!

Когато събереш хората от моя клас, обикновената дискусията протича по следния начин:

  • Първо кратка дискусия за плесен и червеи които промиват мозъците на мравки и буболечки и ги убивах като им експлодират мозъците, или като ги принуждават да се самоубият във вода.

  • Дискусия за големия адронен корайдер

  • дискусия за теорията на струните(свързано с горното)

  • дискусия за квантовата физика и шанса да премина през една стена, определен от квантовата механика

  • дискусия за дядо коледа, дали е капиталист или социал декомкат, стигнахме до извода че е християн-демократ

  • дядо мраз и комунистите

  • северния полюс и комунистите

  • Дискусия за KRS One, ако не знаете кой е той, намерете си музиката му, той е философ и учител, и хардкор рапър.


Днешния блог пост е по кратък. Тъй като почва даскалото може да очакване 2 неша:


  1. Ще ъпдейтвам по рядко, около 3 пъти седмично, може и по рядко, или по често, зависи от това колко ми е напрегната програмата, не се сърдете, няма да ви липсвам.

  2. Ще пиша по технически неща, или най малкото една ли ще има блогове като този, или разни философски есета като предишния пост. Ако напиша нещо интересно обаче, ще го публикувам, просто няма да ми е това фокусът, блогът ми си е и винаги ще бъде технологично ориентиран.


Причините за това че ще намаля малко темпото е не само даскалото(то е дори по малката причина). Проосто искам да поработя върху някой истински проекти, да имам нещо за което да блогвам, забелязах че последните няколко дни нямам никъкви теми, всъщност това е защото когато човек само блогва, няма за какво да блогва, това е нещо като парадокс.

14 септември 2008

Перфекционизъм

Перфекционизъм


Версия 4*

Причината поради която не поставах нищо вчера, беше че написах първия си опит за този пост, след това го препрочетох и осъзнах колко е скапан, след това започнах да разсъждавам и като всеки друг път когато разсъждавам върху нещо, стигнах до интересен извод. Аз се превръщам в перфекционист.

Какво е перфекционизъм? Преди време тренирах паркур. Основната идея във паркура, е че всеки може да прескочи парапет, важното е да го направиш с финес и елегантност, и да изразходваш най малко енергия. Идеята не е да правиш пируети и да се фукаш с трикчета, а да се придвижиш от точка А до точка Б най ефективно. Това е нещото което прави паркура освен спорт и изкуство. Перфекционизмът е стремежът да подобряваш това което правиш, в същото време опитът ти те кара да подобряваш самият себе си.

Започнах да се стремя към перфекционизъм от скоро, дни всъщност. Може би защото започнах да пиша повече, и забелязах че мога да се справя по добре, полагам толкова усилие. Програмиране, рисуване и блогване са 3-те ми хобита. Напоследък най много пиша, на второ място кодирам, и най малко рисувам. Преди винаги съм рисувал с химикал малки карикатури и комикси, сега рисувам с молив, и открих, че ползвам гумата доста често, очевидно стремежът към съвършенство се е пренесъл и там.

Може би коренът на този стремеж идва от програмирането. При програмирането, ако си мислиш че можеш да напишеш някаква програма перфектно от първия път, жестоко се лъжеш. И не говоря само за бъгове, а за архитектура и дизайн, тези неща почти винаги трябва са променят в последствие, програмирането е мястото където перфекционизмът е най нужен.

Не съм особено добър художник, или програмист, или писател(ър..блогер...ъ..не съм писател..) , постоянно уча нови неща и се стремя към подобрение. Ако сте чели по старите ми блог постове, повечето са УЖАСНИ, особено онези за Python, те са супер скапани, нищо чудно че вече пренаписах половината за pdf варианта на туториъла, те са просто ужасни и плачеха за редакция. Надявам се самия туториъл да стане добре, полагам доста труд.

Специално за писането, една от причините да полагам толкова труд, е може би факта че чета доста блогове, и повечето са или на моето ниво, или малко по добре, или в някой случаи супер зле. Но сред тях има няколко които са страшно добри, точно тези блогове(и не само, тук включвам есета, туториъли, документация и всякакъв друг текст публикуван в интернет) ме карат да се стремя да съм по добър, чувствам се задължен поне да опитам да пиша добре, и да ми е приятно да чета старите си писания.

Въпреки това, след няколко седмици(редакция: 1 час :D)ще отворя този документ и ше си кажа “Можех да се справя и по добре“, и все пак тази реакция е по добра от колкото сегашното “Как съм могъл да напиша това? Заслужавам анална клизма за наказание“. Това е нормално, ако нещо дори малко не те накара да искаш да го промениш, не си истински перфекционист.


*Първата версия беше половин страница, изхвърлих я напълно, втората беше 2 страници, от тези 2 страници остана само първите 2 параграфа, третата версия ми хареса и само леко я коригирах, когато я поствах, което означава че на практика това е 4-та версия. Писането общо отне 5 часа.

10 септември 2008

XKCD, или как се научих да не се притеснявам и да обичам математиката! част 1

XKCD е известен уеб комикс, създаден от Рандъл Мънроу . Рандъл е физик и програмист и супер забавен човек. А комиксът му е един от най популярните в интернетите(Джордж Буш така ги нарича "The Internets"). Този пост е посветен на XKCD и представлява списък на някой от любимите ми комикси, те са над 470 и продължават да растът със скорост от 3 комикса на седмица. Комиксът е за романтика, сарказъм, математика и език и е супер забавен.

Schrodinger

Това е 45-тия подред комикс, ако не разбирате от квантова физика поне малко, и ако не знаете за котката на Шрьодингер няма да разберете този комикс :D Също така не забравяйте да сложите мишката си на картинката, Alt- текстът който се появява го има във всеки комикс на XKCD

Science

Науката работи кучки! За да разберете това ви трябва това Става въпрос за фоновата радиация на вселената и т.н


Useless

Това е безспорно любимият ми от всикчи, математиката е безполезна когато става дума за любов.

Valentine - Karnaugh


И отново Wikipedia на помощ!


Abusive Astronomy

Обидна астрономия :D Задници!


Classhole

Задник от класа(класник!?!)

Su Doku

Бинарно судоку :D

Iambic Pentameter

http://en.wikipedia.org/wiki/Iambic_pentameter
Това почти ми върна интереса към литературата :D

Paths


Това и аз съм го правил :D

Digital Rights Management


Fuck the RIAA

Velociraptors


Авторът Рандъл има някъква фобия от раптори, и има основание, рапторите са опасни!!!

Gravitational Mass


Комиксът си се коментира сам.


Jacket

Това е супер смешно ако го преведеш на бг :D

Pwned

Ако CS беше текстова игра :D

Profile Creation Flowchart
'

Как се създава AIM профил :D


Binary Heart


и ние програмистите имаме сърца :D

Moral Relativity


Не е задължително за този комикс, но е добре да почетете малко Айнщайн

Parallel Universe



Един от най странните комикси.


Firefox and Witchcraft - The Connection?

всички които използваме firefox сме вещици, запомнете, библията е closed source :D


Riemann-Zeta

http://en.wikipedia.org/wiki/Riemann_zeta_function

Computational Linguists

това вече е малко прекалено :D


Pong

Това е просто брутално смешно :D


Centrifugal Force

Джеймс Бонд, физик :D


Blogofractal

Този изисква два линка:


http://en.wikipedia.org/wiki/Blogosphere


http://en.wikipedia.org/wiki/Fractal



dPain over dt

математиката понякога боли :D



Myspace


Мразя аутоплей!!! За това използвам flashblock.


Substitute

На живот и смътр!!! :D


Pointers

Някой ден трябва да си дочета K&R.


Join Myspace

моя акаунт не е ъпдейтванот както осъзнах че в Myspace няма нищо друго интересно освен снимки от концерти на някой банди които харесвам.


Mispronouncing

ф момента благвам това в моя уабсайт :D

Sandwich


най известния xkcd комикс!


Grownups


9 месеца и 10 дена съм официално възрастен, чувството е гадно.


Cryptography


трябва да чета повече за криптографията, тук имам бяло поле в главата си :D

Beliefs

Ако сред вас има креационисти, ищо, съществуването ви си е достатъчно наказание :D


Search History


и при мен е същото, но заменете раптори със бира.

Commented

понякога ми се иска да беше толкова лесно.


Angular Momentum

романтика+наука=XKCD


Donald Knuth

Ако не знаете кой е Доналд Кнут->http://en.wikipedia.org/wiki/Donald_Knuth

String theory

http://en.wikipedia.org/wiki/String_Theory

откачена работа?!


Movie Seating

в alt-текста се споменава за пътуващия продавач, ако не знаете за този проблем:
http://en.wikipedia.org/wiki/Travelling_salesman_problem


Alice and Bob

отново криптография :D http://en.wikipedia.org/wiki/Alice_and_Bob

това са любимите ми xkcd комикси от първите 177 комикса, ако не ме мързи ще има и още части, но едва ли, това "част 1" в заглавието е просто застраховка че ако някой ден ми доскучее, ще имам извинение да препрочета комиксите по още веднъж :D