- 1
- 2
- 3
- 4
- 5
- 6
// https://vk.com/login?u=2&to=YWxfZmVlZC5waHA-
$ echo YWxfZmVlZC5waHA- | base64 -d
al_feed.phpbase64: invalid input
$ echo -n al_feed.php | base64
YWxfZmVlZC5waHA=
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
// https://vk.com/login?u=2&to=YWxfZmVlZC5waHA-
$ echo YWxfZmVlZC5waHA- | base64 -d
al_feed.phpbase64: invalid input
$ echo -n al_feed.php | base64
YWxfZmVlZC5waHA=
Олимпиадники даже base64 умудрились пропатчить
Fike 17.10.2020 05:42 # +5
OCETuHCKuu_nemyx 17.10.2020 12:30 # 0
bormand 17.10.2020 14:28 # +2
З.Ы. А ещё они плюсик и слеш на что-то другое должны были заменить. На подчёркивание, наверное?
bormand 17.10.2020 14:33 # +4
Так что олимпиадники таки соснули.
OCEHHuu_nemyx 17.10.2020 11:55 # +1
Fike 17.10.2020 14:06 # 0
bormand 17.10.2020 14:15 # 0
rotoeb 17.10.2020 14:16 # 0
Fike 18.10.2020 08:48 # 0
defecate-plusplus 18.10.2020 09:34 # 0
Fike 18.10.2020 09:51 # 0
defecate-plusplus 18.10.2020 11:14 # 0
а нахрена олимпиадники кодируют funcii.php в урле я хз
gost 18.10.2020 11:54 # +2
Хотя, конечно, 2020-й год на дворе, могли бы и простое модальное окошко для логина сделать.
Desktop 18.10.2020 12:22 # +4
- в последние дни Страйкеру икается всё чаще)
Fike 18.10.2020 11:58 # 0
defecate-plusplus 18.10.2020 12:17 # +1
и если филды ещё сами по себе не планарные, а с вложенными внутри полями (написал же выше - структура), ты можешь в какой-то момент плюнуть на это и просто заебенить base64 из, например, плотно сериализованного жсона (без претти отступов), а сервер на своей стороне так же тупо десериализовывает и хуяк, у него готовый жсон-объект
ещё условием, конечно, является то, что тебе нужен именно GET, а не POST
как пример - ты выбираешь из системы данные по куче критериев, с фильтром и строк и колонок, с пажинацией и сложной сортировкой, и результат вполне может быть прокеширован и нжинксом, и клиентом, и между ними - ты же не просто так гет тут захотел
Fike 18.10.2020 12:29 # 0
> которые тебе лень преобразовывать в ебаную цепочку из филдов, эскейпя и анэскейпя это говно
камон, в общем случае просто разово прогнать их все через анэскейпер, и вообще наплевать, что там внутри
> как пример - ты выбираешь из системы данные по куче критериев, с фильтром и строк и колонок, с пажинацией и сложной сортировкой, и результат вполне может быть прокеширован и нжинксом
захрюкал
поиск с кучей параметров не кэшируют, потому что сам посчитай количество измерений и возможных значений в этих измерениях. кэшируют в лучшем случае по самым важным параметрам, чтобы хоть что-то релевантное показать в случае отвала поискового движка
defecate-plusplus 18.10.2020 12:47 # +1
> просто разово прогнать их все через анэскейпер, и вообще наплевать, что там внутри
нихуя не просто, ты предлагаешь из объекта, понятного и клиенту и серверу, сделать вторую (де) сериализацию в плоский список кей-велью, где ещё подобосраться с массивами, и в общем случае руками писать маппинг из объекта в ключ плоского списка, тогда, когда можно тупо высрать бейз64, который самостоятельно охуенен и пролезает в качестве любого квери параметра, а на стороне сервера раскроется обратно именно в то, что отправлял клиент, а не то, как написал десериализацию программист на сервере
я удивлен, почему ты так отстаиваешь, что "КАМОН ТАК НЕЛЬЗЯ ДЕЛАТЬ"
продолжай кипятить ?q1.v1=%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1 %82 ты молодец
Fike 18.10.2020 12:56 # 0
где ты в списке пар ключ=значение увидел объект?
> я удивлен, почему ты так отстаиваешь, что "КАМОН ТАК НЕЛЬЗЯ ДЕЛАТЬ"
потому что если вы жлобитесь на пару байтов, то жмите уж пожалуйста гзипом, а не занимайтесь всякой хуйней
gost 18.10.2020 12:57 # 0
Приведи реальный пример того, кто тут предлагает использовать «base64» для экономии байтов.
Fike 18.10.2020 12:59 # 0
defecate-plusplus 18.10.2020 13:03 # 0
как гзипом жать GET url HTTP/1.1 ?
Fike 18.10.2020 13:05 # 0
мы тут query string обсуждаем, а ты то про объекты, то про протокол
gost 18.10.2020 13:10 # 0
О, а я даже так делал. Не в уебе, правда, но зожимать сообщение гзипом приходилось. А полученную бинарушню переводил в аскаушню через «base64», ага.
defecate-plusplus 18.10.2020 13:19 # +1
так что тебе надо base64(gzip(address)), например, НУ ИЛИ «WCT»!
и гзип на клиенте это уже не так тривиально, как бейз64
даже анскильный питух, не найдя нативной поддержки в своем языке, сможет написать base64encode/decode строк за 50, а гзип - нет
и ещё раз, массивы, структуры - всё это жопоболь, если ты собрался это всё переводить в квери параметры, а русские слова, спецсимволы приводят к кодированию 3:1 (для кодирования 1 двухбайтной utf-8 русской буквы надо 6 символов в урл заебенить)
зачем страдать, если у тебя и так уже нечитаемое неисправляемое говнище в урле, для трансформации в которую и из которой которой надо реально ЕЩЁ 2 раза код написать, когда base64encode в, например, жс делается в однострочник
Fike 18.10.2020 13:55 # 0
Всё равно с выдуманной и никому нахуй не нужной задачей экономии справляется лучше, ну напиши на коленке примитивный LZW, если хочешь.
> и ещё раз, массивы, структуры -
Ни имеют никакого отношения к тому, что мы сейчас обсуждаем, я хуй знает откуды ты их взял и нахуя ты их суешь в query string и как однократное детерминированное преобразование мешает чему-то там. С массивами, кстати, никаких проблем нет, никто не запрещает параметру повторяться.
> (для кодирования 1 двухбайтной utf-8 русской буквы надо 6 символов в урл заебенить)
А что, бейз64 в отличие от вышеприведенного вносит какую-то экономию при кодировании двух байт по сравнению с одним байтом? Давай тогда сразу какие-нибудь трёхбайтовые эмодзи возьмем, шоб пропорции остались теми же и никакой смысловой нагрузки это не несло, но выглядело устрашающе.
> даже анскильный питух, не найдя нативной поддержки в своем языке, сможет написать base64encode/decode строк за 50, а гзип - нет
При чем тут это? На кой хуй при написании приложения мы должны думать об анскильном петухе? Лучше подумать о пользователях, которые уже привыкли к этому формату и способны набрать decode url или даже восстановить смысл, если там большая часть в ASCII
> зачем страдать
Не знаю, это к вам вопрос, вы же зачем-то городите какую-то хуйню вокруг ?forward-to=https://vk.com/porno
bormand 18.10.2020 14:03 # +2
Пользователи не лезут своими лапками в URL'ы. Они их дословно копируют или кликают. И ни о каком base64 и decode_url они не знают.
gost 18.10.2020 14:24 # 0
Как бы ты решил задачу «сформировать URL, в котором параметром 'forward_to' указать путь текущей страницы»?
bormand 18.10.2020 14:35 # 0
Fike 18.10.2020 15:17 # 0
gost 18.10.2020 15:34 # +1
Fike 18.10.2020 15:37 # 0
OCEHHuu_nemyx 18.10.2020 14:46 # 0
Приведи реальный пример, когда тебе по работе требовалось набирать «decode url».
Fike 18.10.2020 15:17 # 0
defecate-plusplus 18.10.2020 15:50 # +1
> Ни имеют никакого отношения к тому, что мы сейчас обсуждаем
нихуясе не имеют
>> В байтовых штуках может лежать жсон или вообще структура, а кодирование 4:3 гораздо лучше подходит для экономии места, чем процентное.
сделай красиво на квери параметрах
потом оценим сколько времени займет кинуть это через бейз64 и сколько шансов обосраться там и там
раз уж ты поднял вопрос о том, что не надо думать об анскильных питухах
> А что, бейз64 в отличие от вышеприведенного вносит какую-то экономию при кодировании двух байт по сравнению с одним байтом?
ты не поверишь, но ё= превратится в 4 символа в бейз64, а в urlencode — в 9
Fike 18.10.2020 15:52 # 0
б) нахуя ты кладешь жсон в query string?
в) у тебя все значения параметров длиной либо в один, либо в два байта?
defecate-plusplus 18.10.2020 15:58 # 0
пример необходимой семантики, которую надо закодировать, я тебе показал
надеюсь, что там написано, понятно без комментариев
напиши наиболее близкий, соответствующий аналог на квери параметрах
Fike 18.10.2020 16:02 # 0
а я тебе не про твой последний ответ, а про ту хуйню, что ты пытаешься мне доказать про base64, обосновывая это тем, что в query string откуда-то появляются объекты
> напиши наиболее близкий, соответствующий аналог на квери параметрах
filter=field-a:wildcard:Посмотри как прекрасен*
filter=field-b:term:#foo:bar+#baz:pitux
filter=field-c:gte:2020-01-01
sort=field-a:asc
sort=field-b:desc
size=30
offset=1652
defecate-plusplus 18.10.2020 16:07 # +1
Fike 18.10.2020 16:12 # 0
дядь, тебе не надоело придумывать абсурдные вещи, чтобы выйти победителем в споре?
первые два двоеточия отделяют колонку и тип фильтра от значения. а можно и действительно эскейпить - точно так же, как ты будешь эскейпить двойную кавычку в своем json и будешь переводить юникодные символы в \uXXXX, потому что не все парсеры умеют читать чистый юникод, и работают-то строго говоря прямо спеке
> специальные вещи типа wildcard, gte объявлять секретными ключевыми словами и писать внутренний документ об этом
а в твоем примере что, вот эти подзапросы уйдут в базу в исходном виде? нет, ты точно так же будешь парсить >= {date} в оператор и значение, это такой же dsl, как у меня, только у тебя он гораздо сложней. и да, конкретно эти три примера так и называются в том же самом эластике, поэтому в твоем примере можно их скармливать напрямую вообще без зазрения.
в общем, позволю тебе дальше оптизировать приложения под анскильных петухов.
defecate-plusplus 18.10.2020 16:22 # 0
в том-то и дело, что Я - не буду, валидный жсон и так содержит всё что надо, чтобы быть валидным, меня это не ебёт, если там что-то и будет заэскейплено, значит, так тому и быть, если выбранный сериализатор решит, что юникод надо срать через \u, ну и пусть срёт, ему виднее - никто не собирается оперировать представлением жсона, я хочу лишь, чтобы бекенд получил валидный _объект в итоге_
если яндекс будет через протобуф вместо жсона срать, это будет так же адекватно
> в том же самом эластике
исходя из логичного предположения, что 101% бекендов в мире это эластик, я признаю, надо сразу всегда и везде писать как в эластике теперь
> позволю тебе дальше
я это предложил ещё 4 часа назад!
bootcamp_dropout 18.10.2020 12:55 # 0
ECEHuHCKuu_nemyx 18.10.2020 21:21 # 0
https://tinyurl.com/y9ghbkkm
bormand 18.10.2020 22:47 # 0
ECEHuHCKuu_nemyx 18.10.2020 23:08 # +4
Страница будет храниться в ссылках где угодно, кроме хостинга: в соцсетях, в мессенджерах и т. п. Сроком жизни страницы будет управлять оригинальный постер.
bootcamp_dropout 19.10.2020 00:42 # 0
bormand 19.10.2020 00:45 # +1
ECEHuHCKuu_nemyx 19.10.2020 00:54 # 0
bormand 19.10.2020 00:55 # 0
ECEHuHCKuu_nemyx 19.10.2020 00:56 # 0
guest8 19.10.2020 08:54 # −999
OCEHHuu_nemyx 18.10.2020 18:03 # 0