[React] Virtual DOM?
·
etc/리액트를 다루는 기술
리액트는 일반적인 DOM이 아닌 Virtual DOM 이라는 녀석을 사용한다. Virtual DOM을 설명하기 앞서 먼저 DOM에대해 알아보자 DOM이란? Document Object Model의 준말로, 객체들로 문서 구조를 표현하는 방법이다. 대표적인 예시로 HTML이 있다. DOM의 한가지 문제점은 동적 UI에 최적화되어 있지 않다는 점이다. HTML은 자체적으로 정적이어서 js를 이용해 이를 동적으로 만드는데, 프로젝트 규모가 커지면 DOM에 직접 접근하여 변화를 주게되는 순간 성능 이슈가 발생한다. 따라서 리액트는 DOM 업데이트를 추상화 하여 처리횟수를 줄이는 Virtual DOM 방식을 사용한다. Virtual DOM Virtual DOM은 실제 DOM을 추상화한 js객체를 구성한다. 마치 ..
[React] 리액트 개요 및 특징
·
etc/리액트를 다루는 기술
리액트는 자바스크립트로 만들어진 라이브러리이다. js로 만들어진 라이브러리는 웹개발에 문외한인 나도 몇개는 알고있을 정도로 굉장히 유명하다. 리액트도 그중 하나이며 JQuery, Angular, Express, Vue.js, Node.js, Next.js 등등 엄청 많다. 각 라이브러리마다 쓰임새가 다른데 우리가 공부하는 리액트는 어떤 역할일까? 우선 리액트는 프론트엔드 즉, 사용자 인터페이스를 만드는 라이브러리이다. 그럼 왜 리액트는 인기가 많을까? 리액트는 우선 기존의 MVC(Model - View - Controller), MVVM(Model - View - View Model) 패턴과는 다른 오직 뷰만 중시하는 패턴이다. Model은 애플리케이션에서 사용하는 데이터를 관리하는 영역, View는 사..
[React] 리액트 시작!
·
etc/React
JavaScript에 대한 왠지모를 거부감이 있었는데 최근에 웹개발에 흥미가 생겨서 React를 공부해보려 한다. js에대한 지식이 아예 없기 때문에 처음부터 천천히 다져나가면서 정리해보겠다!
[C#] switch 제어문
·
etc/C#
switch 제어문은 거의 모든 프로그래밍 언어에 들어있는 기초적인 제어문이다. 우리의 특별한 C#은 switch제어문에서 조금 더 특별한 기능을 제공한다. switch 제어문의 원형 int num = 1; switch(num) { case 1: Console.WriteLine("One"); break; case 2: Console.WriteLine("Two"); break; case 3: case 4: Console.WriteLine("Three or Four"); break; default: Console.WriteLine("Out Of Range"); break; } One 이때 switch의 조건식으로는 모든 데이터 타입이 올 수 있다. 모든 객체의 조상인 object도 넣을 수 있다. objec..
[C#] 문자열 보간(Interpolation)
·
etc/C#
문자열 보간? 처음 봤을 때 뭔 느낌인지 몰랐다. 영어로 하면 Interpolation인데 더더욱 모르겠다. C#에서 문자열을 나타내는 방법 보통 많은 사람들이 알고있는 방법으로는 int a = 3; int b = 4; Console.WriteLine("{0} + {1} = {2}", a, b, a+b); 이렇게 문자열을 나타낸다. { } 안에 들어올 변수들의 순서를 넣은 다음, ,를 통해 실제 순서에 맞게 매칭해주면 된다. 문자열 보간을 사용하면 비슷한 방식이지만 가독성을 높일 수 있고 디버깅에 용이하게 바꿀 수 있다. int a = 3; int b = 4; Console.WriteLine($"{a} + {b} = {a+b}"); 위의 예제와 같이 { }를 통해 문자열을 나타낸다는건 동일하지만 "" 문..
[C#] Property(프로퍼티), C#만의 특별한 기능
·
etc/C#
C# 공부를 하면서 처음으로 당황했던 부분 맨 처음에는 이게 변수인지 함수인지 정체를 몰라서 당황했었다 Property에 대한 얘기를 본격적으로 하기 전에, OOP에서 자주 볼 수 있는 getter / setter 패턴에 대해 알아보자 getter / setter 란? OOP를 공부하다 보면 캡슐화, 은닉화, 등등 추상적인 얘기를 많이 듣는데 도대체 언제 어떻게 쓰이는건지는 알려주지 않아 뜬구름잡는 얘기같다는 생각이 들때가 있다. 그중 getter / setter 패턴은 클래스의 필드에 접근하도록 도와주는 기능을 하는 패턴이다. 보통 OOP의 규칙에 따라 특별한 이유가 없는 한 클래스의 필드는 private로 지정한다. OOP를 지향하는 C#에서는 접근 제한자를 설정하지 않으면 기본적으로 private로..
[C#] Null-Safety를 지원하는 C#
·
etc/C#
JAVA는 Null Safety를 지원하지 않는다. C#이나 코틀린등은 이와 반대로 Null Safety를 지원한다. Null-Safety란? 아마 코딩을 하다보면 한번쯤은 Null Pointer Exception(NPE)을 겪어보았을 것이다. NPE는 null인 object에 접근해서 필드를 가져오거나 메소드를 호출할 때 생기는 에러이다 당연히 object가 null이므로 런타임에 우리가 원하는 대로 동작을 할 수 없어 Exception을 뱉는것이다. NPE는 정말 까다로운 에러로 디버깅하기가 무척 힘들다. 이러한 NPE를 해결하기 위해 C#은 Null-Safety를 지원한다. Null-Safety를 이해하기 위해서는 Nullable 형식을 이해해야 한다. Nullable 우선 Nullable은 값 형..
[Unity] VS에서 Unity 메세지 띄우는 법
·
etc/Unity
제목이 조금 이상해 보일 수 있는데 이 창을 띄우고 싶어서 열심히 구글링을 해보았지만 부족한 나의 구글링 실력때문인지 해결하지 못했다. 그러다가 우연히 발견! 도구 - 옵션 - 텍스트 편집기 - 모든 언어 - Code Lens - Code Lens 사용에 체크하면 끝!
[C#] Lambda Expression(람다 식) 이란?
·
etc/C#
C#을 비롯한 여러 언어들에서 람다 식을 지원하는데 이 람다 식이란 과연 무엇일까? 람다식의 기본 원형은 다음 두가지가 있을 수 있다. (parameter) => expression (parameter) => { statements }; 이렇게만 봐서는 전혀 모르겠으니 아래를 보자 람다 식은 도대체 뭘까? 람다 식을 보다 정확하게 이해하려면 우선 delegate(대리자)에 대해 알아야 한다. delegate에 대해 설명하는 글은 여기에 있다. // 링크 글을 읽었다 가정하고, delegate를 이용해 익명 메소드를 전달하는 방식 중 제일 단점은 매번 delegate라는 키워드로 함수를 감싸줘야 한다는것이다. 이 불편함을 해소하고자 Lamda Expression이 나오게 되었다. 람다식은 익명메소드의 완벽..
[Unity] 코루틴, Coroutine이란?
·
etc/Unity
C#과 JAVA의 차이점중에 하나인 코루틴, C#에는 코루틴이 있지만 JAVA에는 코루틴이 없는걸로 알고있다. 그럼 코루틴이란 정확히 무엇일까? 일반적으로 어떤 함수(루틴)를 구현할 때 return을 넣어 함수가 종료될 때를 정하게 된다. void Func() { print("A"); print("B"); return; } 위 함수를 호출하면 순차적으로 A를 출력하고 B를 출력할 것이다. return을 만나게 되면 제어권을 호출자에게 넘겨주게 되는데, 문제는 호출자는 Func()가 return 해주기를 하염없이 기다려야 한다는 것이다. 만약 Func()가 서버에서 데이터를 로드하는등 시간이 오래걸리는 작업이라면 사용자는 프로그램이 멈춘듯한 느낌을 받을 수 있다. 이것은 동기 프로그래밍의 단점인데, 이를 ..