MacBook-Pro:~ kenu$ node --version
-bash: node: command not found
MacBook-Pro:~ kenu$ brew link node
Linking /usr/local/Cellar/node/0.10.24... Warning: Could not link node. Unlinking...

Error: Could not symlink file: /usr/local/Cellar/node/0.10.24/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/zlib.js
Target /usr/local/lib/node_modules/npm/node_modules/sha/node_modules/readable-stream/zlib.js already exists. You may need to delete it.
To force the link and overwrite all other conflicting files, do:
  brew link --overwrite formula_name

To list all files that would be deleted:
  brew link --overwrite --dry-run formula_name
MacBook-Pro:~ kenu$ brew link --overwrite node
Linking /usr/local/Cellar/node/0.10.24... 1190 symlinks created
MacBook-Pro:~ kenu$ node --version
v0.10.24
MacBook-Pro:~ kenu$ npm --version
1.3.21


http://blog.jquery.com/2014/01/24/jquery-1-11-and-2-1-released/


하이라이트

1. 클래스 변경 시 성능향상

2. 세세하게 모듈화된 jQuery 커스텀 빌드

3. 시작 오버헤드 낮춤

4. npm 통해서 배포 https://npmjs.org/package/jquery/

  npm install jquery 로 설치 가능

  npm install jquery@1.11

5. bower 통해서 배포

  bower install jquery 로 설치 가능

6. 기본 배포시 map 호출 제거



image from: http://teerapuch.wordpress.com/2011/09/13/intro-jquery-วิธีเริ่มต้นกับ-jquery/


자바의 Error는 프로그램의 실행을 이어가도록 조치할 수 없는 상황입니다.

Exception은 프로그램에서 조치가 가능한 경우입니다.

IOException과 같이 반드시 코드에서 처리를 해줘야하는 CheckedException 계열이 있고,

RuntimeException과 그 상속받은 예외들처럼 코드 상에서 반드시 처리를 하지 않아도 되는 UncheckedException 계열로 나눌 수 있습니다.




try catch finally 명령을 통해서 예외를 처리하거나, 메소드 시그너처에서 노출합니다. 그 메소드를 부르는 상위 메소드에서 처리하도록 강제하는 것입니다.




package net.okjsp.java;

public class ExceptionTest {

	public static void main(String[] args) {
		divide(30, 5);
		try {
			//divide(30, 0);
			divide2(3, 0);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			System.out.println("반드시 실행되는 코드");
		}
	}

	private static void divide(int a, int b) {
		int c = a / b;
		System.out.println(c);
	}

	private static void divide2(int a, int b) throws Exception {
		if (b == 0) {
			throw new Exception("0으로 나눌 수 없습니다.");
		}
		int c = a / b;
		System.out.println(c);
	}

}


http://alexgorbatchev.com/SyntaxHighlighter 사이트에서 syntaxhighlighter_3.0.83.zip 파일을 다운로드 받고, 압축을 해제합니다. index.html 파일을 실행해서 소스를 참고하면 좋습니다.


관리자 화면에서 HTML/CSS 메뉴 선택합니다. 


이 4줄은 다운로드받은 패키지의 index.html 소스를 참고했습니다.

<script type="text/javascript" src="./images/shCore.js"></script>

<script type="text/javascript" src="./images/shBrushJScript.js"></script>

<link type="text/css" rel="stylesheet" href="./images/shCoreDefault.css">

<script type="text/javascript">SyntaxHighlighter.all();</script>


Hello SyntaxHighlighter

function helloSyntaxHighlighter()
{
	return "hi!";
}


저장을 누르고, 파일업로드 탭을 눌러서 해당 파일을 업로드합니다.



shCore.js는 scripts 폴더와 src에 있습니다. 업로드할 파일은 scripts/shCore.js 입니다.




가장 많이 사용하는 ArrayList와 HashMap의 근본입니다.



다이어그램 읽기

삼각형 실선은 상속(extends), 삼각형 점선은 구현(implements), 그리고 화살표는 사용(has)입니다.

SortedMap<K,V>는 Map<K,V>를 상속하고,

public interface SortedMap<K,V> extends Map<K,V> 


HashMap<K,V>는 Map<K,V>를 구현했습니다.

public class HashMap<K,V>

    extends AbstractMap<K,V>

    implements Map<K,V>, Cloneable, Serializable


HashMap<K,V>는 Set<E>를 필드로 사용하고 있습니다.

    private transient Set<Map.Entry<K,V>> entrySet = null;



UML class diagram은 ObjectAid 이클립스 플러그인을 사용했습니다.

http://www.objectaid.com/

site-url : http://www.objectaid.net/update


간단 플러그인 사용법

ctrl+N > class 필터 > Class Diagram 선택

model.ucls 파일 생성

클래스를 끌어서 ucls 파일에 놓으면 생성

show attributes > none

show operations > none

Layout Diagram 정렬


Add > Java Classifier : 클래스명으로 추가


아웃라인 기능




objectaid 플러그인에서 Sequence Diagram은 라이선스가 있어야 됩니다. Class Diagram만 무료로 사용할 수 있습니다.





IntelliJ IDEA에서는 클래스 선택하고 ctrl+alt+U 로 UML을 바로 볼 수 있네요. 무료버전인 Community Edition에서도 가능합니다.

이클립스처럼 따로 플러그인을 설치하지 않아도 되는 편한 기능입니다.

http://www.jetbrains.com/idea/features/uml_class_diagram.html


이클립스에서 sysout 입력하고 ctrl+space를 치면 System.out.println(""); 코드가 자동으로 완성됩니다.

날짜 시간을 기록하는 dtlog 라는 것을 만들어 보겠습니다.


Quick Access(ctrl+3)에서 templates로 검색해서 Templates - Java/Editor를 선택합니다. 


sysout도 이곳에 설정되어 있습니다. New... 버튼을 클릭합니다.



dtlog를 입력하고 Pattern:에 ${date} ${time} 을 입력합니다.


이제 코드에서 dtlog라고 입력하고 ctrl+space를 입력하면 현재 날짜와 시간이 기록됩니다.



더 많은 옵션들이 스택오버플로우에서 공유되고 있습니다.

http://stackoverflow.com/questions/1028858/useful-eclipse-java-code-templates

따옴표를 다시 바꾸려면 귀찮은 작업인데, 옵션을 이제야 찾았습니다.


프로그래밍에는 곧은 따옴표가 좋습니다.




http://www.slideshare.net/yearinreview/kenu/qPYAAA


더 열심히 활동하고 싶은 자극을 주는 통계페이지입니다.




아직은 JDK8의 정식 버전이 나오지 않아서 이 화면을 보기 쉽지 않습니다.



eclipse 개발중인 다른 버전을 다운로드 받아서 JDK8을 테스트할 수 있습니다.

efxclipse는 e(fx)clipse 즉, JavaFX 개발용 패키지들이 포함된 이클립스입니다. 그래서 용량이 350MB 이상입니다.

http://downloads.efxclipse.org/eclipse-java8/


http://docs.oracle.com/javase/tutorial/java/javaOO/examples/RosterTest.java
http://docs.oracle.com/javase/tutorial/java/javaOO/examples/Person.java
두 소스는 JDK8 샘플입니다.
설명은 http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html 주소의 문서를 참고하세요.



Lambda Expression 이라고 얘기합니다. jdk8에 포함된 기능입니다.

인터페이스의 메소드가 하나일 때, 이것에 대한 인터페이스를 만들고, 익명 클래스로 만들어서 처리하는 것을 단순화 시켰습니다.

http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

예제가 잘 되어 있습니다.


최종 결과는 다음과 같은 코드입니다. C++에서 보던 -> 기호 때문에 당황스럽군요.

printPersons( roster, (Person p) -> p.getGender() == Person.Sex.MALE && p.getAge() >= 18 && p.getAge() <= 25 

    );


람다 표현식을 사용하기 전의 코드는 다음과 같이 익명 클래스로 되어 있습니다.

printPersons(
    roster,
    new CheckPerson() {
        public boolean test(Person p) {
            return p.getGender() == Person.Sex.MALE
                && p.getAge() >= 18
                && p.getAge() <= 25;
        }
    } 

    );


interface CheckPerson {
    boolean test(Person p);
}


확실히 interface 파일 하나 줄이고, 코드를 1/3로 줄이는 효과가 있습니다.

람다 표현식을 사용하려면 아직 개발자 미리보기 버전을 설치해야 합니다.

http://jdk8.java.net



갑자기 이 노래가 생각납니다.

Lambada




+ Recent posts