Всеволод Золотов | life in dev – Telegram
Всеволод Золотов | life in dev
614 subscribers
133 photos
63 videos
62 links
Йо! Я - Senior Software Engineer и Спикер на конференциях. Рассказываю про жизнь в разработке

Написать лично: @vsezold
Download Telegram
Формы на любом сайте без сервера

Когда я недавно делал лэндинг, мне нужно было сделать базовую форму для обратной связи с оповещением на email. И у меня как у энтерпрайзнутого разраба в голове сразу гексагональная архитектура, микросервисы, почтовый сервер, конечно же ui клиент и мобильное приложение с пушами.

Да... НО
Зачем если есть совершенно бесплатный сервис formsubmit.co, который сам тебе пришлет письмо с заполненной формой на почту. А еще он настолько прост, что разберется даже твоя собака (или кошка) (или кто?)

Мораль: зачем городить кучу сервисов и тратить свое время ради задачи, которая решается первой ссылкой в гугле?)
1👍11🔥771😁1
Нас зондируют!

Прислали мне тут ссылку на тестирование перед собеседованием.

А во время тестирования к тебе прикрепляют анальный зонд, который видит все: клавиатуру, мышь, монитор и даже камеру!

И это иностранный рынок.
А в РФ все только движется к этому...
😁13🔥532🤔1
Взял отпуск на 5 дней передохнуть, а вам хорошей рабочей недельки)
😁16🔥74👍22
У меня украли $8000 на собеседовании

Случилось это прямо сейчас

Схема такая:
1) Пишет HR в линкедине предлагает вакансию на $11000-14000
2) Предлагают сделать тестовое (в котором, как выяснилось потом, вредоносный код)
3) Далее бехейв собес
4) Потом лайвкодинг во время которого просят сделать пару задач, в том числе по web3
5) Подключаешь кошелек, выполняешь таску
6) Приступаешь к другой задаче
7) В этот момент они угоняют твою крипту
8) Обещают тебе следующий созвон CTO и оффер
9) 8к баксов нет, оффера тоже

Никаких транзакций я не подписывал. Только подключил кошелек. Возможно это уязвимость в MetaMask.

Этот кошелек обчистили: 0xd822358813da190d5515f8047ee74277a34cb006

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

Если кто-то знает, что можно сделать в этой ситуации, напишите, пожалуйста 🙏

А, ну и я знаю, что я облажался... (не пишите об этом)
1😢51😁1976🤔5👍1🔥1💅1
Media is too big
VIEW IN TELEGRAM
Прыжок с 207 метров

Я этого очень долго ждал. Всем советую попробовать. Страшно п****ц ☠️

Очень насыщенные 5 дней отпуска. Начинаю новую жизнь с понедельника, как говорится)

Смотреть до конца, последние кадры самый угар)
🔥2014😁62
С двадцатитрёх-чем-то-летием меня 2️⃣3️⃣

Никто мне так и не подарил тапки WhatsApp 😭

Зато вирус подарил мне температуру 🥶
Please open Telegram to view this post
VIEW IN TELEGRAM
215😢9🔥8😁4💅221
Forwarded from IT STAND
⚠️ На собеседовании с разработчиком украли деньги!

HR написала в линкедине с предложением вакансии на $11 000 - $14 000, попросили показать лайвкодинг с шарингом экрана, а сами в это время обчищали кошелек 💰

Сегодня Всеволод Золотов, разработчик с которым произошла эта ситуация поделится подробностями в прямом эфире.

Ведущие:
❤️ информационная безопасность - Алексей Федулаев @int0x80h
❤️ независимый эксперт - Георг Гаал @gecube

🕖 уже сегодня в 20:00

Прямая трансляция: https://www.youtube.com/watch?v=csXDtNcZGN4 с ответами на вопросы из чата YouTube

При поддержке:
@ever_secure @kubernetes_ru @devopsforlove @lifeindev

🔥IT STAND | FIDELINA.RU | Бот

Ты знаешь кого предупредить
12🔥11😁3👍2
📤📤📤
Приходите на стрим сегодня в 20:00 😁
Узнаете как не просрать бабки в на собесе) Да и просто поболтаем)
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥6💅5😁2
Формы на любом сайте без сервера v2

В прошлый раз я рассказывал про formsubmit, но я нашел решение намного лучше!

Можно сразу слать сообщения в Telegram — напрямую в чат, никаких серваков и ботов поднимать не нужно!
Нужен токен бота (через @BotFather) и chat_id чата. Далее отправьте такой запрос.


await fetch(`https://api.telegram.org/bot${TOKEN}/sendMessage`, {
method:"POST",
headers:{"Content-Type":"application/json"},
body: JSON.stringify({ chat_id, text })
});


Всё!
В указанный час в тг придет сообщение (см скрин).

Итого:
- не нужен свой сервер
- не нужно проверять почту
- моментальное уведомление в тг

А что так можно было? 😂
11🤔4👍3😁2🙏11
211к просмотров на linkedin

При равном кол-ве подписчиков пост в телеграме набрал просмотров, а в линкедине 211к

В телеграме:
Больше репостов и комментов - больше просмотров.

В линкедине:
Тоже самое. Но репосты и комменты поощеряются самой платформой.

больше активности -> лучше поисковая выдача профиля -> чаще пишут HR -> все в выигрыше.

И самое смешное:
На технические посты - всем насрать.

Написал пост про угнанную крипту - куча комментов, репостов и лайков.

Чем популярнее пост, тем выгоднее людям это делать.

Да, это - синтетическая "популярность",
Но, активные пользователи платформы помогают друг другу продвигать свои профили.

Так популярные посты становятся еще популярнее. Простая и гениальная система.
2🔥105💅3
Media is too big
VIEW IN TELEGRAM
Локальный ИИ-агент

Не всегда хочется сливать свою кодовую базу в openai и другие платформы.

Поэтому решил провести эксперимент и сделать подобие Cursor IDE но с локально запущенными моделями!

Здесь описано как это сделать через ollama + vscode + continue.

Я чуть c дуру не купил Rasberry PI 5. Думал буду на ней локальные модели запускать для "домашних" нужд… Не тут-то было!)

Даже на ноуте 16gb RAM работает безумно медленно, да и модели сами тупые. Хочешь более крупные модели - комп лагает безбожно и греется как микроволновка...

И вот тут я задумался... Представьте сколько мы энерегии сжигаем просто болтая с "чатом гпт"... Глобальное потепление, привет!)
🔥144👍4💅111
This media is not supported in your browser
VIEW IN TELEGRAM
z-index - сладкая гадость

Делал недавно компонент табов для UI kit и хотел его сделать в первой версии без анимации. Но! Дизайнеры так нарисовали компонент, что пришлось сразу добавлять анимацию, чтобы не писать костыли.

Проблема в том, что вот эта серая тонкая полосочка перекрывала толстые полоски (при базовой верстке).

Вы скажете: «нужно использовать z-index», но будете правы только от части!

z-index в данном случае использовать нельзя, потому что табы могут находиться как в общем потоке, так и в оверлее (модалки, шторки и другие «парящие» элементы).
Поэтому пришлось сразу сделать нормально))

Задача сделать табы - не самая простая, а тут еще и заголовок должен уметь отделяться от контента! Да еще и скролл нужен, если все табы по ширине не влезают)

Вот так и получаются «космолеты» на ровном, казалось бы, месте!)
19👍54
Друзья! Всех с Наступающим!

2025 год был тяжелым лично для меня. Под конец даже пришлось уехать из страны… (апдейт будет позже)

Так что последние два месяца я экспат, поэтому молчал, уж простите. Зато теперь у меня есть мотоцикл - моя мечта еще со школы!

Надеюсь, что 2026 будет легче, проще и понятнее для всех нас!
Всем счастья, здоровья, любви и процветания, до свидания 🙃
125👍8🔥7💅1
Не хочу хвастаться, но я наконец-то заработал столько денег, что могу не работать до конца года 🤑
😁2484🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Я снял маску!

Год назад на работе мы решили отказаться от использования библиотеки ngx-mask для наложения маски на поле ввода для красивого и удобного ввода номера телефона или номера счета.

Почему отказались? Потому что ngx-mask не очень-то гибкая и накладывает свои ограничения. Сложно было делать свои абстракции и кастомные поля из-за того, что Angular не позволял делать два ValueAccessor на один элемент.

Выбор пал на Maskito — новая модная либа, которая становится все более популярная в СНГ, а еще и независима от фреймворка.
Основной плюс и, как оказалось потом, минус — значение поля хранится сразу с примененной маской.

Раньше:
Вы видели +7 (923)-652-35-42 на UI, но внутри это было 9236523542

Теперь:
Вы видите +7 (923)-652-35-42 на UI, но внутри это +7 (923)-652-35-42

И это проблема! Изменилась логика хранения данных и в проекте выскочило много багов. Проект огромный и спустя месяц фикса багов, я пошел думать как можно сохранить предыдущее поведение NgxMask, но использовать Maskito.

Решение заняло 3 строчки. Да, оно не самое красивое, но оно работает и теперь не нужно страдать всему отделу фронтов.


const originalRegisterOnChange = accessor.registerOnChange.bind(accessor);

accessor.registerOnChange = (onChange) => {
originalRegisterOnChange((value) => onChange(removeMask(value, this.mask)));
};


Результат на видосе.

Monkey Patching - грязный антипаттерн, но решает проблему бизнеса).
Но если всем сказать, что ты реализовал Decorator или Proxy - тебе будут аплодировать стоя 😀

Делайте выводы. Не всегда нужно писать красивый код.
6🔥4💅4👍1