728x90
반응형

개발 테스트를 하다가 

카프카로부터 메시지를 컨슈밍하는 애플리케이션을 종료했는데도 계속 컨슈밍하는 현상이 발생했다.

제대로 종료되지 않아 유령처럼 떠돌아 다녔던 것..

(intellij에서 실행하는 프로그램 또는 자바 기반 프로세스는 프로세스명이 "java.exe"d이다)

 

그 외에 메모리를 많이 잡아먹는 백그라운드 프로세스를 확인하거나 종료하기 위해 실행중인 프로그램을 확인하는 명령어를 공유해보려고 한다.

 

tasklist

현재 실행중인 백그라운드 프로세스 확인

 

taskkill

현재 실행중인 백그라운드 프로세스 중지

- 프로세스 파일명으로 중지

    > taskkill /f /im [프로세스명]

 

cmd 를 실행하여 위 명령어를 통해 확인하고 중지할 수 있다.

728x90
반응형
728x90
반응형

4달 만에 쓰는 주간회고😅

 

강제 재택이 된 이후 집에서만 살다 보니 의욕이 많이 떨어져 주간회고도 안 쓰게 되었다는 핑계로 시작해본다.

 

강제 재택으로 바깥 활동이 적어진 것 외에는 클라이밍하고 일하고 토마도 하며 가끔 친구를 만나는 평범한 일상을 살아왔다.

아 7월에는 문물과 멀리 떨어진(?) 곳으로 ㅠㅠ 교통도 좋지 않은 곳으로 이사를 왔다. 그래서 더 집 밖으로 나가지 않게 된 것도 있는 것 같다  ㅎㅎ


운동

카페를 나가진 않았지만(버스타고 가야 함) 단지 안에 헬스장이 있어 처음 pt를 받아 운동을 하면서 클라이밍 근육(?)을 많이 길렀다.

체지방도 난생 처음 측정해 봤는데 운동선수급이라고 한다 ㅋㅋㅋㅋ 10회를 받았는데 처음 18.9%에서 시작하여 16.9%까지 빠졌다.

마지막에 측정했을 때 한참 추석 지나고 잘 먹을 때라 아마 그 이후에 더 빠졌을 수도 있다🙄

턱걸쓰 기록: 턱걸이는 이제 8~10회 정도 하는 것 같다!

 

여전히 클라이밍은 열심히 하고 있다. 주변에서 개빠른 성장이라고 해준다 ㅋㅋㅋㅋ 내가 보기에는 아직 못하지만 그래도 열심히 하다 보니 조금씩 느는 것도 같고 못 하던 동작들이 되기도 한다!!

최근 클라이밍 완등 후 신난 모습 ㅋㅋㅋㅋ


자연 암벽

실내 볼더링을 넘어 첫 자연 암벽에 두번 다녀왔다.

저번 주에만 대체공휴일이랑 토요일에 다녀왔는데 신세계였다. 정말 신세계였어.

무엇보다 자연을 사랑하는 사람으로서 자연에 있을 수 있다는 것이 가장 신났다. 실내 볼더링도 정말 재미있지만 미친놈처럼 6시간 7시간 운동하면 하루 종일 실내에 있는 것과 마찬가지니까... ㅎㅎ

 

먼저 더 최근 다녀온 춘천 자연암장은 높이 올라가면 춘천 소양강이 흐르는 모습도 볼 수 있었다.

어프로치도 5분 정도로 굉장히 짧았고 개척된 지 얼마 되지 않았다고 한다.

붙어본 루트: 몸 풀기로 5.9 두개 탑로핑, 5.10b 탑로핑, 5.10c 탑로핑(같이 간 교수님 말씀으론 아주 잘 만들어진 10c라고 하셨다!), 그리고 하신 김에 붙어본 5.12a ㅋㅋㅋㅋ (물론 얼마 못 가 추락!)

아직 리드를 해 본 경험이 없어 탑로핑으로만 했지만 그래도 5.10b, 10c를 추락 없이 텐션도 없이 끝까지 올라갔다. 10c할 때 바람도 너무 많이 불고 무서워서 중간에서 울면서 내려달라고 했다 ㅋㅋㅋ 

하지만 '내려오면 완등이 아니야!!! 너 내려올꺼야???' 라고 하시는 선배의 말에 다시 엉엉엉 울면서 올라갔다. 

오를 때 낑낑 대면서 어찌어찌 잘 오르는 것 같은데 나는 왜 이렇게 힘든 구간을 지날 때마다 억울한(?) ㅋㅋㅋㅋ 이상한 감정이 들어 울컥한다😂 

