Как стать автором
Поиск
Написать публикацию
Обновить
170.37

C *

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

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

Пишем «Hello world!» для KolibriOS на C

Время на прочтение3 мин
Количество просмотров23K
Многие люди задаются вопросом: «Можно ли написать программу на Си под KolibriOS?»
Ответ: «Да, можно!», и ниже я расскажу, как это сделать.


Для написания программы, нам понадобятся:
  • Компьютер или виртуальная машина с KolibriOS (если у Вас не установлена KolibriOS, её можно скачать с нашего сайта). Напомню, что KolibriOS для работы требует минимум 8MB RAM и Pentium-совместимый CPU.
  • Флешка (если Вы пишете код не в самой Колибри).
  • Компилятор TCC (Tiny C Compiler). Сборку для Колибри (mini_c_dev) можно скачать на нашем форуме. Тема с обсуждением ktcc (Kolibri TCC) находится здесь: board.kolibrios.org/viewtopic.php?f=45&t=565
Читать дальше →

Broadway — рендеринг интерфейса GTK3 в браузере (HTML5)

Время на прочтение8 мин
Количество просмотров17K
Иногда необходимо предоставить доступ к приложениям которые не всегда есть возможность установить локально, да и не всегда это нужно. Наверное, лучшим выходом тут был бы web интерфейс на JS/PHP и иже с ними. Но возможно есть другие, более простые в некоторых случаях пути? Особенно если приложение должно оставаться портативным, а ещё лучше не делать почти ничего дополнительно в коде для реализации такого функционала.
Такую возможность предоставляет Broadway — уже давно не новый, но остающийся в тени backend для GTK3, позволяющий привнести новые возможности туда, где казалось бы уже все давно протоптано.


Подробности

Просто о make

Время на прочтение6 мин
Количество просмотров497K
Меня всегда привлекал минимализм. Идея о том, что одна вещь должна выполнять одну функцию, но при этом выполнять ее как можно лучше, вылилась в создание UNIX. И хотя UNIX давно уже нельзя назвать простой системой, да и минимализм в ней узреть не так то просто, ее можно считать наглядным примером количество- качественной трансформации множества простых и понятных вещей в одну весьма непростую и не прозрачную. В своем развитии make прошел примерно такой же путь: простота и ясность, с ростом масштабов, превратилась в жуткого монстра (вспомните свои ощущения, когда впервые открыли мэйкфайл).

Мое упорное игнорирование make в течении долгого времени, было обусловлено удобством используемых IDE, и нежеланием разбираться в этом 'пережитке прошлого' (по сути — ленью). Однако, все эти надоедливые кнопочки, менюшки ит.п. атрибуты всевозможных студий, заставили меня искать альтернативу тому методу работы, который я практиковал до сих пор. Нет, я не стал гуру make, но полученных мною знаний вполне достаточно для моих небольших проектов. Данная статья предназначена для тех, кто так же как и я еще совсем недавно, желают вырваться из уютного оконного рабства в аскетичный, но свободный мир шелла.
Читать дальше →

Релиз ReactOS 0.3.16

Время на прочтение2 мин
Количество просмотров37K
imageКоманда разработки проекта ReactOS рада сообщить вам о релизе версии 0.3.16. С момента выпуска предыдущей версии (0.3.15) прошло 8 месяцев, и за это время система претерпела значительные изменения и улучшения. По информации из баг-трекера было исправлено более 400 багов.

Одними из наиболее значимых из них являются завершение модернизации подсистемы CSRSS и первые этапы работ по рефакторингу shell32, одним из интересных результатов которого является работа нового Проводника в Windows 8.

ReactOS explorer_new в Windows 8
image

image

На что еще способен ReactOS 0.3.16

Тонкости анализа исходного кода C/C++ с помощью cppcheck

Время на прочтение27 мин
Количество просмотров64K
В предыдущем посте были рассмотрены основные возможности статического анализатора с открытым исходным кодом cppcheck. Он показывает себя не с худшей стороны даже при базовых настройках, но сегодня речь пойдёт о том, как выжать из этого анализатора максимум полезного.

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

Гарвардский курс CS50x на EdX, перевод субтитров

Время на прочтение1 мин
Количество просмотров24K
image

Курс CS50 Introduction to Computer Science снова стартовал на сайте EdX. Напомню, что это курс Гарвардского университета и посвящен он основам программирования. Про этот курс уже писали на Хабре тут и тут. В рамках курса изучаются такие языки, как C, PHP, JavaScript.
Читать дальше →

Arduino ли единым. Part 1

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

В последнее время Arduino-подобными платами уже никого не удивить, как и китайскими клонами оных. В этой статье речь пойдет о Arduino-совместимой платой от Cypress Semiconductor — CY8CKIT-042 PSoC 4 Pioneer Kit, которая может быть хорошей альтернативой как благодаря своим возможностям, так и благодаря весьма функциональной IDE.
Под катом немного фоток и скриншотов...

Динамическое расширение ядра Linux — добавляем функцию «удалить в корзину»

Время на прочтение4 мин
Количество просмотров20K
Многим пользователям Linux, особенно тем, кто по тем или иным причинам перешёл на эту ОС с Windows, не хватает возможности удаления файлов «в корзину». Кроме того, наверняка, каждый, кто пользовался Linux'ом и по ошибке удалял какой-либо файл, испытывал смешанные чувства от отсутствия простой возможности восстановить утраченные данные.

В продолжение предшествующего материала, посвящённого перехвату функций ядра Linux, представляю способ использования разработанного ранее фреймворка для создания модуля ядра Linux, реализующего возможность удаления файлов «в корзину» (just for fun).

Читать далее

Текстовый интерфейс, ч.2. Взаимодействие с пользователем

Время на прочтение9 мин
Количество просмотров25K
Итак, вторая часть. Здесь я раскрою как получить информацию от пользователя, а так же о манипуляции этими данными. Тут можно затронуть вопрос, поднятый в комментариях к предыдущему посту — «А зачем это все нужно?». Примерами применения таких интерфейсов в 21-м веке являются различные аплаянсы на виртуальных машинах, которые реализуют отдельные сервисы. Чаще всего они представляют из себя минимальный дистрибутив Linux или набор загружаемое ядро + busybox. С помощью такого интерфейса можно реализовать некий фронтэнд для сервиса, позволяющий одним взглядом определить состояние основных узлов или выполнить некие операции в удобной для пользователя форме. Примером можно назвать подобные фронтэнды у VMware ESXi (vDirector, vCenter etc), Citrix Xen, которые сочетают как мощь web-интерфейса, так и TUI как резервного интерфейса и/или интерфейса настройки/диагностики. Переключаясь по десяткам машин можно одним взглядом увидеть, все ли в порядке или быстро узнать IP адрес, полностью заблокировав юзеру доступ к консоли, показывая ему только то, что ему достаточно знать (foolproof).

Read more

Перехват функций ядра Linux с использованием исключений (kprobes своими руками)

Время на прочтение8 мин
Количество просмотров15K
Перехват функций ядра является базовым методом, позволяющим переопределять (дополнять) различные его механизмы. Исходя из того, что за исключением небольших архитектурно-зависимых частей, ядро Linux почти полностью написано на языке C, можно утверждать, что для осуществления встраивания в большинство из компонентов ядра, достаточно иметь возможность перехвата соответствующих функций ЯВУ, реализующих ту или иную логику.

Данная статья является практическим обобщением представленных ранее статей:
  1. Управляемый PageFault в ядре Linux
  2. Кошерный способ модификации защищённых от записи областей ядра Linux

Далее будет рассмотрено каким образом использование данных материалов может быть применимо в обеспечении возможности перехвата функций ядра Linux.
Читать далее

Победители 22-го конкурса IOCCC

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


Опубликован исходный код программ-победителей 22-го конкурса программ с обфусцированным кодом на C. Участвовать в конкурсе могут готовые программы размером меньше 4096 байт, при этом количество значимых символов, без учёта пробелов, знаков табуляции и знаков; ( ), не должно превышать 2048. Впрочем, в этом году многие участники воспользовались эксплоитом для бага в модуле вычисления размера программы, так что в 2013 году на конкурс были представлены, пожалуй, самые продвинутые программы за все годы проведения соревнований.

Например, вызывает искреннее восхищение эмулятор 8086-компьютера размером 4043 байта (исходный код) с полным набором инструкций 8086/186, который поддерживает флоппи-диски и HDD и PC-спикер.
Читать дальше →

Измерение ВАХ транзистора с помощью микроконтроллера Cypress

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

Шаг 1: Исходные материалы


Из исходных материалов дома были:
1. Микроконтроллер фирмы Cypress “CY8C29466 – 24PXI" и отладочная плата “PSoCEVAL1 RevE”
image image
2. Программатор PSoC MiniProg и USB-miniUSB провод для него
image image
3. Мультиметр и LCD дисплей (очень пригодятся при отладке)
image image
Читать дальше →

Балансировочный стенд своими руками на отладочной плате SiLabs C8051F120-TB

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

Если вы задумали отбалансировать что-то вращающееся, будь то колесо, винт самолета или летающая тарелка. Или Вам интересна история, как проходят рабочие будни программиста. Увлекательная история по созданию балансировочного стенда…
Добро пожаловать под хабракат

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

Праздник жизни по гиковски: с ARM и TFT LCD

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

Введение


Результат Увидев посты от dlinyj, goodic и Hoshi я в очередной раз ощутил, что Хабр — торт.

Первый пост касался написания драйвера символьного дисплея на базе HD44780 для Linux (Создание собственных драйверов под Linux от dlinyj); отличными ответами на него послужили посты хабраюзеров goodic (Поздравление по гиковски, без написания дров) и Hoshi (Новогодняя малина — прикручиваем экран HD44780 к Raspberry Pi).

Мне тоже захотелось поучаствовать в этом празднике жизни и реализовать свой аппаратный vt52-like терминал. Символьного дисплея у меня не оказалось, но был китайский dev-board на базе ARM Cortex-M3 с полноценным TFT-дисплеем 240х320, частичной документацией.

Запас энтузиазма в наличии имелся, поэтому, проснувщись в воскресенье днем (~17 MSK) я приступил к написанию embedded драйвера для данного LCD.

Если вам интересно embedded-программирование по ARM, электроника или просто результат — прошу под кат.
Читать дальше →

Кошерный способ модификации защищённых от записи областей ядра Linux

Время на прочтение4 мин
Количество просмотров11K
Те, кто хоть однажды сталкивался с необходимостью поменять что-то в ядре на лету не понаслышке знают, что данный вопрос требует детальной проработки, ведь страницы памяти ядра, хранящие код и некоторые данные, помечены как «read-only» и защищены от записи!

Для x86 известным решением является временное отключение страничной защиты посредством сброса бита WP регистра CR0. Но следует применять это с осторожностью, ведь страничная защита является основой для многих механизмов ядра. Кроме того, необходимо учитывать особенности работы на SMP-системах, когда возможно возникновение разных неприятных ситуаций.

Читать далее

Секреты тернарного оператора

Время на прочтение4 мин
Количество просмотров162K
Каждый уважающий себя программист С\С++ знает что такое тернарный оператор и большинство использовало его хотя бы раз в своих программах. Но знаете ли вы все секреты тернарного оператора? Какие потенциальные опасности сопряжены с его использованием и какие, казалось бы не связанные с его прямым предназначением, возможности в нем таятся? Эта статья дает вам возможность проверить свои знания и, возможно, узнать что-то новое.
Читать дальше →

Object oriented C

Время на прочтение4 мин
Количество просмотров31K
Вам дали задание написать программу на С, а вы уже забыли как может работать программа, в тексте которой нет ни одного слова class или virtual? Или может быть вы влюблены в простоту и строгость ANSI C, но иногда вам не хватает объектно-ориентированных свойств языков более высокого уровня? Или просто интересно взглянуть на старый добрый С с немного другой стороны? В любом случае в данной статье я покажу несколько простых приемов, с помощью которых на C вполне можно думать и писать объекто-ориентированно.
Читать дальше →

Управляемый PageFault в ядре Linux

Время на прочтение7 мин
Количество просмотров14K
Обработка исключений занимает важное место в процессе функционирования программных систем. Действительно, обеспечение своевременной и правильной реакции на нештатные события является одной из ключевых задач, выполняемых операционной системой и, в особенности, её ядром. Будучи современным, ядро Linux предоставляет возможность управления процессом обработки исключений, однако ввиду ограниченности его интерфейса, данный механизм не является распространённым среди разработчиков модулей ядра.

Далее, на примере PageFault будут рассмотрены некоторые особенности процесса обработки исключений, а также дано описание метода, позволяющего использовать данную возможность при разработке модулей ядра Linux для архитектуры x86.

Читать далее

Ну, Pebble, погоди

Время на прочтение9 мин
Количество просмотров38K
image
У меня появились очередные умные часы. Pebble.
Поначалу я хотел их отдать коллегам-гаджетоманам, не распаковывая. Ведь мои руки еще помнят часы будущего от Google и Sony. Ничего, кроме сыпи и грусти они не вызывали, хотя дизайн Sony SmartWatch был чудесным.

Ладно, думаю, один вечер поношу Pebble на левой руке. Правая рука у нас для мышки. Часы не раздражали. Я не раздражался. Мало того, в часах открылась чудесная дверь, а за дверью — клад. Натуральное SDK без дураков. То есть человек управляет устройством, а не наоборот. Старомодный язык С и черно-белый экран — разве это не чудо!? Никаких ненавистных REST, паттернов, репозиториев и unit-test-ов. Помолодев на 30 лет, я сделал три приложения и написал маленький обзор рыжего устройства и процесса программирования для Pebble.

Под кнопкой 7 картинок, 7 кусков кода, 7 ссылок и 7 вредных советов.
Читать дальше →

Вспоминая прошлое. О том, что делали 5 лет назад

Время на прочтение4 мин
Количество просмотров40K
В Украине есть такая интересная штука, как Малая Академия Наук. В общем, это что-то вроде конкурса проектов для учащихся по школам. Довольно интересные проекты попадаются, и об одном я вам сейчас поведаю.



Проектик этот — мой, случайно напомнивший о себе, пока наводился порядок в книжном шкафу. Тема его, тогда, 5 лет назад, казалась ужасно крутой и звучала так: «Методы генерации игровых карт». Чуть выше пример того, что у меня получалось. Как видите, это стилизованные под рогалик примеры уровней какой-то там несуществующей игры. Но обо всём по порядку.
Подробности

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