프로그래밍 33

[인터넷] 브라우저와 그 작동 원리

브라우저란? 브라우저는 사람들이 가장 많이 사용되는 소프트웨어입니다. 인터넷 익스플로러, 크롬, 파이어폭스, 사파리 등 브러우저를 통해 우리는 주소창에 서버 도메인을 입력하여 손쉽게 인터넷 서비스를 이용합니다. 브라우저의 주요 기능은 사용자가 선택한 자원을 서버에 요청하고 이를 화면에 표시해주는 것 입니다. 여기서 자원은 보통 HTML 문서를 뜻하지만 PDF나 이미지 등의 다른 형태일 수도 있습니다. 사용자는 URI(Uniform Resource Identifier)에 의해 정해진 자원의 주소를 이용해서 요청할 수 있습니다. 브라우저의 기본 구조 우리가 사용하는 브라우저는 다음과 같은 요소들로 구성되어 있습니다. 사용자 인터페이스 - 사용자가 접근할 수 있는 영역으로, URI를 입력하는 주소 표시줄, 이..

[인터넷] HTTP란?

HTTP (HyperText Transfer Protocol) 서버와 클라이언트가 인터넷에서 데이터를 주고 받기 위한 프로토콜입니다. HTTP 동작 방식 HTTP는 서버 / 클라이언트 모델을 따릅니다. 클라이언트가 서버에 요청을 보내면 서버는 요청에 맞는 응답을 클라이언트에게 보냅니다. connect: 클라이언트가 원하는 서버에 접속 request: 클라이언트가 서버에게 원하는 요청을 보냄 response: 서버가 요청에 대한 결과를 클라이언트에게 보내고 응답 close: 응답이 끝나면 서버와 클라이언트 연결 종료 (Stateless) HTTP 특징 TCP/IP를 이용하는 응용 프로토콜이다. 비연결성 프로토콜이다. 따라서 클라이언트의 이전 상태를 서버가 알 수 없다는 단점이 있다. (이를 해결하기 위해 ..

[인터넷] - 인터넷의 작동 원리

인터넷이 무엇인지는 다들 알고 있을거라 생각합니다. 그렇다면 우리가 사용하는 인터넷이 어떻게 구성되어 있으며 어떻게 동작하는지에 대해서 알아보도록 하겠습니다. TCP/IP TCP/IP는 컴퓨터와 컴퓨터간의 통신을 위한 규약으로 정의할 수 있습니다. 2개의 프로토콜로 이루어져있으며 IP 프로토콜 위에 TCP 프로토콜이 놓여있습니다. IP 네트워크상 컴퓨터의 고유 주소입니다. 192.168.2.1 같은 형식의 총 4바이트로 이루어져 있습니다. TCP 클라이언트와 서버간 데이터를 신뢰성있게 전달하기 위해 만들어진 프로토콜입니다. 데이터 교환을 안정적으로 순서대로 처리할 수 있게하여 에러를 방지합니다. 인터넷이란, 각 컴퓨터들간 TCP/IP 통신 프로토콜을 이용하여 서로 데이터를 주고 받도록 구성된 네트워크입니..

Django REST API 서버 만들기

Restful API 란? Representational State Transfer의 약자 Rest로 소프트웨어 프로그램 아키텍처의 한 형식을 의미합니다. 자원을 이름으로 구분하여 자원의 상태(정보)를 주고 받는 모든 것을 의미합니다. HTTP 프로토콜을 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 입니다. REST 구성 1. 자원 (Resource) - URL - HTTP url을 활용한 고유한 ID로 구분합니다. 2. 행위 (Verb) - HTTP Method - HTTP 프로토콜의 GET, POST, PUT, DELETE 3. 표현 (Representations) - Client가 자원의 정보에 대한 조작을 요청하면 Server는 이에 대응하는 Representation을 보냅니다...

github issue solve

"please use a personal access token instead." 로컬에서 코딩을 한참 하다가 내 깃헙 레포에 연결하려고 하니 실패.. 아래와 같은 오류가 발생했습니다. 확인해보니 password가 아닌 personal access token을 사용하라고 하는데 최근에는 개인 github은 거의 사용을 안하고 회사에서 bitbucket만을 사용하다 보니.. 당황해서 비밀번호 바꿔보고 하다가 해당 글을 참조해서 token 발급 받은 뒤 문제 해결. "error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: CANCEL (err 8)" 그리고 나서 작업한 코드를 push 하려다가 또 아래와 같은 오류 발생 ㅠ stackoverfl..

[python] pass, continue, break 활용법

안녕하세요, 오늘은 정말 간단한 python에서 pass, continue, break 문법 각각의 역할과 활용법에 대해서 정리해보겠습니다. 쉽게 정리하자면, pass : 아무 동작도 하지 않습니다. 반복문에서 아무런 영향을 끼치지 않습니다. continue : 반복문에서 다음 loop로 건너뛰면서 loop는 지속됩니다. break : 반복문을 멈추고 loop 밖으로 나갑니다. 말로 설명하는 것보다 쉽게 이해할 수 있도록 아래 예시로 정리하겠습니다. pass는 왼쪽의 결과에서 볼 수 있듯이 코드에 아무런 영향을 끼치지 않습니다. 따라서 pass는 주로 조건문에서 별다른 행동이 필요하지 않을 때, 또는 class 생성시 초기에 별다른 값이 없을때 전체 코드 동작을 확인하기 위해 임시적으로 활용하기도 합니다..

[연결 리스트] 두 수의 덧셈

* leetcode 2. Add Two Numbers Q. 역순으로 저장된 연결 리스트의 숫자를 더하라 # 입력 (2 -> 4 -> 3) + (5 -> 6 -> 4) # 출력 7 -> 0 -> 8 # 설명 342 + 465 = 807 풀이. 전가산기 구현 def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: root = head = ListNode(0) carry = 0 while l1 or l2 or carry: sum = 0 # 두 입력값의 합 계산 if l1: sum += l1.val l1 = l1.next if l2: sum += l2.val l2 = l2.next # 몫(올림)과 나머지(값) 계산 carry, val = divmod(..

Linux Two-Factor Authentication 적용하기

Two-factor authentication (2FA)는 Multi-factor authentication의 한 종류로 서버 접속을 위해서 기존에 사용하던 password 이외에 추가적인 OTP 또는 verification code를 요구하여 서버 보안을 더욱 강화하는 방법입니다. 5분만에! 간단하게 설정하는 방법에 대해서 알아보도록 하겠습니다. Step 1 - Google PAM 모듈 설치 일단, 서버에 Google PAM 모듈을 설치해야합니다. 이 모듈은 사용자가 TOTP를 사용하여 Linux 시스템에서 인증할 수 있게 해줍니다. # 먼저 Ubuntu repositories를 업데이트하고, $ sudo apt-get update # google pam을 설치합니다. $ sudo apt-get ins..

프로그래밍 2021.02.15

[연결 리스트] 역순 연결 리스트

* leetcode 206. Reverse Linked List Q. 연결 리스트를 뒤집어라. # 입력 1->2->3->4->5->Null # 출력 5->4->3->2->1->Null 풀이 1. 반복 구조로 뒤집기 def reverseList(head: ListNode) -> ListNode: node, prev = head, None # node.next를 이전 prev 리스트로 계속 연결하면 뒤집어진 연결 리스트를 얻을 수 있다. while node: next, node.next = node.next, prev prev, node = node, next return prev ### 초기화 node = 1->2->3->4->5->None prev = None while [1] next = 2(->3->..