글

NSIS, 윈도우용 설치 시스템

NSIS Nullsoft Scriptable Install System. 스크립트 기반으로 동작하는 Windows 설치 프로그램을 만드는 오픈소스 시스템. 인스톨실드와 같은 상용 제품들을 널리 대체하면서 인기를 끌고 있다. (= 윈도우용 설치 프로그램을 만들어주는 프로그램.) 공식사이트 :  http://nsis.sourceforge.net/Main_Page * HM NIS Edit : A Free NSIS Editor/IDE. 사람들이 제일 쓸만한 거라고 한다. 다른건 딱히 안보이므로 다운받아서 쓰도록 한다. 1. 라이센스 zlib 라이선스인 자유 소프트웨어 라이선스와 결합한 자유 소프트웨어. (출처 : 위키백과 ) NSIS는 완전 Free라서 다운 받아서 쓰고, 상용화 하는 것도 아무 문제가 없다고 한다. HM NIS Edit는 무료고, 맘에 들어서 개발자에게 Donation 할 수도 있다. 2. 설치 NSIS 다운로드 링크 :  http://nsis.sourceforge.net/Download HM NIS Edit 다운로드 링크 :  http://hmne.sourceforge.net/ HM NIS Edit 설치 중 에러 발생. 뭔지 몰라서 일단 무시하고 설치해본다. 무시하고 설치하니까 일사천리로 잘 된다. 해당 폴더에 가보니까 그 파일이 없어서 생긴 문제같은데, (.lng)파일은 언어파일이고, 내가 쓸 일 없는 언어인 것 같으므로 무시하고 써보도록 한다. 문제가 생기면 그때 생각해야지. NSIS를 설치하면 폴더 내에 'NSIS' 실행파일과 'makensisw' 실행파일 두개가 생성된다. makensisw 는 바로 컴파일 할 수 있는 프로그램이고, NSIS 에 들어가면 각종 매뉴얼, 설명서, 업데이트 등등 NSIS 사용에 도움되는 다양한 링크가 있다. 3. 관련 문법 NSIS 스크립트는 한 줄에 하나의 명령어를 쓰도록 되어있다. C에서 세미콜론(;)으로 구분하는...

On-Demand 서비스

주문형 서비스 1. 소비자가 있는 곳으로 찾아가서 상품과 서비스를 전달하는 것    2. 이용자의 요구에 따라 상품이나 서비스가 바로 제공되는 것       => 내가(소비자) 있는 곳으로 상품/서비스가 찾아온다. 최근에 O2O(Online-to-Offline) 서비스와 함께 연결지어서 O2O On-Demand 서비스 라는 말을 종종 사용한다. 대표적인 O2O On-Demand 서비스의 종류에는    카카오 택시 : 택시기사와 승객 연결    배달의 민족 : 음식 배달업체와 고객 연결    세탁특공대 : 세탁물 수거 및 배달 등이 있다.

Django란 무엇인가, 설치하기까지

# What is 'Django' 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(web application framework). 쉽고 빠르게 웹사이트를 개발 할 수 있도록 돕는 구성요소라고 할 수 있음. * framework : '소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것(-랄프 존슨 교수 왈)' 라이브러리와 다르게 애플리케이션의 틀과 구조를 결정하며, 그 위에 개발된 개발자의 코드를 제어. # Why we need Django? 서버가 클라이언트에게 웹페이지를 제공하는 상황을 생각해보자. 편지(request, 요청)가 도착했는지 확인해주는 메일박스(port, 포트)가 있다고 상상한다. 이 확인하는 과정은 웹 서버가 해주는 일이다. 웹 서버는 받은 편지를 읽고 웹 페이지와 함께 답장을 준다. 이 때, 답장의 내용이 필요한데 장고는 특정 콘텐츠를 만드는 역할을 한다. # How Django works? 웹 서버에 요청이 오면 장고로 전달되고, 장고 urlresolver는 웹 페이지의 주소를 가져와 무엇을 확인할지 확인한다. urlresolver는 패턴 목록을 가져와서 URL과 맞는지 처음부터 하나씩 대조해서 식별하고, 일치하는 패턴이 있으면 장고가 해당 요청을 관련 함수(view)에게 넘겨준다. urlresolver는 주소와 번지를 확인해서 일치하는 집에 보내주는 집배원과 같은 역할을 한다. 그리고 모든 활동은 view에서 일어난다. view는 답장을 생성, 클라이언트의 웹 브라우저로 보내주는 역할을 한다. # 가상환경 설정 및 장고 설치 ## 가상환경(Virtual Environment) 설정하기 장고는 파이썬 프레임워크이기 때문에, 파이썬 먼저 설치해야한다. 나는 작성 당시 최신버전인 3.6 버전을 설치했다! 파이썬이 정상적으로 설치되었는지 확인하려면 명령 프롬프트에서 다음 명령어를 입력하면 된다. ...

Scope and Closure, 스코프와 클로저

자바스크립트에서 중요한 개념 중 하나인 Scope, 스코프는 변수와 상수, 매개변수가 언제 어디에서 정의되는지를 결정한다. 쉽게 받아들이기 위해서는 스코프를 시야, 범위라고 해석해도 된다(책에서 알려준 설명임). * 본 글에서는 ES6버전을 기준으로 작성할 것이기 때문에, let, const 키워드를 기본으로 변수를 선언할 것이다. # 스코프와 존재 변수가 존재하지 않으면 스코프 안에 있지 않다는 것은 직관적으로 이해할 수 있다. 하지만 역이 성립하는 것은 아니다. 다시 말해  스코프 안에 있지 않다고 해서 변수가 존재하지 않는 것이 아니 라는 의미이다. 스코프는 가시성(Visibility)라고도 불리는데, 프로그램의 현재 실행 중인 부분, 즉 실행 컨텍스트(execution context)에서 현재 보이고 접근할 수 있는 식별자를 말한다. 반면에 '존재한다'는 것은 그 식별자가 메모리가 할당된(예약된) 무언가를 가리키고 있다는 뜻이다. 그렇다면, 존재하지만 스코프 안에 없는 변수는 무엇일까? 자바스크립트에서는 무언가가 더 존재하지 않는다고 해도 메모리를 바로 회수하지 않는다. 메모리에 계속 유지할 필요가 없다고 표시해두면, 주기적으로 일어나는 가비지 콜렉션(garbage collection) 프로세스에서 메모리를 회수한다. 이는 자동으로 일어나며, CPU와 메모리를 심각하게 많이 쓰는 경우가 아니면 프로그래머가 고려하지 않아도 된다. # 정적 스코프, 동적 스코프 정적 스코프는 다른 이름으로 렉시컬(lexical) 스코프라고 한다. lexical은 한국말로 '어휘적'이라는 뜻을 가지고 있다. 소스코드적으로 살펴본다는 의미로 해석하면 될 것 같다. function f1() { console.log('1'); } function f2() { console.log('2'); } f2(); f1(); f2(); 위 프로그램은 정적으로 보았을 때, 위에서 아래로 읽어내리는 단...

버전관리시스템, git의 기본적인 사용법

이미지
# Install git * git 설치 링크 :  http://git-scm.com/ 설치 후 최초 실행 시, home 디렉토리는 '내 문서' C:\users\(사용자ID) # git Bash 리눅스의 bash shell을 사용하듯이 사용하면 된다. - mkdir : 디렉토리 생성 - cd (dir name) : 해당 이름을 가진 디렉토리로 이동 - ls : 해당 디렉토리 내의 목록 # git init git 저장소를 만드는 과정으로, .git 이라는 폴더가 생성되고, 그 안에 뼈대 파일이 생성된다. 이 때, .git 폴더는 숨김상태로 생성된다. .git폴더 내에는 hooks, info, objects, refs 라는 폴더와 함께 config, description, HEAD 파일이 생성된다. git init을 수행한 후, (master) 상태가 되었다. # git status 현재 git의 상태를 확인하는 명령어. git init을 한 후 명령어를 실행하니 다음과 같이 출력되었다. - On branch master :  - No commits yet :  - Untracked files : # default Setting name, email 등록하는 과정. 기본 설정을 하면 .gitconfig라는 파일이 생성된다. 아래 화면은 생성된 .gitconfig 파일을 확인하는 과정이다. (.gitconfig 파일은 home 디렉토리에 생성된다.) .gitconfig 파일이 홈 디렉토리에 생성된 것을 확인했다. vi 편집기를 이용하여 해당 파일을 열어보면 name, email이 setting 된 것을 확인할 수 있다. vi 편집기에서 편집을 하려면 [i], [a] 키를 이용하여 편집이 가능하다. vi 편집기를 통해 추가로 설정해야 할 내용은 [core]의 editor, [merge]의 tool, [color]의 sta...

dApp, 탈중앙화된 어플리케이션

Decentralized Application. 탈중앙화된 어플리케이션. 중앙화된 어플리케이션이라는 것은 예를 들어서 웹서버를 이용한 웹사이트 같은 것인데, 웹서버가 클라언트와 서버의 리소스들을 연결하는 중심의 역할을 한다. 따라서 웹서버 관리를 통해 효율적으로 처리나 접근 제한 등이 가능하다. 하지만 많은 정보가 중앙 서버에서 관리되기 때문에 내/외부로부터의 해킹, 데이터 유출 등에 대한 위험성이라는 단점이 있다. dApp과 중앙화된 모델의 차이점은 중앙 서버가 없다는 것이다. * 참고 링크 :  http://cointalk.co.kr/bbs/board.php?bo_table=beginner&wr_id=90 * 참고 링크 :  http://www.chaintalk.io/archive/lecture/461

()aas, - as a Service

()aaS에 관련된 정보는 2012년 이래로 쭉 이어져있다. 약 6년 전이다. 음, 6년 전의 키워드를 이제 알게 되었다는 점에 대해서 부끄럽게 생각하며 정리해보려고 한다. -aaS(as a Service)는 '클라우드 기반형 서비스'라고 통칭되고 있다고 한다. 자신이 필요한 만큼의 프로그램, 플랫폼, 저장공간 등을 ISP(Internet Service Provider) 혹은 기타 전문업체가 보유한 대용량의 물리적 공간(클라우드)에서 필요한 만큼 빼내거나 저장하는 방식으로 사용하는 것을 의미한다. 기업들은 제공 방식, 비용 등을 감안해서 자체적인 판단에 따라 적합한 사용방식을 채택해서 사용하고, 대표적으로 분류되어 구분되는 것은 SaaS, PaaS, IaaS가 있다고 한다. = 간단히 요약해, 클라우드를 기반으로 사용자가 필요한 만큼 원하는 수준의 서비스를 선택적으로 이용하는 것으로, 제공 받는 서비스의 종류에 따라 앞의 키워드가 달라지는 것. 1. Saas, Software as a Service 'on demand software'라고도 불린다. 소프트웨어를 서비스로 제공하는 것이다. 프로그램과 관련 데이터를 중앙서버에서 호스팅하고, 사용자는 웹브라우저 등의 클라이언트를 통해 접속하여 원하는 프로그램을 임차하는 방식으로 비즈니스에 활용하거나 특화된 제품을 창출하는 것. - 구글 드라이브, 드롭박스, 에버노트 2. PaaS, Platform as s Service SaaS의 개념을 개발도구의 단계로 확장한 방식. 프로그램 개발을 위해 플랫폼을 구축할 필요 없이 모든 개발도구와 라이브러리를 웹으로 서비스한다. 주 이용자는 개발자이다. 3. IaaS, Infra as a Service CPU, 메모리, 디스크 네트워크 등 IT 인프라를 가상화해서 서비스로 제공하는 방식. 물리적 컴퓨팅 자원과 서비스가 1:1 매핑되는 기존 서버호스팅 구조와 다르게 가상화 기술을 이용해 공유 할 수 있는 컴퓨팅 자...

require(), module.exports

웹 브라우져에서는 HTML의 <script> 태그를 이용해 필요한 자바스크립트 파일을 불러오고, 로딩된 자바 스크립트는 서로 참조/호출이 가능하다. 하지만 노드는 HTML 파일이 없이 자바스크립트 파일만 존재하기 때문에, 서로 참조/호출을 위한 방법이 필요하며 이 때 사용되는 것이 require()와 module.exports이다. *CommonJS의 모듈 표준이다. * CommonJS : JavaScript API를 정의하는 단체. 노드에서 하나의 자바스크립트 파일은 하나의 모듈이 된다. JS 파일 내부에서 정의한 객체는 외부에서 접근이 불가능하다. ㅡ자바스크립트에서 익명 함수로 코드를 감싸는 방법과 동일.ㅡ 따라서 외부에서 접근이 가능하도록 하려면 명시적으로 지정해주어야 한다. 함수, 변수 등을 module.exports에 할당하면 외부에서 접근이 가능하다. 모듈을 사용하는 파일에서는 require()로 다른 자바스크립트 파일(=모듈)을 불러오고, module.exports로 외부에서의 접근이 허용된 변수나 함수를 사용할 수 있다. var filesystem = require('fs'); var util = require('util'); fs와 util 두 가지 기본 모듈을 불러오는 것을 예로 들어보자. 노드 내부를 보면 fs.js나 util.js와 같은 자바스크립트 파일이 있다. fs.js와 util.js로 제공되는 기본 모듈을 불러와서 filesystem과 util 변수에 저장했다. 각 변수를 이용해서 모듈에 있는 함수를 호출할 수 있다. require()의 파라미터가 ./나 ../와 같이 상대 경로로 시작하지 않고 모듈명(=자바스크립트 파일 명)을 바로 사용하면 기본 모듈이나 확장 모듈을 불러온다.  * 참고 링크 :  http://tazz009.tistory.com/865

RISC, Reduced Instruction Set Computer

