2014. 10. 10. 01:02

node.js 소개 및 내부구조

<배울내용>

1) node.js 소개

2) 장점

3) 내부 작동 원리 구조

4) single thread model

-thread pool

5) event loop

6) 언제 node.js를 쓰거나 쓰지 말아야 할까?


Node.js 설치하고 개발환경 설정하기 

<배울내용>

1) node.js설치하고 개발환경 설정


Event,Module,NPM

<배울내용>

1) 비동기 이벤트 프로그래밍

2) event emitter

3) event emitter methods

4) module 개념

5) module의 경로

6) module의 종류

7) NPM

-주요 명령어

7) package.json


웹개발 프레임웍 Express 1/2

<배울내용>

1) express project 생성

- 디렉토리 구조

- app.js 환경설정 파일 분석

2) Router 개념

3) HTML Parameter Passing

- URL Param

- Query Param

- Form Param

4) Rendering & Template

- ejs, Hogan, jade

5) HTTP Head 정보처리

6) HTTP Cookie 처리

- Signed Cookie사용(암호화)

7) HTTP Session 처리

-Cluster에서 Session처리


웹개발 프레임웍 Express 2/2

<배울내용>

1) File upload & File Download

2) JSON REST API

3) Connect Module pipe line

4) Error Handling



'프로그래밍 > Node.js' 카테고리의 다른 글

Node.js 시작  (0) 2014.10.09
BEM(Block-Element-Modifier) 시작  (0) 2014.10.09
Posted by 루피아빠
2014. 10. 9. 20:34

1. NODE.JS란 무엇인가?

- NODE.JS는 서버사이드상에서 자바스크립트 언어를 이용해

확장 가능한 네트워크 애플리케이션을 만들 수 있도록 해준다.

- 엔젠으로 크롬 V8 JavaScript Runtime(대부분 C code)을 이용하기 때문에 빠르다.

 

2. NODE.JS로 구축할 수 있는 것은?

-채팅 서버같은 웹소켓 서버

-빠른 파일 업로드

-AD Server

-리얼타임 데이터 앱

 

3. Blocking vs Non-blocking 개념

1) Blocking code

var contents = fs.readFileSync('/etc/hosts');

console.log(contents); ç여기서 완료되어야 다음 수행문으로 넘어감

console.log('Doing something else');

 

2) Non-Blocking Code

fs.readFile('/etc/hosts', function(err, contents) {

console.log(contents);  ç 1

});

console.log('Doing something else');  ç 1 완료와 상관없이 수행됨(block되지 않음)

 

3) callback을 이용

-----------------------------------------------------------

fs.readFile('/etc/hosts', function(err, contents) {

console.log(contents);

});

----------------위 코드와 동일---------------------------

var callback = function(err, contents) {

console.log(contents);

}

fs.readFile('/etc/hosts', callback);

-----------------------------------------------------------


콜백 두개


var http = require('http');

http.createServer(function(request, response) { ç request

           response.writeHead(200);

response.writeHead(“Dog is running.”);

setTimeout(function(){ ç timeout

response.write("Dog is done.");

response.end();

}, 5000); 5000ms

}).listen(8080);







'프로그래밍 > Node.js' 카테고리의 다른 글

nodejs 배우기  (0) 2014.10.10
BEM(Block-Element-Modifier) 시작  (0) 2014.10.09
Posted by 루피아빠
2014. 10. 9. 01:43

BEM(Block-Element-Modifier)

- HTML 마크업 모듈화

- block요소를 독립적이고, 재사용 가능한 모듈이라는 개념으로 접근

- 대표적인 사이트 tuts+

- 예).block(전체를 감싸고 있는 블록요소)__element(내부 요소)--modifier(기능)

prefix 붙여 일종의 네임스페이스개념으로 사용

- 실제 서비스를 하면 HTML의 구조가 바뀌는 일이 다반사

- 탐색레벨은 낮고 단순하게 유지하는 것이 유지보수하기 좋음

- 최근 브라우저 테스트 자동화에 대한 요구가 커지고 있음

- 쿼리를 단순하게 하기 위해 길고 유니크한 클래스명을 사용하는 것이 좋음


장점

-class name 중복방지

-직관적 : .gnb__home--active .icon-home

-전제 DOM tree를 다시 보지 않아도 됨


환경에 대한 변경을 표시해주는 클래스명을 

root node(delegate parent)에 부여하자


1)<html class="js lt-ie10 mobile">

: js, css 지원여부와 데스크탑/모바일 등의 client 접속 환경정보

2)<body class="log-in myinfo abtest-a">

: 접근중인 컨트롤러, 실행중인 액션, 로그인, AB테스트의 대상 여부 등

3)<div class="msgbox msgbox__unread">

:BEM에서 block요소 - 개별 모듈의 상태에 대한 정보를 담는다.


페이지의 상태값을 javascript로 전달할 방법이 필요


- 자바스크립트 전역변수나 <input type="hidden">사용을 지양하자.

=> HTML5스펙의 data-* attribute를 사용하자!(장점보기)



CSS속성은 한줄에 하나만 선언!

- 가독성이 좋고 어느 속성을 어느 위치에 넣을 것인지 고민할 필요 없음

- diff 할때 좋음

빌드타임에 minify하는 전략


BEM 예


===============================================================

.block {}

.block__element {}

.block--modifier {}

===============================================================

.site-search {} /* Block */

.site-search__field {} /* Element */

.site-search--full {} /* Modifier */

===============================================================

.person {}

.person__hand {}

.person--female {}

.person--female__hand {}

.person__hand--left {}

===============================================================

<form class="site-search  site-search--full">

    <input type="text" class="site-search__field">

    <input type="Submit" value ="Search" class="site-search__button">

</form>

===============================================================

.media {}

.media__img {}

.media__img--rev {}

.media__body {}

===============================================================

<div class="media">

    <img src="logo.png" alt="Foo Corp logo" class="media__img--rev">

    <div class="media__body">

        <h3 class="alpha">Welcome to Foo Corp</h3>

        <p class="lede">Foo Corp is the best, seriously!</p>

    </div>

</div>

===============================================================

<div class="content">

    <h1 class="content__headline">Lorem ipsum dolor...</h1>

</div>logo {}

===============================================================

.site-logo {}

.site-logo--xmas {}

===============================================================

.header__logo {} 

.header__tagline {} 

.header__searchbar {}

.header__navigation {}

===============================================================

.header__navigation {}

.header__navigation--secondary {}

===============================================================

.label {}

.label--alert {}

===============================================================

with Sass

.header__navigation { 

    background: #008cba; 

    padding: 1rem 0; 

    margin: 2rem 0; 

    text-transform: uppercase; 

    } 

-----------------------------------------------------------------------------------------------------------     

.header__navigation--secondary { 

    @extend .header__navigation;

    background: #dfe0e0; 

    }

-----------------------------------------------------------------------------------------------------------   

.label { 

    background: #eee; 

    border-radius: 505; 

    color: #333; 

    font-size: 1rem; 

    } 

-----------------------------------------------------------------------------------------------------------   

.label--alert { 

    @extend .label; 

    background: #da4531; 

    color: #fff; 

    }

-----------------------------------------------------------------------------------------------------------   


하지만 어떤 BEM카테고리에 들어가지 않는 클래스는 굳이 끼워맞추지 않음

.caps { text-transform: uppercase; } 

.site-logo {}


'프로그래밍 > Node.js' 카테고리의 다른 글

nodejs 배우기  (0) 2014.10.10
Node.js 시작  (0) 2014.10.09
Posted by 루피아빠
2014. 10. 8. 17:09

화두 : 다양한 프론트 앤드 프레임워크 대두(대표적으로 angular.js)

ð    프론트 단에서도 아키텍팅 필요

     ð HTML/CSS/JavaScript 만으로도 웹 애플리케이션 구현 가능


SPA접근 방식은 JSP, PHP같은 서버 템플릿이나 스프링 프레임워크에 익숙한 개발자에게는 생소


- 앵귤러는 front-end application framework

- 스프링 MVC 패턴의 개발을 했다면 앵귤러에서도 가능

- 스프링 의존성 주입의 편리함을 누리고 있다면 앵귤러에서도 가능

 



