728x90
반응형

 티스토리 

핸드드립에 대해 알아보자~


커피 핸드 드립은 수동으로 물을 부어 추출하는 방식으로, 신선하고 풍부한 향과 맛을 즐길 수 있는 인기 있는 커피 추출 방법 중 하나입니다. 이 방법을 수행하려면 일반적으로 필요한 도구와 절차가 있습니다.

필요한 도구:
핸드 드립 커피 메이커 (드립퍼): 일반적으로 V60, 칼리타 웨이브, 켈레타 등이 있습니다.
커피 필터: 특정 드립퍼 모델에 맞는 필터를 사용합니다.
커피 원두: 중간 정도로 분쇄된 원두가 적합합니다.
커피 컵 또는 카페인 머그: 추출한 커피를 받을 용기.
추출 단계:
필터 세팅:

필터를 드립퍼에 설치하고, 온수로 헹구어 부드러운 맛을 얻습니다.
원두 측정과 분쇄:

적절한 양의 커피 원두를 측정하고 중간 정도로 분쇄한 원두를 사용합니다.
프리워밍:

뜨거운 물을 사용하여 드립퍼와 필터를 예열합니다.
커피 원두 채우기:

원두를 필터에 넣고 가운데 부분을 조금 파서 펴서 고르게 채웁니다.
추출:

뜨거운 물을 골고루 원두에 부으면서 부드럽게 원두에 물을 부어줍니다.
처음에는 소량의 물로 원두에 포화를 일으키고 30초 정도 기다린 후 나머지 물을 부어줍니다.
증류 및 서빙:

물이 원두를 통과하여 추출되면서 커피가 만들어집니다.
추출이 완료되면 커피를 컵에 따르고 즐깁니다.
커피 핸드 드립은 추출 과정에 개입할 수 있는 수동적인 방법으로, 커피의 풍미를 조절하고 원하는 커피를 만들 수 있습니다. 올바른 비율과 추출 시간을 찾아가는 과정에서 여러 가지 풍미를 경험할 수

 

마무리

- 이번 포스팅은 핸드드립 커피에 대해 알아봤습니다.

 

궁금한 사항은 댓글을 통해서 남겨 주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형
728x90
반응형

 티스토리 

 

원두커피 선택?


원두 커피를 선택할 때는 개인의 취향과 기호, 그리고 목적에 따라 몇 가지 중요한 요소를 고려하는 것이 좋습니다. 여기에 몇 가지 유용한 지침이 있습니다:

로스팅 레벨:

라이트 로스트: 과일 향과 산미가 강하며, 커피 원두의 본연의 특징이 잘 드러납니다. 산미를 좋아하고 커피의 다양한 향을 경험하고 싶을 때 좋습니다.
미디엄 로스트: 균형 잡힌 풍미와 산미를 가지고 있으며, 다양한 방식으로 즐기기에 적합합니다.
다크 로스트: 로스팅 특유의 깊은 풍미와 특유의 로스팅 향이 강합니다. 진한 맛과 향을 선호하는 경우에 좋습니다.
원산지:

단일 원산지: 특정 지역이나 국가에서 온 원두로 만들어진 커피는 그 지역의 특유의 향과 풍미를 가집니다. 예를 들어, 에티오피아 원두는 꽃 향이 풍부하고 신선한 맛이 나타납니다.
블렌드: 여러 지역의 원두를 섞어 만든 블렌드는 다양한 풍미를 가지며 균형잡힌 맛을 선호하는 경우에 적합합니다.
종류:

아라비카 (Arabica): 더 고급이며 향이 풍부하며 산미가 강합니다. 대부분의 특수 커피는 아라비카 원두로 만들어집니다.
로부스타 (Robusta): 강한 풍미와 크림이 풍부하며, 카페인 함량이 높습니다. 더 강한 맛을 선호하는 경우에 적합합니다.
로스터의 신뢰성:

신뢰할 수 있는 로스터 선택: 커피 로스터의 평판과 리뷰를 확인하여 신뢰할 수 있는 로스터를 선택하십시오. 로스터가 원두를 신선하게 로스팅하고 품질을 유지하는 것이 중요합니다.
취향과 목적:

마시는 스타일에 따라 선택: 블랙으로 마시느냐, 라떼나 카푸치노로 마시느냐에 따라 원두를 선택할 수 있습니다. 특정한 사용 목적에 따라 선택하는 것이 좋습니다.
맛과 향은 주관적이기 때문에 여러 가지 커피를 시도하여 개인적인 취향을 찾는 것이 좋습니다. 로스팅일이나 원두의 종류에 대한 정보를 읽어보면서 다양한 경험을 즐겨보세요.

1. 결론

  개인적으로 그냥 신선한 커피를 산다. 
- 절대로 갓 볶은 커피를 얘기하는게 아니다!
- 농장에서 커피를 갓 수확한 커피를 얘기함.
- 대형 원두 판매처에서 수확한 날짜 정보를 기입하는데서 구매!

 

마무리

- 이번 포스팅은 원두 커피 선택에에 대해 알아봤습니다.

 

궁금한 사항은 댓글을 통해서 남겨 주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형
728x90
반응형

 티스토리 

 

디게이싱 빨리하는법~

 이건 지극히 개인적은 실험이고 결과이며, 참고하길 바랍니다.

커피 디게이싱은 커피 원두에서 이산화탄소(Gas)를 제거하는 과정으로, 이 과정은 로스팅 후 커피 원두가 가스를 방출하고 안정화되는 시간을 의미합니다. 디게이싱을 위해 몇 가지 방법이 있습니다:

컨테이너 사용:

밀봉 컨테이너: 특별한 밀봉된 컨테이너를 사용하여 커피 원두를 보관합니다. 이로써 이산화탄소가 방출되면서 공기가 들어오지 않게 됩니다.
일회성 밸브 가스 배출 컨테이너: 커피 로스터가 판매하는 일회성 밸브가 있는 특별한 컨테이너를 사용하면, 이산화탄소를 방출하면서 외부 공기가 들어오지 않습니다.
컨테이너 이용한 흡기 방법:

일주일에 한 번씩 컨테이너를 열어 환기: 특별한 보관 컨테이너를 사용하지 않더라도, 일주일에 한 번씩 컨테이너를 열어 커피 원두에 가스를 방출시킬 수 있습니다.
공기받이 사용:

디게이싱 백: 일부 로스터는 디게이싱을 위한 특수 백을 제공합니다. 이 백을 사용하면 커피 원두가 가스를 방출하면서 환경을 조절할 수 있습니다.
저온 저장:

냉장고나 냉동고 사용: 디게이싱을 느리게 진행시키려면 커피 원두를 냉장고나 냉동고에 보관할 수 있습니다. 이는 가스 방출을 늦추는 효과가 있을 수 있습니다.
디게이싱의 기간은 커피 로스터마다 다를 수 있으며, 개인적인 취향에 따라 다르게 느껴질 수 있습니다. 일반적으로 1주일에서 2주 사이에 디게이싱이 완료된다고 생각되지만, 이 기간은 로스팅 레벨, 원두 종류 등에 따라 달라질 수 있습니다.

1. 팁

  난 로스팅후 빠르게 디게이싱을 하기위해 온도차이를 이용한다.
1. 냉장고 넣었다 뺐다 여러번 반복해서 강제 숙성. ( 한두번만 하는게 좋은듯 너무 하면 퀄리티가 떨어지는듯)

마무리

- 이번 포스팅은 커피 디게이싱(Degasing)에 대해 알아봤습니다.

 

궁금한 사항은 댓글을 통해서 남겨 주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형
728x90
반응형

 티스토리 

 

디게이싱(Degasing) , 숙성이 뭐야~

"커피 디게이싱"은 커피 원두에서 이산화탄소(Gas)를 제거하는 과정을 말합니다. 이산화탄소는 커피 원두 내부에서 발생하는데, 로스팅 후 원두가 일정 기간 동안 휴식을 취하면서 이 가스가 방출되는 현상을 의미합니다.

커피 디게이싱은 로스팅 이후 일정 기간 동안 커피 원두를 저장하고, 이 과정에서 자연스럽게 발생한 이산화탄소를 방출하여 커피 원두의 맛과 향을 향상시키는 목적으로 수행됩니다. 디게이싱은 일반적으로 로스팅 후 1주일에서 2주 사이에 이루어집니다.

디게이싱은 커피의 품질을 향상시키는 중요한 단계 중 하나로 간주되며, 일부 커피 로스터는 디게이싱을 위해 특별한 가스배출 백을 사용하거나 원두를 특별한 컨테이너에 보관하는 등의 방법을 사용합니다. 이 과정을 통해 커피 원두는 로스팅 과정에서 감소한 가스를 방출하고, 더 균형있는 풍미와 향을 갖게 됩니다. 

1. 맛 평가.


커피의 맛과 향은 로스팅 후 디게이싱 기간에 따라 변할 수 있습니다. 여러 요인이 이러한 차이를 일으키는데, 주요한 것은 커피 원두의 내부 구조와 로스팅 과정입니다.

강하게 볶은 강배전 커피 (Dark Roast):

맛: 강한 로스팅은 커피 원두를 더 많이 변화시킵니다. 이로 인해 다크 로스트 커피는 뚜렷한 로스팅 특유의 풍미와 깊은 풍미를 가집니다.
디게이싱 기간: 다크 로스트의 경우, 일부 커피 로스터는 로스팅 후 1주일 정도의 디게이싱 기간 동안 가장 풍미가 풍부하다고 생각합니다.
중배전 커피 (Medium Roast):

맛: 중간 정도로 볶은 커피는 로스팅 특유의 풍미와 함께 신선하면서도 풍부한 향을 가집니다.
디게이싱 기간: 중배전 커피는 일반적으로 로스팅 후 1주일 이상이 지난 후에 풍미가 최고조에 달하는 것으로 여겨집니다. 이 기간 동안 커피는 더 균형있는 향과 풍미를 발전시킵니다.
개인의 취향과 입맛은 각자 다르기 때문에, 어떤 사람들은 로스팅 후 바로 마셔도 좋아하는 반면, 다른 사람들은 디게이싱이 끝난 후에 특정한 풍미를 선호할 수 있습니다. 중배전 커피의 경우 2주가 넘어가면 커피의 신선도가 감소할 수 있으나, 어떤 사람들은 디게이싱이 더 오래 지속될 때 향과 풍미가 더욱 발전한다고 느낄 수 있습니다.

마무리

- 이번 포스팅은 커피 디게이싱(Degasing)에 대해 알아봤습니다.

 

궁금한 사항은 댓글을 통해서 남겨 주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형
728x90
반응형

 티스토리 

 

페이지 추가하기

Flask 웹페이지에서 페이지를 추가하는 방법

1. 코드리뷰

 

from flask import Flask, send_from_directory
from flask import abort
app = Flask(__name__)

@app.route('/favicon.ico')
def favicon():
    try:
        return send_from_directory('static', 'favicon.ico', mimetype='image/vnd.microsoft.icon')
    except FileNotFoundError:
        abort(404)


# Your existing routes
@app.route('/')
def home():
    return 'Welcome to the Home Page!'

@app.route('/about')
def about():
    return 'This is the About Page.'

@app.route('/user/<username>')
def show_user_profile(username):
    return f'User {username}'

if __name__ == '__main__':
    app.run(debug=True, port=5000)

에러 핸들링 추가:
현재 코드에서는 정적 파일(favicon.ico)을 찾을 수 없는 경우에 대한 예외 처리. 파일이 존재하지 않을 때의 에러에 대한 핸들링을 추가하는 것이 좋습니다.

python
Copy code
from flask import abort

@app.route('/favicon.ico')
def favicon():
    try:
        return send_from_directory('static', 'favicon.ico', mimetype='image/vnd.microsoft.icon')
    except FileNotFoundError:
        abort(404)
이렇게 하면 파일이 없는 경우 404 오류를 반환합니다.

favicon.ico 위치 이동:
보통 파비콘은 static 폴더에 위치시키는 것이 일반적입니다. 코드에서도 send_from_directory를 사용하고 있으므로 파일을 static 폴더로 이동시키면 더 일관성 있습니다.

/your_project
├── app.py
├── static
│   └── favicon.ico
코드에서도 send_from_directory('static', 'favicon.ico', ...)로 설정해두었기 때문에 실제 파일 위치와 맞추는 것이 좋습니다.

플라스크 애플리케이션 설정:
플라스크 애플리케이션의 디버그 모드와 포트 설정은 외부에 노출될 때에만 사용되어야 합니다. 실제로 배포할 때는 디버그 모드를 비활성화하고, 포트 번호를 변경하는 것이 보안적으로 더 안전합니다.

마무리

- 이번 포스팅은 Flask 웹에 페이지 추가 및 favicon 아이콘 추가에 대해 알아봤습니다.

 

궁금한 사항은 댓글을 통해서 남겨 주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형
728x90
반응형

 티스토리 

 

Flask 라이브러리 기초 1

먼저 간단히 출력하는 코드로 연습해보자~
시작하기 앞서 pip install flask로 라이브러리 설치부터 하자.

1. 코드리뷰

from flask import Flask

app = Flask(__name__)

@app.route('/')
def start_hello():
    return "Hello World"

if __name__ == '__main__':
    app.run(debug=True, port=5000)  # 포트를 변경하여 충돌을 피하고, 디버그 모드를 유지하거나 비활성화합니다.

 - 포트 번호 80 사용 주의: 포트 번호 80은 일반적으로 웹 서버에서 사용되는 기본 포트입니다. 그러나 일반적으로 특별한 권한 없이는 1024번 이하의 포트를 사용할 수 없습니다. 만약 권한이 없는 사용자로서 실행된다면, 포트 80을 사용하려고 시도하면 에러가 발생할 수 있습니다. 일반적으로 개발 환경에서는 다른 포트를 사용하거나, 권한 상승 없이 사용 가능한 포트를 선택하는 것이 좋습니다.

- main 함수의 역할: main 함수는 Flask 앱을 실행시키는 역할을 하고 있습니다. 이것은 일반적인 구조는 아닙니다. 일반적으로 Flask 앱은 모듈 수준에서 실행되어야 하므로, main 함수를 사용하지 않고 바로 __name__ == '__main__' 블록에서 실행되도록 하는 것이 더 자연스러울 것입니다.

- app.run(debug=True, port=5000)는 Flask 애플리케이션을 실행하는 메소드 호출입니다. 여기서 각 매개변수는 다음과 같은 역할을 합니다.

- debug=True: 디버그 모드를 활성화합니다. 디버그 모드는 코드 수정 후 서버를 재시작하지 않아도 변경 사항이 즉시 반영되도록 해줍니다. 또한 예외 메시지를 브라우저에 자세히 표시해주므로 코드 디버깅이 편리해집니다. 그러나 프로덕션 환경에서는 비활성화해야 합니다.

- port=5000: Flask 애플리케이션이 사용할 포트를 지정합니다. 여기서는 5000번 포트를 사용하고 있습니다. 포트는 네트워크 통신에서 어떤 프로세스와 통신할지를 결정하는 데 사용됩니다. Flask 개발 서버는 기본적으로 5000번 포트를 사용하며, 개발 중인 애플리케이션을 웹 브라우저를 통해 확인할 수 있도록 합니다.

따라서, app.run(debug=True, port=5000)를 사용하면 Flask 개발 서버가 디버그 모드로 실행되며, 5000번 포트를 통해 클라이언트의 요청을 수신하고 응답합니다.

 

마무리

- 이번 포스팅은 Hello World 출력으로 Flask 기초에 대해 알아봤습니다.

 

궁금한 사항은 댓글을 통해서 남겨 주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형
728x90
반응형

 티스토리 

 

GUI로 여러 폴더의 이름을 선택한 값 구하기

 폴더별로 동작하는 GUI 앱을 만들어 보자. 

1. 코드리뷰

 

import PySimpleGUI as sg

# 폴더 목록을 보여주고 선택할 수 있도록 하는 함수
def select_folders():
    # 폴더 목록을 저장할 리스트
    folder_list = []
    # 폴더 선택 창의 레이아웃
    layout = [
        [sg.Text('폴더를 선택하세요.')],
        [sg.Listbox(values=folder_list, size=(40, 10), key='-FOLDER-LIST-', select_mode=sg.LISTBOX_SELECT_MODE_EXTENDED)],
        [sg.Button('추가'), sg.Button('제거'), sg.Button('확인'), sg.Button('취소')]
    ]
    # 폴더 선택 창을 생성하고 이벤트와 값들을 반환받음
    window = sg.Window('폴더 선택', layout)
    while True:
        event, values = window.read()
        # 취소 버튼을 누르거나 창을 닫으면 None을 반환하고 종료함
        if event in (sg.WIN_CLOSED, '취소'):
            window.close()
            return None
        # 추가 버튼을 누르면 폴더를 하나 선택하고 리스트에 추가함
        elif event == '추가':
            folder = sg.popup_get_folder('폴더를 선택하세요.')
            if folder is not None and folder not in folder_list:
                folder_list.append(folder)
                window['-FOLDER-LIST-'].update(folder_list)
        # 제거 버튼을 누르면 리스트에서 선택한 폴더를 제거함
        elif event == '제거':
            selected_folders = values['-FOLDER-LIST-']
            if selected_folders:
                for folder in selected_folders:
                    folder_list.remove(folder)
                window['-FOLDER-LIST-'].update(folder_list)
        # 확인 버튼을 누르면 선택한 폴더들의 리스트를 반환하고 종료함
        elif event == '확인':
            window.close()
            return folder_list  # 수정: folder_list를 반환하도록 수정

# 폴더 선택 창을 띄우고 선택한 폴더들의 경로를 출력하는 메인 함수
def main():
    # 폴더 선택 창을 띄우고 선택한 폴더들의 리스트를 folders 변수에 저장함
    folders = select_folders()
    # folders 변수가 None이 아니면 선택한 폴더들의 경로를 출력함
    if folders is not None:
        print(f'선택한 폴더들의 경로는 다음과 같습니다.')
        for folder in folders:
            print(folder)
    # folders 변수가 None이면 폴더를 선택하지 않았다고 출력함
    else:
        print('폴더를 선택하지 않았습니다.')

main()

 

마무리

- 이번 포스팅은 Folder Browser 만들기 에 대해 알아봤습니다.

 

궁금한 사항은 댓글을 통해서 남겨 주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형
728x90
반응형

 티스토리 

 

day.weekday()

day.weekday() 메서드는 주어진 날짜(day 객체)의 요일을 반환하는 메서드입니다. 반환 값은 월요일부터 일요일까지 각각 0부터 6까지의 정수입니다. 다음은 weekday() 메서드의 사용 예제입니다.

 

1. 코드리뷰

 

import datetime 

# 날짜 생성 (예: 2023년 1월 1일)
day = datetime.date(2023, 1, 1)

# 주어진 날짜의 요일 가져오기 (0: 월요일, 1: 화요일, ..., 6: 일요일)
weekday_number = day.weekday()

# 요일을 문자열로 변환
weekday_string = day.strftime("%A")

# 결과 출력
print(f"The weekday number for {day} is {weekday_number}.")
print(f"The weekday string for {day} is {weekday_string}.")

 - weekday_number: day 날짜의 요일을 숫자로 나타냅니다.

- weekday_string: day 날짜의 요일을 문자열로 나타냅니다. (%A는 요일을 전체로 표시하는 strftime의 포맷 문자열입니다.)

이를 실행하면 해당 날짜(2023년 1월 1일)의 요일을 숫자와 문자열로 출력할 수 있습니다. 필요에 따라 날짜를 변경하여 테스트해보세요.

마무리

- 이번 포스팅은 날짜의 요일을 확인하는 코드 만들기 에 대해 알아봤습니다.

 

궁금한 사항은 댓글을 통해서 남겨 주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형

+ Recent posts