• Насколько удобно Docker интегрирован в PhpStorm?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Можно призвать make
    Особенно когда нужно группировать несколько команд

    Вот пример, к сожалению чужой, у меня до Докера пока руки не доходят как следует взяться, Вагрант пока все покрывает
    Пример Makefile
    Работает в линуксах так: make {command}

    А тут посмотрите сколько команд выполняет make init :)
    Ответ написан
    2 комментария
  • Vue.js + Wordpress?

    boratsagdiev
    @boratsagdiev
    Чтобы совместить эти две вещи, вам не нужны шаблоны Wordpress. Как я вижу разработку с этими двумя:

    - WP отдаёт в rest API нужные данные (он это умеет по умолчанию, вроде только нужно поставить плагин чтобы включить). Это ваш бэкенд.
    - На VueJS вы пишете весь фронтенд - то есть вся вёрстка шаблона находится именно во vue-файлах, так же как и вся логика по получению постов, категорий, комментариев и прочего из бэкенда WP.
    Ответ написан
    1 комментарий
  • Можно ли запустить Windows приложение в Linux Docker container?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    ну читайте же внимательнее )
    You can run Windows-based containers on Windows Server 2016 and Windows 10. Windows-based containers require a Windows kernel to run, in the same way that Linux-based containers require a Linux kernel to run. You can even run Windows-based containers on a Windows virtual machine running on an macOS or Linux host. Docker Machine is not necessary if you run macOS 10.10.3 Yosemite, Windows Server 2016, or Windows 10.

    https://docs.docker.com/engine/faq/
    Ответ написан
    2 комментария
  • Как использовать одну базу данных для нескольких сайтов, запущенных в Docker?

    @qq1
    Мой вопрос: можно ли текущую конфигурацию переработать так, чтобы при определённых переменных в .env (например, при DB_HOST не равном db), сервис db не запускался?

    Правильнее тут сделать отдельный docker-compose.prod.yml в котором не будет db сервиса.
    И как в таком случае сервисам web дать доступ к внешней базе данных силами docker-compose файла и переменных окружения (в докеровских networks я очень слаб)?

    База данных будет запускаться в отдельном стэке, со своим docker-compose.yml и в своей сети, которую нужно объявить в docker-compose.prod.yml как external:
    https://docs.docker.com/compose/networking/#use-a-...
    networks:
      default:
        external:
          name: db_default
    ...
    services:
      web:
        image: project-name
        networks:
          - default
          - db_default
    Ответ написан
    4 комментария
  • Прокомментируете тестовое на react?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. Хотелось бы видеть в проекте использование redux. react+redux - это самый распространенный и востребованный стек в React разработке.

    2. Почему все хандлеры и состояния находятся в App, а не в Main? Как вы потом эту кашу собираетесь масштабировать? Переносите все, что связанно только с Main в Main. По-хорошему смотрите пункт 1.

    3. Слишком много функциональных компонентов. Подумайте их где можно заменить на классы с реализованным shouldComponentUpdate или на PureComponent, чтобы убрать лишние вызовы render этих компонентов.

    4. import Logo from 'images/Logo.png';
    называть пути к ресурсам с заглавной буквы неправильно.

    5. Вместо:
    const StyledLogo = styled.img.attrs({
      src: Logo,
      alt: 'Aviasales'
    })`
      width: 60px;
      height: 61px;
    `;

    Удобней в использовании:
    const StyledLogo = styled.img`
      width: 60px;
      height: 61px;
    `;

    и:
    <StyledLogo src={logo} alt="Aviasales" />

    6.
    const Error = ({ text }) => (
      <StyledError dangerouslySetInnerHTML={{__html: text}} />
    );

    зачем тут html?
    Для сохранения переносов строки есть css правило:
    white-space: pre-line;

    7. Вместо:
    let element;
    
    if (error && !isLoading) {
      element = <Error text={error} />;
    }
    if (!error && isLoading) {
      element = <Loader />;
    }
    if (!error && !isLoading) {
      element = (
        <>
        <Heading />
        <Main
        isCurrencyExchanging={isCurrencyExchanging}
        activeCurrency={activeCurrency}
        handleCurrencyChange={this.handleCurrencyChange}
        ticketsFilteredByStops={ticketsFilteredByStops}
        stops={stops}
        handleStopsChange={this.handleStopsChange}
        handleUncheckOther={this.handleUncheckOther}
        />
        </>
      );
    }
    return element;

    Лучше:
    if (isLoading) return <Loader />;
    
    if (error) return <Error text={error} />;
    
    return (
      <>
        <Heading />
        <Main
          isCurrencyExchanging={isCurrencyExchanging}
          activeCurrency={activeCurrency}
          handleCurrencyChange={this.handleCurrencyChange}
          ticketsFilteredByStops={ticketsFilteredByStops}
          stops={stops}
          handleStopsChange={this.handleStopsChange}
          handleUncheckOther={this.handleUncheckOther}
        />
      </>
    );


    8. Вместо:
    filterTickets = (tickets, stops) => {
      return tickets.filter((ticket) => {
        return values(stops).indexOf(ticket.stops) !== -1;
      });
    };

    Лучше:
    filterTickets = (tickets, stops) => tickets.filter(
      ticket => values(stops).includes(ticket.stops),
    );


    9. Не пропускайте отступы между методами и между вложенными свойствами css.

    10. Вместо:
    componentsDidMount() {
      // много кода
    }


    Лучше:
    componentsDidMount() {
      this.fetchSomeData();
    }


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

    12. Loader и Error самое место в директории components/core или что-то вроде того. Там же, по-хорошему, должны находиться базовые компоненты: кнопки, инпуты, табы, чекбоксы.

    13. Styled компоненты, имхо, лучше писать в файле с компонентом, где они применяются. Так анализ кода происходит гораздо быстрей и легче поддерживать. Исключение - переиспользуемые компоненты.
    Даже если вам больше нравится выносить, называть файл style неправильно, вы там описываете компоненты, а не просто стили.
    Ответ написан
    3 комментария
  • Почему заполняется swap если свободна оперативка?

    Jump
    @Jump
    Системный администратор со стажем.
    Это нормальная ситуация.
    Смотрите - в памяти есть данные которые мало востребованы, система скидывает их в своп, но из памяти не стирает.
    Если вдруг потребуется выделить много памяти, система мгновенно выделит эту память, так как данные уже в свопе.
    Не потребуется память - они так и останутся в памяти и будут доступны со скоростью памяти.

    В итоге - максимальное быстродействие и максимально эффективное использование памяти.

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

    В итоге небольшое использование ОС свопа в фоновом режиме это нормально и полезно. Даже когда оперативки у вас достаточно. Ненормально если памяти мало и все приложения активно свопятся.
    Ответ написан
    Комментировать
  • Кто знает простые альтернативы JQuery?

    VanillaJS, очень хороший фреймворк. Перешел на него с jQuery и всем советую.
    Ответ написан
    3 комментария
  • Как настроить nginx+express.js?

    BuriK666
    @BuriK666
    Компьютерный псих
    Наверное так:
    proxy_redirect / /mac-address/;

    nginx.org/ru/docs/http/ngx_http_proxy_module.html#...
    Ответ написан
    Комментировать
  • PHP: mkdir, почему permission denied при 0777?

    @cmx Автор вопроса
    Проблема была в SELinux Policy, спасибо @Sander_Li

    Решение:
    # chcon -R -t httpd_sys_content_rw_t /project_root

    Взято с: stackoverflow.com/questions/13908722/php-unable-to...
    Еще можно посмотреть здесь: https://coderwall.com/p/uahuma
    Ответ написан
    1 комментарий
  • Почему в логах nginx мне пишет (13: Permission denied) при выполнение php-скриптов?

    @IvanBaranov
    На Centos 6.7 все права были прописаны, но Nginx продолжал выдавать:
    stat() ... failed (13: Permission denied)
    Помогло: https://www.opennet.ru/tips/2915_centos_rhel_selin...
    Ответ написан
    3 комментария
  • Как правильно отдавать статику?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Тот пример что вы привели, никак не относится к понятию "правильно подргужать статику". Для загрузки статических файлов существуют некоторые общепринятые правила, которые существенно эту загрузку облегчают.
    Вот они:
    • Объединение JS и CSS файлов в 1 - уменьшение количества запросов к серверу
    • Объединение нескольких изображений в спрайт - опять уменьшение кол-ва запросов
    • Преобразование изображений в Base64 - опять уменьшение кол-ва запросов, так как картинка теперь находится в теле CSS файла
    • Использование кэширования
    • Использования отдельного сервера для загрузки статики - уменьшает нагрузку на основной сервер, преодолевает правила браузеров по количеству возможных параллельных загрузок
    • Использование Gzip на сервере, чтобы максимально уменьшить вес статики

    Да и много чего еще.

    То о чем говорите вы, это скорее правила верстки, суть концепции заключается в отделении оформления от содержания. Но это не железная концепция, могут быть многочисленные исключения. Например возьмем картинку товара в каталоге. В обычной ситуации это картинка - IMG, так как это контент. Но, если вдруг эту самую картинку нужно как-то интересно оформить и добавить к ней какие-то эффекты или выравнивание, то обычный IMG тут уже увы не подходит и проще сделать ее фоном к DIV-у. Ну и т.д.
    Ответ написан
    Комментировать
  • Как поставить высоту блока div в зависимость от ширины?

    Зачем скрипты? Можно ведь обычным css'ом обойтись:
    jsfiddle.net/qso14y3k

    Один минус - 2 дополнительные обёртки для каждого блока. Но это не смертельно. Фокус этот работает по стандартам, так что работать должен везде.
    Также эта техника входит в toolkit, который написан ребятами, которые написали Singularity.
    Ответ написан
    2 комментария
  • Подсобите с регулярным выражением?

    DirecTwiX
    @DirecTwiX
    "display: flex;" уже предлагали?
    Очевидно, нужны рекурсивные регулярки.
    https://regex101.com/r/SBqnii/7
    С группами можно поиграться. Наверн, придётся пропускать регулярку по результату ещё раз, но думаю это проще и возможно даже быстрее использования конечного автомата. А на пример подобного автомата я бы посмотрел :)

    Сравнение производительности с конечным автоматом:
    https://jsperf.com/regex-vs-fsa/1
    Ответ написан
    3 комментария
  • Как организовать git версионирование?

    KorsaR-ZN
    @KorsaR-ZN
    Ответ написан
    Комментировать
  • Регулярное выражение для проверки номера телефона в международном формате?

    @deliro
    Тут как с email-ами. Самое правильное - проверять регуляркой /@/
    Тут просто валидируешь в три действия:
    1) Проверяешь, чтобы первый знак был плюсом
    2) Удаляешь ОДИН плюс и все пробелы и дефисы (минусы)
    3) Проверяешь, получилось ли целое число
    Ответ написан
    2 комментария
  • Как получить IP посетителя через PHP?

    Winsik
    @Winsik
    сис.админ, недопрограммист :)
    $_SERVER['REMOTE_ADDR']
    Ответ написан
    6 комментариев
  • Npm, Node, Webpack — как разобраться новичку?

    @UsulPro
    Обратите внимание, что npm install -g webpack-cli, установит webpack-cli глобально а не в Ваш проект.
    Могу посоветовать отличное свежее руководство: "JavaScript Stack from Scratch"
    в Русском переводе: https://github.com/UsulPro/js-stack-from-scratch
    Ответ написан
    Комментировать
  • Как сделать js, css пакеты для Laravel?

    stanislav-belichenko
    @stanislav-belichenko
    Backend PHP Developer
    вообще composer для php

    Нет, но в целом это верное решение, не использовать его для подобных целей, если только не будете внимательно следить за зависимостями.

    видимо нужно создавать npm-пакеты, но тут уже я потерялся, пытаясь понять, как это для веб оформить


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

    вынести некоторые части js кода в отдельные пакеты, чтобы потом использовать в других проектах


    Еще раз по предыдущим пунктам - composer действительно собирает в основном для бекенда (условно движок), хотя и им можно забивать гвозди. NPM собирает для скорее опять же каких-то нужд бекенда, в том числе административных, например, через него ставится Bower. В том числе потому, что у него для каждого пакета в его папку подтягиваются все его зависимости, каждый раз для каждого пакета, даже если пакеты, от которых они зависят, являются общими.

    А вот тот же Bower можно и нужно использовать для подтягивания пакетов для фронта. Elixir, laravel-mix - это все сборщики, как и тот же Gulp, они занимаются не установкой пакетов, а их преобразованием - например, минифицируют и конкатенируют файлы стилей или скриптов, это совершенно иные задачи.

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

    # Git endpoint
    $ bower install git://github.com/user/package.git
    # URL
    $ bower install http://example.com/script.js
    Ответ написан