Ычан: [d | au / b / bro / hr / l / m / mi / mu / o / r / s / sci / tran / tu / tv / vg / x | a / aa / c / fi / jp / rm / tan / to / vn / vo]
[Назад] [Вся нить] [Последние 50 сообщений]
Ответ в нить
Имя
Animapcha image [@] [?]
Тема   ( ответ в 24993)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, MP4, OGG, OGV, PDF, PNG, PSD, RAR, SVG, SWF, TXT, WEBM, WEBP, XCF, ZIP размером до 5000 кБ.
  • Ныне 3688 unique user posts. Посмотреть каталог
  • Предельное количество бампов нити: 500
Screenshot_20201030_113945.png - (516.36KB, 2032×1172)
24993
No. 24993  
Разрабатываю движок АИБ, сайт: https://symfony2ch.ru
короткий вариант домена: https://s2ch.ru
скрипт может в любой момент выдавать ошибки, сервер падать, могу принимать реквесты по улучшению функционала.
No. 24996  
Бро, пойми, что ты вызываешь только агрессию. С таким отношением мне не хочется тебе помогать. Мне хочется зайти к тебе на твою недоборду и завайпать её к херам. Ты ж её даже рекламировал здесь, только в б.
No. 24997  
>>24996
Мне не нужна помощь.
>Мне хочется зайти к тебе на твою недоборду и завайпать её к херам.
Так именно подобное от тебя и требуется, тестировать и ломать скрипт.
У меня сейчас нету кэширования, хотя нужно для производительности, если положишь, тогда запилю и кэширование. Я расстанавливаю приоритеты.
No. 24998  
>>24996
могу рекапчю запилить, если сломаешь от Gregwar. https://github.com/Gregwar/Image
No. 25007  
я при разработке своего проекта встретился с этой фичей php:
https://bugs.php.net/bug.php?id=29992
Description:
------------
foreach with a reference seems to corrupt the last element in an array

Reproduce code:
---------------
<?php
$array = array(1,2,3);
foreach( $array as &$item ) { }
print_r( $array );
foreach( $array as $item ) { }
print_r( $array );
?>

Expected result:
----------------
Array
(
[0] => 1
[1] => 2
[2] => 3
)
Array
(
[0] => 1
[1] => 2
[2] => 3
)

Actual result:
--------------
Array
(
[0] => 1
[1] => 2
[2] => 3
)
Array
(
[0] => 1
[1] => 2
[2] => 2
)
...

Не буду рассказывать подробности, но мне пришлось поставить @ перед md5_file и getimagesize, у меня последний файл при загрузке нескольких всегда был ссылкой на предыдущий, сейчас понял, в чём там дело, исправил, историю рассказывать не буду.
No. 25026  
Читаю про вайп на ычане:
>А если ойпи динамический? Может, по паролю к сообщениям как-то сделать? По ним ведь банят, значит и инвайт можно выписать, наверное.
Так угораю с этих систем защиты, для дураков сделано. Вот пишут свои системы защиты, дураки уйдут, умные останутся... На 2ch.hk в cookie пишут какую-то информацию при бане. Понимаете, будучи программистом составлять системы защиты от дурачков гиблое дело, они всегда обмануть могут, а систему защиты всегда улучшать надо будет. Там же основной смысл состоит в обмане, вот давай по паролю к сообщениям банить, а давайте по user_id в cookie, а давайте, давайте... всё это обман, которые легко определить, какой смысл составлять такой код, постоянно улучшать надо будет. Делом заняться не могут, всё защиту от дурачков создают, код програмнный этот не имеет смысла, когда узнаёшь о механизме, тогда защиты и нету, а значит и не было, оно там на обмане основане, вот тебе пароль к сообщению, никто не узнает, а теперь по нему банят. И кто на это попадётся? Тот, кто один и тот же использует. Вот у меня всё просто, user_id нужны для ограничений постинга тех же картинок, если кто-то буйствует, могу удалить аккаунт, а значит придётся заново набивать сообщения или таки без картинок постить. Я накладываю ограничения, которые защищают от вайпа, они не от дурачков защищают, не могут с вайпать справить на ычане, регистрацию вводят по паролям к сообщениям, вот и пусть их вайпают, мою борду невозможно завайпать. Анонимус? Тогда жди премодерации нового треда... Исходя из этой системы можно много разных ограничений накладывать или снимать, определяется с опытом. IP - способ идентификации пользователя, а значит нельзя позволить использовать прокси и тор... такое лучше, чем регистрация.
No. 25027  
Я надеюсь вы поняли иронию про идентификацию по IP, АИБ становятся наименее анонимными форумами, там от тебя с реального IP просят постить и так идентифицировать... Вот твой IP - аккаунт, менять не имеешь права, иначе ты плохой человек, добрые они всегда со своего реального постят.
No. 25053  
Админка сейчас так выглядит.
No. 25054  
Буду загружать по одному файлу...
No. 25055  
Есть ещё страница выполнения SQL запросов и восстановления из резервной копии, но не буду постить, всё и так понятно.
No. 25056  
>>25054
С премодерацией вам, пожалуйста, на Доброчан. Принципиально не посещаю борды, где есть такая гнусная вещь.

