Archive for the ‘Linux’ Category

Пособие по JNI

В принципе java является самодостаточным языком. Но иногда требуется задействовать код, который на низком уровне общается со специфичным аппаратным обеспечением или имеется только на языке C/C++ и его портирование в java проблематично. В данной заметке я рассмотрю использование JNI (Java Native Interface): мы вызовем в java классе методы, написанный на C, C++ и даже на […]

И снова про docker

И снова про docker Вы хотите иметь возможность развернуть свое программное обеспечение в любой системе? В данной заметке я приведу шаги для установки в системе на RedHat 6.4. Для прочих систем указания можно найти тут: Полезная ссылка: Устанавливаем net-namespaces Если у вас ядро RHEL/CentOS 6.4 kernel, то нужно будет проапдейтить его. Системы вроде RHEL 7.0, […]

Опыт использования Fabric для удаленного управления серверами

Представим себе ситуацию, когда при тестировании или администрировании нужно выполнить однотипные действия на нескольких удаленных серверах. Можно использовать для этого shell команду вида: for hostDN in host1 host2 host3; do ssh "root@$hostDN" ‘ls -l /home’; donefor hostDN in host1 host2 host3; do ssh "root@$hostDN" ‘ls -l /home’; done Но это не самое удачное решение хотя […]

Настройка обработчика SNMP trap в RedHat

Протокол SNMP широко используется для управления устройствами в IP-сетях на основе архитектур TCP/UDP. Механизм SNMP trap позволяет агенту асинхронно уведомить менеджера об изменении состояния. Разберем действия по настройке для приема SNMP trap. Первым делом надо установить нужный софт: # yum install net-snmp# yum install net-snmp В файл /etc/snmp/snmptrapd.conf надо добавить строки: # Example configuration file […]

Знакомство с Docker в RedHat 7

В данной статье я рассмотрю сетевой аспект использования Docker: как настроить полную прозрачность (full transparency) на одном компьютере — это было невозможно в RedHat 6. Теперь вместо трех серверов мы обойдемся двумя-тремя контейнерами. Подобные настройки были возможны при использовании OpenStack, он поддерживает сетевые пространства имен (network namespaces) и поэтому на единственной машине можно имитировать клиент/прокси/сервер, […]

Как сделать CSV файл совместимым с Excel

Для обмена данными многие приложения используют формат CSV. Этот формат стал своего рода стандартом и к нему выработаны требования. Перечень требований на английском (CSV well formedness): Требования к CSV В данной заметке я расскажу, как исправить нарушение требования к экранированию двойных кавычек, которое может повлечь лишние колонки при импорте данных в Excel. Будет использован небольшой […]

Использование структурной распечатки (pretty-printing) в GDB

Данный механизм в частности позволяет получить содержимое STL классов в удобочитаемой форме.  Для примера возьмем такой код: std::string fred(“abc”);std::string fred(“abc”);  Если вы попытаетесь распечатаь содержимое переменной fred в GDB, вы увидите кучу недружелюбной и не всегда нужной информации. (gdb) print fred $1 = { static npos = <optimized out="">, _M_dataplus = { <std::allocator<char>&gt; = { […]

Эмулирование задержек и потерь пакетов с помощью dummynet

При тестировании программного обеспечения иногда нужно понять, как оно поведет себя в сетях 3G/4G. Нас интересует влияние полосы пропускания, задержек, потери пакетов. При этом использоваться будет обычная локальная сеть. Рассмотрим использование dummynet для этой задачи.

Использование кода httpd (апача) в своей программе

Представим ситуацию, когда вам надо использовать в своей программе кусок кода из опенсорсного проекта. В отдельных случаях удастся этот кусок локализовать и просто скопировать не заботясь о зависимости от других библиотек того самого опенсорсного проекта. Я рассмотрю более общий случай, когда зависимости (типы данных или функции) приходится тащить с собой. В качестве примера будет функционал […]

Компактный веб сервер для тестирования

Иногда для тестирования нужен легковесный веб сервер, функционал httpd или даже lighthttpd будет избыточен. Для таких целей подойдет самодельный веб сервер: сразу после отправки ответа на запрос происходит выход. Данная версия помогла мне в случае, когда надо было имитировать обрыв ответа. Сервер посылает длину ответа 2000 в заголовке, но ответ заметно короче. Скомпилированный бинарник использовался […]