Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
-133 / 0 / 0
Регистрация: 07.01.2023
Сообщений: 116

Node.js 16 uuid выдает ошибку

27.01.2026, 19:51. Показов 2471. Ответов 44
Метки нет (Все метки)

вот ошибка
node:internal/modules/cjs/loader:936
throw err;
^

Error: Cannot find module 'uuid'
Require stack:
- C:\Users\user\Downloads\online-store-full-course-master\server\controllers\deviceControll er.js
- C:\fullstack-jwt-auth-master\server\router\deviceRouter.js
- C:\fullstack-jwt-auth-master\server\router\index.js
- C:\fullstack-jwt-auth-master\server\index.js
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (C:\Users\user\Downloads\online-store-full-course-master\server\controllers\deviceControll er.js:1:14)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (C:\fullstack-jwt-auth-master\server\router\deviceRouter.js:3:2 6)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'C:\\Users\\user\\Downloads\\online-store-full-course-master\\server\\controllers\\deviceContr oller.js',
'C:\\fullstack-jwt-auth-master\\server\\router\\deviceRouter.js' ,
'C:\\fullstack-jwt-auth-master\\server\\router\\index.js',
'C:\\fullstack-jwt-auth-master\\server\\index.js'
]
}
[nodemon] app crashed - waiting for file changes before starting...
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
const { uuid } = require('uuidv4');
const path = require('path');
const {Device, DeviceInfo} = require('../models/models')
const ApiError = require('../error/ApiError');
 
class DeviceController {
    async create(req, res, next) {
        try {
            let {name, price, brandId, typeId, info} = req.body
            const {img} = req.files
            let fileName = uuid() + ".jpg"
            img.mv(path.resolve(__dirname, '..', 'static', fileName))
            const device = await Device.create({name, price, brandId, typeId, img: fileName});
 
            if (info) {
                info = JSON.parse(info)
                info.forEach(i =>
                    DeviceInfo.create({
                        title: i.title,
                        description: i.description,
                        deviceId: device.id
                    })
                )
            }
 
            return res.json(device)
        } catch (e) {
            next(ApiError.badRequest(e.message))
        }
 
    }const { uuid } = require('uuidv4');
const path = require('path');
const {Device, DeviceInfo} = require('../models/models')
const ApiError = require('../error/ApiError');
 
class DeviceController {
    async create(req, res, next) {
        try {
            let {name, price, brandId, typeId, info} = req.body
            const {img} = req.files
            let fileName = uuid() + ".jpg"
            img.mv(path.resolve(__dirname, '..', 'static', fileName))
            const device = await Device.create({name, price, brandId, typeId, img: fileName});
 
            if (info) {
                info = JSON.parse(info)
                info.forEach(i =>
                    DeviceInfo.create({
                        title: i.title,
                        description: i.description,
                        deviceId: device.id
                    })
                )
            }
 
            return res.json(device)
        } catch (e) {
            next(ApiError.badRequest(e.message))
        }
 
    }}
изначально была установлена uuid 8.3.2
потом установил еще uuidv4 все равно выдает ошибку
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.01.2026, 19:51
Ответы с готовыми решениями:

Не запускается пакет node js - пакетами? npm? сам node? gulp?
Всем доброго времени суток. Есть такая проблема, пытаюсь перебраться на Linux (Ubuntu) Установил...

Выложил приложение Node js на хост, ошибка (node:12900) [DEP0005] DeprecationWarning: Buffer()
Выложил приложение Node js на хост, ошибка (node:12900) DeprecationWarning: Buffer() is deprecated...

Не могу с решениями задач на node js (я понимаю как их решить на js, но как на node js не знаю)
1) Однажды ковбой Джо решил обзавестись револьвером и пришёл в оружейный магазин. У ковбоя s...

44
Эксперт .NET
 Аватар для Usaga
14354 / 9457 / 1360
Регистрация: 21.01.2016
Сообщений: 35,653
03.02.2026, 07:44
Цитата Сообщение от Custos Посмотреть сообщение
Такая унификация касается и подходов при разработке.
Вроде бы и верно. Но очень вряд ли это касается ТСа, который скорее всего просто где-то увидел, что есть такой пакет и просто попытался его заюзать.
0
Software Engineer
 Аватар для Custos
334 / 338 / 55
Регистрация: 23.09.2014
Сообщений: 1,002
03.02.2026, 07:55
Цитата Сообщение от Usaga Посмотреть сообщение
Но очень вряд ли это касается ТСа
Да тут о ТС'е все уже забыли, обычный срач
0
424 / 313 / 115
Регистрация: 28.08.2013
Сообщений: 863
03.02.2026, 13:46
Цитата Сообщение от Custos Посмотреть сообщение
Очередная шиза с приплетанием гугла и т.д. Тут даже комментировать нечего. О гугле написал выше.
Очередной среднестатический прохер (пусть и с 16 годами "опыта"). Когда нет аргументов, пытает навалить кучу слов.
0
Software Engineer
 Аватар для Custos
