• Пользуетесь ли вы сборщиками при верстке?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Кто-то в 2017-ом еще верстает на голом html/css без доп инструментов?

    Gulp - наш выбор.
    Ответ написан
  • Как обновить Node.js до версии 7 если уже стоит 4-ая на Убунту?

    Pinsky
    @Pinsky
    Кофеиноникотиновая смесь в backend-код
    используйте nvm.
    При необходимости - можно хоть переключать на лету версии.
    Ответ написан
    5 комментариев
  • Как узнать разрешение телефона?

    @justdealman
    Ответ написан
    Комментировать
  • Несколько вопросов о mongodb?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Я работаю с MongoDB уже более 3 лет, поэтому буду рассказывать и давать советы опираясь на личный опыт эксплуатации.

    Получается, что нас всю жизнь учили данные нормализовывать и объясняли, почему это хорошо, а теперь все с точностью наоборот?

    Не совсем. Вас учили работать только с одной разновидностью баз данных - реляционной. Теперь вы увидели, что бывают еще и другие, документ-ориентированные. Разумеется, в каждой разновидности будут свои подходы к хранению и организации данных.
    Это не хорошо и не плохо, это иначе.
    Несомненно, ажиотаж вокруг термина NoSQL существует. И на то есть причины, в основном то, что данных действительно стало больше. Информационная энтропия увеличивается и ее все сложнее укладывать в рамки реляционных баз данных. Здесь можно долго рассуждать, но могу с уверенностью сказать, что сейчас появился спрос на такие хранилища, в которых структуру нужно менять более быстро, чем это могут позволить реляционные базы данных.

    Объясните, пожалуйста, на пальцах, правильно ли я все понимаю?

    По большей части вы правы. Это денормализованные данные, но с определенными моментами. Я покажу вам их на вашем же примере.

    Как в монго при этом обновлять данные, которые хранятся в каждом документе?


    Это реализуется с помощью банальных обновлений.
    Например, если у меня есть коллекция с книгами, в которой мне нужно обновить авторов.

    Типичная запись в ней выглядит так
    {
        "_id" : ObjectId("5801aa17964c6b2a050041a7"),
        "title" : "New Book",
        "authors" : [ 
            {
                "_id" : ObjectId("5801aa0f964c6b26030041a9"),
                "firstName" : "Phil",
                "lastName" : "Tkachev"
            }
        ]
    }


    И я хочу заменить имя в тех книгах, в которых я - автор, то мой запрос будет выглядеть так:

    db.getCollection('book').update(
     {'authors._id':ObjectId("5801aa0f964c6b26030041a9")}, 
     {$set: {'authors.$.firstName': 'Philipp'}  }, 
     {multi: true } 
    )


    Здесь есть ряд разных сценариев, просто почитайте документацию. В ней все неплохо расписано.

    Приемлемо ли в монго денормализовывать данные, чтобы хранить данные в отдельной коллекции, и обращаться к ним отдельным запросом (ведь джоинов там нет)?


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

    И принято ли так работать?


    И да, и нет. Когда вы работаете с такого рода базой данных, вам нужно подходить к организации данных исходя из решаемой проблемы, отталкиваться от проекта будущего приложения или решения задачи.
    Вам просто нужно ответить на вопрос, что дешевле, запросить документ по ключу или обновить запись внутри документов.
    Взять к примеру, ваш сайт, в котором есть новости и их авторы. Новости могут читать миллионы, а значит при обращении к каждой новости нужно будет делать подзапрос на информацию о каждом авторе. Т.е. вместо одного запроса, при просмотре новости, нужно будет делать 2. А если показывать список из 100 новостей? Будете делать 100 вторичных запросов? Нет, это тоже неправильно. Нужно будет получить список новостей, в коде приложения собрать идентификаторы авторов, сделать второй подзапрос, получить информацию об авторах, затем объединить ее с уже полученным списком статей. Это немного усложнит ваше приложение, но тоже позволит сэкономить ресурсы. Если вы встроите авторов внутрь статьи, это позволит вам обойтись одним запросом к базе, хоть на просмотр, хоть на список новостей. С другой стороны вам прийдется подумать об обновлении информации об авторе. Но, т.к. такая информация меняется сравнительно редко, то есть смысл встраивания.

    Что делать, если изменилась структура данных, если структуры то и нет?


    Здесь все просто. Когда вы разрабатываете свое приложение, вы изначально закладываете в него обработку изменений. Например, вы можете добавить поле версии документа, в котором храните номер версии структуры и реагировать на ее изменение в коде. Либо вы можете просто писать приложение таким образом, что оно автоматически будет конвертировать структуру из старой в новую при первом обращении.

    По дизайну вашего приложения.
    Судя по первичным данным, у вас новостной сайт.
    Логично было бы его представить в следующем виде.

    Коллекция новостей:

    {
    	_id: 'MongoId',
    	title: '',
    	body: '',
    	author: {
    		_id: 'идентификатор пользователя',
    		name: 'Имя пользователя',
    		subscribers: 'Количество подписчиков'
    	}
    }


    Автор является неполной копией данных о пользователе. Это поможет сэкономить место и позволит избежать ненужных запросов.

    Коллекция пользователей:

    {
    	_id: 'MongoId',
    	name: 'Имя пользователя',
    	email: '',
    	roles: ['user', 'author', 'admin'],
    	subscribers: 'Number'
    }


    Список ролей может опеределять уровень доступных возможностей. Его легко изменить, можно легко найти авторов или админов.

    Коллекция подписок:

    {
    	initiator: {
    		_id: 'идентификатор пользователя, который инициировал подписку',
    		name: 'Имя пользователя'
    	},
    	target: {
    		_id: 'идентификатор автора',
    		name: 'Имя пользователя'
    	},
    	date: 'ISODate',
    	confirmed: 'bool'
    }


    Здесь вы можете подстроить, как список подписок, так и список подписчиков одним запросом.
    Ответ написан
    1 комментарий
  • Согласны ли вы с утверждением, что bootstrap подходит только для прототипов?

    @Volde
    Умея верстать, bootstrap ни к чему. Чаще всего удобнее верстать самому это факт
    Потому что верстается то, что будет использоваться, не переопределяя стили фреймворка
    Бустрап отличный инструмент, если у вас нет времени на то чтобы верстать все с нуля, или вы делаете шаблонные решения
    Ответ написан
    3 комментария
  • Верстальщики, как по современному выполняете свою работу?

    iiiBird
    @iiiBird Куратор тега CSS
    Пока ты спишь - твой конкурент совершенствуется
    Не понимаю о чем вы тут все.
    Edge + блокнот + Paint
    WnauMj7EWES2uDnzpK2Kw.jpg
    Ответ написан
    3 комментария
  • Как группировать и называть css селекторы?

    Serj-One
    @Serj-One
    i'm sexy and i know it
    Ответ написан
    Комментировать
  • Как реализовать цветовые фоны макета в верстке?

    delphinpro
    @delphinpro Куратор тега HTML
    frontend developer
    Вы же не думаете, что вам нужно реализовывать эти колонки в верстке???

    ЗЫ Если хотите, можете взять мою сетку https://gist.github.com/delphinpro/87ef3d684c59848...
    как раз то что нужно вам, я использую в процессе верстки для визуального контроля, перед сдачей проекта сетка отключается.
    Ответ написан
    7 комментариев
  • Какие инструменты вы используете в команде для сохранения единообразия кода?

    bingo347
    @bingo347
    Crazy on performance...
    editor-config + eslint (с четко прописанными правилами оформления кода)
    и жесткое требование установить соответствующие плагины в IDE
    Ответ написан
    2 комментария
  • Параллакс, как правильно?

    customtema
    @customtema
    arint.ru
    Паралакс, как правильно?


    Параллакс
    Ответ написан
    1 комментарий
  • Существует ли золотая середина в разметке текста?

    sim3x
    @sim3x
    Межстрочный интервал создается дизайнером
    У тебя задача скопировать его и сделать его одинаковым для всех браузеров
    Ответ написан
    Комментировать
  • Почему в американских лендингах нет телефонов, как точек захвата?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Потому что в Америке принято продавать продукт, а не впаривать говно.
    Именно поэтому принято, чтобы продукт говорил сам за себя.

    Пользователю нафиг не нужен телефон, чтобы начать использовать продукт. В большинстве случаев нужен email, чтобы получить ссылку на авторизацию и начать работу с продуктом. В США большая часть населения умеет пользоваться Интернетом, компьютером и в состоянии ввести номер кредитки для оплаты продукта/услуги онлайн.
    В России есть специфика - IT-имбецилы, которые не умеют пользоваться компьютером, поэтому им нужно звонить и говорить, на какую кнопку надо нажать и как оплатить. Аналогичная ситуация в Китае, у этих дебилов вообще практически везде авторизация завязана на номер телефона.

    Есть еще один момент, телефонный звонок крайне навязчив, фактически посягательство на личное время и часто неуместен. Лично я провожу в некоторые дни до 60% своего времени на совещаниях. Мне некогда выслушивать и кому-то звонить. А вот email я могу быстренько просмотреть.

    Вам не нужна форма захвата, вам нужно показать продукт и дать пользователю возможность им пользоваться. Если продукт нравится, то за него заплатят. Остальное все - шелуха.
    Ответ написан
    11 комментариев
  • Какая существует лучшая техника для резинового меню на данный момент?

    HamSter007
    @HamSter007
    HTML/CSS верстальщик
    flex

    как-то так:
    .main-nav {
        display: flex;
        align-items: center;
        align-content: space-between;
        justify-content: space-between;
    }
    Ответ написан
    1 комментарий
  • Как в Magnific Popup автоматически запустить окно после загрузки страницы?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    Смотрите документацию внимательно dimsemenov.com/plugins/magnific-popup/documentatio...

    // Open directly via API
    $.magnificPopup.open({
      items: {
        src: '<div class="white-popup">Dynamically created popup</div>', // can be a HTML string, jQuery object, or CSS selector
        type: 'inline'
      }
    });


    Пример codepen.io/anon/pen/gwxBON
    Ответ написан
    Комментировать
  • Можно ли использовать ID элемента как переменную?

    @each $name in 'save' 'cancel' 'help' {
        .icon-#{$name} {
            background-image: url('/images/#{$name}.png');
        }
    }

    на выходе
    .icon-save {
      background-image: url("/images/save.png");
    }
    
    .icon-cancel {
      background-image: url("/images/cancel.png");
    }
    
    .icon-help {
      background-image: url("/images/help.png");
    }
    Ответ написан
    Комментировать
  • Как правильно сделать адаптивную верстку если дизайн разный?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Все вопросы к веб-дизайнеру макетов!
    Ответ написан
    2 комментария
  • Модуль для mongodb который меняет представление о простате и удобстве работы с базой, есть такой?

    @Fixid
    Думаю сложно изменить представление о простате. Ее не просто вылечить, но возможно вам поможет официальный список модулей
    Ответ написан
    Комментировать
  • Почему фрилансеры готовы общаться только в чате?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    потому что большинство заказчиков идиоты и фрилансеры просто не хотят тратить время еще и общаясь с ними. из личного опыта знаю как один "особый" заказчик любил звонить. среди дня и ночи. по любому вопросу. даже просто уточнить что то. после этого больше с заказчиками на связь не выхожу.
    p.s. а еще это трата времени. порой, когда я общаюсь с заказчиками - параллельно я делаю другой проект. и мне легче общаться по средством чата и не отвлекаться от работы.
    p.p.s а еще мне нужно чтобы заказчик написал тз, ну или хотя бы описал словами что он хочет в текстовом виде. нежели будет придумывать на ходу при общении, а потом мне это еще вспомнимать чтоли? или на диктофон записывать?
    Ответ написан
    13 комментариев
  • Как вы следите за своим "домашним" временем, какой софт используете?

    GavriKos
    @GavriKos
    Если вы не о фрилансе, а именно о домашних задачах - то никак. Потому что домашние задачи должны делаться в удовольствие, и контролировать время тут - лишнее.
    Ответ написан
    2 комментария