본문 바로가기

전체 글99

HTML 초보자를 위한 VSCode 확장 추천 VSCode는 웹 개발에 최적화된 강력한 툴입니다.로컬 환경에서는 물론이고, 원격 서버에서 작업할 때도 마치 로컬에서 작업하는 것처럼 빠르고 편리하게 사용할 수 있습니다. 이번 글에서는 VSCode 설치부터 시작해, HTML 개발에 필요한 확장을 설치해보겠습니다. VSCode 설치https://code.visualstudio.com/ HTML 개발에 필요한 VSCode 확장을 최소한으로 설치해봅시다.앞으로 진행하면서 필요할 때 추가합니다. 확장 설치 아이콘은 좌측에 있습니다. 1. 코드 포메팅VSCode는 HTML 코드 포메팅을 지원한다. (Alt + Shift + F) 2. Auto Rename TagHTML을 작성하다보면 태그 앞뒤 맞추기가 항상 번거롭고 불편하다.이것을 자동화해주는 확장이다. 3. .. 2024. 10. 28.
초감각 ESP와 지자기의 상관관계 그리고 지역 항성시(LST) 한 지역을 기준으로 하늘의 별들이 하루 동안 한 바퀴 도는 시간을 지역 항성시라고 한다.지구는 태양 주위를 돌기 때문에 매일 4분 정도 빨리 별이 돈다.다시 말해,태양시보다 지역 항성시는 매일 4분씩 빨라지는 24시간 체계다.    연구 논문Anomalous Cognition Effect Size: Dependence on Sidereal Time and Solar Wind Parametershttps://www.jsasoc.com/docs/PA-GMF.pdfhttps://www.jsasoc.com/docs/JP-GMF.pdfhttps://www.jsasoc.com/docs/JSE-LST.pdf 아래는 비정상 인지 실험을 20년간 진행하여 완성한 그래프이다. (1976 ~ 1996)연구에 따르면 LST .. 2024. 10. 12.
Rust 기본 : 특성 객체 (Trait Object) Rust 기본 : 특성 객체 (Trait Object) 러스트에서 특성 객체(trait object)는 특정 트레잇을 구현한 모든 타입의 인스턴스를 동적으로 처리할 수 있습니다. 이런 동적 처리(dynamic dispatch)는 런타임에 어떤 타입으로 결정된 메서드가 호출될지 결정하므로 해당 트레잇을 지원하는 다양한 타입(struct, enum)을 동일한 방식으로 처리할 때 사용합니다. 객체 생성 함수 - 정적 처리(static dispatch)   : create_hynix_memory() -> impl Compatible특성 객체를 impl Compatible 방법으로 트레잇  리턴할 수 있습니다.컴파일 시간에 호출 함수를 결정하기 때문에 런타임 성능이 좋습니다.  - 동적 처리(dynamic dis.. 2024. 9. 25.
Rust 기본 : 상위 특성 (Supertraits) Rust 기본 : 상위 특성 (Supertraits) Rust는 데이터와 행위를 분리하도록 설계되어 있습니다. 데이터는 구조체(struct)와 열거형(enum)으로 정의하고,행위는 트레잇(trait)을 통해 정의합니다.(유연성과 안전성 제공)Supertraits를 사용하는 것은 트레잇간의 관계를 정의하고, 트레잇을 구현할 때 필요한 기본 기능을 강제하는 방법입니다. (코드의 명확성과 유지보수성을 향상) 결국 Supertraits은 기능 확장의 순서를 잡아줍니다.B가 A를 supertrait으로 가지면, B를 구현하기 전에 A를 구현해야 합니다. 의존이냐 확장이냐. - B가 A의 기능에 의존 - A의 기능을 B로 확장trait A { fn do_something_a(&self);}// B:A - B .. 2024. 9. 19.
Rust 기본 : 특성 제약 (Traits Bounds) Rust 기본 : 특성 제약 (Traits Bounds) 러스트에서 트레잇 바운드는,구현하는 시점의 타입에 제한을 두고자 할 때 사용합니다.(특정 트레잇을 구현하는 타입만을 허용하는 제네릭 타입에 대한 제약) 예를 들어 개나 고양이 객체를 입력 받아서 빨간색으로 염색하는 함수를 만들고 싶습니다.이를 위해 'object'라는 이름의 입력 매개변수를 받는데, 객체가 'Animal' 트레잇을 구현했다면 어떤 타입이든 입력 매개변수로 사용 가능합니다.  트레잇 바운드를 지정하는 세 가지 방법이 있습니다.trait Animal { fn make_sound(&self); fn given_name(&self) -> String;} 1. (object: &T)첫 번째 방법은 제네릭 타입을 정의한 후 콜론을 .. 2024. 9. 12.
Rust 기본 : 특성 (Traits) Rust 기본 : 특성 (Traits) 러스트는 상속을 지원하지 않습니다.대신 함수를 공유하고 인터페이스를 제공하기 위해 트레잇(trait)를 사용합니다.이는 다른 언어의 인터페이스와 유사합니다. 트레잇은 타입의 행동을 추상화하고 규정하는 데 사용합니다.이를 통해 코드 유연성, 재사용성, 모듈성을 높일 수 있습니다. 트레잇(trait) 선언하기.1. 공통 특징 트레잇 'Animal' 정의.동물이 공통적으로 가질 수 있는 특징을 트레잇으로 정의합니다.trait Animal { fn make_sound(&self); fn given_name(&self) -> String;} 2. 행동 중심 트레잇 'Playful' 정의.trait Playful { fn play(&self) { .. 2024. 9. 7.
Rust 기본 : 일반화 (Generics) Rust 기본 : 일반화 (Generics) 러스트(Rust)의 제네릭(Generics)은 다양한 데이터 타입에 대해 코드 사용 유연성을 높이고 코드 반복 구현을 줄여줍니다. 제네릭을 사용하면 컴파일 시에 구체적인 타입으로 대체될 제네릭 타입을 가진 구조체, 열거형, 함수를 정의할 수 있습니다. 1. 정의 (Define)구조체 이름 뒤에 임의의 타입을 나타내는 를 추가하여 선언한다.struct Message { id: String, payload: T,} 2. 구현 (Implementation)impl : 구현부에서 제네릭 타입을 사용한다.Message : 구현 대상은 Message 제네릭 타입이다.impl Message { fn new(id: String, payload: T) -> S.. 2024. 9. 3.
Rust 기본 : 벡터 (Vector) Rust 기본 : 벡터 (Vector) 러스트에서 제공하는 Vec타입은 동적 배열이다. - 동적으로 크기 조정 가능하며 Vec는 T 타입으로 고정되어 타입 안전하다. - 0부터 시작하는 인덱스로 접근 가능하다. ex) v[0] - 반복자(iterator)와 for 루프를 통해 각 요소에 접근할 수 있다. Vector 생성 방법 1 : Vec::new()벡터는 동일한 타입 요소를 가지는 동적 배열이다. 그러나 배열과 달리 힙에 할당된다.fn main() { // 빈 벡터 생성 let v: Vec = Vec::new(); let mut v = Vec::new(); // 생성한 스트링 소유권은 vector로 이동한다. // -> vector가 삭제될 때 내부 모든 스트링 소유.. 2024. 8. 26.
Rust 기본 : 결과 열거형 (Result enum) Rust 기본 : 결과 열거형 (Result enum) Rust에서 유효한 값을 반환하거나 에러 값을 반환하려면Result enum을 사용할 수 있습니다.enum Result { Ok(T), Err(E),}Result enum에는 두 가지 변형이 있습니다. 하나는 일반적인 값을 포함하는 Ok 변형이고, 다른 하나는 에러 값을 가지는 Err 변형입니다.Result enum과 그 변형들은 std::prelude에 있습니다. std::prelude는 Rust가 모든 Rust 프로그램에 자동으로 가져오는 것들의 목록입니다.따라서 추가 코드 없이도 이들을 사용할 수 있습니다.std::preludehttps://doc.rust-lang.org/std/prelude/ std::prelude - Rust§T.. 2024. 8. 21.