• ORM: почему эта задача не имеет решения, но делать с этим, тем не менее, что-то нужно



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

      Причин, наверно, как всегда оно бывает, много. Наверно все они так или иначе достойны рассмотрения, но здесь и сейчас мы поговорим о задаче объектно-реляционного отображения (Object-Relational Mapping, ORM), которая всегда в каком-либо виде стоит за всеми этими «кнопочками и галочками».
      Читать дальше →
    • Увеличиваем случайность того, что и так [наверно] [почти] случайно


        случайные числа вкуснее, если их немножко поперчить

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

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

        В погоне за качественными случайными числами люди изобретают весьма остроумные приспособления (см. например здесь и здесь). В принципе, весьма неплохие источники случайности встроены в API операционных систем, но дело серьёзное, и нас всегда немножко гложет червячок сомнения: а достаточно ли хорош тот ГСЧ, который я использую, и не подпорчен ли он… скажем так, третьими лицами?
        Читать дальше →
      • Асимметричная криптография с одноразовым секретным ключом: описание идеи и возможное применение


          (для понимания того, о чём говорится в этой статье, необходимо и достаточно хотя бы в общих чертах представлять, что такое асимметричная криптография и как работает электронная подпись)

          Сценарий использования одноразового секретного ключа:

          1. Создаётся ключевая пара, состоящая из секретного (secret key, SK) и открытого (public key, PK) ключей.
          2. При помощи секретного ключа выполняется ряд операций. Первая из них, создание открытого ключа, уже выполнена на первом шаге.
          3. Выполняется на первый взгляд противологичное действие – секретный ключ уничтожается без возможности восстановления.

          Читать дальше →
        • Альтернативы блокчейну для ведения защищённых реестров


          Технология «блокчейн» прекрасна и перспективна. Всё в ней было бы совсем замечательно, если бы несколько досадных нюансов:

          1. Очень долго. Время добавления транзакции в цепочку биткоина, например, оценивается от минуты до получаса. В Ethereum добавляется быстрее, но в любом случае довести время до долей секунды невозможно. Нечего и думать о том, чтобы сделать добавление данных в блокчейн частью OLTP-транзакции.
          2. Майнинг — это очень ресурсоёмко. Он, собственно, и нужен для того, чтобы добавить в архитектуру вычислительную сложность.
          3. Очень дорого. Следствие ресурсоёмкости.
          4. Технология отвратительно масштабируется как вверх, так и вниз. Если нужно построить систему, которая будет регистрировать миллиарды записей ежедневно, блокчейн не годится. Также блокчейн будет стрельбой из пушки по воробьям, если его пытаться приспособить для надёжного логирования какой-нибудь мелкой ерунды.

          Хотелось бы иметь технологию, которая бы одновременно и реестры позволяла вести непрошибаемо надёжным образом, и была бы как-то попроще и подешевле.
          Но как?
        • Философия информации, часть 7-я, заключительная. Системообразование


            Окончание стартовавшей отсюда семисерийной сказки.

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

            Читать дальше →
          • Философия информации, глава 6. Существа


              Начавшееся здесь повествование неизбежно вывело нас на обсуждение надличностных сущностей. На первый взгляд они, возможно, и не имеют непосредственного отношения к тому, что мы привыкли называть информационными технологиями, но никакая философия информации не может обойти стороной этот вопрос. Кому любопытно, добро пожаловать под кат.
              Читать дальше →
            • Философия информации, глава 5. Целенаправленно действующий субъект


                Начав отсюда, потихоньку добрались до сладенького, до самых головоломных вещей — причинности, времени, феномена управления и свободы воли. Заодно походя выясняем, могут ли компьютеры мыслить и могут ли роботы обладать свободой воли.
                Читать дальше →
              • Философия информации, глава 4. Системы


                  Эта публикация — четвёртая часть сериала, начало которого здесь.

                  Краткое содержание предыдущих серий. Сначала мы разобрались с тем, что об информации нельзя говорить как о материи, что пусть материя будет материальной, а информация материальной быть не должна. Потом вниманию любопытной публики была представлена логическая конструкция, позволяющая говорить о существовании информации так, чтобы если её «зазаемление» на материю и происходило, то исключительно аккуратно и правильно. Для того, чтобы двинуться дальше, пришлось изобрести специальный инструмент обоснования существования предметов рассуждения, который был описан в 3-й главе. Теперь мы подошли к понятию «система». Кому интересно — милости прошу под кат.

                  Читать дальше →
                • Философия информации, глава 3. Основания


                    Эта публикация — третья часть сериала, начало которого здесь. Если вы не ознакомились с началом истории, то вам, возможно, вообще не будет понятно, что этот текст здесь делает.

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

                    Читать дальше →
                  • Философия информации, глава 2. Существование информации


                      Перед прочтением этого текста рекомендуется прочитать начало этой истории. Иначе будет не понятно, зачем понадобилось выстраивать сложную конструкцию вместо того, чтобы сделать как обычно, по-простому.
                      Читать дальше →
                    • Философия информации, часть 1-я


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

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

                      Читать дальше →
                    • Хакнуть Ландауэра

                      В 1961-м году Рольф Ландауэр в своей статье «Irreversibility and heat generation in the computing process» сформулировал принцип, согласно которому в любой вычислительной системе, независимо от её физической реализации, при потере 1 бита информации выделяется теплота в количестве по крайней мере W = kB T ln2, где kB − постоянная Больцмана, а T − температура вычислительной системы в кельвинах.

                      То есть если вычисление производится при комнатной температуре (300K), то при потере 1 бита данных вычислительная система не может не рассеять в окружающее пространство примерно 2,7×10-21 Дж.

                      Считается, что единственный способ преодолеть это ограничение − использовать так называемые обратимые вычисления. В этой статье я докажу, что принцип Ландауэра не является догмой, и преодоление устанавливаемого им барьера возможно в том числе и без использования обратимых вычислений.
                      Читать дальше →