proglibrary | Technologies

Telegram-канал proglibrary - Библиотека программиста | программирование, кодинг, разработка

77049

Все самое полезное для программиста в одном канале. Список наших каналов: https://t.me/proglibrary/9197 Учиться у нас: https://proglib.io/w/a32a0d94 Обратная связь: @proglibrary_feedback_bot По рекламе: @proglib_adv Прайс: @proglib_advertising

Subscribe to a channel

Библиотека программиста | программирование, кодинг, разработка

Урок по бинарному поиску

#algoritms #novice

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

Урок доступен по ссылке
http://vk.com/video-54530371_456239290

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Небольшая подборка статей по Data Mining и Big Data

#data_analysis

Мифы и легенды про Big Data
https://goo.gl/EFzEVP

1 000 000 жилых домов России
https://habrahabr.ru/post/279833/

Вам не нужен Hadoop — у вас просто нет столько данных
Оригинал https://goo.gl/kHjLvY
Перевод https://habrahabr.ru/post/194434/

Линейные модели: простая регрессия
https://habrahabr.ru/post/279117/

BDRA – современная архитектура для аналитики больших данных
https://goo.gl/7QfPF1

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Золотой фонд литературы по версии Stackoverflow

#book

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

К посту прикреплена страница с данными книгами доступных для скачивания.

Макконнелл С. «Совершенный код»
Х. Абельсон, Дж. Дж. Сассман «Структура и Интерпретация Компьютерных Программ»
Б. Керниган, Д. Ритчи «Язык программирования Си»
Кормен Т., Лейзерсон Ч., Ривест Р. «Алгоритмы. Построение и анализ»
М. Фаулер «Рефакторинг. Улучшение существующего кода»
Д. Кнут «Искусство программирования»
Альфред Ахо, Рави Сети, Джеффри Ульман, Моника Лам «Компиляторы. Принципы, технологии, инструменты»
Мартин Р. «Чистый код. Создание, анализ и рефакторинг»
С. Мейерс «Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Брюс Эккель «Философия Java». 4-е издание
Реймонд Э.С. «Искусство программирования для Unix»
Бек К. «Экстремальное программирование. Разработка через тестирование»
Андрей Александреску «Современное проектирование на С++»
Керниган Б., Пайк Р. «Практика программирования»
Н. Вирт «Алгоритмы + структуры данных = программы»
Дуглас Крокфорд «JavaScript: сильные стороны»
Andrew S. Tanenbaum «Современные операционные системы»
Getting Real by 37 Signals
Бьёрн Страуструп «Язык программирования C++» (2011, PDF; 2013, PDF, ENG)
Р. Мартин «Принципы, паттерны и методики гибкой разработки на языке C#» (2011, PDF)
Рихтер «CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C#»
Грэди Буч «Объектно-ориентированный анализ и проектирование с примерами приложений» (3-е издание) (2008, DjVu)
Блох Дж. «Java. Эффективное программирование» (2002, PDF)
Ховард М., Лебланк Д. «Защищённый код» (2004, PDF)
Эндрю Хант, Дэвид Томас «Программист-прагматик. Путь от подмастерья к мастеру» (2000, PDF)
Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидс «Паттерны проектирования» (2001, PDF)
Фредерикс Брукс «Мифический человеко-месяц, или Как создаются программные системы» (1995, PDF)
Даглас Р. Хофштадтер «Гедель, Эшер, Бах. Эта бесконечная гирлянда» (2001, PDF)
Мейерс C. «Наиболее эффективное использование C++. 35 новых рекомендаций по улучшению ваших программ и проектов» (2000, DJVU)
Петцольд Ч. «Код. Тайный язык информатики» (2001, PDF)
Бентли Дж. «Жемчужины программирования» (2-е издание) (2002, DjVu)
Том ДеМарко «Deadline. Роман об управлении проектами» (2006, PDF)
Питер Сейбл «Кодеры за работой. Размышления о ремесле программиста» (2011, DJVU)
Working Effectively with Legacy Code by Michael C. Feathers
Peopleware by Demarco and Lister
Surely You’re Joking, Mr. Feynman!
Patterns of Enterprise Application Architecture by Martin Fowler
The Little Schemer
The Seasoned Schemer
Why’s (Poignant) Guide to Ruby
The Inmates Are Running The Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity
Practices of an Agile Developer
Don’t Make Me Think
Agile Software Development, Principles, Patterns, and Practices by Robert C. Martin
Domain Driven Designs by Eric Evans
The Design of Everyday Things by Donald Norman
Best Software Writing I by Joel Spolsky
Pragmatic Thinking and Learning: Refactor Your Wetware by Andy Hunt
Software Estimation: Demystifying the Black Art by Steve McConnel
The Passionate Programmer (My Job Went To India) by Chad Fowler
Hackers: Heroes of the Computer Revolution
Writing Solid Code
Foundations of Programming by Karl Seguin
Computer Graphics: Principles and Practice in C (2nd Edition)
The Elements of Computing Systems
Refactoring to Patterns by Joshua Kerievsky
The Annotated Turing
Things That Make Us Smart by Donald Norman
The Timeless Way of Building by Christopher Alexander
Patterns of Enterprise Application Architecture
Computer Systems — A Programmer’s Perspective
Growing Object-Oriented Software, Guided by Tests
Framework Design Guidelines by Brad Abrams
Object Thinking by Dr. David West
Advanced Programming in the UNIX Environment by W. Richard Stevens
Hackers and Painters: Big Ideas from the Computer Age

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Android. Программирование для профессионалов (2016) / Android Programming: The Big Nerd Ranch Guide (2013, pdf)
Авторы: Б. Харди, Б. Филлипс, К. Стюарт, К. Марсикано

#mobile #book

Изучение Android — все равно, что жизнь в другой стране: даже если вы говорите на местном языке, на первых порах вы все равно не чувствуете себя как дома. Такое впечатление, что все окружающие знают что-то такое, чего вы еще не понимаете. И даже то, что уже известно, в новом контексте оказывается попросту неправильным.

Второе издание познакомит вас с интегрированной средой разработки Android Studio, которая поможет с легкостью создавать приложения для Android. Вы не только изучите основы программирования, но и узнаете о возможностях Lollipop, новых инструментах вспомогательных библиотек, а также некоторых ключевых инструментах стандартной библиотеки, включая SoundPool, анимацию и ресурсы. Все учебные приложения были спроектированы таким образом, чтобы продемонстрировать важные концепции и приемы программирования под Android и дать опыт их практического применения.

К посту прикреплена полная книга на английском языке в формате pdf.

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

"Замечательные zippers, или как я научился не волноваться и полюбил древовидные структуры данных"

#algorithms

Известно, что дерево – довольно сложная структура. И если чтение успешно реализуется рекурсией (которая не лишена своих проблем), то с изменением дела обстоят совсем не хорошо.

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

Классическое концептуальное объяснение зиппера, выглядит как-то так: это взгляд изнутри на древовидную структуру как бы вывернутую наизнанку, вроде вывернутой перчатки.

Статья целиком https://habrahabr.ru/post/279623/

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Классификация и распознавание образов

#data_analysis@proglibbot

1. Задача распознавания.
2. Построение структуры нейронной сети
3. Kernel Trick
4. Задача классификации
5. Применение карты Кохонена для классификации
6. Анализ и визуализация данных с помощью карты Кохонен

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

http://vk.com/wall-54530371_63056

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Самые популярные посты за эту неделю

#weekly@proglibbot

Курс «Введение в логику» от Hexlet
https://vk.com/wall-54530371_62702

Cоздание браузерной игры в реальном времени на HTML/CSS/JS
https://vk.com/wall-54530371_62361

Андроид для программистов. Создаем приложения
https://vk.com/wall-54530371_62219

Небольшие, но подробные уроки по регулярным выражениям
https://vk.com/wall-54530371_62339

Конфигурирование, сборка и установка ядра Linux
https://vk.com/wall-54530371_62926

Архитектура игровых движков
https://vk.com/wall-54530371_62130

Курс «Введение в Javascript»
https://vk.com/wall-54530371_62997

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

http://vk.com/wall-54530371_62997

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

http://vk.com/wall-54530371_62982

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

http://vk.com/wall-54530371_62926

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

http://vk.com/wall-54530371_62880

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

http://vk.com/wall-54530371_62869

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Подборка материалов по C++

#cpp@proglibbot

Краткий курс компьютерной графики: задание карт нормалей в касательном пространстве
https://habrahabr.ru/post/279143/

Введение в концепцию шаблонов на С++
http://www.tutorialspoint.com/cplusplus/cpp_templates.htm

Вопросы и ответы от Бьёрна Страуструпа по С++17
http://goo.gl/RkHB5N

С++ exception handling под капотом или как же работают исключения в C++
Часть 1. https://habrahabr.ru/post/279111/
Часть 2. https://habrahabr.ru/post/279151/
Часть 3. https://habrahabr.ru/hub/cpp/page2/

Новая экспериментальная фича С++: tadpole operators
https://goo.gl/WIF6ba

Как заставить функцию С++ возвращать не одно значение, а сразу несколько
http://goo.gl/2J6yyH

Разъяснение разницы между тремя способами хранения данных в C++: используя стек, кучу и пул
https://bulldozer00.com/2015/09/14/stack-heap-pool/

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

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

#java@proglibbot

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Курс "Git. Быстрый старт"

#git

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

1. Назначение и возможности.
2. Базовые операции.
3. Откат изменений кода.
4. Работа с ветками.
5. Конфликты.
6. Распространенные ошибки.
7. Распространенные ошибки.
8. Консольный git-клиент. Базовые операции.
9. Консольный git-клиент. Работа с ветками.
10. Работа с версиями программы.

Все видео доступны по ссылке
http://vk.com/videos-54530371?section=album_56085702
Комментарии к посту:
https://vk.com/wall-54530371_63311

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

The Soul of a New Machine by Tracy Kidder
The Timeless Way of Building by Christopher Alexander
Design Patterns in C# by Steve Metsker
Alice in Wonderland by Lewis Carol
Zen and the Art of Motorcycle Maintenance by Robert M. Pirsig
About Face — The Essentials of Interaction Design
Here Comes Everybody: The Power of Organizing Without Organizations by Clay Shirky
The Tao of Programming
Computational Beauty of Nature
Writing Solid Code by Steve Maguire
Philip and Alex’s Guide to Web Publishing
Computability by N. J. Cutland
Masterminds of Programming
The Tao Te Ching
The Productive Programmer
The Art of Deception by Kevin Mitnick
The Career Programmer: Guerilla Tactics for an Imperfect World by Christopher Duncan
Paradigms of Artificial Intelligence Programming: Case studies in Common Lisp
Masters of Doom
Pragmatic Unit Testing in C# with NUnit by Andy Hunt and Dave Thomas with Matt Hargett
How To Solve It by George Polya
Smalltalk-80: The Language and its Implementation
Introduction to Functional Programming by Philip Wadler and Richard Bird
No Bugs! by David Thielen
Rework by Jason Freid and DHH
JUnit in Action

Страница с данными книгами доступных для скачивания. http://vk.com/proglib?w=page-54530371_46738526

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Лямбда-выражения в Java 8

#java

Лямбда-выражения — одно из самых заметных нововведений Java версии 8. Они вносят в Java, который является объектно-ориентированным языком, некое функциональное звено. И в этом смысле lambda-выражения способы существенно облегчить жизнь разработчику.

В ходе нашего урока по Java будут на конкретных примерах рассмотрены следующие проблемы:
— Использование анонимных классов;
— Функциональные интерфейсы Java 8;
— Лямбда-выражения и зачем они нужны;
— Агрегатные операции.
Мастер-класс ведет преподаватель по программированию с многолетним практическим опытом, сертифицированный тренер и обладатель 10 сертификаций Microsoft для разработчиков и программистов Сергей Юрьевич Шуйков.

