IT 취미생활.  
Front Page
Tag | Location | Media | Guestbook | Admin   
 
'Linux'에 해당하는 글(5)
2009.12.31   ubuntu9.10에서 VirtualBox를 이용해 Windows XP을 설치후 USB 사용하기 2
2009.12.29   리눅스에서 아이폰 및 터치 개발환경 구축하기
2009.11.15   [DirectFB] DirectFB에 Layer.... 2
2009.09.10   Hex String to integer 1
2009.09.10   ini 설정 파일에 특정 value 얻어오기


ubuntu9.10에서 VirtualBox를 이용해 Windows XP을 설치후 USB 사용하기
First I added myself to vboxusers group:
# grep vbox /etc/group
vboxusers:x:128:
# usermod -G vboxusers -a von
In order to get this group change to take effect in my login session, I had to logout and back in again.

Then I edited /etc/fstab to add /proc/bus/usb. I had an old entry I had to comment out.
# vi /etc/fstab
# tail -2 /etc/fstab
#/dev/bus/usb /proc/bus/usb usbfs auto 0 0
none /proc/bus/usb usbfs devgid=128,devmod=644 0 0
I had to unmount the old /proc/bus/usb and then remount it:
# umount /proc/bus/usb
# mount -a
At this point I restarted VirtualBox and was able to mount USB devices.




리눅스에서 아이폰 및 터치 개발환경 구축하기
맥북을 살 수는 없는 상황이고, 다만 아이폰만 있는데

급 Hello World가 보고 싶어졌다.

구글링해보니 아래와 같은 Link Get!
http://code.google.com/p/iphone-dev/wiki/Building



전체 과정
1. LLVM을  SVN에서 check out 받아서 빌드
   --> 시간이 걸린다.
   --> $ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm-svn 로 받을 것
            ~  -r 42498 로 받으면, 컴파일중에 에러를 맞나게 되는데 보통
            header 파일 missing이다. (귀차나서)

2. iPhone-dev를 SVN에서 Check Out 받아서 빌드
3. Tool-Chain 설정
4. Build odcctools 설정


!! 주의


설치 중이니 중간중간 문제가 있는부분은 수정하여 다시 올리도록 하겠습니다.


[DirectFB] DirectFB에 Layer....

뭔가 삽질을 시작하였는데 layer에 기본 개념이 잡히지 않아서 질문을 올려 봅니다.

1. 하나의 어플리케이션이
directfb을 통해서 4개의 layer를 가지며
각 layer는 한개씩 window을 각각 생성하고, 각 윈도우는 surface을 생성하여 가진다.
이게 맞는 것인지? 아니면

2. 하나의 어플리케이션이
directfb을 통해서 1개의 layer을 가지며
한개의 layer 통해서 4개의 Window을 생성하고, 각 윈도우는 각각에 surface 생성하여 가진다.

이게 맞는 것인지 -0- 혼란스럽 습니다.
어느게 개념상 맞는건가요?

1 번과 2번의 모두 가능하면 차이 점은 무엇인가요?


그럼 오늘도 행복한 하루 되세요.



Hex String to integer

이전에 포스팅한 GetProfileToString을 통해서, 특정 값을 읽어왔는데 제기럴 Hex 값이었다.
Int 값이었으면 atoi를 이용해서 int로 쓰겠는데 왠걸 hex string... 열심히 구글링 해보니 CodeProject에 Sample이 있어 업어왔다.


linux에서 왜 string.h에 strupr이 없는걸까???????
보안에 문제가 있는 API라서? 쩝....

Set로 움직이는 함수입니다.
꼭 필요한 분들이 있을 것 같습니다.

수정사항이 있으시면 언제든지!!!  피드백 부탁 드립니다.

고운하루 되세요


char* StrUpr( char *str )
{
    int loop = 0;
    while( str[loop] != '\0' )
    {
        str[loop] = (char) toupper( str[loop] );
        loop++;
    }
    return str;
}


/*
 * hex string to int
*/

