상위폴더, 하위폴더, 파일들... 파일 디렉터리 구조를 현재 내 설계에서 제대로 순회한다는 
것이 얼마나 어려운지 체감중이다. 너무너무 우울하다 ㅠㅠ (애초 계획데로.. 트리로 구성
하는걸 조금 더 고민했었으면.. 한결 덜 했지 않을까..)

겉 멋만 들었는지.. 이런 저런 패턴 적용해보고.. 파일 매니저 설계한답시고 깝죽대고..
더 복잡해지고.. 좌절하고.. OTLOTLOTL...바보가 된 기분...

정신이 헤롱거리는데 내일까지 지장 받을듯.. 건들수록 망가진다.. 한동안 봉인해둔다.



현재 문제! 워커측이 콜러측에 문제 발생시 아무런 통지를 안해줬다.
boolean 리턴도 안했고, throws 선언도 안했다. 그냥 내부에서 assert : new Exception()만 
했었다.!

파일 트리 순회 메서드의 설계를 완전히 뒤집어 엎고, 현재 워크 인포 클래스의 루트 패스
개념과(재귀로 상위로 올라갈때 한계치), 순회시 사용하는 패스에 대해서 조금 더 고민이 필요하다.

(추가)

결국.. 아쉽지만 포기를 해버렸다. 이것만 붙잡고 있을 수는 없기 때문이다.

by givingsheart 2014. 1. 1. 16:39
첨부한 파일은 
1.선생님이 숙제라고 내주신 파일 리네임 작업 초간단 버전..

2.파일 작업을 발전시켜 현재 구현중인 파일 작업 시스템 -_-; 

(똥을 싸놨다..OTL)


개선해야할점.

기존 파일 시스템과 트리 자료구조의 유사성을 발견하고 

20131213 파일및 디렉토리 작업에 스레드 사용.zip


homework.zip


해당 디렉토리 내의 파일 작업(하위 디렉토리,파일들)을 
work란 단위로 묶어서 트리 구조로 만들어 작업물 이란 
개념으로 추상화 했는데..

위의 작업물로 워커 객체에게 작업을 시킬라고 했는데.. 
만만치가 않다.. 접근 방법이 이상했는지.. 이건 똥이 돼었다.

새로운 접근 방법은..

실제 작업을 할 워커 객체의 주도로 전체 작업 관련 필요
정보(시작 디렉토리, 목표 디렉토리, 수행할 작업(카피,리네임,
복사,삭제,앞의것들의 조합) )를 전달하고!

기존엔 워커클래스를 파일 작업용-> 카피 작업용 , 리네임 작업용
,삭제 작업요 등등으로 상속구조로 쪼갰는데.. 

위의 개념을.. 매니저 & 워커 개념으로 쪼갤 예정이다. 
한마디로 매니저 개념은 현재의 디렉토리에서 파일이 잇다면,
워커or 워커들을 호출해 작업을 나눠줘서 일을 시키고,
하위 디렉토리가 있다면 디렉토리의 수많큼 매니저를 새로 호출
해서 각각에게 하위 디렉터리를 하나씩 맡기고(재귀) 기존 매니저
는 자신의 디렉토리에 대해 비지니스 작업(리네임등)을 처리하고
자신의 업무를 끝냈으니 팩토리(풀)로 돌아가는 것이다.

고려할 점은.. 디렉토리의 수가 많아지면.. 스레드의 수가 급격히 늘
어날수 있다. 현재까진 if(isDirectory) 처리  if(isFile) 처리 순서로
처리했는데.. 이 순서를 바꿔야 할듯하다. 

*************************************************

제일 처음 아이디어(파일 업무를 트리 구조로 정리) 하는 것의
목표는.. 트리를 만들어 트리를 조직화(구축하며 정렬처럼 밸런스 형태) 
하면.. 업무의 갯수를 적절히 나눠서 (총 9개의 디렉토리라면 3개의 
스레드를 쓸때 3개씩 디렉토리로 노드 분할해서 하나의 스레드가 
하나의 노드를 처리하는식)
병렬 처리의 효과를 극대화 해보고 싶었던 것인데..

처음에 트리를 구성할때 단순하게 파일의 형태 그대로 보관을 했으니..
디렉토리의 갯수가 전혀 균형이 맞질 않는 문제 + 워커에게 실제 작업
을 어떻게 쪼개서 전달할지가 막막해졌다. 

위의 문제는 추후 고민해볼 여지가 있어보인다. (느낌상..)

***************************************************

ps.언제부턴가 스태틱에 강박관념이 생긴듯하다.. 개념상 스태틱이 붙어선
안돼는 경우에도.. 가급적 스태틱변수, 메서드등 으로 처리하려 고집한것 같다..

스태틱은 위험하다. 정말로 위험하다. 스태틱의 사용에 신중해지자! 화이팅!


(추가)
제대로는 모른다, 허나 저 위의 착상이 파일 처리에 있어서 자가 분할(스레드 생성)이란..개념에서 분산 파일 처리 솔루션(하둡) 느낌이 아닐까?

(추가)
선생님이 원한 것은, 단순한 RENAME 함수를 통한 폴더 변경 였는데.. 나는 왜 이걸 파일 시스템으로 발전시켜 고민을 
하고 있을가..? 어렵지만.. 고민하고 삽질하는 시간은 즐겁다.


by givingsheart 2014. 1. 1. 16:38
| 1 |