Develop Dairy 52

[Csharp] Readonly, const

📖C# Readonly, Const Readonly 읽기 전용 변수는 initializer, 생성자 메서드에 할당 가능 읽기 전용 변수는 여러번 재정의 가 가능하다. public class Readonly { private readonly ExampleObject _exampleObjecct = new ExampleObject() { Id = 1 }; public Readonly() { // _exampleObjecct변수를 재정의 하는 모습 _exampleObjecct = new ExampleObject( Id = 2); _exampleObjecct = new ExampleObject( Id = 3); } } public class ExampleObject { public int id {get; set..

Develop Dairy/C# 2021.12.30

What is DOM? DOM에 대해 이해하기 (2021.12.28)

What is DOM? Document Object Model (문서 객체 모델)의 약어 BOM(Browser Object Model)이란 개념을 알아야 함 BOM은 브라우저와 관련된 객체들의 집합 BOM의 최상위 객체(object)는 window DOM은 window 객체의 하위 객체 DOM은 표준 규약에서 제공하는 기능 외에도 많은 브라우저들은 추가적인 기능들을 제공한다. 그렇기에 사용자가 작성한 문서들이 각각 다른 DOM이 적용된 다양한 브라우저 환경에서 동작할 수 있음을 인지한다. e.g.(exempli gratia, 예를들어 라틴어) 표준 DOM 에서는 문서 안에서 모든elements에 대한 list를 리턴하는 getElementsByTagName method를 정의하고 있다. var parag..

JS와 Webassembly의 차이점 (2021. 10. 23)

JS는 아래와같은 방식을 거칩니다. 인터프리터 : 코드를 한 줄씩 읽어, 한 줄씩 Bytecode로 변환 컴파일러 : 파일 전체를 읽은 뒤, 코드의 의미를 해석하고 파일 전체를 기계어로 컴파일해서 변환 Interpreter -> Byteocode 를 ingition이(구글이 명명) 실행 Optimising은 반복된 작업의 코드들을 최적화 해준다는 뜻. *Optimising로 해석된 Machine Code를 turbofan(구글이 명명)이 실행 * turbofan이 할 수 없으면 optimising을 취소하고 ingition이 다시 실행 됩니다. .wasm은 아래와같은 방식을 거칩니다. .wasm 파일 -> 구글의 V8 Liftoff 컴파일러로 실행 wasm은 많은 코드가 optimizing이 되고 취소되..

간단한 DI(Dependency Injection)의 이해&예제 (2021. 05. 28)

Blazor로 하는 간단한 DI(Dependency Injection)의 이해 (Blazor webassembly hosted 환경에서 실행되었으며 .net5, VS2019 Preview 버전에서 진행하였습니다.) 생성자 주입을 경험해보고자 한다. 순서는 아래와 같습니다. 코드는 Github에서 볼 수 있습니다~. {ProjectName}.Shared User.cs 생성 {ProjectName}.Server Services/IUserRepository.cs 생성 Services/UserRepository.cs 생성 Controller/HomeController.cs 에서 메서드 추가 이곳에서 생성자 주입이 이루어진다. Startup.cs 에서 ConfigureServices에서 서비스 추가 (Config..

Develop Dairy/C# 2021.05.28

자동 구현 Property 알아보기. (2021. 05. 11)

📖자동 구현 Property를 알아보자 Visual Stuidio(VS)에서는 prop 를 타이핑하고 탭을 누르면 자동으로 property 구문이 생성됨. 자동으로 프로퍼티 get. set이 아래와같이 만들어지는데 아래와 같은 모습이 자동 구현 Property라고 함 public string Id {get; set;} public string Curriculum {get; set;} /*초기값이 필요한 경우*/ public string Id {get; set;} = "원하는 값" public string Curriculum {get; set;} = "원하는 값" 보통 public 변수에나 쓰는 것이므로 private에서는 잘 쓰지 않는게 rule임. e.g Blazor에서는 Parameter값들을 프로퍼..

Develop Dairy/C# 2021.05.11

Csharp은 어떻게 실행 되는걸까..? (2021. 05. 11)

📖C# 컴파일 과정? C#으로 만든 프로그램은 CLR (Common Language Runtime)위에서 실행됩니다. C#은 컴파일러 언어입니다. 과정은 다음과 같습니다. C# 컴파일러가 C# 코드 컴파일 컴파일 결과로 IL(Intermediate Language) 중간언어로 작성된 파일 생성 사용자가 IL파일 실행하여 CLR이 코드를 읽어 네이티브 코드(하드웨어가 읽을 수 있는 코드)로 컴파일 네이티브 코드로 컴파일하는 과정을 JIT라 부르며 JIT는 실행에 필요한 코드(IL)를 실시간으로 컴파일(네이티브 코드 생성)하는 과정을 말합니다. 눈여겨 보아야 할 것은 컴파일이 2번이나 된다는 것입니다. CLR은 C#뿐만 아니라 다른언어도 지원하도록 설계되어 있습니다. IL이 서로 다른언어를 이어주는 역할을 ..

Develop Dairy/C# 2021.05.11

SPA 이해 (2021. 04. 26)

SPA 중심에는 대표적인 라이브러리/프론트프레임워크 React, vue/Angular, Blazor WebAssembly가 있다. 📖 SPA (Single Page Application) 기존의 웹서비스는 클라이언트(사용자)가 요청하면 서버가 해당 웹 페이지를 HTML 코드로 계산하고 반환하며, 많은 요청이 이루어지면 계산이 더욱 오래 걸립니다. SPA는 모든 처리가 단일 페이지에서 수행되는 방식입니다. 첫 로드시에만 웹페이지를 계산하여 HTML로 반환합니다. 그 이후에는 필요한 데이터를 HTML로 전달받지 않고 (서버에서 렌더링 X) 필요한 데이터만 서버로부터 JSON으로 전달받아 동적으로 렌더링 합니다. 장점 1. 빠른 로딩 시간 (Quick Loading Time) 단일 페이지에서 웹 앱에서 페이지..

Develop Dairy/C# 2021.04.26