Обновить
3
0
Павел@WebPeople

Менеджер проектов

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

Центропия — новый метод проектирования материалов

Время на прочтение7 мин
Охват и читатели2.1K

Среди наиболее удачных редакционных материалов Хабра, вышедших в начале этого года, была и переводная статья уважаемого @SLY_G «Энтропия — это мера того, как мало мы на самом деле знаем». Незадолго до того мне попадалась на глаза ещё одна переводная статья, вышедшая в корпоративном блоге издательства «Питер» рекламирующая книгу «Пространство, время и движение» Шона Кэрролла и также посвящённая совершенно различным трактовкам энтропии, но в данном случае с акцентом на энтропию чёрных дыр. Поэтому я решил оперативно высказаться об ещё одной малоизвестной концепции, сформулированной всего около полутора лет назад и рассматривающей энтропию в необычном прикладном аспекте — как инструмент для проектирования новых материалов и прогнозирования их потенциальных свойств. 

В Рунете осталась практически незамеченной интересная теория, предложенная летом 2023 года исследователями из Пенсильванского университета под руководством Зи-Ку Лю. В своей статье авторы попытались ответить на вопрос о том, почему в некоторых материалах объём вещества уменьшается при повышении температуры. Практическая ценность этого вопроса заключается в проектировании материалов, которые могли бы сочетать в себе свойства ферромагнетиков и парамагнетиков, чтобы, к тому же, эти материалы можно было управляемо переключать между такими состояниями. В термодинамике известна формула, согласно которой производная объёма относительно температуры (термическое расширение) равна по модулю производной энтропии относительно давления. Эта закономерность подтверждается эмпирически, но формального объяснения не имеет. Поиск ответа на этот вопрос позволил учёным наметить очертания теории, которую они назвали «центропией». Центропия пока развивается в рамках вычислительной термодинамики, но в случае удачного развития поспособствует точному проектированию новых материалов и созданию материалов с заданными свойствами. В дальнейшем она открывает перспективы создания целого «генома материалов» — множества данных не менее масштабного, чем Геном человека.

Читать далее

Как перестать избегать трудностей и не сдаваться, даже если очень хочется

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели30K

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

Читать далее

Собрал в одном большом гайде всё, что хотел бы знать, когда изучал язык C

Время на прочтение27 мин
Охват и читатели37K

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

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

Цель статьи — упорядочить представление о языке C и его экосистеме, и, конечно, дать практические советы, которые пригодятся в реальных проектах.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис

Читать далее

Что такое реактивное программирование? Руководство для начинающих по написанию реактивного кода

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели17K

Добро пожаловать в путешествие по динамичному миру реактивного программирования! Эта увлекательная парадигма направлена ​​на создание быстро реагирующих, отказоустойчивых и адаптируемых приложений, которые легко и практически мгновенно управляют огромными объемами данных.

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

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

Реактивное программирование работает аналогично. Оно имеет дело с потоками данных (например, графиком прибытия автобусов) и распространением изменений (прибытием нового автобуса), позволяя приложениям реагировать в режиме реального времени (так же, как пассажиры реагируют, садясь в автобус). Звучит знакомо?

В этой статье мы углубимся в суть реактивного программирования, сосредоточив внимание на его реализации с использованием JavaScript/TypeScript в среде Node.js. Мы также будем следить за глобальным контекстом, который применим ко многим языкам программирования и платформам.

Читать далее

Хитрости для программистов: пять команд Linux, с которыми ваша жизнь не будет прежней

Время на прочтение8 мин
Охват и читатели58K

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

Поначалу Linux многих обескураживает, но как только вы разберётесь с интерфейсом командной строки (CLI), вы поймёте, что это лучший друг программиста. Простые, но эффективные команды Linux могут заметно улучшить любые рабочие процессы — от навигации по каталогам до манипуляции с файлами и даже исправления ошибок.

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

Читать далее

Почему джуны путаются в асинхронном коде (и как научиться с ним работать)

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели28K

Асинхронный код часто становится камнем преткновения для начинающих разработчиков. Почему функции выполняются не в том порядке, зачем нужны промисы, и что делает async/await? В статье я простыми словами объясняю:

Как работает Event Loop и почему это важно.
Какие ошибки чаще всего допускают джуны при работе с асинхронностью.
Как научиться писать понятный и предсказуемый асинхронный код.

Если асинхронность вызывает больше вопросов, чем ответов, загляните в статью - там всё по шагам. 🙂

