Меня зовут Андрей, мне 27 и я мидл Backend PHP Dev. Тут я буду писать о вещах, которые я узнал или планирую изучить. Мысли, лайфхаки и мой путь к Senior позиции.
На следующий день после того, как написал пост о релизе, я потерял базу проекта — её снёс скрипт, который пытался поставить криптомайнер. 🙈 А через дня четыре я нахожу ещё скомпилированный скрипт, который грузит процессор на 100%. А всё почему? Vibecoding. Я запрогал сервис, используя аналог курсора, и даже толком не вникал, что там пишется. А когда постфактум начал смотреть — волосы дыбом пошли. Теперь я учёл эти ошибки и своими руками: - Переставил систему - Убрал самые очевидные дыры (дефолтный пароль и открытый порт на контейнер базы)...
Так, ну микропродукт я дописал, и вроде даже работает 🙏🔥 Крайне недоволен кодом 🤯 — по ходу дела менял механику работы и пробовал вайбкодить через cline + ChatGPT (позже расскажу про этот опыт, выводы и лайфхаки). В итоге пришёл к максимально простому функционалу. Боту можно переслать сообщение или пост — и он создаст для вас специальную ссылку. Переходим по ней — и можно установить ссылку как приложение на телефон 📲 Теперь дело за продвижением 🚀 — надо видео снять...
Как прошли ваши майские? Я вот переезжал с одной квартиры на другую, параллельно офигевая от количества вещей, которые у нас с женой накопились. 🤨 Только в последний день подготовил рабочее место и не успел над проектом из поста выше поработать. Но, как обещал, расскажу, в чем идея. Да и к тому же демо уже готовое есть — его только отладить и оформить красиво осталось. Идея первого микропродукта — это Telegram-бот, которому можно скинуть ссылку (произвольную), сообщение от бота или название канала/чата/бота/игры в Telegram, а он создаст специальную ссылку. Перейдя по ней, можно будет установить PWA-приложение на свое устройство (любое, например, телефон)...
Ох уж этот мозг 😨 Значит, подумал: ладно, напишу пост завтра. Завтра не написал, и вот here we are 😅 На самом деле у меня появилось сильно больше свободного времени по сравнению с тем, когда я активно вёл телеграм-канал. Думаю, все с этим сталкивались, что когда появляется небольшое облегчение, можно сломать свою рутину, чересчур расслабившись. Я возвращаюсь. За март и апрель я успел съездить в отпуск, поработать над двумя фриланс-проектами и загореться идеей. Ей я и поделюсь сейчас. Хочу попробовать поделать микро-продукты для телеграма и для веба и попробовать их монетизировать. Первый проект я уже начал, и через пару дней напишу, в чём идея, а через неделю должно быть готово демо...
4 недели назад
2 месяца назад
Недавно меня спросили, как я учил английский. У меня неплохой уровень чтения и listening (смотрю сериалы в оригинале без проблем). Отвечал, что старался читать и добавлять слова в LinguaLeo через плагин в Chrome. Мне кажется, сейчас этот сервис скатился. Теперь рекомендую приложение WordUp. В бесплатной версии можно добавить слово, прочитать его интерпретации на английском, а потом учить в простых тренажёрах (никаких переводов на русский, всё на английском). Но главный плюс для меня — раздел, где каждое слово сравнивается с похожими, чтобы понять тонкие различия в контекстах и значениях. Это помогает уяснить, когда использовать слово, и запоминать его на уровне смысла и ситуации. Думаю, это эффективный способ расширять словарный запас. Скидываю ссылку (не реферальная, я ничего не получу, но мы сможем видеть друг друга в приложении, сколько слов изучено, какие на изучении). Присоединяйтесь: https://www.wordupapp.co/app#friend/6E9BX6 #english
2 месяца назад
Laravel 12. Что нового? Сегодня релиз новой мажорной версии, основной фишкой которой заявлены минимальные критические изменения. https://habr.com/ru/articles/885338/
3 месяца назад
Заметка про рефакторинг для новичков — больше можете найти тут: https://refactoring.guru/ru/refactoring Представьте, у вас есть такая проверка: может ли пользователь добавить карту? if (! $deal->spDeal->seller_card_details_id && ! $deal->spDeal->transactions->where('type', TransactionStateEnum::INIT_PAYOUT)->isEmpty() && $deal->spDeal->transactions->whereIn('type', [ TransactionStateEnum::INIT, TransactionStateEnum::HOLD, TransactionStateEnum::CONFIRMED, ])->isNotEmpty()) { $result['isCanAddCard'] = true; } else { $result['isCanAddCard'] = false; } Как ни форматируй переносы — читать всё равно сложно. Тут на помощь приходит рефакторинг. Суть рефакторинга в том, что мы делаем действия, которые никак не могут сломать текущий код, но при этом упрощают его. Что тут можно сделать? Можно выделить предикаты условия большого либо в методы, либо в переменные с логичным названием, отражающим суть проверки. Примерно так: $hasNoCard = ! $deal->spDeal->seller_card_details_id; $hasNoInitPayout = $deal->spDeal->transactions->where('type', TransactionStateEnum::INIT_PAYOUT)->isEmpty(); $hasRequiredTransactions = $deal->spDeal->transactions->whereIn('type', [ TransactionStateEnum::INIT, TransactionStateEnum::HOLD, TransactionStateEnum::CONFIRMED, ])->isNotEmpty(); Ага, теперь можно выполнить понятное сравнение, которое читается как обычное предложение на английском: $result['isCanAddCard'] = $hasNoCard && $hasNoInitPayout && $hasRequiredTransactions; Карта может быть добавлена, если ещё не была добавлена до этого, не инициировалась выплата по сделке и по сделке совершены необходимые транзакции. Собираем вместе: $hasNoCard = ! $deal->spDeal->seller_card_details_id; $hasNoInitPayout = $deal->spDeal->transactions->where('type', TransactionStateEnum::INIT_PAYOUT)->isEmpty(); $hasRequiredTransactions = $deal->spDeal->transactions->whereIn('type', [ TransactionStateEnum::INIT, TransactionStateEnum::HOLD, TransactionStateEnum::CONFIRMED, ])->isNotEmpty(); $result['isCanAddCard'] = $hasNoCard && $hasNoInitPayout && $hasRequiredTransactions; Теперь код выглядит чище и понятнее! Хотя конечно сложно сказать это судя по форматированию кода от телеграмма.😂
3 месяца назад
Из всех обсуждаемых тем на PHP-митапах самая горячая — переход PHP-разработчиков на Go. Но парадокс в том, что PHP сам эволюционирует в сторону асинхронности и распределённых систем 😅 В рамках подготовки к проведению конференции по PHP в Омске провёл небольшое исследование. Аналитика того, что интересует PHP-разработчиков, на основании тем докладов с локальных конференций. https://telegra.ph/Analitika-dokladov-s-lokalnyh-mitapov-po-PHP-trendy-i-insajty-02-11-2
3 месяца назад
Как я совместил развитие и спорт и кайфовал от этого 💪 В прошлом году осенью-зимой я очень сильно набрал вес — при росте 170 имел 85 килограмм. Весы оскорбительно указывали, что у меня ожирение. Но я смог разрулить этот вопросик. Об этом я расскажу позже. Интересно, ж? Но сейчас не про похудение. Я начал ходить в зал. Там я всегда начинал тренировку с эллиптического тренажёра (лыжи такие), и чтобы не было скучно, я смотрел доклады с Laracon 2024. Сам процесс тренировки максимально скучный, а в моменте тяжёлый, но если увлечься чем-то, нагрузка не замечается почти. И это было прям офигенно! Разминка на эллипсоиде длилась 20–25 минут — ровно как средний доклад с Ларакона. Чувствовал, что максимально эффективно использую своё время. Я действительно намного лучше узнал в тот момент экосистему Laravel, какие-то прикольные фишки и нововведения. Тогда как раз был анонс Laravel 11 с довольно сильными изменениями в плане бутстрапа базового, что сейчас, как мне кажется, оказалось очень удобным и эффективным. Убрали кучу дефолтных штук, которые можно конфигурировать позже. Что мне понравилось ещё Там я увидел, как зал реагирует на какие-то новые крутые фичи. Мне прям очень нравится, как презентуется Laravel — очень вдохновляюще! В тот момент я загорелся провести конференцию по PHP в Омске. Кстати, работа уже идёт, наверное, ближе к лету я расскажу подробнее. На память, конечно, уже не много помню из того, но вроде тогда появился defer для запросов, был доклад про `lock`-конструкцию в кеше. Ещё Тейлор много раз говорил, что он строит лучший фреймворк для фуллстек-разработки, и, как мне кажется, получается супер. Ещё думаю, что хорошо прокачал лисенинг, так как послушал в итоге около 8 часов речи на английском с разными акцентами. На тот момент я неплохо мог понимать без субтитров, но стало явно лучше. Пока не нашёл плейлиста с нарезанными докладами, но вот тот, который я тогда смотрел за 2024 год. Сейчас вижу, что посмотрел 14 из 21 видео в этом плейлисте: 🔗 https://www.youtube.com/watch?v=NcucthcnGY0&list=PLMdXHJK-lGoBx3Nq2jHgrU7DGsJNi1nwi&index=18 Сейчас снова конец зимы, думаю снова начать ходить в зал, и как раз уже появится новый плейлист с Laracon 2025. 🚀