14.2
Karma
0.5
Rating
Несмеянов Кирилл @SerafimArts

Backend Developer at Rambler&Co

Глючный код на Python: 10 самых распространенных ошибок, которые допускают разработчики

+6

Нет, ошибка не очевидна, т.к. bar является аргументом метода, а ведёт себя как локальная статическая переменная.

Почему 1С-Битрикс с 1 декабря 2019 года может превратиться в тыкву

0
Уважаемый, а вы считаете нормальным что при установке чистого БУСа с типовым решением инет магазина главная страница сайта выдает несколько тысяч emergency? При этом вы пропагандируете "корректную" разработку на вашем продукте.

А представьте себе количество ошибок, если на этот код ещё phan или psalm натравить? :D

Как менялись зарплаты и популярность языков программирования за последние 2 года

0

А никто и не говорит о том, что везде всё точно. Тот же Go будет попроще плюсов.


не совсем понятно, почему вы слабую типизацию к хардкору относите. Поиск и отладка некоторых багов в программах на слабо типизированных языках может быть еще большим хардкором :)

И динамическую в т.ч. И не к усложнению, а наоборот, к упрощению отношу.

Как менялись зарплаты и популярность языков программирования за последние 2 года

+2

Просто в качестве ироничного наблюдения за этим графиком:
1) Чем хардкорнее язык и сложнее на нём писать — тем меньше на нём разработчиков.


А по экстремумам:
2) Этим же и сказывается падение популярности PHP, т.к. за последние 4 года он очень круто вырос в сторону строгой типизации (стал более хардкорным), качества кода и в целом.
3) Этим же обуславливается повышение популярности JS, там дофига всякого сахара добавили (стал менее хардкорным) за последние 4 года.


Естественно, эти выводы притянуты "за уши" и кое-где не соответствуют действительности, но в целом ведь похоже вырисовывается? =)

Перестаньте использовать DateTime

+1

Ну скорее объекты в PHP передаются через указатель на указатель. Для передачи его по ссылке надо использовать "&".


P.S. Передача объекта по ссылке — это очередная путаница в документации, такая же как и со "свойствами", которых в PHP просто нет и такая же как и с Closure, который является анонимной функцией, а замыканием лишь в частных случаях (за исключением короткого синтаксиса).

Хеви-метал оболгали: на самом деле тяжелая музыка положительно влияет на здоровье своих поклонников

PHP-Дайджест № 162 (1 – 12 августа 2019)

+1

Думаю, не сопротивлялись бы и добавили возможность внедрять код напрямую в Zend VM — появилась бы куча уже диалектов (привет JVM). Само появление Hack Lang — это одна из причин отсутствия оного функционала.


А то в текущем варианте можно лишь патчить опкеш, что является чуть-чуть извращением. Ну и переписывать/кодогенерировать сырцы (Yay, Preprocess, Symfony, Doctrine, Go!, e.g.).

Оседлай волну Web 3.0

Оседлай волну Web 3.0

+1

А что за язык, кстати, используется в примерах? Похож на JS методами API, но это не он.

Советы по оптимизации Laravel-архитектуры с AWS

0

Пользуясь случаем, хочу поздравить кампанию OTUS с первым переводом PHP статьи, где нет косяков с оформлением кода =)

Порождение событий, CQRS и Laravel

+1

Ни одного нормально оформленного фрагмента кода. Ни одного!


В оригинале, к слову, не лучше =\

Docker + Laravel + RoadRunner = ❤

0

Короче, это можно подытожить тем, что для решений на VDS/VPS — это вполне допустимо. В остальных случаях не стоит. Нет профита запускать БД на сервере, где только БД внутри докера.


Так ведь?

Docker + Laravel + RoadRunner = ❤

-2

На проде БД в докер-контейнерах использовать нельзя.


P.S. А я вот подумал, кажется можно, если нормально ФС примонтировать. Хотя всё равно это чревато, имхо.

Laravel Event Projector и концепция порождения событий

Краткий и бодрый обзор архитектуры компиляторов

0

Кстати, это можно реализовать обычными регулярками
/\-\-\[(?P<comment>=+).*?(P=comment)\], а это всё же не полноценный LL\LR парсер, а ограниченная кс-граммтика.

Telegram — бот | Полноценное меню

0

Эм… везде. Я, пожалуй, просто спрошу: Когда вы в последний раз PSR-1 и PSR-2 открывали и читали?

