Open source как социальный эксперимент

Никогда не знаешь к чему приведет отправка патча в какой-нибудь open source проект. Обычно это выглядит так. Программа вас чем-то не устраивает и вы изменяете её под себя. Потом, сообразив, что это будет полезно кому-нибудь еще, вы оформляете красивый патч и отправляешь его разработчикам. Его, как правило, не принимают. По разным причинам. То ли стиль нужно подправить, то ли нужно показать, что патч действительно полезный и что он в канву продукта вписывается. Впрочем, и это тоже не новость, главная задача разработчиков продукта на этом этапе – это выяснить вменяемость автора патча (можно ли с ним работать, вести нормальный диалог и т.д.) и то, насколько предложенные им изменения вписываются в их видение продукта. Короче, если вы новичок в данном проекте, ждите придирок по пустякам. Это нормально и это пройдет, если вы (со временем) впишетесь в стиль работы, принятой разработчиками.

Read On →

Неизвестная Windows - командная строка

Windows традиционно ругают за недоразвитую консоль. Ругают в первую очередь, конечно, за командный процессор (cmd.exe) - злую шутку случайной эволюции. Потом достаётся застрявшей в 1995 году консольной подсистеме в целом. Ну и на закуску остается отсутствие человеческой поддержки удаленного доступа к консоли (telnet/SSH). Короче ругают совершенно заслужено, но при этом, как мне кажется, делается подсознательный вывод, что консоль в Windows вообще ни для чего не годится. В результате упускается из виду, что в состав Windows входит множество утилит командной строки, которые могут быть весьма полезны. Дабы слегка исправить эту ситуацию, я собираюсь написать серию постов «Неизвестная Windows», посвященную консольным утилитам Windows.

Read On →

Аральское море

Вот так Аральское море выглядело в октябре этого года: А в 93-ем оно было вот таким:

WTF

forum.privet.com: Большая компания, сотни тысяч серверов, десятки датацентров потребляющих мегаваты электроэнергии. Озаботился тут как-то Очень Большой Босс (ОББ) тем, что вентиляторы у серверов впустую воздух гоняют, вносят свою лепту в дело глобального потепления, так сказать. Указ издал - чтоб все сервера до конца года использовали CPU на 42% как минимум - и баста. У ОББ масса починенных - сами из себя Большие Боссы и Боссихи (ББиБ). Дипломы MBA, и пр. - все при них. Read On →

Ещё одна причина, почему не следует разбазаривать свободное место в стеке

В Microsoft, по крайней мере, в той его части, что разрабатывает Windows, весьма неплохо поставлен процесс отладки падений, сбоев и прочих багов. Автоматические тесты при падении вываливаются в отладчик. Если какая либо проблема воспроизводится локально, то обычно не нужно просить прислать crash dump или адрес сессии отладчика – так называемый remote. Словечко происходит от утилиты «remote.exe», которая идет в комплекте с «WinDbg.exe» и делает, в общем-то, тоже самое, что и Telnet, но через именованные трубы (named pipes). Не спрашивайте меня, почему нельзя было использовать тот же Telnet. Для меня это тоже загадка. Но я отклоняюсь от темы.

Read On →

... потому что люди не читают слова

Спам фильтр, сидящий в голове каждого пользователя, неизмеримо превосходит по своей эффективности любой автоматический спам фильтр. Он умеет отфильтровывать красиво оформленный, грамматически правильный текст, даже не читая его - You can’t fix application compatibility problems with dialog boxes.

Garden d'Lights

Фотографии с Garden d’Lights 2008:

Garden d’Lights 2008.

Read On →

Зачем нужен параметр lpClass в функции RegCreateKeyEx?

Любой разработчик, кто хоть раз создавал ключ в реестре с помощью функции RegCreateKeyEx задавался вопросом: «а зачем нужен параметр lpClass и что он означает?»

lpClass [in, optional] The user-defined class type of this key. This parameter may be ignored. This parameter can be NULL.

Read On →

Работаем сегодня?

Утро пятницы. 9:30. Большая часть населения Штатов все еще переваривает вчерашнюю индейку с картошкой и прочие излишества праздничного стола. В магазинах бушует Черная пятница. На улицах Сиэтла - парад в честь прибытия Санты Клауса. И в этот момент человек пишет: А сегодня вообще рабочий день-то?

Иногда люди воспринимают вещи слишком буквально

На днях свалился в inbox вопрос:

The documentation for QueueUserApc states “an APC cannot be queued from a 64-bit process to a 32-bit process or vice versa.”

However on Vista Ultimate x64, we _can _queue a user APC from a 32-bit process to a 64-bit process. In our test application the 64-bit recipient crashes, we haven’t explored why just yet, but the point is that the operation should not succeed and the 64-bit application’s APC queue should never have the APC inserted.

Is it an OS bug?

Документация к функции QueueUserApc утверждает, что асинхронный вызов процедуры (APC) не может быть запрошен из 64-х битного процесса для выполнения в 32-х битном и наоборот.

Однако на Vista Ultimate x64 мы можем выполнить асинхронный вызов пользовательского режима из 32-х битного процесса в 64-х битном процессе. В нашем тестовом приложении 64-х битный получатель падает и мы еще не выяснили почему, но дело в том, что операция (QueueUserApc) не должна завершаться успешно и асинхронный вызов не должен вставляться в очередь вызовов 64-х разрядного процесса.

Это баг ОС?

Вопрос примечателен тем, что это уже третье письмо на эту тему за последние два месяца, хотя функция QueueUserApc далеко не самая широко используемая функция Win32. Не иначе какой настойчивый клиент эту функцию мучает. :-)

Read On →