И это всё МОЁ

Здравствуйте.
Помогите, пожалуйста, с конфигом nginx’a для того, чтоб превратить его в прокси, который будет дописаюывать заголовок X-forwarded-for в пакеты, идущие от rtorrent’a к трекерам. Торрент клиент запущен на openwrt роутере, на нём же хотел бы запустить и проеюкси.
Это всё нужно т.к. я за провайдерским NAT’ом с проброшенными портами для торрент клиента, но ip провайдерского шлюза, через который пакеты идут в мир отличается от IP, входящие пакеты к которому пробрасываются на порт моего роутера.
А один широко известный торрент трекер игнорирует указание ip адреса пира в запросах к трекеру, в связи с чем советует в данной ситуации добавлять поле X-forwarded-for в пакеты, идущие к трекеру.
В модифицированном трансмишене эти заголовки добавляются, но он тяжеловат для некоторых ситуаций, rtorrent намного легковеснее, хочется использовать его. Для него как раз и нужно вюс помощью внешнего прокси добавлять этот заголовок.
Помогите, пожалуйста, с конфигом…









 , ,








И это всё МОЁ

Из обоих, кодил только под WebGL, но казалось бы современный андроид графику выводит только GL-способом. Ну всмысле, всё чтотвы видите на экране топового смарта - физически отрисовано текстурированными треугольниками и никак иначе. Проще сейчас уже не делают, типа. Круг - это просто много треугольников, где длина внешней грани - пара пикселей (то есть треугольников всего штук 180), да? Мы не считаем спрайты, когда заранее картинка с прозрачностью нарисована и выведена в прямоугольник (2 треугольника).


То есть вот интересно что там на низком уровне происходит когда рисуется анимированное крутящееся кольцо вида: https://www.google.com/search?q=circle+progress+indicator&tbm=isch&ved=&oq=circle+progress+indicator&gs_lcp=&sclient=mobile-gws-wiz-img&ei=a06gX7CeLJHpqgGkzaiICw&client=ms-android&prmd=imvn


особенно когда оно сложное, т.е. там несколько переливающихся цветов и несколько суб-колец и постоянно меняющаяся их длина и т.п., что даже паттерн трудно выделить, очень динамичные бывают. Конечно может быть они рисуют спрайтами, но чето слабо верю глядя на плавность их.









 








И это всё МОЁ

просто хочу сказать спасибо.
надеюсь администрация этого форума и модератры расценят это правильно и просто не заметят.
а тем людям, кто находил время и силы на то чтобы об'яснить мне неразумному азы программирование, может быть будет приятно знать, что я помню и ценю их труд, что они вложили в меня.








 








И это всё МОЁ

Свежие убунты почему-то склонны к GTK-изации. Возможно в этом есть какой-то профит и мне тоже стоило бы переделать свой старый десктопный апп под GTK?









 








И это всё МОЁ

Подскажите аналоги finereader или лучше не тратить время на поиски, а под виндой пользоваться этой прогой?









 








И это всё МОЁ

Вроде вопрос давно не поднимался.


Собираемся прикупить 1U сервер. Думаю где его разместить.


Кто чем пользуется?
Чем на практике TIER II от TIER III отличается?



  • Возможен ли физический доступ к оборудованию в стойке?

  • Какие услуги по обслуживанию предоставляет колокейшн-провайдер? Замена HDD? Если да, то на какой и по каким ценам?

  • Как предоставляется доступ IPMI/KVM-IP? Через VPN?









 








И это всё МОЁ

https://torrentfreak.com/deciphering-youtubes-rolling-cypher-in-your-browser-...

Если коротко: в инструментах разработчика на вкладке Network фильтруем по audio, копируем любую ссылку, удаляем параметр range=xxx-xxx и вуаля! Можно скачивать и проигрывать прямо из браузера.

Тоже самое и с видео.


.... RIAA делает вывод, что youtube-dl специально развивается как инструмент для нарушения условий использования лицензионного контента, обхода механизмов защиты и организации распространения видеоклипов и звукозаписей без получения разрешения у правообладателя








 , , ,








И это всё МОЁ

Самая полезная команда для сокращения времени загрузки Ubuntu - sudo apt purge snapd. И вообще.

Однако, есть сайты, которые в Firefox показывают ничего, и этими сайтами время от времени приходится пользоваться.

Добавил репозитории от Debian Buster таким образом, чтобы из них ставился только Chromium.

https://askubuntu.com/questions/1204571/chromium-without-snap

Для Ъ.

Сделал файл /etc/apt/preferences.d/chromium.pref

