среда, 25 декабря 2013 г.

Must read

Эрик Рис. Бизнес с нуля.

<...>Так возникает замкнутый круг: команда разработки отважно пытается создать продукт согласно техническим требованиям, которые получает от креативного директора или от руководства компании. Если результатов не видно, руководство считает, что любое несоответствие между тем, что было запланировано, и тем, что создано, и является причиной неудачи, и пытается еще подробнее описать следующую итерацию. Технические требования становятся все длиннее, процесс планирования замедляется, размер партий растет, и обратная связь откладывается. Если в этом про­цессе участвует совет директоров или финансовый директор, можно ожидать, что скоро начнутся увольнения.<...>

Книжка must read. Если бы я знал все что там написано несколько лет назад...

Можно найти в переводе на русский: Бизнес с нуля. Метод Lean Startup для быстрого тестирования идей и выбора бизнес-модели., а вот в оригинале: The Lean Startup: How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses.

вторник, 1 октября 2013 г.

Ищу работу

С сегодняшнего дня нахожусь в активном поиске работы. Если у кого-то есть куда закинуть резюме, то вот ссылка (http://careers.stackoverflow.com/jia3ep). Репост приветствуется.

UPD: Активность закончилась.

четверг, 12 сентября 2013 г.

Примеры кода от Microsoft

У Microsoft есть коллекция примеров кода на различных языках и под различные MS платформы по адресу code.msdn.microsoft.com. Присутствуют полезные вещи, но под видом C++ там примеры на C++\CLI.

понедельник, 9 сентября 2013 г.

GoingNative 2013

Закончилась одна из крупнейших конференций по C++ — GoingNative 2013. Ее организует Microsoft и там выступают всем известные эксперты: Bjarne Stroustrup, Herb Sutter, Andrei Alexandrescu, Scott Meyers и другие. Конференция вещалась в прямом эфире, но из-за разницы во времени не всегда удавалось посмотреть интересные выступления. Теперь запись конференции доступна для скачивания или просмотра на Channel9.

четверг, 8 августа 2013 г.

Опасности неправильных концов строк

В эпоху, когда в интернете существует куча проектов, написанных под разные платформы, программисты не стесняются заимствовать полезные куски кода в режиме copy-paste. Помимо юридических вопросов, которые оставим за рамками этой статьи, возникают и чисто технические трудности.

Исторически так сложилось, что окончание строки в бинарной форме по умолчанию по-разному кодируется на разных платформах. На Windows — это CR+LF (ASCII 0x0D 0x0A), на Unix и подобных системах — LF (ASCII 0x0A), на Mac — CR (ASCII 0x0D). Копируя текст из исходников, которые писались для другой системы, есть опасность получить файл со смешанными концами строк. Пример такого файла показан на рисунке ниже.
Опасность таких файлов в том, что компилятор MSVC++ игнорирует CR и считает, что там все написано в одну строку. С другой стороны редактор Visual Studio вполне корректно отображает перенос. Проблемы начинаются при отладке полученных от кастомеров дампов. Пример показан на рисунке ниже.
Тут видно, что ошибка показана совсем не в той строке, в которой она произошла в реальности. При отладке больших проектов это становится огромной проблемой. Можно также отметить, что даже при показе специальных символов Visual Studio никак не выделяет «враждебные» концы строк. Единственное, чем помогает студия — это предупреждение, которое выдается при открытии подобных файлов.
Обратите внимание, что в диалоге можно снять галочку Always show this dialog и тогда студия больше никогда таких предупреждений не выдаст. Убедиться, что Visual Studio определяет файлы со смешанными концами строк можно в параметрах через меню Tools->Options в появившемся окне Environment->Documents и смотрим галку Check for consistent line endings on load.

среда, 7 августа 2013 г.

Новый адрес блога



В связи с тем, что Google стал упорно редиректить с blogspot.com на blogspot.ru, пришлось организовать более стабильный адрес для данного блога. Уже какое-то время он живет по адресу codeatcpp.com. Старые ссылки на статьи с адресом jia3ep.blogspot.com также корректно работают (да и jia3ep.blogspot.ru тоже работает).

К счастью, процесс прошел очень гладко с использованием регистрации домена прямо из настроек Blogger (через сервис Google Apps).

Как читать без Google Reader

В Google Reader этот блог читало подавляющее большинство подписчиков. После закрытия Reader можно очень легко продолжать читать этот и другие блоги через feedly.com. Там ребята приложили максимум усилий для миграции из Google Reader в один клик (они даже визуально сделали стиль похожим на Google Reader). Так что, кто еще не слышал про реальную альтернативу Google Reader — пользуйтесь.

Разницы, как пользователь, я практически не замечаю. У меня даже кнопочка в тулбаре Chrome есть, только она количество непрочитанных статей не показывает (пока, видимо).

среда, 5 июня 2013 г.

Усложняем жизнь злоумышленникам

При написании программ, которые имеют некоторые требования к безопасности, можно использовать возможности Windows API для обеспечения сохранности конфиденциальных данных.

Например, есть функция безопасной очистки памяти SecureZeroMemory. После того, как секретные данные побывали в памяти и более стали не нужны, их удаляют. Но обычный вызов ZeroMemory может быть при компиляции оптимизирован и выброшен полностью. В следующем примере компилятор при оптимизации выбросил бы вызов ZeroMemory из-за того, что переменная szPassword выходит из области видимости и далее не используется.
{
  WCHAR szPassword[MAX_PATH];

  // Retrieve the password
  if (GetPasswordFromUser(szPassword, MAX_PATH))    
  UsePassword(szPassword);
  // Clear the password from memory
  SecureZeroMemory(szPassword, sizeof(szPassword));
}

Еще можно усложнить захват картинки с экрана. Для этого в Windows 7 существует функция SetWindowDisplayAffinity. Достаточно добавить следующий код в вашу программу:
SetWindowDisplayAffinity(hwnd, WDA_MONITOR);
ShowWindow(hwnd, nShowCmd);
Теперь, если Desktop Window Manager не отключен, при попытке сделать скриншот злоумышленник увидит черные пикселы вместо окна программы.

Эти примитивные шаги всего лишь усложняют работу злоумышленника по вытаскиванию конфиденциальных данных, но, конечно, не решают проблему безопасности.

четверг, 16 мая 2013 г.

Новая среда разработки

Google анонсировал специальную IDE для разработки под Android. Можно уже попробовать.

Надо отметить, что конвертация проекта из Eclipse не прошла гладко. Возможно, поддержка этой фичи будет доработана в будущем.

Видео с Google I/O 2013 на тему средств разработки:

пятница, 22 февраля 2013 г.

В помощь локализаторам

Не секрет, что в Microsoft проделали большую работу по переводу MSDN на русский язык. По факту их терминология является стандартом для переводчиков при локализации документации или UI. В помощь таким работникам существует Language Portal. Само собой, что этот ресурс можно использовать не только для переводов текстов относящихся к Windows, но и любых других «IT related».

P.S. Ссылки на подобные ресурсы для локализаторов велкам в комменты.

понедельник, 28 января 2013 г.

Партнерство с Microsoft становится бесполезным

В компании Microsoft подложили свинью своим партнерам. Если раньше Gold партнерам ISV полагалось 35 полноценных бесплатных лицензий Visual Studio Premium с подпиской MSDN, то теперь все эти комплекты стали бесполезны — теперь их можно использовать только для написания внутренних тулзов и ни в коем случае не получать с их помощью прибыль.

Если раньше выгодность партнерства была очевидна, то, с новыми правилами, трата времени на лицензирование ПО под Windows и выполнение прочих требований стало лишней нагрузкой для компаний-партнеров.