Daily Archives: 2014년 10월 18일

MySQL 데이터형 및 크기

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 2 comments

자료형이 왜 필요하나? 먼저 자료형이 왜 필요하는지 부터 생각해보자. 컴퓨터 프로그램은 프로그래머가 의도한 대로 동작한다. 이 때 같은 목적의 프로그램이라고 할지라도 효율적으로 동작하는 것이 더 좋은 프로그램이 된다. “컴퓨터 알고리즘(Computer Algorithm)” 학문에서는 이를 평가(Performance Analysis)하기 위해서, “시간복잡도(time complexity)“와 “공간복잡도(space complexity)“라는 개념을 사용한다. 즉, “더 작은 공간을 사용하면서” , “더 빠르게 처리할수 있는” 프로그램을 만들기 위해서 데이터 자료형을 사용하는 것이다. 작은 공간에 넣을수록 연산(SELECT 등의 연산)이 빨라지고 공간도 적게 차지한다. 다음의 자료형 목록을 보면서 당신의 프로그램의 목적을 충분히 이룰 수 있는 작은 자료형을 찾아보도록 하자. 자료형에 관해 논의한 이 https://blog.lael.be/post/917 글도 한번 읽어보도록 하자. TINYINT[(M)] [UNSIGNED] [ZEROFILL] – 자료형의 크기 : 1바이트(1Byte, 2^8 = 8bit) – 범위 : -128 에서 127 (UNSIGNED 일 경우 0 에서 255)   SMALLINT[(M)] [UNSIGNED] [ZEROFILL] – 자료형의 크기 :…

OSI 7계층 중 홉 단위로 수행되는 계층과 종단간 수행되는 계층으로 구분

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 0 comments

OSI 7 layer 모형입니다. 가운데의 physical, data-link, network layer는 라우터를 나타낸 것으로 생략하는 경우가 종종 있습니다. 개략적인 모형으로 데이터 전송 처리 방식은 아래와 같습니다. 원래의 data packet에 각 층을 지날때마다 파일헤더를 추가함으로써 전달됨니다. (캡슐화, 디캡슐화) 홉단위라는 표현을 >노드(node)단위 라는 표현으로 쓰겠습니다. 데이터 링크 계층(L2;Level2;Datalink-Layer)에서는인접한 두 장치간, 즉 두 노드(node-to-node)간의 시스템간의 전송로상에서 발생하는 오류검출을 합니다. 여기서는 물리계층을 통해서 전송되는 bit 들을 제대로 전송되었는지 체크하는 아날로그적 검출 기능을 하고 손실되었으면 재 전송 요청을 합니다. data-link layer 에서는 실제로 장치가 어떤 데이터가 전송되는지 알고 검사 하는게 아니라 bit가 제대로 전송되었는지만 보는것입니다. 전송계층(L4;Level4;Transport-Layer)에서는종단시스템간(end-to-end)의 신뢰성있는 데이터 전송을 담당합니다. 즉 송신측이 보낸 테이터를 원래의 내용 그대로 수신측이 수신하는 것을 보장하는 역할을 수행합니다. 자료전달을 위해서 메시지는 작은단위의 packet으로 나뉘어 지고 전송됩니다. 전송계층에서는 이 패킷하나하나가 잘 도착했는지 확인하고…

SVN에서 일부 리비젼 정보삭제하기 (How to delete partial revision.)

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 0 comments

SVN 환경에서 일부 리비젼 삭제는 불가능합니다. 수동으로 다음과 같은 명령을 내리면 됩니다. 1. SVN Dump 원하는 리비젼을 덤프받습니다. svnadmin dump 프로젝트명 -r 35 > c.dump      //35번 리비젼만 덤프 svnadmin dump 프로젝트명 -r head > c.dump       //Head 리비젼만 덤프 svnadmin dump 프로젝트명 -r 35:head > c.dump   //35~head리비전을 덤프 2. 프로젝트 명 변경 mv 프로젝트명 movedproject 3. 프로젝트 생성 svnadmin create 프로젝트명 4. SVN 불러오기 svnadmin load 프로젝트명 -force-uuid < c.dump 5. 완료되면 기존 svn을 지운다 #주의 꼭 정상동작을 확인 하고 지워야 한다. rm movedproject #단점 : 리비전 번호가 바뀌므로 클라이언트에서 check-out 을 다시 해야 한다.

맥 OS는 32bit일까 64bit일까?

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 3 comments

황당한 경우가 발생했다. 맥용 이클립스 설치를 해야 하는데.. 응 뭐지?? Mac OS X 32 Bit 와 Mac OS X 64 Bit 에서 선택을 하게 되어있다.   맥은 애플에서 생산에서 유통망까지 관리한다는데 ..  선택 옵션이 필요하나? 몇번의 구글링 후에 찾아 내었다. — http://nabtron.com/is-my-mac-os-32-or-64-bit/3995/ You may need this info for some software that you want to install on your computer to confirm it’s compatibility or just out of curiosity too! So quick answer is: Mac OS X 10.5 and above (which means Leopard (10.5) and Snow Leopard (10.6) and any upcoming models hopefully) are all 64 bit operating systems. All currently being shipped mac’s have a 64 bit processor (intel) and 64 bit operating system. — 즉 현존하는 모든 Mac은 64bit다. APPLE은…

교통사고 합의요령

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 0 comments

교통사고 합의요령 자동차보험회사의 보상담당직원들은 입사시부터 철저한 교육을 받습니다. 교육의 목적은 당연히 회사의 이득을 극대화하기 위한 것이며 그 내용은 법률, 심리학, 행정, 협상기술 등을 망라합니다. 그리고 그들은 언제나 하루종일 교통사고 가해자, 피해자와 만나고 밥 먹고 하는 일이 늘 그것인 관계로 풍부한 경험과 노하우를 가지고 있습니다. 보상담당직원들은 이렇게 완벽하게 중무장하고 있는데 비하여, 피해자들 대부분은 평생에 한두 번 당하는 일이므로 관련지식이 전혀 없고 어떻게 대처해야 할지 정말 막막하기만 합니다. 그러나 “약자라고” 또는 “아는 것이 없다고” 해서 자동차보험사의 농간에 당하기만 하고 결국 치료도 못 받고 말도 안되는 쥐꼬리만한 합의금만 받고 끝내야 할까요? 절대로 아닙니다. 무조건 모른다고 하여 포기할 것이 아니라 조금만 공부하고 노력하면 자신의 권리를 제대로 챙길 수 있습니다.‘맞은 사람은 편안하게 두 발 뻗고 자고 때린 사람은 불안하여 밤잠을 설친다.’ 고 하였습니다. 맞은 사람은…

좋은 프로그래밍 언어는 무엇인가? (프로그래밍 언어의 역사)

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 0 comments

Programming Languages 라는 (컴퓨터공학 전공)과목을 들으면서 느낀점을 토대로 글을 작성해본다. 비록 쉽게 풀어서 쓰겠지만 (최대한 이해하기 쉽게 순화해서 작성) 약간의 전공용어(예시:유닉스, 객체지향, 스크립트, 인터프리트)를 사용하기 때문에 비전공자는 글 이해에 어려움이 있을 수도 있다.   먼저 글을 쓰기 앞서 구글에서 프로그래밍 언어에 대해서 검색해 보았다. 몇가지 흥미로운 그림을 나열한다. <그림 : Stackoverflow 커뮤니티의 언어별 검색횟수> 출처 : http://smthngsmwhr.wordpress.com/2012/11/19/measuring-popularity-of-programming-languages/   물론 검색횟수가 인기도를 뜻하는 것은 아니다. 위의 통계를 인용한 작성자가 (조심스럽게 말하길) 현재의 인기있는 12개의 언어는 C#, Java, PHP, JavaScript, C++, Python, Objective-C, C, Ruby, Perl, Shell, Visual Basic 라고 하였다.   <그림 : 어떤 프로그래밍 언어를 배우는 것이 좋을까?> 출처 : http://www.zappable.com/2012/11/picking-a-programming-language-chart/   위의 그림과 글을 작성한 분은 나름대로 철학이 있으시던데 어떤 프로그래밍 언어를 배워야하는지(그림에 대한 해석)에 대해서 적은 http://www.zappable.com/2012/10/learning-how-to-program-picking-a-langauge/ 글을 참고해주세요.     지금부터 좋은…

PHP Curl을 이용해서 Response header 값을 가져오기

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 0 comments

이번에 다음커뮤니케이션 시스템과 회원연동을 할 일이 있었다. 다음커뮤니케이션은 로그인인증시 결과값이 헤더에 나타난다.   많은 문서들이 curl_getinfo 를 사용하도록 하고 있지만 이것으로는 response 헤더값을 얻을 수 없다. curl_getinfo 는 request에 대한 헤더이지 response 의 헤더가 아니다. 참고로 아래의 구문을 추가하고, curl_getinfo를 하면 request header 를 살펴볼 수 있다. curl_setopt($ch, CURLINFO_HEADER_OUT, true);   따라서 response header 를 처리하는 함수를 만들었다.   request로 raw response header를 받고 본문을 잘라내어 버린다음 헤더내용만 파싱하여 배열로 추출한다.           header 파싱 예시

[클라우드 호스팅] 리눅스 하드디스크 파티션 설정하기

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 0 comments

아무튼 Linux에서 새로 추가한 하드디스크를 인식시키는 방법을 설명하겠다. [!!!! 주의 !!!!] Logical Volumn Group을 안만들고 단순하게 format하고 mount하는 방법도 있습니다!! 아래 설명할 방법은 그것보다는 까다로운 방법이니 더 간편한 방법을 원하시면 다시 검색해 보세요. 1. 디스크 장착여부 확인 fdisk -l 우선 제대로 하드디스크가 연결되었는지 확인해 보아야 한다. 명령의 결과를 보고 당신이 추가한 하드디스크가 인식되었는지, 또 기존 파티션 정보들을 볼 수 있다. 2. 파티션 정보 수정 위의 그림에서 라엘이가 추가한 디스크의 이름은 xvdb 이므로 아래와 같은 명령어를 실행한다. fdisk /dev/xvdb 파티션 설정 n (뉴) p 1(다 물리디스크라서 p 1 하면 된다) enter enter   t (타입) 8e (Linux LVM)   w (저장 – 저장하지 않으면 적용되지 않으니 작업중 실수가 발생했으면 저장하지 말도록 하자.) 2. 물리 장치파일 만들기 pvcreate /dev/xvdb1 3. 물리 장치…

javascript url 파싱 / 주소, 경로, 파라미터

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 1 comments

location.protocol : http: location.host : lael.be (주소) location.pathname : board/bo_table.php (경로) location.search : ?board_id=freeboard&seqs=24501&page=1&IsSearch= (파라미터) 응용소스 login_member 이면 진행, 아니면 로그인 페이지로 이동하는데 url 파라미터를 가지고 이동 1 2 3 4 5 6 7 8 9 function buy_this(){ if(! login_member()){  alert(‘회원전용입니다.’);  if(confirm(‘로그인페이지로 이동하시겠습니까?’)){  location.href=’/login.jsp?ret=’+encodeURIComponent(location.pathname+location.search);  }  return false;  } }   응용소스2 get파라미터 값을 얻어오는 소스 정규식 설명 : 앞에 ?& 두개중 하나가 있고 + 파라미터명= + 값(&# 제외)   1 2 3 4 5 6 7 8 9 10 11 function get_param_value( name ) {   name = name.replace(/[\[]/,”\\\[“).replace(/[\]]/,”\\\]”);   var regexS = “[\\?&]”+name+”=([^&#]*)”;   var regex = new RegExp( regexS );   var results = regex.exec( window.location.href );   if( results == null )     return “”;   else     return results[1]; }

[Javascript] form input only numbers 자바스크립트 숫자만입력

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 0 comments

배경  Javascript 로 사용자의 키 입력을 감지하여 숫자만 입력받습니다. 이 Javascript는 전화번호, 휴대폰, 생년월일등을 입력받을 때 주로 사용됩니다.   이론 onkeypress 이벤트를 사용하여 event.keyCode 값을 얻어냅니다. 숫자범위의 keyCode가 아니면 입력을 무효화 시킵니다. 하지만 다국어를 사용하여 keyCode가 얻어지지 않으면 예상된 반응을 하지 않습니다. 예를 들어 한글의 “홍” 이라는 단어를 입력도중 “ㅎ”를 입력했을 때 이것은 keypress 이벤트가 발생하지 않습니다. (완전한 입력으로 보지 않음) CSS의 ime-mode:disabled; 속성을 이용하여 다국어속성을 끄고 사용합시다. #주의 : ime-mode 라는 css속성은 브라우저에서는 정상적으로 지원하나 W3C 표준속성은 아닙니다. 하지만 원하는대로 동작하니까 쓰도록 합시다.   내용 숫자범위의 keyCode 값은 다음과 같습니다. 0(48)  ~ 9 (57)   Demo 1. 다음의 링크는 사용자가 입력한 키의 keyCode 값을 알려줍니다. 예제링크 : https://lael.be/Javascript-eventkeyCode-Value_ex01.html   2. ime-mode:disabled; 를 이용. HTML5의 number type를 이용. HTML5 를 지원하지…

[PHP] UTF-8 한글 및 다국어 글자수 자르기

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 5 comments

배경 인터넷이 전세계적으로 보급되면서 전세계 모든 언어를 다룰 수 있는 “다국어”라는 언어셋을 이용하게 되었다. 같은 내용을 저장했을 때 “다국어 언어셋”으로 작성된 문서는 “한국어 언어셋”으로 작성된 문서보다 용량이 크다. 요즘에는 필수적으로 웹사이트에서 다국어 언어셋(UTF-8 charset)을 사용합니다.   현재 가장 올바른 글자수 자르는 방법. 결과 : 7안녕? 반  

[Javascript] event.keyCode 코드값

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 6 comments

배경 Javascript 로 사용자의 키입력을 감지하여 함수를 처리할 수 있습니다.   이론 event.keyCode 는 ASCII 코드에 기반합니다.   내용 자주 사용되는 keyCode 값은 다음과 같습니다.   Key Code Reference Table 0 10 20 Caps Lock 30 40 Arrow Down 1 11 21 31 41 2 12 22 32 42 3 13 Enter 23 33 Page Up 43 4 14 24 34 Page Down 44 5 15 25 35 End 45 Insert 6 16 Shift 26 36 Home 46 Delete 7 17 Ctrl 27 Esc 37 Arrow Left 47 8 Backspace 18 Alt 28 38 Arrow Up 48 0 9 Tab 19 Pause/Break 29 39 Arrow Right 49 1 50 2 60 70 f 80 p 90 z 51 3 61…

한번에 끝내는 Ubuntu 웹서버세팅 (우분투 서버세팅)

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 323 comments

Last updated : 2018-05-18 Ubuntu 18.04 LTS 에서 설치하는 방법은 이곳에 : https://blog.lael.be/post/7264 Ubuntu 14.04 LTS 에서 설치하는 방법은 이곳에 : https://blog.lael.be/post/4518 글 비밀번호는 ubuntu 입니다.  이 글은 Ubuntu 16.04 LTS 에 맞추어 작성되었습니다. #16.10.04 무료 보안인증서(SSL) 적용방법이 추가됨 무료 보안인증서 설치방법이 추가되었습니다. HTTPS 사용을 원하신다면, 본문을 다 읽으신 후 다음의 글로 이동해주세요. https://blog.lael.be/post/5107 이 문서는 2010년 4월 12일에 처음 쓰여졌으며, 주기적으로 업데이트/유지보수 되고 있습니다. 이 문서는 항상 최신버전(Edge Version)의 세팅법을 설명합니다.   이 글에서는 자동화되고 유지보수 관리되는 설치방법을 설명하고 있습니다. 아래의 방법대로 설치한 후에 언제든지 명령을 사용하면, 항상 빠르고 안전한 최신버전의 서버 소프트웨어를 사용하실 수 있습니다. * 이 글은 Ubuntu 에 PHP 웹서버를 세팅하는 방법을 소개하고 있습니다. * PHP를 최신버전으로 구축하고 싶다면 https://blog.lael.be/post/2600 글로 이동하세요. (Nginx + PHP7-FPM + MariaDB) – CentOS 에서 PHP 를…