• Возможно ли получить тип пропсов у child?

    neuotq
    @neuotq
    Прокрастинация
    Немного не ясно что вы хотите, вот это получать?
    type ReturnElementProps<T> = T extends React.ReactElement<infer P> ? P : never;
    
    type FormItemProps<
      C extends React.ReactElement,
      P extends ReturnElementProps<C>
    > = {
      getValueFromEvent: (...args: Parameters<P["onChange"]>) => void;
      children: C;
    };
    
    const FormItem = <
      C extends React.ReactElement,
      P extends ReturnElementProps<C>
    >(
      props: FormItemProps<C, P>
    ) => {
      // из пропсов вашего компонента берём дочерний элемент
      const { children } = props;
      // из пропсов дочернего берем onChange
      const { onChange } = children.props;
      //тест
      console.log("Child onChange cb", onChange.toString());
      return children;
    };
    
    export default function App() {
      return (
        <div className="App">      
          <FormItem getValueFromEvent={(event) => event}>
            <input onChange={(e) => console.log("Children e", e.target.value)} />
          </FormItem>
        </div>
      );
    }
    Ответ написан
    4 комментария
  • Какую камеру выбрать для наблюдения за животными и рыбками в разных условиях?

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

    Готовой камеры с батарейкой и ИК подсветкой нет... точнее чего то в списке требований не будет реализовано.

    Ну и чтобы был хоть какой то ответ - смартфон + карта памяти + ИПБ с поддержкой дополнительных батарей, по деньгам такое решение максимально дешевое, ну в коробку герметичную засунуть с охлаждением/подогревом (как ни странно на последнее можно потратить треть стоимости от всего остального). Софт, какой нибудь ip webcam для android, он и пишет, и удаленное управление по сети (камеры в локальную сеть объединить) и детектор движения и куча всего...

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

    Современные смартфоны уже имеют камеру с заоблачным соотношением цена/качество, особенно когда начинаешь считать стоимость специализированных уличных камер. Причем стало на столько это абсурдно, что производители смартфонов low и mid ценовых диапазонов уже давно блокируют функционал этих камер на использование только в официальном приложении 'камера', которую сложно автоматизировать, наверное чтобы не конкурировать с сектором камер. Я на смартфоне xiaomi a2 2018 года снимал звезды ночью, без оптики вообще, просто поставив выдержку 8сек, в городе (это с засветкой! в лесу там вообще можно было бы млечный путь снимать).
    Ответ написан
    1 комментарий
  • Какую камеру выбрать для наблюдения за животными и рыбками в разных условиях?

    hint000
    @hint000
    у админа три руки
    1. Большой объем памяти.
    Не делают камеры со встроенной памятью. Вернее, под заказ могут сделать что угодно, но такие капризы будут стоить огромных денег. Делают под карты памяти micro-SD - какую карту поставите, такая и будет. Но любой карты будет недостаточно для двухнедельной записи в высоком качестве. Поэтому решением будет простенький видеорегистратор (то, что называется DVR или NVR) с жестким диском.

    2. Мощная батарея.
    Это как раз легко. Почти все камеры видеонаблюдения питаются от 12 вольт. Видеорегистраторы тоже. Так что берёте автомобильный аккумулятор (дёшево и сердито) и тупо подключаете к нему оборудование. Ну ладно, не совсем тупо подключаете, предохранитель надо поставить, чтобы случайно не устроить лесной пожар. Приехали забирать записи - заодно привезли заряженный аккумулятор. Только нужно заранее проверить, как долго проработает конкретная камера с регистратором от конкретного аккумулятора. Может быть потребуется не один аккумулятор, их можно параллельно соединять. А если есть возможность штатно питать от сети, и только резервировать аккумулятором на случай пропадания напряжения, то для этого продаются специальные штуки - резервируемый блок питания для охранных систем (пожарная сигнализация, видеонаблюдение), на выходе у таких блоков 12 вольт. Другой вариант - источник бесперебойного питания с подключением внешних аккумуляторов (можно автомобильные подключать); например, такие ИБП применяют в частных домах для питания газовых котлов. Профессиональные ИБП-решения будут стоить на порядок дороже.

    3. помимо хорошей матрицы в камере и хорошей оптики, нужно ещё оценить расстояние, на котором хотите чётко видеть животных - от этого зависит выбор фокусного расстояния камеры; для разных случаев будете ставить разные камеры; либо камеры с переменным фокусным расстоянием, они несколько дороже. Также нужно выбрать угол обзора камеры. Нельзя сказать, что лучше широкий угол или лучше узкий, вы должны осознанно сделать выбор. Либо брать камеры с переменным углом (zoom, трансфокатор), они дороже. Как это работает: на узком угле обзора (максимальный zoom) вы видите на весь экран маленький кусочек слона, зато можете увидеть муху, если она сядет на это место; на широком угле (минимальный zoom) вы видите на экране всего слона, но муху не сможете различить, потому что она займёт один пиксель. Выбирать вам.

    4. Легко. Уличные камеры видеонаблюдения работают по несколько лет в жару, дождь, мороз. Но тут мы вспоминаем, что у нас кроме камеры ещё есть видеорегистратор, а вот он рассчитан находиться в сухом помещении при температуре хотя бы +10 градусов (ну можно рискнуть при +5, без гарантии). Если вместо жестких дисков взять SSD больших объёмов, то можно рискнуть и при 0 градусов, но будет дороже. Отдельно подумать, чтобы не было конденсата при перепадах температур (много мифов о конденсате; нужно понимать условия его образования). Если тянуть кабель от избушки в лес - не вариант, то подумать про Wi-Fi передачу с камеры (а регистратор в избушке). Но для рыб потребуется кабель хотя бы до берега (или радио-буй) - радиосигнал через воду почти не проходит (если мы не про связь с ПЛАРБ, там очень специфично). Ну или делать полностью герметичный бокс с камерой, регистратором и аккумулятором внутри.

    5. Режим ночной съемки.
    Трудный вопрос. Ночная съёмка реализуется двумя вещами одновременно: (1) инфракрасная подсветка, (2) отключение инфракрасного фильтра. Ну ладно, двумя с половиной, (3) высокая чувствительность матрицы за счёт электронного усиления. С фильтром всё понятно, камера умеет автоматически отключать его при снижении освещённости. Увеличение чувствительности существенно ухудшает картинку (изображение бывает "шумное", как будто рябь по всему экрану), это почти неизбежно, приемлемое качество получается только при очень хорошей подсветке. Так вот, подсветка. Она инфракрасная, человек её не видит. Но у разных животных разное зрение. Надо у биологов спрашивать, не будет ли это отпугивать некоторые виды. Конечно, многие животные, как и люди, не будут реагировать на ИК. Но уточнять нужно. И ещё, я понятия не имею, насколько эффективна ИК-подсветка под водой (нужно проверять), даже если рыбы на неё не будут реагировать. Впрочем, допускаю, что рыбам и обычный белый свет не будет мешать и не будет их отпугивать, если так, то можно попробовать видимую подсветку. Не забудьте, что подсветка тоже будет кушать аккумулятор, учтите при тестировании времени автономной работы. И последнее. Рыбы нередко имеют серебристый цвет. Они могут здорово отражать луч подсветки, так что можете получить на экране яркие пятна с потерей деталей. Отчасти такую проблему можно решить боковой подсветкой отдельным светодиодным прожектором (существуют ИК-прожекторы).

    6. Возможность трансляции изображения на ПК.
    На локальный ПК - без проблем, для каждого регистратора есть ПО для подключения к нему. Ну а передача через Интернет - сами же говорите - ограничена имеющимися каналами связи, никаких чудес тут не будет. Принципиально возможность есть. И если говорить о просмотре картинки в реальном времени (не записи), то многие камеры умеют транслировать одновременно два потока: один высокого качества для записи, другой грубый для проталкивания через плохой интернет-канал. Параметры потоков обычно можно настроить (разрешение, частота кадров, степень сжатия). И если им не терпится - пусть смотрят загрублённую картинку, и не сразу несколько камер, а по одной за раз, так и через плохой канал может пролезть. Т.е. не транслировать все потоки в институт постоянно, а по запросу: хотим посмотреть 7-ю камеру, кликнули на неё, посмотрели, а теперь хотим посмотреь 4-ю и т.д. С другой стороны можно и сразу несколько камер транслировать, но настроенных выдавать 1 кадр в секунду или 2 кадра в секунду (при этом локальная запись будет на честные 25 кадров в секунду).

    Итого: совершенно верно вам написал rPman, нужно решение. И оно даже не будет однородным, на каждой точке может потребоваться индивидуальный инженерный подход. У вас большая серьёзная задача. Ничего совсем уж уникального, ничего нерешаемого, но работы дофигища. Нельзя предложить вам какое-то готовое универсальное решение. Можно, но оно вам не понравится, и оно всё равно не будет готовое. Ищите исполнителей, закладывайте на работу кучу времени, не рассчитывайте, что все вопросы исполнители решат самостоятельно, они будут предлагать варианты, но потребуется и участие в обсуждении конечных заказчиков - учёных, пусть они люди занятые, но без обсуждения деталей с ними выйдет хрень, которой они же будут недовольны (а деньги уже потрачены). Так что планируйте потратить время занятых людей, без этого никак.

    И удачи вам в решении этой интересной задачи.
    Ответ написан
    Комментировать
  • Как лучше развернуть WiFi сеть в радиусе 500м?

    @alexalexes
    Проводом будет самое простое и надежное по помехоустойчивости решение, если нет непроходимых участков, где физически невозможно кинуть кабель. Только учтите, что вам на каждые 200м нужно будет устройство-повторитель.
    И второй фактор, если камера питается по PoE, то смотрите спецификацию этого PoE, дистанция для кабеля с технологией запитывания может сократиться до 100м.
    Ответ написан
    1 комментарий
  • Как лучше развернуть WiFi сеть в радиусе 500м?

    kiberspy
    @kiberspy
    А можно как-то получить хотя бы приблизительную план-схему? Или исходя из описания - тупо прямоугольник с камерами по углам - тогда нужно руки отломать в плечевых суставах за такое решение по видеонаблюдению...
    Или цель была только просмотр периметра? Вопрос "накуа" и главное зачем?

    С расстояния 500 м. вряд ли что-то можно увидеть толкового на другом краю... даже если поставить 2 камеры которые смотрят друг на друга - 250 м. с каждой не добавят информативности!

    Upd: возможно это - https://nadzor.ua/blog/videonabludenie/kakoj-ugol-... - немного добавит понимания
    Ответ написан
    6 комментариев
  • Какая оптимальная структура хранения кастомных классов в Laravel 11?

    @mrFlyer
    Имхо это не имеет ровно никакого значения, как вам нравится так и называйте и где хотите, там и храните. Тем более, что у вас со временем может таких папок оказаться несколько.
    Ответ написан
    6 комментариев
  • Почему в наутилусе папка распаковывается за 1 секунду, а в Windows 1 минуту?

    vabka
    @vabka
    Токсичный шарпист
    Потому что в винде zip очень древний и неоптимизированный.
    Лучше использовать winrar или 7zip для распаковки - тогда тоже будет быстро.
    Ответ написан
  • Почему компонент не получает данные от pinia?

    @MaxRyazan
    state: () => ({
        count: 0,
      }),
      getters: {
        doubleCount: (state) => state.count * 2,
      },


    без this
    Можно в доку заглядывать =)
    https://pinia-ru.netlify.app/core-concepts/getters.html
    Ответ написан
    2 комментария
  • Как исправить ошибку Your requirements could not be resolved to an installable set of packages?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    или установить расширение fileinfo в php
    или downgrade до php7

    но правильнее начать с установки актуальной версии laravel, 9я мягко говоря устарела
    Ответ написан
    Комментировать
  • Как добавить класс js?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Используйте всплытие событий. Вешайте обработчик на постоянно присутствующий родительский элемент.
    Ответ написан
    2 комментария
  • Какой вариант структуры файлов моделей в Laravel лучше?

    pLavrenov
    @pLavrenov
    Разработка сайтов
    app\Models\Post.php
    app\Models\Category.php
    app\Models\Tag.php
    app\Models\Order.php
    app\Models\Product.php

    И учиться проектировать базу данных без кучи мусора вроде OrderTag PostTag и тд

    Имхо: через какое-то время будешь туда только заглядывать чтобы вспомнить что-нить а если не лениться писать комментарии (ну и плагины ide всякие для удобства) то и вообще не будешь.
    Имхо2: в модули не сильно запаривайся - хлебнешь лишнего головняка. Рано или поздно для своего же удобства начнешь выносить часть функционала и найдешь свой путь.
    Ответ написан
    Комментировать
  • Какой вариант структуры файлов моделей в Laravel лучше?

    vhood
    @vhood
    Не забывайте отмечать решения
    Для маленького проекта разницы нет. Можно использовать тот вариант, что быстрее.

    Если хочется знать, есть ли архитектурный паттерн для группировки сущностей - то это DDD (Domain Driven Design). Судя по всему, можно выделать 2 агрегата - Shop и Blog.

    Однако, до изучения темы, лучше выстраивать архитектуру на основе известных принципов программирования.
    Ответ написан
    2 комментария
  • Как лучше инициализировать объект?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    типа, антипаттерн...

    но это все равно вызов метода в конструкторе, что не приветствуется.

    Бред. Вот кем не приветствуется - вот он пускай и не приветствует и тихо миро плавает в своем болотце. Спокойно вызывайте приватный инициализатор в конструкторе - это как раз нормально. Конструктор - это и есть инициализатор объекта. Он даже называется "конструктор" - сборщик объекта. Его для этого и придумали. Выносить часть инициализации из инициализатора - на самом неделе не самая умная идея. А вот разбить инициализацию на разные логические части и разнести в разные методы - как раз таки очень даже хорошая практика. Декомпозиция, небольшие и простые функции/процедуры и все такое прочее.
    Ответ написан
    2 комментария
  • Как использовать два или более "with" Laravel?

    yesbro
    @yesbro
    Думаю, помогаю думать
    В методе with ошибка у тебя, должно быть вот так

    with(['table1:column1,column2,column3' , 'table2:column1,column2,column3'])


    То есть если для with & withCount тебе надо 2 и более связи без уточнения запроса, то просто их перечисляешь в массиве без ключей. Если же нужно уточнять запрос, то ключом идет имя связи, а значение запрос.
    Ответ написан
    Комментировать
  • Как правильно прочитывать стрелочные функции?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    А что, стрелочные функции не принимают аргументов или не возвращают результат? Или делают это как-то иначе? Или они не являются функциями?
    Вопросы риторические.

    "Говорите" про них ровно так же, как про обычные. Когда окажется важным, что это именно стрелочная функция (а это бывает довольно редко), так и уточняйте.
    Ответ написан
    3 комментария
  • Как работает метод $request->accepts() в Laravel?

    @X110111
    Потому что */*, что означает любой тип.
    Ответ написан
    3 комментария
  • Как реализовать структу для каталога next.js?

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

    yesbro
    @yesbro
    Думаю, помогаю думать
    AWS_BUCKET=296643f3-forblitz
    AWS_URL=https://s3.forblitz.ru

    AWS_ENDPOINT или не задавать или попробовать https://s3.timeweb.com
    Ответ написан
    1 комментарий
  • Как зарегистрировать маршрут в Laravel с get-параметрами?

    yesbro
    @yesbro
    Думаю, помогаю думать
    Такой маршрут (c гет параметрами) зарегистрировать не получится. Делай без параметров, а уже внутри контроллера, который будет обрабатывать маршрут обрабатывай условия.

    Route::get('/', function(\Illuminate\Http\Request $request) {
        $id = $request->input('id');
        match($id) {
            'one' => $this->caseOne(),
            'two' => $this->caseTwo(),
            default=> $this->caseDefault(),
        }
    });


    Под параметрами маршрута скорее всего подразумевается когда ты передаешь данные через path, а не query string.

    Например

    Route::get('/page/{page}/{id}', function(\Illuminate\Http\Request $request, string $page, string $id) {
        dump($page, $id);
    });


    Для урл /page/example/10 будет выведено example и 10
    Ответ написан
    2 комментария
  • Почему не сбрасывается кеш шаблона Blade при его изменении?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    Если посмотреть в исходник блэйд-компилятора, то видно, что актуальность кэша проверяется по времени изменения файла (не его хэшу)

    public function isExpired($path)
        {
            // ...
            return $this->files->lastModified($path) >=
                   $this->files->lastModified($compiled);
        }
    public function lastModified($path)
        {
            return filemtime($path);
        }


    И тогда можно сделать вывод, что ваш FTP клиент не изменяет время модификации файла при его загрузке. Точнее говоря, он предотвращает изменение этой метки (устанавливает исходную).

    В шторме для этого есть опция "Preserve files timestamp" в разделе
    File | Settings | Build, Execution, Deployment | Deployment | Options

    небольшой секретик
    В любой непонятной ситуации – читай исходники. Там намного больше инфы, чем в документациях. =)
    Ответ написан
    4 комментария