Pull to refresh
0
Александр @a-anenkovread⁠-⁠only

User

Send message

Современные команды и фичи Git, которыми стоит пользоваться

Level of difficultyEasy
Reading time5 min
Views29K

Мы, разработчики ПО, пользуемся git каждый день, однако большинство из нас применяет только самые основные команды, например, addcommitpush и pull, как будто на дворе по-прежнему 2005 год.

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

Читать далее
Total votes 75: ↑73 and ↓2+71
Comments29

Итак, вы унаследовали старую кодовую базу на C++. Что дальше?

Level of difficultyMedium
Reading time21 min
Views15K

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

Теперь вы отвечаете за кодовую базу на C++. Она большая, сложная и своеобразная; достаточно слишком долго на неё посмотреть, как она начинает разваливаться разными интересными способами. Иными словами, это легаси.

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

И что делать теперь?

Не волнуйтесь, у меня такое случалось очень много раз и в разных компаниях (кто-то язвительный может спросить: а разве кодовые базы на C++ бывают какими-то другими?), выход есть, он не особо сложен и поможет вам действительно устранять баги, добавлять фичи, а то и когда-нибудь переписать её.

В этой статье я расскажу о том, что оказалось полезным для меня, и о том, чего стоит всячески избегать.
Читать дальше →
Total votes 71: ↑70 and ↓1+69
Comments26

Решаем задачу асинхронного ввода-вывода с библиотекой Asio

Level of difficultyMedium
Reading time10 min
Views7.6K

Привет, Хабр! Меня зовут Илья Казаков, я C++ разработчик в команде систем хранения данных  компании YADRO, одна из моих задач — реализация эффективных IO-bound программ под Linux. 

На одном из проектов мы с командой использовали Asio — библиотеку C++ для сетевого и низкоуровневого программирования ввода-вывода. Она предлагает свою асинхронную модель. Технология отлично справилась с нашей задачей, и я хочу поделиться с вами опытом ее использования. Под катом расскажу, какие решения я рассматривал для асинхронного ввода-вывода и почему остановился на Asio.

Узнать больше →
Total votes 17: ↑16 and ↓1+15
Comments22

IO_URING. Часть 1. Введение

Reading time13 min
Views29K

Всем привет! Наверное, многие уже слышали о новом интерфейсе ядра Linux — io_uring. Это новый способ работы с асинхронным I/O (и не только) в Linux. Кстати, новый он не только из-за даты выхода в свет, но и в плане подходов, которые предлагает разработчику.

Заинтересовало? Более подробно разберемся под катом.

Читать далее
Total votes 37: ↑36 and ↓1+35
Comments37

Работа с бинарными файлами в стиле STL

Reading time6 min
Views30K
Я хотел бы рассказать о решении одной задачи, возникшей в процессе обучения старших школьников и младшекурсников программированию. Естественно, пишу я об этом, потому что считаю, что этот опыт может быть интересен более широкой аудитории.
Читать дальше →
Total votes 49: ↑40 and ↓9+31
Comments49

Obsidian. Путь от простой структуры к сложной и обратно. Часть 1

Level of difficultyEasy
Reading time6 min
Views26K

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

Сначала пробовал ноуш для личных записей + Confluence для записей по личным проектам + Saved Messages в тг для ссылок .
Оказалось сложно и не удобно. Год назад открыл для себя Obsidian.

Перенёс туда всю инфу со всех пространств и было ОК несколько месяцев. Но информация всё копилась и копилась.

И тут пришло время усложнений и планирования...

Читать далее
Total votes 12: ↑7 and ↓5+2
Comments24

Управление памятью в Linux

Level of difficultyEasy
Reading time7 min
Views14K

Управление памятью (memory management) является важной подсистемой операционной системы Linux, которая обеспечивает эффективное использование ресурсов физической и виртуальной памяти. В Linux управление памятью в основном подразумевает обработку запросов к памяти от процессов, выделение и освобождение блоков памяти, а также обеспечение ее эффективного использования.

Читать далее
Total votes 9: ↑8 and ↓1+7
Comments12

Полупроводниковая монополия: как одна голландская компания держит под контролем мировую индустрию микросхем

Level of difficultyEasy
Reading time13 min
Views41K

Сегодня основой экономики являются микрочипы. Почти во всех электронных устройствах присутствует по крайней мере один полупроводниковый чип: от автомобилей и мобильных телефонов до стиральных машин и самолётов. Большая часть мирового ВВП производится устройствами, использующими полупроводники. Из-за своей повсеместной распространённости и полезности они также являются стратегически важными: США и Китай стремятся контролировать поставки и получить преимущество одного над другим.

Существует несколько основных компаний-производителей микрочипов. Есть Samsung в Южной Корее, TSMC на Тайване, Huawei в Китае, а также Intel и Texas Instruments в США. Все они производят чипы на собственных фабриках. Но машины, которые они используют для производства, производятся в основном одной компанией — голландской Advanced Semiconductor Materials Lithography (ASML).

Технология, которая делает возможным производство всех передовых чипов называется литографией в крайнем ультрафиолете (EUV). Одна EUV-машина стоит более 200 миллионов долларов. Она опирается на цепочку поставок, состоящую из более чем 800 других компаний, на доставку сотен тысяч деталей со всего мира. Многие из этих компаний существуют только благодаря одному клиенту – ASML.

Сложность как технологии, так и цепочки поставок даёт ASML сильное конкурентное преимущество. Время и затраты, которые потребуются конкуренту для воспроизведения всего процесса изготовления одной машины EUV-литографии, создают очень высокие барьеры для входа. На протяжении многих лет ASML позиционировала себя как практически единственного поставщика этой передовой технологии, которая произвела революцию в массовом производстве чипов. И поэтому в течение следующих нескольких десятилетий ASML сохранит свою монополию.
Читать дальше →
Total votes 103: ↑70 and ↓33+37
Comments124

Создаем свою STL-совместимую реализацию std::allocator с лучшей производительностью

Reading time11 min
Views4.5K

Реализация защиты от сбоев из-за фрагментации кучи и повышение скорости выполнения с помощью STL-альтернативы std::allocator, работающей с блоками памяти фиксированного размера.

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

Читать далее
Total votes 18: ↑14 and ↓4+10
Comments11

Путь инженера: как эффективно пройти его от джуна до сеньора

Reading time10 min
Views6.9K

Мы все пришли в IT разными путями. Кто-то шёл по этому пути с самого детства, другие начали свой путь с выбора института и computer science в качестве основной дисциплины. Есть и те, кто свернул на эту дорогу, уже имея другую профессию и опыт работы совсем в другой сфере.

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

Читать далее
Total votes 10: ↑7 and ↓3+4
Comments5

Разработка — всё? Действительно ли нас всех заменят роботы

Level of difficultyEasy
Reading time12 min
Views10K

Александр Пряхин, руководитель разработки юнита в Авито Работа, рассказал, так ли мрачно выглядит будущее для разработчиков «из плоти и крови» на фоне активного развития No Code, Low Code и нейросетей.

Читать далее
Total votes 17: ↑14 and ↓3+11
Comments24

Домашка на лето: что почитать разработчику

Reading time7 min
Views10K

У нашего разработчика Михаила Ефремова есть хобби — читать книги и делать подборки особенно полезных. В этой статье он расскажет, как собрал книжную полку с лучшими, на его взгляд, книгами для разработчиков и поделится мнением о них. Миша подобрал книги по алгоритмам, архитектуре, базам данных, Linux/UNIX, Golang, Python.

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments3

Какая документация нужна вашему проекту и кто должен её писать

Reading time6 min
Views8.6K

Привет! Меня зовут Катя, я руководитель команды технических писателей в Ozon.

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

Разбираемся в вопросе
Total votes 20: ↑18 and ↓2+16
Comments3

Как найти тему для выступления или статьи

Reading time6 min
Views7.1K

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

Читать далее
Total votes 20: ↑16 and ↓4+12
Comments1

TDD: Что пошло не так?

Reading time5 min
Views16K

Эта статья является переводом материала «TDD: What went wrong or did it?».

В сфере разработки программного обеспечения уже давно хвалят Test Driven Development (TDD, разработка через тестирование). Однако в последнее время было сказано много резких слов в адрес TDD, поскольку его обвиняют в плохом проектировании программного обеспечения и невыполнении многих своих обещаний. Кульминацией этой тенденции стал пост Дэвида Хайнемайера Ханссона «TDD is dead. Long live testing.» (TDD мертв. Да здравствует тестирование).

Как это возможно, что одна и та же техника, которая так выгодна для стольких разработчиков, так губительна для других? В этой статье Владислав Кононов расскажет о трех заблуждениях, которые могли бы объяснить это явление.

Читать далее
Total votes 13: ↑11 and ↓2+9
Comments95

Механизм перезапускаемых последовательностей (Rseq) при работе с TCMalloc

Level of difficultyHard
Reading time11 min
Views1.8K


Кэши для отдельных ядер процессора


В TCMalloc кэши для отдельных ядер процессора реализуются при помощи перезапускаемых последовательностей (man rseq(2)) под Linux. Эту возможность ядра разработали Пол Тёрнер и Эндрю Хантер из Google, а также Мэтью Дезнойерс из EfficiOS. При помощи перезапускаемых последовательностей можно вплоть до завершения выполнять область памяти (атомарно, относительно других потоков, выполняющихся на том же ядре процессора), либо выходить из этого процесса, если ядро прервёт этот процесс, например, вытеснив его или прервавшись на обработку сигнала.

Если вы хотите организовать перезапуск системы при миграции с ядра на ядро или при вытеснении процесса, то наиболее общий случай такой операции можно оптимизировать (не переносить с ядра на ядро тот процесс, который уже выполняется), избегая атомарных операций. Можно оптимизировать и более редкий случай – вытеснение как таковое. В результате такого компромисса нужно обеспечить, чтобы на всех путях выполнения нашего кода поддерживались такие операции перезапуска. Вся последовательность, кроме окончательного сохранения в памяти, когда изменение фиксируется, должна быть приспособлена к перезапуску.
Читать дальше →
Total votes 23: ↑19 and ↓4+15
Comments1

Код без тестов — легаси

Reading time9 min
Views24K

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

Выводы неочевидны.
Total votes 29: ↑25 and ↓4+21
Comments23

Обзор книги «С++ 20 в деталях»: доступно, но не для джунов

Reading time8 min
Views19K

Привет, Хабр! Меня зовут Дмитрий Луцив, я работаю в СПбГУ на кафедре системного программирования, веду ряд IT-дисциплин на математико-механическом факультете в лабаратории компании YADRO и помогаю вузам актуализировать образовательные программы под задачи индустрии.

Я давно не программировал на С++, но стараюсь не отставать от изменений, происходящих в языке. Книга «C++ 20 в деталях» заинтересовала меня личностью автора (на секунду, это Райнер Гримм) и возможностью познакомиться с новым источником знаний о «плюсах». Решил ее прочитать, чтобы понять, кому материал будет полезен и могу ли я его рекомендовать. Под катом расскажу, что в книге хорошего, а что можно было бы сделать лучше, а также дам список дополнительных источников для специалистов разного уровня.

Читать далее
Total votes 27: ↑27 and ↓0+27
Comments14

Штучная работа. Как мы собрали суперкомпьютер для моделирования новых материалов

Level of difficultyMedium
Reading time8 min
Views7.5K

Далеко не каждый день получаешь заказ на сборку суперкомпьютерного комплекса. Эта работа и раньше не была простой, а сейчас все еще сложнее. Однако наша команда экспертов из направления HPC в К2Тех выполнила эту задачу: разработала проект, нашла поставщиков, протестировала оборудование, доставила его за Урал и установила на площадке Центра НТИ по Новым функциональным материалам в Новосибирском госуниверситете.

Под катом – подробный рассказ о том, на что ориентироваться при выборе железа для HPC, какое ПО работает на новом российском суперкомпьютере и как мы настраивали интерконнект «Ангара».

Читать далее
Total votes 40: ↑39 and ↓1+38
Comments19

Как эффективно добавлять документацию при разработке продукта?

Level of difficultyEasy
Reading time7 min
Views11K

Как технический писатель я встречала различные подходы команд и целых компаний к добавлению документации в процесс разработки продукта. В одних ситуациях они используются намеренно, а в других по воле случая, и ниже мы разберём достоинства и недостатки нескольких таких подходов, которые позволят делать выбор в пользу того или другого более обдуманно.
Читать дальше →
Total votes 42: ↑40 and ↓2+38
Comments6

Information

Rating
Does not participate
Works in
Registered
Activity

Specialization

Backend Developer, System Software Engineer
C++
Software development
Algorithms and data structures
Multiple thread
Linux
Code Optimization
System Programming
Git