R.i.P.od

Това е една история за човешкия живот. За драмата, която се случва ежедневно и за обратите, които съществуването ни предлага. За несигурността, изненадите, и закона на Мърфи (или иронията на съдбата, ако предпочитате). Continue reading

Относно конвенциите

Хвърлете един поглед на това. Кратка статийка, която навлиза в детайли за стандартите за писане на код. Това е тема, над която съм размишлявал доста време и имам някои фашистки разбирания. Връзката ми дава страхотен повод да споделя някои впечатления.

Continue reading

OutOfMemory: PermGen space

В живота на всички нас ги има онези гадни периоди на депресия и мрак. Докато те траят, през главата ти често минават мисли за алкохол, наркотици и дори самоубийство. Но най-накрая моя такъв период, продължил последните две години и половина, приключи – Eclipse вече не хвърля грешки поради недостиг на памет!

Странно е как може да се занимавам сериозно с професионално програмиране на Java от толкова много време и все пак да допуска такава глупава аматьорска грешка(*). Изключението в заглавието е най-честата причина работната ми среда да забива. Дълго време си мислех, че Java е зъл демон смучещ памет, вместо човешки души и че 2GB са приятен, но недостатъчен лукс. Но когато сложих и третото чипче и Eclipse продължи да гърми с OutOfMemory, без дори да заеме цялата физическа памет, ситуацията започна да ме съмнява. След кратко допитване до познати, открих че следния ред в конфигурацията прави магии:

-XX:MaxPermSize=256m

Цялото това нещо минава и за сървъра на който съм качил нещата. Защо се получава и каква е цялата врътка с това PermGen може да прочетете тук. Аз вече съм един щастлив java developer, който отново си е пуснал всичките добавки към работната среда и не му се е налагало да я рестартира няколко дена. Отново, да се чуди човек как не ми е хрумнало да се поинтересувам защо става така пред последните две години и половина.

(*) Всъщност, в същия ден разбрах, че проекта който търкалям през половината от това време всъщност не ползва connection pool и Hibernate-а смело прави нови връзки за щяло и нещяло. Един от онези редки моменти, за които съм благодарен на човешката (моята) глупост – реших си проблемите с паметта и скоростта за пет минути, без много труд.

Не си достатъчно умен

Когато бях на 8 повечето ми съученици събираха миришещи листчета или колички. Аз пък правих първите си стъпки в програмирането – цъках DOS, правех магии с .BAT файлове и ръчках колкото можех по-навътре в компютъра защото ми беше интересно. В четвърти клас бях написал змията на QBASIC в текстов режим. На QBASIC се научих сам, четейки документацията и експериментирайки. Единственото обучение с учител, което съм имал тогава бе един курс по PASCAL в училища „Европа“ (от който почти нищо не разбрах). Бе, от малък си ме бива в тия неща. И тия ранни сблъсъци много ми помогнаха по-натам да разбера това-онова за занаята.

Разбира се, тия неща могат да се кажат за повечето добри програмисти. Краквахме сме софтуер, писахме бързо сортиране и сме правихме игри докато още ни се налагаше да ставаме в 7 часа за училище. И тогава беше много яко – викаш си „Иха, колко съм умен, к’ви дивотии правя“. После, като влезеш в университета е същата песен – задачите са лесни, научаваш повече, ставаш зъл C хакер – успяваш да държиш в главата си невероятно сложен код, на който повечето колеги само мигат. Отново си казваш „Иха, колко съм умен“. И после, след някоя друга година се хващаш на първата си работа – Java в някоя големичка фирма, където плащат добре. И тогава, изправен пред цялата плетеница от бисери и плява, си казваш „Няма к’во да губя време да чета седмици – направо ще се мятам. Достатъчно умен съм за да се оправя“.

Съжалявам, че аз трябва да ти го кажа. Не си достатъчно умен.

Continue reading