От оригинального создателя и от Mozilla, теперь уже не разобраться, косячков оставалось прилично.
Самая досадная ошибка выглядела так (Показать/Скрыть)
Код
switch ($expiry_flag)
{
case 'd';
$expires="DATE_ADD(NOW(), INTERVAL 1 DAY)";
break;
case 'f';
$expires="NULL";
default:
case 'm';
$expires="DATE_ADD(NOW(), INTERVAL 1 MONTH)";
break;
}
Когда спохватился, уже потерял 500 исходников, в том числе программы, которые в демонстрационных целях специально закреплял сбоку. Как нашёл, поправил, но былого не вернуть. Поборол демотивацию от работы с PHP и восстановил программы только вчера. Ещё заметил, что из-за чьих-то кривых рук функция запоминания настроек работала отнюдь не так, как мне бы хотелось:
Спойлер (Показать/Скрыть)
Код
list($poster,$last_format,$last_expiry)=explode('#', $_COOKIE["persistName"]);
//clean and validate the cookie inputs
$data['poster']=$this->_cleanUsername($poster);
$data['last_format']=$this->_cleanFormat($last_format);
$data['last_expiry']=$this->_cleanFormat($last_expiry);
По идее, в конце должен быть _cleanExpiry, иначе expiry, восстановленный из кук, становится "text", в то время, как валидные значения — это "d", "m", "f". Конечно, невалидное значение "text" позже всё равно приводится к одному из валидных, и не факт, что вам, если вы вебмастер, это понравится.
Как общий принцип, по умолчанию теперь всё отправляется на вечное хранение. К счастью, кто-то продолжает постить, и уже на 900 постов набили. Чтобы это хорошо индексировалось в поисковиках, неплохо бы сделать листаемый список всех записей.
В School Pak по умолчанию включены проверки стека, диапазонов и переполнений, что соответствует идеологии языка Ада. А в Онлайне эти предпочтения не были продублированы ключами компилятора, и поведение программ могло отличаться. Теперь это исправлено.
Автор JS-DOS пишет мне, что в последних версиях em-dosbox уже научились справляться с блокировками ввода (ReadLn без Crt). С оригинальным JS-DOS была такая проблема, что там скрипт em-dosbox загружался через XHR и отправлялся в eval, что не давало кешировать скомпилированный asm.js, так что у нас кодовые базы разошлись. Также, JS-DOS расчитывает получить на вход zip с файловой системой, а в Turbo Pascal Онлайн один из файлов каждый раз разный. Чтобы с сервера сравнительно большой файл не перекачивать каждый раз, он грузится XHR и остаётся в кеше браузера, а на его основе в браузере каждый раз делается блоб, в котором в прорезь вставлен исходник и пересчитан CRC32. Если научиться самостоятельно работать с em-dosbox, всё это можно достигать более оптимально. Не тратить память браузера на блобы и обрезки блобов хотя бы. А можно даже и сохранение файлов реализовать и захват вывода программы. Так что текущие особенности — не навсегда.