• Wordpress - Как передавать в форме данные: "Откуда пользователь перешел на сайт"?

    neuotq
    @neuotq
    Прокрастинация
    В форминаторе есть похожий функционал, с помощь. скрытого поля можно реализовать, вот здесь документация. Попробуйте может вам подойдёт.
    Ответ написан
    Комментировать
  • На какую CMS перевести сайт на Livestreet?

    neuotq
    @neuotq
    Прокрастинация
    Труда будет в любом случае много, слишком специфичное у них было решение.
    На вашем месте я бы собрал максимально похожий аналог на Wordpress.
    А затем написал персональный скрипт миграции каждого типа сущности.
    Wordpress в данный момент самый популярный инструмент, не умрет я думаю долго долго.
    Второй вариант, это написать собственный движок поверх текущей структуры БД(с минимальными изменениями), например с помощью Laravel.
    Обе задачи вполне можно потянуть небольшой командой разработчиков(даже одним, но я бы для надёжности взял пару). Можно найти на фриланс биржах или в любом другом месте на контракт.
    Лично я советую первый вариант с Wordpress, тк там уже огромное число готовых решений и расширении функционала у вас меньше будет забот. Да и обновления будет легче делать чем при собственном движке.
    К тому же при собственном движке вам крайне желательно иметь штатных разработчиков(может и не на полную ставку) которые будут осуществлять техническую поддержку: обновление, закрытие багов, фичи и тп
    Ответ написан
  • Как правильно обновлять данные react после обращения к api?

    neuotq
    @neuotq
    Прокрастинация
    Изменения в UI до прихода данных с сервера - тн оптимистический подход (Optimistic UI updates).
    Советую следовать простому правилу: делать оптимистичные обновления в интерфейсе всегда, кроме случаев когда это критично для пользовательских сценариев(очень редко когда и где нужно). В таком случае ваше приложение будет ощущаться намного более отзывчивым, приятным и быстрым. Ошибки и откаты можно сделать потом, после прихода с сервера ответа с ошибкой.
    Советую погуглить "Optimistic UI updates", статей на этот счёт в разном контексте огромное число.
    Ответ написан
    1 комментарий
  • Для чего нужен грид в 24 колонки?

    neuotq
    @neuotq
    Прокрастинация
    Чаще всего используют 12 колонок. Причина в сравнении с красивыми 10 проста - большее количество вариаций делений при относительно небольшом числе колонок, учитывая исходные что ширина бОльшей часть экранов кратно 8. Поэтому может вернее будет назвать эту систему системой 8-пиксельной, тк шаг в 8 пикселей для большинства размеров(при хард сетке всё кратно 8, при софт только расстояния между элементами). Таким образом легко быстро выстраивается модульная сетка с приятным ритмом.
    Поэтому многие системы/фреймворки по умолчанию настроены на 12 колонок.
    24 колонки - можно условно считать вариацией для любителей чуть большей вариативности и тонкостей с шириной/расстоянием между колонками и шага в 4 пикселя и тонкой настройки золотого сечения на странице.
    Отдельно стоят любители 16 колонок(относительно популярный вариант), это, как другие менее популярные, уже частные случаи сетки и дизайна, где все в ручную подбирается, либо изначально допускается меньшая вариативность размещения элементов/колонок/модулей. Поэтому прям зацикливаться не стоит, исходите из своих задач и требований, полёта фантазии дизайнера.
    Ответ написан
    Комментировать
  • Как отправить письмо с Ларавель из-под Опенсервер?

    neuotq
    @neuotq
    Прокрастинация
    Если я верно понимаю openserver использует sendmail и сам уже в своих настройках разруливает всё дальше. Значит вам нужно в настройках почты проекта на Laravel указать в качестве драйвера почты сендмейл в файле .env
    MAIL_DRIVER=sendmail
    Ну и произвести настройки почты уже в самом open server согласно их документации.
    Ответ написан
  • Почему в laravel нет файла webpack.mix.js?

    neuotq
    @neuotq
    Прокрастинация
    С относительно недавних пор Laravel перешёл с вебпака на Vite, поэтому теперь при установке по умолчанию используется именно Vite.
    Если прямо очень хочется вебпак и микс есть официальное руководство. Но я рекомендую без крайней необходимости не переключаться на микс, с Vite работать в целом гораздо комфортнее, он намного шустрее.
    Ответ написан
    Комментировать
  • Как оптимально искать в большом массиве?

    neuotq
    @neuotq
    Прокрастинация
    Очевидный двоичный поиск. Рекурсивная функция, берёте элемент который по середине, сравниваете, отсекаете соответсвующую половину, и повторяете снова. В интернете полно примеров.
    Ответ написан
    1 комментарий
  • Как в форму вставить блок?

    neuotq
    @neuotq
    Прокрастинация
    Поместите всё в один общий блок. Вот я схематично набросал
    Ответ написан
    2 комментария
  • Как получить обьекты из массива по их значению?

    neuotq
    @neuotq
    Прокрастинация
    Используйте filter
    let ar = [
    {
    'name' : 'Vasya',
    'isCool' : true
    },
    {
    'name' : 'Sanya',
    'isCool' : false
    }
    ];
    
    ar = ar.filter(el => el.isCool)
    Ответ написан
    1 комментарий
  • Как сравнить input с другим select?

    neuotq
    @neuotq
    Прокрастинация
    Тут конечно много вариантов, лучше в целом переписать на чем-нить реакт подобном и сравнивать по данным перед рендером. Но если ваш пример, то можно использовать те же dataset поля чтобы проверять что уже добавлен такой.
    В моем примере я проверяю просто категорию, вы уже сами добавите нужные вам доп проверки
    /* Добавляем в li dataset поле category-id в котором будем хранить категорию
    По желанию добавляешь и другие
    а если подкатегории входят в категорию и каждая имеет только одного родителя то можно обойтись одной подкатегорией
    */
    $("#categoryAll").append(
        `<li class="flex group-form-elements" data-category-id="${cat1}">
            <div>
              <input type="hidden" name="incidentmain[]" value="${cat1}" class="incedentSelected">
              <span>${txt1}</span>
            </div>
            <div>
              <input type="hidden" name="incidentsubcategory[]"  value="${cat2}" class="subcatSelected">
              <span>${txt2}</span>
            </div>
            <div>
              <input type="hidden" name="IncidentDetection[]" value="${cat3}">
              <span>${txt3}</span>
            </div>
            <div>
              <span class="delCategory button delete">Удалить</span>
            </div>
         </li>`
      );

    Ну и в самом коде в проверках ваших делаем запрос, если такой элемент находится обрубаем исполнение
    if ( document.querySelector(`[data-category-id="${cat1}"]`)) {
        alert("Такую категорию уже добавляли");
        return false;
      }

    Весь пример, дальше дорабатывайте под себя:
    Ответ написан
    1 комментарий
  • Имеет ли смысл писать на Хабр статьи с рецензиями прочитанных книг?

    neuotq
    @neuotq
    Прокрастинация
    Советую попробовать в любом случае. Особенно если затрагивать контекст АйТи и разработчиков, в том смысле что зачем им подобное и почему стоит обратить внимание. Ведь мы все тоже люди. Ну, а если что можно всё это приправить соусом развития софт скиллов, чтобы душнилам критикам нерелевантного контента проприглушать рот ;-)
    Ответ написан
    Комментировать
  • Как установить необязательный префикс?

    neuotq
    @neuotq
    Прокрастинация
    Способ есть, через динамическое возвращение в префиксе, ну грубо говоря:

    Route::middleware('default_locale')
    ->prefix(request()->segment(1) == 'ru' ? request()->segment(1) : null )
    ->group(function () {
        Route::get('/', function (){
          return view('playground', [
            'language' => app()->getLocale()
          ]);
        });
    });

    Можно ту штуку в префиксе вынести в отдельную функцию, я написал кратко чтобы была понятна сама идея доп штуки с проверкой на все локали я думаю вы сами допишете.
    Ну и изменить сам Миддлвар оставив там только логику установки локали не устанавливая переменную locale.
    Ответ написан
    3 комментария
  • Laravel Scout + Потоки Был ли у кого подобный опыт?

    neuotq
    @neuotq
    Прокрастинация
    Можно обойти и сделать через searchable(),
    таким образом распределив модели через условие:
    Model::where('something', $currentBatchQuery)->searchable();

    PS а что так часто обновляются ключи для индекса?
    Ответ написан
  • Можно ли использовать шрифт Yandex Sans?

    neuotq
    @neuotq
    Прокрастинация
    Нет, нельзя. Последнее официальное заявление на этот счёт было однозначным:
    цитата про использование шрифта
    Многие спрашивают, планируем ли мы выложить новый шрифт в открытый доступ. Сейчас мы этого не планируем. Yandex Sans — голос нашего бренда, такой же как логотип Яндекса. Поэтому и использоваться он будет только в наших продуктах и коммуникациях. Apple и Google раздают свои шрифты открыто для того, чтобы разработчики приложений под iOS и Android могли ими воспользоваться. У нас такой задачи прямо сейчас нет, поэтому и отдавать наружу шрифт не планируется.

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

    neuotq
    @neuotq
    Прокрастинация
    Используйте библиотеку Carbon
    $postTimestamp = '2023-01-01 00:00:01';
    echo Carbon::parse($postTimestamp)->diffForHumans(Carbon::now());
    // "5 days before"
    
    //Локализация
    Carbon::parse($postTimestamp)->locale('ru')->diffForHumans(Carbon::now());

    Только изучите документацию подробнее, важно чтобы даты были в одном часовом поясе лучше всего хранить в UTC 0 и соответственно сравнивать тоже в нем. А уже если нужно вывести конкретную дату(дату и время, а не разницу), то тут перед выводом делать смещение, Carbon это тоже умеет.
    Ответ написан
    Комментировать
  • NuxtJS 3: Как сделать чтобы страницы могли изменять глобальное состояние приложения?

    neuotq
    @neuotq
    Прокрастинация
    Вы немного перемудрили, стор в данном случае вам не нужен, даже логически зачем. Ведь это не доп инфа от пользователя, какое-то дополнительное состояние приложение которое нужно отслеживать и тд и тп.
    У вас уже есть роутер, который управляет и держит в себе необходимое состояние и удобный доступ к текущему пути через useRoute или $route внутри vue компонента.
    Вот документация и на Vue
    https://router.vuejs.org/api/interfaces/routelocat...
    https://router.vuejs.org/api/interfaces/router.html.
    // Получим объект текщего пути
    const { currentRoute } = useRouter();
    /*
    Далее у него можно брать уже name, path и тп
    */
    
    <template>
      <header :class="{ 'is-absolute': isAbsolute }"></header>
    </template>
    
    <script setup lang="ts">
    const { currentRoute } = useRouter();
    /* Заменить на своё */
    const isAbsolute = currentRoute.name === 'index' ;
    </script>


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

    neuotq
    @neuotq
    Прокрастинация
    Всё нормально работает, как вы проверяете и какой элемент? Может вы не на тот элемент смотрите в инспекторе?
    Ответ написан
    Комментировать
  • Сколько headless браузеров удастся запустить?

    neuotq
    @neuotq
    Прокрастинация
    Примерные расчёты это, по CPU:
    от 0,5 до 1 x на ядро, значит у вас 80 - 160 ограничение по инстансам.
    По ОЗУ примерно:
    0,5 + 2 * X , - значит 128 / 2 = 64 , те 63 браузера примерно
    Берём меньшее из двух, значит около 60 одновременно работающих на обычным среднем сайте, бизнес, соц сети и тп, без сверх тяжёлых штук.
    По движкам брать тот, который надёжнее и предсказумее в вашем случае работает, в контексте скриптов, загрузки всяких штук, запросов и тп, почти всегда это хромиум(семейство).
    Ответ написан
    3 комментария
  • Как и где можно проверить, есть ли для изменения поля в laravel requests?

    neuotq
    @neuotq
    Прокрастинация
    Почему костыльно?
    Почитайте про sometimes - здесь мы говорим что валидировать если поле есть в теле запроса
    Ну и про усложнённую логику валидации.
    Скорее всего вам просто нужно вместо nullable, сделать sometimes и тогда вы будете валидировать поле, только если оно есть в запросе.
    Ответ написан
    4 комментария
  • Как сравнить такой массив?

    neuotq
    @neuotq
    Прокрастинация
    Пункт 0. Возможно есть способ сравнивать на этапе формирования нового массива и как то это хранить/помечать?
    Пункт 1. Не мучайте себя и других, а пробуйте поискать готовые библиотеки, например эту:
    array-diff-multidimensional
    Ответ написан