• Для чего нужна ORM?

    Zorkus
    @Zorkus
    Сам по себе ORM, именно как maaping, в крупных проектах нужен как раз очень сильно. Опишу здесь свой опыт. Если понравится кому, может и статью потом.

    Итак.
    Представьте себе — у меня есть очень крупная система, и есть в ней таблица orders, в ней скажем, 50 колонок (на самом деле у нас 150, ну да ладно. Нормализаторы, молчать! Про нормальные формы я тоже знаю). И вот надо значит вам выбрать один ордер и показать его на экране. Допустим, вы пишете селект, неважно. Дальше что делать, в промежуточном слое? Вы не же вызываете хранимую процедуру (запрос) напрямую с, скажем, JSP страницы (я надеюсь), вам все равно надо получить данные и передать их как-то.
    Так что, передавать их в виде массива, ArrayList-a, ассоциативного массива имя колонки/значения? Ну так дико громоздно, неудобно, и очень легко ошибиться. А если вам надо несколько ордеров, тогда что, создавать вложенные коллекции для конвертации результатов? Неудобно же.

    Потому, очевидно, нам нужен объект Order, имеющий все нужные property, и нужен код, который умеет конвертировать результаты скл запрос в эти объекты (или коллекцию этих объектов).

    Далее, очевидно, что писать руками _все_ запросы трудно и нудно, легко ошибиться, т.к. в Java они будут представляться в коде в виде строк (а значит, никакой статической типизации и compile-time проверок и прочее и прочее), и их надо держать либо в Java коде (если они мелкие), либо, если побольше, выносить в отдельные XML файлы.

    В общем, ORM в больших проектах нужен для упрощения рутинной части. Без него — никуда :)

    Безусловно, обойтись ТОЛЬКО ORM не получится. Есть у нас масса мест, где сложная логика написана в хранимых процедурах в 500-1000 строк на PL/SQL, написанная через ORM /Java она бы занимала в 10 раз больше и работала в 2 раза медленнее (при этом, она была бы еще и менее понятная, т.к. есть такая логика, которые в терминах реляционной алгебры описывается куда проще, чем в терминах ООП :), следовательно ложится на ORM со скрипом). Сколько нибудь сложные запросы с подзапросами, юнионами, хитрыми джойнами тоже писать через чистый ORM громоздко. Оптимизировать запросы, работающими в таблицах где, хотя бы, несколько сотен миллионов записей, без доступа к планам SQL оптимизатора и статистики/средствам мониторинга уровня СУБД тоже крайне сложно. Так что без SQL тоже — никуда :)
    Ответ написан
    3 комментария
  • Как расположить элементы по кругу?

    Vlad_IT
    @Vlad_IT Куратор тега CSS
    Front-end разработчик
    Делайте по такому принципу.
    Ответ написан
    12 комментариев
  • Как правильно запускать nodemon из docker без нагрузки на CPU?

    Некоторое время помучавшись с nodemon мы взяли pm2-dev и стало гораздо лучше pm2.keymetrics.io/docs/usage/pm2-development
    Ответ написан
    Комментировать
  • Где найти человека способного быстро и качественно научить основам JS за деньги?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Чувак, идешь сначала сюда https://learn.javascript.ru/
    Пока Илья с товарищами по команде тебе надоедают, учишь английский.
    Потом переключаешься на бритоголового https://egghead.io/
    Потом, если покажется мало, начнешь курить спеки. К этому времени уже освоишь гугл и сможешь сам их найти.

    Лучшие практики SPA

    1. KISS - использовать только то, что действительно нужно. Например вам не нужен Javascript, если нужно просто сделать выпадающее меню. Достаточно просто CSS. Тоже самое применяется и к JS, вам не нужен Angular, если есть просто форма обратной связи. Такая задача решается на vanillajs.
    2. Использование фреймворков, например bootstrap, foundation и т.д. Обычно из них берется типография и сетки. Иногда формы. Я обычно беру bootstrap-stylus и собираю из него.
    3. Critical rendering path - минимальный набор CSS, который требуется для отображения первого экрана страницы, который потом будет встроен внутрь html-файла. Пример.
    4. Применение систем сборки, например gulp. Основной смысл заключается в том, что сначала вы дробите SPA на множество мелких компонентов/модулей/блоков. Затем унифицируете их. В итоге получается набор небольших файлов. Затем из этого набора собирается два больших файла (css, js) и они прогоняются через оптимизатор и минификатор.
    5. Использование CDN. CDN позволяет ускорить загрузку для часто-посещаемых и популярных страниц за счет уменьшения времени доставки контента. Особенно актуально для SPA, поскольку они представляют собой статический контент, который можно кэшировать без последствий.
    Системы сборки

    Принцип работы прост, взять кучу файлов, прогнать через набор фильтров, называемых препроцессорами, пост-процессорами, компиляторами, минификаторами и т.д., затем склеить и записать внутрь общих файлов.
    Остальное - ньюансы. Просто гуглите любой и идете на его веб-сайт. Непонятно, гуглите дальше.

    Модули AMD, CJS, UMD

    Они предназначены для управления зависимостями. Например, когда у вас есть два десятка компонентов и один зависит от другого. Суть их в том, чтобы просто объявлять зависимости в компонентах используя тот или иной способ описанный в документации. Начните отсюда.

    Сборка и подключение css

    Здесь и так ясно, что нужно сначала освоить сборщики. postcss - это когда обычный css скармливается фильтру, который разбирает его, добавляет префиксы к свойствам, оптимизирует наименования цветов и т.д. Убирает дублирующие свойства.

    В целом очень толково про оптимизацию расписано здесь https://developers.google.com/web/?hl=ru
    Ответ написан
    4 комментария
  • Как подготовить .js файлы из webpack для production?

    alvvi
    @alvvi
    export default apathy;
    Для production оно должно минифицироваться, все эти шапки там будут неотличимы от обычного кода.

    Вытаскивать чистый JS не имеет смысла, вы потеряете одно из главных приемуществ Webpack'a - модульность.
    Ответ написан
    2 комментария
  • Почему в github page не создается новый сайт?

    paulradzkov
    @paulradzkov
    Дизайнер, верстальщик, начальник отдела UI
    Добавлю, что на github тоже можно создать «организацию» с любым незанятым именем и получить для нее сайт вида ORGANISATION.github.io
    Ответ написан
    Комментировать
  • Для чего нужны при создании экземпляра класса скобки?

    muhammad_97
    @muhammad_97
    PHP-разработчик
    Скобки можно опустить, если в конструктор ничего не передается.
    Ответ написан
    2 комментария
  • Как seo-продвинуть сайт без денег?

    XXX
    @XXX
    Решение где-то рядом
    Alexander-K
    • Проведите аудит сайта на предмет косяков (инструменты вебмастеров Вам в этом помогут)
    • Если сайт еще не добавлен в гугл и яндекс вебмастер, то добавьте.
    • Исправьте косяки, sitemap, robots.txt, meta-теги, описания страниц, заголовки, оптимизация содержимого страниц, перелинковка и т.д.
    • Скормите карту сайта поисковикам
      http://google.com/webmasters/sitemaps/ping?sitemap=ссылка на Ваш sitemap
      http://www.bing.com/webmaster/ping.aspx?siteMap=ссылка на Ваш sitemap

      Для того чтобы яндексу карту отправить, придется зайти на страницу вебмастера. И до кучи можете воспользоваться сервисом пинга в 40 поисковиков.
    • Если сайт региональный, то задайте регион.
      В яндекс вебмастере задается в настройках сайта, География сайта → Регион сайта
      В гугловских инструментах вебмастера, Поисковый трафик → Таргетинг по странам и языкам → Страна
    • Составьте семантическое ядро
    • Напишите SEO тексты заточив под ключи по которым будете двигаться
    • Если сайт не статичный, зарегайте его в соц сетях и постите туда новости со ссылками на свой сайт
    • Регайтесь на крупных форумах, с ссылками не закрытыми от индексации и напишите там про Ваш сайт
    • Оставляйте комменты в dofollow-блогах


    "Тупо регится на площадках" и спамить ссылку на Ваш сайт, не зная ключей по которым двигаетесь, бесполезно и вредно.
    Ответ написан
    2 комментария
  • Как вы организуете свои повседневные дела, идеи и рабочие проекты?

    Для проектов использую Asana. Для дел — календарь в телефоне, только привязка не гуглу, а к iCloud. Для мелочей использую симпатичное приложение Clear.
    Ответ написан
    1 комментарий