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
반응형
728x90
반응형

 

 

돈카츠 스즈키

とんかつ 寿々木

 

 

 

위치: 일본 〒100-0005 Tokyo, Chiyoda City, Marunouchi, 1 Chome−9−1 グランスタ八重北 1階 Yaekita Shokudo

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

구글평점: 4.5

 


 

도쿄역에 식당이 정말 많았다.

점심시간이라 가게마다 줄이 길게 서있었다.

물론 줄이 적은 가게도 있었으나, 

또 그런곳은 왜인지 들어가고 싶지 않았다.

돈까스가 먹고싶어서 겉모습이 마음에 드는 가게에 줄을 섰다.

 

 

줄 서서 기다리고 있는데 한국어 메뉴판을 가져다 주셨다.

미리 메뉴를 고를 수 있어서 좋았다.

 

 

30분 기다린 끝에 들어갈 수 있었다.

 

 

남편은 로스돈까스에 새우튀김까지 나오는 세트를 주문했고

나는 로스돈까스 덮밥을 주문했다.

사실 내가 주문한게 돈까스 인줄 알았는데

메뉴판에 밥이 안써있고 로스돈까스만 써있어서 밥이 안나오는 메뉴인가 하고 주문했는데

덮밥이 나왔다.

다시 보니 영어 문장에 "On Rice"라는 문구가 보였다.

한국어만 보고 골라서 몰랐던 거였다.

 

 

남편이 주문한 돈까스+새우튀김 새트에는

밥 한공기가 별도로 나왔다.

 

 

너무 맛있게 먹었다.

울 ㅣ19개월 아들래미는 편식이 심한 아이라

가져온 햇반과 된장국을 먹였다.

 

 

2880엔을 지불했다.

확실히 도쿄..

물가가 비싸다.

 

728x90
반응형

+ Recent posts