Пых
8.27K subscribers
262 photos
14 videos
6 files
569 links
Блог Валентина Удальцова о разработке на PHP.

Хобот @phpyhobot
https://youtube.com/@phpyh
https://vkvideo.ru/@phpyh
https://t.me/isPHPdying

Статистика: https://t.me/INOTAROBOT?start=st1219340804

Для связи используйте личные сообщения канала.
Download Telegram
Forwarded from PHP Fart Time (Алексей roxblnfk)
👍25🔥135💩3👎2🤝2
🎉 PHP 8.4!

https://www.php.net/releases/8.4/ru.php

Для меня это особенный релиз, потому что я в нём поучаствовал. Спасибо Максиму Махнюку из Ruvents, который заложил в мою голову идею для RFC аж 6 лет назад! Тогда он между делом задал риторический вопрос:

Почему в PHP нельзя писать, как в Java: new MyClass().method()?


Сейчас многие из вас горячо обсуждают, надо ли ставить скобки или нет. Друзья, пишите код так, как вы решили в вашей команде. Нет ничего лучше единообразия в стиле кодирования, подкреплённого джобой в CI. Именно поэтому мой пока ещё не одобренный Fixer позволяет менять код в обе стороны.

В PHP 8.4 добавили ещё много важных и интересных изменений. Приглашаю вас на традиционный стрим, посвящённый релизу, сегодня в 20:00 по Москве. Обсудим хуки свойств, ассиметричную видимость, новые функции, ленивые объекты и всё, что ещё вспомнится. Спасибо Сергею и Данилу с @CutCode, что приняли эстафету у Алисы.

https://youtu.be/UgNAvNmAizk
Please open Telegram to view this post
VIEW IN TELEGRAM
6🎉58🔥2812👍6💯2
🔫 Иду в гости к Кошачьей Бацыле!

https://youtu.be/9n985wI0z3c

Иван, автор канала, недавно предложил мне вместе постримить. Оказалось, что он пишет на PHP и частенько упоминает его в своих роликах про пресловутое IT. Очевидно, нам есть, о чём поговорить, поэтому я сразу согласился. Залетайте сегодня в 18:00 на уютный пятничный стрим, будем знакомиться!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥44👍18🤮94😱1
Forwarded from PHP Russia Channel
⚡️На момент проведения конференции выйдет долгожданный PHP 8.4 - важнейшее событие для разработчиков. Много новых фич и функций, разобраться в которых будет полезно всем, кому интересен PHP. Об этом расскажут в секции “Новые крутые либы”, представленной на PHP Russia 2024.

Одного выступления для этого мало, но Валентин Удальцов (Typhoon) в cвоем докладе “PHP 8.4: живее всех живых” расставит все основные акценты и расскажет, как поскорее внедрить PHP 8.4 в ваши проекты.

Говорят, что зима близко? Не только зима! Вот-вот выходит легендарный PHP 8.4, набор функционала которого затмевает даже те изменения, что были в PHP 7.4. А значит, самое время вооружиться знаниями о новой версии языка, дабы вся феерия новых возможностей не застала врасплох!

📌 До встречи на PHP Russia 2024, которая пройдет 2 и 3 декабря в рамках HighLoad++ 2024.

📎 Онлайн-билеты, расписание и программу можно найти на сайте
🔥26👍17👏5🗿1
PHP Russia 2024

Конфа в самом разгаре! Оба дня до обеда веду зал, а завтра вечером рассказываю про PHP 8.4. Наведу фокус на важные фичи, которым уделили недостаточно внимания.

Кто тут, приходите в зал Кейптаун, буду рад поболтать.
🔥97👍269
Вопросы для интервью с Иоаннисом Лукерисом

Вчера был крутой доклад от грека Иоанниса Лукериса про APCu. Прикол в том, что Иоаннис — единственный зарубежный спикер на весь Highload++. Очень приятно, что привезла его Катя Фирсова из программного комитета PHP Russia.

Я хочу воспользоваться ситуацией и через полчаса взять у него интервью. Напишите вопросы, на которые вы бы хотели получить ответы.
👍42🔥163🤡2👌1
Пых
Ловите превью.
Иоаннис Лукерис про PHP vs Go, Yii 3 и русских разработчиков

Иоаннис — архитектор в Altenar. На прошедшей PHP Russia он рассказывал, как и в каких случаях использовать APCu. На меня произвели большое впечатление его харизма, выдержка и рассудительность, и я сразу понял, что без интервью этого человека отпускать нельзя.

https://youtu.be/rycC75QpIPY

Спасибо Екатерине Фирсовой за гостя, а вам, пыхари, за крутые вопросы.
🔥39👍1612
Open Source Цех #3. Symfony PropertyInfo, Symfony Console, PHPUnit

В эту среду в 19:00 посмотрим, как Nicolas Grekas поправил совместимость Symfony PropertyInfo с PHP 8.4, и предложим пару маленьких изменений в Symfony Console и PHPUnit.

https://youtu.be/z19oWnc4WMU
🔥23👍143
Composer bump-after-update

В Composer 2.8 появилась полезная автоматизация для bump:

# раньше
composer update && composer bump
# теперь
composer update --bump-after-update

# раньше
composer update && composer bump --dev-only
# теперь
composer update --bump-after-update=dev


Или один раз прописываем в composer.json:

{
"config": {
"bump-after-update": true|"dev"|"no-dev"
}
}


В проекте рекомендую использовать true (бампим всё), в библиотеке — "dev" (бампим только dev зависимости), так как диапазоны основных зависимостей библиотеки определяются осознанно в соответствии со стратегией совместимости.

Кто не в курсе, команда composer bump появилась в Composer 2.4. Она поднимает нижние границы констрейнтов в composer.json до зафиксированных в composer.lock, например:

{
"require": {
- "typhoon/reflection": "^0.4"
+ "typhoon/reflection": "^0.4.4"
}
}
👍45🔥27🤔6
Пых
Open Source Цех #3. Symfony PropertyInfo, Symfony Console, PHPUnit В эту среду в 19:00 посмотрим, как Nicolas Grekas поправил совместимость Symfony PropertyInfo с PHP 8.4, и предложим пару маленьких изменений в Symfony Console и PHPUnit. https://youtu.be/z19oWnc4WMU
Вчерашний Open Source Цех пошёл на пользу PHP сообществу!

https://youtu.be/z19oWnc4WMU

▸ Sebastian Bergmann закрыл мой тикет про mixed ключи в assertArrayHasXXX() как фикс. Это означает, что изменения будут доступны в патч-апдейтах 10 и 11 версий PHPUnit.

▸ Robin Chalas из команды Symfony согласился, что команда bin/console debug:container <service> должна по умолчанию выводить информацию об аргументах сервиса. Обсуждаем дальше, будет ли изменение вывода нарушением BC или нет. Законтрибьютим с вами решение на следующем стриме Цеха.

▸ По PropertyAccess пока нет обратной связи. Но я уверен, что Nicolas Grekas уже работает над исправлением.
🔥44👍20
Оверимплоймент

NEWHR проводят исследование оверимплоймента — это когда подрабатываешь или устраиваешься на несколько полноценных работ, чтобы, например, пораньше закрыть ипотеку или просто потому что можешь и нагрузка позволяет.

Расскажу про свой "жопыт". Я обычно на 100% погружаюсь в основной проект — остаюсь вечером, чтобы в тишине додумать сложную задачу, или прихожу в выходные бороться с техдолгом. Если проект меня так не драйвит, я меняю работу. Поэтому мне трудно представить, что я пишу код где-то ещё. Тем не менее, два раза пришлось согласиться. В процессе выяснялось, что код кошмарный, а от меня требуется изобразить подход "хуяк-хуяк, и в продакшн". В итоге я зарёкся вписываться в подработки и стал искать другие способы зарабатывать больше.

Очевидно, что работать на двух фулл-таймах мне даже в голову не приходило. Я с круглыми глазами читаю статьи коллег, которые по приколу залетают на 5 работ джунами или на 2-3 сеньорами. С одной стороны, у них крутая самоорганизация, с другой — я не разделяю такой подход к программированию. Пишите в комментариях, пробовали ли вы так делать и чем это закончилось. Ну и заодно давайте поможем NEWHR с их исследованием. В начале года они по результатам опроса сделают лендинг.

https://survey.alchemer.com/s3/7949610/newhr-overemployment-2024
👍22😱15💯21
DateTimeImmutable::createFromTimestamp()

В PHP 8.4 Marc Bennewitz добавил метод:


DateTimeImmutable::createFromTimestamp(int|float $timestamp): static


Для DateTime, конечно, тоже, но я не хочу лишний раз упоминать эту мутабельную дрянь.

