Hard-Soft News

Новости железа и софта

Программирование в Qt: создаем виджет в стиле HUD

Февраль 1st, 2012

Меню с поисковой строкой
Под влиянием новых интерфейсов GNOME я решил сделать виджет для Qt – меню с поисковой строкой в верхней части. Этот виджет можно расматривать как дополнение к примерам нестандартных виджетов, описанных в. В остальной части меню отображаются команды приложения, в наименование которых входит текст, введенный в строке. Такое меню может быть полезно для пользователей, которые помнят, как называется команда, но не помнят, в каком разделе главного меню он находится, или не хотят «ползать» по бесконечным» выпадающим под-меню.

Меню с поисковой строкой

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

Поцелуи с точки зрения параноика (свободная фантазия на биологическую тему)

Январь 30th, 2012

Просьба не воспринимать все написанное ниже очень серьезно.

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

Пожалуй, самый известный пример паразита, способного контролировать нервную систему другого существа — Leucochloridium paradoxum. Этот паразит живет в телах улиток, но для успешного размножения ему нужно быть съеденным птицей. И вот, в определенный момент улитка, как зомби, выползает из укрытия и при этом еще фосфоресцирует, привлекая внимание птиц, которые улитками обычно не питаются. И это далеко не единственный паразит такого рода. Например Toxoplasma gondii, возбудитель токсоплазмоза, может проводить определённые периоды жизни в теле самых разных теплокровных животных, а вот размножаться способен только в кишечнике кошек. Поэтому, если возбудитель попадает в тело мыши или крысы, ему становится выгодно, чтобы животное-хозяин было съедено кошкой. Паразит захватывает контроль над нервной системой животного, в результате чего мыши становятся «бесстрашными» — запах кошки их больше не пугает. Соответственно для них возрастает риск быть съеденными. Важно отметить, что в остальном больные токсоплазмозом мыши ничем не отличаются от здоровых собратьев. За исключением запаха кошки они по-прежнему пугливы.

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

Разработка программ для микроконтроллеров ARM для работы на голом железе

Январь 16th, 2012

Поскольку в некоторых (правда не очень широких) кругах я считаюсь специалистом по процессором ARM и всем, что с ними связано, еще недавно мне часто задавали вопрос как установить Linux на ту или иную железку ARM. Сейчас после появления Android такие вопросы задают гораздо реже и это еще одна польза от Android (по крайней мере для меня). Главная проблема с установкой Linux ARM заключается в том, что не существует стандартный платформы ARM, подобной стандартный платформе PC. Современные системы ARM, это системы выполненные на одном кристалле, на котором помимо процессора расположены различные контроллеры. Проблема в том, что в разных моделях и архитектура контроллеры и адреса регистров, и даже значение, которые записываются в эти адреса, могут развиться даже в рамках одного модельного ряда. Это значит, что для установки Линукса на любое железо ARM необходим свой уникальный набор драйверов. Этот факт очень важно понять не только тем кто пытается поставить Линукс на ARM, но и тем, кто просто пишет программы для ARM-систем, например для микроконтроллеров. Далее мы рассмотрим три типа современных систем на основе ARM и пример программы, предназначенной для работы на голом железе микроконтроллера ARM.

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

Наконец-то

Январь 10th, 2012

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

Qt 4.7+ Практическое программирование на С++

Qt 4.7+ Практическое программирование на С++

 

The Classical Computer Science Papers Every Programmer Should Read

Декабрь 24th, 2011

Here is the list of papers on computing which I consider the Golden Hall of Classics of Computer Science.  We have already read most of these things in our textbooks and heard them on lectures. But I think it is still refreshing and broadening the mind to see the original publications that grounded many fields of CS. The text are not sorted in any way. The list is going to be updated and you are welcome to send the links to the texts you consider as important as those below.
A note about copyrights: while all these papers are freely available online (i.e. not pay-walled), I don’t store the files on my server. Following are only the links that point elsewhere.

Read more…

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

YAGF 0.8.9

Декабрь 18th, 2011

Очередной релиз. Основные новшества: функция автоматического исправления наклона страницы (deskew) и улучшенный пользовательский интерфейс.

Страница проекта:  http://symmetrica.net/cuneiform-linux/yagf-ru.html

YAGF 0.8.9

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

Безопасный запуск Linux на устройстве ARM (часть II)

Ноябрь 16th, 2011

Продолжаем обживаться в системе ARM Linux, установленной на флешку.

Первая часть

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

Безопасный запуск Linux на устройстве ARM

Ноябрь 7th, 2011

Речь пойдет о запуске полноценного дистрибутива Linux на устройствах, на которых уже установлен урезанный Linux. Проще говоря, на устройствах с Android и Angstrom.

Этот способ установки является на сегодняшний день самым безболезненным для девайса, что хорошо подходит тем, кто хочет по-прежнему пользоваться устройством по назначению, а не только как площадкой для тестирования Linux. При использовании этого способа файлы Linux вообще не будут устанавливаться на устройство с Андроидом. Вместо этого мы установим их на USB-флешку. Читать дальше…

Системные вызовы ARM Linux

Октябрь 31st, 2011

Номера и порядок передачи аргументов системных вызовов ARM Linux соответствуют таковым на платформе Intel, и это очень хорошо и правильно. Существует два режима системных вызовов – старый и новый (новый является частью стандарта EABI). Нынешние ядра ARM Linux поддерживают оба режима, но использовать режим EABI, разумеется, предпочтительнее. У двух режимов много общего: аргументы вызова передаются в регистрах r0-r6, а сам вызов выполняется с помощью инструкции SWI.
В старом режиме номер вызова является частью операнда инструкции SWI. Операнд инструкции выглядит так:

MOV r0, дескриптор_файла;
MOV r1, адрес_буфера;
MOV r2, длина_буфера;
SWI 0x900004;

В режиме EABI номер вызова передается в регистре r7, а операндом SWI всегда является значение 0×0. Еще одно отличие связано с передачей 64-битных аргументов. В обоих режимах их передают в паре 32-битных регистров, но в старом режиме это просто два следующих не занятых регистра, а в режиме EABI – следующая пара регистров, в которой первый регистр имеет четный номер. Тот же вызов _write() в режиме EABI будет выглядеть так:

MOV r0, дескриптор_файла;
MOV r1, адрес_буфера;
MOV r2, длина_буфера;
MOV r7, #4;
SWI 0x0;

Помимо прочего, между двумя режимами существует одно, не сразу заметное, различие: режим EABI может использовать как в режиме ARM MODE (32-битные инструкции), так и в более компактном THUMB MODE. Старый режим не может использоваться в THUMB MODE просто потому, что число 0×900000 не поместится в 16-битном операнде инструкции SWI режима THUMB.
Ну и напоследок, описания нескольких системных вызовов ARM Linux. Зная общий принцип, остальные описания легко «конвертировать» из описаний аналогичных вызовов для Intel.

Номер Обозначение Используемые регистры
1 sys_exit() r0
3 sys_read() r0, r1, r2
4 sys_write() r0, r1, r2
5 sys_open() r0, r1, r2
6 sys_close() r0

Самый компактный исполнимый файл для Linux

Октябрь 27th, 2011

Размер исполнимого файла обычной программы Hello World при сборке в моей системе (X86-64, Linux) после выполнения strip составляет  6208 байтов. Для ARM Linux (ARMv9) — 2720 байтов. Можно ли улучшить эти результаты? Читать дальше…