목록전체 글 (136)
우당탕탕 개발일기
원래 코드function calc_cart_total() { // 📕 전역변수를 변경하는 것이므로 액션이다. shopping_cart_total = 0; for (let i = 0; i 바꾼 코드function calc_cart() { calc_total(); // 새로 만든 함수 호출 set_cart_total_dom(); update_shipping_icons();}function calc_total() { shopping_cart_total = 0; for (let i = 0; i 새로 만든 함수(calc_total) 액션에서 계산으로 바꾸기원래 코드function calc_cart() { calc_total(); // 새로 만든 함수 호출 set_cart_total_dom(); u..
https://rilee.tistory.com/152 [쏙.함.코] 4. 액션에서 계산 빼내기🎯 테스트하기 쉽고 재사용 하기 좋은 코드를 만들기 위해 리팩토링 하는 법🎯 액션에서 계산 빼내기 var shopping_cart = []; // 전역변수var shopping_cart_total = 0; // 전역변수function add_item_to_cart() { shoppirilee.tistory.com위 4번째 포스팅에서 했던 함수에서 본격적으로 액션/계산/데이터 구분하기 1. 액션 구분하기const shopping_cart = []; // 📕 변경 가능하므로 액션에 해당한다let shopping_cart_total = 0; // 📕 변경 가능하므로 액션에 해당한다function add_item..
🎯 테스트하기 쉽고 재사용 하기 좋은 코드를 만들기 위해 리팩토링 하는 법🎯 액션에서 계산 빼내기 var shopping_cart = []; // 전역변수var shopping_cart_total = 0; // 전역변수function add_item_to_cart() { shopping_cart.push({ name, price, }); calc_cart_total(); // 장바구니 제품이 변경되었으므로 금액 합계를 업데이트}function calc_cart_total() { shopping_cart_total = 0; for (var i = 0; i TO-DO 1구매 합계가 20 달러 이상이면 무료 배송을 해주려고 함.장바구니에 넣게 되면 합계가 20달러가 넘는 제품의 구매 버튼 옆에 무료 ..
https://velog.io/@rilee/%EC%8F%99.%ED%95%A8.%EC%BD%94 부수 효과(Side Effect) 함수가 리턴값 이외에 하는 모든 일 부수 효과 없" data-og-host="velog.io" data-og-source-url="https://velog.io/@rilee/%EC%8F%99.%ED%95%A8.%EC%BD%94" data-og-url="https://velog.io/@rilee/쏙.함.코" data-og-image="https://blog.kakaocdn.net/dna/Knghf/dJMb9hC4kS1/AAAAAAAAAAAAAAAAAAAAACqtfZfjOzb4CGPCUwT6Tcxko16gGNy1oZyfmK76jW_o/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1788188399&allow_ip=&allow_referer=&signature=XwCrpW7yo99qR78d4dMdEqqRzMA%3D
일렬로 나열하지 않고, 자료 순서나 관계가 복잡한 구조 일반적으로 트리, 그래프를 의미함배열/리스트처럼 “앞뒤 순서”보다, “연결 관계·계층·우선순위”가 중요한 경우에 사용됨 1. 그래프정점과 간선으로 이루어진 자료 구조💭 예: 보니가 회사까지 출근함 → 보니와 회사는 '정점', 회사까지 가는 길은 '간선'노드 간 경로가 여러 개일 수 있음 → 정점으로 나가는 간선을 outdegree, 들어오는 간선을 indegree가중치: 간선과 정점 사이에 드는 비용그래프는 방향성 여부에 따라 나뉨방향 그래프: 간선에 방향 있음 (A → B)무방향 그래프: 방향 없음 (A — B)가중치 그래프는 “비용/거리/시간” 같은 현실 문제 모델링에 적합💭 예: 최단 경로, 추천 시스템, 의존성 분석사이클이 존재할 수 있음..
복잡도란?입력 데이터의 크기(N)가 커질 때, 알고리즘이 얼마나 오래 걸리고(시간), 얼마나 많은 메모리를 쓰는지(공간)를 수치로 표현한 것→ “이 코드, 데이터 많아지면 버틸 수 있어?”를 판단하는 기준 1. 시간복잡도입력 크기 N에 따라 어떠한 알고리즘이 실행되는 데 걸리는 시간주요 로직의 반복 횟수를 중점으로 측정컴퓨터 성능과 무관하게 알고리즘 자체의 효율을 비교 가능 → 효율적은 코드로 개선하는데 쓰이는 척도서버, 대용량 데이터, 실시간 처리에서 필수Big-O 표기법 코드보통 Big-O 표기법으로 나타냄표기의미예시O(1)항상 일정배열 첫 값 접근 / 엘리베이터 버튼 한 번 누르기O(log N)절반씩 줄어듦이진 탐색O(N)N에 비례한 번 순회 / 사람 한 명씩 줄 세우기O(N log N)효율적 정렬..
1. 인덱스의 필요성인덱스란 데이터를 빠르게 찾을 수 있는 하나의 장치인덱스를 설정하면 테이블에서 찾고자하는 데이터를 빠르게 검색 가능2. B-트리보통 B-트리 자료 구조로 구성루트 노드 - 브랜치 노드 - 리프노드로 나뉨인덱스는 1) 효율적인 단계를 거쳐 모든 요소에 접근할 수 있는 균형 잡힌 트리 구조 2) 트리 깊이의 대수확장성 때문에 효율적대수확장성트리 깊이가 리프 노드 수에 비해 매우 느리게 성장하는 것인덱스가 한 깊이씩 증가할 때마다 최대 인덱스 항목의 수는 4배씩 증가3. 인덱스를 만드는 방법인덱스를 만드는 방법은 DB마다 다르다.1) MySQL클러스터형 인덱스테이블당 하나만 설정 가능PK 옵션으로 기본키를 만들면 클러스터형 인덱스 생성 가능세컨더리 인덱스보조 인덱스 → 여러 개의 필드 값을..
1. ERD데이터 베이스를 만들기 전에 데이터 구조와 관계를 시각적으로 정리하는 단계릴레이션 간의 관계들을 정의한 것시스템의 요구 사항을 기반으로 작성됨디버깅 또는 재설계가 필요한 경우에도 설계도 역할 담당관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용But, 비정형 데이터는 충분히 표현할 수 없음🌱 비정형 데이터: 미리 정의된 데이터 모델이나 정의된 방식이 없는 정보 2. 정규화 과정릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서, 이를 해결하거나 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정데이터베이스 이상 현상삽입 이상 : 불필요한 정보를 함께 저장하지 않으면 어떤 정보를 저장하는 것이 불가능하다.갱신 이상 : 반복된 데이터 중에 일부..
여러 프로세스 중 어떤 프로세스에게 CPU를 할당할지 결정하는 정책CPU 스케줄링의 목표CPU 이용률 ↑ 하드웨어 효율 관점CPU가 놀고 있지 않도록주어진 시간에 많은 일을 하게시스템 성능 관점처리량 ↑준비 큐에 있는 프로세스는 ↓ 자원 공정성 관점불필요한 대기 ↓📝준비큐가 길다는 것은? 실행할 준비는 됐지만 CPU를 못받아 대기중이라는 뜻.응답시간 ↓ 사용자 체감 UX 관점사용자가 '멈췄다'고 느끼지 않도록CPU 스케줄링의 4가지 목표는CPU를 놀리지 않으면서,많은 일을 공정하게 처리하고,사용자가 빠르다고 느끼게 만들기 위해 존재한다.1. 비선점형 방식운영체제 초창기에는 단일 작업 위주, 사용자 입력 즉시 반응 X, 시스템 구조 단순함이 중요했기때문에 구현이 단순하고, 컨텍스트 스위칭을 최소화하며,..
2-1. 가상 메모리가상 메모리: 물리 메모리 크기보다 큰 주소 공간을 제공하는 메모리 관리 기법각 프로세스에 독립적인 가상 주소 공간 제공물리 메모리와의 매핑은 운영체제가 관리메모리 보호 및 효율적 사용 목적(1) 스와핑스와핑: 프로세스 단위로 메모리를 보조 저장장치로 이동시키는 기법메모리 부족 시 비활성 프로세스 디스크 이동필요 시 다시 메모리로 적재컨텍스트 스위칭 비용 증가 요인(2) 페이지 폴트페이지 폴트: 접근한 페이지가 물리 메모리에 존재하지 않는 상황가상 주소 접근 시 발생디스크에서 해당 페이지 적재페이지 테이블 갱신 후 명령 재실행성능 저하 주요 원인2-2. 스레싱스레싱: 페이지 교체 작업 과다로 인한 시스템 성능 급락 상태CPU 사용률 급감실행 시간 대부분을 페이지 교체에 소비메모리 부족..