
A
17.03.2017
13:56:43
что сделать то надо
уже потерял

Sergey
17.03.2017
13:57:32
200k елементов в цикле перебрать, и во вложенном цикле еще 100k

A
17.03.2017
13:59:57
http://stackoverflow.com/questions/11874096/parse-large-json-file-in-nodejs

Google

A
17.03.2017
14:00:02
вот что советуют

Sergey
17.03.2017
14:01:04
Извините, может я не правильно поставил вопрос, и вел кого-то в заблуждение, или просто вы не внимательно прочли. Спасибо всем


Denis
17.03.2017
15:32:39
? Другой вопрос интересный.
При разработке больших приложений, часто необходимо управлять конфигурацией.
Например:
+ для develop разрешить Source Maps
+ для stage разрешить логирование на специальный
+ иметь для разных сред (develop, stage, prod) разные внешние сервисы логирования, и токены для них
+ отключить какие-то features для develop, но включить их для prod
+ иметь разные пресеты конфигураций одного приложения для разных продуктов/клиентов
+ разные стили / логотипы / описания
+ разные наборы языков (например, когда новый язык ещё в разработке, он может быть в stage, но не в production)
+ поддерживать только определенные языки на develop
Таких настроек может быть несколько десятков в крупном приложении.
Часть из них могут быть доступны для переопределения через ENV.
Кто как решает это? Какие практики и подходы есть в других экосистемах (Ruby, Elixir, Python и пр)?


Сергей
17.03.2017
15:34:43
я имею несколько нужных файлов конфигов js/json, мержу их между собой
юзаю dotenv и dotenv expand
окружение подгружается двумя переменными: NODE_ENV для development/production/test и APP_ENV для stage, public, nightly

Denis
17.03.2017
15:39:39

Evgeny
17.03.2017
15:40:45
Да в принципе тож самое. config, NODE_ENV+APP_ENV, реврайт через NODE_CONFIG

Denis
17.03.2017
15:42:16

Kanat
17.03.2017
15:44:35
не имею понятия, что тут твориться но стало интересно

Юрий
17.03.2017
15:56:09
У нас есть common-конфиги, содержашие некую общую конфигурацию или значения по-умолчанию. Есть отдельные patch-конфиги для каждой из сред. Работа с конфигами инкапсулирована в свой небольшой модуль-велосипед, поэтому никто напрямую require('./my_kewl_env.json') не пишет. Окружение тоже переключаем по NODE_ENV + специфичная переменая, уточняющая путь резолва конфигов.

Evgeny
17.03.2017
15:56:48
мне кажется, или все велосипедят config?

Roman
17.03.2017
15:57:51
конфиги это сложно. видел одного он писал свой лисп для конфигов

Юрий
17.03.2017
16:01:35
Я года полтора назад писал валидатор конфигов на основе JSON Schema, чтобы нельзя было запустить проект с невалидными конфигами. Со временем пришли к текущей архитектуре — common + patch. Она оказалась удобнее для разработки — внесение правок в схему у команды всегда сопровождалось болью.

Google

Eduard
17.03.2017
16:09:08
process.hrtime() return undefined
wtf?

Denis
17.03.2017
16:10:21

Evgeny
17.03.2017
16:10:56
Ну да, все ведлсипедят :(

Denis
17.03.2017
16:10:57

Сергей
17.03.2017
16:11:45

Юрий
17.03.2017
16:12:16
Увы. NDA )

Denis
17.03.2017
16:12:30
Омг
Фрагмент кода общего назначения под NDA? :)

Сергей
17.03.2017
16:12:54

Юрий
17.03.2017
16:12:55
Ну, не совсем NDA. Скорее ODA — Owner Doesn't Allow )

Denis
17.03.2017
16:13:17
Сюда его, на ковёр :)
https://www.npmjs.com/package/app-config
вот чё нашл

Юрий
17.03.2017
16:14:05
Попробую глянуть в истории репо, можно ли извлечь те наработки. Мы за это время успели выйти из MVP в нормальный прод, поэтому код очень сильно поменялся.

Evgeny
17.03.2017
16:14:40
Бля, да о чём вы все?
https://www.npmjs.com/package/config
Ну уж конфиги то не надо велосипедить!

Denis
17.03.2017
16:16:30
конфиги в стиле феникса: https://github.com/phoenixframework/phoenix/tree/master/installer/templates/new/config
в стиле рельсов: https://github.com/rails/rails/tree/master/railties/lib/rails/generators/rails/app/templates/config/environments
также в своих проектах не связанных с фреймворками использую:
http://stackoverflow.com/questions/14184971/more-complex-inheritance-in-yaml
и
https://github.com/markbates/configatron

Roman
17.03.2017
16:18:16
а вот статья от того самого товарища
http://letrectruth.ml/posts/cpp-snafu-conclusion.html

Google

Roman
17.03.2017
16:20:11

Denis
17.03.2017
16:22:14
https://goenning.net/2016/05/13/how-i-manage-application-configuration-with-nodejs/

Roman
17.03.2017
16:22:33
из того что я помню node-config не умеет сбрасывать кеш и работать нормально с кастомными env переменными


