Задать вопрос
  • Зачем нужен jQuery для AJAX?

    Adamos
    @Adamos
    jQuery с AJAX - прекрасный индикатор того, насколько устарела статья ;)
    Пока не сдох Ослик и встречались всякие маргинальные мобильные браузеры, обработку запросов к серверу приходилось подпирать костылями на всякий нестандартный случай, и jQuery с этим уверенно справлялся. Сейчас стандарт устоялся, повсеместно соблюдается и актуальность этой подпорки околонулевая.
    Ответ написан
    5 комментариев
  • Почему у функции в setInterval "пишем" одни скобки а не две вызывая ее при замыкании?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Потому, что в setInterval() первым аргументом надо передать функцию (он сам вызовет её потом),
    а «без setInterval» — для получения результата надо эту же функцию ещё и вызвать самим.

    длинный ответ
    Функцию в JavaScript можно «положить в переменную», передать как аргумент при вызове другой функции или получить как результат вызова ещё одной функции. Так же как "строку" или число 42.

    В этом выражении, смотрите, есть не 1, а целых 2 стрелочки:
    (param) => () => {
      console.log("Выхлоп!" + param);
    }
    Две стрелочки, значит, тут две функции. Одна вокруг второй. Первая, та, что снаружи, принимает аргументом param, и возвращает вторую функцию () => { console.log("Выхлоп!" + param); } Причём вернувшаяся функция «запомнила» значение param внешней обёртки и будет его использовать. Это обёртывание называется «Замыкание» или "closure".

    Теперь скобки при вызове. У нас матрёшка из двух функций: function(){ return function() {}; }

    Чтобы вызвать внешнюю, нужны первые скобки: ((param) => () => console.log(param))(6) – этот вызов внешней с аргументом 6 даст результатом внутреннюю функцию, которая запомнила значение param. И мы имеем на руках внутреннюю функцию.

    Чтобы вызвать внутреннюю, нужны вторые скобки: ((param) => () => console.log(param))(6)()

    Итого, две функции — два вызова — две пары скобок.

    В setInterval() первым аргументом надо передать не конечный результат, а функцию — её вызовут через некоторое время, не сразу. Тут передают внутреннюю функцию. Поэтому скобки всего одни: с одними скобками получаем внутреннюю функцию.
    Ответ написан
    1 комментарий
  • VUE 3 как убрать эту ошибку?

    @Kostik_1993
    Web Developer
    Если компонент состоит из одного слова например Header то принято писать его TheHeader, TheFooter
    Ответ написан
    3 комментария
  • Безопастно ли использовать в laravel DB::select?

    DevMan
    @DevMan
    безопасно.
    люди, использующие фреймворки тупо для синтаксиса, а не используя их средства (query builder или модели? не, не слышал) – вообще бессмертные.
    правда, недолго.
    Ответ написан
    24 комментария
  • Как ждать выполнение функции внутри другой функции?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    async function load_page(num) {
      const response = await fetch(...);
      // редактирование html
    }
    async function go_to_post(post_id) {
      //код
      await load_page(page);
      //код
    }
    Ответ написан
    Комментировать
  • Как научиться декомпозировать задачи?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Переодически может появиться очень крупная задача вида "нужно то не знай что". Мне приходится с ней разбираться и если с первым этапом - конкретизация требований все более-менее понятно, то с дальнейшими действиями все совсем плохо.

    Ситуация - знакомая. Во первых это - не задача. Это issue типа investigation. Его результатом должен быть не финальный продукт а просто новый сет issues. Оценивать время можно как угодно. Можно писать 1 день для начала. Все равно никто не сможет оспорить вашу оценку.

    А совсем попа когда во время разработки понимаешь, что все должно быть не совсем так как ты запроектировал и приходится переделывать.

    Это - риски и их просто надо заранее проговорить на митингах. Просто сообщайте заказчику что задача - рисковая и если что-то не так пойдет - то время надо будет сдвинуть.
    Ответ написан
    Комментировать
  • Как научиться декомпозировать задачи?

    Adamos
    @Adamos
    Дробить задачу еще на более мелкие совсем не охота

    Ну и зря. Вообще-то технологиям планирования совместной работы уже не первый век, и важнейший этап - как раз выделение тех участков работы, которые критичны для начала работы на других участках, и подтягивание их на диаграмме Ганта как можно раньше, чтобы уменьшить простой. Потом уже менее критичные задачи ложатся на свободные участки и параллелятся относительно друг друга.
    Так, например, нас учили делать генплан строительства еще 30 лет назад. До популяризации в РФ всяких там Скрамов и Канбанов.
    Ответ написан
    8 комментариев
  • Почему не работает v-for для объекта?

    @plot_pa123
    У вас данные это объект ({{...}, {...}, {...}, ...}), попробуйте преобразовать объект в массив чтобы это выглядело вот так - [{...}, {...}, {...}]
    Ответ написан
    5 комментариев
  • Почему не видно метода класса?

    Alexandroppolus
    @Alexandroppolus
    кодир
    inputElement.addEventListener("input", function() {

    Замени это на
    inputElement.addEventListener("input", () => {
    Должно попустить
    Ответ написан
    1 комментарий
  • Существуют ли какие-то устоявшиеся паттерны, если я хочу всё приложение сделать в виде Laravel-Composer-пакетов?

    neuotq
    @neuotq
    Прокрастинация
    Насчёт конкретно подхода о котором вы говорите не скажу, скорее всего это плохая идея. Видел пару примеров несколько лет назад, бОльшая часть этих модульных подходов было нечто среднее между недомикросервисного подохода, с примесью разработки composer пакетов и элементами (концептуальными) плагинов wordpress.
    Или другой подход где "модули" laravel разделялись пространством имен и особой структурой, с некоторыми костылями для поддержки разделения кода. Этот подход формально лучше, но по факту обычное не нужное усложнение проекта. Но если вам интересно, можете изучить https://github.com/nWidart/laravel-modules
    Но как по мне, если уж и заморачиваться в подобном плане, то скорее наоборот отвязкой максимальной ядра приложения от любого фреймворка framework-agnostic подход.
    А так... Главный принцип, в целом кстати во многом пересекается с принципами микро сервисной архитектуры:
    есть определенная часть/логика приложения, которая может выполнять свою функцию независимо, которую могут писать разработчики независимо, можно выделить в отдельный пакет. Например, вы придумали свой крутой прокси изображений, и он как-то явно выходит за рамки вашей бизнес-логики приложения, более того возможно он пригодится в ваших других приложениях (или вы хотите поделиться с миром) делайте отдельный пакет.
    Ну и конечно у таких пакетов, могут быть зависимости в виде других пакетов.
    А вот прям делать декомпозицию приложения на пакеты, ради декомпозиции не стоит. Только если есть конкретный смысл что-то выделить.
    Примеры вот хорошие у Spatie https://spatie.be/open-source?search=&sort=-downloads .
    Там же можно посмотреть, как пакеты зависят друг от друга, например image от image-optimizer.
    Все их, достаточно популярные, пакеты вышли из практики разработки приложений для клиентов.
    Ближе к вашему примеру это проект Nova https://nova.laravel.com/ и тоже имеет кучу пакетов https://novapackages.com/ .
    Но здесь тоже нужно учитывать, цели самой Nova и почему такая организация. Сама Nova это как бы расширяемый прототип панели управления для CRUD приложений, она универсальная by design, поэтому и нужны доп пакеты, которые закрывают конкретные цели.
    Если у вас целевое приложение, то незачем его корневую бизнес логику куда-то выводить.
    Ответ написан
    1 комментарий
  • Rust мёртв, или только развивается?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Смотря для кого. Rust создавался как альтернатива C++ при разработке критичных к безопасности частей кода браузера Mozilla. По бенчмаркам он реально конкурирует с C++ но главное преимущество наверное в том что из него принципиально убрали возможность совершать тупые ошибки такие как использование null-pointers. Тоесть он - безопаснее чем С++. Но мне кажется что решение за использованием Rust - корпоративное а не частное.

    Надо просто мониторить появление соотв. вакансий.

    Ну а если вы - кодер бизнес-логики на Java/C# то вам Rust скорее всего не нужен.
    Ответ написан
    Комментировать
  • Хочу лучше разобраться с vue sfc, не могу найти нормальных примеров использования, где найти демки?

    @GrayHorse
    Устанавливаешь Vite получаешь готорый Hello World с SFC + script setup
    https://qna.habr.com/answer?answer_id=2119668#answ...

    Несколько онлайн примеров из моих предыдущих ответов:
    https://qna.habr.com/answer?answer_id=2120126#answ...
    https://qna.habr.com/answer?answer_id=2109080#answ...
    https://qna.habr.com/answer?answer_id=2097528#answ...
    Ответ написан
    Комментировать
  • Как понять чему равно "?q=" в ссылке, через jquery?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Здесь jQuery не нужен, делай так:
    new URL(location).searchParams.get('q');
    Ответ написан
    Комментировать
  • Как слушать события второго socket io соединения внутри компонента vue-js?

    @Zak0 Автор вопроса
    Привет, Матвей! Очередной раз отвечаю на свой же вопрос сам. Такая жизнь, такая жизнь.

    Ладно, в общем суть тут следующая: В компоненте можно выкинуть вообще vue-socket.io, как и vue3-socket.io.
    Соединение можно открыть локально при помощи "чистой" либы. Иногда сверкает ее упоминание в документации vue-socket.io, но почему-то она не устанавливается самостоятельно с vue-socket.io.
    Поэтому проверните на всякий:
    npm install socket.io-client
    Теперь отдельно импортируем уже в КОМПОНЕНТЕ
    import SocketIO from 'socket.io-client'
    Ну и теперь для соединения танцуем так:
    this.sessionSocket = SocketIO('',{
              path: '/bot/socket.io/'
            })

    Я использую пустой адрес и изменяю patch, т.к. проксирую это все дело через vite с целью избежать проблемы с CORS при тестировании.

    Ну и как это дело использовать:
    Отправить сообщение:
    this.sessionSocket.io.emit('test')
    А подписаться на событие:
    this.sessionSocket.on('test',()=>{
              console.log('Hello World)
            })

    Полная документация по этим танцам: https://socket.io/docs/v4/client-api/
    Ответ написан
    Комментировать
  • Как следует подходить к именованию API в микросервисной архитектуре?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Надо описать в документации все методы и endpoins. Лучше в открытом формате типа Swagger/OpenAPI. И показать их заинтересованным лицам. Тем кто будет этот API использовать. Вот если у них не будет вопросов - значит все понятно и хорошо. Если они будут говорить WTF - то надо все эти вотафаки аккуратно записать и исправить.
    Ответ написан
    Комментировать
  • Когда применять arr.reduce?

    Lynn
    @Lynn
    nginx, js, css
    По своей природе «задумка» reduce это свести массив к одному значению. То что иногда это значение может быть объектом/массивом это уже вариации.

    Классический пример это суммирование элементов массива.
    [1, 2, 3, 4].reduce((sum, val) => { return sum + val }, 0)
    // → 10


    Но порой reduce используют для каких-то «экзотических» задач. Например хочу объект с ключами которые хранятся в массиве:
    ['foo', 'bar', 'quux'].reduce((obj, key) => { obj[key] = true; return obj; }, {});
    // → { foo: true, bar: true, quux: true }

    На выходе мы получили объект, но концептуально мы всё ещё «свели» 3 значения массива к одному значению — объекту.
    Ответ написан
    Комментировать
  • Обьясните пожалуйста смысл строки?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    функция возвращает массив игроков. этот массив записывается в переменную cats и потом выводится в консоль

    вообще плохой тон использовать одну и ту же переменную для разных целей. Лучше было бы написать

    let players = runGames(gameRuleset, cats);
    console.log(players);
    Ответ написан
    Комментировать
  • Почему при указании namespace() в роутах laravel9 добавка приставляется в начало namespace контроллера?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    Не нужен там неймспейс

    use App\Http\Controllers\Admin\Post\IndexController;
    
    Route::prefix('admin')->group(function() {
       Route::get('/post', IndexController::class)->name('admin.post.index');
    });
    Ответ написан
    6 комментариев
  • Как обернуть строку в одинарные кавычки если браузер хром 84 ,после замены выдает строку с двойными?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    В строке "москва" вообще нет кавычек =))
    В строке "'москва'" – одинарные
    В строке '"москва"' – двойные
    Ответ написан
    2 комментария