#%D0%A1%D0%B8

2025-10-26

История одного патча II: приключения в FreeBSD

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

habr.com/ru/articles/960300/

#freebsd #acpi #батарея #батарея_ноутбука #си

2025-09-21

Динамическая память и реализация динамического массива в C

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

habr.com/ru/articles/949024/

#массив #память #динамическая_память #си #структуры_данных #программирование #динамический_массив

2025-09-08

Почему в Linux «Всё есть файл»? Или почему гениальные абстракции UNIX настолько гениальны

– Ваш терминал и ваше интернет соединение – это файл! – Да что вы такое говорите? – Скажите ещё, что и мышка в моей руке или жёсткий диск – это тоже файл. – Абсолютно верно! На самом деле, с точки зрения Linux – это так. В этой статье мы докажем это на практике и разберём один из самых неочевидных, но в то же время красивых механизмов UNIX-подобных систем, благодаря которому Linux прошёл проверку временем и стал одной из самых популярных операционных систем в мире.

habr.com/ru/companies/timeweb/

#linux #си #операционные_системы #низкоуровневое_программирование #сети #unix #файловая_система #жесткий_диск #железо #ядро_linux

2025-09-08

Почему в Linux «Всё есть файл»? Или почему гениальные абстракции UNIX настолько гениальны

– Ваш терминал и ваше интернет соединение – это файл! – Да что вы такое говорите? – Скажите ещё, что и мышка в моей руке или жёсткий диск – это тоже файл. – Абсолютно верно! На самом деле, с точки зрения Linux – это так. В этой статье мы докажем это на практике и разберём один из самых неочевидных, но в то же время красивых механизмов UNIX-подобных систем, благодаря которому Linux прошёл проверку временем и стал одной из самых популярных операционных систем в мире.

habr.com/ru/companies/timeweb/

#linux #си #операционные_системы #низкоуровневое_программирование #сети #unix #файловая_система #жесткий_диск #железо #ядро_linux

2025-09-02

Минимальный «эксплойт» на Си, который научил меня любить защиты

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

habr.com/ru/articles/943300/

#си #с++ #информационная_безопасность #пентест #пентестинг

2025-09-02

Как обеспечить отказоустойчивость почтового сервера Exim под нагрузкой 1 000 000 писем/мин. с помощью FUSE и Tarantool

Привет, Хабр! Меня зовут Максим Уймин, в этой статье я расскажу про почту, про распределенные очереди, немножко про FUSE и файловые системы.

habr.com/ru/companies/vk/artic

#отказоустойчивость #highload #fuse #tarantool #k8s #mail #exim #си #lua #катастрофоустойчивость

2025-09-01

3 кусочка «сахара» к синтаксису языка Lua

Lua - симпатичный и хороший язык - умещает богатый функционал в очень маленькой реализации (интерпретатор и библиотека - это всего один исполнимый файл на 300кб) - и притом изначально ориентирован на "человечный" синтаксис. Хотя он не в топе популярности, но за простоту встраивания (помимо человечности и функциональности) он используется в ряде популярных проектов - от Roblox до Tarantool, например. Однако есть мелочи которые несколько снижают радость от его использования. Когда я встроил его у себя на сайте для того чтобы сделать несколько "игровых" задач на программирование, пользователи высказывали неодобрение из-за непривычного оператора неравенства, отсутствия комбинированных операторов присваивания и пр. В этой статье мы разберемся как (и куда) внести маленькие дополнения чтобы усовершенствовать синтаксис интерпретатора, но сохранить совместимость. Результат можно "потыкать живьём" в онлайновой "песочнице".

habr.com/ru/articles/942620/

#lua #си #языки_программирования

2025-08-26

Ассемблер: рассматриваем каждый байт «Hello, World!». Как на самом деле работают программы на уровне процессора и ОС

Что на самом деле происходит, когда вы запускаете программу? Мы привыкли воспринимать это как данность, но за кадром скрывается целая вселенная — от регистров процессора и системных вызовов Linux до формата ELF и модели памяти процесса. Присоединяйтесь к погружению, где мы прольём свет на каждый байт программы «Hello, World!» и поймём, каким образом ОС её выполняет.

