밑에.. 오우거 엔진.. 교수님이 주신  AXXS 블루투스 동굴.. 꼿다가 노트북이 절명했습니다.
(1. 왜 동굴을 꼿았냐면.. Wii 리모트 땜이죠..
(2. 노트북 자체가 블루투스 지원하긴 했지만, 비스타 상에서 기본 블루투스 드라이버가 설치가 안되서
     실습을위해 꼿았습니다..)

A/S 건에 대해선 .. 이미 간접적으로 회사를 밝혔지만.. 더 이상 그럴 필요는 없을꺼 같군요

토요일 Dragon Mountain(龍山) 가서.. A/S 문의를 해보니
수리비가.. 메인보드만 23만원이상.. 교체해도 안되면 추가비용 ...

작년 9월 A/S 받을때와 같은 패턴으로 나가더군요.. (그때 결국 35만원 주고 보상판매로 갖고 온겁니다)
즉.. 작년 10월 이후로... 8개월 만 쓴 새 노트북이 (보상판매...) 같은 증상으로 나갔으니..
대략 리퍼 재품이라 쓰고,  한달 약.. 4.3만원 씩 빌려 쓰는것과 같은 걸로 되어버리더군요.

여튼...

HP는 역시 걍 프린터나 만들어란 마인드가 심어진 상태에서..
이 노트북을 활용할 수 있는 방법을 찾고 있습니다.

일단 듀얼코어 CPU 니.. 이 CPU로 업그레이드 하시려는 분들도 없지 않아 있으실꺼 같고...
(옛 셈프논 노트북 -> 튜리온 CPU만 업그레이드)

램... 도.. 현재 필요없고

배터리.. 누구 사가실분 있으신가... 거의 배터리 빼고 썻기땜에(1. 무겁고, 2. 몇달전 폭발이 어쩌구 저쩌구 ..)
완전 방전/ 충전은 한 5번 이내이지만.. 이미 중고는 중고.. orz

HDD ... 120GB Sata 하드.. 이지만 이것의 새거 가격대 5만원이니..  GG..

LCD 패널 부분.. 때서 LCD모니터나 만들어야지 하고..

일단 분해기를 올립니다.
분해 방법은..

http://h10032.www1.hp.com/ctg/Manual/c01035657.pdf 114page 부분부터 나온 내용을 토대로 하였습니다.

1. 우선 앞면입니다
사용자 삽입 이미지

2. 뒷면 사진입니다.
사용자 삽입 이미지

3. 우선 ODD 드라이브 부터 제거 하도록 합니다.
   드라이버가 꽃힌곳의 나사를 풀면 쉽게 빠집니다.
사용자 삽입 이미지

4. 무선 랜 칩을 뺍니다. 연결된 2개의 전선(안테나)를 빼고 뽑습니다.
사용자 삽입 이미지

5. Ram 부분도 제거 합니다.
  저기 우리의 목표.. CPU 코어가 보이는군요
사용자 삽입 이미지

6. 하드 디스크도 제거 합니다.
  하드디스크 옆에 붙어있는 저 동그란 검은 물체는.. 메인보드에 박혀있는 수은전지입니다.
  컴퓨터 전원이 나가도 BIOS 내용을 기억시키게 하는 역활이죠(시계 라던가..)
사용자 삽입 이미지

7. 배터리 밑면쪽에 3개의 나사를 풉니다..
   그러면 키보드를 드러낼수 있습니다.
사용자 삽입 이미지

8. 키보드를 들어낼때 밑에 연결된 케이블을 잘 제거 하면서 빼냅니다.
사용자 삽입 이미지

9. 다음으로 LCD 패널을 분리합니다. 액정위의 화상CAM 과 마이크선 및, 아까 무선랜칩에서 뺀 안테나까지
  같이 빠지는군요
사용자 삽입 이미지

10. 키보드와 LCD를 빼냇으면 상판 전면을 들어냅니다. 물론 뒷면 나사란 나사는 다 뺏습니다.
    저기 보면 이 노트북을 벽돌로 만든 원흉.. 메인보드와... 그 칩셋(N○I◎IA) 가 보이는군요
사용자 삽입 이미지

11. 잠시 쉬어서.. 여태껏 뜯어낸것들입니다. 현재 하드는 포멧중입니다 ~_~
사용자 삽입 이미지

12. 전면의 메인보드 기판을 뒤집습니다. 그전에 걸리적거리는 케이블이나.. 스피커 부분을 적절히 제거 합니다.
사용자 삽입 이미지

13. 목표지점.. 쿨러 부분이 나오는군요.. 쿨러부분을 해체하면 드디어 CPU를 제거 할수 있습니다.
사용자 삽입 이미지


14. 이것이.. 이 노트북의 두뇌.. orz
사용자 삽입 이미지

orz 노트북... 살돈도 없는데...
그나마 다행인건.. 학기가 끝났다는게 위안이군요... >_<
다음학기 부턴... 어떻게든 되겠죠.. orz


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 현재 모든 부품이 팔려서
남은거라곤 본체 껍데기와 메인보드 뿐이네요... (본체 껍데기도, LCD 상판은 팔려서 없습니다)
CD롬도 팔았고 HDD는  외장하드로 제2의 전성기고...
남은 밑 껍데기판과, 키보드, (터치패드는 뭔가 잘못 꽃은거 같아서 패스)...  그리고 안에 있는 비정상 메인보드
이걸 이용해서 저금통을 만들어야 하는건지 모르겠네요.

#include <stdio.h>
#include <errno.h>
#include <mysql.h>

MYSQL mysql;

// 쿼리 질의를 한다
void sql_qur(char *sql_query)
{
     printf("input sql query is %s\n", sql_query);
     if( mysql_real_query(&mysql, sql_query, strlen(sql_query)) )
     {
          perror( mysql_error(&mysql) );
          exit( 1 );
     }
}

// 쿼리 질의로 온 결과를 모두 출력한다.
void sql_print_result(char *result)
{
     MYSQL_RES *res;
     MYSQL_ROW row;
     MYSQL_FIELD *fld;
     int fields;

     if( !(res=mysql_store_result(&mysql)) )
     {
          perror( mysql_error(&mysql) );
          exit( 1 );
     }
 
     sprintf(result, "");

     while( (row=mysql_fetch_row(res)) )
     {
          int     i;
     
          for( i=0 ; i<mysql_num_fields(res) ; i++ )
          {
              fld = mysql_fetch_field_direct( res, i );

              if(i == 0)
                  sprintf( result, "%s%20s: %s", result, fld->name, row[i] );
              else
                  sprintf( result, "%s\n%20s: %s", result, fld->name, row[i] );

              if( !strlen(row[i]) )
              {
                  mysql_free_result(res);
                  mysql_close(&mysql);
                  exit(0);
              }
          }
          sprintf( result, "%s\n\n", result );
      }

      mysql_free_result(res);
}

// 쿼리를 받음 단, 한줄에 한개의 쿼리가 찍힌다
void sql_get_result(char *result)
{
        MYSQL_RES *res;
        MYSQL_ROW row;
        int line = 0;
 
        if( !(res=mysql_store_result(&mysql)) )
        {
                perror( mysql_error(&mysql) );
                exit( 1 );
        }
 
        sprintf(result, "");
 
        while( (row=mysql_fetch_row(res)) )
        {
                int     i;
 
                for( i=0 ; i<mysql_num_fields(res) ; i++ )
                {
                        if(i == 0 && line == 0)
                               sprintf( result, "%s", row[i] );
                        else
                               sprintf( result, "%s\n%s", result, row[i] );
 
                        if( !strlen(row[i]))
                        {
                                mysql_free_result(res);
                                mysql_close(&mysql);
                                exit(0);
                         }
                 }
                ++line;
        }
        result[strlen(result)] = '\0';
        mysql_free_result(res);
}

void main(void)
{
        char input_query[100];
        mysql_init( &mysql );

        if( !mysql_real_connect(&mysql,
           "localhost",            // host
           "user",          // user
           "pw",       // passwd
           "db_name",          // db
           3306,                   // port
           NULL,
           0) )
        {
         perror( mysql_error(&mysql) );
         exit( 1 );
        }

        // user 테이블을 출력한다.
        sql_qur("select * from user;");
        sql_print_result(&input_query);
        printf("sql result %s\n", input_query);
 
        // test01 ID에 대한 password 값을 구한다.
        sql_qur("select password from user where ID='test01';");
        sql_get_result(&input_query);
        printf("sql result %s\n", input_query);
 
        // 질의를 입력 받아서 그 결과를 계속 출력
        while(1)
        {
                printf("input sql query! : ");
                sql_qur(gets(input_query));

                sql_get_result(&input_query);
                printf("\nsql result %s\n", input_query);
        }

        mysql_close(&mysql);
}


 출처 카페 > 세은파파의 프로그래밍 하자 .. | 세은파파
원문 http://cafe.naver.com/cyberzone/172
MySQL C API

 1) my_ulonglong mysql_affected_rows(MYSQL* mysql)
        INSERT, UPDATE, DELETE 등의 query로 영향을 받은 ROW의 수를 리턴한다.

2) void mysql_close(MYSQL* mysql) 서버와의 연결을 종료한다.

3) void mysql_data_seek(MYSQL_RES* result, unsigned int offset)
        result에서 임의의 ROW에 접근을 하도록 하는 함수이다. offset이 row의 번호를
        나타낸다. 0이면 처음 ROW, mysql_num_rows( result ) - 1 은 마지막 row를 나타낸다.

4) unsigned int mysql_errno(MYSQL* mysql) 
    가장 최근에 mysql에 일어난 에러의 번호를 리턴한다.

5) char* mysql_error(MYSQL* mysql) 가장 최근에 일어난 에러 메시지를 리턴한다.

6) MYSQL_FIELD* mysql_fetch_field(MYSQL_RES* result)
        한번 호출할 때마다 한 나의 필드에 대한 정보를 리턴한다.

7) MYSQL_FIELDS* mysql_fetch_fields(MYSQL_RES* result)
        배열 형대로 result의 필드에 대한 정보를 한꺼번에 리턴한다.

8) MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL* mysql, MYSQL_FIELD_OFFSET offset)
        임의의 필드에 접근을 하도록 한다.

9) MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES* result)
        현재 필드의 offset을 리턴한다.

10) void mysql_free_result(MYSQL_RES* result)
        result에 할당된 메모리를 해제한다.

11) MYSQL* mysql_init(MYSQL* mysql)
        mysql 객체를 초기화 한다. 인자가 NULL이면 새로운 MYSQL 객체를 생성하고, 초기화 하여 리턴한다.

12) MYSQL_RES* mysql_list_dbs(MYSQL* mysql, const char* wild)
        현재 서버에 있는 데이타베이스의 목록을 리턴한다. wild는 MySQL에서
        사용할 수 있는 정규식을 나타낸다.    
        result = mysql_list_dbs( &mysql,"%" )
        는 모든 데이타베이스를 리턴하는 예이다.(%는 '모든'을 나타낸다)

13) MYSQL_RES* mysql_list_tables(MYSQL* mysql, const char* wild)
        현재 데이타베이스에 있는 테이블들의 목록을 리턴한다.

14) unsigned int mysql_num_fields(MYSQL_RES*result) 혹은
    unsigned int mysql_num_fields(MYSQL* mysql)
 
    필드의 수를 리턴한다.

15) my_ulonglong mysql_num_rows(MYSQL_RES* result)
        result에 총 몇 개의 ROW가 있는지 리턴한다. query 수행 후
        mysql_store_result()를 호출하였을 경우에만 사용할 수 있고,  
        mysql_use_result()는 사용할 수 없다.

16) int mysql_ping(MYSQL* mysql) 
        서버에 연결 중인지를 리턴한다. 연결이 끊어 졌을 경우, 다시
        연결을 시도한다. 서버와 연결을 한 후 오랫동안 가만히 있으면
        서버가 연결을 끊어버리는데, 이런 경우에 사용한다.

17) int mysql_query(MYSQL* mysql, const char* query)
        query가 포인트 하는 쿼리를 수행한다. query의 끝은 NULL 문자이다.
        성공적으로 query를 수행하였으면 0을 리턴한다.

18) MYSQL* mysql_real_connect(MYSQL* mysql, const char* host, const char* user,
const char* passwd, const char* db, uint port, const char* unix_socket,
unit client_flag )
 
         host와의 연결을 시도한다.

19) int mysql_real_query(MYSQL* mysql, const char* query, unsigned int length)
         mysql_query()처럼 query를 수행하나, query의 끝이 legnth인 것이 다르다.

20) MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES* result) 
        현재 ROW의 offset을 리턴한다.

21) int mysql_select_db(MYSQL* mysql, const char* db)
        사용하고자 하는 database를 변경한다. mysql_query()를 이용하여 "use db이름"
        의 query를 수행해도 같은 결과를 얻는다.

22) int mysql_shutdown(MYSQL* mysql)
        서버를 종료시킨다. 현재 사용자에게 shutdown 권한이 있어야 한다.

23) MYSQL_RES* mysql_store_result(MYSQL* mysql)
        query의 수행 결과를 서버로부터 한 번에 모두 받아 온다.

24) MYSQL_RES* mysql_use_result(MYSQL* mysql)
        query의 수행 결과를 서버로부터 한 개의 ROW 씩 받아 온다.
   


간단한 예   
   
***********************************************************
1: #include <stdio.h>
2: #include <mysql.h>
3: #include <errno.h>
4:
5: void main(void)
6: {
7: MYSQL mysql ;
8: MYSQL_RES* res ;
9: MYSQL_ROW row ;
10: int fields ;
11:
12: mysql_init(&mysql) ;
13:
14: if(!mysql_real_connect(&mysql, NULL, "사용자","암호", "test" ,3306, (char *)NULL, 0))
15: {
16:     printf("%s\n",mysql_error(&mysql));
17:     exit(1) ;
18: }
19:
20: if(mysql_query(&mysql, "USE super") )
     // mysql_query()는 query 수행시에 에러가 나게 되면
     // 0이 아닌 값을 리턴한다.
     {
          printf("%s\n", mysql_error(&mysql) ;
          exit(1) ;
     }
21: if(mysql_query(&mysql, "SELECT * FROM dome") )
     {
          printf("%s\n", mysql_error(&mysql) ;
          exit(1) ;
     }
22:
23: res = mysql_store_result( &mysql ) ;
24: fields = mysql_num_fields(res) ;
25:
26: while( ( row = mysql_fetch_row( res ) ))
27: {
28:      for( cnt = 0 ; cnt < fields ; ++cnt)
29:      printf("%12s ", row[cnt]) ;
30:
31:      printf("\n") ;
32: }
33:
34: mysql_free_result( res ) ;
35: mysql_close(&mysql) ;
36: }

*****************************************************
출처 |
원문 http://blog.naver.com/babygom/40014020439

1. Mysql 다운로드& 설치
   http://dev.mysql.com/downloads/ 으로 가서 윈도우용 버전으로 다운을 받고 설치

2. Visual Studio에서 Include, Lib 폴더 설정
    Tools -> option -> directory 에 헤더파일 / 라이브러리 폴더 설정
     헤더 파일 폴더는 Mysql설치된폴더Include
     라이브러리 파일 폴더는 Mysql설치된폴더LibDebug
                                      Mysql설치된폴더LibOpt

3. 프로젝트 셋팅
   위 상태에서 Mysql C API 를 쓰면 컴파일 에러가 발생한다.
   소켓 lib 가 설정되지 않았기 때문이다.
   project --> settings --> [link] 에 ws2_32.lib 추가.
 
   이 상태에서는 컴파일까지는 되지만, 링킹 과정에서 unresolved external symbol 가 발생한다.
   project --> settings --> [link] 에 libmySQL.lib 추가.

4. 지정된 경로에 libmySQL.DLL 파일이 없다는 에러가 발생할시에는..
   Mysql 의 lib 폴더에서 libmySQL.DLL파일을 프로젝트 폴더로 복사한다.


출처: http://www.codedream.net/blog/?no=45

주요 명령어

mysql - sql을 실행시키는 프로그램
mysqlaccess - 사용자 관리용 프로그램
mysqladmin - 데이터베이스 생성 및 삭제와 같은 데이터베이스 서버 관리용 프로그램
mysqld - mysql 서버 프로세스
mysqldump - 테이터베이스 또는 테이블의 정의와 내용을 파일에 덤프하기 위한 프로그램
mysqlhotcopy - 백업용 프로그램
mysqlimport - 다양한 파일 형식으로 데이터를 불러오는 프로그램
mysqlshow - mysql 서버와 서버에 있는 객체에 대한 정보를 출력하는 프로그램

패스워드 지정하기
$ mysqladmin -u <user name> password '<new password>'

권한 관리
grant, revoke를 연구

SQL들

데이터베이스 보기 -> show databases;
데이터베이스 만들기 -> create database <database name>
데이터베이스 지우기 -> drop database <database name>
데이터베이스 사용하기 -> use <databse name>

테이블 목록 보기 -> show tables;
테이블 구성 보기 -> describe <table name>

열거형 사용 예제
create table meal( meal_id int not null primary key,
                         fruit enum('apple', 'orange', 'kiwi', 'banana') );

인덱스 만들기
create index <index name> on <table name> ( column ... )

creat table <table name> ( fields definitions. ...
                                     index <index name. (columns ... ),
                                     unique index <index name> (columns ... )  );

시퀀스 생성
create table <table name> ( id int not null primary key auto_increment,
                                      <other fields> );

현재 데이터베이스 보기 -> select database();
전체 텍스트 검색

create table document ( url varchar(255) not null primary key,
                                 page_text text not null,
                                 fulltext(page_text) );

select url from document where match(page_text) against('mysql');

유닉스 time_t 를 읽을 수 있는 형태로 변환 하는 함수 -> FROM_UnixTime(<field>)

사운덱스 알고리즘 지원 -> soundex(<some>)
날짜 표현방식 -> date_format('1969-02-17', '%W %M %D %Y') => Monday February 17th 1969

MySQL 에서 파일로 데이터 꺼내기
select * into outfile <filename> fields terminated by ',' from <table name>;

explain select 를 사용하면
 - 질의에서 인덱스를 사용하는 방법
 - 테이블을 연결하는 순서
 를 알 수 있다.


출처 : http://kake.tistory.com/12

+ Recent posts