== Desiderata ==
- Explorer 상에서 동작해야 한다 => 셸익스텐션으로 구현
- 백업 가능해야 한다
- 태그간 하이어라키?
== 구현 ==
=== 파일 이름 ===
*
* 실제 서치가 필요하지만, 그건 Everything이 해줄 거고
* 태그 오퍼레이션 => 우클릭 구현
** 추가
** 삭제
** 서치는 Everything이 해준다!
* 파일 오퍼레이션
** 카피/딜리트는 공짜
** 리네임의 경우 후킹 필요… 편하게 쓰려면
** 파일의 태그들을 어떻게 얻어 올 것인가? => 기냥.
=== 심볼릭 링크 사용시 ===
*태그 전용 폴더
**(태그간 하이러라키가 없다면) 플랫한 폴더 (네임=태그). 이 폴더를 ‘\태그 폴더’라 부르자. 각 태그 폴더아래는 그 태그를 가질 파일들에 대한 링크들.
** 링크 자체의 이름은 아무래도 좋다. 필요한 정보는 링크 타겟과 태그 폴더 이름이 전부. 링크 타겟이 폴더는 다르고 이름은 같을 수도 있으므로 링크 이름을 붙이는 적절한 해슁 스키마가 필요.
* 태그 오퍼레이션 => 우클릭 구현
** 추가 == 태그 전용 폴더의 해당 폴더 아래 링크
** 삭제 == 링크 삭제
** 서치 == 태그 폴더 아래 있는 녀석들 전부. 링크 타겟 이름을 알 수 있어야 한다.
* 파일 오퍼레이션
** 삭제시 링크를 모두 지워야 한다
** 이동시 링크 업데이트
** 카피시 새 링크 생성
* 파일의 태그들을 어떻게 얻어 올 것인가?
=== 하드 링크 사용시 ===
* 태그 전용 폴더
** 태그간 하이러라키가 없다면) 플랫한 폴더 (네임=태그). 이 폴더를 ‘\태그 폴더’라 부르자. 각 태그 폴더아래는 그 태그를 가질 파일에 하드 링크
** 링크 자체의 이름은 상관 없음. 필요한 정보는 링크 타겟과 태그 폴더 이름에서 모두 추출 가능
** 링크 타겟이 폴더는 다르고 이름은 같을 수도 있으므로 링크 이름을 붙이는 적절한 해슁 스키마가 필요 => 이름.1, 이름.2, 면 된다!
* 태그 오퍼레이션 => 우클릭 구현
** 추가 == 태그 전용 폴더의 해당 폴더 아래 링크
** 삭제 == 링크 삭제
** 서치 => 태그 얻어 와서…
* 파일 오퍼레이션
** 삭제시 태그 확인후 삭제
** 같은 드라이브 이동시는 아무 일도 안 해도 된다.
** 카피시 새 링크 생성 => ReadDirectoryChangesW로 가능하긴 한데…
** 파일의 태그들을 어떻게 얻어 올 것인가?
FindFirstFileNameW, FindNextFileNameW!!! (windows 7)