Как стать автором
Обновить
4
0
Евгений @anprs

Оператор ЭВМ

Отправить сообщение

Домашний DPI, или как бороться с провайдером его же методами

Время на прочтение16 мин
Количество просмотров238K

Долгое время я терпел ограничения РосКомНадзора и соответствующие действия провайдеров по различным ограничениям доступа к сайтам - но с определённого момента устал, и начал думать как бы сделать так, чтобы было и удобно, и быстро, и при этом с минимумом заморочек после настройки... Хочу оговориться, что цель анонимизации не ставилась.

Вообще, эта проблема имеет несколько решений... Но я решил бороться с провайдером их же методом.

...При помощи NGINX!
Всего голосов 246: ↑245 и ↓1+244
Комментарии187

Telegram-бот на Java для самых маленьких — от старта до бесплатного размещения на heroku

Время на прочтение15 мин
Количество просмотров152K


В следующих сериях


Это первая статья в моей серии «для самых маленьких» — следующая посвящена Telegram-боту на вебхуках на Spring с блекджеком и Redis и клавиатурами. Будут ещё:)

Для кого написано


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

Предыстория


Когда моя дочь начала изучать арифметику, я между делом накидал алгоритм генерации простых примеров на сложение и вычитание вида «5 + 7 =», чтобы не придумывать и не гуглить для неё задания.

И тут на глаза попалась новость, что Telegram выпустил новую версию Bot API 5.0. Ботов я раньше не писал, и потому решил попробовать поднять бота как интерфейс для своей поделки. Все примеры, которые мне удалось найти, показались либо совсем простыми (нужные мне функции не были представлены), либо очень сложными для новичка. Также мне не хватало объяснений, почему выбран тот или иной путь. В общем, написано было сразу для умных, а не для меня. Потому я решил описать свой опыт создания простого бота — надеюсь, кому-нибудь это поможет быстрее въехать в тему.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии17

TelegramBot. Базовый функционал. Стикеры и смайлы. (Часть 3)

Время на прочтение7 мин
Количество просмотров53K
Один из вопросов, который часто приходит в личку — как работать со смайлами(эмодзи) и стикерами.

Как с ними работать, какими инструментами пользуюсь я и т.д.

В данной части будут рассмотрены такие вещи: как создать сообщение со стикером, как обработать полученное сообщение со стикером, как найти в тексте сообщения все смайлы(эмодзи), как создать сообщение с использованием смайлов (эмодзи).

Кому интересно, прошу под кат.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии1

TelegramBot. Базовый функционал. Мухи отдельно, котлеты отдельно. (Часть 2)

Время на прочтение13 мин
Количество просмотров44K
Продолжаем разрабатывать базовый функционал для бота в телеграм. В предыдущих частях обсуждался момент, что работу бота по получению сообщений, обработке и отправке нужно разделять. Давайте попробуем с помощью базовых инструментов Java Core сделать нашего бота многопоточным и асинхронным. Придумаем ему такое задание, которое занимает очень много времени на обработку. Рассмотрим как работают команды в телеграмме и как их нужно обрабатывать.

Это продолжение первой части статьи по программированию ботов для телеграмм на Java
TelegramBot инструкция по созданию базового функционала для бота. (Часть 1)
Кому интересно дальше, милости прошу под кат…
Читать дальше →
Всего голосов 9: ↑4 и ↓5-1
Комментарии7

TelegramBot инструкция по созданию базового функционала для бота. (Часть 1)

Время на прочтение6 мин
Количество просмотров47K
Не так давно я предложил вам воспользоваться моим ботом для телеграмма.

Telegram Bot — помощник в планировании мероприятий

Получив много вопросов в личку, я понял, что вопрос создания ботов для Телеграм довольно популярен.

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

Я решил написать цикл статей, в которых хочу показать базовые вещи, которые будут нужны вам для написания своего бота.
Вас ждет Java, Maven, TelegramAPI, Lombok и Log4j.
Кому интересно — прошу под кат…
Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии17

Управление Яндекс.Станцией и другими колонками с Алисой из Home Assistant

Время на прочтение4 мин
Количество просмотров112K

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


Колонки с Яндекс Алисой хоть и называются умными, но вы не можете изменить громкость не находясь рядом с колонкой (орать через всю комнату не считается). Вы не можете перемотать песню из мобильного приложения Яндекса. Или остановить сказку, запущенную на колонке в детской, из своей кровати в спальне.


