• 13 игр, чтобы поиграть, взломать и убить ими эти выходные

    • Translation
    В конце ноября у нас стартует новый поток курса Разработчик игр на Unity и C#, и специально к нему мы делимся подборкой игр на тему Хеллоуина. Все они создавались на соревнованиях вроде Ludum Dare, JS13K и Game Off. Игры написаны на разных языках и движках, причём некоторые из них созданы всего за 48 часов. И у всех этих игр есть общая черта: исходный код этих игр открыт, так что давайте уже рубить и кромсать его! Пост не претендует на «высокий технический уровень», это просто подборка забавных проектов, которые, возможно, вдохновят вас на создание своих игр.

    ВНИМАНИЕ: в этом посте есть зомби, оборотни, существа из других измерений, мумии и многое другое! Действуйте на свой страх и риск.


    Приятного чтения!
  • Есть ли жизнь после Windows или куда развиваться виндовому системному администратору/инженеру в 2020 году?

    Вступление


    2019 год медленно, но верно подходит к своему логическому завершению. IT-отрасль продолжает активно развиваться, радуя нас большим количеством новых технологий и попутно пополняя наш словарный запас новыми определениями: Big Data, AI, Machine Learning (ML), IoT, 5G и т. д. В этом году особенно часто обсуждали Site Reliability Engineering (SRE), DevOps, микросервисы и облачные вычисления.

    Некоторые технологии, например, Blockchain и криптовалюты (Bitcoin, Ethereum и т.д.), похоже, уже прошли пик своей популярности (хайпа), поэтому широкая общественность получила возможность более трезво взглянуть на них, определив их положительные и отрицательные стороны, а также решив, где и как их целесообразнее всего использовать. Взвешенный взгляд на тему Blockchain и криптовалют можно найти в статье Алексея Маланова из «Лаборатории Касперского». Очень рекомендую ознакомиться с ней.

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

    Все идут в DevOps?


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


    Читать дальше →
  • Как сделать ваш HTML отзывчивым, добавив одну строку кода на CSS

    • Translation
    Привет, Хабр! представляю вашему вниманию перевод статьи «How to make your HTML responsive by adding a single line of CSS» автора Per Harald Borgen.



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

    Самое крутое, что для добавления отзывчивости потребуется написать одну строчку кода на CSS
    Читать дальше →
  • Телеграм-каналы о разработке игр

    Привет! Я инди-разработчик и автор канала о разработке игр. Решил поделиться с вами интересными геймдев ресурсами в Телеграме, которые сам регулярно читаю. За последние 3 года появилось много классных сообществ и авторских блогов о разработке, которые раньше были только в ВК. Надеюсь, будет полезно!


    Читать дальше →
  • Генерируем тайловые уровни и прячем квадраты от игрока

    • Translation

    Генерация уровней в Unexplored 2


    Мы очень гордимся генератором уровней игры Unexplored 2, это программа, отвечающая всем современным требованиям. В посте я расскажу о том, как создаются уровни игры.

    Нам не пришлось заново изобретать велосипед. В Unexplored 1 мы уже создали техники, которые сильно повлияли на успех первой игры. Unexplored 2 просто продолжила начатое. Фундамент нашей технологии состоит из двух частей: мы применяем многоэтапную генерацию, которая почти имитирует процесс, очень похожий на работу живого дизайнера уровней. Поверх него мы используем технику под названием "циклическая генерация подземелий", которая гораздо лучше справляется с генерацией естественно выглядящих уровней, чем большинство стандартных приложений генеративного создания контента. В этом посте я расскажу о первом аспекте. Адаптация циклической генерации подземелий к Unexplored 2 будет темой будущего поста.

    Имитация «человеческого» дизайна уровней


    Генератор уровней разбивает процесс генерации уровня на целое множество управляемых этапов. Он проходит путь от высокоуровневого планирования до низкоуровневой детальной карты уровня. По сути, он сначала создаёт набросок уровня, а затем начинает добавлять детали, пока уровень не станет завершённым и заполненным.
    Читать дальше →
    • +50
    • 13.6k
    • 7
  • Как превратить свою аватарку в Telegram в часы

    Недавно сидел я в одном сообществе программистов в Telegram и заметил один очень любопытный профиль. Любопытным было следующее — на главном фото у него было изображено нынешнее время. Мне стало жутко интересно как он этого добился, и я решил во что бы то ни стало написать такую же программу.

    image
    Читать дальше →
  • «Галоп пикселя — часть первая» — базовые понятия, этапы взросления, прикладные упражнения

    • Tutorial


    «Галоп пикселя», часть I — базовые понятия, этапы взросления, прикладные упражнения (линк)
    «Галоп пикселя», часть II — перспектива, цвет, анатомия и прикладные упражнения (линк)
    «Галоп пикселя», часть III — Анимация (линк)
    «Галоп пикселя», часть IV — Анимация света и тени (линк)
    «Галоп пикселя», часть V — Анимация персонажей. Ходьба (линк)

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

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

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


    Лопатить пиксели
  • Google Drive как хранилище для веб-приложения

    • Tutorial

    Предисловие


    Мое веб-приложение хранит данные в localStorage. Это было удобно, пока не захотелось, чтобы пользователь, заходя на сайт с разных устройств, видел одно и то же. То есть, понадобилось удаленное хранилище.

    Но приложение «хостится» на GitHub Pages и не имеет серверной части. Я решил не делать сервер, а данные хранить у третьей стороны. Это дает существенные преимущества:

    1. Не нужно платить за сервер, не болит голова о его стабильности и доступности.
    2. Меньше кода, меньше ошибок.
    3. Пользователю не нужно регистрироваться в моем приложении (это многих раздражает).
    4. Приватность выше, и пользователь знает, что его данные хранятся в месте, которому он, скорее всего, доверяет больше, чем мне.

    Сначала выбор пал на remoteStorage.js. Они предлагают открытый протокол обмена данными, достаточно приятное API, возможность интеграции с Google Drive и Dropbox, а также свои сервера. Но этот путь оказался тупиковым (почему — отдельная история).

    В итоге решил использовать Google Drive напрямую, и Google API Client Library (далее GAPI) как библиотеку для доступа к нему.

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

    Надеюсь, данная статья сэкономит вам время, если вы решите использовать Google Drive в вашем приложении.
    Читать дальше →
  • Занимаемся автоматизацией ведения паблика ВКонтакте

    Здравствуйте. Меня зовут Максим. Я PHP backend разработчик. Одним из моих самых сокровенных желаний всегда было создать паблик ВКонтакте. Я видел, сколько времени на это уходило у моих друзей и знакомых. Подготовка постов, планирование записей убивали кучу и маленькую тележку свободного времени, которое можно было потратить на что-то более полезное или приятное (или и то и то).


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

    Читать дальше →
  • Очередное незавоевание теней в Phaser, или польза велосипедов

      Два года назад я уже экспериментировал с веществами тенями в Phaser 2D. На последнем Ludum Dare мы внезапно решили сделать хоррор, а какой же хоррор без теней и света! Хрустнул я костяшками пальцев…

      … и ни черта не успел за LD. В игре конечно есть немного света и теней, но это жалкое подобие того, что должно было быть на самом деле.

      Вернувшись домой уже после отправки игры на конкурс, я решил все-таки “закрыть гештальт” и доделать эти несчастные тени. Что получилось — можно пощупать в игре, поиграться в демке, посмотреть на картинке, и почитать в статье.

      Читать дальше →
      • +12
      • 3.2k
      • 7
    • Регулярные выражения в Python от простого к сложному. Подробности, примеры, картинки, упражнения

      • Tutorial

      Регулярные выражения в Python от простого к сложному




      Решил я давеча моим школьникам дать задачек на регулярные выражения для изучения. А к задачкам нужна какая-нибудь теория. И стал я искать хорошие тексты на русском. Пяток сносных нашёл, но всё не то. Что-то смято, что-то упущено. У этих текстов был не только фатальный недостаток. Мало картинок, мало примеров. И почти нет разумных задач. Ну неужели поиск IP-адреса — это самая частая задача для регулярных выражений? Вот и я думаю, что нет.
      Про разницу (?:...) / (...) фиг найдёшь, а без этого знания в некоторых случаях можно только страдать.

      Плюс в питоне есть немало регулярных плюшек. Например, re.split может добавлять тот кусок текста, по которому был разрез, в список частей. А в re.sub можно вместо шаблона для замены передать функцию. Это — реальные вещи, которые прямо очень нужны, но никто про это не пишет.
      Так и родился этот достаточно многобуквенный материал с подробностями, тонкостями, картинками и задачами.

      Надеюсь, вам удастся из него извлечь что-нибудь новое и полезное, даже если вы уже в ладах с регулярками.
      Читать дальше →
    • Как мотивировать пользователей залипнуть в вашем продукте навсегда: Фреймворк Папы Григория

        Почему у Фейсбука десятизначное число пользователей, а у большинства приложений — просто около десяти? Как побудить пользователей приходить снова и снова? Что движет ими?

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

        Я предпочитаю название Фреймворк Папы Григория. Вам его составляющие наверняка знакомы как семь смертных грехов. Семь главных грехов. Peccata capitalia.

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

        Папа Григорий в своем труде «Толкование на Книгу Иова, или Нравственные толкования» (Expositio in librum Iob sive Moralia) упорядочил их от самых простых в реализации, но привлекающих не всех, до самых сильных, над которыми, однако, надо потрудиться.
        Читать дальше →
      • Изменчивые формы и вау-эффекты: о магии простыми словами



          Продолжаем рассматривать идеи создания различных эффектов для сайтов. Закончили мы на SVG масках, а сегодня на повестке дня элемент path и формы, которые с его помощью создаются. Точнее их изменения. И снова мы постараемся избежать использования сложных технологий, рассмотрим преобразование одних иконок в другие, создание эластичных элементов и использование силуэтов для придания сайту атмосферности.
          Читать дальше →
          • +14
          • 10.3k
          • 9
        • Простой планировщик задач на PHP

            image

            В процессе эволюции более-менее крупного проекта может настать ситуация, когда количество запланированных задач (cron jobs) становится настолько большим, что поддержка их становится ночным кошмаром devops'ов. Для решения этой проблемы мне пришла в голову идея создать реализацию планировщика на PHP, тем самым сделав его частью проекта, а сами задачи — частью его конфигурации. В этом случае необходимое и достаточное количество cron jobs будет равно единице.

            Читать дальше →
          • Настройка Nginx + PHP-FPM и HTTPS от Let's Encrypt на AWS EC2 с Ubuntu Server 16.04 LTS

            • Tutorial
            Порядок действий для установки PHP 7.1 и разворачивания проекта на PHP на созданном Amazon AWS EC2 instance. Основано на этой статье, с дополнениями отсюда и из других источников. Используется более новая версия PHP, добавлены инструкции по установке HTTPS, и пример настройки проекта на Laravel. Подразумевается, что инстанс используется в режиме разработки.
            Читать дальше →
          • Дневник техлида: полгода разработки мобильного PvP



              В марте 2017 года мы собрали небольшую команду и взялись за разработку нового перспективного проекта. Без особых деталей могу сказать, что задача стояла интересная и соблазнительная — мобильный, синхронный, командный PvP. Спустя 7 месяцев активной разработки мне захотелось рассказать коллегам из других проектов и отделов Pixonic технические детали и я подготовил для них презентацию, которая в дальнейшем превратилась в эту статью.

              Как техлид команды, я расскажу, с какими задачами и проблемами мы успели столкнуться, как их решаем и почему. Мы используем итеративный подход добавления функционала в проект и в данный момент у нас реализованы: PvP на iOS и Android (обе платформы играют на одних серверах); набор персонажей, три десятка игровых механик, боты; матчмейкинг; набор мета-фич (кастомизация персонажей, прокачка и другие); решена задача масштабируемости на весь мир.

              Итак, поехали.
              Читать дальше →
            • Тащим музыку из ВК без публичного music API

              Как все начиналось


              Дело было вечером, делать было нечего… Точнее, я просто хотел загрузить аудиокнигу перед парами и тут меня ждал сюрприз. Кэш в кейт мобайле отключили. Как так? Что делать? Конечно же писать свое приложение с кэшем и аудиозаписями. Но для начала нужно понять, как вк превращает ссылки вида audio%user_id%_%track_id% в прямые ссылки на mp3. Что из этого вышло приложения я не написал и как скачать определенный плейлист можно прочитать под катом.
              Читать дальше →
            • Прокачиваем домофон протоколом MQTT для управления с телефона

                Всем привет. Расскажу немного про свою последнюю междуделку — доработку домофона WiFi-модулем NodeMCU. Заранее прошу прощения за выбор модуля — всех уже, наверное, достала эта ESP’шка…

                Конечно, работу ClusterM с его автоответчиком никому не переплюнуть, но такой функционал я считаю излишним. Мне, с рождением дочки, лишь понадобилось бесшумно открывать домофон гостям, чтобы не стоять у трубки и не ждать входящего звонка, который наверняка разбудит малую. Да и себе иногда легче открыть дверь с телефона, нежели лезть за ключами и прикладывать таблетку туда-сюда, чтобы она сработала (у меня очень сильно тупит панель в подъезде). Проект получился небольшой, так что в статье тоже не так много букв, зато есть фотографии.
                Читать дальше →
              • Неприступный почтовый сервер, или жизнь без спама

                  Борьба со спамом — это головная боль всех ответственных администраторов почты. Чего только они не изобретают, чтобы любимым пользователям лучше жилось. Однако, как показала практика общения со многими системными администраторами, почему-то далеко не все представляют как правильно фильтровать спам.

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

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

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

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

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