Задать вопрос
  • Как составить пользовательское соглашение для веб сайта?

    @Legal2019
    Всё в имени моём... и радость и печаль...
    Согласен с Рональдом, но не зная юриспруденции можно сесть в лужу сильно. Чтобы было хорошо и правильно - велком к юристам.
    Ответ написан
    Комментировать
  • Что означает "!!~"?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Сокращалка, удобная для indexOf(), который возвращает -1 если не найдено, или индекс от 0 и больше.

    Для логики приложения часто бывает нужно узнать только, найдено или нет: т.е. -1 или иное значение. Можно просто сравнивать if (a.indexOf(b) > -1) { /* найдено! */ } но иногда хочется короче.

    Битовый оператор НЕ ~ хорош тем, что выделяет -1: только -1 с этим оператором даст 0. Прочие числа дадут какое-то ненулевое значение.

    ~(-1) === 0

    Остаётся привести значение из численного в булево. Для этого два воскл. знака — два логических НЕ.
    • для варианта «найдено» из числа от 0 и больше получилось тоже ненулевое число, и !! даст true
    • для варианта «не найдено» из -1 получится уникальный 0, и !!0 вернёт false
    Ответ написан
    4 комментария
  • Как подобрать железо под PhpStorm?

    Пара минут анализа для коммита в 5к строк - вроде норма.
    Его хотябы можно выключить

    Но скорость автокомплита смущает.
    Пробовал чистить кэши и переустанавливать?
    Ответ написан
    Комментировать
  • Как подобрать железо под PhpStorm?

    Stalker_RED
    @Stalker_RED
    Возможно упор не в железо, а в размер проекта и/или в саму историю в гите.

    Для начала можно поднастроить анализатор, убрать ненужные проверки.
    И GIT репозиторий можно оптимизировать, но это отдельная история (1,2)

    Вероятно в шторме можно настроить exclude для некоторых папок.
    Попробуйте поотключать разные плагины, некоторые могут сильно влиять на отзывчивость автодополнения.
    Ответ написан
    Комментировать
  • В чем суть такой записи в reset.css?

    nowm
    @nowm
    Это специфичное для blockquote определение, которое Eric Meyer (автор reset.css) позаимствовал у Paul Chaplin. Первая строка content: "" делает так, чтобы у blockquote исчезли кавычки — на случай, если вторая строка content: none не поддерживается браузером, потому что первая строка — это CSS 2, а вторая — это CSS 2.1. В одну строку их записать нельзя, потому что по стандарту для свойства «content» нельзя комбинировать ключевые слова «normal» и «none» с другими значениями.

    Вообще, когда встречается перечисление одного и того же свойства с разными значениями, это делается для того, чтобы обеспечить совместимость с разными браузерами. То есть, если, например, браузер не поддерживает «content: none», он применит «content: ""», а другую запись проигнорирует.

    Обычно дублирующие записи располагаются в определённом порядке. Первой записью идёт самый плохой вариант, который должен сработать везде. Затем идёт вариант, который более полно описывает вашу цель. Пример:

    .some-class {
        background: #e66465;
        background: linear-gradient(#e66465, #9198e5);
    }


    В этом коде, если браузер поддерживает градиентный фон, он сначала прочитает, что нужно использовать цвет «#e66465», а потом это перезапишется записью «linear-gradient», и итоговое значение будет «linear-gradient(#e66465, #9198e5);». Если же браузер не поддерживает градиент, он сначала прочитает, что нужно использовать «#e66465», а потом увидит неподдерживаемое определение «linear-gradient», проигнорирует его, и итоговое значение будет «#e66465».
    Ответ написан
    Комментировать
  • Как лучше хранить много файлов — в базе данных или в виде файлов?

    Единственное преимущество хранения файлов в БД, на которое нужно обратить внимание — это конкурентный доступ. То есть СУБД корректно обрабатывает одновременный доступ на изменение к одной и той же записи. Если конкурентный доступ маловероятен, то лучше использовать файлы.

    Преимущество файлов:
    — Бэкапить файлы не намного дольше, но восстанавливать можно по отдельным файлам, а не заливать весь дамп.
    — Обращение к файлам и считывание быстрее, чем получение записи из БД (даже если используются сокеты).
    — Кэширование файлов осуществляет автоматически ОС и сервер (можно использовать и опкэшер для контроля). А у СУБД кэширование больших файлов вызывает потерю производительности из-за вытеснения простых запросов из кэша.
    — Количество файлов может быть очень большим без потери мощности сервера. У меня один раз хранилось около 12000 файлов в одной директории и ничего — сервер считывал без всяких задержек. Конечно вручную открыть эту папку было проблемно.
    — Sphinx — свободно ищет по файлам.

    Но при всех преимуществах файлов конкурентный доступ может испортить всю «малину», так что отталкивайтесь от него.
    Ответ написан
    Комментировать
  • Wherehas как правильно написать запрос?

    @kaxa3201 Автор вопроса
    нужно использовать whereDoesntHave
    Ответ написан
    Комментировать
  • Как синхронизировать проект с удалённым репозиторием?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Ох уж эти трудности перевода)) remote обычно переводят на русский как удалённый. Но что если я захочу удалить remote? Удалить удалённый?
    Поэтому лучше говорить «внешний», чтобы не путаться. Мы работаем с локальным репозиторием, а все остальные по отношению к нему будут внешними. В Git нет централизации, все репозитории равноправны и могут обмениваться информацией в произвольных направлениях.

    Итак: у нас есть два внешних репозитория и хочется их синхронизировать? Без проблем.
    Можно использовать локальный компьютер как вспомогательный.

    Я сделал
    git init
    git remote add origin ....


    Начало уже нелогичное. Ты же говоришь что уже выкачал репозиторий с сервера?
    Т. е. выполнил git clone <server1>
    Это уже создало копию репозитория и init не нужен. А ещё это автоматически создало ссылку origin тоже.

    Дальше можно поменять адрес origin на второй сервер
    git remote set-url origin <server2>

    И сразу увидим в git status есть ли отличия.
    Хотя нет, вру. Надо после смены адреса скачать к себе заново внешние ветки командой
    git fetch
    Только тогда будет что сравнивать.

    Примерно так. Это первое что пришло в голову и пожалуй грубовато. Можно придумать более аккуратную схему.

    Я бы лучше не удалял старый remote, а добавил новый. То что ты «скачал с сервера» пусть так и останется как origin. А «удалённый» репозиторий обозначим как upstream
    git remote add upstream <server2>
    git fetch upstream

    Тогда мы сможем сравнивать любые ветки и синхронизировать.
    Ответ написан
    Комментировать
  • Куда пропало место на диске?

    karabanov
    @karabanov Куратор тега Ubuntu
    Системный администратор
    Введи sudo ncdu /
    Если в системе нет ncdu то установи его командой sudo apt update && sudo apt install ncdu
    Ответ написан
    Комментировать
  • Откуда эта функция _() в blade?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    Есть функция __() с двойным подчёркиванием.
    Вероятно, вы просто опечатались.
    Ответ написан
    Комментировать
  • Почему название файла стало писаться курсивом?

    Вероятнее всего вы включили опцию Enable Preview Tab.

    619e2168d80e0841170788.png
    Ответ написан
    Комментировать
  • Как сделать темную тему в Sass?

    delphinpro
    @delphinpro Куратор тега Sass
    frontend developer
    Для темы лучше использовать css-переменные

    body {
      --bg: white;
    
      background: var(--bg);
    
      &.dark {
        --bg: black
      }
    }
    Ответ написан
    Комментировать
  • Скрипт проверки whois от регистратора REG.RU не даёт пользователям занимать "красивые" домены?

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

    Регистратор запросто может отправить настоящему оператору зоны, вносящему изменения запрос на регистрацию домена в расчете на то, что Вам он нужен настолько, что готовы купить за аукционную цену - ведь никто не знает об условиях договора между регистратором и оператором зоны. Подержит занятым некоторое время, а потом если не купили - освободит.
    Причем, все это скорее всего давным-давно автоматизировано.
    Ответ написан
    Комментировать
  • Как написать скрипт в package.json?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Сделайте свой скрипт: "serve": "node ./api/serve.js", а уж в нём что хотите и как хотите вызывайте.
    Ответ написан
    Комментировать
  • Как написать скрипт в package.json?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Не надо ничего мудрить, просто поставьте ; в конце команды
    Ответ написан
    4 комментария
  • Какой настольный клиент использовать для работы с Git?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    В любой IDE есть встроенный git-клиент. Самая удачная реализация как всегда у продуктов JetBrains.
    Если же ищите именно отдельный клиент, по мимо тех, что уже предложили:
    От разработчиков Sublime Text: https://www.sublimemerge.com/
    И в комплекте с git-ом под Windows идёт git-gui: https://git-scm.com/docs/git-gui/

    Я использовал многие клиенты - и все они в удобстве уступают тому, что встроен в *Storm.
    Ответ написан
    1 комментарий
  • Какие есть CMS, аналогичные Wordpress, с возможностью писать фронт на vue?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    Зачем искать, если wp и так умеет rest api
    Ответ написан
    4 комментария
  • Какой объём трафика у websocket если ничего не передавать и просто держать соединение?

    @deliro
    PING/PONG кидается раз в 20 секунд https://websockets.readthedocs.io/en/latest/topics...
    PING/PONG фреймы — по одному байту. Плюс, если считаем, объём TCP и IP фреймов.

    Итого за час 180 пингов и 180 понгов или 360 байт не считая оверхэда на нижележащие фреймы.
    Если считать оверхэд, то примерно 65 байт x (180 пингов + 180 понгов) ~ 23кб/час

    Плюс, какой-то оверхэд даст TLS и его хэндшейки, плюс, незначительный оверхэд дадут хэндшейки TCP. Но это явно не близко к 70мб
    Ответ написан
    2 комментария
  • Как передать данные в модель?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Laravel
    Передать-то можно:
    $data = $api->getJson();
    $model = new YourModel($data);


    Но только проще создать свои модели, не связанные с Eloquent (можно в них добавить трейт HasAttributes, если нравится его поведение), а не пытаться натянуть ужа на ежа. В "стандартной" модели очень много всего завязанного на Eloquent и подменить его будет сложно, лучше потихоньку добавлять нужную функциональность руками.

    Ну а контроллерам вообще всё равно с какими объектами работать.
    Ответ написан
    3 комментария
  • Чем set VUE_APP_PROCEDURE=build отличается от определения в .env?

    @resibe
    19-летний пушистик
    Как вариант, проблема может быть в самом объявлении переменной,
    внутри
    "set VUE_APP_PROCEDURE=build & vue-cli-service build"
    обычный cmd (shell) скрипт, set реализация переменных в cmd,
    так как в cmd нет разделителей на конец строки, то-есть ";" вероятно скрипт после присваивания может читать пробел в set VUE_APP_PROCEDURE=build & до & (который разделяет команды для возможности использования inline) и у вас получается не build а build с пробелом
    Попробуйте так
    "build": "set VUE_APP_PROCEDURE=build& vue-cli-service build",
    Ответ написан
    Комментировать