본문 바로가기

전체보기

(92)
[Rust Tutorial] 8 - Struct, Impl, Trait IntroRust는 Class가 없습니다. 대신에 Rust는 다음과 같은 개념으로 Object에 대한 정의를 합니다. Data의 구조를 설계하는 Struct (구조)Behavior(행동)를 정의하는 Trait (특성)Data에 Behavior를 연결하여 구현하는 Impl (구현) Rust에서는 Struct, Trait, Impl 이 3가지로 Object를 정의합니다. 개인적인 사용 경험에 따르면 Struct + Impl로 구현을 하거나 mod + Struct + Impl + Trait으로 이전 class처럼 만드는 것도 가능합니다. 하지만 Rust의 철학은 확실히 class가 아닌 3가지로 분리한 문법을 지향하고 있습니다. 이유는 아래와 같습니다. 명시적이고 유연한 설계 : 데이터와 동작을 분리하여 같은..
[Rust Tutorial] 7 - Ownership Intro프로그래밍을 처음 접할 때 C/C++를 배우게 된다되면 가장 큰 벽 중 하나는 바로 포인터(pointer)입니다. Rust에서는 Ownership(소유권) 개념이 이와 비슷한 벽일 수 있습니다. 다른 Programming에서는 나오지 않는 규칙이기 때문이죠. Ownership : 하나의 데이터는 하나의 변수가 소유한다.  하지만 Rust의 소유권 개념은 새로운 규칙일 뿐 그렇게 어렵지는 않습니다. 만약 여러분이 소유권 규칙을 어긴 코드를 작성했을 경우 rust에 내장된 Linter가 소유권을 위반한 위치와 대처법에 대해서 상세하게 알려주기 때문에 큰 부담감을 가지지 않아도 됩니다. 애초에 소유권 규칙을 어기고 build를 수행하게 된다면 컴파일 타임 에러(Compiler time error)가 ..
[Rust Tutorial] 6 - Control Flow Introrust의 흐름 제어(분기문, 반복문)에 대한 설명과 예제입니다. rust는 이 부분에서는 타 언어들과 거의 비슷합니다. 차이가 있다고 한다면 다음과 같은 부분이 있습니다. 무한루프 예제인 loopslice 표기법 (1..5, 1..=10)match(switch, case), if let 코드 예제를 통해 확인해 보겠습니다. Code ExampleRust 1.79.0 (released 2024-06-13) fn main(){ // ========================================= // Conditionals (분기문) // ========================================= /* [Example] if, else : 가장 기초..
[Rust Tutorial] 5 - Function Introrust의 함수 에 대한 설명과 예제입니다. rust의 함수는 기존 언어와는 좀 다른 점들이 있습니다.  return keyword 없이 return할 수 있으며 이 문법이 rust의 기본 문법이다.borrow 규칙으로 인해 값을 복사하는 함수, 값을 소모하는 함수가 구분된다.closure 문법 (이건 사실 모든 언어가 다 다르긴 합니다)function 자체의 input, output에 대한 설명보다는 rust가 가지고 있는 function의 특징 위주로 예제를 작성해 보았습니다.  Code ExampleRust 1.79.0 (released 2024-06-13) fn main(){ #[allow(warnings)] // 경고문구 무시할때 사용 fn no_return_function..
[Rust Tutorial] 4 - Data Type IntroRust에서 제공하는 Data Type 여러 가지가 있지만 기본적으로 제공하는 Type은 크게 Primary Type과 Advenced Type, Compound Type, Collection Type으로 나눌 수 있습니다.  Primary Type : 정수, 소수, 문자(char), 참/거짓, Advenced Type : 문자열(&str, String)Component Type : Tuple, Array, Slice, ...Collection Type : Vector, Map, Set, ...Custom Type : Enum, Struct, ... 예제를 통해 어떻게 사용할 수 있는지 확인해 보겠습니다.  Code ExampleRust 1.79.0 (released 2024-06-13) fn ..
[Rust Tutorial] 3 - Variables IntroRust language에서 Variable에 대한 간단한 설명을 하고자 합니다.Immutable : Rust 변수는 기본적으로 불변(Immutable)입니다.가변(mutable) 변수로 선언하려면 mut 키워드를 사용해야 합니다.Static Type : Rust는 static type language입니다. 모든 변수의 Type이 Compile time에 결정됩니다.Type은 명시적으로 지정할 수 있지만 대부분의 경우 Compiler가 스스로 추론합니다.Rust는 변수를 초기화 하지 않으면 사용할 수 없습니다. (let x; 같은 표현은 불가)Shadowing : 동일한 이름의 변수를 재 선언하여 이전 변수를 "감출 수"(Shadowing) 있습니다.Ownership and Lifetimes ..
[Rust Tutorial] 2 - Cargo 사용법 Intro Cargo는 Rust의 공식 패키지 매니저이자 빌드 시스템으로, Rust 프로젝트를 효율적으로 관리하고 빌드, 실행, 테스트, 의존성 관리를 돕는 도구입니다. Cargo는 Rust 언어와 함께 설치되며, Rust 개발에서 필수적인 역할을 합니다. Cargo 사용법에 대한 간단한 설명입니다. Cargo의 이점편리한 의존성 관리:라이브러리를 쉽게 추가하고 버전을 관리할 수 있습니다.일관된 빌드 환경:동일한 명령어로 디버그 및 릴리스 빌드를 생성합니다.생태계 통합:Rust의 공식 패키지 레지스트리인 Crates.io와 통합되어 필요한 크레이트를 쉽게 가져올 수 있습니다.테스트와 문서화 지원:내장된 테스트 및 문서화 도구로 개발 생산성을 높입니다. Cargo 사용 예시## version checkca..
[Rust Tutorial] 1 - Introduce Intro최근 들어 저는 Rust를 시작했습니다. 개발경력이 C embedded를 시작으로 해서 최근은 Python Application에 몸담고 있는 와중에 Rust를 왜 시작하게 되었을까요? Rust는 저에게 꽤 이상적인(실용적인지는 아직 잘 모르겠습니다) 언어였기 때문입니다. 개인적으로 느낀 Rust의 감상은 2가지 입니다. Rust에 대한 개인적인 감상1. GC가 없다.GC로 인해 내가 Memory를 관리하지 않아도 되지만, 그것은 즉 memory에 대한 내가 세부적으로 제어할 수 없는 내부 동작이 있다는 의미이기도 합니다. 이는 곧 성능 최적화를 방해하는 요소가 되기도 합니다. 요즘 언어들은 대부분 GC를 가지고 있습니다. Java부터 Python, Javascript까지 요즘 Applicati..
[Redis] - Tutorial with Python *목차 - Intro - 환경설정 - 예제코드(Redis 기능 제외) - Redis 없이 기능 Test - Redis 적용 - Redis 적용 후 기능 Test - Outro Intro안녕하세요, 이번에는 Redis를 Python에서 활용하는 방법에 대해서 알아 보겠습니다. Redis 자체는 Python만을 위한 것이 아닌 In-memory 방식의 DBMS입니다. 그래서 category도 DB에 넣을까 하다가 Python에서 사용하는 Redis에 대한 문법이 주로 소개될 것 같아 Python Library로 하여 소개 드립니다. Redis는 다음과 같은 특징을 가지고 있습니다.In-memory : Redis는 data를 기본적으로 disk가 아닌 memory에 저장합니다.저장 관점 : MySQL, Pos..
[Alembic] - Tutorial * 목차 - Intro - 환경 구성 - 예제 코드 작성   1. local_main.py   2. server_main.py - Init Alembic   1. First Migration   2. Table 추가, 변경 후 migration   3. Migration 이전 version으로 rollback - Outro IntroAlembic은 Python용 SQLAlchemy 데이터베이스 툴킷과 함께 사용하기 위한 경량 데이터베이스 마이그레이션 도구입니다. Django에서는 자체적으로 DB의 schema 구조 변경에 따라 Migration file을 생성해서 적용하거나 이전 기록을 추적해서 rollback하는 기능이 있습니다. 하지만 Django 없이 Flask나 Fastapi을 통해 Web bac..