체스말 이동 구현의 어려움나는 요즘 Blazor를 이용해서 체스를 구현하는 토이 프로젝트를 진행 중이다.더보기Blazor: C# 및 HTML을 사용하여 웹 앱을 만들 수 있는 자유-오픈 소스 프레임워크. 서버의 경우 ASP.NET Razor 구문을 사용하여 정의된 UI와 함께 ASP.NET Core 서버 프로세스에서 호스팅된다.참고) https://ko.wikipedia.org/wiki/%EB%B8%94%EB%A0%88%EC%9D%B4%EC%A0%80_(%EC%9B%B9_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC)그런데 생각지도 못한 곳에서 문제가 발생했다. 생각보다 체스말 움직임을 구현하기가 까다로웠던 것이다. 단순히 말을 이동시키는 것뿐만 아니라 다음과 같은 ..
두 DB 특징 RDBMS (PostgreSQL)구조화된 스키마와 엄격한 데이터 일관성.ACID 트랜잭션 보장.복잡한 조인 연산 지원.수직적 확장(Scale-up) 중심.정규화된 데이터 구조.NoSQL (MongoDB)유연한 스키마 (Schema-less).수평적 확장(Scale-out) 용이.문서 기반 데이터 모델.높은 쓰기/읽기 처리량.실시간 데이터 처리에 최적화. 채팅 시스템 MongoDB 도입 배경높은 쓰기 성능실시간 채팅에서 발생하는 대량의 메시지 저장에 유리.샤딩을 통한 수평적 확장 용이.읽기 성능 향상채팅 이력 조회 시 조인 없이 단일 컬렉션에서 조회 가능.인덱싱을 통한 빠른 검색.데이터 구조 최적화채팅 메시지는 정규화가 필요 없는 문서 형태로 저장하기 적합.메시지, 시간, 사용자 정보 등을 ..
Git Actions란?소프트웨어 개발 워크플로우를 자동화할 수 있는 CI/CD(지속적 통합/지속적 배포) 플랫폼. 주요 특징 자동화된 워크플로우: 코드 빌드, 테스트, 배포 등을 자동으로 실행.다양한 트리거: push, pull request, 스케줄링 등 다양한 이벤트로 워크플로우 실행 가능.매트릭스 빌드: 여러 운영체제나 Node.js 버전에서 동시에 테스트 가능.재사용 가능한 액션: 커뮤니티에서 제공하는 다양한 액션 사용 가능.실습먼저 .github/workflows 디렉토리 생성 후 ci.yml 파일 만들기.name: Node.js CIon: push: branches: [main] pull_request: branches: [main]jobs: test: runs-on: ..
관리구문DML (Data Manipulation Language)데이터의 삽입(INSERT), 수정(UPDATE), 삭제(DELETE), 병합(MERGE).저장(commit) 혹은 취소(rollback) 반드시 필요.INSERT테이블에 행을 삽입할 때 사용.한 번에 한 행만 입력 가능.(SQL Server - 여러 행 동시 삽입 가능)하나의 컬럼에는 한 값만 삽입 가능.컬럼 별 데이터타입과 사이즈에 맞게 삽입.INTO 절에 컬럼명을 명시하여 일부 컬럼만 입력 가능. 작성하지 않은 컬럼은 NULL이 입력된다. (NOT NULL 컬럼의 경우 오류 발생.)전체 컬럼에 대한 데이터 입력 시 테이블명 뒤의 컬럼명 생략 가능.UPDATE데이터 수정할 때 사용. 컬럼 단위 수행. 다중 컬럼 수정 가능.DELETE데이..
SQL 활용WINDOW FUNCTION서로 다른 행의 비교나 연산을 위해 만든 함수. GROUP BY를 쓰지 않고 그룹 연산 가능. LAG, LEAD, SUM, AVG, MIN, MAX, COUNT, RANK 등. 문법더보기SELECT 윈도우함수([대상]) OVER([PARTITION BY 컬럼][ORDER BY 컬럼 ASC/DESC][ROWS/RANGE BETWEEN A AND B])PARTITION BY, ORDER BY, ROWS 등... 절 전달 순서가 중요! (ORDER BY를 PARTITION BY 전에 사용 불가.)그룹 함수의 형태SUM, COUNT, AVG, MIN, MAX 등. OVER 절을 사용하여 윈도우 함수로 사용 가능. 반드시 연산할 대상을 그룹함수의 입력값으로 전달.SUM OVE..
SQL 활용서브쿼리하나의 SQL문 안에 포함되어 있는 또 다른 SQL문을 말한다. 반드시 괄호로 묶어야 한다. ex. SELECT 안에 SELECT문, INSERT, UPDATE, DELETE 안의 SELECT문.서브쿼리 사용 가능한 곳SELECT 절FROM 절WHERE 절HAVING 절ORDER BY 절기타 DML(INSERT, DELETE, UPDATE) 절GROUP BY 절 사용 불가!서브쿼리 종류동작하는 방식에 따라UN-CORRELATED(비연관) 서브쿼리: 서브쿼리가 메인쿼리 컬럼을 가지고 있지 않은 형태의 서브쿼리. 메인쿼리에 서브쿼리가 실행된 결과 값을 제공하기 위한 목적으로 사용.CORRELATED(연관) 서브쿼리: 서브쿼리가 메인쿼리 컬럼을 가지고 있는 형태의 서브쿼리. 일반적으로 메인쿼..