Blog | Tag | Local | Guest | Login | Write |  RSS
분류 전체보기에 해당되는 글 110건
2008.10.07 :: 두번째 공지입니다. 10
2008.10.05 :: 첫 공지입니다. 10
선진국과 디자인

수원멤버십 디자이너 채은석입니다. 허허 안그래도 시그에 대해서 생각이 많았었는데 이런 좋은 시그가 생기게 되어
매우매우 기쁘게 생각하며, 기분좋은 마음으로 블로깅을 해나가겠습니다. 사실 개인적으로 블로그를 운영하고 있긴
한데 주로 디자이너의 시선으로 바라본 세상사는 이야기에 대해서 운영하고 있어 정보적인 측면에서는 별로 매력도가
떨어지고^^; 그저 디자인에 관심이 많은 사람들이라면 함께 공감하지 않을까 하는 생각에서 운영을 하고 있습니다.

해서, 지금 이 블로그와 내용이 조금 겹치게 될수도 있으나 아무쪼록 봐주시고...-0- 제 이야기는 그냥 편하게 읽으시면
되는 쉬어가는 페이지 정도로 생각해주세요. 디자인라이프라고 해서 완전히 디자인적인 시야만 강요하는것이 아니라
완전한 논리에 따르는 결과물이 아닌 감성적인 측면에서 접근 가능한 모든 분야에 대해서 이야기를 하고자 합니다.
사실 디자인이라는게 대중의 마음을 사로잡기 위한 작업이고 이것또한 감성적인 측면을 강조하는것이 강한 부분이기
때문입니다. 아직은 저도 배우는 학생 입장이기 때문에 많이 미숙하지만 디자인에 대해서 조금이나마 알려드리고자
최대한 노력하겠습니다. 그럼 제목에서 밝힌바와 같이 선진국과 디자인에 대해서 이야기를 풀어보겠습니다.
(죄송하지만 이하부터는 반말로 진행하겠습니다.)

---------------------------------------------------------------------------------

'선진국과 디자인'

제목은 거창하지만 어찌보면 당연한, 쉬운 이야기라고 생각한다. 선진국을 여행하다 보면 왠지 모를 '와 선진국 답다'라는
생각이 들곤한다. (본인만의 생각일수도 있겠지만;;; 최소한 주위의 사람들은 다 그런 생각을 갖고 있었다.)
이러한 이유는 바로 디자인에 있다고 생각한다. 곧 한 나라의 문화척도를 나타내는 부분이다.

다음의 사례를 한번보자.

한국을 종종 오가는 디자이너 루크 하인스씨는 한국의 디자인 수준을 가늠하기 힘들어한다. “휴대폰, TV, 자동차 등 한국산 제품의 디자인은 어느 나라와 견주어도 뒤지지 않을 정도입니다. 그런데 거리의 시설물과 표지판, 간판 등 생활 속 공공디자인은 혼란스럽기 그지없습니다.” 그가 더 의아스럽게 생각하게 된 것은 한국인의 집을 방문했을 때다. “실내 인테리어 디자인이 미국에서는 상당한 부자나 할 정도의 수준이었습니다. 집안의 디자인에는 그렇게 비용을 많이 들이고 신경을 쓰면서 바로 문만 열고 나가면 맞닥뜨리는 거리의 디자인에는 아무도 신경을 쓰지 않는다는 사실을 이해하기 어렵습니다.”

이것은 단지 '디자인이 별로네'라는 이야기로 끝낼 수 있는것이 아니라 문화적인 수준에 대해서 심각하게 고민해봐야 할 부분이다. 아직 대한민국은 단지 눈앞의 결과물에 만족해 하는 하드웨어적인 측면의 디자인에만 목메달고 있고 나라의 수준을 한단계
끌어 올리는 전체적인 문화에는 시야가 트이지 않은것이다. 거리를 다니고 생활을 하면서 국민들은 주위의 환경에 영향을 받을
수 밖에 없다. 그 영향을 주는 수준이 현재 대한민국의 현주소와 같다면 우리의 문화적 수준은 딱 고정도에서 멈추고 만다.
이것은 누워서 침뱉기식의 대한민국 수준비판이 아니라 국가자체가 나서서 선진국으로 나가기 위한 것이 단지 1인소득의 경쟁
력에만 있는 것이 아니라는 것을 보여줬으면 하는 마음에서 하는 이야기이다.

다행히 요즘은 인터넷의 발달로 상당수의 국민들의 시야가 넓어지고 수준또한 상당해 졌다. 때마침 서울시는 세계디자인 올림픽이라는 큰 행사를 앞두고 강력하게 '디자인'을 외치고 있는 상황이다. 이것이 좋은 계기가 되어 부디 대한민국의 문화적인 힘이
큰 힘을 발휘하여 또한번 세계를 놀라게 할 돌풍을 몰고 올것을 기대해 본다.


끝으로 일본의 한 디자인스튜디오에서 제작한 'Tokyo Wonder'라는 작품을 올려봅니다.
Tokyo라는 도시에 대한 특징을 기가막히게 풀어낸 영상으로 하나의 도시를 디자인으로
재해석하여 또하나의 컨텐츠로 재생산해 내는 그들의 마인드가 실로 무섭고 부럽네요^^




안녕하세요 17-2기 심형남입니다. 요즘학교서 속칭 컴구조라고 하는 컴퓨터시스템구조를 수강하는데 정리겸 해서 포스팅하기로 했습니다. 강의 내용과 연습문제 풀이형식으로 포스팅할 예정입니다.
 참고 서적 : Computer System Architecture -M.Morris Mano

1. 디지털 컴퓨터

■ 디지털 컴퓨터
  - 여러가지 계산을 수행하는 디지털 시스템
  - 0과 1의 두개의 숫자만을 이용하는 2진수 시스템
  - 컴퓨터 내부의 정보가 제한된 수의 불연속적 값으로 표시
            -Ex) 10진수 : 1-9까지 10개의 불연속적인 값 사용

■ 디지털 시스템
  - 전자부품의 물리적 제약과 인간의 논리가 2진적이라는 이유때문에 오직 2개의 값만을 가지도록 제한한다.

■ 비트(Bit)
 - 하나의 2진 숫자
 - Bit group을 통해 하나의 정보를 표시함
 - 다양한 코딩 기법에 의해 10진수, 영문자 등 표현가능

■ 2진수
 - 2를 밑수로 하는 수의 체계
 - 진법 변환의 예
   - 2진수(1001011)
   - 1×26+0×25+0×24+1×23+0×22+1×21+1×20 = 75

컴퓨터의 구분

 - 하드웨어:컴퓨터의 모든 전자부품과 주변장치를 구성하는 전자기적 부품

 - 소프트웨어 : 컴퓨터의 여러가지 정보처리 작업을 수행하는 명령어와 데이타들로 구성

시스템 입장에서의 구분

 - 하드웨어

 - 시스템 소프트웨어(Operating System)

   •컴퓨터 시스템을 효율적으로 사용하기 위한 목적을 가진 프로그램 집합(Compiler)

   •사용자가 요구하는 하드웨어(Hardware) 기능간의 차이점을 보상

   



2. 하드웨어


중앙처리장치(Centeral Processor Unit;CPU)

 - 데이타를 조작하는 산술 및 논리연산 부분

 - 데이타를 저장하는 레지스터(Register)

 - 명령어를 가져와 수행하는 제어회로

 - 기억장치(Random Access Memory;RAM)

 - 명령어와 데이타를 저장

 - 입출력 장치

 - 컴퓨터와 외부 세계와의 통신과 데이타 전송을 제어

 - 키보드, 프린터, 터미날, 자기 디스크

3. 연구자의 관심에 따른 컴퓨터의 분류

컴퓨터 조직 (Computer organization)

- 하드웨어 구성품들의 동작 방식과 이들의 연결방식에 관심을 두는 것으로 각 부품들이 제대로 동작하기 위한 조직적인 구조를 연구

컴퓨터 설계(Computer Design)

 - 컴퓨터 하드웨어 설계

 - 제시된 컴퓨터의 사양에 따라 적절한 하드웨어를 선택하고 그들간의 연결방식을 결정하여 시스템 개발

 - 컴퓨터의 구현

컴퓨터구조(Computer Architecture)

 - 사용자 입장에서 컴퓨터의 구조나 동작에 관심

 - 정보의 형식이나 명령어 집합, 메모리 주소기법 등을 연구

 - 컴퓨터의 구조적 설계
   
프로세서나 메모리같은 기능적 모듈의 사양을 가지고 컴퓨터 시스템 설계

4. 논리 Gate

2진 정보

 - 물리적 양인 전압 신호를 통해 표현

 - 5V = 1, 0.5V=0

2진 정보의 처리

 - Gate라는 논리 회로에서 처리

Gate

 - 입력논리의 필요조건에 따라 1 또는 0의신호를 만드는 하드웨어 블럭

 - 동작을 대수적 함수로 표시하기 위해 진리표 사용


■ 논리Gate의 종류




 비트맵영상에서의 단위 픽셀을 표현하는 방법에 따라 정밀도가 다르다.
 여기서 픽셀을 표현하는 방법은 파일의 종류에 따라 다르게 되는데
 보통 하나의 픽셀을 몇비트로 표현하는가? 에 대한 정보를 가지고 있고 이에 따라 다양한 컬러모드가 존재한다. 
 물론 한 픽셀의 정보를 많은 비트를 사용할 수록 정밀도가 높아지지만,, 그만큼 그림 파일 하나의 메모리는 커지게된다.
 하지만 메모리를 아끼기위해 한 픽셀의 정보를 최소비트만을 이용하자면,, 그만큼 정밀도는 떨어질 것이다. 
 적당한 조절이 필요하다는 말씀!!

 이번포스팅에서는 픽셀과 컬러 모드에대한 몇가지 예를 들어볼 생각이다.

1. 픽셀(Pixcel)

픽셀(Pixel)은 Picture element의 줄임말이다.
 
즉, 옆의 그림을 참고하면 그림을 확대하고 확대 또확대 확대하다보면
더 이상 확대되지않고 모자이크처럼
정사각형의 하나의 색상단위를 볼 수 있는데,,
다음과 같이 더 이상 세분할 수 없느 이미지의 기본 요소가 되는 것을 픽셀이라고 지칭한다.
화소라는 표현을 사용하기도 한다.

이 픽셀들은 정사각형 모양으로 각각
컬러 정보와 위치 정보를 담고
여러 개가 모여서 하나의 이미지를
만들어 내는 것이다.

장점 ; 일반적인 사진, 그림에서 섬세한의 이미지에 적합하다.
단점 ; 각픽셀에 대하 정보를 가지고 있으므로 그림이 커질수록 더 많은 픽셀이 필요하고 그만큼 디스크의 차지공간은 넓어진다.
         또, 그림을 다음과 같이 확대를 계속하다보면 모자이크처럼 큰점으로 나타나 처음의 섬세함을 찾을 수가 없다.


2. 컬러모드


 1) 트루컬러(true) 모드
 -> 단위 픽셀이 24비트를 가진다. 즉, R,G,B 각각 8비트로 3개라 24비트이다. 
     이를 통해서 2의 24승만큼의 컬러를 표현할 수 있게되는데,, 이를 십진수로 표현하면
     대략 16777216(1670만) 컬러가 되므로,, 최고의 컬러수로 영상을 저장, 가장 정밀도가 높은 컬러모드라고 할 수 있다.
     물론, 디스크의 용량이 충분하다면, 최고의 정밀도를 위해서 트루컬러모드를 추천한다.

 2) 인덱스 모드
-> 요즘 디스크의 격이 싸졌다고는 하지만, 디스크의 용량에는 결국 한계가 있다. 
    그래서 영상정보를 줄여서 저장할 필요성을 느끼게 되는데,,, 그런 의미에서 나온 모드가 인덱스 모드이다.
    다음의 모드는 픽셀당 24비트를 8비트나 16비트로 줄여서 저장하기 위한 시도이다.
    사실 세상에는 많은 색의 표현이 있지만 실제로 우리가 구분이 가능한 색은 많지 않기 때문에 
    다음과 같은 방식으로 저장하여도 트루컬러와 크게 차이를 느끼지 못한다.

    그렇다면 어떻게 색상정보를 줄이는가? 하면 
    24bit의 트루컬러의 이미지중에 8비트라면 8비트만큼의 가장 많이 사용하는 색상정보를 컬러테이블에 저장
    16비트라면 16비트 만큼의 가장 많이 사용하는 색상정보를 컬러 테이블에 저장한다.
    (    예를들어 8 bit는  0~255 까지의 수를 표현할 수 있으므로 총 256가지의 컬러
                16비트는 0~65535까지의 수를 표현할 수 있으므로 총 65536가지의 컬러를  표현할 수 있다.    )


 인덱스  R
 255  212 132  22 
 ...  ... ...  ... 
 1  112 150  255 
 0  23 52  69 

(8bit 팔레트 : 가장 많이 사용된 255가지의 색상정보를 인덱스로 가지고 있다.)

 0  195
 122  255  56
 88  46 200 

(9*9의 8bit 팔레트를 사용하는 bitmap 이미지의 구조)
(255는 위의 인덱스를 쫒아가 RGB값이 각각 211,132,22인 값을 지니게 된다.)
(즉, 트루컬러를 사용했으면 각각의 픽셀당 24bit를 쓰지만,, 이와같은 방법을 사용하면 8bit로 디스크의 샤용이 확 준다.)
(16bit 팔레트를 사용한다면 더 좋은 정밀도를 가질 수 있다.)

단색

16색

8bit



1비트는 0과 1 두수를 표현할 수 있으므로 두가지 컬러를 나타낼수 있다는 말입니다.
8비트는 0~255 까지의 수를 표현할 수 있으므로 총 256가지의 컬러를 나타낼수 있고,

24bit

16bit

32bit

 16비트는 0~65535까지의 수를 표현할 수 있으므로 총 65536가지의 컬러를 나타낼수 있고,
24비트는 0~16777215까지의 수를 표현할 수 있으므로 총 16777216(1670만)컬러를 나타낼수 있죠.
32비트는..^^?
윈도우의 디스플레이등록정보를 보시면 해상도를 설정하는 부분이 있습니다.
그부분의 '색 품질'란에 보시면 16비트, 32비트라고 되어있습니다.
여기서 32비트중 24비트(1670만컬러)는 색을 표현하는데 쓰고,
나머지 8비트는 투명도를 표현하는데 사용됩니다.


 참고 )
1. 16bit는 가라로 만들었음;; 화면해상도를 16bit로 한 뒤 캡쳐 ㄷㄷㄷ
2. 32bit는 무엇?? ㄷㄷㄷ
  : 32bit중 24 bit는 트루컬러처럼 RGB를 사용하고 남은 8bit를 투명도를 표현하는데 사용.
3. 어쨋든 캡쳐는 24bit로 하였으므로,,, 16bit캡쳐본은 오히려 메모리낭비;; 32bit는 24bit와 같음 ㄷㄷㄷ


 

다음은 C++에서 제공하는 팔레트를 저장할 수 있는 구조체이다.

 typedef struct tagRGBQUAD
{
           BYTE          rgbBlue;                  // B 성분 (파란색)
           BYTE          rgbGreen;                // G 성분 (녹색)
           BYTE          rgbRed;                   // R 성분 (빨간색)
           BYTE          rgbReserved1;          // 예약된 변수
} RGBQUAD;



 
 3) 흑백 모드
-> 흑백모드는 RGB의 모든 값이 서로 동일할 때 나타난다.
     RGB가 모두 0이되면 흑백이 되고 255가 되면 가장 밝은 백색이 된다.
     이는 8bit의 특별한 팔레트를 가지고 있는 것이다.  즉, 흑백정보에서는 저장된 인덱스의 값이 바로 밝기정보가 된다.

   R
 255 255  255  255 
 ...  ... ...  ... 
 1 1 1 1
 0

(흑백영상의 팔레트)


오늘은 데이터베이스에 관해 알아보기 전에 간략한 내용만 정리해서 올리도록 하겠습니다. 우선 오늘은 데이터베이스와 종류, SQL, 그리고 SQL의 5계명에 대해 간략히 얘기할 것입니다. 그리고 다음 시간에는 오라클, MYSQL, MSSQL의 특징과 본격적인 데이터 베이스 중에서 SQL문에 대한 공부를 할 것입니다.
  • 데이터베이스란
  1. 어떤 규칙이나 목적을 기초로 하여 관리되는 데이터의 모음
  2. 여러 사람이 원하는 정보를 얻기 위한 데이터를 한 곳에서 관리할 수 있도록 모아 둔 것


  • 데이터베이스의 종류



데이터베이스의 종류에는 계층형, 관계형, 네트워크형이 있다. 이 중에서도 현재 가장 널리 사용되는 것은 관계형 데이터 베이스이다. 관계형 데이터 베이스에서는 몇 개의 항목을 조합하여 데이터를 표 형식으로 관리한다. 이런 시스템을 관계형 데이터베이스 관리시스템, RDBMS (Relational DataBase Management System)이라고 하며, 관계형 데이터베이스 관리 시스템을 관리하는 데이터 모음을 관계형 데이터베이스, RDB (Relational DataBase)라고 한다.

 

  • SQL이란 무엇인가?

SQLStructured Query Language로 한마디로 설명한다면 "관계형 데이터베이스 관리 시스템과 대화하기 위한 언어"라고 할 수 있다. 즉, 관계형 데이터베이스 관리 시스템에게 "00라는 데이터를 주세요" 등의 요구를 할 때, SQL을 사용하여 요청하는 것이다. 이렇게 데이터베이스 관리 시스템에게 요청하는 것을 질의, Query라고 한다.

 

  • SQL의 5계명
  1. 원칙적으로 로마자로 기술한다.
  2. 주석 및 ''(작은 따옴표) 안에는 한글을 쓸 수 있다.
  3. '를 표시할 때는 "로 한다.
    문자열 속에 '를 표시하고 싶을 때에는 '를 2번 연속해서 쓴다.
  4. 주석은 /* */ 안에 쓴다.
  5. 예약어에 주의 한다.
    예약어란 SQL에 있어서 특별한 의미를 갖는 키워드이다.

두번째 공지입니다.


 차근차근 여러분들을 팀블로그로 초대하고 있습니다.
 지금 대략 두분정도의 초대가 남았고, 초대되신분들의 응답을 기다리고 있습니다.
 교육장님에게 시그제안서를 제출하였고, 현명하신 교육장님의 좋은 응답이 있을 예정입니다.
 시그게시판이 생기겠지만 공지등의 활동내용은 블로그를 중심으로 활동할 예정입니다. 
 (그래도 공지사항 정도는 시그게시판을 활용할 생각입니다 ^^* )

 서두가 길었네요.
 공지입니다.


 1. 블로깅의 스타트를 일요일팀부터 시작할 예정입니다.
    이제부터 블로깅 하시면 됩니다. ^^, 단 본인의 주제에 맞도록 블로깅해주세요.

 2. 이 블로그에는 예약이라는 기능이 있습니다.
     글을 쓰시는 것은 일주일에 한번 어느때나 가능하지만,
     글을 올리는 시간은 예약으로 정해진 요일의 시간으로 등록해주세요 ^^

    (예) 나는 화요일 10시에 포스팅해야하는 사람.
          근데 화요일은 바쁘고 월요일에는 하루종일 놀아서 월요일에 글썼뜸,
          그래도 착한 나는 공개설정의 예약기능을 통해서 화요일 10시에 글을올림!! ㅋ

   -> 당일요일 11시에 포스팅을 확인합니다. 밀린거 예약으로 시간바꾸셔도 걸려요!!ㅋ
   -> 밀리면 벌금 5000원 (한달에 한번하는 회식에 사용됩니다 ㅋ)

 3. 말씀드린대로 포스팅의 내용은 멤버십 블로그에도 올리셔야 합니다.
    -> 이번주 내로 멤버십블로그에 글을 올릴 카테고리를 개설해달라고 말씀드리겠습니다.
    -> 교육장님이,운영자님이 강조하셨습니다!!
    -> 어렵지 않은일이고요,, 그냥 쭉긁어서 복사하시고 붙여넣기 하시면됩니다. ^^
    -> 밀리면 벌금 1000원 (한달에 한번하는 회식에 사용됩니다 ㅋ)

 4. 포스팅의 포멧이라든지 길이는 제한을 두지 않습니다 ^^*
    그래도 혹시몰라 예제로 저와 김대욱군이 올렸던 포스팅을 올려놓겠습니다.

 5. 포스팅중에 자신의 블로그 홍보하셔도 상관없습니다 ^^ 
   -> 김대욱군은 항상 자기를 홍보하는 표딱지를 붙이더군요 ㅋㅋ

 6. 이 블로그에 자신의 블로그의 링크를 달기를 원하시는 분은 리플달아주세요. 
    친절히 달아드립니다 ^^*

 7. 시그 메인사진을 공모중입니다. 굽신굽신, dal2iya@naver.com 
     공모된 내용이 없다면-_- 제맘대로 매일매일 여러분들의 섹멤사진을 걸어놓도록 하겠습니다 
     음하하하하하하하
 
 8. 카테고리 옆 이름은 첫 포스팅이 생기는 일요일부터 없애놓겠습니당!!

 9. 문의가 있으시면 언제든지 항상 접속되어있는 김지혜를 찾아주세요 -_-ㅋ 네이트에서 ㅋㅋ


쓰다보니 길어졌군요 ㄷㄷㄷ;;;
마지막으로 멤버십사람뿐 아니라 검색으로 찾아오시는 손님들도 보시는 글들입니다.
특히 운영자옵빠들이 꼭 확인하신답니다. 더불어 회장님은 RSS까지 신청해놓으셨다고 ㄷㄷㄷ

    멋진 포스팅을 기대합니다. ^^

 



이번 포스팅에서는 비트맵포멧의 구조를 알아보도록 하겠습니다.
보통은 DIB를 많이 사용하기 때문에 많은 포스팅에서는 DIB와 관련된 포멧구조만 설명하는 경향이있는데,
이번 포스팅에서는 저번포스팅에서 말씀드렸던 것처럼


DDB를 무시하고 넘어갈 수 없는 이유로 DDB의 구조와 DIB의 헤더구조를 알아보도록 하겠습니다.


일단,,
Bitmap 파일포멧은 다른 파일포멧(JPG,GIF 등등)들과 달리 압축을 수행하지 않으며
헤드가 있는 여러형식의 파일중에서 헤더구조가 가장 간단합니다.
(당연할 수 밖에 없지 않나요? 압축이 되면 된만큼 헤더에는 정보가 많아야 할 테니까요~)
어렵다고 느껴지시겠지만,, 이것으로 위안삼으세요-_ㅠ 힝


DDB () - 장치에 종속적인 비트맵

 typedef struct tagBITMAP
{
LONG bmType;                 // - bmType : 비트맵 타입;;  ( 보통 0을 가지고 있습니다.)
LONG bmWidth;                // - bmWidth : 이미지의 가로크기 
LONG bmHeight;               // - bmHeight : 이미지의 세로크기
LONG bmWidthBytes;        // - bmWidthBytes : bitmap 이미지의 한줄에 표현될 바이트 수, 
                                                                 (비트맵은 word단위로 표현되므로 항상 짝수)
WORD bmPlanes;             // - bmPlanes : 색상면의 개수
WORD bmBitsPixel;           // - bmBitsPixel : 한 픽셀에 필요한 비트의 수
LPVOID bmBits;                // - bmBits : 실제 비트맵 데이터를 가르키는 포인터
                                                        (단 bmBits 는 반드시 char배열,1바이트배열의 포인터)
} BITMAP;

이러한 DDB는  CreateBitmap()  함수를 통하여 쉽게 만들 수 있습니다.
이 함수는 간단하게 DDB를 만들어 주는데,
SelectObject()함수로 DC를 선택할때 CreateBitmap()함수는 속도가 느리기 때문에
성능적인 측면을 고려한다면 이 함수는 흑백비트맵을 만들때 주로 사용하고
만약 컬러비트맵을 만들고자 한다면 CreateCompatibleBitmap() 함수를 사용하는 것이 좋습니다.


1. CreateBitmap()함수를 살펴보자면

 HBITMAP CreateBitmap(int nWidth,int nHeight,UINT cPlanes,UINT cBitsPerPel,CONST VOID *lpvBits );

- 각각에 파라미터는 헤더정보에 들어가는 structer를 채우게되고 리턴값으로 DDB핸들이 리턴됩니다.

2. CreateCompatibleBitmap() 함수를 살펴봅시다.

 HBITMAP CreateCompatibleBitmap(HDC hdc,int nWidth,int nHeight );

- 주의해서 보셔야 할 부분은 디바이스컨텍스트를 파라미터로 받는다는 것인데, 바로 SelectObject()함수를
  이용하여 비트맵을 DC로 출력할 때 빠른속도를 내기 위해서입니다.
  또 디바이스컨텍스트와 픽셀포멧,생상수가 동일한 비트맵을 만들어줍니다.
- 나머지 두 인자는 이미지의 가로세로값을 초기화시켜줍니다.
- 단 이함수는 비트맵의 각 픽셀값은 초기화 되지 않으므로 일일히 초기화해주어야 하는 단점이 있습니다..



DIB () - 장치에 독립적인 비트맵

 파일헤드(BITMAPFILEHEADER)
 영상헤드(BITMAPINFOHEADER)
 팔레트정보(RGBQURD)
 영상데이터(거꾸로 들어있음)

DIB파일은 다음과 같은 구조로 이루어져 있습니다.
일단
1. 파일자체의 정보를 가지고 있는 파일헤드 (BITMAPFILEHEADER)
2. 비트맵 영상에 대한 크기나 흑백,컬러정보, 팔레트크기정보)등을 저장하기 위한 영상헤드 (BITMAPINFOHEADER)
3. 인덱스에 의한 컬러값을 저장하기위한 팔레트정보 (RGBQURD)
4. 이미지데이터 (거꾸로 들어있습니다.)
로 이루어져있습니다.

자세히 뜯어보면 이렇습니다.

1. BITMAPFILEHEADER - 파일 자체의 정보

 typedef struct tagBITMAPFILEHEADER
{
WORD bfType;            // - bfType : 비트맵파일인지 확인 (비트맵이라면. 반드시 BM (0x42,0x4d) )
DWORD bfSize;          // - bfSize : 비트맵 파일의 크기
WORD bfReserved1;   // - bfReserved1 : 예약되어 있는 값, 보통 0
WORD bfReserved2;   // - bfReserved2 : 예약되어 있는 값, 보통 0
DWORD bfOffBits;       // 실제 비트맵 데이터 값과 헤더의 오프셋 값 ( BITMAPFILEHEADER  + BITMAPINFO )
} BITMAPFILEHEADER;
 


2. BITMAPINFOHEADER - 비트맵 영상정보

 typedef struct tag BITMAPINFOHEADER
{
DWORD biSize;              // - biSize : BITMAPINFOHEADER 구조체의 크기
LONG biWidth;               // - biWidth : 비트맵의 가로픽셀의 수
LONG biHeight;              // - biHeight : 비트맵의 세로픽셀의 수
WORD biPlanes;            // - biPlanes : 장치에 있는 색상면의 개수 (반드시 1)
WORD biBitCount;           // - biBitCount : 한 픽셀을 표현할 수 있는 비트의 수
DWORD biCompression;  // - biCompression : 압축상태를 지정
                                    //   (BI_RGB : 압축되지 않은 비트맵,BI_RLE8 : 8bit압축 ,BI_RLE4 : 4bit압축 )
DWORD biSizeImage;      // - biSizeImage : 실제 이미지의 바이트크기 (압축되지 않은경우 0 )
LONG biXPelsPerMeter;  // - biXPelsPerMeter : 미터당 가로픽셀수
LONG biYPelsPerMeter;  // - biYPelsPerMeter : 미터당 세로픽셀수
DWORD biClrUsed;         // - biClrUsed  : 색상테이블의 색상중 실제 비트맵에서 사용되는 색상수
                                   // (0 : 비트맵은 사용할 수 있는 모든색상을 사용
                                   // , 그외 : RGBQUAD구조체배열의 크기는 이 멤버의 크기만큼 만들어짐)
DWORD biClrImportant;  // - iClrImportant : 비트맵을 출력하는데 필수적인 색상수 (0 : 모든 색상이 사용되어야함)

} BITMAPINFOHEADER;



3. RGBQUAD  - 인덱스의 컬러값

 typedef struct tag RGBQUAD
{
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;

} RGBQUAD;

-> 여기서 한가지 알아두어야 할 정보는 RGB 순서가아니라 BGR순서로 되어있다는 것이다 ㅋ
     rgbReserved는 그냥 예약된 숫자 ㅋ 큰 의미는 없다.



우선다음의GDI 함수를알아보고코드를살펴보자.

CreateCompatibleBitmap( ) 함수

HBITMAP CreateCompatibleBitmap(HDC hdc, int nWidth, int nHeight );

• 이 함수는디바이스 컨텍스트와 호환되는, 즉픽셀 포맷과 색 상수 등이 같은 비트맵을 만드는데 CreateBitmap( ) 함수처럼 비트맵 이미지 데이터를 초기화할 수는 없습니다. 단순히 가로와 세로 값정도만을 설정할 수 있습니다.
• 함수를사용한후에는반드시DeleteObject() 함수를 호출하여 Object를 삭제할 수 있어야 합니다. (안그러면 메모리-_ㅠ)
 
CreateCompatibleDC( ) 함수

HDC CreateCompatibleDC(HDC hdc );

• 이 함수는 장치의 디바이스 컨텍스트와 호환되는디바이스 컨텍스트, 즉 메모리디바이스 컨텍스트를만들어줍니다.
 비트맵을 디바이스 컨텍스트에 선택할 때 이 함수를 이용하여 메모리 dc를 만들어 선택합니다.
 사용한 후에 마찬가지로 반드시 DeleteDC() 함수를 호출하여 메모리누수가 없도록 방지합니다.
• hdc 인자로 null이면 기본으로  현재 디스플레이 화면의 디바이스컨텍스트와 호환되는 디바이스컨텍스트핸들을 반환합니다.

SelectObject () 함수

HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hgdiobj );

• 이 함수는 디바이스 컨텍스트에GDI 객체를선택할수 있게 합니다. GDI 객체란펜이나 브러시, 폰트, 비트맵 등을 말하는데 여기에서는 비트맵을 디바이스 컨텍스트에 선택하기 위해서 사용합니다. GDI 객체는반드시 디바이스 컨텍스트에 선택되어진후
사용되기때문에GDI 객체를사용할때에는반드시이 함수를사용해야된니다. 이함수를 사용하면 반환 값으로 선택되기 전의 GDI 객체가반환되는데이 값을 받아 두었다가 GDI 객체를사용한 후, 반드시 디바이스 컨텍스트에 이전 GDI 객체를 선택하게됩니다.
 

다음 포스팅에서는 비트맵 영상의 컬러표현에 대해서 알아보겠습니다.
 



 이번 포스팅부터 뒤에 몇몇 포스팅은 비트맵장치에 대해 다룰 예정입니다.

 비트맵이미지가 처음 소개된 곳은 의외라고 생각하 실진 모르겠지만 마이크로소프트가 윈도우를 제공하며
 처음 소개한 방식입니다. 아무래도 GUI형식의 os를 만들면서 화면에 출력되는 영상을 일일히 함수를 통하여
 그리는 것 보다  이미 그려진 그림을 뿌려주는 것이 속도면에서 훨씬 효율적이기에 개발된 포멧이 아닐까 싶습니다.
 
 비트맵은 말 그대로 Bit와 Map의 조화로 그림을 구성하는 픽셀정보가 2차원으로 저장되어 있습니다.
 (2차원배열) 그래서 비트맵이미지는 픽셀색상 , 이미지의 크기와 위치 해상도 정보를 헤더로 가지고있습니다.

 길게 한개에 몰아쓰는것보다 짧고 굵게 다루는것이 집중력과, 검색능률에 좋을듷하기도하궁,,
 헤더에 대한 정보는 다음 포스팅에 쓰기로하고
 어쩃든 이번시간에는 두가지 종류의 비트맵 DDB와 DIB의 차이에 대해서 다루도록할 생각입니다 오홍홍 ㅋ


 DDB ( Device Dependent Bitmap) 디바이스에 종속적인 비트맵


다음 그림은 window vista의 display setting과 관련된 메뉴의 캡쳐입니다. 

여기서 확인하셔야 하는것은 빨간 네모칸의 color부분,
비스타에서는 32bit의 Highest와 16bit  medium 두가지 설정이 있습니다. (xp는 조금 더 다양한 선택권이있는걸로 압니다.;;)

여기서 설정되는 color는 표현가능한 컬러의 수가 얼마나 되는가를 이야기 해 주는 것인데,, 
예를들어  16bit의 Medium을 선택하였다면,,
 216 = 65,536개의 색을 표현가능하다는 의미입니다.

DDB는 디바이스에 종속적인 비트맵으로 다시말하면 화면설정에 종속적인,, 화면설정에 따라서 표현이 달리되는 비트맵 이미지를 의미합니다.


예를 들어 a라는 그림이 32bit의 color설정이 되어있는 컴퓨터에서는 32bit의 그림으로 출력되고 
16bit의 color로 설정되어 있는 컴퓨터에서는 16bit의 그림으로 출력됩니다.
극단적으로 말씀드리면 , 흑백으로 설정되어있는 컴퓨터에서는 그림이 컬러이든 흑백이든 무조건 흑백으로 출력되고,
(그 그림은 컬러설정이 되어잇는 컴퓨터에서는 컬러로 보입니다)
컬러로 설정되어 있는 컴퓨터라면 그림이 흑백이든 컬러든 컬러로 출력된다는 의미입니다.
(그 그림은 흑백설정이 되어있는 컴퓨터에서는 흑백으로 보입니다.)

뭔가 의미가 이상하게 전달될 수도 있다 생각되는 이상한 의미긴하지만,, (그럴수밖에요,,이걸접할기회가적으니까요)
말 그대로 장치설정대로 출력되는 비트맵을 의미합니다.

이 비트맵은 bitmap을 출력하는데 필요한 모든정보를 header에 가지고 있지 않고
출력되는 컴퓨터 시스템의 디스플레이장치가가지고있는 부가적인 정보(팔레트, 픽셀포맷등)를 이용하여 출력하기 때문에
다른 종류의 디스플레이 장치에서는정확하게출력되지않는단점이 있습니다.
다만 장치의 정보와 일치하는 정보로 이미지를 출력하기 때문에 빠른속도로 이미지를 출력할 수 있는 장점이 있습니다.

이해가 안가신다면 개발자의 입장이 아니시라면,, 구지 이해하시려고 노력하실 필요 없습니다. 잘안쓰니까요-_-;;;
(앗 나만이해가 안갔던것인가-_-;;;;)


요약 - 화면설정에 종속적인 컬러표현


 DIB (Device Independedt Bitmap) 디바이스에 독립적인 비트맵

위와는 상대적인 개념으로 DIB는 화면설정이 32bit이든 16bit이든 상관없이, 나는 나나름대로 색을 표현할꺼야!!! 하는 비트맵이미지입니다. 우리가 쓰는 이미지들의 대부분은 DIB형식의 파일입니다.
이가 가능한 것은 Bitmap헤더에 bitmap을 출력하는데 필요한 모든 정보를 가지고 있기 때문에 가능합니다.
그래서, DDB와 반대로 어떠한 설정을 가진 장치에서 이미지를 출력하여 보더라도 동일한 이미지정보를 확인할 수있습니다.
즉 흑백이미지는 어느컴퓨터에서 보든 흑백이미지이고, 컬러이미지는 어느컴퓨터에서 보든 컬러라는 것입니다..

다만, DDB의 장점이였던 속도 문제가 여기서는 단점으로 꼽힐수있습니다.
만약 , 디스플레이 설정이 장치 독립적 비트맵의구성과 다르다면 적절한 픽셀 포맷의변환작업이 필요하고
팔레트에해당하는색상을 매핑시켜야하는 부담이 있어, 비트맵의 출력 속도가 떨어질수있는 단점이 있습니다.

하지만 하드웨어기술의 발달로 이정도 속도문제는 큰 문제가 되지 않아 DIB를 주로 사용하고 있습니다.

요약  - 화면설정에 독립적인 컬러표현,
        - 흑백영상은 시스템 설정이나 장치에 무관하게 흑백으로 나타나고 컬러영상은 항상 컬러로 나타남



 DIB가 최신의 기술이고 DIB를 많이 사용하고 있다고 하더라도,, DDB를 버려서는 안됩니다.

 1. 일단 속도면에서 DIB보다 DDB가 빠를 수 밖에 없습니다. 이게 아니더라도
 2. 결국은 DDB이기 때문입니다.   (디바이스 컨텍스트(Device Context)에 선택될 수있는비트맵은D D B뿐)
    즉, 결국은 디바이스에 종속되서 그림을 뿌려줘야하지 않겠습니까??
 3. 뿐만 아니라 프로그램내부에서의 생성과 파괴작업도 DDB가훨씬 효율적입니다.

 결국은 개발자라면 DIB와 DDB의 특징을 알아야 하며  서로 상호 변환할 줄도 알아야 한다고 생각합니다.
 


이번 포스팅에서는 간단히 DDB와 DIB에 대해서 다뤘습니다.
뭐 주저리 주저리 이래야한다 저래야한다 잔뜩말하긴했지만.. 그냥 이것이 무엇인가 하는 개념만 알고가시면 될 거같습니다.
DDB에 대해 설명이 아리까리해서 이상하다고 느껴져 골치아프시다면,,, 그냥 이해안하셔두됩니다 ㅋ
아까말씀드린것처럼 평소에 보지못했기 때문에 잘 이해가 안가는 것일수도 있으니까요~~

 다음 포스팅에서는 비트맵 포멧의 구조에 대해 다루겠습니다.

컴퓨터에 Image를 저장하기 위한 표준형식은 다양하게 존재합니다. ^^*

 간단하게 예를 들어 봐도
 용량이 쓸때없이 커서 사람들이 기피하는 Bitmap
 많은 사람들이 많이 사용하는 Jpg
 움직이는 그림을 저장할 때 많이 사용하는 gif
 그리고 들어본적 별로없는 raw  (사실 자주쓰는 이미지 뷰어인 알씨에서는 읽어내지못하는 포멧) 등등 까지해서,,

 이번포스팅에서는 다양한 이미지저장포멧에 대한 간단한 내용들을 다루겠스빈다.
 앞으로 써나가는 포스트들은 주로 Bitmap이나 raw형식의 파일만을 주로 다룰 예정이니,
 계속 포스팅을 보시는 분이라면 그부분에대해서 좀 더 자세히 보실 필요가 있습니다 ^^;
 (부족한다면 다른 좋은분의 포스팅을 찾아보는 것도 좋은 방법이지요...예예 ㅠㅠ)


 ======================================================================================================
 
  이미지 파일의 구조
 
 Header
 Image Data
Bitmap, jpg, gif등의 파일 형식
- Header와 Image Data를 가짐

  Image Data

raw파일 
-  Image Data만을 가짐

 ======================================================================================================

자주묻는질문,

1. Header에는 무슨정보가 들어가는가?
: 영상의 크기, 컬러의수, 펠리트 등의 다양한 정보들이 들어있습니다.
: 물론, 각 포멧에 따라 Header에 들어가는 정보들이 다르게 들어가있습니다.
   (다음 포스팅에서 기본적으로 Bitmap의 헤더에대해 포스팅하겠습니다.)
: 하지만 기본적으로 , 가로,세로,크기와 칼라정보등등 들이 들어가있습니다.
: 이미지를 출력할때 , 이 헤더 정보를 가지고 사용자의 정보입력이 없이 컴퓨터가 알아서
  그림을 알맞은 크기와 알맞은 색깔정보로 그림을 출력할 수 있다.

2. Raw 파일은 Header없이 어떻게 되는가??
: 엄밀히 말하자면 Raw파일에 반드시 헤더 정보가 없다 라고 할 수 없습니다.
  다만 헤더 정보가 없다 라고 이야기를 하는 이유는,, 
 1) 헤더정보가 이미지파일을 만드는 사용자의 임의로 넣고 싶은 정보를 넣는,, 즉 기본 포멧이 없습니다.
 2) 또 대부분의 Raw파일은 헤더파일이 없이 단순 이미지정보만 가지고 있습니다.
: 이미지를 출력할때는 반드시 필요한 정보가 있습니다. (예를들어, 아까 위에서말한 기본정보들)
  이러한 기본정보들은 헤더에 저장하는 편인데, Raw파일에는 헤더정보가 없습니다.
  그래서 사용자의 정보 입력이 없이는 raw파일을 출력할 수 가 없습니다.
  (그래서 알씨같은 이미지출력툴에서 raw파일을 출력할수 없습니다...;;)
  다만, 사용자가 이미지출력에 필요한 정보를 알고있다면 , 따로 정보를 입력하여 이미지를 출력할 수있습니다.
  (포토샵같은것을 이용하면 가능합니다 ^^*)
  (글고보니 포토샵은 이미지의 사이즈를 가지고 대략 가로세로를 예측해서 출력해주는 기능이있더군요 ㅋ)

3. JPG와 BMP, GIF파일은 무슨 차이가 있는가???

: 세 이미지 모두 헤더정보를 가지고있는 이미지 입니다. 하지만 이미지를 저장하는 방식의 차이가 있습니다.
 눈으로 확인해주세요.

 
BMP

 
JPG

GIF

(-_-,, 갓 20살때 셀카입니다.;; 우악)

 
 전문가나 민감하신분 아니면 큰 차이를 못느끼실테지만,,서도 ㅋ 

:   파일의 크기를 비교해보면 다음과 같습니다. 
  BMP : 242kb , JPG :  26.8kb , GIF : 43.2kb
  이같이 파일 사이즈에서 차이가 나는 이유는 파일의 압축률에 있습니다.
  이미지 정보를 저장하는 방법은 다양한데 , 한 픽셀의 색을 각값을가지고 표현하는 방법이 있는가하는반면(BMP)
  이미지에서 자주사용되는 색을 번호를 매겨 모아놓은 집합을 헤더파일에 저장하여놓고 
  이미지를 출력할때 팔레트에 대응하는 색을 출력하는 방법 등이 있습니다.
  이러한 여러가지 방 법을 통하여 이미지의 사이즈를 줄일 수 있는데,, 문제는 품질입니다.
  당연히 압축률이 거의없는 bmp파일은 사이즈가 큽니다. 그래서 웹에서는 잘 사용하지 않습니다.
  (다만 요새는 인터넷 업로드속도도 빠르고, 하드값도 싸져서인지,, 지원해주더라고요;;)
  어느정도 압축하되, 색정보를 잘 표현한것이 jpg이고 , 많은사람들이 기본적으로 사용하는 포멧입니다. ㅋ
  gif는 조금 더 압축한 것으로 사이즈가 더 작고, 움직이는 그림을 저장할 수있어 주로 베너같은 이미지에 사용됩니다.
 (다만-_-;; 이번은 워낙이미지가 작아서그런지 jpg보다 gif가 사이즈가 더 크게나왔네요 오홍홍;;;;;)
  각자 알맞은 포멧에 맞게 사용하는것이 좋겠지요,,,
 (BMP 최고화질, JPG 적절한 조화 , GIF 움직이는그림ㅋ)
:  물론 BMP파일을 JPG으로 변환하면 압축때문에 색손실이 있을수 있습니다.
   그렇다고,, JPG그림을 BMP로 바꾼다고 화질이 좋아지는것은 아닙니다. 
   압축되어 있는 정보에서 정보를 뽑아내기 때문에,, 쉽게말하면 JPG와 같은화질의 용량큰 BMP파일이 되는겁니다.;;





 사실 이미지 파일이라고 하면 엄청난 정보를 가지고 있을 것 같지만,, (나만그랬나;;;)
 컴퓨터가 가질 수 있는 정보가 0과 1인것을 생각하면 그냥 다른 파일들과 마찬가지로 하나의 정보들의 나열일 뿐
 너무 겁 먹을 필요가 없습니다. ^^*

 다음 포스팅부터 이것저것 많은걸 해보지요,,,,ㅋㅋ



안녕하세요. 이번 시간에는 지난 시간에 살펴보았었던 XAML Import와 Export와 관련된 내용이 약간 부족한 듯싶어서 활용 예제로 저장 및 불러오기 기능을 갖춘 간단한 그림 낙서장에 대한 구현 해보도록 하겠습니다.

그림을 보시면 아시겠지만 Clear, Save, Load라는 아주 간단한 구조로 되어있습니다. 자 이제 그럼 10줄 정도의 코딩만으로 위와 같은 기능을 하는 간단한 그림 메모장을 구현해보도록 하겠습니다. 먼저 기본적인 Application Layout을 구성하도록 하겠습니다. 그림을 그리는 부분에는 InkCanvas를 사용했으며 레이아웃 구성을 위해 StackPanel과 DockPanel을 사용했습니다.

<DockPanel LastChildFill="True">

<StackPanel Orientation="Horizontal" Height="30" DockPanel.Dock="Bottom" HorizontalAlignment="Right">

<Button Width="100" Content="Clear Ink" x:Name="BtnClear" Click="BtnClear_Click"/>

<Button Width="100" Content="Save Ink" x:Name="BtnSave" Click="BtnSave_Click"/>

<Button Width="100" Content="Load Ink" x:Name="BtnLoad" Click="BtnLoad_Click"/>

</StackPanel>

<InkCanvas x:Name="Canvas" />

</DockPanel>

DockPanel을 사용하여 InkCanvas와 Button을 포함하는 StackPanel을 배치 시켰고, StackPanel의 Orientation Property를 Horizontal로 설정하여 버튼들이 가로로 배치되도록 했습니다. 그리고 각각의 버튼의 Click Event를 생성해 주었습니다. 계속해서 각 버튼의 Event에 대한 내용의 코드를 살펴보겠습니다.

private void BtnSave_Click(object sender, RoutedEventArgs e)

{

File.WriteAllText("Ink.xaml", XamlWriter.Save(Canvas.Strokes));

}

private void BtnLoad_Click(object sender, RoutedEventArgs e)

{

Canvas.Strokes = (StrokeCollection)XamlReader.Load(File.OpenRead("Ink.xaml"));

}

private void BtnClear_Click(object sender, RoutedEventArgs e)

{

Canvas.Strokes.Clear();

}

함수 정의 부분을 빼곤 전부 한 줄 짜리 매우 간단한 코드입니다. 먼저 Save 버튼의 이벤트를 살펴보면, XamlWriter를 사용해 InkCanvas에 저장된 Stroke들을 문자열로 변환하고, System.IO Namespace에서 제공하는 File Class의 WriteAllText를 사용하여 StrokeCollection을 간단하게 Ink.xaml이란 파일에 기록했습니다. 그리고 Load 버튼의 이벤트는 File Class의 OpenRead메서드를 사용하여 File의 Stream을 가져오고 XamlReader를 사용해 StrokeCollection을 불러왔습니다. Clear 버튼을 눌렀을때에는 Strokes의 모든 내용을 지웠습니다.

비록 짧은 코드이고, 예외처리 하나도 없는 엉성한 코드이지만, 이 예제를 통하여 XAML Import 및 Export와 관련하여 쉽게 이해 하셨으면 하는 마음으로 준비해 봤습니다. 이와 관련된 질문은 메일이나 댓글 달아주세요~

사용자 삽입 이미지


첫 공지입니다.


 안녕하세요.
 가칭 주제없는 시그의 관리자 김지혜라고 합니다 (쿨럭;)

시그 내용 ; 크게 특별한 일은 없습니다. 
               평소에 공부하시던 내용이나 알고계신내용을
               일주일에 한번(혹은 그 이상) 포스팅 해주시면 됩니다 ^^

시그원 & 주제
 
 시그원 주제  블로깅 요일 
 이슬희  GTK+   월요일 오후 10시
 박진영  Hardware Basic    월요일 오후 10시
 서상원  Sytem Software   월요일 오후 10시
 차주민  RIA using Air    화요일 오후 10시
 최동혁  MSRDS   화요일 오후 10시
 김대욱  Advanced WPF   화요일 오후 10시
 이호성  FPGA 이론 & 실습   수요일 오후 10시
 박상용  MFC   수요일 오후 10시
 전한경  Unix 시스템 보안    수요일 오후 10시
 조일용  알고리즘코딩기법    목요일 오후 10시
 정성문  .net Framework    목요일 오후 10시
 정정아  효과적인 DB 설계   목요일 오후 10시
 박은병  Virtual Machine   금요일 오후 10시
 박윤성  Machine Learning    금요일 오후 10시
 유광현  Code Convention    금요일 오후 10시
 채은석  Design Life    일요일 오후 10시
 심형남  컴퓨터구조    일요일 오후 10시
 김지혜  Image Processing    토요일 오후 10시
(// 쳐있는 내용은 좀 더 의논이 필요하다고 생각되는 주제입니다. )

알림사항)
1) 토요일은 노는날입니다.
2) 요일정해진 순서는 제.맘.대.로. 신청순서대로 월화수목금일 짤랐습니다.;;
3) 여기에 정해진 날 오후 11시에 포스팅확인합니다. 
4) 포스팅의 질적인면이나 양적인 면은 개.인.의. 양심에 맡기도록 하겠습니다.
5) 11시까지 등록되지 않은 포스팅은 벌금 5000원입니다. ^^
6) 모인 벌금은 회식에 사용됩니다.



  현재 제목으로 걸려있는 내용과  URL은  블로그개설을 위해 임시로 넣어둔 것입니다.
 시그명이 정해진 다음에 고쳐질 예정입니다. ^^ (이상한 URL로 안할끄에요 ㅠ)
 
  또한, 카테고리 옆에 이름은 시그가 좀 정리된 다음에 수정예정입니다.
 
  하나 더, 아직 이 블로그가 깔끔하게 정리되었다고 볼 수 없네요, 
  주제면이라든지 혹은 요일을 바꿔달라는 요청사항을 일주일 받겠습니다 ^^

 마지막으로-_ㅠ
 부족한 관리자지만, 좋은 레퍼런스가되어 우리를 비롯하여 많은 사람들에게 도움이  
 될 수 있는 좋은 팀 블로그가 됬으면하는 바람입니다. 좋게봐주세요 ^^* 
 

 
p.s 아 참, 시그 개설을 하고 모든분들이 팀블로그에 가입하신뒤에부터
     포스팅을 시작하겠습니다 ㅋ 다음주로 예상됩니다.. 미리미리 블로깅 내용을
     생각하시는것도 좋을 듯 합니다 ^^;;