https://www.youtube.com/watch?v=DNC6Lknn2AE

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Видеоуроки по основам Python

#python #novice

1. Теория
2. Установка
3. Переменные
4. Типы данных
5. Динамическая типизация
6. Операторы
7. Функции
8. Создание папок
9. Обработка секвенции файлов
10. Системные аргументы

Все видео доступны по ссылке
https://vk.com/videos-54530371?section=album_56085698

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

http://vk.com/wall-54530371_63097

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Подборка материалов по R

#data_analysis@proglibbot

Стратегии по ускорению кода на R
Оригинал http://goo.gl/1hwjhM
Перевод:
Часть первая https://goo.gl/ivcEiF
Часть вторая https://goo.gl/o7V15L

Генерация и визуализация многомерных данных с R
Перевод https://goo.gl/5J8GeI
Оригинал http://goo.gl/wnuLwu

Использование PostgreSQL в R
http://www.win-vector.com/blog/2016/02/using-postgresql-in-r/

R Programming Tutorials
http://goo.gl/grudFp

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Java 8. Карманный справочник (2015) / Java 8 Pocket Guide (2014)
Авторы: Роберт Лигуори, Патриция Лигуори

#java@proglibbot #book@proglibbot

Если вам нужно получить оперативные ответы по разработке или отладке программ на Java, то книга JAVA 8. Карманный справочник послужит вам удобным справочником по стандартным возможностям языка программирования Java и его платформы. Вы найдете здесь
полезные примеры программирования, таблицы, рисунки и списки,
вспомогательную тематическую информацию, в том числе по Java Scripting API, средствам разработки сторонних фирм и основам унифицированного языка моделирования (Unified Modeling Language, UML).

Из книги JAVA 8. Карманный справочник вы узнаете о новых возможностях Java 8, лямбда-выражениях и API для работы с датой и временем.

Эта небольшая книга JAVA 8. Карманный справочник, включающая в себя описание новых возможностей Java, до Java SE 8 включительно, будет вашим идеальным спутником, где бы вы ни находились - в офисе, в учебном классе или в пути.
Быстро находите подробные сведения о языке Java, такие как соглашения о присвоении имен, описание простых типов и элементов объектно-ориентированного программирования.
Получите подробные сведения о платформе Java SE, включая основы разработки, управление памятью, параллелизм и обобщения.
Просматривайте базовую информацию, чтобы узнать о возможностях NIO 2.0, инфраструктуре коллекций Java и API языков сценариев Java.
Ознакомьтесь с краткой информацией по текучим API, средствам разработки и тестирования, библиотекам и IDE; а также изучите основы UML.

"В книге прекрасно описаны лямбда-выражения и функциональные операции, а также другие новинки Java SE 8 наряду с остальной платформой".
Герт-Ян Виленха, главный консультант по маркетингу в группе разработки NetBeans IDE компании Oracle.
Книга обсуждается в отдельном сообщении в блоге Виктора Штонда.

К посту прикреплена полная книга на английском языке.
Приобрести книгу на русском можно по ссылке
http://www.ozon.ru/context/detail/id/30196193/

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Подборка материалов по веб-разработке

#web@proglibbot

Библия фронтэндщика: огромный список ссылок на всевозможные ресурсы по фронтэнду
https://github.com/dypsilon/frontend-dev-bookmarks

Пример нестандартной сетки из шестиугольников на CSS с помощью свойства clip-path
http://codepen.io/tstoik/pen/qZEZJp

SlideOut — библиотека для создания бокового выпадающего меню
https://github.com/mango/slideout

Помощь верстальщику. Конвертер PSD в CSS — когда лень верстать по готовому макет
http://css3ps.com/

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Курс «Введение в Javascript» от Hexlet

#javascript@proglibbot

1. Введение. Числа
2. Строки. Объекты. Прототипы.
3. Функции. Замыкания.
4. Наследование
5. Массивы
6. Регулярные выражения
7. Сравнения, var, eval и заключение

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Linux. Системное программирование (2016)/ Linux System Programming (2013)
Автор: Роберт Лав

#linux@proglibbot #book@proglibbot

Роберт Лав стоит у истоков создания операционной системы Linux. Он внес существенный вклад в создание ядра Linux и настольной среды GNOME.
Данная книга представляет собой руководство по системному программированию для Linux, справочник по системным вызовам Linux, а также подробный рассказ о том, как писать более быстрый и умный код. Роберт Лав четко разграничивает стандартные функции POSIX и специальные службы, которые предлагаются лишь в Linux. Во втором издании вы изучите эту операционную систему как с теоретической, так и с прикладной точки зрения.

К посту прикреплена полная книга на английском языке.
Приобрести книгу на русском можно по ссылке
http://www.ozon.ru/context/detail/id/31934003/

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Конфигурирование, сборка и установка ядра Linux

#linux@proglibbot

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

Причины, по которым может возникнуть необходимость в сборке ядра системы. В каких случаях это необходимо делать обязательно.
1) Получение исходных кодов ядра. Версии. Развёртывание файлового дерева исходных кодов.
2) Сбор информации о системе, для которой предназначено ядро.
3) Конфигурирование ядра из начальной конфигурации "в состоянии поставки", и используя в качестве основы гарантированно рабочую конфигурацию предыдущей версии.
4) Модули, модульная архитектура ядра Linux.
5) Компиляция и сборка ядра.
6) Установка нового ядра автоматически и "вручную".
7) Конфигурирование начального загрузчика для использования нового ядра.
8) Рестарт системы под управление нового ядра. Проверка работоспособности.

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Приемы объектно-ориентированного проектирования. Паттерны проектирования (2016)
Авторы: Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес

#oop@proglibbot #design_patterns@proglibbot #book@proglibbot

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

Издание предназначено как для профессиональных разработчиков, так и для программистов, осваивающих объектно-ориентированное проектирование.

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Серия уроков по работе с Gulp.js

#javascript@proglibbot

Gulp.js — потоковый сборщик проектов на JS. Речь пойдет об установке, настройке сборщика, работе с плагинами, удобном запуске локального сервера и заливке готового проекта на хостинг с помощью сборщика.

1. Работаем с CSS.
2. Автоматическое добавление префиксов.
3. Работа с таблицами стилей.
4. Боремся с кэшированием или ревизии подключаемых файлов.
5. Структура проекта, wiredep, bower.
6. Сборка и деплой проекта.

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

http://vk.com/wall-54530371_62802

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Советы по оптимизации кода на С++

#cpp@proglibbot

Как правило, язык C++ используют там, где требуется высокая скорость работы. Но на C++ без особых усилий можно получить код, работающий медленнее какого-нибудь Python/Ruby. Именно подобным кодом оперируют многочисленные сравнения Any-Lang vs C++.

Вообще, оптимизация бывает трех типов:

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

Специально заниматься оптимизацией готового кода следует только после того, как проект закончен и используется. Как правило, оптимизация потребуется только в небольшой части проекта. Поэтому сначала нужно найти места в коде, которые съедают большую часть процессорного времени. Ведь какой смысл ускорять код, пусть даже на 500%, если он отнимает только 1% машинного времени? И следует помнить, что, как правило, гораздо больший выигрыш в скорости дает оптимизация самих алгоритмов, а не кода. Именно про данный ее вид говорят: «преждевременная оптимизация — зло» (с).

Второй тип оптимизации — это изначальное проектирование кода с учетом требований к производительности. Такое проектирование не является ранней оптимизацией.

Третий тип даже не совсем оптимизация. Скорее это избегание неоптимальных языковых конструкций. Язык C++ довольно сложный, при его использовании частенько нужно знать, как реализован используемый код. Он достаточно низкоуровневый, чтобы программисту пришлось учитывать особенности работы процессоров и операционных систем.

Ссылка на статью https://habrahabr.ru/company/mailru/blog/279449/

Читать полностью…
Subscribe to a channel