[JavaScript] GMT, 그리니치 표준시 구하기[JavaScript] GMT, 그리니치 표준시 구하기

Posted at 2019. 1. 25. 01:06 | Posted in JavaScript & jQuery/JavaScript
반응형






■ 사전 지식




#01. UTC, 협정 세계시


-. UTC(영어 : Coordinated Universal Time, 프랑스어 : Temps Universel Coordonné)

-. 1972년 1월 1일부터 시행된 국제 표준시이다. UTC는 국제원자시와 윤초 보정을 기반으로 표준화되었다.

-. TC는 그리니치 평균시(GMT)에 기반하므로 GMT로도 불리기도 하는데, UTC와 GMT는 초의 소숫점 단위에서만 차이가 나기 때문에 일상에서는 혼용되어 사용된다.

※ 기술적인 표기에서는 UTC가 사용된다.




#02. GMT, 그리니치 표준시


-. GMT(Greenwich Mean Time), 그리니치 표준시는 런던을 기점으로 하고, 웰링턴에 종점으로 설정되는 협정 세계시의 기준시간대이다.
-. 기준시간대여서 그리니치 표준시중 가장 빠른 시간대이다.
-. 협정 세계표준시(UTC)가 있지만, 아직도 영국 BBC 방송을 중심으로 GMT란 표현은 널리 쓰이고 있다.
-. 영국 런던에 소재한 그리니치 천문대를 기준으로하는 경도를 사용하기에 그리니치 천문대의 경도는 0.00이 됐다




#03. KST, 한국 표준시


-. KST(Korea Standard Time)는 대한민국과 조선민주주의인민공화국의 표준시로,

   일본 표준시와 같은 동경 135도를 기준으로 하여 UTC보다 9시간 빠른 표준시(UTC+09:00)이다.
-. 양국 모두 일광 절약 시간제는 사용하지 않고 있다.
-. 한반도의 경우 중앙을 지나는 동경 127도 30분을 기준으로 하여 처음으로 표준시(UTC+08:30)가 정해졌고,

   1908년 4월 1일부터 1911년 말까지 시행되었다.
   1912년 1월 1일에 일제 강점기의 조선총독부가 동경 135도 기준인 일본 표준시(UTC+09:00)와 동일하게 표준시를 변경하였고

   현재까지 한반도에서는 UTC+09:00를 표준시로 사용하고 있다.








■ 그리니치 표준시(GMT) 구하기




# 소스코드

<html>

<head>

<title>:: JavaScript 협정 세계시 ::</title>

<script language="javascript">

    document.addEventListener("DOMContentLoaded", function() {


        // 기본 시간 구하기

        var toTime = new Date();

        document.getElementById("toNow").innerHTML = toTime.toString();

        // KST와 UTC의 차이 - 분

        var min = toTime.getTimezoneOffset();

        document.getElementById("toMin").innerHTML = min;


        // KST와 UTC의 차이 - 시간

        var hour = toTime.getTimezoneOffset() / 60;

        document.getElementById("toHour").innerHTML = hour;

        

        // GMT(그리니치 표준시) 런던(GMT + 0) 시간 구하기

        var calGmt = toTime.setHours(toTime.getHours() + hour);

        var calGmt = new Date(calGmt);

        document.getElementById("toGmt").innerHTML = calGmt.toUTCString();

    });

</script>

</head>

<body>

    현재 한국 시간 구하기 : <span id="toNow"></span>

    <br/>

    KST와 UTC의 분 차이 : <span id="toMin"></span>

    <br/>

    KST와 UTC의 시간 차이 : <span id="toHour"></span>

    <br/>

    현재 그리니치 표준시(GMT+0)은? : <span id="toGmt"></span>

</html>




# 출력결과







반응형
//

[JavaScrpt] 파일업로드시 확장자 검사하기[JavaScrpt] 파일업로드시 확장자 검사하기

Posted at 2019. 1. 23. 11:48 | Posted in JavaScript & jQuery/JavaScript
반응형





참고 : https://code.i-harness.com/ko-kr/q/409d5d






■ 이미지 파일 업로드시 확장자 검사하기




# 소스 코드

<html>

<head>

<title>:: JAVASCRIPT 특정 문자열 검색 ::</title>

<script type="text/javascript">

function confirmFileExtension(file) {

console.log(file);

// 정규식을 사용히여 jpg, jpeg, png, gif, bmp등 이미지파일의 확장자를 가진것을 추려낸다.

var reg = /(.*?)\.(jpg|jpeg|png|gif|bmp)$/;

  if(file.match(reg)) {

alert("해당 파일은 이미지 파일입니다.");

} else {

alert("해당 파일은 이미지 파일이 아닙니다.");

}

}

</script>

</head>

<body>

    <h3>이미지 파일 검색</h3>

    <input type="file" id="imgFile"/>

    <br/>

    <input type="button" onClick="confirmFileExtension(imgFile.value);" value="업로드"/>

</body>

</html>





# 출력 결과








반응형
//

[JavaScript] 시간이 AM 혹은 PM인지 확인하기[JavaScript] 시간이 AM 혹은 PM인지 확인하기

Posted at 2019. 1. 22. 16:00 | Posted in JavaScript & jQuery/JavaScript
반응형




참고 : https://electronic-moongchi.tistory.com/83

참고 : https://code.i-harness.com/ko-kr/q/87a0ab




■ 현재 시간이 오전인지 오후인지를 나타내는 함수




# 소스 코드

<html>

<head>

<title>:: JAVASCRIPT 날짜 출력 ::</title>

<script type="text/javascript">

  document.addEventListener("DOMContentLoaded", function() {


    // 브라우저의 현재 날짜를 받아온다.

    var toMeridiemnew Date();

    document.getElementById("toMeridiem").value = toMeridiem.ampm();

  });


  // 현재 날짜값을 오전 or 오후 문자로 변환해주는 함수

  Date.prototype.ampm = function() {

      var hours = this.getHours() < 12 ? "오전" : "오후";

      // var hours = this.getHours() < 12 ? "AM" : "PM";

      return hours;

  }

</script>

</head>

<body>

    <h3>지금은 오전 or 오후 인가?</h3>

    <input type="text" id="toMeridiem" style="text-align:center;"/>

</body>

</html>





# 출력 결과






관련포스팅 : [JavaScript] 날짜 자동 포맷 함수





반응형
//

[Node.js] PM2 프로세스 관리 도구[Node.js] PM2 프로세스 관리 도구

Posted at 2019. 1. 22. 11:52 | Posted in Node.js
반응형





API : https://pm2.keymetrics.io/docs/usage/pm2-doc-single-page

참고 : https://blog.outsider.ne.kr/1197

참고 : https://jybaek.tistory.com/716






■ PM2( Process Manager )란?




· PM2는 노드 프로세스를 관리해주는 Node.js의 프로세스 매니저( Process Manager )이다.


· 서비스중인 Node.js 프로세스가 예상하지 못한 오류로 종료( exit ) 이벤트가 발생하면 해당 프로세스를 자동으로 재시작해준다.

  ( 주로 채팅이나 웹 서비스같은 계속 서버가 종료되지 않고 유지되어야 하는 경우에 사용된다. )


· 재시작이라는 점에서 유사한 매니저 프로그램으로 qmail에서 사용하는 svscna이 존재하지만, svscna은 그냥 죽으면 프로세스만 살리는 역할만 수행한다.


· PM2는 프로세스 재시작 이외에 로그처리등의 기능을 추가적인 기능을 제공한다.








■ PM2 설치



PM2는 한곳이 아니라 여러 곳에서 사용하게 되는 경우가 많아


기본적으로 글로벌( --global ) 셋팅으로 설치하는 것을 권장한다.



 $ npm install --global pm2




설치가 완료되면 아래 명령어를 실행하여


PM2가 정상적으로 설치가 되었는지 확인해 보자.




 $ pm2 version




위와같이 PM2가 정상적으로 설치된 모습을 확인할 수 있다.











■ PM2 실행




진행에 앞서 필요한 예제 파일을 하나 생성해보자.


간단한 http 모듈을 프로세스를 생성하여 예제로 사용할 것이다.



 pm2_test.js( 예제노드.js )

const http = require("http");


http.createServer(function(request, response) {

    response.writeHead(200, {"Content-Type":"text/html"});

    response.end("Hello World\n");

}).listen(52275, function() {

    console.log("Server Running at localhost:52273");

});




이제 PM2를 실행해볼 것이다.


위에서 작성한 예제노드.js 파일을 등록시켜보자.




#01. PM2에 프로스세 등록




먼저 PM2에 프로세스를 등록시켜 보자.


위에서 작성한 예제파일.js 파일을 실행시켜보려고 한다.


start 명령을 통해 진행할 수 있다.



 $ pm2 start 예제파일.js




start 옵션 명령을 통해 프로세스를 등록하면


PM2 리스트에 해당 프로세스가 등록된것을 바로 확인할 수 있다.


여기서 name 부분을 보면 예제노드의 이름이 자동으로 들어간 것을 확인 할 수 있는데.


--name "프로세스명" or "앱이름" 을 지정하여 원하는 명칭을 지정하여 지정하는것도 가능하다.




 $ pm2 start 예제노드.js --name "APP이름"



그럼 위와같이 name 항목에 예제파일( pm2_test )명이 아닌 직접 지정한 프로세스명( http_server )가 등록된 것을 확인할 수 있다.





#02. PM2에 등록된 프로세스 확인




그럼 위와같이 PM2에 해당 프로세스가 등록된 것을 확인 할 수 있다.


실행중인 PM2 목록을 다시 확인 하기 위해서는 list 명령으로 다시 확인 할 수 있다.



 $ pm2 list






#03. PM2 프로세스 정지




이제 등록된 예제노드를 정지 시켜 보자.


stop 명령을 통해 정지시킬 수 있는데 방법은 2가지 이다.


id 번호를 입력하거나, name으로 지정된( 예제노드.js  ) 파일명을 입력하면 정지 시킬 수 있다.



 $ pm2 stop 인덱스번호

 $ pm2 stop APP이름





#04. PM2 정지시킨 프로세스 재시작



정지시킨 PM2 항목은 다시 실행 시킬 수 있다.


start 명령 옵션을 통해 정시켰던 프로세스를 다시 실행 할 수 있다.


정지시켰던 프로세스를 다시 실행시켜보자.




 $ pm2 start 인덱스번호

 $ pm2 start APP이름



그럼 PM2 리스트 목록에 stoppedonline으로 변경된 것을 확인 할 수 있다.





#05. PM2 프로세스 삭제




위에서 등록된 PM2 프로세스를 정지시켜 보았다.


그럼 이번에는 그 반대로 아예 프로세스를 제거시켜 보도록 하겠다.


삭제는 delete 옵션을 통해 진행할 수 있다.



 $ pm2 delete 인덱스번호

 $ pm2 delete APP이름



그럼 위의 이미지와 같이 PM2 실행 리스트 창에


프로세스가 존재하지 않는 모습을 확인 할 수 있다.






#06. PM2 프로세스 상세 정보 확인



등록된 프로세서의 상세정보를 확인 해보자.


show 명령을 통해 확인할 수 있다.



 $ pm2 show 인덱스번호
 $ pm2 show APP이름










■ PM2 로그확인




#01. 로그파일( *.log )의 위치 변경



위 show 명령 옵션을 통해 PM2에 등록된 프로세스의 *.log파일의 위치가


기본적으로 자동으로 진행되는 것을 확인 할 수 있다.



정보

경로

 error log path

 기본경로$home .. /logs/프로세스명-error.log

 out log path

 기본경로$home .. /logs/프로세스명-out.log

 pid path

 기본경로$home .. /logs/프로세스명-0.log



이제 각 로그 파일의 위치를 로그를 직접 지정해보자.



# Sample - 로그 경로 변경

 $ pm2 start 예제노드.js --name "APP이름" --ouput ./로그파일.log

 $ cat 로그파일.log




# Sample - 로그 경로 변경

 $ pm2 start 예제노드.js --name "APP이름--ouput ./로그파일.log --error ./로그파일.log --merge-logs

 $ cat 로그파일.log





#02. 로그 옵션 설명



명령 옵션

설명

 --log | -l

 · 출력 및 오류 로그를 모두 출력할 파일의 경로 지정

 --outer | -o

 · 출력 로그 파일 지정 

 --error | -e

 · 오류 로그 파일 지정

 --time

 · 표준 형식 타임스탬프를 포함한 로그 출력

 --log-data-format

 · 사용자 지정 형식 지정 타임스탬프로 있는 로그 출력

 --merge-logs

 · 동일한 앱 이름( name )으로 여러 프로세스를 실행할 때 ID로 파일을 분할하지 않게 지정





#03. 로그 표시


 $ pm2 logs 인덱스번호

 $ pm2 logs APP이름








■ PM2 모니터링




PM2를 사용하면 애플리케이션의 리소스 사용을 간편하게 모니터링 할 수 있다.


터미널에서 메모리 및 CPU를 쉽고 직접적으로 모니터링이 가능하다.



 $ pm2 monit








반응형
//