Задать вопрос
  • Почему разработчики пишут к примеру на html + css, а не юзают конструкторы?

    bingo347
    @bingo347
    Crazy on performance...
    Поставьте и включите ему NVDA (если винда) или включите VoiceOver (если макось) и предложите поуправлять так любым сайтом сделанным на wix с выключенным монитором, опираясь только на звук из этих программ.
    И да, много сделанных вручную сайтов тоже страдают неудобным управлением, но у разработчика такого сайта есть хотя бы возможность сделать это удобно, а на wix такой возможности нет.
    Ну и как уже сказали, сделать что-то серьезное тоже не выйдет.
    Ответ написан
    Комментировать
  • Где в it больше всего работы? Где больше шанс трудоустроиться?

    Zoominger
    @Zoominger
    System Integrator
    В администрировании, эникействе. Можно сходу влететь на 40-50 тысяч в месяц, правда, в СПб. Лично наблюдал, как брали человека ни бум-бум на 50 тыр (без блата) и учили. Веб-джунам привет.
    Ответ написан
    7 комментариев
  • Выбор ноутбука до 40 000р?

    @kalapanga
    Вы не написали назначение ноутбука. За эту сумму выйдет неплохой ноутбук для офисной работы, учёбы, программирования, но совсем негодный для игр.
    Ноутбук с ms-dos (или как в магазинах пишут "без ОС") покупают те, кто хочет установить на ноутбук, например, линукс и не хочет переплачивать за предустановленную Windows. Или те у кого уже есть коробочная версия Windows. Вы же не собираетесь совершать уголовное преступление и использовать пиратский софт?
    Ответ написан
    2 комментария
  • Два пользователя 1пк?

    Zoominger
    @Zoominger Куратор тега Компьютеры
    System Integrator
    5 комментариев
  • Какой процессор лучше взять для игрового компьютера?

    Zoominger
    @Zoominger Куратор тега Компьютеры
    System Integrator
    ryzen 5 3600

    This.
    Ответ написан
    Комментировать
  • Что я делаю не так с file_get_contents?

    cr1gger
    @cr1gger
    Все дороги ведут в Рим — встретимся в Риме!
    0 массив он всегда есть там вся найденная строка
    1 то что тебе нужно
    Ответ написан
    Комментировать
  • Что я делаю не так с file_get_contents?

    @dzhebrak
    Вероятно на странице два блока пагинации, которые соответствуют указанному регулярному выражению.

    По умолчанию в preg_match_all передается флаг PREG_PATTERN_ORDER

    PREG_PATTERN_ORDER
    Упорядочивает результаты так, что элемент $matches[0] содержит массив полных вхождений шаблона, элемент $matches[1] содержит массив вхождений первой подмаски и т.д.

    Поэтому в $pages[0] указаны все вхождения шаблона, а в $pages[1] - вхождения первой подмаски (номер страницы в вашем случае).
    Ответ написан
    Комментировать
  • Как сделать выполнение макроса на сайте?

    SilenceOfWinter
    @SilenceOfWinter Куратор тега PHP
    та еще зажигалка...
    Ответ написан
    Комментировать
  • Почему ajax возвращает null?

    zkrvndm
    @zkrvndm
    Архитектор решений
    При отправке запроса на другой домен fetch не передает куки, а без куков ваш сервер не может определить пользователя. Подробнее тут:
    https://learn.javascript.ru/fetch-api#credentials
    Вам нужно указать параметр credentials равным include, при этом для корректной работы сервер у вас должен отдавать заголовок Access-Control-Allow-Credentials.

    Сам с собой это только если ваш сайт и бэкенд на разных доменах. Если они на одном и том же домене, но ошибка сохраняется, ищите причину на серваке или попробуйте для начала заюзать XMLHttpRequest.
    Ответ написан
  • Какие минусы у vue-cli?

    @FODD
    В контексте мелких и средних проектов у vue-cli (далее по тексту буду иметь ввиду и остальные клиенты других фреймворков) одни плюсы - за условные 5 минут вы получаете типовой конфиг, который можно расширить свои плагинами и получить рабочую сборку.

    Большой же проект предполагает, что:
    1) может потребоваться нестандартная сборка, несколько точек входа со своим конфигом и прочие веселые прелести
    2) на проекте работает специалист, который знает как работает сборщик и умеет написать к нему необходимый конфиг сам с нуля
    3) у клиентов есть свои конфиги, которыми нужно учиться пользоваться в ДОПОЛНЕНИЕ к конфигам сборщика. Не всем нравится учиться лишним вещам

    И вот тут начинаются проблемы - клиент генерит свой конфиг, и примешивает к нему то, что вы дописали. При этом что он там в итоге нагенерил смотреть не особо и удобно. В итоге все выливается в ситуацию "что эта тулза там ещё сгенерила, мне надоело перебивать правила".

    Если проект полностью подходит под стандартный конфиг vue-cli - ничего плохого в его использовании нет.

    У angular cli в этом плане получше - там можно выбрать, что делать с кастомным конфигом - примешать к стандартному, или заменить им стандартный. У vue, несколько я знаю, такой возможности нет.

    P.S. у меня vue-cli не может нормально собрать свежеесозданный проект с vuetify, приходится понижать версию sass-loader. За такие "фишки" отдельные лучи добра.
    Ответ написан
    Комментировать
  • Оцените сборку ПК?

    @antonwx
    БП заменить на chireftec gpa-550s/600s прям самым первым и важным пунктом.
    Зачем брать такой мощный процессор под такую убогую видеокарточку?
    Перераспределите бюджет и купите, например, 1660 super + ryzen 1600AF (важно - AF). (или аналогичную карточку от AMD поновее, в AMDшных новых картах я не разбираюсь)
    На худой конец 1650 super, всяко получше будет.
    Мать без охлада на цепях питания - прямая дорога в сервис, возьмите например GIGABYTE B450M DS3H, стоит столько же, охлад какой никакой есть, два полноценных pci-express и 4 слота оперативки под апгрейд, если понадобится.
    Ответ написан
    3 комментария
  • Стоит ли учить Big data, не окончив школу?

    Zoominger
    @Zoominger
    System Integrator
    Нет. Без высшей математики никуда.
    Ответ написан
    1 комментарий
  • PHP стоит ли изучать язык по материалам 2015 года?

    Zoominger
    @Zoominger
    System Integrator
    Не советую. За пять лет много, что изменилось.
    Ответ написан
  • Есть ли какой-нибудь портал, на котором описаны всевозможные методы JavaScript-a?

    Kozack
    @Kozack Куратор тега JavaScript
    Thinking about a11y
    Комментировать
  • Есть смысл тратить время на JS если в планах frontend (webassembly и другие техн)?

    Zoominger
    @Zoominger
    System Integrator
    Насколько долго протянет JS если в wasm добавят dom? Что планируется или js вечен?

    Как только добавят - весь мир массово на него перейдёт. Мгновенно уволят всех JS-программистов, поддержка JS во всех браузерах будет отключена в течение первых трёх часов после включения DOM в WASM. Вы разве не знали? JS-то всё.
    Ответ написан
    5 комментариев
  • Как узнать когда пользователь покинул мой сайт на php?

    kocherman
    @kocherman
    На JS можно обработать эти события. Можно отправить запрос на сервер (XHR, fetch), чтобы сообщить о событиях PHP.
    window.addEventListener("load", e=> { /* страница полностью загрузилась во вкладку */ });
       window.addEventListener("unload", e=> { /* пользователь закрыл вкладку */ 
         /* (или пытается закрыть вкладку, так как это действие можно отменить)*/ });
       window.addEventListener("focus", e=> { /* пользователь переключился на нашу вкладку */ });
       window.addEventListener("blur", e=> { /* пользователь переключился на другую вкладку */ });
       window.addEventListener("error", e=> { /* у пользователя произошла ошибка */ });
    Ответ написан
    Комментировать
  • Как настроить сервер на работу двух отдельных приложений?

    Softovick
    @Softovick
    программист, администратор
    Если используете Докер и прямо хотите докеризировать с мастабированием, то используйте сеть докера для связи между контейнерами для начала.
    У вас должно быть 1 контейнер с nginx наружу (80 порт и/или 443), 1 контейнер для сборки приложения VueJS, 1 контейнер для работы с PHP-проектом и дальше что там у вас, по контейнеру для СУБД (1 Redis, 1 RabbitMQ, 1 MySQL). Каждому контейнеру дайте нормальное уникальное имя, чтобы можно было их подключать друг к другу по dns-имени. Наружу порт только для nginx давайте, он будет за все отвечать.
    1. Контейнер с nginx отдает статику, собранную из приложения VueJS. Собственно все как обычно - собрали dist, из него и отдаете. В идеале собирать в отдельном контейнере c NodeJS, а полученные данные из dist копировать в какой-нибудь volume наверное и подключить его к контейнеру с Nginx. Это можно делать на уровне файлов docker-compose и автоматизировать при сборке проекта. Этот же volume можно подключить и к контейнеру с backend-api, тогда оно сможет работать с файлами, которые загрузили.
    2. Из первого контейнера с nginx по upstream отдавать backend-api, который будет обращаться к еще одному контейнеру, где крутится PHP и собственно ваш symphony проект. Наружу этот контейнер не пускайте, подключайте к первому контейнеру через имя. Таким образом вы сможете запустить несколько контейнеров с api, указав все их dns-имена в разделе нужного upstream. Уже получаете горизонтальную масштабируемость, эти контейнеры потом можно запускать вообще на разных серверах, соединив их, например при помощи Docker Swarm или в Kubernetes. Опять же все можно оформить на уровне файлов конфигурации Docker Compose, там не сложно, достаточно почитать документацию.
    3. Все контейнеры с СУБД запускайте тоже в отдельных контейнерах, где нужно - создавайте volume для хранения БД. Их тоже наружу не пускайте, биндите на уровне Docker с контейнером (ами) с backend-api. Вообще если предполагается серьезная нагрузка, то СУБД вообще рекомендуют запускать не в контейнерах, но тогда чуть сложнее автоматизировать привязку и масштабирование будет. Для начала можно и в контейнерах, когда она придет, эта нагрузка то... Тем более контенеры с СУБД тоже можно в нескольких экземплярах запускать, между ними репликацию сделать или вообще шардинг. Все это можно наверное во всех описанных БД сделать, но с шардингом помучаться конечно придется. Репликация проще всего. А уже к ним подключаться из backend-api по dns-именам, как настроите.

    Как то так.
    Ответ написан
    Комментировать
  • Как вернуть json и url из Promise.all?

    @andriyorehov Автор вопроса
    const fetchData = () => {
      const urls = [
        "https://jsonplaceholder.typicode.com/posts/1",
        "https://jsonplaceholder.typicode.com/posts/2",
        "https://jsonplaceholder.typicode.com/posts/3",
        "https://jsonplaceholder.typicode.com/posts/4",
        "https://jsonplaceholder.typicode.com/posts/5",
        "https://jsonplaceholder.typicode.com/posts/6",
        "https://jsonplaceholder.typicode.com/posts/7",
        "https://jsonplaceholder.typicode.com/posts/8"
      ];
    
      const allRequests = urls.map(url => 
      fetch(url).then( response => response.json() ).then( json => ( {url, json } ) )
    );
    
      return Promise.all(allRequests);
    };
    
    fetchData().then(r => console.log(r));
    Ответ написан
    Комментировать