[AWS] EC2(Ubuntu)에 MySQL 설치하고 스프링부트와 연결하기
·
AWS
EC2에 MySQL을 설치하고 스프링부트와 연결하는 작업을 진행했다. 원래 RDS를 사용하면 좀 더 편하게 연결할 수 있지만, 프로젝트 규모가 크지도 않고 RDS를 사용하면 비용이 발생하기 때문에 그냥 EC2에 직접 설치하기로 결정했다. MySQL 설치 과정1. 시스템 업데이트sudo apt updatesudo apt upgrade -y 2. MySQL 서버 설치sudo apt install mysql-server -y 3. MySQL 서비스 상태 확인sudo systemctl status mysql 4. MySQL 보안 설정보안 설정 단계에서는 여러 질문에 답해야 했다.sudo mysql_secure_installation VALIDATE PASSWORD COMPONENT 설정 여부를 묻는 질문에 Y를..
[SpringBoot] sts4 설치 및 압축풀기 오류 해결
·
SpringBoot
이전 글: [SpringBoot] SpringBoot 설치부터 프로젝트 생성, 의존성 추가까지 이전에 springboot tool 설치를 했었는데 컴퓨터를 새로 교체하면서 개발 환경을 다시 구축해야 했다. 예전에는 없었던 오류가 이번 설치 과정에서 발생했다. 압축풀기 과정에서 발생한 오류와 해결다운로드한 파일의 압축을 풀려고 했더니 기본 압축 해제 프로그램에서 오류가 발생했다. 구글링을 해보니 반디집(Bandizip)으로 압축을 해제하면 해결된다는 정보를 찾았다. 반디집을 설치하고 다시 시도하니 정상적으로 압축이 풀렸다. 3. sts4 실행압축 해제가 완료된 후 STS4를 실행할 수 있었다.
[React] 사이드 내비게이션 컴포넌트 구현
·
React
오늘은 웹사이트의 사용자 경험을 개선하기 위한 사이드 네비게이션 컴포넌트를 개발했다. 사용자가 웹페이지를 스크롤할 때 특정 섹션으로 쉽게 이동할 수 있도록 하는 기능이 필요했다. 특히 채용 정보를 보여주는 웹사이트에서 '추천 공고', '인기 공고', '주목받는 공고'와 같은 주요 섹션으로의 빠른 이동을 가능하게 하고, 페이지 상단으로 돌아갈 수 있는 기능도 포함시켰다. 구현 과정 및 코드 설명먼저 필요한 라이브러리와 스타일을 임포트했다. 특히 아이콘은 Lucide React 라이브러리를 사용하여 시각적으로 직관적인 네비게이션을 제공하고자 했다.import React, { useEffect, useState } from "react";import styles from "../../assets/css/m..
[React] 화면 레이아웃 구성 방식 정리 – 기존 방식과 Outlet 방식 비교
·
React
공모전 준비를 하면서 오랜만에 프론트 작업을 하게 됐다. 평소에도 프론트 작업할 때는 공통적인 레이아웃 구조나 스타일을 먼저 정해두는 게 중요하다고 생각하는 편이다. 그래서 이번에도 초기 세팅을 각자 맡아서 하기로 했는데... 프론트 세팅을 맡은 팀원이 작업을 잘 안 해서 결국 내가 화면 개발을 하면서 레이아웃 구조까지 손대게 되었다.그 과정에서 라우팅 구조에 대해 고민한 내용과 중첩 라우팅(Outlet) 방식으로 구조를 바꾸게 된 이유를 정리해보려 한다. 팀원이 처음 만들어둔 라우터 구조우선 팀원이 만든 초기 라우터 구조는 아래와 같았다. 최상위 App.js에서 각각의 기능 영역(User, Vendor, Admin)을 별도의 라우트로 분리한 구조였다.// App.jsimport { BrowserRout..
[IntelliJ IDEA] IntelliJ 빠르고 쉽게 설치하기!
·
기타
오늘은 개발 환경을 바꿔보기로 했다. 그동안 SpringToolSuite4(STS4)로 스프링부트 작업을 해왔는데, 팀 동료가 IntelliJ IDEA가 파일명 변경이나 리팩토링 기능이 더 강력하다고 추천해줬다. 마침 학원에서 유료 버전 라이센스 코드도 받았으니 이참에 한번 사용해보기로 했다. (왜 여태 사용을 안해봤을까...🙄) IntelliJ IDEA란?IntelliJ IDEA는 JetBrains에서 개발한 자바 개발 IDE로, 특히 Java 개발자들 사이에서 많은 인기를 얻고 있다. 크게 두 가지 버전이 있다.Community Edition: 무료 버전으로 Java, Kotlin, Groovy 등 기본 개발 기능 지원Ultimate Edition: 유료 버전으로 웹 개발, 스프링 프레임워크, 데이..
[SpringBoot] 일관된 API 응답을 위한 JsonResult 구현 및 활용
·
SpringBoot
웹 개발 수업에서 강사님께 API 응답의 일관성에 대해 배웠다. 강사님은 프론트엔드와 백엔드 간의 효율적인 통신을 위해 표준화된 응답 구조의 중요성을 강조하셨다. 수업에서 배운 내용을 실제 프로젝트에 적용하여 JsonResult 유틸리티 클래스를 구현하게 되었다. JsonResult 클래스 구현클래스 구조 설계public class JsonResult { private String result; // 요청 성공 여부 ("success" or "fail") private Object apiData; // 성공 시 반환할 데이터 private String message; // 실패 시 반환할 메시지}클래스의 핵심 목표는 다음과 같다.모든 API 응답에 일관된 구조 제공성공/..
[SpringBoot] JWT 토큰 구현 및 활용
·
SpringBoot
로그인 기능을 개발하면서 사용자 인증의 핵심 요소인 JWT(JSON Web Token)를 본격적으로 도입하게 되었다. 기존의 세션 방식에서 벗어나 더욱 안전하고 확장성 있는 인증 메커니즘을 구현하고 싶었다. 이 글에서는 내가 실제 프로젝트에서 JWT를 어떻게 구현하고 활용했는지 상세히 공유하려 한다. JWT란?당사자 간에 정보를 JSON 객체로 안전하게 전송하기 위한 간결하고 자가수용적인 방식이다. 주로 인증과 정보 교환에 사용되며, 세 부분으로 구성된다.Header(헤더)토큰의 유형과 해시 알고리즘 정보를 포함한다.예: 사용된 해시 알고리즘(HMAC SHA256), 토큰 타입(JWT)Payload(페이로드)토큰에 담길 정보(클레임)를 포함한다.사용자 ID, 이름, 만료 시간 등 다양한 데이터 저장 가능..
[SpringBoot] 스프링부트 어노테이션(Annotation) 정리
·
SpringBoot
개발을 하면서 스프링부트의 다양한 어노테이션을 사용해왔다. 처음에는 단순히 정해진 방식대로 `@RestController`,`@Autowired` 같은 기본적인 어노테이션들만 사용했었다. 하지만 프로젝트가 복잡해지고 기능이 다양해질수록 내가 알고 있는 어노테이션들만으로는 부족하다는 것을 깨달았다. 그래서 이 글을 통해 스프링부트에서 제공하는 다양한 어노테이션들을 체계적으로 정리해보기로 했다. 어노테이션(Annotation)이란?어노테이션은 코드에 추가적인 정보와 의미를 부여하는 주석과 같은 특별한 표기 방식이다. 단순한 주석과는 달리, 어노테이션은 컴파일러나 프레임워크에 특정한 동작이나 처리 방식을 알려주는 역할을 한다. 어노테이션을 사용하는 주요 이유 1. 코드의 추가 정보 제공클래스, 메서드, ..
[Python] Selenium으로 네이버 플레이스 크롤링: 부산 해운대 맛집 정보 수집하기
·
Python
약 한 달 반 전, 팀 프로젝트에서 가장 먼저 시도했던 네이버 지도 크롤러 개발 과정을 공유하려 한다. 당시 내가 맡은 부분은 맛집 추천 에이전트였다. 한국에서는 네이버 플레이스가 가장 많은 정보를 보유하고 있지만 공식 API가 없었기 때문에, 초기에는 셀레니움을 활용한 동적 크롤링을 시도했다. 솔직히 동적 크롤링은 처음 해보는 거라 신기하고 흥미로웠다. 결과적으로 1박 2일 일정에 하루 3끼, 최소 15개 이상의 식당 데이터가 필요했고 크롤링 속도 문제로 인해 구글 플레이스 API로 방향을 전환했지만, 오늘은 당시 개발했던 크롤러를 다시 살펴보려 한다.개발 목표네이버 지도에서 "부산 해운대 음식점" 검색 결과 수집하기각 음식점의 이름, 카테고리, 평점, 주소 정보 추출하기자동으로 모든 검색 결과를 스크..
[AI] 딥러닝 프레임워크 비교: 텐서플로우 vs 파이토치 vs 케라스
·
AI
요즘 워낙 AI가 강세여서 AI와 머신러닝에 대한 공부를 시작하다 보니 항상 눈에 띄는 세 가지 이름이 있었다. 텐서플로우, 파이토치, 케라스. 이것저것 찾아보고 자료를 살펴볼 때마다 계속 이 프레임워크들이 등장했는데, 솔직히 이게 정확히 뭔지, 어떤 차이가 있는지 잘 몰랐다. 그래서 오늘은 내가 헷갈리지 않기 위해 세 가지 프레임워크를 정리해보려고 한다. 텐서플로우(TensorFlow)란?텐서플로우는 구글 브레인 팀이 개발한 오픈소스 딥러닝 프레임워크로, 2015년에 처음 공개되었다. 이름에서 알 수 있듯이 '텐서(Tensor)'와 '플로우(Flow)'의 합성어로, 다차원 데이터 배열인 텐서가 계산 그래프를 통해 흐르는 방식을 의미한다. 데이터 플로우 그래프(Data Flow Graph) 구조를 사용하..