전체 글: 218개의 글

구글 엔지니어가 여가시간에 만든 스마트 거울

by Blogger 하얀쿠아
2016. 2. 3. 13:50 NULL ptr/ NULL ptr

구글 엔지니어가 여가시간에 만든 스마트 거울


2017년 CES에서 거대한 터치 스크린을 가진 삼성의 새로운 냉장고와 같은 사물의 인터넷에 대한 다소 별난 아이디어를 봤다.

그리고 사람은 스마트 오브젝트의 새시대인 지금, 다양한 것들을 원한다.


그래서 Google의 소프트웨어 엔지니어 인 Max Braun이 만든 이, 우아한 스마트 거울이 정말 흥분되는 이유이기도 하다.

이걸 보면, 아마 당신도 바로 지금 집에서 실제로 사용해보길 원할것 같다.


Max Braun은 자신의 프로젝트 결과를 매체에 올렸고, 사진은 상당히 비현실적으로 보였다..

날씨, 시간 및 주요 헤드 라인을 한 눈에 볼 수있는 것, 그리고 동일한 정보를 Android 휴대 전화에서 공유 할 수 있다.


그러나 이런 정보들은 욕실 거울에서 보여지는게 꽤나 말이 된다.



Bathroom Smart Mirror



Bathroom Smart Mirror


현재 이 스마트 거울의 UI는 뉴스와 날씨를위한 Android API 덕분에 자동으로 업데이트되며, Google 모바일 앱의 음성 검색 기능으로 질문을 들을 수도 있다고 한다.

잘만 진행된다면 다음 CES에서 이와 같은 아이디어를 더 많이 볼 수 있을것 같다.










출처 : https://medium.com/@maxbraun/my-bathroom-mirror-is-smarter-than-yours-94b21c6671ba

출처 : http://www.theverge.com/2016/2/2/10898176/diy-idea-weather-mirror-tv-android-google

이 댓글을 비밀 댓글로

Torrent의 원리

by Blogger 하얀쿠아
2016. 2. 3. 00:45 소프트웨어 Note

1. BitTorrent ?


-  P2P 방식의 파일 공유 프로토콜로서, 파일을 여러개의 조각으로 나누어 서로 공유함

- 브램 코헨이라는 사람이 창안하여, BitTorrent 회사를 창립하고 이를 통해 유지보수하고 오픈소스로 배포함

- 전세계 네트워크 사용량을 보면, 동영상 스트리밍이 1위이고 2위가 P2P 이며, P2P 트래픽의 90%를 BitTorrent가 차지함.

- 클라이언트의 종류로는 BitTorrent, μTorrent 가 있음.



2.BitTorrent 의 동작 개요도와 용어설명



1) Piece

- 공유 파일의 한조각 의미함

토렌트는 하나 파일을 여러개의 조각으로 나누고, 조각단위로 공유함

조각의 크기는 토렌트 생성시 설정할 수 있음

 

2) Seeder : 공유 파일의 모든 조각을 가지고 있는 클라이언트

 

3) Leecher : 공유 파일의 일부 조각만 가지고 있는 클라이언트

 

4) Peer : Seeder 와 Leecher 를 총칭

 

5) Tracker

- 파일 공유를 위한 피어들의 정보를 가지고 있는 서버.

- 토렌트가 오픈소스이기 때문에, 관련 지식이 있다면 누구나 트래커 서버를 개설, 운영할 수 있음.

- 토렌트 파일마다 Tracker 를 여러개 가지고 있을수 있고, 

유명한 트래커 일수록 많은 피어들이 있을수 있음. 피어들이 많다는 건 속도가 높다는 걸 의미 함

- 구글 검색만으로도 전세계적으로 유명한 트래커 서버주소들을 알 수 있음.

- 일반적으로 비공개 토렌트 집단들은 하나의 비공개 Tracker 서버를 통해서 이뤄지는 것이며,

비공개 Tracker 서버에 접속하는 클라이언트의 각종 정보(대표적으로 해당사용자가 얼마나 업로드를 했고, 다운로드를 했는지에 대한 정보)들을 이용하여, 운영 규칙에 맞지 않는 사용자들을 필터링함.

 

6) Swarm

- 트래커가 가지고 있는 것으로, 

- 공유 파일마다의 Hash(고유식별자) 정보와 피어 리스트의 정보 모음. 

- 다시말해서, 현재 해당 파일을 공유하고 있다고 Track서버 등록되어 있는 있는 피어들을 목록을 의미함.

- 이를 기반으로 Tracker 에게 접속하는 client들에게 peer 목록을 전송해줌.

 

7) Torrent File

- 토렌트에 대한 기본 정보를 가지고 있는 메타 파일

- 파일 구조

Name

 Parameter

 Description

 Torrent

 File name

 토렌트 파일 이름 (A.torrent)

 Info Hash

 공유하는 파일의 고유한 Hash 값

 Tracker

 Tracker URL

 트래커의 주소

 여러개 포함 가능

 Meta Data

 Directory

 토렌트 파일이 저장되는 디렉토리 이름

 Created On

 생성 일자 시간

 Created By

 생성자 정보

 Comment

 생성자가 작성한 설명

 Piece Length

 공유에 사용할 파일 조각의 크기

 Files

 File name

 공유하는 실제 파일 이름

 



3.BitTorrent 동작 원리와 절차



1) 토렌트 시작

- 토렌트 파일을 실행하여 클라이언트에 등록

- 해당 토렌트 파일에 명시 된 Tracker 들에 접속 시도

 

2) Peer와 Tracker 간 통신 - Tracker Request (Http 프로토콜 이용)

- 클라이언트가 Tracker에게 해당 토렌트파일의 고유한 Hash 값과 본인 peer의 정보를 전송함.

  (해당 토렌토의 피어 목록을 얻기 위한 목적)

- Tracker Request Parameter : 클라이언트가 Tracker 에게 요청할때, 보내는 데이터들

 Parameter

 Description 

 info_hash

 토렌트 파일에 포함된 공유 파일의 Hash 정보 

 peer_id

 클라이언트를 식별하기 위한 ID 

 port

 Tracker Response 메시지에서 사용되는 클라이언트 TCP/UDP port 

 upload

 클라이언트가 업로드한 공유 파일의 총계 (byte) 

 download

 클라이언트가 다운로드한 공유 파일의 총계 (byte)

 left

 다운로드 받을 파일의 남은 크기 (byte) 

 key (option)

 클라이언트 IP 주소가 변경되더라도 클라이언트를 인식할 수 있는 비공개 값 (peer 들간에 공유 되지 않음) 

 numwant (option)

 몇 개의 Peer 들의 정볼르 받을 것인지 요청 (기본 50) 

 compact 

 Set 1: Peer 들의 IP주소와 Port 정보 만을 받음

 Set 2: IP 주소와 Port 외에 Peer-ID 등의 정보를 받음

 no_peer_id

 Peer-ID는 생략하고 정보를 요청 ( compact = 1 경우 무시 ) 

 event

 Started: 파일 전송 시작 상태

 Stopped: 파일 전송 중지 상태

 Completed: 파일 전송 완료 상태

 ip (option)

 클라이언트의 IP 주소 

 

 

 

3) Peer와 Tracker 간 통신 -  Tracker Response (Http 프로토콜 이용)

- Tracker Request 를 받은 Tracker는 해당 토렌트의 Hash 값을 참조하여, Swarm 이 존재하는지 검색.

- 존재 한다면, Swarm에 포함된 Peer들을 목록으로 만들어 클라이언트에게 전송함.

Peer 목록의 개수 Tracker Request 에서의 numwant에 의해 결정되고, (기본 50)

이때, 선정되는 Peer들은 순수하게 랜덤으로 선정됨.

- 존재 하지 않는다면, Swarm 을 새로 생성하고 다른 Peer 들로부터 Tracker Request 이 있을때까지 대기함.

- Swarm 은 앞서 설명한 것처럼 Peer 들이 토렌트 시작시 전송한 Tracker Request 에 의해 목록이 생성되어 관리됨.

- Tracker Response Parameter : Tracker 가 클라이언트에게 응답할때, 보내는 데이터들

 Parameter

 Description

 complete

 현재 파일의 공유하고 있는 Seeder들의 개수

 downloaded

 해당 공유 파일의 다운로드 완료 횟수 

 incomplete

 현재 파일을 받고 있는 Leecher들의 개수 

 interval

 클라이언트가 Tracker Request 를 전송하는 간격의 시간(초)

 min interval (option)

 interval 의 최소시간(초) 

 peers

 Peer의 IP 주소 리스트 

 

※ Peer 목록을 결정할 때의 문제점

- 사실 토렌트의 가장 큰 단점이라 할 수 있음.

- Tracker 가 Peer 목록을 결정할 때, 현재 네트워크망의 트래픽과 피어간의 거리 등을 고려하지 않고 완전 랜덤으로 결정됨.

다시 말해, 피어가 네트워크망 내에 가까이 있음에도 불구하고 먼 지역, 다른 나라의 피어를 목록으로 만드는 경우가 발생함.

이는 네트워크 상의 엄청난 효율성 문제를 야기함. 

첫번째로 당연히 파일 공유 속도의 저하 발생.

두전째로는 다른 나라의 네트워크망과 연결될 때, ISP 사업자(LG, SK, KT)는 추가적인 금전적 비용이 발생함. (일반 사용자들의 추가적인 금전적 비용 발생은 없음) 그래서 ISP 사업자들이 토렌트를 굉장히 싫어할 것임.

이를 해결하기 위해 피어의 네트워크를 위치를 기반으로 하는 P4P 라는 기술을 개발함. Tracker 서버와 Torrent 클라이언트가 ISP 사업자들에게 피어들의 네트워크 위치를 요청하고 이를 기반으로 목록을 작성한다는 것임. 

하지만 비영리, 비공개적으로 Trakcer 서버를 운영하는 운영자들이 ISP 사업자들과 협력한다는게 가능할지는 미지수.

 

 4) Peer간 통신 - 세션 연결

- 트래커와 통신에 의해 피어의 목록을 받은 클라이언트는 해당 피어들에게 Hash, 본인 Peer Id를 전송하여 연결 가능여부를 파악

- Hash 를 받은 Peer 는 본인이 연결 가능하다면, Hash, 본인의 Peer Id 를 전송하여 응답.

- 서로 Hash 를 주고 받으면 세션이 연결되고 파일 전송을 준비함.

- Peer 의 수에 따라, 여러개의 세션이 연결됨.

- Peer 간 사용되는 BitTorrent 메시지 종류 

 Message

 Description

 Keep-alive

 대상 Peer가 on-line 상태인지 체크 

 Choke

 Request 를 받아도 응답 할 수 없는 상태임을 알림 

 Unchoke

 Choke 상태를 해지하였다고 알림

 Have

 자신이 가지고 있는 Piece 의 정보를 Peer들에게 알림

 Request

 받고자 하는 Piece 의 index 와 Offset 정보를 대상 Peer 에게 알림

 Piece

 실제 Piece(파일데이터)와 index, Offset 이 포함된 메시지 

 

7) Peer간 통신 - Piece 전송

- 세션 연결에 성공한 Peer는 서로 자신이 보유한 파일의 Piece 정보를 전송함.

- 클라이언트는 Peer들에게 받은 Piece 정보를 토대로 자신이 필요한 Piece 를 요청하고 해당 Peer로 부터 Piece 다운로드함.

 

6) Peer간 통신 - Piece 다운로드 완료

- 클라이언트는 해당 Piece를 다운로드 완료하면, 다른 Peer들에게 자신이 해당 Piece 를 보유하고 있다는 정보를 전송함으로써, 해당 Piece 를 보유하고 있지 않는 Peer 들을 자신에게 다운로드 받도록 유도함.

 

8) 모든 Piece 다운로드 완료

- 클라이언트는 모든 Piece 를 다운로드 받으면 해당 토렌트를 Reecher에서 Seeder 로 변경하고 업로드를 대기함.


참조 : http://www.netmanias.com/ko/?m=view&id=techdocs&no=5185

이 댓글을 비밀 댓글로

[Mac OS] Eclipse로 맥에서 C/C++ 개발환경 만들기

by Blogger 하얀쿠아
2016. 1. 16. 09:36 소프트웨어 Note


맥에 Eclipse로 C/C++ 개발환경 만들기






이 부분은 간단하다.

맥에서 java가 실행될 수 있도록 JDK, 혹은 JRE를 맥에 설치한다.

그 후 '이클립스 CDT'를 설치 한다.

기본적으로 맥에서는 gcc를 제공하지 않지만

맥의 XCode에서 llvm을 gcc라는 이름으로 연결해서(심볼릭 링크인가..?) 사용하는것 같다.

