VS Code에 console.log shortcut 추가하기

Background

처음에는 emmet 방식처럼 간략한 텍스트를 입력하고 tab을 누르면 자동완성 되는 방향으로 했는데 반응이 너무 느려서 그냥 명령어 + 탭으로 보이는 경우가 왕왕 있었다. 그래서 스니펫 말고 키보드 쇼트컷 방식을 찾아봤다.

How to

  1. Code > Preferences > Keyboard Shortcuts를 들어간다

2. 상단의 ‘keybindings.json’ 클릭

3. 오른쪽의 Custom 영역에 원하는 키로 덮어쓴다. 나는 console.log("변수이름", 변수")` 식으로 자주 사용해서 snippet에 그렇게 입력해주고 ctrl+shift+l로 단축키를 엮어줬다.

// Place your key bindings in this file to overwrite the defaults
[
    {
        "key": "ctrl+shift+l",
        "command": "editor.action.insertSnippet",
        "when": "editorTextFocus",
        "args": {
            "snippet": "console.log('$1', $2);$0"
        }
    }
]

4. 에디터에서 단축키를 눌러보면 잘 작동하는걸 볼 수 있다. 위에서 $1, $2로 원하는 위치에 숫자를 적어주면 그 곳으로 자동으로 포커스가 이동한다. $1에 원하는 텍스트를 입력하고 tab을 치면 $2로 넘어간다. 끝나면 $0으로 간다.

5. 즐코딩!

+ 단축키 없이 snippet 만들기

Preferences > User Snippets > javascript.json에 아래와 같은 코드를 넣는다

"Print to console": {
		"prefix": "log",
		"body": [
			"console.log('$1');",
			"$2"
		],
		"description": "Log output to console"
	}

2018년 회고

(Header illustration credit by YoungJin Lee)


2017년이라고 타이핑 하는것도 적응 못했는데 이제 2018년이 끝난다니.
올해의 10가지 꼭지만 간단하게 적어보려고 한다. 가볍게 몸무게 재는 것처럼, 마일스톤식의 기록!
(몸무게 재는 것은 가벼운게 아닌가)

1. 2018년 가장 잘 한 것: 복싱

복싱을 시작했다. 2월 말부터 했으니 이제 10개월째다.
정말 재미있어서 억울하기까지 하다. 고등학교때부터 했다면 얼마나 좋았을까? 라는 생각이 스쳐지나갈 정도.
처음에는 쨉 쨉 원투 칠 때 몸이 팔랑팔랑 흔들렸는데 이제는 꽤 코어를 잡고 퍽/퍽/ 친다. 저번에는 관장님이랑 같이 연속동작 시범 보였는데 고딩즈가 “와아악!! 졸라 빠르다! 개 잘한다!!” 해서 흥분해서 무리하다가 다음날 근육통으로 고생했다.
꾸준히 해서 단증을 따고 싶다. 아직 스파링은 시도조차 못 했지만… 과연 누군가를 힘껏 때릴 수 있을까?

2. 가장 큰 변화: 이직

Illustration credit by YoungJin Lee

스마트스터디에서 ZEPL로 이직했다. 정말 큰 변화다. 사원 수는 전 회사의 1/10도 안 되는 작은 회사지만 여기는 기술 회사라는 것이 가장 큰 차이점이다. 만드는 서비스를 간단하게 설명하면 ‘데이터 분석 되는 구글 독스’다. 이것의 프런트엔드를 만들려면 상태관리를 오지게 해야한다. 처음에는 코드 보고 토했는데 이제 조금 적응해서 밥값하려는 중이다.
특이한 점은, 회사에서 내가 프런트엔드 엔지니어 외에 커뮤니티 매니징을 겸하고 있다는 것이다. 그래서 만든 커뮤니티가 Little Big Data랍니다. 커뮤니티 매니징이 내 몸값을 올려줄 줄은 상상도 못했었다. 회사가 싫어하는 내 투잡인줄만 알았는데… 정말 신기하다.

3. 간절히 공부한 것: 영어

ZEPL의 공용어는 영어다. 직원의 반이 외국인이다, 7개국 정도려나. 면접 볼때 가장 떨렸다. 나는 23살때 처음으로 여권을 발급받은 토종 한국인이다. 영어를 좋아하긴 하지만 회화는 다른 일이니까. 그래도 어찌저찌 입사하고 매일 영어 읽고 쓰고 하니까 조금씩 늘더라. 처음엔 전화영어 3개월을 하다가 회사에서 대화하는 것과 크게 차이 없어서 끊었다. 아직 초딩 영어지만 외국 나가서 친구 사귈 수 있으면 장족의 발전을 한거지 뭐. 넷플릭스 영자막으로 보는건 기효님 영향을 많이 받았다. 같이 영화 볼 때 한글 자막 틀면 싫어한다. 이제는 한술 더 떠서 영어자막도 없애자고 한다. 너무한다.
스피킹과 발음에 도움이 많이 된 건 팟캐스트 ‘대박 영어회화표현 405’이다. 걸어다닐 때 들으며 섀도잉(그림자처럼 따라하기)하면 시간도 잘 가고 재밌다. 팝송 녹음하는것도 발음교정에 도움된다. 당장 가수 발음이랑 다르니 몇번이고 다시 녹음하게 된다.

4. 새로 생긴 취미: 음료 탐구

자동 대체 텍스트를 사용할 수 없습니다.

스쿠버다이빙을 배울 때 인상깊었던 말이 있다.
> 바다를 탐험할 수 있다는 건, 지구의 반 이상을 더 여행할 수 있는 것이다. 세계가 넓어지는 것이다.
음료의 맛을 구별할 수 있는 것이 이와 비슷하다. 작년의 나는 차를 아예 몰라, 종류가 다른 티 5잔을 줘도 “이건 좀 더 쓰네.. 이건 향기가 좋네..” 정도로만 구분했다.
요즘은 매일 차를 마시고, 음료 일기를 쓴다(https://www.instagram.com/keep.this.drinking.feeling/). 조금씩 구분되는 맛이 신기하고 즐겁다. 웹툰 ‘차차차’도 도움이 많이 되었다.
차를 마시는 시간은 커피를 마시는 시간과 조금 결이 다른 느낌이 든다. 이 맛이 무엇일까 곰곰이 생각하며 혓바닥에 집중하면 현재를 살고, 나를 돌아보게 된다. 나의 혓바닥을 돌아보는건가.

5. 세계는 넓고 재밌구나

이미지: 사람 1명 이상, 사람들이 앉아 있는 중 실내

위에 적었듯이, 나는 23세에 처음 여권을 발급받았다. 그 전에는 뭔가 해외에 나가는건 나랑은 조금 거리가 있는 일이라 생각했다. 그런데 이상하게 이번 년도에 외국을 많이 갔다.
1. 세부: 스쿠버다이빙 (백수기간)
2. 샌프란시스코: Facebook F8, 해커톤
3. 도쿄: 후지락 페스티벌
4. 싱가포르: Facebook APAC Summit
5. 중국: China Korea Hackathon
6. 발리: 서핑 여행

한국과 다른 풍경을 보는것도 재밌었지만, 무엇보다 좋은건 다른 나라 친구를 사귀는 것이었다. 다른 문화의 다른 외모의 다른 성격의 사람과 위화감 없이 왈랄라 이야기를 나누는건 생각을 넓혀주는 것과 동시에 내 코어를 기른다. 복싱처럼 코어 기른다. 복싱 하고싶다.
이렇게 다양한 친구를 조건 없이 사귈 수 있게 해 준 건 Facebook Developer Circle 덕분이다. 참 고맙고 건강한 조직.

6. 이상한 깨달음: 업무 외 시간에 업무를 하지 말자

이건 10월쯤에 절절하게 느꼈던 것 같다. 업무 외 시간에 업무를 하지 말자.
회사에서 리모트 및 자율출퇴근을 하니 업무와 삶의 경계가 모호해지는 면이 있었다. 매일 아침 스탠드업 회의(화상)로 일정공유를 하니 매일 매일 결과물이 있어야 한다는 압박감이 있었다. 회사에 온지 이제 6개월정도 되어서 잘 하는걸 보여줘야겠다는 생각도 컸고.
침대에서도 일 하고 집 앞 카페에서, 친구와 함께 코딩하는게 참 자유롭고 행복하고 일하는 느낌이 안든다고 생각했는데. 돌아보니 일주일을 새벽코딩했더라. 토요일에 잔업한건 한달이 되어가고.
돌아보니 생산적 개발은 업무시간에 80% 이상 몰려있고, 업무 외 시간에는 짜치는 일이나 버그를 잡고 있었다. 가시적인 ‘성과’가 아닌 일들. 그리고 내 성장곡선에 영향이 미미한 것들. 업무 외의 시간은 잔업보다는 나를 위해 쓰는게 나 뿐만 아니라 회사에게도 도움될 것이다. 바부!

7. 커뮤니티는 나의 Vocation

  • 컨퍼런스 개최 5회 (LBD, Facebook Build Day, Planet Hackathon, 데이터야놀자, Study Circle)
  • 세미나 발표 5회 (F8 extended, Grow with the community, 삼성 소프트웨어 페어, KOSSCON)
  • 교육 기관 강의 2회 (한이음, 국민대학교)

오픈프론티어 발표하는 김에 올 해 커뮤니티 활동을 얼마나 했는지 세어봤는데, 월 1회 했더라. 정말 꾸준히 했다. 나는 참 커뮤니티 활동이 재밌다. 천직이란 생각이 든다.

8. 이걸 사서 삶의 질이 바뀌었습니다: 생리컵

의료용 실리콘으로 만든 반영구 컵. 생리컵은 혁명이다. 생리의 고통이 1/2로 줄었다. 어찌 보면 그 이하? 훨씬 산뜻해진다. 다만 처음에 갈땐 피의 지옥을 볼 것이야. 그래도 요령 생기면 2분내로 깔끔하게 슥삭이다.
내 골든컵(본인에게 맞는 컵)은 메루나컵 종 모양이다. 처음에 산 밸브형은 스치기만 해도 아팠다. 그래도 생리컵 포기하지 않고 다른 모양으로 직구를 했던게 신의 한수였다. 가히 올해의 Top 1 구매라고 할 수 있다.
제목에 드립치고 싶었는데 참았다.

9. 이것만은 안 할거야 했는데 한 것: 집필

자동 대체 텍스트를 사용할 수 없습니다.

나는 글 쓰는건 좋은데 글 쓰는건 싫어한다. 글 쓰기 자체는 좋은데, 누가 시켜서 마감일 내에 쓰는것이 싫다는 말이다.
그래서 기존의 집필 제안들은 모두 거절할 수 밖에 없었다. 하지만 지난 4월, 나는 계약서를 쓰고야 말았다. 이 주제, Git은 내가 어느 누구보다 잘 설명할 수 있다는 생각이 들었기 때문이다.
구성도 아주 맘에 든다. 1부는 GUI로 감 잡기를 내가 집필하고, 2부는 CLI로 마스터하는걸 정교수님이 집필해주신다.
다만 내가 너무 느리게 써서 편집자님께 죄송한 마음뿐이다. 그래도 비쥬얼적이게 제대로 이해 쏙쏙 되게 설명했다. Git책에 한 획을 긋고싶다.

10. 외모적 변화: 안녕 눈화장

어제 호텔에서 사우나 끝나고 엄마가 말했다. 밖에 나가기 싫다고, 화장 안해서 쪽팔린다고. 화장을 해야지 밖을 나갈 수 있다는건 무엇을 시사하는걸까.
눈화장을 안 하기 시작했다. 복싱할 때 지우기 귀찮았던게 계기였다. 작년에는 아이라이너를 안 그렸을 때 ‘음 오늘은 눈화장을 안 했군… 부끄럽군’ 했던 것 같다. 파운데이션에 립스틱 바르는건 그리 귀찮지 않은 것 같은데, 이것도 벗어나면 더 편하려나. 남자가 립스틱 안 발랐다고 어디 아프냐고 묻진 않잖아.


2019년에는…

생각보다 글이 길어졌네. 역시 나는 글 쓰는걸 좋아한다. 근데 마감이 있는건 싫어!!! 집필 싫어!!!

내년에 하고 싶은 몇 가지 계획이 있다.

  1. 게임에 취미를 붙여보기 – 콘솔 게임: 젤다, 오버쿡드 등
  2. 책 읽기 – 리디북스 정기결제 해두고 돈만 술술
  3. 영어공부 개인프로젝트 앱을 만들어야지

사실 치열하게 살고싶은 마음은 좀 죽었다. 예전엔 더 이것저것 하고 싶었는데.
그래도 더 다양한 즐거움을 변태처럼 즐겨보고 싶은 욕심은 크다. 더 많고 맛있는 술의 세계, 차의 세계, 게임의 세계를 느껴보고 싶네. 사랑하는 사람들과 오손도손 복작복작.

lodash fp로 함수형 프로그래밍 하기

왜 함수형으로 코드를 쓰는가

  • Explicit한 코드를 Implicit(암묵적)하게 바꾼다는 이점
  • Explicit하게 짠 제곱함수
function squareAll(numbers) {
    var squared = [];
    for (var i=0; i < numbers.length; i++) {
        squared.push(numbers[i] * numbers[i]);
    }
    return squared;
}

squareAll([1, 2, 3, 4]); // [1, 4, 9, 16]
  • Implicit하게 짠 제곱함수.
function squareAll(numbers) {
    return numbers.map(num => num * num);
}
squareAll([1, 2, 3, 4]);
- 루프를 도는것과 새로운 배열을 만드는걸 `map`메서드에 위임시켰다.
- 읽기 쉬워지고 에러를 낼 가능성이 적어짐.
- 하지만 numbers배열에서 이를 불러내야 함.

– lodash fp로 조금 더 Implicit하게 짠 제곱함수

const map = require('lodash/fp/map');

const squareAll = map(num => num * num); // array.map으로 접근하지 않고 바로 map을 부름. 그리고 함수에 arguments도 없음(커리되어서)

squareAll([1, 2, 3, 4]);
  • lodash/fp의 함수들은 기본적으로 커리되어있다.
  • 그래서 기존에 익숙했던 map(array, function)이 아닌 map(function, array) 순이라고 생각하면 된다.
  • 더이상 numbers argument를 받지 않아도 되며, 이는 point-free프로그래밍의 컨셉이다.
  • 또다른 이점들은 적은 라인의 코드로 읽기도 좋으며, 테스트랑 유지보수 하기도 좋다는 것이다.

커링(Currying)

  • 어떤 함수가 특정한 개수의 인자를 기대하는데, 이보다 적게 인자를 넣었을 때 남은 인자들을 새로운 함수로 받을 수 있는것을 커링(Currying)이라 한다.
  • 모든 인자들이 전달되었을 때 원하는 결과가 반환된다.
const curry = require("lodash/fp/curry");

const sayMessageTo = curry((msg, name) => `${message}, ${name}!`);

sayMessageTo("Hello", "Yurim"); // 원하는 결과 바로 반환. "Hello, Yurim!"
const sayBye = sayMessageTo("Bye"); // message를 받았으니, name을 받을 수 있는 새로운 함수 반환
sayBye("Josh"); // 모든 인자 받았다. "Bye, Josh!"
  • 아까 했던 map도 map(num =&gt; num * num, [1,2,3,4])처럼 한번에 호출할 수 있음

함수 조립하기 (Compose functions)

  • 함수를 조립한다는 컨셉은 작은 함수들로 큰 함수를 만든다는 것이다. 각 함수는 리턴된 값을 다음 함수에 넘긴다.
const flow = require('lodash/fp/flow');
const escape = require('lodash/fp/escape');
const trim = require('lodash/fp/trim');

const sanitise = flow(escape, trim);

sanitise('    <html>    '); // <html>
  • 암묵적이고 선언적으로 함수 짜기. 어떻게 되어야하는지 코드를 짜는게 아니고 어떤 일이 일어나야하는지 선언하기.
  • lodash/fp의 함수들은 기본적으로 커리가 되어있어서 더 적은 인자를 넘기면 함수를 돌려준다.
  • composition이 가능한 함수들은 하나의 argument를 넘기고 하나의 value를 다음 함수로 넘기는 형태여야 한다. 맨 처음 함수는 하나 이상의 argument를 넘길 수 있지만 single value를 리턴해야 하는건 동일하다.

Point-free

  • 포인트 프리 스타일(Tacit이라고도 부름) 프로그래밍은 함수가 그들이 수행해야 하는 arguments를 명시하지 않는 패러다임이다.
// Before
function isSuccess(response) {
  if (response.status === 200) {return true;}
}
isSuccess(response);

// After
const isSuccess = flow(get('status'), isEqual(200));
isSuccess(response);

순수 함수(Pure functions)

  • 외부 스코프에 의존이 없는 함수. 넘긴 인자에만 영향받고 이를 변형하면 안되며 새로운 객체를 넘겨야 한다.

Refer

https://simonsmith.io/dipping-a-toe-into-functional-js-with-lodash-fp/

[Git] Pull Request를 보내기 전에, Rebase를 해야 할까요 혹은 merge commit을 만들어야 할까요?

Rebase vs Merge commit

목적: PR을 보내기 전에 내가 보낼 브랜치가 master와 fast-forward(컨플릭트 없이 바로 머지될 수 있는 상태)상태가 되도록 만든다.

그런데 매번 이렇게 할 필요는 없고,
1. PR을 보낼 브랜치가 master보다 너무 옛날 상태일때나
2. GitHub에서 PR을 보냈더니 ‘merge conflict warning’이 페이지에서 보일 때 (같은 코드가 고쳐졌을때 자동으로 보임)
만 하면 된다.

방법 1. (내 브랜치에 먼저 머지 후 풀리퀘)

  • master의 최신 상태를 내 브랜치에 merge시킨다.
  • master와 내가 똑같은 파일을 고쳤다면 conflict가 날 것이다. 그럼 해결한다.
  • 해결해서 만들어진 merge commit을 push한다 (merge commit이 새로 하나 생김)
  • 장점: 한 번의 ‘merge’만으로 쉽게 해결할 수 있다.
  • 단점: merge commit이 생겨서 깔끔하지 않다. 코드 수정한 의미있는 커밋만 보고싶을텐데 말이다.

방법 2. (리베이스 후 풀리퀘)

  • master의 최신 상태를 base로 해서 내 브랜치를 rebase한다.
  • rebase의 원리는, 내가 원하는 커밋을 base로 해서 내 브랜치가 마치 그 커밋에서 딴 것처럼 기록을 조작하는 것이다.
  • 내부에서 돌아가는 방식은, 내가 원래 딴 커밋에서부터 내가 목표하는 base커밋까지 하나씩 옮겨가면서 새로 커밋을 하는것이다.
(원래상태)

[3시커밋 --- 4시커밋 --- 5시커밋] 
  ㄴ--- 내브랜치커밋

(5시커밋을 베이스로 리베이스를 실행한다)
[3시커밋 --- 4시커밋 --- 5시커밋] 
              ㄴ--- 내브랜치커밋 // 한 커밋씩 옮겨가며 commit한다. 컨플릭이 나면 고쳐준다.

(Continue rebase를 누른다)
[3시커밋 --- 4시커밋 --- 5시커밋] 
                        ㄴ--- 내브랜치커밋 // 목표하는 5시커밋까지 왔다. 컨플릭이 나면 고쳐준다

  • 모두 완료되었으니 push를 해야하는데, 히스토리를 조작하는 위험한 작업이므로 force옵션을 넣어 push해야한다.
  • 결과: 내브랜치커밋이 master의 최신 상태인 5시커밋에서 딴 것처럼 히스토리가 조작된다. 그래서 내 브랜치에서 master로 Pull Request를 보냈을 때 fast-forward(컨플릭트 없이 바로 머지할 수 있는) 상태가 된다.
  • 장점: merge commit없이 깔끔한 커밋 히스토리를 만들 수 있다.
  • 단점: 만약 중간에 코드 컨플릭트가 나면 그 사이에 있는 커밋들 모두에서 컨플릭트를 수정해줘야 할 수 있다. 귀찮다.

언제 무엇을 써야하나?

  • Type 0. master에서 딴지 그리 오래 되지 않은 브랜치: 그냥 PR을 보내본다. conflict warning이 보이면 그 때 2번이나 3번 방법을 쓴다
  • Type 1. 내 브랜치에 커밋이 엄청 많다. 그리고 master랑 비슷한 코드를 만져서 컨플릭트가 날 가능성이 높다: 방법 1(내 브랜치에 먼저 머지 후 풀리퀘)을 사용한다.
  • Type 2. 내 브랜치에 커밋이 그리 많진 않다. 깔끔한 커밋 히스토리를 남기고 싶다(오픈소스 등): 방법 2(rebase)를 사용한다.

ZEPL(Apache Zeppelin) 노트북 Ultimate Chart Parameter별 안내

Screen Shot 2018-10-07 at 8.10.16 PM

 

Chart name Category Option
Ultimate line chart
Charts
line(shared)
dashed(shared)
step(shared)
no-group
Available Columns
xAxis
yAxis
Category
Parameters
bulletType
bulletSize
hideBulletsCount
yAxisValueFormat
yAxisValuePrecision
yAxisValueInside
showXAxisScroll
showYAxisScroll
chartMarginLeft
chartMarginRight
showLegend
legendValueText
legendPosition
xAxisPosition
yAxisPosition
rotateXAxisLabel
rotateYAxisLabel
balloonText
balloonType
yAxisGuides
trendLines
mainTitle
subTitle
xAxisName
yAxisName
xAxisUnit
yAxisUnit
logarithmicYAxis
inverted
graphType
dateFormat
dashLength

취향 알아가기

취향을 찾으면 인생이 한껏 더 풍요로워진다.

글로서 make it clear 하게 해볼까

음악

(호)

  • 멜로디가 있는 자유로운 재즈
  • 데카당 – A
  • 클래지콰이
  • 단편선과 선원들 동행 9분 13초의 라이브
  • 3호선버터플라이의 톤 스튜디오 라이브
  • 금능에서 들은 검정치마의 Everything
  • 브루노마스의 귀여운 그루브의 뮤직비디오들
  • Khruangbin의 50분짜리 피치포크 라이브 영상
  • Wouter Hamel의 노래를 breezy한 날씨에 듣기

(불호)

  • 즉흥 재즈
  • 기승전결이 명확한 노래 (e.g. 윤종신, 백지영의 노래)
  • 나는 순수하고 귀엽고 유니크하다는 자기애 넘치는 노래 (e.g. 악동뮤지션의 노래)

시간을 보내는 방법

(호)

  • 맛있는 곳을 찾아 홀로 밥 먹기
  • 보드게임
  • 격한 물놀이(서핑, 스쿠버다이빙)

날씨와 풍경

(호)

  • 더운 날씨에 민소매 입기
  • 사람 없는 바다
  • 파란 시간에 음악들으며 걷기
  • 탁 트인 장소(옥상, 바다)에서 노을 보기. 옆에 있는 사람을 조심해야 한다 사랑에 빠지므로.

(불호)

  • 시티뷰, 야경

여행 스타일

(호)

  • 대중교통 없이 걷고 걷는 여행. 걷기 좋은 도로
  • 뚜렷한 액티비티의 목적: 서핑 / 스쿠버다이빙
  • 바다 보며 코딩
  • 지나가다 보이는 로컬식당 구글맵 정보 한 번 스캐닝하고 들어가기
  • 돈 적게 쓰기

(불호)

  • 사람이 많은 장소
  • 진부한 디자인/컨셉
  • 이동 시간이 긴 것
  • 돈을 많이 쓰는 것
  • 로컬음식이 아닌 것을 먹기

(호)

  • 천명관, 고래
  • 니코스 카잔차키스, 그리스인 조르바
  • 김훈, 남한산성 (아 내가 좋아하는 책 다 마초가 써서 짜증)
  • 김소연, 마음산책

만화책

(호)

  • 20세기 소년
  • 엔젤전설 / 클레이모어

영화

(호)

  • 톰 크루즈가 나오는 영화 (e.g. 바닐라 스카이, 제리 맥과이어, 마이너리티 리포트)
  • 잭 블랙이 나오는 영화 (e.g. 테네이셔스 디, 스쿨 오브 락)
  • 주성치가 나오는 영화 (e.g. 선리기연, 당백호점추향, 파괴지왕)

(불호)

  • 박찬욱 감독 영화를 뺀 대부분의 한국 영화
  • 세 얼간이

음료

(호)

  • 루이보스 티
  • 아이스 라떼
  • 맥주
  • 사케, 고량주, 청주
  • 산미가 약하고 진한 아메리카노

(불호)

  • 와인 (알고싶지만 모르겠음)
  • 쓴 홍차
  • 봄베이 사파이어, 단 칵테일

여행지

(호)

  • 제주도 협재의 조용한 만화 게스트하우스와 바다
  • 치앙마이의 걷기 좋은 거리
  • 발리 아야나 리조트와 서핑
  • 로컬 바에서 칵테일 이것저것 시켜먹기
  • 내 든든한 여행메이트와 함께 간 미국여행

(불호)

  • 지나다닐때 뚫어져라 쳐다보던 세부 거리
  • 한인들이 많았던 사이판
  • 차가 막히고 어지럽고 다 똑같은 물품을 파는 발리 스미냑과 쿠타

 

[치앙마이 노마드 Day 9] 산 속에 숨겨진 사원, Wat Pha Lat

IMG_1656.jpg

오늘은 9시부터 아침을 시작했다. 역시 싱글룸이 아침에 씻고 준비하기 편해.

아점으론 올드시티에서 유명한 Khao Soi Khun Yai를 갔다. 여기도 맛있지만 역시 카오소이메사이가 짱이다. 거길 처음 먹어서 그럴까? 내일 먹어야지.

IMG_1681.jpg

점심으로는 7일간 벼르던 로티를 먹었다. 약간 캔모아 느낌이었다. 토스트에 생크림 발라 먹는 느낌. 저 안에 있는 노란거는 쫀디기같은 맛이다. 더 맛있는 로티 먹어보고 싶네..

IMG_1680.jpg

우유 귀여워서 먹어봤다. 왠지 모르게 두리안의 맛이 난다. 진해서 그럴까?

IMG_1669.jpg

IMG_1675.jpg

마야몰 갔다가 선글라스 구경하고 왔다. 이 두개 진짜 사고싶었는데 참았따.

IMG_1684.jpg

사실 오늘 도이수텝을 갈까, 반캇왕을 갈까(두개 다 치앙마이의 2대 관광지)를 고민했었다. 근데 사실 도이수텝은 별로 끌리지 않았고, 반캇왕은 규모가 작다고 했다(둘다 오래오래 차 타고 가야함). 그러다가 치앙마이 카페에서 만난, 나에게 바트를 판 분께서 자기는 여기가 참 좋았다고 소개해주셨다. Wat fa lat이라는 사원인데, 숲 속으로 30분정도 하이킹을 하면 갑자기 산 속에서 사원이 폭포와 함께 짠~ 나타난다고 했다. 사람도 거의 없고! H언니와 나는 둘다 반해서 바로 고고싱 했다. 길 앞까지만 우버로 20분간 가면 된다는 것도 메리트였다.

 

IMG_1685.jpg

지도! 우리는 폭포가 보이는 왼쪽 길을 택했다. 사원까지 가고 좀 오래 더 위로 걸으면 도이수텝도 갈 수 있단다.

IMG_1688.jpgIMG_1692.jpg

고즈넉했다. 천천히 걸었다. 나비가 많았다. 걷는데 특이하게 생긴 나비가 계속 팔랑팔랑 날아다녔다.

 

Yoyo

IMG_1702.jpg

30분가량 등산(길이 꼬불꼬불하고 돌이 많고 꽤 경사가 높다)을 하니 불상이 나오기 시작한다.

IMG_1741.jpg

IMG_1710.jpg

도착했다! 민소매와 짧은하의를 입으면 들어가지 못한다.

IMG_1750.jpg

물이 졸졸졸IMG_1752.jpg

룰루

 

IMG_1735.jpg

IMG_1740.jpg

궁뎅이

 

자는 멍멍이

 

 

폭포를 가운데 끼고 사원을 짓다니…

 

폭포 옆 돌에 누워서 하늘을 보며 음악을 들었다. 사원을 담아갈 노래를 찾고 싶었다. 이것저것 듣다 맘에 안들어서 결국 검정치마의 ‘Everything’을 틀었다. 거긴 이미 협재바다가 담겨있는데.

가사를 들으니, 신기하게 바로 또 눈물이 나더라. 협재에서도 생각없이 잘 지내다가, 이 노래로 처음 눈물이 나왔는데. 이 노래엔 좋아하는 장소가 2곳이나 담겨있네.

 

내려오는 길에는, 마야몰에서 69바트에 사온 과일을 먹었다

Everything가사 생각하니 또 맘이 찡하니 아파오네.

항상 무한한 사랑을 주는 사람이 떠올랐다.
폰에 내 이상한 사진만 저장하는거 같길래 “내 예쁜 순간은 폰에 저장 안했죠?” 물으니
예쁜 네가 보고싶을땐 네 인스타를 보고, 행복해지고 싶을 때에는 폰 앨범을 본단다.

내가 굳은 심지를 가질 수 있도록 도와주는 일등공신. 오늘도 감사해요

감성적인 말 써서 더 덧붙이는게 좀 민망한데 그래도 써놔야지.
오늘도 족발덮밥 먹으러 와로롯 마켓까지 썽태우 20분간 타고 갔는데 오늘은 야시장이 안 서더라! 미련이 남아서 30분동안 서성이다가 맛있게 먹었던 동글뱅이 순대를 샀다. 이번엔 2개!(해봤자 20바트임)

 

헐… 근데 너무너무 너무너무 너무 맛있었다. 카오소이 제치고 치앙마이에서 먹은 음식 TOP2가 될 지경이었다. 따뜻할때 먹으니 미쳤네. 순대인데… 음 찹쌀이 가득 든 곱창 맛?

그리고 20바트치만 샀는데도 양이 굉장히 많았고 나중 가서는 배가 터졌다. 배불러서 더 못 먹는게 한스러웠다. 계속 이 맛을 뜨거울 때 느끼고 싶었다.

내일 또사먹어야지…. 하…. 사랑해 순대의탈을쓴곱창아