
Oleh
25.07.2016
07:48:09
блин, может я неправильно поставил?
так вроде глобально ставил

Alex
25.07.2016
07:50:27
Ребят, кто-нибудь nginx upstream юзает?)

Максим
25.07.2016
07:50:29
а что именно ты ставил?

Google

Oleh
25.07.2016
07:51:28
sudo npm i -g mysql
да я понял, что уже что-то не то

Максим
25.07.2016
07:52:12
через npm ставятся пакеты ноды
это штука для работы с мускулем, а не сам мускуль
советую прочесть https://habrahabr.ru/post/243335/

Oleh
25.07.2016
07:55:03
спасибо)

Vyacheslav
25.07.2016
08:43:22
Всем привет! Вопрос по express: Есть файл, в нем я объявляю роуты след. образом:
app.use('/api/v1/:user', require('./routes/actions'));
app.use('/api/v1/:user', require('./routes/user'));
ну и собственно в файлах ./routes/actions.js экспортирую роутер от экспресса и юзаю как то так:
const express = require('express');
const router = express.Router();
router.post('/doAction', myfunction);
Ожидается, что для обращения к /doAction я должен обратится по адресу: /api/v1/someuser/doAction, оно так и работает, но почему - то req.params пуст. Можно его как то пробросить в myfunction?

Denis
25.07.2016
09:05:10
Про over engineering
Отличная статья от мейнтейнера www.devopsbookmarks.com про ряд заблуждений, которые могут привести вас к тому самому состоянию over-engineering'а в вашем проекте, которое мы все всегда стараемся избежать.
http://amp.gs/8BUH

Evgeny
25.07.2016
09:21:49

Vitaliy
25.07.2016
09:23:47
Выше писали что только для кеша
думаю все зависит от задачи - если у вас нет больших вычилений в памяти / реалтайм - то нода, если у вас предполагаются вычиления - то нода не подойдет - тк это один процес и ваши вычисления залочат всех, выбирайте java/golang/.netcore и тд

Alxander
25.07.2016
09:44:26

Vitaliy
25.07.2016
09:45:44

Google

Evgeny
25.07.2016
09:46:26
Их можно держать в памяти и переиспользовать. Я уверен что для этого есть уже модуль

Никита
25.07.2016
09:46:27

Alxander
25.07.2016
09:46:56
Ну фиг знает. Если у тебя там такие крутые вычисления, то почему бы и процесс не поднять. Его же не обязательно убивать потом.

Никита
25.07.2016
09:47:33

Vitaliy
25.07.2016
09:50:11
Их можно держать в памяти и переиспользовать. Я уверен что для этого есть уже модуль
Да можно, но зачем, если сама по себе нода не для вычилений создавалась,я о том, что более эффективно можно потоками внутри процесса управлять чем поднимать целый процесс для вычислений, просто все упирается в итоге в более эфективное управление ресурсами, вообще конечно, можно делать как выс казали спаунить и все, это уже выбор стратегии

Denis
25.07.2016
09:51:09
Сейчас в @devops_ru начался holly war на любимую тему :)
и да golang все таки лучше для больших систем чем bash
но чем же плох golang для больших систем?
Слишком простой.
а чем же это плохо, быстрое обучение разработчиков, быстрая разработка, простая поддержка, не надо тратить 10 лет как на тот-же С++

マイク
25.07.2016
09:55:22

Denis
25.07.2016
09:55:32
так это и не мнение, а просто набор букв.
коллеги, у нас есть некоторое количество инструментов. все они довольно грубые, неудобные, ненадежные.
но других у нас нет.
выбор инструмента под задачу - отдельное умение, которое важно получить и развивать.
golang, при всей свое богомерзкости и хайпе - отличный инструмент как раз для вот этого вот круга задач. лучше всех остальных, что у нас есть. и это важно.
PS
отдельного порицания заслуживают люди, которые убедили себя, что есть инструменты, которые хороши. Питонисты часто этим грешат, и перловики.

マイク
25.07.2016
09:55:45
В JIT вгрохано безумное количество человекочасов

Vladimir
25.07.2016
09:56:24
ну очевидно что JIT медленне чем AOT в статически типзированном языке

Paul
25.07.2016
09:57:01
Зато он in time. Гугли перформанс strftime js против сишного

Vladimir
25.07.2016
09:57:26
не смеши
js не может быть быстрее никогда

Никита
25.07.2016
09:57:39

Vladimir
25.07.2016
09:57:53
естетственно. там столько лишних проверок

Никита
25.07.2016
09:58:39
Ну, это смотря какая статическая типизация ещё.

Google

Никита
25.07.2016
09:58:51
А если у тебя, например, на вход подаётся мап определённого вида?

Vitaliy
25.07.2016
09:59:00
jit тоько при пером старте медленней - дальше идет кэширование машинного кода и сишный компилятор - поэтому особой разницы не будет, только первое время работы

Vladimir
25.07.2016
09:59:12
ну ребят, умоляю
jit может оптимизировать кусок кода неплохо - но при этом ему придется вставить куча проверок инвариантов

Никита
25.07.2016
09:59:48
Согласен.

Vitaliy
25.07.2016
09:59:54
ну я не говорил что такой же перфоманс, но где-то близхко к нему будет

Paul
25.07.2016
09:59:58
Дык, тебе не надо чтобы весь код был быстрый
Тебе надо, чтобы были быстры горячие места

Никита
25.07.2016
10:00:20
Но статическая типизация в языке не даёт тебе гарантии того, что один и тот же код будет быстрее в нём.
Например, если этот код — это функция, которая по какой-то причине жуёт мап.
Короткий.

Vladimir
25.07.2016
10:00:56
она дает максимум возможности для оптимизациии, при этом нет необходимости в деоптимизациях

Vladimir
25.07.2016
10:01:21
насчет мапов - ну может быть

Никита
25.07.2016
10:01:25
Это если форма всех параметров задана строго.
Тогда да.

Vladimir
25.07.2016
10:01:35
это и есть статическая типизация)

Никита
25.07.2016
10:01:41
Нет =)
В языке со статической типизацией тоже вполне можно написать неоптимизуемый через AOT код.

Vitaliy
25.07.2016
10:02:30
ну дак и в cpp есть virtual те динамическое использование типов, если не так поправьте меня, в этом плане там же тоже должно быть достаточно проверок - точнее поиск по графу объектов, как и в jit

Никита
25.07.2016
10:02:33
Это уже занудство, конечно.

Google

Vitaliy
25.07.2016
10:02:39
вобще нужны бенчмарки - так бесполезно)))

Vladimir
25.07.2016
10:03:15
ну оно медленнее, естетсвенно

Paul
25.07.2016
10:03:51
Vitaliy не так, virtual это про виртуальную таблицу, т.е. полиморфизм подтипов

Vladimir
25.07.2016
10:04:16
ну там есть indirection, он все замедляет конкретно
возможно это медленнее, чем оптимизированные объекты в v8
но это полиморфизм

Paul
25.07.2016
10:05:00
ну оно медленнее, естетсвенно
Надо определиться о чём мы говорим. В теории jit может быть быстрее, чем скомпилированный, потому что он знает на каком конкретно проце крутится и может сгенерировать сильно специфичный asm под это. Другое дело, что jit в основном в языках с большой динамикой и там это не сильно помогает.

Vladimir
25.07.2016
10:05:17
я говорю про jit в js конкретно

Paul
25.07.2016
10:05:25
Но при это метапрограммирование никто не отменял и вот тут jit точно впереди.

Admin
ERROR: S client not available

Paul
25.07.2016
10:05:32
jit в js не бывает
бывает jit в реализации

Vladimir
25.07.2016
10:05:37
профит от знания конкретного процессора вряд ли имеет значимый вклад

Paul
25.07.2016
10:05:50
Имеет

Vitaliy
25.07.2016
10:05:57
влияет - он же инструкции генерит специальные

Paul
25.07.2016
10:06:00
Зацени компиляцию под какой-нибудь i686 и -native

Vladimir
25.07.2016
10:06:32
я имеею в виду что jit в джаве и jit в js - не одно и то же

Vitaliy
25.07.2016
10:07:45
не могу понять что значит jit в js

Paul
25.07.2016
10:08:47
По сути одно и то же. hitspot (java) перегоняет байткод в машинный, а crankshaft (v8) — ast в машинный
(немного вру, ибо там не ast, а выхлом от неоптимизирующего компилятора)

Google

Vitaliy
25.07.2016
10:09:54
ну или msil в ютуе
.net
кстати у .netcore cli появился flag —native копиляцияя сразу в нативный код, интересно бенчмарк глянуть

Vladimir
25.07.2016
10:45:24

Vladimir
25.07.2016
10:48:58
и не только - он ей и противоречит

Vladimir
25.07.2016
10:51:12

Vladimir
25.07.2016
10:52:00
https://github.com/nodejs/node/issues/6673#issuecomment-218224365
один из примеров

Никита
25.07.2016
10:54:30
Разве не единственный?

Vladimir
25.07.2016
10:54:46
думаю нет

Никита
25.07.2016
10:55:01
Я просто только про него знаю.
Про порядок срабатывания в некоторых ситуациях.

Vladimir
25.07.2016
10:55:49
ребята из v8 так говорят про производительность: нативные промисы медленнее, потому что они вынуждены исполнять спеку

Никита
25.07.2016
10:56:36
Ммм. Недавно же они говорили что они не оптимизированы потому что потом займутся.

Roman
25.07.2016
10:58:08
Есть еще один случай: когда что-то сложное можно заменить простым
Например, регексп на поиск подстроки

Никита
25.07.2016
11:16:34
@vkurchatkin Слушай. По твоему совету решил посмотреть на flow ещё раз (прошлый раз был давно, тогда оно было какое-то очень кривое и дико тормозило).
И знаешь, просто волшебно работает.

Vladimir
25.07.2016
11:16:48
знаю)

Никита
25.07.2016
11:17:17
[ignore]
.*/node_modules/.*/test/.*только вписал, а то падало

Vladimir
25.07.2016
11:17:38
но иногда приходится шаманить с игнорами, это да

Никита
25.07.2016
11:17:51
Потому что там где-то в модулях в тестах были специально кривые файлы.