• Как перенять объектно-ориентированное мышление?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Т.е. сложно понимаю, что "засунуть" в один объект, что в другой, что должно быть статическим методом, что приватным и тд.


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

    То есть по сути наше приложение - один объект. У него внутри вообще все. У этого объекта есть один метод - обработай запрос. Когда внешний мир его вызывает, меняются значения каких-то переменных, вызываются какие-то внутренние "приватные" для внешнего мира функции, и делается работа.

    Теперь задумаемся о декомпозиции всего этого хаоса. Мы находим какую-то задачу, которую выполняет наш код (например какую функцию вызвать для обработки каждого конкретного запроса) и выносим это в отдельный объект. Отправка email-ов - отдельный объект. Весь SQL зашиваем в отдельный объект. Соединение с базой - объект. Пользователи - объекты. Все - объекты.

    И главное, у каждого объекта есть своя область ответственности. UNIX way. Каждый объект делает что-то одно и делает это хорошо. Бывает так что ну... нужно сделать так что бы один объект делал две вещи. НЕ вопрос, мы можем его попросить сделать что-то сложное, а он будет как хороший менеджер тупо делегировать работу другим объектом. То есть он и сложную штуку сделает, и сам не будет знать как она делается.

    А все безхозные функции, которые не пренадлежат никаким объектам (например функции порождающие объекты) можно вынести в статические методы. Главное что бы статичесих переменных у нас небыло (ибо это те же глобальные переменные). И поменьше публичного ибо черт его знает что эти разработчики будут использовать. Причем "те разработчики" это вы завтра.

    Вообщем писав всё время на процедурке, сложно перейти на ооп.


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

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

    Подскажите, какой проект начать писать (гостевая, блог), или может начать изучать фреймворк.


    Фреймворки универсальны, а значит чистого ООП там быть не может. Во всяком случае нет ни одного фреймворка на котором стоит учиться ООП.

    Есть хорошие упражнения на развитие понимания объектно-ориентированного проектирования. Например вот: https://habrahabr.ru/post/206802/

    Сразу хочу отметить что это крайности. Упражнения же. Они должны ограничивать вас что бы заставлять думать и задавать правильные вопросы.

    Или может подскажите книгу/сайт где пошагово в ооп написан какой-то проект, чтобы быстрее пришло понимание.


    Так вы научитесь делать один конкретный проект а на втором вы уже проиграете. Так дела не делаются. Надо разобраться с причинами появления идеи ООП. Ну то есть что было до. Можно еще с функциональным программированием попробовать разобраться. В PHP оно слабо применимо, но основные идеи очень тесно переплетаются с ООП и познав немного функциональщины ваше ООП будет лучше. Да и если про ООП вы можете найти много булшита, про функциональщину врут мало.
    Ответ написан
    3 комментария
  • Как развиваться начинающему web-разработчику?

    Коротко
    Карта развития Web Разработчика

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

    Живой пример: Есть толковый фронтендер(или бекендер по JS) пишет морду сайта на JS Фреймворке. Есть гуру бэкенда пишет API сайта. В случае с фулстаком(образно) он пишет обе задачи сам, но заведомо понятно, что он пишет это дольше и не факт что по последнему слову будет сделано.


    Что нужно для развития дальше:
    - Читайте блоги зарубежных программистов, они делают отличные архитектуры как в самом коде, так и решения в DB.
    - Фреймворки PHP и JS - чем больше их будет тем лучше. Все они ускоряют разработку. Все чаты, соц авторизации, регистрации,и прочие первоочередные задачи давно уже написаны. Вы можете концентрироваться на более важных задачах.
    - ООП тут очень спорный вопрос, на определенных этапах разработки оно решает, но когда этот уровень появляется, чаще всего прибегают к другому языку программирования и переписывают проект в угоду скорости (С++, Java, Python). Понимать нужно, поскольку фреймворки построены на этих парадигмах, но самостоятельно придумывать вам гибкие решения вряд ли придется(по крайней мере до Senior-а точно).
    - Не изобретайте велосипеды. Разбирайтесь в чужом коде(Этот навык очень ценен после "решить/найти решение любую задачу"). Любой магазин чаще всего будет написан в лучшем случае на фреймворке, в худшем на OpenCart, Woedpress - что просто идиотизм, это блоговая система БЛОГОВАЯ. из за тренда выкручивают яйца.
    - Учить английский и работать не на СНГ, Укр или места постсоветского пространства. Искать фирмы зарубежных филиалов и работать там. Поскольку так или иначе там уже работают профессионалы и знакомы с западным рынком, европейским. Там пишутся интересные проекты и появляются интересные решения.
    Ответ написан
    7 комментариев
  • Какие есть ресурсы для освоения Kali Linux?

    @artemsee
    Ответ написан
    Комментировать
  • Какие есть интересные блоги современных JavaScript ниндзя?

    • www.nczonline.net
    • 2ality.com
    • ponyfoo.com
    • mathiasbynens.be
    • davidwalsh.name
    • rmurphey.com/archives
    • caolan.org
    • perfectionkills.com
    • www.bennadel.com
    • addyosmani.com/blog/
    • dmitrysoshnikov.com
    • yehudakatz.com
    • ncombo.wordpress.com
    Ответ написан
    3 комментария
  • Как всё успевать и не быть роботом?

    Bandicoot
    @Bandicoot
    Вась-программист
    1. Тут проблемы нет, т.к. работаю в офисе на полную ставку. Отработал свои 8 часов и свободен.

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

    4. Спортом не занимаюсь, но вместо этого каждый день делаю гимнастику. Много времени не отнимает, а бодрячка придает.

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

    ThePyzhov
    @ThePyzhov
    iOS Ninja
    Для того чтобы хакать ПК нужно, по мимо программирования, хорошо разбираться в ОС которая стоит на ПК, и в архитектуре компьютеров в принципе.
    Ответ написан
    Комментировать
  • Какие вы знаете интересные сайты о Python?

    tema_sun
    @tema_sun
    Ответ написан
    Комментировать
  • Как вы создаёте адаптивный дизайн и всегда ли это нужно?

    aliencash
    @aliencash
    Партизан
    Я уже давно понял, что лучше сразу делать адаптивно. Иначе потом все равно переделывать придется. Контейнер у меня выглядит так:
    .container {
    width: 100%;
    max-width: 1200px;
    min-width: 320px;
    margin: 0 auto;
    }

    Причем стараюсь делать все резиново. Если такой возможности нет - медиазапросы.
    Ответ написан
    Комментировать
  • Как вы создаёте адаптивный дизайн и всегда ли это нужно?

    SuperMax899
    @SuperMax899
    лучшее "спасибо" - кнопка "решение вопроса"
    На абстрактный ответ мог бы ответить абстрактно, но отвечу с вариантами.
    В зависимости от задачи, я опишу не для сервисов или больших сайтов\ресурсов.
    Советую так же прочесть вот эту статью: frontender.info/building-a-better-responsive-website

    Обычно использую bootstrap, который дополняю своими стилями, к примеру, сразу удаляю\перекрываю .row с его -15px margin'ом по сторонам, добавляю класс padding-0 для убирания в некоторых блоках padding'a у col- (который стандартно по 15px).

    Стандартно учитываю разрешения - HD, ноутбучное 1366 и свое чуть меньше 1366 (у меня пуск справа:) ), 1024-960 - старые мониторы и нетбуки, смотрю в диапазоне 768px-960 для некоторых планшетов и телефонов, и меньше 768 для телефонов. Тут дизайн один, через media onlyscreen убираем с загрузки ненужные части.
    Если все сверстано правильно и добавлены везде классы, то сайт будет полностью адаптивным.
    Для тестов меньше 768px проверяю через iphone 5 и старенький android-телефон. (Через Toggle Device mode в Google Chrome получаешь очень сильно разительные результаты в сравнении с устройством - браузеры то другие, хотя большие косяки всплывают сразу.)
    Тут кстати еще (мобильная) кросс-браузерность очень тонкий вопрос. Стиль у каждого браузера свой, особенно у всяких элементов типа input, так что тоже требует проверки и состояний тоже (placeholder, цвет текста в поле).

    Нужно ли это? Безусловно - на любом сайте, в любой отрасли половина трафика с мобильных устройств, это уже стандарт качества, на мой взгляд:)
    Ответ написан
    2 комментария
  • Какую фантастику порекомендуете, где главный герой программист/инженер?

    Ivanq
    @Ivanq
    Знаю php, js, html, css
    В свое время зачитывался книгой Записки невесты программиста. Не фантастика, конечно, но интересно.
    Ответ написан
    1 комментарий
  • Решил заниматься созданием сайтов на заказ. Какие документы должны быть? Налоги и т.п?

    NeiTrinO2
    @NeiTrinO2
    Предприниматель
    У меня несколько ООО. Но свое ИП я открыл только недавно.
    Я был шокирован тем, насколько это быстро и просто)))

    Более того, сейчас уже не надо даже обращаться к сторонним компаниям, чтобы они помогли зарегистрировать юр. лицо. Это просто НЕ НУЖНО.

    Итак, вот какой инструментарий я бы порекомендовал:

    1. Регистрация ИП:
    - https://service.nalog.ru/gosreg/
    - www.e-kontur.ru/ip

    Порядок действий
    • Составляем форму самостоятельно (быстро, удобно, бесплатно)
    • Формируем квитанцию для оплаты гос. пошлины (по-моему 500 руб.)
    • Оплачиваем квитанцию
    • Приходим в налоговую и просто подаем документы на регистрацию
    • Через 5 рабочих дней забираем там же все документы
    • Подаем заявление на переход на УСН (если нужно)

    2. Открытие счёта в банке.
    Я рекомендую банк Точка (человеческий сервис, удобный интернет-банк, все круто и недорого).
    Здесь все очень просто. Оставляем заявку, присылаем сканы документов. Встречаемся с менеджером или по скайпу и все работает

    3. Бухгалтерия
    Сервис Эльба от Контура. 1 год для новых юр лиц - БЕСПЛАТНО. Удобно, внятно, бесплатно.

    Тонкости
    - Нужно подготовить документы? - Фреш Док
    - Не забывать про то, что ИП должны платить взносы в ПФР и ФСС за себя

    Будущее
    Как только бизнес вырастет - лучше зарегистрировать ООО

    Успехов!
    Ответ написан
    4 комментария
  • Как изучаем Python?

    @newpy
    web-dev
    "A Byte of Python" ("Укус Питона") by Swaroop (перевод В. Смоляр)
    wombat.org.ua/AByteOfPython
    Ответ написан
    1 комментарий
  • Как изучаем Python?

    s0ci0pat
    @s0ci0pat
    I'm Awesome
    Только лучшее по Python'у, без лишних слов и воды: https://docs.python.org/
    Ответ написан
    2 комментария
  • Как быстро начать изучать python?

    @vilgeforce
    Раздолбай и программист
    Вам не нужно, вот и не интересно. Не мучайте себя.
    Ответ написан
    Комментировать
  • Как быстро начать изучать python?

    Atanvar
    @Atanvar
    Frontend developer
    Доусон -> потом начинайте что-то пилить, какой-нибудь парсер сайтов -> берите фласк \ джанго и напишите блог, и вместе с этим читайте лутца.
    Ответ написан
    Комментировать