int xtoi(char *value)
{
    struct CHexMap
    {
        char chr;
        int value;
    };

    const int HexMapL = 16;
    CHexMap HexMap[HexMapL] =
    {
        {'0', 0}, {'1', 1},
        {'2', 2}, {'3', 3},
        {'4', 4}, {'5', 5},
        {'6', 6}, {'7', 7},
        {'8', 8}, {'9', 9},
        {'A', 10}, {'B', 11},
        {'C', 12}, {'D', 13},
        {'E', 14}, {'F', 15}
    };

    /* remove space */
    int len = strlen(value);
    for(int i = 0; i < len; i++) {
        if( *(value+i) == ' ') {
            value++;
        } else {
            break;
        }
    }

    /* alloc buffer and change upper */
    char *mstr = StrUpr(strdup(value));
    char *s = mstr;
    int result = 0;
    if (*s == '0' && *(s + 1) == 'X')
        s += 2;
    bool firsttime = true;
    while (*s != '\0')
    {
        bool found = false;
        for (int i = 0; i < HexMapL; i++)
        {
            if (*s == HexMap[i].chr)
            {
                if (!firsttime) result <<= 4;
                result |= HexMap[i].value;
                found = true;
                break;
            }
        }
        if (!found) break;
        s++;
        firsttime = false;
    }
    free(mstr);
    return result;
}



ini 설정 파일에 특정 value 얻어오기

linux에서도 이런 API가 있는지 모르겠어서
하나 간단하게 함수로 만들어 보았습니다.

머리가 나쁜면 손발이 고생한다고 하는데 -0-;
필요하신 분들이 있으면 잘 활용하셔요!

예외 처리등이 부실하니, 좀더 낳은 버전으로 수정 하시면
피드백 부탁 드리겠습니다.

그럼 고운하루 되세요.

/*
 * ex) test.ini
 *     [Data]
 *     value= 30
 *     .....
 *
 * ex) GetProfileToString("[Data]", "value=", buffer, "/tmp/test.ini");
 * 텍스트로 작성된 ini 등 에서 특정 섹션의 값을 읽어 온다.
 */
void GetProfileToString(char *section, char *keyName, char *string, char *fileFullPath)
{
    char tempBuffer[MAX_PATH] = { 0 };
    char *result = NULL;
    FILE *fp = fopen(fileFullPath, "rt");
    if (fp == NULL) {
        goto FINALLY;
    }
    while (fgets((char *)tempBuffer, MAX_PATH, fp)) {
        if (0 == strncmp(section, tempBuffer, strlen(section))) {
            memset(tempBuffer, 0, MAX_PATH);
            while (fgets((char *)tempBuffer, MAX_PATH, fp)) {
                if(tempBuffer[0] == '[') {
                    goto FINALLY;
                }
               
                if(0 == strncmp(keyName, tempBuffer, strlen(keyName))) {
                    char *p = (char*)tempBuffer;
                    p += strlen(keyName);
                    memcpy(string, p, strlen(keyName));
                    fclose(fp);
                    return;
                }
            }
        }
        memset(tempBuffer, 0, MAX_PATH);
    }
FINALLY:
    if (fp) {
        fclose(fp);
    }
    string = result;
}


BLOG main image
취미생활
 Notice
 Category
분류 전체보기 (191)
매일매일갱생 (83)
서버개발 (1)
임베디드개발 (12)
Programming (80)
Personal Projects (6)
유용한 프로그램 (0)
 TAGS
알고리즘 Wince5.0 ISDB-T warning DVB spam mail 미라지폰 english email 출장 VC++ Brazil M480 Error Case DirectShow 개발자 군대 C Dshow debugging 1seg 퇴사 project 서태지 isdbt Algorithm 티스토리초대 English 벨소리 변경 MP3 Debug 영어 이메일 Windows Mobile6.0 It 티스토리 초대장 음식 Linux C++ Java DVB-T
 Calendar
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
 Recent Entries
 Recent Comments
 Recent Trackbacks
 Archive
 Link Site
zextor
괴짜 프로그래머의 일상사~@@
Gag & Peace, and more..
Kazakhstan Almaty.......
Min-A
Sadgarret
Steve Yoon's log
가슴 뛰는 삶을 살아라
오스틴 파워
GUI sin
melanie parker_Lady
제레미의 TV 2.0 이야기..
 Visitor Statistics
Total :
Today :
Yesterday :
rss