Как же я люблю мэйнфреймы

Mar 25, 2011 16:24

Ну вот почему мы не можем прийти в музей и потрогать живого динозавра? Казалось бы, прогресс, все дела, генная инженерия. Но генная инженерия пока не может творить чудеса.
А вот компания IBM может!


Кто еще тебе предоставит возможность прикоснуться к такому динозавру как мэйнфрейм? Конечно, мэйнфреймов всяких много, мне пока посчастливилось работать только с одним.
Мало того, что на нашем нет баша (за остальные не берусь говорить), стандартный шелл там любые нажатия на клавиши управления (курсором, Delete, Backspace, Tab) просто записывает в командную строку как есть. В результате, стоит один раз ошибиться, команда запорота. При этом, хорошо, если файл или команда не будут найдены.
Сейчас убили полчаса, пытаясь понять, почему файл не находится. Примерный лог:

$ ls -la *.xml
...... client.xml
$ cat -la client.xml
File not found
$ ls -la client.*
-
$ ls -la c*xml
...... client.xml
$ ls -la cl*xml
...... client.xml
$ ls -la cli*xml
-

Что же получается, в имени файла на диске какая-то другая "i"? Но попытка скопировать имя из вывода ls ни к чему не привела.
Нет, все проще. между l и i просто стоит какой-то управляющий символ и, возможно, что-то еще. К примеру, cle←ient.xml, где ← - это backspace. При этом на печать они выводятся именно как управляющие символы, то есть их не видно, зато они производят какое-то хитрое действие (двигают курсор, стирают символы).
А я-то думал, откуда у меня на маке(!) в проекте файл, имя которого состоит из единственного перевода строки. Надо ли говорить, что git сошел с ума, когда его увидел, а как я его удалил, я даже не помню.
Еще интересней:

$ ls -la .
... 238 Mar 23 11:47 .
... 952 Mar 24 18:05 ..
... 3633 Mar 23 12:26 client.xml
... 1
... 10480 Mar 23 12:26 server.xml

Что за единичка? Да просто при переименовании оператор ошибся, стер всю строку и нажал Enter. В результате в конце имени файла оказалась куча бэкспейсов. А ведь еще можно двигать курсор вверх, вниз, вправо и влево! Какой просто для фантазии, особенно учитывая, что длинные имена поддерживаются. Это будет покруче #define TRUE FALSE!

А еще там можно редактировать директории командой vi . :)

Да, там юзается кодировка EBCDIC, штука довольно забавная, хотя бы уже тем, что алвафитные символы там идут не подряд.
А когда мы предложили залить туда джавовские class-файлы, местный чувак, брызжа слюнями и соплями доказывал, что это не будет работать, потому что это не будет работать никогда. Хотя мы используем несколько библиотек с закрытыми исходниками, и это никого не смущает. А вот чтобы залить туда исходники и скомпилировать их, нужно либо вставлять их в vi, либо сначала каким-то способом загружать туда файлы, а потом менять кодировку (или наоборот).

mainframe, работа

Previous post Next post
Up