ПутьПрограммиста
161 subscribers
59 photos
6 videos
58 links
Канал для желающих освоить программирование легко и комфортно. Будем вместе погружаться в теоретическую часть и применять знания на рабочих проектах.
Основные инструменты:
- Python
- PHP
- CSS3
- HTML5
- MySQL
加入频道
15 книг для входа в IT

Несмотря на обилие курсов, видео и других форматов обучения, чтение книг всё ещё остаётся эффективным вариантом изучения программирования.

А в этой статье собрали топ книг, которые лучше всего подходят для начинающих разработчиков. Часть книг рассчитана на общие технические знания, другая часть — с уклоном в конкретный язык программирования.

#полезное #книга
​​PHP всё ещё не умирает: нехватка кадров и высокие зарплаты

Уже долгое время среди разработчиков бытует мнение, что PHP (язык для бэкенда сайтов) умирает и вот-вот станет не актуальным. Поэтому многие начинающие разработчики игнорируют его и выбирают более популярные варианты: Python, JS, C#. Однако, из года в год PHP не снижает свою планку и продолжает оставаться востребованным во многих стеках веб-разработчики.

Если не хотите тесниться среди сотен Python/JS-джунов на одной вакансии, то можете рассмотреть менее популярный, но не менее востребованный PHP. А в этой статье как раз провели анализ рынка и зарплат для таких разработчиков.

#php #информация
Как работает память компьютера «под капотом»?

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

Разумеется, этим занимается процессор. Но без понимания того, как организована оперативная память компьютера, как в ней хранятся данные и т. д., разбирать работу процессора не имеет смысла:

Простыми словами о работе памяти рассказывают в видео. А вот и весь плейлист по теме работы железа.

#железо #какработает
👍1
Если вы знакомы с объектно-ориентированным программированием, то наверняка слышали и о принципах SOLID. Эти пять правил разработки ПО задают траекторию, по которой нужно следовать, когда пишешь программы, чтобы их проще было масштабировать и поддерживать. Они получили известность благодаря программисту Роберту Мартину.

#теория #solid
1) S – Single Responsibility (Принцип единственной ответственности)

Каждый класс должен отвечать только за одну операцию.

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

Назначение

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

#теория #solid
2) O — Open-Closed (Принцип открытости-закрытости)

Классы должны  быть  открыты для расширения, но закрыты для модификации.

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

Назначение

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

#теория #solid
3) L — Liskov Substitution (Принцип подстановки Барбары Лисков)

Если П является подтипом Т, то любые объекты типа Т, присутствующие в программе, могут заменяться объектами типа П без негативных последствий для функциональности программы.

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

Если у вас имеется класс и вы создаете на его базе другой класс, исходный класс становится родителем, а новый – его потомком. Класс-потомок должен производить такие же операции, как и класс-родитель. Это называется наследственностью.

#теория #solid
Продолжение: Необходимо, чтобы класс-потомок был способен обрабатывать те же запросы, что и родитель, и выдавать тот же результат. Или же результат может отличаться, но при этом относиться к тому же типу. На картинке это показано так: класс-родитель подаёт кофе (в любых видах), значит, для класса-потомка приемлемо подавать капучино (разновидность кофе), но неприемлемо подавать воду.

Если класс-потомок не удовлетворяет этим требованиям, значит, он слишком сильно отличается от родителя и нарушает принцип.

Назначение

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

#теория #solid
4) I — Interface Segregation (Принцип разделения интерфейсов)

Не следует ставить клиент в зависимость от методов, которые он не использует.

Когда классу приходится производить действия, не несущие никакой реальной пользы, это выливается в пустую трату ресурса, а в случае, если класс выполнять эти действия не способен, ведёт к возникновению багов.

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

Назначение

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

#теория #solid
5) D — Dependency Inversion (Принцип инверсии зависимостей)

Модули верхнего уровня не должны зависеть от модулей нижнего уровня. И те, и другие должны зависеть от абстракций. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Согласно данному принципу, класс не должен соединяться с инструментом, который применяет для выполнения операции. Вместо этого он должен быть соединён с интерфейсом, который поможет установить связь между инструментом и классом.

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

Назначение

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

Источник

#теория #solid
12 IT-профессий, не требующих умения программировать

Если писать код не хочется, но вас привлекает IT-сфера, рассмотрите эти профессии: возможно, в одной из них вы найдёте свое истинное призвание:

специалист тех. поддержки — обеспечивают бесперебойность работы продуктов;
IT-копирайтеры — вызывают у ЦА интерес к продукту;
технические писатели — объясняют сложное простым языком;
scrum-мастера — реализуют гибкую методологию ведения проектов;
дизайнеры — проектируют приятные и понятные интерфейсы;
маркетоголи — анализируют рынок и тренды;
SEO-специалисты — оптимизируют продукт для поисковых систем;
рекрутеры — ищут и нанимают специалистов;
менеджеры по продажам — заключают контракты с клиентами, находят к ним подход;
бизнес-аналитики — анализируют рынок и данные, помогают компании двигаться в правильном направлении;
продакт-менеджеры — отвечают за стратегическое видение и развитие продуктов;
проджект-менеджеры — отвечают за организацию и контроль разработки продуктов;

Детальней про каждую из профессий и где обучаться в статье.

#теория
12 алгоритмов в гифках, которые должен знать каждый разработчик

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

Так неужели знания в области алгоритмов бесполезны? Конечно, нет. Что по-настоящему важно, так это умение думать алгоритмически. Не только чтобы воспроизводить и изменять стандартные алгоритмы, но и чтобы вам было комфортно использовать код для решения задач, с которыми вы столкнетесь в роли разработчика.

Держите статью, где на пальцах объясняют принцип работы 12 популярных алгоритмов: поиски, сортировки, кодирование и другое. Для упрощения понимания у каждого алгоритма есть визуализация.

#алгоритмы #теория
Как компьютер понимает ваш код

Для разработчиков не секрет, что даже современные компьютеры понимают и обрабатывают машинный код — последовательность единиц и нулей. Однако такой код людям трудно писать и понимать. Для этого были придуманы своего рода «переводчики»:

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

В этом видео на пальцах объясняют принцип работы компиляторов и интерпретаторов, а также разбирают их особенности и преимущества.

#computersience  #теория
Что такое TCP/IP — объясняют на пальцах

TCP/IP — это способ, с помощью которого компьютеры обмениваются информацией друг с другом в интернете. Он важен для того, чтобы данные могли безопасно и правильно передаваться. TCP/IP работает так, что данные разбиваются на маленькие кусочки (пакеты), отправляются через сеть с указанием адреса получателя, и затем собираются обратно в исходный файл или сообщение. Этот способ обмена данными является практически фундаментом работы интернета. Поэтому разработчику полезно знать, как работает этот протокол.

Держите видео, где наглядно и простыми словами разбирают принцип работы TCP/IP в деталях: рассказывают про порты, сокеты, DNS, маски сети и многое другое.

#протокол #интернет #теория
​​Программистка за 2 года накопила 7470 вкладок в браузере 
 
И она даже не думала их закрывать до момента, пока Firefox не афигел от такого количества, и отказался восстанавливать её сессию. Однако Hazel (её ник) всё же смогла вернуть закрытые вкладки к жизни с помощью их восстановления из кэша профиля Firefox. 
 
Позже она сообщила, что держит так много вкладок открытыми из соображений ностальгии. Мол, это помогает вспомнить о том, что делала, узнавала и о чём думала.
 
А влияние на память при всём этом оказалось незначительным. Файл сессии с информацией о вкладках занимал всего 70 МБ, т.к. Firefox загружает вкладку в память, только если она открывалась недавно.
 
Предлагаем поделиться своим рекордом вкладок в комментариях. Хотя юзеры хрома едва ли смогут чем-то похвастаться (админ в их числе)
 
#новости
Ребята просто написали целый игровой движок

#юмор
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Бинарный поиск — что за алгоритм

Про бинарный поиск вы могли слышать где угодно: форумы, статьи, задачи да и просто от какого-то ITшника. Давайте разберёмся.

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

1. Берём центральный элемент массива и сравниваем его с искомым числом.

2. Если искомое число больше серединного элемента — значит нас интересует первая половина массива. Если меньше — вторая.

3. Повторяем п. 1 и п. 2 с выбранной половиной до тех пор, пока не дойдём до искомого элемента. Каждый раз отсеивается половина элементов.

Популярность алгоритма вызвана его большой скоростью выполнения. Последовательный поиск по массиву из 1000 элементов может занять в крайнем случае 1000 операций, а бинарным поиском — максимум 10. А массив из миллиона элементов — максимум за 20 операций.

На картинке разница простого и бинарного поиска.

#алгоритм #теория
Регулярные выражения для начинающих

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

Например, так выглядит регулярное выражение для телефонных номеров по типу 123-456-7890:

\d{3}-\d{3}-\d{4}

где \d — символ цифры, {3} — количество повторений, - необходимый разделитель.

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

#теория #регулярноевыражение
​​5 ошибок Python-разработчиков, которые выдают новичка

У начинающих специалистов может складываться впечатление, что рабочий код — готовый код. По мере роста скилов и опыта, становится понятно, что код рекомендуется писать не только рабочим, но и чистым. А также поддерживать в разработке определённые стандарты. Они относятся не только к коду, но и к тестам, ведению Git, да и просто к базовым знаниям технологий.

Собрали для вас самые распространенные ошибки  в Python-разработке в этой статье. Особенно полезной будет тем, кто собирает портфолио для трудоустройства или хочет получить простые, но практичные советы.

#советы #python