Pull to refresh
16
0
Илья Агафонов @Tairesh

Веб-программист

Send message

Вопросы по DevOps. Часть 1

Level of difficultyMedium
Reading time75 min
Views22K


Hello world!


В первой части шпаргалки (вопросника, если угодно) на высоком уровне рассматриваются такие вещи, как сеть, HTTP, операционная система, виртуализация, хранилище etc., а также несколько технологий, используемых в сфере DevOps, таких как Prometheus, OpenStack, Puppet, Elastic etc. (вопросы с ответами из основного репозитория оригинала). Полагаю, шпаргалка будет интересна всем, кто связан с разработкой программного обеспечения, прежде всего, с разработкой веб-приложений. Буду признателен за помощь в уточнении/исправлении понятий/терминов, а также в обнаружении очепяток.


Возможно, немного другой формат шпаргалки покажется вам более удобным.

Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments9

Автоматизируем сборку и деплой приложения в GitLab CI/CD: подробное руководство с примерами

Level of difficultyEasy
Reading time22 min
Views19K

При разработке приложений рано или поздно наступает момент, когда заниматься развёртыванием вручную становится затратно и неудобно. Как следствие на помощь приходит автоматизация этого процесса с помощью специально настроенных пайплайнов непрерывной интеграции и непрерывной доставки (Continuous Integration & Continuous Delivery — CI/CD). Для разных систем управления репозиториями исходного кода существуют свои способы настройки CI/CD.

В этой статье мы рассмотрим, как использовать GitLab для организации автоматической сборки и деплоя приложения в кластер Kubernetes. Сам кластер работает под управлением Deckhouse Kubernetes Platform, а автоматизировать процесс будем с помощью werf — Open Source CLI-утилиты, организующей полный цикл доставки приложения в Kubernetes и использующей Git как единый источник истины для состояния приложения, развёрнутого в кластере.

Читать далее
Total votes 36: ↑35 and ↓1+34
Comments17

Учим Алису здороваться

Reading time5 min
Views38K

Хочу поделиться опытом добавления некоторой вольности Алисе (внутри колонок поддерживающих локальный API).

Идея заключается в том, чтобы Алиса реагировала на присутствующих людей. Для этого их необходимо идентифицировать, например, с помощью распознавания лиц. В статье будет использован самый простой (на мой взгляд) вариант создания модели для распознавания лиц – тренировка модели в Google Teachable Machine, так как он не требует знаний и хорошего железа.

Читать далее
Total votes 25: ↑23 and ↓2+21
Comments21

Методы решения судоку

Reading time5 min
Views669K

1. Основы


Большинство из нас, хабражителей, знает, что такое судоку. Не буду рассказывать про правила, а сразу перейду к методикам.
Для решения головоломки, не важно сложной или простой, изначально ищутся ячейки очевидные для заполнения.
Читать дальше →
Total votes 81: ↑70 and ↓11+59
Comments63

Как я делал свой самолёт

Reading time4 min
Views28K
image

Здравствуйте, дорогие Хабровчане!

Меня зовут Константин Томаревский. Я инженер компании Deutsche Telekom IT Sotutions. Хотел поделиться с Вами своей давней задумкой, которую пытаюсь воплотить в «железе».

По образованию я авиационный инженер. Когда я поступал в Университет СПбГПУ, я мечтал о том, что буду конструировать самолёты (ну или космические ракеты), буду работать в каком-нибудь конструкторском бюро и проводить рабочие дни за математическими расчётами, лабораторными стендами и полевыми испытаниями. Я закончил Университет, получив там очень много теоретических знаний, но ни разу не прикоснувшись к настоящей практике. Прошло уже много времени, но мысль о том, что мои знания так и остались знаниями, и не воплотились в практической плоскости, не покидала меня и я решил попробовать сделать пусть и совсем не большой, но реально функционирующий по всем правилам летательный аппарат.

image

Первоначальная идея


Мой университетский профиль – это системы управления летательными аппаратами. Мне всегда было интересно, как ведёт себя летательный аппарат (планер, самолёт) в зависимости от управления им, то есть от того, каким образом отклоняются его управляющие поверхности, как быстро и в какой конфигурации. Ещё один интересный момент – эффективность управляющих плоскостей. На разной скорости полёта их отклонение действует на летательный аппарат с разными усилиями. Если подобрать отклонения для разных скоростей, можно сделать мягкое управление летательным аппаратом.
Читать дальше →
Total votes 70: ↑70 and ↓0+70
Comments163

Кросскомпиляция выполняемых файлов Rust для Windows из Linux

Reading time10 min
Views16K

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


Основная OS у меня Linux, но иногда приходится собирать исполняемые файлы и для Windows. И естественно что перегружаться в Windows только для сборки exe не особо хочется. С языками C и C++ проблем нет, давно существует кросскомпилятор MinGW, который прекрасно с этим справляется. Про Python и Java даже упоминать не стоит, кроссплатформенность в них изначально. Но в прошлом году я решил попробовать такой пока что новомодный язык, как Rust. При сборке исполняемого файла при помощи включённого в дистрибутив Rust пакетного менеджера cargo вроде как достаточно задать ключ --target, при помощи которого указать результирующий процессор, архитектуру и ABI и при сборке из Linux в результате получить exe, который будет являться стандартным исполняемым файлом для Windows. Но пытаясь так сделать:


cargo build --target x86_64-pc-windows-gnu

я получил только сообщения об ошибках линкера:


error: linking with `gcc` failed: exit code: 1

[...]

  = note: /usr/bin/ld: unrecognized option '--nxcompat'
          /usr/bin/ld: use the --help option for usage information
          collect2: error: ld returned 1 exit status

error: aborting due to previous error

error: could not compile `foobar`.

Если кому интересно как я это поборол и теперь спокойно могу кросскомпилировать программы на Rust для Windows, не покидая Linux, добро пожаловать под кат.

Читать дальше →
Total votes 36: ↑36 and ↓0+36
Comments16

Разработка хитрого ИИ в тактической игре на основе эвристик и мутаций

Reading time17 min
Views17K
В тактических играх ИИ очень важен. Если ИИ видится как «искусственный идиот», то игру может спасти потрясающий мультиплеер, сюжет, атмосфера и графика (это неточно). Решение очевидное: делай хороший ИИ, в чём тут могут быть проблемы?

Cat terminator by CoolAI

В деталях. Ниже описаны мои шаги по конструированию сильного ИИ с характером. Не супер сильного [1], но способного быстро отработать локально в прожорливом браузере любого средне-слабого ПК. Мною применён подход экспертных систем с использованием набора эвристик и мутаций. Описаны 15 шагов постепенного преображения ИИ, каждый из шагов можно пощупать.
Total votes 26: ↑26 and ↓0+26
Comments17

Введение в архитектуру безопасности 5G: NFV, ключи и 2 аутентификации

Reading time17 min
Views12K
image

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

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

Сети 5-ого поколения являются, по сути своей, эволюцией сетей 4-ого поколения LTE. Самым значительным изменениям подверглись технологии радиодоступа. Для сетей 5-ого поколения была разработана новая RAT (Radio Access Technology) — 5G New Radio. Что касается ядра сети, оно претерпело не такие значительные изменения. В связи с этим, архитектура безопасности 5G-сетей была разработана с упором на переиспользование соответствующих технологий, принятых в стандарте 4G LTE.

Однако, стоит отметить, что переосмысление таких известных угроз, как атаки на радиоинтерфейсы и уровень сигнализации (signalling plane), DDOS-атаки, Man-In-The-Middle атаки и др., побудило операторов связи разработать новые стандарты и интегрировать совершенно новые механизмы безопасности в сети 5-ого поколения.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments0

Создаём процедурные глобусы планет

Reading time4 min
Views11K
Искажения, бесшовный шум и как с ними работать.

image

Генерируем планету


Один из простейших способов генерации планеты — использование шума. Если мы решим выбрать его, то у нас есть пара возможных вариантов. Давайте рассмотрим каждый и определим лучший:

  • Шум Перлина (Perlin Noise) — самый простой вариант. Шум Перлина был разработан Кеном Перлином в 1983 году, он имеет пару недостатков — визуальные артефакты и довольно низкая по сравнению с другими вариантами скорость при генерации больших изображений.
  • Симплекс-шум (Simplex Noise) — разработан Кеном Перлином в 2001 году как попытка устранения недостатков шума Перлина; это вполне достойное и быстрое решение, однако обладающее серьёзным недостатком: использование трёхмерного симплекс-шума защищено патентом, что делает его довольно дорогостоящим.
  • Открытый симплекс-шум (Open Simplex Noise) — был разработан KDotJPG с одной простой целью: создать современную и бесплатную версию симплекс-шума, относительно быструю и без искажений.

