IT트렌드 2010

Talks 2010. 2. 5. 10:44


 올해의 IT트렌드는 머가 될까라는 질문을 받는다면 전 망설임없이 "스마트폰"입니다. 아이폰이니 옴니아2니 안드로이드폰이니 아주 그냥 스마트폰들이 쓰나미처럼 쏟아지고 있습니다. 이에 스마트폰에 관심이 없던 일반인들도 차츰 스마트폰에 빠져들고 있습니다(예: 스마트폰에 전혀전혀 관심없던 친구 내 폰 옴니아2를 보고 옴니아2 지르다...).
 우리나라 핸드폰의 일반폰과 스마트폰 비율은 아직 9:1도 안되지만 차츰 그 간격은 좁아질 것은 당연지사입니다. 제가 지하철을 타고 출퇴근을 하는데요. 요즘 정말 스마트폰유저들이 많이 있더군요. 어떤 언론에서는 2013년에는 스마트폰이 전체 폰에 절반을 차지할 것이라고도 합니다. 그만큼 스마트폰은 매력덩어리인 것입니다.
 저는 "옴니아2"를 사용 중입니다. 하지만 공부는 안드로이드 ㅋㅋ 참 웃깁니다. 윈도우모바일을 쓰긴 하지만 쓸 수록 매력이 없는 것을 느낍니다. 하지만 좋긴 정말 좋습니다. 예전 HTC듀얼터치에 비하면 옴니아2 진짜 이건 혁명이죠ㅋㅋ 완전 느린 HTC듀얼터치.. 당시로선 사랑스러웠지만 안구에 쓰나미가 잦았던 HTC듀얼터치 OTL
 제가 'IT트렌드 2010" 이 제목으로 이 글을 쓰는 계기는 메일을 확인하던 중 Microsoft에서 IT트렌드2010이라고 메일이 온 것입니다. 물론 자기네들 상품광고할려는 의도도 보이지만 그래도 트렌드를 정리한 것 같아서 아주 간단하게 살펴보았습니다.

  1. 클라우드 컴퓨팅
    • 간단한 개념은 인터넷 기반(cloud)의 컴퓨팅(computing) 기술을 의미합니다.
    • 그러니깐 사용자의 데이터를 신뢰성 높은 서버에 보관함으로써 어디서든 자기 데이터를 맘대로 접근할 수 있다는 것입니다. 한 예로 구글이 개발중인 OS크롬은 어느 컴퓨터에서든지 자기의 아이디로 로그인만 한다면 항상 같은 컴퓨터환경을 만들 수 있습니다.
  2. 그린IT
    • 정보통신산업진흥원이 최근 310명의 IT 업계 관계자를 대상으로 실시한 조사에 따르면 2010년 최대 화두로 ‘그린 IT’가 꼽혔습니다. 그린IT라하면 아무래도 에너지절감이겠죠 ^^;
  3. 앱스토어
    • 예전에 제가 프로그램을 열심히 만들었지만 이것을 상용화하는 데는 큰 문제점이 있었습니다. 복잡한 절차등등..하지만 이제 저의 작은 꿈은 현실이 됐네요. 애플의 앱스토어가 한 예입니다. 앱스토어는 모바일과 클라우드부분에서 크게 두각을 나타낼 것으로 짐작되구요. 이미 모바일에선 크게 두각을 나타내었지요. 하지만 구글 안드로이드폰등으로 인하여 더욱 다양해지고 거대해 질 것 같습니다.
  4. 3스크린
    • 3스크린은 TV, PC, 휴대폰으로 언제 어디서든 인터넷으로 연계되어 원하는 컨텐츠에 접근할 수 있는 의미를 내포합니다.
  5. 모바일
    • 드디어 나왔습니다. 모바일. 이건 앞에서 설명한 바와 같습니다. 2010년 엔터프라이즈 시장과 일반 소비자 시장 모두에서 가장 큰 화제로 모빌리티를 꼽는 것에 이견을 달 사람은 없을 것이라고 합니다.
  6. 소셜네트워크 & 웹게임
    • 소셜네트워크는 웹상에서 개인이나 집단이 하나의 노드(node)가 되어 각 노드들 간의 상호의존적인 관계(tie)에 의해 만들어지는 사회적 관계구조를 말합니다. 소셜네트워크의 거대한 서비스는 Facebook입니다. 우리나라에선...흠..싸이월드쯤이 그 예가 되지 않을까요??
    • 웹게임은 설치를 하지않고 웹에서 게임이 가능한 것을 말하는데 2000년이전부터 존재하였는데 요즘 이런 게임들이 아주 인기가 많습니다. 직장인들에게 풋ㅋㅋ.. 몰래몰래 웹셔핑을 하듯이~ 클릭하고 기달리고...클릭하고..기달리고....OTL 재...재미는 있습니다. 인기있는 게임으론 칠용전설, 웹삼국지, 제가 했던 플래시 기반의 외국게임 Evony 등등 많은 게임이 있습니다.

이상 마소의 메일을 기반으로 글을 작성했는데요. 제 생각대로여서 ^^; 바쁜 일정 속에서 제 글을 끝까지 읽어주셔서 감사합니다. 좋은 하루되시길..^_^

마소의 글은 이곳에 가시면 됩니다.

Posted by Finebe
,



인터페이스는 다중상속을 구현하기 위한 꼼수 입니다.
그렇다면 다중상속이 필요한 이유가 무엇이냐?

예를 들자면 이렇습니다.
한 회사의 부서들을 클래스로 나타내고 각 직원들을 각각의 부서에 할당했다고 하죠.
일단
1. 영업부 class
2. 기술부 class

정도로 크게 나눴다고 하고 영업부를 더 자세하게 나눈다고 치죠.

1-1 해외영업부class
1-2 국내영업부class

그리고 기술부 역시

2-1 시스템개발부 class
2-2 소프트웨어개발부 class

정도로 나눴다고 치고 모든 직원을 아래의 4개의 클래스에 속한다고 칩시다..(사실 클래스의 개념에 좀 안맞기는 하지만 예를 들기 위해서..^^;;;)
그런데 문제가 생겼습니다... 영업부 직원 중에 운전을 할줄 아는 사람과 할줄 모르는 사람이 있어서 이것을 구분해야 하는 거죠... 그렇다면 어떻게 해야 할까요....

이때 인터페이스라는 개념이 필요한 것입니다.

운전을 하고 못하고는 위의 네개의 클래스 구분과는 무관하겠죠. 다시 말하면 국내영업부 직원이나 소프트웨어개발부 직원이나 모두 운전을 할 수 있습니다.
이것은 다시 말하면 전혀 다른 방식으로 전 직원들을 구분할 필요가 있다는 것을 나타냅니다. 하지만 자바에서는 다중 상속이 불가능하죠. 왜 다중상속이 안되느냐 하면 만일 한 클래스가 두개의 클래스를 상속받을 경우에 그 클래스를 정의하는 두개의 방식이 존재해서 혼란이 일어납니다. 간단하게 이놈이 김씨 아들인지 박씨 아들인지 알수가 없어진다는 정도로 이해하면 되겠습니다. ^^;;

여기서 Drivable 이라는 인터페이스를 구현하고 운전을 할줄 아는 직원들에 대해서 이 인터페이스를 implements 하도록 하면 직책에 따른 직원의 구분 이외에 운전 여부에 대해서 다시 직원들을 구분할 수가 있을 겁니다.

어떤 직원이
extends 시스템개발부class implements Drivable
가 되었다면 이 직원은 시스템개발부에 속하면서 운전을 할줄 아는 직원이 되는 거죠.

여기에 부가적으로 일어를 할 수 있는 직원과 영어를 할 수 있는 직원 그리고 중국어를 할 수 있는 직원을 더 구분하고 싶다면 JPSpeakable, ENGSpeakable, CHNSpeakable 이라는 인터페이스를 정의하고 각각의 직원이 구사할 수 있는 외국어에 대해서 위의 인터페이스를 implements 해주면 될겁니다.


그러면 일괄적으로 일본어를 할 수 있는 직원을 부서에 관계없이 참조할 수 있겠죠.

중요한 것은 여기서 직원들에 대한 구분을 해당 부서가 가장 중요한 분류 기준이고 부가적으로 운전을 할 수 있는지로 다르게 분류하고 있다는 겁니다.
운전을 할 수 있는지가 더 중요한 기준이 된다면
Drivable 을 implements 하지 않고 extends 해서 처리하겠죠.. extends와 implements는 이런 차이입니다.

ps. 개인적으로 구현이든 상속이든 별 차이 없다고 생각합니다. 언어 차원에서 깊게 파고 들어가면 그 차이가 보이겠지만 프로그래밍을 하는 입장에서는 문법의 문제라기보다는 개념의 문제인것 같습니다.

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040201&docId=65288998

'Application Programming > Java' 카테고리의 다른 글

입력된 문자열 뒤에 공백 추가해주는거  (0) 2008.11.10
Posted by Finebe
,




1. Information

typedef struct tagBITMAPFILEHEADER {
  WORD    bfType;
  DWORD   bfSize;
  WORD    bfReserved1;
  WORD    bfReserved2;
  DWORD   bfOffBits;
} BITMAPFILEHEADER;

typedef struct tagBITMAPINFOHEADER{
  DWORD  biSize;
  LONG   biWidth;
  LONG   biHeight;
  WORD   biPlanes;
  WORD   biBitCount;
  DWORD  biCompression;
  DWORD  biSizeImage;
  LONG   biXPelsPerMeter;
  LONG   biYPelsPerMeter;
  DWORD  biClrUsed;
  DWORD  biClrImportant;
} BITMAPINFOHEADER;

WIN32 API에서는 bitmap header부분을
파일정보와 비트맵정보로 구분해서 사용한다.

개인적으로 윈도우에서 작업을 하게 된다면 이 구조를 사용하지만
그렇지 않을 경우는 이 두부분을 한 구조체로 묶어서 사용한다.

Offset Hexa Size Name Contents
0 0x00 2 bfType Specifies the file type. It must be BM
2 0x02 4 bfSize Specifies the size, in bytes, of the bitmap file .
6 0x06 2 bfReserved1 Reserved; set to zero
8 0x08 2 bfReserved2 Reserved; set to zero
10 0x0A 4 bfOffBits Specifies the offset, in bytes, from the BITMAPFILEHEADER structure to the bitmap bits
14 0x0E 4 biSize Specifies the number of bytes required by the structure.
18 0x12 4 biWidth Specifies the width of the bitmap, in pixels.
22 0x16 4 biHeight specifies the height of the image, in pixels.If biHeight is positive, the bitmap is a bottom-up DIB and its origin is the lower-left corner. If biHeight is negative, the bitmap is a top-down DIB and its origin is the upper-left corner.If biHeight is negative, indicating a top-down DIB, biCompression must be either BI_RGB or BI_BITFIELDS. Top-down DIBs cannot be compressed. 
26 0x1A 2 biPlanes Specifies the number of planes for the target device. This value must be set to 1.
28 0x1C 2 biBitCount Specifies the number of bits per pixel. The biBitCount member of the BITMAPINFOHEADER structure determines the number of bits that define each pixel and the maximum number of colors in the bitmap. This member must be one of the following values.
30 0x1E 4 biCompression Specifies the type of compression for a compressed bottom-up bitmap (top-down DIBs cannot be compressed). This member can be the one of the following values:
34 0x22 4 biSizeImage Specifies the size, in bytes, of the image. This may be set to zero for BI_RGB bitmaps.
38 0x26 4 biXPelsPerMeter Specifies the horizontal resolution, in pixels per meter, of the target device for the bitmap. An application can use this value to select a bitmap from a resource group that best matches the characteristics of the current device.
42 0x2A 4 biYPelsPerMeter Specifies the vertical resolution, in pixels per meter, of the target device for the bitmap
46 0x2E 4 biClrUsed Specifies the number of color indexes in the color table that are actually used by the bitmap. If this value is zero, the bitmap uses the maximum number of colors corresponding to the value of the biBitCount member for the compression mode specified by biCompression. If biClrUsed is nonzero and the biBitCount member is less than 16, the biClrUsed member specifies the actual number of colors the graphics engine or device driver accesses. If biBitCount is 16 or greater, the biClrUsed member specifies the size of the color table used to optimize performance of the system color palettes. If biBitCount equals 16 or 32, the optimal color palette starts immediately following the three DWORD masks.
50 0x32 4 biClrImportant Specifies the number of color indexes required for displaying the bitmap. If this value is zero, all colors are required.


bfType 2byte
bitmap file 식별자
반드시 "BM" 이여야 한다. 위의 구조체 타입으로 읽을 경우는 0x4D42(19778)이다.
(실제 파일상의 값은 0x42('B') 0x4D('M')  byte_order가 small-endian 방식이다. Mac이나 Motorola처럼 big-endian에서는 다르게 표현 될려나? 확인 안해봐서 모르겠다. 이후 이 부분은 언급하지 않는다)

bfSize 4byte
file 전체의 크기를 나타낸다. ls나 dir혹은 탐색기의 등록정보를 이용하여 확인해 보면 동일하다.

bfReserved1 2byte
bfReserved2 2byte
그냥 예약 부분이다. 둘다 0으로 채워져야 한다.
굳이 예약부분을 2byte씩 둘로 나눈 이유가 무엇일까?

bfOffBits 4byte
BITMAPFILEHEADER 구조체로 부터 오프셋이란다.
괜히 MSDN 긁었나부다. 그냥 image data의 시작위치다.

biSize 4byte
구조체의 크기라고 써있다.
biSize부터 bitmap information에 대한 마지막 부분까지의 크기다.
WIN32 API에선 sizeof(BITMAPINFOHEADER)의 크기로 봐도 무방하다.
- 각각 자료형의 크기가 4byte라서(중간에 2byte는 2개) structure packed를 걱정할 필요는 없다.

biWidth 4byte
bitmap의 가로 pixel 크기이다.

biHeight 4byte
bitmap의 세로 pixel 크기이다.
양수/음수에 따라 bottom-up/top-down으로 나뉜다고 되어 있다.
뭐 일단 양수라고(bottom-up) 생각하고 넘어간다. 이 문제에 대해서 뒤에 이야기 한다.

biPlanes 2byte
해당 device에 대한 숫자라고 되어있다. 반드시 1이어야 한다
별로 의미가 없는 부분이다.

biBitCount 2byte
한 픽셀당 차지하는 비트수이다. 여기를 보면 이 비트맵이 몇 color인지(몇 bit인지) 알수 있다.
2에 대한 지수로 보면 간단하다.
1 - 2  color
4 - 16 color
8 - 256color
.
.
.

biCompression 4byte
압축 타입이라고 되어 있다.(top-down DIB에서는 사용 할 수 없다)
일반적으로 보통 0이지만 압축된 BMP의 경우에는 값이 세팅되어 있다.
wingdi.h 파일에서는 다음과 같이 선언되어 있다.
#define BI_RGB 0L
#define BI_REL8 1L
#define BI_RLE4 2L
pixel당 8bit 혹은 4bit로 Run_length 압축 됨

biSizeImage 4byte
압축되지 않은 이미지의 실제 크기이며 일반적으로 보통 0.
biSizeImage= biWidth * biHeight * 픽셀당_바이트수(256 color:1 byte, 24bit color:3 byte) 이지만
윈도우에서는 몇가지 이유로 4byte정렬을 하기 때문에 약간 보정을 해줘야 된다.
즉, biWidth가 4로 맞아 떨어지지 않는 경우에는 보정한다 - if (biWidth%4 != 0) ...
biHeight *  (biWidth + biWidth%4) * 픽셀당_바이트수

biXPelsPerMeter 4byte
biYPelsPerMeter 4byte
출력 디바이스의 수평, 수직 해상도

biClrUsed 4byte
사용한 color

biClrImportant 4byte
중요한 color





2. Palette
biBitCount 값이 1 ~ 8 까지의 값일 경우에만 사용된다.
즉 8보다 큰 값이면 palette정보는 없다.
사용되는 색상이 2 ~ 256 color이면 색상을 사용하기 위해 색상 정보를 미리 정해 놓고
image data영역에서는 색상정보의 인덱스를(해당 color를 0부터 오름차순으로 번호를 매겨서) 이용하여
색상을 표시한다.




palette 크기는 bfOffBits에서 bitmap_information부분을 빼줘도 되지만
쉽게 생각해서 4 byte(RGB값과 dummy 1byte) * 색상갯수로 계산해도 된다.

1bit(2 color) 이미지라고 해서 꼭 흑백으로 표현되지는 않는다. palette 정보를 적,청 색으로 변경하면
얼마든지 다른색으로 표현할 수 도 있다.

여담으로 모든 이미지를 256 color로 작업할 경우
작은 이미지를(16*16정도나 그 보다 작을 경우) 표현하다 보면
실제 image data영역보다 header와 palette영역이 훨씬 큰 - 배보다 배꼽이 큰 경우도 발생한다.




3. Image data
말 그대로 image data영역이다.
biBitCount 값이 1 ~ 8일 경우에는 palette 색상의 index값을 가지며
해당 bit가 한 pixel을 나타낸다(8이면 2^8 즉, 1byte로 계산하며 그 이하는 비트로)
그 이상 color를 이용하면 image_data 영역에 직접 색상 정보를 기록한다.

그리고 한가지 주의 할 점이 보통의 경우 실제 이미지와 image_data 영역의 정보는 아래위가 바뀌어 있다.
실제 이미지가 △ 이런식으로 나타날 경우에는
image_data영역에는 ▽ 식으로 기록된다.
즉, 이미지의 하단 영역부터 한 라인식(pixel기준) 기록된다.




또 여담인데 실제로 많은 사람들이 다룰수 있는 포토샵으로 이미지 작업을 하다보면
가끔씩 실제 이미지가 △, image_data영역 △ 이런식으로 기록되는 경우가 많다.(요즘 버전은 안그럴려나?)
여지껏 디자이너와 작업을 할때 게임쪽 인력보다는 대부분 웹디자이너와 작업이였는데
역시 그들이 포토샵으로 이미지를 넘겨줘서 확인해 보고 뒤집힌 이미지가 나오면 그냥 그림판으로 다시 저장을 한번더 해주는...
이거 확인하는게 있었는데 어떤 필드 값인지 잘 기억이 안난다 - 나중에 기억나면 수정 할련다.




그리고 마지막으로 여담인데
그동안 주 타겟 os가 윈도우가 아니었던 관계로
윈도우 헤더파일 안 가져다 쓰고 bitmap 헤더 구조체를 작성해서 사용하여
파일에서 해당 크기 만큼 읽어 오다보면
꼭 2 byte씩 밀린다.
위에 윈도우 구조체 보면 맨 처음 식별자가 2byte이고 그 다음 부터는 잘도 4byte로 맞추어 놓음을 볼수 있다.
맨 처음 bitmap 작업 할때 structure_align을 안 겪어 봐서(그 전까지는 개념만 있었을 뿐...)

'Application Programming' 카테고리의 다른 글

쓰레드의 종류  (0) 2014.11.25
Bitmap 구조 1  (0) 2010.01.18
Posted by Finebe
,




비트맵 구조는 의외로 단순하다.
일단 비트맵에 대한 크기등의 정보와 실제 데이터로 나뉜다. (하긴 다른 파일들도 정보와 데이터로 나뉘겠지만)

다 알고 있는데로 비트맵은 이미지의 하나하나의 픽셀에 대한 색깔 정보를 가지고 있는 구조다.
그래서 다른 이미지 포맷에(jpeg, gif등) 비해 상당히 파일크기가 큰 편이다.

1. information
비트맵 식별자, 가로/세로 사이즈, 파일크기, 사용할 색상수, 데이터 시작위치등이 포함되어 있다.
주의할 점은 사용할 색상수(흔히들 말하는 흑백, 16 color, 256 color등)를 표현하는 것으로
2의 지수형태중 지수만 표현하고 있다.
ex) 16color = 2^4,  256color = 2^8

2. palette
사용할 색상을 하나씩 지정한다.
16color 라면 16가지 색깔을 하나의 색상당 RGB형태로 4byte표기한다
(Red:0~255, Green:0~255, Blue:0~255, dummy 1byte-대부분 0값이다)
결국 4byte * 16(16가지 색상) 만큼의 크기를 차지한다.
RGB값만 표현하면 3byte면 되지만 굳이 dummy 1byte를 붙인 이유는 컴퓨터의 자료표현에 대한
속성때문이다.
2의 배수로 올라가는 2^32bit(4byte)형태라면 쉽게 접근이 가능하지만
2^24bit 형태라면 위의 경우보다 메모리 접근시 연산이 더 필요하다
- 자세한 설명은 뒤로 미루겠다.(안 할지도 모른다) System programming 영역이니까.

이 palette부분은 256 color까지만 존재한다.
그 이상의 색상을 표현할땐 palette부분이 없다.

3. image data
1bit(2color) ~ 8bit(256color) 구조 까지는 palette에 대한 index만 가지고 있다.
이 인덱스는 0~255까지가 범위이다.
이 이상 벗어나게되면(색상이 더욱 많아지면) 1byte 만으로는 표현할수가 없어서
palette에 대한 index대신 직접색상 정보를 data부분에 직접기록한다.
출처: http://www.munhi.com/cgi-bin/zboard/view.php?id=sw_development&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=9

'Application Programming' 카테고리의 다른 글

쓰레드의 종류  (0) 2014.11.25
Bitmap 구조 2  (0) 2010.01.18
Posted by Finebe
,


1. SVN이란?
   -자유 소프트웨어 버전 관리 시스템입니다. 명령행 인터페이스에서 사용하는 명령어를 따서 “SVN”이라고 줄여서 부르기도 합니다. 제한이 있던 CVS를 대체하기 위해 2000년부터 콜랩넷에서 개발되었습니다.


2. 사용 후기
  -사용한지는 1년여정도 되었습니다. 1년여동안은 외부서버에 SVN서버를 설치하여 사용하였지만 요번에 제 개인컴퓨터에 SVN을 적용했습니다.

3. 용어설명
  • Repository(저장소)란?
    Subversion이 version control 관련 data를 저장하는 곳입다. 구성하는 방법은 다양하다: 한 repository에 여러 project를 담을 수도 있고, 한 repository에 한 project만 담는 경우도 있다. 두 방법 모두 장단점이 있다. 한 project당 하나씩의 repository를 사용하는 것이 일반적으로 더 바람직하다.
  • Check out이란?
    저장소에서 project를 작업공간에 인출하는 것. Download와 유사하다.
  • Commit이란?
    작업공간에서 수정된 project를 저장소에 반영하는 것. Upload와 유사하다. Commit하기 전에 작업 공간의 file을 충분히 시험하여야 한다.
  • Commit message란?
    Commit 할 때 수정된 내용의 의미를 적어둔다.
  • Update란?
    공동으로 작업할 때 다른 사람들이 수정하여 commit한 모든 최신 version을 일괄적으로 받아오는 것. 역시 download와 유사하다.
  • Diff란?
    수정된 file의 내용 또는 저장소에 저장된 두 revision 사이의 차이를 비교해 준다.
  • Conflict란?
    개발자 Joe 와 Sue 가 같은 file의 같은 version을 수정중이었다. Joe가 자신이 수정한 file을 먼저 commit 하였다. Sue가 그 사실을 알지 못하고 수정한 file 부분이 Joe가 수정한 부분과 달랐다. 위 그림의 경우, 둘째줄이 Cheese가 되어야 하는지 Hot Dog이 되어야 하는지 혼란이 일어난 것이다. 이런 상태를 방지하기 위해 lock을 사용할 수 있다.
  • Conflict는 어떻게 해결하는 것인지?
    Sue가 r4를 우선 update 받아서 수정 (Hot Dog을 추가 또는 file 전체 덮어쓰기)한 다음 commit할 수 있다.
  • 여러사람이 동시에 작업한 결과를 안전하게 합치는 법?
    • 모든 경우에 다 가능한 것은 아니다.
    • 잘만 되면 생산성을 n배 늘릴 수도 있다.
    • CVS나 Subversion인 경우에는 가능하지만, 다른 version control system에서는 불가능할 수도 있다.
    • 주의: Commit에 성공과 compile에 성공은 별개의 문제이다. Conflict 없이 여러 commit에 error 없이 성공하더라도 build 과정에서 error가 발생할 수 있다. Compile에 성공과 bug 없는 SW도 별개의 문제이다.
    1. 먼저, 어느 version을 기반으로 작업할 것인지 결정한다.
    2. 누가 어느 부분을 개정할 것인지 겹치지 않게 분명하게 결정한다. (누가 먼저 commit하더라도 상관 없도록 한다.)
    3. 각자 개정 후 commit 한다.
  • 어떤 project가 lock 되었을 때의 효과는?
    Subversion은 기본적으로 locking을 별로 선호하지 않는 system이다. 충돌이 일어날 수 있는 상황인 두 사람이 같은 file 같은 version의 같은 부분을 수정할 확률이 높지 않다고 보는 것이다. 그러나 file의 크기가 크지 않은 경우에는 누가 수정을 하더라도 비슷한 위치에서 수정이 일어나기 때문에 충돌이 일어날 가능성이 더 높을 것이다. 또한, 그림 file 등과 같이 merge가 곤란한 file의 경우, lock을 하는 편이 훨씬 안전하다.
    Harry가 어떤 file을 lock하면, Sally는 file을 check-out하거나 update 받을 수는 있지만 commit하지는 못한다. 이후 Harry가 lock을 풀면 Sally가 다시 commit할 수 있다.
  • Keyword란?
    Subversion 안에 보관중인 file 자체에 file의 이름, 저자, 개정 번호 등의 정보를 자동적으로 기록, 갱신하기 위하여 keyword를 사용할 수 있다. Subversion에서 사용할 수 있는 keyword들 가운데는 다음과 같은 것들이 있다. (대소문자 구별)
    1. $Date$ 마지막으로 commit된 날짜
    2. $Revision$ 마지막으로 commit된 개정판
    3. $Author$ 마지막으로 commit한 개발자
  • Branch란?
    Project의 진행에 영향을 주지 않으면서 새로운 기능, 기술 등을 시험해 보고 싶을 때가 있다. 그럴 때 branch를 만들어서 프로젝트의 본류와 병행으로 개발할 수 있다. 개발이 성공적이라면 추후에 본류에 합류시킬 수 있다. 그렇지 못하다면 합류시키지 않으면 된다.
  • Branch 또는 Tag 만드는 법?
    1. TortoiseSVN → Branch/tag
    2. Copy (Branch / Tag) dialog box의 To URL 항목 에서 [...] button 선택, Repo Browser를 연다.
    3. branch 또는 tag를 저장할 folder를 새로 만듦. 예를 들어 원류가
    4. Copy (Branch / Tag) dialog box로 돌아온다
    5. file:///C:/svn_repository/Test/branch/[file이름]
    6. Branch를 만들 revision을 선택
    7. Log message 기록
    8. Switch working copy to new branch/tag 선택
    9. [OK] click
    10. Branch가 정상적으로 이루어졌는지 보려면 해당 file을 우 click하고 Revision graph 선택.
  • Tag란?
    따로 뽑아둔 중요한 개정판. 상업 배포판 (예 Windows 3.0, 3.1, 95, 97, ...) 또는 중요한 성공을 이룩한 개정판은 tag를 따로 붙여준다.
  • Branch를 trunk에 합치는 법(Merge)?
    1. Branch를 commit해둔다.
    2. TortoiseSVN → Switch... 선택, Switch To Branch / Tag 대화상자를 연다.
    3. To URL 난에서 trunk의 URL을 선택한다.
    4. Revision은 보통 HEAD revision을 선택한다.
    5. Click [OK] 하면 Working copy가 본류의 최신판으로 돌아간다.
    6. TortoiseSVN → Merge... 선택 Merge 대화상자를 연다.
    7. Merge a range of revisions를 선택한 다음 [Next]
    8. URL to merge from에서 아까 작업하던 branch를 선택한다. 잘 기억 나지 않으면 [...]을 눌러서 repo-browser로 확인한다.
    9. Revision to merge에는 보통 HEAD라고 입력한다음 [Next]
    10. [Test merge]를 눌러 본다. Conflict가 나타나면 실제로 Merge할 때도 conflict가 발생할 것이다. 이는 수동으로 해소 (resolve) 해 주는 것이 바람직하다.
    11. Resolve Conflict 대화상자가 나타나면 [Edit conflict]를 누른다.
    12. Merge 화면이 나타날 것이다. 창틀(pane)이 두개면 오른쪽이 최종 결과이고, 셋이면 Merged가 최종이다. 셋인 경우를 기준으로 설명하면 위 두 창틀에서 어느쪽을 사용할 것인지 정해서 우click, Use this text block을 선택해 준다.
    13. Save 하고 Merge 화면을 닫는다.
    14. Resolve Conflict 대화상자에서 [Resolved]를 click한다. Merge 된 file이 working copy에 반영된다.
    15. TortoiseSVN → Diff 선택하여 변경 내용이 바르게 반영되었는지 확인한다.
    16. Commit 한다.
3. 적용방법

  1. TortoiseSVN 설치
    1. TortoiseSVN Download
    2. 설치한다. (msi파일을 실행한 후 특이한 사항없으면 다음을 눌러 설치완료)
    3. 저장소로 쓰일 폴더를 생성한다. (예: d:\TortoiseSVN_repository)
  2. Eclipse Subversion 적용
    1. Subversion install


      Software Updates를 클릭한후 Find and Install를 클릭!!
      2번째를 클릭한 후 Next!!

      Name: subclipse 1.6.x
      URL: http://subclipse.tigris.org/update_1.6.x 를 입력한다

      제 화면에는 안나오는데(이미 설치되어서) 원래는 여러가지가 나옵니다. 필요에 따라 설치하세요~!
  3. Eclipse프로젝트에 적용하기




            여기서 로컬컴퓨터 사용할려면 위처럼 하면 되고 사용할려면 URL부분을 해당 서버 주소로 입력하시면 된다.

          이상 적용완료!!!!
Posted by Finebe
,


1. JSON 다운로드 및 설정

  • http://code.google.com/p/as3corelib/ 구글에서 제공하는 ActionScript 3 라이브러리, 소스가 있으며 다운로드도 가능하다.다운로드 경로: http://as3corelib.googlecode.com/files/as3corelib-.92.1.zip
  • 다운로드 받은 압축 파일 중에서 "as3corelib.swc" 파일을 Builder 설치폴더에 라이브러리폴더를 생성하여 복사한다.
  • Flex Builder 3에서
    1. 메뉴에서 Window > Open Perspective > Flex Development
    2. 다시 메뉴에서 Window > Show View > Navigator
    3. 사용하고자 하는 프로젝트를 선택 후에 마우스 오른쪽 버튼을 클릭 후 "Properties" 선택한다.
    4. Flex Build Path > Library Path 을 선택 후에 아래 그림과 같이 as3corelib.swc 파일을 추가한다.


       

2. 테스트 소스
 http://rrao.host.adobe.com/kannan/JSONTest.mxml




Posted by Finebe
,



질문1) 위에처럼 html 을 구성할 경우 li 에 있는 이미지와 하단 선사이에(ul에 지정) 약 4px 정도 공백이 생깁니다.

li 에 직접 height 를 주면 해결되긴 한데 height 를 주지 않고 border-bottom 이 딱 붙게 할 수 있는 방법이 있을까요?

 

답변1) 이미지 4px정도 여백은 영어에 아랫첨자가 있기 때문입니다. (EX: 영소문자 g 또는 j 등등)

이와 같은 문제는 FF(파이어폭스)에서도 마찬가지이며 해결 방안으로는

<img>태그에 style img {vertical-align: top;}을 주어서 해결이 가능합니다.

 

질문2) 위의 li 태그에서 style 을 삭제하고 스타일에 img {vertical-align: middle;}

을 추가하면 li에 들어있는 이미지가 border-bottom위로 1px 내려 옵니다.

ul에 height 를 지정하면 정상적으로 보이나 파폭에서 1px 띄어져서 보이네요.

어떤 방법으로 해결할 수 있을까요?

 

답변2) 질문 2번 문제는 vertical-align 문제가 아닌거 같습니다.

일단 li 태그에 float: left;가 됨으로써 ul의 높이값이 사라지기 때문에 검은색 선이 위로 올라가게 됩니다.

하지만 IE에서는 정상으로 나오죠. IE 버그입니다.

 

그럼 해결 방안을 드리자면

아래와 같은 소스가 될듯 싶네요.

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
<title> new document </title>
</head>
<style type="text/css">
* {margin: 0px; padding: 0px;}
ul, li, dl, dt, dd {list-style: none;}
ul {width: 500px; border-bottom: 2px #000000 solid; overflow: auto; height: 100%;}
ul li { float: left;border: 1px solid #f18;}
ul li img {vertical-align: top;border: 0;}
</style>
<body>
<ul>
 <li><img src="test.gif"  /></li>
 <li><img src="test.gif" /></li>
</ul>
</body>
</html>

 

 

질문 1은 영문의 아래첨자의 의한 문제이고

질문 2번은 CSS의 float 속성의 의한 것입니다.

자세한 설명을 하자면 단순히 이 소스를 가지고 이해 시켜드리기가 어렵네요.

답변 주시면 자세한 설명 해 드리겠습니다.

HTML 및 CSS속성은 http://trio.co.kr/ 찾아보심 될듯 싶습니다

Posted by Finebe
,


SQL메일과 SQLAgent메일 설치하고 사용하기

참고)

SQL 메일 구성방법

http://www.microsoft.com/Korea/support/xmlkb/KR263556.ASP

SQL Mail 2000에는 Microsoft Outlook 2000 클라이언트가 필요하다

    http://www.microsoft.com/Korea/support/xmlkb/KR281293.ASP

 

SQL서버가 메일을 주고 받을려면 메일 프로필과 MAPI를 지원하는 메일클라이언트 프로그램이 있어야 한다. 현재 이 두가지를 지원한는 메일 클라이언트는 Outlook과 Nt4.0에 포함되어 있는 Windows Messaging 클라이언트밖에 없다. SQL7.0에서는 Windows Messaging 클라이언트과 Outlook97-98을 이용해서도 프로필을 작성할수 있었으나 SQL서버 2000에서는 오로지 Ouotlook2000 만 지원을 한다

 

이 문서는 Outlook2000설치와 프로필추가, SQL Mail 설정, SQLAgent Mail 설정의 세단계에 대한 내용이 들어있다.

 

Outlook2000설치와 프로필추가

1. 해당 DB서버에 Outlook2000을 설치한다.

2. 메일 프로필을 추가해야 하는데 세가지 방법으로 프로필 추가 화면을 띄울수 있다.

    - 바탕화면에서 Outlook2000 아이콘 더블 클릭

    - 바탕화면에서 오른쪽 마우스 등록정보/메일창에서 추가버튼 클릭

    - 제어판/메일/메일창에서 추가버튼 클릭

3. 받은 설치함 설치 마법사 창에서 인터넷전자메일을 선택하고 다음 클릭.

 

note) 위와 같은 화면이 안 뜨고 아래와 같은 화면이 먼저 뜨는 경우도 있슴

다음 화면에서 꼭 회사 또는 작업 그룹 선택

    

    

 

4. 인터넷 전자메일 창에서 메일계정 설정 버튼 클릭. 아래와 같이 설정

    

    

    이때 비밀번호는

 

5. 메일 프로필이 사용할 개인 폴더 설정화면에서 기본값을 선택하고 다음 클릭.

    부득이 하게 변경하고 싶을땐 옆에 찾아보기 버튼을 선택해서 적절한 경로 설정

6. 메일 프로필 완료 화면 나옴. 마침을 클릭해 창을 닫는다.

7. Outlook2000을 실행시키면 매처음 경고창이 뜨면서 "Outlook이 메일,뉴스과(와) 연락처의 기본 관리자로 설정되어 있지 않습니다. Outlook을 기본 관리자로 설정하시겠습니까?" 라는 경고창이 뜨는데 꼭 를 눌러야 한다.

8. 이제 메일이 제대로 가고 오는지 테스트를 해본후 이상이 없으면 다음으로 넘어가고 이상있으면 고친다.

9. 한명이상의 관리자한테 메일을 보내야 할 필요가 있을 경우를 대비해서 sqlDBA라는 메일 그룹을 Outlook2000에 등록한다.
    A. 관리자 메일주소를 아웃룩/연락처에 등록한다.

    B. sqlDBA라는 메일 그룹을 추가하고 관리자 주소를 구성원선택버튼을 눌러 추가.

    

 

SQL Mail 설정하기

지금 우리는 administrator라는 계정으로 로그인해서 프로필을 등록시켰다. 그렇기 때문에 sql메일기능이 동작할려면 SQL서버와 SQLAgent가 administrator의 권한으로 시작이 되어 야 한다. 현재 SQL서버는 Windows 2000서버의 시스템계정으로 동작하고 있을 것이기 때문에 이것을 administrator로 바꿔야 한다. sql서버 역시 하나의 메일 클라인언트이기 때문이다.

  1. 서비스관리자를 연다. 시작/프로그램/관리도구/서비스
  2. MSSQLSERVER 를 선택 오른쪽 버튼/등록정보 클릭
  3. 로그온 탭을 선택하고 아래와같이 설정. administrator비번은 따로 문의


        

  4. Administrator계정에 서비스 로그온 권한을 승계했고 SQL서버 서비스를 다시 시작해야 새로그인 이름이 적용된다는 안내가 나온다. 확인 클릭
  5. 이제 EM(엔터프라이즈 관리자)를 열어 지원서비스/SQL 메일에서 오른쪽버튼/등록정보
  6. 드롭다운 버튼을 눌러 MS Exchange 설정 프로필을 선택하고 테스트 버튼 클릭

    이 프로필을 사용하여 MAPI세션을 시작(중지) 했다는 안내가 나온다. 이제 SQL메일 세션을 시작한것이다. 설정 끝

  7. 이제 쿼리 분석기를 열어서 xp_sendmail '내메일주소','테스트랑께' 라고 적고 실행시키면 메일이 자기한테 오는지 확인할수 있다.
  8. 예) xp_sendmail 'test@test.co.kr','테스트랑께'

    만약 에러가 나면 sql메일 세션이 정상적으로 시작하지 못한것이기 때문에 위의 그림에서처럼 다시 설정하거나 또는 xp_startmail 저장 프로시저를 실행한다.

  9. 메일세션을 중지시킬때는 위의 그림대로 또 한번하면 중지된다. 또는 xp_stopmail 저장프로시저를 실행한다.

 

 

SQLSERVERAgent Mail 설정하기

SQL서버에 딸린 작업이나 경고, 기타 등등의 작업을 할때는 SQLAgent메일이 더 많이 쓰이기도 한다. 모든 자동화 작업이나 서버 이상 등등의 결과를 메일로 받을 때 상당히 유용하며 자주 쓰이고 있다.

 

  1. Outlook2000설치와 프로필추가 단계를 먼저 끝내도록 한다.
  2. 시작/프로그램/관리도구/서비스 를 선택해 SQLAgent 서비스를 선택하고 SQLAgent서비스 시작 계정을 Administrator로 설정하고 확인 클릭. Administrator계정에 서비스 로그온 권한을 승계했고 SQLAgent 서비스를 다시 시작해야 새로그인 이름이 적용된다는 안내가 나온다. 확인 클릭
  3. EM(엔터프라이즈 매니저) 를실행하고 관리/SQL Server 에이전트에서 오른쪽버튼/등록정보 클릭
  4. 아래와 같이 메일 세션을 드롭다운 버튼을 눌러서 선택



    테스트 버튼을 누르면 메일 세션을 시작(중지)했다는 메시지가 나온다.

    설정끝

  5. 이제 SQLAgent 메일 서비스를 이용해 메일을 보내보도록 하자. EM(엔터프라이즈 매니저) 를실행하고 관리/SQL Server 에이전트/운영자/새운영자 를 추가
  6. 아래와 같이 설정을 한다. 메일주소는 … 버튼을 눌러서 프로필 추가할 때 아웃룩에서 추가한 메일그룹주소 sqlDBA를 선택하도록 한다.(테스트시 자기이메일주소를적어도됨)




옆의 테스트 버튼을 누르면 메일이 제대로 오는 것을 확인할수 있다.
이때 에러가 나면 SQLAgent 메일 세션을 제대로 시작하지 않은것이므로 4번의 단계를 다시 실행한다.

Posted by Finebe
,


인덱스 관리에 대한 지침 사항

이 곳에서는 인덱스를 관리할 때 수행하는 지침 사항을 설명하고 다음 내용을 다룹니다.

  • 테이블 데이터 삽입 후 인덱스 생성
  • 테이블당 인덱스 수 제한
  • 트랜젝션 입력 항목의 매개변수 지정
  • 인덱스 블록의 영역 사용 지정
  • 각 인덱스에 대한 테이블스페이스 지정
  • 인덱스 생성 병렬화
  • UNRECOVERABLE 인덱스 생성시 고려 사항
  • 인덱스 크기 측정 및 저장 영역 매개변수 설정


인덱스는 테이블과 클러스터에 관련된 선택적 구조이며 테이블에서 명시적으로 생성되어 SQL명령문 실행 속도를 증가시킬 수 있습니다.
이 설명서의 색인으로 정보를 더욱 빨리 찾을 수 있는 것과 같이 Oracle인덱스는 테이블 데이터를 훤씬 빠른 액세스 경로를 제공합니다.

인덱스의 존재 여부는 SQL명령문의 문법에는 변화를 주지 않습니다. 인덱스는 단지 데이터에 재한 빠른 액세스 경로를 제공하며 실행 속도에만 영향을 줍니다.
인덱스된 데이터 값이 부여되면 인덱스는 값을 포함하는 행의 위치를 가리킵니다.

인덱스는 관련된 테이블의 데이터에 논리적으로나 물리적으로 독립적입니다. 기본 테이블이나 다른 인덱스에 영향을 주지 않고 언제든 인덱스를 생성하거나 삭제할 수 있습니다.
인덱스를 삭제하면 모든 응용 프로그램은 계속 수행되지만 이전에 인덱스된 데이터로의 액세스는 더욱 느려집니다. 독립 구조로서 인덱스는 저장 영역이 필요합니다.

Oracle은 인덱스가 생성되면 유지 관리하고 사용합니다. 사용자가 더 이상 추가 작업을 수행하지 않아도 새 행 추가, 갱신, 삭제와 같은 데이터에 대한 변경 사항을 모든 인덱스에 자종으로 반영합니다.

1. 테이블 데이터 삽입 후 인덱스 생성

SQL*Loader 또는 Import를 통해 데이터를 테이블에 삽입하거나 로드한 후에 테이블에 대한 인덱스를 생성해야 합니다.
인덱스가 없는 테이블에 데이터 행을 삽입한 후 다음 액세스를 위해 인덱스를 생성하는 것이 더 효율적입니다.
테이블 데이터가 로드되기 전에 인덱스를 생성하면 모든 인덱스는 테이블에 행이 삽입될 때 마다 갱신되어야 합니다.
또한 클러스터에 데이터를 삽입하기 전에 클러스터에 대한 인덱스를 생성해야 합니다.
테이터를 가진 테이블에 인덱스가 생성되면 Oracle은 정렬 영역을 사용해야 합니다.
Oracle은 인덱스 생성자(SORT_AREA_SIZE 초기화 매개변수에 의해 결정되는 사용자당 사용량)에 할당된 메모리 정렬 영역을 사용하면서 인덱스 생성에 할당된 임시 세그먼트에서 정렬 정보를 교환해야 합니다.

인덱스가 너무 크면 다음 작업을 수행하고자 할 것입니다.
새 임시 세그먼트 테이블스페이스를 생성합니다.
인덱스 생성자의 임시 세그먼트 테이블스페이스를 변경합니다.
인덱스를 생성합니다.
원한다면 임시 세그먼트 테이블스페이스를 제거하고 생성자의 임시 세그먼트 테이블스페이스를 재 지정할 수 있습니다.


2. 테이블당 인덱스 수 제한

테이블은 인덱스를 무제한으로 가질 수 있습니다. 그러나 인덱스가 많을수록 테이블이 수정할 때 오버헤드도 늘어납니다.
특별히 행이 삽입되거나 삭제될 때 테이블의 모든 인덱스도 갱신되어야 합니다. 열이 갱신되면 열을 포함하는 모든 인덱스도 갱신되어야 합니다.

따라서 테이블에서 데이터를 읽어들이는 속도와 테이블을 갱신하는 속도 사이에는 차이점이 있습니다.
예를 들어 테이블이 주로 읽기 전용이라면 인덱스가 많은 것이 유용하지만 테이블이 주로 갱신 위주라면 인덱스가 적은 것이 좋습니다.

3. 트랜잭션 입력 항목의 매개변수 지정

각 인덱스 생성 중에 INITRANS 와 MAXTRANS매개변수를 지정하여 초기에 인덱스 세그먼트의 데이터 블록에 트랜잭션 입력 항목에 대한 영역 할당량과 최대 할당량을 결정합니다.
자세한 내용은 "스키마 게체 관리에 대한 지침 사항의 저장 영역 매개변수 설정을 참조 하세요.

4. 인덱스 블록의 영역 사용 지정

테이블에 인덱스가 생성되면 인덱스의 테이터 블록은 최대 PCTFREE까지 기존 테이블의 기존 값으로 채워집니다.
인덱스 블록을 위해 PCTFREE로 예약된 영역은 새 행이 테이블에 삽입될 경우에만 사용되며 해당 인덱스 입력 항목은 정확한 인덱스블록(즉 앞과 다음 인덱스 입력 항목사이)에 있어야 합니다.
해당 인덱스 블록에 더 이상 사용할 수 있는 영역이 없으면 인덱스된 값은 다른 인덱스 블록에 넣어집니다.
따라서 많은 행을 인덱스된 테이블에 삽입하려면 새 인덱스 값을 수용하는 PCTFREE값이 높아야 합니다.
테이블에 삽입된 사항이 별로 없다면 관련된 인덱스의 PCTFREE값을 낮게 하여 인덱스 데이터를 유지하는데 필요한 블록수를 줄일수 있습니다.

주 : PCTUSED는 인덱스에 대해 지정될 수 없습니다.

5. 각 인덱스에 대한 테이블스페이스 지정

인덱스는 테이블스페이스에서 생성될 수 있습니다. 인덱스는 인덱스하는 테이블과 동일한 테이블스페이스에서 생성될 수도 있고 다른 테이블스페이스에서 생성될 수도 있습니다.
테이블과 인덱스에 대해 동일한 테이블스페이스를 사용한다면 데이터베이스 유지 관리가 더욱 편해지며 모든 관련된 테이터가 온라인 상태로 됩니다.

테이블과 인덱스에 대해 다른 디스크에서 다른 테이블스페이스를 사용하면 동일한 테이블스페이스에 테이블과 인덱스를 저장할 때 보다 디스크 경합이 줄어들므로 성능이 좋아집니다.

테이블과 인덱스에 대한 다른 테이블스페이스를 사용하고(데이터나 인덱스를 포함하는) 한 테이블스페이스가 오프라인이면 이 테이블을 참조하는 명령문은 성능이 보장되지 않습니다.

6. 인덱스 생성 병렬화

병렬 질의 옵션을 설치하면 인덱스 생성을 병렬화할 수 있습니다. 여러 프로세스가 인덱스를 생성하므로 하나의 서버가 계속 인덱스를 생성할 때 보다 더 빠르게 인덱스를 생성할 수 있습니다.
인덱스를 병렬로 생성하면 각각의 질의 서버 프로세스는 저장 영역 매개변수를 제각기 사용합니다. 따라서 INITIAL 5M과 PARALLEL DEGREE 12로 생성된 인덱스는 인덱스가 생성되는 동안 적어도 60M의 저장 영역을 필요로 합니다.

7. UNRECOVERABLE 인덱스 생성 시 고려 사항

CREATE INDEX 명령문에서 UNRECOVERABLE을 지정하면 리두 로그 레코드를 만들지 않고도 인덱스를 생성할 수 있습니다.

주 : UNRECOVERABLE 을 사용하여 생성된 인덱스는 아카이브되지 않으므로 인덱스를 생성한 후에는 백업야 합니다.

복구할 수 없는 인덱스를 생성하려면 다음과 같은 이점이 있습니다.
리두 로그 파일의 영역이 절약됩니다.
인덱스 생성 시간이 줄어듭니다.
대규모 인덱스의 병렬 생성 성능이 향상 됩니다.

일반적으로 소규모 인덱스보다 대규모 복구할 수 없는 인덱스의 성능이 상대적으로 향상됩니다.
복구할 수 없는 소규모 인덱스를 생성하면 인덱스 생성 시간에 커다란 영향을 주지 않습니다.
그러나 대규모 인덱스에서는 특히 인덱스 생성을 병렬화할 때 성능 향상에 커다란 영향을 줍니다.


8. 인덱스 크기 측정 및 저장 영역 매개변수 설정

"스키마 개체에 대한 영역 예측"에는 인덱스 크기를 측정하는데 필요한 공식이 있습니다.

인덱스를 생성하기 전에 인덱스 크기를 측정하면 다음과 같은 이점이 있습니다.
원하는 데이터베이스를 유지하는데 필요한 디스크 영역을 결정하는 인덱스와 테이블, 롤백 세그먼트, 리두 로그 파일의 측정치를 합하여 사용할 수 있습니다. 이 측정치를 가지고 올바른 하드웨어를 구매하고 다른 사항을 결정합니다.
각 인덱스를 측정한 크기를 사용하여 인덱스가 사용할 디스크 영역을 관리할 수 있습니다. 인덱스가 생성되면 적합한 저장 영역 매개변수를 지정하거나 인덱스를 사용할 응용 프로그램의 입출력 성능을 향상 시킬 수 있습니다.
예를 들어 테이블을 생성하기 전에 테이블의 최대 크기를 측정한다고 합시다 테이블을 생성할 때 저장 영역 매개변수를 설정하면 테이블과 데이터 세그먼트에 대해 적은 확장정도 연속적인 디스크 영역에 저장됩니다. 이는 테이블을 포함하는 디스크 입출력 작업에 필요한 시간을 감소시켜 줍니다.

단일 인덱스 입력 항목의 최대 크기는 대략 데이터 블록 크기에서 오버헤드를 뺀 값의 1.5배입니다.
테이블에서 처럼 인덱스를 생성할 때 저장 영역 매개변수를 명시적으로 설정할 수 있습니다.
인덱스에 대해 저장 영역 매개변수를 명시적으로 설정한다면 적은 수의 대규모 확장 영역에 인덱스의 테이터를 저장할 수 있습니다.



--제약 조건 비활성화 또는 삭제 전의 고려 사항

고유 키와 기본 키는 인덱스와 관련이 있으므로 UNIQUE이나 PRIMARY KEY제약 조건을 삭제하려고 할때인덱스를 삭제하고 생성하는 비용은 고려해야 합니다.
UNIQUE난 PRIMARY KEY제약 조건에 관련된 인덱스가 아주 크면 큰 인덱스를 삭제하고 재생성하는 것보다 제약 조건을 남겨둠으로써 시간을 절약할 수 있습니다.

 

 


인덱스 생성

이 곳에서는 인덱스 생성 방법에 대해 설명하고 다음 내용을 다룹니다.

  1. 제약 조건과 관련된 인덱스 생성
  2. 명시적으로 인덱스 생성
  3. 기존 인덱스 재생성


관련된 인덱스를 생성하는 UNIQUE나 PRIMARY KEY를 활성화하려면 테이블의 소유자는 인덱스가 포함되어야 할 테이블스페이스에 대한 할당량 또는 UNLIMITED TABLESPACE시스템 권한이 있어야 합니다.

LONG과 LONG RAW열은 인덱스될 수 없습니다.

고유 키나 기본 키에서 고유 인덱스를 생성하면 UNIQUE 키나 PRIMARY KEY무결성 제약 조건이 강제로 시행됩니다.
이 인덱스는 제약 조건이 설정되면 자동으로 생성됩니다. 즉 인덱스 생성을 위해 CREATE TABLE이나 ALTERT TABLE명령문에 다른 추가 작업을 수행할 필요가 없습니다.
인덱스 제약 조건이 정의되고 활성화될 때 그리고 정의 되었지만 비활성화되었던 제약 조건이 활성화되었을 째도 자동으로 생성됩니다.

일반적으로 CREATE UNIQUE INDEX구문을 사용하는 것보다는 고유성을 강제로 시행하는 제약 조건을 생성하는 것이 더 좋습니다.
제약 조건에 관련된 인덱스는 항상 제약조건의 이름이 따르므로 제약 조건 인덱스에 특정 이름을 지정할 필요가 없습니다.

INITIAL과 NEXT같은 인덱스에 대한 저장 영역 옵션을 지정하지 않으면 자동으로 호스트 테이블스페이스의 기본 저장 영역 옵션이 사용됩니다.

1. 제약 조건과 관련된 인덱스 생성

USING INDEX옵션을 가진 ENABLE절을 사용하여 UNIQUE키와 PRIMARY KEY제약 조건과 인덱스에 저장 영역 옵션을 설정할 수 있습니다.
다음 명령문은 PRIMARY KEY제약 조건을 정의하고 관련된 인덱스의 저장 영역 옵션을 지정합니다.

CREATE TABLE EMP (
EMPNO NUMBER(5) PRIMARY KEY, ... )
ENABLE PRIMARY KEY USING INDEX
TABLESPACE USERS
PCTFREE 0;

2. 명시적으로 인덱스 생성

SQL 명령어 CREATE INDEX를 사용하여 무결성 제약 조건 밖에 명시적으로 인덱스를 생성할 수 있습니다.

다음 명령문은 EMP테이블의 ENAME열에 대해 명명된 EMP_ENAME인덱스를 생성합니다.

CREATE INDEX EMP_ENAME ON EMP ( ENAME )
TABLESPACE USERS
STORAGE ( INITIAL 20K
NEXT 20K
PCTINCREASE 75)
PCTFREE 0;

여러 저장 영역 설정이 인덱스에 대해 명시적으로 지정됩니다.

3. 기존 인덱스 재생성

데이터 원본으로 기존 인덱스를 사용하여 인덱스를 생성할 수 있습니다. 이러한 방법으로 인덱스를 생성하면 저장 영역 특성을 변경할 수 있고 새 테이블스페이스로 이동시킬 수도 있습니다.
기존 데이터 원본에 준하여 인덱스를 재 생성하면 블록 내부의 단편화를 제거하게 됩니다. 인덱스를 삭제하고 CREATE INDEX명령어를 사용하는 것보다는 기존 인덱스를 재생성하는 것이 더 나은 성능을 부여합니다.

기존 인덱스를 재생성하려면 다음 명령문을 실행합니다.

ALTER INDEX index_name REBUILD;

인덱스 이름 바로 뒤에 그리고 다른 옵션 앞에 REBULID절이 나와야 합니다. 또한 REBUILD절과 DEALLOCATE STORAFE절을 함께 사용하면 안됩니다.

 


인덱스 변경

인덱스를 변경하려면 인덱스가 스키마에 포함되어 있거나 ALTER ANY INDEX 시스템 권한이 있어야 합니다.
트랜잭션 입력 항목의 매개변수를 변경하거나 저장 영역 매개변수를 바꿀 때만 인덱스를 변경할 수 있으며 인덱스 열 구조는 바꿀수 없습니다.

SQL명령어 ALTER INDEX를 사용하면 기본 키와 고유 키 무결성 제약조건을 강제로 시행하는 매개변수를 포함하여 인덱스의 저장 영역 매개변수를 변경할 수 있습니다.
예를 들어 EMP_ENAME인덱스를 변경하는 명령문은 다음과 같습니다.

ALTER INDEX EMP_NAME
INITRANS 5
MAXTRANS 10
STORAGE ( PCTINCREASE 50 ) ;

인덱스의 트랜젝션 입력 항목 설정(INITRANS, MAXTRANS)을 변경할 때 INITRANS의 새로운 설정은 나중에 할강된 데이터 블록에만 적용되는 반면 MAXTRANS의 새로운 인덱스의 모든 블록(이미 할당되었거나 나중에 할당된 블록)에 적용됩니다.

INITIAL 과 MAXEXTENTS저장 영역 매개변수는 변경될 수 없습니다. 다른 저장 영역 매개변수의 새로운설정은 나중에 할당된 저장 영역에만 영향을 줍니다.

무결성 제약 조건을 구현하는 인덱스의 경우 USING INDEX옵션을 가진 ENABLE절을 포함하는 ALTER TABLE명령문을 실행하면 저장 영역 매개변수를 조정할 수 있습니다.
예를 들어 다음 명령문은 이전 단원에서 정의한 인덱스의 저장 영역 옵션을 변경합니다.

ALTER TABLE EMP
ENABLE PRIMARY KEY USING INDEX
PCTFREE 5;

 


인덱스 영역 사용 모니터링

인덱스에서 키 값이 자주 삽입, 갱신, 삭제되면 인덱스는 시간이 경과함에 따라 영역을 효율적으로 사용할 수도 있지만 사용하지 못할 수도 있습니다.
우선 인덱스의 구조를 분석한 다음 INDEX_STATS뷰를 질의하여 인덱스의 효율적인 영역 사용을 규칙적으로 모니터할 수 있습니다.

SELECT PCT_USED FROM SYS.INDEX_STATUS WHERE NAME = 'index_name';

인덱스 영역 사용 백분율은 인덱스 키 삽입, 갱신, 삭제 횟수에 따라 달라집니다.
인덱스 검증, PCT_USED검서 인덱스 삭제 및 재생성 등의 작업을 여러 번 수행하여 인덱스의 평균 영역 사용 효율성을 관리할 수 있습니다.
인덱스 영역 사용이 평균 이하로 떨어지면 인덱스를 삭제하고 재생성하여 인덱스 영역을 줄입니다.

 

인덱스 삭제

인덱스를 삭제하려면 인덱스가 스키마에 포함되어 있거나 DROP ANY INDEX시스템 권한이 있어야 합니다.

다음과 같은 경우에 인덱스를 삭제할 수 있습니다.
인덱스가 더 이상 필요하지 않을 경우
인덱스에 관련된 테이블에 질의를 수행했을 때 기대되는 성능향상을 제공하지 못한 경우
응용 프로그램이 데이터 질의에 인덱스를 사용하지 않을 경우
인덱스를 사용할 수 없게 되어 재구축 전에 삭제해야 할 경우
인덱스가 너무 단편화되어 재구축 전에 삭제해야 할 경우

인덱스를 삭제할 때 인덱스 세그먼트의 모든 확장 영역은 해당되는 테이블스페이스로 되돌려지며 테이블스페이스의 다른 개체에 사용할 수 있습니다.

인덱스를 삭제하는 방법은 CREATE INDEX명령문으로 인덱스를 명시적으로 생성했는지 또는 테이블에서 키제약 조건을 정의하여 암시적으로 생성했는지에 따라 다릅니다.

주 : 테이블이 삭제되면 관련된 모든 인덱스도 자동으로 삭제됩니다.

UNIQUE키나 PRIMARY KEY제약 조건이 설정된 인덱스만을 삭제할 수는 없습니다.
제약 조건과 관련된 인덱스를 삭제하려면 제약 조건 자체를 사용할 수 없게 하거나 삭제해야 합니다. 

DROP INDEX index_name; 

 

[출처] 인덱스 관리에 대한 지침 사항 |작성자 오라클

Posted by Finebe
,



스캔을 뜬 책을 하나 구했는데 이것을 텍스트로 전환하면 보기 더 편하지 않을까 해서,

그 방법에 대해 여러가지로 찾아보게 되었다. 역시나 나의 고민은 새로운게 아니였다.

수많은 프로그램과 사이트가 제공되고 있었다. 그 내용에 대한 정리를 해본다.

 

이미지에서 텍스트를 출력하는 기술은 OCR(Optional Character Recongnition) 이라고 한다.

이런 기능을 제공하는 무료프로그램과 사이트는 많이 있다.

 

한국인이 만든 무료 OCR 프로그램 사이트 :

http://home.megapass.co.kr/~woosjung/Product_JOCR.html

http://softi.co.uk/freeocr.htm

위에서 제시한 사이트는 프로그램을 다운받아서 사용하지만 네이버에서 제공하는 OCR

웹상에서 기능을 사용할수 있다. 개인적으로 제일 편리하고 좋은 것 같다.

http://t.lab.naver.com/ocr/

이미지 올리기 버튼을 클릭하여 파일을 올리면 이미지 적합성 여부와 인식률에 대한 정보가

나오게된다

이미지 문자 인식실행을 하게 되면 아래 화면과 같이 추출한 문자열이 텍스트 박스에 나오게된다

그리고 텍스트 파일로 저장할수 있다

MS Office 2003 에서 제공하는 텍스트 전환기능

Microsoft Office Document Imaging 실행한다

프로그램이 실행되면 스캔한 이미지나 확장자가 tiff, tif, mid 이미지 파일을 연다.

그러면 왼쪽에 축소된 이미지와 오른쪽에 확대된 이미지를 볼수 있을것이다

다음은 이미지에 들어있는 텍스트를 추출해본다.

도구 > OCR을 사용하여 텍스트 인식을 클릭한다

만약 설치 되지 않았으면 자동으로 설치해준다. 다 되었으면 드래그를 해보자. 텍스트 추출이

된 것은 그림과 같이 선택이 될것이다. 이것을 복사해서 쓰면되고 word 를 생성해서 보내고

싶다면 도구 > Word 로 텍스트 보내기 메뉴를 선택한뒤 창에 정보를 입력하고 저장하면된다

아래 그림은 워드로 추출한 내용인데 원본그림과 비교해보면 글자에 언더바가 있는부분은

추출을 못했다. 이 부분은 인식을 하지 못하나 보다

MS Office 2007 에서 제공하는 텍스트 전환기능

별도의 플러그인만 설치해주면 바로 PPT 파일 등을 다른이름으로 저장할 때 PDF 형태로 변환이 하다. 플러그인을 설치하기 위해서는 아래 주소에 가서 다운받는다.

http://www.microsoft.com/downloads/details.aspx?FamilyID=4D951911-3E7E-4AE6-B059-A2E79ED87041&displaylang=en&Hash=VM5qPiVObmsfUbk6fuPsgQfCSxW8qbU6M2cV4ht1%2bRWrQpeafeNQIpDuqlJV5GqeknkrT7yJ4yFv9AHX5IEDhQ%3d%3d



최고의 OCR 성능으로 이름 있는 러시아 ABBYY사에서 한글을 포함한 전세계 186개 언어를 인식할 수 있는 OCR 소프트웨어인 FineReader 10 Professional Edition을 국내 총판 협력사인 디오텍을 통해 출시했습니다. 시험판 다운로드는 http://abbyy.co.kr/data/abbyy/product/finereader.asp 입니다.


출처: http://mainia.tistory.com/439 좋은 정보감사합니다.
Posted by Finebe
,


여러개의 이미지 업로드할 수 있는 소스입니다.
참고사이트는
http://codeigniter.com/forums/viewthread/80610/
http://codeigniter.com/forums/viewthread/129011/

Controller

 
class Upload extends Controller {

    function Upload()
    {
        parent::Controller();
        $this->load->helper(array('form','url','file'));
        
    
    }
    
    function index()
    {
        
        $this->load->view('upload/upload_index'); //Upload Form
        
    }

    function picupload()
    {
        //Load Model
        $this->load->model('Process_image');

        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size']    = '2048'; //2 meg


        $this->load->library('upload');

        foreach($_FILES as $key => $value)
        {
            if( ! empty($key['name']))
            {
                $this->upload->initialize($config);
        
                if ( ! $this->upload->do_upload($key))
                {
                    $errors[] = $this->upload->display_errors();
                    
                }    
                else
                {

                    $this->Process_image->process_pic();

                }
             }
        
        }
        
        
        $data['success'] = 'Thank You, Files Upladed!';

        $this->load->view('upload/upload_pictures', $data); //Picture Upload View

        
        
        
    } 


Model
class Process_image extends Model {
    
    function Process_image()
    {
        parent::Model();
        
        $this->load->library('image_lib');
        //Generate random Activation code
        
        function generate_code($length = 10){
    
                if ($length <= 0)
                {
                    return false;
                }
            
                $code = "";
                $chars = "abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
                srand((double)microtime() * 1000000);
                for ($i = 0; $i < $length; $i++)
                {
                    $code = $code . substr($chars, rand() % strlen($chars), 1);
                }
                return $code;
            
                }

    }

function process_pic()
    {   
        //Connect to database
        $this->load->database();
        
        //Get File Data Info
        $uploads = array($this->upload->data());
        
        $this->load->library('image_lib');

        //Move Files To User Folder
        foreach($uploads as $key[] => $value)
        {
            
                        //Gen Random code for new file name
            $randomcode = generate_code(12);
            
            $newimagename = $randomcode.$value['file_ext'];
            
            //Creat Thumbnail
            $config['image_library'] = 'GD2';
            $config['source_image'] = $value['full_path'];
            $config['create_thumb'] = TRUE;
            $config['thumb_marker'] = '_tn';
            $config['master_dim'] = 'width';
            $config['quality'] = 75;
            $config['maintain_ratio'] = TRUE;
            $config['width'] = 175;
            $config['height'] = 175;
            $config['new_image'] = '/pictures/'.$newimagename;

            //$this->image_lib->clear();
            $this->image_lib->initialize($config);
            //$this->load->library('image_lib', $config);
            $this->image_lib->resize();
            
            //Move Uploaded Files with NEW Random name
            rename($value['full_path'],'/pictures/'.$newimagename);
            
            //Make Some Variables for Database
            $imagename = $newimagename;
            $thumbnail = $randomcode.'_tn'.$value['file_ext'];
            $filesize = $value['file_size'];
            $width = $value['image_width'];
            $height = $value['image_height'];
            $timestamp = time();
            
            //Add Pic Info To Database
            $this->db->set('imagename', $imagename);
            $this->db->set('thumbnail', $thumbnail);
            $this->db->set('filesize', $filesize);
            $this->db->set('width', $width);
            $this->db->set('height', $height);
            $this->db->set('timestamp', $timestamp);
            
            //Insert Info Into Database
            $this->db->insert('pictures');

        }
        
        
        
    }


View


Table
CREATE TABLE IF NOT EXISTS `img_pictures` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `imagename` varchar(100) NOT NULL,
  `thumbnail` varchar(100) DEFAULT NULL,
  `folder` varchar(255) DEFAULT NULL,
  `filesize` int(11) NOT NULL,
  `width` int(11) NOT NULL,
  `height` int(11) NOT NULL,
  `thumb_width` int(11) DEFAULT NULL,
  `thumb_height` int(11) DEFAULT NULL,
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8; 
Posted by Finebe
,


Posted by Finebe
,



CentOS 5.2 APM 구축 매뉴얼

 

 

1. APM설치 전 확인사항

APM을 설치 하기 위해서는 gcc와 gcc-c++ 컴파일러가 설치되어 있어야 한다. 추가적으로 설치해도 상관없지만
리눅스를 설치할때 추가적으로 이 라이브러리들을 선택하여 설치하면 수월하게 설치할 수 있다.

 

또한 phpmyadmin을 사용하기 위해서는 libmcrypt가 필요하며 yum으로 설치를 해봤으니 정상적으로 작동을 하지 않는것

같다. libmcrypt를 tar.gz파일을 다운받아 ./configure && make && make install 을 이용하여 설치하자

 

1.1 APM이 설치 되어 있는 확인

[root@kimsr /]# rpm -qa httpd php mysql
- 아무것도 출력되지 않을 경우 설치되지 않은것이며 패키지가 출력될 경우 아래 명령어로 제거하도록 합니다.


1.2 기존에 설치 되어 있는 Apache(httpd), php, mysql를 제거

[root@kimsr /]# yum remove -y httpd php mysql


1.3 라이브러리 및 컴파일 확인

[root@kimsr amp]# rpm -qa gcc* cpp* compat-gcc* flex*
[root@kimsr amp]# rpm -qa libjpeg* libpng* freetype* gd-*


1.4 라이브러리 및 컴파일 설치

[root@kimsr amp]# yum -y install gcc cpp gcc-c++ compat-gcc32-g77 flex
[root@kimsr amp]# yum -y install libjpeg-devel libpng-devel freetype-devel gd-devel


1.5 APM설치 파일 다운 로드

[root@kimsr /]# mkdir /amp
[root@kimsr /]# cd /amp
[root@kimsr amp]# wget http://apache.mirror.cdnetworks.com/httpd/httpd-2.2.10.tar.gz
[root@kimsr amp]# wget http://kr2.php.net/get/php-5.2.8.tar.gz/from/this/mirror
[root@kimsr amp]# wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.30.tar.gz/from/http://mysql.holywar.net/

 

2. MySQL 설치

[root@kimsr amp]# tar -zxvf mysql-5.1.30.tar.gz
[root@kimsr amp]# useradd -M -s /bin/false mysql
[root@kimsr mysql-5.1.30]# ./configure --prefix=/usr/local/server/mysql --with-charset=utf8 --with-extra-charsets=all
[root@kimsr mysql-5.1.30]# make && install

 

* configure시 아래와 같이 오류가 발생될 경우
checking for termcap functions library... configure: error: No curses/termcap library found

[root@kimsr apm]# yum -y install ncurses-devel


3. Apache 설치
[root@kimsr apm]# tar -zxf httpd-2.2.10.tar.gz
[root@kimsr httpd-2.2.10]# ./configure --prefix=/usr/local/server/apache --enable-mods-shared=alkl --enable-so --enable-rewrite
[root@kimsr httpd-2.2.10]# make && make install


4. PHP 설치
[root@kimsr apm]# tar -zxf php-5.2.7.tar.gz
[root@kimsr apm]# cd php-5.2.7
[root@kimsr php-5.2.7]# ./configure \
--prefix=/usr/local/server/php --with-apxs2=/usr/local/server/apache/bin/apxs \
--with-mysql=/usr/local/server/mysql --with-config-file-path=/usr/local/server/apache/conf \
--disable-debug --enable-safe-mode --enable-track-vars --enable-sockets \
--with-mod_charset --with-charset=utf8 --with-xml --with-language=korean \
--enable-mailparse --enable-calender --enable-sysvsem=yes --enable-sysvshm=yes \
--enable-ftp --enable-magic-quotes --enable-gd-native-ttf --enable-url-includes \
--enable-trans-id --enable-inline-optimization --enable-bcmath \
--with-jpeg --with-png --with-zlib --with-jpeg-dir=/usr --with-png-dir=/usr/lib \

--with-freetype-dir=/usr --with-libxml-dir=/usr --enable-exif --with-gd --with-ttf \

--with-gettext --enable-sigchild --enable-mbstring --with-mcrypt

컴파일 시 error: mcrypt.h not found 오류가 나면

libmcrypt가 정상적으로 설치되지 않은 것이다. libmcrypt.tar.gz 파일을 다운 받아 ./configure && make && make install로 설치

 

컴파일 시 configure: error: xml2-config not found. Please check your libxml2 installation. 오류가 나오면

yum install *-devel 이것도 안되면 아래와 같이 수행

 

libxml2 설치 - XML C 파서(Parser)
다운로드 :
ftp://xmlsoft.org/libxml2/
[root@localhost apm]# tar xvfz libxml2-2.6.16.tar.gz
[root@localhost apm]# cd libxml2-2.6.16
[root@localhost libxml2-2.6.16]# ./configure && make && make install
[root@localhost libxml2-2.6.16]# cd ..

[root@kimsr php-5.2.7]# make && make install


4.1 PHP 환경설정 파일 복사
[root@kimsr php-5.2.7]# cp php.ini-dist /usr/local/server/apache/conf/php.ini


본인도 APM을 설치하기위해 무단한 노력을 한거 같다. 몇번의 실패와 역경을 딛고 설치에 성고하였다.
모두 오류없이 설치할 수 있기를 기원하며 설치방법을 만들어 보았다.

 

이 내용은 어디까지나 설치까지만의 내용을 정리한 것이면 설치 완료 후 세팅해야 하는 사항들이 있다

mysql 기본 DB을 설정하거나 Apache httpd.conf 파일등을 수정해야 한다. 이 부분에 대해서는 추후에 올리는 내용에서

설명하도록 하겠다.

Posted by Finebe
,



안녕하세요. Microsoft REMIX09 행사 사이트가 오픈되었습니다.
 
URL: http://www.visitmix.co.kr/remix09/default.asp
 
저는 리믹스를 한번 간적이 있는데 REMIX07을 갔습니다. 그 땐 Silverlight 오픈전이라 Silverlight에 대한 설명을 쭈욱 해줬습니다.
 
마소사람들이 자주(?) 볼 수 있는 "개발자와 디자이너들과의 갈등"을  콩트로 표현하는 등 재미요소들도 있었습니다.
 
이번 행사에는 마이크로소프트의 글로벌한 대규모 투자프로그램인 WebsiteSpark의 발표와
 
획기적인 사용자 경험을 제공하는 차세대 웹 플랫폼 Silverlight 3, 효율적인 디자인과 개발을 가능하게 하는 Expression3가
 
발표된다고 합니다. 또한 저희가 사용가능한 Windows Server 2008 R2의 새로운 기능소개도 한다고 하니
 
관심있으신 분들은 참가해 보셔도 좋을 듯 합니다.
 
아참 행사에 참가하실 분은 사람들이 무척이나 많이 모이니 신종플루를 조심하시기 바랍니다.

전 08년도 리믹스: http://www.visitmix.co.kr/remix08.html
Posted by Finebe
,


제가 이번에 전세 계약을 하게 되어서 유의해야 할 점에 대해 알아보았습니다.

1. 집주인(임대인)과 직접 확인하고, 계약해야 합니다.
전세 물건의 임대인은 반드시 등기부상의 소유자라야 합니다.
등기부상의 소유자와 실제 소유자가 다른 경우도 있습니다. 그러나 전세계약은 반드시 등기부상의 소유자와 해야 합니다. 등기부상의 소유자가 아닌 실제 소유자와 계약을 하는 경우 법적인 보호를 받지 못합니다. 

2. 대리인과 계약하는 경우
집주인(임대인)의 배우자(대리인)가 집주인의 인감도장을 갖고 나와 계약을 했다고 하더라도 집주인의 위임장이 없다면 계약은 법적인 보호를 받을 수 없는 경우도 발생하게 됩니다. 대리인과 계약하는 경우엔 집주인의 인감증명서와 인감도장이 찍힌 위임장을 확인하는 게 좋습니다.

3. 계약하기 전 임차 물건의 등기부 등본을 떼어 권리관계를 꼭 확인해야 합니다.
임차주택의 등기부 등본을 계약하기 전 반드시 확인해서 가압류나 근저당이 설정되어 있다면 계약하지 않는 게 좋습니다. 나중에 전세 보증금을 떼일 위험도가 크기 때문입니다.(임차주택의 등기부 등본 사본은 중개업소에서 온라인을 이용해 간단히 열람 복사할 수 있습니다.)

4. 계약서에 확정일자를 받습니다.
계약을 체결한 뒤엔 동사무소에 가서 계약서에 확정일자를 받아야 합니다,(임차인이 직접 할 수 있으나 보통 중개인이 대행해 줍니다.) 유의사항은 주택임대차 확정일자 도장은 반드시 원본계약서에 받아야 법적인 효력이 있습니다.

주택임대차보호법 제3조 2항
   -공증기관에서 확정일자를 갖춘 임차인은 물건에 대해 문제가 발생하여 경매 또는 국세 징수법에 따른 공매를 할 때 그 밖에 채권자보다 우선하여 보증금을 변제받을 권리가 있다.

5. 계약은 반드시 공인중개사를 통해 합니다.
공인중개사를 통해 계약했다가 문제가 생길 경우 부동산 공제보험으로 최대 1억원까지 보상받을 수 있습니다. 계약과 관련된 모든 법적 서류들은 5년간 보관해 주므로 수수료를 아끼기 위해 큰 위험을 걸지 않는 게 좋습니다. 복비 아낄려다가 전세금이 날아가는 불상사는 없어야겠죠..

6. 등기부 등본을 세번 확인한다. – 계약전, 잔금입금전, 전입신고 전

등기부등본은 집의 체납담보상태를 모두 나타내는 증명서입니다. 근저당, 가등기, 가압류, 가처분 등을 꼼꼼하게 여러번 확인해야 피해를 예방할 수 있습니다.

7. 주민등록 이전과 동시에 전입신고
잔금 납부와 함께 입주하게 되는데, 이때 입주와 동시에 주민등록 전입신고를 합니다.
(동사무소 직원의 실수로 주소의 오기 등 문제가 생기는 경우에도 법적 보호를 받을 수 없게 되므로 주민등록등본과 등기부등본 등 기재내용을 잘 살펴보고 잘못 된 것은 즉시 정정해야 합니다.)


선택사항. 집주인의 동의를 얻어 전세권 설정을 한다면 더욱 확실한 법적 보호를 받을 수 있게 됩니다.
  전세권 설정을 하는 경우 등록세(전세금의 2%)와 교육세(등록세의 20%)가 추가됩니다.


출처:
http://tong.nate.com/progio/21026610 의 원본을 수정 및 내용추가하셨습니다.

Posted by Finebe
,


좌표구하는 서비스가 없어서 검색한 결과 한 사이트를 발견했습니다.

http://www.sumabout.com/address/

간단한 텍스트로만으로 해결가능합니다.
Posted by Finebe
,


