IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2023/01/18
~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+relaybot
DUHOVKIN
Leopold
Most2
Nausicaa
Vort
Xeha
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob_afk
poriori_
profetikla
soos
un
weko
whothefuckami_
R4SAS acetone: крч ты не понял о чем я...
R4SAS я имел в виду написать всё это одной строкой
R4SAS как сделано в имеющихся строках
R4SAS а вообще, надо делать fprintf
R4SAS чтобы можно было строки с форматированием
R4SAS orignal: как такое делается?
R4SAS через шаблон?
orignal что именно?
R4SAS написать обработчик который будет брать перевод и подставлять в него значения переданные
orignal да шаблон
R4SAS типа "To add host %s in router's addressbook, click here"
orignal variadic teomplate
orignal посмотри как в Log.h сделано
R4SAS ок
orignal %s это сишная лажа
R4SAS а как лучге?
R4SAS лучше*
orignal как проще
orignal хоть так хоть так
R4SAS ну, мне форматируемый строки
R4SAS конкатенация нафиг не сдалать
R4SAS сь*
R4SAS просто в чем проблема
orignal можно с форматированием
R4SAS в разных языках по разному строится фраза
orignal например дегс предпочитает форматирование
R4SAS и иногда в азиатских оно шиворот на выворот
orignal а я поток
R4SAS так, а каким лучше делать формат?
R4SAS sprintf в буфер, а потом его отдавать?
R4SAS или же fprintf?
orignal snprintf
R4SAS так а откуда я буду брать размер буфера?
orignal это размер той строки куда ты пишешь
R4SAS ну дык мне надо тогда либо запас делать, либо вычислять
R4SAS size_t size = snprintf(NULL, 0, tr_str, std::forward<TArgs>(args)...); char* str = malloc(size);
R4SAS я так наверно буду вычислять его
orignal ну а ты как думал?
orignal потому я и использую stringstream
R4SAS ну а как я тебе сделаю формат в stringstream?
R4SAS правильно понимаю?
orignal а кто free(str) будет вызывать?
R4SAS а где я его тебе вызову?
R4SAS если мне его надо возвратить
R4SAS но опять же, нужно вернуть в std::string
orignal std:string s(str); free(str); return s;
orignal второй
R4SAS ок
orignal malloc не используй
R4SAS rjcnskb
R4SAS костыли)))
orignal вместо него new char[size];
R4SAS ок
orignal он тебе вообще не нужен
orignal а нет на самом деле нужен
R4SAS он - кто?
orignal new или amlloc
orignal нет на нужен
R4SAS new char str[size];?
orignal ты можешь сделать std::string s (size, 0);
orignal и потом в sprintf передавать s.data ()
R4SAS мммм
R4SAS извращение
orignal нет потому что лишний malloc не вызываеся
R4SAS только чую что будет хрень
R4SAS не знаю, правильно ли делать tr для всех форм
orignal вроде нормально
orignal но проверь что работает
R4SAS есть предположение что у меня случайно можнет вызываться функция для множественного числа (вторая) если я случайно передам в tr ("фывфывф", "подставка1", число1)
orignal кстати std(size + 1, 0) надо
R4SAS обавил
R4SAS сейчас проверим...
R4SAS пока что не запустил, но сразу пошел поглядеть на код
R4SAS s << num << " " << tr("day", "days", num) << ", ";
R4SAS вот чего вызовется в таком случае?)))
R4SAS либо (2) либо (3) )))
orignal думаю просто day напечатается
R4SAS т.е. вызовет третий оверлоад?
orignal думаю вот этот std::string tr (TValue&& arg, TValue&& arg2, int& n)
orignal или ругнется на ambigious
R4SAS не ругнулось при сборке, что весьма странно
orignal значит вот этотм
R4SAS хотя... я просто еще не переписывал строки чтобы они были с форматом
R4SAS так... а как быть если я хочу чтобы было всё вместе?
R4SAS сложности )
R4SAS ладно, надо додумать будет
R4SAS вероятно всё же придется отдельную функцию объявлять
R4SAS пример:
R4SAS tr("%d day", "%d days", num)
orignal наерное
orignal "Ahh we are running out of bandwidth any carriers want to help chip in?"
orignal stromyclould написали
orignal ну и что я говорил? ))
orignal таки аутпрокси
R4SAS хе
R4SAS сделал вот так
orignal ну спрашивали что если моя гипотеза верна почему они не замечают нагрузку
R4SAS но почему то компилятор ругается
orignal замечают как видишь
orignal на что ругается?
R4SAS почему ему не ясно что раз параметров больше чем надо, то юзаем второй ntr?
orignal комметируй разные варианты и смотри какой сработает
orignal с шаблонами вообще все слодно
R4SAS а, ясно
R4SAS я ему 2 раза TValue передавал
R4SAS а размеры строк то разные
R4SAS значит надо 2 разных typename
orignal угу
R4SAS ща поправим строки и испытаем...
R4SAS хе, в зажопинске вполне стабильный трафик
R4SAS более 1 ТБ за 2 дня и 15 часов
R4SAS провайдер там наверно охуевает
orignal пизды не дадут?
R4SAS не знаю)))
R4SAS orignal: гдет фигня происходит
R4SAS точно size + 1?
R4SAS почему то везде один символ съедает
R4SAS Sent: 5,18 Mi (17,44 KiB/)
R4SAS пришлось конкретно size = size + 1 сделать
R4SAS orignal: лол
R4SAS крч гейось не знает std::string().data()
R4SAS точнее там оно в не тот тип перегоняется
weko Стандарты be like
Vort столько фигни в плюсы понатыкали, а до интерполяции строк так и не добрались :/ вот как по-нормальному решается эта проблема: en.wikipedia.org/wiki/String_interpolation
Vort хотя нет, не прав, интерполяция с разными языками работать не будет
orignal R4SAS &str[0] тогда
orignal делов то
R4SAS orignal: кудав?
R4SAS вместо .data()?
R4SAS orignal: а откуда такое извращение?
R4SAS "1000 и 1 костыль для С++"
weko что за любовные старасти в #ls2 ?))))
weko страсти*
whothefuckami чому не str.front() ??
R4SAS whothefuckami: я тож на него смотрел
R4SAS но вот есть ли оно в гейосевых плюсах - другой вопрос
whothefuckami В каких-каких плюсах?
R4SAS макось
whothefuckami А там другой c++?
whothefuckami standart violation?????
R4SAS остальные системы молча собрались
R4SAS попробуем указатель
weko whothefuckami: про стандарты я тут уже шутканул))))
weko возник такой вопрос. как сделать мультихоуминг, но на одном роутере? тоесть запустить несколько дестинейшенов с разными туннелями из одних ключей?
whothefuckami Больше на баг компилятора похоже
whothefuckami Так не должно быть как вот на гейсос
whothefuckami Хуйня какая-то
R4SAS weko: никак
R4SAS запускай 2 роутера рядом с одним и тем же ключом туннеля
weko жаль. была бы полезная фича
weko угу
weko это понятно)
weko горождение костылей как всегда
whothefuckami Макоси как майки что ли?
R4SAS так а какой же это мультихоминг, когда всё на одном и том же роутере?
weko R4SAS: суть в распрределении нагрузки, когда не хватает 16 туннелей
R4SAS у меня рег крутится на 2х ш2зв стоящих на одной машине
R4SAS если одит отвалится, то второй точон доступен
R4SAS один*
weko вот, тоже вариант использования
weko на разных
weko понял)
R4SAS и при этом один из них во всяком случае быстрее ответит
R4SAS так что у меня рег обычно секунды 4-5 ищется всего лишь, а потом уже прогружается
weko понял зачем ещё именно 2 роутера - чтобы на разные флудфила слать лиссет
weko флудфилы*
R4SAS угу
weko в теории можно и это сделать в одном роутере, но я уже представляю какие это костыли....
R4SAS вроде порнографию с .front() скушало
weko прямо перед глазами - создаю стрим - половина туннелей дохнет))
weko лол просто джава отлупы би лайк
whothefuckami Это всё джава!!
weko оно всё никак не может начать передачу
weko походу у сервера старый лиссет клиента, а клиент новый лиссет не отправил))
weko у клиента просто уже тыщу раз тыннели сменились
weko пошло!!!
weko ура
weko спустя минуты 3
orignal R4SAS какое?
orignal это из std::vector ))
orignal так всегда делают
orignal это трюк еще с 90-х ))
Vort привычное извращение )
weko orignal: кстати я щас вот что понял - можно не один ш2з стрим делить на несколько туннелей, а один стрим от приложения делить на несколько ш2з стримов
weko именно внутри i2pd
orignal а смысл?
weko ну так по изначальной версии чтобы затыков не было
weko мы данные пускаем по разным туннелям в итоге
weko предположим шанс затыка за 1 секунду 5%, тогда если у нас 2 туннеля то шанс затыка в секунду 0.05^2 = 0.25%
weko 2 стрима в данном случае
orignal ну сколько тебе говорить
weko что?
orignal что на один и тот же адрес всегда идет по одним и тем же тоннелям
orignal причем специально
weko я прямо только видел разные туннели
weko только что*
orignal к одному адресу?
weko да
weko да
orignal что именно ты видел?
weko что по разным туннелям одновременно добавлялся трафик когда были стримы только на один адрес
weko что по разным туннелям одновременно добавлялся трафик когда были стримы только на один адрес
weko ой бля
weko вот щас вижу
weko стримов 10 висит
orignal ну там еще по времени
orignal там на короткое время только через один тоннель
orignal типа чтобы с сайта картинки грузить
weko заметил
weko сначала шло по одному потом по разным пошло
orignal там где то в Garic.cpp это есть
weko вот если можно через время по разным, почему нельзя сразу? да даже если не сразу, это уже хорошо
weko я же не из пальца взял предложение
weko я проверил
weko вижу идёт по разным
orignal ну представь себе что кто то открывает страницу с картинками
weko иногда идёт по нескольким туннелям, значит сделать чтобы всегда шло по разным реально, правильно?
weko как я понял это зависит от скорости туннеля
weko например если туннель быстрый то всего в него пихается
orignal тут думать надо с логиквой
weko это возможно или нет?
weko чтобы шло всегда по разным
orignal все возможно
orignal посмотри как выбирается тоннель в Streaming.cpp
weko хорошо, как тебе идея тогда? назвать это 'low packet loss mode' предположим
weko ща гляну
orignal идея такая что это экспериментировать надо
orignal то что счас сделано оно на тот момент работало лучше всего
weko понял окей, тогда можно пока что сделать в виде отельной программы, и смотреть как работает
orignal или просто напиши свой вариант streaming.cpp и пробуй
weko логика выбора туннеля в TunnelPool.cpp как я понял
orignal ну это дальше
orignal когда надо новый
Vort (вдруг кому надо: в Snowflake недавно внесли исправление для обхода российской цензуры. если у кого не работало - можно снова пробовать с обновлёнными версиями)
weko а, понял.
weko orignal: кажется я понял. первый раз он берёт туннель из уже существующего routingPath, потом уже следущий выбранный тунель будет случайный
weko потому что там условие что туннель ещё не выбран
weko интересно. надо попробовать убрать этот кусок для полнценного теста
weko 862-873
weko orignal: верно?
orignal там вроде не случайный а самый свежий
orignal я уже не помню
weko я конечно не эксперт но яне вижу логики для самого свежего туннеля
weko выбирается самый последний - ага
weko из tunnels
weko а в tunnels видимо идут по порядку создания - это я хЗ
orignal там set у которого сортировка в обратном порядке по времени
weko тоесть почти рандомно
orignal почему?
orignal говорю же самый свежий
weko а, ладно
weko я туплю
orignal по времени создания
weko да окей
Vort эхх, с последними коммитами теперь в вебконсоли числа с запятыми вместо точек :(
Vort странно такое видеть в англоязычном интерфейсе
orignal R4SAS чего там наделал? ))
Vort особенно странно это выглядит в местах наподобие ⇒ oAkk ⇒ 793747091:me ( 116ms ) established, 23,09 KiB
orignal а в IP адресвз что?
Vort там нормально
weko странно вообще видеть запятые вместо точек)))
Vort вопрос в том, плавающая запятая или плавающая точка )
weko в коде всегда точки, запятые на глаза будут давить
Vort обычно это к языку интерфейса привязывается
weko запытые нужны только для разделения разрядов)
weko тысячи милионы
Vort "запытые нужны только для разделения разрядов)" - в каких-то языках действительно такое есть, но по-моему, ни в русском, ни в английском не используется
Vort "Разделитель групп разрядов"
Vort "Таким образом, значение точки и запятой оказывается зависимым от контекста (например, запись 1,546 в английской нотации обозначает одна тысяча пятьсот сорок шесть, а в русской — одна целая пятьсот сорок шесть тысячных)"
Vort "Поэтому, чтобы избежать неоднозначности, международные стандарты (ISO 31-0, Международное бюро мер и весов, ИЮПАК) рекомендуют использовать для разделителя групп разрядов только неразрывный пробел"
Vort "neither dots nor commas are ever inserted in the spaces between groups"
Vort чуть почитал историю - в английском и с запятой группировка используется и с пробелом
weko Вообще снижение трафика заметно
weko А может это субъективно
orignal у меня тоже заметно