web

자바스크립트를 사용할 때는 딱히 변수의 타입을 고려하지 않고 코드를 작성해도 괜찮습니다. 그러나 개발자가 타입을 신경쓰지 않을 뿐이지. 실제로는 타입이 존재합니다. 타입은 타입이 결정되는 시점에 따라서 정적 타입과 동적 타입으로 분류됩니다. 정적 타입(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를 흔히 사용합니다. ..
API 호출은 대부분의 애플리케이션 개발에 기본이 되는 작업입니다. 실제로 업무에서 RestTemplate을 사용한 경험이 있는데요. 요새는 다른 방식도 이용한다고 해서 경험해볼 겸 이렇게 글을 작성해봤습니다. 이 게시글에서는, 스프링 부트 프로젝트에서 API 호출을 할 때 사용하는 RestTemplate, WebClient, 그리고 Feign을 비교하고 간단한 예제 코드를 제공합니다. 본 글에서는 https://open.er-api.com/v6/latest에서 한국의 환율을 조회하는 방식으로 예제 코드를 작성했습니다. 1. RestTemplate RestTemplate는 스프링 프레임워크에서 HTTP 요청을 손쉽게 수행할 수 있는 도구입니다. RestTemplate은 동기식 호출을 사용하며, 아래에 예..
우리가 Spring을 사용하는 수 많은 이유중에 대표적인 장점을 꼽으라면 의존성 주입 컨테이너에 관한 내용을 빼놓을 수 없다. 스프링은 자바 빈을 찾아서 ApplicationContext라고 하는 의존성 주입 컨테이너 오브젝트에 등록을 한다. 그리고 애플리케이션이 돌다가 어떤 오브젝트가 필요하다면 의존하는 오브젝트를 찾아서 연결해준다. 그렇다면 스프링은 어떻게 자바 빈을 찾아가지고 의존성 주입 컨테이너에 등록하는걸까?? @Component 어노테이션으로 이 클래스를 자바 빈으로 등록하라고 알려줄 수 있다. 이번 포스팅에서는 이 @Component에 대해서 알아보려고 한다. @Component @Component 어노테이션을 붙이면 이 클래스를 자바 빈으로 등록시키라고 알려줄 수 있다. 해당 어노테이션이 ..
개발자 친구랑 서로 어떤 업무를 하는지 대화를 나누다 보면 심심치 않게 들려오는 Spring batch. batch라는 단어를 생각해보면 병렬처리를 하거나 일괄처리를 할 것 같다는 느낌은 오는데 정확히 무엇인지 모르겠습니다. Spring batch를 언젠가는 쓸 날이 오겠지만, 당장은 쓸 일이 없다면 학습을 나중으로 미뤄두고 바로 적용이 가능하다면 조금 더 찾아보기로 결정했습니다. 그래서 오늘은 쓸 일의 여부를 장점으로 판단할 것이고 그것을 정리한 포스팅을 올립니다. Spring Batch 장점 글자 그대로 Spring Batch 장점이라고 검색을 하면 정말 놀랍게도 모두가 같은 장점을 적어주셨습니다. - 대용량 데이터 처리에 최적화되어 고성능 - 로깅, 통계처리, 트랜잭션 관리 등 재사용 가능한 필수 ..
컴퓨터를 포맷한 뒤로 그동안의 작업물들이 다 사라진 관계로 집에서는 프로그래밍을 하지 않았습니다. 어쩔 수 없이 github에 올라간 프로젝트들이라도 정리해보려고 했는데 위와 같은걸 찾아버렸어요. Todo : RESTful API 과거의 저는 방법을 알지 못하여 한참을 고민만 하다가 끝내 완성하지 못했나 봐요. 그런 과거를 위해 해답을 주려고 합니다. 목표 : 게시글 목록 전달 클라이언트쪽에서 요청이 오면 게시글 목록을 전달해주고 싶었습니다. 아래는 티스토리 게시글 목록 API 예시입니다. GET 요청을 보내면 JSON으로 데이터 목록을 쫘르륵 보내주고 싶었습니다. { "tistory": { "status": "200", "item": { "url": "http://oauth-test.tistory.co..
게시글이 한 줄로 1부터 100000개가 나열되면 불편하겠죠. 불편을 해결하기 위해 페이징 기능을 구현해봅시다. BoardController @GetMapping("/board/list") public String list(Model model, @PageableDefault(size = 5, sort = "id", direction = Sort.Direction.DESC) Pageable pageable) { List boardList = boardService.getBoardList(pageable); Integer[] pageList = boardService.getPageList(pageable); model.addAttribute("postList", boardList); model.addAtt..
moongomi
'web' 카테고리의 글 목록