Size: a a a

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

2020 May 25
Библиотека программиста
​​Сравнение 5 команд Git: revert, checkout, reset, merge и rebase

Некоторые команды Git дают схожие результаты. Важно понимать разницу и применять правильные инструменты. Объясняем отличия между revert, checkout и reset, а также сравниваем merge и rebase.

https://proglib.io/sh/jJwUoquHax
источник
Библиотека программиста
Паттерн Фасад похож на паттерн ... тем, что замещает сложную подсистему и может сам её инициализировать. Но в отличие от паттерна Фасад, паттерн ... имеет тот же интерфейс, что его служебный объект, благодаря чему их можно взаимозаменять.
Анонимная викторина
24%
Адаптер
39%
Декоратор
31%
Заместитель
1%
Нет правильного ответа
5%
Посмотреть результаты
Проголосовало: 3283
источник
2020 May 26
Библиотека программиста
Речь идет о паттерне Заместитель (англ. Proxy), который представляет из себя структурный паттерн проектирования, позволяющий подставлять вместо реальных объектов специальные объекты-заменители. Эти объекты перехватывают вызовы к оригинальному объекту, позволяя сделать что-то до или после передачи вызова оригиналу.

Фасад (англ. Facade) похож на Заместитель тем, что замещает сложную подсистему и может сам её инициализировать. Но в отличие от Фасада, Заместитель имеет тот же интерфейс, что его служебный объект, благодаря чему их можно взаимозаменять.

Применяйте Заместитель, когда:
✔️У вас есть тяжёлый объект, который загружает данные из файловой системы или базы данных
✔️В программе есть разные типы пользователей, и вам хочется защищать объект от неавторизованного доступа
✔️Настоящий сервисный объект находится на удалённом сервере
✔️Требуется хранить историю обращений к сервисному объекту
✔️ Необходимо кешировать результаты запросов клиентов и управлять их жизненным циклом
источник
Библиотека программиста
​​Безопасная загрузка изображений в веб-приложении на Django

🖼 💾 Почти в любом веб-приложении есть необходимость принимать от пользователей картинки. В Django это можно делать лаконично и безопасно, используя ImageField и Pillow.

https://proglib.io/sh/ZRT21hXxIM
источник
Библиотека программиста
​​Собрали все самое актуальное по Java в одной online программе с наставником, чтобы ты не терял время, а быстрее устроился на работу в IT. У нас ты изучишь востребованный стек технологий и получишь опыт коммерческой разработки в проекте. Оплата только после трудоустройства. А если не найдешь работу, то обучение за наш счет.

Пройти тестовое задание 🙋‍♂️👉 https://clck.ru/Ne49c

👇Что ждет студента:
1. Подготовка с личным ментором online по индивидуальной программе за 6 месяцев
2. Жесткий контроль знаний на каждом этапе
3. Обучение востребованному на рынке стеку технологий: Java Core, Maven, Git, Junit, Tomcat, Servlet, Spring MVC, Core, Security, Hibernate
4. Отработка знаний в настоящем бизнес проекте, который дает опыт и строчку для резюме
5. Общение с одногруппниками и студентами-разработчиками других потоков групповом чате slack (уже более 1500 участников)
6. Быстрое карьерное и финансовое развитие за счет программы поддержки на 2 года: митапы, мастер-классы, закрытые лекции со спикерами и offline интенсивы
7. Гарантированное трудоустройство и первая зарплата от 100 000 рублей

Требования к кандидату:
• Обучение минимум 25 часов в неделю
• Проживание или готовность к переезду в Москву для трудоустройства
источник
2020 May 27
Библиотека программиста
Поведенческий паттерн проектирования, который позволяет передавать запросы последовательно по цепочке обработчиков. Каждый последующий обработчик решает, может ли он обработать запрос сам и стоит ли передавать запрос дальше по цепи. Какой это паттерн?
Анонимная викторина
7%
Компоновщик (Composite)
84%
Цепочка обязанностей (Chain of Command)
5%
Наблюдатель (Observer)
1%
Нет правильного ответа
3%
Посмотреть результаты
Проголосовало: 2770
источник
Библиотека программиста
Речь идёт о паттерне Цепочка обязанностей (англ. CoR,  Chain of Command,  Chain of Responsibility), который представляет из себя поведенческий паттерн проектирования, позволяющий передавать запросы последовательно по цепочке обработчиков. Каждый последующий обработчик решает, может ли он обработать запрос сам и стоит ли передавать запрос дальше по цепи.

Данный паттерн целесообразно применять, когда:
✔️Программа должна обрабатывать разнообразные запросы несколькими способами, но заранее неизвестно, какие конкретно запросы будут приходить и какие обработчики для них понадобятся
✔️Необходимо, чтобы обработчики выполнялись один за другим в строгом порядке
✔️Набор объектов, способных обработать запрос, должен задаваться динамически
источник
Библиотека программиста
📈 Растёт число безработных, экономисты пророчат масштабный финансовый кризис. Но кое-кто становится даже сильнее. 💪 Так, Netflix отчитались об увеличении аудитории на 15,8 млн человек. Секрет успеха не только в стриминге – компания превосходно управляет своими данными.

