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

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

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

Весела коледа

Весела коледа! Всички да сте здрави, живи, щастливи и да получите готини подаръци. И там каквото друго се пожелава.

Чудите се какво? Ми просто:

30 oct = 24 dec

Зацепихте, нали? Нали? Яко, а? А?

Счупени прозорци

Не, не става въпрос за Windows. Става въпрос за една интересна теория. Хорицата са изучавали как хубав квартал се превръща в гето. Изводът – с един счупех прозорец. Именно. Забелязали са, че ако една сграда има един счупен прозорец е много вероятно по-вероятно вандали да почнат да чупят и другите. Същото важи и за боклука по тротоарите. Докато е чисто, никой не хвърля. Но почне ли да се събира, мотивацията на хората да не замърсяват намалява. И скоро стъпвате по хартиени чаши, смачкани кутии от цигари, остатъци и от дюнери и всякакви други гадости.

Какво е общото между това и тематиката на блога ми? Същата тенденция я има в софтуера. Continue reading

Stack envy

Геди Лий е култов. Това е басист/клавирист/вокалистът на Rush. В тяхното трио барабанистът стои в средата на сцената, а отляво е китаристът. Зад последния има голямо количество апаратура (и динозаври) по време на концертите, но зад Геди Лий е празно. И понеже той завижда, е решил да постави в своята част три големи печки за пилета (като тия във Фантастико). И по време на концерта излизат готвачи, които се грижат за манджата. Съответно:

Stack Envy

Яко, а?

Deadlock

Установих, че и хората могат да изпаднат deadlock. Например – спи ми се, но в момента съм се излегнал на дивана и си цъкам. Твърде много ме мързи за да изключа компютъра и да се преместя на леглото. Но не мога да заспя така както съм в момента. Ерго, в deadlock съм.

Гадна работа.

Table-Driven

Това за което ще пиша е един подход за организиране на кода. Срещал съм тази идея под различни имена – Table-Driven Approaches и Data-Driven Programming. Много пъти съм получавал много по-прост и разширяем код с този подход. И понеже ми е малко трудно да обясня на теория, първо ще дам няколко примера и после ще коментирам.

Continue reading

rm * .log

Хъм. Отдавна не ми се беше случвало да си изтрия файловете без да искам. Но днес ми се случи. И то кода, който писах последните две седмици. С rm * .log. Коварно. Не очаквах този удар под кръста от bash. За щастие, вчера пратих едно tar.gz точно с тия файлове, а промените днес бяха малко и успях да ги възстановя за около 30 минути. Обаче беше див късмет. Щях да загубя доста работа, ако ме беше домързяло на предния ден. Поуките са две:

  • Ползвайте version control винаги. Ама винаги. Не е нужно да е сървър в локалната мрежа или интернет. Subversion например може да държи хранилище на харда. Освен, че ще сте предпазени от собствената си глупост (и моята, ако ми позволите да стъпя на компютъра ви), ще може и да видите онзи код, който изхвърлихте преди няколко дена, в който все пак имаше нещо полезно.
  • Не ползвайте ext3. Сериозно. Има ли някаква форма на undelete/recover за това нещо? Аз поне не намерих…

На някой друг да му се е случвало нещо подобно?