en
Feedback
Айтигребец

Айтигребец

Open in Telegram

Айтигребец - канал душного сеньора помидора. Ссылочки, мысли и прочая IT-годнота. Технологии, статьи, интервью etc. Расширяем кругозор и гребём тугеза. Немного о весле : 15 лет фуллстека (85% бэк и 15% фронт), 9 лет .net, 6 лет nodejs Связь : @ytrihT

Show more
846
Subscribers
No data24 hours
-47 days
-1330 days
Posts Archive

Небольшая задачка по #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! Может кому когда понадобится 😉

#новостьОднойГифкой

Дуров что, не торт уже? Что за шильные "фичи", гм. Telegram интродьюснул "темы" в чатах. Я уж порадовался, мол как "threads"
+1
Дуров что, не торт уже? Что за шильные "фичи", гм. Telegram интродьюснул "темы" в чатах. Я уж порадовался, мол как "threads" в slack, но .... нет. В двух словах : у чатов с 200+ людьми можно создать "топики", т.е. как форумы в 2000-ых, только с одним уровнем вложения. Посмотреть пример можно тут : @TheForum. Т.е. это просто... папка с группами. Всё. *музыка из ералаша*. В текущем виде я не могу себе представить того, кому это было бы нужно, потому что : - нельзя подписаться только на один топик, вступаешь в один - у тебя добавляется весь "форум". Отлично )) - еще хуже, что и уведомления у тебя от всех топиков, отключить как-то отдельно нельзя. Только замьютать, но это мало что меняет, т.к. в 99% я уверен, что все и так мьютают все общие чаты, поэтому написали ли только в вашем топике или в каком-то левом разобраться будет сложно по счётчику уведомлений. Точнее невозможно. Вот и придумайте хоть один кейс, когда такое поведение подойдёт. Я не могу :) Я папками намного лучше сделаю то же самое. 0 профита. Может кто понял сакральный смысл этого обновления? Вэлкам в комменты.

stackoverflow наконец одарил новой ачивкой. top 1.00% this year 😃 Господа индусы судя по всему подвинулись на скамейке хД Во
stackoverflow наконец одарил новой ачивкой. top 1.00% this year 😃 Господа индусы судя по всему подвинулись на скамейке хД Вообще, на стеке я уже почти 11 лет. И стараюсь всегда, когда не нахожу ответа - постить свои солюшены. Но по факту, рейтинг набирается довольно рандомно. Если повезет, один-два ответов взлетают и становятся с 100+ апвотами, 99% же или набирают пару-тройку, или же вообще остаются без внимания. В целом, всё так и должно быть - насколько ты полезен сообществу, настолько и апвотают. А полезны обычно какие-то супер-базовые ответы и обычно там уже всё отвечено до тебя. Довольно узкие и сложные ответы может кому-то и экономят время, но по сути - единицам. Какого-то "быстрого" пути я не заметил, но как видно и стратегия "нашёл проблему -> не нашёл решения -> оформил и запостил" на долгосрочной дистанции всё же даёт свои плоды. Тут как и везде - делаешь что-то на постоянке -> рано или поздно получаешь профит. Возможно, еще один вариант - коммитаться во всё новое, новые технологии/фреймворки. Там и проблем больше и таких же заинтересованных в решении этих проблем. И да, по моему опыту на собесах всем фиолетово на твой профиль в stackoverflow :) Так что бустить специально смысла не вижу. Просто очередная приятная ачивка, не более того 😉 Делитесь в комментах своей статистикой, если есть, интересно глянуть. Всем бобра.

Когда выслал другу мем, а в буфере был файл с кодом... meme-orienting-programming!
Когда выслал другу мем, а в буфере был файл с кодом... meme-orienting-programming!

Конфа 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 конфы, можно найти по тегу #доклады 😉

Открыли доступ для всех. Нужно зарегиться, верифицироваться по номеру телефона и у вас будет 50 генераций :) Налетай! https://openai.com/dall-e-2/

photo content

Часть 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, алгоритмы.

Что вы сделаете, когда по пути на работу найдёте на дороге красивую флешку, на которой будет значок биткоина? Всё шире распро
Что вы сделаете, когда по пути на работу найдёте на дороге красивую флешку, на которой будет значок биткоина? Всё шире распространяются атаки так называемых Rubber ducky usb устройств. В двух словах, флешка это не флешка, а эмулятор клавиатуры. Как только вы вставляете её в ваш ноутбук, она определяется системой как виртуальная клавиатура, а что произойдёт дальше уже зависит от фантазии хакера. Допустим, он в момент может через эмуляцию нажатий открыть PowerShell и... слить все ваши пароли на какой-либо сервер. Или поменять вам пароль на локальной машине. Или... ну вы поняли, в целом всё что вы можете сделать в системе с клавиатуры - сможет и флешка. В том числе и загрузить вредонос, который будет остлеживать всё и вся. Такой вид атак не новый, еще зародились они и стали общеизвестными еще в далёком 2010-ом. Ну а новые версии выходят постоянно, а в сети куча готовых скриптов для ньюбихакеров. Ну и не одними флешками едины, это может быть как usb-грелка для кружки, так и например usb-вентилятор - всё, что может быть воткнуто в ваш разъём ноута. Притом сам разъём не важен, это может быть и type-c и lightening. И самое забавное, что по сути нет никакой защиты от такой атаки кроме как хардварного запрета вообще вставлять новые флешки нет. Но как понимаете - делают это только там, где и правда думают о безопасности. Т.е. практически нигде. Впечатлились? А как вам ... обычный usb кабель, который кроме всего прочего умеет в Wi-Fi и удалённый доступ в реальном времени? Круто. Но не для безопасников. Им не очень, да 😄 Тут - можно про шнур почитать, а вот тут и тут про usb устройства.

Всем привет! Давненько хотелось сделать какого-то классного бота для 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! зы. Может слегка долго отвечать. Лямбды, сэр. Холодный старт и вот это вот всё.

sticker.webp0.39 KB

Мой опыт использования 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