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개..
대기업 SI 회사에 입사하여, 프로젝트를 수행하며 보고 느낀바를 정리해본 SI 용어사전. SI 용어 사전 단위테스트: 개발자가 할당량을 끝내기 위한 형식적인 절차 통합테스트: 완성된 화면 이것저것 눌러보기 요구사항정의서: 시스템이 이렇게 개선됐으면 좋겠다는 설문조사. 취합 또는 가공이 전혀 안되어있어, 읽어도 도저히 알아볼 수 없는 특징이 있음. 분석단계: waterful 개발 방법론 중, 현행 시스템을 분석하는 단계. 각종 관리문서와 요구사항정의서가 제공되지만 소스코드부터 분석하라는 명령이 하달된다. 설계단계: waterful 개발 방법론 중, 신규 시스템을 설계하는 단계. 설계하는 시간보다 산출물 만드는 시간이 더 길다. 그리고 이때 만든 산출물은 대부분 폐기된다. 개발단계: 고객사가 일을 시작하는 ..
JavaScript는 객체기반의 스크립트 언어이다. 즉, JavaScript는 기본 타입(Primitive Type. 숫자, 문자열, boolean, null, undefined 등.)을 제외하고 모든 것이 객체로 이루어져있다. 그래서 JavaScript를 잘 다루려면 'Object'에 대해 이해하는 것이 가장 중요하다. 1. JavaScript의 객체 JavaScript에서 객체는 Key-Value 형태의 프로퍼티(Property)들을 저장하는 컨테이너이다. 즉, 객체는 프로퍼티로 구성되어있다. 이러한 프로퍼티의 Value에는 기본타입의 값이 들어가거나, 다른 객체가 들어가기도 한다. 심지어 함수가 포함되기도 한다. (이러한 함수를 '메서드'라고 부른다.) 2. 객체 생성 ⊙ Object() 생성자 방..
부제: 카베진 복용법, 카베진 파는곳, 카베진 후기, 카베진 효능 나는 작년부터 스트레스성 위염에 시달리고 있다. 내과에 가서 치료받고, 처방받은 약을 복용하는 것이 제일 좋다고 생각했지만.. 일본에서 국민 위장약으로 이름을 날리고 있는 '카베진'이 궁금해서 40정짜리 한병을 사먹어 봤다. 카베진의 효능 카베진은 양배추에서 유래한 항소화성 궤양인자로 알려진 MMSG(메틸메티오닌설포늄염화물)이 많이 함유되어 있다고 한다. 게다가 위 운동 촉진 및 제산제 성분이 함유되어 있어서 위불쾌감, 위팽만감, 속쓰림, 신트림, 소화불량 등에 좋다. 카베진 복용법 만 15세 이상의 경우 1회 2정, 그렇지 않으면 1회 1정이다. 하루에 총 3회를 복용한다. 카베진 파는곳 카베진-S는 국내에 정식으로 수입되어 일부 약국에..
부제: Checked Exception Unchecked Exception 비교 프로그램은 항상 개발자가 의도한대로 동작하지 않는다. 이것들을 오류(Error)나 버그(Bug)로 자주 일컫는다. JAVA에서는 '오류'를 다루기 위해 Throwable 이라는 클래스를 활용한다. Oracle은 Throwable에 대해 아래와 같이 소개했다. The Throwable class is the superclass of all errors and exceptions in the Java language. Only objects that are instances of this class (or one of its subclasses) are thrown by the Java Virtual Machine or can ..
부제: 프로야구 신인왕 후보 "1등만 기억하는 더러운 세상~!" 몇년 전쯤 희극인 박성광이 개그콘서트의 한 코너에서 밀던 유행어이다. 한 시즌의 최고 신인을 뽑는 최우수 신인 투표에 2~4명의 후보가 매년 선정되지만, KBO 공식기록에는 1등만 기록된다. 그리고 우리들도 그 해 최우수 신인왕이 누구였는지만 기억한다. 그래서 2010년부터 KBO 최우수 신인왕을 아깝게(?) 놓쳤던 후보 선수에 대해 소개하고, 근황도 정리해보려고 한다. 이번에는 저번에 이어서 2013년부터 소개한다. 2010~2012 KBO 최우수 신인 후보 보러가기2016~2017 KBO 신인상 후보 보러가기 2013년 2013년 최우수 신인은 신생팀 NC다이노스의 이재학 선수이다. 2013 최우수 신인 후보들은 다른 해에 비해 좋은 활..
부제: Node.js Nosql 연동법. Node.js의 mongodb모듈을 활용하여 mongodb를 연동하는 도중 라는 오류를 마주쳤다. 한참을 헤맨 끝에 간단히 해결되었지만, 나같은 고민을 하는 사람들이 더 쉽게 고민을 해결했으면 하는 마음에 삽질로그를 남긴다. 먼저, 내가 간단하게 만들어본 프로그램은 화면에서 id와 password를 입력받아 DB에 존재하는지 검증하고, 로그인 성공여부를 보여주는 기능을 한다. db연동은 아래와 같이 했다. 먼저 DB연결하는 function이다. // // 기본 모듈 선언 및 미들웨어 선언 생략 var MongoClient = require('mongodb').MongoClient; var db; // 연결 받아올 변수(중요) function connectDB() ..