출처 : http://mobicon.tistory.com/m/post/427





Posted by 루피아빠
2014. 9. 14. 13:47

(출처 : 임재춘의 과학기술자글쓰기 강의 자료 -글쓴이 임재춘-


자기소개서 쓰기

임재춘

 

1. 소개서도 변해야 한다

자기소개서 쓰는 법이 잘못 알려져 있다. 대부분 사람들은 성장 배경, 학과 선택 동기, 성격 및 가치관과 지원 동기를 차례대로 쓴다. 이러한 자기소개서의 형식은 대학 작문 교재와 인터넷에 예문까지 나와 있어 대다수의 사람들이 아직도 이 틀을 벗어나지 못하고 있다. 하지만 이러한 형식은 산업사회의 인재 채용 방식에나 적합한 양식이다. 산업사회에서는 채용시험으로 합격자를 많이 뽑고, 사내 교육을 통하여 이들의 전문성과 조직 문화를 키워 나갔다. 그렇기 때문에 자기소개서는 단지 회사의 조직문화에 바람직한 인재인지 아닌지 인사담당자가 판단하는 보조 자료로 필요했던 것이다.

세상이 바뀌면 자기소개서도 바뀌어야 한다. 정보사회는 지식의 창출 및 이를 원활히 소통하는 자를 더욱 중시하여 적재적소에 맞는 인재를 수시 전형으로 선발한다. 산업화 시대의 'Anybody'가 아니라 정보화 시대의 'Somebody'를 원하는 것이다. 이로 인해 회사들도 신입사원보다 경력사원을 많이 원하고 있다. 물론 대학 졸업자는 신입직원도 되어 보지 못했는데 회사가 경력사원을 선호한다니 억울하기까지 하다. 억울할 것 없다. 대부분의 회사들이 경력사원을 원한다고 해도 한계가 있기 마련이다. 그렇기 때문에 일부 회사에서는 차선책으로 경력은 없어도 그런 능력을 키우고 있는 졸업자를 애타게 찾고 있다. 그러므로 자기소개서에 자기가 어떤 배경을 가지고 자란 사람이라는 '역사'를 적거나 어떤 '포부나 인생관'을 가진 사람이라고 열심히 피력할 필요가 없다. 단지 어떤 전문적인 일을 할 수 있는 '능력', 그것도 얼마나 재미를 느끼면서 '몰두'하였는지를 적으면 되는 것이다.

 

2. 성장 배경, 성격 및 가치관은 면접 때 자연스럽게 드러난다. 수시전형에 수백 명이 몰려드는데 구시대의 자기소개서를 접수해 놓고 세상을 탓하기보다는 자신의 '능력''몰두'를 한눈에 일목요연하게 보여 주는 소개서로 승부를 걸어야 한다. 자기소개서만으로 취직에 성공한 졸업생이 보낸 내용이다.

 

2002년 저는 4학년이 되었습니다. 1학기가 끝날 때까지도 저는 취업을 희망하면서도 어떻게 준비하여야 하는지 몰랐습니다. 2학기가 되어 막상 취업을 하려니 제일 먼저 부딪치는 것이 자기소개서였습니다. 평소 글 쓰는 것에 자신이 있다고 생각한 나였는데 막상 쓰려고 하니 두서가 없어지고 얽히기만 했습니다. 그러나 2학기에 '의사소통 기술' 수업을 듣게 된 후 자신이 무엇을 할 수 있는지를 확실히 알릴 수 있는 방법과 그 많은 소개서 중에서 주목을 받을 수 있는 방법 등을 배울 수 있었습니다. 그 결과, '영창악기'100명이 넘는 지원자들 중 자기소개서만으로 면접에 오르게 되었습니다. 그리고는 1001의 경쟁률을 뚫고 당당하게 입사하였습니다.(영남대, 전자공학과, 배재형)

 

소리와 전자와 만남을 좋아하는 배형진 소개

 

귀사의 영업부서에 지원하게 됨을 기쁘게 생각합니다. 저는 어려서부터 음악과 악기를 좋아했고 직접 연주도 해보았습니다. 대학시절 밴드생활을 통해 악기 다루는 사람의 마음을 누구보다 잘 알고 있습니다. 또한 전기와 전자공학을 전공하여 이 분야에 대한 기초지식을 가지고 있습니다. 거기다 사람 만나는 것을 즐기고 이야기하는 것을 좋아하는 저로서는 이번보다 좋은 기회가 없다고 생각합니다.

 

(상세 내용은 '한국의 이공계는 글쓰기가 두렵다' 참조)

 

3. 개인 이력이나 다짐은 금물이다

자기소개서도 읽는 사람에게 필요한 정보를 담아야 한다. 자신의 이야기를, 그것도 장황하게 늘어놓으면 안 된다.

 

주위가 산으로 둘러싸이고 앞으로는 탁 트인 시야를 가진 나의 고향은 대구이다. 지금은 아파트 단지로 발 디딜 틈도 없이 변해 버린 대구 범물동에서 24년 전 봄에 가족모두에게 축복을 받으며 태어났다. 집에서 막내로 태어나 두 형들 속에서 귀여움을 받으며 커왔다. 주위환경 덕분에 어릴 때는 뭐든지 쥐고 놀면 놀이기구가 되었고 어디든지 뛰어 놀면 놀이터였다.

-> 저는 대구 근교에서 태어나 자연 속에서 마음껏 뛰놀며 자랐습니다.

 

자신의 신변잡기가 네 줄이 넘지만 읽는 사람에게 필요한 정보는 한 줄이 채 되지 않는다. 그나마 이 한 줄도 주제와 관련이 있을지 의문이다. 이러한 개인 이력뿐만 아니라 누구나 할 수 있는 경험이나 개인적인 다짐, 철학도 도움이 되지 않는다. 도움은커녕 오히려 역효과가 날 때가 많다.

 

<1> 저는 안 해본 것이 없을 정도로 많은 사회적 경험을 쌓았습니다.

<2> 군 경험과 동호회 간부 생활을 통해 리더십을 터득하였습니다.

<3> 저는 무슨 일이든지 잘 합니다. 맡겨만 주십시오.

<4> 입사를 시켜 주시면 열심히 노력하여 최고의 전문가가 되겠습니다.

<5> 저의 좌우명은 성실입니다.

<6> 저는 자신감 하나만은 뛰어납니다.

 

<예문 1>의 경우, 많은 사회 경험을 나열하면 산만하여 회사가 원하는 직무와 관련된 경험마저 돋보이지 않게 된다. <예문 2>의 경험으로 리더십을 논하기에는 무리가 있다. 리더십은 남의 객관적인 평가에 의하여 얻어지는 것이 자연스럽지, 자기가 인정할 것은 아니다. <예문 3>'팔방미인'형인데 모든 것을 잘 한다는 것은 그만큼 특정 분야에는 집중력이 떨어진다는 것도 의미한다. <예문 4>의 경우에는 하나마나한 소리이다. 누구나 가지는 입사 포부이기 때문이다. <예문 5><예문 6>은 자신의 철학을 피력한 것인데 이것도 무용지물이다. 회사는 조직이 필요로 하는 전문성에 관심이 있다. 전문성을 갖춘 응시자를 먼저 뽑은 후에 면접에서 '성실'이나 '자신감'을 보기 때문에 자기소개서에는 철저하게 자신이 무엇을 잘 할 수 있는지에 초점을 맞추어야 한다.

 

5. 하나의 주제에 집중하자

회사가 필요로 하는 인재가 자신임을 잘 드러내기 위해서는 회사의 직무와 밀접한 관계를 가진 뚜렷한 주제 하나를 선정하는 것이 좋다. 그리고 제목을 '자기소개서'라고 달기보다는 아래의 <예문 1><예문 2>와 같이 주제문을 제목으로 하는 것이 구체적인 내용을 첫눈에 전할 수 있어 좋다.

 

<1> 온라인 게임 제작의 전문가가 되고 싶습니다.

<2> 발모제에 관한 한 정성을 통해 감동을 팔고 싶습니다.

 

주제가 정해지면 성장과정, 성격, 취미 등의 모든 내용을 이 주제에 집중해야 한다.

 

<1> 제목 : 온라인 게임제작의 전문가가 되고 싶은 ㅇㅇㅇ 소개

성장과정 : 게임을 밥 먹기보다 좋아해

성격 : 꼼꼼하고 집중력 강해

특기분야 : 온 라인 게임 제작은 자신 있어

지원동기 : 최고의 전문가로서 회사와 더불어 발전하고 싶어

 

<2> 제목 : 발모제에 관한 한 감동을 팔고 싶어

 

성장과정 : 아버지의 머리와의 전쟁을 보고 자라

성격 : 명랑하고 누구와도 잘 어울려

특기분야 : 공부는 못해도 정밀화학은 좋아해

지원동기 : 정성을 통해 감동을 팔고 싶어

 

성장과정과 성격 같은 소제목내용을 나타내는 표현으로 바꾸는 것이 좋다. 그래야 읽는 사람이 많은 정보를 쉽고 빠르게 얻을 수 있다. 또한 주제와 관련이 없는 사항은 과감하게 버리고 상투적인 표현은 주제와 밀접하게 관련을 가질 수 있도록 한다.

<1> 저는 경상북도의 조그마한 마을 o oo o리에서 11녀의 장녀로 태어나 엄하신 아버지와 자상한 어머니의 가르침을 받고 초등학교는 ……, 중등학교는 ……. (상투적인 표현) -> (모두 삭제)

 

<2> 저는 11녀 중 장녀로 자랐습니다.

-> 저는 자라면서 남동생과 많이 다투었습니다만 그러한 기회를 통하여 경쟁과 협조의 의미를 배웠습니다.

 

<3> 저는 무엇이든 과감하게 처리하기를 좋아합니다. 그러다 보니 일을 세밀하게 챙기지 못할 때가 많아 이를 고치려고 노력하고 있습니다.

 

-> 저는 소극적이고 내성적입니다. 소극적인 사람은 매사를 신중히 생각하며 내성적인 사람은 남의 심정을 잘 헤아리는 경향이 있다고 합니다.

 

<예문 1>은 주제와 관련이 없으므로 삭제하는 것이 좋다.

<예문 2>는 상투적인 표현을 쓰더라도 자신의 장점을 드러낼 수 있는 수단으로 활용할 수가 있다.

<예문 3>은 성격의 장·단점을 모두 적으려니 내용 전개에 무리가 따른다. 이럴 경우에도 단점을 장점으로 바꾸어 표현하는 방안을 강구해야 한다.

 

6. 보기 좋게 만들자

자기소개서는 첫 인상에 호감이 가야 경쟁력이 있다.

물론 회사가 원하는 양식에 충실해야 하지만 반드시 따를 필요는 없으며 자기만의 개성과 창의성을 부여하는 것이 좋다. 앞에서 본 바와 같이 단순히 소제목을 '성격'이라고 표시하기보다는 '성격; 꼼꼼하고 집중력 강해'로 하면 핵심정보를 한 눈에 전달할 수도 있다. 본문 내용 가운데 꼭 강조하고 싶은 것은 두 세 개 정도의 핵심단어검게 'bold'로 처리하여 읽는 사람의 눈에 금방 들어가게 하는 것이 좋다. 인터넷 원서 접수는 한 자리를 두고 수 백 명이 지원하기 때문에 첫 인상이 나쁜 소개서는 쓰레기 통으로 직행할 가능성이 매우 높다. 그러므로 작은 글씨로 빽빽이 적는 것은 낙제감이다. 두 장의 소개서 역시 지루한 느낌을 줄 수 있으므로 한 장에 그것도 85% 정도 되는 분량에 핵심 내용을 충분히 기술해야 한다.

이 외에도 자기소개서를 쓸 때 주의할 사항은 다음과 같다.

 

<1> 솔직하게 적어야 한다.

<2> 간결하고 명료해야 한다.

<3> 내용이 서로 연관을 가지고 어울려야 한다.

<4> 문단 단위로 소주제를 나누어야 한다.

<5> 교정을 해야 한다.

 

'글쓰기' 카테고리의 다른 글

임재춘의 힘글쓰기  (0) 2014.09.13
임재춘의 파워 글쓰기  (0) 2014.09.13
Posted by 루피아빠