Задать вопрос
  • Правда ли, что 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 комментариев
  • Активно ли разработчики пользуются встроенными в Postgres функциями?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Кину 5 копеек по поводу работы с датами. Да это зло. Работа с датами в современном API это
    самый большой технический долг начиная с Unix, когда дата представлялась секундами с 1970 года
    в виде DWORD. Я не встречал ни одного языка программирования и ни одной DBMS где изначально
    была-бы какая-то очень строгая и математичная концепция работы с временем. Везде были ограничители
    в основном завязанные на примитивные типы либо на строки вариативной длины. В Java например
    долгое время экплуатировался тип java.util.Date который сегодня считается дыркой (мутабельность)
    и неточным и его заменяют на java.time.* семейство типов. Параллельно с ним где-то в космосе
    висит java.sql.Date который декларирован в интерфейсах JDBC как основа для БД. С ним-же и работают
    все драйвера реляционных бд.

    По поводу вычислений на application tier. В последнее время DBMS девальвировали. И в основном
    используются в микросервисах как хранилище таблиц без особой логики. В этом есть свои смыслы.
    Например удобнее тестировать и хранить 100% кода в языках Java/Node/C#. Это создает гомогенность
    языка в проекте. В противном случае логику пришлось бы неизбежно резать на 2 слоя и хранить
    половину в application и другую половину деплоить через flyway/liquibase в БД при этом еще и
    не забыть тестировать 100% совместимость тех-же функций для работы дат-времени (никто
    кстати невкурсе что в Oracle год может быть 9999 а java.util.Date мне удалось сгенерировать
    такую Aug 17 09:12:55 EET 292 278 994. .. оптимистичненько доживем до 290 миллионов
    лет хотя проблема comparison этих типов остается) Стандарты ISO помогают но они скорее
    декларируют намерения сохранить нужное значение. Вот и если вы новичек - то я гарантирую
    что вы словите кайф в попытке в Java разобраться в проекте какой тип дат вам брать. И еще
    помножите это все на типы данных БД (их там будет 4 штуки обычно. Парочка для зональных
    и парочка для локальных).

    Использовать или нет функции PG? Ответ - it depends. В некоторых случаях оптимизатор не видит
    индекса если ты делаешь неявный кастинг из строки в дату например. Я тут не уверен надо проверять.
    Но есть старая админская поговорка. Плохой execution plan - проверь типы данных в предикатах.
    Беда реально существует для Spark/Databricks и даже включена в учебный план. По крайней мере int/Long
    различается на уровне Catalyst-optimizer. Вобщем если вы - лентяй то можете лупить строки вместо дат
    и надеятся что SQL машина правильно интерпретирует. Если вы хотите быть точным то делайте CAST или
    to_date с явным описаловом YYYY-MM и т.д.

    Еще один поинт в части где хранить логику. Это я пишу просто для кругозора. Чтобы топик
    не циклился вокруг Постгреса а люди видели пошире. В классических БД данные качаются
    к клиенту.
    Тоесть делаете SELECT * из миллирад строк - и этот миллиард будет прокачан до конца
    когда вы читаете резалт-сет по сети. Такова парадигма. Или курсор. Но суть таже. А в BigData данные
    лежат на месте но к ним "ходит" код
    . Вот такой метафизический парадокс. Сами понимаете что
    тут получается что встроенных функций даже как бы ... и нет. Подчеркиваю разницу.
    Ответ написан
    3 комментария
  • Могут ли отказать в работе из-за административки 6-летней давности?

    @Drno
    Соц сети не указывай, кроме например 1 мессенджера. Остальное - твое личное дело, шли нафиг
    Если будут вопросы - рабочей соцсети нет (типо гитхаб к примеру), а личные я указывать не буду, т.к. это мое личное дело
    Административная - нет, всем плевать
    Ответ написан
    1 комментарий
  • Как исправить ошибку Scikit-learn?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну код писал не ты, просто взял откуда-то да и все. Ошибка элементарная. У тебя где то он должен подсветить не совпадают размерности массивов. (1,4901) - это матрица с одним рядом и 4901 колонкой, а второй массив одномерный. Предположу что ошибка происходит при рисовании графика, это matplotlib выдает такую ошибку.
    Я тебе сделал маленький пример с идентичной ошибкой.
    X = np.arange(0,4901)
    y = 1.2 * X + 3
    X = X.reshape(1,4901)
    plt.plot(X,y)

    Вот мой код выдаст такую же ошибку. Как поправить нужно привести размерности массивов, к виду при котором с ними можно работать. ну например либо plt.plot(X.reshape(-1,1),y) сработает либо распрямить X сработает plt.plot(X.ravel(),y). И так и так сработает. Ищи на каком plot'e у тебя ошибка и приводи размерности к подходящему виду.
    Ответ написан
    Комментировать
  • Будет ли влиять на SEO продвижение, если в имени изображения стоит ".png.webp"?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    абсолютно нет
    Ответ написан
    Комментировать
  • Как вывести только четные значения массива, не создавая новый массив?

    Stalker_RED
    @Stalker_RED
    при срабатывании return функця завершает работу, цикл не продолжается.
    Уточните что вы подразумеваете под "вывести" и что под "не создавая новый массив".
    Можно отфильтровать нативным Array.filter() но при этом создается новый массив.
    const result = arr.filter(n => !n%2);
    Если "вывести", это просто в консоль, то достаточно в вашем коде вместо return написатьconsole.log(arr[i])
    Ответ написан
    2 комментария
  • Выбор между оперативной памятью. Двухканал или низкие тайминги?

    @Drno
    2х канал
    Ответ написан
    Комментировать
  • Есть ли разница в процессоре 13600K и 13600 на мат. плате B760?

    xez
    @xez
    TL Junior Roo
    Разница определенно какая-то будет, на кмк она не стоит переплаты ни за Z чипсет, ни за разблокированный множитель.
    Ответ написан
    Комментировать
  • Почему низкая частота процессора под нагрузкой?

    @alexalexes
    Пора обслуживать систему охлаждения - менять термоинтерфейс (если была термопаста - использовать термопасту, если были термопрокладки - термопрокладки, и т.д.). Смотреть в каком состоянии плоскость площадок радиаторов - если не в плоскость выведена (кривой охлад), то нужно применить физическую силу, чтобы это исправить.
    Ответ написан
    4 комментария
  • Почему опасно в php выставлять неограниченное время жизни сессии?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Что сказать, если юзеры - склерозники, это их проблемы. Вечные сессии плохи тем, что, будучи единожды спёртыми злоумышленниками, они дают вечный доступ к аккаунту жертвы.
    Ответ написан
    Комментировать
  • Стоит ли переходить с FullHD на 2k?

    xez
    @xez
    TL Junior Roo
    Если и менять монитор - то сразу на 4к
    Ответ написан
    8 комментариев