[personal profile] avva
Уолтер Брайт вспоминает, как он сохранял конфигурацию в своих программах в те давние времена, когда будущие изобретатели XML еще пешком под стол ходили:
Back in the bad old DOS days, instead of creating a file format for saving/loading the configuration of the text editor, I simply wrote out the image in memory of the executable to the executable file. (The configuration was written to static global variables.)
Running the new executable then loaded the new configuration. This worked like a champ, up until the Age of Antivirus Software, which always had much grief over writing to executable files.
It's a trick I learned from the original Fortran version of ADVENT.

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

Date: 2014-03-08 03:52 am (UTC)
From: [identity profile] shadow-ru.livejournal.com
Lisp? Smalltalk? Не, не слышал. :)

Date: 2014-03-08 04:03 am (UTC)
From: [identity profile] avva.livejournal.com
Ну это немного другое, там это способ жизни. И вообще, какой Smalltalk в DOSе? :)

Date: 2014-03-08 04:09 am (UTC)
From: [identity profile] shadow-ru.livejournal.com
Ну, просто не ДОСом же едины. В лиспе SYSOUT/SYSIN появились ещё в конце 60-х.

Date: 2014-03-08 04:11 am (UTC)
From: [identity profile] shadow-ru.livejournal.com
Я в том смысле, что Брайт заново изобрёл велосипед по-моему.

Date: 2014-03-08 04:48 am (UTC)
From: [identity profile] bolk.livejournal.com
Тогда все изобретали велосипеды. Интернета не было.

Date: 2014-03-08 09:34 am (UTC)
From: [identity profile] alexis-m.livejournal.com
Сейчас Интернет есть, а велосипеды продолжают появляться.

Date: 2014-03-08 09:42 am (UTC)
From: [identity profile] bolk.livejournal.com
Разница в количестве велосипедов. Да и велосипедами в те времена бо́льшую часть не назовёшь — шанса найти готовое было очень мало, только в книгах, которые ещё найти надо было.

Date: 2014-03-08 12:09 pm (UTC)
From: [identity profile] p2004r.livejournal.com
не знать о Лиспе это подвиг, причем именно в те времена :)

Date: 2014-03-08 05:17 am (UTC)
From: [identity profile] vromanov.livejournal.com
FORT также поступал. Как раз под дос.

Date: 2014-03-08 03:59 am (UTC)
From: [identity profile] archaicos.livejournal.com
Релокацию можно обойти соответствующим дизайном (блок данных/массив фиксированной структуры и длины с числами/строками внутри с уникальной меткой перед его началом).

Но у EXE есть и преимущество. К его концу можно тупо дописывать данные.

Date: 2014-03-08 04:32 am (UTC)
From: [identity profile] piggymouse.livejournal.com
Вот-вот я лично именно искал сигнатуру и перезаписывал кусок после неё.

Date: 2014-03-08 04:47 am (UTC)
vitus_wagner: My photo 2005 (white)
From: [personal profile] vitus_wagner
А я как-то написал модуль, который преобразовывал указатель в смещение в exe-файле. Работало гораздо быстрее, чем поиск сигнатуры (который был в широко известной библиотеке Turbo Professional). Оно, правда было заточено под конкретный компилятор и конкретную модель памяти. Впрочем, у Turbo Pascal была ровно одна модель памяти.

Date: 2014-03-08 05:17 am (UTC)
From: [identity profile] vromanov.livejournal.com
Так и делал - тупо дописывал в конец EXE

Date: 2014-03-08 04:20 am (UTC)
From: [identity profile] spamsink.livejournal.com
Back in the bad old UNIX days, была еще команда undump.

Date: 2014-03-08 04:57 am (UTC)
From: [identity profile] bespechnoepero.livejournal.com
я просто балдею от программистских терминов типа static variable

Date: 2014-03-08 12:21 pm (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
При переводе на русский оксюморон тоже сохраняется, "неизменяемая переменная".

upd: хотя в данном конкретном случае static означает "имеющая постоянное место (адрес)".
Edited Date: 2014-03-08 12:22 pm (UTC)

Date: 2014-03-10 08:25 pm (UTC)
From: [identity profile] migmit.livejournal.com
А уж от компьютеросборочных терминов вообще должны с ума сходить ("у меня вчера мама умерла, всю ночь с ней трахался, теперь буду мозги продавать").

Date: 2014-03-11 05:52 am (UTC)
From: [identity profile] ygam.livejournal.com
Ну, это скорее сленг, чем термины.

Date: 2014-03-08 06:19 am (UTC)
From: [identity profile] gul-kiev.livejournal.com
Да, для com адрес переменной в памяти (offset) соответствует её позиции в исполняемом файле, потому что там на всё (данные, код, стек) один сегмент, загрузка делается тривиально.
А для exe был другой трюк. У него просто узнать размер (из заголовка), и всякие данные можно было сохранять в конце exe-файла.
Дело в том, что один exe-файл считался удобнее, чем несколько файлов (exe, cfg, картинка какая-нибудь).

Date: 2014-03-08 06:24 am (UTC)
From: [identity profile] mfi.livejournal.com
В RT-11 помню замечательный драйвер клавиатуры - редактирование строки, простенькиe макросы, хелп, то, се. Программа установки, конфигуратор и собственно драйвер - один файл. И конфиг находился там же, изменил что то, вышел - пре перезагрузке получаешь то что было, а не начальную конфигурацию. Скопировал на другую машину один файл - и все привычно. Мечта ( глядя на тысячи файлов и зависимостей в современном ПО ).

Ясен пень, все это было до массового появления вирусов и запретов на изменения исполняемых файлов.

Date: 2014-03-08 07:57 am (UTC)
From: [identity profile] archaicos.livejournal.com
А теперь нужно просто с собой носить свою виртуальную машину. :)

Date: 2014-03-08 07:58 am (UTC)
cat_mucius: (Default)
From: [personal profile] cat_mucius
Very user-friendly! В качестве системщика, не могу не оценить.

Date: 2014-03-08 12:27 pm (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
Я скопировал профиль firefox из x86-32 windows в x64 linux, и он нормально его поднял, с расширениями даже.

Ещё удобно, что конфиги firefox лежат в распространённых форматах, json + SQLite.

Сохранение дампа памяти - плохо переносится между архитектурами, и сложнее версионируется.
Edited Date: 2014-03-08 12:35 pm (UTC)

Date: 2014-03-08 01:11 pm (UTC)
From: [identity profile] archaicos.livejournal.com
Кто-то тестировал или просто повезло. У меня перенос между двумя одинаковыми виндами тоже сработал. Но когда я ранее экспортировал/импортировал только ссылки, получилась непонятная каша.

Date: 2014-03-08 04:04 pm (UTC)
ext_554918: (Default)
From: [identity profile] self-perfection.livejournal.com
Приходил ко мне как-то в гости товарищ, принёсший профиль своей лисы из венды на флэшке.

С ходу под моим линухом это не завелось, что-то разъехалось в регистрах символов названий файлов в профиле. Так что не всё так радужно. Но починилось быстро, помнится достаточно было сделать lowercase всему.

Date: 2014-03-08 02:00 pm (UTC)
From: [identity profile] amarao-san.livejournal.com
Отладка бага могла быть очень увлекательной в такой ситуации (если промахиваются по месту записи).

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

Date: 2014-03-08 03:21 pm (UTC)
From: [identity profile] voldmar.livejournal.com
Мне казалось, что из современных авторов так поступили авторы LMAX, но сейчас начал пересматривать и понял, что Java вряд ли так может сохранять состояние. (http://martinfowler.com/articles/lmax.html)

Ещё мне вспомнилась статья про забытые старые техники — http://scottlocklin.wordpress.com/2013/07/28/ruins-of-forgotten-empires-apl-languages/

Date: 2014-03-08 03:36 pm (UTC)
From: [identity profile] amarao-san.livejournal.com
Почитал. Кроме старопесочного "склонитесь перед авторитетами старших" - большей частью странный бухтёж, который забывает про главное в коммерческом - agile (не техника программирования, а способность быстро реагировать на изменяющиеся потребности) и стоимость изменения кода.

Date: 2014-03-09 12:50 am (UTC)
From: [identity profile] vgarnick.livejournal.com
Не совсем дампом прямо из памяти, но правкой исполнимого файла в те времена много чего конфигурировалось. q.exe (q editor), keyrus.com, к примеру.

Date: 2014-03-09 06:55 am (UTC)
From: [identity profile] morfizm.livejournal.com
Помню, когда конфигурации не так много (скажем, 1-2 числа), удобно было переименовывать бинарник в установленном формате имени и потом в run-time смотреть, с каким именем вызвали.

Date: 2014-03-10 08:28 pm (UTC)
From: [identity profile] migmit.livejournal.com
ЕМНИМЭ, релокация — не страшная весч. Даже винда (по крайней мере, старая) грузила бинарники по фиксированному адресу, так что по крайней мере в рамках одной версии системы такое должно было работать.

March 2014

S M T W T F S
       1
2 3 4 5 6 7 8
9 10 11 12 131415
16171819202122
23242526272829
3031     

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 18th, 2017 02:48 pm
Powered by Dreamwidth Studios