반응형

분류 전체보기 136

[Javascript] Tutorial(4): ES6 문법

※ 이 포스팅은 스터디 강의 자료로 사용되었습니다. 2015년에는 자바스크립트 문법에 매우 큰 변화가 있었습니다. 바로 ES2015(ES6라고도 부릅니다.)가 등장한 것인데요. 이 기점을 기준으로 매년 문법 변경 사항을 발표하고 새로운 문법 상세에 대해서도 활발한 논의가 이루어지고 있습니다. 이전까지 포스팅에서는 ES5 문법을 이용해 예제들을 작성했습니다. 하지만 이제는 ES6를 배워둘 필요가 있다고 알려드리고 싶습니다. ES6에는 다른 언어들의 장점을 본뜬 편리한 기능들이 많이 추가되었기 때문입니다. 하지만 처음부터 ES6 문법으로 포스팅을 작성하지 않은 이유는 이전 포스팅에서는 문법보다는 보다 개념적인 것들을 이해하길 바랐고, 다양한 ES5를 알고 있어야 ES6 문법을 이해하기 쉽고 상황에 맞게 선택..

[Javascript] Tutorial(3): 1급 객체 함수

※ 이 포스팅은 스터디 강의 자료로 사용되었습니다. 이번 포스팅에서는 자바스크립트 함수에 대해서 알아보도록 하겠습니다. 누군가 저에게 자바스크립트에서 가장 중요한 개념이 무엇이냐고 묻는다면 저는 단연 함수라고 이야기할 것 같습니다. 어떤 언어에서나 함수는 중요한 역할을 하지만 특히 자바스크립트에서는 함수의 역할이 남다르게 중요합니다. 그러한 이유에는 모듈화, 클로저, 객체와 같은 자바스크립트의 근간이 되는 기능들을 함수가 제공하기 때문입니다. 이전 포스팅에서도 가끔 언급했듯이 자바스크립트의 함수는 1급 객체라고 불립니다. 1급 객체는 아래와 같은 특성을 지닙니다. 변수나 데이터 구조안에 담을 수 있습니다. 파라미터로 전달할 수 있습니다. 리턴 값으로 사용할 수 있습니다. 리터럴로 생성할 수 있습니다. 동..

[Javascript] Tutorial(2): 자바스크립트 Object(객체)

※ 이 포스팅은 스터디 강의 자료로 사용되었습니다. 자바스크립트는 다른 언어와 다른 객체의 특징이 있습니다. 흔히 이러한 특성 때문에 자바스크립트를 장난감 같다고 이야기 하기도 합니다. 처음 프로그래밍 언어를 배우시는 분에게는 이러한 자바스크립트의 특성이 오히려 언어를 쉽게 이해하는데 도움이 될수도 있지만, C++, Java와 같은 컴파일 언어로 프로그래밍 언어를 접한 분들은 자바스크립트를 공부하며 "이게 된다고...?"라고 생각되는 부분들이 종종 있을 수 있습니다. 그만큼 자바스크립트는 자유로운 언어이고, 코딩하기 쉽지만 코드 스타일에 정형화 되어있지 않고, 디버깅하는데 어려움이 있는 단점도 있습니다. 하지만 분명한건 그만큼 매력적인 언어라는 점입니다. 이 포스팅에서는 사용하는 예제는 자바스크립트 런타..

[Javascript] Tutorial(1): 자바스크립트 개요

※ 이 포스팅은 스터디 강의 자료로 사용되었습니다. 자바스크립트는 흔히 개발자들에게 자리잡은 인식은 '언제든 배울 수 있는 언어'라는 인식이 강합니다. 저 역시 그렇게 생각했고 자바스크립트를 제대로 공부하지 않았음에도 어느정도 결과물을 만들어 낼 수 있었습니다. 하지만 프로젝트가 커지고 ES6와 Node.js와 같은 자바스크립트 생태계가 변하게 되면서 자바스크립트 특성을 제대로 이해하지 않았던 부분들이 문제를 일으키기 시작했습니다. 자바스크립트는 스크립트 언어입니다. 그 중에서도 웹을 기반을 발전한 언어이기 때문에 다른 언어들과 특성이 다른 면이 있습니다. 물론 그 개념이 그리 어려운 것만은 아니지만, C나 Java와 같은 컴파일언어로 개발을 시작한 개발자들에게는 다소 낯설은 공부가 될 수도 있습니다. ..

[Kubernetes] 쿠버네티스의 등장 배경

※ 본 포스팅은 Network > Cloud > Docker > Kubernetes 순으로 먼저 클라우드와 인프라에 관한 전반적인 지식이 수행된 다음 읽어볼 것을 추천합니다. [Docker] Docker의 개요 Docker란 무엇일까? 개발자라면 도커를 사용해보진 않았더라도 한 번쯤은 들어봤을 것이다. 많은 개발자들이 이미 도커를 사용하고 있고, 심지어 채용 우대사항에서도 Docker라는 이름을 심심치 않게 볼 수 있다... ooeunz.tistory.com 이번 포스팅에선 쿠버네티스를 사용하게된 이유에 대해서 알아보고 전체적인 구조에 대해 간단하게 살펴볼 예정입니다. 자세한 내용은 이후의 포스팅에서 다루도록 하겠습니다. 쿠버네티스는 왜 등장했는가? 2013년 3월에 도커가 세상에 등장하면서 서버 관리 ..

DevOps/Kubernetes 2020.02.02

[Docker] Docker Network를 이용하여 네트워크 공유하기

Docker Network란 실행된 각각의 컨테이너끼리 연결하기 위한 논리적인 네트워크입니다. 같은 네트워크 안에서는 각각의 컨테이너의 IP를 지정해주거나 할 필요 없이 name만으로 손쉽게 네트워크를 연결할 수 있다는 장점이 있습니다. 또한 아웃바운드 포트를 오픈하지 않는 이상 내부적으로만 통신하게 됩니다. 예를 들어 Node서버와 Redis서버가 통신을 하게 되는 아키텍처가 있다고 가정해보겠습니다. Node서버는 외부의 클라이언트로부터 api요청을 받게 되지만 redis는 node 서버와만 통신이 필요합니다. 이러한 경우 하나의 네트워크 안에 두개의 컨테이너를 배포하고 노드 서버만 포트포워딩을 해줌으로서 문제를 해결할 수 있습니다. ※ 예전에는 Docker Link를 사용해서 private IP끼리 ..

DevOps/Docker 2020.01.31

[Spring] DI? IoC Container? Bean? 숲을 보는 게시물

스프링은 꽤나 진입장벽이 높은 프레임워크이다. 그 자체의 개념은 그리 어렵지 않으나 엔터프라이즈용으로 흔히 사용되는 프레임워크이다 모니, 굉장히 다양한 용어들이 있고, 숲이 아닌 나무를 보는 공부 방식은 자칫 모두를 이해하지 못하는 오류를 범할 수 있다. DI와 IoC Container도 그러하다. DI를 알기 위해선 Design Pattern이 무엇인지 알아야 하고, 왜 spring은 Singleton Pattern을 채택하고 있는지에 관한 연결된 부분들을 이해해야 한다. 이 포스티에서는 이러한 개념들을 자세히 다루지는 않을 것이다. 다만 숲을 보는 느낌으로 가볍게 읽어봐주었으면 한다. DI(Dependency Injection)와 IoC(Inversion of Control)는 스프링 공부를 하게 되..

[Java] JVM의 Runtime Area

JVM (Java virtual machine)에 관하여 살펴보겠다. Heap 영역 자바 객체와 배열이 생성되는 영역이다. 힙 영역에 생성된 객체와 배열은 JVM ㅅ택 영역의 변수나 다른 객체의 필드에서 참조한다. 만약 참조 값이 없다면 쓰레기로 취급하고 JVM은 GC를 이용하여 객체를 힙 영역에서 제거한다. Stack 영역 각 스레드마다 하나씩 존재하며 스레드가 시작될 때 할당된다. 추가적으로 스레드를 생성하지 않았다면 main 스레드 하나만 존재하므로 JVM 스택 역시 하나이다. JVM 스택은 메서드를 호출할 때마다 프레임(Frame)을 추가(push)하고 메서드가 종료되면 해당 프레임을 제거(pop)하는 동작을 수행한다. 예외 발생 시 printStackTrace()는 메서드를 보여주는 Stack ..

Language/Java 2020.01.13

[Tech] Protocol Buffer: Serialization에 관하여, 모두가 JSON을 쓴다고 하여 JSON만이 정답일까?

이 포스팅은 우연히 google cloud api를 사용하던 중 response 객체가 json 타입이 아니라는 사실을 알게 되면서, '왜 당연하듯 모두가 json객체를 사용하는가?'라는 의문에서부터 시작된 공부이다. 이 블로그의 모든 포스팅이 그러하듯 먼저 Serialization(직렬화)가 무엇인지부터 시작해보도록 하겠다. Serialization란? 직렬화란 시스템 내부에서 사용하는 객체를 다른 시스템에서도 사용할 수 있도록 바이트(byte)형태로 데이터를 변환하는 기술을 뜻한다. (반대로 다시 객체 형태로 변환하는 기술은 역직렬화라고 부른다.) 이를테면 Java에서 사용하던 객체 방식과 ruby on rails나 Node.js에서는 형식이 다를 수 있기 때문에 모두가 같은 데이터를 사용할 수 있도..

[Spring] Spring Security 1.5 -> 2.x 버전 업데이트에 따른 변화

Spring Security version up에 따른 이슈 Spring Boot가 1.5 버전에서 2.x 버전으로 업그레이드되면서 많은 변화가 있었다. 그중 security와 OAuth2 인증 부분에서 여러 변화가 생겼다. 그로 인해 하위 버전과 호환되지 않는 기능들이 생겨났다. (출처) https://hue9010.github.io/spring/OAuth2/ 하지만 안타깝게도, 대부분의 구글링에 나오는 레퍼런스들은 아직 1.5 버전을 기준으로 포스팅이 되어있거나, 이미 1.5버전으로 구현이 되어있는 상태에서 2.x버전의 기능들을 사용해야할 경우에 문제가 발생한다. 그럴 때 임시방편으로 아래와 같이 dependencies를 변경해줌으로써 1.5버전과 2.x버전을 둘다 호환 가능하도록 할 수 있다. 2...

반응형