Size: a a a

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

2020 July 05
Библиотека программиста
​​🕵 Где программисту искать удаленную работу?

Рассмотрели 12 международных и российских площадок для поиска удалённой работы: ссылки, различия в механике поиска, плюсы и минусы.

https://proglib.io/sh/30rRSxjemG
источник
Библиотека программиста
В вашей программе класс имеет слишком много методов, которые просто делегируют работу другим объектам. Как называется приём рефакторинга, который предлагает удалить эти методы и заставить клиента вызывать конечные методы напрямую?
Анонимная викторина
14%
Введение внешнего метода
4%
Перемещение поля
76%
Удаление посредника
5%
Посмотреть результаты
Проголосовало: 3007
источник
Библиотека программиста
Для объяснения обратимся к понятиям сервера и делегата, которые вводились при рассмотрении сокрытия делегирования. Удаление посредника применяется, когда: класс-сервер ничего не делает сам по себе, создавая бесполезную сложность; каждый раз, когда в делегате появляется новая функциональная возможность, для неё необходимо создавать делегирующий метод в классе-сервере, что бывает накладно при большом количестве изменений.

Алгоритм рефакторинга:
1. Создайте геттер для доступа к объекту класса-делегата из объекта класса-сервера.
2. Замените вызовы делегирующих методов класса-сервера прямыми вызовами методов класса-делегата.
Telegram
Библиотека программиста
Приём рефакторинга, включающий создание нового метода в классе А, который бы делегировал вызов объекту B, называется сокрытием делегирования. Он приводит к тому, что клиент перестаёт знать о классе В и зависеть от него.

Для описания причин использования данного приёма рефакторинга необходимо определиться с понятиями: сервер — это объект, к которому клиент имеет непосредственный доступ; делегат — это конечный объект, который содержит функциональность, нужную клиенту. Цепочка вызовов появляется тогда, когда клиент запрашивает у одного объекта другой, потом второй объект запрашивает еще один и т. д. Такие последовательности вызовов означают, что клиент связан с навигацией по структуре классов. Любые изменения промежуточных связей означают необходимость модификации клиента.

Данный приём скрывает делегирование от клиента. Чем меньше клиентский код знает подробностей о связях между объектами, тем проще будет впоследствии вносить изменения в программу. Однако если требуется создать слишком много делегирующих методов…
источник
2020 July 06
Библиотека программиста
Теперь bug hunter'ы могут помочь сервису, которым пользуются они сами, друзья, близкие и мама с бабушкой — Ozon первым среди российских e-commerce компаний запустил собственную bug bounty программу.

За найденные на сайте уязвимости можно получить до 120 000 ₽.  Отправлять репорты можно на HackerOne: hackerone.com/ozon. Удачной охоты!
источник
Библиотека программиста
В каких состояниях могут находиться файлы в Git?
Анонимная викторина
19%
Локальном и удалённом
71%
Зафиксированном, изменённом и подготовленном
6%
Текущем и рабочем
5%
Посмотреть результаты
Проголосовало: 4643
источник
2020 July 07
Библиотека программиста
​​🤖 Робот в лабиринте: обрабатываем в Python очереди с приоритетом

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

https://proglib.io/sh/yP1hrAp9Yg
источник
Библиотека программиста
Ваш служебный класс не содержит метода, который вам нужен, но у вас нет возможности добавить метод в этот класс. Как называется приём рефакторинга, при котором добавляется метод в клиентский класс, а объект служебного класса передаётся в него аргументом?
Анонимная викторина
49%
Введение внешнего метода
5%
Перемещение метода
38%
Встраивание класса
7%
Посмотреть результаты
Проголосовало: 2837
источник
2020 July 08
Библиотека программиста
Введение внешнего метода может применяться, когда, по вашему мнению, определённый код намного лучше смотрится и работает внутри нового метода в классе, но возможность добавить такой метод в класс у вас отсутствует (например, потому что класс находится в сторонней библиотеке). Кроме того, данный приём рефакторинга выгоден в случаях, когда участок кода, который вы хотите перенести в метод, повторяется несколько раз в различных местах программы.

Так как вы передаёте объект служебного класса в параметры нового метода, у вас есть доступ ко всем его полям. Вы можете делать внутри этого метода практически всё, что вам может потребоваться, как если бы метод был частью служебного класса.

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

Алгоритм рефакторинга:
1. Создайте новый метод в клиентском классе.
2. В этом методе создайте параметр, в который будет передаваться объект служебного класса. Если этот объект может быть получен из клиентского класса, параметр можно не создавать.
3. Извлеките проблемные участки кода в этот метод и замените их вызовами метода.
4. Оставьте в комментарии к этому методу метку с призывом поместить этот метод в служебный класс, если такая возможность появится в дальнейшем.
источник
Библиотека программиста
Вы разработчик, который думает о переходе в область Data Science? Тогда вам будет интересно прийти на онлайн-митап, посвященной этой теме.
На нем мы поделимся опытом перехода из программистов в дата сайентисты, расскажем о том, что вас ждет и на какие грабли лучше не наступать.
Если вам интересно, о чем весь этот хайп про data science – ждем вас на митапе в понедельник 29 июня в 18-00 (время московское): https://skillfactoryschool.timepad.ru/event/1343117
источник
Библиотека программиста
С помощью какой команды Git можно сравнить один и тот же файл в двух разных ветках?
Анонимная викторина
3%
git clone <ветка-1> <ветка-2> -- <имя-файла>
7%
git log show <имя-файла> <ветка-1> <ветка-2>
86%
git diff <ветка-1> <ветка-2> -- <имя-файла>
3%
Посмотреть результаты
Проголосовало: 4127
источник
2020 July 09
Библиотека программиста
​​📝 «Помедленнее, я записываю»: туториал по системным логам Linux

