Author Topic: Почините форум…  (Read 11056 times)

0 Members and 1 Guest are viewing this topic.

Offline ashirzhan

  • Posts: 868
  • Gender: Male
Reply #475 on: February 12, 2019, 08:40
Тут вроде все живы, а в группе Тюркские языки кроме меня и TestamentumTartarum больше никого нет. :o :donno:

Offline RawonaM

  • Posts: 42811
Reply #476 on: February 12, 2019, 11:14
Ведь только в SMF сумели это сделать
Один известный здесь форум работает на MyBB и там новые сообщения отслеживаются.
Ведь только в SMF сумели это сделать, для phpBB оказалось непосильной задачей. Хотя может за эти годы что-то изменилось.
Вроде сделано. Там есть "Непрочитанные сообщения" и отдельно "Новые сообщения".
Точно там работает так, что все темы навсегда отслеживаются? Раньше было только с последнего визита или еще какие-то ограничения. Впрочем в MyBB припоминается тоже вроде хорошо отслеживалось, по-моему поэтому я его выбрал для какого-то проекта.

Все-равно было бы интересно если бы кто-то объяснил как это работает, т.к. там по идее огромное количество данных, но как-то это умещается в относительно небольшую таблицу.

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

Offline Bhudh

  • Posts: 54290
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
Reply #477 on: February 12, 2019, 12:04
я бы порекомендовал посмотреть изменения с 2.0.11 до 2.0.15
SMF 2.0.15                                                    November 19, 2017
===============================================================================

September 2017
 ! Fixed a minor $smcFunc bug in Search-Fulltext.php
 ! Fixed a saving Settings.php bools being reset bug
 ! Fixed a security issue (Reported by Daniel Le Gall from SCRT SA)

June 2017
-------------------------------------------------------------------------------
 ! Cache the admin search results in the session and avoid IE's 2083 character limit
 ! Fixed a Mark Board Read bug

May 2017
-------------------------------------------------------------------------------
 ! Fixed Proxy URLs not handling redirects properly due to case sensitivity
 ! Fixed SendTopic using incorrect Post data
 ! Fixed SSI.php having a bad login panel
 ! Fixed Maintenance Page having a double login button
 ! Fixed a minor unsigned int typo in MySQL DB
 ! Fixed Deprecated installer message for ftp_connection.
 ! Fixed a loop bug in custom search
 ! Fixed SM Stat collection
 ! Added SM Stat collection registration to the Admin Control Panel

SMF 2.0.14                                                         May 14, 2017
===============================================================================
 ! Updating session handlers
 ! Adding HTTPS
 ! fetch_web_data now uses cURL, falling back to sockets
 ! Ported image proxy support from SMF 2.1
 ! Also added HTTPS for avatars
 ! Added a simple exception handler
 ! Check session while logging in
 ! Sanitize some fields to help guard against XSS
 ! Validate email addresses with PHP’s filter method
 ! Fix search highlighting to not mangle/expose some HTML
 ! Fix password acceptance when special characters were used in UTF-8;
 ! Correct some random logic errors in the profile area
 ! Use ampersands instead of semi-colons for PayPal’s return link
 ! Fix sending multiple MIME-Version headers in notification mail
 ! Fix sending multipel Content-Type headers in all requests

SMF 2.0.13                                                      January 4, 2017
===============================================================================
 ! Some file versions didn't get modified in the 2.0.12 patch
 ! Added check and sanitization for $_REQUEST['u'] in LogInOut.php and Reminder.php
 ! Added check and sanitization for $_REQUEST['uid'] in Reminder.php
 ! Properly sanitize author's website for packages
 ! Added session check when uploading packages
 ! Added session check when copying template files from one theme to another
 ! The code to remove empty BBCode was sometimes breaking things (reported by @rjen; fix provided by Sesquipedalian)
 ! Remove hardcoded limits for safe_unserialize as it was causing cache problems
 ! Update the cal_max_year setting to 2030

SMF 2.0.12                                                         July 7, 2016
===============================================================================
 ! Fixed word censor injection by disallowing an empty 'proper word'
 ! Fixed vulnerable unserialize() code by converting all instances to safe_unserialize()
 ! Added a more thorough safe_unserialize() function to prevent object injection
 ! Fixed a bug where leaving a custom profile field blank on registration that has an email mask would throw an error
 ! Fixed PayPal integration to comply with the new forced SSL
 ! Fixed a bug where notifications were sent for messages in inaccessible boards
 ! Fixed editor to make the editor work with Microsoft Edge
 ! Fixed issue where smiley popup is blank on iOS 9 devices
 ! Fixed WYSIWYG editor in mobile devices
 ! Fixed an undefined $_POST['icon'] in Sources/Post.php
 ! Fixed a minor bug in Login2()
 ! Fixed an issue where SMF doesn't recognize new domain names and considers these as invalid
 ! Fixed an issue where SMF would allow empty BBC
 ! Fixed an issue where theme variants could not be selected
 ! Fixed an issue where the file version of Subs-Post.php could have been 2.0.8 or 2.0.11. It will be updated to 2.0.12 in either case.
 ! Updated copyright year to 2016
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline RawonaM

  • Posts: 42811
Reply #478 on: February 12, 2019, 12:44
! Fixed a Mark Board Read bug
Единственное что бросается в глаза, что может затрагивать эту функциональность, но как-то маловероятно.

Offline Bhudh

  • Posts: 54290
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
Reply #479 on: February 12, 2019, 12:48
Что-то не могу понять, что из этого патча под этим имеется в виду :-\.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Reply #480 on: February 12, 2019, 12:51
Но скорее всего вот это:
Quote from: ./Sources/ManageServer.php
Code: (PHP) [Select]
/**
 * Registers the site with the Simple Machines Stat collection. This function
 * purposely does not use updateSettings.php as it will be called shortly after
 * this process completes by the saveSettings() function.
 *
 * @see Stats.php SMStats() for more information.
 * @link https://www.simplemachines.org/about/stats.php for more info.
 *
 */
function registerSMStats()
{
global $modSettings, $boardurl, $smcFunc;

// Already have a key?  Can't register again.
if (!empty($modSettings['sm_stats_key']))
return true;

$fp = @fsockopen('www.simplemachines.org', 80, $errno, $errstr);
if ($fp)
{
$out = 'GET /smf/stats/register_stats.php?site=' . base64_encode($boardurl) . ' HTTP/1.1' . "\r\n";
$out .= 'Host: www.simplemachines.org' . "\r\n";
$out .= 'Connection: Close' . "\r\n\r\n";
fwrite($fp, $out);

$return_data = '';
while (!feof($fp))
$return_data .= fgets($fp, 128);

fclose($fp);

// Get the unique site ID.
preg_match('~SITE-ID:\s(\w{10})~', $return_data, $ID);

if (!empty($ID[1]))
{
$smcFunc['db_insert']('replace',
'{db_prefix}settings',
array('variable' => 'string', 'value' => 'string'),
array('sm_stats_key', $ID[1]),
array('variable')
);
return true;
}
}

return false;
}
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Reply #481 on: February 12, 2019, 12:52
Кстати, а разве в тэге [code] не должно быть подсветки синтаксиса? :what:
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline wandrien

  • Posts: 6595
Reply #482 on: February 12, 2019, 12:54
Точно там работает так, что все темы навсегда отслеживаются? Раньше было только с последнего визита или еще какие-то ограничения.
С последнего - это как раз "новые". А непрочитанные - я вижу сейчас на своём форуме 20 страниц непрочитанных, начиная с 2012-го года. Как раз примерно в то время серьёзно апгрейдили движок. Думаю, это действительно все.

Все-равно было бы интересно если бы кто-то объяснил как это работает, т.к. там по идее огромное количество данных, но как-то это умещается в относительно небольшую таблицу.
Здравый смысл подсказывает, что нужно делать денормализацию и кэшировать результаты в отдельной таблице. В чем-то быстром типа memcached. Ну или в Redis.
Как это сделано в SMF пока не смотрел. Там куча многоэтажных запросов SQL с созданием временных таблиц, и весь код - сплошная простыня на несколько тысяч строк. А - архитектура.

Как я уже рекомендовал, попробуйте сбросить непрочитанные сообщения для одного юзера, решит ли это проблему. Если нет, попробовать сбросить для всего форума (чревато гневом форумчан).
Из того, что я разобрал в структуре таблиц - "простое" (автоматическое) отслеживание прочитанного и ручное - это 2 разных механизма. Глючит именно первое, поэтому второе не поможет.
Там есть отдельные таблицы для данных вида "тема отмечена прочитанной" и "раздел отмечен прочитанным". Их обработка не затрагивает отслеживание прочитанного при обычном открытии топика.

Касательно проблемы с редактируемыми сообщениями, я бы порекомендовал посмотреть изменения с 2.0.11 до 2.0.15, ведь после них появилась эта проблема. Я вроде код видел, по-моему там ничего затрагивающего это нет, поэтому я сомневаюсь, что проблема в апдейте, но другого логического объяснения не вижу.
Я тоже смотрел и тоже ничего криминального не заметил. Посмотрю сегодня еще.

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

Reply #483 on: February 12, 2019, 12:56
Кстати, а разве в тэге [code] не должно быть подсветки синтаксиса? :what:
Черт знает, но если её нет в движке, можно прикрутить готовое стороннее решение на JS, благо их полно.

Reply #484 on: February 12, 2019, 13:00
Но скорее всего вот это

Это что-то связанное с:

 ! Fixed SM Stat collection
 ! Added SM Stat collection registration to the Admin Control Panel

Offline RawonaM

  • Posts: 42811
Reply #485 on: February 12, 2019, 13:02
Из того, что я разобрал в структуре таблиц - "простое" (автоматическое) отслеживание прочитанного и ручное - это 2 разных механизма. Глючит именно первое, поэтому второе не поможет.
Там есть отдельные таблицы для данных вида "тема отмечена прочитанной" и "раздел отмечен прочитанным". Их обработка не затрагивает отслеживание прочитанного при обычном открытии топика.
Не понял как эти два типа различаются? Как это не затрагивает, если топик помечается прочитанным, когда заходишь в топик? Я тут тоже попробовал посмотреть, зашел в одну тему, а в таблице ничего не изменилось. Где же эта инфа?
Я вижу только log_mark_read, есть еще какая-то таблица?


Reply #486 on: February 12, 2019, 13:09
Вот например что говорит такая запись в log_mark_read:
Quote
id_boardid_memberid_msg
47623111220
?

Member 2 это я. Сообщение 3111220 вообще не в боарде 476. Других записей про этот боард нет, хотя там часть у меня прочитана, часть нет.

Offline Bhudh

  • Posts: 54290
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
Reply #487 on: February 12, 2019, 13:12
Это что-то связанное с:

! Fixed SM Stat collection
А что это, кстати, вообще за хрень, введённая, кстати, именно в 2.0.15?
SMF-овский аналог вендовской телеметрии?
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline wandrien

  • Posts: 6595
Reply #488 on: February 12, 2019, 13:14
Не понял как эти два типа различаются? Как это не затрагивает, если топик помечается прочитанным, когда заходишь в топик?
Интерфейсно суть одна, а механика под капотом разная.

Где же эта инфа? Я вижу только log_mark_read, есть еще какая-то таблица?

log_mark_read
log_topics
log_boards

И временная таблица: log_topics_unread

Reply #489 on: February 12, 2019, 13:15
SMF-овский аналог вендовской телеметрии?
Ага.
Все погромисты очень хотят о нас всё знать.

Offline Bhudh

  • Posts: 54290
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
Reply #490 on: February 12, 2019, 13:19
Все погромисты очень хотят о нас всё знать.
Может, потереть этот патч к чертям собачьим?
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline wandrien

  • Posts: 6595
Reply #491 on: February 12, 2019, 13:20
Все погромисты очень хотят о нас всё знать.
Может, потереть этот патч к чертям собачьим?
Оно вроде отключается в настройках.

Offline mnashe

  • Administrator
  • *
  • Posts: 43647
  • Gender: Male
Reply #492 on: February 12, 2019, 13:20
Черт знает, но если её нет в движке, можно прикрутить готовое стороннее решение на JS, благо их полно.
Ну или просто [spoiler][php][/php][/spoiler].
שָׁלוֹם עֲלֵיכֶם!

Offline Bhudh

  • Posts: 54290
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
Reply #493 on: February 12, 2019, 13:26
Оно вроде отключается в настройках.
Ну хвала магистрам, не полный аналог…
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline RawonaM

  • Posts: 42811
Reply #494 on: February 12, 2019, 13:33
Черт знает, но если её нет в движке, можно прикрутить готовое стороннее решение на JS, благо их полно.
Ну или просто .
Да, php тэг работает.

Offline wandrien

  • Posts: 6595
Reply #495 on: February 12, 2019, 13:38
Из того, что я разобрал в структуре таблиц - "простое" (автоматическое) отслеживание прочитанного и ручное - это 2 разных механизма.
Почитал код.
Вроде, был не прав.

Но тогда таблица log_mark_read остаётся загадкой. Буду копать дальше.

Reply #496 on: February 12, 2019, 14:22
Нашел пасхалку.


   // You are not!
   if (isset($_POST['message']) && strtolower($_POST['message']) == 'i am the administrator.' && !$user_info['is_admin'])
      fatal_error('Knave! Masquerader! Charlatan!', false);

Offline RawonaM

  • Posts: 42811
Reply #497 on: February 12, 2019, 14:38
i am the administrator.

Reply #498 on: February 12, 2019, 14:39
А что, правда вылетает?

Offline Bhudh

  • Posts: 54290
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
Reply #499 on: February 12, 2019, 14:39
А ты ваще читор.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Note: this post will not display until it's been approved by a moderator.
Name: Email:
Verification:
Type the letters shown in the picture
Listen to the letters / Request another image
Type the letters shown in the picture:
√49 Напишите ответ строчными буквами:
«Сто одёжек, все без застёжек» — что это?: