일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 네트워크
- cache
- libuv
- javascript
- html
- r
- Heap
- Static
- AWS
- VCS
- HTTP
- github
- mybatis
- git
- 데이터통신
- Linux
- mongodb
- socket
- reactive
- reactor
- nodejs
- ajax
- Java
- network
- effective
- spring
- Lombok
- Elk
- redis
- NoSQL
- Today
- Total
목록분류 전체보기 (187)
빨간색코딩
참조문서https://docs.spring.io/spring/docs/4.3.18.RELEASE/spring-framework-reference/html/websocket.htmlhttps://d2.naver.com/helloworld/1336먼저 웹소켓 이전부터 천천히 알아보자1. 클라이언트는 어떻게 이벤트를 받아왔나?전통적으로 웹 클라이언트(브라우저)와 웹 서버는 http request - response 방식으로 동작한다. 그런데 서버에서 일방적으로 클라이언트에게 (요청을 안했는데도) 응답을 내려줘야하는 경우도 있을 수 있다. 바로 채팅이나 알림같은 경우이다. 메세지가 왔거나, 친구신청이 왔다거나 하는 경우들이다. 이런 경우들에 기존의 req - res 방식은 자연스럽지 못했는데, 애초에 단방향 통..
참조문서https://docs.spring.io/spring-security/site/docs/4.2.7.RELEASE/reference/htmlsingle/#getting-startedhttp://springsource.tistory.com/80https://okky.kr/article/3827381. 스프링 시큐리티란?스프링 시큐리티는 스프링 기반의 어플리케이션의 보안(인증과 권한)을 담당하는 프레임워크이다. 만약 스프링시큐리티를 사용하지 않았다면, 자체적으로 세션을 체크하고 redirect 등을 해야할 것이다. 스프링 시큐리티는 보안과 관련해서 체계적으로 많은 옵션들로 이를 지원해준다. spring security는 filter 기반으로 동작하기 때문에 spring MVC 와 분리되어 관리 및 동작..
참조문서 : http://www.baeldung.com/jackson-annotations1. jackson 이란?jackson은 자바진영 json 라이브러리로 잘 알려져 있지만 json 뿐만 아니라 XML, YAML, CSV 등 다양한 형식의 데이타를 지원하는 data-processing 툴이다.스트림 방식이므로 속도가 빠르며 유연하며 다양한 third party 데이터 타입을 지원하며 annotation 방식으로 메타 데이타를 기술할 수 있으므로 JSON 의 약점중 하나인 문서화와 데이타 validation 문제를 해결할 수 있다.2. 의존성 추가databind 는 jackson-core, jackson-annotation 에 의존성이 있으므로 pom 파일에는 databind 모듈만 기술한다. 2.9..
1. 다양한 intercept 방법들과 주 사용처Servlet Filter : 인코딩, 인증, 압축, 변환 등HandlerInterceptor : 세션, 쿠키, 검증 등AOP : 비즈니스단 로깅, 트랜잭션, 에러처리 등2. Servlet Filter 와 HandlerInterceptor 차이Servlet Filter : Dispatcher Servlet의 앞단에서 들어오는 요청을 처리J2EE 스펙spring과 무관HandlerInterceptor : Dispatcher Servlet의 뒤의 Handler 영역에서 요청을 처리org.springframework.web.servlet.handler 패키지가 제공흐름 정리 : Request -> Servlet Filter -> Dispatcher Servlet..
참조문서https://developer.mozilla.org/ko/docs/Web/API/Storagehttps://developer.mozilla.org/ko/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API 1. Web Storage란?Web Storage는 HTML5 에서 추가된 저장소이다. 간단한 키와 값을 저장(key-value Storage)할 수 있다. Web Storage를 상속받아 구현된 localStorage와 sessionStorage가 존재한다.키와 값은 뭐가 들어와도 문자열로 변환되어 저장된다.객체를 읽고쓰려면 JSON.stringify, JSON.parse 를 해야함브라우저별 용량제한이 다르다.origin(도메인)별 Storage는..
참조문서 : https://logging.apache.org/log4j/2.x/1. log4j 란?log for java 의 약자로서 로깅을 위한 라이브러리이다. 로깅 라이브러리를 별도로 사용하지 않는다면, system.out.println()으로 할 것이다. 개발환경이야 상관없겠지만, 운영환경에서는 리소스낭비이다. 그렇다고 안쓰자니 에러상황에서 로깅이 아쉽다. 이럴 때 log4j 를 사용하면 해결할 수 있다.특징system.out.println() 에 비해 속도가 훨씬 좋다.멀티스레드 환경에서 사용해도 안전하다.계층적인 로그 설정과 처리가 가능하다ㅏ.출력을 콘솔, 파일, 원격, email, DB 등 다양하게 가능하다.2. slf4jSimple Logging Facade For Java 의 약자로서 lo..
참조문서https://docs.oracle.com/javase/8/docs/api/java/util/function/package-frame.htmlhttps://skyoo2003.github.io/post/2016/11/09/java8-lambda-expressionhttps://homoefficio.github.io/2017/02/19/Java8-%EB%9E%8C%EB%8B%A4-%EA%B4%80%EB%A0%A8-%EC%8A%A4%ED%8E%99-%EC%A0%95%EB%A6%AC/1. 람다란?람다란 코드블록이다. 기존에는 코드블록은 반드시 메서드 내에 존재해야 했다. 코드블록을 가지려면 메소드, 클래스를 선언해야 했다. 하지만 자바8부터는 람다를 통해 코드블록만 가질 수 있도록 한 것이다. (js f..
참조문서http://www.nextree.co.kr/p6960/http://slenderankle.tistory.com/162 1. SOLID란?객체지향 설계는 긴 세월과 수많은 시행착오를 거치며 5가지 원칙이 정리되었다. 이것은 객체지향 설계의 5원칙이라고 하며, 앞글자를 따서 SOLID라고 한다.SPR(Single Responsibility Principle) : 단일 책임 원칙OCP(Open Closed Principle) : 개방 폐쇄 원칙LSP(Liskov Substitution Principle) : 리스코프 치환 원칙ISP(Interface Segregation Principle) : 인터페이스 분리 원칙DIP(Dependency Inversion Principle) : 의존 역전 원칙이 원..
1. 클래스와 객체가장 흔한 설명중에 대표적으로 잘못된 것은 붕어빵이야기다. 클래스 = 붕어빵틀, 객체 = 붕어빵에 비유하며, 붕어빵틀에서 붕어빵을 찍어낸다는 이야기다. 하지만 코드로 보면 이 비유는 틀렸다. 클래스 객체변수명 = new 클래스(); 에 대입해보면, 붕어빵틀 붕어빵 = new 붕어빵틀(); 이다. 말이 안되는 예제이다. 여기서 붕어빵틀은 붕어빵을 만드는 Factory로 이해를 해야지, 클래스와 객체관계로 이해하면 안된다. 클래스는 추상적이고, 클래스라는 단어대로 분류에 대한 개념이지, 실체가 아니다. 하지만 객체는 실체이다. class Person이 있고, Person ljh = new Person(); 이 말이 되는 것이다.클래스 : 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개념객..
1. AOP란?Aspect Oriented Programming 의 약자로 관점지향 프로그래밍이라고 부른다. IoC가 낮은 결합도와 관련된 것이라면 AOP 는 높은 응집도와 관련되어 있다.서비스들의 비즈니스 메소드들은 복잡한 코드로 구성되어있는데, 그 중 핵심 로직은 얼마안되고 대부분은 트랜잭션, 로깅 처리, 인증과 관련된 코드들이 있을 수 있다. 이럴 때 비핵심이지만 꼭 필요하고, 공통화할 수 있는 부분을 따로 빼서(횡단 분리) 관리하는 것이다.2. AOP 용어조인포인트(Joinpoint) : 클라이언트가 호출하는 모든 비즈니스 메소드, 조인포인트 중에서 포인트컷되기 때문에 포인트컷의 후보로 생각할 수 있다.포인트컷(Pointcut) : 특정 조건에 의해 필터링된 조인포인트, 수많은 조인포인트 중에 특..
참조문서 : https://wikidocs.net/441. 설치python 2.7.15 설치Windows x86 MSI installer설치를 default로 하면 C:\Python27 에 설치되고, Scripts 까지 생긴다. 하지만 경로를 다르게하면 Scripts 생기지않는데, 이때는 ez_setup.py 를 받아서 실행해주면 pip 가 깔린다.환경변수 설정python: C:\Python27pip : C:\Python27\ScriptsIDE : 기존에 사용하던 IntelliJ에 Python Plugin 을 설치2. pip파이썬 진영의 패키지관리자다.2-1. 명령어pip install 패키지명pip install 패키지명==버전 : 특정 버전 패키지 설치pip search 패키지명pip uninstal..
참조문서 : http://ejs.co/#docs1. ejs 란?ejs는 Embedded JavaScript Template의 약자로 nodejs 진영에서 많이 사용하는 템플릿엔진이다. 문법이 단순하다.2. 기본 문법주석 : JS 코드 : 변수 출력(html escape 처리: >를 $gt로 변환) : 태그내부 공백 제거 : html escape안하고 변수 출력 : ejs 분할3. nodejs와 연동(= 데이터 넘겨주기)3-1. express 없이 연동하기const ejs = require("ejs"); ejs.render(경로, 데이터, 옵션); 3-2. express 에서 연동하기app.js 에서 app.set('view engine', 'ejs');처리하는 라우터에서 아래와 같은 로직이 있으면 된다...
참조문서 : https://www.npmjs.com/package/body-parserpost로 요청된 body를 쉽게 추출할 수 있는 모듈이다. 추출된 결과는 request객체(IncomingMessage 타입)에 body 속성으로 저장된다. API문서보면 다양한 메소드들이 많지만, 여기서는 URL-encoded form body parser만 사용한다.npm install body-parser 로 설치한다.1. http 내장모듈만 쓰는 것과 뭐가 틀린가?http모듈로만 post body를 파싱하려면, req.on('data', function(chunk) { body += chunk; }); 와 같이 이벤트를 등록해야한다. 그다음에 인코딩처리를 해줘야한다.그치만 body-parser를 쓰면 bodyP..
참조문서 : https://www.joinc.co.kr/w/Site/Tip/Rsync1. rsync를 왜쓰는가?Linux 시스템을 사용시에 원격지 서버의 파일을 copy 해야하는 경우가 빈번하게 발생하는데 개발자는 계정 패스워드를 알 지 못하기 때문에 패스워드를 이용하지 않는 방식으로 File copy 가 필요보안 설정을 추가하여 침해사고도 예방 가능장점원격 시스템으로 부터 파일을 효율적으로 복사하거나 동기화 할 수 있다.Link, device, 파일의 소유자와 그룹 권한(permissions)등 파일의 부가정보도 복사할 수 있다.scp보다 빠르다. rsync는 remote-update 프로토콜을 이용해서 차이가 있는 파일만 복사한다. 처음에는 모든 파일과 디렉토리를 복사하겠지만, 다음부터는 차이가 있는..
참조문서 : https://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/1. 출력echo : 자동 줄바꿈printf : c언어랑 비슷2. 주석#!/usr/bin/env bash#3. 함수function 을 써도되고 생략해도 된다.함수선언이 호출 뒤에있으면 에러가 발생한다. (command not found)에러가 나도 밑에꺼는 마저 실행되는 듯인자 넘기기 : 함수 인자1 인자2 ...4. 변수변수 할당은 = 앞뒤에 공백이 없어야만 된다. (있으면 command not found 발생)홀따옴표, 쌍따옴표 다 되는 듯선언된 변수는 기본적으로 전역변수이다. 해당 스크립트에서만 유효하다.다른 스크립트(A.sh 내부에서 B.sh 를 호출하는 상황) 에서도 해당 변수를 사용하려면 ..