~AreEnn
~R4SAS
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest8889
HackerMan
Most2
Nausicaa
Ruskoye_911
Vort
`
acetone_
ananas
anon3
b3t4f4c3
fidoid_
guest
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
tensor
un
weko_
whothefuckami
HidUser0
но очищается память же
orignal
тебе от этого легче?
orignal
если процесс отжирает больше памяти чем мог бы?
HidUser0
нет конечно
HidUser0
а какое вообще значение MAX_PACKET_SIZE имеет? проверку не добавляет же
orignal
const size_t MAX_PACKET_SIZE = 4096;
orignal
кстати это интересный вопрос откуда
orignal
это значение
HidUser0
uint8_t buf[MAX_PACKET_SIZE];
HidUser0
именно тут
HidUser0
вообще обычно uint8_t buf*; пишут же
HidUser0
uint8_t *buf;
HidUser0
а блин, понял
HidUser0
все
orignal
когда как
orignal
а вот 4K это да вопрос
HidUser0
не туда смотрел, все ок
HidUser0
это другая структура
orignal
4K вообще быть там не должно
HidUser0
а что должно?
HidUser0
ну получается 4К на стеке выделяется
orignal
const size_t STREAMING_MTU_RATCHETS = 1812;
orignal
на самом деле вот это
orignal
да нет с Packet там все в порядке
orignal
и он повторно используется
orignal
а вот SendBuffer это какая то дичь
HidUser0
типа len не инициализируешь?
orignal
инициализирую
orignal
мне не нравится выделение блока памяти из кучи
orignal
говорю же
HidUser0
ой емае
HidUser0
const uint8_t * b, size_t l, SendHandler h):
HidUser0
l не используется
orignal
используется
HidUser0
а
HidUser0
ой
orignal
len(l)
HidUser0
прошу прощения
orignal
дело тут вот в чем
orignal
когда идет большой поток данных этот код вызывается часто
orignal
и запрос кучи на каждый передаваемый пакет это тормоза
HidUser0
ну да
HidUser0
а как ты хочешь сделать?
orignal
вот счас стал смотреть код I2CP и наткнулся на использование этого кода там
orignal
не ну когда ты передаешь килобайты в секунду это без разницы
orignal
а когда мегабайты то уже существенно
orignal
пул из блоков по 4K
orignal
типа того
orignal
и при необходиомти брать оттуда и возвращать туда
HidUser0
new это же malloc в си, да?
HidUser0
там все это под капотом делается
orignal
да
HidUser0
тебе же поиск блока делать надо
orignal
new это malloc + констурктор на нем
orignal
не надо
HidUser0
а так это все написано на си и оптимизированно
orignal
если блоки одинаовокй длины
HidUser0
а если не хватает?
orignal
ну не хаватает выделит новый первый раз
orignal
если слишком много то можно почиститб
orignal
это уже везде так делается в коде
orignal
если не хватает то делается так
HidUser0
а очистка по таймеру?
orignal
а если хватает то github.com/PurpleI2P/i2pd/blob/openssl/libi2pd/util.h#L71
orignal
как правило да
orignal
таймер проверяет если лишнего сидит в пуле то чистит
orignal
что спайки не засирали память ненужными блоквми
HidUser0
изобретаем велосипед короче
HidUser0
)))
orignal
это не велосипед
orignal
это только для высоконагрженных приложений
orignal
для обычных хватает new/delete
HidUser0
ладно
HidUser0
у тебя таймер будет на очистку?
orignal
так он и есть в других местах
HidUser0
понял
orignal
иногда по таймеру
orignal
иногда по опредленному событию
orignal
кстати openssl тоже malloc на каждый чих не вызывает
WayBest
Извиняюсь что влезаю, а не сборщик мусора ли это?
orignal
а использует свой менедж памяти
HidUser0
норм
orignal
нет не сборщик
WayBest
А не хочешь сделать очистку не столько по таймеру сколько по таймауту?
orignal
а зачем?
HidUser0
а в чем разница WayBest
WayBest
А разница в том как контролировать мусор
orignal
очистка нужна только чтобы литимтировать потребление памяти
orignal
так это не мусор
WayBest
Ну условно мусор)
orignal
тут иные цели просто
orignal
сократить не используемую память
orignal
а память отжираемую процессом
WayBest
Ты хочешь оптимальнее переиспользовать память процесса?)
HidUser0
WayBest: а что это даст
orignal
иначе говорю память может и не использоваться и учетки ее формально нет
orignal
но процесс все равно ее держит
WayBest
Ну я думал сделать время жизни у объекта
orignal
считая ее как бы своодной
WayBest
И по истечению удаление
HidUser0
WayBest: зачем так сложно? какие преимущества?
orignal
нет я хочу уменьшить число обращений к куче
WayBest
Но обновлять время жизни если к нему был доступ
WayBest
А типа кешировать в стек?
orignal
за счет переиспользования блоков одинакового размера
orignal
ну типа того жа
orignal
чтобы если блок больше не используется его не возвращать системе
orignal
а отдать под след блок который все равно скоро понадобится
WayBest
HidUser0: преимущества у нас будет возвращаться память системе
WayBest
Ну можно помечать как свободную память
HidUser0
WayBest: так она и так возвращается с таймером
WayBest
И если нет претендентов больше опр времени то возвращать
orignal
тогда мы выделяем блок без системного вызова
orignal
а это резко повышает производительность
WayBest
То есть просто запись по указателю?
orignal
ну примерно только возвращать не обязательно по времени
orignal
ну посмотри как сделано
orignal
просто связный список блоков
HidUser0
главное реализовать быстрее, чем это сделано в libc
HidUser0
)
WayBest
Ну короче связанный список
WayBest
В которых нода тупо массив данных хранит
orignal
в libc там сделано для блоков произовльной блины
orignal
среди свобоных участков ищется подходящей длины
WayBest
А ведь реально заюзать просто связанный список
orignal
в нашем же сучае она всегда одинакова
orignal
так я так и делаю
orignal
именнно связный список
WayBest
А с доступом что?
WayBest
O(n)?
orignal
O(1) разумеется
orignal
берем из начала и возврашаем в начало
WayBest
А если освободится блок где-нибудь по середине?
WayBest
Просто перебрасываем в начало его?
WayBest
Или в тот же конец
orignal
в смысле посередине?
HidUser0
а, так это очередь уже. тогда да, там все быстро
WayBest
Ну вот освободился чанк по середине списка
orignal
вот освбодился блок добавил его в список пула
orignal
если еще осбодился дальше добавил
HidUser0
типа два списка, свободный пул и не свободный?
orignal
поттреболся блок взял из списке переместил указатель на следующий
WayBest
А не проще в конец их кидать?
orignal
нет следующего взял из кучи
WayBest
Так же дешевле чем 2 списка
HidUser0
WayBest: не проще, вставка это долго
WayBest
+ хранить конец списка
WayBest
А вплане долго
WayBest
1-2 адреса записать
orignal
нету никакх двух списков
orignal
кроме того глупо кидать в конец а брать из начала
orignal
потому как вот вернули мы блок
orignal
потом его кто то его снова взял
orignal
так он может быть еще в кэше проца
orignal
короче все это уже работает и работает хорошо
orignal
и вот SendBuffer для стримов надо переписать тоже с использованием пула
orignal
чтобы было быстрее
orignal
и меньше памяти захватывало
WayBest
И что прям вырастет скорость в ш2з?
WayBest
Жаба то не изменится
orignal
а мы тестируем когда тоннли идут только через i2pd ))
HidUser0
orignal: а что будет, если два раза вызовится void Release (T * t)?
WayBest
О а как режим такой включить?)
HidUser0
это же получается предыдущий аллоцированный блок утечет
WayBest
А там нет проверки что блок релизнут?
WayBest
Там вроде адрес просто зануляется
orignal
HidUser0 ничего хорошего
HidUser0
то есть два раза Release не вызывается&
HidUser0
?
orignal
потому надо с этим аккуратно
orignal
ну или shared_ptr
orignal
тогда он сам разберется
WayBest
Ох уж этот умный с++
HidUser0
эт понятно
orignal
вот тут Release вызывается именно тогда когда надо
orignal
ну а 2 раза Release так и 2 раза delete можно вызвать
HidUser0
ты хочешь сказать, для каждого блока свой MemoryPool?
HidUser0
а я думал он общий
HidUser0
а стоп
orignal
для каждого сообщения свой грубо говоря
orignal
их много
HidUser0
а где они хранятся?
HidUser0
все MemoryPool
orignal
каждый в своем
orignal
Packets например в StreamingDestination
orignal
SSU пакет в SSUServer
orignal
буфера RouterInfo в netdb
HidUser0
а как происходит поиск свободного буфера в этих спискахх
orignal
блин
orignal
нет никаого поиска
orignal
берется первый из списка и все
orignal
и начало списка перемещается на следущий блок
HidUser0
а если он не свободный
HidUser0
хм
orignal
если он уже используется его не будет в этом списке
HidUser0
а
orignal
он вернется в список только когда станет свободным
orignal
а если список пустой то вызовается new
HidUser0
ага
HidUser0
последний вопрос
orignal
и выделится новый из кучи
HidUser0
вернется в список, это же вставка?
orignal
нет
orignal
добавится в начало и станет новым началом
orignal
а старое начало станет указателем на следующий
HidUser0
окец, понял
HidUser0
ага
orignal
система простая как велосипед
HidUser0
благодарю
orignal
тут еще больший прикол
orignal
где хранится указатель на слудующий
orignal
а прямо в начале самого блока и хранится
orignal
потому блок должен быть не менее 8-и байт
HidUser0
ну типа +8 байт к каждому блоку? в этом прикол?
orignal
нет. прямо в начало блока пишется
orignal
никаких +8 байт ))
HidUser0
а сами данные где хранятся
HidUser0
ну по ссылке да?
orignal
а в пуле не надо хранить данные
orignal
там же свободная память
orignal
данные там появялся когда блок используется только
orignal
вот такая хрень получается когда надо передвинуть указатель на следующий ))
HidUser0
прикольно
orignal
трюк еще начала 90-х
orignal
про которые нынче все забыли
exokinetic
aaaaaaand I'm back :D
exokinetic
raspberry pi gets quite a work out during the 'make install' process
exokinetic
had to increase my swapfile from the defualt 100 megs, ran out of memory and got kicked out of the compiler
exokinetic
{standard input}: Assembler messages:
exokinetic
{standard input}:104477: Warning: end of file not at end of a line; newline inserted
exokinetic
c++: fatal error: Killed signal terminated program cc1plus
exokinetic
compilation terminated.
exokinetic
increasing swapfile to 512 megs seemed to solve the issue
exokinetic
RPi Model 1B (512mb RAM)
exokinetic
latest release of raspberry pi OS 'lite'
exokinetic
let this router build for an hour and I will fire up BiglyBT
exokinetic
okay, biglyBT fired up
exokinetic
already transfering @400KBps
exokinetic
here something interesting to report:
exokinetic
I had not mentioned this when we were discussing the issue with i2cp that original just fixed;
exokinetic
but there was an odd behavior when downloading
exokinetic
a download would start
exokinetic
slowly download speed would increase
exokinetic
(this is obviously normal behavior...)
exokinetic
download speed would peak somewhere, but it would never plateau and stabilize
exokinetic
it would peak, and then it would immediately start falling
exokinetic
this would happen on a seemingly regular cycle
exokinetic
about a 15 minute period from peak to peak
exokinetic
inevitably, transfer speed at the peak slowly goes down and down
exokinetic
I am happy to report, it seems that has been fixed as well!
orignal
lack of memory
orignal
you need 1G swap
exokinetic
15 minutes running so far
exokinetic
and the download speed is basically sideways
orignal
nice
exokinetic
holding steady at around 380KBps
exokinetic
<orignal> lack of memory -totally possible
orignal
I know it
orignal
always have this issue on VPS
orignal
c++ compiler consumes too much memorry
exokinetic
orignal> you need 1G swap -> I had 100 megabyts to start with
exokinetic
raspberry pi os defualt
exokinetic
I set it to 2G just to be sage
exokinetic
safe**
exokinetic
then watched memory usage in htop through the whole process
orignal
I built on my RPi1 with 1G swap
orignal
g++ 10
exokinetic
max swap usage was ~400
exokinetic
definitely think 1G swap is a good idea
exokinetic
bad things happen when you run out of RAM addresses >.<
exokinetic
dude this is awesome
orignal
what?
exokinetic
biglyBT download speed is slowly rising
orignal
nice
exokinetic
just about to cross 500KBps
orignal
haven't tried torrents yet
orignal
will do
orignal
i2psnark witj Game of Thrones
exokinetic
the maximum transfer speeds I was getting with java i2p using i2pdsnark was 1-1.2 MBps
orignal
ofc
orignal
I2CP in Java is very optimized
orignal
I2CP in i2pd .... well needs more work ))
exokinetic
orignal> I2CP in Java is very optimized ->I believe it, it seemed to work very well
orignal
because they use I2CP for everything
exokinetic
orignal> I2CP in i2pd .... well needs more work )) -> I am happy to be of assistance :)
orignal
i2pd's tunnels don't use I2CP
orignal
also not all I2CP options and messages are implemented
exokinetic
orignal> i2pd's tunnels don't use I2CP -> like, natively, by default
exokinetic
what is "default" tunnel protocol in i2pd?
orignal
yes
orignal
they work directly without I2CP layer
exokinetic
ahhh
exokinetic
seems more efficient, if it can be done that way ...?
orignal
I believe it
exokinetic
does the 'java' nature of i2p require the use of i2cp layer?
orignal
my stream are about to select tunnels and leases
orignal
I think it's more historical reasons
exokinetic
(sorry if I ask stupid questions) -thank you for taking the time to answer me!
orignal
like streaming is an extrenal app there
exokinetic
<orignal> I think it's more historical reasons ->I can understand that
orignal
so for me I2CP is just another api protocol like SAM
orignal
and ofc i2pd's SAM doesn't use I2CP
exokinetic
okay, BiglyBT running for an hour so far, and no duplicate local destinations
orignal
good
exokinetic
averaging ~480KBps atm
exokinetic
2.5gb test file is just about done
exokinetic
very happy with that
orignal
nice
orignal
good hat it works
orignal
*that
orignal
HidUser0 когда будет время тоже глянь на предмет потребления памяти с торрентами
exokinetic
I can report memory use is a bit lower than my previous build
exokinetic
I used to hover around 24-30% memory usage
exokinetic
right now I am averaging 16-18%
exokinetic
lower memory usage and higher download speeds, whats not to like ;)
eternalchaoticexplosion
<eternalchaoticexplosion> * Now talking on #SHARDCOUNCILOFELDERS
eternalchaoticexplosion
<eternalchaoticexplosion> * irc.ilita.i2p sets modes [#SHARDCOUNCILOFELDERS +nt]
eternalchaoticexplosion
<eternalchaoticexplosion> потом перенесу этот шард на свой ирц, тут слишком узкие лимиты на серверах.
eternalchaoticexplosion
<eternalchaoticexplosion> по числе одновременно заджойненных каналов особенно и по никам проблемы
eternalchaoticexplosion
<eternalchaoticexplosion> постоянные
exokinetic
original/R4SAS -thoughts on using ZRAM?
exokinetic
swap file on compressed RAM disk instead of sd card (RPi)
exokinetic
going to test it out for a bit
exokinetic
25% of 512mb total memory used for ZRAM (128mb)
exokinetic
compression factor of 3.0
exokinetic
128 x 3 = 384
exokinetic
lz4 compression algorithm is still faster than the RPi's RAM I/O at 3.0 compression ratio
exokinetic
its going to require 'some' cpu cylces to process the compression/decompression, but I read it improves memory performance on RPi's, and is MUCH better than using swap on the sd card or even a solid state drive
exokinetic
<exokinetic> 25% of 512mb total memory used for ZRAM (128mb) -> 512 - 128 = 384
exokinetic
384 + 384 = 768
exokinetic
will probably experiment with 33% ram as zram swap with 3:1 compression ratio for 343MB(ram) + 507MB(ZRAM) = 850MB
HidUser0
orignal: транк?
orignal
HidUser0 ага
evil
вернулся спустя месяц и хочу спросить
evil
какие у ш2з-комьюнити планы? (я имею ввиду не только роутер)
evil
есть желание поучаствовать в разработке чего-либо, но для этого мне нужно знать заранее, какой стек технологий учить
orignal
никаких ))
evil
всмысле
evil
т.е разе что самому проявлять инициативу?
R4SAS
вон, недавно доведение xmpp до кондиции работоспобной в ш2з
orignal
а что еще делать?
orignal
i2pd работает нормалньо
R4SAS
он говорит о чем либо помимо ш2зв
evil
+
orignal
<orignal> никаких ))
orignal
я ж ответил
Словесник-Былинник
вот "наверное" кто то федерацию смтп мыла может посмотреть и доделать... а evil ?
evil
так вроде есть bdsmail
R4SAS
поделие психа
R4SAS
знаем такое
evil
ну так а что делать
Словесник-Былинник
ты ее смотрел евил ? вчера же тебе послали... установил ?
evil
да
Словесник-Былинник
но для смтп это не то... это пример просто... с настоящим серваком это поделие так не пойдет без изменений
Словесник-Былинник
там п2п... один аккаунт, а сервал мулти
Словесник-Былинник
это если тебе интересно это.. т.е. к примеру
evil
хорошо, а её нужно доработать или что-то с нуля разрабатывать?
Словесник-Былинник
доработать скорее, но пример бсдмыла довольно хороший
Словесник-Былинник
я не уверен вообще что федерация мыла серваком будет востребована на и2п... но это мое мнение
evil
почему?
evil
я так понимаю что mail.i2p только самому себе отправляет письма
Словесник-Былинник
evil: я тебе на пубсуб напишу еще кое какие мысли, но подумай если хочешь это делать... многие берутся и бросают. Надо увеенность что тебе это надо
Словесник-Былинник
про мыло я сказал что это мое мнение... не значит что так и есть :)
evil
мне лично всё равно, поэтому спрашиваю что было бы востребовано, если не почта тогда что
Словесник-Былинник
легкое: десктоп клиент для плеромы... walebird подделать для и2п.
R4SAS
gjlltkfnm)))
R4SAS
подделать))
Словесник-Былинник
не совсем легкое: эфир/геть доделать :))) для и2п... так то работает но криво
Словесник-Былинник
R4SAS : сделали уже ?
R4SAS
нет
R4SAS
lagemeet только иссуй создал
evil
вижу
Словесник-Былинник
пошлют нахуй наверное или сделают к лету
Словесник-Былинник
там надо просто домен чекер выкинуть в начале ... он чекает домен и кроме ком, орг .... нихрена не берет.
R4SAS
скорее не сделают
Словесник-Былинник
роутинг и2п к этому нипричем
Словесник-Былинник
плерома то чттп/чттпс и все на прокси пойдет хорошо, но вот черек ебучий надо убрать
Словесник-Былинник
evil: ты го знаешь или какой ?
evil
вчера начал учить
evil
не сложно
R4SAS
начал)))))
R4SAS
ыыы
orignal
у нас здесь что? цирк?
R4SAS
Словесник-Былинник: ты можешь текст ошибки скинуть
R4SAS
при указании i2p домена в whalebird
Словесник-Былинник
R4SAS : вот вспомнил, цонсерва и2п... если связи нет с сервером ( обычно в начале когда проблемы с и2пд или связи нет )... говорит "xxxxxxx tor / onion network not available". Косметика конечно... но ты понял о чем я
R4SAS
Словесник-Былинник: да, я видал
Словесник-Былинник
включи валебирд... прокси даже можешь поставить на 4444 ... как только домен пишешь// она тебе ... это не домен... если блабла.ком то начинает чекать, и2п даже не воспринимает как домен
R4SAS
ты конкретно ошибку скинь
R4SAS
чтобы я отследить мог по коду
R4SAS
я не хочу запускать клиент
Словесник-Былинник
ну вечером только тогда...скину
R4SAS
долго
R4SAS
придется тогда самому
Словесник-Былинник
я стер этот валебирд :)
Словесник-Былинник
orignal : что ты против цирка ыто имеешь ? хаха
orignal
ничего
orignal
ну сам понимаешь
Словесник-Былинник
:)))
evil
R4SAS уже собрал
evil
R4SAS пишет Please only enter the domain name
R4SAS
evil: я уже нашел где и почему
Словесник-Былинник
govoril vse легко ? :))) я просто старенький и иногда забываю многие штучки
R4SAS
вот вам и фикс
Словесник-Былинник
вот и все :)))
Словесник-Былинник
отнял кусок у евил ... тебе не стыдно R4SAS ?
R4SAS
нет)
R4SAS
фикс в 3 символа, такое себе
R4SAS
а он мог и консерву переписать для ш2з
R4SAS
только опоздал опять же
Словесник-Былинник
[a-zA-Z0-9]{2,}$/
Словесник-Былинник
da ...
Словесник-Былинник
может для плеромы создать где то обьясниловку .. как для хмпп ?
evil
R4SAS по любому уже смотрел исходники
evil
ну остаётся мыло..)
R4SAS
нет, я их первый раз открыл
R4SAS
я ж не мастодонтер
R4SAS
вполне хватает ирки
evil
ясно
R4SAS
как его интересно собрать под винды
evil
я бы поставил виндовс....
evil
да вот только боюсь опоздать :D
R4SAS
я уже ставлю nodejs
Словесник-Былинник
evil : про смтп... поставь сервак ... и посмотри 3proxy... она как раз имеет спец. смтп прокси там !!! это единственное что надо. проверь если будет работать на предмет федерации.
evil
R4SAS собрал, не работает)
R4SAS
make clean ?
evil
R4SAS т.е у тебя работает?
R4SAS
evil: сейчас собираю
evil
а есть возможность как-то скрины кидать тебе?
R4SAS
жабер
R4SAS
паста
R4SAS
как угодно
R4SAS
evil: работает всё
evil
залогинился всмысле
evil
залогинился*
R4SAS
у меня нет акка
R4SAS
я простоввел домен
evil
а search нажал?
evil
ща
evil
а какой прокси? я http/https ставил
R4SAS
http
R4SAS
только далее вопрос Словесник-Былинник
R4SAS
Словесник-Былинник:
R4SAS
Failed to get authorize url
orignal
R4SAS как тебе план с SendBuffer?
R4SAS
orignal: я почитал и не понял чего в итоге ты будешь делать
R4SAS
только понял что тебе не понятно откуда там 4К
orignal
не в том дело
orignal
суть что на каждый пакет выделяется буффер с помошью new uint8
R4SAS
это видел
R4SAS
через сокс запрос уходит
R4SAS
но плюется на TLS
R4SAS
unable to verify the first certificate
R4SAS
что весьма странно
R4SAS
ибо CA серт установлен в систему
orignal
ты понимаешь что это вызывается на каждый отправляемый кусок данных? ))
R4SAS
понимаю
orignal
надо чинить че
R4SAS
надо)
orignal
вот какую хуйню нашел
orignal
ну и 4K неизвестно откуда
orignal
тоже может сильно улушить дело
R4SAS
такс, вижу что черещ socks5 пашет whalebird
R4SAS
но надо отрубать проверку сертификата
R4SAS
NODE_TLS_REJECT_UNAUTHORIZED = 0 в env
orignal
а чего нетпслит?
R4SAS
а хз
R4SAS
я не отлетал вроде отсюда, значит не у меня проблема
orignal
так и я не отлетал
orignal
значит просто линк
R4SAS
ага
Словесник-Былинник
R4SAS : серты теперь глушит ? или надо роот поставить на систему, но муторно для юзера будет конечно
Словесник-Былинник
через 4444 или 4447 прокси ? пашет ?
Словесник-Былинник
R4SAS : git.pleroma.social/pleroma/pleroma/-/issues/1376 насчет ауторизатион токен
R4SAS
Словесник-Былинник: под виндами - не хочет грузить серты из системы
R4SAS
приходится отключать проверку
R4SAS
через сокс
R4SAS
хттп прокси почему то хочет чтобы сервер отдавал http
Словесник-Былинник
еси отключаешь проверку то работает ?
R4SAS
да, работает
Словесник-Былинник
но аккаунты ты сначала сделал на вебморде ?
R4SAS
да
Словесник-Былинник
ок... как мне получить этот бинарник ?
Словесник-Былинник
или самому его делать ?
R4SAS
на что? винду?
Словесник-Былинник
ок сорри
Словесник-Былинник
я хотел на линуксе проверить.. в крайнем случае на маке
R4SAS
там есть релиз экшен для GHA
R4SAS
так что если сделать релиз в форке, то соберет и зальёт для всего
Словесник-Былинник
ты патчал последий стаб. или бета 2 ?
R4SAS
я патчил мастер
R4SAS
значит бета
R4SAS
а не, он оказывается тег 4.5.0 тоже сделал
Словесник-Былинник
думаешь хочет чттп потому что ты проверку сертов отключил и она перешла на чттп сразу после этого
R4SAS
нет
R4SAS
там что то не так в коде
Словесник-Былинник
:))))
R4SAS
я этого не трогал совсем