All streams
Search
Write a publication
Pull to refresh
14
0
Махаев Владимир @vmakhaev

Веб-разработчик

Send message
О как! Это замечательная новость. Выкладывайте быстрее, думаю многим это будет интересно.
Спасибо за отзыв.

Я попробую написать что-то из реальной жизни.

В чем вы видите преимущества Postgres для блога в сравнении с Mongo?
Успеваете читать?
Асинхронность Node.js — это его идеология и даёт ему уникальные преимущества по сравнению с синхронными платформами.

К Node.js нужно привыкнуть, иначе, как вы и сказали, это может превратиться в callback hell.
Всякие promises и fibers — это попытки сделать так, чтобы ваш код выглядел синхронно. И испольуются в основном теми, кто мыслит в категориях синхронных платформ.

В умелых руках node.js код красив и прозрачен.

Скучность — это довольно субъективное понятие. В том видео, на которое я вам дал ссылку, один пожилой человек с огромным опытом в IT утверждает, например, что JavaScript — это очень веселый язык, просто недооцененный.
Да, Mongo и Redis висят в виде сервисов. И наше приложение подключается к ним при запуске. В /lib/server/index.js есть настройки для бд.
Derby.js довольно гибкий. Уже писал об этом тут и прекрасно подходит для приложений на три страницы. Если вам не нужна бд, например, можно и без нее.

Ваши опасения напрасны. На практике это не занимает много места.
Спасибо, что разобрался. Это будет полезно многим.

Ну вот, как я и предполагал, использование в одном приложении разных версий пакетов — особенность JS.
Правильно говорят, что это всего лишь дело привычки. Со временем ты перестанешь переживать на этот счет.

Я думаю если ты только начинаешь разбираться, то посмотреть на голый node.js проект полезно. И посмотреть их доки.
Так же нужно понимать концепцию middleware connect.js.
Посмотреть на голый express.js проект.

На голом node.js можно писать, но он довольно низкоуровневый и тебе прийдется изобретать кучу вещей за ново (велосипедить). Для большинства проектов этого делать не надо, так как уже всё придумано до нас. Но в некоторых случаях, если это так нужно, то node.js позволяет опустить на уровень ниже.
Обычно node.js оборачивают в connect.js, его в свою очередь в express.js. Derby.js — это обвертка над express.js.
Каждый новый уровень добавляет возможностей, хотя немножко сложнее в понимании, чем предыдущий.
У людей, которые мало знают JavaScript, есть много мифов относительно него.
Я вам рекомендую посмотреть это.
Люблю JavaScript. Сам пишу на CoffeeScript`е. От него чуть больше удовольствия.

Традиционные способы работы с ООП — это дело привычки. Ничем не лучше, чем, например, прототипная модель.

Что вы хотели сказать вашим примером кода?
Это не то чтобы для извращенцев. Если так, то почти все node.js программисты — извращенцы в какой-то степени :-)
В каждом более менее большом проекте очень сложное дерево зависимостей. Это возможно связано с node.js и javascript, Мне трудно сравнивать с Ruby, я на нем почти не программировал, а разбираться сейчас уже не вижу смысла. В общем пакет A может иметь зависимостью пакеты B и С, а пакет B тоже зависим от пакета C. Это могут быть разные версии C. Если одна и та же версия, то он установится один раз в пакет A, а если разные то 2 раза (в A и B), Я думаю теоритически можно найти и другие способы разрешения таких ситуаци — какое-нибудь глобальное хранилище пакетов с возможностью сосуществования разных версий или еще как-то. Разные решения наверно имеют разные плюсы и минусы. Но в npm решили сделать так. Спроси у него почему. Что я тебе точно могу сказать это то, что npm очень молод и создавался с оглядкой и по опыту других пакетных менеджеров.

Эх. Тебе же рекомендовали все пакеты устанавливать локально для каждого приложения. :-) Как в воду глядели.
Ты пошел своим путем. :-) Зато разобрался с npm и я тоже вместе с тобой :-)
sudo npm install -g — эта штука не устанавливает все зависимости глобально. Их нужно устанавливать по очереди.
sudo npm install -g derby
sudo npm install -g express
sudo npm install -g redis
sudo npm install -g livedb-mongo
sudo npm install -g racer-browserchannel
sudo npm install -g connect-mongo
npm start


Но я всё равно тебе не рекомендую так делать. Удали уже пару фильмов или музыку там какую-нибудь и найди место.
У npm такая идеология. Это позволяет использовать разные версии пакетов для разных приложений и в пределах одного приложения.
Если не будешь увлекаться созданием приложений, то в реальности это не так много места.

Я же сказал, что в основном не хранят в репозитарии. Но бывают исключения. Я, например, не храню.

Как сделать derby new так, чтобы использовался единый локальный репозиторий в системе?

Ты имеешь ввиду единый глобальный репозитарий? Попробуй derby new -n. Это создаст проект без установки зависимостей.

Какой командой установить зависимости при деплое этого проекта на сервер?

npm install Тут доки
Если просто версии обновить, то:
npm update Тут доки
Добавил sudo. Спасибо за замечание.

Что за проблемы с Redis под Windows? Здесь уже чего-то обсуждали про это.

node_modules — это место храниение npm пакетов. То есть всех зависимостей твоего приложения.
Ты можешь установить все свои зависимости глобально, по примеру npm install -g derby, тогда они будут лежать в общей папке (в разных ос в разных местах) и использоваться всеми приложениями. Но тут рекомендуют так делать только для пакетов, которые используются в shell (как derby утилита, например). Остальные пакеты обычно устанавливаются локально (в node_modules твоего приложения).

Обычно node_modules добавляют в .gitignore, Но если ты деплоишь из git, то возможно лучше чекинить.
Самописные модули ты выкладываешь на github и в package.json прописываешь git-путь.
Да, Saas — это определенно будущее для всех приложений.
Но банкиры скажут «слишком большие риски». Попробуй им объяснить.
Технологии уже созрели. Теперь надо подождать пока в головах поменяется.
Ты правильно заметил. Всё будет как ты расписал. Примеры я исправил. Извиняюсь за невнимательность.
Надо как-то заполнять вакуум. Вливайтесь!
Третий пошел

Пацан сказал, пацан сделал :-)
По проводам передаются даже не данные, а операции OT, которые ловятся через pub-sub редиса и раскидываются по клиентам. В redis лежит кэш этих операций.
Тут писал о marionette.js
Да, видимо, я так и не разобрался. Вы определенно в чём-то правы.

Задал ваш вопрос Joseph`у. Он ответил. Предлагаю переместить нашу дискуссию туда.
«Спагетти» — это больше навыки программирования (в данном случае на js/node.js). Стркутура кода сильно зависит от приложения. Для социальной сети она будет одна, для игры другая. Ну а SOLID конечно соответствуйте, Derby вам тут, как минимум, не помешает.
Я вот отсюда собирал: github.com/MSOpenTech/redis

И это было последней каплей для перехода на Linux :-) Рекомендую.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity