전체

😕 문제 상황Spring Boot 프로젝트에서 Thymeleaf를 사용하며 TailwindCSS의 유틸리티 클래스(justify-between, text-center, bg-blue-500 등)가 적용되지 않는 문제가 발생했다.특히 header 부분에서 justify-between 클래스를 추가했음에도 레이아웃이 기대한 대로 변경되지 않았다. 🔍 문제 원인 Tailwind CSS 빌드 파일 미생성 또는 갱신 문제Tailwind CSS버전 3.0 이상에서는 기본적으로 JIT(Just-In-Time) 모드로 동작하며, 실제 HTML, JS 파일 등에서 사용된 유틸리티 클래스만을 기반으로 최종 CSS 파일을 생성한다.JIT 모드란? 필요할 때 즉시 CSS를 생성하여 성능을 최적화하는 방식으로, 설정된 co..
현재 진행중인 프로젝트에서 redis 도입이 필요했고 내가 세팅을 담당했다.기존 AWS 아키텍처 구성에서 어떤 방식으로 redis를 추가 구성하는게 가장 좋은 선택일지 고민해본 결과, Private subnet의 API 서버 EC2에 Redis를 함께 설치하기로 했다. (우리 프로젝트의 클라우드 인프라 아키텍처는 글의 하단부에 다이어그램을 첨부해두었다) 그 이유는:프리티어는 EC2 인스턴스 사용 시간을 기준으로 과금이 되는데, 지금 이미 2개 이상의 인스턴스가 실행되고 있으므로(private, public subnet 각각), 현재 실행중인 EC2에 설치하는게 맞다고 판단했다.또한, 구조적으로도 안정적이다!이미 Private subnet에 위치하고 있으므로 보안성이 확보된다.Bastion 호스트(Publ..
1. 최단 경로 알고리즘이란?최단 경로 알고리즘은 그래프에서 한 정점에서 다른 정점까지 가는 데 필요한 최단 거리를 찾는 알고리즘입니다. 여기서 ‘최단’의 의미는 경로 상의 가중치 합이 가장 작다는 뜻입니다. 예를 들어, 지도에서 두 도시를 최단 거리로 연결하는 방법을 찾는 것이 최단 경로 문제라고 볼 수 있습니다.방금 제가 풀고 있던 이 문제: https://www.acmicpc.net/problem/16928 에서의 '정점'은 게임판의 칸이 될 것이며, 각 칸마다 이동하는 것이 경로를 통해 이동하는 상황이 되는 것입니다. 다만, 이 문제에서는 각 경로의 가중치가 모두 1로 동일한 상황이며, 이 경우에는 어떤 알고리즘으로 푸는 게 적합한지 글의 마지막 부분에 언급하도록 하겠습니다. 2. 대표적인 최단 ..
정렬 알고리즘 문제를 푸는 중에 매우 깔끔한 코드를 발견했습니다.저는 열심히 퀵소트로 문제를 풀었는데, 어떤 분들은 Arrays.sort와 lambda 함수를 사용해서 아주 깔끔한 코드로 풀이를 완성한 것이었죠!!! 저는 그런 식으로 코딩해본 적이 없어서 한 줄씩 뜯어봤는데,사실 '저 코드가 도대체 왜 오름차순 정렬을 하는 코드인거지???' 하는 생각이 계속 들었습니다. 그래서 다시 찾아보면서 이해를 하고 메모를 해두려고 합니당 정렬하는 부분만 작성해둔 예시 코드는 다음과 같습니다.// 예시 코드import java.util.Arrays;public class Main { public static void main(String[] args) { int[] arr1d = new int[]..
자바 언어로 알고리즘 문제를 풀 때, 문제에서 주어진 입출력 조건을 맞추기 위해 문제마다 반복적으로 어떤 값을 입력받는 코드를 작성해야 한다. 나는 처음에는 그냥 내가 알고있던 Scanner와 System.out.println()을 활용해서 입출력 부분 코드를 작성했다.그런데 구글링을 하다 보니까 보통은 StringBuilder와 BuffererdReader를 많이 사용하길래 더 찾아본 기록을 남겨본다. 먼저, 출력 부분을 보자.나는 뭔가의 결괏값을 반복해서 출력해야 할 때, 그냥 반복문에서 System.out.println()을 돌렸었다.그런데 입출력 작업은 굉장히 느리고 자원 소모가 크기 때문에, 이렇게 하지 말고모든 출력할 값들을 하나의 문자열로 만들어준 뒤, 그 값을 한 번에 출력하는 방식이 더 ..
PWA로 만든 이 웹앱은 프론트와 백을 연결하려면 HTTPS 처리가 필요하다.그러기 위해 도메인도 구입하고~ 이것저것 작업을 해줘야 함.localhost로도 테스트가 가능하지만... 어차피 실제로 사용하는게 목표니까!아예 처음부터 쭉 배포 과정을 정리해보려고 한다. 나의 첫 배포 ^^ 성공하길! 1. 백엔드 서버 배포 과정1) EC2 생성하고 GitHub 소스코드 Clone 받아오기.env는 .gitignore에 추가 필수! -> EC2에서 .env 파일 만들어주기2) RDS 연결하기DBMS는 PostgreSQL을 사용하였고, ORM으로 Prisma를 사용했다.3) 도메인 적용시키기 (Route 53)4) ELB를 활용해서 HTTPS 적용시키기 2. 프론트엔드 웹 페이지 배포 과정1) EC2에 GitHu..
RESTful한 API를 설계하기 위한 기준을 세워봅시다!Riot Games의 API 문서를 참고했습니다.URI를 통해 알 수 있는 것책임깊이도메인과 도메인의 관계예를 들어, TeacherReview는 선생님에 대한 리뷰이고 선생님 컨트롤러에 있겠다는 것을 파악할 수 있습니다.깊이란 뎁스에 따라 점점 좁혀지는 URI를 뜻하며, pk면 바로 /id를 쓰고, pk가 아니면 /by-phone/{phone} 이런 식으로 쓸 수 있습니다. 도메인 간의 관계가 나타납니다. 1:n, n:1, m:n, 1:1도메인이 정의되면 서로의 관계들을 파악하고 설계할 수 있습니다. 응답 내리는건 단건 or 복수건입니다. 복수건으로 한 건을 그냥 보내면 되니까 애매하면 복수건으로 내리면 됩니다. 데이터 가져오는건 무조건 GET, ..
🐾 개념 정리서비스서비스는 어떤 기능이 구현되어 단독 배포가 가능한 소프트웨어 컴포넌트입니다. 서비스는 클라이언트가 자신이 서비스하는 기능에 접근할 수 있도록 커맨드, 쿼리, 이벤트로 구성된 API를 제공합니다.  서비스 작업은 크게 커맨드(command, 명령/CUD)와 쿼리(query, 조회/R)로 나뉩니다. ex) createOrder() 커맨드는 주문 생성 후 데이터를 업데이트하며, findOrderById() 쿼리는 데이터를 조회합니다. 서비스는 클라이언트가 소비하는 OrderCreated 같은 이벤트를 발행하기도 합니다.서비스 API는 내부 구현 상세를 캡슐화합니다. 모놀리스와 달리 개발자는 API를 우회하여 서비스에 접근하는 코드를 작성할 수 없으므로(무슨 뜻이지?!) 마이크로서비스 아키텍..
제 티스토리 블로그에는 아주 깔끔한 hELLO 스킨을 적용했습니다. 하지만 기본값을 쓰다보면 조금이라도 커스텀을 하고 싶은게 개발자의 본능이 아니겠습니까.....? 그래서 이 글을 통해 제가 커스텀한 과정을 기록해두고자 합니다! 혹시라도 버전 문제로 삽질을 하고 계신 분들께 도움이 될수도 있고, 추후 업데이트를 할 때 제가 참고하게 될수도 있으니까요 :) 커스텀 과정에서 주로 참고한 블로그는 포스팅 맨 아래에 첨부하도록 하겠습니다. 1. 오리지널 스킨 링크 https://pronist.tistory.com/5 hELLO 티스토리 스킨을 소개합니다. hELLO 스킨은 초기에 기능이 많이 없었다가, 티스토리 블로거 여러분의 호응에 힘입어 기능의 추가와 함께 업데이트를 여러 번 하게 되었습니다. hELLO 1..
저 두개는 vsc에서 그냥 print()로 찍어보면 똑같게 나온다. 그래서 주피터로 해봄 후자의 장점은 저렇게 씀으로서 저 리스트 덩어리를 문자열 하나로 볼 수 있음. 문자 개수세기 문제에서 활용 가능 #1~10000에서 숫자 8이 등장하는 개수 세기(8808은 +3개) # 방법1 print(str(list(range(1, 10001))).count('8')) # 방법2 count = 0 for i in range(1, 10001): if '8' in str(i): count += str(i).count('8') print(count) # 방법3 print(str([i for i in range(1, 10001)]).count('8'))
녕 지
'분류 전체보기' 카테고리의 글 목록