Archive for the ‘Linux’ Category

В поисках производительности

В поисках производительности — как мы сократили время каждого POST запроса на 200 мс Перевод статьи. Во время работы в нашей инструментальной панели Pro мы заметили, что поисковые запросы обслуживаются 300 мс. У нас в команде есть сотрудники, которые использовали Elasticsearch для обработки гораздо больших наборов данных, и они были удивлены тем, как медленно обрабатываются […]

Как настроить беспарольный доступ в Jenkins

Такой функционал может понадобиться для выкладывания результатов сборки на удаленной сервер с помощью команды scp или запуска команд на удаленном сервере с помощью ssh. Даже если вы решите использовать плагин дженкинса вроде Publish Over SSH, то вам придется делать эту же настройку. Будем считать, что надо выполнить команду: ssh user_name@remote_host ls -l /tmpssh user_name@remote_host ls […]

Особенности использования плагина jasperreports-maven-plugin в CentOS

Третьего дня понадобилось под CentOS мавеном собрать проект, в котором задействован плагин jasperreports-maven-plugin. Собирал как положено — мавен 3.3.3 и jdk 1.8.0. Сборка начала валиться с ошибкой: [ERROR] class file has wrong version 52.0, should be 50.0[ERROR] class file has wrong version 52.0, should be 50.0 Это навело на мысль, что плагин ищет джаву вовсе […]

Продвинутые SCTP клиент и сервер

Протокол SCTP является очень перспективным и предоставляет множество интересных возможностей. В данной заметке я рассмотрю использование продвинутых SCTP клиента и сервера из примеров netty (простые клиент и сервер рассмотрены тут: Простые SCTP клиент и сервер ). Проект будет на maven. Скорее всего с ходу вам скомпилировать примеры из репозитория (репозиторий) не удастся. Я перечислю еще […]

Разбор рекурсивной грамматики с помощью javacc

Продолжаем создавать парсеры на java с помощью javacc. В этот раз рассмотрим разбор грамматики, которую уже разбирали с помощью lex+yacc тут: ссылка. В той статье есть BNF для данного языка в понятном для yacc виде. Для простоты я опять закомментировал название пакета — если надо, раскоментируйте и ставьте свой. Я собирал с помощью make:

Использование именованных каналов и замены процессов

Использование именованных каналов и замены процессов Данная заметка является вольным переводом этой статьи http://vincebuffalo.com/2013/08/08/the-mighty-named-pipe.html Трудно не влюбиться в Unix, если вы биоинформатик. В прошлой заметке я упоминал о том, что каналы в Unix представляют собой элегантный способ взаимодействия биоинформационных программ (и вообще осуществляют взаимодействие между процессами). Исследуя другие способы сопряжения программ в Unix я открыл […]

Использование javacc для разбора SQL

Пришло время затронуть тему создания парсеров на java. Для этого воспользуемся утилитой javacc. Update. Плагин Вордпресса для подсвечивания кода стал безнадежно портить исходники — добавлять закрывающие теги там, где они не нужны, дефолтные значения у того, что он считает атрибутами тегов. Неискаженные исходники, адаптированные к javaCC версии 7.0.9 доступны тут: исходники За основу взята эта […]

Простые SCTP клиент и сервер на java

Как только вы начинаете искать работающий java код для этих классов, то получаете в выдаче устаревшие примеры (сомневаюсь, что они работали уже на момент публикации). В этой заметке я разберу пример простых клиента и сервера для протокола SCTP и типовые ошибки при сборке и запуске. Исключение вида java.lang.UnsupportedOperationException: libsctp.so.1: cannot open shared object file: No […]

Практическое использование yacc и lex

В данной заметке я рассмотрю использование связки lex + yacc (с небольшими доработками указания справедливы и для flex + Bizon). В свое время я перелопатил много статей по синтаксическому разбору, но большинство из них (самые частые — переводные статьи про установку температуры нагревателя) не объясняют как расправиться с рекурсией или сделать чтение из файла вместо […]

Как обнаружить прозрачный прокси (transparent proxy)

Иногда бывает нужно определить наличие такого прокси, допустим, при тестировании вэб-приложений. Непрозрачный прокси обнаруживается достаточно легко по source/dest IP и заголовкам, которые добавляет прокси. Оговорюсь, что мы будем слушать трафик на стороне клиента и сервера OS для анализа. Итак, обнаружение прозрачного прокси. Для этого надо сделать запрос на заведомо несуществующий IP, к примеру, на 192.168.100.100. […]