아 그리고 정말정말 추워서 오들오들 떨면서 운동했다..ㅋㅋㅋ 그래도 두 번째 자연 암벽은 배운 것도 많고 잘한다고 칭찬도 받았다! 춘천까지 간 김에 닭갈비를 먹는 행복 또한 누릴 수 있었다.

춘천 자연 암벽

 

첫 자연암벽인 학암포 해벽!

후.. 첫 자연 암벽을 학암포에서 경험해보다니 나는 진짜 진짜 행운이라고 생각한다. 물론 첫 자연이라 온전히 즐기지는 못했다고 생각한다.

나를 데려간 친구와 선배도 물론 즐길만큼 즐길 수 없었을 것이다 ㅠㅠ 그건 굉장히 죄송하고 고마운 마음...

이 날도 바람이 많이 불어 조금 추웠지만 자연 암벽의 매력을 제대로 느낄 수 있었다. 11b 끌어올려주셔서 사진도 찍었다 ㅋㅋㅋㅋ 

내년에 꼭 또 다시 가 볼 곳이다(그때는 로프도 있을 테고.. 빌레이도 잘 볼 수 있겠지!!) 

아! 그리고 올 해 첫 바다를 이렇게 볼 수 있다는 것도 굉장히 행복했고 고마웠다! 후후 주변에 돌 잡는 사람들 중에 이렇게 좋은 사람이 있다니 정말 행복할 뿐이다.

학암포 해벽


운전 면허

돌만 잡는 미친놈은 아니고 나도 일상생활은 한다. 

대부분 재밌는 일은 돌 잡는 일에서 생기긴 하지만.. ㅎㅎ

음 사실 면허를 따는 이유도 원정 편하게 다니려고...? 이지 않을까 싶지만 ㅋㅋㅋ 이사를 오고 교통이 너무 불편해 면허를 따야겠다고 생각했다. 그리고 강제 재택 하는 지금 이 시기에 시간이 제일 많으니 지금 따라는 조언을 많이 들어서 학원에 등록했고 면허를 따기 시작했다.

결론부터 말하자면 학원비 50만 원 냈고, 기능 시험 1회 탈락 이후 2회째에 붙었다.

저번 주에 도로주행 시험을 봤다. 결과: 과속으로 실격.

후.. 과속 실격 웬 말이냐!!! ㅠㅠㅠㅠ 옆 차들과 속도 맞춰서 간다는 게 제한속도를 넘겨버려 다 돌고 들어가는 길에 실격당해버렸다.

나름 코스 잘 돌았는데 마지막에 가서야 그렇게 실격당하니 믿을 수가 없었다... ㅋㅋ 

빨리 들어와서 회의를 들어가야 했다. 그래서 택시를 타고 올라오면서 기사님에게 말씀드리니 기사님께서 원래 많이 떨어진 사람이 운전 잘한다고 말씀해주셨다. 그러면서 잠재적 고객을 아직 안 잃었다며 좋아하시기도 했다 ㅋㅋㅋㅋ 유쾌하신 기사님이여~~

다음엔 꼭! 딴다! 운전면허!


이제 만 9개월째 일을 하고 있다. 추석 전까지만 해도 왜 이렇게 일에 적응이 되지 않을까 조금 힘들었다.

코로나로 강제 재택을 하느냐고 내가 일에 집중을 못하는 것일까도 생각해 봤다.

물론 재택의 영향도 있는 것 같지만 내 스스로 더 집중하고 정말 내 일이라고 생각하며 책임감을 가지는 과정이 부족하지 않았을까 라는 생각이 들었다.

그래서 추석 이후로 조금 더 진지하게 일을 대하려 하며 집중하려고 노력하고 있다. 

그리고 최근에는 커리어에 대한 고민도 하기 시작했다. 현실에 안주하지 않기로 하자.


오랜만에 기록을 하니 재미있기도 하고 그동안 기록하지 않고 지나가버린 일들이 꽤 많겠다는 생각이 든다.

아주 건설적인 생각을 한다거나 그것을 기록하지는 못하더라도 이렇게 주간 회고 정도는 꾸준히 다시 써보려고 한다.

열심히 살자 기마연~

728x90
반응형
728x90
반응형

도커 알 못이 파이썬 스크립트를 서버에서 돌려야 해서 도커로 이미지 빌드하고 올리는 과정 정리

(한 3개월 전에 도커로 올렸었는데 오늘 다시 하려니 까먹어서 정리해 놓기로 마음먹음)

 

1. 파이썬 스크립트를 작성한다.

2. 도커파일을 작성한다.

  -> 도커파일에 무슨 내용을 적어야 할 지부터 일단 의문이었던 기억.

3. 도커 빌드.(이미지 만들기)

  -> 그냥 도커 빌드 명령어를 쓰면 됨

4. 도커 푸시

5. 원하는 서버에서 도커 풀 받아서

6. 원하는 포트를 지정해 도커 런!

 

일단은 위와 같은 단계로 도커 이미지를 만들고 빌드를 시키고 서버에서 작동을 시켰다.

각 과정에서 사용한 명령어 정리 한 후 '와당탕탕' ㅋㅋㅋ을 정리해보려고 한다.


1. 파이썬 스크립트 작성

이건 그냥 원하는 스크립트를 뚝딱뚝딱 작성하면 되는 것이니 패스! 

나는 fastapi로 api를 만들었다.(?)

 

2. 도커파일을 작성한다

스크립트가 실행되는 위치에 Dockerfile <-- 이 이름으로 된 파일을 작성한다.

나는 파이참 IDE를 사용해서 코드를 짜서 그냥 New File 눌러서 Dockerfile로 이름 적어 파일을 생성했다. .yaml 파일 작성하듯이 내용을 작성하면 된다.

다양한 명령어가 있고 효율 좋게(?) 돌아가게 하는 기능도 있지만 나는 아래와 같이 간단하게 작성했다.

# 베이스 이미지 명시
FROM python:3.7.8

# 컨테이너 실행 전 수행할 쉘 명령어
RUN mkdir -p /opt/myservice
WORKDIR /opt/myservice
COPY . .
RUN pip install -r ./requirements.txt


# 컨테이너가 시작되었을 때 실행할 쉘 명렁어
# 도커파일 내 1회만 실행할 수 있음
EXPOSE 8802
CMD python main.py

 

3. 도커 빌드

> docker build --tag server:port/myservice:0.1 .

위 명령어로 도커 빌드를 하고 나는 업무용 서버에 이미지를 빌드할 것이기 때문에(?) 일단 저렇게 이미지를 빌드하였다.

저렇게 빌드하고 '> docker images' 명령어를 치면 이미지가 생성된 것을 확인할 수 있다.

 

4. 도커 푸시

위에서 생성한 도커 이미지를 서버에 푸시하기 위한 과정이다.

> docker push server:port/myservice:0.1

지정된 서버에 해당 이름으로 이미지가 푸쉬되었다.

 

5. 도커 풀

작동하기 원하는 서버에서 이미지를 올린 서버로부터 이미지를 내려받는 과정이다.

> docker pull server:port/myservice:0.1

위 명령어로 도커 이미지를 pull 받았고 docker ps 해보면 이미지가 받아진 것을 확인할 수 있다.

이제 하나 남음!!!

 

6. 도커 런

이미지를 받았으니 이제 컨테이너 실행을 시켜주면 된다.

도커 런을 시키면 되는데 이 때 옵션을 다양하게 붙이면 원하는 대로 뭔가 해볼 수 있는 듯 하다 ㅋㅋ

나는 그냥.. 필요한 것만 아래와 같이 사용했다.

 > docker run -d -it -p 8802:8802 --name myservice0.1 server:port/myservice:0.1

 

참고: https://docs.docker.com/engine/reference/commandline/run/

불러오는 중입니다...

위 링크에서 여러가지 옵션들을 확인할 수 있다.


와당탕탕 1. 도커 빌드가 안된다!

일단 스크립트를 작성해서 도커 빌드를 해보려고 했음

스크립트야 그냥 api 개발한 거고 도커 빌드를 해보려는데 이상한 에러들이 뜸

=> ERROR [internal] load metadata for docker.io/library/python:3.7.8
= failed to fetch oauth token: unexpected status: 401 Unauthorized

요런 에러들...

그래서 찾아봤더니 도커 로그아웃하고 다시 로그인 하면 된단다!!

> docker logout
> docker login

위와 같이 명령어를 하나씩 쳐 주고 도커 빌드를 하니 성공!

물론 login 할 때 username과 password를 알고 있어야 한다. ㅋㅋㅋㅋ 기억 안나서 뇌정지 온 사람(나)

 

 

와당탕탕 2. 포트 지정 (feat. Dockerfile)

도커 빌드하고 이미지 push 이후 원하는 서버에서 pull 받아 run을 할 때 포트 지정을 해 주려고 한다.

