В сей нити мы упорядочиваем усилия по доработке местного движка. Репозиторий: https://codeberg.org/FBE410/fbe-410 1. Для ваших предложений предназначена ветка public. 2. Только администрация 410чана решает, что в этом движке надо, а что не надо. Соответственно, не стоит излишне пропихивать всякие там революционные идеи. Одобренные потенциальные изменения перечислены на багтрекере (записи, созданные владельцами репозитория). 3. Тестирование предложенных изменений и развёртывание принятых ведётся при наличии у администрации свободного времени на это. Обычно это делается по выходным. 4. Код выложен как есть. Никаких неопубликованных скрытых функций и частей не существует. Предыдущая нить: >>20450
>>27900 Так там не в имени файла дело же оказалось.
>>27901 Да? Я не могу попробовать новую версию скрипта пока, но вы тут пишете про какие-то четырёхбайтовые эмодзи и переносы, в то время как в >>27884 оно при проверке считает имя файла в суммарную длину сообщения (и без файла даёт запостить). Как это связано, лол?
Пока не забыл, ещё вопросы насчёт функции «setup_message_length_indicators» в коде >>27891: ➊ Какой смысл добавлять к счётчику нули слѣва? ➋ Почему счётчик должен быть трёхразрядным (напримѣръ, «001/1000»), если считает до тыщщи, но четырёхразрядным (напримѣръ, «0001/8192»), когда считает до всякого другого четырёхразрядного числа? Не проще ли и не короче ли было бы вмѣсто «Math.ceil(Math.log10(max_message_length))» использовать выражение «('' + max_message_length).length», результат которого не создаёт этого нюанса? А не то сбивает с толку намёком на то, что считает только до 999, а не до тыщщи — однако условие «c_len > max_message_length» в функции «check_post» говорит нам, что до max_message_length всё же можно досчитывать. ➌ Точно ли нужно создавать и наполнять свойство «msg_area.last_msg_len» для того, чтобы не вызывать присваивание «indicator.textContent = ''» лишний раз? (Сильно ли тормозит?)
>>27902 Длина строки «[Doremi].Chuunibyou.demo.Koi.ga.Shitai!.Movie.Take.On.Me.[1920x1080].[Blu-ray].[2BB3C549].mkv_snapshot_00.25.07_[2018.07.27_23.17.43].jpg» равна 137 сѵмволовъ и оттого подозрительно не похожа на разницу между величинами 8257 и 8192 наверху скриншота >>27884, которая равна 65.
Зато разница >>27905 превосходно равняется количеству концов строк в тексте, состоящем из 66 строк (между которыми 65 концов, раздѣляющихъ строки между собою) — а вѣдь прямо сейчас в вики-коде https://noobtype.ru/w/?title=Ычан&action=edit§ion=1 (ещё ни разу не перемѣнявшемся въ нынѣшнемъ году) можно насчитать как раз 64 строки, если первою считать заголовок «== История ==», а послѣднею — строку «Среди нововведений 2009 года можно назвать начало сотрудничества с другими имиджбордами по добавлению их досок во фрейм «Ычана».», которая видна на скриншоте >>>>27884 одной из послѣднихъ и позволяет нам угадывать источник используемой копипасты. И за нею (дополняя до 66 строк) видны ещё строки «2010—2011» и «рпопопо…». Вот поэтому-то мы и разсуждаемъ о том, как правильно считать сѵмвол (или два сѵмвола) конца строки.
>>27906 > gettext('Sorry, your message is too long Встречается только в posting.class.php и только единожды — в CheckMessageLength. > CheckMessageLength( Вызов этой функции встречается только в board.php и тоже только один раз. Можно было бы предположить, что где-то до выполнения CheckMessageLength при наличии файла выполняется $_POST['message'] = str_replace("\r\n", "\n", $_POST['message'])), но у меня такого нет: есть файл, нет файла, а сервер возвращает ту же длину. Так что… >>27902 > Как это связано, лол? Не знаю. > (и без файла даёт запостить) Can not reproduce. Воспроизводился неправильный подсчёт клиентом UTF-8 длины would-be отправляемого сообщения, что в новой версии kusaba.js и починил.
>>27903 ➊ Так в >>27794 нарисовано было; ➋ Починил; ➌ Не нужно. Последил за htop, когда setup_message_length_indicators закоментированно и когда нет, на 100000 символов разница в нагрузке особо не заметна. С другой стороны, лишний раз textContent менять не нужно, either, так что оставил.
>>27908 > Так в >>27794 нарисовано было Это соображение совершенно справедливо. (Впрочем, если им послѣдовательно руководиться, то тогда и счётчику слѣдовало бы считать от 0000, а не от полумаксимума.) Дополнительно сообщаю о двух возможностях упрощения: ① запись «'/' + String(max_message_length)» можно упростить до «'/' + max_message_length», ② запись «msg_area.oninput = (e) => {» можно упростить до «msg_area.oninput = () => {».
В общем, по главной предлагаю пока сделать как на картинке. Если потом нарешаем какие-то декоративные штуки прикрутить, можно будет уже отдельно обсуждать. Ещё надо добавить <meta name="viewport" content="width=device-width,initial-scale=1"> на news.php и её подстраницы, чтобы мобилочная ЦСС работала.
Господин Соусов выложил предложение >>27913, или админ сайта, или анонимный разработчик-помощник? — что-то никак не соображу. Вот что значит отказ не от одного только надёвывания шапок, но и от употребления аватар.
>>27923 Внёс упоминание в задачу на трекере.
Реквестирую мёрдж https://codeberg.org/FBE410/fbe-410/pulls/56 тогда.
Я так понимаю, что у нас движок кроме картинок и видосов файлы на соответствие не проверяет? А то вон «4чан» якобы поломали через ПДФ, которые на самом деле не ПДФ. В связи с этим я пока отключил в /dev/ загрузку архивов и прочих файлов, кроме картинок и видео. Вопрос, соответственно, действительно ли это уязвимость для нас, ну и давайте обсудим, можно ли прикрутить проверки к файлам (и тогда нужен список форматов, которые потенциально нужны кому-то тут). Также замечу, что я >>27939 видел, но работа по движку пока встала с нашей стороны.
>>27943 > Вопрос, соответственно, действительно ли это уязвимость для нас Хотѣлось бы максимум подробностей (и, в идеале, гиперссылку на первоисточник) утверждения о том, что 4чан «якобы поломали через ПДФ, которые на самом деле не ПДФ». Тогда его разбор может сдѣлаться предметным подобно тому, как прежде в случае формата WebP мы разбирали (я надѣюсь) не ѳэзисъ «WebP уязвим, избѣгайте его», а конкретную уязвимость BLASTPASS в библиотеке libwebp, насчёт которой можно буквально посмотрѣть и самостоятельно оцѣнить непродуманные правки исходнаго кода: и насколько давно появилися, и когда были поправлены, и какой эффект имѣли. Если ж подробностей не будет, то тогда семь общих соображений: ① Давно и достаточно хорошо извѣстны файлы, являющіеся своего рода «кентаврами», то есть способные быть прочитанными (в зависимости от их обработчика — и, в частности, в зависимости от придаваемого им расширения имени файла) как файлы двух разных форматов. (И не только быть прочитанными, но и имѣть в каждом из этих форматов нѣкоторое содержательное содержимое.) Классический для имиджборд примѣръ — это RARJPEG, то есть приклеивание к хвосту JPEG-картинки нѣкотораго RAR-архива. ② Обычными примѣненіями таких «кентавров» является, во-первых, принуждение нѣкоторой имиджборды к хостингу небольших файлов, без такого принуждения не принимаемых ею (но которые можно засунуть в файл другого формата и при выкладывании сопроводить его общедоступною инструкциею по распаковке), а во-вторых, своего рода стеганография (это когда инструкция по распаковке не общедоступна, но небольшому кругу частных лиц сообщают, что к хвосту такой-то картинки на таком-то сайте присоединён был желаемый файл). У первого из таких примѣненій возможна альтернатива, которая не потребует такого «кентавра» (просто сохранять байты файла по три штуки в качестве RGB-значений пикселов PNG — это даже будет своего рода «архивациею» по своей силе сжатия, потому что сжатие в PNG работает на основе классического алгоритма DEFLATE), но зато создаёт явный визуальный «мусор» в картинке. (Способы, https://github.com/mosegontar/underbyte подобные, уменьшают замѣтность «мусора», но уменьшают и величину файла, способного быть засунутым в PNG.) ③ Примѣненіе таких «кентавров» для взлома сайтов требует того, чтобы «кентавр» оказался загруженным в такую область файловой системы сайта, откуда можно запускать на исполнение код PHP (на стороне сёрвера) или код JavaScript (на стороне читателя сайта, когда читатель — залогиненный админ, у которого хочется стырить пароли). При этом движки имиджборд (а также форумов, вики и проч.) проектируются обыкновенно таким образом (и инструктируют настраивать сайт таким образом), чтобы запускать PHP из файла, только что выложенного пользователем, было нельзя. (Как правило, запуск файлов PHP разрѣшается из одного подкаталога, а файлы от пользователей принимаются в другой подкаталог, который сёрвер не перепутает с первым.) Также и HTML-тэг <script src="загруженная_картинка"> создать не получится. ④ Вроде бы исключением могут считаться скрипты в PDF, которые реально запускаются на исполнение. Однако в большинстве современных браузеров просмотр PDF совершается посредством движка PDF.js, запускаемого изолированно (то есть скрипты PDF не должны — в теории, по крайней мѣрѣ — управлять браузером от имени админа сайта, даже открывшего этот PDF на том сайте, на котором залогинился). Уязвимость этого движка, позволяющая выбраться из изоляции, была бы серьёзною новостью, а новостей таких вроде бы не появлялося. Напротив, в новости https://xakep.ru/2025/04/16/4chan-hacked/ и https://bsky.app/profile/zappit.bsky.social/post/3lmudrfovzc26 процитированы слухи (по-видимому, изъ нѣкоторой микроблогозаписи в Bluesky, в настоящее время сдѣланной подзамочною) про использование уязвимости слишком старой версии движка PHP (2016 г.) для взлома 4чана, что предполагает атаку совершившеюся не на клиентской, а на сёрверной стороне. ⑤ Ещё одним таким форматом файла, который вроде бы картинка, но в нём браузеры запускают джаваскрипты при его открытии, является SVG. Разрѣшать его загрузку на имиджборды поэтому опасно. ⑥ В обыкновенных файлах картинок (когда онѣ не SVG) браузеры не запускают джаваскрипты, даже если картинку эту открыть не помѣщённою в качестве иллюстрации на web-странице, а ѿдѣльно перейти по гиперссылке к такой картинке. То есть для атаки потребуется ясно приказать браузеру использовать этот файл не как иллюстрацию, а как скрипт (то есть сформировать HTML-тэг <script src="загруженная_картинка"> на странице), что пользователь на имиджборде обыкновенно сдѣлать не может, потому что запрещено. В этом смысле равно безопасны и картинки условно «старых» форматов (GIF, JPEG, PNG), и условно «новых» (WebP и AVIF, а в будущем — также JPEG XL). ⑦ Предубеждение «новый формат опаснѣе» (вроде бы подкрѣпляемое обнаружением уязвимости BLASTPASS в WebP) не может считаться вѣрнымъ по отношению к возможности создания файлов-«кентавров». Как раз наоборот: самый старый из используемых форматов иллюстраций (а именно GIF) в силу своего возраста лучше всего изучен насчёт приёмов, обеспечивающих засовывание туда джаваскриптов, не нарушающее ни внѣшній видъ картинки в GIF, ни работоспособность джаваскриптов. (Примѣромъ может служить утилита https://github.com/pranavms13/gifjs или, напримѣръ, статья https://habr.com/ru/companies/vdsina/articles/518162/ на Хабрахабре.)
>>27944 https://iichan.hk/b/res/5370171.html#5370232
Если мы сейчас обсуждаем выложенный по адресу https://iichan.hk/b/res/5370171.html#5370232 (без указания на первоисточник) файл PNG (который я прилагаю здѣсь сконвертированным в формат WebP, но который исходно был JPEG, судя по артефактам вокруг букв), то в нём утверждается, что 4чан был взломан на сёрверной стороне через уязвимость старой версии Ghostscript (2012 г.) благодаря тому, что ею создавалися миниатюры файлов PDF (причём любых — в том числе и содержащих не PDF, а PostScript). Если это правда, то тогда можно быть близко к 100% увѣреннымъ в том, что на 410чанѣ такой уязвимости не может случиться, потому что у нас в коде FBE создаются миниатюры только для картинок (в число которых вроде как не входят файлы PDF, если здравый смысл никому не измѣнилъ при настройке движка на 410чанѣ) да ещё и для видеофайлов, тогда как для остальных файлов вмѣсто миниатюр показывается заранѣе заготовленный значок, сѵмволизирующий конкретный тип файла их. Провѣрка картинок на картиночность совершается в GD, а GD не может читать PDF и оттого не признает картинкою. Провѣрка видеофайлов на видеофайловость совершается в FFprobe, а FFprobe не будет же (я надѣюсь) запускать Ghostscript, если кто-нибудь подгонит PDF, переимѣнованный в MP4 или в WebM. (Вроде бы FFprobe просто-напросто нельзя и собрать с Ghostscript в качестве движка для чтения PDF.)
>>27946 Вопрос в том, что если файл (кроме картинок и видео) вообще не проверяется на соответствие формату, то на сервер под видом такого файла можно загрузить что угодно и выполнить что угодно.
>>27947 >загрузить Да. >выполнить Нет. Покуда Апач не настроен выполнять всё подряд ИЛИ файл каким-то образом смогут переименовать после загрузки ИЛИ уже есть доступ хотя бы с правами сервера.
На каждой странице можно сэкономить немного байтов, если в движке в подкаталоге smarty/templates в каждом шаблоне найти вот эту строку: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> и придать ей современный краткий вид: <meta charset="utf-8"> (Я ссылаюсь на стандарт https://html.spec.whatwg.org/multipage/semantics.html#charset как на источник этой идеи.) Нужно?
>>27949 Ну как будто сейчас не 80-е/90-е года, чтоб экономить каждый байт
>>27949 Если ничего не сломается, то можно. >>27950 Ага, сейчас 20-е, чтобы ныть, каким тормозным и раздутым стал веб.
Я занёс <meta charset="utf-8"> в тот же реквест >>27939. Переломиться ничего не должно: я ≈увѣренно помню, что читал (около полутора десятков лѣтъ назад) о том, что этот конкретный кусок стандарта документирует практику, ужé существовавшую ко времени появления HTML5 (то есть обязан своим появлением пониманию того, что тогдашним браузерам было наплевать на всё остальное содержимое того мета-тега, который заканчивался указанием того, каков charset в документе).
В своё время поддержка WebP появилась на 410чане в ноябре 2020 года (как это в сообщении >>/d/2377 говорится), тогда как в Adobe Photoshop пришлось дожидаться версии 23.2 (как это по адресу https://helpx.adobe.com/photoshop/kb/support-webp-image-format.html официально пишут), а вышла она болѣе чѣмъ на год позже — в феврале 2022 года (как в новости https://www.cgchannel.com/2022/02/adobe-ships-photoshop-23-2/ сказано было). С форматом AVIF ситуация оказывается противоположною: поддержка этого формата в «Фотошопе» появилася с версии 26.8 (как это по адресу https://helpx.adobe.com/photoshop/using/whats-new/2025-6.html официально пишут), а вот на 410чанѣ не появилася ещё. (Совершенно всё то же сáмое и с форматом JPEG XL, но он-то хотя бы не в каждом новом браузере поддерживается, так что нежелание поддержки его на 410чанѣ понятно.)
>>27944 > возможна альтернатива, которая не потребует такого «кентавра» (просто сохранять байты файла по три штуки в качестве RGB-значений пикселов PNG — это даже будет своего рода «архивациею» по своей силе сжатия, потому что сжатие в PNG работает на основе классического алгоритма DEFLATE), но зато создаёт явный визуальный «мусор» в картинке Чтобы показать, как работает такой подход, давайте для простоты найдём такой файл, число байтов которого дѣлится на три без остатка (чтобы не возиться с дополнением файла нулями до нужного объёма), а формат в настоящее время не разрѣшёнъ к загрузке на 410чан. Сообщение >>27980 предлагает нам на странице https://helpx.adobe.com/photoshop/using/whats-new/2025-6.html примѣръ такого файла в лице послѣдней тамошней иллюстрации (на которой филин): она раздаётся оттудова в формате AVIF (может быть, не каждому браузеру, но моему уж точно) и занимает 286 464 байта (а это 3×95488). Сохраним её под именем "AVIF and JPEG XL in Adobe Photoshop.avif". Поискав разложение числа 95488 на близкие сомножители, мы найдём произведение 256 × 373 = 95488 — оно даёт нам ширину и высоту будущего файла PNG. Теперь подадим под Windows кодирующую команду: ffmpeg -hide_banner -f rawvideo -pixel_format rgb24 -video_size 256x373 -i "AVIF and JPEG XL in Adobe Photoshop.avif" encodedAVIF.png Мы получим файл PNG, который при помощи https://github.com/fhanau/Efficient-Compression-Tool/ можно доужать до объёма 286 985 байтов (результат прилагаю) — это всего лишь на 521 байт больше исходного AVIF. Кто угодно, скачав прилагаемый файл отсюдова, может декодировать его обратно такой командою: ffmpeg -hide_banner -i encodedAVIF.png -f rawvideo -pix_fmt rgb24 decodedAVIF.avif Результат байт-в-байт идентичен исходному AVIF, взятому на сайте Adobe.
Раз работа встала в очередной раз, самое время обсудить бесполезные свистоперделки. Вот насколько проблематично будет прикрутить какие-нибудь опросы с голосованием с имеющихся в базе IP с живыми сообщениями на момент создания опроса? И насколько вообще такое кому-нибудь надо, лол. По такому же принципу ещё можно лайки сделать.
>>27993 Лайки на имиджборде? Шта? 🙃 Кстати, у меня два вопроса. 1. Какой всё-таки правильный синтаксис многострочного исходного кода на автобусе? Если использовать 4 пробела перед каждой строкой, отступы исчезают, и код получается едва читаемым. 2. Почему на автобусе нельзя прикрепить несколько файлов к сообщению? Прикрепление нескольких файлов слишком сложно реализовать или это сознательное ограничение.
>>27994 >Лайки на имиджборде? Шта? 🙃 Сейчас бы залётному смайлофагу за лайки на имиджбордах возмущаться. Во-первых, они есть на «Футабе». Во-вторых, меня в вопросе очевидным образом интересуют опросы, а не лайки. > Какой всё-таки правильный синтаксис многострочного исходного кода на автобусе? Вы про код в разметке? https://codeberg.org/FBE410/fbe-410/issues/50 висит уже 8 месяцев, а пока оно работает так, как работает. >Почему на автобусе нельзя прикрепить несколько файлов к сообщению? Прикрепление нескольких файлов слишком сложно реализовать или это сознательное ограничение. Потому что не нужно, да.
>>27995 Дело же не в том, что код не подсвечивается. Он вообще публикуется в сломанном виде. Вот пишу функцию на питоне. Перед каждой строкой делаю дополнительные 4 пробела. Перед кодом и после кода пустая строка. def f(x): a = x * x return a Кстати, я не залётный. Я тут больше десяти лет, но что-то как-то с многострочным кодом в разметке не срослось.
Кажется, у нас ещё счётчик символов в форме постинга отвалился (который >>27794). >>27996 Очевидно, что задача с синтаксисом должна порешать эту проблему. Сейчас это вообще не код, а моноширинный шрифт без задач.
>>27997 > Кажется, у нас ещё счётчик символов в форме постинга отвалился А оно приваливалось? Помнится, kusaba.js изменениями в приложенном к >>27908-посту файлом так обновлён и не был. Из >>27891, neither. >>27993 > какие-нибудь опросы с голосованием А какие? Наверное, не проблематично. Опросы публикуются админом на глагне? Или их могут добавлять обычные постеры в свои посты? Может ли постер поменять результат голосования? Насколько свежими должны быть сообщения, чтобы считаться живыми? Разметку объявления опроса, наверное, сделать, как для списков: скажем, вместо "- " или "# ", "v: " в начале строки. Ещё вопрос в том, как это должно выглядеть. Скажем вот, для случая, если у пользователя отключены скрипты, добавлять ли кнопку отправки ответа на опрос в пост, и куда её ставить? Или сделать, чтобы отправив что-нибудь вроде ">>111/3/2", можно было бы проголосовать за 2-ой вариант в 3-ем опросе 111-ого поста? > спойлер Лайки-то куда проще сделать. Якуй похожее для 014(1) делал было, может, наработки сохранились. Опросы ладно там, но насчёт запила лайков я не уверен. Для картинкотредов, конечно, полезно было бы, но тут в /b/ они нынче почти неживые.
>>27994 >>27996 4 пробела — это на Ычане же. Тут ``. >>27997 Сейчас это не только моноширинный шрифт, но и замена пробелов на неразрывные, что позволяет делать отступы, отключение форматирования, что позволяет постить код с операторами умножения, и большой межстрочный интервал, который ни к чему и надо бы по-хорошему убрать.
>>27998 Опросы для пользователей. Смена голосакак будто бы лишнее усложнение системы . Сроки для определения живых IP если делать, то настраиваемыми. Вероятно, ещё какие-то ограничения нужны, чтобы не спамили опросами. По разметке надо бы посмотреть, как это на других сайтах делается. Те же ББ-коды с форумов какие-нибудь. По внешнему виду и принципу работы тоже надо на форумы смотреть. Бесскриптовых проще послать, потому что это всё равно необязательная функция. Лайки по сути по похожей системе должны работать, только принудительно в каждом сообщении, поэтому я их и вспомнил.
>>27999 Многострочные бэктики? А что, так можно было? def f(x): a = x * x return a
def f(x): a = x * x return a
>>28000 > Те же ББ-коды с форумов какие-нибудь Посмотрю. Хотя вот у вакаба-разметки есть то достоинство, что не нужно переключаться на английскую раскладку для её набора. Думаю, что такой более простой для набора вариант стоит добавить тоже. В конце концов, BB-коды для модификации шрифтов сейчас работают наравне с, пусть это и не упомянуто в FAQ. > Лайки по сути по похожей системе должны работать В принципе, в БД действительно можно было бы задействовать под лайки те же, что и для опросов, таблицы, но я бы завёл отдельную. Так или иначе, давайте сначала счётчик символов будет впилен. А то мне писать в стол не очень интересно.
>>28002 Я попытаюсь на выходных разобраться, почему правки не накатились на сервер. По опросам не задача пока, а обсуждение. В трекере и так задач куча, в том числе относительно простых.
kusaba.js обновлён. Кроме того, вышел новый «Дебиан», а в нём ПХП 8.4. Соответственно, требуется проверить совместимость.
>>28004 Пристальное вглядывание в содержимое страницы https://www.php.net/manual/en/migration84.incompatible.php (скриншот которой прилагаю) способно подсказать, что серьёзных измѣненій исходнаго кода не потребуется. Напримѣръ, E_STRICT в коде FBE не используется вообще, тогда как «PDO» обнаруживается чуть ли не только как часть слóва «dropdown».
Ещё задача, которой никто не будет заниматься: https://codeberg.org/FBE410/fbe-410/issues/58
Я только что понял, господа, что с новою стабильною версиею Debian (версия 13, она же trixie) к нам приѣхала не одна только возможность использовать новую версию языка PHP (версию 8.4), но и возможность использовать новую версию графического движка ImageMagick (версию 7.1.1.43), а также возможность использовать новую версию видеодвижка FFmpeg (версию 7.1.1). Новая версия FFmpeg подарит нам (с высокою вѣроятностью) возможность загружать на 410чан видеозаписи, снабжённыя звуковою дорожкою в формате USAC (он же xHE-AAC). А новая версия ImageMagick означает, что поддержка AVIF не обрѣчена теперь опираться на GD. Также она означает, что вызывать команду convert будет нельзя, а придётся вызывать команду magick. Я обновил https://codeberg.org/FBE410/fbe-410/pulls/38 с учётом этого — но если мёрджить поддержку AVIF всё ещё неохота, то первая из правок https://codeberg.org/FBE410/fbe-410/pulls/38/commits/ba1516f5ae8d1306cbf11167d04b31c1f1ec8ba1 (замѣна «convert» на «magick» в командной строке) всё равно понадобится для IM7.
Я извиняюсь, уж сколько раз твердили миру, что исполняемый код не должен генериться из чужих данных, что все инструменты надо юзать исключительно через API, сколько уже програм было взломано из-за "мы будем через командную строку", "мы будем составлять SQL-запрос из данных", "мы вызовем eval, потому что мы бэкдорщики", "мы будем использовать pickle, потому что мы либо бекдорщики, либо долбоёбы, а кому не нравится - тот утрётся, никто не заставляет модели, нашей библиотекой деланные, использовать". Кстати, в дебиане тоже долбоёбы сидят. Базу apt-listchanges они пиклом сериализовать стали с некоторого времени... Если кто комп и поломает - так это скрытное закрепление: никаких бинарей посторонних нет, а база эта на каждый запуск обновляется, задолбаешься её мониторить. ImageMagic - это вообще особый вид бекдора, который шестиметровым шестом даже трогать не следует.
>>28011 Что предлагается-то? Не вижу у тебя пулл-реквеста с кодом.
1. Сказано что - либы юзайте. 2. Пуллреквеста не будет, этот ваш движок самодельный, в принципе нет никакого смысла разрабатывать незалежный движок, этих движков хоть жопой жуй уже развелось, все незалежные движки - это просто распыление и так скудных ресурсов глобального опенсорс сообщества. Бордосфера вообще вымирает, пэтому вместо того чтобы в незалежность играть, лучше бы с админами других борд контакт установили, и определились бы с общим движком. Также все эти самодельные разметки - это заноза в жопе, я вообще не помню, когда я в последний раз не на markdown что-либо писал. Это вам не restructured text со свистоперделками, которые без кастомного кода работать не будут, и которые на каждом портале документации свои, а просто общее подмножество с удобным синтаксисом, которое просто копируешь как есть - и это работает. Учитывая поддержку pandoc, и что очень близко к plain textу - в результате это очевидный выбор для тренировки LLMок, вот если бы никаких LLMок не было, и если бы мне пришлось делать первую LLMку - я бы тоже выбрал markdown недолго думая. Учитывая вышеперечисленное общий движок должен быть markdown-native.
>>28013 Ну вот и свали тогда в свою бобросферу к другим админам, раз толку от тебя никакого.
Шёл 2025 год, а какие-то бесноватые продолжали вещать про бобросферу™, единые движки и т.д. Чего уж там, я в районе 2012 (если не раньше вообще) с одним админом-разработчиком из бобросферы™ обсуждал уже существующую функциональность некоего другого сайта бобросферы™, так он мне сказал, что она противоречит его религиозным представлениям о бобросфере™ и в его движке он это запиливать не будет. Вот и вся ваша бобросфера™, единые движки и прочая дичь. Дайте уже сдохнуть спокойно.
>>28013 Это очень старая имиджборда, где большая часть исходного кода от Кусабы ещё. Разметка ± схожа с вакабовской и соответствует по стилю Ичану и Новерю, примерно в ту же эпоху зародившимся бордам. Хотя вакаба-марк не сказать, что совсем уж что-то инопланетное в наши дни. WhatsApp вон для задания курсива и жирного шрифта _ и * использует.
>>28016 Так непривычно думать, что мы - это уже "очень старая имиджборда", а не "совсем молодой имиджборд" >>28015 >Дайте уже сдохнуть спокойно Как бы не вышло так, что интернеты докатятся до того, что сайты где можно общаться без регистрации и смс, и контент быстро ротируется и не индексируется, станут опять живее всех живых
>>28017 > станут опять живее всех живых За счёт чего? До16летние австралийцы, которых в Реддите и Пейсбуке забанили, начнут массово мигрировать на чаны? Хм, а ведь действительно идея, предложить солюшн для мануфакчерд праблм. Солюшн, но не для нас.
О судьбах Интернета вы можете пофлудить в другом месте, а нас полный трекер задач, где конь не валялся: https://codeberg.org/FBE410/fbe-410/issues
Реквестирую возможность прикрѣплять 7-Zip в dev/
>>28020 Можно разрешить только простые текстовые файлы, если кто-то сделает проверку на соответствие формата. Архивы модераторам просматривать проблематично.