avva: (Default)
[personal profile] avva
(эта запись будет в основном интересна программистам)

PDF Reference 1.7, by Adobe Inc.

Эта книга, скажу сразу, не для нетерпеливых. Ее объем - 1310 страниц - может отпугнуть; если не считать приложений и индекса, выходит чуть меньше тысячи страниц (правда, некоторые из приложений необходимы, чтобы понять суть происходящего в главном тексте). Как обычно для книг в этом жанре, рекомендуется читать ее вдумчиво и внимательно; отдельные главы или разделы можно пропускать, но никогда не знаешь заранее, сошлется ли на них текст в других главах.

Полное исследование этого сложного постмодернисткого романа должно ждать своего автора; я всего лишь опишу некоторые частности, особенно привлекшие мое внимание.

В целом книга написано ясным, доходчивым языком. Каждое предложение, взятое в отдельности, почти всегда понимается легко и однозначно. Завихрения и разветвления смысла умело внесены автором на более высоком уровне организации текста - тем, как отдельные предложения соединяются в подразделы, разделы и главы. Если приглядеться к каждой отдельной строке - все понятно; если попытаться посмотреть на всю главу целиком - голова идет кругом. Добиться мастерства в этом эффекте очень нелегко, и автор заслуживает всяческих похвал.

На первый взгляд, нарратив книги - вполне линейный; повествование плавно перетекает из главы в главу, от введения, к общему обзору, затем "Синтаксис", "Графика", "Текст" итд. Но если внимательней присмотреться, то становится очевидной иллюзорность этой стройной линейности. Тесная сеть перекрестных ссылок пронизывает тело книги, и прыгают эти ссылки то вперед, то назад, не заботясь особенно о том, что уже известно читателю, а что нет. Это создает замечательное ощущение дезориентации, но само по себе еще недостаточно для того, чтобы считать эту книгу шедевром постмодернисткого романа. Для того, чтобы эту дезориентацию закрепить и многократно усилить, автор последовательно применяет три приема.

Во-первых, изобретательная терминология. Так, читатель должен различать stream objects и object streams - два совершенно разных понятия. При этом object stream являeтся видом stream object, но не наоборот. Object stream может также содержать внутри себя другие объекты, но не stream objects.

Во-вторых, обязательное наличие более одного способа добиться одного и того же результата, а желательно - более двух. Эта тема развивается в книге постоянно и последовательно. Так версию PDF можно указать в первой строке файла, а можно - в отдельном словаре. Есть два стандартных фильтра для кодирования двоичных данных в ASCII. Два стандартных способа записать строку-литерал. Два совершенно разных механизма для индексации объектов внутри файла. Два способа указать множество разных графических и текстовых параметров - специальными командами или в специальном словаре параметров (имена команд и имена ключей в словаре различаются). Итд. итп., этот список можно продолжать очень долго.

В-третьих, тонкое введение исключений из общего правила в разнообразных частных случаях. Ни одно универсальное правило не может быть без исключений - таков неофициальный лозунг романа. Скажем, все нумерованные объекты в файле определяются так: [число] [число] obj [содержимое объекта] endobj. Кроме того случая, когда объект хранится внутри object stream, тогда все точно так же, только "obj" и "endobj" выкидываются. Скажем, все идентификаторы внутри файла, т.е. названия чего угодно: ключей в словарях данных, поименованных картинок или секций документа, шрифтов, итд. итп. начинаются с символа /. Кроме одного исключения: названия графических и текстовых команд не начинаются с /. И так далее, и так далее.

В заключение особенно отмечу тот факт, что сквозь все это мастерское жонглирование постмодернистскими темами и символами в романе тем не менее ясно выделяются определенные темы, которые можно было бы назвать в чем-то старомодными, традиционными, гуманными. Во-первых, принцип "терпенье и труд все перетрут" снова и снова демонстрируется в тексте, как например в этом отрывке из секции 3.5.2: "Do the following 50 times: Take the output from the previous MD5 hash and pass it as input to a new MD5 hash".

Во-вторых, следующая идея остается одной из центральных идей PDF Reference 1.7: никогда не поздно переменить что-то к лучшему, никогда не поздно исправиться. Секция 3.4.5, Incremental Updates, вся целиком посвящена этой теме и тому, как содержимое практически любой части PDF-файла можно изменить, добавив в конец файла определенный "апдейт", не меняя то, что в файле уже записано. Многие другие разделы и главы возвращаются к этой теме, поясняя, как такие сочетаются с другими возможностями формата. В итоге читатель не может не проникнуться глубоко гуманистическим духом этой сложной, вычурной, грандиозной по своему замыслу книги.

