Новинки компьютерных книг ->> JavaScript. Библия пользователя
Информационный Канал Subscribe.Ru |
ПредисловиеКак создатель JavaScript, я бы хотел сказать несколько слов о том, что такое JavaScript, откуда появился этот язык и для чего нужен, а также о том, как эта книга, которую читатель держит в руках, поможет ему освоить новые вершины программирования. JavaScript родился как плод неуемного желания предоставить разработчикам HTML-документов средства динамического управления всеми его объектами, которые описывались бы исключительно в коде Web-страницы. Теперь такой подход кажется простым и очевидным, но весной 1995 года это была весьма нестандартная идея, связанная с серьезными несоответствиями между принятыми прописными истинами (принципы стандартного HTML позволяют задавать только документы со статическими структурами) и принципами динамического изменения документов (имеются в виду аплеты Java, признанные единственным реальным способом "оживить" и расширить возможности Web-страницы). Раз уж пришлось затронуть подобные вопросы развития среды программирования Internet, давайте рассмотрим особенности языка JavaScript.
Вначале я полагал, что JavaScript найдет себе применение, прежде всего, в качестве средства ввода данных на HTML-формах. Но через некоторое время был удивлен, узнав, сколько дизайнеров, работающих с Web, используют его в своих задумках и применяют готовые JavaScript-приложения в HTML-документах для решения самых разнообразных задач. Web-дизайнеры давно искали способы быстрого и эффективного создания серьезных приложений с помощью минимального набора простых операторов. О популярности языка можно было судить по ответной реакции пользователей. В конечном счете разработчики, при весомой поддержке пользователей, настояли на реализации броузерной поддержки спецификации, известной под названием Dynamic HTML (Динамический HTML) (презабавнейшим образом она описана по адресу: http://www.javascript-games.org/). В то время как армия Web-разработчиков примерялась к возможностям JavaScript, стало явным несомненное преимущество среды создания сценариев над старым программным достоянием. Это относится не только к большой относительной простоте языков HTML и JavaScript, но также и к минимальным требованиям к разработчику Web-страниц. Ему не нужно обладать большим опытом программирования для управления изображениями, обработкой событий и создания красочных эффектов, что невозможно при создании больших приложений с помощью громоздких языков, программируемых традиционным способом. Превосходство JavaScript в Web сегодня подтверждает нашу безоглядную веру в ценность языка создания сценариев для разработчиков HTML-документов. Удерживая на низком уровне планку "требований", среда HTML, вместе с JavaScript, сделала дизайнерами миллионы обычных граждан. Позволяя "обрабатывать события", JavaScript помог тысячам дизайнеров стать настоящими программистами. Гарантом подобности Web-программирования и разработки сложных приложений является броузер Mozilla, в котором все элементы графического интерфейса и даже некоторые специальные элементы, а также программные модули полностью управляются средствами JavaScript, каскадных таблиц стилей (CSS), специальных языков, созданных на основе XML. JavaScript является общим языком, применимым даже вне среды HTML и XML. Он поддерживается многими серверами, инструментальными средствами автоматизации, надстройками броузеров, а также броузерами других типов (это касается даже таких, казалось бы, "отстраненных" концепций как, например, управление трехмерным текстом). Соответствующим международным стандартом является ECMA-262 (ISO 16262), он уже доработан до третьего издания. Но, по сравнению с такими языками, как Perl или даже Java, он все еще относительно молодой. Работа в рамках технического комитета ECMA над четвертой версией, в которой должны поддерживаться типы, классы, а также средства организации разработки новых поколений программных средств, идет полным ходом (посмотрите документацию в разделе JS2 на узле технической поддержки комитета ECMA по адресу http://www.mozilla.org/js/language/js20/). Совершенно очевидно, по крайней мере для меня, что JavaScript не удержался бы на плаву без продуктивной, лояльной и терпеливой поддержки консорциума разработчиков. Должен выразить им свою искреннюю признательность. Те из них, кто тестировал бетаверсию Navigator 2, распространял в виде почтовых сообщений и сообщений групп новостей жизненно важные доработки и затрагивал ключевые вопросы, по праву могут считаться крестными родителями языка. Поддержка разработчиков и постоянная обратная связь с конечными пользователями, как ничто иное способствует эклектичному и бурному успеху JavaScript. Книга, которую читатель держит в своих руках, вобрала в себя те "бессонные ночи", через которые прошли разработчики языка, плюс проницательность опытного эксперта и преподавателя. Дэнни не мог и предположить, какое сильное впечатление произведет на меня его книга о HyperCard. Именно она была моим настольным пособием в процессе создания JavaScript в 1995 году. Его энергия, участие и легкость изложения материала помогли мне удержаться в русле создания языка "для всех". Поэтому чрезвычайно приятно писать предисловие к четвертому изданию этой книги, которая стоит проведенных им "бессонных ночей". Настоятельно рекомендую всем, кто хочет освоить JavaScript, прочитать книгу Дэнни Гудмена JavaScript. Библия пользователя. Особенно это относится к тем, кто работает с HTML и успел "набросать" несколько сценариев или программ, - у вас есть уникальная возможность пройти по тернистой дороге создания сценариев вместе с опытным проводником и учителем.
Брендан Эйх (Brendan Eich) The Mozilla Organization (http://www.mozilla.org) ВведениеПримерно 20 лет назад я написал книгу, о которой давно думал и которая должна была помочь мне освоить и использовать новую технологию. Где только возможно, я стараюсь вникнуть в самые основы новых программных средств и средств разработки, почувствовать растущие достижения и разделить с читателями плоды своих усилий. Это четвертое издание книги Библия JavaScript призвано донести до читателя те знания и опыт, которые были наработаны в течение пяти лет каждодневной работы в JavaScript и постоянного поиска в группах новостей каверзных вопросов, нерешенных проблем и другого, достойного внимания разработчика сценариев. Моей целью является помочь читателю избежать тех разочарований и мучительной головной боли, которые в свое время испытал не только я сам, но и многие другие, кто работал с различными поколениями броузеров. В то время как предыдущие издания этой книги были в основном ориентированы на доминирующие в то время броузеры Netscape Navigator, современные тенденции развития броузерных технологий все больше указывают на преобладание Microsoft Internet Explorer. В то же самое время, Netscape удалось завершить превосходную задачу по восстановлению собственного броузера в свете быстрого развития стандартов индустрии. Как результат этих обеих тенденций, существенно пересмотренное и расширенное четвертое издание книги в равной степени ориентировано на оба типа броузеров, как на эквивалентные технологии, которые вполне соответствуют приоритетам пользователей. Читатель столкнется с моими похвалами или критикой разных версий броузеров и поддерживаемых ими технологий. Но мое самое страстное желание, на самом деле, - это научить читателя создавать документы и разрабатывать производительные сценарии, эффективно выполняемые в любой версии броузера. Поэтому книга содержит многочисленные детальные описания специальных и стандартных Организация и особенности этого издания Поскольку в последних версиях броузеров очень расширился список команд, которые могут использоваться в сценариях, наибольшие изменения в структуре книги внесены в справочные разделы. В этом издании можно обнаружить более четкое разграничение между описанием объектной модели документа и справочным разделом по базовому языку JavaScript. Новый подход должен помочь тем читателям, которые интересуются прежде всего языком JavaScript (для использования его в других приложениях), найти именно то, что их интересует в первую очередь. Ниже описаны некоторые структурные особенности книги. Часть IЧасть I этой книги начинается с главы, в которой показано, как JavaScript связан с Java, и обсуждается его роль в World Wide Web. С того момента, как на рынке Web-технологий впервые появился JavaScript, в броузерах Web и среде создания сценариев произошли существенные изменения. Поэтому глава 2 посвящена тем изменениям, которые наиболее существенным образом влияют на методы создания сценариев и в большей степени определяют быстро изменяющиеся стандарты приложений, поддерживаемые разными броузерами. В главе 3 вы совершите первое знакомство с основами JavaScript; после ее изучения вы сможете самостоятельно создать первый в своей жизни сценарий. Часть IIЧасть II полностью посвящена наставлениям для начинающих про-граммистов на JavaScript. В ней приведено девять уроков, позволяющих читателю последовательно изучить внутреннюю структуру броузера, освоить навыки программирования и познакомиться с основными принципами JavaScript. С помощью всего нескольких явно описанных элементов языка в этих уроках на высоком профессиональном уровне рассматривается весь диапазон принципов создания сценариев, выполняемых во многих броузерах, которые поддерживают технологию JavaScript. В конце каждого урока приведены упражнения, которые позволяют закрепить полученные знания и проверить качество их освоения читателем. Здесь же вы практически научитесь пользоваться изученными средствами (ответы можно найти в Приложении В). Целью этого учебного пособия является обогатить читателя достаточным опытом для создания простых страниц еще до того момента, как дело дойдет до всестороннего обсуждения сложных примеров, приведенных в конце книги. После изучения последнего урока части вы узна Часть IIIЧасть III - это наибольшая часть книги, которая посвящена всестороннему освещению объектных моделей документа, реализуемых в броузерах и обеспечивающих до настоящего времени средства создания динамических документов. Во всех справочных разделах совместимость описываемых средств JavaScript с разными версиями броузера задается в специальной таблице. Но одна глава книги заметно выделяется среди других. Это глава 15. Она содержит справочный материал, который используется практически во всех остальных главах части III. Часть IVВ части IV приведена справочная информация по базовому языку JavaScript. Как и в части III, эти главы содержат таблицы совместимости броузеров с описываемыми средствами языка JavaScript. Ключевые слова в нижней части страниц помогут читателю быстро отыскать нужный термин, описываемый выше на странице. Часть VВ части V обсуждаются вопросы развития JavaScript. Здесь рассматриваются некоторые специальные аспекты будущих технологий, имеющих непосредственное отношение к JavaScript. В главе 43 освещаются методы проверки данных формы на стороне клиента, а в главе 44 - совместное использование на страницах Java-аплетов и надстроек. Отладке сценариев посвящена глава 45. Здесь же описываются особенности управления сообщениями об ошибках, способы создания собственных средств отладки, а также использование отладчика Netscape. В главе 46 рассматриваются вопросы безопасности при выполнении сценариев JavaScript. Предметом обсуждения главы 47 стал динамический HTML в межброузерном исполнении, в то время как в главе 48 представлены разработки Microsoft для Windows. Оставшиеся девять глав содержат полностью отлаженные приложения JavaScript. Эти приложения не обязательно реализованы как внедряемые модули, которые можно непосредственно размещать на своей странице. Напротив, их главным назначением является демонстрация многообразия концепций, описанных выше в книге, на реальных примерах. Новым для этого издания является создание некоторых сценариев с помощью средств XML в Internet Explorer. Читатель может найти все главы части V на компакт-диске, который прилагается к этой книге. Часть VIНесколько приложений, приведенных в конце книги, предоставят неоценимый справочный материал. В них включена справка по JavaScript и объектам броузера (приложение А), список зарезервированных в JavaScript слов (приложение Б) и ответы на упражнения части II (приложение В). Прилагаемый компакт-дискУпоминавшийся компакт-диск содержит более 300 готовых к использованию HTML-документов, которые послужат примером создания Web-страниц в большинстве объектных моделей документа. Все они созданы с использованием зарезервированных слов JavaScript и методов, описанных в частях III и IV настоящей книги. Эти примеры можно запускать непосредственно в броузере, по умолчанию поддерживающем JavaScript. Однако при этом убедитесь, что в папке листингов как шлюз для их запуска используется страница index.html. Эта страница определяет те броузеры, которые совместимы с приведенными в папке листингами. Она содержит немного информации, но ознакомиться с ней перед запуском остальных сценариев будет нелишне любому пользователю. Просмотр полноценных HTML-документов (даже достаточно простых) просто необходим для полного усвоения всех описанных в книге принципов. Листинги из учебного раздела этой книги (часть II) умышленно опущены для привлечения читателя к самостоятельному написанию сценариев. Ведь многому можно научиться даже На компакт-диске приведено еще одно практическое обучающее средство: множество примеров, описанных в специальных разделах частей I и IV. Многие из этих разделов содержат детальное описание листингов HTML, которые иллюстрируют конкретные объектные модели или свойства языка. Большое число таких разделов призвано подтолкнуть читателя к тому, чтобы протестировать объектную модель на практике и познакомиться с особенностями языка. Эта задача решается благодаря интерактивному программному тестеру - The Evaluator - созданного специально для этой книги. В ходе его работы читатель может познакомиться с результатом использования средства на практике и получает детальные сведения о его эффективности. Справочное руководство из приложения А также представлено на диске в формате .pdf. Это позволяет, по желанию, распечатать его и использовать в качестве настольного пособия. На диске также содержится программа Adobe Acrobat Reader, позволяющая просматривать содержимое файлов в формате .pdf. Наконец, для упрощенного поиска на диске в том же формате представлен текст всей книги. Что нужно для изучения JavaScriptХотя для чтения этой книги совсем необязательно иметь за плечами огромный опыт программирования, но чем больше читатель создавал с помощью HTML Web-страницы, тем легче ему будет понять, как JavaScript взаимодействует с разными программными элементами, размещаемыми на странице. Иногда, чтобы ощутить все прелести написания сценариев, придется несколько видоизменять HTML-дескрипторы. Если вам ранее приходилось работать с этими дескрипторами, то изучение новых особенностей, добавляемых JavaScript, не представит для вас особых сложностей. В большинстве стандартных разработок JavaScript формы и их элементы (текстовые поля, кнопки и списки выбора) играют особенно важную роль. Читателю стоит особо внимательно познакомиться с этими элементами и их атрибутами в HTML. К счастью, вам нет необходимости разбираться в тонкостях составления серверных сценариев и способах отправки информации с формы на сервер. Здесь основной акцент делается на написании сценариев, выполняемых на стороне клиента, которые после полной загрузки броузером, поддерживающим JavaScript, в составе страницы управляются независимо от сервера. В ходе работы вам также необходимо знать основные стандарты HTML. Например, при описании основ управления фреймами, главный упор делается на написании сценариев для соответствующих структурных элементов, а не на методах оформления с их помощью готовых страниц. Более детально данная тема описана в источниках документации от Microsoft, Netscape и т.п. Для тех, кому не приходилось программироватьЕсли вы изучали азы работы в HTML несколько лет назад по тоненькому справочнику, то размеры этой книги могут просто обескуражить. Может быть, JavaScript далеко не самый простой для изучения язык в мире, но, вне всяких сомнений, он ни в какое сравнение не идет с такими фундаментальными средами программирования, как Java или С. В отличие от разработки законченных приложений (которые практически каждому из вас приходилось приобретать на компакт-дисках), с помощью JavaScript можно экспериментально создавать небольшие фрагменты программного кода, используемые в качестве компонентов более сложных программ. Интерпретатор JavaScript, встроенный в каждый броузер, поддерживающий сценарии, выполняет за пользователя большую часть черновой работы. Программирование, что касается основных его моментов, заключается в создании серии инструкций для выполнения их компьютером. Если проводить аналогию с повседневной жизнью, то люди постоянно следуют инструкциям, даже если сами этого не подозревают. Путешествие к дому друга является примером следования последовательности несложных инструкций: Пройти три квартала в одном направлении; возле аптеки повернуть налево; после прохождения ее повернуть направо. По ходу следования этим инструкциям вам приходится принимать определенные решения: если на светофоре горит красный свет, то нужно остановиться; если - зеленый, то нужно идти; если - желтый, то нужно приготовиться к движению или остановке. Время от времени некоторые действия приходится повторять по несколько раз (как, например, блуждание по кварталу в поисках заветной аптеки). Программа для компьютера содержит не только последовательность основных действий, но и предопределяет, какие решения принимать или какова повторяемость действий (как, например, реагироват Первым препятствием на пути к освоению азов программирования является та точность, с какой в языках программирования представлены в инструкциях слова и числа. Соответствующие правила, так же, как и в обычных языках, определяют синтаксис языка программирования. Хотя современные компьютеры являются весьма производительными, по своей натуре они до безобразия пунктуальны. Поэтому они не очень-то прощают, когда с ними разговаривают на непонятном для них языке. Когда вы разговариваете с другим человеком, то допускаете в предложении стилистические или синтаксические ошибки, но тем не менее, рассчитываете, что собеседник полностью поймет, о чем ему говорят. В большинстве случаев так и происходит. Совсем иначе дело обстоит с компьютерами. Если синтаксис не является идеальным (или, по крайней мере, не отклоняется от стандарта в пределах очевидной корректировки), компьютер самым нахальным образом заявит, что вами допущена синтаксическая ошибка. Оптимальным вариантом в такой ситуации является изучение допущенных синтаксических ошибок. Ведь даже самые опытные программисты делают ошибки. При таком подходе каждая допущенная синтаксическая ошибка добавляет знаний и опыта в программировании на используемом языке. Тем, кто уже немного программировалНаличие опыта работы с такими процедурными языками программирования, как BASIC или Pascal, может скорее вызвать головную боль, чем помочь в изучении JavaScript. Хотя можно иметь вполне надежные представления о синтаксисе языка, однако важно и то, что общая концепция выполнения программ в этих языках радикально отличается от принятой в JavaScript. Частично это определяется обычными задачами, решаемыми с помощью сценариев (программирование действий в ответ на выполняемые пользователем манипуляции на странице Web), но большой объем работы реализуется посредством объектно-ориентированного программирования. В типичной программе с использованием процедур программист непосредственно несет ответственность как за то, что появляется на экране, так и за те действия, которые непосредственно выполняются программой. При первом запуске программы огромная часть кода предназначена для того, чтобы определить графическую среду. На экране при этом может располагаться несколько текстовых полей и кнопок. Чтобы определить, на какой кнопке щелкнул пользователь, программа должна определить координаты точки, на которой был выполнен щелчок, а затем сравнить эти координаты на совпадение с координатами одной из кнопок на экране. Затем, в зависимости от того, какая кнопка используется, выполняются заранее определенные для текущего случая инструкции. Объектно-ориентированное программирование представляет собой не-что совершенно противоположное. Кнопка интерпретируется как объект - вещь вполне реальная. Объект имеет свойства, такие, как его надпись, размер, событие и тому подобное. Объект также может содержать сценарий. В то же время, системные программы и броузеры могут посылать объекту сообщения - в зависимости от того, что делает пользователь, - для запуска сценария. Например, если пользователь щелкает мышкой на записи текстового поля, то система или броузер сообщает полю, что кто-то щелкает там (это значит, что данное поле активизируется), передавая полю полномочия на предмет принятия решения, что ему следует делать в ответ на такое действие. Именно здесь в силу вступают сценарии. Сценарий связан с полем и содержит инструкции, которые выполняются при активизации поля. Другой набор инструкций может использоваться для контроля данных, вводимых пользователем в поле, или на вкладке, или в результате щелчка на опции. Некоторые из создаваемых сценариев по своей структуре могут напоминать процедуры: они содержат простые инструкции которые по-очередно выполняются. Однако когда вы перейдете к управлению данными формы, то поймете, что инструкции JavaScript выполняются исключительно как объектно-ориентированные. Каждая форма является объектом. Это же относится ко всякому элементу управления, например переключателю или текстовому полю. В этом случае для выполнения запланированной работы сценарий вызывает свойства соответствующих объектов. Переход от процедурного к объектно-ориентированному программированию может быть самым трудным моментом в обучении пользователя. Когда несколько лет назад мне самому пришлось столкнуться с объектно-ориентированным программированием, не могу сказать, что у меня все получилось хорошо. Но когда я прочувствовал саму концепцию, - а в этом помог напряженный и ответственный труд - в моей голове появилось столько "грандиозных" идей, что я думал, буду реализовать их еще много лет. С тех пор у меня сложилось убеждение, что объектно-ориентированное программирование является единственным целесообразным способом написания программ. Тем, кто программировал на СПо причине занудности синтаксиса Java (который, кстати сказать, походит от С и С++), в JavaScript можно найти много синтаксических характеристик С. Поэтому знакомые с языком С программисты будут чувствовать себя, как рыба в воде. Символы операторов, условные конструкции и циклы выдержаны исключительно в традициях С. При этом в JavaScript по сравнению с С нужно меньше беспокоиться о типах данных. В JavaScript задаваемые переменные не ограничены конкретным типом данных. Поскольку очень многое в синтаксисе JavaScript будет вам знакомо, то сконцентрируйтесь на концепциях объектной модели документа, что является абсолютно новым понятием для C-программиста. Кроме того, для реализации своих навыков в JavaScript на практике совсем нелишним окажется основательное изучение HTML (особенно это касается дескрипторов элементов форм). Для тех, кто работал в JavaНесмотря на очень похожие названия, данные языки имеют только по-верхностное сходство. Это касается организации циклов и условных конструкций, обращения к объектам с использованием точки, как это делается в С, фигурных скобок для выделения групп, некоторых ключевых слов и ряда других атрибутов. А вот что касается объявления переменных, то они совершенно различны. Такая ситуация имеет место потому, что JavaScript в этом смысле является достаточно прогрессивным языком. Переменная может содержать целочисленное значение с одной стороны оператора сравнения и строчные данные - с другой (хо-тя это и не всегда хорошо). В тех случаях, когда Java обращается к чему-то как к методу, JavaScript вызывает методы (когда они связаны с предопределенным объектом) или функции (для определенных в сценарии действий). Методы и функции JavaScript могут возвращать значения любых типов без предварительного их объявления. Возможно, при работе с JavaScript наиболее важным оставшимся от Java наследием является объектно-ориентированное представление о классах, наследовании, экземплярах и передаче сообщений. Эти понятия при написании сценариев просто неактуальны. Тем не менее, JavaScript-дизайнеры хорошо знают, что всегда нужно подстраховываться. Например, хотя в JavaScript и не требуется в конце каждой строки ставить точку с запятой, однако, если в исходном коде JavaScript парочка-другая их все же "проскакивает", то интерпретатор JavaScript от этого хуже работать не станет. Тем, кто писал сценарии и макросыОпыт создания сценариев с помощью других средств программирования или макросов в прикладных программах является существенным заделом при освоении всевозможных концепций JavaScript. Наиболее важной из них, пожалуй, является концепция комбинирования действий или обработки данных определенного типа с помощью нескольких операторов. Например, в Microsoft Excel можно написать макрос, который будет выполнять преобразование данных финансовых отчетов, поступающих из другого компьютера, для отображения в виде диаграмм. Макрос встраивается в меню Макрос, и запускать его нужно, выбрав соответствующую опцию меню, вне зависимости от того, когда поступают новые показатели. Более сложные сценарии, который можно создать с помощью Toolbook или HyperCard, максимально соответствуют объектно-ориентированной концепции JavaScript. В этих средах объекты экрана содержат сценарии, которые выполняются при взаимодействии пользователя с этими объектами. Большое число создаваемых в JavaScript сценариев будут выдержаны в рамках описанной ниже концепции. Фактически, эти среды напоминают оболочку выполняющего сценарии броузера в таком понимании, что обеспечивают использование набора предопределенных объектов, которые имеют фиксированные свойства и атрибуты. Эта предопределенность используется для строгого определения характеристик всей среды, а потому способствует более эффективному и производительному выполнению приложений. Соглашение о представлении данных и именЛистинги сценариев и их фрагменты представлены в этой книге специальным шрифтом. Это сделано для того, чтобы облегчить их нахождение на фоне остального текста. По причине ограниченности ширины страниц, строки в листингах иногда будут неестественным образом прерываться. В этих случаях разорванная строка продолжается на следующей строке, как это делается в текстовом редакторе при переносе слов. Если при введении сценария из-за этого у вас возникают проблемы, можно воспользоваться этим же сценарием, размещенным на компакт-диске, прилагаемом к книге. По мере того как читатель доберется до части III книги, может оказаться, что дальше, чем на одну страницу после описания объектных моделей или средств языка, требующих определенной версии броузеров, ему продвинуться не удастся. Чтобы указать, какой же в данном месте рассмотрения материала необходим броузер и его версия, используется двухсимвольная система аббревиатур с указанием числовой версии. Например, IE5 означает Internet Explorer 5 для всех операционных систем, а NN6 означает Netscape Navigator 6 опять же для всех операционных систем. Если сценарий или отдельное средство поддерживается определенной версией броузера и всеми последующими версиями, то после номера версии стоит знак (+). Например, если средство помечено как IE4+, то это означает, что для его поддержки вам потребуется как минимум Internet Explorer 4, но средство совместимо и с IE5, и с IE5.5 и так далее. Случается, что средство или некоторый атрибут применим только в определенной операционной системе. К примеру, если для средства использо Об автореДэнни Гудмен (Danny Goodman) - автор большого количества часто критикуемых, но всегда успешно продаваемых книг. Среди них такие популярные издания, как The Complete HyperCard Book, Danny Goodman's AppleScript Handbook и Dynamic HTML: The Definitive Reference. Он также является общепризнанным экспертом и высококлассным преподавателем в области языков программирования. Широкую известность Дэнни Гудмен приобрел после написание статьи JavaScript Apostle в информационном бюллетене ViewSource, издаваемом компанией Netscape. Талант писателя и опыт педагога приносят ему постоянные дивиденды со стороны как читателей, так и коллег по всему миру. Чтобы быть постоянно в форме и держать руку на пульсе событий, Дэнни частенько практикует как консультант по программированию и разработке узлов в паутине World Wide Web и других сетевых средах. Делает он это прямо из своей штаб-квартиры в Сан-Франциско (San Francisco). БлагодарностиХотелось бы выразить благодарность всем, кто помог мне подготовить очередное издание; а это Эрик Крок (Eric Krock), Том Пиксли (Tom Pixley), Видур Аппарао (Vidur Apparao), и особенно всегда терпеливый и всезнающий Брендан Эйх (Brendan Eich, Mozilla). А также Мартин Хонен (Martin Honnen, Netscape DevEdge Champion), Тантек Селик (Tantek Celik, группа Microsoft-разработчиков для Macintosh), Бренда Маклафлин (Brenda McLaughlin), Волт Брюс (Walt Bruce), Майкл Рони (Michael Roney), Дебра Вильямс Коули (Debra Williams Cauley), Нейл Романоски (Neil Romanosky), Эрик Ньюман (Eric Newman), Джерелинд Чарлз (Jerelind Charles), Виктория Ли О'Мэйли (Victoria Lee O'Malley, Hungry Minds, Inc.), технический редактор Дэвид Уолл (David Wall), "программный повар" Билл Дорх (Bill Dorch, hIdaho Design), Рэд (Red) и его друзья (Mars, Incorporated). Все, кто писал сценарии и давал всяческие советы по выявлению ошибок и проблем написания сценариев. Кроме того, хочу поблагодарить читателей первых трех изданий, которые выходили под н |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||