Язык "C" является универсальным языком программирования. Он тесно связан с операционной системой "UNIX" , так как был развит на этой системе и так как "UNIX" и ее программное обеспечение написано на "C". Сам язык , однако, не связан с какой-либо одной операционной системой или машиной; и хотя его называют языком системного программирования, так как он удобен для написания операционных систем , он с равным успехом использовался при написании больших вычислительных программ, программ для обработки текстов и баз данных.
Язык "C" - это язык относительно "низкого уровня". В такой характеристике нет ничего оскорбительного; это просто означает, что "C" имеет дело с объектами того же вида, что и большинство ЭВМ, а именно, с символами, числами и адресами. Они могут объединяться и пересылаться посредством обычных арифметических и логических операций, осуществляемых реальными ЭВМ.
В этой книге вы найдете ряд задач, примеров, алгоритмов, советов и стилистичес- ких замечаний по использованию языка программирования "C" (Си) в среде операционной системы UNIX. Здесь собраны этюды разной сложности и "штрихи к портрету" языка Си. Также описаны различные "подводные камни" на которых нередко терпят крушение новички в Си. В этом смысле эту книгу можно местами назвать "Как не надо программировать на Си". В большинстве случаев в качестве платформы используется персональный компьютер IBM PC с какой-либо системой UNIX, либо SPARCstation 20 с системой Solaris 2 (тоже UNIX svr4), но многие примеры без каких-либо изменений (либо с минимумом таковых) могут быть перенесены в среду MS DOS[**], либо на другой тип машины с системой UNIX. Это ваша ВТОРАЯ книга по Си. Эта книга не учебник, а хрестоматия к учебнику. Она не является ни систематическим курсом по Си, ни справочником по нему, и предназ- начена не для одноразового последовательного прочтения, а для чтения в несколько про- ходов на разных этапах вашей "зрелости". Поэтому читать ее следует вместе с "настоя- щим" учебником по Си, среди которых наиболее известна книга Кернигана и Ритчи. Эта книга - не ПОСЛЕДНЯЯ ваша книга по Си. Во-первых потому, что кое-что в языке все же меняется со временем, хотя и настал час, когда стандарт на язык Си наконец принят... Но появился язык C++, который развивается довольно динамично. Еще есть Objective-C. Во-вторых потому, что есть библиотеки и системные вызовы, которые раз- виваются вслед за развитием UNIX и других операционных систем. Следующими вашими (настольными) книгами должны стать "Справочное руководство": man2 (по системным вызо- вам), man3 (по библиотечным функциям). Мощь языка Си - в существующем многообразии библиотек. Прошу вас с первых же шагов следить за стилем оформления своих программ. Делайте отступы, пишите комментарии, используйте осмысленные имена переменных и функций, отделяйте логические части программы друг от друга пустыми строками. Помните, что "лишние" пробелы и пустые строки в Си допустимы везде, кроме изображений констант и имен.
К сожалению, выбор компилятора часто обусловлен, опять-таки, идеологией и соображениями вроде "его все используют". Конечно, среда разработки Microsoft Visual C++ несколько более удобна, чем у портированного gcc - но это ведь вовсе не значит, что релиз своего продукта вы должны компилировать с использованием MSVC++. Используйте оболочку, компилируйте промежуточные версии на MSVC++ (кстати, время компиляции у него гораздо меньше, чем у gcc), но релиз можно собрать с использованием другого компилятора, например от Intel. И, в зависимости от компилятора, можно получить прирост в производительности на 10% просто так, на ровном месте. Но какой "правильный" компилятор выбрать, чтобы он сгенерировал максимально быстрый код? К сожалению, однозначного ответа на этот вопрос нет - одни компиляторы лучше оптимизируют виртуальные вызовы, другие - лучше работают с памятью.
Синтаксис и команды JavaScript можно разделить на несколько категорий в зависимости от их назначения и использования. Объекты представляют собой блоки, из которых строится JavaScript. Они применяются для возвращения значений и изменения состояния форм, страниц, броузера и определенных программистом переменных. Объекты можно сопоставить с существительными. Кошка, автомобиль, дом, компьютер, форма - все это существительные, они могут быть представлены как объекты (см. раздел «Объекты»). Мы используем свойства для того, чтобы различать объекты одного класса - например, всех объектов типа кошка. Свойства сравнимы с прилагательными и ссылаются на уникальные для каждого экземпляра объекта особенности.
Этот краткий (предположительно, 16 часов, из которых 6 - практические занятия) вводный курс предназначен для ознакомления с архитектурой, особенностями и основными средствами ОС UNIX. При успешном освоении, курс позволит свободно и продуктивно работать в ОС UNIX в качестве пользователя и продолжить изучение администрирования или программирования этой операционной системы.
Изложение ведется, в основном, без привязки к особенностям какой-либо версии UNIX, но при необходимости конкретизации, она делается для систем SVR4, в частности, ОС Solaris 8.
В последней версии (1.2, 11 марта 2004 года) обновлена хронология основных событий в истории ОС UNIX.
Состав компьютерного оборудования, используемого в офисе, традиционен и определяется типичными задачами, стоящими перед сотрудниками. Современный бизнес требует автоматизации бухгалтерской деятельности и складского учета, выписки счетов и получения (отправления) сообщений в электронном виде поставщикам и заказчикам. Для эффективной работы сотрудников, рационального использования компьютерного оборудования и создается локальная вычислительная сеть (ЛВС). Как правило, в офисе устанавливается один сервер, рабочие станции, несколько сетевых принтеров, один-два модема для выхода в интернет, получения и отправки электронной почты, факсов и электронных платежей, внутренняя АТС на 16/24. В качестве среды передачи в настоящее время в офисных ЛВС преимущественно используется неэкранированная витая пара 5-й категории (UTP).
В последнее время резко возрос интерес к программированию. Это связано с развитием и внедрением в повседневную жизнь информационно-коммуникационных технологий. Если человек имеет дело с компьютером, то рано или поздно у него возникает желание, а иногда и необходимость, программировать.
Среди пользователей персональных компьютеров в настоящее время наиболее популярно семейство операционных систем Windows и, естественно, что тот, кто собирается программировать, стремится писать программы, которые будут работать в этих системах.
Несколько лет назад рядовому программисту оставалось только мечтать о создании собственных программ, работающих в среде Windows, т. к. единственным средством разработки был Borland C++ for Windows, явно ориентированный на профессионалов, обладающих серьезными знаниями и опытом.
Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую "быструю разработку", среди которых можно выделить Borland Delphi и Microsoft Visual Basic. В основе систем быстрой разработки (RAD-систем, Rapid Application Development — среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий. Производительность программиста при использовании RAD-систем -фантастическая!
Delphi — это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi — строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.
Долгое время главным козырем противников NTFS был следующий аргумент – чем вы будете ее восстанавливать, если она умрет? А мрет она, как показывает практика, достаточно часто. При всей своей надежности, NTFS не застрахована от потрясений. Ошибки оператора, вирусы, сбои питания, зависания ОС, дефекты поверхности, отказ электроники… С каждым днем человечество все сильнее и сильнее становится зависимо от компьютеров, объемы жестких дисков стремительно растут, а вместе с тем растет и ценность содержащихся на них данных, потеря которых зачастую невосполнима.
Спрос рождает предложение и на рынке как грибы после дождя вылупляются фирмы, специализирующиеся на восстановлении данных, однако, по-настоящему хороших специалистов можно встретить только в двух, ну от силы в трех из них, а все остальные лишь создают видимость кипучей деятельности, выставляя астрономические счета при довольно посредственном качестве восстановления. Но время кустарей уже ушло. Рабочая атмосфера изменилась. Хакеры разобрались со строением NTFS и документировали ее ключевые структуры. Начал формироваться достойный инструментарий для ручного восстановления.
В последние годы в отечественной и зарубежной литературе появилось множество публикаций по проблемам распознавания технического состояния машин и механизмов. Опубликованы фундаментальные труды по теории диагностики, методическим вопросам и принципам построения диагностических и измерительных систем. Опубликованы также многочисленные исследования по диагностированию зарождающихся и развитых дефектов зубчатых зацеплений, подшипников, электрических дефектов и др. Однако, комплексное взаимоувязанное изложение теоретических вопросов, практических исследований, описание выпускаемых промышленностью измерительных систем и опыта внедрения виброакустического неразрушающего контроля на предприятии — явление достаточно редкое.
Последнее десятилетие XX века ознаменовалось появлением большого количества устройств, изменивших привычный взгляд на вещи. Похоже, что, кроме чайника и утюга, не осталось техники, в названии которой не фигурирует слово «цифровой». В связи с этим возникает некоторая путаница, что же подразумевает данное прилагательное в том или ином случае. Чаще всего недоразумения происходят при использовании словосочетания «цифровая камера». Вызвано это тем, что под этим названием скрываются два совершенно разных класса устройств — цифровые видеокамеры и цифровые фотокамеры. И если цифровые видеокамеры представляют собой достаточно привычные устройства, пусть с улучшенным качеством и упрощенным подключением к компьютеру, то цифровые фотокамеры произвели настоящий переворот в фотографии.
Очевидно, что технология съемки, проявки пленки и печати фотографий претерпела незначительные изменения с момента появления на свет. К революционным изменениям можно отнести воцарение цвета (случившееся, впрочем, совсем недавно) и появление фотоаппаратов «моментальной съемки», более известных по одному из крупнейших производителей — компании Polaroid. И если с технической точки зрения обычные фотокамеры последнего поколения представляют собой чудеса инженерной мысли, то химические процессы получения фотографий сохранились с дедовских времен. При этом следует вспомнить, что любительская киносъемка, появившаяся значительно позднее фотосъемки, с начала 80-х годов стала активно вытесняться видеосъемкой, и в результате в наше время кинокамера в руках далекого от кинематографа человека — явление довольно редкое.
Тем не менее электроника заменила пленку в фотокамерах сравнительно недавно — первые модели цифровых фотокамер появились на рынке России в 1996 году. Причину столь позднего старта следует искать в конструктивных особенностях цифровых фотокамер.
Считается, будто бы обмен исполняемыми файлами в мире LINUX намного ниже, чем в Windows, что большинство пользователей качает исходники и компилирует их самостоятельно. Да как бы не так! Исходники занимают намного больше места, а модем не резиновый, это раз! Далеко не всегда сборка проходит гладко и тогда приходиться колдовать над компилятором и исправлять ошибки разработчиков, что требует квалификации, — это два! Наконец, компиляция больших проектов занимает довольно продолжительное время, зачастую намного превышающее время скачки (десятки минут или даже часы) — это три. Есть и другие причины, которые мы не будем перечислять здесь. Важно одно — очень многие пользователи предпочитают сливать готовые бинарники, скомпилированные для своей оси. Часто такие файлы лежат прямо на официальном сайте производителя. Часто, но не всегда! Есть и другая проблема. Линуховые программисты не заморачиваются с интерактивными конфигураторами и серьезно злоупотребляют "дефайнами" — директивами условной компиляции. Например, для однопроцессорной машины создается одна сборка, для двух- или четырех-процессорной — другая. Таких опций может быть очень много и выложить все разновидности сборок на официальный сайт просто нереально. А компилировать самостоятельно ? лень. Вот и приходится рыскать по сети в поисках готовых сборок, откомпилированных независимыми разработчиками и качать их. При этом возникает естественная угроза нарваться на вирус, закладку или троян и такие пришествия уже случались!
Работа в сервис-центре по ремонту импортной электронной техники позволила накопить определенный материал по надежности работы отдельных узлов и компонентов и разработать методику поиска неисправностей, которая позволяет сократить время и путь диагностики и ремонта компьютера от симптома неисправности до неисправной платы или компонента.
Необходимо отметить, что в 80-е годы ремонт производился в основном путем замены плат и узлов, а в 90-е годы в связи с появлением на рынке большого выбора зарубежных радиокомпонентов и комплектующих ремонт стал производиться вплоть до неисправной детали или компонента (микросхемы, транзистора, диода и т. п.), что значительно удешевляет ремонт, но требует повышенной квалификации ремонтника.
Казалось бы, о Unix, Linux и BSD сотоварищи за последние годы написано множество книг, статей, сетевых материалов - нужно ли еще одно сочинение на заданную тему? Думается, что нужно, и по нескольким причинам.
Первая причина - в том, что феномен Open Sources (то есть разработка программ с открытыми исходными текстами) вообще и любые его частные проявления (а Linux и BSD-системы таковыми являются) столь многогранны, что каждый автор, обращающийся к этой тематике, привносит в нее что-то новое (надеюсь, что ваш покорный слуга в своих писаниях не был исключением).
Вторая причина - Linux, BSD и прочие родственные им системы живут и развиваются, и написанное о них даже год назад могло если не устареть (по причинам, которые станут ясными впоследствии, POSIX-системы мало подвержены старению), то в некоторой степени потерять актуальность. И в любом случае будет требовать уточнений, дополнений, корректив, отражающих реалии текущего момента.
Третья причина - в том, что Linux-бум конца ушедшего тысячелетия в определенной мере оставил в тени других представителей семейства открытых POSIX-систем. В результате понятие Open Sources прочно контаминировалось с ОС Linux, а последняя - с такими вещами, изначально к Linux'у никакого отношения не имевшими, как оконная система X, интегрированная рабочая среда KDE или офисный пакет OpenOffice.
Подход к обучению
Из-за обилия особенностей и функций Director MX может сначала вас испугать.
Нам не хочется перегружать вас всеми подробностями сразу. Поэтому мы начнем со знакомства с наиболее практическими и наиболее распространенными сторонами Director MX, используемыми для создания реальных программ.
С помощью этого сайта вы имеете возможность изучить Director MX интуитивным методом, одновременно практикуясь в применении некоторых приемов и быстрых переходов, обычно используемых в Director MX разработчиками реальных приложений. Каждая глава строится на основе предыдущих глав и добавляет новые возможности Director MX в ваш творческий набор инструментов.
Учебные методы
Педагогические приемы, используемые в главах, основаны на понятии «обучение через действие». Эти методы являются синтезом многолетнего опыта авторов по преподаванию мультимедийного программного обеспечения в качестве провайдеров учебных услуг компании Macromedia (Macromedia Training Providers).
Цель - помочь новым пользователям ускорить освоение практического применения Director MX так, чтобы они смогли создавать впечатляющие приложения. Учебные методы приспособлены к различным стилям обучения и учебным ситуациям. Приведенное ниже краткое описание этих методов поможет вам лучше использовать материал, представленный на сайте.
Экскурсии
Большинство глав содержит подробные «прогулки», знакомящие с приемами выполнения задач, таких как выбор в меню и окнах или просмотр многочисленных свойств и перечисленных опций. Экскурсия на самом деле не является упражнением в полном смысле, но соответствует принципу обучения «посмотри и сделай так же».
Практические упражнения
Почти во всех главах вам встретятся практические упражнения, в которых вы познакомитесь с основами применения инструментов и приемами при создании базовых структур Director'a для реальных приложений. Охват каждого из упражнений довольно узок, и они сосредоточены на понятиях и приемах, изложенных в конкретной главе. Их информационное содержание упрощено, и основной упор сделан на обучении и освоении приемов работы, без какой-либо связи с имеющимся творческим опытом.
Главы «Создаем приложение»
На протяжении всего сайта вам будут встречаться главы прикладного направления. Они отличаются от остальных глав тем, что выдвигают перед вами задачи, требующие объединения знаний и приемов, полученных в предыдущих главах, и применения возросшего мастерства к созданию части «реального» мультимедийного проекта.
В упражнениях этих глав вам дается «общая идея» насчет того, что вы должны создавать и исходные материалы, из которых вы должны это сделать. Как вы будете создавать ваш проект, зависит в большей степени от вас.
Самостоятельное обучение
Те из вас, кто захочет научиться применять Director MX самостоятельно, обнаружат, что их ведут по процессу и предоставляют одновременно свободу творчества. Помните о том, что при построении чего-либо у вас обычно будет иметься несколько подходов. Вы можете при выполнении упражнений пропустить некоторые шаги (или ряд шагов), приведенных на данном сайте, и это будет прекрасным поступком, если того требует ваш замысел. Также обратите внимание на то, что в пошаговых инструкциях есть два уровня детализации.
Пронумерованные шаги: Предписывают то, что должно быть сделано.
Шаги второго уровня, обозначенные буквами: Описывают, как выполнить конкретный шаг.
Знакомство с Director MX Работа с палитрой инструментов Открытие, воспроизведение фильмов и управление ими Работа с партитурой Создание анимации