반응형 IT/Knowledge272 객체지향 디자인 패턴 심화 정리 part.3 디자인 패턴 정리 마지막 포스팅이고 이번에는 decorator factory method abstract factory mediator composite 이렇게 다섯개의 패턴을 설명으로 마치도록 하겠다. decorator 기본적으로 동작하는 메서드가 있고 추가적으로 하나씩 추가해가면서 동작을 하게 되는 작업을 할때 사용되는 패턴이다. 예를들어서 전투기 슈팅게임을 예로들면 기본 공격이 있고 아이템을 먹을때마다 좀더 미사일이 많이 나가거나 하는 것과 비슷하다. 추가로 먹는 아이템들을 하나하나 클래스로 만들고 부모 클래스인 기본공격을 모두 상속 받는다. 그리고 아이템을 먹게되면 부모의 기본공격 + 자식에서 만들어진 아이템의 추가공격 이렇게 합쳐져서 미사일이 나간다고 생각을 하면된다. factory method.. 2022. 3. 13. 객체지향 디자인 패턴 심화 정리 part.2 part.1에 이어서 이번 포스팅에서 다뤄볼 패턴은 다음과 같다. adapter proxy facade template method adapter 말그대로 어댑터를 생각하면 편하게 이해할수 있다. 우리나라에서 사용하던 가전기기를 해외에서 사용을 하려면 어댑터를 챙겨가곤 한다. 어댑터는 형식이 다른 둘 사이에 연결이 되어 그 둘을 연동할때 사용을 해주게 된다. 이걸 프로그래밍에 입혀보면 인터페이스가 다른 객체를 같은 형식에서 사용할수 있게 하는 디자인이다. 외부에서 받아오는 코드를 자신이 만들어둔 클래스에 입히게 되는데 외부에서 받아온 코드는 지금 짜여진 코드와 형식과 변수 등등 모든것이 다를것이다. 이 외부 코드 하나만을 위해서 내부 코드를 바꾸거나 디자인 변경은 비효율적인 작업이다. 그림으로는 다음과 .. 2022. 3. 12. 객체지향 디자인 패턴 심화 정리 part.1 포스팅을 읽기 전에 아래 참고 포스팅에서 간단한 디자인패턴에 대한 정의와 종류에 대해서 읽고 오면 도움이 될것이다. 그리고 이번 포스팅에서는 좀더 심화된 내용을 다뤄볼 것이다. 저번 포스팅에서 있던 내용은 중복으로 설명이 되는 부분도 있으나 좀더 자세하게 심화된 내용으로 설명을 할것이다. part.1에서는 singleton strategy state command 패턴 들에 대해서 설명을 해본다. singleton 패턴 소프트웨어를 만들때 클래스의 객체가 하나만 만들어 져야할 상황이 있다. 예를들어 페이지에서 셋팅에 다크모드로 설정을 해두면 어느 페이지로 이동을 하든 다크모드는 유지가 되어야한다. 이럴 경우 반드시 하나의 셋팅 객체만 만들어 져야한다. 일반적으로 페이지에서 클래스 호출할 경우를 보면 여러.. 2022. 3. 11. React Native VS Flutter ? 모바일 어플리케이션 제작을 하게 될 경우, 3가지를 먼저 알아야 한다. 네이티브 앱 안드로이드 기반의 OS와 IOS기반의 어플을 각각 만들어야했다. 이것을 native앱이라고 한다. native의 앱은 그 os의 특성을 아주 잘 살려서 어플을 제작할수 있다는 장점이 있다. 예를들어서 카메라 호출을 하거나 핸드폰 내장에 있는 기능들을 쓸수 있다. 하이브리드 앱 하지만 안드로이드와 IOS를 각각 만들려고 하면 2배, 아니 그 이상의 노력과 시간과 돈이 들게 된다. 이것을 해결하기 위해 나온것이 하이브리드 앱이다. 하이브리드 앱은 다른말로 웹뷰라고도 하며 인터넷 사이트 주소를 application에 담아서 어플 형식으로 출시를 하고 앱을 눌러보면 인터넷 사이트가 반응형으로 하여 핸드폰에 보여지게 된다. 하지만.. 2022. 3. 10. 개발 방법론(Tdd, Bdd, Ddd) 개념 및 차이 개발을 할때는 아키텍쳐 등으로 설계도 중요하지만 방법론 역시 중요하다. 다양한 방법론들이 있지만 이번 포스팅에서 다뤄볼 방법론은 Tdd, Bdd, Ddd 를 다뤄볼것이다. 과거에는 요구분석단계부터 구현, 시험, 등 과정을 모두 차례대로 거치는 폭포수 모델이 있었지만, 현재의 개발 시장에서는 빠르게 만들고 실패시 버리고 새로 다른것을 만들고 하는 동향이 있다. 그리하여 이들이 대두되었다. Tdd(Test-Driven-Development) 한글로 직역하면 테스트 주도 개발이다. 개발을 할때 주기적으로 테스트를 임의로 진행을 하면서 나아가는 방식이다. 테스팅을 함으로써 긴 코드여도 어디가 문제인지 알수 있고, 객체지향적이고 확장이 가능하게 용이하다. 게다가 디버깅시간이 단축이 되며 결국 전체 소요 시간이 단.. 2022. 3. 8. Apache Hadoop, Apache Spark 빅데이터를 다루거나 분석을 하게 되면 많이 들어본 단어인 아파치 하둡과 아파치 스파크에 대해서 알아볼것이다. 이름에서도 알수있듯이 라이센스는 아파치 기반이다. 라이센스에 대한 정보는 아래 참고 포스팅에서 확인을 해볼수 있다. 먼저 하둡에 대해서 알아보도록 할것이다. Hadoop 하둡은 대용량 데이터를 분산 처리 할수 있는 자바 기반의 오픈소스 프레임워크다. 분산처리 저장기술이 뛰어나고 오픈소스로 변하면서 사람들에게 많은 사랑을 받게 되었다. 그럼 여기서 말하는 분산이란, 데이터를 하나의 하드디스크가 아닌 여러개의 하드디스크에 저장을 하고 순서대로 한번씩 읽으면서 데이터를 가져오는것이다. 하나의 디스크에서 데이터를 가져오게 된다면 직렬로 데이터를 갖고 오게 되어 오래 걸리는데 여러 디스크에서 조금씩 데이터.. 2022. 3. 7. node.js 란? 저번 포스팅에서 런타임에 관한 포스팅을 작성 하였다. 못보신 분들은 런타임에 대한 의미를 참고포스팅을 보고 가서 확인하고 오시는게 도움이 될듯하다. 이번시간에 다룰것은 javascript의 런타임 환경 중 하나인 nodejs에 대해서 다뤄볼것이다. 그리고 이어서 nodejs package manager 의 약자인 npm 에 대해서도 잠깐 다뤄볼것이다. 참고포스팅에 보면 피시에 셋팅하는 법도 링크를 올려뒀으니 참고하도록 하자. 다시 본론으로 돌아와 nodejs란 javascript 엔진으로 빌드된 javascript 런타임 이다. 이벤트 기반, 논블로킹 모델을 사용해서 가볍고 효율적이므로 가장 많이 쓰이고 있고 nodejs 기반의 생태계인 npm은 가장 큰 오픈소스 라이브러리 생태계이다. 그럼 사용하는 이.. 2022. 3. 5. Runtime 의미 IT에서 말하는 의미의 런타임이란, 프로그램이 실행되는것에 run의 의미를 갖고 실행되는 서버 혹은 컴퓨터 내에서 프로그램이 실행이 되는 동작을 런타임이라고 한다. 혹은 프로그래밍 언어가 구동 되는 환경이라고 생각하면 된다. 요즘 많이 사용하는 javascript를 예로 들 경우, 브라우져에서 실행이 되면 런타임 환경은 브라우저가 되고, nodejs에서 실행이 된다면 런타임환경은 nodejs가 되는것이다. 개발을 하면서 많이 마주하게 되는 런타임에러또한 비슷하게 생각을 하면된다. 컴파일이 되고 난 후에 프로그램이 실행중임에도 불구하고 예상치 못하고 의도치 못한 예외 상황으로 인해 프로그램을 실행중에 발생하는 오류 형태를 뜻한다. try catch 문 등으로 잡아주면서 런타임에러를 해결할수도 있지만, 프로.. 2022. 3. 4. Hypervisor와 전가상화, 반가상화 Hypervisor 하이퍼바이저는 가상화를 구현하기 위해 기반이 되는 기술이다. 가상머신이라고 해서 아예 어디에도 존재하지 않는것이 아니라 실제 존재하는 물리서버에 가상의 공간을 만들어서 할당을 한다. 그리고 각 가상머신에서 수행하는 명령을 해석해서 하드웨어 단에서 동작을 할수 있도록 해야한다. 가상os를 위해서는 아래 참고 포스팅을 참고해서 vmware를 구성을 해도 좋고, aws 등 클라우드에서 가상의 환경을 만들어도 좋다. 결국 os를 설치를 하게 되고 그 os 위의 커널에서 자원관리와 명령어 해석등의 작업을 이루어지게 되는데, 다양한 os를 사용하게 되면 이것들이 모두 다르다는 것이다. 하드웨어는 어느 os에 기준을 둬야할지 모르는데 이때 조율을 해주는 친구가 이 Hypervisor이다. 얘가 있.. 2022. 3. 3. 이전 1 ··· 25 26 27 28 29 30 31 다음 반응형