• Git: объясните «на пальцах» разницу между rebase и cherry-pick?

    @Nkly777
    git chery-pick - ты забираешь комиты из одной ветки в другую, это бывает полезно когда изменения сделаные другим разработчиком в его ветке, прямо сейчас нужны тебе в твоей ветке, и что бы не писать этот код заново, ты забираешь его комит себе в ветку

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

    git merge - обычно используется когда у вас 2 и более master ветки (к примеру master и prototype) в этих ветках очень много комитов (и rebase здесь не подходит) и обчно через пару недель, maintainer репозитория наработки из prototype ветки "сливает" в master ветку по средствам этого самого git merge

    P.S. Что бы легче предствить разницу между git merge и git rebase. Представь что merge как собачка на молнии у одежды - "сшивает" комиты по дате их создания.
    В то время как git rebase как пожарная лестница - при применении твои коммиты крепится на конец родительской ветки

    git merge используйте для мержа фич и фиксов в master ветку (как и делает это Github)
    а git rebase используется для своей ветку в которой вы работаете над фичей что бы забрать последние изменения с master ветку (для этого есть очень удобная команда `git pull --rebase origin master`, аналог 3х команд (`git checkout master; git pull origin master; git checkout mybrach; git rebase master`)
    Ответ написан
    2 комментария
  • Как начать работать удаленно или фрилансить, если даже проекты по мизерной цене вызывают затруднения?

    MegaMufa
    @MegaMufa
    Я бы посоветовал вам устроиться на некоторое время работать в офис. Работа в команде очень сильно помогает поднять свой уровень. В этом есть несколько плюсов:
    1. У вас всегда под рукой есть ментор, который может подсказать как решить поставленую перед вами конкретную задачу. Знания, получаемые таким образом, усваиваются намного лучше. Вы лучше понимете, как применять свои навыки.
    2. К окманде работает несколько человек, каждый со своим мнением и кругозором. Общение на обеде, за кофе и на обсуждениях проектов поможет ваам расширить свой профессиональный кругозор. Вы узнаете про многие технологии. В данный момент они вам не понадобытся, но вы будете знать о них, во время принятия решений в будущем.
    3. Устраиваясь на работу в офис стажером (или новичком, в общем неопытным специализстом), вы ставите в известность своего работодателя. Он в замен на пониженый оклад (у начинающего программиста ЗП, конечно ниже), помогает вам обучаться, выделяя вам ментора и давая практику.
    4. Вы преобретаете опыт решения реальных кейсов. В дальнейшем вы будете знать, как решается большинство типовых задач.
    5. В спокойной, но реальной обстановке получите опыт обучения "на лету" и поиска нужного материала.

    Я, когда начинал, тоже страдал такой проблемой. Год работы в комманде из 7 программистов стал для меня сильнейшим рывком. За этот год я поднялся больше, чем за предядущие три года самообучения. Поработал, получил опыт (и кучу положительных эмоций от общения с коллегами), потом спокойно перешел на удаленку.

    Мой вам совет: поработайте некоторое время в команде.
    Ответ написан
    6 комментариев
  • Как начать работать удаленно или фрилансить, если даже проекты по мизерной цене вызывают затруднения?

    zolt85
    @zolt85
    Программист
    На чистом PHP сложно себя реализовать. Изучайте framework-и и CMS (там все не так сложно как кажется). WordPress доминирует на западном рынке, так что если хотите работать на Odesk изучите его. возьмитесь за какие-то простые задачи. У меня супруга за неделю выхватила заказчика из Канады и теперь плотно с ним сотрудничает. Они все делают на WordPress. Если мне не изменяет память на Odesk-е какие-то тесты по технологиям можно пройти. Результаты тестов будут светиться в профиле. Заказчики на них тоже смотрят.

    Ну и как написано в первом ответе - учиться, учиться, и еще раз учиться. И не просто теорию учить, а практиковать все, что выучил.

    И как говорил, кто-то из известных, все в наших руках, так что не стоит их опускать.
    Удачи!
    Ответ написан
    Комментировать
  • Изучаем/не изучаем htaccess?

    @WebMasterSEO3
    Mod_rewrite надо знать обязательно программисту и сеошнику чтоб закрыть дубли и лишние страницы
    Ответ написан
    Комментировать
  • Что должен уметь веб-программист?

    @ivkol
    с одной стороны, чем шире кругозор, тем лучше. с другой стороны, в сутках 24 часа + знания устаревают быстро. поэтому ответ такой: развиваемся максимально в том направлении, которое в ближайшее время имеет практическое применение, а в свободное время (которого почти не должно быть) изучаем нечто принципиально иное для разминки мозга и свежих идей в своей области.
    P.S. вот пример для размышления: человечество стонет от нищеты, болезней, неграмотности, а мировой бюджет игровой комп. индустрии сопоставим с суммарными расходами на медицину, образование, космос. аналогично и мы в рамках своей жизни
    Ответ написан
    5 комментариев
  • Что выбрать, Yii2 или Laravel?

    SamDark
    @SamDark
    Yii2 core team
    Как новичку вам будет очень полезно понять, что у фреймворка внутри и как он работает. Если залезть во внутренности Yii, вы увидите, что там документирован каждый метод, каждый класс, абстракции минимум, всё делается настолько просто, насколько это вообще возможно. Изучить именно как что работает просто.

    Если залезть в Laravel, там всё очень слоёно. Комментариев нет. Чтобы понять, как работает метод нужно частенько пролезть через 3—5 слоёв абстракции в нескольких классах.

    В документации по Laravel, кстати, использован крутой трюк. Описана лишь часть того, что вообще даёт фреймворк. Это делает доку очень компактной, лёгкой и приятной, но за остальным — либо код без комментариев читать, либо Laracasts смотреть.
    Ответ написан
    13 комментариев
  • Изучаем/не изучаем htaccess?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Самое главное что надо понять - нету никакого синтаксиса .htaccess!
    Есть только синтаксис конфигурации веб-сервера Апач.

    Отсюда следует, что упираться в изучение не нужно, поскольку с профессиональным ростом ты неизбежно перейдешь на nginx.

    Вообще, с таим совковым подходом ты далеко не уедешь. Надо не зазубривать тонны команд. Надо учиться искать нужную информацию в интернете. Если тебе понадбится документация по натсройке mod_mime, то найти её - 5 сек. Вот что ты должен уметь.
    Ответ написан
    4 комментария
  • Изучаем/не изучаем htaccess?

    w999d
    @w999d
    Web-developer
    mod_rewrite - желательно знать,
    также задание дефолтной кодировки,
    подключение mod_php5
    ну и некоторые другие мелочи уже по ходу можно изучить
    Ответ написан
    Комментировать
  • Как правильно поднять сервер?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    В обязательном порядке! Файервол, можно встроенный ufw, на просто lamp-сервер этого достаточно. Прикрываем все порты кроме ssh (22) и 80/443, можно ssh перевести на какой нибудь 9922 порт, но это для параноиков.
    Я еще ставлю fail2ban, да, я параноик. Хорошо бы отдельной партицией вторую копию root-раздела держать.
    И сгенерите доступ по ssh только по ключам!
    Дополнительно по вкусу.
    И неплохо nginx фронтоэндом, а можно только им обойтись (без апаша), но тогда нужно еще php-fpm поставить и настроить.
    Ну и memcached по желанию.
    Так в общем все остальное можно докрутить по ходу работы.
    Ах, да! Воткните collectd для сбора статистики.

    И сначала все это на виртуалке попробуйте.
    Ответ написан
    Комментировать
  • Где найти самое простое объяснение Dependency Injection паттерна?

    iximiuz
    @iximiuz
    Мартин Фаулер круто пишет обо всех паттернах. Про DI можно почитать тут. Вообще у него отличный блог. И он же автор книги P of EAA. Правда русский ее перевод крайне не рекомендую читать, можно только запутаться, так что читайте в оригинале.

    Если хотите разобраться с паттернами, то самая простая (и при этом дельная!) книга - это Фриман&Фриман. Ее можно читать и на русском.

    Применительно к PHP - вот лучшая книга про шаблоны (и не только), которую я видел PHP. Объекты, шаблоны и методики программирования от Мэт Зандстра.

    Порядок прочтения рекомендую следующий: Фриман&Фриман, затем Мэт Зандстра, и на десерт Фаулера P of EAA.

    UPD:
    Важно отличать паттерн Dependency Injection от Dependency Injection Container.
    Простейший пример внедрения зависимости:
    interface IEngine {}
     
    class V8Engine implements IEngine {}
     
    class Car {
      public function __constructor(IEngine $engine) {
        $this->engine = $engine;
      }
    }
     
    $car = new Car(new V8Engine());

    Простейший пример игнорирования явного внедрения (для такого кода трудно писать unit-тесты, его труднее понимать и править):
    class V8Engine {}
    
    class Car {
      public function __constructor() {
        $this->engine = new V8Engine();
      }
    }
    
    $car = new Car();

    Отличный (и легковесный) пример DIC - это pimple:
    // define some services
    $container['session_storage'] = function ($c) {
        return new SessionStorage('SESSION_ID');
    };
    
    $container['session'] = function ($c) {
        return new Session($c['session_storage']);
    };

    Советую прочитать и понять его исходники, чтобы убедиться, что в DIC (во всяком случае для PHP) нет никакой магии. Первая версия была всего ~100 строк. Необходимо также отметить, что класс Session использует шаблон Dependency Injection, явно определяя свою зависимость от SessionStorage. А контейнер делает лишь правильную связку.

    И да, контейнер сам по себе можно использовать как service locator, если к нему, например, есть глобальный доступ. Но это очень плохая практика, потому что если что-то обращается к сервис локатору, то формально оно начинает зависеть сразу от всех компонентов системы.
    Ответ написан
    4 комментария
  • Когда изучать npm, grunt, bower, git и т.д?

    @flor_master
    Могу верстать, могу не верстать.
    На самом деле все очень просто.
    NPM - это пакетный менеджер который идет вместе с node.js, С помошью него можно устанавливать все что вы перечислили выше и другие модули, программы.

    Gulp, Grunt - это консольные утилиты. Они взаимозаменяемы. Они делают рутинную работу за тебя: компилируют Less Sass, склеивают скрипты, минифицируют скрипты, стили, делают спрайты, оптимизируют картинки и даже поднимают свой простенький вебсервер и LiveReload.

    Gulp или Grunt - Дело вкуса. Мне понравился больше Gulp. Он быстрее.

    Git - Система контроля версий твоего кода. Она позволяет организовать совместную работу нескольких разработчиков над ним проектом.

    Bower - просто утилита, которая быстро тебе скачивает необходимые библиотеки и из хависимости. Что бы ты не лазил по сайтам разработчиков. Например тебе надо установить jquery - ты просто в консоли пишешь Bower install jquery и тебе скачивается Jquery.

    Я считаю что Git в современной работе просто необходим как воздух.
    Gulp или Grunt и Bower сильно облегчили мне жизнь.

    Думаю что для устроиства на работу ключевым знанием будет Git. а потом уже все остальное.

    Gulp или Grunt и Bower - очень легкие программы для первичного использования. Их Можно попробовать и решить нужны ли они тебе или нет - за очень короткий промежуток времени.
    Ответ написан
    1 комментарий
  • Когда изучать npm, grunt, bower, git и т.д?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    npm/bower упрощают установку сторонних библиотек. Чтобы ходить по сайтам и скачивать jQuery, jQueryUI, Bootstrap и т.д., все это ставится одной командой.

    grunt/gulp -- таскраннеры, позволяют организовать хитрую компиляцию/склейку файлов/минификацию и прочее, что может понадобиться фронтендеру. Во-первых, это не только LESS, но еще миллион всяких вещей, во-вторых, это настраивается на проект и один раз (то есть не надо каждому разрабу ставить WinLESS и настраивать его).

    git/mercurial/svn -- система контроля версий. В команде без этого никуда (и никто за вас не будет коммитить код), но и при одиночной разработке есть профит.
    Ответ написан
    Комментировать
  • С чего начать обучение для фриланса?

    kumaxim
    @kumaxim
    Web-программист
    И так, с чего начать обучение:
    1.Самый низкий порог вхождения у языка PHP. Начинайте именно с него
    2.Изучите популярные CMS: WP, DLE, Joomla и т.д. Очень много заказов есть типа "Создать сайт", причем экзотики в 2 из 3 проектах не нужно. Здесь минус в том, что школоты тут полно и цену они сбивают весьма сильно...
    3.Далее категория заказов "А можно ли сделать вот так". Сводится все это к разработке/переработке модулей на все тех же CMS. Нужно учить PHP + API этих самых CMS. Возьмите один движок и копайте по нему в эту область, не рвитесь сразу за всеми. Порог вхождения тут тоже не велик, но здесь больше голодные студенты обитают
    4.Когда перерастете уровень дополнений/модулей, переходите к фреймворкам. Сейчас самый популярный Yii. Фреймворк позволяет Вам делать какие-то уникальные приложения, которые достаточно тяжело реализовать на готовых системах. Здесь ценник по существеннее, чем в первых двух, т.к. школота в силу своих умственных способностей сюда влезть не может.

    Теперь расскажу как вообще этому обучаться на своем примере. Я делаю так:
    1.Открываю тоненькую книжечку по языку(листов 100, не более), смотрю на основы
    2.Делаю примеры из этой книжке в IDE/блокноте. Это дает мне определенную базу
    3.Далее у меня есть список из примерно 20 задач(любую методичку по программированию откройте), которые я всегда делаю на новом языке. Это позволяет мне "привыкнуть" к новому коду и начать изучать стандартную библиотеку языка
    4.Затем я начинаю брать низкобюджетные заказы на фрилансе по этому языку
    5.После этого начинаю учить самый популярный фреймворк языка, опять же на низкобюджетных проектах.
    6.Сделать с 12-15 проектов я могу уже браться за что-то более менее серьезное с почасовой оплатой на фултайме.

    Вот это мой путь. По срокам - базу я себе нарабатываю за 1,5-2 месяца, на это время у Вас должна быть какая-то "подушка".

    P.S. надеюсь помог. ))
    Ответ написан
    7 комментариев
  • Какие существуют интересные для веб-разработчиков каналы на youtube?

    globuzer
    @globuzer
    gezgrouvingus progreszive ombusgrander greyderzux
    Можно поискать по ключевым словам:
    разработка
    моделирование
    проектирование
    прототипирование
    конструирование
    и т.п.
    ну собственно их англоязычные аналоги
    Ответ написан
    Комментировать
  • Всегда ли нужен подготовленный запрос в PHP?

    65536
    @65536
    Филосовский вопрос. В идеале было бы хорошо если бы вообще все запросы строились через какой-то интерфейс, а ескейпилось и препейрилось все на уровне реализации того, что за этим интерфейсом. Но по-моему еще ни в одной системе моделей не придумали универсальный синтаксис для запросов любой сложности с кучей скобок и операторов, поэтому везде (вроде) предоставляется возможность писать в сыром виде. А раз так, то запросы с заведомо безопасными данными можно сырыми и писать как есть. Хотя бы просто чтобы сократить писанину. Но если так писать, то только такие запросы, чтобы сам такой запрос своим видом однозначно говорил что для него не требуется обезвреживание. Это я для себя так придумал, не знаю как бы другие программисты это поняли глядя в мой код. Соглашений таких вроде бы нет.
    Ответ написан
    2 комментария
  • Всегда ли нужен подготовленный запрос в PHP?

    laska
    @laska
    PHP/JS разработчик
    Сложный вопрос. Вообще если в 1000 мест вы используете подготовленные запросы, то в 1001 месте тоже их стоит использовать.

    Скорее всего если вы решите написать в этом месте обычный запрос, то в случае действительно хорошего кода надо написать комментарий вроде: "По результатам тестов (ссылка на документацию) было решено отказаться от подготовленных запросов в связи с 5% уменьшением нагрузки на сервер".

    Но это только мое мнение, тут все очень условно.
    Ответ написан
    Комментировать
  • Всегда ли нужен подготовленный запрос в PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Я так понимаю, что речь о статических запросах вида
    SELECT * FROM catalog WHERE parent=1

    Такие запросы через prepare прогонять не обязательно.
    НО, при этом очень желательно, чтобы запросы выполнялись через некое единое API, основанное на подготовленных выражениях, и программист внутри себя не ломал голову - использовать или нет. Использовать. Польза от такого решения на порядки перекрывает любые возможные плюсы других решений.

    Пример:
    $categories = $db->getAll("SELECT * FROM catalog WHERE parent=1");
    $categories = $db->getAll("SELECT * FROM catalog WHERE parent=?i", $parent);

    Как видим, при наличии единого API для выполнения запросов, у программиста не возникает ненужных вопросов.
    Ответ написан
    Комментировать
  • Какими инструментами пользуйтесь Вы фронт/бэкендеры?

    OpenServer - крайне удобный сервер под винду
    phpStorm - лучшей студии просто нет, только что кофе в постель не носит
    FireBug + WebDeveloper + Easy XDebug - больше ничего в фаерфоксе не стоит
    Notepad++ - всегда открыт, замена текста регулярками нереально выручает
    Git Bash - для регулярных простых действий с гитом + всякие разные дополнительные скрипты
    SourceTree - для мониторинга большого проекта незаменимо
    NaviCat для mysql, но если нет лицензии то и HeidiSql из набора опенсервера сойдет
    Еще Winmerge периодически помогает сравнить 2 больших каталога
    Ответ написан
    Комментировать