글

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에서 세미콜론(;)으로 구분하는...

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, 무엇을 비트코인을. 위키백과에 따르면 비트코인의 정의는 '블록체인 기술을 기반으로 만들어진 온라인 암호화폐...