Задать вопрос
  • Как эффективно развивать себя как разработчика?

    lxsmkv
    @lxsmkv
    Test automation engineer
    vanilla-js.com
    освоив javascript вы поймете и сможете освоить любой js фреймворк. Именно таких специалистов нехватает.
    Тех кто без понимания сути пилит кругом и рядом копипасту jQuery со StackOverflow - пруд пруди.
    Только усвоив сам js полностью, вы станете хорошим разработчиком на js.
    IMHO, конечно.
    Ответ написан
    1 комментарий
  • Как эффективно развивать себя как разработчика?

    aRegius
    @aRegius
    Python Enthusiast
    Вам будет гораздо легче решать большую часть стоящих перед вами задач (а другим гораздо легче вам в этом помогать), как только вы перестанете описывать их общими фразами (типа "максимально эффективно", "полноценный дев", "хорошим специалистом" и т.п.).

    Будьте конкретны:
    - "Моя цель на ближайшие 6 месяцев - вырасти до позиции XXX в текущей компании". И далее:
    - "Что мне нужно сделать для того, чтобы в течение 6 месяцев в моей компании вырасти до XXX ?"

    С этим уже можно обратиться к людям, обладающим достаточной компетенцией в помощи вам с ответом на этот вопрос: "Для того, чтобы в нашей компании стать XXX, нужно знать ЭТО и уметь ТО".

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

    Но все начинается с конкретики:
    - "...хочется максимально эффективно развивать себя...". Что конкретно значит (для вас) "максимально эффективно"? По каким критериям вы будете определять, эффективно вы развиваетесь или нет? Количество прочитанных книг? Сложность решаемых задач? Что конкретно?
    - "...чтобы стать не только полноценным девом...". Что конкретно значит (для вас) "полноценный дев"? Как вы поймете, что стали "полноценным девом"? Вы добьетесь определенной должности? Будете зарабатывать определенную сумму денег? Что конкретно?

    Успехов.
    Ответ написан
    Комментировать
  • Как ускорить вёрстку?

    Bastax13
    @Bastax13
    Как минимум - использовать SASS.
    Как максимум - пригласить еще несколько человек и использовать SASS.
    Ответ написан
    Комментировать
  • Ведете ли вы документацию для проектируемого сайта или приложения?

    @immaculate
    Программист-путешественник
    Стараюсь писать так, чтобы все было понятно без документации. Это единственное, что работает. Во всех виденных проектах, кроме Enterprise, моментально начинается рассогласование между документацией и кодом, так как требования меняются ежедневно, а времени на поддержание документации нет.

    С деплойментом ситуация такая же: лучше вложить время в разработку скрипта автоматического деплоймента, нежели писать документацию, которая сначала устареет, а затем вообще начнет противоречить практике.
    Ответ написан
    2 комментария
  • Что делать если команда говнокодит?

    Мы стараемся не запускать эту проблему посредством code review, пытаясь распределить нагрузку по ревью между наиболее опытными участниками. Если в коде есть проблемы - тикет возвращается на доработку с замечаниями. Даже если банально не мержится с главной веткой. Попробуйте наладить этот процесс.

    Также мы всё собираемся настроить Continuous Integration. Jenkins может прогонять по коду проверку на соблюдение стандартов и покрытие тестами, а затем показывать результаты в красивом виде. Если чей-то коммит показывает более чем N ошибок в расчёте на единицу объёма кода - можно возвращать на исправление.

    Прямо уж откровенной копипасты и лапши у нас вроде бы нет почти. Мы стараемся избегать её, придумывать декларативные абстракции во всех случаях, где много тупого императивного кода, писать в функциональном стиле. Я думаю, что необходимы постоянные целенаправленные усилия в этом направлении, чтоб не допускать засилья энтропии.

    Ещё пара идей.
    • можно отправить разработчиков на какой-нибудь онлайн-курс по чистому коду, хотя я таких даже не знаю, но наверняка должны быть
    • или устраивать "хакатоны чистого кода", на коих команда разбивается на пары-тройки, каждая из коих пишет какую-нибудь маленькую, но полезную, а главное чистую и оттестированную штуковину, причём тема - по собственному выбору. Потраченное время - оплачиваемое, разумеется. Это уже зависит от руководства фирмы, согласится ли оно на такие развлечения.


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

    Ну и важно, чтобы у самих разработчиков была установка на хороший код, профессиональная гордость. У фрилансеров её, бывает, нет, а есть отношение "тяп-ляп, лишь бы работало и лишь бы часы оплатили, а там хоть потоп". Учитывая, что их заказчики занимаются code review нечасто, развитие такого отношения закономерно. Но всё-таки хочется писать красивые программы. Такое желание обязано быть.

    Я, конечно, сам не волшебник, я только учусь, и работа с командой - такая штука, которой надо постоянно учиться. Видимо, вы тоже учитесь; успехов в этом.
    Ответ написан
    2 комментария
  • Как правильно оценить проект?

    GriNAME
    @GriNAME
    Front-End Developer, Android Developer
    Кроме оценки по времени, можно использовать и другие методы расчета стоимости. В основном все новички не могут адекватно оценить время, за которое они сделают ту или иную работу. Да и у опытного мастера такое тоже может быть иной раз. Все зависит от проекта и самого человека. Так же не игнорируем индивидуальные особенности. А клиенту желательно знать точную или приблизительную цену перед началом работ, а не когда она завершится и будет зафиксировано потраченное время для расчетов. Поэтому я начинал с оценки по секциям вёрстки, а не времени за работу. Каждая секция 800 рублей (ценник для джуниора). И считаем, хедер, футер, разные блоки. Цена получается очень адекватная для обоих сторон и ее легко посчитать.

    Сейчас я считаю не секции а БЭМ сущности. Мне это удобнее чем, оценка времени (касательно верстки, какие-то работы оцениваю по времени, выше в ответе про временную оценку очень хорошо все описано) Я верстаю по БЭМ и весь проект разбираю на независимые блоки. Например верстка какой-нибудь карточки, а она используется в 5 местах на сайте с 2-3 видами кастомизаций, в зависимости от размещения, но я то благодаря БЭМ верстаю ее только один раз. Потом только готовые классы расставляй. Поэтому считаю БЭМ сущности, если они много раз повторяются ещё накидываю небольшую сумму.

    По посадке (также внедрение) верстки все зависит от того как вы работаете с бекендом. Думаю для вас подойдёт 50-100% от стоимости верстки брать за посадку. В зависимости от сложности.

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

    И мой совет, как работать быстро и качественно. Изучайте современные инструменты для работы. Сборщики проектов, препроцессоры, БЭМ и так далее. По своей натуре я этими вещами начинаю интересоваться ещё до того как получил хорошую базу знаний и мне это помогло очень быстро выполнять свою работу качественно, в короткие сроки, современно и удобно. Каждая работа не выглядит как очередная рутина. За счёт всех этих современных инструментов каждый раз работать очень интересно.

    Ещё если вы сами и дизайны рисуете, то изучите восьми пиксельную сетку
    https://habrahabr.ru/company/everydaytools/blog/31...
    Или расскажите об этом дизайнеру с которым работаете.
    А так же атомарный дизайн. Принцип тот же что и БЭМ, только применительно к дизайну. И оценку очень легко делать и верстать
    Ответ написан
    13 комментариев
  • Что такое Redux простыми словами?

    jQuery "видит" весь DOM целиком. И манипулирует DOM-ом, доступ к которому предоставляет браузер. Но можно и по-другому.

    Давайте рассмотрим такую архитектуру, в которой все компоненты связаны между собой древовидно. То есть, отдельно взятый компонент может общаться со своими дочерними и со своим родительским. Если нужно, чтобы между собой пообщались два компонента в разных ветках, то в конце концов их общение происходит через общего предка. Такой подход вполне согласуется с древовидной структурой HTML.

    Затем отделим состояние от поведения и представления. Состояние можно описать статической структурой данных, JSON-ом, например. А поведение - это чистая функция, из предыдущего состояния и некоего события (действия) делающая следующее состояние. Представление же "знает", как визуализировать состояние. Можно этот принцип воспроизвести от самых мелких компонент (не имеющих потомков) в нашем дереве и до корня. Тогда весь жизненный цикл приложения можно изобразить как цепочку состояний от некоего начального и до текущего, ведомую событиями (действиями).

    Для того, чтобы это всё отобразить, не обязательно в ходе вычисления следующего состояния (или представления) сразу манипулировать DOM-ом. Можно построить из состояния и его представления фрагмент DOM-а, каким он должен получиться. А потом вычислить diff между этим построенным фрагментом (виртуальным DOM-ом) и реальным браузерным. И этот diff применить к реальному DOMу. Один раз. Получится быстро.

    Насколько мне известно (поправьте, если это не так), Redux заимствован из Elm-а. Elm - это экосистема и функциональный язык, компилируемый в JS, сделанный для того, чтобы фронтэнд можно было разрабатывать удобно, быстро и без runtime-ошибок. По синтаксису - это адаптация Haskell-a. Ключевым элементом Elm-а является как раз вот эта самая архитектура. Советую подробнее почитать в первоисточнике. https://guide.elm-lang.org/architecture/

    Кроме упомянутых особенностей эта архитектура также позволяет выполнять так называемую time-travelling отладку. Поскольку каждое состояние и каждое событие по пути от исходного до текущего можно залогировать и воспроизвести (ведь функция, вычисляющая следующее состояние у нас чистая).

    С точки зрения функционального программирования, при таком подходе текущее состояние является результатом функции leftFold, применённой к исходному состоянию, последовательности событий (действий), приводящих к текущему и функции, умеющей вычислять следующее состояние.
    Ответ написан
    Комментировать
  • Что такое Redux простыми словами?

    Лучшее объяснение Redux что я видел.
    getinstance.info/articles/react/learning-react-redux
    ba494148d28e422b4c7bd269de5bed09.png
    Ответ написан
    Комментировать
  • Что такое Redux простыми словами?

    edtoken
    @edtoken
    Full-stack Javascript/Python Developer
    В данном случае разное мышление (проектирование).

    В вашем случае:
    Логика идет от компонентов.
    Допустим на странице пользователя есть label online/offline
    Откуда брать значение, если нужно заблокировать окно чата в тот момент когда пользователь offline?
    Что если таких действий не одно, а допустим штук 10?
    Что если таких действий не одно, а допустим штук 10 и еще на разных страницах?
    Куда вынести функцию, которая проверит статус пользователя?
    Как её назвать чтобы не было конфликта имен?

    Redux для меня в первую очередь подход.
    1. Проектируется состояние (база данных фронта)
    {user:{online:false}}
    2. действие checkUserStatus (ajax/socket)

    3. сколько угодно компонентов (которые не знают друг о друге ничего и имеют любое поведение, в зависимости от статуса пользователя)
    компоненты могут ничего не уметь кроме как рендерить этот статус (label), или, могут быть более сложными и иметь логику + обработчики (кнопки, пр)
    Ответ написан
    4 комментария
  • Translate API. Хороший и бесплатный - миф?

    ertaquo
    @ertaquo
    Евгений Пономарев на почту мне кинул такое решение:
    Привет, я заметил Q&A — http://habrahabr.ru/qa/16856/, у самого меня только ридонли акк, ибо я никакими сведениями особо не располагаю, которые на статью тянут)) Email ТС'а я не нашел, может будет полезно решение через гугл: есть одна возможность отправлять им запросы на translate.google.com и получать перевод нормальный.

    http://translate.google.ru/translate_a/t?client=x&text={textToTranslate}&hl=en&sl=en&tl=ru
    {textToTranslate}, собственно и есть то, что нам надо перевести (длинные очень вещи не пробовал, но с предложениями справлялось)
    Ответ приходит в виде строки json, который нужно распарсить и получить translatedText = myJSON.sentences[0].trans;

    Надеюсь, пригодится))
    Ответ написан
    6 комментариев
  • Как и где можно научиться делать такие сайты?

    @kulaeff
    Front-end developer
    На том же, на чем пишутся и обычные сайты, но с более активным использованием технологий для анимаций. Ключевые слова: canvas, css свойства (animate, transform, transition), web animation api, threejs (webgl), gsap (tweenlite, tweenmax), svg animation.
    Ответ написан
    1 комментарий
  • Почему ASP.NET не используют в крупных компаниях?

    В настоящий момент С# (asp.net) имеет целый ряд преимуществ над тем, что нам дает Java (в плане удобства и синтаксиса языка). Это правда!

    Проблема заключается в том, что Java появился раньше, Java был открытым для использования на Linux. В итоге под сервера на Java написали огромный список уникальных решений, которые сейчас используют топовые команды (посмотри, что такое хадуп, например). В итоге, компании либо не видели смысла переписывать все на C#, так как уже имели билды на Java, либо не хотели тратить время на разработку того, что уже есть на Java.

    Именно по этой причине Microsoft сейчас активно начинает спариваться с Linux и везде кричит, что они его любят.

    Что касается текущего состояния, то сейчас достаточно много компаний, кто начинает писать свои системы на С# (asp.net) - чаще всего новые компании, например, Додо-Пицца. Но старички с Java уже просто не слезут.
    Ответ написан
    6 комментариев
  • Где найти сайт с арендой большого диск. пространства и абузоустойчивостью?

    neatsoft
    @neatsoft
    Life is too short for bad software
    И объем, и производительность, и абузоустойчивость в одном месте найти непросто, поэтому я предлагаю разделить задачу: для хранения данных использовать недорогой "белый" выделенный сервер с емкими дисками и жирным каналом ( https://www.online.net/en/dedicated-server ) а доступ к нему организовать через абузоустойчивый сервер (или vps), работающий в режиме reverse proxy. Для reverse proxy сгодится самое тухлое железо, лишь бы хватало пропускной способности и трафика.
    Anti DDOS защита зависит от типа и интенсивности атак.
    Ответ написан
    3 комментария
  • Две версии сайта. Первая - для пользователя, вторая - для разработчиков. Возможно ли это?

    riot26
    @riot26
    <:З )~~
    Обычно поднимают дев-версию на отдельном домене без костылей типа хитрых флагов. Дев-версия скрывается от поисковиков, БД используется урезанная без деликатных данных на случай чего. Дев-версия, понятное дело, в отдельной git-ветке. И есть, наверное, тыща способов деплоя этого добра на сервера.
    Ответ написан
    Комментировать
  • Режим разработки на сайте. Как вносить изменения на работающий сайт в формате "demo"?

    GavriKos
    @GavriKos
    Ну в теории - это можно. Никто вам не мешает везде писать что то вроде
    if ($test_mode == true)
    {
    //отдаем новый функционал
    }
    else
    {
    //отдаем старый функционал
    }


    Но это неправильно. Самый правильный вариант - это поднимать еще один сайт, для ветки с тестовым функционалом. Хоть на локальной машине и шарить на всех, хоть на той где основной сайт - просто давать доступ по другому урлу. Иначе утонете в тоннах ифов.
    Крайний вариант - разрулить это на уровне роутинга страниц, это потенциально уменьшит количество условий, но все равно очень очень не найс.
    Ответ написан
    1 комментарий
  • Как определить длину обьекта?

    SPAHI4
    @SPAHI4
    реактовцы - это не девы, а прокидыватели пропсов
    Object.keys(obj).length
    Ответ написан
    1 комментарий
  • Как проверить переменную "лежит" там строка или число?

    prompt() - всегда возвращает строку. Но это может быть строка с символом числа: "3" например.
    Надо попытаться перевести ее в строку: Number(n) - получим либо число, либо NuN. Например Number("2") даст 2, а Number("a") даст NaN
    Чтобы проверить, что в переменной NaN надо вызвать Number.isNaN. Number.isNaN(2) даст false, Number.isNaN(NaN)
    В итоге получаем
    var n=prompt();
    if(Number.isNaN(Number(n)))
    alert('Это строка');
    Ответ написан
    3 комментария
  • Как сформировать метод из переменой?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    var idx = 15;
    bxSliderInstances['slider' + idx].goToNextSlide();


    .sliderXXX это не метод, а свойство объекта bxSliderInstances.
    Ответ написан
    1 комментарий
  • Почему в более современных версиях Microsoft Visual Studio не поддерживается класс WindowsForm?

    TrueBers
    @TrueBers
    Гуглю за еду
    Вы в ланчере студии просто не выбрали этот компонент для установки.
    А лучше, используйте WPF.
    Ответ написан
    1 комментарий
  • Сервер для приложение в вк?

    tomnolane
    @tomnolane
    профессиональный разработчик
    что за сервер? точнее что под этим имеете ввиду? Сайт? - т.к. игры используют фреймы - а фреймы берутся с сайта (вашего). Приложение?? для компьютера или телефона?? Если комп, то опять же на сайте размещаете программу клиент, которую скачивают и пользуются. Сама программа может работать как напрямую с вк так и через ваш сайт(сервер). Для телефона - создали приложение. кинули его в плей гугл/апп стор, его скачивают и дальше как с программой - либо через вас запросы идут, либо напрямую

    п.с. если приложение(игра) в виде фрейма - используйте то, на чём умеете работать. Вы же делаете на своём сайте(сервере) и ВК пофигу, что подгружать. Фрейм и в Африке фрейм. Главное https.
    Ответ написан
    7 комментариев