0%

할당연산자

a = 10, b = 20 이라고 가정하겠습니다.

Operator Description Example
= 왼쪽 변수에 오른쪽 값을 할당한다. c = a + b > c = a + b
+= 왼쪽 변수에서 오른쪽 값을 뺴고 결과를 왼쪽 변수에 할당한다. c += a > c = c + a
-= 왼쪽 변수에 오른쪽 값을 곱하고 결과를 왼쪽 변수에 할당한다. c -= > c = c - a
*= 왼쪽 변수에 오른쪽 값을 곱하고 겨로가를 왼쪽 변수에 할당한다. c *= a > c = c * a
/= 왼쪽 변수에서 오른쪽 값을 나누고 결과를 왼쪽변수에 할당한다. c /= a > c = c / a
%= 왼쪽 변수에서 오른쪽 값을 나눈 나머지의 결과를 왼쪽 변수에 할당한다. c %= a > c = c % a
**= 왼쪽 변수에 오른쪽 값만큼 제곱을 하고 결과를 왼쪽 변수에 할당한다. c *= a > c = c * a
//= 왼쪽 변수에서 오른쪽 값을 나눈몫의 결과를 왼쪽 변수에 할당한다. c //= a > c = c//a

비교연산자

a = 10, b = 20 이라고 가정하겠습니다.

Operator Description Example
== 값이 동일하다. (a == b) > false
!= 값이 동일하지 않다. (a != b) > true
> 왼쪽 값이 오른쪽 값보다 크다. (a > b) > false
< 왼쪽 값이 오른쪽 값보다 작다. (a < b) > true
>= 왼쪽 값이 오른쪽 값보다 크거나 동일하다. (a >= b) > false
<= 왼쪽 값이 오른쪽 값보다 작거나 동일하다. (a <= b) > true

산술 연산자

a = 10, b = 20, c = 3 이라고 가정하겠습니다.

Operator Description Example
+ 더하기 a + b = 30
- 빼기 a - b = -10
* 곱하기 a * b = 200
/ 나누기 b / a = 2.0
% 나머지 b % a = 0
** 제곱 a ** c = 1000
// a // c = 3

Asterisk(*)

파이썬에서 Asterisk(*)는 다음과 같이 크게 4가지 경우가 있습니다.

  • 곱셈 및 거듭제곱 연산으로 사용할 대
  • 리스트형 컨테이너 타입의 데이터를 반복 확장하고자 할 때
  • 가변인자를 사용하고자 할 때
  • 컨테이너 타입의 데이터를 Unpacking 할 때

1. 곱셈 및 거듭 제곱 연산으로 사용할 때

많이들 알고 계시지만 곱셈 연산, 거듭제곱 연산까지 내장 기능으로 지원하고 있습니다.

image

2. 리스트형 컨테이너 타입의 데이터를 반복 확장하고자 할 때

숫자형 데이터 뿐만 아니라 리스트형 컨테이너 타입에서 데이터를 반복적으로 확장하기 위해 사용할 수도 있습니다.

image

Read more »

hostname

시스템의 호스트네임이란 인터넷에 접속된 수 많은 컴퓨터들이 자신을 구별하기 위해 가지고 있는 것이 IP주소인데, IP 대신 기억하기 쉽게 사용하는 것이 호스트네임이다.

리눅스서버에서 호스트네임을 확인하는 방법은 hostname이란 명령어가 있는데 아래는 내 컴퓨터의 호스트명을 보여준 것이다.

image

호스트명을 변경하는 파일은 /etc/sysconfig/network에서 변경만 해주고 네트워크환경을 적용하는 스크립트(/etc/rc.d/init.d/network)를 재실행 해주면 된다.

이와 같은 방법으로 호스트명을 변경하면 서버를 재부팅한 후에도 지속적으로 적용이 된다.

Read more »

ifconfig(configure a network interface)

네트워크 인터페이스 관련 정보를 조회 및 수정 할 수 있는 명령어입니다. 최근에는 ifconfig를 사용하기 보다 ip명령어를 쓰는 방향을 권고하고 있습니다.

환경 및 조건

  • Linux
  • Bash shell(/bin/bash)

예시

  • 아래는 제가 ifconfig의 출력결과입니다.

image

ifconfig 항목 설명

lo

  • Network Interface들의 이름으로 여기에는 NIC, Bridge, Tacp Interface 그리고 Tunneling Interface와 같은 부분들의 이름이 표시됩니다.
  • 전송을 할 때 캡슐화 되는 방식을 의미합니다. 즉, 해당 인터페이스로 보내지는 패킷의 종류라고 생각하면 될 것 같습니다. Ethernet의 경우에는 이더넷 프레임으로 캡슐화 되어서 보내진다는 것이며 해당 캡슐화 종류를 통해 인터페이스의 종류도 유추가 가능합니다.(위의 경우 eth0는 Ethernet)
Read more »

nslookup

name server loopup의 약자입니다. 네임 서버에 질의하는 프로그램입니다. IP주소를 아는데 도메인을 모르거나, 도메인은 아는데 IP주소를 모를 때 알기 위해 사용합니다.

1. 정방향 조회

도메인명을 명령줄에 입력하면 IP주소 값을 얻은 수 있습니다. set type 기본값이 A(호스트) 조회이기 때문에 별다른 옵션을 주지 않아도 정방향 조회는 기본으로 가능합니다.

스크린샷 2020-06-23 오후 10 28 28

2. 서버 변경

DNS에 쿼리를 하는 서버를 변경할 수 있습니다. 이는 다른 DNS에 쿼리를 할 필요가 있을 때 유용합니다.

스크린샷 2020-06-23 오후 10 29 08

Read more »

BFS(Breadth First Search, 너비 우선 탐색)

  • queue를 이용하여 지금 위치에서 갈 수 있는 것들을 모두 큐에 넣는 방식입니다. 이 때, queue에 넣을 시점에 해당 노드를 방문했다고 체크해야합니다.

image

코드

1
def bfs(graph, start_node):
2
    visit = list()
3
    queue = list()
4
    
5
    queue.append(start_node) # 시작노드를 큐에 넣어줌
6
    
7
    while queue: # 큐의 목록이 바닥날때까지 loop를 돌림
8
        node = queue.pop(0) # 큐의 맨 앞 노드를 꺼내옴
9
        if node not in visit: # 해당 노드가 아직 방문 리스트에 없다면
10
            visit.append(node) # 방문 리스트에 추가
11
            queue.extend(graph[node]) #해당 노드의 자식노드들을 큐에 추가
12
            
13
    return visit
Read more »

Iterator

collection(list, tuple, set, dict), 문자열 등은 for문을 사용해서 데이터를 하나씩 처리할 수 있습니다. 이처럼 데이터를 하나씩 처리할 수 있는 collection이나 sequence를 Iterable Object라고 합니다.

image

Read more »

Class, 객체, Instance

Class

함수의 호출은 특정 잡업만을 수행할 뿐 그 결과값을 계속 사용하기 위해서는 반드시 어디가에 따로 저장해야만 합니다. 즉, 함수를 포함한 프로그램 코드의 일부를 재사용하기 위해서는 해당 함수뿐만 아니라 데이터가 저장되는 변수까지도 한꺼번에 관리하는 것이 편할 것입니다. 이처럼 함수뿐만 아니라 관련된 변수까지도 한꺼번에 묶어서 관리하고 재사용할 수 있게 해주는 것이 바로 클래스(Class)입니다.

객체(Object), 인스턴스(Instance)

과자를 계속해서 찍어낼 수 있는 틀을 클래스(class)라고 한다면, 이러한 과자틀에서 찍혀 나온 맛있는 쿠키들이 하나의 객체라고 이해할 수 있는 것입니다. 이렇게 찍혀서 나온 객체들을 우리는 인스턴스(Instance)라고 부릅니다. 객체와 인스턴스는 전혀 별개의 것이 아니며, 객체를 바라보는 관점의 차이입니다.

Read more »