# Note: 2 blank lines are required between entries
Package: *
Pin: release a=focal
Pin-Priority: 500

Package: *
Pin: origin "ftp.debian.org"
Pin-Priority: 300

# Pattern includes 'chromium', 'chromium-browser' and similarly
# named dependencies:
Package: chromium*
Pin: origin "ftp.debian.org"
Pin-Priority: 700

Сделал файл /etc/apt/sources.list.d/debian.list

deb ftp.debian.org/debian buster main
deb ftp.debian.org/debian buster-updates main
deb ftp.debian.org/debian-security buster/updates main


Вставил ключи

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DCC9EFBF77E11517
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AA8E81B4331F7F50
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 112695A0E562B32A

apt update в конце показал такое

E: Репозиторий «ftp.debian.org/debian-security buster/updates Release» не содержит файла Release.
N: Обновление из этого репозитория нельзя выполнить безопасным способом, поэтому по умолчанию он отключён.
N: Информацию о создании репозитория и настройках пользователя смотрите в справочной странице apt-secure(8)

Чем это грозит? Я правильно понимаю, что из debian-security buster/updates прилетают самые срочные обновления безопасности?

Chromium запустился и работает. Однако, интерфейс не русский. Я правильно понимаю, что это от того, что Version 83.0.4103.116 (Developer Build)?

P.S. А так ли принципиально, чтобы именно Chromium? Не полезнее ли было бы https://www.google.com/chrome/?platform=linux ? Чем Хромиум с синим значком, собранный Debian чище Хрома с попугайским значком, собранного Гуглом?








 , ,








И это всё МОЁ

Как известно, сервер для Quake II нуждается в периодическом рестарте:


One thing to keep in mind is that the server must be restarted at least every 49 days, because the Quake II network protocol represents the interal time as a 32 bit integer and after 49 days that integer overflows, leading to all kinds of trouble.

This problem has always existed in Quake II and is not fixable (at least not without breaking compatibility with the existing network protocol), but back in Win9x days this was less of a problem because Windows crashed frequently anyways and Win9x had the same bug and crashed after 49 days or so...


Как это можно сделать красиво?


Я сделал через crontab, вроде такого:


0 0 1 * * /usr/bin/systemctl restart q2ded


Но интересует, существуют ли более элегантные решения?


ENV: CentOS 7, systemd 219.


q2ded.service:


[Unit]
Description=Quake II Server
Wants=network-online.target
After=network.target network-online.target

[Service]
User=opc
WorkingDirectory=/srv/quake2
ExecStart=/usr/bin/stdbuf -i0 -o0 -e0 /srv/quake2/q2ded
StandardOutput=journal
StandardError=journal
SyslogIdentifier=q2ded
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target









 , ,








И это всё МОЁ

Сабж. А то ещё пару лет назад раздавались голоса, что мол со времён форка LibreSSL кодовую базу OpenSSL привели в порядок, дыры позакрывали, и теперь LibreSSL не нужен; только вот количества уязвимостей по-прежнему были несопоставимы (тыц, тыц). За текущий год (а в случае LibreSSL даже за предыдущий) чёт не видать, хотя в OpenSSL график ползёт вниз; с другой стороны, причины дырявости OpenSLL (которые в коде) вряд ли куда-то делись.


Вопрос в форуме admin, т.е. «что ставить на систему при наличии выбора». Как программист я естественно выберу libtls т.е. LibreSSL.









 , ,








И это всё МОЁ

Линукс сервер с двумя сетевыми картами, убунту. Одна карточка получает интернет от роутера в сети 192.168.1.0/24 Вторая карточка является шлюзом для второй сети 192.168.0.0/24 сгорела материнка поменяли ее, добавили сетевые карты а настройки сбились и я их не помню, вторая под сеть клиент имеет например такой адрес 192.168.0.3 Маска 255.255.255.0 шлюз 192.168.0.2 по идее вторая карточка и должна быть этим шлюзом. Но интернета во второй сети щас нет и сама сеть не видит сетевой диск на убунту, настроил вторую карточку так адрес 192.168.0.2 маска 255.255.255.0 не помогает









 , , ,








И это всё МОЁ

Есть кластер proxmox, диски размечены lvm thin. Если нужно перенести 1 виртуалку на другой физический сервер в кластере, то при штатной миграции в proxmox оно будет передавать 100% всего диска и далее он будет занимать 100% места (хотя по факту там было занято, например, 30%). Если сделать trim потом в самой виртуалке, то часть места будет освобождено обратно.
При этом, если сначала сделать бэкап виртуалки и восстановить его на сервер, куда нужно ее перенести, то будет все ок - диск будет занимать ровно столько, сколько до переноса.
Есть какое то нормально решение?









 , ,








И это всё МОЁ

А если короче, скажите почему Dell S2721DGF УГ? На него нацеливаюсь. IPS, игровые герцы, 400 свечек.


Игрульки и быдлокодинг, кинцо, иногда фотожоп. Ну и до 500 денег. 27" и рамки потоньше









 








И это всё МОЁ

Доброго времени суток.
Не так давно изучаю bison и flex, поэтому нужна помощь.
Есть задача описать входной язык Lua. Нашёл всю грамматику тут https://lua.org.ru/contents_ru.html.
При сборке возникает ошибка, которую я никак не могу решить, помогите решить эту проблему.
Собираю так:
bison -d имя файла.y
flex имя файла.l
g++ -o имя lex.yy.c y.tab.c


Bison файл



%{
#include <iostream>
#include <string>
using namespace std;
void yyerror(char const* msg);
extern FILE *yyin;
int yylex();
%}

%union{
std::string* stringVal;
}
%verbose
%token <stringVal> LTOE GTOE TILDEEQUAL DEQUAL DSLASH DLESS DGREATER DPOINT TPOINT
%token <stringVal> NOT NIL FALSE TRUE RETURN
%token <stringVal> OR AND WHILE REPEAT UNTIL IF THEN ELSE ELSEIF
%token <stringVal> FOR IN FUNCTION LOCAL DO END GOTO BREAK DCOLON
%token <stringVal> NAME STRING STRINGG

%token INT HEX FLOAT

%left OR
%left AND
%left '<' '>' LTOE GTOE TILDEEQUAL DEQUAL
%left '|'
%left '~'
%left '&'
%left DLESS DGREATER
%right DPOINT
%left '+' '-'
%left '*' '/' '%' DSLASH
%left '#' NOT
%left UNARY
%right '^'

%start chunk

%%


chunk : block
;

block : stat | stat retstat
;

stat : /*empty*/
| stat ';'
| stat varlist '=' explist
| stat functioncall
| stat label
| stat BREAK
| stat GOTO NAME
| stat DO block END
| stat WHILE exp DO block END
| stat REPEAT block UNTIL exp
| stat IF exp THEN block statelseif elseblock END
| stat FOR NAME '=' exp ',' exp exz DO block END
| stat FOR namelist IN explist DO block END
| stat FUNCTION funcname funcbody
| stat LOCAL FUNCTION NAME funcbody
| stat LOCAL namelist
| stat LOCAL namelist '=' explist
;

statelseif: /*('elseif' exp 'then' block)* */
/*empty*/
| statelseif ELSEIF exp THEN block
;

exz
: /*empty*/
| ',' exp
;

elseblock
: /*empty*/
| ELSE block
;

retstat
: RETURN | RETURN explist | RETURN ';'
;

label : DCOLON NAME DCOLON

funcname
: NAME np
| NAME np ':' NAME
;

np
: /*empty*/
| np '.' NAME
;

varlist
: var |varlist ',' var
;

var : NAME | prefixexp '[' exp ']' | prefixexp '.' NAME

namelist
: NAME
| namelist ',' NAME
;

explist
: exp
| explist ',' exp
;

exp : NIL | FALSE | TRUE
| number
| string
| TPOINT
| functiondef
| prefixexp
| tableconstructor
| exp '^' exp
| NOT exp
| '#' exp
| exp '*' exp
| exp '/' exp
| exp '%' exp
| exp DSLASH exp
| exp '+' exp
| exp '-' exp
| exp DPOINT exp
| exp '<' exp
| exp '>' exp
| exp LTOE exp
| exp GTOE exp
| exp TILDEEQUAL exp
| exp DEQUAL exp
| exp AND exp
| exp OR exp
| exp '&' exp
| exp '|' exp
| exp '~' exp
| exp DLESS exp
| exp DGREATER exp
| '-' exp %prec UNARY
| '~' exp %prec UNARY
;

prefixexp : var | functioncall | '(' exp ')'

functioncall : prefixexp args | prefixexp ':' NAME args

args: '('/*empty*/')'
| '(' explist ')'
| tableconstructor
| string
;

functiondef : FUNCTION funcbody

funcbody: '('/*empty*/')' block END
| '('parlist')' block END

parlist: namelist
| namelist ',' TPOINT
| namelist TPOINT
;

tableconstructor: '{'/*empty*/'}'
| '{' fieldlist '}'
;

