1. 빌더 패턴이란? 빌더 패턴(Builder Pattern)은 추상 팩토리 패턴(Abstract Factory Pattern)과 팩토리 메소드 패턴(Factory Method Pattern)과 함께 객체의 생성과 관련된 디자인 패턴이다. 빌더 패턴은 생성자에 들어갈 매개 변수에 대해 차례차례 매개 변수를 받아들이고 모든 매개 변수를 받은 뒤에 객체를 생성하는 구조이다. 그래서 매개 변수가 많을 때 쓰면 유리하다. 이렇게 글로 설명하면 명확하지 않으니 아래에 예를 들어 설명할 것이다. 2. 빌더 패턴을 왜 쓰는가? 빌더 패턴을 설명하기 위해 '학생 정보'를 저장하는 클래스를 소개한다. public class StudentInfo { private String firstName; private String..
이 글은 제가 SI회사를 다니며 겪은 일을 기반으로 작성 된 매우 주관적인 글입니다. SI업계를 곡해하기 위한 글이 아니며, SI업계를 바라보는 여러가지 시선 중 하나 일 뿐입니다. 용어 정리SI: System Integration의 줄임말. 전산시스템을 필요로 하는 곳으로부터 하청을 받아, 시스템의 기획, 개발, 유지보수, 운영 등을 대신 해주는 업종이다. Waterfall: 순차적인 소프트웨어 개발 프로세스를 뜻한다. 자세한 것은 여기를 확인. 갑: SI프로젝트를 발주하는 회사. 주로 ‘발주사' 또는 ‘고객사'로 불린다. 을: SI프로젝트를 수주하는 회사. 큰 규모의 SI업체(삼성SDS, LG CNS, SK C&C 등)가 주로 해당되며, ‘수행사'라고 불린다. 이전 글에서 이어집니다. 단점1 - Wa..
이 글은 제가 SI회사를 다니며 겪은 일을 기반으로 작성 된 매우 주관적인 글입니다. SI업계를 곡해하기 위한 글이 아니며, SI업계를 바라보는 여러가지 시선 중 하나 일 뿐입니다. 첫 회사를 퇴사했다. 만으로 딱 2년 6개월을 다녔다. 이 회사에 합격했을 때가 생각난다. 이름만 대면 다 아는 재벌그룹 계열사에서 자식을 훌륭하게 키워주셔서 감사하다는 화환이 왔을 때 부모님이 얼마나 좋아하셨는지 모른다. SI에 대해 어느정도 알고 있어서 불안했지만, 매년 역대 최고를 경신하는 취업난과 ‘대기업'이라는 키워드가 주는 자긍심에 의심은 금방 사그라들었다. 사진출처: https://fossbytes.com/programming-languages-in-rich-countries-use/ 하지만 SI개발자가 되어 프..
부제: 프로토타입 체이닝. JavaScript 객체지향 패턴. 이번 포스팅은 JavaScript의 prototype에 대해 다루는 글이다. 이미 이전 포스팅들에서 prototype에 대해 어느정도 다루었다. 프로토타입에는 두가지 의미가 있으며, 이를 명확하게 숙지하는 것이 중요하므로 다시 한 번 짚고 넘어가려고 한다. 1. JavaScript의 모든 객체는 '__proto__' 라는 숨겨진 프로퍼티를 갖고 있다. __proto__는 자신의 부모인 프로토타입 객체를 가리킨다. 이러한 링크를 'prototype Link'라고 부른다. 2. JavaScript의 모든 함수는 'prototype' 라는 숨겨진 프로퍼티를 갖고 있다. prototype은 자신에 new 키워드를 붙여 생성한 객체의 부모를 가리킨다...
부제: NOSQL 모듈화 경험기. 나는 다룰줄 아는 언어가 JAVA 밖에 없다. 그래서 요즘 JavaScript를 열심히 보고 있다 ㅎㅎ. 내 생각에는 JAVA와 JavaScript는 완전히 다른 언어이다. 그리고 굉장히 매력적인 언어라고 생각한다. 내가 프로그래밍 언어를 JavaScript로 접했으면 좋았겠다는 생각도 한다. 금요일에 휴가도 썼겠다.. 3일간에 뭘 만들어볼까 고민을 해봤는데, 야구선수 데이터를 활용한 간단한 선수 추천 앱같은 것을 만들어보고 싶었다. 그런데 문제는.. KBO는 OPEN API를 제공하지 않는다.... 나는 phantom.js와 같은 고오급 기술은 사용하지 않았다. request, cheerio 모듈을 활용했다. 닭잡는데 소잡는 칼이 나설 필요는 없으니까! ㅎㅎㅎㅎ 다음 ..
JAVA는 C와 달리 개발자가 명시적으로 메모리를 건드리지(참조하지) 않는다. JAVA는 메모리를 Garbage Collection이라는 알고리즘으로 관리하며, 개발자가 메모리를 관리할 필요가 없도록 한다. (직접 관리하면 오히려 더 안좋은 경우가 많다.) Garbage Collection은 말 그대로 '쓰레기를 정리하는 작업'이다. 그리고 JAVA의 메모리 입장에서 '쓰레기'는 곧 객체, 다시 말해서 '필요 없는 객체'이다. 1. GC와 Heap Garbage Collection을 본격적으로 알아보기전에 JVM의 Runtime Area를 떠올려보자(생각이 안나거나, 잘 모르는 사람은 여기를 참고하자.) Runtime Area의 영역들은 스레드가 시작할 때 생성되는 경우가 있는가 하면, JVM이 시작할 ..
JavaScript의 this는 다른 언어의 this와는 조금 다르게 동작한다. this의 값은 함수를 호출하는 방법에 따라 바뀐다. 좋은 JavaScript 개발자로 거듭나기 위해서는 꼭 이해해야하는 개념이라고 하니, 이번 포스팅에서 다루도록 하겠다. JavaScript에서 함수(Function)을 호출할 때는 암묵적으로 arguments 객체 및 this 변수가 함수 내부로 전달된다. 그리고 방금 언급했듯 함수를 호출하는 방법에 따라 this에 할당되는 값은 달라진다. 지금부터 하나씩 알아보자. 1. 함수를 호출할 때 this 일반적인 함수를 호출할 때, 해당 함수 내부에서 사용된 this는 전역객체(브라우저의 경우 window객체, Node.js의 경우 global 객체)에 바인딩 된다. var n..
지난 포스팅에서 배열(Array)가 객체(Object)로 취급된다는 것을 확인했다. 그리고 JavaScript에서는 함수(Function)도 객체다. 본격적인 이야기를 시작하기 전에, 1급객체(First-Class Citizens)에 대해 짚고 넘어가려고 한다. JavaScript의 함수를 1급 객체라고 표현하기도 한다. 1급 객체는 CS분야에서 자주 쓰이는 용어로, 아래와 같은 특징을 갖는다. ⊙ 변수나 데이터 구조안에 담을 수 있다. ⊙ 파라미터로 전달 할 수 있다. ⊙ 반환값(return value)으로 사용할 수 있다. ⊙ 동적으로 프로퍼티 할당이 가능하다. JavaScript의 함수는 위의 조건을 모두 만족한다. JavaScript의 함수는 입력값을 받아 결과를 반환하는 구조로, JAVA와 같은..
JavaScript에서 배열(Array)은 객체(Object)의 일종이다. 조금 특별한 형태의 객체라고 할 수 있겠다. 다른 프로그래밍 언어의 배열과 유사한 동작을 한다. 이번 포스팅에서는 JavaScript의 배열에 대해 다뤄보려고 한다. 1. 배열 생성 배열을 생성할 때는 대괄호([])를 활용한 표기법인 배열 리터럴을 사용하거나, Array()라는 생성자 함수를 사용한다. var foodArr = ['sushi', 'kimchi', 'apple-pie'] console.log(foodArr[0]); // sushi 출력 foodArr[0] = 200; // 배열의 첫번째 요소가 200으로 바뀜 foodArr[5] = 'pizza'; // 배열의 6번째 요소에 pizza 삽입 첫번째 줄에서 요소가 3개..
JavaScript는 객체기반의 스크립트 언어이다. 즉, JavaScript는 기본 타입(Primitive Type. 숫자, 문자열, boolean, null, undefined 등.)을 제외하고 모든 것이 객체로 이루어져있다. 그래서 JavaScript를 잘 다루려면 'Object'에 대해 이해하는 것이 가장 중요하다. 1. JavaScript의 객체 JavaScript에서 객체는 Key-Value 형태의 프로퍼티(Property)들을 저장하는 컨테이너이다. 즉, 객체는 프로퍼티로 구성되어있다. 이러한 프로퍼티의 Value에는 기본타입의 값이 들어가거나, 다른 객체가 들어가기도 한다. 심지어 함수가 포함되기도 한다. (이러한 함수를 '메서드'라고 부른다.) 2. 객체 생성 ⊙ Object() 생성자 방..