• В чем смысл PostCSS сегодня?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В последнее время началась мода на PostCSS - много постов, статей о нем.

    А почему бы и да? Любые инструменты надо пиарить что бы народ ими пользовался. Ибо народ будет пользоваться тем что на слуху (ну или тем с чем привык работать). Больше народа - больше идей, быстрее идет развитие, формируется комьюнити и поддерживать решение становится чуть проще. Да и приятно это когда твои наработки используют.

    Есть даже версия (не без оснований), что это - прародитель всех современных препроцессоров и веяний.

    Где ж это вы такое прочитали? postcss был попыткой решить проблемы, которые нельзя решить препроцессорами (или можно но долго).

    Окей, будем считать так, тем паче, что история коммитов на Гите это скорее подтверждает.

    Что именно подтверждает? сначала был Sass написанный рубистами что бы CSS можно было бы готовить так же нежно как они готовят HTML на HAML (кофескрипт туда же, рубистам хотелось сделать js похожим на ruby). И это заметте было в 2006-ом году! тогда и js был медленный, и V8 может только в планах был...

    Ведь все, что умеет PostCSS, умеют и препроцессоры

    postcss из коробки не умеет ровным счетом ничего. Он может только загрузить AST CSS файла и слепить из него обратно тот же CSS.

    И именно в этом сила postcss - модульность. Все существующие препроцессоры монолитны. То есть вы не можете просто так взять и добавить что-то свое туда. Да, в последних версиях less (и вроде как sass туда же подтягивается) у вас есть примитивный набор средств что бы вклиниться в процесс обработки AST документа и добавить какие-то примитивные вещи. Но это не удобно. Если вы хотите динамически менять проперти (например пересчитывать rem в em) или добавлять еще (опять же для того что бы руками не плодить в css кастыли для разных браузеров и делать это автоматом, на завязываясь ни на миксины и оставляя CSS чистым) свойств, но сделать это на less/sass сложно.

    Намного проще взять postcss и натравить это дело на результат работы препроцессоров.

    Давайте придумаем пример того, что можно легко и просто сделать при помощи пост процессоров и что сложно сделать с препроцессорами. Самое первое что приходит в голову - инлайнинг ресурсов. Например мелкие png-ки. Или работа с относительными путями, ресолвинг оных точнее. В этом случае мы с postcss напишем маленькую функцию, которая пробежится по всему абстрактному синтаксическому дереву и найдет использование url(). далее мы можем проверить размеры картинки и заинлайнить их (если у них размер достаточно маленький). Или собрать список всех задействованных картинок и использовать их потом (например что бы скопировать только то, что мы реально используем).

    Вот как-то так. А за счет того что мы имеем доступ целиком и полностью к формированию и обработке AST мы можем и синтаксис CSS развивать. Примерами могут служить многочисленные плагины аля cssnext и т.п. Можно даже большую часть фич sass в виде плагинов подключить.

    А самое забавное, что работает это все быстрее того же libsass на плюсах. За счет архитектуры (имею в виду не голый postcss а с набором плагинов добавляющих функциональность sass).
    Ответ написан
    Комментировать
  • Какой выбрать фреймворк для сайта аналога headhunter или habrahabr?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Стоит ли выбрать такой же?

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

    Мой вам совет - оставьте решение этого вопроса команде разработчиков вашего продукта.

    p.s. ни хабрахабр ни тостер не являются "сложными" сайтами как таковыми, это мультибложик и сервис вопросов/ответов. Вопрос в нагрузках, но со старта вы в любом случае таких нагрузок не получите.
    Ответ написан
    Комментировать
  • Как отследить изменение файла?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    inotify, есть для php и для js. Проще будет реализовать на js (socket-io, демон)
    Ответ написан
    Комментировать
  • Behat не загружает все файлы из features/bootstrap?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    приведенная вами цитата относится исключительно к автозагрузке. Какие контексты использовать - регламентируется в behat.yml.
    Ответ написан
    Комментировать
  • Знаете примеры красивого php-кода?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ответ написан
    Комментировать
  • Как познакомиться с PHP версии 5.6?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    php.net - официальная документация PHP весьма неплоха, там полностью покрываются все основы. Далее читаем книжки. Ну и все сопровождать практикой.
    Ответ написан
  • Организация структуры приложения java + mongo?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    шаблон Registry.

    p.s. Зачем вам монга то?
    Ответ написан
    1 комментарий
  • А расскажeте про promise и $resource?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    прочитайте нормальную стратью про промисы
    Ответ написан
    4 комментария
  • Что такое Postcss?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    когда есть sass?


    sass - фиксированный ПРЕ процессор, postcss - ПОСТ процессор, то есть он позволяет вам работать с AST CSS файла, расширять синтаксис, добавлять поведение по вашему вкусу и т.д. Простой пример того, зачем нужен postcss - autoprefixer

    Посмотрите презенташку Андрея Ситника (автор postcss) и вообще погуглите объяснений от него.
    https://www.youtube.com/watch?v=XJaJqLVaR-c
    Ответ написан
    3 комментария
  • Что лучше учить/использовать(SCSS/Stylus)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ту что популярнее (больше обсуждений, больше решений возможных проблем).
    Ответ написан
    Комментировать
  • Дизайн интерфейсов. Правда ли, что это перспектива в будущем?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ваши друзья программисты видимо не совсем понимают о чем говорят.
    Ответ написан
    2 комментария
  • Rust, написание chat сервера, как быть?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    откажитесь от идеи создавать по потоку на пользователя, это далеко не самый эффективный способ работы с I/O. Лучше вооружитесь event loop.

    https://nbaksalyar.github.io/2015/07/10/writing-ch...
    Ответ написан
    Комментировать
  • Что слышно про EmDrive?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    https://en.wikipedia.org/wiki/RF_resonant_cavity_t...

    протестили в вакууме, тягу генерит... с учетом того что у нас в нем отсутствует рабочее тело (а точнее в качестве оного судя по всему выступает микроволновое излучение) вообще ништяк, хорошая альтернатива ионному двигателю.
    Ответ написан
    Комментировать
  • Ребенок-Кодер или программист?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Мечтает же писать расширения в майнкрафт.)

    И это нормально для 8-ми лет, я помниться в программирование пришел потому что мне нравилось делать прикольные штуки в GTA (играть надоело в 13 лет где-то, было больше интересно что-то поменять, разобраться, добавить). Причем в WEB занесло как-то случайно и торчу тут уже 8 лет...

    Вопрос мотивации. Предлагайте ему задачки связанные с тем что ему нравится и тогда будет больший стимул разбираться. Тут книжки на алгоритмы могут спугнуть излишней скукой. У меня так в детстве любовь к музыке музыкальная школа отбила (ну в смысле желание развиваться как музыканта, музыку я всеравно люблю).
    Ответ написан
    2 комментария
  • Как правильно реализовать PHP парсер больших объемов информации?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Message Queue, лог обработанных страниц, демон который будет все это добро обрабатывать, скрипт который будет заносить задачи на обработку в очередь. Так же можно для гибкости вынести в отдельную очередь запись результатов в базу (или вообще хранить временно в redis каком). Тогда больше простора для масштабирования.
    Ответ написан
    23 комментария
  • Как узнать что передается именно JSON?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В качестве языка

    в качестве языка вы используете javascript. Feel the difference.

    то Node.js сразу вылетает не выдавая никаких ошибок.

    оно где-то внутри выкидывает исключение когда делает JSON.parse.

    строка именно в JSON формате?

    Заголовок Content-Type, но есть шанс что писать клиент может слабоумный который не будет верно выставлять этот заголовок, так что вам надо всеравно наладить обработку ошибок. Это только в PHP позволительно ничего не делать, и то только если придерживаться классической умирающей модели.
    Ответ написан
    Комментировать
  • Почему PDO::fetchAll() очищается после первого использования?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    объяснение проблемы - fetchAll забирает все данные до конца. Очевидно да? Что это значит на деле - когда мы выполняем запрос то база данных возвращает нам указатель на начало результата, у нас еще нет всего результата. Сделав fetchRow мы забираем первый результат, указатель переходит на следующую строчку и т.д. Потому то когда у нас уже нет результата мы получаем null.

    Вот и с fetchAll выходит так же. Второй раз не выйдет.

    p.s. пересмотрите свои взгляды на то, как вы работаете с данными. Используйте fetchAll один раз и реюзайте результат для чего вы там хотите странного.
    Ответ написан
    Комментировать
  • Использование DataTransformer в Symfony2?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    валится на преобразовании значения из объекта в строку, смотрите что у вас хранится в качестве значения startPlan
    Ответ написан
  • Вывод популярных записей на сайте за определенный срок, как?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ну значит надо еще агрегировать статистику по просмотрам за сутки. Самый простой вариант - завести лог просмотров, но тогда база быстро забьется всякой чухней. Далее мы можем оптимизировать это дело и просто раз в сутки ресетить счетчик просмотров в ноль и записывать сколько было просмотров за такую-то дату. Так у нас будет достоверная инфа для выборки.
    Ответ написан
    Комментировать
  • Как в socket_bind указать адрес, а не ip?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    мм... почитайте про URI, про сокеты и что все таки делает socket_bind. Тогда вопрос думаю отпадет сам собой.
    Ответ написан
    Комментировать