이 책의 1장에서는 객체지향을 실제 세계를 직접적이고, 직관적으로 모델링할 수 있는 패러다임 이라는 문장에 아래와 같이 해석하고 있다. 실세계의 모방이라는 객체지향의 개념은 훌륭한 프로그램을 설계하고 구현하는 실무적인 관점에서는 부적합하지만, 객체지향이라는 용어에 담긴 기본 사상을 이해라고 학습하는데 매우 효과적이다. 왜 훌륭한 프로그램의 설계에는 적합하지 않을까?! 하지만, 1장에서는 위 질문에 대한 대답은 주고 있지 않다. 오히려 실세계의 모방을 통해 객체지향의 개념에 대해 설명하고 있다. 객체지향이란 시스템을 상호작용하는 자율적인 객체들의 공동체로 바라보고, 객체를 이용해 시스템을 분할하는 방법이다. 1. 자율적인 객체란, 상태를 직접 관리하고, 상태 가반으로 스스로 판단하고 행동할 수 있음을 의미..
1. Java 구현 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { public static void main(String[] args) { System.out.println(bfs(Integer.parseInt(new Scanner(System.in).nextLine()))); } private static int bfs(final int s) { final Queue queue = new LinkedList(); final boolean[][] visited = new boolean[1000 + 1][1000 + 1]; // [screen][board] queue.add(n..
1. Java 구현 import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; import java.util.Scanner; public class Main { public static void main(String[] args) { final Scanner scanner = new Scanner(System.in); final String[] firstLine = scanner.nextLine().split(" "); final boolean[][] maps = new boolean[Integer.parseInt(firstLine[0])][Integer.parseInt(firs..
'패턴2 기업 사이트' 를 시작하기 전에 간단한 내용 정리부터 시작하려고 한다. what is CDN Content Delivery Network의 약자인 CDN은 지리적 제약 없이 전 세계 사용자에게 빠르고 안전하게 콘텐츠를 전송할 수 있는 전송 기술을 의미한다. CDN은 각 지역에 캐시 서버(PoP, Points of presence)를 분산 배치해, 근접한 사용자의 요청에 원본 서버가 아닌 캐시 서버가 콘텐츠를 전달한다. 즉, CDN은 서버와 사용자 사이의 물리적인 거리를 줄여 콘텐츠 로딩에 소요되는 시간을 최소화한다. 하지만, 특정 국가나 지역만을 타깃으로 하는 웹 서비스를 운영한다면 CDN 서비스를 활용할 필요가 없다. 이 경우 CDN을 이용하면 오히려 불필요한 연결 지점이 늘어나 웹 사이트의 ..
프로그래머스 2단계 2021 카카오 순위검색 url: https://programmers.co.kr/learn/courses/30/lessons/72412?language=java 이 문제는 정확성과 효율성을 모두 평가한다. 그렇기 때문에 효울성을 통과하는 것이 가장 중요하며 어렵다. 처음에는 아래와 같이 문제를 풀었다. import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; class Solution { public int[] solution(final String[] info, final String[] query) { final List infos = Arrays.stream(info) .map(this:..
이제는 '패턴1 이벤트 사이트' 를 정리 해보려고 한다. 패턴1의 목표는 인터넷을 통해 접근 가능한 단일 서버를 구성하기! - 리전 선택 - ec2 인스턴스 설정 - 도메인을 통한 접속 - 네트워크 구성 - 뤱 서버 os 환경설정 리전 선택 가장 먼저 리전을 선택해야 한다. 리전은 지리적으로 가까울수록 빠르고, 멀수록 느리며, 각 리전마다 요금이 각각 다르다. 한번 설정된 리전을 변경하는 것은 다소 번거롭기 때문에 응답속도와 요금을 잘 고려해서 목적에 맞는 선택이 필요하다. 리전 선택이 완료되면 VPC (논리적으로 격리된 사용자 네트워크 공간) 와 서브넷 (VPC 를 논리적으로 분리하는 서브 네트워크로서, AWS 환경에서 네트워크의 최소 단위) 으로 구성하는 네트워크 작성이 필요하다. VPC 는 다수의 ..
'패턴1 이벤트 사이트' 를 시작하기 전에 간단한 내용 정리부터 시작하려고 한다. What is EBS EBS 라고 하면 ... 교육방송이 가장 먼저 떠오른다. AWS 에서 EBS 는 Elastic Block Store 의 약자이다. 사용이 쉽고 확장 가능한 고성능 블록 스토리지 서비스로서, 일종의 하드디스크 라고 생각하면 이해하기가 쉽다. 하나의 EBS 에 여러 개의 EC2 를 연결 할 수 있다. (1 : N) - 필요한 용량에 맞게 구입 가능하고, 필요에 따라서 즉시 생성/삭제 가능 - 사용한 만큼 과금 되는 종량제 - 내부적으로 데이터를 실시간 복제하고 있기 때문에 하드디스크에 비해서 데이터를 잃어버릴 확률 낮음 - 스냅샷 기능을 제공해서 EBS의 현재 상태 그대로 보존 할 수 있으며 스냅샷을 이용..
오늘은 설명없이 간단한 코드만 명시할 예정이다. Mustache template engine 관련된 간단한 예제 코드이다.Mustache template engine 에 대한 간단한 설명은 아래 글을 통해 확인 가능하다. (https://lkhlkh23.tistory.com/64)첫번째 함수는 일반적인 Mustache template engine 에 대한 예제이다. 별로 설명할 필요가 없을거 같다.두번째 함수는 사용자가 정의한 태그를 이용해서 렌더링하는 코드의 예제이다.굳이, 왜 필요할까? 라고 생각할 수 있을 것이다. 필요하다. 정말 필요하다. 왜냐하면, Mustche template engine 은 서버와 프론트에서 동시에 사용할 수 없다. $(document).ready(function() { re..
오늘은 리팩토팅 작업을 수행하면서 적용했던 디자인 패턴 하나를 소개하려고 한다. 아래는 리팩토링 이전에 데이터를 화면에 노출하기 위한 간단한 방식을 설명하고 있다.1. 서버에서 화면 노출에 필요한 데이터를 프론트에 전달2. 프론트에서는 전달받은 데이터를 가지고 Handlebar를 통해 데이터를 노출 그러나, 특정 데이터에 대해서는 Handlebar에서 Helper를 통해서 조건문과 특정 로직을 통해 데이터를 노출하는 것을 제어3. 또는, JSP이기 때문에 JSTL 이용해서 여러 조건과 로직을 통해 데이터 노출하는 것을 제어 위에 설명만 듣고서는 이해가 되지 않을 수 있다. 간단한 예를들자면, 화면에서 쿠폰의 아이콘을 표시하기 위해서 프론트에서 아래와 같이 2단계를 거친다. 서버에서 전달받은 쿠폰 데이터를..