Читать далее

Как типы делают сложные задачи простыми

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели12K

Последнюю пару лет мой мозг программиста всё больше увлекался типами, принципами функционального программирования и Typescript. По большей мере на это повлияло огромное количество времени, потраченное мной на кодовую базу Heartbeat — фулстек-приложения из трёхсот тысяч строк на Typescript, включающего в себя веб-приложение React, мобильное приложение React Native и сервер Node.js. Мой опыт работы с этой кодовой базой показал мне, что чем больше я полагаюсь на систему типов, тем больше пользы из этого извлекаю.

Написание кода в кодовой базе, полностью сделавшей упор на типы, похоже на жульничество. Часто я могу реализовать 80% новой фичи, ни разу не запустив код. Я начинаю работать над крупным рефакторингом, требующим нарушить допущение, принятое во всём коде, но вскоре выясняю, что благодаря системе типов изменения оказываются тривиальными. Простые фичи практически кодируют себя сами, потому что опечатки мгновенно отлавливаются, а половина моего кода пишется автодополнением. На вопросы от команды техподдержки о тонкостях работы какой-то фичи можно ответить при помощи Ctrl+F в коде, даже если письменной документации почти нет. Целые категории багов, с которыми мне приходилось бороться, попросту исчезли.

Я начал называть стиль кодинга, позволяющий реализовать подобное, Type Driven Development. В статье я приведу разрозненные мысли и ссылки на ресурсы, сильно повлиявшие на то, как я понимаю type driven development.
Читать дальше →

Фундаментальная математика — теория всего в IT и не только. Теория типов и формализация в Coq

Время на прочтение38 мин
Охват и читатели9.8K

У нас есть 3 "теории всего" - научная картина мира (все сводится к законам физики), информатика (все сводится к битам) и фундамент математики (все сводится к логике). Именно фундамент математики представляет особый интерес, так как он является фундаментом для двух других фундаментов и имеет глубокий философский смысл. Последние 2 года я сильно им увлекся и проделал довольно большую работу по углубленному изучению теории типов (Calculus of Constructions), и готов поделиться результатами, а также рассказать о девяти направлениях, где можно применить это на практике. Очень многое получилось лучше, чем я планировал. Изначально перспективы были не очень понятными, и поэтому я не рассказывал друзьям и коллегам про мою работу в этом направлении и называл это «Секретный Проект». Но теперь, когда многое прояснилось и получилось, можно поделиться успехом. Собственно, в этой статье я расскажу вам не только про сам фундамент математики, а еще его связь с ежедневной работой программиста, а также с Computer Science/Data Science и AI/ML. Я вам нарисую большую и красивую картину, на которой все понятно и логически следует из маленького набора правил выведений типов (11 штук) и аксиом теории множеств (9 штук).

У нас есть 3 фундамента математики — теория множеств (удобна для человека), теория типов (удобна для компьютера) и теория категорий (не знаю, зачем она вообще нужна). Они примерно одинаковой мощности и одну можно выразить внутри другой. Особый интерс представляет именно теория типов, тк ее довольно легко можно запрограммировать внутри компьютера и использовать как строгий фундамент для других теорий, который не дает совершить ошибку и проверяет каждое ваше действие.

Читать далее

Судный день: топ-10 ошибок в C и C++ проектах за 2024 год

Уровень сложностиСредний
Время на прочтение24 мин
Охват и читатели6.6K

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

Читать далее

«Непонятки» в изучении программирования

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели8.4K

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

Воодушевлённый таким началом я бодро взялся за чтение. И вот, где-то на первых страницах, при обсуждении типов данных, автор ничтоже сумняшеся сообщает, что целое число, которое Int, может быть Int16, Int32 и т.д., со всеми вытекающими подробностями.

И в эту минуту я чувствую как начинают шевелиться волосы на моей голове. От шока, что не понимаю, чтоэто такое.

Потом подумал, что он, наверное, это где‑то объяснил, а я пропустил. Проверил предыдущие страницы, не нашёл. Может он потом объяснит, бывают же такие преподы, сначала что‑то скажет, а потом разберёт. Посмотрел вперёд, не нашёл тоже.

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

С тех пор, если встречается в книге, что автор научит всех, даже тех, кто «никогда не программировал», то невольно вздрагиваю, как от легкого удара электрическим током.

