• Как правильно стилизовать сторонние компоненты в Vue.js?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Ответ: по ситуации. :)

    В идеальном мире: сторонние компоненты должны поддерживать всю возможную стилизацию стандартизированным образом: либо через props, либо (реже и хуже) через документированные классы разрешённые к изменению сверху. В ином случае всегда будет оставаться шанс, что всё развалится при обновлении компонента.

    Теперь собственно к нашему, катящемуся в бездну, миру: да, смотреть шаблон компонента и менять стили через :deep или глобально. Обязательно писать к этому тесты, чтобы отвал после какого-то обновления не пролез незаметно на прод.
    Если править классы становится слишком сложно, то форкать к себе, и править как хочешь. Также можно форкнуть если компонент простой.

    Обратно к идеальному миру: при желании можно попробовать пропихнуть пул реквест автору оригинального компонента, поддерживающий нужную кастомизацию(естественно в универсальном и удобном виде).
    Ответ написан
    Комментировать
  • Использование Wordpress как бекенда для генерации статических страниц?

    @AlXan
    Матчасть: https://developer.wordpress.org/rest-api/. Рассказы https://vc.ru/dev/106575-kak-ispolzovat-wordpress-..., https://kinsta.com/blog/headless-wordpress/ и тп. Но всё это. фигня.

    Лучше сделать мультисайт и не морочить голову и не искать приключений на пятую точку.
    Ответ написан
    1 комментарий
  • Чем заменить установку переменных окружения Apache?

    @dodo512
    На nginx для каждой папки нужен будет отдельный location ~ \.php со своим набором fastcgi_param
    Например
    fastcgi_param APP_SETTINGS   app-settings-12;
    fastcgi_param API_ENDPOINT   app-endpoint-outer;
    fastcgi_param USE_SHOTLINKS  false;


    Другой вариант с помощью auto_prepend_file подключать во все файлы свой скрипт который будет ставить нужные значения переменных.
    fastcgi_param PHP_VALUE      auto_prepend_file=$document_root/file.php;
    Ответ написан
    Комментировать
  • Чем заменить установку переменных окружения Apache?

    Lynn
    @Lynn
    nginx, js, css
    Третий вариант, задавать переменные через map

    map $uri $APP_SETTINGS {
      default "";
      ~^/path1/ app-settings-12;
      ~^/path2/ app-settings-100500;
    }
    
    server {
      location ~\.php$ {
        fastcgi_pass ...;
        fastcgi_param APP_SETTINGS $APP_SETTINGS if_not_empty;
        ...
      }
    }
    Ответ написан
    Комментировать
  • Нужна простая админ-панель для сайта. Какую выбрать?

    anatoly_kulikov
    @anatoly_kulikov
    Помог ответ? Отметь решением!
    Wordpress
    Ответ написан
    Комментировать
  • Как интегрировать существующий блог на Wordpres в веб приложение на Nuxt.js?

    neuotq
    @neuotq
    Прокрастинация
    У вас два варианта.
    1. Использлвовать REST API от вордпресса, плюс есть различные тематические плагины отдельно и API эндпоинты у разных популярных крупных плагинов.
    2. Если на одном сервере и тп, делать прямые запросы к БД в самом NUXT допустим через Prisma
    Ответ написан
    1 комментарий
  • Как интегрировать существующий блог на Wordpres в веб приложение на Nuxt.js?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Веб-разработка
    В настройках nginx location /blog проксировать не на Nuxt, а на Wordpress.
    Ответ написан
    3 комментария
  • Насколько целесообразно разбиение на функции и классы?

    vabka
    @vabka
    Токсичный шарпист
    Автор этого добра заявляет, что это абсолютно нормальная практика - выносить каждые пару строк в отдельную функцию.
    Нормальная ли?

    Только ситхи возводят всё в абсолют. Без кода нельзя сказать, норма или нет.
    В принципе - если эти функции так хорошо делятся, то почему бы и нет?

    1000 строк кода на 3 класса - это не очень много. Это всего 300 строк на класс.
    75 функций - это получается в среднем около 10-15 строк на функцию, что в принципе тоже ок.

    По вашим словам больше ничего объективно сказать нельзя.
    Ответ написан
    2 комментария
  • Насколько целесообразно разбиение на функции и классы?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это нормально.
    Ну то есть про конкретный код нельзя сказать, не видя его, но " выносить каждые пару строк в отдельную функцию" - это нормально. Куда нормальнее, чем писать всю тысячу в одной.

    Рекомендую найти видео "Как писать код, который понравится вашим тестам" с первой PHPRussia. Там очень доходчиво рассказывается про то, почему надо делать простые методы. Не только для тестов. А ещё и для повторного использования и для упрощения поддержки кода. Когда надо прочитать основную логику модуля, то даже сокращение в два раза (по одному методу вместо двух строк кода) уже сильно облегчает задачу.
    А если уж даже тест понял, что делает ваш код, то человек поймёт и подавно :)

    Как вам написали выше - все дело в именах методов. Если они информативные, то есть если конструкция
    if ($this->function_7($a) && $this->function_8($b))
    читается как связный английскй текст, то mission accomplished! Функции выполняют свою роль: легче всего читать код, которого нет. Вместо того, чтобы разбирать, что делает тот или иной код, можно просто прочитать небольшой текст на английском.
    Ответ написан
    4 комментария
  • Помнить всё: как вы справляетесь с запоминанием и сохранением информации в памяти?

    moonz
    @moonz
    web developer | seo | design
    Лично я использую Notion, он быстрый и простой. Там можно хранить всё. От фрагментов кода, до кусков веб страниц.

    Для тренировки интервальной памяти, есть Anki. Кроссплатформенность и удобство + бесплатно
    Ответ написан
    Комментировать
  • Помнить всё: как вы справляетесь с запоминанием и сохранением информации в памяти?

    opium
    @opium
    Просто люблю качественно работать
    Судя по описанию вы много лет программите хорошо зарабатываете прибедняетесь что Джун и у вас просто осенняя хандра
    Возьмите хорошую девку или жену и сгоняйте в солнечную страну в отпуск пару недель на ярком солнце вас вернуть в строй
    Ответ написан
    2 комментария
  • Помнить всё: как вы справляетесь с запоминанием и сохранением информации в памяти?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Всё запоминать не нужно. А то, что нужно откладывается практикой плюс немного теории
    Ответ написан
    Комментировать
  • Помнить всё: как вы справляетесь с запоминанием и сохранением информации в памяти?

    DevMan
    @DevMan
    да никак не справляюсь, всё самотёком.
    да, что-то подзабываешь, но оно все равно сидит где-то в подкорке. и когда начинаешь читать/гуглить, оно всплывает.

    по крайней мере у меня так. естественно, речь о том, что уже знал.
    Ответ написан
    4 комментария
  • Как понять когда ставить указатель?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Указатель, по сути, хранит адрес каких то данных (переменной, структуры, слайса и т.д.).
    Иными словами он "указывает" на область данных.

    Чтобы понять как им пользоваться - сначала нужно понять для чего он вообще используется.
    Представьте что у вас есть структура, которая содержит много разных полей, в которых содержится большой объём данных.

    Например:
    type BigStruct struct {
        field1 int
        filed2 string
        field3 uint
        field4 []byte
        ...
        field50 string
    }

    Предположим, что после создания этой структуры и заполнения всех её полей она занимает в памяти 300мб.

    Если вы сделаете функцию, которая будет принимать такую структуру как агрумент, например вот так
    func Report(s BigStruct)
    то при каждом вызове этой функции вся структура (300мб) каждый раз будут копироваться.
    Пример:
    s := BigStruct{}
    // заполняем поля
    Report(s)


    Чтобы избежать такой мега нагрузки - можно передавать не копию данных, а указатель, т.е. адрес в памяти, где хранится сама структура.
    Для этого нужно объявить агрумент функции как указатель, т.е. ставим *.
    func Report(s *BigStruct)
    А код уже будет выглядеть вот так.
    s := BigStruct{}
    // заполняем поля
    Report(&s) // тут добавился & - берём адрес структуры, а не саму структуру

    Или второй вариант
    // создаём переменную s сразу с типом указатель на BigStruct
    s := &BigStruct{}
    // заполняем поля
    Report(s) // поскольку s уже является указателем - & тут не нужен


    В общем * используется:
    - когда нужно объявить переменную
    var s *BigStruct
    - когда нужно прочитать/записать значение, которое храниться по адресу указателя
    var i *int
        i = new(int)
        *i = 10 // пишем значение
    
        fmt.Printf("i: %v\n", i)
        fmt.Printf("*i: %v\n", *i)

    Вывод будет примерно таким
    i: 0xc0000160d8 (это адрес памяти, где лежит значение переменной i)
    *i: 10 (а это её значение)


    & (амперсанд) используется когда нужно получить адрес переменный.

    Еще один вариант применения - если нужно иметь возможность модифицировать данные у параметра функции. Если нужны примеры - дайте знать, я напишу.
    Ответ написан
    12 комментариев
  • Как правильно передать данные с сервера в SPA, не прибегая к реализации API?

    @Kostik_1993
    Web Developer
    let appFrontData = '<?=$someServerVarHere ?>';

    Гы! А вы думали что в идеальном варианте должны быть единорожки вместо этого?) Три варианта у вас есть и не более.

    1) Глобальная переменная. Кстати если вы посмотрите реализацию Nuxt.js/Next.js фреймворков, там как раз используется этот как единственный возможный.
    2) Передача в компонент через props
    <ComponentName :data='<?=$someServerVarHere ?>'/>
    3) Загрузка из компонена

    Других вариантов не существует
    Ответ написан
    4 комментария
  • Как правильно передать данные с сервера в SPA, не прибегая к реализации API?

    Kozack
    @Kozack Куратор тега Vue.js
    Thinking about a11y
    "Правильного" ответа тут не будет. Многое зависит от вашего конкретного случая, от того как построен Бекенд.
    Второй вариант выглядит предпочтительнее, если говорить про концепцию SPA. Один из плюсов такой архитектуры в том, что логика работы и данные разделены. То есть всю реализацию (html/css/js) можно один раз отдать на клиент и кэшировать там на максимально длинный срок. И подгружать только недостающие данные для отображения. (И axios вам вероятно даже не нужен).
    С другой стороны, если речь идёт про какой-то сравнительно небольшой элемент который может и не понадобится пользователю, тогда, скорее всего это будет излишне.

    Вот вам совет: вынесите логику загрузки данных в отдельный модуль. Спрячьте за условной функцией loadData(). Чтобы вы в любой момент могли изменить способ загрузки. Это может быть как сетевой запрос
    function loadData() {
      return fetch(' ... ')
    }

    Или заранее вставленные данные
    function loadData() {
      return document.querySelector('#json-data').textContent
    }
    Ответ написан
    2 комментария
  • Как правильно внедрять БЭМ?

    @AlexS94
    Попытаюсь ответить вам по пунктам, так как сам в своё время задавался теми же вопросами.

    1. Если говорить об удобстве - читаемость хромает, но на прямую в разрез с методологией это не идёт. Если существует "оБЭМленый" Bootstrap и он ничем не уступает - используйте. Это по-настоящему продуманная и современная библиотека компонентов, соответствующая стандартам доступности. Отдельных соглашений на такие случаи не знаю.

    Для себя решил отказаться от Bootstrap, чтобы глаз нервно не дёргался, при взгляде на "винегрет" из разных именований. Компенсирую это разработкой библиотеки собственных компонентов, руководствуясь тем же Bootstrap и лучшими практиками.

    2. Касательно использования em: рекомендую ознакомиться с этой статьёй
    Пришло время попрощаться с единицей измерения px
    Для блоков отдельно назначать font-size в px не нужно. Попробуйте правильно использовать rem, взяв за константу, что он должен быть по умолчанию 16px. Если нужно будет - отвечу подробнее.

    Лично я использую em в медиа-выражениях и в случае крайней необходимости в блоках.

    3. В случае чистого БЭМ - создайте блок с одним шрифтом и другим и используйте его как микс.

    4. Если честно, стараться использовать готовые решения CMS можно, но я бы не рекомендовал. Когда работал с WP, всё время кастомизировал классы и вывод шаблона. На Битрикс с этим проще, можно даже собственный класс назначить для WISYWIG редактора.
    Вопрос в том можете ли вы себе позволить такую кастомизацию или нет. Если это требует сверх ресурсов - оно того не стоит.

    5. Я использую альтернативное именование, которое прижилось лучше всего в англоговорящих странах .block__element--modifier. На мой взгляд оно читаемее.

    Вообще для расширения "БЭМ кругозора" рекомендую ознакомиться с этими статьями
    More Transparent UI Code with Namespaces
    Battling BEM CSS: 10 Common Problems And How To Av...

    Я в своей работе на данный момент использую расширенный БЭМ, так называемый BEMIT (BEM + ITCSS). Для обычных сайтов - этого хватает с головой, в случае современного реактивного фронтенда требует обсуждения с командой и более глубоко понимания в проектировании АНБ (абсолютно независимый блок).

    Надеюсь, что смог вам помочь, так как сам на решение этих вопрос вопросов потратил продолжительное время.
    Ответ написан
    5 комментариев
  • Как правильно внедрять БЭМ?

    profesor08
    @profesor08
    Ну вот, желание использовать БЭМ, породило кучу проблем. Нет БЭМ - нет проблем!

    Используй styled-components или модульные стили. Если нет возможности, то используй scss, там нет проблем, которые навязывает БЭМ и героически решает. Если используешь чистый CSS, то не используй, а используй scss.
    Ответ написан
  • Что выбрать для хостинга сайтов и веб-приложений с бекендом на AWS?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Я бы переформулировал Иван Шумов: Если у тебя нет опыта настройки именно AWS сервисов - лучше за AWS не браться. Если ты конечно не готов потратить время на изучение.
    Лучше всего взять хетцнер или другую VPS где для вас всю инфраструктуру настроит хостер
    AWS этого делать за вас просто не будет и любой косяк в настройке обойдется вам в дополнительные траты
    AWS берет деньги за каждый чих. Часта ситуация когда вследствие неверной настройки ваши деньги вылетают в трубу. Поэтому бытует мнение что AWS - дорого.
    Ответ написан
    Комментировать
  • Что выбрать для хостинга сайтов и веб-приложений с бекендом на AWS?

    inoise
    @inoise Куратор тега Amazon Web Services
    Solution Architect, AWS Certified, Serverless
    Первое правило AWS - если у тебя нет многолетнего опыта в настройке сетей и виртуалок - проходим мимо. Возьми Digital Ocean и не парься.

    Lightsail обеспечивает упрощенное развертывание EC2, не более. EC2 это сервис запуска виртуальных машин
    Ответ написан
    Комментировать