Вы читаете alexwwolf

AlexWWolf's live journal

Свежие записи

Январь, 7, 2014

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

Октябрь, 6, 2014

Просматривая список ошибок, наткнулся на ряд предупреждений вида "This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS." Поскольку я сознательно пользуюсь этими самыми небезопасными функциями, решил отключить предупреждение. Так вот: сработало только через определения символов для препроцессора в настройках проекта. Никакие #define не помогли.

Сентябрь, 7, 2014

Оказалось, все очень просто:
void CDXRenderer::Initialize(Control^ pTargetWindow)
{
    // Обращение к свойству Handle при отсутствии хэндла 
    // приведет к его созданию
    mTargetWindow = (HWND)(pTargetWindow->Handle.ToPointer());
}

Сентябрь, 3, 2014

Цитата дня

Поделиться
Мне всегда в именах всадников апокалипсиса слышалось что-то родное из детства. Сегодня понял что, это же классическое советское госучереждение, ГладМорСмертьСтрах.

(r) bash.im

Август, 29, 2014

Вкратце, проблема выглядит так: есть тест, который читает входные данные с готового файла Excel. Для этого использует стандартную обертку над COM: Microsoft.Office.Interop.Excel. Пока тест выполняется на локальной машине из-под студии - все отлично. При запуске на билд-сервере TFS - тест падает с ошибкой (COMException) вида "не могу открыть файл." Сам по себе файл в порядке - на этой же машине вручную нормально открывается.

После разборок выяснилось, что проблема появляется на некоторых версиях Windows для Excel 2007.

Решается задача очень просто: надо создать пустую папку Desktop по определенному пути (разному для 32bit и 64bit Windows). Можно создать две папки и не беспокоится о версии Windows.

Код в конечном счете выглядит так:
private static void PrepareExcelFileToUse(string fileName)
{
    if (!File.Exists(fileName))
        throw new Exception("Файл не существует: " 
         + fileName);

    WindowsIdentity wid = WindowsIdentity.GetCurrent();

    FileSecurity fSecurity = File.GetAccessControl(
     fileName);
    fSecurity.AddAccessRule(new 
      FileSystemAccessRule(wid.User, 
      FileSystemRights.FullControl, 
      AccessControlType.Allow));
    File.SetAccessControl(fileName, fSecurity);

    string sysPath = Environment.GetFolderPath(
     Environment.SpecialFolder.Windows);
    string path64 = Path.Combine(sysPath, 
     @"SysWOW64\config\systemprofile\Desktop");
    string path32 = Path.Combine(sysPath, 
     @"System32\config\systemprofile\Desktop");

    if (!Directory.Exists(path64))
        Directory.CreateDirectory(path64);

    if (!Directory.Exists(path32))
        Directory.CreateDirectory(path32);
}

Исходная статья с решением - здесь

Июнь, 21, 2014

Если после изменения выходного каталога и прочих путей в C++-проекте начала возникать подобная ошибка, есть два решения:
  1. Выключить создание манифеста (если он не нужен)
  2. В опциях линкера отключить инкрементальную сборку (что намного лучше предшествующего решения, имхо)

UPD:Возможно, также, проблема связана с ресурсными файлами. Тогда необходимо удалить (или переименовать) старую версию утилиты cvtres.exe по адресу вида C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin.

Более подробный список вариантов проблем, из-за которых может возникнуть это сообщение, я нашел на stackoverflow.com

Июнь, 13, 2014

Как же тяжело порой бывает писать приложение на C++! Час-другой посидел - как пару гранитных валунов с места на место перетащил. Или это у меня привычки просто нету? Все-таки в основном на C# пишу...

Май, 15, 2014

Собственно, проблема у меня возникла, когда надо было погонять unit-тесты с использованием базы данных под Sql Server LocalDB. База сначала упорно не поднималась, сообщая о статусе "read-only" основного файла. Потом поднялась - но только в статусе "read-only"...опять. В общем, список шагов такой:
  1. Берем и делаем бэкап в файл на сервере 2008 R2
  2. Создаем или используем готовый инстанс на LocalDB, например: "sqllocaldb c test -s"
  3. Получаем ссылку на именованный канал инстанса (у меня по другому доступа нет): берем из данных, выведенных командой типа "sqllocaldb i test"
  4. Подключаемся через SQL Management Studio к инстансу и поднимаем базу из бэкапа командой RESTORE (это важно - студия бэкап поднимать у меня отказалась)
  5. Вуаля! У нас нормальная база (с апгрейдом версии), которую можно детачить и использовать дальше
  6. Особая фишка по поводу, почему потом у меня база поднималась в режиме "read-only": все дело в правах файлов (и особенностях выполнения инстанса LocalDB). Мне пришлось в коде тестов прописать простановку прав (полный доступ для текущей учетки) на файлы базы

Апрель, 16, 2014

Цитата дня

Поделиться
Амадам: Вопреки мужу, завела котенка. Возвращаемся с магазина, заходим в зал и, увидев посередине наваленную кучу, оба резко останавливаемся. Стою и грущу: мужа-то не заставишь убирать, сама виновата. А муж кладет руку мне на плечо, и с соболезнованием произносит: "Это драконы, кхалиси. Их нельзя приручить".

(r) bash.m

жж счетчик - lj counter

Разработано LiveJournal.com