В январе 2020 кто-то обнаружил, что Яндекс.Станция поддерживает некий локальный протокол. На GitHub начали появляться проекты по управлению Яндекс.Станцией. Мне хватило пару часов, чтоб разобраться и выпустить первую версию компонента для Home Assistant. Это достаточно популярная система домашней автоматизации, написанная на языке Python.


На сегодняшний день компонент поддерживает управление всеми колонками с Яндекс Алисой и при желании может выглядеть так:


Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии42

Клавиатура, идея, две руки

Время на прочтение2 мин
Количество просмотров182K
Случалось ли в твоей жизни, %username%, такое, когда тебе продолжительное время хотелось странного? Неважно чего — ведь у каждого разные вкусы и предпочтения. Моя страсть сидела во мне долго, но однажды всё-таки вырвалась наружу. Мне нравится делать необычные вещи, и мне всегда нравился моддинг как средство самовыражения. Несколько лет назад я вдохновился изделиями моддеров из разных стран и начал обдумывать несколько своих проектов. В частности, мне очень хотелось сделать стилизованную под девятнадцатый век клавиатуру.



Что из этого получилось? Прошу под кат!
Всего голосов 517: ↑509 и ↓8+501
Комментарии189

Клавиатура своими руками под свои руки

Время на прочтение24 мин
Количество просмотров343K

Для меня всё началось вот с этого топика о механических клавиатурах, желания научиться печатать быстрее (к своему стыду до недавних пор печатал двумя пальцами, несмотря на 25летний стаж программирования), и появившихся недавно неприятных ощущений в кистях после рабочего дня (да и вообще времени, проведённого за компьютером).
Провёл короткое исследование о том, что вообще есть из клавиатур для программистов и тех, кто много печатает, и написал вот этот обзорный топик. Купил себе Happy Hacking Lite (минималистичная клавиатура с мембранными переключателями), но печатать на ней оказалось ещё менее удобно, чем на ноутбучной, в основном из за ещё более компактного расположения клавиш.
Вскоре появился топик, в котором автор рассказывал о новоприобитённой им Truly Ergonomic, пожалуй, практически идеальной клавиатуры с моей точки зрения, но в комментариях автор же отметил, что спустя два месяца использования так и не смог совсем пересесть на неё, а положение рук совсем не так и удобно, как рекламируется.
Чуть позже появился топик о Kinesis Advantage, по отзыву автора к которой тоже не так легко привыкнуть, а цена так и просто пугает.
И я решил...
Всего голосов 297: ↑286 и ↓11+275
Комментарии142

KeeBee. Изготовление с нуля собственной USB-клавиатуры

Время на прочтение5 мин
Количество просмотров70K
Несколько месяцев назад завершился мой проект по изготовлению USB-клавиатуры. Среди прочего, я выполнил дизайн электронных схем, спроектировал печатную плат, запрограммировал прошивку, сделал макет в CAD и произвёл сборку устройства. В результате получилась удобная клавиатура, которую я использую ежедневно и ласково называю KeeBee:


Клавиатура KeeBee в окончательном виде

Несколько целей проекта:

  1. Самостоятельное создание схемы.
  2. Написание прошивки клавиатуры.
  3. Узнать, как работает протокол USB.
Читать дальше →
Всего голосов 130: ↑130 и ↓0+130
Комментарии86

Один совет, благодаря которому я успешно прошёл несколько собеседований

Время на прочтение6 мин
Количество просмотров174K
— Что вы скажете, если я попрошу вас разработать сервис, который обрабатывает тысячи запросов в секунду с минимальной задержкой?

— Хм… Я скажу, что у вас в компании возникла такая проблема. Но у вас нет идей и вы обсуждаете её на собеседованиях с кандидатами :)

Именно так я ответил, когда мне впервые задали вопрос по архитектуре. Мы хорошо посмеялись. Но потом интервьюер всё-таки заставил меня спроектировать сервис.
Читать дальше →
Всего голосов 107: ↑101 и ↓6+95
Комментарии222

Небольшой гайд по выбору 3D-принтера для начинающих

Время на прочтение8 мин
Количество просмотров29K

Поводом для написания данной статьи послужила статья “Я хотел купить недорогой 3D-принтер, но посмотрел YouTube и расхотел”, в конце которой автор просит ответить на несколько вопросов. Попробую ответить с точки зрения своего семилетнего опыта 3D-моделера и 3D-печатника. Для начала небольшие предостережения.

В данной статье не будет советов: “Покупайте принтер производителя Х - он хороший, а производителя Y - не берите ни в коем случае”, только общие рекомендации.

