Size: a a a

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

2020 May 19
Библиотека программиста
На каких языках программирования вы пишите больше всего?
Анонимный опрос
22%
Python
14%
Java
21%
JavaScript
10%
C++
11%
C#
7%
PHP
3%
Go
2%
Swift
9%
Другой
Проголосовало: 9592
источник
Библиотека программиста
Давайте вместе поможем читателю выбрать между длительным саморазвитием или прохождением платных курсов в надежде на их качество. Или проблема в том, что необходимо комбинировать оба подхода? Поделитесь мнением.

https://proglib.io/w/fbb3a6df
источник
Библиотека программиста
Структурный паттерн проектирования,  позволяющий сгруппировать множество объектов в древовидную структуру, а затем работать с ней так, как будто это единичный объект. О каком паттерне идет речь?
Анонимная викторина
6%
Адаптер
65%
Компоновщик
5%
Мост
10%
Декоратор
5%
Нет правильного ответа
9%
Посмотреть результаты
Проголосовало: 3900
источник
2020 May 20
Библиотека программиста
Речь идёт о структурном паттерне Компоновщик, который позволяет сгруппировать множество объектов в древовидную структуру, а затем работать с ней так, как будто это единичный объект.

Применять Компоновщик имеет смысл только тогда, когда основная модель программы может быть структурирована в виде дерева.

Паттерн применяется в том случае, когда:
✔️Необходимо представить древовидную структуру объектов.
✔️Клиентский код должен единообразно трактовать простые и составные объекты.
источник
Библиотека программиста
У вас имеются изменения в файле <filename>, при этом эти изменения еще не подготовлены к добавлению в следующий коммит, а значит файл находится в состоянии not staged. Как получить состояние файла, которое было зафиксировано на момент последнего коммита?
Анонимная викторина
36%
git diff <filename>
32%
git checkout -- <filename>
17%
git reset -- <filename>
8%
Нет правильного ответа
7%
Посмотреть результаты
Проголосовало: 3696
источник
2020 May 21
Библиотека программиста
Вы удалили файл и хотите его восстановить или сделали изменения в файле, которые хотите отменить. То есть необходимо вернуть состояние файла или состояние всего проекта к моменту, в котором они были зафиксированы в последнем коммите.

Если вы еще не добавили файл в индекс (не выполнили git add), то для восстановления файла необходимо выполнить git checkout -- <filename>.

Команда git status покажет, что измененные файлы теперь отсутствуют.

Если изменения уже подготовлены командой git add, то в этом случае для сброса файла в исходное состояние необходимо убрать файл из подготовленного состояния к фиксации в коммите, то есть перевести файл из состояния staged командой git reset HEAD <filename> и сбросить файл к исходному состоянию:
$ git checkout -- <filename>
источник
Библиотека программиста
​​Кто такой Deno и почему о нём все говорят?

🦕 Deno – это новая runtime-среда для JavaScript и TypeScript от создателя Node.js. Многие считают, что это крутая штука. Вкратце объясняем, что же есть в Deno такого хорошего.

https://proglib.io/sh/pNqQ80n1cv
источник
Библиотека программиста
Структурный паттерн проектирования, разделяющий один или несколько классов на две отдельные иерархии — абстракцию и реализацию, позволяя изменять их независимо друг от друга. О каком паттерне идёт речь?
Анонимная викторина
27%
Декоратор
49%
Мост
7%
Легковес
9%
Нет правильного ответа
8%
Посмотреть результаты
Проголосовало: 3365
источник
2020 May 22
Библиотека программиста
Речь идёт о паттерне Мост. Чтобы понять его суть, необходимо определиться с понятиями абстракция и реализация. Абстракция (или интерфейс) — это образный слой управления чем-либо. Он не делает работу самостоятельно, а делегирует её слою реализации (иногда называемому платформой).

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

Если говорить о реальных программах, то абстракцией может выступать графический интерфейс программы (GUI), а реализацией — низкоуровневый код операционной системы (API), к которому графический интерфейс обращается по реакции на действия пользователя.

Здесь вырисовывается два вектора развития программы: использование нескольких видов GUI и поддержка многих видов API. Такая программа может выглядеть как один большой клубок кода, в котором намешаны условные операторы слоёв GUI и API. Можно попытаться структурировать этот хаос, создав для каждой вариации интерфейса-платформы свои подклассы. Но такой подход приведёт к росту классов комбинаций, и с каждой новой платформой их будет всё больше.

Данную проблему можно решить с помощью применения паттерна Мост, который предлагает распутать этот код, разделив его на две части: абстракцию (слой графического интерфейса приложения) и реализацию (слой взаимодействия с операционной системой).

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

Таким образом, вы сможете изменять графический интерфейс приложения, не трогая низкоуровневый код работы с операционной системой. И наоборот, вы сможете добавлять поддержку новых операционных систем, создавая подклассы реализации, без необходимости менять классы графического интерфейса.
источник
Библиотека программиста
Многие из нас пользуются такими сервисами Яндекса, как Почта и Диск. Теперь они адаптированы для организаций. Профит очевиден:

