ГЛАВНАЯ ТЕМА ФОРУМА

Перейти вниз

ГЛАВНАЯ ТЕМА ФОРУМА

Сообщение автор Gudleifr в Пт Мар 31, 2017 7:25 pm

В 1-й главе второго тома своих заметок я написал:
Конечно, многие из вас скажут, что есть гораздо более современные органайзеры. Пожалуйста! Я буду очень рад тому, что все о чем я буду писать у кого-то будет "летать со свистом".
Меня, наоборот, волнует, что у кого-то не будет возможности поиграть в это на своем компьютере. Самая минимальная конфигурация, которую я могу придумать: Perl + HTML. Даже, если у вас в наличии только планшет и выход в Сеть, вы можете создать бесплатный сайт и писать там CGI-Perl-программы в свое удовольствие. Для локальной Windows-работы придется поставить Perl и Apache (локальный эмулятор сетевой работы). В Linux они есть по умолчанию.
В третьей части своих записок я, надеюсь, предложу более удобный локальный Win-способ.

К сожалению, когда я столкнулся с окончанием срока годности хостинга, где жила моя страничка, я понял, что такая "минимальная конфигурация" для нашего времени - несбыточная мечта.

Ведь, что я имел абсолютно бесплатно на том хостинге?

* почти 20 лет практически бесперебойной работы
* CGI-Perl
* ssh (что позволяло писать CGI-скрипты даже на C, компилируя прямо на хосте)
* отсутствие всяких там "конструкторов" и "обезьянников", чистые ftp и scp меня вполне устраивали

В чем я был ограничен?

* только 100Мб дискового пространства (и за эти годы я почти исчерпал этот лимит)
* ограничения на размер файлов (я ни разу с этим не столкнулся)
* запрет хранить архивы и исполняемые файлы (я научился с этим бороться - см. FOBOS)
* ограничения на время работы скриптов и, наверное, на к-во каналов, процессов, памяти и т.д. (меня не интересовало)
* реклама доставала своей топорностью и непредсказуемостью поведения (ну, не сильнее, чем на современных платных хостингах)

Итак, тот хостинг подох, а нагуглить что-то приемлемое с ходу не удается (сплошь "наш условно-бесплатный хостинг обеспечивает условно-доступные сервисы", "все, что выходит за рамки социалок - злобное хакерство"...)
А я, дурак, написал "проще некуда"...
Так что чем раньше, кто-нибудь найдет хостинг не хуже моего старого, тем быстрее в Сеть вернуться материалы с моей странички.
А если, кто-то найдет 100%-рабочий способ быстрого, бесплатного и удобного получения Perl+HTML, тот решит не только мои проблемы...


Последний раз редактировалось: Gudleifr (Ср Июн 14, 2017 12:14 pm), всего редактировалось 1 раз(а)
avatar
Gudleifr
Admin

Сообщения : 725
Дата регистрации : 2017-03-29

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: ГЛАВНАЯ ТЕМА ФОРУМА

Сообщение автор Gudleifr в Вс Янв 21, 2018 7:34 pm

Что изменилось при переносе странички в формат форума?

Попытка переносить темы "один в один":
1) Практически полная потеря управления выложенными материалами. Все каталоги и справочники приходится хранить "где-то рядом" (т.е., практически "на бумажке"). Средства синхронизации и, даже просто поиска по форуму (да-да, местный рецепт использования кнопки "поиск" начинается словами: "достаньте где-нибудь модуль поиска") перенеслись в далекую перспективу.
2) Картинки приходится подгружать руками через сторонний ресурс, который, как и все подобные ресурсы, может взмахнуть ушами в любой момент.
3) Все мои серверные Perl- и C-скрипты придется переписывать как клиентские, на самом дегенеративном из известных мне языков - JavaScript. На нем нельзя "писать то, что надо сделать", но можно только "создавать объекты, похожие на те, что делают что-то подобное" ("Сложите из букв Ж, О, П, А слово СЧАСТЬЕ!"). Когда я этим займусь - неведомо.

Зато, почтовый сервер расщедрился и дал мне облако аж на 100Гб. Можно хранить что попало (чем я и воспользовался, заменяя мои OCR-ы отдельных статеек полными экземплярами книг и журналов).
4) Доступ к этим документам получился жутко неудобным - надо кликать на промежуточные экраны/диалоги. Причем, некоторые типы документов без спросу сразу загружаются в просмотрщик, нагружая трафик, хотя об этом их никто не просил.
5) Еще неприятнее, что доступ к "облачным ссылкам" доступен только просветленным обладателям последних версий браузеров.

В конце концов, я нашел "черный ход" - форум великодушно разрешил мне создавать свои HTML-странички. Немножко и совсем маленькие. Поэтому хотелось бы подгружать данные в них откуда-то извне. Из "облака" не получится (по причине #4). Остается сервер картинок. К счастью, GIF-формат позволяет хранить в своих блоках гораздо больше, чем одна или несколько картинок. При этом он остается вполне пригодным для хранения на картиночном сервере. Возможность упаковки в одну "картинку" целого документа частично решает и проблему #2 - восстанавливать вылетевшее большими кусками все-таки проще.
Остается только научить свой браузер не тупо выводить картинки на экран, но скачивать куда-то внутрь себя, а потом рисовать то, что нужно. При этом мы по полной огребаем по причинам проблем #3 и #5, но что-то можно получить.

Скачать сетевой файл в память можно при помощи XMLHttpRequest (не надо пугаться префикса XML, бинарные файлы качаются прекрасно, только для того, чтобы читать именно байты, а не символы, приходится их обернуть еще в пару фантиков).

<html><head><head><body>
<script>
function getXmlHttp(){
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
var req = getXmlHttp()
req.open('GET', 'URL-адрес', true);
req.responseType = "arraybuffer";
req.send(null);
req.onreadystatechange = function () {
if (req.readyState === 4) {
var buffer = req.response;
var dataView = new DataView(buffer);

// здесь можно при помощи dataView.getUint8(i)
// (где 0 <= i < dataView.byteLength)
// получать доступ к отдельным байтам и формировать из них HTML-страницу

}}
</script>
</body></html>

Вторую задачу - рисования на лету - можно решить при помощи замены сетевого имени файла рисунка его содержимым в формате base64.

var lm4 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var s = "";
for (var i=0; ; ) {
var c, r;
if (i==dataView.byteLength) break;
c = dataView.getUint8(i++); s += lm4[c>>>2]; r = (c&3)<<4;
if (i==dataView.byteLength) { s += lm4[r] + "=="; break; }
c = dataView.getUint8(i++); s += lm4[r|(c>>>4)]; r = (c&15)<<2;
if (i==dataView.byteLength) { s += lm4[r] + "="; break; }
c = dataView.getUint8(i++); s += lm4[r|(c>>>6)] + lm4[c&63]
}
document.open();
document.write("<img src=\"data:image/gif;base64," + s + "\" />");
document.close()

Страшно, но у меня работает. Работает ли у Вас? Нажмите на "Тест" в самом низу страницы форума. Если Вы увидите рисунок (из под него внизу торчит кусок другого), то пронесло...
avatar
Gudleifr
Admin

Сообщения : 725
Дата регистрации : 2017-03-29

Посмотреть профиль

Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения