acg6138의 등록된 링크

 acg6138로 등록된 티스토리 포스트 수는 23건입니다.

[소프티어] 업무처리 (파이썬) [내부링크]

문제 - 업무처리 () Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai - 업무 조직도는 완전 이진트리 모양이다. - 트리의 높이는 H, 말단에 대기하는 업무의 개수는 K, 업무가 진행되는 날짜 수는 R이다. - 각 업무는 번호가 있다. 아래는 H = 1, K = 3인 조직도이다. - 말단 직원들은 각각 K개의 순서가 정해진 업무를 가지고, 업무는 R일 동안 진행된다. - 말단 직원은 업무를 하나씩 처리해서 상사에게 올리고, 다른 직원들도 마찬가지이다. - 부하 직원에게 받은 업무는 다음 날에 처리하여 상사에게 올릴 수 있다. 즉, 당일 처리 X - 이 때, 홀수 번째 날에는 왼쪽 부하가 올린 업무를, 짝수 번째 날에는 오른쪽 부하가 올린 업무만을 처리할 수 ..

인생은 실전이다.. [내부링크]

시간이 날 때마다 회고를 써보려 한다. 이유는 내가 그동안 뭘 해왔고 그걸 하면서 느꼈던 점이나 배운 점을 다시 한번 상기시키며 + 돌아보는 시간을 가지기 위함이다. 이렇게라도 기록하지 않으면 기억이 전부인데 그 기억도 결국엔 희미해지니ㅎㅎ.. 뭘 배웠고 느꼈는지 그 감정들을 기억하고 있을 때 한시라도 빨리 써야겠음. 최근 일 중 가장 기억에 남는 일들은 우아한 테크코스 지원, UMC 동아리 프로젝트, SW 마에스트로 지원인 것 같다. 먼저 조금 시간이 지난 우아한 테크코스 지원부터 차근차근.. 우아한 테크코스 지원 우아한 테크코스는 우아한 형제들에서 주관하는 교육 프로그램이다. 국비 교육중 원탑이라고 할 정도로 소문이 자자한 국비 교육이다. 하지만 그만큼 붙기가 아주아주 빡쎄다. 우테코를 지원하는 과정..

[스프링] 동시 요청 처리(멀티쓰레드) [내부링크]

앞선 포스팅에서 클라이언트가 싱글톤으로 관리되는 서블릿을 동시에 요청했을 때, 멀티쓰레드를 사용하여 이를 지원한다고 했었다. 멀티쓰레드가 뭔지, 어떻게 동시 요청을 처리하는지 간단히 알아보자. 멀티쓰레드 멀티쓰레드 이전에 쓰레드의 개념부터 살펴보자. 쓰레드란? 쓰레드란 프로그램(프로세스)실행의 단위이며 하나의 프로세스는 여러 개의 쓰레드로 구성이 가능하다 하나의 프로세스를 구성하는 쓰레드들은 프로세스에 할당된 메모리, 자원 등을 공유한다 프로세스와 같이 실행, 준비, 대기 등의 실행 상태를 가지며 실행 상태가 변할 때마다 문맥교환(Context Switching)을 수행한다 즉, 쓰레드는 프로그램 실행의 단위라고 생각하면 된다. 위 그림에서 서블릿 객체를 호출하는 것을 프로그램의 실행 단위인 쓰레드가 하..

[스프링] 서블릿(Servlet)과 서블릿 컨테이너(Servlet Container) [내부링크]

스프링으로 웹 개발을 하다 보면 서블릿이라는 단어를 자주 접하게 된다. 그만큼 중요한 개념이므로 웹 개발을 하기 위해 필수적으로 이해해야한다. 서블릿과 서블릿 컨테이너가 무엇인지 알아보자. 서블릿(Servlet)이란? 서블릿은 웹 프로그래밍에서 클라이언트 요청을 처리하고, 처리 결과를 클라이언트에 전송하는 기술이다. 쉽게 말해 자바를 사용하여 웹을 만들기 위해 필요한 기술이다. 이전 웹 프로그램들은 클라이언트의 요청에 대한 응답으로 정적인 페이지를 넘겨주었지만, 현재는 동적인 페이지를 가공하기 위해 웹 서버가 다른 곳에 도움을 요청한 후 가공된 페이지를 넘겨주게 된다. 이때 서블릿을 사용하게 되면 웹 페이지를 동적으로 생성하여 클라이언트에게 반환해 줄 수 있다. 서블릿의 특징 서블릿을 사용하게 되면, 1..

[스프링] 싱글톤과 @Configuration [내부링크]

스프링을 공부하다 보면 싱글톤이라는 말을 접하게 된다. 싱글톤이란 무엇인지, 스프링에서 싱글톤을 어떻게 적용하는지 알아보자 싱글톤이란? 싱글톤이란 디자인패턴 중 하나로, 객체의 인스턴스가 하나만 생성되는 패턴을 말한다. public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { // 생성자는 외부에서 호출못하게 private 으로 지정해야 한다. } public static Singleton getInstance() { return instance; } public void say() { System.out.println("hi, there"); } } 위의 코드와 같이 외부에서 객체 ..

[스프링] 스프링 빈과 빈 등록 방법 [내부링크]

스프링 빈이란? 스프링 빈이란 스프링 컨테이너에서 관리되는 자바 객체를 말한다. 일반적으로 우리가 new를 통해 생성하는 자바 객체와 달리 스프링 빈은 스프링 컨테이너에 의해 생성되고 관리되어지는 객체를 말한다. 스프링 컨테이너란? 스프링 컨테이너는 스프링 빈의 생명 주기를 관리, 즉 스프링 빈의 생성과 소멸을 관리하고, 생성된 빈을 빈 저장소에 등록하여 적절하게 사용할 수 있도록 빈을 관리해주는 컨테이너(공간)이다. 스프링 컨테이너는 스프링 빈에게 여러 기능을 제공하는데 대표적으로 의존관계 주입(DI)과 제어의 역전(IOC)이다. DI(의존관계 주입) 각 객체들은 다른 객체들과 의존관계를 가질 수 있다. 스프링 컨테이너는 이런 의존관계를 적절하게 주입해주는 역할을 한다. 스프링 빈 등록 정보를 통해 스..

[우아한 테크코스5기] 프리코스 2주차 회고 [내부링크]

프리코스 2주차를 마치며 우아한 테크코스 1주차에서는 git, 커밋 컨벤션, 자바 문법을 익히며 학습하는 시간이었다. 1주차 회고록은 너무 바빴어서 작성하지 못했다. 2주차에서는 기능 별 메서드를 최대한 분리시키고, 테스트 도구를 사용하여 메서드 별 테스트를 작성, 검증하며 테스트에 익숙해지는 시간을 가졌다. 동시에 클린 코드 원칙을 지키기 위해서 많은 고민을 했던 시간이었다. 원칙을 지키기 위해 노력하면서 배웠던 점이 가장 많았기 때문에 원칙과 예제를 중점으로 글을 써보려 한다. 한 메서드에 오직 한 단계의 들여쓰기(indent)만 허용했는가? 2주차 미션에서는 indent = 2까지 허용하도록 되어있었지만, 객체지향 생활 체조의 규칙1을 보면 가독성, 재사용성, 쉬운 버그 판별을 위해 indent =..

[네트워크 보안] 방화벽이란? [내부링크]

침입차단시스템(F/W, Firewall) 1. 방화벽 개념 인터넷과 같은 외부 네트워크로부터 기업의 내부 네트워크를 보호하는 보안 장치로 외부 네트워크와 내부 네트워크 사이의 유일한 연결점에 위치해 트래픽을 제어하는 시스템을 말한다 장점단점 •보안 취약점을 가지고 있는 서비스의 보호 •보안의 집중 •암호를 이용한 데이터의 기밀성과 무결성 제공 •네트워크 사용에 대한 통계자료 제공 •보안 정책 구현 •방화벽을 거치지 않은 연결에 대한 무방비 •내부 공격에 대한 무방비 •서비스의 제한 •단일 지점에서의 실패(Single Point of Failure) •바이러스와 같은 악성 프로그램에 대한 무방비 2. 방화벽의 기능 보안 취약점을 지닌 서비스의 보호 방화벽은 네트워크 보안을 크게 증대시키고 원천적으로 불안전..

[알고리즘] Hamming Code 구현 [내부링크]

데이터에서가장낮은자리의비트의위치를1로정하고, 자리가한자리씩높아질수록그위치를2, 3, 4, ...으로부여한다. 1. 데이터에서2의거듭제곱이되는위치(예를들어, 1, 2, 4, 8, 16, 32, 64 등)의비트는모두패리티비트로사용된다. 2. 다른모든위치의비트는실제데이터를위하여사용된다. 3. 각위치의패리티비트는해밍코드의특정위치에있는비트들의패리티를나타낸다. 위치가1, 2, 4, 8, 16 등에있는패리티비트를P1, P2, P4, P8, P16등으로나타낼때, 이패리티비트가검사하는비트의위치는다음과같다(아래그림참조). 3.1. P1: 위치가1인비트에서시작하여, 한비트를검사하고, 한비트를건너뛰고, 한비트를검사하고, 한비트를건너뛰어검사하는것을반복한다. 단,위치가1인비트(P1자신)는검사하지않는다. 3.2. P2: 위치가2인..

[오류 검출] Hamming Code [내부링크]

해밍 코드, 해밍 부호(Hamming Code) 정의 해밍 부호(Hamming code)는 이진 선형 블록 오류 정정 부호의 일종이다. 특징 해밍 코드는 1950년에 미국의 Bell 연구소의 Richard Hamming에 의해 고안되었으며, 데이터 전송 또는 메모리 액세스 등의 경우 최대 2 비트 오류를 감지하거나 1 비트 오류를 수정할 수 있다. 신드롬(syndrome): 오류 검사에 사용되는 유일한 패턴. 해밍 조건 해밍 부호는 어떤 길이의 데이터어(data word)에도 사용할 수 있다. 해밍 코드는 n개의 데이터어에 k개 패리티 비트를 더하여 n + k 비트의 새로운 코드어(code word)를 생성한다. 신드롬 값 C는 k개의 비트로 이루어지고 0에서 2k – 1 사이의 2k 개의 범위를 가진다..

DHCP(Dynamic Host Configuration Protocol)와 NAT(Network Address Translation) [내부링크]

1. DHCP(Dynamic Host Configuration Protocol) - IP 주소 자동 할당 기능을 수행하는 네트워크 서비스 - 서버와 클라이언트간에 IP 주소 임대 서비스 - DHCP 구성 요소 : 서버, 클라이언트, DHCP Relay Agent - DHCP 동작 과정 : 4개 메세지를 이용하여 4단계 진행 1) DHCP 동작 단계(브로드 캐스트로 전송하기 때문에 같은 네트워크에서만 전달이 가능하고 외부로는 x) SA 68 SA 67 DA 67 DA 68 ----------------- UDP ----------------- UDP SA 0.0.0.0 SA 192.168.1.254 DA 255.255.255.255 DA 255.255.255.255 --------------..

[동적 경로] OSPF [내부링크]

OSPF(Open Shortest Path First) - Link-State 알고리즘 - Classless Routing Protocol - VLSM, CIDR - IGP - SPF 알고리즘을 사용하는 개방된 라우팅 프로토콜 1. OSPF 설정 방법 Router(config)# router ospf [1~65535 Process-ID] -> 달라도 통신은 가능 같게 하는 것을 추천 Router(config-router)# router-id x.x.x.x Router(config-router)# network [로컬 네트워크] [와일드카드 마스크] area [area 주소] Router(config-router)# passive-interface [Interface Name] 와일드카드 마..

[동적 경로] RIPv2 - 균등 로드 분산 [내부링크]

균등 로드 분산이란 많은 양의 데이터를 보낼 때 경로에 균등하게 데이터를 나누어 보내는 방식을 말한다. 좋은 방법 처럼 보이지만 3개 경로의 전송 속도가 다르다면 좋은 방법은 아니다. 3개로 나누어 보내는 방법보다 빠른 한곳으로 보내는 게 더 효율적일 수도 있기 때문에 데이터 전송 시 대역폭이 높은 구간으로 우선적으로 보내는 방법을 설정해보자. 이를 floating 정적경로 설정이라 부른다. 설정 방법은 R2(config)#ip route 13.13.40.0 255.255.255.0 13.13.12.1 10 맨 뒤에 10 또는 0~15까지 신뢰도를 정해 입력하는 방식이다. R2#show ip route 를 통해 신뢰도를 볼 수 있다. 위 그림에서 1. passive-interface 설정 => 라..

정적 라우팅(static routing)과 동적 라우팅(dynamic routing) 프로토콜(protocol) [내부링크]

라우팅이란? 네트워크 계층에서 길을 찾아주는 것, 즉 패킷이 목적지에 도달할 최적의 경로를 찾아 전송하는 것을 라우팅이라한다. 그렇다면 무엇을 보고 길을 찾아줄까? 바로 라우팅 테이블!! 라우팅 테이블에는 네트워크 프로토콜, 목적지 주소, 연결된(나가는) 인터페이스로 구성 네트워크 프로토콜에는 여러가지 종류가 있다. C(Connected) -> 물리적으로 직접 연결되어있는 네트워크, 만약 특정 라우터의 시리얼 인터페이스가 172.16.20.1/24이면 라우터는 아 172.16.20.0 네트워크 대역은 이쪽으로 가면 있겠구나 학습 S(Static) -> 멀리 떨어져 있는 네트워크를 정적 경로로 지정, 후에 학습한다. 라우팅 테이블은 나와 연결된 이쪽 인터페이스쪽으로 가면 특정 목적지가 있겠구나를 알려준다...

[소켓프로그래밍] 로그인 구현하기 [내부링크]

이전에 했던 1:1채팅에 이어서 로그인을 구현하려한다. 먼저 프로그램 실행순서를 간단하게 설명하면 먼저 서버와 연결된 후 클라이언트는 로그인을 거친다. 새로 아이디를 만드려면 create를 입력하고 사용할 아이디와 비밀번호를 입력하면 된다. 로그인을 하려면 아무키나 누르고 아이디와 비밀번호를 입력하면 된다. 서버측의 전체 코드부터 살펴보면, 이전 1:1채팅의 send와 receive를 사용하지만 제약을 두어 user_check가 되지 않으면 클라이언트에게 받은 메시지는 로그인과 새로운 아이디 생성을 위해서만 사용하고 출력되진 않는다. 이 후 로그인을 통해 유저 확인이 되면 user_check가 true로 설정되며 이전과 동일하게 1:1채팅을 사용할 수 있다. 코드가 좀 긴 관계로 코드 설명은 주석으로 하..

[소켓프로그래밍] 간단한 채팅방 구현 [내부링크]

먼저 채팅방을 구현하려면 서버와 클라이언트가 필요하다. 즉, 두 명 이상이서 채팅을 주고받아야 한다. 서버측의 전체 코드부터 보자면 from socket import * import threading import time def send(sock): while True: sendData = input('>>>') sock.send(sendData.lower().encode('utf-8')) def receive(sock): while True: recvData = sock.recv(1024) print('Client :', recvData.decode('utf-8')) port = 8081 serverSock = socket(AF_INET, SOCK_STREAM) serverSock.bind(('', p..

Cloud Computing이란? (IaaS, PaaS, SaaS) [내부링크]

Cloud Computing이란? 클라우드 컴퓨팅은 서로 다른 물리적인 위치에 존재하는 컴퓨터들의 리소스를 가상화 기술로 통합해 제공하는 기술을 말한다. 예를들면 개인용 컴퓨터나 기업의 서버에 개별적으로 저장해 두었던 프로그램이나 문서를 클라우드(대형 컴퓨터)에 저장하고 웹 브라우저 등 필요한 어플리케이션을 구동해 원하는 작업을 수행할 수 있는 사용자 중심의 컴퓨터 환경을 말한다. 예시 네이버 오피스, Google DOCs(Google), Work Space(Microsoft), Acrobat(Adobe) 등등이 여기에 해당 가상화와 클라우드 컴퓨팅의 차이 정의 쉽게 정의하면 가상화는 기술이고 클라우드는 방법론 이다. 가상화 가상화는 우리가 쓰던 VMware나 Virtualbox와 같이 단일한 물리 하드..

WireShark 실습 - 패킷 분석 [내부링크]

WireShark란? 오픈 소스 패킷을 분석하는 프로그램으로써 네트워크의 문제, 분석, 소프트웨어 및 통신 프로토콜 개발, 교육에 사용된다. 와이어 샤크 필터를 활용해 패킷을 분석 및 확인 [참고] 와이어샤크 필터 && AND || OR ! NOT == eq ip ( addr = 출발지와 목적지, src = 출발지, dst= 목적지) 간단한 연습문제 1. 출발지 IP 주소 or 목적지 IP 주소가 172.16.5.254인 것을 출력 => ip.addr == 172.16.5.254 2. 출발지 TCP 포트 번호 or 목적지 TCP 포트 번호가 80인 것을 출력 => tcp.port ==80 3. 출발지 IP 주소가 172.16.5.254 이고 목적지 UDP 포트 번호가 53인 것을 출력 =>ip..

프로토콜(Protocol)이란? (OSI 7계층) [내부링크]

1. 프로토콜 이란? 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 즉 통신 규약 및 약속이다. 그리고 통신 프로토콜은 신호 체계, 인증, 그리고 오류 감지 및 수정 기능을 포함할 수 있다. 가장 일상적으로 사용되는 프로토콜 세트 중 하나가 TCP/IP이다. 거의 모든 컴퓨터가 기본으로 제공하는 인터넷 표준 프로토콜이다. 2. TCP/IP IP(Internet Protocol) 네트워크 계층에서 동작하는 프로토콜 패킷 통신 방식의 인터넷 프로토콜인 IP IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다. TCP(Transmission Control Protocol) 전송 계층에서 동작하는 프로토콜 전송..

IoT란? [내부링크]

1. 사물인터넷 개념 1.1 사물인터넷이란? 사물인터넷의 단어적 의미는 사물들(things)이 서로 연결된 인터넷 환경을 말함. 사물인터넷의 본질은 다양한 사물들을 센서와 통신기술을 더해 사물과 사물, 사물과 사람을 연결함으로써 정보를 주고 받으며 새로운 가치를 만드는 것임. 즉, 기본의 개별적인 사물이 제공하지 못했던 새로운 서비스를 제공해주는 데 의의가 있음. 스마트 홈: 침대에서 사람이 잠들면 집안에 켜진 전등을 끄고, 잠에서 깨면 창문을 열어 환기를 하고, 커피를 자동으로 내려줌 1.2 사물인터넷 역사 사물인터넷(Internet of Things)이라는 용어의 탄생은 1999년에 비누, 샴푸, 칫솔 등 다양한 종류의 소비재를 제조 및 판매했던 P&G에서 브랜드 매니저로 근무하던 캐빈 애시턴(Kev..

HTTP와 쿠키, 세션 [내부링크]

1. HTTP HTTP와 HTTPS에 대한 간단한 정의 HTTP(Hyper Text Transfer Protocol) 는 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 프로토콜이란 데이터를 주고 받기 위한 통신 규칙이라고 보면 되겠다. 그러면 HTTPS는 뭘까? HTTPS는 Hypertext Transfer Protocol Over Secure Socket Layer 약자이다. 단어를 보면 알 수 있듯이 HTTP 프로토콜에서 보안 기능(SSL)이 추가된 프로토콜이라고 보면 된다. HTTP의 동작 방식 클라이언트(크롬, 사파리 등의 웹 브라우저, 모바일 등)가 브라우저를 통해서 어떠한 서비스를 URI 를 통해서 서버에 요청(request)하면 서버에서는 해당 요청에 대한 결과를 응답(response)..

비동기-동기 [내부링크]

동기와 비동기의 차이 동기와 비동기의 차이점은 실행순서에 있다. 동기는 요청을 보낸 후 해당 요청의 응답을 받아야 다음동작을 실행 하는 방식이다. 비동기는 요청을 보낸 후 해당 요청의 응답과 상관없이 바로 다음 동작을 실행 하는 방식이다. 일상에서 찾아보자면, 음식점에서 종업원이 주문을 받을 때 이는 동기일까 비동기일까? 정답은 비동기이다! 이는 우리가 일상생활에서 당연하게 생각하는 것들이다. 주문을 받을 때마다 주문한 음식이 나올 때 까지 뒤에 손님의 주문을 받지 않는다면? 이는 너무나도 비효율적이다. 당연히 우리 인간은 그렇게 하지 않지만 컴퓨터는 인간처럼 생각하지 못한다. 따라서! 컴퓨터에서 요청과 응답사이에서 효율적으로 움직일 수 있게 하는 방식이 비동기인 것이다.

TypeScript란? 기초 문법 예제 [내부링크]

TypeScript 타입스크립트(TypeScript)는 JavaScript의 확장판이라고 할 수 있다. 먼저 자바스크립트는 동적 타입 언어로 런타임은 빠르지만 타입 안정성이 보장되지 않는다는 단점이있다. 여기서 타입 안정성이란 우리가 아마 배워봤을 C, Java 같은 정적 타입 언어와 비교해보면 이해가 쉽다. 정적 언어는 변수를 선언하기 전 변수의 타입을 먼저 설정해준다는 공통점이 있다. 이에 반해 동적 언어인 자바스크립트는 변수를 선언할 때 스코프를 설정할 뿐 변수의 타입을 직접 설정해주진 않는다.이는 작성한 프로젝트가 커질수록 디버그를 하기 어렵게 만든다. 이런 단점을 보완해주는 것이 타입스크립트이다. 타입스크립트는 자바스크립트를 호환하면서 변수의 타입을 설정할 수 있다. let a = '7'; a ..