MYCSS

2022-12-24

Як заощадити заряд смартфону при прослуховуванні YouTube

На сьогодні дуже важливе є питання  заощадливого використання заряду наших гаджетів.

Так, деякі матеріали в каналах YouTube можна слухати, а відео ряд не такий вже важливий, тому бажано було б мати можливість слухати з вимкненим економ нашого гаджету.

Але для прослуховування в додатку YouTube в фоні обмежена для власників не Premium підписки.

Тому виявив можливість використання YouTube в браузері Firefox для Android в режимі картинка в картинці.

Для цього необхідно в браузері Firefox для Android відкрити сайт https://youtube.com, перевести перегляд в режим для комп'ютера.


Вибирати необхідно відео в YouTube, вибрати найбільш заощадливий режиму перегляду, з Авто на 144p.

2022-12-02

Install JAVA, HADOOP, ELASTICSEARCH, CRAWLER - NUTCH on DEPLOY MODE. Problem: Store INDEX to ELASTICSEARCH (PART I)

The task is to create a web crawler of http sites using Apache-Nutch on multiple servers and store the index on the elasticsearch server. HADOOP with DFS file system is used to manage JAVA tasks.
A distributed version .job file was used to run Apache-Nutch via HADOOP.
Currently testing on one Ubuntu 22.04 LTS 'el-mix' server with IP 10.110.6.77.

Based on this :  https://phoenixnap.com/kb/install-hadoop-ubuntu

JAVA

root@el-mix:/home/developer# java -version; javac -version
bash: /usr/bin/java: No such file or directory
Command 'javac' not found, but can be installed with:
apt install default-jdk              # version 2:1.11-72build2, or
apt install openjdk-11-jdk-headless  # version 11.0.17+8-1ubuntu2~22.04
apt install openjdk-17-jdk-headless  # version 17.0.3+7-0ubuntu0.22.04.1
apt install ecj                      # version 3.16.0-1
apt install openjdk-18-jdk-headless  # version 18~36ea-1
apt install openjdk-8-jdk-headless   # version 8u312-b07-0ubuntu1
root@el-mix:/home/developer# apt install openjdk-11-jdk-headless
root@el-mix:/home/developer# java -version; javac -version
openjdk version "11.0.17" 2022-10-18
OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu222.04)
OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu222.04, mixed mode, sharing)
javac 11.0.17

Install JAVA HADOOP, ELASTICSEARCH, CRAWLER - NUTCH on DEPLOY MODE , problem with last stage of store INDEX to ELASTICSEARCH on UBUNTU 22.04 (PART II)

DEPLOY RUN

developer@el-mix:~$ ./cr-deploy.sh


Map output records=37
Map output bytes=9749
Map output materialized bytes=4790
Input split bytes=1836
Combine input records=0
Spilled Records=37
Failed Shuffles=0
Merged Map outputs=0
GC time elapsed (ms)=1189
CPU time spent (ms)=9720
Physical memory (bytes) snapshot=3526860800
Virtual memory (bytes) snapshot=32680042496
Total committed heap usage (bytes)=3002073088
Peak Map Physical memory (bytes)=328626176
Peak Map Virtual memory (bytes)=2730352640
File Input Format Counters
Bytes Read=8211
2022-12-01 02:48:46,099 ERROR indexer.IndexingJob: Indexing job did not succeed, job id: job_1669862098511_0011, job status: FAILED, reason: Task failed task_1669862098511_0011_r_000001
Job failed as tasks failed. failedMaps:0 failedReduces:1 killedMaps:0 killedReduces: 0

2022-12-01 02:48:46,119 ERROR indexer.IndexingJob: Indexer: java.lang.RuntimeException: Indexing job did not succeed, job id: job_1669862098511_0011, job status: FAILED, reason: Task failed task_1669862098511_0011_r_000001
Job failed as tasks failed. failedMaps:0 failedReduces:1 killedMaps:0 killedReduces: 0

at org.apache.nutch.indexer.IndexingJob.index(IndexingJob.java:150)
at org.apache.nutch.indexer.IndexingJob.run(IndexingJob.java:291)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:81)
at org.apache.nutch.indexer.IndexingJob.main(IndexingJob.java:300)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.hadoop.util.RunJar.run(RunJar.java:323)
at org.apache.hadoop.util.RunJar.main(RunJar.java:236)

Error running:
/home/developer/nutch/runtime/deploy/bin/nutch index -Dmapreduce.job.reduces=2 -Dmapreduce.reduce.speculative=false -Dmapreduce.map.speculative=false -Dmapreduce.map.output.compress=true crawl/crawldb -linkdb crawl/linkdb crawl/segments/20221201024052 -deleteGone
Failed with exit value 255.

2022-11-28

Скрипт для показу значень температури та вологості Bluetooth BLE термометра Xiaomi

Є Bluetooth BLE термометр Xiaomi Mijia (LYWSD03MMC) з альтернативною прошивкою PVVX.

Xiaomi Mijia (LYWSD03MMC)

Написаний простий скрипт (Python) що сканує мережу Bluetooth BLE на наявність broadcasting advertising packets.

Якщо назва пристрою починається з 'ATC' то виводяться декодовані данні телеметрії в консоль.

2022-02-14

Нотатка для себе. Proxmox easy HA script.

В деяких ситуаціях HA (High Availability) системи Proxmox для віртуальних машин не допомагає.

Такою ситуацією є випадок коли резервна копія віртуальної машини налаштована як stop mode, а не snapshot mode.

І бувають ситуації на кшталт цієї:

INFO: timeout waiting on systemd
command 'qm start 101 --skiplock' failed: exit code 255
ERROR: Backup of VM 101 failed - timeout waiting on systemd
INFO: Failed at 2022-02-11 01:15:48
INFO: Backup job finished with errors

Тому простий скрипт котрий запускає за розкладом crond вирішує цю задачу:

#!/bin/sh

vmlist="101 102"
for i in $vmlist; do
 status=$(/usr/sbin/qm status $i)
 echo $status
  if [ ! "${status}" = "status: running" ];then
   echo "BAD"
   /usr/sbin/qm start $i
  else
   echo "OK"
  fi
done
corontab -e
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command

*/30 * * * *      /home/check-vm.sh 2>1 >/dev/null

Результат роботи скрипту

 


2022-02-03

Нотатка. Оновлення запису DNS для DHCP CLIENT FreeBSD з використанням nsupdate

Є сервер FreeBSD, з використанням dhclient для мережевого інтерфейсу.

Задача, оновити  запис в власному сервері DNS з отриманим IP від DHCP сервером.

Встановлюю додатковий компонент pkg install samba-nsupdate.

nsupdate


dhclient

Створюю скрипт dhclient-exit-hooks для dhclient.

/etc/dhclient-exit-hooks
#!/bin/sh

/usr/bin/logger -t dhclient-exit-hooks REASON ${reason} IP: ${new_ip_address}
case "${reason}" in BOUND|RENEW|REBIND|REBOOT)
        echo ${new_ip_address} ${reason}
        /usr/local/etc/ddns/ddns.sh ${new_ip_address} ${reason}
;;
esac

 Створюю теку /usr/local/etc/ddns, там завантажую файл ключа ddns.key для оновлення DNS з RFC 2136 і також цей скрипт: 

 nsupdate

/usr/local/etc/ddns/ddns.sh

#!/usr/bin/env /bin/sh

IP=$1
KEY=/usr/local/etc/ddns/ddns.key
NSUPDATE=/usr/local/bin/samba-nsupdate
DNSSERVER=your_dns_server
DNSHOST=host.example.net

if [ ! -z ${IP} ];then
 echo updating:  ${IP} [ $2 ]  - ${USER}
 /usr/bin/logger -t dyndns updating:  ${IP} [ $2 ]  - ${USER}
 if [ -f ${KEY} ];then
  ${NSUPDATE} -4  -k ${KEY}  <<EOF
server ${DNSSERVER}  53
update delete ${DNSHOST}
update add ${DNSHOST} 300 A ${IP}
send
EOF
  else
   logger -t dyndns no key file ${KEY}
  fi
else
 echo IP missed
 logger -t dyndns IP missed
fi

BIND 

ddns-confgen -a hmac-sha512 -z host.example.net

# To activate this key, place the following in named.conf, and
# in a separate keyfile on the system or systems from which nsupdate
# will be run:
key "ddns-key.host.example.net" {
        algorithm hmac-sha512;
        secret "SdimvwKG5SDqeS7hD+C6ap89sRN4I2EuYrJKHFXtJ83CuUF6kbELxrv5OgVeVctzyqbafcQTGJgQh/svkv+/Yg==";
};

# Then, in the "zone" definition statement for "host.example.net",
# place an "update-policy" statement like this one, adjusted as
# needed for your preferred permissions:
update-policy {
          grant ddns-key.host.example.net zonesub ANY;
};

# After the keyfile has been placed, the following command will
# execute nsupdate using this key:
nsupdate -k 

2022-01-15

Нотатка: Динамічний таймер на базі "розумної" розетки SONOFF S26 з Tasmota та MQTT

Є завдання, вмикати освітлення у приміщенні тамбура перед квартирою, за певними персоналізованими умовами.

SONOFF S26 - Tasmota

Умови

  • ручне керування: вимикання, вмикання на короткий час, на довгий час
  • віддалене керування через MQTT брокер, вимикання, вмикання на короткий час, на середній час,на довгий час.
  • вимикання завжди за аварійним або контрольованим таймером

2022-01-10

Модифікація кнопки для дзвінка на кнопку з датчиком руху та індикацією стану розумного будинку на базі SONOFF/ESP/Tasmota

Задача на холодильник прикріпити магнітом кнопку - датчик.
Датчик руху дозволить ввімкнути освітлення і наступній кімнаті перед виходом з кухні.
А механічна кнопка, дозволить керувати розумним реле у кухні в ручному режимі на випадок не робочого стану логіки контролера розумного будинку.

В якості датчику руху використано мініатюрний модуль SR602.


 До кнопки додано магніт.

2022-01-05

Ремонт редуктора насадки блендера Mirta, Rotex

Від не розрахування густини рідини, шестерня редуктора стала прокручуватися на валу.
Швидкої заміни не було знайдено, а замовити первинний друк на 3D принтері не рентабельно. Тому знайдено рішення зробити надфілем насічки у внутрішньому отворі шестерні, а на вал намотати харчову фольгу, підвищеної товщини.
Після насадження на вал шестерні, редуктор знову працює.

IoT. Моніторинг температури централізованого опалення на ThingSpeak з сенсорів Tasmota і OpenWeather в OpenWRT

Графік змін температур

Поточні температури

Поточна температура централізованого опалення

 

Поточна температура на вулиці