Size: a a a

Библиотека программиста

2020 June 01
Библиотека программиста
​​Наша работа над Proglib. Май 2020

Рассказываем о новых возможностях сайта и топовых майских материалах. Сводим вместе подборки YouTube-каналов и лучших книг по различным языкам программирования 📽️📕

https://proglib.io/sh/e5iyMIdfrY
источник
Библиотека программиста
Недавно нас попросили составить список требований к идеальному курсу по прикладному Data Science. Долго думать не пришлось – критерии те же, что в других сферах образования:

👨‍🏫 Преподаватели – эксперты в области.
🔥 Знания – актуальные и подкрепленные жизненными примерами.
🏢 Куратор – надежная компания с необходимыми вычислительными ресурсами.
🆓 Обучение – бесплатное.
👨‍🎓 Лучшим выпускникам – приглашение на работу.

Перечисленным критериям отвечает Академия больших данных MADE (Mail.ru Group), открывшая новый набор для специалистов с опытом в IT.

Так как обучение бесплатное, желающих много – чтобы стать студентом, нужно пройти вступительный отбор. Заявки принимаются до 1 августа. Дерзай 👉 data.mail.ru
источник
Библиотека программиста
Вы обнаружили ошибку в коде и хотите знать, когда она была добавлена и кем. В таком случае вам необходимо применить такой инструмент, как аннотация файла. С помощью какой команды вы можете увидеть, каким коммитом последний раз изменяли каждую из строк?
Анонимная викторина
41%
git blame <filename>
6%
git bisect <filename>
34%
git reflog <filename>
3%
Нет правильного ответа
15%
Посмотреть результаты
Проголосовало: 3402
источник
2020 June 02
Библиотека программиста
Правильным ответом является команда git blame <filename>. Она относится к инструментам Git и помогает в поиске ошибок.

Итак, как уже было сказано в задании, команда git blame позволяет снабдить файл аннотацией, и таким образом увидеть, когда каждая строка файла была изменена последний раз и кем.

Она позволяет работать как с целым файлом, так и с определёнными строками файла, например, ограничиваем вывод строками с 5 по 25 с помощью опции -L:
$ git blame -L 5,25 <filename>

В результате вы получите подробную информацию, которая включает: неполную SHA-1 сумму последнего коммита, который изменял соответствующую строку; значения, извлечённые из этого коммита — имя автора и время создания коммита; номер строки и содержимое файла.
источник
Библиотека программиста
Ближайшие онлайн-мероприятия (🔥 ― надо поторопиться)

Невероятная реальность. Ответ информационной безопасности, 2 июня 🔥
Управление памятью в Java, 2 июня 🔥
QA Webinar, 3 июня 🔥
Как перейти на новый фреймворк и не убить качество продукта, 3 июня 🔥
Tinkoff IT Weekly №9. Design, 3 июня 🔥
Цифровой профиль россиянина: право на приватность, 3 июня 🔥
Android-meetup, 4 июня
Мастер Support'‎а Online: лекции от специалистов служб сопровождения, 4 июня
Советы от рекрутеров: как найти квалифицированную работу в Европе, 4 июня
Kubernetes: что об этой штуке надо знать в 2020-м, 4 июня
Туториал: новые фичи CatBoost, 4 июня
Вебинар по разметке больших массивов данных от Яндекс.Толоки и Dbrain, 4 июня
Распределённые системы и криптовалюты / Онлайн-митап, 6 июня
WebDev №12 Online, 6 июня
Встреча Российской рабочей группы по стандартизации С++, 9 июня
Онлайн-встреча по информационной безопасности Digital Security ON AIR, 10 июня
Вебинар «Front-end vs Back-end vs Full Stack Development», 10 июня
HolyJS 2020 Piter, 16 июня
Морской бой на Java, 16 июня
Вебинар «Создание игры BlackJack на Python», 22 июня
Вебинар «Введение в k6 load testing tool», 24 июня

Персонализированную рассылку мероприятий можно получать в нашем боте: @event_listener_bot
источник
Библиотека программиста
Поведенческий паттерн проектирования, превращающий запросы в объекты, позволяя передавать их как аргументы при вызове методов. Он создаёт структуру, в которой класс-отправитель и класс-получатель не зависят друг от друга напрямую. Какой это паттерн?
Анонимная викторина
12%
Наблюдатель (Observer)
34%
Команда (Command)
48%
Посредник (Mediator)
2%
Нет правильного ответа
4%
Посмотреть результаты
Проголосовало: 2763
источник
2020 June 03
Библиотека программиста
Речь идёт о паттерне Команда (англ. Command), т.к. именно он позволяет инкапсулировать запрос на выполнение определенного действия в виде отдельного объекта. Этот объект запроса на действие и называется командой. При этом объекты, инициирующие запросы на выполнение действия, отделяются от объектов, которые выполняют это действие.