두번째 도커 개발이라 도커파일 작성조차 익숙하지 않아 이 전에 개발했던 Dockerfile을 복사해서 설정값을 그냥 아무 생각 없이 띵가띵가 바꿨다.

그러고 서버에서 이미지 pull 받아 아래 명령어로 run 시키는데 돌긴 돌아도 테스트가 안되는 것이었다!!

> docker run -d -it -p 8802:8802 --name name0.2 myserver2:5000/name:0.2

 '> doekr ps' 해보면 포트가 자꾸 8800를 가리키게 되어 있었다.

뭘까뭘까 엄청 고민해 보다가 하.. 내가 이 전에 올린 api의 포트를 8800으로 해놨는데 해당 Dockerfile 그대로 복사해서 쉽게쉽게 가려다가 그 8800 포트 적은게 그대로 이미지로 만들어져 버렸던 거구나... 싶었다.

그래서 Dockerfile의  EXPOSE 값을 내가 원하는 포트번호인 8802로 수정하고 위 명령어로 런 시키니 잘 작동하는 것 확인!

728x90
반응형
728x90
반응형

사내 스터디 세미나로 준비한 자료 정리

 

Go 언어를 활용한 마이크로서비스 개발

2장 좋은 API 디자인하기


api 규약 작성이 매우 중요하며 어려움

RESTful API

  • REpresentational State Transfer(표현적 상태 전송)
    • 컴포넌트(서비스 단위) 간 상호작용의 확장성, 범용적인 인터페이스, 컴포넌트의 독립적인 배포를 강조하며 응답 지연시간 감소, 보안 강화, 레거시 시스템의 캡슐화를 위한 중간 컴포넌트 역시 강조한다.

URI, URN, URL

  • RFC 3986
  • URI 형식 지정의 규칙
    • 슬래시(/)는 리소스 사이의 계층적 관계를 나타내는 데 사용
    • URI의 마지막에 슬래시가 포함되어서는 안된다.
    • 하이픈(-) 사용, _ 사용 x
    • 대소문자 구분하므로 소문자 사용 권장

URI 경로

표현설명비고

GET /cats 모든 고양이 컬렉션 명사로 명명
GET /cats/1 1번 고양이를 위한 하나의 문서 db의 행과 비슷. 하위 리소스를 가질 수 있음
GET /cats/1/kittens 1번 고양이의 모든 새끼 고양이들  
POST /cats/1/feed 1번 고양이에게 먹이 주기 컨트롤러: 하위 경로가 없는 URI의 마지막 부분, 동사 사용
POST /cats/1/feed?food=fish 1번 고양이에게 물고기를 먹이로 주기 컨트롤러의 매개변수
PUT /cats/2 2번 고양이 추가(새로운 URI 생성이 아닌 리소스 추가 저장) 컬렉션과 마찬가지로 명사로 명명

REST URI 디자인

  • DELETE /cats/1234: 좋은 예
  • GET /deleteCat/1234: 나쁜 예
  • POST /cats/1234/delete: 나쁜 예
  • HTTP 동사
    • GET / POST / PUT / DELETE / PATCH / HEAD / OPTIONS

응답코드

  • 요청의 성공이나 실패를 클라이언트에게 알려주기 위한 HTTP 응답 코드
  • 즉각적으로 요청의 상태를 알 수 있게 설계

나쁜 응답

POST /kittens RESPOSNE HTTP 200 OK { "status": 401, "statusMessage": "Bad Request" }

POST /kittens RESPOSNE HTTP 200 OK { "id": "123434jvjv4564", "name": "Fat Freddy's Cat" }

  • 좋은 응답은 HTTP 상태 코드를 문자 그대로 사용하는 것

실패 응답의 좋은 예

POST /kittens RESPONSE HTTP 400 BAD REQUEST { "errorMessage": "Name should be between 1 and 256 characters...." }

성공한 응답의 좋은 예:

POST /kittens RESPONSE HTTP 201 CREATED { "id": "123434jvjv4564", "name": "Fat Freddy's Cat" }

HTTP 상태 코드

  • 구글에 더 자세하게 나와있지만 간략하게 정리
  • 200 OK: 요청이 성공했음을 나타내는 일반적인 응답 코드
  • 201 Created(생성): 요청이 성공하고 새 엔티티가 생성된 경우의 응답
  • 204 No Content: 내용 없음. 클라이언트의 요청이 잘 처리되었지만 본문은 없음. DELETE 요청에 대한 응답이 될 수 있음
  • 3xx: 경로 재지정.
  • 4xx: 클라이언트 에러
    • 400 Bad Request / 401 Unauthorized / 404 Not Found / ...
  • 5xx: 서버 오류

