Обновить
450
138.8

Пользователь

Отправить сообщение

Книга: «Великие вымирания»

Время на прочтение3 мин
Количество просмотров5.6K

Привет, Хаброжители! "Великие вымирания" – книга, меняющая представление об истории Земли. Вместо отвлеченных фактов она знакомит с более чем 20 биологическими видами, чье влияние на планету оказалось ключевым: от косаток и неандертальцев до кораллов и трилобитов. Повествование начинается в 2150 году, где искусственный интеллект и марсианские роботы расследуют причины гибели человечества в 2100 году. Отсюда мы переносимся в прошлое. Косатки рассказывают о современной жизни на Земле и глобальном изменении климата. Последние неандертальцы повествуют о тайне своего исчезновения 40 000 лет назад. Большая белая акула, единственная, пережившая четыре великих вымирания, делится секретом выживания длиной в 400 миллионов лет. И наконец, Луна и Мировой океан свидетельствуют об эпической истории возникновения Земли и Жизни.

Читать далее

Писать код просто, а читать сложнее

Время на прочтение4 мин
Количество просмотров4.8K

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

Ментальная модель складывается у вас в голове, когда вы читаете код. Это ваша внутренняя «карта», по которой понятно, как работает система, где находятся самые хитрые её части, что от чего зависит. Не имея такой карты в голове, вы просто смотрите на текстовые строки.

Когда я выполнял работу по заказу, большинство из моих заданий начинались одинаково. Мне ставили задачу пофиксить баг или добавить новую фичу в приложении, которое я видел впервые. Сначала моя ментальная модель была как чистая доска. Чтобы приступить к её заполнению, я открывал домашнюю страницу и разбирался, на что она похожа. Я открывал исходный код страницы: это React? jQuery? Сторонний плагин? Я просматривал базу кода, чтобы выяснить, используется ли у них где-нибудь ещё такая карусель, которую они просят поставить на первой страницы. Знакомился с их сборочным процессом, конфигурацией для тестирования, с тем, каким инструментарием они пользуются. Каждая мелкая деталь, которую я обнаруживал, встраивалась в ту модель, которая складывалась у меня в голове.

Читать далее

Книга:«Старение: почему эволюция убивает?»

Время на прочтение2 мин
Количество просмотров6.1K

Привет, Хаброжители! Представьте, что ваше тело – это сложная, высокооптимизированная система. Внезапно, на пике своей функциональности, эта система начинает планомерно деградировать. Звучит знакомо? Добро пожаловать в мир старения, феномена, который большинство учёных до сих пор не могут внятно объяснить. Книга Петра Лидского "Старение: почему эволюция убивает?" предлагает радикальный взгляд: старение – это не случайное накопление ошибок, а активная, генетически запрограммированная функция, встроенная в нас эволюцией. Настоящий "системный баг", заложенный на уровне архитектуры!

Читать далее

Книга: «Дизайн в масштабе. Создание устойчивой дизайн-системы»

Время на прочтение5 мин
Количество просмотров3.5K

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

Эксперт по дизайн-системам Дэн Молл раскрывает проверенные стратегии, инструменты и ключевые концепции, показывая на реальных примерах, как выстроить дизайн-систему, которая будет работать в любой среде.

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

Читать далее

Распродажа в издательстве «Питер»

Время на прочтение1 мин
Количество просмотров7.4K

Добрый день, Хаброжители!

Встречаем осень с хорошими новостями — в нашем интернет-магазине только что началась новая распродажа!

Читать далее

Осваиваем LLM: подробное знакомство с книгой Себастьяна Рашки «Строим LLM с нуля»

Время на прочтение5 мин
Количество просмотров10K

Недавно у меня появилась возможность прочитать книгу Себастьяна Рашки «Строим LLM с нуля», и, начав читать, я просто не мог её отложить.

Эта книга увлекательно сочетает исчерпывающую теорию, практическую реализацию кода и прекрасно и доходчиво объясняет одну из самых актуальных тем в области современного искусственного интеллекта: большие языковые модели (LLM). Как человек, который любит разбираться в тонкостях моделей ИИ, я считаю эту книгу настоящей жемчужиной. Ее обязательно нужно прочитать всем, кто серьезно интересуется LLM. Хочу отметить, что я никак не связан с автором или издателем; эта рецензия является исключительно отражением моего восхищения содержанием книги.

Читать далее

Большие языковые модели как новый уровень абстрагирования

Время на прочтение3 мин
Количество просмотров2K

Как и большинство серьёзных спикеров в IT, я внимательно слежу за тем, какую роль могут сыграть в разработке ПО системы генеративного искусственного интеллекта. Думаю, возникновение больших языковых моделей (LLM) повлияет на разработку ПО примерно в той же степени, что и переход с ассемблера на первые высокоуровневые языки программирования. Чем дальше развиваются языки и фреймворки, тем сильнее абстрагируется наш код и, соответственно, возрастает продуктивность, но такие изменения пока не касаются самой природы программирования. При применении LLM – уже касаются, но я хочу поговорить о том, что LLM не только повышают уровень абстракции. Пользуясь ими, приходится учитывать, как выглядит программирование с использованием недетерминированных инструментов.

Как я уже говорил, высокоуровневые языки программирования вывели нас на совершенно новый уровень абстракции. Работая с ассемблером, я думаю о наборе инструкций для конкретной машинной архитектуры. Мне приходится продумывать даже самые простые действия, размышляя, как я буду осуществлять те или иные последовательности действий, записывая данные в нужные регистры. Но при работе с высокоуровневыми языками появилась возможность обдумывать программу как последовательность команд, в которой предусмотрены условные операторы, чтобы выбирать альтернативы для продолжения. Также в программе есть итерации, чтобы раз за разом применять команды к наборам значений данных. Многие элементы кода можно именовать, чтобы было ясно, что именно понимается под теми или иными значениями. Ранние языки программирования явно были в чём-то ограничены. Я начинал программировать на Fortran IV, где у операторов «IF» не было условия «ELSE». Поэтому мне приходилось как-то запоминать мои целочисленные переменные, и я начинал их с букв от «I» до «N».

Читать далее

Книга: «C# Concurrency. Асинхронное программирование и многопоточность»

Время на прочтение4 мин
Количество просмотров6.4K

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

«C# Concurrency» помогает получить полное представление об особенностях многопоточности и асинхронного программирования. В ней особое внимание уделено практическому использованию операторов async/await в C# для упрощения асинхронных задач. Вы научитесь избегать распространенных ошибок, обходить классические проблемы многопоточности, такие как состояния взаимоблокировки и гонки, а также узнаете о многих сложных нюансах управления потоками и использования потокобезопасных коллекций.

Читать далее

Издательство Питер. Колонка редактора, сентябрь 25 г

Время на прочтение3 мин
Количество просмотров3.3K

Привет, Хаброжители!

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

Читать далее

Книга: «Технический директор. Эффективное техническое лидерство»

Время на прочтение2 мин
Количество просмотров6.1K

Привет, Хаброжители! Технический директор сталкивается с особыми вызовами в одиночку. Многие, с энтузиазмом начав свою первую роль на этом уровне, покидают ее разочарованными, столкнувшись со сложностью задач и необходимостью осваивать новые навыки.

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

Читать далее

Паттерны проектирования в Python, о которых следует забыть. Часть вторая

Время на прочтение9 мин
Количество просмотров8.8K

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

Назначение этого паттерна: та проблема, для решения которой он предназначен Реализация: точная структура класса или код для воплощения этого паттерна

Рассказывая о «паттернах проектирования в Python, о которых следует забыть», мы имеем в виду как раз реализации. В самом деле, эти паттерны решают реальные задачи. Но в Python решение этих задач ничуть не напоминает те варианты, которые предлагаются на C++ или Java.

Держа в уме эту идею, делаем простой вывод:

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

Читать далее

Книга: «Алгоритмы и структуры данных для тех, кто ненавидит читать лонгриды»

Время на прочтение2 мин
Количество просмотров18K

Привет, Хаброжители! Алгоритмы — это сердце программирования. От их правильного выбора зависит, будет ли программа работать мгновенно или заставит вас ждать вечность. Но как разобраться во всем этом, если вы только в начале пути?

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

Читать далее

Обзор книги «Паттерны разработки на Python TDD, DDD и событийно-ориентированная архитектура»

Время на прочтение5 мин
Количество просмотров5.2K

Недавно я прочёл книгу «Паттерны разработки на Python TDD, DDD и событийно-ориентированная архитектура». Основной акцент в ней сделан на том, как именно нужно структурировать программы, чтобы они по мере роста оставались простыми и удобными в поддержке. Это моя любимая тема из области программирования, поэтому, конечно же, книга мне понравилась. Пожалуй, я не возьмусь использовать именно те приёмы, которые авторы рекомендуют в книге — но они обсуждают классные идеи, напомнившие мне о задачах, встречавшихся в моей практике на предыдущих работах. Кроме того, отмечу, что английская версия книги есть в свободном доступе онлайн, так какие вообще вопросы?

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

Читать далее

Книга: «Мощный Python: паттерны и стратегии современного программирования»

Время на прочтение2 мин
Количество просмотров9.9K

Привет, Хаброжители! Как стать экспертом в создании сложных и мощных приложений на Python, не тратя времени на повторение уже известных основ или перечисление ненужных функций? Аарон Максвелл фокусируется на первопринципах Python, которые действуют подобно катализаторам для всего остального: достаточно получить 5 % знаний в области программирования, чтобы остальные 95 % подтянулись автоматически.

Читать далее

Книга: «.NET 8: инструменты и навыки. Лучшие практики и паттерны проектирования, отладки и тестирования»

Время на прочтение5 мин
Количество просмотров3.4K

Привет, Хаброжители! Хотим рассказать вам о новой книги Марка Прайса! В ней вы узнаете, как управлять исходным кодом и проектами с помощью Git, обеспечивая при этом контроль версий. Откроете для себя передовые методы отладки и стратегии выявления и устранения проблем, а также увидите, как правильно документировать код, API и сервисы, чтобы повысить удобство обслуживания проекта.

Погрузитесь в мир криптографии и освоите приемы обеспечения конфиденциальности и целостности на протяжении всего цикла разработки.

Вы сможете расширить свои навыки, познакомившись с такими продвинутыми темами, как создание интеллектуальных приложений с поддержкой пользовательских чат-сервисов на основе LLM, внедрение зависимостей, оптимизация производительности с помощью тестирования и запуск сервисов в контейнерах Docker.

В книге описаны возможности разработки облачных сервисов с применением .NET Aspire и преимущества современных облачных платформ. А знакомство с особенностями передовых архитектур программного обеспечения позволит вам создавать надежные и масштабируемые приложения, удобные в обслуживании.

Читать далее

Паттерны проектирования в Python, о которых следует забыть

Время на прочтение8 мин
Количество просмотров24K

Попробуйте поискать в Интернете «Паттерны проектирования на Python» — и получите целую простыню туториалов, демонстрирующих, как в точности воспроизвести на Python паттерны проектирования из книги «Банды четырёх». Там же будут диаграммы классов, иерархии фабрик и столько шаблонного кода, что выхлопа хватит, чтобы отопить маленькую деревню. Так вам внушают, будто вы пишете «серьёзный» код. Умно. Профессионал ьно. Готово для корпоративного использования.

Но вот в чём проблема: большинство из этих паттернов решают проблемы, которые в Python просто отсутствуют. Паттерны разрабатывались для таких языков как Java и C++, где для выполнения самых базовых вещей требуется настоящая эквилибристика — нет ни функций первого класса, ни динамической типизации, ни модулей в качестве пространств имён. Разумеется, вам потребуется Фабрика или Синглтон, если без них в вашем языке просто не с чем работать.

Слепо копировать эти паттерны в Python — не признак большого ума. Из-за них ваш код сложнее читать, тестировать, а также объяснять очередному бедняге, которому этот код придётся поддерживать. Возможно, через три месяца этим беднягой станете вы..

Читать далее

Книга: «Портфолио продуктового дизайнера. Final Final»

Время на прочтение2 мин
Количество просмотров479

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

Читать далее

О ценности абстракций

Время на прочтение4 мин
Количество просмотров2.3K

Моя повседневная работа с основном связана с языком Elm. Благодаря сочетанию функционального языка и архитектуры Elm, многие архитектурные решения в нём получаются практически незаметными (подробнее об этом я рассказываю в этом посте у меня в блоге). Вы получаете четкое разделение задач, а язык по умолчанию подталкивает вас к хорошему проектированию.

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

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

Читать далее

Книга: «Создаем игры и изучаем C++»

Время на прочтение9 мин
Количество просмотров12K

Привет, Хаброжители! Мечтаете создавать игры, но не знаете, с чего начать? Книга «Создаем игры и изучаем C++» станет вашим проводником в мире игровой разработки!

Это издание было адаптировано под Visual Studio 2022, C++20 и библиотеку SFML, оно предлагает уникальный подход: вы не только освоите язык C++ с нуля, но и примените знания на практике, создав четыре игры в разных жанрах.

Вы начнете с изучения основ программирования, познакомитесь с ключевыми темами C++: объектно-ориентированное программирование (ООП), указатели и стандартная библиотека шаблонов (STL). Разберетесь с методами обнаружения коллизий и столкновений в игровой физике на примере игры Pong. Создавая игры, вы познакомитесь с массивами вершин, направленным звуком, шейдерами OpenGL, порождением объектов и многим другим. Вы погрузитесь в игровую механику и реализуете обработку ввода, повышение уровня персонажа и даже «вражеский» ИИ. Наконец, вы изучите паттерны проектирования игр, чтобы усовершенствовать навыки программирования на C++.

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

Читать далее

Профессиональная обработка ошибок в TypeScript

Время на прочтение7 мин
Количество просмотров2.3K

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

Ожидаемые ошибки, связанные с бизнес-логикой — это «нормальная» часть эксплуатации системы. О таких ошибках в системе должно быть заранее известно пользователям, а вы должны быть способны эти ошибки исправлять, если они возникнут.

Пример ожидаемой ошибки, обусловленной бизнес-логикой — попытка получить объект из хранилища больших неструктурированных данных (blob storage) с последующей необходимостью обработать случай «объект не найден». Другой пример связан с регистрацией пользователя, когда клиент пытается взять себе логин, который уже занят. В принципе, это ожидаемая ситуация и, если она произойдёт, мы вернем пользователю качественное сообщение об ошибке.

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

Читать далее

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность