Можно ли погулять в современном интернете на 27-летнем Mac Plus?

Новости по категориям 15 Декабрь 2013 Андрей Баксаляр Источник
Можно ли погулять в современном интернете на 27-летнем Mac Plus?

Если коротко – то да, можно!

Но не все так просто и односложно: на самом деле, чтобы заставить древнюю и крайне устаревшую машину (которая появилась в продаже раньше, чем был изобретен сам интернет в сегодняшнем понимании этого слова), ходить по современному Web-пространству, надо пройти через воду, огонь и медные трубы и не раз пуститься в пляс с бубном.

Разработчику из Денвера – Джеффу Кичеру (Jeff Keacher) удалось сделать почти невозможное. Об этом рассказал в своем блоге сам Джефф, а мы приводим на GB перевод его крайне увлекательной истории.

Как я представил 27-летний компьютер интернету

Возвращение к жизни старого компьютера – это как реставрация классического автомобиля: когда собственноручно «реинкарнируешь» сильно устаревшую вещь и заставляешь ее работать в современных реалиях, чувствуешь какой-то благоговейный трепет.

Точно так же было и с моим первым «настоящим» компьютером, моим Mac Plus, который я решил очистить от пыли и познакомить с современным интернетом.

Можно ли погулять в современном интернете на 27-летнем Mac Plus?

Мой Macintosh Plus. Внимание, спойлер: на этой фотографии на экране открыта Википедия

По сегодняшним меркам мой старенький Мак совсем уж скромный. В плане спецификаций он с огромным разрывом уступает даже моей электронной читалке Kindle. Еще бы: центральный процессор, работающий с тактовой частотой 8 МГц, 4 МБ оперативной памяти, 50 МБ винчестер и черно-белый дисплей разрешением 512 x 384 пикселей.

Мой сегодняшний десктоп примерно в 200 000 раз быстрее, и я еще не говорю о графическом процессоре. Но все же, это тот самый Мак Плюс, тот самый компьютерный гранит, что я грыз в детстве. Именно эта машина познакомила меня с языком программирования «C», такии понятиями как «жесткий диск», «модем» и даже «интернет».

Да, в каком-то смысле мой Мак уже тогда был подключен к интернету – сначала через BBS-ки (электронные доски объявлений), а позже и через сеть провайдера Lynx, к которой я подключался посредством дозвона обычным телефонным модемом (Dial-up). (Поверьте, ничто не сравнится с эротической литературой, к которой имеешь доступ на скорости 2400 бод в секунду в возрасте 13-ти лет)! Как бы то ни было, все это не имело отношения к стеку TCP/IP и, тупо, работало через терминальную связь, поэтому я никогда не был полноправным членом сети.

Так насколько трудно было бы сегодня исправить такое недоразумение имея на руках Mac Plus и свободное время?

Сначала все шло как по маслу. Я попросил мою маму отправить мне компьютер. Он прибыл в отличном состоянии, ведь все это время (с середины 1990-х) он мирно хранился в ее подвале. Я подключил его, подключил к нему внешний жесткий диск, щелкнул выключателем питания и стал наблюдать, как Mac начал пробуждаться от долгого летаргического сна радостным свечением крошечного кинескопа его CRT-монитора. Конечно, жесткий диск выразил небольшой и ворчливый протест после включения, но потом успокоился и затих, оказалось, что все данные остались на месте. По крайней мере так казалось первые несколько минут.

Можно ли погулять в современном интернете на 27-летнем Mac Plus?

Конечно, на некоторое время я впал в ностальгию, начал играть в старую-добрую игрушку Glider, и тут я услышал громкий хлопок и почувствовал запах гари. Испугавшись я сразу же щелкнул выключатели и вытащил вилки из розеток. Небольшое исследование корпуса компьютера на предмет источника едкого запаха выявило виновника: внешний жесткий диск. Электричество, побежавшее по компонентам устройства за столько лет забвения вывело из строя один из помехоподавляющих конденсаторов блока питания внешнего жесткого диска.

Можно ли погулять в современном интернете на 27-летнем Mac Plus?

Треснувший конденсатор из блока питания внешнего HDD

К счастью, Digikey до сих пор продает точно такие же конденсаторы (!), и я умею обращаться с паяльником, поэтому спустя пару дней я снова вернулся к моему Маку, а мой Мак вернулся к жизни.

Далее мне нужно было обзавестись каким-то браузером, обеспечить работу старого софта с TCP/IP, а также физически подключить мой Mac к домашней сети.

Найти веб-браузер было относительно несложно, к счастью, до сих пор в потайных уголках Сети имеются давно забытые пылящиеся, но работающие FTP-серверы с необходимым ПО. Приложение MacWeb 2.0 было достаточно старым, чтобы работать на моем Plus и достаточно новым чтобы рендерить HTML-странички и говорить на языке HTTP. Ну… типа. Но об этом чуть позже.

Можно ли погулять в современном интернете на 27-летнем Mac Plus?

Только вдумайтесь – в моем распоряжении было целых четыре мегабайта оперативной памяти! С другой стороны, мне повезло, ибо браузер MacWeb требовал для своей работы 2 МБ.

Аналогично удалось найти MacTCP, который смог запуститься на моей версии ОС – System 7.0. Он не поддерживал такую роскошь, как DHCP, однако браузер MacWeb заработал в связке с MacTCP, так что я осуществил-таки на своем древнем железе поддержку стека TCP/IP.

А вот физически подключить Mac к домашней сети оказалось очень непросто. Разумеется, у Mac Plus нет привычного нам сегодня Ethernet-порта, не говоря уже о таких вещах как WiFi (тогда их попросту еще не было в планах разработчиков). Несколько компаний примерно 15 лет назад производили адаптеры SCSI-Ethernet, но эти штуки сегодня невероятно редкие и дорогие. У меня появилась серьезная проблема и я некоторое время обдумывал как ее решить. Решение пришло в голову внезапно – я подумал «а что если использовать последовательный порт и PPP или SLIP в качестве окна во внешний мир»? Навроде dialup-канала, но только без модема.

Для начала я подключил мой компьютер Raspberry Pi обычным патчкордом (из LAN-кабеля) к роутеру. Используя схему сдвига уровня и разнообразные старые адаптеры, мне удалось заставить Raspberry Pi связаться через параллельный порт с Макинтошем. Это что касалось «железячной» части вопроса.

С точки зрения софта тоже предстояло решить как реализовать «коннект» — с грехом пополам я все-таки нашел PPP-клиент, работающий на моем Маке и супер-простой PPP-сервер для Pi, называющийся SLiRP Pi. К счастью, даже нашлась документация, описывающая процесс комбинирования MacTCP, MacPPP и SLiRP.  

Я поколдовал с софтом и мне удалось заставить MacTCP разговаривать с MacPPP, MacPPP разговаривать с SLiRP, SLiRP – с Ethernet-соединением и так далее, пока вся цепочка не позволила подключить «нового интернет-абонента».  Так как последовательный порт ввода-вывода на Mac Plus довольно сильно нагружал процессор, пришлось ограничить скорость соединения до примерно 19 килобит в секунду, но ведь 19 – это лучше чем 0.

Можно ли погулять в современном интернете на 27-летнем Mac Plus?

Raspberry Pi здорово помогает компьютеру, который в десятки тысяч раз медленнее его самого. В странной конструкции, расположенной в правом верхнем углу принимают участие: схема сдвига уровня, нуль-модем, переходник с DB-9 на DB-25, а также кабель для последовательного порта.

Наверное, у вас уже созрел вопрос из серии «что было первым – курица или яйцо?», то есть – а как мне удалось установить все это древнее ПО на сам Макинтош, не имея связи с интернетом и домашней сетью? Отличный вопрос! Флоппи-привод Мака был достаточно старым и, естественно, несовместимым с аналогичными накопителями для PC. Более того, у меня и не было флоппи для PC – дискетками сейчас мало кто пользуется.

Сначала я попытался пойти путем под названием «100-мегабайтные ZIP-диски», так как накопители стандарта ZIP производились как под интерфейс USB, так и SCSI-1. Мне удалось заставить старый Mac работать с ZIP-дисками (и даже заставить считать ZIP-дисковод – главным загрузочным устройством), также мне удалось подключить ZIP-дисковод к моему современному ПК, работающему под ОС Windows и заставить его работать с дискетами, отформатированными под HFS (с помощью некоторых программных инструментов, разумеется). Как бы то ни было, каждая попытка передать данные с ПК на Mac Plus оборачивалась попорченными файлами на Zip-дискете.

Все попытки с ZIP-дискетами оказались тщетны и оставался только один путь – последовательный порт. К счастью, оказалось, что на Mac’е уже был установлен старый эмулятор терминала под названием Microphone. Microphone поддерживал передачу файлов посредством ZMODEM, наверняка у вас что-то защекотало в голове, если вы имели дело с BBS-ками. 

Итак, для передачи файлов на старый Mac, я скачал софт сомнительной легальности с непонятных FTP-серверов, закинул все это на Raspberry Pi, подключил Pi к последовательному порту Мака, запустил Microphone на Маке в качестве терминала и Minicom на Pi в качестве принимающей терминальные соединения стороны. Нервничая, я начал ZMODEM-ную передачу с Minicom, выбрал нужные файлы и нажал Enter. Minicom выполнил свою работу и я услышал короткий писк! На Маке появилось сообщение «Save incoming file?» («Сохранить входящий файл?»). Немного возни с принятыми файлами и вот я уже наблюдаю на моем старом Mac Plus «новый» софт. Ура!

Итак, я уже подключил Raspberry Pi, установил MacTCP, MacWeb, связал все воедино и запустил. Теперь то я могу погулять по интернету! Ведь так? Да?

Нет, не так. 

Разработчики MacWeb, очевидно, руководствовались спецификациями HTTP 1.0 и думали в свое время что-то вроде – «Да кому вообще придет в голову открывать сайты в интернете по именам?» и оставили без внимания фичу, при помощи которой мы открываем 99,99% сегодняшних интернет-ресурсов. Никакой поддержки человеческих имен виртуальных хостов – только хардкор, только голые IP-адреса. Ах да, еще тогда не успели изобрести HTTPS, куки и CSS.

Черт!!!

Я обратился с проблемой к знакомому, сказав, что не могу понять как решить эту задачу и тут он внезапно, буквально за 20 минут, используя Python, Requests, Flask и Beautiful Soup, соорудил мне фильтрующий прокси. Решение позволило использовать в MacWeb обычные URL-адреса с именем хоста. При этом прокси обрабатывал SSL и куки. А библиотека BeautifulSoup «разжевывала» для MacWeb те вещи, которые браузер не понимал с рождения — CSS, Javascript, картинки и DIV’ы.

Все это позволило в конечном итоге гулять по веб-страничкам и видеть при этом их содержимое. Более того, странички выглядят на удивление читабельными, почти как в каком-нибудь старом мобильном браузере:

Можно ли погулять в современном интернете на 27-летнем Mac Plus?

Статья про Mac Plus на Википедии, именно так она выглядит на моем Mac Plus

Можно ли погулять в современном интернете на 27-летнем Mac Plus?

Так выглядит на Маке сайт Hacker News. Читабельно, несмотря на то, что MacWeb не поддерживает CSS в принципе

Конечно, работала вся эта связка невероятно медленно, но она работала! Данные загружались, странички рендерились и открывались, ссылки нажимались и приводили туда, куда они ведут. Даже формы можно было заполнять и отправлять информацию (через раз, но все же).

Вот вам видео, которое демонстрирует насколько долго открываются странички (на каждую уходит по несколько минут!):

Как бы то ни было, я достиг поставленной цели и заставил Mac Plus выйти в интернет.

Квест был успешно пройден.

www.keacher.com

Аноним
Ответить Аноним 3 года назад

ну ты и маньяк !!!!

Аноним
Ответить Аноним 3 года назад

а так ты молодец , придумал себе задачю с гемороем и героически преодолел !!!! СУПЕР

Аноним
Ответить Аноним 3 года назад

Видимо свободное время девать некуда.

Аноним
Ответить Аноним 3 года назад

Круто я сам программист это про. уровень!!!!!

Аноним
Ответить Аноним 3 года назад

Согласен

Комментировать: Отмена
МультиВход
Разрешенные html-теги: <i>, <b>, <a>.
Загрузка...
Продвижение и поддержка - агентство интернет-маркетинга Топ-Спот!