[독후감]닥치고 정치 & 부자경제학

전에 tistory 블로그에선 “서평”이라는 카테고리를 만들었는데, 생각해보니 내가 무슨

전문가도 아니고, 좀 그렇다싶어 초등학교때 자주 썼던 “독후감”이 제일 맞는것 같아

카테고리를 만들었다.

 

올해 “30권 양서읽기”에 도전하고, 작년부터 읽기 시작하여

완독한 “닥치고 정치”와,  “독서천재 홍대리”에서 추천한 “셀프자산관리”

에 이어 “부자경제학”을 1월 말쯤에 완독하고 잠깐 느낌을 적고자한다.

이마저도 안하면 나중에 책을 읽고도 내가 책을 읽었는지 기억이 나지

않는 경우가 허다했다. 물론 엄청난 임팩트가 남은 책은 좀 다르긴 하지만

그러긴 싶지 않다.

 

서론이 길었다.  암튼 일단 김어준총수님의 “닥치고 정치”

 

 

많은 분들이 사보셨는지 2011 알라딘 올해의 책에 선정되었고, yes24에서도 아마 1등을

한것으로 안다. 여튼 다 읽고 난 뒤~

본인 스스로는 무학의 통찰에서 썼다고 했지만  거기에는 놀라운 정계를 바라보는 깊은

통찰력이 들어있었다. 특히 “정치는 연애”편에서는 지금까지 정치에는 전혀 관심없고

투표하기 조차 싫어하던 나의 생각의 근본이 얼마나 잘못되었는지 깨닫기에 충분했다.

그리고 우리의 스트레스의 근원이 정치이고, 또 여자친구를 다루듯 정치와도 연애를

해야한다는 그에 지론에 상당부분 수긍이 갔고, 또 공감했다.

그리고 마지막에는 나꼼수를 어떻게 기획했는지 잠깐 소개되어 있다. 내가 정말 놀라운

것은, 그가 지금의 현 상황을 돌파하기 위해 나꼼수를 만들어낸 “통찰력”“혜안”에 있다

그건 절대로 머리에서 얻은 지식에서 나오지 않는다는 점에서도 나 스스로에게 많은

시사점을 던진 부분이다. 그리고 마지막에 대박 클라이막스가 하나 있다~

궁금하신 분은 직접 사서 읽어보시길 ㅋㅋ

 

그리고 두번째로 시골의사 박경철님의 “부자경제학”

 

 

사실 이 책은 예전에 읽다가 어려워 손을 놓은 책이다. 사실 이번에 다 읽긴 했어도

상당부분 이해하기 힘든 부분이 많았다.  그리고 이번 완독으로 끝낼게 아니라 앞으로

두고두고 읽으며 곱씹어야 할 양서이기도 하다.

특히 이번엔 지금 내 생황에서 필요한 부분을 더 중점적으로 봤는데 역시 지금 시점으로는

은행을 벗어나선 절대! Never! 안될것 같다는 소신(?)이 생겼다.

또, 시간이 지나면 그 상황에 따라 나에게 맞는 길을 찾아 또 다시 펼쳐야 하는 책이다.

어떻게 재테크를 해야 하는 방법론적인 책이 아니라,  “경제”에 관해 알아야 할 원론적인

부분들을 친절하게 짚어주는 이 책을 다른 분들에게도 꼭 강추하고 싶다!

Advertisements

[gson]어노테이션을 사용하여 object중에 json으로 만들 필드 제외하기

이번에 스타앱을 리뉴얼하면서 기존에 안드로이드 내장 api로 쓰고 있던

json관련 라이브러리 대신, oop에 맞는 gson으로 사용하기로 결정하고

사용하던 중, @Expose 어노테이션을 우연찮게 발견했다.

이 놈은 JPA에서 쓰는 놈인가…(사내에서 JPA를 Persistence Layer

에서 쓰고 있음) 들여다봤더니 gson에서 쓰는 놈이길래 테스트코드를

간단히 만들어보았다.

-Temp.java-
public class Temp {

    @Column(primaryKey=true, autoIncrement=true)
    private Integer id;

    @Column(name="name")
    private String name;
}

아래는 위의 도메인클래스로 json을 만드는 junit 테스트코드이다.

package com.glider.test.etc;

import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;

import com.glider.wiki.domain.Temp;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

/**
 * @author bluepoet
 *
 */
public class GsonTest {
    Logger logger = Logger.getLogger(this.getClass());

    private Gson gson;

    @Before
    public void setup() {
	gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
    }

    @Test
    public void gsonExcludedField() {
	Temp temp = new Temp();
	temp.setId(1);
	temp.setName("bluepoet");

	String resultJson = gson.toJson(temp);
	logger.debug("## 결과 json String : " + resultJson);
    }
}

결과는 “json String : “, 아무것도 나오지 않는다 ㅡㅡ;

일단, 제외하고자 필드전략을 쓸때는 json 객체를 만들 때,

GsonBuilder().excludeFieldsWithoutExposeAnnotation().create()로 생성한 후에

object class의 필드에 @Expose 어노테이션을 추가하면 해당 필드만 json으로 만들어준다

위의 Temp.java를 아래와 같이 바꿔보면,

-Temp.java-

import com.google.gson.annotations.Expose;

public class Temp {

    @Column(primaryKey=true, autoIncrement=true)
    @Expose
    private Integer id;

    @Column(name="name")
    private String name;
}

저렇게 하면 결과는, “json String : {“id”:1}”로 나온다.

참고로, 사용자정의 Exclusion 전략을 만들어 사용할수도 있다.

아래 url을 참고하면 된다.

User Defined Exclusion Strategies

[jsp]나만의 custom tag 만들기

지금은 jsp로 페이지를 개발할 때, jstl등을 많이 쓰겠지만 필요에 따라서는 나만의

커스텀태그를 만들어사용하면 jsp내에서도 코드의 모듈화가 가능해지고 코드도

훨씬 깔끔하다. 그래서 간단하게 테스트해보았다.

(1)  커스텀태그를 수행할 클래스 만들기

public class TagFunctionTest {
	public static Integer plus(Integer x, Integer y) {
		return x+y;
	}

	public static Integer times(Integer x, Integer y) {
		return x*y;
	}
}

public class GreetCustumTagTest extends SimpleTagSupport {
	private String username;

	public void setUsername(String username) {
		this.username = username;
	}

	@Override
	public void doTag() throws JspException, IOException {
		if ("bluepoet".equals(username)) {
			getJspBody().invoke(null);
		}
	}
}

이때, 주의할 것은 메서드의 리턴값이든 인자값이든 모두 primitive 타입은 안된다.

int 대신 Integer 랩퍼클래스를 사용해야 한다.

그리고, SimpleTagSupport를 상속받은 클래스는 doTag 메서드를 실행하며,

속성으로 받은 값을 setter method로 가져와서 사용하게 된다.

(2) WEB-INF/ 밑 적절한 위치에 .tld 파일 만들기

*hello.tld
<short-name>hello</short-name>
<uri>http://glider.com/helloglider</uri>
<tag>
	<name>greet</name>
	<tagclass>com.glider.framework.tags.GreetCustumTagTest</tagclass>
	<bodycontent>scriptless</bodycontent>
	<attribute>
		<name>username</name>
		<required>true</required>
		<rtexprvalue>false</rtexprvalue>
	</attribute>
</tag>

*function.tld
<short-name>gdf</short-name>
<uri>http://glider.com/gdftags</uri>

<function>
	<name>plus</name>
	<function-class> com.glider.framework.tags.TagFunctionTest</function-class>
	<function-signature>
		java.lang.Integer plus(java.lang.Integer, java.lang.Integer)
	</function-signature>
</function>

<function>
	<name>times</name>
	<function-class> com.glider.framework.tags.TagFunctionTest</function-class>
	<function-signature>
		java.lang.Integer times(java.lang.Integer, java.lang.Integer)
	</function-signature>
</function>

(3) 사용하고자 하는 jsp에서 커스텀태그 선언후 사용하기

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@taglib prefix="gdf"  uri="http://glider.com/gdftags"%>
<%@taglib prefix="hello"  uri="http://glider.com/helloglider"%>
<html>
<body>
[커스텀태그 테스트]
* 플러스 커스텀태그 테스트 : ${gdf:plus(1,2)}

* 곱하기 커스텀태그 테스트 : ${gdf:times(2,2)}

* 커스텀 문자열 인사 :
<hello:greet username="bluepoet">bluepoet 너 맞구나!!!</hello:greet>
</body>
</html>

(4) 결과

username 속성에 “bluepoet”을 주지 않게 되면

bluepoet 너 맞구나!!! 문자열이 보이지 않게 된다^^

* 참고사이트

 

[jquery].each 테스트 예제

회사 jquery의 each에 대한 소스를 보던 중.. 이해 안가는 부분이 있어 예제를 만들어 보았다.

(1) 먼저 jquery 스크립트가 없는 일반적인 테이블 그림이다.

   

<table class="test" border="1">
<tbody>
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>5</td>
<td>6</td>
</tr>
</tbody>
</table>
<pre>

(2) 이걸 each api를 써서 번호를 거꾸로 쓰는 예제를 만들어 보았다.

$(document).ready(function() {
 var cnt = 6;

 $('.test tr:first td').each(function(k, v) {
 $('.test tr').each(function() {
     var $table = $(this);
     $table.find("td").eq(k).html(cnt);

     if(cnt &gt; 3) {
         $table.find("td").eq(k).css('background-color', 'red');
     }else{
         $table.find("td").eq(k).css('background-color', 'yellow');
     }
     cnt--;
     });
   });
});

처음엔 머리로만 소스를 이해하려고 하다보니, 왜 왼쪽부터 아래로 내려가며 순번이

매겨질까 한참을 생각하다가, 역시 예제코드를 보며 알게 되었다.

역시 개발자는 백문이 불여일타라는 생각이 다시 들었다.

jquery each api에 대한 링크는 jquery each API에서 찾아볼 수 있다.

[소스코드]