Про "новые основания операционок"

Jun 04, 2014 21:42

Что-то бред какой-то, что с той, что с другой стороны. Как автор имплементации POSIX API для встроенной операционки ASA/PIX в Cisco Inc, прокомментирую.

> >Вместо файловой системы, очевидно, нужна база данных. По сути, файловая система это и так БД, только не реляционная, без транзакций...
>
> Современные (уже лет 15 как) файловые системы суть ( Read more... )

Leave a comment

Comments 87

maxim June 5 2014, 09:32:23 UTC
Чо-то непонятно. Каждый хуйовый коментарий на заявление Тонского прокомментирован.
А кто виноват, и что делать не написано :-)

Reply

lionet June 5 2014, 09:43:10 UTC
Надо неустанно продолжать создавать максимальную ценность для пользователей, даже если приходится закрывать глаза на некоторое количество костылей в реализации или в низлежащей платформе.

Reply

maxim June 5 2014, 09:46:41 UTC
Главное чтобы иметь возможность хоть иногда эти глаза открывать, а не как на Java.

Reply

dottedmag June 5 2014, 13:06:38 UTC
После этого комментария продолжать читать другие уже как-то и неудобно.

Reply


sermp June 5 2014, 10:15:39 UTC
Внесу свои пять копеек.
>>Опять каждый о своём. Речь о application programming paradigm, где ты в argv[], скажем, получаешь структурированный блоб, например, а не char * до файла.

Если хочется принимать на вход блоб, то можно просто читать из stdin и работать с программой так: cat file | my_super_bin
Именно об этом и говорил slonik-v-domene, когда упоминал пайпы.

Reply

lionet June 5 2014, 10:23:18 UTC
А теперь давай посмотрим, как в my_super_bin принимать данные из файлов и из пайпа. Почему запрограммировать это получается отчётливо разный код? И почему обработать два файла, потом stdin, потом ещё три файла - отдельный геморройчик?

Reply

nponeccop June 5 2014, 10:35:27 UTC
Там проблема, даже если хочется принимать на вход два блоба

Reply

lionet June 5 2014, 10:55:40 UTC
Да не. Просто аргументы - это массив потенциально потоковых блобов, один из которых может быть блобом, ассоциированным со стандартным вводом, другой - с пайпом, третий - с HTTP ресурсом (упаси боже), но всем пох, ибо только коллер знает, откуда блоб.

Типа такого:

echo "sdf" | program http://foo.bar/

В программе:

int main(blob_t args[]) {
cout << args[0].contents();
cout << args[1].contents();
}

P.S. Я адвокат дьявола, на самом деле, мне это всё приведение к одному формату не нужно.

Reply


ufm June 5 2014, 11:32:41 UTC
Я думаю, мы просто сейчас наблюдаем очередную смену парадигмы в IT, совмещенный с попыткой "оставить совместимость с легаси кодом" - от этого весь этот разброд, шатание и монстры, типа веб-браузеров, которые, по сути, уже давно выполняют функционал X сервера, только через жопу.

Reply

alexander_mikh June 5 2014, 12:18:54 UTC
"шатание и монстры, типа веб-браузеров, которые, по сути, уже давно выполняют функционал X сервера, только через жопу."
Классный комментарий.

Reply

ufm June 5 2014, 13:08:28 UTC
Не согласны? По стилю? По сути? По форме?

Reply

alexander_mikh June 5 2014, 13:17:33 UTC
абсолютно согласен. И iPad + приложения - толстые клиенты о которых так долго мечтал Бил Гейтс.

Reply


qehgt June 5 2014, 11:55:41 UTC
Хм... В MsgPack строки передаются в UTF-8, собственно, это массив байтов и есть. Или жалоба в том, что нельзя отличить передачу строки от передачи массива?

Reply

lionet June 5 2014, 17:14:30 UTC
> Хм... В MsgPack строки передаются в UTF-8

Ага, щаз. Нет строк в MsgPack, только рекомендация "если хотите строку - пихните UTF-8, что-ли. но от блоба со свопом Windows NT это отличаться не будет".

"String objects may contain invalid byte sequence and the behavior of a deserializer depends on the actual implementation"

Также см. https://github.com/msgpack/msgpack/issues/121

Reply


_winnie June 5 2014, 12:12:22 UTC
Два файла надо перезаписывать так же, как двигают гору Фудзи.

Надо записать два файла куда угодно, записать path до них в paths.txt.tmp, а затем сделать атомарный rename файла paths.txt.tmp в paths.txt

Читающее файлы приложение - пусть лезет в paths.txt и достаёт оттуда имена файлов.

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

Reply

vitus_wagner June 5 2014, 13:18:38 UTC
Атоммарный ренейм на директорию не получится.

Поэтому когда я развлекался с этим делом, я делал на хардлинках (файлов в директорию(

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

Reply

_winnie June 5 2014, 14:05:18 UTC
А rename soft-линка на директорию сработает, как атомарное изменение двух файлов (лежащих в этой директории)?

Reply

lionet June 5 2014, 17:12:32 UTC
Речь была именно о двух файлах, а не о каталоге, или о файле с именами.

Reply


Leave a comment

Up