Всем знакомы истории про разных рассеянных людей, которые ищут очки, надетые им на нос. Кроме очков такое случается и с более абстрактными вещами, сегодня — со мной и моей программой.
На работе поддерживаю и развиваю старый проект, над которым ещё до меня работало два-три поколения программистов. Понадобилось ему работать с сетью. С сокетами. Я бодро подключаю заголовочник сокетов (winsock2.h), и ожидаю, что все заработает. Обламываюсь, мне сообщают, что не удаётся найти даже саму функцию socket. Туплю, начинаю перекладывать подключение в разные места, и каждый раз компилятор вываливает мне все более устрашающие наборы ошибок. Решаю, что всё дело в каком-то дважды подключённом заголовочнике.
Системный подход — это наше все, и я начинаю с самого низа аккуратно раскладывать все по полочкам. Полчаса сражаюсь со следами действий неизвестного древнего, который обожал включать заголовочники в другие заголовочники. В конце концов получаю аккуратную и стройную систему, чистенькую, как скучающая кошка. Радостно потираю руки в предвкушении.
Socket продолжает не работать.
В десятый раз смотрю в мануал, подключаю к проекту библиотеку ws2_32.lib, и все становится шоколадно : )
«
с неё же. Туда можно поехать через икею, а обратно тоже через икею. Разница в том, что такое вечер воскресенья...
»
«
на этих девушках рано женится : ) Узнал сравнительно удобный способ добраться до фиолетовой ветки, и очень неудобный способ возвращения с неё же. Туда можно поехать через икею, а обратно тоже через икею. Разница в том, что такое RSS и аггрегатор, то откуда бы вы ни подключились к инету, он будет тем же самым и покажет вам только новые события.
»
очень забавно, рекомендую : )
Раз за разом смарти преподносит мне сюрпризы, выставляя самозабвенным изобретателем велосипедов. А все от того, что я никак не возьмусь один раз внимательно прочитать его документацию до конца.
Например, банальная вещь: вывести список чего-то, а если список пустой, писать сообщение об этом. Нет, конечно, от лишнего {if}{else}{/if} я не умру, но все-таки {foreach}{foreachelse}{/foreach} лучше.
Или ввод даты селектами. Я в итоге соорудил мощный включаемый блок, который рисовал селекты и добавлял к ним календарь для большей визуальности. А о {html_select_date} я даже и не подозревал. Выясняется, что с ним можно сделать то же самое.
Ну а о банальном default'е даже говорить не хочется : (
Эх, блин, столько замечательно удобных вещей вокруг, если бы только находить их тогда, когда они нужны в первый раз. Но это, конечно, мечты. А в жизни нужно либо читать маны (голова опухнет все это читать), либо полагаться на счастливый случай...
Я участвую в разработке системы контроля доступа. Один из модулей этой системы называется «Учёт рабочего времени» и вполне очевидно предназначен именно для определения, сколько точно часов работник провёл на своём рабочем месте. Вычитаются опоздания, ранние уходы, долгие обеды, выходы в туалет и многое другое.
Почти год я не обращал на этот модуль особого внимания. Но вот недавно у меня появился стимул понять, как он на самом деле плох. Стимулом стало то, что месяц назад этот модуль стали применять к нам — собственным работникам компании. Тут-то и пришли мысли: «я участвую в разработке того, что искренне считаю злом». Интересные ощущения, когда эти мысли болтаются в голове и вызывают к жизни различные аналогии, большей частью с душком.
Возможно, вам знакомо ощущение, когда какая-то тема для поста в журнал не пишется на одном дыхании, а долго обдумывается. У меня такое бывает достаточно часто, и обычно затягивается надолго. Тема всплывает, забывается, опять всплывает через несколько дней, прирастает парой слов, опять уходит в небытие, и так раз за разом. Хочется написать хорошо и правильно, учитывая все стороны вопроса, а эти стороны ты и сам пока что не видишь как следует, вот и тянешь.
Но вот что интересно: стоит один раз упомянуть эту тему в живом общении с кем-то из друзей, коротко описать своё отношение к ней — и она надёжно забывается. Не всплывает больше. Закрывается. И это мне не по душе : ) Все-таки обратная связь в жж и шире, и лучше привязана к контексту. Но обычно ничего поделать не удаётся.
Впрочем, одна тема все-таки выжила после такого обсуждения. О ней будет следующий пост : )