[개발 일기] 2025.05.25 - 일대일 관계에서 연관 관계의 주인
·
개발 일기
💡 개요 보통 다대일 관계일 때는 다쪽이 연관 관계의 주인이기 때문에 다쪽에 외래 키가 있다. 그렇다면 일대일 관계에선 어떨까? 🛠️ 일대일 관계 위에서 언급한 것 처럼 연관 관계 주인이란 외래 키를 관리하는 테이블이나 엔티티를 말한다. 보통 다 쪽에서 외래 키를 관리하는 데 이유는 다음 예시를 보면 쉽게 알 수 있다. 사용자와 게시글의 관계@Entitypublic class Member { @Id @GeneratedValue private Long id; ...} @Entitypublic class Post { @Id @GeneratedValue private Long id; @ManyToOne @JoinColumn(name = "member_id..
[개발 일기] 2025.05.24 - REST API의 URL에 대한 개인적인 생각
·
개발 일기
💡 개요 오늘 API 명세서를 작성하다가 여러 가지 고민거리가 생겼다. 오늘은 그 고민에 대해 정리해 보자. 🛠️ 복수 or 단수 난 최근까지 REST의 URL을 나타낼 때/api/v1/member/api/v1/board 이런 식으로 단수형으로 표현했다. 하지만 이는 REST의 URL 규칙에 어긋난다고 한다. REST에서는 일반적으로 "리소스는 복수형"으로 표현하는 것이 권장된다./api/v1/members/api/v1/boards 이유는 리소스의 집합(복수)을 다루는 것이라는 REST의 철학 때문이다. 만약 회원 데이터 중에서 한 회원의 정보를 조회할 경우 /members/{id} 와 같이 개별 리소스를 표현할 수 있고, /members 을 통해 회원 리스트를 자연스럽게 조회할 수 있다. ..
[개발 일기] 2025.05.23 - LocalDateTime vs Long (에포크 타임)
·
개발 일기
💡 개요 보통 백엔드에서 프론트엔드로 LocalDateTime와 같은 시간 데이터를 응답할 때, Long 타입으로 변환해서 전달하는 것이 나은지, 아니면 LocalDateTime 타입 그대로 전달하는 것이 나은지 고민한다. 오늘은 두 방식에 대해 정리해 보자. 🛠️ LocalDateTime LocalDateTime을 그대로 클라이언트에게 응답한다면 가장 큰 장점은 개발자가 알아보기 쉽다. 그 이유는 2025-05-23T14:30:00 이런 형식으로 응답이 되는데, 딱 봐도 날짜와 시간을 알 수 있기 때문이다. 하지만 LocalDateTime의 가장 큰 단점은 타임존을 포함하지 않기 때문에 혼동이 생길 수 있다. 만약 서버와 클라이언트가 다른 시간대(서버는 한국, 클라이언트는 미국)를 사용한..
[개발 일기] 2025.05.22 - JavaScript 얕은 복사?
·
개발 일기
💡개요 리팩터링 2탄을 읽다가 JS의 얕은 복사 코드를 봤는데, 너무 어색하다. 자바에선 사용해본 적이 없는 문법이라서 그런 것 같다. 이게 뭔지 정리좀 해보자. 🛠️ 얕은 복사 자바스크립트의 얕은 복사란 객체나 배열을 복사할 때, 최상위 수준의 값만 복사하고 중첨된 객체나 배열은 참조값만 복사하는 방식이다. ..? 뭔 말이고.. 자바를 사용하는 난 난생 처음들어보는 문장이다. 쉽게 설명해보자면 int나 double, boolean 같은 기본 타입은 값 자체가 복사돼서 완전히 독립적인 복사본이 만들어진다. 반면, 배열이나 객체는 참조 타입이라서 얕은 복사를 하면 원본의 주소(참조)를 공유하게 된다. ⚙️ 기본 값 복사let a = 10;let b = a; // 값 복사b = 20;con..
[개발 일기] 2025.05.21 - 점진적인 개선 (Feat : 클린코드)
·
개발 일기
💡 개요 오늘은 개발 서적 클린코드의 ‘14장-점진적인 개선’ 부분을 읽으면서 느낀 점을 정리해 보자. 🛠️ 점진적인 개선 클린코드의 14장은 거의 90%가 코드이다… 대부분 애플리케이션의 main() 메서드가 받는 파라미터를 관리하는 Args 관련 코드의 점진적인 개선에 관련된 코드이다. 굉장히 지저분한 코드에서 점차 깔끔한 코드로 발전해나가는 모습이 인상적이니까, 꼭 읽어보면 좋슴다. 그래서 간략하게 저자가 하고싶은 말을 정리만 해보자. 일단 14장의 이름인 ‘점진적인 개선’ 이라는 의미는 일단 ‘1차 초안을 작성해서 점진적으로 개선하자?’ 나쁜 건 아니다. 근데 그건 진짜 어렵다. 많은 신입 개발자들은 ‘일단 코드를 작성하자!’ 라고 생각하고, 만약 정상적으로 동작하면 ‘어? 되네?..
[개발 일기] 2025.05.20 - XSS
·
개발 일기
💡 개요 HttpOnly 형태의 쿠키를 사용하면 XSS을 방지할 수 있다는데 도대체 XSS은 뭐고, 무슨 원리로 XSS을 방지할 수 있는 것일까..? 🛠️ XSS (Cross-Site Scripting) XSS(Cross-Site Scripting)란 크로스사이트 스크립팅의 약자로 웹 사이트의 게시판과 같은 기능에 공격자가 임의의 스크립트 코드를 삽입해 개발자의 의도와 전혀 다른 기능이 수행되게 하는 공격이다. 보통 많은 해커들은 Origin 서버를 공격하지만, XSS는 클라이언트 측을 공격하는 방식이다. XSS의 방식은 크게 Reflected XSS, Stored XSS, DOM based XSS로 나뉜다. ⚙️ Reflected XSS 가장 많이 사용되는 XSS 방식으로 사용자의 입력값..