[작성자:] 수수께끼

  • 금 투자 하는 다양한 방법과 금 ETF 소개

    금 투자 하는 다양한 방법과 금 ETF 소개

    왜 지금 금에 투자해야 할까요? 안전자산 금의 매력 파헤치기

    최근 경제 불확실성이 커지면서 ‘안전자산’에 대한 관심이 뜨겁습니다. 그중에서도 금은 오랜 시간 동안 가치를 인정받아 온 대표적인 안전자산이죠. 인플레이션 헤지, 통화 가치 하락 대비, 지정학적 리스크 완화 등 다양한 이유로 금 투자는 매력적인 선택지가 될 수 있습니다.

    하지만 금에 투자하는 방법은 생각보다 다양합니다. 어떤 방법이 나에게 맞을지, 각 방법의 장단점은 무엇인지 궁금하시죠? 이 글에서는 실물 금부터 금 ETF까지, 금 투자에 대한 모든 것을 쉽고 명확하게 알려드릴게요.

    금 투자, 어떤 방법들이 있을까요?

    금에 투자하는 방법은 크게 실물 금 투자와 간접 투자로 나눌 수 있습니다. 각각의 특징과 장단점을 자세히 살펴볼까요?

    1. 실물 금 투자: 직접 만지고 느낄 수 있는 든든함

    가장 직관적인 금 투자 방법은 바로 실물 금을 구매하는 것입니다. 금괴, 골드바, 금반지, 금목걸이 등 다양한 형태로 구매할 수 있죠.

    • 장점:
    • 실물 보유: 직접 금을 소유한다는 심리적 안정감이 있습니다.
    • 실물 가치: 금 자체의 가치를 직접 보유하는 것입니다.
    • 환금성: 비교적 쉽게 현금화할 수 있습니다.
    • 단점:
    • 보관 및 보안: 도난이나 분실의 위험이 있어 안전한 보관 장소가 필요합니다.
    • 거래 비용: 구매 시 부가가치세, 판매 시 수수료 등이 발생할 수 있습니다.
    • 소액 투자 어려움: 초기 구매 비용이 상대적으로 높습니다.
    • 유동성: 급하게 현금화할 경우 제값을 받지 못할 수도 있습니다.

    어떤 분에게 추천할까요?

    직접 금을 소유하고 싶거나, 장기적인 관점에서 안전자산을 확보하고 싶은 분들에게 적합합니다.

    2. 금 통장 (골드뱅킹): 은행에서 편리하게 금 투자

    실물 금을 직접 구매하고 보관하는 것이 부담스럽다면, 은행의 금 통장(골드뱅킹)을 활용하는 방법이 있습니다. 은행에서 금을 대신 보관해주고, 원할 때 실물 금으로 인출하거나 현금화할 수 있습니다.

    • 장점:
    • 편리함: 은행 계좌 개설만으로 쉽게 시작할 수 있습니다.
    • 안전한 보관: 은행이 금을 대신 보관해주어 분실, 도난 위험이 없습니다.
    • 소액 투자 용이: 1원 단위로도 투자가 가능하여 부담이 적습니다.
    • 환매 용이: 필요할 때 언제든 현금화하거나 실물 금으로 인출할 수 있습니다.
    • 단점:
    • 수수료: 금 매매 시 스프레드(매매 기준율과 실제 적용 환율의 차이) 및 수수료가 발생합니다.
    • 세금: 금 매매 차익에 대해 배당소득세와 유사한 세금이 부과될 수 있습니다. (정확한 과세는 금융기관 및 세법에 따라 달라질 수 있으므로 확인 필요)
    • 실물 금 미보유: 실제 금을 직접 소유하는 것은 아닙니다.

    어떤 분에게 추천할까요?

    소액으로 금 투자를 시작하고 싶거나, 실물 보관의 번거로움 없이 편리하게 금 가격 변동에 투자하고 싶은 분들에게 좋습니다.

    3. 금 펀드: 전문가에게 맡기는 간접 투자

    금 펀드는 펀드매니저가 투자자의 자금을 모아 금 관련 자산(실물 금, 금광 관련 기업 주식 등)에 투자하는 상품입니다.

    • 장점:
    • 전문적인 운용: 펀드매니저가 시장 상황을 분석하여 운용하므로 개별 투자보다 편리합니다.
    • 분산 투자: 금 외에 금 관련 기업 주식 등에도 투자하여 위험을 분산할 수 있습니다.
    • 소액 투자 가능: 펀드에 따라 소액으로도 투자가 가능합니다.
    • 단점:
    • 운용 보수 및 수수료: 펀드 운용 및 판매 과정에서 보수와 수수료가 발생합니다.
    • 수익률 변동성: 펀드매니저의 운용 능력이나 시장 상황에 따라 수익률이 달라질 수 있습니다.
    • 실물 금 미보유: 직접 금을 보유하는 것이 아닙니다.

    어떤 분에게 추천할까요?

    금 투자에 대한 전문적인 지식이 부족하거나, 전문가에게 운용을 맡기고 싶은 분들에게 적합합니다.

    4. 금 ETF (Exchange Traded Fund): 주식처럼 거래하는 금 투자

    금 ETF는 금 가격을 추종하도록 설계된 상장지수펀드(ETF)입니다. 주식처럼 증권거래소에서 실시간으로 거래할 수 있어 접근성이 매우 높습니다.

    • 장점:
    • 높은 접근성: 주식 계좌만 있으면 언제든 쉽게 사고팔 수 있습니다.
    • 실시간 거래: 장중에 실시간으로 가격 변동을 확인하며 거래할 수 있습니다.
    • 낮은 비용: 일반 펀드에 비해 운용 보수가 저렴한 편입니다.
    • 투명성: ETF의 구성 종목 및 자산 현황이 투명하게 공개됩니다.
    • 소액 투자 가능: 적은 금액으로도 투자가 가능합니다.
    • 단점:
    • 추적 오차: ETF의 수익률이 실제 금 가격을 완벽하게 추종하지 못하는 경우가 발생할 수 있습니다.
    • 환매수수료 (해당 상품의 경우): 일부 ETF는 환매 시 수수료가 발생할 수 있습니다.
    • 실물 금 미보유: 실제 금을 직접 소유하는 것은 아닙니다.

    어떤 분에게 추천할까요?

    적은 금액으로 금 가격 변동에 투자하고 싶거나, 주식처럼 편리하게 금 관련 상품을 거래하고 싶은 분들에게 가장 인기 있는 방법입니다.

    금 ETF 투자 방법: 초보자를 위한 단계별 가이드

    가장 많은 분들이 관심을 가지는 금 ETF 투자 방법에 대해 좀 더 자세히 알아보겠습니다.

    1단계: 증권 계좌 개설

    금 ETF는 증권거래소에서 거래되므로, 먼저 증권 계좌를 개설해야 합니다. 비대면으로도 간편하게 계좌 개설이 가능하며, 주식 거래가 가능한 증권사라면 대부분 금 ETF 거래를 지원합니다.

    • 필요 서류: 신분증, 휴대폰
    • 절차:
    • 이용할 증권사 앱 또는 웹사이트 접속
    • 비대면 계좌 개설 신청
    • 신분증 촬영 및 본인 인증 (휴대폰 인증, 영상 통화 등)
    • 계좌 개설 완료

    2단계: 금 ETF 상품 선택

    증권 계좌를 개설했다면, 이제 어떤 금 ETF에 투자할지 선택해야 합니다. 금 ETF는 크게 두 가지 종류로 나눌 수 있습니다.

    • 현물 금 ETF: 실제 금을 매입하여 보유하고, 해당 금의 가격 변동을 추종하는 ETF입니다. 가장 일반적인 형태이며, 금 가격 자체에 투자하는 효과가 큽니다.
    • 예시: KODEX 금현물, TIGER 금현물 등
    • 금 관련 기업 ETF: 금광 채굴 기업이나 금 관련 사업을 영위하는 기업들의 주식에 투자하는 ETF입니다. 금 가격뿐만 아니라 해당 기업의 실적, 경영 상황 등에도 영향을 받습니다.
    • 예시: KODEX 금광 채굴 ETF 등

    어떤 ETF를 선택해야 할까요?

    단순히 금 가격 상승에 투자하고 싶다면 현물 금 ETF를, 금 채굴 기업의 성장 가능성까지 고려하고 싶다면 금 관련 기업 ETF를 선택할 수 있습니다. 초보 투자자에게는 일반적으로 현물 금 ETF를 추천합니다.

    아래는 금 ETF 종류를 간략히 적었습니다.

    • 국내 상장 금 ETF 종류
      • 현물 추종형:
        • ACE KRX금현물: 한국거래소(KRX) 금 현물 가격을 추종하며 보수가 낮은 편.
        • TIGER KRX금현물: 역시 KRX 금 가격을 추종하며, 국내 현물형 중 보수가 낮아 장기 투자에 유리하다고 평가됨.
      • 선물 추종형:
        • KODEX 금선물(H): 금 선물 가격을 추종하는 가장 오래된 형태 중 하나.
        • TIGER 금선물(H): 금 선물 가격을 추종.
    • 해외 금 ETF (미국 상장):
      • GLD (SPDR Gold Shares): 세계에서 가장 큰 규모로 금 현물 가격을 추종하며 유동성이 높음.
      • IAU (iShares Gold Trust): GLD와 유사하게 금 현물을 추종. 

    3단계: 금 ETF 매수

    원하는 금 ETF를 선택했다면, 이제 증권 계좌에서 해당 ETF를 매수하면 됩니다.

    1. 증권 계좌 로그인
    2. ETF 종목 검색: 투자하려는 금 ETF의 종목 코드 또는 이름으로 검색합니다.
    3. 매수 주문:
    4. 매수 수량 입력: 몇 주를 살 것인지 입력합니다.
    5. 매수 가격 입력: 현재 시장 가격으로 즉시 구매하려면 ‘시장가’로 주문하거나, 원하는 가격을 지정하려면 ‘지정가’로 주문합니다.
    6. 주문 확인 및 실행

    4단계: 투자 현황 확인 및 관리

    ETF를 매수한 후에는 주기적으로 투자 현황을 확인하고, 필요에 따라 매수/매도 결정을 내립니다.

    • 투자 현황 확인: 증권 앱이나 웹사이트에서 보유 중인 ETF의 현재 가격, 수익률 등을 확인할 수 있습니다.
    • 시장 상황 주시: 금 가격에 영향을 미치는 경제 지표, 국제 정세 등을 꾸준히 파악하는 것이 좋습니다.
    • 매도 시점 결정: 목표 수익률 달성, 시장 상황 변화, 자금 필요 등 다양한 이유로 매도 시점을 결정할 수 있습니다.

    금 투자 시 주의사항 및 흔한 실수

    금 투자는 매력적이지만, 몇 가지 주의사항을 간과하면 예상치 못한 손실을 볼 수도 있습니다.

    • 과도한 몰빵 투자 금지: 금은 안전자산이지만, 가격 변동성이 전혀 없는 것은 아닙니다. 전체 투자 자산의 일부만 금에 투자하여 위험을 분산하는 것이 중요합니다.
    • 환율 변동 고려: 국내에서 금 ETF를 거래할 때는 원/달러 환율의 영향도 받습니다. 원화 가치가 하락하면 금 가격이 원화 기준으로 상승할 수 있습니다.
    • 세금 문제 확인: 금 투자로 얻은 수익에 대한 세금은 투자 방식에 따라 다릅니다. 실물 금 매매 차익, 금 통장 이자, ETF 매매 차익 등에 대한 과세 내용을 미리 확인해야 합니다. (예: 실물 금은 양도소득세, 금 통장은 배당소득세와 유사한 세금, 금 ETF는 주식과 유사한 과세 적용 가능성 등)
    • 정보의 비대칭성 악용 주의: 특히 실물 금 거래 시에는 신뢰할 수 있는 판매처를 이용하고, 시세를 꼼꼼히 확인해야 합니다.
    • 단기 시세 차익만을 노리는 투자는 지양: 금은 장기적인 가치 저장 수단으로서의 의미가 큽니다. 단기적인 가격 변동에 일희일비하기보다는 장기적인 관점에서 접근하는 것이 좋습니다.

    금 투자, 얼마를, 언제, 어떻게 해야 할까?

    얼마를 투자할까?

    총 투자 자산의 5~10% 정도를 금에 투자하는 것을 권장합니다. 개인의 투자 성향, 자금 상황, 투자 목표에 따라 달라질 수 있습니다.

    언제 투자할까?

    금 가격은 다양한 요인에 의해 변동됩니다.

    • 인플레이션 우려 시: 물가 상승이 예상될 때 금 가격이 오르는 경향이 있습니다.
    • 경제 불확실성 증대 시: 금융 위기, 전쟁 등 경제적 불안감이 커질 때 안전자산인 금으로 자금이 몰립니다.
    • 미국 달러 약세 시: 달러 가치가 하락하면 금 가격이 상승하는 경향이 있습니다.

    하지만 이러한 예측은 항상 맞지 않을 수 있으므로, 꾸준히 분할 매수하는 전략이 위험을 줄이는 좋은 방법입니다.

    어떻게 투자할까?

    앞서 설명드린 다양한 방법 중 본인의 투자 성향과 편의성에 맞는 방법을 선택합니다.

    • 안정성과 편의성 중시: 금 통장 또는 소액으로 금 ETF 투자
    • 직접 소유의 만족감: 실물 금 구매
    • 전문가에게 맡기기: 금 펀드
    • 주식처럼 편리하게 거래: 금 ETF

    결론

    금 투자는 자산을 보호하고 가치를 보존하는 효과적인 방법 중 하나입니다. 실물 금, 금 통장, 금 펀드, 금 ETF 등 다양한 투자 방법이 존재하며, 각자의 상황에 맞는 최적의 방법을 선택하는 것이 중요합니다. 특히 금 ETF는 낮은 비용과 높은 접근성으로 많은 투자자들에게 사랑받고 있습니다.

    지금 바로 실천할 수 있는 금 투자 액션:

    1. 나에게 맞는 금 투자 방법 알아보기: 실물 금, 금 통장, 금 ETF 등 각 방법의 장단점을 다시 한번 비교해 보세요.
    2. 소액으로 금 ETF 투자 시작하기: 증권 계좌가 없다면 개설하고, 관심 있는 금 ETF에 소액으로 투자하며 경험을 쌓아보세요.
    3. 꾸준히 시장 동향 파악하기: 금 가격에 영향을 미치는 경제 뉴스나 시장 상황을 꾸준히 주시하며 투자 결정을 내리세요.

    금 투자를 통해 여러분의 자산을 더욱 든든하게 지키시길 바랍니다!

  • 한눈에 보는 2026년 서울 축제 일정

    한눈에 보는 2026년 서울 축제 일정

    2026년 서울은 사계절 내내 풍성한 축제로 가득할 예정입니다. 2026년 상반기부터 하반기까지 놓치지 말아야 할 서울의 주요 축제들을 정리해 드립니다.


    2026년 서울 축제 안내

    ❄️ 겨울 (1월~2월) : 빛과 전통의 조화

    • 서울 윈터페스타 (서울윈타)
      • 일정: ~ 2026년 1월 4일
      • 장소: 광화문광장, DDP, 청계천 일대
      • 내용: ‘서울빛초롱축제’와 ‘서울라이트’가 결합된 초대형 겨울 축제입니다. 화려한 미디어 파사드와 빛 조형물을 감상할 수 있습니다.
    • 2026 인왕산·하늘공원 해맞이 축제
      • 일정: 2026년 1월 1일
      • 장소: 인왕산 청운공원, 상암동 하늘공원
      • 내용: 새해 첫 일출을 보며 대북 공연, 소원지 달기 등 희망찬 새해를 맞이하는 행사입니다.
    • 운현궁 행운가득 설맞이 축제
      • 일정: 2026년 2월 16일 ~ 2월 18일 (설 연휴 기간)
      • 장소: 운현궁 앞마당
      • 내용: 전통 민속놀이 체험과 떡국 나누기 등 도심 속에서 명절의 정취를 느낄 수 있습니다.

    🌸 봄 (3월~5월) : 꽃과 전통 문화의 부활

    • 서울 마라톤 2026
      • 일정: 2026년 3월 15일 (예정)
      • 장소: 광화문광장 출발 ~ 잠실종합운동장 도착
      • 내용: 세계적 수준의 선수들과 일반 시민들이 함께 서울 도심을 달리는 축제입니다.
    • 여의도 봄꽃축제 & 석촌호수 벚꽃축제
      • 일정: 2026년 3월 말 ~ 4월 초 (개화 시기에 따라 변동)
      • 장소: 여의서로(윤중로), 석촌호수 일대
      • 내용: 서울의 대표적인 벚꽃 축제로, 화사한 꽃길 걷기와 다양한 거리 공연이 펼쳐집니다.
    • 연등회 (Lotus Lantern Festival)
      • 일정: 2026년 5월 16일(토) ~ 5월 17일(일)
      • 장소: 종로 거리, 조계사, 봉은사 등
      • 내용: 유네스코 인류무형문화유산인 연등 행렬이 하이라이트입니다. 5월 16일 저녁, 종로 일대를 가득 채우는 화려한 연등 물결을 볼 수 있습니다.

    🌿 여름 (6월~8월) : 한강과 축제의 열기

    • 한강 페스티벌 (여름)
      • 일정: 2026년 7월 말 ~ 8월 중순
      • 장소: 한강공원 전역
      • 내용: 수상 레저 체험, 한강 야외 영화관, 종이배 경주 대회 등 무더위를 날릴 시원한 프로그램이 운영됩니다.
    • 서울 물총 축제
      • 일정: 2026년 8월 중
      • 장소: 신촌 연세로 또는 한강공원 (장소 미정)
      • 내용: 도심 한복판에서 즐기는 시원한 물총 싸움과 DJ 파티로 젊은 층에게 인기 있는 축제입니다.

    🍂 가을 (9월~11월) : 예술과 밤하늘의 축제

    • 서울어텀페스타 (순수공연예술 통합 브랜드)
      • 일정: 2026년 9월 ~ 11월 중
      • 장소: 서울 전역 공연장 및 광장
      • 내용: 연극, 무용, 음악 등 서울의 대표 민간 예술 축제들을 하나로 묶어 홍보하는 통합 축제 기간입니다.
    • 서울 세계불꽃축제
      • 일정: 2026년 10월 초 (토요일 예정)
      • 장소: 여의도 한강공원
      • 내용: 가을 밤하늘을 수놓는 환상적인 불꽃쇼로 매년 100만 명 이상이 모이는 최고의 인기 행사입니다.
    • 제25회 서울디자인페스티벌 (SDF 2026)
      • 일정: 2026년 11월 26일 ~ 11월 29일
      • 장소: 코엑스(COEX) Hall A
      • 내용: 국내외 디자인 트렌드를 한눈에 볼 수 있는 최대 규모의 디자인 전문 전시 축제입니다.

    방문 팁:

    대부분의 대형 축제는 교통 통제가 이루어지므로 대중교통 이용을 권장합니다. 특히 ‘연등회’나 ‘불꽃축제’는 명당 자리를 잡기 위해 몇 시간 전 미리 도착하는 것이 좋습니다.

  • 아기 0개월 ~ 12개월 까지 발달 가이드 및 놀이법과 식단, 아기를 위한 인테리어까지 총 정리

    아기 0개월 ~ 12개월 까지 발달 가이드 및 놀이법과 식단, 아기를 위한 인테리어까지 총 정리

    아기가 태어나 첫 돌을 맞이하기까지의 1년은 부모에게는 경이로움의 연속이며, 아기에게는 인생에서 가장 폭발적인 성장이 일어나는 시기입니다. 이 시기 아기들은 신체적 발달뿐만 아니라 인지, 정서, 사회성 측면에서 놀라운 변화를 겪습니다.

    블로그나 육아 일기에 활용하시기 좋도록 0개월부터 12개월까지의 월별 성장 특징을 아주 상세하게 정리해 드립니다.


    👶 아기 12개월 성장 대백과: 월별 발달 가이드

    [1~3개월] 세상에 적응하고 감각이 깨어나는 시기

    • 1개월: 본능적인 생존의 달이 시기 아기는 대부분의 시간을 잠으로 보내며, 배가 고프거나 기저귀가 젖었을 때 울음으로만 의사소통합니다. 시력은 아직 발달하지 않아 20~30cm 앞의 사물만 흐릿하게 볼 수 있으며, 흑백의 대비가 강한 패턴(흑백 모빌)에 반응합니다. 엄마의 목소리를 구분하고 냄새로 엄마를 알아차립니다. ‘배냇짓’이라고 불리는 무의식적인 웃음이 나타납니다.
    • 2개월: 사회적 상호작용의 시작눈 맞춤이 가능해지며, 부모가 웃어주면 따라 웃는 **’사회적 웃음’**이 나타납니다. “아-우-” 같은 모음 중심의 옹알이를 시작하며 소통의 기쁨을 알아갑니다. 엎드려 놓으면 고개를 잠시 들 수 있을 정도로 목 근육이 발달하기 시작합니다.
    • 3개월: 목 가누기와 손 탐색이제 목을 어느 정도 가눌 수 있어 세워 안았을 때 머리가 덜렁거리지 않습니다. 자신의 손을 발견하고 입에 넣고 빨기 시작하는 ‘손 탐색’ 시기입니다. 시력이 좋아져 사물의 움직임을 따라 눈을 떼지 않고 쫓아갑니다.

    [4~6개월] 활동 범위가 넓어지는 뒤집기 시대

    • 4개월: 신체 조절 능력의 비약적 발전목을 완전히 가누게 되며, 엎드려 놓으면 가슴까지 들어 올릴 수 있습니다. 많은 아기가 이 시기에 **’뒤집기’**를 성공합니다. 감정이 풍부해져 큰 소리로 소리 내어 웃기도 하고, 소리가 나는 쪽으로 정확히 고개를 돌립니다.
    • 5개월: 손 조작의 정교화손바닥 전체를 사용해 물건을 꽉 잡을 수 있습니다. 잡은 물건은 무조건 입으로 가져가 탐색하려 합니다. 옹알이가 더욱 다양해지며 자신의 이름을 부르면 반응을 보이기도 합니다.
    • 6개월: 이유식 시작과 앉기 연습출생 시 몸무게의 2배가 되는 시기입니다. 유치가 아래 앞니부터 나기 시작하며 이유식을 시작합니다. 도움을 주면 잠시 앉아 있을 수 있고, 배를 바닥에 대고 밀면서 이동하려는 ‘배밀이’를 준비합니다.

    [7~9개월] 이동의 자유와 인지 능력의 발달

    • 7개월: 혼자 앉기와 낯가림도움 없이 혼자 꼿꼿하게 앉아 두 손을 자유롭게 사용할 수 있습니다. 이 시기에는 양육자와 타인을 구분하면서 낯가림과 분리 불안이 절정에 달할 수 있습니다. “바-바”, “다-다” 같은 자음 섞인 옹알이가 나타납니다.
    • 8개월: 기어 다니기의 시작배를 바닥에서 떼고 무릎과 손으로 기어 다닙니다. 활동량이 엄청나게 늘어나며 집안 구석구석을 탐험합니다. 대상영속성(물건이 눈앞에서 사라져도 존재한다는 사실을 아는 것)이 발달하여 ‘까꿍 놀이’를 매우 좋아합니다.
    • 9개월: 소근육의 정밀함과 일어서기이제 엄지와 검지 두 손가락만을 이용해 콩알 같은 작은 물건을 집을 수 있을 정도로 소근육이 발달합니다. 가구를 붙잡고 스스로 몸을 일으켜 세울 수 있게 되며, “안 돼”라는 부정적인 명령어의 의미를 이해하기 시작합니다.

    [10~12개월] 의사소통과 첫걸음의 감동

    • 10개월: 의사표현의 명확화손가락으로 자신이 원하는 물건을 가리키며(포인팅) 강한 의사표시를 합니다. 짝짜꿍, 곤지곤지, 잼잼 같은 모방 놀이가 가능해집니다. 기어 다니는 속도가 매우 빨라지고 한 손을 잡고 걷는 연습을 하기도 합니다.
    • 11개월: 서 있기와 게걸음무언가를 잡고 옆으로 걷는 ‘게걸음’이 능숙해집니다. 잠시 동안 아무것도 잡지 않고 혼자 균형을 잡고 서 있을 수 있습니다. “엄마”, “아빠”라는 말을 특정 대상에게 의미를 담아 부르기 시작합니다.
    • 12개월(돌): 첫걸음마와 언어의 폭발드디어 혼자서 첫걸음을 떼는 감격적인 순간이 옵니다. 간단한 지시어(공 가져와, 주세요 등)를 알아듣고 수행하며, 개인기가 늘어납니다. 수면 패턴이 성인과 비슷해지고, 젖병을 끊고 컵 사용을 연습하며 유아식으로 전환하는 시기입니다.

    💡 부모님을 위한 성장 관리 팁

    1. 개인차 인정하기: 위 가이드는 평균적인 수치일 뿐입니다. 어떤 아기는 기지 않고 바로 걷기도 하며, 어떤 아기는 걷기는 빨라도 말이 느릴 수 있습니다. 아이의 고유한 속도를 존중해 주세요.
    2. 터미 타임(Tummy Time): 목 근육과 상체 발달을 위해 신생아 시기부터 깨어 있을 때 엎드려 놓는 연습을 꾸준히 해주는 것이 좋습니다.
    3. 안전 환경 조성: 8개월 이후 기어 다니기 시작하면 집안의 모든 모서리, 콘센트, 작은 물건들이 위험 요소가 됩니다. 아이의 눈높이에서 안전 점검을 다시 하세요.

    이 가이드가 육아 공부에 큰 도움이 되길 바랍니다. 아래부터는 특정 월령에 맞는 구체적인 놀이법이나 식단표를 정리해 드립니다.


    🎨 월령별 발달을 돕는 추천 놀이법

    아기의 뇌와 근육 발달은 적절한 자극을 통해 더욱 활발해집니다.

    1. 1~3개월: 감각 자극 놀이

    • 흑백 모빌 & 초점 책: 시각 발달을 돕기 위해 침대 옆에 비치해 주세요.
    • 터미 타임(Tummy Time): 깨어 있을 때 아기를 엎드려 놓아 목과 상체 근육을 기르게 합니다. (하루 1~2분씩 짧게 시작)
    • 스킨십 & 눈 맞춤: 기저귀를 갈거나 수유할 때 끊임없이 다정한 목소리로 말을 걸어주세요.

    2. 4~6개월: 신체 활동 놀이

    • 거울 놀이: 거울 속 자신의 모습을 보여주며 자아 인식을 돕습니다.
    • 딸랑이 쥐기: 손근육 발달을 위해 다양한 질감과 소리가 나는 딸랑이를 쥐여줍니다.
    • 비행기 태우기: 아기를 들어 올리며 균형 감각을 자극합니다.

    3. 7~9개월: 탐색 및 소근육 놀이

    • 까꿍 놀이: 대상영속성(눈앞에 없어도 존재함)을 기르는 가장 좋은 놀이입니다.
    • 볼풀장 & 터널 통과하기: 기어 다니기가 능숙해지도록 장애물을 만들어 줍니다.
    • 촉감 놀이: 미역, 국수, 두부 등을 만지고 으깨며 오감을 자극합니다.

    4. 10~12개월: 모방 및 사회성 놀이

    • 곤지곤지, 잼잼: 부모의 동작을 따라 하게 하며 모방 능력을 키웁니다.
    • 공 굴리기: 서로 공을 주고받으며 상호작용하는 법을 배웁니다.
    • 장난감 전화기 놀이: “여보세요~” 하며 사회성과 언어 발달을 돕습니다.

    🥄 단계별 이유식 & 식단 가이드

    아기의 소화 기관 발달에 맞춰 음식의 질감을 조절하는 것이 핵심입니다.

    단계권장 시기입자 및 질감횟수 및 특징
    초기 1단계4~6개월미음 (수프 형태)하루 1회 / 쌀미음으로 시작해 채소 한 가지씩 추가
    초기 2단계6개월묽은 죽소고기를 매일 섭취하여 철분을 보충해야 함
    중기7~8개월0.3cm 정도의 알갱이하루 2회 / 죽 형태이며 손으로 으깨지는 정도
    후기9~11개월0.5cm 이상 진밥하루 3회 / 잇몸으로 씹을 수 있는 무른 무 형태
    완료기12개월 이후진밥 또는 어른 밥간이 약한 유아식 시작 / 생우유 섭취 가능

    ⚠️ 꼭 기억해야 할 주의사항

    1. 알레르기 테스트: 새로운 식재료를 추가할 때는 3일 정도 간격을 두고 아기의 피부 발진이나 설사 여부를 확인하세요.
    2. 금지 음식: 돌 이전의 아기에게 ‘꿀’은 절대 금지입니다. (보툴리누스균 위험) 또한 너무 딱딱한 견과류나 질긴 음식은 질식의 위험이 있으니 주의하세요.
    3. 자기주도 학습: 9개월 이후부터는 아기가 직접 손으로 집어 먹는 ‘핑거 푸드’를 제공해 소근육 발달과 식사 즐거움을 느끼게 해주세요.

    마지막으로 아기 방 인테리어나 꼭 사야 할 필수 육아 아이템 리스트를 정리해드립니다.


    🏠 1. 발달을 돕는 아기 방 인테리어 팁

    아기 방은 단순히 예쁜 공간을 넘어, 아이의 감각과 독립심을 키워주는 공간입니다.

    • 저상형 가구 배치: 아기가 기거나 걷기 시작할 때 스스로 침대에 올라가거나 책을 꺼낼 수 있도록 낮은 가구를 배치하세요. 이는 아이의 자기 주도성을 키워줍니다.
    • 안전한 조명 (수유등): 아기의 시력을 보호하기 위해 직사광선보다는 은은한 간접 조명을 사용하세요. 밤중 수유나 기저귀 교체를 위해 밝기 조절이 가능한 무드등은 필수입니다.
    • 색상 심리학: 0~6개월까지는 시각 자극을 위해 대비가 강한 색상이 좋지만, 전체적인 방 분위기는 파스텔 톤이나 베이지 계열로 꾸며 심리적 안정감을 주는 것이 좋습니다.
    • 공기 질 및 온도 관리: 아기 방은 항상 **온도 22~24도, 습도 40~60%**를 유지해야 합니다. 공기청정기와 가습기를 배치하되 아기 손이 닿지 않는 곳에 두세요.

    🍼 2. 월령별 필수 육아 아이템 리스트

    아이의 성장 단계에 따라 꼭 필요한 ‘꿀템’들이 달라집니다.

    [신생아 ~ 3개월] 안전과 숙면이 우선

    • 스와들업/속싸개: 모로 반사(깜짝 놀라는 반사)를 방지해 아기의 숙면을 돕습니다.
    • 역류방지쿠션: 수유 후 아기가 게워내는 것을 막아주는 신세계 아이템입니다.
    • 비접촉 체온계: 수시로 열을 체크해야 하는 아기에게 필수입니다.

    [4개월 ~ 6개월] 활동량 증가와 이유식 시작

    • 에듀테이블/점퍼루: 뒤집고 앉기 연습을 하며 신체 활동을 도와주는 장난감입니다.
    • 범보 의자: 이유식을 먹일 때나 사진 촬영 시 아기를 안정적으로 앉혀줍니다.
    • 이유식 조리기 세트: 저울, 믹서기, 실리콘 큐브 등 이유식 준비물이 대거 필요합니다.

    [7개월 ~ 9개월] 탐색과 안전 사고 방지

    • 베이비룸 & 안전 문: 기어 다니기 시작하면 위험한 곳(주방, 현관 등)에 못 가도록 막아야 합니다.
    • 모서리 보호대: 가구 모서리에 부딪히는 사고를 방지합니다.
    • 촉감 장난감: 손가락을 많이 쓰는 비지보드나 소리 나는 사운드북이 좋습니다.

    [10개월 ~ 12개월] 걸음마와 독립성

    • 걸음마 보조기: 아기가 밀면서 걷는 연습을 할 수 있는 장난감입니다.
    • 빨대컵: 젖병에서 컵으로 넘어가는 훈련이 필요한 시기입니다.
    • 유아용 식기 세트: 스스로 숟가락질을 해볼 수 있도록 흡착 식판과 유아용 수저를 준비하세요.

    📝 3. 포스팅 마무리

    “12개월까지의 성장은 정말 눈부십니다. 하지만 가장 중요한 것은 우리 아이의 속도를 믿어주는 부모님의 사랑이겠죠? 여러분의 아기는 지금 어떤 단계를 지나고 있나요? 댓글로 아이의 소중한 순간들을 공유해 주세요!”

  • 아이폰 17 배터리 성능 최적화

    아이폰 17 배터리 성능 최적화

    아이폰 17 배터리 성능 최적화: 수명을 2배 늘리는 필수 설정 가이드(iOS 26 대응)

    2025년 하반기 출시된 아이폰 17 시리즈는 강력한 성능과 고도화된 AI(Apple Intelligence) 기능을 자랑하지만, 그만큼 배터리 관리의 중요성도 커졌습니다. 특히 최신 iOS 26 환경에서는 기존 모델과는 다른 새로운 최적화 로직이 적용되어 있습니다. 오늘은 소중한 내 아이폰 17의 배터리 효율을 극대화하고, 성능 저하 없이 오래 사용할 수 있는 팁을 정리해 드립니다.

    1. 하드웨어 수명을 결정짓는 ‘충전 습관’의 변화

    배터리는 소모품이지만, 어떻게 충전하느냐에 따라 1년 뒤의 성능 상태(Battery Health)가 완전히 달라집니다.

    • 충전 한도 85~90% 설정 (필수): 아이폰 15 시리즈부터 도입된 충전 한도 설정이 아이폰 17에서는 더욱 세밀해졌습니다. 설정 > 배터리 > 충전으로 이동해 한도를 85% 또는 90%로 설정하세요. 리튬 이온 배터리는 100% 완충 상태로 오래 방치될 때 스트레스를 가장 많이 받습니다. 90%만 채워도 하루 사용에 큰 지장이 없다면, 이 설정만으로도 배터리 노화를 2.5배 늦출 수 있습니다.
    • 완전 방전 피하기 (20-80 법칙): 배터리 잔량이 0%가 되어 전원이 꺼지는 현상은 배터리 셀에 치명적인 손상을 줍니다. 가급적 20% 미만으로 떨어지기 전에 충전을 시작하고, 80~90% 사이에서 충전을 마치는 습관을 들이세요.

    2. iOS 26 신기능 ‘적응형 전력 모드’ 활용

    iOS 26 버전부터는 기존의 저전력 모드보다 진화한 ‘적응형 전력 모드(Adaptive Power Mode)’가 탑재되었습니다.

    • 지능형 제어: 설정 > 배터리 > 전력 모드에서 활성화할 수 있습니다. 이 기능은 사용자의 패턴을 분석하여 배터리가 평소보다 빨리 소모될 때만 백그라운드 활동을 제한하고 디스플레이 밝기를 미세하게 조절합니다. 무조건 성능을 낮추는 기존 방식보다 훨씬 쾌적하면서도 효율적입니다.
    • Apple Intelligence 최적화: 아이폰 17의 핵심인 AI 기능은 Neural Engine을 상시 가동합니다. 만약 AI 글쓰기 도구나 실시간 요약 기능을 자주 쓰지 않는다면 관련 설정을 필요한 것만 켜두는 것이 전력 소모를 줄이는 핵심입니다.

    3. 디스플레이: 가장 큰 배터리 도둑 잡기

    아이폰 17의 화려한 디스플레이는 가장 많은 전력을 소비하는 부품입니다.

    • 다크 모드 활성화: 아이폰 17의 OLED 디스플레이는 검은색을 표현할 때 소자를 완전히 끕니다. 다크 모드 사용 시 화이트 모드 대비 배터리 지속 시간이 최대 30% 이상 향상됩니다.
    • ProMotion 주사율 제한: 120Hz의 부드러운 화면은 만족스럽지만 전력을 많이 씁니다. 만약 배터리를 아껴야 하는 상황이라면 설정 > 손쉬운 사용 > 동작 > 프레임률 제한을 통해 60Hz로 고정해 보세요.
    • Always-On Display(AOD) 설정: 화면이 꺼져 있어도 시계가 보이는 AOD 기능은 편리하지만 매시간 1~2%의 배터리를 추가로 소모합니다. 설정 > 디스플레이 및 밝기 > 항상 켬 디스플레이에서 배경화면 보기를 끄거나, 아예 기능을 해제하면 상당한 절약 효과를 볼 수 있습니다.

    4. 네트워크 및 백그라운드 설정 최적화

    • 5G 자동 모드 사용: 5G 신호가 불안정한 곳에서는 LTE와 5G를 오가며 배터리를 과도하게 사용합니다. 설정 > 셀룰러 > 데이터 옵션에서 ‘5G 우선’보다는 ‘5G 자동’으로 설정하여 지능적인 전환을 유도하세요.
    • 백그라운드 앱 새로 고침 정리: 나도 모르는 사이에 앱들이 정보를 업데이트하며 배터리를 씁니다. 설정 > 일반 > 백그라운드 앱 새로 고침에서 카카오톡이나 지도 등 실시간 알림이 중요한 앱을 제외하고는 모두 ‘끔’으로 설정하는 것이 좋습니다.

    5. 발열 관리: 배터리의 가장 큰 적

    아이폰 17은 내부 냉각 시스템(베이퍼 챔버)이 개선되었지만, 여전히 뜨거운 환경은 배터리 성능에 독입니다. 직사광선 아래 차 안에 두거나, 고사양 게임을 충전하면서 플레이하는 행동은 피해야 합니다. 배터리 온도가 높아지면 기기가 스스로 충전을 멈추거나 성능을 제한하는데, 이는 이미 배터리에 무리가 가고 있다는 신호입니다.


    마치며

    아이폰 17의 배터리 수명은 기기의 중고가 방어뿐만 아니라 쾌적한 사용 경험을 위해 매우 중요합니다. 위의 설정들을 한 번만 세팅해 두면, 2~3년 뒤에도 신제품 못지않은 배터리 효율을 유지하실 수 있을 것입니다. 지금 바로 설정 창을 열어 나만의 최적화 세팅을 시작해 보세요!

  • [JavaScript] 자바스크립트 모듈 패턴

    [JavaScript] 자바스크립트 모듈 패턴

    모듈 패턴이란?

    모듈이란 전제 어플리케이션의 일부를 독립된 코드로 분리하여 만들어 놓은 것이다.

    모듈화를 했을 때 장점

    • 자주 사용되는 코드를 별도의 파일로 만들어서 필요할 때마다 활용할 수 있다.
    • 코드를 개선하면 이를 사용하고 있는 모든 애플리케이션의 동작이 개선된다.
    • 코드 수정 시에 필요한 로직을 빠르게 찾을 수 있다.
    • 필요한 로직만을 로드해서 메모리의 낭비를 줄일 수 있다.
    • 한번 다운로드된 모듈은 웹브라우저에 의해서 저장되기 때문에 동일한 로직을 로드할 때 시간과 네트워크 트래픽을 절약할 수 있다.(브라우저에서만 해당)

    객체 리터럴을 사용한 모듈 패턴

    자바스크립트에서 모듈을 구현하는 가장 쉬운 방법은 객체 리터럴을 사용하는 방법이다.

    var module = {
        key: 'data',
        publicMethod: function() {
            return this.key;
        }
    }
    
    console.log(module.key); // data
    console.log(module.publicMethod()); // data
    

    객체 리터럴은 모듈 패턴이기도 하며, 하나의 객체라는 점에서 싱글톤 패턴이라고도 할 수 있다. 동일한 코드를 어떠한 관점에서 보느냐에 따라 다양한 패턴이 될 수 있다. 객체 리터럴은 간단하지만 모든 속성이 공개되어있다는 단점이 있다. 독립된 모듈은 자체적으로 필요한 내부 변수 및 내부 함수를 모두 갖고 있어야 하므로 클로저를 이용해야 한다.

    아래는 클로저를 활용한 모듈패턴이다.

    클로저를 활용한 모듈 패턴

    var module = (function() {
    
        /**
            * -----------------------
            * 모듈 패턴을 구현할 클로저 코드
            * -----------------------
            */
    
        // 은닉될 멤버 정의
        var privateKey = 0;
        function privateMethod() {
            return privateKey++;
        }
    
        // 공개될 멤버(특권 메서드) 정의
        return {
            publicKey: privateKey,
            publicMethod: function() {
                return privateMethod();
            }
        }
    
    })();
    
    console.log(module.publicMethod()); // 0
    console.log(module.publicMethod()); // 1
    

    모듈 패턴의 반환값은 함수가 아닌 객체이다. 위의 코드를 순서대로 보면 익명함수가 자동으로 실행되고 반환된 객체를 module 변수에 할당한다. 따라서 module.publicMethod()처럼 메서드를 호출할 수 있다. 자동 호출되는점을 제외하고 클로저와 유사하다.

    클로저 경우

    function func() {
        var private = 0;
        return function() {
            private++;
            return private;
        }
    }
    var val = func();
    console.log(val()); // 1
    console.log(val()); // 2
    

    그리고 인스턴스를 여러개 만들어 낼 수 있는 구조라는 점에서 싱글톤 패턴과 차이가 있다.

    싱글톤 패턴 경우

    var singleton = (function() {
    
        var instance;
        var private = 0;
        function init() {
            return {
                publicKey: private,
                publicMethod: function() {
                    return publicKey;
                }
            }
        }
        return function() {
    
            // 싱글톤 패턴은 아래 조건문에서 처음 인스턴스가 선언되면 다시 인스턴스를 만들지 않고 기존의 인스턴스를 리턴한다.
            if (!instance) {
                instance = init();
            }
            return instance;
        }
    })()
    
    var singleton1 = singleton();
    var singleton2 = singleton();
    console.log(singleton1 === singleton2); // true
    

    하나의 인스턴스를 선언하지 않고 여러개의 인스턴스를 생성하려면 익명함수를 사용하지 않고 생성자 함수 방식으로 만들면 된다.

    var Module = function() {
    
        var privateKey = 0;
        function privateMethod() {
            return privateKey++;
        }
    
        return {
            publicKey: privateKey,
            publicMethod: function() {
                return privateMethod();
            }
        }
    
    }
    
    var obj1 = Module();
    console.log(obj1.publicMethod()); // 1
    console.log(obj1.publicMethod()); // 2
    
    var obj2 = Module();
    console.log(obj2.publicMethod()); // 1
    console.log(obj2.publicMethod()); // 2
    

    위처럼 Module 함수를 정의하여 함수를 호출하면 여러개의 인스턴스를 생성할 수 있다. 클로저 인스턴스와 유사하지만, 한가지 차이점은 내부의 익명함수에서 반환값이 함수가 아니라 객체를 반환한다는 점이다.

    모듈 패턴과 네임 스페이스 패턴을 함께 사용하면 더욱 깔끔한 코드가 완성된다.

    var app = app || {};
    app.module = (function() {
    
        var privateKey = 0;
        function privateMethod() {
            return privateKey++;
        }
    
        return {
            publicKey: privateKey,
            publicMethod: function() {
                return privateMethod();
            }
        }
    })();
    
    console.log(app.module.publicMethod()); // 0
    console.log(app.module.publicMethod()); // 1
    

    References

    module pattern (모듈패턴) #1
    [JS_Design Pattern] 2. 모듈 패턴 (Module Pattern)

  • [JavaScript] 자바스크립트 클로저

    [JavaScript] 자바스크립트 클로저

    정의

    중첩함수에서 내부함수가 외부함수의 환경을 기억하는것을 클로저라고 한다.

    function func() {
        var foo = 'data';
        return function() {
            return foo;
        }
    }
    

    func라는 함수를 선언하고 foo변수에 ‘data’문자열을 추가한 뒤 foo변수를 리턴하는 익명함수를 선언하였다.

    var closure = func();
    console.log(closure());
    // 'data'
    

    func함수의 리턴값을 closure변수에 할당한 뒤 closure를 실행한 값을 콘솔로 찍어보았다. 결과는 ‘data’라는 문자열이 출력되었다. func의 지역변수로 있는 foo는 func함수가 끝나면서 소멸되어야하지만 값을 잃지 않고 ‘data’값을 가지고 있다. 이 현상을 클로저라 한다. 다른 구문도 살펴보겠다.

    function count() {
        var num = 0;
        return function() {
            num++;
            return num;
        }
    }
    
    var closure = count();
    console.log(closure());
    console.log(closure());
    console.log(closure());
    // 1
    // 2
    // 3
    

    count함수의 지역변수인 num값이 소멸되지 않고 계속 카운트되는 것을 확인해 볼 수 있다.

    특징

    변수의 은닉화

    자바스크립트에서는 인스턴스를 생성할때 Private Variables에 대한 접근 권한 문제가 있다.

    function Create(name) {
        this._name = name;
    }
    
    var obj = new Create('민수');
    console.log(obj._name);
    // 민수
    

    위에서 생성된 obj객체의 _name프로퍼티는 변수명 앞에 _를 포함하였기 때문에 Private Variables로 쓰고싶다는 의도를 알 수 있다. 하지만 _name프로퍼티는 동적으로 변경될 수 있다.

    obj._name = '인성';
    console.log(obj._name);
    // 인성
    

    이 경우 클로저를 사용하여 외부에서 내부변수에 접근하는것을 제한할 수 있다.

    function create(name) {
        var _name = name;
        return function() {
            console.log(_name);
        }
    }
    
    var hello = create('민수');
    hello();
    // 민수
    

    여기서는 외부에서 _name에 접근할 방법이 전혀 없다. 이렇게 클로저를 활용하여 은닉화를 해결할 수 있다.

    고유한 환경

    클로저는 고유한 환경을 가지고 있다.

    function func(name) {
        var txt = name;
        return function() {
            return txt;
        }
    }
    
    var closure01 = func('민수');
    var closure02 = func('인성');
    var closure03 = func('한나');
    
    console.log(closure01()) // 민수
    console.log(closure02()) // 인성
    console.log(closure03()) // 한나
    

    위의 구문을 보면 txt변수가 동적으로 변화하는 것처럼 보이지만, 실제로는 txt변수 자체가 여러번 생성된 것이다. 즉, closure01(), closure02(), closure03()은 서로 다른 환경을 가지고 있다. 서로 다른 환경을 가지고 있다는것은 그만큼 메모리면에서 큰 비효율을 낳는다.

    function Func(input) {
        this.name = input;
        this.get = function() {
            return this.name;
        }
        this.set = function (rename) {
            this.name = rename;
        }
    }
    
    var obj = new Func('민수');
    console.log(obj.get());
    

    위 코드는 생성자함수를 사용하여 인스턴스를 생성하는 구문인데, 클로저가 두번(get, set)이나 생성되었다. 이 상태에서 인스턴스를 계속 만들면 같은일을 하는 클로저가 중복으로 생성되고 메모리낭비가 심해질 것이다.
    따라서 클로저는 객체의 prototype안에 저장함으로써 같은 기능을 모든 인스턴스가 공유하는 형태로 코드를 만들어야한다.

    function Func(input) {
        this.name = input;
    }
    Func.prototype.get = function() {
        return this.name;
    };
    Func.prototype.set = function(rename) {
        this.name = rename;
    };
    
    var obj = new Func('민수');
    console.log(obj.get());
    

    이렇게 prototype안에 클로저를 넣으면, 인스턴스가 생성되더라도 중복으로 메모리를 낭비하지 않고, 생성자 내부의 prototype안의 클로저를 참조하기 때문에 메모리낭비를 방지할 수 있다.

    정리

    • 클로저는 독립적인(자유) 변수를 가리키는 함수 또는 클로저 안에 정의된 내부함수는 만들어진 환경을 기억한다.
    • 클로저는 외부함수의 스코프 영역에 접근할 수 있고, 그것을 기억하고 있어야 한다.
    • 외부함수가 종료된 후에도 내부함수는 외부함수를 계속 참조하고 있어야 한다.
    • 데이터의 캡슐화 및 정보은닉에도 사용 가능하다.

    References

    JavaScript 클로저(Closure)

  • [JavaScript] 크롬으로 디버깅하기

    [JavaScript] 크롬으로 디버깅하기

    크롬 개발자 도구의 Sources패널로 디버깅을 할 수 있다.

    예제

    function hello() {
        return 'hello';
    }
    
    function world() {
        return 'world';
    }
    
    function greetinf() {
        var h = hello();
        var w = world();
        document.getElementById('msg').setAttribute('value', h + w);
    }
    
    <input type="text" id="msg" />
    <button type="button" onclick="greetinf()">click</button>
    

    버튼을 클릭하면 greetinf함수가 실행되며, h, w변수에 차례대로 값이 할당된 후 인풋 태그에 결과 값(helloworld)이 출력되는 구문이다.

    결과

    디버깅

    크롬 개발자 도구의 소스탭을 들어가면 아래 처럼 확인할 수 있다.

    개발자 도구는 특정 라인이 아닌 글로벌한 이벤트에 대해 중단점을 만들 수 있다. 좌측 하단의 Event Listener Breakpoints탭으로 들어가 Mouse > click를 체크해준다. 화면으로 넘어가 버튼을 클릭하면 이벤트가 실행되면서 이벤트가 실행된 코드를 소스탭에서 확인할 수 있다.

    1. Breakpoints

    중단점을 이용하면 실행이 중지된 시점에 변수가 어떤 값을 담고 있는지 알 수 있다. 또한 실행이 중지된 시점을 기준으로 명령어를 실행할 수도 있다.

    2. Pretty Print

    압축 파일(min)을 보기 좋게 정렬하여 볼 수 있다.

    3. Resume Script Execution(단축키: F8)

    스크립트 실행을 다시 시작한다. 추가 중단점이 없는 경우, 실행이 쭉 이어지고 디버거는 동작하지 않는다.

    4. Step (단축키 F9)

    다음 명령어를 실행한다. Step버튼을 계속 누르면 스크립트 전체를 문 단위로 하나하나 실행할 수 있다.

    5. Step over next function call(단축키 F10)

    다음 명령어를 실행하되, 함수 안으로 들어가진 않는다. Step과 유사하지만, 다음 문이 함수 호출일 때 Step과는 다르게 동작한다.(alert 같은 내장함수에는 해당하지 않고, 직접 작성한 함수일 때만 동작이 다르다.) Step은 함수 내부로 들어가 함수 본문 첫 번째 줄에서 실행을 멈춘다. 반면 Step over next function call은 보이지 않는 곳에서 중첩 함수를 실행하긴 하지만 함수 내로 진입하지 않는다. 함수 호출 시 내부에서 어떤 일이 일어나는지 궁금하지 않을 때 유용하다. 실행은 함수 실행이 끝난 후에 즉시 멈춘다.

    6. Step into next function call(단축키 F11)

    Step과 유사한데, 비동기 함수 호출에서 Step과는 다르게 동작한다. StepsetTimeout(함수 호출 스케줄링에 쓰이는 내장 메서드)같은 비동기 동작은 무시한다. 반면 Step into next function call는 비동기 동작을 담당하는 코드로 진입하고, 필요하다면 비동기 동작이 완료될 때까지 대기한다.

    7. Step out of current function(단축키 shift + F11)

    현재 실행 중인 함수의 실행을 계속 이어가다가 함수 본문 마지막 줄에서 실행을 멈춘다. 실수로 Step을 눌러 내부 동작을 알고 싶지 않은 중첩 함수로 진입했거나 가능한 한 빨리 함수 실행을 끝내고 싶은 경우 유용하다.

    8. Deactivate breakpoints

    모든 중단점을 일시적으로 활성화/비활성화한다.(실행에는 영향이 없음)

    9. Pause on excepoints

    활성화되어 있고, 개발자 도구가 열려있는 상태에서 스크립트 실행 중에 에러가 발생하면 실행이 자동으로 멈춘다. 실행이 중단되었기 때문에 변수 등을 조사해 어디서 에러가 발생했는지 찾을 수 있게 된다. 개발하다가 에러와 함께 스크립트가 죽었다면 디버거를 열고 이 옵션을 활성화한 후, 페이지를 새로고침하면 에러가 발생한 곳과 에러 발생 시점의 컨텍스트를 확인할 수 있다.

    10. Scope

    현재 정의된 모든 변수를 출력한다. Local은 함수의 지역변수를 보여준다. 지역 변수 정보는 소스 코드 영역에서도 확인(강조 표시)할 수 있다. Global은 함수 바깥에 정의된 전역 변수를 보여준다. Local 하위 항목으로 this에 대한 정보도 출력된다.

    11. Watch

    표현식을 평가하고 결과를 보여준다. Add watch expression 버튼을 클릭해 원하는 표현식을 입력한 후 Enter를 누르면 중단 시점의 값을 보여준다. 입력한 표현식은 실행 과정 중에 계속해서 재평가된다.

    Call Stack

    코드를 해당 중단점으로 안내한 실행 경로를 역순으로 표시한다.

    References

    Chrome으로 디버깅하기
    Chrome DevTools에서 자바스크립트 디버깅 시작하기
    크롬 개발자 도구를 이용한 자바스크립트 디버깅
    생활코딩 – Sources

  • [Terminal] 맥 터미널 쉘 접속

    [Terminal] 맥 터미널 쉘 접속

    윈도우에서는 Putty라는 프로그램으로 ssh접속을 하였지만 맥에서는 터미널로 바로 접속이 가능하다.

    $ ssh [ID]@[HOST]
    

    예를들어 webapp이 아이디이고 127.0.0.1가 호스트 번호 라면

    $ ssh webapp@127.0.0.1
    

    라고 입력한 뒤 패스워드를 입력하면 된다.

  • [Terminal] 맥 터미널 명령어

    [Terminal] 맥 터미널 명령어

    명령어Windows 커맨드Mac OS 터미널
    현재 디렉토리cdpwd
    현재 디렉토리 파일 리스트 보기dirls
    디렉토리 이동cdcd
    디렉토리 생성mkdirmkdir
    디렉토리 삭제rmdirrmdir
    화면 클리어clsclear
    null 파일 생성type NUL >touch
    파일 삭제delrm
    파일 이동movemv
    디렉토리 이름 바꾸기renmv
    Explorer/Finder 에서 열기startopen
  • [JavaScript] 자바스크립트 싱글톤 패턴

    [JavaScript] 자바스크립트 싱글톤 패턴

    전체 시스템에서 하나의 인스턴스만 존재하도록 보장하는 객체 생성패턴을 의미한다. 대표적으로 $를 활용해서 DOM을 조작하고 이벤트도 다루는 jQuery가 있으며, 객체 리터럴도 싱글톤 패턴이라고 할수 있다.(자바스크립트에서 객체 리터럴로 생성한 객체는 다른 객체와 같을 수 없다. 객체 내부의 내용이 같더라도 참조하는 객체가 다르기 때문이다.) 객체 리터럴은 한계가 있는데 비공개 프로퍼티 및 함수를 선언할 수 없다.

    var obj = {
        name: 'myName',
        get: function() {
            return this.name;
        }
    }
    console.log(obj.get()); // myName
    

    비공개 프로퍼티 및 함수를 정의하려면 클로저(closure)를 활용해야 한다. 즉 제대로 된 싱글톤 패턴은 객체 리터럴 + 클로저의 조합이 필요하다고 할 수 있다. 아래 코드를 확인해보면

    var singleton = (function() {
    
        // 비공개 프로퍼티 정의
        var instance;
    
        // 비공개 메서드 정의
        function init() {
    
            // singleton 인스턴스 정의
            return {
    
                // 공개 프로퍼티 정의
                prop: 'value',
    
                // 공개 메서드 정의
                method: function() {
                    return 'hello'
                }
    
            };
    
        }
    
        // 공개 메서드인 getInstance를 정의한 객체, 비공개 프로퍼티 및 메서드에 접근 가능(클로저)
        return {
    
            getInstance: function() {
    
                // 인스턴스가 선언이 안되있는경우 인스턴스 생성
                if (!instance) {
                    instance = init();
                }
    
                // 인스턴스가 선언이 되있는 경우 인스턴스 반환
                return instance;
    
            }
        }
    })()
    
    var singleton1 = singleton.getInstance();
    console.log(singleton1.method());
    var singleton2 = singleton.getInstance();
    console.log(singleton1 === singleton2); // true
    

    위 코드는 비공개 메서드인 init()의 return문에서 객체 리터럴로 정의되는 인스턴스가 싱글톤 객체이며, 전체 시스템에서 하나만 존재하게 된다. 순서대로 보면 익명함수의 return문에는 싱글톤 객체를 구하는 공개 메서드(getInstance)를 포함한 객체를 반환하며, getInstance메서드는 instance값을 확인해 인스턴스가 선언이 안되있는 경우 비공개 메서드인 init를 호출하여 singleton인스턴스를 생성하여 instance에 할당하게 된다.

    이렇게 일반적으로 싱글톤 패턴에서는 이미 객체가 생성되었는지 여부를 알려주는 instance와 같은 내부 변수가 필요하다. 그리고 싱글톤 패턴에서는 내부 변수에 접근할 수 있는 객체를 반환하는 클로저를 이용해야 한다.

    정리를 하면 내부의 getInstance메서드에서 비공개 프로퍼티인 instance에 접근할 수 있다는 것과, getInstance메서드의 호출이 끝나더라도 instance의 값은 계속 유지되는 특성(클로저)를 이용해 prop, method()이 포함된 객체를 유일하게 생성하게 된다. 그래서 singleton.getInstance()를 몇번이나 호출하더라도 얻는 객체는 모두 동일한 싱글톤 객체를 가리키게 된다.

    References

    싱글톤(singleton) 패턴