Pull to refresh
0
0
Александр Егоров @kagor

Пользователь

Send message

Adobe бесплатно раздает Creative Suite 2 (или же не раздает?)

Reading time2 min
Views318K
Читайте UPD7, Adobe разместила официальный ответ в своем блоге.

Акция невиданной щедрости от Adobe. Они решили раздать хоть и устаревший, но все же полный Creative Suite второй версии. Доступны версии как под Mac (PowerPC) так и под Windows.

В комплекте:
  • Creative Suite 2
  • Acrobat 3D 1.0 for Windows
  • Acrobat Standard 7.0
  • Acrobat Pro 8.0
  • Audition 3.0
  • GoLive CS2
  • Illustrator CS2
  • InCopy CS2
  • InDesign CS2
  • Photoshop CS2
  • Photoshop Elements 4.0/5.0
  • Adobe Premiere Pro 2.0


Спешите, количество скорее всего ограничено. Получить можно тут. Для получения необходима регистрация.


Скачать можно тут

UPD: Сайт слег, ключи одни и те же для всех. Под катом ключи и ссылки на софт. А так же сообщение от одного из разработчиков, говорящее что данные ключи и установщики могут использоваться только теми у кого уже есть купленная лицензия на CS2.
Читать дальше →
Total votes 194: ↑188 and ↓6+182
Comments388

Как найти PCI устройства без операционной системы

Reading time7 min
Views38K
В ходе работы нам периодически приходится сталкиваться с достаточно низкоуровневым взаимодействием с аппаратной частью. В данной статье мы хотим показать, каким образом происходит опрос PCI-устройств для их идентификации и загрузки соответствующих драйверов устройств.

В качестве минимальной базы для работы с PCI-устройствами будем использовать ядро, поддерживающее спецификацию Multiboot. Так удастся избежать необходимости писать собственный загрузочный сектор и загрузчик (loader). Кроме того, этот вопрос и так отлично освещен в интернете. В качестве загрузчика будет выступать GRUB. Грузиться мы будем с флэшки, так как с нее удобно загружать и виртуальную, и реальную машину. В качестве виртуальной машины будем использовать QEMU. В качестве реальной машины должна выступать машина с обычным BIOS-ом (не UEFI), поддерживающим загрузку с USB-HDD (обычно присутствует опция Legacy USB support). Для работы понадобятся Ubuntu Linux со следующими программами: expect, qemu, grub (их можно легко установить при помощи команды sudo apt-get install). Используемый gcc должен компилировать 32х битный код.
Читать дальше →
Total votes 33: ↑32 and ↓1+31
Comments5

Системные вызовы MIPS

Reading time8 min
Views24K
Этим летом appplemac опубликовал статью, посвященную изучению ассемблера MIPS. В ней, в частности, была рассмотрена команда syscall, генерирующая системный вызов. Автор сосредоточился на объяснении ассемблера MIPS, и на мой взгляд, недостаточно подробно рассказал, что же это такое — системный вызов. Я в тот момент занимался переносом проекта под архитектуру MIPS, разбирался с прерываниями, исключениями и системными вызовами.

Сейчас, когда код уже написан и отлажен, я решил написать статью, которая бы более подробно раскрывала, как работает механизм системных вызовов в MIPS. Можно рассматривать ее как дополнение к той статье об ассемблере.
Читать дальше →
Total votes 33: ↑32 and ↓1+31
Comments7

Как malloc память ест

Reading time3 min
Views72K
Нет, здесь не будет ничего из серии «Аааа, я сделал malloc (new), и забыл сделать free (delete)!»
Здесь будет нечто изощренное: мы будем отрезать кусочки памяти по чуть-чуть, прятать их в укромное место… А когда операционная система заплатит выкуп скажет «Хватит!», мы попробуем вернуть все обратно. Казалось бы, простейшая операция выделения и освобождения памяти — ничего не предвещает беды.
Тем кому интересно как уничтожить забить память — прошу под хабракат
Взять в руки компилятор
Total votes 83: ↑57 and ↓26+31
Comments48

Зачем заземляться

Reading time3 min
Views335K
Приветствую хабровцев.

Для кого этот пост
Те кто знают и понимаю зачем нужно заземление — не откроют для себя ничего нового. Когда я сделал для себя это открытие — я с удивлением обнаружил, что многие мои знакомые (связанные с IT сферой) слабо понимают зачем вообще надо заземляться. Поэтому собственно сейчас вы видите этот пост.
Читать дальше →
Total votes 109: ↑97 and ↓12+85
Comments247

Ремонт клика мышки Logitech MX Revolution

Reading time2 min
Views145K


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

Читать дальше →
Total votes 92: ↑64 and ↓28+36
Comments94

Собираем и заставляем бегать бюджетного гексапода

Reading time11 min
Views270K
Много чего предстоит сделать, прежде чем мы дойдем до вот этой картинки:



Опуская росказни о том, как именно я пришел к мысли построить гексапода (это были тонны видео на ютубе), перейду сразу к процессу выбора деталек. Это был январь 2012-го. Я сразу знал, чего я хочу от своего робота, а чего — нет. Я хотел:

— каждая нога должна иметь 3 степени свободы — 3dof (3 dimensions of freedom). Потому что более простой вариант 2dof — не дает такого ощущения насекомого, а 4dof — излишне, 3dof и так позволяет свободно перемещать кончик ноги в 3д пространстве;
— 6 ног; снова-таки, это уже не 4 (тогда робот неуклюже скачет), но и еще и не 8, как у пауков и уже чрезмерно;
— небольшой;
— дешевый;
— минимум плат и соединений;

Пост большой.
Читать дальше →
Total votes 224: ↑222 and ↓2+220
Comments60

Шпаргалка начинающего Debian/Ubuntu администратора по управлению пакетами

Reading time3 min
Views290K
Долгое время меня глодало незнание того, как сделать некоторые элементарные вещи в дебиановских менеджерах пакетов, но, как часто бывает, спросить рядом было не у кого, а до написания куда-либо руки не доходили. И вот наконец вопросы вызрели и я написал свой вопрос в дебиановскую рассылку. Естественно оказалось что пропустил что-то очевидное, но и узнал много неочевидных полезностей, посему решил набросать шпаргалку, авось кому пригодится.
Читать дальше →
Total votes 103: ↑90 and ↓13+77
Comments64

Система расширений Qt Creator

Reading time33 min
Views81K

Предисловие


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

Введение


Это заметка, в которой я хотел бы немного описать архитектуру и систему расширений среды разработки Qt Creator. Изначально, я предполагал лишь перевести документ Writing-Qt-Cretor-plugins.pdf, но так уж вышло, что развитие Qt Creator не стоит на месте и во первых, данный документ уже не столь актуален (сам устарел, API поменялось, куски кода не полные и часто не работают), а во вторых со времени его написания появлись дополнительные возможности расширения Qt Creator, которые хотелось бы описать.

Тем не менее, не будь этого документа, не было бы и данной заметки: из него я взял очень много, вплоть до структуры поста, при этом постаравшись где-то что-то выкидывая/заменяя/добавляя сделать пост актуальным для последней на текущий момент времени версии Qt Creator 2.4.0.

Кому может быть полезен данный документ? В первую очередь это конечно же Qt-программисты, которые выбрали данную IDE как основную среду разработки.

Кроме того, благодаря продуманной системе расширений Qt Creator, данный материал будет полезен тем, кто собрался создавать собственные средства разработки, но не хотят начинать писать их с чистого листа: человек может отключить все ненужные ему расширения Qt Creator и написать свои собственные, пользуясь при этом готовыми примерами в исходниках Qt Creator.

Итак, что же нас ожидает под катом (жирным отмечены готовые разделы):

  1. Сборка Qt Creator
  2. Первое расширение
  3. Добавление новых меню и пунктов меню
  4. Архитектура Qt Creator
  5. Добавление нового редактора (Editor)
  6. Добавление боковой навигационной панели
  7. Добавление страницы в диалог настроек
  8. Добавление фильтра в диалог поиска
  9. Добавление нового типа проекта

Напомню, что Qt Creator является кросс-платформенной свободной IDE для работы с фреймворком Qt, разработанной Trolltech (Nokia). Что не мешает сделать из него простой текстовый редактор с подсветкой синтаксиса, простым отключением всех расширений. Внимание, сотни картинок!
Читать дальше →
Total votes 42: ↑42 and ↓0+42
Comments25

Сигналы и слоты в Qt5

Reading time3 min
Views34K
Qt5 alpha увидел свет. В этой статье я опишу одну из фич, над которыми работал — это новый синтаксис сигналов и слотов.

Предыдущий синтаксис


Вот как мы обычно соединяем сигнал и слот:

connect(sender, SIGNAL(valueChanged(QString,QString)),
        receiver, SLOT(updateValue(QString)) );

На самом деле макросы SIGNAL and SLOT преобразуют свои аргументы в строки. Затем QObject::connect() сравнит эти строки с данными интроспекции собранными утилитой moc.

В чем проблема этого синтаксиса?

Не смотря на то, что в целом все работает хорошо, некоторые неудобства все же есть:
Читать дальше →
Total votes 47: ↑47 and ↓0+47
Comments54

Началось тестирование Qt 5 Alpha

Reading time6 min
Views11K
Мы рады сообщить о выпуске альфа-версии Qt 5 — первого значительного релиза Qt с момента запуска сообщества Qt Project. Команда разработчиков Nokia благодарит всех энтузиастов этого комьюнити, принимающих непосредственное участие в создании Qt 5 Alpha, ведь многие возможности Qt 5 стали доступны именно благодаря их сплоченной работе. Нам очень приятно, что Qt Project стал местом, где люди объединяются, чтобы совместными усилиями развивать любимый фреймворк.

Основной целью альфа-версии Qt 5 является получение фидбека от разработчиков, который поможет улучшить все последующие релизы. В альфа-релизе Qt 5 акцент ставился на предоставлении основных модулей Qt Essentials, формирующих базовый функционал Qt 5. Это кросс-платформенные модули, достаточные для создания большинства приложений.

В виде бинарного пакета Qt 5 Alpha распространяться не будет, но для самостоятельной компиляции доступны исходные файлы. Разумеется, доступна и инструкция по компиляции.

Разработка Qt 5 началась примерно 9 месяцев назад, преследуя несколько основных целей, описанных в мае прошлого года директором по развитию Qt в Nokia Ларсом Ноллом. Ниже будет список этих целей и того, что уже было достигнуто.
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments34

Qt/Objective-C++11 или сборка Qt-проекта с помощью GCC-4.7 и Clang

Reading time6 min
Views12K
Всем доброго хабрадня!

Сегодня я расскажу уважаемым хабражителям об очередном извращении — о сборке проекта, написанного на Qt, под Mac OS X компилятором GCC-4.7.0 с примесью Clang'а (про шланг — в конце статьи, там станет понятно, зачем ещё и его приплетать будем).

Для чего нам GCC 4.7? Ну, например, чтобы использовать все те крутые фичи из стандарта C++11. Разве этого мало? Кроме поддержки нового стандарта, в нём очень много улучшений по сравнению с идущим в комплекте с Xcode GCC 4.2 (хотя он и оказывается на поверку i686-apple-darwin11-llvm-g++-4.2), так что смысл в переходе на 4.7 явно имеется. Но и проблемы присутствуют, о чём ниже.

Мы можем предположить, что нам потребуются некие фичи из Cocoa, а значит, нам потребуется компилятор Objcetive-C, а ещё лучше — Objective-C++, чтобы, например, интегрировать наше Qt-приложение в окружение Mac OS X.
Начнем!
Total votes 41: ↑34 and ↓7+27
Comments66

Альтернативный подход к проектированию ПО для Embedded

Reading time7 min
Views15K
Данный топик я решил написать после ознакомления со статьей «Два подхода к проектированию ПО для embedded». При прочтении которой я наткнулся на фразу: «Если же система собирается стать большой, соединяющей в себе много разных действий и реакций, которые к тому же критичны ко времени – то альтернативы использования ОС реального времени нет». «Как это нет?», — подумал я. Конечно, если речь идет о больших высоконагруженных системах реального времени, где используются большие процессоры, то без ОС может не обойтись, а вот для более скромных микроконтроллерных решений вполне существует альтернативный вариант. Ведь задачки можно выполнять при помощи обычного switch-case и при этом обеспечивать необходимое время реакции.

В данной статье я расскажу как это бывает
Total votes 24: ↑19 and ↓5+14
Comments47

Два подхода к проектированию ПО для embedded

Reading time9 min
Views36K
Хочу немного рассказать о двух подходах проектирования ПО в embedded. Два подхода эти – c использованием суперцикла или же с использованием RTOS (Real-Time Operation System, операционная система реального времени).

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

Надеюсь, будет интересно всем тем, кто хочет заглянуть в мир разработки для встраиваемых систем. Для тех, кто в embedded уже собаку съел, скорее всего, не будет ничего нового.
Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments49

Создание ходячего робота

Reading time3 min
Views29K
После активной учёбы в универе: лаб, курсовых, экзаменов — летом испытываю ломку чего-нибудь поделать такого интересного, мозги размять, себя порадовать.
Вот и в этот раз не обошлось — решил сделать какого-нибудь прикольного робота. Всякие машинки мне уже надоели, до мультироторных систем я еще не дорос. Решил сделать гуманоида:) Гуманоида не получилось…
Но, конечно, зажегся идеей, вспомнил детские просмотры «Терминатора» и «Звездных воин» и начал работу.

И вот что получилось:

image

В посте опишу процесс создания этой штуковины по прозвищу Тимми(иногда называю его Хромой Вася — в конце в видео будет понятно почему)
Читать дальше →
Total votes 41: ↑33 and ↓8+25
Comments26

Частичное применение и каррирование в C++

Reading time12 min
Views16K
Приветствую.

Уж не знаю, как так вышло, но игрался я на досуге с лямбда-выражениями в С++11 (о которых, к слову, я уже писал статью, снискавшую пару лет назад на удивление достаточно неплохую популярность), и под наркотическим воздействием впечатлением от языка Haskell начал разбираться с такими понятиями, как частичное применение и каррирование в контексте языка С++. И для начала, пожалуй, неплохо бы нам определиться с этими терминами.

Читать дальше →
Total votes 57: ↑54 and ↓3+51
Comments45

Обработка сообщений в ОСРВ на примере FreeRTOS

Reading time5 min
Views12K
Лого_FreeRTOS Здравствуйте. Данная статья описывает одну из возможных реализаций паттерна Handler для FreeRTOS, предназначенного для обмена сообщениями между потоками. Статья предназначена в первую очередь для людей, использующих операционные системы в проектах для микроконтроллеров, энтузиастов DIY и людей изучающий ОСРВ и микроконтроллеры.
Предполагается, что читатель знаком с основными терминами, относящимися к ОСРВ, такими как очередь и поток. Более подробно ознакомиться с FreeRTOS можно в постах qdx FreeRTOS: введение и FreeRTOS: межпроцессное взаимодействие.
Те, кто участвовал а проектах для микроконтроллеров, используя FreeRTOS, возможно, сталкивался с тем, что стандартный API достаточно скуден, что приводит к необходимости написания дополнительного кода, который во многом повторяется. В моем случае ощущался недостаток инструментов для взаимодействия между потоками, а именно отсутствие унифицированной системы обмена сообщениями. Обычно для обмена инфомацией между потоками и синхронизации используются те или иные формы очередей. При этом тип информации, содержащейся в очереди, каждый раз разный, что снижает возможность повторного использования кода.
Использование унифицированной формы сообщения часто позволяет объединить несколько потоков в один Worker Thread, который обрабатывает полученные сообщения в порядке очереди.
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments6

[asio::udp] Не кроссплатформенное поведение

Reading time3 min
Views3.3K
Итак, представьте ситуацию: у нас есть кроссплатформенный сервер который должен получать данные по UDP. Вооружившись Asio вы создаете сокет, создаете буфер для принимаемых данных и начинаете слушать.

udp::socket receiver(ios, udp::endpoint(udp::v4(), port));
char read_buf[buf_len];
udp::endpoint sender_point;
receiver.receive_from(buffer(read_buf, sizeof(read_buf)), sender_point);


Что произойдет если в полученной дейтаграмме будет больше данных, чем вы выделили для буфера?
Читать дальше →
Total votes 37: ↑31 and ↓6+25
Comments16

Portable Components, кроссплатформенная библиотека для C++

Reading time13 min
Views27K
«Система должна быть спроектирована так,
чтобы оставаться как можно проще
после серии внесенных в нее изменений»

Бьярне Строуструп – программист, автор языка C++

Преамбула


В данной статье мне бы хотелось бы рассказать о довольно популярной, но так редко освещаемой на Хабре библиотеке Portable Components (сокр. POCO). Она будет полезна как разработчикам бизнес-логики программного продукта, так и в решении большинства прикладных задач. При всем изобилии кроссплатформенных библиотек для C++ всё больше людей сталкиваются с POCO лицом к лицу и не знают с чего начать. В данной статье я постараюсь описать технологии, заложенные в библиотеке и дать простейшие примеры решения некоторых задач. Также хотелось бы отметить, что за плечами библиотеки множество успешных как Open Source, так и коммерческих проектов.
Читать дальше →
Total votes 80: ↑80 and ↓0+80
Comments40

Изучаем MIPS-ассемблер

Reading time7 min
Views64K


Как говорит Википедия, MIPS – микропроцессор, разработанный компанией MIPS Computer Systems (в настоящее время MIPS Technologies) и впервые реализованный 1985 году. Существует большое количество модификаций этой архитектуры, созданных специально для 3D-моделирования, быстрой обработки чисел с плавающей запятой, многопотоковых вычислений. Различные варианты этих процессоров использутся в роутерах Cisco и Mikrotik, смартфонах, планшетах и игровых консолях.

Инструкции MIPS достаточно просты для понимания, и именно с него рекомендуется начинать изучение ассемблера. Чем сейчас, собственно, и займёмся.
Читать дальше →
Total votes 71: ↑67 and ↓4+63
Comments20

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity