Pull to refresh
-2
0
Дмитрий @qrKot

Энтузиаст

Send message

«Лучшая задача по математике для школьников, которую я встречал в своей жизни» (Алексей Савватеев)

Reading time 1 min
Views 25K
image

Дано: Есть игрушечная кольцевая железная дорога, состоящая из 13 одинаковых элементов.

Вопрос: какое минимальное количество таких элементов надо докупить, чтобы построить более длинную замкнутую, без пересечений, дорогу?

подсказка
Решение надо искать на комплексной плоскости.

еще подсказка
image

Корень 13 степени.


Решение и ответ под катом.
Читать дальше →
Total votes 38: ↑23 and ↓15 +8
Comments 72

Популярная музыка на самом деле деградирует

Reading time 4 min
Views 216K

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

Читать далее
Total votes 252: ↑234 and ↓18 +216
Comments 868

Построение микросервисной архитектуры на Golang и gRPC, часть 1

Reading time 14 min
Views 48K

Введение в микросервисную архитектуру


Часть 1 из 10


Адаптация статей Ewan Valentine.


Это серия из десяти частей, я постараюсь раз в месяц писать про построение микросервисов на Golang. Я буду использовать protobuf и gRPC в качестве основного транспортного протокола.


Стек, который я использовал: golang, mongodb, grpc, docker, Google Cloud, Kubernetes, NATS, CircleCI, Terraform и go-micro.


Зачем мне это? Поскольку мне потребовалось много времени, чтобы разобраться в этом и решить накопившиеся проблемы. Так же я хотел поделиться с вами тем, что я узнал о создании, тестировании и развертывании микросервисов на Go и другие новые технологии.


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


  • грузы
  • инвентарь
  • суда
  • пользователи
  • роли
  • аутентификация
Читать дальше →
Total votes 25: ↑17 and ↓8 +9
Comments 8

Борьба за ресурсы, часть 1: Основы Cgroups

Reading time 5 min
Views 25K
Компьютеры – это «железо». И сегодня мы вернулись в исходную точку, в том смысле, что сейчас редко найдешь физический хост, на котором выполняется одна единственная задача. Даже если на сервере крутится только одно приложение, оно, скорее всего, состоит из нескольких процессов, контейнеров или даже виртуальных машин (ВМ), и все они работают на одном сервере. Red Hat Enterprise Linux 7 неплохо справляется с распределением системных ресурсов в таких ситуациях, но по умолчанию ведет себя как добрая бабушка, угощающая внуков домашним пирогом и приговаривающая: «Всем поровну, всем поровну».



В теории принцип «всем поровну», конечно, прекрасен, но на практике некоторые процессы, контейнеры или ВМ оказываются важнее других, и, следовательно, должны получать больше.
Читать дальше: Основы Cgroups
Total votes 20: ↑19 and ↓1 +18
Comments 2

Load Average в Linux: разгадка тайны

Reading time 18 min
Views 211K


Средние значения нагрузки (Load averages) — это критически важная для индустрии метрика. Многие компании тратят миллионы долларов, автоматически масштабируя облачные инстансы на основании этой и ряда других метрик. Но на Linux она окутана некой тайной. Отслеживание средней нагрузки на Linux — это задача, работающая в непрерываемом состоянии сна (uninterruptible sleep state). Почему? Я никогда не встречал объяснений. В этой статье я хочу разгадать эту тайну, и создать референс по средним значениям нагрузки для всех, кто пытается их интерпретировать.

Читать дальше →
Total votes 127: ↑125 and ↓2 +123
Comments 25

Пять Docker-утилит, о которых вам стоит узнать

Reading time 5 min
Views 34K

Источник изображения


На просторах сети Интернет можно найти немало полезных утилит для Docker. Многие из них принадлежат к разряду Open Source и доступны на Github. В последние два года я достаточно активно использую Docker в большинстве своих проектов по разработке программного обеспечения. Однажды начав работать с Docker, вы осознаете, что он оказывается полезен для гораздо более широкого круга задач, нежели вы изначально предполагали. Вам захочется сделать с Docker еще больше, и он не разочарует!


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


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

Читать дальше →
Total votes 32: ↑30 and ↓2 +28
Comments 16

MMO с нуля. С помощью Netty и Unreal Engine. Часть 1

Reading time 58 min
Views 51K
Всем привет! В нескольких статьях я хотел бы поделиться опытом создания подобия ММО игры используя Unreal Engine и Netty. Возможно архитектура и мой опыт кому-то пригодится и поможет начать создавать свой игровой сервер в противовес unreal dedicated server, который слегка прожорлив или заменить собой фреймворки для разработки многопользовательских игр такие как Photon.

В конечном итоге у нас будет клиент, который логинится или регистрируется в игре, может создавать игровые комнаты, пользоваться чатом и начинать игры, соединение будет зашифровано, клиенты будут синхронизироваться через сервер, в игре будет присутствовать одно оружие — лазер, выстрел будет проверяться на проверочном сервере. Я не стремился сделать красивую графику, тут будет только необходимый минимум, дальнейший функционал добавляется по аналогии. Логику можно легко расширить на сервере, добавить например случайные игры и балансер. Для меня было важно создать ММО базу и разобраться с тем что понадобится для создания полноценной мобильной ММО игры.

