전체 글 369

Vue.js Lifecycle Hooks 라이프사이클 훅 개념 정리

Vue Lifecycle Hooks 라이프사이클 훅 개념 정리Vue.js는 컴포넌트(Component) 기반 프레임워크이며, 각각의 컴포넌트는 생성되어 업데이트되고 소멸되는 일련의 과정(Lifecycle)을 거치게 되는데요.이러한 일련의 과정을 컴포넌트의 '라이프사이클'이라고 하며, 과정 중 각각의 단계(초기화, 마운트, 업데이트, 소멸)에서 실행되는 함수들을 '라이프사이클 훅(Lifecycle Hooks)'이라고 합니다. Vue.js에서 Lifecycle Hooks를 이해하는 것은 어느 시점에 어떤 훅을 통해 컴포넌트의 상태를 업데이트해야 하고, 리소스 등 불필요한 요소를 제거하며, 렌더링을 최적화하는 등, 컴포넌트의 상태 변화에 맞춰 필요한 작업을 수행할 수 있기 때문에 상당히 중요한 부분이라고 생각..

Programming/Vue 2024.06.13

오라클 NULL 치환 함수 정리 (NVL, NVL2, COALESCE, NULLIF)

Oracle NULL 치환 함수 정리 (NVL, NVL2, COALESCE, NULLIF)해당 포스팅은 oracle null 치환 함수에 대해서 정리한 내용입니다.null 치환 함수는 실무에서도 쓰이면서 여러 시험 문제로도 많이 출제되기 때문에 잘 정리해 두면 좋을 것 같습니다. NVL, NVL2-- NVL 함수 형식NVL(주어진 값, 대체 값) 먼저 NVL 함수의 경우 '주어진 값'이 NULL인 경우 '대체 값'을 반환하며, 주로 NULL 값을 다른 값으로 대체할 때 사용됩니다.해당 함수는 '주어진 값'과 '대체 값'의 데이터 타입이 동일해야 하며, 동일하지 않을 경우 오류가 발생하게 됩니다. 간단한 사용 예시로는 다음과 같이 시험을 치지 않아 시험 점수(SCORE)가 NULL인 데이터에 대해 NULL..

Programming/Oracle 2024.06.06

MySQL BETWEEN과 부등호 성능 비교해 보기 (+ 날짜 타입과 숫자 타입 비교)

MySQL BETWEEN과 부등호 성능 비교해 보기 (+ datetime, int 성능 비교) SQL 쿼리에서는 WHERE 조건절 안에서 'BETWEEN' 또는 '부등호(, >=)'를 사용하여 조건의 범위를 지정할 수 있는데요.최근 조건절에서 범위 지정 시 'BETWEEN'을 사용하는 것과 '부등호'를 사용하는 것의 성능 차이가 있다는 내용을 보게 되어 실제 데이터 조회를 통해 확인해 보게 되었습니다.(성능 차이가 발생하는 것을 직접 확인해보고 싶었기 때문에 원인에 대한 내용보다는 테스트와 결과에 초점을 둔 포스팅이라는 점 참고 부탁드리겠습니다.) 각 테스트에서는 약 30만 건의 동일한 데이터를 사용하였으며, 아래의 몇 가지 경우를 가지고 결과를 비교해 보았습니다.mysql 버전은 8.3.0 버전을 사용..

Programming/MySQL 2024.06.02

MySQL 공식 샘플 데이터베이스 적용하는 방법 (테스트용 데이터베이스)

MySQL에서 제공되는 샘플 데이터베이스 적용 방법해당 포스팅은 MySQL에서 공식적으로 지원하는 샘플 데이터베이스(Example Databases)를 다운로드하여 적용하는 과정을 정리한 내용입니다.(예시에서 사용된 버전은 'mysql 8.3.0 version' 입니다.) MySQL 샘플 데이터베이스 다운 및 적용https://dev.mysql.com/doc/index-other.html?ref=dbwriter.io 위 주소로 접속하면 MySQL에서 제공하는 샘플 데이터베이스를 다운로드할 수 있으며, 아래 내용을 통해서 샘플 데이터베이스 중 'world database'와 'employee data'를 적용하는 방법을 살펴보겠습니다.  world database 적용 방법우선 'world database..

Programming/MySQL 2024.05.31

(SQLD) GROUPING SETS, ROLLUP, CUBE 내용 및 예시 정리

그룹화 확장 기능 GROUPING SETS, ROLLUP, CUBE 정리 해당 포스팅에서는 'GROUP BY' 절을 확장하여 다양한 방식으로 데이터를 그룹화할 수 있도록 해주는 기능인 'GROUPING SETS', 'ROLLUP', 'CUBE'에 대해서 살펴보겠습니다. 실무에서는 사용해 본 적이 없으나 이번에 SQLD 자격증 공부 과정에서 이러한 기능이 있다는 것을 알게 되었으며, 각 기능에 대한 설명과 예시를 통해 이해하기 쉽도록 정리해 보았습니다. GROUPING SETS 내용 및 예시SELECT EMP_NO, null, SUM(SAL) -- 사원번호(EMP_NO) 기준 그룹화된 급여 합계FROM SALARIESGROUP BY EMP_NOUNIONSELECT null, PAYMENT_MONTH, S..

