Потоки являются фундаментальной частью платформы Java. Многоядерные процессоры — это обыденная реальность, а эффективное использование параллелизма стало необходимым для создания любого высокопроизводительного приложения. Улучшенная виртуальная машина Java, поддержка высокопроизводительных классов и богатый набор строительных блоков для задач распараллеливания стали в свое время прорывом в разработке параллельных приложений. В «Java Concurrency на практике» сами создатели прорывной технологии объясняют не только принципы работы, но и рассказывают о паттернах проектирования. Легко создать конкурентную программу, которая вроде бы будет работать. Однако разработка, тестирование и отладка многопоточных программ доставляют много проблем. Код перестает работать именно тогда, когда это важнее всего — при большой нагрузке. В «Java Concurrency на практике» вы найдете как теорию, так и конкретные методы создания надежных, масштабируемых и поддерживаемых параллельных приложений. Авторы не предлагают перечень API и механизмов параллелизма, они знакомят с правилами проектирования, паттернами и моделями, которые не зависят от версии Java и на протяжении многих лет остаются актуальными и эффективными. Эта книга охватывает следующие темы: Базовые концепции параллелизма и безопасности потоков Методы построения и составления многопоточных классов Использование блоков параллелизма в java.util.concurrent Оптимизация производительности: что можно делать, а что не стоит и пытаться Тестирование параллельных программ Атомарные переменные, неблокирующие алгоритмы и модель памяти Java
Машинное обучение давно уже стало синонимом искусственного интеллекта. Оно проникло во многие аспекты нашей жизни и стало одной из важнейших областей современной науки. Эта книга — путеводитель по ключевым идеям машинного обучения. Вы узнаете, как методы машинного обучения получаются из основных принципов теории вероятностей, пройдёте путь от теоремы Байеса до обобщённых линейных моделей и узнаете в лицо тех китов, на которых стоит весь современный искусственный интеллект. Множество увлекательных кейсов, практических примеров и интересных задач — от анализа ретроспективных научных исследований до эффекта "горячей руки" в баскетболе — помогут разобраться в самых сложных концепциях. Кроме того, книга может лечь в основу базовых курсов по машинному обучению.
В этой книге рассматриваются методы обхода систем безопасности сетевых сервисов и проникновения в открытые информационные системы. Информационная безопасность, как и многое в нашем мире, представляет собой медаль с двумя сторонами. С одной стороны, мы проводим аудит, ищем способы проникновения и даже применяем их на практике, а с другой — работаем над защитой. Тесты на проникновение являются частью нормального жизненного цикла любой ИТ-инфраструктуры, позволяя по-настоящему оценить возможные риски и выявить скрытые проблемы. Может ли взлом быть законным? Конечно, может! Но только в двух случаях — когда вы взламываете принадлежащие вам ИС или когда вы взламываете сеть организации, с которой у вас заключено письменное соглашение о проведении аудита или тестов на проникновение. Мы надеемся, что вы будете использовать информацию из данной книги только в целях законного взлома ИС. Пожалуйста, помните о неотвратимости наказания — любые незаконные действия влекут за собой административную или уголовную ответственность. Вы последовательно пройдете все шаги, необходимые для проведения аудита безопасности информационных систем и тестов на проникновение: от общих понятий, рассмотрения стандартов и необходимых действий перед проведением аудита до методов проникновения в информационную систему и закрепления в ней. Каждая глава книги подкреплена реальными примерами и содержит практическую информацию по применению тех или иных методов. Книга адресована читателям, имеющим опыт работы в сфере информационных технологий и знакомым с работой основных сетевых сервисов как на Linux-, так и на Windows-платформах, а больше всего будет полезна системным администраторам, специалистам по ИТ-безопасности, всем тем, кто желает связать свою карьеру с защитой информации или аудиторской деятельностью. Во втором, дополненном и переработанном издании, информация была полностью обновлена и соответствует современным реалиям.
Книга Никиты Зайцева aka WildHare — пример того, как можно систематизировать и упаковать в текстовый формат профессиональный опыт, накопленный за почти двадцать пять лет успешной инженерной практики. Познакомьтесь с концепцией разработки прикладного ПО через эффективность процесса на всех стадиях – от работы с ожиданиями и требованиями до сопровождения и технической поддержки. Все приведенные в книге принципы, правила и рекомендации базируются исключительно на личном практическом опыте автора. Книга была написана исходя из девиза, вынесенного в название – неспеша, эффективно и правильно. Кому адресована эта книга? В первую очередь она будет интересна профильным специалистам, то есть людям, занятым в отрасли разработки прикладного ПО, как начинающим, так и зрелым профессионалам. Техническим контекстом в книге является технологический стек «1С» – автор всю свою профессиональную жизнь провел именно в этом уголке IT-вселенной и оперирует областями знания, в которых абсолютно уверен, и готов отвечать за каждое сказанное слово. Но идеи, изложенные в книге, можно применять к любым другим технологическим стекам.
В книге «Идеальная работа. Программирование без прикрас» легендарный Роберт Мартин (Дядюшка Боб) создал исчерпывающее руководство по хорошей работе для каждого программиста. Роберт Мартин объединяет дисциплины, стандарты и вопросы этики, необходимые для быстрой и продуктивной разработки надежного, эффективного кода, позволяющего испытывать гордость за программное обеспечение, которое вы создаете каждый день. Роберт Мартин, автор бестселлера «Чистый код», начинает с прагматического руководства по пяти основополагающим дисциплинам создания программного обеспечения: разработка через тестирование, рефакторинг, простой дизайн, совместное программирование и тесты. Затем он переходит к стандартам — обрисовывая ожидания «мира» от разработчиков программного обеспечения, рассказывая, как часто различаются эти подходы, и помогает вам устранить несоответствия. Наконец, он обращается к этике программиста, давая десять фундаментальных постулатов, которым должны следовать все разработчики программного обеспечения.
Управлять проектами не так сложно, как может показаться! Эта книга — кратчайший путь для освоения всех необходимых навыков: от бюджетирования и планирования до секретов управления командой и работы над ошибками — лучшее на сегодняшний день руководство по современному проектному менеджменту для начинающих. Здесь вы найдете простые инструкции и чек-листы для успешного выполнения всех задач, которые могут возникнуть в ходе работы! Бонус — глава с полезными советами для подготовки к сдаче сертификационного экзамена PMP.
Новые инструменты, фреймворки методики и парадигмы вновь и вновь меняют экосистему разработки программного обеспечения. Непрерывный прогресс основных практик разработки на протяжении последних пяти лет заставил искать новые пути и подходы к архитектуре, чтобы соответствовать постоянно меняющимся требованиям пользователей. В обновленном издании авторы Нил Форд, Ребекка Парсонс, Патрик Куа и Прамод Садаладж приводят реальные примеры, соответствующие потребностям современной разработки ПО. "Эта книга знаменует собой важную веху, обозначающую нынешний уровень понимания проблемы. По мере того как люди начинают осознавать роль ПО в XXI веке, информация о том, как реагировать на изменения, сохраняя достигнутое, становится важнейшим навыком в области создания программного обеспечения." — Мартин Фаулер.
Новое издание бестселлера описывает как клиентские, так и серверные аспекты веб-разработки. Книга, наполненная ценными практическими советами и подробным теоретическим материалом, поможет вам освоить динамическое веб-программирование с применением самых современных технологий. Для закрепления усвоенных знаний автор расскажет, как создать полнофункциональный сайт, работающий по принципу социальной сети. Изучите важнейшие аспекты языка PHP и основы объектно-ориентированного программирования. Познакомьтесь с базой данных MySQL. Управляйте cookie-файлами и сеансами, обеспечивайте высокий уровень безопасности. Пользуйтесь фундаментальными возможностями языка JavaScript. Применяйте вызовы AJAX, чтобы значительно повысить динамику вашего сайта. Изучите основы CSS для форматирования и оформления ваших страниц. Освойте продвинутые возможности HTML5: геолокацию, обработку аудио и видео, отрисовку на холсте
Машинное обучение — это набор методов анализа данных, основанных на алгоритмах, которые дают все более точные результаты по мере поступления новых данных. Машинное обучение лежит в основе систем рекомендаций, программ распознавания лиц, «умных» колонок и даже беспилотных автомобилей. Эта уникальная книга объясняет основные понятия машинного обучения на простых и доступных примерах, увлекательных упражнениях и запоминающихся иллюстрациях. Здесь нет зубодробительного академического жаргона, для понимания объяснений достаточно знаний основ алгебры. По мере чтения вы будете создавать модели для идентификации спама, и распознавания изображений и другие интересные проекты на языке Python. Откройте для себя мощные методы машинного обучения, для понимания и применения которых достаточно знаний математики на уровне средней школы! Для читателей, знающих основы языка Python. Знаний в области машинного обучения не требуется.
Возвращение знаменитого бестселлера. Изящный, гибкий и понятный код, который легко модифицировать, который корректно работает и который не подкидывает своим создателям неприятных сюрпризов. Неужели подобное возможно? Чтобы достичь цели, попробуйте тестировать программу еще до того, как она написана. Именно такая парадоксальная идея положена в основу методики TDD (Test-Driven-Development — разработка, основанная на тестировании). Бессмыслица? Не спешите делать скороспелые выводы. Рассматривая применение TDD на примере разработки реального программного кода, автор демонстрирует простоту и мощь этой методики. В книге приведены два программных проекта, целиком и полностью реализованных с использованием TDD. За рассмотрением примеров следует обширный каталог приемов работы в стиле TDD, а также паттернов и рефакторингов, имеющих отношение к TDD. Книга будет полезна для любого программиста, желающего повысить производительность своей работы и получить удовольствие от программирования.
Цифровая среда – Интернет, социальные сети, приложения – является неотъемлемой частью той «мультиреальности», в которой существует современный человек. Естественно, что вместе с неоспоримой пользой виртуальность приносит в нашу жизнь и огромные риски. Сейчас цифровой мир — это джунгли, подчас населённые не самыми приятными (и небезопасными!) формами жизни. Таким он и останется, пока в нём не будет наведён порядок. Перед вами не очередная «страшилка», а экспертная оценка цифрового мира на основе большого объёма изученных данных. В книге рассматриваются проблемы цифровой зависимости и отчуждения подростков, воздействия деструктивных сообществ и токсичного контента, защиты от фишинга, поиска и оценки достоверности информации, а также другие явления цифровой среды. Ситуация в Сети очень быстро меняется, порождая новые опасности, поэтому основная задача — не только рассказать о существующих рисках, но и научить вас самостоятельно разбираться в методах защиты.
Кем вы видите себя через пять лет? Стандартный вопрос на собеседовании. А что делать, если вы сеньор-разработчик ПО и хотите дальше продвигаться по карьерной лестнице? Многие годы считалось, что путь успешного разработчика — переход в «управленцы». Но это не единственный вариант: вы можете стать техническим лидером и без подчиненных. Таких специалистов называют стафф-разработчиками, они ведут большие проекты, определяют техническую стратегию и развивают навыки коллег по команде. Вы научитесь управлять своим временем, овладеете стратегическим мышлением, будете устанавливать стандарты технической работы. Вы узнаете, как быть лидером, не занимая формальную руководящую должность, как планировать и принимать верные технические решения, как поднять уровень людей, которые работают рядом с вами, и при этом самому постоянно расти как специалист в выбранной предметной области.