LINUX.ORG.RU

Сообщения EnterpriseMobility

 

Правило 30%/70%

Форум — Talks

Сегодня мне SCRUM мастер сказал, что рабочий день должен быть распределен по правилу: 30% - на документирование, 70% - на кодирование. Погуглил - откуда это правило взялось. Пока ничего не нашел

 ,

EnterpriseMobility
()

CouchDB The Definitive Guide на русском

Форум — Talks

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

Зы. Да, я знаю, что читать лучше всего на английском.

Ззы. Я надеюсь это будет последний переход и CouchDB действительно поддерживает репликацию «искапорки».

Зззы.Что лучше юзать для Node.js - nano или cradle? Сначала начал пробовать cradle из-за его высокоуровнего интерфейса, но он мне перестал нравится (ужасная документация и тесты, возврат ошибкок в виде нераспарсенной JSON строки, общее ощущение заброшенности проекта - последняя версия на npm 0.6.7 обновлена). А для nano есть даже gitter с отвечающим разработчиком.

 , ,

EnterpriseMobility
()

JavaScript ASI

Форум — Talks

Сегодня я подрался с другим Node.JS кодером по поводу того, нужно ли ставить точку с запятой после каждого оператора. Я был ярым сторонником «нужно всегда и обязательно». Устоили бойню в git репозитории - он удалял, а я добавлял. Он мне поставил синяк под глазом, а я ему разбил до крови нос.

Зы.При Python такого не было. Да и в C# тоже.

 ,

EnterpriseMobility
()

Redis vs LevelDB

Форум — Development

Предыстория: начал изучать Node.JS и Key-value-Store сначала с NStore, потом по совету консультанта перешел на LevelDB. Переход был правильным и обоснованным (библиотека NStore заброшенна, постоянные падения сервера). Но в LevelDB непонятки с репликацией, хотя она там и есть.

Теперь вызвался писать новый движок для Redis, используя библиотеку node_redis.

Раньше у меня было 2 store: ключи в обеих store одинаковые, а values разные - в первом JSON, во втором binary. Разделение нужно было из-за невозможности одноврменного хранения в LevelDB по одному ключу данных разным encoding. LevelUP предоставлял логичное API:

createReadStream - SELECT всех ключей/значений с условием/фильтрацией/сортировой/ограничением на кол-во записей.

put(key, value), где key - строка, value - JSON объект ну и db.get.

А после посмотра API байндингов для redis, у меня возник один большой вопрос: а как на этом всем уехать? Как реализовать аналогичный фунционал? Где хранить данные обеих store? В разных базах?

Почему, к примеру, в Redis нет

#.getall
, а есть только #.hgetall?

Делается ли автоматическая (де)сериализация JSON данных? Где и как хранить бинарные данные по ключу из 2-го store? Эти данные берутся из файла. Можно ли перенаправить потоки? Если да, то как?

Зы. Или может redis тут тупо не подходит? А что тогда есть с нормально реализованной master-slave репликацией, которая уже может применяться в продакшене?

 , ,

EnterpriseMobility
()

Node.js. Хроники.

Форум — Talks

Ситуация: сеньор спросил сегодня у меня, можно ли обновить dev-сервер из Git, чтобы потом все работало. Я немного засомневался, потом вспомнил, что поставил precommit-hook и он волшебных образом заработал - начал корректно правильно детектить exit code, возвращаемый grunt mocha (ну или grunt mocha начал правильно возвращать этот код). Короче в мастер-бранче у меня теперь всегда оттестированный (BDD тесты) код и проблемы могут возникнуть только при npm update незамороженных версий пакетов, у которых что-то поломали их разработчики.

Но на всякий случай сеньор пытается сделать копию папки с сервером. Из консоли. Ага, щаз. 5 попыток, потом встает и спрашивает у другого. Короче обновили и все заработало.

Зы. Я для этих целей всегда использую mc Ззы. Создам как я grunt task, который делает backup исходных текстов. Зззы. Обожаю тот день когда я согласился изучать Node.js. Ззззы. Добавляю в проект поддержку redis как key-value store. Чисто ради интереса. Уровень документации байндингов к Node.js доставляет. Список параметров некоторых методов можно найти только на stackoverflow. А на репликацию мне уже н..ть.

 ,

EnterpriseMobility
()

LevelDB. Апокалиписис

Форум — Talks

Сегодня таки не смог завести репликацию LevelDB на Node.js: в одну сторону при изначально чистой базе все происходит нормально, а потом или не реплицирует или вываливается с ошибкой. Разработчик что-то обещал сделать к концу недели. Сказал сеньору - он предложил Riak или Redis. Ну давай Redis. Оно там поддерживает Multi-MasterReplication? Ну типа да. ОК. Буду переписывать.

Зы. Передаю горячий привет консультанту по Node.JS, который посоветовал выбрать LevelDB.

Ззы. Найдите вероятность провала репликации на Redis.

 , ,

EnterpriseMobility
()

впервые в жизни попробовал это

Форум — Talks

Сделать Cut-Copy-Paste в Vim. Сначала судорожно пытался в Edit Mode Ctrl+C/Ctrl+V. Потом вспомнил, что я в vim. Судоржно пытался предугать, какие же еще комбинации могут быть. Не получилось. Полез в гугл. Полотно инструкций. Командый режим. v, d, y, p. Получилось с третьего раза. Наверное с десятого раза запомню.

Зы. Вы знаете что это мне напомнило? Нет, не уроки Word&Deed для ДОС на уроках информатики 20 лет назад. А Spectrum.

С уважением, ваш ниасилятор Vim.

 ,

EnterpriseMobility
()

Нужно ли доверять OpenSource проекту на github

Форум — Talks

у которого полтора коммитера, последний коммит был сделан полтора года назад: добавлены lolz, cats, dogz и goats.

Стоит ли обсуждение выносить на планерку?

 ,

EnterpriseMobility
()

Node.js. Падение Олимпа.

Форум — Talks

Сегодня упало. Сильно. Делал обновление сервера из git, имеются измененные файлы конфигурации, git pull через grunt task не дал обновить.

По ошибке выполнил как раньше grunt task revert2Git, который отменяет все локальные изменения. А каталог db для баз данных LevelDB был в git с .gitignore, игнорирующим все файлы,кто самого .gitignore. Типа сеньор захотел, чтобы при первом git pull они создавались автоматом.

Ну и его содержимое успешно грохнулись.Такие дела.

Поэтому вопросы: 1) Нужно/можно ли ее хранить db в одном каталоге с Node.JS? 2) Где тогда лучше держать базы данных для LevelDB?

3) Какие права ставить на ту папку?

Зы. Какие тут c10k, если к узкоспециализированной технологии допускают таких криворуких студентов, как я.

Зы.зы. Мне уже нужно писать увольнительную?

Зы.зы.зы. При клиент - сервере такой фигни не было.

Зы.зы.зы.зы. На что б еще такое перейти, чтобы задержать внедрение в продакшн на 3-4 месяца?

 , , , ,

EnterpriseMobility
()

Node.js в продакшене

Форум — Talks

это когда непрерывная работа сервера 24/7 с c10k и репликацией с горячей заменой зависит от библиотечки, которую поддерживают 2,5 человека.

Такие дела.

 , ,

EnterpriseMobility
()

Статический анализ кода Node.js на правильность использования callback-ов.

Форум — Talks

Есть ли в природе статический анализатор JS/Node.js кода, который бы на указывал на забытый вызов callback-а, повторный его вызов, или вызов не в том месте. Jshint такого как я понимаю не может.

ну как же меня задолбала эта ваша асинхронность в стильных, динамичных, маладежных, агильных хайлоад стартапчиках, которые накроются при первом же 10к. Однопоточность, фигли. Зато BDD, TDD,chai с mocha, куча embedded key-value store - непонятно что выбрать, Redis, из-за которого может молча порушится запущенный из под forever сервер, который юзает модуль с redis.

 , , ,

EnterpriseMobility
()

Отказоустойчивый Key-Value storage

Форум — Talks

Для Node.js сервиса, который принимает и отдает файлы нужно выбрать отказоустойчивый key-value store. Уже слышал про riak и знаю, что он поддерживает LevelDB. Сервис уже хранит метаданные в LevelDB СУБД (как JSON документы), но загруженные файлы все еще хранятся в файловой системе.

Каким образом мне нужно будет организовать репликацию данных? Должен ли я хранить загруженные файлы в LevelDB Store как BLOB (в терминологии SQL Субд)?

Можно ли делать репликацию LevelDB баз без riak? чем и как это лучсех делать в Node.js? Или лучше взять Riak?

 , , , ,

EnterpriseMobility
()

Консультатнт проекта по Node.js

Форум — Talks

1) Носит с собой MacBook Air. Настроить Windows клавиатуру таки по нормальному не сумели. Приходится копировать и вставлять через контекстное меню.

2) Использует незарегестрированную версию Sublime Text 2. Ругает как Atom, так и Webstorm за тормоза.

3) Заводит дискуссию на 5 минут по поводу именования полей, переменных и нужности ставить точку с запятой после каждого оператора.

4) Не знает, что parseInt возвращает NaN, а не выкидывает исключение.

5) Знает и умеет обьяснить Dependency Injection и паттерны, TDD и прочее. Фанат LevelDB.

Найдите вероятность провала проекта с таким консультантом. Такие дела.

 ,

EnterpriseMobility
()

почему Atom так тормозит?

Форум — Talks

То, что Webstorm тормозит - это понятно: торможаба и все такое.

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

Почему мне для просмотра JavaScript проектов приходится использовать крякнутый незарегистрированный Sublime Text, написанном на уже немодном тормознутом неасинхронном Python?

 , , ,

EnterpriseMobility
()

Нагрузочное тестирование сервиса

Форум — Development

Чем делать нагрузочное тестирование Rest сервиса (Restify)?

Суть сервиса: upload + выдача файлов.

Уже написаны BDD тесты (grunt/mocha/should.js/supertest).

 , ,

EnterpriseMobility
()

fs.rename ведет себя очень странно

Форум — Development

Сервис restify, в endpoint, обрабатывающем upload (используется formidable) делаю fs.rename - выдает Error: ENOENT, rename '...'

Если сделать fs.copy в последующим вложенным fs.delete - то все ОК.

Запуск под sudo не влияет, mv тоже выдает ошибку. Почему? В Node.js до сих пор не придумали нормально работающую команду перемещения файлов?

 

EnterpriseMobility
()

Как генерировать документацию к Rest-сервису в Markdown?

Форум — Development

Есть проект на GitHub/GitLab.

Я умею с помощью (grunt-)jsdox генерировать документацию к модулям из jsdoc тегов в формате Markdown.

Я умею с помощью grunt-mocha-test генерировать документацию как спецификацию тестов в формате Markdown (опция reporter: 'markdown').

Но я еще должен вручную писать markdown документацию для человека - пользователя сервиса.

Есть ли готовые решения для автоматизации этого процесса? Нагуглил Api Blueprint, но непонятно,как его нужно использовать.

 , ,

EnterpriseMobility
()

Как в асинхронную фунцкию добавить свои коды возврата ошибок?

Форум — Development

Как в своей асинхронной функции правильно добавить возможность добавления информации об ошибке - почему операция выполнена не успешно? В C# я бы определил бы собственные классы исключений. А в callback я могу передать вторым параметром или done : true/false (операция выполнена/не выполнена) или null (объект не найден).

self.myAsyncFunctionWithCallback(param1, param2, cb) {
   if(typeof cb !== 'function'){ return new Error('this is an async function and expects a callback'); }

   if (err) { return cb(err); } // Возникло исключение, возвращаем ее, нет разультата

   return cb(null, true); // Нет исключения, операция прошла успешно

   return cb(null, false); // Нет исключения, операция прошла неуспешно, кода возврата нет

   return cb(null, 0); // Нет исключения, операция прошла успешно, код возврата 0

   return cb(null, 1); // Нет исключения, операция прошла неуспешно, код возврата 1

   return cb(null, obj); // Нет исключения, операция прошла успешно, вернули обьект

   return cb(null, null); // Нет исключения, операция прошла неуспешно, объект не возвращается, кода возврата нет
}

.

 , ,

EnterpriseMobility
()

Меня задолбал markdown

Форум — Talks

Зачем придумали markdown, если там верстка таблиц превращается в ужас, особенно вставка --- для нормального выравнивания ширины колонок по содержимому. В Ворде такого не было - он там сам выравнивает.

Зы. И не надо мне говорить, что MD - это WYSIWYM.

 , ,

EnterpriseMobility
()

Первая неделя знакомства с Node.js на работе

Форум — Talks

Дали задание написать Rest сервис по хранению файлов с поддержкой версионирования и отдачи определнной/последней версии. Короче, я уже понял, что такое callback hell. Никакого энтузиазма. А вот при знакомстве 4-5 лет назад с Python/Django у меня была такая эйфория.Потому что язык классный. И да, слышал про одного пацана, который писал все на JavaScript, и клиент, и сервер, говорил что нравится, удобно, читабельно. Потом его в дурку забрали, конечно.Похоже через 3 месяца и меня туда заберут. Хотя нет, там слава тебе господи цивилизованный C# на клиентах.

Зато модно, стильно, молодежно.

 

EnterpriseMobility
()

RSS подписка на новые темы