Отличная инструкция по работе с Git!
- Что делать, если Вы случайно удалили ветку?
- Как отменить git merge, если что-то пошло не так?
- Как удалить произвольный коммит?
Ответы на эти и многие другие вопросы Вы найдете по ссылке (есть русская версия)
https://github.com/k88hudson/git-flight-rules/blob/master/README_ru.md
- Что делать, если Вы случайно удалили ветку?
- Как отменить git merge, если что-то пошло не так?
- Как удалить произвольный коммит?
Ответы на эти и многие другие вопросы Вы найдете по ссылке (есть русская версия)
https://github.com/k88hudson/git-flight-rules/blob/master/README_ru.md
GitHub
git-flight-rules/README_ru.md at master · k88hudson/git-flight-rules
Flight rules for git. Contribute to k88hudson/git-flight-rules development by creating an account on GitHub.
Интересная статья с советами бывалых разработчиков (10 и более лет опыта работы с PHP)
https://dou.ua/lenta/articles/senior-php-tips/
Некоторые моменты достаточно спорные, но в целом, очень хороший материал. Рекомендую для прочтения.
P.S. До 12 декабря планирую написать в блог аналогичную статью. Хотел бы узнать какие темы вас интересуют, чтоб сделать статью еще более полезной. Пишите в личные сообщения или на почту zinchenko.us@gmail.com
https://dou.ua/lenta/articles/senior-php-tips/
Некоторые моменты достаточно спорные, но в целом, очень хороший материал. Рекомендую для прочтения.
P.S. До 12 декабря планирую написать в блог аналогичную статью. Хотел бы узнать какие темы вас интересуют, чтоб сделать статью еще более полезной. Пишите в личные сообщения или на почту zinchenko.us@gmail.com
DOU
Советы сеньоров: как прокачать знания junior PHP
В рубрике «Советы сеньоров» опытные специалисты делятся практическими советами с джуниорами — общие лайфхаки по обучению, какие книги и ресурсы читать, какие навыки осваивать и многое другое. В этом выпуске говорим о PHP разработчиках.
PHP Center via @like
Вышел PHP 7.2.0!
Совсем недавно вышел PHP 7.2.0. О кардинальных изменениях речь не идет, но все же, давайте посмотрим, что мы получили.
Появляется возможность использовать object в качестве типа аргумента и возвращаемого значения:
function myFunction(object $obj) : object {}
Множество функций объявлены устаревшими. Из наиболее часто используемых (в основном в старых проектах): create_function(), __autoload().
Эмуляции подготовленных выражений (речь о PDO). Если раньше была возможность смотреть только текст запроса с placeholders, например:
> SELECT * FROM fruit WHERE calories < ?
то теперь в нашем арсенале есть метод debugDumpParams(), который дает возможность смотреть конечный запрос вида:
> SELECT * FROM fruit WHERE calories < 150
Также добавлены новые возможности в плане безопасности. Конечно, это далеко не все изменения, но наиболее заметные на мой взгляд.
Совсем недавно вышел PHP 7.2.0. О кардинальных изменениях речь не идет, но все же, давайте посмотрим, что мы получили.
Появляется возможность использовать object в качестве типа аргумента и возвращаемого значения:
function myFunction(object $obj) : object {}
Множество функций объявлены устаревшими. Из наиболее часто используемых (в основном в старых проектах): create_function(), __autoload().
Эмуляции подготовленных выражений (речь о PDO). Если раньше была возможность смотреть только текст запроса с placeholders, например:
> SELECT * FROM fruit WHERE calories < ?
то теперь в нашем арсенале есть метод debugDumpParams(), который дает возможность смотреть конечный запрос вида:
> SELECT * FROM fruit WHERE calories < 150
Также добавлены новые возможности в плане безопасности. Конечно, это далеко не все изменения, но наиболее заметные на мой взгляд.
PHP Center via @like
Patterns
О шаблонах проектирования не говорит только ленивый. Тем не менее, найти приличные примеры их реализации на PHP может оказаться не так уж и просто. К нашей радости, нашелся человек - Dominik Liebler, который не поленился и собрал в одном репозитории простые примеры реализации наиболее популярных паттернов. В свое время я очень обрадовался такой находке и спешу поделиться с вами:
https://github.com/domnikl/DesignPatternsPHP (13000+ stars!)
Окей, примеры есть. А где почитать о принципах работы?
Долгое время я искал хорошую информацию по этой теме в контексте PHP и так и не нашел такого источника, который мог бы смело рекомендовать. Большинство книг написаны сложным языком и на удивление скучны. К счастью, нашелся такой труд:
Паттерны проектирования
Элизабет Фримен
https://www.ozon.ru/context/detail/id/20216992/
В этой книге на замечательных примерах раскрывается мотивация использования шаблонов и варианты их реализации. Примеры на Java(!), но в 90% случаев они будут вам понятны. Впрочем, их можно и просто пропустить. Издание не новое, но это не имеет значения.
Надеюсь, мои находки будут вам полезны!
О шаблонах проектирования не говорит только ленивый. Тем не менее, найти приличные примеры их реализации на PHP может оказаться не так уж и просто. К нашей радости, нашелся человек - Dominik Liebler, который не поленился и собрал в одном репозитории простые примеры реализации наиболее популярных паттернов. В свое время я очень обрадовался такой находке и спешу поделиться с вами:
https://github.com/domnikl/DesignPatternsPHP (13000+ stars!)
Окей, примеры есть. А где почитать о принципах работы?
Долгое время я искал хорошую информацию по этой теме в контексте PHP и так и не нашел такого источника, который мог бы смело рекомендовать. Большинство книг написаны сложным языком и на удивление скучны. К счастью, нашелся такой труд:
Паттерны проектирования
Элизабет Фримен
https://www.ozon.ru/context/detail/id/20216992/
В этой книге на замечательных примерах раскрывается мотивация использования шаблонов и варианты их реализации. Примеры на Java(!), но в 90% случаев они будут вам понятны. Впрочем, их можно и просто пропустить. Издание не новое, но это не имеет значения.
Надеюсь, мои находки будут вам полезны!
GitHub
GitHub - DesignPatternsPHP/DesignPatternsPHP: Sample code for several design patterns in PHP 8.x
Sample code for several design patterns in PHP 8.x - DesignPatternsPHP/DesignPatternsPHP
PHP Center via @like
Продолжаем тему контроля версий.
Не так давно в канале было опубликовано классное пособие по git в духе “если что-то пошло не так”. Буквально сегодня я наткнулся на классный перевод статьи по git:
https://habrahabr.ru/company/intel/blog/344962/
В ней описаны основные концепции от простого к сложному. Если какие-то части статьи даются с трудом, ничего страшного, пропускайте. Всегда можно вернуться и повторить.
Львиная доля публикации посвящена ветвлениям. Как показывает мой личный опыт, в эту тему особенно сложно погрузиться. Потому рекомендую прекрасный интерактивный тренажер:
https://learngitbranching.js.org/
(В правом нижнем углу можно сменить язык на русский)
Удачи! :)
Не так давно в канале было опубликовано классное пособие по git в духе “если что-то пошло не так”. Буквально сегодня я наткнулся на классный перевод статьи по git:
https://habrahabr.ru/company/intel/blog/344962/
В ней описаны основные концепции от простого к сложному. Если какие-то части статьи даются с трудом, ничего страшного, пропускайте. Всегда можно вернуться и повторить.
Львиная доля публикации посвящена ветвлениям. Как показывает мой личный опыт, в эту тему особенно сложно погрузиться. Потому рекомендую прекрасный интерактивный тренажер:
https://learngitbranching.js.org/
(В правом нижнем углу можно сменить язык на русский)
Удачи! :)
Хабр
Git снизу вверх
У этого перевода не совсем обычная история. Системы контроля версий далеки от моих профессиональных интересов. Для рабочих проектов они мне требовались нечасто,...
Вчера на вебинаре мы 2 часа общались на самые разные темы о веб-разработке.
Надеюсь, Вам будет интересно посмотреть запись:
https://www.youtube.com/watch?v=yzmrunFgbMU
Также прикрепляю ссылки, которые упоминаются в вебинаре:
php-start.com - бесплатный базовый курс по PHP (15 часов).
php-up.com - продвинутый курс по PHP (продолжение PHP Start).
Надеюсь, Вам будет интересно посмотреть запись:
https://www.youtube.com/watch?v=yzmrunFgbMU
Также прикрепляю ссылки, которые упоминаются в вебинаре:
php-start.com - бесплатный базовый курс по PHP (15 часов).
php-up.com - продвинутый курс по PHP (продолжение PHP Start).
YouTube
Как прокачать знания PHP разработчику. Запись вебинара
php-start.com - бесплатный базовый курс по PHP (15 часов).
php-up.com - продвинутый курс по PHP (продолжение PHP Start).
t.me/php_center - telegram канал о веб-разработке и PHP
Темы вебинара:
— 00:00:54 - Вступление. О себе.
— 00:04:45 - Современные…
php-up.com - продвинутый курс по PHP (продолжение PHP Start).
t.me/php_center - telegram канал о веб-разработке и PHP
Темы вебинара:
— 00:00:54 - Вступление. О себе.
— 00:04:45 - Современные…
PHP Center via @like
Запись моего доклада "Под капотом" PHP.
Я постарался кратко объяснить принципы работы внутренностей PHP, а также обратил внимание на то, как находить проблемные места в своем коде (пожиратели времени и памяти).
https://www.youtube.com/watch?v=AbwY9i2lbGM
Я постарался кратко объяснить принципы работы внутренностей PHP, а также обратил внимание на то, как находить проблемные места в своем коде (пожиратели времени и памяти).
https://www.youtube.com/watch?v=AbwY9i2lbGM
YouTube
"Под капотом" PHP - Запись доклада Public IT
https://t.me/php_center - канал telegram о PHP
https://zinchenko.us/wp-content/uploads/2017/12/slides-php.html#/ - слайды доклада
1. Устройство PHP.
2. Инфраструктура.
3. Как находить проблемные места?
https://zinchenko.us/wp-content/uploads/2017/12/slides-php.html#/ - слайды доклада
1. Устройство PHP.
2. Инфраструктура.
3. Как находить проблемные места?
PHP Center via @like
Курс продвинутого программирования PHP UP
Привет друзья! Наверняка многие из вас знакомы с PHP Start - курсом по разработке на PHP для начинающих. Что ж, пришло время двигаться дальше.
В эти первые дни 2018 года я подготовил для вас отличную новость: теоретическая часть курса продвинутого программирования PHP UP теперь доступна на моем YouTube канале:
https://www.youtube.com/watch?v=B1Q44OKh5YA&list=PLSdH7dYnlGYht0eGi9-14X87hrSl9plCc
Привет друзья! Наверняка многие из вас знакомы с PHP Start - курсом по разработке на PHP для начинающих. Что ж, пришло время двигаться дальше.
В эти первые дни 2018 года я подготовил для вас отличную новость: теоретическая часть курса продвинутого программирования PHP UP теперь доступна на моем YouTube канале:
https://www.youtube.com/watch?v=B1Q44OKh5YA&list=PLSdH7dYnlGYht0eGi9-14X87hrSl9plCc
YouTube
PHP UP | Урок №1 | Часть #1 | Настройка рабочего окружения
Вся необходимая информация, ссылки и задания к уроку находятся на странице:
https://php-up.com/lesson/1
https://php-up.com/lesson/1
PHP Center via @like
Давненько я ничего сюда не писал, пора бы исправить ситуацию.
Наверняка многие из вас слышали об алгоритмах в программировании.
Как и другие веб-разработчики я упорно игнорировал эту тему долгие годы :)
Когда же интерес все-таки брал верх, я открывал одну из книг, которые часто советуют эксперты и каждый раз находил там что-то подобное (жаль, не могу добавить еще несколько формул):
Линейное уравнение задаёт плоскость в трёхмерном пространстве, а неравенство – полупространство по одну сторону от плоскости. Множество допустимых решений – пересечение семи полупространств – является многогранником.
ЧТО???
Изучение алгоритмов (как и все новое) стоит начинать постепенно. Коллега посоветовал замечательную книгу, при помощи которой можно перестать ненавидеть и начать
понимать алгоритмы. Она называется "Грокаем алгоритмы".
Подробное описание уже написано на хабре:
https://habrahabr.ru/company/piter/blog/323310/
От себя добавлю, что эта книга не претендует на глубокое пособие, но содержит множество полезной информации и замечательные примеры. Удачи!
Наверняка многие из вас слышали об алгоритмах в программировании.
Как и другие веб-разработчики я упорно игнорировал эту тему долгие годы :)
Когда же интерес все-таки брал верх, я открывал одну из книг, которые часто советуют эксперты и каждый раз находил там что-то подобное (жаль, не могу добавить еще несколько формул):
Линейное уравнение задаёт плоскость в трёхмерном пространстве, а неравенство – полупространство по одну сторону от плоскости. Множество допустимых решений – пересечение семи полупространств – является многогранником.
ЧТО???
Изучение алгоритмов (как и все новое) стоит начинать постепенно. Коллега посоветовал замечательную книгу, при помощи которой можно перестать ненавидеть и начать
понимать алгоритмы. Она называется "Грокаем алгоритмы".
Подробное описание уже написано на хабре:
https://habrahabr.ru/company/piter/blog/323310/
От себя добавлю, что эта книга не претендует на глубокое пособие, но содержит множество полезной информации и замечательные примеры. Удачи!
Habr
Книга «Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих»
Алгоритмы — это всего лишь пошаговые алгоритмы решения задач, и большинство таких задач уже были кем-то решены, протестированы и проверены. Можно, конечно, погрузиться в глубокую философию...
PHP Center via @like
Безопасность? И так сойдет
Несколько дней назад на habrahabr появился интересный пост о нелепой ошибке на сайте государственной службы в сфере образования:
https://habrahabr.ru/post/347760
~14 млн документов об образовании и записи о бывших студентах, 1323 пользователя системы, 3391 учебное заведение. Это данные, которые могли попасть в руки недобросовестных лиц.
Причина банальна: отсутствие фильтрации данных, пришедших из формы. Как результат - возможность SQL инъекции.
Как такой код попал в продакшн? Подозреваю, что инженер, работавший над задачей, был недостаточно подкован в теме безопасности...
Всем, кто еще не успел посмотреть урок курса PHP UP о безопасности, рекомендую ознакомиться:
https://php-up.com/lesson/20
Несколько дней назад на habrahabr появился интересный пост о нелепой ошибке на сайте государственной службы в сфере образования:
https://habrahabr.ru/post/347760
~14 млн документов об образовании и записи о бывших студентах, 1323 пользователя системы, 3391 учебное заведение. Это данные, которые могли попасть в руки недобросовестных лиц.
Причина банальна: отсутствие фильтрации данных, пришедших из формы. Как результат - возможность SQL инъекции.
Как такой код попал в продакшн? Подозреваю, что инженер, работавший над задачей, был недостаточно подкован в теме безопасности...
Всем, кто еще не успел посмотреть урок курса PHP UP о безопасности, рекомендую ознакомиться:
https://php-up.com/lesson/20
Хабр
И так сойдёт… или как данные 14 миллионов россиян оказались у меня в руках
Одиноким вечером, глядя на свою пустую зачётку и осознавая, что конец близок, я снова задумался о том, как бы мне сейчас собрать сумку, или даже просто рюкзак, п...
PHP Center via @like
Обработка ошибок в PHP
Достаточно часто мне задают вопросы о том, как в PHP правильно
обрабатывать исключительные ситуации и ошибки.
В процессе подготовки статьи нашел отличный материал от Антона Шевчука и
желание писать статью отпало само собой :)
Делюсь с вами:
http://anton.shevchuk.name/php/php-for-beginners-error-handling/
По ссылке вы найдете информацию о том, какие виды ошибок существуют в PHP,
к чему может привести невнимательность при обработке ошибок, как использовать
исключения и многое другое. Приятного чтения!
Достаточно часто мне задают вопросы о том, как в PHP правильно
обрабатывать исключительные ситуации и ошибки.
В процессе подготовки статьи нашел отличный материал от Антона Шевчука и
желание писать статью отпало само собой :)
Делюсь с вами:
http://anton.shevchuk.name/php/php-for-beginners-error-handling/
По ссылке вы найдете информацию о том, какие виды ошибок существуют в PHP,
к чему может привести невнимательность при обработке ошибок, как использовать
исключения и многое другое. Приятного чтения!
Anton Shevchuk
PHP для начинающих. Обработка ошибок
Не совершает ошибок только тот, кто ничего не делает, и мы тому пример - трудимся не покладая рук над созданием рабочих мест для тестировщиков :) О да, в этой статье я поведу свой рассказа об ошибках в PHP, и том как их обуздать. Ошибки Разновидности в семействе…
PHP Center via @like
Продолжим тему работы с ошибками
Один из подписчиков канала поделился ссылкой на хороший материал по использованию исключений:
https://github.com/codedokode/pasta/blob/master/php/exceptions.md
Автор статьи очень доступно объясняет как и зачем используется этот инструмент (с примерами). Рекомендую
Один из подписчиков канала поделился ссылкой на хороший материал по использованию исключений:
https://github.com/codedokode/pasta/blob/master/php/exceptions.md
Автор статьи очень доступно объясняет как и зачем используется этот инструмент (с примерами). Рекомендую
GitHub
pasta/php/exceptions.md at master · codedokode/pasta
Уроки и черновики для изучающих PHP. Contribute to codedokode/pasta development by creating an account on GitHub.
PHP Center via @like
Нас уже почти 500!
Сегодня я решил дать вам интересную задачку!
Она скопирована с популярного ресурса, там же приведено и решение, потому ссылку на решение отправлю через неделю.
—------------------—
«Скобки»
Условие
На входе есть строка, содержащая только скобки из набора {}()[]. Необходимо определить, является ли она сбалансированной или нет.
Под сбалансированной подразумевается строка, в которой выполняются три условия:
1) для каждой открывающей скобки есть соответствующая закрывающая;
2) соответствующая закрывающая скобка должна быть после открывающей;
3) между двумя соответствующими скобками нет других скобок без соответствий между этими скобками.
То есть [([]{[]})] — сбалансированная, а {[}], [{)] и ]{}[ — нет.
Сегодня я решил дать вам интересную задачку!
Она скопирована с популярного ресурса, там же приведено и решение, потому ссылку на решение отправлю через неделю.
—------------------—
«Скобки»
Условие
На входе есть строка, содержащая только скобки из набора {}()[]. Необходимо определить, является ли она сбалансированной или нет.
Под сбалансированной подразумевается строка, в которой выполняются три условия:
1) для каждой открывающей скобки есть соответствующая закрывающая;
2) соответствующая закрывающая скобка должна быть после открывающей;
3) между двумя соответствующими скобками нет других скобок без соответствий между этими скобками.
То есть [([]{[]})] — сбалансированная, а {[}], [{)] и ]{}[ — нет.
PHP Center via @like
Давно здесь ничего не было...
За время молчания у меня появились интересные темы и материалы, планирую поделиться с вами!
Сегодня об индексах в MySQL.
Не раз приходилось сталкиваться с проблемами, вызванными неправильным использованием / отсутствием индекса.
Они могли существовать месяцами, а порой и дольше. Причина тому - недостаточная информированность разработчиков.
Предлагаю вашему вниманию неплохую статью:
https://ruhighload.com/%D0%98%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%D1%8B+%D0%B2+mysql
Мне очень по душе подобного рода материалы, так как рассматриваются основные понятия и цели использования, не углубляясь в детали.
Также хотел бы добавить еще одну важную деталь. В статье написано:
"При каждом обновлении или добавлении данных в таблицу, происходит запись и обновление данных в индексе."
Перед добавлением индекса стоит задать себе вопрос: насколько часто происходят операции записи и чтения из таблицы?
Вполне возможно, что количество записей в вашем приложении будет существенно превышать количество выборок. В таком случае стоит задуматься об оптимальном решении.
За время молчания у меня появились интересные темы и материалы, планирую поделиться с вами!
Сегодня об индексах в MySQL.
Не раз приходилось сталкиваться с проблемами, вызванными неправильным использованием / отсутствием индекса.
Они могли существовать месяцами, а порой и дольше. Причина тому - недостаточная информированность разработчиков.
Предлагаю вашему вниманию неплохую статью:
https://ruhighload.com/%D0%98%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%D1%8B+%D0%B2+mysql
Мне очень по душе подобного рода материалы, так как рассматриваются основные понятия и цели использования, не углубляясь в детали.
Также хотел бы добавить еще одну важную деталь. В статье написано:
"При каждом обновлении или добавлении данных в таблицу, происходит запись и обновление данных в индексе."
Перед добавлением индекса стоит задать себе вопрос: насколько часто происходят операции записи и чтения из таблицы?
Вполне возможно, что количество записей в вашем приложении будет существенно превышать количество выборок. В таком случае стоит задуматься об оптимальном решении.
PHP Center via @like
Доброе утро, коллеги!
Наверное, многие из вас используют для разработки замечательный инструмент - PHPStorm.
В данный момент JetBrains предлагает лицензии на свои продукты со скидкой 50%! Предложение будет действовать ещё около 33 часов.
https://www.jetbrains.com/promo/friends/
P.S. Это не реклама и не реферальная ссылка. Только что купил сам и делюсь информацией с вами ;)
Наверное, многие из вас используют для разработки замечательный инструмент - PHPStorm.
В данный момент JetBrains предлагает лицензии на свои продукты со скидкой 50%! Предложение будет действовать ещё около 33 часов.
https://www.jetbrains.com/promo/friends/
P.S. Это не реклама и не реферальная ссылка. Только что купил сам и делюсь информацией с вами ;)
JetBrains
Monthly and yearly plans with JetBrains Toolbox
PHP Center via @like
Доброе утро!
Сегодня в дайджесте на habrahabr нашел интересный тест по PHP: https://phptestquestions.com
Тест состоит из 10 вопросов (меняются при перезапуске) из разных категорий. Результаты и правильные ответы можно получить на почту, указав ее в конце теста.
P.S. Ссылка на PHP дайджест: https://habr.com/company/zfort/blog/423491/
Сегодня в дайджесте на habrahabr нашел интересный тест по PHP: https://phptestquestions.com
Тест состоит из 10 вопросов (меняются при перезапуске) из разных категорий. Результаты и правильные ответы можно получить на почту, указав ее в конце теста.
P.S. Ссылка на PHP дайджест: https://habr.com/company/zfort/blog/423491/
PHP Test Questions
10 Questions testing your PHP knowledge. How will you do? Come to the site and start the PHP Test Yourself quiz.
PHP Center via @like
Нашел отличный ресурс по шаблонам проектирования
https://refactoring.guru/ru/design-patterns/catalog
(также на сайте можно найти информацию по рефакторингу)
Отличительная особенность материалов в том, что авторы не привязываются к конкретному языку программирования, а делают ставку на детальное описание сути паттернов, иллюстрации, принципы реализации, схемы и примеры с псевдокодом.
После ознакомления Вы можете попробовать реализовать шаблоны на выбранном языке программирования. В случае, если это PHP, можете также обратиться к:
https://github.com/domnikl/DesignPatternsPHP - здесь есть готовые примеры.
https://refactoring.guru/ru/design-patterns/catalog
(также на сайте можно найти информацию по рефакторингу)
Отличительная особенность материалов в том, что авторы не привязываются к конкретному языку программирования, а делают ставку на детальное описание сути паттернов, иллюстрации, принципы реализации, схемы и примеры с псевдокодом.
После ознакомления Вы можете попробовать реализовать шаблоны на выбранном языке программирования. В случае, если это PHP, можете также обратиться к:
https://github.com/domnikl/DesignPatternsPHP - здесь есть готовые примеры.
refactoring.guru
Каталог паттернов проектирования
Список паттернов проектирования, сгруппированый по предназанчению, сложности и популярности паттернов. В каталог включены объектно ориентированные паттерны, а также некоторые архитектурные паттерны.
PHP Center via @like
Доброе утро
77 дней остается до ожидаемой даты релиза PHP 7.3. Не так уж много.
Может быть, вам уже попадалась на глаза публикация о нововведениях в версии 7.3 на хабре. Если нет, вот ссылка: https://habr.com/post/422507/
Но это ведь не очень интересно, да? ;)
Предлагаю вот такую статью:
https://www.tomasvotruba.cz/blog/2018/08/16/whats-new-in-php-73-in-30-seconds-in-diffs/
Здесь описаны возможности, которые, вероятно, будут полезны в ежедневной разработке.
Уверен, что немногим захочется заморачиваться и устанавливать версию 7.3, потому можно попробовать выполнить интересующий код на сайте: https://3v4l.org/ выбрав нужную версию.
p.s. https://kinsta.com/blog/php-7-3/ еще один материал (на английском языке).
77 дней остается до ожидаемой даты релиза PHP 7.3. Не так уж много.
Может быть, вам уже попадалась на глаза публикация о нововведениях в версии 7.3 на хабре. Если нет, вот ссылка: https://habr.com/post/422507/
Но это ведь не очень интересно, да? ;)
Предлагаю вот такую статью:
https://www.tomasvotruba.cz/blog/2018/08/16/whats-new-in-php-73-in-30-seconds-in-diffs/
Здесь описаны возможности, которые, вероятно, будут полезны в ежедневной разработке.
Уверен, что немногим захочется заморачиваться и устанавливать версию 7.3, потому можно попробовать выполнить интересующий код на сайте: https://3v4l.org/ выбрав нужную версию.
p.s. https://kinsta.com/blog/php-7-3/ еще один материал (на английском языке).
Хабр
PHP 7.3. Что нового
Синтаксис Смягчение требований к синтаксису Heredoc и Nowdoc Поддержка конечных запятых в вызовах функций и методов Ссылки в list() Устаревшие возможности (de...
PHP Center via @like
Доброе утро
Сегодня поднимем тему оптимизации SQL запросов.
В первую очередь хочу заметить: оптимизация - это не то, что можно отложить на потом.
Запрос может работать прекрасно во время разработки, но преподнести неожиданный сюрприз в production.
Анализировать оптимальность составленного запроса нужно здесь и сейчас. Если вы используете MySQL, он поддерживает удобнейший инструмент - оператор EXPLAIN.
На хабре есть хорошая статья с примерами: https://habr.com/post/211022/
После того, как вы ознакомитесь с новой информацией, просто заглядывайте в код (или в debug panel фреймворка), копируйте запросы, добавляйте к ним EXPLAIN и находите потенциальные проблемы.
Warning: До версии 5.6.3 MySQL поддерживает EXPLAIN только для запросов SELECT. Для более новых версий: SELECT, DELETE, INSERT, REPLACE, UPDATE.
На сегодня все :)
Сегодня поднимем тему оптимизации SQL запросов.
В первую очередь хочу заметить: оптимизация - это не то, что можно отложить на потом.
Запрос может работать прекрасно во время разработки, но преподнести неожиданный сюрприз в production.
Анализировать оптимальность составленного запроса нужно здесь и сейчас. Если вы используете MySQL, он поддерживает удобнейший инструмент - оператор EXPLAIN.
На хабре есть хорошая статья с примерами: https://habr.com/post/211022/
После того, как вы ознакомитесь с новой информацией, просто заглядывайте в код (или в debug panel фреймворка), копируйте запросы, добавляйте к ним EXPLAIN и находите потенциальные проблемы.
Warning: До версии 5.6.3 MySQL поддерживает EXPLAIN только для запросов SELECT. Для более новых версий: SELECT, DELETE, INSERT, REPLACE, UPDATE.
На сегодня все :)
Habr
Использование EXPLAIN. Улучшение запросов
Когда вы выполняете какой-нибудь запрос, оптимизатор запросов MySQL пытается придумать оптимальный план выполнения этого запроса. Вы можете посмотреть этот самый план используя запрос с ключевым...
PHP Center via @like
"Чем отличается composer.lock от composer.json?"
Вы не поверите, но около половины собеседований PHP разрабочиков можно заканчивать после этого вопроса 😞
Почему все так плохо? По-моему, причиной тому тесная связь современных php фреймворков и composer. Как правило, разрабочик получается проект где "все готово" и не нужно заморачиваться. И только со временем сталкивается с проблемами вроде версионирования, конфликтов в composer.lock, неправильным использованием install, update и т.д.
Вот что хочу посоветовать:
1) Первым делом изучаем принципы семантического версионирования: https://semver.org
2) Читаем документацию по composer, от корки до корки:
https://getcomposer.org/doc/
3) Читаем полезные практические советы:
https://habr.com/company/mailru/blog/346488/
4) Для закрепления создаем свою "hello world" библиотеку. С нуля. Устанавливаем эту библиотеку в свой проект, тестируем. Простой пример можно глянуть здесь: https://php-up.com/lesson/7
Вы не поверите, но около половины собеседований PHP разрабочиков можно заканчивать после этого вопроса 😞
Почему все так плохо? По-моему, причиной тому тесная связь современных php фреймворков и composer. Как правило, разрабочик получается проект где "все готово" и не нужно заморачиваться. И только со временем сталкивается с проблемами вроде версионирования, конфликтов в composer.lock, неправильным использованием install, update и т.д.
Вот что хочу посоветовать:
1) Первым делом изучаем принципы семантического версионирования: https://semver.org
2) Читаем документацию по composer, от корки до корки:
https://getcomposer.org/doc/
3) Читаем полезные практические советы:
https://habr.com/company/mailru/blog/346488/
4) Для закрепления создаем свою "hello world" библиотеку. С нуля. Устанавливаем эту библиотеку в свой проект, тестируем. Простой пример можно глянуть здесь: https://php-up.com/lesson/7
Semantic Versioning
Semantic Versioning 2.0.0
Semantic Versioning spec and website
PHP Center via @like
Доброе утро, коллеги!
Сегодня хочу поделиться последней в этом году технической заметкой.
Многим из вас знакомы классические шаблоны проектирования "Банды четырех". (Если нет, обязательно посмотрите).
Но даже разобравшись в них, мне всегда было непросто вспомнить все названия по порядку либо по принадлежности к группе. Слова просто крутятся и крутятся в голове, по несколько раз хочется сказать одно и то же название, а про какие-то просто забываешь.
В какой-то момент мне пришла в голову идея составить из названий шаблонов предложения со смыслом, чтоб проще было запомнить. Это называется "мнемотехника".
В итоге у меня получилось 4 предложения, хоть и не самой полезной смысловой нагрузки. Попробуйте или составьте предложения по своему вкусу. Это действительно работает!
---
Порождающие (5)
Строитель(1) одиночка(2) фабричными методами(3) создает прототип(4) абстрактной фабрики(5).
---
Структурные (7)
Заместитель(1) шерифа декорирует(2) фасад(3) моста(4) легковесными(5) гирляндами, скомпонованными(6) в одно целое и подключенными через адаптер(7) в розетку.
---
Поведенческие (11)
Хранитель(1) парка открыл замок и посетители(2) смогли купить у посредника(3) билеты на карусель цепочка(4), который находился в плохом состоянии(5), но работал.
На каждой итерации(6) команда(7) меняла шаблонные методы(8) и стратегию(9), но наблюдатели(10) интерпретировали(11) это как поражение.
Сегодня хочу поделиться последней в этом году технической заметкой.
Многим из вас знакомы классические шаблоны проектирования "Банды четырех". (Если нет, обязательно посмотрите).
Но даже разобравшись в них, мне всегда было непросто вспомнить все названия по порядку либо по принадлежности к группе. Слова просто крутятся и крутятся в голове, по несколько раз хочется сказать одно и то же название, а про какие-то просто забываешь.
В какой-то момент мне пришла в голову идея составить из названий шаблонов предложения со смыслом, чтоб проще было запомнить. Это называется "мнемотехника".
В итоге у меня получилось 4 предложения, хоть и не самой полезной смысловой нагрузки. Попробуйте или составьте предложения по своему вкусу. Это действительно работает!
---
Порождающие (5)
Строитель(1) одиночка(2) фабричными методами(3) создает прототип(4) абстрактной фабрики(5).
---
Структурные (7)
Заместитель(1) шерифа декорирует(2) фасад(3) моста(4) легковесными(5) гирляндами, скомпонованными(6) в одно целое и подключенными через адаптер(7) в розетку.
---
Поведенческие (11)
Хранитель(1) парка открыл замок и посетители(2) смогли купить у посредника(3) билеты на карусель цепочка(4), который находился в плохом состоянии(5), но работал.
На каждой итерации(6) команда(7) меняла шаблонные методы(8) и стратегию(9), но наблюдатели(10) интерпретировали(11) это как поражение.