그래서 이클립스 CDT 에서도 컴파일 및 실행은 된다.


그러나 디버깅이 안된다.

즉, break point 찍고, line by line으로 실행하는 등등의 기능이 안된다는 얘기.

이유는 이클립스CDT는 디버거로써 'gdb' 라는 것을 사용하는데, 이 gdb가 mac에는 없기 때문인 것 같다.


맥에 GDB설치하기

찾아보니 맥에 gdb를 설치하는 방법이 있다.

아래방법은, OSX mavericks 버전에 gdb를 설치한 방법인데, 내용을 참고하면 좋을 것 같다.

http://ntraft.com/installing-gdb-on-os-x-mavericks/


결론적으로 위 글에서는 homebrew 혹은 macports 를 이용하여 gdb를 설치하고 사용하는 방법을 안내하고 있다.

이 둘은 apple에서 기본제공하지도 않고 관리하지도 않는 패키지를 맥 용으로 제공하는 '패키지관리자' 격이다.

나는  homebrew를 이용했다. (어떻게 읽는거냐.. 홈브루? 홈브뤼? 홈브리우?)


Link to Homebrew : http://brew.sh/index_ko.html


혹은 맥의 디버거인 LLDB를 이클립스CDT에 연결할 방법이 있을지도 모르겠다. (이건 찾는 중)


기타 개발도구 설치하기

그리고.. 이건 애플developer사이트.

커맨드라인 개발자 툴 등을 다운로드 받을 수 있다.

참고로 Apple ID로 로그인 필요하다.


Apple Developer Homepage : https://developer.apple.com/downloads/



아래 글은... 이미 나와같은 시도를 했던 다른 개발자의 기록인 듯...

http://gongspace.tistory.com/13


이 댓글을 비밀 댓글로

[Panda Board-es] Trouble shooting: booting에 문제가 있음.

by Blogger 하얀쿠아
2015. 5. 30. 02:15 소프트웨어 Note/Embedded Linux

3년전 구입해 가지고 있던 Pandaboard-es에 안드로이드를 올려서 가지고 놀아보고자, 다시 꺼내었다.

SD카드 파티셔닝/포맷 후에 u-boot와 MLO를 넣고 booting 시도했으나 실패.

serial연결해도 booting log조차 출력되지 않는 상황이었다.


오랫동안 사용하지 않은 보드의 H/W 적인 문제가 아닌가 고민하다가 pandaboard.org 에서 검색해보니 아래와 같이 H/W의 문제인지 아닌지를 판단할 수 있도록 pre-built 된 u-boot이미지, MLO, 그리고 kernel을 제공하고 있었다.


또한 제공된 이미지 안에 H/W test를 위한 쉘스크립트가 '/bin' 아래에 'panda-test.sh' 라는 이름으로 함께 제공되고 있어서 실행만 하면 다음 항목들에 대해 간단히 정상동작 유무를 확인 가능했다.

참고로 9번 WLAN은 manual test 를 해야한다.


Test Case List


  1. Framebuffer
  2. Display
  3. Audio Out
  4. HDMI Audio
  5. LED1&2
  6. USB Thumb Drive RW test
  7. EHCI
  8. LAN9514
  9. WLAN (802.11 b/g/n)



아래는 pandabaord-es 가 정상적으로 부팅되지 않는 상황에서 시도해 볼 수 있는 조치이다.


준비물

1. 테스트 환경 부팅이미지 (validation.img)

2. Win32DisImager (호스트 머신이 윈도우 환경인 경우만)


Reformatting an SD Card


Often users tend to incorrectly format an SD card and end up with a bad SD card. In this situation, we recommend that you use a new SD card and reformat the card. Review "How to format your SD card" for instructions. Then try to load your binaries again and see if that solves your problem.


Validation Environment


If you suspect your PandaBoard / PandaBoard ES has a hardware issue. You can use the following validation environment to run a set of testcases on the board. These tests must be run before you submit a RMA form also.


Download the validation environment, install and boot it on your working SD card using below instructions:


1. Write the downloaded validation environment (validation.img file) to your SD card by following below instructions:


On Windows machine:

use Win32DiskImager(다운로드) application to write the validation.img.

Make sure you have correctly mapped drive for the SD Card.


On Linux:

Place the SD card at your host computer.

Make sure the SD card is not mounted (just umount it if needed)

Identify the correct raw device name (like /dev/sde - not /dev/sde1)

Run the following command to write it:

       sudo sh -c 'cat ./validation.img | dd bs=4M of=/dev/sde ; sync'

Warning: Some people have reported issues with this method. If this doesn't work, try the following commands:


       sudo dd bs=4M if=validation.img of=/dev/sde

        sync


2. Now boot the board with the sdcard and it should display output from the serial port.


3. Once at the linux prompt cd to "bin" directory and run the panda-test.sh.


NOTES:

You will need to connect a set of speakers/headphones and a USB thumb drive to your PandaBoard before booting the board.

Depending on your display you may or may not hear the HDMI audio test.

All testcases (except WLAN) are automatically run and results displayed on serial console.

You need to manually run the WLAN testcase (see video below on how to do it)

You can review the video and compare your results.


원본 출처 링크 : http://pandaboard.org/content/resources/troubleshooting



잘 모르겠다면, 아래 영상을 참고하자.




아래는 pandaboard-es를 제공된 이미지로 부팅할 때 serial을 통해서 보여지는 부팅로그 이다.

Texas Instruments X-Loader 1.41 (Sep 29 2011 - 10:43:53)
OMAP4460: 1.2 GHz capable SOM
mmc read: Invalid size
Starting OS Bootloader from MMC/SD1 ...


U-Boot 1.1.4-gc1cd80bc-dirty (Oct 12 2011 - 17:56:27)

Load address: 0x80e80000
DRAM:  1024 MB
Flash:  0 kB
Using default environment

In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0
mmc read: Invalid size

4020344 bytes read
## Booting image at 82000000 ...
   Image Name:   Linux-3.0.4+
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    4020280 Bytes =  3.8 MB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.




이 댓글을 비밀 댓글로

TiddlyWiki : DB와 설치가 필요없는 간단한 one file 위키

by Blogger 하얀쿠아
2015. 1. 2. 21:51 소프트웨어 Note

위키 'Wiki' 는 특정 내용을 '정보'로서 정리하고, 나중에 다시 찾아보고, 다른사람과 공유하기에 좋은 수단 인 것 같다.

나도 개인적으로 위키를 활용해 정보들을 정리를 하고 싶어서 어떤 위키시스템을 사용할 것인지를 찾아봤었다. 그러나 설치가 복잡하거나 Database 가 필요하거나, 서버가 필요하다 등등 진입장벽으로 작용할 만한 내용들이 다수 존재 한다고 생각했었다.


그러나 내가 진입장벽이라고 여겼던 것들이 전혀 없는 아래와 같은 것이 존재했다.


http://tiddlywiki.com/

이 댓글을 비밀 댓글로

The Expert (Short Comedy Sketch) : 개발자, 프로젝트 매니저 그리고 UX담당자와 클라이언트

by Blogger 하얀쿠아
2015. 1. 2. 21:27 소프트웨어 Note

이것은 IT개발 현장에서 흔히 발생하는 일을 한편의 짧은 코미디로 표현한 영상입니다.

저는 IT개발현장에서 일하는 한명의 불쌍한 개발자입니다. 이 영상의 내용에 매우 격하게 공감을 하게 되네요.

이 영상을 보시면 아시겠지만, 영상에서 말하는 'The Expert' 어떤 프로젝트를 맡아서 구현하는 '실무자' 를 말합니다.


부제는 ' 개발자 암걸리는 이야기' 쯤이 될 것 같네요.


각설하고, 영상을 한번 보시죠!

Setting 에서 '한국어' 선택하시고 cc버튼으로 자막 켜기 하시면  한글 자막을 볼 수 있으니 내용 파악은 간단할 거에요!




출처 : https://www.youtube.com/watch?v=BKorP55Aqvg#action=share

이 댓글을 비밀 댓글로

ASLR : Address space layout randomization

by Blogger 하얀쿠아
2014. 12. 4. 18:12 소프트웨어 Note/Compiler

Address space layout randomiztion(ASLR)은 buffer overflow 공격으로부터 보호하기 위한 컴퓨터 보안 기술이다.

이 내용의 실제 구현 까지는 상당히 많은 dependency를 가지는데, Processor architecture, OS(kernel implementation), compiler, debugger, linker(loader) 등등이 상호 조화를 이루어 구현이 된다.


참고 : http://stackoverflow.com/questions/2463150/fpie-position-independent-executable-option-gcc-ld

참고 : http://en.wikipedia.org/wiki/Address_space_layout_randomization

참고 : http://en.wikipedia.org/wiki/Position-independent_code

참고 : http://www.openbsd.org/papers/nycbsdcon08-pie/index.html

'소프트웨어 Note > Compiler' 카테고리의 다른 글

ASLR : Address space layout randomization  (0) 2014.12.04
Register Allocation  (0) 2011.12.17
이 댓글을 비밀 댓글로

[mysql] Data Type

by Blogger 하얀쿠아
2014. 5. 4. 02:22 소프트웨어 Note/데이터베이스

MySQL Column Type

 

컬럼(Column)은 데이타 베이스를 이루는 가장 작은 단위이다. 컬럼들이 모여서 레코드(Record)를 이루고, 레코들들이 모여서 테이블(Table)이 된다. 테이블이 모여서 데이타 베이스를 이루게 된다. 즉, 데이타 베이스를 데이타들의 계층적 구조라고 말한다. 

TINYINT

부호있는 수는 -128에서 127까지, 부호 없는 수는 0에서 255까지 표현할 수 있다. 1 바이트

※디폴트는 부호있는거(SIGNED),  UNSIGNED를 붙이면 부호없는것~


SMALLINT

부호있는 수는 -32768에서 32767까지, 부호 없는 수는 0에서 65535까지 표현할 수 있다. 2 바이트

※디폴트는 부호있는거(SIGNED),  UNSIGNED를 붙이면 부호없는것~


MEDIUMINT

부호있는 수는 -8388608부터 8388607까지, 부호없는 수는 0에서 16777215까지의 수를 표현할 수 있다. 3 바이트

※디폴트는 부호있는거(SIGNED),  UNSIGNED를 붙이면 부호없는것~


INT [unsigned]

부호있는 수는 -2147483648부터 2147483647까지, 부호없는 수는 0에서 4294967295까지의 수를 표현할 수 있다[unsigned]. 4 바이트

※디폴트는 부호있는거(SIGNED),  UNSIGNED를 붙이면 부호없는것~

 

※ zerofill를 이용하면 남는 공간 0으로 채우기가 가능하다.

※ int형 선언시 (숫자)를 안써주면 int(11)가 디폴트로 되며 int(숫자)는 자릿수 제한이

아닙니다.

int(5)와 int(11)는 데이타크기가 같으며 입력하는 가격 범위도 같습니다.다른점은

int데이타형 뒤에 zerofill 을 붙여주면 int형뒤에 숫자보다 자릿수가 작으면 0으로 자동으로

채워진다.같거나 크면 당연히 안채워진다. zerofill을 사용했을때 최대 자릿수는 10이다.

 

※ int 키워드 뒤에 괄호안 숫자는 제한이 없습니다. 테이블 생성시 zerofill 키워드를 사용하게

되면 해당 괄호안에 숫자만큼의 선행제로 처리가 되어 출력됩니다.

 

INTEGER

INT와 같다.

 

BIGINT

부호있는 수는 -9223372036854775808부터 9223372036854775807까지의 수를 표현할 수 있고, 부호없는 수는 0부터 18446744073709551615까지 표현할 수 있다. 8바이트


FLOAT

단일 정밀도를 가진 부동 소수점을 나타낸다. 언제나 부호 있는 수이고, -3.402823466E+38부터 3.402823466E+38까지의 수를 표현할 수 있다.

 

※ mysql,에서의 float는 실수를 저장하는 데이타형입니다.

하지만 1.11이나 1.23은 잘들어가지는데 1.00이나 1.10 같은 마지막 0은 들어가지지 않습니다.

왜냐하면 자동으로 0은 절삭됩니다. 하지만 table생성시 float가 아닌 float(5,2)로 주면 소수점2자리까지만 입력이 되며 빈공간은 0으로 채워집니다.

앞에것은 잘 모르겠지만 뒤에꺼는 필수 소수점자리입니다. 빈공간은 0으로 자동으로 채워집니다.

 

DOUBLE

2배 정밀도를 가진 부동 소수점 수이다. 언제나 부호있는 수이고, -1.79769313486231517E+308부터 1.7976931348623157E+308까지의
수를 표현할 수 있다.


DATE

날짜를 표현하는 타입으로 '1000-01-01'부터 '9999-12-31'까지를 나타낼 수 있다. 3 바이트


DATETIME

날짜와 시간을 같이 나타내는 타입이다. '1000-01-01 00:00:00'부터 '9999-12-31 23:59:59'까지 나타낼 수 있다. 8 바이트


TIMESTAMP

'1970-01-01 00:00:00'부터 2037년까지 나타낼 수 있다. 4 바이트


TIME

시간을 나타낸다. '-839:59:59'부터 '838:59:59'까지 나타낼 수 있다.


YEAR

년도를 나타낸다. 1901년부터 2155년, 0000년을 나타낼 수 있다.


CHAR(M)

고정 길이를 갖는 문자열을 저장할 수 있다. M은 1부터255까지이다.M이 20이면 20개의

문자를 저장할 수 있다.

※ binary옵션을 붙일시 대소문자를 구분합니다.

 

VARCHAR(M)

CHAR는 고정길이인 반면 VARCHAR는 가변 길이이다. 예를 들어 VARCHAR(20)인 컬럼에

10자만 저장을 하면, 실제로도 10자 만큼을 기억장소를 차지한다. 하지만, CHAR는 나머지

10자를 공백으로 매꾼다.최대 255자까지 저장가능

※ binary옵션을 붙일시 대소문자를 구분합니다.

 

TINYTEXT

255개의 문자를 저장할 수 있다.

 

ENUM('value1','value2')

65,535개의 문자를 선택하여 대입할수있다. value에서 지정하지 않은 값은 에러는 안나나 공백으로 들어가진다.

※ binary옵션을 붙일시 대소문자를 구분합니다.

※ 데이타 크기 : 2 바이트

 

TEXT (텍스트 파일)

65,535개의 문자를 저장할 수 있다.

※ binary 옵션을 기재하면 검색시 소문자를 구분합니다.

※ TEXT데이타형은 default 예약어 사용 못함


MEDIUMTEXT (텍스트 파일)

16,777,215개의 문자를 저장할수 있다.

데이타크기 : 3바이트


LONGTEXT (텍스트파일)

4,294,967,295개의 문자를 저장할수 있다.

데이타크기 : 4바이트

 

BLOB(이진 파일)

65535개의 문자를 저장할 수 있다. BLOB은 BINARY LARGE OBJECT의 약자이다.

일반문자열이 아닌 멀티미디어파일(이미지,영상등)을 넣을때 사용하는 컬럼입니다.

ex : 많이 사용하지 않는다.

 

(TEXT : blob의 차이) blob : binary large object

0.text나 blob는 둘다 default를 사용못한다.

1.TEXT는 대소문자 안가린다. BLOB는 대소문자 가린다.

2.제한크기보다 작은 크기를 입력해도 둘다 공백이 제거되지 않고 공백도 다같이 저장된다. varchar개념이 아닌 char개념이다.

3.테이블이아닌 다른 영역에 저장된다. 적당히 사용하자

4.INDEX생성이 불가능하다.괜히 모르고 했다가는 용량만 커지고 index는 절대 안탄다. FULLTEXT를 이용한다.

 

MEDIUMBLOB

16777215개의 문자를 저장할 수 있다.

일반text가 아닌 멀티미디어파일을 넣을때 사용하는 컬럼입니다.

ex : 많이 사용하지 않는다.

 

MEDIUMTEXT

TEXT형에 저장되지 않는 큰문자열은 MEDIUMTEXT형을 사용한다.

16,777,215개의 문자를 저장할 수 있다.

ex : alter table zet_blog_data modify content MEDIUMTEXT;

 

LONGBLOB

4294967295(4기가)개의 문자를 저장할 수 있다.

일반text가 아닌 멀티미디어파일을 넣을때 사용하는 컬럼입니다.

ex : 많이 사용하지 않는다.

 

LONGTEXT

4,294,967,295(4기가)개의 문자를 저장할 수 있다.


출처 : http://zetswing.com/bbs/board.php?bo_table=MySQL_LEC&wr_id=1&page=2

'소프트웨어 Note > 데이터베이스' 카테고리의 다른 글

[mysql] Data Type  (0) 2014.05.04
[mysql] 암/복호화  (0) 2011.04.16
이 댓글을 비밀 댓글로