GG
40мб для переменной многовато
GG
208620 строк, каждая строка это массив из десяти элементов, string
GG
Нужно сделать цикл по этому массиву, и еще вложенный из 100k елементов
Evgeny
я б файл переформатировал в другой формат
GG
Какой?
Albert
Ну по мне это не много, работал в одной компании, где конфиг внутренней системы более 100к строк) если у тебя проблемы со скоростью в фоне разбей этот json на куски
Dmitry
А в чем проблема? Падает? Явроде когда то парсил json на пару сотен мегов
Dmitry
GG
По сути это база из excel, я его конвертик в json
GG
Albert
https://github.com/dominictarr/JSONStream
Izzzy
В CSV идеально бы
Albert
Vladimir
Или как вообще лучше поступить?
тебе какуюто дич насоветовали. Решение одно - стримы. Если построчно, то есть 2 варианта: https://nodejs.org/dist/latest-v7.x/docs/api/readline.html либо https://www.npmjs.com/package/through2
Sergey
Albert
Михаил Макарычев
GG
GG
Yield
Вроде дельный совет, попробую. Спасибо
Sergey
GG
Зачем? Чтоб потом опять его просить в json
Sergey
зачем тебе в json парсить?
GG
Мне нужно циклом пройтись по всем елементам
Sergey
и что
Sergey
GG
A
что сделать то надо
A
уже потерял
GG
200k елементов в цикле перебрать, и во вложенном цикле еще 100k
A
http://stackoverflow.com/questions/11874096/parse-large-json-file-in-nodejs
A
вот что советуют
GG
GG
Извините, может я не правильно поставил вопрос, и вел кого-то в заблуждение, или просто вы не внимательно прочли. Спасибо всем
Denis
📮 Другой вопрос интересный.
При разработке больших приложений, часто необходимо управлять конфигурацией.
Например:
+ для develop разрешить Source Maps
+ для stage разрешить логирование на специальный
+ иметь для разных сред (develop, stage, prod) разные внешние сервисы логирования, и токены для них
+ отключить какие-то features для develop, но включить их для prod
+ иметь разные пресеты конфигураций одного приложения для разных продуктов/клиентов
+ разные стили / логотипы / описания
+ разные наборы языков (например, когда новый язык ещё в разработке, он может быть в stage, но не в production)
+ поддерживать только определенные языки на develop
Таких настроек может быть несколько десятков в крупном приложении.
Часть из них могут быть доступны для переопределения через ENV.
Кто как решает это? Какие практики и подходы есть в других экосистемах (Ruby, Elixir, Python и пр)?
Sergey
я имею несколько нужных файлов конфигов js/json, мержу их между собой
юзаю dotenv и dotenv expand
окружение подгружается двумя переменными: NODE_ENV для development/production/test и APP_ENV для stage, public, nightly
Denis
Evgeny
Да в принципе тож самое. config, NODE_ENV+APP_ENV, реврайт через NODE_CONFIG
Kanat
не имею понятия, что тут твориться но стало интересно
Yuriy
У нас есть common-конфиги, содержашие некую общую конфигурацию или значения по-умолчанию. Есть отдельные patch-конфиги для каждой из сред. Работа с конфигами инкапсулирована в свой небольшой модуль-велосипед, поэтому никто напрямую require('./my_kewl_env.json') не пишет. Окружение тоже переключаем по NODE_ENV + специфичная переменая, уточняющая путь резолва конфигов.
Evgeny
мне кажется, или все велосипедят config?
Roman
конфиги это сложно. видел одного он писал свой лисп для конфигов
Yuriy
Я года полтора назад писал валидатор конфигов на основе JSON Schema, чтобы нельзя было запустить проект с невалидными конфигами. Со временем пришли к текущей архитектуре — common + patch. Она оказалась удобнее для разработки — внесение правок в схему у команды всегда сопровождалось болью.
А ВОТ ТЕПЕРЬ ПАБЛИК
process.hrtime() return undefined
wtf?
Denis
Evgeny
Ну да, все ведлсипедят :(
Denis
Sergey
Yuriy
Увы. NDA )
Denis
Омг
Denis
Фрагмент кода общего назначения под NDA? :)
Yuriy
Ну, не совсем NDA. Скорее ODA — Owner Doesn't Allow )
Denis
Сюда его, на ковёр :)
Denis
https://www.npmjs.com/package/app-config
Denis
вот чё нашл
Yuriy
Попробую глянуть в истории репо, можно ли извлечь те наработки. Мы за это время успели выйти из MVP в нормальный прод, поэтому код очень сильно поменялся.
Evgeny
Бля, да о чём вы все?
Evgeny
https://www.npmjs.com/package/config
Evgeny
Ну уж конфиги то не надо велосипедить!
Denis
конфиги в стиле феникса: 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
а вот статья от того самого товарища
Roman
http://letrectruth.ml/posts/cpp-snafu-conclusion.html
Denis
https://goenning.net/2016/05/13/how-i-manage-application-configuration-with-nodejs/
Roman
из того что я помню node-config не умеет сбрасывать кеш и работать нормально с кастомными env переменными
Mikhail
📮 Другой вопрос интересный.
При разработке больших приложений, часто необходимо управлять конфигурацией.
Например:
+ для develop разрешить Source Maps
+ для stage разрешить логирование на специальный
+ иметь для разных сред (develop, stage, prod) разные внешние сервисы логирования, и токены для них
+ отключить какие-то features для develop, но включить их для prod
+ иметь разные пресеты конфигураций одного приложения для разных продуктов/клиентов
+ разные стили / логотипы / описания
+ разные наборы языков (например, когда новый язык ещё в разработке, он может быть в stage, но не в production)
+ поддерживать только определенные языки на develop
Таких настроек может быть несколько десятков в крупном приложении.
Часть из них могут быть доступны для переопределения через ENV.
Кто как решает это? Какие практики и подходы есть в других экосистемах (Ruby, Elixir, Python и пр)?
Сейчас решаю такой вопрос с помощью https://www.npmjs.com/package/config
У каждого нод-модуля свой конфиг, который мерджится с конфигом собираемого приложения
Так же реализовал подгрузку и мерж конфига от подмодулей, если они зависят от других конфигов модулей
Vladimir
Все через ENV
Roman
Vladimir
Неа
Vladimir
Вообще ноль проблем
Vladimir
И в деплое и в коде
Roman
я как разраб порой понятия не имею какие девопсы переменные установили на ремоуте, это непрозрачно
Vladimir
Ну для этого деплой должен быть весь через код
Vladimir
infrastructure as code, etc
Roman
если там всего 2 енва ок, когда больше уже бардак начинается
Vladimir
Ну их и не должно быть мега много
Vladimir
В конфиге может быть только то, что может свободно меняться в реальности