본문 바로가기

분류 전체보기149

[간단 정리] HTTPS의 암호화 방식 https 통신은 http 통신과는 달리 데이터를 암호화해서 주고 받는다. 그래서 http 프로토콜을 사용하는 것보다 훨씬 안전하게 데이터를 주고받을 수 있다.사실 여기까지는 개발자를 꿈꾸는 사람들이라면 누구나 아는 사실이다. 내가 궁금했던 것은 'https방식으로 데이터를 암호화해서 주고받는다고 하더라도 중간에 제삼자가 암호화된 데이터를 가로챈 후 데이터를 복호화하면 결국 데이터를 암호화한 의미가 없게 되는 것 아닐까?'였다. 클라이언트에서는 데이터를 복호화할 수 있기 때문에, 결국 암호화된 데이터에는 복호화하는 방법이 있는 것이다. 그러면 브루트포스 공격 등에는 취약한 게 아닌가?결과부터 말하자면 그렇지 않다는 것이다. 나는 지금까지 https는 데이터를 암호화해서 주고받는다는 사실만 알고 있었지, .. 2025. 2. 7.
[간단 정리] Query String과 Path Variable Query StringURL의 ? 뒤에 key-value 형태로 데이터를 전달하는 방식.ex: `https://example.com/products?category=shoes&size=270&color=black`보통 필터링, 검색, 정렬, 페이징 등의 기능을 위해 사용된다.Path VariableURL의 특정 부분을 변수처럼 사용하여 데이터를 전달하는 방식.ex: `https://example.com/products/123`주로 리소스의 고유한 식별자 (ID, 이름 등)를 포함할 때 사용된다.Restful API의 원칙 상 특정 리소스를 고유하게 식별할 때는 Path Variable을 사용해야 한다고 한다. 그렇다면 이 둘을 각각 언제 사용해야 할까?바로 위에 적혀 있는 대로 기타 변수로 데이터를 필터.. 2025. 2. 6.
[간단 정리] URL 끝에 붙는 슬래시(/), 트레일링 슬래시 www.naver.com과 www.naver.com/은 과연 같은 주소일까?아마 사람들은 이 두 주소의 차이점을 크게 궁금해하지 않고 살아가고 있을 것이다.이렇게 URL 맨 마지막에 붙는 슬래시를 트레일링 슬래시(Trailing Slash)라고 부른다.이 트레일링 슬래시는 해당 URL이 파일의 주소를 나타내는지, 아니면 디렉터리의 주소를 나타내는지를 표시하기 위해 사용된다.- 트레일링 슬래시가 사용된 경우: 해당 URL은 디렉터리의 주소를 나타낸다.- 트레일링 슬래시가 사용되지 않은 경우: 해당 URL은 파일의 주소를 나타낸다.사실 우리는 www.naver.com을 입력하여 네이버에 들어가지만 브라우저에서 자동으로 맨 마지막에 트레일링 슬래시를 붙여서 www.naver.com/으로 리다이렉트 시켜준다. .. 2025. 2. 5.
[간단 정리] django를 쓸 땐 snake case를 사용합시다 작년 말, 우테코 프리코스를 거치면서 코드 컨벤션에 대해서도 어느 정도 공부를 하게 되었다. 지금 돌아보면 그 과정에서 나도 모르게 변수명 및 함수명 명명 규칙을 몸소 체화시켰다는 점을 발견할 수 있었다.우테코에서는 기본적으로 자바 언어를 사용해서, 코드 컨벤션 역시 자바 코드 컨벤션을 사용했다. 자바에서는 일반적으로 클래스 이름에서는 파스칼 케이스(Pascal Case)를, 변수명이나 함수명에는 카멜 케이스(Camel Case)를 사용한다. 이는 여름방학 때 현장실습을 하면서 배운 NestJS와 똑같은 규칙이었다.그래서 나는 당연히 모든 언어에서 클래스 명은 Pascal Case로 작성하고, 변수명 및 함수명은 Camel Case를 사용하는 것으로 인지하고 있었다. 자바나 자바스크립트나 타입스크립트나 .. 2025. 2. 4.
[간단 정리] DTO란? Data Transfer Object(DTO)란 프로세스 간에 데이터를 전달하기 위해 만들어지는 객체를 의미한다.책임을 분리하기 위해 DTO를 활용하여 각 클래스 간에 데이터를 전송하거나, 혹은 프론트엔드와 백엔드 간 통신을 할 때에도 주로 DTO를 사용하곤 한다. 데이터 전송 도중 DTO의 값이 바뀔 수도 있다. 따라서 DTO 내부 속성들은 변하지 않도록 final 속성을 가지거나 Setter을 만들지 않는 것이 일반적이다. Java의 경우에는, record를 활용해서 손쉽게 불변 객체를 정의할 수도 있다. 2024. 11. 10.
[간단 정리] Mock 객체란? 단위 테스트를 진행할 때, 우리는 객체를 직접 생성해야만 그 객체가 가지고 있는 함수들을 테스트해볼 수 있다.간단한 객체라면 테스트 코드 내부에서 대충 생성해주면 되지만, 간혹 객체가 복잡해질 경우에는 쉽게 객체를 만들 수 없다. 이 때 사용하는 것이 Mock이다. Mock이란 실제로 DB에 연결하지 않고, 객체 그 모양만 그대로 가져와서 가짜 객체를 만들어준다. 그 중에서도 내가 필요로 하는 메서드만 가지고 올 수 있어서, 객체에 대한 단위 테스트를 굉장히 용이하게 할 수 있다. 예를 들면, 스프링 프로젝트에서 @Autowired로 다른 의존성을 주입받아 사용하는 객체를 테스트한다고 가정하자.그 객체는 뭐 테스트 코드에서 대충 만들 수 있다 쳐도, 내부에 있는 의존성까지 테스트 코드에서 작성해야 한다는.. 2024. 11. 9.
반응형