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

    feycot
    @feycot
    TD;DR https://stepik.org/course/363
    https://www.youtube.com/watch?v=rrRZZ_3licM&list=P...

    Если тебе обещают, что научат программировать за 21 день - не верь им.
    Если тебе обещают, что трудоустроят - не верь им.
    Если тебе обещают, что это будет бесплатно - не верь им.

    Программирование это навык, поэтому нужно учить не язык, а развивать навык.
    Необходимо понять, что оно в себя включает - алгоритмы, структуры данных, абстрактное мышление, инженерное мышление.
    Если у тебя нет своей программы - доверься людям, которые прошли путь и могут порекомендовать ресурсы. Помни, что бесплатный сыр только в мышеловке. Либо ты тратишь кучу времени на систематизацию знаний, либо ты платишь за то, чтобы получить программу.
    Вот тебе ссылка на плейлист, посмотри, понравится ли тебе
    https://www.youtube.com/watch?v=rrRZZ_3licM&list=P...

    Я думаю, что дальше сам разберешься.

    Из литературы. Это из тех, что я читал или слышал о них:
    Грокаем алгоритмы (Адитья Бхаргава)
    Код. Тайный язык информатики (Чарльз Петцольд)
    Идеальный программист. Как стать профессионалом разработки ПО (Роберт К. Мартин)
    Цель. Процесс непрерывного совершенствования (Элия М. Гольдратт, Джеф Кокс)
    Операционная система UNIX (Андрей Робачевский, Сергей Немнюгин, Ольга Стесик)

    Помни, что нужно учиться непрерывно всю жизнь, если один раз вступил на этот путь, то назад дороги нет. Будешь видеть мир по-другому. Если тебе кажется, что ты все знаешь, значит ты не знаешь ничего.
    Ответ написан
    4 комментария
  • В чем смысл mock-функций в Jest?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    > Насколько я понимаю, смысл mock-функций в jest - это заглушки для функций, чтобы не тащить код всего модуля и не замедлять процесс тестирования.

    Это не совсем так. Моки подразумевают, что вы прямо проверяете то что мокаете. Что функция была вызвана, что запрос был выполнен. Это и называется мокинг. А просто заглушка это стаб. Ее смысл не в том чтобы не тащить код, а в том чтобы изолировать побочные эффекты и добиться детерминированности. К последнему, например, относятся таймеры и рандомные числа. Если все это используется внутри программы, то вы не сможете просто так ее протестировать.

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

    Ни первое ни второе напрямую с видом тестирования не связано. Моки и стабы могут применяться практически на любом уровне автоматизированного тестирования.

    Темы для самостоятельного изучения:

    Побочные эффекты
    Детерминированность
    Чистые функции
    https://martinfowler.com/articles/mocksArentStubs.html
    Ответ написан
    Комментировать
  • Import в nodejs 10.11.0 - как заставить работать?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Лучше всего использовать https://babeljs.io/ и не париться, что для бекенда что для фронтенда. Во-первых не придется ничего менять (типа расширения для использования mjs), с другой стороны сейчас это стандарт де-факто в js мире, в-третьих во фронте без него вообще никак.
    Ответ написан
    Комментировать
  • Литература для понимания программирования?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Как уже упоминали выше, самая фундаментальная книга СИКП. На нашем проекте есть подборка именно таких книг ru.hexlet.io/pages/recommended-books. Они затрагивают почти все необходимые аспекты и часть из них пересекается с тем что здесь рекомендуют и по указанным ссылкам.

    Если вы начинаете обучаться прямо совсем с нуля, то рекомендую нашу бесплатную систему http://code-basics.ru, питона там правда нет пока, но мы в процессе его добавления. Главная фишка в том что кроме теории есть и практика, которая выполняется тут же онлайн.
    Ответ написан
    Комментировать
  • Как начать работать во frontend?

    @McBernar
    Не надо брать htmlacademy.

    У них очень хорошие курсы, но интенсивы совершенно ни о чем. Как, в общем-то, и 90% остальных представителей онлайн-образования. Беготня по верхам, совершенно разный уровень учеников, последовательность обучения очень условна, вебинары растянуты на два часа, когда всю информацию с них можно в 15 минут уместить. Ну и слушать как преподаватель в микрофон пьет чай с характерным звуком — такоэ :)

    Очень крутые ребята с Hexlet, но там чем дальше, тем больше ощущаешь себя идиотом. Кажется, они преувеличивают возможности новичков :)
    Ответ написан
    1 комментарий
  • Как начать работать во frontend?

    @akkuraten
    Hexlet https://ru.hexlet.io/pages/recommended-books
    Send me ping t.me/botessa, I maybe may help u for free
    Ответ написан
    Комментировать
  • Что делать после todo?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Вот сборник тестовых заданий от разных компаний https://github.com/Hexlet/ru-test-assignments
    Ответ написан
    Комментировать
  • Правильный подход к тестированию в приложениях на php?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    coverage говорит о покрытии тестами конкретных строк. Если во время прогона тестов не были затронуты какие-то строки исходного кода, то coverage будет менее 100%. В среднем считается что хорошее покрытие это > 80%. 100% достичь слишком трудно и дорого (и не нужно).

    > И если я напишу еще 1000 такого типа тестов это лишь будет гарантировать, что всё хорошо на этих 1000 наборах данных, а вдруг ошибка как раз в другом, 1001-м наборе?

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

    Из интересного:

    * property-based testing https://en.wikipedia.org/wiki/QuickCheck
    * bdd behat.org/en/latest/guides.html
    * browser tests https://codeception.com/
    * как писать тесты (концептуальная история) https://ru.hexlet.io/blog/posts/how-to-test-code
    Ответ написан
    2 комментария
  • Курсы/книги/видео по администрированию веб серверов - какие порекомендуете?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Эта тема, в первую очередь, связана со знанием операционных систем. Читайте соответствующие книги

    Если говорить про конкретные инструменты и их использование, начните с автоматизации деплоя и развертывания инфраструктуры используя инструменты ansible и terraform. Далее переведите локальную разработку на docker-composer. Затем можно будет тащить докер в продакшен (используя в примитивном случае тот же ansible). Про докер можно почитать здесь https://guides.hexlet.io/docker/
    Ответ написан
    1 комментарий
  • Можете посоветовать книги по IT направлениям?

    peacelovecookies
    @peacelovecookies
    Работаю в команде Hexlet.io
    Начинал читать Кормена, было сложновато, а вот Грокаем алгоритмы хорошо идет. Думаю, стоит с нее начинать и переходить на что-то посложнее.
    Насколько я понял, вы хотите читать литературу, будучи на службе. Так что предполагаю, что практиковаться будет сложно (или невозможно вовсе). Поэтому советую читать литературу больше по базовым понятиям и формировать мышление программиста. От технической информации толку будет не так много, без практики то...

    Вот отличные книги для развития:
    - Джоэл о программировании (Джоэл Х. Спольски)
    - Мифический человеко-месяц, или Как создаются программные системы (Хилл Чапел, Фредерик Брукс)
    - Цель. Процесс непрерывного совершенствования (Элия М. Гольдратт, Джеф Кокс)

    Если все же тянет на техническую литературу, то про сети полезную информацию можно найти в этих книгах:
    - Операционная система UNIX (Андрей Робачевский, Сергей Немнюгин, Ольга Стесик) - глава 6 как раз про сети, если я не ошибаюсь.
    - Руководство администратора Linux (Эви Немет, Гарт Снайдер, Трент Р. Хейн)

    А вообще можете посмотреть список рекомендуемых книг, вдруг что-то понравится.
    Ответ написан
    2 комментария
  • В какой последовательности читать книги по JavaScript?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Книга которая учит не только синтаксису, но и тому как писать кот грамотно https://github.com/MostlyAdequate/mostly-adequate-...
    Ответ написан
    3 комментария
  • Что почитать для «посредственного» js разработчика?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Если вы хотите стать инженером с большой буквы, то обязательно изучать СИКП. Книга для которой не важно на чем вы пишите сейчас, она дает глубокое понимание принципов проектирования кода и формирует правильное мышление. В целом список рекомендуемого и не зависящего от языка https://ru.hexlet.io/pages/recommended-books

    Из книг которые используют js в качестве основного языка можно попробовать https://github.com/MostlyAdequate/mostly-adequate-guide (все тоже самое есть в сикпе на более фундаментальном уровне). У книги вроде как есть перевод на русский.
    Ответ написан
    2 комментария
  • Как развиваться в программировании не привязываясь к языку?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Самую главную книгу тут не назвали: SICP (Структура и интерпретация компьютерных программ).

    > СИКП — не книга про языки программирования или разработку программного обеспечения, не книга по ООП, функциональному программированию или паттернам проектирования.

    > СИКП — книга об информатике (computer science). Восприятии компьютеров как абстрактных машин, используемых для манипулирования данными. Несмотря на то, что книга впервые опубликована в 1979, она до сих пор не потеряла свою актуальность и не потеряет в будущем. СИКП неизменно находится в топе лучших книг по обучению программированию на протяжении десятков лет.

    guides.hexlet.io/how-to-learn-sicp
    Ответ написан
    Комментировать
  • Как правильно деплоить проект?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Если не брать в рассчет современные подходы на основе докера, то самый универсальный способ - использовать ansible и его модуль docs.ansible.com/ansible/latest/deploy_helper_modu...

    Если погуглить 'laravel deploy ansible', то вы найдете множество статей и репозиториев на гитхабе, из которых можно почерпнуть всю необходимую информацию.

    p.s. И никогда не используйте баш скрипты для подобных задач.
    Ответ написан
    2 комментария
  • Как деплоить сайт на хостинг правильно, быстро и удобно?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    > Но такой способ мне не очень удобный показался. Как делать хот-фиксы тогда? Изменение одной буквы в коде — целый процесс.

    В хорошем процессе это не проблема. Если изменение критичное вы просто деплоите старую версию (не откат, а именно деплой старой). Хот фиксы это уход от проблемы, а нее решение.

    > В сети прочитал, что нужно использовать CI/CD, который будет скачивать последнюю версию из гита, устанавливать зависимости, тесты, перекачивать на сервер, разархивировать в отдельную папку, тесты, и в конце концов переключить симлинк вебрута на эту папку

    У наиболее продвинутых ребят вся эта история уже делается (и довольно давно) используя docker. Вы можете хотя бы немного познакомиться с ним здесь guides.hexlet.io/docker/. Если докер для вас пока рано, то можно реализовать процесс используя Ansible и его специальный модуль docs.ansible.com/ansible/latest/deploy_helper_modu...

    Там вы заодно увидите ответ на вопрос "что делать с состоянием".

    > Что делать с БД? Что делать с загруженными файлами от пользователей? Копировать из предыдущей версии?

    Состояние никак не связано с деплоем, оно должно быть шареное. Если у вас есть файлы от пользователей, то возможно вы захотите использовать aws s3. Как минимум про него надо знать.

    Рекомендую заодно посмотреть вебинар про stateless vs statefull чтобы немного понимать эту тему: https://www.youtube.com/watch?v=WPCz_U7D8PI
    Ответ написан
    2 комментария
  • С чего начать учить React?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    > Я не шарю в этих ваших пактеных менеджерах, сборщиках и тд.

    Тогда вам не с реакта надо начинать, а с изучения экосистемы nodejs. Кратки экскурс можно получить пройдя наш бесплатный курс https://ru.hexlet.io/courses/js-setup-environment
    Ответ написан
    3 комментария
  • Какие видео курсы по web-программированию выбрать?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Не могу не отметиться здесь) Мы тоже обучаем https://ru.hexlet.io
    Ответ написан
    Комментировать
  • Обращение к методам из вью это говнокод?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Функции бывают разные.

    Ключевые понятия:

    1. Идемпотентность.
    1. Чистая функция.
    1. Побочные эффекты.
    1. Детерминированность

    Так вот во вью, в идеале должны вызываться только чистые функции или на худой конец функции без побочных эффектов.

    В вашей запрос в базу это побочный эффект, такое лучше делать в контроллере, а во вью передавать данные.

    Но на самом деле ваш код еще и антипаттерн, так называемая проблема `select N + 1`. Запросы в цикле - зло. Вы не пользуетесь ни базой данных, ни взможностями вашей ORM (если это она).
    Ответ написан
    3 комментария
  • Как устроиться на первую работу в IT?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    1. У меня есть статья специально для вас: https://ru.hexlet.io/blog/posts/how-to-find-your-f... (алгоритм поиска первой работы)
    1. https://github.com/Hexlet/ru-test-assignments - это сборник тестовых заданий разных компаний. Делайте их, набирайтесь опыта, расширяйте свой гитхаб аккаунт.
    Ответ написан
    Комментировать
  • Какое тестовое задание junior php дают на собеседовании?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Я собираю тестовые задания разных компаний в этом репозитории https://github.com/Hexlet/ru-test-assignments
    Ответ написан
    1 комментарий