Ранее мы обсуждали прикладное применение механизма обработки исключений вне среды Windows. Теперь мы более подробно рассмотрим, как это работает в Windows x64. Материал будет описан последовательно, начиная с самых основ. Поэтому многое может оказаться вам знакомым, и в этом случае такие моменты можно просто пропустить.
Читать полностью »
Рубрика «C» - 70
Исключения в Windows x64. Как это работает. Часть 1
2017-02-15 в 8:40, admin, рубрики: C, c++, exceptions, github, open source, try/except, UEFI, windows, Блог компании Аладдин Р.Д., исключения, системное программированиеА что если учить школьников одновременно ПЛИС-ам и микроконтроллерам? Более объемная картина мира или шарики за ролики?
2017-02-12 в 7:36, admin, рубрики: arduino, breadboard, C, digilent, education, linux, OpenWrt, pic32, Raspberry Pi, Verilog, vhdl, xilinx, макетная плата, образование, схемотехника, Электроника для начинающихВ последние семь лет ко мне неоднократно обращались преподаватели детских кружков с вопросом, что бы такое придумать для детей в области электроники, чтобы было 1) интересно 2) конвертировалось бы в будущую специальность и 3) давало бы что-нибудь качественно другое, чем уже устоявшиеся среди преподавателей лего-ардуины-и-разберри-паи.
Подход, который я хотел бы предложить в этой заметке — это конструирование устройств на основе макентной платы, используя примитивы разных уровней абстракции. Прежде чем описать суть предложения, я приведу аналогию. Допустим, нам нужно исследовать местность между городом A и городом B. Из A в B можно проехать на автомашине, рассматривая окрестности дороги. Но еще лучше — проехать не только на автомашине, но и потом проплыть тот же маршрут на подводной лодке, пролететь его на самолете, походить в некоторых местах пешком, а также прорубить кусок шахты на участке между городами на проходческом комбайне. По ходу дела ученик получит не только опыт вождения автомобиля, но и представление о структуре недр, морской экосистеме, нравах жителей и общей карте местности.

Теперь суть предложения. Ученик за несколько дней выполняет серию простых электронных проектов, которые имеют сходную функциональность, но используют в качестве строительных кубиков разные объекты, в том числе:
1. Микросхемы малой степени интеграции, по несколько логических элементов в каждой
2. Программируемые логические интегральные схемы, десятки тысяч ячеек с изменяемой логической функцией
3. Микроконтроллеры
4. Встраиваемые процессоры
Читать полностью »
UNIX-подобные системы содержат кучу костылей. Крах «философии UNIX»
2017-02-12 в 3:36, admin, рубрики: bash, C, GNU/Linux, open source, shell, UNIX, пайк, Разработка под Linux, Ритчи, томпсонМодераторы, при следующем внеснии мной правки я просто внесу правку в мастер-копию, размещённую на моём компьютере и пересу её сюда. Так что все ваши правки исчезнут. Если хотите сообщите мне об ошибке, используйте стандартный способ (личку). См. также: github.com/limonte/dear-habr/issues/80 .
В первой части статьи перечислю кучу костылей UNIX, и вообще разных недостатков. Во второй — про «философию UNIX». Статья написана наскоро, «полировать» дальше не хочу, скажите спасибо, что написал. Поэтому многие факты привожу без ссылок.
Необычные способы применения указателей в C-C++
2017-02-11 в 22:30, admin, рубрики: C, c++, указателиВсем привет. Указатели люди воспринимают по-разному и многие их, мягко говоря, не очень любят. Ну, если они выглядят так:
float(*(*mymegapointer)(double(*)(int)))(int)
То оно и понятно. Но с указателями также можно делать разные прикольные вещи, о некоторых из которых я расскажу.
Читать полностью »
Читаем tar за 26 строк ANSI C кода
2017-02-11 в 18:54, admin, рубрики: C, tar, архивирование данных, Программирование, метки: tarАрхиваторы — это страшно! Огромные и ужасные алгоритмы, которые обычному человеку никогда в жизни не понять! Rar, zip, gzip, tar — современные стандарты де-факто, а значит крайне сложные и навороченные штуки, которые и пытаться понять не стоит. Ну, tar выглядит попроще, может там всё не так сложно? Смотрим git с исходниками. Видим десятки файлов, многие на десятки килобайт. Мда. Видимо, тупик.
__________________| |____________________________________________
,--. ,--. ,--. ,--.
|oo | _ `. | oo | | oo|
o o|~~ |(_) / ; | ~~ | | ~~|o o o o o o o o o o o
|//| '._,' |//| |//|
__________________ ____________________________________________
| |dwb
На самом деле всё не так сложно. В документации было описано, что tar — просто способ записи нескольких файлов на ленту. Т.е. всё должно быть просто. По факту — набор вспомогательной информации для каждого файла и непосредственно его содержимое. Именно понимание этого факта и позволило сделать читатель tar-файлов в 26 строк.
Ещё один Brainfuck интерпретатор
2017-02-11 в 16:13, admin, рубрики: Brainfuck, C, Алгоритмы, интерпретатор, оптимизацияBrainfuck — язык программирования, созданный с одной целью: написать для него интерпретатор. Их было написано так много, что даже не буду давать на них ссылки. В этой статье на пальцах объясняется простой, но эффективный способ его оптимизации.

Как создавать, собирать, устанавливать и использовать пакеты с программами и библиотеками для UNIX-подобных систем
2017-02-08 в 20:38, admin, рубрики: C, c++, GNU/Linux, open source, UNIX, Разработка под LinuxРечь пойдёт о программах и библиотеках для UNIX-подобных систем, распространяемых в виде исходного кода (в том числе в виде тарболлов), написанных обычно на C и C++ (хотя этот же порядок работы может применяться к софту на любом языке). Многие вещи в этой статье написаны применительно конкретно к GNU/Linux, хотя многое из статьи может быть обобщено и на другие UNIX-подобные ОС.
Под словом «пакет» я понимаю в этой статье пакет с исходными текстами, причём не пакет конкретного дистрибутива GNU/Linux, а просто пакет, исходящий от оригинальных авторов софта.
В этой статье я разберу следующие вопросы:
- Вот скачал программу или библиотеку. Как её собрать и установить? Как воспользоваться библиотекой?
- Что такое префикс (prefix) установки? В чём разница между сборкой и установкой? Куда обычно устанавливают программы?
Я разберу только совсем базовые вещи. Те, которые типичные участники сообщества свободного ПО, программирующие на C и C++ под UNIX-подобные системы, обычно уже знают. Как создавать тарболлы (на примере «голого» make) и как устанавливать чужие тарболлы. Advanced советы по созданию «хороших» пакетов я не дам. «Продвинутые» вещи читайте в документации систем сборки, в замечательной статье «Upstream guide» от Debian (в её конце есть ещё куча ссылок о создании «хороших» пакетов). Многое в этой статье можно было сделать по-другому, моя цель: дать хотя бы один способ, не пытаться объять необъятное.
Читать полностью »
Предложи проект для проверки анализатором PVS-Studio: теперь и на GitHub
2017-02-08 в 12:33, admin, рубрики: C, C#, c++, github, open source, pvs-studio, static code analysis, Блог компании PVS-Studio
Проверка проектов с помощью статического анализатора и написание обзорных статей с найденными в них ошибками – задача не из лёгких. Почти всегда это работа не одного человека, а коллектива. Большую роль в этом процессе играет выбор проекта. От него напрямую зависит интерес читателей к той или иной статье. В этой заметке я хочу рассказать, как можно предложить интересный проект для анализа через GitHub.
Читать полностью »
Как работать с JIT
2017-02-08 в 6:25, admin, рубрики: C, c++, jit, Блог компании Badoo, Компиляторы, Программирование
В некоторых внутренних системах для быстрого поиска по большому битовому массиву мы в Badoo используем JIT. Это очень интересная и не самая известная тема. И, чтобы исправить такую досадную ситуацию, я перевел полезную статью Элая Бендерски о том, что такое JIT и как его использовать.
