Каким бы сложным ни был ваш программный проект, вы сможете сделать его более мощным и совершенным, прочитав подробное руководство, написанное Энди Гутмансом, ведущим разработчиком РНР 5, Стигом Баккеном, создателем PEAR, и Дериком Ретансом, лидером группы тестирования РНР.
Авторы делятся своими уникальными знаниями и предлагают множество реалистичных примеров. Вы познакомитесь с особенностями новой объектной модели РНР 5, важнейшими шаблонами проектирования, улучшенной поддержкой XML и веб-сервисов. Только здесь вы найдете высокоэффективные решения для разработки собственных веб-приложений, расширений, пакетов и сценариев командной строки. Рассматриваются: синтаксис и расширенные объектно-ориентированные возможности РНР - от свойств и методов до полиморфизма, интерфейсов и рефлексии; обработка ошибок; написание мощных веб-приложений (обработка ввода пользователя, работа с cookies, сессии); библиотека PEAR; интеграция с MySQL, SQLite и другими СУБД.
Те, кто перешел на РНР недавно, смогут быстро адаптироваться к этому языку, а опытные PHP-программисты, знакомые с его простотой и удобством в работе, откроют для себя всю его необычайную мощь.
Эта книга познакомит вас с новой флагманской технологией Microsoft .NET Framework и общеязыковой средой исполнения CLR. Вы научитесь разрабатывать Web-приложения в среде ASP.NET, а также Web формы ASP.NET. Кроме того, вы узнаете об элементах управления в ASP.NET, в том числе о серверных HTML-элементах управления и элементах управления прове;эки входных данных, о пользовательских и нестандартных элементах управления, о том, как осуществляется взаимодействие с базой данных Microsoft SQL Server средствами ADO.NET и элементов управления с поддержкой данных. Отдельную главу автор посвятил особенностям создания XML Web-сервисов и их применения для организации общего доступа к данным в распределенных средах. Книга адресована программистам, которые ничего не знают о Web-приложениях, но хотят заняться их разработкой, а также тем, кто уже знаком с ASP, но желает создавать более мощные и масштабируемые Web-приложения. Книга состоит из 10 глав, 2 приложений и предметного указателя.
eyeOS 1.6.0.3-1 - Кроссплатформенная сетевая операционная система с открытым кодом, основанная на принципе Desktop Operating System, т.е. операционная система с применением решения "рабочий стол".
Базовый комплект eyeOS включает в себя собственно операционную систему и несколько офисных приложений - текстовый редактор, календарь, файловый менеджер, мессенджер, веб-браузер, калькулятор и некоторые другие.
Главное отличие от других реализаций рабочего стола состоит в том, что в eyeOS у нет необходимости в установке программного обеспечения на данный конкретный локальный компьютер. Рабочий стол, используемые приложения и вся необходимая информация доступны, при условии доступа в Интернет, из любого современного браузера с поддержкой AJAX, например, Internet Explorer, Mozilla Firefox, Konqueror или Safari.
7-Zip (32-bit) 4.64 - архиватор с поддержкой 256-бит AES шифрования, открытым исходным кодом, интеграцией в оболочку Windows и поддержкой ZIP, RAR (включая RAR 3), CAB, 7z (собственный очень эффективный по степени сжатия формат), GZIP, BZIP2 и TAR архивов. Согласно тестам, степень сжатия для ZIP-формата на 2-10% выше, чем у PKZip/WinZip.
Интерфейс - многоязычный.
Возможность управлять содержанием документа внутри самого документа, т.е. все элементы внутри документа - это программируемые объекты с поддержкой для действий мыши и ввода с клавиатуры. 'Dynamic HTML' поддерживается и Microsoft`ом и Netscap`ом, версиями браузеров Internet Explorer 4.0 и Communicator 4.0. В книге будут рассмотрены стандартные 'Dynamic HTML ' свойства, методы и события.
1.События Dynamic HTML
2.Dynamic HTML
3.Свойства Dynamic HTML
4.Визуальные фильтры
Прошли те времена, когда в Интернете на уровне элементарных понятий нужно было объяснять, что такое хостинг. Все уже давно знают, что свою страничку вовсе не нужно держать на домашнем компьютере и каким-то образом обеспечивать к ней постоянный доступ, а на порядок проще разместить ее на так называемом хостинге - на компьютере хостинг-провайдера, чьей головной болью и одновременно сферой приложения профессиональных услуг является обеспечение круглосуточного доступа через Интернет к вашей страничке любых желающих.
Что интересно, еще буквально пару-тройку лет назад под хостингом только это и понималось - размещение и обеспечение доступа. В большинстве случаев это так и выглядело - ваша страничка где-то там лежала, периодически откликаясь на попытки ее посмотреть, а нередко и не откликалась, причем когда кто-то из ваших знакомых интересовался, в чем там дело, вы только криво усмехались и отвечали что-то вроде: "Да опять у хостера какие-то проблемы".
Но время шло, и хостинг как интернетовская услуга претерпел значительные изменения. Во-первых, значительно возросла стабильность доступа - если раньше странички "валялись" не менее пары раз в день, то теперь недоступность странички из-за проблем у хостера - явный нонсенс. Во-вторых, значительно изменилось само "железо", на котором размещаются сайты - раньше серверы собирали черт знает из чего на неизвестно чьей коленке, а сейчас любой уважающий себя хостинг-провайдер использует специальные серверы, созданные именно для решения подобных задач.
В-третьих, понятие "техническая поддержка пользователей" из полуабстракции в виде студента на телефоне, который говорил исключительно на фидошном сленге и через минуту общения с клиентом тут же терял человеческое лицо, превратилась во вполне четкую структуру, которая занимается именно поддержкой пользователей, а не их посыланием во все места с их идиотскими вопросами.
В-четвертых, хостинг-провайдеры стали намного более требовательно относиться к вопросам защиты данных клиентов. Если раньше сохранность вашей страницы на сервере хостинга зависела только от вашей предусмотрительности (то есть - догадаетесь ли вы всегда держать актуальную копию сайта на домашнем компьютере), то теперь, независимо от того, что именно вдруг произошло на сервере хостера, вопрос сохранности вашей информации лежит целиком на нем.
Хостинг как интернетовская услуга претерпел значительные изменения
В-пятых, понятие хостинга стало включать в себя большой набор всевозможных дополнительных видов услуг - предоставление почтовых ящиков, баз данных, скриптов, статистики, защиты от спама и вирусов, листов рассылки и так далее.
И при всем этом богатстве услуг вполне серьезный хостинг стал стоить совсем небольших денег - $5, $10, $15 или $20, в зависимости от дисковой квоты и набора предоставляемых сервисов. Причем уровень стоимости похожих пакетов услуг у разных хостинг-провайдеров отличается весьма незначительно. Не бывает такого, чтобы у одного хостинг-провайдера, скажем так, оптимальный хостинговый пакет стоил $10, а у другого - $30. Разница обычно составляет буквально два-три доллара. Но вот как раз эти ничтожные пара долларов в месяц могут означать весьма существенные отличия в уровне и видах предоставляемых услуг.
Мне не раз приходилось слышать разговоры из серии: "Ну, и зачем ты в этой конторе хостишься, когда вон у тех - и оплата ниже на два бакса, и дискового пространства предоставляют больше, и список сервисов - две страницы?". Но потом, когда пользователь, соблазненный экономией двух долларов в месяц и списком сервисов на две страницы, переходил на нового хостинг-провайдера, вдруг выяснялось, что техподдержка там отвечает на звонки с 11 до 17, кроме выходных, причем как они отвечают - так лучше бы вообще не отвечали; что сайт имеет тенденцию вдруг падать и не подниматься, потому что вырубилось электричество, защиты у провайдера нет, так что все серверы полегли, а поднялись после появления электричества далеко не все, но никто и не почесался; что из заявленного длинного списка сервисов реально представлена дай бог половина, причем из них восемьдесят процентов - вещи, которые никогда не понадобятся, зато многое из того, что действительно нужно, работает через пень-колоду, и так далее. И становится не сильно понятно, зачем такие проблемы из-за каких-то двух долларов в месяц? Стоит оно того или нет?
Или наоборот. Бывает так, что вебмастер (или организация) сели к какому-то хостинг-провайдеру, мучаются с его ненавязчивым сервисом, а переходить в другое место - боятся, потому что, дескать, "от добра добра не ищут". От добра - точно, не ищут. Но в данном случае речь идет совсем не о добре, а о некачественном предоставлении услуг.
Понятие хостинга стало включать в себя большой набор всевозможных дополнительных видов услуг
Закончились времена доморощенных хостеров. Точнее, почти закончились, потому что где-то еще остались конторы, предоставляющие хостинг на кошмарном уровне девяностых годов прошлого столетия. Но они очень скоро отомрут, потому что не могут, не умеют и не хотят оказывать эту услугу так, как полагается на современном уровне, а сегодняшнего клиента уже не удовлетворяют фразы "не волнуйтесь, завтра починим" или "пока нет, но скоро будет". Ему нужно сейчас, в полном объеме и качественно.
Однако у неискушенных клиентов тут же возникает вопрос: как выбрать хостинг-провайдера, если они все предлагают примерно одинаковый набор предоставляемых услуг, цены на которые различаются совсем незначительно? Здесь, на мой взгляд, следует обращать внимание на две вещи. Во-первых, сайт провайдера и данные, которые на нем представлены. Если на сайте нет никакой информации о самой компании, используемом оборудовании, защите, сертификатах и так далее - это шарашкина контора. Список предоставляемых услуг - еще далеко не все. Клиенты должны знать, где расположено помещение с серверами, как оно охраняется, что предусмотрено в случае проблем с электричеством, и так далее.
Конечно, тут многое зависит от ваших личных требований к хостингу. Потому что если вам нужно разместить страничку с парой фотографий и текстом "Когда-нибудь здесь будет крутая страница", тогда, конечно, вас мало будет интересовать охрана дата-центра и защита электропитания. Но в этом случае вам и нормальный хостинг не нужен - достаточно просто разместить страничку на одном из бесплатных серверов. А вот в случае размещения серьезного проекта, корпоративного ресурса и так далее все эти вопросы обязательно нужно выяснить, потому что, например, неответ корпоративного ресурса в течение какого-то времени может обернуться серьезными финансовыми потерями.
Ну, и во-вторых, поинтересуйтесь впечатлениями тех людей, которые уже пользуются услугами каких-то хостинг-провайдеров. Пускай они расскажут, что им понравилось, а что нет, с какими проблемами им пришлось столкнуться. Это может быть весьма показательным.
И последнее. Если вам не нравится тот хостинг-провайдер, на котором в настоящий момент размещен ваш проект, - не останавливайтесь перед тем, чтобы подыскать более подходящую фирму. Перенести проект на новый хостинг, как правило, особого труда не составляет, а выигрыш от подобных действий может быть весьма значительным. Потому что на современном этапе хостинг должен отвечать очень высоким требованиям. И есть немало провайдеров, которые этим требованиям действительно отвечают.
Еще недавно устройств поддерживающих Wi-Fi было не так уж много это компьютеры да точки доступа. В настоящее время с Wi-Fi могут работать сотовые телефоны, веб-камеры, мультимедиа-центры, проекторы и принтеры!
Многим из этих устройств не нужны точки доступа, они работают от передатчика подключенного к компьютеру. Имея такое оборудование многие забыли что такое спотыкаться о провода опутывающие квартиру.
Мультимедиа в домашней Wi-Fi сети или какие бывают беспроводные устройства.
Еще недавно устройств поддерживающих Wi-Fi было не так уж много это компьютеры да точки доступа. В настоящее время с Wi-Fi могут работать сотовые телефоны, веб-камеры, мультимедиа-центры, проекторы и принтеры!
Многим из этих устройств не нужны точки доступа, они работают от передатчика подключенного к компьютеру. Имея такое оборудование многие забыли что такое спотыкаться о провода опутывающие квартиру.
Веб-камеры: «шеф, а я вас вижу!»
Веб-камер работающих по интерфейсу Wi-Fi выпускается большое количество. Такое устройство можно установить в любом месте квартиры или офиса и наблюдать за происходящим через специальную интернет-страничку с домашней локальной сети.
Самые доступные устройства этой категории делает компания D-Link. Это веб-камеры D-Link DCS-G900 и D-Link — DCS-5300G.
DCS-G900 может автоматически включаться при обнаружении на подведомственной территории чьего-то движения. Очень полезная функция при установке домашней охранной системы.
Преимущество D-Link — DCS-5300G перед DCS-G900 заключается в подвижной головке с управляемым приводом вращения. Благодаря этому устройство можно направлять практически в любую точку пространства.
Единственный минус этих веб-камер малое разрешение обеих моделей — они могут передавать видео в разрешении лишь 320x240 точек, зато с частотой 30 кадров в секунду.
Фотоаппараты: передай мгновение.
Использование Wi-Fi в фотоаппаратах более чем обосновано — можно передавать картинки на компьютер, не подсоединяя ненавистные провода и не вытаскивая флэш-карту. Среди таких устройств можно выделить Nikon Coolpix L4.
Это компактная фотокамера с 4-мегапиксельным сенсором и трехкратным оптическим зумом. Есть у нее возможность макросъемки и записи видео в разрешении до 640x480 с частотой 15 кадр./с. Для хранения снимков применяются карточки памяти SD.
Единственный недостаток фотоаппарата в том, что для передачи кадров необходимо устанавливать дополнительные программы — в гостях воспользоваться беспроводными коммуникациями не удастся.
Еще одно устройство, оснащенное беспроводными коммуникациями, — это Canon Digital IXUS Wireless — 5-мегапиксельная фотокамера с 3-кратным оптическим зумом. Она способна записывать видео в разрешении до 640x480 точек и с частотой до 60 кадров в секунду. В качестве хранилища информации также используются карты SecureDigital.
Принтеры: твердые копии цифрового мира.
Одним из представителей таких устройств является принтер HP DeskJet 6983. В нем используется классическая термическая струйная технология с разрешением до 4800x1200 dpi и четырьмя картриджами, максимальный формат печати — лист A4.
Принтер быстр — в режиме черно-белой печати может выдавать до 36 страниц в минуту, а на цветной до 27 страниц в минуту. Устройство можно подключать как по интерфейсу USB, так и с помощью Wi-Fi. В последнем случае оно, увы, может работать только в режиме Ad-Hoc — при непосредственном контроле с компьютера.
Самым признанным считается офисный лазерный принтер с поддержкой Wi-Fi Epson AcuLaser C1900. Устройство позволяет печатать с разрешением 600x600 dpi. Скоростью оно, правда, не большая — до 4 страниц в минуту в режиме цветной печати, и до 16 — в черно-белой, — зато качество выше всяких похвал.
VoIP: бесплатные слова.
Сейчас в глобальной сети существует множество компаний, дающих возможность бесплатно или очень дешево переводить звонки из интернета на городские и мобильные телефоны. И если в квартире есть Интернет, то грех этим не воспользоваться для почти бесплатных звонков по всему миру.
Конечно, пользоваться этими сервисами можно и с помощью проводной гарнитуры или микрофона и наушников, но беспроводная связь намного удобнее и комфортней.
Например такой смартфон с поддержкой Wi-Fi, I-Mate SP5m. Он снабжен высококачественным цветным экраном с разрешением 320x240 точек, может работать в сетях GSM всех четырех диапазонов и использоваться в качестве MP3-плеера (информация хранится на карточках TransFlash). Смартфон по умолчанию работает в режиме автоматического роуминга — в «безинтернетном» месте он звонит по GSM, в хот-спотах же переключается на VoIP-телефонию.
Естествинно это не единственный смартфон. Для бесплатного разговора можно применять любой КПК или смартфон, в котором есть Wi-Fi, — например, HP iPAQ hx2415, Fujitsu-Siemens Pocket LOOX 710, Dell Axim X50v, Tungsten C.
Мультимедийные центры: кино и радио.
Лучше всего отдохнуть и расслабиться в любимой квартире, с бутылкой пива в руке, конечно за просмотром хорошего фильма. В этом поможет мультимедийный центр D-Link DSM-320. Он обеспечивает доступ к видеоархиву на компьютере из любой комнаты. Достаточно подсоединить к видеовыходу телевизор, а к аудио — звуковую систему, и можно наслаждаться кино или музыкой, хранящимися на жестком диске компьютера. Поддерживаются форматы звука MP3, WMA и WAV, видео — MPEG1/2/4, DIVX, QuickTime и Xvid, а также графические файлы — JPEG, JPEG2000, TIFF, GIF, BMP или PNG. Можно также прослушивать онлайновые радиостанции.
Есть еще боле продвинутая модернизация DSM-300 — это D-Link DSM-320RD. В его состав также входит собственный DVD-проигрыватель и кард-ридер SD — чтобы в случае, если диск оказывается под рукой, не бежать в другую комнату, дабы установить его в ПК. Увы, подобные недорогие устройства есть только у D-link.
Более дорогие устройства это Archos Pocket Media Assistant PMA430. Этот мультимедийный плеер работает на встроенной операционной системе Linux и позволяет проигрывать видео и аудио в самых разнообразных форматах. Его характеристики чем-то схожи с D-Link DSM-320RD — вот только DVD-привод, увы, отсутствует.
Самое полное решение проблемы домашнего кинотеатра — использование проектора. Для этих целей подходит Benq MP620. Это устройство выдает яркость в 2200 лм, контрастность картинки составляет 2000:1. Поддерживается разрешение XGA (1024x768).
И самым экзотическим устройством считается Wi-Fiрадио от Acoustic Energy. Посредством Wi-Fi устройство соединяется с сервером Reciva, который предоставляет список доступных интернет-станций и соединяет с выбранной.
По сравнению с обычным радио, которое имеет жесткий временной график, интернет-вещание позволяет заказать нужную передачу на любое удобное время. Кроме того, радио можно использовать в качестве клиентского модуля для проигрывания музыки с ПК.
Компьютер: свобода мышам.
И еще одно похожее устройство это Wireless VGA Extender (его другое название — LongView VGA Extender) но работающее не по технологии Wi-Fi.
Устройство состоит из двух частей — к одному блоку, внешним видом более всего напоминающему пресловутую точку доступа, можно подключить монитор, мышку и клавиатуру, второй устанавливается в сам компьютер. После этого системный блок можно запихать подальше под стол и забыть о нем.
Правда у этого устройства много недостатков — так, монитор можно подключить только по D-Sub, причем максимальное разрешение составит всего 1024x768, а мышки и клавиатуры поддерживаются только с интерфейсом PS/2.
Всё что вы когда-либо хотели знать про mysql, php и кодировки, но боялись спросить! Почему кириллица на сайте отображается вопросами? Как правильно настроить сервер mysql для работы с кириллицей? Как поменять кодировку в mysql? Как изменить кодировку в скриптах php? Какую выбрать кодировку? Как сконвертировать базу данных из одной кодировки в другую? Эти и многие подобные вопросы с завидным упорством снова и снова поднимаются на различных форумах уже который год. В этом посте я постарался рассказать что нужно делать чтобы такие проблемы не возникали и дать наиболее эффективные советы на тот случай если они все-таки возникнут.
Mysql, php и кодировки. Источник проблем.
Проблемы с кодировками в Mysql обусловлены историей создания этой программы. Так как разрабатывали mysql - европейцы - для них было естественно выбрать в качестве основной кодировки более удобную для себя latin1. Странно, но и по сей день большинство инсталляций Mysql по умолчанию работают с этой кодировкой что и создает для пользователей кириллицы проблемы с добавлением в базу данных строк на русском и украинском языках - в latin1 эти символы просто отсутствуют.
Поэтому первое что нужно сделать при возникновении проблем с кодировками в mysql - нужно проверить какая кодировка является для данной инсталляции mysql основной. Проверить это можно несколькими способами.
Настройка сервера mysql для нужной кодировки.
* Если вы админ сервера или вы самостоятельно настраиваете собственную mysql на рабочей машине.
Откройте файл конфигурации mysql.ini (/etc/mysql.cnf для os linux) и найдите такие строки.
Вместо “название_кодировки” нужно подставить название той кодировки, которую вы будете использовать. Для текстов на русском и украинском языках можно использовать utf8 или cp1251 (обратите внимание - названия кодировок в mysql пишутся без обычного дефиса!!!). Но я советовал бы использовать только utf8 - так вы себе сэкономите в будущем немало нервов.
Если такие строки в файле конфигурации отсутствуют, то это означает что база данных использует по умолчанию ту кодировку, которая была задана при компиляции. Добавьте в конфиг нужные вам настройки кодировок (примеры ниже) и перезапустите mysql.
Если у вас возникли проблемы с кодировкой на хостинге, где вы не имеете прав администратора, то проверить настройки кодировки для mysql вы сможете другим способом: установите соединение с mysql (при помощи консольной команды mysql или phpmyadmin - как вам удобнее) и выполните такой sql-запрос: show variables like ‘char%’. Этот запрос покажет вам значения переменных mysql, которые имеют отношение к кодировкам. Скорее всего, вы увидите что-то вроде такого
Я специально привел выше пример НЕПРАВИЛЬНО НАСТРОЕННОГО СЕРВЕРА!!! Обратите внимание - в нем используются в разных случаях три(!) разные кодировки. Начинающему веб-программисту в такой ситуации будет сложно добиться корректной работы скрипта. Старайтесь чтобы все переменные были настроены на работу с одной и той же кодировкой. Тогда 99% проблем которые обсуждаются на форумах у вас просто не возникнут. Тут даже не столь важно какую именно кодировку вы выберете - главное чтобы она была везде одинаковой. Но все-таки старайтесь указывать в настройках ту кодировку, которую действительно будете использовать для хранения данных.
Итак, удачный вариант - это если команда show variables like ‘char%’ из абзаца выше покажет вам список одинаковых кодировок для каждой из переменных и еще лучше будет если эта кодировка совпадет с той которую используете вы.
Если же кодировка mysql отличается от вашей - не спешите расстраиваться. Изменить любую из этих переменных вы можете либо глобально, для всех правкой конфигов (если вы администратор сервера), либо только для себя - sql-запросом set character_set_database=utf8 (если вы пользователь). Такой запрос должен будет выполняться из вашего php скрипта сразу после установки соединения с сервером mysql. Ниже пример для установки кодировки utf8 из php скрипта.
Что касается character_set_database - постарайтесь сразу создать базу данных в нужной кодировке (как вариант - отправьте такую просьбу в техподдержку хостинга), тогда вы избежите по крайней мере одного лишнего запроса к mysql во время работы скрипта. Если удастся,то строчку с ‘character_set_database’ из приведенного выше кода можно будет удалить.
Примеры настроек сервера mysql для правильной работы с кодировками.
При правильно настроенном сервере делать запросы из скрипта для установки правильной кодировки уже будет не нужно.
Настройки для utf8
Проверка реальной кодировки в которой хранятся базы данных mysql.
В случае если вы все (и сервер, и php скрипт) настроили правильно, по инструкции выше, но русские буквы все равно не отображаются - проверьте действительно ли ваши строки сохранены в той кодировке, которую вы указали в настройках!!!
Простой способ проверки - сделайте дамп базы данных в sql-формате и откройте его в текстовом редакторе. Sql-формат - это обычный текст. Если ваша база данных mysql в кодировке cp1251 - открывайте в Блокноте. Если utf8 - в любом редакторе с поддержкой Юникода. Пролистайте файл и убедитесь что все надписи с кириллицей нормально читаются и что sql-команды create table и create database, которые встречаются в дампе содержат правильные названия кодировки mysql (той кодировки, которая вами была указана в настройках сервера или в запросах из php-скриптов.
Если кодировка не подходит - сделайте бекап базы на всякий случай, перекодируйте sql-дамп в любом текстовом перекодировщике, замените названия кодировок в файле на правильные и заливайте полученный файл на сервер mysql. Теперь с кодировками все должно быть в порядке.
Жесткие диски (винчестеры), как электромеханические устройства, являются одним из самых ненадежных компонентов современного компьютера. Несмотря на то, что в большинстве случаев срок службы последних соизмерим, и даже превосходит время их эксплуатации до момента морального устаревания и замены более новыми моделями, все же отдельные экземпляры выходят из строя в течение первых месяцев эксплуатации. Выход жесткого диска из строя - самое худшее, что может случиться с вашим компьютером, так как при этом часто необратимо теряются накопленные на нем данные. Если резервная копия по какой-то причине отсутствует, то суммарный ущерб от поломки заметно превышает номинальную стоимость современных винчестеров.
Многие фирмы, пользуясь ситуацией, предлагают свои услуги по восстановлению информации с вышедшего из строя накопителя. Очевидно, это обходится недешево и целесообразно только тогда, когда на диске находилось что-то действительно ценное. В противном случае легче просто смириться с потерей.
Ремонт жестких дисков требует специального оборудования и практически невозможен в домашних условиях. Так, например, для вскрытия контейнера необходима особо чистая от пыли комната. Казалось бы, положение безнадежно и нечего даже помышлять о восстановлении поломанного диска в домашних условиях. Но, к счастью, не все поломки настолько серьезны, и во многих случаях можно обойтись для ремонта подручными (а иногда чисто программными) средствами.
Один из самых частых отказов винчестеров фирмы western digital (а также и некоторых других) выглядит следующим образом: жесткий диск не опознается bios, а головки при этом отчетливо стучат. Скорее всего, по какой-то причине не работает блок термокалибровки, и устройство не может обеспечить нужный зазор между головкой и рабочей поверхностью "блина". Обычно это происходит при отклонении от нормального температурного режима эксплуатации, например, в зимнее время, когда жесткие диски в плохо отапливаемых помещениях "выстывают" за ночь (при температуре 18...210С жесткий диск часто может исправно функционировать и с испорченным механизмом термокалибровки). Попробуйте дать поработать винчестеру в течение нескольких часов, чтобы он прогрелся, при этом рано или поздно винчестер попадает в необходимый диапазон температур и работоспособность (возможно, временно) восстанавливается. Разумеется, первым делом нужно скопировать всю информацию, поскольку работоспособность такого диска уже не гарантируется. То же можно рекомендовать и в отношении устаревших моделей без термокалибровки; часто они оказываются зависимыми от температурного режима, и с ростом износа винчестера эта зависимость проявляется все сильнее.
Вторым по распространенности отказом является выход из строя модуля диагностики при полной исправности остальных компонентов. Как это ни покажется парадоксальным, но полностью рабочий винчестер не проходит диагностику. При этом в регистре ошибок (порт ox1f1 для первого жесткого диска) могут содержаться значения, приведенные ниже:
Диагностические ошибки
Бит Содержимое Источник ошибки
7 0 Ошибка master диска
1 Ошибка slave диска
2-0 011 Ошибка секторного буфера
100 Ошибка контрогльной суммы, не устранимая избыточным кодированием
101 Ошибка микроконтроллера
Разные biosы могут различно реагировать на такую ситуацию, но все варианты сводятся к одному - жесткий диск не определяется и не "чувствуется". Однако на уровне портов ввода/вывода устройство функционирует отлично. Заметим, что существуют такие материнские платы (особенно среди новых моделей), которые, обнаружив ошибку микроконтроллера винчестера, просто отключают питание жесткого диска. Несложно написать для испорченного таким образом винчестера драйвер, который обеспечит работу с диском через высокоуровневый интерфейс int 0x13. Например, следующая процедура обеспечивает посекторное чтение и запись через порты ввода/вывода для первого жесткого диска в chs режиме.
lba mode для упрощения понимания не поддерживается. Необходимую техническую информацию обычно можно найти на сайте производителя вашего жесткого диска.
Этот фрагмент может служить вполне работоспособным ядром для драйвера 16-ти разрядного режима. Для упрощения понимания не включена задержка после каждого обращения к порту. В зависимости от соотношений скорости вашего процессора и контроллера диска эта задержка может и не потребоваться (в противном случае рекомендуется читать регистр статуса ox1f7, дожидаясь готовности контроллера). При этом не следует спешить с заменой такого жесткого диска на новый, с подобной неисправностью можно успешно работать не год и не два. Последнее, правда, лишь при условии, что все используемое программное обеспечение не будет конфликтовать с нестандартным драйвером. Писать драйвер, скорее всего, придется вам самому, поскольку не известно ни одной коммерческой разработки в этом направлении, а все любительские разработки выполнены в основном "под себя". Так, например, драйвер от kpnc hddfix3a поддерживает только винчестеры primary master до пятисот мегабайт и не работает в среде windows 95 (разработан на год раньше ее появления).
Более легкий, но не всегда осуществимый путь - запретить тестирование жестких дисков biosом или, по крайней мере, игнорировать результаты такового. Как это осуществить, можно прочесть в руководстве на материнскую плату (или обратиться за помощью к службе технической поддержки фирмы-производителя, поскольку в руководствах пользователя такие тонкости нередко опускают). Например, попробуйте установить "halt on" в "never" или перезаписать flach bios, модифицировав его так, чтобы тот не выполнял подобную проверку. Если Вам повезет, жесткий диск заработает! Однако иногда все же происходят и аппаратные отказы. Например, у винчестеров фирм samsung и conner отмечены случаи отказа модуля трансляции мультисекторного чтения/записи. Если это не будет обнаружено внутренним тестом устройства, то такой жесткий диск вызовет зависание операционной системы на стадии ее загрузки. Для предотвращения этого достаточно добавить в config.sys ключ multi-track=off и отключить аналогичные опции в blose. При этом, проиграв в скорости, все же можно заставить жесткий диск сносно работать. Понятно, что эксплуатировать восстановленный таким образом диск длительное время нерационально по причине потери быстродействия. Лучше приобрести новый, на который и скопировать всю информацию. С другой стороны, такой жесткий диск все же остается полностью рабочим и успешно может служить, например, в качестве резервного.
На том же connere эпизодически выходит из строя блок управления позиционированием головок, так что последние уже не могут удержаться на дорожке и при обращении к следующему сектору немного "уползают". При этом считывание на выходе дает ошибочную информацию, а запись необратимо затирает соседние сектора. Бороться с этим можно позиционированием головки перед каждой операцией записи/чтения, обрабатывая за один проход не более сектора. Понятно, что для этого необходимо вновь садиться за написание собственного драйвера. К счастью, он достаточно простой (можно использовать аппаратное прерывание от жесткого диска int 0x76 irq14, вставив в тело обработчика команду сброса контроллера. В данном случае подразумевается, что контроллер используемого жесткого диска проводит рекалибровку головки во время операции сброса. Некоторые модели этого не делают. В этом случае придется прибегнуть к операции позиционирования головки (функция ОхС дискового сервиса 0x13). Первые модели от вторых можно отличить временем, требуемым на сброс контроллера. Понятно, что электроника "сбрасывается" мгновенно, а позиционирование головки требует хоть и не большого, но все же заметного времени. Современные модели с поддержкой кэширования этого часто не делают или "откладывают" операции с головкой до первого к ней обращения. Разумеется, в этом случае кэширование придется выключить. Большинство bios позволяет это делать без труда, и нет нужды программировать контроллер самостоятельно. В другом случае вышедший из строя блок позиционирования (трансляции) подводит головки вовсе не к тому сектору, который запрашивался. Например, головки могли физически сместиться с оси, "уползая" в сторону. Разумеется, этот дефект можно скорректировать программно, достаточно проанализировать ситуацию и логику искажения трансляции. Многие модели позиционируют головку, используя разметку диска, что страхует от подобных поломок (к сожалению, сейчас от такого подхода большинство фирм отказались, выигрывая в скорости).
Конечно, все описанные программные подходы в действительности не устраняют неисправность, а только позволяют скопировать с казалось бы уже нерабочего винчестера ценные и еще не сохраненные данные. При этом ни к чему писать универсальный драйвер для win32 и защищенного режима. Вполне можно ограничиться dos-режимом. Для копирования файлов последнего должно оказаться вполне достаточно, конечно за исключением тех случаев, когда диск был отформатирован под ntsf или другую, не поддерживаемую ms-dos, систему. К счастью, для многих из них есть драйверы, которые позволяют "видеть" подобные разделы даже из "голой" ms-dos. В крайнем случае, можно ограничиться посекторным копированием на винчестер точно такой же топологии. При этом совершенно не имеет значения используемая файловая система и установленная операционная система.
Посекторно скопировать диск на винчестер с иной топологией трудно, но возможно. Дело в том, что многие современные контроллеры жестких дисков позволяют пользователю менять трансляцию произвольным образом. Для этого необходимо приобрести винчестер, поддерживающий lba-режим (а какой из современных жестких дисков его не поддерживает?). При этом он может быть даже большего объема, нежели исходный, но это никак не помешает копированию. Другой вопрос, что без переразбиения скопированный таким образом диск не "почувствует" дополнительных дорожек и следует запустить norton disk doctor, который устранит эту проблему.
Достаточно часто нарушается вычисление зон предком-пенсации. Дело в том, что плотность записи на разных цилиндрах не одинакова, так как линейная скорость растет от центра диска к периферии. Разумеется, гораздо легче постепенно уплотнять записи, нежели искать некий усредненный компромисс. На всех существующих моделях плотность записи изменяется скачкообразно и на последних моделях программно доступна через соответствующие регистры контроллера. При этом значения, выставленные в bios, практически любой жесткий диск (с интерфейсом ide) просто игнорирует. Предыдущие модели не имели с этим проблем, и только винчестеры, выпущенные в течение последних двух лет, склонны к подобным поломкам. Скорее, даже не к поломкам, а к сбоям, в результате которых искажается хранимая где-то в недрах жесткого диска информация. Если контроллер позволяет ее программно корректировать, то считайте, что ваш жесткий диск спасен. Конечно, придется пройти сквозь мучительные попытки угадать оригинальные значения, однако это можно делать и автоматическим перебором до тех пор, пока винчестер не начнет без ошибок читать очередную зону. Помните, что любая запись на диск способна нарушить низкоуровневую разметку винчестера, после чего последний восстановлению не подлежит и его останется только выкинуть. Производите только чтение секторов!
Если же контроллер не позволяет программно управлять предкомпенсацией, то еще не все потеряно. Попробуйте перед каждым обращением делать сброс контроллера, а точнее, его рекалибровку (команда ixh). В некоторых случаях это срабатывает, поскольку с целью оптимизации скорости обмена предкомпенсацией обычно управляет не один блок. И, кроме того, иногда контроллер кэша не учитывает предкомпенсацию, а его сброс реализует последнюю аппаратно. К сожалению, это по большей части догадки и результаты экспериментов автора, так как техническая документация фирм-производителей по этому поводу не отличается полнотой, а местами содержит противоречия. Можно испытать и другой способ - попробовать перезаписать микрокод контроллера (команда 92h). Конечно, это доступно только для специалистов очень высокого класса, но ведь доступно! Заметим, что не все контроллеры поддерживают такую операцию. С другой стороны, это и хорошо, так как уменьшает вероятность сбоя и не дает некорректно работающим программам (вирусам в том числе) испортить дорогое устройство. Жесткие диски от samsung обладают еще одной неприятной особенностью - часто при подключении шлейфа "на лету", при включенном питании, они перестают работать. Внешне это выглядит так: индикатор обращения к диску постоянно горит, но диск даже не определяется biosom, или определяется, но все равно не работает. Близкое рассмотрение показывает, что на шине пропадает сигнал готовности устройства. В остальном контроллер остается неповрежденным. Разумеется, если не обращать внимание на отсутствие сигнала готовности, то с устройством можно общаться, делая вручную необходимые задержки (поскольку физическую готовность устройства уже узнать не представляется возможным, приходится делать задержки с изрядным запасом времени). При этом, к сожалению, придется отказаться от dma-mode (а уж тем более ultra-dma) и ограничиться pio 1 (с небольшим риском - pio 2) режимом. Конечно, писать соответствующий драйвер вам придется опять самостоятельно. Разумеется, скорость обмена в режиме pio 1 по сегодняшним меркам совершенно неудовлетворительна и не годится ни для чего другого, кроме как копирования информации со старого на новый винчестер, но некоторые "нечистоплотные" продавцы компьютерной техники как-то ухитряются устанавливать подобные экземпляры на продаваемые машины. Будьте осторожны! Учитывая, что написание подобных драйверов для win32 - трудоемкое занятие, большинство ограничивается поддержкой одной лишь ms-dos, и вовсе не факт, что компьютер, демонстрирующий загрузку win95, содержит исправный, а не реанимированный подобным образом жесткий диск.
У жестких дисков фирмы samsung при подключении "налету" может появляться другой неприятный дефект - при запросах на чтение контроллер периодически "повисает" и не завершает операцию. В результате "замирает" вся операционная система (впрочем, windows nt с этим справляется, но, вероятно, не всегда). На первый взгляд может показаться, что с этого винчестера несложно скопировать ценные файлы, но при попытке выполнить это выясняется, что диск "зависает" все чаще и чаще и копирование растягивается до бесконечности. Однако если выполнить сброс контроллера, то можно будет повторить операцию. Это можно сделать аппарат -но, подпаяв одну кнопку на линию сброса и статуса. Последнее нужно для указания на ошибочную ситуацию, чтобы операционная система повторила незавершенную операцию. Если этого не сделать, то часть секторов не будет реально прочитана (записана). Или можно выполнять сброс автоматически, например, по таймеру. Чтобы не сталкиваться с подобной ситуацией, никогда не следует подсоединять/отсоединять винчестер при включенном питании. Очень часто это приводит к подобным ошибкам, хотя производители других фирм, по-видимому, как-то от этого все же защищаются, ибо аналогичной ситуации у них практически не встречается. Все же не стоит искушать судьбу... От аппаратных ошибок теперь перейдем к дефектам поверхности. Заметим сразу, что последнее встречается гораздо чаще и проявляется намного коварнее. Обычно это ситуация, в которой мало что можно предпринять. Но достичь главной цели - спасти как можно больше уцелевших данных - довольно часто удается. Возьмем такую типичную ситуацию как ошибка чтения сектора. Маловероятно, чтобы сектор был разрушен целиком. Чаще всего "сыплется" только какая-то его часть, а все остальные данные остаются неискаженными. Существуют контроллеры двух типов. Первые, обнаружив расхождение контрольной суммы считанного сектора, все же оставляют прочитанные данные в буфере и позволяют их извлечь оттуда, проигнорировав ошибку чтения. Вторые либо очищают буфер, либо просто не сбрасывают внутренний кэш, в результате чего все равно прочитать буфер невозможно. На практике обычно встречаются последние. При этом сброс кэша можно инициировать серией запросов без считывания полученных данных. Кэш при этом переполняется, и наиболее старые данные будут вытолкнуты в буфер. Остается их только прочесть. Конечно,-это крайне медленно, но, к сожалению, универсальной команды сброса кэша не существует. Разные разработчики реализуют это по-своему (впрочем, иногда это можно найти в документации на чипы, используемые в контроллере). western digital сообщает в техническом руководстве что при длинном чтении сектора без повтора контроль сектора не выполняется и он будет-таки целиком помещен в буфер. Кстати, так и должно быть по стандарту. Увы, остальные фирмы от него часто отклоняются по разным соображениям. Остается определить, какие же из прочитанных данных достоверные, а какие нет (если этого не видно "визуально" - например, в случае текстового или графического файлов)? Разумеется, в подобных рамках задача кажется неразрешимой, но это не совсем так. Дело в том, что можно произвести не только короткое, но и длинное чтение (ox22h req ploin long with retry), для чего можно использовать следующую процедуру. При этом кроме собственно данных читаются также и корректирующие коды. Автоматическая коррекция не выполняется (хотя некоторые контроллеры это реализуют аппаратно и не могут отключить автокоррекцию; в документации этот момент, кстати, не уточняется). Как правило, используются корректирующие коды Рида-Соломона, хотя последнее не обязательно. Математические законы позволяют не только определить место возникновения сбоя, но и даже восстановить несколько бит. При больших разрушениях можно определить только место сбоя, но достоверно восстановить информацию не удается.
Модуляция при записи такова, что все биты, стоящие справа от сбойного, уже не достоверны. Точнее, не все, а только в пределах одного пакета. Обычно за один раз записывается от 3 до 9 бит (необходимо уточнить у конкретного производителя) и содержимое остальных пакетов, как правило, остается достоверным. Самое интересное, что зачастую сбойный пакет можно восстановить методом перебора! При этом можно даже рассчитать, сколько вариантов должно получиться. Учитывая хорошую степень "рассеяния" корректирующих кодов можно сказать, что не очень много. И таким образом можно восстановить казалось бы безнадежно испорченные сектора, а вместе с ними и файлы, расположенные "поверх" последних.
Выше были перечислены наиболее типичные случаи отказов жестких дисков, которые поддавались чисто программному восстановлению если уж не винчестера, то хотя бы хранимых на нем данных. Разумеется, что иногда жесткий диск выходит из строя полностью (например, при неправильно подключенном питании, скачках напряжения) от вибрации или ударов, а то и просто из-за откровенного заводского брака. Есть один старый проверенный способ - найти жесткий диск такой же точно модели и заменить электронную плату. К сожалению, последнее из-за ряда конструктивных особенностей все реже и реже бывает возможно, а уж дефекты поверхности этот способ и вовсе бессилен вылечить. Поэтому, берегите свой жесткий диск и почаще проводите резервное копирование. Помните, что самое дорогое это не компьютер, а хранимая на нем информация!