Разрабатывайте плагины для продуктов JetBrains и продавайте их на JetBrains Marketplace

Разрабатывайте плагины для продуктов JetBrains и продавайте их на JetBrains Marketplace

0

У меня есть смутные подозрения, что OS лицензия как раз про такие вещи (включая). И разработчики плагинов вполне могут претендовать на неё.

Larabeer Moscow — 21 июня

0

Это моя вина, не успел нормально прогнать его и понять где можно улучшить. =(

Larabeer Moscow — 21 июня

0

Я был бы не против пересмотреть в формате записи (Adelf там записалось норм?), а то есть подозрения что много чего упустил.

Я сделал PWA и выложил в трёх магазинах приложений. И вот что я выяснил

«Мобильный контент» бесплатно, без смс и регистраций. Подробности мошенничества от Мегафона

+2

Теле2 тоже начали так же себя вести. Буквально месяц-два назад началось. Пополняешь баланс (не важно откуда, хоть из личного кабинета) и летят смс со спамом. При этом в договоре явно ставил галочку с отказом от подобных вещей.


Кажется альтернативы кончились. Начинаю потихоньку задумываться об отказе вообще от телефона. =\

PHP в 2019: лучше, чем вы о нём думаете

0
Могу согласится, что пхп всего ненамного медленнее

Эээ… Либо я слепой и в тестах, кажется, всё чуть-чуть наоборот? Или я просто сарказма не понял?


P.S. Ходят слухи, что uv побыстрее libevent будет. Но это только слухи.

PHP в 2019: лучше, чем вы о нём думаете

0
Неблокирующий ввод-вывод и обработка запросов без убийства стейта — разные вещи, друг от друга особо не зависящие.

Почему? Работа без убийства стейта практически бессмысленна при наличии блокирующих операций, иначе 2+ запрос будет спотыкаться об них и в результате получится ещё хуже.


… ну если только не форкаться или не стартовать в несколько параллельных процессов с разгребанием по ним запросов балансером.


И неблокирующие сокеты в PHP есть, емнип, со времён PHP3 из коробки. А значит все или почти все операции с ФС доступны в неблокирующие режиме. Обёрток удобных нет, но сами операции есть.

Хм, через file:///?

PHP в 2019: лучше, чем вы о нём думаете

0
Я как и Volch так и не понял откуда возьмется разница при выполнении запроса, если так или иначе мне нужно дождаться получения данных.

Эээ… Ну так fcgi каждый раз стартует и интерпретирует php, а работая в эвентлупе этого не потребуется. Более того, можно один раз весь стейт инициализировать, а запросы обрабатывать мелкими хендлерами. Получаем то, что 80-90% кода на PHP просто выполнится один единственный раз за всю жизнь сервера, а не каждый раз.


А отсыл к PDO и mysqli опять же только подтверждает мое утверждение что проблема не в PHP как языке, а конкретных библиотеках и фрэймворках для него написанных.

Отсыл к PDO как раз и касается того, что в таком режиме работы проблема блокирующих операций — единственная остающаяся.


На счёт библиотек и фреймов… И да и нет. Всё же функции работы с файловой системой, например, являются частью stdlib языка. А они блокирующие.

PHP в 2019: лучше, чем вы о нём думаете

0

Пользователь как раз не особо увидит разницу между 5мс и 15мс.


А в противном случае никто не мешает работать в эвентлупе, а в БД ходить не через PDO, а через, например, mysqli (там есть асинхронные запросы). И в результате получим всё то же самое, что и в Go:


Заголовок спойлера

image


Только этим никто особо не занимается, т.к. подобные копейки редко кому нужны на практике.

PHP в 2019: лучше, чем вы о нём думаете

0
Вот если вас не затруднит на одной и той же локалке, сделайте тест который будет делать SELECT * FROM users WHER id=1 и выплевывать результат в простейшем виде. Почему-то мне кажется что не будет Go вариант сильно быстрее.

Как раз наоборот. Все тормоза в скорости работы PHP как раз из-за блокирующих операций.


Т.е. при сравнении "hello world" на Go и PHP скорость будет ± идентичная (благо на дворе 2019ый и PHP на синтетике не уступает gcc -o2), а вот когда появляются "блокирующие" операции, то:


1) В Go самым логичным вариантом является не писать такой код, т.к. он зафризит вообще всё. Ну и плюс горутины (которые вообще в другом треде висят) никто не отменял.


