본문 바로가기

Programming123

boost::filesystem 을 이용하여 directory size 알아내기 #include ilesystem.hpp> #include using namespace std; namespace bfs = boost::filesystem; uintmax_t dirSize(const std::string& dirPath, bool recursive = false) { uintmax_t tmpSize = 0; bfs::directory_iterator dirIter = bfs::directory_iterator(dirPath); bfs::directory_iterator dirIterEnd; for(; dirIter != dirIterEnd; dirIter++) { if ( bfs::is_directory(*dirIter) ) { if ( recursive ) tmpSize += dir.. 2010. 5. 26.
File Size ( file length ) 얻기 - ftell binary 로 파일을 읽어오는 프로그램을 작성하다 나중에 필요할까 싶어 정리해본다. ftell 과 fseek 만을 이용해서 file size를 얻어오는 방법을 이용하였다. int ftell ( FILE* stream ) - 스트림의 현재 file pointer 를 조사해서 시작점과의 거리를 바이트 단위로 리턴한다. #include int main(){ FILE* fpin = fopen( "input.txt" , "r"); fseek(fpin, 0L, SEEK_END); int fileLen = ftell( fpin ); fseek(fpin, 0L, SEEK_SET); std::cout 2010. 4. 23.
Tip of Text Encoding in Java 자바 String Class 는 내부적으로 16Bit Unicode 라는 일관된 타입으로 관리한다. 이와 관련해 encoding performance issue 가 발생할 수 있는데, 예를 들면 CP949로 인코딩 된 입력문을 다른 모듈에 CP949 타입으로 전달하려고 할때 String 을 이용하는 경우, CP949 -> UTF-16(String 내부) -> CP949 에 해당하는 불필요한 연산을 거치게 된다. 따라서 이러한 불필요한 변환을 방지하는 한가지 팁으로 Byte array를 써서 넘기게 되면 변환을 거치지 않고 원본 그대로 전달할 수 있다. (출처) 울회사 H군. 2010. 3. 18.
Big-endian, Little-endian, and Byte Order Mark Big Endian : 자릿수가 큰쪽 바이트가 먼저 저장. (ex) 3E1F 23A1 => 3E1F 23A1 장점 : 사람이 이해하는 방식으로 표기하므로, 수치를 읽는데 자연스럽다. Little Endian : 자릿수가 작은 쪽 바이트가 먼저 저장 (ex) 3E1F 23A1 => 1F3E A123 장점 : 자릿수가 변하는 연산시 Big Endian 보다 빠르다. 자릿수 올림이 발생했을 경우( 예를 들면 F + 1 = 10 ), Big Endian의 경우는 자릿수가 밀려서 저장이 되어야 한다. 이는 performance issue 가 발생할 수 있으며 little Endian 을 채택한 경우 기존 자리는 그대로 있고 맨 뒤에 추가만 하면 되기 때문이다. Byte Order Mark (BOM) : 현재 입력.. 2010. 3. 18.