본문 바로가기
반응형

IT/Knowledge211

가비지 컬렉터란? 다양하게 많은 언어 환경에 가비지 컬렉터라는 개념은 존재한다. 딱히 내가 설정을 해주지 않아도 알아서 메모리 자원을 관리해주기 위해 존재한다. C를 배웠다면 malloc 함수가 있는데 C에서는 위에서 말한것처럼 메모리 동적 관리를 하며 다 적어줘야했다. C나 C++처럼 오래 된 언어에는 직접 모든것을 하나하나 써줘야만 했다. 예를들어서 집에서 나가는 것을 묘사한다면 씻고 준비한다. 옷을 입는다. 신발장 문을 연다. 신발을 꺼낸다. 신발장 문을 닫는다. 신발을 신는다. 문을 연다. 밖으로 나간다. 문을 닫는다. 이런 동작들은 사람들은 하게 된다. 아무리 생각을 해도 지금 저정도이고 좀더 생각해보면 씻고 준비한다에서도 샤워기 물을 틀고 끄는것도 넣어줘야하고 할게 너무나도 많다. 비유를 외출로 해서 그렇지 코.. 2022. 3. 15.
서버 vs 클라우드 다른 포스팅에서도 온프레미스라던지 Saas라든지 서버와 클라우드에 대해서 다룬 글들은 몇개 있었다. 참고는 아래 참고포스팅을 확인할수 있다. 이번 포스팅에서는 물리적으로 존재하는 서버와 클라우드의 차이에 대해서 알아볼까 한다. 물리적 서버 클라우드 서버 이용방식 호스팅 업체의 물리서버를 단독으로 임대 혹은 구매하여 사용 서버운영에 필요한 인프라와 기술력까지 제공을 받는다. 호스팅 업체의 가상 서버를 단독으로 사용 단 몇 분만에 서버 생성 후 바로 사용한다. 주 사용자 ERP,회사 인트라넷, 대형 쇼핑몰 등 고정적으로 대용량 트래픽과 DB가 많이 소요되고 보안이 중요한 곳에 사용. 데이터의 크기가 빈번히 바뀌거나 각 사용자에게 할당을 해줘야 하는 서버가 있을 경우 사용. 장점 서버 관리에 대한 직접 권한을.. 2022. 3. 14.
객체지향 디자인 패턴 심화 정리 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.
반응형