Как стать автором
Обновить
0
0

Пользователь

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

Telegram-бот на вебхуках — Java+Spring, Redis, клавиатуры и деплой на Heroku — снова для самых маленьких

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


В предыдущих сериях


Это вторая статья в моей серии «для самых маленьких» — предыдущая была посвящена «классическому» Telegram-боту, наследуемому от TelegramLongPollingBot.

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


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

Я пытаюсь писать как для себя, а не сразу для умных — надеюсь, кому-нибудь это поможет быстрее въехать в тему.

Предыстория


Учить словарные слова — занятие довольно скучное, а если делать это в лоб, ещё и малоэффективное, поэтому я решил разработать для дочери задания такого вида:



Ребёнок сначала выбирает правильный вариант, а затем закрепляет его написанием. По ощущениям, запоминание идёт неплохо. Дело оставалось за малым — написать бота и составить словари неправильных написаний.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии7

9 лучших практик развертывания приложений высокой доступности на платформе OpenShift

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

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

Читать дальше: 9 лучших практик...
Всего голосов 3: ↑3 и ↓0+3
Комментарии1

Конфигурация Java систем — как убрать боль

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

Если вы хотя бы однажды разрабатывали большую систему на Java и сопровождали её, то, наверняка, сталкивались с неудобствами настройки тех или иных процессов в системе. 

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

Каждый раз менять всё это в коде, пересобирать и перенакатывать на реал — не комильфо.

Естественно все эти параметры нужно выносить в файлы конфигов и считывать их оттуда — все так делают.

В Java из коробки для этого есть некий Properties. Но пользоваться им крайне неудобно. Во-первых, UTF-8 там не работают, во-вторых — если вы поменяли какой-нибудь параметр в конфиге, то чтобы новое значение попало в систему — требуется перезапуск приложения. А если вы не хотите его перезапускать, или это невозможно в 11 утра — час пиковой нагрузки. И отложить на потом не вариант — нужно срочно. Что делать? Нужно чтобы конфиги перечитывались на «горячую», т. е. без перезапуска системы.

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

И вот ещё что: представьте у вас крупная система в которой уже накопилось около тридцати конфигурационных файлов, и в каждом по десятку параметров. И вам нужно накатить новую инстанцию. Как вы будете настраивать эти конфиги? Создавать каждый вручную? В каждом прописывать имена параметров и их значения, вспоминая что каждый из них значит? А если забыли? А есть документация? А эта документация актуальная? А если вы ошибётесь в одной буковке параметра — позволит ли вам система при старте сразу объяснить что не так? Или она свалится в час ночи, когда вы крепко спите? Вам придётся просыпаться, включать как-то мозг и разбираться во всей этой истории…

Хотелось бы избежать всей этой нервотрёпки
Всего голосов 12: ↑8 и ↓4+9
Комментарии24

Что такое Децентрализованные Финансы (DeFi)?

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

Первая и до сих пор самая известная криптовалюта это биткоин. О биткоине слышно из каждого утюга и, наверное, нужно было провести последние пару лет где-то в пещере медитируя с буддийскими монахами для того, чтобы ничего не знать о нём. Хотя кто его знает, может и монахи уже майнят понемногу... Вслед за биткоином появился блокчейн эфира. Он решил одну серьёзную проблему - значительно расширил возможности создавать смарт-контракты, которые в свою очередь расширили области применения для криптовалют. Если биткоин в основном либо используется для спекуляций, либо для долгосрочных инвестиций (HODL!), то на блокчейне эфира, благодаря смарт-контрактам, выросла целая экосистема финансовых сервисов, которые мы сегодня и называем децентрализованными финансами (DeFi).

Читать далее
Всего голосов 13: ↑12 и ↓1+14
Комментарии44

Как инди-разработчику найти художника для своей игры и сэкономить $500

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


Моим первым в жизни «фрилансом» была роспись самоваров на заказ. Тогда я еще не знала, что фриланс называется фрилансом, правки бывают бесконечными, а заказчик может кинуть. Я хотела бы знать, как сотрудничают нормальные люди, в тот момент, когда бесплатно создавала эскизы с «Астана-Байтерек» и без предоплаты расписывала третий поднос подряд.

Вот, кстати, самовары, если интересно (простите за качество фото)
Один из самоваров, что я расписывала:


Еще вместе с самоваром обычно поднос и чайник берут. Чайника не нашла, а поднос вот:


А мой самоварчик в процессе росписи:


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



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

Еще я веду канал в Telegram: GameDEVils, делюсь там клевыми материалами про геймдизайн, разработку и историю игр.
Читать дальше →
Всего голосов 10: ↑6 и ↓4+5
Комментарии4

