Russian Qt Forum
Ноябрь 23, 2024, 14:04
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Общий
>
как правильно синхронизировать данные с файлами в десктоп-софте?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: как правильно синхронизировать данные с файлами в десктоп-софте? (Прочитано 3473 раз)
pjatachok
Гость
как правильно синхронизировать данные с файлами в десктоп-софте?
«
:
Март 29, 2011, 15:21 »
долго думал в какую ветку это писать, остановился здесь
есть программа
к ней прилагается, скажем, десяток текстовых файлов
в файлах информация, построчно
вся суть софта в том, чтобы эту информацию обрабатывать
с одной стороны все просто:
при запуске грузим все файлы в память, предоставляем интерфейс для их редактирования и кнопку Сохранить
по окончании какой-то части работы автосохраняются в файлы
но тут уже начинаются проблемы:
- если прога вылетит - в файлах останутся старые данные, при перезапуске все начнется по новому
- если файлы большие - грузить их все в память неправильно. а они будут большие
- некоторые из них просто должны накапливать информацию, редактировать их не надо - следовательно и загружать тоже
я новичок в десктоп софте, поэтому мой первый проект, который работал с файлами, сейчас похож на инвалида передового ракетного производства, у которого костыли торчат отовсюду. начинаю делать свой второй проект и опять впадаю в ступор - как же правильно организовать эту работу?
также, хочу заметить, что я продаю софт людям разного интеллектуального достатка, поэтому интересует наиболее универсальное решение, которое будет понятным и удобным большинству
Вообще, я хочу чтобы вы поделились секретом, как это устроено у вас (загрузка, синхронизация, использование по мере работы)
Но также напишу несколько конкретных вопросов:
- в какой момент стоит сохранять данные в файл? только при нажатии на кнопку, постоянно при работе, при переключении вкладок софта(делал и такое )
- нужен ли людям редактор файлов в проге? или заставлять их править текстовые файлы будет правильнее и более универсально?
- стоит ли позволять указывать внешние файлы для работы и запоминать пути к ним?
(т.е. надо указать список имейлов - человек нажал на кнопку и в стд окне выбора файла - указал свой файл с имейлами, софт запоминает этот путь и всегда использует тот файл)
- если файл весит допустим 5 мб текста и я весь его гружу в память - плохо ли это? с учетом того, что мы живем в эпоху террабайтных винтов и многогигабайтной оперативки. Может ли софт от этого тормозить?
Добавлю, что пишу я на python 3.2 + pyqt4
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: как правильно синхронизировать данные с файлами в десктоп-софте?
«
Ответ #1 :
Март 29, 2011, 15:42 »
Цитата: pjatachok от Март 29, 2011, 15:21
- в какой момент стоит сохранять данные в файл? только при нажатии на кнопку, постоянно при работе, при переключении вкладок софта(делал и такое )
- нужен ли людям редактор файлов в проге? или заставлять их править текстовые файлы будет правильнее и более универсально?
Не грех если вообще не будет. Или
модальный
редактор с кнопками Save/Cancel. В любом случае нужен "Reload(All)". То есть обойтись без внутреннего редактора можно, без внешнего нельзя.
Цитата: pjatachok от Март 29, 2011, 15:21
- стоит ли позволять указывать внешние файлы для работы и запоминать пути к ним?
(т.е. надо указать список имейлов - человек нажал на кнопку и в стд окне выбора файла - указал свой файл с имейлами, софт запоминает этот путь и всегда использует тот файл)
Нет, хлопот заметно больше чем выгод. Все файлы должны быть в 1 фолдере - проще и лучше.
Цитата: pjatachok от Март 29, 2011, 15:21
- если файл весит допустим 5 мб текста и я весь его гружу в память - плохо ли это? с учетом того, что мы живем в эпоху террабайтных винтов и многогигабайтной оперативки. Может ли софт от этого тормозить?
Десяток файлов по 5-10 Mb - это сейчас не объем, поэтому нет оснований для значительного усложнения (грузить по частям). К тому же так или иначе Вы из них какие-то данные извлекаете - так зачем хранить в памяти сам текст? Извлекли - освободили, занялись следующим файлом.
Записан
pjatachok
Гость
Re: как правильно синхронизировать данные с файлами в десктоп-софте?
«
Ответ #2 :
Март 29, 2011, 18:28 »
спасибо за ответ
Цитировать
Или модальный редактор с кнопками Save/Cancel
модальный - это суб-окно с textEdit и парой кнопок, которое появляется поверх основного окна?
Цитировать
зачем хранить в памяти сам текст? Извлекли - освободили, занялись следующим файлом
не понял, как я его освобожу, если я его загрузил, чтобы использовать?
к примеру строки из файла в итоге разбирают потоки - на каждый поток по строке
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: как правильно синхронизировать данные с файлами в десктоп-софте?
«
Ответ #3 :
Март 29, 2011, 20:44 »
Цитата: pjatachok от Март 29, 2011, 18:28
модальный - это суб-окно с textEdit и парой кнопок, которое появляется поверх основного окна?
Да
Цитата: pjatachok от Март 29, 2011, 18:28
не понял, как я его освобожу, если я его загрузил, чтобы использовать?
к примеру строки из файла в итоге разбирают потоки - на каждый поток по строке
Не кучеряво ли будет "на поток по строке"?
Но все равно - когда-то же "разборка" закончится, ведь в любом случае Вы работаете с извлеченными из текста данными (а не с самим текстом)
Записан
pjatachok
Гость
Re: как правильно синхронизировать данные с файлами в десктоп-софте?
«
Ответ #4 :
Март 29, 2011, 21:39 »
собственно, вся работа софта и заключается в обработке строк
каждая строка - типа задания для потока - что ему делать
Записан
pjatachok
Гость
Re: как правильно синхронизировать данные с файлами в десктоп-софте?
«
Ответ #5 :
Март 30, 2011, 20:31 »
может кто-нибудь ещё поделится опытом из своих проектов?
был бы очень признателен
Записан
Fess
Гость
Re: как правильно синхронизировать данные с файлами в десктоп-софте?
«
Ответ #6 :
Март 31, 2011, 07:28 »
Возможно стоит использовать что-то вроде SQLite.. - транзакции, полноценные запросы и прочие преимущества налицо.
Можете хранить исходные документы (у вас что-то вроде скриптов?) в текстовом виде, затем разбирать на задания и сохранять в базу. Для редактирования грузите весь файл, а при выполнении только несколько записей. Выполненные задания помечаете, или удаляете из базы.
При падении не нужно будет повторять проделанную работу.
Цитата: pjatachok от Март 29, 2011, 15:21
- в какой момент стоит сохранять данные в файл? только при нажатии на кнопку, постоянно при работе, при переключении вкладок софта(делал и такое )
при запуске на выполнение/сохранении "вручную"/закрытии/переодически(~.tmp)
Цитата: pjatachok от Март 29, 2011, 15:21
- нужен ли людям редактор файлов в проге? или заставлять их править текстовые файлы будет правильнее и более универсально?
- стоит ли позволять указывать внешние файлы для работы и запоминать пути к ним?
(т.е. надо указать список имейлов - человек нажал на кнопку и в стд окне выбора файла - указал свой файл с имейлами, софт запоминает этот путь и всегда использует тот файл)
В зависимости от "продвинутости" целевой аудитории. Если ваши файлы-документы и могут в понимании пользователя существовать отдельно от программы (вроде .doc, .txt) то нужно. Либо если пользователь достаточно опытен. В остальных случаях лучше прятать тонкости реализации за интерфейсами.
Цитата: pjatachok от Март 29, 2011, 15:21
- если файл весит допустим 5 мб текста и я весь его гружу в память - плохо ли это? с учетом того, что мы живем в эпоху террабайтных винтов и многогигабайтной оперативки. Может ли софт от этого тормозить?
если надо - то надо, но увлекаться не стоит..
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...