Задать вопрос
  • Как правильно работать с большим количеством данных?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не хочется ругаться, но вопрос очень бессвязный и в нем перемешаны реальные проблемы с нелепыми фантазиями.

    И проблема тут не в незнании как работать с большими базами данных, а в неумении работать с БД в целом.

    Про идею "всем индекс не поставишь" надо сразу забыть. Там где индекс нужен, он должен стоять без вариантов. Другое дело что тупо натыкать индексов по всем полям, по которым идёт поиск - это тоже глупость. Индекс в запросе может использоваться только один, и индексы по второму-третьему полю уже будут бесполезны. Надо анализировать запросы и, возможно, делать составные индексы.

    Детсадовский запрос вида like '%...%' - это отдельный ужас. Надо смотреть на полнотекстовый поиск. А лучше вообще его избегать. На крайний случай использовать внешние поисковые сервисы типа эластика. И только не говори что этот лайк у тебя идёт по полю типа джейсон или "через запятую"

    Но самый конечно кошмар - это select distinct для фильтров. То есть неумение проектировать бд на самом базовом уровне, непонимание самых начальных принципов реляционных бд, нормализации. Вот с этих принципов и надо начать. В потом уже хвататься за большие объемы. Очевидно, что поля по которым ты собрался делать "distinct" - это должны быть отдельные таблицы, от которых в основной таблице будет просто id. поле размером в 4 байта.

    Непонятно, откуда взялись фантазии про гигабайтные индексы, кстати. Большая часть полей в нормальной бд - это не больше десятка байт. То есть индекс - это десятки мегабайт, а не "гигабайты".

    В общем, куда лучше бы смотрелись здесь не абстрактные рассуждения про большие объёмы, а конкретный запрос, который "отваливается". С обязательным результатом EXPLAIN

    А ответ на абстрактный вопрос "как работать с большими объемами" очень простой: точно так же, как с небольшими. Реляционные бд изначально проектировались под большие размеры. То есть надо просто уметь работать с бд. Читать про реляционную модель, нормализацию, индексы, оптимизацию запросов.

    Конкретно для грида надо смотреть в сторону Эластика/Сфинкса. В смысле чтобы не только для полнотекстового поиска, а чтобы все фильтры, которые есть выборке, были забиты в поисковый индекс. И все выборки - через поисковый сервис, а не через прямой запрос к базе
    Ответ написан
    8 комментариев
  • Можно ли "бескровно" проапгрейдить проект с Laravel 5.1 до текущей версии (8.x)?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Можно. Получится ли у тебя — вопрос, на который ответ знаешь только ты.

    Острожно и последовательно апгрейдишь на 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 6.х, 7.х, 8.х, читая Release Notes и Upgrade Guide.
    Ответ написан
    Комментировать
  • Что за странная ошибка при попытке запустить очередь?

    @mrFlyer Автор вопроса
    в PHP.ini эти фукнции были перечислены как заблокированные:

    disable_functions = [тут удаляем]
    Ответ написан
    Комментировать
  • Так ли важно во сколько папок будет спрятан файл?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    Вы неправильно поняли гугл. Он имел в виду, что нужно минимизировать "игла в яйце, яйцо в зайце, заяц в утке, утка в шоке", то есть, например, когда у вас html-документ, в нём скрипт, подгружающий CSS, в CSS ссылка на файл со шрифтом (особенно круто, когда всё это на разных доменах, которые нужно резолвить и устанавливать с каждым по очереди HTTPS-хэндшейки).
    Ответ написан
    3 комментария
  • Законен ли парсинг БД ФНС?

    Jump
    @Jump
    Системный администратор со стажем.
    Законен ли парсинг БД ФНС?
    Да.
    Данные открыты - любой может их получить, берите и получайте.
    Но если парсинг создаст большую нагрузку на сервера и затруднит их нормальную работу, то это может быть расценено как DDoS атака, а там уж в зависимости от последствий можно пару статей из УК или ГК подобрать.

    Поэтому парсите на здоровье, но не увлекайтесь отправкой запросов разом с тысячи хостов.
    Ответ написан
    5 комментариев
  • Как в Laravel пересобрать webpack у библиотеки из vendor или как разрешить несовместимость версий?

    @k2lhu
    Почти у любого пакета под laravel есть основной файл пакета ServiceProvider, в котором указывается где искать view файлы, js,css, подключение фасадов и компонент. Скорее всего при установке этого пакеты вы у себя даже добавляли подключение нового ServiceProvider в список всех провайдеров. И возможно будет достаточно отнаследоваться от базового класса ServiceProvider внутри пакета, подключить свой отнаследованный класс вместо предлагаемого разработчиком и внести необходимые изменения в уже свой провайдер, поменяв необходимые зависимости.
    Ответ написан
    Комментировать
  • Как правильно ввести Github?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Скачай GitHub Desktop. Тебе будет проще разобраться в нём, чем изучать что такое git.

    Публиковать стоит то, что хочешь показать другим. Для своих целей можно создавать приватные репозитории
    Ответ написан
    Комментировать
  • Как правильно оформить проверку в middleware?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    $userId = Auth::user()->id; // Переменную плохо назвали. Это ID, а не пользователь
    $editor = Pass::where('user_id', $userId)->first(); // А здесь редактор, не ID. Может быть NULL если не найдено.
    // Нужно проверить, нашлась ли запись и совпали ли ID
    //if ($editor && $userId == $editor->user_id) {        }
    
    // Но исходя из условия запроса, если запись нашлась, то ID уже совпали
    // Значит достаточно такой проверки:
    if ($editor) {        }
    Ответ написан
    1 комментарий
  • Встречались ли вам овер-инженеры среди джунов и миддлов? Как надо с такими поступать?

    DevMan
    @DevMan
    человек вообще ни у чом не уиноват.
    просто в компании не выстроены (или не правильно выстроены) бизнес-процессы.

    человек с горящими глазами и скилованный - офигенный актив. прост нужно этот энтузиазм направить в нужное русло. и это элементарно решается административными способами, если между собой разобраться не удаётся.
    Ответ написан
    10 комментариев
  • NDA и штрафные санкции - это нормально? теоретические последствия?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Хм. А каковы шансы у этого заказчика исполнить свою угрозу и каким образом он это собирается сделать?
    Ответ написан
    1 комментарий
  • NDA и штрафные санкции - это нормально? теоретические последствия?

    @Kostik_1993
    Web Developer
    Я в целом не против НДА, но с адекватными требованиями. Во первых суммы не должны быть дикими. Второе это конфиденциальные данные, они должны быть четко изложены и прописаны. Ну и третье, самое главное это должно быть прописано то что является тем самым разглашением. Например вы не должны отвечать за то что заказчик вам отправил что-то на почту, но ее взломали техническими средствами, не когда вы забыли логин и пароль на бумажке в кафе, а когда ваш аккаунт был взломан, например подбором пароля. Хотя тут тоже спорный момент, но вы данные защитили защитили, а значит не должны отвевать за их утрату не по вашей вине
    Ответ написан
    Комментировать
  • NDA и штрафные санкции - это нормально? теоретические последствия?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    -от попросите удалить
    -до вы в разных странах, это все фигня

    Оба предложения верны.
    NDA, да и вообще любые договоры, когда стороны находятся в разных странах - филькина грамота. Он конечно может подать на вас в суд, но удалённо ничего с вами сделать не сможет. И наоборот, если вы захотите с него чего-то добиться, то вряд ли будете подавать в суд по месту жительства заказчика. Это будет стоить оооочень дорого.

    Если ты пофигист, то можно забить.
    Я такие вещи не люблю, поэтому я бы убрал этот пункт. Ну либо сократил сумму до адекватной. Например 1000 евро.
    Ответ написан
    2 комментария
  • Как наследовать слоты в Vue?

    Djaler
    @Djaler
    Сеньор-помидор
    <template>
        <v-data-table>
            <template v-for="(_, slot) of $slots" :slot="slot">
                <slot :name="slot"/>
            </template>
    
            <template v-for="(_, slot) of $scopedSlots" #[slot]="scope">
                <slot :name="slot" v-bind="scope"/>
            </template>
        </v-data-table>
    </template>
    Ответ написан
    1 комментарий
  • Vue: Как использовать динамические имена в цикле v-for?

    yarkov
    @yarkov Куратор тега Vue.js
    Помог ответ? Отметь решением.
    Делайте геттер и там вычисляйте имя. Ну и соответственно возвращайте нужное свойство, а не строку, как сейчас.

    Например так: https://jsfiddle.net/yarkov_aleksei/1ub0enxq/
    Ответ написан
    2 комментария
  • Есть ли смысл в таком подходе к изучению Js и Vue?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Второй путь, однозначно.
    Не занимайся ерундой. Без знания языка изучать фреймворки бессысленно.
    Ответ написан
    Комментировать
  • На чем исполнять несложный интернет-магазин?

    neuotq
    @neuotq
    Прокрастинация
    Советую брать что-то готовое. Потому как если проект будет живой и работать, в любом случае будут вылезать те или иные косяки, недоработки и т.п.
    Так что берите например тот же вукомерс, базовый набор и вперед.
    По умолчанию ничего сложного, куча всего уже готово(интеграции и проч) легко кастомизируется. Это же можно сказать и про многие другие.
    Либо вообще выбрать платформу вроде insales.
    Писать свое не рекомендую. Тем более если условно простое. Больше смысла писать свой продукт под нечто большое, с уникальными требованиями и тп, на что потом будут готовы выделять ресурсы. А так будет просто мертворожденное решение и проблема у владельцев если нужно что-то допилить.
    Ответ написан
    2 комментария
  • Как такое сверстать?

    SeaInside
    @SeaInside
    16 лет пилю все эти штуки
    Вот здесь, например, делал когда-то такую вещь (блок "Этапы создания корпоративного сайта").

    605df09f637c9864487824.jpeg

    Идея, вкратце:
    1. Элементы размещаете просто в сетку с помощью inline-block/float/flex/grid - как привычнее.
    2. Родителю задаёте относительное позиционирование, в него помещаете абсолютный элемент на всю ширину/высоту с небольшим запасом, на котором будете рисовать SVG.
    3. Как нарисуется - на js считаете ключевые точки (координаты), через которые нужно провести линии.
    4. Динамически рисуете SVG по вашим ключевым точкам.
      О том, какие варианты вообще есть, можно почитать на MDN, например.
      Выглядеть это будет примерно так:

      605df0b0256ca826129561.jpeg

      В вашем случае рекомендую использовать кривые Безье. Здесь мне нужно было сделать полукруг, поэтому я использовал дуги, у вас же просто статичная величина закругления.
    5. На ресайз окна считаете ключевые точки заново и перерисовываете SVG.
    6. Опционально заморачиваетесь и добавляете сверху ещё один путь, который по скроллу будет "заполняться"


    Это в целом чёрная магия, можно полдня убить, но красиво :)
    Если это всё очень сложно, то просто картинкой вставьте, высоту элементов фиксируйте, и меняйте картинку для адаптивных вариантов.

    Готовых вариантов тут в общем-то вы вряд ли найдёте, нужно взять и разработать.
    У меня была идея оформить это в какую-то библиотеку, но как и все остальные идеи - и ныне лежит в туду-листе на 60+ пунктов. :)
    Ответ написан
    12 комментариев