본문 바로가기

전체 글377

플라스크에 대하여(2) template render. 웹페이지 출력하기 인터넷상에서 상대방에게 어떤 요청을 받았을 때 지정된 텍스트를 출력해주는 서버 코드를 앞에서 살펴보았다. 이번에는, 어떤 요청이 왔을 때 단순히 특정 문자열을 리턴해주는 것이 아니라 우리가 미리 작성해둔 웹페이지(html 파일)을 상대방에게 출력해주는 예시를 살펴보자. 별로 어려울 것 없다. 앞에서 봤던 예제에서 새로운 api가 하나 추가 될 뿐이다. 이 api의 이름은 render_template 이다. 이 api의 기본 사용방법은 아래와 같다. from flask import Flask , render_template app = Flask(__name__) @app.route("/") def hello(): return render_template('index.html') @app.route("/pa.. 2021. 4. 26.
flask(플라스크) 프레임워크에 대하여(기본개념) 플라스크의 가장 기본적인 기능은, 나의 컴퓨터가 다른 컴퓨터의 요청을 받았을때, 그 요청을 인지하고 응답하는 것이다. 예를 들어 현재 내컴퓨터의 ip 주소가 100.100.100.100 이라고 하자. 이때, 인터넷에 연결된 누군가가 자신의 웹브라우저(ex.인터넷익스플로러, 파이어폭스 등) 에서 주소창에 나의 ip 주소(100.100.100.100)를 적고 enter키를 쳤을때. 이것은 다른 컴퓨터가 나에게 무언가 신호를 날리는 것이다. 이때 내 컴퓨터에 플라스크 같은 프레임워크가 실행되고 있지 않다면, 해당 요청은 무시될 것이고 내 컴퓨터는 상대방에게 아무런 응답을 하지 않을 것이다. 또한 내 입장에서는 애초에 그런 요청이 왔다는 사실을 알 수도 없다. 그런데 만약 내 컴퓨터에 플라스크를 실행시킨 상태에.. 2021. 4. 26.
비트코인에 대하여(3) 코인베이스.트랜잭션에 중간점검하자 비트코인에 존재하는 데이터는 오직 출금기록 뿐이다. a가 b에게 10원 보냈다. e가 b에게 50원 보냈다. 위 상황에서 b는 잔액 60원이 생겼다. a와 e가 b에게 보낸돈이 60원이기 때문이다. 한편, 이러한 출금기록 한줄 한줄을 우리는 트랜잭션이라고 부른다. 한편, b는 잔액이 60원이므로 이 돈을 다른사람에게 보낼 수 있다. 즉, 새로운 트랜잭션을 만들 수 있다. 근데 이 트랜잭션을 만들때는 항상 source 트랜잭션이 필요하다. 말하자면 출처가 필요하다는 소리이다. 여기서 말하는 소스는 a가 b에게 10원 보냈다. e가 b에게 50원 보냈다 이다. 이것이 b가 가진 소스이다. b가 c에게 출금을 하려면 이 트랜잭션으로 부터 새로운 트랜잭션이 생성가능하다. 근데 .. 그건 알겠는데 그.. 2021. 4. 24.
비트코인에 대하여(2) utxo 앞의 내용 복습 비트코인 세상에 존재하는 모든 데이터는 출금 기록이다. a에게 10원을 보낸다. b에게 7원을 보낸다. a에게 5원을 보낸다. 따위의 기록들이다. 근데 누군가에게 돈을 보내려면 일단 내가 가진 돈이 있어야 그걸 누군가에게 보낼 것이다. 내가 가진 돈이란 무엇인가? 앞에서 봤던 기록을 다시보자 a에게 10원을 보낸다. b에게 7원을 보낸다. a에게 5원을 보낸다 만약 이 기록이 비트코인 세상에 존재하는 기록의 전부이고, 내가 a라면? 내가 가진 돈은 총 15원이다. 이때 위와 같은 출금기록 하나하나를 트랜잭션 이라고 한다. 한편 트랜잭션에는 utxo냐. 아니냐 라는 프로퍼티가 존재하는데, utxo란 unspent 트랜잭션 즉. 아직 지불이 안된 트랜잭션이라는 소리인데.. 그니까 누군가의 잔.. 2021. 4. 21.
비트코인에 대하여(1) 개요 1. 비트코인은 출금 기록들이 적혀있는 데이터의 모음일 뿐이다. 비트코인 세상에서 저장되어 있는 정보들은 전부 출금 기록이다. 예를 들어 아래와 같은 기록들이다. Ex) A가 B에게 100원을 보냈다. C가 D에게 500원을 보냈다 A가 E에게 300원을 보냈다 이러한 기록들이 모여서 하나의 블록(블록A)을 이룬다. 그리고 또 추가적인 출금 기록들이 발생하면 이것들이 모여서 새로운 블록(블록B)에 담기게 된다. 이 때 이 새로운 블록(블록B)에 적히는 내용중에, 출금기록 외에 앞에서 만들어진 블록(블록A)의 hash값도 인풋으로 갖게 된다. 그리고 이 두개의 블록은 링크드리스트 형태로 묶이게 되어 체인이 형성된다. 그리고 추가로 발생되는 출금기록들이 모여서 또 새로운 블록(블록C)이 만들어지고.. 여기에.. 2021. 4. 20.
리눅스 gcc에 대하여 개요 사용방법 옵션들 정의: gcc는 리눅스에서 사용하는 컴파일러의 한 종류이다. 가장 널리 알려지고 사용되는 컴파일러이다. 사용방법 : 비쥬얼스튜디오에서 프로젝트를 하나만들어서 c코드를 만든다고 생각해보자 test.c 라는 파일을 만들고 코드를 작성한다. 그러고나서 빌드를 누르면 하나의 exe 파일이 생성된다. 리눅스에서도 똑같은 test.c 라는 파일을 만든다. 근데 리눅스에는 비쥬얼스튜디오가 없다. 이 c파일을 어떻게 빌드해서 실행파일을 만들어낼까? 참고로 리눅스에서는 실행파일 확장자가 .exe가 아니라 .out이 나온다. 이때 사용하는게 gcc 컴파일러다. test.c라는 소스코드가 위치한 디렉토리에서 cmd를 연다. 그리고나서 다음과 같이 입력한다 gcc test.c 이렇게 입력하고 엔터를 누르면 a.out이라는 실.. 2021. 4. 19.
VS Code. Extension Offline 설치 다운로드 받은 vsix 파일을 설치하려는 Offline 컴퓨터로 이동Offline 컴퓨터에서 extension 설치탭으로 이동 2021. 4. 19.
CAN 통신 개요. 캔 통신이란? can통신 기초 Can통신이란 무엇인가? 세상에는 다양한 통신 프로토콜들이 존재하는데 컴퓨터에 랜선을 연결해서 인터넷을 사용할 때 쓰는 TCP/IP 통신, WiFi 통신이 대표적인 예시이다. CAN도 수 많은 통신 프로토콜 중 하나이다. 통신이라는 것은 서로 다른 두 주체가 데이터를 주고 받는 것을 의미한다. 자동차 안에는 굉장히 많은 제어기가 들어가 있다. 여기서 제어기는 일종의 컴퓨터라고 생각하면 된다. 핸들(조향장치)를 컨트롤 하는 제어기, 브레이크를 컨트롤 하는 제어기, 에어백을 컨트롤 하는 제어기, 스마트키 모듈을 컨트롤하는 제어기 등등.. 아주 많은 수의 제어기가 자동차 안에 들어가있다. 그리고 이러한 제어기들은 서로 정보를 주고 받을 필요가 있는데, 이 때 사용하는 통신 프로토콜이 바로 CA.. 2021. 4. 15.
REST API. 그리고 JWT 토큰 & 인증에 대하여 REST API를 이용하여, 클라이언트가 서버에게 데이터전송을 요청한다는 것을 알게되었다. 그런데 만약 회원의 전화번호, 집주소 이런 정보를 REST API 를 사용하여 요청하면 어떻게 될까? 공개된 REST API를 사용해서 누구나 다른 사람의 개인정보를 Return 받을 수 있다면, 이는 문제가 된다. 따라서, 인증을 거쳐서 인증이 통과된 사람만 특정 데이터를 받을 수 있도록 하는 보안절차가 필요하다. =====토큰? 이러한 보안절차 중에 사용되는 방법 중 하나가 바로 JWT 토큰을 이용한 인증이다. 토큰이라는 것은 '어떤 데이터' 인데, 인증의 증거물로 사용되는 데이터 라고 할 수 있다. (비밀번호 같은 느낌이라고 해야되나?) 예시를 들어보자. 회원의 전화번호를 서버에게 요청하는 Case를 생각해보.. 2021. 4. 15.