Все потоки
Поиск
Написать публикацию
Обновить
222.47

C *

Типизированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Подводные камни устройства карты видимости в СУБД PostgreSQL

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров2.3K

Карта видимости - это достаточно простой механизм в СУБД PostgreSQL, но даже он имеет множество интересных тайн, если погрузиться в детали реализации.

В этой статье мы выясним:

1. Какие особенности есть у механизма сбрасывания и установки бита полной видимости.

2. Как Index only scan использует бит полной видимости.

3. Зачем записывать информацию об изменении карты видимости в WAL.

4. Каким образом карта видимости участвует в оптимизации предвыборки Bitmap scan.

5. Зачем механизму оценки селективности нужна карта видимости.

Читать далее

Ему не место на помойке: хакаем 15-летний электронный переводчик и пишем под него приложения

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

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

Я всегда любил находить новые применения стареньким девайсам, даже если обход защиты и разработка для них чего-то полезного занимала у меня некоторое время. И если с прошлыми моими статьями, где я привносил новую жизнь смартфонам на Android 2.3, а затем и на Android 1.5, всё понятно – девайсы получили возможность не только быть звонилками, но и вполне полноценными смартфонами, то в случае таких необычных девайсов, как электронные переводчики – всё гораздо интереснее, ведь по сути, это дешёвые альтернативы таким легендарным устройствам, как HP Jornada! Недавно я купил переводчик Ectaco за 1.500 рублей на Windows CE, обошел встроенную оболочку, написал программу, которая твикает реестр и даже портировал туда эмулятор NES. Интересно узнать об этом процессе во всех подробностях? Тогда добро пожаловать под кат!

Читать далее

Корутины? Простейшая имплементация на C, protothread и Arduino

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

*иногда хочется уйти от управляемых будней

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

Читать далее

Дайджест канала opensource_findings за август 2024

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров655

Привет!

Под катом множество сложных технических тем внутри питона: от генерации стратегий hypothesis до устройства тайпчекера MyPy.

В качестве тестового формата решил сделать подборку сложных технических тем, про которые писал в августе у себя в тг канале: https://t.me/opensource_findings со ссылками на полные посты.

Посмотрим, насколько такой формат работает, напишите свои мысли в комментарии! Буду благодарен обратной связи, поехали!

Читать далее

Инженер. Путь в IT

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров3.6K

Предисловие. Программирование.

Определим начальный статус, просто чтобы было понятно: времени на учёбу у всех на самом деле мало, это полностью вопрос самоорганизации рабочего пространства. 02.2024 - 39 лет, женат, двое детей, ипотека и дом с огородом, автомобиль, user Win.

Кто-то скажет:  есть чем заниматься, времени на учёбу нет.

С другой стороны — всё уже есть, дом строить не надо, жену нашёл, детей родил, дерево посадил, займусь-ка магией, ой, программированием.

Писал сам, угловато, за красотой строки идите к GPT (но это неточно).

Программист = маг. Это, собственно, моё сорокалетнее ироничное понимание глубины своего невежества в программировании. Но надо его пересмотреть исходя из тех предпосылок, что уже сложились в процессе обучения. Что же такое программист? Нам не нужно готовое определение, нужно что-то ёмкое и понятное таким новичкам, как мы. Все знают, кто такой программист, но нас это не устраивает, мы же с начала начинаем. Давайте напишем определение.

Читать далее

Демосцена и FreeBSD

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

Решил вспомнить счастливое детство и полазить по сайтам демосценеров — с удивлением обнаружил, что многие выкладывают релизы под.. FreeBSD.

FreeBSD — мягко говоря не самая подходящая система для занятия оптимизированной графикой, поэтому наличие такого количества демо создаваемых под эту систему озадачило.

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

Погрузиться в тему

Программирование на C в Linux на примере создания своей командной оболочки

Уровень сложностиСредний
Время на прочтение27 мин
Количество просмотров22K

Привет, хабр! Язык программирования C — основополагающий, как я считаю. И его знать, нет, не обходимо, но довольно желательно. Большинство языков отсылают к C, и зная C (или C++) другой язык будет даваться намного легче.

Я решил недавно улучшить свой навык владения C, путем написания проектов. Самая первая мысль, которая пришла мне на ум — это командный интерпретатор, командная оболочка, shell проще говоря. А также я расскажу о системе сборки make, и о том, как правильно писать и документировать C-код.

В этом туториале я буду использовать компилятор CLANG, а не GCC, и расскажу его преимущества

Итак, для создания своего шелла на C для Linux вам понадобится простой советский копеечный...

Узнать

Проблемы вызова Python кода из C кода

Уровень сложностиСложный
Время на прочтение5 мин
Количество просмотров7.2K

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

Меня зовут Никита Соболев, я опенсорс разработчик и core-разработчик CPython.

Давайте поговорим про одну из самых сложных частей интерпретатора CPython – вызов Python кода из C кода. Почему сложных? Потому что Python может резко и внезапно менять стейт всего кода на C. А особо злобный код на Python вообще часто приводит к [1] 88503 segmentation fault python

Данный пост создан по материалам из моего канала в Телеграмеopensource_findings: https://t.me/opensource_findings/842

Под катом – кишки питона, я предупредил!

Ужасаться здесь

Красно-черные сигналы в node.js

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

Что происходит, когда мы отправляем сигнал приложению на node.js? Когда вызываются обработчики? А где хранятся? Во всем этом мы разберемся в данной статье, начиная от пользовательского кода на javascript и до встречи с операционной системой.

Читать далее

Дымовая Завеса в Eclipse IDE

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

Прошивки часто пишут в Eclipse.

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

Именно этот аргумент огромная fun база Eclipse плагинов и приводит в качестве главного за Eclipse плагины.

В этом же тексте я написал как активировать эту пресловутую опцию даже при сборке сторонними скриптами. Причем любыми.

Читать далее

Путешествие сквозь секреты прошивок: от BIOS/UEFI до OS

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров19K

Вы когда-нибудь задумывались, что происходит, когда вы нажимаете кнопку питания на компьютере? За той краткой паузой, прежде чем экран загорится, скрывается сложный процесс. В этой статье мы погрузимся в увлекательный мир прошивок (firmware) и исследуем, как разные компоненты взаимодействуют во время загрузки системы. Поняв эти связи, вы получите четкое представление о том, как основные элементы приводят вашу систему в действие. Мы сосредоточимся на Intel архитектуре x86, хотя многие принципы применимы и к другим архитектурам.

Читать далее

Нельзя Просто Так Пойти и Купить Овцу (или Потёмкинская Деревня в Коде)

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

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

Вот буквально несколько настоящих примеров из жизни. Парад нелепости.

Как сказал мой коллега: "Формализм при ревью уже перешёл все рамки здравого смысла."

Читать далее

Книга: «Алгоритмы? Аха!»

Время на прочтение6 мин
Количество просмотров11K
image Привет, Хаброжители!

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

В число алгоритмов, рассмотренных в книге, вошли различные методы сортировки, перебор, поиск в глубину и ширину, обход графов, четыре алгоритма поиска кратчайшего пути, два алгоритма минимального остовного дерева, алгоритмы определения вершин и ребер разреза, а также поиск наибольшего паросочетания в двудольных графах и многое другое.
Читать дальше →

Ближайшие события

Возвращаясь в IT (админская байка)

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров6.2K

Волей-неволей, я оказался в другой стране. Февральский Тбилиси встретил ветрами, доброжелательными людьми, безденежьем и необходимостью (после 6-летнего перерыва) в очередной раз вкатываться в IT. И я подписался админить первый подвернувшийся проект.


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


Сама система была разработана давно уволившемся программистом и, на удивление, уже лет 5+ работала без обслуживания и, при этом, без сбоев. Картину дополняли бардак в документации (если её таковой можно было назвать) и полное отсутствие исходников парсера. Но для админских задач они, как бы, не требовались. До поры.


Уже в конце первой недели от аналитика пришла просьба: "Файл очень большой, разбирается иногда пару дней, а работает парсер абсолютно молчаливо, ничего не выдавая на экран, и, поэтому, нельзя ли отобразить процент выполнения. Желательно видный через progress, так как через него отслеживаются и другие задачи".


Упомянутая выше документация заканчивалась одной интересной строчкой: "парсинг переведён в однопоточный режим из-за "гонок"". Из этой, не до конца понятной фразы, я вынес для себя, что раз парсинг идёт однопоточно, то нет никаких сложностей извлечь данные из "/proc". Поэтому: "Да без проблем," — ответил я."

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

Как пройти интенсив Школы 21 от Сбер

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров20K

Расскажу про свой опыт прохождения интенсива в Школе 21 от Сбер.

В нем донесу много того, что поможет тебе принять решение идти или не идти на интесив!

Читать далее

Делаем из обычного пожарного дымового извещателя Рубеж ИП 212-50М2 умный датчик дыма Zigbee

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

Подвернулись мне тут абсолютно случайно несколько штук таких извещателей. Открываем паспорт, читаем - ИЗВЕЩАТЕЛЬ ПОЖАРНЫЙ ДЫМОВОЙ ОПТИКО-ЭЛЕКТРОННЫЙ АВТОНОМНЫЙ ИП 212-50М2. Производством занимается Группа Компаний «Рубеж» ООО «КБ Пожарной Автоматики».

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

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

Читать далее

Портирование Dangerous Dave для NES/Dendy

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров5.2K

Тема игр из детства до сих пор тревожит умы очень многих людей, а возможность реализовать свои фантазии в виде игры для любимой консоли вообще взрывает мозг (особенно в контексте игры, которую вы увидели на картинке ☺). И в этой статье я расскажу вам о своём опыте портирования Dangerous Dave in the Haunted Mansion для NES/Famicom/Dendy.

Читать далее

Непонятный rpc, или же первый пэт-проект или DynamicRPC

Время на прочтение17 мин
Количество просмотров1.9K

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

Читать далее

Гид по блокирующему, неблокирующему и квази-блокирующему вводу-выводу

Уровень сложностиПростой
Время на прочтение19 мин
Количество просмотров5.8K

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

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

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

В общем, хочу поделиться собственным опытом, но не откажусь и от совета в комментариях.

Читать далее

Я на дереве сижу, препроцессинг провожу

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2.2K

Согласно описанию,


Tree-sitter — это инструмент для генерации синтаксических анализаторов и библиотека инкрементного синтаксического анализа. Он может создавать конкретное синтаксическое дерево для исходного файла и эффективно обновлять синтаксическое дерево по мере редактирования исходного файла.

Но как Tree-sitter справляется с языками, в которых необходима стадия препроцессинга?

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

Вклад авторов