본문 바로가기

Dev.World/개발상식&언어

(46)
[개발상식] 10. Cookie / Session / Cache 웹 사이트를 사용하는 사용자는 HTTP GET방식이나 HTTP POST방식을 사용하여웹 서버로 페이지를 요청하게 되고, 웹 브라우저는 웹 서버에서 응답받은 HTML을 파싱하여 렌더링하게 된다.이러한 일련의 주기를 '라운드 트립'이라고 한다. 그런데 HTTP 프로토콜은 상태를 저장할 수 없는 프로토콜이다.즉, 클라이언터의 요청이 왔을 때 웹 서버는 해당 요청에 대한 응답인 HTML 을 보내주고 연결을 끊어버린다는 말이다.그렇기에 라운드 트립 시 페이지에 있는 컨트롤의 사용자 입력정보나 페이지 정보들이 모두 손실되게 된다.동적인 웹사이트에서는 사용자의 요청이나 컨트롤의 입력정보를 유지할 필요가 있기 때문에여러 상태관리를 할 수 있는 기능들을 제공한다.상태관리의 정보를 저장하는 장소에 따라 두가지로 분류할 수..
[그들이 쓰는 언어] 5. 크롤링(Crawling) 크롤링이란Web Crawling.Web Scraping 이 정식 명칭이다.구글, 네이버 같은 포털 사이트들은 어떻게 검색 결과를 보여주는 것일까?포탈들은 저마다 검색 엔진이라는 것을 사용해 전 세계 수많은 웹 페이지들을 방문하면서 정보들을 긁어온다.이렇게 모은 정보들을 데이터베이스 형식으로 저장해 두었다가 사용자가 검색요청을 하면내부적인 알고리즘에 의해 원하는 검색결과를 찾아 사용자에게 뿌려주게 된다.이렇게 무수히 많은 컴퓨터에 분산 저장되어 있는 문서를 수집하여검색 대상의 색인으로 포함시키는 기술을 크롤링이라고 한다.어느 부류의 기술을 얼마나 빨리 검색 대상에 포함시키냐 하는 것이 우위를 결정하는 요소로서최근 웹 검색의 중요성에 따라 발전되고 있다. 관련 용어들웹 크롤링 : 콘텐츠를 수집하기 위해 자동..
[개발상식] 9. Scale Up/Out & Sharding mongoDB에 대해서 알아보다가 Sharding이 무엇인지 궁금해졌다.그러다가 Scale out이 무엇인지 또 궁금해지고 up도 궁금해진거다. 끝이 없다. Scale up / Scale outScale Up이란 서버 그 자체를 증강하는 것에 의해서,즉 리소스를 붙여서 용량을 키워 처리 능력을 향상시키는 것이다.프로세서 자체를 고성능 모델, 고가의 장비로 옮겨놓는 것을 가리킨다.스케일 업은 수직 스케일로 불리기도 한다. Scale Out이란 접속된 서버의 대수를 늘려 처리 능력을 향상시키는 것이다.서버의 가상화 기능을 사용하고 하나의 케이스 내에서 가상적으로 복수 서버를 구축해스케일 아웃과 동등의 효과를 제공할 수도 있다.이러한 방식을 특히 스케일 위드인 가상스케일아웃 이라고 부르기도 한다.스케일 아웃은..
[개발상식] #JS 프레임워크 특집/ React, Angular(vs backbone, ember), Meteor 그리고 MEAN JavaScript 전부는 아니지만 각종 커뮤니티에 주로 회자되는 프레임워크들의 특징들을 얕게 비교해보았다.React 페이스북이 만들고 있는 뷰 부분을 컴포넌트로 만들기 위한 라이브러리이다.페이스북이 왜 React 를 만들었는가'지속해서 데이터가 변화하는 대규모 애플리케이션을 구축하기 위해서' 라고 한다.관심사를 분리시키고 선언적인 API이다. React의 특징1.JUST the UIUI 컴포넌트를 만들기 위한 라이브러리이다. 단지 UI만.(컴포넌트란 재사용 가능한 UI 구성단위를 말한다. 또한 컴포넌트끼리의 결합, 포함 관계를 말한다.) 2.Virtual DOMDOM Tree와 같은 구조체를 Virtual Dom으로 갖고 있다.가상의 HTML Element들을 가지고 있다가렌더링을 하면 필요한 부분(D..
[그들이 쓰는 언어] 4. 미들웨어 / API 미들웨어(middleware)란 무엇인가응용소프트웨어가 운영체제로부터 제공받는 서비스 이외에추가적으로 이용할 수 있는 서비스를 제공하는 것이다.그 서비스란 시스템 소프트웨어와 응용 소프트웨어 사이또는 두 가지 다른 종류의 응용프로그램 사이에서 조정 및 중개 역할을 의미한다.즉 , 시스템에 분산되어 있는 응용프로그램과 데이터, 웹 서버간 연결을 최적화 시켜주는 역할을 하는 것을 말한다. 응용 소프트웨어는 유연하고 확장, 축소가 편리해야 하며이러한 장점을 충족하기에 다른 기종간 플랫폼을 다시 구축할 필요가 없어야 한다. 이러한 이유로 미들웨어라는 것이 생겨났다. 미들웨어의 동작환경은 Operating Environments 예를 들면 데이터베이스, 네트워크, 운영체제, 유저인터페이스 등과Business Wa..
[그들이 쓰는 언어] 3. 디버깅 / 리팩토링 디버그 / 디버깅 / 디버거디버그란?컴퓨터 프로그램의 정확성이나 논리적인 오류를 찾아내고 테스트하는 것을 의미하고 이 과정을 디버깅이라고 한다.컴퓨터에서는 이 오류를 버그라고 지칭하고 벌레를 없애다 라는 뜻으로 디버깅이라는 용어를 사용한다. 디버거는 디버그 행위를 돕는 도구이다. 오류를 발견하는데 있어서 코드를 단계적으로 실행하거나 메모리에 저장된 값을 살펴보는 등 많은 기능을 지원한다. 리팩토링사용자에게 노출되는, 출력되는 값은 그대로 유지하면서내부 논리나 구조를 바꾸고 개선하는 유지보수 행위이다.결과의 변경 없이 코드의 구조를 재조정하는 것을 의미한다.주로 가독성을 높이고 유지보수를 편하게 하는데에 그 목적이 있다.디버깅과는 다른 개념이다.하지만 리팩토링은 버그를 찾도록 도와준다.새로운 기능을 추가해..
[개발상식] 7. 프로세스 / 스레드 / 커널 프로세스(Process)프로세스란기본적으로 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 의미한다.프로세스랑 프로그램이랑은 약간 다르다.프로그램이란 일반적으로 하드 디스크 등에 저장되어 있는 실행코드를 의미한다.그리고 프로세스는 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가메모리 상에서 실행되는 일종의 작업단위이다.하나의 프로그램을 여러 번 구동하면 여러 개의 프로세스가 메모리 상에서 실행된다. 프로세스는 사용 중인 파일, 데이터, 프로세서 상태, 메모리 영역 주소 공간, 스레드 정보전역데이터가 저장된 메모리 부분 등 수 많은 자원을 포함하는 개념이다.스케줄링의 대상이 되는 작업(task)라고 불리기도 한다. 프로세스는 항상 커널의 자원을 차지하기 위해 경쟁하고커널은 이들에게 효율적으로 자..
[개발상식] 6. 인터넷 기초 II / 인터넷 동작 방법, 포트 지금 이 순간에도 사용하고 있는 인터넷어떻게 동작하는걸까? 인터넷의 동작 방법 독립적이었던 컴퓨터들이 인터넷에 의해 연결되었다.컴퓨터들은 서로 데이터를 요청하고 제공하기도 한다.우리는 요청하는 컴퓨터를 클라이언트, 제공하는 컴퓨터를 서버라고 한다.서버-클라이언트, 클라이언트-서버어느 컴퓨터가 서버인지 클라이언트인지는 상대적인 개념이다.상황에 따라서 내 컴퓨터가 클라이언트가 될 수도 있고 서버가 될 수도 있다.일반적으로 웹브라우저가 설치된 컴퓨터와 서버측 컴퓨터가 있다면 웹브라우저가 클라이언트가 된다. 상황을 가정해보자.클라이언트가 주소창에 http://a.com 을 입력하였다.서버에게 http://a.com 라는 주소가 넘겨졌다.a.com 에 여러 가지 서버가 있을 수 있다.(DB서버 / 채팅서버 / 웹..