11 крупнейших международных соревнований по программированию на 2022 год

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


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

Геймдизанер ≠ геймдевелопер, потому во многих джемах нет порога входа, можно создавать игру, не шаря за разработку и использовать ноу-код движок. А для тех, кто умеет программировать, проводят соревнования по спортивному программированию. Большие, международные и иногда с призами. Под катом 11 самых крупных соревнований для разработчиков на 2022 год.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+11
Комментарии3

Учебник по Solidity. Всё про библиотеки

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

“Библиотеки можно рассматривать, как неявные базовые смарт-контракты для смарт-контрактов, которые их используют” из документации языка Solidity

Библиотека в Solidity - это тип смарт-контракта, содержащий многократно используемый код. После развертывания в блокчейне (развёртывается только один раз) ему присваивается определённый адрес, а его свойства / методы могут многократно использоваться другими смарт-контрактами в сети Ethereum.

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

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Полезные и неизвестные возможности Java

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

В этой статье вы узнаете о некоторых полезных функциях Java, о которых вы, вероятно, не слышали. 

Это мой личный список функций, использованных мной недавно или с которыми я столкнулся при чтении статей о Java. 

Я сосредоточусь не на языковых аспектах, а на API. Я уже опубликовал все примеры, относящиеся к этой статье, в Твиттере в форме, показанной ниже. Вы также можете найти их в моей учетной записи Twitter или просто под #javaхэштегом.

Читать далее
Всего голосов 39: ↑39 и ↓0+39
Комментарии9

HyperModem: Девайс для доступа в децентрализованный peer to peer интернет будущего

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

Интернет в наше время излишне централизован и держится на костылях. Не всех это устраивает. Для технологии 1970-х годов он еще неплохо справляется, но зачем нам в 2022 году такие вещи, как централизованные интернет-провайдеры, BGP, IPv4, TLS? Можно ведь сделать лучше!

Все технологии для этого есть
Всего голосов 49: ↑46 и ↓3+56
Комментарии127

GPT для чайников: от токенизации до файнтюнинга

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

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

Читать далее
Всего голосов 26: ↑25 и ↓1+29
Комментарии11

Как переключиться с менталитета нищего на менталитет серийного стартапера из Кремниевой долины

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

Почему так «мало успешных основателей стартапов, которые выросли в полной нищете»


image


Рикки Йен (в центре), дважды фаундер Y Combinator: Crowdbooster (S10) и Flow Club (S21)

Всем привет!
Я собрал в одном месте Founders at work: 150+ историй основателей стартапов, которые прошли Y Combinator. Сегодня хочу поделиться переводом про путь Рикки Йена, нищего студента-эмигранта из Тайваня не знающего английского языка с безработным отцом на шее.


Мой кофаундер Дэвид и я оба выросли в нищете и можем назвать себя “закаленными в бою”, когда речь заходит как о жизни, так и о стартапах. Поэтому, когда разговор в Кремниевой Долине зашел о неравенстве доходов, то мы навострили уши. На мгновение наши прошлое и настоящее соприкоснулись. Вот цитата Пола Грэма, которая привлекла наше внимание.

“С бедностью тесно связано отсутствие социальной мобильности. Я сам это видел: вам не нужно расти богатым или даже принадлежать к верхнему среднему классу, чтобы разбогатеть как основатель стартапа, но очень немногие успешные основатели выросли в крайней бедности ”. (Источник)


Грэм был прав, и это правда, которую мы хорошо осознаем как основатели стартапов. Мало того, что все карты против нас, чтобы просто иметь возможность основать стартап, но создать и поддерживать компанию, которая “предназначена для быстрого роста”, особенно сложно, если вы выросли в крайней бедности. Мы с Дэвидом боролись с этой идеей с момента основания нашей компании в 2010 году, и у нас это неплохо получилось. Главная проблема заключается в том, что мы с Дэвидом называем неравенством мировоззрения. Чтобы по-настоящему понять это, вам придется влезть в мою шкуру. Позвольте мне пригласить вас в мою личную историю.
Читать дальше →
Всего голосов 52: ↑33 и ↓19+28
Комментарии137

LJV: Чему нас может научить визуализация структур данных в Java

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

Эта статья является пересказом моего доклада на Java-конференции SnowOne 2021 года. LJV — проект, созданный в 2004 году как инструмент для преподавания языка Java студентам. Он позволяет визуализировать внутреннее устройство структур данных. В этом докладе я запускаю LJV на разных структурах (от String до ConcurrentSkipListMap) в разных версиях Java и разбираю, что там внутри, как оно менялось от версии к версии, и как это всё работает.


image

Читать дальше →
Всего голосов 85: ↑85 и ↓0+85
Комментарии11

Сам себе нотариус. Используем OpenSSH для подписи файлов и TLS для нотариального заверения веб-страниц

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


Если нужно подписать файл, чтобы гарантировать его аутентичность, что мы делаем? Старый способ — запустить PGP и сгенерировать подпись, используя команду --sign. Цифровая подпись удостоверяет создателя и дату создания документа. Если документ будет как-то изменён, то проверка цифровой подписи это покажет. Одновременно нужно опубликовать в открытом доступе свой публичный ключ, чтобы любой желающий мог проверить подпись.

Но использовать PGP — не лучшая идея. Есть варианты получше. Например, теперь подписывать документы/файлы можно с помощью обычной утилиты OpenSSH.

Вообще, ключ SSH — очень удобная штука. Не только для подписи текстов и коммитов в Git, но и для авторизации на сайтах. А также для шифрования сообщений, которые сможет прочитать только один человек.
Читать дальше →
Всего голосов 41: ↑40 и ↓1+50
Комментарии10

Основы HTTPS, TLS, SSL. Создание собственных X.509 сертификатов. Пример настройки TLSv1.2 в Spring Boot

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

Привет, Хабр! В современном мире абсолютное большинство сайтов используют HTTPS (Google даже снижает рейтинг сайтов работающих по HTTP в поисковой выдаче), а подключение к различным системам происходит по протоколу TLS/SSL. Поэтому любой разработчик рано или поздно сталкивается с этими технологиями на практике. Данная статья призвана помочь разобраться, если вы совершенно не в курсе что это такое и как оно устроено. Мы разберем как работает соединение по протоколу TLS, как выпустить собственные сертификаты и настроем TLS в Spring Boot приложении. Поехали!

Читать далее
Всего голосов 16: ↑12 и ↓4+9
Комментарии12

19 концепций, которые нужно изучить для того, чтобы стать эффективным Angular-разработчиком

Время на прочтение14 мин
Количество просмотров35K
TODO-приложение во фронтенд-разработке — это то же самое, что «Hello world» в обычном программировании. При создании TODO-приложений можно изучить выполнение CRUD-операций средствами того или иного фреймворка. Но часто подобные проекты лишь весьма поверхностно касаются того, что на самом деле умеет фреймворк.

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



Для освоения Angular нужно очень много всего изучить. Многие разработчики застревают на начальных этапах освоения Angular. Происходит это из-за того, что они не знают о том, куда им двигаться, или не знают того, по каким ключевым словам им искать информацию, которая позволит им сделать шаг вперёд. Автор этого материала говорит, что ей, когда она начинала осваивать Angular 2+, хотелось бы, чтобы ей попалось бы руководство по данному фреймворку, похожее на это.
Читать дальше →
Всего голосов 26: ↑22 и ↓4+18
Комментарии11

Node.js: шаблон сервера для аутентификации и авторизации

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


Привет, друзья!


На досуге разработал шаблон Node.js-сервера для аутентификации/авторизации, которым хочу с вами поделиться. Надеюсь, кому-нибудь пригодится.


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


Также обратите внимание, что в коде имеется несколько console.log для облегчения процесса разработки приложения. В продакшне они не нужны. В производственном режиме также не следует возвращать столь информативные message.


Если возможностей, реализованных в шаблоне, окажется недостаточно, вот парочка более продвинутых инструментов:


  • oidc-client — разработчик отказался от дальнейшей поддержки, новый мейнтейнер пока не нашелся
  • oidc-provider — рекомендация моих более опытных коллег

Если вас интересует полноценная платформа для аутентификации/авторизации "из коробки", рассмотрите возможность использования Auth0.


Репозиторий


Сервер реализован с помощью Express.js


В качестве базы данных используется MongoDB Atlas

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

Spring Boot: от начала до продакшена

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

В данной статье я попробую расписать все шаги, которые потребуются для создания небольшого проекта на Spring Boot и развертывания его на боевом сервере.
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии38

Настройка приложения — Spring Configuration Metadata

Время на прочтение7 мин
Количество просмотров42K
Настройка приложения с помощью @ConfigurationProperties, как альтернатива использованию @Value.

В статье

  • Настройка и изменение функционала приложения через application.properties с использованием ConfigurationProperties
  • Интеграция application.properties с IDE
  • Проверка значений настроек

image
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии8

Hibernate Reactive: стоит ли оно того?

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

В течение последнего года мы готовились к выпуску первого стабильного релиза Hibernate Reactive и пытались ответить на некоторые вопросы, которые у нас возникли.

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

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии0
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность