/b/ :: Бред Доска обо всем и ни о чем
Ответить в тред 0x000005
Капча
Правила доски
  • Запрещены: спам, вайпы, шок-контент, порнография.
  • Изображения: до 4 штук, типов JPEG, PNG, GIF, максимальный размер - 1 Мб.
0x000005
Millhiore.Firianno.Biscotti.full.826889.jpg

Чтож ты груду скриптов мне загрузил, а валидацию формы-то не доделал?

Шум с капчи убирается банальным усреднением, дальше там well-defined текст.

Как понять, куда я сейчас отвечаю?

chat_bubble_outline Постов: 82 arrow_upward Лимит: 128
0x000006
Millhiore.Firianno.Biscotti.full.516648.jpg

Надо же, не угадала.

А чего у тебя новый тред не бампается?

0x000007
4666652817_56e7ab2eb0_b.jpg
>>0x000005
>Чтож ты груду скриптов мне загрузил, а валидацию формы-то не доделал?

Пока сделал по простому - то что можно средствами браузера.

>Шум с капчи убирается банальным усреднением, дальше там well-defined текст.

C капчей надо думать, в треде на 410 спрашивал - никто ничего не подсказал.

>Как понять, куда я сейчас отвечаю?

Здесь не понял.

0x000008
226571.jpg
>0x000006

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

0x00000b
1215729888786.jpg

Проверка бампов.

0x00000c
4666664971_4d9a69287a_b.jpg

Эх, не работают бампы ;__;

0x00000f
31795-suzumiya-haruhi-no-yuuutsu-kyon-nagato-yuki.b4f9f68ec4b44eec26684e26b7949085.jpg

Бампы починены же.

0x000010
014 - 516x722@32 [SIG99ef75cf9b35a2da28f56c8923ad82e1c803b4baf8e4501be5a10ca8e972518e].jpg

В гуглогруппах ник в твоих сообщениях заменяется на «Я». Вот сидишь потом и думаешь, кто же такой этот «Я». Более важно, что на форумах без регистрации ОП треда оседлав бругой браузер моментально перестаёт быть ОП-ом. Ладно.

Как удалять свои персональные посты и жаловаться на чужие персональные посты?

Где разметка "код"?

Где красивое REST API?

>>0x000007
>Пока сделал по простому - то что можно средствами браузера.

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

>C капчей надо думать, в треде на 410 спрашивал - никто ничего не подсказал.

А чем имеющиеся решения не устроили? Вакаба, кусаба у Уцухи был хороший генератор; на сайтах со всякими движками на PHP от гостевух, форумов и вики можно много генераторов найти. Смысл, в общем-то, в том, чтобы картинку нельзя было разрезать на буквы и сравнивать их с заранее сгенерёнными образцами. Можно просто подобрать рукописный каллиграфический шрифт или какой-нибудь “Administrator Password” и поиздеваться над ним.

>Здесь не понял.

Люди всегда читают надписи на кнопке “Submit”, да; особенно, когда она одна by design; особенно, когда она в подвале формы. Больше формы ничем не отличаются.

>>0x000008

Это нигде не показано. Каждый новый юзер будет считать своим долгом сообщить тебе о баге.

>>0x00000c

В доменном объекте Thread должно быть поле lastPostCreationDate, тогда сортировать по нему и брать последние n штук.

0x000012
>>0x000010

Парсер сожрал пустые строки. Хотя бы одну мог бы и оставить.

Ну и давать ссылку на тред с якорем на ОП-пост довольно дурная идея — браузер такие ссылки может вообще не обновлять.

0x000015
ANIME-PICTURES.NET_-_238068-1000x750-touhou-hakurei+reimu-nonbe-long+hair-blush-light+erotic.jpg
>>0x000010
>В гуглогруппах ник в твоих сообщениях заменяется на «Я»

Здесь возле id появляется значок у твоих сообщений и тредов в каталоге. Без регистрации, очевидно, это может быть привязано только к браузеру.

>Как удалять свои персональные посты и жаловаться на чужие персональные посты?
>Где разметка "код"?
>Где красивое REST API?

Никак, никак, пока нет и последнее будет нескоро, зачем API без клиента. Остальное появится раньше.

>Сообщение на пустоту тоже можно средствами браузера проверять, ты же только одно поле капчи проверяешь.

Тут случай сложнее. Сообщение может быть пустым, если есть хотя бы картинки.

>Люди всегда читают надписи на кнопке “Submit”...

На остальных бордах из отличий - максимум это заголовок формы. Это лучше?

>Каждый новый юзер будет считать своим долгом сообщить тебе о баге.

Вчера вечером исправил, работает.

0x000016
>>0x000012

Нет, пустые строки будут удаляться, перевод строки создает параграф, это by design. Иначе найдутся умники, делающие километровые вертикальные сообщения - хотя есть защита в виде скролла, но все равно.

0x000019
[SIG794cde424ed9adea9829d4888ddee0eb4fd2eba3f8e33935d0ace46d866c94e6].png
>>0x000015

Я и говорю — ценность этой фичи довольно сомнительна.

>Никак

Это же просто сделать: определяешь в domain.Post поле String password, "" делаешь значением не принадлежащим ни одному пользователю.

>никак

Это сложнее. Потребуется введение дополнительной сущности domain.issue.Report, и соответственно отдельные форма отправки и представление в соответствии с правами модератора.

>пока нет

