Pull to refresh
-8
4.2
Send message

Полезная физическая активность для менеджера в IT

Level of difficultyMedium
Reading time23 min
Views1.6K

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

Редкие тренировки по выходным или опора на «чудо-кресла» не решают проблему в корне. Комплексное решение требует ежедневных микродвижений, регулярных коротких упражнений и осознанного отношения к своему телу

Читать далее

Game++. run, thread, run…

Level of difficultyEasy
Reading time33 min
Views3.3K

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

В обычном программировании с блокировками, когда возникает необходимость пошарить данные, приходится использовать механизмы сериализации доступа к таким данным, чтобы операции, выполняющие работу с такими данными, были ограничены от одновременного вмешательства со стороны других потоков и возможности их поломать. В прямом смысле поломать. Даже такая простая операция, как ++count, где count имеет тип integer, требует блокировки, поскольку операция инкремента в общем случае представляет собой трехшаговую операцию (чтение, модификация, запись), которая не является атомарной. Про что-то более сложное и длительное я уже и не говорю.

За кажущейся простотой скрывается множество граблей и ловушек: взаимные блокировки (deadlock), «голодание» потоков, асинхронные ошибки. Это похоже на попытку дирижировать оркестром, где музыканты игнорируют ритм. Проще говоря, любые действия над данными могут привести к проблемам, и чтобы этого не происходило, операции над данными должны быть атомарными, это решается вводом в код примитивов синхронизации, вроде мьютексов, семафоров, спинлоков.

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

Читать далее

Что рассказали технологи про интерфейсы на производстве

Level of difficultyEasy
Reading time7 min
Views3.2K

Технологи — особенные пользователи. У них огромная ответственность, руки в перчатках, на лице — защитные очки. В цехе полутемно или светится раскалённый металл, а им нужно отследить сотни параметров техпроцесса. И им очень хочется, чтобы всё работало как часы. Правда, представления об идеальной работе у них сильно отличаются от привычного UI/UX. 

Некоторые мастера внезапно просили нас усложнить интерфейсы. 

Прямо реально усложнить: добавить меню, подменю, передвинуть кнопку, сделать крупнее. Ответ очень простой: они привыкли к старой оракловой системе с интерфейсами из кучи выпадающих меню. Некоторые по 20 лет тыкали в эти менюшки и сформировали мышечную память. Где-то людей просто бесил порядок кнопок, например: «Кнопка «Отменить» всегда была справа. Переставьте, пожалуйста!» 

Аналогично — с горячими клавишами. Если восемь лет назад мастер запомнил, что Ctrl+R означает «Контроль реза», то так и будет нажимать в новой системе, рассчитывая на знакомое поведение. Поэтому мы подняли все старые комбинации и добавили их в новый софт. Теперь работают и новые горячие клавиши, и привычные опытным мастерам аккорды. 

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

В цехах мы узнали ещё много нового про UI/UX, а заодно про себя и свою работу.

Читать далее

Как стать властелином отладчика: помогут ELF, DWARF и много магии

Level of difficultyMedium
Reading time12 min
Views3.6K

Привет, Хабр! Меня зовут Константин, я работаю в команде файлового доступа в YADRO. Помимо основной работы, я пишу в open source, работаю над несколькими проектами — в том числе над дебаггером BugStalker (BS) на Rust. 

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

Если уже решили писать свой отладчик, дочитайте до конца — там будет аналитика, которая поможет не наступить на Rust-грабли.

Читать далее

Сборка проектов Си и Си++: от простого к сложному. Часть II. Сборщики

Level of difficultyMedium
Reading time22 min
Views7.8K

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

Рецепты сборки по правилам хорошего тона должны поставляться с проектом и очень желательно, чтобы они не были привязаны к конкретной ОС или хотя бы к конкретному дистрибутиву Linux, используя специфические команды вроде apt-get, yum, emerge. Если это небольшой пет-проект выходного дня, то, конечно, в качестве рецепта сгодится и bash-скрипт. Пользователи адаптируют. Но если к проекту подключаются другие разработчики, то лучше потратить время на автоматизацию сборки, чтобы не терять его оптом в будущем. В этой части речь пойдёт об инструментах, которые используются для автоматизации процесса сборки программного обеспечения.
Читать дальше →

eBPF и его возможности

Reading time10 min
Views30K
image

Откройте для себя современные возможности ядра GNU/Linux, которые пригодятся вам для обеспечения мониторинга, наблюдаемости, безопасности, инжиниринга производительности и профилирования – всё это достижимо при помощи eBPF. Ниже будет разобрано несколько практических случаев и дана информация, касающаяся внутреннего устройства BPF.
Читать дальше →

Range-v3 в C++

Reading time4 min
Views4.3K

Привет, Хабр!

В этой статье рассмотрим Range-v3 — библиотеку, которая изменила подход к обработке последовательностей в C++ и стала основой для std::ranges в C++20.

Range-v3 — это библиотека, расширяющая стандартную библиотеку C++ возможностью работать с диапазонами вместо begin()/end(). В основе идеи лежат три концепции.

Читать далее

DeepSeek — новый ChatGPT, Qwen — новый DeepSeek? Проверяем модели в разработке, иллюстрациях и готовке

Reading time11 min
Views19K

Казалось бы, мир еще не успел оправиться от новостей о китайской нейросети, которая догнала ChatGPT и обвалила фондовый рынок. Но вот уже DeepSeek не справляется с потоком пользователей, а техногигант Alibaba презентовал обновленную модель — Qwen 2.5 Max. При этом решения из Китая не только бесплатны и с открытым кодом, но и кратно дешевле в разработке. С другой стороны, иной подход может сказаться на цензуре и «трудностях перевода» по сравнению с западными моделями.

Меня зовут Антон, я инженер по информационной безопасности в Selectel. В тексте сравню СhatGPT с двумя китайскими собратьями — Qwen и DeepSeek. Оценим их по нескольким критериям: логика, генерация изображений и исправного работоспособного кода. Добро пожаловать под кат!
Читать дальше →

Современные техники оптимизации производительности в C++. Кэш-локальность, аллокаторы и параллелизм

Level of difficultyMedium
Reading time5 min
Views7.4K

Как создать быстрый код на C++? Мы будем разбираться в современных техниках оптимизации: кэш-локальности, кастомных аллокаторах и многопоточности. Практические примеры и результаты тестов.

Читать далее

Дизайн-документ: зачем применяется, как составить и какие сервисы использовать

Level of difficultyEasy
Reading time5 min
Views2.3K

Создание документации — самая скучная часть в разработке игр. Так думают многие разработчики, а некоторые из них уверены, что «документация устаревает раньше, чем она написана». Отчасти они правы. В современной разработке игр жестким многостраничным документам нет места. Но это вовсе не значит, что документация бесполезна. Геймдизайн документ (диздок, GDD) как стандарт документации для создания игр эволюционировал вместе с индустрией.

Читать далее

Как перенести Linux Device Drivers на современные ядра

Reading time13 min
Views6.5K

Наверное, каждый разработчик рано или поздно задумывается о том, что же происходит в операционной системе на уровне ядра. Для ОС на базе ядра Linux относительно простой точкой входа является написание своих модулей. Модули по своей сути — это драйверы устройств (символьные char device, блочные block device, сетевые network device и другие).

В книге Linux Device Drivers (LDD) подробно описано, как создать свой модуль ядра для интересующего класса устройств. Однако эта книга очень устарела, поскольку в ней рассматриваются случаи, справедливые для ядра версии 2.X.X. А в 2025 году третьему изданию Linux Device Drivers исполняется 20 лет!

На сегодняшний день большинство устройств используют ядра 5.X.X или 6.X.X, в которых многое изменилось. Так и появилась идея этой статьи — адаптировать информацию из LDD под современные ядра.

Под катом рассмотрим следующие классы устройств: char device, block device и network device.

Читать далее

Безопасная работа с памятью на С++ без нарушения обратной совместимости. Библиотека MemSafe и плагин для компилятора

Level of difficultyHard
Reading time7 min
Views5.3K


Статья в продолжение темы безопасной разработки на С++ с примером работающего кода. Кратко предыдущие тезисы:


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


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


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

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

Читать дальше →

Статическая рефлексия в C++

Level of difficultyMedium
Reading time12 min
Views6.4K

Статическая рефлексия обсуждается в грядущем C++26. Wu Yongwei демонстрирует, как применять рефлексию сейчас, и показывает примеры того, что может будет возможным в C++26.

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