И самое смешное, что недавно, на современном курсе по изучению программирования, услышал то же самое. Преподаватель, как только зацепился за тип Int, тут же начал рассуждать все о тех же Int16, Int32, Int64 и т. д. Как будто он попадает в разъезженную колею и уже не может из нее выбраться.

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

Читать далее

Символы Unicode: о чём должен знать каждый разработчик

Время на прочтение7 мин
Охват и читатели496K


Если вы пишете международное приложение, использующее несколько языков, то вам нужно кое-что знать о кодировке. Она отвечает за то, как текст отображается на экране. Я вкратце расскажу об истории кодировки и о её стандартизации, а затем мы поговорим о её использовании. Затронем немного и теорию информатики.
Читать дальше →

404: Почему наше сознание — баг, но мы всё равно его любим

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели5.5K

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

Читать далее

Как учиться во взрослом возрасте: 7 советов, проверенных на практике

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели14K

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

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

А ещё мы собираем обратную связь наших студентов. Недавно провели небольшое исследование успешных кейсов обучения: в рамках глубинных интервью со студентами выяснили, какие поведенческие паттерны помогли им дойти до конца с хорошими результатами. В этой статье делюсь выводами и советами, проверенными на практике. Что делать, чтобы ваше обучение прошло без лишнего стресса и академов?

Читать далее

Scrum is dead или почему Kanban намного эффективнее Scrum

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели16K

Методы управления проектами в сфере разработки программного обеспечения, такие как Scrum и Kanban, стали основными инструментами для команд, работающих по методологии Agile. В этой статье я рассмотрю, какие преимущества даёт Kanban по сравнению со Scrum.

Читать далее

ИИ-агенты: от теории к практике

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели29K

Два наиболее интересных похода в создании AI‑систем в 2024 — это агенты (agents, agentic AI systems) и мультиагентность (multi‑agent systems)

Ключевая черта, отличающая агентов от других AI‑систем — это автономность

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

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

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

Читать далее

Математическая продлёнка. Про НОД, НОК и суперсилу

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели5.4K

Продолжаю делиться с вами своими заметками для занятий математического кружка. Эта статья носит пятничный характер, и представляет опыт лёгкой болтовни на глубокие математические темы. Именно такие беседы с моим папой, а потом с учителями в новосибирской ФМШ когда-то привели меня в науку, и именно они оставляют у учеников ощущение прикосновения к чему-то большому и стройному, что популярные ныне стоики называли словом Логос.

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

Читать далее

RAG (Retrieval Augmented Generation) — простое и понятное объяснение

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели384K

Краткое и понятное описание подхода RAG (Retrieval Augmented Generation) при работе с большими языковыми моделями.

Читать далее

Толкаем байты, или Простейший эмулятор своими руками

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели7.6K

Есть хороший способ начать свой путь в системное программирование: написать эмулятор и ассемблер для какого-нибудь простого процессора. Сегодня популярностью в узких кругах пользуются fantasy consoles: виртуальные игровые приставки в ретродухе. Я расскажу, как создать свой вариант виртуальной приставки BytePusher с процессором, имеющим всего одну команду. Если вы интересуетесь системным программированием, любите изучать необычные архитектуры процессоров или цените произведения из области демосцены, то эта статья для вас.

Читать далее

Babysitter для больших менеджеров

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели2.5K

Привет! Меня зовут Иван, и я руковожу отделом управления проектов в ИБ Ozon. Прошёл путь от первой линии поддержки в одном из вендоров по защите информации до текущей должности, работая с различными задачами и людьми. В этой статье хочу поделиться своими наблюдениями. Надеюсь, что кому-то они дадут возможность посмотреть на происходящее вокруг с иного ракурса. 

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

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

Кто-то может сказать: «А что тут такого? Просто стандартное управление ожиданиями одной из заинтересованных сторон» и будет прав, но не совсем. Управление «вверх» — это управление не только теми ресурсами, которые тебе выделили для выполнения проекта, удовлетворение пожеланий и ожиданий высшего руководства. Это обеспечение успеха проекта, одновременное жонглирование вниманием топ-менеджеров, и это непростая задача. 

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

Читать далее

Электроника в вопросах и ответах

Время на прочтение13 мин
Охват и читатели11K

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

Не всё из предложенного в той статье оказалось реализуемо, но, в общем, на мой субъективный взгляд, эксперимент оказался весьма любопытным :)

Ответить на вопросы смежников

Информация

В рейтинге
5 684-й
Откуда
Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Менеджер проекта, Менеджер продукта
Старший