Используя float, можно создать объект времени с точностью до микросекунд:


$microtime = microtime(as_float: true);

$time = DateTimeImmutable::createFromTimestamp($microtime);

assert(sprintf('%.6f', $microtime) === $time->format('U.u'));


А теперь приятная новость: всё то же самое можно элементарно делать на PHP <8.4! С момента появления DateTimeImmutable в PHP 5.5 его конструктор поддерживает формулу @<timestamp>, а с PHP 7.1 — @<timestamp>[.<µs>] (демо всех вариантов на всех версиях PHP):


$microtime = microtime(as_float: true);
$microtimeAsString = sprintf('%.6f', $microtime); // "1734088458.588154"

$dateTime = new DateTimeImmutable('@' . $microtimeAsString);

assert($microtimeAsString === $dateTime->format('U.u'));


Если часто этим пользуетесь, можете просто добавить себе в проект функцию а-ля PHP 8.4:


function createDateTimeFromTimestamp(int|float $timestamp): DateTimeImmutable
{
return new DateTimeImmutable(sprintf('@%.6f', $timestamp));
}
👍49🔥139
PHP-линч #27. Yii3 Data c Сергеем Предводителевым

Завтра в 19:30 пройдёт первый линч с участием автора! Сергей Предводителев, разработчик фреймворка Yii3 и герой нескольких PHP-линчей, познакомит меня с новым пакетом Yii Data. По традиции я не заглядывал в код, чтобы поделиться с вами первым впечатлением.

Присоединяйтесь, продолжим изучать Yii3!

https://youtu.be/tVzcnenOAoo
🔥42👍134
Пых
PHP-линч #27. Yii3 Data c Сергеем Предводителевым Завтра в 19:30 пройдёт первый линч с участием автора! Сергей Предводителев, разработчик фреймворка Yii3 и герой нескольких PHP-линчей, познакомит меня с новым пакетом Yii Data. По традиции я не заглядывал…
Друзья, нужна обратная связь. Как вам PHP-линч с автором? Продолжать так делать или чередовать с традиционным форматом?

И вообще расскажите, какой контент от меня хотите. Может быть, есть конкретные темы, которые я мог бы для вас раскрыть. Сейчас вот пришла в голову идея позвать джуна на Open Source Цех, чтобы он, пошарив экран, с моей помощью законтрибьютил что-то полезное. Вам был бы интересен такой стрим?

Спасибо за первые три доната и попытку сделать четвёртый (там что-то с оплатой не задалось)! Пусть на увлажнитель пока не набрали, всё равно очень приятно. 💙

И да, простите за 720p, больше такого не будет.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥224
Как стать программистом

Мне часто в последнее время задают этот вопрос. Вот мой алгоритм:

1. Задай простой вопрос: "Зачем мне это?"
Это основополагающий пункт. Приветствуются ответы вида "очень интересно", "хочу автоматизировать", "хочу написать игру", "хочу сделать сайт". Не советую тебе программировать, если ты подумал про деньги. В любом ремесле нужно искреннее желание, чтобы преодолеть первые несколько тысяч часов. Да и на работу будет труднее устроиться: джуну с горящими глазами я давал шанс, даже когда искал мидла, а пустобрёха-золотоискателя разворачивал даже если он отвечал на все вопросы.

2. Начинай кодить
Прямо после чтения этого поста. Абсолютно не важно, Windows у тебя или MacOS, два монитора или ни одного. Даже если ты читаешь этот пост в 3:07 с телефона, переходи на страницу курса "Введение в программирование" и приступай. Тебе не потребуются ни деньги, ни редактор. Нужно просто нажать кнопку "Начать". Это не реклама, Хекслет — одна из немногих школ, где есть честные бесплатные курсы для начинающих, которые можно пройти прямо в браузере. Идеально для тебя.

3. Продолжай кодить
Если ты не закончил курс из второго пункта, значит, тебе это не надо. Не программировать нормально. Так же нормально, как не управлять самолётом или не играть на трамбоне. Я бы даже сказал, что не программировать нормальнее, чем программировать (спроси мою жену). Но если ты прошёл вводный курс на одном дыхании, можешь взять ещё один, ориентационный, например, "Основы PHP", раз уж ты оказался на канале Пых. Подчёркиваю — тебе для этого не надо бросать учёбу или работу. У тебя и так куча времени, чтобы кодить: проезд, перемены, обеды, вечера, ночи, выходные. И самое главное! Тебе не нужно тратить ни копейки до самого трудоустройства. Я твёрдо уверен, что лучший старт в программировании — самостоятельный.

4. Продолжай кодить
Скорее всего, к этому моменту ты уже придумаешь идею для пет-проекта. Если нет, попробуй автоматизировать любой бытовой процесс, заменив парой скриптов приложение на телефоне. Это может быть список дел, вишлист, учёт финансов, календарь дней рождения, личная страничка в интернете. На этом этапе необходимо взять любую задачу и начать её решать самому, чтобы встретить первые сложности. Все ответы ты найдёшь в интернете: гугли, смотри видео, спрашивай в профильных чатах для джунов и, самое главное, — бесконечно пробуй и переделывай, пока не получится. Делай перерывы — часто ответ приходит в туалете (я серьёзно) или на прогулке.

5. Продолжай кодить
В течение месяца у тебя сформируется свой особенный мирок, в котором ты, к несчастью для близких, будешь пропадать всё чаще и чаще. В нём зародится желание написать тот самый идеальный код. Каждый день ты будешь постигать всё новые способы выразить намерение в программе и многократно переписывать одну и ту же функцию. Ты на верном пути: думай, гугли, рефактори, отлаживай, читай чужой код, проси обратную связь и так по кругу. Этот цикл со временем замедлится, но не прекратится никогда.

6. Не переставая кодить, выходи на рынок труда
Если ты учишься и необходимости в работе нет, лучше доучись или перейди на IT факультет. Я сам по образованию не программист, но рад, что не бросил универ — там меня научили думать. Если ты работаешь, не увольняйся, пока не возьмут, так как поиски могут занять месяцы. Не ври на собеседованиях: претендуй на джуна и реалистичную зарплату, но не соглашайся на что попало. Лучше выбрать проект по душе с достойной командой и низкой стартовой зарплатой, чем условную порностудию с высокомерными людьми и большим окладом. Неудачное собеседование — источник новых знаний, проработав задачи, иди на следующее.

7. Устроился — молодец, продолжай кодить!
Потому что это только начало. Тебе предстоит снова всё переосмыслить, а ещё научиться командной работе: ревью, тесты, легаси, оценка сроков и ответственность. Первый год не бойся переработок и инициативы. Чем больше ты дашь команде, тем больше она вернёт тебе в ответ, не наоборот. Они в тебя поверили — докажи, что не зря.

Удачи! Но будет абсолютно нормально, если ты станешь кем-то ещё.
👍96🔥4020💩8🤡5🤣4💯3💅1
Пых
PHP-линч #27. Yii3 Data c Сергеем Предводителевым Завтра в 19:30 пройдёт первый линч с участием автора! Сергей Предводителев, разработчик фреймворка Yii3 и герой нескольких PHP-линчей, познакомит меня с новым пакетом Yii Data. По традиции я не заглядывал…
PHP-линч #27.1. Как бы я спроектировал Yii3 Data

Не могу перестать думать про чёртов пакет!

Я не верю в универсальные админки и по-прежнему считаю, что Yii3 Data не особо нужен, но именно поэтому хочу воспользоваться возможностью и попроектировать абстракции такого рода.

Давайте постримимся в эти выходные! Когда вам было бы удобно? А именно в субботу в 18:00.
👍347🔥6😁5🎄1
Пых
PHP-линч #27.1. Как бы я спроектировал Yii3 Data Не могу перестать думать про чёртов пакет! Я не верю в универсальные админки и по-прежнему считаю, что Yii3 Data не особо нужен, но именно поэтому хочу воспользоваться возможностью и попроектировать абстракции…
PHP-линч #27.1. Как бы я спроектировал Yii3 Data

Ну что ж, встречаемся сегодня вечером в 18:00 по МСК. Кое-что заготовил, но рассуждать и кодить буду с нуля вместе с вами.

Через streamvi.io настроил рестрим и мультичат на три площадки: YouTube, Telegram, VK Видео. Трансляция в 1080p 1440p!
🔥44👍93👏1
Пых pinned «Как стать программистом Мне часто в последнее время задают этот вопрос. Вот мой алгоритм: 1. Задай простой вопрос: "Зачем мне это?" Это основополагающий пункт. Приветствуются ответы вида "очень интересно", "хочу автоматизировать", "хочу написать игру", "хочу…»