zorgg@nudnik
Home / 2006 / 09

Промежуточное

26.09.2006 23:13
Нет, это еще не следующий пост. Следующий пост будет завтра.

Мне вот интересно, а когда сотрудники Яндекса пишут «Верховная Рада Украины», это они так Издеваются Над Хохлами, или просто валяют дурака, не зная, что по-русски это звучит как «Верховный Совет»?

Писать «Верховная Рада Украины», это как писать «Гавемент США», ну.

TraxTime

26.09.2006 14:04
Дима на днях придумал программу для поддержания дисциплины собственного труда. В том же посте Дима нашел эту программу в Сети. Надо сказать, придумывать у Димы получается хорошо (взять хотя бы те же «Небожители»), а вот находить в Сети – не очень. Потому что нашел он какое-то ужасное барахло.

Почему барахло:

Я потратил около двадцати секунд на поиск функции добавления нового «проекта». Он оказался спрятан в меню -> подменю -> отдельном окне. Удаление проекта – в другом отдельном окне. Зачем – не понятно ни разу.

В первый же день использования TraxTime, я обнаружил забавную особенность: Один «проект» можно включить/выключить ровно восемь раз в день. Что, надо больше? Нет проблем, программа выводит сообщение с предложением вручную «консолидировать» последние строки в одну. В уме, то есть. А потом записать. Руками. Если это не маразм, тогда я уж и не знаю, что. Учитывая тот факт, что обычный офисный сотрудник может десятки раз в день отходить покурить/попить кофе (в хороших офисах кофе халявный)/подышать свежим воздухом/поесть/погадить/и т.д. – в общем понятно, что автор программы просто облажался.

Невозможно заниматься двумя проектами одновременно. Это не самое ужасное ограничение, но я не понимаю, чем оно вызвано вообще.

Учитывая, что программа позволяет заниматься только одним проектом в один момент времени, совершенно не понятно, почему для переключения между проектами требуется сделать четыре клика. Можно было обойтись одним, нет?

Я не могу посмотреть (или я это просто не нашел эту функцию, что равноценно), сколько времени я потратил на задачу в процентном отношении ко всему прочему. Лично мне значительно менее интересно знать, что я потратил на проект «Занятие ерундой» двадцать восемь часов, чем знать, что эти двадцать восемь часов – 44% от общего времени. Потому, что 44% — значащая цифра, а 28 часов – нет.


Ну и мелкие придирки:

Программа, предположительно, не совместима с концепцией множества пользователей одного компьютера. То есть, если компьютером пользуются несколько человек, им придется инсталлировать программу несколько раз в разные папки, чтобы их личные данные не накладывались. Впрочем, это всё ерунда на фоне «консолидации последних строк вручную».

Программа, предположительно, не будет работать на т.н. Least-Privileged User Accounts. Что, как минимум, значит, что она не будет работать в интернет-кафе, в корпорациях с параноидальным (т.е. обычным) системным администратором, под Windows Longhorn, и т.д.

Программа зачем-то весит под три мегабайта.

И самое ужасное: ОНА СТОИТ $39. Нет, я понимаю, когда выпускник школы ваяет такое фуфло забесплатно, потому что ему нужно чем-то набить портфолио. Но брать за это сорок баксов? Это мудачество. Максимум наглости, в пределах допустимого, это сделать на сайте программы маленькую кнопочку «Please donate». А не требовать за это…

Ладно, хватит. Я думаю, к этому моменту всем становится совершенно понятно, что так дальше жить нельзя. Как дальше жить можно – в следующем посте.

Смотри также:
… II
Teaser

Графика

26.09.2006 11:45
Месяц назад обновил видеокарту. Смог наконец сформулировать, зачем играм Крутая Графика.

Чтобы я себя не чувствовал лохом, отдавшим почти двести баксов, непонятно за что. То есть, всё удовольствие сводится к первым пяти минутам аханья и оханья «ой какая графика, как хорошо, что я обновил видеокарту!». Потом картинка уходит на задний план восприятия и ощущения от игры формируются совершенно другими механизмами.

О чем я уже неоднократно писал.

Teaser

26.09.2006 11:32

Это я к тому, что говно этот ваш TraxTime.

Смотри также:
… II
TraxTime

#

Карта

26.09.2006 11:21
Дама Тентаклей (вариации: Рыцарь Тентаклей, Король Тентаклей, Валет Тентаклей).

