• С чего начать изучение Java для web?

    jaxtr
    @jaxtr
    JavaEE/Spring-разработчик
    Я бы рекомендовал начинать изучение веб-разработки на Java c изучения Spring и ознакомления с основными компонентами Java EE. Ради интереса в дальнейшем можно более подробно ознакомиться с Java EE (ибо Spring и его компоненты сопряжены с Java EE), но за последние годы пути Java EE и Spring разошлись (особенно в плане веба). Плюс сейчас есть проект Spring Boot, который упрощает процесс погружения в Spring.

    Про Java EE скажу, что изучать есть смысл только JPA, т.к. оно активно используется в Spring Data JPA; технологии, связанные с вебом - JSP и JSF, нынче не актуальны, JSP заменяется более вменяемыми библиотеками шаблонирования вроде Thymeleaf и Freemarker, а JSF заменяется самим Spring MVC.

    Насчёт контейнеров: Tomcat (а так же Jetty и Undertow) - веб-контейнер, который поддерживает только Java EE Web Profile, в то время как Glassfish (а так же Payara, Wildfly и JBoss) поддерживает весь стек Java EE, который нужен не всегда.
    uuPbl.jpg

    Мой совет - учи Spring, а Java EE оставь на досуг.
    Ответ написан
    1 комментарий
  • Каков план личностного развития PHP программиста с нуля?

    somenumboola
    @somenumboola
    Team Lead in B-online Solutions
    Буду исходить из "дано" задачи "PHP программист" и из того что автор вопроса стремится заниматься сугубо back-end программированием. Заранее прошу прощения, я несколько увлекся
    Итак:
    1. Установка сервера (Open Server, Xampp, Denver), на начальном уровне. (просто из exe)
    2. Общие принципы.
    2.1. Типы данных.
    2.2. Переменные.
    2.2.1. Работа с переменными по ссылке.
    2.2.2. Методы объявления и уничтожения переменных.
    2.3. Управляющие конструкции (если знаком, то особенности синтаксиса в рамках языка).
    2.3.1. Условия.
    2.3.2. Циклы.
    2.4. Конструкции вывода(print, print_r, echo).
    2.5. Конструкции отладки и управления выполнением(var_dump,die,exit,break в циклах, пустой return;).
    2.6. Пред определенные глобальные переменные($_GET,$_POST,$_REQUEST,$_SERVER), константы зарезервированные под модификаторы (static, function, const, $this)
    2.7. Особенности версий 5.3, 5.4.
    2.7.1. Анонимные функции.
    2.7.2. Замыкания.
    2.7.3. Особенности объявления массивов.
    2.7.4. Пространства имен.
    3. HTTP протокол.
    3.1. Заголовки входящие.
    3.2. Заголовки исходящие.
    3.3. Процесс общения.
    3.4. Метод php “header(…)” в контексте темы.
    3.5. Глобальная переменная $_SERVER[] в контексте темы.
    4. Установка сервера на среднем уровне (основы файла .htaccess и RewriteRule)
    5. Процедурное программирование.
    5.1. Математические методы.
    5.2. Оперирование типами.
    5.2.1. Методы оперирования массивами (array_values,array_keys,array_map и т.д.)
    5.2.2. Методы оперирования строками (strlen,substr и т.д.).
    6. ООП.
    6.1. Классы.
    6.1.1. Инкапсуляция(public,protected,private). Понимать разницу.
    6.1.2. Наследование.
    6.2. Интерфейсы.
    6.2.1. Имплементация интерфейсов.
    6.3. Абстрактные классы.
    6.4. Полиморфизм.
    6.5. Магические методы.
    6.5.1. Базовые (__construct,__get,__set,__destruct)
    6.5.2. Расширенные (__invoke,__serialize,__isset)
    6.5.3. Разобраться когда стоит применять магические методы а когда это плохая практика.
    7. Библиотека SPL, и расширение поведенческих возможностей классов за ее счет.
    8. Базы данных.
    8.1. SQL
    8.2. Примитивный уровень общения с БД. (mysql_connect,mysql_close,mysql_query).
    8.3. Средний уровень общения с БД(PDO и другие кастомные библиотеки).
    8.4. Высокий уровень (ActiveRecord,DataAccessObject,ObjectRelationMapping).
    8.5. NoSql БД на примере MongoBD (настоятельно рекомендуется, но не обязательно).
    9. Фреймворки. На мой вигляд можно начать с Kohana. Сужу по уровню вхождения стажеров которых видел и отсутствию пространств имен с которыми по первах могут возникать проблемы.

    И главное, Внимание! Личностные качества.
    - Усидчивость.
    - Владение Google при оттачивании темы или сложной задаче на уровне, когда поисковик видит в пользователе не то что DDOS а полноценный физический краш. тест.
    - Не брезгливость. Умение заставить себя разбираться в гов… хм. Нелицеприятных дебрях.
    - Збагойствие. Отсутствие паники при различных ошибках и не состыковках. Всегда остыть и попробовать снова, но по другому.
    Ответ написан
    5 комментариев
  • Каков план личностного развития PHP программиста с нуля?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    В общем, вот мой совет, после третьего пункта порядок можно брать уже любой, смотря что надо для решения задач, т.е. важна практика.

    1. Начать надо с основ - html/css
    2. Затем учить php + пару CMS (только хороших, я думаю это cms made simple, livestreet, wordpress)
    3. Узнать про базы данных, начать с MySQL, перейти в noSQL базы данных (например mongo db)
    4. Начать учить фрэймворки (Symfony2 и Yii)
    5. Изучить серверные технологии (Apache + nginx, linux различные, работу с командной строкой, ssh и ftp на уровне настройки и поднятия этих протоколов, права доступа и прочие фишки, вроде sphinxsearch)
    6. Узнать про кэширование и проникнуться этим, угореть по хайлоад
    7. Изучить еще пару скриптовых языков и фреймворков (Rubу + Ruby on rails, python + django)
    8. Угореть по IT security, penetration testing
    9. Изучить еще больше фронтэнда - javascript + jquery, Angularjs, html5/css3;
    10. Угореть по всяким системам контроля версий, git, jira

    Сдать на ZCE и получить как можно больше международных сертификатов, на случай, если хотите мигрировать.
    Ответ написан
    4 комментария
  • Каков план личностного развития PHP программиста с нуля?

    konst20
    @konst20
    Программист, преподаватель, немного электронщик
    Есть опыт помощи таким начинающим.
    реальный срок до запуска джуниора - полгода, никого не слушайте.

    Важные моменты
    веб-программирование на базе PHP - это стек технологий: PHP/SQL/CSS/HTML/JS + Linux хотя бы азы + знание важных инструментариев (FTP, Git/SVN, работа с БД)
    чистый PHP плюс даже все перечисленное выше - не особо нужно и не интересно. Нужно знание конкретных платформ: фреймворков и/или CMS. (Почитайте вакансии на Хантиме по запросу PHP, обратите на это внимание). Навскидку самые востребованные (спорно конечно): Yii фреймворк, CMS Битрикс и Wordpress.

    Как начать?
    Смело на амбразуру!
    1) Установите у себя рабочую среду LAMP/WAMP - Apache, PHP, MySQL. Для этого возьмите пакет Denwer или OpenServer, что больше понравится. Сделайте Hello World просто как HTML, потом на PHP, потом алертом на JS. Порадуйтесь.
    Установите все редакторы кода. Кто там вам будет рекомендовать блокнот или notepad++ - не слушайте. Варианты: если машина мощная (4+ Гб памяти и пр.), берите редактор phpStorm (для php/html/css/js). Если не очень мощная - берите komodo edit. Для работы с БД инструмент встроен в Denwer/OpenServer, это phpMyAdmin
    2) Идеально, если вы договоритесь сделать кому-нибудь сайт. Бесплатно или за небольшую плату. Если нет - сами себе поставьте задачу: сайт про котиков/про детей etc. Красивый сайт, с галереей, с эффектами, с материалами
    Возьмите CMS Wordpress и попытайтесь сделать сайт у себя на компьтере. Настоящий сайт, во всей красе, как вы хотите. Правьте его, смотрите код, экспериментируйте. Сообщество огромное, вы найдете ответы на все свои вопросы
    Потратьте чуть денег, купите себе домен и хостинг, залейте сайт на хостинг.
    Порадуйтесь. Похвастайтесь.
    3) Ищите в сети тестовые задачи и решайте их, изучайте материалы собеседований, вопросы - их много.
    4) Зарегистрируйтесь на odesk.com под каким-то фейковым email, пройдите тесты по PHP, CSS, HTML, jQuery, Wordpress, а во время прохождения делайте скриншоты вопросов. Потом изучайте эти вопросы, ищите ответы, далеко не обязательно на все. Тесты вы, конечно, не пройдете, но вам нужны только вопросы.
    5) Постоянно следите за вакансиями "PHP-программист", "веб-программист" на Хантиме, на hh.ru и подобных ресурсах.

    И да, как только напишете первую строку кода - начните читать про Git. Как будете готовы - сразу внедрите у себя Git, вы будете очарованы его возможностями.

    Вот как раз на полгода.
    После этого у вас появится масса информации, и дальше вы сами сориентируетесь.
    Ответ написан
    11 комментариев
  • Какую книгу почитать о правильном написании серверов?

    Loovery
    @Loovery
    Оптимист
    Kantelon_M._Node.js_v_deistvii
    Pauers_Sh._Izuchaem_Node._js
    Suhov_K._Nodejs_Putevoditel_po_tehnologii
    Ответ написан
    Комментировать
  • RESTful API и MVC — что это?

    Основной посыл использования RESTful API - применение основной идеи Паутины для взаимодействия автоматических агентов (приложений), а не только людей.
    Основная идея Паутины - построение распределенной информационной системы путем публикации неких абстрактных ресурсов, выдачи им идентификаторов (в сегодняшнем вебе - иерархических), определения ряда простых и широко известных операций над ними, не зависящих от содержимого ресурса (те самые GET, POST, PUT и т.д.), и связывания этих ресурсов ссылками (это называется гипермедиа, и в частности, гипертекст, если речь идет о текстовой информации).
    Как люди с появления Веба публикуют информацию в нем для потребления другими людьми, так и RESTful веб-сервисы публикуют иерархически структурированные ресурсы для потребления клиентами. Разница только в представлении - для людей это plaintext/HTML, для автоматических агентов - это JSON/XML/прочие форматы, которые удобно обрабатывать.
    Таким образом, если вы хотите какую-то информацию опубликовать как RESTful API, вам необходимо представить ее как набор ресурсов, а все операции над этой информацией выразить через набор предопределенных операций. Фишка в том, что во многих задачах этих предпопределенных операций вполне достаточно, главное правильно определить ресурсы.
    Важно понимать, что "ресурс" это обычно некоторая сущность, "существительное". Как правильно заметил Антон Жуков , ресурс /getItems хоть и может существовать в принципе, говорит о неудачно спроектированном API (действие представлено как ресурс).

    Есть и другие подходы к архитектуре распределенных приложений, например архитектуры, основанные на RPC (удаленный вызов процедур). Информация в таких архитектурах также представлена в виде некоторого набора сущностей, однако операции над ними определяются конкретной задачей, и для каждой сущности будет свой набор. Это больше соотвествует классическому ООП-подходу. Таким образом, RESTful следует подходу много сущностей (ресурсов) - мало операций (и эти операции известны заранее), а RPC - немного сущностей, но много операций над ними.

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

    Сама архитектура REST не привязана к конкретным технологиям и протоколам, но в реалиях современного Веб, построение RESTful API почти всегда подразумевает использование HTTP и каких-либо распространенных форматов представления ресурсов, например JSON, или, менее популярного сегодня, XML.

    Смысл использования REST в том, что принципы, хорошо показавшие себя в "человеческом" веб и позволившие построить самую большую распределенную ИС, применяют и для "веба машин".

    Ответ длинноват, но как короче объяснить, чтобы не исказить понимание, не представляю. Если что непонятно - спрашивайте.
    Ответ написан
    7 комментариев
  • Попросили проверить код, на что смотреть нужно?

    @kalyabus
    Сначала поймите зачем нужно "проверить" код, потом поймете, "что" проверять. Тем не менее приведу выжимку из критериев, принятых у нас

    1. Код не содержит явных и потенциальных ошибок.
    2. Код работает так, как это описано в документации, техническом задании или сопроводительных комментариях.
    3. Стиль кодирования соответствует принятым правилам кодирования
    4. Код имеет сопроводительные комментарии в соответствии с phpDoc
    5. Вложенность блоков не превышает 4-го уровня.
    6. Код не генерирует сообщения уровня Strict, Warning, Notice, Deprecated. Если этого невозможно избежать, то непосредственно перед строкой, которая это генерирует необходимо принудительно отключить error_reporting, а непосредственно после строки включить error_reporting в исходное значение (которое было до этого). Такой код должен быть задокументирован специальным образом.
    7. Закомментированный кусок кода должен быть удален.
    8. В PHP коде (за исключением phpTemplate) запрещены вставки HTML, JavaScript. Все вставки должны производиться через специальные шаблоны.
    9. Классы, функции, переменные и константы должны логически именоваться человекопонятным способом на английском языке в соответствии со стандартами кодирования. Не допускается именование транслитом на русском, либо на иных языках
    10. Область видимости переменных и методов классов всегда должна быть определена (private, protected, public).
    11. Размер одного метода не должен превышать 40-50 строк.
    12. Переменная, используемая в цикле, либо в условном блоке должна быть инициализирована заранее.
    13. Переменная в любой момент времени должна содержать только один тип. Пустая переменная должна содержать null. (не допускается $var = false; $var = 'test'; . Допускается $var = null; $var = 'test';).
    14. При передаче объектов классов в методы должен использоваться контроль типов.
    15. etc...


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

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

    apavlyut
    @apavlyut
    www.pavlyut.ru
    Все комментаторы совершили одни и те же ошибки управления потому что, при всем уважении, скорее всего за эти ошибки (в стратегировании) они не платят из своего кармана.

    На пальцах отвечаю на ваш вопрос:

    1) По структуре - при проверки качества кода / решения / задачи / продукта / настройки сервера и так далее нужно проходить по списку (чеклист) критериев контроля качества - обычно они выглядят как списки определенных параметров которые может замерить третье лицо или сама система - формат проверяемого параметра прямо вот соответсвует / не соответсвует. На сколько процентов пройден чеклист - на столько процентов результат "качественный"
    2) Почему ребята ошиблись - потому что стали приводить конкретные списки. Дело в том что у каждого проекта / сиутации / команды / набора компетенций - свои наборы таких чеклистов на разные ситуации. В больших командах сущесвтует основной чеклист который регламентирует CodeReview - и за него отвечает как правило тим лид - он его обновляет, развивает, обосновывает внесенные правила и следит за тем чтобы ПЕРЕД началом разработки все разработчики были ЗАРАНЕЕ ОЗНАКОМЛЕНЫ с этим порятком проверки качества, а все потому что:
    3) Количество стайлгайдов и критериев в приципе существует огромное количество - и то как каждому в одной части света / компании удобно делать одно дело - не регламентирует ни разу что именно так же другому человеку в другой ситуации применять эти правила к своему контексту. В виде открытых стайлгайдов они существуют для накопления практик и навыков в первую очередь для их же развития (процесс формулировки наводит порядок в голове) а также дают возможность "на них конкретно" нанизать точечные ответы огромного сообщества людей, и получить те самые разные взгляды на ситуации, и по возможности опять же привести к общему знаменателю. Но это все мелочи жизни, а в вашем случае вы совершите серьезную ошибку если прямо сейчас возьметесь (примите на себя ответственность) проверять чужой код на предмет оценки, потому что:
    4) Вас явно используют как внешнего эксперта на которого можно сослаться, от которого можно получить якобы аргументацию для давления на свою позицию при решении какой-то возникшей ситуации во взаимоотношениях клиент-разработчик на проекте куда вас приглашают за экспертизой.
    Если вы, не предупредив, о том что "качество кода" начинается с декларации этого качества (в случае если речь идет о проверке этого внутреннего качества в рамках сотрудничества, а не самих задач которые поставлены перед создаваемой системой - фичесов) - любая ваша оценка будет недостоверна контексту ее применения (вы напишете про строки или еще что-то - а у человека будут либо взыскивать деньги / либо недоплатят за работу / или инкапсулируют в договоренности пост фактум за те же деньги работу над соотвествием определенным стилям - это все работа которая должна быть оплачена). Поэтому вот вам вилка ваших дейсвтий:

    1) Если у вас просто просят менторства молодые коллеги - дайте им ссылку на гугл и ключевое словосочетание php style guide github
    2) Если вас спрашивают (либо вы сами являетесь таким заказчиком который ищет за что зацепиться в коде чтобы продавить свою позицию) - нет критериев качества кода ДО начала работ подписанных на бумаге / пересланных по почте - никакие критерии не могут быть применены к текущим отношениям - только к следующей итерации за следующие деньги.
    3) Если вы все же разработчик и вас попросили оценить код - донесите данную ситуацию до стадии корректного закрытия текущего этапа работ - но дальше предложите уже введение стайл гайда если оно того требует. Я полагаю что на самом деле нет. Дав сейчас ответ на вопрос в виде оценки качества кода вы сделаете только одно - абсолюно необоснованно дадите агрумент в явно перекошенном споре, и просто возьмете на себя еще один мешок кармогрязи которую будуете еще сколько-то положенного времени отрабатывать.

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря зачем)). Я когда делаю Code Review критерии следующие:

    * Безопасность:
    - Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм))
    - Никаких trigger_error, только исключения.
    - Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так.
    - Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс.
    - За eval как правило шлю на **й.
    - @ допускается только в безвыходных ситуациях, например проверка json_last_error.
    - Перед работой с БД - обязательная проверка данных.
    - Никаких == и !=. Со swtich - единственное исключение, по ситуации.
    - Если метод возвращает не только bool, а еще что-то - жесткая проверка с ===, или !== обязательна.
    - Никаких условий с присваиваниями внутри. while($row = ...) - тоже идет лесом.
    - Магические геттеры/сеттеры разрешаются только в безвыходных ситуациях, в остальном - запрещены.
    - Конкатенации в sql - только в безвыходных ситуациях.
    - Параметры в sql - ТОЛЬКО через плейсхолдеры.
    - Никаких глобальных переменных.
    - Даты в виде строки разрешаются только в шаблонах и в БД, в пхп коде сразу преобразуется в \DateTimeImmutable (в безвыходных ситуациях разрешено \DateTime)
    - Конечно зависит от проекта, но как приавло должно быть всего две точки входа: index.php для web и console(или как-то по другому назваться) - для консоли.

    * Кодстайл PSR-2 + PSR-5 как минимум, + еще куча более жестких требований (для начала все то что в PSR помечено как SHOULD - становится MUST)
    - В PhpStorm ни одна строчка не должна подсвечиваться (исключением является typo ошибки, например словарик не знает какой-то из аббревиатур, принятых в вашем проекте). При этом разрешается использовать /** @noinspection *** */ для безвыходных ситуаций.
    - Если кто-то говорит, что пишет в другом редакторе и у него не подсвечивается, на эти отговорки кладется ВОТ ТАКЕЕЕНЫЙ мужской половой **й и отправляется на доработку)).

    * Организация кода:
    - Никаких глобальных функций.
    - Классы без неймспейса разрешаются только в исключительно безвыходных ситуациях.

    * Тестируемость (в смысле простота тестирования) кода должна быть высокая.
    - Покрытие кода обязательно для всех возможных кейсов использования каждого публичного метода с моками зависимостей.

    * Принципы MVC:
    - Никаких обработок пользовательского ввода в моделях, от слова совсем.
    - Никаких ***ть запросов в БД из шаблонов.
    - Никаких верстки/js/css/sql-ин в контроллерах.
    - В моделях НИКАКОЙ МАГИИ, только приватные свойства + геттеры с сеттерами.
    - В моделях разрешено использовать метод save(при наличии такого разумеется) только в исключительных ситуациях. Во всех остальных - либо insert, либо update.

    * Принципы SOLD:
    - Никаких божественных объектов умеющих во все.
    - Если метод для внутреннего пользования - private, никаких public.
    - Статические методы разрешаются только в случае безвыходности.

    * Принцип DRY разрешено нарушать в случаях:
    - Явного разделения обязанностей
    - В тестах (каждый тест должен быть независимым, на сколько это возможно)

    * Работа с БД:
    - Запрос в цикле должен быть РЕАЛЬНО обоснован.
    - За ORDER BY RAND() - шлю на***й.
    - Поиск не по ключам (конечно если таблица НЕ на 5 строк) запрещен.
    - Поиск без LIMIT (опять же если таблица НЕ на 5 строк) запрещен.
    - SELECT * - запрещен.
    - Денормализация БД должна быть обоснована.
    - MyISAM не используется (так уж)) )
    - Множественные операции обязательно в транзакции, с откатом если чо пошло не так.
    - БД не должна содержать бизнес логики, только данные в целостном виде.
    - Не должно быть нецелесообразного дерганья БД там, где без этого можно обойтись.

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

    * О людях:
    - "Я привык писать так и буду дальше" - не вопрос, ревью пройдешь только когда поменяешь свое мнение.
    - "Я пишу в vim-е и мне так удобно" - здорово, код консолью я тоже в нем пишу)) но есть требования к коду, если в них не сможешь - не пройдешь ревью.
    - "Я скопировал этот страшный метод и поменял 2 строчки" - это конечно замечательно, но по блейму автор всего этого метода ты, так что давай без говняшек, хорошо?
    - "Оно же работает!" - вот эта фраза переводится примерно так: "да, я понимаю, что пишу полную хрень, но не могу писать нормально потому, что руки из жо", я правильно тебя понял?))
    - "У меня все работает!" - рад за тебя, а как на счет продакшна?
    - "Там все просто" - не используй слово "просто", от слова "совсем". Вот тебе кусок кода (первого попавшегося с сложной бизнес логикой), где там ошибка (не важно есть она, или нет)? Ты смотришь его уже 2 минуты, в чем проблема, там же все "просто"))

    * Всякое:
    ActiveRecord (это я вам как в прошлом фанат Yii говорю) - полное говно, примите за исходную. По факту у вас бесконтрольно по проекту гуляют модельки с подключением к БД. Не раз натыкался на то, что в тех же шаблонах вызывают save, или update (за такое надо сжигать).
    То, что используется Laravel - это печально((. Что бы выполнить требования приведенные выше, приходится "воевать" с фреймворком.

    Это далеко не полный список требований, очень много зависит от проекта в целом и от принципов, заложенных в нем. Для больших мредж реквестов 200 комментариев к коду - это ок. Дерзайте.

    UPD

    Формализировал данные критерии по ссылочке: https://github.com/index0h/php-conventions
    Ответ написан
    55 комментариев
  • Продолжить ли изучение PHP или остановиться на .Net?

    GreenBee
    @GreenBee
    ASP.NET программист
    И у PHP и у .NET есть свои ниши и специализации.

    У PHP более низкий порог вхождения, поэтому можно ограничиться базовыми знаниями.
    На PHP легче будет найти работу фрилансером и мелкие подработки, потому что их просто больше.
    В идеале изучить какой-либо фреймфорк (рекомендую Laravel, YII) и какую либо CMS (Wordpress, Drupal, Joomla) хотя бы базово, но это не обязательно.

    .NET сложнее, в плане объема, зато тут у тебя единая среда, и редко нужно идти искать сторонние инструменты. Если будешь учить под веб - сразу учи MVC.

    Независимо от того, выберешь ты .net или php, тебе стоит изучить:
    - системы контроля версий
    - шаблоны проектирования (хотя бы базово)
    - sql (и какую либо БД, MySQL + MS SQL)
    Если будешь работать с веб, то к этому списку:
    - HTML
    - CSS
    - Javascript
    Ответ написан
    Комментировать
  • Продолжить ли изучение PHP или остановиться на .Net?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Но в PHP мне кажется я остановлюсь на клепании простеньких сайтов по заказу и на этом дальнейшее развитие как программиста закончится

    Хм... с таким подходом может программирование вообще не ваше? Угадайте на каких языках написаны: vk, facebook))

    начав работу Php программистом я позже смогу устроиться позже в организацию, занимающуюся интерпраз разработкой?

    Все зависит от вас. То, что php программистов много - это правда, но найти твердого синьйора сейчас довольно проблематично. Все дело в том, что синьйор php должен знать еще много чего помимо php:
    * SQL движки: MySQL, PostgreSQL,...
    * JS: NodeJS
    * Сервера очередей: RabbitMQ, Beanstalkd,...
    * Системы кэширования: Memcached, Redis,...
    * NoSQL решения: MongoDB, CouchDB, ...
    * Поисковые движки: ElasticSearch, Sphin, Solr,...
    * *Nix системы: Centos, Debian,...
    * Уметь писать тестируемый код + фреймворки тестирования: PUPUnit, Codeception
    * Уметь писать грамотный диплой: Deployer, Grunt/Gulp,...
    * Уметь оптимизировать БД под большие нагрузки: почему order by rand() - нельзя использовать (от слова совсем), почему внешние ключи могут стать узким горлышком системы,...
    * Уметь в системы контроля версий: git, svn, hg,...
    * Конкретно уже по php, несколько фреймворков: Symfony2, Zend2, Silex, ...
    Ответ написан
    9 комментариев
  • Как максимально быстро выучить ASP.NET MVC?

    @dmitryKovalskiy
    программист средней руки
    Если быстро то - www.asp.net/mvc . Некоторые учебники просто переводят эти статьи. Если любите книги, то - www.ozon.ru/context/detail/id/29482313 или любая другая на которой написано asp.net mvc. Они не поднимают темы шарпного синтаксиса, только фреймворк. Сопутствующие языки и технологии ? А вот тут список можно продолжать до посинения. Начиная с базовых - SQL,XML, Javascript, HTML , продолжая на актуальных - DI-контейнеры, Javascript-фреймворки типа Angular,Backbone и пр, WCF. Ну и закончить экзотикой типа SignalR. Частично все эти темы упоминаются в книге что я предложил.
    Ответ написан
    Комментировать
  • Как максимально быстро выучить ASP.NET MVC?

    zodchiy
    @zodchiy
    Фуллстэк с 2005
    Кроме www.asp.net/mvc есть куча онлайн-ресурсов на русском языке.
    Например - metanit.com/sharp/mvc5 , можно сказать там полный, но простой курс. Для того, чтобы войти в технологию хватит. Плюсом будет почитать - blog.foolsoft.ru/category/c , sergeyteplyakov.blogspot.ru , www.aspnet.com.ua/Category/developer-1.asp .
    В IoC контейнеры, asyn/await, паттерны лезть пока не надо, первоначально над осмотреть на EntityFramework, Ajax, JS.
    Этого будет достаточно. Остальное приложится в поисках решений на stackoverflow и гуглении.
    Ответ написан
    Комментировать
  • Какой популярный java web framework имеет хорошую базу гайдов?

    @aol-nnov
    спринг?? собрать?! зачем? давай отложи в сторону вещества, сходи на https://start.spring.io и быстренько натыкай себе заготовочку. потом на гитхаб. Отсюда начни https://github.com/spring-projects ну и https://spring.io/docs

    а, во еще: https://github.com/spring-projects/spring-boot/tre...
    Ответ написан
    Комментировать
  • Где посмотреть что-то на уровне Java Core Advanced?

    @void_phoenix
    Effective Java (2nd Edition) by Joshua Bloch
    Java Generics and Collections By Maurice Naftalin, Philip Wadler
    Ответ написан
    Комментировать
  • Как реализовать проект на Java?

    angry_cellophane
    @angry_cellophane
    Рекомендую читать эту книгу и параллельно делать свой проект. Проект лучше делать на spring boot - он сильно упрощает жизнь.
    Ответ написан
    Комментировать
  • Как реализовать проект на Java?

    aminought
    @aminought
    Изучай Spring и Hibernate - это основа почти всех веб-приложений Java.
    Ответ написан
    Комментировать
  • Как лучше построить изучение программирования?

    Dit81
    @Dit81
    Security researcher, pentester, internet-marketer
    Читайте фундаментальные труды по разработке кода и архитектуре приложений... ООП, MVC, DRY и им подобные. Почитайте Марк Саммерфилд - "Python на практике". Многие вопросы отпадут сами...
    Ответ написан
    1 комментарий
  • Есть ли аналог javarush? или codeacedemy?

    jerdys
    @jerdys
    Скулбой, люблю игры, фильмы и сериалы
    ИМХО, конечно, но мне кажется, что C++ и C# слишком сложные языки, чтобы изучать их онлайн. Погуглите пару книжек лучше.

    Но вот, может из того, что у меня в Pocket завалялось найдете что-нибудь:



    Из всего этого заходил только на Ruby Warrior, и то, потом забил. Еще читал много хороших отзывов о Code School, но сам не учился.
    Ответ написан
    Комментировать
  • Как наиболее правильно подойти к обучению программированию с нуля?

    @timur_m
    Помимо всего вышесказанного, советую иногда слушать подкасты на IT тему. Например Разбор полетов, SDCast и другие. У Якова Файна (програмист из Америки) обязательно послушайте 76 выпуск, как раз по данному вопросу.
    Подкасты и мотивируют, и помогают влиться в мир другой профессии.
    Ответ написан
    Комментировать