클린코드 57p 중

오류 코드보다는 예외를 사용하라!

명령과 조회를 분리하는 데에서 오류코드를 반환하는 방식은 

예외(try-catch)구문보다 못하다.

 

예외를 사용하면 코드가 깔끔해진다.

예외 구문을 별도 함수로 뽑아내는 편이 좋다.

def delete(Page page): ->예외를 반환하는 함수

      try:

        deletePageandAllReferences(page)  ->수행하는 함수

      except:

        logError(e)

 

이렇게 예외를 반환하는 함수와 수행을 하는 함수를 나누어 놓는 것이 좋다.

 

*오류처리 또한 한가지 작업이다. 함수는 한 가지 작업만 해야 하므로

오류처리 함수는 except로 끝나야지 다른 블록(기능)을 추가하면 안된다.

 

React Project!!!

/* 컴포넌트로 잘게 자르고 css도 컴포넌트 별로 만들고 태그명을 쓰지 않고 클래스 명을 쓰도록 한다. */

children Component와 props를 사용하기

'오늘의 메모' 카테고리의 다른 글

21.02.15  (0) 2021.02.15
21.02.12  (0) 2021.02.12
21.02.10  (0) 2021.02.10
21.02.09  (0) 2021.02.09
21.02.08  (0) 2021.02.08

클린코드 50p 중

함수의 인수

- 0개가 제일 좋다. 1개는 차선으로 생각해라

- 인수는 어렵다. 내려가며 읽기를 수행 못하도록 만든다.

*출력인수: 인수가 결과가 되는 인수(인수가 변환해서 반환값으로 나오는 게 아니라

               그냥 반환되는 것) this로 대체할 수 있다.

1개의 인수를 사용하는 흔한 경우 2가지

- 인수에 질문을 던지는 경우

ex) boolean fileExists("myfile"), boolean isTrue(username)

- 인수를 변환해서 그 결과를 반환하는 경우

ex) InputStream fileOpen("myfile")

 

2개의 인수를 사용하는 흔한 경우

- 두 인수가 하나의 값을 표현하고 자연적인 순서가 있는 경우

ex) Point(x,y) 좌표를 나타내는 함수

-위와 같은 경우가 아니라면 클래스로 인수를 줄여라

 

인수 객체

인수가 2~3개 필요하다면 일부를 독자적인 클래스 변수로 선언할 가능성을 짚어본다.

ex) Circle makeCircle( double x, double y, double radious)

 =>Circle makeCircle( Point center, double raduous)

                             ->개념을 표현한다.

동사와 키워드

함수의 의도나 인수의 순서와 의미를 제대로 표현하려면 좋은 함수 이름이 필요하다.

^단항 함수는 동사(함수이름), 명사(인수)가 서로 쌍을 이루어야 한다.

write(name)->이름을 쓴다   writeField(name)->필드를 쓰는데 그 필드가 이름이다

^함수 이름에 인수 이름을 넣는다. 인수를 기억할 필요가 없다.

 

부수효과를 일으키지마라

즉, 한 함수에 몰래 두 가지 기능을 넣지 마라

특정 상황에서만 필요한 함수는 좋지 않다.

 

명령과 조회를 분리하라

함수는 뭔가를 수행하거나 답하거나 둘 중 하나만 해야한다.

ex)객체 상태를 변경하거나 반환하거나 둘 중 하나만 해야한다.

public boolean set(String attribute, String value);

함수만 보고 의미를 알 수 없다.

attribute를 찾아 value로 설정 후 성공하면 true 실패하면 false라는 의미 였음 ㄷㄷ;

->attributeExists(String attribute);과 setAttribute(String attribute, String value);로 분리

attribute가 있는지 찾고!                attribute를 value로 설정하라!로 명확한 의미

 

오늘의 코드

#a = list(map(int, input().split()))


#def isItLengthOddNumber(a):
#    if(len(a) % 2 == 0):
 #       return False
  #  else:
   #     return True


def solve(a):
    # 반복문으로 돌리면 런타임 에러가 난다.
    # 다른 방법이 있을까?
    # 바이너리 서치처럼 더한다.
    # list a의 길이가 홀수인지 짝수인지 구한다.
    # 홀수면 맨 처음 인덱스까지 더해주고 짝수면 그냥
    # 안되는 게 아니라 함수만 구현하면 되는 문제였다.
    # 입출력을 받는 것이 아니었다.!!!!@!@!
    #if(isItLengthOddNumber(a)):
     #   ans = a[0]
    #else:
    #    ans = 0
    #for i in range(int(len(a)/2)):
    #    ans += a[round(len(a)/2)-i-1]+a[round(len(a)/2)+i]
    for i in range(len(a)):
    	ans += a[i]
    return ans


print(solve(a))

 

습관에 관한 유튜브 중

www.youtube.com/watch?v=I6yFcgRbaZQ

B=MAP 행동=동기*능력*자극

케이티가 새벽운동을 습관으로 만들고 싶었는데 하지 못한 이유는??

그 시간에 침대 위에서 페이스북 알림을 확인하고 있었다.

즉, 운동을 못하게 하는 것은 휴대폰 페이스북 하기!

페이스북 알림은 오는 순간 너무 보고 싶어진다.

이는 너무 강한 동기를 가지고 있다. 어쩔 수 없이 동기는 제쳐두고

능력과 자극을 바꾸기로 한 케이티

B=MAP는 MAP가 모두 1이상이어야 행동이 되고 습관이 된다.

나쁜 행동 나쁜 습관의 경우는 세 가지를 최소한으로 낮추면 안하게 된다.

반대로 좋은 습관은 세 가지를 최대한으로 끌어 올려 자꾸 행동하게 된다.

 

나의 나쁜 습관을 B=MAP로 생각해 보았다.

 

먼저 나의 나쁜 습관은 딴 짓을 많이 한다는 점이다.

이 딴짓에는 해야할 일 중 유튜브 보기, 주식 보기,

캐시워크 문제풀기, 습관을 체크하기위한 앱 보기, 졸릴 때 안자기가 있다.

 

내가 하고 싶은 행동은 계획에 맞춰 하는 일에 집중하는 것이다.(행동)

 

동기를 강하게 만들 수 있는 리스트(집중을 위한 동기부여)

계획한 일을 다하면 딴 짓을 할 수 있도록 딴 짓 시간을 부여하자.

계획한 일을 다하면 맛있는 것을 먹자

 

능력을 쉽게 만들 수 있는 리스트(집중을 위한 소규모 워크)

일을 하기 전에 스트레칭을 먼저 한다.

일을 하기 전에 명상을 하고 시작한다.

일단 제일 쉽다고 생각하는 것부터 시작한다.

제일 쉽다고 생각하는 것을 계획에 적어 놓는다.

 

자극을 많이 줄 수 있는 리스트(집중을 위한 방해물 치우기)

딴 짓에 해당하는 알림을 모두 끈다.

딴 짓에 해당하는 시간을 부여한다. 딴 짓은 몰아서 하도록 한다.

잠 온다면 15분 엎드려 자고 다시한다.

 

결론: 딴 짓을 할 시간을 만들고 나머지 시간에는 딴짓에 해당하는 일에 신경을 끈다.

(자기 전은 제외: 밤에 잠을 안 잠) 시작 전에 스트레칭 후 명상을 하고 시작한다.

계획에 제일 쉽다고 생각하는 것을 적어 놓고 그것부터 시작한다.

 

오늘 바꾼 일들

*내가 자주 보지만 쓸데없는 알림을 모두 끄기

*습관 기록 어플 하나씩만 쓰기

-식사,물,체중: 야지오

-수면: Sleepcylce

-습관: 마이루틴

-캘린더: Todoist-google Calender- VueMinder(연동)

-모두 기록: Goodnote5

 

캘린더 연동 

아이폰, 안드로이드, 맥, 윈도우 모두 연동할 수 있는 Todolist어플

Todoist

구글 캘린더를 연동할 수 있다.

아이폰 아이패드 애플워치 모두 사용이 가능하고 애플의 미리알림과 비슷하다.

VueMinder

구글 캘린더를 연동할 수 있다.

윈도우나 맥의 배경화면에 위젯으로 사용할 수 있다.

Pro버전을 쓰면 이벤트생성이 구글 캘린더에 동기화 된다.(무료는 보는 것만 되고 쓰는건 안됨)

Google Calender

위 두가지 어플을 연동하기 위해 사용한다.

Todoist에서 이벤트를 생성하면 데스크탑에서도 볼 수 있다.

반대로 데스크탑에서도 이벤트를 생성하면 애플워치에서 알림이 온다.

 

M1 맥북을 샀기 때문에 한 달만 써보고 Mac에서 todoist를 사용해야겠다.

 

이연님 클럽하우스에 관한 유튜브

요즘 핫한 SNS(?)어플 초대장이 있어야 들어갈 수 있다.

다양한 직군의 사람들과 대화할 수 있다.

 

오늘의 생각

데스크 세팅

맥북이 온다면 구미 집에 컴퓨터를 놔두고 대구 집에서 맥북으로 공부를 하기로 하자

대구에 있어야할 물품

{맥북, C to HDMI,C type Hub, 로지텍 유선 마우스, 한성키보드와 받침, 큰 모니터,모니터 암이 필요할 꺼 같은데.., 스피커, 충전기들}

구미에 있어야할 물품

{조립식 컴퓨터, 각종 선들, 무선 마우스, 헤드셋, 유선 키보드, 모니터}

 

요즘 하는 일

클린코드 책읽기

알고리즘 공부(파이썬으로 백준 풀기 )

블로그에 생각 정리(모든 기록을 다 적어보기)

운동( 요가와 걷기 간단한 근력 )

프로젝트( 쇼핑몰 만들기 ) - frontend(react)

new! react강의 듣기

remove javascript challenge 50

 

 

오늘의 노래

혁오 - isn't she lovely(cover)

Billie eilish - npr tiny desk Concert "My Future"

 

 

 

 

 

'오늘의 메모' 카테고리의 다른 글

21.02.12  (0) 2021.02.12
21.02.11  (0) 2021.02.11
21.02.09  (0) 2021.02.09
21.02.08  (0) 2021.02.08
21.02.07  (0) 2021.02.08

클린 코드 44p 중

함수의 규칙

1. 함수는 작게

2. 한 가지 기능만 해라

 

여기서 한 가지란?

추상화 수준. 즉, 이름에 맞는 일 한 가지 

단순히 표현만 다른 것이 아니라 의미 있는 이름으로 다른 함수가 추출된다면

이 함수는 한 가지 기능만 하는 것이 아니다.

한 가지 기능만 수행하려면 함수 내의 추상화 수준이 동일해야 한다.

 

추상화 수준은 높낮이가 있다.

높을수록 근본 내용에 속하고 클래스와 메서드를 사용자 정의한. getHtml() 같은 메서드를 주로 사용한다.

낮을수록 세부 내용에 속하고 기본 라이브러리의 메서드. append() 등을 사용한다.

 

내려가기 규칙

이야기처럼 아래로 읽게 되어야 좋은 코드이다.

한 함수 다음에는 추상화 수준이 낮은 함수가 온다.

ex) To 설정 페이지와 해제 페이지를 포함하려면, 설정, 테스트, 해제 페이지를 포함한다.(제일 높은 추상화 수준)

            To 설정 페이지를 포함하려면, 슈트이면 슈트 설정 페이지를 포함한 후 일반 설정 페이지를 포함한다.

            To 슈트 설정 페이지를 포함하려면, 부모 계층에서 "SuiteSetUp" 페이지를 찾아...

            To 부모 계층을 찾으려면....

점점 세부적인 내용으로 가는 것을 알 수 있다. (수준이 점점 낮아진다.)

라면에 비유해 보았다.

ex) To 라면을 끓이려면, 물을 끓이고 면과 수프를 넣어야 한다.

          To 물을 끓이려면, 냄비를 찾아 물을 부어야 한다.

          To 냄비를 찾으려면......

 

3. 서술적인 이름을 사용하라

함수가 하는 일을 좀 더 잘 표현할 수 있는 이름을 사용하라.

한 가지 기능만 수행하는 함수에 좋은 이름을 붙인다면 벌써 절반은 성공한 것

주석보다도 이름으로 분명하게 알게 하라

한 모듈 내에서 함수들은 같은 문구, 동사 및 명사로 된 이름을 사용해야 한다.

 

 

오늘의 코드

#8958번
def checkOX(resultOfOX):
    count = 0                     #맞은 문제를 세는 변수
    point = 0                     #맞은 문제당 1점이고 그 점수를 합산하는 변수
    for i in range(len(resultOfOX)):
        if(resultOfOX[i] == 'X'):
            count = 0
        # O가 되면 +1 X가 되면 0
        else:
            count += 1
            point += count
    return point
# 변수에 변수를 옮겨 담는 기술
# ox퀴즈의 결과 개수
result = int(input())

# ox퀴즈의 결과 문자열
for i in range(result):
    resultOfOX = input()
    print(checkOX(resultOfOX))
    
    
#4344번
# testCase C
c = int(input())
# 평균을 위한 총 합 값
for i in range(c):
    sum = 0
    count = 0
    # countOfStudent and theirPoint list
    points = list(map(int, input().split()))
    for j in range(1, len(points)):
        sum += points[j]
    # points에 첫번째 인덱스 즉 points[0]은 학생의 수
    average = sum/points[0]
    for k in range(1, len(points)):
        if(points[k] > average):
            count += 1
    print(format(count/points[0], "0.3%"))
#출력 시 퍼센트형태로 출력하고 싶다면 위의 형태대로 
#0.3은 소수점 몇 째자리까지를 뜻 함

 

오늘의 생각

애플 펜슬은 그림을 그릴 때 혹은 키보드가 없을 때 사용

키보드는 있다면 항시 사용

 

오늘은 버티는 날이다.

 

'오늘의 메모' 카테고리의 다른 글

21.02.11  (0) 2021.02.11
21.02.10  (0) 2021.02.10
21.02.08  (0) 2021.02.08
21.02.07  (0) 2021.02.08
21.02.05  (0) 2021.02.05

클린코드 36p 중

 

맥락이 중요하다고 해서 모든 클래스나 메서드에

그 맥락의 키워드를 집어넣는 것은 잘못된 것이다.

 

accountAddress나 customerAddress는 클래스명으로 부적합하다.

Address를 클래스명으로 하고 인스턴스로 넣는 것이 더 좋다.

 

함수

문장이나 문단으로 읽을 수 있는 코드가 좋은 코드이다.

프로그램의 가장 기본적인 단위로 문장처럼 읽는 코드는 분명히 명시된 이름을 

사용한 함수들을 가진다.

 

함수의 규칙

1. 작게 만들어라.

-> 2~4줄 정도로 작게 만들어 의도를 분명하게 하라.

=>흐름제어문(if,for,while문)에 들어가는 블록은 1줄 이어야한다는 의미

 그 1줄은 보통 함수를 호출

중첩 구조가 생길만큼 함수가 커지면 안된다.(즉 들여쓰기가 많아지면 보기 힘들다)

 

수강신청과 그 결과 

 

어떻게 되었든 결과에 미련을 갖지말고 다른 일을 해보자 

애써 만든 습관을 수강신청때문에 망칠수는 없다.

 

'오늘의 메모' 카테고리의 다른 글

21.02.10  (0) 2021.02.10
21.02.09  (0) 2021.02.09
21.02.07  (0) 2021.02.08
21.02.05  (0) 2021.02.05
21.02.04  (0) 2021.02.04

오늘의 메모

 

천원돌파 그랜라간 중

"형님 저 무서워요 자신이 없어요."

"너는 널 믿지마. 널 믿는 날 믿어!"

 

이산가족 상봉을 위해 어느 방송국에서 진행한 프로그램 중 

부산에 사는 형님이 한 말

"사는건 걱정하지마라"

 

이 둘은 서로 다른 말임에도 정말 비슷한 말이다.

 

하나는 자신감을 가져라 다른 하나는 내가 너는 꼭 책임지겠다

라는 의미로 받아들여졌지만

둘 다 서로가 서로에게 큰 신뢰를 보내고 있다.

 

오늘의 코드

subjectNumber = int(input())
subjectPoints = list(map(int, input().split()))
subjectPoints.sort()
subjectAverage = 0
print(subjectPoints[-1])
for i in range(subjectNumber):
    subjectAverage = subjectAverage + subjectPoints[i]/subjectPoints[-1]*100
    print(subjectAverage)
subjectAverage = subjectAverage/subjectNumber

