Posted
Filed under 프로그래밍

mysql 에서 CHAR, VARCHAR 타입은 유사하다.

단지 저장하고 읽을 때만 살짝 다르다.

 

CHAR(40) 에 "mydata" 를 저장할 때, 6바이트를 저장하고 나머지 34바이트의 비어 있는 공간에는 공백을 채워서 저장한다.

그리고 읽어들일 때, 임의로 채워진 공백들은 제거되어서 읽혀진다. (물론, PAD_CHAR_TO_FULL_LENGTH 모드를 활성화하면 공백까지 다 읽어온다)

 

VARCHAR(40) 에 "mydata" 를 저장할 때, 6바이트를 저장하고, 뒤에 1바이트(255길이 미만) 또는 2바이트(255길이 이상)의 길이 정보를 추가한다.

따라서 VARCHAR 에는 공백을 채워넣지 않으므로, 가변 길이의 정보에 적합하다.

문제는 VARCHAR(40) 에 새로운 데이터가 업데이트 될 경우이다. 더 큰 길이의 데이터가 저장되면, 공간이 부족하여 새로운 저장 영역에 새로 할당해야 하기 때문이다. 이 때문에, 데이터 파편화가 심해진다.


테이블 ROW 중에 CHAR, VARCHAR 타입이 섞여 있으면 데이터 파편화는 발생할 수 밖에 없다. 파편화를 염두하고 설계한다면, 테이블의 데이터 타입 중에 VARCHAR 타입을 두어선 안될 것이다.

그러나 MySQL 에서는 다음의 쿼리를 적용하면 파편화를 막을 수 있다. 

ALTER TABLE tblname ROW_FORMAT = FIXED;

VARCHAR 타입을 CHAR 타입처럼 동작하도록 강제로 지정하는 것이다. 덕분에 저장 용량은 증가하지만, VARCHAR 로 인한 파편화로 성능 저하는 막을 수 있다.

 

물론 VARCHAR 로 선언한다고 무조건 파편화가 발생하는 것은 아니다. 앞서서 적은대로, 처음에 데이터를 INSERT 한 뒤에, 다른 크기의 데이터로 UPDATE 가 발생할 경우에 파편화가 발생하는 것이다.

그러므로 LOG 테이블처럼 INSERT 만 허용되는 테이블에는 이 문제가 적용되지 않을 것이다.

 

 

그리고, 다음의 쿼리를 통해서 저장된 데이터를 분석해볼 수도 있다.

SELECT * FROM tblname PROCEDURE ANALYSE();

 

 

마지막으로, 테이블 설계할 때부터 데이터 타입은 신중하게 고려하면 좋다. IPv4 문자열 주소는 CHAR(15) 형태로 한다든가, 아니면 아예 INT 값으로 저장할 수도 있다.(IPv6 라면 CHAR(39) 이다.)

그리고 MD5 암호키 정보는 CHAR(32) 형태로 하는 것이다.



출처 : http://netmaid.tistory.com/44

2013/04/23 14:07 2013/04/23 14:07
Posted
Filed under 프로그래밍

* 스크럼 (SCRUM) 구성요소
 Product Owner (제품 소유자)
 Scrum Master (스크럼 마스터)
 Scrum Team (스크럼 팀)
 Sprint (스프린트)
 Sprint Goal (스프린트 목표)
 Product Backlog (제품 백로그)
 Sprint Backlog (스프린트 백로그)
 Sprint Task (스프린트 작업)
 Sprint Planning Meeting (스프린트 계획 회의)
 Sprint Review Meeting (스프린트 검토 회의)
 Daily Scrum Meeting (일일 스크럼 회의)
 Scrum Retrospective Meeting (스크럼 회고 미팅)
 Velocity (속도)
 Release (릴리즈)
 Release Burndown Chart (릴리즈 번다운 챠트)
 Burndown Chart (번다운 챠트)
 Impediments (장애)


* 제품 소유자 (Product Owner)
 제품 백로그를 책임지는 사람
 고객 요구사항 식별을 대표하는 사람
 제품 소유자는 프로젝트 착수 시점부터 프로젝트 일원이 된다.

* 스크럼 마스터 (Scrum Master)
 프로젝트 관리자와 비슷하나, 관리자보다는 리더에 가까운 역할이다.
 팀에 봉사하는 역할을 수행 - Servant 리더십이 필요하다.

* 스크럼 팀 (Scrum Team)
 4~7명의 개발자로 구성된다.
 모두 함께 한다는 자세로 일한다.
 자기 주도적인 팀이다.
 팀원 스스로 의사결정을 한다.

* 스프린트 (Sprint)
 하나의 이터레이션을 의미한다.
 하나의 스프린트는 보통 30일 정도이다.
 
* 스프린트 목표 (Sprint Goal)
 스프린트 종료 시점에 시연이 가능한 결과를 얻는 목표를 수립한다.

* 제품 백로그 (Product Backlog)
 제품에 필요한 모든 기능을 담은 목록이다.
 백로그에는 기술적인 작업도 있고, 좀더 사용자 중심적인 작업도 있다.

* 스프린트 백로그 (Sprint Backlog)
 해당 스프린트에서 개발되는 제품 백로그
 
* 스프린트 태스크 (Sprint Task)
 제품 백로그를 개발하기 위해 필요한 작업이다.
 일반적으로, 시간단위로 분할되어진다.
 태스크가 분할되면, 팀 회의를 통해서, 개발할 담당자를 결정한다.
 
* 스프린트 계획 회의 (Sprint Planning Meeting)
 스프린트가 시작할 때마다 열린다.
 회의는 하루종일 열린다.

* 제품 소유자, 스크럼 마스터, 팀의 개발자 전체가 회의에 참석한다.
 스프린트 검토 회의 (Sprint Review Meeting)
 한달간의 스프린트를 마쳤을 때, 잠재적으로 출시 가능한 소프트웨어를 고객에게 검토를 받는다.
 가능한 비공식적인 미팅으로 수행한다. 형식적인 자료를 만들기 위한 시간을 줄이기 위함이다.
 
* 일일 스크럼 회의 (Daily Scrum Meeting)
 각 팀원은 다음과 같은 세가지 질문에 대답한다.
 어제 무엇을 했는가?
 오늘 무엇을 할 것인가?
 장애 요소는 무엇인가?

* 스크럼 회고 회의 (Scrum Retrospective Meeting)
 스크럼 검토 회의 종료후에 실시한다.
 스크럼 마스터와 팀은 다음 단계에서 좀 더 개선해야할 것이 무엇인 지를 정의한다.

* 속도 (Velocity)
 한 스프린트에서 개발해야할 스토리포인트 또는 제품 백로그 갯수이다.
 
* 릴리즈
 인도가능한 제품이 변화되는 모습
 하나의 릴리즈는 보통 하나 또는 여러개의 스프린트로 구성된다.

* 릴리즈 번다운 챠트 (Release Burndown Chart)
 프로젝트 진행 현황을 표시한 챠트

* 번다운 챠트 (Burndown Charts)
 하나의 스프린트에서 작업에 대한 완료 추이를 그린 챠트

* 장애 (Impediments)
 스크럼 팀이 효과적으로 일하는 것을 방해하는 요소

2013/04/16 10:55 2013/04/16 10:55
Posted
Filed under 프로그래밍
1.터미널에서 이클립스 폴더로 이동
2.vi Contents/Info.plist
3.</dict> 위에 
<key>NSHighResolutionCapable</key>
<true/>
추가후 저장
4.Info.plist 파일을 다른 폴더로 이동시켰다가 다시 Contents으로 이동 (맥OS가 파일캐싱을 하기때문임)
5.이클립스 실행

 

http://lists.apple.com/archives/webobjects-dev/2012/Jul/msg00004.html
2013/04/11 12:05 2013/04/11 12:05
Posted
Filed under 프로그래밍
사용자 삽입 이미지



2013/03/31 22:29 2013/03/31 22:29
Posted
Filed under 장난감

바람이 너무 많이 불어서 그냥 추락..ㅠㅜ





빅슬러와 사이즈 비교

사용자 삽입 이미지
2013/03/29 18:48 2013/03/29 18:48
Posted
Filed under 장난감
수캥이 만들어줬다..ㅋㅋㅋ
만드는거 보니까 난 만들고 싶지 않다..ㅋㅋㅋㅋ
무려 4시간~ 뜨아

사용자 삽입 이미지
사용자 삽입 이미지
2013/03/22 20:13 2013/03/22 20:13
Posted
Filed under 회사이야기

7년동안 수고많았다~~



사용자 삽입 이미지

사용자 삽입 이미지

2013/03/19 18:03 2013/03/19 18:03
Posted
Filed under 기타

오늘 교환받은 새 터치패드도 같은 현상이다
브라우져 링크 클릭하려고 한손가락으로 이동하면 스크롤이 강제로 되는거 아닌가...

아~ 이건 제품문제가 아니야...
로지텍에 전화 따르릉~
모르는 눈치...잘되는건데 왜 너만 안돼냐는...?
직접 테스트 해보고 알려 준단다
뭐....결과..?...예상대로 잘된다는말할것 같고..

너무 답답해서 영문 로지텍 포럼에서 검색해보니
SetPoint의 버그라고!!!!
로지텍 직원들이 답변은 USB를 뺐다고 꼽아보라는둥 이상한 소리만 하고 앉았다

나는 두손가락 확대축소기능을 사용하지 않는다.
두손가락 스크롤중에 의도하지 않은 확대축소 기능이 실행되기 때문에!

버그는 이렇다.
SetPoint에 스크롤에서 확대 및 축소 기능을 끈상태애서는 자동으로 스크롤이 된다는거다.
아 그래? 켜보고 다시 해봤다....
헐...정말 스크롤 안되네...

더 큰 문제는!!!!!
2011년 발매당시 부터 있던 문제인것 같은데 로지텍에서 아직까지 프로그램으로 수정하지 않고 있다면 하드웨어 문제인가?!

로지텍이 갑자기 의심스러워 지고 있다..


http://forums.logitech.com/t5/Mice-and-Pointing-Devices/T650-Touchpad-the-two-finger-scroll-suddenly-reacts-on-only-one/td-p/932132

http://forums.logitech.com/t5/Mice-and-Pointing-Devices/Very-Annoying-issue-with-my-T650/td-p/931694

2013/03/08 11:18 2013/03/08 11:18
Posted
Filed under 프로그래밍/JAVA
스프링의 스케쥴러를 사용하기 위해

servlet-context.xml에 task를 추가한다

xmlns:task=http://www.springframework.org/schema/task

xsi:schemaLocation 에도 추가
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.2.xsd

아래 내용도 추가
<task:executor id="executor" pool-size="5-10" queue-capacity="255" />
<task:scheduler id="scheduler" pool-size="3" />
<task:annotation-driven executor="executor" scheduler="scheduler" />


void타입의 return 이 없고 파라미터가 없는 메서드에 사용가능하다

@Scheduled(fixedRate=5000)

fixedRate : 지정한 시간 주기로 작업을 실행
fixedDelay : 지정된 시간 간격으로 작업을 실행
cron : cron 표현식을 이용해서 작업을 실행

5000 -> 5초


아래 오류 발생시...
cvc-complex-type.2.4.c: The matching wildcard is strict...

http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 이 부분을
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 으로 변경해주면
오류는 발생하지 않는다. (3.0에서 3.2로)


2013/03/04 17:29 2013/03/04 17:29
Posted
Filed under 장난감

첫비행~

2013/02/28 22:31 2013/02/28 22:31
Posted
Filed under 장난감

아주 콱 박혔네

사용자 삽입 이미지

2013/02/28 14:46 2013/02/28 14:46