Это всё объясняет

26.09.2006 09:52
Subj.
#

Подскажите программу…

23.09.2006 09:34
…которая умеет преобразовать кусок С++ кода в компактный (еще раз: компактный) HTML, сохранив отступы (и, опционально, этот код раскрасив). Подсказки можно прислать почтой. Так же, желательно чтобы результирующий HTML не рвал существующее форматирование, как это делает, например, C++ Code Export.

Спасибо.

Тестирование и отладка

23.09.2006 09:03
Пост для самых маленьких. Самые большие могут не читать.

Допустим, вы работаете над программой на С++, которую по мере разработки тестирует другой человек или группа людей.

Допустим, ваша программа с завидной регулярностью валится.

Допустим, это сопровождается не сообщением

«Уважаемый тестер! Программа свалилась по причине того, что разработчик в файле MyFile.cpp, строке 12 написал new char[ strlen( str + 1 ) ] вместо new char[ strlen( str ) + 1 ]. Подскажите разработчику, чтобы он больше так не делал»
а чем-то вроде
(0x80000003) occurred in the application at location 0x0041d12b.

Что делать.

Значит, во-первых: 0x0041d12b – это адрес того места, в котором случилось плохое (это плохое называется «исключением»). Можно попробовать запустить программу в режиме отладки (Step Into) и ручками записать это значение в регистр EIP. Вероятнее всего, при этом отладчик перепрыгнет на ту строчку кода, которая сделала бяку.

Во-вторых: Воспользоваться библиотекой DbgHelp (которая входит в комплект Visual Studio), а точнее функцией MiniDumpWriteDump. В этом месте мне придется прекратить паясничать и называть исключения «какой», так как я совершенно не горю желанием писать развернутый howto для идиотов, не знающих как подключить библиотеку.

В общем, библиотеку нужно подключить, а затем сделать что-то похожее на вот это:

#include <dbghelp.h>

void DumpIt( HANDLE hFile, PEXCEPTION_POINTERS excpInfo)
{
MessageBox( NULL, "An exception!", "OMG NO", MB_OK | MB_ICONSTOP );

MINIDUMP_EXCEPTION_INFORMATION eInfo;
eInfo.ThreadId = GetCurrentThreadId();
eInfo.ExceptionPointers = excpInfo;
eInfo.ClientPointers = FALSE;

MiniDumpWriteDump(
GetCurrentProcess(),
GetCurrentProcessId(),
hFile,
MiniDumpNormal,
excpInfo ? &eInfo : NULL,
NULL,
NULL);
}

//...

hDump_File = CreateFile("crash.dmp", GENERIC_WRITE, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, NULL);

__try
{
// Сюда вписать опасный код. В моем случае - всё приложение.
}

__except(DumpIt(hDump_File, GetExceptionInformation()), 0) {}

CloseHandle(hDump_File);

Удачи в отладке.

Update: А, ну гениально. Самое главное забыл сказать. Вышеприведенный код в случае «падения» запишет в файл hDump_File некоторую информацию, с помощью которой можно более или менее точно восстановить обстоятельства крушения. Этот файл можно открыть студией (Open Project/Solution), нажать F5 — и оказаться в условиях, близких к тем, которые привели к катастрофе. Желательно, чтобы файл имел расширение .dmp, это облегчит студии понимание, что ей пытаются всучить.

Ссылка по теме: Статья на английском с примерами. Кроме самой функции MiniDumpWriteDump в статье (и примерах) много лишней ерунды, зато примеры компилируются и работают. Sapienti sat, всё такое.

Web-интерфейсы

19.09.2006 07:48
Несколько банальных утверждений.

Web-интерфейс нужен тогда, когда существует проблема доставки клиентского кода на целевую машину. Например, web-интерфейс к почтовому сервису может оказаться полезным в тех редких случаях, когда необходимо прочесть почту с компьютера, который вам не принадлежит, и которым вы пользуетесь один раз: в интернет-кафе или в гостях. У себя дома или в офисе вы, вероятно, установите «стационарный» почтовый клиент. Это гораздо удобней.

Человек, который набирает в Semagic пост о повсеместном применении в ближайшем светлом будущем web-интерфейсов (AJAX etc.), выглядит, по меньшей мере, забавно. Именно поэтому он прав – все известные мне пророчества светлого будущего, которым было суждено сбыться, озвучивались при схожих забавных обстоятельствах. Это единственный аргумент в пользу светлого будущего AJAX, который у меня есть. «Это выглядит глупо, а значит похоже на правду».

Особенно продвинутые визионеры объединяют в одном видении светлого будущего два, в общем-то, антагонистичных по отношению друг к другу подхода – AJAX и RSS. Это еще больше похоже на правду. По тем же соображениям.

Можно предположить, что такая горячая поддержка web-приложений и сервисов вызвана популярным заблуждением, что web-приложения писать проще. Это не так, если вы этого не понимаете, значит, вы программист на PHP.

Еще раз: На сегодняшний день, при существующем уровне развития технологий, web-интерфейс к чему-либо, это такой легковесный заменитель полноценного приложения, который имеет, с точки зрения пользователя, единственное преимущество: легкость в доставке на целевую машину. Все остальные качества web-интерфейса – недостатки.

Извините, что пишу очевидные вещи.

# dev

Автоматизация труда

19.09.2006 06:27
Я думаю, мы все должны быть рады, что создание масштабных информационных систем – дорогостоящая, сложная и не всегда выполнимая задача. Иначе в стране стало бы значительно больше безработных обезьян, которые не умеют делать ровным счетом ничего.

Чем больше я на это всё смотрю…

16.09.2006 08:09
…тем больше хочется сделать свой Интернет. С блэкджеком и шлюхами.
#

…and has been logged

16.09.2006 08:05
eDonkey накрылся медной пиздой, компенсации будут выплачены, все, кому надо было, уже на этом нагрелись, и так далее, и тому подобное.

ОК.

А теперь скажите, какой увечный мудак вот это написал? И зачем.

Архитекторы

15.09.2006 08:12
Системный архитектор в маленькой вебстудии, это как штатный физик-ядерщик в автомастерской.

И, что самое замечательное, помидоры в меня не полетят, так как на этом сайте 50 постоянных читателей, ни один из которых не является системным архитектором в маленькой вебстудии. Замечательно, не так ли?

Творческие Люди™

15.09.2006 04:55
Вот довольно симпатичная работа на skill.ru.

А вот эта же работа с описанием и комментариями от автора.

Выводы?

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

Enjoy the other side

14.09.2006 21:40
Забавная реклама лубрикантов Durex.

Женщина, которая сделала sigslot

14.09.2006 21:27
Вот эта женщина, а вот её sigslot.

Если вам по каким-то причинам не нравится Boost (лично у меня таких причин — масса), но хочется сигналов/слотов — sigslot — хорошая альтернатива.

Люди™

14.09.2006 21:17
Гадости про Диму Смирнова.

Что это подтверждает? Что людей нужно щемить и обижать, а не сайты им делать и премии раздавать.

HGE

07.09.2006 17:09
Вот пример того, что я называю удобной архитектурой. Ноги там, насколько я пониманию, растут из Grim 2D — движка Crimsonland.

Не без мелких ляпов, конечно, но куда же без них.

HGE, кстати говоря, стал совсем бесплатным. Одно из лучших (если не лучшее) решений для быстрого прототипирования и разработки shareware игр. Скажем спасибо дяде Haaf’у за наше счастливое детство.

Смотри также:
How to Prototype a Game in Under 7 Days

ООП

07.09.2006 16:53
По поводу ООП, PHP и прочего, имею что сказать.

За два года я убедился, что спорить с людьми о подобных вещах — только портить себе же нервы. Всегда находятся профессионалы и знатоки, у которых в запасе есть много слов, начинающихся с мета- и английских аббревиатур — на случай, если покажется мало. Для вдумчивой аргументации, надо полагать.

В какой-то момент до меня дошло, что я не обязан отстаивать свои убеждения перед кучкой идейных фанатиков. Это они, а не я, будут создавать для «болтающихся» процедур классы, состоящие исключительно из статичных членов, а затем удивляться, почему добавление еще одного частного статичного поля вызывает пересборку всего проекта. Это они, а не я, будут создавать XML-driven framework там, где нужна одна красная кнопка в центре экрана. Они, а не я добровольно усложняют себе жизнь.

Так чего спорить? Let ’em be. Тем более, что мудаков, получающих удовольствие от разжигания межконцептуальной розни и так хватает.

Dixi.

 ::