Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
#Круги добра
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр 2121 год. Технологии шагнули далеко за пределы самых смелых ожиданий, но за большим прогрессом стоит великая жертва...

Far Orion: Новые миры

Ролевые, Мультиплеер, Мидкорные

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • Animalrescueed Animalrescueed 36 постов
  • Oskanov Oskanov 7 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
62
Timeweb.Cloud
Timeweb.Cloud
1 год назад
IT минувших дней

«Бабушка интернета» – Мэри Ли (Бернерс-Ли) Вудс⁠⁠1

Автор текста: Baron_Kir

«Бабушка интернета» – Мэри Ли (Бернерс-Ли) Вудс Познавательно, IT, Интернет, Программирование, Электроника, Программист, Timeweb, Программа, Длиннопост

Порой путь человека может быть предопределён. Завтра исполняется 69 лет Тиму Бернерсу-Ли, создателю всемирной паутины, о жизни которого мы завтра вам расскажем подробно. Великие люди порой затмевают своих предков, так случилось и сейчас: мало кто знает родителей человека, создавшего WWW.

Но как вам создание одной из первых программ для диагностики ошибок в железе и ПО первого коммерческого компьютера? Первая в мире женщина-фрилансер в 1955 году с четырьмя детьми? Человек, который в середине ХХ века смог добиться равных условий труда и равной оплаты для программистов? Женщина, которая считает, что самое классное в программировании – это машинный код! Это всё мать Тима, Мэри Ли Бернерс-Ли (Вудс). Сейчас мы познакомимся с ней поближе!

«Бабушка интернета» – Мэри Ли (Бернерс-Ли) Вудс Познавательно, IT, Интернет, Программирование, Электроника, Программист, Timeweb, Программа, Длиннопост

Мэри Ли и маленький Тим Бернерс-Ли

Сегодня вы будете читать историю жизни «бабушки интернета», которая очень любила прогресс. Технический прогресс даёт вам возможность читать этот текст самому, или послушать его в подкасте, который для вас подготовил автор.

❯ Семья и учёба Мэри Ли


Мэри Ли родилась в учительской семье в 1924 году. Её мать с рождением ребёнка преподавать перестала, а отец продолжил. Он занимался с теми детьми, успехи и способности которых были невысоки. Мэри пошла в одну из первых школ с совместным обучением мальчиков и девочек. Сама Мэри любопытно отзывалась о своём месте обучения:«Школа не отличалась академичностью, но занималась воспитанием хороших граждан; там не было побоев палками, задержаний и прочих дисциплинирующих моментов. А в школе брата была и травля, и удары палками, и другие подобные вещи».

Будущая учёная начала делать карьеру по прямому совету родителей. Её родители и познакомились на собрании в защиту прав женщин. В рамках этих собраний не только говорилось о политических правах женщин, но и о том, что должна быть альтернатива замужеству для жизни. Такой альтернативой стала работа и высокая квалификация. Так Мэри Ли начала свой путь к программированию с класса с сильным математическим уклоном, который не так давно стал доступен для девочек. Затем последовало обучение в университете, которое пришлось на время Второй Мировой войны, и эвакуация из Бирмингема в небольшой городок Лидни.«Депрессивный, но красивый», – так описывала его Мэри. Там она продолжила учиться, причём жили студенты в домах простых граждан, даже не в интернате, его не было.

После возвращения в Бирмингем выяснилось, что здание, где проходили занятия, подверглось бомбардировке, было разрушено крыло здания. В институте не хватало преподавателей: все ушли на фронт. За два года у Мэри сменилось 5 учителей математики, что сильно сказалось на обучении. В возрасте около 20 лет лишь благодаря стипендии она смогла уехать в Манчестер и заняться там инженерной подготовкой за свой счёт. Стипендия составляла 75 фунтов в год, чего хватало, со слов Мэри, на безбедную жизнь. Для примера, у её коллег (еврейских беженцев) было всего 22 фунта в год.

«Бабушка интернета» – Мэри Ли (Бернерс-Ли) Вудс Познавательно, IT, Интернет, Программирование, Электроника, Программист, Timeweb, Программа, Длиннопост

Мэри Ли Вудс, в студенчестве

В 1944 году Мэри как талантливую выпускницу направили в центр авиационных исследований, но там она остаться не смогла. Её брат, лётчик, совсем недавно погиб на войне. Мэри вернулась ближе к дому, она тяжело переживала смерть брата и хотела быть ближе к своей семье. До 1947 года она продолжила изучать математику в институте и увлеклась астрономией, которая привела её в… Австралию!

❯ Австралия, астрономия и дискриминация


Для этого всего-то потребовалось прочитать статью в научном издании астрономического общества, написать статью её директору, доктору из Канберры, который оценил уровень подготовки молодого математика и выдал Мэри стипендию на обучение в обсерватории Канберры. На корабле для иммигрантов с контрактом на два года Мэри направилась изучать астрономию. Астрономом ей стать было не суждено.

Почему? Сексизм, господа. Ей дали «очень интересную работу» осуществлять классификацию звёзд по величине и радиусу. Простая техническая работа, которая не требует вообще никакого творчества. А досталась она Мэри по одной причине: мужчине, который занимался этой работой, просто не хватало терпения её вести. Но узнала Мэри об этом позже, уже когда покинула работу. Всего она провела в Австралии три года, сохранив воспоминания о прекрасном месте отдыха, катании на лошадях, красивых видах и совершенно неинтересной работе.

Удивительный путь в программисты


После возвращения домой Мэри впервые познакомилась с компьютером, просто найдя объявление: «Требуются математики для работы на цифровом компьютере». До этого никакого опыта работы с компьютерами у неё не было, она их даже не видела и пользовалась только механическим калькулятором Brunsvigas, который умел работать с перфокартами.

Что делает айтишник, когда чего-то не понимает? Идёт курить мануалы. Именно этим и занялась Мэри, она пошла в библиотеку читать, что же такое компьютер и… подала заявление на работу!

Сама Мэри так описывала своё собеседование: «Я пошла на собеседование; и, поскольку я кое-что знала о компьютерах, я могла задавать умные вопросы. Это должно было на треть увеличить мою первоначальную зарплату». Так она устроилась в фирму «Ферранти», где ей предстояло работать с первым коммерческим компьютером «Ferranti Mark 1».

«Бабушка интернета» – Мэри Ли (Бернерс-Ли) Вудс Познавательно, IT, Интернет, Программирование, Электроника, Программист, Timeweb, Программа, Длиннопост

Можно подумать, что Мэри, говоря современным языком «ушла в айти» за большими деньгами, но это не совсем так. На тот момент работа в компьютерной фирме не была особо прибыльной, местные жители предпочитали близлежащие фабрики хлопкопрядильной промышленности. А «Ферранти» в том районе делали радиоприёмники, где девушки на конвейерах монотонно паяли компоненты. Но Мэри наняли не паяльщицей, а в команду программистов.

Причём в компании была просто шикарная система обучения. Мэри вспоминала: «Нам показывали основы, некоторые базовые вещи, а потом – ну, ты сам разбираешься. У коллег спрашиваешь. Советуешься. Тебе поставили задачу, а ты её выполняй, всё очень просто. Не справляешься – свободен». Любопытно, но никаких гендерных различий в этой сфере не было, что мужчины, что женщины получали одинаковую «вводную», только мужчинам больше платили. Об этом мы расскажем чуть позже.

❯ Совсем (не)пыльная работа


Задачей Мэри было программирование в машинном коде. Она занималась решением систем уравнений. Огромного их количества. Задачи выполнялись для авиации: расчет напряжений вдоль крыльев и ряд похожих сложных и однообразных вычислений. А самое главное — очень многочисленных вычислений.

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

«Бабушка интернета» – Мэри Ли (Бернерс-Ли) Вудс Познавательно, IT, Интернет, Программирование, Электроника, Программист, Timeweb, Программа, Длиннопост

Та самая таблица, которую нужно было знать наизусть и уметь использовать.

Инструкции вводились в компьютер с перфолент, результат обработки также выводился на них. Программа формировалась пятисимвольными буквенно-цифровыми значениями, которые пробивались в двоичном коде на перфолентах.

Отдельную проблему создавала оперативная память. Она была реализована через трубки Уильямса–Килберна и вмещала двадцатибитное слово. Второе слово в память уже не помещалось и переходило во вторичную память, магнитный барабан. Любая настройка программ вызывала большие сложности в том числе и из-за того, что машина была одна и время пользования было сильно ограниченным. В то время существовала шутка, связанная с IBM: у руководителя висел плакат с надписью «ДУМАЙ!», а у работников фирмы «Ферранти» тоже висел плакат «Думай, но не здесь!»

Одной из важных задач, которые ставились перед Мэри, была попытка создания одной из первых диагностических программ. Эта программа должна была выполняться с невероятной экономией памяти. Запустить две программы одновременно было физически нельзя, компьютеры этого просто не умели. Поэтому сначала запускалась программа для теста, и потом она, как ведущая, запускала тестируемую программу.

«Бабушка интернета» – Мэри Ли (Бернерс-Ли) Вудс Познавательно, IT, Интернет, Программирование, Электроника, Программист, Timeweb, Программа, Длиннопост

Компьютер Ferranti Mark 1

В фирме были достаточно напряжённые отношения между инженерами и программистами. Опять же, всё сводилось к тому, что пользоваться компьютером мог лишь один человек. Естественно, время за техникой было чётко разделено, и люди даже спали рядом с компьютером. Мэри рассказывала, что приносили с собой раскладушки и спали непосредственно в зале, ожидая своего времени работы. Вас разбудили, вы бахнули кофе и айда работать!

Программисты постоянно конфликтовали с инженерами, вся трубка (оперативная память) могла оказаться заполненной единицами, машина работать дальше не будет. А у этого было две почти равнозначные причины: или программист накосячил, или машина опять сломалась. Извечный спор: кто виноват и что делать…

❯ Кто должен бороться с дискриминацией?


Когда появился компьютер Mark 1* – надёжность существенно увеличилась, и фирма начала заниматься продажей компьютеров, в первую очередь, в сферу авиастроения. Мэри разработала программу для инвертирования матрицы 40 на 40 и должна была ехать в Италию для демонстрации работы этой программы, но не смогла, на тот момент она уже была беременна, но тут мы чуть забегаем вперёд.

«Бабушка интернета» – Мэри Ли (Бернерс-Ли) Вудс Познавательно, IT, Интернет, Программирование, Электроника, Программист, Timeweb, Программа, Длиннопост

Женщина вяжет за компьютером «Ferranti Mark I». Cнимок рекламный, женщина, скорее всего, – модель. Снимок иллюстрирует надёжность компьютера.

Незадолго до существенного роста фирмы, ещё даже до знакомства со своим будущим мужем, Мэри подняла самый настоящий бунт! Внутри фирмы она начала борьбу за права женщин и успешно в ней одержала победу. Во время работы оказалось, что мужчинам платят больше. На тот момент обсуждение заработка считалось категорически неприличным. После того как разная зарплата стала известна, Мэри обратилась напрямую к руководству фирмы. Ей сделать это было легче, в тот момент она снимала квартиру вместе с помощником руководителя по подбору персонала, у нее был прямой выход на начальство.

Бунт удался. В 1951–1952 годах, когда происходили описываемые события, фирма «Ферранти» установила равные зарплаты для молодых сотрудников вне зависимости от их пола. По мере роста мастерства и продвижения по службе они стали получать равные прибавки, выполняя одинаковую работу.

Однако, был у войны и второй эпизод. Когда «Ферранти» построила новый компьютер для университета, основную работу на нём выполняли университетские сотрудники, а фирма оставила за собой время с полуночи до восьми утра. Под влиянием одного конкретного персонажа мужского пола (который остался неназванным) отдел кадров принял гениальное решение: не допускать женщин на работу с полуночи до 8 утра. Пришлось повторно бунтовать и убирать эту «заботу».

❯ Любовь, семья, работа и фрилансерство


В 1952 году Мэри познакомилась со своим будущим мужем, причём знакомили их аж трижды, но сначала это были мимолётные рабочие встречи, и лишь когда их в третий раз познакомили, уже на праздничном ужине, они вдруг поняли, что раньше встречались. Мэри вспоминала забавную историю, когда она всю ночь работала за компьютером, а будущий муж звонил по телефону, но Мэри слышала всё, что он говорит, несмотря на работающие рядом очень громкие телетайпы. Позже был торжественный ужин, на котором их «познакомили», скоротечный роман, свадьба в 1954 и рождение Тима Бернерса-Ли в 1955 году.

«Бабушка интернета» – Мэри Ли (Бернерс-Ли) Вудс Познавательно, IT, Интернет, Программирование, Электроника, Программист, Timeweb, Программа, Длиннопост

Мэри Ли и Конвей Бернерс-Ли в 1954 году.

С рождением ребёнка (а потом ещё трёх штук) работать на фирме стало сложно, и Мэри придумала… удалённое программирование, фриланс, если хотите. Она могла, находясь у себя дома написать программу под конкретную задачу, а потом протестировать её уже в готовом виде. И такие заказы она активно получала.

Мэри была достаточно известна в своё время в весьма немногочисленной среде программистов, кроме того, её муж, Конвей, оставался на работе и мог помогать с заказчиками. В то время женщин-программистов и так было немного, а чтобы они ещё и на дому работали – вообще уникальная ситуация.

Мэри вспоминала, что ей очень хотелось на работу, она любила свою работу, но никогда не сомневалась, что сделала правильный выбор и стала мамой четверых детей. Она потом вспоминала, что семейное счастье и дети в самом прямом смысле ломают карьеру. Позже была создана F International – британская компания, которую основала другая женщина-программист Стефани Ширли. Эта копания работала именно с женщинами-программистами-фрилансерами. Это была первая подобная компания, и её, в широком смысле слова, политическое влияние имело не меньшее значением, нежели экономическое. Фирма активно привлекала внимание прессы к проблеме работы женщин-программистов. История этой фирмы, по хорошему, стоит отдельного текста.

«Бабушка интернета» – Мэри Ли (Бернерс-Ли) Вудс Познавательно, IT, Интернет, Программирование, Электроника, Программист, Timeweb, Программа, Длиннопост

Стефани Ширли, 1985

Однако для Бернерс-Ли работа в этой фирме не совсем подходила, у Мэри были свои заказчики, например, к ней обращалось Лондонское транспортное управление. Задача Мэри состояла в том, чтобы уменьшить задержки движения общественного транспорта. Группа специалистов рассчитывала, какие условия могут создавать автобусные пробки, а Мэри переводила это всё в работающую программу. Работ было множество, например, запуск метеозондов в военном городе, где нужно было быть крайне аккуратной с округлениями. Параллельно происходила компьютерная революция. Сначала для выполнения задачи Мэри пришлось выучить Mercury, потом Algol, сильно позже – Fortran, уже после возвращения на постоянную работу. Никакие лавры не позволяли отставать от прогресса.

Мэри работа «из дома», если это можно так назвать, до момента, пока младшему, четвёртом ребёнку в семье, не исполнилось 8 лет. Если вспомнить скорость развития информационных технологий, а также помнить, что дети Мэри родились не одновременно, то пропустила она просто невероятный для сферы программирования срок – 16 лет (!!). Вернуться в постоянно изменяющуюся сферу – почти фантастика. Но увлечённый человек может многое.

❯ Возвращение на работу и новый статус


После огромного перерыва Мэри вновь выходит на постоянную работу, но не в айти, а в школу. Не просто в школу, а в специализированную женскую гимназию. Это был серьёзный вызов для Мэри Ли. Она вспоминала: «Я обнаружила, что преподаю математику четырнадцатилетнему ребёнку, который не знает, как складывать числа до десяти, а я не знала, как его научить этому за те 40 минут, которые есть». Кроме того, сама Мэри очень медленно читала и её стиль работы в целом можно назвать «медленным». Преподавала она недолго, поняв, что это «не её» деятельность, несмотря на серьёзные знания математики. При этом, Мэри не «занимала чьё-то место», как может предположить современный читатель. Позже она вспомнит: «Одной из причин, почему я согласилась работать, было полное отсутствие у школы альтернатив. Лучше уж я, чем никого». Мэри часто советовалась со своим мужем и старшим сыном Тимом, получавшим на тот момент передовые знания в области математики, с которыми не была знакома сама Мэри Ли.

И вот тут она вернулась в программирование, научившись использовать фортран. Мэри стала работать в фирме, которая специализируется на PERT (Program Evaluation and Review Technique), методе оценивания и анализа проектов, которые используются при управлении огромными сложными проектами и оптимизации этих систем.

Во время работы Мэри отметила удивительную для себя вещь: молодёжь программирует намного быстрее, чем она, и никто не пишет инструкции и руководства. Её коллеги этого просто не умели, за это взялась сама Мэри.

Позже она со смехом вспоминала: «Теперь я знаю, почему все инструкции такие плохие». Мэри на собственном опыте столкнулась с тем, что писать их – сложный процесс. Просто собрать объём информации и комментариев совершенно недостаточно. После того как она проводила всю работу, делала инструкцию понятной и доступной… Менялась сама программа! Программа существенно меняется чертовски быстро. Да и написание инструкций требовало очень серьёзного анализа – что такое «очевидно»? что такое «все понятно»? Чему уделить много времени? Проработав несколько лет, Мэри поняла, что больше не вытягивает тот уровень и… просто ушла на пенсию в 1987 году в возрасте 62 лет, причём вместе со своим мужем, которому исполнилось 65.

«Бабушка интернета» – Мэри Ли (Бернерс-Ли) Вудс Познавательно, IT, Интернет, Программирование, Электроника, Программист, Timeweb, Программа, Длиннопост

Мэри Ли Бернерс-Ли на одном из последних интервью.

На пенсию Мэри отправила не только усталость от работы, от погони за современными технологиями, но и состояние здоровья. От постоянного стресса у неё стал ухудшаться слух, и она выбрала его сохранение вместо трудовой занятости. Проблемы со слухом на пенсии закончились. В одном из интервью Мэри вспоминала, что на пенсии хорошо. Можно спокойно работать по дому, пользоваться помощью людей, вообще не нервничать. При этом Мэри всегда поддерживали в её рабочих делах муж и семья. Она позже вспомнит, что именно семья помогла ей вернуться в программирование.

❯ Что самое главное в жизни?


У Мэри редко брали интервью, а когда брали, спрашивали в основном про старшего сына Тима Бернерса-Ли и интернет. При этом хоть сама Мэри и называет себя в шутку «бабушкой интернета», но не превозносит заслуги своего старшего сына.

Говоря о своих детях, она весело замечает, что почти всех направила на работу с компьютером: «Пит и Хелен тоже по работе связаны с информационными технологиями. Вся семья – отец, мать, трое детей – занимаются информационными технологиями, лишь один, самый младший, Майк – бунтарь, не пошёл по отеческим стопам!» Младший сын тоже ушёл в науку, он является одним из ведущих исследователей проблемы «углеродного следа». В настоящее время (2020-е гг.) Майк вместе с Тимом изучают влияние ИКТ на климат.

«Бабушка интернета» – Мэри Ли (Бернерс-Ли) Вудс Познавательно, IT, Интернет, Программирование, Электроника, Программист, Timeweb, Программа, Длиннопост

Мэри Ли Вудс и Конвей Бернерс-Ли в 2013 году.

На вопрос «Что в работе за компьютером кажется вам наиболее приятным?» Мэри отвечала: «Программирование на машинном коде, я не получала столько удовольствия от другой работы. Это очень весело, было столько возможностей, хоть это и отнимало чудовищно много времени. Это аккуратно и, в прямом смысле слова, красиво». Вполне вероятно, что и молодость, и хорошая компания повлияли на такие убеждения. Однако они проявились в детях. Мэри с самого детства максимально поощряла тягу к открытию нового и изобретательству у своих детей, что даёт им возможность на протяжении всей жизни оставаться в тонусе и следить за современными технологиями. Иногда она корила себя, что сама упустила прогресс в своё время, предприняла попытку его догнать и до конца не смогла. Возраст берёт своё, учиться становится сложнее…

Мэри Ли Вудс покинет этот мир на шестьдесят третьем году счастливого брака, в возрасте девяносто трёх лет, прожив яркую и насыщенную, а главное, с её собственных слов, счастливую жизнь. Мэри была, в некотором роде, идеалистом, идеалистом был и её муж, о котором стоит рассказывать отдельно. И вместе эти два человека, математики и программисты, что прошли путь от первых программ до современной повальной компьютеризации, воспитали четверых детей. К сожалению, помним мы их преимущественно из-за того, что их первенец, Тимоти Бернерс-Ли, создал интернет (который он на самом деле не создавал) и дал нам возможность познакомиться со своей замечательной матерью, пусть и заочно.

«Бабушка интернета» – Мэри Ли (Бернерс-Ли) Вудс Познавательно, IT, Интернет, Программирование, Электроника, Программист, Timeweb, Программа, Длиннопост

Написано специально для Timeweb Cloud и читателей Пикабу. Больше интересных статей в нашем блоге на Хабре и телеграм-канале.

Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать авторские проекты.

Показать полностью 11
[моё] Познавательно IT Интернет Программирование Электроника Программист Timeweb Программа Длиннопост
6
8
Timeweb.Cloud
Timeweb.Cloud
1 год назад
Android Developers

Мое решение 3-х проблем MVx⁠⁠

Автор текста: Lynnfield

Итак, в прошлый раз я описал три проблемы, которыми, на мой взгляд, страдают все MVx и даже некоторые не MVx архитектуры. Если коротко, то это:

  • проблема остатка — при делении фичи на заявленные компоненты архитектуры остаётся либо «неделимая» часть фичи, либо лишние компоненты архитектуры;

Мое решение 3-х проблем MVx Разработка, Программирование, Android, Timeweb, Алгоритм, Программное обеспечение, Telegram (ссылка), Длиннопост
  • проблема масштабирования — при расширении фичи компоненты архитектуры начинают раздуваться, что усложняет дальнейшую поддержку;

Мое решение 3-х проблем MVx Разработка, Программирование, Android, Timeweb, Алгоритм, Программное обеспечение, Telegram (ссылка), Длиннопост
  • и проблема разрывов логики, когда из-за взаимодействия с UI логика разрывается на части, что тоже не помогает нам делать систему более цельной, предсказуемой и тестируемой.

Мое решение 3-х проблем MVx Разработка, Программирование, Android, Timeweb, Алгоритм, Программное обеспечение, Telegram (ссылка), Длиннопост

Описание проблем это, конечно, хорошо, но вопрос в том, как их решать? Об этом я бы и хотел поразмышлять в этом тексте. Спойлер: когда я нашел решение проблемы разрывов, я понял, что оно может решить и все остальные проблемы.

❯ Проблема остатка (Remainder issue)


Первый вопрос: что делать с остатком? Все просто — взять делитель поменьше, потому что чем меньше делитель, тем меньше остаток. Этому меня еще в школе научили. Но я столкнулся с тем, что это не работает с MVx архитектурами, потому что мой делитель, обычно, это набор определенных компонент, и введение новых — значит изменение архитектуры.

Возможно и вы с этим сталкивались, когда вводили всякие мапперы, делегаты, интеракторы (те, что репозитории репозиториев) и прочее. Помогли ли они мне? Нет. Лучшее решение, что я видел — это Flux- и ELM-like архитектуры, которые заявляют «чистую» функцию как единицу деления логики, но со всеми вытекающими отсюда удобствами и следующими за ними «эффектами».

Но решение проблемы остатка, даже если бы оно у меня было, не помогает мне решить проблему масштабирования.

❯ Проблема масштабирования (Scalability issue)


В прошлый раз я упоминал «интуитивный» подход к решению задачи масштабирования и рассказывал почему он не работает. По крайней мере не у меня.

А какой не интуитивный?

На мой взгляд это старая и уже не раз решенная задача. И примеры решения можно увидеть в том, как в теории вычислений доказывают некоторые теоремы через вкладывание одной машины Тьюринга в другую, или как элегантно эта проблема решается в процессорах, где более сложные компоненты — просто композиция более простых.

Так и в MVx архитектурах: можно было бы попробовать реализовывать доработки отдельно, а уже потом объединять их с существующей фичей, вместо того, чтобы вносить изменения в уже написанные компоненты. Что в прошлом не раз приводило меня к череде переписываний тестов, судорожному протыкиванию приложения на предмет того, что ничего не поменялось, и мольбам о том, чтобы очередной баг-репорт был не по моим изменениям.Но вот что я заметил, ведь именно такой подход, когда мы предпочитаем композицию изменениям, я и мои коллеги используем для Data-слоев. Например, новые источники данных оборачиваются в Репозитории, а потом комбинируются в Интеракторы. Но почему-то чем ближе мы подходим к UI-слою, тем больше начинаем изменять, а не комбинировать.

Чаще всего я вижу эту проблему как вечное переписывание тестов уже существующих компонент, или Presenter, ViewModel, Controller размером со вселенную, который даже трогать страшно, потому что что-то точно развалится.

Такой подход, где мы предпочитаем покомпонентную композицию фичи и доработок, вместо прямых изменений какого-нибудь компонента, действительно будет не интуитивным, потому что потребует реализовывать доработки как самостоятельную фичу. Я имею ввиду, что надо будет имплементировать доработки используя наш архитектурный подход, а потом написать еще одну пачку компонент, которая уже будет склеивать существующий функционал с новым. Но каким бы правильным мне это не казалось, я никак не могу отделаться от мысли, что такой подход приведет к написанию большого количества кода, который на первый взгляд будет казаться бесполезным.

Мое решение 3-х проблем MVx Разработка, Программирование, Android, Timeweb, Алгоритм, Программное обеспечение, Telegram (ссылка), Длиннопост

Еще мне показалось интересным, что тут нам может помешать проблема остатка, которая по идее должна привести к ситуации, когда такой подход не сработает, потому что надо будет внедрить доработки в “середину” компонента из уже существующей фичи, а значит придется делить существующие компоненты на новые, более мелкие. Чем крупнее делитель, тем крупнее остаток, да?

Мое решение 3-х проблем MVx Разработка, Программирование, Android, Timeweb, Алгоритм, Программное обеспечение, Telegram (ссылка), Длиннопост

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

❯ Проблема разрывов (Gaps issue)


И вот тут становится интересно. Все дело в Hello World. Мне все никак не дает покоя вопрос: какая у него архитектура?

Hello world


Я видел примеры Hello World в разных языках, фреймворках и архитектурах (кроме Open GL, конечно же), и у них не было проблем с его реализацией. Если не считать проблемой то, сколько усилий надо приложить, чтобы написать изначальный шаблон. Но, если результат одинаковый, не значит ли это, что разница только в том, сколько обвязок надо написать, чтобы Hello World работал? И нужны ли они? Тогда я стал думать: а что общего у всех этих реализаций Hello World в разных архитектурах? И как-то я пришел к мысли, что скорее всего правильный ответ — Алгоритм. И он до безобразия тривиален.

Мое решение 3-х проблем MVx Разработка, Программирование, Android, Timeweb, Алгоритм, Программное обеспечение, Telegram (ссылка), Длиннопост

И что интересно, у самого алгоритма нигде не написана архитектура в которой он должен быть имплементирован. Но это Hello World. Как я и сказал: он чересчур прост.

Более интересные примеры


Давайте лучше взглянем на следующий пример, который используют в учебниках по программированию — Hello %username%. У него все та же проблема с архитектурами — его можно написать в любой из них, и общее между всеми реализациями в разных архитектурах — алгоритм.

Мое решение 3-х проблем MVx Разработка, Программирование, Android, Timeweb, Алгоритм, Программное обеспечение, Telegram (ссылка), Длиннопост

А вот еще интересное наблюдение: если мы немного обобщим алгоритм Hello World, отделив show от Hello World, то увидим, что он дважды появляется в алгоритме этого примера.

Все еще слишком просто, правда? Следующий учебный пример — работа со структурами данных. И в самом простом виде — это CRUD плюс “показать все” с хранением в списке (он же List). Этот пример, не очень интересный с точки зрения реализации, интересен тем, что он добавляет в предыдущий алгоритм композицию.

По сути здесь мы первый раз сталкиваемся с тем, что нам надо создать пять независимых программ, а потом объединить их под управлением шестой. А еще эти шесть программ делят между собой один блок памяти — сам список структур. И мне кажется, что это уже напоминает решение одной из наших проблем, не так ли?

Мое решение 3-х проблем MVx Разработка, Программирование, Android, Timeweb, Алгоритм, Программное обеспечение, Telegram (ссылка), Длиннопост

Появление Gaps issue


Но что происходит даже с этими простыми программами, когда мы пытаемся перенести их в UI-среду?

Легче всего Hello World, потому что он просто обрастает кучей компонент, которые помогают ему “жить” в новой среде. Даже не интересно.

А вот Hello %user name% приходится куда сложнее. Беднягу размазывает по компонентам системы или архитектуры: в одном месте мы слушаем ввод имени, в другом показываем приветствие, а в третьем прописываем реакцию на введенное имя.

Я даже боюсь говорить о том, что же происходит с CRUD-примером. В зависимости от того, какой макет нам нарисуют, мы будем писать совершенно разные приложения. Вот представьте, что вас попросили сделать такую программу как несколько разных экранов, а потом попросили переделать так, чтобы это был один экран. С часто используемым подходом к декомпозиции, когда один экран — один набор MVx-компонент, мы получим бессонную ночь переписывания кода, потому что части нашей логики разорваны и раскиданы по всей реализации.

Мое решение 3-х проблем MVx Разработка, Программирование, Android, Timeweb, Алгоритм, Программное обеспечение, Telegram (ссылка), Длиннопост


Но ведь изначально “не было ни единого разрыва”, а алгоритм остался тем же. Почему все стало так плохо?

Причина — асинхронность


На этот вопрос некоторые уже дали ответ в комментариях к предыдущим статье и видео, и я с ними полностью согласен. Причина — асинхронность. И я был искренне удивлен, когда пришел к этому выводу.

Многие, если не все GUI-системы построены вокруг event loop, потому что нам надо одновременно и экран рисовать, и ввод от пользователя слушать. А чтобы сюда добавить еще и наш алгоритм, его придется разделить так, чтобы он хорошо встраивался в этот event loop.

Я уже не говорю о том, что мы вообще-то еще должны взаимодействовать с другими асинхронными системами. Кстати, с ними то, обычно, проблем и не возникает. А почему?

Решение — закрытие разрыва

Мое решение 3-х проблем MVx Разработка, Программирование, Android, Timeweb, Алгоритм, Программное обеспечение, Telegram (ссылка), Длиннопост

Обратим внимание на графикоподобную картинку, на которой я объяснял проблему разрывов в прошлый раз.

Напомню как всё было, и в этот раз уже не буду лукавить: путь нашей логики начинается в каком-то из callback’ов, а не в абстрактном “начале”. По мере выполнения мы продвигаемся все глубже по стеку вызовов, выполняем одну за другой функции, и в самой верхней точке нашего графика мы обращаемся к источнику данных: бэкенду, файлу, какой-то системе хранения. И что здесь обычно находится?

Мое решение 3-х проблем MVx Разработка, Программирование, Android, Timeweb, Алгоритм, Программное обеспечение, Telegram (ссылка), Длиннопост

Обычно это вызов какой-то “асинхронной” функции: корутины, async- или suspend- функции, уж простите мой котлинский, или какой-то функции с callback’ом, или функции возвращающей какой-нибудь Future, Promise или Single.

И вот вопрос: вызывая эту функцию с callback’ом, как часто мы задумываемся, что эта операция может вообще никогда не вернуться в этот callback? Лично я до недавнего времени считал, что управление гарантированно будет передано в наш callback. Не считая случаев “отмены”, конечно же. Но откуда у нас такая гарантия? Возможно все дело в реализации системы? Давайте “заглянем под капот” и посмотрим что же там на самом деле происходит.

Наша функция формирует наш запрос к базе, запрос в сеть или еще что-то. В общем случае формирует какой-то контекст, с помощью которого надо выполнить запрос, и вместе с callback’ом, в который надо вернуть результат, отправляет его на другой поток, и там происходит все выполнение. После завершения выполнения, тот поток вызывает callback, передавая в него результат, что для нас, разработчиков, выглядит как своего рода возврат в точку вызова. Таким образом логика выглядит более цельной, и такого разрыва, как в случае с UI не происходит.

Мое решение 3-х проблем MVx Разработка, Программирование, Android, Timeweb, Алгоритм, Программное обеспечение, Telegram (ссылка), Длиннопост

Так вот вопрос: а почему бы нам не повторить этот же трюк с UI?

На картинке это будет выглядеть как параллельный перенос: мы просто поднимем нашу линию, а вот тут, в нижней точке, вместо того чтобы разрывать логику и отдельно задавать на UI какое-то состояние и callback’и, сделаем функцию, которая отправляет запрос на UI и ждет от него ответа. Таким образом мы закрываем разрыв и теперь наша логика будет выглядеть как единое целое.

Мое решение 3-х проблем MVx Разработка, Программирование, Android, Timeweb, Алгоритм, Программное обеспечение, Telegram (ссылка), Длиннопост

Ничего сложного, мы даже не изобретаем что-то новое, но такой подход поможет нам взаимодействовать с UI, как с любой другой внешней системой, а не как с чем-то особенным. И вот моё видение того, как это могло бы работать и решать проблемы, описанные выше.

❯ Proposal


Давайте писать функции…

Да, может звучать нелогично, тем более, что я уже говорил о том, что это не помогает Flux- и ELM-like архитектурам, но я объясню. Начнем с проблемы остатка.

Влияние на решение проблемы остатка


Добавлю небольшую аналогию с математикой. Как я и говорил «архитектура» — это делитель. А чтобы при делении не оставалось остатка — нам нужно найти наибольший общий делитель. Чем и является функция, на мой взгляд. Чем больше я смотрю на реализации всех наших «архитектур», тем больше я вижу, что все они, по сути, просто один из способов удобнее объединять и специализировать функции (и тут я подразумеваю, что метод класса — это функция, которая иногда неявно принимает дополнительный аргумент).

Дальше лучше — проблема масштабирования.

Решение проблемы масштабирования


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

А что с разрывами?

Решение проблемы разрывов


До тех пор, пока мы будем поддерживаем нашу логику, как композицию функций, проблема разрывов будет естественным образом «выталкиваться наружу», за пределы нашей логики. А это в свою очередь будет гарантировать нам последовательность выполнения, тестируемость и как следствие — стабильность.

❯ Концепт


Так что же я предлагаю?

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

Мое решение 3-х проблем MVx Разработка, Программирование, Android, Timeweb, Алгоритм, Программное обеспечение, Telegram (ссылка), Длиннопост

Во-вторых, у этой функции (композиции функций) должна быть возможность работать независимо от «сторонних» систем, поэтому я предлагаю вынести ее в свой поток, чтобы у нее была возможность спокойно выполняться, блокироваться при необходимости, параллелиться и тому подобное. Пусть будет “синхронной”. Обычно мне не надо, чтобы логика продолжала свое выполнение, когда она ждет какой-то ресурс. А если такое поведение нужно, то почему-бы его не описать его явно? И назвать бы этот поток Main, но имя уже “занято”. =)

В-третьих, хотя это и самый важный пункт, а у меня видимо есть тенденция оставлять все важное на потом, я предлагаю сосредоточиться на реализации логики приложений, а не экранов и виджетов. Как видите, с таким подходом нет разницы между слоем данных и пользователем. Есть только наша детерминированная логика и внешние системы, которые обмениваются данными через нее. Логика просто ходит между ними и предоставляет им некий контекст для принятия решения и набор возможных действий, а внешние системы в свою очередь “отвечают” нашей логике руководствуясь представленным контекстом. Это похоже на игру в шахматы, где внешние системы — игроки, а логика — доска с фигурами и правила игры.

Мое решение 3-х проблем MVx Разработка, Программирование, Android, Timeweb, Алгоритм, Программное обеспечение, Telegram (ссылка), Длиннопост

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

В конце концов, применив этот концепт, я хочу помочь всем нам проектировать и писать кроссплатформенные приложения в самом широком смысле этого слова: разрабатывая и реализуя end-to-end алгоритмы которые прозрачно перескакивают с бэкенда на фронт и обратно, которые не видят различия между разными видами фронтов, будь то Web, iOS или Android, или разными типами вроде UI, CLI, или TalkBack.

Но пока это только концепт и виденье. Пожалуй пора посмотреть на код, но он будет в следующий раз. А сейчас есть время порефлексировать на эту тему. Дайте этим идеям время перевариться. Прочитайте еще раз. Задайте вопросы. И может вы сможете написать код еще до того, как я опубликую продолжение. Хотите посоревноваться?

Увидимся.

  • Написано специально для Timeweb Cloud и читателей Пикабу. Больше интересных статей в нашем блоге на Хабре и телеграм-каналах (статьи и новости).

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 14
Разработка Программирование Android Timeweb Алгоритм Программное обеспечение Telegram (ссылка) Длиннопост
1
121
Timeweb.Cloud
Timeweb.Cloud
1 год назад
Лига программистов C/C++

Сборка MS-DOS 4.0⁠⁠

Автор текста: dlinyj

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Совсем недавно появилась следующая новость: На GitHub опубликован исходный код MS-DOS 4.00 под лицензией MIT. Раз появились исходные коды, стало сразу интересно: а можно ли собрать эту операционную систему?

Задача оказалась нетривиальной и совсем неочевидной. Оказывается, что исходные файлы DOS не так-то уж и легко переносятся в git, и уж как минимум, не как текстовые файлы в кодировке UTF-8. Но, к счастью, в отличие от утечек исходников MS-DOS 6.0, здесь имеется полный комплект файлов и инструментов, достаточный для корректной сборки и тестирования. Остались сущие нюансы, которые попили много крови.

Поэтому я, как и многие — начал свои эксперименты по сборке MS-DOS 4.0, с исправлением ошибок, а также возможностью исследования исходных кодов и тестирования их на реальном железе.

В статье же изложено краткое руководство по сборке и созданию загрузочной дискетки.

❯ Инструментарий


Собирать всё буду в Linux Mint (читай Ubuntu). Средой DOS для сборки выбрал dosbox, к сожалению, это не самый лучший вариант, потому что там идёт замедление частоты (чтобы старые программы корректно работали), поэтому сборка идёт достаточно долго. Лучше всего использовать любой удобный DOS, запущенный в виртуальной машине.

Для создания загрузочной дискеты и тестирования полученной сборки буду задействовать виртуальную машину qemu. А чтобы получить дискеты с готовым образом, я буду использовать установочную дискету MS-DOS 4.0 (найденную тут см. 4.00 OEM [Sampo]).

Прежде чем пойдём дальше — важное замечание:

Никаких чужих прав задеть не собираюсь, все модификации кода были сделаны исключительно в юмористических целях, и не подлежат распространению. Модифицированные исходники удалены.

❯ В чём сложности сборки?


Проблемы две:

  1. Некорректная инициализация переменных среды (в самом bat-файле SETENV.BAT содержится ошибки или опечатки).

  2. Проблемы с кодировкой при переносе кода с дискеток DOS в GIT с кодировкой UTF-8.


Первая проблема легко исправляется даже самостоятельно, при беглом анализе исходного кода. Она легко вскрывается при сборке, дальше просто необходимо внести правки, либо создать свой обновлённый bat-файл, который будет инициализировать переменные среды окружения.

Значительно сложнее обстоят дела с тем, что в части кода, при переносе в UTF-8, побились некоторые символы. У меня была попытка сборки, которую я описывал у себя в ЖЖ, и, в конце концов, я получил вот это:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Это достаточно частая и болезненная проблема со старыми исходниками времён DOS. С аналогичной задачей я столкнулся и при попытке собрать программу RAM View. Об этом пути и исправлении проблемы, я подробно написал в статье Правка чужого кода.

Здесь же мы исключим ручной труд и автоматизируем исправление проблем с кодировками.

❯ Подготовительные операции перед сборкой


Итак, шаги по сборке ДОС. Клонируем оригинальный репозиторий:

git clone https://github.com/microsoft/MS-DOS.git

Исправляем проблемы с кодировками:

sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/MAPPER/GETMSG.ASM
sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/SELECT/SELECT2.ASM
sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/SELECT/USA.INF

Переходим в рабочую папку:

cd MS-DOS/v4.0

Перекодируем все текстовые файлы в формат MS-DOS:

find -iname '*.bat' -o -iname '*.asm' -o -iname '*.skl' -o -iname 'zero.dat' -o -iname 'locscr' | xargs unix2dos -f
find -iname '*.BAT' -o -iname '*.ASM' -o -iname '*.SKL' -o -iname 'ZERO.DAT' -o -iname 'LOCSCR' | xargs unix2dos -f


и создаём там обновлённый бат-файл для переменных среды окружения, следующего содержания:

$ cat src/e.bat
@Echo off
echo setting up system to build the MS-DOS 4.01 SOURCE BAK...
set CL=
set LINK=
set MASM=
set COUNTRY=usa-ms
set BAKROOT=e:
rem BAKROOT points to the home drive/directory of the sources.
set LIB=%BAKROOT%\src\tools\bld\lib
set INIT=%BAKROOT%\src\tools
set INCLUDE=%BAKROOT%\src\tools\bld\inc
set PATH=%BAKROOT%\src\tools;%PATH%

В принципе этих операций достаточно для сборки, а то что ниже — это лично моё хулиганство, чтобы продемонстрировать, что DOS в действительности собрался, и нет подмены файлов. Я заменяю компанию Microsoft своим ником:

find -name "*.ASM" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.INC" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.H" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.MAC" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.MSG" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.C" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.CLB" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.SKL" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +

Всё, теперь исходники подготовлены, для того чтобы их можно было корректно собрать.

❯ Сборка


Собирать буду в dosbox, как показала практика — это не самое лучшее решение, сборка занимает около часа, что, мягко скажем, раздражает.

Запускаю dosbox:

dosbox

Далее в нём монтирую текущую директорию как диск E.

mount e: ./

И переходим на диск e, запускаем в dosbox бат-файл, который инициализирует среду окружения, и начинаем сборку:

e:
cd SRC
e.bat

и запускаем сборку командой nmake:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Если вы делаете это в dosbox, то можно пойти погулять. Окончанием сборки будет выглядеть следующим образом:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

После этого надо скопировать все собранные файлы в один каталог. Создаём каталог «4» в корне диска и копируем все бинарники специальным скриптом:

mkdir \4
CPY.BAT \4


Далее самое интересное:проверка того, что файлы запускаются. Для этого надо сделать так, чтобы dosbox прикидывался старым ДОСом. Выполняем следующую команду:

ver set 4.0

После переходим в каталог\4и можно выполнить в нёмcommand.com:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Хулиганство сработало, ДОС собрался и прикидывается, будто бы я его разработал. Дело стало за малым — протестировать это на реальном железе.

❯ Создание загрузочной дискетки


Дальше я думал просто примонтировать в dosbox пустой образ дискетки, и прямо из собранных файлов выполнить перенос системных файлов командой:

sys <path> a:

Но, факир был пьян, и фокус не удался. Поэтому решил MBR (Master Boot Record) позаимствовать с загрузочной дискетки DOS 4.0. К сожалению, MBR от MS-DOS 6.22 у меня не заработал.

Скачиваем установочные дискетки, попутно создаём пустую дискетку командой:

truncate --size 1474560 fdd.img

Загружаемся с установочной дискетки и ставим наш пустой образ 1,44 МБ дискетки в дисковод B, с помощью qemu:

qemu-system-i386 -fda Disk01.img -fdb fdd.img

Отменяем установку и форматируем дискету с переносом системных файлов:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

По окончании можно закрывать окно qemu. Возвращаемся к окну с dosbox и монтируем полученный образ дискетки, с помощью следующей команды:

imgmount a: <path to fdd.img> -t floppy

И потом просто вручную переносим файлы COMMAND.COM, IO.SYS и MSDOS.SYS на дискету:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Всё, образ готов. Можно его протестировать в виртуальной машине, или даже записать на настоящую дискету и загрузиться!

Для запуска в qemu следует использовать следующую команду:

qemu-system-i386 -fda fdd.img

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Записать на дискетку можно командой dd, я использую USB-FDD дисковод.

sudo dd if=fdd.img of=/dev/sdk status=progress

И, да! Эта система успешно работает на реальном железе. В данном случае проверка идёт на 386 компьютере.

❯ Выводы

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Запуск свежесобранного MS-DOS 4.0 на реальном железе

Не буду лукавить, сборка MS-DOS 4.0 оказалась не столь простой. Пришлось посмотреть некоторые видео, пошерстить различные репозитории. Но всё же это прекрасный опыт, который позволяет заглянуть внутрь исторических исходников и покопаться в них.

Давняя утечка MS-DOS 6.0 была неполной, и собрать его не представлялось возможным. А теперь у исследователей есть готовый инструментарий, для того чтобы попрактиковаться в разработки каких-то своих модулей старой операционной системы.

Конечно же, я по-настоящему жду, когда же обнародуют исходники MS-DOS 6.22, так как ещё надеюсь увидеть их на своём веку.

Удачи вам в ваших экспериментах!

❯ Полезные ссылки:

  1. Исходные коды MS-DOS от Microsoft

  2. Пример сборки MS-DOS 4.0 во FreeDOS (видео)

  3. Compiling MS-DOS 4.0 from DOS 4.0, on a PS/2!

  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные статьи.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 9
[моё] Гаджеты Электроника Программирование Разработка Программа Техника Timeweb DOS Длиннопост
10
16
Timeweb.Cloud
Timeweb.Cloud
1 год назад
Лига программистов

Играем в крестики-нолики c RPN калькулятором⁠⁠

Автор текста: dlinyj

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Когда я разбирался с программируемыми калькуляторами, то думал, как бы элегантнее протестировать функциональность устройства. Один из известных способов проверки – это реализация какой-либо игры.

Игр для калькуляторов, как на просторах бывшего СССР, так и за рубежом громадное количество, остаётся только выбрать. Наиболее популярная — это «Посадка на Луну». Однако, для меня она показалась скучной и неинтересной, а сам код сложным и запутанным. Поэтому мой выбор пал на крестики-нолики, так как все мы играли в них в школе, и мне стало интересно сыграть в неё с калькулятором.

Реализовать игру решил на модели HP-32S, поскольку он мне очень полюбился за красоту архитектурной реализации и удобство программирования.

❯ Основа программы


В предыдущей своей статье "Калькуляторы с обратной польской нотацией" я делал обзор литературы для программируемых калькуляторов. Среди которой была замечательная книга А.Г. Гайшут "Калькулятор твой помощник и соперник в играх".

В этой книге приводится огромное количество примеров игр на калькуляторе и, в частности, пример игры в крестики-нолики:

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Мне не удалось найти описания логики работы этих игр, а автор книги, к сожалению, умер в 2015 году. Попытка искать ответ в публикациях автора, любезно предоставленных на его личном сайте, не увенчалась успехом.

Поэтому придётся разбираться с этой программой самостоятельно. Приведу текст и описание программы из книги под спойлером:

Описание программы Крестики-нолики из книги:

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост
Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Главная задача – это перенос этого кода с МК-61 на калькулятор HP-32S. Для начала, разберёмся как эта программа работает.

❯ Проверка программы на МК-61


Первое, что я сделал – это перенабрал код из книги в формате, который понимает онлайн-эмулятор МК-61.

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Кстати, если интересно, то можно попробовать поиграть в эмуляторе, чтобы понять принцип работы. Для этого копируем код, вставляем в область «Код программы:» и нажимаем кнопку «Ввести в память». Картинка из книжки выше подсказывает нам, что калькулятор даёт координаты, куда ставить "X", а мы ему в ответ передаём координаты, куда ставить "O".

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Координаты для игры

Чтобы начать играть на клавиатуре калькулятора, нужно нажать кнопку [С/П]. В ответ будет выведено число, первое число всегда «9» (центр поля). В ответ необходимо ввести свою координату, например, «2» и нажать [С/П]. И так далее, пока вы не проиграете (калькулятор выведет «77», либо будет ничья (калькулятор выведет «0»).

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Калькулятор победил

Чтобы посмотреть последний ход калькулятора, надо обменять регистры X и Y местами, для этого нужно нажать на клавишу [⟷].

Проверка показала, что всё прекрасно работает как в эмуляторе, так и на живом калькуляторе, и ошибок в программе нет.

❯ Анализ кода программы для калькулятора МК-61


Для понимания работы программы, я переписал её на python. Конечно, даже при переносе на привычный язык программирования, код будет выглядеть немного диковато, поскольку реализовывался на совершенно иных принципах, но он хотя бы будет читаемым для остальных пользователей.

Особенность программирования МК-61 в том, что он пропускает команду перехода, если условие истинно, и исполняет — если ложно! Поэтому все условия для python пришлось инвертировать. Плюс, я для удобства ввёл дополнительные функции, которые также перенёс впоследствии в HP-32S: функция вывода координат крестиков и ввода ноликов, функция ничья и победа калькулятора:

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Первое – инициализирую регистры калькулятора:

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

После всех подпрограмм идёт головная программа:

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Можно увидеть, что в любом случае в самом начале крестик будет стоять на координате 9. Вся основная логика сокрыта в подпрограмме.

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Из всего кода я понял, что второй ход калькулятора будет на единицу меньше оппонента, а если ход был в координату «1», то равен восьми. Но вот что делает остальная логика программы, особенно зачем там тригонометрическая функция, для меня осталось загадкой. Буду рад читателям, если кто-то сможет прояснить, как же работает эта программа.

Исходный код доступен в репозитории проекта.

И, да, код вполне себе работоспособен, в чём несложно убедиться:

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

❯ Перенос кода на HP-32S

Напомню, что калькулятор HP-32S, который есть у меня, принадлежит семейству калькуляторов HP10B/14B/17B/17BII/19BII/20S/21S/22S/27S/28S/32S/32SII/42S, таким образом, всё, что приводится ниже, с небольшими адаптациями можно будет перенести и на другие модели этой серии.

Трудозатраты в предыдущей главе, по переносу кода на python, были проделаны с двумя целями:

  1. Понять, как же работает этот код (увы, не выполнено).

  2. Более удобно переносить на другую модель калькулятора.

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

Вооружившисьдокументацией на калькулятор HP-32S, я переписал программу крестиков-ноликов с питона для него. Для удобства я делал это в таблицах Exel. Как я уже говорил, особенность калькулятора в том, что он маркирует каждую строку буквой и цифрой, а любая метка – это смена буквы. Таблицы идеально подходят для этого.

Ниже под спойлером, приведён код программы. Если вы хоть немного знаете ассемблер и какой-то другой язык программирования, хоть тот же BASIC, то без труда сможете понять, что же там происходит.

Код программы для калькулятора HP-32S:

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост
Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

В силу того, что на калькуляторе HP-32S можно сделать вывод на экран конкретного регистра (с указанием имени регистра), а также запрос ввода другого конкретного регистра, то ввод-вывод становится чуть более интерактивным и интересным.

Лучше один раз увидеть, чем тысячу раз прочитать.

❯ Выводы


Изначально задача казалась мне такой простой, но заняла у меня достаточно приличное время. Её ценность состояла в том, что мне удалось разобраться — как же программировать для калькулятора HP-32S. В результате оказалось, что из модельного ряда калькуляторов, с которыми я занимался — эта версия оказалась самая дружелюбная и удобная.

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

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

❯ Полезные ссылки:

  1. Гитхаб этого проекта

  2. Первая часть «Калькуляторы с обратной польской нотацией»

  3. Сайта автора «Гайштут и его друзья»

  4. Онлайн-эмулятор МК-61

  5. Документация на калькулятор HP-32S


Если вам интересна металлообработка, старое железо, всякие DIY штуки, погроммирование и linux, то вы можете следить за мной ещё в телеграмме.

  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные статьи.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 13
[моё] Калькулятор Программирование СССР Timeweb Электроника Познавательно Игры Крестики-нолики Гаджеты Длиннопост
5
17
Timeweb.Cloud
Timeweb.Cloud
1 год назад
Серия IT

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры⁠⁠

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

Дисклеймер ↓

Этот материал должен был выйти в декабре 2023, прямо перед Новым годом, — и это классический пример про «лучшее враг хорошего». Сначала нам не нравилось, что мало подробностей. Потом — что их излишне много. Была версия с цитатами, но без скринов. Со скринами, но без цитат. Мы записали столько интервью с сетевиками, что сами в них запутались.

Но в итоге сегодня наша статья наконец-то выходит в свет. Из цензуры — только внимательная рука корректора. Передаем слово Максу Яковлеву.

Привет, Пикабу. Меня зовут Максим, я руковожу отделом сетевых инженеров в Таймвебе. Как вы уже поняли из заголовка, речь пойдет про наш прошлогодний DDoS. Это не стандартный постмортем, а скорее история от первого лица. Расскажу и покажу, каково это было изнутри — жить на энергетиках и пересобрать ядро сети всего за пару месяцев.

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

❯ Некоторое время до


Про Таймвеб вы, скорее всего, знаете. И скорее всего — как про хостинг, работающий по модели shared, с саб-сервисами вроде регистрации доменов, конструктора сайтов и пр. Еще есть облако, выросшее из хостинга, — о нем и пойдет речь.

В 2023 мы начали потихонечку распиливать легаси-сеть хостинга и делать ее похожей на сеть IaaS-провайдера. Но в целом архитектура на момент дня Х была довольно типичной для хостинга: несколько маршрутизаторов, стопка растянутых VLAN, три транзита и пара обменников.

В хостинговом бизнесе объем каналов рассчитывается от объема общего трафика на сеть, плюс запас на случай аварий и атак, обычно не превышающий 10х от трафика в ЧНН. Отсюда выстраивается защита инфраструктуры и клиентов: оценивается максимально ожидаемая совокупная мощность атак, берется небольшой запас и подбираются механизмы противодействия, чтобы и отдельного клиента защитить, и самим при этом не упасть.

Важно понимать, что любой типичный хостинг находится под DDoS-атакой практически 24/7: хоть одного клиента в каждый момент времени да атакуют. Поэтому DDoS для нас — это даже несколько банально. За 17 лет мы повидали много чего и в принципе знаем ключевые (и не только) паттерны, откуда, что, куда и как.

❯ Добрый вечер


14 сентября, ближе к 18:00, в нас влетел очередной DDoS, с которым известно что делать. Отбили — пошли отдыхать. И не успел я допить чай, как атака повторилась, потом опять, а потом еще раз. Каждый раз интервал уменьшался, а объем нарастал.

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

Скриншот от StormWall

Далее для любителей краткого изложения перечислю возникшую причинно-следственную связь по инфраструктуре.

В площадку наливается больше, чем та способна переварить → роутеры перегружаются вплоть до потери сигнализации → мы через OOB блокируем атаку через RTBH/FS или переключаем сеть на сторонний центр очистки трафика → цель атаки меняется в течение пяти минут.

Из дополнительных проблем в СПб: аплинки подключены через свитчи с переподпиской, QOS или не работает, или не хватает буфера → разваливается сигнализация. Дополнительно существуют громадные растянутые VLAN, из-за чего атака на одну подсеть затрагивает огромное количество клиентов. Мониторинг и контрмеры работают слишком медленно.

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

Иногда приходилось расставлять приоритеты

И в остальных локациях: нет своей сети, а ЦОДы нас блочат, защищая свою инфраструктуру. Когда сеть отдается напрямую с железок дата-центра, нет не то что возможности заблокировать атаку, затруднена даже идентификация паттерна: раз — и ноды отвалились. Из доступной информации только триггер в Заббиксе. Самые печальные моменты — когда у нас сутками лежало несколько локаций целиком и наглухо. Даже аплинки наших провайдеров в дата-центрах просто говорили, что мы не готовы это фильтровать, поэтому мы вас отключаем. Как атаки прекратятся, подключим обратно.

❯ Мы накидываем план


Первое: научиться блокировать хотя бы часть атаки на уровне маршрутизаторов провайдеров. Цель — снизить воздействие на клиентов, защитить инфраструктуру. Второе: научить нашу сеть переваривать всю аплинковую емкость без спецэффектов, параллельно ее расширяя.

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

И стратегически: построить свои сети во всех локациях. И собственную защиту.

В первую очередь отказываемся от существующей системы подавления DDoS, потому что она приносит больше вреда, чем пользы. Сетевики начинают спать по очереди, текущий flow-мониторинг меняем на семплированный Inline IPFIX с payload-ом. Таким образом не ждем, пока соберется поток, и принимаем решения за секунды. Этот шаг помог уменьшить среднее время обнаружения каждой атаки: чтобы понять, что она началась и как нужно действовать, нам сначала нужна была пара минут, чуть позже — 15 секунд, а сейчас автоматика реагирует почти мгновенно.

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

Рабочая обстановка

Изначально управление было ручным, чуть позже принятие решений стало автоматизированным: мониторинг научился блокировать DDoS сразу же после обнаружения. В итоге за период с 14 по 20 сентября мы заблокировали более 20 тысяч отдельных паттернов.

В это время по всем каналам — в телеге, в соцсетях, в тикетах — клиенты переживали, ругались и задавали вопросы. И я их прекрасно понимаю. Кстати, о прекрасном:

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

Дорабатываем защиту: делаем ее быстрее, технологичнее, чтобы принимала максимально правильные решения. Разбираем всю старую архитектуру и избыточные куски сети — все под нагрузкой и идущими атаками и так, чтобы воздействие на клиентов было минимальным.
Примерно в это же время атакующие понимают, что мы что-то сделали, поэтому меняют паттерны. Мы стали получать мощные краткосрочные волны трафика, на которые не успевала реагировать ни наша программа, ни большинство предлагаемых на рынке защит: заливало настолько разнообразно и быстро, что наши стыки и некоторые обменники начали складывать в нас сессии по prefix-limit. В эти периоды бывало и такое:

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

❯ Строим свою сеть


Начинаем с Питера. План включал в себя апгрейд маршрутизатора с установкой дополнительных плат и подключение к различным каналам и точкам обмена трафиком. Цель — увеличить пропускную способность: нам нужно было научиться принимать трафик атак и блокировать более точечно, а не просто кидаться блекхолами и снимать префиксы. Кроме того, стало понятно, что объемы атак могут расти и нам нужно будет научиться расширять емкость более оперативно, не проходя весь цикл «найти железо → найти емкость → собрать».

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

Главный роутер в СПб. На скрине MX480 в составе 2xSCBE2, 2xRE-S-2X00x6, 4xMPC7E MRATE

Обычные маршрутизаторы не всегда эффективны для такой деятельности: они обладают слишком сложным и дорогим конвейером обработки трафика, предназначенным для других задач. Исходя из этого мы решили действовать комплексно: помимо расширения каналов и увеличения портовой емкости сервисных и пограничных маршрутизаторов начали внедрять пакетные платформы на базе Juniper PTX. Они хоть и попроще, но в них много дешевых 100G/400G-портов, как раз то, что нам нужно.

Благодаря хорошим отношениям с поставщиками мы смогли быстро найти сетевое оборудование: поставка заняла всего полтора месяца. Для техники такого класса это очень быстро.

В итоге в Питере мы добили емкость по основным направлениям до 500+ гбит, а по автономке у нас сейчас суммарно около терабита. Уже через две недели после этого ситуация в СПб стабилизировалась: емкости хватало, фильтры отрабатывали оперативно. В остальных локациях сеть была арендованная: и в Казахстане, и в Европе. По этой причине параллельно с выравниванием ситуации в Питере у нас появилась новая приоритетная задача: поставить в заграничные локации собственные маршрутизаторы и дотянуться до них из Питера — тянуться решили через M9.

Девятка до сих пор крупнейшая пиринговая точка и сосредоточение телеком-инфраструктуры РФ и СНГ. Кроме основных трасс для всей России, туда же заходят каналы от СНГ — зачастую единственные.

Магистральные каналы между площадками дают несколько преимуществ:

  1. Возможность отправлять и получать трафик через любые другие стыки Таймвеба во всех странах.

  2. Возможность предоставлять клиентам дополнительные сервисы в виде каналов связи.

  3. Наше управление не развалится никогда, даже если внешние стыки в локации будут забиты под полку.

Собственно, начинаем с Казахстана. Протянули канал до девятки и пустили трафик уже через свою сеть.

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

MX204 на девятке, собирает магистрали и внешние линки. Скоро заменим его 960-м и будем забивать сотками

Кстати, с доставкой в Казахстан повезло не с первого раза. На казахской таможне менялся состав — и все встало мертвым грузом. Ситуацию решили творчески: отправили одного из наших сотрудников везти 204. Забавно, что изначально мы собирались отправлять MX104 — довольно старую и давно снятую с поддержки платформу, которой, впрочем, с запасом хватает на нужды этой площадки.

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

MX104 со склада — кусочек истории телекоммуникаций

Но из-за ее громоздкости отправили 204 — и теперь в казахстанском ЦОДе у нас стоит платформа, которой хватит на целый машинный зал облака, а не на наши несколько стоек. На память осталась только фотка со стикером из аэропорта Екб:

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

К декабрю дотянулись и в Европу: теперь у нас есть узлы во Франкфурте и Амстердаме с арендованной магистральной емкостью. Там появились выходы и в интернет — через Tier-1 операторов, и на европейские обменники.

Следующий логичный шаг — перевели площадки в Амстердаме и Польше на свою сеть. Теперь нас никто не отключит в случае атак, как бонус — интернета стало больше и появились выделенные каналы для клиентских выделенных серверов, скоро будут и во всем Клауде. В итоге вы сможете не только заказать себе сервер с 10G-интернетом, но и расширить локальную сеть до любой нашей точки присутствия — с гарантированной полосой и любыми удобными вам настройками.

Раз уж пошли по локациям, то добавлю, что в этом году запустились и в Москве, в IXcellerate. Это Tier-3 с уникальной системой охлаждения по типу «холодная стена». Я там был на экскурсии — наверное, самое интересное, что я видел в России и СНГ, а поездил я немало. Пиво еще вкусное у них было — тоже плюс 🙂

Москва, кстати, у нас сразу же запустилась с нормальной архитектурой: широкие линки на стойку, 200G до девятки, масштабируемый слой агрегации. По умолчанию даем на все виртуальные серверы по гигабиту в секунду вместо 200 мегабит, на всех дедиках доступно 10G/40G по запросу. В результате, если клиентам это необходимо, мы можем дать гораздо больше емкости, чем могли бы в Петербурге еще полгода назад.

«Поздравляем с терабитом». Та самая статья про DDoS-2023 — без цензуры IT, Timeweb, DDoS, Защита от DDoS, Хостинг, Программирование, Длиннопост

2xQFX5120-32C в IXcellerate

❯ Почему мы не спрятались за подрядчиками


На самом деле мы обращались к нескольким компаниям, но на тот момент уже стало понятно, что у нас не получится использовать их как общее средство защиты для всей сети.

Решения по комплексной защите от DDoS, по сути, делятся на два вида: это готовые решения, устанавливающиеся непосредственно на сети компании, и сторонние центры очистки трафика, через которые этот самый трафик нужно пропускать. На тот момент у нас существовали собственные чистилки и был опыт постройки подобных решений. Посоветовавшись с коллегами по цеху, решили двигаться именно по такому сценарию: принимать трафик → очищать большие потоки на уровне сети, привлекая центры очистки в отдельных случаях → заниматься тонкой очисткой с помощью вендорских решений.

Важно отметить, что при использовании внутренних решений для защиты от DDoS необходима сеть, способная обрабатывать и фильтровать трафик, не затрагивая других клиентов или локации. То, что отфильтровать не удалось, должно быть направлено на системы тонкой очистки с минимальной задержкой и воздействием на чистый трафик.

Необходимо было сначала усовершенствовать сеть до этого состояния, а затем заниматься внедрением коробочных решений. Мы переводили атакуемые подсети в партнерские центры очистки, хоть иногда это больше аффектило на нормальный трафик, чем помогало.

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

❯ Что сейчас


Подобные атаки прилетают, но в целом мы научились их фильтровать: чистить на уровне сетевого оборудования или деприоритизировать/блокировать клиента, если объем превышает пороги.

Работы еще много: всю эту новообразовавшуюся сеть нужно резервировать и расширять. На М9 мы взяли целую стойку и собираемся ставить шасси MX960 — с большим запасом на будущее. Оно будет выполнять роль магистральной развязки, принимать внешние стыки и выступать ядром сети дата-центров по Москве, у нас там большие планы. Не забываем и про Северную столицу: платформа PTX10003 станет ядром нового узла на Кантемировской («Радуга»), где будет перемыкать магистрали и стыки с внешними сетями, выступая частью инфраструктуры очистки трафика в Санкт-Петербурге.

Находимся на этапе тестирования с Servicepipe: будем пробовать систему уже тонкой очистки трафика — если атака на клиента не угрожает инфраструктуре, не полностью все блокировать, а принимать трафик атак на себя и отдавать клиенту уже очищенный, вплоть до L7.

Много работы будет по пирингам: думаем, что скоро мы сделаем прямые подключения к Google, AWS, Azure и другим гиперскейлерам. Хотим организовывать серьезные продуктовые преимущества для наших клиентов: если ваш продукт требует очень хорошей связности с мировыми облаками или у вас мультиклауд — мы сможем обеспечить как хорошую связность по интернету, так и выделенные линии, если потребуется.

Для выделенных серверов по части сети у нас получилось очень интересное предложение. По запросу скорости мы даем вплоть до 100—200 гигабит на сервер, так мало кто умеет. Кроме простого интернета — широкий набор сетевых решений: тут и более-менее стандартные L2/L3 VPN на MPLS, и любые манипуляции с внешней маршрутизацией. Для владельцев своих AS соберем транзит, притянем любую популярную точку обмена трафиком. Для тех, кто хочет ими стать, — поможем выпустить ASN, арендовать или купить сети, анонсировать их в мир.

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

❯ И напоследок — неудобный вопрос от маркетинга

— Почему не начали делать все это раньше, а триггером стало то, что на нас пришла атака?


Расширение в целом планировалось, Таймвеб всегда делал упор на качество сети, но процесс шел постепенно. Исторически мы сфокусировались на нашем центральном хабе в СПб, а стройка в остальных локациях планировалась по мере их расширения.

А почему атаки стали триггером? Все банально. Во-первых, мы поняли, что начали расти сильно быстрее, чем планировали. Стало понятно, что нужно больше емкости, больше сервисов — и не когда-то, а сейчас. Во-вторых, появились новые угрозы, которые не отражаются стандартными средствами. В какой-то момент мы переросли «стандартные» подходы, которые мог бы использовать игрок меньшего размера, — нужно было пилить какой-то кастом или средствами сторонней компании, или самостоятельно. Мы выбрали второе.

Присоединяйтесь к нашему комьюнити в Телеграме — здесь можно общаться с сообществом, задавать вопросы руководителям, гендиректорам и фаундерам, и предлагать идеи ↩

Показать полностью 11
[моё] IT Timeweb DDoS Защита от DDoS Хостинг Программирование Длиннопост
2
56
Timeweb.Cloud
Timeweb.Cloud
1 год назад
TECHNO BROTHER
Серия IT

Как проклятие невидимой стены ждало меня 20 лет⁠⁠

  • Автор: kesn

  • Больше интересных фото и комментариев в оригинале материала

Как проклятие невидимой стены ждало меня 20 лет Проблема, IT, Графика, Движок, Программирование, Timeweb, Видео, YouTube, Гифка, Длиннопост

Когда на меня накатывает хандра, я бросаю всё и пилю свой игровой движок. Это неблагодарное занятие, но меня прёт.

В самом начале у меня были такие планы: вжух-вжух, щас возьму ведро, накидаю туда всяких библиотек для графики, физики и звуков, добавлю сетевую библиотеку по вкусу, перемешаю всё с какой-нибудь системой сообщений, и готово. Приключение на 15 минут.

И вот я тут спустя 5 лет.

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

Это не моё видео, но оно очень точно передаёт, как у меня происходит разработка:

С другой стороны, конечно, когда эти проблемы решаешь, чувствуешь себя богом и королём жизни, и после этого ты вроде как опять хочешь программировать. И даже кажется, что это была последняя трудность. Ха-ха, наивный!.. Но мне это нравится. Типа как альпинисты идут в гору и страдают, когда можно пойти в бар с друзьями и попить пивко. Каждому своё.

Ну и вот про одну такую ошибку я хотел поговорить. Есть такой движок — ODE (Open Dynamics Engine). Он появился где-то в палеолите, динозавры его накодили, от документации остались только царапины на скалах. Но он работает, он простой в использовании, и у него есть сишные заголовки, поэтому я мог просто написать враппер на Nim и использовать его в своём движке. В Nim вообще ни хрена нету, поэтому канонический способ — это взять какую-нибудь библиотеку из Си, научиться её вызывать, а потом говорить всем, что ты написал крутую программу на Nim.

Итак, сначала я просто добавил кубики на сцену и отрисовал их. Физический движок был в полной гармонии с графическим, и когда мне графика отрисовывала, что я приближаюсь к кубу и толкаю его, кубик действительно отлетал и вращался. Короче говоря, всё шло так, как я и планировал.

Разумеется, если вы не планируете делать Minecraft, то вам может понадобиться что-то поинтересней, чем кубик. В ODE есть специальный класс Trimesh, который как раз позволяет вам сделать сложную геометрию. Фактически, вы можете создать любое тело из набора треугольников. Типа такого:

Как проклятие невидимой стены ждало меня 20 лет Проблема, IT, Графика, Движок, Программирование, Timeweb, Видео, YouTube, Гифка, Длиннопост

Машина глупая, поэтому мы не можем ей сказать "нарисуй зайца", мы можем ей сказать "вот такие есть вершины, соедини их вот так-то, и это будет называться зайцем". Я, естественно, не стал рубить с плеча и решил вместо зайца сделать простой треугольник и проверить, что всё корректно с ним работает.

Как проклятие невидимой стены ждало меня 20 лет Проблема, IT, Графика, Движок, Программирование, Timeweb, Видео, YouTube, Гифка, Длиннопост

Я создал треугольник, он успешно отрисовался на сцене, я начал ходить по миру… и обнаружил, что треугольник не в том месте, где нарисован, а где-то непонятно где.

Так и появилась эта дурацкая невидимая стена.

Фактически, я мог ходить по сцене, и где-то я упирался в тот самый треугольник, который вообще-то должен был быть там, где нарисован. Я в принципе даже что-то такое и ожидал, потому что, как я уже где-то писал, только три раза в своей жизни я написал код, который заработал с первого раза. Наверняка я где-то перепутал координату — вместо X передал Y, или наоборот, ну что-нибудь такое. Эти программисты, вы знаете!

Отрисовать этот треугольник я не мог, потому что координаты были правильные, графический движок всё отрисовывал правильно, но вот физический движок как-то неправильно интерпретировал мои правильные данные. Поэтому я стал ходить по миру и пытаться определить очертания этой невидимой стены. В конце концов я её нашёл (она была достаточно странной), и я решил немного подвигать треугольник, чтобы посмотреть, как он влияет на эту стену. Казалось бы, если я просто где-то перепутал координаты, то подвинув треугольник, я немножко подвину эту стену. Но хрен мне там! Стена исчезала и появлялась совершенно случайно, прыгала далеко даже от малейшего изменения координат, и я не мог понять, почему.

И тут я вспомнил эту недалёкую женщину из заЩИТников! Если кто не знает, она сделалась невидимой и решила спрятаться в дожде. Отличный план, надёжный, как швейцарские часы:

Как проклятие невидимой стены ждало меня 20 лет Проблема, IT, Графика, Движок, Программирование, Timeweb, Видео, YouTube, Гифка, Длиннопост

Я подумал, что это прям мой случай, и решил полить свою стену дождём, чтобы увидеть её. Дождя у меня не было, зато были кубики, поэтому я создал штук 50 и стал кидать их вниз. При касании стены они к ней прилипали, и я мог видеть её очертания. А когда что-то видишь — отлаживать в разы легче!

Как проклятие невидимой стены ждало меня 20 лет Проблема, IT, Графика, Движок, Программирование, Timeweb, Видео, YouTube, Гифка, Длиннопост

Что ж… Это была хорошая попытка понять, по какому закону стена появляется в том месте, где она появляется, но это мне ничего не дало. Даже видя эту стену, я не находил никакой закономерности.

Если нужно где-то найти таких же неудачников, как я, то самое лучшее место для этого — интернет. И я нашёл его — единственного человека, который отстрадал своё и рассказал об этом. Представляете, в 2006 году у какого-то чувака из Германии пятая точка горела точно так же, как у меня сейчас! Не знаю, что он выкурил (похоже, что исходники), но, ОКАЗЫВЕТСЯ, физический движок ожидает от вас трёхмерные точки, но передавать их надо как четырёхмерный вектор, просто в четвертой координате надо поставить мусор, типа так: [x1, y1, z1, 0, x2, y2, z2, 0, ...]. Скажите, как по const dReal* Vertices я должен понять, что там ждут в гости четырёхмерные вершины?

Как проклятие невидимой стены ждало меня 20 лет Проблема, IT, Графика, Движок, Программирование, Timeweb, Видео, YouTube, Гифка, Длиннопост


За что я люблю опенсорс — можно всегда докопаться до истоков всего. Я полез в исходники, и вот что обнаружил.

В 2003 году пришёл Russel Smith и добавил всю эту функциональность с trimesh collisions, в том числе интересующую меня строчку:

Как проклятие невидимой стены ждало меня 20 лет Проблема, IT, Графика, Движок, Программирование, Timeweb, Видео, YouTube, Гифка, Длиннопост

Тут всё понятно, потому что в определении чётко говорится, что dVector3 — это четырёхмерный вектор (есть некий шарм в этой логике).

А потом через пару месяцев врывается Erwin Coumans и переписывает так, чтобы тип был непонятен:

Как проклятие невидимой стены ждало меня 20 лет Проблема, IT, Графика, Движок, Программирование, Timeweb, Видео, YouTube, Гифка, Длиннопост
Как проклятие невидимой стены ждало меня 20 лет Проблема, IT, Графика, Движок, Программирование, Timeweb, Видео, YouTube, Гифка, Длиннопост

И только представьте себе, через 20 лет это изменение находит какого-то чувака (меня), который пишет вообще на другом языке программирования, и заставляет этого чувака гореть в тщетных попытках понять, какого хрена не работает.

Я переписываю код с добавлением четвертой координаты, и все начинает работать.

Как проклятие невидимой стены ждало меня 20 лет Проблема, IT, Графика, Движок, Программирование, Timeweb, Видео, YouTube, Гифка, Длиннопост

Такие дела.

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

Получается такой вот эффект бабочки, как с этой невидимой стеной. Поэтому когда вы в следующий раз сядете писать код, представьте, что какой-то разраб через 20 лет будет в нём разбираться, и, пожалуйста, постарайтесь сделать жизнь этого чувака хоть чутоку легче. Ведь однажды этим кем-то можете оказаться вы сами.

Не только лишь все могут смотреть в будущее, но вы сможете, если подпишетесь на мой уютненький канал Блог Погромиста.

А ещё я держу все свои яйца в одной корзине (в смысле, все проекты у одного облачного провайдера) — Timeweb. Поэтому нагло рекламирую то, чем сам пользуюсь — вэлкам.

Показать полностью 9 1
[моё] Проблема IT Графика Движок Программирование Timeweb Видео YouTube Гифка Длиннопост
5
270
Timeweb.Cloud
Timeweb.Cloud
2 года назад
TECHNO BROTHER
Серия Старое железо

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности⁠⁠

  • Автор: MechNIX

  • Оригинальный материал

Дополнительные фото, ссылки, а также информация по терминалу в источнике материала и комментариях.

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

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

В данной статье описан пример возможности пребывания в современном интернете на примере компьютера архитектуры PC/XT, без Ethernet-карты, болгарского производителя «Правец».

Доступ в интернет при помощи консольного браузера, может быть полезен для просмотра документации, мануалов. Не всегда на сервере установлена графическая оболочка. Важна суть, а при помощи каких средств она получена, пожалуй, дело второе.

Также данное решение может быть использовано для управления хостом — мы получим MS-DOS терминал с функционалом Kermit.

Под катом детальные фото содержимого «ретро-Правц»а, настройка терминального соединения через RS-232, видеодемонстрация выхода в интернет. Фото кликабельны.

Приступим? :)

❯ Введение


Для чего городить огород?

Вижу для себя ряд оснований. Во-первых — изучение механизмов/возможностей/методики, ведь знать путь и пройти его — не одно и то же. Во-вторых — тестирование возможностей старого железа в современной среде. В-третьих — фиксация и систематизация опыта, ну и как шпаргалка на будущее.

Общая картина взаимодействия выглядит так:

  • Компьютер под управлением операционной системы Linux (хост), имеет выход в интернет.

  • На хосте в качестве экспериментальных текстовых браузеров установлены Lynx и Links2.

  • К хосту при помощи нуль-модемного кабеля подключен «Правец» (используется в качестве терминала), через com-порт (RS-232).

  • На «Правце» в качестве терминальной программы установлен терминальный клиент-Kermit, позволяющий осуществить соединение с хостом.

  • Настройки com-портов будут одинаковыми на обеих машинах. 8N1, что означает: 8 — количество бит в пакете, N — отсутствие контроля четности и 1-стоповый бит. Работать будем со скоростью 9600 бит/с.


Почему выбрано именно такое решение, а не использована Ethernet-карта с интерфейсом ISA? Для аутентичности, в «Правце» ISA-Ethernet отсутствовала, а COM-порт был. Мы обойдемся малым, но вставить ISA-Ethernet и работать в MS-DOS в сети на скорости 10 Мбит тоже возможно.

❯ Предыстория


«Правец» — компьютер болгарского производства.

Мой экземпляр системного блока случайно был обнаружен в заброшенном сарае — КУНГе, у папы, где пролежал неизвестное количество лет. В дань уважения был установлен и выпущен погулять в интернет в 2023 году.

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

На момент написания статьи согласно наклейке-шильдику «Правцу» — 35 лет.

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

❯ Начинка/архитектура


Системный блок и содержимое были разобраны по винтику, продуты, отмыты и очищены. Платы визуально проинспектированы и все собрано в обратном порядке.

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

Опишу основные узлы.

Правец базируется на процессоре архитектуры Intel 8088 производства фирмы Siemens:

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

Материнская плата фирмы производителя XL-7 TURBO:

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

Оперативная память (RAM) объемом 640Кб:

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

Вичестер MFM — оказался неисправным, поэтому, скрепя сердцем, отошел от аутентичности и заменил дисковую подсистему на новодельный контроллер ISA с картой Compact Flash.

Неисправный винчестер — крест на нем не ставлю, но возможно в перспективе попытаюсь реанимировать и поместить обратно в корпус:

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

Контроллер флоппи:

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

Контроллер жесткого диска:

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

Плата, на которую сделан упор в рамках данной статьи — плата коммуникационных портов. Данная плата содержит две БИС. Любопытно, что разных номиналов — UM8250B и FM88450-A.
Торцы платы содержат разъемы db9 и db25.

Через данную плату будет осуществляться коммуникация с хостом, и через нее мы выйдем в интернет.

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

Итак, физически компьютер проинспектирован и собран. Приступим к загрузке операционной системы, тестам и коннекту.

Аутентичного монитора и клавиатуры, к сожалению, у меня нет. Возьму единственный свой ЭЛТ-монитор и AT-клавиатуру, подключенную через конвертер AT-XT, ну а манипулятор-мышь в данном примере не нужен, хотя его можно воткнуть в тот же универсальный COM-порт.

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

Запуск тестовой программы Checkit.

Характеристики видны на последующих фотографиях экрана:

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube
Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

❯ Настройка хоста на стороне Linux


В качестве операционной системы — посредника доступа в интернет, используем облегченную версию Ubuntu.

Описание общей конструкции приведено выше, здесь мы увидим основные шаги настройки сервиса agetty.

Что делает agetty? Он открывает определенный (прописанный в конфигурационном файле) com-порт и выводит приглашение для авторизации. Приглашение — связка login и password для последующей работы в консоли. Таким же образом работает и подобный, по сути, сервис mgetty, только в данном случае соединение должно производиться через модем.

Нам нужно пройти 4 шага:

1. Копируем agetty.

«serial-getty@.service», изначально расположенный по пути /lib/systemd/system
в /etc/systemd/system:

sudo cp /lib/systemd/system/serial-getty@.service /etc/systemd/system/serial-getty@ttyS0.service

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube


2. Конфигурируем agetty.

Редактируем следующий файл:

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

В части скорости передачи данных, убираем другие значения скорости, оставляя лишь 9600.

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube


3. Запускаем созданный сервис agetty.

sudo systemctl daemon-reload

sudo systemctl start serial-getty@ttyS0.service

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube


4. Устанавливаем текстовые браузеры Lynx и Links2.

Для наглядности в две команды:

sudo apt install lynx

sudo apt install links2

Можно и так:

sudo apt install lynx links2

Все, настройка хоста завершена, он готов принимать входящие соединения через com-порт, и готов выходить в интернет с помощью текстовых браузеров.

❯ Настройка на стороне терминала MS-DOS


Версия MS-DOS 6.22 выбрана как наиболее зрелая, она прекрасно идет на нашей архитектуре, в части того, что нам требуется.

Физической средой передачи данных будет являться собственноручно собранный нуль-модемный кабель.

Соединение с хостом под управлением OS Linux на программном уровне мы будем осуществлять с помощью Kermit.

Настроек в Kermit много, можно весьма гибко тюнинговать различные параметры, но в нашем случае достаточно лишь выставить скорость com-порта.

Запускаем «kermit.exe», пишем:

set speed 9600

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube


Скорость порта настроена, можно переходить к соединению через последовательный порт RS232.

❯ Коннект!


В запущенном Kermit вводим комманду: connect.

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

Мы видим приглашение авторизации, которое нам предоставляет agetty, запущенный на хосте.

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube


Работаем на камеру:

Консольные браузеры описаны тут и тут.

Были испробованы два — LYNX и Links2.

Вот мы и подобрались к вопросу — а что можно делать в консольном интернете?

Практическую пользу я вижу в чтении текстовой информации — это могут быть различные мануалы, новостные ленты. Также в познавательных целях можно подсоединиться к bbs (bulletin board system) — это электронная доска объявлений, а так же посмотреть telnet-мультики и играть в игры текстового жанра. Данные шаги ведут к пониманию механизмов и основ современного/былого интернета.

Посмотрите ролики, наглядно показывающие, как это выглядит:

Lynks2:


LYNX:

Ну ASCII-ART напоследок:

Болгарский «Правец-16» (ЕС-1839). Вылазка в консольный интернет в 2023 году на PC/XT 35-летней давности IT, Программирование, Техника, Ретро, Timeweb, Электроника, Познавательно, Длиннопост, Видео, YouTube

❯ Выводы


Мы подключились к текстовому интернету при помощи терминала, построенного на архитектуре PC/XT. Получать информацию из интернета описанным способом — вполне возможно.
Комментируйте, пожалуйста, всё ли было понятно, напишите свое видение данных механизмов, и как еще можно использовать подобные конструкции.

Спасибо за терпение. :)

Больше интересных статей в нашем блоге на Хабре. Недорогие сервера для ваших проектов — здесь.

Показать полностью 22 3
[моё] IT Программирование Техника Ретро Timeweb Электроника Познавательно Длиннопост Видео YouTube
32
70
Timeweb.Cloud
Timeweb.Cloud
2 года назад
IT минувших дней
Серия Памятные даты

113 лет со дня рождения Конрада Цузе – всемирно признанного изобретателя компьютера⁠⁠

Автор: Albert_Wesker

Оригинальный материал

113 лет со дня рождения Конрада Цузе – всемирно признанного изобретателя компьютера Изобретения, IT, Timeweb, Познавательно, Технологии, Компьютер, ЭВМ, Программирование, Техника, Третий рейх, Научпоп, Инновации, Длиннопост

О биографии Цузе написано немало. Мы не будем повторять уже написанное, а рассмотрим в деталях – как же был создан первый компьютер и что послужило для изобретателя «вдохновением».

Конрад Цузе родился 22 июня 1910 года в Берлине. Столица тогдашней Германской империи, последующих Веймарской республики, Третьего рейха, ГДР и нынешней ФРГ на протяжении большей части прошлого века играла роль одного из центров Европы. Не только политических – как колыбель трех крупнейших войн (двух мировых и одной «холодной»), – но и научных. В Берлине Планк создал квантовую физику, а Эйнштейн – общую теорию относительности. К ним можно добавить и Цузе с его первым программируемым компьютером.

В двухлетнем возрасте будущий компьютерный гений вместе с родителями переехал в городок Браунсберг в Восточной Пруссии, где потом окончил школу. Там продвинутый ученик сконструировал действующую модель сложного устройства – еще не вычислительной машины, а «всего лишь» машины для размена монет. И проектировал город будущего – на почти 40 миллионов жителей!

Потом семья перебралась в город Хойерсверда под Дрезденом, где Цузе закончил колледж. И в 1928 году вернулся в столицу, где поступил в знаменитую Берлинскую высшую техническую школу (ныне Берлинский технический университет).

Я специализировался в области машиностроения. Упражнения по технической графике отрезвили меня. Они оставляли мало свободы для творчества, все стандартизировалось и фиксировалось: толщина линий, вид мерок, даже места, где должны были располагаться мерки. Изучение архитектуры показалось для моего внутреннего художника заманчивым миражом. Перешел на факультет архитектуры — и снова разочаровался. Дорические и ионические колонны меня совершенно не заинтересовали. Может, из меня и вышел бы сносный архитектор, кто знает? Однако я снова переключился; на этот раз на том же факультете, но на другой специальности. Инженер-строитель теперь казался мне идеальным сочетанием инженера и художника. Однако я испытывал ярко выраженное отвращение к статическим расчетам, которыми мы, студенты-строители, мучились. Я восхищался профессорами, которые освоили эту арифметику, как полубоги из другого мира.

Несколько позже молодому Цузе в голову ещё придет идея, как оптимизировать работу с расчетами, но в то время его интересовали несколько другие вопросы. Например, дорожное движение. В то время в Берлине только-только появились светофоры, и на дорогах творился «полный хаос». Цузе придумал идею «зелёной волны», но…

113 лет со дня рождения Конрада Цузе – всемирно признанного изобретателя компьютера Изобретения, IT, Timeweb, Познавательно, Технологии, Компьютер, ЭВМ, Программирование, Техника, Третий рейх, Научпоп, Инновации, Длиннопост

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

Также Цузе увлекался и фотографией – и как искусством, и как процессом.

113 лет со дня рождения Конрада Цузе – всемирно признанного изобретателя компьютера Изобретения, IT, Timeweb, Познавательно, Технологии, Компьютер, ЭВМ, Программирование, Техника, Третий рейх, Научпоп, Инновации, Длиннопост

Я занимался всевозможными мелкими и крупными разработками — от автоспусков до полностью автоматических аппаратов, но у меня не было опыта для практической реализации этих идей. И я был очень расстроен, когда автоматические фотобудки, которые я хотел изобрести сам, были представлены под названием Photomaton. Они работали по методу, обратному моему, и предоставляли готовые изображения за восемь минут.

В 1935 году Цузе покинул свою alma mater с дипломом «гражданского инженера». Поработав какое-то время в немецком представительстве компании Ford Motor (где он занимался в основном рекламой), он перешел на работу на авиастроительный завод компании Henschel в берлинском пригороде Шенфельде. Там молодого сотрудника ждала уже «работа по специальности» – инженерно-конструкторская.

И именно там, проделывая ненавистные утомительные вычисления на бумаге, Конрад Цузе наконец задумался не о фотобудке или светофорах, а о сказочной «палочке-выручалочке», которая избавила бы его от этой бумажной рутины. О вычислительной машине.

113 лет со дня рождения Конрада Цузе – всемирно признанного изобретателя компьютера Изобретения, IT, Timeweb, Познавательно, Технологии, Компьютер, ЭВМ, Программирование, Техника, Третий рейх, Научпоп, Инновации, Длиннопост

…вскоре я бросил эту работу и устроил изобретательскую мастерскую в квартире родителей. Я хотел полностью посвятить себя компьютеру… Конечно, мои родители не были в восторге от этого проекта, но они были настолько уверены в моих способностях, что поддерживали меня, как могли. Позже мне даже разрешили использовать самую большую комнату в их квартире для установки первого, еще несколько [устройство весило полтонны] неуклюжего аппарата. Меня поддерживали и друзья с учебы. Они помогли деньгами, которые сегодня могут показаться скромными, но без которых я не смог бы получить даже необходимые материалы для работы. Первыми спонсорами стали старый школьный друг Герберт Вебер из Браунсберга и моя сестра. Конечно же, всегда помогали и родители. Те, кто не мог помочь финансово, вызвались помогать мне в мастерской [приятели Цузе вручную выпилили 20000 пластин для переключателей].

К 1938 году машина была собрана. Она получила название Z1 – по первой букве фамилии своего создателя. Примечательно, что изначально Цузе назвал изобретение V1, то есть, ФАУ, что называется «без задней мысли» — он не знал, что спустя несколько лет так назовут известные на весь мир ракеты. Это еще сослужит службу, но позже.

Как выше мы уже отметили, вес компьютера составлял около 500 кг и занимал он самую большую комнату в родительской квартире. Для ввода данных установили клавиатуру из переделанной печатной машинки, а для вывода результатов — панель с мигающими лампочками. Машина работала на моторе от пылесоса, но у неё были почти все элементы современных компьютеров: регистры памяти, арифметико-логическое устройство, интерфейсы ввода и вывода.

У Z1 был отдельный блок памяти из 64 слов по 22 бита. Он умел работать с 22-битными числами с плавающей запятой. Машина складывала числа в течение 5 секунд, умножала — 10 секунд. Чтобы получить результат, она смещала пластины в определённом порядке. Условных переходов и циклов не было. Программы (а у компьютера была система из 9 команд) в памяти не хранились, поэтому каждый раз их вводили вручную.

Конечно, Z1 был демонстрационной моделью без возможности практического применения. Он постоянно ломался и ошибался в вычислениях. Но прототип доказал, что создать программируемую машину возможно. Сегодня копия первого в мире компьютера, воссозданная в 80-х под руководством Цузе, хранится в Немецком технологическом музее.

113 лет со дня рождения Конрада Цузе – всемирно признанного изобретателя компьютера Изобретения, IT, Timeweb, Познавательно, Технологии, Компьютер, ЭВМ, Программирование, Техника, Третий рейх, Научпоп, Инновации, Длиннопост

Тем временем политические события в Германии шли своим судьбоносным ходом. На дворе стоял конец 30-х годов. Цузе вовсю работал над Z2, когда его призвали.

…это может показаться наивным, но для всех нас стало горьким разочарованием то, что разразилась война. Политические события застали меня совершенно неподготовленным. Меня оторвали от работы и из-за краткого обучения в рейхсвере призвали в пехоту. Устройство Z2 близилось к завершению, когда меня призвали. Доктор Паннке [обратился в мою контору с просьбой об отпуске на том основании, что я должен сдать свою работу должным образом. Он написал, что я работаю над большой научной вычислительной машиной, которую также можно использовать в самолетостроении. Я передал это письмо моему капитану, который немедленно переслал его. Командир батальона, майор, вызвал меня, сначала сказал мне, что я, как совсем молодой солдат, все равно не имею права уходить, и продолжил: «Что вы имеете в виду, что ваша машина может быть использована в самолетостроении? Немецкие ВВС безупречны, на что еще рассчитывать?» – Что я должен был сказать в ответ? Отпуск не был предоставлен.

Благодаря ходатайству влиятельных инженеров и ученых, в 1940 году Цузе демобилизовался, вернулся в Берлин и стал членом гитлеровской научной элиты. Работа над созданием релейной электронной вычислительной машины возобновилась. Цузе и помогавший ему Шреер обратились за финансовой поддержкой к военному руководству, предлагая разработать современное устройство для военно-воздушных сил Германии. Такая машина могла быстро обрабатывать сложные расчеты, повышая тем самым эффективность тактической авиации. По предварительной оценке, на создание подобного аппарата потребовалось бы около двух лет. Но руководство вермахта было убеждено, что за такой срок нацистская Германия уже достигнет мирового господства. В итоге – отказ.

Зато обращение к директорам берлинского авиационного завода «Henschel», производившего тактические бомбардировщики, принесло успех. Руководство завода решило использовать компьютерные технологии в процессе создания военной техники. Цузе был предоставлен специальный отдел с лучшими инженерами-электронщиками компании. И уже в конце 1940 года Z2 была введена в эксплуатацию. Новый компьютер был оснащен цифровым процессором на основе реле и электровакуумных ламп (использование ламп – идея Шреера). Z2 автоматически высчитывал ряд параметров геометрии стабилизаторов авиационных бомб, преобразовывал их аналоговое значение в двоичную систему счисления, вычисляя необходимые данные по заранее введенным оператором формулам, и выдавал готовый результат в виде десятичных чисел. Результаты отправлялись сразу в производственный цех.

В том же году Цузе начал разработку Z3 — машины, полностью построенной на реле, но с логической структурой от Z1 и Z2. Она была готова к эксплуатации в 1941 г., за 4 года до разработки американских ученых — электронного цифрового компьютера ENIAC. Отчасти к Z3 и особенно к Z4 относятся слова «машина для фюрера».

В 1942 году мы начали производство Z4, улучшенного варианта Z3. Z4 также был ориентирован на электромеханику. Арифметический блок и элементы управления были построены с реле и шаговыми переключателями. Чтобы придать устройству большую гибкость со стороны программирования, было запланировано несколько этапов расширения с несколькими сканерами и перфораторами. Работа над Z4 была сильно затруднялась бомбардировками. Пришлось трижды менять местоположение в Берлине во время войны. В одну из бомбежек я в очередной раз ходил по дому искать упавшие зажигательные бомбы и, оказавшись на лестничной площадке, услышал над собой треск. В последний момент я прыгнул под дверной косяк, и рядом рухнула лестница. Я с трудом пробирался по обломкам в подвал. Начался пожар, и мне не удалось потушить огонь в ручным распылителем. Дом сгорел.

Сам изобретатель не пострадал, но под развалинами погибли все чертежи и прототипы его вычислительных машин – Z1, Z2 и Z3. Лишь частично законченная новая модель Z4, над которой Цузе работал начиная с 1942 года, была спасена, потому что незадолго до бомбардировок он догадался переправить чертежи и «железо» в другое место. Сначала – в новое помещение на другой берлинской улице, а затем на простой подводе накрытые ветошью части новейшего компьютера увезли в тихую баварскую деревню Альгой, для военной авиации союзников никакого интереса не представлявшую. Туда же в феврале 1945-го, за считанные месяцы до падения Берлина, перебрался и сам Цузе.

В баварской глуши, где ничего не напоминало о стремительно шедшей к своему исходу войне, Конрад Цузе сделал свое второе замечательное изобретение, которое обеспечило ему заслуженное место в компьютерной истории. Он разработал – как раз специально для упомянутой модели Z4 – первый в мире высокоуровневый язык программирования – «Планкалкюль» (Plancalcul – буквально «плановое счисление»), содержавший многие стандартные детали современных машинных языков. До всем известного FORTRAN оставалось еще целое десятилетие… Кстати, на этом же языке была составлена и первая в мире шахматная компьютерная программа.

113 лет со дня рождения Конрада Цузе – всемирно признанного изобретателя компьютера Изобретения, IT, Timeweb, Познавательно, Технологии, Компьютер, ЭВМ, Программирование, Техника, Третий рейх, Научпоп, Инновации, Длиннопост

Незадолго до падения Берлина вермахт решил эвакуировать машину Z4 на запад, в Гёттинген. Конрад Цузе продолжил работу над Z4 в Гёттингене, но ему пришлось снова перевозить устройство, чтобы оно не оказалось ни у советской армии, ни у союзников. Нацисты хотели, чтобы Цузе и его Z4 перебрались в Дора-Миттельбау, концентрационный лагерь, в котором узники строили ракеты Фау. Цузе решил иначе и сбежал на юг, в небольшой немецкий городок Бад-Хинделанг почти на границе со Швейцарией. Старое название машины очень пригодилось, когда пришлось прятать незавершенную Z4. Патрули, наслышанные о Фау-1 и Фау-2, беспрепятственно пропускали груз с названием Фау-4, даже не заглядывая в кузов. Так вычислительная машина, создававшаяся «для фюрера», или, точнее, для вермахта ушла на гражданку.

Он спрятал компьютер в сарае и переждал войну, продавая гравюры из дерева местным фермерам и американским войскам, а в 1946 создал фирму Zuse-Ingenieurbüro Hopferau. Капитал был привлечен благодаря швейцарскому ETH Zurich и продаже опциона на патенты фирме IBM.

В дальнейшем под его руководством и при непосредственном участии были созданы еще три модели «линейки Z» – Z5, Z11 и Z22. В последней модели для памяти были впервые применены магнитные носители.

К 1967 году Zuse KG всего продала 251 компьютер на общую сумму около 100 миллионов марок, что тогда, в эпоху «до персоналок», можно считать успехом. Но затем наступили финансовые проблемы, и компания была продана электронному гиганту Siemens AG. Главе купленной фирмы новый владелец предложил пост специалиста-консультанта, который был с благодарностью принят.

Завершив свою бизнес-деятельность, от научной Конрад Цузе отказываться не собирался. И занимался ею до последних лет жизни, свободное время отдавая своему хобби – живописи. Сегодня несколько этих красочных завораживающих полотен можно посмотреть в экспозиции берлинского Музея немецкой техники (Deutsches Technikmuseum). Рядом с другими, гораздо более известными свершениями Конрада Цузе – дюжиной его вычислительных машин.

113 лет со дня рождения Конрада Цузе – всемирно признанного изобретателя компьютера Изобретения, IT, Timeweb, Познавательно, Технологии, Компьютер, ЭВМ, Программирование, Техника, Третий рейх, Научпоп, Инновации, Длиннопост
113 лет со дня рождения Конрада Цузе – всемирно признанного изобретателя компьютера Изобретения, IT, Timeweb, Познавательно, Технологии, Компьютер, ЭВМ, Программирование, Техника, Третий рейх, Научпоп, Инновации, Длиннопост

Больше интересных статей в нашем блоге на Хабре. Недорогие сервера для ваших проектов — здесь.

Показать полностью 8
[моё] Изобретения IT Timeweb Познавательно Технологии Компьютер ЭВМ Программирование Техника Третий рейх Научпоп Инновации Длиннопост
4
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии