분류 전체보기 541

[apache] mod_rewrite 이용하여 www 자동으로 붙여주자

mod_rewrite 모듈 활성화 확인:대부분의 경우, AlmaLinux와 같은 RHEL 기반 배포판에서는 mod_rewrite가 기본적으로 활성화되어 있습니다.# httpd -M | grep rewrite출력에 rewrite_module (shared)가 나타나면 이미 활성화된 것입니다..htaccess 파일 사용 허용:.htaccess 파일에서 URL 재작성 규칙을 설정할 수 있도록 허용하려면, 다음과 같이 아파치 설정 파일에서 AllowOverride 지시자를 수정합니다 AllowOverride All.htaccess 파일 생성:RewriteEngine OnRewriteCond %{HTTP_HOST} !^www\. [NC]RewriteRule ^(.*)$ http://www.%{HTTP_HOS..

인프라 2024.11.14

높은 응집력과 느슨한 결합

느슨한 결합모듈 간의 의존성(dependency)을 낮춰 각 모듈을 독립적으로 변경할 수 있도록 하는 원칙입니다. 예를 들어, 주문 처리 모듈이 결제 모듈과 느슨하게 연결되어 있다면, 결제 방식이 바뀌어도 주문 처리 모듈은 영향을 받지 않습니다.높은 응집도모듈 내부 요소들이 밀접하게 결합되어, 해당 모듈의 기능이 일관성 있게 수행하도록 하는 원칙입니다. 결제 모듈 내 모든 클래스와 함수가 결제 처리 작업에만 집중하도록 하는 것을 예로 들 수 있습니다.

프로그래밍 2024.10.29

루트 인증서 개인 인증서 개념정리

인증서 개념정리와 발급하는 과정을 알아보도록 하겠습니다.개인 인증서발급은  루트 인증서가 이미 발급되어 있는 상태에서 개인 인증서를 발급하는 과정을 보여주고 있습니다.인증서 종류루트 인증서 (Root Certificate): 신뢰의 최상위 계층에 있는 인증서입니다. 자체 서명되어 있으며, 다른 인증서의 유효성을 검증하는 데 사용됩니다. 중간 인증서 (Intermediate Certificate): 루트 인증서와 최종 사용자 인증서 사이에 위치합니다. 최종 사용자 인증서 (End-user Certificate): 실제 웹사이트나 서비스에서 사용되는 인증서입니다.인증서 생성과정  .루트 인증서개인키 생성 자체 서명된 인증서 생성  .사용자 인증서개인키 생성 인증서 서명 요청(CSR) 생성 루트 인증서로 CS..

인프라 2024.10.25

Promise.all 모든 비동기 작업이 끝난후 작업 실행

Promise.all은 JavaScript에서 여러 개의 비동기 작업을 병렬로 처리하기 위한 메서드입니다.주요 특징병렬 실행: 여러 프로미스를 동시에 실행합니다배열 입력: 프로미스 배열을 인자로 받습니다단일 프로미스 반환: 모든 프로미스의 결과를 담은 배열을 반환하는 새로운 프로미스를 생성합니다전체 완료 대기: 모든 프로미스가 이행(fulfilled)될 때까지 기다립니다순서 보장: 결과 배열은 입력된 프로미스 순서를 유지합니다빠른 실패: 하나라도 거부(rejected)되면 전체가 즉시 거부됩니다성능 향상: 독립적인 비동기 작업들을 동시에 처리하여 전체 실행 시간을 단축합니다Promise.all은 여러 API 호출 결과를 한 번에 처리하거나, 독립적인 데이터 fetching을 병렬화하는 등의 상황에서 유용..

프로그래밍/Js 2024.10.25

Promise 와 async await 대해 자세하게 알아보자.

Promise는 JavaScript에서 비동기 작업을 처리하기 위한 객체입니다. Promise의 주요 특징과 기본 개념은 다음과 같습니다:상태(State)Promise는 세 가지 상태 중 하나를 가집니다. 이는 resolve 와 reject 호출함으로써 반영됩니다.Pending (대기) :  Promise가 생성된 초기 상태입니다. 비동기 작업이 아직 완료되지 않은 상태를 의미합니다. new Promise()로 Promise를 생성하면 이 상태가 됩니다. Fulfilled (이행) : 비동기 작업이 성공적으로 완료된 상태입니다. Promise 내부에서 resolve 함수가 호출되면 이 상태가 됩니다. .then() 메서드를 통해 처리 결과를 받을 수 있습니다. Rejected (거부) : 비동기 작업이 ..

프로그래밍/Js 2024.10.24

indexedDB 기초 사용법

IndexedDB는 키-값 쌍으로 데이터를 저장하는 객체 지향 데이터베이스입니다.주로 대용량의 구조화된 데이터를 클라이언트에 저장하기 위해 사용됩니다.주요 특징비동기 작동: IndexedDB는 비동기 API를 사용하여 UI 블로킹을 방지합니다트랜잭션 지원: 데이터의 일관성을 보장하기 위해 트랜잭션을 지원합니다인덱싱: 빠른 검색을 위해 객체의 속성을 사용하여 인덱스를 생성할 수 있습니다대용량 데이터 처리: 상대적으로 큰 양의 데이터를 로컬에 저장할 수 있습니다전체소스const IndexedDB = class { dbName = 'iDB'; objName = ''; constructor(dbName) { if(dbName) this.selectDb(dbName); } ..

프로그래밍/Js 2024.10.07

약수 구하기

약수를 구하는 알고리즘에는 몇 가지 방법중 가장 일반적이고 효율적인 방법기본적인 방법:1부터 해당 숫자까지 모든 수로 나누어 보는 방법입니다.시간 복잡도: O(n)제곱근을 이용한 최적화 방법:숫자의 제곱근까지만 검사하는 방법입니다.시간 복잡도: O(√n)제곱근을 이용한 최적화 방법의 알고리즘은 다음과 같습니다:주어진 수 n의 제곱근까지 반복합니다.i가 n의 약수라면, i와 n/i 모두 약수입니다.i와 n/i가 같지 않은 경우에만 두 수를 모두 약수 목록에 추가합니다.예를들어 36의 약수를 구하면 const res=[1]; const divisor=n=>{ let i=2; for(i; ia-b));n = 36Math.sqrt(36) = 6, 따라서 i는 1부터 6까지 반복합니..

알고리즘 2024.09.12

Array.reduce 여러가지 사용 사례

사례 1 사용: 숫자 합산reduce()의 가장 간단한 사용 사례 중 하나는 여러 숫자를 합산하는 것입니다.정수 배열이 있고 총합을 구하고 싶다고 가정해 보겠습니다.// 반복문 사용const numbers = [1, 2, 3, 4, 5];let sum=0;for(let i=0; iacc+curr, 0);console.log(sum);와우! 코드 한 줄만으로 배열의 모든 요소의 합을 계산했습니다.어큐뮬레이터의 초기 값은 0으로 설정되고 각 반복에서 현재 요소를 어큐뮬레이터에 추가합니다.시작 값을 제외하기로 선택하면 reduce는 배열의 첫 번째 항목만 사용합니다.하지만 저는 항상 초기 값을 포함하는 경향이 있어서 읽기가 더 쉽습니다.사용 사례 2: 배열 평면화여러분은 여러 배열을 보면서 "이걸 하나의 배열..

프로그래밍/Js 2024.08.27

[es6] 단축평가 예제 (short-circuit evaluation)

acc[curr] = (acc[curr] || 0) + 1;JavaScript의 논리 연산자(||)의 특성을 활용한 매우 간결하고 효과적인 패턴입니다. 이를 "단축 평가(short-circuit evaluation)"라고 부르기도 합니다.이 패턴의 작동 원리를 더 자세히 설명해 드리겠습니다:논리 OR 연산자(||)의 특성:JavaScript에서 ||는 왼쪽 피연산자가 truthy면 왼쪽 피연산자를 반환합니다.왼쪽 피연산자가 falsy면 오른쪽 피연산자를 반환합니다.Falsy 값:JavaScript에서 falsy 값은 false, 0, '', null, undefined, NaN입니다.객체의 존재하지 않는 속성에 접근하면 undefined를 반환합니다.이 패턴의 동작:acc[curr]가 존재하면(즉, 0이..

프로그래밍/Js 2024.08.26

제네레이터(generator) 의 실무 적용

개요사이트 처음 접속시 레이어 팝업을 4개 open 합니다.그런데 무작정 띄우는게 아니라 첫번째 레이터 팝업 닫으면 그다음 레이어 팝업 뜨고 또 닫으면 그다음 팝업이 떠야 합니다.알고리즘을 어떻게 구현할까 생각하다 generator 를 사용하여 팝업 닫으면 그 다음 레이어 팝업을 뜨게 구현합니다.실제 코드는 아래코드보다는 많이 복잡하지만 제네레이터 사용 방법을 알고자 간단한 코드로 처리했습니다.html ~~~ 팝업 1 내용 닫기 ~~~ 팝업 2 내용 닫기 ~~~ 팝업 3 내용 닫기 ~~~ 팝업 4 내용 닫기위 코드는 다음과 같이 작동합니다:popupIds 배열에 모든 팝업의 ID를 저장합니다.currentPopup은 현재 열려있는 팝업의 ID를 저장하는 반응형 참조(ref)입니다.p..

프로그래밍/Js 2024.08.23