축소 명령어 집합 컴퓨터. CPU에서 수행하는 동작 대부분이 몇 개의 명령어만으로 수행이 가능하다는 사실에 기반하여 구현된 것으로, CISC(Complex Instruction Set Computer)와 반대된다. 명령어의 길이가 고정적이며, 적은 수의 명령어로 명령어 집합을 구성하고 기존의 복잡한 명령은 보유한 명령어의 조합을 통해 수행한다.  하나의 명령어 실행으로 간단한 작업을 빠르게 수행할 수 있다는 장점을 가졌다.  * 참고 링크 :  http://skagh.tistory.com/7 * 참고 링크 :  http://www.semiconnet.co.kr/ms_pdf/667_20151229134857_201502_st.pdf # CISC, Complex Instruction Set Computer 내용

CPU, Central Processing Unit

중앙 처리 장치 . 마이크로 프로세서라고도 한다. 소프트웨어 명령의 실행이 이루어지는 컴퓨터의 부분, 혹은 그 기능을 내장한 칩. 외부에서 정보를 입력받고, 기억 하고, 컴퓨터 프로그램의 명령어를 해석하여 연산 하고, 외부로 출력하는 역할을 한다. 컴퓨터 부품과 정보를 교환하면서 컴퓨터 시스템 전체를 제어 하는 장치. 컴퓨터의 두뇌에 해당한다고 할 수 있다. '컴퓨터의 성능=CPU의 성능'이라는 말이 있을 정도로 컴퓨터에서 핵심적인 위치에 있다. 윗부분 내용에서 볼드로 쓴 내용은 컴퓨터의 5가지 기능 중에서 가장 핵심적인 부분인 기억, 연산, 제어이다.  CPU(, GPU)와 같은 프로세서 내부는 연산을 담당하는 산출연산처리장치(ALU)와 명령어를 해석/실행하는 컨트롤유닛(CU), 각종 데이터를 담아두는 캐시로 나뉜다. CPU는 명령어가 입력된 순서대로 데이터를 처리하는 직렬(순차) 처리 방식에 특화된 구조를 가지고 있다. 한 번에 한 가지의 명령어만을 처리한다. 따라서 ALU의 개수가 많을 필요가 없다. 코어가 8개인 옥타코어 CPU에서는 코어당 1개씩 총 8개의 ALU가 탑재되어 있다. CPU 내부 면적의 절반 이상은 캐시메모리로 채워져 있는데, 캐시 메모리는 CPU와 RAM의 속도 차이로 인해 발생하는 병목현상을 막기 위한 장치이다. CPU가 처리할 데이터를 미리 RAM에서 불러와 CPU 내부 캐시 메모리에 임시로 저장해서 처리 속도를 높일 수 있다. CPU가 단일 명령어를 빠르게 처리할 수 있는 이유이기도 하다. * 참고 링크 :  http://biz.chosun.com/site/data/html_dir/2016/07/24/2016072400125.html CPU는 연산을 처리하기 때문에 수많은 트랜지스터로 구성되어 있으며, 발열이 심하기 때문에 쿨러를 통해 CPU에서 발생하는 열을 식혀준다. CPU의 열을 효과적으로 식혀주기 위해서 CPU 표면에 열 전도율이 높은 '서멀 그리스'를 발라주기도 한다. ...

MinGW, Minimalist GNU for Windows

Microsoft Windows로 포팅한 GNU 소프트웨어 도구 모음. * 포팅(porting) : 컴퓨터 과학에서 실행 가능한 프로그램이 원래 설계된 바와 다른 컴퓨팅 환경(-CPU, OS, 서드 파트 라이브러리 등)에서 동작할 수 있도록 하는 과정. # cygwin(시그윈)과 MinGW 차이 http://hardlearner.tistory.com/45 http://tjcplpllog.blogspot.kr/2012/03/mingw-cygwin.html # MinGW 설치 시 주의점 이름에 공백이 있는 경로에 설치하지 말 것. do not install MinGW in any location with spaces in the path name reference . 예를 들면 "Program Files"나 "My Documents". 추천하는 설치 디렉토리는 "C:\MinGW"

Software Build, 컴파일, 링크, 빌드

컴퓨터 공부하던 도중에 빌드와 관련해서 용어정리를 한 번 해놓으려고 하는 포스팅. 나중에 까먹으면 읽어봐야지. # Software build, 소프트웨어 빌드 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 혹은 그에 대한 결과물. 소프트웨어 빌드에서 가장 중요한 단계 중 하나는 소스 코드 파일이 실행코드로 변환되는 컴파일 과정이다. (출처 : 위키백과 ) # Compile, 컴파일 기계어를 직접 사용하여 프로그래밍 하기에는 힘든 부분이 많다. 그래서 편하게 프로그램을 만들기 위한 과정이 필요하다. 예를 들어, 기계어 10줄을 사람이 알아듣는 특정 단어(여기에서는 A로 가정)로 정의한다. 그리고 프로그램을 작성할 때, 기계어 10줄 대신 A를 사용하여 프로그래밍한다. 그리고 A를 기계어 10줄로 번역해주는 프로그램 B를 만든다. 이렇게 하면, B를 실행하여 A를 처음의 기계어 10줄로 바꿀 수 있다. 이 때 B를 컴파일러(Compiler)라고 하고 B를 이용하여 A가 기계어로 바뀌는 과정을 컴파일(Compile)이라고 한다. # Link, 링크 프로그램이 커지면서, 한 파일에 모든 소스코드를 작성하는 것이 비효율적임을 알게 된다. 그래서 소스코드를 여러 파일로 분리하기 시작했는데, 프로그램을 실행할 때에는 분리되어 작성된 파일을 하나로 합쳐야 한다. 분리되어 있는 소스코드 파일을 하나로 합치는 과정을 링크(link)라고 하며, 이 때 사용하는 프로그램이 링커(linker)이다. # Build, 빌드 컴파일 과정과 링크 과정을 합쳐서 빌드(build)라고 하며, 이 때 사용하는 프로그램을 빌더(builder)라고 부른다. 전체적인 과정을 요약하자면, 먼저 소스코드를 프로그래밍 언어로 작성한 후, 파일로 저장한다. 저장한 소스 파일을 컴파일러를 이용하여 컴파일한다. 프로그래밍 언어가 기계어로 번역되어 목적 파일이 생성된다. 컴파일러가 생성한 목적 파일들을 링커를 이용하여 링크...

div 태그 - style 이용한 여백, 배경 지정

페이지 내에서 영역을 설정하는 태그. div 태그로 구분해서 영역별로 꾸며줄 수 있다. style을 이용해서 여백, 배경 등을 정해줄 수 있다. ex) <div style="margin-left:1px;"> # 여백 설정 테두리와 바깥쪽 사이 : margin 테두리와 안쪽 사이 : padding margin:1px 2px 3px 4px padding:1px 2px 3px 4px 왼쪽부터 시계방향 순서(위, 오른쪽, 아래, 왼쪽). 특정 방향의 여백을 지정하고 싶으면 -top, -right, -bottom, -left 쓰는 것이 좋다. ex) margin-left:1px 참고 링크 :  https://ojji.wayful.com/2013/12/HTML-DIV-to-Space-Inside-and-Outside-div-block.html # 배경 지정 background:#색상코드 ex) <div style="background: #d2d2d2;"> 색상코드 : 밝은회색(#d2d2d2), # 너비 지정 width:10px - 너비가 10픽셀로 고정 width:10% - 너비가 브라우저 너비에 따라 조절 max-width: 500px - 너비가 최대 500픽셀 내에서 브라우저 너비에 따라 조절 min-width: 500px - 너비가 최소 500픽셀 이상에서 브라우저 너비에 따라 조절 참고 링크 :  https://ojji.wayful.com/2013/12/HTML-DIV-to-Set-Width-Max-width-Min-width-by-Percent-or-Pixels.html

Public Blockchain, 공개 블록체인

어제 블록체인의 개념에 대해서 간단하게 정리하는 포스팅을 했다. 이번에는 블록체인에 대해서 좀 더 깊게 들어가서, 블록체인 참여의 형태에 따라 퍼블릭, 프라이빗으로 구분되는 블록체인의 종류에 대해서 정리해보려고 한다. 오늘은 일단 먼저 퍼블릭 블록체인에 대해서 알아보기로 한다. # 블록체인의 종류 블록체인의 종류는 크게는 두 가지, 굳이 한 번 더 구분하자면 세 가지로 나누어진다. 퍼블릭 블록체인(Public Blockchain) : 비트코인, 이더리움처럼 누구나 블록체인 네트워크에 참여할 수 있는 블록체인 프라이빗 블록체인(Private Blockchain) : 하나의 기관에서 독자적으로 사용하는 블록체인. 내부 망을 구축하거나 별도의 인증방식을 통해 참여가 제한되어 있다. 컨소시움 블록체인(Consortium Blockchain) : 여러 기관들이 컨소시움을 이뤄 구성하는 블록체인. 허가된 기관만 네트워크에 참여할 수 있다. # Public Blockchain 퍼블릭 블록체인은 누구나 네트워크에 참여해 모든 내역을 볼 수 있고, *트랜잭션 내역을 검증할 수 있다. 그렇기 때문에 인증이 안된 사용자나, 악의적인 목적을 가진 사용자가 네트워크에 참여할 수 있다는 문제가 있다. 그러면 수 많은 사용자들 중에서 블록체인 네트워크에 호의적인, 신뢰가능한 사용자를 어떻게 가려낼 수 있을까? 여기에서 '비잔틴 장군의 문제'가 언급된다. * 트랜잭션(Transaction) : 처리되는 특정한 업무, 특정한 거래. 또는 그 결과 얻어지는 데이터 기록 (출처 :  네이버 지식백과 ) <비잔틴 장군 문제> 비잔티움 장군 문제는 레슬리 램포트와 쇼스탁, 피스가 공저한 1982년 논문에서 처음 언급됐다. 이 논문에서 저자들은 적군의 도시를 공격하려는 비잔티움 제국군의 여러 부대가 지리적으로 떨어진 상태에서 각 부대의 지휘관들이 (중간에 잡힐지도 모르는) 전령을 통해 교신하면서 공격 계획을 함께 세우는 ...

