
[Spring Boot] Jasypt으로 암호화 적용하기
2023. 3. 26. 20:02
Spring
개발 환경 - gradle version: 7.4.1 - spring boot version: 2.6.13 - 언어: Kotlin Spring Boot에 Jasypt library 적용 프로젝트에 Jayspt를 적용해 봅시다! Dependency 추가 Spring boot에서는 jasypt-spring-boot-starter(maven repository 링크)를 사용하고 있습니다. gradle을 사용하고 있으니 맞는 녀석을 가져옵니다. // https://mvnrepository.com/artifact/com.github.ulisesbocchio/jasypt-spring-boot-starter implementation 'com.github.ulisesbocchio:jasypt-spring-boot-s..

소프트웨어 프로젝트 생존전략 4장 :: 생존 기술
2023. 1. 1. 23:55
그리고
계획 소프트웨어 개발에서 성공이란, 세심한 계획에 따른 작은 실수를 통해 계획되지 않은 큰 실수를 얼마나 피할 수 있는 지에 의해 결정된다. 예를 들어, 네 개의 설계 대안을 준비한 후에 최선의 선택을 했다면 추후에 세 번이나 재코딩 하는 것을 피한 것이다. 잘 세워진 계획이란 잘 세웠다고 하는 프로젝트 계획은 다음과 같은 특징을 지닌다. 1. 소프트웨어 개발 계획(Software Development Plan) : 프로젝트의 추진 방향을 설정. 계획을 문서화 시킴으로써 관계자들이 프로젝트 수행 기간 동안 언제든지 문서 참조 2. 프로젝트 추정(project estimates) : 예측을 꼼꼼히 하여 프로젝트의 범위를 적절히 선정. 부실한 예측은 프로젝트의 예산, 인력, 일정 등 모든 면을 무리(unde..

[Github] git-crypt 적용하기
2022. 12. 25. 18:22
그리고/Github
git-crypt 란? (git-crypt repository README.md 번역) git-crypt는 git 저장소에 있는 파일의 투명한 암호화 및 암호 해독을 가능하게 합니다. 보호하기로 선택한 파일은 커밋 시 암호화되고 체크아웃 시 해독됩니다. git-crypt를 사용하면 공개 및 비공개 콘텐츠가 혼합된 저장소를 자유롭게 공유할 수 있습니다. git-crypt는 정상적으로 저하되므로 비밀 키가 없는 개발자는 여전히 암호화된 파일이 있는 저장소를 복제하고 커밋할 수 있습니다. 이렇게 하면 전체 리포지토리를 잠그지 않고도 코드와 동일한 리포지토리에 비밀 자료(예: 키 또는 암호)를 저장할 수 있습니다. Environment OS: MAC 에디터: VSCode git-crypt 사용하기 git-cry..

소프트웨어 프로젝트 생존전략 3장 :: 생존의 개념
2022. 12. 1. 23:36
그리고
2장은 체크리스트로 이루어져있어서 스킵~! 이번 장을 통해 소프트웨어 개발을 성공시키는 데 결정적인 요소들이 무엇인지 알아보자! '프로세스'의 힘 필자가 생각하는 '소프트웨어 프로세스'의 의미는 아래와 같다. - 모든 요구사항에 대하여 문서화를 보장하는 것 - 요구사항에 대한 추가와 변경을 통제하기 위하여 체계적(systematic)인 절차(process)를 적요하는 것 - 모든 요구사항, 설계, 소스코드를 체계적으로 테크니컬 리뷰(technical review)하는 것 - 테스트 계획, 리뷰 계획, 결함 추적 계획 등을 포함하는 체계적인 품질 보증 계획(QAP)을 수립하는 것 - 소프트웨어의 컴포넌트(functional component)를 개발하고 통합하는 순서가 명시된 구현 계획을 수립하는 것 - ..

Unit Testing 2-1장 :: '단위 테스트'의 정의
2022. 11. 7. 23:55
Testing
단위 테스트 해석의 차이가 생겼고, 단위 테스트에 접근하는 방법이 두 가지의 견해로 나뉘었다. 그것은 바로 고전파(Classical school)와 런던파(London school)이다. 단위 테스트에는 많은 정의가 있지만, 가장 중요한 속성이 있다. - 작은 코드 조각(단위라고도 함)을 검증하고, - 빠르게 수행하고, - 격리된 방식으로 처리하는 자동화된 테스트다. 세 가지 중 가장 의견이 갈린 것은 세 번째 속성이다. 두 분파간의 모든 차이는 격리가 정확히 무엇인지에 대한 의견 차이 하나로 시작했다. 격리 문제에 대한 런던파의 접근 런던파에서는 하나의 클래스가 다른 클래스 또는 여러 클래스에 의존하면 이 모든 의존성을 테스트 대역(test double)으로 대체한다. 동작을 외부 영향과 분리해서 테스..

Unit Testing 1장 :: 단위 테스트의 목표
2022. 11. 2. 23:58
Testing
단위 테스트 현황 지난 20년간 단위 테스트를 적용할 것을 독려하는 분위기가 자리 잡았다. 모든 새로운 기술과 마찬가지로 단위 테스트도 계속 발전하고 있다. 논쟁은 '단위 테스트를 작성해야 하는가?'에서 '좋은 단위 테스트를 작성하는 것은 어떤 의미인가?'로 바뀌었다. 이는 여전히 매우 혼란스럽다. 많은 프로젝트에 자동화된 테스트가 있고, 심지어 테스트도 많다. 그러나 테스트가 있어도 개발자들이 원하는 결과를 얻지 못하는 경우가 많다. 단위 테스트는 도움을 약속했으나 상황을 더 나쁘게 할 수 있다. 따라서 어떤 것이 단위 테스트를 좋게 만드는지에 대한 논쟁은 매우 중요하다. 단위 테스트의 목표 단위 테스트와 코드 설계의 관계 코드 조각을 단위 테스트하는 것은 훌륭한 리트머스 시험이지만, 한 방향으로만 작..

[Github] GPG Key Github에 적용하기
2022. 10. 25. 22:57
그리고/Github
자, 이제 GPG Key를 Github에 적용해보자! GPG Key를 확인하자 이전 포스팅에서 복사한 키 값을 가지고 public key를 확인한다. gpg --armor --export [GPG Key ID] 위 커맨드를 실행시키면 아래와 같이 키를 볼 수 있다. -----BEGIN PGP PUBLIC KEY BLOCK----- ... -----END PGP PUBLIC KEY BLOCK----- Github에 GPG Key 적용하기 Github에 들어가서 Settings를 들어가자! 아래 이미지를 차근차근 따라가보자. 이제 아까 확인한 GPG Key를 넣어주고 인증을 하면 GPG Key가 성공적으로 Github에 등록된다! 레퍼런스 Github에서 제공하는 가이드 문서

[Github] GPG Key 생성하기
2022. 10. 21. 23:51
그리고/Github
GPG Key를 생성해보자! 1. 우선 GPG command line tools 를 다운받는다. 링크 클릭! Github에서는 최신 버전을 다운받는 것을 권장한다. 맥은 dmg 파일을 통해 설치한다. 2. 이제 Terminal을 키고 key를 생성해 준다. 2.1.17 이후 버전이라면 아래 커맨드를 통해 키를 생성할 수 있다. gpg --full-generate-key 3. 키를 생성할 때 설정이 필요하다. - key 종류 - key size - 이름, 이메일, 코멘트 ~ gpg --full-generate-key gpg (GnuPG/MacGPG2) 2.2.34; Copyright (C) 2022 g10 Code GmbH This is free software: you are free to cha..

[소프트웨어 프로젝트 생존 전략] 1장 - 살아남기 위한 방법
2022. 10. 20. 08:32
그리고
고품질의 제품을 효과적인 일정으로 적절한 비용에 맞춰 개발하기 위해서 목표들(최단 기간, 최저 비용, 최고의 품질 등)이 서로 균형을 이루어야 한다. 생존의 욕구 소프트웨어 프로젝트에서 성공하기 위한 첫 걸음은 성공이냐 실패냐의 문제가 아니고, 더 근본적인 '생존'의 필요성을 인식하는 것이 중요하다. 매슬로우는 인간은 하위 동기 요인에서 상위 동기 요인으로 자연스럽게 진행되는 욕구 단계에 반응하는 것을 발견했다. 여기서 하위 동기, 상위 동기가 무엇일까? 예를 들어 아래처럼 상하의 단계를 구분할 수 있다. ex. 프로젝트 팀은 계획된 일정과 예산의 10퍼센트 오차 범위에서 프로젝트를 달성 ➡️ 상위 단계 해당 프로젝트를 우선 시간 안에 납품 ➡️ 하위 단계 단계 피라미드는 아래와 같다. 생존권 힘겹게 진..

[Github] PR merge 후 자동으로 branch 제거하기
2022. 10. 19. 06:49
그리고/Github
Github PR 동작 방식 Git은 일반적으로 Pull Requests를 통해 수정사항을 main branch에 반영한 후, 작업 중이던 branch를 제거하는 방식으로 사용한다. 그래서 PR 반영 후에는 아래와 같이 하단에 작업 중이던 branch를 지울 것인지 물어본다. 하지만, 가끔씩 remote branch를 지우지 않고, local branch만 지워서 remote branch의 수가 엄청나게 늘어나는 경우가 있다. 이를 방지하기 위해서, Github에서 PR merge 후에 branch를 자동으로 제거해주는 기능을 제공하고 있다. Github 설정하기 해당 기능은 repository마다 설정을 해줘야 한다. Repository 상단의 메뉴에서 맨 오른쪽에 Settings를 진입한다. 그리고 ..

Effective Java 9. try-with-resources를 사용하자
2022. 10. 4. 23:36
Java/Effective Java
try-finally 전통적으로 자원이 제대로 닫힘을 보장하기 위해서는 try-finally가 쓰였다. 하지만 해당 방식은 아래와 같이 두 가지 문제점이 있다. 문제점 자원이 많아질 수록 try 중첩문이 발생하여 복잡해진다. 아래 예시에서 try 문에서 exception 이 발생할 경우, finally 문에서도 exception 이 발생한다. 그럼 finally 문의 로그만 남아 실제로 try 문에서 난 에러는 surpressed 되며, 디버깅하기가 힘들어진다. try { return br.readLine(); } finally { br.close(); } 실제고, 2007년 당시 자바 라이브러리에서 close 를 제대로 구현한 비율은 3분의 1정도라고 한다. try-with-resources 이에 대한..

[Spring] Gradle 버전 업그레이드(7.5.1) 버전업 분투기
2022. 9. 28. 23:25
Spring
gradle 버전을 4.5.1에서 7.5.1로 업그레이드를 해보며 혹시 몰라 분노하며 정리를 해둔다. 나중에 또 버전업을 할 때에 중복되는 에러가 있으면 참고해야지. 그리고 다른 에러가 있으면 또 분노하며 정리해버려야지. 무작정 gradle-wrapper.properties를 7.5.1로 수정해본다 BEFORE #Mon Mar 11 17:40:53 KST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-4.5.1..