mozilla 상태코드 참고 사이트

HTTP 헤더

  • 표준에 맞추면 모두에게 도움이 된다!
  • 표준 요청 헤더
    • 요청에 대한 메타 데이터 개념
    • 요청 및 API 응답에 대한 추가 정보 제공
  • Authorization - 문자열
    • 권한 부여: Authorization key 요청
    • 이런 표준 접근 방식을 따르면 클라이언트가 알아서 구현알 수 있다는데
    • 사실 이걸 어떻게 부여하는지는 잘 모르겠습니다!
  • Date
    • 요청의 타임스탬프
  • Accept - 콘텐츠 타입
    • application/xml
    • text/xml
    • application/json
  • Accept-Encoding - gzip, release
    • REST 엔드 포인트는 가능한 경우 gzip과 deflate 인코딩을 항상 지원해야 한다.
    • gzip 지원은 간단함: 표준 라이브러리의 일부인 compress/gzip 패키지 사용
    • 뉴욕타임즈 오픈소스
    • 비손실 압축을 위한 인코딩,,
  • 에러 리턴
    • API 사용자는 에러가 발생했을 때 여러 앤드 포인트에서 발생한 에러를 처리하는 하나의 코드를 작성할 수 있어야 하는데
    • 표준 에러 엔티티를 제공함으로써 클라이언트 또는 서버로 인한 에러가 발생할 때 클라이언트를 도와줄 수 있음
    • 마이크로소프트의 API 가이드라인 자료

API 버전 관리

  • 초기부텉 고려해야하는 사항, 피할 수 있으면 피하는 것이 좋다!
  • 버전 관리가 필요한 상황
    • 주요 변경 사항이 생기면 API 버전 번호를 증가시키는데 주요 변경사항은
      1. API나 API 매개 변수의 제거 또는 이름 변경
      2. API 매개 변수의 타입 변경(정수 -> 문자열)
      3. 응답 코드, 에러 코드 또는 실패 규약 변경
      4. 기존 API 의 동작 변경
  • 시맨틱 버전 관리
    • 메이저 버전과 마이너 버전: 1.0 에서 1은 메이저, .0은 마이너
    • 마이너의 변경은 클라이언트가 API와 상호작용하는 데 영향을 주지 않음
  • REST API의 버전 관리 형식

객체 타입 표준화

  • 클라이언트에서 객체를 쉽게 처리할 수 있도록 고려
  • JSON을 사용하는 경우 기본 타입으로 날짜 개념이 없다! --> ISO 표준을 사용하는 것이 도움이 된다
    • {"date": "2021-07-08T04:52:57Z"}
    • {"date": {"kind": "U", "value": 1625719977221}

API 문서화

  1. Swagger
  • YAML로 작성
  • 배책임님께서 이전에 소개해주신 API 문서 자동화 도구!
  1. API Blueprint
  • 마크다우능로 작성돼 중첩된 레이어를 다루는 것보다 좀 더 자연스럽게 문서 작성 가능
  1. RAML
  • RESTful API Modeling Language의 약자
  • YAML로 작성

API 문서 자동화 오픈소스(https://github.com/swaggo/swag)

여러가지 참고 링크

728x90
반응형
728x90
반응형

변수 이름이 'type' 이어야 하는 경우가 생겼다.

Json 파싱 해야하는데 key 이름이 'type'이다. 난감..

스칼라는 대소문자를 구분하니 'type'의 t라도 대문자였으면 문제가 없는데...

알아보니 backticks(`) 를 쓰면 된다!

 

아래와 같이 사용하면 된다는 것!

var `type` = 10


case class Policy (
		Name:		String,
                `type`: 	String,
                Versions: 	Int )
728x90
반응형
728x90
반응형

이젠 내 맘대로 하는 주간 회고 ㅋㅋㅋㅋ

 

지난주 있던 일과 얼마 되지 않은 이번 주 있던 일 정리!

술을 정말 안마시는 나인데 지난주 월, 수, 금 술을 마시게 되었다 ㅋㅋㅋ 그래서 그런가 배탈로 아직도 고생 중이다...

그리고 그 와중에 클라이밍 못 잃어 평일 1회 주말 1회 다녀왔다. 이것이 클창의 

 

술 먹은 기록

월요일 회사 근처 피자집! 그리고 이동해서 마신 맥주

월요일 갑자기 피자가 땡겨 피자를 먹으러 갔다. 피자집에서 맥주 엄청 마시고 자리 옮겨서 소맥 말아먹더니 

집 가는 길에 공원에서 아이스크림도 먹고 턱걸이도 했다 ㅋㅋㅋㅋㅋㅋㅋㅋ이게 무슨 조합이야

나름 재밌었으며.. 울 책임님과,, 매니저님들과 친해지는 기회가 되었다. 그런데 너무 힘들긴 했다.

 

동기사랑 나라사랑

수요일 동기들이랑 팀 비 미리 긁어놓은 고오-급진 레스토랑에 가서 칼질 좀 해줬다. 와인도 마셔주고 저 아래 연탄같이 생긴 건 당근이다 ㅋㅋㅋㅋㅋㅋㅋ 당근을 먹었다.

팀 비로 간 곳이라 갔지 내 돈 내고는 잘 안 갈듯.. ㅎㅎ

그리고 2차로 간 '도연하다'라는 한식 술집(?) 맛있었다. 여러 전통주를 팔고 파전이 맛있다는 그곳!

다음날 오전 스터디만 아니었으면 더 마시는데 그러지 못해 정말 아쉬웠다...

 

금요일은 영어모임 대학생 president와 스캇이랑 만나서 저녁 먹고 평범한 펍을 가려고 했는데 ㅋㅋㅋㅋ 강남역에서 어떤 외국인이 완전 찰진 발음으로 쓰카앗? 하더니 갑자기 그 사람들을 따라 완전 힙한 펍을 가게 되었다.

그런 펍 오랜만이었다.  정신없어서 사진도 못 찍고 마시다가 집에 갔는데 오랜만에 활기차게(?) 논 느낌이라 좋았다 ㅋㅋㅋㅋ 

주 3회였지만 나름 과음하지 않고 마셔서 적당히 재미있는 한 주였다.


갱얼쥐

왜 이렇게 귀엽니 갱얼쥐야 ㅠㅠㅠ

언니 부부의 여행으로 우리 집에 오게 된 갱얼쥐,, 행복했다 갱얼쥐야,,

갱얼쥐 덕분에 오후에 산책도 하고 매일 알러지 약을 먹긴 했지만 정말 행복했다,,  존재 자체만으로 귀여운 갱얼쥐야,, 우리 집에 또 와줘,,,


소윤이

일요일에는 소윤이를 만났다. 1월에 힘든 일이 많았는데 아직 누구에게 공유하고 싶지는 않았다. 

이번에 소윤이에게 말해줬다. 소윤이는 채고다,,

독서토론 이야기도 하고 앞으로 무엇을 할지, 내 상황에서 내가 무엇을 해야 할 지, 요즘 이슈들을 얘기했다.

소윤이가 맛있는 것도 사줬다! 가볍게 먹고 싶어 찾아간 인계동 우주 샐러드! 소스가 맛있어서 괜찮았다 ㅎㅎ

집에 가는 길에 꽃도 봤다 ㅎㅎ

 

근데 샐러드 먹고 간 카페에서 마신 커피가 문제였는지 머리도 아프고 밤에 잠이 잘 안 왔다 흑흑,,


클창은 참지 않아

토요일 클라이밍 6시간 태워주고,, 못 푼 문제가 있었다. 아마 그래서 일요일까지 잠이 안 왔나 보다.

당장 월요일에 퇴근하고 바로 클밍하러 갔다.

처음 몇 시도에서 역시 또 실패하더니 결국에는 '내가 해냄!'

평일 치고 5 new 퍼랭이 + 2 원래 하던 퍼랭이 깨기 하고 왔으니 만족스러운 결과다.

요즘은 퍼랭이들을 깨고 있는데 이제 퍼랭이들은 2트 3트정도 하면 깨는 걸 봐서 진정한 파클러라고 할 수 있겠다. 

내일은 신발을 사러 갈 것이다. 신발이 내가 사러 가는 곳에 있을지는 모르겠지만 나도 새 신 신고 더 강려크 해질 것이야!!!

ㅋㅋㅋㅋㅋㅋㅋㅋ

 

남은 목요일 금요일은 내가 좋아하는 언니들과 약속이 있다 ㅎㅅㅎ

언니들 만나면서 힐링하고 토요일에 또 클밍하러 가야지(기를 모아서 가야 함)

728x90
반응형

+ Recent posts