Category 123

PostgerSQL Upsert 쿼리 개념 및 대용량 속도 차이 예제

개요안녕하세요 빈코입니다. 오늘은 DB 쿼리 중에 유용하게 사용되는 Upsert문에 대해서 포스팅 하려 합니다. Upsert문은 데이터를 삽입(Insert)하거나 수정(Update)하는 작업을 동시에 처리하는 SQL문입니다. 이 문은 주로 "존재하면 업데이트, 없으면 삽입"하는 형태로 동작하며, 기존 데이터가 있으면 수정하고 없으면 새로 추가하는 방법입니다. 좀 더 자세한 방법은 하단에서 살펴볼게요😁 Upsert문 개념📙Upsert문은 개요에서 설명한 바와 같이 데이터를 삽입 및 수정을 동시에 처리하는 SQL문입니다. 여기서 존재하면 업데이트, 없으면 삽입하는 과정이 필요한데, 어떤 값을 기준으로 존재 여부를 판단하는지는 CONFLICT 절에 의해서 판단됩니다. INSERT INTO table_nam..

TIL 2024.11.23

Java 파일 업로드 구현하기 및 Progress Bar 설정

개요안녕하세요 빈코입니다. 오늘은 Java에서 파일 업로드하는 방법에 대해 알아보려고 합니다. UI에서 파일을 선택하고 업로드되는 과정을 보여주는 Progress bar를 표현하는 일련의 과정을 순서에 맞게 포스팅해 볼게요😄 UI 구성📒가장 먼저 구현해야 할 것은 당연 Front 단이겠죠? Front단 설정은 간단합니다. input 타입을 file로 설정하여 사용자가 파일을 선택할 수 있는 파일 선택 버튼을 생성합니다. 그리고 저는 data-show-preview="false"를 설정하여 파일 미리 보기를 보여주지 않도록 설정하였습니다. 하위 코드로 아래와 같이 UI단을 구성하면 UI단은 끝이 납니다😊 JS 단 구성📙$('#input_file').fileinput({ language: "ko..

TIL 2024.11.16

Java 회원가입 및 로그인 비밀번호 Hash 비교 방법

개요안녕하세요 빈코입니다. 오늘은 Java 프로젝트에서 회원가입 및 로그인 시 중요한 정보인 비밀번호를 해시화하는 방법에 대해 자세히 알아보려고 합니다. 만약 사용자가 회원가입 및 로그인 시 비밀번호를 입력했을 때, 사용자가 입력한 텍스트 그대로 서버로 통신하면 정보가 유출될 가능성이 높습니다. 그렇기 때문에, 해당 기능 작업 시에 중요한 정보들은 꼭 Hash 화해서 서버로 통신하는데 대표적인 방법으로 'SHA-256' 방법을 많이 사용하곤 합니다. 좀 더 자세한 내용은 하단에서 이어가 볼게요😁 회원가입 및 로그인📙로그인 시 비밀번호 검증을 위해 보통 사용자가 입력한 비밀번호를 해시를 떠서 사용하는 것이 일반적입니다. 보안상 암호화된 비밀번호를 데이터베이스에서 꺼내와 복호화하여 비교하는 대신, 입력한..

TIL 2024.11.12

[Toy Project] '늦기 전에' 유스케이스 다이어그램 포스팅

개요오늘은 저번 포스팅이었던 '늦기 전에' ERD 포스팅에 이어, 유스케이스 다이어그램을 포스팅을 하려 해요. 유스케이스 다이어그램은 사용자가 시스템과 상호작용하는 방식을 시각적으로 표현한 UML(Unified Modeling Language) 다이어그램의 한 종류에요. 주로 시스템의 기능적 요구사항을 정의하는 데 사용하고, 사용자와 시스템 간의 상호작용을 직관적으로 보여주는 역할을 합니다😊 UseCase Diagram이란?📙유스케이스 다이어그램의 구성 요소로는 액터, 유스케이스, 관계, 시스템 경계로 나뉩니다. 액터는 말 그대로 시스템과 상호작용하는 외부 요소로 보통 사람을 일컫습니다. 해당 프로그램을 관리하는 관리자가 될 수도 있고, 해당 프로젝트를 사용하는 사용자가 될 수도 있어요. 유스케이스는..

Project/Individual 2024.11.06

[Toy Project] '늦기 전에' ERD 포스팅

개요오늘은 저번 포스팅이었던 '늦기 전에' 프로젝트 기획 편에 이어서 ERD를 포스팅하려 해요. ERD는 시스템 내의 데이터 요소(엔티티)와 각각의 관계를 표현하는 다이어그램이라고 생각하시면 됩니다. 사실 초기 ERD는 추후에 개발을 진행하면서 여러 테이블과 칼럼들이 추가되거나 삭제될 수 있지만, 작업 이력이라고 생각하고 포스팅하게 되었어요. 좀 더 자세한 이야기는 하단에서 살펴볼게요😁 전체 ERD📙 첫 번째로, 전체 ERD를 가져왔어요. 프로젝트는 사용자들에게 직업의 정보를 알려주고 더 나아가 실무자들과 소통할 수 있는 공간을 마련하는 것이 목표이기 때문에, 사용자 테이블부터 직업 테이블까지 총 11개의 테이블로 구성이 되었어요. 추후에 실제로 소통하는 단계는 채팅 서비스까지 도입이 되어야 하는데 ..

Project/Individual 2024.10.28

SW개발_L3 자격증 합격 및 족보 공유

개요 안녕하세요 빈코입니다! 오늘은 최근에 합격 SW개발_L3 자격증 공부 방법에 대해서 포스팅하려 합니다. SW개발_L3 자격은 일학습병행제의 일부로, 실무 중심의 소프트웨어 개발 능력을 테스트하는 시험입니다. 기존에는 필기시험, 실기 시험, 면접으로 총 3가지로 구성되었는데, 최근에 제가 본시험은 면접은 빠지고 필기시험과 실기 시험으로 구성되어 있었습니다. 시험 과목은 총 8가지로 필기는 '개발자 환경 구축, 애플리케이션 테스트 수행, UI 테스트, 애플리케이션 배포, 응용 SW 기초 기술 활용' 총 5가지 과목으로 되어 있고, 실기는 'SQL 활용, 화면 구현, 프로그래밍 언어 활용' 총 3가지로 구성되어 있습니다. 8개의 과목 중 6개의 과목을 Pass 하면 시험 통과이고, 5개부터는 Fail입니..

자격증 2024.10.24

[Toy Project] '늦기 전에' 기획 및 포스팅

개요통계청에 따르면 한국인은 평균적으로 한평생에 직업이 3번에서 많게는 5번 바뀐다고 해요. 물론 저 또한 요식업계에서 개발자로 전향했던 경험이 있는데, 전직을 해봤던 사람이라면 누구나 공감할 만한 힘든 점이 있는 것 같아요. '어떤 걸 공부해야 하지?', '취업을 하려면 뭐를 준비해야 하지?' 등 전직하려는 직업에 대한 정확한 정보가 없다는 점이에요. 온라인상에서 수많은 정보를 알아낼 수는 있지만, 취업을 향한 빠른 지름길은 당연 해당 직종에 실제로 근무하고 있는 실무자가 가장 정확한 정보를 가지고 있다고 생각해요.  제가 기획하는 '늦기 전에'라는 웹사이트(추후 어플 제작)의 궁극적인 목표는 실무자와 구직자간의 소통의 장을 마련하는 겁니다👊 혼자 만들어갈 계획이라 많은 시간이 걸리고 도중에 비슷한 ..

Project/Individual 2024.10.16

[JS] find,some,filter,map 등의 고차 함수 활용하기

개요오늘은 JavaScript에서 제공하는 고차 함수(Higer-Order Function)에 대해 알아보려고 합니다. 고차 함수는 다른 함수를 인자로 받거나 함수를 반환하는 함수를 의미하는데, 함수는 일급 객체(First-Class Citizens)이기 때문에 JavaScript에서 함수는 일반 값처럼 취급이 가능하여 변수에 할당되거나 다른 함수의 인자로 전달 또는 함수의 반환값으로 사용할 수 있습니다.  이러한 특징들을 이용한 고차 함수는 코드의 재사용성을 높이고, 간결하고 읽기 쉬운 코드를 작성하는데 매우 유용하게 사용됩니다. 본문 하단에서 일반적으로 함수를 만들 때와 고차 함수를 사용할 때의 차이를 잠깐 알아보고 다양한 고차 함수를 소개할게요😊 고차 함수를 사용하는 이유📙만약에 1~5까지 있는..

TIL 2024.10.11

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