📢 О тонкостях работы с крупными инфраструктурами, облачными решениями и свежими технологиями увлекательно повествует канал @SelectelNews, структурируя опыт в виде общедоступной базы знаний📕. Ещё там регулярно проводятся конкурсы, публикуются вакансии и прочие бонусы. Одним словом – рекомендуем: t.me/SelectelNews
источник
2020 May 28
Библиотека программиста
Как вы поддерживаете и развиваете свои профильные знания в онлайне?
Анонимный опрос
17%
Читаю документацию
18%
Читаю профильную литературу
23%
Читаю статьи на Хабре/Medium/Proglib
8%
Изучаю исходники кода в github/bitbucket/gitlab
11%
Смотрю онлайн-митапы/конференции
1%
Участвую в хакатонах/конкурсах
11%
Занимаюсь своими пет-проектами
7%
Работы хватает, ничего не делаю
3%
Другое
Проголосовало: 7089
источник
Библиотека программиста
Команда Git, позволяющая забрать коммит другой ветки и вставить (влить) в текущую. Данная команда применяет к дереву проекта изменения, которые были внесены указанным коммитом.
Анонимная викторина
6%
git revert <hash-commit>
59%
git cherry-pick <hash-commit>
23%
git rebase <hash-commit>
5%
Нет правильного ответа
7%
Посмотреть результаты
Проголосовало: 3839
источник
2020 May 29
Библиотека программиста
Речь идет о команде git cherry-pick <hash-commit>, которая приходит на помощь, когда возникает необходимость перенести коммит из одной ветки в другую без полного слияния с той веткой. Она применяет к дереву проекта изменения, которые были внесены указанным коммитом.

В самом простом варианте команда принимает в качестве параметра идентификатор коммита (тот самый <hash-commit>) в другой ветке.

После выполнения команды берется коммит с идентификатором <hash-commit> из ветки, в которой он был сделан, и изменения этого коммита будут вставлены в текущую ветку как новый коммит.
источник
Библиотека программиста
​​💫 Инструментирование в Go

Рассказываем о методах инструментирования Go-кода, контекстной трассировке и специальном средстве лаконичного и гибкого инструментирования gtrace.

https://proglib.io/sh/l15apnJB4W
источник
Библиотека программиста
Структурный паттерн проектирования,  позволяющий вместить бóльшее количество объектов в отведённую оперативную память. Данный паттерн экономит память, разделяя общее состояние объектов между собой, вместо хранения одинаковых данных в каждом объекте.
Анонимная викторина
12%
Одиночка (Singleton)
13%
Фасад (Facade)
63%
Легковес (Flyweight)
4%
Нет правильного ответа
7%
Посмотреть результаты
Проголосовало: 3186
источник
2020 May 30
Библиотека программиста
Речь идет о паттерне Легковес (англ. Flyweight), который представляет собой структурный паттерн проектирования, позволяющий вместить бóльшее количество объектов в отведённую оперативную память. Легковес экономит память, разделяя общее состояние объектов между собой, вместо хранения одинаковых данных в каждом объекте.

Легковес можно сравнить с Фасадом, ведь он показывает, как создавать много мелких объектов, а Фасад показывает, как создать один объект, который отображает целую подсистему.

Очевидно, что эффективность данного паттерна во многом зависит от того, как и где он используется. Применяйте этот паттерн, когда выполнены все перечисленные условия:
– в приложении используется большое число объектов, из-за чего получаем высокие расходы оперативной памяти;
– бóльшую часть состояния объектов можно вынести за пределы их классов;
– большие группы объектов можно заменить относительно небольшим количеством разделяемых объектов, поскольку внешнее состояние вынесено.
источник
Библиотека программиста
​​JavaScript для Python-программистов: познание через сравнение

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

https://proglib.io/sh/01hKPebIUc
источник
Библиотека программиста
Команда Git, отменяющая изменения, которые были внесены в указанный коммит, создавая новый коммит и фактически не удаляя предыдущие коммиты. Данная команда идеально подходит для опубликованных изменений, т.к. сохраняет реальную историю репозитория.
Анонимная викторина
21%
git rebase <hash-commit>
59%
git revert <hash-commit>
10%
git checkout <hash-commit>
4%
Нет правльного ответа
6%
Посмотреть результаты
Проголосовало: 3632
источник
2020 May 31
Библиотека программиста
Правильным ответом является команда git revert <hash-commit>, ведь она является полной противоположностью git cherry-pick, т.к. создет «антикоммит» для указанного коммита, таким образом отменяя изменения, внесенные в нем.

Более простой вариант выполнения данной команды:
$ git revert HEAD
Команда revert означает возврат состояния к HEAD — последнему коммиту в ветке.

Если открытие редактора не требуется, к исходной команде добавляется --no-edit:
$ git revert HEAD --no-edit
источник
Библиотека программиста
Отличие паттерна Декоратор и паттерна ... в том, что первый улучшает другой объект без изменения его интерфейса, а второй меняет интерфейс существующего объекта. Причём Декоратор поддерживает рекурсивную вложенность, чего не скажешь о паттерне ... .
Анонимная викторина
13%
Компоновщик (Composite)
28%
Заместитель (Proxy)
51%
Адаптер (Adapter)
2%
Нет правильного ответа
5%
Посмотреть результаты
Проголосовало: 2906
источник
2020 June 01
Библиотека программиста
В викторине правильным ответом является паттерн Адаптер (англ. Adapter), т.к. именно он создаёт объект-переводчик, который трансформирует интерфейс или данные одного объекта в такой вид, чтобы он стал понятен другому объекту.

Иными словами, он позволяет объектам с несовместимыми интерфейсами работать вместе.

Применяйте Адаптер, когда:
✔️Хотите использовать сторонний класс, но его интерфейс не соответствует остальному коду приложения
✔️Необходимо использовать несколько существующих подклассов, но в них не хватает какой-то общей функциональности, причём расширить суперкласс вы не можете
источник
Библиотека программиста
Знаком ли вам термин форензика?
Анонимный опрос
27%
Не знаком, и неинтересно
61%
Не знаком, но интересно изучить или получить информацию
10%
Занимаюсь информационной безопасностью время от времени
2%
Да, это моя специализация, занимаюсь форензикой
Проголосовало: 2609
источник