Date: 2010-05-27 11:15 pm (UTC)
From: [identity profile] amigofriend.livejournal.com
Sounds like a нобелевка!

Date: 2010-05-27 11:19 pm (UTC)
alexeybobkov: (Default)
From: [personal profile] alexeybobkov
как содержимое практически любой части PDF-файла можно изменить, добавив в конец файла определенный "апдейт", не меняя то, что в файле уже записано

А поскольку сам этот документ тоже имеет формат PDF, возможно, в нём можно что-нибудь найти ещё и на этом метауровне.

Date: 2010-05-27 11:19 pm (UTC)
From: [identity profile] ygam.livejournal.com
http://web.archive.org/web/20041015142404/http://www.coyotesong.com/poi/

POI stands for Poor Obfuscation Implementation. Why would we name our project such a derogatory name? Well, Microsoft's OLE 2 Compound Document Format is a poorly conceived thing. It is essentially an archive structured much like the old DOS FAT filesystem. Redmond chose, instead of using tar, gzip, zip or arc, to invent their own archive format that does not provide any standard encryption or compression, is not very appendable and is prone to fragmentation.

Poi is also a Hawaiian delicacy that Merriam Webster's dictionary defines as: "A Hawaiian food of taro root cooked, pounded, and kneaded to a paste and often allowed to ferment." This seemed strangely descriptive of the file format.

Date: 2010-05-28 01:03 am (UTC)
From: [identity profile] lifewalker.livejournal.com
Так вот почему оно так называется... Названия субкомпонентов тоже хорошие, в духе HWPF (Horrible Word Processor Format).

(no subject)

From: (Anonymous) - Date: 2010-05-28 11:42 am (UTC) - Expand

Date: 2010-05-27 11:39 pm (UTC)
From: [identity profile] carpet-god.livejournal.com
это все отвратительно, зато пдфы хорошо и удобно нынче печатаются. за это их и любим.

конечно, можно было круче и мощнее, и проще и элегантней, но никто не сделал, а поезд ушел, а новый пока не приехал.

(no subject)

From: (Anonymous) - Date: 2010-05-28 09:37 am (UTC) - Expand

(no subject)

From: [identity profile] carpet-god.livejournal.com - Date: 2010-05-28 09:55 am (UTC) - Expand

(no subject)

From: [identity profile] nec-p1us-u1tra.livejournal.com - Date: 2010-05-28 10:32 am (UTC) - Expand

(no subject)

From: [identity profile] carpet-god.livejournal.com - Date: 2010-05-28 12:18 pm (UTC) - Expand

(no subject)

From: [personal profile] nine_k - Date: 2010-05-28 10:16 pm (UTC) - Expand

(no subject)

From: [identity profile] carpet-god.livejournal.com - Date: 2010-05-28 10:32 pm (UTC) - Expand

Date: 2010-05-27 11:59 pm (UTC)
From: [identity profile] pingva.livejournal.com
а дай-ка я попробую угадать -- ты читаешь это, чтоб ответить на вопросы, которые ты задавал в сообщении на тему "ненавижу компьютеры"?

если догадка верно, интересно -- удалось ли найти ответы?

Date: 2010-05-30 11:40 am (UTC)
From: [identity profile] recontemplator.livejournal.com
Я так понял, что вот это был спойлер: "Do the following 50 times: Take the output from the previous MD5 hash and pass it as input to a new MD5 hash."

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2010-05-30 11:49 am (UTC) - Expand

Date: 2010-05-28 01:20 am (UTC)
From: [identity profile] nedosionist.livejournal.com
>>ясным, доходчивым языком...изобретательная терминология....различать stream objects и object streams
Чему тут удивляться; как обычно,
Streams are objects, objects nest, and an object stream is but a stream holding objects, so object stream is a stream is a stream object is an object; but streams don't nest, so a stream holds objects but not streams, and so no stream object as a stream can hold object streams as they are streams.

С т.з. языка же, злоупотребления одинаковыми прилагательными, причастиями и существительными не ограничивается ни адобе, ни английским. Ср. рядовой русский и русский рядовой.

Date: 2010-05-28 01:22 am (UTC)
From: [identity profile] moon-aka-sun.livejournal.com
This book (http://www.amazon.com/Million-Random-Digits-Normal-Deviates/dp/0833030477/) has great reviews too:

"Such a terrific reference work! But with so many terrific random digits, it's a shame they didn't sort them, to make it easier to find the one you're looking for."

"It starts with an innocent 10097, rapidly succeded by 32533. The reader has no idea if 10097 will ever appear again, and that's the thrilling part. I won't spoil the story, so if you want to know whether 10097 is repeated, buy the book."

"If you like this book, I highly recommend that you read it in the original binary. As with most translations, conversion from binary to decimal frequently causes a loss of information and, unfortunately, it's the most significant digits that are lost in the conversion."

"A great read. Captivating. I couldn't put it down. I would have given it five stars, but sadly there were too many distracting typos. For example: 46453 13987. Hopefully they will correct them in the next edition."

"While the printed version is good, I would have expected the publisher to have an audiobook version as well. A perfect companion for one's Ipod."

Date: 2010-05-28 01:24 am (UTC)
From: [identity profile] cema.livejournal.com
Прекрасная рецензия. Спасибо. :-)

Date: 2010-05-28 01:27 am (UTC)
From: [identity profile] nedosionist.livejournal.com
>>прыгают эти ссылки то вперед, то назад ... замечательное ощущение дезориентации ... книгу шедевром постмодернисткого романа
Но это же reference, архетипичный жанр гипертекста. Как же еще их писать? Постмодернистский роман, да, заимствует эту структуру. Проблемы возникают от перевода гипертекста в линейную структуру.

Date: 2010-05-28 02:21 am (UTC)
From: [identity profile] selfmade.livejournal.com
ну что, есть желающие написать простой и лёгкий pdf killer?

Date: 2010-05-28 03:26 am (UTC)
From: [identity profile] deni-ok.livejournal.com
Рука не поднимется - лишить актуальности такой памятник постмодернизма.

postscript

From: (Anonymous) - Date: 2010-05-28 06:47 am (UTC) - Expand

Re: postscript

From: [identity profile] alexott.livejournal.com - Date: 2010-05-28 08:01 am (UTC) - Expand

Re: postscript

From: (Anonymous) - Date: 2010-05-28 09:42 am (UTC) - Expand

Re: postscript

From: [identity profile] alexott.livejournal.com - Date: 2010-05-28 10:05 am (UTC) - Expand

Re: postscript

From: (Anonymous) - Date: 2010-05-28 10:36 am (UTC) - Expand

Re: postscript

From: [identity profile] alexott.livejournal.com - Date: 2010-05-28 11:15 am (UTC) - Expand

Re: postscript

From: (Anonymous) - Date: 2010-05-28 11:48 am (UTC) - Expand

Re: postscript

From: [identity profile] alexott.livejournal.com - Date: 2010-05-28 11:59 am (UTC) - Expand

Date: 2010-05-28 02:32 am (UTC)

Date: 2010-05-28 05:30 am (UTC)
From: [identity profile] oxfv.livejournal.com
Говорят, psd еще круче. Те, кто знают понаслышке, рассказывают ужасное, а те, кто по-настоящему погрузился, уже навсегда молчат.

Date: 2010-05-28 06:48 am (UTC)
From: [identity profile] toyvo.livejournal.com
Я кажется один из приквелов этого читал. По началу был впечатлен работой автора. Теперь, оказывается, в его творчестве полно ремейков. Обидно.

Date: 2010-05-28 07:25 am (UTC)
From: [identity profile] trueblacker.livejournal.com
как из ушата окатили

(no subject)

From: [identity profile] toyvo.livejournal.com - Date: 2010-05-28 07:30 am (UTC) - Expand

Date: 2010-05-28 07:30 am (UTC)
From: [identity profile] motya.livejournal.com
Смех смехом, но это нормально для формата, поддерживающего совместимость, развивающегося и писавшегося большой группой разработчиков. Тем более, что вырос он из постскрипта, которому лет больше, чем тебе. Оно просто не может быть по-другому.

Date: 2010-05-28 11:53 am (UTC)
From: [identity profile] status-constr.livejournal.com
"...нормально для ... поддерживающего совместимость, развивающегося и писавшегося большой группой разработчиков ... вырос он из ..., которому лет больше, чем тебе. Оно просто не может быть по-другому."

UNIX ?

(no subject)

From: [identity profile] motya.livejournal.com - Date: 2010-05-28 03:27 pm (UTC) - Expand

(no subject)

From: [identity profile] status-constr.livejournal.com - Date: 2010-05-28 06:03 pm (UTC) - Expand

(no subject)

From: [identity profile] faceted-jacinth.livejournal.com - Date: 2010-05-28 08:29 pm (UTC) - Expand

(no subject)

From: [identity profile] status-constr.livejournal.com - Date: 2010-05-29 04:20 am (UTC) - Expand

(no subject)

From: [identity profile] mfi.livejournal.com - Date: 2010-05-28 11:57 pm (UTC) - Expand

(no subject)

From: [identity profile] wakes-up.livejournal.com - Date: 2010-05-28 12:20 pm (UTC) - Expand

(no subject)

From: [identity profile] motya.livejournal.com - Date: 2010-05-28 03:27 pm (UTC) - Expand

Date: 2010-05-28 08:00 am (UTC)
From: [identity profile] alexott.livejournal.com
и еще отсылки к PostScript Reference... Разбираясь с PDF можно понять, почему они конкретную вещь сделали данным образом, но реализовать это - крайне тяжело

Date: 2010-05-28 08:00 am (UTC)
From: [identity profile] smilga.livejournal.com
Object stream и stream object — это чем-то напоминает немецкую пару Baumnuss (грецкий орех) и Nussbaum (ореховое дерево, на котором он растёт).

Date: 2010-05-29 07:00 am (UTC)
From: [identity profile] drauk.livejournal.com
Если верить викепедии, то это швейцаризм, на хох дойче он Echte Walnuss.

И кстати это явно лучше чем в английском, где Walnut это и дерево и плод.

(no subject)

From: [identity profile] smilga.livejournal.com - Date: 2010-05-29 12:48 pm (UTC) - Expand

(no subject)

From: [identity profile] ygam.livejournal.com - Date: 2010-06-01 04:27 am (UTC) - Expand

Date: 2010-05-28 08:19 am (UTC)
From: [identity profile] ig0ris.livejournal.com
интересно...
а про размер - мне после прочтения стандарта OpenXML уже ничего не страшно

Date: 2010-05-28 09:12 am (UTC)
From: [identity profile] vodianoj.livejournal.com
В твоей рецензии тяжело отделить критику языка от критики книги :-). Это всё таки не одно и тоже.

Date: 2010-05-28 09:26 am (UTC)
From: [identity profile] olegs.livejournal.com
а жизнь есть текст (С)
From: [identity profile] scolar.livejournal.com
Одна моя приятельница однажды сказала: "Нас испортил постмодернизм: читала недавно сборник рассказов, а думала, что читаю роман". Всё же, тексты, описывающие нечто эволюционировавшее столь долгий срок, следует воспринимать как нарратив, и опять-таки не в постмодернистском, а в историческом значении этого слова, примерно как монастырские летописи не то записывающие историю, не то творящие её.

Date: 2010-05-28 02:51 pm (UTC)
From: [identity profile] pesec.livejournal.com
MS Word и PDF почти полностью умертвили TeX, и, соответственно, формат DVI. А было б проще...

Date: 2010-05-29 07:38 am (UTC)
From: [identity profile] dmpogo.livejournal.com
Кому как, а кому ТеX живее всех живых. DVI вот умертвился, да, но он уже лет 20 как был в основном промежуточной ступенью, сначала к Postcript, а теперь к PDF.

(no subject)

From: [identity profile] the-aaa13.livejournal.com - Date: 2010-05-30 12:23 am (UTC) - Expand

(no subject)

From: [identity profile] dmpogo.livejournal.com - Date: 2010-05-30 02:18 am (UTC) - Expand

(no subject)

From: [identity profile] dmpogo.livejournal.com - Date: 2010-05-30 02:21 am (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2010-05-30 05:55 am (UTC) - Expand

Date: 2010-05-28 04:59 pm (UTC)
From: [identity profile] akho.livejournal.com
У XPS всего 453 страницы.

Date: 2010-05-28 10:43 pm (UTC)
From: [identity profile] egorfine.livejournal.com
Когда я столкнулся с документацией на SIP чат (описание стандарта - 100500 страниц или чуть меньше), я тоже погрузился, а потом сказал что мы этот стандарт поддерживать не будем.

The fun part? Этот стандарт называется "SIP SIMPLE".

Date: 2010-05-31 05:00 am (UTC)
From: [identity profile] ktoyatakoi.livejournal.com
програмил в одной софтинке чтение incremental updates, могу подтвердить что в Adobe не любят легких путей. Сейчас пересекся со внутренностями их AMF(Action Message Format), убедился в этом еще раз.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 28th, 2025 07:53 pm
Powered by Dreamwidth Studios