Categories

John Resig의 ECMA Script 5소개

John Resig의 “Pro JavaScript Techniques”은 구입은 하지 않았으나, 웹에서 다운받을 수 있는 그 책의 소스 코드는 JavaScript를 공부하는데 큰 도움이 되었다. http://www.grayger.com/wp/?p=27
서점에 가서 그 책의 번역본을 쓰윽 훝어보았는데 소스 코드 이상의 특별하거나 재미있는 내용은 없어서 구입은 안하기로 했다. 대신, 올 가을 나오는 Secrets of the JavaScript Ninja는 꼭 사보련다.

한 동안 그의 블로그에 내 관심을 끄는 이야기가 없었는데, 최근 ECMA Script 5를 소개하는 재미있는 글이 올라왔다.
http://ejohn.org/blog/ecmascript-5-objects-and-properties/
http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/

첫번째 글은 ECMA Script 5에 object의 property를 변경(추가 또는 삭제)하지 못하게 하는 API가 추가된다는 내용이다. 이는 내가 사용할 객체가 다른 코드의 영향을 받아 예상치 못하는 행동을 하는 것을 막아준다.
두번째 글의 Scrict mode, 말 그대로 엄격한 모드에서는 실수하기 쉬운 코드에 대해서 미리 에러를 발생시키기 때문에 안전성을 강화하기 위한 용도로 사용된다. Script mode에서 정의되지 않은 변수에 값을 할당한다거나 eval()으로 변수를 만드는 것은 허용되지 않는다. Java 코드를 체크해주는 FindBugs 같은 정적 분석툴의 역할을 하게 된다.
또한 JSON을 다루는 메소드가 언어에 포함된다. 현재에도 JSON을 String으로 바꾸는 등의 라이브러리가 있는데, 이게 언어에 포함되면 더욱 빠른 성능이 가능할 것이라고 한다.

stackoverflow.com vs. javaranch.com

한달 전까지만 해도 프로그래밍 관련 Q&A를 위해 javaranch.com을 주로 이용했었는데, 요즘은 새로 알게된 stackoverflow.com 을 이용한다. 간단하게 사용 소감을 정리해보았다.

JR: javaranch.com
SO: stackoverlow.com

알게된 방법
JR: Head First Design Patterns
SO: link from Alex Miller’s blog

속도
JR: 느림, 최근에 Q&A 게시판(Big Moose Saloon)이 http://www.coderanch.com/forums 라는 새로운 도메인을 가지게 되었고, 어떤 이유인지 몰라도 약간 빨라짐.
SO: 빠름. 속도에 대한 불만이 없음

주제
JR: 자바 관련 기술 한정됨. SCJP 등 자격증. 그외로는 모델링, Groovy 같은 언어 카테고리가 있으나, 활성화 되지 않음. 카테고리별 게시판에 들어가 Q&A를 함
SO: 개발 관련 모든 주제. 카테고리별 게시판은 없고, 태깅을 사용

Q&A 품질
JR:
- 질문 품질: 학교 숙제를 물어보거나, 이미 질문된 것을 반복적으로 하거나, 잘못된 카테고리에 질문을 하는 등의 경우도 빈번함. 이 때 중재자(moderator)가 경고를 하거나 질문을 잠굼.
- 답변 품질: 정확하고 풍부한 답변을 받음. 주로 초보자들이 질문을 남기고 답변은 전문가들이 남김. 남긴 글 수나 운영진의 판단으로 매겨진 등급이 있어서, Bartender 이상 급이면 대체로 신뢰할 만함.
SO:
- 질문 품질: JR과 같은 문제가 있겠으나, vote 수가 높은 순으로 노출되기 때문에, 저품질의 질문을 무시할 수 있음
- 답변 품질: 초보자가 질문한 것을 다른 초보자가 답변하는 경우도 많으나, vote 수가 높은 순으로 노출되기 때문에 보다 올바른 답을 알 수 있음. 대체적으로 하나의 질문에 대해 JR 보다 답변이 많이 달림.

추가 기능
JR: 좀 오래된 싸이트이고, 리뉴얼을 잘 안하다 보니, 전통적인 게시판의 기능만을 가지고 있다. 최근에 글 남기기 전 미리보기 기능을 추가한 정도
SO: 태깅, 질문, 응답에 voting 기능, 질문, 응답에 덧글(comment) 기능, 뱃지(badge)부여 기능, 사용자 랭킹 등. 질문 시 질문 제목을 입력하면 이미 존재하는 연관된 질문 리스트를 보여줘서 중복 질문을 막을 수 있음. 질문, 답변의 리비전 관리.

전체적 평가
JR: 지금까지 누적된 Q&A를 찾아봐도 좋은 공부 자료가 될 정도로 양질의 유산을 가지고 잇으나, 카테고리별로 나눠진 구조가 접근성을 떨어뜨린다. concurrent 패키지에 대한 질문을 하려면 “Thread and synchronization” 카테고리에 해야 하는지, “beginner” 또는 “intermediate” 카테고리에 해야하는지 고민을 해야 한다. 좋은 질문을 하고도 잘못된 답변이 달리고 나서 그대로 묻히기도 한다. 리뉴얼을 해서 좋은 Q&A 자료들을 잘 살렸으면 한다.
SO: 여러 편리한 기능과 단순하면서 깔끔한 UI로 접근성, 사용자 편의성을 높였다. voting 기능이 활성화에 큰 기여를 하고 있는 듯 하며, 이는 또한 양질의 질문과 답변을 선별해내는 역할을 잘 하고 있다.

Hidden Features of Java

A few days ago, I registered stackoverflow.com and found an interesting post: what are hidden features of Java?

The stuffs that I didn’t know before are

  • Double brace initialization
  • 	Map map=new HashMap<String,String>() {
    		{
    			put("key1","value1");
    			put("key2","value2");
    		}
    	};
    
  • Instance initializer
  • public class Initializer {
    	static {
    		System.out.println("static");
    	}
    	{
    		System.out.println("instance");
    	}
    	public Initializer() {
    		System.out.println("constructor");
    	}
    }
    
  • Covariant return type
  • 	abstract class Base {
    		abstract List getList();
    	}
    
    	class Sub extends Base {
    		@Override
    		ArrayList getList() {
    			return null;
    		}
    	}
    

Double brace initialization uses instance initializer because first brace is for declairing annomymous inner class and second brace is for instance initializer block.

JavaScript The Good Parts

“JavaScript The Good Parts” by Douglas Crockford is one of the most subjective books on JavaScript because it dares to divide JavaScript language specifications into good parts and bad parts.

Most of good parts are well-known, but not widely used. I can see they are fully and correctly used in JavaScript frameworks or toolkits but they are rarely or inappropriately used by page designers.

For me, sections on bad parts are much useful. I tell “===” from “==” but I have never used “===” just because I, as a Java programmer, am not familiar to it. The book helps use bad parts less rather than use good parts more.