Классификация принтеров неформальная, принятая в отечественном сегменте печатников.

Все написанное основано на личном опыте автора и является его личным мнением.

Если данные предостережения вас не пугают - добро пожаловать под кат.

Поехали
Всего голосов 23: ↑22 и ↓1+21
Комментарии70

Программист учится рисовать. Дневник Емели

Время на прочтение16 мин
Количество просмотров34K
Так получилось, что моим основным хобби на лихой 2020-й год стало освоение ремесла рисования.

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

spoiler
В конце года я остался доволен собой и окончательно понял, что я хотел бы прокачиваться и дальше!

image
Так выглядел мой уровень изобразительных навыков в ноябре предыдущего (2019-го) года

Формат подачи данной статьи — это на 95% личный дневник, который я вел в гугл-доке, записывая, что я делал каждый месяц, свои ощущения и как-то фиксируя собственный прогресс — смотрел, сколько работ мне удалось нарисовать и какого они были качества — нравились ли они мне лично или были совсем так себе по исполнению.
Читать дальше →
Всего голосов 144: ↑143 и ↓1+142
Комментарии123

Высокотемпературную 3D-печать – в массы

Время на прочтение5 мин
Количество просмотров17K


Существует впечатляющее разнообразие термопластиков, которыми можно печатать на настольных 3D-принтерах потребительского класса. Но, несмотря на это, чаще всего пользователи обращаются к нитям из полилактида (PLA). Это не только самый дешёвый из материалов, но и самый простой в работе. Его экструзию можно вести уже при температуре в 180 °C, и хорошие результаты можно получить даже без подогрева стола. Минус объектов, напечатанных PLA, в том, что они получаются относительно ломкими и плохо переносят высокие температуры. Для прототипирования или печати компонентов, не испытывающих большие нагрузки, PLA отлично подходит. Однако многие пользователи довольно быстро выходят за рамки его возможностей.

Следующим шагом обычно становится полиэтилентерефталат (PETG). С ним не сильно сложнее работать по сравнению с PLA, при этом он надёжнее и выдерживает более высокие температуры. В целом он лучше подходит для создания деталей с механической нагрузкой. Но если вам нужно изготовить ещё более прочные и жаропрочные детали, вы можете перейти на акрилонитрил бутадиен стирол (ABS), поликарбонат (PC) или нейлон. И вот тут уже начинаются проблемы. Экструзия этих материалов осуществляется при температурах более 250 °C, а для достижения наилучших результатов рекомендуется использовать закрытые камеры. Такие принтеры находятся в верхней части диапазона бюджета, с которым готовы работать любители.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии17

Реализация маневрирования юнитов в играх (избегание столкновений)

Время на прочтение6 мин
Количество просмотров16K
Задача движения юнитов в играх является одной из ключевых задач, стоящих перед разработчиками игр. От того, как двигаются игровые юниты, во многом зависит восприятие всего геймплея в целом.

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

На практике же мы имеем совсем другую ситуацию.

Алгоритмы поиска пути разобраны досконально.

Нужен поиск пути с весами? A*. Нужен поиск для большого количества юнитов? Flow Field или кластеризация.

По большому счету по поиску пути не осталось не разобранных вопросов.

И вот, поиск пути реализован и довольный игродел запускает свою игру… И видит, что болванчики полностью оправдывают своё название. Они конечно находят путь и едут туда, куда им сказали. Но при этом спотыкаются о препятствия… Толкаются друг с другом или проезжают насквозь… Упираются друг в друга при встречном движении…

Эти проблемы и будем сегодня решать.



Disclaimer
Данная статья не претендует на исчерпывающее решение обозначенной проблемы.
Я лишь рассказываю о том, как конкретно мне видится решение, над которым я работал. Это решение в оттюнингованном виде попало в один из зарелизенных в этом году РТС проектов, но осталось ли там на данный момент я не знаю. Комментарии и дополнения приветствуются.
Всего голосов 49: ↑49 и ↓0+49
Комментарии55

Чистый код с Google Guava

Время на прочтение9 мин
Количество просмотров111K
Наверное, любому программисту доводилось видеть код, пестрящий большим количеством повторов и реализации «низкоуровневых» действий прямо посреди бизнес-логики. Например, посреди метода, печатающего отчёт, может оказаться такой фрагмент кода, конкатерирующий строки:

StringBuilder sb = new StringBuilder();
for (Iterator<String> i = debtors.iterator(); i.hasNext();) {
  if (sb.length() != 0) {
    sb.append(", ");
  }
  sb.append(i.next());
}
out.println("Debtors: " + sb.toString());

Понятно, что этот код мог бы быть более прямолинейным, например, в Java 8 можно написать так:

out.println("Debtors: " + String.join(", ", debtors));

Вот так сразу гораздо понятнее, что происходит. Google Guava – это набор open-source библиотек для Java, помогающий избавиться от подобных часто встречающихся шаблонов кода. Поскольку Guava появилась задолго до Java 8, в Guava тоже есть способ конкатенации строк: Joiner.on(", ").join(debtors).
Рассмотрим часто встречаемые шаблоны кода
Всего голосов 41: ↑36 и ↓5+31
Комментарии20

Одноглазый глубиномер

Время на прочтение5 мин
Количество просмотров14K

Недавно вышла интересная статья от FaceBook о том как можно делать неплохой 3D с монокулярных камер. Статья не очень применимая на практике. Но по качеству картинки завораживает.
Посмотрев на это я решил сделать небольшой рассказ о том что в статье творится, куда современные технологии пришли, и что можно ждать от них на практике.

Далее много картинок
Всего голосов 40: ↑40 и ↓0+40
Комментарии11

DDD, Hexagonal, Onion, Clean, CQRS… как я собрал всё это вместе

Время на прочтение14 мин
Количество просмотров98K


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

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

С тех пор я всегда чувствовал, что мне нужно восстановить «потерянное» время и узнать как можно больше, как можно быстрее. Поэтому я стал немного увлекаться экспериментами, много читать и писать, уделяя особое внимание дизайну и архитектуре программного обеспечения. Вот почему я пишу эти статьи, чтобы помочь себе в обучении.
Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии14

Как оценить и выбрать оффер разработчику: на что смотреть, к чему готовиться, какие вопросы задавать

Время на прочтение5 мин
Количество просмотров13K


Несмотря на то, что 2020 год получается достаточно необычным, одно остается неизменным – огромный спрос на разработчиков на рынке труда. Даже в период пандемии, и уж тем более после плавного сворачивания глобального карантина, компании готовы нанимать сильных инженеров, предлагать им интересные проекты и хорошие условия.

Все это значит, что талантливый разработчик, который даже активно не ищет новую работу, все равно будет получать интересные предложения. В сегодняшней статье мы поговорим о том, как стоит подходить к обсуждению условий будущей работы, на что именно смотреть в оффере, и в какой момент начинать задавать самые важные вопросы.
Читать дальше →
Всего голосов 15: ↑12 и ↓3+9
Комментарии5

Пять простых шагов для понимания JSON Web Tokens (JWT)

Время на прочтение5 мин
Количество просмотров619K

jwt


Представляю вам мой довольно вольный перевод статьи 5 Easy Steps to Understanding JSON Web Tokens (JWT). В этой статье будет рассказано о том, что из себя представляют JSON Web Tokens (JWT) и с чем их едят. То есть какую роль они играют в проверке подлинности пользователя и обеспечении безопасности данных приложения.

Читать дальше →
Всего голосов 28: ↑24 и ↓4+20
Комментарии60

Как не продолбать пароли в Python скриптах

Время на прочтение4 мин
Количество просмотров66K


Хранение паролей всегда было головной болью. В классическом варианте у вас есть пользователь, который очень старается не забыть жутко секретный «qwerty123» и информационная система, которая хранит хеш от этого пароля. Хорошая система еще и заботливо солит хеши, чтобы отравить жизнь нехорошим людям, которые могут украсть базу с хешированными паролями. Тут все понятно. Какие-то пароли храним в голове, а какие-то засовываем в зашифрованном виде в keepass.

Все меняется, когда мы убираем из схемы человека, который старательно вводит ключ с бумажки. При взаимодействии двух информационных систем, на клиентской стороне в любом случае должен храниться пароль в открытом для системы виде, чтобы его можно было передать и сравнить с эталонным хешем. И вот на этом этапе админы обычно открывают местный филиал велосипедостроительного завода и начинают старательно прятать, обфусцировать и закапывать секретный ключ в коде скриптов. Многие из этих вариантов не просто бесполезны, но и опасны. Я попробую предложить удобное и безопасное решение этой проблемы для python. И чуть затронем powershell.
Читать дальше →
Всего голосов 75: ↑72 и ↓3+69
Комментарии83
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Биробиджан, Еврейская обл., Россия
Дата рождения
Зарегистрирован
Активность