비트코인, 블록체인 개념 간략 정리

이미지
비트코인, 블록체인 . 2017년 최고의 핫 키워드라고 해도 과언이 아닐 만큼 많은 사람들의 관심을 받았다. 비트코인의 엄청난 가치 상승으로 많은 돈을 벌었다는 이야기가 전해지면서 많은 사람들이 비트코인에 관심을 가지기 시작했고, 비트코인을 존재하게 하는 블록체인 기술도 관심을 받게 되었다. 많은 전문가들이 블록체인 기술을 4차 산업혁명의 핵심이 될 기술이라고 이야기하고 있는 것을 보면 현재 가장 핫한 기술임에 틀림없다. 블록체인에 대해서 종종 들어도 보고, 이해해보려고 이 글 저 글 많이 찾아보기도 했지만 확실하게 개념이 와닿지 않아서 이번 기회에 정리를 통해 좀 더 제대로 이해해보려고 한다. 나를 포함해서 많은 사람들이 블록체인 기술이 있는 다음에 비트코인이 생겨나는 인과관계를 당연하게 여겼을텐데, 놀랍게도 비트코인을 만들기 위해서 블록체인이라는 기술이 생겨난 것이라고 한다. 그래서, 비트코인을 중심으로 블록체인 기술에 대해 이해한 다음 블록체인이라는 기술 자체에 대해서 좀 더 확장해서 생각해보려고 한다. # WHO, 누가 그렇다면 비트코인을 제일 먼저 만든 사람은 누구일까. 비트코인의 창시자를 검색하면 '나카모토 사토시'라는 일본 이름을 가진 사람이 검색된다. 본인을 드러낸 적이 없기 때문에 그가 남자일지, 여자일지. 혹은 일본인이 맞는지, 실제 국적이 어디인지는 알려진 바가 없다. '사토시'라는 성은 지혜, 이유를 뜻하는 말이고, '나카모토'는 중앙 요소 라는 뜻으로 해석된다. 중앙 요소의 존재 이유라는 뜻으로 끼워맞추기식 해석을 해 볼 수도 있다. 어쨌든, 나카모토 사토시의 정체에 대해서는 아직까지 확실하게 알려진 바가 없으며 전 세계가 그가 누구인지 여전히 궁금해하고 있다. 추정 자산은 밝혀진 바로만 100만 비트코인 이상이라고 한다. 부럽다. # WHAT, 무엇을 비트코인을. 위키백과에 따르면 비트코인의 정의는 '블록체인 기술을 기반으로 만들어진 온라인 암호화폐...

NSIS 기본 스크립트와 MUI 적용

이미지
《NSIS 기본 스크립트와 MUI 적용》 1. 기본적인 설치 프로그램 생성 시 고려사항 설치 파일명(OutFile), 기본 설치 디렉토리 경로(InstallDir), 설치할 파일의 정보(이름, 경로) 2. 기본 설치 파일용 스크립트 나름 찾아서 필요하다는 것만 쓰고, 컴파일 시도했더니 에러가 발생했다(일단 내 코드가 잘못된 것은 아님. 다른 NSI 파일도 안됨!). 구글링해보니 "zlib-x86-ansi" 파일이 없어서 생기는 문제인 것 같다. 내 컴퓨터(Windows)에도 마찬가지. 그래서 해당 파일을 구해서 폴더에 집어넣어보기로 했다. 파일은 여기 에서 구했다. "zlib-x86-ansi" 파일을 구해서 Program Files의 NSIS\Stubs에 넣으니 정상적으로 실행되었다! install 파일이 생겼다! 근데 실행파일은 제대로 실행이 안된다. 문제가 있는 것 같다; <사용된 명령어 정리> OutFile : 만드려는 설치파일의 이름 설정. InstallDir : 기본 설치 경로 설정. SetOverWrite : 이미 설치되어 있을 경우, 덮어쓰기 여부. on이면 덮어쓴다는 것. Section : 아직 정확히 모름. 끝부분에 SectionEnd로 닫아주어야한다. SetOutPath : 설치(파일을 복사)할 대상 디렉토리. File : 가져올 파일 명. SetAutoClose : 아직 정확히 모름. 3. MUI, Modern UI 우리가 일반적으로 쓰는 설치파일에서 설치를 시작합니다, 라이선스, 구성요소 선택, 설치 폴더 선택, 설치 과정, 설치 완료 화면 등 각종 페이지들을 추가해주는 작업이다. 좀 더 친절한 설치파일을 생성할 수 있다. (작성 중 - 2018.01.18)

NSIS, 윈도우용 설치 시스템

이미지
NSIS Nullsoft Scriptable Install System. 스크립트 기반으로 동작하는 Windows 설치 프로그램을 만드는 오픈소스 시스템. 인스톨실드와 같은 상용 제품들을 널리 대체하면서 인기를 끌고 있다. (= 윈도우용 설치 프로그램을 만들어주는 프로그램.) 공식사이트 :  http://nsis.sourceforge.net/Main_Page * HM NIS Edit : A Free NSIS Editor/IDE. 사람들이 제일 쓸만한 거라고 한다. 다른건 딱히 안보이므로 다운받아서 쓰도록 한다. 1. 라이센스 zlib 라이선스인 자유 소프트웨어 라이선스와 결합한 자유 소프트웨어. (출처 : 위키백과 ) NSIS는 완전 Free라서 다운 받아서 쓰고, 상용화 하는 것도 아무 문제가 없다고 한다. HM NIS Edit는 무료고, 맘에 들어서 개발자에게 Donation 할 수도 있다. 2. 설치 NSIS 다운로드 링크 :  http://nsis.sourceforge.net/Download HM NIS Edit 다운로드 링크 :  http://hmne.sourceforge.net/ HM NIS Edit 설치 중 에러 발생. 뭔지 몰라서 일단 무시하고 설치해본다. 무시하고 설치하니까 일사천리로 잘 된다. 해당 폴더에 가보니까 그 파일이 없어서 생긴 문제같은데, (.lng)파일은 언어파일이고, 내가 쓸 일 없는 언어인 것 같으므로 무시하고 써보도록 한다. 문제가 생기면 그때 생각해야지. NSIS를 설치하면 폴더 내에 'NSIS' 실행파일과 'makensisw' 실행파일 두개가 생성된다. makensisw 는 바로 컴파일 할 수 있는 프로그램이고, NSIS 에 들어가면 각종 매뉴얼, 설명서, 업데이트 등등 NSIS 사용에 도움되는 다양한 링크가 있다. 3. 관련 문법 NSIS 스크립트는 한 줄에 하나의 명령어를 쓰도록 되어있다. C에서 세미콜론(;)으로 구분하는...

쥬만지: 새로운 세계 리뷰

지난 주말, 토요일에 목발을 짚으면서 꾸역꾸역 영화관에 다녀왔다. 쥬만지가 그렇게 재밌다고 사람들이 이야기해서 보려고. 원래 집에서 영화관까지 걸어서 15분이면 가는데, 거의 40분? 넘게 걸렸다. 너무 멀어서 쥬만지 재미없으면 4시간 날리는거다, 부들부들 하면서 갔다. 금강산도 식후경이라 영화 보기전에 뭐 먹느라 늦게 들어갔다. 아, 뒷자리 초딩. 초딩. 초딩!!!!!!! 영화 보는 내내 의자 툭툭 치고 떠들어서 짜증 제대로 났다. 근데 짜증나는건 뒷자리 초딩 뿐만이 아니었다. 쓸데없는 감동멘트 날리면서 갈등 해소하려는 뻔한 스토리, 3개짜리 목숨 장난처럼 날리고 '옛다, 받아라' 하면서 나눠줘서 억지 감동 유발하고 재미 포인트를 어디에서 찾아야할지 모르겠다; 악당과 맞서 싸우면서 쥬만지를 구하는 내용은 개뿔, 현실 주인공이 게임에서 피지컬 엄청나져서 러브러브 하는 내용뿐이고 유일하게 맘에 든건 마지막에 알렉스가 잘 돌아가서 쿨한 결말을 맞이했다는거? 초중반엔 진짜 너어무 지루했고,  주인공들이 능력 알고 게임 적응하는 과정도 그냥 노잼에 노잼에 노잼이었고!!!!!!! 프리지 눈치없이 굴고 끝까지 눈치없이 굴다가 막판에 노선 틀어서 주인공 격려해주고 정신차리는 스토리도;; 정말 정~말 별로였다. 진짜 오랜만에 돈주고 별로인 영화 봤다. 영화관에서 자는 스타일이 아니라 두눈 뜨고 지켜봤지 집에서 봤으면 진작에 유치해서 껐다. 난 이게 진짜 왜 네이버 평점 8점대인지 모르겠다;

주어와 동사 자리에 올 수 있는 것

