728x90
반응형

 

 

 

 

HARBS LUMINE Yurakucho

 

 

 

위치: 일본 〒100-0006 Tokyo, Chiyoda City, Yurakucho, 2 Chome−5−1 ルミネ1 2F ルミネ有楽町店

영업시간: 11:00 - 21:00

구글평점: 4.2

웹사이트: https://www.harbs.co.jp/

 

HARBS(ハーブス)

ハーブスは、ハンドメイドとフレッシュネスを追求したカフェです。創業当時より私たちが忘れずに胸に抱き続けてきたもの、それは心の底から「おいしい!」とお客様に感じていただきた

www.harbs.co.jp


 

HARBS는 체인점인데 우리가 간 곳은 긴자 루미네(lumine) 2층에 있는 곳이었다.

 

 

진열장에 맛있어보이는 케이크가 잔뜩 있었다.

 

 

 

인기가 많은 곳이라 대기가 많았다.

30분 정도 기다렸다가 들어간 것 같다.

 

 

카페 이용시간은 2시간이었다.

 

 

아메리카노와 케이크를 주문했다.

 

 

일본 커피는 정말정말 진했다.

그리고 얼음이 적다.

너무 써서 물을 조금 타서 마시니 딱 적당하고 좋았다.

 

 

케이크는 Mille Crepes로 주문했다.

 

 

베리류 과일이 들어간게 아닌데도 정말 맛있었다.

 

 

느끼하지 않고

과일이 허여멀건 한데도

빵이랑 잘 어울렸다.

728x90
반응형
728x90
반응형

 

큐슈장가라 라멘 긴자점  (Kyūshū Jangara Ginza)

 

 

위치: 6 Chome-12-17 Ginza, Chuo City, Tokyo 104-0061 일본

영업시간: 11:00 - 21:45

구글평점: 4.1

웹사이트: https://kyushujangara.co.jp/shops/ginza/

 

銀座店 | 九州じゃんがら

GINZA6-12-17 Ginza, Chuo, TOKYO

kyushujangara.co.jp


 

도쿄가 정말 물가가 비쌌는데

그 중에서도 비싼 긴자쪽에서 가성비있게 식사 한 곳이다.

 

바로바로 라멘!

가게 앞에 길게 늘어선 줄이

맛집이구나 실감하게 했다.

 

줄서는 방법이 가게 앞에 붙어 있음

 

미리 메뉴판을 받아서 메뉴를 고를 수 있었다.

주문도 밖에서 미리 했다.

 

 

가게 안이 정말 좁아서

유모차를 가지고 들어갈 수 없었다.

애기 의자를 부탁드리면 3인이 되서 더 순번이 뒤로 밀릴 것 같아서

애기 의자 필요없고

애기 앉고 먹일테니 2인자리도 괜찮다고 말씀드렸다.

 

가게 안은 정말 좁았고

테이블도 정말 가깝게 다닥다닥 붙어있었다.

 

나는 담백한걸 주문했고

남편은 크리미한 걸 주문했는데

크리미한게 더 맛있었다.

크리미한 국물의 라면이 더 깊은 맛이다.

 

 

애기 안고 먹느라 남편이 정말 고생했다.

 

728x90
반응형
728x90
반응형

Javascript Async (비동기 처리)

2023.12.06에 작성됨

 

Javascript에서 비동기처리를 하기 위해서는 Promise 객체를 이용한다.

Promise는 3가지 중 하나의 Status를 갖는다.

  • pending (작업이 진행중인 상태)
  • fulfilled (작업이 성공적으로 완료된 상태)
  • rejected (작업이 실패한 상태)

Javascript의 비동기는 두 부분으로 나누어 생각할 수 있는데 Promise를 생성하는 Producer 와 사용하는 Consumer 이다.

  1. Producer:

Promise 객체는 executor(resolve, reject) 라는 콜백 함수를 인자로 받아서 생성하며,

Promise 객체가 생성되는 순간 executor는 실행된다.


const promise = new Promise((resolve, reject) => {

// ... 어떤 작업 처리 ...

// 성공했을 경우

resolve();

// 실패했을 경우 

reject();

});
  1. Consumer:

Promise로부터 나온 결과를 처리하는 부분이다.


promise

.then((value) => {})      // promise가 resolve()를 호출할 경우 실행됨.

.catch((error) => {})     // promise가 reject()를 호출할 경우 실행됨.

.finally(() => {});       // promise의 성공여부와 상관 없이 완료된 경우 최종적으로 실행됨.

Async/Await

Async/Await은 Promise를 조금 더 편리하게 사용할 수 있도록 고안된 문법 이다. (Syntactic Sugar)

Promise를 직접 사용한 비동기 함수와 Async/Await을 사용하여 만든 함수를 아래 예제를 통해 비교해보자.


// Promise 를 사용한 경우 

function readFileAsync() {

return new Promise((resolve, reject) => {

// ...어떤 작업 처리...

resolve(value);

});

}



function logFile() {

const file = readFileAsync();

file.then((value) => console.log(value));

}



logFile();

// Async-Await을 사용한 경우

async function readFileAsync() {

// ...어떤 작업 처리...

return value;

}

// 설명: 

// 함수 앞에 async를 붙이면 내부적으로 Promise를 반환하는 함수로 변환해준다. 

// 함수에서 value를 바로 리턴하는 것 처럼 보이지만 실제로는 Promise 객체를 반환한다. 



async function logFile() {

const file = await readFileAsync();

console.log(file);

}

// await 은 async 함수 안에서만 사용이 가능하며, 

// .then으로 처리했던 것과 같이 비동기함수의 수행 완료를 기다렸다가 

// resolve() 함수에 의해 처리된 값을 반환해준다. 

// reject() 함수에 의해 처리된 값을 처리할 때는 try-catch문을 통해서 처리할 수 있다. 



logFile();



참고:

https://youtu.be/JB_yU6Oe2eE?si=9z4D5QRuaqy4XRkO

https://youtu.be/aoQSOZfz3vQ?si=RVdbsuqfNgtwG_wp

728x90
반응형
728x90
반응형

Typescript 세팅하기


 

2023.12.06에 작성됨 (node: v18.17.0, npm: 10.2.1)

시작하기

# 글로벌로 설치할 경우
npm i -g typescript   
tsc --init            # tsconfig.json 생성됨

# 개별 프로젝트에 설치 할 경우
npm i -D typescript   
npx tsc --init        # 프로젝트에 설치된 경우 앞에 npx를 붙여줘야한다.

NOTE: 많은 사람들이 ts-node를 같이 같이 설치 해주는 것 같은데 Typesciprt도 VS Code에서 디버깅 모드를 바로 사용할 수 있기 때문에 굳이 필요한지는 잘 모르겠다.

// tsconfig.json
{
    "compilerOptions": {
        // 일반적으로 사용하는 option
        "target": "ES2016",
        "module": "commonjs",
        "rootDir": "./src",
        "outDir": "./dist",
        "removeComments": true,
        "noEmitOnError": true,
        // 유용한 Type Checking Options
        "noUnusedParameters": true,
        "noImplicitReturns": true,
        "noUnusedLocals": true,
        // 디버깅 사용할 때
        "sourceMap": true,
    }
}

NOTE: “tsconfig.json” 이 생성되면 뒤에 파일이름을 붙이지 않아도 tsc만 입력해서 컴파일을 실행시킬 수 있음.

VS Code에서 디버깅하기

  1. tsconfig.json
    • compile 할 때 [filename].js.map 이라는 파일이 생성되고 디버거가 읽는 파일이라고 생각하면됨.
  2. “sourceMap”: true
  3. create launch.json
    • “preLaunchTask”: “tsc: build - typeconfig.json” 추가
    // launch.json
    // 기본적으로 생성되는 파일 안에 
    // “preLaunchTask”: “tsc: build - typeconfig.json” 추가
    {
      // Use IntelliSense to learn about possible attributes.
      // Hover to view descriptions of existing attributes.
      // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
      "version": "0.2.0",
      "configurations": [
        {
          "type": "node",
          "request": "launch",
          "name": "Launch Program",
          "skipFiles": [
            "<node_internals>/**"
          ],
          "program": "${file}",
          "preLaunchTask": "tsc: build - tsconfig.json",
          "outFiles": [
            "${workspaceFolder}/**/*.js"
          ]
        }
      ]
    }

Typescript CLI (Command Line Interface)

tsc --build (혹은 tsc -b)를 실행하면 다음의 작업을 합니다:

  • 참조된 모든 프로젝트를 찾습니다
  • 최신 상태인지 감지합니다
  • 올바른 순서로 최신 상태가 아닌 프로젝트를 빌드 합니다

만약 config 파일 이름이 tsconfig.json이라면 이름을 지정하지 않고 tsc --project(혹은 tsc -p)를 사용할 수 있다.

일반적으로는 package.json 파일에 스크립트로 저장하고 사용한다.

//package.json
"scripts": {
    "build": "tsc -p"
}
// terminal> npm run build

Common Errors

  1. Cannot find module 'xxx' or its corresponding type declarations.ts(2307)
import path from "path"; 
// Cannot find module 'path' or its corresponding type declarations.ts(2307)

NOTE: Typescript는 Typescript가 아닌 기본 Node 패키지를 바로 사용할 수 없다. (타입을 추론할 수 없기 때문에). 아래와 같이 Typescript 전용 패키지를 설치 해주어야 한다.

# npm i @types/<패키지>
npm i -D @types/node
# 일반적으로 -D 옵션을 붙여 Development Dependency 로 설치해준다.

참고:

https://youtu.be/d56mG7DezGs?si=UvvP1NosR6QV23mZ

 

728x90
반응형
728x90
반응형

 

 

소금빵 팡 메종 긴자점

 

 

 

위치: 일본 〒104-0061 Tokyo, Chuo City, Ginza, 2 Chome−14−5 Twg銀座イースト 1階

영업시간: 8:30 - 19:00

화요일 휴무

 


 

소금빵 최초 개발 원조 집이 도쿄에 있다고 해서 다녀왔다.

여러 블로그에서 대기 시간이 길다는 글을 많이 봤었어서

일단 가긴 가보지만

대기가 너무 길면 그냥 포기하자는 결심을 하고 갔던 곳이다.

(19개월 아들래미 데리고 빵사자고 긴 대기를 할 사진이 없었으므로..)

 

 

 

줄이 있긴 했는데

길지 않았다!!

기다릴만 했다.

또 효자 아들래미는 때 마침 유모차에서 잠들었어서

이런 행운이 어딧나 싶었다.

 

가게 안이 좁아서 대부분의 인원이 문 밖에서 기다렸다.

나도 문 밖에서 기다리면서 가게 안으로 들어가길 기다렸다.

 

 

방금 나온 소금빵들이 선반을 채웠다.

냄새가 너무 향긋했다.

 

 

또 한쪽에서는 계속 빵을 만드시는 것 같았다.

 

 

기본도 있고 명란 맛도 있고 감자맛도 있고

샌드위치 같은 애들도 있었다.

 

 

나는 기본 맛으로 4개 샀다.

 

 

따끈따끈 해서 더 맛있었다.

 

 

일단 가격이 너무 최고다.

110엔이라니..?

우리나라는 빵이 왜이렇게 비싼지...

 

더 많이 샀으면 좋았게찌만,

욕심부리지 않았었다.

근데 딱 4개만 사길 잘했던게 시간이 좀 지나고 먹어보니 사자마자 먹는 그 맛이 아니었었다.

 

728x90
반응형
728x90
반응형

 

 

 

저녁을 먹으러 아메요코 상점가로 갔다.

사람들이 북적북적했다.

 

 

미리 어디갈지 알아보지 않았었는데

배가 너무 고파서 눈에 보이는 식당에 들어갔다.


 

Nondeko Sakaba Ueno

 

 

 

위치: 일본 〒110-0005 Tokyo, Taito City, Ueno, 4 Chome−6−6 松本ビル 1/2F

구글평점: 3.7

 


 

 

 

 

야외 테이블에 자리를 잡고 앉았다.

 

 

계란말이와 라면, 꼬치를 주문했다.

술 마실 사람이 없어서 콜라를 주문했다.

 

 

그냥 저냥 평범했다.

꼬치가 더 먹고 싶었는데 더 맛있는 집이 있을까봐 

이정도에서 끝내고 나왔는데 그 뒤로 다른 식당은 못들어가고 편의점에서 야식 사다가 먹었다.

 

여기서 먹은 건

모둠꼬치 590*2

콜라 350*3

라면 390

계란말이는 지금보니 580엔인데 영수증에는 590엔이 찍혀있네..

그리고 콜라가격..ㅋㅋㅋㅋㅋㅋㅋㅋ

심지어 김빠진 콜라였다.

 

여튼 총 3531엔을 결제했다.

 

 


 

지하철 선로쪽에 더 가까운 골목이라고 해야하나?

더 뒷골목 느낌이 나는 곳이었는데

이쪽이 진짜였다.

진짜 사람들로 바글바글 했다.

유모차 끌기 힘들었다.

 

 

 

흡연이 가능한 술집이었는지

애기 동반 금지여서

그냥 집으로 가기로 했다.

 

아메요코 상점가에서 타코야키 쇼핑을 마지막으로 집으로 돌아왔다.

 

 

 

728x90
반응형

+ Recent posts