🗂 Разделение личной и рабочей сфер. Файлы и письма надёжно защищены.
📦 0.2 – 2 ТБ пространства каждому сотруднику: сами файлы и история изменений за 90 дней, нет рекламы.
📯 Под рукой адреса всех коллег – легко составить расписание мероприятий. Можно подключать сколько угодно ящиков, отсутствует реклама.
👷♂ Круглосуточная служба поддержки.

Сейчас малому и среднему бизнесу приходится нелегко. Поэтому компании с числом сотрудников до 100 человек при подключении до 1 июня могут бесплатно пользоваться сервисами до октября. Вся информация здесь: https://proglib.io/w/794d2ee8
источник
Библиотека программиста
Команда git log -- <имя файла> показывает историю коммитов по этому файлу. Как узнать, что именно изменялось в каждом коммите?
Анонимная викторина
35%
git diff <имя_файла>
41%
git log -p <имя_файла>
13%
git show <имя_файла>
3%
Нет правильного ответа
8%
Посмотреть результаты
Проголосовало: 3002
источник
Библиотека программиста
​​🤖 Бот VK для отрисовки математических формул в диалогах

Об опыте расширения возможностей Вконтакте через создание бота на VK API. Задача: автоматическая отрисовка математических формул в LaTeX-разметке при обмене ими в диалогах VK.

https://proglib.io/sh/GqfVaxNZYr
источник
2020 May 23
Библиотека программиста
Во вчерашней викторине правильным ответом является команда git log -p -- <имя файла>, которая позволит увидеть коммиты конкретного файла с diff-ами к каждому изменению.

Неудивительно, что многие подписчики выбрали в качестве ответа 1 вариант (git diff <имя файла>), ведь данные команды действительно немного перекрываются, но ни одна из них не является подмножеством другой.

git log использует git diff для некоторых форм своего отображения и, таким образом, имеет те же параметры настройки, как при использовании git diff.
источник
Библиотека программиста
Поведенческий паттерн проектирования, позволяющий последовательно обходить элементы составных объектов, не раскрывая их внутреннего представления. О каком паттерне идёт речь?
Анонимная викторина
26%
Посетитель
11%
Посредник
57%
Итератор
1%
Нет правильного ответа
5%
Посмотреть результаты
Проголосовало: 3436
источник
2020 May 24
Библиотека программиста
Речь идёт о паттерне Итератор. Его суть основана на такой структуре данных, как коллекция.

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

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

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

Добавляя всё новые алгоритмы в код коллекции, вы понемногу размываете её основную задачу, которая заключается в эффективном хранении данных. Некоторые алгоритмы могут быть и вовсе слишком «заточены» под определённое приложение и смотреться дико в общем классе коллекции.

Идея паттерна Итератор состоит в том, чтобы вынести поведение обхода коллекции из самой коллекции в отдельный класс.

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

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

Итератор стоит применять, когда:
✔️Есть сложная структура данных, и вы хотите скрыть от клиента детали её реализации (из-за сложности или вопросов безопасности)
✔️Необходимо иметь несколько вариантов обхода одной и той же структуры данных
✔️Хочется иметь единый интерфейс обхода различных структур данных
источник
Библиотека программиста
​​ТОП-10 книг по PHP: от новичка до профессионала

Наиболее высоко оцененные книги, посвященные языку PHP и PHP-фреймворкам. Расставлены в порядке возрастания сложности, обобщены указанные читателями преимущества и недостатки.

https://proglib.io/sh/D45sc1jNzU
источник
Библиотека программиста
NOP::Nuances of programming — интересный канал с образовательными статьями, курсами и тестами для программистов любого уровня!

Рекомендуем: @nuancesprog
источник
Библиотека программиста
Вы изменили два файла и хотите добавить их в разные коммиты, но случайно выполнили команду "git add ." и добавили в индекс оба. Как исключить из индекса один из них?
Анонимная викторина
27%
git commit --amend <filename>
36%
git reset HEAD <filename>
19%
git checkout -- <filename>
9%
Нет правильного ответа
9%
Посмотреть результаты
Проголосовало: 3947
источник
2020 May 25
Библиотека программиста
Операция, о которой идет речь в викторине, называется отменой индексации файла. Функционал данной команды довольно сложен, поэтому зачастую самой распространенной командой является:
$ git reset HEAD <filename>,
где HEAD — это указатель на текущую ветку, которая, в свою очередь, является указателем на последний коммит, сделанный в этой ветке. Это значит, что HEAD будет родителем следующего созданного коммита. Как правило, самое простое считать HEAD снимком вашего последнего коммита.
источник
Библиотека программиста
🔝 Топовый Вечный! По смехотворной цене! 🔝

8 ГБ RAM / 4x4.5 ГГц CPU / 80 ГБ NVMe / 500 Мбит/сек / anti-DDoS

Размещение в лучшем московском дата-центре Datapro, подключение к каналу 500 Мбит/сек, выделенный IPv4 адрес, защита от DDoS.

🔥Спешите узнать подробней и заказать
https://proglib.io/w/8a80dd28
источник