If a C programmer asks "do you want to see something cool?", run away.
--John Van Enk

Wednesday, August 22, 2007

Какой айпишник у двери?

Однажды у нас в конторе произошел следующий забавный случай:
Заходит к нам в отдел сотрудник и спрашивает: "Какой айпишник у двери?". Все в отделе сидят уткнувшись в монитор, с которого на них смотрит родной Linux (ну или Windows у кого-то), и кто-то не поднимая головы отвечает: "76-й!". Сотрудник уходит. И тут все дружно подымают головы и всех пробивает на ха-ха. IP адрес у двери? и самое главное, что на такой вопрос был получен ответ! Объясняется все просто: один из проектов, который мы сейчас разрабатываем, - это система доступа в помещение по отпечаткам пальцев, которая работает под управлением Linux и включена в сеть.

Еще как то разговорились и пришли к выводу, что булевы переменные в PL/SQL обладают женской логикой (они ведь имеют три состояния) - "да", "нет", "наверное".

Tuesday, August 21, 2007

Quine

Когда то у нас в университете одним из заданий на курсовой проект было написать программу печатающую свой собственный код. Так тогда это задание никто и не взял себе. И вот недавно, вспомнив об этом, решил поискать в сети. Оказалось, что подобные программы называются Куайн (Quine) и программисты иногда ради забавы соревнуются кто же напишет максимально короткий куайн. Ниже пример с Wikipedia:

Friday, August 17, 2007

std::string vs. const char* . Comparison

Захотелось мне как-то узнать какие строки сравниваются быстрее - С-строки или STL. Да и Страуструп помнится в своей книге писал, что STL строки скорее всего реализованы эффективнее. Решил провести небольшой бенчмарк. Один тестовый случай заключался в 1000 сравнении 2х строк. Продолжительность каждого тестового случая измерялась. Тест состоял из набора в 1000000 тестовых случаев. После проведения теста время сравнения усреднялось. Результаты оказались довольно занятными.

Thursday, August 16, 2007

Начинаю учить японский

Наткнулся на тест согласно которому мне рекомендуют:

You Should Learn Japanese

You're cutting edge, and you are ready to delve into wacky Japanese culture.
From Engrish to eating contests, you're born to be a crazy gaijin. Saiko!


gaijin - чужак (пересмотрел недавно Токийский Дрифт). Может и взаправду начать изучать его? говорят он полегче английского ;-)

Tuesday, August 14, 2007

Google Translate rulezz ;-)

Благодаря Google теперь можно читать китайские тексты довольно качественно переведенные на английский. Cool!

Monday, August 13, 2007

Внешне указатели, сокеты внутри

Программирование сетевых и многозадачных приложений довольно трудная задача, так как в данной области довольно часто возникают нетривиальные ошибки, которые очень редко проявляются и их очень затруднительно воспроизвести. Типичный пример - потеря соединения. Пусть у нас имеется следующий код:

Friday, August 10, 2007

Font Rasterization

Появилась довольно интересная статья по растеризации текста. Автор хоть и не является экспертом в данной области, но определенно “have something to say”. Как-то до прочтения статьи мне не приходилось задумываться над подобными вещами. Неужели все настолько плохо? Кто что думает?

Thursday, August 9, 2007

Motolinux

RAZR2 V8Motorola начала продажи (пока только на территории США) мобильного телефона RAZR2 V8, работающего под управлением мобильной Linux платформы MotoMAGX. На страничке MotoMAGX в частности можно прочитать следующие слова:

With more than 9 million Linux®-based handsets shipped worldwide, Motorola is a leader in mobile Linux innovation — and this is just the beginning. In the next few years, up to 60 percent of Motorola's handset portfolio is expected to be based on Linux. MOTOMAGX, Motorola's recently announced mobile Linux platform, is the next significant step in demonstrating our commitment to mobile Linux. It will play a key role in supporting Motorola's strategy

Такие заявления звучат более чем обнадеживающе ;-). Если мир и не услышит о Linux на десктопах, то похоже о Linux в мобильных устройствах ему придется услышать в самом ближайшем будущем. А когда наконец-то настанет эра ubiquitous computing о Linux будут знать все. Знать будут по крайней мере, что он есть ;-). Интересно будет взглянуть лет эдак через несколько какая платформа победит. А может Linux в мобильных устройствах даст зеленый свет и Linux на десктопах?

Monday, August 6, 2007

The Right to Read

Удивительно! как это мимо меня прошла такая статья??? The Right to Read by Richard Stallman. Есть русский перевод. Эта статья перекликается в некоторых местах с этим материалом.

Friday, August 3, 2007

Computer programming career

Нашел пару интересных статей
  1. Why a career in computer programming sucks
  2. The death of the generalist software developer
Недоумение вызвала фраза:
And I stand by my belief that people born in this country have more rights to the money being created here than foreigners.

Расизмом это все попахивает ИМХО.

Thursday, August 2, 2007

Покажи мне свой Desktop и я скажу кто ты

Мой десктоп на работе выглядит вот так:


Ничего лишнего и все нужное под рукой :-). А панелька со средствами разработки справа - скывается автоматически.

Просто undefined behaviour

Вот такой простой код приводит к undefined behaviour.


#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
char*str="Hello, world";
cout <<str<<endl;
str[6]='!';
cout <<str<<endl;
return EXIT_SUCCESS;
}

А все потому ,что строковый литерал есть "массив с надлежащим количеством константных символов", и, следовательно, присваивание константе незаконно. И поймать это можно только в рантайме. В моем тестовом случае это привело к segmentation fault.