Применяйте Команду, когда:
✔️Хотите параметризовать объекты выполняемым действием
✔️Хотите ставить операции в очередь, выполнять их по расписанию или передавать по сети
✔️Нужна операция отмены
источник
Библиотека программиста
​​С какого языка программирования начать: Java, Python, PHP, Javascript? Как найти свою первую работу программистом, какие есть лайфхаки?

4 июня в 17:00 (мск) ребята из ProductStar проводят бесплатный вебинар «Быстрый старт в Программировании с нуля».

👨‍🏫 Кто выступит?

Алексей Паршуков, Unit Lead в SkyEng, ex-CTO DocDoc

👩‍🏫 О чём пойдет речь?

— Различия в изучении языков программирования – какой из них перспективнее выбирать?
— Иллюзия vs реальность работы разработчиком.
— Как максимально быстро построить обучающий процесс, чтобы найти свою первую работу?

Два самых активных участника вебинара получат сертификат на бесплатное обучение в ProductStar.

🔥 Участие бесплатное, но регистрация обязательна.

Зарегистрироваться на вебинар 👉 @ProductStarDevBot@ProductStarDevBot
источник
Библиотека программиста
​​В чём разница между Docker и Kubernetes?

Виртуализация и контейнеризация – будущее крупных проектов. В этой статье обсуждаем и сравниваем ☸️ Kubernetes, 🐋 Docker и инструмент оркестровки 🐳 Docker Swarm.

https://proglib.io/sh/vVHBwg5EYT
источник
Библиотека программиста
Git в фоновом режиме ведёт «журнал ссылок», в котором за 90 дней (значение по умолчанию) сохраняется то, куда указывали HEAD и ветки. Вы можете просмотреть свой журнал ссылок, используя команду ... . Её еще применяют, когда git log не покажет эти коммиты.
Анонимная викторина
19%
git rev-list
5%
git fsck
63%
git reflog
2%
Нет правильного ответа
11%
Показать результаты
Проголосовало: 2819
источник
2020 June 04
Библиотека программиста
Речь идёт о команде git reflog, которая относится к командам, позволяющим восстановить данные в Git. Например, в какой-то момент при работе с Git вы можете нечаянно потерять коммит. Как правило, такое случается, когда вы удаляете ветку, в которой находились некоторые наработки, а потом оказывается, что они всё-таки были нужными (или выполнили git reset --hard, чем спровоцировали откат от коммитов, которые затем понадобились).

Найти SHA-1 последнего коммита самым быстрым способом и создать ветку, указывающую на неё, можно с помощью git reflog, которая покажет коммит, который вы потеряли. После чего  коммит можно восстановить, создав ветку, указывающую на него, с помощью команды git branch <branch-name> <hash-commit>, которая  создаст ветку, указывающую туда, куда ранее указывал master, тем самым делая потерянные коммиты вновь доступными.

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

Что касается сроков жизни журнала reflog, то это можно объяснить следующим образом: garbage collector ищет объекты, на которые больше нет ссылок, и удаляет их из хранилища, при этом огромную роль играет журнал операций reflog (ссылки в нем имеют ограниченный срок жизни, по умолчанию 30 дней для объекта без ссылок и 90 дней для объекта со ссылками). Garbage collector сначала удаляет из журнала reflog все ссылки с истекшим «сроком годности», а затем удаляет из хранилища объекты, на которые больше нет ссылок. Такая архитектура дает разработчику 30 дней, чтобы восстановить «ненужный» коммит, который в противном случае будет окончательно удален из репозитория по истечении этого срока.
источник
Библиотека программиста
10 заповедей разработчиков ПО в области тестирования

Десятка простых принципов разработчиков программного обеспечения в области тестирования. О читаемости кода и проведении юнит-тестов, принципах DRY, YAGNI и KISS.

https://proglib.io/sh/y12HatIGML
источник
Библиотека программиста
Поведенческий паттерн проектирования, который позволяет добавлять в программу новые операции, не изменяя классы объектов, над которыми эти операции могут выполняться. Его также можно использовать совместно с Итератором. О каком паттерне идёт речь?
Анонимная викторина
39%
Компоновщик (Composite)
43%
Посетитель (Visitor)
6%
Снимок (Memento)
6%
Нет правильного ответа
7%
Посмотреть результаты
Проголосовало: 2631
источник
2020 June 05
Библиотека программиста
Правильным ответом является паттерн Посетитель (Visitor). Несмотря на то, что на канале ранее был пост про данный паттерн, многие ответили Компоновщик, что не совсем правильно, ведь это структурный паттерн проектирования, который позволяет сгруппировать множество объектов в древовидную структуру, а затем работать с ней так, как будто это единичный объект.