 현대 사회는 급격한 사회 문화적 변화 속에서 인간관계로 인해 생기는 문제들이 점차 증가하고 있으며, 이러한 실정에서 인간관계에 대한 문제점을 해결하는 것이 인간관계에서 가장 중요한 점으로 부각되고 있습니다. 인간은 혼자서 살아갈 수 없는 존재이기에 주변의 타인들과 교류를 이어 오면서 상호자극이란 것을 통하여 상대방과 어느 정도 지속성을 갖는 상호작용을 거쳐서 일정한 심리적인 결속이 형성되어 짐은 알고 있을 것입니다. 저 또한 사회 구성원으로써 사회 안에서 다른 사람과 상호간에 영향을 받으면서 살아오고 있고, 또한 각 개인의 특징에 따라 나에 반응도 각 사람마다 틀려지게 된다는 것을 느끼고 있습니다. 또한 이러한 대인관계를 일반적으로 묶어 놓은 것을 인간관계라고 할 수 있겠습니다. 인간관계를 성공적으로 유지하기 위해서는 상대방이 무엇을 기대하고 있는가를 정확히 알아야 하며, 또한 기대를 충족시켜 주기 위한 행위가 정직·진실하여야 하고 신뢰성이 있어야 하며, 예측 가능하여야 할 것입니다. 만일 이러한 요건이 결여된다면 상대방에 대한 불만이 고조되어 갈등이 발생하고, 갈등을 해소하지 못하는 종국에는 인간관계가 단절되는 것입니다. 그러나 설령 불편한 관계일지라 하더라도, 그 사람과 화해 내지는 좀 더 원만하게 지내기 위한 노력을 하기도 합니다. 그 노력은 과연 무엇이 있을까요?


사람을 판단하는 그 첫 번째 인상. 그 인상을 좋게 유지하려면?


첫 인상이 아무리 좋았더라도 부정적인 정보를 접하면 쉽게 나쁜 쪽으로 바뀔 수 있다는 점을 명심해야 합니다. 열번 잘 하다가도 한 번 잘못하면 나쁜 이미지로 낙인찍히게 됨을 잊지 말아야 합니다.


좋아하면 판단할 필요가 없습니다.


사람들은 자기가 좋아하는 사람을 선택합니다. 따라서 성공적인 설득을 하고 싶다면 우선 상대방으로부터 호감을 사고(에토스), 감정에 호소한 다음(파토스), 필요성에 대한 논리적 근거를 제공하고(로고스), 마지막으로 상대방이 마음을 바꾸지 않도록 다시 에토스를 이용하는 순환과정을 거치는 것이 필요합니다.


신은 마음을, 사람은 겉모습을 먼저 봅니다


옷차림은 우리를 바라보는 사람에 대한 평가뿐 아니라 우리자신의 태도에까지 영향을 미칩니다. 다른 사람의 마음을 끄는 사람은 때와 장소에 어울리는 옷차림을 할 줄 압니다.


겉모습 때문에 내면을 보여줄 수 있는 기회를 놓친다면 그건 너무나 아쉬운 일입니다. 문밖에 발을 내딛는 순간부터 우리의 옷차림은 다른 사람에게 엄청난 양의 정보를 제공하게 된다는 사실을 명심합시다.


초록은 동색, 가재는 게 편


사람들은 자기와 비슷한 사람을 좋아하는 반면 자기와 공통점이 없는 사람들에 대해서는 반감을 느끼는 경향이 있습니다. 자주 보면 정이 들고 만나다보면 좋아집니다. 가까이서 자주 만날수록 호감도가 커지는 것은 보편적인 현상입니다. 따라서 좋은 관계를 유지하기 위해서는 간간이 안부를 묻고, 만나기가 힘들다면 책이나 신문 등 상대가 흥미를 느낄 만한 내용을 메일로 보내는 등 지속적인 노력이 필요합니다. 칭찬 방법을 바꾸면 관계가 달라집니다.


좋은 말도 자주 듣다 보면 식상하듯이 칭찬도 반복되면 그 효과가 급격히 줄어듭니다. 즉 신빙성이 떨어져 그 사람의 말을 신뢰하지 않게 됩니다. 부정적인 말을 했다면 반드시 칭찬이나 격려의 말로 마무리를 짓읍시다.. 언제나 시작보다는 끝이 중요합니다.


칭찬은 구체적으로 하는 것이 좋다.


또한 면전에서 칭찬하는 것보다 제3자에게 칭찬하는 것이 더 효과적인 경우가 많습니다. 다른 사람을 통해 듣는 칭찬은 인정받고 싶은 욕구와 자랑하고 싶은 욕구 두 가지를 모두 충족시킬 수 있다. 뿐만 아니라 칭찬을 전해 듣게 되면 두 명으로부터 칭찬을 받는 셈이 되기 때문에 면전의 칭찬보다 몇 배의 효과를 발휘할 수 있습니다.


나는 왜 나를 사랑해야 하는가


자기애가 깊은 사람들은 자신에게 만족하고 있기 때문에 자신을 과장해서 과시할 필요를 느끼지 못합니다. 교만하지 않으면서도 자신감이 넘치는 당당함으로 주변사람들을 덩달아 기분이 좋아지게 만듭니다.


다름을 인정하면 공감이 쉬진다


인간관계의 갈등을 줄이고 원만한 관계를 유지하기 위해서는 머릿속에서 ‘다른 것=나쁜 것’이라는 공식을 삭제해야 합니다.


사람들은 옳은 말을 하는 사람보다 자신을 이해해 주는 사람을 좋아한다.


사람들은 말을 잘하는 사람보다 잘 들어주는 사람을 더 좋아합니다. 관계의 문제는 말을 못해서가 아니라 제대로 듣지 못해서 생기는 경우가 훨씬 더 많습니다. 사람들은 말을 잘하는 사람보다 잘 들어주는 사람을 더 좋아합니다. 누군가 자신의 이야기를 들어주면 슬픔이나 분노가 해소되고 마음이 후련해집니다. 또한 존중받고 이해 받는다는 느낌이 들게 됩니다.


작은 빈틈이 마음을 열게 한다.


너무 완벽한 사람은 다른 사람들에게 열등감을 느끼게 만듭니다. 또 사람들은 결점을 드러내지 않는 사람에 대해 위선적이고 인간미가 없다는 고정관념을 갖고 있습니다. ‘사람들은 상대가 틈을 보일 때 마음의 문을 열게 됩니다. 스펀지가 공간을 갖고 있기 때문에 물을 빨아들이듯이 누군가가 다가오게 하려면 그가 들어올 수 있는 빈틈을 마련해두어야 합니다.


뒷담화, 만족은 짧고 후회는 길다


검지 하나로 손가락질을 하면 나머지 세 개의 손가락이 나를 향한다는 사실을 기억해야 합니다. 뒷담화의 유혹에 빠질 땐 스스로에게 ‘또 시작이야!’라고 하면서 자연스럽게 화제를 바꿔봅시다.


나는 당신이 좋아요


사람들은 자기가 좋아하는 사람을 친구로 선택하고, 좋아하는 사람을 도와주려고 하며, 좋아하는 사람으로부터 물건을 사고 싶어합니다. 또한 상대가 자기와 관련된 사람이나 일 또는 사물에 대한 호감을 보이면 우리는 자기자신에 대한 호감으로 받아들이는 경향이 있습니다.


함께 밥 먹고 싶은 사람이 되라


우리는 누군가와 가까워지고 싶을 때, 가장 흔한 표현으로 식사를 제안합니다. 먹거나 마시면서 이야기를 하면 대화가 더 쉽게 풀리고 음식을 접대한 사람에게 더 쉽게 설득됩니다. 왜 그럴까요? 뭔가를 받으면 그만큼 베풀어야 한다는 ‘상호성의 원리’가 작동하기 때문입다. 또한 맛있는 음식으로 인한 유쾌한 감정이 파급되기 때문입니다. 정말 기분 나쁜 사람을 ‘밥맛 없는 사람’이라고 하지 않습니까. 함께 밥 먹고 싶은 사람이 되도록 노력해봅시다.


관계를 알리고 싶은 사람이 되라


사람들은 자신을 승자와 연결시켜 자존심을 고양시키려는 반면, 실패자들로부터는 최대한 거리를 두어 자신의 이미지를 보호하려고 합니다. 다른 사람들은 당신과의 관계를 어떻게 평가하고 있을까요?


콤플렉스를 건드리면 돌부처도 돌아선다


차마 해서는 안 될 말로 상대방에게 상처를 입히는 것과 자신의 감정을 솔직하게 표현하는 것은 그 질이 다릅니다. “뭐 틀린 말했어?”라고 되물으면서 다른 사람의 아픈 곳을 건드리는 습관을 갖고 있는 사람이라면 다음과 같은 프랑스 속담을 명심해야 합니다. “진실만큼 마음에 거슬리는 것은 없다”


위대한 사람에겐 그를 믿어준 사람이 있다


프로이트는 자신이 위대한 사람이 되려고 노력했던 것은 “너는 장차 위대한 인물이 될 것이다”라는 어머니의 믿음 때문이었다고 말했습니다. 이처럼 가능성을 믿어주면 기대에 부응하는 결과가 일어납니다.


너무 멀지도 않게 너무 가깝지도 않게


사람들은 개인 공간이 침해당하면 반사적으로 불쾌감을 드러냅니다. 물리적 공간뿐 아니라 프라이버시도 침해당하고 싶지 않은 개인 공간입니다. 상대방이 말하고 싶지 않은 부분까지 시시콜콜 다 알고 싶어하는 것은 관심이 아니라 간섭이며 경계를 넘는 침입행위입니다.


사과 먼저, 변명은 나중에


잘못된 상황을 개선하려면 먼저 잘못을 인정하고 미안하다고 말해야 합니다. 해명은 그 다음에 할 일입니다. ‘미안하다’는 말은 마법과 같은 힘을 발휘합니다.


그 말은 다음과 같은 메시지를 동시에 전달합니다.


‘제 탓입니다’, ‘당신을 존중합니다’, ‘우리의 관계를 소중하게 생각합니다’. 다른 사람들과 평화롭게 지내기를 원한다면 절대로 ‘미안하다’는 말을 두려워해서는 안 됩니다.


당연한 일에서도 감사할 일을 찾아 보라


누군가를 당연하게 생각하면 우리 역시 당연한 존재로 취급당합니다. 감사란 그냥 저절로 느껴지는 것이 아니며 선택해야 하는 것이고, 배우면서 훈련해야 하는 것입니다. 감사란 고마워하기를 선택한 사람만 느낄 수 있는 의도적인 감정입니다.


퍼주고 망한 장사 없다.


먼저 베풀어도 당장 돌아오지 않을 때가 많습니다. 씨앗을 뿌리고 수확을 하려면 많은 시간이 걸리기 때문입니다.또한 씨앗을 열 개 뿌렸다고 열 그루 모두에서 수확할 수는 없습니다. 그러나 거두려면 먼저 뿌려야 합니다. 인간관계의 기본은 상대에게 이익을 주는 것이다. 무엇이든 심는 대로 거두는 것입니다.


끝은 언제나 또 다른 시작이다


첫 인상은 이미 지나간 일이기 때문에 더 이상 바꿀 수 없습니다. 하지만 끝 인상은 언제든 바꿀 수 있습니다. 아직 끝나지 않았기 때문입니다.


성공한 기업과 개인은 모두 주어진 일의 경계를 넘어 추가서비스를 할 줄 안다.

당신이 다수 대중과 차별화하고 싶다면 남들이 하지 않아도 된다고 믿는 뭔가를 추가로 해야 합니다. 이제 더 이상 만날 일이 없을 것이라고 여겨지는 순간이 곧 또 다른 시작임을 잊지 맙시다.



결론


 이외에도 원만한 인간관계 형성을 위한 방법들은 많습니다. 경우마다 다른 것이고 또 사람마다 다를 것입니다. 원만한 인간관계란 사람과 사람사이의 신뢰를 쌓아간다고 생각됩니다. 즉 신뢰란 진실한 인간관계 유지의 중요한 요소로서 상대방이 상호간 형성된 심리적 계약을 잘 준수할 것이라는 신념을 갖는 것입니다. 요컨대 앞에서 살펴본 바와 같이 서로간의 의견을 서로가 얼마나 수용, 동의하여 어떠한 변화를 나타내어 주는지 그 정도에 따라 원만한 관계 유지 그리고 지속적 관계 유지가 결정되는 것입니다.


Posted by Finebe
,



프로그래밍을 하다보면 중요한 부분이나 검색한 결과를 블로그에 정리하게 됩니다.
정리할 때는 아무래도 소스가 자주 들어가는 데요.  이전에는 그냥 본문과 같은 텍스트형태로 정리해거나 개발툴에서
이미지로 복사해서 올리거나 두가지중 한가지를 택해서 정리하는데 아무래도 나중에 재사용이 용이한 전자를 택하는 경우
가 많습니다.

일반적인 텍스트로 소스를 입력한 경우 단점:

  • 본문과 소스가 명확히 구분되지 않는다. 따로 구역을 설정해야 됨
  • 소스의 구문강조(형식의 틀에 따라 여러 가지 색과 글꼴로 다르게 보여 주는 개발툴의 기능)가 없어 이해력이 떨어짐.
  • 소스의 줄번호가 존재하지 않음.



이렇게 단점들이 존재하는 걸 알면서도 해결법을 적용하지 않았습니다. 최근에 와서야 블로그활동이 부지런해져서 그 해결법을 적용하게 되었습니다.

그 해결법은 SyntaxHighlighter입니다. 해석은 구문강조기라고 해야되나요..^^;
현재 많이 쓰여졌던 1.5버젼을 거쳐 2.0까지 나온 상태입니다.

SyntaxHighlighter는 자바스크립트와 CSS로 HTML태그를 변형시키는 구조입니다. 개인이 만들어도 만들 수 있을테지만.. 시간이 좀 걸릴 듯..
그럼 티스토리에 설치해보겠습니다.

1. 파일 다운로드 및 압축해제

다운로드: http://alexgorbatchev.com/wiki/SyntaxHighlighter:Download


 



다운로드 완료후 압축을 풉니다.



2. 티스토리 관리자페이지> 스킨 > HTML/CSS편집창으로 이동





3. 파일업로드


'파일업로드'탭버튼을 클릭하신 후 파일 업로드합니다. 압축을 푼 폴더 중 script, styles의 모든 파일들을 업로드 합니다.




4. HTML 태그 편집

파일업로드후 HTML/CSS편집 탭을 클릭하여 html  <head></head> 사이에 아래 그림과 같이 태그를 입력해 줍니다.





태그:

                                                                                                     

 



적용을 하게 되면 위 소스 처럼 나오게 됩니다.


※지원하는 언어들

프로그래밍 언어  태그 입력될 값 참조파일
ActionScript3 as3, actionscript3 shBrushAS3.js
Bash/shell bash, shell shBrushBash.js
C# c-sharp, csharp shBrushCSharp.js
C++ cpp, c shBrushCpp.js
CSS css shBrushCss.js
Delphi delphi, pas, pascal shBrushDelphi.js
Diff diff, patch shBrushDiff.js
Groovy groovy shBrushGroovy.js
JavaScript js, jscript, javascript shBrushJScript.js
Java java shBrushJava.js
JavaFX jfx, javafx shBrushJavaFX.js
Perl perl, pl shBrushPerl.js
PHP php shBrushPhp.js
Plain Text plain, text shBrushPlain.js
PowerShell ps, powershell shBrushPowerShell.js
Python py, python shBrushPython.js
Ruby rails, ror, ruby shBrushRuby.js
Scala scala shBrushScala.js
SQL sql shBrushSql.js
Visual Basic vb, vbnet shBrushVb.js
XML xml, xhtml, xslt, html, xhtml shBrushXml.js

위 링크들을 클릭하시면 소스를 보실 수 있습니다.


※ 사용방법



1. 블로그글쓰기에서 오른쪽 상단에 있는 버튼 html으로 변환
2. html모드 상태에서 쓸 위치에 가서

<PRE class="brush:php">

  <!-- 소스코드삽입 -->

</PRE>
입력한다.
3. "brush:" 뒤에 값은 원하는 프로그래밍 언어값으로 위 표를 보고 변경합니다.



더 자세한 내용은 http://alexgorbatchev.com/wiki/SyntaxHighlighter:Usage#Extracting_the_files 여기를 참조하시기 바랍니다.

써본 결과 입력하는 부분이 불편합니다. html모드를 바꿔가면서 해야 되기 때문입니다.
추후에는 Tistory에 클릭한번으로 바로 입력가능하고 프로그래밍언어도 선택가능한 플러그인을 한번 만들어 볼까 합니다. 언제가 될진 모르겠지만 ^^;

좋은 하루 되세요.

Posted by Finebe
,


Microsoft's Envisioning the Future

예전에 봤던 동영상입니다.

미래 비전을 보여주는 것인데요. 

한번의 터치로 여러장의 다른 카드를 사용할 수 있는 한장의 카드, 터치가능한 화면을 가진 신문, 전자여권, 식물를 사진으로 관찰 및 분석해주는 디지털기기..기타 등등.. 보지않고 설명하기 힘든 디지털기기들이 많이 등장합니다. 

대부분 터치기반으로 되어있어서 사용하기 아주 편리해 보이는 군요. 미래에는 마우스랑 키보드가 고대유물이 될지도...;;

오늘 아침에는 귀에 이어폰을 끼면 음악이 흘러나오듯이 안경이나 콘택트 렌즈를 착용하면 영상을 볼 수 있는 HUD(head-up display)기기의 상용화가 코앞으로 다가왔는 신문기사를 보았습니다. 일본의 렉서스가 헤드업디스플레이를 차용하여 전면 유리창에 운전자에게 필요한 정보(내비게이션)를 제공하는 기능을 갖출 예정이라는데....
 (출처:매일경제)


이렇듯 점점 시대는 빠르게 변화하고 새로운 것을 추구하는 데 비해...반면 저는 한자리에 머물러 가만히 관망만 하는 것이 아닌가하는 생각도 듭니다. 변화를 두려워 하지 않는 사람이 되어야 하는데 말이죠..



마음에 드시는 물건 있으신가요??
Posted by Finebe
,


오늘 6일 새벽에 함성이 울렸습니다.

함성을 울리게 한 주인공은 맨유의 박지성..

영국 런던 에미레이트 스타디움에서 열린 아스널과 2008-2009 UEFA 챔피언스리그 준결승 2차전 원정경기


선발로 나와 전반 8분경 선제골을 넣으면서 승리의 주역이 되었습니다.

축구를 그렇게 좋아하지 않는 나지만 박지성은 왠지 관심을 갖게 되고 또 그의 활약을 보게 되네요.

Posted by Finebe
,