Обновить
315.84

Linux *

Пишем под *nix

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

Запускаем Linux на FPGA: Hello, World

Время на прочтение9 мин
Охват и читатели23K
UPD 21.09.16: BusyBox теперь успешно запускается.

image

Вдохновившись серией статей на сайте проекта Марсоход, в которых автор пытается запустить на FPGA-плате Марсоход 2 открытую систему на кристалле Amber SoC и Linux, я решил попробовать повторить этот опыт на своей плате Terasic DE2-115. Но, вместо древней как говно мамонта устаревшей версии Linux 2.4.27, я буду запускать последнюю версию Linux на данный момент — 4.8.0-rc5.
Читать дальше →

Установка Quartus II на CentOS

Время на прочтение3 мин
Охват и читатели6.1K
image

Если вы, как и я, убежденный линуксойд да еще и электронщик, желающий приобщиться к миру ПЛИС, то помимо непонимания со стороны коллег вы с большой долей вероятности столкнетесь с проблемами установки соответствующего ПО. Поэтому я постараюсь рассказать о своем пути и облегчить путь последователей. Добро пожаловать под кат.
Читать дальше →

GDB оказался крепким орешком

Время на прочтение10 мин
Охват и читатели13K
GDBGDB — инструмент, без которого тяжело обойтись. Конечно, как говорит Брукс «Качество разработки программного продукта достигается благодаря правильному проектированию, а не бесконечному тестированию». Однако, правильное проектирование не защищает от логических ошибок, опечаток, нулевых указателей и так далее. И вот здесь нам и помогают инструменты отладки кода, такие как GDB. Моя цель показать, что не менее полезными инструментами являются статические анализаторы кода, выявляющие многие ошибки на самых ранних этапах. Намного лучше, если ошибка будет исправлена в коде, ещё до этапа тестирования и отладки. Для демонстрации пользы от статического анализа кода, поищем внутри GDB ошибки с помощью анализатора PVS-Studio.
Читать дальше →

С Днем Программиста :)

Время на прочтение1 мин
Охват и читатели40K
Уважаемые пользователи Хабрасообщества, спешу вас поздравить с этим замечательным 256 днем года!

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

image

Как работать с MS Access в Linux

Время на прочтение12 мин
Охват и читатели49K
Многие пользуются Аксесом… даже в продакшене… даже по сей день. Посему, случаются моменты, когда кому-то захочется подключиться к этой БД из какого-нибудь неожиданного места. Например с юниксового сервера. Конечно же, подключиться захочется не просто так, а для использования данных из Аксеса в веб-приложении. И, без всякого сомнения, появится желание использовать эти данные совместно с информацией из других, более современных БД.

Итак, я хочу описать несколько подходов к общению с существом, называемым MS Access. Посему, исходная задача такова: установить соединение с MS Access из Ruby on Rails приложения или из PostgreSQL (используя FDW) и получить доступ к данным, желательно, в реальном времени.

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

Использование gpio-generic и irq_chip_generic для драйвера gpio

Время на прочтение6 мин
Охват и читатели4.2K

Данная статья является логичным продолжением предыдущей и её прочтение рекомендуется после ознакомления с предшествующим материалом. Текущая заметка необходима для понимания последующего материала, дополнительного понимания подсистемы gpio в целом и способствует разработке собственных gpio драйверов. Положения данной статьи уже применимы не только к нашему виртуальному драйверу gpio, но и к любому mmio gpio драйверу в целом. Речь пойдет об упомянутой в предыдущей части "оптимизации".

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

Группировка моделей телефонов Android по контейнерам Docker

Время на прочтение7 мин
Охват и читатели15K

Немного предыстории


Мобильное приложение Badoo существует для основных «нативных» платформ (Android, iOS и Windows Phone) и для мобильного веба. Несмотря на то, что в разработке мы не используем никаких кроссплатформенных фрэймворков, подавляющая часть бизнес-логики в приложениях схожа, и чтобы не дублировать функциональные тесты для всех платформ, мы пишем кроссплатформенные тесты с помощью Cucumber, Calabash и Appium. Это позволяет нам выносить в общую часть и переиспользовать в тестах для всех платформ код, отвечающий за проверку этой самой бизнес-логики. Различной же остается лишь реализация взаимодействия с приложением (более подробно мы рассказывали об этом здесь).

Когда кроссплатформенная автоматизация только начиналась (на iOS и Android), было принято решение использовать в качестве серверов Mac Mini. Это позволило сделать каждую из 8 билд-машин универсальной: на ней можно было собирать и запускать функциональные и юнит-тесты как для приложений на iOS, так и на Android. Такое решение устраивало нас практически всем до тех пор, пока количество функциональных тестов не перевалило за пять сотен для каждой платформы, а прогоны не стали требовать все больше времени. Для того чтобы удержать время прогона в разумных границах, мы постоянно работаем над оптимизацией тестов, а также добавляем новые Android-устройства (для iOS мы добавляем симуляторы по-другому). Со временем у нас появились Mac Mini с более чем 8 смартфонами. Важно отметить, что мы подключаем устройства одной модели к одному серверу, чтобы прогоны тестов были консистентны на одном агенте.
Читать дальше →

Находим ошибки в коде компилятора GCC с помощью анализатора PVS-Studio

Время на прочтение14 мин
Охват и читатели25K
GCCЯ регулярно проверяю различные открытые проекты, чтобы продемонстрировать возможности статического анализатора кода PVS-Studio (C, C++, C#). Настало время компилятора GCC. Бесспорно, GCC — это очень качественный и оттестированный проект, поэтому найти в нём хотя бы несколько ошибок уже большое достижение для любого инструмента. К моей радости, PVS-Studio справился с этой задачей. Никто не застрахован от опечаток и невнимательности. Именно поэтому PVS-Studio может стать вашей дополнительной линией обороны на фронте бесконечной войны с багами.
Читать дальше →

Docker Swarm+Consul+Gobetween в виде движка для гео распределенного кластера

Время на прочтение14 мин
Охват и читатели18K

Преамбула


Некоторе время назад перед нами стала задача спроектировать и развернуть систему для потокового видео. Суть была в массовом запуске/остановке инстанций, на которых происходит обратная сборка потокового видео и стриминг на множество media cdn провайдеров (youtube, livestream, ustream итд ) а также на собственные rtmp и ts точки назначения. Каждая инстанция требовала настройки перед запуском т.к. содержала специфическую для каждого клиента информацию. Также было понятно, что система должна работать в большом количестве регионов (как минимум во всех точках, где присутствует Амазон, а как максимум — в любом месте где можно арендовать сервер). Также основное требование — запуск инстанции в течении 1-2 секунд максимум, чтобы это было прозрачно для пользователя.


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

Анонс конференции Linux Piter 2016 — второй международной Linux-конференции в России

Время на прочтение3 мин
Охват и читатели5.3K
Сейчас мы активно готовим вторую конференцию Linux Piter и, пока формируется список докладчиков, давайте вспомним как прошла её первая часть.

image

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

По просьбе читателей, проверяем код LDAP-сервера ReOpenLDAP

Время на прочтение7 мин
Охват и читатели8.7K
В этой статье я хочу рассказать о проверке проекта ReOpenLDAP. Этот проект был реализован для решения проблем, возникших при эксплуатации OpenLDAP в инфраструктуре ПАО МегаФон — крупнейшего в России оператора мобильной связи. Сейчас ReOpenLDAP успешно работает в филиалах МегаФон по всей России, поэтому было бы интересно проверить столь высоконагруженный проект при помощи статического анализатора PVS-Studio.


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

В библиотеке шифрования Libgcrypt обнаружена критическая уязвимость, существовавшая 18 лет

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


Команда GnuPG Project опубликовала сообщение о том, что в популярной библиотеке Libgcrypt содержится критическая уязвимость. Ошибка была обнаружена экспертами Технологического института немецкого города Карлсруэ Феликсом Дёрре (Felix Dörre) и Владимиром Клебановым.

Уязвимость содержится в генераторе случайных чисел Libgcrypt — она позволяет атакующему, который получил 4640 битов из генератора легко предсказать следующие 160 бит его вывода. Это открывает возможность для взлома ключей шифрования. Ошибка присутствует в Libgcrypt и GnuPG версий, выпущенных до 17 августа 2016 года, для всех платформ. Как указано в сообщении GnuPG Project, этот баг существует с 1998 года.
Читать дальше →

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

Сделай сам веб-сервис с асинхронными очередями и параллельным исполнением

Время на прочтение5 мин
Охват и читатели29K

rq Каждый должен делать свою работу качественно и в срок. Допустим, вам нужно сделать веб-сервис классификации картинок на базе обученной нейронной сети с помощью библиотеки caffe. В наши дни качество — это асинхронные неблокирующие вызовы, возможность параллельного исполнения нескольких заданий при наличии свободных процессорных ядер, мониторинг очередей заданий… Библиотека RQ позволяет реализовать все это в сжатые сроки без изучения тонны документации.


Сделаем веб-сервис на одном сервере, ориентированный на несильно нагруженные проекты и сравнительно длительные задания. Естественно, его применение не ограничивается этими вашими нейронными сетями.

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

Обзор и программирование под стационарное интернет радио

Время на прочтение4 мин
Охват и читатели15K

Несколько лет назад я уже выкладывал статью о том как из роутера сделать сетевую звуковую карту. Тот вариант требовал наличия активного источника звука и колонок. Переносной вариант выглядел бы слишком громоздким, потому было решено приобрести готовый продукт. По причине доступности и как самое дешевое из возможных вариантов (50 евро) я выбрал renkforce IR 1.


image


Из ключевых характеристик мне были важны следующие:


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

PVS-Studio признаётся в любви к Linux

Время на прочтение10 мин
Охват и читатели28K
PVS-Studio признаётся в любви к LinuxЭто заметка о любви. О любви статического анализатора кода PVS-Studio к замечательной открытой операционной системе Linux. Эта любовь молода, трогательная и ранима. Этой любви нужно помочь укрепиться. Вы поможете, если заранее запишитесь в добровольцы для тестирования beta-версии PVS-Studio for Linux.
Читать дальше →

Вышел GIMP 2.9.4

Время на прочтение10 мин
Охват и читатели31K

Отчёт о новых функциях свободного графического редактора


Мы только что выпустили вторую dev-версию GIMP в серии 2.9.x, ставшую результатом полугода работы. GIMP 2.9.4 представляет собой мощное обновление:

  • обновленный интерфейс;
  • серьёзные улучшения в управлении цветом;
  • готовый к использованию инструмент MyPaint Brush;
  • симметричное рисование;
  • сплит-превью для фильтров на GEGL.

Вдобавок, исправлены десятки багов и сделаны многочисленные мелкие улучшения в графическом редакторе.

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

Модуль ядра Linux на Swift

Время на прочтение4 мин
Охват и читатели16K


Раз Swift компилируется в нативный код, то почему бы не попробовать на нём написать модуль ядра? Всех заинтересовавшихся просьба под кат!

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

Запуск cron внутри Docker-контейнера

Время на прочтение6 мин
Охват и читатели84K

Так уж вышло, что запуск cron в Docker-контейнере — дело весьма специфическое, если не сказать сложное. В сети полно решений и идей на эту тему. Вот один из самых популярных (и простых) способов запуска:
cron -f

Но такое решение (и большинство других тоже) обладает рядом недостатков, которые сходу обойти достаточно сложно:
  • неудобство просмотра логов (команда docker logs не работает)
  • cron использует свой собственный Environment (переменные окружения, переданные при запуске контейнера, не видимы для cron заданий)
  • невозможно нормально (gracefully) остановить контейнер командой docker stop (в конце концов в контейнер прилетает SIGKILL)
  • контейнер останавливается с ненулевым кодом ошибки
Читать дальше →

SO_TIMESTAMPING в картинках. Прием пакета

Время на прочтение11 мин
Охват и читатели12K

Бывает, что приложению требуется узнать точное время приема или отправки сетевого пакета. Например, для синхронизации часов (см. PTP, NTP) или тестирования задержек в сети (см. RFC2544).


Наивным решением будет запоминать в приложении время сразу после получения пакета от ядра (или перед отправкой ядру):


  recv(sock, buffer, length, flags);
  clock_gettime(CLOCK_REALTIME, timespec);

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


Начиная с версии 2.6.30 Линукс поддерживает опцию сокета SO_TIMESTAMPING. Она позволяет пользовательскому сокету получать временные метки для отправляемых и принимаемых пакетов. Временные метки могут быть сняты самим ядром, драйвером или сетевым устройством (см. список поддерживающих устройств и драйверов). О том, что это вообще такое и как этим пользоваться, стоит почитать в Documentation/networking/timestamping.txt


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

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