MYCSS

2023-03-19

redirect для playlist .m3u8 у nginx для анти кешу браузера у HLS player

Стала задача як форсувати отримання свіжої версії файлу playlist .m3u8 для застуванні у HLS (HTTP Live Streaming) медіа плеєру. Свіжу версію мається на увазі те що вона не буде зчитана з кешу браузера у будь-якому випадку незалежно від заголовків expire.

Вирішення задачі це додавати до імені файлу поточну дату у вигляді додаткового аргументу на кшталт: index.m3u8?m=202303191711.

Використовується Web сервер - nginx.

nginx  

 

time_iso8601

Сформуємо змінну $formatted_date з датою у необхідному форматі. Є вбудована змінна у nginx для дати у форматі ISO8601 $time_iso8601.

Для формування дати у потрібному форматі застосовується послідовність map у контексті http.

map - nginx
 

2023-03-04

Free DNS he.net + Free SSL Certificates Let's Encrypt

dns.he.net

Якщо у Вас є домен в DNS службі https://dns.he.net, то можна оновлювати TXT записи через динамічний ключ, а це надає можливість отримати безкоштовні сертифікати через Let's Encrypt у випадку коли у Вас наприклад поштовий сервер.

Рішення що є pligin до certbot - he.net DNS Authenticator plugin for Certbot потребує повний доступ через login/password до Вашого he.net акаунта, як на мене це жирно :)

Тому було знайдено рішення оновлення через динамічний ключ для оновлення тільки одного TXT запису.

he.net TXT

Для отримання ключа його можна згенерувати, наприклад: aJoSWOFyLD1A3iDG

he.net dynamic key

2023-02-12

Скрипт для Proxmox - Періодичний знімок віртуальної машини

Буває що віртуальна машина використовує якийсь довготривалий розрахунок. А якщо що ?

То всі результати розрахунку пропали ?

Тому ось простий скрипт що періодично створює знімок віртуальної машини (snapshot) зі станом пам'яті. Також змінює назву збільшуючи її на одиницю.

#!/usr/bin/env bash

PATH=$PATH:/usr/sbin

VM=309

prevsn=$(qm listsnapshot ${VM} | head -n 1 | awk '{print $2}')

if [ "$prevsn" == "current"  ];then
 snname="a1"
else
 snname="a$(( ${prevsn:1} + 1 ))"
fi
echo prev:$prevsn new:${snname}
qm snapshot $VM ${snname}  --vmstate true
if [ $? -eq 0 ] && [ "$prevsn" != "current" ];then
 echo "all ok with new snapshot: ${snname}, remove prev: $prevsn"
 qm delsnapshot $VM  $prevsn
fi

Результат:

bash result

2023-01-04

Скрипт автоматизації перейменування віртуальних машин у Proxomos VE для приєднання до кластеру


При переносі віртуальних машин з ноду в кластер необхідно мати пустий нод, і номера віртуальних машин що не конфліктують з іншими. 

Для вирішення цієї задачі простіше і надійніше використати метод створення резервної копії і потім її відновлення в кластері. 

Але я створив малий скрип що допомагає обійтися без цього методу.

Тому цей простий скрип перейменовує гуртом віртуальні машини з номерами 1ХХ на 6ХХ і де дані зберігаються на ZFS диску з назвою 'mdata'.

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' то виводяться декодовані данні телеметрії в консоль.

Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready