[Назад] [Вся нить] [Последние 50 сообщений]
Ответ в нить [Последние 50 сообщений]
Имя
Captcha image [Д]
Animapcha image [@] [?] [Т]
Тема    ( ответ в 1000357)
Сообщение
flower
Message Preview
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов GIF, JPG, PNG, WEBP размером до 20480 кБ.
  • Ныне 49 уникальных клиентов. Посмотреть каталог
  • Предельное количество бампов нити: 200
114167649_p0.jpg - (1.88MB, 1191×1684)
1000357
No. 1000357  
Замечания и предложения по нему, а также их обсуждение.
Предыдущий тред >>1000000.
41 сообщений пропущено. Показаны 50 последних сообщений
No. 1000428  
>>1000418>>1000425
Done.
No. 1000429  
125519984_p0.jpg - (1.51MB, 1378×2039)
1000429
>>1000428
Gut.

>>1000427
> Было бы ещё неплохо для модерки какой экран просмотра анимапчи
Список, где слева картинка, справа — имена, и можно редактировать?

> При желании можно костыль-версию добавить и включать или одно или другое по каким настройкам...
Есть версия, которая не использует SharedWorker, поскольку тот не реализован в мобильном Хроме. Можно if(!!window.SharedWorker) поменять на if(false) и посмотреть, в нём ли дело.
No. 1000430  
>>1000429
И кнопочку аплоада/разрешения для какой доски.
Или два разных экрана, один для алиасов, один для доскопринадлежности.
Так можно избавиться от текстофайлов и их в БД держать.
>Можно if(!!window.SharedWorker) поменять на if(false) и посмотреть, в нём ли дело.
А я пожалуй так и сделаю.
No. 1000433  
&nbs.webp - (119.03KB, 423×637)
1000433

> $catalog_page .= '<span class="catalogmsg">' . closeOpenTags(mb_substr(strip_tags(stripslashes($line['message'])), 0, 40)) .'</span><br />';
> closeOpenTags(mb_substr(strip_tags(stripslashes($line['message'])), 0, 40))
С учётом HTML Entities, получать catalogmsg можно вот так, наверное.
function get_catalog_msg($msg, $max_catalog_msg_length){
    $catalog_msg = '';
    $msg_id = 0;
    $catalog_msg_len = 0;
    $brs = ['<br>' => 1, '<br/>' => 1, '<br />' => 1];
    while($msg_id < strlen($msg) && $catalog_msg_len  < $max_catalog_msg_length){
        $c = $msg[$msg_id];
        if($c === '<'){
            $html_tag_term_id = strpos($msg, '>', $msg_id);
            if($html_tag_term_id === false)
                break;
            if($html_tag_term_id - $msg_id + 1 <= strlen("<br />")){
                $maybe_br = substr($msg, $msg_id, $html_tag_term_id - $msg_id + 1);
                if(array_key_exists($maybe_br, $brs)){
                    $catalog_msg .= ' ';
                    $catalog_msg++;
                }
            }
            $msg_id = $html_tag_term_id + 1;
        }
        else if($c === '&'){
            $html_entity_term_id = strpos($msg, ';', $msg_id);
            if($html_entity_term_id === false)
                break;
            $html_entity = substr($msg, $msg_id, $html_entity_term_id - $msg_id + 1);
            $decoded = html_entity_decode($html_entity, ENT_QUOTES | ENT_HTML5);
            if($html_entity != $decoded){
                $catalog_msg .= $html_entity;
                $catalog_msg_len++;
            }
            $msg_id = $html_entity_term_id + 1;
        }
        else{
            $o = ord($c);
            // we're at the start of some UTF-8 symbol
            if($o > 0xDF)
                $bytes = $o > 0xEF ? 4 : 3;
            else
                $bytes = $o > 0x7F ? 2 : 1;
            $catalog_msg .= substr($msg, $msg_id, $bytes);
            $catalog_msg_len += 1;
            $msg_id += $bytes;
        }
    }
    return $catalog_msg;
}
No. 1000434  
Ох, вау.webp - (186.67KB, 2377×664)
1000434
キタ━━━(゚∀゚)━━━!!
No. 1000435  
1434667218460.jpg - (114.96KB, 769×478)
1000435
>>1000434
Ахаха ох вау.
No. 1000436  
>>1000435
> $to_append = strtr($to_append, [" " => "&nbsp", "\t" => "&nbsp;&nbsp;&nbsp;&nbsp;"]);
Забыл ; добавить.
No. 1000437  
>>1000436
Поправлено.

>>1000433
Хммм.
Вообще, было бы неплохо это через formatLongMessage сделать что уже делает примерно то же самое. И парсер хтмл заново писать не надо, потому что он либу использует.
No. 1000438  
>>1000437
Теперь там просто DomDocument->loadHTML->getNode->textContent, и всё в mb_substr.
Алсо, оказывается всё время с ввода нового formatLongMessage оно выводило лишние <!DOCTYPE><html><body></body></html>, лол.

>>1000430
Так и сделано. >>1000402 прожмите F5 и проверьте, пожалуйста.
No. 1000439  
127600446_p0.webp - (1.02MB, 4093×2894)
1000439
>>1000437
Стоит, думаю, и посты поправить.
update posts_b set message=regexp_replace(message, '&nbsp(?!;)', '\\1&nbsp;') where postedat > unix_timestamp('2025-02-17 08:23:40') and postedat < unix_timestamp('2025-03-04 08:47:55');
update posts_d set message=regexp_replace(message, '&nbsp(?!;)', '\\1&nbsp;') where postedat > unix_timestamp('2025-02-17 08:23:40') and postedat < unix_timestamp('2025-03-04 08:47:55');


>>1000438
> Теперь там просто DomDocument->loadHTML->getNode->textContent, и всё в mb_substr.
В formatLongMessage или вместо closeOpenTags(...)?
No. 1000440  
>>1000439
Не особо любо менять посты, но так как это был баг, то ладно.
И да, в closeOpenTags. То есть там теперь не мешанина из striptags()stripslashes()closeopentags() а просто берётся текстовая часть хтмл и обрезается до 40 символов.
No. 1000445  
Спустя долгие месяцы разработки, анонимная кармочка наконец-то запилена! Теперь вы можете проголосовать, насколько каждый пост "девочка", "булочка" или "кот" и накрутить этот рейтинг, передёргивая роутер! Кто знает, может самые популярные посты за месяц получат настоящую булочку??
No. 1000446  
Screenshot.jpg - (494.73KB, 1080×1532)
1000446
>>1000445
Жалко, что основного пропонента идеи нет.

На телефоне несколько за-missalign'уто выглядят новые кнопки по вертикли по отношению ко кнопке быстрого ответа. Нету padding-а меж кнопкой быстрого ответа и девочкой, можно промахнуться. Также, custom_tags, может быть, стоит переносить целиком на следущую строку, если не влазит. Или, по крайней мере, сделать, чтобы иконка и соответствующее ей значение переносились вместе.

Девочка, булочка и кот в качестве счётчиков — удачное решение. А вот с SVGшками сложнее. Кот получился довольно удачно. Или сравнительно удачно. Девочка скорее похожа на кролика. Рот крестиком, будто зашитый. Булочка не Sternsemmel. Круассан?

Сложно SVGшки делать. Пытался вот для тонущего треда сделать иконку с кораблём, но хорошо не получается.

В /b/ при переходе на каталог кидает сообщение про JSON parsing error.
No. 1000447  
float:right.webp - (280.68KB, 2551×830)
1000447
>>1000446
> Нету padding-а меж кнопкой быстрого ответа и девочкой, можно промахнуться.
Вроде, достаточно поставить пробел перед custom_tags span-ом, но в ОП-постах он уже есть.

Думал вот ещё, может сделать float: right для того span'а, но всё-таки при разномастной ширине постов лучше выглядит так, как есть.
No. 1000448  
>>1000446
Ну, может ещё заглянет, пока будет висеть.
По css сложно~. Но перенос запретить емнип можно. Пробел в ОП-посте из-за того что там и других кнопок добавлено порядком. Попробовал ещё один для всех.
>Булочка не Sternsemmel. Круассан?
Да. Может попытаюсь переделать.
>Пытался вот для тонущего треда сделать иконку с кораблём, но хорошо не получается.
Там обычно просто якорь.

Будет убрано к выходным, версия в виде юзеркрипта скорее всего попозже.
No. 1000456  
>>1000417
УРЛ в УРЛе сломан немного: >>>/b/1004405
No. 1000457  
127685356_p0.webp - (6.07MB, 1803×2240)
1000457
>>1000456
> УРЛ в УРЛе сломан немного
Из url_end_regex убрать '|' . 'https?:\/\/'
> >>>/b/1004405
В tokenizer_regex сделать '|' . '>>(?=[\/0-9])' вместо '|' . '>>'

По идее, должно заработать.
No. 1000458  
sp.png - (634.53KB, 1905×2946)
1000458
Попытался слепить тут с кавалерийского наскоку, лол. По-моему смотрится только gold версия.
No. 1000459  
sp-krm.png - (225.41KB, 1900×926)
1000459
И ещё вариант.
No. 1000460  
>>1000458
Можно попробовать ротацию сделать.

>>1000459
Лапы UGR, конечно, далеко тянутся...
No. 1000461  
faptcha.png - (7.79KB, 90×50)
1000461
>>1000458
Красненькое-то где.
No. 1000462  
>>1000460
Выбрать надо!
>UGR
Universidad de Granada? Unified Girls Registry?

>>1000461
Красненькое не нужно. Обновленные цвета отражают приверженность бренда нашей имиджборды целям построения лучших коммуникативных стратегий со своей аудиторией.
No. 1000463  
>>1000462
У нас линк на пост и кнопка ответа и пиктограмки в углу всё красненькое.
No. 1000464  
>>1000463
А gold фона и фона постов больше по площади!
No. 1000465  
121870231_p0.jpg - (2.67MB, 2224×1668)
1000465
>>1000461
Действительно, не по-умночански, выбивается.

Но так ли это плохо? Если сделать ротацию (случайный выбор при генерации HTML), то будет смотреться хорошо, наверное. Лучше, чем если целый ряд заглушек одной картинкой представлен. Хотя вариант в цветах Умночана я бы всё же добавил. И, наверное, все заглушки кириллицей лучше подписывать.
No. 1000466  
>>/b/1004436 скобку съело.
No. 1000467  
>>1000466
В оригинале было, что можно для ссылок типа Викепедийных …Сервал_(Персонаж) скобки, но я скобки разрешил, как часть URL в целом: чтобы получить (https://pixiv.net) нужно набрать (https://pixiv.net~).

Если продолжат спотыкаться об это изменение, сделаю «умную» систему терминации URL по скобке.

Но можете и сами сделать. Код с регулярками в архиве по >>1000417.
No. 1000469  
Смотрю, а это в faq/markdown упомянуто. Ну ладно, раз уж документировано, то my fault.
No. 1000470  
zip.png - (195.87KB, 256×256)
1000470
Докрасил таки.
No. 1000471  
Против добавления всех сразу ничего не имею.
No. 1000472  
naniiii.png - (8.64KB, 90×50)
1000472

>014.cdn.ganbaranai.moe
No. 1000474  
faptcha.png - (7.93KB, 90×50)
1000474
>>1000472
годы-то_30-ые.рика_нипа.jpg
No. 1000476  
116395127_p0.jpg - (1.63MB, 3357×2333)
1000476
Есть тут вот у меня желание запилить-таки ротацию спойлеров (по MD5 файла, наверное) и после, может быть, отдельное поле в БД для сажи — с Соусным значком или иначе, но у меня пропала локальная копия с изменениями.

В связи с чем прошу опубликовать текущую версию движка. Но может, стоит прежде смёржить текущие изменения с 410, что, правда, не без лишней мороки будет: счётчик символов Соус в репу так и не закоммитил, например.

Единственно что, шрифт с засечками, может быть, оставить стоит. Ну и на счёт красной кнопки отправки я не совсем уверен. Хотя вот с учётом наличия кнопки предпросмотра, может, в цветовой диференциации будет смысл. Может быть, текст кнопок этих в будущем на значки заменить? Предпросмотр на моей мобилке на вторую строчку перелезает. С другой стороны, оно и без той кнопки перелезает: (новая на одной строчке, а нить) на другой, а с той кнопкой хотя бы словосочетание не разрывается: на телефоне, может стоит обе кнопки на новую строку тогда?
No. 1000477  
>>1000476
>>1000476
Красная кнопка имхо вырвиглазна. Но другое смержить стоит.
>по MD5 файла, наверное
Да можно и по рандому после таймстампа.
Я просто не очень представляю как сделать это не ломая текущий функционал. Лезть в дебри CSS3 и через image(attr())?
No. 1000479  
124071812_p0.jpg - (0.96MB, 2925×1734)
1000479
>>1000477
> Я просто не очень представляю как сделать это не ломая текущий функционал
А там что-то серьёзно ломается? Я когда в июне пытался приступить к делу, там такое обстоятельство было, что картинка для спойлера задаётся через ::after, который придётся сделать настоящим отдельным элементом.

В остальном не помню, чтобы там какие-то ещё проблемы были. А чуть-чуть JS и стили поредактировать, чтоб заработало, — это не страшно, наверное.
No. 1000480  
>>1000479
Не хотеть ЖС, хотеть чтобы изкоробки работало.
No. 1000481  
128169523_p0.webp - (1.85MB, 2400×1350)
1000481
>>1000480
Моя тоже хотеть и будет делать, но раз было сказано, что функционал ломается, я предположил, что, может, изменения DOMа что-то в kusaba.js поломали бы. Как там оно на самом деле — посмотрим.
No. 1000482  
>>1000430
>>1000402
Прошло полгода, никаких известий о том течёт или больше не течёт. Возвращено назад.
No. 1000483  
>>1000476
Изменения синхронизированы и выборочно импортированы.
No. 1000484  
95726020_p0.jpg - (1.05MB, 1500×2000)
1000484
>>1000483
Спасибо. Может, к воскресенью что-то уже готово будет.
No. 1000486  
113701174_p0.webp - (650.87KB, 1920×1920)
1000486
>>1000477
Сделал через '<img class="spoiler-holder" src="' . TimestampToSpoiler() . '"></img>'. Патч в архиве. Варианты добавлять в директорию css/spoilers. По изменению вариантов, перегенерировать страницы.

> image(attr())
MDN говорит, что url(attr()) нельзя.
https://developer.mozilla.org/en-US/docs/Web/CSS/attr#limitations_and_security

Можно было бы, наверное, выкрутиться через background-image: if(mod(attr(), --spoiler_count), ..., ...) но писать-тестировать толпу вложенных if-ов мне лениво: насколько я понимаю, array'ев, switch'ев и map'ов в CSS нет. Как и нет substr, так что всё равно board-post.class.php менять пришлось бы.

Чтобы только через CSS, можно выкрутиться через селекторы.

.catalogpic.spoiler-image:has(:is(img[src*="0s."],img[src*="1s."]))::after,
.spoiler-image.imglink:is(a[data-full-src*="0."],a[data-full-src*="1."])::after {
  background-image: url('/css/spoilers/spoiler-koromo.png');
}

.catalogpic.spoiler-image:has(:is(img[src*="2s."],img[src*="3s."]))::after,
.spoiler-image.imglink:is(a[data-full-src*="2."],a[data-full-src*="3."])::after {
  background-image: url('/css/spoilers/sp-test-gold-cyr.png');
}
…и так далее.

С одной стороны, централизованно всё и в случае добавления/удаления спойлеров не нужно тратить время на регенерацию всех HTML досок и тредов. С другой, не знаю, скажем, 11 разных спойлеров и 100 таких правил… Convoluted это несколько. Хотя если helper скрипт сделать, который такой spoilers.css по содержимому директории spoilers автоматически генерит, наверное, не страшно. Если CSS-only вариант нравится больше, думаю, стоит при генерации HTML добавлять отдельный attribute с timestamp'ом: поддержке :has вроде всего два года как.
No. 1000487  
131859708_p0.jpg - (3.68MB, 2894×4912)
1000487
>>/b/1004675
Думаю, стоит повесить баннер.
No. 1000488  
>>1000486
>>1000487
Обновлено, спасибо.
>MDN говорит, что url(attr()) нельзя.
Да, тогда ттолько оверлеем через css.

>TimestampToSpoiler()
Я попробую сделать что-нибудь поинтереснее, чтобы картинки не менялись от количества спойлеров. Да, базу править конечно, но щито поделать.
No. 1000489  
134900490_p0.jpg - (1.86MB, 1588×2200)
1000489
>>1000488
> Да, базу править конечно, но щито поделать.
Ну, можно отсортировать файлы-заглушки по дате-времени их создания в ФС, и выбирать по модулю только из тех заглушек, которые созданы не позже прикрепляемой картинки. Но лучше, наверное, всё-таки отдельную таблицу для этого, сделав timestamp заглушки unique. А можно никаких миграций не делать и выкрутиться, как с баннерами: заведя отдельную закртыдоску под них, скажем, spoilers. Хотя вот для баннеров Соус призывает отказаться от такого подхода.

Альтернативно, можно позволить заглушкам для старых картинок обновляться и воспользоваться consistent hashing, тогда от добавления одной новой заглушки к N имеющимся вероятность того, что заглушка у картинки поменяется будет circa 1/N. Но это при условии, что порядок файлов в выдаче scandir() от добавления не поменялся.

Скажем, https://arxiv.org/pdf/1406.2294
int32_t JumpConsistentHash(uint64_t key, int32_t num_buckets) {
    int64_t b = 1, j = 0;
    while (j < num_buckets) {
        b = j;
        key = key * 2862933555777941757ULL + 1;
        j = (b + 1) * (double(1LL << 31) / double((key >> 33) + 1));
    }
    return b;
}
O(ln num_buckets) в среднем.
No. 1000491  
tilda_enchanced.webp - (150.47KB, 1722×1108)
1000491
>>/b/1004760
> За-escape'ить тильдой объявление списка в данном случае нельзя. Точнее, нельзя за-escape'ить только его: вместе с ним за-escape'ится и конец цитаты. Всё-таки стоило разделить "\r\n- " и иже на два mark'а. Позволило бы более интуитивно-потятно escape'ить списки заодно, хотя, возможно, и усложнило бы код
Внезапно, всё оказалось достаточно просто. Даже проще, чем было. Теперь можно escape-ить окончание (пункта) списка и его объявление отдельно. Что позволяет escape-ить список тильдой на той же строке.
>>1000411
…И что, судя по всему, без особой возни и без ввода новых элементов разметки позволяет запилить вложенные списки. Надо или нет?

>>1000457
Починено.

>>/b/1004763
Парсер теперь понимает и одиночные CR и LF. Надо проверить, решит ли проблему.

Патч в архиве.
No. 1000492  
106617286_p0.jpg - (288.90KB, 1496×2584)
1000492
BTW, стоит ли вернуть GetCWebpath в inc/func/paths.php? У нас, скорее всего, из-за этого https://014chan.org/news.php ошибку 500 сейчас возвращает. Кажется, меня с manage.php тоже возникла какая-то похожая проблема, но я уже не помню точно.
No. 1000493  
>>1000492
Не стоит, проще убрать остатки использования что были пропущены в прошлый раз.
No. 1000494  
This is a test.
No. 1000495  
>>1000494
Я импортировал >>1000491 но не предложенные изменения на 410.
No. 1000496  
>>1000494
Должно быть починено.
Удалить сообщение []
Пароль  
[Mod]