habr.com/ru/companies/timeweb/

#linux #системный_вызов #ассемблер #виртуальная_память #компиляция #elf #библиотеки #си #низкоуровневое_программирование #timeweb_статьи

2025-08-24

Ассемблер: Рассматриваем каждый байт «Hello, World!». Как на самом деле работают программы на уровне процессора и ОС

Что на самом деле происходит, когда вы запускаете программу? Мы привыкли воспринимать это как данность, но за кадром скрывается целая вселенная — от регистров процессора и системных вызовов Linux до формата ELF и модели памяти процесса. Присоединяйтесь к погружению, где мы прольём свет на каждый байт программы «Hello, World!» и поймём, каким образом ОС её выполняет.

habr.com/ru/companies/timeweb/

#linux #системный_вызов #ассемблер #линковка #виртуальная_память #компиляция #elf #библиотеки #си #низкоуровневое

2025-08-19

Математика, биты, магия и немного ненормального программирования на C

Доброго времени суток, господа и дамы! Иногда у некоторых людей возникает желание заняться откровенным непотребством в программировании — то, что не несет практической пользы напрямую, но помогает развлечься. И я — не исключение. В этой статье я хочу рассказать вам о лайфхаках, трюках (магических и не очень), алгоритмах на языке C! Идея написать эту статью зародилась из моего поста . В нем я рассказал о том, что через последовательность Фибоначчи можно конвертировать мили в километры с небольшой погрешностью. Увидев, что многим понравилась, я задумался: почему бы не изучить еще какие-нибудь трюки, заодно практикуясь в программировании на C? Всех, кто заинтересовался — прошу под кат.

habr.com/ru/companies/timeweb/

#c #hacks #funs #tricks #хаки #фаны #си #математика #ненормальное_программирование #timeweb_статьи

2025-08-18

Теряем невинность с Таненбаумом: Amsterdam Compiler Kit

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

habr.com/ru/articles/938120/

#ack #таненбаум #компиляторы #си #freebsd #pdp11 #pdp #unix

2025-05-11

Статический Анализ С-кода

Существует бесплатные статические анализаторы. Среди низ splint и cppcheck. Статический анализатор это такая консольная программа, которая проверяет исходные коды до компиляции. Своего рода автоматическая инспекция программ. В этом тексте я представил готовый makefile для запуска статического анализа.

habr.com/ru/articles/770506/

#splint #lint #make #mcu #firmware #C #си #static_analysis #Сppcheck #Сppcheck

2025-05-08

Я портировала знаменитую утилиту Fetch на ReactOS

Да, я действительно написала Fetch-подобную утилиту для ReactOS. В этой статье я расскажу, как написание приложения для ReactOS стало моим первым опытом. При этом я не умею программировать.

habr.com/ru/articles/907916/

#reactos #fetch #программирование #си

2025-05-07

[Перевод] Как проверить в C, является ли выражение константой

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

habr.com/ru/articles/907754/

#константы #занимательные_задачи #си

2025-05-06

Школа 21 — не единственный, но ВЕРНЫЙ ПУТЬ в IT

Привет! На дворе 2025 год, а людей, желающих "вкатиться" в IT не уменьшается. Если вы - один из них, данная статья обязательна к прочтению. Я являюсь представителем класса вкатунов в IT. Учился на аудитора, с программированием познакомился на 2м курсе, когда нужно было решить какую-то задачку "для отличников" по фин. математике на пайтоне. Для этого пришлось проходить курс на степике, после которого я понял, что сфера IT мне дико интересна, и я хочу развиваться именно в ней. Самое интересное - выбор пути, по которому пойти, чтобы вкатиться в IT. Новичку особенно сложно это сделать, ведь сейчас повсюду предлагают пройти различные курсы. На такие курсы легко купиться за счет их заголовков: "За полгода вы станете программистом и выйдете на свою первую работу!" Так ли это на самом деле? Субъективное мнение автора - не так. Суть большинства таких курсов - высасывание денег.