fieldlist: field fieldlistREP
| field fieldlistREP fieldsep
;
fieldlistREP: /*empty*/
| fieldlistREP fieldsep field
;

field : '[' exp ']' '=' exp | NAME '=' exp | exp

fieldsep : ',' | ';'



number
: INT | HEX | FLOAT
;

string
: STRING | STRINGG
;



%%
void yyerror(char const* msg) {}


int main() {

yyin = fopen("bisontest.txt", "r";);
//yyparse();

if (yyparse() == 0) {
cout << "Success" << endl;
} else {
cout << "Syntax error" << endl;
}
return 0;
}



flex файл


 
%option noyywrap yylineno
%{
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include "bisondoc.tab.h"
using namespace std;
void showError();
int ch;

%}

%%
[ \t\r\n]+ { /* игнорируем пробелы, табы и переносы строк */ }

"(" {return 40;}
";)" {return 41;}
"[" {return 91;}
"]" {return 93;}
"{" {return 123;}
"}" {return 125;}
"<" {return 60;}
">" {return 62;}
"," {return 44;}
"." {return 46;}
"+" {return 43;}
"-" {return 45;}
"*" {return 42;}
"/" {return 47;}
"=" {return 61;}
":" {return 58;}
";" {return 59;}
"%" {return 37;}
"&" {return 38;}
"|" {return 124;}
"~" {return 126;}
"#" {return 35;}
"^" {return 94;}
["] {return 34;}
"'" {return 39;}
"\\" {return 92;}

"<=" {yylval.stringVal = new std::string(yytext, yyleng); return (LTOE);}
">=" {yylval.stringVal = new std::string(yytext, yyleng); return (GTOE);}
"~=" {yylval.stringVal = new std::string(yytext, yyleng); return (TILDEEQUAL);}
"==" {yylval.stringVal = new std::string(yytext, yyleng); return (DEQUAL);}
"//" {yylval.stringVal = new std::string(yytext, yyleng); return (DSLASH);}
"<<" {yylval.stringVal = new std::string(yytext, yyleng); return (DLESS);}
">>" {yylval.stringVal = new std::string(yytext, yyleng); return (DGREATER);}
".." {yylval.stringVal = new std::string(yytext, yyleng); return (DPOINT);}
"..." {yylval.stringVal = new std::string(yytext, yyleng); return (TPOINT);}

"not" {yylval.stringVal = new std::string(yytext, yyleng); return (NOT);}
"nil" {yylval.stringVal = new std::string(yytext, yyleng); return (NIL);}
"false" {yylval.stringVal = new std::string(yytext, yyleng); return (FALSE);}
"true" {yylval.stringVal = new std::string(yytext, yyleng); return (TRUE);}
"return" {yylval.stringVal = new std::string(yytext, yyleng); return (RETURN);}
"or" {yylval.stringVal = new std::string(yytext, yyleng); return (OR);}
"and" {yylval.stringVal = new std::string(yytext, yyleng); return (AND);}
"while" {yylval.stringVal = new std::string(yytext, yyleng); return (WHILE);}
"repeat" {yylval.stringVal = new std::string(yytext, yyleng); return (REPEAT);}
"until" {yylval.stringVal = new std::string(yytext, yyleng); return (UNTIL);}
"if" {yylval.stringVal = new std::string(yytext, yyleng); return (IF);}
"then" {yylval.stringVal = new std::string(yytext, yyleng); return (THEN);}
"else" {yylval.stringVal = new std::string(yytext, yyleng); return (ELSE);}
"elseif" {yylval.stringVal = new std::string(yytext, yyleng); return (ELSEIF);}
"for" {yylval.stringVal = new std::string(yytext, yyleng); return (FOR);}
"in" {yylval.stringVal = new std::string(yytext, yyleng); return (IN);}
"function" {yylval.stringVal = new std::string(yytext, yyleng); return (FUNCTION);}
"local" {yylval.stringVal = new std::string(yytext, yyleng); return (LOCAL);}
"do" {yylval.stringVal = new std::string(yytext, yyleng); return (DO);}
"end" {yylval.stringVal = new std::string(yytext, yyleng); return (END);}
"goto" {yylval.stringVal = new std::string(yytext, yyleng); return (GOTO);}
"break" {yylval.stringVal = new std::string(yytext, yyleng); return (BREAK);}
"::" {yylval.stringVal = new std::string(yytext, yyleng); return (DCOLON);}


[a-zA-Z_][a-zA-Z_0-9]* {yylval.stringVal = new std::string(yytext, yyleng); return (NAME);}
\"[ -~]*\" {yylval.stringVal = new std::string(yytext, yyleng); return (STRING);}
\'[ -~]*\' {yylval.stringVal = new std::string(yytext, yyleng); return (STRINGG);}

[0-9]+ {return (INT);}
0[xX][0-9a-fA-F]+ {return (HEX);}
([0-9]*\.[0-9]+|[0-9]+\.) {return (FLOAT);}

. {showError(); return 0;}
%%


void showError(){
printf("Other input\n";);
}










 ,








И это всё МОЁ

Добрый день,
Разбираюсь с докером. Есть задача - если сервис в контейнере (бинарник со строкой запуска) «упал», то перезапустить контейнер. Каким образом выполняется, и выполняется ли такая проверка, это возможно настроить автоматически или по набору критериев?
Спасибо.









 








12:24

И это всё МОЁ

Здравствуйте.

Бонжур, peregrine.


На прошлой дискуссии мы, с треском, но пришли к выводу, что аниме это анти-искусство и примитив. Теперь же, хотелось бы услышать от тебя мнения, как ценителя, в чем разница между Бен-Гур (1959) и Бен-Гур (2016). И выделить лаконичную аксиому, в корне детерминирующую это различие.













И это всё МОЁ

Я хочу закрепить меню приложений только на одну клавишу Super (Она же кнопка Windows).
Через конфиг (~/.config/openbox/lubuntu-rc.xml) не получается.
Через сам lxhotkey тоже ничего.


Скажите, пожалуйста, как это сделать?









 ,








И это всё МОЁ

Открываю github, а у меня полповина статики в:


Failed to load resource: net::ERR_CERT_DATE_INVALID
actions-autocomplete-poster.png:1 Failed to load resource: net::ERR_CERT_DATE_INVALID
actions-editor-sidebar.png:1 Failed to load resource: net::ERR_CERT_DATE_INVALID
actions-editor.png:1 Failed to load resource: net::ERR_CERT_DATE_INVALID
github.githubassets.…complete.h264.mp4:1 Failed to load resource: net::ERR_CERT_DATE_INVALID
github.githubassets.…icons/favicon.svg:1 Failed to load resource: net::ERR_CERT_DATE_INVALID
github.githubassets.…icons/favicon.png:1
devtools://devtools/bundled/devtools_app.html?remoteBase=https://chrome-devtools-frontend.appspot.com/serve_file/@502f5097332d38cf6b84...

Подумал, может что локально — нет, на мобиле также у разных операторов.

У Вас все норм работает?








 ,








И это всё МОЁ

Есть хост с astra linux.
Настроил удаленный запуск GL приложений по ssh -X из ubuntu 20.04, но на kubuntu 20.04 с картой nvidia не получается:


astra $ LIBGL_DEBUG=verbose glxinfo|head
libGL: screen 0 does not appear to be DRI2 capable
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
libGL: Can't open configuration file /home/user1/.drirc: No such file or directory.
libGL: Can't open configuration file /home/user1/.drirc: No such file or directory.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Error: couldn't find RGB GLX visual or fbconfig
name of display: astra:10.0


GLX в kubuntu включен:


kubuntu $ cat /var/log/Xorg.0.log | grep -i glx
[ 10.349] (**) Option "IndirectGLX" "on"
[ 10.354] (II) LoadModule: "glx"
[ 10.354] (II) Loading /usr/lib/x86_64-linux-gnu/nvidia/xorg/libglx.so
[ 10.418] (II) Module glx: vendor="NVIDIA Corporation"
[ 10.419] (II) NVIDIA GLX Module 390.138 Thu May 14 03:57:24 PDT 2020
[ 11.071] (II) Initializing extension GLX
[ 11.071] (II) Initializing extension GLX
[ 11.071] (II) Initializing extension NV-GLX


В чем тут проблема ?









 ,








И это всё МОЁ

Есть старенький недобук samsung N150+ с процессором n450, 1G озу. Устанавливаю следующим образом:

1) Разметка диска:
sda1 - /boot
sda2 - /
sda3 - swap
sda4 - /home

2) Wifi через iwctl

3) Монтирование всего в /mnt

4) pacstrap /mnt (без разницы что тут, результат один)
секунд через 15 получаю kernel panic.

Пробовал релиз от прошлого месяца и от этого.

6 часовой тест ОЗУ ошибок не выявил, диск проверен викторией, состояние идеальное, перегрева ЦП нет. Другие дистрибутивы/win7 работают без проблем.

скрин:
https://b.radikal.ru/b24/2011/ce/4eef31f7d69d.jpg

Как решить проблему?








 , , ,