Archive for the ‘The matrix world’ Category.
26th May 2008, 04:33 pm
Въпреки че ежедневно се занимавам с компютри и съм свикнал с бурното развитие на технологииите, все още има неща в бранша, които ме смайват. Ето например последната версия на библиотеката за програмиране QT 4.4 (произнася се като англииското “cute” - приятен). Едно от новите въведения е реализирането на WebKit - модулен интернет браузър (е не мога да се насиля преведа тая дума като “четец” и това си е!). Още след като бяха пуснати библиотеките PyQT за връзка между Python и Qt 4.4 започнах да се човъркам из кода и за по-малко от два часа (толкова ми отпусна Жорката докато спеше обедния си сън) успях да спретна един много елементарен браузер. Само за сравнение - новата версия на Firefox 3 отне повече от година и половина. Естествено няма място за сравнение на няколко набързо нахвърлени реда код и гигантското постижение което е новия Firefox, но все пак дава перспектива.
Ето как изглежда програмката в действие:

А по-долу е кода на главната програма (webkit_test.py) и на визуалната част (т.нар. GUI - Graphical User Interface) - (Ui_webkit_test.py). Графиния интерфейс е проектиран с QtDesigner а за редактор съм използал Eric4. За сваляне на кода - ето на този адрес: http://toshe.bukov.com/download/toshe_bukov_pyqt_4.4_webkit_example_ver._0.6.zip.
Continue reading ‘Направи си сам… уеб браузър’ »
31st March 2008, 01:39 pm
Това ми го изпрати един приятел. Авторът е неизвестен, но пък обявата си е баш като истинска 
—
Ако шофьорите ги наемаха на работа както програмистите… ето как щеше да изглежда една обява:
Длъжност: шофьор
Изисквания: професионални навици на управление на леко- и тежкотоварни автомобили, тролеи, трамваи, влакове на метрото, трaктори, багери, БМП и съвременни леки/тежки танкове, на въоръжение в страните НАТО.
Навици за ралийно и екстремално управление са задължителни. Опит във Формула-1 - препоръчва се.
Кандидатите трябва да притежават сертификати от BMW, General Motors и Bosch, а също и дипломи за участие в големи международни ралита, но не по-стари от 2 години.
Заплащанe: 300-500 лева, определя се в зависимоста от резултата на интервюто.
Знания и опит в ремонт на бутални и роторни двигатели, автоматични и ръчни трансмисии, системи за запалване, бордови компютри, ABS, GPS и автомобилни аудио системи на водещи световни производители - задължително.
Опит в провеждане на тенекеджийски и бояджийски работи - плюс.
19th March 2008, 04:23 pm
В едно от компютърните списания които чета тия дни имаше тема за най-глупавите неща правени от компютърните специалисти на техните лаптопи и настолни компютри. Четейки признанията на авторите на списанието се замислих какви са моите прегрешения по темата. Не успях да се сетя за много. Истината е че дълго време нямах собствен компютър и когато най-сетне се сдобих с такъв се стараех да си го пазя много. Може би затова успявам дълго време да избегна проклятието на разлятата чаша кафе върху клавиатурата или не дай си боже - върху самия компютър. Сигурно фактът че не пия кафе също оказва влияние. Все пак и аз не съм безгрешен и бих допринесъл достатъчно материал за не една и две статии в списание. Откъде да започна… мдааа. Нека да е от моята сисадминиска кариера.
По времето когато преподавах в Академията се наложи да инсталирам уеб и пощенски сървър. Въоръжен с много ентусиазъм и малко знания направих една инсталация на Линукс и потроших няколко дни да я настройвам за нашите нужди придобивайки в процеса малко повече знания и губейки голяма част от ентусиазма. За историята е важно да се отбележи избора ми на файлова система - воден от изследователския си нюх и подкован със статистики и мнения от форуми, заложих на сравнително новата и революционна за времето си ReiserFS (версия 3). Дотук лошо няма. Сървъра си работеше перфектно, и няколко дни се разхождах със приповдигнатото самочувствие на врял и кипял админ. За съжаление един ден реших да оптимизирам още малко нещата и след като няколко процеса забиха взех че рестартирах сървъра. След рестарта бях топло посрещнат от съобщението, че на диска няма разпозната файлова система. Има едно особено състояние на духа, което предизвика съвсем осезаемо физическо усещане на обливане със студена пот. В този момент имах удоволствието да изпитам това състояние в цялата му прелест. След това го изпитах още веднъж при осмислянето на факта, че не бях направил нито едно архивно копие след инсталацията. Последващите няколко часа бяха прекарани в разкачване на дискове, закачването им на друга машина и пускането на проверка на файловата система. В края на упражнението имах почти цялата система възстановена. Почти. Бърза проверка показа че всичките файлове са намерени… по-точно всичките 117 000 (словом: сто и седемнадесет хиляди) разпокъсани парченца от файловете. Мърфи се беше пресегнал през временно-пространствения континиум и стовари закона си с цялата си мощ върху нашият беден сървър в секундата когато съм натискал бутона за захранването. Рестарта съвпаднал точно с момента, когато дървото на файловата система се е балансирало водейки до загубата на индекса на файловете и директориите. Така че информацията все още си беше на диска, само че файловата система не знаеше къде да ги намери. В тази фаза студеното изпотяване вече ми се струваше нормално състояние. Но какво са 117 000 парчета от файлове за Истинския Администратор . След подробно търсене из парченцата успях да намеря части от текстовата конфигурация на повечето услуги и след още няколко дни (вече имах опит) сървъра беше онлайн отново. Този път направих архивно копие. Както и месец след това. И на всеки два месеца след тази случка. Не че се наложи да ги ползвам.
От втората ми проява на изключителна глупост в най-неподходящ момент си изпати Stoma. В живота на всеки един кандидат инженер идва момент в който трябва да се изправи пред комисия за защита на дипломна работа. В случая на Stoma тази дипломна работа включваше реализацията на клъстер от няколко разнородни машини. Като новоизпечен инженер дипломирал се няколко месеца по-рано, естествено горях от желание да изявя своите способности и предложих помощта си. Беше ранен следобед когато настроихме машините и Stoma приключваше последните приготвления за тестовете. Все още неудовлетворен че не съм успял да демонстрирам най-доброто от себе си се лог-нах в компютъра на Stoma и в изблик на ентусиазъм пуснах обновяване на операционната система (Линукс естествено, какво друго може да се ползва за клъстери!). Излязоха разни въпроси на които естествено отговорих с “Yes” без даже да ги чета като един истински инженер. (Истинският Инженер не чете съобщения - той винаги знае какво прави). Мярнах някакъв ред за премахвани пакети, обаче така и на разбрах какво става докато не чух някакъв стон откъм бюрото на Stoma. Бърз поглед към монитора му и забелязах как прозорците на приложенията един по един се затварят точно като на филм. Stoma имаше изражението на корабокрушенец, който току що е видял спасителния кораб да се отдалечава към хоризонта. Секунда по-късно се обърна към мен с един такъв леко плашещ поглед, че набързо се отказах да давам каквито и да било идеи. Към три и половина сутринта успяхме да възстановим щетите. Аз се прибрах към пет а защитата беше в осем. Няма нужда да споменавам че Stoma се справи блестящо. Само че се съмнявам дали ще ми повери друга машина за настройване.
Историята познава още много случаи на проява на глупост от моя страна, но стига толкова хвалби за един постинг.
21st February 2008, 01:07 pm
Every now and then when I’m looking for some obscure Linux command line syntax I run across forum posts of disgruntled users that complain of the complexity of the Unix command line. Contrary to this common perception the Linux (and in this sense all Unix flavours) commands are pretty simple. In fact the whole Linux/Unix philosophy is “Do one thing, do it well.” If more complex operations are required, then just use the same simple tools and chain them together to achieve the end result.
Following this mantra some experienced *nix (this is how all Linux, BSD and Unix flavours are denoted) users can do miracles with only a few lines of code. However despite this simplicity (or probably just because of it) it as equally easy to ruin a lot of months worth of work or even to get the the whole system down on its knees. Just a quick example - the dreaded “rm / -rf” command being performed as root.
Being involved in the IT for the last … many years (I don’t want to count them - it makes me feel older than I actually am) I still prefer the simple do-only-one-thing tools than the overly complex do-everything-under-the-sky programs (that breaks equally often). The simpler tools approach requires more technical knowledge than the simple “click here to start doing the stuff” theme often clamoured by the self-manifested “IT experts” or “Administrators”. The reason for my preference is not some kind of weird masochistic psychological disorder (Ok, this is not the ONLY reason), but the gratifying feeling I understand what is going on under the hood and the ability to troubleshoot the situation in the case things go wrong. Beside it is very satisfying to see the aforementioned “Administrators” scratching their head when their favourite “all-in-one” tool failed with some mystifying message. At the end most of them they end up being shown how to use alternative way of doing things… with alternative _simpler_ means.
Anyway, enough whinging about the admins and proclaiming how KISS (Keep It Simple, Stupid) principle will save the world and bring peace to all. The other reason I do enjoy Linux is the sheer fun when doing things even when doing them in the wrong way. A collection of true pearls of wisdom could be found in the so called “Unix Horror Stories” collection. For those looking for even more entertaining readings I would recommend the excellent “Unix Haters Handbook”. Beside the useful info there are few gems from “medieval” years of the Information Age history. Enjoy… and don’t forget to mount scratch monkey.
31st December 2007, 09:19 am
За край на годината, нещо geeky и свежо (според мен):
toshe@masha~$ python
…
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea — let’s do more of those!
>>>
Моя скромен опит за превод на горния текст:
Дзен по Питонски, от Тим Питърс
Красивото е за предпочитане пред грозното.
Изричното е за предпочитане пред подразбиращото се.
Простото е за предпочитане пред сложното.
Сложното е за предпочитане пред усложненото.
Плоското е за предпочитане пред вложеното.
Разпиляното е за предпочитане пред претъпканото.
Четливостта има значение.
Специалните случаи не са достатъчно специални, че да нарушават правилата.
Въпреки че практичността бие стриктното спазване на правилата.
Грешките никога не трябва да се пускат незабелязани.
Освен ако изрично не са направени да минават незабелязано.
В случай на двусмислие, отказвай изкушението да предполагаш.
Трябва да има един, и само един очевиден начин да се правят нещата.
Въпреки че това може да не е очевидно на пръв поглед, освен ако не сте Холандец (1).
“Сега” е по-добре от “никога”.
Въпреки че “никога” е често за предпочитане пред “веднага на момента”.
Ако реализацията е трудна за обяснение, то значи е лоша идея.
Ако реализацията е лесна за обяснение, то има вероятност да се окаже добра идея.
Групирането на имена е една отлична идея - нека да правим повече от тях.
(1) - намек за Guido Van Rossum, създателя на Python, който е Холандец по произход.
Надявам се програмистите сред четящите да оценят хумора и мъдростта на горното. А може би и не само програмистите
13th November 2007, 07:47 pm
Спомените ми от първите години в Техническия университет (освен разбиващите купони и хроничното студентско безпаричие) са свързани с писането на огромно количество протоколи от измервания и сума ти свързани с това изчисления. Понякога се изкушавах да си напиша кратка програма за да си сметна и начертая графиките от измерените резултати вместо налагания от някои преподаватели методи с калкулатор и милиметрова хартия. Проблемът беше, че сметките често не бяха елементарни, а Паскал (и по-късно Java) не са от най-лесните за ползване езици за бързи сметки от мързеливи студенти като мен. По-късно се налагаше да правим преобрзувания на уравнения и да ги опростяваме, а единствения софтуер който донякъде помагаше беше MathLab. Въоръжени с него и с теоремите на Нагласаяев и Натъмъняев успявахме да открием нови клонове в инженерната математика. Наистина се изискваше много усилия от предварително дадения ни за сравнение резултат да приложим реверсивен инженериг и да скалъпим обратно оригиналното задание на проекта, но историята познава и по-големи героични постъпки (като например свързването на амперметър като волтметър или паралелното свързванео на електролитни кондензатори към променливотокови трансформаторни вериги).
От тези времена ми остана един респект към многостъпковите изчисления (и към електролитните кондензатори) и често след това съм се чудил дали няма наистина удобен инструмент точно за такива уморителни, но необходими математически гимнастики. Изискванията ми за подобен софтуер са скромни - да е софтуер с отворен код, преносим (Linux/Windows), да е простичък за инсталация и употреба и по възможност да се разширява лесно. По едно време се бях отказал да търся (а и не ми трябваше, честно казано) докато преди месец попаднах на SymPy и mpmath. Първата е библиотека занимаваща се със символна алгебра (от типа колко е (ax2 + by3)2 * (x + y2)2 в разгъната форма) изчисляваща също интеграли и диференциали от символни уравнения (такива с неизвестни като x, y и z например). Втората библиотека и за смятане на реални и комплексни числа с произволна точност. Точно така - с произволна. И двете библиотеки са писани на Python които освен че е страшно лесен за учене и експериментиране е също и много мощен скриптов език. И двете библиотеки са с отворен код и понеже са на Python са достъпни на всички софтуерни платформи поддържани от езика. Ала един пример говори повече от сто реклами, така че ето един пример:
>>>from sympy import *
>>>x = Symbol('x')
>>>y = Symbol('y')
>>>a = ((x**2 + y**3)**2 * (x+y**2)**2)
>>>b.expand()
x**6 + y**10 + x**2*y**6 + x**4*y**4 + 2*x*y**8 + 2*x**2*y**7 + 2*x**4*y**3 + 2*x**5*y**2 + 4*x**3*y**5
>>>
Трите символа “>” са от промпт-а на Python интепретатора. Последния ред е всъщност разгънатата форма на по-горното уравнение. Звздичката е знак за умножение а двойната звезда - повдигане на степен. За домашно - сметнете уравнението на степен 3 
Това далеч не е всичко. Ето друг пример (взет от ръководствотото на SymPy):
>>> from sympy import *
>>> x=Symbol("x")
>>> limit(sin(x)/x, x, 0)
1
>>> limit(x, x, oo)
oo # това е знака за безкрайност
>>> limit((5**x+3**x)**(1/x), x, oo)
5
Някой спомня ли си как се смятаха границите (лимеси) от училище? Е, с няколко реда код няма да ви се налага да ги смятате.
Впечатлих ли ви? А ето какво може да прави mpmath:
>>> from mpmath import *
>>> pi
mpf('3.1415926535897932384626433832793')
Хм, дотук - нищо впечатляващо. Ала нека да променим прецизността след десетичната точка (която по подразбиране е 30 знака):
>>> from mpmath import *
>>> mpf.dps = 100 # задаваме броя на знаците след десетичната точка
>>> pi
mpf(’3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798′)
Това е числото Пи със сто знака след десетичната точка (или запетая - кое е по-правилното?). А ето го със 1000 знака:
3.1415926535897932384626433832795028841971693993751058209749445923078164062862
089986280348253421170679821480865132823066470938446095505822317253594081284811
174502841027019385211055596446229489549303819644288109756659334461284756482337
867831652712019091456485669234603486104543266482133936072602491412737245870066
063155881748815209209628292540917153643678925903600113305305488204665213841469
519415116094330572703657595919530921861173819326117931051185480744623799627495
673518857527248912279381830119491298336733624406566430860213949463952247371907
021798609437027705392171762931767523846748184676694051320005681271452635608277
857713427577896091736371787214684409012249534301465495853710507922796892589235
420199561121290219608640344181598136297747713099605187072113499999983729780499
510597317328160963185950244594553469083026425223082533446850352619311881710100
031378387528865875332083814206171776691473035982534904287554687311595628638823
53787593751957781857780532171226806613001927876611195909216420199
За домашна - пробвайте със 10000 знака
Повече примери и идеи за ползване на mpmath вижте нейната документация.
Забележка: За момента двете библиотеки дефинират числото Пи по свой начин, който не е съвместим, затова рестартирайте комания интерпретатор на Python между тестовете за да получите смислени резултати.
Стана ли ви интересно? Аз със сигурност съм заинтригуван! Сега се надявам по-малко ученици и студенти да четат това, че иначе много домашни ще станат безумно лесни за решаване с няколко редова програмка
11th November 2007, 06:18 pm
Ако не сте забелязали, то блога има леко променен вид. Освен новата версия на софтуера сложих и нова тема, която (би трябвало да) е по-гъвкава и разширяема от старата. Ако някои забележи проблеми с рендирането на страницата, моля оставете ми коментар.