334 / 338 / 55
Регистрация: 23.09.2014
Сообщений: 1,002
03.02.2026, 14:56
Цитата Сообщение от kidASM Посмотреть сообщение
Очередной среднестатический прохер (пусть и с 16 годами "опыта"). Когда нет аргументов, пытает навалить кучу слов.
В отличии от тебя все мои тейки подкреплены ссылками на пруфы. Но очередной обосравшийся фрилансер усердно продолжает их не замечать
От тебя же ноль пруфов хоть по какому-либо из твоих тейков. Просто бесконечный поток шизы, не имеющей ничего общего с реальностью.
Видимо ты мазохист и тебе нравится, когда тебя постоянно окунают лицом в фекалии. И ты усердно продолжаешь приходить в этот тред за новой "порцией".
Если же тебе не понятен смысл написанного, то просто пойди устройся куда-то на работу в нормальную компанию, а не сиди в помойке под названием "фриланс".
0
424 / 313 / 115
Регистрация: 28.08.2013
Сообщений: 863
05.02.2026, 17:03
Цитата Сообщение от Custos Посмотреть сообщение
От тебя же ноль пруфов хоть по какому-либо из твоих тейков.
Ждёшь чтоб я привёл очередную статью "best practice" (или код в github такого же уровня)? Как вариант, мозгами не пробовал пользоваться?
Цитата Сообщение от Custos Посмотреть сообщение
а не сиди в помойке под названием "фриланс"
Наверное "помойка", потому что конкуренцию не выдержал? И как следствие, пошел в найм, на зарплату.
Цитата Сообщение от Custos Посмотреть сообщение
Говнокод, это когда ты вместо условного O(1) наговнякал что-то типа O(n) или O(n^2), а то и хуже. Или когда не проверяешь данные пришедшие из неконтролируемого источника.
Как бы это не про проверку пришедших данных, а про сложность алгоритма. А в контексте Node.js, любой алгоритм (пускай даже самый быстрый) - это код, который занимает поток. И как следствие, - меньше rps. 16 лет "опыта", а базовые вещи не знаешь.
0
Software Engineer
 Аватар для Custos
334 / 338 / 55
Регистрация: 23.09.2014
Сообщений: 1,002
05.02.2026, 19:02
Цитата Сообщение от kidASM Посмотреть сообщение
Ждёшь чтоб я привёл очередную статью "best practice" (или код в github такого же уровня)? Как вариант, мозгами не пробовал пользоваться?
Ты для начала "best practices" научись без ошибок писать
Ну давай, приведи мне js best practices какой-то из крупных компаний, где прямо говорится о том, что ради микрооптимизаций, которые экономят какое-то мизерное количество тактов CPU в первое время работы приложения, надо приносить в жертву все остальное, что я перечислял выше. С удовольствием почитаю

Цитата Сообщение от kidASM Посмотреть сообщение
Наверное "помойка", потому что конкуренцию не выдержал?
Какую конкуренцию? От того, что ты считаешь фриланс пределом карьерных мечтаний, становится еще смешнее)
Фриланс - всего лишь отправная точка для разработчиков-новичков.
Это то же самое, если к посетителю ресторана пристанет студент-официант с вопросом "А ты чего официантом не работаешь? Потому что конкуренцию не выдержал?"

Цитата Сообщение от kidASM Посмотреть сообщение
И как следствие, пошел в найм, на зарплату.
Что за шизу ты несешь? Типа фрилансеры не наемные исполнители и работают не за деньги, а бесплатно?)

Цитата Сообщение от kidASM Посмотреть сообщение
Как бы это не про проверку пришедших данных, а про сложность алгоритма.
Очередной поток шизы. Ты где-то видел, чтобы в контексте Big O notation я утверждал обратное?
Это был один из действительно важных примеров говнокода, когда плохая реализация в алгоритмическом контексте куда критичнее, чем микроскопическая абстракция над UUID v4, которая будет съедена через какое-то время работы приложения JIT-компилятором после прогрева мономорфного кода. В случае выбора не самого оптимального алгоритма никакой JIT тут не поможет.
Перед тейком о валидации данных стоит "ИЛИ". Каким образом твой состоящий из маргарина мозг вообще слепил в кучу 2 разных примера? У тебя все настолько плохо с чтением и пониманием написанного?

Цитата Сообщение от kidASM Посмотреть сообщение
любой алгоритм (пускай даже самый быстрый) - это код, который занимает поток.
Вот это да, вот это "откровения" и "тайные знания". Заявление в стиле "2 + 2 равно 4, вода мокрая, огонь обжигает, ...".

Цитата Сообщение от kidASM Посмотреть сообщение
И как следствие, - меньше rps. 16 лет "опыта", а базовые вещи не знаешь.
Я уже устал заниматься твоим образованием. Тем более, что ты тупой как пробка и абсолютно ничего не понимаешь из написанного. Просто говорить в стену и то будет эффективнее, чем пытаться что-то объяснить тебе. Дальше давай как-то самостоятельно.
Начни хотя бы с самой самой базы. Открываешь гугл и ищешь по ключевым словам:
- nodejs source code github
- v8 source code github
- v8 jit compiler
- v8 maglev
- v8 hidden classes
- v8 fast properties
- v8 improved code caching
- v8 inline caching monomorphic/polymorphic/megamorphic
- software development trade-offs

Если ты даже после этого не поймешь почему лишний call + if на уровне исходника является допустимой ценой, когда на противоположной чаше весов стоит все остальное (о чем я писал в сообщениях выше), то медицина тут бессильна. Пациента проще усыпить, чем пытаться лечить.

В целом kidASM - наглядный пример того, почему во фрилансе нельзя задерживаться надолго.
Практически полное отсутствие развития и критического мышления. Можно говнякать как угодно, все равно нет других членов команды, кто мог бы это заметить и ткнуть носом. Полное непонимание как работают используемые им инструменты. NIH синдром, который приводит к активному "велосипедостроению" и полному игнорированию каких-либо общепринятых подходов в разработке.

