휴지통 12

러스트 Structure, Enum

Structure 같은경우에 말 그대로 C++의 구조체와 비슷하다. struct User { active: bool, username: String, email: String, sign_in_count: u64, } fn main() { let user1 = User { active: true, username: String::from("someusername123"), email: String::from("someone@example.com"), sign_in_count: 1, }; } 이런식으로 이름없이 사용도 가능하다. 사용은 Color.0, Color.1 이런식으로 쓸수 있다. struct Color(i32, i32, i32); struct Point(i32, i32, i32); fn main()..

휴지통/러스트 2023.08.30

새로운 플젝 아이디어 2

전에 기획해놓은 플젝 시작도 안했는데 새로운 아이디어가 떠올라서 문득 메모만 해놔야겠다. 알고리즘 문제 사이트 https://www.acmicpc.net/ https://codeforces.com/ https://atcoder.jp/ 대회들의 시간을 https://ctftime.org/ 처럼 정리해 주는 사이트가 있었으면 좋겠다. 대회들이 특정 사유에 의해서 시간이 바뀌거나 하는것을 사이트 일일이 들어가면서 파악하기 힘들기 때문이다. 그렇다면 문제가 어떻게 모으는가이다. 1. 특정시간 기준으로 사이트에 데이터를가져옴 2. 유저들의 데이트를 받고 검증함 3. 그냥 유저들이 수정하게만듬

러스트 Ownership2

let mut s = String::from("hello"); let r1 = &mut s; let r2 = &mut s; println!("{}, {}", r1, r2); 이 코드는 불가능 하다. 하나의 변수에 여러개의 mutable한 참조를 할 수 없다. Data race 개념인데 러스트는 data race 를 compile할때 막는다. data race는 다음과 같은 상황에 발생한다. - 두개 이상의 포인터가 한번에 같은시간에 가리킨다. - 최소 하나의 포인터가 데이터를 쓰는데 사용되고있다. - 데이터 접근하는데 동기화하는 매커니즘이 쓰이지 않는다. let mut s = String::from("hello"); { let r1 = &mut s; } // r1 goes out of scope here..

휴지통/러스트 2023.08.23

러스트 Ownership1

러스트의 가장 중요한 개념인 Ownership에 대해서 알아보자. 대부분의 프로그래밍 언어는 스택메모리와 힙메모리에 대해서 생각하지 않아도 된다. 하지만 러스트나 C++등의 시스템프로그래밍 언어는 그렇지 않는다. ( 구글에 "메모리 구조" 검색하면 어떤 변수들이 어디에 저장되는지가 나온다. ) 힙에 할당하는것보다 스택에 push 하는것이 빠르다. pointer를 따라가서 들어가기 때문이다. 기본지식은 이러하다. Ownership의 3가지 - 모든값은 Owner를 갖는다. - 하나의 값은 하나의 Owner를 갖는다. - Owner가 scope 밖으로 나가면 사라진다. String 타입은 Heap영역에 저장된다. fn main() { let s1 = String::from("hello"); let s2 = ..

휴지통/러스트 2023.08.22

러스트 기본프로그래밍 2 함수, 조건문, 반복문

fn another_function(x: i32) { println!("The value of x is: {x}"); } fn main() { let y = { let x = 3; x + 1 }; println!("The value of y is: {y}"); } 함수의 매개변수 같은 경우는 가장위의 예제처럼 사용 아래의 예제 같은경우에 y에 4가 들어간다. x + 1 이후에 ; (세미콜론) 이 없기 때문 즉 세미콜론이 없이 쓰면 함수에서 return 하게된다. fn main() { let number = 3; if number != 0 { println!("number was something other than zero"); } } if문과 같은 경우에 C++ 과 동일해서 생략한다. 파이썬처럼 괄호를..

휴지통/러스트 2023.08.17

러스트 기본프로그래밍 1 변수, 출력

fn main() { let x = 5; println!("The value of x is: {x}"); x = 6; println!("The value of x is: {x}"); } fn main() { let mut x = 5; println!("The value of x is: {x}"); x = 6; println!("The value of x is: {x}"); } 다음 2개의 코드르 비교해보자 변수에 mut이 붙어있는지와 없는지의 차이지만 위 코드는 cannot assign twice to immutable variable `x` 오류를낸다. mut을 붙임으로써 변수가 되는것이다. 또한 출력에서 보면 python의 포맷팅 방식으로 출력을한다. fn main() { let x = 5; let ..

휴지통/러스트 2023.08.17

러스트 hello world

fn main() { println!("Hello World!"); } 다음 코드는 hello world를 출력한다. c++와 다른점을 주목해보자 1. int main() 에서 fn 으로 변경되었다. 러스트에서는 함수를 fn으로 명칭 한다. (function) 2. println - println!은 러스트 매크로 라고불린다. 이는 추후에 다뤄볼 예정이다. rustc main.rs 컴파일링 방법 같은경우에는 C, C++와 같은듯하다. 문서에서는 "Cargo" 라는 build package 매니저를 사용한다. 간단한 러스트 프로그램은 의존성이 없지만 이에 의존성을 더하는데 더 쉬워질 것이다. cargo new myproject1 다음과 같이 만들어진다.

휴지통/러스트 2023.08.16

러스트 입문

러스트는 c, c++를 대체할 수 있는 언어로 등장하게 되었다. 최근 대회 검수중에 러스트로 코드를 작성하시는 분을 보고 그런 코드를 읽을 수 있는 수준은 되어야 된다고 생각하여 공부하게 되는 계기가 되었다. https://doc.rust-lang.org/book/ch01-00-getting-started.html Getting Started - The Rust Programming Language Let’s start your Rust journey! There’s a lot to learn, but every journey starts somewhere. In this chapter, we’ll discuss: Installing Rust on Linux, macOS, and Windows Writi..

휴지통/러스트 2023.08.16

기획 3 기획상세, 화면명세서 및 ERD

비슷한 웹 프로젝트중 현재 상용화되어있는 것들 중에서 어떤게 있는지 알아보자. 우선 대표적으로 Steam 게임 유통 사이트로 프로필에서 본인이 최근플레이한 게임 및 업적 배지 등을 확인할 수 있다. 그외에 본인 게임 현황을 확인할수 있는 사이트로는 리그오브레전드의 경우에 https://www.op.gg/ https://your.gg/ko/kr/home https://fow.kr/ 메이플스토리의 경우 https://maple.gg/ 그리고 듀오 등을 하고싶어 하는 사람들을 위해 https://shook.gg/party?game=lol 이러한 사이트들 역시 존재한다. 이들을 링크를 백준에서 다른 사이트 링크를 걸듯이 이런식으로 걸면 괜찮지 않을까? 싶다. 화면은 아직 그려보지는 않았지만 - 홈화면 - 게임별..