• Как ждать выполнение функции внутри другой функции?

    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
    Софт для автоматизации
    Здесь 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 комментария
  • Что изучать первым после JS, TypeScript или React?

    @romaro
    Мне кажется, TypeScript, т.к. он помогает провести ревизию знаний JS. И с Реактом потом будет проще. Ну и если заинтересует разработка под .NET, на C# будет комфортнее переходить при хорошем понимании TS.
    Ответ написан
    Комментировать
  • Почему этот код работает?

    Anopeng
    @Anopeng
    Веб-программист, учу фронт и бек
    Всё правильно, метод возвращает false и первой выполняется ветка else, результат возвращается ожидаемый:
    let company = {
      sales: [{name: 'John', salary: 1000}, {name: 'Alice', salary: 600 }],
      development: {
        sites: [{name: 'Peter', salary: 2000}, {name: 'Alex', salary: 1800 }],
        internals: [{name: 'Jack', salary: 1300}]
      }
    };
    
    function sumSalaries(department) {
      if (Array.isArray(department)) {
        console.log('case 1');
        return department.reduce((prev, current) => prev + current.salary, 0);массива
      } else {
        console.log('case 2'); // Выполняется первой
        let sum = 0;
        for (let subdep of Object.values(department)) {
          sum += sumSalaries(subdep);
        }
        return sum;
      }
    }
    
    alert(sumSalaries(company)); // 6700 === 6700

    62851aa26453a190350750.png
    Ответ написан
    3 комментария
  • Как работает метод Object.keys?

    Maksclub
    @Maksclub
    maksfedorov.ru
    если методом reduce мы обрабатываем только массив названия ключей, то откуда внутри метода значения этих ключей?

    Вы итерируетесь по массиву с ключами (которые достали через Object.keys(obj) у объекта), но доступ к переменной obj то у вас остается и переменная никуда не делась и не изменилась, не пропала :), вот вы с ней и работаете
    Ответ написан
    Комментировать
  • Как вместо null подставить какое-нибудь другое значение?

    sslion
    @sslion
    function showTest(data) {
      const moviesEl = document.querySelector(".test");
    
      moviesEl.innerHTML = (data.title) ?? "что-то другое";
    }


    не катит?
    Ответ написан
    Комментировать