Цитата Сообщение от Custos Посмотреть сообщение
Видимо ты мазохист и тебе нравится, когда тебя постоянно окунают лицом в фекалии. И ты усердно продолжаешь приходить в этот тред за новой "порцией".
Видимо я был прав
0
424 / 313 / 115
Регистрация: 28.08.2013
Сообщений: 863
05.02.2026, 19:43
Цитата Сообщение от Custos Посмотреть сообщение
best practice
Best practice - статья (единственное число)(как правило, но не только), как лучше писать код для определенной задачи. Но лучше, не значит производительнее. И это к сожалению, т.к. в современных реалиях, для программистов важнее быстро сделать какой-то результат, а производительностью потом возможно займутся, если будет в этом необходимость. Только потом, это переписывать очень много, и бизнес на это не согласен. Так гибнет большая часть хороших, полезных проектов.
Best practices - (множественное число) это набор статей, ссылаешься на нечто абстрактное, какая из статей?
Цитата Сообщение от Custos Посмотреть сообщение
От того, что ты считаешь фриланс пределом карьерных мечтаний, становится еще смешнее)
Где я это писал?
Цитата Сообщение от Custos Посмотреть сообщение
Фриланс - всего лишь отправная точка для разработчиков-новичков.
Мда!? Технический директор американского филиала Sony, с $325 в час для проектов на Node.js. Если это новичок, то какого же уровня Custos?
Цитата Сообщение от Custos Посмотреть сообщение
ради микрооптимизаций, которые экономят какое-то мизерное количество тактов CPU в первое время работы приложения
Уже хорошо, что признаёшь что разница всё-таки есть.
Цитата Сообщение от Custos Посмотреть сообщение
Говнокод, это когда ты вместо условного O(1) наговнякал что-то типа O(n) или O(n^2), а то и хуже. Или когда не проверяешь данные пришедшие из неконтролируемого источника.
Здесь ничего нет про алгоритмы, а про пришедшие данные из неконтролируемого источника есть.
Цитата Сообщение от Custos Посмотреть сообщение
Это был прямой пример того, что плохая реализация в алгоритмическом контексте куда критичнее, чем микроскопическая абстракция над UUID v4, которая будет съедена через какое-то время работы приложения JIT-компилятором после прогрева мономорфного кода. В случае выбора не самого оптимального алгоритма никакой JIT тут не поможет.
Алгоритмы нужны в Node.js? Node.js не PHP, где на каждый запрос выделяется отдельный поток.
Цитата Сообщение от Custos Посмотреть сообщение
Просто говорить в стену и то будет эффективнее
Обратись к психиатру. Разговаривать надо с людьми, а не со стеной.
Цитата Сообщение от Custos Посмотреть сообщение
В целом kidASM - наглядный пример того, почему во фрилансе нельзя задерживаться надолго.
Я где-то писал что занимаюсь фриласом? Можно уточнить где это было?
Цитата Сообщение от Custos Посмотреть сообщение
лицом в фекалии
Не показывай свой уровень, не позорься.
Цитата Сообщение от Custos Посмотреть сообщение
Видимо я был прав
Без комментариев.
0
Software Engineer
 Аватар для Custos
334 / 338 / 55
Регистрация: 23.09.2014
Сообщений: 1,002
05.02.2026, 23:18
Цитата Сообщение от kidASM Посмотреть сообщение
Best practice - статья (единственное число)(как правило, но не только), как лучше писать код для определенной задачи.
Best practices - подборка лучших практик в рамках одной статьи. Даже при попытке целенаправленно гуглить по "js best practice" на первой странице выдачи все равно будут статьи "best practices", так как это общепринятое историческое название для подобного рода статей.

Цитата Сообщение от kidASM Посмотреть сообщение
Но лучше, не значит производительнее. И это к сожалению, т.к. в современных реалиях, для программистов важнее быстро сделать какой-то результат, а производительностью потом возможно займутся, если будет в этом необходимость. Только потом, это переписывать очень много, и бизнес на это не согласен. Так гибнет большая часть хороших, полезных проектов.
В реальном мире стратегия при разработке нового проекта полностью опирается на ресурсы, которые компания готова выделить на этот проект: время и деньги. Далее, отталкиваясь от количества выделенных ресурсов и поставленной задачи, уже составляется MVP roadmap. Выбирается чем можно пожертвовать на начальном этапе, а чем нет. Классические software development trade-offs. И никто в здравом уме не будет наращивать технический долг уже со старта ради того, что лежит практически в плоскости zero cost abstraction. Особенно разумно предвидя, что сегодня нам надо обычный UUID v4, завтра UUID v7 для индексируемых полей в базе, послезавтра UUID v3/v5 для идемпотентности. А потом еще нужны парсинг, валидация, нормализация.
Также, если в проекте есть не выдуманные, а реальные cpu intensive tasks, то к решению этой проблемы сразу подойдут со стороны native addons, а не будут пытаться что-то там оптимизировать на js.

Цитата Сообщение от kidASM Посмотреть сообщение
Где я это писал?
Цитата Сообщение от kidASM Посмотреть сообщение
потому что конкуренцию не выдержал?
Косвенно попытался намекнуть на то, что якобы на фрилансе огромная конкуренция высококвалифицированных разработчиков, кровавый энтерпрайз это так, игрушки в песочнице, куда может встрять любой желающий.

Цитата Сообщение от kidASM Посмотреть сообщение
Мда!? Технический директор американского филиала Sony, с $325 в час для проектов на Node.js. Если это новичок, то какого же уровня Custos?
Снова шиза? Приплел еще сюда абстрактного "технического директора" (что соответствует роли CTO). Каким образом абстрактный CTO какого-то там подразделения Sony относится к фрилансу? CTO в больших компаниях (у Sony в том числе) это почти всегда штатная руководящая должность, а не фриланс. Также у японских корпораций (в том числе у Sony) есть заметная традиция ставить "своих" (экспатов из головного офиса) в часть ключевых ролей, особенно там, где важны контроль, координация и перенос корпоративных практик. Это по определению не "фрилансер".

