2025년 4월 6일 일요일

2강 - 러스트 기초

Rust 기초 정리 (2강)

Rust 기초 문법과 개념들을 정리


2.1 자료형 (Data Types)

Rust는 정적 타입 언어로 컴파일 타임에 자료형이 결정됨.

종류 예시 설명
정수형 i32, u64 등 부호/크기 명시
실수형 f32, f64 부동소수점 숫자
불린형 bool true / false
문자형 char 유니코드 문자
문자열 String, &str 힙 메모리 or 리터럴
튜플 (i32, f64, char) 여러 타입 묶음
배열 [i32; 3] 고정 크기 배열

2.2 불변성과 가변성 (Immutability & Mutability)

Rust는 기본적으로 변수는 불변(immutable)

let x = 10;       // 불변 변수
let mut y = 20;   // 가변 변수 (mut 키워드)
y = 30;           // 가능

안전성을 위해 기본은 불변 → 필요할 때만 mut 사용 권장.


2.3 제어문 (Control Flow)

조건문 → if, else if, else

let score = 80;
if score >= 90 {
    println!("A등급");
} else if score >= 80 {
    println!("B등급");
} else {
    println!("C등급");
}

2.4 반복문 (Loop)

반복 처리 구문 종류

문법 설명
loop 무한 반복
while 조건 반복
for 컬렉션 순회
for i in 1..=5 {
    println!("{}", i);
}

2.5 함수 (Function)

함수 정의와 반환값

fn add(a: i32, b: i32) -> i32 {
    a + b  // 세미콜론 없으면 return
}

Rust는 명시적 타입 선언 권장


2.6 클로저 (Closure)

익명 함수 (람다식)

let sum = |a: i32, b: i32| -> i32 {
    a + b
};

println!("{}", sum(3, 5));

클로저는 환경 변수 캡처 가능 (스코프 안 변수 사용 가능)


2.7 구조체 (Struct)

데이터 묶음 정의

struct User {
    name: String,
    age: u32,
}

let user = User {
    name: String::from("홍길동"),
    age: 30,
};

구조체를 이용해 객체지향 프로그래밍 스타일 가능


2.8 열거형 (Enum)

여러 값 중 하나를 표현

enum Color {
    Red,
    Green,
    Blue,
}

let c = Color::Red;

매칭 처리 가능

match c {
    Color::Red => println!("빨강"),
    Color::Green => println!("초록"),
    Color::Blue => println!("파랑"),
}

마무리 정리 Tip

Rust는 "안전하고 빠르고 현대적인 시스템 프로그래밍 언어"
기본 규칙 : 불변, 명시적, 안전성 추구
익숙해질수록 개발 생산성도 올라간다!

1강 - 러스트 소개

1.러스트를 왜 배워야 하는가?

Rust - C/C++ 수준의 고성능을 제공하면서도 메모리 안전성을 보장하는 현대적인 시스템 프로그래밍 언어
자바나 C#처럼 런타임에 GC(Garbage Collection)를 사용하지 않고, 소유권(Ownership)과 빌림(Borrowing) 개념을 통해 메모리를 컴파일 타임에 안전하게 관리

러스트 특징 

- 안전한 메모리 관리

- 철저한 오류 처리

- 쉽고 편한 비동기 프로그래밍

- 편리한 패키지 관리 도구


항목 C / C++ Java / C# Rust
메모리 관리 수동 (malloc/free, new/delete) 자동 (Garbage Collection) 소유권(Ownership), 빌림(Borrowing), 라이프타임(Lifetime)
실행 성능 매우 빠름 비교적 빠름 (GC 영향 있음) 매우 빠름 (C/C++ 수준)
안정성 낮음 (메모리 오류 발생 가능) 높음 (런타임 예외 처리) 매우 높음 (컴파일 타임에 대부분 검증)
학습 난이도 낮음 ~ 높음 (C++ 복잡도 높음) 낮음 높음 (소유권 개념 익숙해지기 어려움)
개발 생산성 낮음 (많은 직접 관리) 높음 (GC, 풍부한 라이브러리) 보통 (엄격한 문법 제약)

이런~ 내가 이 블로그를 너무 방치 했었네 ㅎㅎ;;

 마지막으로 글 남긴게 작년 1월이라니~!

깃허브에 집중하느라 여기에 글 남기는 것을 깜박했다.

ai 시대가 아무리 발전해도, 개발자라면 꾸준한 공부가 답 아닐까?

지금은 러스트 공부 중인데 새로운 언어니깐 

여기에 기록해서 까먹으면 내가 기억하기 용으로 써야겠다.

꾸준한 공부는 배신하지 않는다.

2024년 1월 29일 월요일

매핑(mapping)이란?


웹 개발에서 매핑은 상황에 따라 다른 개념을 나타낼 수 있다.

1. URL 매핑/라우팅

웹 프레임워크(예: Node.js의 Express 또는 Python의 Django)의 맥락에서 

매핑은 종종 URL 라우팅 또는 URL 매핑을 나타낸다

여기에는 URL(또는 경로)과 해당 URL에 대한 요청을 

처리하는 기능 또는 컨트롤러 간의 대응을 정의하는 작업이 포함이다

이는 애플리케이션을 구성하고 구조화하는 데 도움된다.


Express.js(Node.js)의 예:

app.get('/home', (req, res) => {

    res.send('Welcome to the home page!');

});


2. 데이터 매핑

데이터 매핑에는 서로 다른 두 데이터 모델 간의 링크를 생성하여 

둘 사이의 데이터 전송을 허용하는 작업이 포함된다.

이는 데이터베이스, API 또는 애플리케이션의 다른 부분으로 작업할 때와 

같은 다양한 시나리오에서 발생할 수 있다.

JavaScript의 예:

const originanlData = { id: 1, name:  'kim', age: 30 };

const mappedData = { userId: 1, userName: 'kim',  userAge: 30 };

3. 지리적 매핑:

지리 정보 시스템(GIS) 또는 매핑 라이브러리(예: Leaflet 또는 Google Maps API)의 


맥락에서 매핑에는 지리적 데이터 표시 및 상호 작용이 포함된다.


여기에는 점 그리기, 모양 그리기, 지도에 정보 레이어 표시 등이 포함될 수 있다.


Leaflet(대화형 지도용 JavaScript 라이브러리) 사용 예:


const myMap = L.map('mapid').setView([51.505, -0.09], 13);


L.marker([51.505, -0.09]).addTo(myMap).bindPopup('Hello, this is a marker!');

2022년 11월 7일 월요일

깃허브 5강(협업)

 1. 여러 컴퓨터에서 원격 저장소 함께 사용하기

(1) git clone 원격 저장소 주소 : 현재 폴더에 소스 코드를 다운 받아서 동기화

(2) git remote -v : 원격 저장소와 연결 확인

(3) git push : 자신의 컴에서 작업한 것을 원격 저장소에 올리기

(4) git pull : 원격 저장소의 최신 커밋 가져오기


2. 원격 브랜치 정보 가져오기

(1) git fetch : 원격 저장소의 정보를 가져오기

(2) git status : 현재 내 컴퓨터와 원격 저장소의 커밋 상태를 확인

(3) git checkout FETCH_HEAD : fetch 에서 가져온 최신 커밋을 확인


3. 여러 명이 협업 하기

(1) 깃허브 저장소 -> Settings -> Collaborators -> Add people -> 협업자 이메일  -> 등록

(2) git init : 등록자 컴퓨터 폴더 초기화

(3) git config user.name "협업자 이름" : 협업자 이름 등록

(4) git config user.email "협업자 메일 주소" : 협업자 이메일 등록

(5) git clone 원격 저장소 주소 : 현재 프로젝트 최신 커밋 다운받기

(6) git push -u origin master : 협업자가 작업한 내용 처음 원격 저장소에 넣기

(7) git push : (6) 이후에는 이 명령어로 넣음


깃허브 4강(백업)

1. 깃 허브란? 

3강까지는 자신의 컴퓨터에 버전 관리를 했다면 깃 허브는 외부 서버에 백업하는 것이다.

먼저 깃 허브에 가입하고, 주소를 획득하여 올리는 것이 시작이다.


2. 내 컴에 있는 깃을 깃허브에 연결하는 법

(1) 깃으로 관리 하고 있는 폴더로 이동

(2) git remote add origin 깃허브에서 복사한 주소

(3) git remote -v : 깃허브에 제대로 연결되었는지 확인


3. 깃 허브에 올리기, 내려받기

(1) git push -u origin master : 컴 저장소의 브랜치를 원격 저장소의 master에 연결하기 위한 것으로 한번만 사용

(2) git push : (1) 이후에는 이 명령어로 원격 저장소에 올림.

(3) git pull origin master : 원격 저장소의 최신 버전을 가져옴


4. 깃 허브에 SSH 원격 접속하는 법

(1) 홈 디렉토리에서 ssh-keygen : 홈디렉토리/ .ssh에 공개키, 비공개키 생성 명령어

(2) cat id_rsa.pub : 공개키 미리 보기로 공개키 문자열 복사

(3) 깃허브 로그인 -> 사용자 -> settings ->  SSH and GPG keys -> New SSH key 클릭 후 이름 + 공개키 문자열 붙이기 -> 저장

(4) 깃허브 -> Code -> SSH 주소 복사

(5) git remote add origin SSH 주소 붙이기

2022년 11월 6일 일요일

깃허브 3강(깃, 브랜치)

 1. 브랜치란? 

개발을 하다 보면 따로 분리 되어 개발을 진행해야 하는 경우가 생기는데 

그때 메인 개발과 별도로 서브 개발은 따로 분리 하였다가 

완성 후 병합하는 것을 의미 한다.


2. 브랜치, 병합 관련 명령어

git branch : 현재 브랜치를 확인

git branch 브랜치명 : 브랜치를 새로 생성

git checkout 브랜치명 : 해당 브린치로 이동

git log : 커밋 확인 

--oneline : 커밋 간단 확인

--branches : 각 브랜치의 커밋 확인

--graph : 브랜치와 커밋의 관계를 간단한 그래픽으로 표시


git reset 브랜치 해시값 : 현재 커밋을 다른 브랜치에 있는 해시값의 위치로 되돌림

git checkout master : 마스터로 이동

git merge 병합할 브랜치 명 : 마스터와 브랜치를 병합(마스터로 이동 후 사용해야 함)

git branch -d 삭제할 브랜치명 : 병합이 끝난 브랜치를 삭제(-D는 병합 전 강제 삭제)

git stash : 작업 트리의 수정 내용을 따로 보관해서 감춤

git stash pop : 따로 보관 했던 수정 내용을 꺼냄