Задать вопрос
  • Почему Laravel не использует pivot таблицу?

    vfreelancer
    @vfreelancer
    php
    pivot таблица по умолчанию названия в ед. числе должны быть: protected $table = 'genre_movie'; иначе надо указывать явно
    Ответ написан
    3 комментария
  • Что выбрать Vegas Pro или Davinci resolve?

    Jairman
    @Jairman
    Тот самый
    Думаю для лёгкого монтажа это обе не самые простые программы и тяжёлые по размеру и производительности, поэтому, возможно, стоит ещё поискать аналоги.
    Давинчи бесплатный, это большой плюс, чтобы не пиратить (пиратить кринж). Плюс давинчи более современный и профессиональный, но весит больше и требовательнее. Но по простоте могу сказать, что для меня они были +- одинаковые, любая информация есть в сети интернет.
    Ответ написан
    2 комментария
  • Почему модель на сайте отличается от модели в блендере?

    @McBernar
    Модификаторы — это же математика в Блендере. Gltf об этом ничего не знает.
    Примените все моды, чтобы вся геометрия была реальной, а не параметрической.
    Ответ написан
    1 комментарий
  • Laravel Eloquent, where с несколькими вариациями значения столбца?

    iMedved2009
    @iMedved2009
    Не люблю людей
    потому что вы получаете запрос вида where status = 'active' or uid=2 or uid=6; и получаете все варианты.

    1. Использовать whereIn
    ->where('status',  '=' , 'active')
    ->whereIn('uid',  [2,6])
    ->get();


    2. Использовать обертку что бы получить запрос вида where status = 'active' and (uid=2 or uid=6)
    ->where('status',  '=' , 'active')
    ->where(function($builder){
      $builder->where('uid',  '=', '2')
          ->orWhere('uid',  '=', '6');
    })
    ->get();
    Ответ написан
    Комментировать
  • В чем можно хранить около триллиона значений key=>value?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Давайте прикинем объем который понадобится. Что такое триллион?
    Это 12 нулей. Или 1 000 000 000 000 элементов. Какая у нас data-row?
    8 + 64 символов типа ASCII (байт подходит чтоб покрыть все символы).
    Итого 72 байта на строку. Там можно еще поужимать биты в байтах но только
    сложность повышает а большой пользы для дела не дает. Пускай будет ASCII == 1 байт.

    Вобщем такой расчет

    72000000000000 байтов на весь сегмент данных когда таблица загружена.
    Или 65 терабайт. А сколько магнитных блинов надо прикупить? Возьмем популярный магнитный
    Western Digital Purple 10TB 7200rpm 256MB WD102PURZ 3.5" SATA III при цене 290$
    Порядка 7 штук надо. Вобщем готовте котлету денег 290$ * 7 = 2030$

    По поводу DBMS. Да key-value здесь подходит. Можно начинать с LevelDb или RocksDb но у них
    расход дисковой памяти на 1 строчку может быть больше чем я посчитал. Я ведь считал эконом-эконом
    вариант в виде бинарного типизированного файла где все записи строго по 72 байта. Сколько именно
    захватит РоксДб или ЛевлДб - чорт его знает. Вряд-ли документация об этом что-то говорит.
    Но берите 1% датасета. Загружайте
    и аппроксимируйте сколько выйдет после полной прогрузкуи. Это - надежный способ оценки.
    Ответ написан
    12 комментариев
  • Как в пхпшторме убрать навязчивые подчеркивания мнимых ошибок?

    delphinpro
    @delphinpro Куратор тега PhpStorm
    frontend developer
    Заменить на $request['content']

    Вообще мне не понятно, для чего сделан объектный доступ к переменным запроса. Возможно это используется внутри, или наследие прошлого. Но использовать его в приложении - так себе идея. Есть методы get(), input(), реализован ArrayAccess.
    Ответ написан
    1 комментарий
  • Есть ли смысл в spa laravel все делать через JS?

    @Kostik_1993
    Web Developer
    Есть ли смысл в spa laravel,все делать через JS?

    Имеет смысл делать то что имеет смысл для конкретного проекта, а не стека
    Ответ написан
    Комментировать
  • Почему PHPStorm советует static для fn функций?

    miraage
    @miraage
    Старый прогер
    Не кодил на PHP 100 лет, точного ответа не подскажу. Однако идея, что статическая лямбда будет видеть меньше переменных -> проще для GC = уже кажется, как небольшая победа.

    https://www.designcise.com/web/tutorial/what-are-s...
    https://www.php.net/manual/en/functions.anonymous....
    Ответ написан
    1 комментарий
  • Должен ли программист выполнять роль девопса на сервере заказчика?

    @vitaly_il1
    DevOps Consulting
    По-моему, ответ простой - что было записано в договоре, то и обязан.
    Т.е. если речь шла о коде - то только код. Если договаривались о "запустить на сервере" - то надо ставить на сервер. Но вот о том, что для вебсервера используют Мак, я еще не слышал :-)
    Ответ написан
    11 комментариев
  • Как запустить миддлвар один раз?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    Запускаться он будет каждый раз.
    Но ему не нужно каждый раз выполнять определение страны.

    if (страна_не_определена) {
      Определяем страну
    }
    
    return $next($request);
    Ответ написан
  • Почему VUE не подключает компонент внутри другого компоненте?

    yarkov
    @yarkov Куратор тега Vue.js
    Помог ответ? Отметь решением.
    Имена разные дайте им для начала
    Ответ написан
    Комментировать
  • Как типизировать в ts?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Вопрос конечно в духе "я его того, а он мне нихрна, чаво это он". Где конкретика блин? Что именно за ошибка? Любая ошибка TS - это "ошибка типов", он для этого и существует. Что у тебя в route?

    Но окей, предположим, что route у тебя - это текущий роут vue-рутера, тогда ошибка у тебя скорее всего выглядит как-то так:
    TS7053: Element implicitly has an 'any' type because expression of type 'RouteRecordName' can't be used to index type '{ first: string; second: string; }'.   No index signature with a parameter of type 'string' was found on type '{ first: string; second: string; }'.

    Собственно прочитав текст ошибки можно уже догадаться, в чём проблема: у (неявно выведенного за отсутствием явного объявления) типа объекта pages есть ключи типа 'first' | 'second' | ..., но нет index signature типа string, т.е. не указано, что ключом может быть любая строка, а не только конкретные'first' | 'second' | ....
    route.name же после проверки на пустоту имеет тип string | symbol. Ты не можешь у объекта с чётко ограниченным набором ключей брать значение по произвольному строковому/символьному.

    Прямое решение в лоб:
    Задать тип pages позволяющий рандомные ключи, например
    const pages: Record<PropertyKey, string> = {
      first: 'Первая',
      second: 'Вторая',
      ...
    }

    Всё сразу заработает, но это не спасёт тебя от ошибок(например опечаток).


    Не менее прямой вариант
    (но с другой стороны):
    Кастануть нужный тип руками: ... = pages[route.name as keyof typeof pages]
    Ведь мы уверены, что name в route всегда будет одним из ключей pages. Уверены же?..

    Энтерпрайз решение(ничем не лучше предыдущих, зато выглядит солидно):
    Твой файл routes.ts:
    export enum ERoutes {
      FIRST = 'first',
      SECOND = 'second'
    }
    
    const routes = [
      {
         name: ERoutes.FIRST,
         ...
      },
      {
         name: ERoutes.SECOND,
         ...
      },
      ...
    ]

    В коде:
    const pages: Record<ERoutes, string> = {
      [ERoutes.FIRST]: 'Первая',
      [ERoutes.SECOND]: 'Вторая',
      ...
    }
    
    ... = pages[route.name as ERoutes]


    Надмозговое решение("как батька"):
    Твой файл routes.ts:
    const routes = [
      {
         name: 'first',
         ...
      },
      {
         name: 'second',
         ...
      },
      ...
    ] as const satisfies ReadonlyArray<ReadonlyRouteRecordRaw>;
    
    type ReadonlyRouteRecordRaw = Omit<RouteRecordRaw, 'children'> & {
      children?: ReadonlyArray<ReadonlyRouteRecordRaw>;
    };
    
    type ExtractNames<Route> = Route extends { name: infer Name } ? Name : never;
    type FlattenChildren<Route> = Route extends { children: ReadonlyArray<infer Children> }
      ? FlattenChildren<Children> | Route
      : Route;
    
    // с помощью магии ts вытаскиваем в тип RouteNames все заданные у нас имена маршрутов
    export type RouteNames = ExtractNames<FlattenChildren<typeof routes[number]>>;
    
    // с помощью магии же прокидывем их прямо в декларацию vue-router
    declare module 'vue-router' {
      export interface RouteLocationNormalizedLoaded {
        name: RouteNames | null | undefined;
      }
    }

    satisfies
    satisfies - новая фича ts 4.9, в предыдущих версиях того же можно добиться сделав обёртку вида:
    const narrowRoutesTypeWrapper = <T extends ReadonlyArray<ReadonlyRouteRecordRaw>>(routes: T) => routes;
    const routes = narrowRoutesTypeWrapper([ ... ] as const);

    И твой код заработает вообще без изменений (если в pages есть все нужные ключи).)
    Однако для удобства можно написать так:
    const pages: Record<RouteNames, string> = {
      first: 'Первая',
      second: 'Вторая',
      ...
    }
    Ответ написан
    Комментировать
  • В premiere pro 2022 не могу найти эффект camera blur, где его найти? Или его заменили на что то другое?

    используйте эффект "Gaussian blur"
    Ответ написан
    Комментировать
  • Как написать этот код на Laravel?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    А что этот код делает? Достает список аэропортов города?

    1. Создать таблицы cities и airports (обратите внимание – названия во мн. числе)
    cities:
    id | name | другие поля, если нужно
    airports:
    id | city_id | name | другие поля, если нужно

    2. Создать модели City и Airport (обратите внимание – названия в ед. числе)

    2.1 В модели City создать отношение один-ко-многим (в городе может быть несколько аэропортов)

    public function airports(): \Illuminate\Database\Eloquent\Relations\HasMany {}
        return $this->hasMany(\App\Models\Airport::class);
    }


    2.2 В модели Airport создать обратное отношение

    public function city(): \Illuminate\Database\Eloquent\Relations\BelongsTo {}
        return $this->belongsTo(\App\Models\City::class);
    }


    Теперь можно получать аэропорты города, и город по аэропорту

    $from = $request->input['otkuda'];
    $city = \App\Models\City::whereName($from) // По названию города
        ->firstOrFail(); 
    
    // или
    // $fromId = $request->input['otkuda'];
    // $city = \App\Models\City::findOrFail($fromId); // По ID города
    
    dump($city->toArray()); // Получили город
    dump($city->airports->toArray()); // Получили список аэропортов города


    $airportId = $request->input['airportId'];
    $airport = \App\Models\Airport::findOrFail($airportId);
    
    dump($airport->toArray()); // Получили аэропорт по ID
    dump($airport->city->toArray()); // Получили город, в котором этот аэропорт находится.
    Ответ написан
    5 комментариев
  • Ссылка на несуществующий класс. Меня не проклянут?

    BoShurik
    @BoShurik
    Symfony developer
    Опишите зависимость в require-dev секции + можно дать ссылку на пакет в suggest секции.
    Таким образом при разработке все зависимости будут устанавливаться, а при использовании библиотеки как зависимости - игнорироваться

    https://getcomposer.org/doc/04-schema.md#require-dev
    https://getcomposer.org/doc/04-schema.md#suggest
    Ответ написан
    1 комментарий
  • Закрытие бесплатного G Suite (Workspace), куда мигрировать?

    Rogihao
    @Rogihao Автор вопроса
    Руководитель
    Для тех, кто ищет ответ на похожий вопрос
    Выбрал решение от Яндекс

    Но Яндекс оказался с подвохом.
    Тарифы были
    Базовый - 153 ₽ за пользователя в месяц
    Оптимальный - 311 ₽ за пользователя в месяц
    Расширенный - 824 ₽ за пользователя в месяц
    На 03.12.2022
    Базовый - 249 ₽ за пользователя в месяц
    Оптимальный - 559 ₽ за пользователя в месяц
    Расширенный - 1399 ₽ за пользователя в месяц
    Бесплатный тариф для подключения убрали, возможно как-то к нему можно подключиться, но на сайте видимых способов нет.

    И главная подстава стала известна с 01.12.2022
    Яндекс всех с 17 апреле 2023 попросит на платные тарифы
    Скриншоты взяты из канала https://t.me/StepanCheltsov/2435
    638b07d0d3ca0248845660.jpeg
    638b07d80e541722537743.jpeg

    С таким непредсказуемым подходом не могу рекомендовать Яндекс для своего домена
    Ответ написан
    Комментировать
  • Как так оказалось, что часть Windows 10 не русифицирована?

    vla3d
    @vla3d
    У меня версия 19041. Такого пункта в данном месте нет.
    Возможно, вкладка добавляется драйверами на аудио (такое бывает например с тачпадом)
    Ответ написан
    3 комментария
  • Как нормально перегрузить функцию?

    К сожалению, в TypeScript придётся проверять через if.
    function dispatch<T>(key: DispatchKey<T>, value: DispatchValue<T>): void;
    function dispatch<T>(keys: DispatchKey<T>[], iterator: (key: DispatchKey<T>) => DispatchValue<T>): void;
    function dispatch<T>(
        keyOrKeys: DispatchKey<T> | DispatchKey<T>[],
        valueOrIterator: DispatchValue<T> | ((key: DispatchKey<T>) => DispatchValue<T>)
    ): void {
        if (Array.isArray(keyOrKeys) && typeof valueOrIterator === 'function') {
            setState((prev) => {
                const updated = keyOrKeys.map((key) => valueOrIterator(key));
                console.log(updated);
                return prev;
            });
        } else {
            setState((prev) => ({
                ...prev,
                [keyOrKeys]: valueOrIterator,
            }));
        }
    }
    Ответ написан
    7 комментариев
  • В чем преимущества TS?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    А ещё динамическая типизация сильно экономит время на написание кода - это очень нехилая оптимизация рабочего процесса.

    Это утверждение верно относительно языков с изначально статической типизацией против языков с динамической, но не верно для TS как такового. Если не использовать маньячные правила типа обязательного ручного проставления типов, то в 80% случаев TS сам прекрасно выводит тип, без лишних телодвижений.
    Огромное ускорение от типизированого автокомплита в IDE и отсутствия возможности, например, случайно кинуть в функцию объект вместо строки, с лихвой перекрывает оставшиеся 20%.
    Редкие случаи когда TS писал мне "какую-то хрень" и отказывался что-то делать, заставляя сидеть и разбираться - на поверку оказывались сильно неочевидными косяками в моём коде, которые могли бы привести к реальным багам.
    Ответ написан
    Комментировать