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
2014/01
- brew node 2014.01.27
- jQuery 1.11, 2.1 출시 2014.01.27
- Error와 Exception 2014.01.26
- 티스토리에서 SyntaxHightlighter 사용하기 2014.01.25
- Collection Framework 기본 구조와 클래스 다이어그램 플러그인 2014.01.24
- Java Templates 사용하기 2014.01.22
- 워드의 따옴표 자동변환 비활성화 2014.01.17
- 2013 slideshare.net/kenu 통계 2014.01.16
- eclipse에서 JDK8 사용하기 2014.01.15
- Java의 람다 표현식 2014.01.14
brew node
jQuery 1.11, 2.1 출시
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
자바의 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); } }
티스토리에서 SyntaxHightlighter 사용하기
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 입니다.
Collection Framework 기본 구조와 클래스 다이어그램 플러그인
가장 많이 사용하는 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 이클립스 플러그인을 사용했습니다.
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
Java Templates 사용하기
이클립스에서 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
워드의 따옴표 자동변환 비활성화
따옴표를 다시 바꾸려면 귀찮은 작업인데, 옵션을 이제야 찾았습니다.
프로그래밍에는 곧은 따옴표가 좋습니다.
2013 slideshare.net/kenu 통계
eclipse에서 JDK8 사용하기
아직은 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 |
Java의 람다 표현식
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로 줄이는 효과가 있습니다.
람다 표현식을 사용하려면 아직 개발자 미리보기 버전을 설치해야 합니다.
갑자기 이 노래가 생각납니다.
Lambada