본문 바로가기
728x90
반응형

전체 글262

Rust 설치부터 실행까지 (메서드) - 12 오늘은 Rust의 메서드(method)에 대해 알아보고자 합니다.메서드 문법메서드(method)는 함수와 유사합니다. fn 키워드와 함수명으로 선언하고, 매개변수와 반환값을 가지며, 다른 어딘가로부터 호출될 때 실행되지만, 함수와 달리 구조체 컨텍스트에 정의되고, 첫 번째 매개변수가 항상 self라는 차이점이 있습니다.메서드 정의하기#[derive(Debug)]struct Rectangle { width: u32, height: u32,}impl Rectangle { fn area(&self) -> u32 { self.width * self.height }}fn main() { let rect1 = Rectangle { width: 30, .. 2025. 1. 9.
Rust 설치부터 실행까지 (구조체, 디버깅) - 11 오늘은 Rust의 구조체(struct)에 대해 알아보고자 합니다.구조체구조체는 여러 개의 연관된 값을 가질 수 있다는 측면에서 볼 때 튜플 타입절에서 살펴본 튜플과 비슷합니다.일반적인 C언어의 구조체를 생각하시면 편합니다.구조체의 구성 요소들은 각각 다른 타입이 될 수 있고, 각각의 구성 요소에 이름을 붙일 수 있어 각 요소가 더 명확한 의미를 가지게 되고, 특정 요소에 접근할 때 순서에 의존할 필요가 사라지게 되어, 튜플보다 유연하게 사용할 수 있습니다.구조체를 정의하려면 struct 키워드와 해당 구조체에 지어줄 이름을 입력합니다.구조체의 중괄호 안에서는 필드(field)라고 부르는 각 구성 요소의 이름 및 타입을 정의합니다.struct User { active: bool, username.. 2025. 1. 7.
Rust 설치부터 실행까지 (슬라이스) - 10 오늘은 Rust의 슬라이스(slice)에 대해 알아보고자 합니다.슬라이스슬라이스(slice)는 컬렉션(collection)을 통째로 참조하는 것이 아닌, 컬렉션의 연속된 일련의 요소를 참조하도록 해줍니다. 슬라이스는 참조자의 일종으로서 소요권을 갖지 않습니다. 만약 단어의 공백 부분의 index를 출력하는 함수를 작성하게 된다면 다음과 같이 작성이 가능합니다.fn first_word(s: &String) -> usize { let bytes = s.as_bytes(); for (i, &item) in bytes.iter().enumerate() { if item == b' ' { return i; } } s.len()}String을 하나하.. 2025. 1. 6.
Rust 설치부터 실행까지 (참조자) - 9 오늘은 Rust의 참조자(reference)에 대해 알아보고자 합니다.참조와 대여fn main() { let s1 = String::from("hello"); let (s2, len) = calculate_length(s1); println!("The length of '{}' is {}.", s2, len);}fn calculate_length(s: String) -> (String, usize) { let length = s.len(); // len()은 String의 길이를 반환합니다 (s, length)}이전 예제에서 String이 calculate_length로 이동되어서, calculate_length를 호출한 함수에서 String도 반환하여, 함수 호출 이후에도 S.. 2025. 1. 5.
Rust 설치부터 실행까지 (소유권) - 8 오늘은 Rust의 소유권에 대해 알아보고자 합니다.소유권소유권(ownershipt)는 rust에서 가장 독특한 기능이며, 언어 전반에 깊은 영향을 끼칩니다. 소유권은 가비지 컬렉터(GC : Garbage Collector)없이 메모리 안전성을 보장하도록 해주므로, 소유권이 어떻게 동작하는지를 이해하는 것은 중요합니다. 몇몇 언어(JAVA, Golang 등)는 가비지 컬렉션으로 프로그램에서 더 이상 사용하지 않는 메모리르 정기적으로 찾는 방법을 채택했고, 다른 언어(C, C++ 등)는 프로그래머가 직접 명시적으로 메모리를 할당하고 해제하는 방식을 채택했습니다. rust는 소유권(ownership)이라는 시스템을 만들고, 컴파일러가 컴파일 중에 검사할 여러 규칙을 정해 메모릴 관리하는 방식을 채택했습니다. .. 2025. 1. 2.
Rust 설치부터 실행까지 (주석, 조건 반복문) - 7 오늘은 Rust의 주석과 조건 반복문에 대해 알아보고자 합니다.주석rust의 주석은 Python의 # 과 달리 C++, JAVA와 동일하게 // 으로 구성되어 있습니다.제어 흐룸문rust에서 실행 흐름을 제어하도록 해주는 일반적인 방법은 if표현식과 반복문 입니다.if 표현식rust에서의 if문은 다음과 같이 사용할 수 있습니다.fn main() { let number = 3; if number rust는 c++과 다르게 if문의 타입이 bool이여야 합니다.fn main() { let number = 3; if number { println!("number was three"); }}다음과 같이 실행시, 에러가 발생합니다.Compiling branches v0.1.. 2024. 12. 30.
FTP 통신 dataConnectionport 지정하기 FTP 통신에는 능동 모드(Active Mode), 수동 모드(Passive Mode)가 존재합니다.능동 모드의 경우 20번 포트와 21번 포트를 통해서 데이터 전송이 이루어 집니다.수동 모드의 경우, 20번 포트와 랜덤 포트(1024 ~ 65536 중 택 1)를 통하여 데이터 전송이 이루어집니다. 여기서 수동 모드의 경우, 랜덤 포트를 지정할 수 없을까요? 그렇다면 특정 몇개의 포트만 오픈해야 하는 경우에는 어떻게 해야할까요? FTPServer 외부 라이브러리를 통하여 확인해보면, 데이터 전송마다 스레드를 사용하게 됩니다. 그리고 테스트를 진행해보면, 데이터 크기가 아무리 많아도 1 ~ 100개의 스레드만 사용하게 되죠. 즉, 스레드의 개수는 Passive Mode에서 client가 포트를 사용하는 개.. 2024. 12. 30.
2024년 회고 / 2025년 목표 2024년을 돌아보면서, 다가올 2025년의 목표를 정리해보기 위해 적어보았다.2024년 회고 1. 경력2023년 5월 검색 관련 개발직을 맡게 되어 벌써 1년이 넘는 시간이 흘렀다.2. 알고리즘해당 글을 작성하고 있는 2024년 12월 28일 기준 2024년 1월 1일부터 762 문제를 해결했다. 매일 2문제 가량 해결한 수준이다.대회 검수진을 하였고, 오프라인으로도 참여해 보았다. (https://www.acmicpc.net/contest/view/1407)boyer-moore, kmp, trie, two way String matching algorithm 등 다양한 알고리즘들을 학습하고 있다.solved 티어 2020년은 실버1, 2021년은 플레5, 2022년도 플레5, 2023년은 플레4, 2.. 2024. 12. 28.
Rust 설치부터 실행까지 (함수, 구문, 표현식) - 6 오늘은 Rust의 함수(function)에 대해 알아보고자 합니다.함수rust에서는 함수를 fn 키워드를 통해서 선언할 수 있습니다. 지금까지 사용했던 main도 마찬가지 입니다. rust는 함수나 변수 이름을 스네이크 케이스(snake case) 방식을 주로 이용하는데, 이는 모든 글자를 소문자로 쓰고 밑줄(underscore)로 단어를 구분하는 방식을 이야기합니다.fn main() { println!("Hello, world!"); another_function();}fn another_function() { println!("Another function.");}rust는 c언어와는 다르게 함수를 호출하는 위치를 고려하지 않으며, 호출하는 쪽에서 볼 수 있는 스코프 어딘가에 정의만 .. 2024. 12. 28.
반응형