Из этой статьи вы узнаете, что такое журналы Linux, какие инструменты их генерируют и где эти журналы хранятся. Рассмотрим, как и зачем искать и читать результаты journald и syslog, а также о том, как собрать логи нескольких серверов в одном месте.

https://proglib.io/sh/uMX3axsw4p
источник
Библиотека программиста
У вас в коде результат выражения помещается в локальную переменную для дальнейшего использования. Приём рефакторинга, при котором выражения выделяются в метод и возвращают результат из него, а использование переменной заменяется вызовом метода, называется
Анонимная викторина
3%
Заменой алгоритма
83%
Заменой переменной вызовом метода
8%
Заменой метода объектом методов
6%
Посмотреть результаты
Проголосовало: 3023
источник
2020 July 10
Библиотека программиста
С помощью какой команды Git можно создать ветку и сразу переключиться на нее?
Анонимная викторина
19%
git branch <newbranchname>
67%
git checkout -b <newbranchname>
8%
git checkout <newbranchname>
3%
git merge <newbranchname>
3%
Посмотреть результаты
Проголосовало: 4616
источник
2020 July 12
Библиотека программиста
В вашем служебном классе отсутствуют методы, которые вам нужны, но добавить их в класс вы не можете. Приём рефакторинга, при котором создаётся новый класс, содержащий эти методы, и делается наследником служебного класса, либо его обёрткой, называется ...
Анонимная викторина
51%
Введением локального расширения
40%
Введением внешнего метода
4%
Удалением посредника
5%
Посмотреть результаты
Проголосовало: 2625
источник
Библиотека программиста
Введение локального расширения применяется, когда в используемом вами классе нет нужных вам методов или вы не можете их туда добавить.

Вы можете либо создать подкласс из интересующего класса, который будет содержать новые методы, и наследовать всё остальное из родительского класса, либо создать класс-обёртку, который будет содержать все новые методы, а остальное делегировать связанному объекту служебного класса (этот путь более трудоёмкий, так как вам нужно будет иметь в довесок не только код поддержания связи между обёрткой и служебным объектом, но и большое количество простых делегирующих методов, которые будут эмулировать публичный интерфейс служебного класса).

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

Алгоритм рефакторинга:
1. Создайте новый класс-расширение (два варианта описаны выше).
2. Создайте конструктор, использующий параметры конструктора служебного класса.
3. Создайте альтернативный «конвертирующий» конструктор, который принимает в параметрах только объект оригинального класса. Это поможет в подстановке расширения вместо объектов оригинального класса.
4. Создайте в классе новые расширенные методы. Переместите в него внешние методы из других классов, либо удалите их, если расширение уже имеет такой функционал.
5. Замените использование служебного класса новым классом-расширением в тех местах, где нужна расширенная функциональность.
источник
2020 July 13
Библиотека программиста
10 лучших инструментов облачного мониторинга: плюсы и минусы

Преимущества и недостатки 10 инструментов мониторинга облачных приложений – опенсорсных и проприетарных программ, запускаемых в вебе или локально. Zabbix, Datadog, New Relic и другие.

https://proglib.io/sh/nMg45qN9df
источник
Библиотека программиста
🔢 Люди с развитым логическим складом ума чаще других подвержены самокритике. Многим это мешает найти место, где можно реализовать свой потенциал по полной. Проявив инциативу, вы поможете не только другу, но и себе.

💰 Если посоветовать разработчика на открытую вакансию в VK и он пройдёт испытательный срок, вы получите 100 000 ₽. Для этого до 28 июля нужно отправить короткий рассказ о друге, свои контакты и резюме приятеля – он должен быть готов к собеседованию.

👨‍💻 Сейчас открыты вакансии для опытных разработчиков в бэкенде, фронтенде, iOS и Android. Есть места для специалистов по тестированию, ML и системному администрированию — уровня Middle и выше. Удачи!
источник
Библиотека программиста
Как выглядит команда Git, которая позволяет взять все коммиты из текущей ветки и в том же порядке применить их в конце переданной ветки? В терминологии Git данная команда реализует операцию перебазирования одной ветки относительно другой.
Анонимная викторина
6%
git branch <branchname>
7%
git checkout <branchname>
83%
git rebase <branchname>
3%
Посмотреть результаты
Проголосовало: 3537
источник
2020 July 14
Библиотека программиста
Митап «Образование в IT: чему стоит поучиться у бизнеса» — разбираемся в программах и курсах и планируем карьеру.
IT-компании запускают собственные программы обучения — чем они отличаются от университетских, кому могут быть полезны, зачем нужны бизнесу и дают ли гарантии получить работу? Ответить на эти и другие вопросы помогут руководители образовательных проектов и IT-подразделений Ozon, Яндекса, Mail.ru, Сбербанка и самый известный хедхантер рунета Алена Владимирская. Встречаемся уже в этот четверг, 16 июля в 18:00 на онлайн-митапе «Образование в IT».
Регистрация
источник
Библиотека программиста
В вашей программе есть много одинаковых экземпляров одного класса, которые можно заменить одним объектом. Как называется приём рефакторинга, при котором одинаковые объекты превращаются в один объект-ссылку?
Анонимная викторина
7%
Замена ссылки значением
75%
Замена значения ссылкой
11%
Замена простого поля объектом
7%
Посмотреть результаты
Проголосовало: 3247
источник