Mikhail
17.03.2017
16:22:46
? Другой вопрос интересный.
При разработке больших приложений, часто необходимо управлять конфигурацией.
Например:
+ для develop разрешить Source Maps
+ для stage разрешить логирование на специальный
+ иметь для разных сред (develop, stage, prod) разные внешние сервисы логирования, и токены для них
+ отключить какие-то features для develop, но включить их для prod
+ иметь разные пресеты конфигураций одного приложения для разных продуктов/клиентов
+ разные стили / логотипы / описания
+ разные наборы языков (например, когда новый язык ещё в разработке, он может быть в stage, но не в production)
+ поддерживать только определенные языки на develop
Таких настроек может быть несколько десятков в крупном приложении.
Часть из них могут быть доступны для переопределения через ENV.
Кто как решает это? Какие практики и подходы есть в других экосистемах (Ruby, Elixir, Python и пр)?
Сейчас решаю такой вопрос с помощью https://www.npmjs.com/package/config
У каждого нод-модуля свой конфиг, который мерджится с конфигом собираемого приложения
Так же реализовал подгрузку и мерж конфига от подмодулей, если они зависят от других конфигов модулей


Vladimir
17.03.2017
16:24:45
Все через ENV

Roman
17.03.2017
16:24:59

Vladimir
17.03.2017
16:25:01
Неа
Вообще ноль проблем
И в деплое и в коде

Roman
17.03.2017
16:26:09
я как разраб порой понятия не имею какие девопсы переменные установили на ремоуте, это непрозрачно

Vladimir
17.03.2017
16:26:41
Ну для этого деплой должен быть весь через код
infrastructure as code, etc

Roman
17.03.2017
16:27:07
если там всего 2 енва ок, когда больше уже бардак начинается

Vladimir
17.03.2017
16:27:21
Ну их и не должно быть мега много
В конфиге может быть только то, что может свободно меняться в реальности
Все остальное зашито в код

Aleh
17.03.2017
16:30:22
у нас тож через env, особых проблем не было, но и сложность части на ноде крайне маленькая)

Юрий
17.03.2017
16:32:37

Aleh
17.03.2017
16:32:39
а есть для ноды что-то для дебага мемори ликов, с работающего процесса снять что-то адекватное, что можно анализировать?

Roman
17.03.2017
16:33:12
нод инспектор

Google

Roman
17.03.2017
16:34:08
не видел пока еще ничего лучше devtools для анализа

Aleh
17.03.2017
16:34:42
а он разве с чем-то кроме lts работает?
хотя даже с lts какие-то проблемы

Evgeny
17.03.2017
16:39:39
To enable custom environment variables, create a configuration file, custom-environment-variables.json

Vladimir
17.03.2017
16:39:47

Roman
17.03.2017
16:41:33

Evgeny
17.03.2017
16:42:23
Ооок. Нормальное рещение ИМХО - держать маппинг без магии

Admin
ERROR: S client not available

Vladimir
17.03.2017
16:43:19
Мне кажется все это бесмысленный байкшеддинг
Конфиги это не очень сложная проблема

Roman
17.03.2017
16:45:35
это если ап простой, а когда несколько енвов, тесты, замысловатый деплой, архитектура и логика приложения начинаются велосипеды хочешь не хочешь

Vladimir
17.03.2017
16:46:39
Ну вот и пишите велосипеды
Это как раз нормально для такой задачи

Roman
17.03.2017
16:47:06
ну да, о том и речь

Vladimir
17.03.2017
16:47:24
Я говорил о либах для конфигов, они не нужны

Roman
17.03.2017
16:47:58
в 95% нужно просто наследование пары конфигов

Vladimir
17.03.2017
16:48:54
На самом деле в 12 factor про конфиги по делу написано
Есть конфиги в коде, а есть конфигипри деплое
Это разные вещи

Google

Zaur
17.03.2017
17:21:30
Всем привет, ребят изучаю node(привет кэп). Подскажите какие проекты можно сделать для практики socket.io используя что-то из steam API.

Denis
17.03.2017
17:56:36
Я говорил о либах для конфигов, они не нужны
Зависит от требования к утилизации наработок :) Если писать модули только для одного конкретно решения - то можно всё хардкодить, когда нужна потрабельность - тогда появляются требования к гибкости

Юрий
17.03.2017
18:00:51
А что является теперь common? production или develop? :)
ИМХО, прод. Чем более близкую к нему среду поднимает у себя разработчик (или поднимают на тестовых контурах), тем точнее удается воспроизвести наиболее хитрые баги - скажем, связанные с производительностью, или гонками запросов, или отказоустойчивостью. Но это чисто мои установки, на истину не претендую )

Denis
17.03.2017
18:01:17
Да вот мы также к этому пришли :)
Другой вопрос принципиальный - стоит ли группировать параметры
Или сделать плоскую key-value структуру

Юрий
17.03.2017
18:09:30
Мы группируем, а крупные группы выносим в отдельные файлы. Потом их проще переопределять для каждой среды.

Denis
17.03.2017
18:10:39
Типа такого? https://www.npmjs.com/package/app-config
А как группируете? Относительно библиотек или функций/фич приложений?

Юрий
17.03.2017
18:14:57

Denis
17.03.2017
18:15:03
У феникса интересный подход тоже https://github.com/phoenixframework/phoenix/tree/master/installer/templates/new/config

Mikhail
17.03.2017
18:17:03

Denis
17.03.2017
18:17:20
Очень важная часть тут - автокомплит
Он должен работать в коде вида:
import config from '../config'
console.log('Connect to [%s]...', config.|

Kanat
17.03.2017
18:33:34
кстати кто-нибудь работал с vue.js?

Denis
17.03.2017
18:33:59
@vuejs_ru - здесь целая армия счастливчиков)