Jumper — джампер съемная перемычка
Jumper — джампер, съемная перемычка на контактной группе, размещенной на системной плате, адаптере или контроллере.
LAN — Local Area Network — сеть, объединяющая несколько компьютеров и других периферийных устройств, имеющая целевое назначение и располага-
ющаяся в локальной ограниченной зоне(на территории завода, фабрики, фирмы, здания).
Mass storage — накопители, устройства, использующиеся для сбора и хранения больших массивов данных; к ним обычно относят жесткие диски, стримеры (накопители на магнитной ленте) и магнитооптические записывающие устройства.
Как обеспечить доступ к SCSIустройствам
Как обеспечить доступ к SCSI-устройствам при подключении их к SCSI-контроллерам в случае, если таким устройством является CD-ROM.
Подключая SCSI-устройство, не забудьте установить на нем идентификатор ID таким образом, чтобы он не повторялся другим устройством. Нежелательно использовать номер 7, так как обычно на него настроен SCSI-контроллер.
Кроме того, на шине старший идентификатор имеет более высокий приоритет, поэтому его желательно отдать SCSI-контроллеру. Наиболее корректным в работе и обеспечивающим совместимость с широким кругом внешних SCSI-устройств показали себя SCSI-контроллеры фирмы ADAPTEC, особенно их интеллектуальные варианты АНА1542 (ISA), AHA2742 (EISA), AHA2842 (VESA), АНА2940 (PCI).
Причем их программная поддержка обеспечивает совместимость со всеми предыдущими версиями контроллеров.
Подключение НЖМД, как правило, не требует установки специальных драйверов. При использовании магнитооптических сменных дисков и дисководов CD-ROM драйвер необходим (для ADAPTEC это ASPIDISK.SYS и ASPICD.SYS соответственно). Для CD-ROM, кроме этого, в AUTOEXEC.BAT нужно установить MSCDEX.EXE, обычно входящий в состав дистрибутива DOS.
Устройства CD-R, отличающиеся от обычных CD-ROM, используются для однократной записи дисков CD-ROM в разных форматах дополняются перезаписываемыми, т. е. с возможностью многократной записи на один и тот же носитель. Они построены по технологии phaze change. Перезаписываемые диски получили название CD-E (Erasable). Новый диск является логическим продолжением CD-R (Orange Book) и CD-ROM. Предполагаемая совместимость по чтению/записи с CD-R и по чтению с CD-ROM. Правда, для того чтобы читать диски CD-E на обычных приводах CD-ROM, требуется некоторая их модификация, связанная с необходимостью регулировки считывающего лазера.
В отличие от большинства своих предшественников программа WinCheckit корректно выполняет диагностику CD-ROM и звуковых карт.
Аудиоплата, особенности установки звуковых плат в ПК
Звуковые платы устанавливаются в 16-битное гнездо ISA, используют адрес порта ввода-вывода, адрес порта MPU-401, одну или.более линий IRQ (запросов на прерывание), один или более каналов DMA (прямого доступа к памяти). Для обеспечения совместимости со стандартом SoundBlaster обычно назначается адрес порта ввода-вывода 220h.
Маловероятно, чтобы какие-либо другие устройства использовали этот адрес, но в большинстве плат предусмотрена возможность задать при необходимости другое значение этого адреса в диапазоне от 210h до 260h. MPU-401 — это спецификация для аппаратной поддержки MIDI, которая по умолчанию использует адрес 330h.
Обычно для совместимости SoundBlaster и MIDI по умолчанию для звуковой платы используется линия прерывания IRQ5. Для реализации собственных функций звуковой платы, для прерывания MIDI или для привода CD-ROM шины AT может понадобиться другая линия IRQ (например, IRQ 11 или IRQ 12).
Для IDE-интерфейса платы используется прерывание IRQ15. Если в ПК есть контроллер EIDE с двумя IDE-интерфейсами, то это значит, что IRQ 15 уже используется. В этом случае подключите ваш привод CD-ROM к этому интерфейсу EIDE, а не к звуковой плате и заблокируйте на плате интерфейс IDE.
Каналы DMA могут напрямую, в обход центрального процессора, передавать звуковые данные между памятью и платой. Канал DMA1 используется по умолчанию для обеспечения совместимости с SoundBlaster и не может быть изменен обычным образом.
Дополнительно может быть введен канал DMA5 и сконфигурирован как 16-битный в целях более быстрой передачи данных, особенно во время записи. Если вы используете Windows 9x, то он постарается распознать значение IRQ, DMA и адресов ввода/вывода, используемых в ПК. Однако лучше проверьте установленные параметры при помощи Менеджера устройств (Control Panel/System/Device Manager).
Поиск неполадок в системе «ПК — звуковая плата»
При установке в ПК звуковой платы необходимо выбрать номера запросов прерываний, базовый адрес ввода/вывода и каналы ПДП, избегая конфликтов с другими устройствами.
Неисправность звуковой платы может приводить к следующим последствиям:
1. Отсутствует звуковое сопровождение.
2. Повторяются одни и те же звуки.
3. Наблюдается отказ в работе ПК.
К звуковым платам прилагаются установочные программы, которые анализируют конфигурацию системы. Многие звуковые платы работают только с конкретными линиями запросов прерываний. Внезапные срывы звучания или непрерывный звук говорят о том, что имеется конфликт из-за прерываний. Звуковая плата может использовать несколько каналов ПДП (прямого доступа к памяти).
Отсутствие всяких звуков является признаком конфликта из-за канала ПДП.
К наиболее конфликтным устройствам относятся сетевые платы, контроллеры SCSI, интерфейсные платы накопителей на магнитной ленте, специальные контроллеры принтеров типа PostScript и др.
Какие задачи должна решать операционная система?
Какие задачи должна решать операционная система?
К этим задачам относятся:
• контроль и управление всеми функциями компьютера;
• обеспечение обмена данными между компьютером и подключенными к нему периферийными устройствами, такими как принтер, дисплей, дисководы и винчестеры, звуковые платы;
• обеспечение взаимодействия между прикладными программами и модулями технических средств.В пакеты программ, составляющих операционную систему, входят системные программы, сервисные программы (Utilites — утилиты), прикладные программы и (иногда) инструментальные средства для написания (разработки) собственных программ на языках высокого уровня.
Пользователь может задать вопрос: чем же объясняется такое разнообразие операционных систем и какая из них является предпочтительнее для установки на компьютере?
Разнообразие операционных систем на рынке ПО объясняется и большой конкуренцией среди фирм-разработчиков, и исторически сложившимися условиями. Первая, наиболее популярная операционная система — MS-DOS (Microsoft — Disk Operation System) — и сейчас стоит на большом количестве компьютеров и часто сосуществует с Windows — графическими оболочками операционных Windows-систем.
Однако, существуют и такие оболочки, как Novell-DOS, в общем-то не очень сильно отлтчающаяся от MS-DOS, но позволяющая с меньшими затратами подключиться к Novell-подобным сетям, используя для этого соответствующее программное обеспечение. Примером графической оболочки операционных систем широкого распространения является система OS/2 или OS/2 WARP, используемая в локальных и глобальных сетях.
Изолированные компьютеры могут использовать MS-DOS, Windows 3.x, Windows 95, 98, NT, OS/2. При работе в интегрированных системах чаще используется Novell- DOS, Unix-подобные операционные системы.
Каналы прямого доступа (DMA Channels)
Каналы прямого доступа (DMA Channels)
Подобно списку прерываний IRQ, список каналов DMA отражает стандартное их использование операционной системой. Программа Checkit отображает неполный список каналов прямого доступа, тем не менее этот список может быть полезным для остальных переназначенных каналов.
Кэширование записи
Кэширование записи
SCSI-диски имеют возможность кэшировать данные как по чтению, так и по записи. Для повышения надежности работы лучше отключить кэш по записи. Системных средств для этого не предусмотрено. Эту операцию можно выполнить, например, с помощью утилиты SCSI Explorer, которая входит в пакет EZ SCSI 4.O.
Сколько драйверов устройств может опознать Windows 9x? Существует около 4000 драйверов, т. е. почти на треть больше, чем для Windows 2000, NT 4.0. При этом поддержка многих видео-, аудио- и PCMCIA плат расширения обеспечивается гораздо лучше, чем в Windows NT.
В этой связи возникает вопрос, почему некоторые прикладные программы, работающие в Windows 9x, не работают в среде Windows 2000, NT 4.0.
Существует несколько причин, по которым приложения, работающие под Windows 9x, не поддерживаются на платформе Windows NT. Последняя была задумана как стабильная и безопасная ОС, в которой приложения не могут иметьпрямого доступа к аппаратному обеспечению. Это распространяется на многие современные программы, напрямую обращающиеся к таким аппаратным устройствам, как звуковые и видеоплаты, сканеры и др. Короче говоря, в среде Windows NT не могут работать приложения, нарушающие систему безопасности этой ОС.
В частности, Windows NT не поддерживает драйверы виртуальных устройств (Virtual Device Drivere — VxD). Приложения, для которых они требуются (многие мультимедийные продукты, игры, менеджеры памяти), не могут работать под Windows NT. Вот почему пользователи, намеревающиеся перейти на Windows NT, прежде всего должны убедиться в том, что все имеющиеся у них устройства и приложения поддерживаются этой ОС.
Критерии выбора ОС, как всегда неоднозначны. Однако, примеривать к Windows NT следует лишь в том случае, когда на вашем ПК установлено ОЗУ не менее 16 Мб.
Отказы из-за искажений в реестровых файлах (Восстановление реестровых файлов)
Если есть признаки ненормальной работы ПК при загрузке или частые отказы, имеет смысл провести восстановление системного реестра пакета Windows 9x. Некоторые фирмы для этого оставляют на жестком диске клоны или «образцовые» файлы для восстановления запорченных.
Для этого необходимо включить и перезагрузить компь-* ютер и как только на экране появится надпись
Starting Windows 95... (стартует виндоуз 95), следует нажать клавишу F8. В появившемся меню выберите: «Command prompt only» (ввод с командной строки),
перейдите в поддиректорий (не забудьте нажать клавишу ENTER):
cd c:\windows
наберите следующие строки, нажимая после каждой клавишу ENTER:
attrib -h -r -s system.dat attrib -h -r -s system.daO attrib -h -r -s user.dat attrib -h -r -s user.daO
Эти команды удаляют атрибуты: скрытое™, защиты от записи, системные атрибуты «образцовых» системных файлов и реестровых системных файлов. Затем нужно скопировать «образцовые» файлы в реестровые:
copy system.daO system.dat copy system.daO system.dat
восстановить атрибуты:
attrib +h +r +s system.dat attrib +h +r +s system.daO attrib +h +r +s user.dat attrib +h +r +s user.daO и перезапустить компьютер.
Пользователь или сервис-инженер, проводящий диагностическую процедуру с ПК, должен знать, что операционная система Windows 9x не может быть установлена в тот же каталог, что и Windows 2000, NT 4.0 или в сетевой каталог Windows 2000, NT 4.0/Windows 9x.
Что касается Windows 9x то для работы с двумя операционными системами Windows 9x/Windows NT требуется файловая система FAT16. Операционная система Windows 9x должна быть установлена в отдельный каталог файловой системы FAT. В меню загрузки операционной системы Windows NT автоматически будет включена возможность выбора Windows 9x либо MS-DOS.
¦ В системе Windows 9x недоступны данные, хранящиеся в разделах файловой системы NTFS — они доступны только из сети.
Класс (Class)
В JAVA, сначала создается дизайн для объекта, а уже потом на основе этого дизайна создается объект. Дизайн - это класс, а объекты - экземпляры. В ActionScript функция может быть использована, как шаблон дизайна или может быть запущена напрямую. Технически в ActionScript нет классов, но класс это нечто вроде кастрированной функции, такая функция может быть использована только в качестве шаблона (template). Таким образом, если используете функцию ТОЛЬКО, как шаблон, то можете думать о ней, как о классе.
Проводя параллель с Flash, можно сказать, что символы в библиотеке, это ваши классы (то есть ещё не использованные шаблоны). Каждый раз, когда вы перетаскиваете один из них на вашу "рабочую площадку", он становится экземпляром (то есть новым объектом, созданным с помощью нового шаблона). Вы не можете видеть их в конечном SWF файле, если вы не "вытащили" их из библиотеки на рабочую площадку (кстати, они даже не экспортируются, до тех пор, пока вы не перетащите их на рабочую площадку или пока не установите для них привязку к библиотеке).
Пример: // ********** Class School ********** function School( name ) { this.name = name; } school1 = new School( "UTOO" ); // экземпляр, названный school1 school2 = new School( "FLU" ); // экземпляр, названный school2 school3 = new School( "TukU" ); // экземпляр, названный school3
В данном куске кода School, это класс, а school1, school2, и school3 - экземпляры класса School. Согласно общепринятым правилам кодирования, имена классов начинаются с заглавной буквы, так что вы можете легко отличить их от экземпляров, имена которых обычно начинаются со строчных букв. (Наверное, так получилось из-за того, что классы более "важны") school1.name is "UTOO" school2.name is "FLU" school3.name is "TukU" (University of Tuktoyuktuk!)
а в этом примере мы решили ни о чём не "спрашивать" School напрямую, потому что School, это класс и следовательно, это не реальный объект, только шаблон. Ведь мы же не станем пытаться найти _x координату чего-либо в библиотеке.
Классы
Забудьте то, что знаете о функциях. Забудьте, что они получают аргументы и возвращают ответ. Забудьте, что они хороший способ сократить блок кода до простого имени. Фактически они являются просто шаблонами, используемыми для задания свойств в объекте. Здесь ключевое слово - ШАБЛОН. Шаблон может использоваться для создания новых объектов, а так же для изменения существующих. С одним и тем же шаблоном можно создавать так много объектов, как это вам необходимо.
Шаблон нельзя съесть, пощупать или понюхать, это доступно только с объектами, сделанными с его помощью. Полезно подумать о шаблоне, как об идее, а об объекте, как о вещи в реальном мире, подобной вашему башмаку... Нельзя есть идею о ботинке, но можете погрызть свой башмак. Это просветлит ваши мысли, если они были запутаны до этого.
Это все немного абстрактно, однако повторюсь еще раз - это очень простое понятие. Например:
Template = function() { this.x = 5; this.y = 7; } inst1 = new Template( ); inst2 = new Template( ); inst3 = new Template( ); trace( inst1.x); // 5 trace( inst1.y); // 7 trace( inst2.x); // 5 trace( inst2.y); // 7Слово, используемое в ООП терминологии для обозначения этих шаблонов - "Класс" (Class) (здесь следует думать о классификации, а не о классной комнате).
Класс (Class) это шаблон, который используется для создания новых объектов, называемых "экземплярами" (instances). Объекты и экземпляры суть одно и то же и могут быть взаимозаменяемыми (и часто!). Упомянутое слово "экземпляр" обычно предполагает объекты, созданные из класса с использованием оператора new, в то время как "объект" является более общим термином для всех объектов.
Имена классов всегда должны начинаться с заглавной буквой, имена экземпляров - с маленькой. Если вы будете придерживаться этого правила, вам будет легко и просто обращаться к ним.
Несмотря на то, что класс это просто абстрактная идея в эфире, а экземпляр настолько реален, что оставляет след, когда шлепается на вас, в программе они имеют тенденцию выглядеть устрашающе одинаково.
Помните: ClassName - instanceName
Экземпляры происходят от классов, поэтому переходим к следующему разделу с экземплярами ...
<< ООП во Flash 5 >>
Когда вы обращаетесь в сервисцентр?
Когда вы обращаетесь в сервис-центр?
Известно, что вероятность самостоятельно отремонтировать П равна ~ 95%. А какие неисправности П составляют оставшиеся 5%? Их немного, но они есть всегда. Приведем некоторые из них. 1. Выход из строя БИС частного применения. Так называемой программируемой матрицы (ПМ). Эта БИС программируется фирмой-производителем П для каждой модели П. В продаже отсутствует.
КОМПЬЮТЕРЫ БОЯТСЯ МЫШЕЙ ТАРАКАНОВ НЕ ВЫНОСЯТ ТАБАЧНОГО ДЫМА И КОФЕ
КОМПЬЮТЕРЫ БОЯТСЯ МЫШЕЙ, ТАРАКАНОВ, НЕ ВЫНОСЯТ ТАБАЧНОГО ДЫМА И КОФЕ.
Постарайтесь застраховать блоки компьютера от проникновения в них мышей или тараканов: на практике часты случаи, когда системные платы выходили из строя именно от гнездования там мышей, а блоки питания с мощными полевыми транзисторами — от попадания тараканов на фоль-гированные полоски затвора и истока транзистора. Пролитый на клавиатуру сладкий кофе может вывести ее из строя, а табачный дым роковым образом может повлиять на работоспособность жесткого диска.
Переключения сетевых и сигнальных кабелей, включение-выключение компьютера
Кабели подключайте без особого нажима, чтобы не погнуть контакты или защитную окантовку. Внимательно ознакомьтесь с инструкцией — в ней могут быть особенности, присущие данной конструкции конкретной фирмы. Переключение или подключение любых сигнальных кабелей должно осуществляться ПРИ ВЫКЛЮЧЕННОМ ПК.
При включении (подаче напряжения 220 вольт) ПЕРВЫМИ ВКЛЮЧАЮТ ПЕРИФЕРИЙНЫЕ УСТРОЙСТВА -монитор, принтер. В ПОСЛЕДНЮЮ ОЧЕРЕДЬ ВКЛЮЧАЮТ СИСТЕМНЫЙ БЛОК.
Если есть возможность, осуществляйте «горячий» перезапуск ПК. Что понимается под «холодным» и «горячим» запуском компьютера?
«Холодным» запуском называется включение компьютера с помощью сетевого включателя или с помощью кнопки RESET на фронтальной панели системного блока. «Горячий» запуск осуществляется одновременным нажатием комбинации клавиш: ALT — CTRL — DEL.Правила обращения с жестким диском, срок жизни (надежность) винчестера
Если системная плата (Mother board — материнская плата) — сердце персонального компьютера, то жесткий диск — его мозг. На жестком диске записана системная часть программного обеспечения (ПО) компьютера и основная информация в виде пакетов ПО, необходимых для работы пользователя.
Держите запасной жесткий диск (если он еще не установлен в ПК) подальше от электроприборов.
МАГНИТНЫЕ ПОЛЯ ТРАНСФОРМАТОРОВ, ДИНАМИКОВ ГРОМКОГОВОРИТЕЛЕЙ, МОЩНЫХ БЫТОВЫХ ЭЛЕКТРОПРИБОРОВ МОГУТ ОТРИЦАТЕЛЬНО СКАЗАТЬСЯ НА РАБОТОСПОСОБНОСТИ ЖЕСТКИХ ДИСКОВ.
В паспорте жестких дисков обычно указывается гарантийный срок эксплуатации накопителя. Это может быть 30 000 часов или несколько больше, что в пересчете на годы дает впечатлительную цифру — 3 года.
Однако пользователь должен отчетливо представлять, что эта цифра является стреднестатистической величиной по отношению к данному типу накопителя и данной фирме, его производящей.
• Кто знаком со статистикой, тот понимает, что при данных статистических параметрах каждый десятый диск выходит из строя не через 3 года, как указано в паспорте, а через год. Причина этого в физическом разбросе параметров, гарантируемых фирмой-изготовителем.
• Во-первых, будьте готовы к этому.
• Во-вторых, «стихийные бедствия и катастрофы недели» — как-то: резкие удары или толчки, папиросный дым, пролитый на компьютер кофе, большая влажность в помещении — тоже не способствуют долголетию винчестера.
• В-третьих, существуют невидимые для глаза причины (назовем одну из них — ненормированный уровень мощного электромагнитного излучения), которые также укорачивают жизнь такого тонкого электронно-механического устройства, как жесткий диск.
Поэтому после приобретения жесткого диска уже в конце первого года эксплуатации будьте морально готовы к выходу его из строя.
Протянет еще год — считайте, вам повезло.
Ну, а если накопитель выходит из строя, не торопитесь его выбрасывать. Вполне возможно.что деградировали метки низкоуровневого форматирования и вам удастся найти способ восстановить их и тем самым продлить срок жизни винчестера.
Ну, а если винчестер вышел из строя, необходимо приобретать новый?
Многие неопытные пользователи теряются в случае, если перед ними становится дилемма — какой жесткий диск лучше выбрать: с интерфейсом IDE или SCSI. Для большинства пользователей разница состоит в скорости работы и в цене. SCSI накопитель в два раза дороже IDE-накопителя .Во многих ПК есть встроенный контроллер IDE, а для SCSI необходимо покупать SCSI-контроллер. SCSI-дисковод сложнее в конфигурировании и к SCSI можно подключить до семи устройств, а к IDE — не более двух (четырех) накопителей. Иногда старый IDE НЖМД не работает совместно с новыми IDE-моделями.
О неисправностях
Конфигурации для отдельных пользователей при работе в сети
Конфигурации для отдельных пользователей при работе в сети
Несколько конфигураций для отдельных пользователей могут быть созданы на компьютере, включенном в сеть Windows NT или Novell NetWare.
Если в конфигурацию включаются сведения о структуре главного меню и содержимом рабочего стола и/или папки «Сетевое окружение», сервер должен поддерживать использование длинных имен файлов.
Конфигурирование микропроцессора внешняя/внутренняя тактовая частота CPU (переключатели 6 7 и 8)
Конфигурирование микропроцессора внешняя/внутренняя тактовая частота CPU (переключатели 6, 7 и 8)
Переключатели 6, 7 и 8 используются для установки внешней (шинной) тактовой частоты CPU, равной 50, 60 или 66 мегагерц. По умолчанию установка зависит от указанного для данной системной платы микропроцессора Pentium (установленного на этой плате фирмой-производителем).
В таблице 27 приведены установки для переключателей 6, 7, 8 и перемычек J1N1:
Таблица 27.
External Bus Speed | Bus Clock Multiplier | Processor Speed | Switch 6 | Switch 7 | Switch 8 | J1N1 |
50 | 1.5 | 75 | off | on | Off | 4/5 |
60 | 1.5 | 90 | off | off | Off | 4/5 |
66 | 1.5 | 100 | off | on | On | 4/5 |
60 | 2 | 120 | on | off | Off | 4/5 |
66 | 2 | 133 | on | on | On | 4/5 |
60 | 5/2 | 150 | on | off | Off | 5/6 |
66 | 5/2 | 166 | on | on | on | 5/6 |
66 | 3 | 200 | off | on | on | 5/6 |
Конфликты между контроллерами различных типов
Конфликты между контроллерами различных типов
На некоторых СП возникают конфликты между внешними контроллерами SCSI и интегрированным контроллером IDE.
Конфликты по SCSIадресам
Конфликты по SCSI-адресам
При подключении внешнего устройства SCSI убедитесь в том, что установленный на нем адрес свободен.
Конструкция и работа современного 3 5" дисковода (НГМД)
Конструкция и работа современного 3,5" дисковода (НГМД)
Основные внутренние элементы дисковода — рама, шпиндельный двигатель, блок головок с приводом и плата электроники.
Шпиндельный двигатель — плоский многополюсный, с постоянной скоростью вращения 300 об/мин. Двигатель привода блока головок — шаговый, с червячной, зубчатой или ленточной передачей. Для опознания свойств дискеты на плате электроники возле переднего торца дисковода установлено три механических датчика: два — под отверстиямизащиты и индикатора плотности записи, и третий — для определения момента опускания дискеты.
Вставляемая в щель дискета попадает внутрь дискетной рамы, где с нее сдвигается защитная шторка, а сама рама при этом снимается со стопора и опускается вниз, металлическое кольцо дискеты при этом ложится на вал шпиндельного двигателя, а нижняя поверхность дискеты — на нижнюю головку (сторона 0). Одновременно освобождается верхняя головка, которая под действием пружины прижимается к верхней стороне дискеты.
На большинстве дисководов скорость опускания рамы никак не ограничена, из-за чего головки наносят ощутимый удар по поверхностям дискеты, а это сильно сокращает срок их надежной работы.
В некоторых моделях дисководов (в основном фирмы Теас) предусмотрен замедлитель-микролифт для плавного опускания рамы. Для продления срока службы дискет и головок в дисководах без микролифта рекомендуется при вставлении дискеты придерживать пальцем кнопку дисковода, не давая раме опускаться слишком резко.
На валу шпиндельного двигателя имеется кольцо с магнитным замком, который в начале вращения двигателя плотно захватывает кольцо дискеты, одновременно центрируя ее на валу. В большинстве моделей дисководов сигнал от датчика опускания дискеты вызывает кратковременный запуск двигателя с целью ее захвата и центрирования. Дисковод соединяется с контроллером при помощи 34-проводного кабеля, в котором четные провода являются сигнальными, а нечетные — общими. Общий вариант интерфейса предусматривает подключение к контроллеру до четырех дисководов, вариант для IBM PC — до двух.
В общем варианте дисководы подключаются полностью параллельно друг другу, а номер дисковода (0...3) задается перемычками на плате электроники; в варианте для IBM PC оба дисковода имеют номер 1, но подключаются при помощи кабеля, в котором сигналы выбора (провода 10-16) перевернуты между разъемами двух дисководов.
Иногда на разъеме дисковода удаляется контакт 6, играющий в этом случае роль механического ключа. Интерфейс дисковода достаточно прост и включает сигналы выбора устройства (четыре устройства в общем случае, два — в варианте для IBM PC), запуска двигателя, перемещения головок на один шаг, включения записи, считываемые/записываемые данные, а также информационные сигналы от дисковода — начало дорожки, признак установки головок на нулевую (внешнюю) дорожку, сигналы с датчиков и т. п. Вся работа по кодированию информации, поиску дорожек и секторов, синхронизации, коррекции ошибок выполняется контроллером.
Таблица 16. Распределение сигналов на разъеме (ленточного кабеля) интерфейса накопителя на гибком магнитном диске – НГМД
№ контакта | Назначение | Направление |
нечетные | земля | |
2 | резерв | |
4 | управление индикатором | к НГМД |
6 | не используется | |
8 | индексный | от НГМД |
10 | выбор накопителя 0 | к НГМД |
12 | выбор накопителя 1 | к НГМД |
14 | выбор накопителя 2 | к НГМД |
16 | мотор включить | к НГМД |
18 | направление | к НГМД |
20 | шаг | к НГМД |
22 | запись данных | к НГМД |
24 | разрешение записи | к НГМД |
26 | дорожка 00 | от НГМД |
28 | защита записи | от НГМД |
30 | чтение данных | от НГМД |
32 | выбор головки | к НГМД |
34 | готовность | от НГМД |
Стандартный формат дискеты типа HD (High Density — высокая плотность) — 80 дорожек на каждой из сторон, на каждой дорожке 18 секторов по 512 байт. Уплотненный формат — 82 или 84 дорожки, до 20 секторов по 512 байт или до 11 секторов по 1024 байта.
Фирмой ЗМ разработана новая технология изготовления дискет и накопителей, которая обеспечивает увеличение емкости дискеты до 120 Мб. При этом новые дисководы будут поддерживать существующий стандарт чтение/запись (1,44 Мбайт).
ГМД выполнен из майлара, который покрыт компаундом-лаком, содержащим магнитные вещества. В дисках неболь-шой емкости применяется окись железа, а в дисках большей емкомсти вместо железа используется кобальт.
Широкое распространение ГМД объясняется следующими преимуществами по сравнению с другими магнитными накопителями:
• по сравнению с магнитофоном НГМД допускает режим записи/считывания с произвольной выборкой;
• быстротой и удобством записи, изменения, считывания и копирования информации;
• большим объемом памяти (от 360 Кбайт до 120 Мбайт) при большой скорости записи информации;
• надежностью, малыми габаритами и весом (10—20 граммов). В 1990 г доля НГМД среди других видов накопителей возросла до 40 %.
КОНСТРУКЦИЯ IBMСОВМЕСТИМОГО КОМПЬЮТЕРА В МИНИМАЛЬНОЙ КОНФИГУРАЦИИ (АППАРАТНАЯ ЧАСТЬ)
КОНСТРУКЦИЯ IBM-СОВМЕСТИМОГО КОМПЬЮТЕРА В МИНИМАЛЬНОЙ КОНФИГУРАЦИИ (АППАРАТНАЯ ЧАСТЬ)
Конструктор
Термин конструктор означает "нечто, что создаёт (конструирует) объекты". Мы знаем, что все объекты создаются из классов. Так что конструктор должен быть ЕОВСД (Ещё-Одним-Выдуманным-Словом-Для) класса. Ну, как бы это сказать... Точно так же, как и класс является частным случаем функции (только в ActionScript!), конструктор - это некая часть класса. Эта часть помогает "конструировать" объекты, как вы, наверное, уже догадались. Мы знаем, что объекты создаются при помощи объекта активации и аргументов. Но, стало быть и конструктор - это такой же объект активации. Да, так и есть. Трудности начнутся, когда мы вспомним, что объекта активации не существует, пока мы его не вызовем, а по окончании своей миссии он уничтожается - таких друзей в адресную книгу не вносят. Получается, что единственный способ "активировать" этот объект активации - вызвать свойство, которому он назначен, то есть объект, который даёт имя классу. Это прекрасно работает, потому что аргументы как бы "зажаты" между этими двумя объектами и так прочно друг к другу привязаны, что их часто рассматривают, как единое целое.
Почему нам так важно дать наиболее полное и точное определение конструктора и его работы? Потому что это ещё одно из недокументированных ключевых слов ActionScript, которые иногда бывают просто необходимы. Всякий экземпляр имеет свойство constructor и оно указывает на класс, который его создал, точнее на объект, давший имя классу. Когда вы рассуждаете о конструкторе с точки зрения экземпляра (как в случае с конструктором rover'а), то конструктор это класс, который создал экземпляр. Когда речь идёт о частях класса, то конструктор это скорее объект активации, наряду с аргументами и объектом имени. На самом же деле, подразумевается прототип или свойства, назначенные объекту имени класса (например, Dog.count), потому что они напрямую не участвуют в "конструировании" объекта. Кое-кто может сказать, что мы просто играем словами. Да, возможно, это так. В большинстве других объектно-ориентированных языках программирования конструктор и имя класса, это абсолютно разные понятия. В ActionScript они, конечно, тоже не взаимозаменяемы, но довольно тесно связаны друг с другом и разница между ними подчас очень невелика. Вот почему так важно оперировать точными определениями этих понятий. Фигурально выражаясь, можно сказать, что:Class - это нечто вроде хижины. Constructor - это её часть, отвечающая за создание новых вещей.
Ранее мы задавались вопросом, каким именно образом экземпляры ссылаются на класс, который их создал. Ответ на этот вопрос - ключевое слово constructor. Он всегда используется изнутри объекта. Наилучшим образом он действует в границах экземпляра, который вы создали из вашего класса (хотя этим его действие, конечно же, не ограничивается, всегда полезно "пощупать" ActionScript в поисках чего-то новенького и неописанного!). Вот два способа, нахождения конструктора из экземпляра. Dog = function( ) { this.instNum = ++this.constructor.count; } // следующие два свойства на самом деле не являются частью 'конструктора' Dog.count = 0; // используется для подсчета созданных собак Dog.className = "Dog"; // используется для запоминания имени класса rover = new Dog( ); fido = new Dog( ); trace( rover.instNum ); // 1 (первая собака создана) trace( fido.instNum ); // 2 (вторая собака создана) trace( rover.constructor.className ); // Dog
Хотя использование конструктора не всегда нормативно, иногда без него просто не обойтись. Очевидным преимуществом доступа к свойствам Dog через instance.constructor.xxx вместо Dog.xxx является то, что если вы когда-нибудь измените имя класса Dog на Canine, вам не придётся перелопачивать весь ваш код в поисках кусков, где есть ссылка на Dog. Такой способ также делает ваш код намного более портативным на тот случай, если, например, вам захочется использовать его в другом классе или даже в другой программе.
Что интересно, у прототипа класса всё-таки есть конструктор, потому что это, в конце концов, такой же объект, как и любой другой - объект, который был кем-то создан. Когда вы определяете класс, он немедленно создаёт объект имени, но не создаёт объекта активации (который создаётся только когда его вызывают). Но вот объект прототипа всё-таки создаётся и это происходит, как только мы определяем класс. Куда указывает конструктор прототипа? Точно так же, как и экземпляр, он указывает на объект класса имени. Но как бы нам это проверить? Можно просто добавить в верхнюю функцию следующее выражение: trace( Dog.prototype.constructor.className ); // Dog
Довольно громоздко, не так ли? Но если присмотреться, мы увидим, что эта строка всего лишь говорит: "Отследить имя класса объекта, создавшего ("сконструировавшего") прототип Dog". Ладно, если это до сих пор не вполне понятно, то попробуем по-другому. Если перемещать эту строку вверх и вниз по коду, то мы увидим, что объект прототипа создается, как только мы определяем класс Dog, до того, как в прототипе устанавливаются какие-либо свойства.
И напоследок ещё немного странностей. Объект имени класса (Dog) не имеет свойства конструктора, даже не смотря на то, что это объект, который был создан. Имена функций также не имеют конструктора в ActionScript, даже не смотря на то что в других подобных языках программирования (например, в JavaScript) это не так. Причины объяснить не так просто. Попробуйте для начала перелопатить весь ActionScript так, чтобы ему было "удобно" в "крошечном" 200-килобайтном Flash Playr'е. Вот-вот, и я про то же! Давайте-ка лучше перейдём к следующему разделу про методы. Он интересный!
<< ООП во Flash 5 >>
Квазиотказы при регистрации доступа в Windows NT
Квазиотказы при регистрации доступа в Windows NT
Если при регистрации пользователя не соблюдается последовательность протокола и верификация файлов (протокола), то вероятность сбоя или квазизависания (неопределенно долгая обработка события) в сети резко возрастает.
Как минимум, в целях безопасной работы необходимо выбрать протоколирование следующих событий:
• Logon и Logoff (вход в систему и выход из системы);
• Use of User Rights (использование прав пользователя);
• User and Group Management (управление пользователями и группами);
• Security Policy Changes (изменение правил безопасности).
Протокол событий, произошедших в системе, можно просмотреть при помощи приложения Event Viewer (программа просмотра протокола событий), находящегося в программной группе Administrative Tools.
Лучше не ремонтировать?
Лучше не ремонтировать?..
Если при эксплуатации компьютера в летнее время происходит перегрев БП и его отключение из-за перегрузки, обеспечьте дополнительное охлаждение ПК. Во избежание нарушений оптимальной циркуляции воздуха внутри системного блока проверьте наличие всех заглушек на задней панели ПК.
Износ БП определяется временем его непрерывной работы. В зависимости от конструкции, мощности, схемотехнических решений и эффективности вентиляции срок службы БП составляет 3—7 лет. При выходе БП из строя ПК становится полностью неработоспосособным. Чтобы продлить время безотказной работы БП и самого ПК, необходимо использовать сетевые фильтры, стабилизаторы напряжения или источники бесперебойного питания.
Большинство блоков питания для ПК являются импульсными. По сравнению с линейными источниками питания они имеют меньшие габариты и вес, большие КПД и коэффициенты стабилизации по току и напряжению. Стандартный импульсный БП включает в себя сетевой фильтр, выпрямитель, мощные ключевые транзисторы (МКТ), схему управления МКТ, работающую по принципу широтно-им-пульсного (ШИМ) генератора, схему обратной связи, соединенную с датчиками во вторичных цепях источника, выходные стабилизаторы напряжения +5 и +12 В.
Допустим, блок питания вашего ПК вышел из строя. Что делать?
Постарайтесь заменить его целиком. Подберите источник в том же конструктиве, той же мощности (указана на корпусе) и с той же распайкой разъемов.
Макровирусы
Макровирусы
Макровирусы, поражающие файлы Word, Excel или Office 97, как правило, пользуются одним из трех приемов: в вирусе либо присутствует автомакрос (автофункция), либо переопределен один из стандартных системных макросов (ассоциированный с каким-либо пунктом меню), либо макрос вируса вызывается автоматически при нажатии на какую-либо клавишу или комбинацию клавиш.
Существуют также полувирусы, которые не используют всех этих приемов и размножаются, только когда пользователь самостоятельно запускает их на выполнение.
Таким образом, если документ заражен, при его открытии Word вызывает зараженный автоматический макрос AutoOpen (или AutoClose при закрытии документа) и запускает код вируса, если это не запрещено системной переменной DisableAutoMacros. Если вирус содержит макросы со стандартными именами, они получают управление при вызове соответствующего пункта меню (File/Open, File/Close, File/SaveAs).
Если же переопределен какой-либо символ клавиатуры, то вирус активизируется только после нажатия на соответствующую клавишу.
Большинство макровирусов содержат все свои функции в виде стандартных макросов Word, Excel, Office 97. Существуют, однако, вирусы, скрывающие свой код и хранящие его в виде немакросов.
Известно три подобных приема, все они используют возможность макросов создавать, редактировать и исполнять другие макросы.
Как правило, подобные вирусы имеют небольшой (иногда — полиморфный) макрос — загрузчик вируса, который вызывает встроенный редактор макросов, создает новый макрос, заполняет его основным кодом вируса, выполняет и затем, как правило, уничтожает (чтобы скрыть следы присутствия вируса).
Основной код таких вирусов находится либо в самом макросе вируса в виде текстовых строк (иногда — зашифрованных), либо хранится в области переменных документа или в области Auto-text.
Массив аргументов
Недокументированная особенность!
Необходимо сказать, что массив аргументов является недокументированной особенностью со всеми вытекающими из этого последствиями. Но, поскольку очень сильно похоже на то, что эта особенность будет работать и в будущих версиях Flash, хотя я и не даю никакой гарантии (она есть в дальнейших версиях ECMAscript и позволяет сделать то, чего невозможно добиться другими способами), используйте ее только тогда, когда без нее не обойтись. В таком случае если из Flash6 эту штуку все-таки вырежут, то вам придется поменять минимум кода. |
Есть одна вещь, которая обособляет конструкторы вместе с методами - им можно слать сообщения. Методы могут даже возвращать сообщения (конструкторы, правда возвращают экземпляры объектов). Об этом мы говорили в разделе про аргументы - аргументы функции это сообщения и возвращаемая величина тоже есть сообщение. Теперь мы поближе рассмотрим механизм передачи этих сообщений.
На самом деле аргументы метода в ActionScript находятся в двух местах. Во-первых, создается новое локальное свойство (локальное по отношению к запущенному активируемому объекту) для каждого имени, которые перечислены в определении метода между скобками (arg1, arg2). Второе же место где это добро лежит - массив с именем arguments (будем его обозначать, как arguments[], чтобы было понятно, что это массив). В этом массиве аргументы хранятся в том же порядке, в котором они переданы в метод. То есть в вышеуказанном примере массив будет состоять из 2-х значений, сначала arg1 (в arguments[0]), а потом arg2 (в arguments[1]). Вот пример: test = function( arg0, arg1 ) { trace( arg0 +" "+ arg1 ); // вывод - "1ый 2ой" this.( arguments[0] +" "+ arguments[1]); // вывод - "1ый 2ой" } test( "1ый", "2ой" );
Отличительные черты характера этой недокументированной особенности следующие. Во-первых, наиболее интересным представляется возможность передачи заранее неизвестного количества аргументов. Например, хочется написать метод расчета среднего значения для непостоянного количества чисел. Это можно сделать например так: getAverage = function( _args_ ) { var total = 0; for(var i = 0; i < arguments.length; i++) { total += arguments[i]; } return total / arguments.length; } this.( getAverage(4,5,3,2,6,10) ); // вывод - "5" this.( getAverage(54,45,96) ); // вывод - "65"
Это главный аргумент "за" использование такой интересной особенности. Примите во внимание, что слово _args_ не обязательно, но я таким образом самому себе напоминаю, что в этот метод должно что-то передаваться. При выходе из метода эта переменная уничтожится, следовательно, никакого вреда она не несет, а склероз - вещь распространенная...
Есть правда и сюрпризы. Оказывается, массив аргументов - это НЕ МАССИВ! Можно узнать его длину, но нельзя использовать такие методы, как pop() или push(). Другой сюрприз, а возможно, что просто жучок - arguments[0] и первая переменная в списке переменных это не один и тот же объект. Поэтому, если в методе с аргументами (arg0, arg1) мы поменяем значение arg0, то arguments[0] все равно будет иметь старое значение. Имейте это в виду при написании программ... (может, это не баг, а фича! Интересно, а почему ничего не сказано про остальные аргументы? - прим.пер.)
Ну и последнее, что надо бы знать про этот "массив", это то, что у него есть одно интересное свойство с именем callee. Понятное дело, что набрать слово callee проще, чем prototype или __proto__, но про него читайте в следующем разделе...
<< ООП во Flash 5 >>
Массив аргументов (Agruments array)
Ещё немного об аргументах. В ActionScript вы можете оперировать сразу несколькими аргументами, различающимися в функции. Вы спросите: "А зачем нам это?" Ну, скажем, у вас есть класс, который хранит имена людей. Так как полное имя человека содержит фамилию, имя и отчество, ваш класс скорее всего будет выглядеть вот так: function setName( first, middle, last ) { this.firstName = first; this.middleName = middle; this.lastName = last; } person0 = new setName( "John", "Hopkins", "University" );
... никаких проблем. Хотя постойте! А как же быть с теми, чьи отчества нам не известны? Вот незадача! Ну да ладно. Мы можем оперировать двумя аргументами, если нет отчества и тремя, если оно есть. Просто проверим, обработано ли последнее значение перед тем, как вписать отчество: function setName( last, first, middle ) { this.lastName = last; this.firstName = first; if (middle <> null) { this.middleName = middle; } } person0 = new setName( "university", "John", "Hopkins"); person1 = new setName( "Catraz", "Al" ); person2 = new setName( "Kahaule", "Al" ); person3 = new setName( "Krisnia", "Harry" );
Замечательно! Работает!.. Но как же быть с именами японцев и других "алиенов", которые пишут имя в конце, а фамилию в начале? Наверное, вы попробуете поменять "имя" на "фамилию". Теперь самое время вспомнить французов, а заодно и их ближайших родственников :))) Такие, как Жан Пьер Жозе деБрюйи или ещё лучше вот такое имя Гастон Бернар Жозе Рене даЛак ауФонтен Баге деБрюйи. Похоже, у нас появились проблемы. Непонятно, сколько имён мы передаёт в setName(). К счастью в каждой функции есть встроенный объект под названием (как вы, наверное, уже догадались) "аргументы" (arguments). Это объект (а не группа), хранящий прошедшие аргументы в форме: arguments[0] arguments[1] arguments[2]...
Заметьте, что объект "аргументы" доступен только внутри функции, что логично, так как прошедшие аргументы, локальны по определению. Теперь вы можете сотворить что-нибудь вроде: // поставим отчество после фамилии и имени function setName( family, given ) { this.familyName = family; this.givenName = given; if (arguments[2] <> null) { this.middleName = new Array(); for( var i = 2; i < arguments.length; i++) { this.middleName[i-2] = arguments[i]; } } } person0 = new setName( "Robin", "Sean", "Debreuil" ); person3 = new setName( "Debreuil", "Summer" ); person4 = new setName( "Debreuil", "Jean", "Pierre", "Josheph" ); person5 = new setName( "Debreuil", "Gaston", "Bernard", "Josheph", "Rene", "d'Lac", "au'Fontaine", "Baguette" ); trace( person5.middleName.toString() ); // возврат будет выглядеть так: // Bernard, Josheph, Rene, d'Lac, au'Fontaine, Baguette
Если ваш setName остаётся вообще без аргументов, то можно прикупить их или покопаться в Monty Python, кстати, не забудьте взять чек. Если вы думаете, что проблема уже решена, то вспомните об именах китайцев. У них последовательность такова: фамилия, имя, имя. Наверное, в этом случае вам придётся разрешить пробелы в именах (обычно они пишутся в кодировке Unicode, которую Flash 5 не поддерживает). Ну а как быть, например, с "артистом, которого звали 'Принц'"? Нравится он вам или нет, но как не восторгаться огромным списком таких имён во всех базах данных мира! Интересно, придуман ли для этого уже новый символ в Unicode?
Ну хорошо, а как обстоит дело с Flash? Какова альтернатива? Вот вы создаёте новый символ в библиотеке, передаёте ему аргументы, например, _x, _y и _level в зависимости от того, куда вы его помещаете. Такие параметры, как _xScale не установлены (и получают значения по умолчанию, в нашем случае - '100'). Однако, если дублировать экземпляр символа, то вся информация экземпляра передаётся новому экземпляру, как будто вы передаёте одну и ту же функцию (createInstanceOfSymbol) и нескольким аргументам, число которых будет зависеть от того, как именно вы решили всё это построить.
Memory modules — миниатюрные платы
Memory modules — миниатюрные платы с напаянными на них микросхемами памяти. В настоящее время объем памяти, реализованный в виде таких модулей, достигает 64-х, 128-и и 256-ти Mb (Мегабайт).
Метод Callee
Внутри активированного конструктора, вам автоматически предоставляется доступ к двум объектам. Именно там, в области видимости активированного объекта, исполняются команды. Код также включает ссылку на второй экземпляр, созданный ключевым словом this, (по природе Flash'a, вам также предоставляется доступ к _root линейке - его можно спокойно проигнорировать). Этим обычно и исчерпываются ваши потребности. Однако, чего здесь не хватает, так это ссылки на задействованный класс. Сначала вам может показаться, что она присутствует в текущей области видимости, но помните, что эта область является отдельным временным активированным объектом и соответственно, все, что создано в этой области будет удалено как только она прекратит работу. Очевидно, что это - не класс. Можно попытаться найти его через ключевое слово this (this.constructor или this.__proto__). Хотя this является временным и безымянным контейнером, которому еще только предстоит стать экземпляром, его свойства constructor и __proto__ уже известны и заранее заданы. Таким образом, this.constructor указывает на class, а this.__proto__ указывает на class.prototype. Следует помнить, однако, что это - указание на тот class (или class.prototype), который создал данный экземпляр. Таким образом, если вы пользуетесь наследованием и одновременно используете множественные уровни конструкторов, вам понадобится кое-что еще.
К счастью, эта проблема решается использованием arguments.callee. К несчастью, это недокументированная функция и это влечет за собой все, что с такими ситуациями обычно связано. Возможно, вам будет проще избежать необходимости вызова callee путем изменения логики вашей программы. Как бы то ни было, она остается очень полезным инструментом при тестировании различных объектно-ориентированных структур, которых вы наверняка будете создавать сотнями. Она также является очень полезным инструментом отладки. На что же именно она указывает?
Arguments.callee указывает на функцию (да, класс или метод) к которому прикреплен текущий активированный объект. Таким образом, для того, чтобы конструктор нашел свой класс, в качестве пути достаточно просто указать arguments.callee. Это будет работать всегда, независимо от того, насколько далеко конструктор находится от экземпляра. Далее обычно каждому классу присваивается имя (например, Dog.name="Dog") и для определения того, какой конструктор работает в каком классе применяется команда (из активированного объекта Dog). trace( arguments.callee.name );
Это может быть очень полезно для отладки. Нахождение прототипа класса изнутри активированного объекта тоже не представляет трудности - arguments.callee.prototype. Arguments.callee также показывает метод, которым можно найти имя его метода, опять-таки простым использованием arguments.callee. Это не так полезно, поскольку свойства у методов обычно не прикрепляются ни к объекту с именем метода, ни к объекту прототипа, поэтому ссылки на эти объекты обычно не требуется. Кроме того, не существует надежного способа, которым метод находил бы объект с именем класса, к которому он принадлежит (за исключением прописывания ссылки вручную), что значительно ограничивает полезность применения arguments.callee в конструкторе. (Получить имя класса метода изнутри метода можно с использованием this.__proto__.constructor.x или, если наследование имеет два уровня глубины, с использованием this.__proto__.__proto__.constructor.x, но при этом у вас нет возможности убедиться в том, сколько уровней глубины имеет ваш метод.)
Ниже приводится пример кода для экспериментирования. Вероятно, callee покажется вам наиболее полезной при проверке структур и отладке. Class = function() { // найти класс из конструктора trace( "Class: " + arguments.callee.x ); // Вывод: Class: объект с именем класса // найти прототип класса из конструктора trace( "Class.prototype: " + arguments.callee.prototype.x); // Вывод: Class.prototype: прототип класса } Class.x = "Class name object"; Class.prototype.x = "Class prototype"; Class.prototype.method = function() { // найти имя метода из внутреннего метода trace("method: " + arguments.callee.x); // Вывод: method: объект с именем метода // найти статические свойства класса из метода trace("method: " + this.__proto__.constructor.x); // (работает, только если класс на один уровень выше экземпляра) } Class.prototype.method.x = "method name Object"; aa = new Class(); // Конструктор теста aa.method(); // Метод теста
<< ООП во Flash 5 >>
Методы и свойства
До сих пор во всех наших примерах свойства классов принимали простейшие значения, такие как "rover" или 5. Имя класса (Dog, например) назначалось им свойству и прототип становился свойством этого класса (Dog.prototype в нашем случае). В ActionScript мы фактически можем назначить что-нибудь свойству. Это отличает ActionScript от многих других языков (Java, например), так что мы оказываемся перед необходимостью разъяснить, что подразумеваем под "свойством". В Java и С++ существует большая разница между методами и свойствами, чего нет а ActionScript-е. Так что же такое методы?
Метод очень похож на то, что мы обычно понимаем под функцией в программе, с одним отличием, методы всегда привязаны к классу и, как правило, вызываются из объекта-реализации этого класса. Методы призваны модифицировать состояние этого объекта и/или возвращать вычисленные значения. Они не используются для создания нового экземпляра класса. Методы никогда не используют свои прототипы, они не помещают свойства в собственное пространство имен (namespace). Методы не похожи на классы. Это просто программы, принадлежащие классу.
Можно сказать, они "выглядят" как классы. Они тоже созданы при помощи функции, однако они не вызываются при помощи оператора new. Их ключевое слово this ссылается на объект, который вызвал этот метод, никак не на созданный новый. Поскольку они, подобно классам, автоматически не возвращают новый объект, они могут возвращать какое-то значение, даже если оно пустое (void) (хотя это не требование, это просто хороший стиль программирования в более строгих языках). И последнее, методам, как и остальным свойствам классов, для их отличия от этих самых классов, лучше всего давать имена, начинающиеся с прописной буквы. Теперь давайте посмотрим маленький примерчик того, как создаются и вызываются методы, и потом разберемся во всех этих терминах, смысл которых, возможно, потихоньку начал от вас ускользать. // Класс Dog Dog = function( age ) { this.age = age; this.dogYears = this.calcDogYears( this.age ); } // метод Dog - вычисление возраста в собачьих годах Dog.prototype.calcDogYears = function( age ) { return ( this.age * 6 ); } // метод Dog - у собаки день рождения Dog.prototype.haveBirthday = function( ) { this.age++; this.dogYears = this.calcDogYears( this.age ); trace("С Днем Рождения!") } // создание экземпляра собаки (Dog) yeller = new Dog( 12 ); trace( yeller.dogYears ); // 72 yeller.haveBirthday( ); // метод выдает "С Днем Рождения!" trace( yeller.dogYears ); // 78
А заметили ли вы, что мы всегда определяем прототипы до того, как создадим экземпляр класса? Flash не может вызывать методы, которые еще не определены, поскольку он считывает и выполняет код в том порядке, как он написан (это все потому, что при загрузке swf файла вы никогда не можете быть уверены в том, загрузился ли определенный кусок кода). Посмотрев на конструктор класса в примере, вы можете углядеть противоречие вышесказанному. Метод calcDogYears вызывается из конструктора до того, как он будет описан в прототипе. Однако конструктор запустится лишь в тот момент, когда будет создан объект "yeller". Когда вы пишете код, вы должны рассматривать класс и его прототип как единый блок и определять их вместе. Методы прототипа обычно определяются после его свойств.
Хотя методы и можно поместить в экземпляр класса, такое происходит редко. Методы по природе своей более статические, чем строки или числа, так что они вероятнее всего останутся отдельным большим классом. Будет, возможно, ситуация, когда вы захотите установить методы во время выполнения, передавая их как аргумент конструктору. Это тот случай, когда вы раз и навсегда откажетесь от этого, окончательно запутавшись в многочисленных операторах if-else. Вскоре мы это разъясним.
MID files — стандартный файловый
MID files — стандартный файловый формат, используемый для преобразования, накапливания и хранения информации, представляемой MIDI-noc-ледовательностями.
MIDI — Musical Instrument Digital
MIDI — Musical Instrument Digital Interface — музыкально-инструментальный цифровой интерфейс. Является международным аппаратно/программным стандартом, специфицирующим кабели и аппаратуру Для целей комбинирования нескольких устройств, музыкальных электронных инструментов и компьютеров, использующих музыкальные коды и их наборы.
Мягкие ошибки обусловлены снижением
Мягкие ошибки обусловлены снижением намагниченности информационных перепадов на поверхности магнитного слоя при многократном повторении информация все-таки может быть считана правильно с такого дефектного участка.
Жесткие ошибки не позволяют считать информацию с поврежденного участка магнитной поверхности (слоя) в силу необратимости изменения характеристик магнитного носителя (на данном участке).
Модульность DOS (Все нижеприведенные рассуждения действительны и для ОС Windows XXX)
Модульность DOS (Все нижеприведенные рассуждения действительны и для ОС Windows XXX)
Сервис-инженер, да и пользователь, также должен иметь минимальную информацию о структуре операционной системы.
Важнейшей отличительной чертой DOS (дисковой операционной системы) является модульность. Модульность позволяет изолировать друг от друга отдельные части столь большой и сложной программы, какой является DOS.
На примере одной из самых распространенных ОС, MS-DOS (начальные буквы означают название фирмы-производителя), рассмотрим структуру ОС и место в ПК, где записаны программные модули.
MPEG Layer3 (MP3) — формат сжатия
MPEG Layer3 (MP3) — формат сжатия аудиофайлов в 6—8 раз без потери качества (как субъективного понятия) звучания.
MPEG — Moving Picture Expert Group
MPEG — Moving Picture Expert Group — исторически сложившееся название группы разработчиков — экспертная группа, занимающаяся подвижными изображениями.
MSDOS (Microsoft — Disk Operation System) — состоит из следующих основных модулей
MS-DOS (Microsoft — Disk Operation System) — состоит из следующих основных модулей:
Multimedia — комбинирование с
Multimedia — комбинирование с помощью компьютерных программ статических объектов, таких как тексты и изображения, с динамическими — звуковые, видеообъекты, анимация.
Наиболее уязвимые аппаратнопрограммные модули и узлы ПК и причины вызывающие их отказы
Наиболее уязвимые аппаратно-программные модули и узлы ПК и причины, вызывающие их отказы
1. Неустойчивая работа жесткого диска/Hard disk — деградация меток или стирание магнитного слоя.
2. Ненадежная работа микросхем ОЗУ (RAM) — старение микросхем.
3. Нарушение нормальной работы CMOS-памяти конфигурации — села батарейка поддержки, пробита микросхема CMOS-памяти.
4. Порча программы BIOS или POST в ПЗУ(Ж)М)— например, из-за сильных электрических наводок стерта часть программы или «пробита» часть памяти ПЗУ.
Наиболее уязвимые аппаратно-программные модули и узлы ПК и причины, вызывающие их отказы
1. Искажен загрузочный модуль на нулевой дорожке жесткого или гибкого диска — деградация и старение магнитной записи, работа вируса.
2. Стерты фрагменты системных драйверов — из-за внезапного выключения ПК, мощных электромагнитных помех, вирусов.
3. Внедрен вирус, перехватывающий процедуру нормальной загрузки, источник — хакер или неопытный пользователь.
Наиболее уязвимые аппаратные модули и узлы ПК и причины вызывающие их выход из строя
Наиболее уязвимые аппаратные модули и узлы ПК и причины, вызывающие их выход из строя
Наследование
Всё, что мы делали до сих пор можно охарактеризовать, как "композиция". В нашем случае это слово означает придумывание, составление объекта из более мелких компонентов, а не урок музыки. Наверняка вы уже используете композицию в ваших программах. Прежде, чем мы двинемся дальше, давайте дадим этому понятию точное определение, дабы потом не забыть, что же это такое. Как уже было сказано ранее, это понятие часто обозначается, как "имеется" (Has a). У объекта А имеется объект В. В доме имеется кухня, у собаки имеется хвост, у мятежника имеется причина. Трудно представить себе объект, у которого или в котором ничего не имеется (то есть ничего нет), в конце концов, во всём имеется (есть) что-то, всё из чего-то состоит. Однако всегда ли это так? Как насчёт самих идей? Например, какое отношение имеет "приспособление" к "холодильнику"? Какое отношение "разводной ключ" имеет к "разводу" или к "инструменту"? Какое отношение Джеймс Дин имеет к Рональду Рейгану? К Элвису? К Че Геварре? Как только мы начинаем организовывать идеи и концепции, одних "имеющихся" понятий становится недостаточно. Теперь нам потребуется "наследование" -- понятие из разряда "являющихся" (Is a).
Прежде чем продолжить, давайте познакомимся с этим понятием. Понятие "имеющийся" предполагает содержание одного предмета в другом. В машине есть двигатель, в двигателе есть поршни, в поршнях есть... э-э-э... такие маленькие круглые чёрные штуковины, кажется (прошу прощения, но этим ограничиваются мои познания в автомобилях). Понятия "являющиеся" используются, когда один объект является типом другого. Так автомобиль является транспортным средством, транспортное средство является машиной, машина является созданным человеком приспособлением с различными вращающимися частями (ещё раз прошу прощения!). Теперь самое время остановиться и поразмыслить о различных системах наследования. Вот некоторые разъяснения.
"Наследование" несложно осознать, но его трудно представить визуально. В реальном мире ничто не ведёт себя абсолютно одинаково. "Наследование", это скоре подсознательная система классификаций, если так можно выразиться. Очень просто увидеть млекопитающее, когда с ним разговариваешь, но ведь такого животного, как "млекопитающее" не существует. Есть только типы млекопитающих. Это обстоятельство, конечно же, не означает, что слово "млекопитающее" для нас бесполезно. Но ведь нет же в зоопарке клетки с надписью "млекопитающее". Раньше мы говорили об объектах, как о коробках или контейнерах. Это допустимо для "композиции", где вы помещаете одни объекты внутрь других. Однако такого рода определения не работают при использовании "наследования". Чтобы представить себе "наследование", нам понадобится немного другая модель.
Давайте-ка ещё раз убедимся, что мы поняли разницу между "имеющимися" и "являющимися" отношениями между объектами (рассмотрим хотя бы простейшие случаи). Изучите нижеприведённый список и определите, являются ли отношения между объектами в каждой строке "наследованием" или "композицией" - "являющимися" или "имеющимися". Попробуйте найти единое общее для каждой группы "являющихся" (наследований), а также для всех "имеющихся" (композиций) примеров. Животное, млекопитающее, собака, пудель Компьютер, материнская плата, процессор, микросхема Артист, певец, рок-звезда, Элвис Дом, кухня, раковина, пробка Книжная лавка, компьютерный отдел, стенд "Flash", книга по actionscript Книга, книга по компьютерной тематике, книга о Flash, книга по actionscript Книга, глава, параграф, предложение, слово Континент, страна, регион, город/деревня, улица, дом Азия, Китай, Сиань, ЗенгКуоАн, 15 http://www.macromedia.com/support/flash/ Приложение, документ, полоса прокрутки, указатель Окно, диалоговое окно, сообщение об ошибке, очередь на печать Еда, десерт, пирог, банановый крем 01 (204) 435-8301
Теперь давайте вместе подробно рассмотрим эти примеры (только не будем на них особенно задерживаться!)
Животное, млекопитающее, собака, пудель - Наследование.
Пудель - это собака, собака - это млекопитающее, млекопитающее - это животное. Какие свойства добавляются на каждом уровне? Попробуйте "прикрепить" вот эти: шерсть, глаза, дикий, домашний.
Компьютер, материнская плата, процессор, микросхема - Композиция.
В компьютере есть материнская плата, на материнской плате есть процессор и так далее. Если у компьютера есть кнопка включения, есть ли она у процессора? (только ради бога не говорите, что у процессора их 5 миллиардов!). А теперь попробуйте ответить на подобный вопрос, если речь пойдёт о животных и собаках.
Артист, певец, рок-звезда, Элвис - Наследование.
Элвис был рок-звездой, рок-звезда - это певец, певец - это артист. А все ли рок-звёзды - певцы? И куда в этом списке поместить актёров? Мы видим, что "Элвис" - это пример, а всё остальное - классы.
Дом, кухня, раковина, пробка - Композиция.
В кухне есть раковина, а раковина домом не является (разве только для тараканов в студенческом общежитии). Теоретически, можно вырезать кухню и утопить её в океане. Но кухня останется кухней. Это объект в доме.
Книжная лавка, компьютерный отдел, стенд "Flash", книга по actionscript - Композиция.
Каждый следующий физически находится в предыдущем. Можно, конечно, вообразить взаимообмен компонентов, например, устроить на кухне (которая давно на дне океана) компьютерный отдел. Огромное преимущество использования организованных объектов заключается в том, что один и тот же объект можно использовать в нескольких различных местах.
Книга, книга по компьютерной тематике, книга о Flash, книга по actionscript - Наследование.
Все они являются типами или подтипами. Книга по actionscript - это книга по компьютерной тематике. А примеры в этой цепочке есть? Какой пример вы бы добавили?
Книга, глава, параграф, предложение, слово - Композиция.
Этот пример с хитринкой. Перечисленные компоненты не всегда физические. Конечно, вы можете дотронуться до параграфа в любой книге, но, тем не менее, если мы говорим о книге вообще, то "наследование" не подходит. В книгах есть главы, предложения состоят из слов. Такая логика подходит и для предыдущих примеров на "Композиция", однако, в данном случае это более наглядно. На кухнях бывают раковины, и в моей кухне есть раковина. В обоих случаях раковина - это компонент кухни. Не путайтесь!
Континент, страна, регион, город/деревня, улица, дом - Композиция.
Хотя на этот раз абстрактное мышление просто необходимо, это всё же композиция. Совершенно очевидно, что улица - это не разновидность страны. Таким образом одни концепции могут быть компонентами других концепций. Внутри контейнера "континент" находятся "страны". В свою очередь "страны" содержат "регионы"...
Азия, Китай, Сиань, ЗенгКуоАн, 15 - Композиция.
Такая же иерархия, как и в предыдущем случае, только здесь мы видим конкретные примеры. Каждая концепция теперь снабжена объектом, но объекты эти являются компонентами и содержатся один в другом. На континенте Азия есть страна Китай. В стране Китай есть город Сиань.
http://www.macromedia.com/support/flash/ - Композиция.
В домене macromedia.com есть раздел под названием support. А в нём вы найдёте что-нибудь по Flash. Сюда вы можете обратиться, если ничто другое не помогает. Здесь вы можете найти копию справочного руководства. Подумайте, что представляет собой структура каталогов на вашем жёстком диске - "Композиция" или "Наследование"? И любая ли система каталогов может считаться композицией? Подумайте хорошенько.
Приложение, документ, полоса прокрутки, указатель - Композиция.
Да, программы объектно-ориентированы... в документах есть полоса прокрутки, на полосе прокрутке есть указатель (это такая маленькая штука, которую вы тянете мышкой)...
Окно, диалоговое окно, сообщение об ошибке, очередь на печать - Наследование.
Да, программы тоже используют наследование. Очередь на печать - это тоже разновидность окна, равно как и остальные (диалоговое окно и сообщение об ошибке).
Еда, десерт, пирог, банановый крем - Наследование.
Пирог - это еда, десерт - это еда. Обратите внимание, что структура древоподобна. Просто помните, что десерт может быть разный, равно как и пирог. Все эти структуры древоподобны.
01 (204) 435-8301 - Композиция.
Это всё равно, что сказать "Северная Америка > Манитоба > Майами > мой старый телефонный номер". Телефонная система очень похожа на почтовую. Чтобы вас найти, здесь используется строго структурированный каталог имён.
Наследование, как и объектно-ориентированное программирование вообще, становится необходимым инструментом, когда у вас появляется достаточно классов подобных друг другу и они начинают как бы само-организовываться (мечты, мечты!). Методика в любом случае достойна упоминания, потому что многие программы на основе Flash довольно просты и невелики в объёмах. Более того, нагромождать многочисленные уровни наследования для того лишь, чтобы привязать кнопки к страницам, это абсурд. Если же вы способны написать подобную маленькую программу, вы почувствуете себя начальником почтового отделения в небольшой деревеньке. Чтобы доставить почту, вам не нужно ничего, кроме имени получателя. В случае каких-либо изменений, если, например, кто-то приехал в город или изменил место жительства или же улица поменяла название, у вас есть возможность просто запомнить всё это. Вы станете смеяться над почтальонами больших городов, которые принимают всерьёз все эти нудные и непонятные правила и часами спорят из-за незначительного изменения в списке почтовых индексов. С другой стороны, ведь почта так и так доходит до адресата, и в больших и в малых населённых пунктах. Но до тех пор, пока вы знаете, что ваша деревенская система отличается от городской, вы можете быстро и чисто справляться со своими задачами, отвечая возрастающим потребностям, это факт. В конце концов, вам не нужно разделять млекопитающих до бесконечности - от собак до атомов. Одно из первостепенной важности умений в объектно-ориентированном программировании - умение найти золотую середину между сложностью и завершённостью (кстати, перед подобной же дилеммой стоит и автор, которому нужно написать короткую главу об ООП в ActionScript!).
Сделать: типы символов (?)
<< ООП во Flash 5 >>
Настройка сервера WINS
Настройка сервера WINS
Для установки сервера WINS следует выполнить следующие действия:
• Установить указатель на значок «Сеть» панели управления и дважды нажать кнопку мыши.
• Выделить протокол TCP/IP и нажать кнопку «Свойства».
• Открыть вкладку «Конфигурация WINS».
• Убедится, что заполнены поля «Главный сервер WINS» и «Второй сервер WINS».
В противном случае при перезагрузке компьютера установленные параметры службы WINS заменяются на параметры с отключенным распознаванием WINS.
Устранение проблем с помощью диагностических программ пакета ManageWise
ManageWise — это эффективное средство управления сетью от Novell и Intel, позволяет автоматически выявлять в сети более 400 критических ситуаций разного типа. MangeWise позволяет:
• управлять серверами NetWare, очередями печати и устройствами SNMP;
• анализировать сетевой график;
• проводить инвентаризацию программных и аппаратных средств на серверах и настольных системах;
• удаленно управлять настольными системами пользователей;
• предотвращать проникновение в систему вирусов.
По каждой проблеме, встречающейся в сети, выдаются подробные отчеты с предупреждениями и рекомендациями по их устранению. Поскольку MangeWise представляет собой набор файлов NLM, его можно легко установить на любом устройстве с NetWare 3 или 4 (в том числе удаленным способом). Вот основные возможности управления сетевой инфраструктурой ManageWise:
• устранение сетевой перегрузки;
• идентификация загружающих сеть пользователей;
• мониторинг обмена сообщениями между сетью и станцией;
• идентификация проблем в масштабе всей сети;
• декодирование множества протоколов;
• управление концентраторами, маршрутизаторами и телекоммуникационными устройствами посредством SNMP.Вирусы в среде Windows, способы внедрения
Каким образом создаются Windows-вирусы? Для того чтобы оставить выполняемый код в памяти Windows, существует три способа, которые (за исключением Windows NT) уже применялись различными вирусами.
Самый простой способ — зарегистрировать программу как одно из приложений, работающих в данный момент. Для этого программа регистрирует свою задачу, окно которой может быть свернутым, регистрирует свой обработчик системных событий и т. д.
Второй способ — выделить блок системной памяти при помощи DPMI-вызовов и скопировать в нем свой код (вирус Ph33r).
Третий способ — остаться резидентно как VxD-драйвер (Windows З.хх и Windows 9x) или как драйвер Windows NT.
Перехват обращений к файлам производится одним из двух способов: либо перехватываются вызовы INT 21h (Hook_V86_Int_Chain, Get/Set_V86_Int_Vtctor, Get/ Set_PM_Int_Vector), либо перехватывается системный вызов API. Затем резидентные Windows-вирусы действуют примерно так же, как и DOS-вирусы: перехватывают обращения к файлам и заражают их.
Для обнаружения уже имеющейся в памяти резидентной копии используются примерно те же способы, что описаны выше, за исключением VxD-вирусов.
Известные VxD-вирусы загружаются в память при загрузке Windows. Для этого они записывают команду запуска в файл конфигурации Windows SYSTEM.INI. Если в этом файле уже есть команда запуска вирусного VxD-файла, то вирус не производит повторной регистрации VxD-файла.
NAV
NAV
По объему продаж — второй антивирус в мире (после SCAN). По качеству детектирования вирусов весьма средняя программа. Вызывает ложные срабатывания. По остальным пунктам замечаний не имеет. Удобный пользовательский интерфейс, большое количество дополнительных функций, версии под все популярные платформы.
Из-за недостаточно качественного детектирования вирусов пользователи NAV часто попадают в ситуацию, когда для обнаружения и лечения вируса им приходится обращаться к антивирусным продуктам других фирм.
Фирма-разработчик — Symantec.
Navigation
ООП во FLASH 5 |
Введение |
Объекты |
Классы |
Экземпляры |
Область видимости |
Наследование |
Прототипы |
Старшинство |
Переназначение |
Защита |
Аргументы |
Конструктор |
Методы |
Свойство Proto |
Массив аргументов |
Метод Callee |
Оператор New |
Метод Extend |
Метод Super |
Особые методы |
Заключение |
Глоссарий |
О проекте |
© 2001
Debreuil Digital Works
Не открывается или не закрывается дископриемник
Не открывается или не закрывается дископриемник
Прежде всего необходимо проверить поступление сигналов при нажатии клавиши OPEN/CLOSE на МСУ. При отсутствии таких сигналов следует убедиться в исправности МСУ.
Затем необходимо посмотреть, проходит ли при нажатии клавиши OPEN/CLOSE сигнал с драйвера на двигатель загрузки. Если при поступлении сигнала двигатель не включа-ется, проверке подлежит исправность двигателя (возможно, что заклинило дископриемник). Если сигнал на включение отсутствует, необходимо проверить цепь между двигателем загрузки и МСУ (в частности, драйвер двигателя).
Неисправность ПК может быть устранена
Неисправность ПК может быть устранена либо ремонтом поврежденной компоненты, либо ее заменой.
Систематически проявляющаяся неисправность легче поддается диагностике, чем эпизодически действующая.
Отказы — это тоже неисправность, но двоякого рода.
Эпизодические отказы, редко повторяющиеся, могут и не мешать нормальной работе пользователя, тем более, что предотвратить их полностью невозможно. Но если частота этих отказов превышает, скажем так, порог чувствительности пользователя, это уже превращается в проблему,которую необходимо решать. Такие отказы называются систематическими.
Впрочем, и один-единственный отказ может причинить столько хлопот ,что его предотвращение вполне может окупить все труды пользователя. И поскольку в нашей «Диагностике...» ОТКАЗАМ отводится основное место, в конце главы мы приведем возможный перечень их причин.
В персональном компьютере (ПК) с его «морем» или «океаном» памяти (до 2-4 Гигабайт) только маленькая часть, ФИЗИЧЕСКИ ОТЛИЧНАЯ от той, что расположена на магнитном носителе (жестком диске), является неразрушаемой — так называемая базовая система; и такая же маленькая часть НА МАГНИТНОМ НОСИТЕЛЕ — перезаписываемая системная область. По отношению к основной памяти эти части занимают ничтожный процент (примерно 0,1-1%).
Однако именно эта часть занимает основное внимание опытного пользователя при устранении неполадок, связанных с отказами.
При тестировании ПК программой POST (а она зависит от конкретной BIOS) предусмотрена следующая звуковая сигнализация:
1. Длинный сигнал или продолжительные короткие гудки — неисправен блок питания.
2. 1 короткий сигнал или 1 длинный и 2—3 коротких — неисправен видеоадаптер.
3. 1 длинный и 1 короткий сигнал — неисправна системная плата.
4. 1 короткий сигнал (экран дисплея не светится) — неисправен дисплей.
5. 3 коротких сигнала — ошибка при обращении к ОЗУ.
6. 9 коротких сигналов — ошибка в чековой сумме ПЗУ BIOS и т.д.
В данных случаях мы имеем достаточно конкретное указание на место, в котором локализована неисправность. В случае неопределенности причины отказа такая локализация может быть затруднена.
Неисправности возникающие при ремонте
Неисправности, возникающие при ремонте
Неисправности могут возникнуть при проведении диагностики и ремонта П, производимых слабо подготовленным ремонтником. Ниже приводятся неисправности такого рода:1. Во избежание выхода из строя блоков, узлов и плат разбора и сборка П производится только при отключенном от электросети П.
2. Во избежание взрывов радиокомпонент все паяльные работы производятся только при отключенном от электросети П.
Некоторые особенности пользования утилитой NDD
Некоторые особенности пользования утилитой NDD
Когда файл открыт, соответствующая служебная информация копируется с диска в память (ОЗУ). При добавлении к концу файла новых данных обновляется только информация, находящаяся в памяти. Служебная информация на диске не обновляется до тех пор, пока файл не будет закрыт. Norton Disk Doctor использует для диагностики только информацию, записанную на диске.
Поэтому, когда информация на диске не соответствует информации в памяти, Disk Doctor выдает ошибку, обычно «Потерянные кластеры» (tost claster). Ошибки в действительности не существует, сообщение об этой ошибке исчезает после того, как файлы будут закрыты.
Необходимо помнить что резидентные
Необходимо помнить, что резидентные вирусы отличаются гораздо большим коварством и изощренностью, чем нерезидентные.
Неправильная конфигурация системы
Неправильная конфигурация системы
Несовместимость драйверов
Несовместимость драйверов
В процессе установки может выясниться, что модем не набирает номер или не устанавливает связь.
Для выяснения причин в справочной системе найдите раздел «Устранение трудностей, возникающих при работе с модемом».
При неправильной настройке модема ряд возможностей программ связи может быть недоступен. Описанные ниже действия помогут провести проверку настроек модема и программ связи Windows 9x.
Прежде всего необходимо проверить, совместимые ли файлы драйверов Windows 9x были загружены, так как часть драйверов, используемых в программах связи Windows 3.1, несовместимы и могут привести к прекращению работы модема или последовательных (СОМ) портов.
Чтобы убедиться в наличии совместимых файлов, используемых программами связи:
• Проверьте размеры и дату создания файлов COMM.DRV и SERIAL.VXD в каталоге System и сравните их с исходными на дискете или компакт-диске с Windows 9x.
• Проверьте наличие следующих строк в файле System.ini:
[boot]Comm.drv=Comm.drv
[386enh]
device=*vcd
• Для возврата к исходным драйверам Windows 9x просмотрите описание драйверов последовательных портов в списке устройств (значок «Система» на панели управления).
• Запустите программу «Установка оборудования» с панели управления для определения и установки драйверов Windows 9x.
Драйвер SERIAL.VXD не включен в файл System.ini. Вместо этого Windows 9x загружает его по мере необходимости, используя реестр. Соответствующий файл с расширением *.vcd также отсутствует в System.ini, поскольку он встроен в файл VMM32.VXD.
Удалите из списка устройств все лишние модемы, чтобы они не могли приводить систему к конфликтам.
Чтобы убедиться, что модем доступен:
• Дважды щелкните значок «Система» на панели управления и выберите вкладку «Устройства».
• Выберите из списка модем и нажмите «Свойства».
• Убедитесь, что устройство работает нормально. Для проверки правильности используемого порта:
• Дважды щелкните значок «Модемы» на панели управления.
• Выберите нужный модем и нажмите «Свойства».
• На вкладке «Общие» проверьте, правильно ли указан порт. В противном случае выберите порт и нажмите кнопку ОК.
Чтобы проверить, правильно ли установлены адрес I/O последовательного порта и прерывания IRQ:
1. Дважды щелкните значок «Система» на панели управления.
2. Выберите вкладку «Устройства», а затем — «Порты СОМ и LPT».
3. Выбрав необходимый порт, нажмите кнопку «Свойства».
4. Выберите вкладку «Ресурсы» для просмотра текущих настроек ресурсов порта. Для задания правильных настроек обратитесь к документации по модему.
5. Убедитесь, что в списке конфликтующих устройств на вкладке «Ресурсы» отсутствуют конфликты в ресурсах с другим оборудованием.
6. При наличии таких конфликтов нажмите кнопку «Изменить значение» и выберите такую конфигурацию, которая не приводит к конфликтам в ресурсах.
Устанавливать модем на последовательный порт COM3 не I рекомендуется, поскольку к нему обычно подключена мышь либо другое оборудование (к этому последовательному порту обычно подключается и сканер).
Обычно С0М1 и COM3 порты используют одинаковое прерывание IRQ и на большинстве компьютеров не могут использоваться одновременно. То же относится и к портам COM2 и COM4. Измените, если это возможно, настройки IRQ портов COM3 и COM4 так, чтобы избежать конфликтов. Кроме того, некоторые типы видеоадаптеров могут приводить к конфликтам в адресе с портами COM4.
Чтобы обойти эту проблему, воспользуйтесь другим последовательным портом или замените видеоадаптер.
Несовместимость возникающая при смене контроллера
Несовместимость, возникающая при смене контроллера
Если вы форматировали SCSI-диск на одном контроллере, а читаете или пишите данные на другом, может возникнуть несовместимость форматов нижнего уровня. Чаще всего такие проблемы возникают с магнитооптическими дисками.
Нет места для системы на дискеадресате/ Unsufficient disk space for system
Нет места для системы на диске-адресате/ Unsufficient disk space for system
Особое место в ряду проблем с жестким диском имеет выдача сообщения утилитой DOS SYS о том, что для замены системных файлов DOS на диске нет достаточного места для системы. Для устранения проблемы создайте загрузочную дискету с помощью команды DOS format a:/s или запустите Disk Tools и выберите «Создание загрузочного диска».
Если это не помогает, запустите Aidstest, Antiviral Toolkit Pro, Dr. Web, Adlnf или Norton AntiVirus.
«Not ready error (reading/writing)
«Not ready error (reading/writing) DEVICE» (ошибка готовности (чтение/запись) устройство С:, D:, Е:»)
Эта ошибка обычно относится только к гибким дискетам. DOS сообщает, что диск не готов принимать или передавать данные, вероятно, потому, что защелка дисковода не закрыта или дискета плохо вставлена. Удостоверьтесь, что дискета вставлена хорошо и защелка дисковода закрыта, затем нажмите клавишу R (повторить).
1. Если это жесткий диск, дайте ему охладиться в течение нескольких часов и посмотрите, не исчезла ли ошибка. Если диск работает, это означает, что микросхема на диске не выдерживает нагрева. Скопируйте весь диск, подкаталог за подкаталогом, позволяя диску остывать, если это необходимо. Еслиохлаждение жесткого диска не улучшает положения, вероятно, имеется физическая ошибка. 2. Можно повторить процедуру для жесткого диска, дав ему, наоборот, прогреться. Физические параметры диска могут «плавать» и поэтому отличаться: холодный диск имеет одни параметры (дорожки «сжимаются»), разогретый диск имеет другие параметры (дорожки «расширяются»). Если диск работает, это означает, что диск сильно меняет параметры при нагреве.
Скопируйте весь диск, подкаталог за подкаталогом, не позволяя диску остывать, если это необходимо. Если разогрев жесткого диска не улучшает положения, вероятно, имеется физическая ошибка. Запустите Calibrate опцию «Исправления сбойного сектора». Если ошибка еще существует, используйте процедуру «Восстановление (извлечение) данных со сбойного диска».
Отказы при установке, запуске и эксплуатации CD-ROM
Какие интерфейсы используются для подключения CD-ROM к ПК? Для подключения накопителей CD-ROM используются три разновидности интерфейсов: SCSI/ASPI, IDE/ATAPI, специализированные интерфейсы.
SCSI — наиболее универсальный и наиболее производительный интерфейс, позволяет подключить до семи дисководов к одному основному адаптеру. Интерфейс ASPI состоит из двух частей:
• программа-драйвер ASPI-Manager;
• драйверы для отдельных подключаемых к интерфейсу устройств.
Покупая CD-ROM с интерфейсом SCSI, убедитесь в том, что ASPI-драйвер совместим с операционной системой вашего ПК, a ASPI-Manager основного адаптера соответствует SCSI-драйверу накопителя.
Интерфейс IDE/ATAPI является дополнением к интерфейсу ATA (AT Attachment), к которому обычно подключаются НЖМД. ATAPI — это стандартный расширенный ин-
терфейс (Enhanced IDE) для CD-ROM. Он преобразует команды SCSI/ASPI к стандарту IDA/ATA. В основном IDE/ АТА-накопители на CD-ROM подключаются ко второму разъему интерфейса, а к первому разъему подключается НЖМД.
Необходимо помнить, что к одному вторичному IDE-разъему можно подключить не более двух дисков. Специализированные интерфейсы обладают небольшими возможностями и малым быстродействием.
Основной причиной отказов при работе CD-ROM обычно являются дефекты на поверхности компакт-диска (диска CD-ROM).
Другой часто встречаемой причиной является несовместимость программных драйверов CD-ROM с инсталлированной на компьютере операционной системой.
Восстановление работоспособности жесткого диска с помощью программы SpeedStore
Подпрограмма HardPrep
В случае почти полной потери работоспрсобности жесткого диска можно попытаться провести его реинициализа-цию (форматирование на низком уровне) по старым меткам с помощью программы HardPrep.
О проекте
Авторские права на учебник принадлежат его создателю
Робину Дебройлу (Robin Debreuil).
Первоисточник на английском: http://www.debreuil.com/docs/
Русское зеркало: http://debreuil.flashmaster.ru/
ДАННАЯ РЕДАКЦИЯ УЧЕБНИКА ПРЕДНАЗНАЧЕНА ИСКЛЮЧИТЕЛЬНО ДЛЯ ЛИЧНОГО OFF-LINE ПОЛЬЗОВАНИЯ, ЛЮБОЕ КОММЕРЧЕСКОЕ ИСПОЛЬЗОВАНИЕ И ПУБЛИКАЦИЯ В СЕТИ НЕДОПУСТИМЫ !
Перевод учебника на русский язык сделан группой участников мейл-конференции "RuFlash" в составе: Alexander Babaev [ 15, 17 ] EugeneP [ 13, 14 ] Nikolay & Alex [ 4-8, 10-12, 18-22 ] ОСОБАЯ БЛАГОДАРНОСТЬ ! VM [ 1-3, 9, 16, общая редакция ]
Оформление: VM Studio
10.12.2001
Мейл-Конференция "RuFlash" ("RUSSIAN FLASH NEWS")существует с мая 1999 года, на данный момент число ее подписчиков составляет более шестисот человек. Конференция предназначена для оперативного обмена новостями, мнениями между русскоязычными пользователями пакета Macromedia Flash, обсуждения технологии работы в нем и других аналогичных или связанных с ним программах. Разрешается обсуждение вопросов близких к тематике конференции или каким либо образом влияющих на развитие и распространение Flash технологии. Подписчиком конференции может быть любой, без каких либо ограничений, "житель" Сети, имеющий адрес электронной почты, если он согласен с ее Правилами и соблюдает их при общении с другими подписчиками.
<< ООП во Flash 5 >>
Объекты
personA = new Object();
personA - это новый Объект. Теперь можно добавить объекту новые свойства, как это показано ниже: personA.name = "Ann"; personA.age = 31;
Это означает, что: personA имеет свойство name; (имя), значение которого равно "Ann" personA имеет свойство age (возраст), значение которого равно 31
Достаточно просто. То же самое можно сделать по другому: personA = { name:"Ann", age:31 }
ActionScript игнорирует пробелы и табуляцию. Например, создать объект personA можно было бы так: personA = { name : "Bob", site : "bob.com", favs : { site1 : "flash.com", site2 : "flesh.com" } }
Это иногда полезно для облегчения понимания, но имеет свой недостаток - невозможность построчных комментариев. Полезно запомнить следующий синтаксис для быстрого создания объектов: o = { x:x, y:y, z:{a:a, b:b} }
Обратите внимание на скобки, запятые, двоеточия и отсутствия точки с запятой в конце строки.
Фигурные скобки { } быстрый и удобный способ создания объекта. Вот другой объект: personB = new Object(); personB.name = "Bob"; personB.age = 25; personB.hobby = "drinking";
А это то же самое: personB = { name:"Bob", age:25, hobby:"drinking" }
Это было просто. Теперь у нас есть два объекта: personA и personB. Каждый из них имеет два свойства: name и age, а PersonB имеет еще одно дополнительное свойство hobby (хобби). Если вам что-то не понятно, посмотрите пример еще раз, потому что следующее предложение содержит очень важную информацию.
Также где-то есть третий объект, имеющий два свойства - personA и personB. Это дает нам первое представление об ООП в работе. Все содержится внутри объекта.
Если ваши глаза начали стекленеть, подождите... Давайте рассмотрим такую метафору. Представьте, что кто-то переезжает. Это событие влечет за собой перевозку вещей. Здесь есть два подхода. Первый - подогнать грузовик (желательно со съемным тентом) к входной двери и затем погрузить в него вещи, ящики, полки и заплатить шоферу. Это самый быстрый и самый простой способ переезда и он прекрасно работает в жизни. "Нормальный" способ переезда - рассовать вещи по коробкам и подписать (какими-нибудь закорючками) все коробки, согласно их содержанию. Это включает принятие тысячи решений и неотложных действий в час и это хороший тест для супругов, если вы когда-нибудь такой искали.
Боб и Энн переезжают. Давайте поможем им разложить их вещи по коробкам. Объекты, подобны коробкам, так что это не причинит вреда вашему обучению. Общеизвестно, что американцы самые "переезжающие" люди в мире (ok, после тибетских кочевников). Трое из пяти американцев переезжают каждые пять лет, совершаются миллионы и миллионы переездов. Дальнейшее исследование показало, что в каждом из этих переездов, имеется ящик с пометкой "important stuff" (важные вещи). Учитывая то огромное значение, которое имеет для американцев ящик "important stuff", мы и начнем с него. importantStuff = new Object(); importantStuff.money = 500; importantStuff.papers = 96; importantStuff.annPassport = "er246vjl"; importantStuff.bobPassport = "kl554mkt";
Заметили, что мы добавили несколько единиц в ящик? А если мы поместим туда что-нибудь еще, что уже находится в другом ящике, например шкатулку с побрякушками? importantStuff.jewelryBox = 1;
Это кажется правильным, но если Энн захочет найти свое ожерелье, сможет ли она сделать это? Мы поместили список вещей в каждый ящик, но ее ожерелья нет в списке. Что мы действительно должны сделать - создать список того, что находится в шкатулке с побрякушками, что-нибудь вроде этого: importantStuff.jewelryBox = new Object(); importantStuff.jewelryBox.necklace1 = "Pearl"; // подделка importantStuff.jewelryBox.necklace2 = "Diamond"; // подделка
Теперь шкатулка с побрякушками имеет список ее содержимого (конечно же не забываем комментировать при необходимости). Это не лучшее решение для Энн, потому что список ее драгоценностей, находится внутри закрытой шкатулки. Ей потребуется все открыть, чтобы найти свое ожерелье. Однако является удачей для нас то, как объекты ведут себя в ActionScript, поэтому оставим ящики так, как они есть. Надеюсь у нее нет возражений на этот счет.
Мы поместили объект в объект - ящик в ящик. Теперь не проблема увидеть другой путь. Предложите им использовать два транспортных средства для переезда: автомобиль и грузовик. Часть ящиков сложить в один, часть в другой. "Important stuff" находится в автомобиле, так что ожерелье может быть найдено в car.importantstuff.jewelrybox.necklace1. Это очень похоже на то, что произошло, когда мы создали personA и personB. Мы создавали свои объекты просто "где-нибудь" и это где-нибудь всегда находится внутри объекта, когда вы создаете объекты в ActionScript. В мире Энн и Боба легко увидеть, что, в конечном счете, предельным контейнером будет Земля, Вселенная, ОМ. В ActionScript OM также существует, принимая форму "объекта, вызывающего Объект".
Итак, эти объекты в объектах кажутся достаточно простыми, но чтобы действительно понять происходящее с ними, придется копнуть много глубже. И с этим углубленным пониманием к вам придет Великая Сила. Осознайте, прочувствуйте ее, текущую по вашим венам. Доверься своим чувствам, Люк. Я твой отец. Давным давно, в далекой, далекой галактике ...
Давайте попробуем поместить объект внутрь personA, просто посмотрим, как это работает. personA.favs = new Object( );
Мы только что добавили новое свойство к personA. Проверьте ваш пульс и продолжайте, когда он придет в норму. Мы легко можем добавить свойства к этому новому объекту favs: personA.favs.site1 = "flash.com"; personA.favs.site2 = "google.com";
Или, как было описано выше: personA.favs = { site1:"flash.com", site2:"google.com" }
Теперь можете сказать:
personA имеет свойство favs, которое имеет свойство site1, со значением "flash.com".
personA имеет свойство favs, которое имеет свойство site2, со значением "google.com".
Область видимости
Область видимости является вторым следствием вложенности объектов. Область видимости означает что-то вроде "контекста", в том смысле, "что именно можно увидеть/понять с разных точек/мест". Возвращаясь опять к метафоре с младенцем, младенец может видеть "внутри" своей матери (с фонариком), но не может видеть видеть то, что видит мама. В ActionScript вы можете автоматически делать ссылку на область видимости объекта, в первую очередь, ActionScript будет искать свойства в собственной области видимости объекта.
Из всех характеристик контейнеров, которые нас больше всего интересуют, наиболее полезной является не их картонность, а их "контейнеробильность" (эдакое вот словечко в стиле Дж. Буша). В контейнеры можно помещать все, что угодно, включая другие контейнеры. Изнутри контейнера, можно видеть только те предметы, которые находятся в нем, но никак не те, что снаружи. И, хотя вы можете видеть другие контейнеры в вашей области видимости, заглянуть внутрь них вам не удастся. Рассмотрим несложный пример. Давайте создадим еще один объект personA: personA= { name : "Ann", favs : { site1 : "flash.com", test1 : function(){ trace (this.site1) }, test2 : function(){ trace (this.name ) } }, test3: function(){ trace (this.name ) }, test4: function(){ trace (this.site1) } }; personA.favs.test1(); // flash.com personA.favs.test2(); // null (ребеной не может видеть родителя) personA.test3(); // Ann personA.test4(); // null (родитель не может видеть внутри ребенка)
В этом примере, ключевое слово this означает "контейнер, вызвавший эту функцию", что по счастью означает именно тот контейнер, который мы пытаемся увидеть внутри. На данном этапе, совершенно необязательно разбираться в том, как это работает, достаточно на простом языке описать, что будет на выходе каждого свойства test. test1: Свойство, называемое site1 в контейнере personA.favs. // которое имеет значение "flash.com" test2: Свойство, называемое name в контейнере personA.favs. // нет такого свойства в personA.favs test3: Свойство, называемое name в контейнере personA. // которое имеет значение "Ann" test4: Свойство, называемое site1 в контейнере personA. // нет такого свойства в personA
Интересно, что будет, если мы изменим test4 следующим образом: test4: function(){return this.favs.site1;} // Обратите внимание на '.favs.'
Отлично, работает. Что же на выходе?
test4: Свойство, называемое site1, в контейнере, называемом favs, который находится в данном контейнере. // ? попробуйте найти значение, используя новый test4 код...
Что происходит, когда мы определяем свойство, используя ключевое слово var? Создаётся локальное свойство. "Локальный" - значит "действующий только в пределах границ данного объекта" или, если хотите, "в пределах границ данного контейнера". Что-то типа "первого парня на деревне", которые рождаются и умирают в пределах одной маленькой деревеньки и никогда никуда из нее не выбираются. Вот пример локального свойства, определённого в классе: A = function() { var temp = 5; this.x = temp; } trace(A.temp); // не здесь
Где именно действует свойство temp в данном примере? Его действие распространяется на часть функции A, являющуюся "объектом активации" (иногда также используется термин "конструктор функции"). Означает ли это, что мы найдём его с помощью выражения A.temp? Нет. Потому что в этом примере мы его только определяем, целиком объект активации остаётся не вызванным пока не вызвано выражение A(). Означает ли это, что он станет доступным после того, как вызвано выражение A? Нет. Потому что, после того, как вызвано A, он не принимается в расчёт. Вообще, каждый раз, когда вызывается функция, создаётся такой вот объект активации, и каждый раз, когда функция заканчивает своё действие, этот объект активации перестаёт приниматься в расчёт (хотя во Flash 5 из памяти он обычно не удаляется и не исчезает. Ай-яй-яй!). Итак, temp действует в пределах границ этого временного объекта. Однако, из-за того, что у этого объекта активации нет имени и он просто "находится неподалёку" во время действия функции, никакая другая часть программы не имеет к нему доступа (если только вы не вызовете функцию из функции и та вторая функция не увидит его с помощью своего свойства this). Когда он заканчивает своё действие, его локальные свойства не сохраняются.
Многие думают, что "в ActionScript всё, что ни есть - всё объект". Это не совсем так. Кое-что может и не быть объектом или, как это ни странно, может быть более, чем одним объектом. Вышеприведённая функция, это два объекта (вообще-то, строго говоря, целых три, но об этом позже). Существуют объекты-ссылки, называемые A, которые ведут себя, как любые другие объекты. Вы можете добавлять к ним свойства, например A.temp и эти свойства будут вставлены в объект A. У вас также есть блок инструкций, которые составляют функцию. Это и будет вторым объектом - объектом активации, который создаётся каждый раз, когда вызывается функция.
При использовании первого объекта A существует ряд ограничений. Главная задача этого объекта - дать имя блоку функций, чтобы его можно было вызвать. После этого можете использовать его именное пространство для хранения информации о самой функции. Такой информацией может быть, например, имя класса объекта (которое может понадобиться для исправления ошибок), или счётчик, который следит за количеством экземпляров, вызванных с помощью объекта. Такие свойства никак не повлияют на работу функции. В последующих экземплярах от них не останется и следа.
Второй объект, объект активации, производит самопостроение в процессе создания экземпляра. Он бывает совершенно необходим. У него свои границы действия, а его собственное ключевое слово this присваивается контейнеру, в котором он может создавать или изменять свойства. И это только часть его возможностей в создании экземпляра, самый распространённый, но вовсе не самый значимый случай его использования. У нас будет возможность убедиться в этом, когда мы начнём разбираться с прототипами.