만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍 162

[vue] 스스로 만들어보는 To Do List - 1

vue.js 강의를 들었으니 스스로 만들어보자 우리 팀에서 사용하는 프론트엔드 프레임워크는 vue.js 다. 이 프레임워크를 이용해 모바일웹과 앱 뷰어를 통해, 우리 팀이 관리중인 영역에서의 사용자가 보는 화면을 만들고 있다. 나 또한, 이따금씩 들어오는 프로젝트들로 우리 팀의 vue 앱을 수정하거나 이해해야하는 일들이 생기고 있지만 vue를 제대로 다뤄본적 없는 내 입장에서 쉽지는 않았다. 하지만 조금만 시간을 들여서 이해한다면 충분히 그 데이터의 흐름이나 문법을 이해할 수 있을 정도로 vue는 백엔드 개발자에게 친절한 프레임워크였다. 그래도, 내가 직접 처음부터 시행착오를 겪어보는 것과, 이미 많은 개발자선배들이 구축해놓은 애플리케이션의 일부분을 건드리며 수정하는 것에는 큰 차이가 있다고 생각했다. ..

[HTTP] cookie 도메인 앞에 "." 이 포함되는 이유?

스프링 서버에서 요청에 대해 쿠키를 생성했더니 public void setCookie(HttpServletRequest request, HttpServletResponse response, String recommendationCode, int hour) { CookieManager cookieManager = new CookieManager(request, response); cookieManager.setMaxAge(hour * HOUR); cookieManager.setDomain(DOMAIN); cookieManager.setCookie(COOKIE_NAME, COOKIE_VALUE); } 웹 어플리케이션 서버를 개발하면서 위와 같이 쿠키를 생성해줘야 했었다. 그런데 final String DOM..

[Java] 정수 콤마 넣기 (천원 단위 변환, 금액 변환)

개발할 때, 금액을 보기 좋게 표현하려면 10000원 -> 10,000원으로 천원 단위마다 , (comma) 를 추가해줘야 할 때가 있다. 방법1 DecimalFormat 을 이용한다 DecimalFormat 은 NumberFormat의 서브클래스다. 십진법 숫자를 다양한 특징을 가진 숫자로 변환해주는 기능을 가지고 있다. 통화($100), 퍼센트(12%), 고정소수점 등 다양하게 숫자를 표현할 수 있다. 일반적으로 생성자를 호출하지 않고 factory method를 활용하는 것이 일반적이다. @Test void format_test() { int price = 125000; final String format = DecimalFormat.getInstance().format(price); Asserti..

[Spring] 어노테이션(annotation) 기반 bean 설정법

어노테이션 기반 설정 AppConfig.java 파일을 이용한 스프링 컨테이너 빈 주입 방법은 관리해야하는 빈 수가 적은 경우에만 적절하다. 애플리케이션에 빈이 너무 많으면 불필요하게 작성해야하는 중복되는 코드들이 너무 많아진다. 그래서 스프링은 어노테이션 기반의 설정을 제공한다. 훨씬 쉽게 관리가 가능하다. 두 가지 유형의 어노테이션을 제공한다. 빈 선언 어노테이션 @Repository @Controller @Service @Component 등의 스테레오 타입 어노테이션 세트를 제공한다. 스프링이 관리해야하는 클래스에 위 어노테이션을 적용한다. 스프링은 @ComponentScan 에 입력한 기본 패키지부터 스캔해서 위 어노테이션이 달린 클래스를 수집한다. @Component 는 제네틱 스테레오 타입이..

[intelliJ] Google Style guide intelliJ 적용법

코드 스타일 모든 개발자들이 진행하는 프로젝트들은 각자의 코드 스타일이 존재한다. 변수명은 camelCase 로 해야한다던지... PascalCase 로 해야한다던지... 들여쓰기 간격은 4회여야한다. 2회여야한다 등등 여러 사람이 협업하는 프로젝트에서 코드의 스타일 규칙은 중요하다. 이런 규칙을 만드는 사람이 일일이 정하긴 힘드니 주로 사용하는 것이 바로 'Google Style Guide' 이다. (https://github.com/google/styleguide) 구글이 정해놓은 스타일 가이드라인대로 개발을 하면 여러 명이 하나의 프로젝트를 개발하더라도 일관성있고 가시성이 좋은 코드의 모습이 나올 수 있을 거다. 내로라하는 똑똑한 분들이 정해놓은 규칙이니까. 적용법 그럼 이런 코드 스타일의 규약들을..

[Java] 문자열 붙이기에 반드시 StringBuilder 를 안해도 된다

서론 개발을 하다가 멘토님께 알게 된 사실을 정리한다. 사실 나는 문자열 붙이기를 할 때, '+' 를 활용하면 메모리 낭비가 너무 커질 수 있어 지양해야한다는 생각을 가지고 코드를 작성해왔다. 이 주제는 상당히 오래전부터 자바를 공부하는 우리 컴공생들에게 (면접질문 등으로) 자주 논의되던 이야기였다. 문자열 붙이기에 '+' 를 이용하지말아야한다는 근거 String 객체는 불변 객체이다. 즉 한번 객체가 생성되면 그 객체 내용을 변경하는건 불가능하다. 그래서 우리가 한 문자열을 다른 문자열과 합치게 되면 기존 문자열의 내용이 변하는게 아니라 새로운 문자열이 생성된다. 그리고 이제 참조되지않는 (아래 그림의 경우 "Hello") 문자열은 더이상 어느 코드에서도 참조되지않으므로 GC(Garbage Collec..

[OOP] 객체지향 설계 5원칙 : SOLID 디자인 원칙

로버트 C. 마틴의 '클린소프트웨어: 애자일 원칙과 패턴 그리고 실천 방법' 에서 소개됨. SRP 단일 책임 원칙 한 클래스는 변경에 대한 이유를 하나만 가져야 한다. 여기서 말하는 책임 은 변경을 위한 이유 즉 클래스를 변경할 때 클래스를 변경하기 위한 다른 이유를 생각할 수 있다면 이 클래스는 SRP 위반 다른 해석으로는 책임이 변경의 축이라는 것. 예시로 클래스를 토론방이라고 하자면, 한 방에서 축구,스키,하이킹,야구 등을 이야기하고 있는데 갑자기 누군가가 영화에 대해 이야기 하면서 주제가 '사람들이 좋아하는 영화, 영화 캐릭터, 명장면에 대한 토론' 을 시작한다면 이 토론방은 2개로 나누는 것이 낫다. (취미 / 영화) 즉 여기서 취미 가 변경의 축이다. 변경의 축은 변경이 일어날 때만 변경의 축..