목록전체 글 (49)
세상에 나쁜 코드는 없다
ScouterScouter는 APM(Application Performance Management) 소프트웨어로 서버의 성능을 모니터링 하기위한 도구이다.오픈소스여서 무료로 사용할 수 있다.ConceptScouter Server (Collector)모니터링할 데이터를 수집하는 서버이며, 데이터는 자체 제작된 내부 DB에 저장된다.Scouter AgentScouter Agent에는 Host Agent와 Java Agent가 있다.Host Agent : CPU, MEMORY, DISK 의 데이터를 전달한다.Java Agent : Heaps, TPS, Response time, Service Profile 등의 데이터를 전달한다.Scouter Client스카우터 서버에 접속하여 수집된 정보를 확인할 수 있는 ..
application.yml 파일 분리하기Spring Boot에서는 application-{profile}.yml 와같은 포맷으로 application.yml 파일을 분리하여 빌드 시 특정 profile에 대한 파일이 적용되게 할 수 있다.각각의 profile에는 별도의 포트를 지정해 주어서 추후에 한 서버에서 dev와 prod 프로그램이 동시에 실행될 수 있게 했다.dev 환경에서는 더미데이터가 존재하는 개발용 DB와 연결되게 하였고, prod에는 실제 운영할때 사용할 DB에 연결하게 하였다.각각의 yml 파일에는 env라는 변수를 놓고 local, dev, prod라는 값을 주어 프로그램 내에서 환경에 대한 값을 사용할 수 있게 하였다. 이후 build.gradle 에 다음과 같은 코드를 통해 gra..
요구사항 다음 4개의 도메인에 ssl 인증을 통한 https 접속이 될 수 있게 해야 한다.www.dev.dongaribang.shopdev.dongaribang.shopwww.prod.dongaribang.shopprod.dongaribang.shop만약 http로 접속이 오는 경우, https 로 리다이렉트 해야 한다.해결리버스 프록시 서버 세팅nginx 설정 파일을 작성해 주었다. certbot은 지금 생성한 설정 파일들 중 알맞은 domain name 을 가진 파일을 찾아 https 에 대한 설정을 추가해준다.nginx 설정 파일이 들어갈 위치는 /etc/nginx/conf.d/ 이다.sudo vi /etc/nginx/dev.dongaribang.shop ## 이후 아래 작성 server { li..
정의 회문(Palindrome)은 똑바로 읽어도 거꾸로 읽어도 같은 문자열을 의미한다.ex. 기러기, 토마토, 스위스, 인도인, 별똥별 … 회문 판별 알고리즘 회문 판별을 위한 가장 직관적인 방법은 첫 문자와 끝 문자부터 시작하여 안쪽으로 차례차례 비교하는 것이다. bool isPalindrome(string s) { int size = s.size(); for(int i = 0; i< size/2; i++) { if(s[i] != s[size-1-i]) return false; } return true; }이 경우 문자열이 회문인 경우 N/2 번의 반복문이 실행되므로 O(N)O(N)O(N) 의 시간복잡도를 갖는다. 부분 문자열 회문 찾기 알고리즘 주어진 문자열이 있을 때, 부분 문자열 중 회문인 문자..
0. Intro 저는 기억력이 좋지 않아서, 과거의 일들을 금방 까먹고는 합니다. 그렇게 살다가 문득 과거의 어떤 한 경험이 생각날 때면, 그것에 관련된 좋았던 기억들이 연쇄적으로 떠오르고 괜시리 기분이 좋아지곤 합니다. 하지만 동시에 내가 이런 것도 잊고 살아왔구나라는 생각도 들면서 잊혀져가는 과거 기억들이 아쉽게 느껴집니다. 살면서 간직해두고싶은 소중한 추억들은 많은 반면 애석하게도 뇌는 모든것을 다 기억하지는 못합니다. 이러한 이유로 일기를 작성하는 것이란 중요한 일입니다. 그렇지만 일기를 매일 쓰는 것은 저에게 있어서는 어려운 일인 것 같습니다. 따라서 앞으로 분기, 더 길게는 반기 단위로 어떤 일들이 있었는지 기록하는 글을 써보고자 합니다. 이 글이 추후에 저에게 있어서 과거의 추억들을 떠올리게..
0.인트로0.1 소개 이 글은 웹 프론트엔드 개발자에게 “내가 작성한 코드가 어떻게 서버의 코드와 상호작용하여 사용자에게 전달되는가”를 설명하려는 목적으로 작성되었습니다. 글은 웹 프론트엔드 개발 입문자와, 프론트엔드 지식을 어느정도 갖고 있으면서 백엔드에 입문하고자 하시는 분들을 대상으로 작성되었습니다. 입문자를 기준으로 작성하였으므로 아는 분야의 지식이 나온다면 넘어가면서 읽으셔도 무방합니다.글의 내용이 스프링부트에 의존하고 있습니다. 그럼에도 불구하고 최대한 일반적인 내용을 담을 수 있도록 해보겠습니다.잘못된 내용이 있을 수 있습니다.추가로, 거의 동일한 주제로 올라온 유튜브 영상이 있으니 참고하시면 도움이 될 것 같습니다.웹 프론트엔드 개발자가 알아야할 최소한의 백엔드 지식과 코드 (API)htt..
에러코드가 필요한 이유개발 단계에서 서버에 요청을 보냈을 때 서버에서 “Oops, something went wrong” 따위의 오류 메시지를 반환한다면 Client의 문제인지 Server의 문제인지 알 기 어렵다. 따라서 Server 는 Client의 요청에 대해 구체적인 에러 메시지를 전달해 줄 필요가 있다.장점HTTP Status code 만으로 Response에 대한 충분한 설명을 할 수 없다.더욱 구체적인 에러 내용을 정의하여 소통할 수 있다.오류 메시지는 API 사용 방법에 대한 가시성을 제공하는 핵심 도구가 된다.클라이언트단에서 에러 코드에 따라 다른 처리 로직을 개발할 수 있다.HTTP status code만으로 모든 예외처리를 할 수 없다.따라서 status code와 응답의 messag..
OSBC 오픈소스 컨퍼런스는 OSBC가 주최하고 한국공개소프트웨어협회(KOSSA), 한국사내변호사회(KICA)가 후원하는 무료 행사다. 원래는 기업 재직자를 우선하여 등록하지만, 이번에 아마 자리가 남았는지 개인자격으로 등록되어 컨퍼런스에 참여하게 되었다. 당연히 안될줄 알았는데 갑자기 참가하게 되어서 기쁨 반 두려움 반이었다. 평소 오픈소스에 대해 지식이 부족했던터라 사전조사 같은 느낌으로 다양한 영상을 찾아보았다. OSBC 유튜브 공식 채널에서 Snyk 사용법도 익혀보고, 유튜브에서 각종 오픈소스 관련 영상을 찾아봤다. 처음 영상을 봤을 땐 익숙하지 않은 단어들도 많이 나와 단어 하나하나 찾아가면서 보느라 조금 고생했다. 컨퍼런스는 선정릉역의 더 라움 아트센터에서 진행됐다. 더 라움 3층에 도착하자마..
https://snyk.io/ Snyk | Developer security | Develop fast. Stay secure. Snyk helps software-driven businesses develop fast and stay secure. Continuously find and fix vulnerabilities for npm, Maven, NuGet, RubyGems, PyPI and more. snyk.io Snyk은 프로젝트의 코드와 의존하는 외부 라이브러리 등에서 자동으로 보안 취약점을 찾아주고, 그에 대한 해결책을 제공해주는 서비스이다. 개발자 친화적인 소프트웨어를 개발하기 위해 Synk 는 제공하는 서비스를 자체 웹사이트 뿐만아니라 다양한 IDE 환경, 자체 API, CLI에서도 사..
Generics 지네릭스 Generics 란 ? 지네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크(compile-time type check)를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하면 객체의 타입 안정성을 높일 수 있고 형변환의 번거로움을 줄일 수 있다. 객체의 타입 안정성을 높인다 의도치 않은 타입의 객체가 저장되는 것을 막는다. 원래 의도와 다르게 잘못 형변환되는 경우를 막는다. 형변환의 번거로움을 줄인다 컬렉션 클래스의 경우 보통 한 종류의 객체만을 담는 경우가 많은데, 그럼에도 불구하고 꺼낼 때마다 타입체크를 해야하고 형변환을 하는 것은 불편하다. // 지네릭스가 사용되지 않는다면.. Class ArrayList { private Object a..