전체 글

좋은사람의 개발 노트 입니다.
언어/Java

Java(자바) 디자인패턴 - 템플릿 메소드(Template Method) 패턴 설명 및 예제소스

Java 디자인패턴 - 템플릿 메소드 패턴 이번 시간에는 자바 디자인 패턴 중 빈번하게 사용되는 템플릿 메소드 패턴 (Template Method Pattern)에 대해서 간단한 예제와 함께 설명 드리려 합니다. 템플릿 메소드 패턴은 어떤 소스코드상의 알고리즘에서 특정 환경 또는 상황에 맞게 확장 또는 변경을 해야 할 경우 매우 유용한 패턴입니다. 추상클래스와 구현클래스로 작성할 수 있으며, 메인이 되는 로직 부분은 추상클래스의 일반 메소드로 선언해서 사용합니다. 즉, 구현별로 달라질 수 있는 행동(메소드)들은 구현 클래스에서 선언 후 호출하는 방식으로 사용합니다. 해당 패턴은 아래와 같은 장단점이 있습니다. 장점 - 코드 중복 감소 - 자식 클래스의 역할(롤)을 감소시키면서 핵심로직 관리 용이 - 객체..

언어/Java

Java(자바) 디자인패턴 - 어댑터(Adapter) 패턴 설명 및 예제소스

Java 디자인패턴 - 어댑터(Adapter) 패턴 이번 시간에는 자바 디자인 패턴 중 빈번하게 사용되는 어댑터 패턴(Adapter Pattern)에 대해서 간단한 예제와 함께 설명 드리려 합니다. 어댑터 패턴은 한 클래스의 인터페이스를 사용하고자 하는 다른 인터페이스로 변환할 때 주로 사용하며, 이를 이용하면 인터페이스 호환성이 맞지 않아 같이 쓸 수 없는 클래스를 연관 관계로 연결해서 사용할 수 있게 해주는 패턴입니다. 아래와 같은 장점이 있습니다. - 관계가 없는 인터페이스 간 같이 사용 가능 - 프로그램 검사 용이 - 클래스 재활용성 증가 등 아래 설명을 읽어보시고 예제 소스코드를 학습하시면 쉽게 이해하실 수 있을 거라 생각합니다. Java 관련 포스팅 : Java 관련 Java 어댑터(Adapt..

언어/Python

파이썬(Python) - Thread(쓰레드) 설명 및 예제 소스 코드(3) - 데이터 통신

파이썬(Python) Thread - 데이터 전달 설명 지난 시간에 이어서 오늘은 파이썬 쓰레드 동기화 및 데이터 전달에 대해서 간단하게 설명하겠습니다. 쓰레드 작업에서 메시지 전달 기능 추가는 각 쓰레드 간에 동기화 작업을 정확하게 구현해줘야 한다고 생각합니다. 아래 예제에서는 파이썬 Queue(큐)를 사용해서 쓰레드간 데이터 전달 과정을 구현해 보았습니다.문서 하단에서 간단하게 예제를 작성해보겠습니다. Python 관련 포스팅 : Python 관련 파이썬(Python) Thread - 구조 보통 Thread는 아래와 아키텍처로 나타낼 수 있으며, 관련 예제는 하단에서 설명합니다. Thread 구조 - 출처 파이썬(Python) Thread 동기화 및 데이터 전달 - 예제 코드 파이썬 큐(Queue)를..

언어/Python

파이썬(Python) - Thread(쓰레드) 설명 및 예제 소스 코드(2) - 동기화

파이썬(Python) Thread - 동기화 설명 지난 시간에 이어서 오늘은 파이썬 쓰레드 동기화에 대해서 간단하게 설명하겠습니다. 쓰레드는 보통 둘 이상의 실행 흐름을 가지고 있기 때문에 공통 메모리 영역의 값을 참조하는 과정에서 동일한 데이터를 조작하는 등의 일련의 과정이 일어나게 됩니다. 그 과정에서 문제가 일어날 가능성이 있는데 쓰레드의 실행 순서 조정 및 메모리 접근 제한 등으로 문제를 해결하게 되며, 이 때 쓰레드의 동기화 기법이 필요하게 됩니다. 문서 하단에서 간단하게 예제를 작성해보겠습니다. Python 관련 포스팅 : Python 관련 파이썬(Python) Thread - 구조 보통 Thread는 아래와 아키텍처로 나타낼 수 있으며, 관련 예제는 하단에서 설명합니다. Thread 구조 -..

언어/Python

파이썬(Python) - Thread(쓰레드) 설명 및 예제 소스 코드(1) - 기초

파이썬(Python) Thread - 설명 프로그래밍 언어를 떠나서 개발자에게 있어서 쓰레드를 능숙하게 활용할 수 있는 스킬은 정말 중요한 부분이라고 할 수 있습니다.프로세스의 흐름 및 기타 연관된 동작 관계에 대해서도 잘 파악하고 있어야 하기 때문입니다. 프로세스는 하나의 흐름(루틴)을 가지고 있습니다. 즉, 직렬적으로 한 개의 일을 순서대로 처리하기 때문입니다. 쓰레드를 사용하면 하나의 프로세스 안에서 여러개의 루틴을 만들어서 병렬적으로 실행할 수 있습니다.단순 반복하는 작업을 분리해서 처리할 수 있으며, 아래와 같은 장점이 있습니다. - CPU 사용률 향상 - 효율적인 자원 활용 및 응답성 향상 - 코드 간결 및 유지보수성 향상 그러면 이번 시간부터 파이썬 쓰레드 활용 방법에 대해서 3부에 걸쳐서 ..

언어/Python

파이썬(Python) - 제네레이터(Generator) 설명 및 예제 소스 코드

파이썬(Python) Generator- 설명 파이썬에서 성능 및 효율적으로 코드를 작성 하기 위해서 제네레이터 패턴을 많이 사용합니다. 제네레이터는 간단하게 설명하면 배열이나 리스트와 같은 반복가능한 연속적인 값들을 생성해 내는 패턴이고 가장 중요한 점은 모든 값을 포함하여 반환 하는 대신 호출 할 때마다 한 개의 값을 리턴하는 것입니다. 그런 이유에서 아주 작은 메모리로 효율적으로 대용량의 반복가능한 구조를 순회할 수 있다는 것이 가장 큰 장점이라고 볼 수 있습니다. 문서 하단에서 간단한 예제를 통해서 제네레이터를 쉽게 알아보도록 하겠습니다. Python 관련 포스팅 : Python 관련 파이썬(Python) Generator - 다이어그램 아래와 다이어그램으로 나타낼 수 있으며, 관련 예제는 하단에..

언어/Python

파이썬(Python) - 이터레이터(Iterator) 설명 및 예제 소스 코드

파이썬(Python) Iterator - 설명 파이썬에서 효율적으로 코드를 작성할 수 있는 방법 중에 이터레이터를 반드시 이해해야 된다고 생각됩니다. 이터레이터란 반복가능한 객체 즉, 반복문을 활용해서 데이터를 순회하면서 처리하는 것을 의미합니다. - List - Dictionary - Set, Tuple, Str 등 즉, 위와 같은 순회 가능한 Sequence 객체들에 대해서 Iterable Object 라고 지칭합니다.이미 순회 가능한 Design Pattern 으로 정의되어 있으며, 문서 하단에서 간단한 예제를 통해서 이터레이터를쉽게 알아보도록 하겠습니다. Python 관련 포스팅 : Python 관련 파이썬(Python) Iterator - 다이어그램 아래와 다이어그램으로 나타낼 수 있으며, 관련..

OS/Etc

[WNMP] PHP, MariaDB, Nginx 통합 설치 및 설정 방법

WNMP - 기본 설명이번 포스팅에서는 윈도우 환경에서 Nginx, MariaDB, PHP 구성을 한 번에 쉽게 할 수 있는 WNMP 설치 방법에 대해서 알아보겠습니다. 각각 설치 및 구성을 한다면 불필요한 패키지 설치 및 번거로운 과정이 있기 마련이지만, WNMP는 설치 한 번에 각종 설정 파일을 쉽게 구성할 수 있다는 장점이 있습니다. 아래와 같이 따라하시면 쉽게 설치 및 설정이 가능합니다. WNMP - 다운로드 및 설치우선 WNMP를 다운로드 합니다. - 다운로드본 설정은 Windows10 (x64)에서 설정했습니다. 사이트 접속 후 왼쪽 상단에 DOWNLOAD 클릭 설치 파일 실행 후 동의 후 Next 선택 바로가기 생성 유무 선택 후 Next 선택 최종 적으로 Install 선택 설치가 진행 됩..

개발도구/Eclipse

[Eclipse]이클립스 - UML(클래스 다이어그램) 플러그인 설치 및 사용 방법

Eclipse UML - 클래스 다이어그램이번 포스팅에서는 이클립스(Eclipse) IDE에서 클래스 다이어그램을 사용해서 UML을 작성하는 방법에 대해서 알아보겠습니다. 직접 관련 도구로 그리는 것도 가능하지만, 이클립스 플러그인을 활용하면 손 쉽게 자동으로 클래스 다이어그램을 작성할 수 있습니다. 클래스 다이어그램을 통해서 클래스의 관계, 필드, 메소드의 정의 및 가장 중요한 전체 시스템의 개괄적인모습을 정적으로 확인할 수 있습니다. (연관, 집합, 일반화 등) 아래와 같이 플러그인 설치 및 테스트 다이어그램 작성을 따라해보세요. 이클립스 관련 포스팅 참고 : 이동 이클립스(Eclipse) - ObjecjtAid Exploere 설치이클립스에서 Plug-In 형태로 설치가 가능합니다.본 포스팅은 윈도..

언어/Java

Java(자바) 디자인패턴 - 전략(Strategy) 패턴 설명 및 예제소스

Java 디자인패턴 - 전략(Strategy) 패턴 오늘부터 Java 디자인 패턴을 예제와 함께 설명하는 포스팅을 하려고 합니다. 그 중에서 첫 번 째로 실무 프로젝트에서 가장 많이 사용하고 중요한 전략패턴을 설명하려고 합니다. 전략패턴은 각각의 알고리즘군을 교환이 가능하도록 별도로 정의하고 각각 캡슐화 한 후 서로 교환해서 사용 할 수 있는 패턴이며, 아래와 같은 장점이 있습니다. - 코드 중복 방지 - 런타임(Runtime)시에 타겟 메소드 변경 - 확장성(신규 클래스) 및 알고리즘 변경 용이 즉, "프로젝트 전체에서 변경이 일어나지 않는 부분에서 변경이 일어나는 부분을 찾아서 따로 캡슐화 한다." 라고 이해하시면 쉬울 듯 싶습니다. 아래 설명을 읽어보시고 예제 소스코드를 학습하시면 쉽게 이해하실 수..

웹 프론트/Vue

Vue.js - npm & 테스트(Sample) 프로젝트 설치 및 실행 방법

Npm + Vue.js 테스트 프로젝트 설치이번 포스팅에서는 node(npm)과 git 을 활용해서 Vue.js 테스트 프로젝트를 설치해보려고 합니다. 요즘 핫 이슈로 많은 장점을 가지고 있는 vue.js 프로젝트를 cli 환경에서 설치 및 실행 함으로써 여러 가지 이점을 얻으실 수 있을 거라 생각합니다. 아래 프로젝트는 로그인 및 로그아웃, 블로그 포스팅 기능이 구현되어 있습니다. vue 소스 코드 분석에 적합한 예제라는 생각이 듭니다. 기본적으로 npm 과 git은 설치가 되어 있어야 실행가능하며, 하단 순서대로 설정하시면 윈도우 및 Mac 환경에서 누구나 설치가 가능합니다. Git 설치 이전 포스팅 참고 : Git 다운로드 및 설치Npm 설치 URL : Npm 다운로드 및 설치 Vue 프로젝트 소스..

언어/C#

C#- 제네릭(Generic) & 델리게이트(Delegate) 기본 예제

C# - 예제 간단 설명 ① Delegate type 은 형식의 반환 값, 파라미터 등을 지정하여 인스턴스를 호출할 수 있는 메서드를 정의한 것입니다.② 주로 함수의 대리자 역할을 하며, 특정 함수를 캡슐화해서 사용할 수 있게 해주는 것으로 이해하시면 됩니다.③ 하단은 주로 사용하는 제네릭 Delegate 형식에 관한 간단한 예제입니다. C# - Generic & Deligate 예제 소스 원본코드12345678910111213141516171819202122232425262728293031323334353637using System;using System.Collections.Generic; delegate T NumberChanger(T n);namespace GenericDelegateAppl { ..

OS/Etc

[안드로이드 에뮬레이터] 미뮤(Memu) 최적화 방법 상세 설명

Memu(미뮤) 최적화이번 포스팅에서는 미뮤 플레이어 최적화 방법을 알아보려고 합니다. 미뮤 자체가 빠른 퍼포먼스를 가지고 있지만, 조금 더 렉을 줄이고 성능을 끌어 올릴 수 있는 포스팅을 해보겠습니다. 누구나 쉽게 따라하실 수 있습니다. 미뮤 설치 이전 포스팅 참고 : 미뮤(Memu) 앱플레이어 다운로드 및 설치 Memu 최적화 - GPU 렌더링 강제 설정그래픽카드의 효율적인 성능 향상을 위해서 반드시 설정해 주는 것이 좋습니다.본 포스팅은 윈도우10(windows10 x64)에서 테스트 후 작성했습니다. 미뮤 실행 후 설정 실행 태블릿 정보 실행 빌드번호를 여러번 클릭한 후 개발자 문구 확인 개발자 설정이 이미 완료 된 경우는 바로 GPU 렌더링 강제 설정을 하시면 됩니다. 이전 화면에서 개발자 옵션..

언어/Go

Go(Golang) - 맥(Mac) 개발 환경 설치 및 기본 설정 정리(2)

Go프로그래밍 - 맥(Mac) 기본 환경 설정(2)이번 포스팅에서는 Mac OS 환경에서 Go 프로그래밍 개발을 위한 환경 세팅 두 번째 과정을 이어나가도록 하겠습니다. 이번 과정을 잘 마무리하시면, Atom IDE에서 편리하게 Go 개발 환경을 갖추실 수가 있습니다.아직 Go 설치 및 환경 변수 세팅이 안되어 있다면, 이전 포스팅을 참고하세요. Go프로그래밍 - 맥(Mac) 기본 환경 설정(1) - 이전 포스팅 참조 Atom 에디터 Go관련 패키지 설치상단 메뉴 Atom -> Preferences -> Install 메뉴로 이동 후 아래 3가지 패키지를 설치합니다.본 설정은 Mac OS(Sierra x64)에서 설정했습니다. 설치한 패키지는 아래와 같습니다.1. Go-plus : Go 개발 시 code..

언어/Go

Go(Golang) - 맥(Mac) 개발 환경 설치 및 기본 설정 정리(1)

Go프로그래밍 - 맥(Mac) 기본 환경 설정(1)최근에 부각되고 있는 트렌디한 언어 중에서 Go가 꼭 언급됩니다. 구글에서 2009년도에 개발한 언어이고 컴파일 방식으로 매우 높은 성능을 낼 수 있다는 장점이 있습니다.(그 밖에 많은 장점이 존재합니다.) 최근에 Go 웹 프레임워크(Revel)로 프로젝트에 참여할 기회가 생겨서 맥 Mac OS 개발 환경 세팅 방법을 2부에 걸쳐서 정리하고자 합니다. 차근차근 따라하시면 쉽게 구축할 수 있을거라 생각됩니다. Go Mac 버전 다운로드GO 공식 사이트에 접속해서 본인 운영체제에 맞는 버전을 다운로드 합니다. - 다운로드 링크본 설정은 Mac OS(Sierra x64)에서 설정했습니다. Go 프로그램 설치아래 설치 진행을 보면서 쉽게 설치할 수 있습니다.(단..

[좋은사람]
좋은사람의 개발 노트