《틀린문제 오답노트》 1. Mr. Jenson called the courier to complain that an important _____ did not arrive on schedule. (A) documented (B) document (C) documenting (D) documentation - 내가 고른 답 : (D) - 정답 : (B) * Solution : (B)는 '문서'라는 뜻을 가진 명사, documentation은 '문서화', '서류' 라는 뜻을 가지고 있으나 불가산명사이므로 부정관사인 an과 함께 올 수 없다. 따라서 답이 되지 않는다. (나는 document는 동사고 documentation이 명사라고 단순하게 생각해서 (D)를 골랐을 뿐인데. 불가산명사라니!!) 2. The governor will provide additional funding to the Department of Transportation, as ______ of additional state highways is a priority. (A) construct (B) construction (C) to construct (D) constructible - 내가 고른 답 : (C) - 정답 : (B) * Solution : to부정사는 명사를 전치사 없이 바로 취해야 한다. (C)가 답이 되려면 additional state highways 앞의 of 전치사가 삭제되어야 한다. (나는 to부정사가 그렇게 복잡한 친구인줄 몰랐다. 그래서 틀렸다.) 3. By the end of the first quarter, operating expenses ______ the company's estimates by over 10 percent. (A) surpassing (B) had surpassed ...

QT, GUI 개발에 사용되는 프레임워크

QT Qtopia에서 앞 두글자만 따 QT로 명명됨. '큐트'라고 읽는다. (큐트리..?) The Qt Company에서 개발한 오픈소스 C++ 개발 프레임워크. C++과 QML이라는 자체 스크립트 언어를 기반으로 한다. (출처 : 나무위키 QT ) GUI 프로그램 개발에 널리 쓰이는 * 크로스 플랫폼 프레임워크. 서버용 콘솔, 명령줄 도구 등 비GUI 프로그램 개발에도 사용된다. * 크로스 플랫폼 : = 멀티 플랫폼. 여러 종류의 컴퓨터 플랫폼에서 동작이 가능하다는 것. 주로 C++을 사용하지만 파이썬, 루비, C, 펄, 파스칼과도 연동이 가능하다. SQL DB 접근, XML 처리, 스레드 관리, 단일 크로스 플랫폼 파일 관리 API 제공. 2017년 6월 기준 최신 버전은 Qt 5.9.0, Qt 4.8.7이다. (출처 : 위키피디아 QT ) Write once, compile anywhere. 이라는 철학을 가지고 제작되었다. 기본언어가 C++인 GUI를 제작하는 프레임워크이지만, 파이썬 등 다른 다양한 언어로도 큐티를 사용할 수 있다. 큐티를 사용할 경우 GUI 제작, 웹/앱 제작이 편리하고 * 오픈소스 라는 장점이 있다. Documentation이 잘 되어있고, 예제를 제공해주어서 빠르게 공부할 수 있다고 한다( 나는 아니겠지; ). * Qt에는 오픈소스, 상업 두 가지의 라이센스가 있다. 상업 버전을 돈 주고 사용하는 경우에는 소스를 공개하지 않아도 된다. (큐티의 라이센스와 관련된 내용은 위에 있는 나무위키 링크에 잘 정리되어 있다.) Qt로 제작된 프로그램의 종류에는 구글어스와 스카이프가 있다고 한다.

Python Study - 리스트, 튜플, 딕셔너리

Python Study 리스트, 튜플, 딕셔너리 리스트       대괄호('[ ]')를 이용해서 감싸고, 그 안에 요소들을 나열하며 ','를 통해 구분한다.  데이터 삽입 - append(), insert()   append()를 사용할 경우 리스트의 가장 마지막에 요소가 추가되고, insert()를 사용할 경우 리스트 내의 원하는 위치에 데이터를 삽입할 수 있다.  insert() 함수의 첫 번째 인자로 추가하고 싶은 위치의 요소번호를 적어주고, 뒤에 데이터를 입력하면 리스트의 원하는 위치에 데이터를 추가할 수 있다.   [ex] list1.insert(1, "Hello") 데이터 삭제 - del(), remove()   특정 요소의 위치를 알고 있을 때는 del()을 이용하고, 위치는 모르고 값만 알고 있을 때는 remove()를 사용한다.   [ex] del list1[1]         list1.remove("Hello") 데이터 정렬 - sort(), reverse()   순차정렬은 변수명.sort(), 역순정렬은 변수이름.reverse()로 리스트를 정렬할 수 있다. 데이터 위치 찾기 - index()   index() 함수는 특정 데이터가 들어있는 요소의 번호를 알려준다.   [ex] list1.index("Hello")           -> 'Hello'라는 데이터가 들어있는 list1의 인덱스를 알려준다. 리스트 안의 리스트   리스트 내에 리스트를 넣을 수 있고, 값을 조회하려면 이중배열처럼 대괄호를 하나 더 사용하여 위치를 지정하면 된다.    [ex] >> fo...