CharSyam
Tag | Location | Media | Guestbook | Admin

'2010/04'에 해당하는 글(10)
2010/04/26   Clean Code - 5. Formatting (2)
2010/04/25   어떤 모바일 단말에 뛰어들어야 하나요?
2010/04/18   mysql simple example
2010/04/18   mysql 기본 셋팅
2010/04/18   Ubuntu iptables 설정 방법
2010/04/17   Android 개발자와 함께하는 히치하이킹
2010/04/17   Linux 에서 OS bit 확인 하기
2010/04/14   코드 스니핏 - urlencode, urldecode 샘플
2010/04/07   총체적 위기?
2010/04/01   MATLAB에서 1:1:1000 의 의미와 행렬에서 특정 아이템 가져오기


2010/04/26 01:04 2010/04/26 01:04
Clean Code - 5. Formatting

클린 코드 5장 Formatting 정리

 

사용자 삽입 이미지

 

 



2010/04/25 02:46 2010/04/25 02:46
어떤 모바일 단말에 뛰어들어야 하나요?

요새 확실히 모바일이 대세이긴 대세다. 수 많은 포탈들에서도 모바일 지원을 천명하고 있고

(g 모사에서는 CEO가 향후 g모사의 핵심은 모바일 이라고 외치기도 하셨고) 그렇다면 과연

모바일에 운명을 걸고자 하는 사람들은 과연 어디로 뛰어들어야 할까?

플랫폼도 다양하다. 아이폰, 안드로이드, 곧 나올 윈도우모바일7 까지(나머지 플랫폼들도 있지만,

현재는 이 3개의 임팩트가 가장 강하다. 미안하다. 심비안아!!!)

결론부터 말하자면, 현재 돈을 벌고자 한다면, 한국에서는 무조건 아이폰이다!!!

위에서 “현재 돈을 벌고자 한다면” 을 강조한 이유는  단 한가지이다.

아이폰 이외에는 일반 개발자가 돈을 벌기는 힘들기 때문이다.

기본적으로는 벌지 못한다고 생각하면 된다. 분명히, 그럼 다른 플랫폼을 무시하는 것이냐고

한다면, 이유는 간단하다. 현재 한국 소속으로는 안드로이드와 MS앱스토어에 유료 어플을

올릴 수 없다!, 오직 가능한 곳은 아이폰의 애플앱스토어 뿐이다.

현재 구글 안드로이드 마켓에서는 미국 주소지의 신용카드가 있어야만 paymant account(유료계정)

을 등록할 수 있다. 현재 한국에서는 유료 어플의 다운로드 자체도 가능하지가 않다.

MS도 마찬가지이다. 아직 윈도우 모바일 7폰 자체도 안나왔을 뿐더러, MS스토어도 아직 활성화 되지

않았다. 활성화 되더다로 한국의 순서는?

그렇다면, 아이폰이 무조건 해답인가? 그건 아니다. 실제로 위의 세 플랫폼 모두에서 유료등록과

상관없이 돈을 벌 수 있다. 그건 벅스나, 소리바다 처럼, 웹 사이트등에서 매달 결제하게 하고,

해당 유료 등록자만, 서비스를 들을 수 있게 하는 방식을 택하면 가능하긴 하다. 그러나, 1인 개발자가

이런 방식을 하기는 힘들지 않을까 싶다.

간단하게 각 플랫폼의 특성을 정리해보면 다음과 같다.

  아이폰 안드로이드 윈도우모바일7
주체 애플 구글 MS
주언어 Objective-C Java C#(Siverlight, XNA)
장점 1. 동일한 하드웨어
2. 유료 마켓 활성화
1. 소스 공개
2. 멀티태스킹
1. 기본적으로 아이폰을 닮아감!
2. 하드웨어 기본 사양 강제
단점 - 아이패드로 인해서 동일한 하드웨어가 깨졌음
- 부분적 멀티태스킹으로 힘듬
- 다양한 하드웨어가 존재 - 유료 OS

뭐, 간단하게 이런식이지만, –_- 결론은 HTML5가 짱일 것이라는 허망한 결론이 나온다.

하나로 다양한 플랫폼이 커버가 되니, 하드웨어 종속적인 기능이 필요한 경우가 아니라면

몇년 내로 HTML5가 대세이지 않을까?



2010/04/18 04:04 2010/04/18 04:04
mysql simple example

간단한 mysql 관련 샘플

 

  1. #include    <stdio.h>
  2. #include    <mysql.h>
  3. #include    <errno.h>
  4. #include    <string.h>

  5. int main( int argc, char *argv[] ){
  6.     MYSQL mysql;
  7.     mysql_init(&mysql);

  8.     if( !mysql_real_connect( &mysql, "localhost", id, pass, dbname, 3306, NULL, 0 )){
  9.         printf("%s\n", mysql_error(&mysql));
  10.         return 1;
  11.     }

  12.     printf("Mysql Connected\n");

  13.     MYSQL_RES *result;
  14.     MYSQL_ROW row;

  15.     char sql[256];
  16.     strcpy( sql, "select * from tbl_user_info" );
  17.     if( mysql_query( &mysql, sql ) != 0 ){
  18.         printf("query fail: %s\n", mysql_error(&mysql));
  19.         mysql_close(&mysql);
  20.         return 1;
  21.     }

  22.     result = mysql_store_result( &mysql );
  23.     int nCount = mysql_num_rows( result );
  24.     while( (row = mysql_fetch_row( result ) ) != NULL ){
  25.         printf("%s %s %s\n", row[0], row[1], row[2] );
  26.     }

  27.     mysql_free_result( result );
  28.     mysql_close(&mysql);

  29.     return 0;
  30. }



2010/04/18 03:58 2010/04/18 03:58
mysql 기본 셋팅

db 생성

mysqladmin create db_name

 

user 생성, 권한 부여

grant all privileges on db_name.* to id@localhost identified by 'password' with grant option;

( 예전에는 insert into 로 db, user 를 추가해줘야 했는데, 그럴 필요가 없다.)

 

flush privileges;



2010/04/18 01:18 2010/04/18 01:18
Ubuntu iptables 설정 방법

 가져오기

localhost:/etc# iptables-save > iptables.rules

 

저장하기

 localhost:/etc# iptables-restore < iptables.rules

 

 샘플

-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j DROP
 



2010/04/17 23:02 2010/04/17 23:02
Android 개발자와 함께하는 히치하이킹

사용자 삽입 이미지



2010/04/17 02:08 2010/04/17 02:08
Linux 에서 OS bit 확인 하기

 getconf LONG_BIT 하면 알 수 있다.



2010/04/14 03:20 2010/04/14 03:20
코드 스니핏 - urlencode, urldecode 샘플

갑자기 필요해졌는데 –_-, 괜찮은 소스코드가 없었다.

그렇다고 내가 만든건 아니고 qDecoder 에서 decode 부분을 –_-( qDecoder에서는 한글이 인코딩이 안되네) 또 어디에서(어디더라, ) encode 부분을 가져와서 간단하게 인터페이스만 살짝 바꾼 버전이다.

고로 –_- 아무것도 내가 한건 없다라고 보면 될듯

MAC에서는 NSString 이 기본적으로 해주는데, c 쪽은 다 직접 해줘야 한다라는 –_-

#include <stdio.h>
#include <string.h>
#include <memory.h>
static const unsigned char hexchars[] = "0123456789ABCDEF";

char *url_encode(char const *s, int len, int *new_length)
{
    register unsigned char c;
    unsigned char *to, *start;
    unsigned char const *from, *end;

    from = s;
    end = s + len;
    start = to = (unsigned char *) malloc(3 * len + 1);

    while (from < end) {
        c = *from++;
        if (c == ' ') {
            *to++ = '+';
#ifndef CHARSET_EBCDIC
        } else if ((c < '0' && c != '-' && c != '.') ||
            (c < 'A' && c > '9') ||
            (c > 'Z' && c < 'a' && c != '_') ||
            (c > 'z')) {
                to[0] = '%';
                to[1] = hexchars[c >> 4];
                to[2] = hexchars[c & 15];
                to += 3;
#else /*CHARSET_EBCDIC*/
        } else if (!isalnum(c) && strchr("_-.", c) == NULL) {
            /* Allow only alphanumeric chars and '_', '-', '.'; escape the rest */
            to[0] = '%';
            to[1] = hexchars[os_toascii[c] >> 4];
            to[2] = hexchars[os_toascii[c] & 15];
            to += 3;

#endif /*CHARSET_EBCDIC*/
        } else {
            *to++ = c;
        }
    }

    *to = 0;
    if (new_length) {
        *new_length = to - start;
    }

    return (char *) start;
}

/**
* Decode URL encoded string.
*
* @param str    a pointer of URL encoded string.
*
* @return    the length of bytes stored in str in case of successful, otherwise returns NULL
*
* @note
* This modify str directly. And the 'str' is always terminated by NULL character.
*/
static char _x2c(char hex_up, char hex_low)
{
    char digit;

    digit = 16 * (hex_up >= 'A'
        ? ((hex_up & 0xdf) - 'A') + 10 : (hex_up - '0'));
    digit += (hex_low >= 'A'
        ? ((hex_low & 0xdf) - 'A') + 10 : (hex_low - '0'));
    return (digit);
}

int url_decode(char *str, char *target, int size) {
    char *pEncPt, *pBinPt, *pTarPt;

    if (str == NULL || target == NULL || size == 0 ) {
        return 0;
    }

    pBinPt = str;
    pTarPt = target;

    for(pEncPt = str; *pEncPt != '\0'; pEncPt++) {
        if( (pTarPt - target) >= size )
        {
            pTarPt--;
            break;
        }

        switch (*pEncPt) {
            case '+': {
                *pTarPt++ = ' ';
                break;
            }
            case '%': {
                *pTarPt++ = _x2c(*(pEncPt + 1), *(pEncPt + 2));
                pEncPt += 2;
                break;
            }
            default: {
                *pTarPt++ = *pEncPt;
                break;
            }
        }
    }
    *pTarPt = '\0';

    return (pTarPt - target);
}

int main()
{
    int i, n;
    unsigned char dest[256] = {0x00,};
    unsigned char test[256] = {0x00,};
    char *pTarget;
    unsigned char *str[] = {
        "안녕하세요",
        "hello world 안녕하세요\n",
         "hello\%20world\%20\%be\%c8",
        "A B C D E F G",
        NULL
    };

    int count = 0;
    char *pDest = str[count];
    while( NULL != pDest){
        printf("Original : %d %s\r\n", strlen(pDest), pDest);
        pTarget = url_encode(pDest, strlen(pDest), NULL);
        printf("encode   : %d %s\n", strlen(pTarget), pTarget);

        n = url_decode(pTarget, test, 256);
        test[n] = 0;
        printf("decode   : %d %s\n", n, test);

        free(pTarget);
        count++;
        pDest = str[count];
    }

    return 0;
}



2010/04/07 00:44 2010/04/07 00:44
총체적 위기?

막무가내로 시작한 방통대 대학원 생활,

이번 학기에 수강한 과목이 패턴 인식과 이러닝 시스템이다. –_-

그러나, 어느 하나도 만만한 과목이 아니다.

특히, 이러닝은 학습의 내용이 대부분 암기과목이라(텀이 힘들긴 하지만) 그래도

괜찮은 편이지만, 패턴 인식의 경우는 완전히 수학과목인데,

문제는!!!

수식이 하나도 이해되지 않는다. 왜 이런것인지…… 현재의 내 머리로 도저히 이해가 안간다

쉬운거 하나하나도 남들보다 뒤쳐지는 상황인지라, 봐도봐도 딴나라 말로 들리는 것을

어떻게 해야하는지… 에휴… 그래도 해보는 수밖에, 올해는 아마도 F 2개를 볼것같지만…

성적이 중요한게 아니라, 내가 이 과목을 제대로 이해하는지가 가장 중요한 상황이다.



2010/04/01 01:59 2010/04/01 01:59
MATLAB에서 1:1:1000 의 의미와 행렬에서 특정 아이템 가져오기

1:1:1000 의 의미

1부터 1000까지 1씩 증가하는 배열(또는 행열) 을 의미한다.

X=1:1:1000; 하게 되면 1부터 1000까지의 행렬이 생긴다.

또는 X=randn(1000,2) 으로 하면 랜덤하게 0부터 1000까지의

2차원 행렬이 생기게 된다.

이 때, X(:,1) <—첫번째 아이템을 의미

X(:,2) <—두번째 아이템을 의미한다.



BLOG main image
CharSyam
 Notice
 Category
전체 (90)
(19)
(3)
프로그래밍 (61)
게임 (1)
Server Setting (5)
대학원 (1)
 TAGS
XML 한글바로가기 구본형 Atomic Design Pattern 주식 RAPI 디자인패턴 googletest DTM_SETIMAGE C&C 뷰타입 스타일 Abstract Factory Haskell 여론 조작 VFS Simple Factory WindowMobile qsort Interface 더블버퍼링 정제 고수 경제학 3.0 일일빌드 MACOSX TDD 공병호 google test 공짜경제학 일자리 창출
 Calendar
«   2010/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
YES24 총알 배송 광고
CMake &ndash; CMakeLis...
Autotools 관련 좋은 링...
고수와 전문가의 차이
Zookeeper 설치 방법
 Recent Comments
오~ 이 책도 땡기는군요...
ohyecloudy - 05/25
항상 정리해야 되는데,...
CharSyam - 05/13
잘 정리하셨네요. ^^
고감자 - 05/12
네, 저도 동감합니다....
CharSyam - 2009
http://www.thisisgame....
ParkPD - 2009
 Recent Trackbacks
Discount patio furniture.
Discount furniture.
Furniture competition.
Furniture design compe...
Acomplia ribona.
Acomplia.
Premarin.
Premarin vaginal cream.
스크럼과 XP
The note of Legendre
 Archive
2010/07
2010/06
2010/05
2010/04
2010/03
 Link Site
 Visitor Statistics
Total : 38341
Today : 43
Yesterday : 73
rss
Powered by Tistory & Designed by webnoon.net