목록2021/04 (8)
윤개발
정상처리 및 오류처리에 대한 API 서버 공통 응답 포맷을 개발해보도록 하겠습니다. 공통 포맷을 개발하면 아래와 같은 장점이 있습니다. Api 서버는 정상, 에러에 대한 응답의 포맷이 동일하며 어떠한 응답도 공통포맷 형태로 반환하면 됩니다. Api를 사용하는 클라이언트는 공통 포맷을 보고 정상응답, 에러를 구분할 수 있습니다. 1. 응답 포맷 요구사항 공통 응답에 대한 요구사항은 다음과 같습니다. 정상, 오류처리 모두 success 필드를 포함합니다. 정상처리라면 true, 오류처리라면 false 값을 출력합니다. 정상처리는 response 필드를 포함하고 error 필드는 null 입니다. 응답 데이터는 객체로 표현됩니다. 오류처리는 error 필드를 포함하고 response 필드는 null 입니다. ..
Java를 처음 접할때 배우는 메소드임에도 잘 모르고 쓰는 경우가 많은 Equals와 Hashcode에 대해서 알아보자. 두 메소드는 모든 객체의 부모인 Object 클래스에 구현되어있다. Objcect의 구현된 소스코드를 살펴보자. // Indicates whether some other object is "equal to" this one. public boolean equals(Object obj) { return (this == obj); } Object 클래스에 구현된 equals 클래스이다. 생각보다 코드가 단순하고 객체 자체가 같은지를 비교하는 코드이다. 다음은 hashcode이다. hashcode는 따로 작성된 코드가 없이 native라는 코드가 붙어있다. /** * Returns a ha..
스프링 시큐리티에 대해 제대로 알고 쓰기위해 공식문서를 쭉 읽어보았고 개발시에 알아야될 부분을 정리해보았습니다. docs.spring.io/spring-security/site/docs/5.4.6/reference/html5/#servlet-architecture Spring Security Reference In Spring Security 3.0, the codebase was sub-divided into separate jars which more clearly separate different functionality areas and third-party dependencies. If you use Maven to build your project, these are the modules yo..
이번에 진행하는 프로젝트의 요구사항이 다음과 같습니다. gitlab에 public으로 Markdown(이하 md) 업로드 - 로그인 없이 볼 수 있는 페이지여야함 Vue에서 gitlab markdown을 로딩하여 보여줌 - gitlab 페이지 호출 이렇게 진행하면 다음과 같은 장단점이 있습니다. 장점 html을 수정할 필요 없이 바라보는 gitlab md 파일만 수정하여도 운영환경에 반영(재배포가 필요없음) 프로젝트 초기 자주 수정될 수 있는 Guide, Faq등은 md로 간단하게 표현 가능 단점 gitlab(또는 github) 에서 md를 가져오므로 정적파일을 로딩하는 것보다는 시간이 조금 더 걸림 md를 이용하다 보니 style 적용은 힘듬 Vue에서 Markdown을 불러오며 단점을 극복하기 위해 ..
Gathering-bot 서비스를 개발하면서 성능에서 가장 크게 고민했던 부분에 대한 포스팅입니다. 1. 초기 설계 개발 전 Gathering-bot 서비스 데이터베이스 설계는 다음과 같습니다. 다른 테이블(사람, 배치등)과 일부 컬럼(생성한 사람, 응답시간등)은 주제와 연관이 없어 표기하지 않았습니다 시트는 1개 이상의 취합 항목을 가지고 있습니다. 취합 항목은 시트_id 를 FK로 가진다. 시트는 1개 이상의 응답을 가지고 있습니다. 응답은 시트_id 를 FK로 가진다. 응답은 1개 이상의 응답 항목을 가지고 있으며 시트의 취합항목에 대한 응답입니다. 응답 항목은 응답_id를 FK로 가지며 취합항목_id를 FK로 가진다. 2. 성능 이슈 고민 초기 데이터베이스 설계와 함께 JPA의 지연로딩을 사용하여..
🖐️ 프로젝트 개요 사내에서는 많은 취합 업무가 발생하며 주로 엑셀을 통해 작성하고 메일로 전달되어 통합된다. 메일로 이루어지기 때문에 취합담당자는 수많은 엑셀을 받아서 통합하는 과정이 필요하다. 우리 회사는 폐쇄망이므로 외부 인터넷이 불가능하다 즉 구글 설문조사, 공유문서 사용이 불가능하다 엑셀로 처리하는 취합업무를 빠르게 처리해보고자 프로젝트를 시작하게되었다. 🔎 조사 사내망에서 구글 설문조사, 구글 공유문서를 사용할 수 없음. 미응답자에게 다시 회신해달라는 리마인드 메일을 보내야하는 불편함, 제출 안한 사람의 이메일을 일일히 입력해줘야하는 귀찮음 응답하는 인원은 일을 미뤘다가 응답을 잊을 수도 있음. 수정 요청하는 경우에는 취합을 다시 반복해야함 🔥 프로젝트 내용 취합 담당자 로그인을 하고 시트를 ..
문제 주소 leetcode.com/problems/longest-substring-without-repeating-characters/ Longest Substring Without Repeating Characters - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 내용 Given a string s, find the length of the longest substring without repeating characters. 해설 문자열이 주어질 때 반복되..
Spring Security에 대해 학습하고 로그인, 사용자 관리 웹어플리케이션 개발한다. 프로젝트 개요 게시판을 만드는 프로젝트는 CRUD 기능을 구현하기 위한 기본이 되는 프로젝트라 할 수 있다. 이런 기본적인 게시판에 스프링 시큐리티를 적용해 살을 덧붙이고 싶다는 생각이 들었다. 게시판을 만드는 "구현"에 더해 게시판별로 권한을 처리한다. 또한 동시 접속 서비스 이용자가 1만명이라는 가정하에 "성능"의 측면에서 깊게 고민하며 개발할 예정이다. 구현 목표 구현목표는 아래와 같이 3가지로 정의하였다. 1. Spring Security를 이용하여 여러 방식으로 로그인을 구현한다. (Security 학습) Session JWT Token OAuth 2.0 (추후 예정) 2. 권한 그룹을 만들고 사용자를 관..