Часть 1. Общая картина, сборка библиотек, подготовка клиента и сервера к обмену сообщениями
Часть 2. Наращивание игрового функционала + алгоритм Diamond Square


Total votes 17: ↑16 and ↓1 +15
Comments 9

JetBrains MPS — IDE для разработки проблемно-ориентированных языков программирования

Reading time 4 min
Views 15K

Введение


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

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

Документация очень подробная, описывает все возможности, но если нет осознания «что я делаю и зачем мне это делать», то она вряд ли будет полезна. Также есть серия уроков от JetBrains на YouTube, но опять же, я более-менее начал понимать, что происходит, только после двух просмотров всей серии и досканального изучения предлагаемых sample проектов.

Я планирую написать серию постов об этой замечательной среде, чтобы по окончанию прочтения у энтузиастов оставалось как можно меньше вопросов «как сделать эту штуку», и как можно больше понимания структуры, чтобы можно было эффективно пользоваться документацией. Познавать MPS мы будем во время создания языка для описания закономерностей погоды. Почему, собственно говоря, и нет?
Читать дальше →
Total votes 26: ↑25 and ↓1 +24
Comments 28

Как программисту получить свой первый оффер

Reading time 7 min
Views 38K
image

Этот вопрос, пожалуй, волнует многих людей, особенно выпускников ВУЗов. В данной статье я опишу, как и какими способами можно получить ваш первый оффер программиста. Я искала позицию java-developer, однако не думаю, что алгоритм поиска работы будет сильно отличаться в зависимости от выбранного вами языка программирования.

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

  1. Выбор языка программирования
  2. Усиленное чтение документации с последующим решением задачек, разбором примеров и чтение подходящих статей.
  3. Когда хоть какая-то база уже есть, следует придумать себе какой-нибудь несложный проект, в котором вы будете использовать все то, чему научились.
  4. Придумываем проект сложнее, параллельно не забываем о том, что надо изучать сопутствующие технологии.
  5. Желательно все это выкладывать на гит, чтобы в будущем работодатель видел, что процесс обучения у вас шел. О пользе гита я расскажу чуть ниже.
  6. Заведите себе друга программиста, который время от времени мог вам давать советы или менторить вас (это, конечно, кому как повезет). В целом, лучше не надеятся на чью-то помощь, а делать и развиваться самим.
Читать дальше →
Total votes 29: ↑21 and ↓8 +13
Comments 77

Сила минимализма в UX дизайне

Reading time 7 min
Views 25K
Просто — не значит примитивно. Мало — не значит непонятно. Вкратце можно выразить многое. Свободное пространство — не то же самое, что пустота. Сегодня мы поговорим о минимализме.


Как сказал в своей книге «The More of Less» Джошуа Бекер:

«Вам нужно не больше пустого пространства, а меньше всего остального».

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

Что такое минимализм?


Вообще, минимализм — это широкое понятие, которое употребляется в разных сферах человеческой деятельности. В словаре Merriam-Webster оно определяется как «стиль или техника (в музыке, литературе или дизайне), которые характеризуются крайне малым количеством элементов и простотой». К каким бы областям ни применялось понятие, оно сохраняет свои базовые отличительные свойства: простота и смысловая насыщенность.
Читать дальше →
Total votes 17: ↑11 and ↓6 +5
Comments 3

Инфраструктура простой электронной подписи. Часть 3: Системы обработки персональных данных

Reading time 6 min
Views 6.3K


В первой и второй частях была рассмотрена инфраструктура ПЭП в системах контрагента и агента, как участниках электронного взаимодействия. Важную роль в этой инфраструктуре играют персональные данные(ПД) контрагента. Системы агента не создают ПД, они используют данные, предоставленные другими системами. Что это за системы, как происходит первичная передача и обработка ПД – эти вопросы будут предметом третьей части статьи.
Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Comments 4

Создание и тестирование Firewall в Linux, Часть 1.3. Написание char device. Добавление виртуальной файловой системы…

Reading time 8 min
Views 15K
Содержание первой части:

1.1 — Создание виртуальной лаборатории (чтобы нам было где работать, я покажу как создать виртуальную сеть на вашем компьютере. Сеть будет состоять из 3х машин Linux ubuntu).
1.2 – Написание простого модуля в Linux. Введение в Netfilter и перехват трафика с его помощью. Объединяем все вместе, тестируем.
1.3 – Написание простого char device. Добавление виртуальной файловой системы — sysfs. Написание user interface. Объединяем все вместе, тестируем.

Содержание второй части:

Скрытый текст
2.1 — Введение во вторую часть. Смотрим на сеть и протоколы. Wireshark.
2.2 — Таблицы Firewall. Transport Layer. Структуры TCP, UDP. Расширяем Firewall.
2.3 — Расширяем функциональность. Обарабатываем данные в user space. libnetfilter_queue.
2.4 — (*Опиционально) Изучаем реальную Buffer Overflow атаку и предотвращаем с помощью нашего Firewall'а.
Читать дальше →
Total votes 31: ↑31 and ↓0 +31
Comments 26

Information

Rating
4,322-nd
Location
Бийск, Алтайский край, Россия
Date of birth
Registered
Activity