Ответы пользователя по тегу CSS
  • Как вы боретесь с удалением папок node_modules в Windows?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Тема в интернетах давно и широко освещаема, народ давно прикурил, что не все так просто, как кажется на первый взгляд, и нет "серебряной пули".

    `RimRaf` - хорошо, но не очень: использовать можно либо из скрипта, либо вручную на каждый проект, т.е. перед массовым бэкапом можно использовать лишь в составе некое "подготовительного" инструмента. И таки да - есть проблемы на разных конкретных конфигурациях. "Platform independence" не получился. По сути тех же результатов можно получить делая `rm -rf node_modules` в оболочке `bash` или `rmdir /S node_modules` в `cmd`, причем `rmdir` в большинстве случаев не вспомнит про длину строки, даже если для этого есть поводы.

    `npm dedupe` - тоже очень хорошо, но также не очень. Это неплохо делать в каждом проекте после `install` или после каждого изменения зависимостей. В противном случае перекур на сутки - просто гарантирован.

    1.

    Если доступна оболочка Bash на основе CygWin (если пользуетесь Git, скорее всего она - оболочка баша - есть, но не факт) решение, которое лежит на поверхности:

    find . -name "node_modules" -exec rm -rf '{}' +

    плюсик в конце - так надо: автоматом подтаскивает завершение (перевод) строки, можно заменить на \;

    Попадался и такой вариант:

    #!/bin/bash
    
    delete-all-dep-folders() {
      # `-prune` prevents building up lists of `node_modules` inside `node_modules`
      find ${1:-.} -type d -name "node_modules" -prune -exec rm -rf '{}' \; -exec echo 'Deleted {}' \;
      find ${1:-.} -type d -name "bower_components" -prune -exec rm -rf '{}' \; -exec echo 'Deleted {}' \;
    }


    После запуска скрипта (можно просто скопипастить в окошко баша) можно без параметров запустить команду `delete-all-dep-folders` в нужной папке или первым параметром задать путь:

    $ delete-all-dep-folders /path/to/project-root

    Напомню: если `bash` под cygwin, только тогда ему плевать на длину пути. Насколько это так, вы должны знать сами - где и какую версию Гита/Баша вы брали, там и надо читать: в интернетах найдется куча версий баша, скомпилированных с использованием нативных библиотек Windows, которые не используют cygwin!!!

    2.

    PowerShell. Якобы та самая "серебрянная пуля" от МелкоСофт. Вроде бы, плевать он хотел на длину пути. Якобы.

    Если видели в документациях/интернатах другое - не спешите опровергать: с виндами никогда ничего не бывает однозначно, у нее (Винды), как у любой нормальной женщины, в словаре бинарной логики (либо "да", либо "нет") есть еще и значения "может быть", "не знаю" и "это не я".

    Вариант:

    Get-ChildItem -Path "." -Include "node_modules" -Recurse -File:$false  | Get-ChildItem -Recurse | Remove-Item -Recurse  -Force


    Вполне рабочий, НО версия PowerShell >4.0. Более старые версии даже с ключом `-Force` не могут удалить НЕпустые папки.

    Уточню: несмотря на то, что Remove-Item (он же del, он же ...) имеет возможность обозначать фильтры и работать рекурсивно, тем не менее необходимость конвейера (знак палки между командами) все-таки есть, и на эти грабли наступало уже очень много народу еще до того, как на ms-tech и в документации была признано и отмечено, что таки да, проблема есть и в качестве решения предлагается использовать конвейер, т.е. – через палку надо делать, и не делать тупо Delete.

    И таки да, я нарвался на случай, когда это не сработало - на USB диске (NTFS) лежал старый проект на `Meteor`. Актуальности никакой, для истории тоже не находка, но он единственный усиленно сопротивлялся 4 с лишним часа. После чего мне надоело доискиваться причин такой стойкости и старый (честно купленный еще в прошлом веке) добрый Total Commander справился со всем проектом полностью за 1.897s.

    3.

    Победитель конкурса - Total Commander с настройками дисковых операций с помощью собственных (НЕ системных) функций. Не верьте документации: Windows, начиная с Vista, выполняет при дисковых операциях значительно больше "левых" действий для красоты, чем Commander, посему операции "его" функциями выполняются быстрее, чем "её" функциями. Совсем хорошо, если отключить в командере поддержку файлов описаний содержимого каталогов. Также, когда-то давно, мне попадался на глаза подключаемый модуль для командера, который заменял/дополнял поиск файлов на другой, в котором используется другая библиотека для работы с регулярными выражениями и дисковые операции можно выполнять сразу над результатами поиска без перекладывания во временную панель.

    4.

    Или мы не программисты? Пишем свой велосипед по рекурсивному обходу каталогов и `rimraf`-им чего надо. При этом не забываем положить сей золотой ключик отдельно, чтобы мимоходом не прибить его зависимости, и делаем для него консольный вызов. Успешно выкладываем в NPM и собираем звезды на Гитхабе. Дерзайте, а я настоящий программист, мне - лень, когда все просто и понятно :)
    Ответ написан
    Комментировать
  • Как сделать динамический размер фотографий в блоке?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Ответ написан
    Комментировать
  • Как сохранять дату с сайта в календарь?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Примерно так:
    <a href="cal:2017-03-23">23 марта</a>

    23 марта

    Если установлен софт, который работает с календарями и в браузере этот софт привязан к обработчику таких урлов, то будет запускаться. По идее Outlook при установке калечит все префиксы во всех найденых браузерах, в Сафаре на МакОСи и иОСе такие ссылки изначально привязаны к стандартному календарю, но могут быть изменены при установке другого софта. В большинстве случаев на Виндах и Линуксах этот префикс в браузерах не задействован и большинство браузеров спросят человека - "Чего запустить изволите?"

    * разный софт по-разному обрабатывает значения ссылок
    * обработчиком этих ссылок в браузере может быть назначен какой-нибудь сайт, например "Гуглокалендарь", все зависит от настроек браузера на клиентской машине
    * на Андроидах/Айфонах тоже работает, и тоже зависит от настроек
    * что и как сработает - нужно читать отдельно, единого стандарта нет.
    Ответ написан
    Комментировать
  • Как с помощью jquery отсортировать блоки в нужном порядке при изменении размера экрана?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Там где flex недоступен, нужно именно javascript'ом.
    Например с помощью вот такой штуки vnjs.net/www/project/freewall
    Ответ написан
    Комментировать
  • Как урезать свой перфекционизм?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    Столько комментариев не видел ни в одном ответе.
    Сразу напрашивается вывод о соотношении урезанного перфекционизма к профессионализму.

    Сам прокристинатор со стажем, поэтому не буду давать советы, а приведу цитаты:
    Кот ежедневно вылизывает свое хозяйство, а профи сразу делает хорошо. Если сделано нехорошо, значит не профи, возможно, опыт этого проекта сделает тебя профи на следующем проекте. (старый препод по проектированию микропроцессоров, никогда не знал его фамилию)
    Опыт сын ошибок трудных, а гений - парадоксов друг. (А.Пушкин)
    Лучшее - враг хорошего, давно сказано (народная мудрость)
    А хорошее всегда полезно (т.е. работает) - давно замечено, нужное всегда просто, непростое - не нужно. (Михаил Калашников). И того же источника: простое сделать всегда сложнее, а сложное сделать гораздо проще.
    Профессионала отличает выбор инструмента и отношение к нему. (А. Макаренко)
    Правильно организованный процесс - хороший повод для успеха. (Генри Форд) и того же источника самую знаменитую фразу про цвет автомобиля переделаем: Рефакторинг может быть любой величины, главное, чтобы это был 0.
    Хорошее дело браком не назовут (немного не в тему, но в нашем случае - подойдет)

    В основном согласен с остальными специалистами по перфекционизму и прокристинации: главное следование цели в установленные сроки. Это наука, а как это сделать - уже исскуство, для которого нужны воля и талант. :)

    Успехов всем и не вешать нос!
    Ответ написан
    2 комментария
  • Оптимизация верстки и что актуально на средину 2015 года?

    SynCap
    @SynCap
    Делаю интернет с 1998 года
    1. caniuse.com/#search=box-sizing, а потом, как самому удобнее, и если действительно надо. В принципе 15 лет назад вопроса не возникало - верстали таблицами :)
    2. опять смотрим canisue сначала, а потом думаем. Вообще-то хороший верстальщик задает размер базового шрифта в pt (не px!), а все остальные размеры ставит в em и %. И только в крайнем случае (картинки, svg, подгонка общей ширины, canvas для графиков с точной математикой) –px.
      rem, конечно, более удобная и понятная единица, но будем подождать, также как и vh, vw, vmax, vmin - очень заманчивые штуки, особенно для мобилок и планшетов, но... caniuse.com
    3. Обязательно!!! Городушки в стиле Бутстрап оправданы лишь отчасти, нужно стремиться к семантическому коду, страница должна нормально читаться с отключенными стилями, легко конвертиться в другие форматы, легко разбираться сторонними скриптами на стороне браузера (плагинами) и т.п. Это также важно и для СЕО - и Гугл, и Яндекс больше любят чистый код! А про хай-лоад вообще молчу. Ну, а если речь зайдет об одностраничниках и т.п. - тут вообще ясность превыше всего.

    4. какая, хрен, разница, если в серьезном проекте код CSS минифицируется? В большом проекте действительно имеет смысл смотреть какие свойства в каком виде быстрее обрабатываются браузером и если в stylesheet пара миллионов правил, то обязательно нужно минификатору указывать - какие свойства объединять в одно правило, а какие оставлять как есть. А для себя: LESS, SCSS, css-comb. В принципе основное правило уже лет 15 как никто не отменял: если ставишь сразу несколько параметров (например, при инициализации базовых шрифтов), то - сокращенный, если меняешь один-два параметра - то отдельно. Что тут обсуждать?

    5. разница есть, и существенная: в большинстве браузеров стили применяются именно в том порядке, в каком указаны, и если стили имеют свойства со взаимоисключающими значениями - то применено бедет то правило, что указано в стиле стоящем последним!!!



    Вообще-то Ваш вопрос из разряда - "чем арбуз лучше дыни" или "что вкуснее - колбаса или конфеты" :)
    Ответ написан
    Комментировать