habr.com/ru/articles/907184/

#учебный_процесс #школа_21 #school_21 #си #в_it_без_диплома #обучение_программированию #как_стать_программистом #бассейн #интенсив #сбер

2025-04-20

Когда линковщик предаёт: как одинаковые символы из разных библиотек ломают ваше приложение

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

habr.com/ru/articles/902448/

#статическая_линковка #си

2025-03-31

Учимся рефакторить код на примере багов в TDengine, часть 3: плата за лень

Проверяя код проекта TDengine с помощью PVS-Studio, можно встретить код с запахом, канонические ошибки и опечатки. Многое из этого можно избежать, если изначально аккуратно оформлять код, делать логику простой и избегать макросов. Давайте рассмотрим некоторые фрагменты кода и подумаем, как можно провести его рефакторинг так, чтобы багам просто не было там места. В этот раз поговорим про написание кода методом Copy-Paste . С одной стороны, программисты знают, что копирование кода с последующей его модификацией провоцирует ошибки и опечатки. С другой — набирать каждый раз фрагмент кода, похожий на уже написанный, скучно и непродуктивно. Здесь важно соблюдать некий баланс, который сложно сформулировать и понимание которого приходит с опытом.

habr.com/ru/companies/pvs-stud

#си #си++ #статический_анализ_кода #программирование #рефакторинг #c #c++ #sast #static_code_analysis #TDengine #code_review #refactoring #bugs #баги #ошибки_в_коде

2025-03-21

Стековые канарейки и где они обитают. Приручаем один из ключевых харденингов

Хабр, привет! Меня зовут Мария Недяк, я специализируюсь на разработке харденингов нашей собственной микроядерной операционной системы «Лаборатории Касперского» KasperskyOS . Если вкратце: мы стараемся сделать любые атаки на нашу ОС невозможными — или хотя бы очень дорогими :-) Один из главных инструментов в нашей нелегкой работе — «канарейка» (ну или Stack Canary), которая защищает от базовой атаки переполнения стека . Лично я к работе с этой птичкой уже давно привыкла — набила руку во время многократных CTF-турниров, где без такого харденинга было никуда… Этот бэкграунд очень пригодился мне в «Лаборатории Касперского», когда перед нашей командой встала задача усилить «канарейку» в KasperskyOS. В статье я подробно объясню, как работает Stack Canary, как ее ломают — и как от этих методов взлома защититься. Сразу скажу: тема непростая, так что для самых любопытных я оставила список полезной литературы в конце текста. Поехали!

habr.com/ru/companies/kaspersk

#операционные_системы #операционная_система #канарейка #канарейка_иб #информационная_безопасность #stack_canary #stack_canaries #харденинг #защита_данных #си

2025-03-18

Учимся рефакторить код на примере багов в TDengine, часть 2: макрос, пожирающий стек

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

habr.com/ru/companies/pvs-stud

#c #cpp #си #си++ #pvsstudio #рефакторинг #информационная_безопасность #sast #alloca #сортировка_пузырьком #качество_кода #статический_анализ_кода #обзор_кода

2025-02-19

Типичные ошибки в Си: как их избежать и писать надёжный код

Типичные ошибки в Си: как их избежать и писать надёжный код Вы устали от: ❌ Тайных утечек памяти, которые пожирают ресурсы. ❌ Загадочных падений программы без объяснения причин. ❌ Указателей-призраков, стреляющих в вас из темноты сегфолтов. Эта статья — ваш щит и меч: ✅ Примеры кода , которые покажут, где прячутся ошибки. ✅ Практические советы для мгновенного улучшения кода. ✅ Инструменты-спасатели (Valgrind, Cppcheck). 🛠 «Если ваш код на Си работает — это чудо. Сделайте так, чтобы это было закономерностью». Для кого: • Начинающие разработчики, которые хотят писать код, а не баги. • Те, кто считает, что free() — это про свободу, а не про память. • Все, кто устал гуглить «почему Си опять вылетает». Погружаемся

habr.com/ru/articles/883992/

#си #программирование_на_си #ошибки_памяти #памятка

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst