• Встроить JSON в Embedded? Проще простого

      image

      Не так давно у меня появилась необходимость загружать конфигурацию приложения при очень ограниченных ресурсах. Не было доступа, практически, ни к каким стандартным функциям C. Очень повезло, что были стандартные функции по работе с памятью malloc()/free().

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

      Из этого можно сделать вывод, что надо либо:
      1. Писать свой редактор бинарного формата.
      2. Использовать текстовый формат.

      Читать дальше →
    • Zen Diary — личный дневник с возможностью шифрования



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

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

        Окрылённый такой победой, я решил развивать и улучшать этот продукт с учётом тех многих пожеланий и советов, что я получил. И это развитие вылилось в новый проект под названием Zen Diary (http://zendiary.org).
        Читать дальше →
      • АнтиБлог: дневник только для себя



          Предисловие


          Друзья, я, к моему глубочайшему сожалению, не умею писать красивые, длинные и складные статьи. Я всего лишь разработчик на C++. Некоторые даже говорят, что хороший. И вот случилась со мной неприятность — написал я программу, но рассказать о ней толково не могу. Рассказать так, чтобы люди захотели ей пользоваться. Нет, Вы не подумайте, это не первая моя программа, у меня за спиной восемь лет опыта на C++, десять лет программирования в принципе на многих языках. Просто именно сейчас я захотел разрабатывать не ради разработки, а ради того, чтобы моей программой пользовались люди, чтобы она была кому-то, кроме меня, полезной. Чтобы я знал, что я это делаю не только ради получения опыта, хотя это тоже очень ценно само по себе, но и ради того, чтобы кто-то, может в соседнем доме, а может на другом конце планеты, кликал по иконке моей программы. Мне бы, от осознания этого, было чертовски приятно. И не важно, какую именно задачу эта программа выполняет, важно лишь то, что она работает. Работает на благо людям. Ведь разработчики именно для того и есть на свете, чтобы их творения приносили пользу другим людям.
          Читать дальше →
        • Пишем свой отладчик под Windows [часть 2]

          • Перевод
          • Tutorial


          Обязательно прочитайте первую часть, если Вы до сих пор этого не сделали. Иначе будет тяжело разобраться во второй части.

          Предисловие


          Эта статья является продолжением предыдущей части «Пишем свой отладчик под Windows». Очень важно, чтобы Вы её прочитали и поняли. Без полного понимания того, что написано в первой части, Вы не сможете понять эту статью и оценить весь материал целиком.
          Единственный момент, оставшийся неупомянутым в предыдущей статье, это то, что наш отладчик может отлаживать только машинный код. У Вас не получиться начать отладку управляемого (managed) кода. Может быть, если будет четвёртая часть статьи, я в ней также рассмотрю отладку и управляемого кода.
          Я бы хотел показать Вам несколько важных аспектов отладки. Они будут включать в себя показ исходного кода и стека вызовов (callstack), установки точек останова (breakpoints), входа внутрь исполняемой функции (step into), присоединение отладчика к процессу, установка системного отладчика по умолчанию и некоторые другие.
          Читать дальше →
          • +45
          • 16,4k
          • 2
        • Пишем свой отладчик под Windows [часть 1]

          • Перевод

          Вступление



          Все мы, время от времени, используем дебаггер для отладки программ. Отладчик может использоваться с C++, C#, Java и ещё сотней других языков. Он может быть как внешним (WinDbg), так и встроенным в среду разработки (Visual Studio). Но вы хоть раз задавались вопросом, как же работает отладчик?
          И вам повезло. В этом цикле статей мы разберёмся от и до, как же работает отладка изнутри. В этой статье рассматривается только написание отладчика под Windows. Без компиляторов, линковщиков и других сложных систем. Таким образом, мы сможем отлаживать только исполняемые файлы, так как мы напишем внешний отладчик. Эта статья потребует от читателя понимание основ многопоточности.
          Читать дальше →
          • +77
          • 36,9k
          • 9
        • Инъекция кода в .NET CLR: изменение IL-кода во время выполнения программы

          • Перевод

          Предисловие



          Изменение .NET метода MSIL кода во время выполнения приложения – это очень круто. Это настолько круто, что можно перехватывать вызовы функций (hooking), сделать защиту своего ПО и другие удивительные вещи. Именно поэтому мне уже давно хотелось это осуществить, но была одна проблема – MSIL код компилируется в машинный код с помощью JIT перед тем, как мы сможем что-либо с этим кодом сделать. А так как .NET CLR не документирована и изменяется от версии к версии, то мы и будем искать стабильный и надёжный путь, независимый от точного расположения адресов в памяти.
          Читать дальше →
          • +88
          • 30,9k
          • 7
        • Решение судоку с помощью веб-камеры в реальном времени

          • Перевод

          Предисловие




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

          Программа написана с помощью низкоуровневого языка C++, потому что я действительно хотел понять, как же это все работает изнутри. Если вы тоже хотите начать изучение компьютерного зрения, то для этого пригодиться библиотека OpenCV. На CodeProject вы сможете найти несколько уроков по ней. Изображение с веб-камеры получается с помощью исходного кода Вадима Горбатенко (AviCap CodeProject).
          Читать дальше →
        • Пишем апплет-переводчик для Gnome [python]

            Предисловие



            Сидел я как-то тихим вечером, читал англоязычные сайты. Когда понадобилось перевести пару фраз, я как обычно открыл новую вкладку, набрал translate.google.ru, скопировал, вставил текст, нажал перевести, прочитал. И ведь такую длинную последовательность действий приходится проделывать каждый раз, когда есть необходимость перевести текст, пару фраз или целый абзац. Да, можно использовать какой-либо клиент для перевода, но окно программы придется открывать или доставать из-под других окон. Да, последовательность короче, но все равно длинная. Было бы здорово сократить последовательность действий до скопировать, нажать кнопку. Так появилась идея для апплета. Его логика такая:
            • На панели появляется кнопка «GTranslate»
            • Если вам надо перевести текст, то копируете его и нажимаете на кнопку
            • Автоопределение языка

            Поехали