ASL PLS*

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

* ASL PLS е- популярно съкращение на “age, sex, location please” (моля, какви са ти възрастта, пола и къде си в момента) използвано в IRC чатовете.

Действието се развива някъде в късните 90-те или в ранните години на 21-ия век.

/server shake.your-brain.mil

*** connected

/nick root@localhost.edu

/j #enter_in_the_real_life

/me is online

Мдааа! Във времето на поколението на “asl pls” и безсънните нощи game-ване взех да си мисля, че нещо не ми е наред. Когато бъдещето беше още светло, компютрите – Правец, а операционната система – DOS, когато Microsoft още не беше заразила 90% от PC-тата със Windows, а Интернет беше чуждица, денем и нощем бълнувах за един брой ЕИМ (за непросветените – Електронно Изчислителна Машина, което е българската дума за computer). Сега, 10-ина години по-късно, във времето на www, Counter-Strike и “Click here” си мечтая за простото удоволствие да поговоря с някого за нещо различно от темата PC-та. Напоследък първите думи на хората около мен са: “Здрасти! Абе да знаеш що ми забива Explorer-а”, “Я кажи откъде да си сваля…”, “Що не ми бачка мрежовата карта” или вариации по темата. Какво стана с другите умозанимаващи дейности? Страх ме е да попитам каква е последната книга, която въпросната личност е чела, защото рискувам да получа съобщението “Error 404 – Not Found”. Е все пак е по-добре от “Error 500 – Internal server error”, което е резултат от моите усилия да сменя темата на нещо различно от последното играно ниво на Quake или поредната Holywood-ска промивка на мозъка, наречена кино.

*** SeXy has invited you to join #f…_all_the_chicks

/ignore S*.*

Става ми смешно, когато всеки втори, който се е научил да инсталира Windows (просто натискай бутона “Next>” докато видиш бутона “Finish”) се именува хакер. Без дори да е чел МАНИФЕСТА. Не, не кой да е манифест а Манифестът на хакера. Ще цитирам нещо от него:

“…Да, Аз съм престъпник. Моето престъпление е любопитството ми. Моето престъпление е, че съдя за хората по това, което казват и мислят, не по това как изглеждат. Моето престъпление е, че съм по-умен от Вас, нещо, което Вие никога няма да ми простите. Аз съм хакер и това е моя манифест. Вие може да спрете един от нас, но не може да спрете всички… А Вие… Вие всичките сте еднакви… “

/ban #hakers *.*

Е, не искам да подценявам новоизпечените компютърни специалисти, по съвместителство наричани хакери, но не виждам нищо героично в това да издърпаш няколко програми от Мрежата и да скапеш нечие PC през IRC-то и съответно да ликвидираш нечии неколкомесечен труд например. По-трудното е обратното. Но май взех да ставам твърде поучителен и досаден. Последно по темата – хакер не е онзи шумния на съседния компютър в залата, който се провиква, че току-що е изритал някой от 4ат-а, а онова малкото, приведено на клавиатурата момченце, което почти не използва мишката и чиито desktop изглежда скучен в черно-белите си цветове.

*** you were kicked by LamerZ (reason: speak too much)

*** attempting to rejoin

/part #life_is_so_complicated

Изглежда, че няма измъкване от тия компютри. Но ако все още не сте си обременили съзнанието с някой курс по компютърна грамотност, послушайте ме – НЕ ЗАПОЧВАЙТЕ. Все едно ви чувам: “Дааа, лесно му е на тоя, нали си ги знае нещата” Е да ама ако знаете как искам някой път да мога да напиша:

DELTREE /y c:

e, но все пак си пазя по едно архивно копие под ръка 🙂

File not found

c:installsetup

Дерзайте. Учете се и преди да си ви хванали неотменно вървящите със техниката комплекси, си спомнете, че Техниката е направена да служи на Хората, не обратното! А Хората на кой служат? Хм, ще оставя това на вашето въображение (ако все още ви се намира, моето го вградиха във browser-а и сега си върви като plug-in).

/quit (/me enters to the MATRIX)

Not responding.

Kernel32.exe has performed an illegal operation and will be shut down.

rebooting…

— TO|_|_|E —

Глупавите неща които причиняваме на компютрите си

