레이블이 LINUX인 게시물을 표시합니다. 모든 게시물 표시
레이블이 LINUX인 게시물을 표시합니다. 모든 게시물 표시

2015년 7월 10일 금요일

[LINUX] UTC 타임 포멧과 UNIX TIME


http로 웹에 접속하여 openAPI인 날씨데이터를 받아오는 작업을 진행 중인데 이 데이타들 중에 재밌는 데이터가 있어서 찾아보았다.

현재 사용하고 있는 날씨 openAPI는 http://openweathermap.org 라는 곳에서 데이터를 받아오는데 아래와 같은 JSON 포멧으로 데이터를 받아오면 시간 'dt'가 이상한 숫자로 되어 있다.

{"coord":
{"lon":145.77,"lat":-16.92},
"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}],
"base":"cmc stations",
"main":{"temp":293.25,"pressure":1019,"humidity":83,"temp_min":289.82,"temp_max":295.37},
"wind":{"speed":5.1,"deg":150},
"clouds":{"all":75},
"rain":{"3h":3},
"dt":1435658272,
"sys":{"type":1,"id":8166,"message":0.0166,"country":"AU","sunrise":1435610796,"sunset":1435650870},
"id":2172797,
"name":"Cairns",
"cod":200}

"dt":1435658272 ???

시간 데이터라는데 이건 무슨 의미의 숫자인가?

하고 구글신께 물어보니 두가지의 표현법을 이용하여 시간을 표시하고 있었다.
먼저 첫번째는 UTC, 협정 세계시를 기준으로 시간을 표시하고 있다. UTC는 GMT(그리니치 평균시)와 큰 차이가 없어 혼용되어 사용되고 있는데 '기술적인 표기'에서는 UTC가 사용된다고 한다. 한국 같은 경우 UTC 시간에서 +9시간을 더하면 현재 한국 시간 맞춰진 시간을 알 수 있다.

문제는 여기서 표기법은 듣도보도 못한 숫자라는 것이다??

UTC로 표현하더라도 0000년00월00일 00시00분00초 로 나타내야하는데 이 숫자는 머지? 하고 보니 또 구글신께서 알려주시니!!

바로 'UNIX TIME' 이라는 것이다. 시각을 나타내는 방법으로 POSIX 시간 또는 Epoch 시간 이라고도 부르는데 골자는 1970년 1월 1일 00시 00분 00초를 기준으로 하여 협정 세계시(UTC)부터의 경과 시간을 초로 환산하여 정수로 나타낸 것 이다.

재미있지 않는가? 1970년도를 기준으로 초단위로 지금까지를 나타냈다니 다만 컴퓨터에서 32bit로 표현할 수 있는 숫자의 제한이 있다보니 2038년 1월 19일에 문제가 발생하게 된다. 이를 고치기 위해서는 64bit로 업그레이드가 필요한데 과연 언제쯤 업데이트 되려나?



2014년 12월 15일 월요일

[LINUX] vi 찾기, 찾아바꾸기

vi에서 특정문자를 여러개 바꾸기를 진행하다보니 예전에 썼었던 찾아바꾸기가 기억나지 않아 검색하고 있어서 이번에 정리를 좀 해보려고 한다. (LINUX 카테고리 잡아 놓고 vi만 쓰고 있다... )

우선 가장 기본적인 vi에서 검색은
그냥

/검색문자

하면 된다.
예를 들면

fgh를 검색하고 싶다 하면

/fgh 

하면 fgh가 모두 하일라잇 된다.

위에서 아래로 계속찾기 하려면 n 을 누르면 되고
아래에서 위로 다시찾기 하려면 N 을 누르면 된다.

반대로 찾기를 하기 위해서는

?fgh


하면 fgh가 모두 하일라잇 되며

/fgh와 반대로

위에서 아래로 계속찾기 하려면 N 을 누르면 되고
아래에서 위로 다시찾기 하려면 n 을 누르면 된다.


그럼 찾아바꾸기는 어떻게 하는 것인가??
조금 복잡하지만 일단 예문부터 보자

:%s/fgh/FGH


이렇게하면 전체에서 fgh가 FGH로 변하게 된다.

그럼 내가 원하는 부분만 바꾸려면?

:%s/fgh/FGH/c


c 옵션을 붙이므로써 y를 누르면 바뀌고, n를 누르면 다음으로 건너뛰고, a를 누르면 모두 바뀐다.

잠깐 정리하면 찾아바꾸기는

:(시작줄),(끝줄)s/(찾을패턴)/(바꾸는스트링)/옵션

이 되시겠다.

여러가지 예문을 써보면

:1,5s/a/b - 1번째 줄부터 5번째 줄까지 a를 b로 바꾼다.
:.,.+10s/a/b - 현재 커서위치 줄부터 현재커서위치줄 + 10줄 까지 a를 b로 바꾼다.

이런 식으로 사용할 수 있는 것이다.
이를 응용하면 정말 무궁무진해 지는데 ... 일단 여기까지만 설명 하도록 한다.
응용은 여러분드리 알아서~

마지막으로 옵션을 정리하면
g : global - 한 줄에 패턴이 여러번 나오면 모두 바꿈. 지정 안하면 줄에 첫번째 패턴만 변경
i : ignore case - 대소문자 구분 하지 않음
c : confirm - 검색된 모든 문자열에 대해서 마꿀지 말지 물어봄


2014년 10월 28일 화요일

[LINUX] vi 창분할하여 사용하기!

코딩 할때 자주 다른 파일에서 함수나 특정부분을 복사해서 사용할 때가 많다. 이럴 때 편리하게 사용하는 방법에 대해서 설명하고자 한다.

vi의 창분할 하여 복사 사용하기!
우선 편집하고자하는 파일을 vi를 통해서 연다.
$vi test.v


다음 명령어를 이용해 자신이 보기 편한 방법으로 화면을 분할 한다.
ctrl+w s : 현재 파일을 두개의 수평창으로 나눔
ctrl+w v : 현재 파일을 두개의 수직창으로 나눔


다음 명령어를 이용해 창을 옮긴다.
ctrl+ww : 다음 창으로 이동
(화면에서 초록색으로 표시된 커서의 이동을 확인하면 창을 이동한 것을 알 수 있다)

복사해 오고 싶은 함수나 특정부분을 포함하는 파일을 불러온다.
:e file_name


복사하고자 하는 부분을 블럭 지정하여 복사한다.
v : 블럭 설정
y : 블럭된 부분 복사



ctrl+ww를 이용하여 다시 창을 이동한 후 붙여 넣기 한다.
p : 복사한 부분 붙여 넣기



간단하지 않은가? 이렇게 하면 보다 쉽게 다른 파일에서 원하는 부분만을 복사해서 사용할 수 있다. 물론 마우스를 사용하거나 한다면 더 쉬울 수도 있지만 vi가 익숙해지면 마우스를 움직이는 것보다 더 빠를 수 있다. 또한 gui 환경이 지원되지 않을 때는 어떻게 할 것인가? 좋은 방법이라고 생각되니 가능하면 자주 사용하여 익혀두도록 하자. 마지막으로 창 나누기를 여러번 했을 때 스샷을 같이 첨부해 본다.


추가로 창을 분리 했을 때 창 크기를 조절하는 방법에 대해서 설명하고자 한다.

수평으로 창을 분할 했을 경우
ctrl+w N+ : N만큼 창 크기가 증가
ctrl+w N- : N만큼 창 크기가 감소

수직으로 창을 분할 했을 경우
ctrl+w N> : N만큼 오른쪽으로 증가
ctrl+w N< : N만큼 왼쪽으로 증가

공통
ctrl+w = : 창의 크기를 균등하게 조절

이상으로 vi를 사용할 때 파일간 복사에서 편리한 방법에 대해서 설명을 마친다. 자주 사용하고 익숙해 질 수록 편리한 vi 조금씩 조금씩 익혀보도록 하자!

2014년 9월 22일 월요일

[LINUX] vi의 꽃 macro(매크로) 사용법!


개인적으로 vi 사용하면서 일반적인 에디터 중에 가벼우면서 이만큼 강력한게 없는 것 같다는 느낌이 든다.
특히 코딩(C언어나 verilogHDL 다른건 안해봄) 할때는 vi는 정말 최적의 환경을 제공하는 것 같다.
따라서 그런 vi의 꽃이라고도 할 수 있는 macro(매크로)에 대해서 정리해 보고자 한다!!! 두둥

매크로라는 것은 특정한 움직임 또는 입력을 키에 저장함으로써 단순하면서 반복되는 동작을
쉽고 빠르게 해주는 것을 말한다.
vi에서 매트로는 명령어 모드에서 
q + 알파벳을 눌러 특정 알파벳에 매크로를 저장할 수 있다.

순서는
1. q + a       a키에 recording 시작
2. 반복을 위한 내가 원하는 동작
3. q             recoding 종료
4. @a          1회 실행 
or @@         방금 실행한 매크로 실행
or 10@a       매크로 10회 실행

위와 같은 순서로 매크로를 실행한다.
비교적 여기까지는 인터넷에서 손쉽게 찾을 수 있는 vi의 매크로 동작
그럼 응용 단계!
숫자 증가는 어떻게 하는가?~

1. 1 숫자 입력
2. 매크로 시작
3. 1 숫자를 복사해서 다음줄에 붙여넣기
4. 두번째줄 1에 커서를 올리고 Ctrl+a(숫자 증가)
5. 매크로 종료

위와 같이 한 후 매크로를 실행하면
1
2
3
4
5
6
.
.
.
이런 식으로 숫자가 증가하는 것을 볼 수 있다.
그럼 ? 1000000@a 이런식으로하면 ... 숫자 증가를 아주 손쉽게 할 수 있다.

더 예를 들면
2의 배수 라던지 8의 배수, 16의 배수, 32의 배수 등 증가를 쉽게 할 수 있다는 뜻 ㅠ
최근 verilogHDL 코딩하면서 vi의 매크로 기능으로 많은 시간을 아낄 수 있었기에
여기다 정리해 본다.
숫자 증가 매크로의 핵심 키는
ctrl + a (숫자 증가)
ctrl + x ( 숫자 감소)