Programming 19

자바스크립트 기초부터 모던 자바스크립트까지 - 객체편

목표 : 자바스크립트의 객체가 무엇인지 알아본다. 자바스크립트의 이해를 위해 중요한 부분인 함수&스코프를 이해하기 위해서는 객체부터 들어가야 한다. 따라서, 객체의 성질을 먼저 확인한 후 조금씩 확장해 보도록 하자. 객체란? 자바스크립트는 객체(Object)기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 대의 대부분이 객체다. 원시 값을 제외한 나머지 (함수, 배열, 정규 표현식 등) 모두 객체로 이루어져있다. 원론적인 개념이 아니라 자바스크립트에서 객체는 다양한 타입의 값(원시 값 또는 다른 객체)을 하나의 단위로 구성하는 복합적인 자료구조(Data Structure)다. (원시 값은 단 하나의 값만 나타낸다) 또한, 원시 값은 변경 불가능한 값이지만, 객체타입의 값, 즉 객체는 변경 가능한 값이다..

자바 기초부터 모던 자바까지 - 함수형 프로그래밍 편

목표 : 자바에서의 함수형 프로그래밍에 대해 알아본다. 왜 함수형 프로그래밍이 도입되기 시작했을까? 객체 지향 프로그래밍의 정수였던 java에서 왜 새로운 패러다임을 도전하게 된 것일까? 결국에는 애플리케이션의 요구 조건 변경에 대응하는 절차였다. 먼저 그 흐름을 따라가 보도록 하자 여행 정보를 조회하는 클래스가 있다. 국가명을 통해 조회하며, 그 결과를 리스트로 제공한다. SearchTravel 이라는 이 클래스에는 searchTravelInfo(String country) 라는 메소드로 이를 제공하고 있었다. 새로운 요구사항이 등장했다. 국가명도 제공해야하지만, 도시명으로도 제공해야했다. 그에 따라 2가지 변경 방안이 등장하게 된다. 도시 정보를 파라미터로 받아서 처리할 수 있는 메서드를 추가한다. ..

Programming/Java 2022.07.03

자바 기초부터 모던 자바까지 - 인터페이스 편

목표 : 자바의 인터페이스에 대해 알아본다. 인터페이스 인터페이스가 무엇인지 그에 대한 개념을 설명하지는 않겠다. 자바는 다중상속을 지원하지 않는다거나, 추상화에 대한 내용을 모른다면 잘 정리된 다른 포스팅을 찾아 보도록 하자. 자바8부터 람다와 함수형 프로그래밍을 적용하기 위해 인터페이스를 활용하기 시작한다. 그럼 기존의 인터페이스에는 무슨 문제점이 있었고, 어떻게 진화해 온 것인지 먼저 알아보려 한다. 인터페이스의 문제점 인터페이스는 주로 여러 개의 구현체를 통일화한 명세서로 정의하기 위해 사용한다. 그러면 인터페이스를 구현한 클래스들은 동일한 메소드 명으로 통일성을 확보하고, 구현 방법에 상관없이 자신이 원하는 메서드를 호출해 목적을 이룰 수 있다. 그러나, 가장 치명적인 단점은 명세서기 때문에 수..

Programming/Java 2022.07.03

자바 기초부터 모던 자바까지 - 내부&중첩 클래스편

목표 : 자바의 내부&중첩 클래스에 대해 알아본다. Inner Class 클래스에 전반적인 내용을 모두 적진 않을 것이다. 객체 지향의 거대한 3요소인 상속, 다형성, 캡슐화 등에 대해서는 너무나도 많은 자료가 있으니 별도로 알아보도록 하자. 지금 알아볼 것은 Class안의 Class의 동작에 대해 알아볼 에정이다. Inner Class(내부 클래스)는 중첩 클래스라고도 표현하는 사람도 많지만, 약간 다르게 설명하는 경우도 있다. 중첩 클래스는 클래스나 인터페이스 내부에 static으로 선언된 클래스다. 포스팅을 위해 참고한 자료에서도 중첩 클래스는 내부 클래스와 동일 시하여 표현하고 있어, 하기 내용이 조금 헤깔릴 수 있으나 명확하게 구분하는 사람도 있으니 참고하도록 하자. 클래스 내부에 선언한 클래스..

Programming/Java 2022.07.02

자바 기초부터 모던 자바까지 - 객체 편

목표 : 자바의 객체의 개론을 알아본다. Object 객체가 무엇인지를 정의하고자 한다기 보다, 내가 아는 내용을 정리하고자 한다. 세상 모든 것을 개체라고 할 수 있다. 개체 중에서 내가 관심을 가지는 영역을 객체로 바라보자. 그리고, 그 객체의 성격과 행동, 서로간의 소통들을 정의해나갈 수 있을 것이다. 결국 그 객체에 대해 내가 관심이 있고, 다루고자 하는 영역들을 성격과 행동이라는 용어로 정리하다 보면 특정해 나갈 수 있게 된다. 이를 클래스라는 용어로 불러본다. 사람이라는 객체가 있다. 철학적인 물음으로 사람이란 무엇인가?에 대해서 대답하고자 하는건 아니다. (나라는 것은 무엇인가? 라는 질문으로 넘어가면 철학과 과학의 오묘한 결합이 나오게 된다) 그렇지만 우리가 원하는 어떠한 결과물을 위해서는..

Programming/Java 2022.07.02

자바스크립트 기초부터 모던 자바스크립트까지 - 기초편

목표 : 자바스크립트의 가장 기초적인 내용부터 알아본다. 변수 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름 변수 선언 변수를 생성하는 것 값을 저장하기 위한 메모리 공간을 확보하고, 변수 이름과 확보된 메모리 공간의 주소를 연결하여 값을 저장할 수 있게 준비하는 것 변수를 사용하려면 반드시 선언이 필요하며, var, let, const 키워드를 사용한다. 선언 단계 변수 이름을 등록해서 자바스크립트 엔진에 변수의 존재를 알린다. 초기화 단계 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화한다. 변수 선언의 실행 시점과 변수 호이스팅 console.log(score) // undefined var score; /..

자바 기초부터 모던 자바까지 - 기초편

목표 : 자바의 가장 기초적인 내용부터 알아본다. java만큼 아직 대중적인 프로그래밍 언어는 없다. 점차 포스팅으로 모던 자바에 대해 정리하겠지만, 알았으면서도 오랜만에 보면 새로울 수 있는 포인트들이 있다. 변수가 무엇인지, 자료형이 무엇인지 이런 내용은 아니지만, 조금은 익숙해져야 할 내용으로 작성하려 한다. 상수와 리터럴이 뭐지? 상수(constant)는 알다 시피, 변하지 않는 수를 말하고 final이라는 키워드를 쓴다. final을 쓰면, 변수는 상수가 되고, 상수는 변할 수 없다. 리터럴(literal)은 프로그램에서 사용하는 모든 숫자, 값, 논리 값 (ex> 10, 3.14, 'A', true)을 의미 한다. 그 중에서 리터럴은 상수풀(constant pool) 영역에 저장되어 있다. 변..

Programming/Java 2022.07.01

자바스크립트는 무엇일까?

목표 : 자바스크립트가 무엇인지, 생김새(?) 를 알아보자! 자바스크립트로 처음 개발을 시작해보았으니, 거의 10년 가까이 보고 지낸 언어다. 그럼에도 제대로 공부한건 불과 얼마 안되었기에, 한번 기초이론을 정리해보고자 한다. 자바스크립트는 기본적으로 웹페이지의 보조적인 기능(생동감을 불어주는)을 수행하기 위해 만들어졌다. 처음에는 여러 파생 언어들이 나와, 호환이 완결적이지 않은 크로스 브라우징 이슈가 발생하기 시작한다. 그로 인해, 꾸준히 발전하며 ECMAScript라는 표준 고유 명세를 가지게된 언어다. 어떻게 성장해왔을까? 최초에는 앞서 말한 대로, 웹페이지의 보조역할을 하였고 대부분 웹 서버로직 + HTML/CSS 랜더링 수준이었다. 더보기 랜더링 : HTML, CSS, 자바스크립트로 작성된 문..

Serialize(직렬화)는 언제 쓰는걸까?

목표 : Serialize(직렬화)는 언제 쓰는건지 알아보자! 오늘의 목표에 따라, Serialize에 대해 알아보자. Java를 사용할 때, 정확하게는 Spring boot 로 서버개발을 하고 JPA 등 객체에 대한 연동을 할 때 Serialize는 언제 어디선가 보고 듣는다. Node.js의 Express로 서버를 배울 때는 JSON 규격만 신경을 썼고, Flask로 서버를 공부할 때도 별로 신경쓰지 않던 부분이지만 최근 Spring boot 로 개발하는 일이 잦아지면서, Serialize에 대한 개념이 어떤지에 대해 궁금해졌다. 특히, 최근에 실시간 음성 스트리밍에 대한 업무를 진행하면서, 다음 질문을 받았다. "혹시 JAVA로 개발하시나요? JSON이 아니라, Byte Array로 Serialze..

Programming/Java 2022.04.01