#round함수는 10^-a의 오차를 나타내기 좋다.
print(round(subjectAverage, 2))

 

'오늘의 메모' 카테고리의 다른 글

21.02.09  (0) 2021.02.09
21.02.08  (0) 2021.02.08
21.02.05  (0) 2021.02.05
21.02.04  (0) 2021.02.04
21.02.03  (0) 2021.02.03

이번 주의 계획표

이연님, 소람님, 책식 주의 님을 통해 배우고 습관을 개선해 나가려고 노력했던 한 주였다.

나에게 아주 뿌듯하고 첫 발걸음으로 다가왔다.

 

나에 대한 느낌

노래 들으면서 무언가에 집중하는 것을 정말 좋아한다.

고등학교 때에는 수학문제를 노래 들으며 풀었었고

요즘은 노래들으며 그림을 그린다.

나를 아는 것은 참 힘들다 

그냥저냥 지나가는 하루는 나를 더 알기 어렵게 만든다.

계획하고 좋아하는 일을 하고 습관을 만들어가면 나의 방향을 알기 쉽다.

천천히 할 수 있는 만큼만 조금씩 만들어가면 된다.

 

프로젝트에서 같이 그린 그림(메인 페이지의 메인 이미지로 사용됨)

 

python에서 기억에 남고 중요한 일들

iterable 반복되는 객체

list 입력받기 list(map(int, input(). split())

input()은 문자열로 받는다는 점

help()를 통해서 찾고자 하는 것의 정보를 얻을 수 있다

몫을 구하는 연산자는 // 나눗셈은 / result = 0.0

전역 변수로 설정한 것은 전역변수로 사용된다. 안되면 내가 틀린 거다.

 

클린 코드 이때까지 내용 요약

꼼꼼한 개발자가 되려면 이름을 잘 써라! -> 코드를 읽는 데 시간이 더 많이 들기 때문이다.

존재 이유? 수행 기능? 사용방법? 즉 딱 봤을 때 얘가 뭘 하는 코드인지 알 수 있도록 짜는 것이 핵심

 

이연님을 보고 드는 생각

비트박스로 성공하겠다는 미련을 완전히 버리게 해 주고 나에게 자유를 준 영상

이연 - 성공을 기대하지 않을 때 얻는 것들 중

 

책식주의 습관에 관한 영상

습관을 만들려면 

꼭 하는 일(화장실 이 닦기 등등)에

하고 싶은 좋은 습관의 제일 최솟값(팔 굽혀 펴기 2개)을 하고

정말 과하다고 생각되는 칭찬을 해주세요(만세를 3 창한다던지)

 

엄마와 대화 중

한 개라도 제대로 풀면 모든 것을 풀 수 있는데

한 개를 제대로 푸는 방법은

시간을 정해서 긴장감 있게 문제를 풀고(틀려도 괜찮다)

한 번에 시간 안에 맞았다면(ex 1+1 1초 안에 풀기 같은 것) 넘기고

틀렸다면 꼼꼼하게 다시 한번 푼다.(이 때는 시간을 재지 않고)

까먹을 즈음(나는 7일 뒤 계획에 적어준다.) 다시 시간을 재고 풀어본다.(위의 과정을 반복)

 

 

오늘의 코드

# 1110번
n = int(input())
existingNum = n
count = 0
# 몫을 구하는 연산자는 // 나눗셈을 하는 연산자는 /\
while(True):
    tens = n//10
    units = n % 10
    # 진짜 문제 꼼꼼하게 안 읽으면 이 사단이 난다.
    # 앞에 0을 붙이는 거 즉 10의 자리 수가 0이므로 0을 써주는 건데
    # 뒤에 0을 붙여서 10으로 만들어주니 당연히 안되지
    if(n < 10):
        tens = 0
    sumTensUnits = tens + unitsㅁ
    if(sumTensUnits >= 10):
        sumTensUnits = sumTensUnits-10
    n = (units*10) + sumTensUnits
    # 전역변수로서 역할을 하고 있었다. 오해해서 미안
    # 모를 때는 출력해보자
    count = count+1
    if(n == existingNum):
        break
print(count)

#10818번
n = int(input())
arrayEachN = list(map(int, input().split()))
arrayEachN.sort()
print(arrayEachN[0], arrayEachN[-1])

# 2562번
array = []
for i in range(9):
    array.append(int(input()))
copyArray = array.copy()
copyArray.sort()
maxNumberInArray = copyArray[-1]
print(maxNumberInArray)
print(array.index(maxNumberInArray)+1)

# 2577번
number = 0
a = int(input())
b = int(input())
c = int(input())
result = a*b*c
result = str(result)
for i in range(10):
    numberInTheResult = 0
    for j in range(len(result)):
        if(result[j] == str(i)):
            numberInTheResult = numberInTheResult+1
        number = numberInTheResult
    print(number)

 

 

클린코드 27p부터 

 

읽는사람이 차이를 알도록 이름을 지어라 

 

3. 발음하기 쉬운 이름을 지어라 

genymdhms 젠야무다힘즈->generationTimestamp 특정시각 생성 

 

4. 검색하기 쉬운 이름을 사용하라 

문자 하나를 사용하거나 상수를 사용하면 검색이 힘들다

숫자7을 검색하면 7이 들어가는 파일이나 수식이 모두 검색되기 때문이다.

문자 하나나 상수로 검색하는 것은 너무도 좋지않다.

한 문자 변수를 사용하려면 짧은 메서드에서 지역변수로 사용하는 것만 하는 것이 좋다.

 

5. 인코딩을 피하라 유행이나 범위정보까지 인코딩에 넣으면 해독하기 어렵다.

헝가리식 표기법이나 멤버변수 접두어는 옛 상황에 맞춘거라 지금과 맞지 않다.

*클래스 이름 클래스 이름과 객체 이름은 명사나 명사구가 적합하다.

manager, procesor, data, info 등과 같은 단어는 피하고 동사는 사용하지 않는다.

*메서드 이름 메서드 이름은 동사난 동사구가 적합하다.

postPayment 결제 후, deletePage,save 등이 좋은 예이다.

접근자 Accessor = get을 붙인다.

변경자 Mutator = set을 붙인다.

조건자 Predicate = is를 붙인다.

 

6. 일반화된 이름을 사용하라.

이름이 너무 기발하거나 아는사람만 알게 만들면 함수가 무엇을 하는지 모를 수 있다.

 

7. 한 개념에 한 단어를 사용하라

위의 메서드 이름 중 접근자를 여러개 만들 때 하나는 get 하나는 take를 쓰면 혼란스럽다.

 

8. 한 단어를 두 가지 목적으로 사용하지 마라 다의어라도 한 가지 개념으로만 사용해야한다.

 

9.의미 있는 맥락을 추가하라 ->주소에 관한 맥락에 addr을 붙여 addrFirstName, addrState

함수가 길고 함수 전반에 특정 변수들을 사용한다면

함수를 작은 조각으로 쪼개고자  클래스를 만든 후 특정 변수를 클래스에 넣는다.

클래스명은 맥락에 맞게 설정한다. 그러면 특정 변수들은 맥락이 분명해진 변수가 된다.

특정 변수들은 확실하게 클래스의 맥락에 속하게 된다.

이렇게 맥락을 개선하면 함수를 쪼개기가 쉬워지므로 알고리즘도 명확해진다.

 

 

이연님의 성공을 기대하지 않을 때 얻는 것들 중

 

“그림은 취미로 그렸을 때가 최곤데 그림을 안그려도 돈을 벌 수있는 구석이 있다? 완전 좋죠.

오히려 나의 창작에 돈이라는 무게를 지어주지 않아도 되는 정말 최고의 상태인 건데, 나는 그림으로 성공해야 돼 라고 생각하는 상태에서는 그게 정말 끝없는 불행인거죠.”

“그림일기를 그리기 시작한 계기는 내 삶을 잘 기억에 남기고

내가 그림을 그리는 인간 어쨌거나 원래의 나는 화가라는 것을 잊지 않기 위한 장치였거든요."

 

"그러면서 그림에 대한 기대 자체를 버렸어요.

그전에는 내가 그림을 사랑한 만큼 그림이 나한테 뭔가를 줘야한다고 생각했어요.

사실 바라는 건 돈이었죠. 진짜 완전히 옛날로 돌아가서

? 왜 내가 그림을 그렸지?라는 이유에 집중을 하니까

나는 그림이 나한테 돈을 주거나 그런게 좋아서 그림을 그리는 사람이 아니더라구요.

놀랍게도 전 아직도 그림을 많이 사랑해요.

온전히 그림만이 줄 수 있는 영역이 있거든요 그게 좋아서 사실은 그림을 그리는 건데

그 쾌감을 줄 수 있을 정도면 내가 그림을 위해 다른 일을 할 각오가 되어 있는데

그림이 나에게 돈이나 성공까지 줘야할까?"

 

"그래서 성공하기를 포기했어요.

그림을 부양해야겠다고 그림을 그냥 순수하게 사랑하기로 다짐을 한 거에요.

그러니까 놀랍게도 잘됐어요."

(회사를 그만두고 원데이 클래스로 그림으로 돈벌려 해보니 쉽지 않았고 나를 먹여살린것은 디자인이였음을 깨달음)

 

"그거를 해서 행복할 수 있으면 그게 사실 성공이거든요.

제가 성취는 했지만 성공은 하지 못했다고 하는 이유가

저는 더 많이 행복할 수 있는 거리들이 있다고 생각하고 찾고 하는 중이어서 그런 것을 완결 짓지 않았어요.

이건 성공으로 가깝게 가고 있는 것이지 성공을 했다고 단정지을 수는 없어요.

성공을 포기하면 창작이 자유로워져요. 나다운 나의 무언가를 만들 수 있게 된 계기이기도 해요."

 

나의 느낌 나도 비트박스를 하면서 직업으로 수익을 얻고 성공하기를 바랐다.

하지만 나만의 느낌이 아니라 다른 사람을 따라하기 바빴다. 

옛날 처음 비트박스를 하던 때로 돌아가서 나를 바라보니 다른 사람을 따라하기보다는

그냥 내가 내는 리듬에 몸을 맞기고 신날 때 자연스럽게 나오는 것이었다.

그게 행복 이었다. 그것을 다시 찾는다면 나는 성공한 것이다. 

 

'오늘의 메모' 카테고리의 다른 글

21.02.08  (0) 2021.02.08
21.02.07  (0) 2021.02.08
21.02.04  (0) 2021.02.04
21.02.03  (0) 2021.02.03
21.02.02  (0) 2021.02.02

오늘의 코드

# 10951번
# 몰라서 구글 찾아보고 풀었따.
# 파이썬에서 예외처리 케이스에 대한 공부가 더 필요하다.
# 이 문제에서는 EOF의 예외처리를 다룬다.
while(True):
    try:
        a, b = map(int, input().split())
        print(a, b)
    # 입력될 테스트 케이스가 없다면 종료
    except:
        break
# EOF End Of File의 약자로 파일의 끝을 알리는 문자값
# EOF 에러가 나면 break 엔터를 치면 에러가 나므로 break로 바로 빠져나온다.

오늘의 단어 

preserve  보존하다 유지하다 

justify     옳다고 주장하다. 정의하다.

elapsed   경과

Expanding Card(50 Challenge 중)(사용한 방식)

구글 폰트 api를 가져오는 방법

In CSS file, import google api URL with font that you want.

flex

media query nth-of-type( )

JS

foreach( )

addEventListener( )

 

클린 코드 22p 중

코드를 짤 때 이름 잘 짓는 규칙

1. 의도를 분명히 밝혀라

-> 존재 이유는? 수행 기능은? 사용 방법은?

따로 주석이 필요 없게끔 이름을 분명히 하라

코드의 함축성 = 코드가 가지는 의미와 맥락을 이름이 함축하고 있는지 확인(단순 list 1을 gameboard로)

2. 그릇된 정보를 피하라

-> 그릇된 단서 = 자료구조와 같은 이름(accountList 등), 흡사한 이름,

유사한 개념임에도 표기법이 아예 다른 경우, O,L과 같은 숫자와 닮은 모양의 알파벳 등

'오늘의 메모' 카테고리의 다른 글

21.02.08  (0) 2021.02.08
21.02.07  (0) 2021.02.08
21.02.05  (0) 2021.02.05
21.02.03  (0) 2021.02.03
21.02.02  (0) 2021.02.02

+ Recent posts