습관의 재발견

목 차

1장_ 작은 행동, 큰 결과
모든 변화는 ‘팔굽혀펴기 한 번’에서 시작되었다 | 나쁜 습관을 끊는 것보다 좋은 습관을 기르는 게 더 쉽다 | 작은 습관이 만들어 내는 변화: 사소한 행동, 위대한 결과 | 당신의 삶을 바꾸는 습관의 과학 | 당신도 모르는 습관의 세 가지 비밀 |

2장_ 습관은 어떻게 우리의 삶을 지배하는가
우리의 뇌는 느리고 게으르도록 진화했다 | 힘세고 멍청한 로봇과 영리하지만 피곤한 관리자 | 생각하는 사람: 행동을 결정하는 머릿속 감독관 | 프로그래밍된 뇌: 좋은 습관을 ‘자동화’하는 방법

3장_ 의지력, 습관을 완성하는 가장 확실한 방법
‘동기 만능주의 신화’의 수많은 문제들 | 의지력이 동기를 능가할 수 있는 이유 | 의지력에도 관리가 필요하다

4장_ 당신의 한계를 넓혀 주는 작은 습관의 힘
작은 습관을 위협하는 다섯 가지 요인 | 작은 습관은 당신의 ‘컴포트 존’을 넓힌다 | 거부감의 장벽에 부딪히는 두 번의 순간들 | 거부감의 장벽을 넘어서는 작은 도약

5장_ 작은 습관만의 작지만 위대한 차이
당신은 포기하지 않는 사람이 된다 | 스스로를 믿게 된다 | 자율성을 부여한다 | 추상적이든, 구체적이든 반드시 목표를 이루게 된다 | 두려움과 회의, 망설임을 없앤다 | 목적의식을 갖고 살게 한다

6장_ 큰 변화로 가는 여덟 단계
1단계: 작은 습관과 작은 계획을 선택하라 | 2단계: ‘왜?’라고 물어 핵심을 파고들어라 | 3단계: 습관 신호를 정하라 | 4단계: 보상 계획을 세워라 | 5단계: 모든 걸 적어 놓아라 | 6단계: 작게 생각하라 | 7단계: 높은 기대를 버려라 | 8단계: 징후를 찾아라. 단 섣부른 판단은 금물이다

7장_ 작은 습관을 위한 체크리스트
체크리스트 1: 부정행위는 금물이다 | 체크리스트 2: 어떤 진척이든 만족하라 | 체크리스트 3: 자주 보상을 내려라 | 체크리스트 4: 분별력을 유지하라 | 체크리스트 5: 강한 거부감이 들면 한 발 후퇴하라 | 체크리스트 6: 얼마나 쉬운 일인지 스스로에게 상기시켜라 | 체크리스트 7: 너무 작아 효과가 없는 목표는 없다 | 체크리스트 8: 큰 목표가 아닌 초과 달성에 에너지를 쏟아라

총 평

이 전에 읽은 “지속하는 힘”이라는 책과 유사하며 추구하는 내용도 비슷한 책이다.

지속하는 힘에서는 저자가 1일 1블로그를 하면서 무엇이든 꾸준히~~정말 꾸준히 한다면

그 자신감을 통해 성장하며 완성된 인간?이 될 수 있다는 뭐 이런 내용의 반복과 실천법이 나오던 책이다

반면 이 책은 굉장히 비슷하지만 모든 목표를 굉장히 작고 사치스러울 정도로 쉬운 것으로 하라는 것

거의 책의 마지막장까지 세뇌되다 싶이 반복적으로 나왔다. 한마디로 너무나 쉬워서

작심삼일로 가지 않는 그런 목표를 세우라는 것이다. 그렇게 실천하다보면 어느새 큰 누적 효과와

즐거움으로 더 큰 목표를 가지게되는 자신과 마주할 것이라는 내용이다.

