리눅스의 부팅

리눅스 시스템을 부팅하면 가장 먼저 init라는 첫 번째 프로세스가 시작되고, init 프로세스와 연결된 프로세스들이 생성된다.

init 프로세스가 첫 번째 프로세스이기 때문에 PID(프로세스 아이디 : 프로세스를 구분하기 위한 식별자)는 1이다.

init 프로세스가 시스템을 초기화 하고 터미널 라인을 오픈하기 위한 작업을 시작하고, 표준 입력(stdin)과 표준 출력(stdout), 표준 에러(stderr)를 설정한다.

 

리눅스에서의 init 프로세스는 /etc/rc.d/init.d 디렉터리에 런레벨별로 설정되어 있는 쉘 스크립트를 실행하는데, 이 쉘 스크립트들은 chkconfig 명령을 사용하여 부팅 시 자동으로 실행 할 것인지, 실행하지 않을 것인지 설정 할 수 있다. 부팅시 수행 할 런레벨은 /etc/inittab 파일에 설정되어 있다.

런레벨

설정이 3이면 텍스트모드로 부팅하고,  설정이 5이면 그래픽 모드로 부팅한다.

페이지 로딩 시 스크립트 실행

$(window).load() : 해당 페이지의 모든 외부 리소스(js, css, font 등…)를 불러온 후에 실행합니다.

$(document).ready() : DOM객체만 불러온 후에 실행합니다. $(window).load() 보다 먼저 실행 됩니다.

winhttp를 이용한 HTTP 요청

위 소스에서 WinHttpOpenRequest 부분에 있는 L”/set_data.php?coordinate_x=123&coordinate_y=11″  부분을 변수로 바꾸려면 아래와 같이 하면 됩니다.

 

참고 : https://msdn.microsoft.com/en-us/library/aa384270(v=vs.85).aspx

참고자료 : http://scor7910.tistory.com/11

새로 생성한 Element에 대해 Listener 설정하기

HTML의 DOM이 완성된 이후에, 사용자 동작에 의해 jQuery나 JavaScript로 Text, Button, Select 등의 Element를 간혹 만드는 경우가 있습니다.

 

이렇게 만들어진 Element에 클릭을 한다던가, 마우스 오버를 했을 때의 동작을 제어가 필요할 때가 있습니다.

 

