Ычан: [d | au / b / bro / hr / l / m / mi / mu / o / r / s / sci / tran / tu / tv / vg / x | a / aa / c / fi / jp / rm / tan / to / vn / vo]
[Назад] [Вся нить] [Последние 50 сообщений]
Ответ в нить [Последние 50 сообщений]
Имя
Animapcha image [@] [?]
Тема   ( ответ в 26066)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, MP4, OGG, OGV, PDF, PNG, PSD, RAR, SVG, SWF, TXT, WEBM, WEBP, XCF, ZIP размером до 5000 кБ.
  • Ныне 3676 unique user posts. Посмотреть каталог
  • Предельное количество бампов нити: 500
410.png - (24.25KB, 500×500)
26066
No. 26066  
В сей нити мы упорядочиваем усилия по доработке местного движка.

Репозиторий: https://bitbucket.org/Therapont/fbe-410
1. Для ваших предложений предназначена ветка public.
2. Только администрация 410чана решает, что в этом движке надо, а что не надо. Соответственно, не стоит излишне пропихивать всякие там революционные идеи. Одобренные потенциальные изменения перечислены на багтрекере (записи, созданные владельцами репозитория).
3. Тестирование предложенных изменений и развёртывание принятых ведётся при наличии у администрации свободного времени на это. Обычно это делается по выходным.
4. Код выложен как есть. Никаких неопубликованных скрытых функций и частей не существует.

Предыдущая нить: >>20450
24 сообщений пропущено. Показаны 50 последних сообщений
No. 26542  
>>26287
>47
>показ полного содержания ОП-постов в каталоге через скрипты
На первый взгляд, неплохо справляется уже существующая функция предпросмотра >>ссылок в нитях, достаточно дать соответствующий класс элементу <a> внутри элемента .cataloglist чтобы было типа:
><div class="cataloglist">
>...
><a href="/dev/res/26066.html" class="ref|dev|26066|26066">
И можно невозбранно смотреть ОП-посты прямо из каталога.
Это требует минимальной модификации существующего кода (собственно, вывести этот класс при генерации элементов каталога), вопрос только - подходит ли нам такое поведение и внешний вид, или нет?
No. 26543  
>>26542
Это и подразумевается.
No. 26545  
>>26543
Ок, наверное самая легкая задача из списка тогда.
No. 26646  
В хромоподелиях сломался быстрый ответ. Может кто по-быстрому посмотреть, что там за лабуда или мне задачу на трекере заводить?
No. 26648  
>>26646
УМВР с мака.
No. 26653  
>>26646
Раз сначала работало, а потом сломалось и никто туда не лазил, надо выяснить, какие компоненты механизма быстрого ответа имеют ограниченный ресурс. Может переменные износились, или отверстия для аргументов в функциях засорились.
З.Ы.: Edge Win7 x64 - работает.
No. 26654  
>>26653
У вас точно последняя версия этого браузера? Потому что в нём точно не работает ничерта с последним обновлением, хотя на прошлой неделе работало.
Очевидно, что хромичи у себя что-то сломали.
No. 26656  
Clipboard08.png - (239.15KB, 1440×900)
26656
>>26654
Действительно.
No. 26661  
166284091669.png - (242.27KB, 1440×900)
26661
>>26656
Откуда прозрачности взялись?
No. 26664  
bus_interior.jpg - (80.18KB, 930×620)
26664
>>26646
>>26661
Посмотрел.
>Couldnt find target thread to attach quick reply, aborting quick reply.

Ошибка предусмотрительно вылетает тут:
>if (threadId && !targetThread.length) {
> throw Error('Couldnt find target thread to attach quick reply, aborting quick reply.');
>}

За переменную targetThread отвечает вот этот селектор:
>var targetThread = $('.'+threadClass+':has(a[name='+threadId+'])');
Он собираться во что-то типа
> $('.thrdcntnr:has(a[name=26066])')
И казалось бы, что тут может быть криминального?
В Фаерфоксе работает, в Опере работает, в Хроме постарше работает.
А в новом Хроме и Эдже он не срабатывает и возвращает пустой массив!

Но! Если значению аттрибута дать кавычек вот так:
> $('.thrdcntnr:has(a[name="26066"])')
То селектор снова начнет работать.
И быстрая проверка показывает что работает и в браузерах постарше, и в браузерах поновее.

Выглядит это так будто в новом билде вебкита просто что-то сломали, если честно.
Или же :has() от нашей версии jQuery в нем работает уже не так хорошо, как раньше.

Чтобы подкостылить, надо добавить кавычек в те селекторы в kusaba.js, у которых есть конструкция типа
> :has(tag[attribute=value])
Чтобы стало
> :has(tag[attribute="value"])

Конкретно такие конструкции используются в этих строчках быстрого ответа:
>1451 var targetFormFieldRows = $('tr:has(input[name][type!=hidden])', targetForm);
>1517 var threads = targetThreadId ? $('.'+threadClass+':has(a[name='+targetThreadId+'])') : $('.'+threadClass);
>1566 var targetThread = $('.'+threadClass+':has(a[name='+threadId+'])');
>1568 var targetPost = targetThread.find('.'+replyClass+':has(a[name='+postId+'],a[data-name='+postId+'])');

Но могли отвалиться еще вот эти, напрямую не связанные с быстрым ответом вещи:
>102 var $postform = formid ? $('#'+formid) : $('.postform:has(textarea[name=message]):first');
>197 var numReplyPostForm = $('form:has(>[name=replythread]):visible:last');

Справитесь?

>>26653
Селекторы износились, или jQuery, получается.
No. 26665  
Интересно еще, поможет ли вместо >>26664 просто обновить jQuery?
No. 26667  
9074835067_78dacc9f9d.jpg - (68.18KB, 500×281)
26667
>>26661
Новая машина, новая винда — ничего не настроено. Думаешь, перезжать так просто?

>>26664
Мораль сей сказки в том, что нефиг юзать экспериментальные фичи CSS когда Господь дал тебе портабельное Жуквери.
>Выглядит это так будто в новом билде вебкита просто что-то сломали, если честно.
Или же привели в соответствие со стандартом, что больше похоже на правду. По крайней мере в XHTML по другому и не напишешь. И я не стану удивляться, если какого-то существенного значения в мировом масштабе это иметь не будет.
>Или же :has() от нашей версии jQuery в нем работает уже не так хорошо, как раньше.
Жукверя не занимается CSS-селекторами.
>Селекторы износились, или jQuery, получается.
Экспериментальные фичи. Добро пожаловаться в удивительный мир уеб-макакинга. К сожалению, автор сего квикреплюя был слишком юн, самоуверен и верил в людей.
No. 26669  
То ли дело вы, в познании настолько преисполнились что уже и отреклись от бренности любых реализаций, только несете луч чистого знания методом постинга кошкодевочек. Кисленько как-то.
No. 26670  
>>26669
Меня с моими престопроблемами уже послали в сторону, обратную серверу, вылив ушат желчи за то, что я не знаю фич последнего стандарта JS и вообще не моден, не ношу бороду и кеды. Так что я тут только с позиции консультанта мебельного магазина предлагаю следующие товары:
— стул «переписать так, чтобы работало на Престо»: тяжёлый и громоздкий, но работает с любой задницей;
— стул «засунуть параметры в кавычки»: легкий и компактный, но может внезапно развалиться, плюс требует проведения исследовательской работы по выяснению совместимости с задницами разных видов.
No. 26672  
Произошедшее порождается, насколько я понимаю, тѣмъ обстоятельством, что прежде работа CSS-селектора «:has()» костылировалася в jQuery, однако же с недавних пор (во Chrome и в Edge — съ нынѣшней сто пятой версии, в Safari — с версии 15.4) этот селектор обрёл непосредственную поддержку во браузерах, как о том табличка https://caniuse.com/css-has сообщает нам.

И, по-видимому, синтаксис этой поддержки оказался чуть другим, чѣмъ синтаксис костыля. 🩼

В чём заключается отличие? — в большей строгости по отношению к ошибкам синтаксиса, я это так понимаю.

CSS-селектор атрибутов в форме «[названиеАтрибута=значение]» может в качестве значения содержать либо идентификатор (без кавычек), либо строку (в кавычках), как нам о том документ https://www.w3.org/TR/selectors-4/#attribute-representation говорит в абзаце, предшествующем двадцать первому из тамошних примѣровъ.

Но циферки «26066» въ примѣрѣ «:has(a[name=26066])» в сообщении >>26664 не могут (в строгом смысле) служить идентификатором, потому что по стандарту https://www.w3.org/TR/css-syntax-3/#ident-token-diagram идентификатор не может начинаться с цифры.

Вот ѿвѣтъ на вопрос «И казалось бы, что тут может быть криминального?»

Логический вывод таков: о работоспособности селекторов «[name=message]» или «[name=replythread]» можно и впредь не беспокоиться (даже и дух перевести можно, если кто вдруг затаил дух), тогда как селектор «[name=циферки]» по необходимости придётся замѣнить селектором «[name="циферки"]» повсюду.
No. 26673  
>>26667

> Жукверя не занимается CSS-селекторами.

И именно поэтому использует и содержит https://github.com/jquery/sizzle/ в своём составе, ага-ага, понятно-понятно.
No. 26674  
Столько нафлудили и ни одного пулл-реквеста.
No. 26675  
>>26670
>послали в сторону, обратную серверу,
Не знал, сожалею что так вышло.
No. 26676  
natsume_bus.png - (0.95MB, 721×721)
26676
>>26674
Я думал Соус хочет сам патч ASAP вкрутить, и ему нужен рецепт. Делать пулреквест?
No. 26677  
>>26676
Делайте, конечно.
Вопрос был в том, надо ли задачу (надолго) заводить, или кто-то сейчас есть.
А теперь один хѣръ придётся ждать до следующих выходных.
No. 26678  
>>26677
Жаль что не получилось самостоятельно вкрутить по инструкциям, конечно.
No. 26679  
Вообще, прекрасная иллюстрация того, почему мы так консервативны со скриптовыми свистоперделками.
No. 26680  
>>26679
Только оказалось все же, что виноваты Хромичи, и консервативней им надо быть с билдами. Они там что-то действительно напороли в интерпретации :has()

Вот такой селектор в обновленных браузерах не работает:
> $('tr:has(input[name][type!="hidden"])')
И его приходится костылять:
> $('tr:has(input[name]):not([type="hidden"])')
Просто потому что != больше не отрабатывает внутри :has()

На проблемы конкретно с :has() также указывает, что номерные значения атрибутов вне :has() у Хромичей работают как ни в чем не бывало:
> $('a[name=26066]')

Вобщем я хоть и внес все костыли в пулреквест, но теперь кажется что Хромичи могут просто исправиться в следующем билде, и костыли будут не нужны.
No. 26681  
Смочь бы ещё найти что-то на их https://crbug.com/

https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink>CSS&can=2

Вот что-то похожее на обсуждают
https://github.com/w3c/csswg-drafts/issues/7676
https://crbug.com/1340873
https://crbug.com/1359396
No. 26682  
>>26681
Вроде и хочется сказать, что да, это их конфликт с jQuery, но с другой стороны - такое странное и непоследовательное поведение испытваем, что не знаю даже.
No. 26683  
Пока выглядит, что полной картины бедствия еще нет.
Пройдя по ссылке с гитхаба, увидел что ребята из jQuery тоже обнаружили что вещи перестали работать внутри :has()
https://github.com/jquery/jquery/issues/5098
но не нашли все.

Если верить гитхабу, jQuery сначала пытается достать элемент штатными средствами браузера, и если браузер выдает на это ошибку - jQuery достает своими средствами. Хромичи из :has() ошибок не выдают, они возвращают пустой массив, jQuery считает что селектор сработал штатно и все хорошо.
No. 26684  
Как бы то ни было, пулреквест у нас уже есть.
No. 26685  
>>26682

Это не конфликт Хрома и jQuery.

Создатели Chrome дѣйствовали в полном соѿвѣтствіи со спецификациею CSS, авторы которой рѣшили (и прописали в ней), что селектор «:has(:невѣрныйСелектор, :невѣрныйСелектор)» не должен выдавать ошибку, а для чего? — для того, чтобы в CSS-правилах наподобие «main.class, div.class:has(:невѣрныйСелектор, :невѣрныйСелектор) {…тут стили…}» (примѣръ, по адресу https://github.com/w3c/csswg-drafts/issues/7676#issuecomment-1238995108 приводящийся) всё-таки работал тот селектор, который до запятой.

Создатели jQuery, не располагая машиною времени, уж конечно не могли предвидѣть, что невѣрные селекторы когда-нибудь перестанут выдавать ошибку и начнут выдавать тупо пустой массив. Поэтому во всѣхъ версиях jQuery, начиная от первѣйшихъ, непоявление ошибки при работе селекторов наподобие 410чановского «:has(a[name=26066])» (и даже селекторов наподобие «:has(:contains)» с собственными jQuerийными заморочками) означало, что костылировать не нужно и что браузер сам справится.

Авторы спецификации CSS в результате обнаружили себя перед выбором из трёх зол, по адресу https://github.com/w3c/csswg-drafts/issues/7676#issuecomment-1235773031 упоминаемых десять дней тому назад:

① Можно подарить имя «:has» возможностям jQuery, а в стандарте CSS использовать какой-нибудь другое имя селектора. (Это ужасно, потому что под именем «:has» этот селектор ужé поддерживается многими браузерами — даже в Safari, новую версию которого придётся ждать примѣрно полгода-год даже в сáмом лучшем случае. Сайтостроители сайтостроят на основе существующего имени, а затѣмъ на их головы в 2023 году придёт переименование и сломает работу селектора?!)

② Отказаться от дорогой их сердцу идеи о том, что нѣкоторые селекторы могут отваливаться тихо-мирно, не создавая ошибок.

③ Положить хѣръ на jQuery, пусть ломается.

По адресу https://github.com/w3c/csswg-drafts/issues/7280 склонились к той мысли, что хотя бы внутри @supports на идею простительности ошибок надо подзабить.

Тем временем по адресу https://crbug.com/1340873 видим, что во Chrome добавили такой патч (по адресу https://chromium.googlesource.com/chromium/src/ /e2a70f09eb5a1b2c626d720b18a855917f0f479c расположенный), который «ломает :has» — позволяет этому селектору всё же выдать ошибку, когда он вызывается без аргументов внутри скобок.

По-видимому, каким-то образом эта ошибка позволяет jQuery на ранней стадии воспринять (обманувшись) этот селектор как неподдерживаемый и включить собственную (jQuerийную) поддержку его.

Лично моё мнѣніе склоняется к тому, что сама идея селекторов, которые ошибку не выдают, но и не работают, была малопродуманною. (То есть из тѣхъ трёх зол я выбрал бы второе.) Что не ѿмѣняетъ собою необходимость заключать атрибуты-цифры в кавычки в коде 410чана.

>>26680

> $('a[name=26066]')

По аналогии со всѣми вышеизложенными обстоятельствами я могу и в сём случае небезосновательно подозрѣвать (и подозрѣваю, хотя и не провѣрялъ), что как раз во Хроме этот селектор вызывает ошибку незакавыченности, которую ловит jQuery и затѣмъ костылирует работоспособность этого селектора собственным движком Sizzle, в сообщении >>26673 упоминавшимся.
No. 26686  
>>26680

> != больше не отрабатывает внутри :has()

А вот это да, явный баг.

Им о нём кто-нибудь сообщил?
No. 26687  
>>26686
Пока не видел, так что вы можете быть первым!
No. 26688  
Завёл там несколько новых задач в связи с.
No. 26690  
>>26688
Можно наделать несколько сменяемых наборов фапчи и ограничение на число прокликиваний - тогда злоумышленнику придется долго и мучительно возиться с расшифровкой (и даже просто выкачиванием) каждого набора.

Либо иметь только один большой набор изображений, но установить динамическое "окно", выдающее всем пользователям в каждый момент времени только некоторое подмножество этого набора, и постепенно сменяющееся от количества новых постов/тредов, либо при аномальном их числе за короткое время. Это не даст злоумышленнику возможности навайпать слишком много, и его вайпалка автоматически станет бесполезной и нуждающейся в настройке. Хотя, конечно, ударит по пользователям, привыкшим прокликивать до Юички.

А вообще, судя по нападению на новерь, его прокси можно быстро перебанить и руками
No. 26691  
>>26690
> ударит по пользователям
Можно сделать по несколько разных изображений на одного персонажа, тогда при их смене здоровые люди не будут страдать, но будет страдать бот.
No. 26692  
>>26690
>>26691
Удваиваю, идея с организацией картинок в фапче в формате набора нескольких подменных, не отдаваемых всегда в общем наборе картинок по персонажу звучит очень неплохо. Менять можно индивидуально, если какая-то картинка слишком затребована, а можно и полностью, по критериям постинга, или создания новых фапча-сессий.
No. 26693  
Фапча — это способ защиты от тѣхъ ботов, которые желали бы массово наспамить по нѣсколькимъ имиджбордам (массово не получится, потому что фапча 410чана индивидуальна) и способ защиты от людей, внѣшнихъ по отношению к анимешному сообществу («пробовал, но не угадал ни одной фапчи»).

В случае с вайпером, способным угадывать капчу и затѣмъ передавать свой «проѣздной билет в Автобусе» своей же вайпалке (или, если проѣздные выключены, — поручать ей перебор фапч), фапча — это негодный инструмент антивайпа, ужесточение которого ударяет по благожелательным пользователям (особенно лично не смотрѣвшимъ конкретное полюбившееся Ѳерапонту Соусову сёдзё) не слабѣе, чѣмъ по вайперу, поскольку они-то перебирают фапчу руками, а вайпалка — автоматически. Получится отыгрыш притчи «хакер в столовой».

Болѣе разумным инструментом антивайпа может служить, скажем, жёсткий запрет на создание болѣе пяти ѳрэдовъ в течение пяти часов, запрет на создание N сообщений в течение часа (величина N может и должна быть подобрана таким образом, чтобы в разы превосходить темпы реального постинга, но не затруднять администратору стирание итогов вайпания).
No. 26694  
Мы не рассматриваем и не рассматривали фапчу как сколько-нибудь серьёзный способ защиты от чего-либо.
Задачи на трекере, связанные с вайпами, уже висят.
No. 26695  
>>26694
Возможно, стоит рассматривать хотя бы гипотетически? Ну как, вдруг понадобиться, а у нас уже все есть.
No. 26696  
>>26693
На вид у вашей идеи с идеей >>26690 есть общий необходимый компонент: детектор аномалий постинга и движок правил для них.
Получается задача по фильтру злоупотреблений наиболее перспективная?
No. 26717  
>>26690
Так фапча вводится лишь один раз, а потом пости сколько влезет. Так что идея описанная тобой неработоспособна. С таким же успехом, можно ещё скрипт ответного автодудоса подключить.

>>26696
Нельзя "отбить" вайп программно, если соответствующее ПО не может его засечь.
No. 26718  
>>26717
> фапча вводится лишь один раз, а потом пости сколько влезет
Тогда она и удаляется так же легко, по общему проездному. Ерунда полная с такой бороться - это как вайпать с одного айпишника.
No. 26719  
>>26717
> соответствующее ПО не может его засечь
А существует некое ПО, достоверно засекающее ботов? На самом деле - нет.

Одной из моих рабочих задач было прикрутить к сервису рубильник, который при необходимости (если мы внезапно не держим нагрузку) банит потенциальных ботов. Для того, чтобы понять, бот перед нами или нет, отдельная команда "Антиробота" из очень крупной компании прикручивала к входящим к нам запросам специальный хедер Is-Suspicious: 1, должный этого бота помечать. При этом, чтобы "надежно" пометить всех ботов, эту метку вешали примерно на 20% пользователей, не считаясь с потерями и массовыми ложноположительными срабатываниями.

Знаешь, что показал эксперимент? То, что даже если перебанить 20% "подозрительных" пользователей, некоторые боты все равно пролазят как к себе домой.

Так что единственное, что может остановить решительно настроенного бота - это либо бан всех проксей бдящим живым человеком, либо закрытие доски (как мы уже видели), либо изменение фапчи на незнакомую боту - с учетом того, что он постепенно обучается на видимых ранее картинках, и менять их набор нужно постоянно.

Но это уже крайние, теоретические меры, конечно. Забежавший сюда вайпер того не стоит.
No. 26720  
>>26717
>Так фапча вводится лишь один раз, а потом пости сколько влезет.
Нет, она позволяет постить в рамках разумного, но если что сессия сбрасывается. Поэтому идея >>26690 работоспособна и покрывает случаи когда фапча вводится ботом заново потенциально может быть каждый раз
No. 26721  
Как починили quick reply? Чем закончилась та эпопея-то?
No. 26722  
>>26721
Выше всё написано.
No. 26728  
>>26066
Возможно, ли создать бордк на этом движке? Как? Извините я сисадмин, по этому не особо разбираюсь в бекенде и архитектуре борды.
No. 26729  
>>26728
*борду
No. 26733  
>>26728
Куда вам борду, если вы даже тред не в состоянии почитать: >>26192
No. 26734  
>>26696
Да хоть бы просто быстрый откат сделали для начала.
No. 26735  
https://bitbucket.org/Therapont/fbe-410/issues/46/ (проблема с двойной сажей) переоткрыт в связи с обнаружением бага.
No. 26737  
>>26733
Спасибо, но я продпочел fukuro в качестве движка
Удалить сообщение []
Пароль  
[Mod]