• Async/await и правильность codestye?

    Ну и конечно нужно отметить, что непойманное исключение не обвалит приложение, а просто заполнит промис ошибкой. В прочем, в будущем сделают, чтобы если вообще никто не ловит его, то обвалит (так будет на всех промисах, к самому throw это отношения не имеет).
  • Async/await и правильность codestye?

    Суть в том, что функция createUser по своей логике не должна отлавливать эту ошибку — её должны отлавливать те, кто эту функцию использует. Если этих "тех" тоже кто-то использует, то они тоже не должны отлавливать, и т. д.
  • Async/await и правильность codestye?

    const createUser = async (username, userid, auth_type, img) => {
    	let isRegister = await connection.query('SELECT username, userid, img FROM Users WHERE userids = ?', [userid]);
    
    	let query = (isRegister && isRegister[0] && (isRegister[0].username !== username || isRegister[0].img !== img)) ?
    		await connection.query('UPDATE Users SET ? WHERE userid = ?', [{username, img}, userid]) :
    		await connection.query('INSERT INTO Users SET ?', {username, userid, auth_type, img});
    };
    
    createUser(123, 123, 1, 123).then(v => {
    	console.log(1);
    }, err => {
    	console.log(2);
    });
  • Async/await и правильность codestye?

    Demian Smith,
    который юзает табы вместо пробелов

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

    Насчёт полного объяснения — ок, напишу статью на хабре или хотя бы развёрнутый комментарий, и скину сюда ссылку или этот комментарий. Видимо, гугл плохо объясняет, либо люди шокированы, когда им говорят, что стиль, в правильность которого их убедили — абсолютно неправильный :)
  • Async/await и правильность codestye?

    Ну и да, стоит конечно же выбрать современный код-стайл. Если в той фигне юзаются пробелы вместо табов, это говорит о том, что код-стайл устарел, и я бы всё-таки посмотрел в сторону другого код-стайла.
  • Async/await и правильность codestye?

    В "catch (error)" после catch тоже пробел стоит поставить.
  • Async/await и правильность codestye?

    ivanovSP, самое главное — это как раз, чтобы на месте табов юзались именно табы, а не пробелы, а на месте пробелов — пробелы, а не табы (не путать со смешиванием пробелов и табов — это ещё большее быдлокодерство, чем всё пробелами или всё табами). Пункт с пробелами и табами даже не обговаривается, иначе будет много головной боли. Tab indent space alignment не имеет ни одного недостатка (я пытался найти хотя бы малейший недостаток 3 года, и так и не смог).

    Всё остальное уже менее критично, и тут возможно, что такие популярные штуки на 60к звёзд подойдут (сам я точно не знаю). Конечно же, лучше перед введением каждого пункта проверить их на адекватность, чтобы не попалась какая-нибудь такая же падла, как с пробелами. Но, как я сказал ранее, остальные пункты менее критичны. Что-то конкретное я посоветовать не могу, т. к. не разбираюсь в вопросе.
  • Почему eslint принимает табы за пробелы?

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

    Предполагается, что вы сами должны использовать пробелы и табы в правильных местах. Конечно же, если слева от текущей позиции есть хотя бы один не табулярный символ, то при нажатии клавиши Tab IDE должен автоматически вставлять пробелы, а не табы, т. к. отступы бывают только в начале строки.

    Проблема бывает только в таких случаях:
    function test() {
    ->const a = 5,
    ->      b = 6;
    }


    Если при печатании "   b" нажать tab, то будет вставлен Tab, а не пробелы. Решений несколько:
    — Просто набирать 6 пробелов клавишей "пробел".
    — Вначале нажать один пробел, а дальше табы — они уже будут отпечатаны пробелами.
    — Забиндить Alt+Space — вставка 6 пробелов (именно это решение использую я).
    — Забиндить Alt+Space — аналог Tab, который всегда набирается пробелами.
    — Поставить умный IDE, который автоматически ставит нужное количество табов и пробелов даже без нажатия клавиши Tab / Пробел.

    В общем каждая сущность предназначена для своей цели. Ну и просто, если не следовать этому правилу, у людей будут серьёзные проблемы:
    — Если везде ставить табы, выравнивание поедет, т. к. у всех разная ширина таба.
    — Если везде ставить пробелы, вас будут проклинать за неправильный отступ. Я ненавижу отступ двумя пробелами, т. к. привык к четырём. Мне тяжело читать такой код, а тем более редактировать. Ну и просто это очень неприятно.
  • Почему eslint принимает табы за пробелы?

    DTX, ок, посмотрим, что Вы скажете, когда я перешлю Вам свой код с 20 пробелами вместо одного таба.

    А по факту меняют размер таба ВСЕ. Вы открываете чужой код — там всегда будет либо 2, либо 4, либо 3 пробела. Иногда может быть 6, 8 или что-то ещё. А вот мне надо ровно 4 и нисколько больше. Многим надо ровно 2 или ровно 3. Что им делать с вашими грёбаными пробелами?

    Да даже когда я один код пишу, который 100% никогда в жизни не увидит ни один человек (ЧТО ОЧЕНЬ МАЛОВЕРОЯТНО, НЕТ ЭТО РЕАЛЬНО МАЛОВЕРОЯТНО), всё-равно могут быть случаи, когда я решил открыть код на нетбуке, и он там не помещается. С табами такой проблемы изначально не будет, т. к. на нетбуке он всегда будет отображаться как 2 или 3 пробела, а на компе как 4.

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

    В общем все люди используют разную ширину таба и мне код, который написал какой олень с двумя пробелами, не нужен. Или с четырьмя <здесь подставьте любое число>. И вообще, таб выполняет свою функцию, пробелы свою. Какого фига эти функции должны смешиваться?
  • Почему eslint принимает табы за пробелы?

    DTX,
    в целом, ничего не мешает быть табам пробелами

    Не мешает? Вы в своём уме?) Я серьёзно.
  • Почему eslint принимает табы за пробелы?

    DTX, гуглите tab indent space align — там всё написано. Если гугл рекомендует (кто это?), ему нужно обновить свои знания — они явно устарели либо изначально были не достаточно велики.

    Всего существует 4 стиля:
    1. Всё пробелами — очень плохой стиль, и не должен использоваться никем.
    2. Всё табами — очень плохой стиль, и не должен использоваться никем.
    3. Отступы табами, выравнивание пробелами — идеальный стиль без единого недостатка. Вообще без единого. Даже маленького.
    4. Смешивание пробелов и табов — ну это вообще быдлокодерство.
  • Почему эта ошибка появилась?

    whiteleaf, PORTISINUSE — было бы немного странно, ведь IP может быть другой, поэтому порт сам по себе не должен влиять. А префикс "E" добавляется ко всем ошибкам. Ну с опусканием "IS", я думаю, итак всё понятно.
  • Почему после вызова промиса код не выполняется и процесс не умирает?

    Ну Вы не указали, что они у вас выводятся :) Тогда, наверное, дело в самом FindOne — возможно, он открывает какую-то дополнительную операцию/таймер, которые не дают завершиться.
  • Почему eslint принимает табы за пробелы?

    Хочу отметить, что если у вас реально стоят пробелы вместо табов — это ошибка (за исключением нескольких языков программирования). Почему — гуглить по запросу tab indent space alignment.

    PS. Когда табы вместо пробелов — это тоже ошибка :) Всё хитро :)
  • Почему могут быть такие медленные показатели nodejs + redis?

    frontendo, я ещё добавил про виртуалку в конце и в целом обновил ответ.
  • Какими раскладками клавиатуры вы пользуетесь для набора текстов?

    lukoie, ТС не указал, какой язык ему требуется. Соответственно, я рассказал по тем языкам, с которыми сам сталкивался.

    Хотя перечитал — ТС подразумевает Windows (хоть и не говорит это явно).
  • Почему WebGL такой медленный (с пустым шейдером)?

    vitaliy2
    @vitaliy2 Автор вопроса
    Алексей: Да, в FHD у меня тоже выдаёт 60 FPS даже на Intel, но при этом грузит карту аж на 70%! Обычная выдача белых пикселей грузит карту на 70%! Не, чёт перебор.

    Процессор 2014 года, Haswell, HD Graphics 4600.
  • Почему WebGL такой медленный (с пустым шейдером)?

    vitaliy2
    @vitaliy2 Автор вопроса
    Алексей: но ведь остальные программы как-то работают же. Хотя я начинаю догадываться, они либо сразу по нескольку пикселей рендерят в одном шейдере, либо не используют эти шейдеры, либо используют, но юзают CUDA, а не OpenGL, либо сам WebGL глючный, либо есть способы слегка пооптимайзить (тот же ShaderToy работает в 1.2 раза быстрее, ума не приложу почему), либо что-то ещё.

    Объяснить мог бы кто разбирается в теме.


    Мало пиксельных шейдеров

    Мне казалось, вся видеокарта из них почти и состоит. Как их может быть мало, ведь вроде вся графика по факту в играх в шейдерах же считается, или нет? И вроде даже на один пиксель может использоваться сразу несколько шейдеров. Я ошибаюсь?


    Поэтому просто так взять и поделить не вышло бы

    Да, неприятно, но есть хак: если у Вас при 1920x1080 рендеретит в таком же разрешении, просто поставьте в браузере масштаб 50%, и тогда он будет рендеретить в 4 раза больше, а потом даунскейлить до 1920x1080.


    А где смотреть загрузку карты?

    Я смотрю в GPU-Z.


    выше 60 он не показал бы

    Когда у Вас 60 FPS, имеет смысл смотреть не FPS (т. к. выше 60 он не будет), а загрузку карты.


    GT 730 384 ядра

    У Вас мощная версия видеокарты. Тот же Intel в 2 раза слабее, поэтому делите свой FPS на два (или умножайте загрузку на два).
  • Почему WebGL такой медленный (с пустым шейдером)?

    vitaliy2
    @vitaliy2 Автор вопроса
    Алексей:
    почти не грузит, CPU < 10%

    CPU и не должен грузить

    FPS 60

    А загрузка GPU какая?

    GForce 730

    Их там две, одна мощнее другой в 2 раза. У Вас какая?

    Ну и конечно же разрешение экрана – какое оно у Вас? Если 1920x1080, ставьте 3840x2160 или поделите свой FPS на 4.

    Но поставить 3840x2160 недостаточно, нужно ещё проследить, чтобы рендеринг был в таком же разрешении. На дисплеях повышенной чёткости большинство демок рендерят в более низком разрешении, поэтому приходится уменьшать масштаб в браузере.
  • Почему WebGL такой медленный (с пустым шейдером)?

    vitaliy2
    @vitaliy2 Автор вопроса
    Q001: На всех браузерах примерно одинаковый FPS. Кроме того, я пробовал на двух видеокартах (об этом написано в посте). На второй карте (nvidia) выдаёт 60 FPS, но грузит карту на 40%, что я считаю очень плохим результатом, учитывая, что я просто окрашиваю пикселы в белый цвет.

    У меня в разы быстрее

    А какое у Вас разрешение? Если 1920x1080, ставьте 3840x2160 или поделите свой FPS на 4.

    Но поставить 3840x2160 недостаточно, нужно ещё проследить, чтобы рендеринг был в таком же разрешении. На дисплеях повышенной чёткости большинство демок рендерят в более низком разрешении, поэтому приходится уменьшать масштаб в браузере.