crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> как правильно синхронизировать данные с файлами?, хочу узнать как принято это делать
deex
  опции профиля:
сообщение 29.3.2011, 15:12
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 45
Регистрация: 12.3.2009
Пользователь №: 608

Спасибо сказали: 0 раз(а)




Репутация:   0  


долго думал в какую ветку это писать, остановился здесь

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

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

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

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

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

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

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

Добавлю, что пишу я на python 3.2 + pyqt4



Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 29.3.2011, 15:21
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

Спасибо сказали: 29 раз(а)




Репутация:   8  


Цитата
- если прога вылетит - в файлах останутся старые данные, при перезапуске все начнется по новому


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

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

В случае аварийного завершения работы, при следующем запуске, прога, при открытии файла ищет его скрытую копию. Если такая копия есть - предлагает работать с ней или начать все сначала.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
deex
  опции профиля:
сообщение 29.3.2011, 18:37
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 45
Регистрация: 12.3.2009
Пользователь №: 608

Спасибо сказали: 0 раз(а)




Репутация:   0  


спасибо, тоже вариант, который надо обдумать

Сообщение отредактировал deex - 29.3.2011, 18:37
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
deex
  опции профиля:
сообщение 30.3.2011, 20:31
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 45
Регистрация: 12.3.2009
Пользователь №: 608

Спасибо сказали: 0 раз(а)




Репутация:   0  


может кто-нибудь ещё поделится опытом из своих проектов?
был бы очень признателен :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
madnessw
  опции профиля:
сообщение 1.4.2011, 10:11
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 12.3.2010
Пользователь №: 1527

Спасибо сказали: 0 раз(а)




Репутация:   0  


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


можно читать фаил кусками например создать буфер на 1000 строк , хранить текущую позицию в файле и при скроленги подчитывать в буфер кусок файла
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 4.4.2011, 8:48
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

Спасибо сказали: 29 раз(а)




Репутация:   8  


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


Ну не знаю... я бы грузил весь файл в память. Все таки объемы ОЗУ позволяют.

Цитата
можно читать файл кусками например создать буфер на 1000 строк , хранить текущую позицию в файле и при скроленги подчитывать в буфер кусок файла


А если информация в текущих 1000 строках зависит от информации в начальной строке и в конечной строке? Как тогда быть?)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
madnessw
  опции профиля:
сообщение 4.4.2011, 16:14
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 12.3.2010
Пользователь №: 1527

Спасибо сказали: 0 раз(а)




Репутация:   0  


дк вроде интересна навигация по файлу)) а если прывот так вот всё важно то делать нечего парсить весь фаил))) хотя не прощели уже средствами БД воспользоваться?))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.12.2024, 21:18