전체 글에 해당하는 글 292

  1. 파이썬 기초(4) : 조건문 2021.12.20

    조건문 주어진 변수에 조건을 걸고, 해당 조건을 만족할 때 특정 코드를 실행하도록 할 수 있다. 조건문은 아래 형식으로 이루어진다. if 조건1: # 콜론을 꼭 써 준다. 실행문1 # 탭을 한 칸 띄워줘야 한다. 실행문2 if 조건1 and 조건2: # 여러 개의 조건은 and와 or로 묶어 준다. 실행문 # if 조건문과 콜론(:) 뒤에 탭으로 들여쓰기 된 부분은 해당 조건이 맞으면 다 실행된다. if 조건1 or 조건2: 실행문1 실행문2 실행문3 # 조건1 또는 조건2가 맞는 경우 실행문 1, 2, 3이 모두 실행된다. if not 조건1: #해당 조건을 만족하지 않음을 나타낼 때는 not을 붙여 준다. 실행문 나이를 입력받아 체크하고, "19세를 초과하면 / 나이와 함께 / 성인이라고 출력"해 주..


  2. 파이썬 기초(3) : 데이터 구조 / 리스트 2021.12.19

    리스트(list) 서로 관계가 있는 데이터를 효율적으로 다룰 수 있다. 대괄호([ ]) 안에 콤마(,)로 구분된 데이터를 써 넣어서 만들 수 있고, 인덱스로 다룬다. 리스트는 파이썬에서 가장 많이 쓰이는 데이터 구조 타입이다. 배열이랑 비슷함! 우측의 티스토리 폰트 선택 창처럼 데이터를 관리한다고 보면 된다. 꼭 한 가지의 데이터타입만 들어갈 필요는 없다. 인덱스처럼 슬라이싱도 가능하다. 단, 문자열을 슬라이싱하는것과는 다르게 list[n:m]일 경우 n, n+1, n+2,... m까지 m-n+1개의 값을 출력하는 점이 다르다. 유의! font = ['기본서체','본고딕R','본고딕L','나눔고딕','본명조','궁서'] print(font) # ['기본서체', '본고딕R', '본고딕L', '나눔고딕', ..


  3. 파이썬 기초(2) : 문자열 다루기, 출력 포맷 2021.12.19

    파이썬에서는 변수를 선언할 때, 여러 줄의 문자열을 따옴표("")로 감싸 값으로 넣어 주려고 하면 한 줄만 인식한다. 이럴 때, 따옴표를 3개씩 문자열의 앞 뒤에 적어 주면 제대로 인식한다. sentence = "이렇게 감싸면 여러 줄은 인식하지 못하고" sentence2 = """이렇게 감싸면 여러 줄도 같이 인식한다.""" 문자열(string)을 다루는 여러 함수 len(${변수명}) : 문자열의 글자 수를 세어 준다. 스페이스바( )와 줄바꿈도 센다. ${변수명}.count("문구") : 해당 문구가 변수 안에 몇번이나 들어 있는지 세어 준다. ${변수명}.find("문구") : 해당 문구가 몇 번째 위치에서 처음으로 나오는 지 찾아 준다. 맨 첫번째 위치는 0이다. ${변수명}.find("문구")..


  4. 파이썬 기초(1) : 데이터 타입과 변수, 출력 2021.12.15

    print() : 내가 원하는 내용을 화면에 출력하는 명령어, 괄호 안에 내가 표시하고 싶은 내용을 넣는다. 문자열을 넣을 때는 작은따옴표(') 또는 큰따옴표(") 안에 넣어 주고, 숫자/변수는 그대로 넣어도 된다. +, -, *, /를 사용해서 계산식을 괄호 안에 넣어 주면 그 계산 결과값이 출력된다. // 는 몫, %는 나머지, **는 지수를 출력해 준다. 여러 개를 출력하고 싶을 때는 콤마(,)로 구분한다. 왜 문자열을 출력할 때 따옴표를 넣어 주는가? → 명령어인지 문자인지 컴퓨터에게 알려 주기 위해서이다. 변수(variable) 프로그래밍 = 데이터를 기반으로 컴퓨터에 명령을 내리기 데이터는 크게 네 가지 타입이 있다. 1. 문자열 = string 2. 정수 = integer 3. 부동소수점 숫..


  5. 클러스터(cluster) 2021.10.19

    기본적으로 노드는 싱글 스레드. CPU 코어를 모두 사용할 수 있게 해 주는 모듈이다. → 코어를 하나밖에 사용하지 못하고 나머지 7개는 놀고 있음. → 서버를 코어 개수만큼 실행시키면 놀고 있는 코어도 모두 활용할 수 있다. → 이 때, cluster로 코어 하나당 노드 프로세스 하나를 배정할 수 있다. 코어 개수와 성능이 비례하는 것은 아니지만, 요청이 많이 들어왔을 때 병렬로 실행된 서버의 개수만큼 요청이 분산되어 더 효율적이다. 단, 서버를 여러 개 띄운다고 해도 메모리나 세션과 같은 컴퓨터 자원을 공유할 수는 없다. 로그인같은 경우는 Redis 등 별도 서버로 해결이 가능함(나중에) http2를 적용하면서 같이 적용하는 게 좋다. const cluster = require("cluster"); ..


  6. https, http2 2021.10.19

    https https는 웹 서버에 SSL 암호화를 추가하는 모듈이다. 개인 정보 보호에 대한 관심이 높아짐에 따라, https 적용이 필수가 되었다. https가 적용되면 구글 크롬을 기준으로, 아래 이미지처럼 주소창 옆에 자물쇠 아이콘이 뜬다. 요청을 보낼 때 헤더에 너무 많은 정보가 자세하게 드러나게 된다. 쿠키값, 쿼리스트링 등... 이런 중요한 정보들이 탈취가 되는 경우를 대비하기 위해서 https를 사용하여 오고 가는 데이터를 암호화한다. const http = require("http"); const fs = require("fs").promises; http .createServer((req, res) => { res.writeHead(200, { "Content-Type": "text/ht..


  7. 세션 2021.10.19

    무엇인가? 개발자 도구로 쿠키를 들여다보거나 수정이 가능하기 때문에, 쿠키에 직접적인 데이터를 넣지는 않는다. → 암호화한 값을 넣어 두는 곳이 필요함. = 세션(Session) 어떻게 쓰는가? 중요한 정보는 서버에서만 들고 있고, 그 정보에 접속할 수 있는 세션 키만 클라이언트에 제공한다. 암호화된 정보만 브라우저에서 볼 수 있게 하는 것. → 서버에 세션 객체(session) 생성 후, uniqueInt(키)를 만들어 속성명으로 사용한다. → 속성 값에 정보를 저장하고 uniqueInt를 클라이언트로 보내 준다. 될 수 있는 한 여러 유저끼리 겹치지 않는 값으로 키를 지정한다.(서로 다른 계정으로 로그인될수도 있음) const http = require("http"); const fs = requir..


  8. 쿠키 2021.10.14

    IP주소와 브라우저 정보 외에 정확히 누가 보낸 요청인지 알고 싶다면? → 로그인을 구현하면 된다. → 쿠키와 세션이 필요함 쿠키? key(속성명) = 값(속성명) 형태의 쌍 매 요청마다 서버에 실어서 보낸다. 서버는 쿠키를 읽어서 누구인지 파악한다. 어떻게 구현할 수 있는가? writeHead : 요청 헤더에 입력하는 메서드 → Set-Cookie : 브라우저에게 쿠키를 설정하라고 명령함 const http = require("http"); http .createServer((req, res) => { console.log(req.url, req.headers.cookie); res.writeHead(200, { "Set-Cookie": "mycookie=test" }); //한 번 쿠키를 넣어 주면 ..


  9. REST API (보충) 2021.10.12

    클라이언트가 서버에 요청을 보낼 때는 주소를 통해 요청의 내용을 표현하게 된다. 예를 들어, /index.html이면 해당 파일을 보내달라는 뜻인 것처럼 서버가 이해하기 쉬운 주소가 좋다. 클라이언트가 보내는 모든 요청에 대해 서버가 응답해주지는 않는다. 어떤 요청에 어떤 응답을 보낼 지는 서버가 결정하는 것이고, 서버에게 요청하는 주소를 정하는 규칙은 REST API 를 따라간다. = 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법 HTTP 요청 메서드 GET : 서버 자원을 가져오려고 할 때 사용 (데이터 조회 등) POST : 서버에 자원을 새로 등록하고자 할 때 사용 or 뭘 쓸 지 애매할 때 PUT : 서버의 자원을 요청에 들어 있는 자원으로 치환하고자 할 때 사용 PATCH : 서버 ..


  10. 노드로 http 서버 만들기 2021.10.12

    노드에서는 http 모듈을 제공하며 간단하게 서버를 만들 수 있도록 한다. const http = require("http"); http .createServer((req, res) => { //↓html인지 문자열인지 알려줘야 할 때는 아래처럼 추가한다. //한글이 들어있으면 charset=utf-8 까지 같이 res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" }); res.write("Hello, Node."); res.write("Hello server"); res.end("Hello doodoo"); //write로 응답 내용을 적어 주고, end로 응답을 마무리한다. }) .listen(8080, () => { //특정 포트에 연결..