Size: a a a

2021 February 22

R

Roman in C++ Together 2.0
Я вот пытаясь уснуть, думаю как мне хранение организовать ...
Есть вариант:
При создании не записывать в файл (т.к это дефолтная фигня с названием "New Note"), а вот при изменении названия - записывать в файл уже.

Маленьшее изменение - файл полностью перезаписывается.
Т.е на время удаеляется, и записывается новым содержимым.
Что касается при новом запуске вкладки / программы, то каждый раз при нажатии на кнопку, которая включает окно с заметками - будет запускаться и заметки ... Или же уже в запущенном окне будут ...
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
Roman
Я вот пытаясь уснуть, думаю как мне хранение организовать ...
Есть вариант:
При создании не записывать в файл (т.к это дефолтная фигня с названием "New Note"), а вот при изменении названия - записывать в файл уже.

Маленьшее изменение - файл полностью перезаписывается.
Т.е на время удаеляется, и записывается новым содержимым.
Что касается при новом запуске вкладки / программы, то каждый раз при нажатии на кнопку, которая включает окно с заметками - будет запускаться и заметки ... Или же уже в запущенном окне будут ...
Ща попездим
источник

R

Roman in C++ Together 2.0
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
Напомни, с какой архитектурной проблемой ты столкнулся?
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
Roman
Я вот пытаясь уснуть, думаю как мне хранение организовать ...
Есть вариант:
При создании не записывать в файл (т.к это дефолтная фигня с названием "New Note"), а вот при изменении названия - записывать в файл уже.

Маленьшее изменение - файл полностью перезаписывается.
Т.е на время удаеляется, и записывается новым содержимым.
Что касается при новом запуске вкладки / программы, то каждый раз при нажатии на кнопку, которая включает окно с заметками - будет запускаться и заметки ... Или же уже в запущенном окне будут ...
А
источник

R

Roman in C++ Together 2.0
Alex Ф-ф-фэils!🌠︙
Напомни, с какой архитектурной проблемой ты столкнулся?
Думаю, как файловую систему воткнуть в проект.
Как я хочу, не слишком ли костыльно дяже для Zero версии выйдет ...
источник

W

Wild_Wind in C++ Together 2.0
Roman
Я вот пытаясь уснуть, думаю как мне хранение организовать ...
Есть вариант:
При создании не записывать в файл (т.к это дефолтная фигня с названием "New Note"), а вот при изменении названия - записывать в файл уже.

Маленьшее изменение - файл полностью перезаписывается.
Т.е на время удаеляется, и записывается новым содержимым.
Что касается при новом запуске вкладки / программы, то каждый раз при нажатии на кнопку, которая включает окно с заметками - будет запускаться и заметки ... Или же уже в запущенном окне будут ...
Попробуй двойную буферизацию. Создавай файл, а потом меняй старый на новый (модифицированный). имя файла - дата в человекочитаемом формате. Пиши в файл асинхронно, но делай flush в деструкторе.

Если чувствуешь в себе силы, можно упороться в одном файле. Пишешь свой формат, где есть заголовок - смещение на её реальное расположение. Пишешь строки, нумеруя каждую строку порядковым номером. В случае модификации всей строки, ты просто дописываешь в конец файла модифицированную строку, и в заголовке меняешь оффсет. А в старой строке, на место индекса пишешь -1. Или иное MagicValue, обозначающее невалидность.
После, в очерденом закрытии файла, читаешь счетчик строк (его тоже надо учесть в заголовке файла), у которых порядковый номер -1, и если их набролось много (к примеру, больше 10), то создавай новый файл, и копируй в него старый построчно, за исключением строк с порядковым -1.
После, меняй старый - новым.
Можно, ради быстродействия (не факт), указывать ещё и размер каждой строки в заголовке строки, рядом с номером строки. Тогда читать строки можно будет не потоково, до \n, а сразу весь блок, т.к. размер тебе известен.
источник

R

Roman in C++ Together 2.0
Wild_Wind
Попробуй двойную буферизацию. Создавай файл, а потом меняй старый на новый (модифицированный). имя файла - дата в человекочитаемом формате. Пиши в файл асинхронно, но делай flush в деструкторе.

Если чувствуешь в себе силы, можно упороться в одном файле. Пишешь свой формат, где есть заголовок - смещение на её реальное расположение. Пишешь строки, нумеруя каждую строку порядковым номером. В случае модификации всей строки, ты просто дописываешь в конец файла модифицированную строку, и в заголовке меняешь оффсет. А в старой строке, на место индекса пишешь -1. Или иное MagicValue, обозначающее невалидность.
После, в очерденом закрытии файла, читаешь счетчик строк (его тоже надо учесть в заголовке файла), у которых порядковый номер -1, и если их набролось много (к примеру, больше 10), то создавай новый файл, и копируй в него старый построчно, за исключением строк с порядковым -1.
После, меняй старый - новым.
Можно, ради быстродействия (не факт), указывать ещё и размер каждой строки в заголовке строки, рядом с номером строки. Тогда читать строки можно будет не потоково, до \n, а сразу весь блок, т.к. размер тебе известен.
Хм, что то понял.
И я заметил в Линухе, когда открыт текстовый файл, создвется файл с таким де именем, но перед именем пишется тильда ~
источник

x

xor in C++ Together 2.0
Roman
Хм, что то понял.
И я заметил в Линухе, когда открыт текстовый файл, создвется файл с таким де именем, но перед именем пишется тильда ~
не слушай его, юзай xml,json или что угодно стандартизированное, но не свой формат с нумерацией строк. если нужно разделение, юзай разные файлы для разного, а потом можешь сжимать всё архиватором в один каталог.
источник

CC

Chris Calvin 🦖 in C++ Together 2.0
Wild_Wind
Попробуй двойную буферизацию. Создавай файл, а потом меняй старый на новый (модифицированный). имя файла - дата в человекочитаемом формате. Пиши в файл асинхронно, но делай flush в деструкторе.

Если чувствуешь в себе силы, можно упороться в одном файле. Пишешь свой формат, где есть заголовок - смещение на её реальное расположение. Пишешь строки, нумеруя каждую строку порядковым номером. В случае модификации всей строки, ты просто дописываешь в конец файла модифицированную строку, и в заголовке меняешь оффсет. А в старой строке, на место индекса пишешь -1. Или иное MagicValue, обозначающее невалидность.
После, в очерденом закрытии файла, читаешь счетчик строк (его тоже надо учесть в заголовке файла), у которых порядковый номер -1, и если их набролось много (к примеру, больше 10), то создавай новый файл, и копируй в него старый построчно, за исключением строк с порядковым -1.
После, меняй старый - новым.
Можно, ради быстродействия (не факт), указывать ещё и размер каждой строки в заголовке строки, рядом с номером строки. Тогда читать строки можно будет не потоково, до \n, а сразу весь блок, т.к. размер тебе известен.
Мне кажется, не надо усложнять заранее
источник

W

Wild_Wind in C++ Together 2.0
xor
не слушай его, юзай xml,json или что угодно стандартизированное, но не свой формат с нумерацией строк. если нужно разделение, юзай разные файлы для разного, а потом можешь сжимать всё архиватором в один каталог.
Это скууууучноооо :(
Свои велосипеды, оно гораздо веселеее :) Мы же на Си Плас Плас пишем.
Но да, тут ты прав. От моего решения будет профит лишь на большом количестве длинных строк.
источник

W

Wild_Wind in C++ Together 2.0
Я прост по привычке начал писать объктное хранилище, где каждая строка - отдельный объект. Только сегментацию ещё описать не успел, да.
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
Имхо надо сначала самый тупой вариант сделать с тупо папкой notes/note_<id>.txt
И заголовок / описание разделены пустой строкой, как в гит-коммитп
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
Ид - тупо какой-нибудь счётчик
источник

W

Wild_Wind in C++ Together 2.0
Wild_Wind
Я прост по привычке начал писать объктное хранилище, где каждая строка - отдельный объект. Только сегментацию ещё описать не успел, да.
Эхх...
И почему у меня каждый раз получается s3 на минималках?
Ceph меня испортил :( Теперь какую подсистему хранения не пишу - каждый раз получается объектный сторадж.
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
Зато можно будет потом стартапчик запилить со своими облаками хайлоудными
источник

CC

Chris Calvin 🦖 in C++ Together 2.0
Wild_Wind
Эхх...
И почему у меня каждый раз получается s3 на минималках?
Ceph меня испортил :( Теперь какую подсистему хранения не пишу - каждый раз получается объектный сторадж.
У тебя просто идет промышленное мышление)
источник

CC

Chris Calvin 🦖 in C++ Together 2.0
А тут надо "simple, but works"
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
Ну вот мой подход тупой и сойдёт для начала
источник

CC

Chris Calvin 🦖 in C++ Together 2.0
Да для попенсорса или петпроджектов надо делать как можно проще и быстрее, а если есть проблемы уже на ходу говно фиксить
источник