이 책의 저자는 하루에 팔굽혀펴기 단 1개로 시작을 통해 헬스도 다니고 건강에 신경쓰면서

건강한 마인드를 가지게 되어 발전했다는 내용이다.

또한 흔히 말하는 아프니까 청춘이다. 꿈꾸는 다락방같은 자기개발서를 까는 내용도 굉장히 많다.

그냥 하면된다.라는 동기만 심어주는 책은 볼 가치도 없다는 내용이다. 뭐 틀린 말은 아니다.

나 또한 맨날 결심만 크게 하고 별로 한것도 없는 데 좌절하기만 했다.

결국 나는 하루에 팔굽혀펴기 1~5개하기 / 일일 달력 넘기기를 목표로 하고 있다.

이것은 시작일뿐이고 공부에 더 도움이 되는 습관으로 넘어갔으면 좋겠다.

“결론! 너무나 쉬워서 포기하지않을 정도로 쉬운 일부터 습관으로 만들어보자!”

습관의 재발견

2016.07

1.독학이란 어려웠다

학원다니기전 거의 20일 가량을 홀로 집에서 공부를 하는 데 역시 특유의 집중력과

컴퓨터만 잡으면 다른 짓 하는 것을 고치지 못해서 공부를 하지 못했다 아니 안했다.

결국 IT서적으로 내 책상은 도배가 되었다 이렇게라도 나에게 부담을 주고 싶었다.

하지만 내가 보는 자기개발서에 나오더라….자기위안적인 흔히 나오는 행동Case라더라..

 

2.드디어 학원을 다니기 시작

나에게 큰 인생의 전환점이 찾아왔다. 물론 아직 내 미래가 어떻게 펼쳐질지는 모르지만

열심히해야겠다는 생각뿐이다.

  1.  명강사님이시다.(미리 알고가서 정말 다행이다.)
  2.  내가 노답인줄 알았다. 하지만 1달 놀면서 준비한것도 도움이되더라 (단 구구단까지만)
  3.  커리큘럼 정말 빡시다. 따라가기가 힘들다. (6개월의 부작용아닐까)
  4.  전공자 정말 많다. 의외로 기초조차 없는 전공자도 많다. 단  잘하는 애들은 너무 잘한다.(특히 4학년 2학기 대학생들이 많다. 요새 트렌드라고 하더라 아 등록금은 또 따로 낸다는…)
  5. 학원에 근처에 IT기업이 많다보니 사원증을 은근히 보여주기식으로 자랑하는 사람을 많이 본다 (상당히 부럽다.)

 

2016.07

8day / SE / Array sort

//배열 오름차순 정렬 예제 
public class TestASCArraySort {
    public static void main(String[] args) {
        int[] point = { 4231 };
        System.out.println(“정렬전”);
        showArray(point);
        System.out.println();
        // 정렬작업
        int size = point.length;
        for (int i = 0; i < size; i++) {
            for (int j = i + 1; j < size; j++) {
                if (point[i] > point[j]) { <– J가 더 클때로 수정시 내림차순
                    int temp = point[i];// 교환(swap)
                    point[i] = point[j];
                    point[j] = temp;
                }
                System.out.println(i + ” “ + j + ” 요소 비교해 i가 j보다 크면 교환”);
                showArray(point);
                System.out.println();
            }
        }
        System.out.println();
        System.out.println(“정렬 후”);
        showArray(point);
    }
    public static void showArray(int[] p) {
        for (int i = 0; i < p.length; i++) {
            System.out.print(p[i] + ” “);
        }
    }
}
8day / SE / Array sort

7day / SE / Array

배열 : 다수의 데이터들을 관리하기 위한 객체

1. primitive data 를 요소로 저장하는 배열

>

배열 선언
int ages []; or int [] ages;
배열 생성 
ages = new int[3]; 3은 배열의 길이
배열에 요소를 할당 
ages[0= 22;
배열 요소 값을 반환받아 출력 
System.out.println(ages[0]);
배열의 길이를 반환
int size = ages.length;
reference data 를 요소로 저장하는 배열
배열 선언
Person p[]; 또는 Person [] p;
배열 생성
= new Person[3];
배열요소에 정보를 할당
p[0= new Person(“아이유”,24);
배열요소의 정보를 반환받아 출력
System.out.println(p[0].getName());
7day / SE / Array

6day / SE / Variable scope

자바 변수 ( Variable scope )

instance variable or object member variable
local variable

java 의 메모리 구조
method area , stack , heap 영역으로 구성된다

method area : class 의 메타 정보 ( method 정보 , static 정보 등)
stack : 지역변수(local variable)의 데이터가 저장
heap : 객체 데이터(instance variable에 저장된 정보)가 저장

 local variable (지역변수) 
 : 메서드 또는 생성자 단위에서 선언된 변수를 말한다

stack(선입후출) 영역에 저장 ,
임시로 사용하기 위한 용도이다.
사용하기 위해서는 명시적 초기화가 필요하다.
ex) int i; –> int i=0; 선언 및 초기화가 필요
제어문 내에서 선언될 경우 선언된 자신의 { } 영역내에서만
사용가능.
지역변수(local variable)은 선언된 자신의 실행영역이
수행을 마치면 stack 메모리에서 해제된다

instance variable ( or object member variable)
 : 객체의 속성 정보를 저장하는 변수

heap 메모리 영역에 저장된다
선언만 할 경우 기본 초기화가 된다
(ex) 정수형일 경우 0 , reference data type일 경우 null
boolean 일 경우 false

객체 초기화 단계

1. 인스턴스 변수의 기본(디폴트) 초기화
ex) 0 or null or false .. int age; 선언될 경우 0
2. 인스턴스 변수의 명시적 초기화
ex) int age=1;
3. 생성자에 의한 초기화

use a relationship

use a relationship : 사람이 렌트카를 사용하다

TestUseA — Person — RentCar
tour(){
RentCar 객체생성
}

UML (Unified Modeling Language)

: 객체 지향 분석 설계시 사용하는 모델링 언어 (표기법)
ex) class diagram , usecase diagram , sequence diagram 등

class diagram의 주요 관계

association : 연관관계 use a
aggregation : 집합관계 has a
composition : 긴밀한 집합관계 consist of

has a relationship

사람이 스마트폰을 보유하다
TestHasA Person SmartPhone

6day / SE / Variable scope

5day / SE / 조건문, 반복문

조건문

if , else if , else
if(boolean_expression){
//실행문;
}else if(boolean_expression){
//실행문;
}else{
//실행문;
}
switch

ex)

int grade = 1;
switch(grade){
    case 1실행구문;
        break;
    case 2실행구문;
    default실행구문;
}

반복문

for : 일정조건동안 반복수행
초기화 ; 조건검사; 증감++
for(int i = 0; i < 5; i++){
    실행구문;
}
while & do while
public class TestWhile {
    public static void main(String[] args) {
        int count = 0;
        while (count < 10) {
            System.out.println(count++);
        }
        System.out.println(“*************”);
        // do while : 반드시 한번은 실행한다
        int point = 0;
        do {
            System.out.println(“do while:” + point);
        } while (point > 0);
    }
}
5day / SE / 조건문, 반복문

4day / SE / Constructor

this keyword : 현재 자기 자신의 객체를 가르키는 자바 키워드(예약어)

this.변수명 –> 현 객체의 변수를 가르킨다
ex)

private String name;// 인스턴스 변수 또는 객체의 멤버변수
public void setName(String name){ // name 매개변수 or 지역변수
//name=name; // 둘 다 매개변수를 가르킨다
this.name=name;
//this.name은 객체의 변수이므로
//매개변수 name에 저장된 정보를 객체의 변수 영역에
//할당한다
}
 Constructor ( 생성자 ) : 객체 생성시 사용되는 클래스의 구성요소

ex)

new Person(); > class Person{
Person(){}
}
객체 생성 :  new 객체생성시 사용되는 자바키워드

Person() 생성자 호출
Person(){}

생성자 : 객체 생성시 호출된다
특징) 1.생성자명은 클래스명과 동일하다
      2.생성자는 리턴타입이 없다

Person() 생성자 호출
클래스 내에서 생성자를 명시하지 않으면
컴파일시에 자동으로 컴파일러가
기본 생성자(default constructor)를 삽입한다
생성자를 명시하는 이유?
객체 생성 직전에 실행해야 하는 일을 정의
ex) object value setting
객체 생성시 특정 조건을 부여 할 수 있다
-> 신용카드 객체에 전달된
개인 정보에서 신용불량등급이 나올 경우
Exception 발생시켜 신용카드 객체 생성을
막을 수 있다

 import : 다른 팩키지의 자원( 클래스 .. ) 을 사용하기 위해 선언하는 자바 예약어

ex) import step6.vo.MemberVO;
//위 코드는 step6 팩키지 하위의
//vo 팩키지 하위의 MemberVO 클래스를
//사용하겠다는 의미
eclipse 단축키 : ctrl + shift + o

java class의 주요 구성요소
package step10; // 팩키지 – 디렉토리별 분류
import step9.Car;// import – 외부 자원 사용
import step8.Animal;
public class MemberVO{// class 정의
    private String name;// instance variable 선언
    public MemberVO(String name){//Constructor 생성자
        this.name= name;
    }
//method
    public String getName(){
        return name;
        }
    }
자바의 데이터 타입

1) primitive data type

byte 1 2 4 8
정수형 byte short int long
실수형 float double
문자형 char
논리형 boolean

정수형의 기본형은 int, 실수형의 기본형은 double

2) reference data type
참조형 데이터 타입은 자바 기본형 데이터 타입을 제외한 모든 타입을 의미한다
참조형 데이터 타입은 일반적으로 클래스명과 동일한다
참조 변수에 저장되는 값은 heap 메모리 영역에서 생성된 객체의 주소값을 의미한다
ex) new Person(); –> 객체 생성 후 주소값 반환
생성한 객체를 이후 코드에서 사용하기 위해서는
변수에 주소값을 할당해야 한다
Person p = new Person();
Person : DataType ( 참조형 데이터 타입)
p : 변수 (참조 변수 or reference variable)

4day / SE / Constructor

3day / SE / method

기본문법

[접근제어자] 리턴타입 메서드명([매개변수]){
기능구현부
[return value]
}

ex)

public void eat(){ <–리턴값이 없을때 void를 명시한다

System.out.println(“먹다”); <–기능 구현부

}

 

method : passing argument (데이터를 전달)

rv.메서드(data) ———> 메서드(매개변수){ 처리 }

return value (결과값을 호출한 측으로 반환)

rv.메서드() ——-call——> 메서드(){ return value}
<—–return—–
메서드 실행 후
특정 value를 반환하기 위해서는 특정 value의 data type을
void 대신 명시해야 한다

Encapsulation 정의
“public interface, private implementation”
객체(or 컴포넌트)를 인터페이스와 구현부로 분리하고
인터페이스는 공개하고 구현부는 감춘다

  • 효과
    1. 인터페이스와 구현부가 분리됨으로 정보 은닉 및 정보 보호가 된다
    외부에서 접근시에는 반드시 인터페이스를 거쳐서 구현부와 통신해야만 한다
    2. 구현부가 업데이트되어도 사용하는 측에서는 영향이 없다
    -> 결합도가 낮아진다
    -> 시스템의 유지보수성이 향상된다
    3. 사용하는 측에서는 구현부를 몰라도 인터페이스만 파악해 사용할 수 있다
    -> 생산성 향상에 기여
  • 객체 단위에서의 Encapsulation 적용은
    외부와 소통할 속성과 기능에는 public 접근 제어자로 명시하고
    내부에서 구현 역할을 하는 속성과 기능에는 private 접근 제어자로 명시한다.

자바의 접근 제어자(access modifier)
public > protected > [default] > private

public : 어디서나 접근 가능
protected : 같은 패키지에서만 접근 가능하나, 상속관계시에는 다른 패키지에서도 접근 가능
[default] : 같은 패키지에서만 접근 가능
private : 오로지 자신의 클래스 내에서만 접근 가능 외부 접근 차단

setter / getter method
private 으로 선언된 변수에 대응하는
setter 와 getter method는 외부에서 정보를 할당받는 setter 계열 메서드와
외부로 정보를 반환하는 getter 계열 메서드로 구성된다.
ex)

public class Person{
//setter
public void setId(String i){
    id = i;
}
//getter
public String getId(){
    return id;
    }
}
3day / SE / method

2day / SE / Object-Orientd

소프트웨어 개발 과정

(개발 방법론 중 waterfall 폭포수 모델에 기반)
요구수집 ->분석 -> 설계 -> 구현 -> 테스트

객체지향 (Object-Oriented)

시스템 분석 설계 기법 중 하나
객체 지향이란 객체와 객체의 관계를 중심으로
시스템을 분석 설계하는 것을 말한다

  • 객체(Object)

시스템의 기본 단위이며 속성과 기능으로 구성된다
시스템 요구사항 범주내의 주요한 사물이나 개념이 대상으로 선정된다
참고) 컴포넌트 : 객체와 객체들이 관계를 이루어 하나의 독립된 기능단위를 이루는 것을 말한다
ex) 뇌세포-객체 ,뇌-컴포넌트
ex) 쇼핑몰 시스템
: 고객 , 상품 , 공급자 , 장바구니 , 구매
축구 게임
: 축구공 , 선수 , 심판 , 관중 , 축구장

  •  클래스

객체를 생성하기 위한 틀 or 설계도

  • 클래스와 객체의 관계

클래스는 객체의 설계도이다
클래스는 붕어빵틀 , 객체는 붕어빵이다

  • 클래스는 속성과 기능으로 구성된다

속성 : variable , attribute
기능 : method , operation

자바 기본 문법

  • class : 객체 생성을 위한 틀 (설계도)

접근제어자 class 클래스명{ }
클래스명은 대문자로 시작
합성어 첫글자는 대문자, 나머지는 소문자

  • variable ( or attribute 변수)

: 객체의 속성(or 데이터)를 저장하기 위한 공간
데이터타입 변수명;
변수명은 소문자로 구성되고 합성어의 첫글자는 대문자

  • method : 객체의 기능을 정의

접근제어자 리턴타입 메서드명(){
기능구현부;

}

2day / SE / Object-Orientd

1day / SE / start

  • 탐색기 확장자 보이게 하기 , 숨김파일 표시
    • 설정파일들을 모두 보기 위하여

 

  • pc 계정명이 한글일 경우 영문으로 변경 또는 포맷해야한다
    • DB 설치시 문제가 생길 수 있다
  • jdk 설치 ( http://www.oracle.com 또는 java.sun.com )
  • java 의 특징
  1. 객체 지향 – 2일차 수업예정 (예습)
  2. 플랫폼 독립적 – jvm ( 통역자 )
    -> write once, run anywhere
  • 초간단 어플리케이션 구현하기
    HelloWorld.java 를 정의
    jdk를 이용해 명령어 입력하여 컴파일한다
    컴파일된 결과는 HelloWorld.class이다
    개발자가 실행 명령어를 입력하면
    jvm 은 HelloWorld.class를 번역해 실행한다

HelloWorld.java ->  컴파일 -> HelloWorld.class -> 실행 -> 실행결과

1day / SE / start