2012년 3월 28일 수요일

Simple Subtitle Renamer GUI

예전에 만들었던 smiRenamer는 지금까지 쏠쏠하게 잘 쓰고 있다.
이번에 약간의 기능을 더 추가하여 새롭게 다시 만들어 보았다.
이번에 이름은 SubRenamer라고 이름지었다.

이전과 마찬가지로 어떤 영상 파일과 자막 파일이 있는 경우,
두 파일의 이름을 동일하게 맞추어 주는 프로그램이다.


단순히 파일 이름의 변경만을 원하는 경우, 파일 이름만을 전문적으로 바꾸어주는 툴을 사용할 수도 있지만, 이것은 동영상-자막 파일의 이름을 맞추는데 특화되어 있다는 것이 특징이랄가.

이전에 비해 동영상/자막 타입을 사용자가 결정할 수 있고, 하위검색에 대한 기능이 보강되었다. 그리고 지정한 확장자를 가진 파일에 대해 정규식 검색을 할 수 있어 더욱 원하는 파일만을 볼 수 있도록 하였다.

[ 다운로드 ]

2010년 9월 24일 금요일

현재 블로그는

현재 블로그는 설치형 블로그에 의존하고 있습니다.
http://nambaxa.wo.tc/tc/ 로 오면 똑같은 블로그가 있습니다.

요즘은 위키를 더 선호합니다.
http://wiki.nambaxa.wo.tc 입니다.

2010년 8월 5일 목요일

클래스 크기에 멤버 함수가 영항을 줄까?

일단 VS2008에서의 답은 NO 입니다.


좀 생각해 보면 그럴 만도 하지..
컴파일 된 이후 오브젝트 코드에서 무슨 클래스와 멤버 변수, 함수 개념이 있나..
그냥 언어 단계에서 사람들이 작성할 때 필요한 규칙일 뿐인 것을.

2010년 6월 1일 화요일

getPath

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>

std::string getPath(std::string & fullpath);

int main(int argc, char **argv)
{
    std::vector<std::string> arglist;

    for(char ** v = argv+1; *v != NULL; ++v) {
        std::cout << *v << std::endl;
        arglist.push_back( getPath(std::string(*v)) );
    }

    std::copy(arglist.begin(), arglist.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
    return EXIT_SUCCESS;
}


std::string getPath(std::string & fullpath)
{
    for(std::string::iterator it = fullpath.begin();
        it != fullpath.end();
        ++it)
    {
        if( *it == '\\' )
            *it = '/';
    }

    std::string::size_type pos_beg =  fullpath.at(0)    == '\"' ? 1 : 0;
    std::string::size_type pos_end = *fullpath.rbegin() == '/'  ? std::string::npos : fullpath.rfind('/')+1;
    
    return fullpath.substr(pos_beg, pos_end);    
}