전체 글 251

템플릿 메소드 패턴

어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴 전체적으로는 동일하면서 부분적으로 다른 구문으로 구성된 메소드의 코드 중복을 최소화 할 때 유용하다. 구조 예제 // AbstractClass.java public abstract class AbstractClass { protected abstract void hook1(); protected abstract void hook2(); public void templateMethod() { hook1(); hook2(); } } // ConcreteClass.java public class ConcreteClass extends AbstractClass { @Over..

티스토리에 GA연동(구글 애널리틱스)

구글 애널리틱스 계정 만들기 위한 링크 : https://analytics.google.com/analytics/web/?et&authuser=0#/provision/SignUp 티스토리에 GA를 연동을 해서 사이트에 대한 통계적 자료를 볼 수 있고 파악이 가능하다. 1. 구글 애널리틱스 계정이 없을 시 새로 만들어주어야 한다. 구글 계정에 로그인을 한 후, 웹페이지 관련 계정이름 및 웹사이트 이름 설정하고 티스토리 메인 화면 주소를 넣어주어야 한다. 2. 이후 고급옵션에 들어가 유니버설 애널리틱스 속성을 만들어주어야 한다. 이때 티스토리 메인 화면 링크를 넣고 GA 4 속성과 유니버설 애널리틱스 속성 둘 다 만들기를 체크해준다. 3. 이후 속성 이름은 필자의 경우 joohs0505_tistory라고 해..

데이터분석 2023.01.09

유용한 영어 숙어(37-39)

in ages 오랫만에, 오랫동안 Ex.) Have you seen Joe recently? I haven't seen him in ages. 요새 Joe를 본 적 있어? 걔 안 본지 오래 됬는데.. hit the hay 잠자리에 들다, 자다 Ex.) It's after 12 o'clock. I think it's time to hit the hay. 12시가 지났어. 자러 갈 시간인 것 같아. in the black 흑자로 Ex.) Our business is really improving We've been in the black all year. 요새 우리 경영이 정말 상승세를 타고 있어. 일년 내내 흑자였거든.

싱글톤 패턴

애플리케이션이 시작될 때, 어떤 클래스가 최초 한 번만 메모리를 할당하고 해당 메모리에 인스턴스르 만들어 사용하는 패턴 하나의 인스턴스만 생성하여 사용하는 디자인 패턴 생성자가 여러번 호출되도, 실제로 생성되는 객체는 하나이며 최초로 생성된 이후에 호출된 생성자는 이미 생성한 객체를 반환시키도록 만드는 것이다 (java에서는 생성자를 private으로 선언해 다른 곳에서 생성하지 못하도록 만들고, getInstance() 메소드를 통해 받아서 사용하도록 구현한다) 사용 이유 한번에 new 연산자를 통해 고정된 메모리 영역을 사용하기에 추후 해당 객체에 접근할 때 메모리 낭비를 방지할 수 있다. 메모리 측면에서 이득을 볼 수 있기 때문이다. 싱글톤으로 구현한 인스턴스는 '전역'이므로, 다른 클래스의 인스턴..

어댑터 패턴

코드를 재사용하기 위해 구조를 변경하는 패턴 사용 방법 : 상속 호환되지 않은 인터페이스를 사용하는 클라이언트 그대로 활용 가능 향후 인터페이스가 바뀌더라도, 변경 내역은 어댑터에 캡슐화 되므로 클라이언트가 바뀔필요가 없다. 기능상 문제없이 동작하는 코드가 단지 인터페이스 차이 때문에 사용할 수 없는 경우 많이 응용되는 패턴이다. 또한 기존 코드에 오류가 있거나 보정 작업이 필요한 경우에도 유용하다. 어댑터 객체 어댑터, 클래스 어댑터 클래스 어댑터 패턴 쓰려면 다중 상속이 필요, 자바에서는 다중 상속이 불가능 밑 그림과 같이 클래스 어댑터에서는 어댑터를 만들 때 타겟과 어댑터 모두의 서브 클래스로 만들고,객체 어댑터 에서는 구성을 통해서 어댑티에 요청을 전달한다는 점을 제외하면 별다른 차이점이 없다. ..

써드 파티(3rd party)

하드웨어 생산자와 소프트웨어 개발자의 관계를 나타날 때 사용한다. 써드 파티는 프로그래밍을 도와주는 라이브러리를 만드는 외부 생산자를 뜻한다. 컴퓨터 제조업체 측면 자사의 컴퓨터를 위한 부가 장치나 소프트웨어가 많은 기업에서 발매되면 결과적으로 자사의 하드웨어 매상이 증가하기 때문에 특허료나 저작권료를 제 3자에게 청구하는 예는 드물고, 오히려 부가 장치나 소프트웨어의 개발을 서드파티에게 맡김으로써 서드파티를 육성하게 된다. 개발자 측면 하드웨어 생산자가 직접 소프트웨어를 개발하는 경우 : 퍼스트 파티 개발자 하드웨어 생산자인 기업과 자사간의 관계에 속한 소프트웨어 개발자 : 세컨드 파티 개발자 아무 관련없는 제 3자 소프트웨어 개발자 : 서드 파티 개발자 주로 편한 개발을 위해 플러그인이나 라이브러리 ..

다익스트라 알고리즘(Dijkstra)

그래프에서 꼭짓점 간의 최단 경로를 찾는 알고리즘 가중치가 음수를 가지면 안되고 인접한 정점으로 가는 간선중 가장 적은 비용을 가지는 간선을 택한다. 알고리즘 수행중 새로운 경로가 생기면 그 경로를 기록하고 이후에 생기는 또 다른 경로와 비교하면서 최단 경로를 탐색한다. 다익스트라 알고리즘 순서 1. 최단 거리 값은 무한대 값으로 초기화한다. for(int i = 1; i

데브옵스(DevOps)

Development + Operations의 합성어 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 말한다. 목적 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것 제품 출시까지 걸리는 기간 단축 새로운 판의 더 낮은 실패율 복구 시 더 빠른 평균시간 장점 작업 속도가 빨라 시장 변화에 더 잘 적응하고 효율적으로 비즈니스 성과를 낼 수 있다. 새로운 기능의 릴리스와 버그 수정 속도가 빨라질수록 경쟁 우위를 차지할 수 있다. 애플리케이션 업데이트와 인프라 변경의 품질 보장을 통해 변경 사항이 제대로 안전하게 작동하는지 확인 가능하다. 개발자와 운영 부서 간의 협력을 통해 효과적인 팀을 구축 가능하다. 자동화된 규정 준수 정책, 세분화된 제어 및 구..

애자일(Agile)

좋은 것을 빠르게 취하고, 낭비 없게 만드는 다양한 방법론을 통칭해 일컫는 말이다. 일정한 주기를 가지고 계속 검토해 나가며 필요할 때마다 요구사항을 더하고 수정하여 살을 붙이면서 개발해 나가는 프로세스 모델 방식이다. 폭포수 모델과는 반대되는 개념이다. 애자일의 핵심은 협력과 피드백이다. 진행과정 계획 -> 설계(디자인) -> 개발(발전) -> 테스트 -> 검토(피드백) 계획을 세운 후 다음 단계까지 기다려서 절차대로 진행하는 폭포수 모델과는 다르게 먼저 진행 후 분석, 시험, 피드백을 통하여 개선해 나가는 진행 모델이다. 소프트웨어 측면에서 팀이라는 단어가 주는 의미를 적용시키고, 효율적인 성과를 얻기 위한 것이다. 장점 프로젝트 계획에 걸리는 시간을 최소화할 수 있다. 점진적으로 테스트할 수 있어서..