• Как организовать самообучение языкам программирования?

    aRegius
    @aRegius
    Python Enthusiast
    1. Определяете минимум, который вам необходим для создания продукта-цели. Ну, то есть, самый минимум, minimum minimorum. Например: "Для создания моего продукта мне нужны HTML, CSS, JS и PHP. Без любого из них я свой продукт создать не смогу. Это мой необходимый минимум."

    2. Ищите по 1-му толковому материалу (чтобы не распылять усилия на 8 книг и 15 онлайн-курсов по JS, условно) для каждого инструмента. Более того, по трем из них я вам могу дать рекомендации: HTML5 + CSS3 + JS. PHP не мой "конек", возможно коллеги подскажут...

    3. Учите в том же порядке: HTML, потом CSS, потом JS/PHP (PHP/JS, тут уж сами смотрите).

    4. Открывайте соответствующий материал по предмету, ознакомьтесь со структурой подачи материала и определите для себя ключевые точки для разбития этого материала на блоки, каждый из которых вы будете стараться пройти "за один присест".
    Например: открываете книгу по HTML, смотрите содержание, и принимаете решение (исходя из имеющегося у вас времени, которое вы готовы в день уделять обучению), что будете в день работать над 2-мя главами материала.
    Или: открываете материал по JS, смотрите содержание, и принимаете решение, что будете в день работать над 1-ой темой (сегодня - "Основы JavaScript", завтра - "Качество кода" и т.п.)

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

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

    7. После реализации проекта можете выдохнуть, осмотреться, наметить очередные цели с учетом приобретенного опыта - и дальше в путь!

    Подытожим: определитесь с минимумом технологий, распланируйте время на изучение, учите технологии step-by-step - не распыляйте усилий, придерживайтесь графика.

    P.S. Вам будет проще, если вы сконцентрируетесь, поставите себе минимально возможные сроки и "возьмете эту крепость блицкригом", ибо на скользкую горку проще всего забраться с разбегу :)
    Ответ написан
    4 комментария
  • MVC php на пальцах?

    @xfg
    Модель - это любая ваша бизнес-логика, всякие вычисления и запросы к бд. То есть то, без чего приложение впринципе не имеет смысла.

    Контроллер - это посредник между моделью и видом. Он запрашивает данные (вызывает методы) у модели и затем передает их в вид.

    Вид - с помощью полученных данных от контроллера рисует пользовательский интерфейс.

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

    Нужна одна точка входа. Клиент всегда запрашивает только index.php, оно там внутри на основе данных из запроса решает какой контроллер создать и какой метод из контроллера выполнить. Всё.
    Ответ написан
    4 комментария
  • Зачем нужны абстрактные классы (PHP)?

    У разных языков по разному. Например в Java можно реализовывать кучу интерфейсов, но нельзя реализовать множественное наследование не больше 3-ех наследников и с помощью интерфейсов решают это.

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

    Абстрактный класс нужен, когда нужно семейство классов, у которых есть много общего. Конечно, можно применить и интерфейс, но тогда нужно будет писать много идентичного кода.

    Пример: Абстрактный класс заведомо не будет запрошен как объект. К примеру абстрактный класс - Транспорт: Но все его наследники будут Автомобилем, краном, лодкой, самолет и т.д. Например вы заведомо знаете, что весь транспорт будет двигаться. И вы объявляете абстрактный метод(движение) в абстрактном классе, который нужен будет 100% всем наследникам т.е. без движения это уже не транспорт и новый наследник обязан будет реализовать это. В самом же абстрактном классе, есть другие поля и свойства, которые будут унаследованы. Ну например мощность двигателя(очень грубо), или то что их роднит.
    Ответ написан
    2 комментария
  • Научите пользоваться регулярными выражениями

    @corpsepk
    Никогда, вы слышите, никогда не используйте регулярные выражения для того, чтобы распарсить HTML

    Используйте соответствующие инструменты, например:
    - https://github.com/Imangazaliev/DiDOM
    - https://github.com/paquettg/php-html-parser
    - simplehtmldom.sourceforge.net

    Простите, не удержался :)
    stackoverflow.com/questions/1732348/regex-match-op...
    Ответ написан
    Комментировать
  • Какой инфракрасный приёмник использовать?

    ivankomolin
    @ivankomolin
    Я в свое время делал пульт управления для компьютера использовал что-то типа TSOP1738. Дальность получение команд с пульта метра 3 была точно, дальше просто не было необходимости/желания проверять.

    У ИК приемников есть характеристики, основная - это рабочая частота(например, у TSOP1738 это 38кГц). Передатчик должен генерировать модулированный сигнал с этой частотой. Это как раз необходимо для получения сигналов с большего расстояния и с меньшим количеством ложных срабатываний из-за засветки.

    А передавать "постоянный сигнал"(если я правильно понял что вы имеете ввиду под этим) для таких приемников не имеет смысла. Для получения такого же результата можно взять обычный фотодиод.
    Ответ написан
    Комментировать
  • Какой инфракрасный приёмник использовать?

    bobrovskyserg
    @bobrovskyserg
    И как только пульты ДУ работают?
    Попробуйте модулировать хотя бы меандром, усиливать переменную составляющую (может понадобиться полосовой фильтр) и детектировать.
    А синхронное детектироваание вообще творит чудеса.
    Ответ написан
    Комментировать
  • Принцип работы инфракрасного светодиода и приёмника: прерывания или отражение?

    Ocelot
    @Ocelot
    На прерывание луча. Дальность ИК датчиков, работающих на отражение, не превышает 20 см и сильно зависит от цвета объекта.
    Минимальное расстояние между лучами зависит от угла расхождения света. Даже с простейшей оптикой (собирающая линза + бленда) можно получить пятно в 1 см на дистанции в пару метров.
    Для защиты от помех луч нужно промодулировать. Соответственно, в сигнале приемника проверяется наличие нужной частоты, а не уровень.
    Ответ написан
    Комментировать
  • Научите пользоваться регулярными выражениями

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    парсить HTML регурярками себе дороже. Лучше использовать xpath.
    Ответ написан
    3 комментария
  • Научите пользоваться регулярными выражениями

    greabock
    @greabock
    Могу
    Если у Вас есть проблема, и вы хотите решить ее с помощью регулярных выражений - значит у Вас две проблемы (с).
    1) #<li>(?P<mask>.*)</li>#
    2) /src= "(?P<mask>.*)"/    обратите внимание - в файле пробел между = и "
    3) а курсовую за Вас не написать?
    Ответ написан
    2 комментария
  • PHP, ООП. Практическое изучение

    Любую задачу (решаемую в принципе) можно реализовать как с ООП, так и без него (в процедурном стиле, например). «Прелести» ООП лучше всего чувствуются на больших проектах, где невозможно держать в голове все (глобальные) переменные и функции и способы их взаимодействия и приходишь к пониманию необходимости использовать более высокие уровни абстракции, чем отдельные значения и классические массивы из них. Начинаешь объединять семантически связанные данные в структуры (ассоциативные массивы в PHP), а функциям с ними работающим давать имена с префиксом (обычно) в виде названия (чисто семантическое) этих структур, чтобы хоть немного упорядочить глобальное пространство имён, получая функции вида user_login(array $user, $login, $password), user_logout(array $user) и user_is_logged(array $user). До простейшего ООП осталось сделать один шаг — перенести и функции (указатели на них в С, callback/имена в PHP) в эти структуры, но синтаксис вида call_user_func($user['user_login'], $user, $login, $password) мягко говоря неудобен и избыточен и тут в PHP4 вводят вместо него синтаксис $user->login($login, $password) и без него ты больше не можешь жить :)

    Если же до семантических концепций ООП не дойти на своей шкуре, то разницы между user_login(array $user, $login, $password) и $user->login($login, $password) почти нет, но даже на таком простом примере видно, что запись банально короче и глобальное пространство имён меньше используется, что особенно заметно при использовании IDE с автодополнением.

    Но это философское отступление было о некоторых прелестях ООП. Прямой ответ на вопрос «какую задачу?» — любую интересную хотя бы чуть-чуть. Желательно с развитой предметной областью, в которой ощущается интуитивно наличие нескольких абстракций разного уровня. Если для процедурного приложения вы создаёте несколько таблиц в БД или используете ассоциативные массивы для группировки семантически близких значений — то это, скорее всего, такая задача. Для большего wow-эффекта или просветления можно попробовать написать две версии одного приложения типа блога, одну в процедурном стиле, другую в ООП. Причём в первой желательно не использовать «промежуточные» решения типа ассоциативных массивов даже для mysql_fetch_assoc/array(), только бескомпромиссное mysql_fetch_row(). Если же без ассоциативных массивов вы уже разработки не представляете, то вы уже почти достигли ОО-просветления :)
    Ответ написан
    Комментировать