>>25053
>Таблицы базы данных
>Существует.
Неужели ты используешь Симфони без Доктрины и ее миграций? Что за низкоуровневые запросы к БД? Твой движок вообще не должен знать ни о каких таблицах.
No. 25057  
>>25056
Премодерация лучше, чем баны по IP. К тому же у меня нету времени проверять каждый пост на борде... Вот недавно организовал ограничение на количество постов с одного IP в минуту и десять минут, мне тех, кто постят слишком много банить автоматически или на премодерацию отправлять? Премодерация лучший вариант, пост анонимуса не удаляется, а проверяется в случае чрезмерной активности.
>Неужели ты используешь Симфони без Доктрины и ее миграций? Что за низкоуровневые запросы к БД? Твой движок вообще не должен знать ни о каких таблицах.
Если честно, у меня какие-то проблемы с миграцией, хотя мне это неинтересно, оно тупо ничего не делает... Да и вообще, я использую таки модели для генерации таблиц. Страница где проверяются таблицы на существование является установочной, приложение сразу же запускается после загрузки на сервер, достаточно в файле .env указать параметры для соединения с БД.

public function createEntityTables() {

        $metadatas = $this->allMetadata();
        $tables = array();
        foreach($metadatas as $metadata) {
            try {
                $tables[$metadata->table['name']]['name'] = $metadata->table['name'];
                if($this->tableExist($metadata->table['name'])) {
                    $tables[$metadata->table['name']]['exist'] = true;
                } else {
                    $this->tool()->createSchema(array($metadata));
                    $tables[$metadata->table['name']]['create'] = true;
                }
            } catch (\Doctrine\ORM\Tools\ToolsException $exc) {
                $tables[$metadata->table['name']]['error'] = $exc;
                $tables[$metadata->table['name']]['create'] = false;
            }
        }
        return $tables;
    }

https://pastebin.com/SeqPRADB
No. 25062  
>>25056
А, ну, понятно, почему у меня там с миграцией проблемы, таблицы же с динамическим названием присутствуют. Я же АИБ создаю, значит есть таблицы типа board_section_b и т.п., впрочем, используются они чисто для генерации уникальных ID. Однако, технически можно туда добавлять поля, тогда для каждого из разделов можно cоздать своё уникальное поле в БД.
No. 25065  
Теперь у меня есть страница с описанием API: https://symfony2ch.ru/api.html

Информация о Symfony /info/about.html

Все доступные пути /info/router.html
Содержимое файла composer.json /info/composer.html
Содержимое файла config/bundles.php /info/bundles.html
Страница "о себе" /user/info.json
Разлогиниться /user/logout.json
Выдаёт ID треда по названию раздела и идентификатору в нём сообщения /redirect/{название_раздела}/{идентификатор_сообщения_внутри_раздела}.json
Последний уникальный ID сообщения /all/last_post_id.json
Последний ID сообщения в разделе /{название_раздела}/last_post_id.json
Последний ID сообщения в треде /{название_раздела}/last_post_id/{идентификатор_треда}.json
Номера сообщений, которые следуют после уникального ID /all/posts_id_after_{идентификатор_сообщения}.json
Номера сообщений, которые следуют после ID внутри раздела /{название_раздела}/posts_id_after_{идентификатор_сообщения_внутри_раздела}.json
Номера сообщений, которые следуют после ID внутри треда /{название_раздела}/posts_id_after_{идентификатор_сообщения_внутри_раздела}/{идентификатор_треда}.json
Каталог тредов /catalog/all/{номер_страницы}.json
Каталог тредов внутри раздела /catalog/{название_раздела}/{номер_страницы}.json
Страница с тредами и последними пятью к ним сообщениям /all/{номер_страницы}.json
Страница с тредами и последними пятью к ним сообщениям внутри раздела /{название_раздела}/{номер_страницы}.json
Тред /{название_раздела}/res/{идентификатор_треда}.json
Все сообщения /all/posts/{номер_страницы}.json
Все сообщения внутри раздела /{название_раздела}/posts/{номер_страницы}.json
Сообщение по уникальному ID /all/post/{идентификатор_сообщения}.{_format}
Сообщение по ID внутри раздела /{название_раздела}/post/{идентификатор_сообщения_внутри_раздела}.json
Вы так же можете запросить любую HTML с содержимым без всякой лишней информации, для этого достаточно добавить в параметре GET значение onlycontent=1, пример: /api.html?onlycontent=1.

No. 25089  
logapache.png - (410.20KB, 1491×664)
25089
Тут кто-нибудь разбирается в серверном администратировании? Какая-то DDOS-атака происходит? Попытался сейчас сменить apache2 на nginx, не уверен, что в скриптах дело.
Лог apache2 был заполнен тем, что ан скрине.
CPU использовался на 100%, ещё вот это:
>[Sat Jan 09 10:57:49.883325 2021] [php7:error] [pid 7704] [client ...] PHP Fatal error: Out of memory (allocated 2097152) (tried to allocate 4096 bytes)
No. 25090  
Даже сам свой сервер тестом от apache2 смог положить... пришлось настраивать nginx.
Сейчас у меня такое:
/etc/nginx/nginx.conf
http {
...
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_req_zone $binary_remote_addr zone=dynamic:10m rate=1r/s;
...

/etc/nginx/sites-available/default
server {
...
limit_conn perip 10;
...
location ~ ^/index\.php(/|$) {
...
limit_req zone=dynamic burst=2 nodelay;
...
}
...
No. 25091  
оно помогает, но всё равное такое себе... тут может брандмауер нужно настраивать или cloudflare попробовать бесплатный.
No. 25092  
Перевёл на бесплатный cloudflare, всё равно неизвестно сколько бы потратил времени на настройки сервера... Мне теперь IP пользователей нужно через заголовок HTTP_X_FORWARDED_FOR брать.
No. 25093  
>>25092
>Перевёл на бесплатный cloudflare
Кокой глупый у тебя дудосер. Настоящий айпи-то все равно известен (был), так что ничто не мешает дудосить в обход.
No. 25094  
>>25093
да уже сменил IP. теперь разбираюсь какие там новые трюки, вроде просто обновление капчи запрашивает очень быстро, тут теперь не nginx виснет, а уже однозначно php-fpm. ладно, зачем обсуждать? разбираться надо.
No. 25097  
cloudflare.com вообще ни о чём, легко обошёл DoS-ер. отключился от данной услуги, попытался настроить сервер и оно тест apache2 выдерживает:
ab -c 50 -n 30000 ru2ch.com/

### ANTIDDOS ###
limit_conn_zone $binary_remote_addr zone=perip:10m;
#limit_req_zone $binary_remote_addr zone=dynamic:10m rate=2r/s;
limit_req_zone $binary_remote_addr zone=dynamic:10m rate=1r/s;
################

### ANTIDDOS ###
##limit_conn perip 50;
limit_conn perip 5;
################

### ANTIDDOS ###
## limit_req zone=dynamic burst=5 nodelay;
limit_req zone=dynamic burst=1 nodelay;
################
No. 25098  
не, оно не помогает, нужно таки разбираться в этих настройках сервера. теперь у меня грузит сам nginx от теста.
No. 25100  
Через fail2ban количество запросов контролирую. https://itstuff.info/linux_unix/configuretion-fail2ban-and-nginx-to-protect-from-dos/
No. 25101  
Не знаю зачем это всё рассказываю... мои дальнейшие планы.
Делая простую DDOS-защиту понял некоторые вещи, так вот, собираюсь таки кэшировать html страницы полностью, а не отдельно запросы из базы данных, да и вообще кэшировать все возможные алгоритмы, чтобы снизить нагрузку на процессор. К тому же, собираюсь уменьшить количество запрашиваемых скриптов, потому что это поможет защититься от DDOS'а, вот сейчас у меня каждое новое сообщение в треде скачивается, а значит, если их 10, тогда будет 10 запросов, мне нужно сделать так, чтобы обычный пользователь кардинально отличался от DDOS'ера, который запрашивает много страниц за один раз.
Всё это сейчас не так важно, потому что нагрузки нету и пользователей, некуда торопиться, отдыхаю.
No. 25107  
>>25101
Планы рассказывают для ответственности, например. Дальше не читал.
No. 25112  
>>25107
Нет, дело в том, что TODO можно составить где-нибудь в текстовом документе, а можно на форуме в интернете.
No. 25122  
>>25007
Эта фича лечится unset($item); после foreach( $array as &$item ) {}.

Но если тебе приходится изменять элементы массива в foreach, то твой код дурно пахнет.
No. 26233  
Давайте придумывать название для движка АИБ, в данный момент называется MaidIB, но кажется в переводе с английского "Горничная Форум с Картинками" звучит не очень. Разрабатываю медленно, ничего не поделать, пытаюсь не ошибиться.
No. 26234  
Screenshot_20220623_235246.png - (252.44KB, 2798×1450)
26234
Структура модульная, поэтому можно даже отказаться от IB в названии.
No. 26235  
>>26233
В русском языке порядок принадлежностей обычно инвертируется.
То бишь, не “ocean[’s] depth”, не «океана глубина», а «глубина океана», хотя «океанская глубина» и “depth of ocean”. Не «Мицгола посты», а «посты Мицгола», хотя и «Мицголовы посты» и «мицголопосты». Не «Москва город», а «город Москва».
Поэтому в офицальном названии SPbPU поставили ужас, коим является “Peter the Great St. Petersburg Polytechnic University”.
Так что, не «горничная форум с картинками», а «картинкодоска горничная». Или «картинкофорум-мейда». Про японских-то мейд все знают же.
Кстати, “maid” в архаичном значении — это старая дева, и не обязательно мейда. Для обозначения юной девы это слово чаще используется как “maiden” — с уменьшительным суффиксом, хотя звучит всё равно архаично — в отличие от немецкого, где „Mädchen“ обычное слово.
No. 26236  
То бишь, название звучит не плохо.
No. 26268  
>>26235
Сменил название на MaidBox.
No. 26272  
>>26235
Сам ты инвертированный, как и твои зарубежные партнёры.
No. 26273  
>>26272
Пошляк!
No. 26274  
>>26272
Жирно.
No. 26283  
>>26233
Есть традиция называть движки в честь прабабушки всех имиджборд, Futaba Channel:
Wakaba, Kusaba, Taimaba, Glaukaba, Yotsuba и т.д.
No. 26288  
Peek 2022-07-01 17-51.gif - (2.65MB, 994×644)
26288
Скачал разные прикольные базы данных и сделал для них простенькие модули (список аниме, список слов, список цитат). На прикреплённом gif показано использование списка аниме и списка цитат для капчи.
No. 26294  
Бредогенератор.

Я испытываю большой страх перед тем, чтобы оказаться презираемым теми людьми, которых я люблю и о ком я забочусь. Сегодня я впервые попробовал манго, оно сладкое, но у него очень большая косточка и много волокон. У меня своих проблем выше крыши. Анонимус хочет научиться водить трактор. Анонимус еще раз посмотрел на свои часы. Тебе здесь не понравится. Анонимус заболел, потому что слишком много съел. Выключишь мне свет, когда я засну? Вы ищете работу. Почему у вас всегда такой усталый вид? Маюко приснился странный сон. Анонимус посадил на своём поле пшеницу. Он никому не доверяет. В коробке пять яблок. Ты знаешь, сколько я заплатил за это? Эти несколько строк - краткое содержание его речи. Ты ведь говоришь по-русски? Вот ответ на мой вопрос! О какой реке вы хотите поговорить? О Роне или Соне? Я рад, что мы избавились от анонимуса. Вы когда-нибудь летали на воздушном шаре? Пожалуйста, подумайте. Лучше быть головой собаки, чем хвостом льва. Я увижусь с тобой в Бостоне. Вы страдаете? Вы сообщили об этом своему учителю? Я могу добавить одно замечание? Ты мне голову не морочь, а давай выкладывай всё начистоту. Он переходил улицу. Мои предки уехали из России в восемнадцатом году. Не искушайте судьбу. Когда вы взяли на себя ответственность за выполнение задач? У меня хватает ума не ссориться. Анонимус рассказал мне, что вырос в Бостоне. Они могут спеть. Если этот фильм такой плохой, зачем вы его смотрите? Анонимуса сегодня уже не будет. Все деньги исчезли. Надо было мне последовать совету анонимуса. Я ей родственница. Я не знаю, кому анонимус это дал. Кто рассказал тебе о нём? Ложь терзала меня изнутри. Я не могу вам с этим помочь. Мы хотим переговорить с анонимусом. У него был устный экзамен. Кто-то сломал мой фотоаппарат. Подойди и сам посмотри. Ты очень одинока. Что бы ты стал делать? Верёвка оборвалась. Анонимус относится к этому серьёзно. Мэри не всегда соблюдает правила дорожного движения. На какой самый лучший концерт ты ходил? Все думают, что это я деньги украл? Анонимус всех нас ненавидит. Я не хочу в больницу. У меня были проблемы с произнесением его имени. Ты всё-таки решил идти? Анонимус вас не поймает. Хватит говорить о анонимусе гадости. Вы должны это прекратить. Я ни разу ему не написала, несмотря на непреодолимое желание это сделать. Ты можешь привести мне другой пример? Анонимус был убит двадцатого октября две тысячи тринадцатого года. Чем этот отличается от того? Анонимус — нейрохирург, и он копается в мозге. Он холодно улыбнулся. Я уже сам ничего не понимаю. Почему у меня нет парня? Как ты оказался в моём доме? Иногда люди принимают неверные решения. Давай немного подождём! Конь хочет пить. У меня уже есть двое детей, и третьего я не потяну. Как я раньше не понял! Вот это не повезло! Я останусь и понаблюдаю за анонимусом. Жаль, что Шредингера нет рядом, чтобы увидеть растущий интерес к своей кошке. Ты не мог бы позвонить мне сегодня вечером? Может, сделаем передышку? Мы собираем двигатель. Скоро сам всё узнаешь. Я говорю всё, что вздумается, не опасаясь, что меня услышат. Эта книга принадлежит школьной библиотеке. Ты видишь между ними разницу? Мы провели тихий день за городом. Помяни чёрта, и он тут как тут. Я помыл картошку. Количество бумаги, производимой в стране, тесно связано с ее культурным уровнем. Вы глухая? Он потерял в аварии руку. Анонимус не поэтому этого не сделал. Я хочу быть здесь с тобой. Я хочу казаться выше. Я развеселился. Тогда как насчёт этого: 1500 в месяц. Пан или пропал. Я никогда не влюблялся ни в одну девушку. Мы отлично ладим.
No. 26301  
Peek 2022-07-10 18-00.gif - (3.72MB, 777×630)
26301
Капча, модуль статей, пример того насколько удобна модульная архитектура.
No. 26302  
project_maid_1.png - (1.26MB, 2542×3921)
26302
Скриншоты из прошлой версии.
No. 26307  
> посещая данный ресурс вы подтверждаете
> всю ответственность за опубликованный контент
Гых.
No. 26313  
Peek 2022-07-16 04-44.gif - (3.80MB, 777×630)
26313
Создал специальную страницу с роутами на тот случай, если лень создавать меню.

Инструкция для создания модуля пока такая:
Нужно создавать отдельные пакеты maidbox-module-src, maidbox-module-config, maidbox-module-templates и maidbox-module-translations, либо разместить config, templates и translations в каталоге Resources внутри maidbox-module-src. Подробнее: https://pastebin.com/KjjcbiEy
No. 26314  
Ах да, оба домена давно разделегированы, сайт не работает.
No. 26321  
Peek 2022-07-19 03-59.gif - (2.50MB, 718×620)
26321
Лень делать страницу редактирования конфигурации для своего модуля? Ничего страшного, создаётся автоматически. Схема конфигурации такая:
1) файл default.yaml (не должен никем изменяться, кроме автора)
2) файл custom.yaml (изменяется пользователем)
3) база данных.
Когда скрипт не находит в базе данных конфигурацию, тогда обращается к кэшированной custom.yaml, если и там не находит, тогда поиск осуществляется в default.yaml.
No. 26322  
>>26321
И, да, на этой gif запись производится не в файл custom.yaml, а в базу данных. Поля: module, setting, type, value
setting имеет формат: key.key.key.key2, затем такое легко преобразуется в массив. Type определяется через default.yaml, при записи в базу данных считывается default.yaml, определяется тип переменной и устанавливается в поле Type.
No. 26330  
キタ━━━(゚∀゚)━━━!!
No. 26334  
Screenshot_20220719_185331.png - (148.65KB, 1440×1182)
26334
В отличии от основной конфигурации, которая записывается в базу данных, варианты конфигурации хранятся в каталоге /config/название_модуля, тем самым автор модуля имеет возможность сделать несколько вариантов предустановленных настроек.
No. 26336  
157eeafcaf36fda2a6572dc3a10eeabe.jpg - (107.87KB, 1280×1024)
26336
Устал ужимать gif до 5МБ, 2 видео:
MaidBox\Config - https://youtu.be/BhLgbPGU_EQ
MaidBox\Routes - https://youtu.be/zjzCRlwzfdE
No. 26340  
>>26336
А зачем gif, когда сюда можно шебмки грузить?
No. 26341  
>>26340
Не обязательно, кстати, WebM. Можно и MP4, например. Человек же, когда тред создавал, помнил только старый 410, и сюда было не заходил долгое время. Либо это, либо не читает правила и текст под формой постинга.
No. 26347  
Screenshot_20220721_104916.png - (101.31KB, 2244×1388)
26347
Добавил возможность редактировать шаблоны через веб-интерфейс + редактор кода с подсветкой синтаксиса.
https://www.youtube.com/watch?v=Idde1xv5zE8
No. 26354  
Screenshot_20220722_010151.png - (301.30KB, 3840×2160)
26354
Не могу остановиться создавать модули, CSSManager + JSManager, возможность редактировать .css и .js файлы через веб-интерфейс, подсветка синтаксиса прилагается. https://www.youtube.com/watch?v=xHZAR-aCAjg
No. 26360  
CSS and JS upgrade version.webm - (2.42MB, 1920×1080)
26360
Обновление версий .css и .js файлов при редактировании через веб-интерфейс.
No. 26365  
Forum.webm - (2.42MB, 1920×1080)
26365
Базовый функционал АИБ.
No. 26368  
Forum 2 lowq.webm - (3.56MB, 1920×1080)
26368
Добавление изображений к сообщению.
No. 26376  
Пример дополнения SiteMode и демонстрация страницы для выполнения SQL-команд: https://youtu.be/bXHn6pOOeZs
Немного о настройках форума: https://youtu.be/WhOTG-1wri8
No. 26381  
Forum max threads limit.webm - (2.55MB, 1920×1080)
26381
Добавил возможность ограничить количество тредов/постов с одного IP адреса за интервал времени. Опция board в значении true указывает считать количество тредов/постов в одном разделе, в значении false указывает считать количество тредов/постов по всему форуму.
No. 26387  
Не нужно удивляться, что тред с декабря 2020 года, а пилю простые функции, код переписывается с нуля после решения сделать АИБ расширяемой. У меня остался код той версии движка на которой работал сайт из ОП-поста, могу использовать этот код и интегрировать под новую расширяемую архитектуру.
No. 26389  
Forum max posts per thread.webm - (1.12MB, 1920×1080)
26389
Добавил возможность ограничить количество постов с одного IP-адреса в одном треде за интервал времени.
No. 26396  
local post id.webm - (820.84KB, 1920×1080)
26396
ID сообщения внутри раздела.
No. 26401  
>>26396
А что насчёт поддерживаемых разрешений прикладываемого к посту файла?
No. 26409  
>>26401
Не хочется нагружать страницу лишней информацией, легче написать "изображение" (jpg, png, bmp, gif, webp) за место "файл", разрешение для безопасности ограничено 5000х5000.
No. 26417  
Уникальный адрес для треда в виде /b/anime/higurashi.html (поддерживает любую вложенность), идентификатор поста в формате №порядковый_номер_треда_в_разделе/порядковый_номер_поста_в_треде, в случае удаления промежуточного поста в треде у последующих идентификатор не уменьшается на единицу. Насчёт идентификаторов постов предлагаю подискутировать, нужен такой формат или лучше стандартный?
No. 26420  
Normal post id.webm - (4.41MB, 1920×1080)
26420
Вернул нормальные ID сообщения, пруф.
No. 26428  
Forum news feed.webm - (1.75MB, 1920×1080)
26428
Новостная лента для разделов и тредов: https://youtu.be/APHI2lYeuqw
No. 26429  
Боковая панель, выбор шрифтов, определение адреса по заголовку + автоматическая генерация следующего id для адреса: https://youtu.be/Oomp12IH_yo
No. 26433  
Address by title.webm - (1.78MB, 1920×1080)
26433
Добавил возможность отключить поле с адресом.
No. 26435  
Бамплимит, автозакрытие треда после n постов, перелистывание.
No. 26491  
Tags.webm - (1.43MB, 1920×1080)
26491
Теги для треда: https://youtu.be/W74hmg7NxPg
No. 26778  
Создал блог посвящённый MaidBox:
https://maidbox.ru
No. 26779  
Создал блог посвящённый SimpleIB: https://simpleib.ru
No. 26780  
Домен https://symfony2ch.ru купил ещё раз, редиректит на https://cyber2ch.com, теперь там не MaidBox, а форк TinyIB.
No. 26785  
Создал разделы: /php/ /python/ /javascript/ /html/ /css/ /linux/ /windows/
На https://lainchan.ru нету, эксклюзив https://cyber2ch.com
Удалить сообщение []
Пароль  
[Mod]