Важным моментом является то, что вы можете выполнить какое-то действие над всем деревом Компоновщика при помощи Посетителя.

Что касается связи Посетителя и Итератора, то первый можно использовать совместно с последним. Итератор будет отвечать за обход структуры данных, а Посетитель — за выполнение действий над каждым её компонентом.
источник
Библиотека программиста
​​Фильм Microsoft Build 2020: главные новинки IT-индустрии

Рассказ и видео о последних новинках от компании Microsoft. Суперкомпьютеры, безопасное машинное обучение, Learn TV, Fluid Framework и многое другое – будьте в курсе инноваций!

https://proglib.io/sh/RSsI59cBpz
источник
Библиотека программиста
Git предоставляет возможность запуска пользовательских скриптов в случае возникновения определённых событий. Данные скрипты называются ... и разделяются на клиентские (инициируются слиянием/созданием коммита) и серверные (инициируются сетевыми операциями)
Анонимная викторина
10%
Политиками
6%
Атрибутами
77%
Хуками (Hooks)
2%
Нет правильного ответа
6%
Посмотреть результаты
Проголосовало: 3044
источник
2020 June 06
Библиотека программиста
Действительно, запуск пользовательских скриптов в случае возникновения определённых событий называется хуками или перехватчиками.

Хуки могут быть использованы для автоматизации и обычно они являются первой остановкой для выполнения каких-либо задач после действий Git. Также они делятся на серверные и клиентские.

Клиентские хуки запускается до любого другого хука и до коммита любых изменений. Из них самым распространённым является хук pre-commit.

Этот хук является лучшим вариантом для добавления тестов и прочих проверок вашего кода. Например, вы пишите на JS и хотите перед выполнением коммита выявлять возможные ошибки в коде с помощью JSHint.

Для этого вам необходимо переименовать файл hooks/pre-commit.sample на hooks/pre-commit в вашем проекте и изменить содержимое на:
#!/bin/sh
jshint index.js

Теперь каждый коммит будет сопровождаться предпроверкой на ошибки в коде.

Серверные хуки выполняются на стороне сервера и делятся на подкатегории:
pre-receive и post-receive: выполняются на сервере, который получает задачу push, для выполнения таких действий, как проверка целостности проекта и развертывание;
update (хуки обновления): похожи на pre-receive, но работают по принципу ветвления для выполнения кода перед принятием каждой ветки.

Подробнее узнать у хуках и посмотреть полный список можно в разделе «Хуки в Git»: https://proglib.io/w/7d5747eb
источник
Библиотека программиста
Порождающий паттерн проектирования, который позволяет создавать семейства связанных объектов, не привязываясь к конкретным классам создаваемых объектов. Он также может быть использован вместо Фасада для того, чтобы скрыть платформо-зависимые классы.
Анонимная викторина
23%
Фабричный метод
12%
Прототип
60%
Абстрактная фабрика
1%
Нет правильного ответа
4%
Посмотреть результаты
Проголосовало: 2752
источник
2020 June 07
Библиотека программиста
Речь идёт о паттерне Абстрактная фабрика (англ. Abstract Factory). Данный паттерн применяется, как правило, в двух случаях:

1. Когда бизнес-логика программы должна работать с разными видами связанных друг с другом продуктов, не завися от конкретных классов продуктов. Абстрактная фабрика скрывает от клиентского кода подробности того, как и какие конкретно объекты будут созданы. Но при этом клиентский код может работать со всеми типами создаваемых продуктов, поскольку их общий интерфейс был заранее определён.

2. Когда в программе уже используется Фабричный метод, но очередные изменения предполагают введение новых типов продуктов. В оптимальной программе каждый класс отвечает только за одну вещь. Если класс имеет слишком много фабричных методов, они способны затуманить его основную функцию. Поэтому целесообразно вынести всю логику создания продуктов в отдельную иерархию классов, применив Абстрактную фабрику.
источник
Библиотека программиста
​​print(f"Hello, {username}")

Мы во ВКонтакте проводим конкурс для самых креативных из вас на лучший мем для статьи с нашего сайта. Правила простые:

1. Вы берете произвольную статью с сайта, не утратившую свою актуальность
2. Делаете для нее мем.
3. Отправляете в предложенные новости ссылку и вашу картинку
4. Мы оформляем и публикуем.

Автор картинки с публикацией с наибольшим охватом среди всех нам отправленных получит 10 тысяч рублей. Поехали: https://vk.com/proglib

Срок окончания конкурса — 7 июля 2020 года.
источник