[Назад] [Вся нить] [Первые 100 сообщений] [Последние 50 сообщений]
Ответ в нить [Последние 50 сообщений]
Имя
Captcha image [Д]
Animapcha image [@] [?] [Т]
Тема    ( ответ в 1000357)
Сообщение
flower
Предпросмотр
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
114167649_p0.jpg - (1.88MB, 1191×1684)
1000357
No. 1000357  
Замечания и предложения по нему, а также их обсуждение.
Предыдущий тред >>1000000.
171 сообщений пропущено. Показаны 50 последних сообщений
No. 1000604  
138997837_p0.jpg - (1.53MB, 2508×3541)
1000604
Починил предпросмотр. Убрал setLocale, вроде parse.class.php локалеинвариантный.

Починил удаление, кроме bulk deletion. Там было два основных момента.
  • В отличие от 410, стояло if(!isset($_POST['message'])) $_POST['message'] = ''; перед if(CheckValidPost()). Для чего оно было добавлено? CheckValidPost возвращал бы false, будь message unset'нутым, и тогда уже проверялось бы наличие постов на репорт/удаление. Так что я убрал if(!isset внутрь блока if(CheckValidPost()){}.
  • Поскольку типы у нас теперь строгие, попытка escape'ить $this->post_id вызывала ошибку. Убрал из класса Post mysqli_esc() для ->post_id, ->post_parentid и для ответов БД на запросы.
Расширил допустимые символы в бордоимени до [\w]. Hyphen пока включать не стал; проверить, везде ли posts_ оборачивается в backtick'и и решить, что делать если нужна портируемость. ANSI_SQL?

Переписал addboard. Заменил sleep(5) на spinlock с usleep(100000) шагом. Там точно надо ждать и нету ли каких-нибудь менее затратных примитивов синхронизации для create table?

Не применял линтер.

Применить, проверить, протестировать, смёржить в котокафе, и я бы >>1000497 и >>1000500 уже занялся тогда.

Возвращаясь, к возникшей ситуации с if(CheckValidPost()){}, думаю, было бы неплохо разделить board.php на несколько разных endpoint'ов.

А по posts_, если когда-нибудь убирать текстодоски как отдельный тип, то в догонку такой вопрос. Насколько имеет смысл отказаться от архитектуры, где под каждую доску своя таблица, и вместо этого сделать единный posts с composite key по (boardname, post_id)? Кажется, много чего упростило бы ценой, может, нескольких «лишних» полей в таблице под разные типы досок.
No. 1000605  
>>1000604
>проверить, везде ли posts_ оборачивается в backtick'и
В идеале обязан.
>Там точно надо ждать
Да вроде нет? CREATE TABLE блокирует и так.
>Применить, проверить, протестировать, смёржить в котокафе
Скорее всего я не смогу это сделать раньше 12го.
>Насколько имеет смысл отказаться от архитектуры, где под каждую доску своя таблица, и вместо этого сделать единный posts с composite key по (boardname, post_id)?
Основная проблема это правильно дёргать генератор нумерации для каждой доски, но в рамках одной транзакции если всё делать должно работать.
Вторая проблема это что индивидуальные базы меньше по размеру и проще их обходить, но тут не те размеры.
Так как тут один процесс контролирует всё и делать разный доступ к таблицам не получится, проще слить.
>нескольких «лишних» полей в таблице под разные типы досок
Просто вынести их в отдельную таблицу и через JOIN. Особенно файлы хорошо выносятся.
No. 1000606  
Предлагаю все рефлинки на посты, которые ведут в другой тред, не тот, в котором запощен пост с рефлинкой, помечать маленькой стрелочкой справа: https://www.freepik.com/search?format=search&iconType=standard&query=arrow+link&type=icon
No. 1000607  
81927968_p0.jpg - (1.08MB, 1400×1980)
1000607
>>1000606
Думаю, реализовать можно. Но SVG-значком или юникодом? Если SVG, то интересно узнать, откуда были взяты значки, которые сейчас используются. Стоит взять из той же серии, если есть.

BTW, помнится, звучала как-то также просьба сделать, чтобы на +50 и -100 страницах рефлинки, пока возможно, вели на них же, а не на целый тред. Надо? И если ссылка ведёт извне страницы-отрывка на полную страницу треда, тоже добавлять arrow link?

Also, есть ли идеи, как запилить preview поста, на который ведёт ссылка, для мобилок? Сейчас, если long tap'нуть, то срабатывает, но может выйти за пределы экрана и перекрывается браузерным меню.
No. 1000608  
82886663_p0.webp - (636.24KB, 761×1265)
1000608
>>/b/1005489
'%' — это вам не '%'!

Озадачиться ли мне добавлением японских символов в разметку или можно положить дело в долгий ящик?
No. 1000609  
>>1000607
> Но SVG-значком или юникодом?
Проще(?) Юникодом. Только вот этого устоявшегося символа external link там, кажется, нет. Или не находится по arrow / link substring-ам в имени.
И надо ещё стрелочку выбрать! И проверить её на отображаемость в основных ОСях. Или не надо.
Вон Supplemental Arrows-C даже на дизайнерском Маке у кого-то не рендерится. (у меня так же на Шин)
> Если SVG, то интересно узнать, откуда были взяты значки, которые сейчас используются. Стоит взять из той же серии, если есть.
Вспоминается что-то, что их же конвертировали из растра? А брали их откуда-то ведь как бы не до 2010-го года ещё! Но это те которые вверху.
Да и какая в данном случае "серия"? Что его, в красненький красить или жирно рисовать? Хоть это и устоявшийся в некотором роде символ (в уже старом вебе... который умирает/убивают. Сейчас "устаивается" что-то из Android вроде бургера... www.linux.org.ru/forum/talks/17692956), но как-то почему-то подозреваю вообще вряд ли он там будет, даже там, откуда недавно "облачко ответа" взято.

a.extref::after {
    content: "⬏";
    padding-left: 2px;
    font-size: small;
    text-decoration: none;
    display: -webkit-inline-box;
}

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
> Надо?
Мелочёвка, но если не лень.

> пока возможно
Всмысле, если попадает в страницу-отрывок?

> И если ссылка ведёт извне страницы-отрывка на полную страницу треда, тоже добавлять arrow link?
Хорошая идея!
Ссылка на посты с других досок - очевидное исключение для всей фичи.

Также там не рефлинки, а ссылки No и с номером поста — та которая с номером поста выглядит как [...]/d/res/1000357last50.html#i1000552. Зачем? Выглядит как баг ("last").

> Also
Пока phoneпостингом не занимаюсь, ничего не могу сказать. Пофиг. По-моему (и вообще) там в этом важно быстро запомнить как референсируемый пост визуально выглядит, чтобы потом прыгнув на него, сопоставить с этим flash image и успокоиться. А как иначе? Потому как без hover оно быстро исчезает и всё равно ничего не прочитаешь на не одно-двустрочном посте.

>>1000608
Голосую ненужно. Сейчас это простой способ обойти разметку. Смотрю на эту help-страничку как баран на ворота / табличку с линейным письмом A/B =_= С этими "особенностями работы". С lookahead/behind я ещё в регулярках не разобрался, а тут в разметку подвезли! Книжку надо издавать по этому парсеру! /hj
No. 1000610  
https://en.wikipedia.org/wiki/Supplemental_Arrows-C
No. 1000611  
Опубликуйте же, сколько чего и за какие посты проголосовали пока была ДБК-кармомётка включена!
No. 1000612  
Shared worker сошёл с ума. Долбит при user present на вкладке. Если уйти с неё - перестаёт.
Перезагрузка страницы; убийство в chrome://inspect/#workers; перезапуск по новому посещению не помогают пока (попробовал 2-3 раза).
В localStorage оффсеты постов новые - последние.

До этого в таком же состоянии был найден на 410. Но там хотя бы раз в 10 секунд (что всё равно много) (тоже продолжает).
Хотя бы успокаивается при неактивной, и то хорошо.

Но у меня опять outdated browser ╮( ̄▽ ̄"")╭. 2023 build.

Screencast 2026-01-06-0141.mp4 14.7 MB https://files.catbox.moe/w2g6l1.mp4
Screencast 2026-01-06-410.mp4 10.6 MB https://files.catbox.moe/68yiu8.mp4

Посмотрим что будет после отправки поста.
No. 1000613  
То же безобразие продолжается.
No. 1000614  
>>1000606
А может просто (Cross-thread) добавлять как на 4чане?
В любом случае, это не-жсом делать долго.
No. 1000615  
>>1000612
Дополнение: машинка иногда отправляется и возвращается из sleep. После этого прыгает время. Может, это таймеры сбивает... Но как просто догадка.

>>1000614
> А может просто (Cross-thread) добавлять как на 4чане?
Можно и так, понятнее. Тогда в 50-версиях надо предусмотреть другой текст, (full thread)?
> В любом случае, это не-жсом делать долго.
Навесить класс? Ну не знаю, не смотрел. Но тот PHP и так сильно перерабатывается сейчас.
Можно и жсом. Такого не много, так что неким миганием после загрузки можно будет пренебречь.
No. 1000616  
Так что надо будет мне ещё проверить после перезапуска браузера.
No. 1000617  
faptcha.png - (8.20KB, 90×50)
1000617
В ближайшую неделю или две попробую посмотреть, что там не так.

Пока, наверное, вернуть на if(false), чтобы polling шёл во вкладке.
No. 1000618  
>>1000616
Не исправило.
No. 1000619  
>>1000612
Уточнение, убийство-то помогает, да толку то этого нет если оно при каждом визите восстанавливается.
No. 1000620  
>>1000619
Т.е. не помогает как способ "хоть что-то сделать" или "сбросить состояние" какое-то.
No. 1000621  
125014528_p0.webp - (884.79KB, 2039×2894)
1000621
> var max_navbar_check_delay = true
Нашёл. Указать в конфиге количество миллисекунд больше 1000 (16384 by default) и перегенерировать страницы.
No. 1000622  
>>1000621
Это было поправлено вроде в тот же день.

>>1000605
ВНЕЗАПНО хостер приказывает долго жить, так что перенесём ещё на неделю.
No. 1000626  
72301090_p13.jpg - (22.27KB, 394×524)
1000626
>>1000611
Она была включена всего ничего по времени, и, помнится, там только один или два поста получили Д или Б, или К.

>>1000609
> Сейчас это простой способ обойти разметку.
Eeeeh?
> спойлер
Возможно, стоит сделать описание по-русски, а не одними примерами?

Основная суть в чём.

Есть escape-символ, 【~】. Заставляет воспринимать следующий за ним символ, как обычный текст. Может escape'ить сам себя. Обычно всё почти также просто, как когда пишешь string literal в С и используешь там 【\】 для escape'а кавычки или переноса строки.

Но! Распознаётся тильда, как escape-символ, не перед любым символом, а только непосредственно перед допустимым в текущем контексте тэгом разметки.

Поэтому 【~%%】 => 【%%】 (тильда стоит перед открытием/закрытием спойлера), но 【~%~%】 => 【~%~%】: тильды стоят перед одиночным 【%】, который ничему не соответствует. Вместе с тем, 【~*~*】 => 【**】: тильды стоят перед 【*】, которое соответствует открытию/закрытию курсивного текста.

Есть блок, где разметка отключается. Объявляется через 【``】 или 【[nofmt]】.
【`` 2*x**2 + 3*x - 4 ``】 => 【 2*x**2 + 3*x - 4 】. Чтобы для случаев, когда escape'ить пришлось бы много, был более удобный способ. Разметка также отключается и в code блоках. В этих блоках из символов разметки работает только 【~】.

> особенностями работы
По большей части про поведение в крайних случаях.

> С lookahead/behind я ещё в регулярках не разобрался, а тут в разметку подвезли!
Видимо, не очень удачное описание у меня.

> Особенности работы/Код и nofmt
> `*lookahead* до закрытия``
Про то, что backtick после 【я】 распознаётся, как закрытие ранее объявленного блока кода, а не как первый символ 【``】 тэга. Чем отличается от того, как, скажем, обрабатывается звёздочка. 【* text **】 — это не 【 text *】, а 【* text **】, ибо понимается, как wakaba_italics; text; wakaba_bold.

> [nofmt][code] 1234567890 ~[/nofmt][/code]
Также про то, что будет в этой ситуации: 【[nofmt] 1234567890 ~[/nofmt]. По 【[nofmt]】, parser ищет неза-escape'ленный 【[/nofmt]】, не находит, сбрасывает состояние до момента, когда встретил 【[nofmt]】 и продолжает parse'ить со следующего за этим 【[nofmt]】 символа. Встречает 【[code]】, игнорирует всё, что не 【[/code]】 и не тильды непосредственно перед 【[/code]】, находит этот 【[/code]】 и дальше business as usual. Поэтому тильда перед 【[/nofmt]】 хотя и приводит к тому, что объявление nofmt блока оказывается незакрытым, не исчезает — из-за code блока.

> Распознаётся тильда, как escape-символ, не перед любым символом, а только непосредственно перед допустимым в текущем контексте тэгом разметки.
Возвращаясь к. Недопустимо закрытие неоткрытого блока. Недопустимо открытие уже открытого блока. Недопустимый в текущем контексте тэг разметки понимается, как просто текст: 【This text isn't code ~[/code]】 => 【This text isn't code ~[/code]】 — здесь тильда не исчезает потому, что понимается не как escape-символ, а как текст, поскольку стоит перед текстом, не перед активным тэгом.

Also, в контексте URL'ов тильда не является escape-символом и используется для указания конца ссылки.

Можете давать советы по улучшению end user документации. Можете попробовать, основываясь на parse.class.php, markdown.html и изложенном, написать её сами.
No. 1000627  
Оно опять? бампается после бамплимита.
No. 1000628  
Пора поправить подпостформенный на реальное значение!
No. 1000629  
>>1000627
3次/kawaii тред-то? Но там bump limit не достигнут: постов больше 200, но часть из них с сажей. Так что это ⇩-индикатор не прав.
No. 1000630  
>>1000629
Оно так не работает.

>>1000627
Off-by-one. Fixed.
No. 1000631  
Another relocation completed. >>1000622
No. 1000632  
>>1000631
Может наверное слететь проезд врочем.
No. 1000633  
>>1000631
Gut. Будем надеяться, что этот хост будет стабильнее, чем предыдущий.
No. 1000634  
Ryo не принимается без u, хотя она необязательна.
No. 1000654  
sdn.png - (132.26KB, 1278×424)
1000654
На HYR ввели, почему мы всё ещё не имеем? Arghrghghghhhh!

Предлагаю генерировать включение скрипта хотя бы для картинкотредов, вручную добавляя thread id-ы на сервере.
No. 1000655  
>>1000630
И оно снова бампнулось 201-м ответом.
No. 1000656  
>>1000655
I don't see anything.
No. 1000657  
>>1000656
>>1000653 >>1000654 ну вот такие чудеса. Опять что-нибудь про считается ли ОП-пост за пост входящий в лимит?
No. 1000658  
>>1000657
Нет, Оп-пост не является бампом.
No. 1000659  
139845444_p0.webp - (828.11KB, 2068×2754)
1000659
Возможно, имеет смысл поставить между "Message" и "Preview" один <br> — чтобы столбец с заголовками по получению предпросмотра не растягивался.
No. 1000660  
>>1000604
Применено, тестируется.

>>1000611
Под конец всего мероприятия у меня записано только два кота на >>1000445. Всего кликалось на больше постов, но вполне вероятно то были тесты и потом я голоса снял. Или пользователь передумал.

>>1000659
Попробуем.
No. 1000661  
>>1000660
Применено на здесь. Обращайтесь если что сломалось.
No. 1000665  
Баны, удаления и дубликаты изображений мне протестировать не доводилось, спасибо.
No. 1000666  
>>1000661
Но вообще, занятно что в локальном тестировании recursive_node_format не выдавала ни DOMText (что я углядеть был должен), ни DomElement (откуда оно вообще), что вообще неожиданно. И в качестве входных данных тоже не шло.

Надо в тестовый набор тяжёлую разметку включить.
No. 1000667  
142029290_p0.jpg - (425.54KB, 498×800)
1000667
>>1000661
Good job.

>>1000665
Помню, что у меня удаление (после правок) работало. Странно.

Вижу, язык в форме отправки поменялся на английский. Что-то не так с gettext?
No. 1000668  
>>1000667
>Что-то не так с gettext?
Кажется поменялась семантика аргументов _bindtextdomain. Поправлено.
No. 1000669  
>>1000667
>что у меня удаление (после правок) работало.
А, удаление собственных постов тоже, тут скорее в мод-удалении.
No. 1000670  
96180274_p0.webp - (5.38MB, 2532×3219)
1000670
Наверное, дальше пойти таким путём?

Реформа БД и config.php: создание редактора конфига, вынос posts_* в единную таблицу с PRIMARY KEY (board_name, post_id) и UNIQUE INDEX (board_name, parent_id, post_id) или наоборот (?), запись части нужных для kusaba.js параметров в отдельный JSON, а не в каждый HTML;

Написать проверку соответствия файла расширению на сервере и на клиенте. Сделать, чтобы ориентация уменьшенных копий учитывала EXIF. Может, улучшить качество генерируемых thumbnail'ов.

Сделать progress bar или иного рода отображение полноты отправки поста. Сделать, либо чтобы для preview не отправлялась картинка, либо чтобы показывало то, как пост будет выглядеть по итогу вместе с картинкой.
No. 1000671  
>>1000670
>вынос posts_* в единную таблицу с PRIMARY KEY
Судя по части комментариев, когда-то в Кусабе так и было, а затем автор решил разделить.
>Сделать progress bar или иного рода отображение полноты отправки поста.
Не совсем представляю как это возможно, это ж совсем низкоуровень тцп-соединения?
No. 1000673  
XmlHttpRequestUpload.webp - (56.14KB, 875×1095)
1000673
>>1000671
Возможно через callback у XHRUpload. fetch вроде в такое не умеет.
No. 1000674  
>>/b/1006144
> 014chan.org/b/res/0.html#1006111
Добавить $thread_id  = ! $thread_id ? $post_id : $thread_id; к 538'ой строке в handle_post_link в parse.class.php.
No. 1000675  
1605690491452.jpg - (16.21KB, 398×500)
1000675
>>1000674
No. 1000677  
> Написать проверку соответствия файла расширению на сервере и на клиенте.
Было бы крайне любо сделать логику этого удобной Ычановской, то есть, можно запостить всё, что можно запостить (по типу файла), а расширение приклеивать правильное сервером уже потом, если нужно, вместо того, чтобы заставлять ошибкою юзера лезть переименовывать что-то, повышая тем его раздражённость.
No. 1000678  
>>1000677
Правильно, зачем вообще все эти расширения? Юзеру они не нужны! Сервер тоже пусть пишет что в картинке пнг, а отдаёт вебп.
/сарказм
No. 1000679  
> Сервер тоже пусть пишет что в картинке пнг, а отдаёт вебп.
Это уже реальность... Если в FF, наверно, ещё можно отредактировать свой Accept-Encoding, то в Хромиумах нет.
No. 1000680  
Пруф >>1000679 даже: https://static.wikia.nocookie.net/denpaonna/images/b/b2/Erio_Touwa_3.jpg
Удалить сообщение []
Пароль  
[Mod]