• Как вы строите архитектуру приложения?

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

    Потом список сценариев своими словами. Детализация по вкусу. После списка сценариев наброски интерфейса. Только после набросков интерфейса, которые показаны клиенту, думать о внутренней реализации.

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

    Этап перед внутренней реализацией можно проскочить за один день, а можно долго согласовывать с несколькими встречами в течение 1-2 недель. От проекта зависит. Если людей в проекте несколько, то ответственность за проектирование лежит на ведущем разработчике, но словарь, сценарии и наброски - предмет обсуждения с коллегами.
    Ответ написан
    2 комментария
  • Почему не все серверы пишутся на Node js?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    1. Принципиальных качественных преимуществ у node.js перед остальными языками нет, как впрочем и недостатков. Просто yet another язык со своими особенностями. Соответственно если в вопросе заменить node.js на php/ruby/python итд - ничего не изменится.
    Вопрос по сути абстрактный "почему все не перешли на язык %%%%%"

    2. Ответ на абстрактный вопрос:
    а) Потому что существует огромное количество legacy кода который нужно поддерживать. Работы по поддержке и развитию существующего кода на порядок больше чем написания с нуля нового
    б) Потому что у разработчиков есть свой стек любимых технологий, изменять который без явных экономических причин основная масса не готова
    в) Потому что умные технические менеджеры выбирают стек технологий проекта исходя из имеющихся под рукой разработчиков и легкости поиска и заменимости оных.

    UPD
    hbrmdc
    У NodeJS есть уникальные и очень весомые преимущества, которых нет ни у одного другого языка. Например то, что это JS, и, следовательно, нет необходимости разучивать лишние языки - можно весь webapp писать на js.
    Личные предпочтения обоснованные привычками - это не имеющий значения аргумент в данном вопросе.

    1) Есть отличия, да. Только не те о которых Вы пишите. То что это "JS" вообще ни на что не влияет.
    JS хорошо знают фронтендщики - а кто пустит фронтэндщика к внутренней архитектуре? Там подход совершенно другой нужен, другие навыки, другое понимание как это все работает. Просто пересадить человека с фронта на бек - нельзя.

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

    2) Личные предпочтения обоснованные привычками это основной аргумент.
    Я вот умею в php, умею в ноду, умею в еще десяток умных слов.
    Мне нужна новая команда на новый проект.
    Я открываю hh и что я вижу: node.js 279 резюме из которых половина фронтэндщики.
    PHP - 9613 резюме. Даже если 90% разработчиков PHP на hh - уроды которых к коду нельзя подпускать на пушечный выстрел - останется все равно в 3 раза больше чем есть node.js.
    Собственно на этом выбор и закончен.

    На малопопулярных языках пишут в случаях:
    a) это мелкий сервис с неявными перспективами который можно переписать за неделю
    б) это проект "для души" разработчика.

    Получается замкнутый круг на самом деле.
    Менеджер смотрит резюме, резюме на node.js нет =>
    Менеджер не начнет проект на node.js =>
    Не возникнет вакансия на node.js =>
    Разработчик анализируя вакансии не увидит вакансий на node.js =>
    Разработчик будет учить что то другое =>
    Менеджер смотрит резюме, резюме на node.js нет...

    Переломить ситуацию могут только очень крупные игроки обладающие возможностями формирования рынка (например Apple и Swift), и то не со 100% гарантией (samsung&c и Tizen)
    Ответ написан
    13 комментариев
  • Best practices при написании приложений на Laravel?

    Denormalization
    @Denormalization
    В основно Сергей Протько всё правильно ответил, дополню несколько пунктов:

    5) Валидацию нужно делать в контроллере на уровне FormRequest. Метод register в модели не нужен. Можно сделать сервис UserRegistration, или использовать команды (раздел Jobs).

    6) Отправку Email не нужно тестировать. Максимум что можно сделать, это замокать фасад или интерфейс Mailer и проверить что он вызывается.
    Ответ написан
  • Как скрыть от других пользователей upwork, что я сейчас работаю?

    opium
    @opium
    Просто люблю качественно работать
    Научи тесь не врать, скажите клиенту что сейчас есть более ваыгодный проект, это повод ему либо подождать, либо поднять вам рейт.
    Такое ощущение иногда складывается что в детстве не врать учила мама только меня
    Ответ написан
    Комментировать
  • Как скрыть от других пользователей upwork, что я сейчас работаю?

    Lucian
    @Lucian
    https://t.me/MakeFreelance
    Привет, в вашем случае можно сказать что ставка повысилась, и по прежней ставке Вы будете работать еще такой-то срок, поставьте себя на место клиента, мало приятного если фрилансер начинает выдумывать разные отмазки, вместо того чтобы набраться смелости и сказать правду.
    Ответ написан
    3 комментария
  • Какие знания необходимы перед изучением php фреймворка?

    @AlikDex
    тут играет роль не столько знания пхп, сколько понимание принципов работы той или иной системы. Иными словами, необходимо изучить основные паттерны проектирования.
    Для ознакомления неплохая статейка с хабра: habrahabr.ru/post/214285
    Далее нагуглите думаю.
    Ответ написан
    1 комментарий
  • Используете ли вы витамины для "мозга"?

    PretorDH
    @PretorDH
    HTML5, CSS3, PHP, JS - люблю в чистом виде.
    Модные витамины разводняк на деньги не ведитесь.

    Прирацетам (ноотропил - улучшает мембранное питание у нейронов, эффект минимум через месяц) + магний ( в основном бобовые, гречка, пшено Продукты богатые на Mg ) + комплекс витаминов B (Ундевит - лучший выбор, дешево и сердито). Можно "Магне-В6" если денег не жалко - но правильное питание им не заменишь.

    P.S. "Снековая диета" - к которой частые рецедивы у ИТишников сама по себе ВЕЛИЧАЙШЕЕ ЗЛО всех времен и народов.
    Ответ написан
    5 комментариев
  • Используете ли вы витамины для "мозга"?

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

    Во-вторых, на такие вопросы в интернетах чудовищное количество ответов, в основном оплаченных. Поэтому, когда вам будут настойчиво советовать пить обычный компливит, вспомните, что обычный ундевит от него отличается только ценой - раз в десять, правда... Ну, и найти его в аптеках труднее, особенно на витрине - там как раз красивые коробочки, прославленные телевизором.
    А так - попить витамины пару раз в год, для профилактики, никому еще не вредило. Но надеяться, что они дадут вам способности, которых у вас нет - как минимум наивно. Они разве что спасут от депрессии, хронической усталости и прочих состояний, граничащих с нерабочим. Подстегивать чем-то здоровый организм - это брать взаймы у собственного будущего. Очень не советую.
    Ответ написан
    8 комментариев
  • Как повысить ежемесячный доход?

    trevoga_su
    @trevoga_su
    чувак, спрашивать на форуме ИТ-шников про то, стоит ли брать грузовик для того, что бы денег заработать - это все равно, что спрашивать в курятнике, как варить суп из курицы. У местного контингента спецефический склад ума.

    Тебе расскажут про то, что надо бабки в образование вкладывать и пр. Ты для себя сам реши - что ты хочешь. Либо свой бизнес, пусть хоть и не прибыльный, но свой, либо в офис на ближайшие Н лет.
    Ответ написан
    3 комментария
  • Сильные стороны PHP-вских фреймворков по сравнению с фреймворками Python и наоборот? Бывают ли случаи, в которых без фреймворков нереально обойтись?

    customtema
    @customtema
    arint.ru
    Делать каждый раз одно и тоже с нуля - идиотизм. Вы расходуете свое время и деньги, деньги и время своих работодателей.

    Зачем каждый раз делать одно и тоже с нуля? Зачем изобретать то, что уже сотню раз изобретено, причем в его изобретение вложено намного больше времени и денег, чем вы в принципе можете себе позволить?

    Поэтому то, что создано хорошо, люди упаковывают в библиотеки. А библиотеки - во фреймворки.

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

    А выбор фреймворка, как и платформы (PHP, Python), осуществяется исходя из следующих критериев:
    - сфера применения (библиотека должна уметь делать то, что от нее ожидается)
    - овладение разработчиком
    - быстрота разработки и другие объективные и субъективные факторы
    Ответ написан
    Комментировать
  • Действительно ли интересно создавать игры?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    95% веб-проектов — лендинги с иисусьими тряпками, магазины и «визитки». 95% игр — казуальное барахло, HOG'и, клоны subway surfer и прочий фримиум. В дизайн-студиях 95% работы — это годовые отчеты, каталоги иисусьих тряпок и дизайн для вышеперечисленных веб-проектов.
    Везде так, интересной работы везде мало и ее еще надо заслужить.
    Ответ написан
    24 комментария
  • Сильные стороны PHP-вских фреймворков по сравнению с фреймворками Python и наоборот? Бывают ли случаи, в которых без фреймворков нереально обойтись?

    sim3x
    @sim3x
    Бывают ли случаи, в которых без фреймворков нереально обойтись?
    да

    Сильные стороны PHP-вских фреймворков по сравнению с фреймворками Python и наоборот?
    слишком общий вопрос

    У каких фреймворков есть свои фишки?
    у всех

    что лучше изучать
    вопрос ведет к дискуссии или спору

    Задай вопрос так, чтоб на него можно было ответить однозначно

    Как задавать вопросы goo.gl/spqRI2
    Ответ написан
    5 комментариев
  • Laravel 4.2 и HTTPS, что я делаю не так?

    kbu
    @kbu Автор вопроса
    Ошибка была очень банальная:

    root указавала не в public директорию приложения laravel
    Ответ написан
    1 комментарий
  • Как командно разрабатывать php проект?

    1. Как уже сказали выше - git или mercurial (на bitbucket, github или на своем сервере). С основного репозитория клонируем копии на локальные машины.
    2. dev-среда:
    2.1 dev-сервер с поддоменами для каждого разработчика
    2.2 или локальный веб-сервер (у каждого свой)
    2.3 обязательно - "предпродакшн" сервер - там будут производиться проверки перед деплоем на продакшн
    3. Ставите каждому нормальную IDE, которая умеет работать с локальными файлами и деплоить изменения на сервер (PHPStorm).
    4. Настраиваете IDE таким образом, чтобы вы работали с локальными файлами, и при этом при сохранении изменения автоматически отправлялись на ваш dev-сервер.
    5. Юнит-тесты, функциональные тесты, чтобы перед деплоем на продакшн быть уверенным в том, что кто-то из разработчиков не сломал ваш проект своими изменениями.
    6. Если есть изменения в БД - миграции
    7. На продакшене также клонируетесь от основного репозитория (для удобства обновления кода)

    Т.о. процесс разработки будет выглядеть так:
    1. Разработчик pull`ит изменения из основного репозитория
    2. Что-то меняет в коде, тестируя это на своем dev-сервере
    3. После покрытия кода новыми тестами, прогоняет их и заливает изменения в основную ветку
    4. На предпродакшене обновляемся с основной ветки. Прогоняем все тесты.
    5. Если тесты прошли - на продакшене обновляемся на тот же коммит
    Ответ написан
    Комментировать
  • Как вы пишите веб приложения?

    pomeo
    @pomeo
    emacs(хотя это не важно, любой редактор)
    +
    git(тоже не важно, можно и hg)
    +
    capistrano, деплоит код из системы контроля версий, если что-то всплыло, что не увидел в тестах, откат моментальный на прошлую рабочую версию. Спокойно деплоит на контейнеры находящиеся внутри серверов. Может деплоить на много мест. Удаляет всякий мусор .git и т.д.
    +
    supervisord, держит рабочим приложение, дружит с capistrano, т.е. capistrano умеет его передёргивать, когда новый код загружает
    Ответ написан
    Комментировать
  • Как программисты оценивают стоимость своей работы?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Конкретно для не_фриланса, зп сотрудника зависит от прибыли прибыли компании только в двух случаях:
    1) Если человек работает в какой-нибудь говноконторке, где начальство только и придумывает способы как бы наказать сотрудников и заставить их работать больше&дешевле.
    2) Если человек работает в какой-нибудь стартапо-подобной компании, где он добровольно пахает не за стандартную зарплату, а за хрен-пойми-что (это не обязательно означает что-то исключительно плохое), зависящее от текущего состояния этой компании.
    Во всех остальных случаях у специалиста имеются свои финансовые аппетиты, которые строятся на основе спроса/предложения на рынке труда, а так же его навыков, заслуг и известности/востребованности. И еще самооценки конечно же, с этим в российском IT, например, много проблем :)
    Ответ написан
    5 комментариев
  • Из верстальщика во фронт-ендера, какие технологии изучать в дальнейшем?

    Teol
    @Teol
    Мобильный разработчик @OK.ru
    HTML, CSS – база для верстальщика
    Желательно интересоваться UIX частью, тоесть как делать "человекоудобно", что не всегда красиво в коде.

    Переходим во фронтенд:
    JQ (?) - надобность его падает пропорционально написанным велосипедам по работе с домом, анимациями и пониманием Ajax.
    EcmaScript (чистый js, он же "ванилла", но боже упаси произносить это вслух в приличном месте) + паттерны программирования – я бы выделил это все двойным болдом и тройным подчеркиванием. Это база фронтендера.
    Немного bash-а для терминала.
    NodeJS – суть тот же JS, но с привкусом бэкенда, полезно для понимания, как ваши странички вообще доставляются пользователю, какие самые банальные проблемы это в себе таит, и снова понятнее, как работает Ajax.
    Идем дальше и глубже –Stylus | LESS | SASS - препроцессоры, лучше уже хорошо владеть нативным CSS, пониманием атомарного дизайна, модульности и тп. Ощущения от использования словно получил суперсилу для верстальщика, хорошо сочетается с общим пониманием программрования. Есть еще постпроцессоры – их суть в том, что они работают с готовым кодом, когда препроцессоры компилируются в тот самый "готовый" код.
    Шаблонизаторы разметки – Mustache, Handlebars, Jade, EJS, React.

    Упрощаем работу:
    GIT – система версионирвоания – порядок в работе и бекапы. Качественный левелап даже для команды из одного.
    Сборщики Gulp, Grunt, ... и их плагины + пакетные менеджеры (NPM, Bower, ...) - автоматизация тех действий которые набили оскомину, сборка проекта, автоматическая генерация стилей из препроцессора, сборка бандлов, минификация и прочая томуподобная рутина (в которой, однако, не вредно по началу натереть мозолей)

    Чувствуем себя крутым:
    Учим MV* – Ember, Angular, Knockout
    Фреймворки вроде d3.js и работа с канвасом.

    Когда более менее освоетесь с JS:
    Попробовать поучить С++, Java, ... – это не так важно что, к чему душа ляжет. Для общего развития и понмиания программирования.
    Ответ написан
    Комментировать
  • Можно ли работать программистом, но не оценивать сроки?

    trevoga_su
    @trevoga_su
    1. НЕ ВЕЗДЕ сроки имеют место быть. Ищите работу где сроки не требуются. Таких мест полно. Это как правило долгоиграющие проекты принадлежащие бизнесу, а не говеные веб-студии, штампующие на заказ.

    2. Сроки можно озвучивать, если вы пишите что-то, что вам понятно, задача прозрачна или типична. Есть задачи, когда о сроках не может быть и речи - например, поддержка/разбор чужого кода кода. На таких задачах сроках быть в принципе не может.

    3. Приехал я как-то с поломкой машины к мастеру-частнику. Говорю - вот то то не работает. Сроки? А он мне отвечает - а я не могу сказать. Откуда я знаю что там сломалось?
    Это я к тому, что даже такая в такой теме, как ремонт авто, где казалось бы все четко и все делается по наработанной схеме, сроки крайне не определены.

    4. Если с вас требуют сроки, значит вы что-то делаете не так или работаете где-то не там. Про сроки можно говорит в строительстве, где укладка одной плитки СТАНДАРТНО занимает Н минут и вы должны полы покрыть 30х40 метров. Тогда сроки справедливы. В IT сроков не может быть. Т.е. не должен исполнитель думать о сроках. Это не его дело. Менеджмент должен дать время с запасом и не терзать исполнителя.
    Ответ написан
    3 комментария
  • Можно ли работать программистом, но не оценивать сроки?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Есть проект, называется Fogbugz
    www.fogcreek.com/fogbugz
    В нем можно ставить задачи и указывать время их исполнения. Он собирает информацию и потом может выдавать предсказание о времени выполнения задачи.
    По опыту могу вам посоветовать, если вам кажется, что задача займет пару часов, а заказчику скажите 4 или 6. В систему вводите свое собственное время. Через пару месяцев у вас появится некоторая картина вашей скорости.
    На мой взгляд лучше срок немного увеличить, чем сделать не вовремя. Вообще это приходит с опытом, но все равно очень сложно оценивать время выполнения. Лично я стараюсь узнать о задаче максимум до начала ее выполнения или представления оценки заказчику.
    Что еще можно сказать - не переживайте сильно по поводу оценки времени. Все ошибаются, даже специалисты с 10-20 летним стажем.
    Есть еще немного другой подход - непрерывная разработка, в которой нужно ставить оценки времени, но необязательно их соблюдать. Т.е. оценку разработчик делает сам для себя. Что-то вроде личного мотиватора, не более того.
    Ответ написан
    2 комментария