darth_vasya: (Default)
[personal profile] darth_vasya
(На правах предисловия.) Раз уж я весь из себя такой кладезь знаний по части айфона, буду время от времени делиться, в надежде на то, что кто-нибудь придёт сюда по наводке поисковиков и приобщится заодно ко всяким другим интересностям. </foreword>

Как известно, нормальная читалка формата fb2 для айфона только одна, да и та в App Store, и её бесплатная версия может качать книги только с одного-единственного демонстрационного сайта, ручная же загрузка в неё файлов с компьютера невозможна. Правила App Store на этот счёт строги.

Итак, инструкция:
1. Ставим на джейлбрейкнутый айфон с установленным и настроенным (см. Прил. А) веб-сервером lighttpd программу ShortBook LE из App Store.
2. Закачиваем файл в формате fb2, не нарушающий ничьих авторских прав, в ~/Media/ или куда у вас указывает корень веб-сервера.
3. Дописываем в файл /etc/hosts строку:
127.0.0.1<TAB>www.shortki.com
4. Запускаем ShortBook LE, жмём "Добавить книгу" (плюсик), и "качаем" файл в формате fb2, не нарушающий ничьих авторских прав, из своего домашнего раздела в песочницу читалки.
5. Радуемся тому, как тонко отечественным разработчикам удалось предоставить всем желающим возможность закачивать в свою программу любые файлы, не нарушив при этом правил App Store :)

Приложение А: настройка lighttpd

После установки сервера из репозиториев нужно задать ему конфигурационный файл и настроить запуск сервера при загрузке телефона. Версия lighttpd для системы 2.x, если я правильно помню, автоматически запускалась сама, и даже чуть ли не с конфигурацией по умолчанию поставлялась, а вот на 3.x уже пришлось поковыряться самому. Вот файлы, которыми пользуюсь я:

/etc/lighttpd.conf:

server.document-root = "/var/mobile/"
# server.port = 80 # Default
#server.bind = "127.0.0.1" # Default: All
server.modules = ( "mod_cgi" )
server.tag = "iPhone lighttpd"

#server.pid-file            = "/var/run/lighttpd.pid"

accesslog.filename = "/var/log/lighttpd/access.log"
server.errorlog = "/var/log/lighttpd/error.log"

dir-listing.activate = "enable"
index-file.names = ( "index.php", "index.py", "index.pl", "index.cgi", "index.html", "default.html" )
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".cgi", ".py" )

cgi.assign = ( ".pl"  => "/usr/bin/perl", ".py" => "/usr/bin/python", ".rb" => "/usr/local/bin/ruby", ".cgi" => "", ".sh" => "" )

mimetype.assign             = (
    ".pdf"          =>      "application/pdf",
    ".sig"          =>      "application/pgp-signature",
    ".spl"          =>      "application/futuresplash",
    ".class"        =>      "application/octet-stream",
    ".ps"           =>      "application/postscript",
    ".torrent"      =>      "application/x-bittorrent",
    ".dvi"          =>      "application/x-dvi",
    ".gz"           =>      "application/x-gzip",
    ".pac"          =>      "application/x-ns-proxy-autoconfig",
    ".swf"          =>      "application/x-shockwave-flash",
    ".tar.gz"       =>      "application/x-tgz",
    ".tgz"          =>      "application/x-tgz",
    ".tar"          =>      "application/x-tar",
    ".zip"          =>      "application/zip",
    ".mp3"          =>      "audio/mpeg",
    ".m3u"          =>      "audio/x-mpegurl",
    ".wma"          =>      "audio/x-ms-wma",
    ".wax"          =>      "audio/x-ms-wax",
    ".ogg"          =>      "application/ogg",
    ".wav"          =>      "audio/x-wav",
    ".gif"          =>      "image/gif",
    ".jpg"          =>      "image/jpeg",
    ".jpeg"         =>      "image/jpeg",
    ".png"          =>      "image/png",
    ".xbm"          =>      "image/x-xbitmap",
    ".xpm"          =>      "image/x-xpixmap",
    ".xwd"          =>      "image/x-xwindowdump",
    ".css"          =>      "text/css",
    ".html"         =>      "text/html",
    ".htm"          =>      "text/html",
    ".js"           =>      "text/javascript",
    ".asc"          =>      "text/plain",
    ".c"            =>      "text/plain",
    ".cpp"          =>      "text/plain",
    ".log"          =>      "text/plain",
    ".conf"         =>      "text/plain",
    ".text"         =>      "text/plain",
    ".txt"          =>      "text/plain",
    ".dtd"          =>      "text/xml",
    ".xml"          =>      "text/xml",
    ".mpeg"         =>      "video/mpeg",
    ".mpg"          =>      "video/mpeg",
    ".mov"          =>      "video/quicktime",
    ".qt"           =>      "video/quicktime",
    ".avi"          =>      "video/x-msvideo",
    ".asf"          =>      "video/x-ms-asf",
    ".asx"          =>      "video/x-ms-asf",
    ".wmv"          =>      "video/x-ms-wmv",
    ".bz2"          =>      "application/x-bzip",
    ".tbz"          =>      "application/x-bzip-compressed-tar",
    ".tar.bz2"      =>      "application/x-bzip-compressed-tar",
    # default mime type
    ""              =>      "application/octet-stream",
)

Фактически, это дефолтный файл с настроенными путями к корневой директории сервера и логам. Директорию /var/log/lighttpd/ нужно создать руками.

/System/Library/com.lighttpd.plist:

<plist version="1.0">
<dict>
    <key>Label</key>
    <string>lighttpd</string>
    <key>Program</key>
    <string>/usr/sbin/lighttpd</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/lighttpd-angel</string>
        <string>-f/etc/lighttpd.conf</string>
        <string>-D</string>
    </array>
    <key>RunAtLoad</key>
    <true></true>
    <key>OnDemand</key>
    <false></false>
    <key>KeepAlive</key>
    <dict>
        <key>SucessfulExit</key>
        <false></false>
    </dict>
</dict>
</plist>

Здесь нужно указать свой путь к конфигурационному файлу (у меня /etc/lighttpd.conf). После перезагрузки lighttpd будет работать, и даже сам подниматься заново после падений.


Ещё одна хорошая читалка называется GoodReader, она платная, но ничего лучше для txt и (частично) pdf пока не нашлось. Своих пяти (ЕМНИП) долларов вполне стоит.

Date: 2010-01-11 03:54 pm (UTC)
From: [identity profile] sabotagecat.livejournal.com
Эталонно через жопу :-)

Date: 2010-01-11 04:00 pm (UTC)
From: [identity profile] darth-vasya.livejournal.com
Зато ни копейки не платим и не воруем софт! 8)

Date: 2010-01-11 04:15 pm (UTC)
From: [identity profile] sabotagecat.livejournal.com
Вот он, прогресс - чтобы спиздить книжку, поднимаем веб-сервер на телефоне :-)

Date: 2010-01-11 04:19 pm (UTC)
From: [identity profile] darth-vasya.livejournal.com
Спокойствие, книжка ничьих авторских прав не нарушает, это очень важный момент туториала, иначе ничего работать не будет! ;)

А веб-сервер изначально поднимался для того, чтобы локально хранимые pdfники в браузере читать. У меня ещё и вики-сервер поднят, кстати! :b

Date: 2010-01-11 09:36 pm (UTC)
From: [identity profile] darth-vasya.livejournal.com
А, и опять же, с веб-сервером можно своё файло людям сливать прямо по вайфаю, без кабелей и драйверов. Ну это так, вдогонку :)

Date: 2010-01-11 06:48 pm (UTC)
From: [identity profile] vinslivins.livejournal.com
АААААААААААААААААААААААААААААААААААААААААААААА

Date: 2010-01-11 06:49 pm (UTC)
From: [identity profile] vinslivins.livejournal.com
НЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕТ

неееееееет.

неет.

только не это. лучше квантовые компьютеры. лучше религия. только не так. это грех!

Date: 2010-01-11 09:34 pm (UTC)
From: [identity profile] darth-vasya.livejournal.com
а что, собсна? я честно разобрался сам, это оригинальный рецепт, так сказать. такая редкость в наше время. пост с большой буквы пэ, можно сказать - кстати, а что насчёт инвайта? ^^

Date: 2010-01-11 09:32 pm (UTC)
From: [identity profile] darth-vasya.livejournal.com
)))))))))))

Profile

darth_vasya: (Default)
darth_vasya

August 2016

S M T W T F S
 123456
7891011 1213
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 10th, 2026 10:20 pm
Powered by Dreamwidth Studios