• Финальные классы в PHP, Java и других языках
    +2
    Как без final отличить где реализация, а где публичный API?
  • Финальные классы в PHP, Java и других языках
    0
    так как теряешь возможность обновлений
    Патчи в помощь. Для данного конкретного случая (удаление final) они идеально подходят. В файлах меняется только одна строка, поэтому шанс получить Гит конфликт при обновлении зависимостей минимален.
  • Финальные классы в PHP, Java и других языках
    +1
    Класс без final это точка расширения, которую мантейнер обязан поддерживать как минимум до следующей мажорной версии проекта (если он следует семвер). По сути поддержка сводится к полному отказу от рефакторинга таких классов. Нельзя добавлять/удалять методы и нельзя изменять сигнатуры существующих протектед методов и свойств. Иначе прилетят гневные багрепорты и жалобы на не соблюдение BC политики.
  • Недостатки Wordpress — техническая сторона
    0
    Вместо того, чтобы поддержать весь остальной PHP мир в использовании стандартов PSR или PEAR, разработчики WordPress решили написать свой собственный стандарт
    А разве они его написали после того как появился PSR?
  • Как писать хорошие комментарии к коду: «зачем», а не «как»
    +1
    Внутри не получится. Это встроенная JS функция.

    Лучшим вариантом было бы использовать какой-нибудь линтер с настройками браузерной поддержки.
  • Как писать хорошие комментарии к коду: «зачем», а не «как»
    +5
    Есть большая вероятность, что этот коммент переживёт IE 11. Для таких штук лучше оставлять todo, чтобы можно было потом отслеживать их статус помощью IDE.

    // @todo Replace with Number.isFinite once we drop support for IE11.
    if(!isFinite(arg)) return; 
  • Теперь я не могу сделать даже маленький сайт
    +4
    Может, мне позвать в команду пару друзей, чтобы сделать всё правильно вместе?
    Не забудьте записать друзей на тренинги по agile, scrum, kanban и т.д. Ну и само собой проект в Джире завести надо будет.
  • Теперь я не могу сделать даже маленький сайт
    +8
    может, мне стоит откопать старую книжку по PHP, и сделать всё, как в 2013 году
    PHP в этом плане очень подходит, потому что можно поставить самую последнюю версию, например PHP 8.0.0-rc3 и сделать сайт по книжке 2013 года, в которой скорей всего используется PHP 5.5. Реальный пример.
  • PHP 8 — пробуем новые возможности
    0
    А если мне просто нужно узнать что число положительное? Например, для какого нибудь универсального валидатора или библиотеки ассёртов. Использование union типов позволяет обойтись без mixed типа. Пример.

  • PHP 8 — пробуем новые возможности
    0
    Для однообразия. В массивах уже давно так можно. Редактировать удобней. Можно добавлять/удалять аргументы не отвлекаясь на эту запятую.
  • PHP 8 — пробуем новые возможности
    +1
    Какой именно вариант использовать зависит от задачи.
    В общем случае функции полезны тем, что позволяют переиспользовать код и делать его более читабельным.

    isPositive это просто абстрактный пример. Причём довольно простой. Поэтому вместо него вполне можно использовать «инлайновую» проверку if ($value > 0). Хотя иногда даже простой код приходиться оборачивать в функцию чтобы реализовать интерфейс или передать в качестве функции обратного вызова в другой сервис.

  • PHP 8 — пробуем новые возможности
    +3
    В параметрах списка теперь допускается опциональная висящая запятая
    parameter list переводится как список параметров.

    method_with_many_arguments(
        1,
        2,
        3,
        4,
    );
    Висячие запятые при вызове методов и функция были добавлены ещё в PHP 7.3 (RFC)
  • PHP 8 — пробуем новые возможности
    +9
    Если необходим общий функционал — надо выносить в интерфейсы/трейты.
    Непонятно, причём тут трейты/интерфейсы. Как с помощью них реализовать, допустим, вот такую функцию?
    function isPositive(int|float $value): bool {
        return $value > 0;
    }
  • PHP 8 — пробуем новые возможности
    0
    Видео с примерами.
    beyondco.de/course/whats-new-in-php-8
  • PHP 8 — пробуем новые возможности
    +4
    var $user; по прежнему работает. Даже в PHP 8.
  • Создание шаблона VPS с Drupal 9 на Centos 8
    +2
    Для Drupal 9 требуется PHP 7.4
    7.3
  • Разбор: зачем нужны анимации на сайтах + 7 полезных инструментов и библиотек для их создания
    0
    но если да, то рассуждения об одноногих инвалидах, которых тошнит от анимации выглядят немного странно

    вы полностью забываете про людей с дислексией

    Вы ведь сами эту тему подняли.
  • Валидация в PHP. Красота или лапша?
    0
    Еще парочка валидаторов.
    github.com/webmozart/assert
    github.com/beberlei/assert
  • Разбор: зачем нужны анимации на сайтах + 7 полезных инструментов и библиотек для их создания
    0
    вы полностью забываете про людей с дислексией — им лишние для кого-то визуальные элементы оказываются крайне полезны во многих случаях.
    А вы забываете про людей с нарушениями вестибулярного аппарата. Для них анимации размеров и позиций могут иметь негативный эффект.

    Обратите внимание на красное предупреждение в верхней части страницы.
    developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion

  • Кунг-фу стиля Linux: удобная работа с файлами по SSH
    +8
    Файловые менеджеры в современных Линукс дистирбутивах поддерживают SFTP из коробки. Т.е. можно открывать удалённые директории по адресу sftp://user@host/path/to/directory.
  • Предпочитайте Rust вместо C/C++ для нового кода
    +6
    Предпочитайте Rust
    Предпочитайте не использовать повелительное наклонение в дословных переводах. Звучит ужасно.
  • Программисту. 10 ценных GitHub-репозиториев
    +10
    Ещё несколько сотен ценных репозиториев.
    github.com/bayandin/awesome-awesomeness
  • 5 самых неприятных фич для слепого человека на сайтах
    0
    тогда и видиться будет нормально и синтезаторами речи распознаваться

    Так ведь синтезаторы речи не занимаются распознованием с экрана.
  • 5 самых неприятных фич для слепого человека на сайтах
    +1
    По плохо подписанной кнопке или ссылке вроде бы всем сложно будет навигировать.
    Внутри кнопок очень часто есть иконка, по которой обычный пользователь может понять её назначение. Но не скринридер.

    По-моему вообще не надо тратить время на атрибуты alt, если это не графическое отображение какого-нибудь элемента взаимодействия
    Без alt-а скринридер будет читать src атрибут картинки. Альт как минимум должен присутствовать (хотя бы пустой). Для контентнтых картинок в нём должно быть описание картинки. Если картинка находится внутри интерактивного элемента, у которого нет текcтового описания, аlt тоже нужен. Для «декоративных» картинок можно добавить role="presetntation" либо aria-hidden="true". Либо вообще вставлять их через CSS background-image.
    С плохо доступными формами сталкиваюсь редко.
    Плейсхолдеры вместо лейблов повсеместны. Например поиск на хабре так сделан.
  • 5 самых неприятных фич для слепого человека на сайтах
    +2
    Их надо применять с умом. На одно проекте внедрили кучу слайдеров с авто прокруткой сделанных на основе Tiny Slider. Каждую прокрутку этот слайдер анонсирует через aria-live="polite" (Slide 1 of 5). В итоге при открытии страницы в скринридер сразу выдавал словесный понос который трудно отключить.
  • Безопасность через неясность недооценивается
    +3
    Нет, потому что это типовое решение. Спрячьте ключ под коврик соседу, чтобы добавить неясности.
  • Безопасность через неясность недооценивается
    +1
    Security by obscurity это конкретная вещь, а именно «безопасность», полагающаяся на скрытие деталей реализации протокола.
    Протоколы и криптография это только частный случай «Security through obscurity ».

  • Безопасность через неясность недооценивается
    +3
    А разве нельзя всегда разрешать доступ забанненым IP к некоторым «публичным» портам, например, 80 и 443?
  • Безопасность через неясность недооценивается
    +3
    что делает тупой автомат на nmapʼе
    Ага, особенно когда фаервол банит его после скана 10 портов. В итоге вместо того чтобы сразу начинать брутфорсить SSH, придётся покупать пул IP адресов для скана портов. Это уже точно не будет являтся «ничтожной долей от всех затрат».

    Вообще я не имел ввиду этот конкретный случай со сменой порта SSH. Но даже тут можно всё усложнить, например, запустив какой нибудь фейковый SSH сервер типа Cowrie. Хотя это, наверное правильней называть «Security through cheating».
  • Безопасность через неясность недооценивается
    +1
    Как только утечет (а это случится рано или поздно)
    А почему собственно она обязана утечь?
  • Безопасность через неясность недооценивается
    +2
    Да ладно. Сбор информации о целевой системе это значительная часть любой направленной атаки. Большинство хакеров это вовсе не супер гении как их представляют в фильмах, а обычные люди, инженеры.
  • Безопасность через неясность недооценивается
    +6
    Смена портов отфильтрует разве что скрипты и боты.
    По мне так уже это достаточная причина сменить порт.
  • Разбор: зачем нужны анимации на сайтах + 7 полезных инструментов и библиотек для их создания
    0
    Одна из них – заполнение времени, которое пользователю нужно ждать загрузки страницы.
    Вариант сделать загрузку страницы быстрой не рассматривается?

    Также анимации могут быть использованы для приветствий и создания нужного настроения – для этого, например, подходят фоновые видео.
    Особенно когда пользователь заходит на сайт с древнего ноутбука или телефона, с 5% зарядки и медленным интернет соединением.
  • Безопасность через неясность недооценивается
    +7
    «security by obscurity» это ведь просто дополнительная мера. Во многих случаях, при относительно небольших усилиях можно уменьшить вероятность взлома в разы.

    Простой пример, проекты с закрытым исходном кодом намного трудней взломать.
  • Движок, который смог: как Chromium удалось захватить 90% рынка браузеров
    +1
    Но они используют одинаковый подход к рендерингу веб-страниц, а бОльшая часть кода внутри проекта остаётся такой же.
    Blink ответвился от Webkit в 2013 г. Конечно, они вероятно копируют друг у друга фичи, но за с 7 лет параллельной разработки, я думаю, всё-таки бОльшая часть кода у них теперь должна отличаться.
  • АМА с Хабром #21. Тестируем новый WYSIWYG
    0
    И ещё проблемы с семантикой и доступностью разметки.
    Табы и переключатели на спанах. В SVG иконках неправильные `aria-*` аттрибуты. Фокус на кнопках никак не отображается.
  • 20_20 — год, в котором подчеркивание в числовых литералах победило
    +7
    Это подходит только для круглых чисел.
  • 20_20 — год, в котором подчеркивание в числовых литералах победило
    +7
    И да, до сих пор не понимаю, зачем это.
    Разделитель тысяч в больших числах.
    10000000 => 10_000_000
  • Xdebug через Windows Subsystem For Linux 2 (WSL2)
    0
    У PhpStorm есть такая малоизвестная фича, которая полностью решает эту проблему.
    www.jetbrains.com/help/phpstorm/deployment-in-PhpStorm.html

    Суть в том, что можно вообще не монтировать файловые системы, а использовать синхронизацию через FTP/SFTP. В этом случае и IDE и приложение работают в своих «родных» файловых системах, и соответсвенно издержки производительности равны нулю. При этом не важно, где именно запущено приложение. Это может быть WSL с Докером или без, Virtual Box, удалённый Линукс сервер в облаке и т.д. Синхронизация может происходить автоматически при сохранении локального файла. В случае локальной сети, деплой изменённого файла занимает 20 — 100 мс. Этого достаточно, чтобы приложение обновилось пока вы переключаетесь между окном IDE и браузера. Единственное не удобство это первоначальный деплой большого проекта. Загружать тысячи файлов через SFTP это долго. Поэтому, лучше файлы проекта выкачать прямо на удалённом сервере, например через Гит.

    Помимо проблем с Windows, есть много других поводов использовать удалённый серевер для локальной разработки. Например, «тяжелые» проекты, которым требуется несколько сотен ГБ на локальном диске, или проекты со сложной инфраструктурой. Вместо того, чтобы объяснять верстальщику как поднять проект в Docker на WSL, можно просто дать ему SSH доступ к удалённому dev серверу. По сути локальная машина превращается в тонкий клиент. Все что нужно иметь в ней это браузер, терминал, IDE и Гит. Даже PHP не нужен. Все инструменты типа Composer и npm запускаются на удалённой машине. Xdebug настраивается примерно так же как описано в этой статье.
  • Xdebug через Windows Subsystem For Linux 2 (WSL2)
    –1
    Когда в линуксовом терминале набираешь explorer.exe создаётся ощущение что этот мир где то свернул не туда. Линукс запущенный через WSL, это не тот Линукс к которому вы могли привыкнуть. Например, в нём нет systemd и Docker нужно ставить через десктопное Windows приложение. У WSL есть только два приемущества по сравнению с Virtual Box / VMware, экономия памяти и быстрый запуск. Если для вас это не критично, то намного проще и удобней использовать виртульные машины.