Самое смешное, что я видел, — это парсер какой-то гостевухи: вырезаем preg_replace-ом все куски кода, сторим их в массиве, на их места ставим что-то вида %CODE_BLOCK_{index_in_array}%, накатываем остальные правила регулярками, восстанавливаем код. Какая такая теория формальных языков, работает жи, ёпту! Шаблонизатор там был самопальный в том же духе, через preg_replace.

>последнее будет нескоро, зачем API без клиента.

А браузер тебе не клиент что ли? Content negotiation никто не отменял, бэку всё-равно, что отдавать, HTML или XML, он оперирует объектами в области решаемой бизнес-задачи. Service oriented application для борды — это оверкилл, она по природе resource oriented, тут клиентов интересует лишь состояние ресурса.

>Тут случай сложнее. Сообщение может быть пустым, если есть хотя бы картинки.

Поля с файлами уже никак не проверить?

>На остальных бордах из отличий - максимум это заголовок формы. Это лучше?

Определённо.

>>0x000016

Одну

пустую

строку

надо

оставить.

>Иначе найдутся умники, делающие километровые вертикальные сообщения

Так

можно

договориться

до

того

,

что

вообще

«

пишут

тут

всякие

»

.

0x00001a
306572.jpg
>>0x000019

Все будет. Терпение, друг мой. Если не все, то многое. У меня сейчас есть желание, а скоро будет и больше времени допиливать проект. Хоть в Трелло и огромный список задач, но они все выполнимые. Эх, если бы я мог на работу не ходить пару месяцев...

>Самое смешное, что я видел, — это парсер какой-то гостевухи...

Будешь еще больше смяться - логику разметки и большую часть регулярок я портировал на Python из перловой Вакабы. Там все на регулярках.

>Поля с файлами уже никак не проверить?

Содержимое input[type=file] можно только JS-ом проверить, просто в теге свойства прописать не получится, как с простыми полями.

>>На остальных бордах из отличий - максимум это заголовок формы. Это лучше?
>Определённо.

Ок, это несложно.

Про API так и не понял тебя. Раньше я хотел сделать backend с api и современный frontend на react.js, но это в разы геморнее. Пока будет классический сайт. Дальше видно будет.

Про пустую строку подумаю, пока не очень убежден.

0x00001f
Clipboard01.png

https://stackoverflow.com/a/3955238

Если уж ты решил работать с деревом, то работай с деревом. Тем более, что это быстрее.

Ну и надо лесенку из попупов сделать.

.

.

.

Ненавижу тебя... будто других дел нет.

0x000022
невыносимая-чёткость-бытия-киберпанк-будущее-уже-здесь.jpg

https://pastebin.com/cWD23X8b— чёткости срабатывания нет. Ну и на маленьких ссылках оно лагает почему-то.

0x000023
[SIG01c725025e61df9572191a6dd565618cb4cc52475014cef3d8e2190f80f0329f].png
>>0x000022

https://pastebin.com/x8EgZ04x

Вроде сделал. Дальше только временной фильтр событий. Проблема в том, что браузер события, при их высокой частоте появления, начинает отбрасывать, поэтому просто ловить события на конкретных элементах не получится.

0x000024
ANIME-PICTURES.NET_-_328394-1100x777-touhou-hakurei+reimu-kamiljm-long+hair-single-looking+at+viewer.jpg
>>0x00001f
>>0x000022
>>0x000023

Спасибо большое, вечером посмотрю, сегодня на работе не получится отвлекаться ;_;

0x000025
>>0x000023

https://pastebin.com/qQ2ZDFBC— больше идей нет. Вроде ничего не лагает и не глючит. Работает на 12-й Опере, должно работать на всех браузерах новее её я так думаю. Ну и я не знаю, как в JS делать constructor dependency injection. Если знаешь, сьинжекть таймер.

0x000026
015 - 760x1200@32 [SIG0ec7ec2a3f1719d3e7e5b5ab6d4920a3aa3830a17a471b6c810fd613413cfd3].png
>>0x00001a

Главное — не забить в начале пути.

>Там все на регулярках.

Ну, у Perl-а это киллер-фичей было — встроенный re-движок. Сначала он был даже Тьюринг-полным, потом, правда, эту фичу порезали. Проблемы будут:

— со вложенностью операторов;

— с многобайтовыми кодировками (вызов Залго);

— с XML-подобными кодами разметки;

— всякими тупыми недочётами, вроде неучтённых пробелов и переводов строки;

— в связи со всем вышеперечисленным, полная негибкость.

>Содержимое input[type=file] можно только JS-ом проверить, просто в теге свойства прописать не получится, как с простыми полями.

Ты сам себе противоречишь: у тебя загрузка более чем одного изображения делается скриптом, и одновременно валидацию формы скриптом делать почему-то нельзя. Ну и капча у тебя показывается тоже скриптом. Если уж делаешь в духе Крейга, который WebFlow App сделал для браузеров без поддержки Cookies и JS, то дожно быть четыре поля «Изображение 1», «Изображение 2», «Изображение ...».

>Про API так и не понял тебя.

Нигде не сказано, что RESTfull Web App не может отдавать HTML браузеру, чего не понятно-то? Ему вообще всё-равно, как ресурс представлять, можно этот тред в Exel-таблицу засунуть, если клиент в Accept такой тип данных указал. Вы же начинаете какой-то SOAP over JSON городить, вам зачем-то React для REST сразу нужен.

>Про пустую строку подумаю, пока не очень убежден.

Легче читать текст, разбитый на абзацы. Абзацы разделяются либо красной строкой, либо пустой строкой.

0x000028
0x00000015.png 0x00000027.png

Внес кое-какие изменения в генерацию превьюшек, посмотрим, будут ли теперь твои картинки нормально отображаться.

0x000029
009077.0.jpg
>>0x000028

Иии проблема решена!

>>0x000026
>Ты сам себе противоречишь: у тебя загрузка более чем одного изображения делается скриптом

Неправда, это делается средствами HTML5. У тега input[type=file] появился атрибут multiple, с ним можно выбрать несколько файлов. Клиентская валидация формы наверно нужна, но пока ее нет.

Пользуясь моментом: спасибо, что помогаешь. Серьезно.

0x00002a
Clipboard01.png

А мог бы и во все капчи данные заливать... ну или хотя бы объект сделать нормальный, а то толку-то от того, что он в глобал-скопе, если данные из него вытащить нельзя.

И зачем тебе методы, вроде addListener и querySelector, если ты реактом пользуешься?

>>0x000029

Вот так вот: единственный человек, который заметил, что я восьмибитные PNG пощу, заметил это потому, что пилит свой движок. Ну и проверять такие вещи надо на тексте. И ещё: у тебя зачем-то в input[type=file] стоит свойство accept; приводит это к тому, что по умолчанию выбирается самый первый тип — image/jpeg — и надо каждый раз руками указывать любой.

0x00002c
Clipboard01.png
>>0x00002a

Вот и началось писание костылей... С другой стороны, единственное годное решение — это порождать свой эвент и слушателями делать каждую форму.

Ладно. Надо придумать, как эту форму к попапам прикрутить.

>реактом пользуешься?

jQuery же, лол. Глаз замылился.

0x000034

Тебе на гитхаб теперь реквестить или как?

>>0x00002c

X-CSRFToken не устанавливается в куках. Я не смог найти, откуда он берётся. Оно надоело долбиться в сеть и гадить в консоль.

Запилил в целом то, чего не хватало — привязки лесенки к форме быстрого ответа: надоело, что она пропадает при любом неосторожном движении; особенные страдания с этим были на планшете.

Зато теперь есть, что сказать. Говорили же, что внутренняя нумерация — это крайне плохо? Так вот: на доске попапы ты подгружаешь по необходимости, однако поскольку нумерация у постов и тредов внутренняя, а загрузка происходит посредством внешней, нет никакого способа определить, к какому треду и к какой доске относится полученный пост.

>единственное годное решение — это порождать свой эвент и слушателями делать каждую форму

Да, оно, PropertyChange. Сделать ro-класс Captcha с полями для всех необходимых нод, сделать класс CaptchaSource ну какое-то такое название с методами public Captcha get (), public void update () и событием PropertyChange:CaptchaSource:data; далее сделать два класса MainForm и QuickForm и подписать их на это событие.

А так, сделать ещё автоподгрузку постов и идеи у меня кончатся.

0x000035
todo.png
>>0x000034

Буду на выходных смотреть твои правки. На гитхаб можно, можно и сюда ссылки на пастебин. Многоуровневые ответы мне концептуально нравится.

Осталось автоподгрузка, js-виджет для прикрепления картинок, попап с ответами не поддерживает скрытие постов/тредов, раскрытие картинок перенести с lightbox на что-нибудь без jquery, сборка фронтенда на webpack, отрефакторить css на относительные единицы, ссылка "ответ" не вставляет id в форму.

Это только фронтенд. Есть куча задач по бэкенду, модерированию. Прикрепил свой список задач из Трелло, нужно бы их на Гитхаб перенести, но мне лень. Запилил сегодня пачку тестов к контроллеру постинга.

0x000036
>>0x000034
>X-CSRFToken не устанавливается в куках. Я не смог найти, откуда он берётся. Оно надоело долбиться в сеть и гадить в консоль.

Плохо. У тебя куки включены?

>Говорили же, что внутренняя нумерация — это крайне плохо?..

Не совсем понял, что ты хочешь донести. А вообще, на страницах кроме внутридосочных HID у постов и тредов прописаны уникальные ID в атрибутах data-id.

0x000037
>>0x000035
>Осталось автоподгрузка

Та же архитектура, что и у капчи: объект доступа к данным, доменный объект и объекты действия.

>попап с ответами не поддерживает скрытие постов/тредов

А как он будет, если его клонируют из DOM-куста?

>на что-нибудь без jquery

А смысл? Ты к jQuery уже привязан, к чему скромничать? Ну привяжись к jQuery 1.12 тогда, будет в 8-м Осле работать: https://jquery.com/browser-support/

>ссылка "ответ" не вставляет id в форму

Дык ея никто и не слушает, даже я.

>>0x000036
>У тебя куки включены?

Да, «для этого сайта», там есть __cfduid и sessionid.

>Не совсем понял, что ты хочешь донести.

Пост-форма требует thread-id и board-id, их из урлов получить никак нельзя. При быстром ответе форма прикрепляется к посту, если пост был подгружен т.е. или его не было в DOM-е, или он является попап-клоном, узнать, откуда он, никак нельзя. Да, у него есть URL, там имеется id поста, треда и доски, но для формы они бесполезны.

0x000038
>>0x000037
>попап с ответами не поддерживает скрытие постов/тредов

Ну и надо было документацию к jQuery читать: https://api.jquery.com/id-selector/

>Calling jQuery() (or $()) with an id selector as its argument will return a jQuery object containing a collection of either zero or one DOM element.

Так что усё работает.

0x000039
>>0x000035

Тогда смотри этот: https://pastebin.com/cPWGLMwr— однофайловая помойка, ага.

0x00003a
Clipboard01.png

На днях попробую залить всё это на BitBucket.

>>0x000034
>Да, оно, PropertyChange

А и таки да.

>>0x000037
>Та же архитектура, что и у капчи

Проблема будет лишь в идентификации вызывателя, если делать абстрактый источник.

>>0x000038

Изменение ID на Class не сильно поможет с подгружаемыми постами. Значит придётся источнику постов сделать зависимость от механизма скрытия. Что-то здесь мне не нравится.

Ну и заглушку надо переместить в поддерево поста, ибо ей в кусте попупов места нет.

0x00003b
>>0x00003a
>На днях попробую залить всё это на BitBucket.

https://bitbucket.org/Milfie/hexchan.org/

Кстати, для автоподгрузки какое-нибудь API есть?

0x00003d
Clipboard01.png

Сделай ошибку нормальную штоле.

0x00003e
Xed2NUVA4QY.jpg
>>0x00003d

А ты вообще что пытаешься сделать? Что я вижу на скрине?

Алсо, для автоподгрузки апи нет пока что

Алсо, скоро все не библиотечные скрипты будут объединены в один.

0x000040
010 - 907x830@32 [SIG886d99fd66b704497c13f7f34eb122370c93706aff15406ff2f435d6a141a0d2].jpg
>>0x00003e
>А ты вообще что пытаешься сделать?

Если совсем в общем, то то, что не смог сделать ты: https://410chan.org/dev/res/18554.html#i19669В стиле толстого десктопного Java-клиента.

>Что я вижу на скрине?

Выхлоп теста объекта доступа к данным. Твой движок почему-то на запрос несуществующего поста, имеющего однако правильный вид (#x######), отвечает 200 Ok, а не 404 Not Found.

>Алсо, для автоподгрузки апи нет

Да его на большинстве других нет, так что не важно.

>Алсо, скоро все не библиотечные скрипты будут объединены в один.

Ну, это уже не ко мне.

0x000041
sadpanda.jpg
>Если совсем в общем, то то, что не смог сделать ты
>не смог сделать ты
0x000042
fallout_4___nick_valentine_sketches_by_maxkennedy-d9plygu.jpg
>Выхлоп теста объекта доступа к данным. Твой движок почему-то на запрос несуществующего поста, имеющего однако правильный вид (#x######), отвечает 200 Ok, а не 404 Not Found.

Вообще-то это правильное поведение. Часть урла после решетки - это ссылка на часть документа, которую ищет браузер локально внутри загруженной страницы. Адрес документа, который отдает сервер - это часть до решетки.

Наверно были бы очевидней ссылки вида http://hexchan.org/b/0x000005.html#0x000040но .html это моветон нынче.

0x000043
>>0x000042

http://hexchan.org/b/0x000005/0x00003e— прекрати ебаться в глаза, это отдельный ресурс. Ты его запрашиваешь AJAX-ом, ты его эвалятишь, сука, через .append() вместе со скриптами, за что тебе отдельно надо руки поотрывать. Маме своей про якори такую дичь рассказывай, пока она тебе борщ готовит.

0x000044
>>0x000043

Кокой ты няша.

0x000045
>>0x000044

Говорю, как умею, смело, открыто и прямо в лицо. Ну и я не собираю втихую статистику с посетителей и не пытаюсь впарить им рекламу.

0x000046
>>0x000045

Ок. Я по личным обстоятельствам сегодня в овощном состоянии и понял тебя неправильно.

А причем тут статистика и реклама? У меня здесь нету ни гуглоАналитик, ни яндексМетрик.

0x000047
>>0x000046

Ладно, я погорячился.

Никогда не эвалять загруженные страницы .append()-ом, он также запускает все скрипты на страницах. Есть jQuery.parseHTML(), он этого не делает, сейчас даже совсем.

Статистика — client_errors.js отсылает сообщения браузера об ошибках на сторонний ресурс без ведома пользователя. Параноики будут очень рады.

Реклама — попутал. У меня провайдер подменяет запрос к underscore-min.js и пытается её подгружать через прокси-скрипт.

З.Ы.:

Про скрипты: у россиянских парашеводов какое-то нездоровое стремление свои JS-велосипеды прибивать гвоздями к сайту «шоб не блокировали», несмотря на то, что сайт из себя представляет унылый круд, которому скрипты вообще не нужны. Так обычно делают ушлые рекламщики, но их хотя бы можно понять — бизнес там, доходы, то-сё. Чего конкретно ты добьёшься упаковыванием всего в один файл?

Про капчу: Рамку у картинки убери, раз уж делаешь мыльный неконтрастный стиль — она глаза режет.

Про HTTPS: Мои хромые бродилки (“Opera Blink” 36.0, “FlashPeek Slimjet” 10.0.13.0) по нему заходить на сайт не хотят ни в какую, говорят что протокол небезопасный. “IE8” такого шифрования не знает. “Maxthon” 5.2.6.1000 говорит, что сертификат неправильный. Единственные, кому всё нравится, это “Opera Presto” 12.18 и “Firefox ESR” 52.9.0.

0x000048
>>0x000046

Ладно, я погорячился.

Никогда не эвалять загруженные страницы .append()-ом, он также запускает все скрипты на страницах. Есть jQuery.parseHTML(), он этого не делает, сейчас даже совсем.

Статистика — client_errors.js отсылает сообщения браузера об ошибках на сторонний ресурс без ведома пользователя. Параноики будут очень рады.

Реклама — попутал. У меня провайдер подменяет запрос к underscore-min.js и пытается её подгружать через прокси-скрипт.

З.Ы.:

Про скрипты: у россиянских парашеводов какое-то нездоровое стремление свои JS-велосипеды прибивать гвоздями к сайту «шоб не блокировали», несмотря на то, что сайт из себя представляет унылый круд, которому скрипты вообще не нужны. Так обычно делают ушлые рекламщики, но их хотя бы можно понять — бизнес там, доходы, то-сё. Чего конкретно ты добьёшься упаковыванием всего в один файл?

Про капчу: Рамку у картинки убери, раз уж делаешь мыльный неконтрастный стиль — она глаза режет.

Про HTTPS: Мои хромые бродилки (“Opera Blink” 36.0, “FlashPeek Slimjet” 10.0.13.0) по нему заходить на сайт не хотят ни в какую, говорят что протокол небезопасный. “IE8” такого шифрования не знает. “Maxthon” 5.2.6.1000 говорит, что сертификат неправильный. Единственные, кому всё нравится, это “Opera Presto” 12.18 и “Firefox ESR” 52.9.0.

0x000049
>>0x000047
>>0x000048

Мда... Надо запиливать удаление постов.

0x00004a
>>0x000048
>Никогда не эвалять загруженные страницы .append()-ом, он также запускает все скрипты на страницах

Первый раз слышу, что все скрипты на странице. Он мог бы запустить скрипты, которые содержаться в загружаемом HTML поста, но их там быть не может. Весь пользовательский ввод надежно экранируется на сервере.

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

Неправда, это не сторонний ресурс, хотя такие бывают, типа Sentry. Я отсылаю их на тот же сервер и в то же приложение, где работает сам имиджборд, для отладки.

> У меня провайдер подменяет запрос к underscore-min.js и пытается её подгружать через прокси-скрипт.

WAT?! Что, серьезно? Ну это пиздец.

>Чего конкретно ты добьёшься упаковыванием всего в один файл?

Снижения числа запросов, очевидно. Библиотеки в общую сборку не входят, код не обфусцируется. От чего баттхерт?

>HTTPS

Тестировал в Хроме, мобильном Хроме, свежей Лисе, свежем Эдже, мобильной опере. Везде нормально. Проблема на вашей стороне (с).

0x00004b
4c84a13fb668a24a9b1842d46eb8119dd51d9c97.jpg
>>0x000041

Ну а чего там такого прям нереально сложного-то было? Две вьюхи, одна модель, один DAO. Модель хранит данные, подсосанные из DAO, для обеих вьюх; при их изменении рассылает вьюхам уведомления, если они активные, или кормит их данными, если они пассивные.

0x00004c
Clipboard01.png

Херня у тебя с постами.

>>0x00004a
>Он мог бы запустить скрипты, которые содержаться в загружаемом HTML поста, но их там быть не может.

Иными словами, ты хочешь оставить этот способ для внедрения клиенту вредоносного контента в будущем? Для этого свои скрипты приколачиваешь к сайту?

>Я отсылаю их на тот же сервер и в то же приложение, где работает сам имиджборд, для отладки.

Иными словами, собираешь статистику без ведома посетителя.

>WAT?! Что, серьезно? Ну это пиздец.

Думал, только ты такой умный?

>Снижения числа запросов, очевидно. Библиотеки в общую сборку не входят, код не обфусцируется. От чего баттхерт?

Нищебродские хостинги традиционно предоставляют Perl/PHP + MySQL, об этом неявно говорил Соус. Вряд ли у тебя совсем уж нищебродский хостинг, и вряд ли ему так уж тяжело отдавать статический контент, который к тому же кэшируется клиентом.

>Проблема на вашей стороне (с).

Моя сторона мне говорит, что ни на одном другом сайте такой херни нет. Всё это очень подозрительно.

0x00004d
>>0x00004c

Дружище, чет ты вообще из реальности выпал.

>Иными словами, ты хочешь оставить этот способ для внедрения клиенту вредоносного контента в будущем? Для этого свои скрипты приколачиваешь к сайту?

О чем несешь? Я могу в любой момент любой контент внедрить. Если захочу. И без этих изъебств. Но я не хочу. Главное, чтобы хэккеры не внедрили вместе со своим постом. А сайту ты либо доверяешь, либо не посещаешь, все просто!

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

Серьезно, ты поехавший. Любой POST-запрос к серверу это сборка статистики?

>Думал, только ты такой умный?

Что?

>Нищебродские хостинги традиционно предоставляют Perl/PHP + MySQL, об этом неявно говорил Соус. Вряд ли у тебя совсем уж нищебродский хостинг, и вряд ли ему так уж тяжело отдавать статический контент, который к тому же кэшируется клиентом.

При чем тут PHP? О чем несешь? Еще раз - меньше запросов - меньше лагов - лучше икспириенс.

>Моя сторона мне говорит, что ни на одном другом сайте такой херни нет. Всё это очень подозрительно.

Подозревай дальше, параноик ты наш. У меня сертификат от CDN.

И на скрине у тебя херня, не у меня. Почисти что ли свой ШINDOШS что ли от вирусни, раз он у тебя левые скрипты грузить начинает, лол.

0x00004e
>>0x00004d
>Дружище, чет ты вообще из реальности выпал.

Нет, ты. Параше для работы скрыпты вообще не нужны, ты же сделал капчу через JS, теперь сделал так, чтобы твои скрыпты нельзя было блокировать без ущерба для работы сайта.

>Я могу в любой момент любой контент внедрить. Если захочу.

Тогда на твой сайт никто заходить не станет. Поэтому и оставляешь лазеечку.

>Любой POST-запрос к серверу это сборка статистики?

Любая пересылка данных без ведома пользователя. Зачем тебе ошибки моего браузера? Для отладки? А почему бы честно не предупредить посетителя, что идёт сборка данных?

>Еще раз - меньше запросов - меньше лагов - лучше икспириенс.

Чей именно? Клиента, который эти скрипты кэширует, или мамкиного какера, которому не надо, чтобы его скрипты блокировали?

>У меня сертификат от CDN.

CDN — Content Delivery Network, кэш транспортного уровня. О чём это должно мне говорить? Почему не LetsEncrypt?

>И на скрине у тебя херня, не у меня. Почисти что ли свой ШINDOШS что ли от вирусни, раз он у тебя левые скрипты грузить начинает, лол.

https://kirkizh.ru/2017/07/megafno-2/— лучше почисти мне провайдера, маня. Все знают эту хуйню, кто в вебе не первый день.

З.Ы.:

Ну и для афериста важно всегда сохранять самообладание. Ты что-то нервничаешь, это заметно.

0x00004f
sawdiIIslT8.jpg
>0x00004e

Мне надоело с тобой спорить. Хочешь веровать в свои теории заговора - на здоровье.

0x000053
>>0x00004f

Гораздо проще спорить с клиентами, которых браузер/антивирус на сайт не пустили, обозвав его мошенническим, да. Нет человека — нет проблемы.

Ну и далее:

— Сделай виджет добавления файлов хотя бы как в Яндексе «Добавить ещё одно поле» — что это за «Добавлено 2 файла»? Как посмотреть, что я добавил? Как заменить/удалить один файл?

— Сделай кнопкам «Отправить» и «Обновить капчу» стиль “disabled”.

— Сделай индикатор загрузки капчи и картинку «Капчу загрузить не удалось».

— Общее количество постов на форуме — это не та информация, которая кому-то интересна.

— Определись уже, каких клиентов ты собираешься поддерживать.

0x000055
34 - 1024x768@32 [SIG32f7df6653c3e885defb9261e501d39d5304aee4ea084723c8afecdfc35af5f7].jpg

С ним >>0x000054 всё хорошо? Что такое «/ 128»?

0x000057
>>0x000055

128 - это бамплимит. То есть в треде, допустим, 42 из 128 возможных постов.

0x000058
>>0x000057

Ну вот видишь, пришлось спрашивать. А зачем эта инфа в каждом треде, собираешься пользователям дать возможность задавать собственные бамплимиты?

0x000059
>>0x000058

Не пользователям, модераторам. Есть настраиваемый лимит по умолчанию для доски, в скрытых настройках треда можно указать отдельный лимит.

0x00005a

Ты кэш-контрол специально не ставил или у тебя динамическая генерация страниц?

0x00005b
069 - 640x480@32 [SIG7f304fb906992fbda11c5ad1087e852a084cf0537271bb31784e0c162811bd02].jpg
>>0x00005a

Опять у тебя посты не сортируются.

0x00005c
>>0x00005b

Вообще-то была нужда проверить слияние данных.

0x00005d
>>0x00005c

Не сработало. Дура написала километр кода, и совершила глупую ошибку. Ну дура же!

0x00005e
>>0x00005d

Ну-ка, а сейчас?

0x00005f
b67d316.jpg

Опять проблема с сортировкой. Блин.

Алсо, что за слияние данных ты здесь устроил?

0x000060
9074835067_78dacc9f9d.jpg
>>0x00005f

Как-то даже странно, что у меня проблем с сортировкой нет, хотя решение хранить объекты бизнес-логики в DOM было не самым умным.

Обновление состояний двух вьюх требует в модели хранить копию данных для них обеих. Поскольку API на подобных форумах никакого нет, я просто дёргаю несколько страниц доски, страницу треда, разбираю их и мёржу в копию модели. Кэш-контрол ты не проставил, поэтому подобные обновления жрут неприлично много трафика.

0x000062
Clipboard01.png

Мда, дизайнер из меня, как из говна — пуля: даже сверстать это таблицами не смог. С другой стороны, надо было полагать, что для сайдбара потребуются иные шаблоны.

0x000063
mangadrawing.net.image.admin.a9e2da11fa4cb92d5daea69c03b2e868.jpg
>>0x000062

Если очень хочется вкорячить сайдбар но зачем, возьми стили из каталога тредов.

Алсо, последний коммит должен был поправить сортировку. Но это не точно.

0x000064
019 - 1280x720@32 [SIG03a5561860edf917af9630ab0ac3179dadc38f24966d170d3b83b6a66edcfe7d].jpg
>>0x000063

Тут проблема несколько глубже: я же сайт разобрал на (условно) абстрактные данные, теперь его надо собрать взад. Нужен генератор шаблонов на JS, аналогичный Velocity.

>но зачем

Потому что могу.

>Алсо, последний коммит должен был поправить сортировку. Но это не точно.

Надо набить ещё семь постов, тогда видно будет.

А бидон разве не может строку hex-ов в число перевести? Потому что очень похоже на попытку лексикографической сортировки.

0x000065
Squirrelly.jpg

Ну, вот например «Белочка» “Squirrelly”:

https://hackernoon.com/introducing-squirrelly-a-fast-lightweight-and-simple-js-template-engine-70a873d765c9

https://squirrelly.js.org/

0x000066
4666650237_93f02e0d9f_z.jpg
>>0x000065

Уже подключен Underscore, в нем есть простой движок шаблонов. Но я его буду убирать, скорее всего. Про белочку не слышал никогда.

0x000067
>>0x000066

Я что-то сомневаюсь, что он потянет генерацию сотен постов, а привязываться к конкретному сайту как-то не интересно.

Ну и если хочешь, чтобы подобные вещи делали через каталог, добавь каждому треду недостающую информацию: hid последнего поста и счетчик модификаций — не обязательно, чтобы он честно считал модификации содержимого треда, просто нужно значение, которое можно сравнивать. В существующем виде каталог, и не только здесь, практически бесполезен, ибо в нём нет информации для объединения с данными других асинхронных реквестов, т.е. сайдбар на каталоге будет жить своей собственной жизнью и показывать лажу даже на тормозных форумах.

0x000068
3e1f78c.jpg
>>0x000067

Да мне как-то не очень нужны сторонние разработки, прикрученные к моему движку, чтобы что-то там эдакое делать :3

Я все это могу сам сделать, просто время не бесконечное, а кроме фронтенда еще забот хватает.

0x000069
>>0x000067
>В существующем виде каталог, и не только здесь, практически бесполезен, ибо в нём нет информации для объединения с данными других асинхронных реквестов, т.е. сайдбар на каталоге будет жить своей собственной жизнью и показывать лажу даже на тормозных форумах.

Собственно поэтому первоначальный мой замысел я посчитал провальным. Сайдбар с актуальными тредами нужно синхронизировать с основной областью. Как-то. А если еще все типы объектов (борды, треды, посты) получать по отдельным РЕСТ интерфейсам то вообще труба. Между двумя реквестами база обновилась и всо, на экране рассинхрон.

0x00006a
54 - 1024x1642@32 [SIGff81a12aeb6de414ce68a7632bc015406fe8cc07055c0722b541aed857298e57].jpg
>>0x000068

Ну тогда лишь напомню, что:

1. Проблему фронта решил ~10 лет назад Стефан Шинкуфаг для десктопов, а затем Мику для мобил.

2. Каналы сейчас у всех толстые, так что никто особо по поводу трафика переживать не будет.

Таким образом:

1. От современного парашевода требуется просто поднять дефолтную вакабу/кусабу и ничего в ней, кроме стилей, надписей и политики модерации, не менять.

2. Ты по сути будешь реализовывать функционал, который уже реализовали десять лет назад, набивая те же шишки, которые уже набили.

>>0x000069

Т.е., погоди... ты на каждый пост отдельный запрос делал что ли?

0x00006b
>>0x00006a
>От современного парашевода требуется просто поднять дефолтную вакабу/кусабу и ничего в ней, кроме стилей, надписей и политики модерации, не менять.

Судя по тому, что мелкобордосфера превратилась в бесконечные безыдейные клоны, разруху и местячковые срачи, требуется не только это.

0x00006c
>0x00006a
>Азаза, давайте тогда вообще ничего не делать, обмазываться старыми скриптами и ностальгировать.

ОК.

А теперь по более дельному вопросу про запросы.

Разумеется не на каждый. Списками досок, тредов, постов, фильтрованными и постраничными. Но это был классический REST по структуре, каждая сущность на отдельном URL висит.

Для себя я решил, для иерархической структуры он не подходит, хз как связать обновления детей и родителей. У тебя параллельно идут запросы к трем сущностям, одна между запросами обновилась, все, система неконсистентна.

Потом я перешел на отгрузку всех сущностей в одном запросе, тогда консистентность гарантирует БД с транзакциями. Но тогда зачем отдавать голый JSON и перегружать клиентские машины рендерингом? И тут я понял, что не каждый сайт должен быть одностраничным приложением.

0x00006d
>>0x00006b
>Судя по тому, что мелкобордосфера превратилась в бесконечные безыдейные клоны, разруху и местячковые срачи, требуется не только это.

Это уже повод для отдельного разговора. Мне много раз говорили, что одного нового движка мало. Это правда, нужна политическая, не побоюсь этих слов, программа. Я часто думаю на эту тему, читаю околобордовые вики и треды с обсуждениями, как мы до жизни такой докатились. Что я могу написать сейчас это лишь поток сознания, который предстоит оформить:

0. Возврат к корням в виде анимешного фандома как объединяющего фактора и общей культуры. Да, фандом изменился, стал мейнстримом, но он живой и многочисленный.

1. Нужны свежие посетители, не пораженные нынешним 2ch.hk

2. В свою очередь, свежие посетители - это нынешние участники соцсетей.

3. Чем их привлечь? Контент. Много контента. Новости, обзоры, обсуждения онгоингов, арты. Нужен эдакий массовик-затейник. И я попробую им стать. И поощрять других.

4. Как их привлечь? Ни в коем случае не с других борд! Придут те же токсичные люди, да и тех осталось не так много, как в 2009. Контент должен органично привлекать людей из поисковиков. Нужны СЕО, реклама контекстная и в профильных пабликах.

5. Отслеживание внутрибордовых трендов, подавление дегенеративных форсов и пустых срачей. Нейтралитет с другими бордами. Межбордовые срачи только мешали развитию.

0x00006e
Bonsai-Tree.jpg

Если немного удариться в пафос.

Борду нужно растить, подобно бонсаю. Нужно посадить дерево, поливать и подкармливать его, вовремя подрезать ветви и отгонять вредителей.

Большинство же нынешних бордо-садовников просто закинули семена в землю, и с удивлением наблюдают сорняки и запустение. Это неправильно. Борде нужны цель, уход и забота. Цель сегодняшнего дня и для сегодняшнего поколения.

0x00006f
[SIG56de28aa51ea27296f34007f5049a57aa0006475e1aa61577cc43a5d6c97484a].jpg
>>0x00006c

Понятно.

0x000076
44 - 640x480@32 [SIG455f7546fc53b7465cf9b057eb8ff2a10f2c54437a7318307e6bd81cd74fa737].jpg
>>0x000073

Я знаю, что эта регулярка съедает пробелы после урла.

0x00007b
>>0x000076

Действительно. Буду разбираться, значит.

0x00007c
Clipboard01.png
>>0x00007b

Тут целый тред посвящён дурацким багам парсера, вы обратили внимание?

Ну и вообще — на пикрилейтед простой парсер на Re-движке. Мало кто сейчас понимает, что регулярные выражения — это декларативный язык программирования. Если выбранный вами движок не поддерживает рекурсию и произвольное выполнение кода, вы или пишете классический парсер, или решаете дурацкие задачки, которыми Таня в МФТИ уже который год кормит вчерашних школьников.

>>0x00006c
>классический REST

Классический:

1. REST — это когда каждой вьюхе по урлу и тип данных определяется клиентом. Называется такая вьюха с урлом «интернет-ресурс».

2. HATEOAS — это когда у вьюхи с урлом, которая «интернет-ресурс», есть ссылки “Next”, “Previous” и “Back”.

А не когда вы каждую ентитю делаете интернет-ресурсом и с иерархическими документными БД работаете так, будто это — табличная БД, — и на всё это велосипедите SOAP over REST, тыщи их.

Возвращаясь к конкретной задаче, вам всего-то надо было сделать ресурсам форума и топика обработку POST-запросов, тем самым выкинув параметризацию запроса посредством <input hidden /> костыля 15-и летней давности.

>хз как связать обновления детей и родителей. У тебя параллельно идут запросы к трем сущностям, одна между запросами обновилась, все, система неконсистентна.

Вот чтобы не решать высосанные из пальца проблемы, надо делать приложение, а не сферический бэк в вакууме. Вы серьёзно полагаете, что ленте топиков нужна консистентность данных от сервера и ей необходимо DTO? Консистентность нужна пользователю, а ему с лихвой хватит консистентности локальных данных.

0x00007d
>>0x00007c
>Замахнулся на регулярки из святой Вакабы
>Кукарекает за архитектуру и МФТИ
>А сам засрал весь 410 своим нубским вкатываниями в JS и CSS
>Пишет JS в стиле Java, переусложнив все что можно и с уебанским неймингом

Бро, если ты такой хардкорный девелопер давно бы сам идеальный движок, с таким-то бэкграундом в Computer Science :3

0x000081
Clipboard01.png
>>0x00007d
>С важным видом копирушь разработку 15-летней давности.
>Старательно копируешь все баги и недоработки оригинала даже не пытаясь их осмыслить.
>Пригораешь от указания на глупые баги.
>Ищещь в указывающем недостатки.
>Используешь аргумент «Сперва добейся».
>Ведь ни на что другое ты не способен.

Я тоже так умею.

Или вот ещё:

Не смог сверстать резиновый «Грааль» и сделать ленту топиков

@

Обвиняешь других в нубстве.

Ну и ещё:

Коль обосрался на простой фигне,

Ты не ищи у опыта совета,

А лучше с умным видом заявляй:

На целом свете, мол, решения проблемы этой нету.

О как! Во мне даже поэт проснулся.

Ну и напоследок:

Пишешь JS в стиле Java

@

Усё работает

З.Ы.: Надеюсь, твой парсер не сломается от такой сложной разметки.

0x000082
>>0x000081

Знатно студентик пригорел, ок, продолжаем разговор.

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

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

В-третьих, "работает" это не аргумент. Нахуевертить костылей и стремного кода - это не значит решить задачу. И о каком опыте речь идет? Серьезно, в лучшем случае ты из другой области в веб вкатываешься, но в нем ты профан. Или опытом нынче считаются "как тетя Маня в институте рассказала"?

З.Ы. Предлагаю тебе перестать быть токсичным петушком, и пойти наконец поработать хотя бы в яндекс.еде, может там заработаешь на комп не с шиндоуш хр и оперой 12 :3 А здесь ты со своим хамством, выдаваемым за честность, не нужен.

0x000086

OwO