Toзи семестър мога да кажа, че ми беше най-тежкия от всички. За първи път се явявам на толкова много изпити през сесията (5), а освобождаването от изпити беше почети невъзможно.

Този семестър УНСС премахна поправките и почети всички преподаватели бяха озверели. В резултат на всичко това имам доста колеги вече с по няколко ликвидации, но не съм сигурен за повечето от тях, че ги заслужават. Моите резултати са поместени по-долу :)

Макроикономика – 5
Основи на финансите – 5
Маркетинг – 4
Интелектуална собственост – 4
Статистика – 4
Екология и устойчиво развитие – 4

Среден успех от семестъра: 4.33
Среден успех до сега: 4.44

Преди две седмици реших да мигрирам от ubuntu 8.04 LTS към най-новото. Бяха ми се насъбрали доста проблеми (wireless бъгове, липса на новите версии на FireFox 3.5 в хранилищата и прочие, и прочие). За около час преминах набързо през 8.10 и 9.04, и достигнах до бета версията тогава 9.10. Тъй като при досегашните ъпгрейди, които съм правил, след това не се е изисквало намеса от моя страна, за да тръгне, не бях чел абсолютно нищо. Естествено винаги си има първи път и …. рестартирам след ъпгрейда от 9.04 до 9.10 и до там. Показва ми се логото на убунту и след това черен екран. Логично, казах си, че нещо лаптопа ми е дал фира и го рестартирах и …. отново чудо и приказ, счупих си файловата система. Последва едно чекване на диска и т.н. и взех, че си помислих, че нещата са се оправили, но не! X-а така и не тръгваше. Тъкмо бях решил, че съм се жестоко пре*бал с бета версията и се чудих кое да си backup-на и кое не, за да инсталирам 9.04 и батко Данчо направи чудото – махна xorg.conf. След разкарването му всичко си тръгна по мед и масло. След 8.10 явно въпросния конфигурационен файл не помага особено на работата на X-a (-:

Следващия проблем, който забелязах малко по-късно, когато реших да гледам филм, е че xine крашва при стартиране. Помислих, че е някакъв бъг от бетата и си зачаках ъпдейт, но така и не дойде дори и след излизането от бета версия на 9.10, вчера. Разрових се малко по проблема и ето какво открих, ATI драйвъра, който съм използвал е спрян от поддръжка, което от своя страна възпрепядства работата на glx. Доста се зачудих и се оказа, че самия драйвър не е бил open source, явно и на това се дължи умирането му. Повече по историята и решението на проблема на този адрес: help.ubuntu.com/community/RadeonDriver

Ето набързо всъщност какво трябва да се направи:

Изтрива сe вече неподдържания драйвър:
$ sudo apt-get remove –purge xorg-driver-fglrx

Инсталираме open source библиотеки за glx:
$ sudo apt-get install –reinstall libgl1-mesa-glx libgl1-mesa-dri

Пускаме едно търсене за стария драйвър fglrx да не би случайно да е описан някъде из конфигурационните файлове:
$ sudo grep -r fglrx /etc/

Твърде вероятно е да излязът резултати от стари бекъп конфигурационни файлове за X, където се съдържа описан като драйвър, но те не се използват, така че да си стои там (-:

Рестартираме X сървъра (Ctrl+Alt+Backspace) или се Log Out-ваме и си рестартираме gnome display manager-a:
$ sudo /etc/init.d/gdm restart

Тук вече е момента да се радваме, че приложения като xine и glxinfo не връщат проблеми в X-a.
Приятно справяне с проблемите, аз отивам да гледам филм :P

От доста време се мъча с copy/paste на паролите към повечето сървъри, на които се логвам поради простата причина, че няма как да бъдат запомнени (-:

Решението, което открих е Expect, а стъпките по създаването директно на отделни “команди” за автоматичен логин са следните:

!) Естествено си инсталирате Expect, ако го нямате.
- http://expect.nist.gov/#unix – пакет за саморъчно компилиране
- apt-get install expect – има го в хранилищата на Ubuntu

2) Създаваме си следния примерен файл /usr/local/bin/ssh-server1 с примерно съдържание:

#!/usr/bin/expect
spawn ssh user@hostname-of-server1.com
expect “password:”
send “moiataparola123\n”
interact

3) chmod +x /usr/local/bin/ssh-server1

Резултата при изпълнението на новосъздадената “команда” ще е аналогичен на този:

$ ssh-server1
spawn ssh user@hostname-of-server1.com
user@hostname-of-server1.com’s password:
Linux server1 2.6.*-* ********************************
Last login: ********** from ****************

Съответно в /usr/local/bin/ може да си създадете колкото са ви нужни такива скриптове за използваните сървъри и забравяте за въвеждане на пароли с copy/paste и прочие. :)

Последната седмица или две имам доста проблеми с един сървър. Положението е такова, че поставих още един сайт на него освен този, който се хостваше например. Сайта представлява авторска система за ротиране на банери, която засега е единствено за вътрешно ползване на местата, където рекламирам brutali.com (някои не малки български торент сайтове и гейм форуми). В пиковите часове заявките към тази система за банери са доста и списъка с кънекции към уеб сървъра не е никак къс. Това го натоварва и понякога зависва или качва много loads. Предприех следните стъпки:

1) Ъпгрейд на RAM паметта – даде много добър ефект. Понижи много натоварването на сървъра, но уви не реши проблема. Понякога apache2 забива и уж върви, но сайтове не показва, което продължи да не ми е особено приятно : )

