Обложка канала

PHP.today

3682 @phptoday

Свежие новости из мира PHP. Обновленные стандарты. Лучшие практики с примерами кода. Как писать чистый, читаемый и понятный код.

  • PHP.today

    Что ждет PHP в 2021?
    Узнаем 27 февраля на большом стриме.

    🎤 2 доклада: о WebRTC от Ильи Левина из Skyeng, о gRPC — от Антона Жукова из ManyChat.

    🏄 Острые дискуссии, мнения о 2020, планы на 2021. В эфир придут:

    - Никита Попов (PHP core team)
    - Дмитрий Елисеев (ElisDN)
    - Валентин Удальцов (Пых)
    - Роман Пронский (PHP-дайджест)
    - Александр Макаров (Yii)
    - Сергей Жук (Между Скобок)
    - Константин Буркалев (SDCast)
    - Петр Мязин (Пятиминутка PHP)
    - Антон Околелов (Цинковый прод)
    - Николай Пучко (PHPToday)

    🎁 Покажем итоги опроса про лучшее из мира PHP за 2020, разыграем фирменного слоника и целый пул других подарков.

    Трансляции в 11:00 (Москва/Минск), 10:00 — Киев
  • PHP.today

    Недавно появилась парочка интересных переводов о зловредах в php.

    Первый настоятельно рекомендую к прочтению, как минимум для общего развития. Сама по себе идея проста до гениальности - мы берем пару невидимых символов (например - пробел и табуляция), и считаем, что они "1" и "0". Кодируем наш скрипт в бинарный формат, заменяем единицы и нули нашими невидимыми символами, и - вуаля!

    #backdoor #уязвимость

    Подробности тут https://telegra.ph/Nevidimye-simvoly-skryvayushchie-veb-shell-v-zlovrednom-kode-na-PHP-02-18

    Второй - не особенно-то и актуальный для PHP - взлом через менеджер зависимостей (composer для PHP) путем подмены приватного пакета на публичный.
    https://telegra.ph/Zashchita-ot-uyazvimosti-Dependency-Confusion-v-PHP-s-pomoshchyu-Composer-02-18
  • PHP.today

    Чем себя занять в моменты, когда на работе нужно написать много рутинного кода, ну или задачи по-просту не интересные? Кто-то ходит по собесам просто ради интереса, кто-то пишет пет проекты, а кто-то фрилансит. В перерывах между пет-проектами лично я люблю решать небольшие конЕчные (не конЧЕнные=)) задачки.

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

    Вот совсем коротенький список, буду рад, если в комментариях дополните:
    1. www.hackerrank.com Платформа запущена в 2012 году. Помимо просто решения задач предлагает еще получить сертификаты в той или иной области, а также есть площадка для поиска работы. По сути, хакерранк это топовая платформа, которая также используется крупными компаниями для найма на работу через решение задач. К примеру - ежегодный Badoo конкурс о найме на работу в Лондон - размещался именно там.

    2. www.codewars.com - очень похожая на первую, однако тут упор сделан на писькомерство. При регистрации вам выдают, кажется, 8 кю (8 уровень, как в карате-до), и по решению задач присваивают новый кю/дан. После решения задачи вы попадаете на экран, на котором есть полный список всех решений всех пользователей с лайками по категориям "бест практис" и "самое умное решение". Самое топовое решение наверху. Можно его форкнуть и улучшить. Ну и можно контрибьютить - добавлять свои задания
  • Реклама

  • PHP.today

    Насыплю сверху про enum:
    Кто еще не разобрался, или не понимает зачем, вот отличная статья на эту тему

    https://habr.com/ru/post/541246/


    Ну и из релизов: в четверг вышли патч версии php:
    В 7.3 - один багофикс с soap,
    В 7.4 - довольно внушительная пачка фиксов, там и кор и mysqli.

    Довольно угарный фикс - php падал, если исходник > 4 гигов. Мне просто любопытно посмотреть код того, кто обнаружил эту багу)))
    Вот сама бага https://bugs.php.net/bug.php?id=80523
  • PHP.today

  • PHP.today

    Откопал пару задачек на алгоритмы в интернетах, предлагаю вам их решить, ответы пишите в комменты. Ну и ставьте плюс в комменты, если хотите больше задачек.
    ———————
    Задача 1.
    Во вре­мя пере­ез­да в квар­ти­ре появи­лось 5 пустых коро­бок, и кот стал в них спать. На каж­дой короб­ке напи­са­на своя циф­ра, от 1 до 5, а сами короб­ки сто­ят в ряд по порядку.

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

    Есть ли такая стра­те­гия, что­бы гаран­ти­ро­ван­но най­ти кота в какое-нибудь утро, если мы не зна­ем, в какую короб­ку он пошёл спать в первую ночь?
    ———————
    Задача 2.
    Пред­ставь­те, что у вас есть элек­три­че­ская духов­ка с одной меха­ни­че­ской кноп­кой. Кноп­ка по оче­ре­ди вклю­ча­ет режи­мы рабо­ты от сла­бых к силь­ным, затем выклю­ча­ет духов­ку, а при сле­ду­ю­щем нажа­тии сно­ва вклю­ча­ет самый сла­бый режим. Так мож­но щёл­кать по кру­гу сколь­ко угод­но — в зави­си­мо­сти от коли­че­ства щелч­ков духов­ка будет про­хо­дить все ста­дии работы.

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

    Про­бле­ма в том, что когда элек­три­че­ство вклю­чит­ся, духов­ка зара­бо­та­ет на том режи­ме, на кото­ром сто­ит кноп­ка. Вас дома уже не будет.

    Сей­час вам нуж­но нажать меха­ни­че­скую кноп­ку столь­ко раз, что­бы при вклю­че­нии све­та духов­ка ока­за­лась в выклю­чен­ном режи­ме. Вы не помни­те, сколь­ко имен­но у духов­ки режи­мов рабо­ты, но их точ­но не боль­ше четы­рёх (вклю­чая выключенный).

    Вопрос: сколь­ко раз нуж­но сей­час нажать на кноп­ку, что­бы духов­ка точ­но ока­за­лась в выклю­чен­ном режиме?

    #задачи #логика #арифметика
  • PHP.today

    ​​Куда и как расти айтишнику с опытом? Сделайте выбор на бесплатных демо-уроках онлайн-курсов «Flutter Mobile Developer», «Golang Developer. Professional» и «DevOps практики и инструменты»:

    📌«Пишем Flutter-приложение с использованием Redux»: https://otus.pw/psaJV/
    — Узнаете, как использовать подход к управлению состоянием во Flutter-приложениях. Выясните главные особенности Redux. Напишете небольшое приложение и обсудите, как хорошо Redux масштабируется в перспективе.
    📌«Go-каналы снаружи и внутри»: https://otus.pw/IkRD7/
    — Получите простую абстракцию в картинках для понимания принципов работы каналов. Узнаете, как каналы устроены на уровне языка.

    📌«Prometheus: быстрый старт»: https://otus.pw/R9TS/
    — Рассмотрите архитектуру Prometheus. Разберётесь, как система работает с метриками. Поймёте, как формировать алерты и события в системе.

    🔥Регистрируйтесь сейчас — напомним в день вебинара!
  • PHP.today

    А как вы относитесь к enum в текущем виде?
  • PHP.today

    ​​Только-только я расстроился, т.к. уже конец января, а от badoo ни слова о ежегодном конкурсе (для тех, кто не в курсе: они каждый год выкладывают пачку задач на hackerrank, и если ты решил хорошо - зовут на собес, а там и в Лондон, на работу), так сразу нашел, чем потешить свое ЧСВ.

    Обнаружил, что в linkedin появились значки вида “знаток PHP”, и, чтобы получить их, нужно пройти небольшой тест. Например, тест по PHP состоял из 15 вопросов, на каждый из которых давалось 1,5 минуты. Если зафейлил - есть возможность пройти тест еще раз(не знаю, с такими же вопросами или другими, но лично я бы сделал с другими, иначе какой смысл).

    Сами вопросы были простецкие, ответы выбираются из готовых четырех-пяти. Единственный вопрос, который чуть не обнулил мой таймер в 1.5 минуты - про форматирование времени: ну не помню я наизусть всех модификаторов=) в итоге ответил интуитивно, и вроде как правильно.

    В общем, всем рекомендую! И делитесь своими результатами в комментариях, интересно, кто как прошел.
  • PHP.today

    ​​🐍Почему начинающему Python-разработчику сложно найти работу? Работодатели выбирают джуниоров, которые не просто знают синтаксис, а умеют решать задачи в команде.

    📌Научитесь за 5 месяцев с поддержкой ментора применять Python в разных областях: разработка, web, тестирование и Data Science. Вас ждет:
    ● Самая хардкорная на рынке начальная программа
    ● Работа с API и DevOps-инструменты
    ● Свой готовый проект, который пополнит портфолио + домашки
    ● Живое общение с экспертами и созвоны с персональным ментором

    После обучения навыков будет достаточно, чтобы претендовать на позиции junior+ с зарплатой ~100 тыс. руб.

    Пройдите вступительное тестирование на курс: https://otus.pw/tGbL/
  • PHP.today

    Статья про транзакции для самых маленьких. Мне очень понравилось, как просто и красиво расписано.

    Если вдруг (маловероятно конечно, но вдруг) вы еще не разбирались с транзакциями - то эта статья - отличный старт.

    #транзакции

    https://telegra.ph/CHto-takoe-tranzakciya-01-25
  • PHP.today

    ​​Айтишник, забери айфон!

    Конкурс для айтишников. Простые правила и крутые призы.

    Что делать?
    Показать, без чего вы не проживёте 2021. Любимый кот, литр кофе или боксерская груша?

    Лучшие работы получат iPhone 12, Apple Watch 6 и AirPods 2, остальным 50 счастливчикам мы подарят стильные худи.

    Условия просты:
    1. Создайте свой «набор для выживания» в 2021 и соберите в нем до 5-ти необходимых предметов. Например, ноутбук, любимое блюдо или любую другую вещь. Для удобства можете скачать шаблон на сайте.
    2. Затем опубликуйте «набор» в VK, FB или Instagram с хэштегом #выживуттолькоайтишники
    3. Зайдите на сайт и отправьте нам ссылку на пост.

    Скорее переходите на сайт конкурса: https://rb.ru/vtb-it/
  • PHP.today

    🎄🐘 Подводим итоги PHP-года и разыгрываем слона

    Вместе с PHP-Дайджестом придумали опрос про 2020 год и PHP-сообщество. Приходи выбрать фреймворк года, персону года и самый огненный стрим.

    По итогам сделаем подборки статей, докладов, каналов по PHP. Все результаты опубликуем на phpcommunity.ru и в статье на Хабре.

    Опрос анонимный: оставляйте почту, только если хотите поучаствовать в розыгрыше фирменного пхп-слона.
  • PHP.today

    ​​Почему ценятся PHP-разработчики со знаниями Symfony?

    Узнайте 13 января о ключевых навыках программирования на одном из самых сложных, надежных и высокопроизводительных PHP-фреймворках на встрече с Александром Пряхиным, техническим директором в CityAds Media. На вебинаре Александр представит программу онлайн-курса «Symfony Framework» и ответит на ваши вопросы.

    👉🏻Рекомендуем заранее пройти вступительный тест, чтобы оценить свой уровень подготовки и сложность курса. Регистрируйтесь на мероприятие и запасайтесь вопросами для эксперта: https://otus.pw/vXln/
  • PHP.today

    Фронт для прожженного бэка

    Всем привет. Данный пост подойдет новичкам, или прожженным бэкендерам, которым проще написать на го или джаве, чем на js/css. Когда вообще появилось это разделение на Front и Back? Только только у нас в команде был верстальщик, который особо и программистом то не выглядел, и вот вдруг React, Angular, TypeScript, а кто не успел - теперь Backend разработчик.

    Так что делать, если ты бэкэнд до мозга костей, а пет проект, под капотом выглядящий великолепно(нет), с фронта похож на сайты из 2000х?

    1. Twitter bootstrap. Содержит множество полезных симпатичных элементов из коробки. И хоть фронты сейчас начнут кидаться ссаными тапками (и тряпками), потому что бутстрап - это только скелет, лэйаут, грид, etc на котором нужно строить свое приложение, но для нас это просто палочка-выручалочка, если нужно придать человеческий вид своему детищу.

    2. Vue JS Если надоело писать говнокод на jQuery для того, чтобы например показать форму редактирования прямо на строке в гриде, и после того как все заработало от одного вида этого куска кхм хочется принять валокордин - есть великолепная припарка - Vue JS.
    Он выглядит так, как будто он написан бэкэндерами для бэкэндеров, чтобы последние хоть как-то могли похвастаться тем, что знают js фреймворк, и гордо называть себя full stackами. В нем нет этого бардака jquery, и нет тонн синтаксического сахара и абстракций type script. Все бесподобно просто и понятно, как php, и приправлено отличной подробной докой.

    3. А для тех, кому нужно и то и то - вот bootstrap-vue.org
    Сам не пробовал, но раз поддерживаются последние версии и того и другого - значит проект живой и свежий.

    Эхх, за что я любил Yii 1 в лохматом 2012 - так это за коробочный неплохой внешний вид, и включение аякса на гриде одним параметром. Теперь такого не делают))

    Вместо послесловия

    Ну и раз зашел разговор про сервера: я давно забил на хостинги. По цене они не намного выигрывают у vds/vps а ограничений масса. Да и я считаю что каждый уважающий себя php разработчик должен уметь развернуть php+nginx+db на чистой машине, ну и прекрасно знать что такое ssh, sudo, и почему нельзя запускать nginx под рутом.

    Так вот, я уже лет 7 пользуюсь digitalOcean, 5$ в месяц и все мои пет-проекты прекрасно живут на выделенной виртуалке. И по этому случаю держите реферальную ссылку https://m.do.co/c/a2a1a8f9796f , которая не только мне согреет лапу, но и даст вам 100$ на 60 дней потестить и решить, нужно ли оно вам вообще. Они зажмыдились, раньше давали 25$ навсегда (а это, на минуточку, 5 месяцев халявного пятибаксового сервера) а сейчас 100$ но всего на 2 месяца, но это ж все-таки лучше, чем ничего))

    Добавил реакции, хочу получить фидбэк, полезно ли, или больше такое не писать.
  • Реклама

  • PHP.today

    🔥 Трейты! Выстрел себе в ногу или рабочее решение? — ютуб-холивар в эту среду.

    На примерах разберем, хороши ли трейты как способ снизить дублирование кода, быстро внедрить функциональность и не только. Читай подробнее о стриме и приходи в эфир 23 декабря в 19:00 (Мск/Минск, 18:00 — Киев).

    Против трейтов: Валентин Удальцов (автор канала Пых).

    В защиту:
    — Сергей Жук (Skyeng)
    — Кирилл Несмеянов (SpiralScout)
    — Иван Лещёв (BotHelp.iо)
    — Александр Дубовской (RaDon)

    Ведущий: Роман Пронский (PHP Digest).
  • PHP.today

    Для тех, кто еще ленится двумя командами установить и запустить какой-нибудь статический анализатор кода, ребята записали хороший аудиоподкаст. Также есть частичная текстовая расшифровка.

    #phpstan #psalm #phan #статическиеанализаторы

    Найти можно тут:
    https://telegra.ph/Sejchas-ya-budu-ubezhdat-vas-ispolzovat-staticheskij-analiz-v-PHP-12-01
  • PHP.today

    В начале месяца под одним из постов задали вопрос:
    Композиция === Dependency Injection?

    Я тогда еще написал статейку, но все руки не доходили выложить ее сюда. Я постарался подробно объяснить, в чем разница и как использовать: Dependency Injection (Внедрение зависимостей), Dependency Inversion (Инверсия зависимостей) и Композиция.

    #solid #di #composition #архитектура

    https://telegra.ph/Uluchshaem-arhitekturu-Inversiya-i-vnedrenie-zavisimostej-nasledovanie-i-kompoziciya-12-30