전체 글 40

VisualStudio Template 파일 만들기 (VSTemplate)

개요 작업을 하다보면 같은 패턴 내용의 파일을 반복해서 생성해야하는 경우가 있다. 이럴 때 별도의 Template 파일을 만들어 놓고 복사해서 사용하면 다소 편한데, 이보다 편한 방법이 있어서 소개하고자 한다. 템플릿 추가 하기 필자는 IUnityContainer, IEventAggregator를 매개변수로 받고 ReactiveObject를 상속받는 ViewModel 클래스를 자주 생성한다. 이를 예시로 템플릿을 추가해보고자 한다. 템플릿 파일 작성하기 템플릿 파일 생성 아래 경로에 빈 파일을 생성한다. 경로 : %USERPROFILE%\Documents\Visual Studio \Templates\ItemTemplates\Visual C# 템플릿 파일 작성 템플릿을 통해 파일을 생성한다면 아래와 같이 ..

의존성 주입 (Dependency Injection)

의존성 주입(Dependency Injection)이란? 의존성 주입(Dependency Injection)은 객체에 또 다른 객체에 대한 의존성을 부여하는 것을 말한다 설명 의존성 그렇다면, 의존성은 무엇일까? 아래 코드를 살펴보자. Job class public class Job { public string JobName { get; set; } } Person class public class Person { public string Name { get; set; } public int Age { get; set; } public Job Job { get; set; } } 위 코드를 보면 Job과 Person 클래스가 정의되어 있다. Job 클래스의 경우는 직업 이름을 프로퍼티로 가지고 있고, Pe..

빌더 패턴 (Builder Pattern)

빌더 패턴(Builder Pattern)이란? 빌더 패턴(Builder Pattern)은 객체를 생성할 때 주로 사용되는 패턴이다. 어떠한 객체를 생성하고자 할 때, 객체 생성에 필요한 요소들은 Builder에 주입하고 Builder가 해당 요소를 바탕으로 객체를 생성하는 방식이다. 우리가 개발할 때 주로 사용되는 StringBuilder가 대표적인 예이다. 내용 일반적으로 객체를 생성할 때, 생성자를 이용하여 객체를 생성한다. 하지만 객체 내부 요소에 대한 접근이 어렵다면? 객체 생성시 입력된 요소에 따라 다른 의미의 객체가 생성되어야 한다면? 필요한 요소에 따라 생성자가 계속 overload 되어야 할 것이다. 이러한 문제를 빌더 패턴을 통해 해소할 수 있다. 빌더패턴을 이용하여 객체를 생성하면 아래..

파사드 패턴 (Facade Pattern)

파사드 패턴(Facade Pattern)이란? 이번엔 Facade Pattern(파사드 패턴)에 대해 정리하고자 한다. Facade의 사전적 의미는 '건물의 정면'이라는 뜻이다. 그 뜻처럼 파사드 패턴은 하나의 시스템을 건물이라 생각한다면 사용자는 건물의 정면을 바라보고 이를 제어하는 방식을 나타낸다. 구성 System 복잡한 기능과 데이터를 구성한다. Facade 객체 System을 직접 제어한다. 복잡한 기능들을 복합적으로 사용하지만 Client에게는 간단하게 기능을 제공한다. Client Facade 객체를 통해 System을 사용 및 제어한다. 특징 - 코드의 간결성 (가독성) - Client가 System을 다루기에 더욱 단순하게 사용 가능 예시 파사드 패턴의 사용을 식당의 운영에 빗대어 예시를..

[JavaScript] CORS (Cross Origin Resource Sharing) 에러

배경 XMLHttpRequest를 이용하여 Json 파일을 읽어 들이는 기능 개발시 구현 확인을 위한 실행시 CORS와 관련된 오류가 발생하였다. 원인 CORS ? CORS(Cross Origin Resource Sharing)는 교차 출처 리소스 공유이다. 이는 브라우저에서 발생하는 에러이다. 브라우저는 동일 출처 정책(Same Origin Policy)를 지키며 운용되고 있는데, 이 정책에는 다른 출처의 리소스 접근을 금지하고 있다. 해결 필자는 보통 Chrome 브라우저를 사용한다. JavaScript를 공부할 때에도 자연스럽게 Chrome 브라우저를 사용하여 결과를 확인하고 있다. 아래에는 Chrome 브라우저를 사용시 CORS 에러를 해결하는 방법이다. Chrome 브라우저 설정 변경 Chrom..

[1] ColorFlippter

튜토리얼 github GitHub - john-smilga/javascript-basic-projects Contribute to john-smilga/javascript-basic-projects development by creating an account on GitHub. github.com 개요 document.getElementById() html 파일내에서 id값을 통해 Element를 찾는 함수 document.querySelector() css 파일에서 정의한 형식을 적용받는 첫번째 Element를 수집하는 함수 addEventListener() addEventListener() - 생활코딩 addEventListener은 이벤트를 등록하는 가장 권장되는 방식이다. 이 방식을 이용하면 여..

[JavaScript] let과 var 차이

개요 let, var은 모두 JavaScript에서 사용이 가능한 변수 선언 방법이다. 물론 두 방법 사이에는 차이점이 있다. 내용 var의 한계 C#을 공부했었던 필자로써는 var가 상당히 간편하고 편리한 변수 선언 방법이지만, JavaScript에서는 var를 사용함에 있어서 한계가 있다. var test = "Test1"; console.log(test); var test = "Test2"; console.log(test); C#을 사용할 때에는 위 코드를 보자마자 이상하다고 생각이 들 것이다. "같은 이름의 변수를 두 번 선언하는 것은 컴파일 에러가 발생할텐데.." JavaScript에서는 위 코드가 두 번의 console.log(test) 함수 호출은 다른 결과를 출력하지만 정상적으로 실행이 된..

[VisualStudio] Visual Studio 중단점 (Break Point)

배경 중단점 (Break Point) 회사에서의 개발은 CAD를 다루기 때문에 자주 Visual Studio의 중단점 기능을 사용하곤 한다. 주로 Geometry 데이터의 값에 대한 수치, 계산 등의 값 확인을 위해서다. 오늘 CAD가 정상적으로 그려지지 않아 이에 대한 원인을 파악하려고 여기저기 중단점을 찍어 값을 확인했다. 해당 문제를 해결하고자 테스트 코드도 작성하고 수많은 형상 정보 중 특정 형상을 확인하기 위한 로직도 덧붙였다. 생각보다 쉽게 문제를 찾았고 이를 찾기 위해 작성했던 로직들을 지우기 위해 모든 브런치를 develop으로 강제 checkout을 하고 작업물을 git에 올리려 했다. 새로 Branch를 생성하여 내용을 수정한 뒤, 마지막으로 정상 동작 여부를 확인하고자 프로그램을 실행..

개발자의 글쓰기 (위키북스, 김철수)

개발자의 글쓰기 개발자의 글쓰기 능력을 종합적으로 향상하기 위한 책이다. 코드 안에서는 함수와 변수 이름을 짓는 것부터 주석 쓰는 법, 에러 메시지 쓰는 법까지 알려준다. 코드 밖에서는 릴리스 노트, 장애 www.aladin.co.kr 개발자라면 누구나 글쓰기에 대한 고민을 한 번쯤 해보았을 것이다. 변수명이나 함수명을 어떻게 써야 다른 사람이 이해하기 쉬울지, 주석으로 어떤 설명을 적어야 할지, 개발 참조 문서는 어떤 식으로 작성해야 하는 지를 늘 고민하고 있다. 어쩌면 코드를 작성하는 것만큼 중요하고 시간을 많이 소요하는 것이 바로 글쓰기이다. 변수 네이밍부터 릴리스 노트, 장애 보고서, 기술 블로그까지, 프로그래머의 글쓰기 고민 끝! 위의 문구는 책 겉표지에 적혀 있는 문구이다. 이처럼 이 책은 개..

독서기록 2022.03.09