2) Написах си мониторинг на сървъра, който помогна с две неща:
- Ако натоварването е по-високо от нормалното, то значи има някакъв проблем на лице (забили дъщерни процеси на apache-то или някой зависнал cron job) и когато го забележа бягам на сървъра да го оправям.
- Ако натоварването е нулево, явно apache-то е зависнало и бягам да го рестартирам.

Ето и скрийншот от самия мониторинг: линк

3) По идея на колегата ми в host.bgЙордан Георгиев – написах едно скриптче за мониторинг на уеб сървъра. Метода му на работа е да проверява на всеки 2 минути дали се отваря някой от сайтовете разположени на сървъра и ако не се отваря да рестартира (ако е забило) или да го стартира (ако е спряло поради някаква причина) apache-то. От 2 дни наблюдението ми показва, че скриптчето върши идеална работа. Настроил съм го и да ми праща sms-и ако е станало нещо нередно, като за всяко извършено действие за оправяне на нещата ми изпраща съобщение със статуса на предприетите действия и това какъв резултат са дали (дали сайтовете са вече наред или пък че проблема е все още на лице). Скрипта е писан на PHP

Дали тези предприети действия са дали резултат ще стане ясно следващите дни или седмица, като се надявам това да е така, защото освен на мен тези проблеми създадоха доста неудобства и на потребителите ползващи сайтовете разположени на сървъра.

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

15-06-2009
Пуснато в IT зарибявки, MySQL от JaG

Ако случайно вършите десетина различни неща и съответно сте толкова разсеяни (да не казвам тъпи като мен) и забравите или не си запишете каква парола сте сетнали на новоинсталирания MySQL можете да си я сетнете на ново по следния начин:

1. Спирате MySQL сървъра
2. Стартирате го с опцията –skip-grant-tables
3. mysql -u root и се логвате без парола
4. UPDATE mysql.user SET Password=PASSWORD(’НОВАТА-ПАРОЛА’) WHERE User=’root’;
5. Спрете MySQL-a и го пуснете с нормални опции за работа и ще можете да използвате новопоставената си парола

07-06-2009
Пуснато в BRUTALI.COM, Проекти от JaG

На 1 юни се навършиха 3 години от стартирането на гангстерската игра brutali.com.

Преди 3 години на 1 юни 2006 играта стартира с наименованието brutals.org и от края на септември 2006 е с настоящето си име. За рожденния си ден, си подарихме малко подобрения в дизайна:

screenshot-2

brutali-new


Както Ви разказах в началото на февруари, първата ми сесия мина успешно, а вече и втората. Все още нямам отчетено посещение на поправителна сесия. Ето и оценките от сесия номер 2:

Информатика – 6
Физкултура и спорт – 6
Микроикономика – 5
Основи на управлението – 5
Основи на правото – 5
Икономика на труда – 4
Математика – 3

Среден успех от 2ри семестър: 4.86
Среден успех за 1ви курс: 4.58

Днес почети нямам глас, затова ще пиша:) Причината е, че вчера бях на мача и си изкарах страхотно. Настроението беше невероятно, секторите се надвиквахме едни други и се забавлявахме. За съжаление обаче националите с нищо не ни зарадваха или поне не и мен. Единствено мога да отлича Кишишев, който буквално си игра като за последно, Димитър Иванков с няколко доста добри изяви и Мартин Петров, който искаше, но не можеше. Централния ни нападател Валери Божинов горкия нищо не игра. Освен при един удар с глава в аут не го видях да докосне втори път топката. За защитата какво да кажа… ГОЛА ВОДА! Без Александър тунчев нищо не става, а Валентин Илиев не мога да разбера защо не го вика? Може би мача на Терек Грозни срещу Палестина е бил от съществено значение и Мъри Стоилов е решил да го пропусне с повиквателна. Вижте няколко снимки и клипчета, които направих.. Публикацията продължава »

Тази сутрин се сблъсках с интересен проблем, занимавайки се с една мини тикет система за единия от сайтовете ми (brutali.com). PHP функцията substr() не работи коректно с UTF-8 енкодинг, защото при него всеки символ е по 2 байта. Ето пример:

substr(’Тест текст’, 0, 7);

Използваната функция ще върне: Тес?

При използването сме указали да ни покаже първите 7 символа в задения текст, а за функцията това значи първите 7 байта. В UTF-8 всеки символ като е по 2 байта показва само първите 3 букви, а от третата показва половината или по-точно нищо :) . Този проблем го има само с кирилицата, с латиница и числа проблем няма. Ето и моето решение на проблема, след като изчетох няколко материала за фиксване като този и този, но нещо не ми помогнаха и се позамислих… семпло и работещо 100%:

Алгоритъм на действията:
1. Обръщаме стринга в CP1251
2. Режем каквото ни трябва от текста със substr()
3. Обръщаме изходящия текст в UTF-8 и го ползваме за каквото ни трябва

<?php
$mytext = “Кирилица”;
echo iconv(’cp1251′, ‘utf-8′, substr(iconv(’utf-8′, ‘cp1251′, $mytext), 0, 5));
?>

Въпросния код ще покаже текста: Кирил

Забележка: Гурутата да не ме нападнат, че не чета php.net и не знам какво е mbstring, при който функцията е mb_substr, но въпросния модул  го нямам зареден на тази машина…