전체 글 132

[Github Action] 프론트 AWS S3+네이버 클라우드(ncloud) 연동 배포

Github Action 을 이용해서 프론트 레포지토리의 main에 push가 되면, build 후 build된 파일을 통째로 s3 버켓에 올리는 작업이다. 이를 네이버 클라우드에 연동된 S3 버켓에 올리는 작업을 진행한다. 네이버클라우드에 연동하는 방법은 아래 글에 자세히 잘 나와있다. https://deokisys.github.io/%EA%B8%B0%ED%83%80%EA%B0%9C%EB%B0%9C/2021/12/21/github-action%EA%B3%BC-ncloud.html 몇 가지 수정한 것만 정리해보자면 private 레포지토리여서 github token을 추가 aws access key 관련 정보는 github > security > deploy keys에서 설정 후 secret.를 이용해 ..

git 2022.11.14

7장. 오류 처리 - 자바스크립트 클린코드

예외를 사용하지 않을 경우 함수를 호출한 즉시 오류를 확인해야 하는 번거로움이 있다. 따라서, 오류가 발생하면 예외를 던지도록 코드를 짜는 것이 더 좋다. 그래야 논리와 오류 처리 코드가 섞이지 않는다. Try - Catch - Finally try 블록에서 무슨 일이 생기든이 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다. 예외가 발생하는 코드를 짤 때는 웬만하면 try-catch-finally문으로 작성하는 것이 좋다. 사용 예 try { nonExistentFunction(); } catch (error) { console.error(error); // expected output: ReferenceError: nonExistentFunction is not defined // Not..

6장. 객체와 자료구조

6-1. 자료 추상화 추상 인터페이스를 사용하여 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. 자료를 세세하게 공개하는 것보다는 추상적으로 개념을 표현하는게 더 좋다. Best public interface Vehicle { double getPercentFuelRemaining(); } 6-2. 자료/객체 비대칭 - 객체 : 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개 - 자료구조 : 자료를 그대로 공개하며 별다른 함수 제공x 서로 상반되는 특징을 가지고 있다. 객체는 기존 함수를 훼손하지 않으면서 새로운 클래스를 추가하기 쉬우나, 새로운 함수를 추가하기 어렵다. (모든 클래스를 고쳐야 하기 때문) 자료구조는 기존 자료구조를 훼손하지 않으면서 새로운 함수를..

SQL - GROUP BY, HAVING 절

집계 함수란(Aggregate Function)? : 여러 행들의 그룹이 모여서 그룹당 하나의 결과를 반환하는 다중행 함수 [특징] - GROUP BY절 : 행들을 소그룹화 한다. - SELECT 절, HAVING 절, ORDER BY 절에서 사용할 수 있다. [종류] 집계 함수 사용목적 COUNT(*) NULL 값 포함, 행의 수 계산 COUNT(표현식) 표현식이 참인 행의 수 계산 (NULL값 제외) SUM([DISTINCT | ALL] 표현식) 표현식의 NULL값을 제외한 합계 AVG([DISTINCT | ALL] 표현식) 표현식의 NULL값을 제외한 평균 MAX([DISTINCT | ALL] 표현식) 표현식의 최대값 MIN([DISTINCT | ALL] 표현식) 표현식의 최소값 STDDEV([DI..

Backend/SQL 2022.11.05

SQL 기본 및 활용 (3) - 트랜잭션

Transaction(트랜잭션) : 데이터베이스의 논리적 연산단위. 분리될 수 없는 한 개 이상의 데이터베이스 ALL | Nothing 의 개념 하나 이상의 SQL문이 포함된다. [개요] - 트랜잭션 : 세부적인 연산들의 집합 -> 대상 DML (UPDATE, INSERT, DELETE) - 커밋 : 반영된 데이터를 데이터베이스에 반영시킴 - 롤백 : 트랜잭션 시작 이전의 상태로 되돌리기 특성 설명 원자성 트랜잭션에서 정의된 연산들은 모두 실행되거나 실행되지 않아야 한다. (All or Nothing) 일관성 트랜잭션 실행 이전에 무언가 잘못되어 있지 않았었다면, 실행 후에도 잘못되어 있지 않아야 한다. 고립성 트랜잭션 실행 도중 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들면 안된다. 지속성 트랜잭션..

Backend/SQL 2022.11.05

SQL 기본 및 활용 (2) - DML

DML : Data Manipulation Language (데이터 조작어) -> 만들어진 테이블의 데이터를 입력, 수정, 삭제, 조회하는 언어 1. INSERT INSERT INTO [테이블명] (칼럼1, 칼럼2, ..) VALUES (값1, 값2, ..); OR INSERT INTO [테이블명] VALUES (전체 컬럼에 넣을 value 리스트); ex) INSERT INTO PLAYER (PLAYER_ID, PLAYER_NAME, TEAM_ID) VALUES ('2002007', '박지성', 'k07'); 2. UPDATE UPDATE 테이블명 SET (수정되어야 할 칼럼명) = (수정되기를 원하는 값); ex) 일괄적으로 수정 UPDATE PLAYER SET BACK_NO = 99; 3. DELE..

Backend/SQL 2022.11.04

SQL 기본 및 활용 (1) - DDL

DB 설치 없이 SQL 실습을 위해 오라클의 Live SQL을 사용하였다. 1. 테이블 생성 CREATE TABLE TEAM ( TEAM_ID char(3), REGION_NAME varchar(8), TEAM_NAME char(40), E_TEAM_NAME varchar2(50), ORIGIN_YYYY char(4), STADIUM_ID char(3), ZIP_CODE1 char(3), ZIP_CODE2 char(3), ADDRESS varchar2(80), DDD varchar(3), TEL varchar(10), FAX varchar(10), HOMEPAGE varchar2(50), OWNER varchar(10)); 2. 제약조건 추가 - Primary Key 추가 ALTER TABLE TEAM ..

Backend/SQL 2022.11.04

5장. 형식 맞추기

5-1. 형식을 맞추는 목적 코드 형식은 언제나 중요하다 “오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다.” 코드가 너무 많이 바뀌어서 이력을 찾아보기 힘들어지더라도, 처음 작성시 잡아둔 구현 스타일과 가독성 수준은 유지보수의 용이성, 확장성에 영향을 미칠 수 밖에 없다. 원활한 소통을 장려하기 위한 형식은 무엇일까? 5-2. 적절한 행 길이를 유지하라. 신문기사 처럼 위→ 아래로 시선의 흐름대로 코드가 읽힐 수 있도록 작성하기 개념은 빈 행으로 구분해라. → 덩어리화 세로 밀집도 → 연관성 수직거리 소스의 조각들이 어디에 있는지 거슬러 올라가는 작업은 많은 시간과 노력을 필요로 한다. 서로 밀접한 개념은 세로로 가까이둔다. 변수선언 : 사용하는 위치에 최대한 가깝게 한다...

3장. 함수

1. 작게 만들어라. if/else 문 또는 while 문에 들어가는 블록은 한 줄 이면 충분하다. - 대부분 block 에서 함수 호출 문을 사용한다. - 중첩구조가 생길 만틈 함수 구조가 복잡해서는 안된다. 2. 한 가지만 해라! 익히 들었던 말이다. 함수는 오로지 “한 가지의 기능”만 한다. 그 한 가지만을 잘하는 도록 만드는 것의 우리의 목표이다. 🤔 여러 조건문이 필요한 경우에는 어떻게 하나요? - 단순 다른 표현이 아니더라도, 의미있는 이름으로 지은 다른 함수를 호출/추출할 수 있다면, 그 함수는 여러 작업을 하는 셈이다. 3. 위에서 아래로 읽을 수 있도록 Top-Down 방식 한 가지 의미를 갖는 함수를 만들어야 함수를 위에서 아래로 읽어 내려갈 수 있다 4. Switch문 switch문은..