자바스크립트를 사용할 때는 딱히 변수의 타입을 고려하지 않고 코드를 작성해도 괜찮습니다. 그러나 개발자가 타입을 신경쓰지 않을 뿐이지. 실제로는 타입이 존재합니다. 타입은 타입이 결정되는 시점에 따라서 정적 타입과 동적 타입으로 분류됩니다. 정적 타입(Static Type) 정적 타입에서는 모든 변수의 타입이 컴파일 시점에 결정됩니다. 자바에서 흔히 String str = "Hi" 라고 선언해주듯이. 개발할때 대놓고 타입을 명시하는 애들이 정적 타입 언어에 속합니다. 타입스크립트에서도 정적 타입을 제공해주고 있구요. 타입을 명시해줘야 된다는 귀찮음이 있지만 컴파일 시점에 타입 에러를 발견할 수 있기 때문에 프로그램의 안정성을 보장할 수 있어요. 정적 타입의 장점은 다음과 같습니다. 타입 안정성 : 변수의..
분류 전체보기
폴리필(Polyfill)이란? 폴리필은 기본적으로 지원하지 않는 이전 브라우저에서 최신 기능을 제공하는 데 필요한 코드를 의미합니다. 웹 환경을 빠르게 변화하고 있습니다. ES6 문법이 나오고 TypeScript가 나오고 계속해서 다양한 기술들이 나오겠죠. 이 기술들은 각각의 디바이스와 브라우저를 통해 클라이언트에 전달이 됩니다. 그렇지만 과연 브라우저에 내장된 자바스크립트 엔진이 항상 최신화된 코드를 읽을 수 있을까요?? 실제로 지원이 중단된 internet explorer의 경우 최신 코드를 읽지 못합니다. 이러한 문제를 해결하기 위해 폴리필이 사용됩니다. 폴리필을 사용하면 제가 사용하려는 기능을 지원하지 않는 브라우저에서도 그 기능을 쓸 수 있게 됩니다. 트랜스파일(Transpile)이란? 트랜스파..
기본적으로 Spring boot 내장 톰캣을 실행하면 8080포트로 서버가 올라갑니다. 서버 포트를 간단하게 바꾸는 다양한 방법에 대해서 알아보겠습니다. 1. application.properties 수정하기 server.port=9999 2. vm option 변경하기 -Dserver.port=9999 두 가지 방식 중에서 편한 방식으로 사용하면 간단하게 톰캣의 서버 포트를 수정할 수 있습니다. 추가적으로 공식 문서에 따르면 server.port=-1로 설정하는 방식을 언급합니다. WebApplicationContext의 생성을 허용하되 내장된 톰캣 서버의 HTTP endpoint를 비활성화하는 옵션입니다. 이렇게 되면 웹 서버를 시작하지 않고 application context가 초기화하는 시나리오를..
Spring Boot 애플리케이션에서 Self-Signed SSL 인증서를 사용해 HTTPS를 설정하는 방법에 대해 알아보겠습니다. Self-Signed SSL 인증서는 테스트 환경이나 개발 환경에서 테스트할때 쓰입니다. Self-Signed SSL 인증서 발급 받기 Self-Signed SSL 인증서는 PKCS12(Public Key Cryprographic Standards) 와 Java KeyStore 방식을 많이 사용합니다. 둘다 비슷합니다. 다만 Java KeyStore는 자바 언어에만 국한되서 사용할 수 있습니다. PKCS12로 발급 keytool -genkeypair -alias test -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore test..
회사에서 Mybatis를 사용하고 있습니다. DataBase에서는 컬럼명을 snake case로 쓰고 자바에서는 camel case로 필드 이름을 정해주고 있어요. 객체에 값을 제대로 매핑해주기 위해서 쿼리 조회 시 일일이 Alias로 camel case를 적어주고 있었습니다. 그런데 알고보니 몇 가지 세팅만 해주면 이런 노가다는 필요없다는 사실 알고 계셨나요?? 충격을 먹어서 바로 찾아봤습니다. 문제 상황 우선, 왜 이러한 설정이 필요한지에 대해 이해해봅시다. 이미 서론에서 언급하긴 했는데 더 자세하게 알아볼게요. 보통 자바에서는 변수명을 camel case로 표현합니다. 예를 들어, userName, userEmail과 같이 말이죠. 반면에, 데이터베이스에서는 snake case를 흔히 사용합니다. ..
CDN이란 무엇인가? CDN은 Content Delivery Network의 약자로, 전 세계 여러 지역에 데이터 센터를 구축하고 그곳에 콘텐츠를 복제해 두는 방식으로 사용자에게 빠르고 안정적인 인터넷 서비스를 제공하는 시스템입니다. CDN의 작동 원리 CDN은 웹사이트의 콘텐츠를 사용자가 위치한 곳에 가까운 서버에 배포하여, 사용자가 요청한 콘텐츠를 빠르게 제공합니다. 이는 웹사이트의 로딩 시간을 줄이고, 서버의 부하를 줄여줍니다. 사용자가 웹사이트에 접속하려고 요청을 보내면, CDN 으로 배치된 가장 가까운 캐시 서버에서 해당 콘텐츠를 찾아 사용자에게 전송합니다. 이렇게 하면 콘텐츠를 전달하는 시간이 줄어들어 웹사이트의 로딩 시간이 단축됩니다. 또한, CDN 캐시 서버가 콘텐츠를 복제하고 분산하여 콘..
일반적으로 자바 이론 공부를 하다보면 추상클래스는 객체 생성이 불가능하다고 설명합니다. 오늘은 이와 관련해서 개인적으로 궁금했던 몇 가지를 정리했습니다. 관련 키워드 : 참조 배열, 익명 클래스 추상 클래스 Animal public abstract class Animal { abstract void bark(); } 구현 클래스 Cat public class Cat extends Animal{ @Override void bark() { System.out.println("냥냥"); } } 구현 클래스 Dog public class Dog extends Animal{ @Override void bark() { System.out.println("멍멍"); } } 오늘 다뤄볼 예제 클래스들 입니다. 복잡한 ..
컨테이너 기술은 최근 몇 년 간 빠르게 성장하고 있는 혁신적인 기술로, 개발자와 운영팀에게 애플리케이션 배포와 관리를 획기적으로 단순화하고 효율화하는 도구입니다. 이 기술은 가상화 기술을 기반으로 하며, 애플리케이션과 그에 필요한 모든 종속성을 격리된 환경에 포장하는 것을 목표로 합니다. 이러한 접근 방식은 시스템 구축, 확장성, 유지보수 및 보안에 큰 이점을 제공합니다. 1. 컨테이너란 무엇인가? 개발자로 일하게 되면서 고객사 서버에 저희 서비스를 구동하기 위한 환경 설정을 하는 일을 맡은 적이 있습니다. 웹서버를 위한 환경을 구축을 하거나 데이터베이스 서버를 위한 설치를 해야합니다. 그런데 이런 고객사가 과연 하나일까요? 고객사가 많아질수록 이런 설치 과정을 여러 번 반복해야겠죠. 또한, DB용과 웹..
API 호출은 대부분의 애플리케이션 개발에 기본이 되는 작업입니다. 실제로 업무에서 RestTemplate을 사용한 경험이 있는데요. 요새는 다른 방식도 이용한다고 해서 경험해볼 겸 이렇게 글을 작성해봤습니다. 이 게시글에서는, 스프링 부트 프로젝트에서 API 호출을 할 때 사용하는 RestTemplate, WebClient, 그리고 Feign을 비교하고 간단한 예제 코드를 제공합니다. 본 글에서는 https://open.er-api.com/v6/latest에서 한국의 환율을 조회하는 방식으로 예제 코드를 작성했습니다. 1. RestTemplate RestTemplate는 스프링 프레임워크에서 HTTP 요청을 손쉽게 수행할 수 있는 도구입니다. RestTemplate은 동기식 호출을 사용하며, 아래에 예..
우리가 Spring을 사용하는 수 많은 이유중에 대표적인 장점을 꼽으라면 의존성 주입 컨테이너에 관한 내용을 빼놓을 수 없다. 스프링은 자바 빈을 찾아서 ApplicationContext라고 하는 의존성 주입 컨테이너 오브젝트에 등록을 한다. 그리고 애플리케이션이 돌다가 어떤 오브젝트가 필요하다면 의존하는 오브젝트를 찾아서 연결해준다. 그렇다면 스프링은 어떻게 자바 빈을 찾아가지고 의존성 주입 컨테이너에 등록하는걸까?? @Component 어노테이션으로 이 클래스를 자바 빈으로 등록하라고 알려줄 수 있다. 이번 포스팅에서는 이 @Component에 대해서 알아보려고 한다. @Component @Component 어노테이션을 붙이면 이 클래스를 자바 빈으로 등록시키라고 알려줄 수 있다. 해당 어노테이션이 ..