본문 바로가기

프로그래밍 관련123

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.
REST API. 그리고 JWT 토큰 & 인증에 대하여 REST API를 이용하여, 클라이언트가 서버에게 데이터전송을 요청한다는 것을 알게되었다. 그런데 만약 회원의 전화번호, 집주소 이런 정보를 REST API 를 사용하여 요청하면 어떻게 될까? 공개된 REST API를 사용해서 누구나 다른 사람의 개인정보를 Return 받을 수 있다면, 이는 문제가 된다. 따라서, 인증을 거쳐서 인증이 통과된 사람만 특정 데이터를 받을 수 있도록 하는 보안절차가 필요하다. =====토큰? 이러한 보안절차 중에 사용되는 방법 중 하나가 바로 JWT 토큰을 이용한 인증이다. 토큰이라는 것은 '어떤 데이터' 인데, 인증의 증거물로 사용되는 데이터 라고 할 수 있다. (비밀번호 같은 느낌이라고 해야되나?) 예시를 들어보자. 회원의 전화번호를 서버에게 요청하는 Case를 생각해보.. 2021. 4. 15.
REST API에 대하여(Feat. 업비트 API) 업비트 거래소를 이용하여, 코인 자동 매매 프로그램을 만들어보자그럴려면 REST API의 개념에 대해 알아야한다. 일단 REST API가 뭔지, 구체적인 예시를 보자. 웹상에서 서로 간에 데이터를 주고 받으려면, 클라이언트(수신자)가 서버(송신자)에게 이런이런 정보를 주세요~ 하고 요청을 해야 서버가 클라이언트에게 데이터를 줄 것이다. 그런데, 그 요청을 어떻게 할건지를 정해놔야 서버와 클라이언트가 서로 소통을 할 수 있을것이다. 이 때, 클라이언트가 서버에게 요청하는 방법(형식?)을 표준화 해놓은걸 REST API라고 한다. 자잘한 설명보다 구체적인 예시를 보이는게 이해가 빠를 것 같다. 위 그림은 가상화폐 거래소인 업비트에서 제공하는 API에 대한 설명을 제공하는 페이지이다.위 그림을 보면 "마켓코드.. 2021. 4. 14.
Priority Queue(Heap) 우선순위 큐라는것이 있다. 배열.링크드리스트 같이 같은 타입의 변수 여러개를 갖고 있는 자료구조이다. 그런데 이 Queue는 항상 top 값이 원소중에 가장 작은값 or 큰값을 나타내는게 특징이다. 이러한 자료구조를 Heap 이라고하고 stl에서는 priority queue가 이런 기능을 제공함. 근데 동적자료할당에서 얘기하는 heap이랑은 관계없으니 헷갈리지말자 1. #include 2.priority_queue abc; 이렇게하면 큐인데 톱은 항상 제일 큰 놈 리턴 , greater 2020. 5. 22.