Цитата Сообщение от kidASM Посмотреть сообщение
Здесь ничего нет про алгоритмы, а про пришедшие данные из неконтролируемого источника есть.
Я будто с хлебушком общаюсь, который даже читать не умеет...
Цитата Сообщение от Custos Посмотреть сообщение
И много еще таких "Или..."
Цитата Сообщение от Custos Посмотреть сообщение
Перед тейком о валидации данных стоит "ИЛИ". Каким образом твой состоящий из маргарина мозг вообще слепил в кучу 2 разных примера?
Также упоминание Big O notation в первом примере уже дает понять, что речь идет об алгоритмах и оценке их сложности.
Как кусочки маргарина в твоей черепной коробке соотнесли это с валидацией данных - совершенно непонятно.

Цитата Сообщение от kidASM Посмотреть сообщение
Алгоритмы нужны в Node.js? Node.js не PHP, где на каждый запрос выделяется отдельный поток.
Теперь твоя шиза каким-то образом переключилась на PHP... У тебя какое-то заболевание? К слову, php-fpm оперирует не потоками, а пулом воркеров (отдельных процессов), но то такое, кому эти мелочи нужны, правда?
Учитывая твое неумение выражать свои мысли хоть в какой-то понятной форме, я достану хрустальный шар и попробую пованговать, что же ты хотел сказать этим.
Давай угадаю, ты хотел мне поведать "страшную тайну" о libuv event loop locks?
Только в ответ я тебе поведаю еще более "страшную тайну", записывай: в Node.js никто не запускает cpu intensive tasks в контексте main event loop. Только тсссс, никому не рассказывай, это "страшная тайна".

Цитата Сообщение от kidASM Посмотреть сообщение
Обратись к психиатру. Разговаривать надо с людьми, а не со стеной.
Если человек тупой как пробка, то разговор с ним не имеет никакого практического смысла.

Цитата Сообщение от kidASM Посмотреть сообщение
Я где-то писал что занимаюсь фриласом? Можно уточнить где это было?
Все твои тейки идут с позиции типичного фрилансера + ты никак не стал опровергать мое изначальное предположение, что ты фрилансер в сообщениях выше. Теперь ты вдруг проснулся?

Цитата Сообщение от kidASM Посмотреть сообщение
Не показывай свой уровень, не позорься.
Активно позориться тут предпочел лишь ты. Учитывая, что черепная коробка у тебя заполнена маргарином и конструктивный диалог тут невозможен в принципе, так как любые пруфы ты продолжаешь игнорировать, то остается лишь стебать тебя, когда ты решаешь выдать очередную порцию шизы
0
424 / 313 / 115
Регистрация: 28.08.2013
Сообщений: 863
06.02.2026, 01:24
Цитата Сообщение от Custos Посмотреть сообщение
Best practices - подборка лучших практик в рамках одной статьи.
Если статья одна (т.е. одна тема статьи) и много лучших практик, ничего не смущает?
Цитата Сообщение от Custos Посмотреть сообщение
Особенно разумно предвидя, что сегодня нам надо обычный UUID v4, завтра UUID v7 для индексируемых полей в базе, послезавтра UUID v3/v5 для идемпотентности.
Уже стало классикой современных прохеро. Т.е. не знают что и зачем взбредёт в голову, сначала одно, потом другое. Более того, строки (UUID) в БД работают медленнее чем числа. А учитывая что часто для ID используется случайное UUID, то при записи новых строк базе приходится пересортировать колонку. И это то же не "бесплатно".
Цитата Сообщение от Custos Посмотреть сообщение
Далее, отталкиваясь от количества выделенных ресурсов и поставленной задачи, уже составляется MVP roadmap. Выбирается чем можно пожертвовать на начальном этапе, а чем нет.
Не знаю как мире живёшь, в моём мире MVP создаётся чтоб проверить идею, она вообще рабочая или нет. Если да, только тогда уже добавляются новые возможно к основе. А не наоборот.
Цитата Сообщение от Custos Посмотреть сообщение
если в проекте есть не выдуманные, а реальные cpu intensive tasks, то к решению этой проблемы сразу подойдут со стороны native addons, а не будут пытаться что-то там оптимизировать на js.
Если такой подход к JS коду, то мне страшно представить что накодят на плюсах.
Цитата Сообщение от Custos Посмотреть сообщение
Косвенно попытался намекнуть на то, что якобы на фрилансе огромная конкуренция высококвалифицированных разработчиков, кровавый энтерпрайз это так, игрушки в песочнице, куда может встрять любой желающий.
Именно что "косвенно". Т.е. это твои фантазии.
Цитата Сообщение от Custos Посмотреть сообщение
Каким образом абстрактный CTO какого-то там подразделения Sony относится к фрилансу?
Самым прямым. Он чуть меньше года, брал заказы. Просто от скуки.
Цитата Сообщение от Custos Посмотреть сообщение
CTO в больших компаниях (у Sony в том числе) это почти всегда штатная руководящая должность, а не фриланс.
Да, он был в штате компании. И у него было очень много свободного времени. Потому что код писал правильный с первого раза. В отличие от тех, кто не может определиться, какой же версии UUID использовать.
Цитата Сообщение от Custos Посмотреть сообщение
Также у японских корпораций (в том числе у Sony) есть заметная традиция ставить "своих" (экспатов из головного офиса) в часть ключевых ролей, особенно там, где важны контроль, координация и перенос корпоративных практик. Это по определению не "фрилансер".
Побольше фильмов смотри. Никакой бизнес не будет соблюдать традиции, если это не выгодно. Иначе, бизнес просто запросится.
Цитата Сообщение от Custos Посмотреть сообщение
Также упоминание Big O notation в первом примере уже дает понять, что речь идет об алгоритмах и оценке их сложности.
Как кусочки маргарина в твоей черепной коробке соотнесли это с валидацией данных - совершенно непонятно.
Валидация данных - это валидация данных (проверка) . Алгоритм - это последовательность действий. Перечитай что об этом ты писал ранее. (Хотя что-то мне подсказывает что это бесполезно.)
Цитата Сообщение от Custos Посмотреть сообщение
Теперь твоя шиза каким-то образом переключилась на PHP... У тебя какое-то заболевание? К слову, php-fpm оперирует не потоками, а пулом воркеров (отдельных процессов), но то такое, кому эти мелочи нужны, правда?
Читай внимательнее. Я упомянул PHP, а не php-fpm.
Цитата Сообщение от Custos Посмотреть сообщение
Учитывая твое неумение выражать свои мысли хоть в какой-то понятной форме, я достану хрустальный шар и попробую пованговать, что же ты хотел сказать этим.
Если не заметил, я мысль выражаю короче. Хотя бы символы посчитал.
Цитата Сообщение от Custos Посмотреть сообщение
Давай угадаю, ты хотел мне поведать
Не хотел.
Цитата Сообщение от Custos Посмотреть сообщение
Все твои тейки идут с позиции типичного фрилансера + ты никак не стал опровергать мое изначальное предположение, что ты фрилансер в сообщениях выше.
Зачем это делать?
Цитата Сообщение от Custos Посмотреть сообщение
Активно позориться тут предпочел лишь ты.
Детский сад, вторая группа.
0
Software Engineer
 Аватар для Custos
