Этот коммит содержится в:
Ihar Hancharenka 2024-06-28 15:12:04 +03:00
родитель 7a02bbcfa0
Коммит e71cf9aaa2
17 изменённых файлов: 140 добавлений и 6 удалений

Просмотреть файл

@ -3,3 +3,7 @@ http://queue.acm.org/detail.cfm?id=1961297
rollback
https://www.vedu.ru/programming/index.asp?cont=articles&articles_id=511
2021
https://betterprogramming.pub/6-sql-queries-every-data-engineer-should-be-aware-of-2d0a2cc5986e
https://nuancesprog.ru/p/14447/

Просмотреть файл

@ -7,6 +7,10 @@ http://www.radcortez.com/get-into-docker/
executable
https://www.infoq.com/articles/docker-executable-images
2024
https://overcast.blog/13-docker-tricks-you-didnt-know-47775a4f678f
https://nuancesprog.ru/p/21069/
! docker contexts
2018
https://habr.com/company/itsumma/blog/345976/
2015

Просмотреть файл

@ -2,7 +2,7 @@ docker run -e DISPLAY -v /home/root/.Xauthority:/root/.Xauthority — -net=host
2023
https://habr.com/ru/articles/780322/
! super-cool !!!
! super-cool !!! about matlab inside
2022
https://sivanaikk0903.medium.com/run-gui-applications-in-docker-container-ba3f6ebcfc91
-net=host

Просмотреть файл

@ -0,0 +1 @@
https://docs.linuxserver.io/images/docker-firefox

Просмотреть файл

@ -0,0 +1 @@
https://watch.hyperbeam.com/

Просмотреть файл

@ -0,0 +1,73 @@
https://neko.m1k1o.net
https://github.com/m1k1o/neko/
https://github.com/m1k1o/neko/tree/master/.docker
https://github.com/m1k1o/neko/tree/master/.docker/remmina
https://github.com/m1k1o/neko/blob/master/.docker/remmina/Dockerfile
https://github.com/m1k1o/neko/tree/master/.docker/firefox
https://github.com/m1k1o/neko/blob/master/.docker/firefox/Dockerfile
https://github.com/m1k1o/neko/blob/master/.docker/firefox/supervisord.conf
https://github.com/m1k1o/neko/blob/master/.docker/firefox/profiles.ini
https://github.com/m1k1o/neko/blob/master/.docker/firefox/policies.json
https://github.com/m1k1o/neko/blob/master/.docker/firefox/neko.js
https://github.com/m1k1o/neko-rooms
https://github.com/m1k1o/neko-rooms/tree/master/docs
https://github.com/m1k1o/neko-rooms/blob/master/docs/storage.md
https://neko.m1k1o.net/#/getting-started/quick-start
https://neko.m1k1o.net/#/getting-started/examples
https://neko.m1k1o.net/#/changelog
http://supervisord.org
http://supervisord.org/introduction.html
http://supervisord.org/configuration.html
****************************************************************************
В продолжение утренней темы про удалённые рабочие места. Есть интересный проект n.eko (https://github.com/m1k1o/neko) по запуску различных браузеров в Docker контейнере с доступом к нему по протоколу WebRTC.
На практике это может выглядеть так. Вы арендуете где-то VPS, ставите туда Docker и запускаете необходимый вам браузер из готового образа neko. Далее со своего рабочего места в браузере открываете этот браузер. Благодаря возможностям WebRTC всё работает быстро в том числе с передачей звука и видео. Спокойно можно смотреть ютуб или любое другое видео.
В дополнение к такому использованию, вы можете подключать к своему браузеру зрителей с возможностью смотреть, что вы там делаете. В таком режиме можно даже фильмы совместно просматривать. Есть отдельный образ с VLC плеером.
Работает это максимально просто и быстро. Создаём compose.yaml с нужным браузером:
services:
neko:
image: m1k1o/neko:google-chrome
restart: unless-stopped
shm_size: 3gb
ports:
- 8080:8080
- 52000-52100:52000-52100/udp
cap_add:
- SYS_ADMIN
environment:
NEKO_SCREEN: 1920x1080@30
NEKO_PASSWORD: neko
NEKO_PASSWORD_ADMIN: admin
NEKO_EPR: 52000-52100
NEKO_NAT1TO1: 10.20.1.36
И запускаем:
# docker compose up -d
В данном примере NEKO_NAT1TO1: 10.20.1.36 - адрес сервера в локальной сети, где я запускаю neko. Если это будет VPS с внешним ip адресом, ничего указывать не надо. Адрес будет определён автоматически.
После того, как загрузится и запустится образ, можно идти по ip адресу сервера на порт 8080 и логиниться в neko.
NEKO_PASSWORD: neko - пароль для пользователей, которые смогут только смотреть.
NEKO_PASSWORD_ADMIN: admin - пароль для пользователя admin. То есть заходить админом вам надо будет с учёткой admin / admin.
Когда залогинитесь, снизу будет иконка клавиатуры и ползунок. Иконку надо нажать, ползунок подвинуть, чтобы заработало управление внутри контейнера. Справа вверху будут настройки разрешения экрана и некоторые другие. Рекомендую сразу снизить чувствительность скрола мышки. У меня он по умолчанию был очень чувствительный. Было некомфортно пользоваться, пока не нашёл эту настройку.
Neko можно запустить по HTTPS или через обратный прокси. В документации есть примеры настроек для этого. Для прокси удобно использовать упомянутый ранее Traefik (https://t.me/srv_admin/3775). Для него тоже пример конфигурации представлен.
Вот, в общем-то, и всё. Можно пользоваться. С переключением раскладки проблем нет, русский ввод работает. Список готовых образов с браузерами и не только представлен в документации (https://neko.m1k1o.net/#/getting-started/). Можно и обычную систему запустить с xfce, или собрать собственный образ. Есть образы под arm, отдельно с поддержкой видеокарт.
Образы регулярно автоматически обновляются, так что браузеры там свежих версий. Получается хорошее решение для гарантированной изоляции, если хочется запустить в браузере что-то сомнительное. Или просто использовать отдельный браузер с необходимыми настройками и локацией.
Подключаться к такому браузеру можно с мобильных клиентов. Интерфейс адаптирован под разрешения экранов смартфонов.
Отдельно есть проект по управлению виртуальными комнатами с запущенными браeзерами neko - neko-rooms (https://github.com/m1k1o/neko-rooms).

Просмотреть файл

@ -1 +1,2 @@
https://www.youtube.com/@military_movies/videos
https://www.youtube.com/@swellfilm

Просмотреть файл

@ -22,6 +22,8 @@ people
! his students - S.S Averintsev, V Bibihin
2024
Pravblog - Mazhuko - Interview - Digitalization of 18:00
https://www.youtube.com/watch?v=mqEkfTc3Av0
Mazhuko - Favorite Icons of 7:23
https://www.youtube.com/watch?v=14JFexNSzJ4
Mazhuko - About Peace and Commonality of 14:25

Просмотреть файл

@ -5,6 +5,8 @@ https://vk.com/public210614080
https://www.youtube.com/c/Metametrica/videos
2024
Metametrica - Ritter 15:00 of 1:05:45
https://www.youtube.com/watch?v=XAjdpJQ0d98
Metametrica - Artamonov - Gasparyan - Kazakov - Shevchenko - Who in Dagestan 1:42:00 of 2:22:08
https://www.youtube.com/watch?v=-DbtI5Pl0pQ
https://www.youtube.com/watch?v=-Fzn35Ahu-o

Просмотреть файл

@ -1,5 +1,5 @@
2024
AntonovSoAntonov - Myths about Belousov 21:00 of 59:43
AntonovSoAntonov - Myths about Belousov of 59:43
https://www.youtube.com/watch?v=suTtKjJsErQ
2020
TASSConferences - Kudryavtseva - Belousov - Dev Model Change of 57:59

Просмотреть файл

@ -1 +1,3 @@
https://www.josean.com/posts/vim-essentials-cheatsheet
https://www.youtube.com/watch?v=80mWp6H4zEw
https://devhints.io/vim

Просмотреть файл

@ -42,3 +42,43 @@ https://bookflow.ru/10-primerov-komand-lsof-v-linux/
# lsof -iUDP
Публикацию имеет смысл сохранить в закладки.
***************************************************************************************************************************************************************************
Как быстро прибить приложение, которое слушает определённый порт?
Вариантов решения этой задачи может быть много. Первое, что приходит в голову - посмотреть список открытых портов в ss, узнать pid процесса и завершить его:
# ss -tulnp | grep 8080
tcp LISTEN 0 5 0.0.0.0:8080 0.0.0.0:* users:(("python3",pid=5152,fd=3))
# kill 5152
Но быстрее и проще воспользоваться lsof:
# lsof -i:8080
COMMAND PID USER  FD  TYPE DEVICE SIZE/OFF NODE NAME
python3 5156 root  3u IPv4 41738   0t0 TCP *:http-alt (LISTEN)
# kill 5152
Или вообще в одно действие:
# lsof -i:8080 -t | xargs kill
Lsof могучая утилита. Я как-то особо не пользовался ей, кроме как для файлов, пока не подготовил заметку год назад с примерами использования (https://t.me/srv_admin/2856). С тех порт и для сетевых соединений стал активно применять. Особенно вот в таком виде:
# lsof -i
# lsof -i TCP:25
# lsof -i TCP@1.2.3.4
Возвращаюсь к открытым портам. Есть утилита killport (https://github.com/jkfran/killport), которая делает то же самое, что я делал выше, только в одну команду:
# killport 8080
В стандартных репах её нет, придётся качать бинарник из репозитория. Если для Linux это не сильно надо, так как там много инструментов для подобных действий, что я продемонстрировал выше, то для Windows это будет более актуально. Killport есть и под винду (❗️) Использовать можно примерно так:
> killport 445 --dry-run
Would kill process 'System' listening on port 445
То есть сначала смотрим, что будет прибито, а потом только делаем.
Такая штука обычно нужна для каких-то костылей и велосипедов, когда что-то зависает, не перезапускается, а надо освободить порт, чтобы запустить новый экземпляр.

Просмотреть файл

@ -2,6 +2,6 @@ https://habr.com/ru/articles/265061/
2024
https://habr.com/ru/companies/magnit/articles/814573/
! other models adaptation
! getting rid of SQL in Java Code
@OneToMany
@Fetch(FetchMode.SUBSELECT) // but does now work with pagination, hbm-bug

Просмотреть файл

@ -1,6 +1,6 @@
2023
Spilca - Spring Security in Action 2nd ed v07
EE48E14DEB46F360725DF513EF0D765E
Spilca - Spring Security in Action 2nd ed
92D0CE1BCDE9D39E5036351366EAE683
2020
Spilca - Spring Security in Action
0774C860C43474D328096BDE5DD6233E

Просмотреть файл

@ -68,11 +68,12 @@ Java - Joakim Nordstrom - Programmer's Guide to JDK Flight Recorder of 36:55
jfr 23544 JFR.start +backend.io.BytesRead#enabled=true
2023
Java - Continuous Monitoring with JDK Flight Recorder 18:00 of 45:55
Java - Continuous Monitoring with JDK Flight Recorder of 45:55
https://www.youtube.com/watch?v=Gx_JGVborJ0
! import jdk.jfr.Event;
! extend ...
! @StackTrace(... depth ...)
! cfg-files $JAVA_HOME/lib/jfr/{default,profile}.jfc
2022
Java - Programmer's Guide to JDK Flight Recorder of 24:08
https://www.youtube.com/watch?v=K1ApBZGiT-Y

Просмотреть файл

@ -0,0 +1 @@
https://inside.java/tag/jfr

Просмотреть файл

@ -17,6 +17,8 @@ Moscvitin - Data Structures and Algorithms ru 145p
Petrov - Database Internals
B4C0E9966DCAF74A08B5498DC632E5D5
902BA0835E8E3E0262C236E3198E1EF5
05EF18AA9887E93CD3BABF136E65001B
!!!
2008
Brass - Advanced Data Structures
9ADB50FA694FE82036A7F38D9BEDFC98