Search
Write a publication
Pull to refresh
9
0.2
Send message

Отладка C++ программ в ОС GNU/Linux

Reading time2 min
Views29K
Так уж случилось, что по долгу работы очень много времени провожу с операционными системами семейства GNU/Linux. Основным видом моей деятельности является разработка программного обеспечения на С++.

Так вот, основной проблемой при использовании отладчика – это отображение сложных контейнеров, например, stl-контейнеров.

Решение, которое я предлагаю, актуально для gdb. Этот отладчик поддерживает скрипты, написанные на языке python, а механизмы отображения сложных объектов, называются pretty printers. Т.е. чтобы отладчик отображал нам все правильно, необходимо указать ему где находятся скрипты с этими самыми pretty printers. Для указания отладчику дополнительных команд необходим файл .gdbinit.

Итак, попробую оформить все, как инструкцию, так и читать удобней, и сам не забуду.
Читать дальше →

Идентификация загружаемых модулей ядра Linux [ч.1]: исходные тексты

Reading time4 min
Views13K
В этом посте я расскажу о своих поисках признаков того, как можно определить, что из некоторых файлов исходных текстов собирается загружаемый модуль ядра Linux (LKM), а не обычный исполняемый файл.
Допустим, что информации о назначении исходников нет или её пытаются преднамеренно скрыть.
Upd: Объём кода > 4 Гб и надо оперативно выделить только те исходники, которые реализуют модули ядра.





#01 __KERNEL__ 


При сборке исходных текстов определён символ препроцессора __KERNEL__.

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

OpenHAB — стань программистом собственного жилища

Reading time9 min
Views202K
image
Дом — это машина для жилья
Ле Корбюзье

В этом посте я расскажу об opensource проекте домашней автоматизации openHAB.
openHAB переводится как "Open Home Automation Bus". Это значит, что он нацелен на создание универсальной платформы для объединения всей домашней «умной» техники в единую систему управления.

Что же это дает на практике? Под катом я расскажу о том, как с помощью этого решения можно создать настоящий интернет вещей в своем доме.

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

О формуле Байеса, прогнозах и доверительных интервалах

Reading time9 min
Views69K
На Хабре много статей по этой теме, но они не рассматривают практических задач. Я попытаюсь исправить это досадное недоразумение. Формула Байеса применяется для фильтрации спама, в рекомендательных сервисах и в рейтингах. Без нее значительное число алгоритмов нечеткого поиска было бы невозможно. Кроме того, это формула явилась причиной холивара среди математиков.

image

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

Настройка e-mu 0204 usb в ubuntu GNU/linux

Reading time9 min
Views39K
Пару дней назад купил я себе внешнюю звуковую карту e-mu 0204. Купил с рук, за 2 т.р. Владелец был счастлив, я то же. Оба думали, что надули друг друга. Стоит железка в магазине 4,5 т.р. Принес домой подрубил, звук сказочный. Но, обнаружился косяк. В непредсказуемые моменты времени слышны были тихие пощелкивания и перерывы звука. У меня отличные наушники ATH-SJ55. Соответствуют карточке по уровню, непонятно почему это вдруг началось. Разбираемся как исправить. Да, сразу отмечу, все эти проблемы описаны в инструкции!!! Так что весь ор вокруг карточки говорит лишь о том, что орущие просто ее не открывали. Инструкции у меня в комплекте не было, я в интернете ее позже нашел. Все настройки в статье все равно понадобятся.
Читать дальше →

Реверс-инжиниринг прошивки китайского Android-планшета

Reading time11 min
Views70K


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

Intel 82599: ограничиваем выходную скорость

Reading time3 min
Views13K
Всем привет!

В этой статье я хочу рассказать вам про одну полезную фичу, которая есть в сетевой карте Intel 82599.
Речь пойдёт об аппаратном ограничении скорости выходного потока пакетов.

К сожалению, она не доступна в линуксе «из коробки» и требуются некоторые усилия, чтобы её задействовать.
Кому интересно — добро пожаловать под кат.



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

Установка OpenFOAM на Ubuntu 14.04

Reading time3 min
Views15K

OpenFOAM — свободно распространяемый инструментарий вычислительной гидродинамики для операций с полями (скалярными, векторными и тензорными). На сегодня является одним из «законченных» и известных приложений, предназначенных для FVM-вычислений.В частности пакет позволяет решать задачи гидродинамики ньютоновских и неньютоновских вязких жидкостей как в несжимаемом, так и сжимаемом приближении с учётом конвективного теплообмена и действием сил гравитации. Для моделирования турбулентных течений возможно использование RANS-моделей, LES- и DNS-методов. Возможно решение дозвуковых, околозвуковых и сверхзвуковых задач.

На данный момент инсталляционные пакеты доступны для следующих версий ОС
  • 12.04 LTS codename precise
  • 12.10 codename quantal
  • 13.04 codename raring
  • 13.10 codename saucy

Однако, инсталляционный пакет ОС Ubuntu 14.04 отсутствует. Поэтому для версии 14.04, необходимо самостоятельно собрать OpenFOAM 2.3 Это является достаточно не простой задачей для новичков, которые недавно используют данную операционную систему.
Этому и посвящена статья.
Читать дальше →

Как собрать бинарный deb пакет: подробное HowTo

Reading time15 min
Views234K
Сегодня я расскажу на абстрактном примере как правильно создать *.deb пакет для Ubuntu/Debian. Пакет мы будем делать бинарный. Пакеты, компилирующие бинарники из исходников здесь не рассматриваются: осилив изложенные ниже знания, в дальнейшем по готовым примерам можно понять суть и действовать по аналогии :)

В статье не будет никакой лишней возни «вручную»: формат пакета эволюционировал в достаточно простую, а главное — логичную структуру, и всё делается буквально на коленке, с применением пары специализированных утилит.

В качестве бонуса в конце статьи будет пример быстрого создания собственного локального репозитория: установка пакетов из репозитория позволяет автоматически отслеживать зависимости, и конечно же! — устанавливать всё одной консольной командой на нескольких машинах :)

Для тех, кто не хочет вдаваться в мощную систему установки софта в Linux, рекомендую посетить сайт проги CheckInstall: она автоматически создаёт deb-пакет из команды «make install» ;) А мы вместе с любопытными —
поехали дальше!

15 малоизвестных команд Linux

Reading time3 min
Views318K
Каждому разработчику в определенной степени следует овладеть навыками работы в терминале. Физически находиться у компьютера не всегда возможно, поэтому приходится подключаться удаленно. И действительно, GUI-программы вполне могут с этим с правиться, но зачастую они работают медленнее, чем получение доступа через тот же терминал (в конце концов, это лишь обмен текстом).
Читать дальше →

Wi-Fi сети: проникновение и защита. 3) WPA. OpenCL/CUDA. Статистика подбора

Reading time24 min
Views365K


Баста карапузики, кончилися танцы.

В предыдущей части мы детально рассмотрели «читерские» приёмы обхода «защит» (скрытие SSID, MAC-фильтрация) и защит (WPS) беспроводных сетей. И хотя работает это в половине случаев, а иногда и чаще — когда-то игры заканчиваются и приходится браться за тяжёлую артиллерию. Вот тут-то между вашей личной жизнью и взломщиком и оказывается самое слабое звено: пароль от WPA-сети.

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

К концу статьи вы поймёте, почему ленивый 20-значный пароль из букв a-z на пару солнц более стоек, чем зубодробительный 8-значный, даже использующий все 256 значений диапазона.

Оглавление:
1) Матчасть
2) Kali. Скрытие SSID. MAC-фильтрация. WPS
3) WPA. OpenCL/CUDA. Статистика подбора
По традиции, под катом ещё 15 страниц

Микропроцессор «из гаража»

Reading time6 min
Views34K
Наверняка каждый, имеющий дело с электроникой и ПЛИС, знаком с сайтом opencores.org, где собрано множество полезных (и не очень) решений для электроники — десятки, может быть и сотни, реализаций процессоров и периферии — как оригинальных реализаций уже существующих устройств, так и новых разработок. В этой статье пойдёт речь о 32-битном микропроцессоре с оригинальной системой команд, созданном на основе платы «Марсоход2».
Читать дальше →

Вероятное будущее производства микроэлектроники: безмасочная многолучевая электронная литография от Mapper Lithography

Reading time5 min
Views45K
Кто-то вероятно уже слышал о том, что Роснано в конце 2012-го года инвестировала в компанию-разработчика оборудования электронной литографии Mapper Lithography. Что и как они делают, спасет ли это отечественную микроэлектронную промышленность — узнаем в этой статье.

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

Этот подход имеет ряд недостатков: необходимость изготовления фотошаблонов для каждой новой микросхемы (опустим тут возможность группового производства) — приводит к тому, что продукты обязаны быть крупносерийными, миллионы штук, чтобы окупать стоимость фотошаблонов (до нескольких миллионов $ на каждый тип микросхемы). И с другой стороны — длина волны света ограничивает минимальные размер рисуемых элементов. Сейчас мировая промышленность уже вплотную подошла к теоретическому пределу разрешения оптической литографии: ~35nm для сканеров NA=1.35 с ArF лазерами на длине волны 193нм и ~18нм для литографии на жестком ультрафиолете EUV (однако в серийном производстве это пока не используется).

Есть и альтернатива: экспонировать фоторезист не светом, а электронным пучком — получается электронная литография. Электронный пучок можно фокусировать в точку гораздо меньшего размера, даже 1нм не проблема, но появляются и новые проблемы.

На фотографии — симуляция попадания электрона в электронрезист, демонстрирующая проблему с разрешением электронрезиста из-за рассеяния электронов.
Читать дальше →

Как устроен музыкальный поиск. Лекция в Яндексе

Reading time5 min
Views15K
Обычно под музыкальным поиском понимают умение отвечать на текстовые запросы о музыке. Поиск должен понимать, например, что «пятница» – это не всегда день недели, или находить песню по словам «хочешь сладких апельсинов». Но этим задачи музыкального поиска не ограничиваются. Бывает, что нужно распознать песню, которую напел пользователь, или ту, которая играет в кафе. А ещё можно находить общее в композициях, чтобы рекомендовать пользователю музыку на его вкус. Как это делается и какие трудности при этом возникают студентам Малого ШАДа рассказали Елена Корнилина и Евгений Крофто.


Слайды и конспект лекции

Новый MinnowBoard – в два раза дешевле, вдвое меньше и на три года современнее

Reading time2 min
Views38K
Около года назад мы представили в блоге мини-компьютер MinnowBoard на базе процессора Intel Atom, адресованный, прежде всего, любителям создавать интеллектуальные и роботизированные устройства своими руками. В комментариях к тому и последующим постам о MinnowBoard заинтересованные пользователи не преминули отметить недостатки этого мини-ПК: высокую стоимость, устаревший процессор и избыточный размер. Тем приятней нам сегодня сообщить, что теперь у нас есть MinnowBoard, в котором все эти проблемы решены – новый MinnowBoard MAX.
Читать дальше →

Книга «Linux. Системное программирование. 2-е изд.»

Reading time2 min
Views68K


На днях у нас вышло второе издание замечательной книги «Linux. Системное программирование. 2-е изд.». Как обычно для Хабра-читателей действует скидка 20%. Акция продлится до 20 апреля. При покупке книги введите код: 1f8e5be3.
Книга доступна в печатном и электронном виде.

Аннотация:



Пишите программы, опирающиеся непосредственно на службы ядра Linux и на основные системные библиотеки. Автор этой универсальной книги, Роберт Лав, участвовал в разработке ядра Linux. Книга представляет собой руководство по системному программированию для Linux, справочный мануал по системным вызовам Linux, а также инсайдерский рассказ о том, как писать более быстрый и умный код.
Читать дальше →

Использование панели режимов QtCreator + 2 плагина

Reading time6 min
Views9.7K

В продолжение заметок по разработке плагинов для QtCreator в данной статье описывается способ размещения виджетов непосредственно в панели переключения режимов. При разрешении экрана 1920x1080 в ней остается over 373x70 пикселей свободного пространства, которое можно с пользой задействовать в своем плагине. В качестве примеров реализации приводится 2 новых плагина для QtCreator. Описания плагинов, ссылки на репозитории с исходным кодом и собранные для Windows и Linux бинарники для QtCreator 3.x.x прилагаются.
Читать дальше →

Properties framework для Qt

Reading time7 min
Views24K


Проблема

В Qt существует замечательная вещь — Q_PROPERTY, которая позволяет добавить необходимое свойство к любому QObject классу. Но в некоторых случаях пользоваться ими неудобно.

Например, у вас есть приложение, в котором существуют (или можно создавать) много различных объектов и, которые необходимо настраивать (выдавать диалог со свойствами выбранного объекта). Примером таких приложений может быть почти любая инженерная программа, редактор векторной графики, Visual Studio в конце концов.
Подробнее

Библиотека компьютерного зрения CCV 0.6 с новым классификатором изображений

Reading time1 min
Views20K


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

Information

Rating
4,209-th
Registered
Activity