В едно от компютърните списания които чета тия дни имаше тема за най-глупавите неща правени от компютърните специалисти на техните лаптопи и настолни компютри. Четейки признанията на авторите на списанието се замислих какви са моите прегрешения по темата. Не успях да се сетя за много. Истината е че дълго време нямах собствен компютър и когато най-сетне се сдобих с такъв се стараех да си го пазя много. Може би затова успявам дълго време да избегна проклятието на разлятата чаша кафе върху клавиатурата или не дай си боже – върху самия компютър. Сигурно фактът че не пия кафе също оказва влияние. Все пак и аз не съм безгрешен и бих допринесъл достатъчно материал за не една и две статии в списание. Откъде да започна… мдааа. Нека да е от моята сисадминиска кариера.

По времето когато преподавах в Академията се наложи да инсталирам уеб и пощенски сървър. Въоръжен с много ентусиазъм и малко знания направих една инсталация на Линукс и потроших няколко дни да я настройвам за нашите нужди придобивайки в процеса малко повече знания и губейки голяма част от ентусиазма. За историята е важно да се отбележи избора ми на файлова система – воден от изследователския си нюх и подкован със статистики и мнения от форуми, заложих на сравнително новата и революционна за времето си ReiserFS (версия 3). Дотук лошо няма. Сървъра си работеше перфектно, и няколко дни се разхождах със приповдигнатото самочувствие на врял и кипял админ. За съжаление един ден реших да оптимизирам още малко нещата и след като няколко процеса забиха взех че рестартирах сървъра. След рестарта бях топло посрещнат от съобщението, че на диска няма разпозната файлова система. Има едно особено състояние на духа, което предизвика съвсем осезаемо физическо усещане на обливане със студена пот. В този момент имах удоволствието да изпитам това състояние в цялата му прелест. След това го изпитах още веднъж при осмислянето на факта, че не бях направил нито едно архивно копие след инсталацията. Последващите няколко часа бяха прекарани в разкачване на дискове, закачването им на друга машина и пускането на проверка на файловата система. В края на упражнението имах почти цялата система възстановена. Почти. Бърза проверка показа че всичките файлове са намерени… по-точно всичките 117 000 (словом: сто и седемнадесет хиляди) разпокъсани парченца от файловете. Мърфи се беше пресегнал през временно-пространствения континиум и стовари закона си с цялата си мощ върху нашият беден сървър в секундата когато съм натискал бутона за захранването. Рестарта съвпаднал точно с момента, когато дървото на файловата система се е балансирало водейки до загубата на индекса на файловете и директориите. Така че информацията все още си беше на диска, само че файловата система не знаеше къде да ги намери. В тази фаза студеното изпотяване вече ми се струваше нормално състояние. Но какво са 117 000 парчета от файлове за Истинския Администратор ™. След подробно търсене из парченцата успях да намеря части от текстовата конфигурация на повечето услуги и след още няколко дни (вече имах опит) сървъра беше онлайн отново. Този път направих архивно копие. Както и месец след това. И на всеки два месеца след тази случка. Не че се наложи да ги ползвам.

От втората ми проява на изключителна глупост в най-неподходящ момент си изпати Stoma. В живота на всеки един кандидат инженер идва момент в който трябва да се изправи пред комисия за защита на дипломна работа. В случая на Stoma тази дипломна работа включваше реализацията на клъстер от няколко разнородни машини. Като новоизпечен инженер дипломирал се няколко месеца по-рано, естествено горях от желание да изявя своите способности и предложих помощта си. Беше ранен следобед когато настроихме машините и Stoma приключваше последните приготвления за тестовете. Все още неудовлетворен че не съм успял да демонстрирам най-доброто от себе си се лог-нах в компютъра на Stoma и в изблик на ентусиазъм пуснах обновяване на операционната система (Линукс естествено, какво друго може да се ползва за клъстери!). Излязоха разни въпроси на които естествено отговорих с “Yes” без даже да ги чета като един истински инженер. (Истинският Инженер ™ не чете съобщения – той винаги знае какво прави). Мярнах някакъв ред за премахвани пакети, обаче така и на разбрах какво става докато не чух някакъв стон откъм бюрото на Stoma. Бърз поглед към монитора му и забелязах как прозорците на приложенията един по един се затварят точно като на филм. Stoma имаше изражението на корабокрушенец, който току що е видял спасителния кораб да се отдалечава към хоризонта. Секунда по-късно се обърна към мен с един такъв леко плашещ поглед, че набързо се отказах да давам каквито и да било идеи. Към три и половина сутринта успяхме да възстановим щетите. Аз се прибрах към пет а защитата беше в осем. Няма нужда да споменавам че Stoma се справи блестящо. Само че се съмнявам дали ще ми повери друга машина за настройване.

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

Забавна математика с Python

Спомените ми от първите години в Техническия университет (освен разбиващите купони и хроничното студентско безпаричие) са свързани с писането на огромно количество протоколи от измервания и сума ти свързани с това изчисления. Понякога се изкушавах да си напиша кратка програма за да си сметна и начертая графиките от измерените резултати вместо налагания от някои преподаватели методи с калкулатор и милиметрова хартия. Проблемът беше, че сметките често не бяха елементарни, а Паскал (и по-късно 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 между тестовете за да получите смислени резултати.

Стана ли ви интересно? Аз със сигурност съм заинтригуван! Сега се надявам по-малко ученици и студенти да четат това, че иначе много домашни ще станат безумно лесни за решаване с няколко редова програмка 😀

Терминатор…. на оптика

Вчера преминах кратък курс по терминиране на оптични комуникационни кабели (fibres). инструкторът беше от Belden и съответно всички конектори и оптични кабели бяха на Belden. За тези, които името не им говори нищо – това е бившата NORDX/CDT, която пък от своя страна е поделение на бившата Nortel, която пък е трансформираната Northern Telecom, която пък е наследник на Bell Telephone, основана от Александър Бел, създателя на телефона. Всъщност нещата с преобразуването на компаниите са малко по-сложни, но който се интересува от подробности и история – нека да погледне тук, тук, тук и тук. Курсът беше повече от интересен, защото използвахме последно поколение конектори и влакна, способни да предават до 10 Gbps (това е 100 пъти по-бързо от нормален 100 Mbps Fast ethernet) и въпреки това конекторите няма нужда да се сплайсват (splicing е термин за свързването на оптични влакна посредством “заваряване” при висока температура). Вместо това те се кримпват (crimping – свързване на конектори с кабелите посредством специални клещи). По този начин силно се улеснява внедряването на оптични връзки в локалните мрежи и се намалява крайната цена на инсталациите. Тенденцията е до няколко години оптичните връзки да надминат по брой на инсталациите тези с медни UTP връзки и да доминират на пазара. Ако преди съм имал някакви съмнения дали това ще стане, сега съм повече от убеден, че със сравнително простите технологии за терминиране като тези на Belden бъдещето на изцяло оптичните локални мрежи не е далеч в бъдещето, а вече в настоящето. Вярно че цената все още е фактор (£5 за конектор), но с усвояването на технологията и навлизането на повече конкуренция, цените неминуемо поевтинеят (някой помни ли времето на $50 за BNC конектор… ех, а бяхме млади и зелени 🙂 ). На курса разучихме и как точно да измерваме характеристике на оптичните връзки, макар че за мен лично нямаше особено нови неща (кратка извадка от автобиографията – инженер с магистърска степен по “Оптични и мобилни комуникации”). Интересно ми беше все пак да узная, че се очаква в средата на 2006 да се приеме стандарта за 10Gps по медни връзки. Макар за момента тези скорости да ми се струват повече от огромни, мисля че бързо ще се намерят приложения за оползотворяването им – например отдалечени масиви за съхранение на данни (вместо хард диска на лаптопа вкъщи използваш този на работната станция в офиса), интерактивно видео в реално време, HDTV ( High Definition Television) телевизия и особено в клъстерите (clusters) и grid супер компютрите. Живот и здраве, ще поживеем и ще видим. А може да се появят дори съвсем неочаквани приложения за тези скорости, приложения за които дори сега и не предполагаме. Важното е, че научих още нещо ново и се надявам наученото да ми свърши работа и да ме държи на “върха на вълната”.

За мишките и хората

Мъдрият няма нужда да се доказва;
този, който трябва да се доказва, не е мъдър.
Учителят не притежава нищо.
Колкото повече той прави за другите,
толкова по-щастлив е.
Колкото повече дава на останалите,
толкова по-богат е.
Чрез липсата на власт
Учителят води.

Лао Дзъ

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

Continue reading