본문 바로가기

끄적끄적

(21)
[Tistory Skin] CERULEAN_BLUE 무료 배포 Tistory Skin CERULEAN_BLUE 무료 배포 블로그에 "개인적으로 한 프로젝트를 홍보할 방법이 없을까" 고민하던중, 광고 배너 형식으로 블로그를 만들어 홍보하면 좋겠다 라는 생각을 하게 되어 만든 스킨입니다. 아래 사진과 같이 Banner 영역에 자신이 홍보하고싶은것을 사진형식으로 넣을수 있습니다. 여러가지 Banner를 넣을 수 있으며, 자동으로 인식하여 스크롤 및 하단의 "몇번째 배너인지 알려주는 점" 이 증가하게 됩니다. 자신의 배너를 삽입하는 방법은 아래와 같습니다. 1. 블로그 관리의 스킨편집에 들어갑니다. 2. 'html편집' 버튼을 누릅니다. 3. html편집창을 클릭하고 ctrl+f를 눌러 검색창을 연 후, Banner-tag를 입력하여 다음 코드를 찾습니다. 4. 위 코드 ..
[CI/CD] Jenkins, Github webhook을 이용해서 CI/CD 구축하기 [CI/CD] Jenkins, Github webhook을 이용해서 CI/CD 구축하기 이번 포스팅에서는 Jenkins, Github webhook을 이용해 CI/CD를 구축 해보겠다. 흐름은 다음과 같다. 1. 클라이언트가 깃 브랜치에 커밋을 하고 pull-request를 보낸다. 2. 깃허브는 젠킨스에 web-hook을 날린다. 3. 젠킨스는 깃허브에서 프로젝트를 가져와 빌드하고 성공여부를 깃허브에 응답한다. 4. 깃허브는 브랜치에 빌드의 성공여부를 표현한다. 5. 클라이언트가 브랜치의 pull-request를 main으로 merge한다. 6. 깃허브는 젠킨스에 web-hook을 날린다. 7. 젠킨스는 빌드하고 성공했다면 파일을 production 서버로 보낸다. 위 과정을 그림으로 나타내면 아래와 ..
[Ubuntu] 라떼판다 오리지널에 Ubuntu 20.04 LTS 올리기 (16.04, 18.04도 가능) 라떼판다 오리지널에 Ubuntu 20.04 LTS 올리기 Ubuntu 16.04 LTS, Ubuntu 18.04 LTS, Ubuntu 20.04 LTS를 올리는 방법도 모두 이 글에서 함께 다룬다. *주의 라떼판다 공식 홈페이지에서 제공하는 라떼판다용 Ubuntu 이미지가 아닌 다른 이미지를 올릴경우 예상치못한 오류가 발생할 수 있습니다. 이 글에서 설명하는 방법또한 공식방법이 아니며 예상치 못한 오류가 발생할 수 있으며 해결법은 초기화 밖에 없으니 꼭 백업후 진행해주세요. 또한 글쓴이는 이 글로 인해 발생한 피해에 어떠한 책임도 지지않아요 :( 준비물 1. GUI 포기 - OS를 라떼판다 공식 Ubuntu16.04 LTS 이미지에서 업그레이드할 경우 GUI사용을 포기해야한다.(버그인것 같은데, 나는 O..
[끄적끄적] OAuth proxy 서버 인증 flow 설계과정 API서버에서 가입과정을 OAuth 애플리케이션에 전가하고, 인증과정으로 토큰 기반 인증을 채택했을때의 인증 flow 설계 과정을 적은 글입니다. 이 글이 유사한 상황에서 인증 과정을 설계하는 사람들에게 영감이 되어주면 좋겠습니다. 실제 인증 API는 https://api.gitofolio.com/restdocs 인증목차에서 확인할 수 있습니다. OAuth proxy 서버 인증 flow 설계 목차 - 인증 기술 선택 - 클라이언트측의 인증 과정과 redirect를 적용했을 경우의 문제점 - redirect포함 인증 flow 설계와 인증과정 탈취에 안전하게 설계하기 인증 기술 선택 토이프로젝트를 진행하면서 API서버에 인증과정을 구현해야했다. 인증 기술로는 2가지를 고려했는데, 1. 세션 - 쿠키 기반 인..
[Spring Boot] 404에러 핸들링과 .jsp .html 동시 사용 [Spring Boot] 404에러 핸들링과 .jsp .html 동시 사용 목차 - 상황 - 원인과 해결방법 -- ResourceHandler 등록 상황 api 서버 View단으로 jsp와 html을 동시에 사용해야했다. 이 를 위해 기본으로 jsp파일을 사용하도록 하고, ResourceHandler에 .html을 매핑해줬는데, DispatcherServlet에 404 에러 핸들링 설정을 추가하면서 ResourceHandler가 매핑되지 않고 html 파일을 불러오지못하는 문제가 발생했다. 원인과 해결법 Spring MVC는 우선, DispatcherServlet을 통해, 들어온 url과 매핑된 Handler를 찾고, 없다면, ResourceHandler를 통해 등록된 파일을 (직접) 찾는다. 기존에는 ..
[끄적끄적] HATEOAS AOP적용기 [끄적끄적] HATEOAS AOP적용기 토이플젝에 API유연성을 높이고자 HATEOAS를 적용하기로 했다. Hateoas를 AOP로 만들어서 사용하기로한 이유는 크게 다음과 같다. 1. HATEOAS적용은 특정한 코드에 종속적일 필요가없다. 2. HATEOAS의 적용은 특정한 위치에 지속적으로 반복되어서 나타난다. (예를 들어, Hateoas적용은 컨트롤러에서 사용자에게 응답하는 과정에서 반복적으로 일어난다.) + 이 당시 Spring Boot에 HATEOAS관련 라이브러리가 존재하는것을 몰라서 직접 구현했는데, 구현목적으로 이 글을 읽는 분이라면 Hateoas구현부분은 라이브러리로 대체하고, AOP를 적용하는부분만 읽는것을 추천한다. 실력있는 개발자가 지속적으로 버전관리를 해주기 때문에, 라이브러리를 ..
[끄적끄적] JpaRepository 접근 프록시 계층 설계 [회고] JpaRepository 접근 프록시 계층 설계 토이 프로젝트를 진행하며 맞닥뜨린 설계문제를 객체지향적으로 해결한 경험을 작성한 글 입니다. 위 그림상에서 proxy 부분에 해당하는 설계다. (아직 배포하지않은 프로젝트이기 때문에, 설계도내의 클래스 이름은 모두 A,B,C,D ... 로변경했습니다.) 문제상황 토이 프로젝트를 진행하다가, DB와 통신하는(정확히는 JpaRepository와 통신함) 서비스 객체의 프록시를 만들어야 하는 상황이였다. 우선, 기존의 문제되었던 소스코드 설계도를 보자. (쉽게 이해하기 위해, 이 글에 필요하지 않은 메소드들은 설계도상에서 모두 삭제했다.) 기존설계의 문제점은, 실제 코드상 에서 물리적으로 전혀 연관이 없는(연관이 있으면 안되는) 인터페이스 구현 클래스들..
[끄적끄적] SVG를 img태그로 불러올 경우 발생하는 문제와 해결 [끄적끄적] SVG를 img태그로 불러올 경우 발생하는 문제와 해결 프로젝트 진행중에 SVG에 관련된 기술적인 문제에 직면했다. 유저의 이미지 카드를 SVG형태로 만들어서 다른페이지에 삽입(예를들어, img태그를 사용해서)하는 서비스를 만들어야했는데, SVG를 태그로 불러올경우, SVG내부의 하이퍼링크로 불러오는 이미지가 동작하지 않았다. (하이퍼링크 뿐만아니라 자바스크립트도 동작하지 않는다.) (모종의 이유로 태그 사용이 강제되는 상황이여서 object나 embedded는 사용하지 못한다) 원인 보안적인 이유 때문에 로 불러온 하이퍼미디어 안의 는 적용되지 않는게 원인이였고, SVG관련 서비스를 프론트엔드에서 처리하는방식에서 백엔드로 바꿔, 서버에서 SVG의 모든 요소를 채워넣은 후, 클라이언트에게 전..