В сей нити мы упорядочиваем усилия по доработке местного движка. Репозиторий: https://codeberg.org/FBE410/fbe-410 1. Для ваших предложений предназначена ветка public. 2. Только администрация 410чана решает, что в этом движке надо, а что не надо. Соответственно, не стоит излишне пропихивать всякие там революционные идеи. Одобренные потенциальные изменения перечислены на багтрекере (записи, созданные владельцами репозитория). 3. Тестирование предложенных изменений и развёртывание принятых ведётся при наличии у администрации свободного времени на это. Обычно это делается по выходным. 4. Код выложен как есть. Никаких неопубликованных скрытых функций и частей не существует. Предыдущая нить: >>20450
キタ━━━(゚∀゚)━━━!!
>>27611 Как-то плашка посреди формы не очень смотрится, особенно когда большая. И моноширинный шрифт не нужен. Наверное, лучше действительно исчезающую фитюльку где-нибудь сбоку показывать. >>27612 При отправке можно просто заменять текст кнопки «Отправить» на «Отправка…», мне кажется. Или обработка, проверка и т.п.
Просто пришел сюда написать, что новый счетчик это офигительно удобно, оказывается, в наших медленнореалиях, сразу видно когда написали на не очень активную доску, сразу видно если где-то внезапный движ. Круто!
>>27604 > kusaba.js вообще не работает на браузерах старше где-то 2017-ого Ну вот так как к нам ожидаемо заходят нѣкоторые господа даже с браузерами, в которых WebP ещё не открывается (>>27607), то слѣдовало замѣсто fetch использовать https://api.jquery.com/jQuery.ajax/ и тѣмъ тотчас же избавить себя заодно и от необходимости употребления как асинхронных функций, так и высокоуровневого ожидания (top-level await). >>27606 > Соус говорит не заморачиваться Господин Соусов в сообщении >>27599 высказался в том смысле, что если отвалится один только показ счётчиков, то тогда и пёс с ним, потому что счётчики — это украшательство, без которого можно прожить. Но я не думаю, что он приуготовил себя заодно и к отпадению работоспособности всего джаваскрипта на всём сайте за счёт того, что какой-нибудь старый браузер увидит непонятное ему словечко «async» или «await» и начнёт сходить с ума. >>27604 > на что менять mutex? Сейчас этот мьютэкс предотвращает каждой второй-третьей вкладке сайта (открытой параллельно с первою) возможность дѣлать чтó? — если одну только возможность пополлить JSON (как это вроде бы предполагает сообщение >>27588), то тогда, я думаю, мы можем просто-напросто понадѣяться на то, что сёрвер невозбранно переживёт кратный рост траффика во всѣхъ случаях отсутствия объекта «navigator.locks» на стороне клиента.
>>27619 В случае отсутствия объекта navigator.locks не будет за-scedule’н и очередной polling json’а. Таким образом, там, где такого объекта нет, обновление счётчиков наступит только по обновлению вкладки или по появлению у неё visibility. Наверное, стоит попробовать запилить-таки polling в отдельном файле-скрипте, который регистрировать как ServiceWorker, и который для всех вкладок вроде будет общий, тогда и необходимость изолировать polling до одной вкладки отпадёт. > даже с браузерами, в которых WebP ещё не открывается Ну, в Firefox’е async/await появился раньше поддержки WebP, а fetch появился на 4 года её раньше. Чтобы пользоваться fetch-ем, async/await не обязателен, но с async/await удобнее писать, а жалоб на сломавшееся что-то не было пока. Но объявился, похоже, пользователь Firefox 88. Попробую как-нибудь сделать polling в ServiceWorker-е, наверное.
>>27615 > Как-то плашка посреди формы не очень смотрится, особенно когда большая. Вот что-то такое есть. В текущем примере, по крайней мере. Только, если делать фитюльку где-то с боку, как она должна выглядеть и где с боку её показывать? Я вот не очень представляю пока, хочу увидеть пример. > При отправке можно просто заменять текст кнопки «Отправить» на «Отправка…» Пожалуй.
Запилено: Promise chaining вместо async/await; Polling через SharedWorker там, где оно поддерживается: где не поддерживается — например, на мобильном Хроме — поведение polling-а, как сейчас на сайте; Счётчики больше не увеличиваются по отправке собственного поста; Если открыто несколько окон, содержимое счётчиков у них будет меняться одновременно. >>27588-пост тогда игнорировать.
Изменения от текущего public-а.
>>27592 > Also, SauceNAO поддерживает WebP. Но не AVIF. Если кто-то решит найти источник запощенного с потерями, ему придётся искать, чем это дело перешакалить. Именно перешакалить, потому что lossless AVIF практически бесполезен. С другой стороны, обычно по имени файла и так понятно, откуда оно есть. Но Google-поиск тоже AVIF не понимает. Ну и ни на одну неFBEшную борду без перешакаливания AVIF с 410 не запостишь, наверное. С одной стороны, здѣсь проблема в духе курицы и яйцá: кому-то нужно же сдѣлаться первыми, а не то эдак и разработчики https://saucenao.com/ могут сидѣть прямо сейчас и думать «ну зачѣмъ мы будем запускать поиск по AVIF, если поддержки этого формата ещё нѣтъ ни на одной имиджборде — поглядите, даже 410чан ею не обзавёлся». Такого рода рассуждения могут вѣчно ходить по одному и тому же порочному кругу. А чтобы разорвать его, ну почему бы и не нам сдѣлаться первыми. С другой стороны, ну почему непремѣнно «перешакалить» придётся? — можно же декодировать из AVIF в PNG без внесения дополнительных потерь в изображение, а затѣмъ этот PNG скормить поисковой системе. С третьей стороны, ну да, перепостить AVIF на другую борду — это проблема. Но и просто ≈пятимегабайтовый файл JPEG (напримѣръ, >>/b/207992) иногда никак нельзя перепостить на другую борду, причём даже если она позволяет постить файлы в формате JPEG — скажем, на борду https://iichan.hk/b/ не получится оттого, что она принимает до трёх мегабайтов. Но мы не закрыли лицо руками в непреоборимом отчаянии — и не отказалися от пятимегабайтовости. И это правильно. Так что и невозможность перепостить AVIF мы переживём. С четвёртой стороны, ну да, гуглопоиск не принимает AVIF. Ну дык гуглоперевод даже и WebP не принимает (скриншот прилагаю). Но мы не закрыли лицо руками в непреоборимом отчаянии — и не отказалися от поддержки WebP. И это правильно. Так что и невозможность гуглообработки AVIF мы переживём. Кто будет прикладывать AVIF к своему сообщению, тот ужé должен продѣлывать это с полным сознанием того, что картинка не будет видною в старых браузерах. По сравнению с этим дополнительные трудности перепощивания и визуальнаго поиска не так уж значительны. >>27607 Пожалуйста, сообщите название браузера и номер его версии. >>27620 > Ну, в Firefox’е async/await появился раньше поддержки WebP, а fetch появился на 4 года её раньше. Чтобы пользоваться fetch-ем, async/await не обязателен, но с async/await удобнее писать, а жалоб на сломавшееся что-то не было пока. Да, это правда! — причём не только в Файерфоксе, но также и в Safari (трудностями в котором прежде оправдывалася задержка с внедрением того же WebP) мы видим асинхронные функции появившимися в 2017 году, а возможность fetch раньше них. Къ нынѣшнему времени браузеры должны быть новѣе тогдашних. Я наивно думал, что проблемы могут возникать ещё и у таких пользователей, которые по техническим причинам (от непреоборимой привязанности къ нѣкоторому расширению Файерфокса) прекратили обновлять браузер опосля появления движка Firefox Quantum (произошедшаго в ноябре 2017 г., то есть как бы къ столѣтію россійской революціи), а вмѣсто того пересѣли на Pale Moon или ещё куда. К несчастью, такие пользователи ещё есть среди наших читателей и не раз с гордостью заявляли о себѣ в качестве способных год за годом обходиться без новинок браузера Mozilla Firefox. (Напримѣръ, https://410chan.org/b/arch/res/158687.html#159005 в 2021 году.) Но теперь я возобновил в памяти информацию со страницы https://en.wikipedia.org/wiki/Firefox_version_history#Firefox_52_through_59 и ясно вижу, что за прошедшие годы я слегка подзабыл (как страшный сон), что Firefox Quantum — это версия 57, так что предшествующая версия (послѣдняя доквантумная) — это версия 56, а предшествующая ESR-версия (для поклонников обновлений безопасности) — это версия 52. Слѣдовательно, даже появление поддержки асинхронных функций в Firefox 52 не прошло мимо таких пользователей (хотя и едва-едва успѣло состояться одновременно с выходом очередной ESR-версии!), а уж тѣмъ болѣе появление нормального fetch в Firefox 40 мимо них не прошло. Признавая свою неправоту, снимаю и прежние возражения против использования async и await и fetch. Дополнительно в явном виде выражаю сожаление насчёт того, что принудил резолвить промисы.
Появились ли какие-нибудь идеи по дизайну плашки? Как вариант, можно в div, где сейчас topmenu писать.
Или в div над постформой, затирая replymode или нет.
>>27632 С формой быстрого ответа можно сделать что-то похожее, но тогда надо придумать, как ограничить ширину tr-а, если сообщение об ошибке длинное.
> ограничить ширину tr-а, если сообщение об ошибке длинное А, через width:min-content.
>>27630 Так там какие-то проблемы есть с тем, чтобы просто прямоугольная фитюлька в углу (например, верхнем правом) выплывала, а потом уплывала обратно через несколько секунд? >>27631 бы тоже покатило, но мы в теории можем когда-нибудь сделать настраиваемую прилипчивость верхнего меню, а эта штука всегда должна быть видна. В целом, можно не торопиться: работа, видимо, опять встала. Она шла бы быстрее, если бы вы осилили зарегистрироваться в репозитории, лол.
>>27635 Технически нет. Но хочется увидеть пример, чтобы понять внешний вид и её оптимальные размеры относительно остальных элементов. Мои проблемы с фитюлькой в правом верхнем углу: Ассоциация с please accept cookies, пусть такое обычно в левый нижний угол пихают. Topmenu-вариант больше похож на статусную строку, хотя статус обычно снизу; Сообщение релевантное содержимому формы постинга может далековато от неё оказаться. Может понадобиться переводить взгляд с левого нижнего угла экрана, где форма быстрого ответа, на противоположный. Более проблематично на большом мониторе. У topmenu-решения та же проблема, но оно во всю ширь экрана/браузера, сразу не заметить сложнее; У нас сейчас документ идёт строка за строкой, кроме когда пользователь решает перетащить форму постинга, и кроме div-а с избранными нитями (Которым кто-то пользуется?). Теряется alignment. > но мы в теории можем когда-нибудь сделать настраиваемую прилипчивость верхнего меню, а эта штука всегда должна быть видна Проблем нет совместить, если потом когда-нибудь делать. BTW, вариант для быстрого ответа, как на картинке, точно совсем не подходит?
>>27636 Уведомления в интерфейсах обычно вылазят поверх содержимого, а не встраиваются в него, меняя размеры объектов. Тем более, что внутри нитей содержимое форм дублируется, и нет никакого смысла к конкретной форме что-то прилеплять. >Ассоциация с please accept cookies, пусть такое обычно в левый нижний угол пихают. Эти штуки и во всю ширину бывают. В любом случае, с ними пользователь должен взаимодействовать, а наше уведомление должно само появляться и пропадать через некоторое время (впрочем, кнопку закрытия можно и приделать).
>>27674 Раз >>27631-версия подходит, сделаю её тогда. Скорее всего, patch будет где-то в конце августа. > внутри нитей содержимое форм дублируется Кажется, там дублируется только содержимое input-ов и textarea. > кнопку закрытия можно и приделать OK.
Запилено >>27631 в ≈>>27593 виде. Можно тестировать. Стилеспецифичный CSS statusbar'а только для Умночана написан.
>>27592 > Но Google-поиск тоже AVIF не понимает. С прошлой пятницы (30 августа) начал понимать: https://developers.google.com/search/blog/2024/08/happy-avifriday (Скриншот прилагаю.)
В lib/javascript/kusaba.js на 573-ей заменить fetch('/board.php?' + board + "&fetch-call=1", { На fetch('/board.php?' + e.target.form.elements.board.value + "&fetch-call=1", { Sorry.
fetch('/board.php?' + board + "&fetch-call=1", {
fetch('/board.php?' + e.target.form.elements.board.value + "&fetch-call=1", {
>>27731 К чему это хоть?
>>27732 К >>27697.
>>27569 > даже пулреквеста в репозитории нет, чтобы по-быстрому можно было накатить. Теперь есть: https://codeberg.org/FBE410/fbe-410/pulls/38
Дополнительно предупреждаю ещё, что перед накатыванием пуллреквеста >>27746 неплохо бы провѣрить ещё разок, была ли собрана новая версия PHP (по умолчанию) таким образом, чтобы у ней в GD работали функции imagecreatefromavif и imageavif. А не то, мало ли, вдруг окажется, что как раз на поддержке AVIF и сэкономили. И тогда упсъ.
Документация по адресу https://www.php.net/manual/en/image.installation.php говорит нам, что для того потребным оказывается параметр «--with-avif» при конфигурировании сборки PHP. Словосочетание «по умолчанию» в сообщении >>27749 означало, что я считаю (предположительно) версию PHP на сёрвере поставленною из такого готового пакета, при сборке которого параметр поддержки AVIF был уж включённым, если сборщики пакета знали своё дѣло.
Что ж, давайте вернёмся к отказу от фрейма по умолчанию, и подумаем, что можно засунуть на главную кроме новостей (кстати, с ними связана задача https://codeberg.org/FBE410/fbe-410/issues/14 ) и списка досок. Какие-то избранные картинки по типу соседнего сайта у нас, как мне кажется, не покатят по очевидным причинам. Что там ещё может быть? Наша скорбная статистика активности?
>>27753 Избранные посты, например, свежее из Онгоинг-треда? Рекомендованные нити, как-то недавнее Тестирование микрофона, Витрина Супермаркета, Унтара-кантара или нити Общих вопросов? "Этот день в чаносфере" со ссылкой на Нубтайп-вики? Цитаты?
Наверное не стоит забывать и про кнопку "Оплатить проезд"
>>27754 Это та же лабуда, что и избранные картинки. У нас на сайте не так много контента и активности, чтобы такое делать. Была ещё старая идея мутить что-то ко дням рождения анимешных персонажей, которую можно было бы использовать тут, но тоже как-то сомнительно.
>>27756 >У нас на сайте не так много контента и активности, чтобы такое делать. Вот кстати, у нас может быть не очень много контента и активности сейчас, но достаточно контента в архиве. Может было бы интересно в доступной форме, без необходимости вручную ходить по файлам, показывать что-то из архивных нитей? Технически очень даже реализуемо. И еще, а насколько фантастично разместить на главной что-нибудь интерактивное, например какую-нибудь не очень сложную, но вовлекающую в сообщество коллективную игру для пассажиров? Что-нибудь относительно простое, хтмлное, но веселое и главное в близкой тематике? Можно даже какой-то отложенный мультиплеер, где один ход делает любой пассажир, а один ход - кто-то из Супермаркета. Слишком круто для нас?
Возможно даже что-то во что можно играть через постинг в специальную нить, и на главной отображать собственно состояние игрового поля, относительно результатов парсинга этой нити
Соусу по поводу https://codeberg.org/FBE410/fbe-410/issues/33#issuecomment-2370914: будет, но чуть позже. Жив, но сейчас неотложные дела, не имеют даже возможности войти в аккаунт на codeberg. И этот issue не про документацию, а про переписывание всего движка на использование escape_sql и другие задачи. О таком issue просил Якуй (подробности и ссылки см. в тексте issue).
>>27757 Я вообще хотел бы что-то простое и автоматическое. Поэтому и предложил статистику. Главная — не то, чтобы сильно нужная страница на чане, на неё мало кто ходит из завсегдатаев, и удерживать на ней новых людей тоже смысла нет, чтобы там интерактивы мутить какие-то. >>27759 Ок. Удачи с делами. Документация нужна для того, чтобы другие разработчики понимали, что происходит.
>>27760 Так а как тогда насчет ОП-поста случайной нити из архива на главной, с указанием даты и ссылкой на архив? Слишком скучно? Это мне кажется, и автоматизируется, и не должно быть слишком тяжело, хотя конечно придется HTML кусать на стороне сервера.
>>27761 Во-первых, действительно надо ХТМЛ дёргать, что не очень. Во-вторых, а зачем? В архивах всякое от балды лежит, а не избранная коллекция, лол.
>>27756 >Была ещё старая идея мутить что-то ко дням рождения анимешных персонажей, которую можно было бы использовать тут, но тоже как-то сомнительно. А что если сделать это с небольшим твистом? 1. Добавляем массив персонажей с их днями рождения 2. Пишем скрипт, который от текущей даты находит ближайший день рождения 3. Выводим где-нибудь на главной обратный отсчет "До Дня Рождения Юи Хирасавы 2 дня 11 часов 59 минут 10 секунд", с портретом 4. В день рождения выводим короткое поздравление и приглашаем пассажиров отпраздновать в /a/ или /ts/, в зависимости 5. Если дни рождения совпадают, или через день, можно даже устраивать мультименины Вроде бы и просто, и не совсем пресно.
>>27763 Я думал просто нарисовать картинки и вывешивать где-нибудь на день. Но во-первых, я сделаю подборку на своих предпочтениях, и кто-то будет недоволен, что его любимых персонажей не поставили, лол. Хотя даже по своей подборке я не вполне уверен, какие лучше критерии использовать. Во-вторых, какие-то отсчёты и нарочитый интерактив в этой затее не нужны, мне кажется. Даты могут подряд идти, а отмечать не факт, что кто-то будет (как на соседнем сайте всем плевать на смену имён).
>>27764 Моя имха, по собственному экспириенсу. У меня вот, что на Ычан, что на Автобус, что на некоторых других форумах, стоят закладки и они ведут не на главную, а сразу в часто посещаемый и любимый раздел. Что там на главной, я годами не вижу. А вот новые посетители, скорее всего, зайдут на главную, если не из поиска в гугле по конкретной теме. Потому, мне кажется, там должна быть ещё инфа актуальная и полезная для новичков.
>>27765 Информация там есть уже. Даже ссылка на вики, лол.
>>27764 >кто-то будет недоволен, что его любимых персонажей не поставили >я не вполне уверен, какие лучше критерии использовать А если открыть реквесты на пиксиве, и вдобавок к своим картинкам, за пожертвования в Супермаркет рисовать картинки с любимыми персонажами пассажиров? Ну и раз уж зашел разговор про пожертвования, может попробовать устанавливать какую-то прогрессирующую цель сбора (уровень 1 - продление доменов, уровень 2 - хостинг, уровень 3 - связь, уровень 4 - файлы 10 Мб), и затем на главной показывать прогрессбар? Или это все не в нашем духе?
>>27767 >и вдобавок к своим картинкам, за пожертвования в Супермаркет рисовать картинки с любимыми персонажами пассажиров Это уже коммерческие заказы какие-то, я не готов таким заниматься. >может попробовать устанавливать какую-то прогрессирующую цель сбора Я думал сделать полоску с максимальной на данный момент суммой (за 2018 год, кажется), но когда я изучал этот вопрос, там по-простому нельзя было сделать, и я пока забил. Но это для Соус.нета всё, зачем оно тут? Тут ссылки бы хватило.
>>27769 Кажется, пока идеи у меня закончились ._.
https://sushigirl.us/ Как тебе сушичановская главная, Соус?
>>27773 Просто список досок, из которого вообще непонятно, что за сайт? Не очень, если честно.
>>27774 >вообще непонятно, что за сайт Ну почему вообще, сразу понятно что виабу!
По поводу главной, кроме уже сказанного, пока ничего предложить не могу, но есть пара предложений по улучшению механизма отправки. Вместо Отправка... выводить Отправка... 34%, то бишь выводить прогресс; Сделать предварительную проверку на клиенте длины поста и прочего, что не требует пересылки всего сообщения. Проверяем пост на соответствие сохранённому в local storage boards.json или boardname/settings.json. Если соответствует, отправляем на сервер. Если не соответствует, на всякий случай скачиваем свежий boards.json, проверяем, и если и свежему boards.json пост не соответствует, выводим ошибку. Если соответствует, отправляем на сервер.
Соус, а как тебе идея на главную ретранслировать свой твиттер, чтобы люди без аккаунта были в курсе происходящих вещей без регистрации и смс?
>>27778 Чтобы люди были в курсе всех Fgsfds’ов, надо устроить бложик админа на главной, лол.