본문 바로가기

반응형

공부 정리

(141)
Optional의 배경지식 Optional의 의도된 쓰임새는 이펙티브 자바 3판 [ 아이템 55 ] 옵셔널 반환은 신중히 하라에서 잘 나와있는데, stackoverflow의 Should Java 8 getters return optional type? 글에서 해당 기술의 개발자가 답글한 내용 중에 핵심 부분을 가져왔습니다. (다수 의역) Our intention was to provide a limited mechanism for library method return types where there needed to be a clear way to represent "no result", and using null for such was overwhelmingly likely to cause errors. For example,..
Java에서 static 사용하면 안되는 이유 PHP, Java와 같은 언어들은 static class를 가지고 있지 않습니다. 하지만, 그 컨셉은 여전히 존재합니다. static methods로만 완벽하게 이루어진 클래스는 static class과 완전히 똑같은 효과를 가지게 됩니다. static class들은 절차지향적으며, 테스트가 불가능합니다. 1. Classes Tend to Go From Big to Huge static methods를 가지고 있는 class들은 객체를 통해서 할 일이 없습니다. 자신들의 정체성도 없으며, 무엇을 해야 하는지, 무엇을 하면 안되는지 정의되어 있는 부분이 없습니다. 경계선이 흐릿하기 때문에 우리는 단지 명령어를 써내려갈 뿐입니다. 우리가 일을 다 마치기 전까지 중간에 정지할 수 없습니다. 불가피하고 객체지향..
컴포넌트 ( 같은 레벨에서의 통신 ) 같은 레벨에서의 통신은 어떻게 할 수 있을까? Root아래에 있는 자식끼리 서로 통신을 하는 방법은? 바로 1:1의 관계로 할 수 없고ㅡ Root를 통해서 거쳐가야 한다. 이때 앞에서 배운 props와 event를 사용한다. 보내는 쪽(from)은 event를 Root에게 보내면 Root는 받는 쪽(to)에 props를 보낸다. appContent의 component가 appHeader로 데이터를 보낸다고 가정한다. 1. 보내는 쪽에서 Root에 event 보내기 appContent에 정의되어 있는 component 내에는 template을 정의한다. ex) template : 'content pass' v-on을 통해 event를 발생시킨다는 것을 알 수 있으며, 우리는 passNum method를 만..
컴포넌트 통신 ( v-bind와 v-on) Vue에서는 상위 컴포넌트, 하위컴포넌트가 존재한다. 어찌보면 당연한 것이다. 컴포넌트를 어렵게 이해할 필요 없이 고유한 데이터의 범위를 갖는다고 생각하면 된다. 특히, html 상에서 요소로 구분되어지는 부분에 해당한다고 할 수 있을 것이다. 상위 컴포넌트는 props를 하위 컴포넌트에 전달하며, 하위 컴포넌트는 event를 상위 컴포넌트에 전달한다. 컴포넌트를 왜 사용해야 할까? 컴포넌트로 캡슐화를 하여 독립성을 유지한다고 생각된다. 자신의 상위 컴포넌트가 아닌 엉뚱한 곳에서 호출이 되는 것을 막을 수 있다. *v-bind props의 경우, v-bind:프롭스 속성 이름="상위 컴포넌트의 데이터 이름"의 형태로 저장된다. ex) v-bind:propsdata="message" 프롭스 속성이름이란, ..
인스턴스와 컴포넌트 / MVVM Vue는 React에 비해 사용방법이 쉽다고 하여서 강의를 시작하였다. 기존의 Spring의 MVC 패턴과는 다르게 MVVM을 사용한다. View로 보여지는 부분들이 ViewModel 덕분에 Model에서의 수정이 이루어지는 즉시 반영된다. 특히, 인스턴스와 컴포넌트에 대한 개념을 확인한다. new Vue()라는... 일반적으로 우리가 아는 new를 이용한 인스턴스 생성이 있다. 컴포넌트는 프런트를 보다 쉽게 꾸미기 위해서 사용한다. 컴포넌트의 경우, 전역 컴포넌트와 지역 컴포넌트가 있다. 보통은 지역 컴포넌트로 사용을 한다. component는 단일 갯수를 나타낸다. 보통 여러 개를 정의하기 때문에 components를 사용하는 편이다. var vm = new Vue() 처럼 인스터스를 변수에 담지 말..
Front-End와 Back-End 연계하기 JAVA, Spring 프로젝트이지만 webpack을 연동하여 Front-End를 적극적으로 활용한다. 또다른 내부의 Directory를 만들고 npm을 통해 webpack을 설치했다. 우리는 이제 보다 자연스럽고 체게적으로 front-end에 관한 코드들을 관리할 수 있다. node.js를 이용하므로 별도의 서버에 업로드 되고, 서버는 tomcat 중심으로 별도의 서버에 업로드 될 것이다. 이제 Front-End와 Back-End는 서로의 통신을 api를 통해서 어떻게 하는지 더 명확하게 구분이 간다. 그 역할은 Controller에서 이루어지기 때문에, @CrossOrigin를 선언해 주어야 한다. javascript 파일에서 async, await, join 등 이해하기 힘든 기술들이 나왔다. 이 ..
Map에서 Key, Value 다루기 알고리즘 문제를 풀다보면 map으로 해결해야 하는 상황이 많습니다. 또한 map을 적절히 이용해 문제가 원하는 key값과 value값을 꺼낼 수 있어야 합니다. 빠르고 쉽게 값을 뽑아내는 방법을 알아보겠습니다. 다음의 조건이 주어질 때 어떤 방식을 사용하는 것이 효율적일까요? 개인적으로 iterator를 순회하는 것보다 for문으로 조회하는 것을 선호합니다. Map 기준 *변형 내용 1. Map의 요소들을 순회하는 방법은? ( 1. key 순회 2.value 순회 3. key , value 동시 순회) 2. Map의 key 값, value 값 중 최대 값을 뽑는 방법은? 3. Map의 value값 중 최대 값의 key값을 뽑는 방법은? ( + 중복일 경우도 포함) 1번 import java.util.Ha..
MVC vs MVP vs MVVM Controller에 Input이 들어온다. View와 Controller는 MVC 구조에서 설계의 상단에 위치한다. Model은 그 아래 위치하며, 따라서 View는 Controller에 대해 알고 있고 Controller는 Model에 대해 알고 있다. View는 Model에 직접 접근이 가능하다. 단점 : 모든 Model을 View에 노출시키는 것은 어플리케이션의 복잡성에 따라 보안문제, 비용문제 등이 발생한다. 데이터베이스에 있는 모든 Model들은 자신들에 맞는 Controller를 호출하는데, 어플리케이션이 더 복잡해지고 많은 연관된 모델을 가지는 시스템으로 확장된다. 사용되는 Controllers의 숫자는 엄청 커질 것이다. 따라서 탐색 속도가 느려진다. Ruby on Rails, Apple..

반응형