조아마시

쓸모 있는 상세페이지 만들기

분류 전체보기 130

firebase 와 REACT react-router-dom 404 에러

Firebase Hosting에서 React 앱을 배포할 때, react-router-dom을 사용 중이라면 SPA(Single Page Application)의 특성 때문에 라우팅 문제로 404 에러가 발생할 수 있습니다. Firebase는 기본적으로 URL 경로에 직접 접근하면 해당 경로에 파일을 찾으려고 하기 때문입니다. 이를 해결하려면 Firebase의 rewrites 설정을 통해 모든 요청을 React 앱의 index.html로 리다이렉트하도록 설정해야 합니다.해결 방법Firebase Hosting 설정 파일 수정 Firebase 프로젝트의 firebase.json 파일을 열어 아래와 같이 설정하세요:public 폴더는 React 앱이 빌드된 폴더(build 또는 dist)로 지정해야 합니다.r..

웹개발/reactjs 2025.01.23

[R3F] Geometries 종류

기본 Geometries직육면체 모양을 만듭니다.속성: width, height, depth, widthSegments, heightSegments, depthSegments.2D 평면을 만듭니다.속성: width, height, widthSegments, heightSegments.원 모양을 만듭니다.속성: radius, segments, thetaStart, thetaLength.구 모양을 만듭니다.속성: radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength.원뿔 모양을 만듭니다.속성: radius, height, radialSegments, heightSegments, openEnded, thetaSta..

웹3D/threejs|R3F 2025.01.15

[Three.js] Global variable

const REVISION = '172'; // Three.js의 현재 버전 번호// 마우스와 터치 이벤트를 처리하는 상수들const MOUSE = { LEFT: 0, // 마우스 왼쪽 버튼 MIDDLE: 1, // 마우스 휠 클릭(가운데 버튼) RIGHT: 2, // 마우스 오른쪽 버튼 ROTATE: 0, // 마우스 회전 동작 DOLLY: 1, // 줌 동작 PAN: 2 // 이동 동작}; const TOUCH = { ROTATE: 0, // 터치 회전 동작 PAN: 1, // 터치 이동 동작 DOLLY_PAN: 2, // 줌 + 이동 동작 DOLLY_ROTATE: 3 // 줌 + 회전..

웹3D/threejs|R3F 2025.01.15

[자바스크립트] reduce()

자바스크립트의 reduce() 메서드는 배열의 모든 요소를 순회하며 값을 "누적(accumulate)"하여 단일 결과를 반환하는 고차 함수입니다. 기본적으로 배열을 줄여서 하나의 값으로 만든다는 개념으로 이해하면 됩니다. 이 값은 숫자, 배열, 객체 등 어떤 자료형이든 될 수 있습니다.기본 문법array.reduce(callback, initialValue)callback: 배열의 각 요소에 대해 실행할 함수.accumulator: 누적된 값.currentValue: 현재 처리 중인 배열 요소.currentIndex: (선택 사항) 현재 처리 중인 요소의 인덱스.array: (선택 사항) reduce가 호출된 배열 자체.initialValue: (선택 사항) 누적값(accumulator)의 초기값. 이 ..

소비기한

소비기한은 식품의 안전한 소비를 보장하는 기준으로, 식품을 섭취해도 건강에 이상이 생기지 않을 것으로 판단되는 최종 날짜를 의미합니다. 이는 식품의 보관 조건과 제품의 성질에 따라 결정됩니다. 소비기한이 지나면 식품의 안전성이 보장되지 않기 때문에 섭취를 권장하지 않습니다.소비기한과 유통기한의 차이소비기한: 식품을 안전하게 섭취할 수 있는 마지막 날짜.유통기한: 제조업체가 판매를 목적으로 한 유통 기간으로, 소비자가 안전하게 먹을 수 있는 기간과는 차이가 있을 수 있음.소비기한 표시제2023년 1월부터 대한민국에서는 기존의 유통기한 대신 소비기한 표시제가 도입되었습니다. 이에 따라 제품 포장에 "소비기한"이 표시되며, 소비자는 이를 통해 식품의 섭취 가능 여부를 판단할 수 있습니다.소비기한을 지키는 방법..

공(空)

철학에서 "공(空)"은 주로 불교 철학에서 중심적인 개념으로 다뤄지며, 특히 대승불교와 중관(中觀) 철학에서 깊이 탐구됩니다. 공의 개념은 한자로 "빈다" 또는 "비어 있다"는 뜻을 지니지만, 단순히 물리적 공간이 비어 있다는 의미와는 다릅니다. 철학적으로는 존재와 실체, 그리고 본질에 대한 심오한 논의를 포함합니다.1. 공의 기본 의미무자성(無自性): 모든 존재는 고정된 본질이나 독립적인 실체를 가지지 않는다는 의미입니다. 모든 것은 인연(因緣)에 따라 생겨나고 사라지며, 독립적으로 존재할 수 없습니다.연기(緣起): 공의 개념은 연기법과 밀접하게 연결됩니다. 연기란 모든 현상이 서로 의존적인 관계 속에서 존재하고 변화한다는 원리입니다. 따라서 "공"은 존재의 상호의존성을 강조합니다.2. 공의 철학적 의..

내란 수괴

"내란 수괴"는 형법에서 다루는 개념으로, 내란죄를 범한 주도자 또는 주요 책임자를 지칭합니다. 내란죄는 국가의 헌법 질서를 파괴하거나 국가 기관을 전복하려는 목적으로 폭력이나 위력을 행사하는 행위를 의미합니다. 이러한 행위를 조직하거나 주도한 사람은 **내란의 수괴(首魁)**로 간주되며, 형법상 특별히 더 무겁게 처벌됩니다.내란죄와 내란 수괴의 정의내란죄내란죄는 폭력이나 위력을 통해 국가의 헌법적 질서를 뒤엎거나 국가 권력을 전복하려는 행위를 말합니다.예를 들어, 정부를 무력으로 전복하거나 국회의 기능을 마비시키려는 목적이 있을 경우 해당될 수 있습니다.내란 수괴내란의 기획, 조직, 실행 등을 주도하고 지도한 핵심 인물을 가리킵니다.단순 가담자와 달리, 범죄 행위의 주된 책임자로 간주되어 가장 무거운 ..

[타입스크립트] 타입 모듈

타입스크립트 타입 모듈은 타입스크립트 코드의 재사용성과 유지보수성을 높이기 위해 타입 정의를 모듈화한 것입니다. 즉, 특정 도메인이나 라이브러리에 대한 타입 정보를 별도의 파일로 관리하여 다른 프로젝트에서도 쉽게 활용할 수 있도록 합니다.왜 타입 모듈이 필요할까요?코드 재사용성: 한 번 정의된 타입을 여러 프로젝트에서 재사용할 수 있어 개발 시간을 단축하고, 일관된 코드 스타일을 유지할 수 있습니다.타입 안정성: 복잡한 데이터 구조나 함수 시그니처를 정확하게 정의하여 컴파일 시점에 오류를 잡아내고, 실행 시 오류를 줄일 수 있습니다.코드 가독성: 복잡한 타입 정의를 모듈로 분리하여 코드를 더욱 명확하게 만들고, 다른 개발자들이 코드를 이해하기 쉽도록 합니다.커뮤니티 활용: 타입스크립트 커뮤니티에서 제공하..

[타입스크립트] 타입 호환

