PART2 10.mht

PART3 1,2(v0.1).mht

PART3 1,2(v1.0).mht

스프링 정리1.pptx

PART1프로젝트의 기본 구조 구성 1-1,1-2.mht

PART2 2,3.mht


'IT > SPRING' 카테고리의 다른 글

자바 기반의 프레임워크  (0) 2019.05.13
프레임워크의 장점  (0) 2019.05.13
[링크] Spring 관련 API  (0) 2017.04.29
[교육] Spring Framework 교육 (4일차)  (0) 2017.04.29
[교육] Spring Framework 교육 (3일차)  (0) 2017.04.29

Spring 4.2.9 Api doc

http://docs.spring.io/spring/docs/4.2.9.RELEASE/javadoc-api/


MyBatis 3.4 API doc

http://www.mybatis.org/mybatis-3/apidocs/


MyBatis-Spring API doc

http://www.mybatis.org/spring/apidocs/index.html


AspectJ Run time Api doc

http://www.eclipse.org/aspectj/doc/released/runtime-api/index.html


jUnit4.12 api doc

http://junit.org/junit4/javadoc/latest/


Log4j2 api doc

https://logging.apache.org/log4j/2.x/log4j-api/apidocs/index.html


MyBatis 잘 정리된 site

http://terasolunaorg.github.io/guideline/5.0.x/en/ArchitectureInDetail/DataAccessMyBatis3.html#id28


Apache commons dbcp 

https://commons.apache.org/proper/commons-dbcp/api-2.1.1/

'IT > SPRING' 카테고리의 다른 글

프레임워크의 장점  (0) 2019.05.13
[파일] 스프링 정리  (0) 2017.04.29
[교육] Spring Framework 교육 (4일차)  (0) 2017.04.29
[교육] Spring Framework 교육 (3일차)  (0) 2017.04.29
[교육] Spring Framework 교육 (2일차)  (0) 2017.04.29
에버노트 원본 (사진포함)
==> https://www.evernote.com/shard/s350/sh/8ed9f1d3-9a40-404a-8565-eea3b1520a76/f770d2176d4f9aa798722d7d3c2526a4

-----------------------------------------------------------------------------------------------------------------------------

2017.04.13 목



<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
  <version>2.8.2</version>
</dependency>
Log4j 구성요소
• Logger (Category): Log4j의 핵심 클래스로 로그파일을 작성하고 관리 하는 역할.
• Appender: Logger로부터 전달 된Logging 메세지를어디에 출력 또는저장할 것인지 결정하는역할
• Layout : Logging메시지를 어떤형식으로 출력할것인지 출력Layout을결정한다

Log4j 로그의레벨
• 로그레벨(Priority)
     – FATAL : 가장 심각한 상황의 에러가 났을 경우 사용한다. (fatal인경우 fatal만 출력, 나머지는 출력되지 않음)
     – ERROR : 일반적인 에러가 났을 때 사용 한다.
     – WARN : 에러는 아니나주의가 필요한 경우 사용 한다.
     – INFO : 일반 정보를 나타낼 때 사용한다.
     – DEBUG : 개발시 프로그램 디버깅용 메시지를 출력해야 하는 경우 사용한다.
     – TRACE : DEBUG 보다 낮은 레벨의 메시지 출력시 사용
• 우선순위는 FATAL이 가장높고 TRACE가 가장 낮다.
• 로그레벨로 선택된 것 이상의 로그레벨 메시지가 모두 출력 된다.
– Ex : INFO로설정한경우-> FATAL, ERROR, WARN, INFO로 설정된 메시지가 모두 출력된다


<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<File name="File" fileName="c:/temp/log/logfile.log" append="true">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss SSS} [%t] %-5level %logger{36} - %msg%n" />
</File>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
</Appenders>

<Loggers>
<!-- <Logger name="org.springframework" level="DEBUG" additivity="false"> -->
<!-- <AppenderRef ref="console" /> -->
<!-- <AppenderRef ref="File" /> -->
<!-- </Logger> -->
<!-- <Logger name="myspring" level="DEBUG"> -->
<!-- <AppenderRef ref="console" /> -->
<!-- <AppenderRef ref="File" /> -->
<!-- </Logger> -->

<Root level="TRACE">
<AppenderRef ref="console" level="DEBUG" />
<AppenderRef ref="File" level="DEBUG" />
</Root>
</Loggers>
</Configuration>



MVC(Model View Controller) 패턴
웹에 특화(그림)





<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>4.2.9.RELEASE</version>
</dependency>




Spring MVC
(1) Controller : Bean 등록
(2) RequestMapping : (method 선언부 위에 작성)Request와  컨트롤러 내의 메서드를 매핑시켜줌
(3) RequestParameter : request.getParameter (요청데이터의 값을 추출)











'IT > SPRING' 카테고리의 다른 글

[파일] 스프링 정리  (0) 2017.04.29
[링크] Spring 관련 API  (0) 2017.04.29
[교육] Spring Framework 교육 (3일차)  (0) 2017.04.29
[교육] Spring Framework 교육 (2일차)  (0) 2017.04.29
[교육] Spring Framework 교육 (1일차)  (0) 2017.04.29

에버노트 원본 (사진포함)

==> https://www.evernote.com/shard/s350/sh/369183bf-a093-46a2-a70a-e2f9dc30853b/6ed9a67d2ff2b9ff2ea61f0eac93bc91


-------------------------------------------------------------------------------------------------------------------------------------------------


2017.04.12 수

MyBatis
MyBatis Maven 추가

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>

mapper.xml : SQL문을 포함하고있는 XML
sqlMapConfigxml : MyBatis config 포함
       - DataSource(Connection pooling) 정보
       - VO(Value Object)객체의 클래스명 기술
       - 

OR Mapping(Object Relational Mapping)










MyBatis3 만 사용한경우
sqlConfigMapping 
1) DB접근정보
2) sql Mapper 설정 경로
3) VO 객체 정보



보라색 : 개발자
파란색 : MyBatis Spring 연동 API (SqlSessionFactory, SqlSessionTemplate)
노란색 : 

SqlSessionFactoryBean



public class MyBatisTest {
@Autowired
@Qualifier("dataSourceDBCP")
DataSource ds;

@Autowired
ApplicationContext context;

@Autowired
SqlSession session;

@Test
public void sql(){
UserVO vo = new UserVO("ex1", "CHOI", "여", "분당");

// int cnt = session.update("userNS.updateUser", vo);
int cnt2 = session.insert("userNS.insertUser",vo);
System.out.println("갱신된 건수 : " + cnt2);

List<UserVO> userList = session.selectList("userNS.selectUserList");
for(UserVO user:userList){
System.out.println(user.toString());
}
System.out.println("---->single Row");
UserVO user = session.selectOne("userNS.selectUserById","JEONG");
System.out.println(user);
}











Code 재사용
1. Copy& Paste
2. 함수, 메서드
3. 상속
4. AOP

AOP(Aspect Oriented Programming) - 관점지향 프로그래밍

ㅇ Aspect  = Advice + PointCut
Advice : 타겟에 제공할 부가기능(로깅,보안 등)을 담고 있는 클래스(모듈)
PointCut : 부가기능을 제공할 핵심기능을 선택(선별)하는 정규표현식 (표현식 execution. 메서드의  Signature를 비교하는방법 주로 사용)
Target : 업무 로직을 담고있는 핵심기능 부가기능을 적용할 대상
JoinPoint : 타겟의 핵심기능에 해당되는 클래스의 메서드/ 어드바이스가 적용될 수 있는 위치
Weving : 포인트컷에 의해서 결정된 타겟의 조인 포인트에 부가기능(어드바이스)을 삽입하는 과정
 AOP가 핵심기능(타겟)의 코드에 영향을 주지 않으면서 필요한 부가기능(어드바이스)을 추가할 수 있도록 해주는 핵심적인 처리과정






'IT > SPRING' 카테고리의 다른 글

[파일] 스프링 정리  (0) 2017.04.29
[링크] Spring 관련 API  (0) 2017.04.29
[교육] Spring Framework 교육 (4일차)  (0) 2017.04.29
[교육] Spring Framework 교육 (2일차)  (0) 2017.04.29
[교육] Spring Framework 교육 (1일차)  (0) 2017.04.29

에버노트 정리 원본 (사진포함)

==> https://www.evernote.com/shard/s350/sh/5da25168-e641-4739-9265-85e304f83582/1d1f613e5e504641e35df5a3c48e8e0b


----------------------------------------------------------------------------------------------------------------


2017.04.11 화

JUnit : 단위테스트를 지원하는 프레임워크
1. JUnit Library 준비
2. POJO형태의 Java 클래스 작성
@Before
  - 테스트 메서드를 수행하기전에 꼭 해야하는것들(초기화)
 @Test
 - 반드시 접근public,  리턴타입 void
  Assert.assertSame(expected, actual);
     //assert는 static이기때문에,  import static org.junit.Assert.assertSame; 작성후 assertSame으로 사용가능
  //(arg1,arg2) expected : 기대되어지는 결과문자열 / actual : 실행값 /equals라고 생각하면됨->true 반환시 성공함
@After
 - 테스트 후처리 필수 수행문장(close등)   
@Ignore
 - 테스트를 수행하지 않는다 (@Test @Ignore로 사용)


 public class Example {
    File output;
    @Before public void createOutputFile() {
          output= new File(...);
    }
    @Test public void something() {
          ...
    }
    @After public void deleteOutputFile() {
          output.delete();
    }
 }

     
 2-1 프로젝트선택후 우클릭 > Build Path > Configure Build Path

  2-2 Add Library > JUnit  > Next
 2-3 JUnit4  > Finish
  추가된거 확인후 Apply




ex : JUnit으로 테스트하면 정상값이나온경우 초록색이 나타남




Spring Test( Core 는 JUnit)
   --> pom.xml 에 복사하여 down받는다.
2.Test class 선언부
  @Runwith(SpringJunit4ClassRunner.class)
  @ContextConfiguration("config/Beans.xml"); //xml 경로지정
  @Autowired
  private ApplicationContext // 굳이 getBean을 여러번 하지 않아도 된다.
  --> 의존관계가 있는 객체를 자동으로 주.입(Injection)해주는 어노태이션
  @Qualifier("bean id "); // 동일한 클래스의 bean이 여러개있는경우, bean id를 지정해주는 방식(범위를 한정시킴)
  @Component : bean을 등록할때 사용  (컴포넌트는 대표이고, 특화된것을 사용하고싶으면 repository,service,controller
  - @Repository : DAO 객체
  - @Service : 서비스 객체
  - @Controller : 웹화면쪽 연결 Controller 객체 /  web tear(톰캣상에서 실행)
  @Resource : 의존관계




DI 구현방식
 ㅇ XML 사용하는 방식(bean등록 dependency 설정)

<bean id ="helloC" class="xxx.Hello">
     <property name="name" value="jeogwon"></property>
     <property name="printer" ref="stringPrinter"></property>
</bean>

<bean id="stringPrinter" class="xxx.StringPrint">
</bean>

 ㅇ Annotation을 사용하는 방식 (spring 2.5버전이후 생성됨)
@Component
public class Hello{
     @Value("jeongwon")
     String name;
    
     @Autowired
     @Quilifier("stringPrinter")
     Printer printer;
}

@Component("stringPrinter")
public class StringPrinter implements Printer{
}
 어노태이션 : xml설정 덜하고, 소스에 직접박혀있어서 사용하기에는 편하지만, bean은 그래프로 되어있어서 한눈에 파악하기 쉬움
개발 타이밍 : 어노태이션 / 운영 : xml(빈 그래프)


bean.xml
<!-- properties 파일의 정보를 설정 -->
<context:property-placeholder location="classpath:config/values.properties"/>

WAS : EJB Container + Web Container (ex : 웹로직,제우스..)



ORM(Object Relational Mapping) Framework
 - MyBatis(iBatis)
 - Hibernate
 - JPA(Java Persistance API)


JDBC->Spring JDBC -> MyBatis

DBCP(DataBase Connection Pooling) 
 -> 여러개 connection을 만든후, 재사용하여 사용 / 웹환경 필수 (ex : Apach DBCP common API 2.2.1)
pom.xml
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-dbcp2</artifactId>
  <version>2.1.1</version>
</dependency>



SDDS(SimpleDriverDataSource)
Beans.xml
<!-- DataSource 설정 -->
<bean id='dataSource' class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="${db.driverClass}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</bean>





ojdbc
 다운로드후, pom.xml 에 저장된 경로 추가
<!-- JDBC 추가 -->
<dependency>
<groupId>ojdbc</groupId>
<artifactId>ojdbc</artifactId>
<version>6</version>
<scope>system</scope>
<systemPath>${basedir}/lib/ojdbc6.jar</systemPath>
</dependency>

Maven 생성확인



<참고>







'IT > SPRING' 카테고리의 다른 글

[파일] 스프링 정리  (0) 2017.04.29
[링크] Spring 관련 API  (0) 2017.04.29
[교육] Spring Framework 교육 (4일차)  (0) 2017.04.29
[교육] Spring Framework 교육 (3일차)  (0) 2017.04.29
[교육] Spring Framework 교육 (1일차)  (0) 2017.04.29
에버노트 정리 원본(사진포함)
==> http://www.evernote.com/l/AV6hL6sDfxNIubrImPXJS2417WVd_YTw81Y/

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2017.04.10 월

1일차 : DI
2일차 : MyBatis
3일차 : MyBatis + AOP
4일차 : Spring MVC


Spring 특징
  1. DI (Dependency Injection) 
  2. AOP (Aspect Oriented Programming)
    -  ex ) 공통모듈인 경우 코드가 변경되더라도, 가져다쓰는 의존관계쪽에 영향이 미치지 않도록 의존성을 낮춤
  3. MVC (Model View Controller)
  4. RESTful 
  5. Mybatis



개발환경 구성
DownLoad > C:\Spring FW (파일경로)
           C:\Spring FW\sts-bundle\sts-3.8.4.RELEASE>STS.exe (파일실행)
          
  1. JDK 1.8
  2. STS 4.6.3
  3. TOMCAT 8.0.43
  4. tomcat Server STS 등록
  5. Chrome Browser을 STS에 연결

(1) JDK 1.8 

(2) STS (Spring Tool Suit)https://spring.io/tools/sts/all (설치)
                                                        https://spring.io/tools/sts (설명)

(4) tomcat Server STS 등록

(5) Chrome Browser을 STS에 연결 : Window>Preferences> General>Web Browser

ㅇ 참고(전자정부 프레임워크)


사용하게 되는 Open Source 현황
  1. Spring  (framework) : DI, AOP, MVC, RESTful
  2. Mybatis (framework) : db와 연동시 사용(ex : JDBC)
  3. JUnit : 단위테스트 지원
  4. Maven : 배포, 라이브러리 관리(jar파일) 
     - Maven project를 생성( pom.xml)  - 인터넷 필수 (메이븐에 원격접속하여 download받음)
     - 인터넷 사용 불가한경우,  Maven 사이트에 들어가서 라이브러리(jar)만 다운로드후 Eclipse에 추가
     - 참고) Maven Repository : 
    https://mvnrepository.com/
               dependency를 복사해서 pom.xml에 넣으면 자동으로 jar 파일 다운로드 생성

     - 4.1 이클립스 메이븐 프로젝트 추가
      Window > Show View > Other > Maven Repositories

     - 4.2 메이븐 파일 위치 확인가능
              로컬 Repository--> C:\Users\owner\.m2\repository 

  5.  Log4j(Library)  : Level을 설정하여 Level별 로그를 볼수 있다 





<JAVA 프로젝트 생성 -> Maven Project로 변환>
1. JAVA Project 생성   : New > Java Project > Project Name : "Spring"
2. Conver to Maven Project
     
 - Maven 프로젝트로 변환후, 'M' 작은 아이콘과, pom.xml 파일이 생성된 부분을 확인할 수 있다.


3. Spring Tools > Add Spring Project Nature





  1. Maven 사이트에서 'Spring Context' 검색후, dependency를 다운로드
  1.  dependency 복사후, pom.xml 에 추가(jar 파일 추가 확인)








SPRING 의 정의
Spring은 Java Enterprise 개발을 편하게 해주는 Open Source 경량급(LightWeight) 애플리케이션 프레임워크다.

- EJB(Enterprise Java Beans) - zip하고 jar로 만들어서 ejb? 로 변환해서 WAS에서 배포
- POJO(Plian Old Java Object)





Spring 삼각형
이미지 출처 및 설명 : http://jinpyo900.tistory.com/55
(1) DI(Dependency Injection) : 의존관계 주입
  - IoC (Inversion of Control) 제어반전 구현
(2)AOP(Aspect Oriented Programming) : 관점지향
(3) PSA(Portable Service Abstractions) : 특정 밴더에 종속적이지 않고, 독립적인 형태로 api가 구성됨






실습 (사전실행)
1. http://blog.naver.com/vega2k      > SpringUserProject.zip 다운로드 

2.Project Import 
3. SpringWebPrjMY의 value.properties IP를 변경(강의실 IP)


4.실행(CRUD)






Framework와 Library의 차이점


Library의 특징
ㅇ 제어(Control)을 개발자가함

Framework 의 특징 ( Library 적 요소 + Container) 
ㅇ Library  적인 요소를 가지고 있음 
ㅇ 제어의 주도권을  가지고 있다.
ㅇ Container적 기능을 제공함(객체생성,소멸)
ㅇ ex ) tomcat , Mybatis, Spring
--> IoC (Inversion of Control) 제어반전 


Framework의 구성요소
1) IoC 컨테이너 (제어권을 가져가서 컨테이너 기능을 제공해야함)
 - 객체의 생성, 소멸, 객체 메서드 호출
2)Library인 요소
3)Design Pattern
  - GOF패턴, J2EE 패턴



IoC(Inversion of Control) 구현
ㅇ DL : Dependency Lookup
ㅇ DI : Dependency Injection


ㅇ Depend on Interface

ㅇ Do not Depend on Implementation

=> 인터페이스에는 의존하되, 구현체에는 의존하지 말아라

Setter Injection : setter 메서드의 인자(argument)에 의존하는 객체를 주입
Constructure Injection : 생성자 인자에 의존하는 객체를 주입




개발자의 역할
1. Spring Bean 설정 파일 작성(xml)
 - config > bean.xml 파일



 - bean 
<constructure-arg index="0" values="홍길동">

2. IoC 컨테이너 역할을 하는 클래스 사용

ApplicationContext context = new GenericXmlApplication (config/beans.xml) //직접생성 필요,  XML위치 지정

Hello hello = Context.getBean(“hello”); //캐스팅필요

hello.print();





<<실습2- Bean 생성및 그래프 보기 >>

1.  New > Spring Bean Configuration File


2.config > Beans.xml , bean체크후  Finish



3.  Beans.xml 내용 추가
<!-- Hello 클래스를 bean으로 등록 -->
<bean id = "hello" class="myspring.di.xml.Hello">
<property name ="name" value="jeongwon"></property>
<property name ="printer" ref="stringPrinter"></property>
</bean>

<!-- StringPrinter 클래스를 bean으로 등록 -->
<bean id = "stringPrinter" class="myspring.di.xml.StringPrinter">
</bean>

<!-- ConsolePrinter 클래스를 bean으로 등록 -->
<bean id = "consolePrinter" class="myspring.di.xml.ConsolePrinter">
</bean>
   Beans.xml 의 Graph를 한눈에 볼 수 있음








XML 문서의 구조를 정의해놓은 것  : XML 스키마(XSA)



코드
package myspring.di.xml.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import myspring.di.xml.Hello;

public class HelloBeanTest {

public static void main(String[] args) {
      //1.IoC 컨테이너 객체 생성(객체생성을 직접하지 않고, 객체생성을 해준애(Bean)한테 객체를 받아옴)
     ApplicationContext context= new GenericXmlApplicationContext("config/beans.xml");
     Hello hello = (Hello)context.getBean("hello");
     Hello hello2 = context.getBean("hello", Hello.class);
     System.out.println(hello.sayHello()); // Hello Jeongwon  --> 2번째방법을 더 많이 사용한다
    
     hello.print();
     
     Printer printer = context.getBean("stringPrinter",Printer.class);
     System.out.println(printer.getClass().getName()); //myspring.di.xml.StringPrinter
     System.out.println(printer.toString()); //Hello Jeongwon
  }     

}

    ApplicationContext context= new GenericXmlApplicationContext("config/beans.xml");
    Hello hello = (Hello)context.getBean("hello");
    System.out.println(hello.sayHello()); // Hello Jeongwon 


<Bean의 Scope(범위) 지정 >
ㅇ Request : (웹환경)A-B 동안에만 객체생성이 이루어지게
ㅇ Session : 세션
ㅇ Singleton : 한번만. Default 값
ㅇ Prototype : 매번 객체생성 






'IT > SPRING' 카테고리의 다른 글

[파일] 스프링 정리  (0) 2017.04.29
[링크] Spring 관련 API  (0) 2017.04.29
[교육] Spring Framework 교육 (4일차)  (0) 2017.04.29
[교육] Spring Framework 교육 (3일차)  (0) 2017.04.29
[교육] Spring Framework 교육 (2일차)  (0) 2017.04.29
나미야 잡화점의 기적

-히가시노 게이고


왠지 일본작가가 지은 책은 (특히 소설책) 재미가 있어보여도 읽기가 꺼려진다. 주인공 이름들이 어렵기도 하고 걔가 걔같고 얘가 쟤같아서 읽다보면 혼란스럽기 때문이다...

그럼에도 몇년전에 우연히 "히가시노 게이고" 작가의 책을 일게 되었고, 추리내용이 재밌어서 종종 읽게 되었다. 

아는분께 추천받아 보게 된 책 나미야 잡화점의 기적!


빈집을 털려다가 실패한 후 도주하다가 어쩔수 없이 아주 허름한 가게에 숨어든 도둑3인의 이야기로 책의 내용은 시작된다.

간판 이름도 희미한 사람의 발길이 끊긴지 오래된것으로 보이는 가게에는 폴폴 먼지만 풍기는데, 3인의 도둑들은 가게 안에서 날이 밝기를 기다린다.

한 밤중 갑자기 편지봉투가 툭 들어오는 소리를 듣고, 도둑들은 깜짝 놀라지만 서로의 상의 후 편지의 내용을 들여다본다.

편지는 고민편지였고, 사랑과 올림픽 둘중 어느것을 선택하냐는 내용이었다.

집안에서의 오래된 신문잡지를 발견하고, 그 가게가 바로 몇십년 전 고민을 해결해주는 나미야 잡화점이라는 것을 알게된 도둑들.(나야미가 일본어로 고민이래나)

편지가 한 밤 중에 왔다는 점. 무언가 수상해보았지만 자연스러운것처럼, 도둑들은 그 잡화점 주인인척 처음에는 고민해결 편지를 쓴다.

장난반 진담반으로 답장을 쓴뒤 우유상자에 넣고 문을닫는다. 뒤늦게 그러다가 지문 등으로 걸릴까봐 다시 우유상자를 열었을때는 편지가 사라졌다.

잠시 뒤 다시 툭 하고 들려오는 편지 소리.

도둑들은 깜짝 놀라고, 몇가지의 추리끝에 그 잡화점의 시간은 바깥 시간보다 느리게가고 편지는 과거의 편지이며, 과거 사람과 편지를 주고받는 기묘한 경험을 하고있다는것을 깨닫는다.

몇번의 편지끝에 사랑과 올림픽 고민을 하고 있는 여자에게 조언을 해주며 한가지의 고민을 해결짓는다.


올림픽출전에 전념할 것인가, 암으로 죽어가는 남자 곁에 좀더 있을 것이냐 고민한 여자 (달 토끼)

아버지가 쓰러져서 대신 대를 이어 생선가게를 할것이냐, 아버지가 미뤄주신 대로 음악을 좀더 해야할 것이냐  고민한 남자(생선가게 뮤지션)

부유했지만 아버지의 부도로 야반도주를 해야하는 아이(폴레논)

19세의 나이로 회사의 사무일을 하고 밤에는 호스티스로 일하는 빨리 돈을 모아 할머니를 부양하고 싶은 여자(길잃은 강아지)

등등..


몇십년 전의 실제 고민해결 편지를 써주던 잡화점 주인할아버지의 시점과..

도둑들이 미래에서 과거의 주인공들에게 조언및 고민을 해격해주는  시점

(사실 왔다갔다하면서 보여주고 사연에 맞게 이야기가 진행되기 때문에 읽다가 꼬였다.)


도둑들은 편지를 자신의 생각에 맞게. 과거의 현황을 아는 상황의 미래시점에서 과거 사람들에게 조언도 해주고, 때로는 충고도 아낌없이 해준다.

고민에 대한 해결을 완전히 해주지는 않았지만 그들의 이야기를 최대한 들어보고, 방향을 제시해주었다.

그 방향에 따라가는것은 고민있는 사람의 의견. 도둑들의 말 그대로 했다가 잘 된 사람도 있고, 다르게 받아들여서 다른 결과를 가진 사람도 있다.

책을 통해 느낀점은 어차피 인생은 스스로 살아간다는것. 의견을 제시해주더라도 받아들이는것도 사람에 따라 다르다는것.

(어차피 인생은 마이웨이인가...)




이것은 지도가 없다는 뜻이라고 내 나름대로 해석해봤습니다.

나에게 상담을 하시는 분들을 길 잃은 아이로 비유한다면 대부분의 경우, 지도를 갖고 있는데 그걸 보려고 하지 않거나 혹은 자신이 서 있는 위치를 알지 못하는 것이었습니다. 

하지만 당시는 그 둘 중 어느쪽도 아닌 것 같군요. 당신의 지도는 아직 백지인 것입니다. 그래서 목적지를 정하려고 해도 길이 어디 있는지조차 알 수 없는 상황일 것입니다. 지도가 백지라면 난감해하는 것은 당연합니다. 누구라도 어쩔 줄 모르고 당황하겠지요.

하지만 보는 방식을 달리해봅시다. 백지이기 떄문에 어떤 지도라도 그릴 수 있습니다. 모든 것이 당신 하기 나름인 것이지요. 모든 것에서 자유롭고 가능성은 무한히 펼쳐져 있습니다. 이것은 멋질 일입니다. 부디 스스로를 믿고 인생을 여한 없이 활활 피워보시기를 진심으로 기원합니다.

                                                                                                          -447p 나미야 할아버지가 백지 편지를 보낸 이에게 쓴 마지막 편지.



마지막 빨간 구절이 마음에 와닿았다. 나에게도 아직 무한히 펼칠수 있는 가능성이 있겠지

마음이 따뜻해지는 이야기였다. 나름 책으로 힐링한 듯한 이야기. 연로한 나이에도 사람들의 고민을 들어주려고 노력하신 나미야잡화상점 할아버지의 마음씨처럼. 나도 다른이에게 언제든 편하게 고민을 들어줄수 있는 사람이 되고 싶다. 힘들때 기댈수 있는 나무같은 사람.



그럼 

20000~



도둑들은.. (시점이 꼬이지만) 

자신들이 마지막에 아낌없이 조언해주고 상담해준 여자 = 길잃은 강아지 = 자신들이 빈집털이한 집 주인 여자

라는 것을 깨닫는다. (책이니까 가능한 이야기겠지...)

도둑들은 여태까지 상담해준 사람들의 감사편지와 마지막에 나미야상점 할아버지가 쓴 편지(447p)를 보고 자수를 결심하며 

책은 끝난다.



'생각이 쑥쑥' 카테고리의 다른 글

바다로 퇴근하겠습니다.  (0) 2020.12.20
1cm의 다이빙  (0) 2020.12.19
평일도 인생이니까  (0) 2020.12.19
생각하는 늑대 타스케  (0) 2016.01.24
독서목록  (0) 2016.01.24

2016년이 되어 읽은 첫 책


생각하는 늑대 타스케 - 습관적인 생각을 깨는 생각의 습관 이야기 ( 서재근 )

선물받은 책이다. 출퇴근 지하철안에서만 읽다보니 끝까지 읽는데 좀 시간이 걸렸다. 아침엔 졸리니까 조금 읽다 자고 올때는 카...카톡..ㅎ


보통 소설 위주로 책 편식을 하던 터라 책을 받았을때는 걱정도 했었다. 이론만 많은 내용일까..

다행이도 이야기(스토리) + 그를 바탕으로 한 이론 및 생각깨는 습관방법 으로 구성되어있어서 지루하진 않았다.


김지학(주인공)은 중위권 광고회사에 다니는 대리인데, 라퓨타커뮤니케이션이라는 광고업계 1위 회사의 스카우트 제의로 회사를 옮기게 된다.

이전의 회사에서는 경쟁프레젠테이션 부분에 대해서 보물로 여겨졌었는데, 회사이동후에는 딱히 별게 없었고, 일에는 변화가 없었다는점.

회사 내의 경쟁프레젠테이션으로 "타스케팀"과 붙은 이후 패배의 고배를 마신다. 마케팅의 이론을 바탕으로 철저히 준비했던 주인공과 달리 새로운 접근법으로 접근한

타스케팀이 승리했다는 사실에 주인공은 신경쓰인다.

그러던차에 운이좋게 "타스케"팀으로 옮기게 되고 그 안에서 새로운 사고방식들을 배우며 이론을 바탕으로 진행해온 자신의 사고방식을 깨며 다르게 생각하는법을 배우며 변화한다.


책에서 알려주는 생각의 습관 이야기 내용은 이러하다.



1.전문가의 생각에 의존하지 않는다.

전문가는 전문가일 뿐. 전문가가 내 아이디어를 높게 평가한다고 크게 기뻐할 일이 아니고, 저평가해도 낙담할 일이 아니다. 그들의 해답을 제시하는것이지 정답은 없다.  전문가는 하나의 '진리'가 아니라 '의견'이라는 것을 잊지 말자. 

통찰력 : 타인의 의견에 의존하지 않고 본인의 생각에 자신감을 가질 때 비로소 성장할 수 있음. ->예전에 미처 가보지 않았던 방향으로 생각을 펼쳐나갈 수 있는 용기가 생김 -> 자신의 생각과 다른 생각을 만났을 때 기꺼이 섞어볼 용기가 생김 -> 자신보다 더 좋은 생각을 만나면 그때까지 자신의 생각을 버리고 새로운 생각을 받아들일 수 있는 용기가 생김




2.고정관념을 좋아한다.

아이디어는 조금 낯설 수 있는 '새로움'과 누구라도 납득할 수 있는 '공감'이 조화를 이루며 함께 존재해야한다. (ex: 바나나는 원래 하얗다)

=>새롭지 못한 공감, 공감할 수 없는 새로움은 아이디어가 되기 어려움

고정관념은 "한계점의 생각" "생각의 한계점" 같은 존재.

고정관념을 깨는 개념도 힘들지만. 일상생활에서 그것이 고정관념이라는것을 찾는것 조차 모르는 경우도 많다. 고정관념을 구분하고 찾아내는 것 부터!(ex : 영어의 존댓말)


3.입체적으로 생각한다.

----------------------------------------------------------------------------------------------


네명의 아이들이 있다.

1)방안에 총 4명이 있다는 사실을 알림.

2)검은모자를 쓴 아이가 2명. 흰모자 쓴 아이도 2명이라는 사실을 알려준다.

3)아이들에게 각자 쓰고 있는 모자의 색을 알려주지 않고, 자신의 모자 벗어서 색을 확인 해 볼수 없음

4)첫번쨰 아이와 나머지 아이들 사이에는 건너편을 볼수 없는 벽이 하나 있음

5) 그 누구도 뒤를 돌아볼수 없음


이 모든 조건을 알려주고 자기 모자 색을 알 수 있는 사람은 손을 들어서 대답하라고 말했다.

잠시 후 한 아이가 손을 들고 자기 모자 색을 말했는데, 그 아이는 누구일까?(왼쪽부터 A-검정 B-하양 C-검정 D-하양)


----------------------------------------------------------------------------------------------

통찰력이 뛰어난 사람들의 두드러진 특징은 직관적 판단이 빠르다는 점. 다른사람들이 한참 생각해도 떠올리지 못하는 것을 순간적으로 떠올려 제시.

통찰력은 속도의 문제가 아니라 각도의 문제. 정보를 다룰때는 되도록 찬찬히 관찰하는 습관 갖기.

입체적 사고는 주어지는 정보를 있는 그대로의 단면으로 받아들이지 않고 각도에 따라 보이는 진실은 얼마든지 달라질 수 있다는 점을 항상 염두해두고 생각의 각도를 펼쳐 입체적으로 정보를 다루는 습관을 말함.

역지사지는 일상생활속에서 입체적 사고를 기르기 위한 좋은 훈련. (그 외에도 '정의하거나 단정짓지 않기')



4.말도 안되는 소리에 귀 기울이기

아이디어는 목표지향적이며 미래 지향적. 미래지향적인 아이디어를 다루며 과거지향적인 상식을 기준짓지 않기 (ex:천동설이 시대였던 시대의 지동설)


회의 주재자 

회의 참석자 

  • 오리엔테이션은 짧게

  • 따로 또 같이

  • 자료보다는 의견

  • 회의 민주주의

  • 자기 의견 갖기

  • 입은 짧게, 귀는 길게

  • 메모 보다는 메모리



5.프로세스에 연연하지 않기

프로세스대로의 일 진행 전 목표/해결과제/해결방안 세가지 요소에 대해 충분히 생각해보기.


목표 : 과업이 요구하는 목표 분명히 설정. (목표와 목표달성 효과)를 혼동하지 않기. 목표달성 효과를 목표로 삼지 않기

해결과제 : 상황과 목표사이에 괴리 발생을 찾고, 목표에 방해될 요소들 상상하고 가설 만들기. 프로세스 진행전 다각도로 생각

해결방안: 아이디어찾는데 왕도는 없다! 습관적 생각을 깨는 생각의 습관부터 기르기.



6.진짜 문제를 생각하기


사실 / 문제 / 결과를 구분지어 생각하고, 문제!=사실을 분리시키기.

사실 (결과 발현의 환경. 이미 발생된 통제불가능한 요소)

문제 (결과 근본원인. 해결의 대상)

결과 (결과적으로 나타나는 현상 그 자체)


어떠한 이슈를 다루든 문제를 파악하기 위한 시각을 차갑게 유지하도록 노력해야 함.



7.숫자를 믿지 않기

숫자는 객관적인것 처럼 보이지만. 그렇지만도 않다. 숫자가 지닌 본원적 성질인"단면화"하려는 것. 숫자를 통해 분리된 사실들 사이의 상관관계를 추정할 수 있지만 인과관계까지는 알수 없다. 숫자는 표정이며 마음은 알수 없고 숫자는 상징이며 내용을 알 수 없다.


숫자는 사람들의 미묘한 마음까지는 담아내지 못한다.

숫자로 표현된 그들의 마음은 실제 그들의 마음이 아니라 그들이 그저 믿음이라고 믿고있거나 믿고싶어 하는것 일 뿐.







---------------------------------------------------------------------------------------------------------------------



쓰다보니 이건 더이상 독후감이 아닌것같다. 책의 줄거리와의 느낀점 보다는... 하나의 강의를 듣고 정리를 해놓은것 같다. 어찌보면 책 내용을 그대로 COPY해서 넣은.. 타자연습 한것 같기도 하고..


마케팅. 생각을 기르기 위한 책은 20년동안 처음 읽어본것 같다.

생각보다 재미있었고, 얻는것도 많았다.

책의 내용이 기억나지 않을때, 새로운 아이디어를 내야하는 상황에 어려움이 있을때. 다시 책을 펼쳐보는것도 좋겠지만. 그렇지 못할 경우에는

핸드폰으로, 웹을 통해 이것을 다시 볼 수 있다면 새로운 의도와 맞을것 같다.


지은이의 글 솜씨와 상상력 + 이론 기반의 진행이 굉장히 마음에 들었다! 나같은 비전공자들에게도 교훈을 주며.. 내용까지 재밌는 !

(정말 이건 작은 생각인데, 주인공의 여자친구 '윤희'같은 사람이 세상에 얼마나 될까라는 생각이 들었다. ㅎ)




계획을 세울때는 "독후감은 30분이내로 작성"이었는데 막상 쓰고보니 약 2시간정도 걸린것 같다.(허허허허..)


쓰는것은 굉장히 귀찮지만, 읽은후의 독후감.. 아니 후기.. 아니 요약본...(?)

정리하다보면 책을 펼쳐봄으로써 다시한번 책의 내용을 보고 기억할 수 있는 그런점은 괜찮지만 약간의 번거로움이 있다..(손으로 쓰던 생각하면 그거보단 낫지!) 


몇일전부터 써야지 써야지 미루던일을 해치운것 같아서 기분이 좋다!


지금 읽고있는 두번째 책 "나미야의 잡화상점"도 빨리 읽고 독후감을 쓰러 다시 들어와야지!!


그럼 안녕..인가 안녕히계세요인가


I'll be back!






'생각이 쑥쑥' 카테고리의 다른 글

바다로 퇴근하겠습니다.  (0) 2020.12.20
1cm의 다이빙  (0) 2020.12.19
평일도 인생이니까  (0) 2020.12.19
나미야 잡화점의 기적  (0) 2016.02.01
독서목록  (0) 2016.01.24

책 이름 클릭시 이동

 

 

번호

책이름 

지은이

출판사 

작성일 

 001 

 생각하는 늑대 타스케

서재근 

휴먼큐브 

2016년 1월 24일

002

 나미야 잡화점의 기적

 히가시노 게이고

 현대문학

2016년 1월 31일

003

1cm 다이빙 

태수, 문정 

피카

2020년 12월 19일

004

평일도 인생이니까 

김신지 

알에이치케이코리아 

 2020년 12월 19일

 005

오늘은 운동하러 가야하는데 

이진송

다산책방

2021년 1월 11일 

006

살면서 꼭 해야 할 재미있는 일 10가지

캐롤 재코우스키 수녀

홍익출판사

2021년 4월 5일

 

 

 

 

 

 

 

'생각이 쑥쑥' 카테고리의 다른 글

바다로 퇴근하겠습니다.  (0) 2020.12.20
1cm의 다이빙  (0) 2020.12.19
평일도 인생이니까  (0) 2020.12.19
나미야 잡화점의 기적  (0) 2016.02.01
생각하는 늑대 타스케  (0) 2016.01.24

드디어 원하던 tistory에 가입을 하게되었습니다! (가입하는 시간보다 이름정하는데 더 오래걸렸습니다.. ㅋㅋㅋㅋㅋ)


내일도 늦게 퇴근할것같고... 주말에야 본격적으로 꾸미고 게시글을 등록할수 있겠네요 :)


오늘은 스킨설정, 카테고리 분류등으로 작업을 마쳤습니다.


조만간 다시 돌아오겠습니다. I will be back!!


'이것저것' 카테고리의 다른 글

자취생요리(12월)  (0) 2020.12.13
연어덮밥 만들기  (0) 2020.12.07
여자 복싱화 (나이키 복싱화 하이퍼KO 2.0) 구매후기  (0) 2020.12.07
김장하는날  (0) 2020.12.07
자취생요리(11월)  (0) 2020.11.22

+ Recent posts