Книги для программистов
55.1K subscribers
1.36K photos
283 videos
24 files
1.23K links
Книги по программированию, библиотека электронных книг для разработчиков.


По всем вопросам @evgenycarter

РКН clck.ru/3Ko9cz
Download Telegram
Как работает HashMap?

Один из популярнейших вопросов, потому что содержит много нюансов. Лучше всего подготовиться к нему помогает чтение исходного кода HashMap. Реализация подробно рассмотрена во множестве статей, например на хабре.

Нюансы которые стоит повторить и запомнить:
🔘 Общий принцип: внутренний массив table, содержащий бакеты (корзины) – списки элементов с одинаковыми пересчитанными хэш-суммами;
🔘 Пересчет хэш-суммы для умещения int индексов в capacity ячейках table;
🔘 rehash – удвоение размера table при достижении threshold (capacity*loadFactor) занятых бакетов;
🔘 Невозможность сжать однажды раздувшийся table;
🔘 Два способа разрешения коллизий: используемый в HashMap метод цепочек и альтернатива – открытая адресация;
🔘 Варианты для многопоточного использования: пересинхронизированная Hashtable и умная ConcurrentHashMap;
🔘 Оптимизация Java 8: превращение списка в бакете в дерево при достижении 8 элементов – при большом количестве коллизий скорость доступа растет с O(n) до O(log(n));
🔘 Явное использование бакета 0 для ключа null;
🔘 Связь с HashSetHashMap, в котором используются только ключи;
🔘 Нет гарантий порядка элементов;

Обсуждая этот вопрос на интервью вы обязательно затронете особенности методов equals/hashCode. Возможно придется поговорить об альтернативных хранилищах ключ-значение – TreeMap, LinkedHashMap.
👍15👎2
Forwarded from Python академия
Потоковый ввод

Вы можете обрабатывать ввод от пользователя потоком. В таком случае для завершения надо воспользоваться специальной "командой" на Windows — Ctrl + D. Запустить потоковый ввод можно через библиотеку sys и метод stdin.

Если требуется получить и тут же обработать строку, то так и пишем: sys.stdin

Если надо в начале прочитать весь потоковый ввод, а затем обработать, то sys.stdin.readlines()

На картинке представлено 2 варианта.

Подписывайтесь на канал 👉@pythonofff
👍6👎1
Метод массива .filter()

Метод .filter() выполняет функцию обратного вызова для каждого элемента массива. Функция обратного вызова для каждого из элементов должна возвращать либо true, либо false.
Возвращаемый массив — это новый массив с любыми элементами, для которых функция обратного вызова возвращает значение true.

Подписывайтесь на канал 👉@coddy_academy

#javascript
👍5
A Tour of C++ (2nd Edition)
Автор: Bjarne Stroustrup (2018)

Знаменитое руководство создателя C++ Бьёрна Страуструпа получило второе издание, в котором рассматриваются современный стандарт языка С++17, встроенные функции, основы работы со стандартной библиотекой и содержится множество примеров по изучению сложных элементов языка.

В книге рассматриваются следующие темы:
✔️Функции;
✔️Типы данных;
✔️Указатели и ссылки;
✔️Структуры;
✔️Основы объектно-ориентированного программирования;
✔️Пространства имён;
✔️Обработка ошибок и исключений;
✔️Аллокаторы и многое другое.

Скачать книгу
👍8
Forwarded from Python академия
Как парсить сайты с авторизацией на python?

Для парсинга сайтов с авторизацией, Вы можете воспользоваться selenium

Посмотреть пример в онлайн редакторе.

Подписывайтесь на канал 👉@pythonofff
👍15👎6🔥1
Expert C++: Become a proficient programmer by learning coding best practices with C++17 and C++20's latest features
Авторы: Vardan Grigoryan, Shunguang Wu (2020)

C++ развивался на протяжении многих лет, и недавно стал доступен последний стандарт - C++20. Начиная с C++11, в C++ постоянно расширяется набор языковых функций. Данная книга является руководством по изучению тонкостей языка, методов, инструментов и новых функций, представленных в C++20, а также поможет вам применить их при создании современного и производительного ПО.

Во время чтения книги вы изучите:
✔️Управление памятью и низкоуровневое программирование на C++ для написания безопасных и стабильных приложений;
✔️Последние фичи C++20, такие как модули, концепты, диапазоны и корутины;
✔️Деббагинг и принципы тестирования;
✔️Разработку и реализацию приложений с графическим интерфейсом с использованием Qt5;
✔️Многопоточность и параллелизм для улучшения производительности.

Скачать книгу
👍21
Wolfenstein 3D / Blake Stone (1992/3)

Разработчик: id Software
Издатель: Apogee Software
Платформа: DOS

На основе предыдущего движка Catacomb был сделан серьёзный апгрейд на VGA-графику. И играть стало интереснее. Как в большинстве случаев с компанией id, исходники сравнительно легко читать, хотя ключевые части написаны на 16-битном ассемблере (в Doom уже такого не встретишь).

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

У Fabien можно найти инструкцию по компиляции исходников на современных инструментах.

Blake Stone, ответвление от Apogee на том же движке, вышло в 1993 году, за неделю до Doom. Можно представить, почему оно кануло в лету.

Исходники: github.com/id-Software/wolf3d
👍111
Forwarded from Frontend Советы
Как стать фронтенд-разработчиком? Пошаговый гид в мир фронтенда.

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

