본문 바로가기

Develop

[Spring] HTTP Request 를 처리하는 과정 - DispatcherServlet 원리 먼저 이 글은 Spring Web MVC 에 해당되며, Spring WebFlux 는 다른 글을 참고하시길 바랍니다. HTTP Request 를 처리하는 과정 - DispatcherServlet 원리 Spring Web MVC 에서 HTTP Request 를 처리하는 핵심 클래스가 DispatcherServlet 이란 클래스입니다. DispatcherServlet 가 무엇인지 알아야 Spring Web MVC 서버가 어떻게 동작하는지를 알 수 있습니다. 클래스 이름 중 Servlet 단어가 클래스가 어떤 역할을 하는지 설명하는 핵심적인 단어입니다. 왜냐하면 Spring Web MVC 는 Servlet API (javax.servlet) 를 기반으로 만들어진 프레임워크이기 때문입니다. Servlet 일반적..
[Xamarin] Custom Renderer 로 Platform-Specific 하게 구현하기 Custom Renderer 사용자 지정 렌더러 Renderer 는 Xamarin Forms 로 정의된 뷰를 플랫폼이 제공해주는 컨드롤과 연결하는 역할을 합니다. 예를 들어 Xamarin Forms 의 Entry 는 프레임워크가 기본으로 제공해주는 플랫폼 별 EntryRenderer 를 통해 플랫폼 별 컨트롤로 연결됩니다. 예를 들어, 안드로이드의 EntryRenderer 는 안드로이드 플랫폼의 EditText 컨트롤과 연결하고, iOS의 EntryRenderer는 iOS 플랫폼의 UITextField 컨트롤과 연결합니다. Xamarin Forms 가 기본으로 제공해주는 UI 요소는 모두 Xamarin 개발팀에서 제공해주는 기본 Renderer 가 있습니다. 하지만 어플리케이션을 개발하다보면 가끔 Ren..
[Spring] RDB 에서 계층적인 데이터 구조 관리 전략 - Nested set 관계형 데이터베이스에서 계층적인 데이터 구조 관리 관계형 데이터베이스 (RDB) 는 계층적인 데이터 구조를 표현하기에 적합하지 않은 관계형 모델을 기초로 설계되어 있습니다. 반면에 관계형 데이터베이스를 활용하는 서버는 주로 객체지향 언어로 작성되며 내부적으로 이진트리와 같은 계층적인 데이터 구조를 자주 활용합니다. 따라서 서버에서 그래프 구조의 데이터를 계층적인 데이터 구조 관리에 적합하지 않은 관계형 데이터베이스에 어떻게든 저장하려면 아래와 같은 전략이 필요합니다. 관계형 데이터베이스에 그래프를 표현하는 전략 4 가지 Adjacency list Nested set Path enumeration Closure table 계층적인 데이터 구조를 관계형 데이터베이스에 저장하게 되면 서버가 데이터베이스의 무결..
[Spring] RDB 에서 계층적인 데이터 구조 관리 전략 - Path enumeration 관계형 데이터베이스에서 계층적인 데이터 구조 관리 관계형 데이터베이스 (RDB) 는 계층적인 데이터 구조를 표현하기에 적합하지 않은 관계형 모델을 기초로 설계되어 있습니다. 반면에 관계형 데이터베이스를 활용하는 서버는 주로 객체지향 언어로 작성되며 내부적으로 이진트리와 같은 계층적인 데이터 구조를 자주 활용합니다. 따라서 서버에서 그래프 구조의 데이터를 계층적인 데이터 구조 관리에 적합하지 않은 관계형 데이터베이스에 어떻게든 저장하려면 아래와 같은 전략이 필요합니다. 관계형 데이터베이스에 그래프를 표현하는 전략 4 가지 Adjacency list Nested set Path enumeration Closure table 계층적인 데이터 구조를 관계형 데이터베이스에 저장하게 되면 서버가 데이터베이스의 무결..
[Spring] RDB 에서 계층적인 데이터 구조 관리 전략 - Closure table 관계형 데이터베이스에서 계층적인 데이터 구조 관리 관계형 데이터베이스 (RDB) 는 계층적인 데이터 구조를 표현하기에 적합하지 않은 관계형 모델을 기초로 설계되어 있습니다. 반면에 관계형 데이터베이스를 활용하는 서버는 주로 객체지향 언어로 작성되며 내부적으로 이진트리와 같은 계층적인 데이터 구조를 자주 활용합니다. 따라서 서버에서 그래프 구조의 데이터를 계층적인 데이터 구조 관리에 적합하지 않은 관계형 데이터베이스에 어떻게든 저장하려면 아래와 같은 전략이 필요합니다. 관계형 데이터베이스에 그래프를 표현하는 전략 4 가지 Adjacency list Path enumeration Nested set Closure table 계층적인 데이터 구조를 관계형 데이터베이스에 저장하게 되면 서버가 데이터베이스의 무결..
[Spring] RDB 에서 계층적인 데이터 구조 관리 전략 - Adjacency list 관계형 데이터베이스에서 계층적인 데이터 구조 관리 관계형 데이터베이스 (RDB) 는 계층적인 데이터 구조를 표현하기에 적합하지 않은 관계형 모델을 기초로 설계되어 있습니다. 반면에 관계형 데이터베이스를 활용하는 서버는 주로 객체지향 언어로 작성되며 내부적으로 이진트리와 같은 계층적인 데이터 구조를 자주 활용합니다. 따라서 서버에서 그래프 구조의 데이터를 계층적인 데이터 구조 관리에 적합하지 않은 관계형 데이터베이스에 어떻게든 저장하려면 아래와 같은 전략이 필요합니다. 관계형 데이터베이스에 그래프를 표현하는 전략 4 가지 Adjacency list Nested set Path enumeration Closure table 계층적인 데이터 구조를 관계형 데이터베이스에 저장하게 되면 서버가 데이터베이스의 무결..
[C#] 예외처리 Best Practices 예외처리 Best Practices 1. 리소스를 사용하다가 오류가 발생했을 때 finally 를 활용하자. IDisposable 인터페이스를 구현한 리소스를 사용하다가 오류가 발생했을 때 오류만 잡고 리소스를 해제하는 걸 깜빡하는 경우가 자주 있습니다. 리소스를 사용하다가 오류가 발생할 만한 부분에 finally 문을 정의하고 리소스를 Dispose() 하여 메모리가 누수되지 않도록 합시다. try { var resource = new Resource(); } finally { resource.Dispose(); } 2. 예외를 발생시킬 때와 방지해야 할 때는 발생 빈도로 결정하자. 예외를 반드시 try/catch 문으로 해결할 필요는 없습니다. 예외의 발생 빈도가 높다면 예외가 발생하지 않도록 미연에..
[Xamarin] 픽셀 및 기기 독립 Unit (Device-Independent Units) 픽셀 및 기기 독립 Unit Xamarin 은 크로스 플랫폼, 더 나아가 모든 플랫폼을 지원하려는 야망을 가진 프레임워크입니다. 따라서 기기마다 다른 Unit 기준을 충족시켜야만 합니다. 개발자에게는 이게 무슨 소린지 감이 잡히질 않습니다. 왜냐하면 개발자는 디지털 단위인 픽셀 에 익숙해져 있기 때문입니다. 개발자에게 화면이란 픽셀로 이루어져 있는 장치이며, 픽셀만 맞추면 화면에 잘 표시될 것 같은 헛된 믿음을 가집니다. 하지만 디자이너에게 중요한건 실제 화면에 표현되는 물리적인 비율이 중요합니다. 픽셀만 맞춰서 개발을 하게 되면 화면에 따라 크기가 달라 보입니다! 특히 스마트폰의 화면 크기는 모두 제각각입니다. 심지어 화면마다 표현할 수 있는 픽셀 수도 기기마다 다릅니다. 간단한 실험으로 픽셀을 믿을 ..