https://www.notion.so/4-a252da0313804fd28e6f16c4b7146e1b 

 

4장 -수요와 공급

수요와 공급 = 경쟁시장에서 사람들이 상호작용하는 행위

www.notion.so

 

수요와 공급

= 경쟁시장에서 사람들이 상호작용하는 행위

시장

= 특정한 재화나 서비스를 사고파는 사람들의 모임 / 하나의 집단으로써 구매자들은 상품에 대한 수요를 결정하고 , 판매자들도 하나의 집단으로써 상품의 공급을 결정한다

경쟁시장

= 소비자와 판매자가 매우 많아서 개별 소비자나 판매자가 시장가에 거의 영향을 미치지 못하는 시장

시장이

완전 경쟁적

이라고 가정 (4장에서)

(1) 판매되는 재화들이 동일하며

(2) 소비자와 판매자 수가 너무 많아서 각 소비자와 판매자는 시장가격에 영향을 미치지 못한다 (=경쟁시장)

완전경쟁시장에서 소비자,판매자는 가격 수용자 ( 시장에서 결정되는 가격을 받아들임) / 각각 원하는만큼 살수있고 원하는만큼 팔수있다.

⇒ 가장 단순화, 유용한 시장모델, 시장 참여자 모두 시장가격을 주어진것으로 받아들이기 떄문에 분석하기 쉽다.

e.g. 밀시장 (완전경쟁시장), 지역케이블 TV회사 (독점) , 완전경쟁과 완전독점 중간시장도 존재

 

..............................................................................................................................................................

수요표

= 어떤 재화의 가격과 수요량의 관계를 나타내는 표

수요곡선

= 어떤 재화의 가격과 수요량의 관계를 보여주는 그래프

수요량

= 소비자들이 값을 치르고 구입할 의사와 능력이 있는 재화의 장

수요의 법칙

= 다른 조건이 불변일때 , 어떤 재화의 가격이 상승하면, 그 재화의 수요량이 감소하는 법칙

위 그래프는 개인의 수요 , 시장이 어떻게 움직이는지 알기위해서는 시장수요를 알아야함

시장수요

= 개별 수요들의 합 (개별수요의 수평합)

(1) 소득

정상재

= 다른 조건이 불변일떄 소득이 감소(증가) 함에 따라 수요가 감소(증가) 하는 재화

소득이 증가하면 그래프가 오른쪽으로 . 소득이 감소하면 그래프가 왼쪽으로

열등재

= 다른 조건이 불변일때 소득이 증가(감소) 함에 따라 수요가 감소(증가) 하는 재화

e.g. 대중교통수단 / 소득이 증가하면 승용차를 타거나 택시를 타서 대중교통을 덜 사용할것

(2) 연관재의 가격

대체재

= 한 재화의 가격이 하락함에 따라 다른 한 재화의 수요가 감소하는 관계에 있는 두 재화

e.g. 핫도그와 햄버거, 스웨터와 셔츠, 영화관람권과 넷플릭스보완재

= 한 재화의 가격이 하락함에 따라 다른 한 재화의 수요가 증가하는 관계에 있는 두 재화

e.g. 자동차와 휘발유, 컴퓨터와 소프트웨어, 땅콩버터와 잼

(3) 취향

역사적, 심리적 요인에 따라 결정

(4) 미래에 대한 기대

e.g. 다음달부터 소득이 증가할것이라고 기대한다면, 저축을 줄이고 지출이 늘어 아이스크림을 더 살수있을것,

내일 아이스크림 가격이 하락될것같다면 오늘 아이스크림을 덜 사먹을것

(5) 구입자의 수

e.g. 두명만 있는 아이스크림 시장에 한명이 더 들어오면 아이스크림에 대한 시장 수요량은 모든 가격에서 늘어날것. 즉 수요곡선 그래프가 오른쪽으로 이동할것

 

Q. 담배소비를 줄이게 하는 방법?

(1) 담배와 담배 관련 제품에 대한 수요곡선을 왼쪽으로 이동시키는것, 공익광고, 담뱃값에 경고문부착, 티비에서 담배광고 금지.... ⇒ 담배의 수요량을 줄이기 위함

(2)수요 곡선안에서 운동하게 하는것, 담배가격 인상 ⇒ 담배 소비가 줌

문제 : 담배와 대마초는

대체재

, 담배 가격이 오르면 대마초 수요가 증가할것이라고 주장 vs 담배는 '입구'약물

→ 담배가격과 대마초 소비증가는 상관관계가 있음 대체제라기보다는

보완재

!

..............................................................................................................................................................

공급량

= 판매자의 팔 의사와 능력이 있는 수량

공급량을 결정하는 변수에는 여러가지가 있는데 '가격' 이 가장 중요한 변수

공급의 법칙

= 다른 조건이 불변일때, 어떤 재화의 가격이 상승하면, 그 재화의 공급량이 증가하는 법칙

e.g. 아이스크림 가격이 높으면 → 판매수익이 높아짐→ 공급량을 늘리고자함→ 근무시간연장+ 아이스크림 기계 구입+새종업원 채용 / 가격이 낮으면 → 판매수익이 낮아짐 → 폐업하거나 생산중단

공급표

= 어떤 재화의 가격과 공급량의 관계를 나타내는 표

수량에 영향을 미치는 가격외에 다른 변수들이 불변인 상태에서 재화의 가격과 공급량의 관계를 보여줌

공급곡선

= 어떤 재화의 가격과 공급량의 관계를 보여주는 그래프

다른변수들이 동일할떄, 가격이 높을수록 공급량이 증가하기 때문에 우상향한다 (기울기가 플러스다)

공급이 감소하면 왼쪽으로, 공급이 증가하면 오른쪽으로 이동한다.

(1) 요소가격

아이스크림을 생산하려면 크림, 설탕 ,첨가제, 아이스크림 가게, 매장건물,종업원.... 여러가지 요소들이 필요하다.

요소가격이 상승→ 아이스크림 사업의 채산성이 낮아짐→생산량을 줄임 → 극단적일경우 폐업, 생산중단

공급량과 요소가격은 반대방향으로 변함

(2) 기술

자동화 아이스크림 제조기가 발명 → 인력절감 →생산비용감소→공급량 증가

(3) 미래에 대한 기대

아이스크림의 가겨이 오를것이라 기대 → 일부를 재고로 보관하고, 공급량을 줄일것

(4) 판매자의 수

두명이 아이스크림 사업을 그만둔다면, 시장공급량이 줄어들것

.............................................................................................................................................................

<수요와 공급의 결합>

균형

= 수요량과 공급량을 일치시키는 시장가격에 도달한 상태

균형가격(=시장청산가격)

= 수요량과 공급량을 일치시키는 가격 / 소비자들이 구입할 의사와 능력이 있는 수량이 판매자들이 공급할 의사와 능력이 있는 수량과 정확하게 일치 , 즉 시장청산가격이라고함

균형거래량

= 균형가격에서 수요량과 공급량

공급과잉

= 공급량이 수요량을 초과하는 상태

 

(a) 시장가격이 균형가격보다 높을떄 (공급과잉)

(b) 시장가격이 균형가격보다 낮을떄 (물량부족)

  • 수요, 공급 곡선상의 운동 (가격의 변동이기 떄문에 곡선 내에서 움직인다)

(a) : 초과공급/공급과잉이 생긴다 = 재고가 쌓인다 → 가격의 하락 → 수요를 다시 증가시키고 , 공급량의 감소 (조정과정)

(b) : 물량 부족이 생긴다→ 소비자들이 줄을 서서 기다려야한다 → 가격 상승 → 수요량이 감소, 공급량이 증가 (조정과정)

⇒ 수요와 공급이 조정되는 현상을

수요,공급의 법칙

이라고 한다

수요, 공급의 법칙

= 어느 재화의 가격이 그 재화에 대한 수요량과 공급량이 일치하도록 조정되는 현상

.............................................................................................................................................................

균형과 변화에 대한 3단계 분석

(1) 어떤 사건으로 인해 수요곡선이 이동하는지, 공급곡선이 이동하는지, 아니면 두 곡선이 동시에 이동하는지 판정한다

(2) 곡선이 오른쪽으로 이동하는지, 왼쪽으로 이동하는지 판정

(3) 수요,공급 곡선 그래프를 이용해서 수요,공급곡선의 이동이 균형가격과 균형 거래량에 미치는 효과를 분석한다.

 

예1) 수요변화에 따른 시장균형의 변화

  • 여름이 매우 더울떄, 사람들은 더 많이 아이스크림을 원함 → 수요곡선이 오른쪽으로 이동(수요량의 증가)→ 아이스크림에 대한 초과수요가 존재하여 가격이 오름(가격이 증가하고, 거래량도 증가한다)
  • 공급량은 증가했지만, 공급은 변하지 않음
공급

= 공급곡선의 위치

공급량

= 공급자가 판매하고자 하는 수량

공급곡선의 이동 = 공급의 변화 / 수요곡선의 이동 = 수요의 변화

공급곡선상의 운동 = 공급량의 변화 / 수요곡선상의 운동 = 수요량의 변화

 

예2) 공급변화에 따른 시장 균형의 변화

  • 아이스크림 원료인 설탕가격의 상승 (생산비의 상승) → 아이스크림의 공급량이 줄어듬 (수요곡선은 그대로) → 공급곡선이 왼쪽으로 이동 → 초과수요가 존재함으로 가격이 상승/거래량은 감소
  • 공급량이 감소 , 수요량은 감소했지만, 수요는 변하지 않음

 

예3) 수요곡선과 공급곡선이 함께 이동

  • 더운날씨 + 태풍
  • 더운날씨 때문에 수요가 증가 (수요곡선이 이동 ) + 설탕가격 상승으로 공급되는 아이스크림 양이 변함(공급곡선의 이동) → 수요곡선은 오른쪽으로 이동, 공급곡선은 왼쪽으로 이동
  • → (a) 수요가 크게 늘고 , 공급이 약간 감소 → 균형 거래량이 증가
  • → (b) 수요가 약간 늘고 , 공급이 많이 감소 → 균형 거래량이 감소

 

결론 : 수요와 공급은 매우 흔한 경제 현상 ( e.g. 직장을 찾는것은 노동의 공급에 참여하는것) 이는 1.2b 시장이 경제활동을 조직하는 좋은 수단 이라는것에 해당한다. 수요와 공급은 경제에서 생산된 많은 재화와 서비스의 가격을 결정하고 , 결정된 가격은 다시 자원을 배분하는 신호가 된다.

  • 시장경제에서 '가격'은 희소자원을 배분하는 장치가 된다.
  • 가격은 누가 어떤 재화를 얼마나 생산할것인지 결정하기도함 (누가 농부가 되고 말지는 근로자들의 직업선택으로 결정됨)
  • 가격은 능력과 욕구가 다른 수많은 사람들의 행동을 조정하고, 실행되어야 할 일을 실제로 실행하도록 만들어준다. (가격기구)
  • 애덤스미스의 표현대로 시장경제가 보이지 않는 손에 이끌린다면, 가격기구는 보이지 않는 손이 경제라는 교향악단을 지휘할때 사용하는 지휘봉

 

https://www.notion.so/3-05f25f65fed141739ca7eda3e41fa853 

 

3장 -교역

사람들이 거래를 하면 다양한 소비를 할수있다, 즉 거래를 하면 스테이크와 감자구이만 먹거나, 햄버거와 감자튀김을 즐길수 있다. (각각 감자, 고기 한가지만 생산한다고 칠떄)

www.notion.so

 

사람들이 거래를 하면 다양한 소비를 할수있다, 즉 거래를 하면 스테이크와 감자구이만 먹거나, 햄버거와 감자튀김을 즐길수 있다. (각각 감자, 고기 한가지만 생산한다고 칠떄)

생산가능곡선

→ 프랭크 < 루비 ( 고기,감자 둘다 모두더 효율적이다)

두사람 사이에 거래가 없다면(자급자족) : 생산가능곡선 = 소비가능곡선

그래프에서 A,B 의 위치는 프랭크와 루비의 "취향" 에 따라 결정된다

 

  • 거래 O

루비 : 6시간 고기 생산 , 2시간 감자 생산 ( 6시간동안 고기 18 온스/ 감자 12온스 ) (+15 프랭크한테 받음 :

감자 27

/ - 5온스 고기 :

고기 13

)

프랭크 : 감자만 생산( 8시간동안 32온스 감자 생산) (-15 프랭크에게 줌 :

감자 17

/ + 5온스 고기 :

고기 5

)

  • 거래 X

루비 : B

감자24 , 고기 12

프랭크 : A,

감자16 , 고기 4

Q. 루비는 전부 잘하고 프랭크는 전부 못한다. 루비가 무엇을 특화할것인지 어케 알수 있는가 ?

⇒ 절대우위 & 비교우위

..............................................................................................................................................................

절대우위

= 다른 생산자에 비해 같은 상품을 더 적은양의 생산요소를 투입해서 생산할 수 있는 능력

비교우위

= 다른 생산자에 비해 같은 상품을 더 적은 기회비용으로 생산할수있는 능력 / 기회비용의 상대적크기

⇒ 어떤 재화의 생산에 있어서 그 재화의 기회비용이 낮은 생산자가 비교우위에 있다.

⇒ 두사람의 기회비용이 같지 않은한, 한사람이 어떤 재화에 비교우위가 있다면, 다른사람은 반드시 다른재화에서 비교우위가 있다. 한사람이 상대방에 비해 모든 생산물에 비교우위를 갖는것은 불가능.

  • 절대우위적 관점

루비가 감자와 고기에서 절대우위에 있다 (감자 생산에 필요한 요소 투입량, 여기에서는 시간을 의미한다, 기준으로 비교해보면 루비의 감자 생산비용이 더 낮다.)

  • 비교우위적 관점 (기회비용으로 비교해보는 방법)
기회비용

= 생산자들이 당면한 두 재화의 맞교환 비율

루비의 기회비용 : 감자생산을 위해 10분을 더 일한다는것(감자1온스) = 고기 1/2 온스를 포기한다

프랭크의 기회비용 : 감자 1온스의 기회비용 = 고기 1/4온스를 포기한다

⇒ 루비의 고기생산 기회비용 < 프랭크 → 루비가 고기를 더 생산한다 (고기생산에서 비교우위가 있다)

⇒ 루비의 감자생산 기회비용 > 프랭크 → 프랭크가 감자를 더 생산한다 (감자생산에서 비교우위가 있다)

 

전문화와 자유거래를 통해 얻는 이득은 절대우위 x 비교우위 때문이다!!

모든 사람이 각자 자기가 비교우위에 있는 물건의 생산에 특화된다면 경제의 총 생산량은 증가할것 → 모든 사람들을 전보다 잘살게 해줄수 있다.

(1) 첫번쨰 이득 = 증가된 총생산량

(2) 두번쨰 이득 = 교역 이전에 자신들이 내야 했던 각 재화의 기회비용보다 낮은 가격에 재화를 얻을수있음 (싼값에 얻을수있다)

e.g. 프랭크는 고기+5온스 / -감자15온스 ⇒

고기1온스당 감자3온스

(고기1온스의 기회비용은 감자4온스)

이득!

루비는 고기 -5온스 / 감자 + 15온스 ⇒

감자1온스당 고기 1/3온스

(감자1온스당 기회비용은 고기 1/2온스)

이득!

 

결론 : 거래를 통해 두사람 모두가 이득을 보려면 거래가격은 반드시 두 재화의 기회비용 사이에서 결정되어야한다. ( 고기1온스당 감자 3온스와 교환할때, 고기1온스당 각각의 기회비용 사이에있다. / 반대로 감자도 마찬가지. 반드시 중간점이 될 필요는없으나 사이에있는 숫자여야한다.만약 그렇지 않고 고기1온스당 감자5온스일때, 두사람 모두 고기를 팔것. 두사람이 모두 동시에 소비자, 생산자가 될수없음 . 누군가는 생산하고 누군가는 소비해야한다)

 

나라의 개념에서 볼때 ( 전쟁은 승자,패자가 있지만, 국제무역에서는 모두가 승자)

수입품

= 외국에서 생산되어 국내에서 소비되는 재화

수출품

= 국내에서 생산되어 외국에서 소비되는 재화

e.g. 미국 - 근로자 한명이 한달동안 자동차1대 만듬 , 매달 식량2톤 생산 ⇒ 식량 생산에 비교우위가 있음

일본 - 근로자 한명이 한달동안 자동차1대 만듬, 매달 식량 1톤생산 ⇒ 자동차 생산에 비교우위가 있음

하지만.... 나라전체는 더 잘살수있지만 일부 국민들이 손해를 볼수도 있다. 자국 농민들과 자동차 근로자들에게는 서로 다른 효과가 미칠것.

www.notion.so/3-05f25f65fed141739ca7eda3e41fa853

https://www.notion.so/1-10-4430f975117b4bfe94f9b92eb6daec45 

 

1장 -10대기본원리

economy = ‘ 집안 살림하는 사람 ‘

www.notion.so

 

 

economy

= ‘ 집안 살림하는 사람 ‘

희소성

= 사람들이 가지고 싶은 만큼 다 가질 수 없다는 사실 / 한 사회가 가지고 있는 자원의 유한성 

경제학

= 사회가 희소자원을 어떻게 관리하는지를 연구하는 학문 / 즉 얼마나 일하고 무엇을 구입하며, 얼마나 저축하고, 그 저축을 어케 투자하는지 등 같은 사람드르이 의사 결정과정을 연구하는 학문 

경제

= 살아가면서 상호작용하는 사람들의 집단 

효율성

= 가지고 있는 희소자원에서 한 사회가 최대의 효과를얻고자 하는속성 (=제한된 희소자원으로 최대의효과를얻는것)= 파이의크기 

형평성

= 경제발전의혜택이사회 구성원에게 균등하게 분배되는속성 =파이를나누는방법 

기회비용

= 어떤 선택을위해 포기한 모든것 (시간 + 돈 ) 

합리적인사람

= 자신에게 주어진 기회를 계획적이고 체계적으로 활용해서 자신들의목적을 달성하기 위해 최선을다하는 사람들 E.g. 굶을까 배터지게 먹을까 (x) / 반찬을 더먹을까 말까 (o) /시험을 포기할까24시간 공부할까 (x)/ 1시간 더 공부할까쉴까 (o)

한계적변화

= 현재의 행동에 대한계획을 조금씩 바꿔서 조정하는것. 사람들이 하는일의 맨 끝부분에서 일어나는 변화 / 한계편익 > 한계비용보다 클떄만 대안을 선택할것

 

 

경제학의 기본원리

<사람들은 어떻게 결정을 내리는가>

1.1a 기본원리1 : 모든 선택에는 대가가 있다 (= 기회비용이 발생한다)

=우리가 무엇을 얻고자하면,그 대가로 무엇인가포기해야한다는것. E.g.. 대포와 버터의선택 E.g. 사회복지제도, 실업보험제도,개인소득세 제도=> 형평성 상승/효율성 하락 => 파이를를 공평하게 나누고자 하면 파이는더 작아진다.

cE.g.대학에 다니기로 결정할때 기회비용은? => 대학에 다닌다는사실 자체만으로 초래되는 비용은 기회비용이 아님 (식비, 하숙비)/ 가장큰 기회비용은 시간! (학교에 다니는동안 돈을 벌수있는 잠재적 임금소득이가장큰 기회비용),미식축구선수는 대학진학시 기회비용이 매우커서 프로진학

한계편익

= 그 재화 한단위가 주는 추가적인 이득 

한계비용

= 기회비용 

경제적유인

= 처벌 가능성이나 보상같은 사람이 행동하도록 만드는 것 (합리적인 사람은 어떤 행동을 하고자할때 이득과 비용을 계산해서 의사결정을 하기 떄문에 경제적 유인에 바응한다)

1.1c 기본원리3 : 합리적 판단은 한계적으로 이루어진다. E.g. 휴대전화 통화를 한없이하고, 항공사가 평균비용보다 낮은 가격에 표를 팔고, 물보다 다이아를 더 많은 금액을 주고 구입하려는가 ( 한계편익>판계비용)

1.1d 기본원리4 : 사람들은 경제적 유인에 반응한다.

E.g. 높은 가격 -> 소비자들이 소비를 줄일 유인을 제공/공급자들은 생산을 늘리도록 하는 유인을 제공함 높아진 휘발유세 -> 카풀,대중교통 증가,전기자동차 선택 부작용!!!!!!!! : 자동차 안전띠 -> 덜 조심해서 운전함 -> 교통사고의 증가 -> 보행자들이 자동차 사고를 당할 확률이 높아짐. (사망률은 감소했으나 사고건수가 증가함/ 운전자사망률은 거의 변화가 없고 보행자 사망률이 높아짐.===>> 정책이 사람들의 유인ㄱㅜ조를 변화시킨다면 사람들의 행동도 변화함

 

..............................................................................................................................................................

계획경제

= 정부만이 국가 전체의 경제적 후생을 가장 잘 증진시킬 수 있다는 논리에 근거를 두고있다. 

시장경제

= 경제계획 담당자가 결정할 사항을 무수히 많은 기업들과 가계들이 대신 결정함. / 수많은 기업과 가계가 시장에서 상호작용하면서 분산된 의사결정에 의해 자원배분이 이루어지는 경제 체제

<사람들은 어떻게 상호작용하는가>

1.2a 기본원리5 : 자유거래는 모든 사람을 이롭게 한다.

E.g. 두 국가간의 무역은 양국을 모두 이롭게한다.

  • 모든 가정은 어떤 의미에서 경제 내의 다른 모든 가정과 경쟁한다고 볼 수 있따. 그러나 다른 가족과 거래함으로써 많은 이득을 얻는다. => 다양한 재화와 서비스를 가장 낮은 가격으로 구입할 수 있다. ==> 두 국가는 경쟁자인 동시에 파트너

1.2b 기본원리6 : 일반적으로 시장이 경제활동을 조직하는 좋은 수단이다.

  • 경제 추제들이 자신들의 이익만 추구함에 도 불구하고 시장경제가 경제활동을 조직화하여 경제 복지 수준을 전반적으로 향상시키는 가장 유효한 수단임을 역사적 경험을 통해 입증되었다.
  • 가계와 기업들이 시장에서 상호작용하는 과정에서 마치 ‘ 보이지 않는 손’ 에 이끌리는 것처럼 행동하여 바람직한 시장성과를 나타냄 가격 = 보이지 않는 손이 경제활동을 조정하기 위해 사용하는 수단 재화의 가격 = 1) 그 재화의 사회적 가치 2) 재화를 생산하기 위한 비용의 의미 ==>>> 가격은 개별 의사 결정자들이 대부분의 경우 사회복지를 극대화하는 의사결정을 내리도록 유도한다는것이 애덤스미스의 위대한 발견임 세금 은 가격을 외곡하고 기계와 기업의 의사결정을 외곡함. (임대료규제, 가격규제) 공산국에서는 가격이 시장에서 결정되지 않고 중앙정부의 계획 담당자들에 의해 결정됨 => 보이지않는 손을 묶어놓은채 경제를 관리하려함 -> 실패함

1.2c 기본원리7 : 경우에 따라 정부가 시장성과를 개선할수 있다.

재산권

= 한 개인이 희소자원을 소유하고 통제할 수 있는 능력

e.g.) 농부는 자기 수확물이 도둑질 당할것이라고 예상하면 농사를 지을리 없다. / 우리는 정부가 법 진행을 토앻 윌가 생산하는 물건에 대한 권리를 보장해줄것이라고 믿기 때문에 경제활동을 할 수 있다.

시장실패

= 시장이 자유롭게 기능하도록 맡겨두어 효율적인 자원배분을 달성하지 못할경우

(시장실패의 이유 : (1) 외부효과 (2) 시장지배력 )

외부효과

= 한 사람의 행위가 제 3자의 경제적 후생에 영향을 미치는 현상 (e.g. 환경오염)

시장지배력

= 한 사람이나 기업이 시장가격에 상당한 영향력을 미칠 수 있는 능력

(e.g. 우물 주인은 물 공급에 대한 시장 지배력이 있다 = 독점권)

 

  • 정부가 시장에 개입해야하는 이유

1) 효율성을 높이려는 경우 (파이를 키우려는 목적)

시장실패시 (외부효과, 시장지배력) ⇒>> 적절한 정부정책을 통해 경제적 효율성을 높일 수 있다.

2) 형평성을 높이려는 경우 (파이를 나누는 방법을 바꾸려는 목적)

불평등을 해소하기 위해 정부가 개입함 ( 소득세, 사회보장제도)

..............................................................................................................................................................

<나라경제는 어떻게 움직이는가> 1.3a 기본원리8 : 한나라의 생활수준은 그 나라의 생산능력에 달려있다.

생산성

= 노동 한 단위를 투입하여 만들어 낼수 있는 재화와 서비스의 수량

 

생산성과 생활수준의 관계?

미국 근로자에게 최대의 혜택 을 가져다 준것 ⇒ 생산성의 향상

  • 생활수준을 향상시키는 가장 확실한 정책 = 생산성 향상!!!!

⇒ 잘 교육받은 근로자들이 좋은 장비와 최고의 기술로 생산활동에 임하도록 보장해주면 생산성은 향상됨

1.3b 기본원리9 : 통화량이 지나치게 증가하면 물가는 상승한다.인플레이션

= 물가수준의 전반적인 상승현상

통화량의 증가 (원인) ⇒ 높은 물가 상승률

1.3c 기본원리 10 : 단기적으로는 인플레이션과 실업 사이에 상충관계가 있다.

경기순환

= 고용, 생산량과 같은 경제활동의 지표가 주기적으로 오르내리는 현상 ( 대체적으로 불규칙적이고 예측하기 힘들다)

  • 통화량 증가의 단기효과

1) 경제 내에 통화량이 증가하면 전반적으로 지출이 증가/ 그결과로 재화와 서비스에 대한 수요가 증가

2) 수요가 증가하면 → 기업들의 가격인상 → 생산량 증가 → 더많은 사람들을 고용

3) 고용이 증가하면 실업률이 낮아짐

  • 통화량 증가의 장기효과 (인플레이션)

 

e.g.) 미국 경제 침체

현상 : 주택대출의 부실로 인해 초래된 금융시스템의 문제 → 경제의 다른부분에까지 영향을 미쳐 → 소득이 줄고 실업이 늠

오바마 대통령의 해법

1) 세금 낮추기

2) 정부지출을 늘리기 (경기부양정책)

⇒ 장기적으로 인플레이션을 유발할것이라고 우려

 

 

 

 

www.notion.so/1-10-4430f975117b4bfe94f9b92eb6daec45www.notion.so/1-10-4430f975117b4bfe94f9b92eb6daec45

https://www.notion.so/1-10-4430f975117b4bfe94f9b92eb6daec45 

 

https://www.notion.so/2-3bc3f968f5814f1c86265a3db61f0f11 

 

2장-경제순환모형

< 과학적 방법론 > 관찰, 이론, 그리고 또 관찰

www.notion.so

 

< 과학적 방법론 > 관찰, 이론, 그리고 또 관찰

e.g. 인플레이션에 대한 이론을 만들어보자

 

결론/이론 : 인플레이션은 정부가 너무 많은 돈을 발행해서 발생하는것이다

검증 : 여러나라의 물가와 통화량 자료를 수집해서 분석 ( 통화량의 증가, 물가 상승률간의 상관관계를 통해서 이론의 타당성을 입증할 수 있다. )

>>

경제학에서는 실험이 매우 어렵거나 불가능
  • 우연히 만들어지는 현상과 자료에 의존해서 연구할수밖에 없다.
  • 역사적 경험을 통해 얻는 자료에 크게 의존함

 

(1) 가정 : 복잡한 세상을 단순화해서 문제를 쉽게 이해할 수 있도록 해줌

⇒ 문제의 핵심을 보다 명확하게 분석할수 있고, 가상세계에서 국가간의 무역을 이해한뒤 이를 활용해서 실제 세상에 국제 무역의 현상을 보다 더 잘 이해가능

e.g. 국제무역의 효과를 분석하기 위해서 세앙에 두나라와 두 재화만 존재한다고 가정

e.g. 정부가 통화량을 줄이면 어떤 효과? >>>>>> 각각 다른 가정을 적용해야한다

단기적 효과 / 장기적 효과 (각기 다른 가정을 적용해야함)

단기적 효과 ⇒ 가격이 그다지 많이 변하지않는다 / 극단적으로 변한다

장기적 효과 ⇒ 모든 가격이 완전히 자유롭게 움직인다고 가정해야함.

 

 

(2) 경제모형 (생물시간 인체모형같은것,비현실적인 단순성떄문에 인체구조이해에 도움을 줌)

경제학에서 현실세계를 이해하기 위해 사용하는 모형(현실을 단순화) / 대부분 그래프와 방정식으로 구성된다.

 

경제 순환 모형도

= 시장을 통해 가계와 기업간에 자금이 순환하는 과정을 그림으로 표현한 경제모형

의사 결정자(2종류 존재) = 기업, 가계

생산요소

= 노동,토지,자본(건물과 생산설비)

생산요소시장

= 기업이 재화와 서비스를 생산하는데 필요한 요소들을 가계가 공급함

  • 가계는 노동,토지,자본을 생산요소시장에서 기업에 판매하고 기업은 이요소들을 투입해서 산출물을 생산하고 이 산출물을 재화와 서비스 시장을 통해 가계에 판매함
  • 가계는 기업에게서 재화와 서비스를 구입하기 위해서 돈을 지불, 기업은 이 돈의 일부를 임금등 생산요소를 사용한 대가로 지불한다. 남은 돈은 기업의 이윤이됨. (기업주들도 가계의 일부임 잊지말자)

    e.g. 스타벅스에 가서 커피를 사고 돈을 3000원 냄. 이 돈은 스타벅스의 수입.(재화와 서비스시장에서 가계가 기업에서 돈을내고 상품을 삼) 스타벅스는 이 3000원을 가지고 생산요소를 구입함 ( 임대료, 알바임금) ( 생산요소시장에서 기업은 생산요소를 구매한다) 이 3000원은 또 가계의 구성원의 주머니에 들어갈것임. ⇒ 경제순환

..............................................................................................................................................................

생산가능곡선

= 한 나라의 경제가 주어진 생산요소와 생산기술을 사용하여 최대한 생산할 수 있는 산출물의 조합을 나타내는 곡선

  • 경제학 모형들은 대부분 수학적 분석방법을 사용한다. (생산가능곡선)

산출물 : 자동차, 컴퓨터

두개의 생산성이 똑같지 않아서 볼록함

효율적이다

⇒ 경제에 존재하는 유한한 자원을 활용해서 최대의 효과를 얻는것

ㄴㄴ D 는 비효율적이다 / F,A,B ... 는 효율적이다 /// C : 주어진 자원과 기술수준으로 생산 불가능!!!!

1.1a 기본원리1 : 모든 선택에는 대가가 있다 (= 기회비용이 발생한다)

→ 자동차를 더 생산하면 컴퓨터는 덜 생산할수밖에

1.1b 기본원리2 : 선택의 대가는 그것을 얻기위해 포기한 그 무엇이다 → 100대의 자동차를 더 갖기 위해 200대의 컴퓨터를 포기하는것

기울기 : 기회비용

자동차 1대의 기회비용 ⇒ 기울기에 따라 다름

(1) 기울이 가팔(E) : 자동차의 생산량이 많고 / 컴퓨터 생산량이 적을떄 기회비용이 크다

(2) 기울기 완만(F) : 자동차의 기회비용은 별로 크지 않다.

..............................................................................................................................................................

  • 미시 경제학 = 가계와 기업이 어떻게 의사결정을 내리며, 시장에서 이들이 어떻게 상호작용하는지 연구하는 경제학의 한 분야

e.g. 임대가 소득에 미치는 영향

  • 거시 경제학 = 나라 경제 전체에 관한 경제 현상을 연구하는 분야

e.g. 정부차입의 효과, 실업률의 장기적 변화, 국민 생활수준을 향상시키는 정책의 비교

⇒ 이 두가지는 밀접하게 연결되어있다. 나라 경제의 전체의 변화가 수많은 개인과 기업의 개별적인 의사결정에 따라 이루어지기 때문에 관련된 미시경제 현상을 고려하지 않고는 거시경제 현상을 이해하기 곤란하다.

..............................................................................................................................................................

  • 실증적 주장 = 현실이 어떠하다는 주장 / 기본적으로 나타난 증거를 검사함으로써 인정 하거나, 부정할수있다. ⇒포티아의 주장을 자료를 통해 분석하면됨
  • 규범적 주장 = 현실이 어떻게 되어야 한다는 주장 / 자료만 가지고 판단 불가능, 윤리관,종교,정치철학..등이 개입되어있음.

e.g. 포티아 : 최저임금제는 실업을 유발할것이다 (과학자/실증적주장)

노아 : 정부는 최저임금을 인상해야한다( 정책결정자/규범적 주장)

⇒ 규범적 판단은 실증적 분석에만 의존하면 안된다. 실증적 분석과 가치관에 입각한 판단이 함꼐 적용되어야한다.

..............................................................................................................................................................

>> 경제학자들의 대답이 모호한 이유? / 상충되는 의견을 제시하는 이유?

1)대부분의 정책결정에 대가가 있기 떄문

2)이세상에 어케 돌아가는지에 대한 실증적인 현실인식이 서로 다를수 있다

3)가치관이 다르기 떄문에 경제정책이 어떤 목표를 달성해야할지에 대한 의견이 다를수있다.

 

  • 과학적판단의 차이

제시된 이론의 유효성 , 경제변수들이 어케 연결되어있는지 보여주는 중요한 모수 (파라미터)값에 대한 생각이 달라서 견해차가 남

e.g. 정부가 세금을 각 가정의 소득에 근거해서 부과해야하는지, 소비 지출 규모에 근거해서 부과해야하는지 ⇒ 소비세가 도입되면 저축이 증가할것이라고 믿는다. 저축이 증가함에 따라 생산성과 생활수준이 빠르게 향상될것이라고 믿음. vs 저축은 많이 증가하지않을것. (저축이 조세제도에 얼마나 민감하게 반응하는지에 대해 (=탄력성)

실증적인 견해차이 → 견해차이 존재

  • 가치관의 차이

e.g. 소득이 다를때 같은 퍼센테이지를 부과해야할까? 장애인이기 떄문에 소득이 낮다던지, 연극배우인걸 감안해줘야하나, 유산을 많이받아서 소득이 높은것, 힘든직업이지만 열심히 일한대가인것인지?

  • 인식대 현실

e.g. 임대료 규제나 무역장벽이 왜 지속?? 정치적 현실 떄문에 또 , 일반대중들에게 정책들이 결코 좋은게 아니라는것을 충분히 납득시키지 못했기 때문에

e.g. 공연 입장권 재판매 금지에 반대 → 암표상을 지지?

..............................................................................................................................................................

그래프를 사용하면

(1) 경제이론을 만들떄 방정식이나 말로 표현해서는 분명치 않은 아이디어를 눈으로 볼수 있다.

(2) 경제 자료를 분석할떄 변수들이 실제로 어떤 상관관계가 있는지 알아낼 수 있다

⇒ 나무들의 무리에서 숲을 보게 해주는 렌즈역할

 

산포도

= 점들이 흩뿌려져 있는 그래프

플러스 상관관계

(플플) vs

마이너스 상관관계

(플마)

 

수요곡선의 이동

문제점

(1) 한변수가 다른 변수에 미치는 영향을 측정하기 위해 다른 모든 변수를 일정하게 유지한다는것이 매우 어렵다 ⇒ 누락된 제3의 변수에 의해서 초래된 변화를 그래프상의 한 변수가 다른 변수의 변화를 초래했다고 잘못 판단할수도.

=누락변수

e.g. 암을 일으키는 물질을 조사하면서 라이터의 개수와 암이 발생할 확률에 밀접한 관계가 있다. ⇒ 라이터의 판매에 세금을 부과? ( 다른 모든 변수가 불변인가? 아니라면 이는 유효하지 않음)

⇒ 라이터가 있으면 담배를 피울 확률이 높고, 담배를 피우는것이 암에 걸릴확률을 높인다는것을 짐작가능

⇒ 흡연량이 일정하게 유지했다는것을 전재로하지 않으면 라이터를 가지고있다는 사실의 진정한 효과는 무엇인지 알수없다.

 

(2) 인과관계가 뒤바뀔수 있다

a→b 를 b→a 로 착각가능

e.g. 범죄가 많은 도시에는 경찰관이 많다. 무엇이 a 이고 b일까?

인과관계를 판단하는 쉬운방법 = 어느변수가 먼저 변하는가?

범죄가 증가하고 이어서 경찰관수가 증가한다면 쉽게 결론내릴수있다. / 경찰관수가 증가하고 범죄가 증가하면 결론이 뒤집어질수도⇒ 역시 문제...

미래에 어떤 상황이 형성될것인가에 대한 예상에 대응해서 바꾸기도 ⇒ 범죄가 급증할것이라 예상한다면 경찰관수를 늘리고자할것임 (이럴경우 경찰관수가 증가하고 범죄가 증가하는것이됨)

e.g. 아기와 미니벤 : 미니벤이 아기보다 먼저 나타남. (미니벤의 판매가 인구를 증가? no)

 

www.notion.so/2-3bc3f968f5814f1c86265a3db61f0f11www.notion.so/2-3bc3f968f5814f1c86265a3db61f0f11www.notion.so/2-3bc3f968f5814f1c86265a3db61f0f11

www.notion.so/2-3bc3f968f5814f1c86265a3db61f0f11

< 시도해본 차원축소 방법 리스트 >

  • pca
  • kernal pca
  • svd
  • isomap
  • mds
  • t-sne

 

차원축소를 해주는 이유

— 차원의 저주문제 (오버피팅)

— 데이터 압축

— 계산비용축소

 

차원축소 접근방법 2가지

(1) 투영 (projection) — PCA /SVD/

(2) 매니폴드학습 / 대부분 but 항상 통하지는 않는다.— Kernal PCA / Isomap / T-SNE /

e.g. 스위스롤 ( 다 펼치면 2d , 하지만 3차원으로 말려있다)

 

→ 전자는 매니폴드 학습방법이 더 효율적 , 후자는 비효율적

⇒ 모델을 학습전 학습 데이터셋 차원축소를 시도하면 항상 모델의 성능은 항상 더 낫거나 간단한 모델이 되는 것은 아니다

 

** 매니폴드란!

일반적으로 거리를 구하는 공식 (지금까지 배워온 방식) = 유클리디안 방식

매니폴드(manifold)란, 두 점 사이의 거리 혹은 유사도가 근거리에서는 유클리디안(Euclidean metric, 직선 거리) 을 따르지만 원거리에서는 그렇지 않은 공간을 말합니다.

그림처럼, 조그만 유클리디안 공간 조각들(육면체 하나를 근거리에서 정의된 유클리디안 공간이라고 생각하시면 됩니다)이 다닥다닥 붙어 이루어져서 전체적으로 보면 비유클리디안(non-Euclidean)이 되는 공간을 뜻합니다. 아래 그림은 각각 2차원과 3차원 매니폴드를 나타냅니다.

 

[PCA]

PCA : 차원을 줄이되 정보손실을 최소화한다

  • 원래 공간에서 데이터가 퍼져 있는 정도를 축소된 공간에서 얼마나 잘 유지하느냐를 척도로 삼음
  • 이를 잘 유지하냐는 변환된 공간에서의 데이터의 '분산'으로 측정
  • 변환된 공간에서 데이터의 분산을 최대로 할 수 있는 좌표축을 찾아야함 ( 즉 데이터가 분산되어 있는 주요한 방향(Principal direction)을 찾아준다

step1 데이터투영(projection)하기

원래 2차원이였다면 1차원으로 투영해버리기

 

step2: 투영된 공간에서 분산 측정하기

평균과 분산을 정규화 해준다. 정규화 해주면 각각의 attribute의 평균이 0이되고, 분산이 1이 되기 때문에 ( 즉 같은 scale을 같는다) attribute간의 비교가 가능해진다. 아래 그림을 살펴보면 분산이 최대가 되어야 데이터가 많이 보존됨을 알수있다. (제일 첫번째 그림에서 c1)

e.g. 첫번째 그림은 주성분이 1개일때(c1) / 두번째 그림은 주성분이 3개일때 (e1,e2,e3 순서대로 분산이큼)

 

step3: 분산의 최대치는 어떻게 찾는가

투영된 공간에서 분산을 최대화 해 줄 수 있는 벡터 u를 찾아야한다. u는 방향이 중요하다. (계산할때 라그랑지 승수를 사용한다)

 

**

공분산행렬

이란? (뒤에서 SVD 와 비교할때도 사용됨)

  • 다음 그림과같이 공분산 행렬은 각 속성에 대해서 두개의 속성(특징쌍)의 변동이 얼마나 닮았는가 ( = 얼마만큼이나 함께 변하는가를 행렬로 나타내준다. 이때 정방행렬이라는것에 주목해야한다( 뒤에 svd와 비교 )
  • 공분산행렬에서 고유값과 고유벡터를 구할수 있다.
  • 이렇게 구한 고유값 목록에서 주성분을 뽑아낼수 있다.

 

#주성분을 2개로 지정해주었을때, 
#위의 결과의 의미는 원 데이터셋 분산의 99.5%가 첫 번째 주성분 축에 놓여 있고, 
# 0.3%가 두 번째 주성분 축에 놓여 있다는 것을 말합니다. 

> pca.explained_variance_ratio_
array([0.99541373, 0.00338148])
> sum(pca.explained_variance_ratio_)
0.9987952108914363
# 두속성이 전체 변화량의 99%를 차지

한마디로 PCA는 데이터의 분산을 최대한 보존하면서 서로 직교하는 새 축(새 기저)를 찾아, 고차원 공간의 표본들을 저차원 공간으로 변환하는 기법이다 / 데이터 하나 하나에 대한 성분을 분석하는 것이 아니라, 여러 데이터들이 모여 하나의 분포를 이룰 때 이 분포의 주 성분(=데이터들의 분산이 가장 큰 방향벡터)을 분석해 주는 방법이다.

 

[Kernal PCA]

pca 는 차원축소를 위한 선형 변환 기법을 이용하기 떄문에 선형으로 분리 불가능한 데이터에 대해서는 적당하지 않다. 이를 극복하기 위해 커널 pca 를 사용할수 있다.

  • 아래 그램에서 첫번째 선형적인 데이터에서는 pca가 잘 작동하지만 2,3 번째 데이터처럼 비선형적인 데이터의 경우 적용하기 곤란하다.

 

코드 (아래) -(1)(2) 예제

http://203.246.113.170:8800/notebooks/Yoonseo/kernal pca 예제 비선형데이터셋.ipynb

 

(1) e.g. 반달 데이터셋 사용! (make_moon)

  • 아래 그림에서 (좌) pca 적용 (우) kernal PCA 적용

 

(2) 나선형 데이터 사용 (make_circles)

  • 두번째 그림이 pca 적용 / 세번째 그림이 kernal pca 사용

 

 

(3) 그외 여러가지 비선형 데이터에서 PCA vs KPCA 비교분석된 좋은 자료

https://rpubs.com/sandipan/197468

[SVD]

특이값 분해라고도 한다

특이값 분해는 고유값 분해 처럼 행렬을 대각화하는 한 방법이다. 그런데, 특이값 분해가 유용한 이유는 행렬이 정방행렬이든 아니든 관계없이 모든 m x n 행렬에 대해 적용 가능하기 때문.

앞서서 PCA 는 고유값 분해는 기본적으로 정방행렬을 반드시 필요로하며, 새로운 축을 만들어 고유벡터의 새로운 관점으로 바라보는것이였다면, SVD 는 정방행렬이 아니라 직사각형 행렬일떄 사용한다.

직사각행렬에 연산을 취했을때 벡터의 방향만 변하고 양(길이)는 변하지 않는다.

https://commons.wikimedia.org/wiki/File%3ASingular_value_decomposition.gif (움직이는 모양 확인)

 

[MDS]

MDS 는 1964 년에 제안된, 매우 오래된 임베딩 방법. MDS 기법은 numeric 변수로만 이루어 졌을 때에만 사용이 가능하다.

낮은 차원에서의 자료들이 거리가 멀리 떨어져 위치한다는 것은 비유사성이 높다는 뜻이고, 자료가 가까울수록 비유사성이 낮다 (즉 유사성이 높다)는 뜻이 된다. MDS를 이용하여 데이터를 시각화 하는 방법의 가장 큰 장점은 바로 데이터들의 유사도를 확인할 수 있다는 점이다. (비슷한 변수값을 가지는 데이터들은 가까이 있다)

한마디로 개체들을 2차원 또는 3차원 공간상에 점으로 표현하여 개체들 사이의 집단화를 시각적으로 표현하는 분석 방법. 군집분석은 개체들간의 비유사성을 이용하여 동일한 그룹들로 분류하는것이 목적인것에 반해 mds는2,3차원위에 점으로 표현하고 시각화하는것이 주 목적. pca 와 비교하면, 원데이를 최대한 보존한다.

 

분석 과정

(1) 자료수집

n개의 개체들을 대상으로 p개의 특성을 측정한다

(2) 유사성 / 비유사성 측정

mds 에서는 유사성이아니라 비유사성 측정방법을 사용함 ( 이유 - 유사성 대신에 비유사성(또는 거리)를 이용하는 이유는 유사성의 경우 대각선원소의 값을 정의하기 어렵기 때문이라고 한다)

(3) 2차원, 3차원 공간상에 개체를 표현

개체들 사이의 *유클리디안 거리(직선거리 계산방법) 를 비유사성 행렬을 이용해서 개체들을 2차원 공간상 점으로 표현한다.

**비유사성 행렬 = m개 객체로 구성된 데이터 세트의 경우, 데이터 세트에 m*(m – 1)/2개 쌍이 있다.

(4) 최적 표현의 결정

s-stress 를 사용해서 최적위치의 적합성을 측정한다.

오른쪽은 stress 구하는 방식 (dij 는 점i 부터 점 j 까지의 실제 유클리디안거리, ^dij는 프로그램에 의해서 추정된 거리)

 

[ISOMAP]

이는 kernal pca 처럼 비선형 데이터를 다룰때 유리하다

이는 MDS + PCA 각각의 특징을 합친 방법이다.

e.g. 스위스롤

앞선 방식 MDS를 사용하면 아래 그림에서 두점사이의 거리는 매우 짧다. 하지만 isomap에서는 다른 방식을 사용한다. 거리를 측정할때 인접지점을 고려한다. 한마디로 쭉 이어져야한다.

e.g. 지구에서 나라별 거리 계산방식과 같다. 각 나라별로 거리를 측정할때 mds 방식으로 유클리디안 방식으로 측정하면 내핵을 뚫고 들어가야한다. 하지만 실제로 계산할땐, 지구의 표면을 따라 거리를 계산한다 (=isomap)

I

[T-SNE]

 

 

 

 아래는 발표 피피티 ( 여기없는건 발표자료에 있음)

https://docs.google.com/presentation/d/1ajWFe_v5EUz-y70otmEQLzr-vn47PXSh3npDBiYV6Hs/edit?usp=sharing 

 

차원축소_발표

차원 축소 개념과 이해 발표자 허윤서

docs.google.com

 

1. html

ctrl+u -> ctrl +a 로 복사 -> 블로그글쓰기에서 기본모드말고 html로 변경 ->복붙 ->끝

 

2. pdf

구글드라이브에서 pdf선택 -> 오른쪽클릭 -> 고급 -> 비공개에서 모든웹사용자에게 허용으로 바꾸기 -> 다시 파일에 오른쪽탭누르고 공유눌러서 링크 복사

drive.google.com/file/d/1vu-9Qfsji7Tzh3M~~~~~nlnCGNS/view?usp=sharing

 

이런식으로 나올텐데 뒤에꺼  view~ 지우고  /preview로 바꿔준다음

아래처럼 고쳐주고 글쓰기 html 모드에 복붙해주기

 

 

<p><iframe src="https://drive.google.com/file/d/118mnuF1-YCjps~~~~~1jEOkjAfd6XN/preview" width="700" height="800"></iframe></p> 
<p><a href="https://drive.google.com/open?id=118mnuF1-YC~~~~~~~OkjAfd6XN" target="_blank" rel="noopener">새 창에서 열기</a></p>

 

키바나 대시보드 만드는 큰순서

  1. Discover -> change index pattern에서 대시보드를 만들 index설정 ->show dates에서 적절한 date범위 조절
  2. Visualization -> create visualization ->시각화하고싶은 방법선택(ex:수직바차트,파이차트) -> data index 를 선택한다> 보이고 싶은 조건에 맞추어 구성
  3. Dashboard -> create dashboard -> create new버튼으로 visualization 새로 생성 or add 버튼눌러서 만들어둔 visualization들 중 선택

Visualization 구성방법

데이터 시각화를 시작하려면 사이드 탐색 메뉴에서 시각화 를 클릭합니다.

시각화 툴을 사용하여 데이터를 다양한 방식으로 볼 수 있습니다.

Pie chart를 사용하여 데이터를 살펴보도록 하겠습니다.

시작하려면 시각화 목록에서 Pie 를 클릭합니다. 기본 검색은 모든 문서에 대해 일치 여부를 비교합니다. 처음에는 하나의 "슬라이스"가 전체 파이를 보여줍니다.

차트에 표시할 슬라이스를 나누려면 Elasticsearch Bucket 집계를 사용합니다. 예를 들어 포트번호 분포를 파이차트로 나눠서 볼수있습니다.
각 포트번호별로 슬라이스하기 위해 다음을 수행합니다.

  1. Aggregation을 선택합니다 개수로 분포를 나누기위해서는 Terms를 사용합니다.
  2. 필드 목록에서 포트번호 필드를 선택합니다.
  3. Order 부분에서 Metric:Count를 사용하여 Count를 선택합니다 (개수를 기준으로 삼기 때문)
  4. Order에서 오름차순과 내림차순을 선택해주고 바차트에 보여줄 개수를 고릅니다. 만약 Descending : 5로 선택하면 큰수에서 작은수로 내림차순으로 5개의 프로토콜이 보여지게 됩니다.
  5. 만약 뚫린 파이차트가 싫다면 OPtions - Donut부분을 선택해제 해주면 꽉찬 동그라미모양의 파이차트가 됩니다.
    또 파이차트옆 내림차순으로 포트번호5개리스트 위치를 바꾸고 싶다면 Legend position - bottom으로 상하좌우 위치를 선택해주면 됩니다.

내림차순이나 오름차순이 아니라 직접 범위를 지정한 버킷을 지정해주고싶다면,

  1. 분할 슬라이스 버킷 유형을 클릭합니다.
  2. 집계 목록에서 범위 를 선택합니다.
  3. 필드 목록에서 해당필드를 선택합니다.
  4. 범위 추가로 범위를 직접 지정해줍니다.

.이번엔 Vertical Bar을 사용하여 데이터를 살펴보도록 하겠습니다.(Pie chart의 슬라이스 = x axis 으로 조건을 나누는부분은 동일합니다)

  1. 새로 만들기 를 클릭하고 'Vertical Bar’를 선택합니다.
  2. Index 패턴을 선택합니다. 아직 어떤 버킷도 정의하지 않았으므로 커다란 하나의 바가 나타나 총 문서 수를 표시합니다.
  3. Metric 집계의 y-axis에서 개수가 디폴트로 지정되어 있습니다. 만약 Max, Average, Min등 갯수가아닌 기준으로 바차트를 보이고싶다면 선택해줍니다. 예시에서는 count를 선택하였습니다.
  4. X축을 설정해주기위해서는 Bucket -> X-axis을 선택한다음 agrregation에서 Terms을 선택해줍니다. 파이차트와 바차트에서는 주로 갯수를 보기위해 많이쓰이므로 대부분 Terms를 사용합니다.
  5. 앞서 보았던 파이차트와 동일하게 Order by, Order를 지정해줍니다.
    (만약 갯수가 아니라 알파벳순으로 나열하고싶다면 order by: Alphabetical로 설정해줍니다.

만약 , 바차트에서 두가지 필드를 보고싶다면 , 예를들어 목적지 포트번호를 내림차순으로 5개가 있는데 80번포트번호의 attatckType 구성을 보고싶다면

  1. Buckets 에서 추가버튼클릭 -> Split series -> Terms -> AccidentType필드선택 -> order by: count-> 내림차순 으로 원하는 갯수 지정해주면 됩니다.

.데이터 총갯수나, 필드값에서 가장많은 값을 단편적으로 알고싶다면 gauge를 활용합니다.

생성하기를 누르면 디폴트로 해당 index의 총 데이터 갯수가 나타나게 됩니다.

이것은 데이터의 총 개수나 퍼센테이지를 나타내는데 주로 쓰입니다.
만약, 간단하게 어떤 필드값이 가장 많은지 단편적으로 보고싶다면

  1. Metric -> aggregtaion : Max로 설정해준다음
  2. 필드를 선택합니다 (attackType)
  3. 옵션에서 Range를 설정해줍니다.

또 각 필드별로 퍼센티지를 보고싶다면

  1. Metric -> aggregtaion : Max로 설정해준다음
  2. 필드를 선택합니다 (attackType)
  3. 옵션에서 Range를 설정해줍니다.
  4. Buckets 에서 agrregtaion: Terms 선택
  5. 필드는 같은것으로 선택 (attackType)
  6. Order by 의 size개수를 변경하여 보여질 Guage 갯수를 지정

Tag Cloud는 가장 많은 필드들을 추려 보여줍니다.

  1. Metrics : count
  2. Buckets에서 Tag를 추가
  3. Aggregation을 terms로 지정해준다음 필드를 선택
  4. 가장많은 5가지 내용을 보고싶다면 Descending : 5를 선택

Line 과 Area는 채워져있나 안채워있나의 차이로 생긴것이 매우 흡사합니다. (Line 옵션- Metric -Char type 에서 area로 변경해주면 Area와 Line의 차이가 거의 없습니다.Timestamp별로 데이터 입력 흐름을 볼때 , 전체적인 붆포도를 볼떄 주로 쓰입니다.

Area에서 전체적인 분포도를 살펴보고 싶다면

  1. Metrics : count
  2. Buckets에서 x-axis추가
  3. Histogram선택
  4. 필드선택 ( sourcePort)
  5. interval을 적절히 설정

Line에서 Timestamp별로 발생한 이벤트의 수를 시간대별로 보고싶다면

  1. Metrics : count
  2. Buckets 의 x-axis 누르고 aggregation : Date Histogram선택
  3. 필드는 @timestamp로 지정
  4. Minimum interval은 데일리,위클리 적절한것으로 선택.

Lined에서 실시간 음원차트처럼 만들수도 있다. 실시간 input되는 데이터중 attackType이 0,1인경우를 나누어서 보입니다. (attackType은 가짓수가 적지만 가짓수가 많을경우 range말고 내림차순으로해도 괜찮습니다.)

  1. Metrics : count
  2. Bucket X-axis 의 aggregation에서 Date Histogram선택
  3. 필드는 @timestamp선택
  4. interval은 시간별,날짜별,주별 선택해준다. 시간별로 세부적으로 보고싶다면 하루날짜를 필터링하여 시간별로 나눌수도 있습니다.
  5. Bucket에 Split series를 추가.
  6. Sub aggregation : Range 설정후 필드도 설정(attackType선택)
  7. Range 범위정하기.

'<프론트>' 카테고리의 다른 글

장고 로그아웃 (django logout)  (0) 2021.01.13
장고 비로그인시 접근제한  (0) 2021.01.13

html부분 로그아웃칸에다 onclick으로 logout url로연결해준다. (누르면 logout url로 가게해놨다.)

<li>
<a class="gn-icon gn-icon-archive" onclick="location.href='http://~~~~~~2.139:38080/Logout'">Logout</a>
</li>

Logout.html 생성

(사실 의미가없다 , 로그아웃버튼 누르자마자 로그인페이지로 가게해놔서 보여지지도않는다. 근데 없으면 url에서 에러가 나서 존재에 의의를 두기로했다)

{% load static %}
<!DOCTYPE html>
<html>
        <head>
                <meta charset="utf-8">
                <title>Login</title>
                <link rel="stylesheet" href="{% static 'css/loginstyle.css' %}" >
                <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css"><!--아이콘두개-->
        </head>
        <body>
                 <div class="logo-bar">
                        <img class="logo" src="{% static "img/main_logo.png" %}" height="150px" align="center" />
                  </div>
                <div class="login">
                        <h1>Logout</h1>
                        <form class="form-signin" method="POST" action="/">{% csrf_token %}
                                <input type="submit" value="Submit" class="btn btn-lg btn-primary btn-block">
                        </form>
                </div>
        </body>
</html>

urls.py에 path(Logout~~ 한줄추가해주기

from . import views 
from django.urls import path
from django.contrib import admin

urlpatterns = [

    path('Logout/',views.Logout),
]

views.py에 추가해줄것. 

from django.contrib.auth import authenticate
from django.shortcuts import render
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from django.contrib.auth import logout
from django.shortcuts import redirect
from django.contrib.auth.models import User
from django.contrib.auth import login

def Logout(request):
    logout(request)
    return render(request, 'mainapp/Login.html')

 

'<프론트>' 카테고리의 다른 글

kibana dashboard 구성 가이드라인  (0) 2021.01.13
장고 비로그인시 접근제한  (0) 2021.01.13

html 추가할부분

<!--비로그인 실행할부분에 로그인html을 넣어줬다/ 비로그인상태면 로그인창으로 이동시켜줌.
로그인html에서 Post request가 발생하면 view에서 받아오는걸로 해놨기 때문에 로그인html만 추가하면끝이다 간단하다-->

{% if user.is_authenticated %}
로그인상태일때 실행할부분
{%else%}
비로그인시 실행할부분
{%endif%}

views.py에서 추가할부분

(로그인 함수 부분에서 login(reqest,result) 추가해줘야한다)

(추가안하면 인증만 하는거고 render해서 다른 html넘어갈때 비로그인상태다. 저거 추가하면 로그인상태로 쭉 유지해준다, ~/admin에서 로그인한거랑 똑같아짐)

(로그아웃하고싶을땐 전 포스팅 로그아웃 참조하기)

def Login(request):

    if request.method == 'POST':
        id = request.POST.get('userid','')
        pw = request.POST.get('userpw', '')

        result = authenticate(username=id, password=pw)

        if result :
            print("로그인 성공!")
            login(request, result)
            return render(request, 'mainapp/index.html')

        else:
            print("실패")
            return render(request, 'mainapp/Login.html')

    return render(request, 'mainapp/Login.html')

views.py에서 에러나면 저것들을 import해주자.

from django.contrib.auth import authenticate
from django.shortcuts import render
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from django.contrib.auth import logout
from django.shortcuts import redirect
from django.contrib.auth.models import User
from django.contrib.auth import login

 

'<프론트>' 카테고리의 다른 글

kibana dashboard 구성 가이드라인  (0) 2021.01.13
장고 로그아웃 (django logout)  (0) 2021.01.13

[Elastalert 설치 가이드라인]

해당 가이드라인은 ELK 스택 7.7버전을 사용하였습니다.

$ pip install elastalert
$ git clone https://github.com/Yelp/elastalert.git
$ pip install "setuptools>=11.3"
$ python setup.py install
$ elastalert-create-index

[Elastalert 실행 가이드라인]

  • 테스트용으로 정상적으로 실행되는지만 확인
    $ elastalert-test-rule example_rules/d.yaml
  • 실행
    $ elastalert --verbose --rule example_rules/d.yaml

(d.yaml대신 실제로 실행할 rule을 선택.)

[Elastalert Example_rules 가이드라인]

Rule타입

  • Any : The any rule will match everything. Every hit that the query returns will generate an alert.
  • Blacklist : The blacklist rule will check a certain field against a blacklist, and match if it is in the blacklist.
  • Whitelist : Blacklist와 흡사 , this rule will compare a certain field to a whitelist, and match if the list does not contain the term.
  • Change : This rule will monitor a certain field and match if that field changes.
  • Frequency : This rule matches when there are at least a certain number of events in a given time frame.
  • Flatline : This rule matches when the total number of events is under a given threshold for a time period.
  • New Term :This rule matches when a new value appears in a field that has never been seen before
  • Cardinality : This rule matches when a the total number of unique values for a certain field within a time frame is higher or lower than a threshold
  • Metric Aggregation : This rule matches when the value of a metric within the calculation window is higher or lower than a threshold

samplerules.yamles_port: 14900 name: Example rule type: frequency index: logstash-* num_events: 50 timeframe: hours: 4 filter: - term: some_field: "some_value" alert: - "email" - "slack" email: - "bbbbbbbbb@naver.com" slack: slack_webhook_url: "https://hooks.slack.com/services/T~~~9B1OvKw" slack_username_override: 'wow159357' slack_channel_override: '#elastalert' slack_emoji_override: ':pizza:'

  • es_host, es_port는 elasticsearch를 설치할떄의 ip,port번호를 적으면 된다.
  • name 에 해당 룰 이름을 지정해준다.
  • Type에 위에서 설명해준 Rule타입을 선택한다.
  • time frame 해당 룰이 몇시간 이내에 실행된데이터를 기준으로 할지 정해준다.
  • num event 에 특정데이터수를 지정해준다
  • filter에 어떤 필드를 기준으로 삼을것인지 정해준다.
  • alert에 'slack', 'email'등 알림받기 원하는것을 선택하여 적어준다.
  • slack: 밑에 알람받을 슬랙주소와 유저주소, 채널,알람받을 이모티콘을 설정해준다.

[Elastalert Slack Webhook 설정]

  1. 설정 - Add an app or custom integration 클릭
  2. 가입된 이메일+비밀번호 입력
  3. 슬렉웹페이지가 열리면 가운데 검색창에 incoming webhooks 선택
  4. 왼쪽 메뉴바에 Add Configuration누르기
  5. 메세지보낼 채널을 선택 (ex: #general)
  6. webhook URL복사후 Rule에 들어가 Slak: 아래부분 slack_webhook_url: 에 작성

https://data.seoul.go.kr/dataList/datasetList.do

 

서울 열린데이터광장

전체  5,215건 을 찾았습니다. 정확도순 최신공개일순 조회순 제목순 조회 공공데이터 [교통] 서울특별시 공공자전거 신규가입자 정보(월별) 서울특별시 공공자전거 월별 신규가입자 정보입니다

data.seoul.go.kr

ㄴㄴ 여기서 각자 마음에 드는 데이터 하나골라서 csv 파일형식으로 다운받는다.

 

 

 

 

 

 

 

나는서울특별시 공공자전거 대여소별 이용정보(월별) 을 다운받았다.  (2018년도 csv파일 다운~)

 

 

 

 

 

 

 

데이터 다운받아서 열어보니까 이런형식이다.

 

(한글깨짐 현상을 방지하려면 CSV UTF-8(쉼표로분리)(*.csv)형식으로 새로 저장해주자.

원래 저장형식은 CSV(쉼표로분리)(*.csv) 이건데 이대로 쓰면 뒤에가서 업로드했을때 한글 깨진다.)

 

 

 

 

 

 

명심해야 할점 : 맨위에 필드들 ('대여일자', '대여소번호' 등등) 필드값이 있는 첫번쨰 행을 삭제해준다.!!!!!!

필드값은 다른곳에 적어놔서 꼭 순서대로 기억해둔다.

(왜냐햐면 로그스태시에서 1행도 데이터로 인식하기 때문에 맨윗행 삭제 안해주면 대여일자 : 대여일자 / 대여소번호 : 대여소번호 이렇게 잘못된 데이터 하나가 더 생긴다)

 

 

 

이걸토대로 logstash 에 sample.conf 파일을 생성해준다.

input {
        file {
                path => [ "C:/Users/Owner/Downloads/bicycle2.csv" ] 
	    start_position => "beginning"
	    sincedb_path => "nul"
	    codec => plain{ charset => "UTF-8" }
        }
}
filter {
        csv{ 
                columns => ["대여일자","대여소번호","대여소","대여건수","반납건수"]
                separator => ","
        }
}
output { 
        elasticsearch {
                hosts => ["localhost"] 
	   index => "softwarearchitecture"
        }
        stdout { } 
}

path에 데이터가 저장된 절대 경로 적어주고

colums에 각자 데이터 필드값을 적어준다.

index에는 Elasticsearch에 데이터 넣어둘 인덱스이름을 적어둔다.

 

(인덱스 없으면 새로만들어준다. 엘라스틱서치 실행시키고 아무 터미널이나 열고  curl -XPUT localhost:9200/softwarearchitecture 적어서 실행하면 된다. software~은 내가 정해준 인덱스이름)

 

 

 

 

logstash 파일안 bin 에 들어가서 터미널열고 실행 ( logstash -f (conf파일들어있는 절대경로) 실행해주면 된다. )

 logstash -f C:\logstash-7.6.0\logstash-7.6.0\config\sample.conf

 

 

 

 

 

 

잘 실행되었으면 위그림처럼 데이터들을 주르륵 보여진다.

(timestamp은 귀찮아서 설정하지 않았다. 설정하고싶다면 sample.conf에서 대여일자를 타임필터로 설정해주면 된다)

 

 

 

 

Kibana를 실행시키고 데이터가 잘들어갔나 확인해보자.

 

 

 

 

 

 

 

 

데이터가 잘 들어간것같다. 데이터가 제대로 들어간것을 확인하고 나서 대시보드를 취향껏 꾸며서 분석해준다.

 

 

 

https://stackoverflow.com/questions/50890989/pandas-changing-the-format-of-nan-values-when-saving-to-csv

 

Pandas Changing the format of NaN values when saving to CSV

I am working with a df and using numpy to transform data - including setting blanks (or '') to NaN. But when I write the df to csv - the output contains the string 'nan' as oppose to being NULL. I...

stackoverflow.com

이거 참조

 

 

json파일에서 결측치를 'NULL'값으로 채워줬는데 csv로 변환하면 자꾸 NAN 결측치가 되길래 

NULL값이아닌 nul로 바꿔 봤더니 아주 잘된다 

none,nan,null단어는 피해서 지정해주는것이 답이였다.

 

 

fisrt_column
[A] B / C

위에 표를 아래처럼 바꾸려면

a b c
A B C

 

test['adelete'] = test.fisrt_column.str.split(']').str[0]  # ]기준으로 0(왼)1(오)이라는뜻
test['a'] = test.adelete.str.split('[').str[1]

test['change2'] = test.fisrt_column.str.split(']').str[1]

test['b'] = test.change2.str.split('/').str[0]
test['c'] = test.change2.str.split('/').str[1]

이렇게 나눠주고나서 

 

test['a'].str.strip()
test['b'].str.strip()
test['c'].str.strip()

왼쪽 오른쪽 빈칸을 없애준다.

 

test=test.replace(r'^\s*$', np.NAN, regex=True)
test = test.fillna(value='nul')

그리고 빈칸은 NAN(결측치값)으로 만들어준다음 nul값으로 채워준다.

 

 

'<문법> > 파이썬' 카테고리의 다른 글

[python] Saving multiple graphs as one pdf  (0) 2021.12.27
Matplotlib 바그래프 문법정리  (0) 2021.07.22
Pandas 열 한개 여러개로 쪼개기  (0) 2021.01.13
json 인코딩/디코딩 초간단정리  (0) 2021.01.13
Python 문법  (0) 2021.01.13

새로운 사용자에 AdministratorAccess 권한을 준다음, keypair 다운로드 받은다음 열어서 확인하고, cmd에

aws configure

쳐서 4개 나오는거 keypair 내용 복붙해서 차례차례 입력해준다.

 

 

1. upload

위에를 실행한 cmd창에서 py upload.py 로 실행하면 로컬에있던 y.png파일이 지정해준 버킷으로 올라감.

#cmd창에서 실행해봄. youa.png로 실행해봄. 버킷에 올라감.

import boto3  #aws sdk 이다
s3 = boto3.client('s3') # s3에 대한 권한및 상태를 s3(변수)에 저장
filename = 'y.png'
bucket_name = 'bucket1'

# filename : 로컬에서 올릴 파일이름 /bucketname : S3 버킷 이름 / filename : 버킷에 저장될 파일 이름.
s3.upload_file(filename, bucket_name, filename)

#버킷에 이름이 똑같은 파일 올리면 그냥 덮어쓴다 수정시간이 바뀔뿐

 

 

2. downlaod

이건 download.py (버킷에있던게 로컬로 다운로드)

import boto3
s3 = boto3.client('s3')
filename = 'y.png'
bucket_name = 'bucket1'
#다운로드할 버킷이름 / 다운로드할것 / 다운로드받을이름
s3.download_file(bucket_name,filename,filename)

 

 

3. uplaod & download lamda

로컬 cmd창 말고 람다에서 실행

(버킷1에 있던걸 다운로드받아서 버킷2에 올려줌)

import boto3
from time import time

s3_client = boto3.client('s3')

def lambda_handler(event, context):
    input_bucket = event['input_bucket']
    object_key = event['object_key']
    output_bucket = event['output_bucket']

    path ='/tmp/'+object_key  #이거 아래 설명!!!!!!!!!!!!!!!!!!!!!!!!

    s3_client.download_file(input_bucket, object_key, path)
    s3_client.upload_file(path, output_bucket, object_key)

**** /tmp/에 로컬 파일위치를 넣어주니까 에러가 떴다.  /tmp/로 하면 잘 실행된다. 그런데 tmp파일은 도대체 로컬에 있는 파일인지 람다에 있는 파일인지 헷갈리고 찾아도 보이지도않는다 https://aws.amazon.com/ko/lambda/faqs/ 이링크에서 찾아본결과 람다안에있는 비영구 디스크공간이라고한다.

 

Q: AWS Lambda 함수를 위해 디스크에 스크래치 공간이 필요하면 어떻게 합니까?

각 Lambda 함수에는 자체 /tmp 디렉터리에 500MB의 비영구 디스크 공간이 제공됩니다.

 

테스트이벤트 json파일

{
  "input_bucket": "bucket1",
  "object_key": "y.png",
  "output_bucket": "bucket2"
}

 

'<Cloud> > AWS' 카테고리의 다른 글

Lambda Container 연습  (0) 2021.08.25
EC2 user data 에 start.sh  (0) 2021.05.09
Flask + EC2 튜토리얼  (0) 2021.05.09
AWS launch templates, launch configuration, load balancing, autoscaling 초간단 개념  (0) 2021.05.09
Aws acedemy Module1  (0) 2021.03.09

python -> json문자열 (json인코딩)

 

1. dumps    #dumps 파일을 쓰는게아니라 파일고대로 json->string으로 변환함 

jsonString = json.dumps(json.dumps(student_data, indent=4, sort_keys=True)

#intent=4는 들여쓰기 스페이스
#sort_keys=True 키를 기준으로 정렬해서 직렬화함

2. dump  #dump는 파일을 불러와서 그 파일안에 쓰기를함 (W)

import json
with open("student_file.json", "w") as json_file:

    json.dump(student_data, json_file)
    
# w 파일 쓰겠다/ dump로 직렬화!!!!
# student_file.json을 열어둔채로 dump로 직렬화하고 내보내고자하는 객체 student_data를 json_file에 써줌

 

 

json문자열 -> python (json 디코딩)

dict = json.loads(jsonString)

json파일을 dict로 변환~

ctrl + f 로 찾기

 

subprocess : 파이썬에서  명령을 실행할  있게 해주는 라이브러리

단순 서브프로세스 실행을 바란다면 call 함수 사용한다

>>> import subprocess
>>> subprocess.call(["ls", "-al"])

ls-al ls-a이랑 ls-l 동시에 사용하기위한 명령어

ls -a  숨김파일도 보여주는 -a

ls -l http://www.incodom.kr/Linux/%EA%B8%B0%EB%B3%B8%EB%AA%85%EB%A0%B9%EC%96%B4/ls 참조

drwx------  2 sbx_user1051  991 4.0K Oct  2 12:10 .
dr-xr-xr-x 21 root         root 4.0K Aug 31 10:28 ..
-rw-rw-r--  1 sbx_user1051  991 1.0M Oct  2 12:11 file

 

 

결과값을 문자열 데이터로 사용하고 싶을떄에는 check_output함수를 사용 , 결과값을 문자열데이터로 리턴해줌

>>> out = subprocess.check_output (['ls', '-al'] )
>>> out 
b'total 8\ndrwxr-xr-x. 2 root root 4096 10\xec\x9b\x94  8 17:58 .\ndrwxr-xr-x. 6 root root 4096 10\xec\x9b\x94  8 17:58 ..\n'

 

 

 

Popen

popen 생성자 : 프로세스를 시작

communicate 메서드: 자식 프로레스들이 일을 마치고 종료하기를 기다림.

 

 

Pipe ??

-r 명령어를 실행하면 명령어가 표준출력으로 출력한 문자열을 읽기위한 용도로 pipe open

w  명령어를 실행하고 키보드로 데이터를 입력해야하는 명령어에 사용함.  커맨드의 표준입력으로 데이터를 전송하기위한 pipe open

 

 

 

import asyncio

-> 비동기 프로그래밍을 위하 모듈이며 CPU작업과 I/O  병렬로 처리하게 해줌

****동기(Synchronout)처리는 특정 작업이 끝나면 다음 작업을 처리하는 순차처리 방식이고, 비동기처리는 여러작업을 처리하도록 예약한뒤 작업이 끝나면 결과를 받는 방식

import asyncio 
async def hello():    # async def로 네이티브 코루틴을 만듦    
	print('Hello, world!') loop = asyncio.get_event_loop()     # 이벤트 루프를 얻음
loop.run_until_complete(hello())    # hello가 끝날 때까지 기다림
loop.close()      #이벤트 루트를 닫음
#추가추가

loop = asyncio.get_event_loop()     # 이벤트 루프를 얻음
loop.run_until_complete(hello())    # hello가 끝날 때까지 기다림

os.urandom이라는 함수가 있다

- 이 함수는 원하는길이(byte) unsigned수치값을 만들어준다.

- 이것 암호화 알고리즘 키를 생성할떄 유용하다.

 

 

<파일 입출력>

https://wikidocs.net/16077

https://wikidocs.net/14130 

f = open('hello.txt', 'w')
f.write('안녕하세요\n')
f.close()

위처럼 일일히 close하기 귀찮으면 아래처럼 써서 자동으로 닫게하면 됨 

with open('hello.txt', 'w') as f:
    f.write('안녕하세요\n')

 

 

open(file, 'wb', buffering=byte_size)

wb 의미는? file대신 open 사용한다. 파이썬 2에서만 사용된다.

- wb 데이터를 저장하라는것 /rb 데이터를 읽으라는뜻

- buffering = 버퍼링끄기는 0(바이너리모드에서 버퍼링 미수행), 라인모드는1(텍스트모드에서 개행문자(\n)만날때까지 버퍼링), 고정크기로 보내려면 임의의 바이트수를 1보다 큰양의 수로 입력

-errors=None 텍스트모드시 에러처리

 

 

1) read() 파일전체의 내용을 하나의 문자열로 읽어온다.

2) readline() 한라인씩 읽음 (대용량파일을 읽어올경우 굉장히유용)

3) 바이너리 파일을 1바이트씩 읽어오는 방법은?

with open("myfile", "rb") as f:
    byte = f.read(1)
    while byte != "":
        # byte처리
        byte = f.read(1)

 

 

 

f.flush() -> 실제 파일이 기록되지만 파일을 닫지는않는다.

 

f.seek(0,2) ->파일끝에서 0바이트이동(파일 끝까지이동하라는뜻)\

f.seek(i) ->파일 시작에서 i바이트로 이동

ex)f.seek(0) =첫줄로 이동하라

f.seek(-(i+1),2) -> 파일끝에서 (i+1) 바이트 이전으로

 

randrange ->  import random이랑 같이씀 파이썬 랜덤함수중하나임

randrange(a,b) randrange(a) 두가지버전이있다.

randrange(b) 0<=x<b  범위내에서 랜덤한 정수 int 반환한다.

 

fsync -> 동기식 입출력함수

fd 지정된 파일과 관련된 모든 변경자료(데이터+메타데이터) 디스크와 동기화한다.

디스크 I/O 연산은 커널안의 버퍼캐시나 페이지 캐시를 거친다. 따라서 프로세스가 파일에 데이터를 기록하면 커널은  데이터를 커널의 버퍼들  ㅇ하나에 복사해서 내부적인 대기열에 등록해두고, 적당한 시점이 되면 디스크에 기록한다. 이렇게 대이터가 버퍼에만 있고 디스크에는 아직 기록되지않은 상태가   있다 이때 문제점은

1. 디스크에 순서대로 기록해야만하는경우 -> 커널 대기열에서는 성능개션에 적합하게 요청순서를 변경해서 문제가 발생

2. 시스템이 비정상적으로 종료될경우

이때 syn, fsync, fdatasync 함수를 이용한다.

 

for _ in range ():

a = [0 for _ in range(10)]
a = [0]*10
#두개가 같음

gzip

파이썬에서 압축된 파일내용을 바로 읽을 수있게 해주는 모듈

#압축하기
import gzip
path = './data/fruit.txt'
with open(path,'rb') as f_in:

    with gzip.open(path+'.gz','wb') as f_out:
        f_out.writelines(f_in)  # ./data/fruit.txt.gz 압축 파일 생성

https://wikidocs.net/8934

 

unittest

madplay.github.io/post/python-main-function

wikidocs.net/16107 참조

 

<리눅스 명령어>

rm-rf  삭제 리눅스 명령어

**sudo rm-rf / 포맷수준 삭제

 

<일치하는 string 찾기>

find , rfind 일치하는것찾기

- 일치하는것 앞에서 찾기 x.find

- 일치하는것 뒤에서 찾기 x.rfind

e.g result = json.loads(x[x.find('{'): x.find('}')+1])

POD

https://kubernetes.io/ko/docs/concepts/workloads/pods/ 참조

  • POD  쿠퍼네티스에서 생성하고 관리할  있는 배포가능한 가장 작은 컴퓨팅 단위. 하나 이상의 컨테이너의 그룹. 스토리지와 네트워크를 공유한다. POD 콘텐츠는 항상 같이 배치되고 같이 스케쥴되며 공유 콘텍스트에서 실행된다.
  • 생성할때, Pod spec 여러 조건들을 추가함으로써 원하는 노드에 할당할  있으며, 쿠버네티스에서는 쿠버 스케쥴러라는 이름의 컴포넌트가 pod 할당될 노드를 결정한다.

 

kubernetes

  • 클러스터에서 자동으로 여러 컨테이너를 관리하고 생성하도록 설계된 컨테이너 operation 플랫폼
  • POD 기본구성요소, 사용자는 yaml 쓰여진 구성파일을 기반으로 POD 생성과 관리를 요청가능
  • 여러 POD 퍼포먼스를 독립시키기 위해서 자원관리 기법을 제공.
  •  자원관리 기법을 통해 POD구성파일 (YAML)  CPU, memory, network bandwidth  같은 컴퓨팅 자원들의 양을 지정가능
  • 자원제어를 위해 리눅스 cgroup tc 사용'

 

POD 스케쥴링 : POD 컴퓨팅 지원정보를 기반, 배치될 실제서버인 노드를 결정. 이런 과정을 의미함

e.g) 사용자가 pod 지정할 하나의 cpu core주시오 -> 스케쥴러  pod cgroups API 이요해서 Cpu  core 지정해준다.

e.g2) 사용자가 pod 요청한 네트워크 대역폭을 요청 -> 스케줄러가 tc 사용해서 pod 네트워크 대역폭값을 예약

  • kubernets 에서 스케쥴러 역할을 담당하는 컴포넌트인 kube-scheduler에서 수행된다.
  • kube-scheduler 스케쥴링 방식은 사용자의 설정에 따라 달라질  있다.(방식에 따라 pod 성능과 전체적인 자원활용율에 영향) --->효율적인 컴퓨팅 자원활용을 위해서는 스케쥴링에 대한 이해가 필요함

그림 1 : kubernetes 1.18(버전) 에서 pod 생성을 위한 call chain 보여준다.

  • 사용자가 kubectl create 사용해서 description file 함께 pod생성을 요청할때, kubectl pod description file 정의된 pod specification API server 전송한다

****description file : user-defined string으로 파일이나 폴더에 적용가능하다. 윈도우에는 없는개념이라 생소하다. ASCII text file 파일에대한 description 가지고있다. description file 한개이상의 element 구성되어있다. elements 들은 여러가지 키워드로 구성되어있다.

  •  API server 전송된 pod specification node 비어있을때, kube-scheduler pod 할당하기 위한 node 스케쥴링한다. 그다음, node에서 실행되는 kubelet pod 속하는 하나이상의 컨테이너를 생성한다.

 

----------------------------------------------------------------------------------------------------------------------------------

 

 

<간단 정리 > : kubernetes는 클러스터에서 여러 컨테이너를 관리하고 생성하도록 설계된 컨테이너 operation플랫폼입니다. 그안에서 pod가 기본구성요소이며, yaml로 쓰여진 description 파일을 기반으로 pod의 생성과 관리를 요청할수있습니다. 이 파일안에 컴퓨팅자원들의 양을 지정해주어 자원관리를 수행합니다. Pod의 컴퓨팅자원 관리정보를 기반으로 pod가 배치될 node를 결정하는데 이러한 스케쥴링 방식에 따라 효율적인 컴퓨팅 자원활용이 결정됩니다.

스케쥴링 과정은 먼저 사용자가 kubetctl create를 명령하고나서 pod생성이 실행됩니다. kubecxtl에서 API server로부터 구조적정보+메타데이터 스키마를 전달받아 pod descripton file을 파싱하여 pod정보를 담은 podSpec을 생성하고 pod생성요청을 보냅니다. Kube-scheduler엣는 빈노드가 있는지 확인하는 역할을 합니다. 필터링과 스코어링을 통해 노트를 선택하는 과정을 거칩니다. Kubelet  podspec의 변화가 발생했을 겨웅 podSpec을 전달받아서 pod에 대한 컴퓨팅자원을 예약합니다. 그리고 node에서 컨테이너를 실행합니다 

스킨을 바꿔서 사용해주던중... 블로그 스킨내 글쓰기 아이콘을 누르면 티스토리 구 에디터로 뜨길래 신에디터로 바로 뜰수있게 변경해주었다.

 

우선 크롬에서 글쓰기 버튼 오른쪽마우스클릭하고 검사를 눌러서 살펴본다. 다음과 같이 구 에디터는 주소가 ~~admin/entry/post 이다. 반면 신에디터는 ~manage/newpost블라블라 이렇게 뜬다 

 

 

 

확인했으니 티스토리 설정 들어가서 -[스킨편집] - [HTML] 들어간다음 ctrl-f 로 admin/entry/post 을 검색해서 위치를 찾아낸다. 

아래 사진에서 보라색 부분임을 확인할수있다. 이부분을 위에 신에디터 주소로(/manage/newpost/~~~ 이부분)  복붙해서 바꿔준다.

 

 

이제 글쓰기 버튼을 눌러도 구 에디터가 아니라 신에디터로 사용할수있다!

 

반대로 신에디터에서 구 에디터로 사용하고 싶은 사람은 저 manage/newpost ~~ 이부분을 admin/entry/post 로 바꿔주면 된다!

+ Recent posts