пятница, 23 сентября 2011 г.

Перевод на основе GNU gettext в Windows приложении на C++

Проблема: хочется использовать продвинутые инструменты для перевода от GNU gettext в приложении Windows. При этом хочется словари строк грузить не из файлов, а из ресурсов. Проект на MFC и не должен зависеть от сторонних dll.

Решение: Использовать tinygettext, этот пакет строит словари из .po файлов (забыли про .mo)
  • Помещаем .po файл в кастомные ресурсы приложения и грузим с помощью FindResource/LoadResource/LockResource.
  • Скармливаем полученную строку в памяти вызову tinygettext::POParser::parse как строковый поток.
  • Определяем макрос _() чтобы он искал соответствия в полученном словаре.
  • Компилируемся с win_iconv, чтобы не зависеть от сторонних dll.
  • Дампим строки завернутые в _() c помощью:
    xgettext.exe -s -k_ -o OutputFileName.pot *.cpp *.h
  • Открываем POEdit и редактируем наши строчки 
  • Profit!

воскресенье, 18 сентября 2011 г.

Любовь, сбивающая с ног (Punch-Drunk Love) 2002

Идеи, которые можно почерпнуть из фильма:
  • В жизни много возможностей и дверей, нужно только уметь их видеть
  • Любовь делает людей сильными и придает смысл происходящему
  • Отличие от окружающих может приносить положительные плоды
Авторы фильма подают эти идеи в виде нестандартной, местами нервной, и не совсем серьезной истории. Но в эту историю верится, потому что фильм персонализированный, много внимания уделяется прорисовке персонажа главного героя.

Запомнилась сцена, где за 100 баксов нанимают 4х отморозков, чтобы вправить мозги главному герою, мотивируя их: "100 баксов за два дня работы, ваша семья никогда столько не заработает, сидя дома".

    пятница, 16 сентября 2011 г.

    gSoap and WCF service hosted in Windows Service

    Использовал gSoap для вызовов методов WCF сервиса из unmanaged C++, работало если хостить в IIS ASP.NET. После того как захостил через ServiceHost в windows сервисе - работать перестало. Потратил кучу времени чтобы найти причину и решение.

    Причина: сообщение не рутилось по HTTP заголовку SOAPAction, это можно видеть в SvcTraceViewer.exe, если тестировать сервис через WcfTestClient.exe, то все рутиться.

    There are three ways to route a soap message to the correct operation:

    1. Using the Http header SOAPAction (ASMX uses this one)
    2. Using the addressing soap header (WCF uses this one by default)
    3. Using the body element.

    После долгой бестолковой возни с первыми двумя пунктами, решение пришло через третий пункт. У Microsoft есть сэмпл, как написать такой сервис. А вот еще правильная подсказка, от участника Jaap de Wolff.

    Но и после всех этих приседаний мне еще пришлось наставить множественные атрибуты XmlSerializerFormat и перегенерить код gSoap клиента на использование SOAP 1.2.

    На этом месте можно выдохнуть.

    пятница, 9 сентября 2011 г.

    Cold Blood - Valdez In The Country

    А вот эту версию продюсировал сам Донни, мощный звук, можно слушать на repeat:

    Affirmation

    Эту вещь написал Jose Feliciano, драаайв, не первый раз вижу, что Бенсон очень удачно интерпретирует чье-то произведение:

    пятница, 2 сентября 2011 г.

    Рисковый интроверт

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

    Могу смело сказать, что до нее в моей жизни не было особого смысла работать и развиваться, я делал это только for fun. Жена изменила всю мою жизнь.

    четверг, 1 сентября 2011 г.

    Турецкий официант

    В Турции, в отеле где мы жили были какие-то равнодушные официанты. Все кроме одного. Он следил, чтобы у нас было детское кресло, спрашивал какое нам нужно вино, подливал вино, и даже спрашивал кофе нам принести или чаю.

    Я посмотрел, как он относится к другим клиентам отеля, оказалось, что точно так же, он был внимателен и все время действовал.
    Подумалось, что человек получает удовольствие от своей работы, для кого-то эта работа может выглядеть как непрестижная или не высокооплачиваемая, но этот человек получал удовольствие от процесса оказания сервиса.