TIL 50

js Shallow Copy(얕은 복사)와 Deep Copy(깊은 복사)의 차이

개요코드를 구성하다 보면 객체를 복사해야 하는 경우가 왕왕 생깁니다. 하지만, 오늘 소개해드릴 복사 방법 두 가지의 차이를 명확히 구분하지 않는다면 예상치 못한 에러를 맞닥뜨릴 수 있습니다. js에는 Shallow Copy(얕은 복사)와 Deep Copy(깊은 복사)가 있는데 하단 본문에서 자세히 살펴보도록 할게요😃 Shallow Copy (얕은 복사)📙얕은 복사는 객체의 최상위 속성만 복사합니다. 복사된 객체의 중첩 객체나 배열은 원본 객체의 참조를 그대로 유지하므로, 중첩된 객체나 배열을 수정하면 원본 객체에도 영향을 끼치게 됩니다. // 원본 객체let original = { name: 'Binco', age: 15, address: { city: 'Daejeon',..

TIL 2024.10.07

Java IP 유효성 검사 및 여러 유용한 함수 모음

개요안녕하세요 빈코입니다! 오늘은 Java에서 IP 유효성 검사 및 다양한 Util 함수들에 대해서 포스팅하려 합니다. IP 유효성 검사는 웹 애플리케이션에서 사용자로부터 IP 주소를 입력받을 때나 외부 API에서 IP 주소를 사용할 때 등 생각보다 많은 곳에서 사용됩니다😁  유효성 검사 로직만 살펴보기에는 포스팅 내용이 짧을 것 같아서 제가 주로 사용해왔던 IP 관련 함수들도 소개하려고 합니다. 그럼 하단에서 조금 더 자세히 살펴볼까요? IPv4 VS IPv6📙첫 번째로 알아야 할 점은 IP는 IPv4와 IPv6로 나뉩니다. IPv4는 32비트 주소 체계를 사용하며, 4개의 옥텟(ex: 127.0.0.1)으로 표현되고, IPv6는 128비트 주소 체계를 사용하여 8개의 16진수 블록으로 표현됩니다(..

TIL 2024.09.24

Java Spring Scheduler 정의 및 사용법 예시

개요웹 사이트를 운영하다 보면 주기적으로 특정 작업을 해야 할 때가 있습니다. 예를 들어, 매월 마지막 날에 어떤 통계를 내야 한다던지, 매일 쌓이는 로그를 지정해 둔 사이즈에 도달했을 때 순차적으로 삭제하는 등의 작업들입니다. 개발자가 직접적으로 해당 시간마다 작업을 진행할 수 없기에 Java에서는 Scheduler라는 기능을 제공합니다. 아래에서 좀 더 자세히 살펴볼까요? Spring Scheduler 란?📙Java Spring Scheduler는 개요에서 설명한 바와 같이 스프링 프레임워크에서 제공하는 작업 스케줄링 기능입니다.  해당 기능을 통해 개발자는 지정된 시간 간격이나 특정 시점에 자동으로 실행되어야 하는 작업을 쉽게 구성할 수 있고, 스프링 스케줄러는 멀티스레딩과 비동기 실행을 지원하..

TIL 2024.09.13

Java HTTP Server 쉽게 이해하기 및 예제

개요현직에서 업무를 하다 보면 기업 간의 API 통신이 이루어질 때가 왕왕 있습니다. 예를 들어, 생체 인증을 해서 로그인을 한다던가 또는 메일 발송을 해당 기업의 API를 사용할 때입니다. 그럴 때마다 서로 API 문서를 주고받고 필요한 값들을 넘겨주게 됩니다.  예를 들어, 메일 발송이라 가정했을 때 발신자, 제목, 본문, 파일, 수신자 등 다양한 정보를 넘겨주게 됩니다. 하지만 외부 API를 직접 테스트 할 수는 없기에 내가 보내는 값만 정상적으로 보내는지 체크할 수 있을 뿐, 응답값이 제대로 나오는지 확인이 불가능합니다. 이럴 때 유용하게 사용하는 기능이 HTTP Server입니다. 하단에서 좀 더 자세히 살펴볼까요? HTTP Server란?📙HTTPServer는 Java에서 간단한 웹 서버를 ..

TIL 2024.09.09

SMTP 정의 및 Java에서 메일 발송 기능 활용해보기(간단 예시)

개요 안녕하세요 빈코입니다. 오늘은 메일 발송 기능인 SMTP에 대해 자세히 알아보려고 합니다. SMTP 프로토콜은 Simple Mail Transfer Protocol의 약자로 인터넷에서 이메일을 전송하는 통신 규약 중 하나를 일컫습니다. 그럼 하단에서 자세히 알아볼까요? SMTP📙SMTP는 개요에서 설명한 바와 같이 이메일을 전송하는 통신 규약입니다. 주로 이메일 클라이언트와 서버 간, 그리고 서버와 서버 간의 이메일 전송을 관리하는 역할을 합니다. SMTP의 주요 기능은 이메일 전송, 서버 간 이메일 릴레이, 포트와 연결 등이 있습니다. 여기서 서버 간 이메일 릴레이는 이메일이 발신자의 메일 서버에 도착하면, 이 서버는 수신자의 메일 서버로 이메일을 전송하게 되는데 해당 과정을 서버 간의 릴레이라..

TIL 2024.09.04

리눅스 파티션 추가 및 디스크 포맷 & 마운트 설정하는 방법(예시포함)

개요안녕하세요 빈코입니다. 오늘은 서버 세팅 요소 중 하나인 리눅스 파티션 설정과 디스크 마운트 하는 방법에 대해 알아보려고 합니다. 리눅스 시스템에서 디스크는 하나 이상의 파티션으로 나뉘고 각 파티션은 논리적으로 독립된 공간으로 분할된 디스크 영역을 나타냅니다. 이것은 파일 시스템을 구성하고 데이터를 저장하기 위한 공간을 제공합니다. 그럼 설정하는 방법을 바로 알아볼까요?  파티션 설정📙첫 번째로는 fdisk를 활용하여 마운트 할 디스크명을 확인합니다.fdisk -l  두 번째로 파티션을 추가해줍니다.fdisk /dev/vdb  위 명령어를 치면 아래와 같은 질문이 나오는데, 새로운 파티션을 추가하기 위해 n을 입력해 주고 기본값으로 설정하기 위해 질문이 끝날때까지 엔터를 치시면 됩니다. 마지막에 똑..

TIL 2024.04.30

HTTP와 HTTPS의 차이점

개요안녕하세요 빈코입니다. 오늘은 저번 포스팅인 HTTP Method 사용법에 이어서 HTTP와 HTTPS의 차이에 대해 포스팅하려고 합니다. HTTP와 HTTPS는 모두 클라이언트와 서버 간 통신을 위한 통신 프로토콜입니다. 하지만 개인정보가 중요해짐에 따라 프로토콜의 보안도 강화되면서 HTTP보다 더 안전한 버전 HTTPS가 탄생하였습니다. 그럼 하단에서 자세히 살펴볼까요?  HTTP📙HTTP(Hypertext Transfer Protocol)는 데이터를 평문으로 전송합니다. 따라서 데이터가 네트워크를 통해 전송되는 동안에는 제3자가 가로채어 볼 수 있습니다. 민감한 정보가 포함된 경우에는 보안상 문제가 될 수 있겠죠? 예를 들어, 로그인 정보나 카드 정보 등 민감한 개인정보를 전송할 경우 HTTP..

TIL 2024.04.25

HTTP Method 종류 및 사용 방법(GET, POST, PUT, DELETE)

개요 안녕하세요 빈코입니다! 오늘은 웹 개발자라면 누구나 접해봤을 HTTP에 대해 포스팅하려 합니다. HTTP는 하이퍼텍스트 전송 프로토콜로 웹 브라우저와 웹 서버 간에 데이터를 주고받을 때 사용되는 프로토콜입니다. 이 프로토콜은 클라이언트(웹 브라우저)가 서버로 요청을 보내고, 서버가 클라이언트에게 응답을 보내는 방식으로 동작하는데, 주요 메서드로는 GET, POST, PUT, DELETE가 있습니다. 하단에서 좀 더 자세히 다뤄볼게요😄 HTTP Method📙 HTTP Method는 위에서 언급한 바와 같이 GET,POST,PUT,DELETE가 대표적입니다. GET은 조회, POST는 등록, PUT은 수정, DELETE는 삭제에 사용하죠. 더 다양한 메서드로는 아래와 같습니다. Method Conten..

TIL 2024.04.19

E2E(End-to-End) 테스트 요약 정리

개요 안녕하세요 빈코입니다. 오늘은 저번 포스팅인 Unit 테스트와 Integration 테스트 정리에 이어서 테스트의 마지막 종착지인 E2E테스트에 대해 포스팅하려고 합니다. E2E 테스트는 End-to-End 테스트로 애플리케이션의 흐름을 처음부터 끝까지 테스트하는 것을 말합니다. 그럼 하단에서 자세히 살펴볼까요? E2E 테스트?📙 E2E(End-to-End) 테스트는 개요에서 설명했듯이, 소프트웨어 시스템의 전체적인 기능과 성능을 검증하는 테스트 방법론입니다. 사용자가 실제로 시스템을 사용할 때와 유사한 환경에서 시스템이 예상대로 작동하는지 확인하기 위해 사용되며, 소프트웨어의 모든 구성 요소를 포함하여 전체적인 시나리오를 실행하고 결과를 검증합니다. 쉽게 말해서, A개발자가 개발한 소프트웨어를 각..

TIL 2024.04.11

Unit(단위 테스트)와 Integration(통합 테스트) 정리 및 예시

개요 개발 테스트 방법은 크게 Unit(단위) 테스트와 Integration(통합) 테스트, E2E(End-to-End) 테스트로 나뉩니다. 오늘의 포스팅은 단위 테스트와 통합테스를 다뤄보고 E2E테스트는 다음 포스팅에서 진행할 예정입니다. 개발 테스트는 소프트웨어의 각 구성 요소와 각각의 상호작용을 테스트하는 것이기 때문에, 개발 과정에서 무척 중요합니다. 3가지의 테스트 방법 모두 장단점이 있으니 알아두시면 좋을 것 같습니다😁 개발 테스트 종류📙 개발 테스트는 위의 그림과 같이 Unit(단위 테스트), Integration(통합 테스트), E2E(End to End 테스트)로 나뉩니다. 서론에서 언급했듯이 오늘의 포스팅은 통합테스트까지만 포스팅해볼게요 :) Unit(단위 테스트)📘 단위 테스트 Uni..

TIL 2024.04.03