전체 글 43

Assebmly 기초 [정의, 레지스터]

목차 어셈블리어 기계어 CPU가 이해할 수 있는 언어 CPU 제조사마다 CPU 인식 가능한 전기 신호에 관한 '행동'을 미리 정의해 놓았고, 이 전기신호를 0과 1로 표현한 것을 기계어라고 한다. 어셈블리어는 0과1의 전기신호의 나열(기계어)을 인간이 이해하기 쉽도록 문자에 대응한 언어이다. 어셈블러 기계어를 어셈블리어를 기계어로 변환시켜주는 기계 tools ollyDbg : Debug tool (for intel cpu debugger) 방식 명령어 (OpCode ) 피연산자(Operand) 명령어를 통해 피연산자에게 명령을 내리는 방식 명령어 예시 mov #EAX라는 공간에 1을 이동해라(넣는다, 덮어쓴다) # Operator, Operand(reg), Operand(val) M..

Assembly/basic 2021.02.23

알고리즘 기초 - 1 [알고리즘 정의, 평가, 분석, 빅오 표기법]

목차 알고리즘의 역할 주어진 조건에서, 어떤 절차와 방법으로 문제를 해결할 수 있을까? 알고리즘의 정의 "어떤 문제를 해결하기 위한 절차나 방법" 어떤 방식이더라도, 결국 문제를 해결할 수 있는 절차와 방법이 중요하다. 다만, 해결 방식에서의 효율성[시공간적], 안정성[Race Condition]등을 생각해야 한다. 알고리즘의 조건 입력 : 0 또는 그 이상의 외부에서 제공된 자료가 존재 출력 : 최소 1개 이상의 결과 명확성 : 각 단계의 애매함 없는 명확한 과정 구성 유한성 : 유한한 수의 단계 수행 후, 문제가 해결되어 종료 효율성 : 모든 연산은 명백하게 실행할 수 있음을 검증 알고리즘 평가 알고리즘은 어떤 조건 condition이 중요하냐에 따라 효율적인 문제 해결 방법이 달라진다. 따라서 여러..

Algorithm/basic 2021.02.19

[Markdown] Markdown 기초

목차 이제는 마크다운을 이용하여 블로그 포스트를 해보고자 한다. 아래는 필요한 마크다운 기초문법들을 정리해 놓은 것이다. MarkDown을 Local이 아닌 Online에서 무료로 볼 수 있는 Edtior StackEdit Heading '#{number}' Heading 1 Heding 2 Heding 3 Heding 4 Heding 5 Heding6 Line '----' Text Attributes '{bold} *', ' {italic} *', ' ~ strikethrogh ~ ' (delete whitespace) This is the bold text and this is the italic text and let's do strikethrogh . Quote '> Don't forget to ..

Markdown/basic 2020.12.27

[JavaScript] 문법 기초(for ~of, for ~in, forEach, 함수, 커링, 펼침 연산자, 나머지 파라미터, 화살표 함수, 고차함수, 생성자 함수)

목차 for ~ of 문 여러 개의 요소를 가지는 배열, 문자열, 맵, 셋 등의 자료 구조의 경우에서 모든 요소에 대한 조건 체크나, 순환하면서 요소의 값을 갱신하는 작업을 하는 경우가 있다 for문이 아닌, 조금 더 간결하고 안전한 for ~ of 문을 사용하여 작성할 수 있다. for ~ of문은 배열, 문자열, 맵, 셋 객체에서 사용 가능 규격 명세에서 [Symbol.iterator] 속성이 있는 객체만 사용 가능 일반 객체의 속성에 접근하기 위해서는 for ~ in을 사용 for ~ of 문의 구조 for(let 요소변수이름 of 대상) { // 반복 실행문 } let people = { {name: ‘name11’, age: 12}, {name: ‘name12’, age: 13}, }; for(..

JavaScirpt/basic 2020.12.20

[JavaScript] 문법 기초(변수와 상수, 자료형, 숫자표현, 연산자 기초 등)

자바스크립트 기초 자바스크립트 파워북 www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791197122811 자바스크립트 파워북 - 교보문고 자바스크립트 입문자를 위한 학습서로, ES6 기초부터 DOM에 대한 이해까지 할 수 있습니다. 300개 이상의 기초 예제를 통해 자바스크립트 실력을 키울 수 있으며, 실무 프로젝트에서 가져 온 다양 www.kyobobook.co.kr 변수와 상수 - ES5까지 사용하던 var - ES6에서 새롭게 추가된 let, const - ES5 까진 상수 선언이 없었지만 ES6에 와서 const 상수 선언자가 생겼다. - 상수로 선언한 변수에 다른 값을 대입하면 에러가 발생 - 변수를 선언..

JavaScirpt/basic 2020.12.19

[HTTP] MIME 타입(개요,문법,웹 개발자들을 위한 MIME 타입)

MIME 타입 개요 - MIME : Multipurpose Internet Mail Extension - 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘 - 웹에서는 파일의 확장자가 별 의미가 없다. 그래서 각 문서와 함께 MIME 타입을 전송하도록 서버가 정확히 설정하는 것이 중요하다. - 브라우저들은 리소스를 내려받았을 때 해야 할 기본 동작이 무엇인지 결정하기 위해 MIME 타입을 사용 - 수 많은 종류의 문서가 있으므로 많은 MIME 타입들이 존재 (MIME 타입의 전체) - MIME 타입이 문서 타입 정보를 실어나르는 유일한 방법은 아니지만, 모든 타입들이 공통점을 가지는 것은 아니다. - 이름의 접미사를 사용 (Microsoft Windows System), - 매직 넘버 (파일의..

WEB/HTTP 2020.12.15

[HTTP] 개요, 구성요소, 클라이언트, 서버, 특징, 제어 가능한 것들, 흐름, 헤더, 메시지, API

서론 - 그동안 웹개발 공부를 하면서 HTTP에 대한 기초지식이 부족하다는 것을 깨달았다. MDN에서 HTTP 기초 공부를 하면서 정리한 것을 블로그에 적고자 한다. developer.mozilla.org/ko/docs/Web/HTTP/Overview HTTP 개요 - HTTP | MDN HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버 developer.mozilla.org HTTP 개요 - HTTP는 HTML과 같은 하이퍼미디어 문서 전송을 위한 애플리케이션 레이어 프로토콜이다. - 웹 브라우저와 웹 서버간의 커뮤니케이션을 위해 사용되며 - HTTP는 무..

WEB/HTTP 2020.12.15

[Node.js] Starting Node.js with Crawling (insta crawling, last)

서론 평소에 나는 인스타그램을 잘 하지 않지만, 인스타그램에 어떤 태그에 어떠한 태그들을 같이 쓰는가에 대한 호기심이 있어왔다. 그래서 특정 태그를 인스타그램에서 검색하고, 검색한 태그로 게시물을 탐색하면서 같이 쓰인 태그들을 수집하고, 어떤 태그가 많이 쓰이고 같이 쓰였는지를 이번 기회에 알아보았다. 데이터 수집 태그 수집을 위해 라이브러리는 PhantomJS, SlimerJS, CasperJS를 사용하였다. 환경 설정 # nodejs 및 npm이 설치되어 있어야 한다. npm install phantomjs npm install slimerjs #export SLIMERJSLAUNCHER=[firefox bin path under 5.9v] npm install casperjs 코드 및 크롤링 수행 ..

JavaScirpt/Node.js 2020.12.14

[Node.js] Starting Node.js with Crawling (character code, RegExp)

문자 코드와 호환 - 문자 코드 - 컴퓨터에서 문자를 표시하기 위해 대응하는 고유 번호, 문자에 할당된 번호 - 웹 브라우저 위에 표시되는 많은 글들이 숫자의 나열[바이너리], 컴퓨터가 그 숫자의 나열을 문자로 인식하여 표시 - 문자 코드가 어려운 이유 - 알파벳과 숫자만 있다면 1byte로도 충분히 모든 문자가 표현이 가능하지만, - 한글이나 일본어, 중국어 등의 경우에는 문자의 수가 많아 2byte(0~65535)를 사용하지 않고서는 모든 분자를 표현하는 것이 불가능하다. - 이들 언어의 문자를 컴퓨터상에서 다루기 위한 다양한 방법이 고안. - 다만 문제는 문자 코드 간의 호환성, 문자 코드의 인식에 실패하거나 문자 코드 간의 변환이 잘못되면 이른바 '문자가 깨지는' 현상이 발생 - 현재의 주류 : ..

JavaScirpt/Node.js 2020.12.10

[Node.js] Starting Node.js with Crawling (page capturing, electron, css selectors)

인자로 지정한 페이지를 캡쳐하는 도구 - 저번에 이어 이번에는 커맨드 라인에서 인자로 URL을 넘겨주어 스크린샷을 찍는 프로그램을 작성할 것이다. - CasperJS에서는 실행 시 지정한 인자가 casper.cli.args에 배열 형식으로 들어간다. 코드 // Capturing the web page appointed by command line argument. const casper = require('casper').create(); const utils = require('utils'); // Getting an argument. let args = casper.cli.args; if(args.length = 2) savepath = args[1]; // Executing CasperJS proc..

JavaScirpt/Node.js 2020.12.09