분류 전체보기 12

NAT(Network Address Translation), Bridged, Host-Only 이란?

1. NAT(Network Address Translation)우리가 사용하는 데스크톱이나 휴대폰은 모두 공유기로부터 내부 IP를 할당받아서 사용하게 됩니다. 공유기가 내부 네트워크를 구성해 준 것이죠. 그래서 대부분 IP를 확인해 보면 192.168.x.x IP를 사용하고 있을 겁니다. 그러면 친구네 PC와 통신은 가능한 걸까요?직접적은 통신은 어렵습니다. IP 대역은 일치할지라도 서로 다른 네트워크에 있거든요. 마치 우리집 안방과 친구네 집 안방은 다른 것처럼요. 그러면 왜 내부 IP를 만들어서 사용하는 걸까요?IPv4 주소 공간은 한정되어 있기 때문에 전세계 사람들이 모두 외부 IP를 할당받아서 사용하게 되면 결국 부족하게 됩니다. IPv4는 32비트로 되어 있어서 2^32 = 4,294,967,2..

네트워크 2024.09.17

Tailscale 트래픽 우회

1. Tailscale 설치 https://tailscale.com/ Tailscale · Best VPN Service for Secure NetworksSecurely connect to anything on the internet with Tailscale. Built on WireGuard®️, Tailscale enables you to make finely configurable connections, secured end-to-end according to zero trust principles, between any resources on any infrastructure.tailscale.com  우선 홈페이지로 들어가 보면 위와 같은 이미지를 볼 수 있는데, 로그인하고 Get start..

취미/기타 2024.09.16

[소개] Tailscale 이란?

Tailscale 이란?피어 투 피어(P2P) 네트워크 모델을 사용하여 WireGuard 프로토콜 위에서 동작하는 VPN 솔루션 1. WireGuard 기반WireGuard는 매우 가벼운 암호화 터널이면서도 강력한 보안성과 성능을 자랑하는 VPN 프로토콜이다. 2. 피어 투 피어 네트워크 및 NAT TraveralTailscale은 각 기기들이 직접적으로 연결되어, 중간에 중계 서버를 거치지 않아 네트워크의 지연 시간을 최소화한다.그리고 가정이나 회사에서 NAT로 구성된 내부 네트워크는 외부에서 접근하기가 어려운데, Tailscale에서는 NAT Traveral 기술을 통해서 각 기기들이 NAT 뒤에 있어도 서로 안전하게 직접 연결할 수 있다.   3. 제로 트러스트(Zero Trust)네트워크 내에서 ..

취미/기타 2024.09.15

SQL 쿼리 계획(Execution Plan)

1. 쿼리 계획이란?개념: 데이터베이스가 SQL 쿼리문을 최적화하여 실행하는 방식을 설명한 것중요성: 성능에 직접적으로 영향을 미친다. 데이터베이스가 쿼리를 효율적으로 처리하기 위해 어떤 선택을 하는지 사용자가 확인하고 개선할 수 있는 방향을 제시하기 때문에 운영 환경에 적용하기 전에 꼭 확인하면 좋다. 2. 쿼리 계획을 확인하는 방법EXPLAIN 명령어: DBMS에서 쿼리 실행 계획을 확인하는 명령어이다.예제: EXPLAIN 내가 작성한 쿼리문 앞에 EXPLAIN 명령어만 붙여주면 되니 편리하게 확인이 가능하다. 3. 구성 요소 id: 쿼리의 단계별 실행 순서select_type: 쿼리의 유형(SIMPLE, PRIMARY, UNION 등)table: 접근하는 테이블 이름type: 테이블 접근 방식(al..

Database 2024.09.15

[프로그래머스] 42842. 카펫

42842. 문제 해답.def solution(brown, yellow): # 약수 for i in range(1, yellow+1): if yellow % i == 0: x = yellow / i y = i # 직사각형 둘레 if brown == (x*2 + y*2 + 4): return [x+2, y+2] 출처:https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들..

L - 리스코프 치환 원칙(Liskov Substitution Principle) [기본]

리스코프 치환 원칙은 상속 관계에 있는 클래스 간에 호환성을 보장하는 객체지향 설계 원칙이다. 자식 클래스가 부모 클래스의 역할을 완전히 대체할 수 있을 만큼 기대된 동작이 보장되어야 한다는 의미이다. 예제 # 부모 class Event: def __init__(self, event_name): self.event_name = event_name def event_execute(self): pass # 자식 1 class MinorEvent(Event): def __init__(self, event_name): super().__init__(event_name) def event_execute(self): print(f"Minor event. {self.event_name}") # 자식 2 class M..

알고리즘/SOLID 2024.04.14

[프로그래머스] 12945. 피보나치

12945. 문제 해답 def solution(n): answer = 0 # 기본 피보나치 수 default_fibo = [0, 1] # n번째 만큼 피보나치 수 생성 for i in range(n): default_fibo.append(default_fibo[i] + default_fibo[i+1]) answer = default_fibo[n] % 1234567 return answer 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr

[프로그래머스] 12911. 다음 큰 숫자

12911 문제. 해답 def solution(n): answer = 0 next_n = n # 자연수 n의 이진수 1의 개수 n_one_count = format(n, 'b').count('1') # 제한사항 n은 1,000,000 이하 while next_n < 1_000_000: next_n += 1 # n의 다음 자연수의 이진수 1의 개수 next_n_one_count = format(next_n, 'b').count('1') if n_one_count == next_n_one_count: answer = next_n break return answer 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12911 프로그래머스 코드 중심의..

[프로그래머스] 12941. 최솟값 만들기

문제 12941. 해답 def solution(A,B): # 먼저 정렬 A.sort() B.sort(reverse=True) answer = 0 for i in range(len(A)): answer += A[i] * B[i] return answer 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr

[프로그래머스] 12924. 숫자의 표현

12924 문제. 숫자의 표현 해답 def solution(n): answer = 1 # 자기 자신 포함 # 전체 순환 for i in range(1, n): # 시작 수를 하나씩 늘림 sum = i for j in range(i+1, n): # 연속적이여야 하기 때문에 i부터 시작 sum += j if sum == n: answer += 1 break elif sum > n: break return answer 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12924 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. prog..