Русских победить невозможнно!

Однажды произошла следующая история. В Сибири велась разработка земли и для этой цели понадобился какой-то специальный трактор. Трактор был приобретен через представителей в Москве у немецкой фирмы, доставлен в пункт назначения и представители благополучно разъехались по домам. И тут в Москве раздается звонок: "Ваш трактор не заводится". Представители срочно выезжают в Сибирь, смотрят, да, действительно, трактор не работает. Звонят в Германию производителю. Немецкие разработчики срочно выезжают в Сибирь, смотрят, а из салона трактора пропала магнитола. Как оказалось, местный прораб залез в кабину трактора, а там магнитола, кондиционер и куча другой электроники. Он не долго думая выдирает эту магнитолу из гнезда и запихивает в свою Волгу. Ну немцы и говорят - верните магнитолу на место, без нее электроника не работать не будет, трактор не заведется. Магнитолу вернули, трактор завелся, все довольные и счастливые уехали, немцы улетели к себе на родину. Не успели немцы долететь, в Германии раздается звонок из московского представительства: "У трактора сломался плуг". Немцы в шоке, плуг расчитан на неимоверные нагрузки, КАК ЕГО МОЖНО БЫЛО СЛОМАТЬ??! Не успели немецкие представители приземлится в аэропорту, им сразу звонят - вылетайте мол. Те сразу идут в кассы, покупают билет и вылетают. Прилетают в Сибирь, там уже целая делегация из Москвы. Среди немцев также присутствуют инженеры, которые разрабатывали этот трактор. Стоит этот трактор, лемех плуга в земле метров 10 от него, оторванный у дышла. Ну они и спрашивают, мол как? что произошло?
Наши им отвечают - "Ну чё, пашем, пашем, трактор застрял, гусеницы пробуксовывают, а трактор ни с места. Ну думаем наверное застрял. А коли он застрял то надо его дернуть". Ок, все класс, однако чем же можно "дернуть" 50 тонную гусеничную громадину?

ТАНКОМ!!! Они дернули ее ТАНКОМ!!!, который вызвали из части!!!
Немцы в шоке. Говорят : "Ок. замену мы вам пришлем, но давайте выясним что же случилось". Берут лопаты, начинают копать. Докапываются до глубины сантиметров в 50 и видят, что грунта на самом то деле только 50 сантиметров, а под ним идет гранитный кристаллический щит, в котором этот плуг и застрял! Почухали репку немцы, развели руками и изрекли: "Да-а-а. Нечему удивляться, что мы проиграли 2-ю мировую русским. Русских победить невозможно!"

Вот такая история.

А к нам на три дня приезжали итальянские партнеры. Они, гады, умудрились сожрать весь сахар! Пришлось вчера пол дня пить чай с сахарозаменителем :-(

Wednesday, August 1, 2007

Живность в коде. Часть 2. Метод муравьиных колоний

Энтомологи установили, что муравьи способны быстро находить кратчайший путь от муравейника к источнику пищи. Более того, они могут адаптироваться к изменяющимся условиям , находя новый кратчайший путь. Муравьи движутся по прямой, соединяющей муравейник с местом, в котором находится пища. При движении муравей метит свой путь специальными веществами - феромонами, и эта информация используется другими муравьями для выбора пути. А именно, муравьи предпочитают тропки наиболее обогащенные феромонами. Это элементарное правило поведения муравьев и определяет их способность находить новые пути, если старый оказывается перерезанным преградой. Действительно, достигнув этой преграды, муравьи уже не смогут продолжить свой путь и с равной вероятностью будут обходить ее справа и слева. То же самое будет происходить и на обратной стороне преграды. Однако, те муравьи, которые случайно выберут кратчайший путь, будут быстрее проходить свой путь и он с большей скоростью станет обогащаться феромонами. Поэтому следующие муравьи будут предпочитать именно этот наикратчайший путь, метя его и далее. Очевидная положительная обратная связь быстро приведет к тому, что кратчайший путь станет единственным маршрутом движения насекомых.


Подобный процесс может осуществляться и в компьютерном мире, населенном Искусственными Муравьями (ИМ). Такие муравьи могут решить стандартную задачу коммивояжера. В этом случае они движутся от города к городу по ребрам соответствующего графа. При этом они выбирают направление движения, используя вероятностную функцию, зависящую как от предыдущих попыток движения по данному ребру, так и от эвристического значения, являющегося функцией длины ребра. ИМ с большей вероятностью будут предпочитать ближайшие города и города, связанные ребрами, наиболее богатыми феромонами. Первоначально N искусственных муравьев размещаются в случайно выбранных городах. В каждый последующий момент времени они перемещаются в соседние города и изменяют концентрацию феромона на своем пути (локальная модификация). После того, как все ИМ завершат движения по замкнутому маршруту, тот из них, который проделал кратчайший путь, добавляет к его звеньям количество феромона, обратно пропорциональное длине этого пути (глобальная модификация). В отличие от живых муравьев, ИМ обладают способностью определять расстояние до соседних городов и помнят, какие города они уже посетили. Оказывается, метод искусственных муравьиных колоний может давать результаты, лучшие чем метод имитации отжига, искусственные нейронные сети, и генетические алгоритмы.

Более подробно о методе муравьиных колоний можно почитать в статье "Муравьиные алгоритмы". Также существует страничка, посвященная этому методу на веб сайте Marco Dorigo. В 2004 году в издательстве MIT Press вышла его книга, посвященная этому методу.