Как стать автором
Обновить

Интернет на магнитах 2 — Гипертекст

Время на прочтение 4 мин
Количество просмотров 2.7K

Пора дать волю гипертексту и расширить возможности его распространения не только классическим клиент-серверным способом, но и в одноранговых сетях. Для того, чтобы воспринимался он в полной мере малыми усилиями, придется постараться вебмастеру. Для этого необходимо ресурсы, нужные для корректного отображения упаковать в HTML. Если со скриптами и стилями все понятно — их текст можно вставить содержимым соответствующих тегов script и style, для изображений уже необходима предварительная обработка.



Обработка изображения


Изображение необходимо сохранить в JPEG c включенным прогрессивным режимом, причем уровень сжатия нужно отрегулировать так, чтобы изображение выглядело хорошо не только при полной его загрузке, но и достаточно приемлемо в обрезанном варианте для IE (Ограничение в 32768 символов в data url). Для этого я, например, воспользовался IrfanView. При сохранении изображения ставим галочку на прогрессивном режиме(Save as progressive JPG). Дополнительно поставил галку на «Try to save with original JPG quality». Остальные все снял: не надо нам лишних данных в файле.


Воспользуемся Data Url


Теперь кодируем в base64 полученное изображение. Плагин MIME Tools для notepad++ прекрасно с этим справляется.


  1. Открываем файл изображения в Notepad++
  2. Правка -> Выделить всё
  3. MIME Tools -> Base64 encode
  4. Дописываем к полученному результату в начало «data:image/jpeg;base64,»
  5. Копируем и вставляем в HTML документ

<img src="data:image/jpeg;base64,/9j/4AAQS..." alt="" />

Другие форматы изображений надо стараться укладывать в рамки IE, то есть в 21830 байт в случае использования base64. Также не забываем поменять mime тип image/jpeg на соответствующий типу файла.


Имя файла гипертекста и внешних ресурсов


Требования:


  1. Уникальность имени — Имя файла надо выбирать с учётом того, что файл может оказаться в одной директории со множеством других. Для этого к имени можно добавить время создания или crc файла.
  2. Ваш уникальный префикс — имя файла желательно начать с имени автора (или другого ключа, который вы будете использовать для всех созданных страниц). Тем самым будет удобно сгруппировать файлы по автору.

03.04.2012  13:04           947 346 archimeta-ru-kryg-2012-04-03-13-04.mp4
03.04.2012  13:05         1 792 810 archimeta-ru-kryg-2012-04-03-13-04.ogv
03.04.2012  13:05         1 107 873 archimeta-ru-kryg-2012-04-03-13-04.webm
03.04.2012  14:28           243 432 ivan386-p2p-html-2012-04-03-13-04.html

Внешние ресурсы


К сожалению, не всё можно упаковать в один файл. При значительных размерах html могут возникать проблемы с производительностью браузера. Так что видео и аудио подкасты придется держать(и соответственно загружать) отдельно. Тем более для полной совместимости требуется 3 типа видео и 3 типа аудио (можно ещё конечно и wav по желанию).


У нас имеются все необходимые версии видео и аудио, прогоняем их через rhash и получаем комбинированный магнит для каждого.


Я, например, написал такой cmd файл:


%~d0
cd %~p0
rhash --torrent -p "%%f#magnet:?xt=urn:ed2k:%%e&xl=%%s&dn=%%u&xt=urn:tree:tiger:%%t&xt=urn:btih:%%{btih}" %1 %2 %3 %4 %5 %6 %7 %8 %9 | clip
		

Комбинированный магнит прям в буфер обмена и торрент файл рядом. Правда clip с висты появился, поэтому к старой доброй ХП нужна отдельная утилита. Ну или старый добрый способ:


rhash --torrent -p "%%f#magnet:?xt=urn:ed2k:%%e&xl=%%s&dn=%%u&xt=urn:tree:tiger:%%t&xt=urn:btih:%%{btih}" %1 %2 %3 %4 %5 %6 %7 %8 %9 > temp.txt
notepad temp.txt
		

archimeta-ru-kryg-2012-04-03-13-04.mp4#magnet:?xt=urn:ed2k:e803fe1127ad3cd20bc335bbd17c6c8b&xl=947346&dn=archimeta-ru-kryg-2012-04-03-13-04.mp4&xt=urn:tree:tiger:tm6z5ohogst2qsmbq2awl7dz4niz2dokzawz5jq&xt=urn:btih:884162be8064f3bf10e524a0b03fc0e3e796c56f

Также Shareaza умеет делать магниты по шаблону (если файл уже расшарен его не надо будет второй раз обрабатывать).


Можно было бы отдельно дать магнит на файл, но лучше разделить их скриптом. Так магнит жёстко привязан к ресурсу, и понятно, что это один файл. Это в дальнейшем позволит автоматизировать процесс загрузки. В магните можно указать и прямую ссылку на файл на сервере (см. Веб ссылка на файл(as, xs)).


Скорей всего, открыв страницу с видео в первый раз, сам видеофайл ещё не будет лежать на диске, и его только предстоит загрузить. Поэтому в свойстве preload тега video ставим none, а в свойство poster вставляем data url с кадром из видео или любым другим контентом, чтобы заполнить пустующее место.


Ну, собственно, в source теги записываем наши комбинированные магниты в порядке mp4, webm, ogv.


<video id="movie" width="640" height="480" preload="none" controls="controls" poster="data:image/jpeg;base64,/9j/4AAQSkZJRgA...">
	<source src="archimeta-ru-kryg-2012-04-03-13-04.mp4#magnet:?xt=urn:ed2k:e803fe1127ad3cd20bc335bbd17c6c8b&xl=947346&dn=archimeta-ru-kryg-2012-04-03-13-04.mp4&xt=urn:tree:tiger:tm6z5ohogst2qsmbq2awl7dz4niz2dokzawz5jq&xt=urn:btih:884162be8064f3bf10e524a0b03fc0e3e796c56f&as=http://derevo.archimeta.ru/video/kryg/kryg.mp4" />
	<source src="archimeta-ru-kryg-2012-04-03-13-04.webm#magnet:?xt=urn:ed2k:bba8e1f790f667ac53403cd5d8797edb&xl=1107873&dn=archimeta-ru-kryg-2012-04-03-13-04.webm&xt=urn:tree:tiger:ffmycgrdaxsnvtg4oqdpg5nmesjvlo5xkgg3qdq&xt=urn:btih:870d0cf99445258193947d055674efc5fe2bbb67&as=http://derevo.archimeta.ru/video/kryg/kryg.webm" type='video/webm; codecs="vp8, vorbis"' />
	<source src="archimeta-ru-kryg-2012-04-03-13-04.ogv#magnet:?xt=urn:ed2k:a44f88787b879fa3b0b6493509e989f9&xl=1792810&dn=archimeta-ru-kryg-2012-04-03-13-04.ogv&xt=urn:tree:tiger:5tvhqhlv4rj7mss4kzwkmc4ujn43uz26vlbdhjq&xt=urn:btih:787ef1f3dedc36dfbf20f0d1e946be5b4b1ee580&as=http://derevo.archimeta.ru/video/kryg/kryg.ogv" type='video/ogg; codecs="theora, vorbis"' />
</video>

Когда наша p2p веб страничка готова, аналогичным способом делаем на неё комбинированный магнит и публикуем его. Естественно, если вы публикуете её на внешнем ресурсе, то имеет смысл воспользоваться только магнитом.


Не забываем, что для того чтобы была возможность получить вашу страничку и ресурсы, её надо расшарить в p2p сетях. На данный момент для этого хорошо подходит клиент Shareaza т.к. поддерживает несколько сетей.


Ну, вот, думаю, пора и закончить вторую часть статьи, а то я её уже и так долго продержал на своём диске.


Эта статья с примерами

Интернет на магнитах 1 — Магнит
Интернет на магнитах 2 — Гипертекст
Интернет на магнитах 3 — P2P Сайт и Форум
Интернет на магнитах 4 — Делим магнит на части
Интернет на магнитах 5 — Маяки и сообщения(личные, публичные и обновления)
Теги:
Хабы:
+7
Комментарии 19
Комментарии Комментарии 19

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн