'Programing'에 해당되는 글 17건

  1. 2023.01.10 Byte Order
  2. 2023.01.10 STL Chrono
  3. 2023.01.10 쉘 스크립트 기본 문법
  4. 2023.01.10 Timezone 변경하기
  5. 2023.01.10 Python 버전 관리
  6. 2023.01.10 CMake 여러 버전 사용하기!
  7. 2019.04.15 C++ Singleton 패턴
  8. 2019.04.15 C++ inline 함수
  9. 2019.04.04 네트워크 상태보기 netstat
  10. 2019.04.04 리눅스 접속 기록 확인
posted by 쿸크 2023. 1. 10. 15:48

Big Endian 은 사람이 숫자를 쓰는 방법과 같이 큰 단위의 바이트가 앞에 오는 방법

Little Endian 은 반대로 작은 단위의 바이트가 앞에 오는 방법

※ Network byte order 는 Big Endian

 

바이트 순서 전환

- n : network byte order

s : short(16bit)

l : long(32bit)

h : host byte order

 

ex) 0x12345678 의 32비트 데이터를 표현

Big Endian : 0x12 0x34 0x56 0x78

낮은 주소 -> 높은 주소

Little Endian : 0x78 0x56 0x34 012

낮은 주소 -> 높은 주소

 

posted by 쿸크 2023. 1. 10. 15:42

clock 종류 차이

 

system_clock - 1900년 1월 1일 을 기준으로 체크되는 시스템시간

⇒ PC 의 시스템시간이 변경되면 값도 거기에 맞춰서 면경

 

steady_colock - 시스템 시작 시간을 기준으로 체크되는 시간

⇒ 시스템 시간을 변경해도 값이 바뀌지 않음

⇒ 값이 증가만 되며 주로 성능체크 할 때 쓰임

'Programing > C, C++' 카테고리의 다른 글

C++ Singleton 패턴  (0) 2019.04.15
C++ inline 함수  (0) 2019.04.15
C++ MFC CreateProcess() 사용법  (0) 2017.11.08
C++ GetLastError() 리턴 값 의미  (0) 2017.11.08
posted by 쿸크 2023. 1. 10. 15:38

선언변수명=데이터 변수명=데이터 사이에 띄어쓰기는 허용되지 않음

 

# 리스트 변수 (배열)

  - 선언

    변수명=(데이터1 데이터2 데이터3 ...)

  - 사용

daemons=("httpd" "mysqld" "vsftpd")

echo ${daemons[1]} # $daemons 배열의 두 번째 인덱스에 해당하는 mysqld 출력

echo ${daemons[@]} # $daemons 배열의 모든 데이터 출력

echo ${daemons[*]} # $daemons 배열의 모든 데이터 출력

echo ${#daemons[@]} # $daemons 배열 크기 출력

 

filelist=( $(ls) ) # 해당 쉘스크립트 실행 디렉토리의 파일 리스트를 배열로 $filelist 변수에 입력

echo ${filelist[*]} # $filelist 모든 데이터 출력

 

# 조건

- 조건문 문법

if [ 조건 ]
   then 명령문
else 
    명령문
fi

또는 

if [ 조건 ]; then 명령문; fi

 

 

- 문자 비교

문자1 == 문자2 # 문자1 과 문자2가 일치
문자1 != 문자2 # 문자1 과 문자2가 일치하지 않음
  -z 문자 # 문자가 null 이면 참
  -n 문자 # 문자가 null 이 아니면 참
문자 == 패턴 # 문자열이 패턴과 일치
문자 != 패턴 # 문자열이 패턴과 일치하지 않음

 

- 수치 비교 

  ( <, > 는 if 조건시 [] 를 넣는 경우 정상 동작하기도 하지만, 기본적으로 다음 문법을 사용하는 것을 권장 )

값1 -eq 값2 # 값이 같음(equal)

값1 -ne 값2 # 값이 같지 않음(not equal)

값1 -lt 값2 # 값1이 값2보다 작음(less than)

값1 -le 값2 # 값1이 값2보다 작거나 같음(less or equal)

값1 -gt 값2 # 값1이 값2보다 큼(greater than)

값1 -ge 값2 # 값1이 값2보다 크거나 같음(greater or equal)

 

- 파일검사

-e 파일명 # 파일이 존재하면 참
-d 파일명 # 파일이 디렉토리면 참
-h 파일명 # 심볼릭 링크파일
-f 파일명 # 파일이 일반파일이면 참
-r 파일명 # 파일이 읽기 가능이면 참
-s 파일명 # 파일 크기가 0이 아니면 참
-u 파일명 # 파일이 set-user-id가 설정되면 참
-w 파일명 # 파일이 쓰기 가능 상태이면 참
-x 파일명 # 파일이 실행 가능 상태이면 참

 

- 논리 연산

조건1 -a 조건2 # AND
조건1 -o 조건2 # OR
조건1 && 조건2 # 양쪽 다 성립
조건1 || 조건2 # 한쪽 또는 양쪽다 성립
!조건 # 조건이 성립하지 않음
true # 조건이 언제나 성립
false # 조건이 언제나 성립하지 않음

 

# 반복문

- for문 문법

for 변수 in 변수값1 변수값2 ...
      do 명령문
done

 

- while문 문법

while [ 조건문 ]
     do 명령문
done

'Programing > 리눅스' 카테고리의 다른 글

Timezone 변경하기  (0) 2023.01.10
Python 버전 관리  (0) 2023.01.10
CMake 여러 버전 사용하기!  (0) 2023.01.10
네트워크 상태보기 netstat  (0) 2019.04.04
리눅스 접속 기록 확인  (0) 2019.04.04
posted by 쿸크 2023. 1. 10. 15:26

timedatectl list-timezones | grep Seoul

timedatectl set-timezone Asia/Seoul

 

root 권한이 필요하다.

sudo 이용!!

'Programing > 리눅스' 카테고리의 다른 글

쉘 스크립트 기본 문법  (0) 2023.01.10
Python 버전 관리  (0) 2023.01.10
CMake 여러 버전 사용하기!  (0) 2023.01.10
네트워크 상태보기 netstat  (0) 2019.04.04
리눅스 접속 기록 확인  (0) 2019.04.04
posted by 쿸크 2023. 1. 10. 15:24

python 도 cmake 와 비슷하게 여러버전을 동시에 설정해가면서 쓸 수 있다!

 

$ update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1

$ update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

$ update-alternatives --config python

2 개의 프로그램이 'python'를 제공합니다.

선택 명령

-----------------------------------------------

     1 /usr/bin/python2.7

*+ 2 /usr/bin/python3.6

현재 선택[+]을 유지하려면 엔터키를 누르고, 아니면 선택 번호를 입력하십시오: 

'Programing > 리눅스' 카테고리의 다른 글

쉘 스크립트 기본 문법  (0) 2023.01.10
Timezone 변경하기  (0) 2023.01.10
CMake 여러 버전 사용하기!  (0) 2023.01.10
네트워크 상태보기 netstat  (0) 2019.04.04
리눅스 접속 기록 확인  (0) 2019.04.04
posted by 쿸크 2023. 1. 10. 15:18

cmake 를 여러 버전 사용하는 방법

 

1. 버전별 링크 등록하기

$ sudo alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake 10 \

--slave /usr/local/bin/ctest ctest /usr/bin/ctest \

--slave /usr/local/bin/cpack cpack /usr/bin/cpack \

--slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake \

--family cmake

 

$ sudo alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 \

--slave /usr/local/bin/ctest ctest /usr/bin/ctest3 \

--slave /usr/local/bin/cpack cpack /usr/bin/cpack3 \

--slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 \

--family cmake

 

$ sudo alternatives --install /usr/local/bin/cmake cmake /root/install/cmake-3.24.2-linux-x86_64/bin/cmake 30 \

--slave /usr/local/bin/ctest ctest /root/install/cmake-3.24.2-linux-x86_64/bin/ctest3 \

--slave /usr/local/bin/cpack cpack /root/install/cmake-3.24.2-linux-x86_64/bin/cpack3 \

--slave /usr/local/bin/ccmake ccmake /root/install/cmake-3.24.2-linux-x86_64/bin/ccmake3 \

--family cmake

 

2. 버전별로 선택해서 사용하기

$ sudo alternatives --config cmake

 

There are 2 programs which provide 'cmake'.

Selection Command

-----------------------------------------------

     1 cmake (/usr/bin/cmake)

*+ 2 cmake (/usr/bin/cmake3)

 

Enter to keep the current selection[+], or type selection number: 1

 

$ update-alternatives

 

 

'Programing > 리눅스' 카테고리의 다른 글

Timezone 변경하기  (0) 2023.01.10
Python 버전 관리  (0) 2023.01.10
네트워크 상태보기 netstat  (0) 2019.04.04
리눅스 접속 기록 확인  (0) 2019.04.04
리눅스 CPU 정보확인  (0) 2017.11.01
posted by 쿸크 2019. 4. 15. 16:47

싱글톤 패턴

- 쉽게 구현되어서 자주 사용되는 디자인 패턴 중 하나-

- 계속 생성하여도 실제로 생성되는 객체는 하나인 패턴이다.

- 최초 이후에 호출된 생성자는 최초의 객체를 리턴 하는 방식

 

특징

- 공통적으로 쓰이는 자원을 관리, 저장 등을 하는 역할 할때나 Pool ( 쓰레드풀, 커넥션풀 등) 에서  자주 사용한다

단점

- 전역변수와 같은 비슷하여 코드를 독해력을 낮춘다

- 멀티스레딩 같은 동시성 프로그래밍에 좋지 않다.

 

종류

 - 기본, 다이나믹, 스테틱 지역, 피닉스 등이 있다

 

작성자 본인은 로그 라이브러리나 설정파일 읽는 작업 등을 할 때 주로 사용했다. 기본 싱글턴만 써봄

'Programing > C, C++' 카테고리의 다른 글

STL Chrono  (0) 2023.01.10
C++ inline 함수  (0) 2019.04.15
C++ MFC CreateProcess() 사용법  (0) 2017.11.08
C++ GetLastError() 리턴 값 의미  (0) 2017.11.08
posted by 쿸크 2019. 4. 15. 16:27

inline 함수

내부에서 작성된 코드의 속도와 함수의 장점을 결합하는 방법
컴파일러에서 함수를 인라인 함수로 처리하도록 요청한다. 컴파일러가 코드를 컴파일하면 모든 인라인 함수가 인-플레이스(in-place) 확장된다. 즉, 함수 호출이 함수 자체의 내용 복사본으로 대체되어 함수 오버헤드가 제거된다

 

특징

- 인라인 함수를 사용하려면 함수 선언 앞에 inline 이라는 키워드를 붙이거나 함수 정의 앞에 inline이라는 키워드를 붙인다.

- 클래스 멤버 함수가 inline을 사용하려면, 함수 정의의 위치가 *.h에 있어야 한다. 안 그러면 확인할 수 없는 외부 참조라고 뜬다.

- 프로그래머가 inline 선언을 해도 컴파일러가 인라인화를 거부할 수 있다.

- 프로그래머가 inline 선언을 안 해도 컴파일러가 인라인화를 할 수 있다.

- 함수의 덩치가 크거나 재귀호출이면 inline 요구를 거절하는 컴파일러도 있다.

- 함수 코드의 수행 시간이 짧고 빈번하게 호출되는 함수가 아니라면, 인라인 함수로 인한 절대적인 시간 절약은 그다지 크지 않다.

 

장점

- 함수 내부의 코드를 재사용할 수 있다.

- 인스턴트 코드보다 함수에서 코드를 변경하거나 업데이트하기가 더 쉽다.

- 함수 이름을 통해 코드가 무엇을 의미하는지 이해하기 더 쉽다.

- 함수는 함수 호출 인수가 함수 매개 변수와 일치하는지 확인하기 위해 타입 검사를 한다. (매크로는 안한다.)

- 함수는 프로그램을 디버그하기 쉽게 만든다.


단점

인라인 함수가 모든 함수 호출에 대해 적절한 위치에서 확장되므로 인라인 함수가 길거나 인라인 함수를 여러 번 호출하는 경우 컴파일된 코드를 약간 더 크게 만들 수 있다.
- 메모리 사용 측면에서는 인라인 함수가 일반 함수보다 불리하다. 이유는 어떤 프로그램에서 인라인 함수를 열 번 호출한다면, 프로그램은 그 함수의 사본을 프로그램의 코드 안에 열 번이나 삽입해야 하기 때문이다.

- 매크로 함수와 달리 자료형에 독립적이지 못 하다. 단, 템플릿을 이용하면 자료형에 독립적으로 사용할 수 있다.

'Programing > C, C++' 카테고리의 다른 글

STL Chrono  (0) 2023.01.10
C++ Singleton 패턴  (0) 2019.04.15
C++ MFC CreateProcess() 사용법  (0) 2017.11.08
C++ GetLastError() 리턴 값 의미  (0) 2017.11.08
posted by 쿸크 2019. 4. 4. 12:13

netstat -anp | grep LISTEN | grep :포트번호
ex) netstat -nap | grep LISTEN | grep :80

 

netstat 명령어 옵션 

-a : 현재다른PC와 연결(Established)되어 있거나 대기(Listening)중인 모든 포트 번호를 확인

-r : 라우팅 테이블 확인 및 커넥션되어 있는 포트번호를 확인
-n : 현재 다른PC와 연결되어 있는 포트번호를 확인(IP주소로 화면 출력)한다
-e : 랜카드에서 송수한 패킷의 용량 및 종류를 확인
-s : IP, ICMP, UDP프로토콜별의 상태를 보여줌
-t : tcp protocol
-u : udp protocol
-p : 해당프로토콜을 사용하는 프로그램, 프로세스 ID 보여줌
-c : 1초 단위로 보여줌

'Programing > 리눅스' 카테고리의 다른 글

Python 버전 관리  (0) 2023.01.10
CMake 여러 버전 사용하기!  (0) 2023.01.10
리눅스 접속 기록 확인  (0) 2019.04.04
리눅스 CPU 정보확인  (0) 2017.11.01
백업 및 복구  (0) 2017.11.01
posted by 쿸크 2019. 4. 4. 12:11

last -f /var/log/btmp

 

cat /var/log/secure | grep 'sshd.*Invalid'

 

ls /var/log/secure | xargs grep -E "[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+" -o | sort | uniq

'Programing > 리눅스' 카테고리의 다른 글

Python 버전 관리  (0) 2023.01.10
CMake 여러 버전 사용하기!  (0) 2023.01.10
네트워크 상태보기 netstat  (0) 2019.04.04
리눅스 CPU 정보확인  (0) 2017.11.01
백업 및 복구  (0) 2017.11.01