타입스크립트의 타입 호환은 코드의 안정성과 유지보수성을 높이는 데 핵심적인 역할을 합니다. 타입스크립트는 자바스크립트의 동적 타이핑 문제를 해결하고, 컴파일 시점에 타입 오류를 검출하여 개발자가 더욱 안심하고 코드를 작성할 수 있도록 돕습니다.타입 호환의 기본 개념구조적 타이핑: 타입스크립트는 명목적 타이핑(C#이나 Java처럼 이름으로 타입을 비교) 대신 구조적 타이핑을 사용합니다. 즉, 두 개의 타입이 동일한 구조(프로퍼티, 메서드 등)를 가지고 있으면 호환된다고 판단합니다.하위 타입: 어떤 타입 A가 다른 타입 B의 모든 프로퍼티를 가지고 있을 때, A는 B의 하위 타입이라고 합니다. 하위 타입은 상위 타입에 할당될 수 있습니다.할당 호환성: 어떤 타입 A의 값을 다른 타입 B의 변수에 할당할 수 ..

[타입스크립트] 타입 가드

더욱 안전하고 명확한 코드를 위한 필수 도구타입스크립트는 강력한 타입 시스템을 갖춘 언어로, 개발 중에 오류를 조기에 발견하고 코드의 신뢰성을 높이는 데 도움을 줍니다. **타입 가드(Type Guard)**는 이러한 타입 시스템의 핵심 기능 중 하나로, 런타임에 변수의 실제 타입을 검사하여 코드 블록 내에서 더 정확한 타입 추론을 가능하게 합니다.왜 타입 가드가 필요할까요?유연한 타입 시스템: 타입스크립트는 다양한 타입을 지원하지만, 때로는 여러 타입을 가질 수 있는 변수를 다뤄야 할 때가 있습니다.런타임 오류 방지: 타입 가드를 통해 변수의 타입을 검사하여 예상치 못한 타입으로 인한 오류를 미리 방지할 수 있습니다.코드 가독성 향상: 명확한 타입 검사를 통해 코드의 의도를 명확하게 표현하고 다른 개발..

[타입스크립트] 타입 단언

타입 단언(Type Assertion)**이란, 타입스크립트 컴파일러에게 "나는 이 값이 특정 타입이라고 확신하므로, 이에 맞춰 코드를 처리해줘"라고 알려주는 것을 의미합니다. 마치 개발자가 컴파일러에게 직접 타입을 지정해주는 것과 같습니다.왜 타입 단언을 사용할까요?타입 추론의 한계: 타입스크립트는 대부분의 경우 타입을 자동으로 추론하지만, 모든 상황을 완벽하게 파악하지 못할 때가 있습니다. 특히, 함수 오버로드, 제네릭, 또는 외부 라이브러리와의 상호 작용 시 타입 단언이 필요할 수 있습니다.더 나은 타입 안정성: 타입 단언을 통해 코드의 타입 안정성을 높일 수 있습니다. 예를 들어, 특정 조건에서 값이 특정 타입이라는 것을 확신할 때, 타입 단언을 사용하여 이후 코드에서 안전하게 해당 타입의 메서드..

[타입스크립트] 타입추론

타입 추론이란?타입스크립트에서 타입 추론이란, 개발자가 명시적으로 변수의 타입을 지정하지 않아도 컴파일러가 코드 컨텍스트를 분석하여 변수의 타입을 자동으로 추론하는 기능입니다. 이는 개발 생산성을 높이고 코드 가독성을 향상시키는 데 큰 도움이 됩니다.왜 타입 추론이 중요할까요?개발 생산성 향상: 반복적인 타입 선언을 줄여 개발 속도를 높입니다.코드 가독성 향상: 자연스러운 코드 작성이 가능해져 코드 이해를 쉽게 합니다.오류 조기 발견: 컴파일 시점에 타입 오류를 잡아내어 실행 시 예기치 못한 오류를 방지합니다.타입 추론이 일어나는 경우변수 초기화:let message = 'Hello, TypeScript!'; // message는 string 타입으로 추론let count = 42; // count는 n..

[타입스크립트] 옵셔널 파라미터

옵셔널 파라미터란 함수를 호출할 때 반드시 값을 전달해야 하는 필수 파라미터와 달리, 값을 전달하지 않아도 되는 선택적인 파라미터를 의미합니다. 타입스크립트에서는 파라미터 이름 뒤에 ?를 붙여 옵셔널 파라미터임을 나타냅니다. 왜 옵셔널 파라미터를 사용할까요?유연성: 함수의 사용 방식을 다양하게 만들 수 있습니다. 예를 들어, 기본값을 설정하여 사용자가 값을 생략하도록 하거나, 특정 상황에서만 값을 전달하도록 할 수 있습니다.안정성: 필수 파라미터가 아닌 경우, 값이 없을 때 발생할 수 있는 오류를 미리 방지할 수 있습니다.가독성: 코드를 더 명확하게 만들 수 있습니다. 어떤 파라미터가 필수이고 어떤 파라미터가 선택적인지 명확하게 구분할 수 있기 때문입니다.옵셔널 파라미터 사용 예시function gree..

[타입스크립트] 블리언 타입

타입스크립트에서 블리언 타입(boolean)**은 true 또는 false 두 가지 값만 가질 수 있는 가장 간단한 타입입니다. 마치 컴퓨터가 "예" 또는 "아니오"로 질문에 답하는 것과 같다고 생각하면 됩니다.왜 블리언 타입이 중요할까요?명확한 코드 작성: 변수에 어떤 종류의 값이 들어갈지 명확하게 지정하여 코드의 가독성을 높이고 예상치 못한 오류를 방지합니다.조건문 활용: if, else if, else 문과 같은 조건문에서 true 또는 false에 따라 코드의 실행 흐름을 제어합니다.함수의 반환값: 함수가 특정 조건을 만족하는지 여부를 boolean 값으로 반환하여 다른 함수에서 활용할 수 있습니다.다양한 예시// 변수 선언let isDone: boolean = false;let lightOn: ..

[타입스크립트] 숫자 타입

타입스크립트에서 숫자 타입은 숫자 값을 나타내는 기본적인 데이터 타입입니다. 자바스크립트와 마찬가지로 모든 숫자는 부동 소수점 숫자로 취급됩니다.숫자 타입 선언하기let num: number = 10; // 10진수let hex: number = 0xf00d; // 16진수let binary: number = 0b1010; // 2진수let octal: number = 0o744; // 8진수10진수: 우리가 일반적으로 사용하는 숫자입니다.16진수: 0x로 시작하며, 주로 색상 코드나 비트 연산에서 사용됩니다.2진수: 0b로 시작하며, 컴퓨터 내부에서 숫자를 표현하는 방식입니다.8진수: 0o로 시작하며, 과거 유닉스 시스템에서 자주 사용되었습니다.숫자 연산let x: number = 10;let y: n..

[타입스크립트] 객체 타입

타입스크립트의 객체 타입은 자바스크립트 객체의 구조와 특성을 명확하게 정의하는 데 사용됩니다. 이를 통해 개발자는 코드의 안정성을 높이고 예측 가능한 결과를 얻을 수 있습니다.객체 타입 기본 구조interface Person { name: string; age: number; isStudent: boolean;}interface: 객체의 형태를 정의하는 키워드입니다.Person: 인터페이스의 이름입니다.name, age, isStudent: 객체의 속성(property)이며, 각각의 타입이 명시되어 있습니다.다양한 예시1. 복잡한 객체interface Address { street: string; city: string; zipCode: string;}interface User { id: n..

[타입스크립트] 튜플 타입

*튜플(Tuple)**은 타입스크립트에서 길이와 각 요소의 타입이 고정된 배열을 의미합니다. 즉, 미리 정해진 순서대로 다양한 타입의 값을 가질 수 있는 특별한 배열 형태라고 생각하면 됩니다.왜 튜플을 사용할까요?명확한 데이터 구조 표현: 각 요소의 타입을 명시적으로 지정하여 코드 가독성을 높이고, 예상치 못한 오류를 방지할 수 있습니다.함수 인자 및 반환값 정의: 함수의 입력 값과 출력 값의 형태를 정확하게 지정하여 함수의 동작을 명확히 하고, 타입 안전성을 높일 수 있습니다.튜플 사용 예시// 튜플 선언let person: [string, number] = ['Alice', 30]; // 이름(문자열), 나이(숫자)// 튜플 요소 접근console.log(person[0]); // Aliceconso..

[타입스크립트] 함수 타입

타입스크립트에서 함수 타입은 함수의 매개변수와 반환 값의 타입을 명확하게 지정하여 코드의 안정성을 높이고 개발 생산성을 향상시키는 중요한 개념입니다.기본적인 함수 타입// 매개변수가 없고 숫자를 반환하는 함수function add(x: number, y: number): number { return x + y;}// 빈 배열을 반환하는 함수function createArray(): string[] { return [];}함수 선언: function 함수명(매개변수: 타입, ...): 반환타입 형태로 선언합니다.매개변수: 각 매개변수의 타입을 명시합니다.반환 값: 함수가 반환하는 값의 타입을 명시합니다.함수 타입 별칭// 함수 타입에 별칭을 부여type AddFunction = (x: numbe..

[타입스크립트] any 타입 / unknown 타입

타입스크립트의 any 타입은 어떤 값이든 할당할 수 있는 타입입니다. 마치 자바스크립트의 var 키워드처럼 타입 검사를 우회할 수 있게 해줍니다. 하지만 타입스크립트의 강력한 타입 시스템을 무력화시킬 수 있기 때문에 신중하게 사용해야 합니다.왜 any를 사용할까요?기존 자바스크립트 코드와의 호환: 타입스크립트로 마이그레이션하는 과정에서 타입을 정확히 알 수 없는 부분에 any를 임시로 사용할 수 있습니다.외부 라이브러리와의 상호 작용: 타입 정의 파일이 없는 라이브러리를 사용할 때, 임시적으로 any를 사용하여 타입 오류를 해결할 수 있습니다.동적 코드: eval()과 같은 동적 코드를 사용할 때, 결과 값의 타입을 미리 알 수 없으므로 any를 사용해야 합니다.any의 문제점타입 안정성 저하: 타입 검..

728x90