Задать вопрос
  • Для чего идеальна MongoDb? Примеры приложений, где монга будет лучше mysql?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Я расскажу Вам про личный опыт, без претензий на истину в последней инстанции...

    Для чего идеальна MongoDb? Примеры приложений, где монга будет лучше mysql?
    Для человека который привык работать с реляционными БД, смириться с логикой и вообще с подобными БД - довольно сложно. Для тех, кто работает с реляционными БД профессионально - сделать это ещё сложнее...

    Если сравнивать с реляционными БД и с оглядкой на конкретно MySQL - монга идеально вписывается там, где структура данных заранее неизвестна. Тут я хотел привести пример, но не смог придумать ни одного дельного примера, после того как начал плотно работать с PostgreSQL... Давайте попробую из практики. Мы один раз применяли монгу в проекте где есть десятки и сотни тысяч товарных позиций и у каждой из них свой уникальный набор различных свойств. На основе уже имеющихся свойств, "соседних" товаров, контентщику предлагался наиболее вероятный набор параметров, которые нужно заполнить, но в любой момент он мог удалить или добавить любое поле и/или множество значений одного из них, например, "Цвет: черный, серый, фиолетовый". Всё это дело попадало под разные динамические фильтры и далее по цепочке... В то время, насколько я помню ещё не было поддержки JSONB-формата у PostgreSQL, по этому мы остановились на MongoDB. Ну и конечно же, желание "воткнуть ультра новую и модную БД в проект" сыграло свою роль...

    Что в монге определённо не нравится (и это не моя "идея", об этом пишут даже в учебниках под монге) - это тотальная денормализация данных. Которая в некоторых случаях может сыграть злую шутку. Например, все комментарии "поста" обычно хранятся прямо в самой сущности поста. Это очень удобно и довольно быстро работает, но... иногда это приводит к полному коллапсу. Особенно, когда у Вас перекрестная ссылочность.

    Безусловно, не редко можно встретить проекты в которых даже в реляционных БД не прописаны, например, внешние ключи и контроля целостности данных как такового нет, но обычно это происходит по следующим причинам:
    1. Очень низкая квалификация администратора БД проекта
    2. В попытке выжать из базы больше производительности, не найдя других методов оптимизации
    3. Данных настолько много, что БД/ключи - начинают "сыпаться", не редко это связано с п.1

    Так же, последние тесты показывают, что PostgreSQL почти не уступает MongoDB даже в её родной среде (на уровне данных в формате JSON). А в некоторых аспектах даже превосходит её... Подробности Вы можете увидеть на некоторых конференциях по Postgres (да, на конференциях по MongoDB, Вы вряд ли увидите, как кто-то будет рассказывать, что [их любимая] монга "хуже" некоторых других движков...). Кстати, поддержку формата JSON стандартизировали (наконец-то) на уровне SQL-стандарта (если я не ошибаюсь) и в самом ближайшем будущем, думаю стоит ожидать полноценную поддержку оного в SQL-базах, в т.ч. поддержку в бинарном виде с возможностью индексации данных (кстати, некоторые SQL-базы уже такое умеют).

    Моё понимание, ответа на вопрос, "когда действительно стоит использовать MogoDB?" звучит примерно так: Исключительно в тех случаях, когда Вы понимаете, что она станет действительно хорошим решением для поставленной задачи и сейчас и в будущем. В моей практике, таких проектов можно было бы насчитать ничтожно мало, а точнее около нуля, особенно с учётом развития некоторых современных SQL-БД и вообще направления "JSON в SQL" в целом. Но, безусловно такие проекты могут быть и есть (в данном случае, не у меня). Но, тут стоит обратить внимание на крайне важный факт - когда всплывает такой проект, что бы адекватно оценить наиболее оптимальную БД под него - нужно знать как минимум пару-тройку SQL-БД, со всеми их особенностями, достоинствами и недостатками... причем не просто "знать", а хорошо знать, "изнутри". А так же знать все характерные черты монги, а так же её особенности, достоинства и т.д. То есть, если Вы задаётесь вопросом, "а хорошо ли впишется монга в проект N?" и не можете найти на него однозначного ответа, вероятнее всего, что в долгосрочной перспективе, в "проект N" она впишется плохо.

    P.S. В заключение, хочу ещё раз напомнить, что "JSON в SQL" - активно развивается... Со всеми вытекающими.
    Ответ написан
    7 комментариев
  • Дайте совет, как правильно развиваться в фронтенде?

    rockon404
    @rockon404
    Frontend Developer
    Ответ написан
    Комментировать
  • Дайте совет, как правильно развиваться в фронтенде?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Углубляться в чистый js и учить популярные фреймворки/библиотеки.
    Ответ написан
    Комментировать
  • Актуальность и целесообразность использования NodeJS?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    На фронте у вас нет выбора, а на бэке вы можете выбрать хороший язык. Поэтому забудь про PHP и NodeJS, бери Python.
    Ответ написан
    Комментировать
  • Актуальность и целесообразность использования NodeJS?

    @webe
    frontend
    Нет никакой разницы, пиши на чем нравится, работы везде навалом, если являешься спецаилистом. (сейчас даже по Delphi вакансии есть)
    Там где требуется реально очень высокая производительность, там уже есть люди которые за тебя все продумали и ты точно не будешь заниматься этими вопросами, ну худой конец докупет пару серверов)

    Я бы на Node не стал писать что-то маштабное, масштабное в моем понимании - проект который пишется около года с большой кодовой базой.
    Чисто сервис запилить за месяц - самое то) (ну и фронтендеров можно кидать на проект, т.е. экономия на кадрах)
    Ответ написан
    Комментировать
  • Актуальность и целесообразность использования NodeJS?

    sim3x
    @sim3x
    1. Хотелось бы услышать мысли опытных людей, кто использует, или использовал NodeJS, стоит ли тратить время на изучение/написание кода под данную платформу, или перспективнее с нуля учить PHP, Python итп.
    Для того кто "знает жс" проще самому попробовать писать на ней вместо задавания таких общих вопросов

    2. Что на данный момент с актуальность NodeJS на рынке СНГ или Запада. Количество вакансий, проектов итп. Растет ли NodeJS так же быстро, как он рос в 14-16 годы?
    Все растет быстро. Если вы исходите из популярности, то вам лучше учить tiobe топ3

    3. Техническая составляющая: изучая статьи про NodeJS, в большинстве из них писали, что NodeJS отлично подходит под огромное количество небольших запросов, но вот с прожорливыми запросами начинаются проблемы. Т.к. пишу в основном под web, то и вопросы будут относительно него. Целесообразно ли писать небольшие и средние (а высоко-нагруженные приложения?) сайты на NodeJS?
    v8 коренным образом не поменялся.
    Нагрузка бывает разная
    Целесообразно использовать, то что лучше знаете - для малых и средних проектов не имеет значение ЯП

    под огромное количество небольших запросов
    подходит ерланг, а не нода
    Ответ написан
    Комментировать
  • Актуальность и целесообразность использования NodeJS?

    Вакансий и на чистый фронтенд полно, если добавите фуллстек на ноде - будет только плюс. Нода сейчас в тренде и позволяет писать быстрый бек.
    Ответ написан
    3 комментария
  • Актуальность и целесообразность использования NodeJS?

    Xuxicheta
    @Xuxicheta
    инженер
    Для бэкенда важнее знать подходы, архитектуру, библиотеки, базу данных, чем язык. И все это конечно займет больше времени.

    Странный вопрос вообще, стоит ли учить ноду. Чего там учить то, горстку апишек из которых реально используется небольшая часть?
    Джаваскриптеру немного попробовать ноды сам бох велел, хотя бы тестовое апи себе набросать или скрипты какие.

    Да, и крупные проекты тоже есть. Правда без ts тяжеловато такое писать. Nest.js возможно поможет.
    Ответ написан
    Комментировать
  • Актуальность и целесообразность использования NodeJS?

    ImLoaD
    @ImLoaD
    Программист
    Node JS это стандарт для многих компаний, уходить никуда не собирается, сообщество гигантское. Удобство разработки (один язык с фронтендом), гибкость и небольшой порок вхождения можно рассматривать как преимущества
    Ответ написан
    3 комментария
  • Цена дизайна сайта? Фриланс площадки?

    Sanes
    @Sanes
    Понятно, что цена находится где то между "бутылкой пива" и студией Тёмы Лебедева

    Если проект более или менее серьезный, обращайтесь в студию. Не обязательно Лебедева.
    Ответ написан
    Комментировать
  • Цена дизайна сайта? Фриланс площадки?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    На каких фриланс площадках искать дизайнеров с "хорошим уровнем"?

    на всех есть, на том же https://freelansim.ru

    Самый сложный вопрос - сколько нынче стоит разработка дизайна сайта?

    Сайт сайту рознь. Тут же дело не столько в стоимости дизайнера, сколько в объеме работ. Пусть дизайнеры оценивают, зачем Вы задаетесь этим вопросом? Вам то откуда знать?

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

    с договорной. Или показать прототип, что бы мы с Вами не воздух обсуждали, а о конкретных вещах беседовали.
    Ответ написан
    5 комментариев
  • Как можно сделать SSR React приложение используя express?

    Примерно так:
    import React from 'react';
    import { StaticRouter } from 'react-router'
    import { Provider } from 'react-redux'
    import ReactDOMServer from 'react-dom/server';
    
    import Store from './store';
    
    export default (Url, Component, Props = {}, Context = {}) => {
    	return ReactDOMServer.renderToString(
    		<Provider store={Store}>
    			<StaticRouter
    				location={Url}
    				context={Context}>
    				<Component {...Props}/>
    			</StaticRouter>
    		</Provider>
    	);
    }


    import reactRenderToString from './reactRenderToString'
    import Component from '../client/routes/Home.jsx';
    
    console.log(reactRenderToString('/', Component))


    На выходе Html строка размеченная реактом, вставляем её в #app средствами шаблонизатора или что у вас, загружается страничка, скрипты, реакт подхватывает размеченный html и навешивает обработчики. P.S стоит быть внимательным с различными библиотеками на клиенте, т.к многий говно код (в том числе и наш) не дает сборщику собрать мусор и каждый наш рендер может валяться в памяти пока не вывалится...
    Ответ написан
    4 комментария
  • Как правильно реализовать авторизацию и аутентификацию на сайте?

    @ghostiam
    На Go писатель, серверов пинатель.
    Да, самый простой вариант, это:
    Пользователь отправляет нам на сервер логин+пароль.
    Сервер сверяет с данными в БД, если всё хорошо, то генерирует большую случайную строку(Токен), которую добавляет как запись в БД (UserID, Token), после этого отправляет клиенту токен, чтоб тот установил у себя его в куки (заголовок Set-Cookie).
    Теперь браузер клиента на каждый запрос будет отсылать на сервер куку и мы можем, обращаясь к БД на поиск строки из куки, получать данные о пользователе.
    Но так как хранение в БД не всегда эффективно, токены хранят иногда в быстрых БД, таких как Redis или MemCached.

    По поводу сессии:
    Иногда, чтоб не ходить в главную БД на каждый запрос, некоторые данные выносят из главной БД(В тот же Redis, MemCached или даже просто в файл на диске с именем токена). Просто теперь, хранится не только токен, но и по имени токена сразу же получают некоторые данные, например, что у пользователя ID=42 и что он администратор.

    Через какое то время удалять?

    День, неделя, несколько часов, зависит от задачи.
    Например, некоторые сайты хранят сессию сутки, но если нажать галочку "Запомнить меня", то срок может увеличится до недели или месяца.
    Сервисы оперирующие с деньгами или чем-то, что может представлять ценность, делают сессии от 10 минут.
    Ответ написан
    6 комментариев
  • Css как указать свойства ели есть дочерние элементы?

    Kozack
    @Kozack Куратор тега CSS
    Thinking about a11y
    li:empty — стили для пустого элемента
    li:not(:empty) — стили для не пустого элемента
    Ответ написан
    4 комментария
  • Создание лицензии для плагина на Python+Django?

    sim3x
    @sim3x
    Я вам посоветую опубликовать ваш плагин под gnu-like лицензией без всякой защиты и продавать консалтинг и внеочередные хотелки юзеров

    Любой тип защиты потребует вашего времени и с не нулевой вероятностью приведет к багам
    А наивная защита для популярного плагина - еще и бесполезна
    Надежная защита в виде бинарника с защитой от реверса - не тривиальная штука. И ее не написать без опыта в области реверса
    Ответ написан
    Комментировать
  • В чем причина тормозов вордпресса на большой базе?

    lamer350
    @lamer350
    กำลังสูงสุด
    Ну вы сами ответили на свой вопрос по сути то...
    Ответ написан
    Комментировать
  • Что это за черная магия?

    Kwisatz
    @Kwisatz
    Больше web-приложений, хороших и разных
    Тут происходит css-анимация через keyframe.
    Вполне реально на глаз расчитать. Вот с кроликами жесть, да)
    Ответ написан
    1 комментарий
  • Как разобраться с синтаксисом PHP?

    Изучите методы:
    1. \Illuminate\Foundation\Application::registerCoreContainerAliases
    2. \Illuminate\Container\Container::alias
    3. \Illuminate\Container\Container::__get
    4. \Illuminate\Container\Container::__set

    А именно в 1-2 методе устанавливается алиас events, в 3-4 он вызывается
    Ответ написан
    3 комментария
  • Что умеет выдающийся Frontend разработчик?

    Как человек, делающий и фронт и бэк говорю - бэк проще. На беке ты не паришься вообще с "особенностями" браузеров - у тебя их нет. У тебя вообще практически нет особенностей. У тебя нет необходимости держать в голове пяток яп и разметку(JS, TS, HTML+CSS, CoffeScript, LESS, SCSS) - у тебя есть твой PHP(PYTHON, JAVA) - только один яп. Отдельно идут инструменты сборки - gulp, grunt, webpack - ничего этого нет да и ненужно. Есть композер, который тянет зависимости и все. Тебе ненужно писать километровые конфиги, что бы собрать твое приложение. Линукс тоже знать совсем необязательно - все отлично можно делать и на винде. Ну или развернуть вагрант(докер). Код можно писать где угодно - а вертеться все будет на линуксе. А вот насчет тестирования бэк уделывает фронт на раз-два. Если ты полностью прогнал тестирование (phpunit, codeception) то ты на 99.999% уверен что все пойдет как надо. А вот со фронтом все не так. Ты физически не можешь протестировать ВСЕ браузеры.
    Но есть одно большое но. это конечно мое ИМХО, но всеже - фронт делать интереснее))
    P.S. Забыл упомянуть фреймворки и либы, которые мастхев знать на фронте - React, Vue, Angular и(только камнями не кидайте) jQuery.
    P.P.S Контрольный в голову. Сделали мы клиенту сайт на vue. Сдали, клиент доволен. А потом приходит и говорит - ребята, а на ie8 не работает. А мне очень надо, у меня крупный клиент(бюджетная организация), а у них у всех xp с ie8... (для справки - vue на ie8 не заведется).
    Ответ написан
    7 комментариев