• Запись и чтение данных в блокчейне биткоина

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

    С помощью библиотеки blockchaindata-lib запись и чтение данных в блокчейне можно организовать буквально в несколько строк кода.
    Читать дальше →
  • Сделайте свой анонимайзер за 10 минут

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

        Думаю многие знают, как работает CGI взаимодействие между клиентом и сервером: клиент получает от сервера и отдает серверу данные через стандартные stdin и stdout. Многие наверное даже сами писали CGI клиентов, ведь по сути — любой скрипт для веб-сервера это и есть CGI-клиент.
        А многие ли задавались вопросом, как именно происходит эта «магия»? Каким образом стандартные функции для ввода/вывода вместо экрана взаимодействуют с сервером?

        Результаты поиска ответа в сети меня не удовлетворили и я решил сам написать простейший CGI сервер, который сможет:
        • Запускать дочерний процес — CGI скрипт
        • Передавать скрипту переменные окружения и переменные командной строки
        • Принимать от скрипта ответ
        • Завершаться, когда завершится процесс клиента

        Кроме этого, мне хотелось, чтобы клиент и сервер компилировались как в Windows, так и в Linux.
        Подробности
        • +9
        • 28.6k
        • 2
      • Самый короткий веб-сервер на с++

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

          Полный код библиотеки можно посмотреть на гитхабе, а если в двух словах, то я добавил немного «египетских скобок», новомодных лямбда-функций и шаблонов. На сегодняшний день результатом стала кроссплатформенная библиотека для создания асинхронных серверов, состоящая из 5 файлов с общим размером 22.5 килобайт. Версия библиотеки для Линукс состоит из одного файла размером 18 килобайт (517 строк кода).

          В этой статье я коротко расскажу, как работает библиотека и покажу, как с ее помощью написать полностью работоспособный веб-сервер для статических сайтов.
          Читать дальше →
        • Bitcoin: Децентрализованная электронная денежная система

          • Translation
          Предлагаю вниманию сообщества вольный перевод оригинальной статьи Сатоси Накамото «Bitcoin: A Peer-to-Peer Electronic Cash System».

          От переводчика:
          Я не являюсь профессиональным переводчиком и плохо разбираюсь в криптографии, но вот недавно заинтересовался технологией Биткоин и захотел начать изучение с первооснов. Беглый поиск по интернету не дал мне перевода основополагающей статьи Сатоси Накамото и я решил попробовать перевести ее сам.
          Вскоре после того как перевод был начат я понял, что английский язык, скорее всего, не является родным для автора статьи поскольку иногда было крайне трудно понять — что автор подразумевает и зачем в одном предложении так много частиц «and». Однако большинство трудностей удалось преодолеть и я решил представить сей конечный продукт публике.

          Читать дальше →
        • Кроссплатформенный сервер с неблокирующими сокетами. Часть 4

            Эта статья продолжает мои предыдущие:
            Простейший кросcплатформенный сервер с поддержкой ssl
            Кроссплатформенный https сервер с неблокирующими сокетами
            Кроссплатформенный https сервер с неблокирующими сокетами. Часть 2
            Кроссплатформенный https сервер с неблокирующими сокетами. Часть 3

            В своих статьях я поэтапно расписываю процесс создания однопоточного кроссплатформенного сервера на неблокирующих сокетах.
            Во всех предыдущих статьях, сервер принимал и отправлял сообщения только по ssl протоколу. В этой статье я опишу добавление в сервер поддержки обычного нешифрованного tcp протокола и научу сервер отправлять в браузер графический файл.
            Но сначала немного пройдусь по комментариям к предыдущим статьям.
            Читать дальше →
            • +6
            • 17.3k
            • 2
          • Кроссплатформенный https сервер с неблокирующими сокетами. Часть 3

              В этой статье я продолжаю усовершенствовать однопоточный https сервер на неблокирующих сокетах. Предыдущие статьи с ссылками на исходный код, можно найти здесь:
              Простейший кросcплатформенный сервер с поддержкой ssl
              Кроссплатформенный https сервер с неблокирующими сокетами
              Кроссплатформенный https сервер с неблокирующими сокетами. Часть 2

              В конце этой статьи будет ссылка на исходный код сервера, который я протестировал в Visual Studio 2012 (Windows 8 64bit), g++4.4 (Linux 32bit), g++4.6 (Linux 64bit). Сервер принимает соединения от любого количества клиентов и отправляет в ответ заголовки запроса.
              Но начну я статью пожалуй, с ответов на некоторые комментарии к предыдущим.
              Читать дальше →
            • Кроссплатформенный https сервер с неблокирующими сокетами. Часть 2

              • Tutorial
              Эта статья является продолжением статей:
              Простейший кросcплатформенный сервер с поддержкой ssl
              Кроссплатформенный https сервер с неблокирующими сокетами
              В этих статьях я постепенно из простенького примера, входящего в состав OpenSSL стараюсь сделать полноценный однопоточный веб-сервер.
              В предыдущей статье я «научил» сервер принимать соединение от одного клиента и отсылать обратно html страницу с заголовками запроса.
              Сегодня я исправлю код сервера так, чтобы он мог обрабатывать соединения от произвольного количества клиентов в одном потоке.
              Читать дальше →
            • Кроссплатформенный https сервер с неблокирующими сокетами

              • Tutorial
              Эта статья является продолжением моей статьи Простейший кросcплатформенный сервер с поддержкой ssl.
              Поэтому для того, чтобы читать дальше очень желательно прочитать хотя бы часть предыдущей статьи. Но если не хочется, то вот краткое содержание: я взял из исходников OpenSSL файл-пример «serv.cpp» и сделал из него простейший кроссплатформенный сервер, который умеет принимать от клиента один символ.
              Теперь я хочу пойти дальше и заставить сервер:
              1. Принять от браузера весь http заголовок.
              2. Отправить браузеру html страницу на которую будет выведен http заголовок.
              3. Кроме этого, я хочу чтобы сокеты не блокировали процесс сервера и для этого я переведу их в так называемый «неблокирующий режим».
              Читать дальше →
            • Простейший кросcплатформенный сервер с поддержкой ssl

              Не так давно передо мной встала задача: написать кроссплатформенный сервер для обработки запросов по протоколу ssl. До этого я писал сервера для обычных, не шифрованных протоколов, но с ssl столкнулся впервые.
              Беглый обзор интернета показал, что лучшим решением будет не велосипедостроение, а использование библиотеки OpenSSL.
              В этой статье я не хочу рассматривать процесс установки OpenSSL на Linux и Windows, замечу лишь, что для Windows процесс этот оказался нетривиальным. А рассказать я хочу о том, как мне удалось скомпилировать в Visual Studio пример простейшего сервера, входящий в состав исходников OpenSSL.
              Неискушенному читателю может показаться: «что тут особенного — создал проект, включил в него готовый исходник, запустил»… Однако обо всем по порядку.

              Читать дальше →