зеркало из
https://github.com/iharh/notes.git
synced 2025-10-30 13:16:07 +02:00
m
Этот коммит содержится в:
родитель
7a02bbcfa0
Коммит
e71cf9aaa2
@ -3,3 +3,7 @@ http://queue.acm.org/detail.cfm?id=1961297
|
|||||||
|
|
||||||
rollback
|
rollback
|
||||||
https://www.vedu.ru/programming/index.asp?cont=articles&articles_id=511
|
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
|
executable
|
||||||
https://www.infoq.com/articles/docker-executable-images
|
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
|
2018
|
||||||
https://habr.com/company/itsumma/blog/345976/
|
https://habr.com/company/itsumma/blog/345976/
|
||||||
2015
|
2015
|
||||||
|
|||||||
@ -2,7 +2,7 @@ docker run -e DISPLAY -v /home/root/.Xauthority:/root/.Xauthority — -net=host
|
|||||||
|
|
||||||
2023
|
2023
|
||||||
https://habr.com/ru/articles/780322/
|
https://habr.com/ru/articles/780322/
|
||||||
! super-cool !!!
|
! super-cool !!! about matlab inside
|
||||||
2022
|
2022
|
||||||
https://sivanaikk0903.medium.com/run-gui-applications-in-docker-container-ba3f6ebcfc91
|
https://sivanaikk0903.medium.com/run-gui-applications-in-docker-container-ba3f6ebcfc91
|
||||||
-net=host
|
-net=host
|
||||||
|
|||||||
1
devops/container/docker/features/ui/docker-firefox.txt
Обычный файл
1
devops/container/docker/features/ui/docker-firefox.txt
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
https://docs.linuxserver.io/images/docker-firefox
|
||||||
1
devops/container/docker/features/ui/hyperbeam.txt
Обычный файл
1
devops/container/docker/features/ui/hyperbeam.txt
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
https://watch.hyperbeam.com/
|
||||||
73
devops/container/docker/features/ui/neko.txt
Обычный файл
73
devops/container/docker/features/ui/neko.txt
Обычный файл
@ -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/@military_movies/videos
|
||||||
|
https://www.youtube.com/@swellfilm
|
||||||
|
|||||||
@ -22,6 +22,8 @@ people
|
|||||||
! his students - S.S Averintsev, V Bibihin
|
! his students - S.S Averintsev, V Bibihin
|
||||||
|
|
||||||
2024
|
2024
|
||||||
|
Pravblog - Mazhuko - Interview - Digitalization of 18:00
|
||||||
|
https://www.youtube.com/watch?v=mqEkfTc3Av0
|
||||||
Mazhuko - Favorite Icons of 7:23
|
Mazhuko - Favorite Icons of 7:23
|
||||||
https://www.youtube.com/watch?v=14JFexNSzJ4
|
https://www.youtube.com/watch?v=14JFexNSzJ4
|
||||||
Mazhuko - About Peace and Commonality of 14:25
|
Mazhuko - About Peace and Commonality of 14:25
|
||||||
|
|||||||
@ -5,6 +5,8 @@ https://vk.com/public210614080
|
|||||||
https://www.youtube.com/c/Metametrica/videos
|
https://www.youtube.com/c/Metametrica/videos
|
||||||
|
|
||||||
2024
|
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
|
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=-DbtI5Pl0pQ
|
||||||
https://www.youtube.com/watch?v=-Fzn35Ahu-o
|
https://www.youtube.com/watch?v=-Fzn35Ahu-o
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
2024
|
2024
|
||||||
AntonovSoAntonov - Myths about Belousov 21:00 of 59:43
|
AntonovSoAntonov - Myths about Belousov of 59:43
|
||||||
https://www.youtube.com/watch?v=suTtKjJsErQ
|
https://www.youtube.com/watch?v=suTtKjJsErQ
|
||||||
2020
|
2020
|
||||||
TASSConferences - Kudryavtseva - Belousov - Dev Model Change of 57:59
|
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
|
https://devhints.io/vim
|
||||||
|
|||||||
@ -42,3 +42,43 @@ https://bookflow.ru/10-primerov-komand-lsof-v-linux/
|
|||||||
# lsof -iUDP
|
# 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
|
2024
|
||||||
https://habr.com/ru/companies/magnit/articles/814573/
|
https://habr.com/ru/companies/magnit/articles/814573/
|
||||||
! other models adaptation
|
! getting rid of SQL in Java Code
|
||||||
@OneToMany
|
@OneToMany
|
||||||
@Fetch(FetchMode.SUBSELECT) // but does now work with pagination, hbm-bug
|
@Fetch(FetchMode.SUBSELECT) // but does now work with pagination, hbm-bug
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
2023
|
2023
|
||||||
Spilca - Spring Security in Action 2nd ed v07
|
Spilca - Spring Security in Action 2nd ed
|
||||||
EE48E14DEB46F360725DF513EF0D765E
|
92D0CE1BCDE9D39E5036351366EAE683
|
||||||
2020
|
2020
|
||||||
Spilca - Spring Security in Action
|
Spilca - Spring Security in Action
|
||||||
0774C860C43474D328096BDE5DD6233E
|
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
|
jfr 23544 JFR.start +backend.io.BytesRead#enabled=true
|
||||||
|
|
||||||
2023
|
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
|
https://www.youtube.com/watch?v=Gx_JGVborJ0
|
||||||
! import jdk.jfr.Event;
|
! import jdk.jfr.Event;
|
||||||
! extend ...
|
! extend ...
|
||||||
! @StackTrace(... depth ...)
|
! @StackTrace(... depth ...)
|
||||||
|
! cfg-files $JAVA_HOME/lib/jfr/{default,profile}.jfc
|
||||||
2022
|
2022
|
||||||
Java - Programmer's Guide to JDK Flight Recorder of 24:08
|
Java - Programmer's Guide to JDK Flight Recorder of 24:08
|
||||||
https://www.youtube.com/watch?v=K1ApBZGiT-Y
|
https://www.youtube.com/watch?v=K1ApBZGiT-Y
|
||||||
|
|||||||
1
pl/java/tools/quality/profiling/jfr/docs/resources.txt
Обычный файл
1
pl/java/tools/quality/profiling/jfr/docs/resources.txt
Обычный файл
@ -0,0 +1 @@
|
|||||||
|
https://inside.java/tag/jfr
|
||||||
@ -17,6 +17,8 @@ Moscvitin - Data Structures and Algorithms ru 145p
|
|||||||
Petrov - Database Internals
|
Petrov - Database Internals
|
||||||
B4C0E9966DCAF74A08B5498DC632E5D5
|
B4C0E9966DCAF74A08B5498DC632E5D5
|
||||||
902BA0835E8E3E0262C236E3198E1EF5
|
902BA0835E8E3E0262C236E3198E1EF5
|
||||||
|
05EF18AA9887E93CD3BABF136E65001B
|
||||||
|
!!!
|
||||||
2008
|
2008
|
||||||
Brass - Advanced Data Structures
|
Brass - Advanced Data Structures
|
||||||
9ADB50FA694FE82036A7F38D9BEDFC98
|
9ADB50FA694FE82036A7F38D9BEDFC98
|
||||||
|
|||||||
Загрузка…
x
Ссылка в новой задаче
Block a user