개발

    자바(JDK)의 버전별 차이 (JDK 1.0 ~ 1.2)

    현업에서 JDK (1.0~1.3)으로 운영중인 시스템은 찾아보기 매우 어려울 것이다. 그래서 1.3까지는 간단하게 살펴보자 JDK 1.0 가장 최초의 버전 그 후에 나온 마이너 버전은 JDK 1.0.2 버전 -> 최초의 안정 버전 JDK 1.1에서 추가 된 것들 AWT의 이벤트 모델의 확장 및 변경 내부 클래스(inner class)의 추가 JavaBeans, JDBC, RMI등 추가 (AWT : Abstract Window Tookit의 약자, 자바를 이용하여 UI를 구성할 때 사용되는 기반 기술.) (JDBC : Java Database Connectivity 자바에서 저장소에 데이터를 담기 위한 API) (RMI : Remote Method Invocation의 약자로 리모트에 있는 JVM에 있는 ..

    자바(Java)의 역사

    온라인 환경의 출현에 맞추어, 자바는 고도의 분산형 구조에 적합한 능률적인 프로그래밍 방식을 제공한다. 자바는 1991년, Sun Microsystems의 제임스 고슬링(James Gosling,) 패트릭 노튼(Patrick Naughton), 크리스 와츠(Chris Warth), 에드 프랭크(Ed Frank), 그리고 마이크 쉐리든(Mike Sheridan)에 의해 창안되었다. 플랫폼 독립적인 언어를 만들자! 초기에 이 언어는 Oak라 명명 되었으나 1995년에 Java로 바뀌었다. 다소 놀라운 일이지만, 원래 자바는 인터넷을 통한 웹 서비스 또는 Android와 같은 모바일 환경을 위해 개발된 것이 아니었다. 자바가 지향했던 것은 토스터, 전자레인지, 리모콘 등의 가전제품에 내장될 소프트웨어를 위한 ..

    왜 Static변수를 난발하면 안될까?

    1. OOP에서 캡슐화, 은닉화에 위반된다. Static 변수를 자주 사용하는 것은 절차지향프로그래밍에 가깝다. 2. 스태틱 변수는 전역이다. 추론하기도 어렵고 테스트하기도 어렵다. 객체의 새 인스턴스를 만들면 테스트 내에서 상태에 대해 추론 할 수 있다. 하지만 예를 들어서 100만 라인의 시스템에서 전역 변수를 난발하게 된다면 유지보수 면에서 상당히 난해해질 것이다. 3. GC에 의해 영향을 받지 않는다. 4. Thread-safe하지 않다.

    Promise란

    Promise 객체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타냅니다. Dart의 Promise랑 비슷하다 Promise는 프로미스가 생성될 때 꼭 알 수 있지는 않은 값을 위한 대리자로, 비동기 연산이 종료된 이후의 결과값이나 실패 이유를 처리하기 위한 처리기를 연결할 수 있도록 합니다. 프로미스를 사용하면 비동기 메서드에서 마치 동기 메서드처럼 값을 반환할 수 있습니다. 다만 최종 결과를 반환하지는 않고, 대신 프로미스를 반환해서 미래의 어떤 시점에 결과를 제공합니다. Promise는 다음 중 하나의 상태를 가집니다. 대기(pending): 이행하거나 거부되지 않은 초기 상태. 이행(fulfilled): 연산이 성공적으로 완료됨. 거부(rejected): 연산이 실패함. 대기 ..

    동기식 처리 모델 vs 비동기식 처리 모델

    동기식 처리 모델(Synchronous processing model)은 직렬적으로 태스크(task)를 수행한다. 즉, 태스크는 순차적으로 실행되며 어떤 작업이 수행 중이면 다음 작업은 대기하게 된다. 예를 들어 서버에서 데이터를 가져와서 화면에 표시하는 작업을 수행할 때, 서버에 데이터를 요청하고 데이터가 응답될 때까지 이후 태스크들은 블로킹(blocking, 작업 중단)된다. 비동기식 처리 모델(Asynchronous processing model 또는 Non-Blocking processing model)은 병렬적으로 태스크를 수행한다. 즉, 태스크가 종료되지 않은 상태라 하더라도 대기하지 않고 다음 태스크를 실행한다. 예를 들어 서버에서 데이터를 가져와서 화면에 표시하는 태스크를 수행할 때, 서버..

    리액트 4주차 회고

    수요일부터 과제를 시작하여 매우 시간이 부족했다. (다음주 부터 월요일날 무조건 PR 날려야겠다..) Redux라는 새로운 개념을 익히면서 동시에 TDD를 하려니 머리가 아팠다 회사에서 다음주 정식 출시가 끝나면 시간을 훨씬 더 많이 투자 해야겠다. 회사에서 스프링 프로젝트에도 투입될거 같은데 스프링부터 들었으면 더 좋았을텐데!! Facts(한것) Flux, Redux 개념 익히기 Feelings(느낀것) 테스트 코드 작성에 익숙해지면 안드로이드, iOS를 TDD로 진행해볼 수 있지 않을까?(언젠간..?) 한 컴포넌트내에 여러 관심사들을 다른 컴포넌트로 분리시키면서 가독성이 올라가는것을 몸소 체감했다. Ajax append에 익숙했늗네 Flux, Redux라는 개념을 배우고 나니 더 철저한 관심사 분리가..

    객체지향 핵심 키워드 (자바의 신 요약본 - 0)

    객체지향 주요 개념 ● 클래스Class ● 상태state와 행위behavior ● 캡슐화Encapsulation ● 메시지Message ● 객체Object ● 상속Inheritance ● Overriding ● 다형성Polymorphism ● Overloading 이 위에 키워드의 정의를 명확하게 하고자 정리해보고자 한다. 클래스(Class) “상태”와 “행위”를 갖는 자바의 기본 단위를 의미한다. 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성 즉, 필드(field)란 클래스에 포함된 변수(variable)를 의미합니다. 또한, 메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있습니다. 상태state와 행위behavior ..

    jest getby, queryby

    render 함수를 실행하고 나면 그 결과물 안에는 다양한 쿼리 함수들이 있는데요, 이 쿼리 함수들은 react-testing-library 의 기반인 dom-testing-library 에서 지원하는 함수들입니다. 이 쿼리 함수들은 Variant 와 Queries 의 조합으로 네이밍이 이루어져있는데요, 우선 Varient 에는 어떤 종류들이 있는지 봅시다. getBy getBy* 로 시작하는 쿼리는 조건에 일치하는 DOM 엘리먼트 하나를 선택합니다. 만약에 없으면 에러가 발생합니다. queryBy queryBy* 로 시작하는 쿼리는 조건에 일치하는 DOM 엘리먼트 하나를 선택합니다. 만약에 존재하지 않아도 에러가 발생하지 않습니다. 차이점 : DOM엘리먼트가 존재하지 않을 때, 에러 발생 여부 getB..

    jest beforeEach

    테스트 마다 반복 실행이 필요한 작업 - beforeEach Jest는 테스트 전 또는 후에 실행되어야 할 작업들을 다룰 수 있는 함수 제공 이 파일의 각 테스트가 실행되기 전에 함수를 실행 이것은 많은 테스트에서 사용될 일부 전역 상태를 초기화 할 때 유용. beforeEach(() => { return initializeCityDatabase(); // async code }); 여기에서 beforeEach각 테스트에 대해 데이터베이스가 초기화 됨. 블록 beforeEach안에있는 경우 describe설명 블록의 각 테스트에 대해 실행됨

    Jest describe

    describe(), it() test / it: 테스트 하나를 작성할 때 사용하는 키워드이다.(하나의 테스트 단위) 아래는 예시이다. 테스트 파일에 많은 수의 테스트 함수가 작성되어 있는 경우, 연관된 테스트 함수들끼리 그룹화해놓으면 코드를 읽기가 좋음. 다음과 같이 Jest의 describe() 함수를 통해 여러 개의 테스트 함수를 묶는 것이 가능. 여기서 test() 함수 대신에 it() 함수를 사용하기도 했는데요. 이 두 함수는 완전히 동일한 기능을 하는 함수입니다. 기존 많이 사용되었던 Mocha나 Jasmin 같은 테스트 라이브러리에서 함수명을 it()을 사용하였기 때문에, Jest에서도 it()을 test() 함수의 별칭으로 제공하고 있음 describe('socket.io test', ()..