Айтигребец
Open in Telegram
Айтигребец - канал душного сеньора помидора. Ссылочки, мысли и прочая IT-годнота. Технологии, статьи, интервью etc. Расширяем кругозор и гребём тугеза. Немного о весле : 15 лет фуллстека (85% бэк и 15% фронт), 9 лет .net, 6 лет nodejs Связь : @ytrihT
Show more846
Subscribers
No data24 hours
-47 days
-1330 days
Posts Archive
846
Небольшая задачка по #aws #serverless #telegram_bot
Есть тг бот, работает на AWS Lambda. Приветствует входящих пользователей. Вопрос - как сделать так, чтобы бот через час удалял за собой это сообщение? Условие : serverless решение. В рамках AWS.
Цель : нет нагрузки -> нет трат. Собственно, в этом же и есть преимущество serverless идеологии.
Первое, конечно же что приходит на ум - деплойнуть банальный воркер на минимальный EC2, который будет имитировать простейший scheduler. Может быть cron, может быть простой скрипт зацикленный, который будет ожидать "задания" в виде {messageId}, который нужно удалить в {dateTime}. Но... не хотелось без постоянно поднятой машинки.
Дальше приходит на ум амазоновская очередь SQS. Закидываем в очередь сообщение, ставим ей какой-то readyToHandle в 60 минут. Он через час становится видимым и подписываем на очередь еще одну лямбду, которая автоматически триггернется как только сообщение станет видимо в очереди.
Подходит, но есть одно но - SQS и правда имеет параметр сообщения "DelaySeconds", однако, его максимальное значение - 15 минут. Не подходит.
Вот в целом-то и все доступные варианты, если глянуть поверхностно. Но к счастью, есть ещё один...
Решение
Оказалось, на aws есть сервис States - AWS Step Functions. Машина состояний. Что это такое?
Step Functions — это сервис бессерверной оркестровки, который позволяет комбинировать функции AWS Lambda и другие сервисы AWS для создания критически важных для бизнеса приложений. С помощью графической консоли Step Functions вы видите рабочий процесс своего приложения как серию управляемых событиями шагов. Step Functions основана на конечных автоматах и задачах. Конечный автомат — это рабочий процесс. Задача — это состояние в рабочем процессе, которое представляет собой единицу работы, которую выполняет другой сервис AWS. Каждый шаг рабочего процесса — это состояние (с) habr
Если проще - вы можете "накидать" так называемых шагов на амазоновский юайчик, связать их стрелочками-условиями и быть уверенным, что они исполнятся при определенных условиях. Получается блок-схема. У кого есть айтишное образование точно рисовали такие на парах.
Одним из "степов" может выступать кубик с названием "Wait", который отвечает за "паузу в n ms". Выглядит это вот так. И этот wait time можно в том числе указывать и прграммно. Т.е. данные могут переходить по этим состояниям.
Собственно...подходит! Флоу получился такой :
1. Входит новый пользователь. Лямбда ловит вебхук от телеграма, приветствует пользователя.
2. Лямбда триггерит созданную стейт-машину, передаёт туда условный {messageId} сообщения, которое нужно удалить и время, через сколько секунд.
3. Запускается стейт-машина/флоу на aws. Она переходит в режим ожидания. А через час вызывает мою лямбду, передавая ей мой джсончик с данными.
4. Отдельная лямбда, выполняющая только одну функцию - удаление из тг чата... удаляет сообщение.
PROFIT!
Может кому когда понадобится 😉
846
Дуров что, не торт уже? Что за шильные "фичи", гм.
Telegram интродьюснул "темы" в чатах. Я уж порадовался, мол как "threads" в slack, но .... нет.
В двух словах : у чатов с 200+ людьми можно создать "топики", т.е. как форумы в 2000-ых, только с одним уровнем вложения. Посмотреть пример можно тут : @TheForum. Т.е. это просто... папка с группами. Всё. *музыка из ералаша*.
В текущем виде я не могу себе представить того, кому это было бы нужно, потому что :
- нельзя подписаться только на один топик, вступаешь в один - у тебя добавляется весь "форум". Отлично ))
- еще хуже, что и уведомления у тебя от всех топиков, отключить как-то отдельно нельзя. Только замьютать, но это мало что меняет, т.к. в 99% я уверен, что все и так мьютают все общие чаты, поэтому написали ли только в вашем топике или в каком-то левом разобраться будет сложно по счётчику уведомлений. Точнее невозможно.
Вот и придумайте хоть один кейс, когда такое поведение подойдёт. Я не могу :) Я папками намного лучше сделаю то же самое. 0 профита. Может кто понял сакральный смысл этого обновления? Вэлкам в комменты.
846
stackoverflow наконец одарил новой ачивкой. top 1.00% this year 😃 Господа индусы судя по всему подвинулись на скамейке хД
Вообще, на стеке я уже почти 11 лет. И стараюсь всегда, когда не нахожу ответа - постить свои солюшены. Но по факту, рейтинг набирается довольно рандомно. Если повезет, один-два ответов взлетают и становятся с 100+ апвотами, 99% же или набирают пару-тройку, или же вообще остаются без внимания. В целом, всё так и должно быть - насколько ты полезен сообществу, настолько и апвотают. А полезны обычно какие-то супер-базовые ответы и обычно там уже всё отвечено до тебя. Довольно узкие и сложные ответы может кому-то и экономят время, но по сути - единицам. Какого-то "быстрого" пути я не заметил, но как видно и стратегия "нашёл проблему -> не нашёл решения -> оформил и запостил" на долгосрочной дистанции всё же даёт свои плоды. Тут как и везде - делаешь что-то на постоянке -> рано или поздно получаешь профит. Возможно, еще один вариант - коммитаться во всё новое, новые технологии/фреймворки. Там и проблем больше и таких же заинтересованных в решении этих проблем.
И да, по моему опыту на собесах всем фиолетово на твой профиль в stackoverflow :) Так что бустить специально смысла не вижу.
Просто очередная приятная ачивка, не более того 😉 Делитесь в комментах своей статистикой, если есть, интересно глянуть. Всем бобра.
846
Конфа DotNext на прошлой неделе выложила на ютубе дофига полезных докладов! Ловите ссылочки :
Григорий Кошелев — Kafka: от теории к практике
Андрей Парамонов — gRPC: наш опыт внедрения. Почему всегда он?
Евгений Пешков — .NET: AOT в 2022
Анатолий Жмур — Поговорим о хэш-функциях
Н. Липилин (PVS-Studio) — SAST и SCA: поиск дефектов безопасности в коде проекта и его зависимостях
Круглый стол. Споры об аутентификации и авторизации на платформе ASP.NET Core
Денис Тарасов, Дмитрий Афанасьев — Атакуем цепочку поставок
Сергей Васильев — Обработка XML-файлов как причина появления уязвимостей
Сергей Баранов — Многоликий DDD
Вадим Мартынов — C# vNext: 20 фич из будущего
Круглый стол. Как стать сеньором
Павел Тупицын — Как написать высокопроизводительный драйвер базы данных
Антон Нечуговских — Как мы написали свой lock-free dictionary
Adam Furmanek — Ordering the Chaos: Cleaning Logs and Ordering Events in Microservices
Александр Поломодов — Как развиваться, если ты уже Senior Software Engineer
Алексей Патрин — Обезболивание enterprise-разработки. Применяем лучшее из мира микросервисов
Константин Ахметов (ПСБ) — Бизнес-конфиги
Леонид Андриевский — FFmpeg в приложениях .NET для работы с медиафайлами
С.Огородников, Р.Просин, К.Хабаров — Аутентификация и авторизация на платформе ASP.NET Core
Станислав Сидристый — Тонкие настройки стандартного ThreadPool
Круглый стол. Про Kafka и не только
Станислав Флусов — Миграция с MS SQL в PostgreSQL, когда нужно ещё вчера
Я уже делал похожую подборку с Highload конфы, можно найти по тегу #доклады 😉
846
Открыли доступ для всех. Нужно зарегиться, верифицироваться по номеру телефона и у вас будет 50 генераций :) Налетай!
https://openai.com/dall-e-2/
846
Часть 2.
6) Старайтесь откидывать технические собеседования в компании, которые вам действительно важны "подальше" по времени, а "так себе" - поближе.
Подумайте, сколько вы вообще готовы ходить на технические, т.к. каждый собес будет вас выедать морально. Неделя? Две? Вот этим отрезком и оперируйте.
Во-первых, вы сможете "натренироваться" на вакансиях, которые менее интересны и тем самым понять что вообще спрашивают и в целом апнуть свои знания во время этих собесов. Во-вторых, если вам предложат офер в самом начале - особо никто две недели вас ждать не будет - высокий риск того, что ребята найдут кого-то, кто сможет быстрее ответить и позиция закроется. В-третьих, к более желанным собеседованиям у вас уже могут быть оферы на руках, что в целом делает вашу позицию сильнее, а hr'ов заставляет рассматривать вас в ускоренном порядке +предлагать условия получше. Поэтому такая стратегия втройне имеет смысл.
7) Переносить "пре-скрины" с hr эт нормально, не бойтесь это делать, если вы не успеваете или ещё чего. Переносить технические - крайне не рекомендую, т.к. обычно на них уже аплаится 2-3 человека, чьи окна могут быть расписаны и после переноса к вам может сложится в целом так себе отношение, т.к. вы подобными мувами "дёргаете" людей. А дёргаться никто не любит :)
8) Заготовьте заранее список вопросов, которые для вас важны для прескринов. Структура команды, локейшн разработчиков, какой стек используется, какие плюшки есть в компании - обычно что-то да выветривается из головы.
9) Ну и последнее и самое очевидное - приходите на митинг за пять минут до начала. Это просто правило хорошего тона 😉
🚀 Что нынче спрашивают :
Для начала обозначу что искал : backend, nodejs, nest, js/typescript.
Поехали.
Много базовых вопросов : Event loop - вызубрить и понимать +что находится под капотом на уровне системы(какие либы и чем асинхронность роляет). +вопросы на nextTick() vs setInterval() vs setImmediate(). +вопросы чем можно забить кью/стек.
Промисы. Тоже от зубов чтобы отскакивало. Задачку почти везде накинули на них.+знать Promise.All/Race.
EventOmitter. Cтримы - зачем, в чем преимущества, какие бывают в nodejs. Spread/rest операторы. this - что такое, подвохи и тд. Стек/Очередь/Дерево/Array vs List.
В целом - много архитектурных вопросов. SOLID (+DRY,KISS,GRASP) - куда ж без них родимых, Парочку паттернов проектирования из GoF (Observer, Adapter, Facade, Синблятон). DDD как подход. FIFO и LIFO в чем отличие. Понимание Dependency injection / Inversion Of Control. Паттерн SAGA. Задачки на "а как бы ты сделал в микросервисах вот то-то и то-то", message brokers и варианты взаимодействия между сервисами. RetryPolicy - что такое, какие бывают, как реализуются. Идемпотентность (как в рамках HTTP Methods, так и в рамках асинхронщины на уровне микросервисов). Мультитрединг. Redis (pub/sub, distributed lock). CQRS что такое и как реализуется. UnitOfWork паттерн. Парочка хитрых вопросов по Prometheus было (что удивило). Виды тестов, метрики coverage'а, mock vs stub.
Довольно много вопросов по базам данных. Принцип выбора sql/nosql. Что такое и как работают индексы (какие минусы есть), задачки на шардирование, профайлинг запросов. Задачка на "выкатку новой схемы" без потери запросов/данных. ORM - плюсы и минусы, как решать. Active record vs Repository паттерн.
На удивление почти не спрашивали о : Typescript, Nest, OOP, Docker, алгоритмы.
846
Что вы сделаете, когда по пути на работу найдёте на дороге красивую флешку, на которой будет значок биткоина?
Всё шире распространяются атаки так называемых Rubber ducky usb устройств. В двух словах, флешка это не флешка, а эмулятор клавиатуры. Как только вы вставляете её в ваш ноутбук, она определяется системой как виртуальная клавиатура, а что произойдёт дальше уже зависит от фантазии хакера.
Допустим, он в момент может через эмуляцию нажатий открыть PowerShell и... слить все ваши пароли на какой-либо сервер. Или поменять вам пароль на локальной машине. Или... ну вы поняли, в целом всё что вы можете сделать в системе с клавиатуры - сможет и флешка. В том числе и загрузить вредонос, который будет остлеживать всё и вся.
Такой вид атак не новый, еще зародились они и стали общеизвестными еще в далёком 2010-ом. Ну а новые версии выходят постоянно, а в сети куча готовых скриптов для ньюбихакеров.
Ну и не одними флешками едины, это может быть как usb-грелка для кружки, так и например usb-вентилятор - всё, что может быть воткнуто в ваш разъём ноута. Притом сам разъём не важен, это может быть и type-c и lightening.
И самое забавное, что по сути нет никакой защиты от такой атаки кроме как хардварного запрета вообще вставлять новые флешки нет. Но как понимаете - делают это только там, где и правда думают о безопасности. Т.е. практически нигде.
Впечатлились? А как вам ... обычный usb кабель, который кроме всего прочего умеет в Wi-Fi и удалённый доступ в реальном времени?
Круто. Но не для безопасников. Им не очень, да 😄
Тут - можно про шнур почитать, а вот тут и тут про usb устройства.
846
Всем привет!
Давненько хотелось сделать какого-то классного бота для Telegram и вот родилось наконец-то.
Рад представить вам бота для создания Gif демотиваторов 🔥 : t.me/gifdembot
Что умеет?
Всё просто. Выбираете любую гифку через @gif бота, отсылаете боту, вводите текст и получаете анимированный демотиватор. Так же есть поддержка анимированных стикеров и ваших личных коротких видосов.
🔥Вэлкам ту трай!🔥
Немного истории создания :
У определенной возрастной аудитории может слегка подсвести олдскулы :) Многие помнят эру статических картинок/мемов в чёрном квадрате - демотиваторов. Они сначала заполонили собой западные паблики, а потом и ру сегмент. Были времена, да :)
Идея создать какую-то тулу, которая бы позволила делать "живые" демотиваторы пришла мне еще лет шесть назад. Я даже довёл проект на asp.net до какого-то mvp, однако в проде прожило это всё примерно пару недель и я утратил интерес, хотя активные пользователи уже и появились. Просто переключился на другой пет-проджект. Те, кто когда-либо писал свои проекты и доводили их до приемлемого состояния знают это чувство, когда основная (техническая часть) проекта вроде готова, но остались те самые "скучные" 20% от которых опускаются руки. В итоге всё это ушло в шкаф до лучших времён, а точнее ... на кладбище личных проектов.
Однако, идея где-то сидела внутри и скреблась и в какой-то момент мне захотелось сделать что-то такое небольшое, но по-взрослому. По канонам скейл систем. Весь этот большой тырпрайз, конечно, всегда такой вот, но это всё там, не рядом. Хотелось сделать свой маленький и не кровавый 😃
Как нельзя кстати я начал играться с API телеграм ботов, тыкал палочкой в serverless и вкатывался в архитектуру облаков. И я понял, что пора смахнуть пыль со старого проекта и дать ему жизнь. В итоге, тот старый mvp не имеет с текущим проектом и пары процентов общего кода. Всё переписано фактически с нуля. Хотя казалось бы, что там кодить, но дьявол как всегда в деталях :) Сил и времени вбухано много.
Под капотом :
C# .net core, AWS Lambda, SQS, минимальные кластеры Postgres и Redis на DigitalOcean'е. Для метрик подымал prometheus+Grafana на отдельном инстансе, но в итоге перешёл на newRelic. Логи там же. Их бесплатный план довольно приятный :)
В общем, если будет интересна техническая часть, пинганите в комментах, сделаю отдельный пост. У бота есть собственный мини дев-блог, если кому-то по какой-то странной причине прям очень захочется следить за его развитием (https://t.me/GifDemBot_DevBlog).
Потыкать бота палочкой можно тут : t.me/gifdembot
Буду рад увидеть ваши гиф-демотиваторы у себя в комментах 😃 Let's Rock!
зы. Может слегка долго отвечать. Лямбды, сэр. Холодный старт и вот это вот всё.846
Мой опыт использования Macbook
На днях презентовали очередные "wow" обновления яблочных девайсов. В два раза лучше! В три производительнее! В пять удобнее! Новый датчик! Лучше прежнего! Новые цвета! И материальчик для чехольчика, посмотрите на него! Всего xxx $ и он ваш! Скорее, пока не размели.
Кх кх. Да. Инновации в деле.
Так о чём это я...
Я буквально недавно поимел прекрасную возможность свичнуться на время с windows на богоподобный Mac!
Уууухууу! Какой же он прекрасный и крутой, вы не поверите! Это лучшее, что случалось со мной, рил. Идеальная айос, а какой приятный тач!!! Удивительный юзер экспириенс...
Ах да. Это. Это же слова из презентаций. Чёт попутал.
Так вот, у меня ДВАДЦАТЬ ДНЕЙ ПОДРЯД ГОРЕЛО 🔥 с того, какой мак прекрасный. Точнее "прекрасный".
В статье 19 пунктов того, почему я себе не куплю мак. Мне хватило этих двадцати дней чтобы понять, что то ли я какой-то не такой, то ли слова "эпл" и "премиум" в одной фразе это шутки такие, которых я не понимаю. Почти каждый чёртов день я ловил маленькие фейспалмы. Каждый. Чёртов. День.
*типичный мем про ожидание vs реальность*
Внимание, особо ярым фанатам не заходить. Там сравнение с богомерзким Xiaomi notebook pro. А ксяоми, как известно для ... ээээ... маргиналов.
В общем, если ко мне в очередной раз подойдут в туалете и скажут, что лучше Apple в мире ничего нет - я найду что ответить.
Если кому интересен мой IOS экспириенс, вэлкам в статью. Приятного чтения и буду благодарен за репосты друзьям-айосникам. Пусть приходят в комменты и расскажут мне где я не прав и какой я маргинал. И что за двадцать дней философию джобса мне не понять.
https://telegra.ph/Opyt-ispolzovaniya-Macbook-bez-kupyur-ili-EHpl-vy-seryozno-09-09?2
