mongodb и frontend
Часто встречаю в вакансиях frontend требование mongodb.
Mongodb на стороне сервера работает? Те это backend? Какое отношение mongodb имеет к frontend'у? Разъясните плыз :)/ |
Монгу часто юзают с Node.js, т.е. серверная разработка, видимо вы видели именно эти вакансии.
|
а я вот пишу крутой сервер на nginx для статики, nodejs сокетах через socket.io а для монго юзаю mongosee
шикарная штука я вам скажу, файлы загружаю в несколько потоков) могу продолжить загрузку после обновления страницы и.т.п. в общем отжигалово. создал такую абстракцию как Коллекции (ну это коллекции из монго) и Ренджи, это как бы срезы с коллекций которые реалтайм обновляются через сокеты при изменении базы. Рендж это типа offset, limit, selector такой селелект к базе данных типа. это я типа руки разминаю перед разработкой изоморфного фреймворка Mega для которого UIjs будет просто рендер движком. пока изоморфности нет, то есть я пишу отдельно под сервер и отдельно под клиент, но я уже примерно представяю как должна выглядить изоморфная среда и как её сделать, в общем ждите, будет круто) |
Цитата:
Я с монгузом работал 1.5 года и кроме "буээээ" мало что могу добавить. |
kobezzza, посмотрел щас что ты дал, посмотрел примеры кода, проблевался, я вообще то не работаю напрямую, я пишу абстракцию а дальше оно само, и мне не особо интересно как оно там под каптом, я туда не заглядываю) так что собо все ровно на api и его красоту. но красота мангуста меня впечатлила сильно)
ты можешь конкретно хоть одно сравнение сделать где мангуст проигрывает? и обяьснить в чем. ну еси не влом |
Цитата:
1) Не поддерживаются промисы; 2) Не поддерживается нормальное наследование схем через классы; 3) Нет нормального модуля валидации (только совсем примитив); 4) Дерьмовая дока (перекрёстная ссылка перекрёстной ссылок погоняет); 5) Убогое АПИ работы с курсором; 6) На нагрузке сильно проседает. Цитата:
Цитата:
*** А вообще поступай как знаешь, мне всё равно :) |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
К тому же где оно убогое то если Model.find({selector}, {fields}, {skip:0, limit:0}, callback) B все это вернет курсор с кторым дальше можно цепочки делать типа фильтров и сортов. Че, неужели круче человечество придумало? Цитата:
Цитата:
Цитата:
- Вот это используй, оно лучше. - Слушай а чем он лучше? - НУ НИХОЧЕШЬ НИНАДА МНЕ ФСЕРАВНО! ОЙ ФСЕЕЕЕ111111 Ц МДААА :D |
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
*** Мне в иридиум нравиться классовый подход (особенно круто если писать на ТС), активное использование декораторов (я очень люблю этот подход) и всё на промисах, а не на thunk callback, как в Mongoose. Более богатый набор валидаторов и вроде хорошая дока. Конечно я не юзал его в реальном проекте, как Mongoose. Но могу сказать точно, больше Mongoose я юзать не буду, хватило. |
kobezzza,
Цитата:
Кстати тока што сидел и придумал няшную штуку с реакта стырить, использовать атрибуты как компоненты как то неудобно было, приходилось дописвать префикс ui- чтобы не было конфликта с реальными атрибутами и все такое, да и параметры неудобно передавать было и тут меня осиниило, по скольку я все ровно буду писать свой препроцессор для шаблонов, ну как у реакта, то я могу пока строку шаблона обрабатывать чем-то похожим, почему нет? сейчас шаблоны компонентов пишутся вот так: template: " <div class='ddd' ui-draggable ui-window='[12, this.name]' on-click='this.click'> {{this.name}} </div> " А теперь будут писаться по другому, и можно будет в конструктор им разные парамтеры передавать (что сейчас делается оч неудобно через подстановку значения какого то атрибута в ватчер скоупа и все такое, а тут они напрямую прям в конструктор компонента прилетят) Проблема была в том что как сказать компьюетру что это обычный атрибут а вот это вот компонент? ДА ЭЛЕМЕНТАРНО, чому я сразу до этого не додумался? 1) Компоненты которые будут заменять элемент на какой то другой (то есть которые имеют свой шаблон), обязаны называться с заглавной буквы. А те же которые просто какое то поведение добавляют должны с маленькой называться. 2) компоненты от атрибутов будут отличаться ЭЛЕМЕНТАРНО. если это компонент то у него в конце круглые скобочки))) ПОЧЕМУ Я СРАЗУ ТАК НЕ ПРИДУМАЛ СДЕЛАТЬ КАРЛ??))) В итоге мы получим что-то вроде: template: " <div class='ddd' draggable() window(12, @name) onClick(@click)> {{@name}} </div> " Цитата:
Цитата:
|
Еще была проблема как параметры передавать в компонент который ТЕГ!
И вот элементарное решение))) <Chat(параметры)> </Chat> template: " <div class='ddd' draggable() window(12, @name) onClick(@click)> <Chat(ПАРАМЕТРЫ)> </Chat> </div> " Крута я придумал стырить? А еще учитывая что у меня шаблоны это нормальные шаблоны а не виртуал дом, то они работают в разы быстрее так как не перерисовываются каждый раз. А можно еще придумать какие нить знаешь, типа у компонентов есть точки входа, а есть точки выхода, это обекты класса Stream))) ну и вот, и типа подключать компоненты друг к другу как водопровод, как идея? таким образом будет универсальное АПИ для возаимодействия компонентов написаных разными ничео не знающими друг о друге людьми! п.с. оффтоп про юишку ага)) снова |
А еще у меня в юишке нормальные промисы с прогрессом ивентами и бросают исключение если нет ни одного обработчика, и можно чайны строить соединяя промисы и можно писать так
promise = new Promise promise.status // pending setTimeout => // а дальше делаем что нужно promise.resolve(11) promise.reject(11) , 1000 return promise Но разумеется можно и по быдлятски new Promise(function(resolve, reject){}) |
мне лично Mongo вот не как не понравилась (последний проект по разбору хромосом)
То, что она делает когда падает и ее Explain фигня полная Как растет объем данных это понятно. До старичка MysqQl скакать им долго А из шаблонизатров, пора бросать велосипедить http://mustache.github.io/ покажите хоть один шаблонизатор который портирован на столько языков А да можно String.prototype.render = function (obj) { return this.replace(/\{([\w\.]*)\}/g, function (str, key) { function getData(keys, obj) { var value = obj[keys.shift()]; if (typeof value === "object") { value = getData(keys, value); } return value; } var keys = key.split("."), value = getData(keys, obj); return (typeof value !== "undefined" && value !== null) ? value : ''; }); }; var data = { from_user: 'Карл', text: 'Бросай курить', sm: {hi: 'Вставай на лыжи :-)'} }; alert("Привет {from_user}!\n{text}\n{sm.hi}".render(data)); UI где? |
Цитата:
|
Цитата:
|
Вообще-то монгоси, если не передать калбяк, возвращает либо курсор либо промис) и вообще я все больше и больше поражаюсь крутостью этой либы) может мне просто не с чем сравнивать?
|
Цитата:
|
kobezzza,
Вообще шиарная штукенция, давно такого качества не видел) ну вот опять же, это как сравнивать css и less и хвалить less не зная stylus. Цитата:
|
Цитата:
|
радует вообще что промисы можно добавлять сохраняя обратную совместимость почти всегда, просто берешь и возвращаешь промис)
кстати смотрел в сторону распределенныз p2p хранилищ? ну чтобы видяшку отдаешь юзеру а он её как торрент отдает тем кто тоже её смотрит. я хочу такую штуку запилитьв Mega автоматическую. Ну по крайней мере чтобы настройка была в 2 строчки кода. К тому же я думаю как хранить приватные данные на чужих машинах. Ну типа непубличное видео доступное только тебе хранить у других. Это по сути легко, просто разбираешь на чанки, и шифруешь все дела. В общем буду заниматься этим. Блин пипец, у меня по мимо работы уже 4 проджекта: Физическая игра на бокс 2д, в стиле мортал комбата тока с физикой. Изоморфный фреймворк Mega coffee++ Двигло для физических анимаций в интерфейсе (который станет частью ui которая часть mega, но я их пишу как отдельные модули чтобы люди могли юзать эти штуки не используя ни юишку ни мегу) И это помимо РАБОТЫ карл)! И это помимо переездов! Помимо бизнеса и взаимодействия с правительством! Помимо всякой подработки типа сделать анимационного персонажа реагирующего на мышку и.т.п. У меня мозг скора взорвется |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
те скока лет? мне 24 |
Цитата:
|
На работе (после оной) контрастный душ помогает вытрясти мысли... Лично я настоял за душ, после поездки в Деновер (Правда там ещё и лето жаркое)
По жизни, бассейн выбивает хворь ================== Цитата:
|
Цитата:
|
Цитата:
|
я с детства не занимаюсь гулянками и бабами) я ж не быдло, так что норм все
|
kobezzza, как все повернулось то
When your application starts up, Mongoose automatically calls ensureIndex for each defined index in your schema. Mongoose will call ensureIndex for each index sequentially, and emit an 'index' event on the model when all the ensureIndex calls succeeded or when there was an error. While nice for development, it is recommended this behavior be disabled in production since index creation can cause a significant performance impact. Disable the behavior by setting the autoIndex option of your schema to false, or globally on the connection by setting the option config.autoIndex to false. А как тебе квери билдер? ![]() |
Цитата:
Цитата:
Цитата:
|
Mаxmaxmаximus, слушай, а расскажи как ты парсер js писал, как он работает?
|
Цитата:
esprima + estools; babel (babylon); acorn Библиотеки для написания парсеров: jison (аналог Bison, его использует CoffeeScript) bison *** Если интересует сам принцип парсинга - то это посимвольный обход строки и формирование последовательностей токенов (лексем), затем на основе лексем строится AST, в котором учитываются приоритеты операторов, уровни вложенности и т.д. Затем работа идёт с АСТ, а после всех преобразований из АСТ мы генерим нужный нам код (будь то js, байткод, LLVM и т.д.). Хотя это примитивное описание, т.к. алгоритмов парсинга и построения AST существует несколько, например низходящий или восходящий и т.д. Для уточнения этих нюансов лучше читать специальную литературу :) |
Цитата:
|
Цитата:
|
kobezzza, спасибо)
|
Цитата:
|
Цитата:
Лучше всего масштабируются столбцовые базы, например, Cassandra от Facebook. Почитай Фаулера NoSQL и многое станет более понятно. Цитата:
Цитата:
|
А чому не сделают универсальную БД в которой ты просто будешь говорить вот тут у меня табличка, а вот тут коллекция графов, а вот тут реляционная табличка)? и чел будет выбирать тот способ хранения инфы который лучше подойдет к его данным. И просто придумать универсальный интерфейс взаимодействия с даными всех форм и размером, ну чтобы при запросе можно было и реляционную табличку подгрузить, и сразу её наполнить в документоориентированном стиле и все такое. М?
п.с. да да, ты уже понял что я вношу в список дел сделать такую базу))) |
Цитата:
Но реальность такова, что пока отдельные решения лучше комбайнов. Например многие СУБД умеют полнотекстовый поиск, но они даже близко не подошли к возможностям ElasticSearch. Мб лет через 10-20 комбайны станут нормальными :) |
Часовой пояс GMT +3, время: 00:45. |