Читать далее

​Как создать собственное расширение компилятора C++

Level of difficultyMedium
Reading time10 min
Views7.5K


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

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

Читать дальше →

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

Level of difficultyEasy
Reading time6 min
Views24K

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

Читать далее

Финансовый учёт на примере отеля

Level of difficultyEasy
Reading time22 min
Views3K

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

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

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

Читать далее

Рендеринг текста без текстур

Reading time9 min
Views4.8K

Иногда все, что требуется — быстро вывести какой‑то текст в Renderpass. Традиционно отрисовка текста требует отрендерить все возможные символы шрифта в атлас, затем привязать полученный атлас как текстуру и затем отрендерить каждый глиф, рисуя треугольники, каждый из которых должен соотноситься с нужным глифом из текстуры атласа шрифта.

Так делает imgui, равно как и все, кто использует stb_truetype. Сам процесс приятно напоминает процесс наборного производства на физических станках.

Причудливо, правильно, но в то же время напряжно.

Если нам нужно просто вывести какое‑то сообщение для дебага? Нет ли какого‑либо более простого метода?

В данной статье я опишу метод бестекстурной отрисовки дебаг‑текста. Вдобавок, отрисовка будет производиться в один вызов draw.

Читать далее

Грязные трюки C++ из userver и Boost

Level of difficultyMedium
Reading time15 min
Views16K

Привет, я Антон Полухин из Техплатформы Екома и Райдтеха Яндекса. Моя команда разрабатывает userver — современный опенсорсный асинхронный фреймворк с богатым набором абстракций для быстрого и комфортного создания микросервисов, сервисов и утилит на C++.

Когда мы пишем какой‑то код для userver и для таких сложных проектов, как Boost, периодически мы сталкиваемся с нестандартными проблемами. И эти нестандартные проблемы требуют нестандартных решений. Вот о таких решениях мы сегодня и поговорим.

А именно:

— Посмотрим, как работают исключения на платформе Linux x86, и сделаем с ними что‑то интересное.

— Залезем ещё глубже под капот исключений и сделаем их ещё быстрее.

— Сделаем висячую ссылку на невалидный объект, и всё будет хорошо.

— А под конец то, что все любим, — погрузимся в шаблонное метапрограммирование.

Читать далее

Анализ лицевых экспрессий: от нейросетевой классификации эмоций к моделированию восприятия эксперта

Reading time12 min
Views3.8K

В последние два десятилетия появляются коммерческие варианты компьютерных систем для автоматизированного анализа выражения эмоций, такие как FaceReader (Noldus Information Technology, Нидерланды), EmoDetect (Нейроботикс, Россия), аналогичные разработки известных IT-компаний  - Affectiva, Microsoft, Amazon. Подобные системы востребованы для оценки персонала, контроля бдительности, нейромаркетинга, судебно-психологической экспертизы, проведения научных исследований в области affective science. Раньше такие задачи решались высоко квалифицированными экспертами в области анализа поведения. Такая работа крайне сложна и трудоемка. С лавинообразным ростом видеоконтента и явным недостатком экспертов использование компьютерных систем, способных надежно оценивать лицевые экспрессии по видеозаписи, стало весьма актуальным.

В настоящее время de facto доминирующим является нейросетевой подход. Идея его применения основана на: 1) концепции базовых эмоций и 2) предположении о том, что по соответствующей выборке фотографий (пока еще редко видеозаписей), аннотированной экспертами, в ряде случаев, использованием методов краудсорсинга (как это делала компания Neurodata Lab), можно научить нейросеть распознавать эмоции.

Читать далее

Как правильно разговаривать с вашим руководителем? (памятка Руководителю проектов

Level of difficultyEasy
Reading time4 min
Views16K

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

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

Вам придется научиться формулировать вашу проблему определенным образом, чтобы получать результат. Как это делать - под катом.

Это очередная статья о том, чего не расскажут на курсах РП: о тех самых софт-скиллах, которые потребуются Руководителю проектов с самого первого дня работы. Если вам интересны такие истории, читайте другие мои статьи на Хабре и подписывайтесь на мой ТГ канал "Морковка спереди, морковка сзади".

Читать далее
1
23 ...

Information

Rating
1,001-st
Registered
Activity