• Есть ли вообще какой-нибудь толк от HTML5 семантической разметки страницы?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    HTML5-разметка - это помощь поисковикам в верном разборе контента при индексации.
    В общем, если всё по SEO составлено верно, - ранжироваться будет лучше в несколько раз вместе с отображением доп. данных из тегов (АНАЛОГИЧНО микроразметке) при показе результата поискового запроса в поисковой выдаче.
    Если делать - то только HTML5-разметку.
    Ответ написан
  • Как построить свой рабочий день фрилансеру?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    3 комментария
  • Как писать много кода, оставляя его простым, как в начале?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Ну в общем-то ответов много. Могу кое-что добавить от себя.

    Во-первых, голова не бесконечна во всех смыслах. Запихнуть в неё больше чем 10 объектов одновременно вряд ли получится, у многих начинаются огромные проблемы уже с 5. Лично я испытываю ДИКУЮ больше если собственный код становится больше чем большой. Для меня это где-то 15~20 сущностей, причём чем сильнее они связаны, тем сложнее они даются, так как становится сложно абстрагироваться. Что примечательно, при работе с чужим кодом таких проблем практически нет, ну у меня по крайне менее. Всё дело в том, что чужой код изначально воспринимается чёрным ящиком, поэтому если он не представляет из себя дикую лапшу, аккуратная работа с ним с минимальным вмешательством в проект получается легко.

    Во-вторых, не стоит делать код пушистым. Однообразность воспринимается лучше. Массивы некоторых объектов надо называть $названием_объекта + 's'. Классы с большой буквы, любой объект стоит называть так же, как класс, но с маленькой буквы. Конечно, если семантически прям просится по другому, то стоит правило нарушить, но в общем случае никаких выдумок не надо. Временная строка - str, временное число - tmp, временный объект - obj. И пробелов не жалей, внутри файла разделяй разные структуры двумя-тремя пробелами, стоит обособлять регионы, например, "глобальные" функции наверху, по середине структуры, потом классы. В C# есть #region.

    В-третьих, объём тоже воспринимать сложнее. Делай плоско. В том смысле, что меньше наследований, больше включений. Очень тяжело воспринимать архитектурную лапшу. Суть микросервисов - единственная, максимум две точки связи. То есть контроллер де должен склеивать всё и вся, это задача "простейшего" диспетчера событий, который крутится в своём цикле и распихивает поступившие сообщения. Микросервису надо думать чем меньше, тем лучше. Вообще, микросервисы не всегда хорошо подходят, они очень удобны в сверхраспределённых командах с высокой степенью самодисциплины, когда привычка смотреть в доки сильнее привычки звонить тимлидеру на каждый чих. В случае с самостоятельной разработкой они скорее зло, хотя в web поначалу довольно приятно, заливать чрезвычайно низкую производительность ресурсами, забивая каналы связи под завязку, не лучшая идея. Порой намного лучше сделать монолитно, но аккуратно, особенно когда вся жизнь продукта под ответственностью одного человека.

    В-четвёртых, внутри монолита также надо делать максимально растянуто, никаких супер-синглетонов бдящие за всем и вся. Равно как и с микросервисами, внутренние объекты должны иметь минимум точек входа. Они должны быть просты и понятны. Если какой-то класс выполняет слишком много задач, часть из них надо делегировать другим классам, возможно новым. Это по сути цикломатическая сложность, о которой упомянул Ivan Sokolov, но мне не нравится эта формальность. Да и некоторые вещи сложно формализовать ребром на графе.

    В-пятых, иерархия должна быть логически правильной, наивной, без выпендрёжа. Тоже самое, что и в третьем, плоское лучше объёмного.
    Плохо:
    3dbadffb7d954b2d93a5dfec863289be.png
    Лучше:
    1238e5c4d83340239a250116d4d2fa3a.png
    Пример немного утрирован, но суть, навроде, ясна. Не надо наследовать всё и вся от чего угодно, если есть возможность включить внутрь - включай. Всё остальное от лукавого и только в крайних случаях.

    В-шестых, используй UML, mind maps, блокнот и таск менеджеры. Эти инструменты словно манна небесная спасают дедлайны от полного уничтожения. Хотя UML спорен, им очень удобно следить за структурой проекта, представлять картину с высока, рисовать его стоит самому, учитывая неявные связи и убирая рудиментарные. Mind maps помогут собрать мысли в кучу. Блокнот банально запишит то, что постоянно забывается. Таск менеджеры сформируют привычный график, отобразят прогресс, помогут фокусироваться на текущих задачах, не растекаясь по проекту.

    В-седьмых, изучи декларативное программирование. Шикарная вещь, которая позволяет сконцентрироваться на задаче, а не на решении. Из коробки в функциональных (erlang) и логических (prolog) языках, однако многие элементы существуют и в монстрах вроде C#/Java, Python, особенно JavaScript. Насчёт Go не знаю, но на первый взгляд весьма декларативный.

    И наконец, сложность проекта в любом случае будет расти. Единственное, что с этим можно сделать - это смирится. Да, все эти способы помогают, но они лишь оптимизируют имеющееся, позволяя больше впихнуть в голову. Но с ростом проекта сложность расти будет всё равно, энтропия замкнутой системы не уменьшается. Именно поэтому её локально уменьшают в разных кусках кода, однако натыкаются на другие грабли - один винтик может дёргать тысячи классов. Сам-то винтик прост, однако он всё равно берёт на себя слишком многое.

    Ещё пара абзацев. Ну про вредные советы: методы надо делать ровно такими, какие они должны быть. 20 строк - это что-то вроде лакмусовой бумажки, однако это лишь один из параметров. Очень часто требуется сделать громадную функцию для работы со сложным API или подробить много разных чисел в циклах. Поэтому ориентироваться на это плохая идея. Равно как и папки-подпапки-подпапками погоняемы, максимум - два уровня в чрезвычайно сложных проектах. Иначе будет очень сложно ориентироваться. Ещё происходит странный возврат к комментариям. На мой взгляд, если это не продаваемая за большие деньги библиотека - нах*й надо. Документация в комментариях - рудимент кода, он нигде не используется, зато требует поддержки, на что приходится распылять внимание. Если нет условного рефлекса править комментарий после кода - выбрасывайте и не жалейте. Везде! Без исключений. Ещё есть много "архитектурных" паттернов. Снова вред, если вы не работаете в Google, где вашу зарплату надо оправдать умными словами. Самый эффективный способ - программировать наивно. Чем проще для вас сейчас, тем лучше для вас потом. Если думаете больше десяти минут - плохо думаете... Но об этом позже. Паттерны это некая систематизация неких знаний, причём совершенно не понимаю, зачем её вообще сделали. Да, архитектура в некотором роде нужна, но постоянно искать какой паттерн здесь надо использовать, если это не проект на 100500 лет вперёд - нельзя. Почти всегда будет дешевле в случае неуспеха отрефакторить всё и вся, чем переписывать с нуля или тратить месяцы на продумывание архитектуры... В которой также могут быть ошибки.

    И последнее. Отдыхайте. Если чувствуете, что задыхайтесь - пройдитесь, подышите. Если чувствуете, что мозги плывут - отвлекитесь, подумайте о другом. 8 часов в день для программиста - это дикость, но это реальность. Для разных людей наибольшая эффективность поддерживается где-то 3~6 часов, причём некоторым требуются перерывы каждые пол часа, другому хватит обеденного перерыва, а третьему вообще нельзя сегодня никаких отвлекающих факторов, ибо "волна". На самом деле, человек существо динамичное, так что будут разные дни. Но если не получается сейчас - не бесите самого себя. Отдохните, перекусите, пробежитесь, покурите, проверьте почту, послушайте музыку, почитайте статью. Не тратьте время бездарно и, что интересно, проблемы будут решаться, усилия будут прикладываться аналогичные, но вот ощущения от работы станут совершенно другими.
    Ответ написан
    7 комментариев
  • Что, помимо основ JS,необходимо знать и понимать для изучения Node.JS?

    rudevich
    @rudevich
    web
    во время изучения Node.js все что нужно знать всплывет и изучите.
    Предлагаю решать проблемы по мере поступления.
    Ответ написан
    Комментировать
  • Области применения JS в современном IT?

    @GreatRash
    JS применяется сейчас везде практически: фронтенд, бекенд, разработка приложений, игры. Кто его знает куда его ещё занесёт в будущем.
    Ответ написан
    1 комментарий
  • Как происходит разработка веб приложений у профи?

    sim3x
    @sim3x
    Один коллега посоветовал мне сначала писать тесты, а потом уже под них писать код. Мы так еще не делали, хотим внедрить. Действительно ли это эффективно?

    Да, так пишется меньше кода :)

    Только в последовательность выглядит так
    0. Пишем тест под новый функционал
    1. Стартуем тесты = прогон тестов должен занимать до 2 сек
    2. Видим новый проваленный тест
    3. Фиксим его

    Но в любом случае, сначала заводится тикет в багтрекере, потом вешается на себя, потом делается "гит пулл", а уже после того добавляется код

    Различные среды дев/прод/тест должны готовится автоматом + должны быть в виде готовых образов для виртуалок или для докера.
    Последовательность: пишется скрипт для сборки образа, отправляется в репозиторий, ночью или моментально машина, ответственная за образы, собирает его и разраб может ею пользоваться.
    ИМО дев/прод/тест не должны различаться на данном етапе - все модификации окружения должен проводить софт, который ассоциирован с ЯП/средой, в которой ты занимаешься разработкой. Допустим ты работаеш с нодой и тебе нужны пакеты для оптимизации цсс - npm install а на продакшене такое не нужно и ты делаешь npm install --production

    Но все ети заморочки не добавляют скорости разработки - они не дают разводить на проекте бардак и, теоретически, повышают качество кода
    Ответ написан
    Комментировать
  • Хорошая задача для укрепления знаний и практики в JavaScript?

    isqua
    @isqua
    Научу HTML, CSS, JS, BEM и Git
    Плюсую codewars.com, там интересные задачи на логику, алгоритмы и тонкости языка. Но это всё-таки не продуктовые задачи. Можно их много решать, но так и не научиться делать то, что обычно нужно на работе. Они развивают другое.

    Обычно все пишут туду-приложения, но это уже скучно и затёрто :) Я рекомендую попробовать написать аудиоплеер. Сайт, на котором можно послушать музыку. Можно даже авторизовывать пользователя через last.fm и например рекомендовать ему музыку на основе его предпочтений, или даже сразу включать её (подтягивая треки из вконтакте).
    Ответ написан
    1 комментарий
  • Хорошая задача для укрепления знаний и практики в JavaScript?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    Ответ написан
    Комментировать
  • Стоит ли учить Coffeescript в преддверии выхода Ecmascript 6?

    Если нравится подобное: "],[],[{},{},{}];};});]}});});})}}});}}]", то учить coffee не стоит.
    Ответ написан
    Комментировать
  • Как развиться от фрилансера до серьезной компании?

    sim3x
    @sim3x
    Все зависит от тебя

    Попробуй нанять менеджера и пусть он построит процессы
    Или подними свою квалификацию до ПМа

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

    Забудь про слово стартап.
    Стартап - такой же бизнесс как и у тебя, только в стартапе основатель знает что такое смузи
    Что никак не дает буст в конкурентноспособности

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

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    В целом IE9+
    Иногда, для крупных порталов, встречается IE8+

    Так же, практически никто больше не поддерживает Opera 12, FF 3.6 и Safari 5.

    Зато сейчас в тренде проверять на мобильных браузерах (iPad, Nexus, Galaxy Tab и т.п.)
    Ответ написан
    1 комментарий
  • Стоит ли учить Coffeescript в преддверии выхода Ecmascript 6?

    kivsiak
    @kivsiak
    software engineer
    Если че коффе учится за вечер.
    Ответ написан
    Комментировать
  • Опыт, практика в JS?

    Не смотря на все ваши знания я сомневаюсь (пока не знаю на что поспорить), что у вас получиться написать плагин для хрома в виде домашнего питомца (например котика).
    Питомец вместе с хозяином гуляет по интернет страницам и всячески на них веселиться (карабкается по div-элементам, царапает текст и многое другое, ибо кормить надо и гладить), а так же здорово помогает (запоминает страницы и куски текста, уничтожает div с рекламой издавая визг, указывает на нежелательные ссылки).
    После написания можно продать его в маркете, поддерживать работу и зарабатывать на этом деньги ;)
    Ответ написан
    4 комментария
  • Как тестировать верстку в IE если работаешь под Mac OS?

    antonydevanchi
    @antonydevanchi
    10 лет в айтишке
    Parallels Desktop 10 имеет специальный режим где разворачивает виртуалку с кучей разных ослов. Пользуюсь, наслаждаюсь, без вариантов. Всё остальное ведет себя довольно по-кретински.
    Ответ написан
    2 комментария
  • Где найти примеры хорошего кода, структуры, паттернов для нативного javascript?

    javascript.ru/tutorial/Object

    Я отсюда изучал. Отсюда же написал по примерам свои решения для наследования и полностью разобрался с прототипами.
    Ответ написан
    Комментировать
  • Где найти примеры хорошего кода, структуры, паттернов для нативного javascript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Посмотрите реализацию $rootScope а angular.js для реализации дата биндинга. Вообще этот фреймворк весьма неплохо написан и его исходники можно поизучать.

    А вообще наследование не так уж часто и нужно. Да и наследование в JS больше напоминает декорацию объектов.
    Ответ написан
    Комментировать
  • Какой текстовый редактор/IDE для разработки html, css (stylus), js (coffee) вы считаете лучшим для этого? В чем его преимущества?

    max107
    @max107

    К сожалению sublime даже после дотачивания напильником и плагинами нельзя назвать полноценной IDE и сравнивать его с продуктами JetBrains просто нельзя, как мне кажется. Это несколько иной уровень / удобство / скорость разработки, нежели простой текстовый редактор. Рекомендую лучше присмотреться к WebStorm.

    Ответ написан
    2 комментария
  • Какой текстовый редактор/IDE для разработки html, css (stylus), js (coffee) вы считаете лучшим для этого? В чем его преимущества?

    @Masterme

    PHPStorm/Webstorm невероятно удобен тем, что автоматически сохраняет изменения без необходимости жать Ctrl+S

    Ответ написан
    3 комментария