atauenis / fcmd

The File Commander is a modern cross-platform two panel file manager, written in C#.
Other
42 stars 9 forks source link

Доработка работы с файловыми системами #27

Open atauenis opened 10 years ago

atauenis commented 10 years ago

Начал процесс доводки до ума всего связанного с файловыми системами. Работа выполняется в ветке fs_improving . План таков:

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

wilbit commented 10 years ago
atauenis commented 10 years ago

Что за хранилище паролей?

Тоже самое, что и в браузерах, применимое к плагинам ФС. Главный ключ - master password.

По моему рано делать дополнителньые фичи (FTP Например) когда у нас существующий функционал-то не идеально работает.

В чём эта недоделанность (кроме кривой обработки исключений в операциях работы с файлами-каталогами и массы недоделок в ListView2) заключается? Если не сложно, сообщите в виде issue.

wilbit commented 10 years ago

Тоже самое, что и в браузерах, применимое к плагинам ФС. Главный ключ - master password.

Не понял. Типа Keychain в OS X и хранилища в Windows, куда IE сохраняет при утвердительном ответе на вопрос "Сохранить пароль?"? Серьезно хочешь заняться криптографией?

В чём эта недоделанность (кроме кривой обработки исключений в операциях работы с файлами-каталогами и массы недоделок в ListView2) заключается? Разве этого мало? Я не говорю, что эти задачи не нужны. Они нужны, просто не первостепенны имхо.

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

atauenis commented 10 years ago

Не понял. Типа Keychain в OS X и хранилища в Windows, куда IE сохраняет при утвердительном ответе на вопрос "Сохранить пароль?"? Серьезно хочешь заняться криптографией?

Именно. Криптографией заниматься не собираюсь, применю какой нибудь готовый алгоритм. Хранилище ключей будет аналогично применённому в Total Commander (wcftp.ini), только в виде xml таблицы.

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

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

wilbit commented 10 years ago

Клиент FTP уже на сотую долю написан, скоро закоммичу первый работающий набросок.

ждем-с

(готовые библиотеки по тем или иным причинам не годятся для файл. менеджеров типа FC).

а какие рассматривал?

atauenis commented 10 years ago

а какие рассматривал?

Сразу не скажу, около 6-7 штук. Это FtpWebRequest (не поддерживает комманды CWD, CDUP) и его несколько обёрток (тупо реинициализирующих FWR при смене каталога или вовсе при любой операции), 1 обёртка над Winsock (т.е. windows-only) и три библиотеки с закрытым кодом (нарушают лицензионную чистоту FC, да и невозможно быстро исправлять при необходимости выявленные баги).

atauenis commented 10 years ago

"По просьбам трудящихся" загрузил первое подобие плагина FTP (которое ещё нужно допиливать и допиливать). На данный момент обнаружены следующие недочёты, которые надеюсь исправить в ближайшее время:

  1. Плагин неверно отрабатывает случаи, когда приходит несколько ответов в канале команд или ответы приходят с задержкой.
  2. Неверная обработка ответов не-UNIX серверов (отсутствие стандарта на команду LIST)
  3. Скачивание файлов в фоновом режиме (asynccopy)
  4. Ну, и некоторый незапиленный функционал. Всему своё время.
atauenis commented 10 years ago

Пока не удаётся что-то придумать с этими вещами (т.к. есть проблемы с NetworkStream - нет возможности узнать длину потока и есть несколько изъянов архитектуры IFSPlugin), поэтому текущие изменения замержены в master.

atauenis commented 9 years ago

В работу с файловыми системами вношу следующее изменение: вывод информации о статусе прогресса операций теперь осуществляется через экземпляр класса pluginner.FileSystemOperationStatus вместо вызовов событий StatusChanged и ProgressChanged. Архитектура с событиями приводит к частым исключениям из-за саботирования межпоточного взаимодействия Wpf, Gtk и пр. тулкитами. Сейчас я в основном переделываю загрузку списков файлов в панели (перевожу на многопоточную систему с использованием виртуального listview), окончательно архитектуру передачи информации о статусе допеределываю позже. Проект жив, но объём и уровень работ превышает свободное время и имеющийся опыт :)