Задать вопрос
  • Как спарсить текущую погоду в зависимости от месторасположения юзера?

    1. Зачем парсить, если существует куча сервисов с API?
    2. По geoip или как-нибудь ещё узнаешь локацию пользователя, и сопоставляешь со страницами на сайте.
    Например если пользователь в Алматы, то парсишь https://www.gismeteo.kz/weather-almaty-5205/
    А если в Астане, то парсишь https://www.gismeteo.kz/weather-astana-5164/
    Ответ написан
    Комментировать
  • Как реализовать зачет урока в реляционной базе данных?

    Все уровни выше users_on_lessons называются денормализацией - хранить эти данные необязательно, их можно вычислить из других по цепочке связей.
    "Правильно" в данном случае не существует, вы выбираете на каждом конкретном проекте между скоростью и консистентностью. Храните денормализованные данные? Тогда придётся обеспечивать их связность, чтобы не оказалось, что в users_on_lessons пользователь привязан к одному топику, а в users_on_topics к другому. Храните только "жёсткие" данные? Тогда будьте готовы считать нужное.

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

    0xD34F
    @0xD34F Куратор тега JavaScript
    Получаем все возможные ключи; под каждый создаём пустой массив; при обработке объекта из исходного массива бежим по массиву ключей, добавляем в соответствующий массив значение из объекта или дефолтное - в зависимости от наличия ключа в объекте:

    function groupValues(arr, defaultValue = null) {
      const keys = [...new Set(arr.flatMap(Object.keys))];
      return arr.reduce((acc, n) => {
        keys.forEach(k => acc[k].push(Object.hasOwn(n, k) ? n[k] : defaultValue));
        return acc;
      }, Object.fromEntries(keys.map(k => [ k, [] ])));
    }
    
    
    const result = groupValues(arr);

    Или, результирующий объект изначально пуст; при обработке объекта из исходного массива перебираем его ключи; если ключ отсутствует в результирующем объекте, создаём массив с длиной как у исходного, заполняем его дефолтным значением; записываем в массив в результирующем объекте значение под тем же индексом, который имеет обрабатываемый объект в исходном массиве:

    const groupValues = (arr, defaultValue = null) =>
      arr.reduce((acc, n, i, a) => (
        Object.keys(n).forEach(k =>
          (acc[k] ??= Array(a.length).fill(defaultValue))[i] = n[k]
        ),
        acc
      ), {});
    Ответ написан
    Комментировать
  • Имеет ли значение уникальность шаблона для сайта при продвижении в поисковых системах?

    opium
    @opium
    Просто люблю качественно работать
    Имеет но в плане ранжирования не входит даже в первую двадцатку, если все первые 20 фактов ранжирования сделаны на 5 то можно и шаблон уникальный
    Ответ написан
    1 комментарий
  • Cобрать правильно массив из сортирующего списка?

    Stalker_RED
    @Stalker_RED
    const items = document.querySelectorAll('.item');
    const sorted = [... items].map(item => item.dataset.id);
    console.log(sorted);
    Ответ написан
  • Какую базу данных использовать для такого проекта?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну, на основной вопрос уже ответили, а я освещу отдельную проблему, которая очень часто волнует умы юных падаванов.

    когда лучше реляционную и нереляционную использовать?

    Ответ на этот вопрос очень простой.
    Нереляционная БД - это НЕ база данных.
    А узкоспециализированное хранилище, которое может выполнять какую-то одну определенную функцию лучше, чем база данных. Это может быть кэширующий демон, или поисковый движок, или решение для аналитики, или какое-то подсобное хранилище для всякого мусора.

    Как только осознаёшь этот простой факт, то всё сразу становится на место:
    Если нужна база данных, то и использовать надо базу данных. Реляционную. Какую именно - в вашем случае не принципиально.

    Если вдруг проект пройдет стадию "неясные идеи", и выльется во что-то практическое, и даже появится какая-то нагрузка, то можно будет начать думать про использование одного или нескольких подсобных хранилищ в дополнение к базе данных.
    Ответ написан
    2 комментария
  • Где украли деньги?

    Использовал для этого телеграмм-бота от одного сервиса.

    Вообще это уже сильно пахнет скамом, так что я бы уже тут задумался.

    телефон и ноут рабочие, по левым сайтам с них не ползаю и лишнего не устанавливаю, так что вирус вряд ли мог подхватить;

    Сильное заявление, которое невозможно проверить.

    симка для аккаунта телеграмма куплена с рук (уже была верифицирована);

    Очень опасное занятие. Если симка для аккаунта создана в рамках корпоративного тарифа - "организация" имеет очень много контроля над ней. (Не буду утверждать, что доступно даже чтение смс, тк не знаком с возможностями)

    с использованием программы AmneziaVPN

    Вообще пахнет паранойей, но лучше её из исходников собирать. Не думаю, что тут она виновата.

    Вообще я ставлю на следующие варианты:
    1. Кто-то просто взял в руки твой телефон (или куда там у тебя ещё телеграм установлен)
    2. Владелец симки смог увидеть твои входящие смс и при этом знал заранее твой пароль от телеграма, либо смог его подобрать, либо смог сменить пароль, имея доступ к твоей резервной почте.
    3. Кто-то смог получить удалённый доступ к устройству, где установлен твой телеграм и ты залогинен.

    Проверь историю входов в аккаунт и активные сессии. Проверь, что ты знаешь обо всех активных сессиях и никто посторонний не имеет доступа к ним (это не какой-нибудь публично доступный компьютер, например)
    Ответ написан
    3 комментария
  • Как выбрать открытый проект на Python для поддержки?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Вливайтесь в сам проект по развитию Python-а. Там же много работы: Перевод, документация, библиотеки, CPython и др. Да. Сразу будет жесть как тяжело, но зато потом, потом будет такая визитная карточка, что достаточно быстро будете находить новую работу.
    Ответ написан
    2 комментария
  • Как выбрать открытый проект на Python для поддержки?

    @bromzh
    Drugs-driven development
    1) Выбираешь проект (для начала небольшой), которым пользуешься сам.
    2) Смотришь список issues
    3) Выбираешь ту, которую сможешь сделать сам (для начала лучше поправить небольшую багу)
    4) Форкаешь проект
    5) Реализуешь issue
    6) Гоняешь тесты
    7) Если всё ок, делаешь пулл-реквест автору
    8) Повторить

    Ну и главное, надо следовать общему стилю всего проекта и про pep-8 помнить.
    Ответ написан
    Комментировать
  • Как дополнительно оптимизировать загрузку изображений?

    @VegasChickiChicki
    Можете посмотреть в сторону тега picture. Для разных разрешений можно использовать разные форматы, не придется для 1080p монитора грузить 4к фотки. Так же почитайте о современных форматах изображений, их так же в теге picture можно указать(возможно придется сервер учить перегонять фотки в разные форматы, не знаю от куда вы их берете и есть ли такая возможность).
    Ответ написан
    Комментировать
  • Правда ли, что Node.js работает только с одним ядром процессора, и что с этим делать?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    Используйте pm2 на продакшене
    Он запустит Ваше приложение в кластере (настраивается конкретное количество процессов или по числу потоков cpu)
    Будет следить за потребляемой памятью и загрузкой процессора
    Сделает рестарт упавшего процесса
    Будет собирать логи (console.log, console.error), с плагинами можно настроить ротацию
    С плагинами можно прикрутить CI для пересборки и перезапуска проекта по webhook в git
    Ну и много чего еще
    Ответ написан
    3 комментария
  • Почему не научились ещё одно ядро разгонять до высоких частот?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Этот вопрос нужно адресовать к современной физике. Сделать такой процессор не очень сложно.
    Но сложно сделать его потребительски привлекательным. Все делатели процессоров в современном
    мире бьются за энергоэффективность. А с повышением частоты там просиходит (пускай физики меня
    поправят) квадратичное увеличение потребляемой мощности (к коэффциентиком). Вот сколько именно
    ватт я сейчас не скажу но величина будет неприятная. Тоесть 8 ГГц процессор будет греться как кофейник
    и будет потреблять более чем в 4 раза если сравнивать его с 2Ггц ядром.

    Еще я-бы рассмотрел такой вариант как влияние на здоровье человека. Выж понимете да. Вся современная
    радиопередающая техника (мобилы, Wi-Fi, Bluetooth) со всех сторон зажаты медицинскими нормами
    всяких международных контролирующих организаций. И не дай бох хоть одна организация докажет
    что вероятность поймать рак мозга растет там на 5% от такого процессора - загнобят санкциями.

    По поводу мегафлопов. Фактически производительность техно-стека (Процессор-Память-I/O)
    зависит не только от проца но и от всех устройств которые в стеке. И даже работая на 8ГГц
    ты скорее всего не получишь желаемого роста скорости майнкрафта на переходе от 4 х 2 Ггц просто по той
    причине что кеш и память и диск остались ровно теже самые.

    Да и вообще. Эпоха гигантизма в процессорах прошла. Щас все двигаются к узкой специализации
    CPU/GPU/TPU и к интернету вещей. И майнкрафт здесь никак не будет главным регулятором стратегии.
    Уж извини. Водное охлаждение тоже вещь такая себе. Узкий сегмент энтузиастов. Обычным людам это
    так же не надо как и квантовый комп.
    Ответ написан
    8 комментариев
  • Почему не научились ещё одно ядро разгонять до высоких частот?

    Майнкрафт это одноядерная игра

    Ошибаешься. Сам прямо сейчас в него играю и у меня прекрасно сжираются все 8/16 ядер процессора.
    Сервер майнкрафта также вполне успешно сжирал все ядра сервера, на котором я его запускал.

    но и другие игровые сервера тоже страдают этим

    Тоже ошибаешься.

    так почему intel не сделала ещё такой процессор где высокая частота вкупе с современной архитектурой?

    Потому что спроса блин нет - для всех задач сейчас нужно не менее двух ядер.
    Хочешь разогнать одно ядро? Да пожалуйста - отключаешь все ядра кроме одного в биосе и гони хоть до 6ггц до такого порядка Intel вполне успешно сам разгоняется через turbo boost. А экстремалы гонят и дальше, хоть и под азотом и не все экземпляры.

    Ограничение частот в физике, а не в каких-то волшебных оптимизациях. Если обратишь внимание - не существует чипов, которые работают на той частоте, которую ты хочешь в принципе.

    Вот, пожалуйста

    Покажи пальцем, где тут нагрузка на одно ядро
    64a72cd1383d7104481109.png
    Ответ написан
    1 комментарий
  • Как перенести базу данных postgresql с Ubuntu на windows?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если кратко - то в Ubuntu делают pg_dump а в Windows - pg_restore.
    Все остальное - это просто детализация этой инструкции.
    Ответ написан
    Комментировать
  • Как заставить работать одновременно фронтенд и бэкенд на одном порте?

    Один порт = одно приложение. Всегда. Обычно не бывает проблем из-за того что приложения работают на разных портах - это признак того, что возможно ты не ту проблему решаешь или не тем способом.

    Ты можешь поднять nginx (ну или caddy, раз уже определился) на 80-м порту и настроить его на раздачу статики и проксирование запросов.
    MongoDB останется как есть.
    Ответ написан
    2 комментария
  • Как сделать чтобы PHP скрипт по завершении работы отправлял на фронт уведомление?


    Или например при выполнении скрипта на бэке записывать в базу результат а фронт будет через 5 минут спрашивать бэк все ли готово?

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

    Я рекомендую всётаки озадачиться вебсокетами, тк это сейчас наиболее стандартный спобом общения клиента с сервером в реальном времени.

    Без вебсокетов можно попробовать server sent events, но лично я никогда ихне пробовал и не знаю подводных.
    Ответ написан
    Комментировать
  • Оправдано ли будет использование NodeJS в качестве бэкенда крупного приложения?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Оправдано ли будет использование NodeJS в качестве бэкенда крупного приложения?

    Если крупного - по нагрузкам и маленького по коду, вполне возможно. Если же предполагается крупная кодовая база, нода - это не лучшая идея.

    На ноде легко быстро говнять, это главное ее преимущество. Для крупных проектов на первый план, как правило, становятся: безопасность, поддерживаемость, тестируемость, расширяемость и надежность.
    Что бы сделать что-то действительно крупное вам потребуются драконовские соглашения, которые во многом будут противоречить идеологии этой платформы, которые в других экосистемах будут излишними.

    Приведу несколько примеров.

    Валидация аргументов, да можно заюзать typescript, как базу для этого, но есть момент: по хорошему, если вы вызвали некий метод с неправильными данными - его штатная работа не возможна, не плохо бы бросить исключение, но не все так просто, если ваш даже синхронный метод вызовется асинхронно - вы обязаны, либо сделать его сразу асинхронным и передавать ошибку, либо всюду хреначить try-catch, чего оптимизатор v8 не любит.

    С тестами асинхронного кода все очень плохо, вам придется обмазываться всякими proxyquire, sinon и т.д. При этом очень внимательно следить за очисткой состояния. Да, я понимаю, что моки и в других языках нужно юзать, но тот же proxyquire можно сравнить с php-шным runkit, что как бы вообще по хорошему трогать не надо, а придется. Примите также за исходную, что вы будете много времени тратить на то, что бы понять какой из тестов асинхронщины у вас сфейлился.

    Рано, или поздно у вас возникнет потребность в неком DI контейнере, привычный require 'myService' уже не прокатит. Пробросы зависимостей станут источником ошибок. Если вы не будете это дело покрывать функциональными тестами много ошибок обнаружите уже на stage сервере.

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

    Лука Никитин
    Не проводили тест, когда по 2 сервера и на ноду и на php?
    Ответ написан
    2 комментария
  • Оправдано ли будет использование NodeJS в качестве бэкенда крупного приложения?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Paypal и Netflix используют Node.js. У обоих нагрузки очень даже приличные.
    В плане масштабируемости думайте об архитектуре. Можно и на perl написать приложение, которое за секунду будет обслуживать миллион клиентов.
    Node.js будет прекрасно работать в качестве движка для типичного веб-приложения вроде магазина, чата или CRM. Если у вас очень много компонентов, например тысячи, логичнее приложение разбить на модули и сделать вместо одного приложения несколько, которые можно запускать по-отдельности (здесь уместно упоминание микросервисной архитектуры). Разумеется запросы нужно распределять с помощью балансировщика.
    Есть еще такая вот штука https://serverless.com/ - ее можно масштабировать практически до бесконечности. Были бы деньги.
    Node.js будет плохо работать в области процессинга данных, например генерация картинок, потоковая обработка видео, нейронные сети и т.д. Здесь лидеры C, C++, Go, Rust, Java.
    Можно даже создать гибридное приложение - большую часть выполнить на Node.js, а критичную по производительности на другом языке. Например генерация миллиона прайсов в сутки в старый xls или векторный pdf, упаковка в архив и рассылка - не самая лучшая идея для Node..JS. То же C++ здесь будет вне конкуренции.
    Ответ написан
    19 комментариев
  • Какие бесплатные icons лучше подключать?

    Get-Web
    @Get-Web
    Front-End Developer
    Лучше всего fontello, особенно если в дизайне есть svg иконки, их можно загрузить fontello и использовать как шрифт, при этом можно давать свои названия и префиксы, можно взять svg иконку с того же FontAwesome и подгрузить в fontello. И по итогу ничего лишнего, только то что нужно для конкретного проекта.
    Ответ написан
    5 комментариев