В одной из последних версий RPC-сервиса на NodeJS реализовано хранение логов в формате совместимом с CSV (разделителем выступает табуляция \t).
Читать далее «Анализ логов с от RPC-сервиса на NodeJS»Подключение к ADB через Wi-Fi (через TCP)
ADB умеет подключаться к устройствам не только через USB, но и через TCP. Порой, это бывает весьма полезным.
1. Подключаем устройство через USB, а в консоль вводим команду adb tcpip 5555
. В ответ будет выведена фраза «restarting in TCP mode port: 5555».
2. Отключаем устройство от USB, в консоль вводим команду adb connect <ip>:<port>
, где <ip> — это адрес устройства, а <port> в нашем случае — 5555. В ответ должна появится фраза «connected to 192.168.1.10:5555».
Во многих случаях достаточно выполнить лишь пункт 2 (т.е. бе предварительного подключения устройства по USB).
Проверяем, что устройство видно:
# adb devices
List of devices attached
192.168.1.10:5555 device
Соединение по TCP автоматически завершится в тот момент, когда вы подключите это устройство через USB. Также можно вручную указать ADB слушать только USB:
# adb usb
Добавление собственной библиотеки в Jupyter Notebook
- На сервере создаем каталог и помещаем туда файлы *.py
- В тетрадке Jupyter нужно импортировать ссылку на каталог:
import sys sys.path.insert(0, '/rootfolder/utils')
Далее импортируем имя файла:
import lib # в каталоге должен быть файл с именем lib.py
Примечание: если Вы обновите содержимое файла lib.py, то результат не будет отображаться, так как нужно выполнить «Restart kernel»


ViewModel в Java
Примечание: сразу уточню, что ViewModel — это не замена onSaveInstanceState(Bundle)
Ниже код ViewModel
package ag.krasnov.exampleviewmodel; import android.util.Log; import androidx.lifecycle.ViewModel; public class MyViewModel extends ViewModel { private int mCount; public int getCount() { return mCount; } public void increment() { mCount++; } }Читать далее «ViewModel в Java»
Установка библиотек для Jupyter
Переходим на сервер, авторизуемся под нужным пользователем. Активируем «переменную среду»:
cd env source web/bin/activate pip install ....
Xcode: создание пакета
Создаем пакет стандартными способами xcode
Далее можно сохранить его в любой git и применять метки (tag):
git tag -a 1.0.0 -m "version 1.0.0"
git tag
1.0.0
git push origin --tags
Особенности работы iisnode
В логах windows можно увидеть следующую ошибку:
Faulting application name: w3wp.exe, version: 10.0.14393.0, time stamp: 0x57899b8a Faulting module name: ntdll.dll, version: 10.0.14393.2969, time stamp: 0x5ccd148a Exception code: 0xc0000005 Fault offset: 0x0000000000065553 Faulting process id: 0x2694 Faulting application start time: 0x01d88ba20ec97214 Faulting application path: c:\windows\system32\inetsrv\w3wp.exe Faulting module path: C:\Windows\SYSTEM32\ntdll.dll Report Id: f0c1f728-42d5-446e-b599-6bc97223eb12 Faulting package full name: Faulting package-relative application ID:
Проблема заключалась в том, что в один момент времени процесс node.exe потребляет оперативной памяти больше 2Gb.
Читать далее «Особенности работы iisnode»Перенаправление логов в systemd
Создаем сервис:
[Unit] Description=RPC сервис After=network-online.target [Service] User=www-data Restart=on-failure # тут указываем путь к серверному приложению WorkingDirectory=/var/www/rpc-release ExecStart=/usr/bin/node /var/www/rpc-release/bin/www conf=./release.conf StandardOutput=file:/var/log/rpc/rpc-dev.log StandardError=file:/var/log/rpc/rpc-dev-error.log [Install] WantedBy=multi-user.targetЧитать далее «Перенаправление логов в systemd»
Locust: нагрузочное тестирование
Подробнее на официальном сайте: https://docs.locust.io/en/latest/quickstart.html
Создание простого теста:
from locust import HttpUser, task, between class Exists(HttpUser): wait_time = between(1, 5) @task(1) def auth(self): self.client.get("/exists")
Для проверки можно выполнить:
import requests as r base_url = 'http://localhost:5007/release' r.get(base_url + '/exists') # <Response [200]>Читать далее «Locust: нагрузочное тестирование»
Ошибки в taiga
ACCESS_REFUSED - Login was refused using authentication mechanism AMQPLAIN. For details see the broker logfile
Ошибка была в том, что был удален пользователь taiga. Чтобы исправить авторизоваться под taiga и выполнить:
sudo rabbitmqctl add_user taiga taiga sudo rabbitmqctl add_vhost taiga sudo rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"