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

    Пора дать волю гипертексту и расширить возможности его распространения не только классическим клиент-серверным способом, но и в одноранговых сетях. Для того, чтобы воспринимался он в полной мере малыми усилиями, придется постараться вебмастеру. Для этого необходимо ресурсы, нужные для корректного отображения упаковать в 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 — Маяки и сообщения(личные, публичные и обновления)
    Share post

    Similar posts

    Comments 19

      0
      Что-то ни о чем. Так ждал продолжения и разочаровался.
        0
        Ну это ещё не всё. В статье с примерами как раз встроенные изображения и видео. Аудио не добавил. А чего примерно вы ожидали?
        0
        Вставлю свои три копейки — файл в base64 под виндой, ИМХО, удобнее всего сконвертить штатными средствами при помощи PowerShell одной строчкой:

        PowerShell -Command "[System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes('infile'))" > outfile
          0
          Я ещё пользовался base64
          0
          Ну мне главное суть рассказать и вариант реализации. А далее фантазия каждого. Главное что мы уже не завязаны на сервера. И даже к сети. Эти файлы можно передавать даже на флешке друг другу. Хотя система продуманна так что если файлы положить на сервер то и там они будут корректно работать даже без p2p. И p2p (Gnutella2, Трекер) можно прикрутить к серверу. Да ещё море возможностей. Ещё не на одну статью.
            +1
            Гипертекстовый фидонет?)
              0
              Ага )) Мне нравится мысль свободного обмена информацией. В дальнейшем планирую рассказать как можно организовать децентрализованный форум при помощи PGP и все тех же магнитов.
                0
                Ух ты ж блин, а ведь рабочая схема-то. Но всё-таки есть фундаментальный изъян — отсутствие поиска. Без поддержки гулом/яндексом/бингом/… это всё останется грудой файликов в глубинах торрент-сетей. Правда, I2P тоже живёт без поиска, и ничего.
                  0
                  это не единственный изъян, но один из важных
                    0
                    Ну ничто не мешает гуглу/яндексу/бингу/… индексировать их. То есть найдя одну из таких страничек он спокойно пойдёт дальше по относительным ссылками и найдет другие доступные странички на хосте (этим хостом может быть и пользователь shareaza).
                      0
                      пользователь > клиент
                    0
                    Не затягивайте, я баку решил писать на эту тему))))
                  0
                  Читать. Очень труден текст таковой пишите каким вы. Почемуто-ттщ
                    0
                    Вы про комментарии? Или про саму статью?
                      0
                      Про статью.
                    0
                    Если в тексте содержится p2p-магнет, то при изменении магнета измениться текст, а значит, измениться магнет на него и так далее, есть ли решение?(версии файлов, поиск...)
                      0
                      Да естественно при изменении текста или ссылок меняется (да любого байта в файле) магнит и новая версия выпадает из цепочки ссылок (это как защита от подделок). Но кроме магнита в комбинированной ссылке находится обычное имя файла и если заменить файл на более новую версию с тем же именем найдя её в поиске она заменит оригинал незаметно. Есть ещё вариант сделать iframe (или скрипт) который содержит актуальные магнитные ссылки на нужные страницы но этим не стоит злоупотреблять. Рекомендую в имени файла который может быть изменён использовать отпечаток подписи а сам файл подписывать. Соответственно можно будет проверить что файл от автора.
                      0
                      Очень сумбурно.
                      Это работает только если браузером будет выступать Shareaza?
                        0
                        Браузер можно использовать любой в сочетании с p2p клиентом для одной или нескольких из сетей Gnutella2, BitTorrent, Direct Connect, Edonkey2000. Shareaza удобно использовать для раздачи во все 4 сети. С небольшой настройкой Shareaza также может выступить и в роли простого веб-сервера.

                      Only users with full accounts can post comments. Log in, please.