Rust | rust 개념 정리 - 컬렉션

크기가 가변적인 배열이다. 초기값을 지정하지 않는다면 명시적으로 타입을 지정해야 한다. String은 UTF8로 저장되므로 적절하게 인코딩된 모든 문자를 넣을 수 있다. 문자열은 UTF8으로 저장되므로 인덱서를 통한 접근이 불가능하며 컴파일 단계에서 에러가 발생한다. 슬라이싱을 통한 경우에도 유효하지 않은 구간을 슬라이싱하면 패닉이 발생한다. 위 예시에서 ...

Rust | rust 개념 정리 - 구조체

구조체의 필드명과 변수명이 동일하다면 필드명 : 변수명 대신 필드명만 적어도 된다. 위의 예시에서 getuser1와 getuser2는 동일한 역할을 수행한다. 기존 구조체를 기반으로 새 구조체를 생성하고 싶다면, .. 를 통해 기존 구조체의 값을 그대로 가져올 수 있다. 새 필드를 추가로 입력하여 기존 구조체에서 갱신할 새 필드를 지정할 수도 있다. 새 구...

Index | Rust 언어 정리

Rust | rust 개념 정리 - 소유권

소유권(ownership)은 메모리 안전성을 보장하기 위한 개념으로 세가지 규칙을 가진다. 1. 각 값은 소유자(owner)라 불리는 변수를 가진다. 2. 한 시점에 특정 값의 소유자는 단 하나 뿐이다. 3. 소유자의 생명 주기가 끝나면 그 값은 자동으로 해제(drop)된다. c++에서 사용되는 RAII와 유사한 개념으로 볼 수 있으며, 해당 개념이 언어 ...

Rust | rust 개념 정리 - 기본 정리

fn : 함수 정의 키워드 이후 설명에서 추가 함수를 작성하지 않을 경우 main 문을 생략함 let 키워드를 통해 정의, 기본적으로 불변 뒤에 mut를 붙이면 가변성을 가진다. let을 통해 새 변수를 bind하면 이전 변수는 가려짐 동일한 이름의 이전 변수와는 별개이므로, 새로 바인딩되는 변수의 유형을 변경할 수 있다. 정수 자료형 (signed, ...

JS/TS | 배열 메서드

아래의 배열 메서드는 모두 원본 배열을 건드리지 않는다. reduce를 제외한 메서드의 인자는 공통적으로 (element, index)=any 형태의 콜백 함수이며, index를 사용하지 않는다면 (element)=any로 사용해도 된다. Array.reduce(콜백[, 초기값]) reduce는 약간 복잡한데, 이전 콜백 호출의 리턴이 다음 콜백의 첫번째 ...

Node.js | rollup + typescript 환경 구성

tsconfig.json 설정은 자유롭게 작성하면 된다 패키지로 출력할 것이 아니라면 declaration, declarationDir(d.ts 파일 생성 여부)옵션은 제거해도 된다 external 옵션을 통해 electron을 번들링에서 명시적으로 제외해야 한다. import문에서 경로를 프로젝트 기준의 절대 경로처럼 별칭을 통해 사용할 수 있다. 위 ...

React.js | 다언어 지원 라이브러리 react-i18next

@WIP

RUST | rust 리눅스 환경 구축

npm link

npm link는 로컬에서 패키지를 심볼릭 링크를 통해 다른 프로젝트에서 사용할 수 있도록 하는 명령어다. 외부로 배포하지 않은 채로 로컬 패키지에 임포트할 수 있으며, 심볼릭 링크를 이용하므로 패키지의 변경사항이 즉시 반영되므로 패키지 개발 중 테스트에 유용하다. npm link는 심볼릭 링크를 통해 연결하는 방식이지만, npm pack은 패키지를 번들링...

Typescript | Iterator 이해

선정리를 하면 다음과 같다. Iterable은 Symbol.iterator 필드에 ()=Iterator을 가진 객체 Iterator는 next 필드에 ()=IteratorResult을 가진 객체 IteratorResult는 { value:any, done:boolean } 형식의 타입 제네릭 타입에 대해서는 후술한다. Iterable은 반복 가능한 객...

저장용 | React.js 프로젝트 세팅

framework : React varient : typescript

React.js | vite 기반 React 프로젝트 생성

생성할 디렉토리에서 다음 명령을 통해 간단히 실행할 수 있다. 생성 중 framework와 varient를 물어보는데, 방향키를 통해 선택하고 Enter로 진행할 수 있다. framework는 React를 선택하면 되며 variant의 경우 일반적으로 typescript를 권장한다. typescript + SWC는 SWC(Speedy Web Compiler...

SSH | SSH 리버스 터널링

SSH 리버스 터널링은 SSH 서버를 경유해 타 서버로 연결할 수 있도록 해준다. 접속하려는 서버에서 경유 서버에 리버스 터널링으로 연결하면, 다른 사용자가 서버에 직접 접근하지 않고 경유 서버에 연결함으로써 서버에 접근할 수 있다. 따라서 다음과 같은 경우에 사용이 가능하다. 네트워크에서 공유기의 사설 IP만 할당받고, NAT 등으로 외부에 노출되지 않...

Node.js | npm 패키지 개발시 ESM, CommonJS 모두 대응하기

현재 Node.js에서는 크게 두가지의 모듈 시스템을 지원하는데, CommonJS (CJS)와 ECMAScript Modules (ESM) 이다. CJS 방식은 Node.js 환경(백엔드)에서 사용되며 require/modules.exports을 사용한다. ESM 방식은 브라우저(프론트엔드)에서 사용되었으나 Node.js 환경도 점차 CJS를 대체하고 있는...

저장용 | jest 설치

프로젝트폴더의 jest.config.ts 에 위치 types에 jest 추가

Index | Typescript

tsconfig.json

Index | Electron 프레임워크

(비권장)

개발 환경 | WSL2 설치

WSL(Windows Subsystem for Linux)는 윈도우 환경에서 네이티브 Linux 환경을 설치하고 실행할 수 있게 해주는 기능이다. cmd 또는 Powershell을 관리자 권한으로 실행하고 명령을 실행한다. 1 설치가능한 목록을 확인한다. 글 작성일(24년 10월) 기준 배포판 목록은 다음과 같다. Ubuntu Debian kalili...

개발 환경 | 윈도우 openssh 서버 설치

모든 명령어는 powershell에서 실행된다