Това е една история за човешкия живот. За драмата, която се случва ежедневно и за обратите, които съществуването ни предлага. За несигурността, изненадите, и закона на Мърфи (или иронията на съдбата, ако предпочитате). Continue reading
Regarding Conventions
I simply cannot resist translating the last post in English. Here it goes.
Take a look at this post by Reg Braithwaithe. It is a short article delving into code writing conventions. This is a topic I have contemplated a lot on and I have a somewhat fascist outlook to it. This link is a great opportunity to share them with you. Continue reading
Относно конвенциите
Хвърлете един поглед на това. Кратка статийка, която навлиза в детайли за стандартите за писане на код. Това е тема, над която съм размишлявал доста време и имам някои фашистки разбирания. Връзката ми дава страхотен повод да споделя някои впечатления.
OutOfMemory: PermGen space
В живота на всички нас ги има онези гадни периоди на депресия и мрак. Докато те траят, през главата ти често минават мисли за алкохол, наркотици и дори самоубийство. Но най-накрая моя такъв период, продължил последните две години и половина, приключи – Eclipse вече не хвърля грешки поради недостиг на памет!
Странно е как може да се занимавам сериозно с професионално програмиране на Java от толкова много време и все пак да допуска такава глупава аматьорска грешка(*). Изключението в заглавието е най-честата причина работната ми среда да забива. Дълго време си мислех, че Java е зъл демон смучещ памет, вместо човешки души и че 2GB са приятен, но недостатъчен лукс. Но когато сложих и третото чипче и Eclipse продължи да гърми с OutOfMemory, без дори да заеме цялата физическа памет, ситуацията започна да ме съмнява. След кратко допитване до познати, открих че следния ред в конфигурацията прави магии:
Цялото това нещо минава и за сървъра на който съм качил нещата. Защо се получава и каква е цялата врътка с това PermGen може да прочетете тук. Аз вече съм един щастлив java developer, който отново си е пуснал всичките добавки към работната среда и не му се е налагало да я рестартира няколко дена. Отново, да се чуди човек как не ми е хрумнало да се поинтересувам защо става така пред последните две години и половина.
(*) Всъщност, в същия ден разбрах, че проекта който търкалям през половината от това време всъщност не ползва connection pool и Hibernate-а смело прави нови връзки за щяло и нещяло. Един от онези редки моменти, за които съм благодарен на човешката (моята) глупост – реших си проблемите с паметта и скоростта за пет минути, без много труд.
Не си достатъчно умен
Когато бях на 8 повечето ми съученици събираха миришещи листчета или колички. Аз пък правих първите си стъпки в програмирането – цъках DOS, правех магии с .BAT файлове и ръчках колкото можех по-навътре в компютъра защото ми беше интересно. В четвърти клас бях написал змията на QBASIC в текстов режим. На QBASIC се научих сам, четейки документацията и експериментирайки. Единственото обучение с учител, което съм имал тогава бе един курс по PASCAL в училища „Европа“ (от който почти нищо не разбрах). Бе, от малък си ме бива в тия неща. И тия ранни сблъсъци много ми помогнаха по-натам да разбера това-онова за занаята.
Разбира се, тия неща могат да се кажат за повечето добри програмисти. Краквахме сме софтуер, писахме бързо сортиране и сме правихме игри докато още ни се налагаше да ставаме в 7 часа за училище. И тогава беше много яко – викаш си „Иха, колко съм умен, к’ви дивотии правя“. После, като влезеш в университета е същата песен – задачите са лесни, научаваш повече, ставаш зъл C хакер – успяваш да държиш в главата си невероятно сложен код, на който повечето колеги само мигат. Отново си казваш „Иха, колко съм умен“. И после, след някоя друга година се хващаш на първата си работа – Java в някоя големичка фирма, където плащат добре. И тогава, изправен пред цялата плетеница от бисери и плява, си казваш „Няма к’во да губя време да чета седмици – направо ще се мятам. Достатъчно умен съм за да се оправя“.
Съжалявам, че аз трябва да ти го кажа. Не си достатъчно умен.
Весела коледа
Весела коледа! Всички да сте здрави, живи, щастливи и да получите готини подаръци. И там каквото друго се пожелава.
Чудите се какво? Ми просто:
30 oct = 24 dec
Зацепихте, нали? Нали? Яко, а? А?
Счупени прозорци
Не, не става въпрос за Windows. Става въпрос за една интересна теория. Хорицата са изучавали как хубав квартал се превръща в гето. Изводът – с един счупех прозорец. Именно. Забелязали са, че ако една сграда има един счупен прозорец е много вероятно по-вероятно вандали да почнат да чупят и другите. Същото важи и за боклука по тротоарите. Докато е чисто, никой не хвърля. Но почне ли да се събира, мотивацията на хората да не замърсяват намалява. И скоро стъпвате по хартиени чаши, смачкани кутии от цигари, остатъци и от дюнери и всякакви други гадости.
Какво е общото между това и тематиката на блога ми? Същата тенденция я има в софтуера. Continue reading
Stack envy
Геди Лий е култов. Това е басист/клавирист/вокалистът на Rush. В тяхното трио барабанистът стои в средата на сцената, а отляво е китаристът. Зад последния има голямо количество апаратура (и динозаври) по време на концертите, но зад Геди Лий е празно. И понеже той завижда, е решил да постави в своята част три големи печки за пилета (като тия във Фантастико). И по време на концерта излизат готвачи, които се грижат за манджата. Съответно:

Яко, а?
Deadlock
Установих, че и хората могат да изпаднат deadlock. Например – спи ми се, но в момента съм се излегнал на дивана и си цъкам. Твърде много ме мързи за да изключа компютъра и да се преместя на леглото. Но не мога да заспя така както съм в момента. Ерго, в deadlock съм.
Гадна работа.
Table-Driven
Това за което ще пиша е един подход за организиране на кода. Срещал съм тази идея под различни имена – Table-Driven Approaches и Data-Driven Programming. Много пъти съм получавал много по-прост и разширяем код с този подход. И понеже ми е малко трудно да обясня на теория, първо ще дам няколко примера и после ще коментирам.