• Слабо поднять такой крошечный контейнер? Создаем контейнеризованный HTTP-сервер на 6kB

    • Translation
    TL;DR  я решил создать самый маленький образ контейнера, при помощи которого все-таки можно сделать что-нибудь полезное. Опираясь на преимущества многоступенчатых сборок, базового образа scratch и крошечного http-сервера на основе этой сборки, я смог ужать результат до 6.32kB!





    Если предпочитаете видео, вот ролик по статье, выложенный на YouTube!

    Раздутые контейнеры


    Контейнеры часто превозносятся как панацея, позволяющая справиться с любыми вызовами, связанными с эксплуатацией ПО. Притом, как мне нравятся контейнеры, на практике мне часто попадаются контейнерные образы, отягощенные разнообразными проблемами. Распространенная беда – размер контейнера; у некоторых образов он достигает многих гигабайт!  

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

    Задача


    Правила довольно просты:
    Читать дальше →
  • Игры, которые играют в людей: что книга “Игра в цифры” рассказывает об игровой аналитике

      Из когда-то нишевого сегмента рынка игры сегодня превратились в высокодоходный транснациональный бизнес, опережающий по масштабам музыкальную индустрию и кинематограф. В игры уже вовлечено более 2,5 млрд человек (и это совсем не предел), а выручка ежегодно бьет новые рекорды. Причина этого — не только в доступности игр и в росте свободного времени у населения: под капотом современных игр находятся технологии вовлечения, эффективно использующие математику, поведенческую экономику, психологию и дизайн. А в основе этих технологий — системы игровой аналитики: именно они позволяют отследить поведение пользователей и определить наиболее “цепляющие” инструменты. И, в конечном счете, сделать так, чтобы люди проводили в играх как можно больше времени, получали максимум удовольствия — и приносили максимум денег разработчикам.

      Аналитика, таким образом, — это кровеносная система современных игр, особенно в сегменте free-to-play (большинство бесплатных игр, в которых вам оставляют возможность заплатить за улучшения).

      image

      В конце прошлого года вышла книга Василия Сабирова “Игра в цифры” — первое российское издание, полностью посвященное игровой (и продуктовой) аналитике. Под катом — обзорный пересказ книги.
      Читать дальше →
    • Использование алгоритма Прима для генерации соединённых друг с другом пещер

      • Translation


      Я решил объяснить один из алгоритмов генерации карты, используемых в моей игре In the House of Silence. Главное преимущество этого способа заключается в том, что в отличие от других алгоритмов, он никаким образом не может сгенерировать карту с разделёнными частями.

      Генерация идеального лабиринта



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

      Для понятности я привёл псевдокод, описывающий алгоритм Прима. Будет довольно просто приспособить его под любой язык программирования.
      Читать дальше →
      • +50
      • 8.5k
      • 5
    • Тренируемся дома: отжимания по программе Пола Уэйда

      • Translation

      image


      Представляю программу Тюремных Тренировок Пола Уэйда. Начнём с серии классических упражнений со своим весом для верхней части тела — отжиманиям.


      Тюремные Тренировки представляют собой самые лучшие и эффективные методы обучения работе со своим весом, из когда-либо существовавших. Многие из этих забытых, но действенных техник находятся на грани исчезновения. Современный бодибилдинг меняет наше мышление, навязывая свои убеждения. И даже заключённые сейчас получили доступ к тренажёрным залам.


      Серия сосредоточена на цепочке из 10 последовательных упражнений. Когда освоите одно упражнение, то перейдёте к следующему и так далее…
      Мы называем базовые упражнения как «10 уровней», и достигнув 10 уровня, вы станете сильнейшим настолько, насколько это возможно для человека в этих движениях. По этой причине, последняя ступень именуется «уровнем мастера». Вам станет понятнее, как это работает, если дополнительно ознакомитесь с книгой Тренировочная Зона (Издательство Питер).

      Читать дальше →
    • Приседания по программе Пола Уэйда

      • Translation

      image


      Техника / как выполнять


      Правило первое: правильная постановка ног


      Перед началом приседаний надо посмотреть на позицию ног. Также как ладони продолжают руки, так и от положения ступней зависит позиция ног. Начинайте, расположив ступни симметрично с носками развёрнутыми наружу под углом 30-40 градусов. Однако, продолжайте экспериментировать, чтобы добиться удобного положения под себя. Колени смотрят в ту же сторону, что и носки. Они не должны быть параллельны друг другу.


      image


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


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

      Читать дальше →
    • Кунг-фу стиля Linux: мониторинг дисковой подсистемы

      • Translation
      Если, работая в Linux, нужно быстро взглянуть на сведения о работающих процессах — можно воспользоваться командой top, или — что немного лучше — командой htop. А как быть, если надо получить данные о состоянии дисковой подсистемы? Решить эту задачу помогут специализированные инструменты, некоторые из которых распространены далеко не так широко, как top.


      Читать дальше →
    • Как переиспользовать код с бандлами Symfony 5? Часть 1. Минимальный бандл

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


      В первой части:


      • Зачем нужны бандлы
      • Example Project: Calendar
      • Настраиваем окружение: 2 способа разработки
      • Создаем минимальный бандл
      • Подключение бандла в проект
      Читать дальше →
    • Взять, разобраться и настроить свой домашний кинотеатр: 10 экспертных обзоров и руководств

        Ранее мы обсудили выбор между смарт-тв и классическим телевизором, плюс — затронули тему акустической подготовки помещения. Продолжаем анализировать компоненты домашнего кинотеатра — говорим о настройке картинки телевизора, 4k-проекторах, экранах для них, точечно затрагиваем тему саундбаров и делимся выпусками подкаста о строительстве кинозала.

        Читать далее
      • Введение в React, которого нам не хватало

        • Translation
        React — это самая популярная в мире JavaScript-библиотека. Но эта библиотека не потому хороша, что популярна, а потому популярна, что хороша. Большинство существующих вводных руководств по React начинается с примеров того, как пользоваться этой библиотекой. Но эти руководства ничего не говорят о том, почему стоит выбрать именно React.

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



        Этот материал (вот, если интересно, его видеоверсия) написан для тех, кто хочет найти ответ на следующие вопросы: «Почему React? Почему React работает именно так? С какой целью API React устроены так, как устроены?».
        Читать дальше →
      • Синус-лифтинг: как это делается?

        • Tutorial
        image

        Здравствуйте, уважаемые друзья! Сегодня я расскажу и покажу вам, как проводится синус – лифтинг с одномоментной имплантацией.

        ВНИМАНИЕ!-Uwaga!-Pažnju!-Attention!-Achtung!-Attenzione!-ВНИМАНИЕ!-Uwaga!-Pažnju!

        Ниже будут представлены фотографии сделанные во время операции! С видами зубов, дёсен, крови и расчлененки. Слабонервных прошу отказаться от прочтения данной статьи.
        Читать дальше →
      • ClickHouse для продвинутых пользователей в вопросах и ответах

          В апреле инженеры Авито собирались на онлайн-посиделки с главным разработчиком ClickHouse Алексеем Миловидовым и Кириллом Шваковым, Golang-разработчиком из компании Integros. Обсуждали, как мы используем систему управления базами данных и какие сложности у нас возникают.


          По мотивам встречи мы собрали статью с ответами экспертов на наши и зрительские вопросы про бэкапы, решардинг данных, внешние словари, Golang-драйвер и обновление версий ClickHouse. Она может быть полезна разработчикам, которые уже активно работают с СУБД «Яндекса» и интересуются её настоящим и будущим. По умолчанию ответы Алексея Миловидова, если не написано иное.


          Осторожно, под катом много текста. Надеемся, что содержание с вопросами поможет вам сориентироваться.


          Читать дальше →
          • +32
          • 15.3k
          • 2
        • Golang + Phaser3 = MMORPG — Клиент и Сервер

            image

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

            В прошлой статье наш проект выглядел так:

            image

            Теперь мы будем использовать и другие инструменты для веб-разработки, надеюсь у вас установлен Node.js и npm, если нет, то срочно установите. И так открываем терминал и запускам:
            Читать дальше →
          • Как создавать и использовать словари в ClickHouse

            • Tutorial


            Если вы открыли эту дверь статью, то наверняка, вы уже имели дело с ClickHouse и можно упустить интересные подробности об его удобстве и скорости, а перейти сразу к делу – собственно, к тому, как создавать словари и работать с ними в ClickHouse.

            Читать дальше →
          • Мои любимые трюки в JavaScript

            • Translation

            Приветствую. Представляю вашему вниманию перевод статьи «My Favorite JavaScript Tips and Tricks», опубликованной 28 июля 2020 года автором Tapas Adhikary



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


            При этом, некоторые приёмы обладают преимуществами перед аналогами. В данной статье я привожу список моих любимых. Уверен, какие-то из них вам также будут знакомы.

            Читать дальше →
          • Теория и практика использования ClickHouse в реальных приложениях. Александр Зайцев (2018г)


              Несмотря на то, что данных сейчас много почти везде, аналитические БД все еще довольно экзотичны. Их плохо знают и еще хуже умеют эффективно использовать. Многие продолжают "есть кактус" с MySQL или PostgreSQL, которые спроектированы под другие сценарии, мучиться с NoSQL или переплачивать за коммерческие решения. ClickHouse меняет правила игры и значительно снижает порог вхождения в мир аналитических DBMS.


              Доклад с BackEnd Conf 2018г и он опубликован с разрешения докладчика.

              Читать дальше →
            • Памятка по работе с Canvas API

              • Tutorial


              Доброго времени суток, друзья!

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

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

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

              Код разбит на отдельные блоки-песочницы, которые для удобства чтения помещены под «кат».

              Парочка важных моментов.

              Ширину и высоту холста лучше определять с помощью атрибутов:

              <canvas width="300" height="300"></canvas>
              

              Если мы хотим, чтобы холстом была вся область просмотра, то делаем следующее:

              const width = canvas.width = innerWidth
              const height = canvas.height = innerHeight
              

              Холст и двумерный контекст рисования я обычно определяю следующим образом:

              const canvas = document.querySelector('canvas')
              // не путать с объектом jQuery
              const $ = canvas.getContext('2d')
              

              Довольно слов.
              Читать дальше →
              • +20
              • 9.5k
              • 2
            • Велотренажер #Самоизоляция или как угомонить ребенка на карантине


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

              В сложившейся ситуации с пандемией SARS-CoV-2 (COVID-19) все мы с вами сейчас должны находиться на карантине самоизоляции.

              Поэтому вопрос о том, как найти активное развлечение для детей запертых в четырёх стенах стоит как никогда остро. Надо ещё и постараться чтоб эти четыре стены остались, по-возможности, в целости и сохранности.
              Читать дальше →
            • Генерируем тексты песен цепями Маркова

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


              Дисклеймер: автор хотел повеселить себя вечером и не придумал ничего лучше, как:


              В качестве корпуса для "обучения" цепи я буду использовать текст песен группы Кис Кис.


              image


              Пикча выше иллюстрирует то как работает цепь Маркова. А вот неплохая статья.

              Читать дальше →
            • Создание карандашного эффекта в SVG

              • Translation
              Моя игра Dragons Abound создаёт карты в векторном графическом формате SVG. Векторная графика имеет множество особенностей (например, зум без потерь), что удобно для карт. Также векторная графика хороша для создания чётких линий, например, чернильных контуров:


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


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

              Это достаточно серьёзное ограничение векторной графики, поэтому в SVG добавлены хитрости, позволяющие более эффективно воспроизводить некоторые из подобных эффектов текстур. Я исследую некоторые из этих функций SVG для создания эффекта, напоминающего карандашную линию. Разумеется, существует множество более сложных решений для воссоздания карандашных линий. Об этой теме написаны целые научные статьи. Но я просто надеюсь создать довольно простой фильтр, обеспечивающий приемлемый результат.
              Читать дальше →
              • +66
              • 9.5k
              • 9