테이블 백업이나 분석에 사용되는 CTAS (CREATE TABLE AS SELECT) 쿼리

테이블 백업, 분석에 사용되는 CTAS 쿼리 (CREATE TABLE AS SELECT) CTAS 쿼리란?CTAS(CREATE TABLE AS SELECT)는 선택(SELECT)된 데이터셋을 새로운 테이블로 생성할 때 사용되는 SQL 구문입니다.해당 구문은 기존 테이블의 데이터를 기반으로(원본 데이터를 훼손하지 않고) 새로운 테이블을 만들고자 할 때 유용하기 때문에 테이블 백업이나 데이터 분석용 테이블을 생성하는 데 주로 활용됩니다. CREATE TABLE new_table ASSELECT column1, column2, ...FROM existing_tableWHERE condition; CTAS는 기본적으로 다음과 같은 구문으로 사용되며, 전체 테이블을 복사하는 데 사용되거나 조건부 데이터를 복사, ..

Oracle INSTR 특정 문자를 찾을 때 사용하는 함수

(oracle) INSTR 특정 문자를 찾을 때 사용하는 함수오라클에서는 대상 문자열에 대해 특정 문자열을 포함하고 있는지를 확인할 때 'INSTR' 함수를 사용합니다. 'LIKE' 연산자는 조건절(WHERE 절)에서 특정 문자열이 포함된 데이터를 찾을 때 사용되지만, 'INSTR' 함수는 특정 문자열이 포함된 NUMBER 타입의 위치 정보를 반환하기 때문에 특정 문자열이 포함되었는지와 더불어 대상 문자열을 자를 때도 활용될 수 있습니다. 해당 포스팅에서는 'INSTR 함수의 기본적인 사용법 및 사용 예시'를 정리하였습니다. INSTR 기본 형식 및 특징INSTR(대상 문자열, 찾을 문자열 [, 찾기를 시작할 위치 [, 찾을 결과의 순번]]) 'INSTR' 함수는 다음과 같은 기본 형식을 가지고 있으며,..

Programming/Oracle 2024.05.15

SQL SELECT 쿼리 실행 순서 및 처리 과정 정리

SQL SELECT 쿼리 실행 순서 및 처리 과정 정리'SELECT Query'는 데이터베이스에 저장된 데이터를 조회하는 쿼리로, SQL에서 가장 많이 사용되는 기본적이면서도 핵심적인 기능입니다.SELECT 쿼리는 일반적으로 작성하는 순서와 실행되는 순서가 다르다는 특징이 있는데요.쿼리가 실행되는 순서를 이해하는 것은 쿼리를 효율적으로 작성하고 또 최적화하는 데 중요한 역할을 한다고 생각합니다. 해당 포스팅에서는 'SELECT 쿼리의 실행 순서 및 처리 과정'을 정리하였습니다. SELECT 쿼리 실행 순서 및 처리 과정SELECT [DISTINCT] 필드명FROM 테이블명WHERE 조건GROUP BY 컬럼명HAVING 조건ORDER BY 컬럼명 [ASC || DESC](SELECT 쿼리 기본 구조)  '..

oracle 반복문(LOOP, FOR LOOP, WHILE LOOP) 사용 방법 및 예시

오라클 반복문 사용 방법 및 예시(LOOP, FOR LOOP, WHILE LOOP) 해당 포스팅은 오라클 반복문(LOOP, FOR LOOP, WHILE LOOP)을 사용하는 방법 및 간단한 예시를 정리한 내용입니다. oracle에서 반복문은 PL/SQL(Procedural Language/Structured Query Language)을 사용하여 수행되기 때문에 프로시저나 함수 등을 작성할 때도 활용될 수 있는데요.아래 내용을 통해 oracle에서 사용되는 반복문인 'LOOP', 'FOR LOOP', 'WHILE LOOP' 각각의 개념과 특징, 그리고 예시를 살펴보겠습니다. LOOP/* LOOP 기본 구조 */LOOP --반복 작업 수행 EXIT WHEN 조건;END LOOP;(LOOP 기본 ..

Programming/Oracle 2024.05.06

oracle 사용자 정의 함수 function 생성 및 실행 방법

Oracle 사용자 정의 함수(User-Defined Function) 생성 및 실행 방법오라클 데이터베이스에는 숫자 함수, 문자 함수, 날짜 처리 함수, 데이터 변환 함수 등 다양한 표준 함수가 존재하며, 이러한 표준 함수 외에도 사용자가 정의하여 사용하는 함수인 '사용자 정의 함수(User-Defined Function)'가 존재하는데요. 최근 oracle 사용자 정의 함수를 사용해 보게 되면서 함수의 생성 방법과 세부적인 내용을 정리하였으며, 참고할 수 있는 간단한 사용 예시도 함께 기록하였습니다. Function 특징먼저 사용자 정의 함수(User-Defined Function)의 몇 가지 주요 특징을 살펴보면 아래와 같습니다.(프로시저와의 차이점에 대한 내용도 일부 포함되어 있습니다.)  - 함..

Programming/Oracle 2024.05.04

(MyBatis) <![CDATA[ ]]>, CDATA 사용 이유 정리

(MyBatis) CDATA란 무엇인지, 왜 사용하는지해당 포스팅은 MyBatis에서 사용되는 'CDATA'는 무엇인지, 또 왜 사용하는지 정리한 내용입니다. XML이란?CDATA에 대해서 살펴보기 전에 CDATA가 사용되는 'XML'에 대해 간략하게 살펴보겠습니다. XML이란 'eXtensible Markup Language'의 줄임말이며, 뜻 그대로 확장 가능한 마크업 언어입니다.또 다른 마크업 언어인 HTML이 웹 페이지를 구성하기 위해 사용되는 반면, XML은 저장되는 데이터의 구조를 기술하기 위한 언어로 데이터를 저장하고 전달하기 위한 목적으로 만들어졌는데요. XML 태그의 경우 HTML 태그처럼 미리 정의되어 있지 않고, 데이터를 설명하기 위한 태그를 사용자가 직접 정의할 수 있다는 특징이 있..

Programming/Web 2024.05.01

Mac Flutter 설치 및 개발 환경 세팅

Mac Flutter 설치 및 개발 환경 세팅 Flutter SDK 다운로드 및 설정Flutter doctorAndroid studio 다운로드 및 설정Flutter 프로젝트 생성 및 Android Emulator 실행Xcode 설치 및 CocoaPods 설치 해당 포스팅은 macOS 환경에서 Flutter를 통한 개발을 하기 위해 플러터 설치 및 개발 환경 세팅을 하는 과정을 정리한 내용으로 위 순서에 따라 진행됩니다. 1. Flutter SDK 다운로드 및 설정1-1. SDK 다운로드https://docs.flutter.dev/release/archive?tab=macos(SDK 다운로드 링크) 먼저 위 경로를 통해 'Flutter SDK'를 다운로드합니다.이때 'x64', 'arm64' 두 가지 A..

Programming/Flutter 2024.04.25

(Oracle) MERGE INTO 구문 사용 방법 및 예시

오라클 MERGE INTO 구문 사용 방법 및 예시 정리시스템 상의 여러 로직에서는 데이터 처리 시 다음과 같이 데이터를 처리해야 하는 경우가 다수 있습니다. 1. 해당 데이터가 있는지 확인 'SELECT'2-1. 데이터가 있는 경우 'UPDATE'2-2. 데이터가 없는 경우 'INSERT' 이럴 때 오라클의 'MERGE INTO' 구문을 사용하면 조건에 따라 테이블에 데이터를 삽입하거나 업데이트하는 것을 한 번에 처리할 수 있는데요.이어지는 내용을 통해 'MERGE INTO 구문의 사용 방법과 예시'에 대해서 살펴보겠습니다. MERGE INTO 구문 사용 방법MERGE INTO [TABLE / VIEW] -- UPDATE 또는 INSERT 할 대상 테이블 또는 뷰USING [TABLE / VI..

Programming/Oracle 2024.04.18

MyBatis SQL Injection 발생하는 상황 및 방어 방법

MyBatis SQL Injection 발생하는 상황 및 ${ }, #{ } 바인딩 차이 1.SQL Injection 이란? 데이터베이스(Database)와 연동된 웹사이트 및 웹 애플리케이션에서 공격자가 입력 폼 또는 URL을 통해 SQL 쿼리문을 전송하여 데이터베이스를 열람 또는 조작하는 해킹 기법을 말합니다. SQL Injection 공격의 종류에는 크게 '인증 우회(Auth Bypass)', '데이터 노출(Data Disclisure)', '원격명령 실행(Remote Command Excute)' 세 가지가 있습니다. 해당 공격들은 클라이언트로부터 입력되는 데이터의 유효성을 제대로 필터링하지 않아 발생하며, 쉬운 공격 난이도에 비해 상당한 피해를 줄 수 있기 때문에 SQL Injection을 예방..

Programming/Spring 2024.04.10

JavaScript 이벤트 전파 개념과 이벤트 전파 막는 방법

JavaScript 이벤트 전파 개념 및 막는 방법 (click 이벤트 전파 문제) outer-div inner-div 다음 예시와 같이 'outer-div' 안에 'inner-div'라는 요소가 있고, 각 요소에 click 이벤트가 있는 상황에서 'inner-div'를 한 번 클릭하였을 때, 이미지 결과처럼 'click_inner_div' 함수 동작 후 'click_outer_div' 함수도 동작되는 상황을 발견하게 되었는데요. 관련된 내용을 찾아보니 JavaScript에서는 '이벤트 전파(Bubbling, Capturing)'라는 개념이 있었으며, 해당 개념 및 이벤트 전파를 막는 방법에 대해 정리하게 되었습니다. Event 전파 (Capturing, Bubbling) javascript에서 이벤트 ..