Тема: JS: Откуда начинать копать?
Не шарю в области скриптов и т.д.
Не, в скриптах я, может, и шарю, но меня совершенно подавляет обилие (новых) технологий. Столкнулся с JavaScript после того, как моя старая страничка подохла, и вместо прекрасно работающих ftp, ssh и perl скриптов я вдруг оказался гордым обладателем убогого форума.
Что изменилось при переносе странички в формат форума?
Попытка переносить темы "один в один":
1) Практически полная потеря управления выложенными материалами. Все каталоги и справочники приходится хранить "где-то рядом" (т.е., практически "на бумажке"). Средства синхронизации и, даже просто поиска по форуму (да-да, местный рецепт использования кнопки "поиск" начинается словами: "достаньте где-нибудь модуль поиска") перенеслись в далекую перспективу.
2) Картинки приходится подгружать руками через сторонний ресурс, который, как и все подобные ресурсы, может взмахнуть ушами в любой момент.
3) Все мои серверные Perl- и C-скрипты придется переписывать как клиентские, на самом дегенеративном из известных мне языков - JavaScript. На нем нельзя "писать то, что надо сделать", но можно только "создавать объекты, похожие на те, что делают что-то подобное" ("Сложите из букв Ж, О, П, А слово СЧАСТЬЕ!"). Когда я этим займусь - неведомо.
Зато, почтовый сервер расщедрился и дал мне облако аж на 100Гб. Можно хранить что попало (чем я и воспользовался, заменяя мои OCR-ы отдельных статеек полными экземплярами книг и журналов).
4) Доступ к этим документам получился жутко неудобным - надо кликать на промежуточные экраны/диалоги. Причем, некоторые типы документов без спросу сразу загружаются в просмотрщик, нагружая трафик, хотя об этом их никто не просил.
5) Еще неприятнее, что доступ к "облачным ссылкам" доступен только просветленным обладателям последних версий браузеров.
В конце концов, я нашел "черный ход" - форум великодушно разрешил мне создавать свои HTML-странички. Немножко и совсем маленькие. Поэтому хотелось бы подгружать данные в них откуда-то извне. Из "облака" не получится (по причине #4). Остается сервер картинок. К счастью, GIF-формат позволяет хранить в своих блоках гораздо больше, чем одна или несколько картинок. При этом он остается вполне пригодным для хранения на картиночном сервере. Возможность упаковки в одну "картинку" целого документа частично решает и проблему #2 - восстанавливать вылетевшее большими кусками все-таки проще.
Остается только научить свой браузер не тупо выводить картинки на экран, но скачивать куда-то внутрь себя, а потом рисовать то, что нужно. При этом мы по полной огребаем по причинам проблем #3 и #5, но что-то можно получить.
Как я это делал, описал в "заметках": http://gudleifr.forum2x2.ru/t70-topic#861
...
Там я столкнулся с тем, что на JavaScript нельзя просто "взять и написать". Любую фигульку нужно долго гуглить и потом дорабатывать напильником. Мои двадцать строчек скрипта моментально превратились в двести:
Итак, (написанная ранее) программа, из которой я буду делать JavaScript просмотрщик базы данных, состоит из плясок с бубном вокруг пяти интерфейсов:
1. XMLHttpRequest - открытие файла для чтения.
2. DataView - работы с байтовым массивом.
3. data:image/gif;base64 - вывода картинки прямо из текста.
4. base64 - перекодировки байтов картинки в этот формат.
5. Свойства объекта document - формирование нового содержимого документа.
Для просмотрщика (3) и (4) пока не нужны. Отрезаю. Вместо них вставляю
6. Самописный перекодировщик байтов из файла в кодировку utf-8.
Ну, пока можно остановиться и переписать на JavaScript, то, что мы писали на BASIC.
Конечно, после каждой новой строки перевыводил HTML для проверки. Стоило изменить зараз несколько строк, все падало замертво, и приходилось откатывать назад.
Попытался, заодно, почитать книжку по JavaScript, но меня быстро вытошнило.
Пришлось вспомнить как рисовать в HTML деревья:
7. Всякие style, onmouseover, onclick и прочая фигня (когда-то очень давно выломал из какой-то гостевой).
Вроде, дерево грузится. Можно грузить остальной HTML-обвес.
8. Все делаю самым простым способом - HTML-рамочками.
Макросы, таблицы и картинки пока реализовывать не буду (хотя, все, что для этого нужно, уже есть).
Осталось самое последнее - засунуть всю базу данных в GIF-формат. К сожалению в процессе обнаружилось, что хранилище картинок, которое на халяву прицеплено к моему форуму, не жрет GIF-ы более 1Mb.
9. Пока шифровать не буду, поэтому нужен только сам GIF-формат.
И что? Мы видим, что одно только перечисление технологий, нужных для встраивания программы в нашу операционную систему, весит столько же, сколько сама программа.
...
И что я изначально делал неправильно?
Ведь, дело не в том, что я не могу найти книжку "по XMLHttpRequest", но я не знаю заранее, что именно он мне нужен. Какая связь между тем, что мне надо от браузера и тем, откуда надо начинать копать? Где можно найти меню подходящих технологий?