• BEM'a не должно существовать
    0
    У scoped стилей есть огромный недостаток — нельзя стилизовать через родителей.

    Можно так


    .parent-class :global(.child-class) { /* ... */ }
  • [в закладки] Инструменты JS-разработчика, на которые стоит обратить внимание
    +3

    Вы, надеюсь, в курсе, что Standard JS — это просто кликбейтовое название стиля, а не стандартный кодстайл, как можно было бы логически предположить.
    При этом самый популярный кодстайл — это AirBnb.

  • Конструктор XML-строки из PHP-массива
    0

    По мне так оба варианта одной сложности, если известно, что исходные данные не будут содержать ломающих верстку символов.
    Вот с SimpleXML, на который мне указали выше, все гораздо удобнее.
    Конечно, XMLWriter, крут, но его, по-моему стоит использовать для чего-то большего, чем то, для чего указал автор поста:


    Обычно потребность возникает при интеграции со сторонним сервисом, т.к. BetaPRO, OnTime или CDEK
  • Конструктор XML-строки из PHP-массива
    0

    В стандартной библиотеке все слишком избыточно. Ваша же 2-я ссылка с примером.

  • Конструктор XML-строки из PHP-массива
    0

    Точно, давно им пользовался, подзабыл ) Сейчас же в основном апи на JSON'ах делают.

  • Конструктор XML-строки из PHP-массива
    0

    По-моему гораздо удобней было бы это делать через классы


    Что-то типа этого
    class Tag
    {
        protected $tag;
        protected $attributes;
        protected $childTags = [];
    
        public function __construct(string $tag, array $attributes = [])
        {
            $this->tag = $tag;
            $this->attributes = $attributes;
        }
    
        public function addChildTag(Tag $tag)
        {
            $this->childTags[] = $tag;
        }
    
        public function addAttribute(string $title, $value = null)
        {
            $this->attributes[$title] = $value;
            $this->childTags[] = $tag;
        }
    
        public function tagToXmlBlock()
        {
            $result = '<' . $this->tag . '%s>%s</' . $this->tag . '>';
            $attributeString = '';
            foreach ($this->attributes as $attribute => $value) {
                $attributeString .= ' ' . $attribute . '="' . addslashes($value) . '"';
            }
            $innerTags = '';
            foreach ($this->childTags as $tag) {
                $innerTags .= $tag->tagToXmlBlock();
            }
            sprintf($result, $attributeStringm, $innerTags);
            return $result;
        }
    
        public function getXmlDocument()
        {
            return '<?xml version="1.0" encoding="UTF-8"?>' . $this->tagToXmlBlock();
        }
    }
    
    $root = new Tag('root');
    $childTag = new Tag('child');
    $root->addChildTag($childTag);
    $root->addChildTag($childTag);
    echo $root->getXmlDocument();
  • Результаты опроса «Каким бы вы хотели видеть Toster.ru?»
    0
    не факт что оно заработает именно в том случае

    Вот как раз довольно часто вижу ситуацию, когда автор вопроса спрашивает одно, а надо ему что-то другое. Ему дают ответ на его вопрос, но он не отмечает его решением, т.к. не удосужился корректно сформулировать свою проблему.

  • Orchid CMS — ещё одна CMS на Laravel
    +2
    Перенос сайта осуществляется за три операции, копирование файлов, правка config, экспорт и импорт БД. Все.

    Это ведь практически везде так можно, не только у вас. Но с композером, можно еще и не только так.


    Вопрос в том, что если с вашим сайтом придется работать другому разработчику. Есть ли документация? Как насчет обновлений безопасности, багфиксов?


    Советую глянуть мнение Александра Макарова, одного из основных разработчиков фреймворка Yii, по поводу того, стоит ли писать свою реализацию компонентов или использовать чужую:


    https://youtu.be/EfL8lsUTlFo?t=9209 — ошибки Yii 2.0
    https://youtu.be/EfL8lsUTlFo?t=10271 — конкретно, в чем разумнее подход Laravel по сравнению с подходом Yii.

  • Mozilla Firefox. Проблемы адаптивной вёрстки (баг, который чуть не рассорил компанию)
    0
    Можете поэкспериментировать глобально отключив скрипты

    К сожалению до понедельника не могу, т.к. проблема всплывает только на работе (как писал выше), хотя дома ОС та же, а наборы дополнений синхронизируются.

  • Mozilla Firefox. Проблемы адаптивной вёрстки (баг, который чуть не рассорил компанию)
    0

    Linux Mint 18.1, из расширений — Wappalizer, uBlock Origin, Stylish. Видеокарта Intel.
    Скриншоты выше с рабочего компьютера. На домашнем стоит все описанное выше, но баг не воспроизводится.

  • Mozilla Firefox. Проблемы адаптивной вёрстки (баг, который чуть не рассорил компанию)
    0
    Так, в чем баг то?

    В 1-м случае (открыт google.ru) при сужении окна появляются стрелки для прокрутки списка вкладок, во 2-м случае (откыт yandex.ru) — не появляются и область просмотра начинает выходить за рамки окна.


    image


    image

  • Простые миграции с PHPixie Migrate
    0
    Я могу предположить 2 варианта, когда разработчики написали каждый свою миграцию, и последовательность этих миграций может вызвать ошибку в логике кода, не вызывая ошибки в базе:
    1. Назначение на 1 поле разных дефолтных значений.
    2. Расширение значений 1 и того же поля типа enum.
    + 3. Изменение типа поля — тут совпадение почти невероятно.

    2-й случай скорее всего вызовет ошибку независимо от последовательности миграций, т.к. 1 разработчику надо дописать 1 значение, другому — другое. В данном случае последовательность миграций только повлияет на то, у какого пользователя код неверно отработает (у того, чья миграция была выполнена раньеш).

    По поводу первого случая — тут да — надо следить, но это довольно редкий случай и следить довольно просто — просто смотреть есть ли установка дефолтного значения, если есть то глянуть, к чему может привести.

    Если же скрипт будет пропускать миграции, то в случае с 2+ разработчиками придется всегда смотреть, все ли миграции в верной последовательности. В случае с 3+ разработчиками, насколько я представляю, приблизительно в каждом 3-м мерже придется переименовывать миграции для применения верной последовательности.
  • Простые миграции с PHPixie Migrate
    0
    Тут вы сами себе проблему делаете из-за «IF (NOT) EXISTS» — там, где надо выводить ошибку, втихую пропускаете выполнение скрипта.
    Да и опять же, с какой стати такая ситуация возникнет, что в одной ветке таблицу только создают — это ок, в другой только ее удаляют — эта ветка уже будет зависеть от предыдущей.
  • Простые миграции с PHPixie Migrate
    +1
    Да, именно так.
    В моих комментах выше подразумевается Laravel, насколько я понимаю аналогично с Yii.
    Как ниже ответил Zhuravljov, проблемы из-за разной последовательности случаются редко, да и их будет видно у мерджера локально при запуске миграций.
  • Простые миграции с PHPixie Migrate
    0
    Проблема в том, что для шага 2 добавляются следующие шаги для мержера:
    2.2. Смотрит, были ли файлы миграций в сливаемой ветке
    2.3. Если были, то смотрит, какие у них даты и сравнивает с последним числом в базе.
    2.4. Если последняя миграция свежее тех, что в ветке, то переименовывает файлы миграций из ветки, делает еще коммит в мастер с переименованием миграций.

    Только после этого выполняется шаг 3.
    Потенциально на этих шагах может возникнуть проблема, когда недосмотрел даты, что-то упустил, тогда именно на проде миграции не сработают и ой, хотя на тестовом все было ок.
  • Простые миграции с PHPixie Migrate
    0
    > А как вы апдейты делаете?
    1. Тестирование ветки на тестовом.
    2. При успешном тестировании мержер мержит ветку задачи в мастер локально.
    3. Выполняются миграции локально у мержера, если идут какие-то ошибки в локальных миграциях, то решается вопрос с разрабами или силами мержера.
    4. Если локально у мержера все ок в мастере, то результаты мержа выкладываются в репу, выливаются на прод, запускаются миграции (скрипт миграций всегда запускается автоматом при пуле мастера на проде, дальше скрипт сам решает есть что выполнять или нет).
  • Простые миграции с PHPixie Migrate
    +1
    > надо думать перед тем как мерджыть код в мастер

    А — накатываются все миграции, которых не было
    Б — накатываются миграции, которые свежее последней

    1. Человек не думает:
    А — обычно ничего не произойдет, максимум, миграция не сработает, т.к. будут конфликт из-за другой миграции (поле уже есть, такая таблица уже создана и т.п.)
    Б — код не работает, т.к. нет необходимых таблиц, полей и т.п.

    2. Человек подумал:
    А — запустил миграции, все ок
    Б — переименовал миграции в особом порядке, запустил, все ок.

    Итог — в случае Б вероятность все сломать, когда не думаешь выше, когда думаешь, надо выполнять лишние действия.
  • Не поставил favicon на сайте — получи двойной трафик от Chrome
    0

    Все-таки лучше не сразу отправлять на главную, а показать 404 и, если уж так надо, то добавить мета-тег c [http-equiv="refresh"], чтобы пользователя перекидывало на главную через несколько секунд (работает без JS):


    <meta http-equiv="refresh" content="3; URL=http://example.com/"> 
  • Вышел первый релиз-кандидат Laravel 5.3 RC1
    +1

    Стоит упомянуть, что релиз планируется выпустить на Laracon EU 2016 23-24 августа (хотя планы релиза у разработчиков меняются довольно часто).

  • Как называть css-классы
    0
    В пояснении к пункту:
    > Это упрощает чтение документа.
    Видимо, для автора так проще вычленить взглядом названия классов при беглом просмотре исходников.
  • Взлом вконтакте: украдены данные 171 миллиона пользователей
    0
    По-моему не очень хороший вариант для систем с такой нагрузкой. Также, насколько я понимаю, такой вариант не подразумевает добавление новой раскладки в систему с уже сохраненными паролями.
    Хотя ответ ниже про связывание клавиш в разных раскладках подходит.
  • Взлом вконтакте: украдены данные 171 миллиона пользователей
    0
    Как это сделать без plain текста, если это необходимо реализовать не только для пары раскладок русская-английская?
  • Галерея для ExtJS 6 с поддержкой touch событий
    0
    > Я пытался использовать swiper, но мне он не подошел по причине зависимостей
    А какие у него зависимости? У него есть версии как с зависимостью от jQuery, так и без нее.
  • «Письмо в студию»: 5 правил общения удалённых разработчиков от CSSSR
    0
    Не согласен., имхо «Привет» и какое-нибудь «пожалуйста» лучше все-таки написать вместе с вопросом.
    Вместе с вопросом конечно лучше написать. В статье речь шла о ситуации, когда человек пишет «Привет!», потом ждет ответа, потом пишет вопрос.
    У нас так часто происходил диалог в чате с менеджерами:

    Привет!
    Привет!
    Дальше минуты 2 в чате скайпа висит: Иван Петров печатает сообщение…