| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 카카오인증토큰받기
- 카카오인가코드받기
- 백엔드 로드맵
- input
- MIND 2023 #후기
- 어떤 개발자?
- Spring API
- html
- 인스턴스
- 제로베이스
- Docker
- Interface
- form
- Java
- 엔티티 매니저
- 백엔드공부
- jenkins
- static
- ci/cd
- button
- spring
- GitHub_Actions
- 상속
- 예외
- 백엔드스쿨
- tag
- oAuth2
- 엔티티 생명주기
- feignClient
- 카카오사용자정보가져오기
- Today
- Total
목록분류 전체보기 (86)
HiDevelop
근래 개발을 하다가, CSRF 공격에 대해 공부할 기회가 생겨, 공부한 것을 토대로 내용을 공유하고자 한다Cookie의 동작 원리브라우저는 서버로 요청을 보낼 때, 요청 목적지 도메인에 해당하는 쿠키를 자동으로 포함해서 전송한다.이 과정은 개발자가 직접 제어하지 않아도 브라우저 레벨에서 자동으로 처리된다.중요한 점은 다음이다.사용자가 직접 버튼을 눌렀는지다른 사이트에서 요청이 시작됐는지이 여부와 무관하게,요청 URL의 도메인이 쿠키 도메인과 일치하면 쿠키는 자동으로 전송된다.Cookie의 특징1. 같은 도메인이면 쿠키를 공유한다예를 들어 bank.com에서 로그인하면 인증 정보가 쿠키에 저장된다.이 상태에서 사용자가 악성 사이트에 접속했다고 가정해보자.그 사이트 내부에 다음과 같은 요청이 숨어 있다면:브..
최근 회사에서 spring Boot 3.4로 버전업을 올리면서 테스트 코드가 꽤 많이 깨졌다.그 과정에서 그동안 당연하게 쓰던 Mockito 패턴들이 사실은 정확히 이해되지 않은 채 사용되고 있었다는 걸 알게 됐다.특히 아래 두 가지가 가장 헷갈렸다.Mockito는 어떤 기준으로 Mock을 주입하는가?사실 @InjectMocks 없이 테스트하는 게 더 좋은 구조 아닌가?@InjectMocks, @Mock, @Spy 그리고 테스트 설계 기준정리해보면 테스트 코드뿐 아니라 서비스 설계 방식까지 같이 돌아보게 되는 포인트였고, GPT 선생님께 혼나면서 얻은 지식들을 정리하고자 한다.1. Mockito의 주입 우선순위Mockito에서 @InjectMocks를 사용하면테스트 클래스에 선언된 @Mock, @Spy들..
GitHub_Action GitHub Actions은 마치 자동차 자동 조립라인처럼 소프트웨어 배포 과정을 자동화하는 도구이다. 소프트웨어를 배포하고 운영하는 과정에서 여러 작업을 수행해서 코드를 테스트하고 배포까지 해줄 수 있다. 어렵게 생각할 필요 없이, 자동차가 만들어지면, 그것을 원하는 고객한테 가기전, 자동차의 테스트를 진행하고 고객의 위치까지 자동으로 배달되어진다고 생각하면 된다. GitHub_Action과 같이 자동으로 배포와 테스트를 해주는 도구들 CI/CD TOOL이라고 부른다. GitHub_Action 친구들로는(CI/CD TOOL 제품들) Jenkins, AWS CodePipeline 등등이 있다. GitHub_Action의 핵심 개념 Event -> 코드 변경, 풀 요청, 배포 등 ..
구글에게 물어보면 HashTable은 아래와 같이 답변해준다. "해시 테이블은 key : value로 데이터를 저장하는 자료구조 중 하나로 데이터를 빠르게 검색할 수 있는 자료구조 " 해시 테이블은 왜 데이터를 빠르게 검색할 수 있을까? 라는 의문이 들었다. 이에 대하여 물어보면, - 내부적으로 배열( 버킷 )을 사용하여 데이터를 저장하기 때문 - 해시함수를 사용해 각각의 Key값에 해시함수를 적용해 배열의 고유한 Index로 활용하기 때문 그럼 버킷과 해시함수는 뭐야? 일단 그림을 통해 이해해보면 쉽다. 그림으로 보아하니, - 해시함수는 John Smith라는 키를 "2"라는 버켓의 인덱스로 바꿔주는 함수 - 버켓은 데이터가 저장되는 배열 그럼 해시 테이블은 데이터를 어떻게 저장하고 조회하는가? 일련..
Fork한 레포에 지속적으로 contribution 해야해서, 최신화 하는 방법에 대해 기록할려고 합니다. 1. 원본 repository를 remote repository에 추가하기 git remote -v 위 명령어를 통해 현재 remote로 등록되어있는 repository를 확인한다. 대부분 아래와 같이 origin이 뜰 것입니다. origin https://github.com/~~~~~~~/dasdsqwerapi.git (fetch) origin https://github.com/~~~~~~~/dasdsqwerapi.git (push) 현재 remote repository에 연결되어있는 repo들 입니다.(보통은 자신의 github repo입니다.) 원본 repository를 remote repo에..
2023년의 마지막 달의 중순에 접어 들었다. 올해를 마무리하면서, 인턴 기간동안 겪었던 이야기들을 정리해볼까 한다. 인턴의 시작 2023년 하반기 대학교에서 진행하는 장기현장실습(IPP)로 신재생에너지 모니터링 어플리케이션을 서비스하는 회사로 입사하게되었다. 입사 첫 당시 간단한 게시판 만들기 프로젝트를 만들고, 개발 팀장님과 면담을 진행헀다. 면담내용은 ERD 설계, 어플리케이션 서버 구현/운영 경험(당연힌 구현경험은 있지만, 운영경험은 없었다..ㅠ), 배포 등 서버를 구현하는데 필요했던 기술들에 대해 물어보셨다. 나는 내가 아는 선에서 배포했던 방식과 어떤 식으로 구현했는지에 말씀 드렸다. 이야기를 들으시고는 , 현재 회사는 주로 정부에서 주는 신재생에너지 사업을 맡아서 하는 회사였는데, 이번에 민..
인턴 기간중에 새로운 프로젝트의 무중단 배포환경을 구축하여, 이에 대해 기록하고자 남기는 공간입니다 🥹 환경 - Amazone Linux2 (EC2) 무중단 배포란 무엇일까요..? 어플리케이션을 배포 과정을 자동화하여 어플리케이션을 지속적으로 업데이트하고 배포하는 방법으로 서비스가 중단되지 않고 배포되는 환경을 말합니다. 무중단 배포환경에 대한 방법론 무중단 배포환경에는 크게 3가지의 방법이 있습니다. 롤링 무중단 배포 새롭게 어플리케이샨을 업데이트 할 때, 서버 클러스터의 여러 인스턴스에 순차적으로 배포하여 전체 서비스 중단을 최소화하는 배포방식입니다. 새로운 버전을 전체 시스템에 동시에 배포하는 대신, 클러스터의 일부 노드나 인스턴스에 먼저 배포하는 방식으로, 이를 통해 전체 서비스의 중단없이 일부 ..
이번 포스팅은 인턴 기간 동안 맡은 프로젝트의 ci/cd를 구축하고 이를 팀원들에게 공유하기 전, 지식과 기술을 다듬기 위한 포스팅입니다. 앞 포스팅에서 docker를 활용해 jenkins를 구축하는 포스팅이 있으니 관심이 있으신 분은 참고해주세요!! 😃 Jenkins와 Docker를 이용한 CI/CD - 1편 Jenkins와 Docker를 이용한 CI/CD - 1편 인턴 기간 중 맡은 프로젝트에서 CI/CD를 구축하고 이를 팀원들에게 공유하기 전, 스스로 개념과 과정을 익히고자 블로그에 관련 글을 포스팅 하고자 합니다😃 CI/CD 구축을 위한 환경 제가 구축 hidevelop.tistory.com 1. Jenkins 필요 라이브러리 설치 Plugin Manager에 접속하여 필요한 플러그인들을 설치한다..
인턴 기간 중 맡은 프로젝트에서 CI/CD를 구축하고 이를 팀원들에게 공유하기 전, 스스로 개념과 과정을 익히고자 블로그에 관련 글을 포스팅 하고자 합니다😃 CI/CD 구축을 위한 환경 제가 구축하려는 시스템 아키텍쳐입니다. 환경은 bitbucket과 AWS Ec2 환경에서 진행하였습니다. 1. Dokcer 설치(Jenkins 서버/CI 서버) CI Server에서 다음과 같이 Docker를 설치해줍니다. // 모든 패키지 업데이트 $sudo yum update -y // Dokcer 설치 $sudo yum install docker -y 위 명령어를 통해 Docker를 설치하셨다면 //docker 버전 확인 $docker -v 버전을 확인해 docker가 잘 설치되어있는 지 확인해주세요! 그 후에 do..
이번 인턴으로 맡게 된 프로젝트의 CI/CD 서버를 구축하고, 팀원들에게 구축에 대한 환경을 공유하기로 하여, 그 전에 블로그를 통해 개념을 정리하고자 합니다.🥹 CI/CD 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프 사이클 전체에 걸쳐 지속적인 자동화와 모니터링을 제공 CI(Continuous Integration) 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미 애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 '공유'(develop branch) 레포지토리에 병합 여러 명의..