Разработка, HowTo

PHPStorm: Запускаем тесты на удаленной машине с возможностью отладки

2018-07-11-21:10:29_373x236Не секрет, что современные среды разработки полны полезного функционала, освоение которого позволяет поднять продуктивность разработки до невероятных высот.

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

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

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

Дано:

  • окружение под vagrant (один из способов собрать такое окружение описан в соответствующей статье).

Надо:

  • запускать и отлаживать тесты не выходя из ide

Читать далее

HowTo, linux

Bash: подстановка процесса

2018-07-03-22:14:15_267x133Рассмотрим достаточно полезную штуку в консоли линукса (bash) как подстановка процесса.

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

Применима подстановка в первую очередь для того, чтобы избавиться от создания пайпов.А во вторую — для сохранения внешнего контекста при работе подпроцесса.

Избавляемся от пайпов

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

Читать далее

HowTo, linux

Linux: Очистка дюз в принтерах Epson

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

На превью как раз такая проблема — забита часть сопел.

Читать далее

HowTo, linux

Fedora: сборка пакетов из src.rpm

2018-05-19-12:35:39_1076x631Чаще всего то не требуется обычному пользователю. Но бывает ситуации, когда пакет собран с поддержкой библиотеки исключенной из дистрибутива.

Недавно это случилось с chromium в centos, а с драйверами от epson случается постоянно.

$ cd imagescan-bundle-fedora-27-1.3.23.x64.rpm/
$ ./install.sh
[sudo] пароль для penguin:
Последняя проверка окончания срока действия метаданных: 2:53:00 назад, Сб 19 мая 2018 09:42:23.
Ошибка:
 Проблема 1: conflicting requests
 - nothing provides libboost_filesystem.so.1.64.0()(64bit) needed by imagescan-3.33.0-1epson4fedora27.x86_64
 Проблема 2: package imagescan-plugin-networkscan-1.1.1-1epson4fedora27.x86_64 requires imagescan >= 3.9.0, but none of the providers can be installed
 - conflicting requests
 - nothing provides libboost_filesystem.so.1.64.0()(64bit) needed by imagescan-3.33.0-1epson4fedora27.x86_64
 Проблема 3: package imagescan-plugin-gt-s650-1.0.0-1epson4fedora27.x86_64 requires imagescan >= 3.28.0, but none of the providers can be installed
 - conflicting requests
 - nothing provides libboost_filesystem.so.1.64.0()(64bit) needed by imagescan-3.33.0-1epson4fedora27.x86_64
 Проблема 4: package imagescan-plugin-ocr-engine-1.0.0-1epson4fedora27.x86_64 requires imagescan >= 3.14.0, but none of the providers can be installed
 - conflicting requests
 - nothing provides libboost_filesystem.so.1.64.0()(64bit) needed by imagescan-3.33.0-1epson4fedora27.x86_64

А еще это может потребоваться если мы хотим поставить пакет, который распространяется только в src.rpm.

Читать далее

HowTo, linux

Garmin в Linux: загрузка карт OSM

2018-05-12-15:21:02_1485x851Долгое время считалось, что загрузка карт в гарминовские навигаторы — это очень сложный процесс (на самом деле так и есть, особенно если вы подготавливаете карты вручную).

Но оказалось, что загружать карты все же возможно и можно делать это достаточно быстро. Нам потребуется wine, mapsource и дампы карты проекта gis-lab.

Читать далее

Разработка, HowTo

Android Studio: на устройстве не осталось свободного места

2018-05-09-13:48:05_911x394Кто из вас не сталкивался с этим сообщением при обновлении студии под linux? Пожалуй каждый, кому доводилось с ней работать эту ошибку уже видел хотя бы раз и спешно шел в гугель для поиска ответа на вопрос что же ей не нравится и как это фиксить.

java.io.IOException: На устройстве не осталось свободного места
java.io.IOException: No space left on device

И так каждый раз. А вся проблема в том, что студия использует /tmp для распаковки установочных архивов перед копированием.

И чаще всего места там катастрофически недостает.

$ df -h |grep \/tmp
tmpfs 3,9G 455M 3,4G 12% /tmp

Во многих дистрибутивах размер раздела выставляется равным половине объема озу. Решений несколько и каждый применяет то, которое ему нравится больше.

Читать далее

HowTo, linux

Fedora/CentOS: Не работает vpn подключение по pptp

How_to_vpn_workИногда нам нужно подключится по протоколу PPTP к рабочему vpn (корпоративная сеть). А соединения не происходит и система показывается, что произошел сбой при попытке подключиться.

В логах наблюдается что-то подобное.

май 06 17:45:37 localhost.localdomain pppd[17294]: Connection terminated.
май 06 17:45:37 localhost.localdomain pppd[17294]: LCP: timeout sending Config-Requests

Можно запустить wireshark и посмотреть, что на каждый lcp-запрос есть lcp-ответ.

2018-05-06-19:10:05_358x148

Можно просто попробовать включить данный протокол поскольку firewalld не имеет правила по-умолчанию, которое позволяет системе принимать нужные пакеты. А именно в gre инкапсулируются пакеты lcp, которые отвечают за настройку соединения).

В интернетах часто рекомендуют делать нативное правило как-то так.

$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT
$ sudo firewall-cmd --direct --add-rule ipv6 filter INPUT 0 -p gre -j ACCEPT
$ sudo firewall-cmd --reload

Не делайте так — потом этими правилами сложнее управлять.

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

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

$ sudo firewall-cmd --zone=home --add-protocol=gre
$ sudo firewall-cmd --zone=home --query-protocol=gre

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

Не забудьте указать нужную зону через параметр —zone как в первом, так и во втором случае.

$ sudo firewall-cmd --permanent --zone=home --add-protocol=gre
$ sudo firewall-cmd --permanent --zone=home --query-protocol=gre
$ sudo firewall-cmd --reload

Дальше могут быть проблемы с авторизацией, но это совсем другая история.

Литература