• Понимаем JIT в PHP 8
    +4
    Понимаем JIT в PHP 8
    Understanding something — типичный заголовок обучающей статьи на английском языке. Не стоит переводить его дословно, потому что на русском это звучит очень неестественно. Лучше придумать новый заголовок для статьи исходя из её содержимого. Например, «Разбираемся с JIT в PHP 8».
  • Стилизация контейнеров для содержимого веб-страниц
    0
    У display: contents слабая поддержка в браузерах.
    caniuse.com/#feat=css-display-contents
  • Фичи JavaScript. Часть 1
    +6
    Фичи JavaScript
    Строго говоря, это фичи различных браузерных API, а не JavaScript.
  • Хабру — 14 лет
    +3
    Доступность почти нулевая. Ссылки дивами, вместо кнопок div/td/svg и всё что угодно но не button. Формы без лейблов. Картинки через CSS бэкграунд. tabindex для модального окна не задан.
    Размер подгружаемых картинок в разы больше необходимого.
  • Python, pandas и решение трёх задач из мира Excel
    0
    [offtop]
    Зачем вы в своих публикациях внедряете голубые заголоки? Я понимаю что это цвета вашего бренда, но они не сочетаются с цветой схемой этого сайта. К тому же их трудно читать из-за плохой контрастности.
    webaim.org/resources/contrastchecker/?fcolor=3AC1EF&bcolor=FFFFFF
    [/offtop]
    Спасибо за перевод.
  • Зал Трудовой Славы JavaScript
    +1
    С появлением библиотек JavaScript, которые разрабатываются большими коллективами, таких как Angular, React, Vue, — безвозвратно ушли с арены гении-одиночки, которые разрабатывали всю или, по крайней мере, основную часть библиотеки самостоятельно.
    Vue как раз и является примером проекта, который разрабатывает гений одиночка (Evan You). По крайней мере так было до недавнего времени. Этот факт иногда называют чуть ли не главным недостатком Vue.
    github.com/vuejs/vue/graphs/contributors
  • Кто похоронит современный веб?
    –3
    Cмотрится главная страница и сейчас хорошо
    В наверное и монитор 17 лет не меняли? На широком мониторе без зума ничего не разобрать. На мобильном нужно скролить горизонтально.
  • Кто похоронит современный веб?
    +2
    Существует огромное количество сайтов, которые написаны и 20 и 30 лет назад
    С датами преувеличили. Сайты сделанные в 90-х может быть ещё и остались где-то, но уж точно не в огромном количестве.
  • Ещё один велосипед: простая библиотека для работы с HTTP-запросами
    0
    isHttps() — проверка на https
    В общем случае простой проверки протокола недостаточно. Входящий запрос может передаваться через внутренний прокси сервер без HTTPS поэтому для конечного приложения этот метод всегда будет возвращать false. В Симфони есть более практичный метод isSecure().
    github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/Request.php#L1135
  • Ещё один велосипед: простая библиотека для работы с HTTP-запросами
    +2
    К тому же если массив $_POST пустой, этот метод вернёт false даже в случае post запроса.
    isGet тоже неправильный. Потому что при post запросах массив $_GET вполне может быть не пустой.
  • Автономизация Unit-тестов в PHPUnit
    0
    Эта статья о том, как я решил проблему отказа от написания не несущего ценности кода
    Непонятно как вы определяете ценность кода. Если речь идет про Boilerplate_code, то даже у него есть своя ценность. Иначе его бы не писали.

    По теме, чем аннотации лучше абстрактных классов, трейтов, хелперов?
  • PSR Стандарты
    0
    занимаясь срачем вместо помощи обществу.
    Собственно PHP-FIG и представляет сообщество через его представителей от различных PHP фреймворков и CMS. Срач это вполне привычное явление при обсуждения холиварных вопросов. Мнений много, а результат должен быть один. Несогласные уходят.
    twitter.com/fabpot/status/1064946913596895232
  • PSR Стандарты
    0
    По вашей логике получается, что если кто-то назовет python стандартом для php — это тоже будет «стандарт»?
    Именно так. Стандарт вполне может быть абсурдным.
  • PSR Стандарты
    +1
    Разве может быть 2 стандарта «метра», «килограмма»
    Метры и килограммы являются часть системы единиц СИ. Никто не мешает вам создать свою единицу измерения (стандарт) и определить своё толкование метра и килограмма.
    Другое дело, как сделать свой стандарт «официальным». Т.е. чтобы он стал применятся организациями или даже государствами.
  • PSR Стандарты
    +6
    Давно PSR стали стандартом?
    С момента появления.

    Скорей всего вы не правильно трактуете термин «стандарт». Стандарт это нормативный документ или свод правил. PSR как раз этим и является. В общем случае стандарт не является чем-то обязательным к исполнению. Любой желающий может написать свой стандарт. Можете создать проект на ГитХабе, написать свои правила для чего-либо и назвать это стандартом. Это будет абсолютно законно.
  • Браузер на страже API-запросов: строим безопасное общение фронтенда с бэкендом
    +5
    В русском языке закрепился немного сленговый термин «ручка»
    Первый раз про него слышу.
  • Браузер на страже API-запросов: строим безопасное общение фронтенда с бэкендом
    0
    connect-src service.test *.google-analytics.com mc.yandex.ru;
    Тут ошибка. mc.yandex.ru это только один из доменов метрики. Для пользоватей из других регионов метрика перестанет работать. Самое неприятное здесь это то что нельзя применить плейсхолдеры как у Гугл аналитики, потому что метрика не использует поддомены. Перечислять все 20+ доменов метрики в заголовках это дичь. К тому же они могут измениться.
    Поэтому придётся полностью отказаться от CSP либо от метрики.
  • Docker Compose: упрощение работы с использованием Makefile
    +1
    Выше уже советовали Task. Он тоже умеет выводить список задач и конфиг у него в привычном Yaml формате.
  • Визуализация линий напряженности и движений электростатических зарядов, симулирование движения планет солнечной системы
    +5
    а вот электричество это действительно поток электронов
    Во-первых не электричество, а электрический ток. Термин электричество имеет более широкий смысл. Во-вторых не поток электронов, а поток электрических зарядов. В некоторых средах ток может создаваться положительными зарядами (ионами).
  • Какие английские слова IT-лексикона мы неправильно произносим чаще всего
    0
    Ещй парочка неочевидных IE и sudo.
  • Консольные утилиты Linux, которые смогут облегчить вам жизнь
    +3
    Расскажите пожалуйста что такое «красивый терминал».
    Это когда печатаешь, а от курсора искры летят во все стороны. Бестолково, но красиво…
  • Реализуем визуальный эффект из фильма «Матрица»
    0
    Хотя возможность есть.
    Количество цветов в терминалах обычно ограничено.
  • Docker Compose: упрощение работы с использованием Makefile
    0
    Забавно, что сам direnv имеет Makefile с кучей .PHONY алиасов.
  • Docker Compose: упрощение работы с использованием Makefile
    +1
    Строго говоря, алиасы для команд это вся суть Makefile. Даже если учитывать команды для компиляции и сборки бинарников, в типичном Makefile почти всегда алиасы общего назначения (PHONY).
    make install классический пример.
  • Чистые тесты на PHP и PHPUnit
    0
    Просто с тем кодом, где использовался private, вам нужна магия PHP, чтобы добраться до private, нам требуется знание черного ящика, тела функции, знания о её реализации...
    В данном конкретном случае магии не требуется. Можно мокая, кеш и задать что то вроде $cache->expects($this->never()). По поводу знания реализации. Конечно для тестирования реализации нужно знать реализацию. Тут возникает интересный вопрос. Должна ли инкапсуляция распостранятся на тесты? Я думаю для этого нет причин.

    А с кодом, который без private, мы проверяем результат RecordStorage::load($id) — подсовывая в constructor нужные нам состояния $cache и $storage, проверяем возвращаемый Record — никакой магии и тест будет читаться просто
    private это просто способ организовать внутреннее устройство класса. Оно может быть любым, как вам захочется. Отказываться от private методов только из-за того чтобы упростить тестирование, как то не правильно, имхо.

    Это всё были детали конкретного сильно упрощённого примера. Что если внешних зависимостей вообще нет? Что если класс сам прозводит данные, например вычисляет какой нибудь сложный хеш для переданной строки и кеширует это в приватной переменной?
  • Docker Compose: упрощение работы с использованием Makefile
    +4
    Главная фича Make, отслеживание изменённий в зависимостях здесь не используется. Всё тоже самое можно сделать с помощью обычного Баш скрипта со свитчем команд. Было бы даже по красивее. Синтаксис Make файлов мягко говоря не инуитивный.
  • Чистые тесты на PHP и PHPUnit
    0
    // протестировано отдельным тестом
    Тестирования зависимостей по отдельности, ничего не гарантирует. В данном случае нужен интеграционный тест, чтобы убедится что RecordStorage умеет корректно с этими зависимостями.

    В качестве хранилища у вас выступает doLoad() или $this->db->select('...') или т.д., по хорошему этот код должен быть в отдельном классе.
    doLoad() это просто внутренняя обёртка над хранилищем. То что вы убрали, её никак не поможет проверить в тесте, то что данные при повторном запросе берутся из кеша, а не из БД.

    Пункт «Никогда не тестируйте защищённые/приватные методы», да и вообще рекомендации из статьи в целом хороши тем, что заставляют думать и писать «чистый код».
    Удаление приватных методов, не сделает автоматически код «чистым».

    Тема тестирования приватных методов это частный случай более широкой темы тестирования деталей реализации. В общем случае реализация может находится и в публичном методе (как в вашем примере). Нужно ли её тестировать? Зависит от цели тестрования. Если ваша цель просто убедиться в том, что все публичные интерфейсы работают как надо, то тестировать детали реализации нет смысла. Но большое заблуждение при этом думать, то что корректность работы публичного интерфейса сервиса гарантирует отсутствие багов в нём. Сервис может отдавать корректные результаты внешним потребителям, но при этом делать не нужные запросы к внешним API, создавать/удалять сущности в базе, засорять системный лог и много других не запланированных вещей, которые тест публичного интерфейса не обнаружит.
  • Чистые тесты на PHP и PHPUnit
    +1
    $this->cache->get($id) нужно протестировать отдельным тестом.
    $this->cache->set($id, $record); тоже нужно протестировать отдельным тестом.
    $cache это зависимость, которая само собой должна иметь свой отдельный тест. В данном случае задача состоит только в том, чтобы протестировать логику кеширования в RecordStorage и интеграцию с cache сервисом.

    doLoad() должен быть публичным, с вынесением в отдельный класс
    Зачем? doLoad используется только внутри этого класса. Внешним потребителям не нужно знать про него. В общем случае его может вообще не быть.
    public function load($id): Record
    {
        if ($record = $this->cache->get($id)) {
            return $record;
        }
        $record = $this->db->select('...') ; // Some slow SQL query to the database.
        $this->cache->set($id, $record);
        return $record;
    }
    
  • PHPUnit. «Как мне протестировать мой чёртов контроллер», или тестирование для сомневающихся
    0
    Рефакторишь класс, обновляешь соответствующий юнит тест. Вроде всё работает, тесты зеленые, а потом выясняется что это класс используется как зависимость в другом классе. Так как в юнит тестах, обычно вместо реальных зависимостей используют test-doubles, то изменения в работе зависимостей могут остаться не замеченными.
  • И снова капча или nginx тоже умеет вышивать
    0
    Имхо, обычные каптчи с картинками без дублирующей аудио каптчи уже потеряли актуальность из-за проблем с доступностью.
  • Чистые тесты на PHP и PHPUnit
    +1
    Ок, а если метод используется в 5 публичных функциях, на основе какой мне тестировать?
    Как раз приватный метод тестировать обычно не нужно совсем, потому что он относится к деталям реализации. Если все public/protected методы покрыты тестами, то можно быть уверенным, что этот класс (юнит) работает в соответстветствии со спецификацией/контрактом.
    Хотя бывают исключения. Иногда надо убедиться, что класс делал или не делал вызовы к внешним API, например через системые вызовы. Если это трудно замокать, то придётся тестировать именно реализацию.
    Пример.
    final class RecordStorage {
    
        /** Cache backend */
        private $cache;
    
        public function load($id): Record
        {
            if ($record = $this->cache->get($id)) {
                return $record;
            }
            $record = $this->doLoad($id);
            $this->cache->set($id, $record);
            return $record;
        }
    
        private function doLoad(): Record
        {
            // Call some external API.
            $record = ...;
            return $record;
        }
    
    }
    
    Тут помимо тестирования RecordStorage:load() желательно ещё проверить что данные корректно кешируются, а для этого в тесте надо убедится, что RecordStorage:doLoadData() не вызывался при повторном запросе.
  • Работа с IPv6 в PHP
    0
    этот язык — не самый дружелюбный в плане работы с IPv6
    А какие языки являются дружелюбными в этом плане?
  • Чистые тесты на PHP и PHPUnit
    0
    Никогда не тестируйте защищённые/приватные методы
    Есть приложения в которых наследование является точкой расширения. Поэтому protected методы являются частью публичного API, который само собой нужно тестировать.
  • PHPUnit. «Как мне протестировать мой чёртов контроллер», или тестирование для сомневающихся
    +1
    Но когда мы говорим о реальном коде, например реального сайта, то практически 90% функций имеют зависимость на что-то. И потому 90% юнит-тестов превращаются в интеграционные тесты.
    Обычно эти зависимости заменяются на test-doubles.
  • Реализуем визуальный эффект из фильма «Матрица»
    0
    Справедливости ради, у автора поста итоговая картинка красивее, чем cmatrix.
    Наверное, из-за отсутствия поддержки полупрозрачных шрифтов в стандартных терминалах.
  • PHPUnit. «Как мне протестировать мой чёртов контроллер», или тестирование для сомневающихся
    +7
    А так как все зависимости тоже покрыты тестами — то их правильная работа тоже гарантируется.
    Unit test 2, Integration test: 0

  • Реализуем визуальный эффект из фильма «Матрица»
    –3
  • 6 рекомендаций по разработке безопасных Go-приложений
    +7
    Go стал стандартом де-факто в области создания инструментов командной строки.
    Можете обосновать это?
  • Почему резисторы обозначают цветом?
    0
    По вашей логике допуск баластного резистора в цепи питания светодиода должен таким же как у резистора в колебательном контуре генератора если они используются в одном устройстве.
  • Почему резисторы обозначают цветом?
    +2
    Я думаю точность резистора определяется не устройством в котором он используется, а требованиям конкретной электрической схемы.