5th September 2007, 11:51 am
Ако някой има нещастието да поддържа Windows-базирани системи, няма начин да не е сблъсквал с прословутия Windows Update - системата за обновяване на операционната състема. Докато никой не отрича ползата от подобна система, то ако имате да обновявате голям брой компютри или пък ако мрежовата ви конфигурация не позволява достъп до интернет, то със сигурност ще се има споменаване на роднини до девето коляно в нецензурен контекст. Да не говорим какво ще стане с Интернет връзката ви ако всичките машини започнат да се обновяват по едно и също време. Майкрософт естествено си имат решение на проблема за техните корпоративни клиенти с техния Windows Server Update Services (WSUS), но за по-малки фирми с ограничени ресурси или мрежи без нарочен системен администратор и съответната софтуерна инфраструктура (разбирай похарчени пари за поддръжка и лицензи) по-подходящо е едно друго решение - Направи си сам Service Pack. Програмката (сваля се от тази страница) представлява няколко програми с отворен код, които се свързват със сайта на Майкрософт и свалят последните обновени пакети за няколко версии на Windows (към момента Windows 2000, Windows XP и Windows Server 2003) като дава избор за локализиран език (английски, немски, руски и още няколко) на софтуера. Фактът че програмата е съставена от компоненти с отворен код, както и че сваля само софтуер от сайта на Майкрософт гарантира че няма да се инсталира spyware и други гадинки по инсталацията, но за истинските параноици сигурно това няма да е достатъчна гаранция :). Доколкото ми е известно използването на програмата е напълно законно и вземайки пред че работи само под Windows (предполага се закупен легално) не би трябвало да причини проблеми в правно отношение. Все пак не съм адвокат така че ако смятате да го използвате във вашата фирма, консултирайте се с правно лице.
След стартиране на програмката и настройване на прокси сървър (ако ползвате такъв) тя инсталира малка програма от Майкрософт която се оторизира пред Windows Update и сваля необходимите update пакети. След това създава ISO файл съдържащ свалените пакети, които може да се “изпече” на диск и той да се използва за обновяване на Windows инсталации. Инсталацията е напълно автоматизирана - при слагането на диска в компютъра се стартира инсталатора, регистрира администраторски акаунт и след това инсталира всички ъпдейти. След това премахва добавения акаунт и се рестартира компютъра. Процедурата отнема между 5 минути до повече от час в зависимост от конфигурацията на компютъра и времето на последното обновяване на операционната система. Една малка забележка - програмката сваля само обновления свързани със сигурността (security updates), но не и такива свързани с драйвери за хардуера.
Програмката на няколко пъти ми е спестявала доста време и нерви и бих я препоръчал на всеки който изпаднал дотам че да се бори с капризната прозоречна състема (хм, чудно тогава АЗ докъде съм изпаднал!).
29th June 2007, 08:26 pm
Най-сетне се свърши чакането. Версия 3 на Общия Публичен Лиценз (General Public License - GPL) беше обявена официално днес по обед Източно-американско време. За тези които не са чували преди - това е лицензът под който се намират някои от най-големите и важни проекти със Свободен и Отворен Код (Free and Open Source - FOSS). Предишната версия е написана през далечната 1991-а година и въпреки че служи вярно дълги години и спомогна за разцъфтяването на FOSS, с годините възрастта му започна да си личи и нуждата от съвременяването на лиценза стана наложаща. През 2005 авторът на предишните две версии - Ричард Столмън започва безпрецедентна програма по организирането и обсъждането на това какъв трябва да бъде новия лиценз. Обсъждането на черновите версии, публичните групи дискутиращи различните клаузи, обратната връзка от всички заинтересовани страни и най-вече - мнението на обикновените потребители - целия процес е безпрецедентен пример за създаването на правен документ който да служи на всички нас - ПОТРЕБИТЕЛИТЕ и да се грижи и пази нашите СВОБОДИ. Единственото сравнение което ми идва наум за това събитие е създаването на Търновската Конституция, където най-будните умове на Възраждането се събрали за да увековечат в документ стремежа на народа към независимост, свобода и равноправие.
Честито на всички тези които разбират значението на това събитие. Поздравявам разработчиците които ще се възползват от новия лиценз. И казвам едно дълбоко и сърдечно БЛАГОДАРЯ на неговите създатели. Благодаря Ви че цените и пазите моята лична свобода. Благодаря ви.
П.П. Колко бих искал някой ден да кажа същите думи на политиците управляващи съдбата ни…
20th February 2007, 10:43 am
This post is instigated by an article in Linux Journal called “Save the BBC from Windows DRM!”. The article raises few very reasonable concerns about BBC independance if media publisher decides to go Microsoft route to protect its on-demand content. Since I am currently living in UK and as such paying the TV License tax, I just could not miss the chance to say what I think about this issue, especially taking into account the money I must pay for the license (at the moment it is about 131.50 pounds for colour TV set per year). I am sure there are much better ways BBC could spent my money than just giving them away to a company known for abusing its monopoly to stifling inovations and smashing competition. I would rather prefer to see my money invested in improving the quality of the content and making it more accessible to the public.
As advised at the end of Linux Journal article I visited BBC Consultation page and filled out the questionaire. I also decided to publish it on my blog, to make sure my concerns will not dissapear buried under the usual bureaucracy typical for large organizations. Below are the questions and my answers.
Continue reading ‘BBC consultation about on-demand services’ »