본문 바로가기

분류 전체보기

Spring Boot 개발 중 자주 하는 실수 모음 안녕하세요. 유저인사이트 박태양입니다. 코드리뷰를 하다보면 제가 신입시절에 했던 실수들을, 실습생 혹은 다른 개발자도 반복하고 있었습니다. 주니어 개발자분들에게 조금이나마 도움이되고자, Spring Boot 개발 중 자주 하는 실수들을 정리해보았습니다. 1. @NotNull @NonNull import javax.validation.constraints.NotNull; 엔티티나 DTO 필드의 Validation에 주로 사용됩니다. import lombok.NonNull; null이 입력되면 NPE를 발생시킵니다. 생성자를 통한 의존성 주입 시 주로 사용됩니다. 보통 IntelliJ의 자동완성 기능을 사용하다가 발생하는 실수입니다. 2. @NotNull @NotEmpty @NotBlank @NotNull ..
MariaDB Trigger 추가할 때 SQL syntax 에러 해결 Spring Boot 에서 .sql 파일로 Trigger를 추가하는데 문제가 발생했습니다. 아래는 발생했던 Trigger 추가 예시입니다. DROP TRIGGER IF EXISTS {트리거명}; DELIMITER | CREATE TRIGGER {트리거명} AFTER INSERT ON {테이블} FOR EACH ROW BEGIN UPDATE {대상테이블} SET {A} = {B} WHERE {C} = {D}; END; | DELIMITER ; Trigger 문에서 세미콜론을 사용하기 위해 미리 구분자를 | 로 변경 하고, 구문을 마무리 한 후 다시 구분자를 세미콜론으로 지정했습니다. 그런 후 테스트를 위해 추가하려는데 You have an error in your SQL syntax; check the m..
Github Actions을 통한 Docker이미지 자동 배포 안녕하세요. 유저인사이트 이현준입니다. 이번 시간에는 Github의 Actions기능을 사용하여 프로젝트의 Docker이미지를 자동으로 생성하고 배포하는 작업을 해보려고 합니다. 목차 1. Github Actions란? 2. Workflow란? 3. Workflow 정의 4. Workflow 동작 확인 1. Github Actions란? Github Actions은 Github에서 제공하는 CI/CD서비스 입니다. CI (Continuous Integration, 지속 통합)란 소프트웨어 개발 단계의 병합을 자동화 하는 것을 말하며, CD(Continuous Deployment, 지속 배포)는 개발한 소프트웨어를 자동으로 배포하는 것을 말합니다. Github Actions을 사용하면 Github에 등록된..
Svelte로 웹 개발을 간소화하기 안녕하세요 유저인사이트 박준호입니다. 이번에는 Svelte를 주제로 선정했는데요. 이전부터 Svelte에 대해 조금 관심을 가지고 있었던 차에 SvelteKit 1.0.0 버전이 출시되어 이참에 공부하고, 사용해 보고자 이렇게 준비하게 되었습니다. 그리고 본문에 앞서 Svelte는 따지고 보면 프레임워크가 아닌 컴파일러라고 합니다. 이에 대한 내용은 밑에 서술하겠지만, 이 글에서는 프레임워크라고 지칭하겠습니다. Svelte의 장단점 장점 1. 처리 속도가 뛰어나다. Svelte의 가장 큰 장점으로 꼽히는 부분입니다. Svelte 공식 사이트에서 말하듯이 Vanilla JS를 기반으로 하고 있어 속도는 JS 급이고, 리액트와 여타 프레임워크들과는 달리 가상 DOM을 사용하지 않아 확연한 속도 차이를 보여줍..
실무에서 사용하는 Spring Security Configuration 안녕하세요. 유저인사이트 박태양입니다. 저희는 신규 프로젝트를 시작할때, SecurityConfig라는 클래스 안에 여러가지 보안 관련 코드를 구현합니다. 초기에 잘 작성된 코드이기에 특별한 수정 없이 사용하였지만, 간혹 해당 프로젝트에는 필요없는 코드도 섞여들어가는 경우도 있었습니다. Spring Security 버전이 변경되면서, 이번 기회에 보안 관련 코드를 정리하는 시간을 가져보았습니다. 목차 WebSecurityConfigureAdapter (deprecated) WebSecurity vs HttpSecurity HttpSecurity의 다양한 옵션들 1. WebSecurityConfigureAdapter (deprecated) 기존에는 WebSecurityConfigureAdapter를 상속받..
GPS 데이터와 좌표계에 대한 문제 해결 과정 안녕하세요 유저인사이트 박준호 선임입니다. 저는 이번에 GPS 데이터와 관련된 개발을 진행했는데, 개발하며 겪었던 문제들과 해결 과정들을 공유하고자 주제를 선정하였습니다. GPS 표현 방식 먼저 GPS 데이터를 표현하는 방법에는 3가지가 있습니다. 1. GPS Data (3547.1282, 12707.2816) 2. 10진수 (35.35821, 127.58165) 3. 도분초 (35º21'14.34'' 127º26'17.97'') 3번 도분초는 개발 과정에서 사용하지 않으므로 따로 언급하지 않고 넘어가도록 하겠습니다. GPS 기기로 데이터를 측정을 하게되면 첫 번째 형태의 데이터를 얻게 됩니다. 실제로는 NMEA 형식 데이터로 측정되는데 NMEA 형식은 밑에서 자세히 다루도록 하겠습니다. 두번째 10진수..
Spring Boot 프로젝트에 Swagger 적용하기 (+인증) 안녕하세요. 유저인사이트 박태양입니다. 이번 시간에는 Spring Boot 프로젝트에 Swagger를 적용하는 방법을 알아보겠습니다. Swagger는 API 개발 및 문서화를 도와주는 오픈소스 프레임워크입니다. 여러분이 생성한 API를 자동으로 문서화 해주고, 웹 페이지를 통해 편리하게 호출할 수 있습니다. 실습 버전 정보는 아래와 같습니다. Spring Boot : 2.7.9 Java : 11 (JDK 11.0.2) Swagger : 3.0.0 Swagger 사용을 위해 pom.xml에 아래 디펜던시를 추가해줍니다. SpringFox는 Spring 기반으로 개발된 API를 자동으로 문서화 해주는 역할을 합니다. io.springfox springfox-boot-starter 3.0.0 Swagger 관..
ChatGPT 체험 후기 안녕하세요 유저인사이트 박준호 선임입니다. 저는 이번에 많이 언급되는 ChatGPT에 대해 간략히 알아보고 실습해 보았습니다. ChatGPT 선정 이유 이번 세미나의 주제로 ChatGPT를 선정한 데에는 단순히 신기하고 재미있겠다는 이유뿐만 아니라, ChatGPT를 잘 사용하면 도움을 받을 수도 있고 언젠가는 개발자가 인공지능에 밀리는 날이 올 수도 있겠다는 생각을 했기 때문입니다. 그리고 https://openai.com/api/ 에서 ChatGPT를 개발하는데 이용한 GPT-3, GPT-3.5를 간접적으로 이용할 수 있는 api를 제공중 이어서 개발에 이용할 수 있을 것 같습니다. 추후에는 ChatGPT의 api도 제공될 예정이라고 합니다. OpenAI API OpenAI is an AI resear..