Posts

Showing posts with the label 프레임워크

React.js에서 JSX사용하기

JSX란? React에서 JSX는 필수 요소는 아니지만 React를 코딩하는데 많은 편리함을 더해주는 확장 문법이라고 보면 됩니다. JSX란? - React 공식웹사이트 React에서는 본질적으로 렌더링 로직이 UI 로직(이벤트가 처리되는 방식, 시간에 따라 state가 변하는 방식, 화면에 표시하기 위해 데이터가 준비되는 방식 등)과 연결된다는 사실을 받아들입니다. React는 별도의 파일에 마크업과 로직을 넣어 기술을 인위적으로 분리하는 대신, 둘 다 포함하는 “컴포넌트”라고 부르는 느슨하게 연결된 유닛으로 관심사를 분리합니다. 이후 섹션에서 다시 컴포넌트로 돌아오겠지만, JS에 마크업을 넣는 게 익숙해지지 않는다면 이 이야기가 확신을 줄 것입니다. React는 JSX 사용이 필수가 아니지만, 대부분의 사람은 JavaScript 코드 안에서 UI 관련 작업을 할 때 시각적으로 더 도움이 된다고 생각합니다. 또한 React가 더욱 도움이 되는 에러 및 경고 메시지를 표시할 수 있게 해줍니다. 공식 사이트에서는 위와 같이 작성되어 있지만.. 당췌 뭔 소린지... 쉽게 말하면 React.js에서 Virtual DOM을 만들 때 편하게 코딩하라고 HTML처럼 할 수 있게 해주는 템플릿 언어 비스무리한것이다라고 이해하면 될 것 같습니다. (이것도 어려운가? ㅠ) 이렇게 작성된 JSX를 babel로 컴파일을 하면 웹브라우저가 알아먹을 수 있는 javascript로 자동 변환이 됩니다. 예를 들면 아래와 같습니다. const name = "홍길동"; const element = <h1>Hello, {name}</h1>; ReactDOM.render(element, document.getElementById("root")); 이렇게 될 때... const element = <h1>Hello, {name}</h1>; 이 부분이 JSX 문법으로 작성된 것입니다. 이해가 되시나요?...

React.js의 아주 기초적인 사용법

React를 공부하기 시작했습니다. 아주 간단한 것부터 알게 된 것을 기록해 볼까 합니다. React는 프레임워크라기보다는 라이브러리라고 할 수 있습니다. 그렇기 때문에 기존의 HTML에 간단하게 React를 적용할 수 있습니다. 먼저 가장 기본적인 HTML은 아래와 같습니다. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>그냥 HTML 기본 구성</title> </head> <body> <div></div> </body> </html> React.js 적용하기 react.js를 적용하기 위해서 먼저 react.js javascript CDN을 적용해야 합니다. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=...

node.js로 Youtube 다루기

Image
Youtube 가 무엇인지는 따로 설명하지 않아도 대부분의 사람들이 알것이라고 생각합니다. 이 youtube도 구글에서 OpenAPI 를 제공하고 있어서 Node.js에서 활용을 할 수 가 있습니다. 동영상을 업로드하거나 업데이트하거나 또는 검색어를 통해 리스트를 받아볼 수도 있습니다. 이런기능을 잘 활용하면 유의미한 APP을 개발할 수 있습니다. 이번 포스팅에서는 간단하게 Youtube Data API 를 활용하여 원하는 검색어로 검색을 하는 일련의 과정을 작성하도록 하겠습니다. 0.1. Youtube API 키 발급받기 Youtube API를 사용하기 위해서는 먼저 구글에 해당 API를 사용하겠다고 등록을 하고 Youtube API 키를 발급받아야 합니다. Youtube API뿐만아니라 OpenAPI를 사용하기 위해서는 대부분 API 키를 발급받아야 합니다. API키는 구글개발자센터(https://console.developers.google.com) 에서 신청을 할 수 있습니다. 처음 API 사용 신청하는 것이라면 구글개발자센터 에 접속하면 아래와 같은 화면을 볼 수 있습니다. 처음 접속 일 경우 바로 해당화면이 나오며 그렇지 않은경우 좌측에 있는 메뉴 중 라이브러리 메뉴 선택 Youtube Data API 항목 선택 API는 프로젝트 단위로 발급이 되기 떄문에 프로젝트가 없는 경우는 프로젝트를 먼저 생성해야 합니다. 프로젝트는 상황에 맞게 복수개를 생성할 수 있습니다. 프로젝트 만들기 버튼 선택 프로젝트는 간단하게 프로젝트 이름 만 만들면 됩니다. 프로젝트 이름 에 원하는 이름을 작성 만들기 버튼 선택 프로젝트가 생성이 되었으면 Youtube Data API 를 사용하겠다는 의사표시 를 합니다. 나중에 사용하지 않을 경우는 삭제를 하지 않고 사용중지 를 할 수도 있습니다. 사용설정 링크 선택 사용설정이 되었으면 이제 사용자 인증정보 를 만들어야 합니다. 사용자인증정보에서 설정하는 조건에 대해 API...

일렉트론(Electron) 소개 및 사용법

Image
일렉트론(Electron) 은 Node.js를 기반으로 javascript, html, css를 사용하여 데스크탑 애플리케이션을 만드는 플랫폼입니다. 이것은 GitHub 에서 모던 에디터인 Atom 에디터 를 만들면서 공개한 오픈소스입니다. 웹개발자의 입장에서 보면 데스크탑 APP을 개발하는데 있어서 진입장벽이 낮을 뿐만아니라 크로스플렛폼까지 지원하여 윈도우즈, Mac OS X, 리눅스 등 다양한 OS에서 동일하게 사용할수 있는 장점이 있어서 인기가 많습니다. 일렉트론(Electron) 은 간단하게 생각하면 웹브라우저 안에 Node.js를 포함시킨 것이라고 보시면 됩니다. 그래서 웹브라우저로 화면을 표시하고 Node.js로 OS의 파일시스템 등에 접근하여 작업을 수행 할 수 있게 되는 것입니다. Atom 에디터 나 VS Code 를 써보면 알겠지만 상당히 완성도가 높은 것을 알 수 있습니다. 일렉트론(Electron) 으로 개발한 APP은 이것 말고도 GitHub Desktop , Slack , WordPress 등 다양한 종류가 있으며 일렉트론(Electron) 홈페이지 에서 더 확인을 할 수 있습니다. 좀 더 자세한 내용은 일렉트론(Electron) 홈페이지 에서 확인하세요.

문자코드와 인코딩 변환 방법

문자코드란? 문자코드란 컴퓨터가 사람이 알아볼 수 있는 문자로 표시하기 위해 각 문자에 할당한 고유번호를 말합니다. 초창기 문자를 나타내기 위한 아스키(ASCII)코드 는 알파벳, 숫자, 특수 문자 등.. 각 문자에 해당하는 고유번호를 2진수 8비트 로 지정하여 표시하였습니다. 2진수 8비트란 2진수인 0 과 1 을 나타내는 스위치 8개 로 고유번호를 할당한 것을 말합니다. 예를 들면 01101100 은 A , 01101101 은 B ... 이런식으로 2의 8제곱( 256 )가지의 문자를 표시 할 수 있습니다. 하지만 아스키코드로 영문 알파벳, 숫자, 특수 문자 등 256가지 이내의 문자는 커버가 가능했지만 다양한 국가의 다양한 언어를 처리하기에는 256가지로는 부족하기 때문에 더 발전된 문자코드의 개발이 필요했습니다. 게다가 아시아권의 언어같은 경우는 8비트(1바이트)로는 부족해서 16비트(2바이트) 이상을 사용해야 처리가 가능했습니다. 그래서 각 나라의 언어에 맞게 CP37, ISO 8859, Windows-1250 등... 수많은 문자코드세트가 만들어 졌습니다. 한국의 경우는 EUC-KR 과 CP949 를 주로 사용했었고 현재도 많이 사용하고 있습니다. 하지만 문자코드에도 표준화가 필요했기 때문에 근래에는 대부분 유니코드(UTF-8, UTF-16) 로 사용하는 추세입니다. 유니코드 는 대부분 국가의 언어를 포함하고 있어 현재 대부분의 운영체제와 javascript, HTML, node.js등 다양한 프로그램 언어에서 기본적으로 사용되어 지고 있습니다. Node.js에서의 문자코드 Node.js에서도 기본적으로 문자코드를 유니코드인 UTF-8 을 사용합니다. 그래서 Node.js 에서 사용할 프로그램을 작성할때는 꼭 UTF-8 로 작성을 해야 합니다. 최근에 인기리에 사용되고 있는 모던 에디터인 Atom 이나 서브라임텍스트 , Visual studio Code 등에서 새로 만든 문서는 기본적으로 UTF-8로 문서를 생성해 줍니다. 하지만 Nod...

PhantomJS와 CasperJS 사용법

Image
프론트앤드 개발을 하거나 웹자동화에 관심이 있는 분이라면 PhantomJS 와 CasperJS 를 많이 들어봤을 것입니다. 저도 이번에 크롤링 공부를 하면서 알게되어 잊어버리지 않기위해 간단하게 정리를 하려고 합니다. PhantomJS (팬텀JS) 팬텀JS는 화면이 없는 브라우저라고 보면 됩니다. 화면이 없는 브라우저를 어따가 써먹지? 라고 생각할 수도 있겠지만 웹프로그램으로 웹자동화를 개발하기에는 더없이 편리한 기능을 제공하고 있습니다. 입력상자에 값을 입력한다던가 마우스로 버튼을 클릭한다던가 특정 값을 확인한다던가 하는 일련의 작업(이벤트)들을 커맨드라인 의 명령어나 javascript 코드로 처리를 할 수가 있습니다. 예를들면 학교홈페이지에 로그인을 하여 공지사항 페이지로 이동하고 학생들에게만 공지한 공지사항 정보를 발췌하여 리스트에 보여주는 일련의 작업들을 PhantomJS를 통해 웹자동화 로 구현하여 처리를 할 수가 있게 됩니다. 물론 이런 기능 말고도 웹 화면을 캡쳐하거나 WebApp을 테스트 하는 등.. 다양한 용도로 사용되는것이 PhantomJS 입니다. 설치 설치는 npm으로 간단하게 설치를 할 수 있습니다. 로컬에 설치를 해도 되지만 일반적으로 Global 로 설치를 많이 합니다. $ npm install -g phantomjs 정상적으로 잘 설치가 되었는지 확인하기 위해서 설치버전을 검색해 봅니다. $ phantomjs -v 2.1.1 리눅스(CentOS)를 사용한다면 한글폰트의 사용을 위해 아래의 폰트관련 패키지를 별도로 설치해 주어야 합니다. $ sudo yum install freetype $ sudo yum install fontconfig CasperJS (캐스퍼JS) CasperJS 는 PhantomJS 나 SlimerJS 를 좀더 쉽고 편하게 사용하기 위한 기능들을 모아놓은 라이브러리라고 보시면 됩니다. 그래서 CasperJS 를 사용하기 위해서는 PhantomJS나 SlimerJS가...

Node.js의 유용한 모듈 소개

Node.js에서는 475,000개에 달하는 정말 많은 모듈이 존재합니다. 그중에서 제가 사용해 봤던 몇몇 유용한 모듈을 소개할까 합니다. 1. url (표준모듈) url 모듈은 상대URL 을 절대URL 로 변경 해주는 등 url 사용에 대한 다양한 기능을 제공하고 있습니다. 간단한 기능 API 는 아래와 같습니다. url.resolve(from, to) // 상대경로를 절대경로로 변경하여 줍니다. url.parse(urlStr, [parseQueryString], [slashesDenoteHost]) // url 문자열(urlStr)을 url 객체로 변환하여 리턴합니다. url.format(urlObj) // urlObj객체를 URL문자열로 변환하여 리턴합니다. 1.1. 설치 표준모듈이라 Node.js에 포함되어 있으므로 별도의 설치는 필요없습니다. 1.2. 간단한 사용예제 var url = require('url'); // 상대 URL을 절대 URL로 변경 url.resolve('/one/two/three', 'four') // '/one/two/four' url.resolve('http://example.com/one', '/two') // 'http://example.com/two' url.resolve('http://example.com/depth1/depth2/one', '/one') // 'http://example.com/one' url.resolve('http://example.com/depth1/depth2/one', '../two') // 'http://example.com/depth1/two' url.resolve(...

Gruntfile의 주요 플러그인들

Image
앞선 포스팅에서 Grunt 소개와 설치방법 를 소개했었습니다. 이번에는 Grunt의 주요 플러그인들을 소개 하고 간략한 설명을 포스팅 하겠습니다. 플러그인 Grunt.js 에서 말하는 플러그인과 Node.js 에서 말하는 패키지 는 동일한 것입니다. 그래서 Grunt에서 패키지를 설치하는 방법과 Node.js에서 패키지를 설치하는 방법이 동일합니다. 플러그인 찾기 대부분의 Grunt 플러그인들은 Grunt사이트의 Plugin 메뉴 에서 확인할 수 있습니다. 먼저 Grunt웹사이트의 플러그인 메뉴 로 이동합니다. 원하는 기능의 플러그인을 검색창을 이용하여 검색을 합니다. 검색결과의 플러그인 리스트중에 하나를 선택하여 설치방법을 확인합니다. 찾는 플러그인이 명확하지 않다면 검색결과 중 다운로드 수가 많은 것 이나 플러그인 명 앞에 별표( ★ )가 붙은 것을 선택해서 설치하세요. 별표( ★ )가 붙은 것은 Grunt팀 에서 만들었다는 의미이기 때문에 어느정도 공신력이 있다고 볼 수 있습니다. 플러그인 설치하기 검색된 플러그인의 제목을 클릭하면 상세페이지로 넘어 갑니다. Grunt의 플러그인은 Node.js 의 패키지이기때문에 NPM 페이지로 넘어 갑니다. 상세페이지를 보면 영어로 되어있긴 하지만 설치하는 방법과 옵션 설정 방법 등이 자세히 설명되어 있습니다. npm install grunt-contrib-copy --save-dev ▲ 설치는 위와 같이 NPM 을 통해 설치를 하면 됩니다. 설치를 하면 프로젝트 폴더에 node_modules 폴더가 생기고 그안에 플러그인들이 설치가 됩니다. --save-dev 설치옵션에 따라 package.json 의 devDependencies 항목에 해당 플러그인명이 기록 됩니다. 가장 뒤에 -dev 옵션은 개발 시에만 사용하는 플러그인이라는 것을 명시하는 것이고 실제서비스에 사용되는 플러그인이라면 -dev 옵션을 제거 한 --save 옵션만 적용합니다. 그러면 package.jso...

Gruntfile의 구조와 사용법

Gruntjs 를 사용한다고 하는것은 gruntfile.js 를 다룰 줄 안다고 하는 것과 마찬가지로 gruntfile.js 는 중요합니다. 중요하다고 해서 배우기가 어렵다는 말은 아닙니다. 개인의 차이는 있겠지만 보통 1~2일이면 개념을 이해 할 수 있고 1주일 정도면 구글링을 하면서 Gruntjs 를 사용할 수 있을 정도로 어렵지 않습니다. 이전 포스팅에서 Gruntjs의 소개와 설치법 을 작성했으니 완전 초보자이시면 이전 포스팅을 먼저 보는 것이 도움이 될것 같습니다. gruntfile.js의 구조와 사용법 gruntfile.js 의 가장 기본적인 구조는 아래와 같습니다. 1. 프로젝트의 구성 , 2. 사용한 플러그인 로딩 , 3. 실행 명령어 의 3개의 분류로 구성되어 있으며 각각 영역별로 설명을 하도록 하겠습니다. module.exports = function(grunt) { // 1. 프로젝트의 구성 grunt.initConfig({ // package.json의 정보를 불러옴 pkg: grunt.file.readJSON('package.json'), // uglify 플러그인(패키지)의 옵션을 정의 함 uglify: { build: { src: 'src/<%= pkg.name %>.js', dest: 'build/<%= pkg.name %>.min.js' } } }); // 2. 사용한 플러그인 로딩(먼저 npm으로 설치를 해야 함) grunt.loadNpmTasks('grunt-contrib-uglify'); // 3. 실행 명령어 (명령창에서 grunt 명령으로 실행됨) grunt.registerTask('default', ['uglify']); }; gruntjs사이트에서 발췌 1. 프로젝트의 구성 프...

Grunt 소개와 설치방법

Image
Node js 의 탄생으로 인해 javascript 진영이 비약적인 발전을 이루고 있으며 그러한 발전에 견인차 역활을 한 Grunt 라는 것이 있습니다. 이러한 프레임워크를 javascript Task기반 빌드 Tools 이라고 하는데 과연 이것이 무엇인지, 그리고 어떻게 설치하고 사용하는지에 대해 포스팅을 하려고 합니다. Gruntjs란 무엇인가. Grunt 또는 Gruntjs 라고 하며 인터넷을 검색하면 Task기반 빌드 툴 이라고 나옵니다. 풀어서 설명을 하면... Node js 를 기반으로 하고있는 무수한 패키지 들 중에 프로젝트에서 필요한 패키지들을 설치하고 그 패키지들을 미리 설정한 순서와 옵션에 맞게 자동으로 명령어를 실행시켜주는 Tool 이라고 보면 됩니다. 마치 Desktop컴퓨터의 .bat 배치파일과 동일한 역활을 합니다. Gruntjs 를 사용하기 위해서는 먼저 Node js 가 설치되어 있어야 하고 프로젝트가 지정되어 있어야 합니다. Node js 가 설치되면 npm(node package manager) 도 자동으로 설치가 되는데 이 npm 으로 gruntjs 를 설치하면 됩니다. 프로젝트 지정이란 그냥 프로젝트명의 폴더 생성 이라고 보면됩니다. Grunt 설치 Node js 설치 당연한 이야기겠지만 Node js 를 먼저 설치해야 합니다. Nodejs 는 한글버전도 있기 때문에 설치가 어렵지는 않습니다. Nodejs 는 Windows , macOS , Linux 등 대부분의 OS를 지원하며 설치방법은 해당 홈페이지를 참조하셔서 설치하시면 되고 여기서는 생략하도록 하겠습니다. Windows 사용자라면 그냥 홈페이지에서 설치파일을 다운로드 받아서 설치하면 됩니다. Node js Grunt-cli 설치 Nodejs 가 설치가 되었다면 그 다음으로 grunt-cli 를 설치해야 합니다. grunt-cli 는 grunt Command Line Interface 의 약자로 명령어 창...