Из этих трёх лично я предпочитаю Open Simplex Noise, который использую в своих личных проектах. Стоит заметить, что в текущей реализации OpenSimplexNoise для получения простого доступа к масштабу, октавам и порождающим значениям потребуется дополнительная работа. В Интернете есть множество информации о том, что делает каждый из этих элементов, и я крайне рекомендую вам её изучить. Однако в своей статье я буду говорить не об этом.
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments7

Настоящие космические сражения в Children of a Dead Earth, часть 1

Reading time12 min
Views30K
Мейнстрим игр о войне в космосе — это разноцветные “пиу-пиу” лазеры, стрельба в упор, нулевая скорость относительно абсолютного пространства и прочие совершенно нереалистичные вещи. Поэтому симулятор Children of a Dead Earth, моделирующий сражения на доступных сейчас технологиях, дарит совершенно уникальный опыт. А кроме того, что играть просто интересно, он ставит серьезные вопросы о том, как могут проходить настоящие войны в Солнечной системе, и имеет огромное образовательное значение.


Бой на орбите Марса. Цветные линии — не лазеры, а трассеры снарядов рейлганов
Читать дальше →
Total votes 45: ↑45 and ↓0+45
Comments116

Трагикомедия в NaN актах: как мы cделали игру на JS и выпустили ее в Steam

Reading time13 min
Views28K
“Эка невидаль”, — скажете вы, — “В топ-100 вашей игры нет, так что нещитово”. Тоже правда. Зато за год разработки Protolife мы поднакопили какой-никакой опыт, которым можем поделиться с потенциальными будущими игроделами. Ветераны индустрии, боюсь, ничего интересного для себя не найдут. Но, может быть, хоть повеселитесь от души.


Что за игра-то? И кто “мы”?


Мы — это команда из трех человек (GRaAL, A333, icxon), волею судеб названная Volcanic Giraffe без какого либо умысла. Работали долгое время вместе, несколько раз втроем участвовали в Ludum Dare (соревнования по написанию игр за выходные), и однажды решившие довести до релиза одну из наших поделок под названием Protolife.

Если коротко: это необычная tower defense, где надо бегать героем-курсором и выстраивать оборону из блоков против постоянно растущей красной биомассы.
Остальное под катом - осторожно, тяжелые пиксельартные картинки
Total votes 95: ↑91 and ↓4+87
Comments51

Как создаются изометрические миры

Reading time25 min
Views58K
image

Все мы играли в потрясающие изометрические игры, будь то первые Diablo, Age of Empires или Commandos. При первой встрече с изометрической игрой можно задаться вопросом: двухмерная она, трёхмерная или нечто совершенно другое. Сам мир изометрических игр обладает волшебной притягательностью для разработчиков. Давайте попробуем раскрыть тайну изометрической проекции и создадим простой изометрический уровень.

Для этого я решил использовать Phaser с кодом на JS. В результате у нас получится интерактивное приложение HTML5.

Учтите, что это не туториал по разработке на Phaser, мы просто используем его для удобного ознакомления с базовыми концепциями создания изометрической сцены. Кроме того, в Phaser есть простые способы создания изометрического контента, например, Phaser Isometric Plugin.

Для упрощения при создании сцены мы будем использовать тайлы.
Total votes 49: ↑49 and ↓0+49
Comments7

Создание изометрических объектов для игр в Blender

Reading time3 min
Views51K


Статья будет полезна начинающим разработчикам игр. В ней мы рассмотрим преимущества и способы создания и рендеринга трёхмерных объектов для изометрических 2D-игр на примере Blender. В статье не будет каких-то сложных операций, достаточно начальных знаний 3D-редактора. Для примера рендеринга и анимации я взял башню из Dune2, и, чтобы ей было не так скучно одной, дополнил двумя постройками из Desert Strike.
Читать дальше →
Total votes 24: ↑21 and ↓3+18
Comments21

Карты из шестиугольников в Unity: вода, объекты рельефа и крепостные стены

Reading time77 min
Views12K
Части 1-3: сетка, цвета и высоты ячеек

Части 4-7: неровности, реки и дороги

Части 8-11: вода, объекты рельефа и крепостные стены

Части 12-15: сохранение и загрузка, текстуры, расстояния

Части 16-19: поиск пути, отряды игрока, анимации

Части 20-23: туман войны, исследование карты, процедурная генерация

Части 24-27: круговорот воды, эрозия, биомы, цилиндрическая карта

Часть 8: вода


  • Добавляем в ячейки воду.
  • Триангулируем поверхность воды.
  • Создаём прибой с пеной.
  • Объединяем воду и реки.

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


Вода прибывает.
Total votes 30: ↑30 and ↓0+30
Comments4

Как я 13 лет делал футбольный симулятор

Reading time10 min
Views44K

2_fview_gameplay


История, которую я расскажу, началась 13 лет назад на уроке информатики. Мы с друзьями-семиклассниками решили все задачи на Паскале и весело играли в первый Quake. Наша учительница увидела это, подошла ко мне и сказала всего одну фразу, которая перекосила мою картину мира: «Если ты хочешь играть в игры на уроке, пиши их сам». С тех пор я эпизодически делаю игры. Одна из них — футбольный симулятор, о котором и пойдёт речь.


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

Читать дальше →
Total votes 108: ↑106 and ↓2+104
Comments120

Пишем платформер на Python, используя pygame

Reading time11 min
Views349K
image
Сразу оговорюсь, что здесь написано для самых маленькихначинающих.

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

Что такое платформер?


Платформер(platformer)— жанр компьютерных игр, в которых основной чертой игрового процесса является прыгание по платформам, лазанье по лестницам, собирание предметов, обычно необходимых для завершения уровня.
Вики

Одними из моих любимых игр данного жанра являются «Super Mario Brothers» и «Super Meat Boy». Давайте попробуем создать нечто среднее между ними.
Читать дальше →
Total votes 93: ↑89 and ↓4+85
Comments46

Как создать Roguelike

Reading time19 min
Views73K
image

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

У меня есть довольно большой опыт — в течение последних семи лет я работал только в этом жанре (Cogmind, Cogmind 7DRL, POLYBOT-7, REXPaint, X@COM), и в течение последних пяти эта работа была моей основной. К тому же, все эти годы я помогал превращению r/RoguelikeDev в крупнейшее сетевое сообщество разработчиков roguelike.
Total votes 58: ↑58 and ↓0+58
Comments24

Парсинг постов из telegram каналов на PHP

Level of difficultyMedium
Reading time5 min
Views83K
Привет, Хабр!

Несколько лет назад я начал разрабатывать свой агрегатор контента, что бы упростить свой серфинг в сети. Изначально я парсил только rss, vk и facebook, но в прошлом году решил сделать полный рефакторинг проекта: отказаться от парсинга на клиенте, сделать нормальный back-end, использовать базу данных для хранения данных и расширить список поддерживаемых ресурсов.

Помимо стандартного набора из rss, fb, vk, twitter, instagram, youtube я добавил поддержку произвольных открытых каналов из telegram.

image

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

[UPDATE 2019-03-12]
Мой новый пост про парсинг телеграм каналов: habr.com/ru/post/354000. Более качественный код, микросервисы с открытым исходным кодом и новый публичный сервер для тестов.
[UPDATE 2023-10-08]
Важное напоминание: Телеграмм не разрешает парсить аудиторию каналов. Используя серверный клиент можно получить только те данные, которые видны в обычном, оффициальном приложении.
Читать дальше →
Total votes 21: ↑14 and ↓7+7
Comments39

Сохранение «многие ко многим» в Yii2 через поведение

Reading time5 min
Views32K
Если вам приходилось работать с Yii2, наверняка возникала ситуация, когда нужно было сохранить связь «многие ко многим».

Когда становилось ясно, что в сети еще нет поведений для работы с этим типом связи, тогда нужный код писался на событии «after save» и с напутствием «ну работает же» отправлялся в репозиторий.

Лично меня не устраивал такой расклад событий. Я решил написать то самое волшебное поведение, которого так не хватает в официальной сборке Yii2.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments26

Heatmap Painter

Reading time2 min
Views8.4K

Heatmap Habr Moscow


Тепловая карта — картограмма, визуально показывающая интенсивность какого-либо точечного показателя в пределах территории на карте. Интенсивность кодируется цветом и прозрачностью. Наверняка вы не раз видели такие картинки. Так вот, что если вам нужно сделать такую картограмму, а данных на руках у вас нет. Heatmap Painter позволит вам в интерактивном режиме накидать данные на карту и сохранить результат для дальнейшего использования. Штука весьма интересная и может пригодится много кому: разработчикам, аналитикам, дизайнерам. О том как это работает и как использовать читайте далее.

Читать дальше →
Total votes 9: ↑7 and ↓2+5
Comments6
1
23 ...

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Backend Developer
Senior
From 4,000 €
Docker
SQL
Linux
PostgreSQL
Git
MySQL
PHP
Yii framework
Symfony
RabbitMQ