Анна
@grishace У меня в твоем Канкуне случай смешной был. Жена купила билеты на экскурсию у уличного торговца (вместо того, чтобы надежней, но дороже купить в гостинице), и он нас подвел. В нужный день экскурсии не было, а потом нас дата не устраивала. Я пытался вернуть деньги (а это было пара сотен долларов), он по телефону клялся, что вот-вот завезет, но было ясно, что издевается. Я понимал, что деньги уплыли, но на всякий случай рассказал в отеле. А у них, видимо, счеты какие-то были с уличными торговцами. Приехала полиция, меня отвезли в участок, куда через десять минут доставили торговца, нам устроили очную ставку, откуда-то взялся фотограф, начав нас снимать. Потом торговец мне вернул деньги (!) Когда я пораженный вышел из полиции, он меня ждал. Я решил было, что чтобы убить, но он дал мне свою визитку (!), сказав, что надеется, что этот досадный случай не изменит моего мнения о стране и его фирме (!) В общем, сюр в квадрате, а вишенкой на торте стало, что когда мы на следующий день поехали на экскурсию (другую), гид сказал мне, что обо мне в газете читал и подарил газету с моей фотографией, где рассказывалось, как одног туриста пытались обдурить, но полиция оказалась на высоте. На всю жизнь запомнил, разумеется
вот это прохладная былина 🌚
Vasily
Город герой Козельск
Vasily
Тут посреди говен стоит какой-то бутик отель
Hog
@grishace У меня в твоем Канкуне случай смешной был. Жена купила билеты на экскурсию у уличного торговца (вместо того, чтобы надежней, но дороже купить в гостинице), и он нас подвел. В нужный день экскурсии не было, а потом нас дата не устраивала. Я пытался вернуть деньги (а это было пара сотен долларов), он по телефону клялся, что вот-вот завезет, но было ясно, что издевается. Я понимал, что деньги уплыли, но на всякий случай рассказал в отеле. А у них, видимо, счеты какие-то были с уличными торговцами. Приехала полиция, меня отвезли в участок, куда через десять минут доставили торговца, нам устроили очную ставку, откуда-то взялся фотограф, начав нас снимать. Потом торговец мне вернул деньги (!) Когда я пораженный вышел из полиции, он меня ждал. Я решил было, что чтобы убить, но он дал мне свою визитку (!), сказав, что надеется, что этот досадный случай не изменит моего мнения о стране и его фирме (!) В общем, сюр в квадрате, а вишенкой на торте стало, что когда мы на следующий день поехали на экскурсию (другую), гид сказал мне, что обо мне в газете читал и подарил газету с моей фотографией, где рассказывалось, как одног туриста пытались обдурить, но полиция оказалась на высоте. На всю жизнь запомнил, разумеется
👍🏻👍🏻👍🏻
Hog
Платишь за экспириенс!
Anatoly
Я вот сходил в баню, потом 1.5 часа массажа, и прямо хорошо стало
а в Москве не посоветуешь где массаж сделать в САО?
Vasily
Anonymous
где три чана с водой?
Anonymous
4 градуса минимум и не помню сколько точно, в самой горячей, но по-моему больше 50.
Anatoly
там с гигиеничностью японско очень
Anonymous
и так по кругу
Ayrat
смотрю новый PR, вот такой код на для енкодинга и декодинга жвт предлагают public string Encode(byte[] arg) { if (arg == null) { throw new ArgumentNullException(nameof(arg)); } string s = Convert.ToBase64String(arg); s = s.Split(base64PadCharacter)[0]; // Remove any trailing padding s = s.Replace(base64Character62, base64UrlCharacter62); // 62nd char of encoding s = s.Replace(base64Character63, base64UrlCharacter63); // 63rd char of encoding return s; } типа заменяют + и / на _ и - для урл френдли. и убирают паддинг
Anonymous
аж колики по всему телу, как будто залежал конечности.
Ayrat
и я вот думаю что все утонет в аллокациях
Romɑn
Ух ты. Я же примерно здесь был пару раз после горных походов. А как сейчас там вообще? В смысле инфраструктуры
Я был в 19ом и сейчас вот, разницы особо не заметил, хотя те заброшки, которые я помню, перестали быть заброшками. Но ремонтироваться все ещё мнооо
Ayrat
сплит и два реплейса
Anonymous
так есть же стрингбилдер
Ayrat
так есть же стрингбилдер
Ну бейз64 енкодинг декодинг делается без стрингбилдера
Anonymous
Ну бейз64 енкодинг декодинг делается без стрингбилдера
new StringBuilder(decodedString) и на ней реплейсы помогут в этом смысле, не?
Hog
так есть же стрингбилдер
А что такое стрингбилдер?
Anonymous
А что такое стрингбилдер?
мутабельная строка, которая не копируется при каждом изменении
Anonymous
эффективно для памяти и вот этих аллокаций
Vladislav
че тут
Vasily
где б их найти? :)
На скалодроме
Anonymous
А чо - обычные строки копируются???
ну да, если ты в цикле где-то например += другая строка делаешь, то это пиздец
Anonymous
(где критичны аллокации)
Anonymous
ну и другие операции, котоыре чето меняют
Vladislav
сдох
Ilya
не, неткор
А чем вообще стандартные средства работы с jwt не устроили?
Ayrat
А чем вообще стандартные средства работы с jwt не устроили?
да там проблема что base64 надо в урл френдли виде
Ilya
WebUtility.UrlEncode(String) Метод (System.Net) | Microsoft Docs https://docs.microsoft.com/ru-ru/dotnet/api/system.net.webutility.urlencode
Hog
сдох
Ты или комп?
Ayrat
^
опять же, там надо без процентов
Ayrat
там кастомно!
Hog
да там проблема что base64 надо в урл френдли виде
Это. Ты сколько мегабайт планируешь в урл запихуить?
Ayrat
заменяют просто два символа на два других символа
Ilya
И цикл вместо replace
Vladislav
Ты или комп?
комп живой
Hog
Я драчистый изумруд!
Ilya
@omgszer зрю
Ayrat
смотрю новый PR, вот такой код на для енкодинга и декодинга жвт предлагают public string Encode(byte[] arg) { if (arg == null) { throw new ArgumentNullException(nameof(arg)); } string s = Convert.ToBase64String(arg); s = s.Split(base64PadCharacter)[0]; // Remove any trailing padding s = s.Replace(base64Character62, base64UrlCharacter62); // 62nd char of encoding s = s.Replace(base64Character63, base64UrlCharacter63); // 63rd char of encoding return s; } типа заменяют + и / на _ и - для урл френдли. и убирают паддинг
вот пока так оптимизнул public static string Encode(byte[] arg) { if (arg == null) { throw new ArgumentNullException(nameof(arg)); } char[] buffer = null; try { buffer = ArrayPool<char>.Shared.Rent(arg.Length / 2 + 1); var charsWritten = Convert.ToBase64CharArray(arg, 0, arg.Length, buffer, 0); int i = 0; while (i < charsWritten) { if (buffer[i] == base64PadCharacter) break; else if (buffer[i] == base64Character62) buffer[i] = base64UrlCharacter62; else if (buffer[i] == base64Character63) buffer[i] = base64UrlCharacter63; i++; } ReadOnlySpan<char> stringSpan = buffer.AsSpan(0, i); return new string(stringSpan); } finally { if (buffer != null) ArrayPool<char>.Shared.Return(buffer); } }
Ayrat
где private static char base64PadCharacter = '='; private static char base64Character62 = '+'; private static char base64Character63 = '/'; private static char base64UrlCharacter62 = '-'; private static char base64UrlCharacter63 = '_';.
Ayrat
это по идее делает то же самое что и изначальный кот
Ayrat
только аллокация одна - строка собсно
Ilya
Как то ты хреново байты ебёшь....
Ilya
ну давай, жги
Как только к компу подойду - напишу! У тебя кор5?
Ayrat
Как только к компу подойду - напишу! У тебя кор5?
ну нет. мультитаргет на фул и кор31
Anonymous
buffer = ArrayPool<char>.Shared.Rent(arg.Length / 2 + 1); а в чем этого смысл?
Anonymous
взять буфер
arg.Length / 2 + 1
Ilya
ну нет. мультитаргет на фул и кор31
Хуйня какая то, как ты в фул дотнете из спана строку создаёшь?
Ayrat
а ты как?
Ayrat
System.Memory
Anonymous
arg.Length / 2 + 1
почему столько я че-то не догоняю
Ayrat
почему столько я че-то не догоняю
ну если 3 байта, то это 2 чара если 4 байта это 2 чара (но будет 3)
Ayrat
там minimum length, мне похуй на лишний чар в буфере
Ayrat
там один хер обрезка идет
Hog
👀
Пушкин ж!
Ayrat
а шо, это апи на фуле недоступно?
Ilya
System.Memory
Не спан из строки, а конструктор строки, который спан принимает