이렇게 생성된 Element는 $(document).ready(function() { … } 에서 선택자로 미리 선택하였을 때는, DOM에 해당 Element가 없기 때문에 Listener가 작동하지 않습니다.

 

이럴 때 아래와 같은 방법으로 하시면 되겠습니다.

사용자가 생성하게 될 Element에 class의 이름을 선택하여 사용 할 수 있습니다.

(“save_store”는  사용자가 생성하는 버튼의 class 입니다.)

구글맵 마커 + 마커 애니메이션 + 말풍선

 

Google Map V3 시작하기

기본적인 구글 맵 셋팅 입니다.

 

 

옵션으로 zoom은 “0~22″ 사이의 레벨로 설정 할수 있고, mapTypeId는 “ROADMAP, SATELLITE, HYBRID, TERRAIN”으로 지정 할 수 있습니다.

C, C++ Web Compiler

웹 환경에서 C, C++ 컴파일을 제공하는 서비스를 구현하고자 합니다.

 

말 그대로 내 컴퓨터에 컴파일러를 설치하지 않고, 웹에서 C, C++ 프로그램을 컴파일 하여 실행 결과를 화면에 출력하는 것이 목적입니다.

 

이미 http://sphere-engine.com/ 에서 판매하는 제품도있고, http://ideone.com/ 에서도 가능 합니다.

이 사이트들을 모토로 삼아 개발 하고자 합니다.

 

개발 할 때의 문제점, 진행 상황들을 포스트 할 예정입니다.

 

보안 적인 문제점들이 많이 걱정 되나, 일단은 적당한 수준 까지 개발 후에 신경 쓰려고 합니다.

알고리즘의 개요

  • 알고리즘(algorithm)
    • 특정 문제를 해결하기 위해 기술한 일련의 명령문
  • 알고리즘의 요건
    • 완전성과 명확성 : 수행순서와 결과가 완전하고 명확하게 명세
    • 입력과 출력
    • 유한성 : 유한한 단계 뒤에는 반드시 종료

 

  • ADL(Algorithm Description Language)
    • 알고리즘 기술을 위해 정의한 언어
    • 사람이 이해하기 쉽고, 프로그래밍 언어로의 변환이 용이
    • 의사코드 (pseudo-code) : ADL과 약간의 자연어로 기술한 것
    • ADL 알고리즘에서 프로그램으로의 변환
    • C언어와 유사
    • ADL 데이타
      • 타입 : 정수, 실수, 부울(Boolean), 문자
      • 변수 : 선언 없이도 사용가능
      • 배열 : 첨자는 0부터 시작
    • ADL의 명령문
      • 지정문 : ‘=’ 또는 ‘←’ 기호를 사용
      • 조건문 : if
      • 반복문 : for (i=1; i<n; i++) 또는 for i= [1, n)
        • [ = 이상 또는 이하, ) = 미만 또는 초과

Linux 웹서버에 SSL 인증서 설치

지인 분의 부탁으로 SSL인증서를 웹서버에 설치하게되었다.

페이스북의 Canvas라는 App인데, 이를 사용하려면 https를 사용해야만 해당 App을 쓸수있다고하여 SSL을 설치하게되었다.

 

1. Random State 생성

 

2. 개인키 생성

개인키를 생성하면 비밀번호를 입력하게 되는데, 이 비밀번호는 Apache 기동시 반드시 필요하므로 꼭 기억하도록 합니다.

잊으면 인증서를 재발급 해야 합니다.

 

3. CSR 생성

 

 

우선, 개인키 생성 때 입력한 비밀번호를 입력하고 순차적으로 입력합니다.

Country Name : 국가(C : country)에 해당하는 값

State or Province Name : 지방(ST : state)에 해당하는 값

Locality Name : 지역(L : locality)에 해당하는 값 (city, town 등)

Organization Name (eg, company) [My Company Ltd] : DN(Distinguish Name)에 포함될 기간명(O : organization)을 입력합니다.

Organizational Unit Name (eg, section) [] : DN에 포함될 부서이름(OU : organization unit)을 입력합니다.

Common Name (eg, your name or your server’s hostname) [] : SSL인증서를 사용하실 웹 서버의 Full domain name(host + domain name)을 입력합니다. ex) www.kisa.or.kr

추가 사항은 생략하셔도 됩니다.

 

이렇게 생성한 CSR파일을 SSL 인증서를 구매하는 업체에 전달하고, 이제 인증서를 기다리고 기다리고 기다리면 됩니다.

 

마지막으로 제 서버는 Apache 2.2.29인데, 컴파일 설치 할 때 mod_ssl 조건을 주지 않아 다시 컴파일해야 합니다.

기존의 소스 설치파일을 남겨 두었기 때문에 config.log 파일에 기존의 컴파일 명령어들이 남아있어 거기에 “–enable-ssl” 조건을 추가하여 새로 컴파일 후, 새로 설치된 Apache 아래의 /modules/mod_ssl.so 파일을 기존의 Apache 아래의 /modules/에 복사하고, 기존의 Apache의 htpd.conf파일에서 “LoadModule ssl_module       modules/mod_ssl.so”을 추가하고 Apache를 재시작하면 됩니다.

 

근데, 이상하다… 예전에 설치할땐 Apache아래의 bin에서 어떤 실행파일을 통해서 mod_ssl.so 파일을 등록해 주었는데, 다시하니 그런게없다… httpd -l 하니 mod_ssl.c가 보이지 않는다… 역시 다시 삽질해야한다… 그게 aspx라는 건데, mod_ssl.c 파일을 컴파일해서 mod_ssl.so파일을 만들어준단다. so파일을 conf파일에서 로드하면 문제없이 된다고 하니, 일단은 더 진행하지 않고 인증서를 기다려봐야겠다.

 


 

Apache 2.2.29에서 위 처럼 하면 SSL 모듈이 정상적으로 작동을 해서, httpd-ssl.conf 에서 ssl 관련 VirtualHost만 설정해주고 재시작하고, 개인키 생성 할 때 입력했던 비밀번호만 입력하면 됩니다.