334 / 338 / 55
Регистрация: 23.09.2014
Сообщений: 1,002
07.02.2026, 02:38
Цитата Сообщение от kidASM Посмотреть сообщение
Если статья одна (т.е. одна тема статьи) и много лучших практик, ничего не смущает?
Меня лишь смущает то, как ты дожил до своих лет абсолютно не умея понимать смысл прочитанного. Вернись и перечитай заново.

Цитата Сообщение от kidASM Посмотреть сообщение
Более того, строки (UUID) в БД работают медленнее чем числа.
Мда... С тобой все еще хуже, чем я думал...
UUID - это 128-битный идентификатор (16 октетов), для которого стандартизованы:
- Двоичный формат (расположение полей/битов).
- Текстовое представление (hex + дефисы).
- URN-представление urn:uuid:...

Также в RFC буквально прямым текстом написано:
"As an implementation note, equality comparison can be performed on many systems by doing the appropriate byte-order canonicalization, and then treating the two UUIDs as 128-bit unsigned integers."

В СУБД для хранения UUID и манипуляций с ним есть соответствующий тип данных. Никто никогда в здравом уме не хранит UUID в базе как строку, и тем более не оперирует этим значением как строкой. Как я догадываюсь из шизы в сообщении выше, только макака под ником kidASM так делает.

Учитывая, что у тебя все очень плохо с чтением и пониманием написанного, специально для тебя выделю ключевую часть из всего этого:
Строка вида "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" - это лишь каноническая текстовая репрезентация 16 октетов (128 бит), которая не имеет ничего общего с тем, как хранятся и обрабатываются идентификаторы. Дефисы - не часть UUID. Это только форматирование для читаемости (группы 8-4-4-4-12 шестнадцатеричных символов). Иногда в системах встречаются форматы без дефисов или в фигурных скобках - это тоже репрезентации, а не новый идентификатор.

Цитата Сообщение от kidASM Посмотреть сообщение
А учитывая что часто для ID используется случайное UUID
Если ты просто макака-копипастер, которая бездумно копирует код с найденных в интернете примеров, то в твоем мире может все именно так и происходит.

Но если бы твой IQ состоял более, чем из 2 циферок, а также если бы ты мог хоть немного понимать смысл написанного текста, то мог бы попробовать осилить UUID RFC, а также базовые знания о том, как устроены классические B-tree индексы в СУБД (я даже не предлагаю разбираться с другими типами индексов).
Если бы ты осилил эту минимальную базу, то понимал бы почему использовать UUID v4 (как и любые другие варианты, которые ухудшают index locality) для индексируемых полей является очень плохой идеей.
Но так как ты обычная макака-копипастер, которая в принципе не понимает что это, как оно работает под капотом и в каких ситуациях что использовать, то можно переходить к следующей порции твоей шизы. Ты же все равно ничего не понял из того, что я написал выше.

Цитата Сообщение от kidASM Посмотреть сообщение
то при записи новых строк базе приходится пересортировать колонку. И это то же не "бесплатно".
Очередное подтверждение того, что ты в принципе не понимаешь что происходит под капотом и о чем ты там пишешь, пытаясь делать вид, что что-то понимаешь в этом.
Никакой "пересортировки колонки" не происходит, такой формулировки в принципе не существует в контексте СУБД. Просто очередной твой бред.
При использовании UUID v4 для индексируемых полей - с B-tree индексом будут происходить не самые лучшие вещи: вставки идут по всему дереву, page split (и очень часто - каскадный), фрагментация индекса, и другие непонятные тебе вещи.

Цитата Сообщение от kidASM Посмотреть сообщение
Не знаю как мире живёшь, в моём мире MVP создаётся чтоб проверить идею, она вообще рабочая или нет. Если да, только тогда уже добавляются новые возможно к основе. А не наоборот.
Если в твоем мире MVP собирается из говна и палок за несколько дней макакой-копипастером (у которого UUID - это просто строка, а в СУБД у него происходят "пересортировки колонки"), то это не значит, что у всех других компаний проекты такого же "масштаба".

Цитата Сообщение от kidASM Посмотреть сообщение
Если такой подход к JS коду, то мне страшно представить что накодят на плюсах.
Выше вроде бы уже разобрались с твоим уровнем "компетенций". Полное непонимание даже базовых вещей. О каком коде на плюсах ты там собрался что-то "представлять"? Для начала разберись хотя бы с js и СУБД.

Цитата Сообщение от kidASM Посмотреть сообщение
Именно что "косвенно". Т.е. это твои фантазии.
Что ж ты теперь заднюю даешь

Цитата Сообщение от kidASM Посмотреть сообщение
Самым прямым. Он чуть меньше года, брал заказы. Просто от скуки.
Ага, ну я так и понял, что у тебя в принципе нет понимания что такое роль CTO (Chief Technology Officer) в таком огромном транснациональном конгломерате как Sony Group Corporation. Для kidASM рандомный чувак с фриланса это уже сразу CTO. Понял понял.

Цитата Сообщение от kidASM Посмотреть сообщение
Да, он был в штате компании. И у него было очень много свободного времени. Потому что код писал правильный с первого раза.
Вот мы дошли до стадии, когда kidASM уже сам начал путаться в своих показаниях. Ты определись, это фрилансер или же штатный сотрудник?
Небольшой спойлер для тебя: человек на должности CTO (именно настоящий CTO, а не рандомный чувак, которому ты от балды повесил ачивку CTO) в компаниях уровня Sony не занимается написанием кода. CTO в большой корпорации - управленец и стратег, а не "главный программист", который сидит пишет код. Код он может писать разве что эпизодически (прототип, разбор критичного инцидента, ревью архитектурных решений), но это не основной способ приносить пользу и такое происходит достаточно редко.

> CTO огромной корпорации.
> "И у него было очень много свободного времени."
С этого прям в голос

Цитата Сообщение от kidASM Посмотреть сообщение
В отличие от тех, кто не может определиться, какой же версии UUID использовать.
А кто не смог определиться какую версию использовать? Кроме тебя тут таких нет.
Я даже в одном из сообщений выше расписывал какая версия для чего подходит. Но все тщетно, любая техническая информация (да и не техническая тоже) в твоей черепной коробке просто не усваивается. Абсолютно.
Как мы выше уже выяснили, суть и область применения UUID для тебя остаются полной загадкой. Для тебя это просто какая-то строка с циферками, буковками и дефисами.

Цитата Сообщение от kidASM Посмотреть сообщение
Побольше фильмов смотри. Никакой бизнес не будет соблюдать традиции, если это не выгодно. Иначе, бизнес просто запросится.
Каких фильмов? Тебя в очередной раз одолевает шиза? Sony зачастую заявляет о назначении топ-менеджмента публично и об этом можно наблюдать на ресурсах компании. Но зачем kidASM такие мелочи, правда? Главное ляпнуть какой-то бред, а вдруг прокатит и никто не пойдет проверять.
Про "Никакой бизнес не будет соблюдать традиции, если это не выгодно" в контексте Sony очень смешно слушать.
Достаточно понаблюдать за их мобильным подразделением. Количество линеек смартфонов сокращается, производство переносится в "банановые республики", качество падает, количество брака растет, цена летит в космос (за "Sony Xperia 1" просят больше, чем за большинство других флагманов). Часть железа - говно (некоторые сенсоры в блоке камер вообще из 2019 года). Родной софт смартфона - говно. Апдейты системы спокойно можно ждать пол года, а то и больше. Значительную часть остального софта (который является стандартным для остальных смартфонов) надо искать на Google Play, у Sony даже стокового диктофона нет. Продажи околонулевые, их смартфоны даже в Японии никто не покупает. У Sharp (другой японский производитель) и то продажи выше. Но бездарное руководство мобильного подразделения Sony упорно продолжает сжигать деньги в пустоту.

Цитата Сообщение от kidASM Посмотреть сообщение
Валидация данных - это валидация данных (проверка) . Алгоритм - это последовательность действий. Перечитай что об этом ты писал ранее. (Хотя что-то мне подсказывает что это бесполезно.)
Полное неумение понимать смысл написанного. Держи, может поможет: https://www.labirint.ru/top/zhukova/

Цитата Сообщение от kidASM Посмотреть сообщение
Читай внимательнее. Я упомянул PHP, а не php-fpm.
При чем тут встроенный web сервер в PHP? Никто в здравом уме его не использует в production окружении (да и в development тоже). Об этом буквально пишется в Warning секции на странице документации. Но даже во встроенном web сервере не происходит никаких "выделений потоков под каждый запрос":
- Встроенный web сервер по умолчанию работает в однопоточном режиме: "The web server runs only one single-threaded process, so PHP applications will stall if a request is blocked."
- С версии 7.4.0 через переменную окружения PHP_CLI_SERVER_WORKERS можно задать фиксированное количество воркеров, чтобы не блокировать выполнение на 1 запросе. Но вот же незадача, здесь воркеры - это отдельные процессы созданные через fork (из-за чего эта фича не работает на Windows), а не "потоки", о которых ты там бредишь. Также воркеры не создаются под каждый новый запрос, их количество фиксировано.

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

Цитата Сообщение от kidASM Посмотреть сообщение
Если не заметил, я мысль выражаю короче. Хотя бы символы посчитал.
Ты её в принципе не способен выражать. А любая твоя попытка влезть в технический спор заканчивается обсером, как на примерах выше.

Цитата Сообщение от kidASM Посмотреть сообщение
Зачем это делать?
И я о том же. Зачем фрилансеру пытаться отрицать, что он фрилансер.

Цитата Сообщение от kidASM Посмотреть сообщение
Детский сад, вторая группа.
Свои предпочтения можешь оставить себе, мне они не особо интересны.



-------------------
В целом ничего нового. Очередной поток шизы. Любая попытка kidASM начать какой-то технический спор (Node.js/UUID/СУБД/PHP) ожидаемо быстро заканчивается обычным обсером.
Предполагаю, что kidASM (судя по его вектору движения и упорству) метит на 1 место рейтинга самых бездарных и профнепригодных. Видимо планирует подвинуть с пьедистала нынешнего лидера - pgb.

Ну что ж, ждем развития событий в следующих сериях этого "сериала". Вдруг нашему пациенту удастся свергнуть pgb с трона.

kidASM, давай, не подведи. Жду от тебя еще более забористого потока бреда. Обязательно зайду на выходных почитать.
0
424 / 313 / 115
Регистрация: 28.08.2013
Сообщений: 863
07.02.2026, 13:08
Цитата Сообщение от Custos Посмотреть сообщение
Меня лишь смущает то, как ты дожил до своих лет абсолютно не умея понимать смысл прочитанного. Вернись и перечитай заново.
Это лишь доказывает, то не понимаешь разницы между правильно или возможные варианты.
Цитата Сообщение от Custos Посмотреть сообщение
16 октетов (128 бит)
И как по-твоему, 128-битное число поместится в 64-битный регистр процессора? (Я знаю о существовании 128-битных процессоров, но сейчас об обычных серверах, которые почти везде (в контексте Node.js и БД).)
0
Эксперт .NET
 Аватар для Usaga
14354 / 9457 / 1360
Регистрация: 21.01.2016
Сообщений: 35,653
08.02.2026, 07:56
Цитата Сообщение от kidASM Посмотреть сообщение
И как по-твоему, 128-битное число поместится в 64-битный регистр процессора?
Зачем ему туда помещаться?..
1
424 / 313 / 115
Регистрация: 28.08.2013
Сообщений: 863
09.02.2026, 15:45
0
Эксперт .NET
 Аватар для Usaga
14354 / 9457 / 1360
Регистрация: 21.01.2016
Сообщений: 35,653
09.02.2026, 16:10
Конструктивный диалог получается
0
424 / 313 / 115
Регистрация: 28.08.2013
Сообщений: 863
10.02.2026, 18:13
Цитата Сообщение от Usaga Посмотреть сообщение
Зачем ему туда помещаться?..
Для программиста это очень странное заявление.
Ок, расскажу почему.
1. Все устройства имеющие микросхему, могут только считать (базовая арифметика). И процессор (компьютера, смартфона, ...) в их числе.
2. Если мы отталкиваемся от 64-битной разрядности, то в регистр процессора может поместиться число разрядностью 64 бита (или меньше) (про вектора это отдельная история).
3. Предположим что в таблице (БД) более 100 млн. записей, и нужно найти одного пользователя. Если столбец id - это число, процессор загрузит число в регистр, увеличит его (может +1, может +985, зависит от алгоритма поиска). И это будет работать быстро. Но если столбец id - это UUID, тогда ко всем описанным операциям, ещё добавляется разделение числа на порядки (этот код добавляет компилятор/интерпретатор). И получаем, скорость выполнения кода, возведённая в степень количества запросов (в контексте Node.js).


Для статей "best practice" и для pet-проектов, это вполне нормально, разница не заметна. Но для реальных проектов, это медленно.
П.С. Всё это относиться к 64-битному процессору сервера. Но если процессор 128-битный, это не актуально.
0
Эксперт .NET
 Аватар для Usaga
14354 / 9457 / 1360
Регистрация: 21.01.2016
Сообщений: 35,653
11.02.2026, 06:38
Цитата Сообщение от kidASM Посмотреть сообщение
Ок, расскажу почему.
И ни один из пунктов не объясняет зачем UUID'у обязательно надо помещаться в регистр процессора. Третий пункт - вообще галиматья какая-то. Какие базы данных, разделения на порядки и количества запросов? Ты сам генерирует текста, лишь бы было что ответить?

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

Custos, походу прав оказался в своём глумлении над твоими словами. Я без наездов, но реально бредятину прочитал...
2
424 / 313 / 115
Регистрация: 28.08.2013
Сообщений: 863
11.02.2026, 13:49
Ок, давай поспорим?
0
Эксперт .NET
 Аватар для Usaga
14354 / 9457 / 1360
Регистрация: 21.01.2016
Сообщений: 35,653
11.02.2026, 16:12
kidASM, о чём? О правдивости твоих выдумок и домыслов? Так ты сам с собой можешь поспорить. Возьми, да проверь на том же PostgreSQL с двумя ключами, как я тебе выше уже предлагал.

Добавлено через 8 минут
Но даже без СУБД и UUID. Сам посыл твой звучит... бредово. Будто любая структура данных больше машинного слова становится почти не юзабельна. Я десять лет работал и не знал. А тут как гром среди ясного неба: если оно в регистр не помещается, то всё - капут. Однако.
1
Software Engineer
 Аватар для Custos
334 / 338 / 55
Регистрация: 23.09.2014
Сообщений: 1,002
12.02.2026, 05:53
Немного подзабыл об этой теме, но да ладно.

Цитата Сообщение от kidASM Посмотреть сообщение
И как по-твоему, 128-битное число поместится в 64-битный регистр процессора? (Я знаю о существовании 128-битных процессоров, но сейчас об обычных серверах, которые почти везде (в контексте Node.js и БД).)
Оно и не обязано никуда помещаться. RFC (откуда была приведена цитата) дает представление о семантике сравнения значений. Нигде нет никаких требований к деталям технической реализации.

Цитата Сообщение от kidASM Посмотреть сообщение
Предположим что в таблице (БД) более 100 млн. записей, и нужно найти одного пользователя. Если столбец id - это число, процессор загрузит число в регистр, увеличит его (может +1, может +985, зависит от алгоритма поиска). И это будет работать быстро. Но если столбец id - это UUID, тогда ко всем описанным операциям, ещё добавляется разделение числа на порядки (этот код добавляет компилятор/интерпретатор). И получаем, скорость выполнения кода, возведённая в степень количества запросов (в контексте Node.js).
У тебя был вагон времени для ознакомления с самыми основами того, как работает B-tree индекс в СУБД. Но зачем kidASM такая мелочь, как знания, правда? Ведь можно ничего не читать и продолжать нести чушь.
Я уже устал разжевывать базовые вещи. Пора тебе самому учиться читать. Просто начни хоть с чего-то, хоть с какой-то базы: https://www.postgresql.fastwar... ee-indexes

Цитата Сообщение от kidASM Посмотреть сообщение
Для статей "best practice" и для pet-проектов, это вполне нормально, разница не заметна. Но для реальных проектов, это медленно.
П.С. Всё это относиться к 64-битному процессору сервера. Но если процессор 128-битный, это не актуально.
На реальных проектах для твоих "невероятных" (по твоему мнению) 100 млн записей высота B-tree будет составлять в среднем всего 3-4 уровня. Для прохода по этому дереву потребуется ничтожное количество сравнений. Также для сравнения UUID фактически используется функция memcmp из libc (что прекрасно видно в сорцах), которая вылизана практически до предела в плане производительности.

Цитата Сообщение от kidASM Посмотреть сообщение
Ок, давай поспорим?
Уже задолго до тебя другие люди спорили и сравнивали. Вот как пример: https://ardentperf.com/2024/02... hmark-war/
Даже в скорости записи разница между UUID v7 и обычным bigint автоинкрементом находится на уровне погрешности. Заодно там можно наблюдать то, о чем я писал раньше - почему для СУБД не надо использовать UUID v4, а также почему нельзя хранить и оперировать UUID как строкой.

Только это самый самый примитивный пример, когда у тебя всего 1 сервер с базой.
А можно ведь "поспорить" в плоскости более реалистичных сценариев для больших проектов.
Например несколько таких сценариев:

1) Multi-region active-active (несколько датацентров, запись в каждом). В каждом регионе есть свой кластер PostgreSQL, между ними - логическая репликация (в т.ч. multi-master решения вокруг Postgres) для синхронизации данных.

2) Шардинг PostgreSQL (например, Citus или шардинг на уровне приложения). Данные разбиты на шарды (несколько PostgreSQL-узлов). Запись идёт в разные шарды параллельно. А потом еще может потребоваться ребалансировка ("переезд" данных между шардами).

3) Edge / Offline-first: удалённые узлы пишут локально и потом "догоняют" центр. Филиалы/устройства/edge-сервисы пишут в локальный Postgres (или локальный буфер), а позже отправляют данные в центральный Postgres.

4) Несколько независимых writer-сервисов (микросервисы) пишут в одну БД. Много сервисов/инстансов одновременно вставляют записи в одну таблицу (или несколько), но необходимо, чтобы ID создавался на стороне приложения, а не базы (чтобы не было "точки координации").

5) Event sourcing / CDC pipeline: события из разных источников сходятся в общий Postgres. События приходят из нескольких продьюсеров (несколько сервисов, несколько регионов) и складываются в "event store" или аналитическую таблицу в PostgreSQL.

6) Репликация в несколько потребителей (OLTP --> OLAP/архив), где важна "сливаемость". Основная OLTP-база реплицируется/выгружается в другие Postgres-кластеры (аналитика, витрины, архив), иногда с объединением данных из нескольких OLTP.

kidASM, расскажи мне как ты тут будешь решать проблемы с обычным bigint автоинкрементом. Очень интересно послушать.
0
424 / 313 / 115
Регистрация: 28.08.2013
Сообщений: 863
12.02.2026, 13:56
Цитата Сообщение от Usaga Посмотреть сообщение
Будто любая структура данных больше машинного слова становится почти не юзабельна.
Ещё один, такой же. Читайте внимательнее! Я не писал что любая структура данных становится почти не юзабельна. Я писал о том, что 128-битное "число" (UUID), работает медленнее чем 64-битное число. А в контексте БД с сотнями миллионов записей, это "медленнее" заметнее (а некоторых случаях, и становится критичным для производительности БД).
Цитата Сообщение от Usaga Посмотреть сообщение
Так ты сам с собой можешь поспорить.
Если считаешь это возможным (нормальным), сходи к психиатру.
Цитата Сообщение от Custos Посмотреть сообщение
Даже в скорости записи разница между UUID v7 и обычным bigint автоинкрементом находится на уровне погрешности.
Для БД из несколькими записями, да. А если в БД более 800 млн. записей, эта погрешность будет точно такая же?
Цитата Сообщение от Custos Посмотреть сообщение
kidASM, расскажи мне как ты тут будешь решать проблемы с обычным bigint автоинкрементом. Очень интересно послушать.
Здесь для того чтобы чему-то научиться?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.02.2026, 13:56

Запущенный сервер node.js в браузере ничего не выдает
Добрый день! Изучаю node.js по примерам. Есть арендованная VDS. Там создал поддомен...

Node.js | Запрос по http.request выкидывает в ошибку - throw er; // Unhandled 'error' event
Стоит мне задействовать метод request объекта http то я сразу вижу ошибку в консоли ...

Node http.createServer - listen EADDRINUSE: address already in use Как найти ошибку?
День добрый. Любые порты, оказываются занятыми. Node V: 18 В представленном коде...

Как исправить ошибку при использовании @qiwi/bill-payments-node-js-sdk для выставления счёта?
У меня есть следующий код. Если что, это на Nestjs, но без types, поскольку не смог их найти....

Ошибка Node.js Unexpected token ILLEGAL
var http = require('http'); var url = require('url'); http.createServer(function (req,res) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru