전체 글 23

[ASAC] JavaScript : Hoisting ~ Async/Await

Hoisting (호이스팅)JavaScript에서 변수와 함수 선언은 해당 스코프의 최상단으로 끌어올려지는 현상이 있다. 이를 호이스팅(Hoisting)이라고 한다. 함수와 변수의 선언 방식에 따라 동작이 다르다. 함수 선언문 (Function Declaration)호이스팅 발생 : 함수가 코드 실행 전에 메모리에 등록되므로 선언 전에 호출 가능.hoisting() // 함수 호이스팅 = function is hoistedfunction hoisting() { console.log('function is hoisted')} 함수 표현식 (Function Expression)변수 호이스팅 발생 : 변수만 선언되고 초기화는 되지 않으므로 선언 전에 호출하면 오류 발생.hoisting() // 변수 호이스팅 ..

공부 2025.01.05

[ASAC] JavaScript 심층 탐구 : 함수, 객체, 그리고 엔진 동작 방식

JavaScript는 독특하게도 함수형 프로그래밍 패러다임과 객체지향 프로그래밍 패러다임을 모두 지원한다.핵심은 바로 함수와 객체이다.객체지향 프로그래밍 패러다임JavaScript는 클래스와 객체를 활용하여 객체지향 프로그래밍 패러다임의 여러 패턴을 구현할 수 있다.클래스와 상속클래스 기반 상속을 통해 코드 재사용성을 높이고 구조적인 설계를 적용할 수 있다TypeScript를 통한 인터페이스 도입TypeScript를 사용하면 인터페이스를 활용해 다형성을 구현하고 더 강력한 타입 시스템을 적용할 수 있다.함수형 프로그래밍 패러다임함수형 프로그래밍은 주로 일급 함수와 순수 함수라는 두 가지 개념으로 나뉜다.일급 함수 (First-Class Functions)JavaScript에서 함수는 다음과 같은 특징을 ..

공부 2025.01.01

[ASAC] Git CLI 학습

로컬에서 프로젝트를 시작하여 GitHub 저장소에 업로드하는 전체 과정을 순서대로 정리하였다.1. 현재 위치 확인먼저 Git Bash를 실행한 후 현재 위치가 어딘지 확인2. SSH Key 발급원격 저장소(GitHub)에 안전하게 연결하기 위해 SSH 키를 발급한다.SSH Key 발급 명령어ssh-keygen -t ed25519 -C "your_email@example.com"이때 "your_email@example.com"은 GitHub에 등록된 이메일 주소를 입력해야 한다.SSH 키 발급 시 주의점Passphrase를 설정하는 경우 SSH를 사용할때마다 입력해야해서 번거롭다.2-1. SSH Key 발급 확인바로 위에서 발급한 SSH키가 잘 발급 되었는지 확인한다. 확인 하는 방법은 2가지가 있다.1...

공부 2024.12.29

[ASAC] 리눅스 쉘(Shell) 명령어 정리

리눅스 쉘(Shell)이란?리눅스 쉘(Shell)은 사용자와 운영체제의 핵심 부분인 커널(Kernel)을 연결하는 인터페이스이다.유저가 직접 커널을 다루기는 어렵기 때문에 쉘을 통해 명령어로 간편하게 시스템을 제어할 수 있다.사용자는 쉘을 통해 명령어를 입력하여 파일 관리, 프로세스 제어, 시스템 설정 등을 수행할 수 있다. CLI(Command Line Interface) 환경에서 주로 사용된다.리눅스 쉘(Shell)을 사용하는 이유리눅스 쉘은 사용자와 운영체제 간의 중간 다리 역할을 한다.효율성: 명령어를 통해 반복 작업을 자동화하거나 빠르게 수행 가능유연성: 다양한 명령어와 스크립트를 조합하여 복잡한 작업 처리제어력: 시스템 내부를 깊이 탐색하고 제어 가능호환성: 서버, 클라우드 환경 등 GUI 없..

공부 2024.12.29

[ASAC] 코드 관리 : Git & GitHub

로컬 코드 및 협업 시 코드 관리로컬 코드 관리개발 과정에서 로컬 코드를 효율적으로 관리하는 것은 생산성과 안정성에 매우 중요하다. 다양한 버전 관리하나의 코드에서 여러 케이스를 구현하거나 테스트해야 할 때 Git을 통해 다양한 브랜치를 만들어 독립적으로 개발할 수 있도록 도와준다.히스토리 추적 및 롤백작업 중 문제가 발생했다면 Git의 히스토리를 통해 이전 변경 사항을 추적하거나 필요할 경우 직전 버전으로 손쉽게 되돌릴 수 있다.중앙 코드 관리 (협업)하나의 프로젝트를 여러 사람이 함께 개발할 때는 중앙 코드 관리가 필수이다.변경 사항 충돌 방지“어? 저 그 부분 수정했는데요.” → “저도 그 부분 바꿨습니다!” → “어라...?” 이런 상황을 방지하기 위해 Git은 변경 사항 병합과 충돌 해결 기능을..

공부 2024.12.28

[ASAC] 웹 보안 기초 : CORS와 CSRF의 이해

CORS란?CORS(Cross-Origin Resource Sharing)은 AJAX 요청의 보안을 강화하기 위한 정책이다.기본적으로 브라우저는 SOP(Same-Origin Policy)라는 정책을 통해 동일 출처(origin)의 요청만 허용한다.그러나 AJAX 요청으로 타 사이트에 접근해야 하는 경우 이를 보완하기 위해 CORS 정책이 필요하다.SOP(Same-Origin Policy)란?SOP는 웹 브라우저의 보안 정책으로 요청을 보낸 페이지의 origin이 동일한 서버에서만 데이터를 가져올 수 있도록 제한한다.Origin 구성 : Scheme + Domain + Port더보기Site             :  https://wjddnr0208.tistory.com:54321/helloDomain  ..

공부 2024.12.27

[ASAC] Cookie와 Storage의 차이

Cookie란?Cookie는 웹 서버가 웹 브라우저에 저장하고 이후 요청마다 서버로 전송되는 데이터이다.웹 서버는 쿠키를 통해 브라우저를 식별하고 상태를 유지한다. 특징저장 위치클라이언트 측(웹 브라우저)에 저장된다.유효 시간Persistent Cookie(지속 쿠키) : MaxAge나 Expires 속성으로 유효 기간이 설정된 쿠키 브라우저를 닫아도 저장된다.Session Cookie(세션 쿠키) : 유효 기간이 설정되지 않은 쿠키로 브라우저를 닫으면 삭제된다.도메인 및 경로 제한Same-Site: URL이 같을 때만 전송한다.Cross-Site: 다른 도메인에서 요청 시에도 전송되는 경우를 말하며 이는 서드파티 쿠키로 취급된다.보안시크릿 모드에서는 쿠키가 저장되지 않는다.민감한 정보는 쿠키에 저장하지..

공부 2024.12.27

[ASAC] HTTP Cache

HTTP Cache란?HTTP Cache는 클라이언트(주로 웹 브라우저) 또는 서버 혹은 중간 서버(프록시 서버)가 데이터를 캐시하여 동일한 요청에 대한 서버의 부담을 줄이고 응답 시간을 단축하는 기술이다.HTTP Cache를 사용하는 이유서버 부하 완화서버가 동일한 요청에 대해 동적인 웹 페이지를 반복 생성할 필요가 없다.서버가 모든 요청을 처리할 필요 없이 캐시가 일부 트래픽을 분담한다.클라이언트 성능 개선불필요한 데이터 전송이 줄어들어 네트워크 트래픽이 감소한다.빠른 응답 시간으로 인해 더 나은 사용자 경험을 제공한다.웹 서버 캐시 사용 시 = 서버 부하 완화 웹 브라우저 캐시 사용시 = 클라이언트 성능 개선HTTP Cache의 저장 유형Private Cache : 특정 사용자만 사용하는 캐시.개인..

공부 2024.12.24

[ACAC] 트래픽 관리와 배포 문제 해결

트래픽 분산가장 기초적으로 단 한개의 웹 서버를 통해 우리의 웹 어플리케이션 서비스를 제공하는 경우 아래 두 문제가 발생한다.대량의 트래픽이 한개의 웹 서버에 집중되는 경우한개의 웹 서버가 트래픽을 감당하지 못해 터져버린다 → 수직적 확장 혹은 수평적 확장이 필요수직적 확장 [Scale-up] : 서버의 자체의 성능을 업그레이드(예: CPU, 메모리 증설)하여 처리 능력을 높인다.수평적 확장 [Scale-out] : 여러 대의 서버를 추가해 트래픽을 분산한다.새 버전의 웹 어플리케이션을 배포 시새로운 웹 서버에 배포하는 경우 IP 가 변경기존의 웹 서버에 배포를 하더라도 기존 버전을 정지하고 새 버전을 구동하는 동안 유저는 사용하지 못함CDN = L1 Reverse Proxy CDN(Content Del..

공부 2024.12.24

[ASAC] 연속성, 동시성, 그리고 서버 선택

연속성 : Blocking vs Non-Blocking연속성은 작업이 수행되는 동안 CPU가 멈추는지 여부를 중심으로 구분된다.Blocking하나의 작업이 간간히 방해받으며 수행된다.방해 : 작업 상태를 주기적으로 확인하거나 자원을 기다리기 위해 잠시 멈추는 경우가 된다.Non-Blocking작업이 어떠한 방해도 받지 않고 수행된다.자원을 기다리는 동안에도 다른 작업을 계속 진행할 수 있습니다.동시성 : Synchronous vs Asynchronous동시성은 작업의 병렬 처리 가능 여부를 중심으로 구분된다.Synchronous (동기)앞선 작업이 완료된 후에 다음 작업을 수행한다작업이 끝날 때까지 현재 작업이 대기 상태에 머문다.Asynchronous (비동기)앞선 작업이 완료되지 않아도 다음 작업을 ..

공부 2024.12.24