• Где и как предложить идею нового свойства CSS?

    @Flying
    Сергей Кореневский, Я прямо-таки очень против такой идеи.

    Давайте вспомним спецификацию HTML по поводу тега <a>:
    If the a element has an href attribute, then it represents a hyperlink (a hypertext anchor) labeled by its contents.

    и описание из MDN:
    The <a> HTML element (or anchor element), with its href attribute, creates a hyperlink to web pages, files, email addresses, locations in the same page, or anything else a URL can address.

    Ключевым элементом здесь является то, что атрибут href является URL, см. RFC 3986.

    В вашем случае синтаксис значения атрибута href не является URL и не используется для навигации, т.е. нарушает саму суть использованного тега <a>.

    Ваш пример в п.2 буквально вынуждает все сервера в интернете обрабатывать подобный синтаксис с тем, чтобы он отражал изменение состояния форм. Т.е. вы создаёте расширение базового и очень общего протокола для решения какой-то микроскопической частной задачи, что просто недопустимо.

    В разделе II (про _before и _after) вы сами себе противоречите:
    The new idea is that a new magic value could be used for the and tags of the TARGET attribute. target="_after", target="_before"

    и затем в примере:
    <input type=hidden value=0 name=pcs[]> 
    <a href=@_after=1> </a> 
    <a href=@_after=2> </a>


    В общем, подводя итог, вы создаёте новый синтаксис там, где его стоит вводить крайне осторожно, потому что URL - основная схема формирования навигации в интернете. Для того чтобы это заработало нужно чтобы весь интернет во всём своём многообразии принял и поддержал это изменение. Но поскольку оно вводится для решения частного случая (интернет - это далеко не только HTTP протокол и тем более далеко не только HTML) - это предложение безусловно обречено на провал.
  • Почему sort не работает по буквам?

    @Flying
    rd100, Вот запуск вашего кода в Firefox:
    618a57ec67378536496916.png
    а вот в Chrome действительно исходный массив.
    Но WbICHA прав, у вас некорректная функция сортировки
  • Почему sort не работает по буквам?

    @Flying
    Так ведь работает же? Просто у вас порядок сортировки обратный
  • Возможно ли использовать Dart в качестве устойчивой альтернативы JavaScript?

    @Flying
    whojoannaami, Я уверен что технически Dart можно использовать везде, где используется JavaScript. Но Google, создатели Dart, позиционируют его в первую очередь как язык для написания мобильных приложений, поскольку именно на нём пишутся приложения для очень популярного Flutter, также созданного Google. Поэтому (это теория т.к. я сам не работал с Dart) скорее всего tooling и экосистема вокруг Dart также biased (да простят мне англицизм) в сторону применения в связке с Flutter нежели для чего-то ещё.

    Одновременно с этим TypeScript изначально позиционировал себя как "JavaScript + сильная типизация" и позже, с добавлением поддержки JSX, ещё больше укрепил своё восприятие как язык для написания web приложений (backend и frontend). Если посмотреть на экосистему вокруг TypeScript (к примеру те же trending репозитории GitHub) - то как раз там в основном будут именно web related проекты.

    Таким образом предпочтительность использования TypeScript вместо Dart в контексте web скорее всего обусловлена community нежели техническими особенностями языка.
  • Возможно ли использовать Dart в качестве устойчивой альтернативы JavaScript?

    @Flying
    В целом, думаю, можно посмотреть на примеры репозиториев проектов на Dart, благо такая функция есть на GitHub, чтобы понять что на нём обычно пишут. На слуху как минимум Flutter и Sass. Применения именно во frontend я лично не встречал, но ничего невозможного в этом не вижу.

    Если нужны ООП и типизация в контексте frontend'а, то почему не TypeScript? Думаю что это первая ассоциация у frontend разработчика при упоминании ООП и типизации.
  • Особенности по миграциям в Symfony?

    @Flying
    P747, Не обязательно, лучше привязывать миграции к законченным функциональным изменениям, а они могут затрагивать и несколько таблиц. Можете думать о миграциях как о коммитах для структуры базы данных.
  • Почему не работает Gulp?

    @Flying
    M1miK23, Вы и сами можете посмотреть, ваш же package.json:
    "gulp-sass": "^4.1.1",
    Обновляйте на актуальную версию и всё должно заработать. Да, и используйте иконку ">" на тулбаре для вставки кода чтобы не убивалось форматирование.
  • Почему не работает Gulp?

    @Flying
    Не публикуйте обновления в виде ответа, вместо этого нужно отредактировать вопрос
  • Firefox по истечении ~1часа сьедает всю доступную ОЗУ?

    @Flying
    Василий Васильев, Очень странно, я довольно интенсивно использую dev.tools и подобного не наблюдаю... Но можно попробовать написать bugreport, приложив отчёты по памяти (из about:memory), снятые до и после сессии отладки, вдруг что-то найдут
  • Firefox по истечении ~1часа сьедает всю доступную ОЗУ?

    @Flying
    Василий Васильев, Да, dev.tools может сильно выедать память например если идёт мониторинг консоли или http с сохранением лога, закрытие и повторное открытие спасают. В целом у Firefox после перехода на quantum на редкость хороша работа с памятью, даже если что-то подтекает - освобождение ресурсов происходит довольно оперативно и корректно после, к примеру, перезапуска расширения или перезагрузки вкладки.
  • В каких случаях следует делать кастомные Exceptions?

    @Flying
    Роми, Нет, аналогия с хуками здесь не подходит.

    Exception по своему определению - это механизм прерывания потока выполнения программы и "экстренное всплытие" по стеку вызовов. Хуки же - возможность врезать свою логику в какое-то определённое место программы, но они не меняют поток выполнения и уж точно не вызывают всплытия по стеку, если конечно там внутри не кинуть тот же exception.

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

    Возьмём, к примеру, набор exceptions для Symfony Mailer.

    Там есть например TransportException и InvalidArgumentException.

    Очевидно, что в случае TransportException само письмо может быть отправлено, просто это не получилось сделать вот прямо сейчас. А в случае InvalidArgumentException видимо что-то не так в нашем коде и попытка отправить это же письмо ещё раз, очевидно, будет провальной.

    Поэтому в данном случае раздельная обработка этих исключений позволит улучшить работу приложения:
    try {
        // пытаемся отправить письмо
    } catch (TransportException $e) {
        // откладываем отправку письма на попозже
    } catch (InvalidArgumentException $e) {
        // что-то не так, пишем в логи и прерываем попытки выслать письмо
    }


    Довольно логично что это лучше, чем единообразная обработка.
  • Где и как предложить идею нового свойства CSS?

    @Flying
    Сергей Кореневский, Подписался на issue, посмотрим что скажут.

    Но я очень сомневаюсь что человек, являющийся членом организации по стандартизации CSS (@tabatkins) мыслит table макетами, просто не всегда детали понятны только из описания, без примеров.
  • Где и как предложить идею нового свойства CSS?

    @Flying
    Сергей Кореневский, Попробуйте обязательно, конечно. Если получится - обязательно напишите здесь :)

    И, раз уж истории, поделюсь своей: почти всегда, когда я слышу о чём-то связанном с IT в контексте "да это же так просто" я предлагаю вспомнить простоту и тривиальность главной страницы Google.

    Основная сложность, как вы вероятно понимаете - не в том, чтобы реализовать свойства как таковые. Основная сложность - в непротиворечивости механизма. Сейчас CSS насчитывает несколько сотен стилей. Совместно со стилями grid'а, о которых вы пишете можно использовать, думаю, пару десятков таких, которые будут влиять на механизм работы и об этом нужно помнить.

    Кроме того, важно не забывать о performance considerations из-за которых, к примеру, в CSS не работает :nth-of-type() с другими селекторами кроме тега, а также parent selector, который я упоминал ранее.
  • Почему на одних сервисах просят сначала email, а потом пароль, а на других сразу оба?

    @Flying
    MaxKozlov, Я писал об этом в ответе: в случае Google это как раз оправдано, поскольку у него разная логика в случае логинов в GMail и, к примеру, корпоративные аккаунты, а форма одна и та же.
  • Как избежать PHP Notice: Undefined offset?

    @Flying
    Александр, Весьма спорная статья. Я категорически согласен с комментариями от Miguel Cudaihl и, особенно от Andrew Ackerman.

    Option pattern, не упоминающийся в статье - хороший вариант, но нативной его поддержки в PHP нет, хотя несложно сделать самому но это в целом усложняет проверку, а с учётом отсутствия в PHP дженериков - ещё и приводит к потере информации о типах без применения статических анализаторов.
  • Как избежать PHP Notice: Undefined offset?

    @Flying
    Александр, Спасибо, я в курсе, не первый год занимаюсь программированием :) Но речь, напомню, была о null, есть такая же ссылка про null?
  • Как избежать PHP Notice: Undefined offset?

    @Flying
    Александр, А почему это плохо? :) Может создателям PHP напишете, а то они не в курсе...
  • Как избежать PHP Notice: Undefined offset?

    @Flying
    Vitsliputsli, Забавно, вы только что открыли мне глаза на то, что isset() нормально обрабатывает глубокие вложенности. Спасибо! Даже интересно почему я это пропустил в своё время...

    Александр, Не согласен, иначе зачем null существует? Зачем существуют nullable типы? Если кто-то пренебрегает корректностью типов - то это не значит что не стоит пользоваться возможностями языка, скорее это повод для обучения такого человека или применения каких-то организационных мер в отношении него.

    Кроме того, если говорить о современном PHP, а не о временах PHP 4 и 5 - то задача решается просто требованием везде формально определять типы аргументов и возвращаемых значений. Кроме того никто не мешает использовать статические анализаторы и определять типы, которые нельзя описать на уровне языка, через PHPDoc. В этом случае при забытой проверке вы получите либо сообщение от статического анализатора на этапе проверки либо TypeError (и связанный с ним stacktrace) в runtime. Ну и IDE очень хорошо проверяют это, тот же PHPStorm.