О чем в статье?
- Кто такой фронтендер и чем он занимается?
- С чего начать и что читать? Чек-лист обучения
- Какие трудности могут быть? Ошибки в начале пути
- Подготовка к собеседованию на Junior-разработчика

Читать статью

@frontend_sovet
👍10👎31🔥1😁1🤮1
Media is too big
VIEW IN TELEGRAM
20 Величайших Программистов Всех Времен

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

Гвидо Ван Россум
Дональд Эрвин Кнут
Джон Кармак
Джеймс Артур Гослинг
Никлаус Вирт
Дейвид Паттерсон
Алан Кей
Джон Маккарти
Стив Возняк
Эдгар Кодд
Томас Куртз
Грейс Хоппер
Джон Бакус
Кен Томпсон
Билл Гейтс
Брайан Керниган
Бйорн Строуструп
Линус Торвальдс
Тим Бернерс Ли
Денис Ритчи
Алан Тьюринг


@bookflow
👍68👎25🤔43👏3
Forwarded from Python академия
Избегайте неоправданных циклов с коллекциями

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

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

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

Подписывайтесь на канал 👉@pythonofff
👎26👍211😁1🤔1
HTML and CSS: Visual QuickStart Guide, 9th Edition
Автор: Joe Casabona (2020)

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

В книге рассматриваются следующие темы:
✔️Дизайн, структурирование и форматирование сайтов;
✔️Использование изображений, ссылок, стилей, таблиц и форм;
✔️Добавление медиа, визуальных эффектов и анимаций;
✔️Использование CSS для получения полного контроля над элементами, шрифтами, цветами и макетами;
✔️Максимальное использование сложных возможностей HTML5 и CSS3;
✔️Эффективное тестирование, отладка и публикация сайтов и приложений;
✔️Применение современных передовых методов обеспечения доступности и скорости реагирования, а также создание высокопроизводительных прогрессивных веб-приложений.

Скачать книгу
👍14
Machine Learning Refined
Авторы: Jeremy Watt, Reza Borhani, Aggelos Katsaggelos (2020)

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

Скачать книгу
👍72👏1
Forwarded from Python академия
Контекстные менеджеры

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍13
Mastering Python Networking
Автор: Eric Chou (2020)

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

Чему вы научитесь:
✔️Использовать библиотеки Python для взаимодействия с вашей сетью;
✔️Использовать фреймворки для создания API высокого уровня;
✔️Работать с PyTest и Unittest для тестирования;
✔️Узнаете, как создавать виртуальные сети в облаке AWS;
✔️Узнаете, как Jenkins можно использовать для автоматического развертывания изменений в вашей сети.

Скачать книгу
👍9
Infinity Ethical Hacking: Learn basic to advance hacks
Автор: Arthur S. Sapp (2020)

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

Скачать книгу
👍10
Learn C++ Quickly
Автор: Code Quickly (2020)

Самые успешные программы за последние 30 лет были разработаны на C++. От Microsoft Word до Facebook и Adobe Photoshop, C++ лежит в основе самых прибыльных технологий в современном мире. Это один из самых мощных языков программирования по одной простой причине: он позволяет полностью контролировать не только логику программы и графический интерфейс пользователя, но и оборудование. Выбрав эту книгу в качестве обучающего материала, вы получите пошаговое руководство, позволяющее быстро освоить сложный синтаксис C++.

Изучив основы, во время чтения книги вы также получите:
✔️Навыки управления производительностью любого компьютера на микроуровне;
✔️Возможность писать код для Windows, Mac, Linux и мобильных устройств;
✔️Возможность быстро овладеть множеством других высокоуровневых языков программирования.

Скачать книгу
👍10💩2🤔1
Forwarded from Python академия
Асинхронное программирование

Обычно мы пишем синхронный код - выполняется по порядку один за другим. Но иногда требуется, чтобы выполнялось несколько задач одновременно. К примеру, пока копируются файлы можно было поиграть в игру. Это возможно благодаря нескольким ядрам и потокам. ВАЖНО! Асинхронность не обязательно делает код быстрее, но может повысить его эффективность. В момент простаивания процессор будет переключаться на другие задачи.

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

Подписывайтесь на канал 👉@pythonofff
👍27👎9
Write Great Code, Volume 1, 2nd Edition
Автор: Randall Hyde (2020)

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

Во время чтения книги вы:
✔️Увидите, как машина представляет числа, строки и высокоуровневые структуры данных, узнаете внутреннюю стоимость их использования;
✔️Поймете, как организовывать данные для большей эффективности;
✔️Изучите работу ЦП;
✔️Увидите, как работают устройства ввода и вывода;
✔️Поймете, как наилучшим образом использовать иерархию памяти для создания максимально быстрых программ.

Скачать книгу
👍11
Forwarded from Python академия
Как распарсить строку json в Python?

Для того, чтобы распарсить строку json, мы можем перевести её в читаемый для python'а формат dict с помощью метода .loads()

Примемр кода.

Подписывайтесь на канал 👉@pythonofff
👍10👎4
Forwarded from DevOps
Devops

Docker compose - группы контейнеров. Docker
Свои контейнеры и сборка на DockerHub. Docker
Просто о контенеризации. Docker
Docker toolkit: ctop vs lazydocker

#Docker

@i_DevOps
👍23