StubIt x86/x64

Эта страница посвящена проекту системы лицензирования программного обеспечения — ReSanity StubIt.
Сайты проекта www.resanity.com, www.stub-it.com

ReSanity StubIt Cloud Licensing System
ReSanity StubIt Cloud

Девиз проекта:
«Возможность украсть создает вора» — мы не дадим такой возможности!

Слоганы проекта:

«Ваш софт крадут? Конец грядет? Берите StubIt, все пройдет!»
«ReSanity StubIt — Это Ваш контроль продаж!»

654 комментария: StubIt x86/x64

  1. Leonardo Leonardo говорит:

    День первый. С утра жутко болел зуб :-(
    После кофе немного отпустило, за работу!

    • Leonardo Leonardo говорит:

      Весь день занимался «чисткой» x86_call_stubs, сделал еще и x64_call_stubs, включая куски на assm.

  2. Leonardo Leonardo говорит:

    День второй.
    Планирую, если успею, заняться двумя вещами:
    1. вынести inline assm в отдельные assm-модули и настроить их связь с С++ кусками (крайне желательно сделать еще и x64-версии assm-модулей, С++ кусков).
    2. переделать структуру классов для runtime, сейчас несколько кривовато.

    • Leonardo Leonardo говорит:

      Появилась новая, перспективная идея относительно обработки вызовов и более полного контроля попадания в куски кода. Решил, что она сейчас не критична, но ее стоит в будущем реализовать (в версии 2.0).

    • Leonardo Leonardo говорит:

      Сегодня весь день проковырялся с выносом inline assm-кусков, что повлекло за собой переделку работы с переключением стека. Теперь этим занимается отдельный класс, который взаимодействует с assm-функциями.
      Ключевая проблема в том, что это очень сильно зависит от компилятора и опций компиляции (оптимизации). Пока сделал и протестировал x86 debug, x86 release для MSVC.
      По плану — сделать и протестировать x64 debug, x64 release для MSVC.

  3. Leonardo Leonardo говорит:

    День третий.
    Планирую продолжить вынос inline-assm, совместно с переделкой С++ обвязки и, возможно, созданием вариантов x64.

    • Leonardo Leonardo говорит:

      Так, весь inline-assm из native thread я вынес, сделал обвязку для С++. Проверил, работает. Под вопросом целесообразность изменения assm-кода для уменьшения размера и увеличения скорости работы.

  4. Leonardo Leonardo говорит:

    День четвертый.
    Вчера вечером начал переделку классов под разнос для x86/x64. Потянуло за собой достаточно много, поэтому отложил на сегодня. Но займусь этим чуть позже, нужно сперва разобраться с другой задачей, прежде, чем кидаться на амбразуру :-)

  5. Leonardo Leonardo говорит:

    День пятый.
    Проспал, так как поздно лег вчера. Опоздал в офис на полчаса. Но это не страшно.
    Сегодня думаю продолжить разделение на x86/x64 (32/64) и работу над стендом и тестами.

  6. Leonardo Leonardo говорит:

    День шестой.
    Проспал. Будильник на моей Xperia Mini решил меня не будить в назначенное время, за что ему огромное спасибо. Хорошо хоть, что мой «офис менеджер» меня вызвал на работу :-)
    Опоздал практически часа на полтора-два…
    Ладно, вперед, за работу, еще вагон и маленькая тележка… 😐

  7. Leonardo Leonardo говорит:

    День седьмой.
    С утра тупил ужасно.
    Зато под вечер разогрелся… Прет, прет, не остановить. Ваяю, ваяю, ваяю :-)

  8. Leonardo Leonardo говорит:

    День восьмой.
    Проспал опять на час с лишним. А все потому, что ночью смотрел хоккей — матч Россия-Канада, который наши умудрились выиграть 2:1 несмотря на явно худшую игру, чем у противника.
    Но да ладно, продолжаю проводить чистку и переделку на x86/x64 (32/64).

    • Leonardo Leonardo говорит:

      Решил собрать серверную часть под x64. Результат превзошел ожидания — все собралось, запустилось и работает так же, как и под x86! Уранах!!!

      • Leonardo Leonardo говорит:

        Но это, в смысле, x64-битная серверная часть, исполняющая x86-куски кода.
        А по плану сделать еще и исполнение x64-кода.

  9. Leonardo Leonardo говорит:

    День девятый.
    По плану обдумать планы :-)

    • Leonardo Leonardo говорит:

      Не очень удачный день, однако удалось запустить старый стенд. После определенных проблем он завелся успешно. В процессе были пофиксены: протектор на предмет DEP, эмулятор на предмет работы с FPU и FS контекстами, а также работа с флагами. В общем, ура, работает :-) Теперь еще куча дел.

  10. Leonardo Leonardo говорит:

    День 10.
    Хочу сперва до конца развести все зависимые классы на x86/x64 (32/64).
    Затем нужно заняться переделкой сетевой подсистемы и увеличением стабильности и подготовке x64-эмулятора.

    • Leonardo Leonardo говорит:

      Разсплиттил modules на 32 и 64, сделал генерацию ID модулей на основе MD5, сделал тестовый проект для библиотек, провел тестирование и настройку thread stack для x86.
      Продуктивный день, устал. Пока хватит.

  11. Leonardo Leonardo говорит:

    День 11.
    Планирую сделать thread stack для x64, протестировать его.
    А также сделать x64-ядро процессора, настроить и протестировать его на «песочнице».

    • Leonardo Leonardo говорит:

      Как и планировал, сделал x64 thread stack, протестировал его, все с ним в порядке. Однако на него ушло намного больше времени, чем я планировал изначально — практически весь день.
      Поэтому до x64-ядра дело не дошло, а я решил переделать x86_call_stubs на предмет произвольной вложенности поник на этом.

  12. Leonardo Leonardo говорит:

    День 12.
    Полдня протрахался с переделкой x86_call_stubs на вектор с динамическим размером. Блин оказался комом, пришлось откатиться и сделать пока на массиве фиксированной длины.
    Затем сделал на его основе x64_call_stubs, протестировал, все пучком.
    Вот сейчас сижу и думаю, стоит ли опять попробовать (уже иначе) динамический размер для call stubs…

    • Гол Гол говорит:

      Бл… пи… нах… Два слова из десяти понимаю. Но всё равно, удачи

      • Leonardo Leonardo говорит:

        Ничего, Сережа, ты сразу все поймешь, когда увидишь насколько это реально круто!
        Особенно весело будет хакерам, которые будут пытаться такое сломать — а ломать-то нечего :-) Прога работает, а сломать невозможно, так как она разорвана на части.

        • Leonardo Leonardo говорит:

          Я считаю защиту крутой, если я не могу ее сломать.
          Еще ни одной не видел такой :-)

  13. Leonardo Leonardo говорит:

    День 13.
    С утра болит башка, разваливается на части, блин. Состояние такое, как будто бухал вчера весь вечер, а это не так :-(
    В общем, только к полудню в офис приперся, кофейку шарахну и меня будет не остановить :-)
    Так, локальный планчик:
    1. сделать call_stubs с произвольной длинной стека
    2. сделать универсальный x86/x64 эмулятор процессора, на его базе сделать отдельные x86 и x64 — эмуляторы.
    3. обдумать план переделки сетевой подсистемы.

    • Leonardo Leonardo говорит:

      Блин, не могу удержаться — так хочется сперва сделать весь x64-ассемблер, который сейчас остался только в инструментах и в контекстах, чтобы забыть про него нафик.
      Короче, думаю, стоит сделать «прорыв» и реализовать x64-контексты, а потом уже вернуться к указанному выше плану.

      • Leonardo Leonardo говорит:

        Фу, только закончил переделку x86_cpu_context_helper и создание x64_cpu_context_helper. Очень непросто оказалось, уж поверьте мне… Едрена мать, я уже ненавижу x64 :-)
        Там половина команд криво работает 😐 Некоторые вообще выкинули…

      • Leonardo Leonardo говорит:

        Прорыв готов, x64-контексты реализованы и оттестированы.

    • Leonardo Leonardo говорит:

      Сделал call_stubs в двух вариантах, все хорошо.
      Провел тестирование на x86_call_stubs на предмет stack unwinding.
      Все просто замечательно! Небольшая корректива внесена и в x86 и в x64 unwind_to_esp.
      Сейчас поздно, тестирование x64 перенесу на следующий раз.

  14. Leonardo Leonardo говорит:

    День 14.
    1. Планирую завершить тестирование stack unwinding для x64, а затем продолжить план предыдущей недели —
    2. сделать универсальный x86/x64 эмулятор процессора, на его базе сделать отдельные x86 и x64 – эмуляторы.
    3. обдумать план переделки сетевой подсистемы.

    • Leonardo Leonardo говорит:

      Пля :-(
      Есть проблема с x64 SEH stack unwinding.
      Не происходит диспетчеризация исключения, так как обработчик идет по стеку и использует адреса возврата фреймов, а я их заменяю :-(
      Пилять, пилять, пилять! :-( Что же делать?

      • Leonardo Leonardo говорит:

        Локальный выход найден — небольшой хак в механизме обработки исключения в Windows.
        Однако это «подсаживает» нас на версию (а точнее, сборку, компиляцию) ntdll.dll. Пилять, пилять. А что делать? При текущей схеме это, пожалуй, самый простой вариант.

        • Leonardo Leonardo говорит:

          «Хак» работает и в релизе и в дебаге, все пучком.
          Один облом — зависимость от кода винды :-(

  15. Leonardo Leonardo говорит:

    День 15.
    Пробовал «кинуться» на эмулятор. Поник. Там много, быстро и просто сделать не получится, а сегодня что-то не прет :-(
    Думаю, займусь пока более простыми задачами.

    • Leonardo Leonardo говорит:

      Да, более простая задача заняла у меня весь день.
      Я проверял и доделывал assm-стабы для передачи управления в runtime.dll.
      Проверил x86/x64, все пучком. Теперь остается логику из stub_core перетащить в runtime.dll

      • Leonardo Leonardo говорит:

        Логику перетащил. Как только будет готова новая улучшенная версия протектора, тогда можно будет это полноценно тестировать.

  16. Leonardo Leonardo говорит:

    День 16.
    Пока думаю, в какой последовательности что лучше делать.

    • Leonardo Leonardo говорит:

      1. сперва разработал планчик работ
      2. затем приступил — сделал инструмент для помощи перехода в x64
      3. затем с помощью этого инструмента сделал x64 modules, x64 emulated-side, x64 native-side. Все компилируется, но пока работать не будет, так как еще не хватает жизненно-важных частей, относящихся к эмулятору и к защите (новому протектору и новым stub_core, а еще и новым меткам кода).

  17. Leonardo Leonardo говорит:

    День 17.
    Подхожу к задаче создания универсального эмулятора ядра процессора (x86/x64).
    Задача довольно сложная, поэтому делать нужно очень аккуратно и тщательно продумывать каждый шаг.
    С утра делал чистку кода, рефакторинг среды выполнения, подготовку к универсальному эмулятору.
    Теперь хочу вплотную им заняться.

  18. Leonardo Leonardo говорит:

    День 18.
    Ура! Сейчас буду начинать «прорыв» :-)
    Сегодня начинаю делать полный эмулятор.

  19. Leonardo Leonardo говорит:

    День 19.
    Пока не «остыл», хочу доделать эмулятор.
    Думаю, асилю сегодня.
    А у людей, между прочим, выходной…

    • Leonardo Leonardo говорит:

      Уранах!!!
      Я завел его! Пока, правда, заработал x86-вариант новой версии эмулятора.
      x64 еще пока не готов к запуску, нужно доделывать и создавать тесты, так как пока еще не готова клиентская сторона и сеть для работы с x64.
      Но самое главное, что оно зажило!
      Удивительный факт — ядро стало весить в 3 раза больше… 😐

  20. Leonardo Leonardo говорит:

    День 20.
    Настроение дерьмовое, спасибо жене. Но это не главное.
    Главное, что на сегодня я планирую следующее — сделать тесты для x64-ядра эмулятора и запустить его, попробовать потестировать.
    Далее, думаю, стоит заняться новым протектором для того, чтобы хотя бы пока без меток кода защищать новыми стабами файлы, очень хочется.
    А там — видно будет, может вообще все пойдет через жопу и не так как планируется.

    • Leonardo Leonardo говорит:

      Запустил x64-ядро не первые тесты. Проверил работу выборки, работу с памятью, кешами (вроде все норм с ними), работу с TIB, работу со стеком. Пока все пучком. Думаю, что ядро уже можно использовать в StubIt, однако, внутренности StubIt еще не готовы к тому, что использовать x64-ядро.

      • Leonardo Leonardo говорит:

        Самое главное — не забыть про SSE/SSE2/SSe3/SSSE3/SSE4… :-)

        • Leonardo Leonardo говорит:

          Асилил вечером MMX/SSE/SSE2/SSe3/SSSE3/SSE4_1/SSe4_2.
          Протестировал на x64, были свои тонкости, но все вроде бы пучком.
          Завтра наверное возмусь за переделку сетевой подсистемы, так как она совершенно не готова сейчас к x64.

  21. Leonardo Leonardo говорит:

    День 21.
    Думаю, сегодня стоит заняться перепроектированием сетевой подсистемы, так как та, что есть сейчас, не устраивает по ряду параметров.
    Еще хотелось бы протектор новый сделать, но это не быстро, так как потянет он за собой немало.

    • Leonardo Leonardo говорит:

      Занимаюсь сетью. Переделываю, заодно добавляю поддержку конфигурирования. Пока получается :-)

  22. Leonardo Leonardo говорит:

    День 22.
    Хочу сегодня разобраться с сетевой подсистемой. Вперед!

    • Leonardo Leonardo говорит:

      Весь день ковыряюсь с сетевой подсистемой. Переделываю.
      Много, сложно, запутанно. Да к тому же еще и №»;ый С++ накладывает свои ограничения. Ладно, разберусь, но сейчас уже устал.
      До завтра.

  23. Leonardo Leonardo говорит:

    День 23.
    Задача — продолжить и ,по-возможности, завершить переделку сетевой подсистемы.

  24. Leonardo Leonardo говорит:

    День 24.
    Все мучаюсь с объектами сетевой подсистемы.
    Пока никак не получается :-( Есть несколько проблем, которые не дают мне покоя.
    Нужно отдохнуть.

    • Leonardo Leonardo говорит:

      Все новые классы сетевой подсистемы созданы, теперь нужно все тщательно тестировать (на моках), смотреть, где что криво и шлифовать. А потом уже можно будет заменить старую сеть на новую.
      Но это уже не сегодня.
      Устал.

  25. Leonardo Leonardo говорит:

    День 25.
    Сегодня Пашка защитил диплом на отлично. Молодес!!!
    А я сидел на «очке» все утро и желал ему удачи. И немного доделывал новую сеть.
    В общем, планирую продолжить работу над новой сетью и, если получится, завершить ее.

  26. Leonardo Leonardo говорит:

    День 26.
    Основа новой сети сформирована. Сегодня планирую переключить проект на использование новой сети.

    • Leonardo Leonardo говорит:

      Удалось поднять новую сеть. Пусть «скрепя «№им паром», но она завелась.
      Ключевые проблемы две:
      1. это синхронизация удаления сетевых объектов саттелитов и объектов, которыми они управляют, при этом автоматическая разрегистрация сателлитов в сетевой инфраструктуре.
      2. generalization — путаница и неудобства с симуляцией интерфейсов (лишние dynamic_cast и методы приведения). Нужно будет проводить чистку.

  27. Leonardo Leonardo говорит:

    День 27.
    Краткий планчик на сегодня:
    1. сделать xml-configs
    2. сделать x64-версию сетевых объектов (кальку и доделку с x86)
    3. ввести нового сотрудника в курс дела :-)

    • Leonardo Leonardo говорит:

      1. начал делать xml-configs, все мешали, как могли, не успел
      2. x64-версии сетевых объектов сделал вечером, сейчас :-)
      3. нового сотрудника ввести в курс дела не успел, так как не хватило времени.

  28. Leonardo Leonardo говорит:

    День 28.
    Обучаю нового сотрудника. Непросто это.

    • Leonardo Leonardo говорит:

      Где-то около 17:00 удалось немого заняться проектом. Сделал небольшие потуги :-)

  29. Leonardo Leonardo говорит:

    День 29.
    С утра опять обучение нового сотрудника до 16 часов.
    Затем смог приступить к работе над xml-config-файлами.
    Первый черновой вариант готов, нужно будет его «причесать» и хорошенько потестировать.

  30. Leonardo Leonardo говорит:

    День 30.
    Собираюсь «причесать» xml-config, хорошенько их потестировать.
    Затем нужно будет пересмотреть план дальнейших действий.

    • Leonardo Leonardo говорит:

      Не нравится мне mxml, кривая херня! Криво работает с текстом в xml.

      • Leonardo Leonardo говорит:

        Но пока оставлю его. Пусть живет. Так как libxml — это еще более полный пиздетс.

    • Leonardo Leonardo говорит:

      Вечером-ночью немного доделывал криптографию.
      Мне нужная минималистичная симметрия (скорее всего AES128/256).

  31. Leonardo Leonardo говорит:

    День 31.
    Планирую довести AES128/256 до готового варианта (включая cipher modes, padding modes), потестировать. Это мне будет нужно для шифрации защищенных модулей и динамической заливке их на исполнитель по-требованию.

    • Leonardo Leonardo говорит:

      Полностью готов AES128/192/256, CM: ECB, CBC, CFB, OFB; PM: PKCS7, ANSI X.923, ISO 10126.
      Протестировал, сравнил с crypto++ и .Net.
      crypto++ — полностью (кроме randoms) совпадает,
      .Net — половина не реализована (не совпадают CFB, OFB, а в managed AES их просто нет!)

    • Leonardo Leonardo говорит:

      Начал переделку modules_manager 32/64 для разделения на per vm и per process, а также для добавления динамической загрузки модулей.

  32. Leonardo Leonardo говорит:

    День 32.
    1. Хочу доделать и протестировать «разделенные» modules_manager_32/64
    2. Продумать план дальнейших действий.

    • Leonardo Leonardo говорит:

      В процессе работы над modules_managers выявилась проблема, возможно, будет довольно ощутимая, особенно в свете поддержки динамической загрузки модулей с клиентов.
      Проблема такова — исполнитель имеет доступ к базе хранимых им модулей, а также ключей для их дешифрации. Здесь под модулем подразумевается вынесенные куски кода из оригинального модуля, предназначенные для удаленного исполнения. Так вот, каждый модуль сейчас идентифицируется hash-ем от тела оригинального модуля, а это значит, что ВСЕ различные вариации защиты одного и того же оригинального модуля будут неотличимы на исполнителе.
      Соответственно, вопрос №1 — нужно ли их различать и хранить? Вопрос №2 — если мы решаем различать и хранить, то как защититься от потенциального DDOS со стороны клиента (нам можно будет «засрать» базу модулей просто подстановкой другого идентификатора)? Кстати, проблема «засирания» базы модулей более широка — распространяется и на протектор и на клиента и не зависит от вопроса №1 (пропатчив протектор или клиента, можно будет зафлудить базу модулей, просто тупо оперируя идентификаторами).

      • Leonardo Leonardo говорит:

        Теперь более подробно по вопросу №1.
        Сперва следует рассмотреть возможные варианты возникновения разных модулей при одном и том же оригинальном модуле. Варианты таковы:
        1. при защите маркерами кода — возможность минимальна, только в случае, когда мы позволяем пользователю выбирать из установленных маркеров кода, какие защищать, какие — нет.
        2. при защите с помощью ручного указания регионов — всегда
        3. при защите с помощью map-files — всегда
        4. при защите с помощью автоматического анализатора — никогда, если не менялись настройки анализатора и его алгоритм, и всегда — при изменении чего-либо, а также вмешательстве человека для помощи в выборе.

        • Leonardo Leonardo говорит:

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

      • Leonardo Leonardo говорит:

        Хорошо, рассмотрим вариант, когда мы специально не делаем поддержку многих вариантов модулей для одного исходного на исполнителе. Какие при этом возникнут неудобства у клиентов? Что мы при этом теряем, что обретаем?
        Знаю точно, тогда будет проблема обновления хранимых модулей на новые версии, так как мы будем их перезаписывать. Это повлечет за собой проблему обновления модулей в работающем исполнителе — а это полная жопа, так как часть клиентов еще работает со старым модулем, а новые клиенты будут подключаться к новым модулям?

        • Leonardo Leonardo говорит:

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

      • Leonardo Leonardo говорит:

        Решение вопроса №2 вроде бы найдено:
        1. защита от флуда модулями из протектора — аутентификация вендора на исполнителе, учет количества залитых модулей, учет мощности залития. При превышении — временный или постоянный бан вендора. Разбан — за деньги.
        2. защита от флуда модулями с клиентов — использование подписанных айдишников модулей ключом вендора. На сервере проверка подписи, если валидна, то дать добро на заливку. Если нет — в сад.

  33. Leonardo Leonardo говорит:

    День 33.
    Вчера поздно вечером (ночью) и сегодня рано утром доделал разделенные modules_managers 32/64.
    Натолкнулся не небольшую проблему деструкции серверной стороны при завершении ее работы (это я починю попозже). Внимание следует уделить тем процессам, потоки которых находятся в этот момент на исполнении на сервере!
    Дополнительно, придумал новый более «гибкий» вариант контроля «гибели» клиентского процесса, а также временное прикрытие каналов связи, если не используется определенное (конфигурируемое) время. Это нужно будет делать совместно с восстановлением от аварийных ситуаций.

    • Leonardo Leonardo говорит:

      Хочу сегодня сделать HMAC, пригодится для проекта :-)

    • Leonardo Leonardo говорит:

      Нужно еще внимательно потестировать случай с LoadLibrary/FreeLibrary (и FreeLibrary + 1).
      Далее, наверное, следует заняться новым форматом модулей с поддержкой шифрации и подписи.

    • Leonardo Leonardo говорит:

      Так, обнаружилась проблема с NAT при установке обратного канала :-(
      Буду копать. Сегодня уже не могу :-(

  34. Leonardo Leonardo говорит:

    День 34.
    Проблема с NAT (и multiple endpoints) при установке обратного канала весьма ощутима, пока решение не найдено, будем копать 😐

    • Leonardo Leonardo говорит:

      Решение найдено. Пусть не самое лучшее, но найдено. И оно работает! Так что теперь нам NAT не страшен! :-)

    • Leonardo Leonardo говорит:

      Потестировали женой защищенного сапера :-)
      Тормозит. Не жена, сапер :-) Зато работает. Вопросы оптимизации трафика и времени отклика вынесем на второй план, позже. Очень актуален вопрос стабильности и восстановления после ошибок (переключения на резервные сервера). Это все впереди.

    • Leonardo Leonardo говорит:

      Решил сделать HMAC.
      Сделал, протестировал, работает отлично.
      Совпадает с .Net.

  35. Leonardo Leonardo говорит:

    День 35.
    Проработка плана дальнейших действий.

    • Leonardo Leonardo говорит:

      Я сегодня совершенно ничего не сделал.
      Огромное спасибо за это моей жене. Так держать!

  36. Leonardo Leonardo говорит:

    День 36.
    Весь день проектируем интерфейсы пользователя для протектора и менеджера лицензий.

  37. Leonardo Leonardo говорит:

    День 37.
    Работаем над интерфейсом.
    Есть проблемы реализации, будем решать.

    • Leonardo Leonardo говорит:

      Сегодня пришли «новости» от «конкурента» — Guardant.
      Перевели свои ключи Guardant Code на новую аппаратную платформу.
      Походу, старые тормозили вообще как черти :-)

    • Leonardo Leonardo говорит:

      Вечером сделал другой вариант вычисления module_id при защите, так как старый накладывал много ограничений. Потестировал, все тип-топ.

  38. Leonardo Leonardo говорит:

    День 38.
    Наконец-то распараллеливаемся.
    Брат будет делать интерфейсы пользователя на C# + вспомогательный функционал на C#.
    Я буду продолжать работу над ядром (С++, C#) и другими сложными вещами.

    • Leonardo Leonardo говорит:

      Сегодня решил разработать новый формат хранения модулей с поддержкой шифрации и цифровой подписи данных, а также 32/64 битности.

      • Leonardo Leonardo говорит:

        Формат версии v.1.0 разработан «на бумажке». Теперь его нужно реализовать.
        Сегодня сделал криптоконверт, проверил его работоспособность. Все пучком.
        Еще сегодня долго пробовал способ №2 для решения проблемы работы сети через NAT. Способ более правильный, красивый, но сложный и более медленный, чем мой.

        • Leonardo Leonardo говорит:

          В общем, как оказалось, способов более нет. Только №1 и №2. Пока пользую №1. Но в будущем может прийдется переходить на №2. Но не сейчас.

  39. Leonardo Leonardo говорит:

    День 39.
    Нужно реализовать новые форматы модулей на С++. Протестировать.
    Затем нужно будет сделать то же самое на C# и дополнительно написать на C# еще и криптопакет и хорошо потестировать.

    • Leonardo Leonardo говорит:

      Да, было бы неплохо доделать работу на C# с map-files для интерфейса.

    • Leonardo Leonardo говорит:

      Сделал новый формат модулей на C++. Протестировал, все практически тип-топ, нужно наверное немного доделать криптопакет, чтобы он содержал еще и длину исходных данных для проверки валидности дешифрации.
      Также прийдется сделать еще и modules_credentials для хранения ключей подписи и шифрации.

      • Leonardo Leonardo говорит:

        Доделал криптопакет.
        Набросал module_credentials. Нужно подумать, как сделать их получше.

      • Leonardo Leonardo говорит:

        Да, как и предполагалось, отвалились все старые модули.
        Теперь для тестов нужно будет перезащищать все.
        Но это все ерунда, так как для проверки работы шифрованных модулей «в бою» нужно еще реализовать хранилище credentials.

  40. Leonardo Leonardo говорит:

    День 40.
    1. Доделать работу с map-files для возможности использования в интерфейсе
    2. Допроектировать и доделать module_credentials
    3. Продумать как и реализовать хранилище modules credentials совместно с modules stores.

    • Leonardo Leonardo говорит:

      Доработал map_file — теперь он достаточен для отображения дерева в интерфейсе.

      • Leonardo Leonardo говорит:

        Достаточен-то достаточен, однако нужно продумать, как лучше его отображать в интерфейсе — скорее всего в виде дерева namespaces и в каждом — списочек методов.

  41. Leonardo Leonardo говорит:

    День 41.
    Что-то мне подсказывает, что сегодня день будет занят разработкой пользовательских интерфейсов…. :-( Хотя по планам совсем другие, более важные работы.

    • Leonardo Leonardo говорит:

      Весь день с интерфейсом. Тоже непросто, но получается понемногу.
      Уже даже клево так отрисовывается map-file :-)
      Короче, на сегодня хватит вже.

  42. Leonardo Leonardo говорит:

    День 42.
    Главное — начать… :-)

    • Leonardo Leonardo говорит:

      Начал. Разобрался с hex-редакторами в Grid и TreeList.
      Подкорректировал работу с map-file (а то обрезались некоторые имена и многие не отображались).

    • Leonardo Leonardo говорит:

      Доделал С++ module_credentials.
      Доработал формат их хранения в виде файла.
      Потестировал, все пучком.

  43. Leonardo Leonardo говорит:

    День 43.
    Заснул где-то около 4:30 утра, проснулся в 8:30 — посмотрим, что получится сегодня сделать… 😐

    • Leonardo Leonardo говорит:

      А получается все очень даже неплохо — начал проработку нового варианта защиты, натолкнулся на три ключевые проблемы:
      1. DllMain/TLS callbacks (Windows-family limitations)
      2. reading of code (+ flag ALLOW_CODE_READ)
      3. uncontrolled entry points — тут найдено ОБАЛДЕННОЕ красивое решение для 32-битной винды, для 64-битной нужно будет еще проработать.

      Дополнительно проработал вопрос относительно содержимого файла лицензии, но еще не до конца, так как мозг сегодня ниочень соображает (после 4 часов сна-то)…

  44. Leonardo Leonardo говорит:

    День 44.
    Очень хочу попробовать реализовать тот метод перехвата uncontrolled entry points, что нашел вчера (пока для 32-битной винды), но потом нужно и для 64-битной.

  45. Leonardo Leonardo говорит:

    День 45.
    Вчера сделал первую реализация «нового» метода перехвата uncontrolled entry points. Однако сразу же натолкнулся на пару проблем. Одна — мелочь, автоматически уйдет с новым протектором, вторая — может быть ощутимой. Истинную причину я еще не выявил, но, как мне кажется, сегодня разберусь.

    • Leonardo Leonardo говорит:

      Тут два пути:
      1. разобраться в истинной причине проблемы при текущей реализации- возможно будет несложно ее обойти
      2. реализовать немного по-другому, но тут прийдется писать на ассме кусочки…

      • Leonardo Leonardo говорит:

        1. Итак, с причиной разобрался. Дело было в «перехвате» SEH-ов моим кодом (C++ компилер генерировал защиту для local objects unwinding). Довольно просто с ней справился. Затем, после тестирования x86-версии, сделал x64-версию, также проверил ее доступность для разных версий 64-битных виндов, все ок!
        2. Пока делать так не стал, потому-что вполне приемлимо работает первый метод.

    • Leonardo Leonardo говорит:

      Да, сегодня с утра сдаем отчеты. А что делать — тоже надо 😐

      • Leonardo Leonardo говорит:

        Ага, а под вечер много времени ушло на работу над пользовательским интерфейсом.

  46. Leonardo Leonardo говорит:

    День 46.
    Планчик на сегодня:
    1. набросать алгоритмы нового протектора
    2. доделать module:
    2.1. переделать хранение features (убрать из feature callback)
    2.2. добавить один callback к module
    2.3. добавить имя к региону кода
    2.4. сделать таблицу строк при сохранении и загрузке
    3. продумать связь с API и callback.

    • Leonardo Leonardo говорит:

      Не хочу отмазываться, но что-то сегодня моск ваще тугой :-(
      Набросал алгоритм нового протектора на бумажка.
      Модуль пока доделывать не стал. Решил попробовать старый протектор доделать немного. В общем, пока поник 😐

  47. Leonardo Leonardo говорит:

    День 47.
    Собираюсь доделать старый протектор для защиты по-новому. Уже достаточно немало сделал вчера, однако времени не хватило довести до приемлимого результата, так как было уже полпервого ночи.

    • Leonardo Leonardo говорит:

      Протектор доделал, но не в полном объеме.
      Кстати, сразу же выявились проблемы, связанные как с защитой модуля целиком, так и непосредственно с новым методом защиты (проблема «разорванного» импорта).
      Дополнительно сделал сохранение module_header, а не только module_id, проверил, все пучком.
      Полдня пытался доработать существующую реализацию x86 native-стороны для полной поддержки защищенных по-новому модулей. Немного кривовато сделал, буду еще дорабатывать и корректировать. Однако, удалось запустить на исполнение.
      Сейчас проблема где-то в реализации ALLOW_CODE_READING для модуля, возможно, связана с кешами.

  48. Leonardo Leonardo говорит:

    День 48.
    Собираюсь разобраться с проблемой в ALLOW_CODE_READING. Вперед.

    • Leonardo Leonardo говорит:

      Есть, «№;ять! Оно заработало!!!
      Сегодня впервые я защитил программный код «целиком» — в сапере не осталось ни одной инструкции кода, только данные!!!
      Результат превзошел ожидания! Я очень очень очень доволен!!!

      • Leonardo Leonardo говорит:

        «№;ять 2!!! Корова заработала!!!
        После корректировки проблемы с FPU/XMM контекстами Корова заработала!!! Уранах! Еще потестирую!
        А то шибко тормозит на дебаге с логгированием.

    • Leonardo Leonardo говорит:

      Как оказалось, проблема была совершенно не в ALLOW_CODE_READING, а исключительно в том, что нельзя защитить кое-какие данные, которые находятся в кодовой секции… :-)

  49. Leonardo Leonardo говорит:

    День 49.
    Очень хочу поиграть в «полностью защищенную Корову»…
    Для этого нужно собрать актуальный релиз с отключенным логгированием.

    • Leonardo Leonardo говорит:

      Короче, в Корову поиграть не получится из-за мегатормозов, связанных с тем, что «полностью вынесенный код» работает с очень большим количеством данных (текстуры, геометрия, звук и т.д.), что невероятно грузит кеши на моем эмуляторе, постоянно вызывая в них cache miss, что приводит к постоянному и огромному траффику :-( Поэтому тормозит, даже на локалхосте.

  50. Leonardo Leonardo говорит:

    День 50.
    Занимаемся разработкой пользовательского интерфейса, прорабатываем новые пункты, ловим ошибки в реализованных.

    • Leonardo Leonardo говорит:

      Пробная защита «Магического лабиринта» по схеме защиты «полного» модуля выявила небольшую багу в ядре и протекторе, связанную с сохранением и загрузкой релоков. Это было быстро исправлено, однако «Лабиринт» все равно не хотел работать.
      После недолгих колдований было выявлено, что у него опять в код попали данные, которые нужны извне (в его частном случае это были таблицы интерфейсов для DirectInput).
      Пришлось обойти это регион, заново защитить. После этого оно завелось, но дождаться даже главного меню мне так и не удалось — уж слишком сильно тормозит… А все потому, что нечего защищать так жоско :-)

  51. Leonardo Leonardo говорит:

    День 51.
    Время собрать мысли в кучку и еще раз подумать над вектором дальнейших действий.

    • Leonardo Leonardo говорит:

      Первое, что хочу попробовать — это работу без call_stubs. Должно работать без проблем.
      Второе — нужно изменять формат модуля, есть много, что доработать.

      • Leonardo Leonardo говорит:

        Работа без call_stubs происходит отлично! Единственный небольшой минус по сравнению со старым способом — это несколько большее время обработки перехвата.

  52. Leonardo Leonardo говорит:

    День 52.
    Разбираюсь с проблемой защиты dll-модулей, проблема была банально в старом протекторе :-)
    Затем стал анализировать и думать, можно ли и как обойти проблему TLS/DllMain при защите модуля целиком. Мне кажется, можно придумать подходящие решения.

    • Leonardo Leonardo говорит:

      Собираюсь разработать и реализовать механизм отложенного исполнения TLS/DllMain.

      • Leonardo Leonardo говорит:

        If a DLL declares any nonlocal data or object as __declspec( thread ), it can cause a protection fault if dynamically loaded. After the DLL is loaded with LoadLibrary, it causes system failure whenever the code references the nonlocal __declspec( thread ) data. Because the global variable space for a thread is allocated at run time, the size of this space is based on a calculation of the requirements of the application plus the requirements of all of the DLLs that are statically linked. When you use LoadLibrary, there is no way to extend this space to allow for the thread local variables declared with __declspec( thread ). Use the TLS APIs, such as TlsAlloc, in your DLL to allocate TLS if the DLL might be loaded with LoadLibrary.

  53. Leonardo Leonardo говорит:

    День 53.
    Только что пришел в офис. Это все жена, не дает мне нормально заниматься делами…

    • Leonardo Leonardo говорит:

      Сегодня весь день занимался изучением тонкостей TLS callbacks/DllMain/EP.
      Весьма и весьма интересные результаты…

  54. Leonardo Leonardo говорит:

    День 54.
    Минипланчик:
    1. завершить исследование тонкостей TLS callbacks/DllMain/EP
    2. реализовать отложенное исполнение и перехват TLS callbacks/DllMain/EP на основе собранной информации.

    • Leonardo Leonardo говорит:

      Целый день ловлю deadlocks… Скажу я вам, как же в винде это через «№;пу… блин…

      • Leonardo Leonardo говорит:

        Анализ и практика подсказали мне, что можно относительно безболезненно защищать логику, которая срабатывает на DLL_THREAD_DETACH, но с ограничением того, что это должны быть НЕ мои потоки (ну, то есть потоки, которые не относятся к StubIt Runtime), иначе получим снова лочку или синьку.
        Однако, вчера при тестах, код на DLL_THREAD_DETACH отрабатывал успешно, а вот затем при DLL_PROCESS_DETACH все выпадало в синьку. Надо бы потестить…

  55. Гол Гол говорит:

    Протестил модифицированный защищённый «Сапёр». Пашет, зараза. Тормозит, но пашет! Санёк, молодца!

    • Leonardo Leonardo говорит:

      Тормозит, так как защищены циклы — в одном варианте «Сапер» защищен «полностью» — то есть абсолютно весь код вынесен из него на сервер, поэтому он постоянно «бегает» на клиент за выполнением WIN API-функций, во-втором варианте защищен WinMain (который включает в себя message loop) — что тоже заставляет «Сапер»а постоянно бегать туда-сюда.
      Зато третий вариант, где защищен код без циклов (вызов справки по F1) — работает без каких-либо тормозов!

      Так что — POC готов, а для реального использования буду рекомендовать защищать куски кода, которые содержат минимум циклов (переходов) на клиента и обратно, а также которые оперируют относительно небольшими объемами данных (не то, что «Корова», которая текстуры туда-сюда швыряла…)

      В любом случае — спасибо за уделенное тестам время! :-)

  56. Leonardo Leonardo говорит:

    День 55.
    Вы будете смеяться, но жена меня уговорила провести сегодня день вместе с ней у воды — поехать купаться и загорать. Так что не обессудьте…
    Вот пока занимаюсь проектом, но что-то мне подсказывает, что скоро позвонит жена… :-)
    … Может, вечерком получится еще позаниматься.

    • Leonardo Leonardo говорит:

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

    • Leonardo Leonardo говорит:

      Вернулся с пруда, теперь опять за дело.

    • Leonardo Leonardo говорит:

      Да, вечерком получилось достаточно плодотворно позаниматься на тему уточнения деталей и разработки вариантов отложенного исполнения TLS/DllMain для модулей, защищенных целиком.
      Первый, черновой вариант готов, буду прорабатывать его дальше, так как достаточно много тонкостей…

  57. Leonardo Leonardo говорит:

    День 56.
    Вчера так ничего и не сделал по проекту :-(
    Занялся другим делом и на весь день, теперь жалею об этом.
    Но ладно, главное, что сегодня я опять в строю и буду делать то, что должен был вчера.
    А именно — завершить наконец-то эту тягомотину с отложенным исполнением TLS/DllMain.

  58. Leonardo Leonardo говорит:

    День 57.
    Уже набросал на бумаге вариант отложенного решения с TLS.
    Очень хочу сегодня его реализовать. Однако, прежде нужно отладить перехват TLS, который вызывал у меня некоторые проблемы в прошлый раз.

    • Leonardo Leonardo говорит:

      Решил и сделал вспомогательный инструмент, который «прошивает — устанавливает TLS callback на нужную мне функцию. Очень нужен, так как автоматически при билде все сделает, а то руками я уже замотался…

    • Leonardo Leonardo говорит:

      Перехват TLS я отладил, вывод — я неверно выбрал вариант перехвата множественных TLS callbacks, поэтому решено было пока отказаться от этого и оставить поддержку единственного TLS callback.
      Была и вторая проблема — из-за того, что TLS hook от EXE приходил позже, чем происходила деинициализация StubIt Runtime. Сделал обходной маневр.
      Работает.

      Затем стал реализовывать выбранный вариант отложенного выполнения TLS/DllMain. Весь день с ним «мучался», так до конца и не довел, есть там все же заморочки…

    • Leonardo Leonardo говорит:

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

  59. Leonardo Leonardo говорит:

    День 58.
    Планирую довести до разумного завершения, протестировать, отладить вариант отложенного исполнения TLS/DllMain. Ибо уже за… :-)

    • Leonardo Leonardo говорит:

      Ну да, ну да…
      Да, кстати, уже почти работает, пока нашел только две основные проблемы — конфликт с MS VCRT и еще недостаток синхронизации потоков на общем ресурсе.
      Весь день переделывал проекты, добавлял в них static-конфигурации.
      Но они не будут собираться без статической сборки сетевой подсистемы, которую планирую сделать сегодня.

  60. Leonardo Leonardo говорит:

    День 59.
    1. разобраться с синхронизацией потоков при отложенном исполнении кода TLS/DllMain.
    2. сделать static-build сетевой подсистемы.

    • Leonardo Leonardo говорит:

      Синхронизацию сделал. Думаю, будет работать правильно.
      Теперь нужно заняться сетью.

    • Leonardo Leonardo говорит:

      Сделал первые пробные static-сборки сетевой подсистемы и модулей StubIt.
      Пока собирается без проблем, зависит только от модулей винды. Это гут.
      Еще куча работы по тонкой настройке, а также впереди тестирование и отладка. Но не сегодня, сегодня уже не могу, устал, тяжелый денек…

  61. Leonardo Leonardo говорит:

    День 60.
    Хочется все-таки доделать статические сборки и протестировать их, так как наверняка что-то будет работать не так, как с динамическими сборками.

    • Leonardo Leonardo говорит:

      Почти все static-сборки сделал. О, как же долго линкуются x64-сборки, аж по полчаса, и это на 8-ядерном Core i7…
      Ну да ладно, самое главное — что как только сделал x86 static-сборки StubIt Runtime & Server, то кинулся просто тупо запустить старый тест на предмет отложенного исполнения TLS/DllMain.
      И каково было мое удивление — даже ничего не упало, ОНО ЗАРАБОТАЛО!!!
      Такое бывает редко, чтобы с первого раза заработало… Но так оно есть.
      Скорее всего там будут еще какие-нибудь баги и проблемы, для этого нужно очень тщательно тестировать, но это уже потом.

      • Leonardo Leonardo говорит:

        Да хрен ли толку, линковка все равно производится в одно ядро. Тупые мелкософты :-) не могут нормально линкер распараллелить.

      • Leonardo Leonardo говорит:

        Да, заработало, но как-то все же через раз, в общем, нужно тестировать и отлаживать, искать, так сказать, баги.

    • Leonardo Leonardo говорит:

      Все статические сборки готовы, включая и x86 и x64.
      Также настроены все конфигурации и для корректной жизни с dynamic-сборками.
      Остается тестировать и ловить баги.

  62. Leonardo Leonardo говорит:

    День 61.
    Почему подглючивают статические сборки я, кажется, догадываюсь.
    Скорее всего дело в последовательности инициализации (деинициализации) статических объектов. Буду копать.

    • Leonardo Leonardo говорит:

      Нашел багу нах — связана с юникодом. Бага небольшая, поправил, проверяю дальше.

      • Leonardo Leonardo говорит:

        Да, была еще проблема деинициализации сетевой подсистемы — опять же, напоролся на лочку потоков. Пришлось править код деинициализации сети 😐

  63. Leonardo Leonardo говорит:

    День 62.
    С первым днем последнего месяца лета…
    Две задачи, которые я бы хотел сделать сегодня:
    1. сделать старый новый протектор так, чтобы корректно защищал несколько TLS. Да, я раньше отказался от этого, но это пока единственная недоработка по теме TLS/DllMain.
    2. переделать «осмысленный» тест для проверки корректности вызовов TLS/DllMain. Плюс защитить whole все EXE и DLL модуля и проверить корректность работы отложенного исполнения и тестов.

    • Leonardo Leonardo говорит:

      1. доделал
      2. начал — прервали на разбор с GUI

      Разбирался почему .NET GUI не работает под чистой Windows XP SP2.
      Проблемы было две:
      1. нужно ставить .Net Framework v.2.0
      2. не будет работать по сети, пока не подпишешь сборки.

      Теперь собираюсь продолжить тестирование и отладку отложенного исполнения полностью защищенных модулей.

  64. Leonardo Leonardo говорит:

    День 63.
    Разберусь детально в чем проблема теперь. Опять возникает лочка. Боюсь, это уже будет еще одним ограничением на модули, которые можно защищать целиком. Ладно, посмотрим.

    • Leonardo Leonardo говорит:

      Что-то я, пожалуй, делаю не так… Либо лочка, либо гонка, а нормальной стабильной работы пока не удается получить при отложенном исполнении… :-(

      • Leonardo Leonardo говорит:

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

  65. Leonardo Leonardo говорит:

    День 64.
    Всю ночь, весь день — дождь. Мутно. Грустно. Скучно.

    • Leonardo Leonardo говорит:

      Хочу переделать идентификаторы (усилить до 256 бит) и усилить их подпись.
      Проблему синхронизации отложенного исполнения пока решил отодвинуть по времени — проблема существенная, но решать ее лучше совместно с добавлением логики лицензий.

      • Leonardo Leonardo говорит:

        сделал и протестировал новые хеши и шмаки:
        SHA1/SHA2-224/SHA2-256/SHA2-384/SHA2-512
        HMAC-SHA1/HMAC-SHA2-224/HMAC-SHA2-256/HMAC-SHA2-384/HMAC-SHA2-512

        можно их теперь использовать для генерации и подписи идентификаторов.

      • Leonardo Leonardo говорит:

        Теперь по плану переделать формат модулей. Улучшить, так сказать…

  66. Leonardo Leonardo говорит:

    День 65.
    Что-то как-то все очень вяло с утра… Кофейку-бы.

    • Leonardo Leonardo говорит:

      День прошел впустую — ничего не сделал по проекту :-(
      Дерьмово как-то на душе, почти как на улице…

  67. Leonardo Leonardo говорит:

    День 66.
    Попробуем наверстать упущенное.
    Планирую доделать (переделать) modules 32/64 с учетом того, что теперь в фичах нет callbacks, а callback только один на модуль — в *_stub_info при защите, а также то, что теперь регионы кода можно именовать. Плюс небольшой рефакторинг в процессе. Боюсь, что все это потянет за собой модификацию старого протектора.

  68. Leonardo Leonardo говорит:

    День 67.
    Нужно отбросить все, отвлекающее от дела, сделать (переделать) максимально просто и эффективно modules 32/64, так как я в День 66 что-то не очень-то их сделал :-(

    • Leonardo Leonardo говорит:

      Сперва набросок версии v.1.1 модулей на «бумаге» — то есть в Excel :-)
      А потом уже реализация. Ибо можно просто запутаться.

      • Leonardo Leonardo говорит:

        Довольно много переделал по модулям, теперь нужно тестировать. Сегодня уже не успеваю.

  69. Leonardo Leonardo говорит:

    День 68.
    Вчера прошел впустую — ничего не смог сделать по проекту, плохо себя чувствовал.
    Сегодня планирую «встать в строй» — продолжить работу в штатном порядке. Поехали.

  70. Leonardo Leonardo говорит:

    День 69.
    Мало спал — работал ночью над дальнейшим планом действий.
    Обдумывал вариант автоматической защиты на основе анализа профилирования приложения.
    Весь день сегодня уделяю анализу существующих профилировщиков, чтобы подобрать наиболее подходящее для StubIt решение.

  71. Leonardo Leonardo говорит:

    День 70.
    Говорят, я CUDесник… :-)

    • Leonardo Leonardo говорит:

      Мою видеокарту можно выкинуть на помойку :-)
      Для изысков требуется минимум GTX 460. Подумаю, может куплю.

      • booter говорит:

        Только лучше на базе Fermi, а то с CUDA < 2.0 много секса по выравниванию IO и размещения данных, а если без этого — вся производительность псу под хвост.

        • Leonardo Leonardo говорит:

          В GTX 460 Compute Possibilities v.2.1, соответственно, она готова для испольнования с CUDA v.4.0.

          Да, если ты работал уже с CUDA вживую — есть несколько вопросов. Больше всего интересует обратная связь GPU->CPU, а именно — callback из GPU-thread к CPU-thread.

          • booter говорит:

            Вживую не работал, но могу дать контакт знающего чела. Вообще callback из GPU — это очень дорого, лучше пакетно обрабатывать и пакетно выгружать.

  72. Leonardo Leonardo говорит:

    День 71.
    Очень многое хочется сделать — в плане на текущий момент пунктов 15, не меньше.
    Однако самое главное — это разобраться в какой последовательности это лучше делать, возможно, без чего-то можно сейчас обойтись, возможно, что-то лучше вообще не делать.

    • Leonardo Leonardo говорит:

      Решил в первую очередь заняться модулями и криптографией на C# (для нового протектора).

  73. Leonardo Leonardo говорит:

    День 72.
    Продолжаю разработку криптографических классов для использования в модулях и лицензиях на C#.

    • booter говорит:

      Дяди из куда-надо до тебя доберутся. Этож лицензируемый вид деятельности.

      • Leonardo Leonardo говорит:

        Нипыс, есть аргументы:

        1. использование криптографических средств не лицензируется (в противном случае пришлось бы каждому сайту с HTTPS бегать за лицензией)
        2. насколько я знаю, лицензируются только собственные разработки криптоалгоритмов, я же использую исключительно открытые общеизвестные реализации, такие как AES, SHA2 и т.п.
        3. даже если будет какая-либо претензия по поводу лицензирования — это всего лишь вопрос времени, и не таких уж больших денег. Так что все решаемо :-)

        • booter говорит:

          http://cryptopro.ru/forum2/Default.aspx?g=posts&t=1347 — во чего умные люди говорят. А насчет времени и денег… будем надеяться, когда появится одна лицензия на все, потому что сейчас все попытки разработать что-то на базе криптосредств заканчиваются именно упиранием в лицензию на разработку и словами «нереально».

          • Leonardo Leonardo говорит:

            Максик, спасибо, я почитал, грамотное объяснение в статье. Однако на текущий момент, как я вижу, никого никто за нелицензируемое использование не прессует.

      • Leonardo Leonardo говорит:

        А «большие дяди из кое-откуда» давно уже следят за мной, так что я особой разницы не почувствую, наверное :-) :-) :-)

    • Leonardo Leonardo говорит:

      Достаточно быстро идет «отображение» готовых классов С++ на C#. Уже достаточно много «отобразил», думаю, что завтра завершу портирование модулей на C#.
      Нужно только будет очень внимательно и аккуратно потом их тестировать, особенно совместную работу C#->C++

  74. Leonardo Leonardo говорит:

    День 73.
    Как говорится, главное начать…
    Вот интересная ассоциация (думаю, могут быть моими потенциальными клиентами) — Русский Щит (http://rsnw.ru)
    Но это чуть позже, когда поднимем тестовый сервер для демонстрации возможностей StubIt.
    А сейчас — херачить, херачить и еще раз — херачить!!!

    • Leonardo Leonardo говорит:

      У меня юбилей — номер ревизии в SVN = 4444 :-)

    • Leonardo Leonardo говорит:

      Сделал сегодня достаточно много по лицензиям на C#.
      Разработал много классов, даже успел license_credentials.
      При этом переделывал и классы для modules, так как у них вместе с лицензиями есть кое-что общее.
      В общем, на сегодня хватит, так как замотался уже.
      Доделывать и тестировать — завтра.

    • booter говорит:

      Щит занимается аудио-видео, к ним лучше с ДРМ ходить. :)
      Тебе сюда — http://www.appp.ru/

      • Leonardo Leonardo говорит:

        Максик, шож ты мне за ссилька дал — там же просто пиздетс какая-то разруха :-)

        • booter говорит:

          Ну вот такие они, антипираты, странные.

          • Leonardo Leonardo говорит:

            Они наверное думают, что пираты — это как черти и что их можно заклинаниями и запугами как-то победить :-) А вот хрен там!

  75. Leonardo Leonardo говорит:

    День 74.
    Вчера не работал — так как не выспался. Сегодня более-менее, теперь снова за дело!

    • Leonardo Leonardo говорит:

      Весь день + полдня в воскресенье занимаюсь проработкой вопросов, связанных с лицензиями и модулями и поддержкой всех удобств для вендоров. Основная проблема в том, что два ключевых удобства для вендора противоречат друг другу технически :-(
      Но ничего, я найду выход, ну или вход, на всякий случай :-)

  76. Leonardo Leonardo говорит:

    День 75.
    Проработка тонкостей, связанных с лицензиями и модулями и пользовательским интерфейсом вендора.
    После выявления всех деталей и проработке плана можно продолжить реализацию модулей и лицензий на C#.

  77. Leonardo Leonardo говорит:

    День 76.
    Сделал первый вариант файла лицензий (классы для работы с ним на C#), а также license.credentials. Потестировал. Работает. Кое-где кривовато, но для первого варианта вполне достаточно.

    • Leonardo Leonardo говорит:

      До часу ночи переносил проработку вопроса лицензий и продуктов в документ. Аж 8 листов A4 уже накатал. Устал, спать пошел.

  78. Leonardo Leonardo говорит:

    День 77.
    Продолжаю эпопею лицензий, модулей, исполнителей, интерфейса вендора…

    • Leonardo Leonardo говорит:

      На почве лицензий ушел в дебри исполнителей на основе FPGA. Есть идея работоспособного варианта — надо пробовать.

      • Leonardo Leonardo говорит:

        Еще вечером пробовал смотреть подходящие варианты на основе микроконтроллеров или микропроцессоров. В общем, с ними все довольно печально — лично я не смог пока найти нормального варианта, у которого на борту достаточно FLASH и RAM и у которого есть доступ к внешней памяти DDR. Есть с SDRAM, но это может быть проблемой.

  79. Leonardo Leonardo говорит:

    День 78.
    День начинаю с создания списка открытых (не до конца ясных) вопросов относительно лицензий, модулей, исполнителей. Ох, непросто это, как оказалось.

    • Leonardo Leonardo говорит:

      Все тщательно продумываю, схема работы становится все более и более четкой. Появляются некоторые предпосылки для патентов.

  80. Leonardo Leonardo говорит:

    День 79.
    Еще не все до конца ясно с лицензиями. Уже многое, но не все.
    «Все выше, и выше и вы-ы-ы-ше…»

  81. Leonardo Leonardo говорит:

    День 80.
    Планирую доделать лицензии и модули на C#. А также потестировать их.
    После многодневных раздумий я все же пришел к выводу, что тело лицензий нужно тоже шифровать, а не подписывать.

    • Leonardo Leonardo говорит:

      Набросал пока только класс для работы с серийными номерами. Но он еще сыроват, нужно доделать, потестировать и переделать signed_id для идентификаторов.

  82. Leonardo Leonardo говорит:

    День 81.
    Как ни странно, но буду продолжать то, что делал вчера — лицензии и модули на C#.

    • Leonardo Leonardo говорит:

      Удалось только завершить работу с серийными номерами на C# (причем с произвольным алфавитом и произвольной длиной ключа).

  83. Leonardo Leonardo говорит:

    День 82.
    Придерживаюсь старого плана. Лицензии и модули на C#.

    • Leonardo Leonardo говорит:

      Весь день проковырялся с id. Самыми разными. И застрял под вечер на странном глюке криптографии в .Net. Нужно разобраться, но сегодня уже поздно.

  84. Leonardo Leonardo говорит:

    День 83.
    Вот-вот продолжу вчерашнюю работу. Нужно только сперва разобраться с криптографией.
    Пока решил вкратце посмотреть как производится отладка на CUDA. Еще пока не разобрался.

    • Leonardo Leonardo говорит:

      Итак, первое более-менее близкое знакомство с CUDA меня разочаровало.
      Для того, чтобы для моих проектов свободно использовать эту технологию, CUDA нужно сперва преодолеть две ощутимые проблемы:
      1. кривоту при работе с C++ кодом (так как нет его нормальной поддержки — все как-то ректально)
      2. реальный механизм callbacks из GPU thread в CPU thread с ожиданием события от CPU thread (для продолжения работы).

      Особенно сильно огорчили ограничения C++ в текущей версии CUDA C (v.4.0) — ВСЕ __device__ методы должны быть РЕАЛИЗОВАНЫ в *.h-файлах и будут корректно вызываться ТОЛЬКО из кода, который делал include таких файлов. Одно только это влечет за собой ПОЛНОЕ пересокоебие всего готового кода, который я хотел портировать на CUDA.
      Дополнительно к этому я так и не смог отладить вызовы виртуальных функций. Компилятор вроде бы их понимает, но тоже как-то ректально. Короче, пока CUDA для StubIt не применима, увы :-( Хотя ее RISС-овые ядра имеют ISA, которое вполне готово для исполнения кода StubIt.

      Еще поковыряюсь с CUDA «на досуге», если ничего более не накопаю — прийдется забросить ее в дальний угол до лучших времен…

      • Leonardo Leonardo говорит:

        Да, еще меня очень порадовало наличие ДВУХ ассемблеров в ISA CUDA :-)
        Низкоуровневый — SASS (собственно на нем все и программируется, длина инструкции фиксирована и равна 8 байтам) и высокоуровневый PTX (фактически, это макроассемблер — одна его инструкция может занимать немалое количество инструкций SASS) для упрощения программирования на ассемблере вручную.

    • Leonardo Leonardo говорит:

      С криптографией разобрался — дело в том, что мелкие и мягкие как всегда молодцы :-) У них все через заднее крыльцо.
      Сначала создаешь класс SymmetricAlgirithm через, например, Aes.Create(), а для шифрации нужно создать криптор из него: symmetric.CreateEncryptor() и пользовать.
      Так вот, практика показала, что при любом измении параметров SymmetricAlgirithm, будь то IV или Key или Mode, Padding — обязательно нужно создавать новый криптор. Если пользовать старый — то произойдет рассинхронизация с SymmetricAlgirithm.

      Спасибо, мелкие и мягкие, вы как всегда на высоте! Кривее придумать можно только стараться…

  85. Leonardo Leonardo говорит:

    День 84.
    Почему-то ночью на меня нападают озарения и я хватаю в руки ручку и бумагу и начинаю ваять… Вот, наваял до трех ночи аж 4 листа А4 клевых мыслей по поводу StubIt.
    Теперь сижу вот, обновляю план действий. Очень радует то, что некоторые сложные и кривые задумки, которые хотелось ранее, теперь отпадают, так как продумана более четкая и простая инфраструктура всей системы.
    Короче, планы, планы, планы… Если будет время — продолжу кодидь…

    • Leonardo Leonardo говорит:

      Планчик обновил — воодушевило…
      Доделываю модули и лицензии на C#, порядком устал (тем более, что не спал пол ночи).

  86. Leonardo Leonardo говорит:

    День 85.

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

    Но по плану нужно потестировать и доработать лицензии и модули на C#.

    • Leonardo Leonardo говорит:

      Весь день про!»№лся с MS SQL Server 2008 R2 :-(
      До лицензий и модулей дело сегодня не дошло… :-(

    • Leonardo Leonardo говорит:

      Ночью немного занялся тестированием лицензий на C#.
      Были найдены небольшие недочеты. И еще нужно проверить подписи id и подпись тела. Шифрацию тела проверил — все тип-топ.

  87. Leonardo Leonardo говорит:

    День 86.

    Создать документ на основе «ночных мыслей от 2011.09.02».
    Завершить тестирование лицензий на C#.
    Протестировать модули на C#.
    Доделать модули на C++ (синхронизовать их с C#). Включая генерацию id с учетом хеша тела *.module.
    Создать классы для работы с лицензиями на С++. Протестировать.
    Доработать (создать) классы для работы с credentials на С++.
    Да! Следует учесть, что классы на С++ должны иметь меньший функционал, чем на С#, так как в них не входит ни генерация, ни отображение серийников.

    • Leonardo Leonardo говорит:

      Лицензии (C#) потестировал, кое что поправил — вроде бы теперь все с ними нормально, включая license.credentials. Можно переходить к модулям на C#.

    • Leonardo Leonardo говорит:

      Поник на модулях, а точнее — на реализации блоков кода. Проблема в различиях .Net Framework & C++ std library…

  88. Leonardo Leonardo говорит:

    День 87.
    Продолжаю то, что не успел вчера, плюс некоторые дополнительные проблемы (задачи):

    1. Протестировать модули на C#. [вчера протестировал — не доделана еще работа с сериализацией регионов кода].
    2. Разобраться как правильно работать со словарями на C# так как мне надо (аналогично С++).
    3. Доделать модули на C++ (синхронизовать их с C#). Включая генерацию id с учетом хеша тела *.module.
    4. Создать классы для работы с лицензиями на С++. Протестировать.
    5. Доработать (создать) классы для работы с credentials на С++ (На C# удалось сделать один общий класс credentials для license и для module).

    • Leonardo Leonardo говорит:

      Со словарями на C# (C++) про»№;лся полдня. Ну, мелкомягкие, как всегда — ничего не могут нормально сделать — разные реализации. Из-за этого пришлось потратить столько времени на эту мелочь. Ну да ладно, заработало!
      Далее — при тестировании модулей выявилось, что регионы в них достаточно сильно не доделаны. В общем — доделал. Затем протестировал сохранение — вроде все тип-топ. Загрузку не успел. Планирую сегодня.

  89. Leonardo Leonardo говорит:

    День 88.

    Продолжаю задачи вчерашнего дня, обновленный планчик:

    1. Протестировать загрузку модулей на C#.
    2. Доделать для них автоматическое добавление фич при добавлении регионов.
    3. Протестировать подписи и шифрацию модулей на C# (сохранение/загрузку)
    4. Доделать модули на C++ (синхронизовать их с C#). Включая генерацию id с учетом хеша тела *.module.
    5. Создать классы для работы с лицензиями на С++. Протестировать.
    6. Доработать (создать) классы для работы с credentials на С++ (На C# удалось сделать один общий класс credentials для license и для module).

    • Leonardo Leonardo говорит:

      1. Модули на C# готовы. Протестированы все аспекты, добавлены опции и функции для распределенной защиты. Все пучком.
      2. Автоматическое добавление фич реализовано.
      3. Подписи и шифрация проверены — все работает.

      Теперь, я полагаю, следует перейти к реализации лицензий на С++ (включая credentials), так как это более простая задача, чем модули.

      • Leonardo Leonardo говорит:

        Но прежде все-таки создам документик из «ночных мыслей». А то «про»№;ца» где-нить :-)

  90. Leonardo Leonardo говорит:

    День 89.

    Погрязну в пучинах С++ :-)

    1. Доработать (создать) классы для работы с credentials на С++ (На C# удалось сделать один общий класс credentials для license и для module).
    2. Создать классы для работы с лицензиями на С++. Протестировать.
    3. Доделать модули на C++ (синхронизовать их с C#). Включая генерацию id с учетом хеша тела *.module.

    • Leonardo Leonardo говорит:

      Сделал классы на С++ для работы с credentials кроме тех, что тянет за собой serial_key_t. Полагаю, что он сейчас не настолько важен для остальных классов (лицензий и модулей) и может быть реализован позже.

  91. Leonardo Leonardo говорит:

    День 90.

    Продолжаю С++.
    1. Создать классы для работы с лицензиями на С++. Протестировать.
    2. Доделать модули на C++ (синхронизовать их с C#). Включая генерацию id с учетом хеша тела *.module.

  92. Leonardo Leonardo говорит:

    День 91.

    Продолжаю С++.
    1. Создать классы для работы с лицензиями на С++. Протестировать.
    2. Доделать модули на C++ (синхронизовать их с C#). Включая генерацию id с учетом хеша тела *.module.

    • Leonardo Leonardo говорит:

      Сделал почти все классы по лицензиям на С++. Начал тестировать. Найдены некоторые баги. Исправлю завтра.

  93. Leonardo Leonardo говорит:

    День 92.

    1. Тщательно протестировать лицензии на С++. Исправить найденные баги.
    2. Доделать модули на C++ (синхронизовать их с C#). Включая генерацию id с учетом хеша тела *.module.
    3. Реализовать классы для работы с серийными номерами на С++.

    • Leonardo Leonardo говорит:

      Протестировал, доделал и поправил баги в лицензиях на С++. Добился практически идентичной работы с лицензиями на C#.

    • Leonardo Leonardo говорит:

      Реализовал классы для работы с серийными номерами на С++. Протестировал. Все отлично. Работают аналогично классам на C#.

    • Leonardo Leonardo говорит:

      Начал переделку модулей на С++ для синхронизации с модулями на C#.

  94. Leonardo Leonardo говорит:

    День 93.

    Доделать модули на C++ (синхронизовать их с C#). Включая генерацию id с учетом хеша тела *.module.

    • Leonardo Leonardo говорит:

      Доделал модули на С++ (до степени синхронизации с модулями на С#). Включая генерацию id с учетом тела *.module.
      Создал тесты для модулей на С++ по аналогии с C#. Были выявлены некоторые недочеты, включая и классы на C#. Найденные проблемы исправлены. Тест модулей на С++ проходит успешно.
      Теперь следует провести тесты взаимодействия С++ и C# (создавать модули на одном, читать на другом) — однако эти тесты осложняются тем, что сериализация карт на С++ и на C# работает различным способом. Так что способ бинарного сравнения модулей отпадает :-(

      Доработанные модули породили собой еще несколько подзадач:

      1. Добиться работоспособности старого протектора (x86) с новыми модулями С++
      2. Добиться работоспособности StubIt Runtime (x86) с новыми модулями на С++.
      3. (?) Добавить в license_header/module_header executor_id для надежности (?)

  95. Leonardo Leonardo говорит:

    День 94.

    1. Добиться работоспособности старого протектора (x86) с новыми модулями С++
    2. Добиться работоспособности StubIt Runtime (x86) с новыми модулями на С++.

    • Leonardo Leonardo говорит:

      Скрипя пердячим паром все же удалось завести. При этом пришлось сходить «в дебри» множественного наследования и конструкторов копий С++ и обратно.
      В общем — пока-что старый протектор создает новые модули на С++ и они потом успешно работают со средой исполнения.
      Я ненавижу С++ — это самый сложный и самый кривой язык из всех, с которыми мне приходится иметь дело :-(

  96. Leonardo Leonardo говорит:

    День 95.

    Решено перейти дальше к следующим задачам:
    1. реализовать remote_modules_store (C# server/client, C++ client)
    2. интегрировать работу с лицензиями в ядро (license manager C++)
    3. реализовать remote_license_store (C# server/client, C++ client)
    4. реализовать remote_license_manager (C#), local_license_manager (C++)

  97. Leonardo Leonardo говорит:

    День 96.

    Продолжаю обозначенные задачи:
    1. реализовать remote_modules_store (C# server/client, C++ client)
    2. интегрировать работу с лицензиями в ядро (license manager C++)
    3. реализовать remote_license_store (C# server/client, C++ client)
    4. реализовать remote_license_manager (C#), local_license_manager (C++)

    • Leonardo Leonardo говорит:

      После первой попытки реализации remote_modules_store (C# server/client) пришел к выводу о необходимости использования несколько иного хранилища — remote_objects_store который будет использоваться и для хранения модулей и для хранения лицензий.

  98. Leonardo Leonardo говорит:

    День 97.

    Продолжаю обозначенные задачи:
    1. реализовать remote_objects_store (C# server/client, C++ client)
    2. реализовать remote_modules_store (C# server/client, C++ client)
    3. интегрировать работу с лицензиями в ядро (license manager C++)
    4. реализовать remote_license_store (C# server/client, C++ client)
    5. реализовать remote_license_manager (C#), local_license_manager (C++)

  99. Leonardo Leonardo говорит:

    День 98.

    Продолжаю обозначенные задачи:
    1. реализовать remote_objects_store (C# client, C++ client)
    2. реализовать remote_modules_store (C# server/client, C++ client)
    3. интегрировать работу с лицензиями в ядро (license manager C++)
    4. реализовать remote_license_store (C# server/client, C++ client)
    5. реализовать remote_license_manager (C#), local_license_manager (C++)

    • Leonardo Leonardo говорит:

      Реализовал remote_objects_store C# client, сделал, но еще не тестировал C++ client.
      Реализовал remote_modules_store C# server (на основе remote_objects_store) /client, сделал но еще не тестировал C++ client.
      Вычислили, как можно быстро и просто «рубить» по concurrency (это из темы интеграции лицензий в ядро).

  100. Leonardo Leonardo говорит:

    День 99.

    1. протестировать отдельно от ядра remote_objects_store C++ client, remote_modules_store C++ client. Довести до безупречного рабочего состояния (проверить конфигурируемость через XML).
    2. продумать как лучше и интегрировать remote_modules_store C++ client в ядро.
    3. интегрировать работу с лицензиями в ядро (license manager C++)
    4. реализовать remote_license_store (C# server/client, C++ client)
    5. реализовать remote_license_manager (C#), local_license_manager (C++)

    • Leonardo Leonardo говорит:

      Практически весь день ушел на доработку классов для работы с лицензиями и модулями с учетом некоторых нововведений, обусловленных попыткой интеграции лицензий в ядро. Лицензии на С++ и C# синхронизованы, все с ними пока в порядке. Однако модули «разошлись». Теперь нужно снова их синхронизовать так, чтобы в результате тестов файлы совпадали.

  101. Leonardo Leonardo говорит:

    День 100.

    Сегодня практически не получилось заняться разработкой. Весь день ушел на так называемые «административные» задачи. Но что делать, их тоже нужно делать.
    Попробую в оставшееся рабочее время сделать что-нибудь по разработке.

  102. Leonardo Leonardo говорит:

    День 101.

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

    • Leonardo Leonardo говорит:

      С интеграцией лицензий разобрался в первом приближении. Пытаться реализовать буду немного позже. Сейчас хочу вернуться к задаче синхронизации модулей на C# и C++, а то не порядок :-)

      • Leonardo Leonardo говорит:

        Модули доработал и синхронизовал. Теперь все одинаково как на С++, так и на C#.

    • Leonardo Leonardo говорит:

      Протестировал отдельно от ядра remote_objects_store C++ client, remote_modules_store C++ client. Проверил конфигурируемость через XML — были найдены недочеты, которые исправлены.
      Да, после обдумывания вариантов интеграции лицензий в ядро, remote_licenses_store C++ client теперь не нужно делать.

  103. Leonardo Leonardo говорит:

    День 102.

    Уже успел сделать первую реализацию host_id, который понадобится для подсчета concurrency.
    Теперь займусь лицензиями:
    1. интегрировать работу с лицензиями в ядро (license manager C++)
    2. реализовать local/remote_license_store (C# server/client)
    3. реализовать remote_license_manager (C#), local_license_manager (C++)

    • Leonardo Leonardo говорит:

      Начал проектировать и разрабатывать на C# local_license_manager/remote_license_manager. Ух, непростая получается схема. :-(

  104. Leonardo Leonardo говорит:

    День 103.

    Продолжаю разработку на C# local_license_manager/remote_license_manager.

    • Leonardo Leonardo говорит:

      Туплю весь день. Не выспался. Да и день наверное такой — ничего в голову не идет, все мысли тупят как и я. Поэтому я лишь немного набросал классов для license_managers (local/remote) C#.

  105. Leonardo Leonardo говорит:

    День 104.

    Сегодня намного лучше. Но сегодня суббота, поэтому родные мешают как могут. Вот только выдалась свободная минутка для работы. Попробую помочь брату с интерфейсом на C#. Потом, если получится, снова займусь лицензированием.

    • Leonardo Leonardo говорит:

      С локальными проблемами интерфейса разобрались. Теперь интерфейс нормально оперирует миллионами лицензий и сотнями тысяч заказов.
      Заняться лицензированием у меня не получилось, так как я решил обдумать варианты использования динамической бинарной трансляции для ускорения работы эмулятора. И погряз в этом — задача очень непростая, да и, возможно, выхлопа от нее будет не так много, а проблем в реализации — навалом.

  106. Leonardo Leonardo говорит:

    День 105.

    Это было вчера, в воскресенье. Чувствовал себя ужасно, так как не выспался.
    Весь день уделил размышлениям над динамической бинарной трансляцией. Не уверен, что она сможет мне помочь :-(

  107. Leonardo Leonardo говорит:

    День 106.

    Погуляв с песами, пришел в офис.
    Собираюсь заняться лицензированием на C# — доведением прототипа менеджеров лицензий до работоспособного состояния. Для этого нужно будет разработать хитрые тесты.

    • Leonardo Leonardo говорит:

      Решил все переделать по лицензированию на C#. Не нравится мне как сделаны license_managers и сопутствующие классы. Все нахер надо переделать, так как пока все через жопу :-(

  108. Leonardo Leonardo говорит:

    День 107.

    Продолжаю разработку менеджеров лицензий на C#.

    • Leonardo Leonardo говорит:

      Сделал первую реализацию на C#. Начал тестировать. Выявлены некоторые недочеты. Исправлю.

  109. Leonardo Leonardo говорит:

    День 108.

    Продолжаю разработку менеджеров лицензий на C#.

    • Leonardo Leonardo говорит:

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

  110. Leonardo Leonardo говорит:

    День 109.

    Продолжаю разработку менеджеров лицензий на C#.
    Планирую тестировать получение сессий и определение доступности фич. Особенно «проблемных» термов.
    После этого планирую сделать сетевую версию. И снова потестировать на concurrency, а затем на сессии доступность фич.
    После этого можно будет портировать клиентскую (локальную) часть на С++ и продумывать интеграцию в ядро.

    • Leonardo Leonardo говорит:

      Добавил более сложные тесты.
      Протестировал получение сессий и определение доступности фич, а также «проблемные » термы. Все пучком. Теперь пора делать сетевую версию, но это чуть позже, устал нах.

  111. Leonardo Leonardo говорит:

    День 110.

    И никого не волнует, что это выходной (воскресенье). Херачить, херачить и еще раз — херачить :-)

    Но сперва хочу синхронизоваться с братом и продумать и обновить план дальнейших действий. Затем продолжить не законченные дела.
    Менеджер лицензий на C# — планирую сделать сетевую версию. И снова потестировать на concurrency, а затем на сессии доступность фич.
    После этого можно будет портировать клиентскую (локальную) часть на С++ и продумывать интеграцию в ядро.

    • Leonardo Leonardo говорит:

      Исходники синхронизовали.
      Продолжил менеджер лицензий на C#. Сделал первый вариант «разнесенного» по сети менеджера лицензий. Еще не тестировал, пока рано.
      Болит голова и сопли, похоже, простыл нафик :-(

      • Leonardo Leonardo говорит:

        Начал делать на С++ локальный менеджер лицензий. Попутно исправляя классы лицензий и другие для синхронизации с последними изменениями на C#.

  112. Leonardo Leonardo говорит:

    День 111.

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

    1. протестировать сетевую версию менеджеров лицензий на C#
    2. доделать локальный менеджер лицензий на С++
    3. сделать сетевой локальный менеджер лицензий на С++
    4. протестировать 2 и 3 в связке с удаленным менеджером лицензий на C#.
    5. тщательно продумать точки интеграции локального менеджера лицензий на С++ в ядро.

    • Leonardo Leonardo говорит:

      Весь день беседовал с Диней насчет проекта.
      Поэтому сделать успел только клиентскую часть на C#. И сделать законченный сервер на C#. Теперь нужно продумать, как правильно сделать тесты.

  113. Leonardo Leonardo говорит:

    День 112.

    Протестировал сетевую версию менеджеров лицензий на C#. Небольшой «сюрприз» был от сетевой подсистемы, но она была асилена. Вроде бы все пучком.

    Теперь погружаюсь в С++:
    1. доделать локальный менеджер лицензий на С++
    2. сделать сетевой локальный менеджер лицензий на С++
    3. протестировать 2 и 3 в связке с удаленным менеджером лицензий на C#.
    4. тщательно продумать точки интеграции локального менеджера лицензий на С++ в ядро.

    • Leonardo Leonardo говорит:

      Доделывал локальный менеджер лицензий на С++, но не доделал.
      Поздно вечером придумал несколько важных вариантов оптимизации работы ядра, собираюсь внести в план.

  114. Leonardo Leonardo говорит:

    День 113.

    Разработкой не получилось сегодня заняться.
    Весь день был потрачен на анализ ОС и СУБД, которые будем использовать для развертывания нашей инфраструктуры.
    Изначально планировал использовать технологии Microsoft, но после того, как я очень внимательно посмотрел на их цены и порядки лицензирования, а также после еще кое-каких проблем, я пришел к выводу, что Microsoft нам ни в коем случае не поможет.
    Так что вперед, Линукс не ждет! :-)

  115. Leonardo Leonardo говорит:

    День 114.

    1. доделать локальный менеджер лицензий на С++, но очень осторожно — продумать взаимодействие с планируемым StubIt API!
    2. сделать сетевой локальный менеджер лицензий на С++
    3. протестировать 2 и 3 в связке с удаленным менеджером лицензий на C#.
    4. тщательно продумать точки интеграции локального менеджера лицензий на С++ в ядро [Осторожно, на это может сильно повлиять StubIt API!].

    • Leonardo Leonardo говорит:

      1. доделал локальный менеджер лицензий на С++, но еще не продумывал взаимодействие с планируемым StubIt API!
      2. сделал сетевой локальный менеджер лицензий на С++.
      3. протестировал 2 и 3 в связке с удаленным менеджером лицензий на C#. Есть некоторые замечания, нужно будет кое-что поправить (в связи с улучшением быстродействия).

      Еще не продумывал точки интеграции локального менеджера лицензий на С++ в ядро, особенно с учетом планируемого StubIt API.

  116. Leonardo Leonardo говорит:

    День 115.

    Большая пауза в связи с тяжелыми проблемами в семье. Возможно, смогу хоть немного заняться делами…
    В первую очередь — попробовать вернуться «в строй» и переосмыслить сделанное и будущие планы.

  117. Leonardo Leonardo говорит:

    День 116.

    Сделал с утра небольшой инструментик (для личных нужд) split_pe на C#. Клево так, мне очень нравится :-)
    Теперь планирую заняться вплотную делами по проекту. Правда, времени на него сегодня очень мало будет :-(

  118. Leonardo Leonardo говорит:

    День 117.

    Сделал поддержку неуникальных имен childs для XML в C#. Переделал на новую схему работу с конфигами на C#.
    Теперь дело за тем, чтобы сделать это же на С++.

  119. Leonardo Leonardo говорит:

    День 118.

    Нужно реализовать новую схему работы с конфигами на C++. И потестировать.

  120. Leonardo Leonardo говорит:

    День 119.

    Очень много внимания уделяю тщательной проработке вопроса smart pointers, включая вариант использования GC для развязки циклических зависимостей. Язык С++ совершенно не предназначен для реализации подобных вещей. :-(

  121. Leonardo Leonardo говорит:

    День 120.

    Smart pointers, в их общей, самой удобной реализации, включая резолв циклов, совершенно мне не подходят — уж слишком «тяжелые». И кто бы что ни говорил про их эффективность — идет тот нахер сразу! Включая всех «псевдопрограммистов», которые знают С++ лучше Страуструпа, а нихера сделать не могут нормального, так как и язык и они сами — полное говно.
    Поэтому я попробую для эксперимента использовать у себя минимальную реализацию intrusive_ptr_t с использованием non-thread-safe counted_object_t для деревьев. Начал пробовать — уже нарвался на ошибки компилятора.
    За что люблю MSVC++ — нихера не понять, что, отчего, почему и как? Например, стоит случайно ошибиться в раскладке и написать вместо аглицкой «с» русскую «с», как секс минут на пять с MSVC++ вам просто гарантирован!

    • Leonardo Leonardo говорит:

      Победил нах я энтон С++ и MSVC++.
      А дело было только в двух символах…
      А все почему? Все потом, что мелкиеимягкие не потрудились сделать опцию для своего компилятора, которая показала бы расширенный вывод его решений во время этапа компилирования. Тот вывод, что он плюет в output или даже вывод /P — preprocessor output, совершенно не могли помочь в этой, увы, непростой ситуации.

  122. Leonardo Leonardo говорит:

    День 121.

    Продолжаю делать xml на основе multitree на С++, затем на его основе config и datasets.

    • Leonardo Leonardo говорит:

      Уже практически сделал, единственное, небольшая ошибка в процедуре записи xml_file. Починю, потом буду делать config и datasets на его основе.

      • Leonardo Leonardo говорит:

        А вместо этого практически полдня ушло на попытки завести IceSSL под Mono. В полпервого ночи проблемы были найдены, их пока две:
        1. нужен патч в IceSSL, так как в Mono не реализован один из классов
        2. нужен патч Mono, так как класс SslStream работает с ошибкой.

  123. Leonardo Leonardo говорит:

    День 122.

    Пропатчил, собрал и поставил новые class libs в Mono, получилось завести, причем с первого раза и успешно IceSSL!
    Теперь у нас есть возможность запуска сетевых приложений на .Net под Linux! Это очень круто и очень важно для нас.

    Дополнительно проверил работу IceSSL с отключенной клиентской авторизацией — все пучком!

    Далее — очень хотелось бы сегодня продолжить и завершить xml на C++, и на его основе config и datasets.

    • Leonardo Leonardo говорит:

      Самая оптимистичная новость, что для того, чтобы запустить свои сборки под Mono, их не нужно пересобирать под ним, а также не нужно пересобирать сборки Ice! Бинари, собранные под Windows, успешно работают под Linux/Mono!

      Да, чтобы не забыть:

      IceSSL.VerifyPeer = 0 — отключить клиентскую авторизацию

  124. Leonardo Leonardo говорит:

    День 123.

    Очень суетной. Сразу все свалилось с самого утра — наверное, понедельник себя полностью оправдывает…
    Попробую заняться все же С++ xml.

    • Leonardo Leonardo говорит:

      Получилось доделать работу с xml на С++, затем сделал «новый» config на его основе, теперь нужно хорошенько протестировать.

  125. Leonardo Leonardo говорит:

    День 124.

    Основные задачи:

    1. тщательно протестировать работу со всеми поддерживаемыми типами при сериализации XML
    2. протестировать вложенность (childs)
    3. сделать dataset/datatable/datarow на основе XML на мультидеревьях.

    • Leonardo Leonardo говорит:

      Сделал п.1 и п.2. Сегодня весь день болит голова. Работать совершенно не получается :-(

  126. Leonardo Leonardo говорит:

    День 125.

    1. сделать dataset/datatable/datarow на основе XML на мультидеревьях
    2. протестировать dataset/datatable/datarow на основе XML на мультидеревьях

    • Leonardo Leonardo говорит:

      Сделал первую версию, потестировал. Есть пара замечаний, буду исправлять и доделывать завтра, а затем еще тестировать.

  127. Leonardo Leonardo говорит:

    День 126.

    С утра солнце, на улице подморозило.
    Нужно доделать dataset, а затем попробовать реализовать спецификации для наших баз.

  128. Leonardo Leonardo говорит:

    День 127 (2^8 — 1).

    1. Обзор текущего состояния
    2. Доработка краткосрочных и долгосрочных планов
    3. Доработать спецификации для нужных datasets, потестировать.
    4. Продолжить действовать по плану.

    • Leonardo Leonardo говорит:

      Первые спецификации для programs db доработал — все пучком читает и сохраняет. Теперь нужно продумать, как проще всего это дело использовать в ядре.

  129. Leonardo Leonardo говорит:

    День 128 (2^8).

    1. Доработка краткосрочных и долгосрочных планов.

  130. Leonardo Leonardo говорит:

    День 129.

    1. Доработка краткосрочных и долгосрочных планов.
    2. Конфигурирование вплотную, как C++, так и C#. В первую очередь — сетевая подсистема.

  131. Leonardo Leonardo говорит:

    День 130.

    1. Продолжить работу над конфигами сетевой подсистемы.
    2. Параллельно вести разработку сервера защиты
    3. Конфигурирование native-side.

    • Leonardo Leonardo говорит:

      Конфиги сетевой подсистемы (legacy) на C# готовы, протестированы — все пучком.

    • Leonardo Leonardo говорит:

      Параллельно ведем разработку сервера защиты.
      К конфигурированию native-side еще не приступал.

  132. Leonardo Leonardo говорит:

    День 131.

    Конфигурирование native-side.

  133. Leonardo Leonardo говорит:

    День 132.

    1. Конфигурирование native-side
    2. Интеграция с remote_modules_objects_store
    3. Интеграция с license_manager

  134. Leonardo Leonardo говорит:

    День 133.

    Планирование ценообразования StubIt.
    Тщательная проработка вопросов ценоообразования.

    • Leonardo Leonardo говорит:

      Вопросы ценообразования проработаны. Достаточно гибкая, хотя немного сложная схема. Но позволяет контроллировать все тонкости процесса продаж лицензий.

  135. Leonardo Leonardo говорит:

    День 134.

    Конфигурирование native-side.
    Конфигурирование ядра.
    Проектирование интерфейса executor db < -> protection.server

  136. Leonardo Leonardo говорит:

    День 135.

    Занимаюсь какой-то херней.
    Настроение — какашка. Погода за окном — какашка. И делаю по проекту тоже какую-то какашку :-(
    Вместо того, что планировал неделю назад…

  137. Leonardo Leonardo говорит:

    День 136.

    1. Проектирование executor base (internal, external) и его взаимодействие с protection.server.
    2. Конфигурирование native-side.
    3. Конфигурирование emulated-side (ядра).

    • Leonardo Leonardo говорит:

      Болит голова и наизнанку что-то выворачивает, а так — все пучком :-(

      • Leonardo Leonardo говорит:

        Под ночной занавес получилось немного набросать executor base (internal, external) — интерфейсы и их взаимодействие с protection_server. Но тут еще работать и работать :-(

  138. Leonardo Leonardo говорит:

    День 137.

    Работа над executor base (internal, external) и его связкой с protection_srever. Затем тестирование каждой из частей.

    • Leonardo Leonardo говорит:

      В процессе работы над executor base «незаметно» ушел в сторону организации грида. Подробно поизучаю вопрос, потестирую. Посмотрю, как оно будет работать и применимо ли к нашему случаю.

      • Leonardo Leonardo говорит:

        Но достаточно быстро вернулся обратно. Думаю, грид можно будет использовать. Даже если возникнут проблемы и придется немного подшаманить исходники, все равно должно получиться использовать.
        У грида удобный функционал — локация, балансировка нагрузки, динамический подъем инстансов на узлах под нагрузку. Насчет динамического выключения инстансов без отсутствия нагрузки — вопрос открытый. Да нужно ли это.

    • Leonardo Leonardo говорит:

      Ближе к вечеру вплотную занялся собственным HTTP-Server для приема платежей от платежных агентов. Там тоже не все сразу так гладко, как хотелось бы.

  139. Leonardo Leonardo говорит:

    День 138.

    1. Отладить и настроить для удобной работы свой HTTP-Server. Сделать пробный запуск для имеющихся аккаунтов платежных агентов.
    2. Завершить работу над executor base (internal, external). Протестировать.

    • Leonardo Leonardo говорит:

      Собственный HTTP-Server на C# готов к использованию.
      Идет реализация двух сервисов для двух платежных агентов. Тестовые запуски прошли успешно, все в порядке. Сейчас производится интеграция с БД.

  140. Leonardo Leonardo говорит:

    День 139.

    1. Плотная работа вместе с коллегой над денежной подсистемой и подсистемами приема платежей от внешних платежных агентов и посредников.

    Еще очень хотелось бы:
    2. Завершить работу над executor base (internal, external). Протестировать.
    3. Конфигурирование native-side.
    4. Конфигурирование emulated-side (ядра).

    • Leonardo Leonardo говорит:

      Удалось только плотно поработать над платежной системой и платежными агентами. Теперь нужно их «долизывать» и очень тщательно тестировать.

  141. Leonardo Leonardo говорит:

    День 140.

    Дорабатываем денежную подсистему совместно с платежными агентами.

  142. Leonardo Leonardo говорит:

    День 141.

    1 января 2012 года.
    А у людей праздник… :-)
    Но покой нам только снится…

    Итак, продолжаем.

  143. Leonardo Leonardo говорит:

    День 142.

    Работаем над денежной подсистемой, тестируем, повышаем стойкость и надежность операций.

  144. Leonardo Leonardo говорит:

    День 143.

    Работаем над денежной подсистемой, тестируем, повышаем стойкость и надежность операций.
    Прорабатываем и уточняем планы дальнейших действий.

  145. Leonardo Leonardo говорит:

    День 144.

    Сделать executor base internal server.

    • Leonardo Leonardo говорит:

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

  146. Leonardo Leonardo говорит:

    День 145.

    Дописать клиент для executor base internal.
    Протестировать получение proxy для хранилища модулей и менеджера лицензий.
    Продумать, стоит ли делать стойкость от падения сервера, а также для варианта с отдельными клиентами.
    Затем было бы неплохо прикрутить это к ядру (сделать нужных клиентов с поддержкой ? стабильности), что потянет за собой конфигурирование ядра.

    • Leonardo Leonardo говорит:

      Также сделать небольшую инфраструктуру для проведения стресс-тестов на C#.

      • Leonardo Leonardo говорит:

        С ее помощью создать и провести нагрузочные тесты денежной системы и платежных агентов.

      • Leonardo Leonardo говорит:

        Сделал первый набросок стресс-тестера на C#. Есть ограничение в количество одновременных тестов и кривой ThreadPool почему-то не запускает параллельно :-(

      • Leonardo Leonardo говорит:

        Прикол — в результате первых стресс-тестов сразу же была найдена ошибка в .Net Framework v.1.1 — гонки при одновременном вычисления хешей большим числом потоков.
        Временную затычку сделал путем лочки места подсчета хешей. Но решение это хреновое, найти бы патчик…

    • Leonardo Leonardo говорит:

      Из-за того, что вчера связался со стресс-тестами, совершенно не сделал задачи, которые планировал по executor base internal/external.

  147. Leonardo Leonardo говорит:

    День 146.

    Задачи накапливаются:
    1. так как со стресс-тестером есть проблемы, то крайне желательно их решить, но приоритет этого невысок
    2. нужно завершить задачи, которые спланированы вчера по executor base internal/external.
    3. спроектировать сервер защиты.

    • Leonardo Leonardo говорит:

      Делаю первые наброски по проектированию сервера защиты, завтра продолжу, сегодня нет сил.

  148. Leonardo Leonardo говорит:

    День 147.

    Денежная система завершена.
    Проектирование и разработка Сервера Защиты.

  149. Leonardo Leonardo говорит:

    День 148.

    Разработка Сервера Защиты.

  150. Leonardo Leonardo говорит:

    День 149.

    Разработка Сервера Защиты.

  151. Leonardo Leonardo говорит:

    День (ночь) 150.

    Очень мало спал.
    Но удалось все же поработать над Сервером Защиты.
    Все пучком, дело движется. Нужно продолжать в том же духе, только спать по ночам.

    • Leonardo Leonardo говорит:

      Ночью хоть удалось поспать. Продолжаем разработку. Блин, моск раскалывается на части — лишь бы не заболеть… а то кругом начинается эпидемия гриппа…

  152. Leonardo Leonardo говорит:

    День 151.

    Разработка Сервера Защиты.
    Обновление планов с учетом разработки пакета Хостера Защиты.

  153. Leonardo Leonardo говорит:

    Разработка Сервера Защиты.

    • Leonardo Leonardo говорит:

      Сегодня тщательно проверил и довольно ощутимо переделал Пашкин вариант вычисления заказа. Он наверное что-то не так понял, но реализовал не совсем то, что я ему пересылал в документах.
      В процессе пришлось убрать лишнее поле из time_period, и изменить некоторые другие.
      А поник я на вычислении общего значения по таблице с точками преломления в зависимости от x. Доделаю завтра, засыпаю…

    • Leonardo Leonardo говорит:

      День 152.

  154. Leonardo Leonardo говорит:

    День 153.

    Обдумывали варианты организации продаж.
    Разработка Сервера Защиты.

    • Leonardo Leonardo говорит:

      Самое главное — асилить вычисление значения по кумулятивной таблице, представленной в отсчетах :-)

  155. Leonardo Leonardo говорит:

    День 154.

    Разработка Сервера Защиты.

  156. Leonardo Leonardo говорит:

    День 155.

    Разработка Сервера Защиты.
    Проработка сетевых интерфейсов участников процесса.
    Тщательная реализация каждого состояния исполнения заказа.

  157. Leonardo Leonardo говорит:

    День 156.

    Разработка Сервера Защиты.
    Проработка сетевых интерфейсов участников процесса.
    Тщательная реализация каждого состояния исполнения заказа.
    Доработка файлового хранилища в расчете на огромное количество хранимых файлов.

    • Leonardo Leonardo говорит:

      Файловое хранилище доработано. Протестировал — работает отлично.

    • Leonardo Leonardo говорит:

      Сделал первую реализацию состояний для заливки модулей и лицензий на исполнитель и на вендора. Кривовато пока. Но для первого раза пойдет

  158. Leonardo Leonardo говорит:

    День 157.

    Разработка Сервера Защиты.
    Проработка сетевых интерфейсов участников процесса.
    Тщательная реализация каждого состояния исполнения заказа.

  159. Leonardo Leonardo говорит:

    День 158.

    Сделал сегодня внешний FTP — теперь можем общаться большими файлами с коллегами. А то как-то неудобно раньше было…

    Разработка Сервера Защиты.
    Проработка сетевых интерфейсов участников процесса.
    Тщательная реализация каждого состояния исполнения заказа.

  160. Leonardo Leonardo говорит:

    День 159.

    1. Обсуждение деталей пользовательских интерфейсов с коллегами.
    2. Помощь коллегам с отладкой пользовательских интерфейсов.
    3. Разработка Сервера Защиты — доработка состояний заказа и сетевых интерфейсов.

  161. Leonardo Leonardo говорит:

    День 160.

    План на сегодня:

    1. протестировать executor base internal
    2. продумать как и протестировать executor base external (наверное проще всего будет написать для теста отдельные executor_base_external_server/executor_base_external_client)
    3. реализовать все состояния заказа в Сервере Защиты, попутно дорабатывая сетевые интерфейсы с Вендором и Исполнителем.
    4. спроектировать полный функционал и сетевой интерфейс Хостера
    5. спроектировать полный функционал и сетевой интерфейс Админа
    6. продумать схему многопоточного исполнения заказов на Сервере Защиты и реализовать ее
    7. сделать юнит- и стресс-тесты для Сервера Защиты

    • Leonardo Leonardo говорит:

      1. успешно протестирован executor base internal, как его интерфейс по получению подобъектов, так и прямой доступ к подобъектам при знании их координат. Универсально и удобно.

    • Leonardo Leonardo говорит:

      2. сделал executor_base_external_server/executor_base_external_client, специально для тестов, провел тестирование — заливка модулей, заливка лицензий и отзыв лицензий происходят отлично, без проблем. Есть проблема с получением информации о хранилищах, что заставило поднять задачу доработки хранилищ.
      Задача доработки хранилищ реализована только наполовину.
      Нужно довести эту работу до конца и тщательно протестировать.
      Там, кстати, в хранилищах нужно доработать совместный доступ к объектам и исправить багу с лишними подкаталогами при оппробировании.

  162. Leonardo Leonardo говорит:

    День 161.

    1. доделать хранилище Исполнителя, протестировать
    2. реализовать все состояния заказа в Сервере Защиты, попутно дорабатывая сетевые интерфейсы с Вендором и Исполнителем.
    3. спроектировать полный функционал и сетевой интерфейс Хостера
    4. спроектировать полный функционал и сетевой интерфейс Админа
    5. продумать схему многопоточного исполнения заказов на Сервере Защиты и реализовать ее
    6. сделать юнит- и стресс-тесты для Сервера Защиты

    • Leonardo Leonardo говорит:

      Доработал хранилище. От варианта со смывом store_info по таймауту пришлось отказаться, так как это «опасное» занятие в плане того, что при аварийном отключении будет рассинхронизация с хранилищем. Поэтому пока обновляю файл всегда, когда происходит изменение store_info. Тоже немного рискованно, но риск несравним с предыдущим.
      Также сделал доступ к файлам хранилища на Shared Read/Write. Как бы это дело протестировать на многопоточный доступ? Что будет, если одновременно будут читаться и писаться файлы? Думаю, что проблем не должно быть.

  163. Leonardo Leonardo говорит:

    День 162.

    1. реализовать все состояния заказа в Сервере Защиты, попутно дорабатывая сетевые интерфейсы с Вендором и Исполнителем.
    2. спроектировать полный функционал и сетевой интерфейс Хостера
    3. спроектировать полный функционал и сетевой интерфейс Админа
    4. продумать схему многопоточного исполнения заказов на Сервере Защиты и реализовать ее
    5. сделать юнит- и стресс-тесты для Сервера Защиты

    • Leonardo Leonardo говорит:

      Для простоты разработки и тестирования планирую поступить по всем интерфейсам (Вендора, Хостера, Админа) аналогично интерфейсу Исполнителя. Сделаю лишние классы для тестов, зато будет просто все проверить.

  164. Leonardo Leonardo говорит:

    День 163.

    1. реализовать все состояния заказа в Сервере Защиты, попутно дорабатывая сетевые интерфейсы с Вендором и Исполнителем.
    2. спроектировать полный функционал и сетевой интерфейс Хостера
    3. спроектировать полный функционал и сетевой интерфейс Админа
    4. продумать схему многопоточного исполнения заказов на Сервере Защиты и реализовать ее
    5. сделать юнит- и стресс-тесты для Сервера Защиты

    • Leonardo Leonardo говорит:

      Странный день.
      Полдня проспал. Ничего не сделал. Сука стыдно перед самим собой и коллегами :-(

  165. Leonardo Leonardo говорит:

    День 164.

    1. реализовать все состояния заказа в Сервере Защиты, попутно дорабатывая сетевые интерфейсы с Вендором и Исполнителем.
    2. спроектировать полный функционал и сетевой интерфейс Хостера
    3. спроектировать полный функционал и сетевой интерфейс Админа
    4. продумать схему многопоточного исполнения заказов на Сервере Защиты и реализовать ее
    5. сделать юнит- и стресс-тесты для Сервера Защиты

    • Leonardo Leonardo говорит:

      Спроектировал два варианта структуры каталогов на стороне Вендора. Еще уточню детали и буду вплотную завтра реализовывать.

    • Leonardo Leonardo говорит:

      Сегодня долго и плодотворно обсуждали возможные пути построения маркетинговой политики и выхода на рынок. Устал. Спать.

  166. Leonardo Leonardo говорит:

    День 165.

    1. реализовать спроектированные хранилища. Протестировать, отладить.
    2. реализовать все состояния заказа в Сервере Защиты, попутно дорабатывая сетевые интерфейсы с Вендором и Исполнителем.

    • Leonardo Leonardo говорит:

      Сделал первый вариант и тут же обнаружил проблему общего доступа к хранилищу через разные объекты objects_store_i.
      В рамках одного объекта работа с общим ресурсом (информацией о хранилище) разруливается, а вот когда идет одновременный доступ из разных объектов — тогда получается проблема. Думаю, решить можно относительно просто — завести «кеш» объектов-хранилищ на заказ.

    • Leonardo Leonardo говорит:

      Сделал хранилища. Наловил глюков. Переделал. Протестировал. Все пучком.

  167. Leonardo Leonardo говорит:

    День 166.

    1. реализовать все состояния заказа в Сервере Защиты, попутно дорабатывая сетевые интерфейсы с Вендором и Исполнителем.
    2. спроектировать полный функционал и сетевой интерфейс Хостера
    3. спроектировать полный функционал и сетевой интерфейс Админа
    4. продумать схему многопоточного исполнения заказов на Сервере Защиты и реализовать ее
    5. сделать юнит- и стресс-тесты для Сервера Защиты

    • Leonardo Leonardo говорит:

      Сегодня сделал достаточно много по п.1. Половину, так сказать. Есть некоторые проблемы, но остается все меньше и меньше. Завтра продолжу в том же духе.

  168. Leonardo Leonardo говорит:

    День 167.

    1. реализовать все состояния заказа в Сервере Защиты, попутно дорабатывая сетевые интерфейсы с Вендором и Исполнителем.
    2. спроектировать полный функционал и сетевой интерфейс Хостера
    3. спроектировать полный функционал и сетевой интерфейс Админа
    4. продумать схему многопоточного исполнения заказов на Сервере Защиты и реализовать ее
    5. сделать юнит- и стресс-тесты для Сервера Защиты

    • Leonardo Leonardo говорит:

      Снова сделал достаточно немало по п.1. Но еще осталось немало работы. Может быть завтра завершу.

  169. Leonardo Leonardo говорит:

    День 168.

    1. реализовать все состояния заказа в Сервере Защиты, попутно дорабатывая сетевые интерфейсы с Вендором и Исполнителем.
    2. спроектировать полный функционал и сетевой интерфейс Хостера
    3. спроектировать полный функционал и сетевой интерфейс Админа
    4. продумать схему многопоточного исполнения заказов на Сервере Защиты и реализовать ее
    5. сделать юнит- и стресс-тесты для Сервера Защиты

    • Leonardo Leonardo говорит:

      Набросал ВСЕ состояния заказа в Сервере Защиты. Начал проработку сетевых интерфейсов регистрации/логина/логаута действующих лиц.

  170. Leonardo Leonardo говорит:

    День 169.

    1. разработать учет сессий для всех типов пользователей на Сервере Защиты.
    2. спроектировать полный функционал и сетевой интерфейс Хостера.
    3. спроектировать полный функционал и сетевой интерфейс Админа.
    4. продумать схему многопоточного исполнения заказов на Сервере Защиты и реализовать ее.
    5. сделать юнит- и стресс-тесты для Сервера Защиты.

  171. Leonardo Leonardo говорит:

    День 170.

    Сперва были «предзадачи»:
    а) создать xlsx-файл с точным перечнем состояний заказа на Сервере Защиты
    б) настроить SSH-сервер
    в) проверить работу ролей
    г) ввести коды ошибок в состояние заказа на Сервере Защиты
    д) сделать так, чтобы серийники и обновленные идентификаторы модулей заливались всегда, независимо от типа Исполнителя

    Они были успешно сделаны.
    Далее, вернулся к:

    1. разработать учет сессий для всех типов пользователей на Сервере Защиты.
    2. спроектировать полный функционал и сетевой интерфейс Хостера.
    3. спроектировать полный функционал и сетевой интерфейс Админа.
    4. продумать схему многопоточного исполнения заказов на Сервере Защиты и реализовать ее.
    5. сделать юнит- и стресс-тесты для Сервера Защиты.

  172. Leonardo Leonardo говорит:

    День 171.

    1. все же очень надеюсь, что асилю довести новую схему до разумного завершения, ибо уже очень много сил на это потрачено.
    2. остальные задачи просто не успею.

    • Leonardo Leonardo говорит:

      так и не получилось довести новую схему вчера, даже отмазываться не буду. Решил серьезно подойти к делу и сперва досконально разобраться с проблемой логинов и «подвисшими сессиями». Уже целых два листа написал на эту тему своих мыслей и доводов, а также начал вчера делать тестовый стенд для проверки сетевой подсистемы и ее возможностей при работе с нештатными ситуациями.

    • Leonardo Leonardo говорит:

      так и не получилось довести новую схему вчера, даже отмазываться не буду. Решил серьезно подойти к делу и сперва досконально разобраться с проблемой логинов и «подвисшими сессиями». Уже целых два листа написал на эту тему своих мыслей и доводов, а также начал вчера делать тестовый стенд для проверки сетевой подсистемы и ее возможностей при работе с нештатными ситуациями.

  173. Leonardo Leonardo говорит:

    День 172.

    1. детально разобраться с проблемой логинов и «подвисших сессий». Доделать стенд для проверки работы сетевой подсистемы, посмотреть как она реагирует и сделать выводы.

    • Leonardo Leonardo говорит:

      ACM меня порядком огорчил…

      • Leonardo Leonardo говорит:

        Но как бы можно покласть на него болт :-)
        Однако все равно стоит решать проблему учета сессий в полном объеме, так как вполне вероятно, что логику ACM придется реализовывать вручную самим :-(

  174. Leonardo Leonardo говорит:

    День 173.

    1. разбираюсь очень плотно с патентом, который наш ПатОфис противопоставил моей заявке. Тот патент — 100% «зонтик», но думаю, что молучится его обойти.
    2. создал наглядный пример вычисления стоимости заказа на примере тарифа.

  175. Leonardo Leonardo говорит:

    День 174.

    1. разбираюсь очень плотно с патентом, который наш ПатОфис противопоставил моей заявке. Много там у них текста :-(

    • Leonardo Leonardo говорит:

      Причем, как и полагается в патентном деле — более 95% — сплошная вода, переливание слов из одного уха в другое :-(

  176. Leonardo Leonardo говорит:

    День 175.

    1. разбираюсь очень плотно с патентом, который наш ПатОфис противопоставил моей заявке. Задача — до конца его сегодня перевести.

    • Leonardo Leonardo говорит:

      Так и не осилил до конца, так как весь день был потрачен на другую работу :-( которую я все еще пока что вынужден делать…

  177. Leonardo Leonardo говорит:

    День 176.

    1. разбираюсь очень плотно с патентом, который наш ПатОфис противопоставил моей заявке. Задача — до конца его сегодня перевести.

    • Leonardo Leonardo говорит:

      Готов первый черновой вариант перевода поделки мелкософта. Говна поляна, патент этот их :-(

      • Leonardo Leonardo говорит:

        провел первую чистку, вроде чуть удобней читать, но все равно, есть такие конструкции, что мой моск взрывается :-(

  178. Leonardo Leonardo говорит:

    День 177.

    1. работа над ответом на запрос экспертизы №2.

    • Leonardo Leonardo говорит:

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

  179. Leonardo Leonardo говорит:

    День 178.

    1. работа над ответом на запрос экспертизы №2.

  180. Leonardo Leonardo говорит:

    День 179.

    Завершена работа над ответом на запрос экспертизы №2 и подготовлены измененные материалы заявки. На днях они будут отправлены в ПатОфис.
    Теперь возвращаюсь обратно плотно к делам проекта.

  181. Leonardo Leonardo говорит:

    День 180.

    Возвращаюсь снова к проекту. Что предстоит сегодня и на днях:

    1. доделать стенд на C# для проверки работы сетевой подсистемы в различных тонкостях, особенно, связанных с backlink и работой через NAT.
    2. додумать и реализовать на C# надежную сессионную модель, основанную на ролях, применить ее в Сервере Защиты.

    • Leonardo Leonardo говорит:

      ВСЕ ОБОРВАЛОСЬ ВНУТРИ — УБИЛИ МАЛЫША БАТИКА :-( :-( :-(
      я временно в дауне, в глубоком дауне… :-(

  182. Leonardo Leonardo говорит:

    День 181, точнее, уже 23:23 (как бы почти полночь), но все же:

    1. доделать стенд на C# для проверки работы сетевой подсистемы в различных тонкостях, особенно, связанных с backlink и работой через NAT.
    2. додумать и реализовать на C# надежную сессионную модель, основанную на ролях, применить ее в Сервере Защиты.

  183. Leonardo Leonardo говорит:

    День 182.

    Завтра начинается не совсем завтра…
    В общем, решено было сделать апгрейд винда, ибо этот большой тормоз (WD Caviar Green WD20EARX) просто не дает работать. Все стоит колом!!!
    Но дела делать надо, поэтому продолжаю:
    1. доделать стенд на C# для проверки работы сетевой подсистемы в различных тонкостях, особенно, связанных с backlink и работой через NAT.
    2. додумать и реализовать на C# надежную сессионную модель, основанную на ролях, применить ее в Сервере Защиты.

  184. Leonardo Leonardo говорит:

    День 183.

    1. Пашка молодец, разобрался с проблемой загрузки map-файлов на C#. Это повлекло за собой некоторую переделку многих классов на C#.
    2. доделал стенд на C# — сделал бинарное распределенное дерево и… и оно заработало! а не должно было :-( странно как-то все, полез в С++ разбираться почему работает C# и не работал С++.
    3. а С++ ведро не собирается — давно я его не собирал… Пришлось по-быстрому прикрутить новые конфиги, так что теперь ведро работает с xml-конфигами, чему я несказанно рад!!!

    • Leonardo Leonardo говорит:

      Так, сетевая подсистема преподнесла мне сюрпризы… Уже почти ее асилил, но до конца не доведу сегодня, уже очень устал.

  185. Leonardo Leonardo говорит:

    День 184.

    1. пошел учить матчасть по сетевой подсистеме. Нужно 100% разобраться в причине, почему на С++ работает не так, как на C#.
    2. затем продумать как лучше всего сделать логику восстановления работы при падениях канала (как С++, так и C#).
    3. затем уже можно смело доделывать сессии в Сервере Защиты на C#.

    • Leonardo Leonardo говорит:

      1.так, матчасть довольно быстро изучил — там полная жопа :-(
      остается всего два пути восстановления после потери соединения:
      1.1. либо удалять все созданное и заново производить создание объектов (это равносильно новому подключению)
      1.2. либо попытаться сохранить имеющиеся связи путем «прокладки» нового подключения
      2. пока забил на это
      3. делаю сессии, роли, пользователей, выделив их в общие классы, так как они пригодятся для многих серверов инфраструктуры.

  186. Leonardo Leonardo говорит:

    День 185.

    1. завершить сессии, пользователей, роли — доделать тестовый клиент-сервер, продумать как это дело будет встраиваться в другие проекты.
    2. интегрировать на основе п.1. сессии в Сервер Защиты
    3. затем продумать как лучше всего сделать логику восстановления работы при падениях канала (как С++, так и C#).

  187. Leonardo Leonardo говорит:

    День 186.

    1. завершить сессии, пользователей, роли — доделать тестовый клиент-сервер, продумать как это дело будет встраиваться в другие проекты.
    2. интегрировать на основе п.1. сессии в Сервер Защиты
    3. затем продумать как лучше всего сделать логику восстановления работы при падениях канала (как С++, так и C#).

    • Leonardo Leonardo говорит:

      снова из запланированного практически ничего не сделал — 8-е марта как-никак… зато появились новые проблемы в виду того, что «отвалилась» работа с парсингом мап-файлов.
      Одну проблему с парсингом мап-файлов и построением дерева имен я достаточно быстро нашел, признаю, мой косяк.
      А вот другая проблема связана с горячо-любимыми нами мелкософтами — эти ребята ну просто молодцы! Снова изменили (расширили) алгоритм демангла имен для x64 мап-файлов. За что им просто огромное спасибо! Теперь мой демангл снова отстает от их демангла…

  188. Leonardo Leonardo говорит:

    День 187.

    1. исправить деманг для x64 и протестировать работу с мап-файлами- x86/x64 debug/release-версий.
    2. завершить сессии, пользователей, роли — доделать тестовый клиент-сервер, продумать как это дело будет встраиваться в другие проекты.
    3. интегрировать на основе п.2. сессии в Сервер Защиты
    4. затем продумать как лучше всего сделать логику восстановления работы при падениях канала (как С++, так и C#).

    • Leonardo Leonardo говорит:

      сделал п.1, дополнительно сделал для map-file preload и для pe_file_i тоже preload, протестировали совместно — работает отлично, пока проблем не найдено.

    • Leonardo Leonardo говорит:

      п.2, 3, 4 — пока не сделал, как прям камень преткновения какой :-( пока что не поддаются они мне

  189. Leonardo Leonardo говорит:

    День 188.

    Досконально разобраться с двунаправленными соединениями, как на C# (где все исправно работает), так и с С++ (где при попытке построить схему, аналогичную C# появились страшнейшие тормоза).

    • Leonardo Leonardo говорит:

      Разобрался с двунаправленными соединениями, даже проработал дополнительный вариант обхода проблемы NAT-ов.
      Однако есть еще минимум 3 вопроса, которые нужно обязательно порешать по поводу сетевой подсистемы.

    • Leonardo Leonardo говорит:

      Тормоза похоже не из-за меня, а из-за слишком дохлого канала у жены на выход.

  190. Гол Гол говорит:

    Короче, когда сапёра нетормозящего покажешь?

    • Leonardo Leonardo говорит:

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

      • Leonardo Leonardo говорит:

        Если быть более точным — как только интегрирую в ядро лицензии — смогу показать уже в полубоевом варианте :-)

  191. Leonardo Leonardo говорит:

    День 189.

    Сегодня в 18 часов поеду в Москву, так что времени не так много на работу.
    Поэтому планирую сегодня еще поработать в плане сетевой подсистемы, выяснить оставшиеся «тонкости»…

  192. Leonardo Leonardo говорит:

    День 190.

    Полдня изучаю документ насчет Конечного Пользователя. Делаю нечто похожее на «рецензирование». Предложена достаточно интересная идея (решение) проблемы апгрейдов. Ее нужно тщательно проработать, так как она может нам сильно упростить жизнь. Лишь бы в ней не было «дыр».

    • Leonardo Leonardo говорит:

      Итак, нужно будет:
      а) продумать различные варианты централизованного хранилища и взаимодействия с ним: End User Tools, StubIt Runtime, StubIt Installer API.
      б) продумать возможные дыры в предложенной новой схеме продаж апгрейдов.

      Также нужно еще:
      в) обновить архитектуру инфраструктуры с учетом двух новых сущностей:
      в.1. инфосервер исполнителей
      в.2. инфосервер лицензий
      г) обновить план и объем работ на основе уже сделанного и с учетом пункта в.

  193. Leonardo Leonardo говорит:

    День 191.

    Прям вот как-то с этими Днями Рождения как-то прям все встало на время…
    Потихоньку возвращаюсь в рабочий лад. Собираюсь провести ревизию планов и объемов работ.

    • Leonardo Leonardo говорит:

      Начал, погряз в этом деле…
      Начал разбиение всего объема работ на этапы: PreAlpha(s), Alpha, Beta, Release Candidate, Release [v.1.0].

    • Гол Гол говорит:

      Воот, а прикинь у нас череда дней рождений начинается в начале января и заканчивается в середине февраля 😀 Штук десять дней рождений с маленькими промежутками. Это ужос просто.

  194. Leonardo Leonardo говорит:

    День 192.

    1. обновить планы

    • Leonardo Leonardo говорит:

      планы обновил, выдал на суд коллегам, будем корректировать.

      • Leonardo Leonardo говорит:

        хоть на преальфа планов реально стало меньше, но все равно количество работы просто пугает :-(

  195. Leonardo Leonardo говорит:

    День 193.

    1. проработать тонкости организации грида.
    2. стресс-тесты сетевой подсистемы на C#.

  196. Leonardo Leonardo говорит:

    День 193.

    1. стресс-тесты сетевой подсистемы на C#
    2. проработать тонкости организации грида.

  197. Leonardo Leonardo говорит:

    День 194.

    Сстресс-тесты сетевой подсистемы и грида на C# завершены. Результаты весьма неплохие — то есть сетевая подсистема не должна стать узким местом.

    Относительно тонкостей организации грида:

    1. доработать конфиги для работы с гридом
    2. доработать ядро для работы с гридом

  198. Leonardo Leonardo говорит:

    День 195.

    Ну что думаете, что я с коллегами остановился?
    Хер там! Все продолжается с еще большей энергией.

    Сегодня планирую проработать все тонкости реестра Windows в качестве хранилища для наших клиентских инструментов.

    • Leonardo Leonardo говорит:

      Как и большинство поделок от мелкософта, их реестр — полное говно :-)
      Не подходит он для нашего хранилища по нескольким критичным для нас причинам.
      Так что — в сад!

  199. Leonardo Leonardo говорит:

    День 196.

    Анализ плюсов и минусов использования на клиенте Windows Service на C# для наших целей.

  200. Leonardo Leonardo говорит:

    День 197.

    Разработка огромнейшей карты байты в байты…

    • Leonardo Leonardo говорит:

      Так, со списком вроде бы более-менее разобрался.
      Завтра с букетами разберусь. Ох, тяжело идет эта задачка…

  201. Leonardo Leonardo говорит:

    День 198.

    Сделал первую версию карты. По плану немного ускорить вставку путем использования кеша записи (ожидается около 15% ускорения). А затем — сделать и проверить многопоточную работу R/W стресс-тестом. После этого такую карту можно будет без зазрения совести использовать в наших высоконагруженных серверах.

  202. Leonardo Leonardo говорит:

    День 199.

    1. сделал генератор (еще ночью) пар ключ-значение для тестов
    2. поставил генерироваться 4G пар (это где-то часов на 12)
    3. сделать небольшой, на 10М тестовый файл для тестирования работы хеш-карты.
    4. разобраться где проблема в кеше записи, почему рассинхронизация, починить и потестировать
    5. сделать поддержку многопоточной работы, протестировать стрессом, замерить скорость и сравнить с однопоточной работой — будет ли выигрыш.

    • Leonardo Leonardo говорит:

      4G элементов генерируются и будут генерироваться до ночи, а потом еще их вставлять…. караул… нужно сделать «оконную вставку», а то комп почахнет от сожранной памяти.
      разобрался с кешем при записи, сделал поддержку многопоточности (пока как смог) и провел стресс-тесты на 1М записей — выигрыша от многопоточной работы с хеш-картой нет, только проигрыш, особенно при вставке и удалении, выборка не очень сильно, но страдает (где-то на %10 медленней), а вставка — на 20-25%, а удаление — не меньше 30%.
      теперь остается догенерировать 4G записей, попробовать по ним вставку и выборку, измерить координаты списков и выбрать наиболее подходящие размеры для buckets.

      • Leonardo Leonardo говорит:

        огорчает другой факт, что вставка 4G пар будет не меньше 20 часов занимать и она не параллелится…

  203. Leonardo Leonardo говорит:

    День 200.

    Основные задачи таковы:

    1. поставить на параллельные тесты вставки 500М/1G для трех вариантов buckets: 64M, 128M, 256M и сравнить для них характеристики — максимальную и среднюю длину очереди (и выбрать достаточную и подходящую для нашего случая).
    2. спроектировать и начать разработку StubIt Protection InfoServer с использованием разработанной хеш-карты.

    • Leonardo Leonardo говорит:

      п.1. оказался нереальным для проведения тестов на карте в 128М по причине кардинально увеличивающегося времени доступа к элементам при вставке. Вчера где-то за около 8 часов удалось в такую карту вставить только 100М пар при max_queue = 10, что, кстати, весьма неплохой результат по времени.

      • Leonardo Leonardo говорит:

        полагаю, что нужно попробовать поставить вставку на 4G buckets и посмотреть max_queue и median, чтобы были видны коллизии хешей

        • Leonardo Leonardo говорит:

          4G излишне, тестирую на 1G, она пока показывает неплохие характеристики max и median (вставка 50М за 28:06 мин, max = 5, median = 1,02338174)

      • Leonardo Leonardo говорит:

        Зато очень и очень позитивные результаты при выборке!!! 100М записей выбираются за 23 минуты! И скорость выборки выше для последних вставленных! Это вообще круть!!!
        А со вставкой мы разберемся…

  204. Leonardo Leonardo говорит:

    День 201.

    1. еще тесты хеш-карты, выработка наилучшей стратегии работы с ней и ее хранения, а так же подбор аппаратной базы для Protection InfoServer.
    2. спроектировать и начать разработку StubIt Protection InfoServer с использованием разработанной хеш-карты.

    • Leonardo Leonardo говорит:

      1. тесты хеш-карты гонял весь день, пока наиболее подходящие нам результаты показывает карта с 256М buckets — быстрая вставка и быстрая выборка на SSD (128М buckets выдает намного более быструю выборку «свежих» записей, но намного более тормозную — «старых», 256М — более равномерное распределение, но в 128М очень быстро вставка становится крайне тормозной).
      2. спроектировал Protection InfoServer, начал реализацию.

  205. Leonardo Leonardo говорит:

    День 202.

    1. разработка и тестирование Protection InfoServer.

  206. Leonardo Leonardo говорит:

    День 203.

    1. разработка и тестирование Protection InfoServer.

  207. Leonardo Leonardo говорит:

    День 204.

    1. разработка и тестирование Protection InfoServer External.
    2. разработка и тестирование Protection InfoServer Internal.

    • Leonardo Leonardo говорит:

      Protection InfoServer External уже раздает нужную информацию, однако еще есть функционал, который нужно доделать в нем. А потом, чуть позже, провести для него стресс-тесты.

  208. Leonardo Leonardo говорит:

    День 205.

    1. доработка и тестирование Protection InfoServer External.
    2. разработка и тестирование Protection InfoServer Internal.

  209. Leonardo Leonardo говорит:

    День 206.

    1. доработка и тестирование Protection InfoServer Internal.
    2. доработка и тестирование Licenses InfoServer External.
    3. доработка и тестирование Licenses InfoServer Internal.

    • Leonardo Leonardo говорит:

      4. разработка C# API для сервисочка, которое будет «торчать» в локальную сеть.

  210. Leonardo Leonardo говорит:

    День 207.

    1. анализ текущего состояния дел
    2. проработка планов дальнейших действий
    3. проработка некоторых рабочих вопросов

  211. Leonardo Leonardo говорит:

    День 208.

    1. проектирование Runtime API, Installer API, интерфейса взаимодействия с сервисочком.
    2. разработка StubIt Runtime API C#/C++
    3. StubIt Installer API C/C++

    • Leonardo Leonardo говорит:

      Заложен фундамент StubIt Runtime API C#/C++, StubIt Installer API C/C++. Продолжено проектирование API(s) и интерфейса взаимодействия с сервисочком.

  212. Leonardo Leonardo говорит:

    День 209.

    1. разработка StubIt Runtime API C#
    2. разработка и тестирование внутренностей сервисочка C#
    3. разработка StubIt Runtime API C++
    4. разработка StubIt Installer API C/C++
    5. обзор инсталлеров

  213. Leonardo Leonardo говорит:

    День 210.

    1. разработка StubIt Runtime API C#
    2. разработка и тестирование внутренностей сервисочка C#
    3. разработка StubIt Runtime API C++
    4. разработка StubIt Installer API C/C++
    5. обзор инсталлеров

  214. Leonardo Leonardo говорит:

    День 211.

    1. разработка StubIt Runtime API C#
    2. разработка и тестирование внутренностей сервисочка C#
    3. разработка StubIt Runtime API C++
    4. разработка StubIt Installer API C/C++
    5. обзор инсталлеров
    6. доработка StubIt Licenses Info Server External

  215. Leonardo Leonardo говорит:

    День 212.

    1. доработка StubIt Licenses Info Server External/Internal
    2. тестирование StubIt Licenses Info Server External/Internal
    3. доработка StubIt Protection Info Server External/Internal
    4. тестирование StubIt Protection Info Server External/Internal
    5. разработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    6. разработка StubIt Runtime API C#
    7. разработка StubIt Runtime API C++
    8. разработка StubIt Installer API C/C++
    9. обзор инсталлеров

    • Leonardo Leonardo говорит:

      Доработал StubIt Licenses Info Server External/Internal, тесты еще не сделал.
      Доработал StubIt Protection Info Server External, а Internal не успел доделать. Тесты еще не готовы.
      Плотная доработка логики StubIt Licenses Keeper (внутренностей сервисочка C#). До остальных задач руки не успели дойти.

  216. Leonardo Leonardo говорит:

    День 213.

    1. доработка StubIt Protection Info Server Internal
    2. тестирование StubIt Licenses Info Server External/Internal
    3. тестирование StubIt Protection Info Server External/Internal
    4. разработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    5. разработка StubIt Runtime API C#
    6. разработка StubIt Runtime API C++
    7. разработка StubIt Installer API C/C++
    8. обзор инсталлеров

    • Leonardo Leonardo говорит:

      Доработал StubIt Protection Info Server Internal. Еще не тестировал.
      Дорабатываем логику StubIt Licenses Keeper (внутренностей сервисочка C#).
      Немного модифицируем StubIt Runtime API C#.

  217. Leonardo Leonardo говорит:

    День 214.

    1. тестирование StubIt Licenses Info Server External/Internal
    2. тестирование StubIt Protection Info Server External/Internal
    3. доработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    4. разработка StubIt Runtime API C#
    5. разработка StubIt Runtime API C++
    6. разработка StubIt Installer API C/C++
    7. обзор инсталлеров

  218. Leonardo Leonardo говорит:

    День 215.

    1. тестирование StubIt Licenses Info Server External/Internal
    2. тестирование StubIt Protection Info Server External/Internal
    3. доработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    4. разработка StubIt Runtime API C#
    5. разработка StubIt Runtime API C++
    6. разработка StubIt Installer API C/C++
    7. обзор инсталлеров

    • Leonardo Leonardo говорит:

      1. переделывал работу сервиса для поддержки нескольких модулей и динамического конфигурирования (при start/stop/restart) C#
      2. доработал, подготовил к тестированию, начал тестировать Protection Info Server External/Internal.

  219. Leonardo Leonardo говорит:

    День 216.

    1. тестирование StubIt Licenses Info Server External/Internal
    2. тестирование StubIt Protection Info Server External/Internal
    3. доработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    4. разработка StubIt Runtime API C#
    5. разработка StubIt Runtime API C++
    6. разработка StubIt Installer API C/C++
    7. обзор инсталлеров

    • Leonardo Leonardo говорит:

      1. доработал, протестировал (пока без нагрузки) StubIt Protection Info Server External/Internal.

  220. Leonardo Leonardo говорит:

    День 217.

    1. тестирование StubIt Licenses Info Server External/Internal
    2. доработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    3. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    4. разработка StubIt Runtime API C#
    5. разработка StubIt Runtime API C++
    6. разработка StubIt Installer API C/C++
    7. обзор инсталлеров

    • Leonardo Leonardo говорит:

      Пофиксил и протестировал тестирование StubIt Licenses Info Server External/Internal. Все пучком. Единственный вопрос — нужно ли делать пакетную заливку, ускорит ли это процесс и насколько? Пока решили отложить это нафик, при необходимости добавлю в будущем.

  221. Leonardo Leonardo говорит:

    День 218.

    1. доработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. разработка StubIt Runtime API C#
    4. разработка StubIt Runtime API C++
    5. разработка StubIt Installer API C/C++
    6. обзор инсталлеров

  222. Leonardo Leonardo говорит:

    День 219.

    1. доработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. разработка StubIt Runtime API C#
    4. разработка StubIt Runtime API C++
    5. разработка StubIt Installer API C/C++
    6. обзор и сборка пробных инсталлеров
    7. доработка Protection Server и Protection Info Server Internal до возможности взаимодействия.

  223. Leonardo Leonardo говорит:

    День 220.

    1. доработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. разработка StubIt Runtime API C#
    4. разработка StubIt Runtime API C++
    5. разработка StubIt Installer API C/C++
    6. обзор и сборка пробных инсталлеров

  224. Leonardo Leonardo говорит:

    День 221.

    1. доработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. разработка StubIt Runtime API C#
    4. разработка StubIt Runtime API C++
    5. разработка StubIt Installer API C/C++
    6. обзор и сборка пробных инсталлеров

  225. Leonardo Leonardo говорит:

    День 222.

    1. доработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. разработка StubIt Runtime API C#
    4. разработка StubIt Runtime API C++
    5. разработка StubIt Installer API C/C++
    6. обзор и сборка пробных инсталлеров
    7. доработка и тестирование логики и интерфейса StubIt End-User Tools (SILK)

  226. Leonardo Leonardo говорит:

    День 223.

    1. переработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. разработка StubIt Runtime API C++
    4. разработка StubIt Installer API C/C++
    5. обзор и сборка пробных инсталлеров
    6. подготовка образов и дистрибутивов Linux для развертывания внутренних тестов.

  227. Leonardo Leonardo говорит:

    День 224.

    1. переработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. нагрузочное тестирование StubIt Licenses Keeper.
    4. разработка StubIt Runtime API C++
    5. разработка StubIt Installer API C/C++
    6. обзор и сборка пробных инсталлеров
    7. подготовка образов и дистрибутивов Linux для развертывания внутренних тестов.

  228. Leonardo Leonardo говорит:

    День 225.

    1. переработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. нагрузочное тестирование StubIt Licenses Keeper.
    4. разработка StubIt Runtime API C++
    5. разработка StubIt Installer API C/C++
    6. обзор и сборка пробных инсталлеров
    7. подготовка образов и дистрибутивов Linux для развертывания внутренних тестов.

  229. Leonardo Leonardo говорит:

    День 226.

    1. переработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. нагрузочное тестирование StubIt Licenses Keeper.
    4. разработка StubIt Runtime API C++
    5. разработка StubIt Installer API C/C++
    6. обзор и сборка пробных инсталлеров
    7. подготовка образов и дистрибутивов Linux для развертывания внутренних тестов.

  230. Leonardo Leonardo говорит:

    День 227.

    1. переработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. нагрузочное тестирование StubIt Licenses Keeper.
    4. разработка StubIt Runtime API C++
    5. разработка StubIt Installer API C/C++
    6. обзор и сборка пробных инсталлеров
    7. подготовка образов и дистрибутивов Linux для развертывания внутренних тестов.

    • Leonardo Leonardo говорит:

      Переработка логики Licenses Keeper слишком суровая, потянула за собой много чего :-( В общем, я снова все сломал, но ничего, починим.

  231. Leonardo Leonardo говорит:

    День 228.

    1. переработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. нагрузочное тестирование StubIt Licenses Keeper.
    4. разработка StubIt Runtime API C++
    5. разработка StubIt Installer API C/C++
    6. обзор и сборка пробных инсталлеров
    7. подготовка образов и дистрибутивов Linux для развертывания внутренних тестов.

    • Leonardo Leonardo говорит:

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

      • Leonardo Leonardo говорит:

        Вроде бы технически задумка реализуема, думаю, конечному пользователю понравится :-)

  232. Leonardo Leonardo говорит:

    День 229.

    1. переработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. нагрузочное тестирование StubIt Licenses Keeper.
    4. разработка StubIt Runtime API C++
    5. разработка StubIt Installer API C/C++
    6. обзор и сборка пробных инсталлеров
    7. подготовка образов и дистрибутивов Linux для развертывания внутренних тестов.

  233. Leonardo Leonardo говорит:

    День 230.

    1. переработка логики StubIt Licenses Keeper (внутренностей сервисочка C#)
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. нагрузочное тестирование StubIt Licenses Keeper.
    4. разработка StubIt Runtime API C++
    5. разработка StubIt Installer API C/C++
    6. обзор и сборка пробных инсталлеров
    7. подготовка образов и дистрибутивов Linux для развертывания внутренних тестов.

  234. Leonardo Leonardo говорит:

    День 231.

    1. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    2. нагрузочное тестирование StubIt Licenses Keeper.
    3. разработка StubIt Runtime API C++
    4. разработка StubIt Installer API C/C++
    5. обзор и сборка пробных инсталлеров

  235. Leonardo Leonardo говорит:

    День 232.

    1. проработка вопроса ограничения лицензий приложения Исполнителем, доработка License Keeper в соответствии с принятым решением.
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. нагрузочное тестирование StubIt Licenses Keeper.
    4. разработка StubIt Runtime API C++
    5. разработка StubIt Installer API C/C++
    6. обзор и сборка пробных инсталлеров
    7. подготовка пакетов развертывания на Linux.

  236. Leonardo Leonardo говорит:

    День 233.

    1. доработка License Keeper для добавления ограничения лицензий приложения Исполнителем.
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. нагрузочное тестирование StubIt Licenses Keeper.
    4. разработка StubIt Runtime API C++
    5. разработка StubIt Installer API C/C++
    6. обзор и сборка пробных инсталлеров
    7. подготовка пакетов развертывания на Linux.

  237. Leonardo Leonardo говорит:

    День 234.

    1. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    2. нагрузочное тестирование StubIt Licenses Keeper.
    3. разработка StubIt Runtime API C++
    4. разработка StubIt Installer API C/C++
    5. обзор и сборка пробных инсталлеров

  238. Leonardo Leonardo говорит:

    День 235.

    1. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    2. нагрузочное тестирование StubIt Licenses Keeper.
    3. разработка StubIt Runtime API C++
    4. разработка StubIt Installer API C/C++
    5. обзор и сборка пробных инсталлеров

  239. Leonardo Leonardo говорит:

    День 236.

    1. доработка Licenses Keeper, исправление ошибок и недочетов
    2. тестирование StubIt Licenses Keeper (внутренностей сервисочка C#) совместно с инфосерверами.
    3. нагрузочное тестирование StubIt Licenses Keeper.
    4. разработка StubIt Runtime API C++
    5. разработка StubIt Installer API C/C++
    6. обзор и сборка пробных инсталлеров

  240. Leonardo Leonardo говорит:

    День 237.

    Регламентные работы — переползаем на TRAC, так как все же Mantis-а нам уже не хватает никак.

  241. Leonardo Leonardo говорит:

    День 238.

    Тюнинг TRAC под наши нужды.

    • Leonardo Leonardo говорит:

      Ну что же, open-alpha показала, что нам еще предстоит немало сделать… Так что резво взяли и напрягли булки! :-)

  242. Leonardo Leonardo говорит:

    День 239.

    1. Тестирование License Keeper, исправление недочетов.
    2. Нагрузочное тестирование License Keeper, исправление недочетов.

  243. Leonardo Leonardo говорит:

    День 240.

    1. Нагрузочное тестирование License Keeper, исправление недочетов.

  244. Leonardo Leonardo говорит:

    День 241.

    1. Нагрузочное тестирование License Keeeper, исправление найденных недочетов и ошибок.
    2. Доработка StubIt License Keeper GUI.

    • Leonardo Leonardo говорит:

      Весь день протрахался с гонками в криптографическом модуле. Зато разобрался.

  245. Leonardo Leonardo говорит:

    День 242.

    Не спал полночи — сперва смотрел как наша Елена Исинбаева выступала в Лондоне на Олимпийских Играх 2012. Жаль, что только бронза, мы же знаем, что ты — лучшая! Но все равно, мы очень рады за тебя! Молодец!!!
    Потом не мог заснуть, в общем — сегодня голова практически не соображает :-(
    Но работать нужно, что делать-то?

    Итак, вернемся к нашим насущным делам.

    1. Нагрузочное тестирование License Keeeper, исправление найденных недочетов и ошибок.
    2. Доработка StubIt License Keeper GUI.

    • Leonardo Leonardo говорит:

      После исправления ошибок с криптографией, остальная часть нагрузочных тестов License Keeper прошла успешно. Сегодня мне херово, наверное не смогу херачить. :-(

    • Leonardo Leonardo говорит:

      3. Дорабатываю удобное средство для работы Windows Services, «оборачиваю» License Keeper Server в License Keeper Service

  246. Leonardo Leonardo говорит:

    День 243.

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

    1. «Обернуть» License Keeper Server в License Keeper Service и протестировать (доделать сопутствующие модули)
    2. Доработка StubIt License Keeper GUI (SILK).
    3. Нагрузочное тестирование License Keeeper, исправление найденных недочетов и ошибок.

    • Leonardo Leonardo говорит:

      Успешно «обернул» License Keeper Server в License Keeper Service, сделал пример инсталлятора, прикрутил работу с Windows Event Log. Все в порядке.

    • Leonardo Leonardo говорит:

      License Keeper в виде Windows Service готов, обернут качественно :-)
      Исправлены некоторые недочеты в License Keeper.

  247. Leonardo Leonardo говорит:

    День 244. (Воскресенье)

    1. Тестирование функционала StubIt License Keeper GUI (SILK), подготовка к редизайну и рефакторингу.
    2. Работы по логике License Keeper Server/Service, есть еще доработки.
    3. Нагрузочное тестирование License Keeeper, исправление найденных недочетов и ошибок.

  248. Leonardo Leonardo говорит:

    День 245.

    1. Разработка второго варианта GUI StubIt License Keeper.
    2. Ревью кода License Keeper Server/Service, устранение недочетов.
    3. Оптимизация логики Licenses Info Servers.

  249. Leonardo Leonardo говорит:

    День 246.

    День «жезезячника и админа» — настройка купленного оборудования и ПО на них. Три системника и маршрутизаторы.

  250. Leonardo Leonardo говорит:

    День 247.

    1. Разработка дизайна третьего варианта GUI StubIt License Keeper.
    2. Ревью кода License Keeper Server/Service, устранение недочетов.
    3. Возможно, дополнительные стресс-тесты License Keeper Server/Service.

  251. Leonardo Leonardo говорит:

    День 248.

    Суетной и тяжелый день. Практически весь день — переезд в новый «офис». Думаю, все там будет пучком. Сегодня уже ввезли мебель и половину оборудования. Завтра еще довезем оборудование и будем все настраивать и обживаться.

  252. Leonardo Leonardo говорит:

    День 249

    Довезли оборудование, весь день настраивали его и локальную сеть.

    День 250.

    Еще донастраиваем ресурсы локальной сети. Привезли магнитно-маркерную доску 100х180, теперь осталось решить проблему ее размещения — наверное придется делать подставку для нее.

    День 251.

    Обживаемся в новом «офисе». Уже понемногу получается заниматься непосредственно разработкой:
    1. редизайн StubIt License Keeper
    2. я сделал универсальный сервер-пускалку для наших сетевых серверов.

  253. Leonardo Leonardo говорит:

    День 252.

    Обсуждение дизайна StubIt License Keeper.

  254. Leonardo Leonardo говорит:

    День 253.

    1. доработка License Keeper Service
    2. сборка инсталляторов для End-User Tools
    3. реализация нового дизайна для SILK (StubIt License Keeper)
    4. доработка лицензий на C#

  255. Leonardo Leonardo говорит:

    День 254.

    1. мелкие доработки License Keeper Service
    2. сборка инсталляторов для End-User Tools, отладка.
    3. разработка StubIt License Keeper C++ API, StubIt Installer C/C++ API и StubIt Runtime C/C++ API

  256. Leonardo Leonardo говорит:

    День 255 и позже :-) Если честно, уже сбился со счета, но можно попробовать вычислить. Если типа 254 день был 7 числа, а сегодня 23-е, то примерно должен быть день 268.

    Но не суть. Я уже редко пишу сюда, так как просто ни на что не хватает времени. Мы с командой комрадов очень плотно занимаемся проектом, дело движется значительно быстрее, но работы что-то становится только больше пока что :-)

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

  257. Leonardo Leonardo говорит:

    День 269.

    1. тестирование и доработка StubIt License Keeper C++ API, StubIt Installer C/C++ API и StubIt Runtime C/C++ API
    2. доработка инсталляторов для End-User Tools, отладка.
    3. проработка вопроса Windows 8 Desktop App Certification Program в отношении нашего продукта.

    • Leonardo Leonardo говорит:

      С++ клиентские части приведены в соответствие с требованиями Windows 8 Desktop App Certification Program.

  258. Leonardo Leonardo говорит:

    День 270.

    1. тестирование и доработка StubIt License Keeper C++ API, StubIt Installer C/C++ API и StubIt Runtime C/C++ API
    2. доработка инсталляторов для StubIt License Keeper, отладка.
    3. доработка локализаций (en/ru) StubIt License Keeper GUI, StubIt Updater GUI.

    • Leonardo Leonardo говорит:

      MS Windows Installer — это самая кривая-прекривая поделка, которую только можно было изобрести! Ничего в нем нельзя сделать без кучи проблем и постоянных «затычек» и «патчей»… Молодцы, мелкие, так держать!

  259. Leonardo Leonardo говорит:

    День 271.

    1. тестирование и доработка StubIt License Keeper C++ API, StubIt Installer C/C++ API и MSI Custom Actions Installer C API.
    2. разработка инсталляторов-патчей, апгрейдов для StubIt License Keeper.
    3. рефакторинг и доработка механизма users, roles для различных узлов инфраструктуры.

  260. Leonardo Leonardo говорит:

    День 272.

    1. проработка тонкостей относительно MSI Engine, MSI Custom Actions.
    2. разработка MSI Custom Actions Installer C API.
    3. разработка инсталляторов-патчей, апгрейдов для StubIt License Keeper.
    4. рефакторинг и доработка механизма users, roles для различных узлов инфраструктуры.

    • Leonardo Leonardo говорит:

      успешно протестировано StubIt License Keeper C++ API, произведены некоторые коррективы в клиентской и серверной сторонах.

  261. Leonardo Leonardo говорит:

    День 273.

    1. разработка демо-инсталлятора MSI для Вендоров
    2. доработка StubIt License Keeper C++ API DLL
    3. рефакторинг и доработка механизма users, roles для различных узлов инфраструктуры.

  262. Leonardo Leonardo говорит:

    День 274. (Точно не 274, так как я тут пишу достаточно редко, но все же, пусть по порядку идет).

    1. работа над нативными частями системы, выбор решений относительно возникающих проблем.
    2. разработка собственных MSI CA, так как инсталлятор MSI настолько кривой, что без этого ну никак.
    3. разработка универсальной ролевой системы пользователей на C#.

  263. Leonardo Leonardo говорит:

    День 275.

    1. организационные вопросы в плане внутренних процессов разработки.
    2. разработка собственных MSI CA, так как инсталлятор MSI настолько кривой, что без этого ну никак.
    3. разработка универсальной ролевой системы пользователей на C#.

  264. Leonardo Leonardo говорит:

    Хер нас возьмешь!
    День уже не знаю какой по счету, потерял нить времени… Пусть будет 276.
    Наконец-то мы все дружно перешли на Сервер Защиты и Vendor Tools, это значит, что мы медленно, но уверенно движемся к намеченной цели!

  265. Leonardo Leonardo говорит:

    Снова не понятно, какой день.
    Сюда уже практически перестал писать, так как времени на это нет. Все плотно пашем над проектом, проект неплохо движется. Уже виден свет в конце тоннеля…

  266. Leonardo Leonardo говорит:

    Уже не только времени нет, чтобы сюда писать, а даже чтобы поспать и набраться сил на следующий день.
    Но все в самом разгаре! Работа кипит, мы обязательно сделаем этот проект!!!

  267. Leonardo Leonardo говорит:

    Тема дня — LRU cache with Write-Back (Lazy-Write + Delayed-Write) policies :-)

  268. Leonardo Leonardo говорит:

    Каркас «кольца инфраструктуры» готов к началам функциональных тестов. Это непросто, так как в «кольцо инфраструктуры» входит немалое количество серверов и логики.

  269. Leonardo Leonardo говорит:

    Работаю над логикой связки enode/LM -> EBI/LM. Старая логика EBI/LM полностью переделана, так как уже не удовлетворяет требованиям нашего функционала.
    На сегодня планчик:

    1. добавить сторожевой таймер на подчистку «подвисших» LM-процессов в EBI/LM на случай аварийного останова enode/LM.
    2. набросать сетевые классы для всех сетевых сущностей enode/LM -> EBI/LM, протестировать работоспособность.
    3. интегрировать EBI/LM в EB, протестировать.

    • Leonardo Leonardo говорит:

      Все запланированные работы выполнены. Теперь наконец-то я могу потихоньку снова переходить к ядру.

  270. Leonardo Leonardo говорит:

    Теперь перехожу непосредственно к логике enode/LM. Сперва нужно все тщательно спроектировать, чтобы не накосячить. Затем попробую набросать пробный вариант, хорошенько погонять его и посмотреть на тонкости.
    После этого сделаю боевую версию и интегрирую ее в ядро.
    Также нужно посмотреть накопившиеся задачи по ядру и провести перепланирование работ по нем.
    Парни в это время будут работать над инфраструктурой — впереди развертывание, тестирование, стрессы, отладка, возможно и доработки.

  271. Leonardo Leonardo говорит:

    Логика enode/LM уже практически готова, нужно переделать кое-какие ее части, а потом приступить к тестированию и отладке.

    • Leonardo Leonardo говорит:

      Переделал схему пингования enode/LM -> EBI/LM. Теперь она более простая, быстрая и оптимальная.

  272. Leonardo Leonardo говорит:

    Если хватит сил, попробую протестировать сегодня связку enode/LM -> EBI/LM.

  273. Leonardo Leonardo говорит:

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

  274. Leonardo Leonardo говорит:

    Забегался весь по семейным и не только делам. Чайку-кофейку, да попробую «вернуться в строй».

  275. Leonardo Leonardo говорит:

    Сегодня переезд «офиса»… Но работа не прекращается!

  276. Leonardo Leonardo говорит:

    Продолжаю рефакторинг низкоуровневых вещей. Было много мыслей по поводу возможности использования готовых библиотек типа boost и т.п., однако есть ряд ограничений, которые не позволяют нам использовать их в нашем ядре. Поэтому приходится «изобретать свои велосипеды» :-(
    Но нам не страшен серый волк :-)

  277. Leonardo Leonardo говорит:

    Кто придумал метапрограммирование (оно же — кодогенерация), тот явно педераст. Особенно метапрограммирование на шаблонах С++ = педерастия вдвойне. Кроме «высоконаучных» диспутов от «ахрененности» и «умности» такого подхода, выхлопа от него нет совершенно никакого, кроме попытки превратить убогий, кривой и невероятно сложный С++ в удобные языки и среды, такие как C# и/или Java.

    • Leonardo Leonardo говорит:

      А хотелось-то всего-лишь навсего сделать делегаты на С++, которые по функционалу и удобству будут хотя бы примерно равны делегатам на C#. Да где уж там…

  278. Leonardo Leonardo говорит:

    Пришлось изучать матчасть по С++11, так как прогресс не стоит на месте и, чтобы не изобретать велосипед за велосипедом, есть смысл подумать об использовании более современных средств и стандартов.

  279. Leonardo Leonardo говорит:

    Нда уж… С++11 это DNIWE :-)
    Смотрим теперь в сторону Boost C++ Template Library, может быть ее функционал нам пригодится…

  280. Leonardo Leonardo говорит:

    Сегодня канул в «лету» ООО «Прайм», выполнив свою первоначальную роль, и родилась новая компания ООО «РеСанити» (ReSanity), которая и будет теперь вести проект StubIt.

  281. Leonardo Leonardo говорит:

    Нда, написать на С++ делегаты, которые будут близки по своему функционалу к делегатам на C# — это просто подвиг, который мне пришлось сегодня сделать :-(
    Ибо очень они мне нужны, делегаты эти…

  282. Leonardo Leonardo говорит:

    Так, чтобы не забыть — телефоны отделения Юниаструм-Банк в г. Щекино:

    5-89-89
    5-89-90

    А то на официальном сайте есть только адрес, а телефонов нет :-(

  283. Leonardo Leonardo говорит:

    Катастрофически не хватает времени на проект :-( Даже немного злит. Но делать нечего — есть другие, более приоритетные задачи…

  284. Leonardo Leonardo говорит:

    Второй день настроение никакое. Работа не клеится. Депрессняк сплошной какой-то…

  285. Leonardo Leonardo говорит:

    Для того, чтобы что-то сделать, сперва нужно все сломать :-)
    Похоже, что это девиз последних двух дней у моих коллег. Технология Intel Embedded Server RAID II — это просто кидалово и развод людей на деньги (чтобы они потом побежали покупать плату с аппаратного RAID-контроллера). В общем, все, что было нажито непосильным трудом… :-) теперь камрады будут поднимать заново…

  286. Leonardo Leonardo говорит:

    Ну что, начнем измерять нагрузочную способность наших серверов? Думаю, можно.

  287. Leonardo Leonardo говорит:

    Рефакторинг ядра — это последнее, чего бы я хотел в жизни… Но оно неизбежно :-(

  288. Leonardo Leonardo говорит:

    Продолжаю рефакторинг — это как лечебная микстура — кислая, противная, но, сука, полезная очень. Не хочется, а надо :-(

  289. Leonardo Leonardo говорит:

    Рефакторинг — весьма неблагодарная штука. Когда же оно закончится…?

  290. Leonardo Leonardo говорит:

    Камрад начал писать документацию на нашу систему, говорит — что мы крутые :-)

  291. Leonardo Leonardo говорит:

    Я рефачу, я рефачу, я «№чу, я «№;чу… :-)

  292. Leonardo Leonardo говорит:

    День «хрен знает уже какой»….
    День недельных отчетов, корректировки планов и продолжения эпопеи с «рефачу» :-(

  293. Leonardo Leonardo говорит:

    Здесь загадки и шарады, за разгадку две награды… :-)

  294. Leonardo Leonardo говорит:

    1 августа 2013 года.

    Первый дедлайн по Closed Beta успешно просран…

  295. Leonardo Leonardo говорит:

    Если пес, гад, будит в 7 утра, а спать ложишся в час ночи, то потом весьма и весьма сложно что-либо разрабатывать… :-(

    • Leonardo Leonardo говорит:

      Но, между прочим, скрипя и крехтя, все же удалось немного позаниматься проектом…

  296. Leonardo Leonardo говорит:

    Суббота.
    Время продолжить рефакторинг ядра…

    • Leonardo Leonardo говорит:

      Вроде бы все снова собирается. Вот только пока ничего не работает :-( Багулечки накинулись на меня :-(

  297. Leonardo Leonardo говорит:

    Воскресенье.
    Отлавливаю багулечки.

    • Leonardo Leonardo говорит:

      Работоспособность старого протектора восстановил. Он пригодится при доработке и тестировании ведра. Но нужно доделать новый, так как в старом ощутимые ограничения на функционал.
      Начал восстанавливать функционал серверной части ведра. Пока идет со скрипом, весьма и весьма :-(

  298. Leonardo Leonardo говорит:

    Вечер вчера прошел незабываемо — с больным животом без отрыва от толчка :-(
    Что-то неудобоваримое съел… Успокоился только около часа ночи, и то немного подташнивало.

    Ну а сегодня понедельник! Самое время с «новыми» силами взяться, так сказать, за дело!

  299. Leonardo Leonardo говорит:

    Воскресенье. Болит голова. Снова пришла жара, наверное из-за перемены погоды подколбашивает. Закинулся колесами, может приотпустит.
    Ведь надо додедывать ядро… Если не я, то кто?

  300. Leonardo Leonardo говорит:

    Рефакторинг ядра продолжается. Уже не так много остается, чему я несказанно рад.
    Но все же работы еще много и делать ее прийдется пока мне :-(
    Парни на других фронтах, а я в ядре…

  301. Leonardo Leonardo говорит:

    Понедельник — и правда тяжелый день.
    Болит голова, похоже, продуло вчерась… Блин, не хватало еще простудиться :-(

  302. Leonardo Leonardo говорит:

    Вторник прошел — начал разбираться с SCons, как его прикрутить к нашим проектам. Он оказался не столько прост, как хотелось бы.
    Сегодня среда, планирую победить его. Нужен нам уже Build Automation.

  303. Leonardo Leonardo говорит:

    Постепенно «натягиваю» SCons для сборки проектов ядра. Параллельно портирую код под Linux, однако с этим возникают неслабые проблемы, так как практика показывает, что, хоть, язык С++ и стандартизован, а «диалектика» разных компиляторов совершенно иная… :-(

  304. Leonardo Leonardo говорит:

    День ХЗК, точно знаю, что суббота — самое время порабоать.
    К тому же, последний день этого лета, что не может не радовать :-(

    Но лирику в сторону, работы еще пока непочатый край.
    Нужно доработать сериализацию и конвертацию строк в С++ коде, переделать сериализацию UTF-16 на UTF-8 и кое-что еще на С++ в тех местах, где это необходимо. Тупить некогда, работать нужно!

    • Leonardo Leonardo говорит:

      Строки асилил практически везде — и на C# и на С++ (пока, правда, только под Windows, нужно будет еще проверить и под Linux). Зато после правок строк, что-то отвалилось в инфраструктуре, прийдется заняться отладкой :-(

  305. Leonardo Leonardo говорит:

    Воскресенье. С утра с Васькой ездили на плановые УЗИ и прием к ортопеду, а вот теперь пора снова взяться за работу. Что-то там отвалилось после правок строк :-(

  306. Leonardo Leonardo говорит:

    Вторник.
    Нужно разобраться с работой с файлами, желательно кросс-платформенно (но, боюсь, что из-за кривоты С++ этого может не получиться так просто).

  307. Leonardo Leonardo говорит:

    Ну что же! Важная веха — я собрал ядро под Linux! Оно даже завелось практически с первого раза, но пока есть еще багулечки. Но багулечки я отловлю, как только буду в адекватном состоянии, а не с 5 часов сна :-(

  308. Leonardo Leonardo говорит:

    Давненько не писал тут ничего. Занят. Работаем над проектом. В процессе портирования и прикручивания логики лицензий к ядру. Надеюсь, что в ближайший месяц-два мы все же родим нашу первую альфу. Медленно, но уверенно движемся в ее сторону.

  309. Leonardo Leonardo говорит:

    Решили уже заниматься и дизайном. Разместили конкурс на создание лого. Пока что-то там не шибко круто народ рисует :-(
    https://www.fl.ru/projects/1714580/logotip-kompanii-resanity-i-produkta-resanity-stubit.html

    Но, думаю, что из того, что рожают, все же получится выбрать пару лого для старта.

  310. Leonardo Leonardo говорит:

    В общем, хватит сопли жевать, пора уже доделать менеджер лицензий и прикрутить его к ядру!

  311. Leonardo Leonardo говорит:

    Делаем дизайн, делаем сайт, прикручиваем инфраструктуру к ядру и … уже становится немного виден свет в конце тоннеля :-)

  312. Leonardo Leonardo говорит:

    Есть некоторые заморочки с дизайном, а точнее — с дизайнерами, но мы все же движемся вперед. Также не останавливаются ни на шаг работы по «ведру» (ядру) системы. Публичная альфа неизбежна, жаль, что уже до НГ точно ничего не успеем :-(

  313. Leonardo Leonardo говорит:

    Увы, как я и предполагал, до НГ мы не успели «завершить кольцо». Однако, наш «подопытный» Сапер уже почувствовал на своей шкуре, что значит работать под разрешением :-) А это значит, что Новый Год принесет нам скорую альфу, затем бету, ну и потом наш долгожданный первый релиз!!! Удачи нам и тебе, наш проектик! :-)

  314. Leonardo Leonardo говорит:

    Нечасто получается тут писать, мало времени. Доделываю клиентскую часть ядра. Далеко не так просто, как хотелось бы, так как много тонкостей. Но постепенно движется.

  315. Leonardo Leonardo говорит:

    Пару дней назад я наконец-то «замкнул кольцо», это значит, что весь цикл лицензирования и исполнения (пока в сыром виде), но реализован.
    Сейчас работаю над StubIt Runtime API, так как оно тесно интегрировано в логику клиентской части ядра. После этого надо будет стабилизировать систему и постепенно готовиться к альфа-релизу.

  316. Leonardo Leonardo говорит:

    Работа над клиентской частью ядра (по ряду технических причин) происходит в режиме «колдуй баба, колдуй дед» :-)
    Но ничего, деться ему некуда, ядру этому. Что-нибудь родим скоро!

  317. Leonardo Leonardo говорит:

    Удивительно, но чем мы ближе к «открытой альфа», тем больше работы становится, больше нагрузки, больше суеты. Сразу нужно и то, и то, и другое, ох мать :-)
    Думаю справимся, не маленькие :-)

    • Гол Гол говорит:

      Ну эт старое доброе правило 90/10. 90% работы занимает 10% времени. Оставшиеся 10% работы занимают 90% полного времени разработки.

      Ну, вы, да, не расслабляйтесь там :-)

      • Leonardo Leonardo говорит:

        Да уж расслабишся тут 😉 Причем, что самое интересное, основными тормозами сейчас являемся не мы, а внешние разработчики…

  318. Leonardo Leonardo говорит:

    Лейтмотив разработчика — «семь раз реверт, один раз — мерж» 😉

  319. Leonardo Leonardo говорит:

    Нда… А у «нормальных» людей вчера и сегодня выходной…

  320. Leonardo Leonardo говорит:

    Очередной день. Утро. Пришел в «офис», налил чайку, собираюсь продолжить работу на проектом.
    На текущий момент имеем:

    1. почти сделанный первоначальный дизайн GUI-ов
    2. почти сделанный сайт (без дизайна пока что)
    3. почти готовую программную инфраструктуру (доделываю EB и потом доделаю cnode)
    4. закупленные сервера и почти готовые к размещению в датацентре

    … многие вещи «почти» готовы… но работы еще предстоит очень много :-(

  321. Leonardo Leonardo говорит:

    Новый день. Среда. Не выспался, так как лег поздно, а рано утром меня разбудили домочадцы. Пришел в «офис», налил кофейку, собираюсь продолжить работу.
    Вчера получился достаточно неплохой и эффективный рабочий день, мне удалось завершить доработку EB и исправить неприятную ошибку на enode.
    Сегодня планирую продолжить исправлять известные мне ошибки на enode и, возможно, продолжить работы над cnode.

  322. Leonardo Leonardo говорит:

    Сегодня знаменательный день, сегодня первый раз за всю историю проекта, после исправления нескольких багов, наконец-то «взлетел» 64-битный Сапер и Калькулятор. Урана!!! Есть еще некоторые баги, но лично я не ожидал, что так, относительно легко оно «взлетит»…

  323. Leonardo Leonardo говорит:

    Ну что же, бойтесь жулики, очень скоро мы выйдем в открытую альфа!!!

  324. Leonardo Leonardo говорит:

    …снесли первые тэги… а это значит… что альфа-релиз вот-вот наступит! :-)

  325. Leonardo Leonardo говорит:

    Ну что же, нежданно-негаданно… А мы как бы потихоньку «выползаем» все же в альфу!!! Софт готов, там пока ссылки в нем указывают на девелоперскую версию сайта (это мы поправим на днях), и его можно использовать!
    Пока на «боевом» исполнителе еще нет тарифов (тоже появятся на днях), зато доступен бесплатно «тестовый» исполнитель, где можно оторваться вволю 😉

  326. Leonardo Leonardo говорит:

    Что-то не туда я вчера запулил ответ :-) Дублирую…
    Ну что же, open-alpha показала, что нам еще предстоит немало сделать… Так что резво взяли и напрягли булки! :-)

  327. Leonardo Leonardo говорит:

    Неожиданно возникли заморочки на билд-роботе при сборке 64-битного профайлера-коллектора (плагина под DynamoRIO). Делать нечего — нужно разбираться.

  328. Юлия говорит:

    Леонардо, доброго времени суток. Прочитала Ваши комментарии о Герлейне, просветите, плз, по написанию и защите дипломной работы у данного преподавателя. Моя дочь попала к нему на диплом. Бьётся в конвульсиях уже по данному поводу. Говорят, что относится хорошо, за экзамены ставит четверки, а на дипломе «валит» нещадно. Спасибо заранее.

    • Leonardo Leonardo говорит:

      Юлия, добрый день.
      Увы, не смогу ничего сказать по поводу дипломной работы у Герлейна, так как сам не сдавал его ему. Были только лекции, зачеты, экзамены.
      Одно могу сказать — к девушкам он относится несколько мягче, чем к парням, парней стебет нещадно :-)
      Как сейчас не знаю, но раньше он любил поприкалываться, бывало, что и нахаляву народу ставил тройки, хотя они не знали вообще ничего. А бывало зачетки летали через всю аудиторию — это когда разозлят его.
      Мое личное мнение сложилось такое — если к нему уважительно относиться и не тупить (знать хотя бы на 3-4 балла предмет), то всегда можно сдать.

  329. Leonardo Leonardo говорит:

    Ну что же, мы наконец-то зарегистрировали торговые знаки (торговые марки) в Российской Федерации.

    Это торговая марка (знак) «ReSanity» и торговая марка (знак) «StubIt».

Добавить комментарий

Ваш e-mail не будет опубликован.