본문 바로가기

프로그래밍 관련119

리스트 자료형 리스트 자료형의 형태 #이런식으로 타입 선언할 수도 있다. a=list() #이런식으로 타입 선언할 수도 있다.(2) b=[] #배열처럼 선언하는데, c언어 배열은 int b={1,2,3} 이런식이었음 중괄호가 아니라 대괄호라는 점을 유의! b=[1,2,3] #하나의 리스트 안에 여러가지 데이터타입을 같이 넣을 수 있다. 아래 예시는 정수,소수,문자열 c=[12, 13.0, 7.5, "abcd"] #2차원 배열도 선언 가능하다 아래처럼. C언어의 배열일아 비슷한데 중괄호가 아니라 대괄호임 d=[ [11,12,13 ], [21,22,23], [31,32,33], ] #C언어 배열이랑 다르게 행,열이 N x N 형태가 아니어도 된다. 아래처럼 e=[ [11,12], [21,22,23], [31,32,33,3.. 2021. 9. 3.
임베디드 리눅스.라즈베리파이 타겟보드에 맞는 실행가능한 리눅스 이미지가 필요하다. 이미지라는건 그림 파일을 말하는건 아니고. 리눅스 코드를 빌드해서 만들어진 실행가능파일 이라 생각하자. 타겟보드의 설정에 따라 다른데, 앞에서 말한 리눅스이미지 파일을 타겟보드의 SD카드에 저장하거나. 혹은 t32 를 통해 타겟보드의 플래시에 플래싱을 하거나 혹은 부트로더를 사용하는 등의 방식으로 타겟보드에 리눅스 이미지가 설치되게 된다. 타겟보드에 알맞은 리눅스 이미지가 설치되어있다면 이제 타겟보드 전원을 키면 해당 리눅스 이미지가 실행이 될 것이다. 그렇게 부팅이 끝나면 우리가 사용하는 pc에서 부팅 끝나고나면 뭔가 하는것 없이 바탕화면만 뛰어놓은 상태. 그런 상태에 타겟보드가 머물러 있게 된다. 이 상태에서 타겟보드를 제어하기 위한 sw 코딩을 .. 2021. 6. 24.
파이썬 문자열 자료형 이 글에서 임의의 문자열 변수 이름은 test1, test2 ,test3 . . . 으로 가정 test1="12345" 문자열 길이 알아보는법 len(test1) 출력결과 : 5 문자열 일부만 가져오기 print(test1[1:3]) 출력결과 23 인덱스 1~2 까지 가져오는것임 print(test[0:4])는? 인덱스 0 1 2 3 을 가져오므로 1234 를 출력 마이너스도 쓸 수 있음 -1은 오른쪽에서 첫번째꺼 (5) -2는 오른쪽에서 두번째꺼 (4) 문자열 덧붙이기(합치기) 문자열 두개. 혹은 여러개를 하나로 합치기 ex) test1 = "hello" test2 = " world" 이거 두개를 합쳐서 hello world를 만들고싶다면? test3 = test1 + test2 하면 된다. 즉 그냥 .. 2021. 5. 8.
플라스크에 대하여(3).url_for 함수 ※ 참고로 이 글의 내용은 이미지,동영상 뿐만 아니라 css파일. 자바스크립트 파일 등등 외부파일의 주소를 지정하는 모든 경우에 해당된다. 웹페이지에 이미지. 동영상 등을 올리기 위해서 img 태그. video 태그 등을 사용하게 된다. 이러한 태그들을 사용할 때는 src 라고 해당 이미지.혹은 영상의 위치를 적어주어야한다. 이때 우리는 상대경로를 통해 파일의 경로를 지정해주게 된다. 그렇게 주소를 적고나서 html 파일을 로컬에서(본인 pc)에서 열어보면 영상과 그림이 정상적으로 출력됨을 알 수 있다. 그런데, 해당 html 파일을 플라스크를 통해서 제공하면, 플라스크는 이미지와 동영상의 위치를 제대로 인식하지 못하여 클라이언트(방문자)에게 정보를 제공하지 못한다. 이 때 사용되는 api가 url_fo.. 2021. 4. 27.
플라스크에 대하여(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.