2) А для PHP в большинстве случаев это вообще не является проблемой, т.к. в современном мире он масштабируется процессами, а не тредами. Т.е. удобство использования и лаконичность было изначально в приоритете, нежели скорость. И любая операция в PHP, которая обращается к внешним ресурсам "под капотом" содержит что-то вроде: while (!result) { usleep.. }

PHP в 2019: лучше, чем вы о нём думаете

Новое в PHP 7.4

+3
Подскажите какой именно функционал недоступен в PDO, но доступен в php_mysqli?

Асинхронные и неблокирующие запросы

Новое в PHP 7.4

0
Начерта мне шаблонизаторы, если похапэ сам по себе — отличный шаблонизатор?

Ну, скажем так, современные шаблонизаторы — это не только вывод с экранированием. И там нативному PHP до них как до луны.


Но я допускаю, что возможно из-за того, что вообще не помню когда последний раз писал echo не совсем объективен в этом плане.


поломка обратной совместимости в минорной версии

Мы все прекрасно знаем какие у PHP "минорные версии"))) Такой же php 5.2 -> 5.3, например, вообще полностью изменил язык в своё время.


джависты вон дженерики поломали

Джависты себе давно язык сломали (пользуясь случаем) =)


Тем более, когда это ломает 12 из топовых 1000 пакетов, причём ломает не на уровне "в такой ситуации возникнет баг", а на уровне "вообще не запускается"

Ну вообще это ССЗБ. Смотря на такой код: https://github.com/symfony/messenger/blob/4.1/DependencyInjection/MessengerPass.php#L118 Мне рыдать хочется. Блин, неужели так сложно разрабам скобки расставить было? А ещё пишут что в симфони норм код...


У меня нет, короче, контраргументов =) Ну убили совместимость, да, но как раз в тех местах за которые надо писателей на костёр отправлять.

Новое в PHP 7.4

+1
Что идёт дальше — я не понял умора. Зачем-то выпилили <?, хотя это очень даже удобно

Он не нужен, очевидно и доставляет в разы больше проблем, нежели профита. Да и им пользуются лишь совсем новички. Покажите хоть один пакет в композере, где он используется?


Для шаблонов удобно и красиво. Было.

Для шаблонов есть шаблонизаторы.


Менять приоритет операторов — это гениальный ход. Народ-то думал, что синтаксические косяки придётся тащить во имя обратной совместимости, но разрабы PHP были полны решимости.

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


а повсеместно нужный тернарный оператор запретили

Тоже самое что и выше: "Не читал, но осуждаю". Никто не запрещал тернарных операторов. Запретили говнокод в тернарниках.

Новое в PHP 7.4

Новое в PHP 7.4

Новое в PHP 7.4

Новое в PHP 7.4

Новое в PHP 7.4

+2

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

Новое в PHP 7.4

+2

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

Новое в PHP 7.4

+1

Потому что он настраивается на уровне php.ini и как следствие — глобален на все проекты на сервере сразу (давайте временно забудем про докер и прочие штуки и возьмём в качестве примера типичный VPS прод или шаред).


Так что либо придётся прописывать opcache.preload=/home/username/site.org/vendor/preload.php
под один единственный проект. И при появлении site-2.org уже ничего с этим не сделать.


Либо делать тоже самое на уровне fpm конфигов в виде php_flag[opcache.preload]=xxx. Что примерно тоже самое, но получше, т.к. можно отдельно воркеры под каждый ресурс запилить.

Новое в PHP 7.4

0
Насчет интерфейса внешних функций например на C я не понял этот код будет налету компилироваться всякий раз или только при первом запуске или еще как?

Зависит от настроек в php.ini. По умолчанию FFI доступен только в файлах, которые загружаются с помощью preload функционала (файлы для которого, напоминаю, тоже указываются в ini конфигах).


Пруфы:
1) ffi https://github.com/php/php-src/blob/master/php.ini-production#L1892
2) preload https://github.com/php/php-src/blob/master/php.ini-production#L1854


UPD: Персональное ИМХО по этому всему: Функционал с прелоадом и ffi будет очень слабо востребован в связи с тем, что его почти невозможно нормально использовать.

Как быстро попробовать CQRS/ES в Laravel или пишем банк на PHP

1 There