전체 글
-
Ethereum Whitepaper SummaryCryptocurrency/Ethereum 2018. 9. 10. 15:15
먼저 읽고오기: http://www.seunghwanhan.com/2015/06/ethereum-introduction_3.html ------ 암호화폐의 장부는 상태변환시스템: ------ 1) 모든 코인의 소유권현황의 '상태(state)' 2) 현상태와 트랜잭션을 받아서 그 결과로 새로운 상태를 출력해주는 '상태변환함수(state transition function)' 이러한 상태변환를 비트코인 장부에서는 다음과 같이 정의할 수 있다. APPLY(S,TX) -> S' or ERROR 1. TX의 각 입력에 대해 : 1.1 만약 참조된 UTXO가 S에 없다면, 에러를 리턴. 1.2 만약 서명이 UTXO의 소유자와 매치되지 않으면, 에러를 리턴. 2. 만약 입력에 사용된 UTXO들 금액의 합이 출력 UT..
-
[실용주의 프로그래머] 1장. 실용주의 철학Development/개발 관련 도서 2018. 5. 28. 14:09
실용주의 프로그래머(The Pragmatic Programmer)1. 실용주의 철학(A Pragmatic Philosophy) 이 장에서는 문제에 어떻게 접근해야 하는지에 대한 철학을 알려준다. 1. 고양이가 내 소스코드를 삼켰어요 내가 한 일에 대해선 책임을 져라. 프로그램이 안 돌아가면 변명하지 말고 대안을 찾아야 한다.본인의 실력에 대해 자부심을 가질 필요가 있다. 그런만큼 실수를 인정할 필요도 있다. Tip 3. 어설픈 변명을 할 바엔 대안을 제시해라. 코드를 버려야하나? 리팩토링 가능 여부를 분석 뭘 구현해야하지? 프로토타입 구현으로 먼저 구조를 살펴봄 테스팅, 자동화도 도입해야할 요소 SE시간에 배웠던 것들을 다시금 강조한다. 그리고 나도 충분히 못할 수 있다. 그러면 부탁하고 묻고 하는 것에..
-
[실용주의 프로그래머] 서론Development/개발 관련 도서 2018. 5. 28. 13:34
실용주의 프로그래머(The Pragmatic Programmer) Preface (실용주의 프로그래머는 서론부터 이 책의 팁이 나오기 때문에 특별히 싣게 되었다.) '끝장나는' 프로그래머가 되고싶은가? 그렇다면 실용주의 프로그래머가 되도록 노력하면 된다. 실용주의 프로그래머의 주요 특징? 얼리어답터다. 신기술을 받아들이는데 적극적이어야 하는 성향을 지니면 좋다. 캐묻기를 좋아한다. '왜?'의 중요함. 모르면 검색할 줄 아는 적극성. 비판적인 사고의 소유자다. 인과관계를 확실히 짚을 줄 아는 사람이 되면 좋다. 현실적이다. 내가 마주하는 문제가 어렵나/쉽나, 그로 인해 시간이 얼마나 걸리나를 바로 파악할 수 있는 사람을 말한다.설령 오래 걸린다 해도 얼마만큼 붙잡고 해결할 것인지까지 견적을 내보고 집요하게..
-
I. 컴퓨터의 구조와 역사시스템/Windows 구조와 원리 2018. 1. 30. 02:32
01. 시스템 프로그래밍과 운영체제 시스템 프로그램: 시스템 전체의 운영, 관리, 개발에 반드시 필요한 부분을 관리하는 프로그램.운영체제: 하드웨어에게 컴퓨터의 각종 리소스들을 관리하게 지시하고, 일반 사용자들이 이를 편하게 사용할 수 있도록 해주는 프로그램. 운영체제는 크게 커널(Kernel)과 GUI(Graphic User Interface)의 두가지 관점에서 볼 수 있다. 커널 (Kernel): 컴퓨터 시스템 내의 물리적 장치와 논리적 자원들이 효율적으로 고유의 기능을 수행하도록 관리하고 제어하는 부분을 의미. GUI(Graphic User Interface): 컴퓨터와 사용자 사이의 중재자 역할을 해주는 프로그램. 02. 컴퓨터의 구조와 역사 컴퓨터는 마이크로프로세서라는 CPU에 의해 움직인다. ..
-
FC3, FC4를 클리어하면서...시스템/Lord of the BOF: FC3 2018. 1. 29. 03:34
DISCLAIMER: 기본적으로 이건 알아둬야겠다 하고 퍼온 글이다. 출처를 알려주시면 즉시 쓰겠습니다. Fedora Core3 : 인자 참조를 ebp로 하기 때문에 fake ebp(leave)를 이용한 공격 | buf | 인자로 사용할 부분-8을 ebp로 조작(주로 GOT이용)| &execl+3 | ? | ? | ? | ? | .... Fedora Core4 : 인자 참조가 esp로 바껴서 고정된 인자값까지 ret sleding을 넣어 공격 | buf | ebp | ret | &ret | &ret | &ret | &ret | &ret | &ret | &execl | ? | 고정된 인자값 | ... NULL | Fedora Core5 : 함수 프롤로그, 에필로그 부분에서 ecx를 이용해 ret주소를 알아..
-
[수정중] 헤드퍼스트 디자인 패턴 [13]Development/디자인 패턴 2018. 1. 9. 19:06
헤드퍼스트 디자인 패턴[13] 패턴과 함께하는 행복한 삶 패턴: 특정 컨텍스트 내에서 주어진 문제에 대한 해결책이다. 컨텍스트: 패턴이 적용되는 상황문제: 컨텍스트 내에서 이루고자 하는 목적해결책: 누구든지 적용가능하되, 제약조건 내에서 목적을 달성할 수 있는 일반적인 디자인. GoF Design Patterns를 보면 패턴 카탈로그에 의해 패턴들이 정의되어 있다!Intent: 패턴 이름Motivation: 패턴이 만들어지게 된 부분Applicability: 어디 적용가능한지?Structure: 구조... 클래스간 관계를 다이어그램으로 표현Participant: 이 디자인에 포함된 클래스와 객체에 대한 설명Collaborations: 각 participant 간 패턴내에서 어떻게 서로 도움을 주는지 설명..
-
[수정중] 헤드퍼스트 디자인 패턴 [11]Development/디자인 패턴 2018. 1. 9. 19:06
헤드퍼스트 디자인 패턴[11] 프록시 패턴 프록시: 자신이 대변하는 객체와 그 객체에 접근하고자 하는 클라이언트 사이에서 작업을 처리. gumball 프로그램의 위치, 현황, 현재상태에 대해 원격으로 모니터링하고싶다! 원격 프록시를 통해 구현!프록시: 진짜 객체를 대신함. -> 실제 객체인 것 처럼 행동하지만 실제로는 네트워크를 통해서 진짜 객체와 데이터를 주고받음.원격 프록시: 원격 객체에 대한 로컬 대변자 원격 객체: 다른 JVM의 힙에있는 객체(다른 주소공간에서 돌아가고 있는 원격객체) 로컬 대변자(Local Representative): 다른 원격 객체에게 메소드 호출을 전달해주는 역할을 맡음
-
[수정중] 헤드퍼스트 디자인 패턴 [10]Development/디자인 패턴 2018. 1. 9. 19:05
헤드퍼스트 디자인 패턴[10] 스테이트 패턴 상태를 나타내는데 유용한 패턴. 사용자가 어떤 행동을 하는 것에 대해 적절한 행동을 취하게 하도록 돕는다. state machine을 구현하는 방법: 상태를 모은다. (책의 예시에선 4가지 상태가 있음) 현재 상태를 저장하기 위한 인스턴스 변수를 만들고 상태값을 정의한다. 각 상태마다 정수를 부여, 현재상태를 저장하는 인스턴스 변수도 생성 이 시스템에서 일어날 수 있는 모든 행동을 정의. 행동들에 대해 상태가 변하는 것을 알 수 있음. -> 뽑기 기계에 대한 인터페이스 state machine 역할을 하는 클래스를 생성. 메소드 내에서는 조건문에 따른 다양한 상황에 대한 처리가 가능. 책의 첫번째 예제의 단점! 전혀 객체지향적이지 않은 소스코드! OCP를 지키..