<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>심심해서 하는 블로그</title>
    <link>https://ssoonidev.tistory.com/</link>
    <description>하루하루 즐거운 일상을 공유하고, 개발하면서 얻은 지식을 공유하는 블로그입니다.
</description>
    <language>ko</language>
    <pubDate>Thu, 13 Aug 2026 13:25:43 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>수니감자</managingEditor>
    <image>
      <title>심심해서 하는 블로그</title>
      <url>https://tistory1.daumcdn.net/tistory/2233955/attach/ebe80cda252c4bdcb62be4918b26cd8b</url>
      <link>https://ssoonidev.tistory.com</link>
    </image>
    <item>
      <title>Optuna 간단 메뉴얼</title>
      <link>https://ssoonidev.tistory.com/107</link>
      <description>&lt;div class=&quot;note-wrapper&quot;&gt;
&lt;blockquote&gt;
&lt;p&gt;하이퍼파라미터 최적화.. 중요한 건 알겠는데.. 일일히 하는게 번거롭네?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;p&gt;하이퍼파라미터의 최적화는 기계학습의 중요한 태스크 중에 하나입니다.&lt;/p&gt;
&lt;p&gt;하이퍼파라미터를 어떻게 선택하는 가에 따라 Overfit 이 된 모델이 될 수 도 있고, Underfit 모델이 될 수 있습니다.&lt;/p&gt;
&lt;p&gt;하지만 같은 종류의 모델을 사용하더라도 학습하는 데이터에 따라서 하이퍼파라미터의 값은 상이합니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;우리는 최적화된 파라미터를 찾기 위해서 값을 조정하면서, 모델을 수행을 하고 모델을 검증을 합니다.&lt;/p&gt;
&lt;p&gt;그리고 이걸 결과가 좋을 때까지 하이퍼 파라미터 값을 재변경해서 다시 학습 및 검증을 하는 과정을 반복합니다.&lt;/p&gt;
&lt;p&gt;근데 이 과정이 생각보다 귀찮습니다.&lt;/p&gt;
&lt;br /&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;_2021-02-07__11.32.01.png&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;605&quot; width=&quot;295&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HlzTH/btqWc9tCj8J/s6WjfTKTSuILhfccnxfD5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HlzTH/btqWc9tCj8J/s6WjfTKTSuILhfccnxfD5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HlzTH/btqWc9tCj8J/s6WjfTKTSuILhfccnxfD5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHlzTH%2FbtqWc9tCj8J%2Fs6WjfTKTSuILhfccnxfD5k%2Fimg.png&quot; data-filename=&quot;_2021-02-07__11.32.01.png&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;605&quot; width=&quot;295&quot; height=&quot;NaN&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 id=&quot;Optuna : 하이퍼파라미터 최적화 프레임워크&quot;&gt;&lt;b&gt;Optuna : 하이퍼파라미터 최적화 프레임워크&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;Optuna는 하이퍼파라미터 최적화 태스크를 도와주는 프레임워크입니다.&lt;/p&gt;
&lt;p&gt;파라미터의 범위를 지정해주거나, 파라미터가 될 수 있는 목록을 설정하면 매 Trial 마다 파라미터를 변경하면서, 최적의 파라미터를 찾습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;하이퍼파라미터의 범위나 목록은 아래의 방법으로 설정할 수 있습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;suggest_int : 범위 내의 정수형 값을 선택합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code class=&quot;code-inline&quot;&gt;n_estimators = trial.suggest_int('n_estimators',100,500)&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;suggest_categorical : List 내의 데이터 중 선택을 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code class=&quot;code-inline&quot;&gt;criterion = trial.suggest_categorical('criterion' ,['gini', 'entropy'])&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;suggest_uniform : 범위 내의 균일 분포를 값으로 선택합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code class=&quot;code-inline&quot;&gt;subsample = trial.suggest_uniform('subsample' ,0.2,0.8)&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;suggest_discrete_uniform : 범위 내의 이산 균등 분포를 값으로 선택합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code class=&quot;code-inline&quot;&gt;max_features = trial.suggest_discrete_uniform('max_features', 0.05,1,0.05)&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;suggest_loguniform : 범위 내의 로그 함수 선상의 값을 선택합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code class=&quot;code-inline&quot;&gt;learning_rate = trial.sugget_loguniform('learning_rate' : 1e-6, 1e-3)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;소스 코드&quot;&gt;&lt;b&gt;소스 코드&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;이전 포스팅에서 사용했던 XGBoost Regressor를 최적화 하는데 사용한 소스코드 입니다.&lt;/p&gt;
&lt;p&gt;전체 소스코드는 &lt;a href=&quot;https://www.kaggle.com/ssooni/xgboost-lgbm-optuna&quot;&gt;https://www.kaggle.com/ssooni/xgboost-lgbm-optuna&lt;/a&gt; 를 참고하시면 됩니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;매 Trial 마다 수행할 함수를 작성합니다.&lt;/p&gt;
&lt;p&gt;함수 내부에는 하이퍼파라미터의 값을 정의하는 부분과 모델을 학습하는 부분을 작성하고 Loss Metric의 결과를 반환합니다.&lt;/p&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/ssooni/1af4c9eb7e4d069e38b765779eeeda06.js&quot;&gt;&lt;/script&gt;
&lt;br /&gt;
&lt;p&gt;이제 아래의 소스를 참고해서 optuna를 사용해서 최적의 파라미터를 찾아봅시다.&lt;/p&gt;
&lt;p&gt;최적의 파라미터는 study.best_trial.params 에 저장되어 있습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/ssooni/8091751f2a948e3527a7865fc9db3df4.js&quot;&gt;&lt;/script&gt;
&lt;br /&gt;
&lt;p&gt;optuna는 추가적으로 학습하는 절차를 확인할 수 있는 시각화 툴도 제공합니다.&lt;/p&gt;
&lt;p&gt;다양한 시각화 기법을 제공하지만 저는 매 Trial 마다 Loss가 어떻게 감소되었는 확인 할 수 있는 함수와&lt;/p&gt;
&lt;p&gt;하이퍼 파라미터 별로 중요도를 확인할 수 있는 함수를 소개 합니다.&lt;/p&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/ssooni/574491bd556aa9d614e0e648b029a297.js&quot;&gt;&lt;/script&gt;
&lt;br /&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;newplot_(1).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;525&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bD6t3c/btqWc89i2ke/brczak77GVNFGRWdF1u8kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bD6t3c/btqWc89i2ke/brczak77GVNFGRWdF1u8kK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bD6t3c/btqWc89i2ke/brczak77GVNFGRWdF1u8kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbD6t3c%2FbtqWc89i2ke%2Fbrczak77GVNFGRWdF1u8kK%2Fimg.png&quot; data-filename=&quot;newplot_(1).png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;525&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;newplot.png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;525&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HFRqO/btqWn2m5hhM/6vkf5AdDinv4mlKqzBjwoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HFRqO/btqWn2m5hhM/6vkf5AdDinv4mlKqzBjwoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HFRqO/btqWn2m5hhM/6vkf5AdDinv4mlKqzBjwoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHFRqO%2FbtqWn2m5hhM%2F6vkf5AdDinv4mlKqzBjwoK%2Fimg.png&quot; data-filename=&quot;newplot.png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;525&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;도움이 되셨으면, 아래의 공감 버튼을 눌러주세요.&lt;/p&gt;
&lt;p&gt;공감 버튼은 작성자에게 큰 동기부여가 됩니다.&lt;/p&gt;</description>
      <category>Data Mining</category>
      <category>optuna</category>
      <category>Python</category>
      <category>기계학습</category>
      <category>하이퍼파라미터 최적화</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/107</guid>
      <comments>https://ssoonidev.tistory.com/107#entry107comment</comments>
      <pubDate>Mon, 8 Feb 2021 09:00:12 +0900</pubDate>
    </item>
    <item>
      <title>XGBoost 요약 정리</title>
      <link>https://ssoonidev.tistory.com/106</link>
      <description>&lt;div class=&quot;note-wrapper&quot;&gt;
&lt;h3 id=&quot;캐글에서 사랑받는 XGBoost&quot;&gt;&lt;b&gt;캐글에서 사랑받는 XGBoost&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;요즘 캐글에서 문제를 도전해보는 재미로 공부를 하고 있습니다.&lt;/p&gt;
&lt;p&gt;최근에는 Tabular Playground Series - Jan 2021[ &lt;a href=&quot;http://kaggle.com/c/tabular-playground-series-jan-2021&quot;&gt;kaggle.com/c/tabular-playground-series-jan-2021&lt;/a&gt; ] 를 푸는 중에 다른 사람들이 올려놓은 노트북을 참고 해보니,&lt;/p&gt;
&lt;p&gt;대부분이 XGBoost를 사용해서 문제를 풀고 있는 것을 확인 했습니다.&lt;/p&gt;
&lt;p&gt;왜 이렇게 사랑 받고 있는지 궁금해서 직접 사용해보고 느낀 점을 정리해서 포스팅 해보곘습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&quot;앙상블 기법 : Boosting&quot;&gt;&lt;b&gt;앙상블 기법 : Boosting&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;그 전에 XGBoost에서 사용하는 Boosting이라는 앙상블 기법에 대해서 간단하게 설명을 해보겠습니다.&lt;/p&gt;
&lt;p&gt;앙상블은 직관적으로 &quot;집단 지성&quot; 이라고 생각을 하면 편리합니다. 여러 개의 모델을 사용해서 각각의 예측 결과를 만들고 그 예측 결과를 기반으로 최종 예측결과를 정하는 방법이죠&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;그 중 Boosting이란 방법은 비교적 약한 모델들을 결합하여 하나의 강한 모델 만드는 과정입니다.&lt;/p&gt;
&lt;p&gt;모델 A이 예측한 결과를 다음 모델인 B에서 보완하여 예측하고 최종적으로 C에서 보완을 해서 예측 결과를 만들어 내는 방식이죠.&lt;/p&gt;
&lt;p&gt;Boosting을 사용하는 대표적인 모델은 AdaBoost, Gradient Boost 등등이 이 있고 XGBoost는 그 중 Gradient Boosting 을 사용해서 모델링을 합니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Gradient Boosting 설명을 수학없이 간결하게 해준 유튜브 영상이 있어서 링크를 남겨 둘게요.&lt;/p&gt;
&lt;p&gt;이거보다 설명 잘 할 수 없을거 같아요. 꼭 보세요. 두 번 보세요.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=3CC4N4z3GJc&quot;&gt;https://www.youtube.com/watch?v=3CC4N4z3GJc&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&quot;XGBoost : Extreme Gradient Boosting&quot;&gt;&lt;b&gt;XGBoost : Extreme Gradient Boosting&lt;/b&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;장점 : 계산 속도 향상, Kaggle에서 수차례 우승한 경력&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;sklearn 에도 Gradient Boosting 로 Regression 또는 Classification 을 할 수 있는 매소드를 제공하고 있습니다만, 시간이 너무 오래 걸립니다.&lt;/p&gt;
&lt;p&gt;하지만 XGBoost의 경우에는 병렬 연산을 지원하여 계산 속도를 향상 시킵니다.&lt;/p&gt;
&lt;p&gt;또한 GPU를 사용 할 수 있는 옵션을 제공하기 때문에 학습하는데 소요되는 시간을 절약할 수 있습니다.&lt;/p&gt;
&lt;p&gt;이것은 하이퍼파라미터 튜닝을 할 때도 특히 빛이 납니다. (CPU 만으로 50회를 돌리다 하루가 넘게 소요되서 당황스러웠던 기억이 있습니다.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;XGBoost는 Overfitting 을 Overfitting 을 제어 하기 위해 두 가지 방법을 제안합니다.&lt;/p&gt;
&lt;p&gt;1. 모델의 복잡도를 제어하는 방법 : max_depth, min_child_weight, gamma 하이퍼파라미터 사용&lt;/p&gt;
&lt;p&gt;2. 다음 모델로 Loss 를 전달할 때 Random Value를 추가하는 방법 : subsample, colsample_bytree 파라미터 사용&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그 외에도 early_stopping_rounds 를 사용해서 눈에 띄지 않게 Loss가 감소하지 않은 경우에는 학습을 진행하지 않도록 제어도 가능합니다.&lt;/p&gt;
&lt;p&gt;학습 성능의 경우에는 kaggle의 수차례 우승한 사례를 봤을 때, 충분히 우수하다고 판단됩니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block; text-align: center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;단점 : Tree Based Learning, 복잡한 하이퍼 파라미터&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;모든 학습 알고리즘이 그렇듯, 장점과 단점이 있기 때문에 데이터의 분포나 상황에 알맞게 사용해야 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. Tree Based Learning 를 학습할 때 학습 데이터에 예민하게 반응합니다.&lt;/p&gt;
&lt;p&gt;학습 데이터에서 1~10 사이의 범주를 가진 라벨로 학습을 진행한 모델이 있다고 합시다.&lt;/p&gt;
&lt;p&gt;이 모델은 데이터의 예측을 1 ~ 10 사이의 값으로 예측을 하고자 하고 10 초과, 1 미만으로 반환을 하기 어렵습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. 적절하게 튜닝을 하지 않은 모델은 Overfit이 쉽게 발생하는 문제 때문에 반드시 진행해야하는 절차입니다.&lt;/p&gt;
&lt;p&gt;그런데 XGBoost는 튜닝을 할 때 손봐야할 파라미터가 너무 많습니다.&lt;/p&gt;
&lt;p&gt;(당장 xgboost 공식 홈페이지에 가서 내용을 봐도, 파라미터가의 수가 너무 많습니다.)&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&quot;소스코드&quot;&gt;&lt;b&gt;소스코드&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.kaggle.com/ssooni/xgboost-lgbm-optuna&quot;&gt;https://www.kaggle.com/ssooni/xgboost-lgbm-optuna&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;소스코드에는 XGBoost 외에도 LightGBM, Optuna, Stacking 앙상블을 사용한 내용도 있습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/ssooni/b8a893696c79116cc5ea39abb70479b8.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;</description>
      <category>Data Mining</category>
      <category>boosting</category>
      <category>regression</category>
      <category>xgboost</category>
      <category>XGBRegressor</category>
      <category>기계학습</category>
      <category>인공지능</category>
      <category>파이썬</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/106</guid>
      <comments>https://ssoonidev.tistory.com/106#entry106comment</comments>
      <pubDate>Sun, 7 Feb 2021 21:36:08 +0900</pubDate>
    </item>
    <item>
      <title>GRU(Gated Recurrent Unit)</title>
      <link>https://ssoonidev.tistory.com/105</link>
      <description>&lt;div class=&quot;note-wrapper&quot;&gt;
&lt;blockquote&gt;
&lt;p&gt;이전 포스팅 :&amp;nbsp;&lt;a href=&quot;https://ssoonidev.tistory.com/102&quot;&gt;2019/01/15 - [Data Mining] - [Python] 공공데이터 API 사용기 (feat 미세먼지)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333; letter-spacing: 0px;&quot;&gt;GitHub : &lt;/span&gt;&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;https://github.com/ssooni/data_mining_practice&quot;&gt;https://github.com/ssooni/data_mining_practice&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;소소한 근황 소개&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;미세먼지 API를 사용하는 것을 이후로 SVM이나 Correlation 적용하는 등의 시도를 하였으나,&lt;/p&gt;
&lt;p&gt;생각보다 결과도 좋지 않았고 내가 알고 있는 지식의 한계가 와서... 대학원을 가버렸다(응?)&lt;/p&gt;
&lt;p&gt;또 약간의 지식을 배웠으니까 블로그에 정리를 해봅니다.&lt;/p&gt;
&lt;br /&gt;
&lt;h2 id=&quot;Sequence Model&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Sequence Model&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;앞선 포스팅에서 매 시간마다 측정한 미세먼지 및 기상 데이터를 수집을 하였습니다.&lt;/p&gt;
&lt;p&gt;미세먼지나 기상데이터의 특징이라고 한다면 시간에 따른 순서가 있는 데이터라는 점입니다.&lt;/p&gt;
&lt;p&gt;이러한 종류의 데이터를 모델링하는 걸 Sequence Model이라고 하며 RNN, LSTM, 이번에 다룰 GRU 등이 있다.&lt;/p&gt;
&lt;p&gt;Sequence Model에 주로 적용하는 데이터는 주식이나 텍스트 등이 있다.&lt;/p&gt;
&lt;p&gt;(우리가 사용하는 언어도 어순이 있기 때문에 Sequence Model 대상이다.)&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;일반적으로 사용하는 신경망에서 Sequence Data 를 사용하기 어려운 이유는 2가지입니다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입력 데이터와 출력 데이터의 길이가 가변적이다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;대표적으로 CNN은 입력값이나 출력값의 길이가 모델을 학습하거나 적용할 때 동일합니다.&lt;/p&gt;
&lt;p&gt;하지만 우리가 주로 보는 동영상이나 책을 입력 데이터로 한다면 각각의 데이터의 길이가 다른데,&lt;/p&gt;
&lt;p&gt;이러한 점은 일반적인 인공 신경망 알고리즘에는 적합하지 않은 데이터입니다.&lt;/p&gt;
&lt;p&gt;(일부 논문에서는 0으로 부족한 공간을 채워서 연구한 사례가 있긴 합니다.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;일반적인 신경망 알고리즘에서는 데이터의 순서를 반영하지 않습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;데이터를 섞어도 학습 결과가 크가 변화하지 않습니다.&lt;/p&gt;
&lt;p&gt;즉, 데이터의 선후 관계가 전혀 반영이 되지 않는다는 점이 한계입니다.&lt;/p&gt;
&lt;br /&gt;
&lt;h2 id=&quot;RNN의 구조&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;RNN의 구조&lt;/b&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;뒤에서 자꾸 무언가를 준다..&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;RNN의 학습하는 과정을 도식을 하면 아래와 같이 보통 표현합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;533&quot; data-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRRqNo/btqTF2SO6yM/7wc1Oc4dp4qaFhBVPfCv91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRRqNo/btqTF2SO6yM/7wc1Oc4dp4qaFhBVPfCv91/img.png&quot; data-alt=&quot;RNN 구조 도식&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRRqNo/btqTF2SO6yM/7wc1Oc4dp4qaFhBVPfCv91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRRqNo%2FbtqTF2SO6yM%2F7wc1Oc4dp4qaFhBVPfCv91%2Fimg.png&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;533&quot; data-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;RNN 구조 도식&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;br /&gt;
&lt;p&gt;파란 색으로 부분을 cell 이라고 합니다.&lt;/p&gt;
&lt;p&gt;각각의 cell은 매 단계 마다 일렬로 입력되는 input x와 이전 단계의 결과로 산출된 hidden 값 h를 입력으로 받고 출력으로 예측 값인 y 와 다음 단계로 전달할 hidden 값을 전달합니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;매 단계마다 이전 단계에서 만들어진 hidden 값을 사용하여 y 값을 생성하기 때문에&lt;br /&gt;입력 값의 순서가 다르면 hidden 값 역시 다르기 때문에 앞서 말한 선후 관계가 반영되지 않은 문제점을 해결할 수 있습니다.&lt;/p&gt;
&lt;p&gt;또한 RNN은 다양한 Input 과 Output 의 구조를 가질 수 있습니다.&lt;br /&gt;1:N, N:M, N:1 등의 다양한 구조의 데이터를 적용합니다.&lt;/p&gt;
&lt;br /&gt;
&lt;h2 id=&quot;GRU : Gated Recurrent Unit&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;GRU : Gated Recurrent Unit&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;RNN은 단점이 있습니다. Cell 내부에서는 실제로 소수점 단위의 계산이 이뤄지고 있고 그 결과로 h 값이 발생하는데,&lt;/p&gt;
&lt;p&gt;Sequence가 너무 긴 데이터의 경우에 0에 가까운 값이 오고 가게 되어 컴퓨터가 계산할 수 없는 작은 수로 수렴하게 되는 문제가 있습니다.&lt;/p&gt;
&lt;p&gt;Gradient Vanishing 으로 불리는 이 문제는 이전 단계의 정보를 선택적으로 학습을 하는 즉, &quot;줄 건 줘&quot; 방식으로 계산하는 LSTM이나 GRU를 통해 개선이 되었습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;그리고 이전 단계의 데이터의 반영과 현재 데이터에 대한 반영의 비율을 Gate 를 통해 제어를 합니다.&lt;br /&gt;GRU는 Reset / Update 두 종류의 게이트를 사용해서 학습하는 모델입니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;i&gt;&lt;b&gt;Reset Gate&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Reset Gate 에서는 이전 단계의 Hidden status 값과 현 단계의 x 값을 Sigmoid 함수에 적용하여 0 ~ 1 사이의 값을 얻습니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgnSJt/btqTPzae74s/k5kCTvleN7tq3eKZVeWZpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgnSJt/btqTPzae74s/k5kCTvleN7tq3eKZVeWZpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgnSJt/btqTPzae74s/k5kCTvleN7tq3eKZVeWZpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgnSJt%2FbtqTPzae74s%2Fk5kCTvleN7tq3eKZVeWZpk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p&gt;&amp;nbsp;이 값을 이용해서 과거(이전 데이터)의 Hidden 정보를 현재의 정보를 구하는데 얼마만큼 반영 할 것인지 정합니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;i&gt;&lt;b&gt;Update Gate&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Update Gate 에서도 이전 단계의 Hidden status 값과 현 단계의 x 값을 Sigmoid 함수에 적용하여 0 ~ 1 사이의 값을 얻습니다.&lt;/p&gt;
&lt;p&gt;물론 Reset Gate의 Weight 와 다른 Weight를 이용해 계산합니다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kOnoO/btqTJmpHmj0/FjygmLyKAUDFhRkfHxt9eK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kOnoO/btqTJmpHmj0/FjygmLyKAUDFhRkfHxt9eK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kOnoO/btqTJmpHmj0/FjygmLyKAUDFhRkfHxt9eK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkOnoO%2FbtqTJmpHmj0%2FFjygmLyKAUDFhRkfHxt9eK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p&gt;이 값을 이용해서 전체 데이터의 양을 1로 했을 때 현재의 정보를 반영할 비율을 $z_t$, 과거의 정보를 반영할 비율을 $1-z_t$ 로 합니다.&lt;br /&gt;이제 현재의 정보를 아래의 식을 이용해서 구합니다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2xVOj/btqTPybjAAZ/kcPRQLo9Qeh7K5yOoxFwo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2xVOj/btqTPybjAAZ/kcPRQLo9Qeh7K5yOoxFwo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2xVOj/btqTPybjAAZ/kcPRQLo9Qeh7K5yOoxFwo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2xVOj%2FbtqTPybjAAZ%2FkcPRQLo9Qeh7K5yOoxFwo1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p&gt;Reset Gate에서 구한 $r_t$를 이용해서 현재 정보를 얻습니다.&lt;/p&gt;
&lt;p&gt;마지막으로 현재의 HIdden Status를 과거의 Hiddent Status와 현재의 정보를 앞서 구한 비율 $z_t$ 를 적용하여 계산 후 다음 단계로 전달합니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/elK9vM/btqTJTngnp8/ntHwPYsNJBqKT9hyJ57kYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/elK9vM/btqTJTngnp8/ntHwPYsNJBqKT9hyJ57kYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/elK9vM/btqTJTngnp8/ntHwPYsNJBqKT9hyJ57kYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FelK9vM%2FbtqTJTngnp8%2FntHwPYsNJBqKT9hyJ57kYK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block; text-align: center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;Pytorch 로 적용 해보기&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Pytorch 로 적용 해보기&lt;/b&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;전체 소스 코드 : &lt;a href=&quot;https://github.com/ssooni/data_mining_practice/blob/master/dust_weather/GRU.ipynb&quot;&gt;https://github.com/ssooni/data_mining_practice/blob/master/dust_weather/GRU.ipynb&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;class GRU(nn.Module):
    def __init__(self, n_layers, hidden_dim, input_dim, n_classes=1, dropout_p=0.2):
        super(GRU, self).__init__()
        self.n_layers = n_layers
        self.hidden_dim = hidden_dim

        self.dropout = nn.Dropout(dropout_p)
        self.gru = nn.GRU(input_dim, self.hidden_dim, num_layers=self.n_layers, batch_first=True, dropout=dropout_p)
        self.fc = nn.Linear(self.hidden_dim, n_classes)

    def forward(self, x):
        h0 = self._init_state(x.size(0))
        out, (hn) = self.gru(x, (h0.detach()))
        out = self.fc(out[:, -1, :]) 
        return out

    def _init_state(self, batch_size=1):
        weight = next(self.parameters()).data
        return weight.new(self.n_layers, batch_size, self.hidden_dim).zero_().to(DEVICE)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;note-wrapper&quot;&gt;
&lt;p&gt;전체 소스코드와 실행 결과를 GitHub 에 올려 두었습니다.&amp;nbsp;&lt;br /&gt;매 시간 측정된 날씨 데이터와 미세 먼지 데이터를 이용해서 예측을 해보는 것을 해보았습니다.&lt;br /&gt;실습용으로 사용할려고, 전처리도 간단하게 하고 프로그램도 간단하게 구현했습니다.&amp;nbsp;&lt;br /&gt;참고용으로만 사용하시고, 원하는 도메인에 적절하게 적용하세요&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt; 공감 버튼은 작성자에게 큰 동기부여가 됩니다.&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;</description>
      <category>Data Mining</category>
      <category>gru</category>
      <category>Python GRU</category>
      <category>PyTorch GRU</category>
      <category>rnn</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/105</guid>
      <comments>https://ssoonidev.tistory.com/105#entry105comment</comments>
      <pubDate>Sun, 17 Jan 2021 21:49:41 +0900</pubDate>
    </item>
    <item>
      <title>[동대문 맛집] 홍리마라탕</title>
      <link>https://ssoonidev.tistory.com/104</link>
      <description>&lt;div class=&quot;note-wrapper&quot;&gt;
            &lt;h2&gt;마라탕 첫 느낌&lt;/h2&gt;
&lt;p&gt;요새 감자님이 &quot;맛있는 녀석들&quot; 을 왓챠플레이를 보면서 정주행 중인데, 그거 덕분에 데이트 메뉴가 다채로워 지는거 같았습니다.&lt;/p&gt;&lt;p&gt;감자님은 원래 매운 걸 먹는 걸 좋아해서 서울에 맵다는 곳은 다 돌아다니면서 먹었어요.&lt;/p&gt;&lt;p&gt;물론 항상 약국에서 위장약 사와서 힘들어 하기도 했었구요&lt;/p&gt;
&lt;div class=&quot;note-wrapper&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;note-wrapper&quot;&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99865E435C694B051E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99865E435C694B051E&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;2f81995a15e74611a9b1eeb3d0e22e23.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;그래서 마라탕을 먹는다고 했을 때 겁도 많이 났었지만, 매운 걸 잘 못 먹는 지인이 중국 여행을 다녀오고 나서 맛있다고 자랑을 해서&lt;/p&gt;&lt;p&gt;그래, 한 번 먹어보자는 생각으로 갔던거 같아요.&lt;/p&gt;&lt;p&gt;마라탕을 먹으러 갔는데 주변에 생선을 엄청나게 굽고 있더라고요.&lt;/p&gt;&lt;p&gt;생선구이 골목이라고 하는데 연기가 자욱했지만 그 곳도 궁금하긴 하네요&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99AC1F495C69489332&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99AC1F495C69489332&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;KakaoTalk_20190216_215728361.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;매운 단계는 0단계부터 아주 맵다는 4단계 총 5단계로 되어있어요&lt;/p&gt;&lt;p&gt;저희 둘은 양고기 3단계와 소고기 3단계 마라탕을 주문하고, 면은 옥수수면이 좋다해서 옥수수면으로 했어요.&lt;/p&gt;&lt;p&gt;사이드 메뉴로 쇼좌빙이라는 걸 주문했어요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/p&gt;&lt;h2&gt;고소한 땅콩향과 알싸한 맛&lt;/h2&gt;
&lt;p&gt;3단계를 시켜서 맵지 않을까 걱정했는데, 신라면 국물 정도로 매웠어요.&lt;/p&gt;&lt;p&gt;국물은 땅콩 그 자체였기 때문에 땅콩 알르레기가 있는 사람이라면 미리 말하는게 좋습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9965124F5C6947F723&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9965124F5C6947F723&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;KakaoTalk_20190216_215729278.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;양고기나 소고기나 국물맛이 크게 다르지는 않았어요. 양고기를 더 좋아하는 취향이면 양고기를 드셔도 될거같아요&lt;/p&gt;&lt;p&gt;맨날 탱글탱글한 면을 먹다가 축쳐진 옥수수면을 먹으니까 익숙하지 않은 식감이였어요.&lt;/p&gt;&lt;p&gt;다음 번에는 다른 면을 먹어 봐야겠어요. 개인적으로 옥수수 면은 식감때문에 썩 좋지는 않았습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A52F485C69483222&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A52F485C69483222&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;KakaoTalk_20190216_215727933.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;감자님이 고수를 먹을 줄 알아서 고수를 넣어서 먹었는데 그냥 먹는 거보다 맛있다고 꼭 넣어 먹어라는데&lt;/p&gt;&lt;p&gt;저는 고수를 싫어하기 때문에, &lt;b&gt;전혀&lt;/b&gt; 공감가지 않았습니다 ㅋㅋㅋ&lt;/p&gt;&lt;p&gt;고수를 좋아하는 분들은 한 번 넣어서 드셔보세요. 고수는 셀프로 먹고 싶은 만큼 퍼서 드실 수 있어요.&lt;/p&gt;
&lt;br /&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/998A9B435C69484A0E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F998A9B435C69484A0E&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;KakaoTalk_20190216_215731040.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;쇼좌빙이 왔는데 크로와상을 넓게 펼친 듯한 비주얼이였어요. 연유와 함께 주는데 별미였어요.&lt;/p&gt;&lt;p&gt;&lt;b&gt;야채 크래커 향과 연유에 달달한게 만나서 맛이 좋더라구요.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;뭔지 궁금해서 호기심에 지른 건데 조금 기름지긴 했지만 맛이 좋아서 기분이 좋았습니다.&lt;/p&gt;
&lt;div class=&quot;note-wrapper&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;/p&gt;&lt;h2&gt;먹을 땐 괜찮았는데..&lt;/h2&gt;
&lt;p&gt;먹다 보니까 점점 매워지긴 했지만 이 정도는 견딜만하다 생각했었는데, 위장은 그렇지 않았나봐요 ㅋㅋㅋㅋㅋ&lt;/p&gt;&lt;p&gt;저녁에 감자님이랑 저랑 각자 화장실에서 고생을 좀 많이 했습니다.&lt;/p&gt;&lt;p&gt;매운 걸 먹을 때마다 다음 날에 심하게 고생하는 타입이라면 괜한 용기 내지 마시고, 단계를 낮춰서 드시는게 좋을거 같네요.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;iframe id=&quot;emap_286452&quot; src=&quot;/proxy/plusmapViewer.php?id=emap_286452&amp;amp;mapGb=V&quot; width=&quot;484&quot; height=&quot;362&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; mapdata=&quot;map_type=TYPE_MAP&amp;map_hybrid=false&amp;idx=1&amp;title=%ED%99%8D%EB%A6%AC%EB%A7%88%EB%9D%BC%ED%83%95&amp;addr=%EC%84%9C%EC%9A%B8%20%EC%A2%85%EB%A1%9C%EA%B5%AC%20%EC%A2%85%EB%A1%9C5%EA%B0%80%20462-1%201%EC%B8%B5&amp;tel=&amp;mapX=501230&amp;mapY=1130740&amp;ifrW=484px&amp;ifrH=362px&amp;addtype=1&amp;map_level=6&amp;rcode=1111067000&amp;docid=&amp;confirmid=308660810&amp;mapWidth=484&amp;mapHeight=362&amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A484%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A501230%2C%22mapCenterY%22%3A1130740%2C%22mapLevel%22%3A6%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A501234%2C%22y%22%3A1130757%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%ED%99%8D%EB%A6%AC%EB%A7%88%EB%9D%BC%ED%83%95%22%2C%22confirmid%22%3A%22308660810%22%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;toJSONString=&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;긴 글 읽어 주셔서 감사합니다.&lt;/p&gt;&lt;p&gt;공감 버튼은 작성자에게 큰 힘이 됩니다. 감사합니다.&lt;/p&gt;
        &lt;/div&gt;
        &lt;script type=&quot;text/javascript&quot;&gt;
            (function() {

    var doc_ols = document.getElementsByTagName(&quot;ol&quot;);

    for ( i=0; i&lt;doc_ols.length; i++) {

        var ol_start = doc_ols[i].getAttribute(&quot;start&quot;) - 1;
        doc_ols[i].setAttribute(&quot;style&quot;, &quot;counter-reset:ol &quot; + ol_start + &quot;;&quot;);

    }

})();
        &lt;/script&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>눈누난냐</category>
      <category>동대문 마라탕</category>
      <category>동대문 맛집</category>
      <category>마라탕</category>
      <category>매운 음식</category>
      <category>서울 마라탕</category>
      <category>홍리마라탕</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/104</guid>
      <comments>https://ssoonidev.tistory.com/104#entry104comment</comments>
      <pubDate>Sun, 17 Feb 2019 20:53:54 +0900</pubDate>
    </item>
    <item>
      <title>[예술의 전당] 존 레논 이매진 전 관람 후기</title>
      <link>https://ssoonidev.tistory.com/103</link>
      <description>&lt;div class=&quot;note-wrapper&quot;&gt;
&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/992CBD4C5C481C0F08&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F992CBD4C5C481C0F08&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;cd9a92c64c2249a4a3d356787f28915e.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;note-wrapper&quot;&gt;&lt;br /&gt;
&lt;blockquote&gt;
&lt;p&gt;위치 : 한가람 미술관&lt;/p&gt;&lt;p&gt;전시일 : 2018.12.06(목) ~ 2019.03.10(일)&lt;/p&gt;&lt;p&gt;관람시간(~2월) : 오전 11시 - 오후 7시 (입장마감 오후 6시) &lt;/p&gt;&lt;p&gt;관람시간(3월) : 오전 11시 - 오후 8시 (입장마감 오후 7시) &lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;note-wrapper&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;이번 주말에는 존 레논 이매진 전시회를 다녀왔습니다.&lt;/p&gt;&lt;p&gt;예술의 전당에서 매번 커피나 마셨지 전시회를 직접 찾아 간적이 없어서, 아쉬웠는데 위메프에서 할인하는 것을 보고 후다닥 예매를 했습니다.&lt;/p&gt;&lt;p&gt;존 레논이 음악사의 한 시대를 풍미했던 인물이였기 때문에 사람들이 많이 방문했습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;저는 어릴 적 &quot;20세기를 빛낸 사람들&quot; 이라는 만화책에서 비틀즈 편으로 존 레논의 존재를 처음으로 알게 되었습니다.&lt;/p&gt;&lt;p&gt;그 때 느낀 존 레논의 이미지는 &quot;제멋대로, 독특한 사상을 가진&quot; 사람으로 느껴졌습니다.&lt;/p&gt;&lt;p&gt;다른 여자에 빠져 가정에 충실하지 않고 그룹 맴버들과 서먹해하는 그가 이기적이라고 생각도 했었습니다.&lt;/p&gt;&lt;p&gt;20대가 된 지금은 어떻게 받아드려질까 생각하면서 전시회를 관람하였습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;감자님은 걱정이 많았습니다.&lt;/p&gt;&lt;p&gt;비틀즈의 몇몇 노래는 무한도전을 통해서 들었지만, 맴버가 누가 있고 그들에 대한 정보를 전혀 몰랐기 때문입니다.&lt;/p&gt;&lt;p&gt;그래서 &lt;mark&gt;도슨트를 이용할까&lt;/mark&gt; 하고 이용시간을 확인하였습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;도슨트 제공 시간&lt;/b&gt;&lt;/p&gt;&lt;p&gt;월 화 : 11:30 / 14:00 / 17:00&lt;/p&gt;&lt;p&gt;수 목 금 : 11:00 / 13:00 / 15:00 / 17:00 &lt;/p&gt;&lt;p&gt;(주말에 더 이상 도슨트 서비스를 제공하지 않는다고 한다.)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;p&gt;입구 쪽에서 천천히 관람을 하면서 도슨트 분을 기다렸는데, 피리부는 사나이 마냥 우루루 모이는 것을 보고 포기했습니다.&lt;/p&gt;&lt;p&gt;물론 &lt;b&gt;음성으로 안내하는 앱이나 음성안내 장치를 전시회에서 제공&lt;/b&gt;하니, 이 기회에 존 레논에 대해서 알아 보겠다고 생각하시는 분이라면 좋은 선택지가 되겠습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;존 레논의 사망으로 시작&lt;/h2&gt;&lt;p&gt;전시회의 시작은 존 레논이 광팬이였던 마크 채프먼의 총을 맞고 사망한 사건에서부터 시작합니다.&lt;/p&gt;&lt;p&gt;뉴스 속보와 당시 슬퍼하는 수많은 사람들의 비통한 표정들이 존 레논이라는 인물이 얼마나 사랑을 받았는지 알 수 있었습니다.&lt;/p&gt;&lt;p&gt;(참고로 마크 채프먼은 종신형을 받고 아직 수감생활 중입니다.)&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;존 레논과 비틀즈의 탄생 그리고 성공&lt;/h2&gt;
&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996112355C48182627&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996112355C48182627&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;KakaoTalk_20190120_171242740.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;다음 관에서는 존 레논의 어릴 적 가정사와 비틀즈의 탄생에 대해 얘기합니다.&lt;/p&gt;&lt;p&gt;어느 시대이든 고난을 극복하는 사람이 시대를 대표하는 위인이 될 수 있나 봅니다.&lt;/p&gt;&lt;p&gt;어린 시절 존 레논은 하나뿐인 어머니를 교통사고로 잃는 등 힘든 시절을 보냅니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;폴 매카트니와 조지 해리슨과 함께 밴드 생활을 하던 그들의 재능을 브라이언 엡스타인이 끈질기게 구애를 합니다.&lt;/p&gt;&lt;p&gt;설득이 끝에 결국 그가 매니저로 임명되었으며, 마지막에 합류한 드러머 링고 스타까지 합류하면서 우리가 아는 비틀즈가 활동을 시작합니다.&lt;/p&gt;&lt;p&gt;비틀즈는 그 후 내는 앨범마다 유럽과 미국에서 크게 성공을 하는 얘기들이 있습니다.&lt;/p&gt;
&lt;div class=&quot;note-wrapper&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;오노 요코와 만남&lt;/h2&gt;
&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/998C97415C48183331&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F998C97415C48183331&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;KakaoTalk_20190120_230627180.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그의 인생은 오노 요코를 만남으로 크게 변화합니다.&lt;/p&gt;&lt;p&gt;존 레논과 오노 요코는 예술적인 영감 교류로 그들의 사상을 확장하지만, 비틀즈 맴버들과 거리가 멀어지면서 비틀즈는 해체합니다.&lt;/p&gt;&lt;p&gt;그 후 사랑과 평화라는 사상을 존 레논의 영향력으로 다양한 운동을 통해 세상을 향해 표출합니다.&lt;/p&gt;&lt;p&gt;&quot;BED-IN&quot;, &quot;bagism&quot; 등 존 레논이 했던 행위 예술들을 전시회에서 체험해 볼 수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99198B415C48183221&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99198B415C48183221&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;KakaoTalk_20190120_230626622.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;아빠 존 레논&lt;/h2&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F35D355C4818272B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F35D355C4818272B&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;KakaoTalk_20190120_171250669.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;존 레논이 오노 요코 사이에서 태어난 아이를 위해 5년간 육아를 하면서 그린 그림들과 사진들이 전시되어 있습니다.&lt;/p&gt;&lt;p&gt;그림들이 간결한 선들로 되어 있으나 인물의 특징을 잘 표현되어 있습니다.&lt;/p&gt;&lt;p&gt;작곡 능력에 그림과 시까지 지금까지 살아 있다면 더 많은 작품들을 남겼을텐데 하는 아쉬움이 들었습니다.&lt;/p&gt;&lt;p&gt;그리고 존 레논의 사진들이 전시되어 있는데, 남자가 봐도 잘 생겼습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99123D3B5C48182D2E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99123D3B5C48182D2E&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;KakaoTalk_20190120_230625050.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;잘생겼다..&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;마치며 : Imagine&lt;/h2&gt;
&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993ED2355C48182929&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993ED2355C48182929&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;KakaoTalk_20190120_171254222.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;전시회의 마지막에는 피아노 한 대와 Imagine 뮤직 비디오가 틀어진 스크린이 있습니다.&lt;/p&gt;&lt;p&gt;Imagine 노래를 들으면서 저는 존 레논이 &quot;몽상가(Dreamer)&quot; 라고 생각이 들었습니다.&lt;/p&gt;&lt;p&gt;하지만 몽상가가 결코 나쁘다고 생각은 하지 않습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;비행기가 &quot;내가 하늘 날 수 있으면 좋겠다&quot; 꿈에서 시작되어 발명이 되었듯이,&lt;/p&gt;&lt;p&gt;그가 꿈꾸던 사랑과 평화가 가득한 세상을 우리가 함께 꿈꾼다면 인류는 언제나 그렇듯 꿈을 이루리라 생각합니다.&lt;/p&gt;&lt;p&gt;각박한 세상 살이에 서로를 탓하기 바쁜 우리 세상도 사랑으로 가득하길 기원합니다.&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;참고사항&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;하나하나 꼼꼼하게 읽으면서 작품을 관람하니까 1시간정도 걸렸습니다.
&lt;/li&gt;&lt;li&gt;사진을 찍는 것은 자유로우나 동영상을 촬영하는 것은 금지되어 있습니다.
&lt;/li&gt;&lt;li&gt;매 챕터마다 비틀즈 또는 존 레논의 음악을 틀어 줍니다.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;/p&gt;&lt;h2&gt;사진들&lt;/h2&gt;

        &lt;/div&gt;
        &lt;script type=&quot;text/javascript&quot;&gt;
            (function() {

    var doc_ols = document.getElementsByTagName(&quot;ol&quot;);

    for ( i=0; i&lt;doc_ols.length; i++) {

        var ol_start = doc_ols[i].getAttribute(&quot;start&quot;) - 1;
        doc_ols[i].setAttribute(&quot;style&quot;, &quot;counter-reset:ol &quot; + ol_start + &quot;;&quot;);

    }

})();
        &lt;/script&gt;
  &lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9939A1355C48182629&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9939A1355C48182629&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;KakaoTalk_20190120_171249880.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99AFCC355C48182730&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99AFCC355C48182730&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;KakaoTalk_20190120_171251452.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99FD00355C4818282C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99FD00355C4818282C&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;KakaoTalk_20190120_171252360.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A544355C4818281B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A544355C4818281B&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;KakaoTalk_20190120_171253345.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;그래서 나는 오늘도 즐겁게 시간을 낭비했습니다 ^~^&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B0993B5C48182A28&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B0993B5C48182A28&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;KakaoTalk_20190120_171255264.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;어느 전시회처럼 기념품도 제공합니다.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;감자님한테 등짝 맞을까봐 참았습니다.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9946983B5C48182A2C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9946983B5C48182A2C&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;KakaoTalk_20190120_171258929.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;비틀즈하면 떠오는 장면 중 하나.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;여기서 사진을 찍는 사람들이 정말 많습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D3373B5C48182B27&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D3373B5C48182B27&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;KakaoTalk_20190120_171301179.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;긴 글 짧은 글로 뽑을 수 있는데 존레논 외의 다른 사람이 한 명언들도 있다.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993EB53B5C48182C2C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993EB53B5C48182C2C&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;KakaoTalk_20190120_230624559.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;전쟁 끝!! 너가 원한다면!!&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/995DD93B5C48182E2A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F995DD93B5C48182E2A&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;KakaoTalk_20190120_230625593.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;필름 속의 존 레논과 오노 요코&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;필름 사진기로 사진을 찍어야 누릴 수 있는 감성&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996243415C4818301E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996243415C4818301E&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;KakaoTalk_20190120_230626141.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;Hey Jude를 부르는 폴 매카트니&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe id=&quot;emap_074285&quot; src=&quot;/proxy/plusmapViewer.php?id=emap_074285&amp;amp;mapGb=V&quot; width=&quot;484&quot; height=&quot;362&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; mapdata=&quot;map_type=TYPE_MAP&amp;map_hybrid=false&amp;idx=1&amp;title=%EC%98%88%EC%88%A0%EC%9D%98%EC%A0%84%EB%8B%B9%20%ED%95%9C%EA%B0%80%EB%9E%8C%EB%AF%B8%EC%88%A0%EA%B4%80&amp;addr=%EC%84%9C%EC%9A%B8%20%EC%84%9C%EC%B4%88%EA%B5%AC%20%EC%84%9C%EC%B4%88%EB%8F%99%201202%20&amp;tel=02-580-1300&amp;mapX=503145&amp;mapY=1105828&amp;ifrW=484px&amp;ifrH=362px&amp;addtype=1&amp;map_level=4&amp;rcode=1165053000&amp;docid=&amp;confirmid=20496825&amp;mapWidth=484&amp;mapHeight=362&amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A484%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A503145%2C%22mapCenterY%22%3A1105828%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A503148%2C%22y%22%3A1105830%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%98%88%EC%88%A0%EC%9D%98%EC%A0%84%EB%8B%B9%20%ED%95%9C%EA%B0%80%EB%9E%8C%EB%AF%B8%EC%88%A0%EA%B4%80%22%2C%22confirmid%22%3A%2220496825%22%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;toJSONString=&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;긴 글 읽어 주셔서 감사합니다.&lt;/p&gt;&lt;p&gt;공감버튼은 작성자에게 큰 동기 부여가 됩니다.&lt;/p&gt;</description>
      <category>눈누난냐</category>
      <category>비틀즈 전시회</category>
      <category>예술의 전당</category>
      <category>예술의 전당 전시회</category>
      <category>전시회 사진</category>
      <category>존 레논</category>
      <category>존 레논 이매진</category>
      <category>존 레논 이매진 도슨트</category>
      <category>존 레논 이매진 리뷰</category>
      <category>존 레논 이매진 전</category>
      <category>존 레논 이매진 후기</category>
      <category>존 제논 전시회</category>
      <category>주말 데이트 장소</category>
      <category>한가람 미술관 전시회</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/103</guid>
      <comments>https://ssoonidev.tistory.com/103#entry103comment</comments>
      <pubDate>Wed, 23 Jan 2019 16:50:52 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 공공데이터 API 사용기 (feat 미세먼지)</title>
      <link>https://ssoonidev.tistory.com/102</link>
      <description>&lt;div class=&quot;note-wrapper&quot;&gt;
&lt;blockquote&gt;
&lt;p&gt;GitHub : &lt;a href=&quot;https://github.com/ssooni/data_mining_practice&quot;&gt;https://github.com/ssooni/data_mining_practice&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;h2&gt;새로운 시리즈 시작!!&lt;/h2&gt;
&lt;p&gt;이전 카카오 시리즈에 이어서 미세먼지 데이터와 기상 데이터를 이용해서 데이터 마이닝 기법들을 적용하는 연습을 해보았습니다.&lt;/p&gt;
&lt;p&gt;(그거 보다 궁금했어요.. 기상과 미세먼지와 밀접한 관계가 있는지 말이죠)&lt;/p&gt;
&lt;p&gt;데이터 수집, 전처리, 상관 분석 등 적용 해보고 싶은 방법들을 적용하고 결과를 관찰하도록 하겠습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;미세먼지 데이터 수집&lt;/h2&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A333405C3DCC2119&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A333405C3DCC2119&quot; width=&quot;500&quot; height=&quot;294&quot; filename=&quot;서울열린데이터광장_미세먼지.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;서울시 열린데이터광장(&lt;a href=&quot;http://data.seoul.go.kr/&quot;&gt;http://data.seoul.go.kr/&lt;/a&gt;)에서 시간별 평균 대기오염도 정보 데이터를 제공합니다.&lt;/p&gt;
&lt;p&gt;서울의 구 단위로 시간단위 미세먼지 농도를 제공하고 2009년 데이터도 존재하길래 사용하기 적절하다고 판단하여 인증 키를 취득하였습니다.&lt;/p&gt;
&lt;p&gt;회원가입 절차를 진행한 후에 간단하게 사용 목적을 명시하면 인증 키를 획득할 수 있었습니다.&lt;/p&gt;
&lt;p&gt;데이터의 저작권은 출처를 밝히면 자유롭게 사용이 가능합니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9936BE475C3DD17A29&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9936BE475C3DD17A29&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;서울데이터광장_인증키신청.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;기상 데이터 수집&lt;/h2&gt;
&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/994755355C3DCA272D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F994755355C3DCA272D&quot; width=&quot;500&quot; height=&quot;273&quot; filename=&quot;기상자료개방포털.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;열린데이터광장에 서울시의 과거 기상데이터도 제공하지만, 데이터가 썩 만족스럽지가 않아서 기상자료개방포탈(&lt;a href=&quot;https://data.kma.go.kr/cmmn/main.do&quot;&gt;https://data.kma.go.kr/cmmn/main.do&lt;/a&gt;)에서 기상데이터를 수집하였습니다.&lt;/p&gt;
&lt;p&gt;기상포탈에는 Open-API 서비스로 다양한 종류의 기상 데이터를 제공합니다.&lt;/p&gt;
&lt;p&gt;저는 시간 단위로 측정된 미세먼지 데이터를 수집하였기 때문에 기상 데이터도 &lt;b&gt;종관기상관측 시간자료&lt;/b&gt; 를 이용하였습니다.&lt;/p&gt;
&lt;p&gt;마찬가지로 회원가입을 진행한 후에 API 사용 신청을 하면 별다른 승인 절차 없이 API 사용이 가능합니다.&lt;/p&gt;
&lt;p&gt;API Key는 마이페이지 &amp;gt; 오픈 API 현황에서 확인 가능합니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9921DB395C3DCA6D26&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9921DB395C3DCA6D26&quot; width=&quot;500&quot; height=&quot;228&quot; filename=&quot;기상자료개방포털_API키.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;API 호출 프로그램 작성&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;전체 소스코드는 GitHub를 참조바랍니다.&lt;/p&gt;
&lt;p&gt;API Key 및 전체 데이터의 경우 공유가 힘든 점 양해바랍니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;p&gt;REST API는 Http URL의 요청을 처리하여 우리가 보통 사용하는 WEB 서비스는 Response를 HTML로 하는 것과 달리 &lt;i&gt;JSON이나 XML 등의 형태로 Response하는 API&lt;/i&gt; 입니다.&lt;/p&gt;
&lt;p&gt;Python에는 requests 모듈이 있어서 http url만 입력하면 reponse를 획득할 수 있습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;h3&gt;미세먼지 데이터 API&lt;/h3&gt;
&lt;p&gt;먼저 서울시 시간별 평균 대기오염도 정보 데이터 API를 호출하는 프로그램을 작성하였습니다.&lt;/p&gt;
&lt;p&gt;URL에 특정일자를 넣어주면 사용자가 설정한 start_index에서 end_index까지 데이터를 불러오는 API 구조입니다.&lt;/p&gt;
&lt;p&gt;list_total_count 라고 해당 호출의 최대 index 값을 제공하므로 아래의 절차로 프로그램을 구상하였습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;ol start=&quot;1&quot;&gt;&lt;li&gt;최초 호출에서 list_total_count를 획득한다.
&lt;/li&gt;&lt;li&gt;다음 호출에서 end_index 값을 list_total_count까지 사용한다.
&lt;/li&gt;&lt;li&gt;날짜별로 데이터를 CSV로 저장한다.
&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;code-multiline&quot; lang=&quot;python&quot;&gt;&lt;span class=&quot;sf_code_comment&quot;&gt;## callAPI.py&lt;/span&gt;
&lt;span class=&quot;sf_code_keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;sf_code_function&quot;&gt;call_api&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;api_name&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; start_date&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; end_date&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; dir_name&lt;span class=&quot;sf_code_punctuation&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;sf_code_comment&quot;&gt;# API 키는 공개하기 힘든 점 양해 바랍니다.&lt;/span&gt;
    api_key &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_builtin&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;./raw_data/api_key&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;).&lt;/span&gt;readlines&lt;span class=&quot;sf_code_punctuation&quot;&gt;()[&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;].&lt;/span&gt;strip&lt;span class=&quot;sf_code_punctuation&quot;&gt;()&lt;/span&gt;
    url_format &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;'http://openAPI.seoul.go.kr:8088/{api_key}/json/{api_name}/1/{end_index}/{date}'&lt;/span&gt;
    headers &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;'content-type'&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;'application/json;charset=utf-8'&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;sf_code_keyword&quot;&gt;for&lt;/span&gt; date &lt;span class=&quot;sf_code_keyword&quot;&gt;in&lt;/span&gt; pd&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;date_range&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;start_date&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; end_date&lt;span class=&quot;sf_code_punctuation&quot;&gt;).&lt;/span&gt;strftime&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;%Y%m%d&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;sf_code_comment&quot;&gt;# 최초 1회 Call은 해당 일자의 데이터 수를 확인한다.&lt;/span&gt;
        url &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; url_format&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;sf_code_builtin&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;api_name&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;api_name&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; api_key&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;api_key&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; end_index&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; date&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;date&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;
        response &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; requests&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;get&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;url&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; headers&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;headers&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;
        end_index &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; response&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;json&lt;span class=&quot;sf_code_punctuation&quot;&gt;()[&lt;/span&gt;api_name&lt;span class=&quot;sf_code_punctuation&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;list_total_count&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;]&lt;/span&gt;
        &lt;span class=&quot;sf_code_keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;Max Count(%s): %s&quot;&lt;/span&gt; &lt;span class=&quot;sf_code_operator&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;date&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; end_index&lt;span class=&quot;sf_code_punctuation&quot;&gt;))&lt;/span&gt;

        &lt;span class=&quot;sf_code_comment&quot;&gt;# 해당 일자의 모든 데이터를 불러온다.&lt;/span&gt;
        url &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; url_format&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;sf_code_builtin&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;api_name&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;api_name&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; api_key&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;api_key&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; end_index&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;end_index&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; date&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;date&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;
        response &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; requests&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;get&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;url&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; headers&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;headers&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;
        result &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; pd&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;DataFrame&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;response&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;json&lt;span class=&quot;sf_code_punctuation&quot;&gt;()[&lt;/span&gt;api_name&lt;span class=&quot;sf_code_punctuation&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;row&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;])&lt;/span&gt;

        &lt;span class=&quot;sf_code_comment&quot;&gt;# 수집된 데이터를 CSV로 저장합니다.&lt;/span&gt;
        result&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;to_csv&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;./raw_data/%s/dust_%s.csv&quot;&lt;/span&gt; &lt;span class=&quot;sf_code_operator&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;dir_name&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; date&lt;span class=&quot;sf_code_punctuation&quot;&gt;),&lt;/span&gt; index&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sf_code_boolean&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; encoding&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;utf-8&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;sf_code_comment&quot;&gt;# API 부하 관리를 위해 0.5초 정도 쉬어 줍시다 (찡긋)&lt;/span&gt;
        sleep&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;0.5&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;h3&gt;기상 데이터 API&lt;/h3&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;다음은 기상데이터 API를 사용하는 함수를 작성하였습니다.&lt;/p&gt;
&lt;p&gt;이 API는 조회 시작 일자와 시간 / 최종 일자와 시간, 가져올 데이터의 수를 Param으로 사용합니다.&lt;/p&gt;
&lt;p&gt;안전하게 저는 1회 요청시 하루 단위로 넉넉하게 최대 100건 정도를 요청하였습니다.&lt;/p&gt;
&lt;p&gt;매 시간 단위로 측정되는 데이터라 많아야 24건이기 때문이죠.&lt;/p&gt;
&lt;p&gt;결과는 마찬가지로 CSV 파일로 저장하였습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;code-multiline&quot; lang=&quot;python&quot;&gt;&lt;span class=&quot;sf_code_comment&quot;&gt;## callAPI.py&lt;/span&gt;
&lt;span class=&quot;sf_code_keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;sf_code_function&quot;&gt;call_weather_api&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;start_date&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; end_date&lt;span class=&quot;sf_code_punctuation&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;sf_code_comment&quot;&gt;# API 키는 공개하기 힘든 점 양해 바랍니다.&lt;/span&gt;
    api_key &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_builtin&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;./raw_data/weather_api&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;).&lt;/span&gt;readlines&lt;span class=&quot;sf_code_punctuation&quot;&gt;()[&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;].&lt;/span&gt;strip&lt;span class=&quot;sf_code_punctuation&quot;&gt;()&lt;/span&gt;
    url_format &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;'https://data.kma.go.kr/apiData/getData?type=json&amp;amp;dataCd=ASOS&amp;amp;dateCd=HR&amp;amp;startDt={date}&amp;amp;startHh=00&amp;amp;endDt={date}&amp;amp;endHh=23&amp;amp;stnIds={snt_id}&amp;amp;schListCnt=100&amp;amp;pageIndex=1&amp;amp;apiKey={api_key}'&lt;/span&gt;

    headers &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;'content-type'&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;'application/json;charset=utf-8'&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;sf_code_keyword&quot;&gt;for&lt;/span&gt; date &lt;span class=&quot;sf_code_keyword&quot;&gt;in&lt;/span&gt; pd&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;date_range&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;start_date&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; end_date&lt;span class=&quot;sf_code_punctuation&quot;&gt;).&lt;/span&gt;strftime&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;%Y%m%d&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;sf_code_keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;%s Weather&quot;&lt;/span&gt; &lt;span class=&quot;sf_code_operator&quot;&gt;%&lt;/span&gt; date&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;
        url &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; url_format&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;sf_code_builtin&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;api_key&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;api_key&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; date&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;date&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; snt_id&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;108&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;
        response &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; requests&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;get&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;url&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; headers&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;headers&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; verify&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sf_code_boolean&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;
        result &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; pd&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;DataFrame&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;response&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;json&lt;span class=&quot;sf_code_punctuation&quot;&gt;()[&lt;/span&gt;&lt;span class=&quot;sf_code_operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;info&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;])&lt;/span&gt;
        &lt;span class=&quot;sf_code_keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;result&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;head&lt;span class=&quot;sf_code_punctuation&quot;&gt;())&lt;/span&gt;
        result&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;to_csv&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;./raw_data/weather/weather_%s.csv&quot;&lt;/span&gt; &lt;span class=&quot;sf_code_operator&quot;&gt;%&lt;/span&gt; date&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; index&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sf_code_boolean&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; encoding&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;utf-8&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;sf_code_comment&quot;&gt;# API 부하 관리를 위해 0.5초 정도 쉬어 줍시다 (찡긋)&lt;/span&gt;
        sleep&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;0.5&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h3&gt;데이터 종합&lt;/h3&gt;
&lt;p&gt;미세먼지와 기상 데이터를 2009년 1월 1일부터 2019년 1월 1일 구간으로 수집하였습니다.&lt;/p&gt;
&lt;p&gt;두 개의 데이터는 공통적으로 날짜 컬럼이 있기 때문에 날짜 컬럼을 기준으로 Join을 해주었습니다.&lt;/p&gt;
&lt;p&gt;데이터의 양이 많아진 만큼 File I/O 속도가 느린 CSV 포멧이 아닌 HDF 포멧으로 변경하였습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;code-multiline&quot; lang=&quot;python&quot;&gt;&lt;span class=&quot;sf_code_comment&quot;&gt;## callAPI.py&lt;/span&gt;
&lt;span class=&quot;sf_code_keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;sf_code_function&quot;&gt;concat_data&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;():&lt;/span&gt;
    df_list &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_builtin&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;()&lt;/span&gt;

    &lt;span class=&quot;sf_code_comment&quot;&gt;# ./raw_data/dust 아래의 모든 파일을 읽습니다.&lt;/span&gt;
    &lt;span class=&quot;sf_code_keyword&quot;&gt;for&lt;/span&gt; root&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; dirs&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; files &lt;span class=&quot;sf_code_keyword&quot;&gt;in&lt;/span&gt; os&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;walk&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;./raw_data/dust&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; topdown&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sf_code_boolean&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;sf_code_keyword&quot;&gt;for&lt;/span&gt; name &lt;span class=&quot;sf_code_keyword&quot;&gt;in&lt;/span&gt; files&lt;span class=&quot;sf_code_punctuation&quot;&gt;:&lt;/span&gt;
            df_list&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;append&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;pd&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;read_csv&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;os&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;join&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;root&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;sf_code_punctuation&quot;&gt;)))&lt;/span&gt;

    dust &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; pd&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;DataFrame&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;pd&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;concat&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;df_list&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; sort&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sf_code_boolean&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;))&lt;/span&gt;

    &lt;span class=&quot;sf_code_comment&quot;&gt;# Datetime 형태로 Index를 변경해줍니다.&lt;/span&gt;
    dust&lt;span class=&quot;sf_code_punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;MSRDT&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; dust&lt;span class=&quot;sf_code_punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;MSRDT&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;sf_code_builtin&quot;&gt;apply&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_keyword&quot;&gt;lambda&lt;/span&gt; x&lt;span class=&quot;sf_code_punctuation&quot;&gt;:&lt;/span&gt; dt&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;datetime&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;strptime&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;sf_code_punctuation&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;&quot;%Y%m%d%H%M&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;))&lt;/span&gt;
    dust &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; dust&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;set_index&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;MSRDT&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;

    df_list&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;clear&lt;span class=&quot;sf_code_punctuation&quot;&gt;()&lt;/span&gt;

    &lt;span class=&quot;sf_code_comment&quot;&gt;# ./raw_data/weather 아래의 모든 파일을 읽습니다.&lt;/span&gt;
    &lt;span class=&quot;sf_code_keyword&quot;&gt;for&lt;/span&gt; root&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; dirs&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; files &lt;span class=&quot;sf_code_keyword&quot;&gt;in&lt;/span&gt; os&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;walk&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;./raw_data/weather&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; topdown&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sf_code_boolean&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;sf_code_keyword&quot;&gt;for&lt;/span&gt; name &lt;span class=&quot;sf_code_keyword&quot;&gt;in&lt;/span&gt; files&lt;span class=&quot;sf_code_punctuation&quot;&gt;:&lt;/span&gt;
            df_list&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;append&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;pd&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;read_csv&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;os&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;join&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;root&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;sf_code_punctuation&quot;&gt;)))&lt;/span&gt;
    weather &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; pd&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;DataFrame&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;pd&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;concat&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;df_list&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; sort&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sf_code_boolean&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;))&lt;/span&gt;

    &lt;span class=&quot;sf_code_comment&quot;&gt;# Datetime 형태로 Index를 변경해줍니다.&lt;/span&gt;
    weather&lt;span class=&quot;sf_code_punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;TM&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; weather&lt;span class=&quot;sf_code_punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;TM&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;sf_code_builtin&quot;&gt;apply&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_keyword&quot;&gt;lambda&lt;/span&gt; x&lt;span class=&quot;sf_code_punctuation&quot;&gt;:&lt;/span&gt; dt&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;datetime&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;strptime&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;&quot;%Y-%m-%d %H:%M&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;))&lt;/span&gt;
    weather &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; weather&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;set_index&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;TM&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;sf_code_comment&quot;&gt;# join() 함수는 같은 index 끼리의 join을 제공합니다.&lt;/span&gt;
    weather&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;join&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;dust&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; how&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;inner&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;).&lt;/span&gt;to_hdf&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;./raw_data/data.hdf&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;&quot;master&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;
    dust&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;to_hdf&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;./raw_data/data.hdf&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;&quot;dust&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;
    weather&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;to_hdf&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;./raw_data/data.hdf&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;&quot;weather&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;제공받은 데이터에서 미세먼지에 해당하는 컬럼은 PM10 또는 PM25가 있습니다.&lt;/p&gt;
&lt;p&gt;각각 10μm, 2.5μm 이하의 먼지의 농도라고 하는데 그 중에서 초미세먼지 농도에 해당하는 PM25를 사용하고자 한다.&lt;/p&gt;
&lt;p&gt;데이터의 분포를 확인하고자 Box Plot을 그려서 확인하고자 한다.&lt;/p&gt;
&lt;p&gt;이 때 지역별로 확인해 보는 것이 눈에 더 잘 보일거 같아서 확인해 보았는데..&lt;/p&gt;
&lt;br /&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; width: 500px; height: 236px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99AEEA3B5C3DC9FB2C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99AEEA3B5C3DC9FB2C&quot; width=&quot;500&quot; height=&quot;236&quot; filename=&quot;미세먼지 데이터 분포.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 500px; height: 236px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;아니 저 수치가 정말 나올 수 있는 수치인가요..??&lt;/p&gt;
&lt;p&gt;서대문구는 무슨 일이 있었던 걸까요..??&lt;/p&gt;
&lt;p&gt;노이즈라고 생각이 드는데 다음 포스팅에서 어느 정도 전처리를 하고 사용해야 할 거 같아요.&lt;/p&gt;
&lt;p&gt;2021.01.06 : 기상청에서 관리하던 데이터를 공공데이터포털에서 관리하는 걸로 변경이 되었습니다. &lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;긴 글 읽어 주셔서 감사합니다.&lt;/p&gt;
&lt;p&gt;공감 버튼은 작성자에게 큰 동기부여가 됩니다.&lt;/p&gt;
        &lt;/div&gt;
        &lt;script type=&quot;text/javascript&quot;&gt;
            (function() {

    var doc_ols = document.getElementsByTagName(&quot;ol&quot;);

    for ( i=0; i&lt;doc_ols.length; i++) {

        var ol_start = doc_ols[i].getAttribute(&quot;start&quot;) - 1;
        doc_ols[i].setAttribute(&quot;style&quot;, &quot;counter-reset:ol &quot; + ol_start + &quot;;&quot;);

    }

})();
        &lt;/script&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Data Mining</category>
      <category>Python 공공데이터 API</category>
      <category>공공데이터API 사용법</category>
      <category>데이터 마이닝</category>
      <category>데이터 수집</category>
      <category>미세먼지 데이터</category>
      <category>서울시 열린데이터 광장</category>
      <category>시간별 기상 데이터</category>
      <category>파이썬 데이터 마이닝</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/102</guid>
      <comments>https://ssoonidev.tistory.com/102#entry102comment</comments>
      <pubDate>Tue, 15 Jan 2019 20:42:46 +0900</pubDate>
    </item>
    <item>
      <title>[Ipad App] Tayasui Sketches 리뷰 (무료 그림 그리기 앱 추천)</title>
      <link>https://ssoonidev.tistory.com/101</link>
      <description>&lt;title&gt;Tayasui Sketches 리뷰&lt;/title&gt;
        &lt;meta charset=&quot;utf-8&quot;&gt;
        &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
        &lt;meta name=&quot;created&quot; content=&quot;2019-01-06T21:27:59+0900&quot;&gt;
        &lt;meta name=&quot;modified&quot; content=&quot;2019-01-06T23:49:23+0900&quot;&gt;
        &lt;meta name=&quot;tags&quot; content=&quot;&quot;&gt;
        &lt;meta name=&quot;last device&quot; content=&quot;손찬호의 iPad&quot;&gt;
    
    
        &lt;div class=&quot;note-wrapper&quot;&gt;
            &lt;h1 style=&quot;font-style: normal; font-variant-caps: normal;&quot;&gt;Tayasui Sketches 리뷰&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;2019년 1월 기준 &lt;b&gt;아이패드 프로 2세대와 애플 펜슬 1세대 사용 유저&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p&gt;그림을 발로 그리고 있는 초보자의 입장에서 작성된 리뷰입니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px; width: 400px; height: 400px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99EFB3455C32199F1F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99EFB3455C32199F1F&quot; width=&quot;400&quot; height=&quot;400&quot; filename=&quot;썸네일.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 400px; height: 400px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;h2&gt;애플 펜슬도 샀겠다. &lt;/h2&gt;
&lt;p&gt;누구나 그렇듯 애플 펜슬을 샀으니 이제 내 마음 속에서 없던 화가 세포를 깨웁니다.&lt;/p&gt;
&lt;p&gt;참고로 중학교, 고등학교 미술시간마다 C,D를 차지할 만큼 그림에 자신이 없지만, 자그마치 10만원 넘는 연필을 샀으니 (ㅠㅠ) 그림을 안 그려 볼 수는 없었습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;그림을 전문적으로 그리는 것이 아니라 &lt;mark&gt;무료 앱&lt;/mark&gt;이 가장 큰 선정 기준이였습니다.&lt;/p&gt;
&lt;p&gt;procreate가 좋은 건 금손 분들의 작업 영상 만으로도 충분히 느꼈지만, &lt;u&gt;발로 그리기 때문에&lt;/u&gt; 만 원이라는 거금을 선뜻 투자하긴 힘들었습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;다양한 무료 그림 앱이 있지만 Tayasui Sketches는 &lt;b&gt;생산성 카테고리의 무료 앱에서 높은 순위를 오랫동안 차지하고 있는 앱&lt;/b&gt;이라 일단 설치해보고 그림을 발로 그려 보았습니다.&lt;/p&gt;
&lt;p&gt;약 한 달동안 사용하면서 느낀 장단점을 소개해드리겠습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;장점 1 : 필요한 것만 딱 있다.&lt;/h2&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/995AAE4A5C3219D923&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F995AAE4A5C3219D923&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;제공하는 툴.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;무료버전에서 제공하는 툴들&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;설정을 다양하게 할 수 있는 것은 전문적으로 사용하는 사람에게는 큰 이점이라 생각합니다만, &lt;b&gt;초심자들에게는 심플한 것이 최고입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;무료 버전에서 많은 도구들을 제공하지 않지만, 기본 설정 만으로도 &lt;mark&gt;초보자 기준입니다만&lt;/mark&gt;  그림을 그리는데 딱히 불편함을 느끼지 않았습니다.&lt;/p&gt;
&lt;p&gt;색상도 자주 사용하는 색상들이 미리 배치되어 있기 때문에 그 색상에서 약간씩 수정하면 다른 색상으로 만들 수 있다는 게 장점이였습니다.&lt;/p&gt;
&lt;p&gt;(그라데이션 기능이 무료 버전에 없는 것은 조금 아쉽지만...)&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;장점 2 : 뒤로 가기 제스쳐 기능&lt;/h2&gt;
&lt;p&gt;Tayasui Sketches는 &lt;mark&gt;그림을 그리다가 두 손가락으로 톡 쳐서 취소가 가능합니다.&lt;/mark&gt; &lt;/p&gt;
&lt;p&gt;이게 뭐 대단한 기능이냐 하겠지만, 그림을 그리다가 실행 하기 전으로 되돌리기를 하는 경우에 다른 손으로 뒤로가기 버튼을 찾아서 누르는 것이 생각보다 정말 귀찮고, 그림을 그리다가 맥이 끊기고 합니다.&lt;/p&gt;
&lt;p&gt;하지만 이 앱에서는 그림을 그리다가 두 손가락으로 톡 화면을 두드리면 취소되니까 편리했습니다. &lt;/p&gt;
&lt;p&gt;이게 익숙해지면 다른 앱에서도 실행 취소를 하기 위해 두 손가락으로 톡 화면을 두드리는 것을 경험을 하게 될 겁니다.&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;장점 3 : 동영상 촬영 기능&lt;/h2&gt;
&lt;p&gt;요새는 유튜브에서 금손 분들이 그림 그려지는 과정을 보여주는 영상을 올리시는 분들이 있는데, 이 앱에서는 그런 영상을 만들기 위한 동영상 쵤영 기능이 있습니다.&lt;/p&gt;
&lt;p&gt;물론 타입랩스 같은 것은 다른 편집 앱을 통해서 사용해야 합니다.&lt;/p&gt;
&lt;div class=&quot;note-wrapper&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;/p&gt;&lt;h2&gt;단점 1 : 부족한 레이어 &lt;/h2&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9929D54B5C321A0C0C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9929D54B5C321A0C0C&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;프로버전 강매.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;레이어를 생성할려고 하면 프로버전 구입 팝업이 뜬다&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;무료 버전&lt;/b&gt;에서는 레이어가 &lt;b&gt;단 2개&lt;/b&gt;만 제공됩니다. &lt;/p&gt;
&lt;p&gt; &lt;mark&gt;레이어 생성 기능이 프로 버전에서 제공되는 기능&lt;/mark&gt; 이라, 제공해준 2개의 레이어 중 하나를 삭제한 후 새로운 레이어를 만들기를 시도하면, 프로로 업그레이드가 필요하다는 팝업을 접할 수 있습니다.&lt;/p&gt;
&lt;p&gt;물론 저같이 초보자는 2개로도 감사히 잘 쓰고 있지만, 가끔 레이어 하나만 더 있었으면 좋겠다고 생각이 들곤 합니다.&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;단점 2 : 팜 리젝션 &lt;/h2&gt;
&lt;p&gt;다른 도구들을 사용할 때 팜 리젝션 부분에서는 불편함이 없었습니다. &lt;/p&gt;
&lt;p&gt;애플 펜슬을 사용하다가 손가락으로 터치를 시도하면 애플 펜슬 사용 중이니까 손가락으로 그림은 안 그려진다고 끊임 없이 메세지를 보여 주니깐요.&lt;/p&gt;
&lt;br /&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/992568495C321A2C18&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F992568495C321A2C18&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;팜 리젝션.gif&quot; filemime=&quot;image/gif&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;그만 채워져라 좀!!! 빡치게 하지말고!!&lt;br /&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;하지만 &lt;mark&gt;영역 채우기 툴에서 팜 리젝션이 간혹 안되는 경우가 있습니다.&lt;/mark&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;손가락으로 툭 쳐서 색을 칠하는 기능과 선을 그려서 영역을 만들어주면 해당 공간을 채워주는 기능이 한 도구안에 공존&lt;/b&gt;하다 보니, 펜슬을 잡은 손이 화면에 닿으면 색이 채워집니다. &lt;/p&gt;
&lt;p&gt;손가락으로 툭툭쳐서 색을 칠하시는 분들은 상관 없겠지만, 저는 영역을 만들어 준 뒤 채우는 것을 선호하다 보니까 이 부분이 상당히 불편하고 거슬렸습니다. &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;/p&gt;&lt;h2&gt;총평 : 별 4개&lt;/h2&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B00E3A5C321AA029&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B00E3A5C321AA029&quot; width=&quot;500&quot; height=&quot;364&quot; filename=&quot;그림 그리기 앱 사용기.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;그라데이션이나 레이어 추가와 같이 있으면 더 편하겠다&lt;/b&gt; 하는 기능들은 프로 버전을 통해서 구매가 가능합니다만, 그림을 가볍게 그리는 목적으로 사용하기에는 충분한 가치를 합니다.&lt;/p&gt;
&lt;p&gt;아주 가끔 프로 업그레이드를 권장하는 팝업이 뜨긴 하지만 시도 때도없이 15초 짜리 동영상을 보여주는 앱들에 비하면 상당히 매너있는 편이라 생각합니다.&lt;/p&gt;
        &lt;/div&gt;
        &lt;script type=&quot;text/javascript&quot;&gt;
            (function() {

    var doc_ols = document.getElementsByTagName(&quot;ol&quot;);

    for ( i=0; i&lt;doc_ols.length; i++) {

        var ol_start = doc_ols[i].getAttribute(&quot;start&quot;) - 1;
        doc_ols[i].setAttribute(&quot;style&quot;, &quot;counter-reset:ol &quot; + ol_start + &quot;;&quot;);

    }

})();
        &lt;/script&gt;
    
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;긴 글 읽어 주셔서 감사합니다.&lt;/p&gt;&lt;p&gt;공감 버튼은 작성자에게 큰 동기부여가 됩니다.&amp;nbsp;&lt;/p&gt;</description>
      <category>눈누난냐/아이패드 적응기</category>
      <category>Tayasui Sketches 리뷰</category>
      <category>그리기 앱 추천</category>
      <category>무료 그리기 앱 추천</category>
      <category>아이패드 그리기 앱 추천</category>
      <category>아이패드 그림 앱</category>
      <category>아이패드 무료 그리기 앱 추천</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/101</guid>
      <comments>https://ssoonidev.tistory.com/101#entry101comment</comments>
      <pubDate>Mon, 7 Jan 2019 00:13:50 +0900</pubDate>
    </item>
    <item>
      <title>[Python] List 중복제거</title>
      <link>https://ssoonidev.tistory.com/100</link>
      <description>&lt;title&gt;리스트 중복 제거&lt;/title&gt;
        &lt;meta charset=&quot;utf-8&quot;&gt;
        &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
        &lt;meta name=&quot;created&quot; content=&quot;2019-01-03T21:38:43+0900&quot;&gt;
        &lt;meta name=&quot;modified&quot; content=&quot;2019-01-04T00:09:22+0900&quot;&gt;
        &lt;meta name=&quot;tags&quot; content=&quot;&quot;&gt;
        &lt;meta name=&quot;last device&quot; content=&quot;손찬호의 iPad&quot;&gt;
    
    
        &lt;div class=&quot;note-wrapper&quot;&gt;
            &lt;h1&gt;리스트 중복 제거&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;필요에 따라서 List 등의 중복 제거를 해야하는 경우가 있는데요.&lt;/p&gt;&lt;p&gt;다양한 데이터 타입에서 중복을 제거하는 방법에 대하여 알아보도록 합시다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;note-wrapper&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99524D345C2E2C4F08&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99524D345C2E2C4F08&quot; width=&quot;500&quot; height=&quot;364&quot; filename=&quot;a82adb37e17c40b096e76effcebf3778.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot; original=&quot;yes&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;h2&gt;일반적인 경우&lt;/h2&gt;
&lt;p&gt;Python에는 &lt;code class=&quot;code-inline&quot;&gt;set&lt;/code&gt;자료형을 기본적으로 제공합니다.&lt;/p&gt;&lt;p&gt;&lt;code class=&quot;code-inline&quot;&gt;set&lt;/code&gt;은 수학에서 사용하는 &lt;mark&gt;집합의 개념으로 중복된 원소를 가지지 않는 것이 특징&lt;/mark&gt;입니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;code class=&quot;code-inline&quot;&gt;set&lt;/code&gt;타입은  &lt;code class=&quot;code-inline&quot;&gt;list&lt;/code&gt; 타입과 Type Cast가 가능한 타입인데 이 점을 이용하여 중복을 제거 하는 것이 가능합니다.&lt;/p&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;code-multiline&quot; lang=&quot;python&quot;&gt;dup_list &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;'1'&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;'1'&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;'1'&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;'4'&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;'5'&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;]&lt;/span&gt;
remove_dup &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_builtin&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_builtin&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;dup_list&lt;span class=&quot;sf_code_punctuation&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;sf_code_keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;remove_dup&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&quot;note-wrapper&quot;&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 100px; width: 100px; height: 20px;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993726345C2E2B1808&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993726345C2E2B1808&quot; width=&quot;100&quot; height=&quot;20&quot; filename=&quot;그림2.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;width: 100px; height: 20px;&quot; original=&quot;yes&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;note-wrapper&quot;&gt;실행 결과를 보면 중복이 제거되어 있음을 알 수 있습니다.&lt;p&gt;다만 &lt;code class=&quot;code-inline&quot;&gt;'5'&lt;/code&gt; 와 &lt;code class=&quot;code-inline&quot;&gt;5&lt;/code&gt; 처럼 타입이 서로 다른 경우에는 중복을 제거를 하지 않습니다.&lt;/p&gt;&lt;p&gt;만약 리스트 안에 리스트가 있는 경우에 이 방법을 사용하면  어떤 결과가 발생할까요?&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;원소가 list로 이루어져 있는 경우&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;code-multiline&quot; lang=&quot;python&quot;&gt;dup_list &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;]]&lt;/span&gt;
remove_dup &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_builtin&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_builtin&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;dup_list&lt;span class=&quot;sf_code_punctuation&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;sf_code_keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;remove_dup&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; -webkit-text-size-adjust: 100%;&quot;&gt;이 소스 코드를 실행하면 에러가 발생합니다. Hash를 지원하지 않는&amp;nbsp;list를 사용하였기 때문입니다. &amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14px; -webkit-text-size-adjust: 100%;&quot;&gt;다행히&amp;nbsp;&lt;/span&gt;&lt;code class=&quot;code-inline&quot; style=&quot;-webkit-text-size-adjust: 100%;&quot;&gt;tuple&lt;/code&gt;&lt;mark style=&quot;font-size: 14px; -webkit-text-size-adjust: 100%;&quot;&gt;의 경우에는 hash를 지원합니다&lt;/mark&gt;&lt;span style=&quot;font-size: 14px; -webkit-text-size-adjust: 100%;&quot;&gt; &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;code class=&quot;code-inline&quot; style=&quot;-webkit-text-size-adjust: 100%;&quot;&gt;list&lt;/code&gt;&lt;span style=&quot;font-size: 14px; -webkit-text-size-adjust: 100%;&quot;&gt;를 모두 &lt;/span&gt;&lt;code class=&quot;code-inline&quot; style=&quot;-webkit-text-size-adjust: 100%;&quot;&gt;tuple&lt;/code&gt;&lt;span style=&quot;font-size: 14px; -webkit-text-size-adjust: 100%;&quot;&gt;타입으로 변환한 후 중복 제거를 시도합니다.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;note-wrapper&quot;&gt;&lt;pre&gt;&lt;code class=&quot;code-multiline&quot; lang=&quot;python&quot;&gt;dup_list &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;]]&lt;/span&gt;
remove_dup &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_builtin&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_builtin&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_builtin&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_builtin&quot;&gt;tuple&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; dup_list&lt;span class=&quot;sf_code_punctuation&quot;&gt;)))&lt;/span&gt;
&lt;span class=&quot;sf_code_keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;remove_dup&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;하지만 이 방법은&lt;code class=&quot;code-inline&quot;&gt;dup_list=[1, [1, 1], [1, 1]]&lt;/code&gt;과 같이 &lt;mark&gt;uniterable element이 포함된 list의 경우&lt;/mark&gt; &lt;code class=&quot;code-inline&quot;&gt;tuple()&lt;/code&gt;&lt;mark&gt;로 변환이 되지 않습니다.&lt;/mark&gt;&lt;/p&gt;&lt;p&gt;list 이외의 다양한 타입이 있다면,  약간 야매(?) 방법이 있긴 한데..&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class=&quot;note-wrapper&quot;&gt;&lt;br /&gt;
&lt;h2&gt;타입이 다양하면 str으로 변환 해보자. &lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;code-multiline&quot; lang=&quot;python&quot;&gt;&lt;span class=&quot;sf_code_keyword&quot;&gt;import&lt;/span&gt; ast

&lt;span class=&quot;sf_code_keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;sf_code_function&quot;&gt;convert_str&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;sf_code_punctuation&quot;&gt;):&lt;/span&gt;
	&lt;span class=&quot;sf_code_keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;sf_code_builtin&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;is&lt;/span&gt; &lt;span class=&quot;sf_code_builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;:&lt;/span&gt;
		&lt;span class=&quot;sf_code_keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;&quot;'&quot;&lt;/span&gt; &lt;span class=&quot;sf_code_operator&quot;&gt;+&lt;/span&gt; x &lt;span class=&quot;sf_code_operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;&quot;'&quot;&lt;/span&gt;
	&lt;span class=&quot;sf_code_keyword&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;:&lt;/span&gt;
		&lt;span class=&quot;sf_code_keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;sf_code_builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;

dup_list &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;'1'&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_string&quot;&gt;'3'&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;},&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;)]&lt;/span&gt;
remove_dup &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_builtin&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_builtin&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;ast&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;literal_eval&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sf_code_builtin&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_builtin&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;convert_str&lt;span class=&quot;sf_code_punctuation&quot;&gt;,&lt;/span&gt; dup_list&lt;span class=&quot;sf_code_punctuation&quot;&gt;))))&lt;/span&gt;
&lt;span class=&quot;sf_code_keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;remove_dup&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;원소들을 모두 문자열로 바꾼 후 set을 취합니다.&lt;/p&gt;&lt;p&gt;다만, &lt;code class=&quot;code-inline&quot;&gt;str&lt;/code&gt; 타입의 경우에는 앞뒤로 따옴표를 추가해줍니다. &lt;/p&gt;&lt;p&gt;그 후 ast.literal_eval()로 str으로 변환된 것들을 다시 원래 데이터 타입으로 변환해줍니다.&lt;/p&gt;&lt;p&gt;참고로 ast.literal_eval() 함수는 &lt;code class=&quot;code-inline&quot;&gt;() -&amp;gt; tuple,  {} -&amp;gt; set / dict, [] -&amp;gt; list, '' -&amp;gt; str&lt;/code&gt;와 같이 변환하는 해줍니다.&lt;/p&gt;
&lt;/div&gt;&lt;div class=&quot;note-wrapper&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/994D554A5C2E2AC123&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F994D554A5C2E2AC123&quot; width=&quot;500&quot; height=&quot;17&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;div class=&quot;note-wrapper&quot;&gt;&lt;p&gt;실행 결과를 보면 중복이 타입에 따라 제거가 된 것을 확인할 수 있습니다.&lt;/p&gt;&lt;p&gt;사실 이 정도 중복을 제거 해야 하는 일이 많지는 않습니다만 이렇게도 할 수 있다 정도만 참고하시면 될 거 같습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;긴 글 읽어 주셔서 감사합니다.&lt;/p&gt;&lt;p&gt;공감 버튼은 작성자에게 큰 동기 부여가 됩니다. &lt;/p&gt;
&lt;br /&gt;

        &lt;/div&gt;
        &lt;script type=&quot;text/javascript&quot;&gt;
            (function() {

    var doc_ols = document.getElementsByTagName(&quot;ol&quot;);

    for ( i=0; i&lt;doc_ols.length; i++) {

        var ol_start = doc_ols[i].getAttribute(&quot;start&quot;) - 1;
        doc_ols[i].setAttribute(&quot;style&quot;, &quot;counter-reset:ol &quot; + ol_start + &quot;;&quot;);

    }

})();
        &lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Tip</category>
      <category>List elemnt 중복 제거</category>
      <category>List 중복 제거</category>
      <category>Python List 중복 제거</category>
      <category>리스트 중복 제거</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/100</guid>
      <comments>https://ssoonidev.tistory.com/100#entry100comment</comments>
      <pubDate>Fri, 4 Jan 2019 00:38:44 +0900</pubDate>
    </item>
    <item>
      <title>[Java] 디자인 패턴 - 싱글톤</title>
      <link>https://ssoonidev.tistory.com/98</link>
      <description>&lt;title&gt;Singleton&lt;/title&gt;
        &lt;meta charset=&quot;utf-8&quot;&gt;
        &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
        &lt;meta name=&quot;created&quot; content=&quot;2018-12-30T11:24:22+0900&quot;&gt;
        &lt;meta name=&quot;modified&quot; content=&quot;2019-01-02T13:26:14+0900&quot;&gt;
        &lt;meta name=&quot;tags&quot; content=&quot;&quot;&gt;
        &lt;meta name=&quot;last device&quot; content=&quot;손찬호의 iPad&quot;&gt;
    
    
        &lt;div class=&quot;note-wrapper&quot;&gt;
            &lt;h1&gt;&lt;span style=&quot;font-family: AvenirNext-Medium; font-size: 1.3em; -webkit-text-size-adjust: 100%;&quot;&gt;싱글톤이란?&lt;/span&gt;&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;하나! 오직 하나!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;p&gt;싱글톤 패턴은 &lt;mark&gt;클래스의 인스턴스가 오직 하나&lt;/mark&gt;임을 보장하는 디자인 패턴이다.&lt;/p&gt;&lt;p&gt;어떤 클래스의 인스턴스를 생성하고 소멸하는 과정이 빈번하게 발생한다면, 고민해도 될 만한 패턴&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;대표적인 형태 - Eager initialization&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;code-multiline&quot; lang=&quot;java&quot;&gt;&lt;span class=&quot;sf_code_keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;sf_code_class-name&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;sf_code_comment&quot;&gt;// 인스턴스를 Static 생성한다. &lt;/span&gt;
	&lt;span class=&quot;sf_code_keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;final&lt;/span&gt; Singleton instance &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;sf_code_class-name&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;();&lt;/span&gt;

	&lt;span class=&quot;sf_code_comment&quot;&gt;// private로 선언된 생성자&lt;/span&gt;
	&lt;span class=&quot;sf_code_keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;sf_code_function&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(){&lt;/span&gt;
		System&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;sf_code_function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;Create Instance&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;);&lt;/span&gt;
	&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;sf_code_comment&quot;&gt;// 인스턴스를 사용할 때는 이렇게 호출한다.&lt;/span&gt;
	&lt;span class=&quot;sf_code_keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;static&lt;/span&gt; Singleton &lt;span class=&quot;sf_code_function&quot;&gt;getInstance&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(){&lt;/span&gt;
		&lt;span class=&quot;sf_code_keyword&quot;&gt;return&lt;/span&gt; instance&lt;span class=&quot;sf_code_punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;싱글톤 패턴을 사용하는 코드에서 나타나는 특징은 크게 세 가지 입니다.&lt;/p&gt;
&lt;br /&gt;
&lt;ol start=&quot;1&quot;&gt;&lt;li&gt;&lt;b&gt;private로 선언된 생성자&lt;/b&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;단 하나의 인스턴스를 보장하기 위해서, 클래스 외부에서 새로운 인스턴스의 생성을 막아야 하므로 private로 접근을 제어한다.&lt;/p&gt;
&lt;br /&gt;
&lt;ol start=&quot;2&quot;&gt;&lt;li&gt;&lt;b&gt;Static으로 선언된 인스턴스 멤버 변수&lt;/b&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;일반적으로 우리가  &lt;code class=&quot;code-inline&quot;&gt;new&lt;/code&gt;  를 사용하여 클래스의 인스턴스를 선언하는 방법을 동적 생성이라고 하는데, 이 때는 메모리 구조상 Heap에 위치하게 된다.&lt;/p&gt;&lt;p&gt;Heap에 있는 인스턴스는 메모리 할당과 해제를 거치게 되는데, 이 연산이 많은 사용자들이 사용하는 서버에서 동시에 이루어 진다면, 부하가 될 수 있다.&lt;/p&gt;&lt;p&gt;반면 &lt;mark&gt;Static으로 선언된 인스턴스는 최초 클래스 로드시에 메모리에 적재&lt;/mark&gt;된 후, 계속 메모리에 남게 된다. &lt;/p&gt;
&lt;br /&gt;
&lt;ol start=&quot;3&quot;&gt;&lt;li&gt;오직 &lt;b&gt;getInstance()&lt;/b&gt; 함수로 Instence 접근
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;이 클래스의 인스턴스를 접근할 수 있는 곳은 오로지 getInstance() 입니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;위의 세 가지 조건을 만족한다면 클래스의 인스턴스가 1개인 클래스를 생성가능합니다.&lt;/p&gt;&lt;p&gt;이 방법이 가지는 단점은 이 클래스를 &lt;mark&gt;사용하든 안하든 항상 메모리 상에 상주&lt;/mark&gt;한다는 겁니다.&lt;/p&gt;&lt;p&gt;&lt;code class=&quot;code-inline&quot;&gt;getInstance()&lt;/code&gt; 가 실행 되기 전부터 메모리에 상주하여 낭비를 한다는 것이 마음에 썩 들지는 않습니다. &lt;/p&gt;&lt;p&gt;그래서 클래스를 사용할 때 메모리에 인스턴스를 로드하는 방법을 고안합니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Lazy Initialization&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;code-multiline&quot; lang=&quot;java&quot;&gt;&lt;span class=&quot;sf_code_keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;sf_code_class-name&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;sf_code_comment&quot;&gt;// 미리 생성하지 않는다.&lt;/span&gt;
	&lt;span class=&quot;sf_code_comment&quot;&gt;// private static final Singleton instance = new Singleton();&lt;/span&gt;
	&lt;span class=&quot;sf_code_keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;static&lt;/span&gt; Singleton instance &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; null&lt;span class=&quot;sf_code_punctuation&quot;&gt;;&lt;/span&gt;

	&lt;span class=&quot;sf_code_comment&quot;&gt;// private로 선언된 생성자&lt;/span&gt;
	&lt;span class=&quot;sf_code_keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;sf_code_function&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(){&lt;/span&gt;
		System&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;sf_code_function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;Create Instance&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;);&lt;/span&gt;
	&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;sf_code_comment&quot;&gt;// 인스턴스를 사용할 때는 이렇게 호출한다.&lt;/span&gt;
	&lt;span class=&quot;sf_code_keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;static&lt;/span&gt; Singleton &lt;span class=&quot;sf_code_function&quot;&gt;getInstance&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(){&lt;/span&gt;
		&lt;span class=&quot;sf_code_comment&quot;&gt;// 추가!! 최초로 사용할 때 인스턴스를 생성한다.&lt;/span&gt;
		&lt;span class=&quot;sf_code_keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;instance &lt;span class=&quot;sf_code_operator&quot;&gt;==&lt;/span&gt; null&lt;span class=&quot;sf_code_punctuation&quot;&gt;){&lt;/span&gt;
			instance &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;sf_code_class-name&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;();&lt;/span&gt;
		&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt; 
		&lt;span class=&quot;sf_code_keyword&quot;&gt;return&lt;/span&gt; instance&lt;span class=&quot;sf_code_punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이전 코드와 비교 하기 위해서 주석으로 이전 코드를 남겨 두었다.&lt;/p&gt;
&lt;br /&gt;
&lt;ol start=&quot;1&quot;&gt;&lt;li&gt;&lt;b&gt;미리 생성하지 않는다.&lt;/b&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;클래스의 인스턴스를 사용하기 전부터 메모리에 상주하던 방법이 아닌 최초로 사용하는 곳에서 인스턴스를 생성합니다.&lt;/p&gt;&lt;p&gt;&lt;code class=&quot;code-inline&quot;&gt;getInstance()&lt;/code&gt; 함수가 한 번이라도 실행되어야 이 클래스를 &lt;/p&gt;
&lt;br /&gt;
&lt;ol start=&quot;2&quot;&gt;&lt;li&gt;&lt;b&gt;단 하나의 Instance 보장 문제&lt;/b&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;우연히 같은 시간에 여럭 개의 쓰레드가 &lt;code class=&quot;code-inline&quot;&gt;getInstance()&lt;/code&gt;를 호출된다면, 하나의 인스턴스를 &lt;/p&gt;&lt;p&gt;이 경우에 단 하나의 Instance를 보장 가능하다고 말 할 수 없습니다.&lt;/p&gt;&lt;p&gt;아래의 코드는 Thread-Safe 를 붕괴해보는(?) 소스코드 입니다.&lt;/p&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code class=&quot;code-multiline&quot; lang=&quot;java&quot;&gt;&lt;span class=&quot;sf_code_keyword&quot;&gt;import&lt;/span&gt; java&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;util&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;concurrent&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;BrokenBarrierException&lt;span class=&quot;sf_code_punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;sf_code_keyword&quot;&gt;import&lt;/span&gt; java&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;util&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;concurrent&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;CyclicBarrier&lt;span class=&quot;sf_code_punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;sf_code_keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;sf_code_class-name&quot;&gt;Runner&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;sf_code_class-name&quot;&gt;Runnable&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;{&lt;/span&gt;
   &lt;span class=&quot;sf_code_keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;final&lt;/span&gt; CyclicBarrier gate &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;sf_code_class-name&quot;&gt;CyclicBarrier&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;);&lt;/span&gt;

   &lt;span class=&quot;sf_code_annotation&quot;&gt;@Override&lt;/span&gt;
   &lt;span class=&quot;sf_code_keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;sf_code_function&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;sf_code_keyword&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;{&lt;/span&gt;
         gate&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;sf_code_function&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;();&lt;/span&gt;
         Singleton s &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; Singleton&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;sf_code_function&quot;&gt;getInstance&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;();&lt;/span&gt;
      &lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_class-name&quot;&gt;InterruptedException&lt;/span&gt; &lt;span class=&quot;sf_code_operator&quot;&gt;|&lt;/span&gt; BrokenBarrierException e&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;{&lt;/span&gt;
        e&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;sf_code_function&quot;&gt;printStackTrace&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;();&lt;/span&gt;
      &lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;
   &lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;

   &lt;span class=&quot;sf_code_keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;sf_code_function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;String&lt;span class=&quot;sf_code_punctuation&quot;&gt;[]&lt;/span&gt; args&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;{&lt;/span&gt;      
      &lt;span class=&quot;sf_code_keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_keyword&quot;&gt;int&lt;/span&gt; i&lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sf_code_operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;sf_code_number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;sf_code_operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;{&lt;/span&gt;
         Runner broker &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;sf_code_class-name&quot;&gt;Runner&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;();&lt;/span&gt;
         Thread worker &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;sf_code_class-name&quot;&gt;Thread&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;broker&lt;span class=&quot;sf_code_punctuation&quot;&gt;);&lt;/span&gt;
         worker&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;sf_code_function&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;();&lt;/span&gt;
      &lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;
   &lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이 소스 코드는 &lt;b&gt;20개의 쓰레드가 동시에&lt;/b&gt; &lt;code class=&quot;code-inline&quot;&gt;getInstance()&lt;/code&gt; &lt;b&gt;를 실행하는 소스 코드&lt;/b&gt;입니다.&lt;/p&gt;&lt;p&gt;실행 결과를 보면 여러 개의 인스턴스가 생성되는 것을 확인 할 수 있습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;b&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+cAAACtCAYAAADS1Q4rAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAACm1SURBVHhe7d09ruy4mcbx2ZFrggEm6g04aQPCoBfQQacdVGi492ABTp06cKAFTDIb0ELuIjR8SVGiqJcUqdLXufd/gR+6T5WK4pekeoqqc/7jL//zyyD+87/+GwAAAAAA3IBwDgAAAABf2J//8b/DX//xm/ocvg7COQAAAAB8YYTz7wPh/JF+G379v/8dfv/jL8pzwPU44eN7xxzHj+6nP/41/PXffxt+Up4DcKyffjbv9f/9r+F3837/rxPz87//Pvz55433/7/9PXhNmV9/U8rBI33n4fwv7g3Xl7vYnBzOEwf17+aN6Xd/UQ7bvpgXfxl++bd57NFvzsc63jCfl8Hl6uPq/P3Z8v1xUHXcmbr98XdzMZ1f/1dzsf31t1QZbgzji+Syf53VG2XtuM3u6weWeePi+n49p7Qx+NwH423deV7aW/ezj1e9Xmlm+3+Y+vk5YN/4atvF1q/7peh1KRv1/vlv5o36uK+ieqbK0x8vmXPl4XzvGO+t2/nXgB+N7d+gz38y58zwOvb7P/6WmH+1x8XR877Uxn6rHVven20fuuv3ck6bn2Us7Bjccd4f7RoX10fTayb/iuZI6Xax8f1WsP12btHHLZ7/T3NcOP/5N9MBMtGU525z8gn9tDZfEc6jg8C25cS+egppu9rG8WTx4IM1DBxXH2fLN08nHlfqMXXdGzPZT/lxJ596u3otLlo/S33Tb1jW+xjnXtS+ZZ8bdvzNBTLY5qff/uYu4medK74q7Ry3sJ5Tq/4+yO7xtu49L+2r+3nHq3/TWn4OdNdSqZuri6mbvCkreBMo7Zzf+JW+TrdZ7/H5+YM26UPZ3/J497bK2zvnzg/nz5tTPyQTvH4P5pYb9zB8jWOymn91x8XR875U/Xki7/DybJ9ttNGOUcH+5P2GXSCQMl0dPXns1z/MWNWes3aPizvfbvdR6XYR837nV3PumM4B9s4D09bgHBbKj5uby0eM5xkODOeFE+l7clqb3cQ97Q23mbDqydS2Z9+bjy9D2q5e4MeLUeIgfwL35uTv2ZPRWZZvlE5083lk/cYxZf98WX9iOwaIxYVvfBMU1sUet8rFMfX4jyx1jss4a47vHu/g8UuOPcVndT+QvAmz+zX7MW84i88R6rGx3acurMTXiR1jUVTv/NgvHi/sh73jprf7WI+ZUz+w+Dr302/a6qMbl+35oRwXR8/7UnvPEylHlzcqvdZsbje+X7Iflii3wctt8+4uh5pr4Sfj4vpru49KtyugXetLx01e+9AP/HaEc/kERVkVIpwfyE2s1UFg9verHIThY3sk37geeMA8VfJgVC4wjzLPCXuBvPhDlLOCy8oXCecfvYmN56C02X7oEo6pjHc0xva4jYOGYfvs2vnweMlzXNppc3zveFs3n5c+qvuBxv3+Iis5dr6XnSNSx2l+rNNvQquP+6J6p6+7q/2V9sPOcfvovFbqKXPqR2XnTUnfxsdBxXFRNE8r5n2pov1WOLq8Uem1Zmu7sn5Kj5vug3GxfVQwt0q3K6GVVTxu6bberSKcj7dOmIbId1HCwbETyDy+sJhQZnLYT2/G58xJOP6epC1DBt10pPueg+vsaTLIJyH2cfec3NpgXzttHz0elhvUZbO8ydxeX+/wuw1HtNmy9Qi3M2++x0991geTL1Pq+0FIT71xXT3uDmrt5LC3X8v7X+yfN+E2C/Ebg4nW1oI5UFRWvpwStt9828aTTf4iGfedOVFF/VKzbTze8c+OfHDnPqV0Zcl4Rc/vPKbU/Zk5JPVelGePn2Abo2bOyX62L2JufMsuduNcCOeJHb8gZMucNG2TfU/9FW/jtysI57avbHuVY6Kwz/y2Jeem9P625/3m2ExlRo9vSZ3jAvGcin924mNjfQ6y7Qz7NO7PeCxLx9sa58+iXgXHUTjfJnFZ2+Ozt+5q36bmpNRrs48Ddn+Fb6jUY8b1Q/r4dXNcLT91DJZI1TvTHnfeT+wv1w/2ufpx++SaUHye3Vm3eH9XHQd6Oevz4LTtoo6xjblu51c8ptq+Ko+ZwDzG+vOz+DjZeVyk5mnqcSM770tlyt/lwPKK2leyv3EbO1+PWjkvHpfxOArnkn1twb6KtlPK18jcy22z0Y/bx+w9isK5vW/fdpIZlFRnJjvAHdDSeN95/nuS4bbuBGhOMMF2dlt7IjFvfIJfTiH1sScwOaGaQVk9HpcbdHy2vLDu9rsNQV1M+1YnyA/b7F+/eEMUXNiSbx78NhUn5AXb3ujAkDJX+xwPjqD/vL39Wtz/H86bJNmXeiArbd2aA1o/jtst6lkyl7LWdXPtXrfD9e+4CjHNDXnzYR6P+q5m23i845/teNk5OY+rC4JBHT84ptT9yWvNY3MfmLorF6LyOef2szkuiTrqtAuMq7t/vdRP9un/a7fR5qmt8/qC7to3b+vmhnZMlPeZb2PJuSm5v4Lxzo5Nwfk9yW6rHJuBeE6l5pg85tuwPgf5YzMYK+kn0+64nOrxtu4+L+2ru9q3mTmZ7+NI3I6suf9c+f78lnljbMtPzJ3cc1uS9XZ1XPa7Y/stVddsP+wbN3l+7zXBvdaUX3htr63b6vi86jjQyhnbtazjsl1rZXPdHStzufHPu46ZgJQ3tS0nbrftt8Tc33xOq9vOeV8qud+dDi1PrrvSRvcefh5b95wcN7Ivuf4uX6c4/DvnpeMynlvDuemPi4k7HyzbV7qdUn7E9VNi3nkb4+bOW+l93CUfzqcQON4eoG3jJTpgfWJx4g5JHYx2O6Xz/cRePj4OZjCh7XbBz6689X7i7TSrthzRZm2fY7lbJ1A5IfvxmQJRidWB4cr4ZfXJ27o/vb39WrpdVR8q5SVJ25Vyc20NLeulvyauoybVPpU2z8YxjOee61/9RBTvs2Zb+3M8PgXjtWX1utwxVbS/9ZiUzjn/2OYbF1vHjQtCgt2naV8V30475st2+It42F9uH4n2FvaZ1jeWcm5K7U8T18GNzf7ze5J2jhPBvuM2qj8r/bU8vvNvyF07Ki32ed956ZO629fGfVkxJ7N1TZwjksz2NsxM3BtidVuRO74/OPaz9Z7O575e7g23u3MlcWwlyvtk3NzxqNcxHqt4jN1rE2M8bvdJ3eL9aZZ1POY40I5xed6FoaC9djzS58FlmbNVfcJxVeZbcTkq1yfqHAyNdVhcC5W6lD+X2OeeeV8qt989ji7PcO/hTTA15c5z3vxs39NnzlFnO2pcpg/0N15Tup3hz1G+r/Zm04lt64dz7QTJcD51gPaph0btAHdSU9/sRh1Se8JJPW7Lid8UxBeQwvLcLSFuQk5/YiLc5qM2r0/4s0wZK+ZkK20s3t6w9ZhPpP5T1/Xr028M9/Zr2Xafz5skeb26feJCvjEHbL0XB7Ze9825lKG30e1nVd9VfQJR39Vsmz+uXN+VzL99x1S8v9yxY2jtVPpae1z2s9kOW8fEG5FCdt+2PdKWsa62XPf/aj1su8Y+85QP5mxfJeZLWZ/ltnXPhXXT9+cUHT+FYyOW8yDDtic/RnFZy5/X7Zws+mo8b2y8Sdg13tb956U9dVf7djWepX0cSZwjVKYcOVbDMJ6+3o1yx3fuuS0b9bYftPkxMPv4XVa8PuiHPeO2njeBqC7xGNvXFh7LR8wpcdVxsNy3lCFzwJXl+z/V/vk15XPdlWXqs+qHunLWlnXWJFdtc3N/87kD532pjf1WO7q8iDa/73TcuGTm7ELpdjM5bt0CZeq4M7bGzT7/4Vw7QXblPFyZ3ffphOtsN7ia+WC2E1Pp4NQJL/V4PMHjn0vL87d6yi0h8gmW3Bayeu0nbc5OmLJJWjU+IXuARSdS7bGbw7nef2J73iRJO9Xt120tmgNjXadxVE5eZeWkbPXFcl/ZcqO61WybP66iPkjYf0xF+8seO0ZhO7XHZT+lF5Gt9mb5eShtmeog5crc9v9VXhONt0Y9Jmr6rPLcpO7PPr493jVjI5bzLsO2R+nDQFzW8mfXTv2YE2HZcouitNU9vvzawGjPeFsPOC/tqLvat3G5VX0c2JrLE9d36vGs9Mcs6rtQ9nUbius9Sx0H1lZ5O8Ytu7+o7fEYp1573pwy5ZrtLjkOfH3l/4M6S538/Ar/f83VQ5/nIm6v2V6O+9Vcqy0nFvXHwniukb5Q309mXqv06+ToeV9qx36zji4vEs/vND9OO33Qr3vHpbRt5X0QcvMyeextjZt9fuc5/UTl3zm3g2oakDrw1Q7InQiW7KAog56aDKnH48GNfy4qz7al4ML1UZtz221NNvN8cBKN27LJnkjj9o0H/KJv1m8MvV39qvysb/f5vEkKL7IL0Ru50jlghH0R90tNOarcRU+ZJ7ly4+dqto3btfx5Y76Kj44pfX/J+RH1Waqd2uOyn2w7RrY+ib4rYttp6ih1jfr11z/G58LtRXYuzPS61fRZbtv1WKv7KxzvmrERdl/h8ZVi27Pefygua/nzRn+pzLnY7NddK7X+qBxv6wHnpR11j/dnf16N554+Nmx9Cl6X2y7Rfifq80BqXhYprfckXQ9rqzz7fN245doXPxePceq1p8ypxPhp+wpfF9e5vByZq247eW4aE6m/3W5+PixnVjfX3f7NfsxrluO/85iZuDm1fr0p1zyefY+/97jYmqcrG/O+VPV+NxxdXmQ1N3c6qpy1/eNSWqd9dXf1Sr5ua9zkGFbON3crCufO+EsHTCPVL/gnOqBqUJSDO3XQpx6P9xf/XFSebUt8oh0nQPjaj9qcmVB2smgHgXlN8Clv3IZitnzlQqK0Rx8Xd4Go7lfl59R2ZX2Yql/GdDGNn4sueqVzQPiDW/vEv6aclcwcGcXtt/2oja1SVs228XioP+fac/AxFf8cip8rnXNCXlt08Rnruf8NhLTdHMfmeA7LkDrZ7zJqfVl4EUmNRXmfZeadcm5S91c43jVjI3JtWEid4wJxWVs/F1PHacd4W084L9XXXe3LT8YzlDhHrLm+U4/Rjfmhzz/XP2p5JYrrPVLnUWCzvPpxs+1W+2WcG5njQ++zXF9+MKcuPw7cY3Jrr9R73l7KNGXLVyWUOoeK53o4rso83XXMBOT18Ry2Zebm2ig9lpnj4uh5X6p2v1uOLi/y6bh6R5WzsntcomtYUul2scx5XmyMW+q8dbeKcD76WW7hW/9ZjWQHjR0T/4ZgWWEI/8SGnVBKB9Wd8NcTM/65rDzfFl9nd9uitGP52s/a7CZ7uB9TD3uSd/vSyrW/7XbV95XsfuMLkmP7KzwAxzoufjGEGX/7XZTqfi3f7tN5kyTtWW0vHzzF9SqdA+45uTj9avplfVKsKSeycVKxpvFxP7t+lDc4Zgyn8XX7jE+sNdtuHVfqeJk3Q/Nva//smCraX7ad677WHpf9JE/yMdP3Ux3CY2lxjky8YTRsm8zrF+M7jud6Hvnnlm3T2HK1uVXRZ74eJecmfX9l410zNmI1D1Js/fVznBeXtSq76Bwkczwc/7E/U3U35RWPt5S16od7zku1dVf7Vim3rI8j42vW58X1sWbnkZkH2nfO5/ppx6jSP7as7eMvKVlvqadp76KO7tyibTvJlOfVjps77sw82HFN2HUsV9Rtub/rj4O5b8LHXdn2vLiYr8qcKprr4+umesY/G3uOmYBtx6IffB9sv3bXcfHxvFf6skRyv3eVN25nytilsL7xcbnH3nGRc+viK7b+Lt+o7mXbxeWbn80xLF89CV+32feZ+SeO6K8z1IfznHEA7URanEyk4+UAHp8zF8vliWXsIKWDd53wg33HPxeXZwbU3Tru6isnPfW1H7RZuDe8fhs54Ur5/gQYTMIjmTon37iOEznctxyoUxvNRVtet7dfi/tffDBvkqTt0/aun22/m8dWF5fSOWDYx8126gmgopyQK3PrzeB4AhvHYirXn+x8+8y8im9Xq9l267iyTDnZv437wTFVtD9lfohUX2uPy36qjruxDlN9DXljO1941hcwz+7f1Dnuo/j4m9jjdms+bBwThX0m5Ny0nBey3frclNxfwXjXjI1Q54Emd44bxWWpZdtjI99f/o3L3E9635eP9/POS+V1d9S+Vcq1Cvp4ub3bb+mb5HgeS8AK33gmj1Fbr/l1qXEtlqy3kDeecx8sw3FCtjyndtym8VfavnVNyM6d1OMfzCnZ9tLjIFE3tR3ZOeXq4vcXzvVcnyzqXnvMhFbXEVPWVI5CbcP8/OZxodV/UjLvE325Jbnfh5R3EvU6Vm3nuJi5IXeW+Ne540mZl0XbaeVH5/JU+aHs/HNzX3/uXseGc+Dp5ML0kJPoGVJvTjQ12/4o5MKmvTGE99yLGZ7jmDeIwIw5dRQXerjOfZ84TioULnjcgXCOHwvhfEI4XyOc57mVnWdezPAUfICDozGnDvXgUAJc49kfUhHO8WOxF6XxlpjvMJgSzvexnzaP84JwLnNDvr8Y3i4mt3q627fpH+T8GB/guLA4XUtirFwdig8Fj8cH0fiRPf39L+Ec+I4QznGM4BcjjZbfpQdCQVgt+b40sIk5BeDHtArn//znPwEAAAAAwIVW4Zx//OMf//jHP/7xj3/84x//+Mc//l37bxXO//SnPwEAAAAAgAsRzgEAAAAAuBnhHAAAAACAmxHOAQAAAAC4GeEcAAAAAICbFYXzV/Me2q4f+m/fhm+jvmuHd/NSt79b00pdu+H9ur5+r3c39ZGme19Xpzv7AQAAAABQbjOcS9gMQ/lC915t/wTvTupHOL+zHwAAAAAA5bLh/PV6D90YKnsTxJtgpbx5t0PXEs5zfFC/MpCHCOcAAAAA8DVkw7ncFm1XfAtWyH2Q79vG/H9jb4P3q8VyC3wTBUTZ5t2Gq/K9+wBACZLqbfW9CZ3BhwVbK9ZC6rYot6IOe2yFc9e//dA2UT1M21rlKwPr+rq+vaofausr/NjN+++HLtq/3e7ksQAAAACAJ0uGcwlLbe9CUip4haZwbsKiX21fiAK+W9VV9MsgP9dDM68K7wmlpXXYqyycm3qp7VuveCfrG/Ttmf1QW99X0y4+SJit59TZYwEAAAAAT5YJ5+Mt7YXhKLwF3oavtwuAsnLqHleCdLAyaldOxxXWMMzacN51U3nztm5fWvB1z63DYqimDnuVhnPhV4lTbZv6N7oLIff1gqP7oa6+84cq4Qq43b5drrRfMRYAAAAA8GQnhPPUiu/8eCo0zgG04Db6TPAtCaVH1GFLcTiP9uVfF65wz/07f/Cx5eh+qKqvXzUv6McrxgIAAAAAnuz4cL4RpMIV1aRon3b1vZ9XbUN7wvmeOuxRGs7j57Ww6x8Pv5Pdtfk/Z3d0P9TUd6vt3lVjAQAAAABPdvh3zo8O5+nvLTs/Uji3z5m621vZg/rLbePxduLOcJ7aNnbVWAAAAADAkyXDuXDhTg+JsZpbkG25hYFrrsP8fWSRC77uNfkPFWrqsNcZ4Tw0B1u9rUf3w56V85K5c8VYAAAAAMCTZcN5uGod/1mr+BeR1YRzH/JsmRur8i5gSiAMVmWDlWMt+E7lR4Fe3aagDnsdGc5lLDr7Z9OWYTdVRvjcUf1QVV8/H6L9ywcK8S+Eq6kDAAAAAHyPsuFc+OCkCoJ4TTjfupU5DH/Z/RtaKPVhMbYMj+V1qJHat6e1rSjsZm/v129dP7ofauobPr62XM0/aywAAAAA4KvYDOfCrVSHIbkf5O+Zh7+MrCacC7uC2plypjJncRhr2uUvQrMrrKZO8lgquDUmGMZ/j3sVHivqUOqscC7WbRr7IrEqLo7sh9r6Cm3udMp2Z4wFAAAAAHwVReEcAAAAAACch3AOAAAAAMDNCOcAAAAAANyMcA4AAAAAwM0I5wAAAAAA3IxwDgAAAADAzQjnAAAAAADcjHAOAAAAAMDNCOcAAAAAANyMcA4AAAAAwM2KwvmreQ9t1w/9t2/Dt1HftcO7eanb361ppa7d8H5dX7/Xu5v6SNO9r6vTnf0AAAAAACi3Gc4lbIahfKF7r7Z/gncn9SOc39kPAAAAAIBy2XD+er2HbgyVvQniTbBS3rzboWsJ5zk+qF8ZyEOEcwAAAAD4GrLhXG6Ltiu+BSvkPsj3bWP+v7G3wfvVYrkFvokComzzbsNV+d59AKAESfW2+t6EzuDDgq0VayF1W5RbUYc9tsK5699+aJuoHqZtrfKVgXV9Xd9e1Q+19RV+7Ob990MX7d9ud/JYAAAAAMCTJcO5hKW2dyEpFbxCUzg3YdGvti9EAd+t6ir6ZZCf66GZV4X3hNLSOuxVFs5NvdT2rVe8k/UN+vbMfqit76tpFx8kzNZz6uyxAAAAAIAny4Tz8Zb2wnAU3gJvw9fbBUBZOXWPK0E6WBm1K6fjCmsYZm0477qpvHlbty8t+Lrn1mExVFOHvUrDufCrxKm2Tf0b3YWQ+3rB0f1QV9/5Q5VwBdxu3y5X2q8YCwAAAAB4shPCeWrFd348FRrnAFpwG30m+JaE0iPqsKU4nEf78q8LV7jn/p0/+NhydD9U1devmhf04xVjAQAAAABPdnw43whS4YpqUrRPu/rez6u2oT3hfE8d9igN5/HzWtj1j4ffye7a/J+zO7ofauq71XbvqrEAAAAAgCc7/DvnR4fz9PeWnR8pnNvnTN3trexB/eW28Xg7cWc4T20bu2osAAAAAODJkuFcuHCnh8RYzS3IttzCwDXXYf4+ssgFX/ea/IcKNXXY64xwHpqDrd7Wo/thz8p5ydy5YiwAAAAA4Mmy4TxctY7/rFX8i8hqwrkPebbMjVV5FzAlEAarssHKsRZ8p/KjQK9uU1CHvY4M5zIWnf2zacuwmyojfO6ofqiqr58P0f7lA4X4F8LV1AEAAAAAvkfZcC58cFIFQbwmnG/dyhyGv+z+DS2U+rAYW4bH8jrUSO3b09pWFHazt/frt64f3Q819Q0fX1uu5p81FgAAAADwVWyGc+FWqsOQ3A/y98zDX0ZWE86FXUHtTDlTmbM4jDXt8heh2RVWUyd5LBXcGhMM47/HvQqPFXUodVY4F+s2jX2RWBUXR/ZDbX2FNnc6ZbszxgIAAAAAvoqicA4AAAAAAM5DOAcAAAAA4GaEcwAAAAAAbkY4BwAAAADgZoRzAAAAAABuRjgHAAAAAOBmhHMAAAAAAG5GOAcAAAAA4GaEcwAAAAAAbkY4BwAAAADgZkXh/NW8h7brh/7bt+HbqO/a4d281O3v1rRS1254v66v3+vdTX2k6d7X1enOfgAAAAAAlNsM5xI2w1C+0L1X2z/Bu5P6Ec7v7AcAAAAAQLlsOH+93kM3hsreBPEmWClv3u3QtYTzHB/UrwzkIcI5AAAAAHwN2XAut0XbFd+CFXIf5Pu2Mf/f2Nvg/Wqx3ALfRAFRtnm34ap87z4AUIKkelt9b0Jn8GHB1oq1kLotyq2owx5b4dz1bz+0TVQP07ZW+crAur6ub6/qh9r6Cj928/77oYv2b7c7eSwAAAAA4MmS4VzCUtu7kJQKXqEpnJuw6FfbF6KA71Z1Ff0yyM/10MyrwntCaWkd9ioL56ZeavvWK97J+gZ9e2Y/1Nb31bSLDxJm6zl19lgAAAAAwJNlwvl4S3thOApvgbfh6+0CoKycuseVIB2sjNqV03GFNQyzNpx33VTevK3blxZ83XPrsBiqqcNepeFc+FXiVNum/o3uQsh9veDofqir7/yhSrgCbrdvlyvtV4wFAAAAADzZCeE8teI7P54KjXMALbiNPhN8S0LpEXXYUhzOo33514Ur3HP/zh98bDm6H6rq61fNC/rxirEAAAAAgCc7PpxvBKlwRTUp2qddfe/nVdvQnnC+pw57lIbz+Hkt7PrHw+9kd23+z9kd3Q819d1qu3fVWAAAAADAkx3+nfOjw3n6e8vOjxTO7XOm7vZW9qD+ctt4vJ24M5ynto1dNRYAAAAA8GTJcC5cuNNDYqzmFmRbbmHgmuswfx9Z5IKve03+Q4WaOux1RjgPzcFWb+vR/bBn5bxk7lwxFgAAAADwZNlwHq5ax3/WKv5FZDXh3Ic8W+bGqrwLmBIIg1XZYOVYC75T+VGgV7cpqMNeR4ZzGYvO/tm0ZdhNlRE+d1Q/VNXXz4do//KBQvwL4WrqAAAAAADfo2w4Fz44qYIgXhPOt25lDsNfdv+GFkp9WIwtw2N5HWqk9u1pbSsKu9nb+/Vb14/uh5r6ho+vLVfzzxoLAAAAAPgqNsO5cCvVYUjuB/l75uEvI6sJ58KuoHamnKnMWRzGmnb5i9DsCqupkzyWCm6NCYbx3+NehceKOpQ6K5yLdZvGvkisiosj+6G2vkKbO52y3RljAQAAAABfRVE4BwAAAAAA5yGcAwAAAABwM8I5AAAAAAA3I5wDAAAAAHAzwjkAAAAAADcjnAMAAAAAcDPCOQAAAAAANyOcAwAAAABwM8I5AAAAAAA3I5wDAAAAAHCzonD+at5D2/VD/+3b8G3Ud+3wbl7q9ndrWqlrN7xf19fv9e6mPtJ07+vqdGc/AAAAAADKbYZzCZthKF/o3qvtn+DdSf0I53f2AwAAAACgXDacv17voRtDZW+CeBOslDfvduhawnmOD+pXBvIQ4RwAAAAAvoZsOJfbou2Kb8EKuQ/yfduY/2/sbfB+tVhugW+igCjbvNtwVb53HwAoQVK9rb43oTP4sGBrxVpI3RblVtRhj61w7vq3H9omqodpW6t8ZWBdX9e3V/VDbX2FH7t5//3QRfu32508FgAAAADwZMlwLmGp7V1ISgWv0BTOTVj0q+0LUcB3q7qKfhnk53po5lXhPaG0tA57lYVzUy+1fesV72R9g749sx9q6/tq2sUHCbP1nDp7LAAAAADgyTLhfLylvTAchbfA2/D1dgFQVk7d40qQDlZG7crpuMIahlkbzrtuKm/e1u1LC77uuXVYDNXUYa/ScC78KnGqbVP/Rnch5L5ecHQ/1NV3/lAlXAG327fLlfYrxgIAAAAAnuyEcJ5a8Z0fT4XGOYAW3EafCb4lofSIOmwpDufRvvzrwhXuuX/nDz62HN0PVfX1q+YF/XjFWAAAAADAkx0fzjeCVLiimhTt066+9/OqbWhPON9Thz1Kw3n8vBZ2/ePhd7K7Nv/n7I7uh5r6brXdu2osAAAAAODJDv/O+dHhPP29ZedHCuf2OVN3eyt7UH+5bTzeTtwZzlPbxq4aCwAAAAB4smQ4Fy7c6SExVnMLsi23MHDNdZi/jyxywde9Jv+hQk0d9jojnIfmYKu39eh+2LNyXjJ3rhgLAAAAAHiybDgPV63jP2sV/yKymnDuQ54tc2NV3gVMCYTBqmywcqwF36n8KNCr2xTUYa8jw7mMRWf/bNoy7KbKCJ87qh+q6uvnQ7R/+UAh/oVwNXUAAAAAgO9RNpwLH5xUQRCvCedbtzKH4S+7f0MLpT4sxpbhsbwONVL79rS2FYXd7O39+q3rR/dDTX3Dx9eWq/lnjQUAAAAAfBWb4Vy4leowJPeD/D3z8JeR1YRzYVdQO1POVOYsDmNNu/xFaHaF1dRJHksFt8YEw/jvca/CY0UdSp0VzsW6TWNfJFbFxZH9UFtfoc2dTtnujLEAAAAAgK+iKJwDAAAAAIDzEM4BAAAAALgZ4RwAAAAAgJsRzgEAAAAAuBnhHAAAAACAmxHOAQAAAAC4GeEcAAAAAICbEc4BAAAAALgZ4RwAAAAAgJsRzgEAAAAAuFlROH8176Ht+qH/9m34Nuq7dng3L3X7uzWt1LUb3q/r6/d6d1Mfabr3dXW6sx8AAAAAAOU2w7mEzTCUL3Tv1fZP8O6kfoTzO/sBAAAAAFAuG85fr/fQjaGyN0G8CVbKm3c7dC3hPMcH9SsDeYhwDgAAAABfQzacy23RdsW3YIXcB/m+bcz/N/Y2eL9aLLfAN1FAlG3ebbgq37sPAJQgqd5W35vQGXxYsLViLaRui3Ir6rDHVjh3/dsPbRPVw7StVb4ysK6v69ur+qG2vsKP3bz/fuii/dvtTh4LAAAAAHiyZDiXsNT2LiSlgldoCucmLPrV9oUo4LtVXUW/DPJzPTTzqvCeUFpah73Kwrmpl9q+9Yp3sr5B357ZD7X1fTXt4oOE2XpOnT0WAAAAAPBkmXA+3tJeGI7CW+Bt+Hq7ACgrp+5xJUgHK6N25XRcYQ3DrA3nXTeVN2/r9qUFX/fcOiyGauqwV2k4F36VONW2qX+juxByXy84uh/q6jt/qBKugNvt2+VK+xVjAQAAAABPdkI4T634zo+nQuMcQAtuo88E35JQekQdthSH82hf/nXhCvfcv/MHH1uO7oeq+vpV84J+vGIsAAAAAODJjg/nG0EqXFFNivZpV9/7edU2tCec76nDHqXhPH5eC7v+8fA72V2b/3N2R/dDTX232u5dNRYAAAAA8GSHf+f86HCe/t6y8yOFc/ucqbu9lT2ov9w2Hm8n7gznqW1jV40FAAAAADxZMpwLF+70kBiruQXZllsYuOY6zN9HFrng616T/1Chpg57nRHOQ3Ow1dt6dD/sWTkvmTtXjAUAAAAAPFk2nIer1vGftYp/EVlNOPchz5a5sSrvAqYEwmBVNlg51oLvVH4U6NVtCuqw15HhXMais382bRl2U2WEzx3VD1X19fMh2r98oBD/QriaOgAAAADA9ygbzoUPTqogiNeE861bmcPwl92/oYVSHxZjy/BYXocaqX17WtuKwm729n791vWj+6GmvuHja8vV/LPGAgAAAAC+is1wLtxKdRiS+0H+nnn4y8hqwrmwK6idKWcqcxaHsaZd/iI0u8Jq6iSPpYJbY4Jh/Pe4V+Gxog6lzgrnYt2msS8Sq+LiyH6ora/Q5k6nbHfGWAAAAADAV1EUzgEAAAAAwHkI5wAAAAAA3IxwDgAAAADAzQjnAAAAAADcjHAOAAAAAMDNCOcAAAAAANyMcA4AAAAAwM0I5wAAAAAA3IxwDgAAAADAzQjnAAAAAADcrCicv5r30Hb90H/7Nnwb9V07vJuXuv3dmlbq2g3v1/X1e727qY803fu6Ot3ZDwAAAACAcpvhXMJmGMoXuvdq+yd4d1I/wvmd/QAAAAAAKJcN56/Xe+jGUNmbIN4EK+XNux26lnCe44P6lYE8RDgHAAAAgK8hG87ltmi74luwQu6DfN825v8bexu8Xy2WW+CbKCDKNu82XJXv3QcASpBUb6vvTegMPizYWrEWUrdFuRV12GMrnLv+7Ye2ieph2tYqXxlY19f17VX9UFtf4cdu3n8/dNH+7XYnjwUAAAAAPFkynEtYansXklLBKzSFcxMW/Wr7QhTw3aquol8G+bkemnlVeE8oLa3DXmXh3NRLbd96xTtZ36Bvz+yH2vq+mnbxQcJsPafOHgsAAAAAeLJMOB9vaS8MR+Et8DZ8vV0AlJVT97gSpIOVUbtyOq6whmHWhvOum8qbt3X70oKve24dFkM1ddirNJwLv0qcatvUv9FdCLmvFxzdD3X1nT9UCVfA7fbtcqX9irEAAAAAgCc7IZynVnznx1OhcQ6gBbfRZ4JvSSg9og5bisN5tC//unCFe+7f+YOPLUf3Q1V9/ap5QT9eMRYAAAAA8GTHh/ONIBWuqCZF+7Sr7/28ahvaE8731GGP0nAeP6+FXf94+J3srs3/Obuj+6Gmvltt964aCwAAAAB4ssO/c350OE9/b9n5kcK5fc7U3d7KHtRfbhuPtxN3hvPUtrGrxgIAAAAAniwZzoULd3pIjNXcgmzLLQxccx3m7yOLXPB1r8l/qFBTh73OCOehOdjqbT26H/asnJfMnSvGAgAAAACeLBvOw1Xr+M9axb+IrCac+5Bny9xYlXcBUwJhsCobrBxrwXcqPwr06jYFddjryHAuY9HZP5u2DLupMsLnjuqHqvr6+RDtXz5QiH8hXE0dAAAAAOB7lA3nwgcnVRDEa8L51q3MYfjL7t/QQqkPi7FleCyvQ43Uvj2tbUVhN3t7v37r+tH9UFPf8PG15Wr+WWMBAAAAAF/FZjgXbqU6DMn9IH/PPPxlZDXhXNgV1M6UM5U5i8NY0y5/EZpdYTV1ksdSwa0xwTD+e9yr8FhRh1JnhXOxbtPYF4lVcXFkP9TWV2hzp1O2O2MsAAAAAOCrKArnAAAAAADgPIRzAAAAAABuRjgHAAAAAOBmhHMAAAAAAG5GOAcAAAAA4GaEcwAAAAAAbkY4BwAAAADgZoRzAAAAAABuRjgHAAAAAOBmhHMAAAAAAG5GOAcAAAAA4GaEcwAAAAAAbkY4BwAAAADgZoRzAAAAAABuRjgHAAAAAOBmhHMAAAAAAG5GOAcAAAAA4FZ/Gv4fs84hbw8JZ1oAAAAASUVORK5CYII=&quot; alt=&quot;&quot;&gt;&lt;/b&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;Lock을 걸어버리자&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;code-multiline&quot; lang=&quot;java&quot;&gt;&lt;span class=&quot;sf_code_keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;sf_code_class-name&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;sf_code_keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;static&lt;/span&gt; Singleton instance &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; null&lt;span class=&quot;sf_code_punctuation&quot;&gt;;&lt;/span&gt;

	&lt;span class=&quot;sf_code_comment&quot;&gt;// private로 선언된 생성자&lt;/span&gt;
	&lt;span class=&quot;sf_code_keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;sf_code_function&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(){&lt;/span&gt;
		System&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;sf_code_function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;Create Instance&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;);&lt;/span&gt;
	&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;

	&lt;span class=&quot;sf_code_comment&quot;&gt;// 추가!! Lock을 걸어보자&lt;/span&gt;
	&lt;span class=&quot;sf_code_keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;synchronized&lt;/span&gt; Singleton &lt;span class=&quot;sf_code_function&quot;&gt;getInstance&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(){&lt;/span&gt;
	&lt;span class=&quot;sf_code_comment&quot;&gt;// public static Singleton getInstance(){&lt;/span&gt;
		&lt;span class=&quot;sf_code_keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;instance &lt;span class=&quot;sf_code_operator&quot;&gt;==&lt;/span&gt; null&lt;span class=&quot;sf_code_punctuation&quot;&gt;){&lt;/span&gt;
			instance &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;sf_code_class-name&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;();&lt;/span&gt;
		&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt; 
		&lt;span class=&quot;sf_code_keyword&quot;&gt;return&lt;/span&gt; instance&lt;span class=&quot;sf_code_punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;code class=&quot;code-inline&quot;&gt;synchronized&lt;/code&gt; &lt;mark&gt;로 선언된 영역은 Lock을 걸어 주는 역할&lt;/mark&gt;을 수행하므로 하나의 쓰레드씩 이 함수를 수행하게 되므로 Thread-Safe 문제를 보완해 줍니다.&lt;/p&gt;&lt;p&gt;하지만 우리가 병렬로 수행하기 위한 목적으로 멀티쓰레드를 쓰는데, &lt;code class=&quot;code-inline&quot;&gt;synchronized&lt;/code&gt; 구간에서 병렬성이 무너지기 때문에 성능저하가 발생할 수 있습니다. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;h2&gt;holder에 의한 초기화&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;code-multiline&quot; lang=&quot;java&quot;&gt;&lt;span class=&quot;sf_code_keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;sf_code_class-name&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;sf_code_comment&quot;&gt;// private로 선언된 생성자&lt;/span&gt;
	&lt;span class=&quot;sf_code_keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;sf_code_function&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(){&lt;/span&gt;
		System&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;sf_code_function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;Create Instance&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;);&lt;/span&gt;
	&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;
	
	&lt;span class=&quot;sf_code_comment&quot;&gt;// Holder Class 추가&lt;/span&gt;
	&lt;span class=&quot;sf_code_keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;sf_code_class-name&quot;&gt;Holder&lt;/span&gt; &lt;span class=&quot;sf_code_punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;sf_code_keyword&quot;&gt;static&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;{&lt;/span&gt;
			System&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;sf_code_function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;Holder Class&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;);&lt;/span&gt;
		&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;sf_code_comment&quot;&gt;// Holder 클래스를 메모리에 로드할 때 메세지를 보여주기 위함&lt;/span&gt;
		&lt;span class=&quot;sf_code_keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;final&lt;/span&gt; Singleton instance &lt;span class=&quot;sf_code_operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;sf_code_class-name&quot;&gt;Singleton&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;();&lt;/span&gt;
	&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt; 	

	&lt;span class=&quot;sf_code_keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;static&lt;/span&gt; Singleton &lt;span class=&quot;sf_code_function&quot;&gt;getInstance&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(){&lt;/span&gt;
		&lt;span class=&quot;sf_code_keyword&quot;&gt;return&lt;/span&gt; Holder&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;instance&lt;span class=&quot;sf_code_punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;sf_code_comment&quot;&gt;// getInstance() 말고 다른 함수를 호출하였을 때 인스턴스 생성 여부 확인용&lt;/span&gt;
	&lt;span class=&quot;sf_code_keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;sf_code_function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(){&lt;/span&gt;
		System&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;sf_code_function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;Singleton.print()&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;);&lt;/span&gt;
	&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;sf_code_punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Singleton 클래스 내부에 Holder 클래스를 작성하고 그의 멤버 변수로 Singleton 클래스의 인스턴스를  생성합니다.&lt;/p&gt;&lt;p&gt;앞서 소개한 두 가지 방법에서 발생한 문제점을 어느 정도 보완하는지 체크해 보았습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;ol start=&quot;1&quot;&gt;&lt;li&gt;&lt;b&gt;사용 전에 미리 생성하지 말 것&lt;/b&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;code class=&quot;code-inline&quot;&gt;getInstance()&lt;/code&gt; 호출 전 Singleton 클래스의 인스턴스가 static 맴버 변수로 작성되지 않았으므로 인스턴스가 생성되지 않습니다.&lt;/p&gt;&lt;p&gt;위의 소스코드에서&lt;code class=&quot;code-inline&quot;&gt;getInstance()&lt;/code&gt; 를 실행하지 않고 &lt;code class=&quot;code-inline&quot;&gt;print()&lt;/code&gt; 함수만 실행했을 때 결과를 보면 쉽게 이해하실 수 있을 겁니다.&lt;/p&gt;
&lt;br /&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABNMAAABICAIAAABTHSSMAAAgAElEQVR4nOy9Z3sbS3rnvR/F9pw5ItDdlTshR5KIDCABEowgAkEkgjlKVKQCcxBzzqQoUfGEmfF6bc/uetfXXvs8n2j3BUmJkqhzjmbGnpk1dP1fUEChu7rqrrvqV3VX9X+qDNVWBGsqgjWVoVrFaIZUwqJSUEEFFVRQQQUVVFBBBRVUUEFfK0glWW+qDNU6XJ7f/O7v/8/lv/9UIM+CCiqooIIKKqigggoqqKCC/iQqkGdBBRVUUEEFFVRQQQUVVFBB/7YqkGdBBRVUUEEFFfQfTEwSeCggCUt/7pwUVFBBBf2HUYE8f4lkxOQ/dx4K+jmxQjX9P6pCzf4HU6G6C/pqMRl9rC8mozJiMsIUG4s9+T5PlUOADF1+/ud/kIIKKqig/6f110aeTIJEROzf+b4yon9oh8RkRESIz8X+HJn/xTm8rGJERUj+Xaqb/klr8/1o409lJH/cdRA9r3HpJ68gIyrC8/In4udmhuiVDDDpSr3IiIgfnhdf2th1F/lLF5PghzYiQswglbGoICKe//EHkyeiV0qDSVfqQkYfFdQn//2jRaUr9z2vqStWQf94K/3omtc9uAQxu9qo/7A0P1WeV3LyU9e5WhSigpmEPrHh99/S9+Z9Tg5ffHD4MzX1SYFfaTUf6uKXXOevUfKHOmLSRdV8bttM/vDVNeV8nXVdNNLzn3xNuTEJEQn94sTwS3n+SSEiQiJhSSWyjsg6IqtYlK/P6mUaTCgtDcWfvYv3VHFAvPLDnyzeS2v/mewxGX3q+a+0lC92r9emkS+6EnzVSYqIyuiTxlVQQQUV9NegPzV5EhGifzO4YgpRTaLRRKWf7h6+ICpBxCD9ql9JEKhqoCe+8cRXYRDQ1/KYjCU9M1gVe7HqLNE5S1SrmVARkr+k3kLWiya76ixWLGYiKpgpVGeSDEbybx2ARGUsG0Sj8fymf9SlmASZznVzOjrUgpmIZaNoNFNZ/erLMhkh+r52iHJ5nT8oV8xSrDqKFZOJyl/ONpaIzqrYS3TOEp3dKSnqx0MlHTOYqXL+t4wVo6g3EknBTMaSjhrMTNVhJmPFKJntFwZmd4iyAvFfxjzRL9K5GdgUe7HOWaJzluicpYrJSCSV6i2i3oAA1Ef6E5MjFqcOfN1zqVRvZqr64S56E5EUxC6+EnX6CwuRdMxoYTrdn+aJmEp1ZqbTE1HGoowlHdObqaKee0WiM4kGA2EKUUx/oHVRESKR6ExMue5bSYaYYdmkOEp0TqekVyFhn4/7ERaxcplGp6Lr0nxSTRBRJBsun+v8SUWIZWqwq85SncMpqSok4qc/EfVMbyDSOQspRDUxveHiCpJK9WamqOe3JqpRNBgxwtjVVD87WVlbCsHnudJRg0XUG34qq5KeGcxUPs+kTFSTqDNc2ICkZ0YzU9TL6+j/zaz6zyIZMZnoLJLBgAiDVCeai3XFpardziTpysSihIgiWpy64vP+iF0lcERFiKRPrAsRBplespXoiktUq5Uw6RfCJ8IUUpXqjRcG8NM6v4ulRFdcqtpsVJTQLxt1QEyJanO1dTavLyW3N9Jb6+md+Zapu8XlfszEDz0+pbzO5Rqcat/fTK0vJ1cWWtdW20+fte+uJpYWkmsr6Z3t1OKYt1y6voOmIsQKMzl0xaU6h0OUFUjFa/ODCINEofornp/JmKrUZFeLS3UOp2RQEZE+7Z6YjJnKLtI4LtPISNSJZoeuuETnLLlw8jaHbLGJegMzWCSdir5uSFNQQQUV9GfWn5g8icmuOB2i8qUZ6z9GEhR0puzTzrMVj9sC0fVO/4tiCtZb5OJiWa98Td4kIKj6ugddv92urjXy8CsH9BjzrpbI9mnfi9305mp6Zy97vBLOhSQq/6VMt2MMytKJvZOeZxuRmzGJMIE3lNyc61gbMZjVrxzof5VEARidfTM93234y60I0T/qakyCTFc2fdQxmYY8Uxof5l4fBGpKoEB/6Vy7qGAmY9kgOktUs56IIhRkXXS8/fVuRZUDAvZ1+aESkvUlQzOZkxfduzP+gOEay2EiEFRdebJuYi61tpHe2cisLjf1JvUm9cOSBSsun1irS7kwZYCHxtT97Opjm1MvcACV1NavrNe1lgkaLEbvdL58lt/ZSG2tZ7d22u73Wh36v5QghZ8TwgQG2lMnL3qebae31tJb65n93caOoGTwVS6+zE3n2Y0iQ+5J98Gsw6X/mqkfCSKz5/5SY09QFAngodrUl9qcd5WZeR5Ciz84tx7pCSOeQiwSc23Tzl5LT4j/2oq+7r6Al2z5Jy0P80YDFARM3fUtG1u1MTfHESgZSu8spp6kqUbUtU7lX236y20Q/vKbyhAgAen1gbbG1bWq8DUojrBMjBVV9yayu9vt+wfpubvFHgPC4sdpGNKVVd6fyu5t5/YP2mdve9z6T9J8UkeCQKmhrGJsLTLcqMgYUgWLEqQyC3TUze1kdrbbDw9ST4dtTgVCCUsKIlQQMFZdvrsLsdG0UQ8BkYEgGlqGI9MjdivkAcVWX3hxp7mjWhAoJMzSNZmZH9QRAH3J1mf7dVEf5D9qv4iKSK2qWn6Zm85L8HpURkSkpkBwfrW63giwBCF1DsxkZwdUgwJ4QCraYpuLFdUOwALB9VfZ8YwIvsZF/GULEYbslcGJ2dpmF89Mjrbbsadbme2t7N527GHWbJUhkhCTANSbm3paNzdyOzv53bWmVJUk0vN1YAiQgA2G6kzT6nIgpAAsY1HBVAS6EltusnVzN721nT/aqu+plSj9mdU2KgIeQdFR0v0kNnPTbgUC/sn8MwkbnCW50dbFrfT2dnZvK3InYTCIEP1MR4moRGye6qXV/MqjQG2ZwV6sOotVZ7CkYzLz4jDcHUSIXFaxjCS9aLYrdrvqrSppavG2JtwtLe54qzsec1ZXqA6bbHOI6rU3kgDTK+HBpsXdzPZ2+9FB63inySzCTzwSk4AAAbXYEsPR5Qm3GwlYwaKMqE72RmomJtt2NtMH69nVmy6P5ePGKyOqk30ttZOTbbubmYP1zMqwy2UBiPBiqavvSfpoO721nt5aT22spvePB/7zWWO22hIbSjzpUfUiLAQJF1RQQX89+uPIU1IQoQAyJKqYSYAaDO2PklsP3KXwZ7qZP0Qygqqucbh5csThMKGvgyIZEUms7W7ZX6yqkS861F8kCQiqvvZu/t1aIHRBnohQAMVfNF7BiPcmW8/O4u0BRgmUjGrr3czbw7pYOQbkL2LEgzGs6spsT3i9NkQkLEqAN7jvr/cfjhot/5bkiaBQUt+4+/39//XP6ZEwFclXrkV/LCZBpvOP7+aepBBgUqCzYfqR229HXxieXi9Coa02uLHT0u1ljEAgK8GexunRUq8Vfe00h6hgUYGYiBXRlrXNqmvmLGQIJF31YPZor2UkYjDLmKnEUWLryLm8FsIkJJ6HmCruB5ttt5uxSIUifcmt1cHf7/jdVqFIEKvSqeODYJNdo6VK9knX8ViJoiIqSqVVoZX9joVOvSL/ZS2tf0EIE1TTn39zXN9UjJmEZR1RdFiUkeJ135pq6ItQjdaQHu3YnrSXfhV5KhARx/BS+nFO1lH+hmzNTfT/z9NgqBTcEKirPnZw0pjxcgJDWCSW+ujzs9bh8J+CPBUoCLrE3dTiQ3uxpC2iSkVX/r//EO8J4xsAqo7g4rP0vSaBE5Xa/qape8Uu808g30diMhJ1sr/SP7LQ9V9+P/yfT0N1yqctlFEeeSpnd3vWh+wGBSmBwPhB9/ao0yYJ750eo0AsKR9ba5sfsBgUrFQHpw57tu/brUy4zjEiphCL054eSBx/f+t///f07TpJQpDKCGISyDUfPm/ubmZUwpbamu3dzESngWCBythot8Y7Ijtvbv3//zM/3mbQAUAUCIAU7mxdfeorV7Vayuyxtn/4MfsoyTQIEJ1vbK9jJk+xgLyJ+MFWbcT7KXky6b1ViPh6D4yoiA3OwMxetLNCQATw9vK5o8EfZh0GnaARdNFb+aNlT5meo17vnemG7kaGvsZF/CWLSYCots7JtqedOo4X6/PNUxP+oB0hJnlaY29ep0bbdATzSNLX9SeP16oaSjEwmpvu5l+fNCY8kDAk6ZXyqrK7S93/9F+Hf3tcXSMBLGMmQWqwDC5k9xY85XYA9YbmwfS73XC9B2H2xTlcJmOd2dSYqFs4Hfrf/9qzdstuFX56SIAQVuOD0fFRV5kJQUmtzCd/eN06FJExgT8xU8xkSCT7yErn/kOrIgPEIGYQM4goD3Xm7HjH0ZzXJ/If8FUCSJWrmwOPH7TMTsUX5s4VnVtsmXwUyNcoCkPXuU2EqNgwGD85qWsLYSzRkpamk8Pk7VYFYfBhN4SMZKM+1FA9sTvwr/9j4HTO44ECVjCToWLWN0fL6pwikaDFVzG117Nx22hWPtoLoFgMkZg/7BSJhKz+yum9nrURg1FGVCayjijnwcCKgI323sme45nSYp0g+wNPN5syLgj/kB6qoIIKKujPoj+CPJkoaBGy+KzBMkUWEWVaTjTlFruPxxzGv7tRRBBTsKQgygQecFrAcVA4H8FLKiKU5yBAFAiA5zEkIhCQgBgAiNMKnBYBLGNRghByWoHTQuF84C6pUOCLfs0DqhBRBgISIIMQX6T5MCqVISY8B84/B1jCkiLwkFSNtL/cqSjnbtxAkMhEUjATBQFyWsBpAQ/plX5UhhBzWsBp+aJviBq6JE8gIaYTS4P2gANpIfjZzZAY8Z7WxOlpNF1GMIYYc1pn2fhO23irToIAM4G7erCeDAQoQBFLKiaU5zHA50Un8DyBVMaScjEtDShEhD9/avBxeNtFtgEn4PfLqhBAXiAQY14LBCgi8UqAH8Yw0JnaeOwqNQPIzsnTdXeld+/+OXkiygT+vBYADxgSVUyZwF2UKhYVLCkIE55DkMrnGeC1gNMKHIfBF8lHBhpqaBnJvdiMrm927k0XF+svt7WoCBOeJ5CeV43Ace9rVsVMFHgkYBGi87sAXqCQXSXPNBYlCIDm11oBy0RSsaggwgQOcFrAaaFwOQS5+lwCYEhSERQ0an3L0etYR7Gg0fJIRhAU/VorYBlLKhZlhMnldQDP40tUPs8whpie2znPk/PwJwgg9TU1L68Faj4jT0JISTS6v9ucDwGBQCIhJqPzaHCmIMp4LRCQCKlszI/npjtliXCCu/zhat+/HAWrS+ANqm+8ldybcBUzDkhK5lHHwUMHkwCRIESgoit9thbwWSEkwnkrA5DjEKAKFmWErjyF8DHwEyZwFy0OICrwkAcili5r/PI6kCr4U6tQzo1W4BHA7LLiMCTnS7vn9oCunfFBmKBQb+7lQbjODhGB55uXmIKZxN8o0mgxBILxY/JEhPLnj8BDAV9p9fDSKgBFTEGYyIl77QvDRqPEcXZX32zf/3pR11JBipBc3hk/XCgrVwUsISwSS13LyWlisJYHDIsyRJ94DxVCxPP4qn8AAuQFisXrigJBGGhPrk54y81ajWKsG+n61zeJkaTCC1AXbtjbrouXQCohIBT9mgNExqIMeChAChHitEDA0vVukxJe9lUt7/X/uNs4tZp7dRCq/3RuCCEEvK3xk61wgwdqkcABVpnOnh2GIqUczy5KScBK83DmaNHnN/I8ATxkFZn0i4PaqIfnPws9YBIgemNmtPf3L+PT0/Hn79ruNcgSglQSNPriwaXs2qDJAHgkAg6yQEfyYDVQa+W0VGka7vqnV8n5mZbDN9np9Dl5YoSAqyWy9LS6sVSrobKvJ/fPr1PTfUYEeOQPrmxHuqow4JG/NX6wVRvx8N9y2ouCvXTOl1ZxjZPkCKQyZhKQLSUj8+l7MQSgQKprV3d7frfuLzbw3yq2zom25ZtWMxUQ428UabTkvGl/1l9cV+PgQ42D9zUu0I9dooolBRHCcwiQC48NAOQ/A4Mr9QsExLCoElGGAHACQUzFkoIo/egiEF06dnJtvAwkInGGm7Z2w002HjKxuETWmxBiiDH+hmzJTnWejhcXM15yVS8dJEcaEIchYQCZ/FO7HfNdIkacUh7aOOz7frther395W51rQSwjChDUrB+9zjSXgoghVQEvFx8eyX3tEenyugLPSAiIinLpH/7Orv5tGnzRX5j5OfJk8pSqUtW9BAxxCj/ra54YLlz/67VJv7UTDGTIZV9Y3vtT1KIsasxwBAI2FWX2DsJx93cpWEjjICzObJ32vYoqZj0vEAEAfMCxMxoaehNvXzenPZdt4NaFLQW78PtzExakaGARaCBSvNIZn/OU2YUABE4wAOGKQX2xujZi65nKw1Lhx3Hsx73hyl4RESIJcQkCDGu7s+92g1WGyGVEMK8Fn3Y2U4u0pDQYPur3eqAAZ7H3FIJMQkBDG319Ts7zdkyVIQErOpbHmS3H9gM+I+aui2ooIIK+nfUH0SeTIaIQOpwJAciW9v13TEFASDq7PnR1sPXg785TS1NRG626S06nsfEUF45Mhqdm2oZvVde7UFEBIiInrrAcK+zqtHb+7Dpfrfd63XlO0trA862ocjsbPPjHmeZooE2S/xW08xMy8SQq9YGsAQRUYOtwc6kzigB1VGS7fI2Vdsi3U0zcy3jg64aK8ASFmWEjYbqeGhsLDo3E3k0UOq3QA4Zo73Na88HfvcmtzEde9Bj95h5AUPm9HSNtMxORccehyIhJoqQKpiJAlENDcmGibHY7ERdd7Ykdjv3drUyZOShCLEi+bPx7YWWu3mr3QS/MA640FXyRAgipKW+qqVn2bG4QgVkqqwYGvSFSgCSEJOQYirODlQ2lwGIqLcp0JO2VoTKhh5H5yfrh1t0VhlAEclGa6KjvLXWXJtumJyLTd/xt7guRuqiKPCquSHXODUZnZls7EybTSqPJCzq7G29gWyLqbqjbmYqGA+IjHzoWS/I84nbdR7A/BF5CoLELJW+oTuRueno1JPqtgATIHPVBEaGS3y283lWCCXJH6kZ6bGXmgRotbTk66YmorMzjbezVpvu2qBoRIggeypmn3ctd1rC7W2v3yTy/vPzchBhUnVrVWfcaPb5++5GZ6ejj2+VVVgRJBAzbPF6urtdfrcllG6cmorNjoWzdToRCfgDeSIIRV9jVU/e7DQAIkJAsSXguf2oeXYqOnmnrMZMGINIlZw15XceROZmWiZHKyI+ogVSWUP15G7vb37sPlqKT9wtq3VSb1N1T85k10MsAiqLvuaKu4+bZyaj0xM1Aym9kQIiY0LFiligO2muCAduj8fmJmr7GxSjCLAMIWL+5uvIU4aC7Li1lF8Z1Cns4/kLGWFJLA1Xj454g6WAI2L9UHrrjg2jIlO4bvR+4mC3JuFHgmLreByf69JzAo9lJfOo4+CRU5IhlRGhqCSdeLYTChmIrax8aKC0pr4ke69pfKSkWBWwIgcSVaNPIrNT0enx6q6ool5MEEBMka2s4tbtlpnp2Pgdb7DW1dETSFQQjGhxdeVwf3GwwdXxoOnJsNOqUlOF94pViESEiBBXuLI3Z6sM+vpHo/NTDbdbDTasFcvc3Q+jc9NND9qtHr3wWezce/KsrbNBRCCVLk7OuGwOgpa7subJgECl4nBodCw2NxW5Pezx2QGWsChBQVXDmeDkVGx2vLa9SdZRiAgq70juPi41SEVyWeDm3bajndp8g4SxPnI7sXbTgiBg8sfkSRE2GoKJC+/xsL/EZ4YcMcW6a3oTiny+RiEjbLSn+2ryDYTKnxcFwogzNzZtzVaHSjjeaMuM5I6Ww3cHrLoi5MxGDyfdFlXgkRyIBrszBrMMVbu7e9AfabA2DTXNPCmrdiIBXnWbFUEPIiKiIpSc1poGh99Gy3szLw5rGj6LtkUIeD4iTzGQbTvcCoTN3MUUlShoDM6+xczmTYsZCljGGPPWUHhrO9ZRS7QYftpaZcR0srvWXedF+srg0lnmUZMsIUgYj1zlEye5haxe4QFREIKguDFyctySDWINYc6gp6Gc6Dz+sZP80+wFeRKiVQLBhfmGtgAoYrqW4ezefN3Y4xLrDU6NNO3NVfitQMshf2v8YCNYV2Grb2+eno5NP66JB2QCBSJhxVScGahsLoMQUU9DoDdjrQiVDT2Kzk/W34zprTJAIiB6U2409bRbX8RpS1qjM6Mt2zvVYRPH2T0PZiO3o5KGB4qlJDdQ0eiDRETYqK+Kh56c9xeDpWUWyGFTtDvU26q+r3FksLX11nQ2UiZTY4Vn8PZFjaeqGYC0JBgYuVlaZoeQQaRIJc1VI52OUp2AJSSp9rb+qkQVou/39ckQUqLzV9wcjc5NtTy8XxnyYYx5xeFov1ff0aioUIAyNdUG7g56AhaAqAD09mhX0/RUdGqiIZcw6GXhk0k9JkMiGTPjHQdP7AYJURmR95skJaChxtYH2d2J4mIG9dHos4NwxCQg6fxXhs6Jju27VsoEyWmrbbB7rTQwlH2xFwzLAEuIMOzMtD4/rY8bIRYRUxDCusxYx7OZUpP+iyflMJmYK1yNQdnkdAxsdu3e+VnyxKLy4cg0UQIaZuuczm3ctdl/jjyJ5Ly32bV924CJgEREJUQlRBkvMH30Xv5kuaxS+eB+MQKOpsjuaepJSjUbBUABIAJAWDRZm/pSL0+bU15EPuuzGOFpeWj5RfpRoyxCSBUEASpPt54dhOs9mJb4bt0JJKopJFDvLa4PG51WfetU1+n8xZrn+wdkEqIX5JnZmyx16gRB0temax/02p3m8zCu92lIaDC7P1Hi0H8IXWGSgI227rH8xgObSgQqI8SoozFyeNiQcHCFZc+CCiror0RfSZ5MhoRBIumC+cj0bm5rJpCp05suAsbU6tbQ9GHf64267qi7PiDKMrVEI1vrmSd9vkhL5fCj7P56VaMVcFqloSf/wz9lFm/74klXuFLnDzduf9e/PVnT3eZtSzU83cpvLoZvjtSPdvtaY6GJ9e6jWW+5zGs4c9dM79Gs1S7yem9w5fXQ4Xy4L+NNJmom13sOpz1+CUACXfWVwzer04nSSKb66UFu647Dxqir1n97pef70+hIm7c5rLeogFQGZ5fzi3croi3+zuHU/n5jvpIxyCOjuW0092ojcivnaYn7uoZje2+G3qxUBI08lDCTMTMagi3BqYX2rZ3mXIuilwXErufPS/KMtVeJIoNUb+x8kH22UFFtETjMXMnMD2/iPVUczxAVkc5Rs/4q+6CF12jFppv5l29yM3cCuagn1992+CL9MK5KvCBavOMnw8/XG4c7ypLRwL2n3afrgbAJESLwVmfH446Dmfr2pCeZiyxvpya7jHpBILry+ddDb3eDA+3eaMJZXsKY+IvI0yxpJbstO1DXn/c0NXv6JtvOtmqbrIKzKfryu/RwA0MIUpFH5uLhrYGzqZJiDMoStbcGy+OR0nhv/c6z9GRWr2efrXzKEFCxIpN5+6Ix5ecFQ8X8cedyv8pESGWEkC470fN6Lzo7EezNuVtSwTtLnQd7dfFSDDlQ0tC087xzb75mZNifTPiyd9q2X2Qf50xGwOML8oScRo3d6nq+7a00abVMsrVG1nfTq7fLUy3evpvhBxm9IvF6d0nnzXBP1t0U9Y0sZF4sB4ImbHI5sg9zr9/lZvvKEk0Wu6wm7nWfrrnKDFoNk/25ltPdlvtdnpaop62vYe8w83TIZmSCAJXko+5XL9PjNyszLd6Om5lnL1pH6iUJCcIXyJNRQakKr79I3a0TpU/mqmUoiGpNX9e//BjNB6GGiO58/PlGoJyh8kzzo1s1Y7PNfU3MXOy+P9f2ICkBBqmiZB517I/aCRUgFQSsJkbbD6aKTZSVxVJvf9+xMepvTXoi9TpZpwv1xV9sN91s90Ri3uzNyMlxaixvUjHAFNub6td3cxt3K2MxdyobfLTS98//3DnWggUtq0pnvvt9+9p9X2vS3Vir2p22zEBdf97TfGEV4ZgbcDwN92RfvMs/vV+Vj3kzPYndw9TMZPjuSM1wxtuWjawddy4PWSwIkI/ayCV5HtY1lRJJIaqBqnrMRKSz16y/ah+N8kXvo21VTiMq5R3Jo7XW2x2ellhwdCa3Pestl3itbE6MtG2uh/IZd2s6ONDtDbsFSKk5HjnZq200I1dj+MG9urHxxltZg91s7ZvITHeoWMKy8hF5cgi66wPDN6vOvcfCQW5rxG4mUnqq7/vtcq8BEAlRAvR1kWffZ++HkWqxpj8uiqgLEgpJZWh1LzpYI5qcnqEnLWO3a0cfuL0SbbyV3bxrNxohzxuzj3ueLReXyILe3XD4X/pO5ityaU+0xWIzMmuk+arbPFivarQhKmImAYA4DovVQ9mX15EnEwVk89xfzC/eclp0RBcMTm6kJ7uNlFzEBDLK41L/483UVFYvAkAVTCkn+SpmN1MPkiqC10Y2Ikx4jtfKVeH1V5mH5+QpCtBYMryS37hjtRBOoAInsIpk8nffxXI1VIshobxW0BJP5cxpfv6SPEURQHfZ2GZyPKnTK7bu8fj4UOjxVGWVLFR0p3bGPC47AgD74y1be5n16Zqb/b5Ewt/xMLP/ou1OTFV4QbHXrL1qH40KGi1rHM6/fNs+c7cqF/Pm+pKHL9KPW1UF8FBvrLvd9mzOaxdI3VD8yWDV2GJTrgyYA8G5hZauOspjbCwOb77O3G0SeAhL6z70F/P7ua27DgsR2yZ6v9ut8BsBERElgq626ej79of1WDVbUgN1A3lPc7O7d6LtbCccsfOOhpaz7zMjTSLgOWywdK89+P/eNWXLgQYhtabp5Cze7bs8e0mGWKSWSNPGenZ8wB9pqRgazR5sBJtsAqLm9vHe7w8CQRPHyZ4He12Hjx02ieMc7sGpzr2JmnTCk+qIru+1jqb0OvhRO2IyYrLrwUbb3SilHy3ZIYy0YmnZ1G5+tksvQVrWnzpdKffL54vtkEhyw63s8azXoUAiAoA4nki1I7mzc/KUERWRqbZh51m8twIiDCADgDhGVrrfLQx9mj4AACAASURBVHuMup86Ap0ygRc0wFo6stO184vI80OeEdKqZcGlw+yjlO5TD/lZYioyV6xu+0VudsTrtYvnnytuS/x+6uy0+VYjweijaCaiV0KRwJOHscW55OrSuRJLa7GZJ1Wdtapewp935UwUkM33eKf9aZdej3lABY6XG/qy//Cqvs5NlZr4b36Xn8oygSLGBB5ygmrOzn1GnipRDFSWFX+sdmWtMV1JCRW0sr13fvC/HVdUOqFAP6QpS4RXVhtS5ZR8iCpHmEKTt2btKDlYC7QEiwoiFBpLqxf2225HMP+XsX+noIIKKujn9DXkyWQs65krFHgwm1mdD3cljA4zBBAQCUsqZozjZVPuaefhE6f5mxtFCMr2ypmj9qVeFXI3/vbbIi2xjyznl/p0gJdq8pnf/hDtCFEtr72hBY5Q/f73XVOdJkXQ3NASZ23k5e97Vm85rFB7g0Om+vizl8nBEHdDa8o97tgcs9hEXvVUb5x2TPeYKNZqtNBU3rj5vHUwBCBDqlEympmsQqbqW4bbfzyri3n4X3G06lbuxVZFhVBUhAQgFg8tdRyNOYy06G+/LfqmSEk9bN8fKzaLyF7TvH3S0hsEPOQ0gpbYSobWB9+tVV7u88RMFACBssXamA5PrqaXp8safbL+ujMqMeLd8djJ26HX++mtzfzpQfvMPZfHCQkFUGSlseSLk0i+khPOydNe/fSobaSJ13Ji/UDmzVFDcwUVeM23nD5+r/NoyVOm0yKjZ2K3e+u+QyfzHMdTa9XcSfvjViTwck13+uVhTXMJ9zff3PibXwmeaMv+dl3MDTjRN/us52SyxCTxGkFAIr4m2vYLa55EoUaLpOqxpFJrZXjndcd8OymS7P2zvScTzmI9r0XQGqrbPIz1hzGPoM4kG4xEVpGod/TN9bzb8Potnx6gwkSBGO1di527o3ZT0be/5ljTg65Xh8FavYAlCLHa9qjrh++ifVWUYa0GCkjnfrjTffjIqhJgC9bt/33f5i17schpgfYGUsLdmTfP6+MewIm+c/LktUrzQG5v2eXX89QWmHuWX+g3qlTgBR4pot3JJBVJOma0iIoOSaroro+cvk0/jJMijUbXEDl4Ge0oARzHFXG6+Ej77tNilyqIJaHlZ5npdgUjTgs4DRb9bcmz02hHgC/ilfi9/OudmpAbC7zmBm9un+jamy526zgtuJ48KRFMjU27h5H2CkrIZ28vUIjOqnO7JUUyJYbj26e9v/uh93Qzc3La8+Y0f/q8792z7N5259vv+l8fZVful3jtUvx+x/GUz+VSHQ5zbbZ59zQ2UE2Blvqird//LnkrInG89lsOmqsadl4kH8REHnAaQVtE1Zru7KvD+oRbW4Sdw8ud6/fMdpXXCBwHiS+bfPFd+6NmAjhWkWz78beJgQbG8RyHANN9ZhUdIseR6nzq1XfJ3joRc5pfa5W6nuzv/lv2QVwnc5pvBCXU3/n2MNTs4IRPTrvBsLo79/q7/hc76a219M52buOh228HzFT19Ch1u/k9edocMtD767aepx7G6Lc3bvzNNxpq8U3tZB5H8d+Z/VMnnZsDBlr067/jgGgUVUltyLesPev97Y99L3cyR8c9717knz3r/e55+/5W/vW7gbfPcpvjZWE30KIP5Cmcew/Tpfe4mf/xRW3EJRB//d6zzP0WhEQoILnlbvvJgsdjBFimho+Kon0qpXPVhGb3u7/7fuC74+z+bte7V53Pjrq/e9V1tJE5fTX4w1nH3kIo7jO2jLTvzDiKZUHnqjv6oWOhz0igtogXmLVi+vBzt2mQzt+gIEMifpE8RRkiQnzZ5uNn+ZPt7OFR79l6qNED3p+jQykvesqnNlOPUiqB5+TJU3fZ+GZqPK1n8IujfEp4tfoDeVIFIwTcLc07Z6l7nabiEqO/qWL0aec/HrdkaqkWo4t7ed+TpwAIdfgDY9udr98N/Pi8fW+r4+3rrtPDrreve55tpo9eDPz4qvNwtbG7Vixtipz+Q/dCl8lCtRrAFWF9/E7+7WF1rR1gU9X8Uep2s6DlWLgv8+aosaWSCpzmW60+eqfjaNlTZjBlHqYOXvT//ffdR+vZF2c9r47zL8763xymd/d7vn/Xe7afmum3uT3Vcwetw/UCZEi56C8QU/XNQ+0/nNXFPDzyhndOsqMxjEUoIDlyO3ey6PWZAJYualxWqbW8dut1x0KeFJlcdzezSz1GWQt0peULb27+4/Pk3YR4gyfl3cnjKbdVvYA0KiHJUjaxn18b1CO+6G+/LdJi6/BCfnXIyBDH3IGF59mJlCWYbj1eC1Rb+BuCPjKSe7kTCFq1f/PNjb/5FazMtB6tB+tLIH9lhyoTEXMFnu41ZlyYvt9+KUOIBOZwDi70nC2WVZl4nkrhm5mTBZ9L+UCeoaHU8WKZ58MnV8kTMxlixZAd6zzaDUaqZavXGe1q2D7ofTvjNnx5zfMiV4wn9q8kTwkCJEgu972NnmeTbp9B+Pk99jJEIiuuKr/3JLa1lDrY7zjZz+4txhbGfQ21VJHge0RnEoBEEKBWy/PUoDpdJp/f5PObfGUGt0fWqzzPcTwSAIHk/RaYSyGCAtnWw7P4QJveXmoOxKomVnv+cb+u3k+ALJd6dDYzvnzHFSCGT8gTEQqNbu+dhdzeRvvpYWJmyGzTASQipjCTU+8qlVQdwhSa3N57i7m9jfbnh4mpAZNFBe8fn8mQSLrmW9nDeU/J5aI3ZbzkcD1ezk3lVe7zgIWCCiqooL9EfQV5IoSRo6p6/vjmu9PGdIMkIo3mykiFiQIx2bqWuo4nSksAD0RqisXfvUo/zlqra5zhOnuoxnVvZeDtQqkExJrO7JuTYLgU8BQhjIrrGrf3m3MBqMGIUGBwVy3tJ281Yw2CRESqI7R41Har8SPy1PtCK7uJoQZUhBEVgWzxjm9nxzKMh0g1OZpz4amx5oW5xObR4G8Pw7EyUITlurvtZztVNZKAKEAV4Z3nnes3i2tqHLV1zmCVveNJz+/2q7zFhrq7mdM5T6nAQRmLEuBlNXTn6glDWFSwKEOB1/JE8rW2bLzrf7EVaim5ZtvnxZrn80RXrWqxu0dmus9WA9VmXiAQ/SR5Ngxmjha8bgsAIgIAl6daD7eCdSUCMnrGNrPjGcZjyCSIJfvwYsdyv6wxOvsWer9fCcRqrcGwMxQ0N3fEXr9KD0cYR3wzR/mlQR1i1xyF/wXy7Nt/YDTLAqI6f7jq9r3G5Zno4mrn2zf5p90yxyFfJvnmpC7iAjeYPnK/49Wi36fneEzNxe5MX/38ROTpfNvei8F3y74y+yfkiRAl5srG0x87l0dKqqodNbXF0btdv/8hc78JcBRCrEs/yr9a8dl1EDEsKhACWNvf/nLRb5aBNdRw8jzRW0eLABQVjJFGV169sdM20EQ1xPsJefr0wFAXOTqqTzguNrmdv1mOikiUjYHm4Oho09JsbGmz+4dX6UdJphUEWzR69Cre66eMAl64IM9SPXF1tr3aqQqKPDgfPjKeWkoeLuefdqvfaqXEvdzBVLHNAJCEgEBDXamj1fKAU9DwXyRPta5h+6A5V0YIvuaUDiYBSCGRqM4kOjy+0cXkSK9v5GHj7bjekYodzwYTmabVjZqYmxnMRFSkxGjvD686ttdTWxvZtbmqeAUTCRCAWB5PvjpraC2HGgSgoq+7mzlb9nshD2UsKhgTTiz1z21kH8aZxle7fRrvL8MYI6ZgRgWhombjJPOkhQCOVbalXr+oi/oARxGTEBMvrGLpilVoORLqSh2vVQTsQGAIAOSJRg/36qJeoCUQIuJpjO8dhRNuTvjYHi7WPI8aE+WyxSrbnKrNRiUZqbbqj8hzwmrTMVdX9nfPo0NRS1WtMxy21TRWzO/3H943aZk5dT/z46vEWG9x0KvoRIEnRGcWrc6Sm3OZR4OenvvNE1m9IdJ8uBROt9UvbjdkKkSTRdTpEGLn5Nk6FOZ5hFWzI5Krm37SvDDXunk0+NvD2qgfFFHbwFLH8ROHBLSCJ/B0r306o0gUYKbzfVwU810KVanBaEg/yC089CaHIuvDFn2wemmpZaCt+uFq7HZMZ7dQig3Je/mdWUexLOjd9fuv2u60EC2GRKTGaPzty0/cZv/bBbdRgT9LnhDD0kjN+lbsdlJvtYq2EvfwWPvhTFm1BZxH21LKk1L/k83UREbPLtc8RW/FzGbqYZuKv4Y8RRliqpSnGie2MrubmcV7lamupq2NaL6WXEeegMhY1ot6g9o8kF6dLI/3NG3ec9oC/kdzidFc5fBc4kmnudjCJIq98djL00iyEmvg+b5Zjbm24XA3mqoiSB94T571/ZmjRZ/XCgBDACB/MnGwFWpwY6IydzA0s9zS1Vk5MVaTrTdX97XuPa6M98TWFytq7FTVE1NxaPE4OVwvCAirJkdzNjz1pHlhNrFxNPjbo3BrObiBrX1PO08mnArS8q7K+b322XZVogJmqq82MHK3cWk6urja+fZtx2KPrOGkyHB2d7ak1ECcbc2r0+GhseTGfZvxhj4/075yy6goFxv5qEh0zdFXLzMT7bbqGme4zhEKld5Z6v9+2WvRCTwg/nRsY7dj/7g5EyQU8kU2z/3N3tdzZc01tlCdM1Rtjva2ff+ytSvMeHyFPBli9Y37x03Z4kvylACgrCRQ+XC98/lqZcInAAKwJFUNpJ4tl/murHnW38wcz/mcXyBPUcFUhLLFmX6UXNlO7620PuhwdzxqP5p0mw1/avIUgcAkbzg4udt5uuBrKBF+6cnDMsIUSXqqqvbeqZ7jBVe1kyg6hD+8wAwxmejsplB9cX29M1znrKmxB0O2QJXZ5zeXV9mDQXuo1llb56xrKKmvMZXY8KePJkMs6mu6IjNbmb2N9OxNf7I/drBe31xOeAwQ/fAiq+vI8+LtSiaHYrUZPMHg6Epu66HDboBURpQBeNk1SzpmdihWm9ETCj1ayW6O2m36i3AqKiHR4RvfzownxfdnUjBRIBZ73+PW2S5dgTwLKqigvxJ9XbQtIozZfZ7+h62ra/HpW66QBwHh/EiMa8jTmIy9e92xOxdfmE8szicW51uXn7Y8GbIbBKm2M/v6JFjvgsIleW7tNWerEEcQodDkq17caR1uIhyBRER6Z2jxKHmz4VPyXN5NDDdijiAqQtXuG9/KPGkjWqn41lj7s6XaXIPVYRSrGpo2txuS5Z+SJwyGd553PV9pXZhNLM4nFp8mFp/G5+6Xepzm1qn8ybSrhBewgkUJ8IqueiR3lTwp4ziELX7/8P34+lZ67KYn5MbXvvr8Mtq2JeXDAqfBDu/YTu/uPauB8RxjrkTb2XFze4X2gjwtgdnDD+R5uODz2SAUEYSkMtN6uHlBnk82s+NZEVLEJEhVx83F/FKfrLEU9y12/f1xanEqvvA0sfg0sfC0dXU2lKgSmeibPsovDeroda/VvoY89aV3lrs3b+v1klgRjT8/aH2UL/W7Vaex+M5ibq5HIYTXmv3ju+knMaozesa32yfSTAOB4qyYXW7fGatsCZmsstTc2ba3VFbh+Jg8ZYBkuXog95vnmfnZ2MLTxOJ8fH6+be+k8/BRsUHkAdalH7VvP7RdbiJCGJOG4dzJrMckAXu4cWu7IVUJtQSJCiaYNwVCa9uJnjryKXkuubwGZM4lX+0G63VXDu2UAZT0zfm2s73o7Tanp1gudfjG19OP2hh3LXnOO10GFride7VZUYmFy6GYIFocd592LPYZzslzf6rEaYJYQhCy2p7U0cpPkacoAt5eNr2fnm5TGPmpE2gJ47HOnB9NzI/WDN6rSZfxmpLA/Frz7fuxzbsOGfFQBB/v87x4CzyVIYBieTz58qyhrQJxSMB6U3wq/3ze4+IvBkOEclKJZ2q1/XGrhEKNB2fRbg+lFDEFMwb48tD68QfyfPWiLu6HPAFYVKrjF1ZR9sEqZI4joa7U0XJFwAkBQxBiXzy6txVu8UGeQoiorym+e1gbd32BPA9qw1YAMSAiJBIkItJdS5696b9/1b4+HV94et5sW1eeNt9utxiIIOgNLd2Rxe2O1yf5lQFHsRUiKiAmx24nVx4Fe+439oX4vzOXTS43jzyI7z12mUUeMsTOo23DkcOTWG+VhlNKRsbaT869h+Hce9S3loEbkNqjsZOD2jDTuNJtp5uh2hKhCMvV8fjpp0WhYAYAEPztic3xqs778YcJ9I3sHBxrvD8W256sDDogwALHG9qukOfeq7a7UcoTSERqTMbevvrcbTrtys+seTJRgAZn/0J++57dhniBQQi1sj+wtNV2JyYLCJ7vBtcYiweWMhtDFhMQiIIx5i3VtVs78e766/Z5Xuoa8lTeGxsWFSRA4kvGD7ZCkVIgsOvIU8GijKCgtUdb1qeCPfcST9olQTa33Wp8PB1dm6hprSACBDzA/mR8fz3U6AYcRede1NHQuLfV3FqBkeEj8jxc9JfZIWQIQlyeShxshhrcUCNomMN9Z7zlyf2Gu7f9tU4kV9csrEUePIjO95kQzwECDc7Q4nFyKKzVyiU3H7c/Ww7nGq0Ooxioa9zcbkxVghuQWltajo/C9ZKmJJl8tl1T7xKKkBSIxk4Pkk86Sss8qsPgvL2Ym+9VIdAa6xuX56oafYbGW9F7zbI/HlmeL69wukbXov11VLxYh0RUJLp49NWrjv359/WbWHoaHb9Z7NQhBDhaUTv75s6/Pq+usAgA8UXF3vsb3b/Zb1uY/uDYV6arIuUivXIkHmOIheq2jxozxZgyJMpQUFVPMvb8dX7zgdtrESBDTEZYZNbW6LP92iaDgC/2eerz4x17D2yiDNkXyFNUMJPg+bk7kgIFaumbz6/dMuqVPyl5ykDQGas6km/f5haHi4uNwi88QP69J6ES0GoNbQ86tiZsTuVjPyMjIjFbVdXE0+TyueuYjy/MJtbWe37zY8/JWmx+7rIuFttWxgLRCvz5u2SZfLETVVIgD1hNb+pouazKBsDH+byePBUsyoiKkIgAEazURZ49b7sVhp+ea32ZBhKsa2h5/iI5XHOeBhGRuttbn29WBa60eiby1OoYnkzNdukL5FlQQQX9leirTxg6P5SPFDdUP3ya2V9rut9lL3EiJF6QZ89K19F4iZPngUiMoYa9o8a45dtfcbyAeB5yRVpNERR4QanruoY8c1fJc7f1ZvNXk+ejGGJVddtH0c4KxHFckUDcra1nR/WJMlCE5Yb7+bOdQJAJkEHkCCwcJm+G+BsaLQd5AfJareYGz2klXXAo+2qtvFLS8AwzkRcUQ+v0wPtoWyoTyVGS7m9Z30ivzlQ3lckQgS9t7n9/wlCmnBICBEy9qdbXb2JdVYjTEmdd/PlZtLta0BJIKJIrGveftd1u/Hry7Fe0oiU/mdu4Y5RvfPst4AXEc7zmWy0vUCQZymZ+OXkyvsjkebSTnk5KsmLpnMttjphpkVYgAjD7p3baF3oUIgIgyK0P8ntjroZI485mbYODExAszSROd4JBoyAA7ltBab6Vf7nmL/94zZOKUHL6prbys+30Bs/xSBAQd4PH1kji9fNIu5//VtClHuWfr3iLVYBEJEpAS239T3v2H5pUAmy1DQfPE31hygHAZMBD4k4knx/WtXo5XvR/Sp56oKtpeXEW7wuCi0UYEQLIEbv73nruaZcq3OB4DFhpcO0o/aiNaQXBHosdv451eyklV9Y8dcjc0HJ8EI6YNRzFooII4ZnFP7WbHUvSbzn5q8lTgQgoTXc63x3XNDgvz8KVMZUgpOez4Dx3fmqrDLCqC2Ubj/fSjx8G6m0antiGNnLHW5n5Dh1PIZMhuSRPUQLkwxvePyZPAoAolWVaT7aqgoqGY1hUEIK86g6uHLSN1IFvnNWrx+nRBoQxpDJGUKtriBy8an8cwVfJk0MCMdl65j+3ikvyXKmoukKe+9vh6C8lz3C9A5GL0R6i15KnQkoSieOtqgD55lcCLyCeB9wNrVZLkCRDTAUOclq9GOiMvXqRfZQUtQgQWfTEG462W8em6hIujUYwdc617e11bA2aLspKhogSU0vk5LAuoiuSQvU7R5F8+YX38CRbz47qEuVQAwXVXj6zk7oXs3WOppbvWkxEA4z2nvn81u3PGwikFOqCoY2l6Oxqa29Q4DRyU3/T2mnf2UOXw4KQBAThS+RJjMFr3SZ8H0J5DXnKQIA8DzhY7B096N4dNOl5HsmYYA0u9k/v56fb9aLAcZAXCBCIGh3JHM57PDpeoECAtCyVONwONRcL/JdfKnMNeaqYiABRSCVEiIZT7YMz7St3rDpyGQr4OXkqmDGB+gLzM5Gl7fTNZox5FkjWLJ71v50oD7iwQCGE2BePnZ42p8oRByGTAQdYdVfu5U4g7OCxsfpnyVPAAjRY2waaDg+yo8OlZTqOGV0PjrrOVuJ3E5IGA8LQOXkOVhex6rqtw2hXJeY4TiMQVzxxdtzQVgG1UFBt/qmd1P24LX8/vXLfaqYaoLd0zrZv37WwIq1AeGD0Te7kF/tUQvgim39sJfGwIzA2U9tk12BvYPxJ7eBw0+KYv9qJCTs/zl1ADOsD9TtHzW32G99wPI94HnIaraYIQioKQLV0z7ZvzzevbbYvDZoNlC+Si4cXc4u9Crlx4wbkBcRznOZbjocSlq5smmASYpayyZ1IZzmmIsSQlSbjz95lH3YZdPgcOzFTEBGRwRdaOWgdrIEcRlQEyOAZ285OpiUmoi+TJ0IUYBExGSGgVQKNe/st2WpCGcSEv3rO+Sf6nDwlBZ87N/TpTxCGUlln28u3bcNtqgwFJGIm4/cre9z5qe8fX19S0Pkx1BzgOcBzQPN3v1Lid/ObY2YzufEtf/4hxwGOJ+dHoAOAeAEJAhIExGu0wORr2jhuSrm//YYX3n8u4OueSMWEAUQhlRHGGsHkebSSneoxyEQgTOChANnFT64lTyYBSC6m7zEBqKLx8EX2QRMkIkL44mT4T9KQQNPxWeZeA8Ti+fkaam6s8+ChXVI/HCpBmaCW+KY2smMZuUCeBRVU0F+J/sC3qiCEeU6nr42H1hbq+xI6iiCVBKi3tE51v13weqmWI4Cpju7F7hcL3qADcUiAZrWszdPkRYCX67pyb09DDe/Js75p5yDS/oE8g8v7yVuR9+RZs3xyEW3b/qRze/ycPGtW91tvNn0gz4md7FgrKioNLBzlpruNGAHJ75vaH/6X5+GYH9xAon8g++6wNmLSchRipDbf6zjbDaUriIAEQaXFMW80KCkUmIPhrZc9i7etekXgsBKMR47e3fpurSJk5IEIiSpXdMS2Hod6G1RZ4jn8U28bw4j3JFtfvIhlyykhiIk8Lzn6F7vfLnpLZF60ly+c9a3eN8lEyxssuQc9v3mbGmngNZzYOJQ9XrxCntnk8Xao/jzadjs3kftAnreWO1aG9IgHzuaW7efJ8bROpgJHoS5U0hKzuFQB68pmTzpWhn6ePCEBAqX2bGJvN5zyQi0ztjzKv1qrcBv4ItWQuJP7x991LnXLmEHCBEN17eZ+cmk+NZWVGYGUQrWx+fg00dcgahG214V239z6h3Wfz3aFPGVEROrOpl6+aM6U8O93sBACdM6y+Ze9a7dM4g0p8bDrzdv0WM5gIryGSRXZxOvDWHsdEQToDIU3vht6Nu0L2QAPBMlfMbfeuX7Pppc4rJZN7LePZSCvVSKD7Qer7jKDFqjFwxu9rxf9FVaohdDqc7Y1SdRq75jtPJ31WGRea7R0jnf9199kHiUZBwS5runwZepuDcaY13C6xO38/kKJR6dFBvetze5nk6V+M9QiAVkd/Q9yR4t+l5njgdJ6v/1w+gN5hnvTJ2s/TZ6YSUB0ltxd7zpbrkp5iUIAoMBoNaeSzmKjVBoOPbnnr3EjyCCi1FZed/rP/TtPXC6sBZKSmRr6h3fZ+xEIGP6/7d33fxTl/jf+v+C+7+/ne9/f0zySsn2nXNf0me3JbnbTs7tJIL33Ti/SpUWEUAKkEkJIKAoqCiLSjorn2LGhIigdQhc9nuMBzPeH3TQIqEfzkeP9fj6uX1h2Zq+55ppr89qZuSaQPKvrJ2yp7z/n2X9g00jwlpTvfC6nwocJFnMcrbi9T/RM7F7gdJtoI6Y5d8yC5XWdy6MjFSMlWsc3TNvZnZbrYwkam90J81dNPrSvZkEuSxO8v6Ly+WezShIRgSlkthWO0CtEI8GmTarc1uYfTJ4lRZu7MosGkmdeSffWjJKRkmfa1NqdWzKz706eY9dtq5yXT+qNlqrFE7oanFGSkXMkLuqatHlxVLSZJjDFuq3jKmLSI2nKFZGVaR9ro0mSEJNS2jZWLSoTjAxiBcYUlbpx77RtzV6/QJAMnz9/0t6XJq+s4oJzKXMU7XCVNdRuesLlwASVkNq0paZhogVjWkxMXNE982/b0wuTEMFQWDEXTC/cvKWmdcnYCh+mEEWbbYVL6nYGmkIedoDwIkJSzBMbp+x+PqckAlEUlVBW9PS+eVvnWe0mmhXR8OSZ3fN8xeNFHMliXqR52Tlp7dBhU04qj8uNZ8XAVRUSYgVh7MyanVvTc0w0I2JexLwzesrcjGmFAsnJ2Y9V73qqYPw4BmESi7bKuRN2b8urSUbIFj11XsaUApHFpJSc3tJTsbjOjBmKTUh+ckNt00y7yFIPmMqFY0klNbPj+eoleYHkiRmOT0yLy8tSJI6kBGvJwvKn2tNzIhDB48Cf4BxHCvHJq3aMX1szmDwFGZGsa8bKCS8fLJkYzyCKdGVmdL60aFdDVKydQgJGiEkoLNj88vRN9Z4kC0XQyJwybn1X3erpVpEj5Yixa7dVzsunjASfPb16a/OQ5FlZuqUzLScWURyiGdGbX7D7zSlrJkc4aCNjdczsePyV7fnjUyiSwwPJ87FxekNM8pqempWTbSxDC/EJyzfNfGNHZok3uMdzpxZu3lLdsmRclR+RiEImS97Cup3t/ngrqZPNRXOqq61waQAAIABJREFUDu2f2DJFZnia4mw1Syds3VqzebHTIZFaU9SUxcU7d9Q1VFnsCkUKsrcoY+nc2CQnTXMR4xsnPdOUmB7FEJhCNjmxPC4vHiNW8NZWbH8qszyajsgqfWZH0Xg/SRBMXEXp5qeLFhTJHEuRPLZmxhTl2TymYTO38RLixKhZTZULShieowzmmPntk3c+6TQxhJ6hA4+4ZATMiYhV7CX1tdubkmIdlEE0pz1W9ezGcWOj+k++SYgVxYy5tc/1jMsM3ueJRcWSWxrr9dAUjU1xCU/21LZNibTwFMFLiQXpS+fHJbtHfnJyIHnO3TRp03xnBEUxEmZEwZ0+tn6BNzOeGbaIQJOOxBU9k7bMtbI0QbBooM6MyNl9/oULU4qT2WGLSIhWrDl12Y1rilc1FK5qKFzVULB8adnmHTNffq6ieUX+iuCLRatXFdVPinDe/QxwzLBsVHJex9a8Gu9dg9K9BTOckJwdnzVW4BkKmyLGr6za1picbKENHGtJ9M5fmFo+jsMCFvqTZ03jpB1r4uIQxUiYk3hbQkx5mclip2hMKW739DXjd6xLSLJTpGjJrM6qn+F02ThzfEx5mcliC77nsbXjt6+JT7QjVmR4EbGOhKUbqp6sEkVx4Fw3Zjhsj0tv2VI8PZ2i7nkkEhQoUKA8lOVnPc+TpjFtizRFu0VJxLyMMY8j0/xru8Zv76pYUmu2K6QUEze3vnZbe2Vra/n6dcXLH4tJctIEKWVMqHp2S2rmQPLMyF6/MXfI1bYpazpLhlxtO3ZNT+nMLEJntFUvqWt/IpA8x67rLH4sezB5Ll1fWV/O6xnBX5fdvKV2Y0d58+LUpQtKejZklniRASMpxrOope7ZnupVs90JdiOyR9bOrtzWVt3eWr6+uXTtQm9mPMfzFBZEf1Fhc/fErs6K9qb8BfNSJjfUPNccmNsWCwrniDV7LDTG939eZX9hMBlXUrxtW0GlNziXDEMjV37B0y9Uz8/nGJbz5Wdv3Fy7ZUPZiiVpEwpzm3tKZ+YEZhiq7G4ckjwrS7rbUzM8FLbG1bdXLa0aTJ4z19SunW4WBArJYkp5/obm2q62ivaW8vaGzAk5iiLQnCmxoad27fQHJs/6aJdDdBfmdHRWbunIn5ircAKNeWz2xc9vq9nUXdXWmNswbVxzZ/WKCTIrYF5CNO+Y1jz5he25xQ4Ki4wgYWy25M8t3rC1ZkNbydo5/mUNVT1rEofe5xmY+r+uYfzTq2Pt4pCYJNJINufNnfBsh3+siS9YULtpzdgZs/PWNlW0d1RsaM+dlauIPKIQ9mRkt3aVPDEzdWFD+fr2yg1dpY2zYhKtNMEhwZS4tLO6vgKRRjl3WvXGdbFJVoLksDUhdtYT5Rvaq9a3VjQ3ZFSmCiyH7em+JzrrNnVVtq3KWjYjc31X+cIynmIRMpmqFlfs2Fq7fkVKllPMfaymc7UnwUpSHLZ74+ctr9zQXtnWUtGxtrRpVpzfw1I8Qlgunl/dtXwweaZNKu9pSvI/MHkKMsNypOJxTlhQ2NlW0tVS0dZa2PLkuJllZlmWUydNOPxiQe1YbGQDsxemtL84pW12hIkisSikzZy4a3tBXQKJhWDyrFxct2nxSMmzqHTH9qwyHyZYLEiYEdmocd7Fq6o62yrbWyo2rClpnBYdF4kpgeEF2uSOe2x5VfeWqvXtZc2LxpaMz9v0dGV9fnCGoWeezihKRCSHWGHEXiERBDt2QnlPk3fwatuigq6O9MGrbXOKOrvTikZKnmMnV+/YlJ55d/JMWd1TPieX1BstFQvrOpY5PSaS5HFESvKylXVb2yraWis61hQsmuByWyhKtmTU5Kxvrehsq9zQWbhoWkSEFXMSwwlIsies2DF18zK3A1OYwwm1Vc8+Vz4rDbEsRTrdEx4v3bK5omNpclIUxgLGouivy2neWtsZGD0WFm/ekFGchEgWYxY7fKkbD8zomOVyMQSWMCtgsy9uXmvNpu6qtjV3HyAMa5+6dsqunmS/CSFMWNNzOndOWVcrmQTESogizWXz6zaudnlkyhybufGZsnkFHMliQcaciExxw4bNhsdikpz9U25KiBWElBlVO7rHZQWSp4C42LSNz03d/LiFZyneHFE6taC1s2J9W8X69XWt67Kq0jiRp5j4jJ7np3TNMXMCRQq8tyi3tat244bKjo2Fi2Y6I634wU9l4FhSSU1vfaZyUU7wnCfHY0t80tTF5etbKzrai5obvDlxHMeggQnMOI4U4n0N22pXVQ1NnhghpWzR+D3PZ+U6GYyMUmLK6u2Pdc22RYg0I2GEmMSigo4N+QseS3tiVfn69ooNG0saJrs8Ck2w2BSZsqqnfE4uZST4zKmV3WuGJM/y4k3tY7NiEcVhjLE7LeepA3VPVph4ksAmS/myGXu6xuU5CSRilscW17i1W8tnZZFGVvDVZDdvqdvYUd68JHXp4yU9G7LKfIhgMWaxPSl1w/4ZnXOjovr3uCkxbm5rzabuqva1uQ3TxzZ1Vq+aqLACYjDylJZse752eTEvCDSJxIwpFS/uLZuUyvOYMgrWwvlTXt+ZUZhAGzGtxMTMWlzzVFv//p0Zk2ijTbH+tU9NappulWiCMkXUrajrboiOYUnapGTWFm1qqelsK29vKW9bll6VLsvi8NnUJcSKSuWS8V0LIySW0LvjF7ZPPfBUVXtTWVtLeXtL+fr2qubHoxNdiGSR6I6Z01Db013Z3lHevDY5L0VghMFJiVhRTJtdvX1janrwnCfmRCmxKGd5Y+X61rLO9TmLp0S6ZcRyFCFYcmZPfv2F7FIvIkaaWDWQPGdvmLBhbiB5IlqQ/HV1r+4pnpLBGIcuwlNEvH/1pqkvba4YUueKNbOckVYuIq9s30uVi0q4YZ8iYVaWYlM8RSVxhYWxgVJUFJObHZWZHV1QGFtY1P9icWzuWMVixsMnrcUMy7pTCrq2F9T5fjB5MhzPOPwps5dWdLSVb1hfuKY+fpyL5RgaC1xEVvGel2qXVfEUN5g8q1ZO2LYqeM6TE7Ec5apbVtjaWdHWXLGpraRpSWJKDINYyig7J6+a/upmrzeSZpyu8cuLWjsr2psrNrUVr1uU4I/BgW9PnkdsakbH5vyJ8cNnkBLE2OqSpzakpplI/MArn6FAgQLloSk/I3kKMiPImBEQM3Cfg4R4ibV5rN5kR5yHl2XEcEi0muISHV6/w5toibIxrIg5kTU5lCiPaDIxvMTwEiNZJadbslgYXmIEiRHNYqRbtlmZ/tvuA//EnMhZIhWnk5NkfPd7FMERpTjsLC8gVuEjYm0+vz3BI5jNgiNKspgZXsK8iE1OS6I/IjFWspgQy9OcSfbE2b1+h89ri4nkeAlzwXtaOJvbmuh3+HzmyAiGt8lRUYKiBEd8jqfxwMPZHlh4Ccs22eWRLGZG6L9yiTOJEdHmqAhWEBEncJHRNq/fkRAnKzJvj5JtVsyLrMmhuFyCrDC8zPASo9hlV5RoMmFe4YObGVwbZ3MpkQ5WkBlepBmBd7htST6Hz29P9EgmGTMSIyhChDv4nntLIHm2L3Y7FArbLL5ke2K0IIqYERkx8FhFpznB5/AlmSLMrCVSjuhfDy+yZqfZEyMo/ddECQLiLJI70e7322IiOZNVjHAJiokZHnd5h9vkiuTuOrvCSYxkld0eURKUisU1G5dERkYq0UkOn98W4+EFITjBlSczp7MzuyKZV6JsvmRHYqJiNQ/EFcHhVhx2hhdZs0NxunhFYXgJszwSbEpMksPnd8TFSJKIeRGxImOOsiT6Hd4ExW7irC7ZYWN4mREEJNrkmCSHN8nksDAmh+J08XL/ekS7KTbJ4fM7vAkmhxkFZr/gJdYcqTidvNS/s0wO2RUlKApl0GNPRk7TfZKnIGOWozmT6Iq3JfkdXr8tPk4ymxArsYpd8XiGHA4mIcKtRDg4QcK8zMgOOcotmZWBX75ZS6TiiuTv6XusbJOjPIHOHzw8WR7LEeY4r8PndyTFKzYF9Z9GwAhTrEmKTrL7k+0xDobxp3dsLZzq4zgWyzY5yiOaA+u5T6/gRUYJbHj/QS3bJKc7uBQvMbJVdrpFs+nunz94iVEcSpRbNJkGjpHAES1GuGW7FXMiGzjqZYXhJcTwWHFYErwOn9/hjTdHWjArMYKARZsSneTwJTuSEmWzGeGBa/MU3hFlckZygsQIEiPZZJdHspoZQcKcWYyKt/v9FreDxcF5WRCr8BFxNp/fHj9s9GAECQuKEBlrckawQvAE0QMPEJm1OE1RUYIkM4KEBbMY6VEcNlaQGEFGBG0pX1TX1eCKNlGMLDmjZbtt4EjBLD9s2HTbGHbYgMMqEUqUWzTJ/S+axEiP4oxgA8uykuCMt3v9Dq/P6nIyLEezIiOYRadHiYxghcBminxEjM2b7EhKlMwmGvGMKCHEUhSmKKa/YAoN/pmLRYsYGa04rOzAUMaInMVlTfI7fD6zy44Z9q5HBGHBLER4lAg7Kw47QceYIpQotxg4QnmT4HArkQ4u8B5eYmSb7HTyillyJdh9yfaEeNmkoMBhPtAreJEZHCSD/S0wSPZ/p1hEp0ex21hewrzMmiKVqChBkTEvY5bHiieteVvpY+kUYod/X5ju3eNmZ+Tdezze5/AlmSKH7nEJCxbJFa3YzIwgMbyIZZscFS2ZA/WRWXOE4gkeRJjlkWAxxQ7sXzvDCliyyp54xW5lOBHzEpYcJk+MZJYZTqAZUQh8Tfh89gS3qEj4nh89MSswkRnZXT0F1Qk0JfJ2lzkuyZ7kc3h9dq/P7vU7kuKkwKdzApbs5nifw+e3epwM5tHwQ5I1De9dvIRZRYqKd/iS7YnxokmkMY8DPdzkGNiokb4BJSwovN2tOCM4ScK8zPAyK9sVd7RktQxfRMK8SYhwm+OT7EmBCvvsXr8jMVZUTIxokaOGHSD9Q4SMGY4iEUlikrp/ITFJcff+6ooZjnV6MxvbM8sSSPqHkqcgY0bk7W6b1+/wepUIK8Js8HIn0SJFRcuOodVTOItLcbl4OTj7A+al4EDh9Tu8iSaHBfdfAs1ZnSa3W5AVzIlYcVqC70kw2QPvCbYPI1gll0eyKIODJC/SjNkxrXF8x2w7yz7o2isoUKBAeZjKz02e9xQJszyNAreFyIwgM5yIMEdjLjD/WzCj8iIaOtUqLyFm6CMxJczwQ2cvwAyPWIkRFYYbCLpS8MWB97ADi0iY4WjE0VjArDhszYG64f4BnRcR5mnc/2Z++FZgjkYcYgXMC2hgkZ9aeBHd/bRPCTEDU+FJmAlWCXFDtogTEDPkE3kRMcHmGrKZ/Vs9OEuBhJmBzRn8UMzw98xk0F8YjFIm1zzVkT2hJDI+iqFZGg2rLeYG2kHELI+GXrDEBe57Gb6xgZZnBMwO34ShFcYjTR0RaCgamyqX1HYtdTlMFMUEd1ZgCpNg8uzKrU5GOppCHI25u5uCFRlBYThx2EdzAhpok4E/owP7F/PB7WIH52wIdFcUOGM28nq44e0gIEYYtrMwh3lFjk+NnTS/evPGlPSRk+dgiwUPkP6W50UUqMDgbuXogd93eOHuHsUN/fXnribl7nrSLB7aGoNbLfHuOEukjdbp9eEGAyHYJq+Y+EJLYqwdYQHfs56RewUv3ttpB5e6+xi/Z9ff21WYgR06rIUxJwy22OAmiIN7Z/jEJ5jlh7SeiDDXP24EB6vhrSfed/S4a0f88AEiDA41gaOeFTHPUwa9Xu/0rtpS1VBlFhHNBv9r2OaPOGwOtpiAMI8HDz0JMzzNDHkAw0CnGnI6a/g4MDDyBD5awpzdkpLhKciPzs0Nlrx8T2oCL8t44JcLhrtrQqzgvgi04QgjZOBD7+n8nIAwh/hhlR8yU6uIGB5zIhpWw7t6xcj9DQ/rb0MWDO4LCSFk1BJ8wuSK5zampCiBCV379zj/8/a4OOwT7zpquMAuG/jnvfv37goPfunwEmKGfE/d5yCiWcU6fnHtpic9NolCwaYbUoZ84Q4MAiOPG/d+30mD+2Lop987Ft1Thh199zbL8K4yUp3lwM3YPzCb0b9XRIVTLJw00hPRRt6Wgd4+tDIjVA8PO/aHtPlAzxnxnfd5z8AuGDYIs4KYWF60eVNWcSz9w8+egQIFCpSHpfzY5Emzgp7EehJB+U0VA6G1+uNnLspbWZ9cPY40UDri16yPTqdnShZVdtVbFF5joO76L509Na2zK708URdm0P3qTfeAQlA6ijVXzs1qWJk5s8rsYNV6+tev1QOa3UCi5BLvgvmJ1ZUxJdUxs+qzu5rHVfsJitQaf/3q/WaKzkgbOY+jpDj+sYV565fFJFj1auKh6MkEpdXZIybMzFi5LGtpfebS+syl9VnLl2VMzkUc1hoe6t77owul1Ql8UqantiZ1VVP2/CLWQGp/1eHuly06A6HnbZFVU5yx0kM+4Dw8RWf8lb/y/s1CIK2RZtOrfLVZNEH/lroxFChQfvOFZoUfTp6i2SYo5oKikuLSssLiUii/nVJSWlRYmJudk5OZk5tbWFhSWlTyq9ansLBsbsP8thXVleUFRSV3/VdhzbQZrW0z5k0uzCv69Zvuwa1aXFqQm5uTlZ2TnZdf+Gu36g+VouKSgoLq2tXrl+x+YcWeXcue65lVP72wsLCgsOQhr/l/VCkpKCwpqV34+K5dq3Y9PXvRlMKCvILi0qJfv2KlhSWlRSXF+bm5uVk5OUNKbk5BYfHD3nt/dCnOz62d2Lhh+YE9yzatqa4qzP9tde+iktLCouK8nLzf2HZBGaGUlBaVlBbk5+fmFBT8do5QKFCg/MZLcUlZYXGJZLIKiuUHkicrKlEx8b0XL167du0qAKOq9/zFs+evXLkyQle7cunS2bOXLl66Ct3wl3f58vmzF0+dvnDq1IXTZ3rP9169As38C7t29erVKxd7T52+cOp074Xe4Cvgv8u1a1cunz974eSpC2fOXb585deuDgAAAPB/kWtXr165ciUu0Yd56Uec85TNhYWFRQAAAAAAAAAAwE8kmayCyfqD93k6aIZXq9WqH0GtVqvCQh754x/++MiY4D/BD1Gr1WqVKvTRP/3hD38aExL2izaaWq1WhYeN+fOjY/rXe+8rAAAAAAAAADBa1Go1hTnJYv/h5IlYAf1IFIHkCF9a7rgkJ83QNP1jl7sfmjZqwsJCA8I1BEVj/HPX+fChKYRMntTczLFOu2CgfnarDUERJMLWmGi3TAbXS1FYkl0xThtS68jfYmsCAAAAAAAAHi6s8G8kT8qoVYeHhISEhISGhGl0+iE5iTaq9XET1n14re/y0e40K08YyZ9TPZqiWD6mYOKUGTOmT5sxc2ZNrsvMGUnqRy2MMaIIbXiYRk885GmVIgmaj3p898k7t85vayhhVbof3Wq0UROuun+ApClCp1Wql+18df/aVBTYVZROzyRVNh7+cPe0WCulNtAPddsAAAAAAAAA/vP99ORJ6NQ4Km/SvMa169auW924tCwrhSERGTy5SRlUhqQpbZ990/fViW3ZNp4wkj/j/B1NGoySbcbhf/TX6/gLZT5TuNb4oxYmDMgcV/j4ouqMGEFv/HFp9ddBkQTio5fsO9fXd+W5xgo+XPujkidFUVhMrJkzbUp+pJEYoaFpitDpkidveO/s51sWpSscQVII0TRJklxSyfp3v+x9oz1DocP0D3PbAAAAAAAAAP7z/cTkSejVtqI57a+dvf5NX19fX9/3fXcunH7t8ewERqMnEaJpitBrCNmZll+RNy6aZuiB60ZpiiQIgqJpiiQJgiAIghx+TSlNUcRQRoKkKIqiGS4qo6ystGjyyq1vXfl8Z2mSotIZ71owuEaCpAbWSZHa8Ef5pJpdl67vXpAvPhKqJQiCIIZ85mBNCIIYXDBQU5KiaGrkit4PTZMEQVL0YH3I4Z9GkBSNaDq4mSQ5tG2MBoIwxWWXl+R5nKKefEBl+hejKaNOa2Asi185+/Gh1d7QcLXx7s+kjDrKN2H/J73vdE02G1WG/jiLEaVVaaSxsw5/cfXQulKFDjf8rDPTAAAAAAAAAPBAPyl5GrVhzpyFr565ferNjimZKd7ExMS0skWbN6woG2vS6AgaYYaXTCZZ4GiKIIdfE4s5QZJEliIRy0uKosgiR5MkRSGEEEYUQRA0FmRlKJHnMEI0bdSqHv39f1EZs3eeP7W7fHjypAiSorEgy4qiKDKPKYIgqMDHcZh0Z089cPbirgUlEQQSFEWRJZ7FNEII0aSRoFleVBRFUWRZYmiSIEkaIYQZXpJFFtMU4iVZURSJY2iS+KHTgjRiWFFWBEySCAuyYlJkkaFJIrhgYK0MRZAklmTFpCg8i4NrpRlelBRFFhiaJAh6aM7FmBdlkcM0RXOSrJgUmWdRYDGG4zlOccSsee3khy+tTkMMJyuKokg8218jUqe3TOh8/dSHO0qdjNYwfAsonVplrl7z10u9B6b7TUad4Ze8tRQAAAAAAAAAhvpJyVOvGpM0teWj6//cO99P/+n/e2RMqEpnoFhe5FhMkzo1E5fT8Ob1q1d6L5w7c/rDp+bbJGQkKIQQYdBG1a45+MZfmydNa9z+lxPXrl354t3nFuZGIiNB0jRppClb1ryNb3954drl3vNnTp04duLslTP71k1w0+F6CiFk1ISaihbtvnBy15DkiRGhJRlP5YKeN0+du3zt0sUv93fNzbGRpMZAOSZ1njjbe/ly76XLly/1Xrxw4cLFK9evnni7qc6l1hOk3iDY02dve+2DC5cuX7586uRHHcsqXYLBqNWQ1sQlL7z3SufqOTNW7P/8zJVrF4+91DwxUSD0DzrzSerVOK6k87UPdy+vq3ui5fWzl65dOvXulsUFTkwQhFFP2ePn7nrzpSXl3qKZHZ+eunT90vlXNq0cZ+J0pF6nTli0441z31zv7e29/PErjROTwrRGhBBlNBCKe/bTbx3e0jxn8hMvHj15+fqlLw50zkxRSJVK4538/Nunvr5+uffS5UvBLey9cunia01lEmMkKJoyqMjUWQeO9r7bXsZTBuKe6hMaFTd2+kuff/1OS6mF0f68G3IBAAAAAAAA4P76k2dUbPwLu1/s6+u7c+fO7du3R06ehC7Mnj5n/2f/+sdHOxaXp7kURhsSqtIYCAohTBl0TFTy9J5XDx7Y+/qnZ69eONgQISNDIHnq1e5J6z84+8/eC19fOP7OoRf3v/HR+Ss3jjbmRTE6dbheyJy16cTXN4+/8/rePXtfff/YtVs3e08f6ZyWZ6c1xvslT5pUE7jwiefOXew9+tcDe/e8/Mrbn129cbx7RhrWhMuFi1/Y8/Krf3vny95LJ4787eBLe/cdevUvuzbPzbdrdRpS8q988dOv/n7+ozf3vbRn/+sfnrz+j0v76/N5Q4jO4l3+8unrV/956eypD18/uP/Au6dvfn3kuaV+UvWA2yFJnQonVm179/SNqzcunTn+1sH9B1/96OLNbz7YPDeeDw9TU47EhQe/PPHJiXeOXj75t4P79r358dWvz/yltY7VaXRa94SV3Xtfe+XVNz7/5tLHXTOTQzUGhBBl1BOm6MefP37t6j8vnj179I1D+/e99cW1m0f3r0sjHg11FzX2vPj6a699dPLi2S8+Orz35Zf3Hzh0cH/n3EyBIUiKNqjVafO3fnLu88b8CGQcabpcShdOJ9U/88GV9zp8dtYA0RMAAAAAAAAwSgaTZ8KzO5+/ffv2jRs3bty4cZ/7PDGpUysZxQ0vvXvmm77rH+x/eunk2nFugTTqCBpjjCjSqNOM+fMfXQueeefk4VXOIckzakLbx2e/uf7JS9MLXMbfj+FyVr725bdvt+TLxBiVNXX5gd6vP95UHGX84+8fJeMKNh8//dammVGqUG1w3tURkielC6P9k1/45Nz76yotj/zv//k//p8/aOMW7vzszOtr0yINKq0u9M+/Z+PLd5++sGN6Gv27P4VpNBqN1kBQRo3BN7P702uXXl9XEyeFjfmziokq3Xj4i+ufPZ1tpnRyfP2Lp/tunt69frqbVoXqPZO3n7n+0a6pKUaV/r5nPUmdCieU9bx9/R+n32pbmGvShqn1vkWbPr5xevekVCVsjMEaM/eVm9d6jx9ePSEbGcJUFv/mMzfOvL0+Xas30KRRrwn9s0qKfvzdcx90PTY0eXpm7/j8zs3zBzbPj+O0oSpbZdex68demZ+JVFqDNjxUTUr1B06893x99J8eDVFrNBqNLnjLJqENt05sPXTq6LasCMFgGHGeJ1ofbsyrf+bTLw9NjTGTBiNccAsAAAAAAAAYFT8teSKMEKFTU9bYjAlzF21/8d3r394+9fb22bkuzhicFoem9VpVfP3O906+Nix5uid1fHyqd98Sr1qjJfThofG1z797/tiWyQoVFm5NWX6g96vDnYUW/R/+8IgxJq/n+Ln3n16YaBg4zXhv8qR04XpfXeN7V6/+9emN61ataW5Zt7qhZfv+ozfP758yNkKnMRg0YebkupdOX3hudo4UqjbSNE3TCBm14REzNh4+c/zpTBlpNEYaUZoxqvT52z69enz1WJlUYpbuv3LjzY7sSO2j4Vo1ktJW/OXbz/fPy1HC7/+sE1KnwollW9//9sTTk+0oRGUwqkPIpOq2Yzc+WFEcq/+z1hq/4O3rnz+7JFf/hxADSdE09pfNmFqdZSdJEtEIkQYtZU+qP3JP8py/69zNI9vKYnSPhOs0FJuwaM/XX/z1yRJbuI6kjAZasC8/9MWR3cuS1Fo9FdxChBBCBk1Y9JyeN8+/2xZnZXT3OZ9p0ISkzOr+8Ny7SxLtlB6SJwAAAAAAAGB0/MTkSVMUSZKEQa8ODwljWXPm1NWvnfnXV6+s8dmQNni2zaBTJ4yYPD/44vzmyVaaNFB6tTpp0q4jFz7tmWBidSEaPnN295dXvvrs8Cu7Xth98Mjxv3/zWc/cTMPg4z7uTZ6kLhyNm9J65Oo///GdciRWAAALu0lEQVTtP/51+87t23fu3Ln13T+/+/bsgbkZUaTGYNCGW1Lq9p658OzsbClUTQRXZdCExc3f9ta5N9a4FDoQyfSqR5Nnbvr4wvn2IjNpill28OqpvSvSrI9qdEYNNmU1Hv77sX1zsqTB5ElTBGE0GomBnBdIntve//bD7tooPkxPUNowQ3xF44fn328ojtH9WWtNXPTOmfc3PpY8RmPACCFE69Vh4aqB53BSRh3t8I6QPBe8eOHsX9ryIx5V60ktLfif2HfzxOtPFFnCdSRFGJHoaPjLF+/tWpao1g6fI8igCfPM7n7j3Hvt8Vb2/skzNHV2z4fn3lmUYIPkCQAAAAAAABgtPyl50jTDC6LAIVKn02q1YaF//N0Yy5SOt/9+7eB4r82gM5BGvVYbOuYR94Jn3v3yleVmpA1VaQmSJoPJ88JT0yPuTp5IFcpFz+h87bPjx44d++zCxfNffrpv1YxkjiYNFMII0aRRpw175HdszrznL3y5szAa/3FMmIGgDOpwT8Wyt04c2zCzMMYV6XIHeGKinWaRQxRt1IZbUmpePPn31xqr7Jo/h6k1Wp3OSOq1Ya5Zm9/o/erwnDizLjRMpVGHh/PVa/edufbOvBjBKMUuP3j1zP7VGfbQkZMnTSPESIrZYpIwgwL3Tw4mz65aG/nHMaFhIQZb1ZpXb57eP3mcecwYvS1x0TvnPuyePTZMYxi+BzCmSYNeHfqoRo5Z8N659zdMif/dIyE6A0Eagsnz/Gsdha7Q+yRP25MHzn3+SmceHx6q0mi1Wn0wZJI6lVC9Zu8Xn+8ui5IIPTFSqiS1Kq585YtfHH+p2q0QhhHfAwAAAAAAAAA/209JnkZNeOSk+k27nl8xdZzfG5cQ7/dmPb761ZPXr7/ZmhLJagy05Ij2++JjPeUt+z46/dbG/HR/fGy0Q2ENOtX9kqdIhDDxJc8eu/TXZxqn1+bkF2ZlZqT5vLEmmaMIA4kQa3YmJsXHuDJmNh28ePrg3Mp0T0ysxy6S+nAmvmLb25dOvtE5oTw2yh3l8URHx8RGWkQGETRCpF5NRhd0vvPNN++9sDBvXGJ8ki8xLtLM6jVqb13rR1e/u7h3VaU/PtrtK5zd+f7Fr86/sNTFarWmhIYHJU/KYECu5Gl73z159pNddZlOvcZAD1xte+Tm5y+0FqbERcV5SxZu/PzKvz7aMS9ODgtXUfdNnjRF8WZ3XEJinDensuXj80efbahxxSQkuG0sqTMqD0qeNEkYWVN199Fvz32yeUZ5cmxCks8bG6lgRNMIGTVh8dM7Pzp3rqfGTY84My+pUcsZa/d9eeX1lbEWpDf+0INjAAAAAAAAAODf81OSJ6FXyRnT2/564cY3t+7c6fv++1t37nx1+eTnO2bVeBi9KhTbilre7uvr+/7727dv3bp163ZfX1/ftY/XVdvHhIRGz9jy5ZVvd82JpEkDpVOp/DMOnfj2/LPTTChMzcTM6nzn5u1bN7/67tu///Nft27/819fv7G/scDD6cMNlmnbrv+jr6+v7/btW/+6detOX1/frZt/acgkCYNOjfyVy/eduP5N3/fff3/nzp07fX19Xzw/32sK0RIIkQaV4Kpeubv3yu3v7/T19fX13fxi01R3uFar17ontO7+7Nq3fXf6vu+7c/u7C5/t7x4faSPDQ412/7q37tx8ozXHEaLWGtXYnNf2ft/Fvy3Kk8O0JKJJrYHzVred/a6vr+/4mho/HaYj+2cY6v7bxVvffXfrTl/fne9vffP12Vd6av2WMK3BqKPsvmXHvjn5zIL0UPXw5KlXqXzT93/+976+vjvBZrvd19d3ad/SWEmlEqKXvvLt349sKXWHqHSkhhZSV/6t7/IHK8usgcroaSaqeuWRYzdu/avv+76+vr7vP95UIzNGgqJpQquNqnjm7TOf7p4bSRPE8MerIoyM4eGmnHmvnrq+Z1G6RGl+8ImlAAAAAAAAAPBvGil5fvXVVyNfbYtpow4r8XlTFqxpbmpraVnb1LRgUm6qoCcNJEkZsBRbMqe9rbW5ualp3bp169Y1t65vXbmgKEnS6nSW1Or6hsaJaQpNkTRhMESkTl/S+OT4ZI7SIyH1iaf+8sYHL6xeumrlqnVrGtd0dO0/c+ObN9qnuIyhyF+zcm1La0twpU3Nra3rVs/Ii6IoiqZJvRo7syfOX9fS0tLc3NTUur6zfmKGQ9ARVKC+Wlp0l01Y0dzU2tLW3ra6vjLFbCAomjLoxaic8Y83N7e1tjWtXVYz1sHoNAaSNNJSRNHsplWzSjyyzkCQBixEl85vWzYrM5rTExRCiCQo2ZI0Y9GapienxbrEwC2UgeS5+Z3rve+/2NW2et26lsb5j2VFW5HWSCOaJGjJkbtodX1dpqt/7tl+pMHgSJ22eM2G9tam4BY2tbStb5iaY+UMBtaSM6OxcV51vFlnICgjzUbmz2ppmJ8fLwYqQ1MEQbHenDmrVrW2tLa0tjQvqPRymKRoGiHaqMFpy148c/HIqnSLZvgFtzSh1dL2KZ3vn/1gc6kb6+4/eRIAAAAAAAAA/Fw/cYYhhGjSoFOHh4aGhoSEhIaGhqt1ehLRCCGEEU3oVIGXA0JCQkLCVDojjTGmDNrwsFBNYBocjDFpUIeHhml02nCcVNJ8vK93b0Me+bv/8z//3//63//r956M+W/f7Dv61JxEMVSj1YaFhgyuNiQkJDRUrR9ISjShU4cHaxMaEjImXGOg6OC8PQhhmjJq1WEhoSEhISEhoeFaIzU4p48mPCSwYJhGT1AII4QxokmdKiRUFXxOTHCjwlR6on+lGFGUUR0eGhKmNpLBF4P3eX7wjw86y2Ttf/3hkZDQcJXO2P8sE4xoUh8eGq4xkAM16xdsirvaLUytp2iMEaVXh4aqtAQVqAwi9cMrgxCiKYNOFWjskJBQlXZwoiCK1OvtqRsPn/l032q/oBvSZqRGS0fXtn558VT3zGTSoCLou6sFAAAAAAAAAL+Yn5w8f2GUXk1FZy8+fPWry8c/Pnzg0Mv79x3Yf+j9z0/3fnloUZGT0Bv+Iy4CJXUqnFSx4+jtY09N8gjheuKHF/lvQRNaTWT6ijcvnz3UM9ElGIwUQjRlJChr/uz9J0+8vn6ylTRoIHcCAAAAAAAARtWvnTwRTZM0pSTXNmz/65dnT13ovdh77sKZ1w90Tc6JoUjDf8rNh6RejeMKO145+3pblYtXGR6W5IlomtJrxPTqhs1dS3yE3kAjhCi9no3PXbR1y4qxtFFrIBHkTgAAAAAAAMCo+tWTJ0KIJkmCpFlBkiVZlmVZlngOkwRBUv9BmYhGmBUkWRJYjB6up5PQNEkSiOM4ZqBeNGIwxzGYIkg43QkAAAAAAAAYdQ9D8kQIIZoiSWIAGZgi5z8LTZMEQZAPY8VpmiKpYc9VufcVAAAAAAAAABgt/cnTFRO/68U9fX1933333XffffffnjwBAAAAAAAAAPxW9SfPmCTf8hUrDx06uGfPnj179kDyBAAAAAAAAADwC+lPnnG+5LnzH+/u7u7o2NDRsQGSJwAAAAAAAACAX0h/8oxOSFq/YeOxY8eOHHn/yJH3IXkCAAAAAAAAAPiF9CdPT3xiZ1f3yZOnjh795OjRTyB5AgAAAAAAAAD4hUDyBAAAAAAAAAAwuiB5AgAAAAAAAAAYXZA8AQAAAAAAAACMLkieAAAAAAAAAABGFyRPAAAAAAAAAACjC5InAAAAAAAAAIDRBckTAAAAAAAAAMDoguQJAAAAAAAAAGB0QfIEAAAAAAAAADC6IHkCAAAAAAAAABhdkDwBAAAAAAAAAIwuSJ4AAAAAAAAAAEYXJE8AAAAAAAAAAKMLkicAAAAAAAAAgNEFyRMAAAAAAAAAwOiC5AkAAAAAAAAAYHRB8gQAAAAAAAAAMLogeQIAAAAAAAAAGF2QPAEAAAAAAAAAjC5IngAAAAAAAAAARhckTwAAAAAAAAAAowuSJwAAAAAAAACA0QXJEwAAAAAAAADA6LpP8vz/AVm8pAxGJ0/kAAAAAElFTkSuQmCC&quot; alt=&quot;&quot;&gt;
&lt;ol start=&quot;2&quot;&gt;&lt;li&gt;&lt;b&gt;Thread-Safe 보장&lt;/b&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;code class=&quot;code-inline&quot;&gt;getInstance()&lt;/code&gt; 함수가 실행되면 Static으로 선언된 Holder 클래스는 JVM의 Class Loader 에 의해 메모리에 적재됩니다.&lt;/p&gt;&lt;p&gt;Holder는 Singleton 클래스의 인스턴스를 가지고 있으니 Thread-Safe를 붕괴할 수 있는 경우는 &lt;mark&gt;Holder 클래스가 Class Loader에 의해 메모리에 적재될 때 중첩되어 Load되는 경우&lt;/mark&gt; 뿐입니다.&lt;/p&gt;&lt;p&gt;하지만 Class가 초기화되는 과정은 Java Language Specification (JLS)에 의해 시퀀스하게 진행됩니다. &lt;/p&gt;&lt;p&gt;그래서 &lt;code class=&quot;code-inline&quot;&gt;synchronized&lt;/code&gt;로 실행했을 때처럼 Lock을 제공하지만 더 좋은 성능을 보장하는 방법을 제공합니다.&lt;/p&gt;&lt;p&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;긴 글 읽어 주셔서 감사합니다.&lt;/p&gt;&lt;p&gt;공감 버튼은 작성자에게 큰 동기부여가 됩니다. &lt;/p&gt;
        &lt;/div&gt;
        &lt;script type=&quot;text/javascript&quot;&gt;
            (function() {

    var doc_ols = document.getElementsByTagName(&quot;ol&quot;);

    for ( i=0; i&lt;doc_ols.length; i++) {

        var ol_start = doc_ols[i].getAttribute(&quot;start&quot;) - 1;
        doc_ols[i].setAttribute(&quot;style&quot;, &quot;counter-reset:ol &quot; + ol_start + &quot;;&quot;);

    }

})();
   &lt;/script&gt;

        
    
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Computer Science/디자인 패턴</category>
      <category>singleton</category>
      <category>Singleton java</category>
      <category>Singleton Thread Safe</category>
      <category>디자인 패턴 싱글톤</category>
      <category>싱글톤</category>
      <category>싱글톤 Java</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/98</guid>
      <comments>https://ssoonidev.tistory.com/98#entry98comment</comments>
      <pubDate>Wed, 2 Jan 2019 21:15:37 +0900</pubDate>
    </item>
    <item>
      <title>아이패드로 티스토리 마크다운 글쓰기 - Tistory with Bear</title>
      <link>https://ssoonidev.tistory.com/99</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;note-wrapper&quot;&gt;&lt;blockquote&gt;&lt;p&gt;이미 에버노트 앱을 통해서 티스토리에 글을 업로드 할 수 있지만,&lt;/p&gt;
&lt;p&gt;에버노트는 마크다운을 지원하지 않아 글을 이쁘게 작성하기가 어려움이 있다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;(사실 에버노트나 티스토리에서 마크다운을 지원하기만 했어도 이런 뻘짓은 안했다)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Bear 앱 유료 구독에는 &lt;mark&gt;Html Export 기능&lt;/mark&gt;이 있는데 이 기능을 사용해서 티스토리 글을 작성하는 삽질의 과정을 소개하고자 합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;h2&gt;한 달동안 써본 Bear App 좋은 점&lt;/h2&gt;
&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C89A415C23970C28&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C89A415C23970C28&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;사진 2018. 12. 26. 오후 10 16 56.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot; original=&quot;yes&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;이 글도 Bear 앱으로 작성하였습니다.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;베어 앱을 한 달 가까히 쓰면서 느낀 장점들을 간단하게 소개하겠습니다.&lt;/p&gt;
&lt;p&gt;오늘은 베어 앱을 활용해서 티스토리 블로그를 작성해보는 것이 목적이니까 간단하게 소개하고 넘어 가고,  계속 사용하면서 느낀 점들을 소개하는 시간을 가져 보도록 하겠습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;ol start=&quot;1&quot;&gt;&lt;li&gt;마크 다운 문법을 지원한다.
&lt;/li&gt;&lt;li&gt;태그를 지원하여 검색하기가 편하다.
&lt;/li&gt;&lt;li&gt;코드 하이라이팅을 지원한다.
&lt;/li&gt;&lt;li&gt;이쁘다. 마크다운이 적용된 서식들이 이뻐서 글을 작성하는 재미가 있었다.
&lt;/li&gt;&lt;li&gt;몇몇의 마크 다운을 몰라도 단축키가 잘 구성되어 있어서 쓰는데 문제는 없었다.
&lt;/li&gt;&lt;li&gt;유료 버전을 사면 추가적인 테마와 다른 애플 기기랑 연동도 가능합니다.
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;(물론 필자는 아이패드 뿐이라 해당사항은 없습니다.)&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;테스트 : 코드 텍스트&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;code-multiline&quot; lang=&quot;python&quot;&gt;&lt;span class=&quot;sf_code_keyword&quot;&gt;import&lt;/span&gt; pandas &lt;span class=&quot;sf_code_keyword&quot;&gt;as&lt;/span&gt; pd
&lt;span class=&quot;sf_code_keyword&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;sf_code_builtin&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sf_code_string&quot;&gt;&quot;myfile.txt&quot;&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;sf_code_keyword&quot;&gt;as&lt;/span&gt; f&lt;span class=&quot;sf_code_punctuation&quot;&gt;:&lt;/span&gt;
	&lt;span class=&quot;sf_code_keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;sf_code_punctuation&quot;&gt;(&lt;/span&gt;f&lt;span class=&quot;sf_code_punctuation&quot;&gt;.&lt;/span&gt;readlines&lt;span class=&quot;sf_code_punctuation&quot;&gt;())&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;코드 텍스트의 하이라이팅은 나름 만족스럽네요.  &lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;문제점 1 : 사진&lt;/h2&gt;&lt;p&gt;HTML 로 Export를 했을 때 문제점은 바로 &lt;mark&gt;사진을 함께 Export가 안된다&lt;/mark&gt;는 점.&lt;/p&gt;
&lt;p&gt;아이패드에서 티스토리로 사진을 깔끔하게 올리는 방법은 &lt;mark&gt;에버노트를 거쳐서 올리는 방법이 현재로써는 최선&lt;/mark&gt;으로 느껴진다. &lt;/p&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;p&gt;현재는 초안을 아이패드로 작성을 하고 PC에서 사진을 넣어주는 방법을 우선적으로 사용하였습니다. &lt;/p&gt;
&lt;p&gt;사진을 넣는 방법을 조금 더 고민을 한 후에 추가하겠습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;h2&gt;문제점 2 : 전역 Style&lt;/h2&gt;&lt;p&gt;HTML 스타일을 변경하는데 이 스타일이 지역적으로 변경되는 것이 아니라 전역으로 변경되는 문제점이 있었다.&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;code-inline&quot;&gt;&amp;lt;div&amp;gt;&lt;/code&gt; 클래스로 본문이 감싸져 있긴 하지만, CSS Selector 들이 클래스 내부의 요소들이 아닌 전역으로 설정되어 있어서, 블로그 페이지의 다른 요소들에도 스타일이 영향을 받는 것을 확안을 하였다.&lt;/p&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;나름의 프로세스를 만들어 보았다.&lt;/h2&gt;
&lt;ol start=&quot;1&quot;&gt;&lt;li&gt;우선 전역으로 설정된 CSS를 &lt;code class=&quot;code-inline&quot;&gt;&amp;lt;div&amp;gt;&lt;/code&gt; 클래스에 상속하는 태그들에 대하여만 스타일이 적용되게끔 Selector를 변경한 CSS 파일을 만들었습니다.
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;그리고 해당 CSS 파일을 티스토리 스킨에 반영하는 작업을 수행하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/994A72345C239D5C02&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;bear_markdown.css&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;txc-file&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99FF9C3A5C23950B38&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99FF9C3A5C23950B38&quot; width=&quot;500&quot; height=&quot;273&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;스킨 편집화면에서 위의 CSS 파일을 넣어 줍니다.&lt;/p&gt;
&lt;p&gt;그리고 HTML 편집 화면에서 아래의 코드를 추가로 넣어줍니다.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;code class=&quot;code-inline&quot;&gt;&amp;lt;link href=&quot;./images/bear_markdown.css&quot; rel=&quot;stylesheet&quot;&amp;gt;&lt;/code&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;이 작업은 딱 한 번만 수행하면 되는 작업이라 귀찮지만 조금 참고 진행해보았습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;ol start=&quot;2&quot;&gt;&lt;li&gt;베어에서 HTML로 Export를 합니다.
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;어떤 곳으로 보낼 것인가 선택을 하게 되는데 이 때 HTML 코드를 &lt;mark&gt;복사하는 기능&lt;/mark&gt;을 사용하는 겁니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;HTML로 내보내는 과정&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99653D425C2397D324&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99653D425C2397D324&quot; width=&quot;500&quot; height=&quot;208&quot; filename=&quot;사진 2018. 12. 26. 오후 10 22 25.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;작성하던 글에서 i버튼을 누릅니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9920D2425C2397D426&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9920D2425C2397D426&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;사진 2018. 12. 26. 오후 10 41 35.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;가장 아래 HTML을 선택합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A89E425C2397D529&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A89E425C2397D529&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;사진 2018. 12. 26. 오후 10 42 00.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;복사하기를 누릅니다.&amp;nbsp;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;&lt;li&gt;아이패드에서 티스토리에 접속을 하여 새로운 글을 작성합니다.
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;이 때 에디터에 HTML 체크 부분을 체크한 후 앞서 복사한 HTML 코드들을 붙여 넣기를 합니다.&lt;/p&gt;
&lt;p&gt;붙여넣으면 &lt;code class=&quot;code-inline&quot;&gt;&amp;lt;HTML&amp;gt;, &amp;lt;Head&amp;gt;&lt;/code&gt; 와 같이 글과 무관한 태그들이 붙어 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996F684A5C2398A736&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996F684A5C2398A736&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;그림3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;불필요한 이 태그들을 지워주는 작업이 필요한데, &lt;mark&gt;Tistory 에디터의 HTML 체크를 해제하였다가 다시 체크를 하면 불필요한 태그들이 사라져 있는 것을 볼 수 있어요.&lt;/mark&gt;&lt;/p&gt;
&lt;p&gt;내부적으로 제거를 해주는 스크립트가 포함된 에디터 덕분에 일은 조금 덜었네요.&lt;/p&gt;
&lt;br /&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C1044B5C239A3F06&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C1044B5C239A3F06&quot; width=&quot;500&quot; height=&quot;523&quot; filename=&quot;그림4.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;ol start=&quot;4&quot;&gt;&lt;li&gt;제일 마지막 &lt;code class=&quot;code-inline&quot;&gt;&amp;lt;sytle&amp;gt;&lt;/code&gt; &lt;mark&gt;태그 부분을 모두 제거&lt;/mark&gt;합니다.
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;앞서 생성한 CSS 파일 덕분에  해당 부분이 없어도 스타일이 적용되어 올라갑니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9938CF465C239AD20C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9938CF465C239AD20C&quot; width=&quot;500&quot; height=&quot;326&quot; filename=&quot;그림7.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;h2&gt;마치며..&lt;/h2&gt;
&lt;p&gt;베어에서 글을 작성하는 과정들을 소개드렸는데요.&lt;/p&gt;
&lt;p&gt;&lt;mark&gt;HTML로 내보내는 기능이 월 구독료 1500원을 지불해야 사용이 가능한 기능&lt;/mark&gt;이라 사용할지 말지 고민이 될 수도 있겠습니다.&lt;/p&gt;
&lt;p&gt;저 역시 고민을 했지만  &lt;mark&gt;자기 계발의 결과를 메모하기 위한 용도로 이 앱을 사용하는 중이며, 그 내용을 기반으로 블로그를 작성할 생각&lt;/mark&gt;이라 1500원은 투자다 생각하고 사용할 예정입니다.&lt;/p&gt;
&lt;p&gt;물론 사진을 직접 올리지 못하는 단점이 있지만 계속 삽질하면서 프로세스를 확장해 나갈 계획이다.&lt;/p&gt;
&lt;p&gt;부디 티스토리 에디터에서 마크다운을 부디 지원해주어서 이런 삽질 없이 블로그를 작성할 수 있었으면 좋겠습니다.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;mark&gt;공감 버튼은 작성자에게 큰 힘이 됩니다&lt;/mark&gt;&lt;/p&gt;

        &lt;/div&gt;
        &lt;script type=&quot;text/javascript&quot;&gt;
            (function() {

    var doc_ols = document.getElementsByTagName(&quot;ol&quot;);

    for ( i=0; i&lt;doc_ols.length; i++) {

        var ol_start = doc_ols[i].getAttribute(&quot;start&quot;) - 1;
        doc_ols[i].setAttribute(&quot;style&quot;, &quot;counter-reset:ol &quot; + ol_start + &quot;;&quot;);

    }

})();
        &lt;/script&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>눈누난냐/Tistory</category>
      <category>마크다운 아이패드</category>
      <category>아이패드로 티스토리 글쓰기</category>
      <category>티스토리 마크다운</category>
      <category>티스토리 아이패드</category>
      <category>티스토리 아이패드 베어</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/99</guid>
      <comments>https://ssoonidev.tistory.com/99#entry99comment</comments>
      <pubDate>Thu, 27 Dec 2018 00:28:39 +0900</pubDate>
    </item>
    <item>
      <title>[Python]DBSCAN 클러스터링 (with 카톡 대화)</title>
      <link>https://ssoonidev.tistory.com/96</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); background-color: rgb(0, 0, 0); padding: 10px;&quot;&gt;&lt;p style=&quot;box-sizing: border-box; margin-right: 0px; margin-left: 0px; font-family: &amp;quot;KoPub Dotum&amp;quot;; text-align: justify; color: rgb(51, 51, 51); font-size: 14px; line-height: 1.8; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; font-size: 12pt; color: rgb(255, 255, 255);&quot;&gt;Github &amp;gt;&amp;nbsp;&lt;/span&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;a href=&quot;https://github.com/ssooni/data_mining_practice&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;box-sizing: border-box; background-color: transparent; color: rgb(153, 153, 153); text-decoration-line: underline; transition: color 0.2s ease-in-out 0s;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; font-size: 12pt; color: rgb(255, 255, 255);&quot;&gt;https://github.com/ssooni/data_mining_practice&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin-right: 0px; margin-left: 0px; font-family: &amp;quot;KoPub Dotum&amp;quot;; text-align: justify; color: rgb(51, 51, 51); font-size: 14px; line-height: 1.8; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;box-sizing: border-box;&quot;&gt;- 자세한 소스코드는 Github에 올렸습니다.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin-right: 0px; margin-left: 0px; font-family: &amp;quot;KoPub Dotum&amp;quot;; text-align: justify; color: rgb(51, 51, 51); font-size: 14px; line-height: 1.8; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;box-sizing: border-box;&quot;&gt;- 데이터 파일도 올려 드리고 싶지만 실제 카카오톡 대화내용이라 일부분만 올렸습니다.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin-right: 0px; margin-left: 0px; font-family: &amp;quot;KoPub Dotum&amp;quot;; text-align: justify; color: rgb(51, 51, 51); font-size: 14px; line-height: 1.8; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;box-sizing: border-box;&quot;&gt;- 소스코드는 짬짬히 업로드할 예정입니다.&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br style=&quot;box-sizing: border-box; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 13px;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(255, 0, 221); background-color: rgb(255, 217, 250); padding: 10px;&quot;&gt;&lt;p style=&quot;box-sizing: border-box; margin-right: 0px; margin-left: 0px; font-family: &amp;quot;KoPub Dotum&amp;quot;; text-align: justify; font-size: 13px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;b style=&quot;box-sizing: border-box;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; font-size: 10pt;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;이전 시리즈&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; box-sizing: border-box; font-family: &amp;quot;KoPub Dotum&amp;quot;; text-align: justify; font-size: 13px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; background-color: transparent; text-decoration-line: underline; transition: color 0.2s ease-in-out 0s; font-size: 10pt;&quot;&gt;&lt;a href=&quot;http://ssoonidev.tistory.com/88&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;color: rgb(153, 153, 153); box-sizing: border-box; background-color: transparent; transition: color 0.2s ease-in-out 0s;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; color: rgb(0, 0, 0);&quot;&gt;1. 형태소 분석기 Kkma 적용하기&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; box-sizing: border-box; font-family: &amp;quot;KoPub Dotum&amp;quot;; text-align: justify; font-size: 13px;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; background-color: transparent; transition: color 0.2s ease-in-out 0s; font-size: 10pt;&quot;&gt;&lt;a href=&quot;http://ssoonidev.tistory.com/89&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;color: rgb(51, 122, 183); box-sizing: border-box; background-color: transparent; transition: color 0.2s ease-in-out 0s;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; color: rgb(0, 0, 0);&quot;&gt;2. 워드클라우드&amp;nbsp;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;http://ssoonidev.tistory.com/89&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; box-sizing: border-box; font-family: &amp;quot;KoPub Dotum&amp;quot;; text-align: justify; font-size: 13px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&lt;a href=&quot;http://ssoonidev.tistory.com/93&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;3. Word2Vec 관련 키워드 찾기&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br style=&quot;box-sizing: border-box; font-family: &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;클러스터링&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;비지도학습의 대표 주자인 클러스터링은 각각의 노드들의 군집들을 산출해줍니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;그 중에서 가장 간단한 게 &lt;b&gt;&lt;u&gt;K-means 알고리즘&lt;/u&gt;&lt;/b&gt;이고, 때마침 학교에서 공부한 적이 있으니까 해봐야겠다는 생각을 했습니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;하지만 &lt;b&gt;&lt;u&gt;이 알고리즘은 클러스터가 몇 개 나올것이다는 것을 제가 직접 설정해야 하는 점이 마음에 안들었습니다.&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;지금 Input으로 들어오는 벡터는 300차원이라 어디에 군집에 형성되어 있는지 짐작하기 어렵기 때문에 K-means 알고리즘은 사용하기 어렵다고 판단하였습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;저는 &lt;b&gt;&lt;u&gt;군집 갯수를 사전에 설정하지 않아도 군집을 산출해주는 알고리즘이 필요&lt;/u&gt;&lt;/b&gt;했고, 그 결과 DBSCAN 알고리즘을 선정하였습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;DBSCAN&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;DBSCAN은 밀도 기반의 클러스터링 기법입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;DBSCAN의 클러스터는 아래&amp;nbsp;두 가지 조건에 의해 생성됩니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;1. 이웃하는 점들의 간격이 &lt;b&gt;사용자가 정한 거리(eps)&lt;/b&gt;&amp;nbsp;이내에 있는 경우를 산출&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;2. 군집에 포함하는 점들이 &lt;b&gt;최소 클러스터 원소 수(min_samples)&lt;/b&gt;보다 많은 경우를 산출합니다.&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; background-color: rgb(254, 222, 199);; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996DE2355C1F133831&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996DE2355C1F133831&quot; width=&quot;500&quot; height=&quot;409&quot; filename=&quot;그림1.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;background-color: rgb(254, 222, 199);&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;min_sample = 3 인 경우&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;Core Point는 1번 조건과 2번 조건을 모두 충족하는 Point를 의미합니다. (빨간 점)&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;Non-Core Point는 1번 조건을 만족하지만 2번 조건을 만족하지 못하는 Point입니다. (파란 점)&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;Non-Core Point는 Cluster를 이루는 경계 점 역할을 합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;Noise는 2개의 조건을 모두 만족하지 않은 경우로 클러스터를 구성하지 않습니다.&amp;nbsp;(녹색 점)&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;이런 방법으로 클러스터를 찾는 것의 장점은&amp;nbsp;&lt;b&gt;클러스터의 갯수를 지정할 필요 없다&lt;/b&gt;과 &lt;b&gt;원형이 아닌 클러스터도 추출이 가능&lt;/b&gt;하다는 점입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;다른 알고리즘은 클러스터의 중심점을 이동&lt;/u&gt;&lt;/b&gt;하면서 클러스터 중심점 내부에 몇개의 점이 들어 있는 가에 집중되어 있기 때문에 클러스터의 모양이 필연적으로 원형으로 형성됩니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;하지만 DBSCAN은 각각 개별 포인트 간의 거리를 측정하면서 Non-Core Point에 의해 클러스터의 경계가 형성되기 때문에 원형이 아닌&amp;nbsp; 모양의 클러스터도 형성이 가능하다는 점이 장점입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;하지만 &lt;b&gt;데이터에 대한 충분한 이해도를 가지고 있지 않는다면 eps와 min_points 값을 정하는 것이 어려운 것&lt;/b&gt;이 단점입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;다른 알고리즘은 단순히 10개의 분류를 만들어 달라 하면 10개를 만들어 주기 때문에 데이터 내부의 값들을 이해하지 않아도 충분히 클러스터를 만들어 낼 수 있습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;하지만 DBSCAN은 적어도 포인트 간이 이루는 최대 거리가 얼마인지 정도는 파악해야 유효한 클러스터를 만들어 낼 수 있습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;Word Vector Clustering&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;워드 백터를 클러스터링하면 어떤 결과가 나올까? 하는 의문에서 시작하였습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;모든 코드는 GitHub를 참조바랍니다.&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;30&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;31&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;32&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;from&lt;/span&gt;&amp;nbsp;sklearn.cluster&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;DBSCAN&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;from&lt;/span&gt;&amp;nbsp;gensim.models&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;Word2Vec&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;def&lt;/span&gt;&amp;nbsp;cluster(eps,&amp;nbsp;min_sample):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;Word&amp;nbsp;Vector를&amp;nbsp;Load&amp;nbsp;합니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;Word2Vec.load(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;./result/embedding.model&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;word_vector&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;model.wv.vectors&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;match_index&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;model.wv.index2word&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model.init_sims(replace&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;True)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;두&amp;nbsp;글자이상&amp;nbsp;한글인&amp;nbsp;경우만&amp;nbsp;사용&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;han&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;re.compile(r&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;[가-힣]{2,}&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;DBSCAN&amp;nbsp;알고리즘&amp;nbsp;적용&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dbscan&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;DBSCAN(eps&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;eps,&amp;nbsp;min_samples&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;min_sample)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;clusters&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;dbscan.fit_predict(word_vector)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;df&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;pd.DataFrame(clusters,&amp;nbsp;columns&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;cluster&quot;&lt;/span&gt;],&amp;nbsp;index&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;match_index).reset_index()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;df.columns&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;word&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;cluster&quot;&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;print&lt;/span&gt;(df.head())&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;한글만&amp;nbsp;필터링&amp;nbsp;처리&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;df&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;df[df[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;word&quot;&lt;/span&gt;].apply(lambda&amp;nbsp;x:&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;len&lt;/span&gt;(han.findall(x))&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#c10aff&quot;&gt;0&lt;/span&gt;)]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;노이즈&amp;nbsp;포인트&amp;nbsp;제거&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;df&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;df[df[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;cluster&quot;&lt;/span&gt;]&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;1&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;print&lt;/span&gt;(df.groupby([&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;cluster&quot;&lt;/span&gt;]).count())&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;df.to_excel(pd.ExcelWriter(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;./result/cluster.xlsx&quot;&lt;/span&gt;),&amp;nbsp;index&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;False)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;line 15-16&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;본격적으로 DBSCAN 알고리즘을 적용하는 부분입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;eps와 min_samples를 정하여 넣어준 후 line 16에서 word vector를 클러스터링 해주었습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;fit_predict 함수를 사용하면 &lt;b&gt;&lt;u&gt;클러스터링된 결과를 리스트로 산출&lt;/u&gt;&lt;/b&gt;해줍니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;이 때 &lt;b&gt;&lt;u&gt;-1은 노이즈 포인트&lt;/u&gt;&lt;/b&gt;를 의미합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;line 23-27&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;클러스터링 후 데이터를 일부 처리하였습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;2글자 이상의 한글만 유효한 결과로 선정하였으며, 노이즈 포인트도 제거 하였습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;이 프로그램을 실행하면 아주 허접한 그래프를 보여주었습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9938B9395C1F21F411&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9938B9395C1F21F411&quot; width=&quot;500&quot; height=&quot;272&quot; filename=&quot;그림2.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;클러스터링을 했을 때 &lt;b&gt;&lt;u&gt;종결 어미나 일자, 직책 같은 정보를 담고 있는 클러스터를 보고 신기했습니다.&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;뭔가 클러스터링을 하면 전체적인 주제를 알 수 있지 않을까? 생각 했지만 아쉽게도 그런 정보는 나타나질 않았네요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;찾아 보니까 LDA라는 걸 사용하면, 토픽 모델링이 가능하다고 하는데 다음번엔 그것을 시도해볼까합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;긴 글 읽어주셔서 감사합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;공감 버튼은 작성자에게 큰 동기부여가 됩니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Data Mining</category>
      <category>clustering</category>
      <category>DBSCAN</category>
      <category>DBSCAN 클러스터링</category>
      <category>Word Vector 클러스터링</category>
      <category>데이터마이닝</category>
      <category>비지도 학습</category>
      <category>클러스터링</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/96</guid>
      <comments>https://ssoonidev.tistory.com/96#entry96comment</comments>
      <pubDate>Sun, 23 Dec 2018 14:54:35 +0900</pubDate>
    </item>
    <item>
      <title>[대학로 연극] 크리미널 시즌 4 리뷰</title>
      <link>https://ssoonidev.tistory.com/95</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); background-color: rgb(0, 0, 0); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;연극의 줄거리보다 연극이 재밌는지 궁금한 분들을 위한 &lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;선 요약&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;1. 추리와 스릴러 장르다운 긴장감있는 사건 전개&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;2. 놀래키는 장면이 많지 않아서 좋았습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;3. 자리는 맨 앞 TV 있는 쪽 좌석 추천&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;4. 연인 친구들과 가볍게 즐기기 좋은 연극입니다.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C2B63F5C1626F509&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C2B63F5C1626F509&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;KakaoTalk_20181216_191849252.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;감자님은 스릴러, 추리 장르를 좋아하고 저는 로맨스 코미디를 좋아하는 편입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;물론 좋아하는 장르는&amp;nbsp;그 연극표를 구했을 때 볼 수 있는 것이고, 또 감자님이 당첨이 되어서 스릴러 장르의 크리미널 시즌 4를 관람하게 되었습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;작은 규모의 연극 극장이지만 소품들이 제법 잘 구성되어 있습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;지정석이 아닌 자유석으로 추천드리는 자리는 &lt;b&gt;맨&lt;/b&gt; &lt;b&gt;앞 TV가 있는 쪽 좌석을 추천드립니다.&lt;/b&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;배우들이 누워있거나 TV로 메세지를 전달하는 경우가 있는데, 반대쪽에서는 잘 보이지가 않아서 답답했습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;아 그리고 어떤 자리는 쓰레기통 역할을 할 수도 있습니다.&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;연극이 추리극의 성격을 가지고 있어서 전체적인 줄거리 소개는 간단하게 하고 넘어 가겠습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;전체 줄거리&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;어느 날 산장에 아무 이유 없이 4명이&amp;nbsp;감금됩니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;자신이 갇힌 이유도 누가 자신을 감금시켰는지도 알 수 없습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;서로 간의 공통점을 확인하려는 과정에서 4명 모두 하나의 사건에 연루되어 있다는 것을 알게 됩니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;방 안에 나가기 위한 단서를 찾지만, 범인은 끊임없이 시간으로 압박을 가합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;과연 그들은 무사히 산장을 탈출하게 될까요?&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감상평&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;추리하는 것을 좋아하고 어떤 게임에서 숨어있는 것을 찾는 것을 좋아한다면 충분히 재미있을 거라고 생각합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;우려했던 것과는 달리 놀래키는 장면이 적었습니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;4명의 배우분들이&amp;nbsp;처음부터 끝까지 흥분 상태로 극을 진행합니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;누군가가 감금했고 시간이 줄어드는 것을 보면서 마음을 진정할 용자는 흔치않겠지만 매순간순간 흥분을 해서 정신이 없긴 했습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;그리고 연극이 끝나면 배우분들과 포토타임도 준비되어 있습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;사진으로 추억을 간직하고자 하는 분들에게는 좋은 장점이라 생각합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;연인과 친구들과 가볍게 즐기기 괜찮은 연극이라 생각합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;긴 글 읽어 주셔서 감사합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;공감 버튼은 작성자에게 큰 동기부여가 됩니다.&amp;nbsp;&lt;/p&gt;</description>
      <category>눈누난냐/연극</category>
      <category>대학로 연극 추천</category>
      <category>스릴러 연극</category>
      <category>연극 추천</category>
      <category>추리극 추천</category>
      <category>크리미널 시즌 4</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/95</guid>
      <comments>https://ssoonidev.tistory.com/95#entry95comment</comments>
      <pubDate>Sun, 16 Dec 2018 19:20:51 +0900</pubDate>
    </item>
    <item>
      <title>[대학로 연극] 기묘여행 리뷰</title>
      <link>https://ssoonidev.tistory.com/94</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); background-color: rgb(0, 0, 0); padding: 10px;&quot;&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;연극의 줄거리보다 연극이 재밌는지 궁금한 분을 위한 &lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;선 요약&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;1. 배우분들의 훌륭한 연기력과 문학 소설 같은 시나리오&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;2. 극 전반적 분위기가 무겁습니다. 단 한 번도 웃음이 나오는 장면이 없었습니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;3. 마음이 무거워지지만 저는 추천 드립니다.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99ACC24F5C1605A90F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99ACC24F5C1605A90F&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;KakaoTalk_20181216_165555848.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;감자님의 운은 어디까지인 걸까요..&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;연극표 당첨되서 또 문화생활을 이렇게 누릴수 있었습니다.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;러브 스코어 이후 처음으로 관람하게 되는 연극이였습니다.&lt;/div&gt;
&lt;div style=&quot;line-height: 1.8;&quot;&gt;러브 스코어의 밝고 쾌할한 느낌과는 달리 한편의 묵직한 소설책을 읽은 듯한 느낌으로 연극을 관람했어요.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;전체적인 줄거리&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.8;&quot;&gt;기묘여행은 살인 사건의 피해자와 가해자 가족들이서 여행하는 연극 제목 그대로 기묘한 여행이다.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(254, 222, 199); background-color: rgb(254, 222, 199); padding: 10px; line-height: 1.8;&quot;&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;피해자 가족들의 상처와 아픔&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;가해자 가족들의 죄책감&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;그리고 죽은 영혼으로 등장하는 피해자&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;자신의 죄를 인정하고 그 댓가를 치룰려는 가해자&lt;/div&gt;&lt;/div&gt;


&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;이들이 함께 있는 연극의 분위기는 당연히 무겁고 어둡습니다.&lt;/div&gt;
&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;피해자 가족 입장은 당연히 가해자에 해한 복수.&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.8;&quot;&gt;사랑하는 딸의 죽음을 쉽게 용서할 수는 없습니다.&lt;/div&gt;
&lt;div style=&quot;line-height: 1.8;&quot;&gt;가해자를 만나 반드시 본인 손으로 죽이겠다는 다짐으로 여행을 떠납니다.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.8;&quot;&gt;반대로 &lt;b&gt;&lt;u&gt;가해자 부모는 가해자의 생존이 목적&lt;/u&gt;&lt;/b&gt;입니다.&lt;/div&gt;
&lt;div style=&quot;line-height: 1.8;&quot;&gt;가해자 본인은 항소를 포기하며, 자신의 죄에 대한 벌을 받고자 합니다.&lt;/div&gt;
&lt;div style=&quot;line-height: 1.8;&quot;&gt;자기 자식이 살인자라 하여도 부모들에게는 하나 뿐인 자식이기에 인면수심임에 불구하고 피해자 가족에게 그를 설득해달라고 부탁합니다.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;과연 그들은 각자의 목표를 이룰 수 있을까요..?&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;고통스러운 사람끼리 위로가 과연 통할 것인가?&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;모든 등장 인물이 각각의 고통을&amp;nbsp;가지고 있습니다.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;피해자 가족, 가해자 가족, 피해자, 가해자, 여행을 주선한 사람까지&amp;nbsp;모든 이들이 고통스러운 나날을 보냈던 사람들입니다.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;인형을 각각 가해자와 피해자의 이름을 붙이고 피해자 가족은 가해자에게 칼을 꽂고, 가해자 가족은 피해자를 안아주는 장면이 있습니다.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;각자의 입장이 되어보며 각자의 고통을 이해하는 시간이 되었겠죠.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;그런데 오히려 감정의 교류는 피해자 어머니가 찌르기를 거부하고, 가해자 어머니가 대신 찌를 때 감정이 교류됩니다.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(203, 203, 203); background-color: rgb(255, 255, 255); padding: 10px;&quot;&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;단 한 차례만 허벅지를 찌르는 피해자 아버지&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;수차례를 가슴을 찌르는 가해자 어머니&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 1.8;&quot;&gt;그동안 감정을&amp;nbsp;숨겨오던&amp;nbsp;가해자의 어머니의 행동으로 가해자의 살인은 가해자 부모에게도 큰 상처와 분노로 남은 것을 행동으로 보여주는 장면이 아닐까 저는 생각합니다.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;그렇다고 서로의 감정을 확인한&amp;nbsp;이 장면이 두 가족간의 화해의 장면은 결코 아닙니다.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;연극이 끝나는 시점까지 &lt;b&gt;&lt;u&gt;피해자 가족은 가해자에게 단 한번도&amp;nbsp;설득한 적이 없기 때문&lt;/u&gt;&lt;/b&gt;입니다.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;서로의 고통을 확인하더라도 자신이 받는 고통이 더욱 크기에 서로 위로를 받거나 이해를 하지 않습니다.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;연극을 보는 내내 마음 한구석이 너무 무거웠습니다.&lt;/b&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;해피엔딩도 아닌, 새드 엔딩도 아닌 &lt;u&gt;살아 남은자는 계속 아픔을 가지고 살아 갈 것이다라는게 결말&lt;/u&gt;이였기 때문이죠.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;많은 관객들이 눈물을 많이 흘렸습니다. 피해자 가족 입장에서 죽이고 싶지만 죽일 수 없는 감정에 많은 공감을 했던 것 같습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;그 누구도 행복하지 못한 결말, 그 누구도 원하는 것을 얻지 못한 결말에 답답함을 느낄지도 모르겠습니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;하지만 배우들의 탄탄한 연기력과 소설을 읽은 듯한 감동을 선사해주는 이 연극을 추천 드립니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;긴 글 읽어주셔서 감사합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;공감 버튼은 글쓴이에게 큰 동기부여가 됩니다.&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;</description>
      <category>눈누난냐/연극</category>
      <category>기묘여행</category>
      <category>기묘여행 리뷰</category>
      <category>기묘여행 줄거리</category>
      <category>대학로 연극 추천</category>
      <category>연극 기묘여행</category>
      <category>연극 추천</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/94</guid>
      <comments>https://ssoonidev.tistory.com/94#entry94comment</comments>
      <pubDate>Sun, 16 Dec 2018 17:01:19 +0900</pubDate>
    </item>
    <item>
      <title>[Python] Word2Vec으로 관련 키워드 찾기 (with 카톡 대화)</title>
      <link>https://ssoonidev.tistory.com/93</link>
      <description>&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); background-color: rgb(0, 0, 0); padding: 10px; line-height: 1.8;&quot;&gt;&lt;p style=&quot;box-sizing: border-box; margin-right: 0px; margin-left: 0px; font-family: &amp;quot;KoPub Dotum&amp;quot;; text-align: justify; color: rgb(51, 51, 51); font-size: 14px; line-height: 1.8; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; font-size: 12pt; color: rgb(255, 255, 255);&quot;&gt;Github &amp;gt;&amp;nbsp;&lt;/span&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;a href=&quot;https://github.com/ssooni/data_mining_practice&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;box-sizing: border-box; background-color: transparent; color: rgb(153, 153, 153); text-decoration-line: underline; transition: color 0.2s ease-in-out 0s;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; font-size: 12pt; color: rgb(255, 255, 255);&quot;&gt;https://github.com/ssooni/data_mining_practice&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin-right: 0px; margin-left: 0px; font-family: &amp;quot;KoPub Dotum&amp;quot;; text-align: justify; color: rgb(51, 51, 51); font-size: 14px; line-height: 1.8; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;box-sizing: border-box;&quot;&gt;- 자세한 소스코드는 Github에 올렸습니다.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin-right: 0px; margin-left: 0px; font-family: &amp;quot;KoPub Dotum&amp;quot;; text-align: justify; color: rgb(51, 51, 51); font-size: 14px; line-height: 1.8; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;box-sizing: border-box;&quot;&gt;- 데이터 파일도 올려 드리고 싶지만 실제 카카오톡 대화내용이라 일부분만 올렸습니다.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin-right: 0px; margin-left: 0px; font-family: &amp;quot;KoPub Dotum&amp;quot;; text-align: justify; color: rgb(51, 51, 51); font-size: 14px; line-height: 1.8; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;box-sizing: border-box;&quot;&gt;- 소스코드는 짬짬히 업로드할 예정입니다.&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(255, 0, 221); background-color: rgb(255, 217, 236); padding: 10px; line-height: 1.8;&quot;&gt;&lt;p style=&quot;box-sizing: border-box; margin-right: 0px; margin-left: 0px; font-family: &amp;quot;KoPub Dotum&amp;quot;; text-align: justify; font-size: 13px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;b style=&quot;box-sizing: border-box;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 10pt;&quot;&gt;이전 시리즈&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin-right: 0px; margin-left: 0px; font-family: &amp;quot;KoPub Dotum&amp;quot;; text-align: justify; font-size: 13px; padding-top: 0px !important; padding-bottom: 0px !important;&quot;&gt;&lt;a href=&quot;http://ssoonidev.tistory.com/88&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;box-sizing: border-box; background-color: transparent; color: rgb(153, 153, 153); text-decoration-line: underline; transition: color 0.2s ease-in-out 0s;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; color: rgb(0, 0, 0); font-size: 10pt;&quot;&gt;1. 형태소 분석기 Kkma 적용하기&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://ssoonidev.tistory.com/89&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 10pt;&quot;&gt;2. 워드클라우드&amp;nbsp;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Word to Vector&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;Word2Vec은 간단하게 텍스트를 숫자로 변환하는 것을 의미합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;컴퓨터가 모든 텍스트의 의미를 이해해서, Context를 잘 잡아낸다면 굳이 이런 작업을 하지 않아도 됩니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;하지만 아직까지 컴퓨터는 숫자로 이루어진 세계에 대한 연산을 더 잘 합니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;숫자로 이루어진 세계에서 마치 컴퓨터가 우리가 글을 이해하는 듯한&amp;nbsp;알고리즘을 적용한다면 문맥을 이해할 수 있지 않을까? 하는 취지에서 시작되었습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;그렇다면&amp;nbsp;텍스트를 특정한 벡터 좌표로 표현할려면 어떤 방법들이 있을까요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;하나는 &lt;b&gt;&lt;u&gt;각각의 차원에 텍스트가 가질 수 있는 특성을 부여하는 방법&lt;/u&gt;&lt;/b&gt;입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/998EC3425C148F7538&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F998EC3425C148F7538&quot; width=&quot;500&quot; height=&quot;108&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;각각의 차원에 특성을 두고 사람과 닭이 가지는 특성에 맞게 배치를 하였습니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;사람과 닭은 예제에서 보여준 4가지의 속성에 따라 서로 구분이 가능하다는 것을 알 수 있습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;하지만 원숭이와 사람을 이 속성이 따라 구분하면 어떻게 될까요?&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E05E355C14911633&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E05E355C14911633&quot; width=&quot;500&quot; height=&quot;106&quot; filename=&quot;그림2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;사람과 원숭이는 4가지의 속성으로는 서로 구분이 가기 힘듭니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;따라서 우리는 사람과 원숭이를 구분할 수 있는 특성을 추가적으로 넣어야 합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;이렇게 계속 다른 것과 구분을 하기 위해 특성을 추가하다보면 &lt;b&gt;이 세상 모든 단어를 표현하는데 필요한 차원은 무한대에 가까울 것&lt;/b&gt;입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;그리고 그런 특성을 사람이 일일히 부여하는 것은 매우 피곤한 일입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;CBOW 방법 vs Skip-Gram 방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;그래서 이번에는 다른 방법을 사용하여, 텍스트를 벡터로 표현하고자 합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993DEE4C5C14993A15&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993DEE4C5C14993A15&quot; width=&quot;500&quot; height=&quot;224&quot; filename=&quot;그림4.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left;&quot;&gt;위의 문제가 주어졌을 때&amp;nbsp;운동이나 밥, 노래들을 잘하는지는 &lt;b&gt;&lt;u&gt;이전 또는 이후 문장을&amp;nbsp;확인해야 알 수 있습니다.&lt;/u&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;주변의 단어를 통해 중심 단어를 추측하는 방법이&amp;nbsp;CBOW 방법입니다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996CB53C5C14A2460B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996CB53C5C14A2460B&quot; width=&quot;500&quot; height=&quot;261&quot; filename=&quot;그림5.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;반대로 Skip-Gram 방법은 &lt;b&gt;&lt;u&gt;어떤 단어가 등장했을 때 근접한&amp;nbsp;단어가 발생하는 양상을 측정하는 방법&lt;/u&gt;&lt;/b&gt;입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;노래라는 중심 단어를 기준으로 앞뒤 N개의 단어가 등장하는 확률을 구하여 Vector로 만들어 줍니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;관련 키워드 찾기&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;Word2Vec 모듈의 설치방법은 아래와 같습니다.&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); background-color: rgb(0, 0, 0); padding: 10px; line-height: 1.8;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;gt;&amp;gt; pip install word2vec&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;앞선 시리즈에서 형태소 분석기를 통해 Token을 만들었는데 그것을 이용해서 Word2Vec를 알고리즘을 적용합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;자세한 소스코드는 GitHub를 참조해주세요.&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(189, 189, 189);&quot;&gt;word2vector.py&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;p&gt;&lt;p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;def&lt;/span&gt;&amp;nbsp;create_model(filename,&amp;nbsp;skip_gram&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;False):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tokens&amp;nbsp;&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;pd.read_csv(filename)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tokens&amp;nbsp;&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;tokens[tokens[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;contents&quot;&lt;/span&gt;].apply(lambda&amp;nbsp;x:&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;'http'&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;not&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;in&lt;/span&gt;&amp;nbsp;x)]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sentence&amp;nbsp;&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;tokens[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;token&quot;&lt;/span&gt;].apply(lambda&amp;nbsp;x:&amp;nbsp;ast.literal_eval(x)).tolist()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;if&lt;/span&gt;&amp;nbsp;skip_gram:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model&amp;nbsp;&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;Word2Vec(sentence,&amp;nbsp;min_count&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;10&lt;/span&gt;,&amp;nbsp;iter&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;20&lt;/span&gt;,&amp;nbsp;size&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;300&lt;/span&gt;,&amp;nbsp;sg&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;1&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;else&lt;/span&gt;:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model&amp;nbsp;&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;Word2Vec(sentence,&amp;nbsp;min_count&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;10&lt;/span&gt;,&amp;nbsp;iter&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;20&lt;/span&gt;,&amp;nbsp;size&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;300&lt;/span&gt;,&amp;nbsp;sg&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;0&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model.init_sims(replace&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;True)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model.save(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;./result/embedding.model&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;line 3&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;카카오톡의 대화 내용 중에서 링크를 첨부하는 경우를 제외하였습니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;line 5&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;Word2Vec의 Sentence는 iterable한 자료형이 들어가면 됩니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;저는 이전 시리즈에서 형태소 분석기로&amp;nbsp;Tokenize한 결과를 넣었습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;line 7-10&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;Skip Gram 방법을 사용할지 CBOW 방법을 사용할지 선택합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;각각의 파라미터는 반드시 똑같이 따라 하실 필요는 없습니다.&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(238, 238, 238); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;size :&lt;/b&gt;&amp;nbsp;몇 차원의 Vector를 만들지 여부를 결정합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;min_count :&lt;/b&gt; 특정 빈도수 이상 발생한 단어에 대하여 Embedding을 합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;iter:&lt;/b&gt; 반복 횟수&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;line 13&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;완성된 모델을 파일로 저장합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; color: rgb(240, 240, 240); overflow: auto; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; position: relative !important;&quot;&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px;&quot;&gt;&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; color: rgb(0, 0, 0); font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(189, 189, 189);&quot;&gt;word2vector.py&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;def&lt;/span&gt;&amp;nbsp;most_similar():&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model&amp;nbsp;&lt;span style=&quot;color:#0086b3&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;Word2Vec.load(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;./result/embedding.model&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;print&lt;/span&gt;(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;용돈과&amp;nbsp;관련된&amp;nbsp;키워드&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;,&amp;nbsp;model.most_similar(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;용돈&quot;&lt;/span&gt;))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;print&lt;/span&gt;(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;졍이와&amp;nbsp;관련된&amp;nbsp;키워드&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;,&amp;nbsp;model.most_similar(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;졍이&quot;&lt;/span&gt;))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;print&lt;/span&gt;(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;쭈니와&amp;nbsp;관련된&amp;nbsp;키워드&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;,&amp;nbsp;model.most_similar(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;쭈니&quot;&lt;/span&gt;))&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;line 2&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;앞서 생성한 모델을 읽어드립니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;line 3 - 5&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;most_similar 함수는 Word Vector에 Cosine 값을 내적을 통해 구한 뒤 그 값이 클수록 유사하다는 &lt;b&gt;&lt;u&gt;Cosine Similarity 방법&lt;/u&gt;&lt;/b&gt;을 사용하여 특정 단어와 관련된 단어를 찾아줍니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E368465C14AA2129&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E368465C14AA2129&quot; width=&quot;500&quot; height=&quot;91&quot; filename=&quot;그림6.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;관련도 수치가 낮은 게 아쉽긴 합니다만, 관련된 단어라고 생각하는 것들이 나와서 나름 만족 스럽습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;다음 시리즈에서는 벡터화된 데이터를 이용하여, &lt;u&gt;&lt;b&gt;클러스터링&lt;/b&gt;&lt;/u&gt;을 하면 어떤 결과가 나오는지 확인해보도록 하겠습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;긴 글 읽어 주셔서 감사합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;공감 버튼은 글쓴이에게 큰 동기부여가 됩니다.&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Data Mining</category>
      <category>Python Word2Vec</category>
      <category>word2vec</category>
      <category>Word2Vec 예제</category>
      <category>Word2Vec 한글</category>
      <category>워드투벡터</category>
      <category>워드투벡터 예제</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/93</guid>
      <comments>https://ssoonidev.tistory.com/93#entry93comment</comments>
      <pubDate>Sat, 15 Dec 2018 16:25:35 +0900</pubDate>
    </item>
    <item>
      <title>[영화] 도어락 리뷰</title>
      <link>https://ssoonidev.tistory.com/92</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); background-color: rgb(0, 0, 0); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;영화 내용은 안 궁금하고 재밌는지 궁금한 사람들을 위한 &lt;/span&gt;&lt;span style=&quot;color: rgb(255, 228, 0); font-size: 12pt;&quot;&gt;선 요약&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;1. 도어락을 따고 들어가서 도어락인거지 자물쇠 땄으면 자물쇠가 영화 제목이였음&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;2. 도어락 어떻게 딴건지 추리는 없다.&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: rgb(255, 228, 0); font-size: 12pt;&quot;&gt;모든 것은 우연이다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;3. 긴장은 긴장대로 하게하고 해소를 해주지 않는 영화&lt;/span&gt;&lt;/font&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;범인에 대한 스포일러&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;가 있으므로 보고 싶지 않다면 뒤로 넘어 가시는것을 추천 드립니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;영화 자체를 추천하지는 않아서 봐도 상관은 없습니다만..&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99702F415C0F6B9715&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99702F415C0F6B9715&quot; width=&quot;500&quot; height=&quot;716&quot; filename=&quot;81315_1000.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;영화의 스토리를 요약하면 도어락으로 문을 잠궜으나 도어락을 뚫고 들어와서 집 안에 몰래 같이 사는 변태적인 범인이 있다는 내용의 영화인데 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;사실&amp;nbsp;도어락이랑 전혀 상관이 없다.&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;만약 자물쇠로 문을 잠궜으나 자물쇠를 뚫고 들어왔다면 이 영화 제목은 자물쇠가 되었을 것이다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;다만 소재가 현실에도 있을 수 있는 일을 기반으로 하였다는 것에는 좋은 시도라고 생각한다만..&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0); font-size: 12pt;&quot;&gt;모든 서사는 우연이다. 필연이 없다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그 사람이 어떤 사람인지 어떻게 들어왔는지 그런거는 관객이 전혀 알 수 없다. 범인의 직업이 경비원인데 경비원이라고 우리집 비밀번호 알고 있으면 다 잘라야 한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그리고 CCTV도 없는데 어떻게 비밀번호를 아는 건지 그냥 모든게 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;우연이다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그렇게 문을 쾅쾅치면서 사람을 잡아 대는데 옆집 앞집은 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;우연히&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;비어있나봐 이웃한테 먼저 물어보고 그런것도 없네..&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;나름 필연을 맞추기 위해서 추리씬이 들어가긴 하는데,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;우연히&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; 3200원&amp;nbsp;사용하는 사람을 발견하였고,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;두 사람이 서로 다른 길로 찾았는데 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;우연히 &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;실종자의 범행 현장에 주인공이 도착했고 위기의 순간에&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;갑자기 동료가&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;우연히 &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;지나가다가 몸통박치기로 도와준다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;유력한 용의자가 있지만 범행은 계속 일어나는 걸 계속 보여주면서 관객들에게 &quot;얘는 범인 아니야^^&quot; 농락하는데 그 과정이 매우 짜증이 난다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;주변 사람들이 다치거나 죽으니 &lt;/span&gt;&lt;u&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;긴장감을 주는데&amp;nbsp;전혀 해소를 해주지 않는다&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;.&lt;/span&gt;&lt;/u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; 떡밥을 던져서 조금씩 해소해줄 만한데 3200원과 오래된 시계말고는 결정적인 떡밥을 던지지 않으니, 주인공이 직접 잡히는 수 밖에 범인을 공개할 수단이 없다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;그렇게 형사도 너무 허무하게 죽고 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;전지전능한 범인이 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;우연히&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;튀어나온 못에 한방 맞고&amp;nbsp;사망하니까 허무하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이런 긴장감을 주는게 목적이라면 아주 성공했지만, 중간 중간에 긴장을 해소하고 관객들에게 숨도 좀 돌릴수 있는 시간을 줬으면 더 좋았을텐데하는 아쉬움이 있다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;마지막까지 침대 밑을 비추면서 긴장감을 줄 필요가 있을까&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; 하는&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;거다. 영화 보고 나와서 찝찝함을 잊을 수 없던 영화였다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>눈누난냐/영화</category>
      <category>도어락</category>
      <category>도어락 리뷰</category>
      <category>스릴러</category>
      <category>영화 리뷰</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/92</guid>
      <comments>https://ssoonidev.tistory.com/92#entry92comment</comments>
      <pubDate>Tue, 11 Dec 2018 16:49:38 +0900</pubDate>
    </item>
    <item>
      <title>[영화] 보헤미안 랩소디 후기</title>
      <link>https://ssoonidev.tistory.com/91</link>
      <description>&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); background-color: rgb(0, 0, 0); padding: 10px; line-height: 1.8;&quot;&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;영화 내용은 안 궁금하고 재밌는지 궁금한 사람들을 위한 &lt;/span&gt;&lt;span style=&quot;color: rgb(255, 228, 0); font-size: 12pt;&quot;&gt;선 요약&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;1. 마지막 20분을 위한 영화&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;2. 라라랜드가 재밌었다면, 이 영화도 재밌을 것 입니다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;3. 어? 나도 모르게 Queen 노래를 Playlist에 담고 있네?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9976B8485C0F5D581A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9976B8485C0F5D581A&quot; width=&quot;500&quot; height=&quot;713&quot; filename=&quot;81127_1000.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Queen 음악을 좋아하고, 즐겨듣던 사람으로써 퀸 음악을 영화관에서 듣게 된다는 것 만으로 행복했던 영화였다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이 영화의 파급력이 대단하다고 느끼는 것은 동네 편의점에서 Queen 노래 그것도 Radio gaga를 듣을 수 있다는 것이다.&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;영화 보헤미안 랩소디는 퀸의 탄생부터 퀸의 전설적인 공연으로 기록되는 Live AID 까지 10년 가까히의 시간들을 영화에 담고자 했다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;영화의 앞부분은 퀸의 성공적인 모습을 압축하여 보여 주고자 하다 보니, 서사가 단순하다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;두 사람이 감정적으로 싸우다가 다른 멤버가&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;이거 해보자 하면, 오 좋은데? 하고 획기적인 노래를 만드는 것이 두여차례 반복한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그런데 이런 서사가 노래가 좋으니까 먹힌다.&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;We will Rock You와 보헤미안 랩소디,&amp;nbsp;Another one bites the dust 가 보통 좋은 노래가 아니니까..&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그 사이에 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;프레디 머큐리의 정체성을 찾아가는 과정&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;을 담고 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;자신이 동성을 좋아한다는 것을&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;인정하면서&amp;nbsp;고독과 고뇌를 담고자 했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그 시기부터 프레디가 퀸과 멀어지고 음악을 뒤로 하고 술과 약으로 사는 방탕하는 삶을 살게되면서 그를 죽게 만든 에이즈에 걸린다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;(물론 &lt;/span&gt;&lt;i&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;실제로 프레디 본인이&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;에이즈인 것을 알게 된 시기는 Live AID 이후의 일이지만&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;, 영화의 전개를 위해 필요한 픽션이라고 생각한다.)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;동성애 구간을 아주 어둡게 표현하고, 이성애 구간을 밝고 낭만적으로 표현한거에 불만을 가질 수도 있지만, 당대 시대상을 반영한 것이라 생각한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;다시 가족과 Queen으로 돌아와&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Live AID 공연으로 하는 것으로 영화는 마무리된다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 265px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/991B604A5C0F5ACE23&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F991B604A5C0F5ACE23&quot; width=&quot;265&quot; height=&quot;190&quot; filename=&quot;images.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Live AID 공연을 보여준 20분은 환상적&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이였다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;유튜브로 보는 공연에서&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;카메라 앵글이 다소 아쉬울 때가 많았는데, 다양한 앵글로 공연을 볼 수 있어서 좋았다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그리고 저 공연을 직접 경험하지 못한 세대로써 생생한 관객들의 떼창은 마치 현장에서 그의 공연을 보는 듯한 경험을 제공해주었다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이렇게 영화는 끝이 난다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;퀸의 다큐멘터리를 봤을 때 마음 아프고 프레디 머큐리&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;가 대단하다고 느낀 부분은 Live AID의 모습이 아닌 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;에이즈에 걸려 힘들었음에도 불구하고, 죽는 마지막 순간까지 음악을 사랑했다는 것&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이였다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;퀸을 처음 접하는 사람들에게 알려주고&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;싶은&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;아쉬움은 있있다. 프레디가 이렇게 열정적이였다고!!!&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;하지만 마음의 아픔이 되었던 날이였고, 좋은 기억들만 가지고 퀸을 좋아해주길 감독이 바라는 것 아닐까 생각한다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;2시간 20분이 전혀 길지 않게 느껴지는 영화였다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;언젠가 왓챠플레이나 넷플릭스에 보헤미안 랩소디가 올라오는 날이 온다면 마지막 20분은 꼭 다시 경험해보고 싶다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>눈누난냐/영화</category>
      <category>보헤미안 랩소디 영화</category>
      <category>영화 리뷰</category>
      <category>영화 추천</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/91</guid>
      <comments>https://ssoonidev.tistory.com/91#entry91comment</comments>
      <pubDate>Tue, 11 Dec 2018 15:58:58 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 워드클라우드 (with 카톡 대화)</title>
      <link>https://ssoonidev.tistory.com/89</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); background-color: rgb(0, 0, 0); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;r&lt;span style=&quot;font-size: 12pt; color: rgb(255, 255, 255);&quot;&gt;Github &amp;gt;&amp;nbsp;&lt;/span&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;a href=&quot;https://github.com/ssooni/data_mining_practice&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;span style=&quot;font-size: 12pt; color: rgb(255, 255, 255);&quot;&gt;https://github.com/ssooni/data_mining_practice&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;- 자세한 소스코드는 Github에 올렸습니다.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;- 데이터 파일도 올려 드리고 싶지만 실제 카카오톡 대화내용이라 일부분만 올렸습니다.&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;- 소스코드는 짬짬히 업로드할 예정입니다.&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(255, 178, 245); background-color: rgb(255, 217, 236); padding: 10px; line-height: 1.8;&quot;&gt;&lt;p&gt;&lt;b&gt;이전 시리즈&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://ssoonidev.tistory.com/88&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1. 형태소 분석기 Kkma 적용하기&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;카카오톡 시리즈의 2번째로 워드클라우드를 만들어 보았습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;이전 시간에서 만들었던 명사 추출 결과를 사용하여 워드클라우드를 그릴 것입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;1. 단어의 빈도 수를 측정&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;워드클라우드에서 글자 크기를 정하는 기준을 저는 단어의 빈도수로 결정하였습니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;특정 컬럼을 그룹으로 하여 집계하는 방법은 pandas에서 간단하게 구현이 가능합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(93, 93, 93);&quot;&gt;mwordcloud.py&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(93, 93, 93);&quot;&gt;1&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;def&lt;/span&gt;&amp;nbsp;draw_wordcloud(kkma_result):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;List로&amp;nbsp;되어있는&amp;nbsp;열을&amp;nbsp;Row&amp;nbsp;단위로&amp;nbsp;분리&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tokens&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;pd.DataFrame(kkma_result[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;token&quot;&lt;/span&gt;].apply(lambda&amp;nbsp;x:&amp;nbsp;ast.literal_eval(x)).tolist())&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tokens[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Date&quot;&lt;/span&gt;]&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;kkma_result[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Date&quot;&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tokens[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Speaker&quot;&lt;/span&gt;]&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;kkma_result[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Speaker&quot;&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tokens[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;timetype&quot;&lt;/span&gt;]&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;kkma_result[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;timetype&quot;&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tokens[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;time&quot;&lt;/span&gt;]&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;kkma_result[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;time&quot;&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tokens[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;contents&quot;&lt;/span&gt;]&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;kkma_result[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;contents&quot;&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tokens&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;tokens.set_index([&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Date&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Speaker&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;timetype&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;time&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;contents&quot;&lt;/span&gt;])&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tokens&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;tokens.T.unstack().dropna().reset_index()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tokens.columns&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Date&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Person&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;time_type&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;time&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;sntc&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;index&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;token&quot;&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;print&lt;/span&gt;(tokens.head())&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;빈도수&amp;nbsp;집계&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;summary&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;tokens.groupby([&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;token&quot;&lt;/span&gt;])[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;index&quot;&lt;/span&gt;].count().reset_index()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;summary&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;summary.sort_values([&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;index&quot;&lt;/span&gt;],&amp;nbsp;ascending&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;[False]).reset_index(drop&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;True)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&amp;nbsp;이하&amp;nbsp;생략&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&quot;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;모든 소스코드는 GitHub를 참조바랍니다.&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;제가 정의한 draw_wordcloud()는 집계를 하고 빈도수가 많은 순서대로 정렬한 후 워드클라우드를 생성합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;line 2-15&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;시리즈 1의 결과를 보면 token 컬럼&amp;nbsp;안에 리스트로 토큰들을 저장하도록 구성되어 있습니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9954804A5C0B7B1536&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9954804A5C0B7B1536&quot; width=&quot;500&quot; height=&quot;271&quot; filename=&quot;그림2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;이렇게 구성되어 있으면 분석하기 상당히 불편하므로 리스트 안에 있는 원소를 풀어서 새로운 행을 구성하는 것이 line2 - 14 입니다.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;만약 시리즈를 이어서 하는 것이 아니라면 line 2-14번은 생략하셔도 됩니다.&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;line 18 - 19&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;pandas.DataFrame의 groupby는 특정한 컬럼을 그룹으로 묶어줍니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;그리고 그룹을 대상으로 min(), max(), count()등의 집계함수를 제공합니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;이 경우에는 모든 구간에 대하여 token을 기준으로 발생한 빈도수를 집계하였습니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;순위를 측정하기 위해서 집계한 결과를 내림차순으로 정렬까지 완료합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;2. 워드클라우드&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;데이터과학에서 시각화는 생각보다 큰 비중을 차지하는 분야입니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;어떻게 보여줘야 분석에 용이하고 데이터 분석결과를 받아 드리는 사람들이 쉽게 받아 드릴수 있기 때문입니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;측정한 빈도수를 기반으로 Line나 막대 그래프도 그릴 수 있습니다만, 몇 번 나왔는지에 큰 의미를 두지 않는다면 빈도수는 TMI가 될 수 있습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;키워드에만 집중하기 위한 시각화 표현 기법&lt;/u&gt;&lt;/b&gt;으로 주로 워드클라우드를 사용합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;그리고 Python의 WordCloud 모듈은 개발자들에게 쉽고 빠른 방법으로 워드클라우드를 생성하는 것을 도와줍니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); background-color: rgb(0, 0, 0); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;&amp;gt;&amp;gt; pip install wordcloud&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;워드클라우드 모듈을 설치가 완료되었다면 이제 사용하는 소스 코드를 작성해 봅시다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(93, 93, 93);&quot;&gt;mwordcloud.py&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;def&lt;/span&gt;&amp;nbsp;draw_wordcloud(kkma_result):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&amp;nbsp;상단&amp;nbsp;생략&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&quot;  &lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wc&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;WordCloud(font_path&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'./font/NanumBrush.ttf'&lt;/span&gt;,&amp;nbsp;background_color&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'white'&lt;/span&gt;,&amp;nbsp;width&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;800&lt;/span&gt;,&amp;nbsp;height&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;600&lt;/span&gt;).generate(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&amp;nbsp;&quot;&lt;/span&gt;.join(summary[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;token&quot;&lt;/span&gt;]))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plt.imshow(wc)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plt.axis(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;off&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plt.show()&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;line 4&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;WordCloud의 generate() 함수는 공백으로 분리된 문자열 리스트를 받습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;그리고 &lt;b&gt;&lt;u&gt;가장 첫 번째의 단어를 가장 크게, 가장 마지막 단어를 가장 작게 표현&lt;/u&gt;&lt;/b&gt;합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;앞서 빈도 수를 기준으로 token을 정렬하였기 때문에 가장 많은 빈도 수가 나오는 문자가 가장 크게 나올 것입니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;아래 그림처럼 말이죠.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99DF534B5C0CBAFC2D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99DF534B5C0CBAFC2D&quot; width=&quot;500&quot; height=&quot;236&quot; filename=&quot;Figure_1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;카카오톡은 이모티콘과 사진, 동영상을 전송한 채팅 기록에 대하여는 (이모티콘) 이런 식으로 저장하니까 이모티콘과 사진이 압도적으로 많이 나오는 걸 볼 수 있습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;3. 특정 단어를 제외하자&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;정말 직업으로 이모티콘을 개발하는 사람끼리 얘기하는 것이라면 이모티콘 단어가 큰 의미로 받아 지겠지만, 그냥 개발자와 그 여자친구간에 얘기에서 이모티콘은 큰 의미가 있는 단어는 아닙니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;이번 단계에서는 &lt;b&gt;&lt;u&gt;노이즈라고 생각하는 단어들을 제외하는 과정&lt;/u&gt;&lt;/b&gt;을 진행해서 유효한 단어들만 보여주고 싶습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(93, 93, 93);&quot;&gt;mwordcloud.py&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding: 6px; border-right: 2px solid rgb(79, 79, 79); height: 469px;&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px; height: 469px;&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;def&lt;/span&gt;&amp;nbsp;get_except_keyword(filename):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;keyword_list&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;list()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;with&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;open&lt;/span&gt;(filename,&amp;nbsp;encoding&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'utf-8'&lt;/span&gt;)&amp;nbsp;as&amp;nbsp;f:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;for&lt;/span&gt;&amp;nbsp;keyword&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;in&lt;/span&gt;&amp;nbsp;f.readlines():&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;keyword_list.append(keyword.strip())&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;print&lt;/span&gt;(keyword_list)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;keyword_list&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;def&lt;/span&gt;&amp;nbsp;draw_wordcloud(kkma_result):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&amp;nbsp;상단&amp;nbsp;생략&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;특정&amp;nbsp;단어&amp;nbsp;필터링&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;except_keyword&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;get_except_keyword(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;./raw_data/except_word.txt&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;summary&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;summary[summary[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;token&quot;&lt;/span&gt;].apply(lambda&amp;nbsp;x:&amp;nbsp;x&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;not&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;in&lt;/span&gt;&amp;nbsp;except_keyword)]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;summary&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;summary[summary[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;token&quot;&lt;/span&gt;].apply(lambda&amp;nbsp;x:&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;len&lt;/span&gt;(x)&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#c10aff&quot;&gt;1&lt;/span&gt;)]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wc&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;WordCloud(font_path&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'./font/NanumBrush.ttf'&lt;/span&gt;,&amp;nbsp;background_color&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'white'&lt;/span&gt;,&amp;nbsp;width&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;800&lt;/span&gt;,&amp;nbsp;height&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;600&lt;/span&gt;).generate(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&amp;nbsp;&quot;&lt;/span&gt;.join(summary[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;token&quot;&lt;/span&gt;]))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plt.imshow(wc)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plt.axis(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;off&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plt.show()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; height: 469px;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;./raw_data/except_word.txt 에는 아래와 같이 &lt;b&gt;&lt;u&gt;제외하고자 하는 단어&lt;/u&gt;&lt;/b&gt;들의 리스트가 저장 되어있습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;./raw_data/except_word.txt&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 150px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997E25495C0CBDAA22&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997E25495C0CBDAA22&quot; width=&quot;150&quot; height=&quot;287&quot; filename=&quot;그림3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;line 14 - 16&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;get_except_word() 함수에서 해당 파일을 읽어서 리스트 형태로 제외 문자열을 가지고 있습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;line 15에서 해당 문자열 리스트 안에 token이 포함되어 있으면 제외하는 로직이 적용됩니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;그리고 추가적으로 line 16에서 token의 글자&amp;nbsp;수가 1개인 경우도 제외하였습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9923374E5C0CBF6527&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9923374E5C0CBF6527&quot; width=&quot;500&quot; height=&quot;236&quot; filename=&quot;Figure_1-1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;아까보다는 저한테는 필요한 것이 나오긴 했지만, 좀 더 필터링을 한다면 더 좋을 거 같아요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;근데 &lt;b&gt;&lt;u&gt;사각형 너무 식상하지 않나요?&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;4. 워드클라우드 Mask 적용&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;Mask를 적용하면 워드클라우드가 이미지에 따라서 맞춰서 단어를 배열해 줍니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;바탕색이 투명한 PNG 파일&lt;/u&gt;&lt;/b&gt;을 하나 준비합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;저는 여자친구가 좋아하는 데덴네 이미지를 하나 준비하였습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(93, 93, 93);&quot;&gt;mwordcloud.py&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;from&lt;/span&gt;&amp;nbsp;PIL&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;Image&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;def&lt;/span&gt;&amp;nbsp;draw_wordcloud(kkma_result):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&amp;nbsp;상단&amp;nbsp;생략&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;denne_mask&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;np.array(Image.&lt;span style=&quot;color:#4be6fa&quot;&gt;open&lt;/span&gt;(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;./font/denne.png&quot;&lt;/span&gt;))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wc&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;WordCloud(font_path&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'./font/NanumBrush.ttf'&lt;/span&gt;,&amp;nbsp;background_color&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'white'&lt;/span&gt;,&amp;nbsp;width&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;800&lt;/span&gt;,&amp;nbsp;height&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;600&lt;/span&gt;,&amp;nbsp;mask&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;denne_mask).generate(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&amp;nbsp;&quot;&lt;/span&gt;.join(summary[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;token&quot;&lt;/span&gt;]))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plt.imshow(wc)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plt.axis(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;off&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plt.show()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;line 7&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;마스크로 사용할 이미지를 읽어서 Numpy.Array로 저장합니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;line 9&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;WordCloud 생성자에 mask 파라미터에 line 7에 만들어 둔 마스크를 넣어 줍니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D838385C0CC2BF05&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D838385C0CC2BF05&quot; width=&quot;500&quot; height=&quot;252&quot; filename=&quot;그림4.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;실행한 결과입니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;원하는 이미지를 사용해서 적용해 보는 것이 좋을 거 같아요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;다음 시리즈는 Word2Vec을 적용해본것을 올려 볼까 합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;전체적인 소스코드는 GitHub를 참조하시고, 궁금한 사항이 있으시면 댓글 달아 주시면 최대한 빨리 답변드리겠습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;긴 글 읽어주셔서 감사합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;공감버튼은 작성자에게 큰 동기부여가 됩니다.&lt;/p&gt;</description>
      <category>Data Mining</category>
      <category>Python Wordcloud</category>
      <category>워드클라우드</category>
      <category>워드클라우드 마스크 적용</category>
      <category>워드클라우드 이미지 적용</category>
      <category>카카오톡 워드클라우드</category>
      <category>파이썬 워드클라우드</category>
      <category>파이썬 워드클라우드 예제</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/89</guid>
      <comments>https://ssoonidev.tistory.com/89#entry89comment</comments>
      <pubDate>Sun, 9 Dec 2018 16:25:01 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 한글 형태소 분석기 Kkma (with 카톡 대화)</title>
      <link>https://ssoonidev.tistory.com/88</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); background-color: rgb(0, 0, 0); padding: 10px;&quot;&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt; color: rgb(255, 255, 255);&quot;&gt;Github &amp;gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;font color=&quot;#ffffff&quot; style=&quot;&quot;&gt;&lt;a href=&quot;https://github.com/ssooni/data_mining_practice&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot; style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 12pt; color: rgb(255, 255, 255);&quot;&gt;https://github.com/ssooni/data_mining_practice&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;- 자세한 소스코드는 Github에 올렸습니다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;- 데이터 파일도 올려 드리고 싶지만 실제 카카오톡 대화내용이라 일부분만 올렸습니다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;- 소스코드는 짬짬히 업로드할 예정입니다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;오래 전부터 시도를 해보고 싶었지만, 카카오톡 대화 데이터를 이용해서 워드 클라우드부터&amp;nbsp;Word2Vector 등등 텍스트 마이닝에서 사용하는 기법을 사용해 볼려고 합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;통계적 지식은 거의 전무하지만, 1년간 우연히 텍스트 마이닝 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;프로젝트를 하면서 어깨 너머 보고 배운 것을 기반으로 소소한 프로젝트를 만들어 보았습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;프로젝트 폴더 구조&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D106415C0A798510&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D106415C0A798510&quot; width=&quot;500&quot; height=&quot;612&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;1. 카카오톡 대화를 Text 파일로 저장합니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;컴퓨터 카카오톡을 켜서 아무 대화 방에서 &lt;b&gt;Ctrl + S&lt;/b&gt;를 누르면 대화를 텍스트 파일로 저장이 가능합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;저는 여자친구와 나눈 대화를 실험 재료로 사용하고자 합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9995054C5C0A76EA11&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9995054C5C0A76EA11&quot; width=&quot;500&quot; height=&quot;527&quot; filename=&quot;캡처.PNG&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그리고 프로젝트의 raw_data 폴더에 넣어 둡니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;저는&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;raw_data/kko.txt&lt;/span&gt;&lt;/u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;파일로 저장해두었습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;2. 정규표현식&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;정규표현식은 찾고자하는&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;텍스트가 일정한 패턴을 가지고 있을 때, 해당 패턴을 표현하기 위해 사용하는 언어&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;입니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;가독성이 썩 좋지 않아서&amp;nbsp;처음에 진입하기&amp;nbsp;꺼려지지만, 알아두면 텍스트에서 원하는 부분만 가져오기 편합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;카카오톡에 저장된 내용을 보면 다음과 같은 패턴을 알 수 있습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99DDA1425C0A821515&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99DDA1425C0A821515&quot; width=&quot;500&quot; height=&quot;186&quot; filename=&quot;그림3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;언젠가 사용하리라 생각하면서,&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;일자 정보&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;와 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;누가&lt;/span&gt;&lt;/u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; &lt;/span&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;몇 시&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;에 &lt;/span&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;어떤 말&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;을하는지까지 패턴을 이용하여 추출하고자 합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;위의 패턴을 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;정규표현식으로 표현하면 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A6A5375C0A839717&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A6A5375C0A839717&quot; width=&quot;500&quot; height=&quot;42&quot; filename=&quot;그림5.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;꼼꼼하게 날짜의 패턴에서 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;숫자의 갯수를 지정하거&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;나, 시간 부분도 표현이 가능하지만, 정형화된 패턴이라 너프하게 표현했습니다.&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이제 Python으로 정규표현식을 적용해봅시다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(140, 140, 140); font-size: 10pt;&quot;&gt;regex.py의 일부분&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;def&lt;/span&gt;&amp;nbsp;apply_kko_regex(msg_list):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kko_pattern&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;re.compile(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;\[([\S\s]+)\]&amp;nbsp;\[(오전|오후)&amp;nbsp;([0-9:\s]+)\]&amp;nbsp;([^\n]+)&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kko_date_pattern&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;re.compile(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;---------------&amp;nbsp;([0-9]+년&amp;nbsp;[0-9]+월&amp;nbsp;[0-9]+일)&amp;nbsp;&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;emoji_pattern&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;re.compile(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;[&quot;&lt;/span&gt;u&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;\U0001F600-\U0001F64F&quot;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;emoticons&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;u&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;\U0001F300-\U0001F5FF&quot;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;symbols&amp;nbsp;&amp;amp;&amp;nbsp;pictographs&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;u&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;\U0001F680-\U0001F6FF&quot;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;transport&amp;nbsp;&amp;amp;&amp;nbsp;map&amp;nbsp;symbols&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;u&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;\U0001F1E0-\U0001F1FF&quot;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;flags&amp;nbsp;(iOS)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;]+&quot;&lt;/span&gt;,&amp;nbsp;flags&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;re.UNICODE)&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;파이썬의 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;re package&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;으로 정규표현식을 컴파일하여 문자열에서 패턴 추출을 할 수 있도록 제공합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;카카오톡 대화 부분과 날짜 패턴을 생성합니다. 그리고 추가적으로 이모지 패턴을 넣어줍니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;(이모지 패턴은 StackOverflow를 참고하여 작성하였습니다.)&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이모지 패턴은 이후에 사용할 &lt;u&gt;&lt;b&gt;형태소 분석기 꼬꼬마(Kkma)에서 이모지를 만나면 에러가 발생&lt;/b&gt;&lt;/u&gt;해서, 이모지를 제거하기 위한 목적으로 만들었습니다.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(140, 140, 140); font-size: 10pt;&quot;&gt;regex.py의 일부분&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;overflow: auto; position: relative !important;&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;def&lt;/span&gt;&amp;nbsp;apply_kko_regex(msg_list):&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&amp;nbsp;상단&amp;nbsp;생략&amp;nbsp;&quot;&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kko_parse_result&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;list()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_date&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;for&lt;/span&gt;&amp;nbsp;msg&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;in&lt;/span&gt;&amp;nbsp;msg_list:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;날짜&amp;nbsp;부분인&amp;nbsp;경우&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;len&lt;/span&gt;(kko_date_pattern.findall(msg))&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#c10aff&quot;&gt;0&lt;/span&gt;:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_date&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;dt.datetime.strptime(kko_date_pattern.findall(msg)[&lt;span style=&quot;color:#c10aff&quot;&gt;0&lt;/span&gt;],&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;%Y년&amp;nbsp;%m월&amp;nbsp;%d일&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_date&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;cur_date.strftime(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;%Y-%m-%d&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;else&lt;/span&gt;:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kko_pattern_result&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;kko_pattern.findall(msg)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;len&lt;/span&gt;(kko_pattern_result)&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#c10aff&quot;&gt;0&lt;/span&gt;:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tokens&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;list(kko_pattern_result[&lt;span style=&quot;color:#c10aff&quot;&gt;0&lt;/span&gt;])&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;이모지&amp;nbsp;데이터&amp;nbsp;삭제&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tokens[&lt;span style=&quot;color:#ff3399&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;1&lt;/span&gt;]&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;re.sub(emoji_pattern,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&quot;&lt;/span&gt;,&amp;nbsp;tokens[&lt;span style=&quot;color:#ff3399&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;1&lt;/span&gt;])&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tokens.insert(&lt;span style=&quot;color:#c10aff&quot;&gt;0&lt;/span&gt;,&amp;nbsp;cur_date)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kko_parse_result.append(tokens)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kko_parse_result&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;pd.DataFrame(kko_parse_result,&amp;nbsp;columns&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;[&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Date&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Speaker&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;timetype&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;time&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;contents&quot;&lt;/span&gt;])&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kko_parse_result.to_csv(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;./result/kko_regex.csv&quot;&lt;/span&gt;,&amp;nbsp;index&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;False)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;kko_parse_result&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;이후의 코드는 파일에서 읽은 메세지를 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;정규식을 이용하여 패턴을 추출하고 이모지의 경우 삭제하는 코드입니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;line 14&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;문자열 Type str&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;의 내장 함수 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;findall()은 정규식 패턴에 해당하는 모든 문자열을 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;추출해줍니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;line 18&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;특정 패턴을 가진 문자열을 치환하는 경우 re.sub()를 사용합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;u&gt;&lt;i&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;re.sub(패턴, 치환&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;문자열, 대상 str)&lt;/span&gt;&lt;/i&gt;&lt;/u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;지금의 경우에는 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;모든 이모지 패턴의 문자를 메세지 텍스트에서&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;삭제하기 위해 사용&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;하였습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;line 22-23&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;추출된 결과를 pandas.DataFrame에 저장하고 csv 파일로 저장합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 418px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99AD2B4A5C0A8A7125&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99AD2B4A5C0A8A7125&quot; width=&quot;418&quot; height=&quot;198&quot; filename=&quot;그림6.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;3. 한글 형태소 분석기 적용&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;우리가 글을 배울 때, 단어를 익히고 문장을 배우고 문장들을 이어서 문맥을 완성합니다.&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이처럼 텍스트를 분석할 때 처음부터 문장 전체를 사용하지 않습니다.&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;작은 단위로 쪼개는 과정을&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;Tokenizing 라고 하는데,&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;형태소 단위&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;까지 쪼개는 경우도 있고, 단어 중심으로 쪼개는 경우도 있습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;저는 한글 형태소 분석 모듈 KoNLPy를 이용하여 형태소 단위로 쪼개는 것을 선택하였습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;설치는 Anaconda Prompt에서 아래의 명령어를 입력하면 설치가 가능합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); background-color: rgb(0, 0, 0); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;&amp;gt;&amp;gt; pip install konlpy&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;KoNLPy에는 Hannanum, Kkma, Komoran 등의 형태소 분석 패키지를 제공하는데 저는 Kkma(꼬꼬마)를 사용했습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;특별한 이유는 없습니다.. 꼬꼬마라는 네이밍이&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;귀여워서 선택했을 뿐..&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(140, 140, 140); font-size: 10pt;&quot;&gt;kkma_token.py의 일부분&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;re&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;pandas&amp;nbsp;as&amp;nbsp;pd&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;from&lt;/span&gt;&amp;nbsp;konlpy.tag&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;Kkma&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;def&lt;/span&gt;&amp;nbsp;get_noun(msg_txt):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kkma&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;Kkma()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nouns&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;list()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;ㅋㅋ,&amp;nbsp;ㅠㅠ,&amp;nbsp;ㅎㅎ&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pattern&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;re.compile(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;[ㄱ-ㅎㅏ-ㅣ]+&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;msg_txt&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;re.sub(pattern,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;&quot;&lt;/span&gt;,&amp;nbsp;msg_txt).strip()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;len&lt;/span&gt;(msg_txt)&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#c10aff&quot;&gt;0&lt;/span&gt;:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pos&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;kkma.pos(msg_txt)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;for&lt;/span&gt;&amp;nbsp;keyword,&amp;nbsp;type&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;in&lt;/span&gt;&amp;nbsp;pos:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;고유명사&amp;nbsp;또는&amp;nbsp;보통명사&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;if&lt;/span&gt;&amp;nbsp;type&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;NNG&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;or&lt;/span&gt;&amp;nbsp;type&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;NNP&quot;&lt;/span&gt;:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nouns.append(keyword)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;print&lt;/span&gt;(msg_txt,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;-&amp;gt;&quot;&lt;/span&gt;,&amp;nbsp;nouns)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;nouns&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;line 10 - 11&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;카카오톡 데이터로 분석하다보니 ㅋㅋ ㅎㅎ 등을 제거하는 로직을 추가하였습니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;ㅋㅋ, ㅎㅎ, ㅜㅜ는 그래도 꼬꼬마에서 무난하게 이모티콘으로 해석해 줍니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;하지만 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&quot;ㅁㄹ데&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;ㅂ제더레ㅐ벚대ㅏ에&quot;와 고양이가 타이핑한 게&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;들어가니까 성능이 매우 느려져서 제거&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;하는 것을 추가 했습니다.&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;line 14&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;물론 &lt;b&gt;kkma.nouns() 라는 명사만 따로 추출하는 함수를 제공&lt;/b&gt;해주는데, 모든 조합 가능한 명사를 제공하는 건지 마음에 안들어서&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;u&gt;kkma.pos()를 사용하여 문장에 속하는 것들의 품사를 분석한 뒤&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;u&gt;그 중에 명사나 고유 명사에 해당하는 것만 추출&lt;/u&gt;&lt;/b&gt;했습니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;결과물&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 446px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993EDC415C0A94402F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993EDC415C0A94402F&quot; width=&quot;446&quot; height=&quot;152&quot; filename=&quot;그림7.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;카카오톡 특징상 맞춤법, 띄어쓰기가 전혀 안되있다보니 정확성은 떨어집니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;서로간의 애칭이나 신조어가 들어가는 경우에 더욱 이상하게 분리를 하는데 이 경우에는 사전에 추가를 해주면 됩니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;. Kkma 사전에 키워드&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;추가&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;Ana&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;conda 설치경로/Lib/site-packages/konlpy/java 경로로 이동합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 468px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/994715355C0A978E2D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F994715355C0A978E2D&quot; width=&quot;468&quot; height=&quot;378&quot; filename=&quot;그림8.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;kkma-2.0.jar의 압축을 풀어 준 후 폴더&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;로 이동합니다.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;폴더 안에 dic 폴더에 사전들이 있습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99EBB6365C0A98942F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99EBB6365C0A98942F&quot; width=&quot;500&quot; height=&quot;254&quot; filename=&quot;그림9.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;해당 사전에 마지막에 추가하고자 하는 내용을 넣어 줍니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;명사만 저는 추가하였습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D6D43C5C0A99BC2F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D6D43C5C0A99BC2F&quot; width=&quot;500&quot; height=&quot;113&quot; filename=&quot;그림11.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이전 폴더로 이동해서&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;jar 파일로 다시 아카이브한 후 덮어쓰면 사전이 적용 됩니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;카카오톡 대화 내용에 형태소 분석기를 적용하여 보았습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;다음 포스팅에서는 워드클라우드를 생성하는 것을 주제로 찾아 뵙겠습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;도움되셨다면 공감버튼 눌러주세요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;공감 버튼은 작성자에게 큰 동기부여가 됩니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Data Mining</category>
      <category>kkma</category>
      <category>kkma 사용자 사전</category>
      <category>konlpy</category>
      <category>꼬꼬마</category>
      <category>데이터 마이닝 예제</category>
      <category>카카오톡 대화 분석</category>
      <category>텍스트 마이닝 예제</category>
      <category>파이썬 데이터 마이닝</category>
      <category>한글 형태소 분석기</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/88</guid>
      <comments>https://ssoonidev.tistory.com/88#entry88comment</comments>
      <pubDate>Sat, 8 Dec 2018 01:08:15 +0900</pubDate>
    </item>
    <item>
      <title>암수살인을 보고 왔습니다 (스포주의)</title>
      <link>https://ssoonidev.tistory.com/87</link>
      <description>&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9992CB405BD1DA1416&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9992CB405BD1DA1416&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;20181023_211835.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); background-color: rgb(0, 0, 0); padding: 10px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;영화 내용은 안 궁금하고 재밌는지 궁금한 사람들은 위해 &lt;/span&gt;&lt;span style=&quot;color: rgb(255, 228, 0); font-size: 12pt;&quot;&gt;선 요약&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;1. 주지훈 연기 미쳤음 때리고 싶음. 김윤석은 말할 필요도 없고..&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;2. 심리싸움과 밀당에&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;2시간 뚝딱&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;3. 무튼 재미있음&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자님과 일주일에 한 번만나는데 2시간을 대화 한 마디 못하는 영화관에서 보낸다는건 조금 아깝다고 생각해서 둘이서 영화를 자주 보지는 않는다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;하지만 이번에 영화표가 생겼고 무슨 영화를 같이볼까 하다가 암수살인 이라는 영화를 봤다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;영화 개봉 전부터 유가족 분들과 문제로 이슈가 되었던 그 영화&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그래서 처음에는 거부감도 있었지만 마땅히 끌리는 영화도 없었기 떄문에 이 영화를 보게되었다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;범죄수사물은 보통 범인은 끝까지 자기가 무죄라고 우기는 과정에서 힘들게 증거를 찾아서 범인의 죄를 입증하는 시나리오가 대부분이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그렇기 때문에 영화가 극적으로 보이기 위해서 찾아가는 과정을 어렵고 힘들게 전개한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;근데 이 영화는 양상이 다르다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이미 살인죄로 잡혀있는 범인이 진짜 증거는 다른 곳에 있고 사람을 많이 죽였다고 주장한다.&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이 부분부터 왜 범인이 저러는 걸까? 의문을 가지면서 영화를 보게 된다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;정말 재미를 위한 영화였다면, 영화 마지막에서 그 답을 보여 준다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;가장 마지막에 형사가 그동안 속았으며, 범인이 승리하는 시나리오가 관객들에게 큰 반전으로 다가 올수도 있었기 때문이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;하지만 영화의 중반부에서 그동안 자백한 사건들을&amp;nbsp;강압과 뇌물에 의한 자백으로 무죄를 만들고, 입건된 사건도 같은 이유로 무죄를 만들기 위한다는 사실을 알려준다.&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그 사실을 아는데도 형사는 계속 수사를 하고, 그 과정에서 뇌물을 주면서&amp;nbsp;범인의 시나리오대로 흘러가는 답답한 서사를 보여준다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그리고 범인이 무죄를 선고 받고 버스에 오르면서 외치는 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;'사필귀정'&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;모든 일들은 반드시 바르게 돌아 온다&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;는 말을 아이러니하게도 범인이 얘기를 한다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이 영화에서 범인이 외치는 사필귀정만큼 어이없는 일들이 영화 속에서 발생하는데...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); background-color: rgb(0, 0, 0); padding: 10px;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;1. 범인은 살인을 하였으나, &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;고작 &lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;15년형&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;을 선고받고 살고 있었다는 점&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;2. 그게 하필이면 경찰이 증거를 조작해서 감형을 받았다는 점&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;3. 실적에 쫓겨 미제 사&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;건을 조사하지 않은 경찰&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;(증거 조작도 결국 실적에 쫓겨서 일어난 일..)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;4. 존속살인(아버지)의&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;&amp;nbsp;공소시효가 지나서 법적으로 따지&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;지 못한다는 말에 모든 것을 얘기하는&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;&amp;nbsp;범인의 누나&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/span&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;최근 우리나라의 부조리한 이슈와 대입할 만한 사건들을&amp;nbsp;나열하고, 형사가 하는 일의 정당성을 같은 시대를 사는 관객들과 공감하고자 노력했다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;개인적으로 나는 형사의 이 대사에서 범인 뜻대로&amp;nbsp;진행하는 것의 정당성을 인정했다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;&lt;i&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;본인이 15년 뒤에 퇴직하는데 15년 뒤에 범인이 출소한다.&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;&lt;i&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그 때 다시 사회에 범죄를 일으킨다해도 형사 본인이 할 수 있는게 없다.&lt;/span&gt;&lt;/i&gt;&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;&lt;i&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그래서 속는 거 알지만&amp;nbsp;끝까지 해본다.&lt;/span&gt;&lt;/i&gt;&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;형사의 끈질긴 조사 끝에 결정적인 증거를 찾게 되고 범인은 형사의 소망대로 영원히 사회와 격리되며 영화는 마무리된다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;말 그대로 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;사필귀정&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;연기를 잘한다는 배우들이 주연이라 몰입도가 좋았고, 실화를 기반으로 하였기에 잔인한 장면을 넣지 않았다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;자동차에 치이는 장면도 소리로만 묘사하고 빠르게 지나간다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;주지훈의 미친 연기력 돋보이는 영화&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;였는데,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;동정심이 하나도 안 느껴지는 미친 범죄자 연기를 너무 잘해서, 통쾌함이 더했는거 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;오랜만에 극장에서 보는 영화인데, 속시원하게 보고 온거 같다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;PS 1)&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;부산 사투리가 심한 영화다. 진짜 부산거리인 줄 알았다.&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;울산 사람인 나는 아무 문제없이 영화를 봤는데, 서울 사람인 감자님은 한마디도 못 알아 듣겠다고 표정이 안 좋았다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;PS 2)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;햇빛을 비추면 썬글라스가 되는 안경이 너무 신기했다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;주지훈이 거의 영화 내내 쓰고 다녔으니 광고 효과가..&lt;/span&gt;&lt;/p&gt;</description>
      <category>눈누난냐/영화</category>
      <category>김윤석 주지훈</category>
      <category>범죄수사</category>
      <category>암수살인</category>
      <category>암수살인 2018</category>
      <category>영화추천</category>
      <category>주지훈 연기력</category>
      <category>한국영화</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/87</guid>
      <comments>https://ssoonidev.tistory.com/87#entry87comment</comments>
      <pubDate>Fri, 26 Oct 2018 00:06:03 +0900</pubDate>
    </item>
    <item>
      <title>평양냉면 맛집 - 을밀대 강남점</title>
      <link>https://ssoonidev.tistory.com/86</link>
      <description>&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9998C8415BBE025A0C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9998C8415BBE025A0C&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;요새도 감자님과 만나면 평양냉면집을 찾아가곤 합니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;평양냉면이라는 같은 범주안에 있지만, 가게마다 맛이 전부다 다르기 때문에 찾아다니는 맛이 있는거 같아요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이번 주말에는 강남역에 있는 을밀대를 찾아갔어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;옆집이 리모델링 중이라 페인트 냄새가 거슬렸지만, 선풍기와 환풍기를 틀어서 이내 냄새가 금방 없어지긴했어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B8DF485BBE041530&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B8DF485BBE041530&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;20181009_192747.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자님이랑 저는 당연히 물냉면을 2개 주문했어요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;단골분들은 주문하는 방법이 따로 있다고 하는데 처음 와본 곳이라 그냥 기본으로 주문했어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;살얼음이 있는 냉면을 선호하지 않는다면 살얼음을 빼달라고 하면 살얼음 없는 냉면을 드실 수 있어요&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;따뜻한 육수를 주는데, 다른 평양 냉면 집에서 마시는 면수와 달리 육향이 나는 육수를 줘서 기대를 많이 했어요.&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99CDE94D5BBE048627&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99CDE94D5BBE048627&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;20181009_192310.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그런데 살얼음이 이렇게 많을 줄은 몰랐네요 ㅋㅋㅋㅋ&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;물론 먹다가 보면 잘 녹기도 하고 시원해서 좋긴했지만&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;국물을 먹기 위해서 평양냉면을 먹는 감자님은 거슬려서 먹기 힘들어 하더라고요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;면은 약간 거칠지만 가위질 없이 끊어져요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;면을 풀기 전의 국물 맛과 면을 풀고 나서 국물 맛이 비슷한데, 을밀대&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;고유의&amp;nbsp;육수 향이 강해요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그래서 면과 육수를 같이 먹어도 메밀향보다 육수 향이 더 강하게 느껴져요,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자님은 육포향이 난다고 하는데, 저는 계속 치토스가 떠올랐어요. 치토스 불고기맛을 먹는다&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;는 느낌??&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;밍밍하지도 않고 계속 코와 혀에 느껴지는 이 향이 뭘까 계속 고민하면서 먹게 되더라고요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe id=&quot;emap_137591&quot; src=&quot;/proxy/plusmapViewer.php?id=emap_137591&amp;amp;mapGb=V&quot; width=&quot;484&quot; height=&quot;362&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; mapdata=&quot;map_type=TYPE_MAP&amp;map_hybrid=false&amp;idx=1&amp;title=%EC%9D%84%EB%B0%80%EB%8C%80&amp;addr=%EC%84%9C%EC%9A%B8%20%EA%B0%95%EB%82%A8%EA%B5%AC%20%EC%97%AD%EC%82%BC%EB%8F%99%20826-37%20%EC%A7%80%ED%95%981%EC%B8%B5&amp;tel=02-552-1922&amp;mapX=506795&amp;mapY=1109940&amp;ifrW=484px&amp;ifrH=362px&amp;addtype=1&amp;map_level=5&amp;rcode=1168064000&amp;docid=&amp;confirmid=12418029&amp;mapWidth=484&amp;mapHeight=362&amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A484%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A506795%2C%22mapCenterY%22%3A1109940%2C%22mapLevel%22%3A5%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A506796%2C%22y%22%3A1109941%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%9D%84%EB%B0%80%EB%8C%80%22%2C%22confirmid%22%3A%2212418029%22%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;toJSONString=&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;분명히 호불호가 있을거 같아요. 정말 밍밍한 평양냉면 스타일을 좋아한다면 분명히 좋은 선택은 아니에요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;우래옥과 필동면옥처럼&amp;nbsp;육수에 향이 강한 냉면이니깐요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;하지만 평양냉면이 처음이라면 이 걸로 시작해보는건 좋은거 같아요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;점심 저녁 식사 선택에 조금이나마 도움이 되었으면 좋겠네요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감사합니다.&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>눈누난냐</category>
      <category>강남 평양냉면</category>
      <category>강남역 평양냉면</category>
      <category>서울 평양냉면</category>
      <category>을밀대</category>
      <category>을밀대 강남점</category>
      <category>평양냉면 맛집</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/86</guid>
      <comments>https://ssoonidev.tistory.com/86#entry86comment</comments>
      <pubDate>Wed, 10 Oct 2018 23:35:41 +0900</pubDate>
    </item>
    <item>
      <title>서가앤쿡 파히타 한상</title>
      <link>https://ssoonidev.tistory.com/84</link>
      <description>&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/992899495BB0A9AD1F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F992899495BB0A9AD1F&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;85307e79566b4eb4b87d61d483c34cdc.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;어제는 정말 여기저기 많이도 돌아 다닌 거 같아요.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;옷사러 고속터미널 갔다가 종로가서 시계 고치고 영등포로 왔어요.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;감자님의 새로운 폰을 만져보기 위해서 일렉트로마트 온김에 저녁도 타임스퀘어에서 했어요.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;식당가를 둘러보다가, 오랜만에 서가앤쿡을 방문했어요.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;메뉴판을 보면서 무얼 먹을까 했는데, 감자님이 &lt;b&gt;&lt;u&gt;파히타 한상&lt;/u&gt;&lt;/b&gt;을 먹고 싶다해서 그걸로 주문했어요.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F50B495BB0A9AE37&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F50B495BB0A9AE37&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;P20180929_192546899_652BCC10-583A-4C31-8F96-2783A1200A5D.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;한상 메뉴는 메인 메뉴 고정에 8가지 리조또 또는 파스타 중 1개를 선택 할 수 있는데요.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;저희는 그 중에서 &lt;b&gt;&lt;u&gt;게살 오이스터 파스타&lt;/u&gt;&lt;/b&gt;를 선택 했어요.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;전날에 혼자서 파스타를 해먹으면서, 요리 실력이 늘었다고 생각했는데, 아직 허접이였어요.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;파스타에서 &lt;b&gt;&lt;u&gt;불맛이 나는게 좋았고, 스파게티 소스도 느끼하지도 않고 맛있었어요.&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;물론 게살 오이스터 파스타라고 하기엔 게살도 오이스터도 잘 안보였지만, 맛있었어요.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;다음에도 서가앤쿡을 가면 이 파스타를 다시 먹을거 같아요.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9982CE495BB0A9B016&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9982CE495BB0A9B016&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;P20180929_192550758_D28D93E4-26F2-427F-9B71-0526DA71E7F4.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/998C19495BB0A9B215&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F998C19495BB0A9B215&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;P20180929_192909398_884032FF-4CD4-4F0F-87F5-D5C94A70E056.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;i&gt;사진 한번 찍어보겠다고..&lt;/i&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;서가앤쿡에서 멕시코 음식을 즐길 수 있다니...&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;감자님도 호기심에 주문했는데 만족스러워 했어요.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;또띠아에 새우와 3종류의 고기와 소스들을 넣고 싸서 먹었는데 고기마다 후추간이 되어있어서 그런지 약간 매운 맛도 났어요.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;소스 중에 토마토와 양파를 다져서 만든 소스가 있는데, 이 소스를 많이 넣었더니 맛있었어요.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;b&gt;&lt;u&gt;소스를&amp;nbsp;리필을 할려면 또띠아를 추가 주문&lt;/u&gt;&lt;/b&gt;해야 한다고 하더라고요.&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;어쩌피 고기에 비해 또띠아가 얼마 없어서 추가 주문할려고 했으니까 1000원으로 또띠아를&amp;nbsp;추가 주문했어요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;이게.. 추가 주문 전까지는 또띠아가 부족하다고 느꼈는데,&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;추가 주문후에 한장을 싸먹자마자 배가 터질거 같더라고요 ㅋㅋㅋ&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;b&gt;&lt;u&gt;처음부터 고기 새우 팍팍 넣고 입 터지게 드시는게 좋아요&lt;/u&gt;&lt;/b&gt;. 추가 주문하면 배가 너무 불러요.&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/998B75495BB0A9B33F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F998B75495BB0A9B33F&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;P20180929_193606342_D60D9FDE-94B0-47EE-8640-8AF8678B1403.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;한라봉 크림생 맥주도 주문했어요.&lt;/p&gt;&lt;p&gt;서가앤쿡을 고른게 맥주를 마실 수 있다!! 였으니깐요.&lt;/p&gt;&lt;p&gt;빨대가 있어서 빨대로 먹어라는 거구나 했는데 처음에 빨대로 먹으니까 그냥 맥주 맛이 났어요.&lt;/p&gt;&lt;p&gt;컵 길이에 비해서 짧아서 바닥은 어떻게 먹지 생각했는데, &lt;b&gt;&lt;u&gt;젓기 위한 용도로 빨대를 사용해요.&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;그리고 저어야 밑에 깔려있던 한라봉 맛이 나요.&lt;/p&gt;&lt;p&gt;차라리 이쁜컵 안써도 되니까.. 높이가 빨대랑 비슷한걸로 하면, 손도 안 묻고 좋을텐데, 이건 아쉬웠어요..&lt;/p&gt;&lt;p&gt;그렇다고 한라봉 맛이 확 나는건 아니에요. 전 비추천합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe id=&quot;emap_812612&quot; src=&quot;/proxy/plusmapViewer.php?id=emap_812612&amp;amp;mapGb=V&quot; width=&quot;484&quot; height=&quot;362&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; mapdata=&quot;map_type=TYPE_MAP&amp;map_hybrid=false&amp;idx=1&amp;title=%EC%84%9C%EA%B0%80%EC%95%A4%EC%BF%A1%20%ED%83%80%EC%9E%84%EC%8A%A4%ED%80%98%EC%96%B4%EC%A0%90&amp;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%98%81%EB%93%B1%ED%8F%AC%EB%8F%994%EA%B0%80%20442%20%EA%B2%BD%EB%B0%A9%ED%83%80%EC%9E%84%EC%8A%A4%ED%80%98%EC%96%B4%204%EC%B8%B5%20415%ED%98%B8&amp;tel=02-2638-2540&amp;mapX=478575&amp;mapY=1116028&amp;ifrW=484px&amp;ifrH=362px&amp;addtype=1&amp;map_level=4&amp;rcode=1156053500&amp;docid=&amp;confirmid=23151383&amp;mapWidth=484&amp;mapHeight=362&amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A484%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A478575%2C%22mapCenterY%22%3A1116028%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A478578%2C%22y%22%3A1116034%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%84%9C%EA%B0%80%EC%95%A4%EC%BF%A1%20%ED%83%80%EC%9E%84%EC%8A%A4%ED%80%98%EC%96%B4%EC%A0%90%22%2C%22confirmid%22%3A%2223151383%22%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;toJSONString=&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;쇼핑하다가 식사하는 사람도 많고 영화관도 있는 곳이라 웨이팅이 조금 있는 편이에요.&lt;/p&gt;&lt;p&gt;그래도 적절한 가격에 파스타를 즐길 수 있어서 만족스러웠습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;긴 글 읽어 주셔서 감사합니다.&lt;/p&gt;&lt;p&gt;공감버튼은 작성자에게 큰 동기 부여가 됩니다.&lt;/p&gt;</description>
      <category>눈누난냐</category>
      <category>서가앤쿡</category>
      <category>서가앤쿡 파히타 한상</category>
      <category>영등포 데이트</category>
      <category>영등포 서가앤쿡</category>
      <category>영등포 타임스퀘어 맛집</category>
      <category>영등포 파스타</category>
      <category>타임스퀘어 맛집</category>
      <category>타임스퀘어 서가앤쿡</category>
      <category>파히타 한상</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/84</guid>
      <comments>https://ssoonidev.tistory.com/84#entry84comment</comments>
      <pubDate>Sun, 30 Sep 2018 20:15:32 +0900</pubDate>
    </item>
    <item>
      <title>[수제버거 맛집] 릿잇타미 다녀왔습니다.</title>
      <link>https://ssoonidev.tistory.com/83</link>
      <description>&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/995257375BB074942F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F995257375BB074942F&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;ad2a7867f5984764bb32ac88c51b4e78.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자님이랑 요새 수제버거 또는 평양냉면을 자주 먹었는데요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;특히 수제버거를 먹을 때 마다 자기 동네에 수제버거 맛집있다 그곳에 데려가 주겠다고 말해놓고 안데리고 가더라고요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;추석 연휴에 고향에 다녀온 후 저녁에 만났는데, 그 때 저녁으로 뭐먹지 하다가 드디어 그렇게 맛있다고 자랑하던 릿잇타미를 다녀왔습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;무엇을 시킬까 고민하다가 가장 기본적인 클래식 아메리칸 버거와 감자님이 강추하는 시그니처 버거 1을 주문했어요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그리고 사이드로 호기심으로 코울슬로를 주문했어요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9948E5345BB078CC1D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9948E5345BB078CC1D&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;2018-09-26 19.59.09.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;짜잔~ &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;클래식 아메리칸 버거&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;에요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;참깨빵 안에 바짝 구워진 패티와 야채들이 있어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그동안 먹어왔던 수제버거와 달리 참깨빵이라서 약간 고소하긴 했어요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;간혹 빵이 과하게 촉촉해서 입안에서 찐득거리거나 푸석해서 잘 안넘어 가는 경우도 있는데, 빵은 적당하게 촉촉했어요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;치즈랑 패티랑 간도 적절해서 부담없이 먹을 수 있었어요.&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9966E2345BB078CA1B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9966E2345BB078CA1B&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;2018-09-26 19.59.05.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/span&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E2F6345BB078CF0F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E2F6345BB078CF0F&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;2018-09-26 20.01.26.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자님 강추하는 메뉴인 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;시그니처 버거 1&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;입니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;빵이 먹물빵에 제가 좋아하는 베이컨도 있고, &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;아보카도가 엄청나게 들어 있어요.&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;하 근데.. 제가 아보카도 맛을 몰라요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;평양냉면 처음 먹을 때 이게 맛있다고?? 느낀거처럼 맛을 몰라요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;근데 아보카도를 크게 썰어서&amp;nbsp;많이 넣어주니까, 조금이나마 맛을 알거 같아요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;아보카도와 고기 패티랑 같이 먹었을 때, 식감을 부드럽게 만들어 줘서 기분 좋은 식감을 제공해 줬어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이름 그대로 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;가게를 대표하는 시그니처답게 개성이 두드러진 버거&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;였어요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9929C9345BB078CE0E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9929C9345BB078CE0E&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;2018-09-26 19.59.14.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이건 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;코울슬로&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;에요. 햄버거를 먹다보면 느끼하다고 생각할 때 먹으면 참 좋아요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;아삭아삭 거리는 식감과 새콤해서 만족스러웠는데,&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이게 기본으로 주는게 아니라 4000원을 주고 구입해야 하는 거라, 혼자 먹기에는 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;가성비가 좋은 건 아니에요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;여러명이서 하나를 시켜놓고 먹는 걸 추천할게요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe id=&quot;emap_598438&quot; src=&quot;/proxy/plusmapViewer.php?id=emap_598438&amp;amp;mapGb=V&quot; width=&quot;484&quot; height=&quot;362&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; mapdata=&quot;map_type=TYPE_MAP&amp;map_hybrid=false&amp;idx=1&amp;title=%EB%A6%BF%EC%9E%87%ED%83%80%EB%AF%B8&amp;addr=%EC%84%9C%EC%9A%B8%20%EC%84%9C%EC%B4%88%EA%B5%AC%20%EB%B0%A9%EB%B0%B0%EB%8F%99%20451-31%20&amp;tel=02-525-1976&amp;mapX=496410&amp;mapY=1105263&amp;ifrW=484px&amp;ifrH=362px&amp;addtype=1&amp;map_level=4&amp;rcode=1165061000&amp;docid=&amp;confirmid=939832076&amp;mapWidth=484&amp;mapHeight=362&amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A484%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A496410%2C%22mapCenterY%22%3A1105263%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A496413%2C%22y%22%3A1105265%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EB%A6%BF%EC%9E%87%ED%83%80%EB%AF%B8%22%2C%22confirmid%22%3A%22939832076%22%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;toJSONString=&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;사당역이 고기집이나 곱창 등등 회식에 최적화된 식당들이 많아서,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;저&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;희같은 커플들이나 친구들끼리 가볍게&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;먹을 만한 식당이 많지 않은데요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;릿잇타미는 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;조용한 곳에서 맥주 한 잔으로 조용히 대화를 나누기에 좋은 수제버거집입니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;긴 글 읽어주셔서 감사합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;공감 버튼은 작성자에게 큰 동기부여가 됩니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>눈누난냐</category>
      <category>릿잇타미</category>
      <category>사당 맛집</category>
      <category>사당역 데이트</category>
      <category>사당역 맛집</category>
      <category>사당역 브런치</category>
      <category>사당역 수제버거</category>
      <category>서울 수제버거</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/83</guid>
      <comments>https://ssoonidev.tistory.com/83#entry83comment</comments>
      <pubDate>Sun, 30 Sep 2018 19:17:49 +0900</pubDate>
    </item>
    <item>
      <title>경복궁 야간개장 다녀왔습니다!!</title>
      <link>https://ssoonidev.tistory.com/82</link>
      <description>&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9987C1335BA4FBA534&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9987C1335BA4FBA534&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;경복궁 야간개장은 올해 여름에 가족들이 서울에 올라와서 서울구경시켜 드릴 때 한번 다녀온적이 있는데요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;여름에는 티켓&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;팅하는데 힘들지가 않았어요. 오히려 표가 남아 돌길래 망했나? 생각들었거든요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;하지만 역시&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;날이 선선해지고&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;대학생들이 개강을 하자 티켓이 금방 소진되어 버렸어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;야간개장 기간과 추석이 겹친 것도 금방 소진된 이유인거 같아요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9908D53C5BA4FE530F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9908D53C5BA4FE530F&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;2018-09-20 19.30.21.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;여름에 다녀왔을 때 부러워하던 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자님이 옥션에서 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;티켓팅을 했어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;경복궁 야간개장 표는 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;옥션과 인터파크 두 군데에서 구매할 수 있고, 현장 발권은 안된다는 점 잊지마세요&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;!!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 0, 0); background-color: rgb(0, 0, 0); padding: 10px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;color: rgb(71, 200, 62); font-size: 12pt;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(71, 200, 62); font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;2018년 경복궁 야간개장 일정&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto, &amp;quot;Nanum Barun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, dotum, 돋움;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Roboto, &amp;quot;Nanum Barun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, dotum, 돋움; color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;- 5월: 5. 20. ~ 6. 2. / 19:00 ~ 21:30(입장 마감 20:30)&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;font-family: Roboto, &amp;quot;Nanum Barun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, dotum, 돋움;&quot;&gt;&lt;span style=&quot;font-family: Roboto, &amp;quot;Nanum Barun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, dotum, 돋움;&quot;&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;- 6월: 6. 17. ~ 6. 30. / 19:30 ~ 22:00(입장 마감 21:00)&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: Roboto, &amp;quot;Nanum Barun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, dotum, 돋움;&quot;&gt;&lt;span style=&quot;font-family: Roboto, &amp;quot;Nanum Barun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, dotum, 돋움;&quot;&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;- 7월: 7. 22. ~ 8. 4. / 19:30 ~ 22:00(입장 마감 21:00)&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: Roboto, &amp;quot;Nanum Barun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, dotum, 돋움;&quot;&gt;&lt;span style=&quot;font-family: Roboto, &amp;quot;Nanum Barun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, dotum, 돋움;&quot;&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;- 9월: 9. 16. ~ 9. 29. / 19:00 ~ 21:30(입장 마감 20:30)&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: Roboto, &amp;quot;Nanum Barun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, dotum, 돋움;&quot;&gt;&lt;span style=&quot;font-family: Roboto, &amp;quot;Nanum Barun Gothic&amp;quot;, &amp;quot;맑은 고딕&amp;quot;, &amp;quot;Malgun Gothic&amp;quot;, dotum, 돋움; color: rgb(255, 255, 255); font-size: 12pt;&quot;&gt;- 10월: 10. 21. ~ 11. 3. / 19:00 ~ 21:30(입장 마감 20:30)&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/span&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993AA73C5BA508030B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993AA73C5BA508030B&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;2018-09-20 19.31.08.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;낮에 내리던 비가 그쳤지만 날씨가 우중충하니 영 좋지 못했어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;심지어 약간 쌀쌀하기까지 했어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그래도&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;흔하디 흔한 커플들 부터 흔하지 않은&amp;nbsp;여자 한복을 입은 남자분까지&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; 비오는 날에도 많은 사람들이 찾아왔어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;(친구들끼리 저렇게 노는것도 정말 재밌는 추억이라 부럽기도 하고, 용기가 대단하기도 해요;;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;ㅋㅋㅋㅋ 멋져..)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9937B33B5BA4FEEC12&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9937B33B5BA4FEEC12&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;2018-09-20 19.56.23.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;저녁 8시 가까히 되는데 하늘이 아주 밝아요.&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;야경이 아름다운 건 깜깜한 하늘이 어느 정도 받쳐줘야 빛이 나는데, 날이 영 따라주지 못했어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;창경궁 야간개장 때는 너무 컴컴해서 앞이 안보였지만, 어둠 속에서 홀로 빛나는 궁궐의 모습이 아름다웠거든요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;차라리 이곳 저곳 구경하다가 저녁 8&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;시 반&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;에 들어 갔으면 더 이쁘지 않았을까 생각도 해요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F8F23D5BA503940C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F8F23D5BA503940C&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;2018-09-20 19.44.57.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;경복궁 야간개장의 백미인 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;경회루&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;에요.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;사실상 경회루 야간개장이죠&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;. 가장 매력적인 곳이라고 생각해요. &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;사진 찍는 분도 이 곳이 제일 많아요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;왕도 신하도 머리는 식혀야하니 궁궐 안에 연못을 만들었는데, 후대까지 이렇게 머리를 식혀줘서 고맙네요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;개인적으로 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;경회루 누각이&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; 연못에 반사되는 모습&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이 아름다워요.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그 모습을 촬영하고 싶었는데 비가오는 날이라 연못에 물보라가 많아서 난반사가 심하네요 ㅠㅠ&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9998B33E5BA505CC03&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9998B33E5BA505CC03&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;20180729_200844.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이건 여름에 가족들과 다녀왔을 때 경회루 사진이에요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;연못에 반사되는 경회루 모습 보이시나요??&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;나무들도 잔잔한 호수에 반사되는 이 모습에 반해서 다시 찾아갔는데 조금 아쉽네요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;여름에 야간개장을 가실 때는 이처럼&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;모기와 어둡지 않은 야간개장&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;을 경험할 수 있어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;하지만 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;점점 어두워지면서 아름다워지는 야경을 경험&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;하는 것도 나름 좋은 구경거리였어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;저는 개인적으로 10월이 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;기대가 되요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;서울의 궁궐들이 가장 아름다울 때는 노란 은행잎이 떨어지는 가을&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이라 생각하거든요.&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;iframe id=&quot;emap_288114&quot; src=&quot;/proxy/plusmapViewer.php?id=emap_288114&amp;amp;mapGb=V&quot; width=&quot;484&quot; height=&quot;362&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; mapdata=&quot;map_type=TYPE_MAP&amp;map_hybrid=false&amp;idx=1&amp;title=%EA%B2%BD%EB%B3%B5%EA%B6%81&amp;addr=%EC%84%9C%EC%9A%B8%20%EC%A2%85%EB%A1%9C%EA%B5%AC%20%EC%84%B8%EC%A2%85%EB%A1%9C%201-91%20&amp;tel=&amp;mapX=494895&amp;mapY=1132793&amp;ifrW=484px&amp;ifrH=362px&amp;addtype=1&amp;map_level=4&amp;rcode=1111051500&amp;docid=&amp;confirmid=18619553&amp;mapWidth=484&amp;mapHeight=362&amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A484%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A494895%2C%22mapCenterY%22%3A1132793%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A494898%2C%22y%22%3A1132795%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EA%B2%BD%EB%B3%B5%EA%B6%81%22%2C%22confirmid%22%3A18619553%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;toJSONString=&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자님도, 살면서 처음 경복궁을 본 엄마도 만족했던 야간 개장이에요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;외국인 친구, 가족, 여자친구와 한 번 다녀오는 건 어떠세요??&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;티켓팅이 힘든 만큼 여러분에게 좋은 추억이 됩니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;긴 글 읽어주셔서 감사합니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;공감 버튼은 작성자에게 큰 동기부여가 됩니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>눈누난냐</category>
      <category>경복궁</category>
      <category>경복궁 야간개장</category>
      <category>서울 당일치기</category>
      <category>서울 데이트</category>
      <category>서울 여행</category>
      <category>야간개장</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/82</guid>
      <comments>https://ssoonidev.tistory.com/82#entry82comment</comments>
      <pubDate>Sat, 22 Sep 2018 00:22:41 +0900</pubDate>
    </item>
    <item>
      <title>이화동 벽화마을 카페 - 라디오 데이즈</title>
      <link>https://ssoonidev.tistory.com/81</link>
      <description>&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997574425B94C49212&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997574425B94C49212&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;47f9a67d3f374ce486c42ea754b71c49.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;대학로에서 연극 &lt;/span&gt;&lt;a href=&quot;http://ssoonidev.tistory.com/79&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;러브스코어&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;를 보고 나서 낙산공원을 통해서 내려오는 길에 우연히 이화동 벽화마을을 방문하게 되었어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;서울을 이곳저곳 많이 다녔다고 생각했는데 아직 가지 않은 곳이 많았네요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99358A475B94CC0712&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99358A475B94CC0712&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;사진 2018. 9. 8. 오후 5 49 07.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;낙산공원에서 내려가는 길에 개성있는 많은 카페들이 많았어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;루프탑에 의자를 두어 멀리 경치를 구경하면서 맥주도 마실 수 있고요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;근데 대부분 루프탑 카페들이 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;서향으로 테이블을 배치해서, 5시쯤에 가면 눈부신 석양에 눈을 뜰 수가 없어요.&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;아예 해가 지고 나서 방문하거나 아침에 방문하는게 좋을거 같아요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자님과 저는 아래에 더 좋은 카페가 있을 거라는 단순한 믿음과 처음오는 이 곳을 더 구경하기로 했습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A2284E5B94CF212F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A2284E5B94CF212F&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;사진 2018. 9. 8. 오후 5 55 54 (1).jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;곰돌이 인형이 앉아 있는 카페도 지나쳤어요. 이목을 끌기에 충분히&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;귀여운 곰돌이네요&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;매번 느끼지만 아이패드의 화질은 정말 좋은거 같아요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;대충 찍어도 쓸 만한 사진들이 나오니까 사진 찍을때도 기분이 좋은거같아요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 375px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9960BD3A5B94CFE70C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9960BD3A5B94CFE70C&quot; width=&quot;375&quot; height=&quot;500&quot; filename=&quot;사진 2018. 9. 8. 오후 6 55 47.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;구경을 하다가 조용한 카페로 들어 갔습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;옛날에 사용한 라디오들을 전시되어 있는 카페였어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;음료는 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;아메리카노는 4500원, 나머지는 5000원&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이였어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;가격이 안 적혀서, 감자님이 많이 당황했는데 친절하게 알려 주셨어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;가게는 두 개 층으로 되어있는데, 테라스에서 커피 한 잔 해보자해서 2층으로 감자님을 데리고 갔어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 375px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9958733C5B94D81414&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9958733C5B94D81414&quot; width=&quot;375&quot; height=&quot;500&quot; filename=&quot;KakaoTalk_20180908_221706486.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;올라가는 계단에 옛날 라디오를 전시해뒀어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;나무 재질의 느낌이 개인적으로 저는 좋더라구요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;테라스는 역시 서향이였어요. 해가 지고있어서 눈부시지만 곧 질거라 견뎌 보기로 했습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/span&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99DFE84D5B94DCFE24&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99DFE84D5B94DCFE24&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;사진 2018. 9. 8. 오후 6 07 43 (1).jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;햇볕은 쨍쨍 커피는 맛있다.&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;정말 기가 막히게 눈부셨어요. 강제로 태닝을 했어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;커피는 괜춘했어요. 저는 예가체프 시키고 감자님은 아이스 아메리카노 시켰는데, 드립커피라 좀 진하긴 해요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;진한 커피를 선호하지 않는다면 드립커피는 피하시는게 좋아요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;날씨가 그래도 선선해서 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;경치를 즐기면서 휴식을 취할 수 있었어요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;iframe id=&quot;emap_316643&quot; src=&quot;/proxy/plusmapViewer.php?id=emap_316643&amp;amp;mapGb=V&quot; width=&quot;484&quot; height=&quot;362&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; mapdata=&quot;map_type=TYPE_MAP&amp;map_hybrid=false&amp;idx=1&amp;title=%EC%9D%B4%ED%99%94%EB%8F%99%20%EB%B2%BD%ED%99%94%EB%A7%88%EC%9D%84&amp;addr=%EC%84%9C%EC%9A%B8%20%EC%A2%85%EB%A1%9C%EA%B5%AC%20%EC%9D%B4%ED%99%94%EB%8F%99%20&amp;tel=&amp;mapX=501470&amp;mapY=1132711&amp;ifrW=484px&amp;ifrH=362px&amp;addtype=1&amp;map_level=2&amp;rcode=1111064000&amp;docid=&amp;confirmid=25039734&amp;mapWidth=484&amp;mapHeight=362&amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A484%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A501470%2C%22mapCenterY%22%3A1132711%2C%22mapLevel%22%3A2%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A501470%2C%22y%22%3A1132712%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%9D%B4%ED%99%94%EB%8F%99%20%EB%B2%BD%ED%99%94%EB%A7%88%EC%9D%84%22%2C%22confirmid%22%3A%2225039734%22%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;toJSONString=&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;여기서 사시는 분들은 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;사생활도 없고, 관광객들 소음 때문에 스트레스를 많이 받는거 같아서&lt;/span&gt;&lt;/u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;안타까웠어요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;1박2일 프로그램에서 얼핏 본적있는 벽화들이 훼손되어 있고, 담벼락에 원치 않은 벽화마을이라고 빨간색 라카로 칠해져 있더라고요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;북촌 한옥마을이나 이화동 벽화마을처럼 거주지와 관광지가 결합되어 있는 경우에는 민폐를 안 주도록 조용히 다녀야겠어요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;공감버튼은 작성자에게 큰 동기부여가 됩니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;긴 글 읽어주셔서 감사합니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>눈누난냐</category>
      <category>데이트</category>
      <category>라디오 데이즈</category>
      <category>루프탑카페</category>
      <category>서울 벽화마을</category>
      <category>서울 카페</category>
      <category>이화동 벽화마을</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/81</guid>
      <comments>https://ssoonidev.tistory.com/81#entry81comment</comments>
      <pubDate>Sun, 9 Sep 2018 17:59:29 +0900</pubDate>
    </item>
    <item>
      <title>남산골 한옥마을에 야시장이 열렸어요</title>
      <link>https://ssoonidev.tistory.com/80</link>
      <description>&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997EDE445B94ADF11F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997EDE445B94ADF11F&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;468e4634199944a1b6c5fbf7add850d3.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자님이랑 8월에 페이스북에 야시장한다는 걸 보고 찾아 갔는데, 8월은 더워서 그런지 야시장을 하지 않았어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;올해&amp;nbsp;심각한 폭염이였는데, 헛걸음을 해서 기분이 언짢았지만, 9월되면 다시 방문하리라 다짐했어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/span&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D9D2395B94B37A0D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D9D2395B94B37A0D&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;사진 2018. 9. 8. 오후 7 48 39.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;남산골 야시장은 &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;9월 1일부터 11월 3일까지 매주 토요일&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;에 열어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;비가 오는 날은 열지 않는다고 하네요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;남산골 한옥마을을 낮에 방문 했을 때는 웨딩촬영도 이 곳에서 하는 부부들도 있어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 375px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/992245335B94B5D112&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F992245335B94B5D112&quot; width=&quot;375&quot; height=&quot;500&quot; filename=&quot;사진 2018. 9. 8. 오후 7 49 49.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;야시장은 남산골 한옥마을에 들어가는 입구에서 바로 볼 수 있어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;야시장에는 주로 지역 특산물이나 떡볶이, 순대, 전 같은 걸 팔아요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;떡볶이랑 닭꼬치를 먹었는데, 괜찮은 편이였어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;닭꼬치가&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;어느 부위를 쓰는지&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;생각보다 부드러워서 맛있어요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;주변을 둘러보니까 전을 드시면서 막걸리를 즐기시는 분들도 있더라구요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;밤도깨비 야시장에 비해 조용하고 날도 선선해서 막걸리가 마시기에 딱 좋을 거 같아요&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993A5F4D5B94BB6116&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993A5F4D5B94BB6116&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;사진 2018. 9. 8. 오후 7 50 00 (1).jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자님은 요새 새로산 제 아이패드로 사진 찍는 걸 좋아해요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;조만간 아이패드 프로 10.5 사진 리뷰도 할 수 있으면 좋겠어요&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이런 등 같은거는 조선시대의 느낌을 주는 거 같아 외국 관광객이 좋아할 만 할거 같아요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그런데 기대를 많이 하고 갔었는데 생각보다 &lt;b&gt;&lt;u&gt;컨텐츠가 적었어요.&lt;/u&gt;&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;야시장을 가는데에 다양한 이유가 있지만, 저는 먹거리 때문에 가는 것도 있거든요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;다양한 종류의 한식을 판다면, 전통적인 분위기에 외국인들도 즐길 수있지 않을까 하는 생각이 드네요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;iframe id=&quot;emap_498705&quot; src=&quot;/proxy/plusmapViewer.php?id=emap_498705&amp;amp;mapGb=V&quot; width=&quot;484&quot; height=&quot;362&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; mapdata=&quot;map_type=TYPE_MAP&amp;map_hybrid=false&amp;idx=1&amp;title=%EB%82%A8%EC%82%B0%EA%B3%A8%ED%95%9C%EC%98%A5%EB%A7%88%EC%9D%84&amp;addr=%EC%84%9C%EC%9A%B8%20%EC%A4%91%EA%B5%AC%20%ED%95%84%EB%8F%992%EA%B0%80%2084-1%20&amp;tel=02-2261-0517&amp;mapX=498840&amp;mapY=1127703&amp;ifrW=484px&amp;ifrH=362px&amp;addtype=1&amp;map_level=4&amp;rcode=1114057000&amp;docid=&amp;confirmid=8246127&amp;mapWidth=484&amp;mapHeight=362&amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A484%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A498840%2C%22mapCenterY%22%3A1127703%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A498842%2C%22y%22%3A1127707%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EB%82%A8%EC%82%B0%EA%B3%A8%ED%95%9C%EC%98%A5%EB%A7%88%EC%9D%84%22%2C%22confirmid%22%3A%228246127%22%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;toJSONString=&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;토요일에 충무로에서 영화 한 편 보시고,&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;선선한 바람 쐬면서 소소하게 산책해보는게 어떨까요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;긴 글 읽어주셔서 감사합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;공감 버튼은 작성자에게 큰 동기부여가 됩니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>눈누난냐</category>
      <category>남산골 야시장</category>
      <category>남산골 한옥마을</category>
      <category>서울 데이트</category>
      <category>야시장</category>
      <category>충무로 데이트</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/80</guid>
      <comments>https://ssoonidev.tistory.com/80#entry80comment</comments>
      <pubDate>Sun, 9 Sep 2018 15:39:04 +0900</pubDate>
    </item>
    <item>
      <title>[대학로 연극] 러브 스코어 관람 후기</title>
      <link>https://ssoonidev.tistory.com/79</link>
      <description>&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99BBDE375B93D9C008&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99BBDE375B93D9C008&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;4fbbd0e0c25e4dddbbb1ff8b8c64e1c0.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;저는 장르 불문하고 즐기는 편이긴 하지만,&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;b&gt;&lt;i&gt;로맨스 코미디나 멜로 장르를 좋아하는 편&lt;/i&gt;&lt;/b&gt;에요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;등장인물의&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;감정 이입도 잘 해서, 펑펑 울기도 하고 나름 뒤의 스토리가 어떻게 될까 상상도 하는 걸 좋아해요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그래서 관객과 배우가 소통하는 연극과 뮤지컬에 대해 기대를 항상 하고 있었어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;연극을 감자님과 보고 싶었지만, 연알못이라&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;어떤 연극을 볼지 쉽게 선택하지 못했어요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;근데, 감자님 어머님께서&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;초대권을 주신 덕분에 처음으로 연극이라는 걸 보게 되었어요.&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;러브 스코어는 2018.10.14 까지 대학로 상명아트홀 1관에서 관람할 수 있고 관람시간은 한시간 반정도 했어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;러브 스코어라는 제목에서 이과 공대 감성으로는 점수를 메기는 그런 건가 했는데, &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;악보라는 뜻&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;도 있어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;멜로 장르에 음악까지 있다니 라라랜드 같은 느낌이 나지 않을까 해서, &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;더욱 기대했어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99996B4D5B93DDBD01&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99996B4D5B93DDBD01&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;KakaoTalk_20180908_221207317.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;처음으로 대학로 극장을 갔는데 생각보다 작지만 깔끔했어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;무대가 시작하는데 배우분들 성량이 얼마나 크던지..&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;마트에서 지금부터 30분간&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;특가 세일합니다!! 하는 분 같았어요.&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;한시간 반동안 발성을 저렇게 하면 목이 아프진 않을까 걱정도 많이 되었구요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;연극의 스토리는 동철의 집에 과거의&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;아이돌인 재준이 솔로활동 실패로 인해 얹혀 사는데 동철의 사촌 오름이 그 집에 이사오면서&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;시작합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; color: rgb(5, 0, 153);&quot;&gt;등장인물 소개&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;재준은 뭔가 문희준이 오버랩되는 느낌&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이였어요. 물론 현재는 활동을 잘하고 계시지만&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;, 락을 한다 하면서 락매니아들에게 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;정말 욕 많이 먹었었거든요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;재준은 &lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;다시 일어 나고 싶지만, 실패에 겁이 나서 시도를 하지 않아요&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;동철은 재준의 조력자&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;에요. 친구를 집에 1년이상 두고 살게하고, 다시 일어 날 수 있게 기회를 줍니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;저는 김영환 배우님이 그 역할을 맡았는데, 이 분이&lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; 1인 6역&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;은 하신거 같아요. 동철역부터 택배기사 등등 말이죠&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;특히, 상의를 걷어 배를 까는&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;인상적인 장면 등으로&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;연극 초반부터 끝까지 웃음을 주었어요&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;(정말 당황했어요&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;ㅋㅋㅋㅋㅋㅋ 이게 연극이구나 ㅋㅋㅋㅋ)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/span&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;오름은 가수 지망생&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이에요. 작곡/작사를 공부하러 제주도에서 서울로 올라옵니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;연예계 바닥을 몰라서 신입사원과 인턴의 패기를 느낄 수 있었죠.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;안된다 안된다하는 상사들에게 해보면 되죠? 하고 얘기하고 해버리는 패기..&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;중간중간 노래를 부르는데&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;조아라 배우님의 음색이 너무 좋았어요.&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;유나는 전 여자친구&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;에요. 원망과 배신으로 얼룩진 전 여자친구가 아닌 같은 동료로써 재준을 도와주는 대단한 전 여자친구입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;보통 전 여자친구가 등장하면 머리채 뜯고, 점 얼굴에 하나 찍고서, 복수하겠어!! 하고 현 여자친구를 괴롭히는데, 정말 쿨해요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; color: rgb(5, 0, 153);&quot;&gt;좋았던 점&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;-&amp;nbsp;&lt;u style=&quot;font-weight: bold;&quot;&gt;재미가 있었어요.&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;웃음을 주기 위한 포인트들을 모든 배우들이 너무 잘 소화해서 억지로 &lt;span style=&quot;font-size: 12pt;&quot;&gt;쥐어 짠 웃음이 아니라, 정말 재밌어서 웃게 되요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;연극의 전반적인 분위기가 밝고 긍정적이라서 유머들이 극의 진행에 좋은 시너지가 된거 같아요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;-&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;연기력이 대단해요.&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;연극 자체가&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;주변에서 실제로 일어나는 일을 바로 옆에서 보는 듯한 느낌을 강하게 주잖아요&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;거기에 각자 맡은 배역에서 희노애락을 잘 표현해주어서, 몰입을 정말 깊게 하게 되요.&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;장면의 전환도 매우 매끄럽고 빠르게 진행되었어요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;밝아졌다 어두워졌다 하는게 연극을 처음보는 저는 정신 없기도 했지만, 나중에는 다음 장면은 뭘까 하고 기대하게 되었어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9935DC3F5B93EAF50D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9935DC3F5B93EAF50D&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;KakaoTalk_20180909_002912981.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; color: rgb(5, 0, 153);&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; color: rgb(5, 0, 153);&quot;&gt;아쉬운 점&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;-&amp;nbsp;&lt;/span&gt;&lt;u style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;급전개&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;.&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;한시간 동안 전개 속도가 천천히 진행되다가 마지막 30분은 약간 개&lt;span style=&quot;font-size: 12pt;&quot;&gt;연성 없이 후다다닥 진행해요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;한시간 반이라는 제한 시간안에 공간적인 제약사항이 큰 연극의 특징상 어쩔 수 없다고 생각은 들어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;단지 밝았다 어두워졌다 하는게 너무 잦다보니 눈이 피곤하긴 해요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;그래도 밝고 에너지 넘치는 배우분들의 열연에 재미있게 관람했어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;스포일러를 최대한 줄일려고 하다보니까 뜬구름 잡&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;듯이 리뷰하게 되었는데요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;러브 스코어는&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;누구한테나 올 수 있는 삶의 실패에서 어떤 자세로 다가가야하는지&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;를 알려 주는&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;좋은 연극이였습니다.&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;물론 달달한 사랑 얘기는 덤이구요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;iframe id=&quot;emap_507756&quot; src=&quot;/proxy/plusmapViewer.php?id=emap_507756&amp;amp;mapGb=V&quot; width=&quot;484&quot; height=&quot;362&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; mapdata=&quot;map_type=TYPE_MAP&amp;map_hybrid=false&amp;idx=1&amp;title=%EC%83%81%EB%AA%85%EC%95%84%ED%8A%B8%ED%99%80%201%EA%B4%80&amp;addr=%EC%84%9C%EC%9A%B8%20%EC%A2%85%EB%A1%9C%EA%B5%AC%20%EB%8F%99%EC%88%AD%EB%8F%99%201-38%20&amp;tel=02-2075-2152&amp;mapX=500605&amp;mapY=1134388&amp;ifrW=484px&amp;ifrH=362px&amp;addtype=1&amp;map_level=4&amp;rcode=1111064000&amp;docid=&amp;confirmid=14826542&amp;mapWidth=484&amp;mapHeight=362&amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A484%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A500605%2C%22mapCenterY%22%3A1134388%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A500605%2C%22y%22%3A1134390%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%83%81%EB%AA%85%EC%95%84%ED%8A%B8%ED%99%80%201%EA%B4%80%22%2C%22confirmid%22%3A14826542%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;toJSONString=&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;호러와 스릴러를 좋아하는 감자님도 나름 재밌게 봤다고 하니까 연인들과 친구들과 같이 한번 관람해 보는 것 어떨까요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;긴 글 읽어주셔서 감사합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;공감버튼은 작성자에게 큰 동기부여가 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>눈누난냐/연극</category>
      <category>대학로 데이트</category>
      <category>대학로 연극</category>
      <category>데이트</category>
      <category>러브스코어</category>
      <category>러브스코어 연극</category>
      <category>멜로 연극 추천</category>
      <category>연극 추천</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/79</guid>
      <comments>https://ssoonidev.tistory.com/79#entry79comment</comments>
      <pubDate>Sun, 9 Sep 2018 00:46:29 +0900</pubDate>
    </item>
    <item>
      <title>[평양냉면 맛집] 을지면옥 다녀왔습니다.</title>
      <link>https://ssoonidev.tistory.com/78</link>
      <description>&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99187E3C5B81684B03&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99187E3C5B81684B03&quot; width=&quot;500&quot; height=&quot;500&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자님이 자신이 우래옥을 좋아하는 건지, 평양냉면 자체를 좋아하는 건지 궁금하다해서 을지면옥을 방문했어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;아마 한동안은 &lt;b&gt;&lt;i&gt;평양냉면을 찾아 여기저기 다닐거 같아요.&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자님 특성상 하나 꽂히면 한 달정도는 꾸준히 찾으니깐요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;(타코벨, 수제버거 등등)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;인턴을 하면서 배정받은 고객사가 을지로3가역이라 을지로는 익숙한&lt;span style=&quot;font-size: 12pt;&quot;&gt;데, 단 한번도 이 곳을 본적이 없어요. 왜냐하면..&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E999385B8160D207&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E999385B8160D207&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;P20180825_132422940_E4D54BB1-9D3A-41FD-8EB2-2F119BD6D79E.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;철물점들 사이에 뜬금없이 있어요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;은폐 엄폐 수준이.. 저기에 누가 음식점이 있다고 생각해요..&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이 근처에 심지어 거주도 하고, 청계천을 구경하러 자주 왔다 갔다했던 곳인데 감자님도 저도 처음 봤어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;관심있어서 찾지않으면 전혀 알 수 없는 곳에 있었어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;을지로3가역 5번 출구&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;로 나가면 바로 볼 수 있어요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;위치는 아래에 지도를 첨부해둘게요!!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/998E6E4F5B8161F111&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F998E6E4F5B8161F111&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;P20180825_130845269_F73E21EF-6454-4177-A019-56B4E103AD62.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;웨이팅이 있을까 걱정했는데, 낮이라 그런지 여유롭게 가게안으로 들어가서 주문할 수 있었어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;당연히 물냉면 2개 시키고서, 기다리고 있는데 편육에 소주 드시는 어르신분들 보니 저도 먹고 싶어지긴 하더라고요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;*물론 소주.. 아니 &lt;b&gt;&lt;i&gt;편육&lt;/i&gt;&lt;/b&gt;이요...&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/span&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9941C8455B81629D0E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9941C8455B81629D0E&quot; width=&quot;500&quot; height=&quot;375&quot; filename=&quot;P20180825_131056722_524E0135-9E9B-401F-B645-3C18F585EEF5.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;계란도 있고, 고추가루도 뿌려져 있고 편육과 파도 올려져있어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;개인적으로는 &lt;/span&gt;&lt;u&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;파가 국물을 먹을 때 간혹 씹히는 식감과 향이 좋아서 맛있게 먹었는데&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; 감자님은 그렇게 좋아하진 않았어요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;육수는 전형적인 평양냉면의 맛&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이에요. 슴슴하고&amp;nbsp;육향이 잔잔하게 느껴지는 맛이에요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;면발도 괜찮았어요. 질기지도 않고, 너무 찐득하지도 않은 적절한 면발이였어요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;평양냉면을 많이 접해&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;먹어보진 않았지만, 지금까지 먹어본 맛 중에 &lt;b&gt;&lt;u&gt;가장 중간의 맛&lt;/u&gt;&lt;/b&gt;인거 같아요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;우래옥처럼 나 이&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;만큼 진해!!&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;하지도 않고, 광화문국밥처럼 존재감없는 것도 아니에요.&lt;i&gt; 조금 짠 거 빼고는 말이죠&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;고추가루가 있어서 칼칼한 맛이 날까 했는데, 그렇게 칼칼한 맛도 나진 않았고요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;평양냉면을 접한 이후로는 냉면에 겨자나 식초를 첨가해서 먹진 않아요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;근데&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;호기심에&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size:12pt;&quot;&gt;어느정도 그릇을 비우고 호기심으로 고춧가루를 더 넣어봤는데&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;칼칼한 맛은 잘 안느껴지더라구요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- 글중간 광고 3 --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block&quot;
     data-ad-client=&quot;ca-pub-2538641355026813&quot;
     data-ad-slot=&quot;5385295412&quot;
     data-ad-format=&quot;auto&quot;
     data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;iframe id=&quot;emap_977574&quot; src=&quot;/proxy/plusmapViewer.php?id=emap_977574&amp;amp;mapGb=V&quot; width=&quot;484&quot; height=&quot;362&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; mapdata=&quot;map_type=TYPE_MAP&amp;map_hybrid=false&amp;idx=1&amp;title=%EC%9D%84%EC%A7%80%EB%A9%B4%EC%98%A5&amp;addr=%EC%84%9C%EC%9A%B8%20%EC%A4%91%EA%B5%AC%20%EC%9E%85%EC%A0%95%EB%8F%99%20161%20&amp;tel=02-2274-6863&amp;mapX=498390&amp;mapY=1130003&amp;ifrW=484px&amp;ifrH=362px&amp;addtype=1&amp;map_level=4&amp;rcode=1114060500&amp;docid=&amp;confirmid=8043030&amp;mapWidth=484&amp;mapHeight=362&amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A484%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A498390%2C%22mapCenterY%22%3A1130003%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A498391%2C%22y%22%3A1130007%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%9D%84%EC%A7%80%EB%A9%B4%EC%98%A5%22%2C%22confirmid%22%3A8043030%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;toJSONString=&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이러다가 평냉냉면 리뷰어&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;가 될 거 같다는 생각이 점점 들기 시작하네요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;여담으로 감자님과 저녁&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;우래옥을 다녀오고, 자신이 평양냉면 매니아가 아니라 우래옥 매니아라는걸 깨달았답니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;다들 맛있는 식사하셨으면 좋겠네요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;공감 버튼은 작성자에게 큰 동기부여가 됩니다. 감사합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;/p&gt;</description>
      <category>눈누난냐</category>
      <category>서울 평양냉면</category>
      <category>을지로 평양냉면</category>
      <category>을지로3가역 냉면</category>
      <category>을지로3가역 맛집</category>
      <category>을지로3가역 평양냉면</category>
      <category>을지면옥</category>
      <category>평양냉면</category>
      <category>평양냉면 맛집</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/78</guid>
      <comments>https://ssoonidev.tistory.com/78#entry78comment</comments>
      <pubDate>Sat, 25 Aug 2018 23:32:40 +0900</pubDate>
    </item>
    <item>
      <title>[서울 맛집] 마!!  우래옥에서 평양냉면 묵어봤나!!</title>
      <link>https://ssoonidev.tistory.com/77</link>
      <description>&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 320px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D157415B7810621C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D157415B7810621C&quot; width=&quot;320&quot; height=&quot;320&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;평양냉면을 정인면옥에서 즐기고 나서, 평양냉면에 빠진 저는 감자님을 급기야 꼬시기 시작합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자님은 평양냉면을 좋아하진 않았어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;나 : 서울에 3대 평양냉면 집이 있고, 그 곳에서 먹고싶다. x 1000&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자 : 가자. 그래 ㅠㅠ&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;전 이 순간을 가장 후회합니다. &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이 냉면은 저 혼자 먹었어야 했어요.&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996363425B7812112C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F996363425B7812112C&quot; width=&quot;500&quot; height=&quot;275&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;평양 냉면을 먹은건 낮 12시 하지만 저녁 9시까지..&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;아이패드 프로를 구경하는 와중에도 &lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;우래옥 맛있다.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;청계천 3걸음 걷고 &lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;우래옥 맛있다.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;카페에서 블로그 작업을 하는 중에도&lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt; 우래옥 맛있다.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이젠 &lt;/span&gt;&lt;a href=&quot;http://podenne-daily.tistory.com/73&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;본인 블로그&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;에서 &lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;우레옥 맛있다.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;저 혼자 먹었어야 했어요 흑흑흑..&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;네.. &lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;평&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;양냉면을 먹고 충격과 공포를 느낀 감자님마저 평냉 찬양자로 만들어 버리는 마성의 육수&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;입니다.&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;하지만 저도 &lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;우레옥 맛있다 트라우마&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;가 생길려고 해요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;우래옥은 을지로4가역 4번 출구에서 조금 나가면 볼 수 있어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;자세한 위치는 아래에 지도를 첨부할게요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;주말 점심에 가서 그런지 웨이팅도 길긴 했어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;하지만 서울 3대 맛집이라니까 참고 기다렸어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;솔직히 그렇게 친절한 가게는 아니에요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;밑반찬도 조촐하게 겉절이 하나 주고, 표정에서 손님들이 많아서 지친 기색울 느끼긴 했거든요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;둘이서 평양냉면 물냉면으로 2개 주문했습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;가격은 13000원&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이에요&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/991E32415B7814BC29&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F991E32415B7814BC29&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;KakaoTalk_20180818_143411902.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;처음 저 메밀 육수를 먹고, 감자님의 표정이 안 좋고, 저마저도 밍밍함을 느껴서 망했구나 생각을 많이 했습니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;때마침 주변에서 식초 두 바퀴, 다대기 팍팍 뿌리는거 보고, 저도 많이 쫄았어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 500px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9931A6395B78161933&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9931A6395B78161933&quot; width=&quot;500&quot; height=&quot;281&quot; filename=&quot;KakaoTalk_20180818_143411298.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;냉면 등장!!&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;보통 냉면들은 계란이 있는데, 계란이 없는게 독특했어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자님이 사진 찍고 정신없는 사이에 국물을 먹고 나서 확신했어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;성공했다. 이건 감자님도 맛나겠다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/span&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;심심한 고유의 국물 속에 고기 육수의 진한 향&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;이 나는게 우레옥 냉면 육수의 특징인거 같아요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;감자님도 한 숟갈 먹고, 한 대 맞은 듯한 맛이라면서 찬양을 시작했어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;고명으로 고기와 배, 그리고&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;동치미를 넣어서 배추잎랑 무도 있어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;배는 심심한 맛을 즐기는데 지친 혀에게&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;단비같았고, 무와 배추는 아삭함을 더 해줘서 식감이 좋았어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 276px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9989F7375B78177E1F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9989F7375B78177E1F&quot; width=&quot;276&quot; height=&quot;363&quot; filename=&quot;KakaoTalk_20180818_143410998.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;면발도 메밀면답게 꼭꼭 씹어먹으면 맛있어요.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;툭히 입에 한가득 넣고 우걱우걱 씹을 때 기분이 정말 좋았어요&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;고기랑 같이 싸서 먹으니까 더욱 맛있었어요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;고기가 양도 많은데 맛도 좋아서&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&amp;nbsp;&quot;13000원 값을 확실히 하는 구나&quot; 생각했답니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;iframe id=&quot;emap_284735&quot; src=&quot;/proxy/plusmapViewer.php?id=emap_284735&amp;amp;mapGb=V&quot; width=&quot;484&quot; height=&quot;362&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; mapdata=&quot;map_type=TYPE_MAP&amp;map_hybrid=false&amp;idx=1&amp;title=%EC%9A%B0%EB%9E%98%EC%98%A5%20%EB%B3%B8%EC%A0%90&amp;addr=%EC%84%9C%EC%9A%B8%20%EC%A4%91%EA%B5%AC%20%EC%A3%BC%EA%B5%90%EB%8F%99%20118-1%20&amp;tel=02-2265-0151&amp;mapX=499715&amp;mapY=1130183&amp;ifrW=484px&amp;ifrH=362px&amp;addtype=1&amp;map_level=4&amp;rcode=1114060500&amp;docid=&amp;confirmid=8025375&amp;mapWidth=484&amp;mapHeight=362&amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A484%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A499715%2C%22mapCenterY%22%3A1130183%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A499717%2C%22y%22%3A1130189%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%9A%B0%EB%9E%98%EC%98%A5%20%EB%B3%B8%EC%A0%90%22%2C%22confirmid%22%3A8025375%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;toJSONString=&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;평양냉면을 썩 좋아하지 않은 사람을 한순간에 미쳐버리게 한 평양냉면집 우래옥입니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;다른 냉면집에서 평양냉면을 처음 먹어보고 오시는걸 추천드릴게요.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;왜냐면&amp;nbsp;&lt;/span&gt;&lt;u&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;평양냉면은 두세번째부터 맛이 느껴지고, 맛이 안 느껴지는 상태에서 이 맛을 즐긴다는 건 좀 아깝거든&lt;/span&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;요.&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;긴 글 읽어주셔서 감사합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;공감 버튼은 작성자에게 큰 동기부여가 됩니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>눈누난냐</category>
      <category>냉면 맛집</category>
      <category>서울 3대 평양냉면</category>
      <category>서울 평양냉면 맛집</category>
      <category>을지로 맛집</category>
      <category>평양 냉면 맛집</category>
      <category>평양냉면 맛집</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/77</guid>
      <comments>https://ssoonidev.tistory.com/77#entry77comment</comments>
      <pubDate>Sat, 18 Aug 2018 22:04:27 +0900</pubDate>
    </item>
    <item>
      <title>[여의도 맛집] 정인면옥 - 평양냉면</title>
      <link>https://ssoonidev.tistory.com/76</link>
      <description>&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99F5AA3D5B7586D807&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F5AA3D5B7586D807&quot; width=&quot;400&quot; height=&quot;400&quot; filename=&quot;그림4.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;평양냉면은 정말 호불호가 갈리는 음식인거 같아요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;처음에 냉면 맛집을 소개해주겠다해서 설레는 마음으로 정인면옥에 갔어요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;위치는 글 마지막에 지도를 첨부&lt;/u&gt;&lt;/b&gt;했습니다!!&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;미쉐린 가이드에도 나온 집이고 하니까&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;줄도 정말 길게 서있고, 심지어 번호표를 뽑아서 기다려야 할 정도로 점심 시간에 사람이 많더라고요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;엄마 뱃속에 있을 때부터 냉면을 사랑했기에, 기대를 정말 많이 했죠.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;평양냉면은 그냥 일반적으로 먹는 냉면에 다대기가 안들어 간거라고 생각하고 물냉면을 시켰어요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;가격은 &lt;b&gt;&lt;u&gt;물냉면 비빔냉면 모두 1만원&lt;/u&gt;&lt;/b&gt;이에요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99B7B5495B7588B606&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99B7B5495B7588B606&quot; width=&quot;580&quot; height=&quot;326&quot; filename=&quot;KakaoTalk_20180816_230236819.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;냉면이 나오고 비주얼을 보고 우왓 맛있겟다하고 먹는 순간 멍해져요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;막 육쌈냉면같은데서 먹던 그 맛이 안나거든요. &lt;b&gt;&lt;u&gt;첨에는 정말 냉수에다가 메밀면을 넣으면 이 맛 나겠다&lt;/u&gt;&lt;/b&gt;했어요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;왠만한 모든 음식을 호불호 없이 다먹던 제가 그러니깐 기대하던 감자님도 제가 그 말하자마자 안 먹을려고 하더라고요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;추후에 쓸 광화문 국밥에서 평양냉면의 참맛을 느끼고 오늘&amp;nbsp;&lt;b&gt;&lt;u&gt;다시 찾아가서 다시 먹었는데, 어??&amp;nbsp;맛이 있더라고요???&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;면발이 재밌어요&lt;/u&gt;&lt;/b&gt;. 냉면 면발하면 보통 질겨서 가위질하고 해야 겨우 먹는 면이잖아요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;정인면옥의 메밀 면발은 질기지가 않고, 씹으면 씹을 수록 맛있어요.&lt;/u&gt;&lt;/b&gt; 국물은 또 깔끔해요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;조미료의 맛이 아니라&amp;nbsp;&lt;b&gt;&lt;u&gt;순하고 순한 고기 육수 맛&lt;/u&gt;&lt;/b&gt;이에요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;자극적이지 않으니까 부담없이 떠먹을 수 있어서 계속 먹게되요&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: center;&quot;&gt;&lt;iframe id=&quot;emap_270980&quot; src=&quot;/proxy/plusmapViewer.php?id=emap_270980&amp;amp;mapGb=V&quot; width=&quot;521&quot; height=&quot;451&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; mapdata=&quot;map_type=TYPE_MAP&amp;map_hybrid=false&amp;idx=1&amp;title=%EC%A0%95%EC%9D%B8%EB%A9%B4%EC%98%A5&amp;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2013-1%201%EC%B8%B5&amp;tel=02-2683-2615&amp;mapX=482680&amp;mapY=1119778&amp;ifrW=490px&amp;ifrH=362px&amp;addtype=1&amp;map_level=4&amp;rcode=1156054000&amp;docid=&amp;confirmid=23699720&amp;mapWidth=490&amp;mapHeight=362&amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A482680%2C%22mapCenterY%22%3A1119778%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A482680%2C%22y%22%3A1119781%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%A0%95%EC%9D%B8%EB%A9%B4%EC%98%A5%22%2C%22confirmid%22%3A23699720%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;toJSONString=&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;같이 갔던 상사님도 두 번째로 찾아 갔는데, 처음에 먹었던 맛과 다르다고 맛있다고 호평을 하시더라고요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;(이래서 장사가 잘 되나봐요. 두 번째부터 맛이 느껴지니까.)&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;모든 기대를 내려놓고 미각에 온 신경을 집중할&amp;nbsp;자만이 누릴 수 있는 맛인거 같아요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;감자님이 자꾸 평양냉면 안먹겠다고 투정부리는데, 여기서 신세계를 보여주고 싶어요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;평양냉면을 좋아하거나 평양냉면을 처음 도전한다면 여기서 한번 식사해보세요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;긴 글 읽어주셔서 감사합니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;공감버튼은 작성자에게 큰 동기부여가 됩니다.&lt;/p&gt;</description>
      <category>눈누난냐</category>
      <category>국회의사당역 냉면</category>
      <category>서울 평양냉면</category>
      <category>여의도 냉면</category>
      <category>여의도 맛집</category>
      <category>점심뭐먹지?</category>
      <category>정인면옥</category>
      <category>평양냉면</category>
      <category>평양냉면 맛집</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/76</guid>
      <comments>https://ssoonidev.tistory.com/76#entry76comment</comments>
      <pubDate>Thu, 16 Aug 2018 23:47:05 +0900</pubDate>
    </item>
    <item>
      <title>[여의도 수제 버거] BAS Burger 여의도점</title>
      <link>https://ssoonidev.tistory.com/75</link>
      <description>&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990BE83E5B74396D08&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990BE83E5B74396D08&quot; width=&quot;400&quot; height=&quot;397&quot; filename=&quot;그림3.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;여의도에 프로젝트를 진행하면서, 점심에 뭐먹지 고민이 정말 많이 되요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;그래서 여의도에 오랫동안 근무해서, 무슨 맛집이 있는지 아는 사람과 다니면 정말 편하더라고요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;바스 버거 역시 직장 선배들 덕분에 처음으로 가게 되었죠.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99E8783A5B743C1619&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E8783A5B743C1619&quot; width=&quot;580&quot; height=&quot;326&quot; filename=&quot;KakaoTalk_20180815_230935150.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;타코벨 있는 건물 근처에 지하로 내려가는 입구&lt;/u&gt;&lt;/b&gt;가 있는데 &lt;b&gt;&lt;u&gt;자세한 위치는 글 마지막에 지도를 첨부&lt;/u&gt;&lt;/b&gt;했어요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;평일 점심시간에는 자리가 없을 정도로 꽉꽉 차있어서 포기하고 옆에 백반 집에서 밥을 먹기도 했었는데, 휴일에&amp;nbsp;감자님이랑 갔을 때는 웨이팅 없이 여유롭게 앉아서 먹었답니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 687px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C80F405B743B711C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C80F405B743B711C&quot; width=&quot;687&quot; height=&quot;368&quot; filename=&quot;KakaoTalk_20180815_230934210.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;바스 버거는 튀긴 감자 칩을 마음껏 먹을 수 있도록 제공&lt;/u&gt;&lt;/b&gt;합니다. 이름도 독특해요. 제임스 감이라니.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;한 때는 제임스 감에 케찹이나 소스로 그림을 이쁘게 그려서 인스타에 올라는 그런 이벤트도 했었어요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;감자님도 간이 좀 되었으면 좋겠다고 투덜대면서 맛있게 먹었어요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990BE83E5B743CE514&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990BE83E5B743CE514&quot; width=&quot;580&quot; height=&quot;326&quot; filename=&quot;KakaoTalk_20180815_230933823.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;감자님은 하와이안 버거를 저는 칠면조 버거를 각각&amp;nbsp;세트로 시켰어요&lt;/u&gt;&lt;/b&gt;.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;감자님이 정말 구운 파인애플을 먹고 싶었나봐요. 계속 하와이안 하와이안 노래를 불렀었거든요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;감자 튀김과 콜라까지 완벽합니다. 참고로 맥주를 마시면 더욱 좋아요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;조명이나 분위기가 Pub에 있는 듯한 느낌을 주거든요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/993E603E5B743CE30E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F993E603E5B743CE30E&quot; width=&quot;580&quot; height=&quot;326&quot; filename=&quot;KakaoTalk_20180815_230932188.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;으아 거꾸로 찍었었네요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;감자님이 주문한 &lt;b&gt;&lt;u&gt;하와이안 버거&lt;/u&gt;&lt;/b&gt;입니다. 가격은 세트 기준 &lt;b&gt;&lt;u&gt;9200원&lt;/u&gt;&lt;/b&gt;이에요.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;파인애플이 크게 한덩이가 있어요. 먹을 때는 달콤한 파인애플과 짭짤한&amp;nbsp;고기패티가 어우어져 맛있었어요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;파인애플을 열을 가해서 먹는걸 선호하지 않는다면 비추천하지만. 맛있게 먹는다면 선택하기 좋은 메뉴에요&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A5A13E5B743CE426&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A5A13E5B743CE426&quot; width=&quot;580&quot; height=&quot;326&quot; filename=&quot;KakaoTalk_20180815_230933489.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;제가 주문한 칠면조 버거에요&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;칠면조 버거&lt;/b&gt;라해서 패티가 칠면조로 나올까? 궁금했는데 얇게 썬 &lt;b&gt;&lt;u&gt;터키 슬라이스&lt;/u&gt;&lt;/b&gt;가 들어간 버거에요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;가격은 세트기준 &lt;b&gt;&lt;u&gt;10200원&lt;/u&gt;&lt;/b&gt;이에요. &lt;b&gt;&lt;u&gt;맛은 있는데, 짜요.&lt;/u&gt;&lt;/b&gt; 치즈 때문인지 고기 밑간 때문인지 모르겠는데,&amp;nbsp;콜라를 계속 먹다가 결국 물까지 벌컥벌컥 먹게 되요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;예전에 다른 버거도 먹어봤지만, 공통적으로 &lt;b&gt;&lt;u&gt;간이 조금 세지만&lt;/u&gt;&lt;/b&gt; &lt;b&gt;&lt;u&gt;빵이 촉촉해요&lt;/u&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;그리고 크기를 보고 &quot;아 이게 배가 찰까?&quot; 하실 수도 있지만 먹으면 &amp;nbsp;&lt;b&gt;&lt;u&gt;포만감&lt;/u&gt;&lt;/b&gt;이 있습니다. &amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;감자튀김도 맛있었어요. 앏은 감자 튀김보다 굵은 감자 튀김을 선호해서 그런지 만족했습니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;전체적으로 짭짤하니 맥주와는 잘 어울리는 음식이에요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center;&quot;&gt;&lt;iframe id=&quot;emap_644073&quot; src=&quot;/proxy/plusmapViewer.php?id=emap_644073&amp;amp;mapGb=V&quot; width=&quot;521&quot; height=&quot;451&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; mapdata=&quot;map_type=TYPE_MAP&amp;map_hybrid=false&amp;idx=1&amp;title=%EB%B0%94%EC%8A%A4%EB%B2%84%EA%B1%B0%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90&amp;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2024-1%20%EC%9C%A8%EC%B4%8C%EB%B9%8C%EB%94%A9%20%EC%A7%80%ED%95%981%EC%B8%B5&amp;tel=02-784-6643&amp;mapX=483930&amp;mapY=1118168&amp;ifrW=490px&amp;ifrH=362px&amp;addtype=1&amp;map_level=4&amp;rcode=1156054000&amp;docid=&amp;confirmid=1165592124&amp;mapWidth=490&amp;mapHeight=362&amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A483930%2C%22mapCenterY%22%3A1118168%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A483934%2C%22y%22%3A1118172%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EB%B0%94%EC%8A%A4%EB%B2%84%EA%B1%B0%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90%22%2C%22confirmid%22%3A1165592124%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;toJSONString=&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;친구들과 연인들과 여의도 한강공원 가기 전에 저녁에 한번 먹어보는 것을 추천드립니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;감자님도 간이 세다는거 말고는 매우 만족 했습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;다른 메뉴도 감자님이랑 정복해보고 싶네요. 수제버거를 많이 좋아하거든요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;도움이 되셨으면 공감버튼 한 번 눌러주세요&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;공감 버튼은 작성자에게 큰 동기부여가 됩니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>눈누난냐</category>
      <category>바스버거</category>
      <category>바스버거 메뉴 추천</category>
      <category>여의도 맛집</category>
      <category>여의도 맥주</category>
      <category>여의도 바스버거</category>
      <category>여의도 수제버거</category>
      <category>여의도 한강공원 맛집</category>
      <category>칠면조 버거</category>
      <category>하와이안 버거</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/75</guid>
      <comments>https://ssoonidev.tistory.com/75#entry75comment</comments>
      <pubDate>Thu, 16 Aug 2018 00:11:44 +0900</pubDate>
    </item>
    <item>
      <title>[여의도 샐러드] 알로하 포케 - 스파이시 크림참치 샐러드</title>
      <link>https://ssoonidev.tistory.com/74</link>
      <description>&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C4384F5B74365B0D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C4384F5B74365B0D&quot; width=&quot;400&quot; height=&quot;400&quot; filename=&quot;그림2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;요새 겨울에 동남아 휴가를 가기 위해서 열심히 다이어트를 하고 있어요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;다이어트 기간을 장기간으로 생각해서 그런지 식단에서 조금 자유로운 점은 있어요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;그래도 저녁은 항상 샐러드를 먹고 마무리를 하자는 원칙은 있어서 샐러드를 만들어 먹을까 했지만, 저를 좋아하는 감자님마저&amp;nbsp;제가 요리 해준다면 안 먹는데다 채소들의 신선도도 걱정이 되서 사먹기로 결심했습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;알로하 포케는 IFC 몰 L1층 있어요&lt;/u&gt;&lt;/b&gt;.&amp;nbsp; 유니클로 방향으로 뒤편으로 넘어가시면 스타벅스 리저브와 아오리 라멘 등 가게들 사이에 있습니다. &lt;b&gt;&lt;u&gt;정확한 위치는 글의 마지막에 지도를 첨부&lt;/u&gt;&lt;/b&gt;했어요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;저는 &lt;b&gt;&lt;u&gt;퀴노아 샐러드 베이스의 스파이시 크림참치 샐러드&lt;/u&gt;&lt;/b&gt;를 주문했어요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;다른 토핑들도 넣어서 먹을 수있지만 저는 넣지 않았습니다. 사이즈도 Small 로 주문했어요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;가격은&amp;nbsp;9500원이에요. 결코 싼 가격은 아니라고 생각할 수도 있어요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;야채 덩어리들 주제에 9500원?? 다이어트 전에 저도 샐러드를 굳이 사먹나 생각했었으니깐요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 604px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9920B44F5B74365B01&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9920B44F5B74365B01&quot; width=&quot;604&quot; height=&quot;387&quot; filename=&quot;KakaoTalk_20180815_142120947.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;샐러드 하나에 9500원이라니, 손을 바들바들 떨다가도 먹을 때는 기분이 좋답니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;왜냐하면 그만큼 맛이 있거든요. 신선함과 맛을 둘 다 성공적으로 잡았어요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;알로하 포케의 연어나 참치 샐러드에는 &lt;b&gt;&lt;u&gt;날치알이 있는게 매력적&lt;/u&gt;&lt;/b&gt;이에요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;씹을 때마다 터지는 날치알들이 식감을 살리는데 참 좋거든요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;토마토랑 야채가 들어가고 콩이 있어요. 병아리 콩이 고소하고 식감이 좋아서 만족스러웠어요.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 452px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99D60B4F5B74365A33&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99D60B4F5B74365A33&quot; width=&quot;452&quot; height=&quot;516&quot; filename=&quot;KakaoTalk_20180815_142119790.jpg&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;저는 크림 참치라고 해서, 통조림 참치를 넣어 주는 줄 알았는데 참치회를 넣어줘서 깜짝 놀랐어요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;야채들은 아삭하니 신선하고 스파이시라 해서 많이 맵거나 할 줄 알았는데 전혀 맵지 않았어요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;참치 한 조각과 야채를 같이 먹으니까 아삭하고 고소하고 맛이 풍부해요.&lt;/p&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/span&gt;&lt;/script&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;
&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;다이어트를 고민하거나 가끔 가볍게 식사를 하고 싶으시면 먹어보는 것도 좋은 선택인거 같아요.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;저도 저녁에 찾아가서 다른 메뉴도 먹어보고, 토핑도 한번 추가해서 먹어볼까 합니다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe id=&quot;emap_755816&quot; src=&quot;/proxy/plusmapViewer.php?id=emap_755816&amp;amp;mapGb=V&quot; width=&quot;521&quot; height=&quot;451&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; mapdata=&quot;map_type=TYPE_MAP&amp;map_hybrid=false&amp;idx=1&amp;title=%EC%95%8C%EB%A1%9C%ED%95%98%ED%8F%AC%EC%BC%80&amp;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2023%20IFC%EB%AA%B0&amp;tel=02-6137-5146&amp;mapX=483490&amp;mapY=1118193&amp;ifrW=490px&amp;ifrH=362px&amp;addtype=1&amp;map_level=4&amp;rcode=1156054000&amp;docid=&amp;confirmid=430584550&amp;mapWidth=490&amp;mapHeight=362&amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A483490%2C%22mapCenterY%22%3A1118193%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A483492%2C%22y%22%3A1118198%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%95%8C%EB%A1%9C%ED%95%98%ED%8F%AC%EC%BC%80%22%2C%22confirmid%22%3A430584550%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;toJSONString=&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;도움이 되셨다면, 공감버튼 눌러주세요.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;공감버튼은 저에게 큰 동기부여가 됩니다.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>눈누난냐</category>
      <category>IFC몰 맛집</category>
      <category>다이어트 샐러드</category>
      <category>샐러드</category>
      <category>샐러드 맛집</category>
      <category>스파이시 크림참치 샐러드</category>
      <category>알로하 포케</category>
      <category>여의도 맛집</category>
      <category>여의도 샐러드</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/74</guid>
      <comments>https://ssoonidev.tistory.com/74#entry74comment</comments>
      <pubDate>Wed, 15 Aug 2018 23:25:50 +0900</pubDate>
    </item>
    <item>
      <title>[먹어봤습니다] 스타벅스 수박 / 라임망고 블랜디드</title>
      <link>https://ssoonidev.tistory.com/72</link>
      <description>&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9948E4435B6ECAB70C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9948E4435B6ECAB70C&quot; width=&quot;580&quot; height=&quot;326&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;날이 햇빛만 없으면 선선한 바람도 불고 하는데, 햇빛이 너무 뜨거워서 고생했습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;보라매 공원을 걸어다니는데, 하늘이랑 구름이랑 경치는 좋은데 말인데요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;그래서 야외 데이트를 접고 스타벅스로 입성을 했어요. 낮에 돌아다니기에는 많이 더운거 같아요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9911F7375B6ECD5E1B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9911F7375B6ECD5E1B&quot; width=&quot;580&quot; height=&quot;435&quot; filename=&quot;KakaoTalk_20180811_145739113.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;미세먼지 하나 없어서 정말 맑은 하늘, 햇살, 구름, 보라매공원 좋았지만, 너무 덥고 지치더라구요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;보통 카페가면 콜드브루만 마시는 편인데, 오늘은 땀을 많이 흘려서 그런지 여름 음료가 먹고 싶었어요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;그래서 저는 라임망고 블랜디드를, 감자님은&amp;nbsp;수박 블랜디드를 시켜서 마셔보기로 했습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 640px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99C9CF3A5B6ED1071A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99C9CF3A5B6ED1071A&quot; width=&quot;640&quot; height=&quot;359&quot; filename=&quot;KakaoTalk_20180811_145742377.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center;&quot;&gt;라임망고 블랜디드&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;요새 환경오염 문제로 일회용 컵을 안 줘서, 안에 당최 뭐가 들었느지 알 수가 없었어요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;유리잔에 이런 건 줬으면 좋겠다는 생각도 들었어요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;처음에는 라임 망고라 해서 망고 맛이 많이 나는 음료일 거라고 생각했는데, 엄청 새콤해서 놀랐어요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;맛은 새콤하면서도 라임 향도 나고,&amp;nbsp;바닥에 쌓인 망고 조각들을 먹는 게 재밌었어요.&lt;/u&gt;&lt;/b&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;워낙 셔요 근데, 레모네이드보다 2배 정도 신거 같아요. 신 거를 저는 좋아해서 맛있게 먹긴 했지만, &lt;u&gt;&lt;b&gt;신 걸 좋아하지 않는다면, 썩 좋은 선택지는 아닌 거 같아요&lt;/b&gt;&lt;/u&gt;. 이건 감자랑 저 둘 다 만족하면서 먹었어요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 640px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/999B413F5B6ED43D16&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F999B413F5B6ED43D16&quot; width=&quot;640&quot; height=&quot;359&quot; filename=&quot;KakaoTalk_20180811_145743472.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;수박 블랜디드 &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;감자님이 시킨 수박 블랜디드. 화채 같은 느낌을 상상하고 먹었는데, 음... 음...&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;뭔가 오모해요. 수박을 먹을 때 이 맛을 맛본 거 같긴 한데, 수박 껍질&amp;nbsp;부분 먹을 때 이런 맛 났던거 같기도 해요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;감자님은 호박 맛 난다&lt;/u&gt;&lt;/b&gt;고 하는데, 다른 블로거들도 보니 호박 맛 난다고 투덜대네요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;미리 블로그 글을 확인하고, 메뉴를 선정할 걸 그랬어요. 가격도 보통 비싼 게 아닌데 말이죠.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;썩 추천드릴 맛은 아니에요. 수박 음료가 먹고 싶다면 주씨가서 먹는 게 한참 지혜로운 선택이에요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;신 것을 좋아한다면 라임망고 블랜디드는 추천드릴 만한데, 수박은 정말 다음 번에도 안 먹을 거 같아요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;긴 글 읽어 주셔서 감사합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;공감 버튼은 작성자에게 큰 동기부여가 됩니다. 감사합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>눈누난냐</category>
      <category>라임망고블랜디드</category>
      <category>리뷰</category>
      <category>수박블랜디드</category>
      <category>스타벅스</category>
      <category>신메뉴</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/72</guid>
      <comments>https://ssoonidev.tistory.com/72#entry72comment</comments>
      <pubDate>Sat, 11 Aug 2018 21:38:14 +0900</pubDate>
    </item>
    <item>
      <title>[Python] MySQL 조회 결과를 DataFrame으로 저장하기</title>
      <link>https://ssoonidev.tistory.com/71</link>
      <description>&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(70, 65, 217);&quot;&gt;1. PyMySQL&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;MySQL 데이터베이스와 연결하기 위한 오픈소스 라이브러리입니다. 해당 라이브러리를 설치하기 위해서 &lt;b&gt;&lt;u&gt;python -m pip install PyMySQL&lt;/u&gt;&lt;/b&gt; 명령어로 설치가능하지만,&amp;nbsp;만약 PyCharm 을 이용한다면. Setting에서 Project Interpreter 에서 아래 사진의 + 버튼을 누른뒤 PyMySQL 를 검색하여 설치할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 640px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9905B5345B6AFD6206&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9905B5345B6AFD6206&quot; width=&quot;640&quot; height=&quot;259&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;설치가 완료가 되면 간단한 예제 코드로 Connection 테스트를 합니다.&lt;/p&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-2538641355026813&quot;
     data-ad-slot=&quot;4114446930&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;pymysql.cursors&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;connection&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;pymysql.connect(host&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'localhost'&lt;/span&gt;,&amp;nbsp;user&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'root'&lt;/span&gt;,&amp;nbsp;password&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'12'&lt;/span&gt;,&amp;nbsp;db&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'ssooni'&lt;/span&gt;,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;charset&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'utf8'&lt;/span&gt;,&amp;nbsp;autocommit&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;True)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;cursor&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;connection.cursor()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;sql&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;select&amp;nbsp;*&amp;nbsp;from&amp;nbsp;ssooni.board&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;cursor.execute(sql)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;result&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;cursor.fetchall()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;connection.&lt;span style=&quot;color:#4be6fa&quot;&gt;close&lt;/span&gt;()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#4be6fa&quot;&gt;print&lt;/span&gt;(result)&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;b&gt;- host&amp;nbsp; :&lt;/b&gt; MySQL가 설치되어 있는 원격지 주소를 넣어 줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;b&gt;- user / password :&lt;/b&gt;&amp;nbsp; 계정명 / 비밀번호&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;b&gt;- db :&lt;/b&gt; Default로 사용할 Database 이름을 넣어줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;b&gt;- charset :&lt;/b&gt; 인코딩 정보&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;b&gt;- autocommit : &lt;/b&gt;Query 실행 후 &lt;b&gt;&lt;u&gt;자동으로&amp;nbsp;commit 명령어&lt;/u&gt;&lt;/b&gt;를 전송합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;이 부분을 넣지 않으면, Insert나 Update를 실행해도 실제 DB에 반영되지 않습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;실수로 데이터를 삭제 / 수정하는 일을 조금 막고자한다면, &lt;b&gt;&lt;u&gt;이 옵션을 사용하지 않고,&lt;/u&gt;&lt;/b&gt;&amp;nbsp;&lt;b&gt;&lt;u&gt;Query 실행 후&amp;nbsp;commit 할 시점에&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;background-color: rgb(246, 248, 250); color: rgb(36, 41, 46); font-family: SFMono-Regular, Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 10pt;&quot;&gt;&lt;b&gt;&lt;u&gt;&amp;nbsp;connection.commit()&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;b&gt;&lt;u&gt;라인을 추가&lt;/u&gt;&lt;/b&gt;합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; color: rgb(0, 0, 0); font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; color: rgb(0, 0, 0); font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; line-height: 1.8;&quot;&gt;Connection 객체로 DB 연결을 설정하고 Cursor로 데이터를 가지고 오는 Python에서 자주 볼 수 있는 형태로 데이터를 가지고 옵니다. 실행하면 아래와 같은 결과를 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;실행 결과&lt;/b&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(203, 203, 203); background-color: rgb(0, 0, 0); padding: 10px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;(1, 'ssooni', 'Welcome! Hi Je'), (13, 'aa', 'aaa'), (14, 'aa', 'aaaa'), (15, '?????', '?? ??????\n'))&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(70, 65, 217);&quot;&gt;2. pandas.DataFrame으로 변환&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;앞선 실행 결과는 Column 이 없어서&amp;nbsp;각각의 원소들이 어떤 데이터인지 알 수가 없습니다. pandas를 사용하여 Column 명을 할당하고, 데이터를 쉽게 분석하고 싶기도 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;보통 Python DB 라이브러리에서는 &lt;b&gt;&lt;u&gt;cursor.description 에 각각의 컬럼에 대한 정보&lt;/u&gt;&lt;/b&gt;를 따로 담습니다. 그래서 따로 함수를 짜서 cursor.description 안에서 컬럼명을 가지고 온 후 매핑을 하는 과정을 작성했습니다만, &lt;b&gt;최근에 나온 라이브러리는 그것마저 해줍니다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;pymysql.cursors&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;connection&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;pymysql.connect(host&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'localhost'&lt;/span&gt;,&amp;nbsp;port&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;3306&lt;/span&gt;,&amp;nbsp;user&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'root'&lt;/span&gt;,&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;password&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'12'&lt;/span&gt;,&amp;nbsp;db&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'ssooni'&lt;/span&gt;,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;charset&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'utf8'&lt;/span&gt;,&amp;nbsp;autocommit&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;True,&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cursorclass&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;pymysql.cursors.DictCursor)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;cursor&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;connection.cursor()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;sql&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;select&amp;nbsp;*&amp;nbsp;from&amp;nbsp;ssooni.board&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;cursor.execute(sql)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;result&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;cursor.fetchall()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#4be6fa&quot;&gt;print&lt;/span&gt;(result)&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;아까 코드와 달라진 점은 cursorclass에 &lt;b&gt;&lt;u&gt;DictCursor&amp;nbsp;&lt;/u&gt;&lt;/b&gt;를&amp;nbsp;추가했습니다. &lt;b&gt;&lt;u&gt;DB를 조회한 결과를 Column 명이 Key 인 Dictionary로 저장&lt;/u&gt;&lt;/b&gt;해 줍니다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;실행 결과&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(203, 203, 203); background-color: rgb(0, 0, 0); padding: 10px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;[{'bno': 1, 'userName': 'ssooni', 'contents': 'Welcome! Hi Je'}, {'bno': 13, 'userName': 'aa', 'contents': 'aaa'}, {'bno': 14, 'userName': 'aa', 'contents': 'aaaa'}, {'bno': 15, 'userName': '?????', 'contents': '?? ??????\n'}]&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이전 결과와 달리 Column 명이 있어서 각각의 원소가 의미하는 것이 무엇인지 쉽게 이해 할 수 있습니다.&lt;/p&gt;
&lt;p&gt;실행 결과를 Pandas DataFrame으로 바꾸는 것은 더욱 간단합니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;pandas&amp;nbsp;as&amp;nbsp;pd&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;df&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;pd.DataFrame(result)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#4be6fa&quot;&gt;print&lt;/span&gt;(df)&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;실행 결과&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(203, 203, 203); background-color: rgb(0, 0, 0); padding: 10px;&quot;&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp; &amp;nbsp;bno&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; contents userName&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;0&amp;nbsp; &amp;nbsp; 1&amp;nbsp; Welcome! Hi Je&amp;nbsp; &amp;nbsp;ssooni&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;1&amp;nbsp; &amp;nbsp;13&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;aaa&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;aa&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;2&amp;nbsp; &amp;nbsp;14&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; aaaa&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;aa&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;3&amp;nbsp; &amp;nbsp;15&amp;nbsp; &amp;nbsp; &amp;nbsp;?? ??????\n&amp;nbsp; &amp;nbsp; ?????&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;이제 DataFrame으로 평균을 구하는 등 통계도 할 수 있고, 단순히 CSV 파일로 저장하여 엑셀을 정말 잘하는 팀원에게 노동을 시킬 수도 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;도움이 되셨다면 공감 버튼 한 번만 눌러주세요.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;공감 버튼은 저에게 큰 동기부여가 됩니다.&lt;/p&gt;</description>
      <category>Data Mining</category>
      <category>DataFrame 저장</category>
      <category>pandas</category>
      <category>pandas MySQL</category>
      <category>pymysql</category>
      <category>python MySQL</category>
      <category>Python 데이터 조회 결과 저장</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/71</guid>
      <comments>https://ssoonidev.tistory.com/71#entry71comment</comments>
      <pubDate>Thu, 9 Aug 2018 00:18:07 +0900</pubDate>
    </item>
    <item>
      <title>[다녀왔습니다] - 창경궁 야간 개장</title>
      <link>https://ssoonidev.tistory.com/70</link>
      <description>&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 320px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/999056485B66C9DF1D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F999056485B66C9DF1D&quot; width=&quot;320&quot; height=&quot;427&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;가족들이 서울에 올라와서 경복궁 야간개장을 같이 관람했었는데, 우리&amp;nbsp;감자님이&amp;nbsp;상당히 기분이 안좋아 보이네요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;감 : &quot;아.. 나도 가고 싶었는데...&quot;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;나 : &quot;한번 찾아볼게 ㅎㅎㅎ&quot;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;매년마다 경복궁 야간 개장&amp;nbsp;예매에 실패했었는데, 혹시나 해서 찾아 봤는데 역시나!! 매진!!&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;경복궁 야간개장은 9월에 성공하리라 다짐하고, 대안으로 선택한 &lt;b&gt;&lt;u&gt;창경궁 야간개장&lt;/u&gt;&lt;/b&gt;을 다녀왔어요&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; color: rgb(3, 0, 102);&quot;&gt;1. 예매방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;인터파크에서 창경궁 야간개장으로 검색&lt;/b&gt;하시면, 표를 예매할 수 있어요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;2018년 창경궁의 야간개장 기간은 아래와 같아요. 2018년 7월은 끝나버렸으니, 아직 못가신 분들은 9월과 10월에 한 번 관람해보세요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;- 4월(궁중문화축전): 4. 28. ~ 5. 6. / 19:00 ~ 21:30(입장 마감 20:30)&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;- 5월: 5. 20. ~ 6. 2. / 19:00 ~ 21:30(입장 마감 20:30)&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;- 6월: 6. 17. ~ 6. 30. / 19:30 ~ 22:00(입장 마감 21:00)&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;- 7월: 7. 22. ~ 8. 4. / 19:30 ~ 22:00(입장 마감 21:00)&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;- 9월: 9. 16. ~ 9. 29. / 19:00 ~ 21:30(입장 마감 20:30)&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;- 10월: 10. 21. ~ 11. 3. / 19:00 ~ 21:30(입장 마감 20:30)&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;입장료는 1000원이구요. 한복을 착용한 사람에 대해 무료로 입장 가능하지만 예매는 꼭 하셔야 해요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;현장에서 발권을 안 해줘요.&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; color: rgb(3, 0, 102);&quot;&gt;2. 가는 길&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;가는 길 때문에 정말 고생했어요. 창덕궁 안에 창경궁이 있으니까 광화문에서 걸어갔는데,&amp;nbsp;입구가 달라요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;낮에는 같은 입구로 들어가서 창경궁 쪽으로 갈 수 있는데, 창덕궁은 야간개장을 안해서 창덕궁 정문인 돈화문을 이용할 수 없어요. 네비게이션이나 지도로 찾으실 때 &lt;b&gt;&lt;u&gt;서울대학교병원이나&amp;nbsp;홍화문&lt;/u&gt;&lt;/b&gt;으로 검색을 해서 가세요. 창덕궁에서 하염없이 기다리는 두세분 본 거 같아요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; color: rgb(3, 0, 102);&quot;&gt;&lt;br /&gt;3. 본격 관람&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; color: rgb(3, 0, 102);&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9941574B5B66CA6721&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9941574B5B66CA6721&quot; width=&quot;580&quot; height=&quot;326&quot; filename=&quot;KakaoTalk_20180805_185042678.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;7시 40분쯤에 입장했는데, 아직 여름이라 조금 밝긴 했어요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;그래서 저녁이라는 느낌보다는 새벽에 고궁을 다닌다는 느낌도 들었던거 같아요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;경복궁보다 좋았던 점은 국악&amp;nbsp;공연을 해주는 것이였어요. 전통 악기로 재즈를 연주하는 세션이 있었는데, 전통악기에 좀 더 익숙해질 수 있었던거 같아요. 결코 전통악기들의 음색이 서양악기에 꿇리지 않다는걸 느꼈어요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 640px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99652F4A5B66CB842C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99652F4A5B66CB842C&quot; width=&quot;640&quot; height=&quot;359&quot; filename=&quot;KakaoTalk_20180805_185043735.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;연못을 따라 걷다보면 고궁과는 전혀 어울리지 않은 현대식 식물원이 있어요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;우리나라 최초의 식물원인 창경궁 대온실인데요. 과거에 희귀한 열대 식물을 전시하던 곳을 지금은 각 종 천연기념물로 등록된 식물들을 전시해 놓았어요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;7월 입장의 마지막 날에 표를 겨우 얻어서 다녀왔는데, 가을과 봄의 모습은 어떨지, 또 낮의 모습은 어떨지 궁금하네요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;감자님도 매우 만족하고 갔답니다. 연인, 가족, 친구들끼리 이번 9월 10월에 한 번 다녀오는것은 어떠세요??&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;끝까지 글 읽어주셔서 감사합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;공감! 한 번 눌러주시면 글쓴이에게 정말 큰 동기부여가 됩니다. 감사합니다!!&lt;/p&gt;</description>
      <category>눈누난냐</category>
      <category>데이트 코스</category>
      <category>서울 종로 데이트</category>
      <category>야경 좋은 곳</category>
      <category>창경궁</category>
      <category>창경궁 야간개장</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/70</guid>
      <comments>https://ssoonidev.tistory.com/70#entry70comment</comments>
      <pubDate>Sun, 5 Aug 2018 19:16:37 +0900</pubDate>
    </item>
    <item>
      <title>[Python] pandas plot 함수로 데이터 시각화</title>
      <link>https://ssoonidev.tistory.com/68</link>
      <description>&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;title&gt;Untitled&lt;/title&gt;&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js&quot;&gt;&lt;/script&gt;

&lt;style type=&quot;text/css&quot;&gt;
    /*!
*
* Twitter Bootstrap
*
*/
/*!
 * Bootstrap v3.3.7 (http://getbootstrap.com)
 * Copyright 2011-2016 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}
audio,
canvas,
progress,
video {
  display: inline-block;
  vertical-align: baseline;
}
audio:not([controls]) {
  display: none;
  height: 0;
}
[hidden],
template {
  display: none;
}
a {
  background-color: transparent;
}
a:active,
a:hover {
  outline: 0;
}
abbr[title] {
  border-bottom: 1px dotted;
}
b,
strong {
  font-weight: bold;
}
dfn {
  font-style: italic;
}
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
mark {
  background: #ff0;
  color: #000;
}
small {
  font-size: 80%;
}
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}
img {
  border: 0;
}
svg:not(:root) {
  overflow: hidden;
}
figure {
  margin: 1em 40px;
}
hr {
  box-sizing: content-box;
  height: 0;
}
pre {
  overflow: auto;
}
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
html input[type=&quot;button&quot;],
input[type=&quot;reset&quot;],
input[type=&quot;submit&quot;] {
  -webkit-appearance: button;
  cursor: pointer;
}
button[disabled],
html input[disabled] {
  cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
input {
  line-height: normal;
}
input[type=&quot;checkbox&quot;],
input[type=&quot;radio&quot;] {
  box-sizing: border-box;
  padding: 0;
}
input[type=&quot;number&quot;]::-webkit-inner-spin-button,
input[type=&quot;number&quot;]::-webkit-outer-spin-button {
  height: auto;
}
input[type=&quot;search&quot;] {
  -webkit-appearance: textfield;
  box-sizing: content-box;
}
input[type=&quot;search&quot;]::-webkit-search-cancel-button,
input[type=&quot;search&quot;]::-webkit-search-decoration {
  -webkit-appearance: none;
}
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}
legend {
  border: 0;
  padding: 0;
}
textarea {
  overflow: auto;
}
optgroup {
  font-weight: bold;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
td,
th {
  padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
  *,
  *:before,
  *:after {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: &quot; (&quot; attr(href) &quot;)&quot;;
  }
  abbr[title]:after {
    content: &quot; (&quot; attr(title) &quot;)&quot;;
  }
  a[href^=&quot;#&quot;]:after,
  a[href^=&quot;javascript:&quot;]:after {
    content: &quot;&quot;;
  }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  .navbar {
    display: none;
  }
  .btn &gt; .caret,
  .dropup &gt; .btn &gt; .caret {
    border-top-color: #000 !important;
  }
  .label {
    border: 1px solid #000;
  }
  .table {
    border-collapse: collapse !important;
  }
  .table td,
  .table th {
    background-color: #fff !important;
  }
  .table-bordered th,
  .table-bordered td {
    border: 1px solid #ddd !important;
  }
}
@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
  position: relative;
  top: 1px;
  display: inline-block;
  font-family: 'Glyphicons Halflings';
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
  content: &quot;\002a&quot;;
}
.glyphicon-plus:before {
  content: &quot;\002b&quot;;
}
.glyphicon-euro:before,
.glyphicon-eur:before {
  content: &quot;\20ac&quot;;
}
.glyphicon-minus:before {
  content: &quot;\2212&quot;;
}
.glyphicon-cloud:before {
  content: &quot;\2601&quot;;
}
.glyphicon-envelope:before {
  content: &quot;\2709&quot;;
}
.glyphicon-pencil:before {
  content: &quot;\270f&quot;;
}
.glyphicon-glass:before {
  content: &quot;\e001&quot;;
}
.glyphicon-music:before {
  content: &quot;\e002&quot;;
}
.glyphicon-search:before {
  content: &quot;\e003&quot;;
}
.glyphicon-heart:before {
  content: &quot;\e005&quot;;
}
.glyphicon-star:before {
  content: &quot;\e006&quot;;
}
.glyphicon-star-empty:before {
  content: &quot;\e007&quot;;
}
.glyphicon-user:before {
  content: &quot;\e008&quot;;
}
.glyphicon-film:before {
  content: &quot;\e009&quot;;
}
.glyphicon-th-large:before {
  content: &quot;\e010&quot;;
}
.glyphicon-th:before {
  content: &quot;\e011&quot;;
}
.glyphicon-th-list:before {
  content: &quot;\e012&quot;;
}
.glyphicon-ok:before {
  content: &quot;\e013&quot;;
}
.glyphicon-remove:before {
  content: &quot;\e014&quot;;
}
.glyphicon-zoom-in:before {
  content: &quot;\e015&quot;;
}
.glyphicon-zoom-out:before {
  content: &quot;\e016&quot;;
}
.glyphicon-off:before {
  content: &quot;\e017&quot;;
}
.glyphicon-signal:before {
  content: &quot;\e018&quot;;
}
.glyphicon-cog:before {
  content: &quot;\e019&quot;;
}
.glyphicon-trash:before {
  content: &quot;\e020&quot;;
}
.glyphicon-home:before {
  content: &quot;\e021&quot;;
}
.glyphicon-file:before {
  content: &quot;\e022&quot;;
}
.glyphicon-time:before {
  content: &quot;\e023&quot;;
}
.glyphicon-road:before {
  content: &quot;\e024&quot;;
}
.glyphicon-download-alt:before {
  content: &quot;\e025&quot;;
}
.glyphicon-download:before {
  content: &quot;\e026&quot;;
}
.glyphicon-upload:before {
  content: &quot;\e027&quot;;
}
.glyphicon-inbox:before {
  content: &quot;\e028&quot;;
}
.glyphicon-play-circle:before {
  content: &quot;\e029&quot;;
}
.glyphicon-repeat:before {
  content: &quot;\e030&quot;;
}
.glyphicon-refresh:before {
  content: &quot;\e031&quot;;
}
.glyphicon-list-alt:before {
  content: &quot;\e032&quot;;
}
.glyphicon-lock:before {
  content: &quot;\e033&quot;;
}
.glyphicon-flag:before {
  content: &quot;\e034&quot;;
}
.glyphicon-headphones:before {
  content: &quot;\e035&quot;;
}
.glyphicon-volume-off:before {
  content: &quot;\e036&quot;;
}
.glyphicon-volume-down:before {
  content: &quot;\e037&quot;;
}
.glyphicon-volume-up:before {
  content: &quot;\e038&quot;;
}
.glyphicon-qrcode:before {
  content: &quot;\e039&quot;;
}
.glyphicon-barcode:before {
  content: &quot;\e040&quot;;
}
.glyphicon-tag:before {
  content: &quot;\e041&quot;;
}
.glyphicon-tags:before {
  content: &quot;\e042&quot;;
}
.glyphicon-book:before {
  content: &quot;\e043&quot;;
}
.glyphicon-bookmark:before {
  content: &quot;\e044&quot;;
}
.glyphicon-print:before {
  content: &quot;\e045&quot;;
}
.glyphicon-camera:before {
  content: &quot;\e046&quot;;
}
.glyphicon-font:before {
  content: &quot;\e047&quot;;
}
.glyphicon-bold:before {
  content: &quot;\e048&quot;;
}
.glyphicon-italic:before {
  content: &quot;\e049&quot;;
}
.glyphicon-text-height:before {
  content: &quot;\e050&quot;;
}
.glyphicon-text-width:before {
  content: &quot;\e051&quot;;
}
.glyphicon-align-left:before {
  content: &quot;\e052&quot;;
}
.glyphicon-align-center:before {
  content: &quot;\e053&quot;;
}
.glyphicon-align-right:before {
  content: &quot;\e054&quot;;
}
.glyphicon-align-justify:before {
  content: &quot;\e055&quot;;
}
.glyphicon-list:before {
  content: &quot;\e056&quot;;
}
.glyphicon-indent-left:before {
  content: &quot;\e057&quot;;
}
.glyphicon-indent-right:before {
  content: &quot;\e058&quot;;
}
.glyphicon-facetime-video:before {
  content: &quot;\e059&quot;;
}
.glyphicon-picture:before {
  content: &quot;\e060&quot;;
}
.glyphicon-map-marker:before {
  content: &quot;\e062&quot;;
}
.glyphicon-adjust:before {
  content: &quot;\e063&quot;;
}
.glyphicon-tint:before {
  content: &quot;\e064&quot;;
}
.glyphicon-edit:before {
  content: &quot;\e065&quot;;
}
.glyphicon-share:before {
  content: &quot;\e066&quot;;
}
.glyphicon-check:before {
  content: &quot;\e067&quot;;
}
.glyphicon-move:before {
  content: &quot;\e068&quot;;
}
.glyphicon-step-backward:before {
  content: &quot;\e069&quot;;
}
.glyphicon-fast-backward:before {
  content: &quot;\e070&quot;;
}
.glyphicon-backward:before {
  content: &quot;\e071&quot;;
}
.glyphicon-play:before {
  content: &quot;\e072&quot;;
}
.glyphicon-pause:before {
  content: &quot;\e073&quot;;
}
.glyphicon-stop:before {
  content: &quot;\e074&quot;;
}
.glyphicon-forward:before {
  content: &quot;\e075&quot;;
}
.glyphicon-fast-forward:before {
  content: &quot;\e076&quot;;
}
.glyphicon-step-forward:before {
  content: &quot;\e077&quot;;
}
.glyphicon-eject:before {
  content: &quot;\e078&quot;;
}
.glyphicon-chevron-left:before {
  content: &quot;\e079&quot;;
}
.glyphicon-chevron-right:before {
  content: &quot;\e080&quot;;
}
.glyphicon-plus-sign:before {
  content: &quot;\e081&quot;;
}
.glyphicon-minus-sign:before {
  content: &quot;\e082&quot;;
}
.glyphicon-remove-sign:before {
  content: &quot;\e083&quot;;
}
.glyphicon-ok-sign:before {
  content: &quot;\e084&quot;;
}
.glyphicon-question-sign:before {
  content: &quot;\e085&quot;;
}
.glyphicon-info-sign:before {
  content: &quot;\e086&quot;;
}
.glyphicon-screenshot:before {
  content: &quot;\e087&quot;;
}
.glyphicon-remove-circle:before {
  content: &quot;\e088&quot;;
}
.glyphicon-ok-circle:before {
  content: &quot;\e089&quot;;
}
.glyphicon-ban-circle:before {
  content: &quot;\e090&quot;;
}
.glyphicon-arrow-left:before {
  content: &quot;\e091&quot;;
}
.glyphicon-arrow-right:before {
  content: &quot;\e092&quot;;
}
.glyphicon-arrow-up:before {
  content: &quot;\e093&quot;;
}
.glyphicon-arrow-down:before {
  content: &quot;\e094&quot;;
}
.glyphicon-share-alt:before {
  content: &quot;\e095&quot;;
}
.glyphicon-resize-full:before {
  content: &quot;\e096&quot;;
}
.glyphicon-resize-small:before {
  content: &quot;\e097&quot;;
}
.glyphicon-exclamation-sign:before {
  content: &quot;\e101&quot;;
}
.glyphicon-gift:before {
  content: &quot;\e102&quot;;
}
.glyphicon-leaf:before {
  content: &quot;\e103&quot;;
}
.glyphicon-fire:before {
  content: &quot;\e104&quot;;
}
.glyphicon-eye-open:before {
  content: &quot;\e105&quot;;
}
.glyphicon-eye-close:before {
  content: &quot;\e106&quot;;
}
.glyphicon-warning-sign:before {
  content: &quot;\e107&quot;;
}
.glyphicon-plane:before {
  content: &quot;\e108&quot;;
}
.glyphicon-calendar:before {
  content: &quot;\e109&quot;;
}
.glyphicon-random:before {
  content: &quot;\e110&quot;;
}
.glyphicon-comment:before {
  content: &quot;\e111&quot;;
}
.glyphicon-magnet:before {
  content: &quot;\e112&quot;;
}
.glyphicon-chevron-up:before {
  content: &quot;\e113&quot;;
}
.glyphicon-chevron-down:before {
  content: &quot;\e114&quot;;
}
.glyphicon-retweet:before {
  content: &quot;\e115&quot;;
}
.glyphicon-shopping-cart:before {
  content: &quot;\e116&quot;;
}
.glyphicon-folder-close:before {
  content: &quot;\e117&quot;;
}
.glyphicon-folder-open:before {
  content: &quot;\e118&quot;;
}
.glyphicon-resize-vertical:before {
  content: &quot;\e119&quot;;
}
.glyphicon-resize-horizontal:before {
  content: &quot;\e120&quot;;
}
.glyphicon-hdd:before {
  content: &quot;\e121&quot;;
}
.glyphicon-bullhorn:before {
  content: &quot;\e122&quot;;
}
.glyphicon-bell:before {
  content: &quot;\e123&quot;;
}
.glyphicon-certificate:before {
  content: &quot;\e124&quot;;
}
.glyphicon-thumbs-up:before {
  content: &quot;\e125&quot;;
}
.glyphicon-thumbs-down:before {
  content: &quot;\e126&quot;;
}
.glyphicon-hand-right:before {
  content: &quot;\e127&quot;;
}
.glyphicon-hand-left:before {
  content: &quot;\e128&quot;;
}
.glyphicon-hand-up:before {
  content: &quot;\e129&quot;;
}
.glyphicon-hand-down:before {
  content: &quot;\e130&quot;;
}
.glyphicon-circle-arrow-right:before {
  content: &quot;\e131&quot;;
}
.glyphicon-circle-arrow-left:before {
  content: &quot;\e132&quot;;
}
.glyphicon-circle-arrow-up:before {
  content: &quot;\e133&quot;;
}
.glyphicon-circle-arrow-down:before {
  content: &quot;\e134&quot;;
}
.glyphicon-globe:before {
  content: &quot;\e135&quot;;
}
.glyphicon-wrench:before {
  content: &quot;\e136&quot;;
}
.glyphicon-tasks:before {
  content: &quot;\e137&quot;;
}
.glyphicon-filter:before {
  content: &quot;\e138&quot;;
}
.glyphicon-briefcase:before {
  content: &quot;\e139&quot;;
}
.glyphicon-fullscreen:before {
  content: &quot;\e140&quot;;
}
.glyphicon-dashboard:before {
  content: &quot;\e141&quot;;
}
.glyphicon-paperclip:before {
  content: &quot;\e142&quot;;
}
.glyphicon-heart-empty:before {
  content: &quot;\e143&quot;;
}
.glyphicon-link:before {
  content: &quot;\e144&quot;;
}
.glyphicon-phone:before {
  content: &quot;\e145&quot;;
}
.glyphicon-pushpin:before {
  content: &quot;\e146&quot;;
}
.glyphicon-usd:before {
  content: &quot;\e148&quot;;
}
.glyphicon-gbp:before {
  content: &quot;\e149&quot;;
}
.glyphicon-sort:before {
  content: &quot;\e150&quot;;
}
.glyphicon-sort-by-alphabet:before {
  content: &quot;\e151&quot;;
}
.glyphicon-sort-by-alphabet-alt:before {
  content: &quot;\e152&quot;;
}
.glyphicon-sort-by-order:before {
  content: &quot;\e153&quot;;
}
.glyphicon-sort-by-order-alt:before {
  content: &quot;\e154&quot;;
}
.glyphicon-sort-by-attributes:before {
  content: &quot;\e155&quot;;
}
.glyphicon-sort-by-attributes-alt:before {
  content: &quot;\e156&quot;;
}
.glyphicon-unchecked:before {
  content: &quot;\e157&quot;;
}
.glyphicon-expand:before {
  content: &quot;\e158&quot;;
}
.glyphicon-collapse-down:before {
  content: &quot;\e159&quot;;
}
.glyphicon-collapse-up:before {
  content: &quot;\e160&quot;;
}
.glyphicon-log-in:before {
  content: &quot;\e161&quot;;
}
.glyphicon-flash:before {
  content: &quot;\e162&quot;;
}
.glyphicon-log-out:before {
  content: &quot;\e163&quot;;
}
.glyphicon-new-window:before {
  content: &quot;\e164&quot;;
}
.glyphicon-record:before {
  content: &quot;\e165&quot;;
}
.glyphicon-save:before {
  content: &quot;\e166&quot;;
}
.glyphicon-open:before {
  content: &quot;\e167&quot;;
}
.glyphicon-saved:before {
  content: &quot;\e168&quot;;
}
.glyphicon-import:before {
  content: &quot;\e169&quot;;
}
.glyphicon-export:before {
  content: &quot;\e170&quot;;
}
.glyphicon-send:before {
  content: &quot;\e171&quot;;
}
.glyphicon-floppy-disk:before {
  content: &quot;\e172&quot;;
}
.glyphicon-floppy-saved:before {
  content: &quot;\e173&quot;;
}
.glyphicon-floppy-remove:before {
  content: &quot;\e174&quot;;
}
.glyphicon-floppy-save:before {
  content: &quot;\e175&quot;;
}
.glyphicon-floppy-open:before {
  content: &quot;\e176&quot;;
}
.glyphicon-credit-card:before {
  content: &quot;\e177&quot;;
}
.glyphicon-transfer:before {
  content: &quot;\e178&quot;;
}
.glyphicon-cutlery:before {
  content: &quot;\e179&quot;;
}
.glyphicon-header:before {
  content: &quot;\e180&quot;;
}
.glyphicon-compressed:before {
  content: &quot;\e181&quot;;
}
.glyphicon-earphone:before {
  content: &quot;\e182&quot;;
}
.glyphicon-phone-alt:before {
  content: &quot;\e183&quot;;
}
.glyphicon-tower:before {
  content: &quot;\e184&quot;;
}
.glyphicon-stats:before {
  content: &quot;\e185&quot;;
}
.glyphicon-sd-video:before {
  content: &quot;\e186&quot;;
}
.glyphicon-hd-video:before {
  content: &quot;\e187&quot;;
}
.glyphicon-subtitles:before {
  content: &quot;\e188&quot;;
}
.glyphicon-sound-stereo:before {
  content: &quot;\e189&quot;;
}
.glyphicon-sound-dolby:before {
  content: &quot;\e190&quot;;
}
.glyphicon-sound-5-1:before {
  content: &quot;\e191&quot;;
}
.glyphicon-sound-6-1:before {
  content: &quot;\e192&quot;;
}
.glyphicon-sound-7-1:before {
  content: &quot;\e193&quot;;
}
.glyphicon-copyright-mark:before {
  content: &quot;\e194&quot;;
}
.glyphicon-registration-mark:before {
  content: &quot;\e195&quot;;
}
.glyphicon-cloud-download:before {
  content: &quot;\e197&quot;;
}
.glyphicon-cloud-upload:before {
  content: &quot;\e198&quot;;
}
.glyphicon-tree-conifer:before {
  content: &quot;\e199&quot;;
}
.glyphicon-tree-deciduous:before {
  content: &quot;\e200&quot;;
}
.glyphicon-cd:before {
  content: &quot;\e201&quot;;
}
.glyphicon-save-file:before {
  content: &quot;\e202&quot;;
}
.glyphicon-open-file:before {
  content: &quot;\e203&quot;;
}
.glyphicon-level-up:before {
  content: &quot;\e204&quot;;
}
.glyphicon-copy:before {
  content: &quot;\e205&quot;;
}
.glyphicon-paste:before {
  content: &quot;\e206&quot;;
}
.glyphicon-alert:before {
  content: &quot;\e209&quot;;
}
.glyphicon-equalizer:before {
  content: &quot;\e210&quot;;
}
.glyphicon-king:before {
  content: &quot;\e211&quot;;
}
.glyphicon-queen:before {
  content: &quot;\e212&quot;;
}
.glyphicon-pawn:before {
  content: &quot;\e213&quot;;
}
.glyphicon-bishop:before {
  content: &quot;\e214&quot;;
}
.glyphicon-knight:before {
  content: &quot;\e215&quot;;
}
.glyphicon-baby-formula:before {
  content: &quot;\e216&quot;;
}
.glyphicon-tent:before {
  content: &quot;\26fa&quot;;
}
.glyphicon-blackboard:before {
  content: &quot;\e218&quot;;
}
.glyphicon-bed:before {
  content: &quot;\e219&quot;;
}
.glyphicon-apple:before {
  content: &quot;\f8ff&quot;;
}
.glyphicon-erase:before {
  content: &quot;\e221&quot;;
}
.glyphicon-hourglass:before {
  content: &quot;\231b&quot;;
}
.glyphicon-lamp:before {
  content: &quot;\e223&quot;;
}
.glyphicon-duplicate:before {
  content: &quot;\e224&quot;;
}
.glyphicon-piggy-bank:before {
  content: &quot;\e225&quot;;
}
.glyphicon-scissors:before {
  content: &quot;\e226&quot;;
}
.glyphicon-bitcoin:before {
  content: &quot;\e227&quot;;
}
.glyphicon-btc:before {
  content: &quot;\e227&quot;;
}
.glyphicon-xbt:before {
  content: &quot;\e227&quot;;
}
.glyphicon-yen:before {
  content: &quot;\00a5&quot;;
}
.glyphicon-jpy:before {
  content: &quot;\00a5&quot;;
}
.glyphicon-ruble:before {
  content: &quot;\20bd&quot;;
}
.glyphicon-rub:before {
  content: &quot;\20bd&quot;;
}
.glyphicon-scale:before {
  content: &quot;\e230&quot;;
}
.glyphicon-ice-lolly:before {
  content: &quot;\e231&quot;;
}
.glyphicon-ice-lolly-tasted:before {
  content: &quot;\e232&quot;;
}
.glyphicon-education:before {
  content: &quot;\e233&quot;;
}
.glyphicon-option-horizontal:before {
  content: &quot;\e234&quot;;
}
.glyphicon-option-vertical:before {
  content: &quot;\e235&quot;;
}
.glyphicon-menu-hamburger:before {
  content: &quot;\e236&quot;;
}
.glyphicon-modal-window:before {
  content: &quot;\e237&quot;;
}
.glyphicon-oil:before {
  content: &quot;\e238&quot;;
}
.glyphicon-grain:before {
  content: &quot;\e239&quot;;
}
.glyphicon-sunglasses:before {
  content: &quot;\e240&quot;;
}
.glyphicon-text-size:before {
  content: &quot;\e241&quot;;
}
.glyphicon-text-color:before {
  content: &quot;\e242&quot;;
}
.glyphicon-text-background:before {
  content: &quot;\e243&quot;;
}
.glyphicon-object-align-top:before {
  content: &quot;\e244&quot;;
}
.glyphicon-object-align-bottom:before {
  content: &quot;\e245&quot;;
}
.glyphicon-object-align-horizontal:before {
  content: &quot;\e246&quot;;
}
.glyphicon-object-align-left:before {
  content: &quot;\e247&quot;;
}
.glyphicon-object-align-vertical:before {
  content: &quot;\e248&quot;;
}
.glyphicon-object-align-right:before {
  content: &quot;\e249&quot;;
}
.glyphicon-triangle-right:before {
  content: &quot;\e250&quot;;
}
.glyphicon-triangle-left:before {
  content: &quot;\e251&quot;;
}
.glyphicon-triangle-bottom:before {
  content: &quot;\e252&quot;;
}
.glyphicon-triangle-top:before {
  content: &quot;\e253&quot;;
}
.glyphicon-console:before {
  content: &quot;\e254&quot;;
}
.glyphicon-superscript:before {
  content: &quot;\e255&quot;;
}
.glyphicon-subscript:before {
  content: &quot;\e256&quot;;
}
.glyphicon-menu-left:before {
  content: &quot;\e257&quot;;
}
.glyphicon-menu-right:before {
  content: &quot;\e258&quot;;
}
.glyphicon-menu-down:before {
  content: &quot;\e259&quot;;
}
.glyphicon-menu-up:before {
  content: &quot;\e260&quot;;
}
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
html {
  font-size: 10px;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
  font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;
  font-size: 13px;
  line-height: 1.42857143;
  color: #000;
  background-color: #fff;
}
input,
button,
select,
textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}
a {
  color: #337ab7;
  text-decoration: none;
}
a:hover,
a:focus {
  color: #23527c;
  text-decoration: underline;
}
a:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
figure {
  margin: 0;
}
img {
  vertical-align: middle;
}
.img-responsive,
.thumbnail &gt; img,
.thumbnail a &gt; img,
.carousel-inner &gt; .item &gt; img,
.carousel-inner &gt; .item &gt; a &gt; img {
  display: block;
  max-width: 100%;
  height: auto;
}
.img-rounded {
  border-radius: 3px;
}
.img-thumbnail {
  padding: 4px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  display: inline-block;
  max-width: 100%;
  height: auto;
}
.img-circle {
  border-radius: 50%;
}
hr {
  margin-top: 18px;
  margin-bottom: 18px;
  border: 0;
  border-top: 1px solid #eeeeee;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
[role=&quot;button&quot;] {
  cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  font-family: inherit;
  font-weight: 500;
  line-height: 1.1;
  color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
  font-weight: normal;
  line-height: 1;
  color: #777777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
  margin-top: 18px;
  margin-bottom: 9px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
  font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
  margin-top: 9px;
  margin-bottom: 9px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
  font-size: 75%;
}
h1,
.h1 {
  font-size: 33px;
}
h2,
.h2 {
  font-size: 27px;
}
h3,
.h3 {
  font-size: 23px;
}
h4,
.h4 {
  font-size: 17px;
}
h5,
.h5 {
  font-size: 13px;
}
h6,
.h6 {
  font-size: 12px;
}
p {
  margin: 0 0 9px;
}
.lead {
  margin-bottom: 18px;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.4;
}
@media (min-width: 768px) {
  .lead {
    font-size: 19.5px;
  }
}
small,
.small {
  font-size: 92%;
}
mark,
.mark {
  background-color: #fcf8e3;
  padding: .2em;
}
.text-left {
  text-align: left;
}
.text-right {
  text-align: right;
}
.text-center {
  text-align: center;
}
.text-justify {
  text-align: justify;
}
.text-nowrap {
  white-space: nowrap;
}
.text-lowercase {
  text-transform: lowercase;
}
.text-uppercase {
  text-transform: uppercase;
}
.text-capitalize {
  text-transform: capitalize;
}
.text-muted {
  color: #777777;
}
.text-primary {
  color: #337ab7;
}
a.text-primary:hover,
a.text-primary:focus {
  color: #286090;
}
.text-success {
  color: #3c763d;
}
a.text-success:hover,
a.text-success:focus {
  color: #2b542c;
}
.text-info {
  color: #31708f;
}
a.text-info:hover,
a.text-info:focus {
  color: #245269;
}
.text-warning {
  color: #8a6d3b;
}
a.text-warning:hover,
a.text-warning:focus {
  color: #66512c;
}
.text-danger {
  color: #a94442;
}
a.text-danger:hover,
a.text-danger:focus {
  color: #843534;
}
.bg-primary {
  color: #fff;
  background-color: #337ab7;
}
a.bg-primary:hover,
a.bg-primary:focus {
  background-color: #286090;
}
.bg-success {
  background-color: #dff0d8;
}
a.bg-success:hover,
a.bg-success:focus {
  background-color: #c1e2b3;
}
.bg-info {
  background-color: #d9edf7;
}
a.bg-info:hover,
a.bg-info:focus {
  background-color: #afd9ee;
}
.bg-warning {
  background-color: #fcf8e3;
}
a.bg-warning:hover,
a.bg-warning:focus {
  background-color: #f7ecb5;
}
.bg-danger {
  background-color: #f2dede;
}
a.bg-danger:hover,
a.bg-danger:focus {
  background-color: #e4b9b9;
}
.page-header {
  padding-bottom: 8px;
  margin: 36px 0 18px;
  border-bottom: 1px solid #eeeeee;
}
ul,
ol {
  margin-top: 0;
  margin-bottom: 9px;
}
ul ul,
ol ul,
ul ol,
ol ol {
  margin-bottom: 0;
}
.list-unstyled {
  padding-left: 0;
  list-style: none;
}
.list-inline {
  padding-left: 0;
  list-style: none;
  margin-left: -5px;
}
.list-inline &gt; li {
  display: inline-block;
  padding-left: 5px;
  padding-right: 5px;
}
dl {
  margin-top: 0;
  margin-bottom: 18px;
}
dt,
dd {
  line-height: 1.42857143;
}
dt {
  font-weight: bold;
}
dd {
  margin-left: 0;
}
@media (min-width: 541px) {
  .dl-horizontal dt {
    float: left;
    width: 160px;
    clear: left;
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .dl-horizontal dd {
    margin-left: 180px;
  }
}
abbr[title],
abbr[data-original-title] {
  cursor: help;
  border-bottom: 1px dotted #777777;
}
.initialism {
  font-size: 90%;
  text-transform: uppercase;
}
blockquote {
  padding: 9px 18px;
  margin: 0 0 18px;
  font-size: inherit;
  border-left: 5px solid #eeeeee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
  margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
  display: block;
  font-size: 80%;
  line-height: 1.42857143;
  color: #777777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
  content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
  padding-right: 15px;
  padding-left: 0;
  border-right: 5px solid #eeeeee;
  border-left: 0;
  text-align: right;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
  content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
  content: '\00A0 \2014';
}
address {
  margin-bottom: 18px;
  font-style: normal;
  line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
  font-family: monospace;
}
code {
  padding: 2px 4px;
  font-size: 90%;
  color: #c7254e;
  background-color: #f9f2f4;
  border-radius: 2px;
}
kbd {
  padding: 2px 4px;
  font-size: 90%;
  color: #888;
  background-color: transparent;
  border-radius: 1px;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}
kbd kbd {
  padding: 0;
  font-size: 100%;
  font-weight: bold;
  box-shadow: none;
}
pre {
  display: block;
  padding: 8.5px;
  margin: 0 0 9px;
  font-size: 12px;
  line-height: 1.42857143;
  word-break: break-all;
  word-wrap: break-word;
  color: #333333;
  background-color: #f5f5f5;
  border: 1px solid #ccc;
  border-radius: 2px;
}
pre code {
  padding: 0;
  font-size: inherit;
  color: inherit;
  white-space: pre-wrap;
  background-color: transparent;
  border-radius: 0;
}
.pre-scrollable {
  max-height: 340px;
  overflow-y: scroll;
}
.container {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
@media (min-width: 768px) {
  .container {
    width: 768px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 940px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1140px;
  }
}
.container-fluid {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
.row {
  margin-left: 0px;
  margin-right: 0px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-left: 0px;
  padding-right: 0px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}
.col-xs-12 {
  width: 100%;
}
.col-xs-11 {
  width: 91.66666667%;
}
.col-xs-10 {
  width: 83.33333333%;
}
.col-xs-9 {
  width: 75%;
}
.col-xs-8 {
  width: 66.66666667%;
}
.col-xs-7 {
  width: 58.33333333%;
}
.col-xs-6 {
  width: 50%;
}
.col-xs-5 {
  width: 41.66666667%;
}
.col-xs-4 {
  width: 33.33333333%;
}
.col-xs-3 {
  width: 25%;
}
.col-xs-2 {
  width: 16.66666667%;
}
.col-xs-1 {
  width: 8.33333333%;
}
.col-xs-pull-12 {
  right: 100%;
}
.col-xs-pull-11 {
  right: 91.66666667%;
}
.col-xs-pull-10 {
  right: 83.33333333%;
}
.col-xs-pull-9 {
  right: 75%;
}
.col-xs-pull-8 {
  right: 66.66666667%;
}
.col-xs-pull-7 {
  right: 58.33333333%;
}
.col-xs-pull-6 {
  right: 50%;
}
.col-xs-pull-5 {
  right: 41.66666667%;
}
.col-xs-pull-4 {
  right: 33.33333333%;
}
.col-xs-pull-3 {
  right: 25%;
}
.col-xs-pull-2 {
  right: 16.66666667%;
}
.col-xs-pull-1 {
  right: 8.33333333%;
}
.col-xs-pull-0 {
  right: auto;
}
.col-xs-push-12 {
  left: 100%;
}
.col-xs-push-11 {
  left: 91.66666667%;
}
.col-xs-push-10 {
  left: 83.33333333%;
}
.col-xs-push-9 {
  left: 75%;
}
.col-xs-push-8 {
  left: 66.66666667%;
}
.col-xs-push-7 {
  left: 58.33333333%;
}
.col-xs-push-6 {
  left: 50%;
}
.col-xs-push-5 {
  left: 41.66666667%;
}
.col-xs-push-4 {
  left: 33.33333333%;
}
.col-xs-push-3 {
  left: 25%;
}
.col-xs-push-2 {
  left: 16.66666667%;
}
.col-xs-push-1 {
  left: 8.33333333%;
}
.col-xs-push-0 {
  left: auto;
}
.col-xs-offset-12 {
  margin-left: 100%;
}
.col-xs-offset-11 {
  margin-left: 91.66666667%;
}
.col-xs-offset-10 {
  margin-left: 83.33333333%;
}
.col-xs-offset-9 {
  margin-left: 75%;
}
.col-xs-offset-8 {
  margin-left: 66.66666667%;
}
.col-xs-offset-7 {
  margin-left: 58.33333333%;
}
.col-xs-offset-6 {
  margin-left: 50%;
}
.col-xs-offset-5 {
  margin-left: 41.66666667%;
}
.col-xs-offset-4 {
  margin-left: 33.33333333%;
}
.col-xs-offset-3 {
  margin-left: 25%;
}
.col-xs-offset-2 {
  margin-left: 16.66666667%;
}
.col-xs-offset-1 {
  margin-left: 8.33333333%;
}
.col-xs-offset-0 {
  margin-left: 0%;
}
@media (min-width: 768px) {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left;
  }
  .col-sm-12 {
    width: 100%;
  }
  .col-sm-11 {
    width: 91.66666667%;
  }
  .col-sm-10 {
    width: 83.33333333%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-8 {
    width: 66.66666667%;
  }
  .col-sm-7 {
    width: 58.33333333%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666667%;
  }
  .col-sm-4 {
    width: 33.33333333%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-2 {
    width: 16.66666667%;
  }
  .col-sm-1 {
    width: 8.33333333%;
  }
  .col-sm-pull-12 {
    right: 100%;
  }
  .col-sm-pull-11 {
    right: 91.66666667%;
  }
  .col-sm-pull-10 {
    right: 83.33333333%;
  }
  .col-sm-pull-9 {
    right: 75%;
  }
  .col-sm-pull-8 {
    right: 66.66666667%;
  }
  .col-sm-pull-7 {
    right: 58.33333333%;
  }
  .col-sm-pull-6 {
    right: 50%;
  }
  .col-sm-pull-5 {
    right: 41.66666667%;
  }
  .col-sm-pull-4 {
    right: 33.33333333%;
  }
  .col-sm-pull-3 {
    right: 25%;
  }
  .col-sm-pull-2 {
    right: 16.66666667%;
  }
  .col-sm-pull-1 {
    right: 8.33333333%;
  }
  .col-sm-pull-0 {
    right: auto;
  }
  .col-sm-push-12 {
    left: 100%;
  }
  .col-sm-push-11 {
    left: 91.66666667%;
  }
  .col-sm-push-10 {
    left: 83.33333333%;
  }
  .col-sm-push-9 {
    left: 75%;
  }
  .col-sm-push-8 {
    left: 66.66666667%;
  }
  .col-sm-push-7 {
    left: 58.33333333%;
  }
  .col-sm-push-6 {
    left: 50%;
  }
  .col-sm-push-5 {
    left: 41.66666667%;
  }
  .col-sm-push-4 {
    left: 33.33333333%;
  }
  .col-sm-push-3 {
    left: 25%;
  }
  .col-sm-push-2 {
    left: 16.66666667%;
  }
  .col-sm-push-1 {
    left: 8.33333333%;
  }
  .col-sm-push-0 {
    left: auto;
  }
  .col-sm-offset-12 {
    margin-left: 100%;
  }
  .col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-sm-offset-9 {
    margin-left: 75%;
  }
  .col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-sm-offset-6 {
    margin-left: 50%;
  }
  .col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-sm-offset-3 {
    margin-left: 25%;
  }
  .col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-sm-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 992px) {
  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
    float: left;
  }
  .col-md-12 {
    width: 100%;
  }
  .col-md-11 {
    width: 91.66666667%;
  }
  .col-md-10 {
    width: 83.33333333%;
  }
  .col-md-9 {
    width: 75%;
  }
  .col-md-8 {
    width: 66.66666667%;
  }
  .col-md-7 {
    width: 58.33333333%;
  }
  .col-md-6 {
    width: 50%;
  }
  .col-md-5 {
    width: 41.66666667%;
  }
  .col-md-4 {
    width: 33.33333333%;
  }
  .col-md-3 {
    width: 25%;
  }
  .col-md-2 {
    width: 16.66666667%;
  }
  .col-md-1 {
    width: 8.33333333%;
  }
  .col-md-pull-12 {
    right: 100%;
  }
  .col-md-pull-11 {
    right: 91.66666667%;
  }
  .col-md-pull-10 {
    right: 83.33333333%;
  }
  .col-md-pull-9 {
    right: 75%;
  }
  .col-md-pull-8 {
    right: 66.66666667%;
  }
  .col-md-pull-7 {
    right: 58.33333333%;
  }
  .col-md-pull-6 {
    right: 50%;
  }
  .col-md-pull-5 {
    right: 41.66666667%;
  }
  .col-md-pull-4 {
    right: 33.33333333%;
  }
  .col-md-pull-3 {
    right: 25%;
  }
  .col-md-pull-2 {
    right: 16.66666667%;
  }
  .col-md-pull-1 {
    right: 8.33333333%;
  }
  .col-md-pull-0 {
    right: auto;
  }
  .col-md-push-12 {
    left: 100%;
  }
  .col-md-push-11 {
    left: 91.66666667%;
  }
  .col-md-push-10 {
    left: 83.33333333%;
  }
  .col-md-push-9 {
    left: 75%;
  }
  .col-md-push-8 {
    left: 66.66666667%;
  }
  .col-md-push-7 {
    left: 58.33333333%;
  }
  .col-md-push-6 {
    left: 50%;
  }
  .col-md-push-5 {
    left: 41.66666667%;
  }
  .col-md-push-4 {
    left: 33.33333333%;
  }
  .col-md-push-3 {
    left: 25%;
  }
  .col-md-push-2 {
    left: 16.66666667%;
  }
  .col-md-push-1 {
    left: 8.33333333%;
  }
  .col-md-push-0 {
    left: auto;
  }
  .col-md-offset-12 {
    margin-left: 100%;
  }
  .col-md-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-md-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-md-offset-9 {
    margin-left: 75%;
  }
  .col-md-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-md-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-md-offset-6 {
    margin-left: 50%;
  }
  .col-md-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-md-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-md-offset-3 {
    margin-left: 25%;
  }
  .col-md-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-md-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-md-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 1200px) {
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
    float: left;
  }
  .col-lg-12 {
    width: 100%;
  }
  .col-lg-11 {
    width: 91.66666667%;
  }
  .col-lg-10 {
    width: 83.33333333%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-8 {
    width: 66.66666667%;
  }
  .col-lg-7 {
    width: 58.33333333%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-5 {
    width: 41.66666667%;
  }
  .col-lg-4 {
    width: 33.33333333%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-2 {
    width: 16.66666667%;
  }
  .col-lg-1 {
    width: 8.33333333%;
  }
  .col-lg-pull-12 {
    right: 100%;
  }
  .col-lg-pull-11 {
    right: 91.66666667%;
  }
  .col-lg-pull-10 {
    right: 83.33333333%;
  }
  .col-lg-pull-9 {
    right: 75%;
  }
  .col-lg-pull-8 {
    right: 66.66666667%;
  }
  .col-lg-pull-7 {
    right: 58.33333333%;
  }
  .col-lg-pull-6 {
    right: 50%;
  }
  .col-lg-pull-5 {
    right: 41.66666667%;
  }
  .col-lg-pull-4 {
    right: 33.33333333%;
  }
  .col-lg-pull-3 {
    right: 25%;
  }
  .col-lg-pull-2 {
    right: 16.66666667%;
  }
  .col-lg-pull-1 {
    right: 8.33333333%;
  }
  .col-lg-pull-0 {
    right: auto;
  }
  .col-lg-push-12 {
    left: 100%;
  }
  .col-lg-push-11 {
    left: 91.66666667%;
  }
  .col-lg-push-10 {
    left: 83.33333333%;
  }
  .col-lg-push-9 {
    left: 75%;
  }
  .col-lg-push-8 {
    left: 66.66666667%;
  }
  .col-lg-push-7 {
    left: 58.33333333%;
  }
  .col-lg-push-6 {
    left: 50%;
  }
  .col-lg-push-5 {
    left: 41.66666667%;
  }
  .col-lg-push-4 {
    left: 33.33333333%;
  }
  .col-lg-push-3 {
    left: 25%;
  }
  .col-lg-push-2 {
    left: 16.66666667%;
  }
  .col-lg-push-1 {
    left: 8.33333333%;
  }
  .col-lg-push-0 {
    left: auto;
  }
  .col-lg-offset-12 {
    margin-left: 100%;
  }
  .col-lg-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-lg-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-lg-offset-9 {
    margin-left: 75%;
  }
  .col-lg-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-lg-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-lg-offset-6 {
    margin-left: 50%;
  }
  .col-lg-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-lg-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-lg-offset-3 {
    margin-left: 25%;
  }
  .col-lg-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-lg-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-lg-offset-0 {
    margin-left: 0%;
  }
}
table {
  background-color: transparent;
}
caption {
  padding-top: 8px;
  padding-bottom: 8px;
  color: #777777;
  text-align: left;
}
th {
  text-align: left;
}
.table {
  width: 100%;
  max-width: 100%;
  margin-bottom: 18px;
}
.table &gt; thead &gt; tr &gt; th,
.table &gt; tbody &gt; tr &gt; th,
.table &gt; tfoot &gt; tr &gt; th,
.table &gt; thead &gt; tr &gt; td,
.table &gt; tbody &gt; tr &gt; td,
.table &gt; tfoot &gt; tr &gt; td {
  padding: 8px;
  line-height: 1.42857143;
  vertical-align: top;
  border-top: 1px solid #ddd;
}
.table &gt; thead &gt; tr &gt; th {
  vertical-align: bottom;
  border-bottom: 2px solid #ddd;
}
.table &gt; caption + thead &gt; tr:first-child &gt; th,
.table &gt; colgroup + thead &gt; tr:first-child &gt; th,
.table &gt; thead:first-child &gt; tr:first-child &gt; th,
.table &gt; caption + thead &gt; tr:first-child &gt; td,
.table &gt; colgroup + thead &gt; tr:first-child &gt; td,
.table &gt; thead:first-child &gt; tr:first-child &gt; td {
  border-top: 0;
}
.table &gt; tbody + tbody {
  border-top: 2px solid #ddd;
}
.table .table {
  background-color: #fff;
}
.table-condensed &gt; thead &gt; tr &gt; th,
.table-condensed &gt; tbody &gt; tr &gt; th,
.table-condensed &gt; tfoot &gt; tr &gt; th,
.table-condensed &gt; thead &gt; tr &gt; td,
.table-condensed &gt; tbody &gt; tr &gt; td,
.table-condensed &gt; tfoot &gt; tr &gt; td {
  padding: 5px;
}
.table-bordered {
  border: 1px solid #ddd;
}
.table-bordered &gt; thead &gt; tr &gt; th,
.table-bordered &gt; tbody &gt; tr &gt; th,
.table-bordered &gt; tfoot &gt; tr &gt; th,
.table-bordered &gt; thead &gt; tr &gt; td,
.table-bordered &gt; tbody &gt; tr &gt; td,
.table-bordered &gt; tfoot &gt; tr &gt; td {
  border: 1px solid #ddd;
}
.table-bordered &gt; thead &gt; tr &gt; th,
.table-bordered &gt; thead &gt; tr &gt; td {
  border-bottom-width: 2px;
}
.table-striped &gt; tbody &gt; tr:nth-of-type(odd) {
  background-color: #f9f9f9;
}
.table-hover &gt; tbody &gt; tr:hover {
  background-color: #f5f5f5;
}
table col[class*=&quot;col-&quot;] {
  position: static;
  float: none;
  display: table-column;
}
table td[class*=&quot;col-&quot;],
table th[class*=&quot;col-&quot;] {
  position: static;
  float: none;
  display: table-cell;
}
.table &gt; thead &gt; tr &gt; td.active,
.table &gt; tbody &gt; tr &gt; td.active,
.table &gt; tfoot &gt; tr &gt; td.active,
.table &gt; thead &gt; tr &gt; th.active,
.table &gt; tbody &gt; tr &gt; th.active,
.table &gt; tfoot &gt; tr &gt; th.active,
.table &gt; thead &gt; tr.active &gt; td,
.table &gt; tbody &gt; tr.active &gt; td,
.table &gt; tfoot &gt; tr.active &gt; td,
.table &gt; thead &gt; tr.active &gt; th,
.table &gt; tbody &gt; tr.active &gt; th,
.table &gt; tfoot &gt; tr.active &gt; th {
  background-color: #f5f5f5;
}
.table-hover &gt; tbody &gt; tr &gt; td.active:hover,
.table-hover &gt; tbody &gt; tr &gt; th.active:hover,
.table-hover &gt; tbody &gt; tr.active:hover &gt; td,
.table-hover &gt; tbody &gt; tr:hover &gt; .active,
.table-hover &gt; tbody &gt; tr.active:hover &gt; th {
  background-color: #e8e8e8;
}
.table &gt; thead &gt; tr &gt; td.success,
.table &gt; tbody &gt; tr &gt; td.success,
.table &gt; tfoot &gt; tr &gt; td.success,
.table &gt; thead &gt; tr &gt; th.success,
.table &gt; tbody &gt; tr &gt; th.success,
.table &gt; tfoot &gt; tr &gt; th.success,
.table &gt; thead &gt; tr.success &gt; td,
.table &gt; tbody &gt; tr.success &gt; td,
.table &gt; tfoot &gt; tr.success &gt; td,
.table &gt; thead &gt; tr.success &gt; th,
.table &gt; tbody &gt; tr.success &gt; th,
.table &gt; tfoot &gt; tr.success &gt; th {
  background-color: #dff0d8;
}
.table-hover &gt; tbody &gt; tr &gt; td.success:hover,
.table-hover &gt; tbody &gt; tr &gt; th.success:hover,
.table-hover &gt; tbody &gt; tr.success:hover &gt; td,
.table-hover &gt; tbody &gt; tr:hover &gt; .success,
.table-hover &gt; tbody &gt; tr.success:hover &gt; th {
  background-color: #d0e9c6;
}
.table &gt; thead &gt; tr &gt; td.info,
.table &gt; tbody &gt; tr &gt; td.info,
.table &gt; tfoot &gt; tr &gt; td.info,
.table &gt; thead &gt; tr &gt; th.info,
.table &gt; tbody &gt; tr &gt; th.info,
.table &gt; tfoot &gt; tr &gt; th.info,
.table &gt; thead &gt; tr.info &gt; td,
.table &gt; tbody &gt; tr.info &gt; td,
.table &gt; tfoot &gt; tr.info &gt; td,
.table &gt; thead &gt; tr.info &gt; th,
.table &gt; tbody &gt; tr.info &gt; th,
.table &gt; tfoot &gt; tr.info &gt; th {
  background-color: #d9edf7;
}
.table-hover &gt; tbody &gt; tr &gt; td.info:hover,
.table-hover &gt; tbody &gt; tr &gt; th.info:hover,
.table-hover &gt; tbody &gt; tr.info:hover &gt; td,
.table-hover &gt; tbody &gt; tr:hover &gt; .info,
.table-hover &gt; tbody &gt; tr.info:hover &gt; th {
  background-color: #c4e3f3;
}
.table &gt; thead &gt; tr &gt; td.warning,
.table &gt; tbody &gt; tr &gt; td.warning,
.table &gt; tfoot &gt; tr &gt; td.warning,
.table &gt; thead &gt; tr &gt; th.warning,
.table &gt; tbody &gt; tr &gt; th.warning,
.table &gt; tfoot &gt; tr &gt; th.warning,
.table &gt; thead &gt; tr.warning &gt; td,
.table &gt; tbody &gt; tr.warning &gt; td,
.table &gt; tfoot &gt; tr.warning &gt; td,
.table &gt; thead &gt; tr.warning &gt; th,
.table &gt; tbody &gt; tr.warning &gt; th,
.table &gt; tfoot &gt; tr.warning &gt; th {
  background-color: #fcf8e3;
}
.table-hover &gt; tbody &gt; tr &gt; td.warning:hover,
.table-hover &gt; tbody &gt; tr &gt; th.warning:hover,
.table-hover &gt; tbody &gt; tr.warning:hover &gt; td,
.table-hover &gt; tbody &gt; tr:hover &gt; .warning,
.table-hover &gt; tbody &gt; tr.warning:hover &gt; th {
  background-color: #faf2cc;
}
.table &gt; thead &gt; tr &gt; td.danger,
.table &gt; tbody &gt; tr &gt; td.danger,
.table &gt; tfoot &gt; tr &gt; td.danger,
.table &gt; thead &gt; tr &gt; th.danger,
.table &gt; tbody &gt; tr &gt; th.danger,
.table &gt; tfoot &gt; tr &gt; th.danger,
.table &gt; thead &gt; tr.danger &gt; td,
.table &gt; tbody &gt; tr.danger &gt; td,
.table &gt; tfoot &gt; tr.danger &gt; td,
.table &gt; thead &gt; tr.danger &gt; th,
.table &gt; tbody &gt; tr.danger &gt; th,
.table &gt; tfoot &gt; tr.danger &gt; th {
  background-color: #f2dede;
}
.table-hover &gt; tbody &gt; tr &gt; td.danger:hover,
.table-hover &gt; tbody &gt; tr &gt; th.danger:hover,
.table-hover &gt; tbody &gt; tr.danger:hover &gt; td,
.table-hover &gt; tbody &gt; tr:hover &gt; .danger,
.table-hover &gt; tbody &gt; tr.danger:hover &gt; th {
  background-color: #ebcccc;
}
.table-responsive {
  overflow-x: auto;
  min-height: 0.01%;
}
@media screen and (max-width: 767px) {
  .table-responsive {
    width: 100%;
    margin-bottom: 13.5px;
    overflow-y: hidden;
    -ms-overflow-style: -ms-autohiding-scrollbar;
    border: 1px solid #ddd;
  }
  .table-responsive &gt; .table {
    margin-bottom: 0;
  }
  .table-responsive &gt; .table &gt; thead &gt; tr &gt; th,
  .table-responsive &gt; .table &gt; tbody &gt; tr &gt; th,
  .table-responsive &gt; .table &gt; tfoot &gt; tr &gt; th,
  .table-responsive &gt; .table &gt; thead &gt; tr &gt; td,
  .table-responsive &gt; .table &gt; tbody &gt; tr &gt; td,
  .table-responsive &gt; .table &gt; tfoot &gt; tr &gt; td {
    white-space: nowrap;
  }
  .table-responsive &gt; .table-bordered {
    border: 0;
  }
  .table-responsive &gt; .table-bordered &gt; thead &gt; tr &gt; th:first-child,
  .table-responsive &gt; .table-bordered &gt; tbody &gt; tr &gt; th:first-child,
  .table-responsive &gt; .table-bordered &gt; tfoot &gt; tr &gt; th:first-child,
  .table-responsive &gt; .table-bordered &gt; thead &gt; tr &gt; td:first-child,
  .table-responsive &gt; .table-bordered &gt; tbody &gt; tr &gt; td:first-child,
  .table-responsive &gt; .table-bordered &gt; tfoot &gt; tr &gt; td:first-child {
    border-left: 0;
  }
  .table-responsive &gt; .table-bordered &gt; thead &gt; tr &gt; th:last-child,
  .table-responsive &gt; .table-bordered &gt; tbody &gt; tr &gt; th:last-child,
  .table-responsive &gt; .table-bordered &gt; tfoot &gt; tr &gt; th:last-child,
  .table-responsive &gt; .table-bordered &gt; thead &gt; tr &gt; td:last-child,
  .table-responsive &gt; .table-bordered &gt; tbody &gt; tr &gt; td:last-child,
  .table-responsive &gt; .table-bordered &gt; tfoot &gt; tr &gt; td:last-child {
    border-right: 0;
  }
  .table-responsive &gt; .table-bordered &gt; tbody &gt; tr:last-child &gt; th,
  .table-responsive &gt; .table-bordered &gt; tfoot &gt; tr:last-child &gt; th,
  .table-responsive &gt; .table-bordered &gt; tbody &gt; tr:last-child &gt; td,
  .table-responsive &gt; .table-bordered &gt; tfoot &gt; tr:last-child &gt; td {
    border-bottom: 0;
  }
}
fieldset {
  padding: 0;
  margin: 0;
  border: 0;
  min-width: 0;
}
legend {
  display: block;
  width: 100%;
  padding: 0;
  margin-bottom: 18px;
  font-size: 19.5px;
  line-height: inherit;
  color: #333333;
  border: 0;
  border-bottom: 1px solid #e5e5e5;
}
label {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 5px;
  font-weight: bold;
}
input[type=&quot;search&quot;] {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
input[type=&quot;radio&quot;],
input[type=&quot;checkbox&quot;] {
  margin: 4px 0 0;
  margin-top: 1px \9;
  line-height: normal;
}
input[type=&quot;file&quot;] {
  display: block;
}
input[type=&quot;range&quot;] {
  display: block;
  width: 100%;
}
select[multiple],
select[size] {
  height: auto;
}
input[type=&quot;file&quot;]:focus,
input[type=&quot;radio&quot;]:focus,
input[type=&quot;checkbox&quot;]:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
output {
  display: block;
  padding-top: 7px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
}
.form-control {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.form-control::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.form-control:-ms-input-placeholder {
  color: #999;
}
.form-control::-webkit-input-placeholder {
  color: #999;
}
.form-control::-ms-expand {
  border: 0;
  background-color: transparent;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
  background-color: #eeeeee;
  opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
  cursor: not-allowed;
}
textarea.form-control {
  height: auto;
}
input[type=&quot;search&quot;] {
  -webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  input[type=&quot;date&quot;].form-control,
  input[type=&quot;time&quot;].form-control,
  input[type=&quot;datetime-local&quot;].form-control,
  input[type=&quot;month&quot;].form-control {
    line-height: 32px;
  }
  input[type=&quot;date&quot;].input-sm,
  input[type=&quot;time&quot;].input-sm,
  input[type=&quot;datetime-local&quot;].input-sm,
  input[type=&quot;month&quot;].input-sm,
  .input-group-sm input[type=&quot;date&quot;],
  .input-group-sm input[type=&quot;time&quot;],
  .input-group-sm input[type=&quot;datetime-local&quot;],
  .input-group-sm input[type=&quot;month&quot;] {
    line-height: 30px;
  }
  input[type=&quot;date&quot;].input-lg,
  input[type=&quot;time&quot;].input-lg,
  input[type=&quot;datetime-local&quot;].input-lg,
  input[type=&quot;month&quot;].input-lg,
  .input-group-lg input[type=&quot;date&quot;],
  .input-group-lg input[type=&quot;time&quot;],
  .input-group-lg input[type=&quot;datetime-local&quot;],
  .input-group-lg input[type=&quot;month&quot;] {
    line-height: 45px;
  }
}
.form-group {
  margin-bottom: 15px;
}
.radio,
.checkbox {
  position: relative;
  display: block;
  margin-top: 10px;
  margin-bottom: 10px;
}
.radio label,
.checkbox label {
  min-height: 18px;
  padding-left: 20px;
  margin-bottom: 0;
  font-weight: normal;
  cursor: pointer;
}
.radio input[type=&quot;radio&quot;],
.radio-inline input[type=&quot;radio&quot;],
.checkbox input[type=&quot;checkbox&quot;],
.checkbox-inline input[type=&quot;checkbox&quot;] {
  position: absolute;
  margin-left: -20px;
  margin-top: 4px \9;
}
.radio + .radio,
.checkbox + .checkbox {
  margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
  position: relative;
  display: inline-block;
  padding-left: 20px;
  margin-bottom: 0;
  vertical-align: middle;
  font-weight: normal;
  cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
  margin-top: 0;
  margin-left: 10px;
}
input[type=&quot;radio&quot;][disabled],
input[type=&quot;checkbox&quot;][disabled],
input[type=&quot;radio&quot;].disabled,
input[type=&quot;checkbox&quot;].disabled,
fieldset[disabled] input[type=&quot;radio&quot;],
fieldset[disabled] input[type=&quot;checkbox&quot;] {
  cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
  cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
  cursor: not-allowed;
}
.form-control-static {
  padding-top: 7px;
  padding-bottom: 7px;
  margin-bottom: 0;
  min-height: 31px;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
  padding-left: 0;
  padding-right: 0;
}
.input-sm {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-sm {
  height: 30px;
  line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
  height: auto;
}
.form-group-sm .form-control {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.form-group-sm select.form-control {
  height: 30px;
  line-height: 30px;
}
.form-group-sm textarea.form-control,
.form-group-sm select[multiple].form-control {
  height: auto;
}
.form-group-sm .form-control-static {
  height: 30px;
  min-height: 30px;
  padding: 6px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.input-lg {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-lg {
  height: 45px;
  line-height: 45px;
}
textarea.input-lg,
select[multiple].input-lg {
  height: auto;
}
.form-group-lg .form-control {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.form-group-lg select.form-control {
  height: 45px;
  line-height: 45px;
}
.form-group-lg textarea.form-control,
.form-group-lg select[multiple].form-control {
  height: auto;
}
.form-group-lg .form-control-static {
  height: 45px;
  min-height: 35px;
  padding: 11px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.has-feedback {
  position: relative;
}
.has-feedback .form-control {
  padding-right: 40px;
}
.form-control-feedback {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  display: block;
  width: 32px;
  height: 32px;
  line-height: 32px;
  text-align: center;
  pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
  width: 45px;
  height: 45px;
  line-height: 45px;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
  width: 30px;
  height: 30px;
  line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
  color: #3c763d;
}
.has-success .form-control {
  border-color: #3c763d;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-success .form-control:focus {
  border-color: #2b542c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
  color: #3c763d;
  border-color: #3c763d;
  background-color: #dff0d8;
}
.has-success .form-control-feedback {
  color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
  color: #8a6d3b;
}
.has-warning .form-control {
  border-color: #8a6d3b;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-warning .form-control:focus {
  border-color: #66512c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
  color: #8a6d3b;
  border-color: #8a6d3b;
  background-color: #fcf8e3;
}
.has-warning .form-control-feedback {
  color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
  color: #a94442;
}
.has-error .form-control {
  border-color: #a94442;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-error .form-control:focus {
  border-color: #843534;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
  color: #a94442;
  border-color: #a94442;
  background-color: #f2dede;
}
.has-error .form-control-feedback {
  color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
  top: 23px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
  top: 0;
}
.help-block {
  display: block;
  margin-top: 5px;
  margin-bottom: 10px;
  color: #404040;
}
@media (min-width: 768px) {
  .form-inline .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .form-inline .form-control-static {
    display: inline-block;
  }
  .form-inline .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .form-inline .input-group .input-group-addon,
  .form-inline .input-group .input-group-btn,
  .form-inline .input-group .form-control {
    width: auto;
  }
  .form-inline .input-group &gt; .form-control {
    width: 100%;
  }
  .form-inline .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio,
  .form-inline .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio label,
  .form-inline .checkbox label {
    padding-left: 0;
  }
  .form-inline .radio input[type=&quot;radio&quot;],
  .form-inline .checkbox input[type=&quot;checkbox&quot;] {
    position: relative;
    margin-left: 0;
  }
  .form-inline .has-feedback .form-control-feedback {
    top: 0;
  }
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
  margin-top: 0;
  margin-bottom: 0;
  padding-top: 7px;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
  min-height: 25px;
}
.form-horizontal .form-group {
  margin-left: 0px;
  margin-right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .control-label {
    text-align: right;
    margin-bottom: 0;
    padding-top: 7px;
  }
}
.form-horizontal .has-feedback .form-control-feedback {
  right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .form-group-lg .control-label {
    padding-top: 11px;
    font-size: 17px;
  }
}
@media (min-width: 768px) {
  .form-horizontal .form-group-sm .control-label {
    padding-top: 6px;
    font-size: 12px;
  }
}
.btn {
  display: inline-block;
  margin-bottom: 0;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  touch-action: manipulation;
  cursor: pointer;
  background-image: none;
  border: 1px solid transparent;
  white-space: nowrap;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  border-radius: 2px;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
  color: #333;
  text-decoration: none;
}
.btn:active,
.btn.active {
  outline: 0;
  background-image: none;
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
  cursor: not-allowed;
  opacity: 0.65;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
  box-shadow: none;
}
a.btn.disabled,
fieldset[disabled] a.btn {
  pointer-events: none;
}
.btn-default {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.btn-default:focus,
.btn-default.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.btn-default:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open &gt; .dropdown-toggle.btn-default {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open &gt; .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open &gt; .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open &gt; .dropdown-toggle.btn-default.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.btn-default:active,
.btn-default.active,
.open &gt; .dropdown-toggle.btn-default {
  background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
  background-color: #fff;
  border-color: #ccc;
}
.btn-default .badge {
  color: #fff;
  background-color: #333;
}
.btn-primary {
  color: #fff;
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary:focus,
.btn-primary.focus {
  color: #fff;
  background-color: #286090;
  border-color: #122b40;
}
.btn-primary:hover {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open &gt; .dropdown-toggle.btn-primary {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active:hover,
.btn-primary.active:hover,
.open &gt; .dropdown-toggle.btn-primary:hover,
.btn-primary:active:focus,
.btn-primary.active:focus,
.open &gt; .dropdown-toggle.btn-primary:focus,
.btn-primary:active.focus,
.btn-primary.active.focus,
.open &gt; .dropdown-toggle.btn-primary.focus {
  color: #fff;
  background-color: #204d74;
  border-color: #122b40;
}
.btn-primary:active,
.btn-primary.active,
.open &gt; .dropdown-toggle.btn-primary {
  background-image: none;
}
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus {
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary .badge {
  color: #337ab7;
  background-color: #fff;
}
.btn-success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success:focus,
.btn-success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.btn-success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open &gt; .dropdown-toggle.btn-success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active:hover,
.btn-success.active:hover,
.open &gt; .dropdown-toggle.btn-success:hover,
.btn-success:active:focus,
.btn-success.active:focus,
.open &gt; .dropdown-toggle.btn-success:focus,
.btn-success:active.focus,
.btn-success.active.focus,
.open &gt; .dropdown-toggle.btn-success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.btn-success:active,
.btn-success.active,
.open &gt; .dropdown-toggle.btn-success {
  background-image: none;
}
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.btn-info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info:focus,
.btn-info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.btn-info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open &gt; .dropdown-toggle.btn-info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active:hover,
.btn-info.active:hover,
.open &gt; .dropdown-toggle.btn-info:hover,
.btn-info:active:focus,
.btn-info.active:focus,
.open &gt; .dropdown-toggle.btn-info:focus,
.btn-info:active.focus,
.btn-info.active.focus,
.open &gt; .dropdown-toggle.btn-info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.btn-info:active,
.btn-info.active,
.open &gt; .dropdown-toggle.btn-info {
  background-image: none;
}
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.btn-warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning:focus,
.btn-warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.btn-warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open &gt; .dropdown-toggle.btn-warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active:hover,
.btn-warning.active:hover,
.open &gt; .dropdown-toggle.btn-warning:hover,
.btn-warning:active:focus,
.btn-warning.active:focus,
.open &gt; .dropdown-toggle.btn-warning:focus,
.btn-warning:active.focus,
.btn-warning.active.focus,
.open &gt; .dropdown-toggle.btn-warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.btn-warning:active,
.btn-warning.active,
.open &gt; .dropdown-toggle.btn-warning {
  background-image: none;
}
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.btn-danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger:focus,
.btn-danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.btn-danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open &gt; .dropdown-toggle.btn-danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active:hover,
.btn-danger.active:hover,
.open &gt; .dropdown-toggle.btn-danger:hover,
.btn-danger:active:focus,
.btn-danger.active:focus,
.open &gt; .dropdown-toggle.btn-danger:focus,
.btn-danger:active.focus,
.btn-danger.active.focus,
.open &gt; .dropdown-toggle.btn-danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.btn-danger:active,
.btn-danger.active,
.open &gt; .dropdown-toggle.btn-danger {
  background-image: none;
}
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger .badge {
  color: #d9534f;
  background-color: #fff;
}
.btn-link {
  color: #337ab7;
  font-weight: normal;
  border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
  background-color: transparent;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
  border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
  color: #23527c;
  text-decoration: underline;
  background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
  color: #777777;
  text-decoration: none;
}
.btn-lg,
.btn-group-lg &gt; .btn {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.btn-sm,
.btn-group-sm &gt; .btn {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-xs,
.btn-group-xs &gt; .btn {
  padding: 1px 5px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-block {
  display: block;
  width: 100%;
}
.btn-block + .btn-block {
  margin-top: 5px;
}
input[type=&quot;submit&quot;].btn-block,
input[type=&quot;reset&quot;].btn-block,
input[type=&quot;button&quot;].btn-block {
  width: 100%;
}
.fade {
  opacity: 0;
  -webkit-transition: opacity 0.15s linear;
  -o-transition: opacity 0.15s linear;
  transition: opacity 0.15s linear;
}
.fade.in {
  opacity: 1;
}
.collapse {
  display: none;
}
.collapse.in {
  display: block;
}
tr.collapse.in {
  display: table-row;
}
tbody.collapse.in {
  display: table-row-group;
}
.collapsing {
  position: relative;
  height: 0;
  overflow: hidden;
  -webkit-transition-property: height, visibility;
  transition-property: height, visibility;
  -webkit-transition-duration: 0.35s;
  transition-duration: 0.35s;
  -webkit-transition-timing-function: ease;
  transition-timing-function: ease;
}
.caret {
  display: inline-block;
  width: 0;
  height: 0;
  margin-left: 2px;
  vertical-align: middle;
  border-top: 4px dashed;
  border-top: 4px solid \9;
  border-right: 4px solid transparent;
  border-left: 4px solid transparent;
}
.dropup,
.dropdown {
  position: relative;
}
.dropdown-toggle:focus {
  outline: 0;
}
.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  display: none;
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  list-style: none;
  font-size: 13px;
  text-align: left;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 2px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  background-clip: padding-box;
}
.dropdown-menu.pull-right {
  right: 0;
  left: auto;
}
.dropdown-menu .divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.dropdown-menu &gt; li &gt; a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 1.42857143;
  color: #333333;
  white-space: nowrap;
}
.dropdown-menu &gt; li &gt; a:hover,
.dropdown-menu &gt; li &gt; a:focus {
  text-decoration: none;
  color: #262626;
  background-color: #f5f5f5;
}
.dropdown-menu &gt; .active &gt; a,
.dropdown-menu &gt; .active &gt; a:hover,
.dropdown-menu &gt; .active &gt; a:focus {
  color: #fff;
  text-decoration: none;
  outline: 0;
  background-color: #337ab7;
}
.dropdown-menu &gt; .disabled &gt; a,
.dropdown-menu &gt; .disabled &gt; a:hover,
.dropdown-menu &gt; .disabled &gt; a:focus {
  color: #777777;
}
.dropdown-menu &gt; .disabled &gt; a:hover,
.dropdown-menu &gt; .disabled &gt; a:focus {
  text-decoration: none;
  background-color: transparent;
  background-image: none;
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  cursor: not-allowed;
}
.open &gt; .dropdown-menu {
  display: block;
}
.open &gt; a {
  outline: 0;
}
.dropdown-menu-right {
  left: auto;
  right: 0;
}
.dropdown-menu-left {
  left: 0;
  right: auto;
}
.dropdown-header {
  display: block;
  padding: 3px 20px;
  font-size: 12px;
  line-height: 1.42857143;
  color: #777777;
  white-space: nowrap;
}
.dropdown-backdrop {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  z-index: 990;
}
.pull-right &gt; .dropdown-menu {
  right: 0;
  left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
  border-top: 0;
  border-bottom: 4px dashed;
  border-bottom: 4px solid \9;
  content: &quot;&quot;;
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
  top: auto;
  bottom: 100%;
  margin-bottom: 2px;
}
@media (min-width: 541px) {
  .navbar-right .dropdown-menu {
    left: auto;
    right: 0;
  }
  .navbar-right .dropdown-menu-left {
    left: 0;
    right: auto;
  }
}
.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
.btn-group &gt; .btn,
.btn-group-vertical &gt; .btn {
  position: relative;
  float: left;
}
.btn-group &gt; .btn:hover,
.btn-group-vertical &gt; .btn:hover,
.btn-group &gt; .btn:focus,
.btn-group-vertical &gt; .btn:focus,
.btn-group &gt; .btn:active,
.btn-group-vertical &gt; .btn:active,
.btn-group &gt; .btn.active,
.btn-group-vertical &gt; .btn.active {
  z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
  margin-left: -1px;
}
.btn-toolbar {
  margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
  float: left;
}
.btn-toolbar &gt; .btn,
.btn-toolbar &gt; .btn-group,
.btn-toolbar &gt; .input-group {
  margin-left: 5px;
}
.btn-group &gt; .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
  border-radius: 0;
}
.btn-group &gt; .btn:first-child {
  margin-left: 0;
}
.btn-group &gt; .btn:first-child:not(:last-child):not(.dropdown-toggle) {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group &gt; .btn:last-child:not(:first-child),
.btn-group &gt; .dropdown-toggle:not(:first-child) {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group &gt; .btn-group {
  float: left;
}
.btn-group &gt; .btn-group:not(:first-child):not(:last-child) &gt; .btn {
  border-radius: 0;
}
.btn-group &gt; .btn-group:first-child:not(:last-child) &gt; .btn:last-child,
.btn-group &gt; .btn-group:first-child:not(:last-child) &gt; .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group &gt; .btn-group:last-child:not(:first-child) &gt; .btn:first-child {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
  outline: 0;
}
.btn-group &gt; .btn + .dropdown-toggle {
  padding-left: 8px;
  padding-right: 8px;
}
.btn-group &gt; .btn-lg + .dropdown-toggle {
  padding-left: 12px;
  padding-right: 12px;
}
.btn-group.open .dropdown-toggle {
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-group.open .dropdown-toggle.btn-link {
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn .caret {
  margin-left: 0;
}
.btn-lg .caret {
  border-width: 5px 5px 0;
  border-bottom-width: 0;
}
.dropup .btn-lg .caret {
  border-width: 0 5px 5px;
}
.btn-group-vertical &gt; .btn,
.btn-group-vertical &gt; .btn-group,
.btn-group-vertical &gt; .btn-group &gt; .btn {
  display: block;
  float: none;
  width: 100%;
  max-width: 100%;
}
.btn-group-vertical &gt; .btn-group &gt; .btn {
  float: none;
}
.btn-group-vertical &gt; .btn + .btn,
.btn-group-vertical &gt; .btn + .btn-group,
.btn-group-vertical &gt; .btn-group + .btn,
.btn-group-vertical &gt; .btn-group + .btn-group {
  margin-top: -1px;
  margin-left: 0;
}
.btn-group-vertical &gt; .btn:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.btn-group-vertical &gt; .btn:first-child:not(:last-child) {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical &gt; .btn:last-child:not(:first-child) {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
.btn-group-vertical &gt; .btn-group:not(:first-child):not(:last-child) &gt; .btn {
  border-radius: 0;
}
.btn-group-vertical &gt; .btn-group:first-child:not(:last-child) &gt; .btn:last-child,
.btn-group-vertical &gt; .btn-group:first-child:not(:last-child) &gt; .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical &gt; .btn-group:last-child:not(:first-child) &gt; .btn:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.btn-group-justified {
  display: table;
  width: 100%;
  table-layout: fixed;
  border-collapse: separate;
}
.btn-group-justified &gt; .btn,
.btn-group-justified &gt; .btn-group {
  float: none;
  display: table-cell;
  width: 1%;
}
.btn-group-justified &gt; .btn-group .btn {
  width: 100%;
}
.btn-group-justified &gt; .btn-group .dropdown-menu {
  left: auto;
}
[data-toggle=&quot;buttons&quot;] &gt; .btn input[type=&quot;radio&quot;],
[data-toggle=&quot;buttons&quot;] &gt; .btn-group &gt; .btn input[type=&quot;radio&quot;],
[data-toggle=&quot;buttons&quot;] &gt; .btn input[type=&quot;checkbox&quot;],
[data-toggle=&quot;buttons&quot;] &gt; .btn-group &gt; .btn input[type=&quot;checkbox&quot;] {
  position: absolute;
  clip: rect(0, 0, 0, 0);
  pointer-events: none;
}
.input-group {
  position: relative;
  display: table;
  border-collapse: separate;
}
.input-group[class*=&quot;col-&quot;] {
  float: none;
  padding-left: 0;
  padding-right: 0;
}
.input-group .form-control {
  position: relative;
  z-index: 2;
  float: left;
  width: 100%;
  margin-bottom: 0;
}
.input-group .form-control:focus {
  z-index: 3;
}
.input-group-lg &gt; .form-control,
.input-group-lg &gt; .input-group-addon,
.input-group-lg &gt; .input-group-btn &gt; .btn {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-group-lg &gt; .form-control,
select.input-group-lg &gt; .input-group-addon,
select.input-group-lg &gt; .input-group-btn &gt; .btn {
  height: 45px;
  line-height: 45px;
}
textarea.input-group-lg &gt; .form-control,
textarea.input-group-lg &gt; .input-group-addon,
textarea.input-group-lg &gt; .input-group-btn &gt; .btn,
select[multiple].input-group-lg &gt; .form-control,
select[multiple].input-group-lg &gt; .input-group-addon,
select[multiple].input-group-lg &gt; .input-group-btn &gt; .btn {
  height: auto;
}
.input-group-sm &gt; .form-control,
.input-group-sm &gt; .input-group-addon,
.input-group-sm &gt; .input-group-btn &gt; .btn {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-group-sm &gt; .form-control,
select.input-group-sm &gt; .input-group-addon,
select.input-group-sm &gt; .input-group-btn &gt; .btn {
  height: 30px;
  line-height: 30px;
}
textarea.input-group-sm &gt; .form-control,
textarea.input-group-sm &gt; .input-group-addon,
textarea.input-group-sm &gt; .input-group-btn &gt; .btn,
select[multiple].input-group-sm &gt; .form-control,
select[multiple].input-group-sm &gt; .input-group-addon,
select[multiple].input-group-sm &gt; .input-group-btn &gt; .btn {
  height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
  display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.input-group-addon,
.input-group-btn {
  width: 1%;
  white-space: nowrap;
  vertical-align: middle;
}
.input-group-addon {
  padding: 6px 12px;
  font-size: 13px;
  font-weight: normal;
  line-height: 1;
  color: #555555;
  text-align: center;
  background-color: #eeeeee;
  border: 1px solid #ccc;
  border-radius: 2px;
}
.input-group-addon.input-sm {
  padding: 5px 10px;
  font-size: 12px;
  border-radius: 1px;
}
.input-group-addon.input-lg {
  padding: 10px 16px;
  font-size: 17px;
  border-radius: 3px;
}
.input-group-addon input[type=&quot;radio&quot;],
.input-group-addon input[type=&quot;checkbox&quot;] {
  margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child &gt; .btn,
.input-group-btn:first-child &gt; .btn-group &gt; .btn,
.input-group-btn:first-child &gt; .dropdown-toggle,
.input-group-btn:last-child &gt; .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child &gt; .btn-group:not(:last-child) &gt; .btn {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.input-group-addon:first-child {
  border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child &gt; .btn,
.input-group-btn:last-child &gt; .btn-group &gt; .btn,
.input-group-btn:last-child &gt; .dropdown-toggle,
.input-group-btn:first-child &gt; .btn:not(:first-child),
.input-group-btn:first-child &gt; .btn-group:not(:first-child) &gt; .btn {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.input-group-addon:last-child {
  border-left: 0;
}
.input-group-btn {
  position: relative;
  font-size: 0;
  white-space: nowrap;
}
.input-group-btn &gt; .btn {
  position: relative;
}
.input-group-btn &gt; .btn + .btn {
  margin-left: -1px;
}
.input-group-btn &gt; .btn:hover,
.input-group-btn &gt; .btn:focus,
.input-group-btn &gt; .btn:active {
  z-index: 2;
}
.input-group-btn:first-child &gt; .btn,
.input-group-btn:first-child &gt; .btn-group {
  margin-right: -1px;
}
.input-group-btn:last-child &gt; .btn,
.input-group-btn:last-child &gt; .btn-group {
  z-index: 2;
  margin-left: -1px;
}
.nav {
  margin-bottom: 0;
  padding-left: 0;
  list-style: none;
}
.nav &gt; li {
  position: relative;
  display: block;
}
.nav &gt; li &gt; a {
  position: relative;
  display: block;
  padding: 10px 15px;
}
.nav &gt; li &gt; a:hover,
.nav &gt; li &gt; a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.nav &gt; li.disabled &gt; a {
  color: #777777;
}
.nav &gt; li.disabled &gt; a:hover,
.nav &gt; li.disabled &gt; a:focus {
  color: #777777;
  text-decoration: none;
  background-color: transparent;
  cursor: not-allowed;
}
.nav .open &gt; a,
.nav .open &gt; a:hover,
.nav .open &gt; a:focus {
  background-color: #eeeeee;
  border-color: #337ab7;
}
.nav .nav-divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.nav &gt; li &gt; a &gt; img {
  max-width: none;
}
.nav-tabs {
  border-bottom: 1px solid #ddd;
}
.nav-tabs &gt; li {
  float: left;
  margin-bottom: -1px;
}
.nav-tabs &gt; li &gt; a {
  margin-right: 2px;
  line-height: 1.42857143;
  border: 1px solid transparent;
  border-radius: 2px 2px 0 0;
}
.nav-tabs &gt; li &gt; a:hover {
  border-color: #eeeeee #eeeeee #ddd;
}
.nav-tabs &gt; li.active &gt; a,
.nav-tabs &gt; li.active &gt; a:hover,
.nav-tabs &gt; li.active &gt; a:focus {
  color: #555555;
  background-color: #fff;
  border: 1px solid #ddd;
  border-bottom-color: transparent;
  cursor: default;
}
.nav-tabs.nav-justified {
  width: 100%;
  border-bottom: 0;
}
.nav-tabs.nav-justified &gt; li {
  float: none;
}
.nav-tabs.nav-justified &gt; li &gt; a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-tabs.nav-justified &gt; .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified &gt; li {
    display: table-cell;
    width: 1%;
  }
  .nav-tabs.nav-justified &gt; li &gt; a {
    margin-bottom: 0;
  }
}
.nav-tabs.nav-justified &gt; li &gt; a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs.nav-justified &gt; .active &gt; a,
.nav-tabs.nav-justified &gt; .active &gt; a:hover,
.nav-tabs.nav-justified &gt; .active &gt; a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified &gt; li &gt; a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs.nav-justified &gt; .active &gt; a,
  .nav-tabs.nav-justified &gt; .active &gt; a:hover,
  .nav-tabs.nav-justified &gt; .active &gt; a:focus {
    border-bottom-color: #fff;
  }
}
.nav-pills &gt; li {
  float: left;
}
.nav-pills &gt; li &gt; a {
  border-radius: 2px;
}
.nav-pills &gt; li + li {
  margin-left: 2px;
}
.nav-pills &gt; li.active &gt; a,
.nav-pills &gt; li.active &gt; a:hover,
.nav-pills &gt; li.active &gt; a:focus {
  color: #fff;
  background-color: #337ab7;
}
.nav-stacked &gt; li {
  float: none;
}
.nav-stacked &gt; li + li {
  margin-top: 2px;
  margin-left: 0;
}
.nav-justified {
  width: 100%;
}
.nav-justified &gt; li {
  float: none;
}
.nav-justified &gt; li &gt; a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-justified &gt; .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-justified &gt; li {
    display: table-cell;
    width: 1%;
  }
  .nav-justified &gt; li &gt; a {
    margin-bottom: 0;
  }
}
.nav-tabs-justified {
  border-bottom: 0;
}
.nav-tabs-justified &gt; li &gt; a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs-justified &gt; .active &gt; a,
.nav-tabs-justified &gt; .active &gt; a:hover,
.nav-tabs-justified &gt; .active &gt; a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs-justified &gt; li &gt; a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs-justified &gt; .active &gt; a,
  .nav-tabs-justified &gt; .active &gt; a:hover,
  .nav-tabs-justified &gt; .active &gt; a:focus {
    border-bottom-color: #fff;
  }
}
.tab-content &gt; .tab-pane {
  display: none;
}
.tab-content &gt; .active {
  display: block;
}
.nav-tabs .dropdown-menu {
  margin-top: -1px;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar {
  position: relative;
  min-height: 30px;
  margin-bottom: 18px;
  border: 1px solid transparent;
}
@media (min-width: 541px) {
  .navbar {
    border-radius: 2px;
  }
}
@media (min-width: 541px) {
  .navbar-header {
    float: left;
  }
}
.navbar-collapse {
  overflow-x: visible;
  padding-right: 0px;
  padding-left: 0px;
  border-top: 1px solid transparent;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  -webkit-overflow-scrolling: touch;
}
.navbar-collapse.in {
  overflow-y: auto;
}
@media (min-width: 541px) {
  .navbar-collapse {
    width: auto;
    border-top: 0;
    box-shadow: none;
  }
  .navbar-collapse.collapse {
    display: block !important;
    height: auto !important;
    padding-bottom: 0;
    overflow: visible !important;
  }
  .navbar-collapse.in {
    overflow-y: visible;
  }
  .navbar-fixed-top .navbar-collapse,
  .navbar-static-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    padding-left: 0;
    padding-right: 0;
  }
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
  max-height: 340px;
}
@media (max-device-width: 540px) and (orientation: landscape) {
  .navbar-fixed-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    max-height: 200px;
  }
}
.container &gt; .navbar-header,
.container-fluid &gt; .navbar-header,
.container &gt; .navbar-collapse,
.container-fluid &gt; .navbar-collapse {
  margin-right: 0px;
  margin-left: 0px;
}
@media (min-width: 541px) {
  .container &gt; .navbar-header,
  .container-fluid &gt; .navbar-header,
  .container &gt; .navbar-collapse,
  .container-fluid &gt; .navbar-collapse {
    margin-right: 0;
    margin-left: 0;
  }
}
.navbar-static-top {
  z-index: 1000;
  border-width: 0 0 1px;
}
@media (min-width: 541px) {
  .navbar-static-top {
    border-radius: 0;
  }
}
.navbar-fixed-top,
.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  left: 0;
  z-index: 1030;
}
@media (min-width: 541px) {
  .navbar-fixed-top,
  .navbar-fixed-bottom {
    border-radius: 0;
  }
}
.navbar-fixed-top {
  top: 0;
  border-width: 0 0 1px;
}
.navbar-fixed-bottom {
  bottom: 0;
  margin-bottom: 0;
  border-width: 1px 0 0;
}
.navbar-brand {
  float: left;
  padding: 6px 0px;
  font-size: 17px;
  line-height: 18px;
  height: 30px;
}
.navbar-brand:hover,
.navbar-brand:focus {
  text-decoration: none;
}
.navbar-brand &gt; img {
  display: block;
}
@media (min-width: 541px) {
  .navbar &gt; .container .navbar-brand,
  .navbar &gt; .container-fluid .navbar-brand {
    margin-left: 0px;
  }
}
.navbar-toggle {
  position: relative;
  float: right;
  margin-right: 0px;
  padding: 9px 10px;
  margin-top: -2px;
  margin-bottom: -2px;
  background-color: transparent;
  background-image: none;
  border: 1px solid transparent;
  border-radius: 2px;
}
.navbar-toggle:focus {
  outline: 0;
}
.navbar-toggle .icon-bar {
  display: block;
  width: 22px;
  height: 2px;
  border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
  margin-top: 4px;
}
@media (min-width: 541px) {
  .navbar-toggle {
    display: none;
  }
}
.navbar-nav {
  margin: 3px 0px;
}
.navbar-nav &gt; li &gt; a {
  padding-top: 10px;
  padding-bottom: 10px;
  line-height: 18px;
}
@media (max-width: 540px) {
  .navbar-nav .open .dropdown-menu {
    position: static;
    float: none;
    width: auto;
    margin-top: 0;
    background-color: transparent;
    border: 0;
    box-shadow: none;
  }
  .navbar-nav .open .dropdown-menu &gt; li &gt; a,
  .navbar-nav .open .dropdown-menu .dropdown-header {
    padding: 5px 15px 5px 25px;
  }
  .navbar-nav .open .dropdown-menu &gt; li &gt; a {
    line-height: 18px;
  }
  .navbar-nav .open .dropdown-menu &gt; li &gt; a:hover,
  .navbar-nav .open .dropdown-menu &gt; li &gt; a:focus {
    background-image: none;
  }
}
@media (min-width: 541px) {
  .navbar-nav {
    float: left;
    margin: 0;
  }
  .navbar-nav &gt; li {
    float: left;
  }
  .navbar-nav &gt; li &gt; a {
    padding-top: 6px;
    padding-bottom: 6px;
  }
}
.navbar-form {
  margin-left: 0px;
  margin-right: 0px;
  padding: 10px 0px;
  border-top: 1px solid transparent;
  border-bottom: 1px solid transparent;
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  margin-top: -1px;
  margin-bottom: -1px;
}
@media (min-width: 768px) {
  .navbar-form .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .navbar-form .form-control-static {
    display: inline-block;
  }
  .navbar-form .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .navbar-form .input-group .input-group-addon,
  .navbar-form .input-group .input-group-btn,
  .navbar-form .input-group .form-control {
    width: auto;
  }
  .navbar-form .input-group &gt; .form-control {
    width: 100%;
  }
  .navbar-form .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio,
  .navbar-form .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio label,
  .navbar-form .checkbox label {
    padding-left: 0;
  }
  .navbar-form .radio input[type=&quot;radio&quot;],
  .navbar-form .checkbox input[type=&quot;checkbox&quot;] {
    position: relative;
    margin-left: 0;
  }
  .navbar-form .has-feedback .form-control-feedback {
    top: 0;
  }
}
@media (max-width: 540px) {
  .navbar-form .form-group {
    margin-bottom: 5px;
  }
  .navbar-form .form-group:last-child {
    margin-bottom: 0;
  }
}
@media (min-width: 541px) {
  .navbar-form {
    width: auto;
    border: 0;
    margin-left: 0;
    margin-right: 0;
    padding-top: 0;
    padding-bottom: 0;
    -webkit-box-shadow: none;
    box-shadow: none;
  }
}
.navbar-nav &gt; li &gt; .dropdown-menu {
  margin-top: 0;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar-fixed-bottom .navbar-nav &gt; li &gt; .dropdown-menu {
  margin-bottom: 0;
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.navbar-btn {
  margin-top: -1px;
  margin-bottom: -1px;
}
.navbar-btn.btn-sm {
  margin-top: 0px;
  margin-bottom: 0px;
}
.navbar-btn.btn-xs {
  margin-top: 4px;
  margin-bottom: 4px;
}
.navbar-text {
  margin-top: 6px;
  margin-bottom: 6px;
}
@media (min-width: 541px) {
  .navbar-text {
    float: left;
    margin-left: 0px;
    margin-right: 0px;
  }
}
@media (min-width: 541px) {
  .navbar-left {
    float: left !important;
    float: left;
  }
  .navbar-right {
    float: right !important;
    float: right;
    margin-right: 0px;
  }
  .navbar-right ~ .navbar-right {
    margin-right: 0;
  }
}
.navbar-default {
  background-color: #f8f8f8;
  border-color: #e7e7e7;
}
.navbar-default .navbar-brand {
  color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
  color: #5e5e5e;
  background-color: transparent;
}
.navbar-default .navbar-text {
  color: #777;
}
.navbar-default .navbar-nav &gt; li &gt; a {
  color: #777;
}
.navbar-default .navbar-nav &gt; li &gt; a:hover,
.navbar-default .navbar-nav &gt; li &gt; a:focus {
  color: #333;
  background-color: transparent;
}
.navbar-default .navbar-nav &gt; .active &gt; a,
.navbar-default .navbar-nav &gt; .active &gt; a:hover,
.navbar-default .navbar-nav &gt; .active &gt; a:focus {
  color: #555;
  background-color: #e7e7e7;
}
.navbar-default .navbar-nav &gt; .disabled &gt; a,
.navbar-default .navbar-nav &gt; .disabled &gt; a:hover,
.navbar-default .navbar-nav &gt; .disabled &gt; a:focus {
  color: #ccc;
  background-color: transparent;
}
.navbar-default .navbar-toggle {
  border-color: #ddd;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
  background-color: #ddd;
}
.navbar-default .navbar-toggle .icon-bar {
  background-color: #888;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
  border-color: #e7e7e7;
}
.navbar-default .navbar-nav &gt; .open &gt; a,
.navbar-default .navbar-nav &gt; .open &gt; a:hover,
.navbar-default .navbar-nav &gt; .open &gt; a:focus {
  background-color: #e7e7e7;
  color: #555;
}
@media (max-width: 540px) {
  .navbar-default .navbar-nav .open .dropdown-menu &gt; li &gt; a {
    color: #777;
  }
  .navbar-default .navbar-nav .open .dropdown-menu &gt; li &gt; a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu &gt; li &gt; a:focus {
    color: #333;
    background-color: transparent;
  }
  .navbar-default .navbar-nav .open .dropdown-menu &gt; .active &gt; a,
  .navbar-default .navbar-nav .open .dropdown-menu &gt; .active &gt; a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu &gt; .active &gt; a:focus {
    color: #555;
    background-color: #e7e7e7;
  }
  .navbar-default .navbar-nav .open .dropdown-menu &gt; .disabled &gt; a,
  .navbar-default .navbar-nav .open .dropdown-menu &gt; .disabled &gt; a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu &gt; .disabled &gt; a:focus {
    color: #ccc;
    background-color: transparent;
  }
}
.navbar-default .navbar-link {
  color: #777;
}
.navbar-default .navbar-link:hover {
  color: #333;
}
.navbar-default .btn-link {
  color: #777;
}
.navbar-default .btn-link:hover,
.navbar-default .btn-link:focus {
  color: #333;
}
.navbar-default .btn-link[disabled]:hover,
fieldset[disabled] .navbar-default .btn-link:hover,
.navbar-default .btn-link[disabled]:focus,
fieldset[disabled] .navbar-default .btn-link:focus {
  color: #ccc;
}
.navbar-inverse {
  background-color: #222;
  border-color: #080808;
}
.navbar-inverse .navbar-brand {
  color: #9d9d9d;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-text {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav &gt; li &gt; a {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav &gt; li &gt; a:hover,
.navbar-inverse .navbar-nav &gt; li &gt; a:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-nav &gt; .active &gt; a,
.navbar-inverse .navbar-nav &gt; .active &gt; a:hover,
.navbar-inverse .navbar-nav &gt; .active &gt; a:focus {
  color: #fff;
  background-color: #080808;
}
.navbar-inverse .navbar-nav &gt; .disabled &gt; a,
.navbar-inverse .navbar-nav &gt; .disabled &gt; a:hover,
.navbar-inverse .navbar-nav &gt; .disabled &gt; a:focus {
  color: #444;
  background-color: transparent;
}
.navbar-inverse .navbar-toggle {
  border-color: #333;
}
.navbar-inverse .navbar-toggle:hover,
.navbar-inverse .navbar-toggle:focus {
  background-color: #333;
}
.navbar-inverse .navbar-toggle .icon-bar {
  background-color: #fff;
}
.navbar-inverse .navbar-collapse,
.navbar-inverse .navbar-form {
  border-color: #101010;
}
.navbar-inverse .navbar-nav &gt; .open &gt; a,
.navbar-inverse .navbar-nav &gt; .open &gt; a:hover,
.navbar-inverse .navbar-nav &gt; .open &gt; a:focus {
  background-color: #080808;
  color: #fff;
}
@media (max-width: 540px) {
  .navbar-inverse .navbar-nav .open .dropdown-menu &gt; .dropdown-header {
    border-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu &gt; li &gt; a {
    color: #9d9d9d;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu &gt; li &gt; a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu &gt; li &gt; a:focus {
    color: #fff;
    background-color: transparent;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu &gt; .active &gt; a,
  .navbar-inverse .navbar-nav .open .dropdown-menu &gt; .active &gt; a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu &gt; .active &gt; a:focus {
    color: #fff;
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu &gt; .disabled &gt; a,
  .navbar-inverse .navbar-nav .open .dropdown-menu &gt; .disabled &gt; a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu &gt; .disabled &gt; a:focus {
    color: #444;
    background-color: transparent;
  }
}
.navbar-inverse .navbar-link {
  color: #9d9d9d;
}
.navbar-inverse .navbar-link:hover {
  color: #fff;
}
.navbar-inverse .btn-link {
  color: #9d9d9d;
}
.navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link:focus {
  color: #fff;
}
.navbar-inverse .btn-link[disabled]:hover,
fieldset[disabled] .navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link[disabled]:focus,
fieldset[disabled] .navbar-inverse .btn-link:focus {
  color: #444;
}
.breadcrumb {
  padding: 8px 15px;
  margin-bottom: 18px;
  list-style: none;
  background-color: #f5f5f5;
  border-radius: 2px;
}
.breadcrumb &gt; li {
  display: inline-block;
}
.breadcrumb &gt; li + li:before {
  content: &quot;/\00a0&quot;;
  padding: 0 5px;
  color: #5e5e5e;
}
.breadcrumb &gt; .active {
  color: #777777;
}
.pagination {
  display: inline-block;
  padding-left: 0;
  margin: 18px 0;
  border-radius: 2px;
}
.pagination &gt; li {
  display: inline;
}
.pagination &gt; li &gt; a,
.pagination &gt; li &gt; span {
  position: relative;
  float: left;
  padding: 6px 12px;
  line-height: 1.42857143;
  text-decoration: none;
  color: #337ab7;
  background-color: #fff;
  border: 1px solid #ddd;
  margin-left: -1px;
}
.pagination &gt; li:first-child &gt; a,
.pagination &gt; li:first-child &gt; span {
  margin-left: 0;
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.pagination &gt; li:last-child &gt; a,
.pagination &gt; li:last-child &gt; span {
  border-bottom-right-radius: 2px;
  border-top-right-radius: 2px;
}
.pagination &gt; li &gt; a:hover,
.pagination &gt; li &gt; span:hover,
.pagination &gt; li &gt; a:focus,
.pagination &gt; li &gt; span:focus {
  z-index: 2;
  color: #23527c;
  background-color: #eeeeee;
  border-color: #ddd;
}
.pagination &gt; .active &gt; a,
.pagination &gt; .active &gt; span,
.pagination &gt; .active &gt; a:hover,
.pagination &gt; .active &gt; span:hover,
.pagination &gt; .active &gt; a:focus,
.pagination &gt; .active &gt; span:focus {
  z-index: 3;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
  cursor: default;
}
.pagination &gt; .disabled &gt; span,
.pagination &gt; .disabled &gt; span:hover,
.pagination &gt; .disabled &gt; span:focus,
.pagination &gt; .disabled &gt; a,
.pagination &gt; .disabled &gt; a:hover,
.pagination &gt; .disabled &gt; a:focus {
  color: #777777;
  background-color: #fff;
  border-color: #ddd;
  cursor: not-allowed;
}
.pagination-lg &gt; li &gt; a,
.pagination-lg &gt; li &gt; span {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.pagination-lg &gt; li:first-child &gt; a,
.pagination-lg &gt; li:first-child &gt; span {
  border-bottom-left-radius: 3px;
  border-top-left-radius: 3px;
}
.pagination-lg &gt; li:last-child &gt; a,
.pagination-lg &gt; li:last-child &gt; span {
  border-bottom-right-radius: 3px;
  border-top-right-radius: 3px;
}
.pagination-sm &gt; li &gt; a,
.pagination-sm &gt; li &gt; span {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.pagination-sm &gt; li:first-child &gt; a,
.pagination-sm &gt; li:first-child &gt; span {
  border-bottom-left-radius: 1px;
  border-top-left-radius: 1px;
}
.pagination-sm &gt; li:last-child &gt; a,
.pagination-sm &gt; li:last-child &gt; span {
  border-bottom-right-radius: 1px;
  border-top-right-radius: 1px;
}
.pager {
  padding-left: 0;
  margin: 18px 0;
  list-style: none;
  text-align: center;
}
.pager li {
  display: inline;
}
.pager li &gt; a,
.pager li &gt; span {
  display: inline-block;
  padding: 5px 14px;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 15px;
}
.pager li &gt; a:hover,
.pager li &gt; a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.pager .next &gt; a,
.pager .next &gt; span {
  float: right;
}
.pager .previous &gt; a,
.pager .previous &gt; span {
  float: left;
}
.pager .disabled &gt; a,
.pager .disabled &gt; a:hover,
.pager .disabled &gt; a:focus,
.pager .disabled &gt; span {
  color: #777777;
  background-color: #fff;
  cursor: not-allowed;
}
.label {
  display: inline;
  padding: .2em .6em .3em;
  font-size: 75%;
  font-weight: bold;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: .25em;
}
a.label:hover,
a.label:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.label:empty {
  display: none;
}
.btn .label {
  position: relative;
  top: -1px;
}
.label-default {
  background-color: #777777;
}
.label-default[href]:hover,
.label-default[href]:focus {
  background-color: #5e5e5e;
}
.label-primary {
  background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
  background-color: #286090;
}
.label-success {
  background-color: #5cb85c;
}
.label-success[href]:hover,
.label-success[href]:focus {
  background-color: #449d44;
}
.label-info {
  background-color: #5bc0de;
}
.label-info[href]:hover,
.label-info[href]:focus {
  background-color: #31b0d5;
}
.label-warning {
  background-color: #f0ad4e;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
  background-color: #ec971f;
}
.label-danger {
  background-color: #d9534f;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
  background-color: #c9302c;
}
.badge {
  display: inline-block;
  min-width: 10px;
  padding: 3px 7px;
  font-size: 12px;
  font-weight: bold;
  color: #fff;
  line-height: 1;
  vertical-align: middle;
  white-space: nowrap;
  text-align: center;
  background-color: #777777;
  border-radius: 10px;
}
.badge:empty {
  display: none;
}
.btn .badge {
  position: relative;
  top: -1px;
}
.btn-xs .badge,
.btn-group-xs &gt; .btn .badge {
  top: 0;
  padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.list-group-item.active &gt; .badge,
.nav-pills &gt; .active &gt; a &gt; .badge {
  color: #337ab7;
  background-color: #fff;
}
.list-group-item &gt; .badge {
  float: right;
}
.list-group-item &gt; .badge + .badge {
  margin-right: 5px;
}
.nav-pills &gt; li &gt; a &gt; .badge {
  margin-left: 3px;
}
.jumbotron {
  padding-top: 30px;
  padding-bottom: 30px;
  margin-bottom: 30px;
  color: inherit;
  background-color: #eeeeee;
}
.jumbotron h1,
.jumbotron .h1 {
  color: inherit;
}
.jumbotron p {
  margin-bottom: 15px;
  font-size: 20px;
  font-weight: 200;
}
.jumbotron &gt; hr {
  border-top-color: #d5d5d5;
}
.container .jumbotron,
.container-fluid .jumbotron {
  border-radius: 3px;
  padding-left: 0px;
  padding-right: 0px;
}
.jumbotron .container {
  max-width: 100%;
}
@media screen and (min-width: 768px) {
  .jumbotron {
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .container .jumbotron,
  .container-fluid .jumbotron {
    padding-left: 60px;
    padding-right: 60px;
  }
  .jumbotron h1,
  .jumbotron .h1 {
    font-size: 59px;
  }
}
.thumbnail {
  display: block;
  padding: 4px;
  margin-bottom: 18px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: border 0.2s ease-in-out;
  -o-transition: border 0.2s ease-in-out;
  transition: border 0.2s ease-in-out;
}
.thumbnail &gt; img,
.thumbnail a &gt; img {
  margin-left: auto;
  margin-right: auto;
}
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
  border-color: #337ab7;
}
.thumbnail .caption {
  padding: 9px;
  color: #000;
}
.alert {
  padding: 15px;
  margin-bottom: 18px;
  border: 1px solid transparent;
  border-radius: 2px;
}
.alert h4 {
  margin-top: 0;
  color: inherit;
}
.alert .alert-link {
  font-weight: bold;
}
.alert &gt; p,
.alert &gt; ul {
  margin-bottom: 0;
}
.alert &gt; p + p {
  margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
  padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
  position: relative;
  top: -2px;
  right: -21px;
  color: inherit;
}
.alert-success {
  background-color: #dff0d8;
  border-color: #d6e9c6;
  color: #3c763d;
}
.alert-success hr {
  border-top-color: #c9e2b3;
}
.alert-success .alert-link {
  color: #2b542c;
}
.alert-info {
  background-color: #d9edf7;
  border-color: #bce8f1;
  color: #31708f;
}
.alert-info hr {
  border-top-color: #a6e1ec;
}
.alert-info .alert-link {
  color: #245269;
}
.alert-warning {
  background-color: #fcf8e3;
  border-color: #faebcc;
  color: #8a6d3b;
}
.alert-warning hr {
  border-top-color: #f7e1b5;
}
.alert-warning .alert-link {
  color: #66512c;
}
.alert-danger {
  background-color: #f2dede;
  border-color: #ebccd1;
  color: #a94442;
}
.alert-danger hr {
  border-top-color: #e4b9c0;
}
.alert-danger .alert-link {
  color: #843534;
}
@-webkit-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
.progress {
  overflow: hidden;
  height: 18px;
  margin-bottom: 18px;
  background-color: #f5f5f5;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
.progress-bar {
  float: left;
  width: 0%;
  height: 100%;
  font-size: 12px;
  line-height: 18px;
  color: #fff;
  text-align: center;
  background-color: #337ab7;
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  -webkit-transition: width 0.6s ease;
  -o-transition: width 0.6s ease;
  transition: width 0.6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
  -webkit-animation: progress-bar-stripes 2s linear infinite;
  -o-animation: progress-bar-stripes 2s linear infinite;
  animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
  background-color: #5cb85c;
}
.progress-striped .progress-bar-success {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
  background-color: #5bc0de;
}
.progress-striped .progress-bar-info {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
  background-color: #f0ad4e;
}
.progress-striped .progress-bar-warning {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
  background-color: #d9534f;
}
.progress-striped .progress-bar-danger {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.media {
  margin-top: 15px;
}
.media:first-child {
  margin-top: 0;
}
.media,
.media-body {
  zoom: 1;
  overflow: hidden;
}
.media-body {
  width: 10000px;
}
.media-object {
  display: block;
}
.media-object.img-thumbnail {
  max-width: none;
}
.media-right,
.media &gt; .pull-right {
  padding-left: 10px;
}
.media-left,
.media &gt; .pull-left {
  padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
  display: table-cell;
  vertical-align: top;
}
.media-middle {
  vertical-align: middle;
}
.media-bottom {
  vertical-align: bottom;
}
.media-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.media-list {
  padding-left: 0;
  list-style: none;
}
.list-group {
  margin-bottom: 20px;
  padding-left: 0;
}
.list-group-item {
  position: relative;
  display: block;
  padding: 10px 15px;
  margin-bottom: -1px;
  background-color: #fff;
  border: 1px solid #ddd;
}
.list-group-item:first-child {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
}
.list-group-item:last-child {
  margin-bottom: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
a.list-group-item,
button.list-group-item {
  color: #555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
  color: #333;
}
a.list-group-item:hover,
button.list-group-item:hover,
a.list-group-item:focus,
button.list-group-item:focus {
  text-decoration: none;
  color: #555;
  background-color: #f5f5f5;
}
button.list-group-item {
  width: 100%;
  text-align: left;
}
.list-group-item.disabled,
.list-group-item.disabled:hover,
.list-group-item.disabled:focus {
  background-color: #eeeeee;
  color: #777777;
  cursor: not-allowed;
}
.list-group-item.disabled .list-group-item-heading,
.list-group-item.disabled:hover .list-group-item-heading,
.list-group-item.disabled:focus .list-group-item-heading {
  color: inherit;
}
.list-group-item.disabled .list-group-item-text,
.list-group-item.disabled:hover .list-group-item-text,
.list-group-item.disabled:focus .list-group-item-text {
  color: #777777;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
  z-index: 2;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.list-group-item.active .list-group-item-heading,
.list-group-item.active:hover .list-group-item-heading,
.list-group-item.active:focus .list-group-item-heading,
.list-group-item.active .list-group-item-heading &gt; small,
.list-group-item.active:hover .list-group-item-heading &gt; small,
.list-group-item.active:focus .list-group-item-heading &gt; small,
.list-group-item.active .list-group-item-heading &gt; .small,
.list-group-item.active:hover .list-group-item-heading &gt; .small,
.list-group-item.active:focus .list-group-item-heading &gt; .small {
  color: inherit;
}
.list-group-item.active .list-group-item-text,
.list-group-item.active:hover .list-group-item-text,
.list-group-item.active:focus .list-group-item-text {
  color: #c7ddef;
}
.list-group-item-success {
  color: #3c763d;
  background-color: #dff0d8;
}
a.list-group-item-success,
button.list-group-item-success {
  color: #3c763d;
}
a.list-group-item-success .list-group-item-heading,
button.list-group-item-success .list-group-item-heading {
  color: inherit;
}
a.list-group-item-success:hover,
button.list-group-item-success:hover,
a.list-group-item-success:focus,
button.list-group-item-success:focus {
  color: #3c763d;
  background-color: #d0e9c6;
}
a.list-group-item-success.active,
button.list-group-item-success.active,
a.list-group-item-success.active:hover,
button.list-group-item-success.active:hover,
a.list-group-item-success.active:focus,
button.list-group-item-success.active:focus {
  color: #fff;
  background-color: #3c763d;
  border-color: #3c763d;
}
.list-group-item-info {
  color: #31708f;
  background-color: #d9edf7;
}
a.list-group-item-info,
button.list-group-item-info {
  color: #31708f;
}
a.list-group-item-info .list-group-item-heading,
button.list-group-item-info .list-group-item-heading {
  color: inherit;
}
a.list-group-item-info:hover,
button.list-group-item-info:hover,
a.list-group-item-info:focus,
button.list-group-item-info:focus {
  color: #31708f;
  background-color: #c4e3f3;
}
a.list-group-item-info.active,
button.list-group-item-info.active,
a.list-group-item-info.active:hover,
button.list-group-item-info.active:hover,
a.list-group-item-info.active:focus,
button.list-group-item-info.active:focus {
  color: #fff;
  background-color: #31708f;
  border-color: #31708f;
}
.list-group-item-warning {
  color: #8a6d3b;
  background-color: #fcf8e3;
}
a.list-group-item-warning,
button.list-group-item-warning {
  color: #8a6d3b;
}
a.list-group-item-warning .list-group-item-heading,
button.list-group-item-warning .list-group-item-heading {
  color: inherit;
}
a.list-group-item-warning:hover,
button.list-group-item-warning:hover,
a.list-group-item-warning:focus,
button.list-group-item-warning:focus {
  color: #8a6d3b;
  background-color: #faf2cc;
}
a.list-group-item-warning.active,
button.list-group-item-warning.active,
a.list-group-item-warning.active:hover,
button.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus,
button.list-group-item-warning.active:focus {
  color: #fff;
  background-color: #8a6d3b;
  border-color: #8a6d3b;
}
.list-group-item-danger {
  color: #a94442;
  background-color: #f2dede;
}
a.list-group-item-danger,
button.list-group-item-danger {
  color: #a94442;
}
a.list-group-item-danger .list-group-item-heading,
button.list-group-item-danger .list-group-item-heading {
  color: inherit;
}
a.list-group-item-danger:hover,
button.list-group-item-danger:hover,
a.list-group-item-danger:focus,
button.list-group-item-danger:focus {
  color: #a94442;
  background-color: #ebcccc;
}
a.list-group-item-danger.active,
button.list-group-item-danger.active,
a.list-group-item-danger.active:hover,
button.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus,
button.list-group-item-danger.active:focus {
  color: #fff;
  background-color: #a94442;
  border-color: #a94442;
}
.list-group-item-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.list-group-item-text {
  margin-bottom: 0;
  line-height: 1.3;
}
.panel {
  margin-bottom: 18px;
  background-color: #fff;
  border: 1px solid transparent;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
.panel-body {
  padding: 15px;
}
.panel-heading {
  padding: 10px 15px;
  border-bottom: 1px solid transparent;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel-heading &gt; .dropdown .dropdown-toggle {
  color: inherit;
}
.panel-title {
  margin-top: 0;
  margin-bottom: 0;
  font-size: 15px;
  color: inherit;
}
.panel-title &gt; a,
.panel-title &gt; small,
.panel-title &gt; .small,
.panel-title &gt; small &gt; a,
.panel-title &gt; .small &gt; a {
  color: inherit;
}
.panel-footer {
  padding: 10px 15px;
  background-color: #f5f5f5;
  border-top: 1px solid #ddd;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel &gt; .list-group,
.panel &gt; .panel-collapse &gt; .list-group {
  margin-bottom: 0;
}
.panel &gt; .list-group .list-group-item,
.panel &gt; .panel-collapse &gt; .list-group .list-group-item {
  border-width: 1px 0;
  border-radius: 0;
}
.panel &gt; .list-group:first-child .list-group-item:first-child,
.panel &gt; .panel-collapse &gt; .list-group:first-child .list-group-item:first-child {
  border-top: 0;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel &gt; .list-group:last-child .list-group-item:last-child,
.panel &gt; .panel-collapse &gt; .list-group:last-child .list-group-item:last-child {
  border-bottom: 0;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel &gt; .panel-heading + .panel-collapse &gt; .list-group .list-group-item:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
  border-top-width: 0;
}
.list-group + .panel-footer {
  border-top-width: 0;
}
.panel &gt; .table,
.panel &gt; .table-responsive &gt; .table,
.panel &gt; .panel-collapse &gt; .table {
  margin-bottom: 0;
}
.panel &gt; .table caption,
.panel &gt; .table-responsive &gt; .table caption,
.panel &gt; .panel-collapse &gt; .table caption {
  padding-left: 15px;
  padding-right: 15px;
}
.panel &gt; .table:first-child,
.panel &gt; .table-responsive:first-child &gt; .table:first-child {
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel &gt; .table:first-child &gt; thead:first-child &gt; tr:first-child,
.panel &gt; .table-responsive:first-child &gt; .table:first-child &gt; thead:first-child &gt; tr:first-child,
.panel &gt; .table:first-child &gt; tbody:first-child &gt; tr:first-child,
.panel &gt; .table-responsive:first-child &gt; .table:first-child &gt; tbody:first-child &gt; tr:first-child {
  border-top-left-radius: 1px;
  border-top-right-radius: 1px;
}
.panel &gt; .table:first-child &gt; thead:first-child &gt; tr:first-child td:first-child,
.panel &gt; .table-responsive:first-child &gt; .table:first-child &gt; thead:first-child &gt; tr:first-child td:first-child,
.panel &gt; .table:first-child &gt; tbody:first-child &gt; tr:first-child td:first-child,
.panel &gt; .table-responsive:first-child &gt; .table:first-child &gt; tbody:first-child &gt; tr:first-child td:first-child,
.panel &gt; .table:first-child &gt; thead:first-child &gt; tr:first-child th:first-child,
.panel &gt; .table-responsive:first-child &gt; .table:first-child &gt; thead:first-child &gt; tr:first-child th:first-child,
.panel &gt; .table:first-child &gt; tbody:first-child &gt; tr:first-child th:first-child,
.panel &gt; .table-responsive:first-child &gt; .table:first-child &gt; tbody:first-child &gt; tr:first-child th:first-child {
  border-top-left-radius: 1px;
}
.panel &gt; .table:first-child &gt; thead:first-child &gt; tr:first-child td:last-child,
.panel &gt; .table-responsive:first-child &gt; .table:first-child &gt; thead:first-child &gt; tr:first-child td:last-child,
.panel &gt; .table:first-child &gt; tbody:first-child &gt; tr:first-child td:last-child,
.panel &gt; .table-responsive:first-child &gt; .table:first-child &gt; tbody:first-child &gt; tr:first-child td:last-child,
.panel &gt; .table:first-child &gt; thead:first-child &gt; tr:first-child th:last-child,
.panel &gt; .table-responsive:first-child &gt; .table:first-child &gt; thead:first-child &gt; tr:first-child th:last-child,
.panel &gt; .table:first-child &gt; tbody:first-child &gt; tr:first-child th:last-child,
.panel &gt; .table-responsive:first-child &gt; .table:first-child &gt; tbody:first-child &gt; tr:first-child th:last-child {
  border-top-right-radius: 1px;
}
.panel &gt; .table:last-child,
.panel &gt; .table-responsive:last-child &gt; .table:last-child {
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel &gt; .table:last-child &gt; tbody:last-child &gt; tr:last-child,
.panel &gt; .table-responsive:last-child &gt; .table:last-child &gt; tbody:last-child &gt; tr:last-child,
.panel &gt; .table:last-child &gt; tfoot:last-child &gt; tr:last-child,
.panel &gt; .table-responsive:last-child &gt; .table:last-child &gt; tfoot:last-child &gt; tr:last-child {
  border-bottom-left-radius: 1px;
  border-bottom-right-radius: 1px;
}
.panel &gt; .table:last-child &gt; tbody:last-child &gt; tr:last-child td:first-child,
.panel &gt; .table-responsive:last-child &gt; .table:last-child &gt; tbody:last-child &gt; tr:last-child td:first-child,
.panel &gt; .table:last-child &gt; tfoot:last-child &gt; tr:last-child td:first-child,
.panel &gt; .table-responsive:last-child &gt; .table:last-child &gt; tfoot:last-child &gt; tr:last-child td:first-child,
.panel &gt; .table:last-child &gt; tbody:last-child &gt; tr:last-child th:first-child,
.panel &gt; .table-responsive:last-child &gt; .table:last-child &gt; tbody:last-child &gt; tr:last-child th:first-child,
.panel &gt; .table:last-child &gt; tfoot:last-child &gt; tr:last-child th:first-child,
.panel &gt; .table-responsive:last-child &gt; .table:last-child &gt; tfoot:last-child &gt; tr:last-child th:first-child {
  border-bottom-left-radius: 1px;
}
.panel &gt; .table:last-child &gt; tbody:last-child &gt; tr:last-child td:last-child,
.panel &gt; .table-responsive:last-child &gt; .table:last-child &gt; tbody:last-child &gt; tr:last-child td:last-child,
.panel &gt; .table:last-child &gt; tfoot:last-child &gt; tr:last-child td:last-child,
.panel &gt; .table-responsive:last-child &gt; .table:last-child &gt; tfoot:last-child &gt; tr:last-child td:last-child,
.panel &gt; .table:last-child &gt; tbody:last-child &gt; tr:last-child th:last-child,
.panel &gt; .table-responsive:last-child &gt; .table:last-child &gt; tbody:last-child &gt; tr:last-child th:last-child,
.panel &gt; .table:last-child &gt; tfoot:last-child &gt; tr:last-child th:last-child,
.panel &gt; .table-responsive:last-child &gt; .table:last-child &gt; tfoot:last-child &gt; tr:last-child th:last-child {
  border-bottom-right-radius: 1px;
}
.panel &gt; .panel-body + .table,
.panel &gt; .panel-body + .table-responsive,
.panel &gt; .table + .panel-body,
.panel &gt; .table-responsive + .panel-body {
  border-top: 1px solid #ddd;
}
.panel &gt; .table &gt; tbody:first-child &gt; tr:first-child th,
.panel &gt; .table &gt; tbody:first-child &gt; tr:first-child td {
  border-top: 0;
}
.panel &gt; .table-bordered,
.panel &gt; .table-responsive &gt; .table-bordered {
  border: 0;
}
.panel &gt; .table-bordered &gt; thead &gt; tr &gt; th:first-child,
.panel &gt; .table-responsive &gt; .table-bordered &gt; thead &gt; tr &gt; th:first-child,
.panel &gt; .table-bordered &gt; tbody &gt; tr &gt; th:first-child,
.panel &gt; .table-responsive &gt; .table-bordered &gt; tbody &gt; tr &gt; th:first-child,
.panel &gt; .table-bordered &gt; tfoot &gt; tr &gt; th:first-child,
.panel &gt; .table-responsive &gt; .table-bordered &gt; tfoot &gt; tr &gt; th:first-child,
.panel &gt; .table-bordered &gt; thead &gt; tr &gt; td:first-child,
.panel &gt; .table-responsive &gt; .table-bordered &gt; thead &gt; tr &gt; td:first-child,
.panel &gt; .table-bordered &gt; tbody &gt; tr &gt; td:first-child,
.panel &gt; .table-responsive &gt; .table-bordered &gt; tbody &gt; tr &gt; td:first-child,
.panel &gt; .table-bordered &gt; tfoot &gt; tr &gt; td:first-child,
.panel &gt; .table-responsive &gt; .table-bordered &gt; tfoot &gt; tr &gt; td:first-child {
  border-left: 0;
}
.panel &gt; .table-bordered &gt; thead &gt; tr &gt; th:last-child,
.panel &gt; .table-responsive &gt; .table-bordered &gt; thead &gt; tr &gt; th:last-child,
.panel &gt; .table-bordered &gt; tbody &gt; tr &gt; th:last-child,
.panel &gt; .table-responsive &gt; .table-bordered &gt; tbody &gt; tr &gt; th:last-child,
.panel &gt; .table-bordered &gt; tfoot &gt; tr &gt; th:last-child,
.panel &gt; .table-responsive &gt; .table-bordered &gt; tfoot &gt; tr &gt; th:last-child,
.panel &gt; .table-bordered &gt; thead &gt; tr &gt; td:last-child,
.panel &gt; .table-responsive &gt; .table-bordered &gt; thead &gt; tr &gt; td:last-child,
.panel &gt; .table-bordered &gt; tbody &gt; tr &gt; td:last-child,
.panel &gt; .table-responsive &gt; .table-bordered &gt; tbody &gt; tr &gt; td:last-child,
.panel &gt; .table-bordered &gt; tfoot &gt; tr &gt; td:last-child,
.panel &gt; .table-responsive &gt; .table-bordered &gt; tfoot &gt; tr &gt; td:last-child {
  border-right: 0;
}
.panel &gt; .table-bordered &gt; thead &gt; tr:first-child &gt; td,
.panel &gt; .table-responsive &gt; .table-bordered &gt; thead &gt; tr:first-child &gt; td,
.panel &gt; .table-bordered &gt; tbody &gt; tr:first-child &gt; td,
.panel &gt; .table-responsive &gt; .table-bordered &gt; tbody &gt; tr:first-child &gt; td,
.panel &gt; .table-bordered &gt; thead &gt; tr:first-child &gt; th,
.panel &gt; .table-responsive &gt; .table-bordered &gt; thead &gt; tr:first-child &gt; th,
.panel &gt; .table-bordered &gt; tbody &gt; tr:first-child &gt; th,
.panel &gt; .table-responsive &gt; .table-bordered &gt; tbody &gt; tr:first-child &gt; th {
  border-bottom: 0;
}
.panel &gt; .table-bordered &gt; tbody &gt; tr:last-child &gt; td,
.panel &gt; .table-responsive &gt; .table-bordered &gt; tbody &gt; tr:last-child &gt; td,
.panel &gt; .table-bordered &gt; tfoot &gt; tr:last-child &gt; td,
.panel &gt; .table-responsive &gt; .table-bordered &gt; tfoot &gt; tr:last-child &gt; td,
.panel &gt; .table-bordered &gt; tbody &gt; tr:last-child &gt; th,
.panel &gt; .table-responsive &gt; .table-bordered &gt; tbody &gt; tr:last-child &gt; th,
.panel &gt; .table-bordered &gt; tfoot &gt; tr:last-child &gt; th,
.panel &gt; .table-responsive &gt; .table-bordered &gt; tfoot &gt; tr:last-child &gt; th {
  border-bottom: 0;
}
.panel &gt; .table-responsive {
  border: 0;
  margin-bottom: 0;
}
.panel-group {
  margin-bottom: 18px;
}
.panel-group .panel {
  margin-bottom: 0;
  border-radius: 2px;
}
.panel-group .panel + .panel {
  margin-top: 5px;
}
.panel-group .panel-heading {
  border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse &gt; .panel-body,
.panel-group .panel-heading + .panel-collapse &gt; .list-group {
  border-top: 1px solid #ddd;
}
.panel-group .panel-footer {
  border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
  border-bottom: 1px solid #ddd;
}
.panel-default {
  border-color: #ddd;
}
.panel-default &gt; .panel-heading {
  color: #333333;
  background-color: #f5f5f5;
  border-color: #ddd;
}
.panel-default &gt; .panel-heading + .panel-collapse &gt; .panel-body {
  border-top-color: #ddd;
}
.panel-default &gt; .panel-heading .badge {
  color: #f5f5f5;
  background-color: #333333;
}
.panel-default &gt; .panel-footer + .panel-collapse &gt; .panel-body {
  border-bottom-color: #ddd;
}
.panel-primary {
  border-color: #337ab7;
}
.panel-primary &gt; .panel-heading {
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.panel-primary &gt; .panel-heading + .panel-collapse &gt; .panel-body {
  border-top-color: #337ab7;
}
.panel-primary &gt; .panel-heading .badge {
  color: #337ab7;
  background-color: #fff;
}
.panel-primary &gt; .panel-footer + .panel-collapse &gt; .panel-body {
  border-bottom-color: #337ab7;
}
.panel-success {
  border-color: #d6e9c6;
}
.panel-success &gt; .panel-heading {
  color: #3c763d;
  background-color: #dff0d8;
  border-color: #d6e9c6;
}
.panel-success &gt; .panel-heading + .panel-collapse &gt; .panel-body {
  border-top-color: #d6e9c6;
}
.panel-success &gt; .panel-heading .badge {
  color: #dff0d8;
  background-color: #3c763d;
}
.panel-success &gt; .panel-footer + .panel-collapse &gt; .panel-body {
  border-bottom-color: #d6e9c6;
}
.panel-info {
  border-color: #bce8f1;
}
.panel-info &gt; .panel-heading {
  color: #31708f;
  background-color: #d9edf7;
  border-color: #bce8f1;
}
.panel-info &gt; .panel-heading + .panel-collapse &gt; .panel-body {
  border-top-color: #bce8f1;
}
.panel-info &gt; .panel-heading .badge {
  color: #d9edf7;
  background-color: #31708f;
}
.panel-info &gt; .panel-footer + .panel-collapse &gt; .panel-body {
  border-bottom-color: #bce8f1;
}
.panel-warning {
  border-color: #faebcc;
}
.panel-warning &gt; .panel-heading {
  color: #8a6d3b;
  background-color: #fcf8e3;
  border-color: #faebcc;
}
.panel-warning &gt; .panel-heading + .panel-collapse &gt; .panel-body {
  border-top-color: #faebcc;
}
.panel-warning &gt; .panel-heading .badge {
  color: #fcf8e3;
  background-color: #8a6d3b;
}
.panel-warning &gt; .panel-footer + .panel-collapse &gt; .panel-body {
  border-bottom-color: #faebcc;
}
.panel-danger {
  border-color: #ebccd1;
}
.panel-danger &gt; .panel-heading {
  color: #a94442;
  background-color: #f2dede;
  border-color: #ebccd1;
}
.panel-danger &gt; .panel-heading + .panel-collapse &gt; .panel-body {
  border-top-color: #ebccd1;
}
.panel-danger &gt; .panel-heading .badge {
  color: #f2dede;
  background-color: #a94442;
}
.panel-danger &gt; .panel-footer + .panel-collapse &gt; .panel-body {
  border-bottom-color: #ebccd1;
}
.embed-responsive {
  position: relative;
  display: block;
  height: 0;
  padding: 0;
  overflow: hidden;
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  height: 100%;
  width: 100%;
  border: 0;
}
.embed-responsive-16by9 {
  padding-bottom: 56.25%;
}
.embed-responsive-4by3 {
  padding-bottom: 75%;
}
.well {
  min-height: 20px;
  padding: 19px;
  margin-bottom: 20px;
  background-color: #f5f5f5;
  border: 1px solid #e3e3e3;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
}
.well blockquote {
  border-color: #ddd;
  border-color: rgba(0, 0, 0, 0.15);
}
.well-lg {
  padding: 24px;
  border-radius: 3px;
}
.well-sm {
  padding: 9px;
  border-radius: 1px;
}
.close {
  float: right;
  font-size: 19.5px;
  font-weight: bold;
  line-height: 1;
  color: #000;
  text-shadow: 0 1px 0 #fff;
  opacity: 0.2;
  filter: alpha(opacity=20);
}
.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.5;
  filter: alpha(opacity=50);
}
button.close {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}
.modal-open {
  overflow: hidden;
}
.modal {
  display: none;
  overflow: hidden;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1050;
  -webkit-overflow-scrolling: touch;
  outline: 0;
}
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, -25%);
  -ms-transform: translate(0, -25%);
  -o-transform: translate(0, -25%);
  transform: translate(0, -25%);
  -webkit-transition: -webkit-transform 0.3s ease-out;
  -moz-transition: -moz-transform 0.3s ease-out;
  -o-transition: -o-transform 0.3s ease-out;
  transition: transform 0.3s ease-out;
}
.modal.in .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
.modal-open .modal {
  overflow-x: hidden;
  overflow-y: auto;
}
.modal-dialog {
  position: relative;
  width: auto;
  margin: 10px;
}
.modal-content {
  position: relative;
  background-color: #fff;
  border: 1px solid #999;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  background-clip: padding-box;
  outline: 0;
}
.modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1040;
  background-color: #000;
}
.modal-backdrop.fade {
  opacity: 0;
  filter: alpha(opacity=0);
}
.modal-backdrop.in {
  opacity: 0.5;
  filter: alpha(opacity=50);
}
.modal-header {
  padding: 15px;
  border-bottom: 1px solid #e5e5e5;
}
.modal-header .close {
  margin-top: -2px;
}
.modal-title {
  margin: 0;
  line-height: 1.42857143;
}
.modal-body {
  position: relative;
  padding: 15px;
}
.modal-footer {
  padding: 15px;
  text-align: right;
  border-top: 1px solid #e5e5e5;
}
.modal-footer .btn + .btn {
  margin-left: 5px;
  margin-bottom: 0;
}
.modal-footer .btn-group .btn + .btn {
  margin-left: -1px;
}
.modal-footer .btn-block + .btn-block {
  margin-left: 0;
}
.modal-scrollbar-measure {
  position: absolute;
  top: -9999px;
  width: 50px;
  height: 50px;
  overflow: scroll;
}
@media (min-width: 768px) {
  .modal-dialog {
    width: 600px;
    margin: 30px auto;
  }
  .modal-content {
    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
  }
  .modal-sm {
    width: 300px;
  }
}
@media (min-width: 992px) {
  .modal-lg {
    width: 900px;
  }
}
.tooltip {
  position: absolute;
  z-index: 1070;
  display: block;
  font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 12px;
  opacity: 0;
  filter: alpha(opacity=0);
}
.tooltip.in {
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.tooltip.top {
  margin-top: -3px;
  padding: 5px 0;
}
.tooltip.right {
  margin-left: 3px;
  padding: 0 5px;
}
.tooltip.bottom {
  margin-top: 3px;
  padding: 5px 0;
}
.tooltip.left {
  margin-left: -3px;
  padding: 0 5px;
}
.tooltip-inner {
  max-width: 200px;
  padding: 3px 8px;
  color: #fff;
  text-align: center;
  background-color: #000;
  border-radius: 2px;
}
.tooltip-arrow {
  position: absolute;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.tooltip.top .tooltip-arrow {
  bottom: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-left .tooltip-arrow {
  bottom: 0;
  right: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-right .tooltip-arrow {
  bottom: 0;
  left: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.right .tooltip-arrow {
  top: 50%;
  left: 0;
  margin-top: -5px;
  border-width: 5px 5px 5px 0;
  border-right-color: #000;
}
.tooltip.left .tooltip-arrow {
  top: 50%;
  right: 0;
  margin-top: -5px;
  border-width: 5px 0 5px 5px;
  border-left-color: #000;
}
.tooltip.bottom .tooltip-arrow {
  top: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-left .tooltip-arrow {
  top: 0;
  right: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-right .tooltip-arrow {
  top: 0;
  left: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.popover {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1060;
  display: none;
  max-width: 276px;
  padding: 1px;
  font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 13px;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.popover.top {
  margin-top: -10px;
}
.popover.right {
  margin-left: 10px;
}
.popover.bottom {
  margin-top: 10px;
}
.popover.left {
  margin-left: -10px;
}
.popover-title {
  margin: 0;
  padding: 8px 14px;
  font-size: 13px;
  background-color: #f7f7f7;
  border-bottom: 1px solid #ebebeb;
  border-radius: 2px 2px 0 0;
}
.popover-content {
  padding: 9px 14px;
}
.popover &gt; .arrow,
.popover &gt; .arrow:after {
  position: absolute;
  display: block;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.popover &gt; .arrow {
  border-width: 11px;
}
.popover &gt; .arrow:after {
  border-width: 10px;
  content: &quot;&quot;;
}
.popover.top &gt; .arrow {
  left: 50%;
  margin-left: -11px;
  border-bottom-width: 0;
  border-top-color: #999999;
  border-top-color: rgba(0, 0, 0, 0.25);
  bottom: -11px;
}
.popover.top &gt; .arrow:after {
  content: &quot; &quot;;
  bottom: 1px;
  margin-left: -10px;
  border-bottom-width: 0;
  border-top-color: #fff;
}
.popover.right &gt; .arrow {
  top: 50%;
  left: -11px;
  margin-top: -11px;
  border-left-width: 0;
  border-right-color: #999999;
  border-right-color: rgba(0, 0, 0, 0.25);
}
.popover.right &gt; .arrow:after {
  content: &quot; &quot;;
  left: 1px;
  bottom: -10px;
  border-left-width: 0;
  border-right-color: #fff;
}
.popover.bottom &gt; .arrow {
  left: 50%;
  margin-left: -11px;
  border-top-width: 0;
  border-bottom-color: #999999;
  border-bottom-color: rgba(0, 0, 0, 0.25);
  top: -11px;
}
.popover.bottom &gt; .arrow:after {
  content: &quot; &quot;;
  top: 1px;
  margin-left: -10px;
  border-top-width: 0;
  border-bottom-color: #fff;
}
.popover.left &gt; .arrow {
  top: 50%;
  right: -11px;
  margin-top: -11px;
  border-right-width: 0;
  border-left-color: #999999;
  border-left-color: rgba(0, 0, 0, 0.25);
}
.popover.left &gt; .arrow:after {
  content: &quot; &quot;;
  right: 1px;
  border-right-width: 0;
  border-left-color: #fff;
  bottom: -10px;
}
.carousel {
  position: relative;
}
.carousel-inner {
  position: relative;
  overflow: hidden;
  width: 100%;
}
.carousel-inner &gt; .item {
  display: none;
  position: relative;
  -webkit-transition: 0.6s ease-in-out left;
  -o-transition: 0.6s ease-in-out left;
  transition: 0.6s ease-in-out left;
}
.carousel-inner &gt; .item &gt; img,
.carousel-inner &gt; .item &gt; a &gt; img {
  line-height: 1;
}
@media all and (transform-3d), (-webkit-transform-3d) {
  .carousel-inner &gt; .item {
    -webkit-transition: -webkit-transform 0.6s ease-in-out;
    -moz-transition: -moz-transform 0.6s ease-in-out;
    -o-transition: -o-transform 0.6s ease-in-out;
    transition: transform 0.6s ease-in-out;
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-perspective: 1000px;
    -moz-perspective: 1000px;
    perspective: 1000px;
  }
  .carousel-inner &gt; .item.next,
  .carousel-inner &gt; .item.active.right {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    left: 0;
  }
  .carousel-inner &gt; .item.prev,
  .carousel-inner &gt; .item.active.left {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    left: 0;
  }
  .carousel-inner &gt; .item.next.left,
  .carousel-inner &gt; .item.prev.right,
  .carousel-inner &gt; .item.active {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    left: 0;
  }
}
.carousel-inner &gt; .active,
.carousel-inner &gt; .next,
.carousel-inner &gt; .prev {
  display: block;
}
.carousel-inner &gt; .active {
  left: 0;
}
.carousel-inner &gt; .next,
.carousel-inner &gt; .prev {
  position: absolute;
  top: 0;
  width: 100%;
}
.carousel-inner &gt; .next {
  left: 100%;
}
.carousel-inner &gt; .prev {
  left: -100%;
}
.carousel-inner &gt; .next.left,
.carousel-inner &gt; .prev.right {
  left: 0;
}
.carousel-inner &gt; .active.left {
  left: -100%;
}
.carousel-inner &gt; .active.right {
  left: 100%;
}
.carousel-control {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 15%;
  opacity: 0.5;
  filter: alpha(opacity=50);
  font-size: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
  background-color: rgba(0, 0, 0, 0);
}
.carousel-control.left {
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
}
.carousel-control.right {
  left: auto;
  right: 0;
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
}
.carousel-control:hover,
.carousel-control:focus {
  outline: 0;
  color: #fff;
  text-decoration: none;
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.carousel-control .icon-prev,
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
  position: absolute;
  top: 50%;
  margin-top: -10px;
  z-index: 5;
  display: inline-block;
}
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
  left: 50%;
  margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
  right: 50%;
  margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
  width: 20px;
  height: 20px;
  line-height: 1;
  font-family: serif;
}
.carousel-control .icon-prev:before {
  content: '\2039';
}
.carousel-control .icon-next:before {
  content: '\203a';
}
.carousel-indicators {
  position: absolute;
  bottom: 10px;
  left: 50%;
  z-index: 15;
  width: 60%;
  margin-left: -30%;
  padding-left: 0;
  list-style: none;
  text-align: center;
}
.carousel-indicators li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 1px;
  text-indent: -999px;
  border: 1px solid #fff;
  border-radius: 10px;
  cursor: pointer;
  background-color: #000 \9;
  background-color: rgba(0, 0, 0, 0);
}
.carousel-indicators .active {
  margin: 0;
  width: 12px;
  height: 12px;
  background-color: #fff;
}
.carousel-caption {
  position: absolute;
  left: 15%;
  right: 15%;
  bottom: 20px;
  z-index: 10;
  padding-top: 20px;
  padding-bottom: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.carousel-caption .btn {
  text-shadow: none;
}
@media screen and (min-width: 768px) {
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-prev,
  .carousel-control .icon-next {
    width: 30px;
    height: 30px;
    margin-top: -10px;
    font-size: 30px;
  }
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .icon-prev {
    margin-left: -10px;
  }
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-next {
    margin-right: -10px;
  }
  .carousel-caption {
    left: 20%;
    right: 20%;
    padding-bottom: 30px;
  }
  .carousel-indicators {
    bottom: 20px;
  }
}
.clearfix:before,
.clearfix:after,
.dl-horizontal dd:before,
.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
.container-fluid:after,
.row:before,
.row:after,
.form-horizontal .form-group:before,
.form-horizontal .form-group:after,
.btn-toolbar:before,
.btn-toolbar:after,
.btn-group-vertical &gt; .btn-group:before,
.btn-group-vertical &gt; .btn-group:after,
.nav:before,
.nav:after,
.navbar:before,
.navbar:after,
.navbar-header:before,
.navbar-header:after,
.navbar-collapse:before,
.navbar-collapse:after,
.pager:before,
.pager:after,
.panel-body:before,
.panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before,
.modal-footer:after,
.item_buttons:before,
.item_buttons:after {
  content: &quot; &quot;;
  display: table;
}
.clearfix:after,
.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
.form-horizontal .form-group:after,
.btn-toolbar:after,
.btn-group-vertical &gt; .btn-group:after,
.nav:after,
.navbar:after,
.navbar-header:after,
.navbar-collapse:after,
.pager:after,
.panel-body:after,
.modal-header:after,
.modal-footer:after,
.item_buttons:after {
  clear: both;
}
.center-block {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.pull-right {
  float: right !important;
}
.pull-left {
  float: left !important;
}
.hide {
  display: none !important;
}
.show {
  display: block !important;
}
.invisible {
  visibility: hidden;
}
.text-hide {
  font: 0/0 a;
  color: transparent;
  text-shadow: none;
  background-color: transparent;
  border: 0;
}
.hidden {
  display: none !important;
}
.affix {
  position: fixed;
}
@-ms-viewport {
  width: device-width;
}
.visible-xs,
.visible-sm,
.visible-md,
.visible-lg {
  display: none !important;
}
.visible-xs-block,
.visible-xs-inline,
.visible-xs-inline-block,
.visible-sm-block,
.visible-sm-inline,
.visible-sm-inline-block,
.visible-md-block,
.visible-md-inline,
.visible-md-inline-block,
.visible-lg-block,
.visible-lg-inline,
.visible-lg-inline-block {
  display: none !important;
}
@media (max-width: 767px) {
  .visible-xs {
    display: block !important;
  }
  table.visible-xs {
    display: table !important;
  }
  tr.visible-xs {
    display: table-row !important;
  }
  th.visible-xs,
  td.visible-xs {
    display: table-cell !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-block {
    display: block !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline {
    display: inline !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm {
    display: block !important;
  }
  table.visible-sm {
    display: table !important;
  }
  tr.visible-sm {
    display: table-row !important;
  }
  th.visible-sm,
  td.visible-sm {
    display: table-cell !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-block {
    display: block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline {
    display: inline !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md {
    display: block !important;
  }
  table.visible-md {
    display: table !important;
  }
  tr.visible-md {
    display: table-row !important;
  }
  th.visible-md,
  td.visible-md {
    display: table-cell !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-block {
    display: block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline {
    display: inline !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg {
    display: block !important;
  }
  table.visible-lg {
    display: table !important;
  }
  tr.visible-lg {
    display: table-row !important;
  }
  th.visible-lg,
  td.visible-lg {
    display: table-cell !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-block {
    display: block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline {
    display: inline !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline-block {
    display: inline-block !important;
  }
}
@media (max-width: 767px) {
  .hidden-xs {
    display: none !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .hidden-sm {
    display: none !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .hidden-md {
    display: none !important;
  }
}
@media (min-width: 1200px) {
  .hidden-lg {
    display: none !important;
  }
}
.visible-print {
  display: none !important;
}
@media print {
  .visible-print {
    display: block !important;
  }
  table.visible-print {
    display: table !important;
  }
  tr.visible-print {
    display: table-row !important;
  }
  th.visible-print,
  td.visible-print {
    display: table-cell !important;
  }
}
.visible-print-block {
  display: none !important;
}
@media print {
  .visible-print-block {
    display: block !important;
  }
}
.visible-print-inline {
  display: none !important;
}
@media print {
  .visible-print-inline {
    display: inline !important;
  }
}
.visible-print-inline-block {
  display: none !important;
}
@media print {
  .visible-print-inline-block {
    display: inline-block !important;
  }
}
@media print {
  .hidden-print {
    display: none !important;
  }
}
/*!
*
* Font Awesome
*
*/
/*!
 *  Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'FontAwesome';
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&amp;v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -15%;
}
.fa-2x {
  font-size: 2em;
}
.fa-3x {
  font-size: 3em;
}
.fa-4x {
  font-size: 4em;
}
.fa-5x {
  font-size: 5em;
}
.fa-fw {
  width: 1.28571429em;
  text-align: center;
}
.fa-ul {
  padding-left: 0;
  margin-left: 2.14285714em;
  list-style-type: none;
}
.fa-ul &gt; li {
  position: relative;
}
.fa-li {
  position: absolute;
  left: -2.14285714em;
  width: 2.14285714em;
  top: 0.14285714em;
  text-align: center;
}
.fa-li.fa-lg {
  left: -1.85714286em;
}
.fa-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eee;
  border-radius: .1em;
}
.pull-right {
  float: right;
}
.pull-left {
  float: left;
}
.fa.pull-left {
  margin-right: .3em;
}
.fa.pull-right {
  margin-left: .3em;
}
.fa-spin {
  -webkit-animation: fa-spin 2s infinite linear;
  animation: fa-spin 2s infinite linear;
}
@-webkit-keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
@keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.fa-rotate-90 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.fa-rotate-180 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.fa-rotate-270 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}
.fa-flip-horizontal {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.fa-flip-vertical {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
  filter: none;
}
.fa-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}
.fa-stack-1x {
  line-height: inherit;
}
.fa-stack-2x {
  font-size: 2em;
}
.fa-inverse {
  color: #fff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.fa-glass:before {
  content: &quot;\f000&quot;;
}
.fa-music:before {
  content: &quot;\f001&quot;;
}
.fa-search:before {
  content: &quot;\f002&quot;;
}
.fa-envelope-o:before {
  content: &quot;\f003&quot;;
}
.fa-heart:before {
  content: &quot;\f004&quot;;
}
.fa-star:before {
  content: &quot;\f005&quot;;
}
.fa-star-o:before {
  content: &quot;\f006&quot;;
}
.fa-user:before {
  content: &quot;\f007&quot;;
}
.fa-film:before {
  content: &quot;\f008&quot;;
}
.fa-th-large:before {
  content: &quot;\f009&quot;;
}
.fa-th:before {
  content: &quot;\f00a&quot;;
}
.fa-th-list:before {
  content: &quot;\f00b&quot;;
}
.fa-check:before {
  content: &quot;\f00c&quot;;
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
  content: &quot;\f00d&quot;;
}
.fa-search-plus:before {
  content: &quot;\f00e&quot;;
}
.fa-search-minus:before {
  content: &quot;\f010&quot;;
}
.fa-power-off:before {
  content: &quot;\f011&quot;;
}
.fa-signal:before {
  content: &quot;\f012&quot;;
}
.fa-gear:before,
.fa-cog:before {
  content: &quot;\f013&quot;;
}
.fa-trash-o:before {
  content: &quot;\f014&quot;;
}
.fa-home:before {
  content: &quot;\f015&quot;;
}
.fa-file-o:before {
  content: &quot;\f016&quot;;
}
.fa-clock-o:before {
  content: &quot;\f017&quot;;
}
.fa-road:before {
  content: &quot;\f018&quot;;
}
.fa-download:before {
  content: &quot;\f019&quot;;
}
.fa-arrow-circle-o-down:before {
  content: &quot;\f01a&quot;;
}
.fa-arrow-circle-o-up:before {
  content: &quot;\f01b&quot;;
}
.fa-inbox:before {
  content: &quot;\f01c&quot;;
}
.fa-play-circle-o:before {
  content: &quot;\f01d&quot;;
}
.fa-rotate-right:before,
.fa-repeat:before {
  content: &quot;\f01e&quot;;
}
.fa-refresh:before {
  content: &quot;\f021&quot;;
}
.fa-list-alt:before {
  content: &quot;\f022&quot;;
}
.fa-lock:before {
  content: &quot;\f023&quot;;
}
.fa-flag:before {
  content: &quot;\f024&quot;;
}
.fa-headphones:before {
  content: &quot;\f025&quot;;
}
.fa-volume-off:before {
  content: &quot;\f026&quot;;
}
.fa-volume-down:before {
  content: &quot;\f027&quot;;
}
.fa-volume-up:before {
  content: &quot;\f028&quot;;
}
.fa-qrcode:before {
  content: &quot;\f029&quot;;
}
.fa-barcode:before {
  content: &quot;\f02a&quot;;
}
.fa-tag:before {
  content: &quot;\f02b&quot;;
}
.fa-tags:before {
  content: &quot;\f02c&quot;;
}
.fa-book:before {
  content: &quot;\f02d&quot;;
}
.fa-bookmark:before {
  content: &quot;\f02e&quot;;
}
.fa-print:before {
  content: &quot;\f02f&quot;;
}
.fa-camera:before {
  content: &quot;\f030&quot;;
}
.fa-font:before {
  content: &quot;\f031&quot;;
}
.fa-bold:before {
  content: &quot;\f032&quot;;
}
.fa-italic:before {
  content: &quot;\f033&quot;;
}
.fa-text-height:before {
  content: &quot;\f034&quot;;
}
.fa-text-width:before {
  content: &quot;\f035&quot;;
}
.fa-align-left:before {
  content: &quot;\f036&quot;;
}
.fa-align-center:before {
  content: &quot;\f037&quot;;
}
.fa-align-right:before {
  content: &quot;\f038&quot;;
}
.fa-align-justify:before {
  content: &quot;\f039&quot;;
}
.fa-list:before {
  content: &quot;\f03a&quot;;
}
.fa-dedent:before,
.fa-outdent:before {
  content: &quot;\f03b&quot;;
}
.fa-indent:before {
  content: &quot;\f03c&quot;;
}
.fa-video-camera:before {
  content: &quot;\f03d&quot;;
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
  content: &quot;\f03e&quot;;
}
.fa-pencil:before {
  content: &quot;\f040&quot;;
}
.fa-map-marker:before {
  content: &quot;\f041&quot;;
}
.fa-adjust:before {
  content: &quot;\f042&quot;;
}
.fa-tint:before {
  content: &quot;\f043&quot;;
}
.fa-edit:before,
.fa-pencil-square-o:before {
  content: &quot;\f044&quot;;
}
.fa-share-square-o:before {
  content: &quot;\f045&quot;;
}
.fa-check-square-o:before {
  content: &quot;\f046&quot;;
}
.fa-arrows:before {
  content: &quot;\f047&quot;;
}
.fa-step-backward:before {
  content: &quot;\f048&quot;;
}
.fa-fast-backward:before {
  content: &quot;\f049&quot;;
}
.fa-backward:before {
  content: &quot;\f04a&quot;;
}
.fa-play:before {
  content: &quot;\f04b&quot;;
}
.fa-pause:before {
  content: &quot;\f04c&quot;;
}
.fa-stop:before {
  content: &quot;\f04d&quot;;
}
.fa-forward:before {
  content: &quot;\f04e&quot;;
}
.fa-fast-forward:before {
  content: &quot;\f050&quot;;
}
.fa-step-forward:before {
  content: &quot;\f051&quot;;
}
.fa-eject:before {
  content: &quot;\f052&quot;;
}
.fa-chevron-left:before {
  content: &quot;\f053&quot;;
}
.fa-chevron-right:before {
  content: &quot;\f054&quot;;
}
.fa-plus-circle:before {
  content: &quot;\f055&quot;;
}
.fa-minus-circle:before {
  content: &quot;\f056&quot;;
}
.fa-times-circle:before {
  content: &quot;\f057&quot;;
}
.fa-check-circle:before {
  content: &quot;\f058&quot;;
}
.fa-question-circle:before {
  content: &quot;\f059&quot;;
}
.fa-info-circle:before {
  content: &quot;\f05a&quot;;
}
.fa-crosshairs:before {
  content: &quot;\f05b&quot;;
}
.fa-times-circle-o:before {
  content: &quot;\f05c&quot;;
}
.fa-check-circle-o:before {
  content: &quot;\f05d&quot;;
}
.fa-ban:before {
  content: &quot;\f05e&quot;;
}
.fa-arrow-left:before {
  content: &quot;\f060&quot;;
}
.fa-arrow-right:before {
  content: &quot;\f061&quot;;
}
.fa-arrow-up:before {
  content: &quot;\f062&quot;;
}
.fa-arrow-down:before {
  content: &quot;\f063&quot;;
}
.fa-mail-forward:before,
.fa-share:before {
  content: &quot;\f064&quot;;
}
.fa-expand:before {
  content: &quot;\f065&quot;;
}
.fa-compress:before {
  content: &quot;\f066&quot;;
}
.fa-plus:before {
  content: &quot;\f067&quot;;
}
.fa-minus:before {
  content: &quot;\f068&quot;;
}
.fa-asterisk:before {
  content: &quot;\f069&quot;;
}
.fa-exclamation-circle:before {
  content: &quot;\f06a&quot;;
}
.fa-gift:before {
  content: &quot;\f06b&quot;;
}
.fa-leaf:before {
  content: &quot;\f06c&quot;;
}
.fa-fire:before {
  content: &quot;\f06d&quot;;
}
.fa-eye:before {
  content: &quot;\f06e&quot;;
}
.fa-eye-slash:before {
  content: &quot;\f070&quot;;
}
.fa-warning:before,
.fa-exclamation-triangle:before {
  content: &quot;\f071&quot;;
}
.fa-plane:before {
  content: &quot;\f072&quot;;
}
.fa-calendar:before {
  content: &quot;\f073&quot;;
}
.fa-random:before {
  content: &quot;\f074&quot;;
}
.fa-comment:before {
  content: &quot;\f075&quot;;
}
.fa-magnet:before {
  content: &quot;\f076&quot;;
}
.fa-chevron-up:before {
  content: &quot;\f077&quot;;
}
.fa-chevron-down:before {
  content: &quot;\f078&quot;;
}
.fa-retweet:before {
  content: &quot;\f079&quot;;
}
.fa-shopping-cart:before {
  content: &quot;\f07a&quot;;
}
.fa-folder:before {
  content: &quot;\f07b&quot;;
}
.fa-folder-open:before {
  content: &quot;\f07c&quot;;
}
.fa-arrows-v:before {
  content: &quot;\f07d&quot;;
}
.fa-arrows-h:before {
  content: &quot;\f07e&quot;;
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
  content: &quot;\f080&quot;;
}
.fa-twitter-square:before {
  content: &quot;\f081&quot;;
}
.fa-facebook-square:before {
  content: &quot;\f082&quot;;
}
.fa-camera-retro:before {
  content: &quot;\f083&quot;;
}
.fa-key:before {
  content: &quot;\f084&quot;;
}
.fa-gears:before,
.fa-cogs:before {
  content: &quot;\f085&quot;;
}
.fa-comments:before {
  content: &quot;\f086&quot;;
}
.fa-thumbs-o-up:before {
  content: &quot;\f087&quot;;
}
.fa-thumbs-o-down:before {
  content: &quot;\f088&quot;;
}
.fa-star-half:before {
  content: &quot;\f089&quot;;
}
.fa-heart-o:before {
  content: &quot;\f08a&quot;;
}
.fa-sign-out:before {
  content: &quot;\f08b&quot;;
}
.fa-linkedin-square:before {
  content: &quot;\f08c&quot;;
}
.fa-thumb-tack:before {
  content: &quot;\f08d&quot;;
}
.fa-external-link:before {
  content: &quot;\f08e&quot;;
}
.fa-sign-in:before {
  content: &quot;\f090&quot;;
}
.fa-trophy:before {
  content: &quot;\f091&quot;;
}
.fa-github-square:before {
  content: &quot;\f092&quot;;
}
.fa-upload:before {
  content: &quot;\f093&quot;;
}
.fa-lemon-o:before {
  content: &quot;\f094&quot;;
}
.fa-phone:before {
  content: &quot;\f095&quot;;
}
.fa-square-o:before {
  content: &quot;\f096&quot;;
}
.fa-bookmark-o:before {
  content: &quot;\f097&quot;;
}
.fa-phone-square:before {
  content: &quot;\f098&quot;;
}
.fa-twitter:before {
  content: &quot;\f099&quot;;
}
.fa-facebook:before {
  content: &quot;\f09a&quot;;
}
.fa-github:before {
  content: &quot;\f09b&quot;;
}
.fa-unlock:before {
  content: &quot;\f09c&quot;;
}
.fa-credit-card:before {
  content: &quot;\f09d&quot;;
}
.fa-rss:before {
  content: &quot;\f09e&quot;;
}
.fa-hdd-o:before {
  content: &quot;\f0a0&quot;;
}
.fa-bullhorn:before {
  content: &quot;\f0a1&quot;;
}
.fa-bell:before {
  content: &quot;\f0f3&quot;;
}
.fa-certificate:before {
  content: &quot;\f0a3&quot;;
}
.fa-hand-o-right:before {
  content: &quot;\f0a4&quot;;
}
.fa-hand-o-left:before {
  content: &quot;\f0a5&quot;;
}
.fa-hand-o-up:before {
  content: &quot;\f0a6&quot;;
}
.fa-hand-o-down:before {
  content: &quot;\f0a7&quot;;
}
.fa-arrow-circle-left:before {
  content: &quot;\f0a8&quot;;
}
.fa-arrow-circle-right:before {
  content: &quot;\f0a9&quot;;
}
.fa-arrow-circle-up:before {
  content: &quot;\f0aa&quot;;
}
.fa-arrow-circle-down:before {
  content: &quot;\f0ab&quot;;
}
.fa-globe:before {
  content: &quot;\f0ac&quot;;
}
.fa-wrench:before {
  content: &quot;\f0ad&quot;;
}
.fa-tasks:before {
  content: &quot;\f0ae&quot;;
}
.fa-filter:before {
  content: &quot;\f0b0&quot;;
}
.fa-briefcase:before {
  content: &quot;\f0b1&quot;;
}
.fa-arrows-alt:before {
  content: &quot;\f0b2&quot;;
}
.fa-group:before,
.fa-users:before {
  content: &quot;\f0c0&quot;;
}
.fa-chain:before,
.fa-link:before {
  content: &quot;\f0c1&quot;;
}
.fa-cloud:before {
  content: &quot;\f0c2&quot;;
}
.fa-flask:before {
  content: &quot;\f0c3&quot;;
}
.fa-cut:before,
.fa-scissors:before {
  content: &quot;\f0c4&quot;;
}
.fa-copy:before,
.fa-files-o:before {
  content: &quot;\f0c5&quot;;
}
.fa-paperclip:before {
  content: &quot;\f0c6&quot;;
}
.fa-save:before,
.fa-floppy-o:before {
  content: &quot;\f0c7&quot;;
}
.fa-square:before {
  content: &quot;\f0c8&quot;;
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
  content: &quot;\f0c9&quot;;
}
.fa-list-ul:before {
  content: &quot;\f0ca&quot;;
}
.fa-list-ol:before {
  content: &quot;\f0cb&quot;;
}
.fa-strikethrough:before {
  content: &quot;\f0cc&quot;;
}
.fa-underline:before {
  content: &quot;\f0cd&quot;;
}
.fa-table:before {
  content: &quot;\f0ce&quot;;
}
.fa-magic:before {
  content: &quot;\f0d0&quot;;
}
.fa-truck:before {
  content: &quot;\f0d1&quot;;
}
.fa-pinterest:before {
  content: &quot;\f0d2&quot;;
}
.fa-pinterest-square:before {
  content: &quot;\f0d3&quot;;
}
.fa-google-plus-square:before {
  content: &quot;\f0d4&quot;;
}
.fa-google-plus:before {
  content: &quot;\f0d5&quot;;
}
.fa-money:before {
  content: &quot;\f0d6&quot;;
}
.fa-caret-down:before {
  content: &quot;\f0d7&quot;;
}
.fa-caret-up:before {
  content: &quot;\f0d8&quot;;
}
.fa-caret-left:before {
  content: &quot;\f0d9&quot;;
}
.fa-caret-right:before {
  content: &quot;\f0da&quot;;
}
.fa-columns:before {
  content: &quot;\f0db&quot;;
}
.fa-unsorted:before,
.fa-sort:before {
  content: &quot;\f0dc&quot;;
}
.fa-sort-down:before,
.fa-sort-desc:before {
  content: &quot;\f0dd&quot;;
}
.fa-sort-up:before,
.fa-sort-asc:before {
  content: &quot;\f0de&quot;;
}
.fa-envelope:before {
  content: &quot;\f0e0&quot;;
}
.fa-linkedin:before {
  content: &quot;\f0e1&quot;;
}
.fa-rotate-left:before,
.fa-undo:before {
  content: &quot;\f0e2&quot;;
}
.fa-legal:before,
.fa-gavel:before {
  content: &quot;\f0e3&quot;;
}
.fa-dashboard:before,
.fa-tachometer:before {
  content: &quot;\f0e4&quot;;
}
.fa-comment-o:before {
  content: &quot;\f0e5&quot;;
}
.fa-comments-o:before {
  content: &quot;\f0e6&quot;;
}
.fa-flash:before,
.fa-bolt:before {
  content: &quot;\f0e7&quot;;
}
.fa-sitemap:before {
  content: &quot;\f0e8&quot;;
}
.fa-umbrella:before {
  content: &quot;\f0e9&quot;;
}
.fa-paste:before,
.fa-clipboard:before {
  content: &quot;\f0ea&quot;;
}
.fa-lightbulb-o:before {
  content: &quot;\f0eb&quot;;
}
.fa-exchange:before {
  content: &quot;\f0ec&quot;;
}
.fa-cloud-download:before {
  content: &quot;\f0ed&quot;;
}
.fa-cloud-upload:before {
  content: &quot;\f0ee&quot;;
}
.fa-user-md:before {
  content: &quot;\f0f0&quot;;
}
.fa-stethoscope:before {
  content: &quot;\f0f1&quot;;
}
.fa-suitcase:before {
  content: &quot;\f0f2&quot;;
}
.fa-bell-o:before {
  content: &quot;\f0a2&quot;;
}
.fa-coffee:before {
  content: &quot;\f0f4&quot;;
}
.fa-cutlery:before {
  content: &quot;\f0f5&quot;;
}
.fa-file-text-o:before {
  content: &quot;\f0f6&quot;;
}
.fa-building-o:before {
  content: &quot;\f0f7&quot;;
}
.fa-hospital-o:before {
  content: &quot;\f0f8&quot;;
}
.fa-ambulance:before {
  content: &quot;\f0f9&quot;;
}
.fa-medkit:before {
  content: &quot;\f0fa&quot;;
}
.fa-fighter-jet:before {
  content: &quot;\f0fb&quot;;
}
.fa-beer:before {
  content: &quot;\f0fc&quot;;
}
.fa-h-square:before {
  content: &quot;\f0fd&quot;;
}
.fa-plus-square:before {
  content: &quot;\f0fe&quot;;
}
.fa-angle-double-left:before {
  content: &quot;\f100&quot;;
}
.fa-angle-double-right:before {
  content: &quot;\f101&quot;;
}
.fa-angle-double-up:before {
  content: &quot;\f102&quot;;
}
.fa-angle-double-down:before {
  content: &quot;\f103&quot;;
}
.fa-angle-left:before {
  content: &quot;\f104&quot;;
}
.fa-angle-right:before {
  content: &quot;\f105&quot;;
}
.fa-angle-up:before {
  content: &quot;\f106&quot;;
}
.fa-angle-down:before {
  content: &quot;\f107&quot;;
}
.fa-desktop:before {
  content: &quot;\f108&quot;;
}
.fa-laptop:before {
  content: &quot;\f109&quot;;
}
.fa-tablet:before {
  content: &quot;\f10a&quot;;
}
.fa-mobile-phone:before,
.fa-mobile:before {
  content: &quot;\f10b&quot;;
}
.fa-circle-o:before {
  content: &quot;\f10c&quot;;
}
.fa-quote-left:before {
  content: &quot;\f10d&quot;;
}
.fa-quote-right:before {
  content: &quot;\f10e&quot;;
}
.fa-spinner:before {
  content: &quot;\f110&quot;;
}
.fa-circle:before {
  content: &quot;\f111&quot;;
}
.fa-mail-reply:before,
.fa-reply:before {
  content: &quot;\f112&quot;;
}
.fa-github-alt:before {
  content: &quot;\f113&quot;;
}
.fa-folder-o:before {
  content: &quot;\f114&quot;;
}
.fa-folder-open-o:before {
  content: &quot;\f115&quot;;
}
.fa-smile-o:before {
  content: &quot;\f118&quot;;
}
.fa-frown-o:before {
  content: &quot;\f119&quot;;
}
.fa-meh-o:before {
  content: &quot;\f11a&quot;;
}
.fa-gamepad:before {
  content: &quot;\f11b&quot;;
}
.fa-keyboard-o:before {
  content: &quot;\f11c&quot;;
}
.fa-flag-o:before {
  content: &quot;\f11d&quot;;
}
.fa-flag-checkered:before {
  content: &quot;\f11e&quot;;
}
.fa-terminal:before {
  content: &quot;\f120&quot;;
}
.fa-code:before {
  content: &quot;\f121&quot;;
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
  content: &quot;\f122&quot;;
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
  content: &quot;\f123&quot;;
}
.fa-location-arrow:before {
  content: &quot;\f124&quot;;
}
.fa-crop:before {
  content: &quot;\f125&quot;;
}
.fa-code-fork:before {
  content: &quot;\f126&quot;;
}
.fa-unlink:before,
.fa-chain-broken:before {
  content: &quot;\f127&quot;;
}
.fa-question:before {
  content: &quot;\f128&quot;;
}
.fa-info:before {
  content: &quot;\f129&quot;;
}
.fa-exclamation:before {
  content: &quot;\f12a&quot;;
}
.fa-superscript:before {
  content: &quot;\f12b&quot;;
}
.fa-subscript:before {
  content: &quot;\f12c&quot;;
}
.fa-eraser:before {
  content: &quot;\f12d&quot;;
}
.fa-puzzle-piece:before {
  content: &quot;\f12e&quot;;
}
.fa-microphone:before {
  content: &quot;\f130&quot;;
}
.fa-microphone-slash:before {
  content: &quot;\f131&quot;;
}
.fa-shield:before {
  content: &quot;\f132&quot;;
}
.fa-calendar-o:before {
  content: &quot;\f133&quot;;
}
.fa-fire-extinguisher:before {
  content: &quot;\f134&quot;;
}
.fa-rocket:before {
  content: &quot;\f135&quot;;
}
.fa-maxcdn:before {
  content: &quot;\f136&quot;;
}
.fa-chevron-circle-left:before {
  content: &quot;\f137&quot;;
}
.fa-chevron-circle-right:before {
  content: &quot;\f138&quot;;
}
.fa-chevron-circle-up:before {
  content: &quot;\f139&quot;;
}
.fa-chevron-circle-down:before {
  content: &quot;\f13a&quot;;
}
.fa-html5:before {
  content: &quot;\f13b&quot;;
}
.fa-css3:before {
  content: &quot;\f13c&quot;;
}
.fa-anchor:before {
  content: &quot;\f13d&quot;;
}
.fa-unlock-alt:before {
  content: &quot;\f13e&quot;;
}
.fa-bullseye:before {
  content: &quot;\f140&quot;;
}
.fa-ellipsis-h:before {
  content: &quot;\f141&quot;;
}
.fa-ellipsis-v:before {
  content: &quot;\f142&quot;;
}
.fa-rss-square:before {
  content: &quot;\f143&quot;;
}
.fa-play-circle:before {
  content: &quot;\f144&quot;;
}
.fa-ticket:before {
  content: &quot;\f145&quot;;
}
.fa-minus-square:before {
  content: &quot;\f146&quot;;
}
.fa-minus-square-o:before {
  content: &quot;\f147&quot;;
}
.fa-level-up:before {
  content: &quot;\f148&quot;;
}
.fa-level-down:before {
  content: &quot;\f149&quot;;
}
.fa-check-square:before {
  content: &quot;\f14a&quot;;
}
.fa-pencil-square:before {
  content: &quot;\f14b&quot;;
}
.fa-external-link-square:before {
  content: &quot;\f14c&quot;;
}
.fa-share-square:before {
  content: &quot;\f14d&quot;;
}
.fa-compass:before {
  content: &quot;\f14e&quot;;
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
  content: &quot;\f150&quot;;
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
  content: &quot;\f151&quot;;
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
  content: &quot;\f152&quot;;
}
.fa-euro:before,
.fa-eur:before {
  content: &quot;\f153&quot;;
}
.fa-gbp:before {
  content: &quot;\f154&quot;;
}
.fa-dollar:before,
.fa-usd:before {
  content: &quot;\f155&quot;;
}
.fa-rupee:before,
.fa-inr:before {
  content: &quot;\f156&quot;;
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
  content: &quot;\f157&quot;;
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
  content: &quot;\f158&quot;;
}
.fa-won:before,
.fa-krw:before {
  content: &quot;\f159&quot;;
}
.fa-bitcoin:before,
.fa-btc:before {
  content: &quot;\f15a&quot;;
}
.fa-file:before {
  content: &quot;\f15b&quot;;
}
.fa-file-text:before {
  content: &quot;\f15c&quot;;
}
.fa-sort-alpha-asc:before {
  content: &quot;\f15d&quot;;
}
.fa-sort-alpha-desc:before {
  content: &quot;\f15e&quot;;
}
.fa-sort-amount-asc:before {
  content: &quot;\f160&quot;;
}
.fa-sort-amount-desc:before {
  content: &quot;\f161&quot;;
}
.fa-sort-numeric-asc:before {
  content: &quot;\f162&quot;;
}
.fa-sort-numeric-desc:before {
  content: &quot;\f163&quot;;
}
.fa-thumbs-up:before {
  content: &quot;\f164&quot;;
}
.fa-thumbs-down:before {
  content: &quot;\f165&quot;;
}
.fa-youtube-square:before {
  content: &quot;\f166&quot;;
}
.fa-youtube:before {
  content: &quot;\f167&quot;;
}
.fa-xing:before {
  content: &quot;\f168&quot;;
}
.fa-xing-square:before {
  content: &quot;\f169&quot;;
}
.fa-youtube-play:before {
  content: &quot;\f16a&quot;;
}
.fa-dropbox:before {
  content: &quot;\f16b&quot;;
}
.fa-stack-overflow:before {
  content: &quot;\f16c&quot;;
}
.fa-instagram:before {
  content: &quot;\f16d&quot;;
}
.fa-flickr:before {
  content: &quot;\f16e&quot;;
}
.fa-adn:before {
  content: &quot;\f170&quot;;
}
.fa-bitbucket:before {
  content: &quot;\f171&quot;;
}
.fa-bitbucket-square:before {
  content: &quot;\f172&quot;;
}
.fa-tumblr:before {
  content: &quot;\f173&quot;;
}
.fa-tumblr-square:before {
  content: &quot;\f174&quot;;
}
.fa-long-arrow-down:before {
  content: &quot;\f175&quot;;
}
.fa-long-arrow-up:before {
  content: &quot;\f176&quot;;
}
.fa-long-arrow-left:before {
  content: &quot;\f177&quot;;
}
.fa-long-arrow-right:before {
  content: &quot;\f178&quot;;
}
.fa-apple:before {
  content: &quot;\f179&quot;;
}
.fa-windows:before {
  content: &quot;\f17a&quot;;
}
.fa-android:before {
  content: &quot;\f17b&quot;;
}
.fa-linux:before {
  content: &quot;\f17c&quot;;
}
.fa-dribbble:before {
  content: &quot;\f17d&quot;;
}
.fa-skype:before {
  content: &quot;\f17e&quot;;
}
.fa-foursquare:before {
  content: &quot;\f180&quot;;
}
.fa-trello:before {
  content: &quot;\f181&quot;;
}
.fa-female:before {
  content: &quot;\f182&quot;;
}
.fa-male:before {
  content: &quot;\f183&quot;;
}
.fa-gittip:before {
  content: &quot;\f184&quot;;
}
.fa-sun-o:before {
  content: &quot;\f185&quot;;
}
.fa-moon-o:before {
  content: &quot;\f186&quot;;
}
.fa-archive:before {
  content: &quot;\f187&quot;;
}
.fa-bug:before {
  content: &quot;\f188&quot;;
}
.fa-vk:before {
  content: &quot;\f189&quot;;
}
.fa-weibo:before {
  content: &quot;\f18a&quot;;
}
.fa-renren:before {
  content: &quot;\f18b&quot;;
}
.fa-pagelines:before {
  content: &quot;\f18c&quot;;
}
.fa-stack-exchange:before {
  content: &quot;\f18d&quot;;
}
.fa-arrow-circle-o-right:before {
  content: &quot;\f18e&quot;;
}
.fa-arrow-circle-o-left:before {
  content: &quot;\f190&quot;;
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
  content: &quot;\f191&quot;;
}
.fa-dot-circle-o:before {
  content: &quot;\f192&quot;;
}
.fa-wheelchair:before {
  content: &quot;\f193&quot;;
}
.fa-vimeo-square:before {
  content: &quot;\f194&quot;;
}
.fa-turkish-lira:before,
.fa-try:before {
  content: &quot;\f195&quot;;
}
.fa-plus-square-o:before {
  content: &quot;\f196&quot;;
}
.fa-space-shuttle:before {
  content: &quot;\f197&quot;;
}
.fa-slack:before {
  content: &quot;\f198&quot;;
}
.fa-envelope-square:before {
  content: &quot;\f199&quot;;
}
.fa-wordpress:before {
  content: &quot;\f19a&quot;;
}
.fa-openid:before {
  content: &quot;\f19b&quot;;
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
  content: &quot;\f19c&quot;;
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
  content: &quot;\f19d&quot;;
}
.fa-yahoo:before {
  content: &quot;\f19e&quot;;
}
.fa-google:before {
  content: &quot;\f1a0&quot;;
}
.fa-reddit:before {
  content: &quot;\f1a1&quot;;
}
.fa-reddit-square:before {
  content: &quot;\f1a2&quot;;
}
.fa-stumbleupon-circle:before {
  content: &quot;\f1a3&quot;;
}
.fa-stumbleupon:before {
  content: &quot;\f1a4&quot;;
}
.fa-delicious:before {
  content: &quot;\f1a5&quot;;
}
.fa-digg:before {
  content: &quot;\f1a6&quot;;
}
.fa-pied-piper:before {
  content: &quot;\f1a7&quot;;
}
.fa-pied-piper-alt:before {
  content: &quot;\f1a8&quot;;
}
.fa-drupal:before {
  content: &quot;\f1a9&quot;;
}
.fa-joomla:before {
  content: &quot;\f1aa&quot;;
}
.fa-language:before {
  content: &quot;\f1ab&quot;;
}
.fa-fax:before {
  content: &quot;\f1ac&quot;;
}
.fa-building:before {
  content: &quot;\f1ad&quot;;
}
.fa-child:before {
  content: &quot;\f1ae&quot;;
}
.fa-paw:before {
  content: &quot;\f1b0&quot;;
}
.fa-spoon:before {
  content: &quot;\f1b1&quot;;
}
.fa-cube:before {
  content: &quot;\f1b2&quot;;
}
.fa-cubes:before {
  content: &quot;\f1b3&quot;;
}
.fa-behance:before {
  content: &quot;\f1b4&quot;;
}
.fa-behance-square:before {
  content: &quot;\f1b5&quot;;
}
.fa-steam:before {
  content: &quot;\f1b6&quot;;
}
.fa-steam-square:before {
  content: &quot;\f1b7&quot;;
}
.fa-recycle:before {
  content: &quot;\f1b8&quot;;
}
.fa-automobile:before,
.fa-car:before {
  content: &quot;\f1b9&quot;;
}
.fa-cab:before,
.fa-taxi:before {
  content: &quot;\f1ba&quot;;
}
.fa-tree:before {
  content: &quot;\f1bb&quot;;
}
.fa-spotify:before {
  content: &quot;\f1bc&quot;;
}
.fa-deviantart:before {
  content: &quot;\f1bd&quot;;
}
.fa-soundcloud:before {
  content: &quot;\f1be&quot;;
}
.fa-database:before {
  content: &quot;\f1c0&quot;;
}
.fa-file-pdf-o:before {
  content: &quot;\f1c1&quot;;
}
.fa-file-word-o:before {
  content: &quot;\f1c2&quot;;
}
.fa-file-excel-o:before {
  content: &quot;\f1c3&quot;;
}
.fa-file-powerpoint-o:before {
  content: &quot;\f1c4&quot;;
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
  content: &quot;\f1c5&quot;;
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
  content: &quot;\f1c6&quot;;
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
  content: &quot;\f1c7&quot;;
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
  content: &quot;\f1c8&quot;;
}
.fa-file-code-o:before {
  content: &quot;\f1c9&quot;;
}
.fa-vine:before {
  content: &quot;\f1ca&quot;;
}
.fa-codepen:before {
  content: &quot;\f1cb&quot;;
}
.fa-jsfiddle:before {
  content: &quot;\f1cc&quot;;
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
  content: &quot;\f1cd&quot;;
}
.fa-circle-o-notch:before {
  content: &quot;\f1ce&quot;;
}
.fa-ra:before,
.fa-rebel:before {
  content: &quot;\f1d0&quot;;
}
.fa-ge:before,
.fa-empire:before {
  content: &quot;\f1d1&quot;;
}
.fa-git-square:before {
  content: &quot;\f1d2&quot;;
}
.fa-git:before {
  content: &quot;\f1d3&quot;;
}
.fa-hacker-news:before {
  content: &quot;\f1d4&quot;;
}
.fa-tencent-weibo:before {
  content: &quot;\f1d5&quot;;
}
.fa-qq:before {
  content: &quot;\f1d6&quot;;
}
.fa-wechat:before,
.fa-weixin:before {
  content: &quot;\f1d7&quot;;
}
.fa-send:before,
.fa-paper-plane:before {
  content: &quot;\f1d8&quot;;
}
.fa-send-o:before,
.fa-paper-plane-o:before {
  content: &quot;\f1d9&quot;;
}
.fa-history:before {
  content: &quot;\f1da&quot;;
}
.fa-circle-thin:before {
  content: &quot;\f1db&quot;;
}
.fa-header:before {
  content: &quot;\f1dc&quot;;
}
.fa-paragraph:before {
  content: &quot;\f1dd&quot;;
}
.fa-sliders:before {
  content: &quot;\f1de&quot;;
}
.fa-share-alt:before {
  content: &quot;\f1e0&quot;;
}
.fa-share-alt-square:before {
  content: &quot;\f1e1&quot;;
}
.fa-bomb:before {
  content: &quot;\f1e2&quot;;
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
  content: &quot;\f1e3&quot;;
}
.fa-tty:before {
  content: &quot;\f1e4&quot;;
}
.fa-binoculars:before {
  content: &quot;\f1e5&quot;;
}
.fa-plug:before {
  content: &quot;\f1e6&quot;;
}
.fa-slideshare:before {
  content: &quot;\f1e7&quot;;
}
.fa-twitch:before {
  content: &quot;\f1e8&quot;;
}
.fa-yelp:before {
  content: &quot;\f1e9&quot;;
}
.fa-newspaper-o:before {
  content: &quot;\f1ea&quot;;
}
.fa-wifi:before {
  content: &quot;\f1eb&quot;;
}
.fa-calculator:before {
  content: &quot;\f1ec&quot;;
}
.fa-paypal:before {
  content: &quot;\f1ed&quot;;
}
.fa-google-wallet:before {
  content: &quot;\f1ee&quot;;
}
.fa-cc-visa:before {
  content: &quot;\f1f0&quot;;
}
.fa-cc-mastercard:before {
  content: &quot;\f1f1&quot;;
}
.fa-cc-discover:before {
  content: &quot;\f1f2&quot;;
}
.fa-cc-amex:before {
  content: &quot;\f1f3&quot;;
}
.fa-cc-paypal:before {
  content: &quot;\f1f4&quot;;
}
.fa-cc-stripe:before {
  content: &quot;\f1f5&quot;;
}
.fa-bell-slash:before {
  content: &quot;\f1f6&quot;;
}
.fa-bell-slash-o:before {
  content: &quot;\f1f7&quot;;
}
.fa-trash:before {
  content: &quot;\f1f8&quot;;
}
.fa-copyright:before {
  content: &quot;\f1f9&quot;;
}
.fa-at:before {
  content: &quot;\f1fa&quot;;
}
.fa-eyedropper:before {
  content: &quot;\f1fb&quot;;
}
.fa-paint-brush:before {
  content: &quot;\f1fc&quot;;
}
.fa-birthday-cake:before {
  content: &quot;\f1fd&quot;;
}
.fa-area-chart:before {
  content: &quot;\f1fe&quot;;
}
.fa-pie-chart:before {
  content: &quot;\f200&quot;;
}
.fa-line-chart:before {
  content: &quot;\f201&quot;;
}
.fa-lastfm:before {
  content: &quot;\f202&quot;;
}
.fa-lastfm-square:before {
  content: &quot;\f203&quot;;
}
.fa-toggle-off:before {
  content: &quot;\f204&quot;;
}
.fa-toggle-on:before {
  content: &quot;\f205&quot;;
}
.fa-bicycle:before {
  content: &quot;\f206&quot;;
}
.fa-bus:before {
  content: &quot;\f207&quot;;
}
.fa-ioxhost:before {
  content: &quot;\f208&quot;;
}
.fa-angellist:before {
  content: &quot;\f209&quot;;
}
.fa-cc:before {
  content: &quot;\f20a&quot;;
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
  content: &quot;\f20b&quot;;
}
.fa-meanpath:before {
  content: &quot;\f20c&quot;;
}
/*!
*
* IPython base
*
*/
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
code {
  color: #000;
}
pre {
  font-size: inherit;
  line-height: inherit;
}
label {
  font-weight: normal;
}
/* Make the page background atleast 100% the height of the view port */
/* Make the page itself atleast 70% the height of the view port */
.border-box-sizing {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.corner-all {
  border-radius: 2px;
}
.no-padding {
  padding: 0px;
}
/* Flexible box model classes */
/* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
/* This file is a compatability layer.  It allows the usage of flexible box 
model layouts accross multiple browsers, including older browsers.  The newest,
universal implementation of the flexible box model is used when available (see
`Modern browsers` comments below).  Browsers that are known to implement this 
new spec completely include:

    Firefox 28.0+
    Chrome 29.0+
    Internet Explorer 11+ 
    Opera 17.0+

Browsers not listed, including Safari, are supported via the styling under the
`Old browsers` comments below.
*/
.hbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
.hbox &gt; * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.vbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
.vbox &gt; * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.hbox.reverse,
.vbox.reverse,
.reverse {
  /* Old browsers */
  -webkit-box-direction: reverse;
  -moz-box-direction: reverse;
  box-direction: reverse;
  /* Modern browsers */
  flex-direction: row-reverse;
}
.hbox.box-flex0,
.vbox.box-flex0,
.box-flex0 {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
  width: auto;
}
.hbox.box-flex1,
.vbox.box-flex1,
.box-flex1 {
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex,
.vbox.box-flex,
.box-flex {
  /* Old browsers */
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex2,
.vbox.box-flex2,
.box-flex2 {
  /* Old browsers */
  -webkit-box-flex: 2;
  -moz-box-flex: 2;
  box-flex: 2;
  /* Modern browsers */
  flex: 2;
}
.box-group1 {
  /*  Deprecated */
  -webkit-box-flex-group: 1;
  -moz-box-flex-group: 1;
  box-flex-group: 1;
}
.box-group2 {
  /* Deprecated */
  -webkit-box-flex-group: 2;
  -moz-box-flex-group: 2;
  box-flex-group: 2;
}
.hbox.start,
.vbox.start,
.start {
  /* Old browsers */
  -webkit-box-pack: start;
  -moz-box-pack: start;
  box-pack: start;
  /* Modern browsers */
  justify-content: flex-start;
}
.hbox.end,
.vbox.end,
.end {
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
}
.hbox.center,
.vbox.center,
.center {
  /* Old browsers */
  -webkit-box-pack: center;
  -moz-box-pack: center;
  box-pack: center;
  /* Modern browsers */
  justify-content: center;
}
.hbox.baseline,
.vbox.baseline,
.baseline {
  /* Old browsers */
  -webkit-box-pack: baseline;
  -moz-box-pack: baseline;
  box-pack: baseline;
  /* Modern browsers */
  justify-content: baseline;
}
.hbox.stretch,
.vbox.stretch,
.stretch {
  /* Old browsers */
  -webkit-box-pack: stretch;
  -moz-box-pack: stretch;
  box-pack: stretch;
  /* Modern browsers */
  justify-content: stretch;
}
.hbox.align-start,
.vbox.align-start,
.align-start {
  /* Old browsers */
  -webkit-box-align: start;
  -moz-box-align: start;
  box-align: start;
  /* Modern browsers */
  align-items: flex-start;
}
.hbox.align-end,
.vbox.align-end,
.align-end {
  /* Old browsers */
  -webkit-box-align: end;
  -moz-box-align: end;
  box-align: end;
  /* Modern browsers */
  align-items: flex-end;
}
.hbox.align-center,
.vbox.align-center,
.align-center {
  /* Old browsers */
  -webkit-box-align: center;
  -moz-box-align: center;
  box-align: center;
  /* Modern browsers */
  align-items: center;
}
.hbox.align-baseline,
.vbox.align-baseline,
.align-baseline {
  /* Old browsers */
  -webkit-box-align: baseline;
  -moz-box-align: baseline;
  box-align: baseline;
  /* Modern browsers */
  align-items: baseline;
}
.hbox.align-stretch,
.vbox.align-stretch,
.align-stretch {
  /* Old browsers */
  -webkit-box-align: stretch;
  -moz-box-align: stretch;
  box-align: stretch;
  /* Modern browsers */
  align-items: stretch;
}
div.error {
  margin: 2em;
  text-align: center;
}
div.error &gt; h1 {
  font-size: 500%;
  line-height: normal;
}
div.error &gt; p {
  font-size: 200%;
  line-height: normal;
}
div.traceback-wrapper {
  text-align: left;
  max-width: 800px;
  margin: auto;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
body {
  background-color: #fff;
  /* This makes sure that the body covers the entire window and needs to
       be in a different element than the display: box in wrapper below */
  position: absolute;
  left: 0px;
  right: 0px;
  top: 0px;
  bottom: 0px;
  overflow: visible;
}
body &gt; #header {
  /* Initially hidden to prevent FLOUC */
  display: none;
  background-color: #fff;
  /* Display over codemirror */
  position: relative;
  z-index: 100;
}
body &gt; #header #header-container {
  padding-bottom: 5px;
  padding-top: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
body &gt; #header .header-bar {
  width: 100%;
  height: 1px;
  background: #e7e7e7;
  margin-bottom: -1px;
}
@media print {
  body &gt; #header {
    display: none !important;
  }
}
#header-spacer {
  width: 100%;
  visibility: hidden;
}
@media print {
  #header-spacer {
    display: none;
  }
}
#ipython_notebook {
  padding-left: 0px;
  padding-top: 1px;
  padding-bottom: 1px;
}
@media (max-width: 991px) {
  #ipython_notebook {
    margin-left: 10px;
  }
}
[dir=&quot;rtl&quot;] #ipython_notebook {
  float: right !important;
}
#noscript {
  width: auto;
  padding-top: 16px;
  padding-bottom: 16px;
  text-align: center;
  font-size: 22px;
  color: red;
  font-weight: bold;
}
#ipython_notebook img {
  height: 28px;
}
#site {
  width: 100%;
  display: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  overflow: auto;
}
@media print {
  #site {
    height: auto !important;
  }
}
/* Smaller buttons */
.ui-button .ui-button-text {
  padding: 0.2em 0.8em;
  font-size: 77%;
}
input.ui-button {
  padding: 0.3em 0.9em;
}
span#login_widget {
  float: right;
}
span#login_widget &gt; .button,
#logout {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget &gt; .button:focus,
#logout:focus,
span#login_widget &gt; .button.focus,
#logout.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
span#login_widget &gt; .button:hover,
#logout:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget &gt; .button:active,
#logout:active,
span#login_widget &gt; .button.active,
#logout.active,
.open &gt; .dropdown-togglespan#login_widget &gt; .button,
.open &gt; .dropdown-toggle#logout {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget &gt; .button:active:hover,
#logout:active:hover,
span#login_widget &gt; .button.active:hover,
#logout.active:hover,
.open &gt; .dropdown-togglespan#login_widget &gt; .button:hover,
.open &gt; .dropdown-toggle#logout:hover,
span#login_widget &gt; .button:active:focus,
#logout:active:focus,
span#login_widget &gt; .button.active:focus,
#logout.active:focus,
.open &gt; .dropdown-togglespan#login_widget &gt; .button:focus,
.open &gt; .dropdown-toggle#logout:focus,
span#login_widget &gt; .button:active.focus,
#logout:active.focus,
span#login_widget &gt; .button.active.focus,
#logout.active.focus,
.open &gt; .dropdown-togglespan#login_widget &gt; .button.focus,
.open &gt; .dropdown-toggle#logout.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
span#login_widget &gt; .button:active,
#logout:active,
span#login_widget &gt; .button.active,
#logout.active,
.open &gt; .dropdown-togglespan#login_widget &gt; .button,
.open &gt; .dropdown-toggle#logout {
  background-image: none;
}
span#login_widget &gt; .button.disabled:hover,
#logout.disabled:hover,
span#login_widget &gt; .button[disabled]:hover,
#logout[disabled]:hover,
fieldset[disabled] span#login_widget &gt; .button:hover,
fieldset[disabled] #logout:hover,
span#login_widget &gt; .button.disabled:focus,
#logout.disabled:focus,
span#login_widget &gt; .button[disabled]:focus,
#logout[disabled]:focus,
fieldset[disabled] span#login_widget &gt; .button:focus,
fieldset[disabled] #logout:focus,
span#login_widget &gt; .button.disabled.focus,
#logout.disabled.focus,
span#login_widget &gt; .button[disabled].focus,
#logout[disabled].focus,
fieldset[disabled] span#login_widget &gt; .button.focus,
fieldset[disabled] #logout.focus {
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget &gt; .button .badge,
#logout .badge {
  color: #fff;
  background-color: #333;
}
.nav-header {
  text-transform: none;
}
#header &gt; span {
  margin-top: 10px;
}
.modal_stretch .modal-dialog {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-height: 80vh;
}
.modal_stretch .modal-dialog .modal-body {
  max-height: calc(100vh - 200px);
  overflow: auto;
  flex: 1;
}
@media (min-width: 768px) {
  .modal .modal-dialog {
    width: 700px;
  }
}
@media (min-width: 768px) {
  select.form-control {
    margin-left: 12px;
    margin-right: 12px;
  }
}
/*!
*
* IPython auth
*
*/
.center-nav {
  display: inline-block;
  margin-bottom: -4px;
}
/*!
*
* IPython tree view
*
*/
/* We need an invisible input field on top of the sentense*/
/* &quot;Drag file onto the list ...&quot; */
.alternate_upload {
  background-color: none;
  display: inline;
}
.alternate_upload.form {
  padding: 0;
  margin: 0;
}
.alternate_upload input.fileinput {
  text-align: center;
  vertical-align: middle;
  display: inline;
  opacity: 0;
  z-index: 2;
  width: 12ex;
  margin-right: -12ex;
}
.alternate_upload .btn-upload {
  height: 22px;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
[dir=&quot;rtl&quot;] #tabs li {
  float: right;
}
ul#tabs {
  margin-bottom: 4px;
}
[dir=&quot;rtl&quot;] ul#tabs {
  margin-right: 0px;
}
ul#tabs a {
  padding-top: 6px;
  padding-bottom: 4px;
}
ul.breadcrumb a:focus,
ul.breadcrumb a:hover {
  text-decoration: none;
}
ul.breadcrumb i.icon-home {
  font-size: 16px;
  margin-right: 4px;
}
ul.breadcrumb span {
  color: #5e5e5e;
}
.list_toolbar {
  padding: 4px 0 4px 0;
  vertical-align: middle;
}
.list_toolbar .tree-buttons {
  padding-top: 1px;
}
[dir=&quot;rtl&quot;] .list_toolbar .tree-buttons {
  float: left !important;
}
[dir=&quot;rtl&quot;] .list_toolbar .pull-right {
  padding-top: 1px;
  float: left !important;
}
[dir=&quot;rtl&quot;] .list_toolbar .pull-left {
  float: right !important;
}
.dynamic-buttons {
  padding-top: 3px;
  display: inline-block;
}
.list_toolbar [class*=&quot;span&quot;] {
  min-height: 24px;
}
.list_header {
  font-weight: bold;
  background-color: #EEE;
}
.list_placeholder {
  font-weight: bold;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
}
.list_container {
  margin-top: 4px;
  margin-bottom: 20px;
  border: 1px solid #ddd;
  border-radius: 2px;
}
.list_container &gt; div {
  border-bottom: 1px solid #ddd;
}
.list_container &gt; div:hover .list-item {
  background-color: red;
}
.list_container &gt; div:last-child {
  border: none;
}
.list_item:hover .list_item {
  background-color: #ddd;
}
.list_item a {
  text-decoration: none;
}
.list_item:hover {
  background-color: #fafafa;
}
.list_header &gt; div,
.list_item &gt; div {
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
.list_header &gt; div input,
.list_item &gt; div input {
  margin-right: 7px;
  margin-left: 14px;
  vertical-align: baseline;
  line-height: 22px;
  position: relative;
  top: -1px;
}
.list_header &gt; div .item_link,
.list_item &gt; div .item_link {
  margin-left: -1px;
  vertical-align: baseline;
  line-height: 22px;
}
.new-file input[type=checkbox] {
  visibility: hidden;
}
.item_name {
  line-height: 22px;
  height: 24px;
}
.item_icon {
  font-size: 14px;
  color: #5e5e5e;
  margin-right: 7px;
  margin-left: 7px;
  line-height: 22px;
  vertical-align: baseline;
}
.item_buttons {
  line-height: 1em;
  margin-left: -5px;
}
.item_buttons .btn,
.item_buttons .btn-group,
.item_buttons .input-group {
  float: left;
}
.item_buttons &gt; .btn,
.item_buttons &gt; .btn-group,
.item_buttons &gt; .input-group {
  margin-left: 5px;
}
.item_buttons .btn {
  min-width: 13ex;
}
.item_buttons .running-indicator {
  padding-top: 4px;
  color: #5cb85c;
}
.item_buttons .kernel-name {
  padding-top: 4px;
  color: #5bc0de;
  margin-right: 7px;
  float: left;
}
.toolbar_info {
  height: 24px;
  line-height: 24px;
}
.list_item input:not([type=checkbox]) {
  padding-top: 3px;
  padding-bottom: 3px;
  height: 22px;
  line-height: 14px;
  margin: 0px;
}
.highlight_text {
  color: blue;
}
#project_name {
  display: inline-block;
  padding-left: 7px;
  margin-left: -2px;
}
#project_name &gt; .breadcrumb {
  padding: 0px;
  margin-bottom: 0px;
  background-color: transparent;
  font-weight: bold;
}
#tree-selector {
  padding-right: 0px;
}
[dir=&quot;rtl&quot;] #tree-selector a {
  float: right;
}
#button-select-all {
  min-width: 50px;
}
#select-all {
  margin-left: 7px;
  margin-right: 2px;
}
.menu_icon {
  margin-right: 2px;
}
.tab-content .row {
  margin-left: 0px;
  margin-right: 0px;
}
.folder_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: &quot;\f114&quot;;
}
.folder_icon:before.pull-left {
  margin-right: .3em;
}
.folder_icon:before.pull-right {
  margin-left: .3em;
}
.notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: &quot;\f02d&quot;;
  position: relative;
  top: -1px;
}
.notebook_icon:before.pull-left {
  margin-right: .3em;
}
.notebook_icon:before.pull-right {
  margin-left: .3em;
}
.running_notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: &quot;\f02d&quot;;
  position: relative;
  top: -1px;
  color: #5cb85c;
}
.running_notebook_icon:before.pull-left {
  margin-right: .3em;
}
.running_notebook_icon:before.pull-right {
  margin-left: .3em;
}
.file_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: &quot;\f016&quot;;
  position: relative;
  top: -2px;
}
.file_icon:before.pull-left {
  margin-right: .3em;
}
.file_icon:before.pull-right {
  margin-left: .3em;
}
#notebook_toolbar .pull-right {
  padding-top: 0px;
  margin-right: -1px;
}
ul#new-menu {
  left: auto;
  right: 0;
}
[dir=&quot;rtl&quot;] #new-menu {
  text-align: right;
}
.kernel-menu-icon {
  padding-right: 12px;
  width: 24px;
  content: &quot;\f096&quot;;
}
.kernel-menu-icon:before {
  content: &quot;\f096&quot;;
}
.kernel-menu-icon-current:before {
  content: &quot;\f00c&quot;;
}
#tab_content {
  padding-top: 20px;
}
#running .panel-group .panel {
  margin-top: 3px;
  margin-bottom: 1em;
}
#running .panel-group .panel .panel-heading {
  background-color: #EEE;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
#running .panel-group .panel .panel-heading a:focus,
#running .panel-group .panel .panel-heading a:hover {
  text-decoration: none;
}
#running .panel-group .panel .panel-body {
  padding: 0px;
}
#running .panel-group .panel .panel-body .list_container {
  margin-top: 0px;
  margin-bottom: 0px;
  border: 0px;
  border-radius: 0px;
}
#running .panel-group .panel .panel-body .list_container .list_item {
  border-bottom: 1px solid #ddd;
}
#running .panel-group .panel .panel-body .list_container .list_item:last-child {
  border-bottom: 0px;
}
[dir=&quot;rtl&quot;] #running .col-sm-8 {
  float: right !important;
}
.delete-button {
  display: none;
}
.duplicate-button {
  display: none;
}
.rename-button {
  display: none;
}
.shutdown-button {
  display: none;
}
.dynamic-instructions {
  display: inline-block;
  padding-top: 4px;
}
/*!
*
* IPython text editor webapp
*
*/
.selected-keymap i.fa {
  padding: 0px 5px;
}
.selected-keymap i.fa:before {
  content: &quot;\f00c&quot;;
}
#mode-menu {
  overflow: auto;
  max-height: 20em;
}
.edit_app #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.edit_app #menubar .navbar {
  /* Use a negative 1 bottom margin, so the border overlaps the border of the
    header */
  margin-bottom: -1px;
}
.dirty-indicator {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator.pull-left {
  margin-right: .3em;
}
.dirty-indicator.pull-right {
  margin-left: .3em;
}
.dirty-indicator-dirty {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-dirty.pull-left {
  margin-right: .3em;
}
.dirty-indicator-dirty.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-clean.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: &quot;\f00c&quot;;
}
.dirty-indicator-clean:before.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean:before.pull-right {
  margin-left: .3em;
}
#filename {
  font-size: 16pt;
  display: table;
  padding: 0px 5px;
}
#current-mode {
  padding-left: 5px;
  padding-right: 5px;
}
#texteditor-backdrop {
  padding-top: 20px;
  padding-bottom: 20px;
}
@media not print {
  #texteditor-backdrop {
    background-color: #EEE;
  }
}
@media print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container {
    padding: 0px;
    background-color: #fff;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
/*!
*
* IPython notebook
*
*/
/* CSS font colors for translated ANSI colors. */
.ansibold {
  font-weight: bold;
}
/* use dark versions for foreground, to improve visibility */
.ansiblack {
  color: black;
}
.ansired {
  color: darkred;
}
.ansigreen {
  color: darkgreen;
}
.ansiyellow {
  color: #c4a000;
}
.ansiblue {
  color: darkblue;
}
.ansipurple {
  color: darkviolet;
}
.ansicyan {
  color: steelblue;
}
.ansigray {
  color: gray;
}
/* and light for background, for the same reason */
.ansibgblack {
  background-color: black;
}
.ansibgred {
  background-color: red;
}
.ansibggreen {
  background-color: green;
}
.ansibgyellow {
  background-color: yellow;
}
.ansibgblue {
  background-color: blue;
}
.ansibgpurple {
  background-color: magenta;
}
.ansibgcyan {
  background-color: cyan;
}
.ansibggray {
  background-color: gray;
}
div.cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  border-radius: 2px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  border-width: 1px;
  border-style: solid;
  border-color: transparent;
  width: 100%;
  padding: 5px;
  /* This acts as a spacer between cells, that is outside the border */
  margin: 0px;
  outline: none;
  border-left-width: 1px;
  padding-left: 5px;
  background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%);
}
div.cell.jupyter-soft-selected {
  border-left-color: #90CAF9;
  border-left-color: #E3F2FD;
  border-left-width: 1px;
  padding-left: 5px;
  border-right-color: #E3F2FD;
  border-right-width: 1px;
  background: #E3F2FD;
}
@media print {
  div.cell.jupyter-soft-selected {
    border-color: transparent;
  }
}
div.cell.selected {
  border-color: #ababab;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%);
}
@media print {
  div.cell.selected {
    border-color: transparent;
  }
}
div.cell.selected.jupyter-soft-selected {
  border-left-width: 0;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%);
}
.edit_mode div.cell.selected {
  border-color: #66BB6A;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%);
}
@media print {
  .edit_mode div.cell.selected {
    border-color: transparent;
  }
}
.prompt {
  /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
  min-width: 14ex;
  /* This padding is tuned to match the padding on the CodeMirror editor. */
  padding: 0.4em;
  margin: 0px;
  font-family: monospace;
  text-align: right;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
  /* Don't highlight prompt number selection */
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  /* Use default cursor */
  cursor: default;
}
@media (max-width: 540px) {
  .prompt {
    text-align: left;
  }
}
div.inner_cell {
  min-width: 0;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_area {
  border: 1px solid #cfcfcf;
  border-radius: 2px;
  background: #f7f7f7;
  line-height: 1.21429em;
}
/* This is needed so that empty prompt areas can collapse to zero height when there
   is no content in the output_subarea and the prompt. The main purpose of this is
   to make sure that empty JavaScript output_subareas have no height. */
div.prompt:empty {
  padding-top: 0;
  padding-bottom: 0;
}
div.unrecognized_cell {
  padding: 5px 5px 5px 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.unrecognized_cell .inner_cell {
  border-radius: 2px;
  padding: 5px;
  font-weight: bold;
  color: red;
  border: 1px solid #cfcfcf;
  background: #eaeaea;
}
div.unrecognized_cell .inner_cell a {
  color: inherit;
  text-decoration: none;
}
div.unrecognized_cell .inner_cell a:hover {
  color: inherit;
  text-decoration: none;
}
@media (max-width: 540px) {
  div.unrecognized_cell &gt; div.prompt {
    display: none;
  }
}
div.code_cell {
  /* avoid page breaking on code cells when printing */
}
@media print {
  div.code_cell {
    page-break-inside: avoid;
  }
}
/* any special styling for code cells that are currently running goes here */
div.input {
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.input {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_prompt {
  color: #303F9F;
  border-top: 1px solid transparent;
}
div.input_area &gt; div.highlight {
  margin: 0.4em;
  border: none;
  padding: 0px;
  background-color: transparent;
}
div.input_area &gt; div.highlight &gt; pre {
  margin: 0px;
  border: none;
  padding: 0px;
  background-color: transparent;
}
/* The following gets added to the &lt;head&gt; if it is detected that the user has a
 * monospace font with inconsistent normal/bold/italic height.  See
 * notebookmain.js.  Such fonts will have keywords vertically offset with
 * respect to the rest of the text.  The user should select a better font.
 * See: https://github.com/ipython/ipython/issues/1503
 *
 * .CodeMirror span {
 *      vertical-align: bottom;
 * }
 */
.CodeMirror {
  line-height: 1.21429em;
  /* Changed from 1em to our global default */
  font-size: 14px;
  height: auto;
  /* Changed to auto to autogrow */
  background: none;
  /* Changed from white to allow our bg to show through */
}
.CodeMirror-scroll {
  /*  The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
  /*  We have found that if it is visible, vertical scrollbars appear with font size changes.*/
  overflow-y: hidden;
  overflow-x: auto;
}
.CodeMirror-lines {
  /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
  /* we have set a different line-height and want this to scale with that. */
  padding: 0.4em;
}
.CodeMirror-linenumber {
  padding: 0 8px 0 4px;
}
.CodeMirror-gutters {
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.CodeMirror pre {
  /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
  /* .CodeMirror-lines */
  padding: 0;
  border: 0;
  border-radius: 0;
}
/*

Original style from softwaremaniacs.org (c) Ivan Sagalaev &lt;Maniac@SoftwareManiacs.Org&gt;
Adapted from GitHub theme

*/
.highlight-base {
  color: #000;
}
.highlight-variable {
  color: #000;
}
.highlight-variable-2 {
  color: #1a1a1a;
}
.highlight-variable-3 {
  color: #333333;
}
.highlight-string {
  color: #BA2121;
}
.highlight-comment {
  color: #408080;
  font-style: italic;
}
.highlight-number {
  color: #080;
}
.highlight-atom {
  color: #88F;
}
.highlight-keyword {
  color: #008000;
  font-weight: bold;
}
.highlight-builtin {
  color: #008000;
}
.highlight-error {
  color: #f00;
}
.highlight-operator {
  color: #AA22FF;
  font-weight: bold;
}
.highlight-meta {
  color: #AA22FF;
}
/* previously not defined, copying from default codemirror */
.highlight-def {
  color: #00f;
}
.highlight-string-2 {
  color: #f50;
}
.highlight-qualifier {
  color: #555;
}
.highlight-bracket {
  color: #997;
}
.highlight-tag {
  color: #170;
}
.highlight-attribute {
  color: #00c;
}
.highlight-header {
  color: blue;
}
.highlight-quote {
  color: #090;
}
.highlight-link {
  color: #00c;
}
/* apply the same style to codemirror */
.cm-s-ipython span.cm-keyword {
  color: #008000;
  font-weight: bold;
}
.cm-s-ipython span.cm-atom {
  color: #88F;
}
.cm-s-ipython span.cm-number {
  color: #080;
}
.cm-s-ipython span.cm-def {
  color: #00f;
}
.cm-s-ipython span.cm-variable {
  color: #000;
}
.cm-s-ipython span.cm-operator {
  color: #AA22FF;
  font-weight: bold;
}
.cm-s-ipython span.cm-variable-2 {
  color: #1a1a1a;
}
.cm-s-ipython span.cm-variable-3 {
  color: #333333;
}
.cm-s-ipython span.cm-comment {
  color: #408080;
  font-style: italic;
}
.cm-s-ipython span.cm-string {
  color: #BA2121;
}
.cm-s-ipython span.cm-string-2 {
  color: #f50;
}
.cm-s-ipython span.cm-meta {
  color: #AA22FF;
}
.cm-s-ipython span.cm-qualifier {
  color: #555;
}
.cm-s-ipython span.cm-builtin {
  color: #008000;
}
.cm-s-ipython span.cm-bracket {
  color: #997;
}
.cm-s-ipython span.cm-tag {
  color: #170;
}
.cm-s-ipython span.cm-attribute {
  color: #00c;
}
.cm-s-ipython span.cm-header {
  color: blue;
}
.cm-s-ipython span.cm-quote {
  color: #090;
}
.cm-s-ipython span.cm-link {
  color: #00c;
}
.cm-s-ipython span.cm-error {
  color: #f00;
}
.cm-s-ipython span.cm-tab {
  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
  background-position: right;
  background-repeat: no-repeat;
}
div.output_wrapper {
  /* this position must be relative to enable descendents to be absolute within it */
  position: relative;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  z-index: 1;
}
/* class for the output area when it should be height-limited */
div.output_scroll {
  /* ideally, this would be max-height, but FF barfs all over that */
  height: 24em;
  /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
  width: 100%;
  overflow: auto;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  display: block;
}
/* output div while it is collapsed */
div.output_collapsed {
  margin: 0px;
  padding: 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
div.out_prompt_overlay {
  height: 100%;
  padding: 0px 0.4em;
  position: absolute;
  border-radius: 2px;
}
div.out_prompt_overlay:hover {
  /* use inner shadow to get border that is computed the same on WebKit/FF */
  -webkit-box-shadow: inset 0 0 1px #000;
  box-shadow: inset 0 0 1px #000;
  background: rgba(240, 240, 240, 0.5);
}
div.output_prompt {
  color: #D84315;
}
/* This class is the outer container of all output sections. */
div.output_area {
  padding: 0px;
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.output_area .MathJax_Display {
  text-align: left !important;
}
div.output_area .rendered_html table {
  margin-left: 0;
  margin-right: 0;
}
div.output_area .rendered_html img {
  margin-left: 0;
  margin-right: 0;
}
div.output_area img,
div.output_area svg {
  max-width: 100%;
  height: auto;
}
div.output_area img.unconfined,
div.output_area svg.unconfined {
  max-width: none;
}
/* This is needed to protect the pre formating from global settings such
   as that of bootstrap */
.output {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.output_area {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
div.output_area pre {
  margin: 0;
  padding: 0;
  border: 0;
  vertical-align: baseline;
  color: black;
  background-color: transparent;
  border-radius: 0;
}
/* This class is for the output subarea inside the output_area and after
   the prompt div. */
div.output_subarea {
  overflow-x: auto;
  padding: 0.4em;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
  max-width: calc(100% - 14ex);
}
div.output_scroll div.output_subarea {
  overflow-x: visible;
}
/* The rest of the output_* classes are for special styling of the different
   output types */
/* all text output has this class: */
div.output_text {
  text-align: left;
  color: #000;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
}
/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
div.output_stderr {
  background: #fdd;
  /* very light red background for stderr */
}
div.output_latex {
  text-align: left;
}
/* Empty output_javascript divs should have no height */
div.output_javascript:empty {
  padding: 0;
}
.js-error {
  color: darkred;
}
/* raw_input styles */
div.raw_input_container {
  line-height: 1.21429em;
  padding-top: 5px;
}
pre.raw_input_prompt {
  /* nothing needed here. */
}
input.raw_input {
  font-family: monospace;
  font-size: inherit;
  color: inherit;
  width: auto;
  /* make sure input baseline aligns with prompt */
  vertical-align: baseline;
  /* padding + margin = 0.5em between prompt and cursor */
  padding: 0em 0.25em;
  margin: 0em 0.25em;
}
input.raw_input:focus {
  box-shadow: none;
}
p.p-space {
  margin-bottom: 10px;
}
div.output_unrecognized {
  padding: 5px;
  font-weight: bold;
  color: red;
}
div.output_unrecognized a {
  color: inherit;
  text-decoration: none;
}
div.output_unrecognized a:hover {
  color: inherit;
  text-decoration: none;
}
.rendered_html {
  color: #000;
  /* any extras will just be numbers: */
}
.rendered_html em {
  font-style: italic;
}
.rendered_html strong {
  font-weight: bold;
}
.rendered_html u {
  text-decoration: underline;
}
.rendered_html :link {
  text-decoration: underline;
}
.rendered_html :visited {
  text-decoration: underline;
}
.rendered_html h1 {
  font-size: 185.7%;
  margin: 1.08em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h2 {
  font-size: 157.1%;
  margin: 1.27em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h3 {
  font-size: 128.6%;
  margin: 1.55em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h4 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h5 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h6 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h1:first-child {
  margin-top: 0.538em;
}
.rendered_html h2:first-child {
  margin-top: 0.636em;
}
.rendered_html h3:first-child {
  margin-top: 0.777em;
}
.rendered_html h4:first-child {
  margin-top: 1em;
}
.rendered_html h5:first-child {
  margin-top: 1em;
}
.rendered_html h6:first-child {
  margin-top: 1em;
}
.rendered_html ul {
  list-style: disc;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ul ul {
  list-style: square;
  margin: 0em 2em;
}
.rendered_html ul ul ul {
  list-style: circle;
  margin: 0em 2em;
}
.rendered_html ol {
  list-style: decimal;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ol ol {
  list-style: upper-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol {
  list-style: lower-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol {
  list-style: lower-roman;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol ol {
  list-style: decimal;
  margin: 0em 2em;
}
.rendered_html * + ul {
  margin-top: 1em;
}
.rendered_html * + ol {
  margin-top: 1em;
}
.rendered_html hr {
  color: black;
  background-color: black;
}
.rendered_html pre {
  margin: 1em 2em;
}
.rendered_html pre,
.rendered_html code {
  border: 0;
  background-color: #fff;
  color: #000;
  font-size: 100%;
  padding: 0px;
}
.rendered_html blockquote {
  margin: 1em 2em;
}
.rendered_html table {
  margin-left: auto;
  margin-right: auto;
  border: 1px solid black;
  border-collapse: collapse;
}
.rendered_html tr,
.rendered_html th,
.rendered_html td {
  border: 1px solid black;
  border-collapse: collapse;
  margin: 1em 2em;
}
.rendered_html td,
.rendered_html th {
  text-align: left;
  vertical-align: middle;
  padding: 4px;
}
.rendered_html th {
  font-weight: bold;
}
.rendered_html * + table {
  margin-top: 1em;
}
.rendered_html p {
  text-align: left;
}
.rendered_html * + p {
  margin-top: 1em;
}
.rendered_html img {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.rendered_html * + img {
  margin-top: 1em;
}
.rendered_html img,
.rendered_html svg {
  max-width: 100%;
  height: auto;
}
.rendered_html img.unconfined,
.rendered_html svg.unconfined {
  max-width: none;
}
div.text_cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.text_cell &gt; div.prompt {
    display: none;
  }
}
div.text_cell_render {
  /*font-family: &quot;Helvetica Neue&quot;, Arial, Helvetica, Geneva, sans-serif;*/
  outline: none;
  resize: none;
  width: inherit;
  border-style: none;
  padding: 0.5em 0.5em 0.5em 0.4em;
  color: #000;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
a.anchor-link:link {
  text-decoration: none;
  padding: 0px 20px;
  visibility: hidden;
}
h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link {
  visibility: visible;
}
.text_cell.rendered .input_area {
  display: none;
}
.text_cell.rendered .rendered_html {
  overflow-x: auto;
  overflow-y: hidden;
}
.text_cell.unrendered .text_cell_render {
  display: none;
}
.cm-header-1,
.cm-header-2,
.cm-header-3,
.cm-header-4,
.cm-header-5,
.cm-header-6 {
  font-weight: bold;
  font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;
}
.cm-header-1 {
  font-size: 185.7%;
}
.cm-header-2 {
  font-size: 157.1%;
}
.cm-header-3 {
  font-size: 128.6%;
}
.cm-header-4 {
  font-size: 110%;
}
.cm-header-5 {
  font-size: 100%;
  font-style: italic;
}
.cm-header-6 {
  font-size: 100%;
  font-style: italic;
}
/*!
*
* IPython notebook webapp
*
*/
@media (max-width: 767px) {
  .notebook_app {
    padding-left: 0px;
    padding-right: 0px;
  }
}
#ipython-main-app {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook_panel {
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook {
  font-size: 14px;
  line-height: 20px;
  overflow-y: hidden;
  overflow-x: auto;
  width: 100%;
  /* This spaces the page away from the edge of the notebook area */
  padding-top: 20px;
  margin: 0px;
  outline: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  min-height: 100%;
}
@media not print {
  #notebook-container {
    padding: 15px;
    background-color: #fff;
    min-height: 0;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
@media print {
  #notebook-container {
    width: 100%;
  }
}
div.ui-widget-content {
  border: 1px solid #ababab;
  outline: none;
}
pre.dialog {
  background-color: #f7f7f7;
  border: 1px solid #ddd;
  border-radius: 2px;
  padding: 0.4em;
  padding-left: 2em;
}
p.dialog {
  padding: 0.2em;
}
/* Word-wrap output correctly.  This is the CSS3 spelling, though Firefox seems
   to not honor it correctly.  Webkit browsers (Chrome, rekonq, Safari) do.
 */
pre,
code,
kbd,
samp {
  white-space: pre-wrap;
}
#fonttest {
  font-family: monospace;
}
p {
  margin-bottom: 0;
}
.end_space {
  min-height: 100px;
  transition: height .2s ease;
}
.notebook_app &gt; #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
@media not print {
  .notebook_app {
    background-color: #EEE;
  }
}
kbd {
  border-style: solid;
  border-width: 1px;
  box-shadow: none;
  margin: 2px;
  padding-left: 2px;
  padding-right: 2px;
  padding-top: 1px;
  padding-bottom: 1px;
}
/* CSS for the cell toolbar */
.celltoolbar {
  border: thin solid #CFCFCF;
  border-bottom: none;
  background: #EEE;
  border-radius: 2px 2px 0px 0px;
  width: 100%;
  height: 29px;
  padding-right: 4px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
  display: -webkit-flex;
}
@media print {
  .celltoolbar {
    display: none;
  }
}
.ctb_hideshow {
  display: none;
  vertical-align: bottom;
}
/* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
   Cell toolbars are only shown when the ctb_global_show class is also set.
*/
.ctb_global_show .ctb_show.ctb_hideshow {
  display: block;
}
.ctb_global_show .ctb_show + .input_area,
.ctb_global_show .ctb_show + div.text_cell_input,
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border-top-right-radius: 0px;
  border-top-left-radius: 0px;
}
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border: 1px solid #cfcfcf;
}
.celltoolbar {
  font-size: 87%;
  padding-top: 3px;
}
.celltoolbar select {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
  width: inherit;
  font-size: inherit;
  height: 22px;
  padding: 0px;
  display: inline-block;
}
.celltoolbar select:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.celltoolbar select::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.celltoolbar select:-ms-input-placeholder {
  color: #999;
}
.celltoolbar select::-webkit-input-placeholder {
  color: #999;
}
.celltoolbar select::-ms-expand {
  border: 0;
  background-color: transparent;
}
.celltoolbar select[disabled],
.celltoolbar select[readonly],
fieldset[disabled] .celltoolbar select {
  background-color: #eeeeee;
  opacity: 1;
}
.celltoolbar select[disabled],
fieldset[disabled] .celltoolbar select {
  cursor: not-allowed;
}
textarea.celltoolbar select {
  height: auto;
}
select.celltoolbar select {
  height: 30px;
  line-height: 30px;
}
textarea.celltoolbar select,
select[multiple].celltoolbar select {
  height: auto;
}
.celltoolbar label {
  margin-left: 5px;
  margin-right: 5px;
}
.completions {
  position: absolute;
  z-index: 110;
  overflow: hidden;
  border: 1px solid #ababab;
  border-radius: 2px;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  line-height: 1;
}
.completions select {
  background: white;
  outline: none;
  border: none;
  padding: 0px;
  margin: 0px;
  overflow: auto;
  font-family: monospace;
  font-size: 110%;
  color: #000;
  width: auto;
}
.completions select option.context {
  color: #286090;
}
#kernel_logo_widget {
  float: right !important;
  float: right;
}
#kernel_logo_widget .current_kernel_logo {
  display: none;
  margin-top: -1px;
  margin-bottom: -1px;
  width: 32px;
  height: 32px;
}
#menubar {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  margin-top: 1px;
}
#menubar .navbar {
  border-top: 1px;
  border-radius: 0px 0px 2px 2px;
  margin-bottom: 0px;
}
#menubar .navbar-toggle {
  float: left;
  padding-top: 7px;
  padding-bottom: 7px;
  border: none;
}
#menubar .navbar-collapse {
  clear: left;
}
.nav-wrapper {
  border-bottom: 1px solid #e7e7e7;
}
i.menu-icon {
  padding-top: 4px;
}
ul#help_menu li a {
  overflow: hidden;
  padding-right: 2.2em;
}
ul#help_menu li a i {
  margin-right: -1.2em;
}
.dropdown-submenu {
  position: relative;
}
.dropdown-submenu &gt; .dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -6px;
  margin-left: -1px;
}
.dropdown-submenu:hover &gt; .dropdown-menu {
  display: block;
}
.dropdown-submenu &gt; a:after {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  display: block;
  content: &quot;\f0da&quot;;
  float: right;
  color: #333333;
  margin-top: 2px;
  margin-right: -10px;
}
.dropdown-submenu &gt; a:after.pull-left {
  margin-right: .3em;
}
.dropdown-submenu &gt; a:after.pull-right {
  margin-left: .3em;
}
.dropdown-submenu:hover &gt; a:after {
  color: #262626;
}
.dropdown-submenu.pull-left {
  float: none;
}
.dropdown-submenu.pull-left &gt; .dropdown-menu {
  left: -100%;
  margin-left: 10px;
}
#notification_area {
  float: right !important;
  float: right;
  z-index: 10;
}
.indicator_area {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#kernel_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  border-left: 1px solid;
}
#kernel_indicator .kernel_indicator_name {
  padding-left: 5px;
  padding-right: 5px;
}
#modal_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#readonly-indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  margin-top: 2px;
  margin-bottom: 0px;
  margin-left: 0px;
  margin-right: 0px;
  display: none;
}
.modal_indicator:before {
  width: 1.28571429em;
  text-align: center;
}
.edit_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: &quot;\f040&quot;;
}
.edit_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.edit_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.command_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: ' ';
}
.command_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.command_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.kernel_idle_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: &quot;\f10c&quot;;
}
.kernel_idle_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_idle_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_busy_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: &quot;\f111&quot;;
}
.kernel_busy_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_busy_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_dead_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: &quot;\f1e2&quot;;
}
.kernel_dead_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_dead_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_disconnected_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: &quot;\f127&quot;;
}
.kernel_disconnected_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_disconnected_icon:before.pull-right {
  margin-left: .3em;
}
.notification_widget {
  color: #777;
  z-index: 10;
  background: rgba(240, 240, 240, 0.5);
  margin-right: 4px;
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget:focus,
.notification_widget.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.notification_widget:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active,
.notification_widget.active,
.open &gt; .dropdown-toggle.notification_widget {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active:hover,
.notification_widget.active:hover,
.open &gt; .dropdown-toggle.notification_widget:hover,
.notification_widget:active:focus,
.notification_widget.active:focus,
.open &gt; .dropdown-toggle.notification_widget:focus,
.notification_widget:active.focus,
.notification_widget.active.focus,
.open &gt; .dropdown-toggle.notification_widget.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.notification_widget:active,
.notification_widget.active,
.open &gt; .dropdown-toggle.notification_widget {
  background-image: none;
}
.notification_widget.disabled:hover,
.notification_widget[disabled]:hover,
fieldset[disabled] .notification_widget:hover,
.notification_widget.disabled:focus,
.notification_widget[disabled]:focus,
fieldset[disabled] .notification_widget:focus,
.notification_widget.disabled.focus,
.notification_widget[disabled].focus,
fieldset[disabled] .notification_widget.focus {
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget .badge {
  color: #fff;
  background-color: #333;
}
.notification_widget.warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning:focus,
.notification_widget.warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.notification_widget.warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open &gt; .dropdown-toggle.notification_widget.warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active:hover,
.notification_widget.warning.active:hover,
.open &gt; .dropdown-toggle.notification_widget.warning:hover,
.notification_widget.warning:active:focus,
.notification_widget.warning.active:focus,
.open &gt; .dropdown-toggle.notification_widget.warning:focus,
.notification_widget.warning:active.focus,
.notification_widget.warning.active.focus,
.open &gt; .dropdown-toggle.notification_widget.warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open &gt; .dropdown-toggle.notification_widget.warning {
  background-image: none;
}
.notification_widget.warning.disabled:hover,
.notification_widget.warning[disabled]:hover,
fieldset[disabled] .notification_widget.warning:hover,
.notification_widget.warning.disabled:focus,
.notification_widget.warning[disabled]:focus,
fieldset[disabled] .notification_widget.warning:focus,
.notification_widget.warning.disabled.focus,
.notification_widget.warning[disabled].focus,
fieldset[disabled] .notification_widget.warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.notification_widget.success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success:focus,
.notification_widget.success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.notification_widget.success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open &gt; .dropdown-toggle.notification_widget.success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active:hover,
.notification_widget.success.active:hover,
.open &gt; .dropdown-toggle.notification_widget.success:hover,
.notification_widget.success:active:focus,
.notification_widget.success.active:focus,
.open &gt; .dropdown-toggle.notification_widget.success:focus,
.notification_widget.success:active.focus,
.notification_widget.success.active.focus,
.open &gt; .dropdown-toggle.notification_widget.success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open &gt; .dropdown-toggle.notification_widget.success {
  background-image: none;
}
.notification_widget.success.disabled:hover,
.notification_widget.success[disabled]:hover,
fieldset[disabled] .notification_widget.success:hover,
.notification_widget.success.disabled:focus,
.notification_widget.success[disabled]:focus,
fieldset[disabled] .notification_widget.success:focus,
.notification_widget.success.disabled.focus,
.notification_widget.success[disabled].focus,
fieldset[disabled] .notification_widget.success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.notification_widget.info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info:focus,
.notification_widget.info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.notification_widget.info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open &gt; .dropdown-toggle.notification_widget.info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active:hover,
.notification_widget.info.active:hover,
.open &gt; .dropdown-toggle.notification_widget.info:hover,
.notification_widget.info:active:focus,
.notification_widget.info.active:focus,
.open &gt; .dropdown-toggle.notification_widget.info:focus,
.notification_widget.info:active.focus,
.notification_widget.info.active.focus,
.open &gt; .dropdown-toggle.notification_widget.info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open &gt; .dropdown-toggle.notification_widget.info {
  background-image: none;
}
.notification_widget.info.disabled:hover,
.notification_widget.info[disabled]:hover,
fieldset[disabled] .notification_widget.info:hover,
.notification_widget.info.disabled:focus,
.notification_widget.info[disabled]:focus,
fieldset[disabled] .notification_widget.info:focus,
.notification_widget.info.disabled.focus,
.notification_widget.info[disabled].focus,
fieldset[disabled] .notification_widget.info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.notification_widget.danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger:focus,
.notification_widget.danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.notification_widget.danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open &gt; .dropdown-toggle.notification_widget.danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active:hover,
.notification_widget.danger.active:hover,
.open &gt; .dropdown-toggle.notification_widget.danger:hover,
.notification_widget.danger:active:focus,
.notification_widget.danger.active:focus,
.open &gt; .dropdown-toggle.notification_widget.danger:focus,
.notification_widget.danger:active.focus,
.notification_widget.danger.active.focus,
.open &gt; .dropdown-toggle.notification_widget.danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open &gt; .dropdown-toggle.notification_widget.danger {
  background-image: none;
}
.notification_widget.danger.disabled:hover,
.notification_widget.danger[disabled]:hover,
fieldset[disabled] .notification_widget.danger:hover,
.notification_widget.danger.disabled:focus,
.notification_widget.danger[disabled]:focus,
fieldset[disabled] .notification_widget.danger:focus,
.notification_widget.danger.disabled.focus,
.notification_widget.danger[disabled].focus,
fieldset[disabled] .notification_widget.danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger .badge {
  color: #d9534f;
  background-color: #fff;
}
div#pager {
  background-color: #fff;
  font-size: 14px;
  line-height: 20px;
  overflow: hidden;
  display: none;
  position: fixed;
  bottom: 0px;
  width: 100%;
  max-height: 50%;
  padding-top: 8px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  /* Display over codemirror */
  z-index: 100;
  /* Hack which prevents jquery ui resizable from changing top. */
  top: auto !important;
}
div#pager pre {
  line-height: 1.21429em;
  color: #000;
  background-color: #f7f7f7;
  padding: 0.4em;
}
div#pager #pager-button-area {
  position: absolute;
  top: 8px;
  right: 20px;
}
div#pager #pager-contents {
  position: relative;
  overflow: auto;
  width: 100%;
  height: 100%;
}
div#pager #pager-contents #pager-container {
  position: relative;
  padding: 15px 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
div#pager .ui-resizable-handle {
  top: 0px;
  height: 8px;
  background: #f7f7f7;
  border-top: 1px solid #cfcfcf;
  border-bottom: 1px solid #cfcfcf;
  /* This injects handle bars (a short, wide = symbol) for 
        the resize handle. */
}
div#pager .ui-resizable-handle::after {
  content: '';
  top: 2px;
  left: 50%;
  height: 3px;
  width: 30px;
  margin-left: -15px;
  position: absolute;
  border-top: 1px solid #cfcfcf;
}
.quickhelp {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  line-height: 1.8em;
}
.shortcut_key {
  display: inline-block;
  width: 21ex;
  text-align: right;
  font-family: monospace;
}
.shortcut_descr {
  display: inline-block;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
span.save_widget {
  margin-top: 6px;
}
span.save_widget span.filename {
  height: 1em;
  line-height: 1em;
  padding: 3px;
  margin-left: 16px;
  border: none;
  font-size: 146.5%;
  border-radius: 2px;
}
span.save_widget span.filename:hover {
  background-color: #e6e6e6;
}
span.checkpoint_status,
span.autosave_status {
  font-size: small;
}
@media (max-width: 767px) {
  span.save_widget {
    font-size: small;
  }
  span.checkpoint_status,
  span.autosave_status {
    display: none;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  span.checkpoint_status {
    display: none;
  }
  span.autosave_status {
    font-size: x-small;
  }
}
.toolbar {
  padding: 0px;
  margin-left: -5px;
  margin-top: 2px;
  margin-bottom: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.toolbar select,
.toolbar label {
  width: auto;
  vertical-align: middle;
  margin-right: 2px;
  margin-bottom: 0px;
  display: inline;
  font-size: 92%;
  margin-left: 0.3em;
  margin-right: 0.3em;
  padding: 0px;
  padding-top: 3px;
}
.toolbar .btn {
  padding: 2px 8px;
}
.toolbar .btn-group {
  margin-top: 0px;
  margin-left: 5px;
}
#maintoolbar {
  margin-bottom: -3px;
  margin-top: -8px;
  border: 0px;
  min-height: 27px;
  margin-left: 0px;
  padding-top: 11px;
  padding-bottom: 3px;
}
#maintoolbar .navbar-text {
  float: none;
  vertical-align: middle;
  text-align: right;
  margin-left: 5px;
  margin-right: 0px;
  margin-top: 0px;
}
.select-xs {
  height: 24px;
}
.pulse,
.dropdown-menu &gt; li &gt; a.pulse,
li.pulse &gt; a.dropdown-toggle,
li.pulse.open &gt; a.dropdown-toggle {
  background-color: #F37626;
  color: white;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
/** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
 * of chance of beeing generated from the ../less/[samename].less file, you can
 * try to get back the less file by reverting somme commit in history
 **/
/*
 * We'll try to get something pretty, so we
 * have some strange css to have the scroll bar on
 * the left with fix button on the top right of the tooltip
 */
@-moz-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-moz-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
/*properties of tooltip after &quot;expand&quot;*/
.bigtooltip {
  overflow: auto;
  height: 200px;
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
}
/*properties of tooltip before &quot;expand&quot;*/
.smalltooltip {
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
  text-overflow: ellipsis;
  overflow: hidden;
  height: 80px;
}
.tooltipbuttons {
  position: absolute;
  padding-right: 15px;
  top: 0px;
  right: 0px;
}
.tooltiptext {
  /*avoid the button to overlap on some docstring*/
  padding-right: 30px;
}
.ipython_tooltip {
  max-width: 700px;
  /*fade-in animation when inserted*/
  -webkit-animation: fadeOut 400ms;
  -moz-animation: fadeOut 400ms;
  animation: fadeOut 400ms;
  -webkit-animation: fadeIn 400ms;
  -moz-animation: fadeIn 400ms;
  animation: fadeIn 400ms;
  vertical-align: middle;
  background-color: #f7f7f7;
  overflow: visible;
  border: #ababab 1px solid;
  outline: none;
  padding: 3px;
  margin: 0px;
  padding-left: 7px;
  font-family: monospace;
  min-height: 50px;
  -moz-box-shadow: 0px 6px 10px -1px #adadad;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  border-radius: 2px;
  position: absolute;
  z-index: 1000;
}
.ipython_tooltip a {
  float: right;
}
.ipython_tooltip .tooltiptext pre {
  border: 0;
  border-radius: 0;
  font-size: 100%;
  background-color: #f7f7f7;
}
.pretooltiparrow {
  left: 0px;
  margin: 0px;
  top: -16px;
  width: 40px;
  height: 16px;
  overflow: hidden;
  position: absolute;
}
.pretooltiparrow:before {
  background-color: #f7f7f7;
  border: 1px #ababab solid;
  z-index: 11;
  content: &quot;&quot;;
  position: absolute;
  left: 15px;
  top: 10px;
  width: 25px;
  height: 25px;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
}
ul.typeahead-list i {
  margin-left: -10px;
  width: 18px;
}
ul.typeahead-list {
  max-height: 80vh;
  overflow: auto;
}
ul.typeahead-list &gt; li &gt; a {
  /** Firefox bug **/
  /* see https://github.com/jupyter/notebook/issues/559 */
  white-space: normal;
}
.cmd-palette .modal-body {
  padding: 7px;
}
.cmd-palette form {
  background: white;
}
.cmd-palette input {
  outline: none;
}
.no-shortcut {
  display: none;
}
.command-shortcut:before {
  content: &quot;(command)&quot;;
  padding-right: 3px;
  color: #777777;
}
.edit-shortcut:before {
  content: &quot;(edit)&quot;;
  padding-right: 3px;
  color: #777777;
}
#find-and-replace #replace-preview .match,
#find-and-replace #replace-preview .insert {
  background-color: #BBDEFB;
  border-color: #90CAF9;
  border-style: solid;
  border-width: 1px;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .match {
  background-color: #FFCDD2;
  border-color: #EF9A9A;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .insert {
  background-color: #C8E6C9;
  border-color: #A5D6A7;
  border-radius: 0px;
}
#find-and-replace #replace-preview {
  max-height: 60vh;
  overflow: auto;
}
#find-and-replace #replace-preview pre {
  padding: 5px 10px;
}
.terminal-app {
  background: #EEE;
}
.terminal-app #header {
  background: #fff;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.terminal-app .terminal {
  width: 100%;
  float: left;
  font-family: monospace;
  color: white;
  background: black;
  padding: 0.4em;
  border-radius: 2px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
}
.terminal-app .terminal,
.terminal-app .terminal dummy-screen {
  line-height: 1em;
  font-size: 14px;
}
.terminal-app .terminal .xterm-rows {
  padding: 10px;
}
.terminal-app .terminal-cursor {
  color: black;
  background: white;
}
.terminal-app #terminado-container {
  margin-top: 20px;
}
/*# sourceMappingURL=style.min.css.map */
    &lt;/style&gt;
&lt;style type=&quot;text/css&quot;&gt;
    .highlight .hll { background-color: #ffffcc }
.highlight  { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0000FF } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
    &lt;/style&gt;
&lt;style type=&quot;text/css&quot;&gt;
    
/* Temporary definitions which will become obsolete with Notebook release 5.0 */
.ansi-black-fg { color: #3E424D; }
.ansi-black-bg { background-color: #3E424D; }
.ansi-black-intense-fg { color: #282C36; }
.ansi-black-intense-bg { background-color: #282C36; }
.ansi-red-fg { color: #E75C58; }
.ansi-red-bg { background-color: #E75C58; }
.ansi-red-intense-fg { color: #B22B31; }
.ansi-red-intense-bg { background-color: #B22B31; }
.ansi-green-fg { color: #00A250; }
.ansi-green-bg { background-color: #00A250; }
.ansi-green-intense-fg { color: #007427; }
.ansi-green-intense-bg { background-color: #007427; }
.ansi-yellow-fg { color: #DDB62B; }
.ansi-yellow-bg { background-color: #DDB62B; }
.ansi-yellow-intense-fg { color: #B27D12; }
.ansi-yellow-intense-bg { background-color: #B27D12; }
.ansi-blue-fg { color: #208FFB; }
.ansi-blue-bg { background-color: #208FFB; }
.ansi-blue-intense-fg { color: #0065CA; }
.ansi-blue-intense-bg { background-color: #0065CA; }
.ansi-magenta-fg { color: #D160C4; }
.ansi-magenta-bg { background-color: #D160C4; }
.ansi-magenta-intense-fg { color: #A03196; }
.ansi-magenta-intense-bg { background-color: #A03196; }
.ansi-cyan-fg { color: #60C6C8; }
.ansi-cyan-bg { background-color: #60C6C8; }
.ansi-cyan-intense-fg { color: #258F8F; }
.ansi-cyan-intense-bg { background-color: #258F8F; }
.ansi-white-fg { color: #C5C1B4; }
.ansi-white-bg { background-color: #C5C1B4; }
.ansi-white-intense-fg { color: #A1A6B2; }
.ansi-white-intense-bg { background-color: #A1A6B2; }

.ansi-bold { font-weight: bold; }

    &lt;/style&gt;


&lt;style type=&quot;text/css&quot;&gt;
/* Overrides of notebook CSS for static HTML export */
body {
  overflow: visible;
  padding: 8px;
}

div#notebook {
  overflow: visible;
  border-top: none;
}@media print {
  div.cell {
    display: block;
    page-break-inside: avoid;
  } 
  div.output_wrapper { 
    display: block;
    page-break-inside: avoid; 
  }
  div.output { 
    display: block;
    page-break-inside: avoid; 
  }
}
&lt;/style&gt;

&lt;!-- Custom stylesheet, it must be in the same directory as the html file --&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;custom.css&quot;&gt;

&lt;!-- Loading mathjax macro --&gt;
&lt;!-- Load mathjax --&gt;
    &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_HTML&quot;&gt;&lt;/script&gt;
    &lt;!-- MathJax configuration --&gt;
    &lt;script type=&quot;text/x-mathjax-config&quot;&gt;
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ['$','$'], [&quot;\\(&quot;,&quot;\\)&quot;] ],
            displayMath: [ ['$$','$$'], [&quot;\\[&quot;,&quot;\\]&quot;] ],
            processEscapes: true,
            processEnvironments: true
        },
        // Center justify equations in code and markdown cells. Elsewhere
        // we use CSS to left justify single line equations in code cells.
        displayAlign: 'center',
        &quot;HTML-CSS&quot;: {
            styles: {'.MathJax_Display': {&quot;margin&quot;: 0}},
            linebreaks: { automatic: true }
        }
    });
    &lt;/script&gt;
    &lt;!-- End of mathjax configuration --&gt;

  &lt;div tabindex=&quot;-1&quot; id=&quot;notebook&quot; class=&quot;border-box-sizing&quot;&gt;
    &lt;div class=&quot;container&quot; id=&quot;notebook-container&quot;&gt;

&lt;div class=&quot;cell border-box-sizing text_cell rendered&quot;&gt;&lt;div class=&quot;prompt input_prompt&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;inner_cell&quot;&gt;
&lt;div class=&quot;text_cell_render border-box-sizing rendered_html&quot;&gt;
&lt;h2 id=&quot;1.-pandas-소개&quot;&gt;1. pandas 소개&lt;a class=&quot;anchor-link&quot; href=&quot;#1.-pandas-소개&quot;&gt;¶&lt;/a&gt;&lt;/h2&gt;&lt;h4 id=&quot;데이터-분석할-때,-정말-효자-라이브러리입니다.&quot;&gt;데이터 분석할 때, 정말 효자 라이브러리입니다.&lt;a class=&quot;anchor-link&quot; href=&quot;#데이터-분석할-때,-정말-효자-라이브러리입니다.&quot;&gt;¶&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;Python을 이용해서 데이터를 분석하는 프로젝트에서 유용하게 사용한 라이브러리입니다.&lt;/p&gt;
&lt;p&gt;pandas는 &lt;strong&gt;DataFrame&lt;/strong&gt; 이라는 자료형을 이용하여, 데이터를 저장하고 가공합니다.&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell rendered&quot;&gt;
&lt;div class=&quot;input&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In&amp;nbsp;[1]:&lt;/div&gt;
&lt;div class=&quot;inner_cell&quot;&gt;
    &lt;div class=&quot;input_area&quot;&gt;
&lt;div class=&quot; highlight hl-ipython3&quot;&gt;&lt;pre&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;pandas&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;pd&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;numpy&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;np&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;matrix&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;matrix&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]])&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;numpy.matrix : &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;matrix&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;df&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;pd&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;DataFrame&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]])&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;pandas DataFrame :&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;df&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;output_wrapper&quot;&gt;
&lt;div class=&quot;output&quot;&gt;


&lt;div class=&quot;output_area&quot;&gt;

&lt;div class=&quot;prompt&quot;&gt;&lt;/div&gt;


&lt;div class=&quot;output_subarea output_stream output_stdout output_text&quot;&gt;
&lt;pre&gt;numpy.matrix : 
 [[1 3]
 [2 5]]
pandas DataFrame :
    0  1
0  1  3
1  2  5
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing text_cell rendered&quot;&gt;&lt;div class=&quot;prompt input_prompt&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;inner_cell&quot;&gt;
&lt;div class=&quot;text_cell_render border-box-sizing rendered_html&quot;&gt;
&lt;p&gt;DataFrame은 numpy matrix에서 Matrix 행의 속성 &lt;strong&gt;index&lt;/strong&gt; 와 열의 속성 &lt;strong&gt;column&lt;/strong&gt; 이 적용된 형태를 합니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;데이터베이스 테이블&lt;/strong&gt;이나 &lt;strong&gt;엑셀&lt;/strong&gt;같은 표에 데이터를 저장하는 형태와 동일합니다.&lt;/p&gt;
&lt;p&gt;numpy.matrix를 사용하면서 불편한 점은 행렬 내부의 원소를 접근할 때 반드시 index 단위로 접근해야 했습니다.&lt;/p&gt;
&lt;p&gt;프로그램을 혼자 짤 때는 선택한 이 원소의 의미를  이해할 수 있지만, &lt;strong&gt;함께하는 프로젝트에서는 코드를 이해하는데 어렵습니다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;(거기다 난도가 있는 통계적 알고리즘 구현까지 들어가면 통계베이스 없는 저같은 개발자는 일일히 실행해야 겨우 의미를 알게 되요)&lt;/p&gt;
&lt;p&gt;하지만 pandas는 &lt;strong&gt;각각의 행과 열을 지정할 수 있어서, 선택하는 데이터가 어떤 속성을 가지는지 쉽게 이해가 가능합니다.&lt;/strong&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell rendered&quot;&gt;
&lt;div class=&quot;input&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In&amp;nbsp;[2]:&lt;/div&gt;
&lt;div class=&quot;inner_cell&quot;&gt;
    &lt;div class=&quot;input_area&quot;&gt;
&lt;div class=&quot; highlight hl-ipython3&quot;&gt;&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;matrix&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;matrix&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]])&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;A의 수학 성적 : &quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;matrix&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;df&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;pd&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;DataFrame&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]],&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;columns&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;math&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;computer&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;A&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;B&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;A의 수학 성적 : &quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;df&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;loc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;A&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;math&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;output_wrapper&quot;&gt;
&lt;div class=&quot;output&quot;&gt;


&lt;div class=&quot;output_area&quot;&gt;

&lt;div class=&quot;prompt&quot;&gt;&lt;/div&gt;


&lt;div class=&quot;output_subarea output_stream output_stdout output_text&quot;&gt;
&lt;pre&gt;A의 수학 성적 :  1
A의 수학 성적 :  1
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing text_cell rendered&quot;&gt;&lt;div class=&quot;prompt input_prompt&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;inner_cell&quot;&gt;
&lt;div class=&quot;text_cell_render border-box-sizing rendered_html&quot;&gt;
&lt;p&gt;또한 DataFrame 클래스안의 메소드 만으로도 프로젝트에서 사용하는 합, 평균, 분산, 표준 편차 등의 단순 통계부터&lt;/p&gt;
&lt;p&gt;데이터를 재구성하기 위한 이동 평균, 이동 합, Resample, Groupby와 시각화까지 지원합니다.&lt;/p&gt;
&lt;p&gt;이번 시간에는 시각화 기능을 알아 보도록 해요.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;h2 id=&quot;2.-시각화&quot;&gt;2. 시각화&lt;a class=&quot;anchor-link&quot; href=&quot;#2.-시각화&quot;&gt;¶&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;DataFrame의 plot을 이용하면 다양한 형태의 그래프를 그릴 수 있습니다.&lt;/p&gt;
&lt;p&gt;numpy Matrix를 그래프로 그린다면 matplotlib 라이브러리를 사용해서 설정을 해야한다는 것에 비해면 엄청 간단한 방법으로 그래프를 그릴 수 있어요&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;DataFrame.plot.bar() :&lt;/strong&gt; 막대 그래프&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DataFrame.plot.line() :&lt;/strong&gt; 선 그래프&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DataFrame.plot.scatter(x, y) :&lt;/strong&gt; 산포도 그래프&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DataFrame.plot.box() :&lt;/strong&gt; Box 그래프&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;앞서 사용한 A와 B의 성적표로 막대 그래프와 선 그래프를 그려 봅시다&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell rendered&quot;&gt;
&lt;div class=&quot;input&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In&amp;nbsp;[3]:&lt;/div&gt;
&lt;div class=&quot;inner_cell&quot;&gt;
    &lt;div class=&quot;input_area&quot;&gt;
&lt;div class=&quot; highlight hl-ipython3&quot;&gt;&lt;pre&gt;&lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot; %matplotlib inline : 주피터 노트북 설정 때문에 사용한 거에요, &quot;&quot;&quot;&lt;/span&gt; 
&lt;span class=&quot;o&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;matplotlib&lt;/span&gt; inline 

&lt;span class=&quot;n&quot;&gt;df&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;plot&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;bar&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;df&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;plot&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;df&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;plot&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;box&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;output_wrapper&quot;&gt;
&lt;div class=&quot;output&quot;&gt;


&lt;div class=&quot;output_area&quot;&gt;

&lt;div class=&quot;prompt output_prompt&quot;&gt;Out[3]:&lt;/div&gt;




&lt;div class=&quot;output_text output_subarea output_execute_result&quot;&gt;
&lt;pre&gt;&amp;lt;matplotlib.axes._subplots.AxesSubplot at 0x1e284adb9b0&amp;gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;div class=&quot;output_area&quot;&gt;

&lt;div class=&quot;prompt&quot;&gt;&lt;/div&gt;




&lt;div class=&quot;output_png output_subarea &quot;&gt;
&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW4AAAD5CAYAAAAHtt/AAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz&amp;#10;AAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo&amp;#10;dHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAADoBJREFUeJzt3X9s1fV+x/HXuz+kN0BYkEoWersD&amp;#10;iRMughTrzQImtHSiV8b2x1TuFRHCNU1MjGhE449ggARjotGJu1nGtuuvyQWnEhdlE01BRoIgPypS&amp;#10;gUhcdQ27KtUx6NYJ8t4fLU2tp/SL7fd8+26fj8TYnvPt97zPSfPMl8/5nm/N3QUAiKMo6wEAABeH&amp;#10;cANAMIQbAIIh3AAQDOEGgGAINwAEQ7gBIBjCDQDBEG4ACKYkjZ2OGzfOc7lcGrsGgCFp3759J9y9&amp;#10;PMm2qYQ7l8tp7969aewaAIYkM/ss6bYslQBAMIQbAIIh3AAQTCpr3PmcOXNGLS0tam9vL9RDDkll&amp;#10;ZWWqqKhQaWlp1qMAyEjBwt3S0qLRo0crl8vJzAr1sEOKu6u1tVUtLS2aOHFi1uMAyEiicJtZs6RT&amp;#10;kr6TdNbdqy/2gdrb24l2P5mZLr30Un311VdZjwIgQxdzxF3r7if682BEu/94DQHw5iQABJP0iNsl&amp;#10;bTUzl/S37r6+vw+ce/Ct/u7ie5ofnz+g++uusbFRx48f14033ihJWrVqlUaNGqUVK1ak9pgA0Juk&amp;#10;4Z7t7sfN7DJJ75jZEXff0X0DM6uXVC9JlZWVAzxmthobG7V3796ucAPotGpM1hMks+pk1hMMqERL&amp;#10;Je5+vPP/X0raLOnnebZZ7+7V7l5dXp7o4/YF1dzcrMmTJ+uOO+7QlVdeqUWLFundd9/V7Nmzdfnl&amp;#10;l2vPnj3as2ePZs2apaqqKs2aNUtHjx7Vt99+q0cffVSbNm3SjBkztGnTJknSxx9/rJqaGk2aNEnr&amp;#10;1q3L+NkBGE76DLeZjTSz0ee/ljRP0qG0B0vDsWPHtHz5ch08eFBHjhzRhg0btHPnTj355JN67LHH&amp;#10;NHnyZO3YsUMHDhzQmjVr9PDDD+uSSy7RmjVrtHDhQjU2NmrhwoWSpCNHjujtt9/Wnj17tHr1ap05&amp;#10;cybjZwdguEiyVDJe0ubOsxlKJG1w939NdaqUTJw4UdOmTZMkTZ06VXV1dTIzTZs2Tc3NzTp58qSW&amp;#10;LFmiTz75RGZ2wRjPnz9fI0aM0IgRI3TZZZfpiy++UEVFRaGeCoBhrM9wu/unkq4qwCypGzFiRNfX&amp;#10;RUVFXd8XFRXp7NmzWrlypWpra7V582Y1NzerpqYm0b6Ki4t19uzZ1OYGgO44HbCbkydPasKECZKk&amp;#10;559/vuv20aNH69SpUxlNBQDfV7CPvPeU5ul7P9YDDzygJUuW6KmnntLcuXO7bq+trdXjjz+uGTNm&amp;#10;6KGHHspwQgCQzN0HfKfV1dXe8w8pHD58WFOmTBnwxxqOeC0xaHA64IAxs31JLyfCUgkABEO4ASAY&amp;#10;wg0AwRBuAAiGcANAMIQbAILJ7DzuAT+NKMDpPj0vDwsAPwZH3AXU2NioLVu2XNTP8FF6AD0Nq3C/&amp;#10;+OKLmj59uq666iotXrxYn332merq6jR9+nTV1dXp888/lyQtXbpUd955p2prazVp0iS99957WrZs&amp;#10;maZMmaKlS5d27W/UqFG67777NHPmTNXV1XX9Lciamhqd/wDSiRMnlMvl8l4etq2tTcuWLdM111yj&amp;#10;qqoqvfHGG5I6Pm5/8803a8GCBZo3b15hXyQAg96wCXdTU5PWrl2rhoYGffjhh3rmmWd011136fbb&amp;#10;b9fBgwe1aNEi3X333V3bf/PNN2poaNDTTz+tBQsW6N5771VTU5M++ugjNTY2SpLa2to0c+ZM7d+/&amp;#10;X3PmzNHq1at7ffx8l4ddu3at5s6dqw8++EDbtm3T/fffr7a2NknSrl279MILL6ihoSHdFwZAOMMm&amp;#10;3A0NDbrppps0btw4SdLYsWO1a9cu3XrrrZKkxYsXa+fOnV3bL1iwoOuSr+PHj9e0adNUVFSkqVOn&amp;#10;qrm5WVLHVQXPX5/7tttu+97PJ7F169aua6DU1NSovb2966j/uuuu09ixY/v7tAEMQdm9OVlg7t7n&amp;#10;X0jvfn/3S772vBxsb+vO53++pKRE586dkyS1t7dfcKbXXntNV1xxxfdu3717t0aOHHnBWQEMX8Pm&amp;#10;iLuurk6vvPKKWltbJUlff/21Zs2apY0bN0qSXn75ZV177bUXtc9z587p1VdflSRt2LCh6+dzuZz2&amp;#10;7dsnSV33Sz+8POz111+vZ599Vucv9HXgwIEf+ewADCcZng5Y2NP3pk6dqkceeURz5sxRcXGxqqqq&amp;#10;tG7dOi1btkxPPPGEysvL9dxzz13UPkeOHKmmpiZdffXVGjNmTNffo1yxYoVuueUWvfTSSxe8POzK&amp;#10;lSt1zz33aPr06XJ35XI5vfnmmwP6vAEMPVzWtR9GjRql06dPF/xxh+JriaC4rOuA4bKuADCEEe5+&amp;#10;yOJoGwAKGu40lmWGG15DAAULd1lZmVpbWwlPP7i7WltbVVZWlvUoADJUsLNKKioq1NLS0vWxcPw4&amp;#10;ZWVlqqioyHoMABkqWLhLS0s1ceLEQj0cAAxZvDkJAMEQbgAIhnADQDCEGwCCIdwAEAzhBoBgCDcA&amp;#10;BEO4ASCYxOE2s2IzO2BmXDAaADJ0MUfcyyUdTmsQAEAyicJtZhWS5kv6+3THAQD0JekR919JekDS&amp;#10;uRRnAQAk0Ge4zezPJH3p7vv62K7ezPaa2V6uAAgA6UlyxD1b0p+bWbOkjZLmmtk/9tzI3de7e7W7&amp;#10;V5eXlw/wmACA8/oMt7s/5O4V7p6T9EtJDe5+W+qTAQDy4jxuAAjmov6Qgrtvl7Q9lUkAAIlwxA0A&amp;#10;wRBuAAiGcANAMIQbAIIh3AAQDOEGgGAINwAEQ7gBIBjCDQDBEG4ACIZwA0AwhBsAgiHcABAM4QaA&amp;#10;YAg3AARDuAEgGMINAMEQbgAIhnADQDCEGwCCIdwAEAzhBoBgCDcABEO4ASAYwg0AwRBuAAiGcANA&amp;#10;MIQbAIIh3AAQDOEGgGAINwAEQ7gBIBjCDQDB9BluMyszsz1m9qGZNZnZ6kIMBgDIryTBNv8naa67&amp;#10;nzazUkk7zexf3P39lGcDAOTRZ7jd3SWd7vy2tPM/T3MoAEDvEq1xm1mxmTVK+lLSO+6+O92xAAC9&amp;#10;SbJUInf/TtIMM/sDSZvN7Ep3P9R9GzOrl1QvSZWVlQM+6LC1akzWEySz6mTWEwDDxkWdVeLu/yVp&amp;#10;u6Qb8ty33t2r3b26vLx8gMYDAPSU5KyS8s4jbZnZTyT9qaQjaQ8GAMgvyVLJH0p6wcyK1RH6V9z9&amp;#10;zXTHAgD0JslZJQclVRVgFgBAAnxyEgCCIdwAEAzhBoBgCDcABEO4ASAYwg0AwRBuAAiGcANAMIQb&amp;#10;AIIh3AAQDOEGgGAINwAEQ7gBIBjCDQDBEG4ACIZwA0AwhBsAgiHcABAM4QaAYAg3AARDuAEgGMIN&amp;#10;AMEQbgAIhnADQDCEGwCCIdwAEAzhBoBgCDcABEO4ASAYwg0AwRBuAAiGcANAMH2G28x+ambbzOyw&amp;#10;mTWZ2fJCDAYAyK8kwTZnJd3n7vvNbLSkfWb2jrt/nPJsAIA8+jzidvf/dPf9nV+fknRY0oS0BwMA&amp;#10;5HdRa9xmlpNUJWl3GsMAAPqWZKlEkmRmoyS9Juked//vPPfXS6qXpMrKygEbEBiOcg++lfUIiTSX&amp;#10;ZT3B8JToiNvMStUR7Zfd/fV827j7enevdvfq8vLygZwRANBNkrNKTNI/SDrs7k+lPxIA4EKSHHHP&amp;#10;lrRY0lwza+z878aU5wIA9KLPNW533ynJCjALACABPjkJAMEQbgAIhnADQDCEGwCCIdwAEAzhBoBg&amp;#10;CDcABEO4ASAYwg0AwRBuAAiGcANAMIQbAIIh3AAQDOEGgGAINwAEQ7gBIBjCDQDBEG4ACIZwA0Aw&amp;#10;hBsAgiHcABAM4QaAYAg3AARDuAEgGMINAMEQbgAIhnADQDCEGwCCIdwAEAzhBoBgCDcABEO4ASAY&amp;#10;wg0AwfQZbjP7rZl9aWaHCjEQAODCkhxxPy/phpTnAAAk1Ge43X2HpK8LMAsAIAHWuAEgmJKB2pGZ&amp;#10;1Uuql6TKysqB2m1qcg++lfUIiTSXZT0BgMFmwI643X29u1e7e3V5eflA7RYA0ANLJQAQTJLTAX8n&amp;#10;aZekK8ysxcx+nf5YAIDe9LnG7e6/KsQgAIBkWCoBgGAINwAEQ7gBIBjCDQDBEG4ACIZwA0AwhBsA&amp;#10;giHcABAM4QaAYAg3AARDuAEgGMINAMEQbgAIhnADQDCEGwCCIdwAEAzhBoBgCDcABEO4ASAYwg0A&amp;#10;wRBuAAiGcANAMIQbAIIh3AAQDOEGgGAINwAEQ7gBIBjCDQDBEG4ACIZwA0AwhBsAgiHcABBMonCb&amp;#10;2Q1mdtTMjpnZg2kPBQDoXZ/hNrNiSb+R9AtJP5P0KzP7WdqDAQDyS3LE/XNJx9z9U3f/VtJGSX+R&amp;#10;7lgAgN4kCfcESf/R7fuWztsAABkoSbCN5bnNf7CRWb2k+s5vT5vZ0f4Mhg4mjZN0Ius5+rQ6368J&amp;#10;hjp+PwfUHyXdMEm4WyT9tNv3FZKO99zI3ddLWp/0gZGMme119+qs5wDy4fczG0mWSj6QdLmZTTSz&amp;#10;SyT9UtI/pzsWAKA3fR5xu/tZM7tL0tuSiiX91t2bUp8MAJBXkqUSufsWSVtSngX5sfyEwYzfzwyY&amp;#10;+w/eZwQADGJ85B0AgiHcABAM4R7kzGy2mf0m6zkADB6J3pxEYZnZDEm3SrpF0r9Lej3biYD8zGyc&amp;#10;pFbnzbKC4oh7kDCzPzazR83ssKS/VsdlBszda9392YzHA2Rmf2Jm283sdTOrMrNDkg5J+sLMbsh6&amp;#10;vuGEs0oGCTM7J+nfJP3a3Y913vapu0/KdjKgg5ntlfSwpDHqOA3wF+7+vplNlvQ7d6/KdMBhhCPu&amp;#10;weMvJf1e0jYz+zszq1P+68QAWSlx963u/k+Sfu/u70uSux/JeK5hh3APEu6+2d0XSposabukeyWN&amp;#10;N7O/MbN5mQ4HdDjX7ev/7XEf/3QvIJZKBjEzGyvpZkkL3X1u1vNgeDOz7yS1qeNfgj+R9D/n75JU&amp;#10;5u6lWc023BBuAAiGpRIACIZwA0AwhBsAgiHcABAM4QaAYP4fqNOeZrgFYSkAAAAASUVORK5CYII=&amp;#10;&quot;&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;div class=&quot;output_area&quot;&gt;

&lt;div class=&quot;prompt&quot;&gt;&lt;/div&gt;




&lt;div class=&quot;output_png output_subarea &quot;&gt;
&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz&amp;#10;AAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo&amp;#10;dHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xt03XWZ7/H3k3uzk96y02uaZsde&amp;#10;gNIrKQhU6IWbCOIoCs6IRZzVJaODzMgwgiMo5zhHl6NrjjJnPB1FrYMDjnjpeJQWBcEi4LRYkZul&amp;#10;tGmbtrRN2qa5X5/zx++X7J00bXbaJDvZ+bzWyurev/3t3t9u4OHp9/d9vo+5OyIikl4yUj0BEREZ&amp;#10;fAruIiJpSMFdRCQNKbiLiKQhBXcRkTSk4C4ikoYU3EVE0pCCu4hIGlJwFxFJQ1mp+uBoNOplZWWp&amp;#10;+ngRkVFp27Zt1e5e3N+4lAX3srIytm7dmqqPFxEZlcxsTzLjtCwjIpKGFNxFRNKQgruISBpK2Zp7&amp;#10;X9ra2qiqqqK5uTnVUxn18vLyKCkpITs7O9VTEZEUGFHBvaqqisLCQsrKyjCzVE9n1HJ3ampqqKqq&amp;#10;IhaLpXo6IpICSS3LmFmlmf3RzLab2UlbXCzwNTPbaWYvmdmyM5lMc3MzRUVFCuxnycwoKirS34BE&amp;#10;xrCBZO6r3L36FK+9E5gb/lwE/Gv464ApsA8OfY8iY9tgLcvcAGzwoGff82Y20cymu/vBQXp/EZGx&amp;#10;7cQBeGNz0sOTDe4ObDYzB/6vu6/v9fpMYF/C86rwWo/gbmbrgHUApaWlSU9ytNi+fTsHDhzg2muv&amp;#10;BeBzn/scBQUF3HXXXSmemYiMOp2dcOBF2LEJdjwOb700oN+ebHC/1N0PmNkU4Akze93dn0l4va81&amp;#10;gJM6b4f/U1gPUFFRkXadubdv387WrVu7g7uIyIA0n4A3nwwC+s4noOEIWAaUXAhr7od5V8Pnz0/q&amp;#10;rZIK7u5+IPz1sJn9GLgQSAzuVcCshOclwIGkZjDCVFZWcs0117BixQqef/55Fi9ezEc+8hHuv/9+&amp;#10;Dh8+zMMPPwzAnXfeSVNTE+PGjePb3/42sViM++67j6amJrZs2cI999wDwKuvvsrKlSvZu3cvd955&amp;#10;J3fccUcq/3giMtJU74Q3wux8z2+hsx3yJsCcK4NgPucKyJ884LftN7ibWQTIcPe68PFVwAO9hm0E&amp;#10;PmFmjxDcSK092/X2z//XK7x64MTZvMVJzpsxnvuvX9DvuJ07d/Kf//mfrF+/nuXLl/P973+fLVu2&amp;#10;sHHjRv7xH/+RDRs28Mwzz5CVlcUvf/lL7r33Xh577DEeeOABtm7dyoMPPggEyzKvv/46Tz31FHV1&amp;#10;dcyfP5/bb79de89FxrL2Vtj723C5ZRMcfTO4XnwOXPxxmHdNkKlnnt0t0WR+91Tgx+Huiyzg++7+&amp;#10;uJl9DMDdvwH8HLgW2Ak0Ah85q1mlWCwWY+HChQAsWLCANWvWYGYsXLiQyspKamtrWbt2LW+88QZm&amp;#10;Rltb2ynf613vehe5ubnk5uYyZcoUDh06RElJyXD9UURkJKg/DG88EWTnbz4FrXWQmQuxd8BFH4N5&amp;#10;V8GkskH9yH6Du7vvAhb3cf0bCY8d+PhgTiyZDHuo5Obmdj/OyMjofp6RkUF7ezuf/exnWbVqFT/+&amp;#10;8Y+prKxk5cqVSb1XZmYm7e3tQzZvERkh3OHgH4LM/I1NsH9bcL1wOpz/3iA7L78cciJDNoURVaE6&amp;#10;WtTW1jJz5kwAvvOd73RfLywspK6uLkWzEpGUaqmH3U8H2fkbT0DdQcBg5gWw6jPB+vm0RTBMNSgK&amp;#10;7mfg7rvvZu3atXz1q19l9erV3ddXrVrFF7/4RZYsWdJ9Q1VE0tixStixOQjolb+BjlbIKYQ5q4Ps&amp;#10;fM6VUNBvX40hYcGKyvCrqKjw3s06XnvtNc4999yUzCcd6fsUGWQd7bDvhTA73wxHXg+uF82BuVcH&amp;#10;2XnpxZCVM2RTMLNt7l7R3zhl7iIip9N4NFhmeWMT7PwlNNdCRhbMvhSWrQ0CetHbUj3Lkyi4i4gk&amp;#10;cofDrwbZ+Y7NUPU78E6IFMM51wXBvHwV5I1P9UxPS8FdRKStCXY/E997fqIquD59MVz2d8GSy4yl&amp;#10;kDF6+hspuIvI2FRbFW5V3Ay7nob2JsiOQPlKuPxumHsVjJ+e6lmeMQV3ERkbOjugamtY6r8JDr0c&amp;#10;XJ84G5Z9OCgkmr0CsvNSO89BouAuIumr6Ti8+aswQ38Cmo6CZULp2+HKB4LlluL5w7b3fDgpuI9A&amp;#10;vY8OFpEkuUP1jvja+d7nwDtg3KRgmWXuVTBnTfA8zSm4j0BncnRwe3s7WVn6xyljUHsLVG4J1s53&amp;#10;PB4UFgFMWQCXfjI8iKsCMjJTOs3hNnpu/Q6jDRs2sGjRIhYvXswtt9zCnj17WLNmDYsWLWLNmjXs&amp;#10;3bsXgFtvvZXbb7+dVatWUV5eztNPP81tt93Gueeey6233tr9fgUFBXzqU59i2bJlrFmzhiNHjgCw&amp;#10;cuVKugq5qqurKSsro7W1lfvuu49HH32UJUuW8Oijj9LQ0MBtt93G8uXLWbp0KT/96U+B4OiD97//&amp;#10;/Vx//fVcddVVw/sliaRS3Vvw4gZ45C/gSzH49/fCtu9AdD686ytw58vwV7+FK+6H0ovGXGCHkZy5&amp;#10;/+LT8NYfB/c9py2Ed37xtENeeeUVvvCFL/Dss88SjUY5evQoa9eu5cMf/jBr167loYce4o477uAn&amp;#10;P/kJAMeOHePJJ59k48aNXH/99Tz77LN885vfZPny5Wzfvp0lS5bQ0NDAsmXL+MpXvsIDDzzA5z//&amp;#10;+e5jgXvLyck56ejge++9l9WrV/PQQw9x/PhxLrzwQq644goAnnvuOV566SUmTx74ec8io0ZnJxz8&amp;#10;fbzU/+D24Pr4mbD4pmDtPHYZ5OSndp4jyMgN7iny5JNPcuONNxKNRgGYPHkyzz33HD/60Y8AuOWW&amp;#10;W7j77ru7x19//fXdxwFPnTq1x1HBlZWVLFmyhIyMDG666SYAPvShD/He9753QHPavHkzGzdu5J/+&amp;#10;6Z8AaG5u7v7bw5VXXqnALumppS44Hrdru2LDYcCgZDms/myw3DJ1QVreDB0MIze495NhDxV3x/r5&amp;#10;lyXx9cTjgHsfFXyq4327fn9WVhadnZ1AELBPN6fHHnuM+fPn97j+wgsvEIkM3ZGhIsOu5s342nnl&amp;#10;s9DZBrkTgpugXV2JItFUz3JUSHrN3cwyzez3ZvazPl671cyOmNn28OcvB3eaw2fNmjX84Ac/oKam&amp;#10;BoCjR49yySWX8MgjjwDw8MMPs2LFigG9Z2dnJz/84Q8B+P73v9/9+8vKyti2LTjnuet1OPno4Kuv&amp;#10;vpqvf/3rdB3y9vvf//4M/3QiI0xHW1AZuukz8PUK+PoyePzTcOIgvP1jcOv/g7vfhPd/GxbfrMA+&amp;#10;AAPJ3D8JvAac6kCFR939E2c/pdRasGABn/nMZ7j88svJzMxk6dKlfO1rX+O2227jy1/+MsXFxXz7&amp;#10;298e0HtGIhFeeeUVLrjgAiZMmMCjjz4KwF133cUHPvABvve975326ODPfvaz3HnnnSxatAh3p6ys&amp;#10;jJ/97KT/x4qMDg3VCV2JnoSWE5CZA2UrYPlfBsVEk8tTPctRL6kjf82sBPgu8AXgb939ul6v3wpU&amp;#10;DCS4j6UjfwsKCqivrx/2z03X71NGGfdgc0RXV6KqrYBDwdRg3/m8a4KS/9yCFE90dBjsI3//Gbgb&amp;#10;KDzNmPeZ2WXADuBv3H1fku8tIummtSE8iCs8WbHuQHB9xjJY+emwK9HiUXUQ12jTb3A3s+uAw+6+&amp;#10;zcxWnmLYfwH/4e4tYePs7wKrew8ys3XAOoDS0tIznvRok4qsXWTYHdsT3gzdFAT2jhbIKYC3rYJ5&amp;#10;nwm6EhVOTfUsx4xkMvdLgXeb2bVAHjDezP7d3T/UNcDdaxLG/xvwpb7eyN3XA+shWJY5xZh+d6tI&amp;#10;/1LVYUvGkI52qPrvMDvfBEdeC65PikHFbUF2PvsSyMo9/fvIkOg3uLv7PcA9AGHmfldiYA+vT3f3&amp;#10;g+HTdxPceB2wvLw8ampqKCoqUoA/C+5OTU0NeXnpcbqdjCCNR2Hnr4K18zeegObjQVei0oth6RfC&amp;#10;rkRztPd8BDjjfe5m9gCw1d03AneY2buBduAocOuZvGdJSQlVVVXd5fly5vLy8igpKUn1NGS0cw/6&amp;#10;hHatne97PuhKlF8E898ZBPO3rYa8CameqfQyohpki8gI0NYMlb+Jn6xYG1RDM21hsLNl7tUwc9mY&amp;#10;PK9lJFCDbBFJ3okD8WC++2loa4SsccEWxXf8bbBlccLMVM9SBkDBXWQs6uyA/S+GXYkejx/SN6EU&amp;#10;lvxFsNxStgKyx6V2nnLGFNxFxorm2qAidMfmYMtiYzVYBsy6CK74XLDkUnyOboamCQV3kXRWvTO8&amp;#10;Gfp40JWosx3yJsLcK4O18zlrIF+niqYjBXeRdNLeCnuejZ+seHRXcL34XLj4E8FyS8mFkKn/9NOd&amp;#10;/gmLjHb1h+PB/M1fQ2sdZOYGzSve/lfBzdBJs1M9SxlmCu4io01nJ7z1h3hXogMvBtcLp8PC9wXL&amp;#10;LeWXQ47O+h/LFNxFRoOWetj16yCYv/EE1L9F0JWoAlb9Q3gQ10LdDJVuCu4iI9XR3QldibZARyvk&amp;#10;jg8qQuddE3QlKihO9SxlhFJwFxkpOtpg3wvxUv/qPwXXi+bCheuC7Lz0YsjMTu08ZVRQcBdJpYYa&amp;#10;2PnL8Gbor4K96BnZUHYpXHBreBDX21I9SxmFFNxFhpM7HHolXDvfDPt+BzhEiuGc64NgXr4S8k7V&amp;#10;zVIkOQruIkOttTE8iCtcbjlRFVyfvgQuvzsI6NOXqiuRDCoFd5GhcHxfeG7L5uAgrvZmyI4EXYlW&amp;#10;/n2w97xwWqpnKWlMwV1kMHR2BI2fu5ZbDr0cXJ84G5atjR/Epa5EMkwU3EXOVNOxsCvR5mDvedNR&amp;#10;sMxgR8uV/yMI6NF52nsuKZF0cDezTGArsN/dr+v1Wi6wAbgAqAFucvfKQZynSOq5Q/WOeM/Qvc+D&amp;#10;d8C4ycFBXF1dicZNSvVMRQaUuX+SoDdqX7fxPwocc/c5ZnYzQYPsmwZhfiKp1dYMe7bES/2P7wmu&amp;#10;Tz0fVtwZlPqXVKgrkYw4SQV3MysB3gV8AfjbPobcAHwufPxD4EEzM09VDz+Rs3HiYFgZuiko+W9r&amp;#10;gKw8iF0Ol34yuBk6cVaqZylyWslm7v8M3A0UnuL1mcA+AHdvN7NaoAioPusZigy1zk448Pt4V6KD&amp;#10;fwiujy+BxTeHN0PfATn5qZ2nyAD0G9zN7DrgsLtvM7OVpxrWx7WTsnYzWwesAygtLR3ANEUGWfMJ&amp;#10;2PVUvCtRw+GgK1HJclhzX3B2y5TzdDNURq1kMvdLgXeb2bVAHjDezP7d3T+UMKYKmAVUmVkWMAE4&amp;#10;2vuN3H09sB6goqJCSzYyvGreDJtAPw57fgudbZA3ITiAa+7Vwa+RolTPUmRQ9Bvc3f0e4B6AMHO/&amp;#10;q1dgB9gIrAWeA24EntR6u6Rce2vQWm7HpmDJpWZncD06H95+e7DcMusiHcQlaemM97mb2QPAVnff&amp;#10;CHwL+J6Z7STI2G8epPmJDEz9Edj5RHgQ11PQcgIyc4I18wvXBTdDJ8dSPUuRITeg4O7uvwZ+HT6+&amp;#10;L+F6M/D+wZyYSFLc4a2X4lsV928DHAqmwYL3BGvnscshtyDVMxUZVqpQldGntQF2PR3vSlR3ILg+&amp;#10;8wJYeU/YlWiRDuKSMU3BXUaHY3via+e7fwMdLZBTEHYluhrmXAmFU1M9S5ERQ8FdRqaOdqj6XfyY&amp;#10;3COvBdcnl8Pyj4ZdiS6BrJzUzlNkhFJwl5Gj8WhwENeOx4PuRM3HISMLZl8CSz8UrJ9H56R6liKj&amp;#10;goK7pI47HH4toSvRC+CdkB+F+deGB3GtCvaii8iAKLjL8Gprgsot8ZMVa/cF16ctgnd8KsjOZyzT&amp;#10;zVCRs6TgLkOvdn+8K9GuX0N7E2TnB71CL7sr2Hs+fkaKJymSXhTcZfB1dgT7zXdsCn4O/TG4PrE0&amp;#10;vnZetgKy81I7T5E0puAug6O5NqEr0WZorAm6Es26CK74fLB+XnyODuISGSYK7nJm3IOzWrq7Ej0H&amp;#10;ne1BF6I5CV2J8ieneqYiY5KCuySvvQX2PBsv9T+2O7g+5Ty45K/DrkTLIVP/Womkmv4rlNOrOxQu&amp;#10;tWwKDuJqrYfMXIhdBhd/PMjQJ+psfpGRRsFdeurshIPbwzZzjwcdigAKZ8DC9wfBPHYZ5ERSO08R&amp;#10;OS0Fd4GWumCLYtdBXPWHAAsaP6/+h2C5ZdpC3QwVGUUU3Meqo7via+d7noWOVsgdD3PWBMF87pUQ&amp;#10;iaZ6liJyhhTcx4qONtj7fFhMtAmqdwTXi+YGTSzmXQOlb1dXIpE0kUyD7DzgGSA3HP9Dd7+/15hb&amp;#10;gS8D+8NLD7r7Nwd3qjJgDTXxrkQ7n4SWWsjIDgqIKm4LKkOL3pbqWYrIEEgmc28BVrt7vZllA1vM&amp;#10;7Bfu/nyvcY+6+ycGf4qSNHc49HL8mNyq/wYcIlPgvOuD7Lx8JeQWpniiIjLUkmmQ7UB9+DQ7/FHz&amp;#10;65GitRF2PxM/WfFE+JenGUvh8r8PdrdMX6KDuETGmKTW3M0sE9gGzAH+xd1f6GPY+8zsMmAH8Dfu&amp;#10;vq+P91kHrAMoLdXe6DN2fG/YlWhzENjbmyE7EhyPu/LTwXJL4bRUz1JEUsiCxDzJwWYTgR8Df+3u&amp;#10;LydcLwLq3b3FzD4GfMDdV5/uvSoqKnzr1q1nOO0xprMjWGLpWm45/EpwfVJZsNQy72qYfSlk5aZ0&amp;#10;miIy9Mxsm7tX9DduQLtl3P24mf0auAZ4OeF6TcKwfwO+NJD3lT40HQu7Em0Kboo2HQsO4pp9CVz1&amp;#10;P4PtitG52nsuIn1KZrdMMdAWBvZxwBX0Ct5mNt3dD4ZP3w28NugzTXfucORP8bXzvc+Dd0B+URDI&amp;#10;uw7iGjcx1TMVkVEgmcx9OvDdcN09A/iBu//MzB4Atrr7RuAOM3s30A4cBW4dqgmnlbbmoCvRG5uC&amp;#10;oH58b3B96kJYcWew5DLzAsjITO08RWTUGdCa+2Aas2vuJw4mdCV6CtoaIWsclF8eZOdzr4IJJame&amp;#10;pYiMUEOy5i5noLMzOHxrx+PBz1svBdcnzIIlfx4sucTeAdnjUjtPEUkrCu5DofkEvPlkvCtRwxGw&amp;#10;DCi5ENbcH2ToU87TzVARGTIK7oOl5s14V6I9v4XONsibAHOuCNbO51yhrkQiMmwU3M9Ueyvs/W38&amp;#10;ZMWjbwbXi8+Bi/8qWG6ZdZG6EolISijyDET94eC88x2Ph12J6iAzB8reARd9DOZdFRQWiYikmIL7&amp;#10;6bjDwT/EuxLtfxFwKJwO57837Ep0OeQWpHqmIiI9KLj31trQsytR3UHAgv3mq+4NAvq0RboZKiIj&amp;#10;moI7wLHK+Np55RboaIGcQpizOt6VqGBKqmcpIpK0sRncO9ph3wvxUv8jrwfXJ78Nlv9lkJ2XXgxZ&amp;#10;Oamdp4jIGRo7wb3xKOz8ZdiV6JfQXAsZWcFpiss+HB7ENSfVsxQRGRTpG9zd4fCrCV2JfgfeCZFi&amp;#10;OOe6oMz/bauCvegiImkmvYJ7WxPs/k18uaU27BcyfTG8466gmGjGUnUlEpG0N/qDe+3+8CCuTbDr&amp;#10;aWhvgux8KF8Fl/1dkKGPn57qWYqIDKvRF9w7O2D/tvhyy6E/BtcnlsKyW8KuRCsgOy+18xQRSaHR&amp;#10;EdybjsObvwqC+c4noLEm6EpU+na44vPBckvxfO09FxEJJdOJKQ94BsgNx//Q3e/vNSYX2ABcANQA&amp;#10;N7l75RnPyh2q34ivne/5bdCVaNwkmHNlkJ3PWRM8FxGRkySTubcAq9293syygS1m9gt3fz5hzEeB&amp;#10;Y+4+x8xuJmjDd9OAZtLeEnYlCouJjlUG16csgEs/GQT0kuXqSiQikoR+g7sHrZrqw6fZ4U/v9k03&amp;#10;AJ8LH/8QeNDMzPtr81T3VhjMNwUHcbU1QFYexC6DS/462Hs+cdZA/jwiIkKSa+5h/9RtwBzgX9z9&amp;#10;hV5DZgL7ANy93cxqgSKg+pRveuRP8JX5wePxM2HxTWFXossgJ3+gfw4REUmQVHB39w5giZlNBH5s&amp;#10;Zue7+8sJQ/q6k3lS1m5m64B1AItmjIPVYVeiqefrZqiIyCAaUDWPux8Hfg1c0+ulKmAWgJllAROA&amp;#10;o338/vXuXuHuFdnTz4PL7oJpCxXYRUQGWb/B3cyKw4wdMxsHXAG83mvYRmBt+PhG4Ml+19tFRGTI&amp;#10;JLMsMx34brjungH8wN1/ZmYPAFvdfSPwLeB7ZraTIGO/echmLCIi/Upmt8xLwNI+rt+X8LgZeP/g&amp;#10;Tk1ERM6UTtASEUlDCu4iImlIwV1EJA0puIuIpCEFdxGRNKTgLiKShhTcRUTSkIK7iEgaUnAXEUlD&amp;#10;Cu4iImlIwV1EJA0puIuIpCEFdxGRNKTgLiKShhTcRUTSkIK7iEgaSqbN3iwze8rMXjOzV8zsk32M&amp;#10;WWlmtWa2Pfy5r6/3EhGR4ZFMm7124FPu/qKZFQLbzOwJd3+117jfuPt1gz9FEREZqH4zd3c/6O4v&amp;#10;ho/rgNeAmUM9MREROXMDWnM3szKCfqov9PHyxWb2BzP7hZktGIS5iYjIGUpmWQYAMysAHgPudPcT&amp;#10;vV5+EZjt7vVmdi3wE2BuH++xDlgHUFpaesaTFhGR00sqczezbILA/rC7/6j36+5+wt3rw8c/B7LN&amp;#10;LNrHuPXuXuHuFcXFxWc5dREROZVkdssY8C3gNXf/6inGTAvHYWYXhu9bM5gTFRGR5CWzLHMpcAvw&amp;#10;RzPbHl67FygFcPdvADcCt5tZO9AE3OzuPgTzFRGRJPQb3N19C2D9jHkQeHCwJiUiImdHFaoiImlI&amp;#10;wV1EJA0puIuIpCEFdxGRNKTgLiKShhTcRUTSkIK7iEgaUnAXEUlDCu4iImlIwV1EJA0puIuIpCEF&amp;#10;dxGRNKTgLiKShhTcRUTSkIK7iEgaUnAXEUlDybTZm2VmT5nZa2b2ipl9so8xZmZfM7OdZvaSmS0b&amp;#10;mumKiEgykmmz1w58yt1fNLNCYJuZPeHuryaMeScwN/y5CPjX8FcREUmBfjN3dz/o7i+Gj+uA14CZ&amp;#10;vYbdAGzwwPPARDObPuizFREZoxpa2nl5f23S45PJ3LuZWRmwFHih10szgX0Jz6vCawd7/f51wDqA&amp;#10;0tLSgXy0iEjaa23vZO/RRnZXN7C7uj78Nfg5dKJlQO+VdHA3swLgMeBOdz/R++U+foufdMF9PbAe&amp;#10;oKKi4qTXRUTSXUenc+B4E7urG6isaWDXkXgArzrWSGdCZJyUn00sGmHFnGLKiyOUFUW47kvJfU5S&amp;#10;wd3MsgkC+8Pu/qM+hlQBsxKelwAHkpuCiEh6cXeq61u7M/Bd1Q1UhgG8sqaR1vbO7rH5OZnEohEW&amp;#10;lUzghiUziEUj3T8T83POeA79BnczM+BbwGvu/tVTDNsIfMLMHiG4kVrr7gdPMVZEJC2caG5j95GT&amp;#10;M/DK6gbqWtq7x2VnGqWT84lFC1g5fwqxaJCFlxdHmFKYSxBmB1cymfulwC3AH81se3jtXqAUwN2/&amp;#10;AfwcuBbYCTQCHxn0mYqIpEBzWwd7ahpPysB3VzdQXd/aPc4MZk4cRywa4c+WzezOvsujBcyYmEdW&amp;#10;5vCWFfUb3N19C32vqSeOceDjgzUpEZHh1N7Ryf7jTeyqbmB3Qga+u7qBA7VNeMI6eLQgl/JohDXn&amp;#10;TCVWHM/ASyfnk5edmbo/RC8D2i0jIjJauTuHTrSwK9yF0pWB76puYN/RRto64hG8MDeL8uIIFWWT&amp;#10;iEVLujPwsmg+hXnZKfxTJE/BXUTSyvHG1j4z8MqaBhpbO7rH5WRlECuKMG9KIVcvmEasKEKsOFhK&amp;#10;KYrkDMk6+HBScBeRUaextT3MvuNr4V1B/HhjW/e4zAxj1qRxlEUjXFQ+mfJohFiYgc+YMI6MjNEd&amp;#10;wE9HwV1ERqTW9k72HWvszsATb2a+daK5x9hp4/OIRSNcu3B6kIFHgyx81qR8crLG5vmICu4ikjKd&amp;#10;nc6B2qY+M/CqY010JFT0TMrPpiwa4ZI5RT0y8LKiCJFchbLe9I2IyJByd2oawoKeIw29CnoaaEko&amp;#10;6BmXHRT0nD9zAtcvmtGdgceKIkyKnHlBz1ik4C4ig6KuuY3K6sbu3SiJP3XNPQt6Zk3Opzwa4bJ5&amp;#10;0e4MvDxawNTxQ1PQMxYpuItI0prbOth7tLG7GjNxO2F1ffxgKzOYMWEc5cUR3rNkZncGXh6NMHPi&amp;#10;uGEv6BmLFNxFpIeOTmf/saY+M/D9x3sX9OQQi0ZYfU4xsWgBsWhQYj+7aGQV9IxFCu4iY5C7c7iu&amp;#10;hV3huSi7q7vORqlnbx8FPbHiCMtKJ/G+ZSWUh3vBy6IRxo+Sgp6xSMFdJI0db2ztkXkn3szsXdBT&amp;#10;VpTPnCkFXHnetO4MPBaNEC0Y/QU9Y5GCu8go19jaTmV140kZ+O7qBo4lFPRkGMyaHGwdXF42uTsD&amp;#10;j0UjTJ8wjsw0LugZixTcRUaBto5O9nV36On5c7C2Z0HP1PG5xKIRrjl/OuXh8kksGhxsNVYLesYi&amp;#10;BXeREaKz0zl4opnKcPlkd0IGvq9XQc+EcUGHnovLi+J7wcMzwlXQI6DgLjKs3J2jYUFP77PBd1f3&amp;#10;LOjJy84gFi1gwYwJXLdoRncGXh5VQY/0T8FdZAjUt7T3mYHvrm7gREJBT1ZGV4eeCCvmRLsz8Fg0&amp;#10;wtTCvLQ+2EqGVjJt9h4CrgMOu/v5fby+EvgpsDu89CN3f2AwJykyErW0d7C3prFHBt51NsqRup6d&amp;#10;6rs69NywZCZlYfYdi0YomaSCHhkayWTu3wEeBDacZsxv3P26QZmRyAjS1ak+yMDD7Dtsubb/WFOP&amp;#10;TvVFkaCgZ+W84u5qzLJwHVwFPTLckmmz94yZlQ39VERSw905UtfSZwa+t6aR1o74OnhBbhaxaISl&amp;#10;sybxZ0tLujPwsmiECeNU0CMjx2CtuV9sZn8ADgB3ufsrfQ0ys3XAOoDS0tJB+miR5NQ2tYXr3vXB&amp;#10;OniYge8+0kBDYkFPZgazi4KDrdacOyXIwMMuPcUFOthKRofBCO4vArPdvd7MrgV+Aszta6C7rwfW&amp;#10;A1RUVHhfY0TORlNrB5U1DfGbmV1Hy1Y3UNMQ71SfYVAyKbiRWTF7cvdNzFg0woyJKuiR0e+sg7u7&amp;#10;n0h4/HMz+z9mFnX36rN9b5H1+q0dAAAGm0lEQVS+tHV0UnWsKWjukHA2yu4jDRzoVdAzpTAo6Llq&amp;#10;wdTufeDlxRFmTc4nN0vr4JK+zjq4m9k04JC7u5ldCGQANWc9MxnTOjudtxILehIy8L1HG2lPuJM5&amp;#10;Pi+L8uICLuoq6ElYBy9QQY+MUclshfwPYCUQNbMq4H4gG8DdvwHcCNxuZu1AE3Czu2vJRfrl7hxr&amp;#10;bDspA+963NzWs6CnrCjCOdMLeefCad0ZeCxawKT8bK2Di/SSzG6ZD/bz+oMEWyVF+tTQ0n7SeShd&amp;#10;O1Nqm+IHW3UV9JRFI1w6J9pdjVkWjTBtvAp6RAZCf2eVQdHS3sG+sENPz9MJGzjcq6BnxoQ8YsUR&amp;#10;rl88vUcGXjJpHNkq6BEZFArukrSugp6+TiasOtZ4UkFPWTTCZfOKe2TgZUURxuXoRqbIUFNwlx7c&amp;#10;nSP1LewOM/D42SgN7DnaSGvCwVaRnExixREWz5rIe5bMCM9FKSBWFGFCvgp6RFJJwX2Mqm1q61GN&amp;#10;mXg6YX1L/GCrnMwMSovywz6ZU3rsRikuVEGPyEil4J7Gmts62BNWYSZm4JU1DVTXxwt6zKBk0jhi&amp;#10;0QKWlU4MzwcvoFwFPSKjloL7KNfeXdBzcgZ+oLZnp/risKDninOn9sjAZ01Wp3qRdKPgPgq4O4dO&amp;#10;tLCr60zwMAPfXRMcbJVY0FMYFvQsL5tELDqr+3TC2UX5FKpTvciYoeA+ghxraD0p++563tQWP9gq&amp;#10;NyuDWDTC/KmFXLNgWo8sfHJEnepFRMF92DW0tPc4C6UrA99d3cDxhE71mV0FPUX5QZ/M4niDBxX0&amp;#10;iEh/FNyHQGt7J3vDTvXxs1GCJZVDJ3oW9EyfkEcsGuFdC6eftA6ugh4ROVMK7meos9M5UBsv6Ems&amp;#10;zNx3tGdBz+RIDmVF+ayYUxxWY8Y71augR0SGgoL7abg71fWtQdA+0jMDr6zpWdCTn5NJLBph4cwJ&amp;#10;3LA43qk+Fo0wMV+d6kVkeCm4AyeaEwp6ep0PXpdQ0JOd2dWpvoCV83sW9ExRQY+IjCBjJrg3t3Ww&amp;#10;NzzYandCBr67upHq+vg6uFm8U/17l83szsDLowXMmJinTvUiMiqkVXBv7+hkf9ipvsd2wiMnF/RE&amp;#10;C3KDHpnnTAnPRAl+SlXQIyJpIJlmHQ8B1wGH3f38Pl434H8D1wKNwK3u/uJgT7SLu3O4rqWPDDzo&amp;#10;0NPWkVDQk5tFeXGE5WWTKIuWdGfgZVEV9IhIeksmc/8OQTOODad4/Z0EDbHnAhcB/xr+elaON/Ys&amp;#10;6Ok6G6WypoHGxE71WRnEiiLMnVLIVb0KeopU0CMiY1QynZieMbOy0wy5AdgQttZ73swmmtl0dz/Y&amp;#10;33s3trZTWd2YkIE3dmfix3oV9MyaFKyDX1Q+OSzmKSBWHGG6CnpERE4yGGvuM4F9Cc+rwmunDe6v&amp;#10;v1XHefdt6nFt2vigoOedC6cHzR2KIsSKI8yalE9Olm5kiogkazCCe19pc58Nss1sHbAOYMKMcu66&amp;#10;al6QgUcjlEXzyc9Jq/u7IiIpMxjRtAqYlfC8BDjQ10B3Xw+sB6ioqPBPrJ47CB8vIiK9DcZax0bg&amp;#10;wxZ4O1CbzHq7iIgMnWS2Qv4HsBKImlkVcD+QDeDu3wB+TrANcifBVsiPDNVkRUQkOcnslvlgP687&amp;#10;8PFBm5GIiJw1bUEREUlDCu4iImlIwV1EJA0puIuIpCEFdxGRNGTufRaTDv0Hm9UBf0rJh488UaA6&amp;#10;1ZMYIfRdxOm7iNN3ETff3Qv7G5TKev8/uXtFCj9/xDCzrfouAvou4vRdxOm7iDOzrcmM07KMiEga&amp;#10;UnAXEUlDqQzu61P42SONvos4fRdx+i7i9F3EJfVdpOyGqoiIDB0ty4iIpKGUBHcz+zMzczM7JxWf&amp;#10;LyIy2phZh5ltN7M/mNmLZnbJ6canKnP/ILAFuDlFny8iMto0ufsSd18M3AP8r9MNHvbgbmYFwKXA&amp;#10;R1FwFxE5E+OBY6cbkIoipvcAj7v7DjM7ambL3P3FFMxDRGQ0GWdm24E8YDqw+nSDU7Es80HgkfDx&amp;#10;I+FzERE5va5lmXOAa4ANZmanGjysWyHNrIigofZhwIHM8NfZrj2ZIiKnZGb17l6Q8PwQsNDdD/c1&amp;#10;frgz9xuBDe4+293L3H0WsBtYMczzEBEZtcKdhplAzanGDPea+weBL/a69hjw58BvhnkuIiKjSdea&amp;#10;O4ABa92941SDVaEqIpKGVKEqIpKGFNxFRNKQgruISBpScBcRSUMK7iIiaUjBXUQkDSm4i4ikIQV3&amp;#10;EZE09P8BBx25h5G0xH4AAAAASUVORK5CYII=&amp;#10;&quot;&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;div class=&quot;output_area&quot;&gt;

&lt;div class=&quot;prompt&quot;&gt;&lt;/div&gt;




&lt;div class=&quot;output_png output_subarea &quot;&gt;
&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz&amp;#10;AAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo&amp;#10;dHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAERJJREFUeJzt3X+MZWV9x/H3R9gKUYTITpQAw/wh&amp;#10;aaw1oE78ERJL0RgEAmlFxfoLqplo/IGNRhf/AMG0RdOqMTSQVQwLWotFIcsPW42yVTRid3FZwFW7&amp;#10;sRi2kLKCLqwiceXbP+4hvQx39t47c4fZffb9Sk7mOec897nf3Tn7mbPPnHNPqgpJUluettIFSJIm&amp;#10;z3CXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNejAlXrj1atX18zMzEq9vSTtkzZt&amp;#10;2vTLqpoa1m/Fwn1mZoaNGzeu1NtL0j4pyS9G6ee0jCQ1yHCXpAYZ7pLUIMNdkhpkuEtSg0YK9yR3&amp;#10;J7kjyeYkT7rEJT2fTbItyZYkL558qZKkUY1zKeSfV9UvF9j3WuDYbnkZcGn3VZK0AiY1LXMGcGX1&amp;#10;/AA4LMkRExpbkjSmUcO9gG8k2ZRkbsD+I4F7+ta3d9ueIMlcko1JNu7YsWP8aiXttZIsatHyGDXc&amp;#10;T6iqF9ObfnlPklfO2z/oO/SkJ29X1dqqmq2q2ampoXfPStqHVNXA5ZiP3LDgvqonxYQmZKRwr6p7&amp;#10;u6/3A9cCL53XZTtwdN/6UcC9kyhQkjS+oeGe5BlJDnm8DbwGuHNet/XA27qrZl4O7Kyq+yZerSRp&amp;#10;JKNcLfMc4NpubuxA4J+r6t+SvAugqi4DbgJOAbYBvwXOWZ5yJUmjGBruVfVz4LgB2y/raxfwnsmW&amp;#10;JklaLO9QlaQGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGmS4&amp;#10;S1KDDHdJapDhLkkNMtwlqUEjh3uSA5L8KMkNA/adnWRHks3d8s7JlilJGscoT2J63LnAVuBZC+y/&amp;#10;uqreu/SSJElLNdKZe5KjgFOBzy9vOZKkSRh1WuYzwIeBx/bQ53VJtiS5JsnRSy9NkrRYQ6dlkpwG&amp;#10;3F9Vm5KcuEC364EvV9Wj3YOz1wEnDRhrDpgDmJ6eXnTRklbOcRd+g52P/H6s18ysuXGs/ocevIrb&amp;#10;L3jNWK/RE40y534CcHqSU4CDgGcl+WJVveXxDlX1QF//zwGfGDRQVa0F1gLMzs7WoquWtGJ2PvJ7&amp;#10;7r741GV9j3F/GOjJhk7LVNV5VXVUVc0AZwHf7g92gCRH9K2eTu8Xr5KkFTLO1TJPkOQiYGNVrQfe&amp;#10;n+R0YDfwIHD2ZMqTJC3GWOFeVRuADV37/L7t5wHnTbIwSdLieYeqJDXIcJekBhnuktQgw12SGmS4&amp;#10;S1KDDHdJapDhLkkNMtwlqUGGuyQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBI4d7&amp;#10;kgOS/CjJDQP2PT3J1Um2Jbk1ycwki5QkjWecM/dzWfjZqO8AflVVzwM+zQIPyJYkPTVGCvckRwGn&amp;#10;Ap9foMsZwLqufQ3wqiRZenmSpMUY9cz9M8CHgccW2H8kcA9AVe0GdgKHL7k6SdKiDH1AdpLTgPur&amp;#10;alOSExfqNmBbDRhrDpgDmJ6eHqNMSXuLQ56/hheuW7PM7wG9yQIt1tBwB04ATk9yCnAQ8KwkX6yq&amp;#10;t/T12Q4cDWxPciBwKPDg/IGqai2wFmB2dvZJ4S9p7/fw1ou5++LlDd6ZNTcu6/j7g6HTMlV1XlUd&amp;#10;VVUzwFnAt+cFO8B64O1d+8yuj+EtSStklDP3gZJcBGysqvXA5cBVSbbRO2M/a0L1SZIWYaxwr6oN&amp;#10;wIaufX7f9t8Br59kYZKkxfMOVUlqkOEuSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGmS4S1KDDHdJ&amp;#10;apDhLkkNMtwlqUGGuyQ1yHCXpAYZ7pLUIMNdkhpkuEtSg4aGe5KDkvwwye1J7kpy4YA+ZyfZkWRz&amp;#10;t7xzecqVJI1ilCcxPQqcVFW7kqwCbkny9ar6wbx+V1fVeydfoiRpXEPDvXvQ9a5udVW3+PBrSdqL&amp;#10;jfQM1SQHAJuA5wH/VFW3Duj2uiSvBH4G/E1V3TNgnDlgDmB6enrRRUtaWTNrblzW8Q89eNWyjr8/&amp;#10;SO/EfMTOyWHAtcD7qurOvu2HA7uq6tEk7wLeUFUn7Wms2dnZ2rhx4yLLlrSvmFlzI3dffOpKl9GM&amp;#10;JJuqanZYv7GulqmqXwMbgJPnbX+gqh7tVj8HvGSccSVJkzXK1TJT3Rk7SQ4GXg38ZF6fI/pWTwe2&amp;#10;TrJISdJ4RplzPwJY1827Pw34SlXdkOQiYGNVrQfen+R0YDfwIHD2chUsSRpulKtltgAvGrD9/L72&amp;#10;ecB5ky1NkrRY3qEqSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGmS4S1KDDHdJapDhLkkNMtwlqUGG&amp;#10;uyQ1yHCXpAYZ7pLUIMNdkhpkuEtSg0Z5EtNBSX6Y5PYkdyW5cECfpye5Osm2JLcmmVmOYiVJoxnl&amp;#10;zP1R4KSqOg44Hjg5ycvn9XkH8Kuqeh7waeATky1TkjSOoeFePbu61VXdUvO6nQGs69rXAK9KkolV&amp;#10;KUkay0hz7kkOSLIZuB/4ZlXdOq/LkcA9AFW1G9gJHD7JQiVJoxvlAdlU1R+A45McBlyb5E+r6s6+&amp;#10;LoPO0uef3ZNkDpgDmJ6eXkS5kvZWe/rPevYwUVv1pKjQBIx1tUxV/RrYAJw8b9d24GiAJAcChwIP&amp;#10;Dnj92qqararZqampRRUsae9UVYtatDxGuVpmqjtjJ8nBwKuBn8zrth54e9c+E/h2+V2TpBUzyrTM&amp;#10;EcC6JAfQ+2Hwlaq6IclFwMaqWg9cDlyVZBu9M/azlq1iSdJQQ8O9qrYALxqw/fy+9u+A10+2NEnS&amp;#10;YnmHqiQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIa&amp;#10;ZLhLUoMMd0lqkOEuSQ0y3CWpQaM8Zu/oJDcn2ZrkriTnDuhzYpKdSTZ3y/mDxpIkPTVGeczebuCD&amp;#10;VXVbkkOATUm+WVU/ntfvu1V12uRLlCSNa+iZe1XdV1W3de2Hga3AkctdmCRp8caac08yQ+95qrcO&amp;#10;2P2KJLcn+XqSF0ygNknSIo0yLQNAkmcCXwU+UFUPzdt9G3BMVe1KcgpwHXDsgDHmgDmA6enpRRct&amp;#10;Sdqzkc7ck6yiF+xfqqqvzd9fVQ9V1a6ufROwKsnqAf3WVtVsVc1OTU0tsXRJ0kJGuVomwOXA1qr6&amp;#10;1AJ9ntv1I8lLu3EfmGShkqTRjTItcwLwVuCOJJu7bR8FpgGq6jLgTODdSXYDjwBnVVUtQ72SpBEM&amp;#10;DfequgXIkD6XAJdMqihJ0tJ4h6okNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7&amp;#10;JDXIcJekBhnuktQgw12SGmS4S1KDDHdJapDhLkkNMtwlqUGjPGbv6CQ3J9ma5K4k5w7okySfTbIt&amp;#10;yZYkL16eciVJoxjlMXu7gQ9W1W1JDgE2JflmVf24r89rgWO75WXApd1XSdIKGHrmXlX3VdVtXfth&amp;#10;YCtw5LxuZwBXVs8PgMOSHDHxaiVJIxlrzj3JDPAi4NZ5u44E7ulb386TfwCQZC7JxiQbd+zYMV6l&amp;#10;AiDJ2Iuk/c/I4Z7kmcBXgQ9U1UPzdw94ST1pQ9XaqpqtqtmpqanxKhUAVTVwOeYjNyy4T9L+Z6Rw&amp;#10;T7KKXrB/qaq+NqDLduDovvWjgHuXXp4kaTFGuVomwOXA1qr61ALd1gNv666aeTmws6rum2CdkqQx&amp;#10;jHK1zAnAW4E7kmzutn0UmAaoqsuAm4BTgG3Ab4FzJl+qJGlUQ8O9qm5h8Jx6f58C3jOpoiRJS+Md&amp;#10;qpLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNWiUm5j0FDvuwm+w85Hfj/26mTU3jtz30INX&amp;#10;cfsFrxn7PSTtGwz3vdDOR37P3RefuqzvMc4PAkn7HqdlJKlBhrskNchwl6QGGe6S1CDDXZIaZLhL&amp;#10;UoMMd0lq0CiP2ftCkvuT3LnA/hOT7EyyuVvOn3yZkqRxjHIT0xXAJcCVe+jz3ao6bSIVSZKWbOiZ&amp;#10;e1V9B3jwKahFkjQhk/r4gVckuR24F/hQVd01qFOSOWAOYHp6ekJv3Z5Dnr+GF65bs8zvAbC8H3Eg&amp;#10;aeVMItxvA46pql1JTgGuA44d1LGq1gJrAWZnZ2sC792kh7de7GfLSFqSJV8tU1UPVdWurn0TsCrJ&amp;#10;6iVXJklatCWHe5LnJknXfmk35gNLHVeStHhDp2WSfBk4EVidZDtwAbAKoKouA84E3p1kN/AIcFZV&amp;#10;OeUiSStoaLhX1ZuG7L+E3qWSkqS9hHeoSlKDDHdJapDhLkkNMtwlqUGGuyQ1yHCXpAYZ7pLUoEl9&amp;#10;cJgmbLk/++XQg1ct6/iSVpbhvhdazIeGzay5cdk/bEzSvsNpGUlqkOEuSQ0y3CWpQYa7JDXIcJek&amp;#10;BhnuktSgoeGe5AtJ7k9y5wL7k+SzSbYl2ZLkxZMvU5I0jlHO3K8ATt7D/tfSeyD2scAccOnSy5Ik&amp;#10;LcXQcK+q7wAP7qHLGcCV1fMD4LAkR0yqQEnS+CYx534kcE/f+vZumyRphUzi4wcyYNvAB2QnmaM3&amp;#10;dcP09PQE3nr/kwz66+72fWLwdp9XLu1/JnHmvh04um/9KODeQR2ram1VzVbV7NTU1ATeev9TVWMv&amp;#10;kvY/kwj39cDbuqtmXg7srKr7JjCuJGmRhk7LJPkycCKwOsl24AJgFUBVXQbcBJwCbAN+C5yzXMVK&amp;#10;kkYzNNyr6k1D9hfwnolVJElaMu9QlaQGGe6S1CDDXZIaZLhLUoMMd0lqUFbqJpckO4BfrMibt2k1&amp;#10;8MuVLkIawGNzso6pqqF3ga5YuGuykmysqtmVrkOaz2NzZTgtI0kNMtwlqUGGezvWrnQB0gI8NleA&amp;#10;c+6S1CDP3CWpQYZ7g5Icn+SUvvWPJfnQStYkDTP/uNXSGO5tOp7exzBL+5Kxj9skk3iaXJMM971U&amp;#10;kpkkP0ny+SR3JvlSklcn+V6S/0ry0m75fpIfdV//OMkfARcBb0yyOckbuyH/JMmGJD9P8v4V/KNp&amp;#10;L5XkbUm2JLk9yVVJjknyrW7bt5JMd/2uSHJpkpu74+nPknwhydYkV/SNtyvJPya5rXv9VLd9Q5LZ&amp;#10;rr06yd2Djtskz+jG/c/uGD+je83ZSf41yfXAN57qv6d9xmIe2+ay/AswA+wGXkjvh/Am4Av0nll7&amp;#10;BnAd8CzgwK7/q4Gvdu2zgUv6xvoY8H3g6fTuFnwAWLXSf0aXvWcBXgD8FFjdrT8buB54e7f+18B1&amp;#10;XfsK4F/6jsWH5h2nx3f9Cnhz1z7/8WMS2ADMdu3VwN1de/5x+3fAW7r2YcDPgGd0/bYDz17pv7e9&amp;#10;efG/NHu3/66qOwCS3AV8q6oqyR30wv9QYF2SY+n9Q1q1h7FurKpHgUeT3A88h94/EAngJOCaqvol&amp;#10;QFU9mOQVwF92+68CPtnX//q+Y/F/5x2nM8Bm4DHg6q7/F4GvjVnTa4DT+35fdBAw3bW/WVUPjjne&amp;#10;fsVw37s92td+rG/9MXrfu48DN1fVXySZoXdGNMpYf8DvvZ4o9E4Q9qR/f/+xOP84XejYevz1u/n/&amp;#10;KeGDhtT0uqr66RM2Ji8DfjOk1v2ec+77tkOB/+naZ/dtfxg45CmvRvuybwFvSHI4QJJn05vKO6vb&amp;#10;/2bgljHHfBpwZtf+q77X3w28pGuf2dd//nH778D7kqSr6UVjvv9+zXDft30S+Psk3wMO6Nt+M71f&amp;#10;oPb/QlVaUFXdBfwt8B9Jbgc+BbwfOCfJFuCtwLljDvsb4AVJNtGb9rmo2/4PwLuTfJ/enPvj5h+3&amp;#10;H6c31bglyZ3dukbkHaqSlkWSXVX1zJWuY3/lmbskNcgzd0lqkGfuktQgw12SGmS4S1KDDHdJapDh&amp;#10;LkkNMtwlqUH/BzJQh/xSkrHDAAAAAElFTkSuQmCC&amp;#10;&quot;&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing text_cell rendered&quot;&gt;&lt;div class=&quot;prompt input_prompt&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;inner_cell&quot;&gt;
&lt;div class=&quot;text_cell_render border-box-sizing rendered_html&quot;&gt;
&lt;p&gt;데이터 수가 많으면 숫자로 보았을 때 데이터가 어떤 분포를 가지는지 쉽게 알 수 없는데, 간단하게 그래프를 그려서 확인할 수 있어요.&lt;/p&gt;
&lt;p&gt;산포도 그래프는 sklearn 라이브러리에 있는 샘플 데이터로 한 번 그려볼게요&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;sklearn 라이브러리가 없다면 아나콘다 콘솔에 &lt;strong&gt; pip install sklearn &lt;/strong&gt; 명령어로 설치하시고 진행해주세요&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;데이터 마이닝 수업에서 단골 손님으로 언급되는 Iris 데이터를 이용해서 산포도 그래프를 그려볼게요.&lt;/p&gt;
&lt;p&gt;아래의 함수를 실행하여, 데이터를 적재합니다.&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell rendered&quot;&gt;
&lt;div class=&quot;input&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In&amp;nbsp;[4]:&lt;/div&gt;
&lt;div class=&quot;inner_cell&quot;&gt;
    &lt;div class=&quot;input_area&quot;&gt;
&lt;div class=&quot; highlight hl-ipython3&quot;&gt;&lt;pre&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sklearn.datasets&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;load_iris&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;iris&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;load_iris&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;data&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;iris&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'data'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;feature&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;iris&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'feature_names'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;label&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;iris&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'target'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;data의 타입 : &quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# numpy.ndarray데이터도 pandas DataFramed의 데이터로 적용이 가능합니다.&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;pd&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;DataFrame&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;columns&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;feature&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# label 컬럼을 추가해줍니다.&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;loc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[:,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;label&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;label&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;head&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;())&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;output_wrapper&quot;&gt;
&lt;div class=&quot;output&quot;&gt;


&lt;div class=&quot;output_area&quot;&gt;

&lt;div class=&quot;prompt&quot;&gt;&lt;/div&gt;


&lt;div class=&quot;output_subarea output_stream output_stdout output_text&quot;&gt;
&lt;pre&gt;data의 타입 :  &amp;lt;class 'numpy.ndarray'&amp;gt;
   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)  \
0                5.1               3.5                1.4               0.2   
1                4.9               3.0                1.4               0.2   
2                4.7               3.2                1.3               0.2   
3                4.6               3.1                1.5               0.2   
4                5.0               3.6                1.4               0.2   

   label  
0      0  
1      0  
2      0  
3      0  
4      0  
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing text_cell rendered&quot;&gt;&lt;div class=&quot;prompt input_prompt&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;inner_cell&quot;&gt;
&lt;div class=&quot;text_cell_render border-box-sizing rendered_html&quot;&gt;
&lt;p&gt;sklearn 라이브러리는 통계 알고리즘을 담고 있는 라이브러리인데요.&lt;/p&gt;
&lt;p&gt;샘플로 데이터를 담고 있어서 데이터를 수집하는데 신경을 덜 쓸 수 있어요.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;numpy.ndarray&lt;/strong&gt; 와 &lt;strong&gt;pandas.DataFrame&lt;/strong&gt; 간의 호환성도 좋아서 여러분이 작성한 알고리즘의 결과가 numpy.ndarray 형태라 하여도,&lt;/p&gt;
&lt;p&gt;pandas DataFrame으로 변환하여 사용할 수 있답니다.&lt;/p&gt;
&lt;p&gt;이제 scatter 함수로 산포도를 그러볼게요. x축과 y축으로 사용할 컬럼명을 매개변수로 반드시 넣어주셔야 합니다.&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell rendered&quot;&gt;
&lt;div class=&quot;input&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In&amp;nbsp;[5]:&lt;/div&gt;
&lt;div class=&quot;inner_cell&quot;&gt;
    &lt;div class=&quot;input_area&quot;&gt;
&lt;div class=&quot; highlight hl-ipython3&quot;&gt;&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;plot&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;scatter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;sepal length (cm)&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;label&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;output_wrapper&quot;&gt;
&lt;div class=&quot;output&quot;&gt;


&lt;div class=&quot;output_area&quot;&gt;

&lt;div class=&quot;prompt output_prompt&quot;&gt;Out[5]:&lt;/div&gt;




&lt;div class=&quot;output_text output_subarea output_execute_result&quot;&gt;
&lt;pre&gt;&amp;lt;matplotlib.axes._subplots.AxesSubplot at 0x1e2829fa5c0&amp;gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;div class=&quot;output_area&quot;&gt;

&lt;div class=&quot;prompt&quot;&gt;&lt;/div&gt;




&lt;div class=&quot;output_png output_subarea &quot;&gt;
&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYwAAAEKCAYAAAAB0GKPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz&amp;#10;AAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo&amp;#10;dHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3X+UVeV97/H3BxzAICqBKVKBQAtl&amp;#10;hUSCZpaRWI2pkZDEir2mq3rr1SS6aHtr0tjVRpPem+SaJmlMV2yTpjXWUjVpTVqMSG0VLInBVEk8&amp;#10;EAQdg07EOhMEcURFgwjO9/6x94znDGfYz8DZcwb4vNaaNbOf59nP/u7nnLO/Z/+YvRURmJmZFRnR&amp;#10;7ADMzOzQ4IRhZmZJnDDMzCyJE4aZmSVxwjAzsyROGGZmlsQJw8zMkjhhmJlZEicMMzNLclSzA2ik&amp;#10;iRMnxvTp05sdhpnZIWPt2rXPRkRrStvDKmFMnz6dSqXS7DDMzA4Zkv47ta0PSZmZWRInDDMzS+KE&amp;#10;YWZmSZwwzMwsiROGmZklccIwM7MkpSUMSVMlfV/So5IekfRHddpI0lcldUjaIOmUqrpLJT2e/1xa&amp;#10;VpyHm+6XdvNQ5/N0v7S72aGUrmhdU8aisrmbr6zcRGVz9wH30bFtJ0srnXRs21lKPcC37t/Mb19/&amp;#10;P9+6f3Pd+mXrOrn85gdZtq5zwD5WtW/lqqUPsap964BtihQtp2hdisY7xVC8ro34HKX00YjXZCg/&amp;#10;8yrrEa2SJgOTI2KdpHHAWuD8iGivavN+4KPA+4F3AH8dEe+Q9EagArQBkc/79ojYsb9ltrW1xZH8&amp;#10;fxh3rP85V922gZYRI9jT08O1F8zlvHknNjusUhSta8pYXHzjGn7Y8foG5YyZE/jm5acNqo9PL9vI&amp;#10;LWue6pu+ZP40rll0UsPqAd722bt54ZXX+qaPGzOShz67sG/6tC/cw9YXX+2bnnzsKB741Dk1fSy4&amp;#10;7l4e2/Zy3/TsSWNZceVZDEbRcorWpWi8UwzF69qIz1FKH414TRoRq6S1EdGW0ra0PYyIeDoi1uV/&amp;#10;7wQeBfqvySLglsisAY7PE817gXsi4rk8SdwDLMQG1P3Sbq66bQOv7Olh5+69vLKnh0/ctuGw3NMo&amp;#10;WteUsahs7q7ZqADc19Hd9400pY+ObTtrNpAAtzzwVN+364Oth2zPojpZALzwymt9exrL1nXWbMQB&amp;#10;nn7x1Zo9gFXtW2s2TACbtr08qG+1RcspWpei8U4xFK9rIz5HKX004jVpxmd+SM5hSJoOnAz8qF/V&amp;#10;iUD1vm1XXjZQeb2+F0uqSKps3769USEfcrp27KJlRO3L2TJiBF07djUpovIUrWvKWKx+/Nm6ffeW&amp;#10;p/SxvvP5un30lh9sPcAdG56u26a3/M6N9Tcw1eUr27fVbTNQeVF/9cqL1qVovFMMxevaiM9RSh+N&amp;#10;eE2a8ZkvPWFIOga4Dfh4RLzYv7rOLLGf8n0LI26IiLaIaGttTbodymFpyvij2dPTU1O2p6eHKeOP&amp;#10;blJE5Sla15SxOHPWxLp995an9DFv6vF1++gtP9h6gEVzJ9dt01t+7kkn1K2vLl8wZ1LdNgOVF/VX&amp;#10;r7xoXYrGO8VQvK6N+Byl9NGI16QZn/lSE4akFrJk8U8R8d06TbqAqVXTU4At+ym3AUw4ZjTXXjCX&amp;#10;MS0jGDf6KMa0jODaC+Yy4ZjRzQ6t4YrWNWUs2mZM4IyZE2r6PWPmBNpmTEjuY+akcVwyf1pNH5fM&amp;#10;n8bMSeMaUg9w8TtncNyYkTVtjhszkovfOQOA80+ZyuRjR9XUTz52FOef8vrH5+w5JzB70tiaNrMn&amp;#10;jeXsOfWTQD1Fyylal6LxTjEUr2sjPkcpfTTiNWnGZ77Mk94Cbgaei4iPD9DmA8AVvH7S+6sRcWp+&amp;#10;0nst0HvV1Dqyk97P7W+ZR/pJb8iOa3bt2MWU8UcflsmiWtG6poxFZXM3qx9/ljNnTay78Urpo2Pb&amp;#10;TtZ3Ps+8qcfXbOwbVQ/ZuYw7NjzNormT+5JFtWXrOrlz41bOPemEmmRRbVX7Vla2b2PBnEmD2jAN&amp;#10;ZjlF61I03imG4nVtxOcopY9GvCYHG+tgTnqXmTB+HbgP2Aj07jd9CpgGEBHX50nlb8hOaP8C+HBE&amp;#10;VPL5P5K3B/h8RPxj0TKdMMzMBmcwCaO025tHxA+pfy6iuk0AfzhA3RJgSQmhmZnZAfB/epuZWRIn&amp;#10;DDMzS+KEYWZmSZwwzMwsiROGmZklccIwM7MkThhmZpbECcPMzJI4YZiZWRInDDMzS+KEYWZmSZww&amp;#10;zMwsiROGmZklccIwM7MkThhmZpaktOdhSFoCnAs8ExFvrVP/p8DvVsXxZqA1Ip6T9CSwE3gN2Jv6&amp;#10;cA8zMytPmXsYN5E9Sa+uiPhyRMyLiHnAJ4Ef9HsE67vzeicLM7NhoLSEERGrgf0+g7vKRcCtZcVi&amp;#10;ZmYHr+nnMCS9gWxP5Laq4gBWSloraXFzIjMzs2qlncMYhN8E/qvf4ajTI2KLpF8C7pH003yPZR95&amp;#10;QlkMMG3atPKjNTM7QjV9DwO4kH6HoyJiS/77GeB24NSBZo6IGyKiLSLaWltbSw3UzOxI1tSEIek4&amp;#10;4F3AHVVlYyWN6/0bWAA83JwIzcysV5mX1d4KnAVMlNQFfAZoAYiI6/NmvwWsjIiXq2adBNwuqTe+&amp;#10;f46Iu8uK08zM0pSWMCLiooQ2N5Fdfltd9gTwtnKiMjOzAzUczmGYmdkhwAnDzMySOGGYmVkSJwwz&amp;#10;M0vihGFmZkmcMMzMLIkThpmZJXHCMDOzJE4YZmaWxAnDzMySOGGYmVkSJwwzM0vihGFmZkmcMMzM&amp;#10;LIkThpmZJXHCMDOzJKUlDElLJD0jqe7jVSWdJekFSevzn09X1S2UtElSh6Sry4rRzMzSlbmHcROw&amp;#10;sKDNfRExL/+5BkDSSODrwPuAOcBFkuaUGKeZmSUoLWFExGrguQOY9VSgIyKeiIhXgW8DixoanJmZ&amp;#10;DVqzz2HMl/SQpLskvSUvOxHorGrTlZfVJWmxpIqkyvbt28uM1czsiNbMhLEOeFNEvA34GrAsL1ed&amp;#10;tjFQJxFxQ0S0RURba2trCWGamRk0MWFExIsR8VL+938ALZImku1RTK1qOgXY0oQQzcysStMShqQT&amp;#10;JCn/+9Q8lm7gQWCWpBmSRgEXAsubFaeZmWWOKqtjSbcCZwETJXUBnwFaACLieuCDwB9I2gvsAi6M&amp;#10;iAD2SroCWAGMBJZExCNlxWlmZmmUbaMPD21tbVGpVJodhpnZIUPS2ohoS2nb7KukzMzsEOGEYWZm&amp;#10;SZwwzMwsiROGmZklccIwM7MkThhmZpbECcPMzJI4YZiZWRInDDMzS+KEYWZmSZwwzMwsiROGmZkl&amp;#10;ccIwM7MkThhmZpbECcPMzJKUljAkLZH0jKSHB6j/XUkb8p/7Jb2tqu5JSRslrZfkB1yYmQ0DZe5h&amp;#10;3AQs3E/9ZuBdETEX+BxwQ7/6d0fEvNQHe5iZWblKe0RrRKyWNH0/9fdXTa4BppQVi5mZHbzhcg7j&amp;#10;MuCuqukAVkpaK2lxk2IyM7Mqpe1hpJL0brKE8etVxadHxBZJvwTcI+mnEbF6gPkXA4sBpk2bVnq8&amp;#10;ZmZHqqbuYUiaC9wILIqI7t7yiNiS/34GuB04daA+IuKGiGiLiLbW1tayQzYzO2I1LWFImgZ8F/hf&amp;#10;EfFYVflYSeN6/wYWAHWvtDIzs6FT2iEpSbcCZwETJXUBnwFaACLieuDTwATgbyUB7M2viJoE3J6X&amp;#10;HQX8c0TcXVacZmaWpsyrpC4qqL8cuLxO+RPA2/adw8zMmmm4XCVlZmbDnBOGmZklccIwM7MkThhm&amp;#10;ZpbECcPMzJI4YZiZWRInDDMzS+KEYWZmSZwwzMwsiROGmZkl2e+tQST9j/3VR8R3GxuOmZkNV0X3&amp;#10;kvrN/dQF2d1mzczsCLDfhBERHx6qQMzMbHhLOochaZKkf5B0Vz49R9Jl5YZmZmbDSepJ75uAFcAv&amp;#10;59OPAR8vIyAzMxueUhPGxIj4F6AHICL2Aq8VzSRpiaRnJNV9Yp4yX5XUIWmDpFOq6i6V9Hj+c2li&amp;#10;nGZmVpLUhPGypAlkJ7qRdBrwQsJ8NwEL91P/PmBW/rMY+Lu8/zeSPaHvHWTP8/6MpPGJsR7Rul/a&amp;#10;zUOdz9P90u669R3bdrK00knHtp0H3EdRfSPiXLauk8tvfpBl6zoH7KOoTUoflc3dfGXlJiqbu+vW&amp;#10;p4zXqvatXLX0IVa1bz2g+pRlNCLORrw3iuJoxHunEe8vK4ciorhR9s3/a8BbyZ6v3Qp8MCI2JMw7&amp;#10;HbgzIt5ap+4bwL0RcWs+vYnssa5nAWdFxO/VazeQtra2qFQqhetzuLpj/c+56rYNtIwYwZ6eHq69&amp;#10;YC7nzTuxr/7TyzZyy5qn+qYvmT+NaxadNKg+iuobEedpX7iHrS++2jc9+dhRPPCpc2r6KGqT0sfF&amp;#10;N67hhx2vb/jOmDmBb15+Wt90yngtuO5eHtv2ct/07EljWXHlWcn1KctoRJyNeG8UxdGI904j3l82&amp;#10;OJLW5o/HLpS0hxER64B3Ae8Efg94S0qySHAiUP31rysvG6jcBtD90m6uum0Dr+zpYefuvbyyp4dP&amp;#10;3Lah71tax7adNRsEgFseeKrm22RRH0X1jYhz2brOmg09wNMvvlqzl1DUJqWPyubumo0fwH0d3X3f&amp;#10;nFPGa1X71ppkALBp28t9exJF9SnLaEScjXhvFMXRiPdOI95fVq7Uq6TGAB8DPgf8P+AP87KDpTpl&amp;#10;sZ/yerEtllSRVNm+fXsDQjo0de3YRcuI2pezZcQIunbsAmB95/N156suL+qjqL4Rcd65sf5hm+ry&amp;#10;ojYpfax+/Nm6bXrLU8ZrZfu2um16y4vqU5bRiDgb8d4oiqMR751GvL+sXKnnMG4B3kJ2WOpvgDnA&amp;#10;Nxuw/C5gatX0FGDLfsr3ERE3RERbRLS1trY2IKRD05TxR7Onp6embE9PD1PGHw3AvKnH152vuryo&amp;#10;j6L6RsR57kkn1J2vuryoTUofZ86aWLdNb3nKeC2YM6lum97yovqUZTQizka8N4riaMR7pxHvLytX&amp;#10;asKYHRGXRcT385/FwK81YPnLgUvyq6VOA16IiKfJLuFdIGl8frJ7QV5mA5hwzGiuvWAuY1pGMG70&amp;#10;UYxpGcG1F8xlwjGjAZg5aRyXzJ9WM88l86cxc9K45D6K6hsR5/mnTGXysaNq5pl87CjOP+X17w9F&amp;#10;bVL6aJsxgTNmTqhpc8bMCbTNmJA8XmfPOYHZk8bWtJk9aSxnzzkhqT5lGY2IsxHvjaI4GvHeacT7&amp;#10;y8qVetL7JuD6iFiTT78DuDQi/nfBfLeSncCeCGwju/KpBSAirpcksj2WhcAvgA9HRCWf9yPAp/Ku&amp;#10;Ph8R/1gU55F+0huy48BdO3YxZfzRdT9oHdt2sr7zeeZNPb5mgzCYPorqGxHnsnWd3LlxK+eedELN&amp;#10;hn4wbVL6qGzuZvXjz3LmrIl9G79qKeO1qn0rK9u3sWDOpL5kMJj6lGU0Is5GvDeK4mjEe6cR7y9L&amp;#10;N5iT3vtNGJI2kp07aAFmA0/l028C2utd+dRMThhmZoMzmIRRdPPBcxsQj5mZHQaKbj7439XTkn4J&amp;#10;aMTVUWZmdohJvaz2PEmPA5uBHwBPAneVGJeZmQ0zqVdJfQ44DXgsImYAZwP/VVpUZmY27KQmjD0R&amp;#10;0Q2MkDQiIr4PzCsxLjMzG2aKTnr3el7SMcBq4J8kPQPsLS8sMzMbblL3MBYBu4ArgbuBn7H/x7ea&amp;#10;mdlhJmkPIyKq76B2c0mxmJnZMLbfhCFpJ/Vv+icgIuLYUqIyM7Nhp+j/MOrfH8DMzI44qecwzMzs&amp;#10;COeEYWZmSZwwzMwsiROGmZklccIwM7MkThhmZpak1IQhaaGkTZI6JF1dp/46Sevzn8ckPV9V91pV&amp;#10;3fIy4zQzs2Kp95IaNEkjga8D5wBdwIOSlkdEe2+biLiyqv1HgZOrutgVEb7BoZnZMFHmHsapQEdE&amp;#10;PBERrwLfJrsn1UAuAm4tMR4zMzsIZSaME4HOqumuvGwfkt4EzAC+V1U8RlJF0hpJ55cXppmZpSjt&amp;#10;kBTZ/ab6q3dfKoALgaUR8VpV2bSI2CLpV4DvSdoYET/bZyHSYmAxwLRp0w42ZjMzG0CZexhdwNSq&amp;#10;6SnAlgHaXki/w1ERsSX//QRwL7XnN6rb3RARbRHR1traerAxm5nZAMpMGA8CsyTNkDSKLCnsc7WT&amp;#10;pNnAeOCBqrLxkkbnf08ETgfa+89rZmZDp7RDUhGxV9IVwApgJLAkIh6RdA1QiYje5HER8O2IqD5c&amp;#10;9WbgG5J6yJLaX1RfXWVmZkNPtdvpQ1tbW1tUKpVmh2FmdsiQtDYi2lLa+j+9zcwsiROGmZklccIw&amp;#10;M7MkThhmZpbECcPMzJI4YZiZWRInDDMzS+KEYWZmSZwwzMwsiROGmZklccIwM7MkThhmZpbECcPM&amp;#10;zJI4YZiZWRInDDMzS1JqwpC0UNImSR2Srq5T/yFJ2yWtz38ur6q7VNLj+c+lZcZpZmbFSnvinqSR&amp;#10;wNeBc8ie7/2gpOV1npz3nYi4ot+8bwQ+A7QBAazN591RVrxmZrZ/Ze5hnAp0RMQTEfEq8G1gUeK8&amp;#10;7wXuiYjn8iRxD7CwpDjNzCxBmQnjRKCzarorL+vvAkkbJC2VNHWQ85qZ2RApM2GoTln/B4j/GzA9&amp;#10;IuYC/wncPIh5s4bSYkkVSZXt27cfcLBmZrZ/ZSaMLmBq1fQUYEt1g4jojojd+eTfA29Pnbeqjxsi&amp;#10;oi0i2lpbWxsSuJmZ7avMhPEgMEvSDEmjgAuB5dUNJE2umjwPeDT/ewWwQNJ4SeOBBXmZmZk1SWlX&amp;#10;SUXEXklXkG3oRwJLIuIRSdcAlYhYDnxM0nnAXuA54EP5vM9J+hxZ0gG4JiKeKytWMzMrpoi6pwYO&amp;#10;SW1tbVGpVJodhpnZIUPS2ohoS2nr//Q2M7MkThhmZpbECcPMzJI4YZiZWRInDDMzS+KEYWZmSZww&amp;#10;zMwsiROGmZklccIwM7MkThhmZpbECcPMzJI4YZiZWRInDDMzS+KEYWZmSZwwzMwsiROGmZklKTVh&amp;#10;SFooaZOkDklX16n/Y0ntkjZIWiXpTVV1r0lan/8s7z+vmZkNrdIe0SppJPB14BygC3hQ0vKIaK9q&amp;#10;9hOgLSJ+IekPgGuB38nrdkXEvLLiMzOzwSlzD+NUoCMinoiIV4FvA4uqG0TE9yPiF/nkGmBKifGY&amp;#10;mdlBKDNhnAh0Vk135WUDuQy4q2p6jKSKpDWSzh9oJkmL83aV7du3H1zEZmY2oNIOSQGqUxZ1G0oX&amp;#10;A23Au6qKp0XEFkm/AnxP0saI+Nk+HUbcANwA0NbWVrd/MzM7eGXuYXQBU6umpwBb+jeS9B7gz4Dz&amp;#10;ImJ3b3lEbMl/PwHcC5xcYqxmZlagzITxIDBL0gxJo4ALgZqrnSSdDHyDLFk8U1U+XtLo/O+JwOlA&amp;#10;9clyMzMbYqUdkoqIvZKuAFYAI4ElEfGIpGuASkQsB74MHAP8qySApyLiPODNwDck9ZAltb/od3WV&amp;#10;mZkNMUUcPof929raolKpNDsMM7NDhqS1EdGW0tb/6W1mZkmcMMzMLIkThpmZJXHCMDOzJE4YZmaW&amp;#10;xAnDzMySOGGYmVkSJwwzM0vihGFmZkmcMMzMLIkThpmZJXHCMDOzJE4YZmaWxAnDzMySOGGYmVmS&amp;#10;UhOGpIWSNknqkHR1nfrRkr6T1/9I0vSquk/m5ZskvbfMOM3MrFhpCUPSSODrwPuAOcBFkub0a3YZ&amp;#10;sCMiZgLXAV/K551D9kjXtwALgb/N+ytF90u7eajzebpf2j1gm8rmbr6ychOVzd0H3Meq9q1ctfQh&amp;#10;VrVvrVvfsW0nSyuddGzbWbd+2bpOLr/5QZat6zzgZVy34lHO+vL3uW7FowP2UdSmaCygeDyK1qVo&amp;#10;LFKk9JHyuplZprQn7kmaD3w2It6bT38SICK+WNVmRd7mAUlHAVuBVuDq6rbV7fa3zAN54t4d63/O&amp;#10;VbdtoGXECPb09HDtBXM5b96JNW0uvnENP+x4feN4xswJfPPy0wbVx4Lr7uWxbS/3Tc+eNJYVV57V&amp;#10;N/3pZRu5Zc1TfdOXzJ/GNYtO6ps+7Qv3sPXFV/umJx87igc+dc6gljHrk//OnqqXu0Xw+Bc/UNNH&amp;#10;UZuisUgZj6J1KRqLFCl9pLxuZoe74fLEvROB6q+PXXlZ3TYRsRd4AZiQOO9B635pN1fdtoFX9vSw&amp;#10;c/deXtnTwydu21DzbbOyubtmAwlwX0d337frlD5WtW+t2ZADbNr2ct9eQMe2nTUbN4BbHniq75vx&amp;#10;snWdNRtYgKdffLXm23nRMq5b8WhNIgDYE9TsRRS1KRqLlPEoWpeisUiR0kfK62ZmtcpMGKpT1n93&amp;#10;ZqA2KfNmHUiLJVUkVbZv3z6oALt27KJlRO0QtIwYQdeOXX3Tqx9/tu68veUpfaxs31a3j97y9Z3P&amp;#10;163vLb9zY/3DS9XlRcu4Y0P9PqrLi9oUjQUUj0fRuhSNRYqUPlJeNzOrVWbC6AKmVk1PAbYM1CY/&amp;#10;JHUc8FzivABExA0R0RYRba2trYMKcMr4o9nT01NTtqenhynjj+6bPnPWxLrz9pan9LFgzqS6ffSW&amp;#10;z5t6fN363vJzTzqhbn11edEyFs2t30d1eVGborGA4vEoWpeisUiR0kfK62ZmtcpMGA8CsyTNkDSK&amp;#10;7CT28n5tlgOX5n9/EPheZCdVlgMX5ldRzQBmAT9udIATjhnNtRfMZUzLCMaNPooxLSO49oK5TDhm&amp;#10;dF+bthkTOGPmhJr5zpg5gbYZE5L7OHvOCcyeNLamj9mTxnL2nGwjOXPSOC6ZP62m/pL505g5aRwA&amp;#10;558ylcnHjqqpn3zsKM4/5fWcWrSMK9/7Zlr67be1KCvvVdSmaCxSxqNoXYrGIkVKHymvm5nVKu2k&amp;#10;N4Ck9wN/BYwElkTE5yVdA1QiYrmkMcA3gZPJ9iwujIgn8nn/DPgIsBf4eETcVbS8AznpDdnx7K4d&amp;#10;u5gy/ugBNxiVzd2sfvxZzpw1sWYDOZg+VrVvZWX7NhbMmdS3Ia/WsW0n6zufZ97U4+tuIJet6+TO&amp;#10;jVs596QTapLFYJZx3YpHuWPDVhbNPaEmWQymTdFYQPF4FK1L0VikSOkj5XUzO5wN5qR3qQljqB1o&amp;#10;wjAzO1INl6ukzMzsMOKEYWZmSZwwzMwsiROGmZklccIwM7MkThhmZpbksLqsVtJ24L+bGMJEoP79&amp;#10;M4YXx9l4h0qsjrOxDoc43xQRSbfJOKwSRrNJqqRez9xMjrPxDpVYHWdjHWlx+pCUmZklccIwM7Mk&amp;#10;ThiNdUOzA0jkOBvvUInVcTbWERWnz2GYmVkS72GYmVkSJ4wDJGmkpJ9IurNO3YckbZe0Pv+5vEkx&amp;#10;PilpYx7DPrfxVearkjokbZB0yjCN8yxJL1SN56ebFOfxkpZK+qmkR/Pn1lfXD5fxLIpzuIzn7KoY&amp;#10;1kt6UdLH+7Vp+pgmxjlcxvRKSY9IeljSrfkjJKrrR0v6Tj6eP5I0fTD9H9XIYI8wfwQ8Chw7QP13&amp;#10;IuKKIYxnIO+OiIGuv34f2cOpZgHvAP4u/90M+4sT4L6IOHfIoqnvr4G7I+KD+UPB3tCvfriMZ1Gc&amp;#10;MAzGMyI2AfMg+wIG/By4vV+zpo9pYpzQ5DGVdCLwMWBOROyS9C9kD667qarZZcCOiJgp6ULgS8Dv&amp;#10;pC7DexgHQNIU4APAjc2O5SAtAm6JzBrgeEmTmx3UcCTpWOBM4B8AIuLViOj/8PCmj2dinMPR2cDP&amp;#10;IqL/P942fUz7GSjO4eIo4Oj8kddvYN9HWy8Cbs7/XgqcLanfczYH5oRxYP4K+ATQs582F+S70Esl&amp;#10;1X88XvkCWClpraTFdepPBDqrprvysqFWFCfAfEkPSbpL0luGMrjcrwDbgX/MD0XeKGlsvzbDYTxT&amp;#10;4oTmj2d/FwK31ikfDmNabaA4ocljGhE/B/4SeAp4GnghIlb2a9Y3nhGxF3gBqP/YzDqcMAZJ0rnA&amp;#10;MxGxdj/N/g2YHhFzgf/k9Yw+1E6PiFPIduv/UNKZ/errfbNoxmVzRXGuI7t9wduArwHLhjpAsm9u&amp;#10;pwB/FxEnAy8DV/drMxzGMyXO4TCeffLDZucB/1qvuk5ZUy7tLIiz6WMqaTzZHsQM4JeBsZIu7t+s&amp;#10;zqzJ4+mEMXinA+dJehL4NvAbkr5V3SAiuiNidz7598DbhzbEvji25L+fITvmemq/Jl1A9d7PFPbd&amp;#10;hS1dUZwR8WJEvJT//R9Ai6SJQxxmF9AVET/Kp5eSbZj7t2n2eBbGOUzGs9r7gHURsa1O3XAY014D&amp;#10;xjlMxvQ9wOaI2B4Re4DvAu/s16ZvPPPDVscBz6UuwAljkCLikxExJSKmk+2efi8iarJ4v2Os55Gd&amp;#10;HB9SksZKGtf7N7AAeLhfs+XAJfmVKKeR7cI+PdzilHRC73FWSaeSvW+7hzLOiNgKdEqanRedDbT3&amp;#10;a9b08UyJcziMZz8XMfBhnqaPaZUB4xwmY/oUcJqkN+SxnM2+257lwKX53x8k234l72H4KqkGkXQN&amp;#10;UImI5cDHJJ0H7CXL3h9qQkiTgNvz9/BRwD9HxN2Sfh8gIq4H/gN4P9AB/AL48DCN84PAH0jaC+wC&amp;#10;LhzMm7yBPgr8U35o4gngw8NwPFPiHC7jiaQ3AOcAv1dVNuzGNCHOpo9pRPxI0lKyw2N7gZ8AN/Tb&amp;#10;Nv0D8E1JHWTbpgsHswz/p7eZmSXxISkzM0vihGFmZkmcMMzMLIkThpmZJXHCMDOzJE4YZnXkdx+t&amp;#10;dyfiuuUNWN75kuZUTd8rqfAZzJImNyIeSa2S7j7Yfuzw5oRhNjycD8wpbLWvPya7m8BBiYjtwNOS&amp;#10;Tj/Yvuzw5YRhh6T8P8T/Pb/Z28OSficvf7ukH+Q3MlzR+1/3+Tf2v5J0f97+1Lz81LzsJ/nv2ftb&amp;#10;bp0Ylkh6MJ9/UV7+IUnflXS3pMclXVs1z2WSHsvj+XtJfyPpnWR3BPiysmcp/Gre/Lcl/Thvf8YA&amp;#10;YVwA3J33PVLSXyp7tsgGSR/Ny5+U9AVJD0iqSDolH5uf9f7zWW4Z8Lup629HHv+ntx2qFgJbIuID&amp;#10;AJKOk9RCduO3RRGxPU8inwc+ks8zNiLeqezmhkuAtwI/Bc6MiL2S3gN8gWwjnOLPyG6t8BFJxwM/&amp;#10;lvSfed084GRgN7BJ0teA14D/S3Zvp53A94CHIuJ+ScuBOyNiab4+AEdFxKmS3g98huxeQX0kzSB7&amp;#10;tkHvfcsWk9147uR8fd5Y1bxtrpVtAAACXElEQVQzIuZLuo7s+QinA2OAR4Dr8zYV4M8T192OQE4Y&amp;#10;dqjaCPylpC+RbWjvk/RWsiRwT77BHUl2m+detwJExGpJx+Yb+XHAzZJmkd21s2UQMSwguxHln+TT&amp;#10;Y4Bp+d+rIuIFAEntwJuAicAPIuK5vPxfgV/bT//fzX+vBabXqZ9MdivzXu8Brs9vW03vcnLL898b&amp;#10;gWMiYiewU9Irko7Pn5nxDNldTs3qcsKwQ1JEPCbp7WT3GfqipJVkd7p9JCLmDzRbnenPAd+PiN9S&amp;#10;9rjKewcRhoAL8ieyvV4ovYNsz6LXa2SfteQH1eR6++idv79dZEmqOp6B7vXT21dPv9h6qvoek/dp&amp;#10;VpfPYdghSdIvA7+IiG+RPTTmFGAT0Kr8GdaSWlT7IJve8xy/TnbX0xfIbu/887z+Q4MMYwXw0fzO&amp;#10;oEg6uaD9j4F3SRqv7NbS1Ye+dpLt7QzGY9TueawEfj/vm36HpFL8Gvve0disjxOGHapOIjtnsJ7s&amp;#10;XMKfR8SrZHcN/ZKkh4D11D4PYIek+8mO2V+Wl11LtofyX2SHsAbjc2SHsDZIejifHlD+RLQvAD8i&amp;#10;e7BWO9kTzyB7tsqf5ifPf3WALvr39zLwM0kz86IbyW5xvSFf//85yPV5N/Dvg5zHjiC+W60dESTd&amp;#10;C/xJRFSaHMcxEfFSvhdwO7AkIm4/iP5+C3h7RPyfBsS2muyCgR0H25cdnryHYTa0PpvvFT0MbOYg&amp;#10;H+WZJ5snDzYoSa3AV5wsbH+8h2FmZkm8h2FmZkmcMMzMLIkThpmZJXHCMDOzJE4YZmaWxAnDzMyS&amp;#10;/H9EB0yBroRrXwAAAABJRU5ErkJggg==&amp;#10;&quot;&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing text_cell rendered&quot;&gt;&lt;div class=&quot;prompt input_prompt&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;inner_cell&quot;&gt;
&lt;div class=&quot;text_cell_render border-box-sizing rendered_html&quot;&gt;
&lt;p&gt;그려 놓고 보니까 각각이 무엇을 의미하는지 해석하기가 힘드네요. 서로 구분할 수 있도록 색을 넣어 줍시다.&lt;/p&gt;
&lt;p&gt;label에 따라 색을 적용하기위해 color라는 컬럼을 새로 만들었습니다.&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell rendered&quot;&gt;
&lt;div class=&quot;input&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In&amp;nbsp;[6]:&lt;/div&gt;
&lt;div class=&quot;inner_cell&quot;&gt;
    &lt;div class=&quot;input_area&quot;&gt;
&lt;div class=&quot; highlight hl-ipython3&quot;&gt;&lt;pre&gt;&lt;span class=&quot;c1&quot;&gt;# iris 컬럼의 label은 0과 1, 2로 구성되어 있습니다. &lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# label 중에 0, 1, 2 값을 같는 index를 찾아 줍니다.&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;zero&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;label&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;one&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;label&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;two&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;label&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# 그리고 각각의 index에 따라서 색깔 데이터를 넣어 줍니다.&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;loc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;zero&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;color&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;r&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;loc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;one&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;color&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;g&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;loc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;two&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;color&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;b&quot;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;plot&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;scatter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;sepal length (cm)&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;label&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'color'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;output_wrapper&quot;&gt;
&lt;div class=&quot;output&quot;&gt;


&lt;div class=&quot;output_area&quot;&gt;

&lt;div class=&quot;prompt output_prompt&quot;&gt;Out[6]:&lt;/div&gt;




&lt;div class=&quot;output_text output_subarea output_execute_result&quot;&gt;
&lt;pre&gt;&amp;lt;matplotlib.axes._subplots.AxesSubplot at 0x1e286a6f828&amp;gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;div class=&quot;output_area&quot;&gt;

&lt;div class=&quot;prompt&quot;&gt;&lt;/div&gt;




&lt;div class=&quot;output_png output_subarea &quot;&gt;
&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYwAAAEKCAYAAAAB0GKPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz&amp;#10;AAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo&amp;#10;dHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xl4FeX5//H3TRZCABUkLmURbXHB&amp;#10;DSRf1OKCdSkuRa3Wgvotai1VXKr92da14oKtS9XiAmjlK9W6YV2wCmhdcAMluAAiKIIIpUoAQSCR&amp;#10;bPfvj5nkLHOSTIRDAnxe13WuzMz9zDP3mXNy7swzJzPm7oiIiDSmVXMnICIimwcVDBERiUUFQ0RE&amp;#10;YlHBEBGRWFQwREQkFhUMERGJRQVDRERiUcEQEZFYVDBERCSW3OZOYGPq1KmTd+/evbnTEBHZbMyY&amp;#10;MWO5uxfFabtFFYzu3btTUlLS3GmIiGw2zGxR3LYakhIRkVhUMEREJBYVDBERiUUFQ0REYlHBEBGR&amp;#10;WFQwREQklqwVDDPramavmtnHZvaRmf0mQxszs5FmNt/MZprZAUmxIWb2afgYkq08tyTz58Odd8Lo&amp;#10;0bByZXNnk13z5sEdd8CYMbB6dTS+fj2MGwe33QbTp2fu46qrYK+9oH//zPtr1aqg/zvugE8+ydzH&amp;#10;iBFw/PHwhz9ATU00/s47cOqp8LOfwcyZ0XhVFVx6adDH7bdn3sapp0Lr1tCuHUyeHI3Png077gjt&amp;#10;2wfbyeSMM2CHHWCffYLn1VSVlcG67doF+6yyMtrmzTfhpz+FQYPg44+j8fJy+PGPg/V/E/k0iGfd&amp;#10;OnjggWBfZdqfEPS9114wYECwzXTLlsG998LIkbAowxdK3WHCBLj1VnjhhWC+qSor4eGHg/ff229n&amp;#10;bjNsWPC67b47fP5507cB8MorQZ7jx2d+/2107p6VB7AzcEA43R74BOiZ1uY4YCJgwEHAO+HyjsCC&amp;#10;8GeHcLpDY9vs06ePb62mTXNv29Y9P9+9TRv3nXZy/+qr5s4qO6ZMcS8sTDzXLl3cV6xIxNevd+/T&amp;#10;J9gfeXlB24ceSu3j0EPdg4+C4NGqlfuqVYl4aan7974X9J+fH/T15pupffTtm9rHLru4V1cn4s89&amp;#10;lxo3C3KvVV3tvuOOqW2OPjp1Gz16pMYh6LfWrFnR+G67pfbRrVu0zZo1sXe3uwf7J/25JHv88Wj8&amp;#10;3XcT8fXr3XNzU9vsu2/TclizJtgfta99YaH788+ntunZM3UbubnBtmt98YX79tu7FxS4t27t3r69&amp;#10;+8yZqX2cfXbweufmBj8vvrhpeVZWuh9ySOr7b/To1Da9e0dfk4ULm7adG24I+s7LC7Z14onuNTVN&amp;#10;68PdHSjxuJ/rcRtu6AN4Fjg6bdkYYHDS/Lyw0AwGxtTXrr7H1lww0j+8cnPdL7usubPKjn32SX2u&amp;#10;+fnu112XiD/ySPALlNxmm20S8aqq6C8ruB9/fKLN1VcHv4jJ8V69EvE5czL3MX58os0OO0Tj3bsn&amp;#10;4vfem7mP5EKfKZ6f3/A2IBEvL88cP+yw+Pv7T3/K3Mfvf59os9120XjPnon4Oedk7iO5SDfmrruC&amp;#10;Ap68fteuifiKFZm38etfJ9r86lfuOTmJmFlqkZ47N7qNggL3JUvi5/nss+7t2kX7SP4wz5Tn7rvH&amp;#10;38aaNdH3Z9u27lOnxu8jkUv8grFJzmGYWXegN/BOWqgzsDhpfkm4rL7lmfoeamYlZlZSWlq6sVLe&amp;#10;7CxfnjpfVRUcem+J0oePKirgq69S49XVqW3WrUsMLVRUZO43uY9ly6LDLitWJKa/+CJzH0uWpG4z&amp;#10;3TffJKaXLs3cR33LayXnlWkb9eWTLPm5Nqa+oZ/ZsxPTmYZ+vv46MV3fc8o0JFSfFSvg229TlyUP&amp;#10;Ry5cmHm95H3w1Vep7w331N+TlSshPz91/by8pg3xrlyZeK/Vqqio/31XqylDhatXQ27adTpyclLf&amp;#10;o9mQ9YJhZu2AfwKXuPs36eEMq3gDy6ML3e9z92J3Ly4qinU5lC3SwIHQpk1ivrAQTjyx+fLJphNO&amp;#10;gIKCxHxhYXAOoNbhh0OrpHd2Xh706wcWvqvatEmN1xoyJHUbhYWJ+TZtgmW1Dj00cx/J+7xfv2j8&amp;#10;6KMT05nON+TmBucKGtKzZ2J6wICG2/7gB5mX/+pXDa+X7MorMy+/5prE9P/8TzSe/JoMHZq5j/32&amp;#10;i5/HUUelvu6tW6fuz169Mq+XvO2TTkp9XQsLg2W19t47+OCtZRa89j16xM/zkENSC0ZuLvTuHeSb&amp;#10;3G+6006Lv42ddw7OfyS/B92huDh+H99J3EOR7/IA8oDJwG/riWtIaiNZv959yJDgcHqbbdxvu625&amp;#10;M8qe8nL3008Pnut227nffXe0zYQJwXBN69buP/qR+/LlqfGpU1OHJgYPjvYxcqT7ttsG2znzTPdv&amp;#10;v02Nv/hi0H/tEODDD6fGKyuDYazabfTrl3qOwz0Y267No7Awep5kypTosEO67t1T27zwQmp8/PjU&amp;#10;+LHHRvtozHnnpfYxZEhqvLw89fzBj34Ufa4XXJCIt2oVPf8Qx0MPuXfsGOz3gQPdv/kmNf7886nn&amp;#10;W9LPP9TUBMOX7dsH+3vYsGCIMtmHHwbnSvLy3Pfay/3jj5ue54svuu+8czB8eMgh7l9+mRp/441g&amp;#10;OKw2z+Lipm/j88/dDzgg2Ea3bu5vv930PtybNiRlnn7stJGYmQHjgJXufkk9bY4HLiQ4+X0gMNLd&amp;#10;+5pZR2AGUPutqfeAPu7e4IFhcXGx6+KDIiLxmdkMd491bJLNq9X2A/4XmGVmH4TLrgS6Abj7aOAF&amp;#10;gmIxHygDzg5jK83sBqD2C5HXN1YsREQku7JWMNz9TTKfi0hu48AF9cTGAmOzkJqIiHwH+k9vERGJ&amp;#10;RQVDRERiUcEQEZFYVDBERCQWFQwREYlFBUNERGJRwRARkVhUMEREJBYVDBERiUUFQ0REYlHBEBGR&amp;#10;WFQwREQkFhUMERGJRQVDRERiUcEQEZFYsnY/DDMbC5wALHP3yF2Kzex3wBlJeewFFIU3T/ocWANU&amp;#10;A1Vx7wYlIiLZk80jjAeBem9R7+63unsvd+8FXAFMSbur3hFhXMVCRKQFyFrBcPfXgbi3VR0MPJqt&amp;#10;XEREZMM1+zkMMyskOBL5Z9JiB140sxlmNrR5MhMRkWRZO4fRBD8B3kobjurn7kvNbAfgJTObGx6x&amp;#10;RIQFZShAt27dsp+tiMhWqtmPMIBBpA1HufvS8Ocy4Gmgb30ru/t97l7s7sVFRUVZTVREZGvWrAXD&amp;#10;zLYFDgeeTVrW1sza104DxwCzmydDERGplc2v1T4K9Ac6mdkS4FogD8DdR4fNTgZedPd1SavuCDxt&amp;#10;ZrX5PeLuk7KVp4iIxJO1guHug2O0eZDg67fJyxYA+2cnKxER+a5awjkMERHZDKhgiIhILCoYIiIS&amp;#10;iwqGiIjEooIhIiKxqGCIiEgsKhgiIhKLCoaIiMSigiEiIrGoYIiISCwqGCIiEosKhoiIxKKCISIi&amp;#10;sahgiIhILCoYIiISiwqGiIjEkrWCYWZjzWyZmWW8vaqZ9Tez1Wb2Qfj4Y1JsgJnNM7P5ZnZ5tnIU&amp;#10;EZH4snmE8SAwoJE2b7h7r/BxPYCZ5QD3AMcCPYHBZtYzi3mKiEgMWSsY7v46sPI7rNoXmO/uC9y9&amp;#10;AngMOHGjJiciIk3W3OcwDjazD81sopntHS7rDCxOarMkXJaRmQ01sxIzKyktLc1mriIiW7XmLBjv&amp;#10;Abu4+/7AXcAz4XLL0Nbr68Td73P3YncvLioqykKaIiICzVgw3P0bd18bTr8A5JlZJ4Ijiq5JTbsA&amp;#10;S5shRRERSdJsBcPMdjIzC6f7hrmsAKYDPcxsVzPLBwYBE5orTxERCeRmq2MzexToD3QysyXAtUAe&amp;#10;gLuPBk4FzjezKqAcGOTuDlSZ2YXAZCAHGOvuH2UrTxERiceCz+gtQ3FxsZeUlDR3GiIimw0zm+Hu&amp;#10;xXHaNve3pEREZDOhgiEiIrGoYIiISCwqGCIiEosKhoiIxKKCISIisahgiIhILCoYIiISiwqGiIjE&amp;#10;ooIhIiKxqGCIiEgsKhgiIhKLCoaIiMSigiEiIrGoYIiISCxZKxhmNtbMlpnZ7HriZ5jZzPDxtpnt&amp;#10;nxT73MxmmdkHZqYbXIiItADZPMJ4EBjQQHwhcLi77wfcANyXFj/C3XvFvbGHiIhkV9Zu0erur5tZ&amp;#10;9wbibyfNTgO6ZCsXERHZcC3lHMYvgYlJ8w68aGYzzGxoM+UkIiJJsnaEEZeZHUFQMA5JWtzP3Zea&amp;#10;2Q7AS2Y2191fr2f9ocBQgG7dumU9XxGRrVWzHmGY2X7A34AT3X1F7XJ3Xxr+XAY8DfStrw93v8/d&amp;#10;i929uKioKNspi4hstZqtYJhZN+Ap4H/d/ZOk5W3NrH3tNHAMkPGbViIisulkbUjKzB4F+gOdzGwJ&amp;#10;cC2QB+Duo4E/AtsD95oZQFX4jagdgafDZbnAI+4+KVt5iohIPNn8ltTgRuLnAudmWL4A2D+6hoiI&amp;#10;NKeW8i0pERFp4VQwREQkFhUMERGJRQVDRERiUcEQEZFYVDBERCQWFQwREYlFBUNERGJRwRARkVhU&amp;#10;MEREJJYGLw1iZj9tKO7uT23cdEREpKVq7FpSP2kg5gRXmxURka1AgwXD3c/eVImIiEjLFuschpnt&amp;#10;aGYPmNnEcL6nmf0yu6mJiEhLEvek94PAZOB74fwnwCXZSEhERFqmuAWjk7s/AdQAuHsVUN3YSmY2&amp;#10;1syWmVnGO+ZZYKSZzTezmWZ2QFJsiJl9Gj6GxMxTRESyJG7BWGdm2xOc6MbMDgJWx1jvQWBAA/Fj&amp;#10;gR7hYygwKuy/I8Ed+g4kuJ/3tWbWIWauW62XPnuJ0/95OudOOJc5pXMi8U9XfEqfMX3ocnsXfvH0&amp;#10;L6ipqUmJuzsPz3yY08afxsUTL+bLtV9G+ljw9QLO+9d5DHpyEM/Ne+475Tn9P9MZ8swQfvH0L5i2&amp;#10;ZFrGeOsbWmPXGe1uasfysuWRNvuO2he7zmh1XSsum3xZJD7u/XHkXpeLXWfseOuOVFZWpsSrq6s5&amp;#10;ZOwhtBnRhh1u3YG3vngr0sfk+ZPZ8+496XZHN258/cZIfPna5RTdUkTO9Tls+6dtmbd8XqTNGf88&amp;#10;g7zr88i7IY/z/3V+JL70m6Uc/LeD6Xx7Z05+7GQqqioibU594lQKRxTS4c8deHzW45H4e/99j/1G&amp;#10;7UfX27ty0QsXReLuzpiSMfzsiZ9x2YuXsbJ8ZaTNs3OfZfe7dqf7nd259a1bI/GV5Sv5wcgf0GZE&amp;#10;G3b9664Z3xtTPp/CGU+dwTnPnsPMr2ZG4qu+XcXvX/o9pzxxCvdOv5car4m0Gf/ReE4bfxoXPH8B&amp;#10;i1cvjsSleZm7N94o+Mv/LmAfgvtrFwGnunv0XRFdtzvwL3ffJ0NsDPCauz8azs8juK1rf6C/u/86&amp;#10;U7v6FBcXe0lJSaPPZ0v09MdPc8ZTZ1BeVY5htM1vy/RfTWfPTnsCwQdTtzu7Ue2JA8M+O/ehZGhi&amp;#10;f934+o386c0/UVZZRm6rXDq26cicYXPYvnB7ABatWsT+o/dnzfo11FBDYV4hdx93N2f3iv/diKmL&amp;#10;p3LUQ0dRVlkGQGFeIRPPmMhhuxwGwPKy5RTdWhRZz69NvE87/6UzS9cuTYlfdehV3Pij4EN94qcT&amp;#10;Oe6R41Li+a3yWX/N+gb7mHX+LPbZIXibvrzgZY566KiU+EV9L2LksSMBqKqqIn9EPk7q78+aP6yh&amp;#10;XUE7AE5+7GSemfdMSvzsXmcz9sSxAKytWEunWzqxvjqR167b7cqC3yyomz/o/oN4Z+k7KX08+/Nn&amp;#10;GbjnQADmLZ/HXvfslZLHgO8PYOKZE+vmL5l0Cfe/dz9llWXktcqj8zadmX3+bNrmtw36m/ssJz1+&amp;#10;Uso2rjz0Skb8aAQQFNeCmwqoqqmqi+dYDmVXlZGfkw/ApPmTOOXxUyirCl7Xtnlteeuct9h/p+Dm&amp;#10;meWV5ew/en8WrV5ERXUFhXmFnLnfmYw5YUxdn3+d9leufOVKyirLyLEcti3Ylo+GfcRO7XZCssfM&amp;#10;ZoS3x25UrCMMd38POBz4IfBrYO84xSKGzkDynxFLwmX1LZd6/PG1P1JeVQ6A46yrWMfd795dF//z&amp;#10;W39OKRYAM/47I+Uv2pvfurnug7yqpoo169fw5Jwn6+Jj3x/L2oq11AQjk5RVljH8teFNyrO2INUq&amp;#10;qyxjxBsj6uZP/+fpGdcb9e6ouun0D3qAm9+8uW76rGfOisQrairqjjKqq6sz9nHhCxfWTf/h33+I&amp;#10;xEeXjK6bfnj2w5FiAXDx5IvrptOLBcC4D8bVTY+aPiqlWAAsXLWQRasW1c2nFwuASyYnTh9e8+o1&amp;#10;kTwmfTapbrqqpop7pt9Tt88raypZXracifMTBeXyly+PbOP2qbfXTT/44YMpxQKg2qtT3l/DXxte&amp;#10;VywA1lWu4y9T/1I3/+8F/+bLtV9SUR2838oqy3jgvQf4turbujY3vnFjXZ7VXs3airU8MuuRSG7S&amp;#10;fGLd09vMCoBhwCEEw1JvmNlod/+24TUb7zrDMm9geabchhIMZ9GtW7cNTGfzVfuLWMvxlF/G5Olk&amp;#10;VTVV5JNfN52sxmtS+l1fvT5SdCqrU4d6GpMpj+RlycUk2cpvo8MoyZI/NNOfR7rqek6/JRfP9A/y&amp;#10;9G2s+nZVxj7WVayLnWdtgU9X3z6oVVWdeH7pr3u66ppqMo0iJK+XqY/k4aI1FWsy9p38XDP1kfy6&amp;#10;ZoqbWcprlf5eSn//SfOLew7j78DeBMNSdwM9gYc2wvaXAF2T5rsASxtYHuHu97l7sbsXFxVFhzK2&amp;#10;Fr/u82sK8wrr5tvktuGsXmfVzV/Y98LIOju325nC/MQ6p+9zOm1y29TN5+Xk8ZM9Ev+7OWifQSnb&amp;#10;KMwr5NwDzm1SnsP+Z1ikj2HFw+rm7/jxHRnXu/TgS+umC3IKIvHjexxfN335IdG/mAHy8vIAyM/J&amp;#10;T3meta4+/Oq66UsOjH4J8Mhdj6ybPq/4vIzbqB3GAejZqWck3q9rv7rpc3qfg6X9bbRN623YY/s9&amp;#10;6ua/1+57pLvk4ERulxwUzTN5/da5rTmux3EU5Ab7zDByW+Vy1G6J4baL+14c6eMnPRKve32v8QV9&amp;#10;L6ibPr/4/NTXNbeQXx3wq7r5/t37k5+TTysLPnIKcgs4ovsRtMtvV9dmyP5DUvpondOak/c8OeO2&amp;#10;pZm4e6MP4MM4y+pZtzswu57Y8cBEgiOKg4B3w+UdgYVAh/CxEOjY2Lb69OnjW6uamhq/c+qdvvc9&amp;#10;e3vxmGKf+OnESJvn5j7n2/15O8+7Ps/3vXdf/7r865R4RVWF/+7F3/med+/ph4491N//7/uRPqZ8&amp;#10;PsUPvP9A73lPTx/x+givrqlucq6PznrU9x+1v+93737+9w//HonfMfUOZzh1jxc+eSE1z4oKLxxR&amp;#10;WBc/6P6DIn0MeWpIXTznuhxftGpRSnzZmmVedHNRXfyOqXdE+rj5zZu9cESht76htZ/wyAleXZ36&amp;#10;XKcsnOI51+U4w/FWw1v5Pz78R6SPHiN71OXRa1SvSPzNRW96p1s6ed71ed5jZA//z+r/pMTXV633&amp;#10;3e7cLdjGda38NxN/E+njoQ8e8m1u2sbzb8j3g+4/yMsry1PiZRVlPuxfw3yPu/bwI8cd6XNL50b6&amp;#10;GP7qcC+8MXiupzx+SuS5Tv1iqre5sY0zHC+4scCnLJySEq+pqfExJWN833v39d6je/szHz8T2cb8&amp;#10;FfP9mL8f43vctYcPnTDU165fmxKvqq7yq1++2ve6ey/v90A/n7Z4WqQP2fiAEo/xWe7usU96PwiM&amp;#10;dvdp4fyBwBB3H9bIeo8SnMDuBHxF8M2nvLBQjTYzIzhiGQCUAWe7e0m47jnAlWFXI9z9/xrLc2s+&amp;#10;6S0i8l005aR3YxcfnEVw7iAP+IWZfRHO7wJEv7eZxt0HNxJ34IJ6YmOBsY1tQ0RENo3GTnqfsEmy&amp;#10;EBGRFq+xiw8uSp43sx2A6BlHERHZ4sW9+OBAM/uU4OTzFOBzgpPVIiKylYj7tdobCL7F9Im77woc&amp;#10;CUSvpSAiIlusuAWj0t1XAK3MrJW7vwr0ymJeIiLSwsT6T29glZm1A14H/mFmy4CG/51WRES2KHGP&amp;#10;ME4EyoFLgUnAZzR8+1YREdnCxDrCcPfkC+SMq7ehiIhssRr7x701ZL7onxH83902WclKRERanMb+&amp;#10;D6P9pkpERERatrjnMEREZCungiEiIrGoYIiISCwqGCIiEosKhoiIxKKCISIisWS1YJjZADObZ2bz&amp;#10;zSxyo2Uzu8PMPggfn5jZqqRYdVJsQjbzFBGRxsW9llSTmVkOcA9wNLAEmG5mE9y97k597n5pUvuL&amp;#10;gN5JXZS7uy5wKCLSQmTzCKMvMN/dF7h7BfAYwTWp6jMYeDSL+YiIyAbIZsHoDCxOml8SLosws12A&amp;#10;XYFXkhYXmFmJmU0zs5Oyl6aIiMSRtSEpgutNpct0XSqAQcCT7l6dtKybuy81s92AV8xslrt/FtmI&amp;#10;2VBgKEC3bt02NGcREalHNo8wlgBdk+a7AEvraTuItOEod18a/lwAvEbq+Y3kdve5e7G7FxcVFW1o&amp;#10;ziIiUo9sFozpQA8z29XM8gmKQuTbTma2B9ABmJq0rIOZtQ6nOwH9gDnp64qIyKaTtSEpd68yswuB&amp;#10;yUAOMNbdPzKz64ESd68tHoOBx9w9ebhqL2CMmdUQFLU/J3+7SkRENj1L/ZzevBUXF3tJSUlzpyEi&amp;#10;stkwsxnuXhynrf7TW0REYlHBEBGRWFQwREQkFhUMERGJRQVDRERiUcEQEZFYVDBERCQWFQwREYlF&amp;#10;BUNERGJRwRARkVhUMEREJBYVDBERiUUFQ0REYlHBEBGRWFQwREQklqwWDDMbYGbzzGy+mV2eIX6W&amp;#10;mZWa2Qfh49yk2BAz+zR8DMlmniIi0ris3XHPzHKAe4CjCe7vPd3MJmS4c97j7n5h2rodgWuBYsCB&amp;#10;GeG6X2crXxERaVg2jzD6AvPdfYG7VwCPASfGXPfHwEvuvjIsEi8BA7KUp4iIxJDNgtEZWJw0vyRc&amp;#10;lu4UM5tpZk+aWdcmrisiIptINguGZViWfgPx54Du7r4f8G9gXBPWDRqaDTWzEjMrKS0t/c7JiohI&amp;#10;w7JZMJYAXZPmuwBLkxu4+wp3Xx/O3g/0ibtuUh/3uXuxuxcXFRVtlMRFRCQqmwVjOtDDzHY1s3xg&amp;#10;EDAhuYGZ7Zw0OxD4OJyeDBxjZh3MrANwTLhMRESaSda+JeXuVWZ2IcEHfQ4w1t0/MrPrgRJ3nwBc&amp;#10;bGYDgSpgJXBWuO5KM7uBoOgAXO/uK7OVq4iINM7cM54a2CwVFxd7SUlJc6chIrLZMLMZ7l4cp63+&amp;#10;01tERGJRwRARkVhUMEREJBYVDBERiUUFQ0REYlHBEBGRWFQwREQkFhUMERGJRQVDRERiUcEQEZFY&amp;#10;VDBERCQWFQwREYlFBUNERGJRwRARkVhUMEREJBYVDBERiSWrBcPMBpjZPDObb2aXZ4j/1szmmNlM&amp;#10;M3vZzHZJilWb2QfhY0L6uiIismll7RatZpYD3AMcDSwBppvZBHefk9TsfaDY3cvM7HzgFuDnYazc&amp;#10;3XtlKz8REWmabB5h9AXmu/sCd68AHgNOTG7g7q+6e1k4Ow3oksV8RERkA2SzYHQGFifNLwmX1eeX&amp;#10;wMSk+QIzKzGzaWZ2Un0rmdnQsF1JaWnphmUsIiL1ytqQFGAZlnnGhmZnAsXA4UmLu7n7UjPbDXjF&amp;#10;zGa5+2eRDt3vA+4DKC4uzti/iIhsuGweYSwBuibNdwGWpjcys6OAq4CB7r6+drm7Lw1/LgBeA3pn&amp;#10;MVcREWlENgvGdKCHme1qZvnAICDl205m1hsYQ1AsliUt72BmrcPpTkA/IPlkuYiIbGJZG5Jy9yoz&amp;#10;uxCYDOQAY939IzO7Hihx9wnArUA7YLyZAXzh7gOBvYAxZlZDUNT+nPbtKhER2cTMfcsZ9i8uLvaS&amp;#10;kpLmTkNEZLNhZjPcvThOW/2nt4iIxKKCISIisahgiIhILCoYIiISiwqGiIjEooIhIiKxqGCIiEgs&amp;#10;KhgiIhKLCoaIiMSigiEiIrGoYIiISCwqGCIiEosKhoiIxKKCISIisahgiIhILFktGGY2wMzmmdl8&amp;#10;M7s8Q7y1mT0ext8xs+5JsSvC5fPM7MfZzFNERBqXtYJhZjnAPcCxQE9gsJn1TGv2S+Brd/8BcAdw&amp;#10;c7huT4Jbuu4NDADuDfvb+D79FI46Cnr0gHPPhXXrUuNr10LnzmAGOTlwxRXRPt5+Gw48EPbcE665&amp;#10;BqqrU+MzZ0JeXtCHGfzlL9E+/t//gzZtoKAAzjwzGh81KrG+GTz+eGq8qgp22ikR798/2ke/fql9&amp;#10;vPxyanzu3NT43ntH+7jwQmjVKojvthtUVKTGV68O8u/RAwYMgEWLon106ZLYxk47RePvvAM77AD5&amp;#10;+dC9OyxcGG3TmCeegG23Dfro1Qu++SY1vn49XHQR7L47HHYYzJrV9G2IbG3cPSsP4GBgctL8FcAV&amp;#10;aW0mAweH07nAcsDS2ya3a+jRp08fb5LSUveOHd3N3MG9oMD9mGNS23TsGMSSH/fdl4h/9JF7YWEi&amp;#10;VljofsklqX2krw/uU6Yk4tddF40PGZKIz52buY/S0kSbHXaIxk89NRG/9NLMfTSW509/mojfdFM0&amp;#10;3qVLIl5T437gge75+UEsJ8d9xx3dV69OtNltt4b7+Oor91atUuNt2rhXVmZ8CTN6++3oNnbZJbXN&amp;#10;aacF/ULw+rdv7754cfxtiGwhCG6ZHetzPZtDUp2BxUnzS8JlGdu4exWwGtg+5rob7tVXobIy+EgB&amp;#10;+PZbeOWV1KOMlSuj6912W2L6n/8M/lqtVVYG48Yl5t98M/O2L08aoRs1KhofPz4x/dvfZu5j+PDE&amp;#10;9LJl0fizzyam7747cx9z52ZeXuuZZxLTI0dG40uWJKa//BI+/DBx1FFdDeXlMG1aos2CBQ338fDD&amp;#10;UFOTGi8vD4464rrrruiyRYsS/dbUBK9beXkw7x7kOmlS/G2IbIWyWTAsw7L0G4jX1ybOukEHZkPN&amp;#10;rMTMSkpLS5uWYevWGbbikJvb8Hr5+YnpgoJgiCZZXl5iukOHzH0UFGTur1ZO0gjctttm7mO77RrO&amp;#10;Mzmv9Bzj9pEsU57p8fQPe/fG10vWtm3TlmeSvG8zqR1eTF/WlDxFtkZxD0Wa+mBzGJIqK3Pv0SMx&amp;#10;hFJY6D5sWGqb/fZreDhp6dLhxF4jAAAKTElEQVRg2ConJ9HHvfem9pGXF+0jefjjscei8VtuScTX&amp;#10;rcs8XFRRkWhz8MHR+I03JuLjx3+3Ialbb03En3oqGj/ssNQ+Tj89MURXUODeq1dqnscdF+3jiCMS&amp;#10;8fLy1CE+cO/cOfraNWTRouiw1uGHp7a5+urEdvLygmGx5KEzka0ETRiSymbByAUWALsC+cCHwN5p&amp;#10;bS4ARofTg4Anwum9w/atw/UXADmNbbPJBcPdfdUq9yuucP/5z93HjAnG4dMNHBh8uHTq5P7889H4&amp;#10;F1+4X3RR8GH59NPReHm5e9euQVFp39793XejbcaPd99jD/fvfz9acNyD8xgFBcFL1rZtUKjSnXCC&amp;#10;e25uUACHD4/Gb7018QGakxPkla62eIL7734XjT/2WFAg27Z1Hzw4Gq+qch85Mtif117rvnZttM0p&amp;#10;pwTnDcyCnNOVlrr37x/ss5NOcl+/PtqmMXPmuPfp496tm/t557lXV6fGa2rcx41zHzTI/bLLUs8H&amp;#10;iWxFmlIwLGifHWZ2HHAnkAOMdfcRZnZ9mOAEMysAHgJ6AyuBQe6+IFz3KuAcoAq4xN0nNra94uJi&amp;#10;LykpydKzERHZ8pjZDHcvjtU2mwVjU1PBEBFpmqYUDP2nt4iIxKKCISIisahgiIhILCoYIiISiwqG&amp;#10;iIjEooIhIiKxbFFfqzWzUiDD5VE3mU4E/63e0inPjW9zyVV5blxbQp67uHtRnE62qILR3MysJO73&amp;#10;mZuT8tz4NpdclefGtbXlqSEpERGJRQVDRERiUcHYuO5r7gRiUp4b3+aSq/LcuLaqPHUOQ0REYtER&amp;#10;hoiIxKKC8R2ZWY6ZvW9m/8oQO8vMSs3sg/BxbjPl+LmZzQpziFzG1wIjzWy+mc00swNaaJ79zWx1&amp;#10;0v78YzPluZ2ZPWlmc83sYzM7OC3eUvZnY3m2lP25R1IOH5jZN2Z2SVqbZt+nMfNsKfv0UjP7yMxm&amp;#10;m9mj4S0kkuOtzezxcH++Y2bdm9J/I/cilQb8BvgY2Kae+OPufuEmzKc+R7h7fd+/PhboET4OBEaF&amp;#10;P5tDQ3kCvOHuJ2yybDL7KzDJ3U81s3ygMC3eUvZnY3lCC9if7j4P6AXBH2DAf4Cn05o1+z6NmSc0&amp;#10;8z41s87AxUBPdy83sycIbkz3YFKzXwJfu/sPzGwQcDPw87jb0BHGd2BmXYDjgb81dy4b6ETg7+GN&amp;#10;t6YB25nZzs2dVEtkZtsAhwEPALh7hbuvSmvW7PszZp4t0ZHAZ+6e/o+3zb5P09SXZ0uRC7Qxs1yC&amp;#10;PxSWpsVPBMaF008CR5qZxe1cBeO7uRP4PVDTQJtTwkPoJ82s6ybKK50DL5rZDDMbmiHeGVicNL8k&amp;#10;XLapNZYnwMFm9qGZTTSzvTdlcqHdgFLg/8KhyL+ZWdu0Ni1hf8bJE5p/f6YbBDyaYXlL2KfJ6ssT&amp;#10;mnmfuvt/gNuAL4D/Aqvd/cW0ZnX7092rgNXA9nG3oYLRRGZ2ArDM3Wc00Ow5oLu77wf8m0RF39T6&amp;#10;ufsBBIf1F5jZYWnxTH9ZNMfX5hrL8z2CyxfsD9wFPLOpEyT4y+0AYJS79wbWAZentWkJ+zNOni1h&amp;#10;f9YJh80GAuMzhTMsa5avdjaSZ7PvUzPrQHAEsSvwPaCtmZ2Z3izDqrH3pwpG0/UDBprZ58BjwI/M&amp;#10;7OHkBu6+wt3Xh7P3A302bYp1eSwNfy4jGHPtm9ZkCZB89NOF6CFs1jWWp7t/4+5rw+kXgDwz67SJ&amp;#10;01wCLHH3d8L5Jwk+mNPbNPf+bDTPFrI/kx0LvOfuX2WItYR9WqvePFvIPj0KWOjupe5eCTwF/DCt&amp;#10;Td3+DIettgVWxt2ACkYTufsV7t7F3bsTHJ6+4u4pVTxtjHUgwcnxTcrM2ppZ+9pp4BhgdlqzCcAv&amp;#10;wm+iHERwCPvflpanme1UO85qZn0J3rcrNmWe7v4lsNjM9ggXHQnMSWvW7PszTp4tYX+mGUz9wzzN&amp;#10;vk+T1JtnC9mnXwAHmVlhmMuRRD97JgBDwulTCT6/Yh9h6FtSG4mZXQ+UuPsE4GIzGwhUEVTvs5oh&amp;#10;pR2Bp8P3cC7wiLtPMrPzANx9NPACcBwwHygDzm6heZ4KnG9mVUA5MKgpb/KN6CLgH+HQxALg7Ba4&amp;#10;P+Pk2VL2J2ZWCBwN/DppWYvbpzHybPZ96u7vmNmTBMNjVcD7wH1pn00PAA+Z2XyCz6ZBTdmG/tNb&amp;#10;RERi0ZCUiIjEooIhIiKxqGCIiEgsKhgiIhKLCoaIiMSigiGSQXj10UxXIs64fCNs7yQz65k0/5qZ&amp;#10;NXoPZjPbeWPkY2ZFZjZpQ/uRLZsKhkjLcBLQs9FWUb8luJrABnH3UuC/ZtZvQ/uSLZcKhmyWwv8Q&amp;#10;fz682NtsM/t5uLyPmU0JL2Q4ufa/7sO/2O80s7fD9n3D5X3DZe+HP/doaLsZchhrZtPD9U8Ml59l&amp;#10;Zk+Z2SQz+9TMbkla55dm9kmYz/1mdreZ/ZDgigC3WnAvhe+HzX9mZu+G7Q+tJ41TgElh3zlmdpsF&amp;#10;9xaZaWYXhcs/N7ObzGyqmZWY2QHhvvms9p/PQs8AZ8R9/rL10X96y+ZqALDU3Y8HMLNtzSyP4MJv&amp;#10;J7p7aVhERgDnhOu0dfcfWnBxw7HAPsBc4DB3rzKzo4CbCD6E47iK4NIK55jZdsC7ZvbvMNYL6A2s&amp;#10;B+aZ2V1ANXANwbWd1gCvAB+6+9tmNgH4l7s/GT4fgFx372tmxwHXElwrqI6Z7Upwb4Pa65YNJbjw&amp;#10;XO/w+XRMar7Y3Q82szsI7o/QDygAPgJGh21KgBtjPnfZCqlgyOZqFnCbmd1M8EH7hpntQ1AEXgo/&amp;#10;cHMILvNc61EAd3/dzLYJP+TbA+PMrAfBVTvzmpDDMQQXorwsnC8AuoXTL7v7agAzmwPsAnQCprj7&amp;#10;ynD5eGD3Bvp/Kvw5A+ieIb4zwaXMax0FjA4vW03tdkITwp+zgHbuvgZYY2bfmtl24T0zlhFc5VQk&amp;#10;IxUM2Sy5+ydm1ofgOkN/MrMXCa50+5G7H1zfahnmbwBedfeTLbhd5WtNSMOAU8I7siUWmh1IcGRR&amp;#10;q5rgdy32jWpCtX3Urp+unKBIJedT37V+avuqScutJqnvgrBPkYx0DkM2S2b2PaDM3R8muGnMAcA8&amp;#10;oMjCe1ibWZ6l3sim9jzHIQRXPV1NcHnn/4Txs5qYxmTgovDKoJhZ70bavwscbmYdLLi0dPLQ1xqC&amp;#10;o52m+ITUI48XgfPCvkkbkopjd6JXNBapo4Ihm6t9Cc4ZfEBwLuFGd68guGrozWb2IfABqfcD+NrM&amp;#10;3iYYs/9luOwWgiOUtwiGsJriBoIhrJlmNjucr1d4R7SbgHcIbqw1h+COZxDcW+V34cnz79fTRXp/&amp;#10;64DPzOwH4aK/EVziemb4/E9v4vM5Ani+ievIVkRXq5Wtgpm9Blzm7iXNnEc7d18bHgU8DYx196c3&amp;#10;oL+TgT7ufvVGyO11gi8MfL2hfcmWSUcYIpvW8PCoaDawkA28lWdYbD7f0KTMrAi4XcVCGqIjDBER&amp;#10;iUVHGCIiEosKhoiIxKKCISIisahgiIhILCoYIiISiwqGiIjE8v8B4ErS4KFmRDYAAAAASUVORK5C&amp;#10;YII=&amp;#10;&quot;&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing text_cell rendered&quot;&gt;&lt;div class=&quot;prompt input_prompt&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;inner_cell&quot;&gt;
&lt;div class=&quot;text_cell_render border-box-sizing rendered_html&quot;&gt;
&lt;p&gt;pandas.DataFrame으로 간단하게 데이터 가시화를 해보았습니다.&lt;/p&gt;
&lt;p&gt;마지막으로 &lt;strong&gt;여러 종류의 그래프를 한 곳에 그리는 방법&lt;/strong&gt;도 공유해드릴게요.&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing code_cell rendered&quot;&gt;
&lt;div class=&quot;input&quot;&gt;
&lt;div class=&quot;prompt input_prompt&quot;&gt;In&amp;nbsp;[7]:&lt;/div&gt;
&lt;div class=&quot;inner_cell&quot;&gt;
    &lt;div class=&quot;input_area&quot;&gt;
&lt;div class=&quot; highlight hl-ipython3&quot;&gt;&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;ax&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;sepal length (cm)&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;plot&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'green'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ax_2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;petal length (cm)&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;plot&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;bar&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ax&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ax&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'red'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# x축에 사용할 라벨&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ax_2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;set_xticks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ax_2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;set_xticklabels&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;iris_df&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rotation&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;45&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# y축에 사용할 라벨을 지정합니다.&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ax_2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;set_ylabel&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;length(cm)&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;ax_2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;legend&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;output_wrapper&quot;&gt;
&lt;div class=&quot;output&quot;&gt;


&lt;div class=&quot;output_area&quot;&gt;

&lt;div class=&quot;prompt output_prompt&quot;&gt;Out[7]:&lt;/div&gt;




&lt;div class=&quot;output_text output_subarea output_execute_result&quot;&gt;
&lt;pre&gt;&amp;lt;matplotlib.legend.Legend at 0x1e284aa0f28&amp;gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;div class=&quot;output_area&quot;&gt;

&lt;div class=&quot;prompt&quot;&gt;&lt;/div&gt;




&lt;div class=&quot;output_png output_subarea &quot;&gt;
&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXwAAAEGCAYAAABmXi5tAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz&amp;#10;AAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo&amp;#10;dHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzsnXl4lNXZ/z8n22Sb7AkkAZJAACEh&amp;#10;IEt4BVFEXFLRanEr+qr1dSsV7dufLS61atW2travglWrda+17ihFaEVRK2rCjgkiCXtIIHsy2SeZ&amp;#10;8/tjcp7MZNZskOD5XBcXycyznJnJfJ/vc5/73LeQUqLRaDSak5+AEz0AjUaj0RwftOBrNBrNdwQt&amp;#10;+BqNRvMdQQu+RqPRfEfQgq/RaDTfEbTgazQazXcELfgajUbzHUELvkaj0XxH0IKv0Wg03xGCTvQA&amp;#10;HElISJDp6eknehgajUYzbNiyZUuVlDLRn22HlOCnp6ezefPmEz0MjUajGTYIIQ76u60O6Wg0Gs13&amp;#10;BC34Go1G8x1hUAVfCPG/QogiIUShEOI1IUToYJ5Po9FoNJ4ZtBi+ECIVuA2YLKVsEUK8AVwJvNib&amp;#10;41itVkpLS2ltbR2EUWqGCqGhoYwaNYrg4OATPRSN5qRlsCdtg4AwIYQVCAfKenuA0tJSzGYz6enp&amp;#10;CCEGfICaE4+UkurqakpLS8nIyDjRw9FoTloGLaQjpTwCPAocAsqBeinlv3t7nNbWVuLj47XYn8QI&amp;#10;IYiPj9d3cRrNIDNogi+EiAW+D2QAKUCEEOJqN9vdJITYLITYXFlZ6elYgzVMzRBBf8YazeAzmJO2&amp;#10;C4H9UspKKaUVeAeY03MjKeUzUsqZUsqZiYl+rR3QaDSaQWdr+VY+3PvhiR7GgDKYgn8I+C8hRLiw&amp;#10;27ezgW8G8XzDkk8++YRFixb5/Xh/WbVqFbt27TJ+nz9/vl+L3crLywdkPJWVlZx//vn9Po5GM9gs&amp;#10;X7+cZWuXnehhDCiDGcPPB94CtgJfd53rmcE6n8Y/egq+v/zpT3/ixhtv7Pf5ExMTSU5OZuPGjf0+&amp;#10;lkYzmBRWFFLXWneihzGgDGqWjpTyPuC+gTreT9f9lO1Htw/U4QCYNnIaj53/mMfnm5qauPzyyykt&amp;#10;LaWzs5N7772XK664gi1btvCzn/2MxsZGEhISePHFF0lOTmb+/PlMmzaNgoICGhoaeP7558nNzaWg&amp;#10;oICf/vSntLS0EBYWxgsvvMDEiRP9GmNTUxPLli3j66+/pqOjg/vvv5/vf//7vPjii7z//vs0Nzez&amp;#10;d+9eLrnkEn7/+98D8Nxzz/HII4+QkpLC+PHjMZlMLFmyhPfff59PP/2Uhx56iLfffhuAN998k6VL&amp;#10;l1JXV8dzzz3HvHnzXMbw9ttv89BDDwHQ2dnJ8uXL+de//oUQghtvvJFly5aRnp7OkiVL2LBhA1ar&amp;#10;lWeeeYa77rqLkpISfv7zn3PLLbcAcPHFF/Pqq68yd+7cXn1WGs3xorq5mqONRwkNOrmWDg2pWjpD&amp;#10;kXXr1pGSksKaNWsAqK+vx2q1smzZMt577z0SExN5/fXXueeee3j++ecBu0B/8cUXfPbZZ1x//fUU&amp;#10;FhZyyimn8NlnnxEUFMT69eu5++67DcH1xcMPP8yCBQt4/vnnqaurIzc3l4ULFwKwfft2tm3bhslk&amp;#10;YuLEiSxbtozAwEAefPBBtm7ditlsZsGCBUydOpU5c+Zw0UUXsWjRIi699FLj+B0dHRQUFPDBBx/w&amp;#10;wAMPsH79eqfz79+/n9jYWEwmEwDPPPMM+/fvZ9u2bQQFBVFTU2NsO3r0aL788kv+93//l+uuu46N&amp;#10;GzfS2tpKVlaWIfgzZ87kl7/8ZR8/EY1m8CmqLAKgtaOV9s52QgJDTvCIBoZhJfjenPhgMWXKFO64&amp;#10;4w6WL1/OokWLmDdvHoWFhRQWFnLOOecAdsebnJxs7PPDH/4QgDPOOIOGhgbq6uqwWCxce+21FBcX&amp;#10;I4TAarX6PYZ///vfvP/++zz66KOAPVX10KFDAJx99tlER0cDMHnyZA4ePEhVVRVnnnkmcXFxAFx2&amp;#10;2WXs2bPH4/F/8IMfADBjxgwOHDjg8nx5eTmOE+rr16/nlltuISjI/uejzgNw0UUXGe9bY2MjZrMZ&amp;#10;s9lMaGgodXV1xMTEkJSURFlZr5dkaL6D7K7aTXF1MQBTRkwhPSbd47bHGo8BMCJyRL/PW1RRZPzc&amp;#10;0NZAQniCx3NKJCMjR/b7nMeDYSX4J4IJEyawZcsWPvjgA+666y7OPfdcLrnkErKysvjyyy/d7tMz&amp;#10;xVAIwb333stZZ53Fu+++y4EDB5g/f77fY5BS8vbbb7uEgPLz8w3XDRAYGEhHRwdSSv9fIBjHUPv3&amp;#10;JCwszClHXkrpMY1SHSsgIMBpbAEBAcaxW1tbCQsL69UYNd9NFr68kCOWIwDkpuaSf0O+x21/9N6P&amp;#10;CBAB/HPJP/t93sKKQuNnb4J/w+obsHZaWXf1un6f83igi6f5oKysjPDwcK6++mruuOMOtm7dysSJ&amp;#10;E6msrDQE32q1UlTU7Qhef/11AD7//HOio6OJjo6mvr6e1NRUAF588cVejeG8885j5cqVhpBv27bN&amp;#10;6/a5ubl8+umn1NbW0tHR4RQ6MpvNWCyWXp1/woQJTs7/3HPP5emnnzYE3DGk4w979uwhOzu7V/to&amp;#10;vnvYpI3yxnJuOPUGLhh/ARVNFV63P9Z0zLg49JfCym7Br2+t97hdmaVswM55PNCC74Ovv/6a3Nxc&amp;#10;pk2bxsMPP8wvf/lLQkJCeOutt1i+fDlTp05l2rRpfPHFF8Y+sbGxzJkzh1tuuYXnnnsOgF/84hfc&amp;#10;ddddzJ07l87Ozl6N4d5778VqtZKTk0N2djb33nuv1+1TU1O5++67mT17NgsXLmTy5MlG2OfKK6/k&amp;#10;D3/4A6eeeip79+716/wRERGMGzeOkpISAG644QbGjBlDTk4OU6dO5e9//3uvXs+GDRu44IILerWP&amp;#10;ZuiwZs8aXvv6tUE/T31rPTZpY3LiZNKi07C0eTcqzdZmr+LsL1JKiiqKGBc7DrA7fE9Y2iwDcs7j&amp;#10;hpRyyPybMWOG7MmuXbtcHhvKnHnmmXLTpk0nehjSYrFIKaW0Wq1y0aJF8p133unX8d555x15zz33&amp;#10;DMTQ5Lx582RNTY3L48Pts/6ucvZLZ8ucp3IG/Twl1SWS+5EvbntRLv9wuTQ9aPK6/eg/jZaxv4vt&amp;#10;93nLLeWS+5HXvHuN5H7ke7vf87jtiD+MkObfmPt9zv4AbJZ+aqx2+Ccp999/P9OmTSM7O5uMjAwu&amp;#10;vvjifh3vkksuYSDaT1ZWVvKzn/2M2NjYfh9Lc2Koaq6iraNt0M9T02IPFcaFxREZEklbZxvWTs/J&amp;#10;Ds3WZurb6ns9h9UTFb+fM8peGMCrw2+3YGm30Gnr3V37iUJP2g4wn3zyyYkeAoCR0TOQ3HDDDf0+&amp;#10;RmJiYr8vPpoTS1VzFUEBgy8dSvDjw+Mxh5gBu8DGhcW53b7Z2oxN2mhsb8RsMvf5vCpDZ85ou+B7&amp;#10;Ctl02DpotjYD9otCbNjQNzHa4Ws0Gr+RUlLVXEVrx+BXNnV0+ErAPcXxbdJGS0cLQL9XxxZWFJIQ&amp;#10;nsD4+PEA1Le5F3zHsQyXFbla8DUajd80W5tp62wzxHUwqW6pBroE38Hhu6PF2j0eTwLtL0WVRWQl&amp;#10;ZhEaFEpIYIjHkI7jWPp7zuOFFnyNRuM3Vc1VAMfV4ceGxhoOv7G90e22TdYm4+f+uO2q5iq2lm9l&amp;#10;evJ0AKJN0R5DOo4XAu3wNRrNSYcS/PbOdmzSNqjnqmmpwRxiJjgwmMiQSMBzSEfF0sF73rwvnt3y&amp;#10;LG2dbfzPqf8DQJQpioZ2Dw7fYSzDJTVz+Am+EAP7bxB48cUX/SodcN111/HWW2/5/Xh/+c1vfmP8&amp;#10;fODAAb8XPz322GO8/PLL/T7/E088wQsvvNDv42hOHErwASNTp6alhoteu4ijjUcH9Fw1LTXGBK2v&amp;#10;kI6j4PfVbXfYOnhq81MsyFhAVlIWANGh2uFrfOCv4B9vHAXfXzo6Onj++edZsmRJv89//fXXs2LF&amp;#10;in4fR3PicBR8FdbZfnQ7q/es5uP9Hw/ouWpaaogPjwfwOWnb1N7/kM57u9/jcMNhbsu9zXgsyhTl&amp;#10;MYavBf8k5MCBA5xyyilce+215OTkcOmll9LcbHcTW7Zs4cwzz2TGjBmcd955lJeX89Zbb7F582au&amp;#10;uuoqpk2bRktLC7/+9a+ZNWsW2dnZ3HTTTb3KE3Z3DrA3Llm+fDm5ublMmDCB//znPwA0Nzdz+eWX&amp;#10;k5OTwxVXXMHs2bPZvHkzd955Jy0tLUybNo2rrroKsBd9u/HGG8nKyuLcc8+lpcV1Iu7jjz9m+vTp&amp;#10;RqG0kpISFi5cyNSpU5k+fTp79+7lk08+4cwzz+Tyyy9nwoQJ3Hnnnbz66qvk5uYyZcoUY0VveHg4&amp;#10;6enpFBQU9P0D0ZxQ3Am+mjAtqSkxnmtsb3QS4b7QV4fvbgK1qrnKZ678yoKVpMeks2hCd6OfaFO0&amp;#10;5ywdPWl7cvLtt99y0003sXPnTqKionjyySeNEslvvfUWW7Zs4frrr+eee+7h0ksvZebMmbz66qts&amp;#10;376dsLAwbr31VjZt2kRhYSEtLS3885/+FXfydA6FKmv82GOP8cADDwDw5JNPEhsby86dO7n33nvZ&amp;#10;smULAL/73e8ICwtj+/btvPrqqwAUFxfzk5/8hKKiImJiYtyWa964cSMzZswwfr/qqqv4yU9+wo4d&amp;#10;O/jiiy+MKqE7duzg8ccf5+uvv+aVV15hz549FBQUcMMNN7By5Upj/5kzZxoXJ83wQ2XOgIPgd7gK&amp;#10;/uI3FnPde9f1+1yG4Pdj0ra+tZ6MxzN4ZecrHs9V2lDKpwc/5eYZNxMYEGg87o/DF4hh4/D1wis/&amp;#10;GD16tNGs4+qrr2bFihWcf/75XkskO7JhwwZ+//vf09zcTE1NDVlZWVx44YU+z/vtt996PYe7ssaf&amp;#10;f/45t99+OwDZ2dnk5OR4PH5GRgbTpk1zOYYj5eXlTJo0CQCLxcKRI0e45JJLAAgN7W4OMWvWLGNs&amp;#10;48aN49xzzwXsZZI3bNhgbJeUlMTu3bt9vnbN0MSdw1fuurjGXsZYSsmXh78k2ez+++AvNS01xIXa&amp;#10;Bd8UaCIoIKhPk7aFFYU0tjeyp9pzifD9tfsBmJE8w+lxf7J0RkSOGDaTtlrw/cBduWMppdcSyYrW&amp;#10;1laWLl3K5s2bGT16NPfff79TqWFv+DqHu7LGvQkX9Syt7C6k41ga2duxe5ZCdiyT7FhyWZdGHh5U&amp;#10;NlXyRtEbLJ211Onv35+QzuGGw1jaLVjrrV5LaXvDJm1OIR0hBJEhkT5DOsEBwdS1ObttVSqhsqnS&amp;#10;4/lUxcvUqFSnx5XDd/c6LG0WwoLCiA+LdznnUGXQQjpCiIlCiO0O/xqEED8drPMNJocOHTJE97XX&amp;#10;XuP000/3WiLZsQSxEsuEhAQaGxt7lX3jqwyzO04//XTeeOMNAHbt2sXXX39tPBccHNyrxisAkyZN&amp;#10;MqpkRkVFMWrUKFatWgVAW1ubMZ/hL7o08vDgjaI3uHXtreytda6o6lbwu0I6Vc1V1LXWGaUJWjta&amp;#10;fZY09oSlzYJN2pzKKJhDzB4FX80XJJuTXdy26l5V0ex5LEcaugTf7Cz40aHRdMpOpzsIRUNbA1Gm&amp;#10;KGJCY4ZNSGcwm5h/K6WcJqWcBswAmoF3B+DAA/vPDyZNmsRLL71ETk4ONTU1/PjHP/ZaIvm6667j&amp;#10;lltuYdq0aZhMJm688UamTJnCxRdfzKxZs/x+qb7KMLtj6dKlVFZWkpOTwyOPPEJOTo5RGvmmm24i&amp;#10;JyfHmLT1h7y8PD777DPj91deeYUVK1aQk5PDnDlzOHq0d6l4GzduNNozaoYuatFTaUOp0+NVzVXE&amp;#10;htprxvR0+GB3+Y7NQw7UHejX+VWWDtjj+L5COinmFBfxVePxdvEpbSglIjiCKFOU0+Pqd3dxfEu7&amp;#10;BbPJTExojA7p9OBsYK+U8uBxOt+AEhAQwNNPP+3y+LRp05zEULF48WIWL15s/P7QQw8ZDcAd8dQI&amp;#10;xfFxT+dwLNKWkJBgxN9DQ0P529/+RmhoKHv37uXss88mLS0NgEceeYRHHnnE2K+wsPuLeccdd7gd&amp;#10;S1paGvHx8RQXFzN+/HjGjx/Pxx87p9+NHTuWU//rVHZX7WZC/ASnsc2fP9/o7rVt2zaysrJISHDf&amp;#10;PUgzdKhtrQW6na+iuqWaUVGjqG2tdXH40CX4lYUIBBLJwfqDzB41u9fnd6yjo/Dq8LsmbVPMKU7t&amp;#10;CcE/wT9iOUJqVKpL2CbaZDdL9W31LnMSyuFHh0azu2p4zEsdryydKwG3HROEEDcJITYLITZXVnqO&amp;#10;sWn8o7m5mdNPP52pU6dyySWX8NRTTxES0r8GzL/73e+MdFBPNFmbaGxvpL2z3eM2VVVVPPjgg/0a&amp;#10;i+b4oFyyo8NXhdNGRY0CnB2+qp5ZUlNCUUURs1Ltd7IH6/rm8Rzr6CjMJrPHLJ1mazMhgSHEh8U7&amp;#10;pUhWNFVQ2VyJKdDkU/DV63JEOXx3Dr6hrQFziJkYU4xOy1QIIUKAi4A33T0vpXxGSjlTSjnTsVH2&amp;#10;UCE9Pd3JCQ91zGYzmzdvZseOHezcuZO8vLx+H3PixImcccYZXrdRy+wd66S3WFuccp/POeecAamp&amp;#10;rxl8DIfv0L5PXdBVnFs5+5aOFqJMUYyKGsW31d+yq3IXc0bNIdoUzcH6vgm+O4cfGRLpFNLZdGST&amp;#10;kUjQbG0mIjjCJZ6u3P7cMXNpbG90Cj85cqThiEv8HuwxfPAc0lEOv661zmNSw/7a/U6rkDttnRQc&amp;#10;OTFrUY6Hw88Dtkopj/X1AP1taKAZfJTgK9dns9nYVbXL70k7/RkPLWpbXAVfTdi6c/hhQWFkxmWy&amp;#10;ft96WjpayE7KJj0mfUAF3/z6KiOks7V8K7l/zeXTg58C9knb8OBwok3RtHa0GsZDhXPOSj8LgMpm&amp;#10;1yiCTdrsIR03gm84fDcO3nHStsPW4bGC6OVvXc7F/+juAbEifwWz/zqbfbX7fLwLA8/xEPwf4iGc&amp;#10;4w+hoaFUV1drQRjidEq7k2/rtH/RWjtakVJitfnOCpJSUl1d7ZTXrzmxuIvhexT8jhbCgsPIjM00&amp;#10;nGx2UjZpMWl9Dum4Ffy27tIKSizV+Jo7mgkPDicmNAboFuiiyiLiwuKYkjQFcB/Hr2yqpMPW4ZKS&amp;#10;Cd0xfLcOv82COcRsbOMpU+dA3QHyj+STX5pPp62TlQUrncZ+PBnUSVshRDhwDnBzX48xatQoSktL&amp;#10;0fH9oU1lUyXN1maagptoirDH86ubq2kJaaEp3PcS+9DQUEaNco2hDjW+qfyGv2z5Cw8teMio4Hgy&amp;#10;osTLL4ffYXf4qmEIYDQe37B/g1MOe6etk+Xrl3PTjJuYED/B4/lrWmqIDIkkJLB7/snc3l3OQF1Y&amp;#10;1Dibrc1EhEQYIZj61nqSIpIorCgkKzGLEZEjAPeCr15jX2L4yuGrsaSYU5y2ae9sN963lQUruSLr&amp;#10;CvbX2Rd5Oaa4/n7j7xkbO5ZLJ1/q8T0ZCAZV8KWUzUC8zw29EBwcTEZGxgCNSDNY/PzvP2dN8Roy&amp;#10;4zIpXlbMnevv5JGNj3DRxIt478r3TvTwBow7P7qT9799n/11+3nn8necluGfTKiQTrmlnE5bJ4EB&amp;#10;gcZEqtuQTrA9pAOQFp2G2WQmLToNS7uFutY6o/3fzmM7+eOXfyQpIolfzP2Fx/M7LrpSmNvsAtre&amp;#10;2W4IvroTUSEdR/GVUlJUWcQPs39IUkQS4H7xlaccfPCcltne2U5bZ5uT4Lu7KKgLTEJ4Am8UvcGe&amp;#10;6j1EhkTS2N7oJPiPbHzE3iYxNJazx57t8X3pL7qWjmZAUGlx+2v3Y+20GrHT4bIgxR/21+5n9ber&amp;#10;mTpiKu9/+z7L1y8f0OMPdn15f+mwdWBptzAiYgSdspNjTfbpNyVQKj2xp8NXgq9KC6fF2NOBHeP4&amp;#10;+UfynY7lCcc6OgpzVwJYY3tjt+B3XZjUpK1jeKXMUkZdax1ZiVmG4Ltz+CoTyV1IJzAgkIjgCJcY&amp;#10;vgotmU1m467C3d+6Gufyucux2qxsKtvE7bNvd3oPrJ1Walpq6LB1sPiNxWwu20xFU4XbxV79RQu+&amp;#10;ZkBQKx07ZScH6w+eEMGXUjJuxTie3uy6ZmIgeHLTkwSIAP655J/cOutW/vjlH/n80OcDcuzallpi&amp;#10;H4ll9berB+R4/UF9ZtlJ9hXRygFXNVcRKAKJCY0hNCjUrcMPFIHkJNnrN6VFdwm+QxxfZadUN3cX&amp;#10;YXOHO4cf2SX4ljYL5Y32NGHD4VubXGL4X1fYV5lnJWURERxBaFCox5BOoAhkRMQIt2OJDo12cfjq&amp;#10;dyeH72ZiVwn+GWlncN648wgJDOG22bcRFhRm3DEp4V8+dzmmIBOznp3FiEdHMPLRkQP+/dGCrxkQ&amp;#10;mqxNjIwcCcC28m2GqzueKxCbrE3sq93HzmM7B/zYzdZmntv2HJdMuoRRUaO48/Q7AQbsXN9Wf0tD&amp;#10;WwNrS9YOyPH6gxIZNdGpYtxVzVXEh8cTIAKcBL/Z2kxYUBjhweFsuHYDP5/7c8CHw2/x7vANwXdY&amp;#10;CGXuyvi1tFvcxvDD33qP6Ik5xuObjmxCIJiePB0hBEkRSW7LKxyxHCHZnOwxPOeuRLKaS4gyRXmd&amp;#10;tFXjTI5M5q8X/ZWPr/mYpIgkEsITDKFXmUOzUmbxxfVf8Ofv/Zk7TrsDS7uF/NJ8r+9Tb9GCrxkQ&amp;#10;mtqbmDpiKgDv73kfsDu83jqUA3UH+uya1RfIV7igL7y681VqW2tZlrsMsIc1ggOC+5yF0hN1nBOV&amp;#10;n+2ICpMoh69CHlXNVSSE21dJhwWFuWTpAMxLm2c488TwRMKCwozX1tDWwDeV3xjH8kZNSw3xYc7T&amp;#10;f2YHh98zht9sbSaiHWK66hLWt9aTfySfSYmTjDh8UkSSe4fvIQdf4a5EsvrdHGJ2mjfoSbml3Dj3&amp;#10;qKhRzB1jr7rrKPhqTEkRSYyLG8fSWUv55Rm/RCAG/O9BC75mQGiyNpERk0FkSCT/3GOv9z93zFwa&amp;#10;2hp6FZv+7X9+yxVvXdGnMQyW4EspWVmwkpwROcwbMw+AABHAmOgxfc4z74k6zo5jOzwuDjpeKBGd&amp;#10;ED+BoIAgI6RT3VJtF3whCD1c7hTSCQ8KdzmOEIIx0WM4UH8AgC1lW5BI4sLivH5GUkqPk7ZgF9tj&amp;#10;jfZ5BXVxampvItxqD/sEiABqW2spOFJAbmqusX9SRJLbSdvShlK38XuFuzaHjiGd0KBQggOC3d7N&amp;#10;Hm08SlxYHKYgk9PjngTf8ZynJJxCQZkWfM0QpKm9iYiQCDLjMqlrrSMsKIxpI6YhkR4LXrmjprXG&amp;#10;Z3zXE4Ml+J8d/IyvK77mttzbnGqtpMWkDZzgd7ngDlsH245uG5Bj9hXlVOPC4kgxpziHdLpcd2iH&amp;#10;ax6+O9Jj0o3XpsI55407z+tn1NjeSIetw+Ok7YG6A8a6D0eHH26FAGkX4R3HdlDZXMns1O46Ph4d&amp;#10;vodFVwp3Dl/9TUeZohBCeKyYebTpqBHqdMSX4APkpuaSX5o/oGuQtOBr+o1N2mjpaCEiOILxcfZc&amp;#10;7MmJk40vrIp/ri1ey/XvXe/1WJY2C22dbYaY9IbBEvyVBSuJC4tjyRTnvr5p0X1fWNSTg/UHSY60&amp;#10;Z7+c6LCOcs2xYbGkmlM5YjmClJJjjcfcC37XSlt3pEWnsbd2L43tjRQcKSAzLpPxceOpban12HJQ&amp;#10;LapSVTkVatJWNTJJNadS11qHtdOK1WYlomuNX0xoDBv225vuODn8cLvgOwpoY3sjDW0NXgXfXQzf&amp;#10;COl0deKKCXVfT+doo3vBjw+LNyZtK5oqCAoIMkJDitmps6lsruRg/UFs0saSt5fwzjfveBynP2jB&amp;#10;1/QblT6mHD7YMyN6xjZX71nNC9tf8BqyUJNhfclOUEJf3TJwK7MP1x9m1e5V3HDqDS4uNi06jfLG&amp;#10;cqf6QX3lYP1BclNzGRU1ynDCJwrlmmNDY0mNSjXa/1U2VxoxaCX4NmmjrbPNo8O/MvtKGtoaWPL2&amp;#10;EvKP5DM7dTYJ4QlIpHEeR+pb61nyzhJiQmNYONa5jLYK6ajOWqcknEJDW4PxNxPeJfjRpmiarE2E&amp;#10;BoUaE88AiRGJtHW2OVXcVOEqd4uuFFGmKK8hHcCop9OTo41HjQu5IwnhCcbFqrKpksTwRJdKnepi&amp;#10;lV+az4d7P+S1wtd4ouAJj+P0By34mn6jUjIjgrsFPzsx2yU/Wd26Oq7e7ImqhtiX7B4VCmrvbPdY&amp;#10;VbG3PLX5KSSSpbOWujynslAONxzu1zmklByoO0BadBqzU2cPCYdvCjQRFhxmd/gNR1iRv4L4sHiu&amp;#10;yLLPr4R22EM5yuV7cvhnZZzF4+c/zuo9qymzlBmCD653YtZOK5e9eRl7qvfwzuXvGO+vQoV0lOBP&amp;#10;SrC33iyzlAEQ0fW8MhrTk6cTHBhs7O8uF99bDr5CXUAc70jURUOttlYOX32WYP9cyy3lHkM6YJ+c&amp;#10;rmiucAnnAOSMyMEUaKLgSIFRjuHzQ5/3KkTaEy34mn6jFl1FhESQM8KeFjczZabLCkSVftazqYYj&amp;#10;6o+5Pw6/5899xSZtPL/teS6ccKGL+EB3nnlfm3woaltraWxvJC0mjdzUXPbV7vPajm+wqWutMz67&amp;#10;UVGjaLI2sWr3Km6cfqPh5JXDV3drnhw+wK25txrZTXPHzPUo+G8UvcGH+z7k6Que5qyMs1yOY+qA&amp;#10;oIAg9tbYu3BNTpwMdLt0w+F3GY3clFyn/d2ttlUdvUZHjfY4frXfB8UfGI81tDUQGRJJgLBLaLTJ&amp;#10;7vAf+uwhMh7PYNORTVjaLbR0tHgV/KrmKiqa3At+cGAw05On8+7ud/mg+APOTDsTq83Kx/s/dtnW&amp;#10;X7Tga/qNEdIJjmBmykyKlhZxVsZZLiEdw+F7KRqlnFNf6os75nYPhOBvK9/GsaZjHuubpMekA32v&amp;#10;+a5Q+yuHD7CpbFO/jtkfaltrjVIIKrYthOCWmbcY2xiC31Uh0pPDVzx2/mPsuGUH05OnexT8wopC&amp;#10;ggOCuXbatW6PIbCnQVptViJDIo0wjLpjDHeI4QMujVfcOfx/7/03qeZUxsaOdT9wIbhm6jWcOvJU&amp;#10;lryzxFh3YWmzOHXHigmNYU/1Hn71ya8A+M+h/xipo30VfLDH8ffX7ScwIJAXL36RyJDIfq3V0IKv&amp;#10;6TdGSCckAuh2Xo7dgsA1pCNakiWWAAAgAElEQVSl5PGvHndy/P11+KrYVl8E/2jjUR789EGjiYv6&amp;#10;Yp077ly324+KGkWACOh3po7aPy0mjRkpMwgQAQO+4MYXbxa9yVelXwFdgt81YapCHd+f+H2nu5ze&amp;#10;OHywp0qquz9Pgl9SW0JGbIbRTMUdapJ0ZORIQ9iVgYhwiOGD84QtuAq+tdPKh/s+JC8zz2uj9YiQ&amp;#10;CFb/cDXRpmgW/X0RlU2VNLTbm58ook3RdNg6mDdmnjEP44/gV7dUU9FUQWK4+14g6jUsnrSY9Jh0&amp;#10;zs44m3Ul6/o8R6UFX9NvjJBOcITT444xfFUvBLpDOgfrD/LTf/2U1wtfB+xfQFVeuS8x/KrmKqMC&amp;#10;Y18E/+HPHuZXn/yKN4rsTeDXlqxlZspMj+4rODCYFHNK/wXfweFHhkSSGZdJYeXxbbqz9IOl/PrT&amp;#10;XwNdZR66HH7OiBxmp87mnnn3OG3v4vCv/G+/z6X61Pb8jIqri40sL0+omPnIyJHGGHs6/AUZC7ho&amp;#10;4kVkxDgXXVSiqgT/q9KvaGhr4PzM832OOTUqlfd/+D6lDaWsyF9hVMpUnJF2BvPT5/PuFe9y2qjT&amp;#10;yC/Nd1pl6+k9OFx/mMb2Ro9/Y2ePPZtZKbOMld15mXkcrD/Y55aKWvA1/aanw1eEBIYQFhRGXWud&amp;#10;05dbfUGLq+2Tb8rNO0609tXhT4yfCHS3yPOXhrYGXtzxImBPw6xtqeWr0q/Iy/TeMWwgUjMP1h8k&amp;#10;LCjMcH2OuevHA/X5FFUWGb8r9xwTGsNXN3zFjJQZTvu4OPwO/88XHhxuryXjsN5CSklJTYkx6e8J&amp;#10;5apHRo407kJ6Cv7Fp1zMe1e+5+LaTUEmokxRxlzS2pK1BAUEuWQDeWJ68nQWTVjEM1ufoaq5yknw&amp;#10;v3/K99lw7Qbiw+OZnTqbg/UH2XF0hzHWnqj01m+q7CuPPQl+UkQSBTcWMG3kNADyxucZY+8LWvA1&amp;#10;/caTw4eu7IXWeqdOQ+oWvKSmBOgWd8d0ud4KvpSS6uZqxsWOI0AEuLjHXZW7GLdiHIfr3WfUvLT9&amp;#10;JRrbG7l26rUUHCng4f88jE3afLq/gVh8dbD+IOkx6YZApUUP3IIuR/669a+c88o5Lo+rz+FQ/SEa&amp;#10;2hqcQjqeCLP2cPi++9w4kRCe4DTncqzpGE3WJt+Cr0I6EQ4OX4V0PLdTNhgRMYJtR7dhkzbWlaxj&amp;#10;zug5xp2oPyzLXUZFUwWbyzYbY+mJCsO89+17BAcEG+N0JCw4jIjgCHZV7gI8C35PxkSPYXLiZNaV&amp;#10;rPN7zI5owdf0G08OH7ryk9vqjNvosbFjDUdmCH5bl+A7pJv1dtLW0m7BarOSFJFEfFi8i+Cv2bOG&amp;#10;fbX73Oa426SNJzY9wezU2azMW4k5xMwfv/wjsaGxLnHgnqRHp1PaUOpxEZE/HKg74BQfT49Jp6q5&amp;#10;ynhfB4rVe1bz0b6PXMaqPgewT5zWtdb5FHzl8NWEfXhfBN/hM1J3e/46/GRzMmFBYYQEhhghQn/G&amp;#10;cGvurXx28DNuXn0z245u83kH15OFYxdySsIpAE4O35HpydMJFIEUVRYxInKEkcnTk4TwBEPwEyP8&amp;#10;7+d9/rjz+fTgp336+9CCr+k3yuGHB7vWU1EOXwn+qSNPNZpqqHxqFa/vrcO3tFnYeGgj0B0PTghP&amp;#10;cBET6F7W7yhuig/3fsie6j0sy12G2WTmumnXAXDOuHO8TiCC3eF32DqMXPC+cLDuoJHiCd3pnofq&amp;#10;D3ncZ8fRHcaKWH8prCh0u+BJiS3Al4e/xCZtbl2pI6Ed9jIQKgzXm5AOuAq++lx8xfAdJ21VSQN1&amp;#10;9xjhh+Avy13GzTNu5q/b/grgV/zeESEEt866FYCoEPeCHxESYRSecxe/VySEJxihR38dPtjDOu2d&amp;#10;7Ww4sMHvfRSDKvhCiBghxFtCiN1CiG+EEKcN5vk0JwbHhVc9UfnJSvCnJ083mmq4hHR64fDbO9tZ&amp;#10;9Noi5r0wj8qmSp+CrxYzOYqbYmXBSpIikoz0y1tzb8UUaOLSSb7bzRk13/sYgmlqb6K6pdpZ8N2U&amp;#10;FXbEJm3Me2FerxqwNLU3sb/WtbUe2LNjUswphAeH8/lhe6XSnsv8exLaJfDqouMS0hHCqbRxT9wJ&amp;#10;flBAkNv1Do5EBndP2oJz+QV/HL4QgpV5K8nLzGNSwiSjwqvL2L1wzdRrSIpIIiM2w+PrVOm17uL3&amp;#10;CjVnA70T/Hlj5hEeHN6nsM6gtjgEHgfWSSkvFUKEAK4WUDPsabI2IRCEBrk2IY8JjWF/3X6jXkhW&amp;#10;or0b0uH6w8aiFyXuyuHHhcV5dfhSSm5afROfHfwMsDtXFUuOD48nPjzeycmXW8qN1bAltc4Of2/N&amp;#10;Xj4o/oBfnvFLo6LhhPgJVPy8wintzhNKoA7UHeD0Maf73L4njimZxjHdNA5xpLShFEu7hTXFa5z6&amp;#10;xXrjm6pvkNhT+VwEv6aECfETaGxvNEpT+xPSge4yDL11+D3DbsU1xaTHpPu8o3J0+IDTnUion2MI&amp;#10;DgxmzZI1tHW2+fXeuRvD/tv3d609+H9ut8lNzeWZrc94FXyVqRMWFObWLHnCFGRiQcYC1pas7XV6&amp;#10;5qA5fCFEFHAG8ByAlLJdSnny9LvTGKhKme6+PKqKoKoXohbLfFX6Fe2d7QSKQJcsnVFRo7wK/m8/&amp;#10;/y0v7XiJW2bYFwIVVhQ6O/wwZ/eo3P2E+AkuIZ0/b/ozgQGBTouKoLsKoi/GRI8B/F989dhXj/Ha&amp;#10;168ZvzumZCpSzCkEBQR5dPjqNZRZyoyuTr5QHcjAtduUSofMTso23jd/QjrgxeH7QNWS6bDZD1RS&amp;#10;U+IznAPOWTrQfWEKDw4noBfaJ4R7g+Iv4cHhXv8+1KIvrw4/zO7wkyKSen3hycvMY1/tPiMs6i+D&amp;#10;GdIZC1QCLwghtgkh/iqEcLmMCSFuEkJsFkJsrqw8ccvJNX1H9RN1hxHS6aoXogT/k4OfAPZFWj1D&amp;#10;OqOiRnnMw3+z6E3u+fgelkxZwpMXPElsaCxFlUWGiDmGdJT7yT+ST1BAEJdNvowyS5kRgmpsb+T5&amp;#10;bc+zeNJiUswpfXrt4cHhZMZl8mXplz63LbOU8fMPf27URYHuypAZsd0544EBgYyOGu2xZIPjRWtt&amp;#10;sX/peUUVRcbPjhdDlUGV+cizxt0XDL7Dd6wl429KJsCiCYtYOnOpIaQq9ORu/siJPjj5/jApYRK3&amp;#10;zLiFi0+52OM26j3ozYStQs099DasM5iCHwRMB56SUp4KNAF39txISvmMlHKmlHJmYmLvX7jmxNNk&amp;#10;bXKboQP2L2R7ZzuH6g+RFJFEYkQiwQHBRjhmZspMLG0WbNJmhHRGR4126/DzS/O5ZtU1zB09l+cu&amp;#10;eg4hBNlJ2YbDDxSBRJuiSQhPoMPWYVQ0LDhSQM6IHGOlpwolvbrzVerb6o06L33l/HHn8/H+j32W&amp;#10;dP7L5r/QYetwEuySmhLCg8NdJve8pXsWVxdjCjSRnZTtdz52YWWh20Vp6r3IrOnucAW9iOF3Cb6/&amp;#10;4RRFz9IClnaLX4I/deRU/nzBn43MF3Vh6k1I5HgQGBDIU4ueYnrydI/bqPegN/F7xdjYsUyIn9Dr&amp;#10;fPzBFPxSoFRKqfLg3sJ+AdCcZDRZmzw7/K4c5+LqYpIikggQASSbk6lpqSE0KJSsxCwk0l7mts1i&amp;#10;NJO2tFtc0gevXXUtyZHJvHvFu8bteHZSNkWVRVQ2V5IQnoAQwklMbNLGprJN5KbkGoKiBPeZrc9w&amp;#10;6shTmTN6Tr9ef974PFo6WvjPwf943Kato42/bPkLASKAyuZK4w6muKaYzLhMl1t6bwu6SmpLGBc3&amp;#10;jgvGX8DGwxtdmnO4o7CikNzUXMKCwtymQ46vdhZ8f0M6NS01mAJNvQqngLPgq8/DH8HviRqnT4c/&amp;#10;BOmP4IM9rPPJgU96tc+gCb6U8ihwWAgxseuhs4Fdg3U+zYlDxfDdoZxik7XJWNquCnKNix1nfGHr&amp;#10;WuuwtFswm7p7hDoKWaetk5KaEq6acpXTLXBWYhZ1rXXsPLbT+AI5ism3Vfbm4LNHzTYEpbi6mDJL&amp;#10;GVvLt3JF1hV9mrhzZH76fEyBJq9u681db3Ks6Rg3Tr8R6L7oeAplpEWnUWYpM+r6OKL2ycvMo8PW&amp;#10;wUf7PvI6vvrWekobSslKzCI+PN5pwZMax9ha++cSZYoiUATaY+Ve3hfHGL6vOjrucCf4/sTwe+IY&amp;#10;wx9uqEnbpPCkPoWcfjTtRzx/0fO92mew8/CXAa8KIXYC04DfDPL5+swnBz5h05ETV6FwOOPV4Zu6&amp;#10;VzEqJ6Pi+JlxmU4llBvbGz02ha5qrqJTdrpMgilXurlss/EFUv9Xt1Qb+fe5qblEmaJIikiipKaE&amp;#10;f5X8C+h9HrY7woPDOTP9TK+Cv7JgJRPiJ/DjmT8G7ELbaetkX+0+t0KXFpOGRLqUkrZJm13wYzOZ&amp;#10;M3oO5hCzz9t6VTIhOynbnvvtMGmrUjIjrBghspjQGJ8XQceQjq9Kme5wrKdTXFNMoAj0mZLpDmUY&amp;#10;PBmOoUx/Hf7UkVP54ZQf9mqfQRV8KeX2rvh8jpTyYill71aKHEduX3c7Z710llH/QuM//jh86P7D&amp;#10;Vg4/My7TuCAohx8ZEtl9EXDIxfdUeTAryT7R2Ck73Tr8VbtXkRieaKyOzIzLpKS2hLUla0kxpxhx&amp;#10;/f6Sl5nH7qrdbida99bspeBIATfPuLn7LqOmmEP1h7DarB4dPrhm/5RZymjtaGV8/HiCA4M5fczp&amp;#10;PjtkqQydrMQstytcHS84i8Yv8pxe6nAR8Ojw/XSqqpZMfmk+T29+munJ041Kp73B70lbfzjOE7sZ&amp;#10;MRmMix3nczX3QKJX2nZR21JLk7WJRa8totxSfqKHM6zw5vDdCn5Xyd3xceOdxN3SZg/p9OyUBZ4F&amp;#10;PyE8gRERI+w/hzkL/uayzazes5obp99oTPJlxmWyu2o3H+77kPPHnd/vcI7CW9aEcuAXTbyIiJAI&amp;#10;UswplNSUeA1lGLX2e0zc9ox3p0Wnee0vAPYMnYjgCNJi0twueHK84Nw17y5WXbnK6/GgOyunvq2+&amp;#10;T2Krask8v/15JJK/L/57r48BwzukYzaZKbmthHlp847bObXgd1HfVs/ZGWdT21LL5W9d7nabpWuW&amp;#10;8uL2F4/vwIYBTe1NHr9wjoWpeoZ0xsWNcwrfWNotTiEdx9RMo9Ss2XWpugrrKKGPNkUTKAJ5duuz&amp;#10;CAQ/nvVjY9vxceM52niUuta6AQnnKCbGTyQ9Jp01xWtcnltXso7MuExDWMfHjXcSfHcOf3T0aATC&amp;#10;xeH3rDmTGpVKdUu1S4ZQVXMVC15aQMbjGfx121+ZnDiZABHgtEbB0mbhWNOxPk2WOmbl9CWkA/bP&amp;#10;KzggmFVXrOrTGMAhpDPEsnSGKlrwscdFLW0W5o6ey/3z7+fzQ5+73Jp32jp5bttzRq10TTf+Onw1&amp;#10;2fq98d/j3jPu5Yy0M5zcvOHwTZ4dvnLzjvQUfJWp09rRyiWTLnFqUK2EJVAEcs4418qRfUUIwRVZ&amp;#10;V7C2eK1TRc7WjlY+3v+xU5GuzLhMimuKKa4pJiwozO1FLCQwhGRzMgfqDzg9XlJTQkhgiNGST702&amp;#10;x1o+bR1tXPL6JXxx+AvmjZnHpZMv5Vdn2jsxJYQnUNta65Qe2pfJUifB78OkLcCvz/o1q65c1XeH&amp;#10;K4Rvh3+cwzQDwiCOWQs+9gU4EkmUKYoLJ1wIuC5oKW0opb2z3W3xre8yUkqvMfyI4AgCRSDQ7fCj&amp;#10;TFH8+qxfExIY0t0Vq7Xe1eE7xPDLG8sxh5jdnkctGFITgY4/98yxV4J/2ujTfOaa95Yfz/wxEslT&amp;#10;m58yHvvs4Ge0dLQ43U1kxmVS0VTB1vKtZMZleqym6C41s6S2hLGxYwkMsL+naj5ETe5KKblh9Q18&amp;#10;fuhzXrr4JV6+5GVeuvglFk1YBHS/LzUtNf1KhxwIh3/N1Gv43vjv9WlfhXb4vUMLPt2hg+jQaCbE&amp;#10;TyAjJoN1e51jsWoJ8/66/cZycI29iFmn7PT4hRNCEB0a7bFeSHBgMOHB4dS11tHY3khkSKRRdran&amp;#10;w/e0TH1W6iwApw5H6THpTE+ezrwxzu5xQvwEQoNC+f7E7/fuhfpBWkwaF028iGe3PmuEWNaVrMMU&amp;#10;aGJ++nxjO+WoNx7e6FVsJ8RPYFPZJr6p/MZ4rLi62GkfNR+i4vgbD2/kbzv/xv1n3s8V2Ve4HNNo&amp;#10;rddcbfxNj4sb5/2FuXGcA+HwBwJziJnY0Ng+r5QG/HPUPbdxt09fjnOc0YJPd763qp9yfub5fLTv&amp;#10;I9o62oxtlBvqsHUc125EQx2jgbmXtLhoU7TXeiExoTHdk7YhZoIDg4kIjvBb8KeNnEbJshKn7JJX&amp;#10;LnmFD//7Q5dzRpmi+OYn3/DT//qp36+xNyzLXUZVcxX/KPwHYJ+wnZ8+3ynkoAS7w9bhVfAfmP8A&amp;#10;4cHhLHrN3kdVlSBwDMEoh696DKgSCtefer3bY/bMf0+OTDbaBvaGgXD4A4EQgsKlhdyae+sJG8Nw&amp;#10;Qgs+3aEDFV7Iy8yjydpkVA4EXJbDnygO1x/m15/+Gpu0uTz3773/5p1v3jmu4/HW7UoRExrjNddY&amp;#10;1TRv62wzqiGqOvqKo41H3ca6FePixjmJe1xYHHFhcW639acqY185K/0sshKzuO+T+7jqnavYXbXb&amp;#10;ZXLYUeS9xc/TYtJ4/8r3KbOUseDlBSx5ZwktHS1O+0eZoogIjjBCOiU1JYQGhRrOvyc9Bb+vk6VB&amp;#10;NoxQ3YkUfLAXm1OVTjXe0YKPs8MHOCvjLEICQ5wWtBTXFBsrRXtboW4gWZG/gvs+uY9vq751ee7e&amp;#10;Dff2qkb6QOCt25Xi0smXctnkyzw+H22KNgRLVUNUnbIURxuPMjLCc+XBoYIQggfmP0BQQBBfHP6C&amp;#10;7KRsFk9a7LRNREiEUTvHl+DOHjWb1xa/RntnO1+VfsWkhElO4SEhBKOiRnV3EastMdo8usNR8FVZ&amp;#10;h76iylv0OqQzDEIf/WIIj32w6+EPCxxj+ACRIZHMGzOPdSXrePTcRwG7c5ozeg7r960/oQ5fXYRK&amp;#10;akqYlDjJeNwmbeyq3EVrRysdto5Bc7A98cfh3z3vbq/HiAmNYXPZZgC3Dr/F2kJ9W73XUrNDicWT&amp;#10;F7N48mKv22TGZVLeWO6X4F58ysVeqy6mRqUaMfyeMf6eqAVPB+oOcLTxaJ8ydBShQaE0WZtOuMPX&amp;#10;+M+wdfgLX17In778k1/b3vrBrdy8+maPz/d0+GAP6xRVFnG4/jA2aWNvzV7Gx423r9TsEvz3v32f&amp;#10;jMczPJbyHQgu+PsF3P2RXTAP1x82lsn3vOgcqj9EY3vjcZ9j8Mfh+yI6NNpoU2c4/K6yyuB50dVw&amp;#10;ZkL8BMKCwjyGXnpDqjmVI5Yj9r/T2r1eBT8sOIzw4HAKyuw9Ak6Iw9ecMIal4Fc2VfLR/o+MEru+&amp;#10;WL1nNf/a+y+Pz/eM4YO9AiLYHXVpQyltnW2Mjx/P+PjxRkjnlZ2vcKDuAOv3re/rS/FKp62TD/d+&amp;#10;yOP5j1PbUmus4gwQAS6C79jg4njegfjj8H0RY+pOj1QTiKpxCpycgn/PvHtYdeUqj6GX3pBqTqXM&amp;#10;UkZpQ6m97IIP154QnkB+qb0cw0AI/nBc5XpcGegQj4/2kd4YloKvOhipuKU3GtoaOFR/iEP1h5yy&amp;#10;bhypb61HIJxc6qSESYyOGs26knVO+cqZsZnsr91Pa0crH+79EKDXNan95XDDYaw2K83WZl7Y/gJr&amp;#10;S9YyOmo005Onu7Tqc2xwcTzmGLaWb6WiqWJAHL5jPrwK6USboo0LsbdVtsOVjNgMzh137oAcKzUq&amp;#10;lQ5bB18c/gLwLeIJ4QlG74H+CL5y9jqkM3wYloKvikX5qiECsKvSXpFZIo3uQj1paGsgyhTl5LaE&amp;#10;EORl5rF+33rjGGp5vNVm5c2iN6lvqycuLI51Jet63VvSH9Qy+pjQGJ4oeIL1+9aTl5nH+LjxLs24&amp;#10;CysLSTWnEhEcMegOX0rJwpcX8v/+/f8Mh98fl+dYfkGFdJTDl1JS3mivbXQyOfyBxOgi1lUbfXy8&amp;#10;b4cP9lXL6gLbF3od0jnZJ2uHAcNS8JXDP9p4FGun92aa/oQ66tvqneL3irzxeVjaLby842VMgSZG&amp;#10;RY0yHNHKgpUEikDumXcPRyxHnM4zUKjx3nfmfeyv24+l3cL5meeTGZfJwfqDTrXSiyqKyE7Kdppj&amp;#10;GCxqW2upba1lbfFaoy1hv0I67hx+aDQdtg5aOlo42niUABFgZElpnFG5+J8e/NT4O/WGEvz+uHtw&amp;#10;EHzt8IcNw07wpZQUHCkgLCgMiTRu9z1RWFFIcEAw4FnwG9oanFym4uyMswkKCGJT2SbGxdlT3ZR7&amp;#10;2lS2idNGn8YVWfbVjH0J6/zmP7/h9OdP5/TnT+f2tbe7PK9qrSydtZRUcypBAUGcPfZsMuMysUmb&amp;#10;Ue+n09bJrspdZCdlO80xDBZqUri6pZpPD34K9HPS1uTe4YO9BMDRxqMkhica5QQ0zqiJ391Vuxkb&amp;#10;O9bnvICqKurrTsAXetJ2+DHsBL+kpoTa1lrOyzwP8B3HL6osYurIqcSGxnoUQk8O32wyG6s3lRtK&amp;#10;jkw2HE1eZh6pUankjMjpteCXWcq475P7qG6pprK5khUFK4x4uONrzYzLJCQwhMfPf5wHz3qQKFOU&amp;#10;MSmnwjp7a/fS1tlmd/hdcwyDWf7BsWTvB8UfAAPn8NWk7akjTwXsmVDeVtlq7KEZtQjKHxFX9XQy&amp;#10;Y7XDH9L4U86hlwwpwW/raHPbvNoRFb//wSk/AHzH8QsrCn2GOhraGpxcpiOqyqH6cgghDPFXz+Vl&amp;#10;5vH5oc+N8AbYa8x4a2r99Oan6bR1smbJGn539u8A+KbqG6dtHFdCLp68mDtPt/eA79mbVU3YZiVm&amp;#10;GXMMjhUbwV4K1995Bmun1emCIaV0em3K4WfGZdJkbcIUaOqX+1aCHygCDRHJTc1lRvIMnih4gvLG&amp;#10;8pNqwnagCQwINN4ff0R8wEM62uEPGwZV8IUQB4QQXwshtgshNvvavrCikGe2PON1m4IjBUQERxgZ&amp;#10;Dj1bwDlS3VzN0cajZCd6F/z6VvcOH+CC8RcAMDlxsvHY5MTJpJhTmDZyGmBvftFh63BKE73m3Wu4&amp;#10;8LUL3R5TNbS+YMIFjI0da3RtcpwH6LR1esypTghPIMoUZbwetd/kxMmGw3O8m7F2Wkl7LI0fvfcj&amp;#10;n6J/pOEImSszuW3tbcZjbxS9wYhHR1DRVAHYF+2EB4dz1ZSrgP63l1PhNLPJbJRHEEJw2+zb+Kbq&amp;#10;G7aWb9UO3weOXcR8oWL8jn/TfUE7/OFHrwRfCBEhhOitlTtLSjlNSjnT14aRpkie3PQknbZOj9vk&amp;#10;H8lnRsoMkiKSMAWavIZ01CKlrKQsxseNd5noVHhz+FlJWXxx/RdcnXO18dj/nfd/fHzNx4Y4zUie&amp;#10;AcDOYzuNbTYe3shH+z5y6h+qeHPXm1Q0VRile8fFjsMUaHISfFWO2V1OtRDCnqnTJeqFlYWMjR1L&amp;#10;REiEi/tXx6ptreWlHS/x8H8edvs6wV4m+sLXLuRQ/SFeL3rd+Bze3PUmLR0tbD+6HbCHdNKi04w7&amp;#10;nP6WplUOX8XvFVdkXUFieCI2aRsWZRX8oh851N4wuoj5EdK5YPwFfP6jz5kyYor7DfwcX2ignw7/&amp;#10;ZMrOGahxquP093i93N+r4AshAoQQS4QQa4QQFcBuoFwIUSSE+IMQon+zPj0YETGCg/UHWb1ntdvn&amp;#10;2zra2H50O7NTZyOEIMWcYgh+RVMFr+x4xWl7JaAqpGOTNvbX7nc5bn1bvdtJW8Vpo09zKs6UbE5m&amp;#10;YsJE43ezyUxadBqFlfbz1bXWUdpQikTy4T57rn6ztZmHPnuIuz+6mwc/e5CJ8RNZOHYhYL8ln5Q4&amp;#10;ybhAgWsru5443rEUVhQaNeGTI5MJDw53EnwVc89OyubeDffyZtGbLseTUnL1O1ez49gOfjTtR9S0&amp;#10;1LC5bDPWTqvxGtT7ebD+IGkxacxMmUl8WHz/Hb6p2+E7YgoycdOMmwCdkumL3jj8wIBA5o6Z2+9z&amp;#10;aoc//PDl8DcA44C7gJFSytFSyiRgHvAV8DshxNVe9pfAv4UQW4QQN7nbQAhxkxBisxBis9ViZXTU&amp;#10;aFYWrHR7sB3HdtDe2W40/XWsIbIyfyXXrLrGKcRTVFFElCmKVHOqW+cL3bF2TyEdf8lKyjIEUeXt&amp;#10;Q3f2ztObn+beDffy6BePcqj+EHfPu9spmyI7KdvJ4Sv37k3wD9QdYEX+CnZV7uLMtDOB7jkGJ8Hv&amp;#10;irn/Y/E/yE7K5k9fuZakOFB3gPe+fY/7zryPP5zzBwSCtSVr+bL0S6P0hCH4dXaHHxgQyI3Tb+T0&amp;#10;0R6aXvtJeHA4QQFBLg4fYOmspUyIn8DsUbP7dY5BYQi50vnp88lNzTU6YR0P+h3D7+v7N4Te9+PC&amp;#10;AL5eXxW2FkopXRLdpZQ1wNvA20KIYC/7z5VSlgkhkoAPhRC7pZRO9RCklM8AzwDMnDlTXjrrUu76&amp;#10;6C6KKoqM2LZC5d/PTrV/+VPNqUbRLTWZW1xdbMQoCyvtE7ZCCLexbeiuo+MppOMv2YnZrN+3ng5b&amp;#10;hyGMp406jXUl6+iwdfDnTX9m7ui5fH795x73/9vOv1HXWkdMaIzPMrfj48bTKTu5fd3tXDD+Aqf6&amp;#10;7plxmU4XHeXwM+MymZ82n5d2vISU0qmcsHpf5qfPJz48ntzUXNaWrKW9s52ggCCmjZxGUWURTe1N&amp;#10;VLdUG022f7vwt31/07oQQhATGuO2LnuKOYVvb3WtDKpx5geTfsAPJv3guJ5Tl1YYfnh1+I5iL4SI&amp;#10;FULkCCGmq389t3Gzf1nX/xXAu0CurwHdMP0GTIEmnih4wuW5/CP5jIwcaQi6KgtrkzY2lW0Cuh28&amp;#10;lNKeoZNo73caHxZPtCnaxeGrwmcD4fBVC8SiiiIiQyK5ecbNVDRV8Nv//JZ9tftc2u313B+67w5K&amp;#10;aryXuVXOf+qIqby2+DWnLJnM2Ez21e4zYvAH6w6SHJmMKchEVlIWlnYLhxucs3h6hpDyMvPYdGQT&amp;#10;rxe9zpzRc5gzag5FFS/OqNYAABwkSURBVEVG7n9adFpv3yKvxITG9Psz0BxfdGmF4Ydfk7ZCiAeB&amp;#10;ncAK4I9d/x71sU+EEMKsfgbOBXwuR00IT+CHU37IyztfdknRLDhSYMTvwe7wWztaKThSYGyrhOtY&amp;#10;0zFqWmoMIXUX6gAHh+8lhu8PqpF2YUUhhZWFTE6cbDS+eODTB0gxp3h1YI77Az5rleem5vLA/AdY&amp;#10;s2SNS+x7UuIk2jvbjVISKubu7jyK4upiwoPDjTrteePzjHIUeZl5ZCVl0WRtMjKR1PG80otb0UfP&amp;#10;eZSfz/m539sPGt+1cEE/uGrKVTx9wdP9nsPpN8O03eCJwN8sncuBcVLK+VLKs7r+LfCxzwjgcyHE&amp;#10;DqAAWCOlXOdjH8DeJq7Z2swL214wHqttqWVP9R4jfg/dmQmqy1NYUJhRVMxxwlaRGZdJUWUR60rW&amp;#10;sfHQRqSURoGu/rrLUxJOQSAoqigy7ixGRI5gRvIMOmUnt8y4heBAz9GvMdFjiAiOoKiiyCjH7E3w&amp;#10;gwOD+dWZv3Ib8lETuOo9OFB3wHDk6jnHYmtgb5yRGZdpXExnpsw08rXzMvOM93FN8Rpg4B3+90/5&amp;#10;PqeNPm1Aj6kZXNJi0rh5puey45qhh7+CXwjE+NzKASnlPinl1K5/WVJKz/mAPZiePJ05o+fw501/&amp;#10;Nlr5qZCNit9Dd2bCO9+8Q2RIJGdlnGWsPnUn+DkjcihtKCXv1TxOf+F08o/kD1gMPzw4nHFx49hw&amp;#10;YAMVTRXGeS8+5WLCg8ONbBNPBIgA+8RvZSGv7HiFts42Q5x7i8qvLqq0XzwONxw2BDo2zN7wWWUU&amp;#10;KXq2uwsQAVw04SLSY9LJGZFjjOXj/R8THBB8ciyE0pOG3z2O52c3BP9O/BX83wLbhBD/EkK8r/4N&amp;#10;5sCW5S5jb+1e1hbbs1zyS/MRCGamdKfzK3e7t3YvM1NmMjF+IiU1JUgpKaooIiE8wamX6h1z7iD/&amp;#10;hnzWLLG71G3l2wYshg9296xCHiqUtHzucoqXFTMicoRf++eX5nPj6htZkLGAq3Ku6tM4IkIiyIjJ&amp;#10;oLCikKONR2nvbDcmWcF+EXR0+J22TvbV7nPJ+V/5vZVsunETQgiiQ6MZFTWKlo4WRkePHpA67hqN&amp;#10;5vji77f2JeAR4Hd0x/D/OFiDAlg8aTHJkcn86as/2QumlRVwSsIpTrH2FHOK8fPs1NlkxmXS0tFC&amp;#10;eWO5kaHjSEhgCLmpueRl5hFliqKwonDAYvhgF1KJNH4Ge+jFcZy+9m+yNjE2dixvXfYWIYEh/RpL&amp;#10;UWWRkZLpGHPPSsxiV+UuY1L3cMNh2jvbXUJI4cHhRljH8TUNdDhHo9EcH/wV/Cop5Qop5QYp5afq&amp;#10;32AOLDgwmOVzl/Px/o956LOHyC/Nd4rfg13AlYPPTc01HOqe6j32csGJ2S7HBfsErhLEgYrhQ3d8&amp;#10;PCY0xpj87A15mXksyFjAmiVriA2L7ddYspOy2V2120i3dBTp7KRsWjpa2F9nX4Tma5GXQr0+jxO2&amp;#10;fbmFPc4rDU/4cYfaOTXfKfztdL1FCPFb4H3AaBslpdw6KKPq4rbZt7GlfAu/+uRXgHP8XpFqTqWi&amp;#10;qYLZqbONsgkb9m/A0m5xyeN3JCsxi3e+eYfZqbMJCQwxcor7g3LAKve/t0xKnMRH13zU73GA/fV1&amp;#10;2DqM9ouOIq3GWVRRRGZcpjHv4as1nnb4Gs3wxl+HfyrwX8Bv8DMtcyAQQvDshc8yb8w8ALerLcdE&amp;#10;jyHVnEpqVCqjo0cTHBDMqm9XAbiEdBzJTsqmuqWa4priAcv/npgwkeCAYKYkeahRchxRr31tyVri&amp;#10;wuKcFjWpSV01sV1SU0JYUJjPiVj1usbGjh2MIWs0mkHGL4cvpTxrsAfiCVOQifeufI+1JWuNGumO&amp;#10;PLLwESMHPyggiLGxY40iZt6yXNRzXxz+ot8ZOoqQwBA+uOoDJiVMGpDj9YeJCRMJEAFUNVe5vG+R&amp;#10;IZGkx6QbtXtUzr+vidjpydN549I3uHCi+yqgfiEE+CrT7M8233X0e6TpA/4uvPqNECLG4fdYIcRD&amp;#10;gzcsZ2LDYlkyZYnbMMnEhIlOzl/FoVPMKV7j4MoBH2s6NqArPBeOXeixHMLxJDQo1AjROGboKLIS&amp;#10;s5wcvj9Ft4QQXJZ12YCEvzQazfHH35BOnpTSWPYqpawFvjc4Q+ofSri8hXMAkiKSjAyUgcjQGYp4&amp;#10;i7mfNuo0vq74mn8U/sNj3f0+MxRWOborQzzUJngHqkTuiWQ4j/07iL+CHyiEMOoDCyHCAJOX7U8Y&amp;#10;ytX6WrQkhDC2OVlruHjLqrljzh3MHT2X/373vz3W3ddoNCcX/gr+34CPhBD/I4S4HvgQe27+kMNf&amp;#10;h++4zUDF8Ica3hy+KcjEu1e8y5joMUD/291pNJqhj7+Ttr8XQuwEFgICeFBK+a9BHVkfmZc2jx/P&amp;#10;/DEXTvA9sXiyO/zzMs/jlhm3sCDDfdmjxIhEPljyAY9+8ejQrDffFwZzMvN4TZR6O4+erNX0A6+C&amp;#10;L4QQsqsJalfhM5fiZ47bDAXCg8N58oIn/dr2ZHf4UaYonlr0lNdtJiZM5NmLnj1OI9JoNCcSnx2v&amp;#10;hBDLhBBjHB8UQoQIIRYIIV4Crh284Q0u2UnZJ08hMI1Go/GBr5DO+cD1wGtCiAygDgjDfqH4N/B/&amp;#10;UsrtgzvEwSM2LJatN29lXOy4Ez0UzVDlZAuhnGyvR9MrvAq+lLIVeBJ4squVYQLQ4piiOdzxZ3JX&amp;#10;o9FoTgb8raUDYMM+YRslhIgCkFIeGpRRaTTu0O7UP9T75Pg/6PdO45/gCyGWAfcBx7ALP4AEcgZp&amp;#10;XBqNRqMZYPx1+LcDE6WU1b09gRAiENgMHJFSLurt/hqNRqMZGPxdeHUYqO/jOW4HvunjvhpN/xnO&amp;#10;y/+PRwkKzXcGX3n4P+v6cR/wiRBiDc718P/kY/9RwAXAw8DPvG2r0Wg0msHFV0jH3PX/oa5/IV3/&amp;#10;APyZAXoM+IXDcVwQQtwE3AQwZswYT5tphjODMWk40BO4Q31C2NP49ISsphf4Sst8AEAIcZmU8k3H&amp;#10;54QQl3nbVwixCKiQUm4RQsz3co5ngGcAZs6cqf9qNRqNZpDwN4Z/l5+POTIXuEgIcQD4B7BACPG3&amp;#10;XoxNo9FoNAOIrxh+Hva696lCiBUOT0UBHd72lVLeRddFocvh3yGlvLpfo9V8txisMMuJCN8M9ZCR&amp;#10;5juBrxh+GfaUyouALQ6PW4D/HaxBaTQajWbg8RXD3wHsEEL8XUpp7etJpJSfAJ/0dX+NRqPR9B9/&amp;#10;F15tFUL0vB+tx+7+H+rLgiyN5qRGh3A0QxB/BX8t0An8vev3K7HX1akHXgR8dxvRaDQazQnFX8Gf&amp;#10;K6Wc6/D710KIjVLKuUIIPRGr0XhCO33NEMLftMxIIYTRA08IkQtEdv3qNVtHo9FoNEMDfx3+DcDz&amp;#10;QohI7KGcBuAGIUQE8NvBGpxGo9FoBg5/m5hvAqYIIaIB0aMByhuDMjKNpjfo0IlG4xN/6+GbgMVA&amp;#10;OhAkuup3SCl/PWgj02g0Gs2A4m9I5z3sGTlbcKiWqdFoNJrhg7+CP0pKef6gjkSj8cRwCdfoypWa&amp;#10;IY6/WTpfCCGmDOpINBqNRjOo+OvwTweuE0Lsxx7SEYCUUuqethqNRjNM8Ffw8wZ1FBqNRqMZdPwK&amp;#10;6UgpDwKjgQVdPzf7u69Go9FohgZ+ibYQ4j5gOd1NT4IB3cxEM3DoZtr9R7+HGh/469IvwV4TvwlA&amp;#10;SlmGlz61Go1Goxl6+Cv47VJKSVfj8q6SChqNRqMZRvgr+G8IIf4CxAghbgTWA88O3rA0Go1GM9D4&amp;#10;W0vnUSHEOdiLpk0EfiWl/NDbPkKIUOAzwNR1nreklPf1c7wajUaj6SP+pmXSJfBeRb4HbdizehqF&amp;#10;EMHA50KItVLKr3o7SI1Go9H0H6+CL4Sw0BW37/kU/7+9e4+yqyzvOP59MrlAIReEkWsSLglpARcB&amp;#10;ApEoBMQC4ZYGKhIIF6WMaLgoUKRycRVosULpxYI6NYCKkqJc5NKW5VJRKEgJyD2ggMWmlhpsV4FV&amp;#10;LlKe/vG8p9kMyczZ++x3Zg7791lr1px95pzffuc9+zz73e/eZyY+eDVpXc9Nc/4vp8Vx6UufORcR&amp;#10;GSFD/RPzjq7EMbMe4g+uzQCucPf7OskTEZHqsn54yt3/191nA1sBe5jZTgMfY2Z9ZrbCzFasXr06&amp;#10;Z3NEpEXX7DfSsHxaNv3DlDuBt/3FTXfvd/c57j6nt7d3OJojItJI2Qq+mfWa2ZR0e33gg8CTudYn&amp;#10;IiKDa/sqnQo2B76a5vHHANe7+20Z1yciIoPIVvDd/RFgl1z5IiJSjv7ipYhIQ6jgi4g0hAq+iEhD&amp;#10;qOCLiDSECr6ISEOo4IuINIQKvohIQ6jgi4g0hAq+iEhDqOCLiDSECr6ISEOo4IuINIQKvohIQ6jg&amp;#10;i4g0hAq+iEhDqOCLiDSECr6ISEOo4IuINETOf2I+1cx+YGYrzexxMzs917pERGRoOf+J+RvAme7+&amp;#10;oJlNBB4ws++6+xMZ1ykiIuuQbYTv7v/u7g+m2y8BK4Etc61PREQGNyxz+Ga2NbALcN9aftZnZivM&amp;#10;bMXq1auHozkiIo2UveCb2YbADcAn3f3FgT939353n+Puc3p7e3M3R0SksbIWfDMbRxT7b7j7jTnX&amp;#10;NaqZjXQLyum29opIW3JepWPAMmClu1+eaz0iItKenCP89wHHAh8ws4fS10EZ1yciIoPIdlmmu98N&amp;#10;aG5ARGSU0CdtRUQaQgVfRKQhurfgj8SVJGtb57raYaarXURkVOnegi8iIqU0r+CP5Ki7te7B2tDO&amp;#10;Y3Jpp10i0rWaV/BFRBpKBV9EpCG6p+C3M6Uw8DHF6ZEyUxKdrKuMdtpV/HmZddbRvsFoikek63RP&amp;#10;wRcRkY6o4IuINMToKvgPPBDfy14tUmX6ou4pnk6Ntvasa11lPosgIqPK6Cr4IiKSzegv+KPhuvlu&amp;#10;sbaTwGtbHnitf7f9niJSyegv+CIiUgsVfBGRhlDBb+nmaY1ubruIDBsVfBGRhsj5P22vMrNfmdlj&amp;#10;udZRC42ORaQhco7wrwEOzJgvIiIlZCv47v4j4D9z5YuISDkjPodvZn1mtsLMVqwe6cbUQVNEIjJK&amp;#10;jXjBd/d+d5/j7nN6R7oxIiLvYCNe8EVEZHio4IuINETOyzKvA+4FZpnZKjM7Mde6RERkaGNzBbv7&amp;#10;4lzZIiJSnqZ0REQaQgVfRKQhVPBFRBpCBV9EpCFU8EVEGkIFX0SkIVTwRUQaQgVfRKQhVPBFRBpC&amp;#10;BV9EpCFU8EVEGkIFX0SkIVTwRUQaQgVfRKQhVPBFRBpCBV9EpCFU8EVEGiJrwTezA83sKTN72szO&amp;#10;ybkuEREZXM7/adsDXAEsAHYAFpvZDrnWJyIig8s5wt8DeNrdn3X314HlwMKM6xMRkUFk+yfmwJbA&amp;#10;vxaWVwFzBz7IzPqAvrT4spn9GngBs+KDBv/e3mM2weyFGvNat9ed2/m6NqFJfTH4Y/P0RSu3rrw1&amp;#10;t9UXa24Pvb1VX2f5vijz3us8Z+Bj6+8LmE6bchZ8W8t9/rY73PuB/v9/ktkKd59Te2O6LDdndrfl&amp;#10;5szuttyc2d2WmzO723LblXNKZxUwtbC8FfDLjOsTEZFB5Cz49wMzzWwbMxsPHAXcknF9IiIyiGxT&amp;#10;Ou7+hpmdAtwB9ABXufvjbTy1f+iHVNJtuTmzuy03Z3a35ebM7rbcnNndltsWc3/btLqIiLwD6ZO2&amp;#10;IiINoYIvItIQKvgiIg0x4gXfzGaZ2Z5mNi79OYbGM4tPVLS+j/ZceSv1s4xWI1rwzexw4DvAxcAy&amp;#10;YKmZTcq8ztrehGY21czGm9kGabmu/nx3+j62S3Kz9UW35SZZ+jlzm7Gkdbvm7PHp8uxaZczN2RfZ&amp;#10;socyYgXfzMYBHwZOdPf9iMI/FTi7zqJvZnPNbL6Z7Q7g7l5HJ5vZwcA/AF8ArjazWe7+ZqdvwpR7&amp;#10;k5n1A39sZluP5txCdq6+6JrcQnau1y9Lm1P+QuAq4Coz28trvHzPzI4AvgncZmYHm9lGozw3Z19k&amp;#10;y26Lu4/IFzCO2IBPSMtjgPnA54GTSZeMdriOBcDPiGtfbwaWFX5WKZ/4kxFTgUeBfYBNgTOJTxHv&amp;#10;2PpdKmZvBzyb+mEv4FzgPmDmKM3N2RdbAo9lyN0ceLzu3PTcGamf96mrn3P2cWEdOwNPAgel995j&amp;#10;wNHAhp3kpuztgZXAnsBi4sOXpwPbjdLcnH2RLbvtNgzXitbRAb+bXqi90nJP6oBr6bDgp6zlwLFp&amp;#10;eRJwN/DtwmOqFv0eYieyZSsDOA34N2D7Dto8BfhSq23p62zgXmB6B7mTSTu7OnML+f3AFnX1BbA+&amp;#10;MAH4Ys25WwAT684d8PpdkeH1y7K9FfIPAG4uLB9IDMaOSsud7AT3AO4sLO8J/C1wKjCxg9y5mXJz&amp;#10;9kW27LbbkHsFQ3TAesApaWPeu3D/94HZNeR/mlTwC/fdBXy5Yt4MYHdgY+DvgLMH/Pxs4Jr0e7W9&amp;#10;MwF2JEbfs4B/Bs4q/GwMcD5wXnrjl8l9P7AkFZ67gHPqyE3PPxT4FHGkthz4TE19sZD4PwrbpD4+&amp;#10;t6bcA4AfA+8BvgqcX0dueu57gWOJI8qfAGfU9PrNTNvbJOBbwOl1tXlAzqbA14giOibdtwB4AphX&amp;#10;NTfl9ABXA0cCY9N984hCt3+H2V+rO5c4/5KrL7ZKfVF7dtttGI6VDNEJGwFL0wvVBxxPHHJvWjFv&amp;#10;+8LtJcRh07TCfZsA3wZ2KJl7CPAI8EPgb4DDgH8B/qjwmK0puTNJL/gjxJHOMuAD6fc/pfCYA4Ar&amp;#10;S2SOATZMOU8Bv0dMZTxaLBplcwvP2x94CDig8Hv/Avh0h30xnzjkbeVOA57jrQW0Sm6rvb8ALkjb&amp;#10;3HOdtjc977D0+l2btouFaZv7RCf9nF6zh4GbUpv/HPjvAbmV2pyeOzf195y0fCFwecrsSfedClxe&amp;#10;IXvSgG3xFOAyYkpqXLr/eOB6UrFuM3dXYhAzNy2flNrcae6exGh7v7R8CTG1XEdfLGDNLMOE9DrW&amp;#10;kl3la8Qvy3T3/yIOxT5PFLt9gSXu/h9ls8zsEOAhM1uesq8l3jD/ZGbT0n0vAG8Qh/bt5s4jNtjj&amp;#10;3X0+MJ44VJ0HfNzMzjOzGcSGt1u7J4/MbB/gr4A/cPfDiNHFS8BxwKfM7LR0gnlzYJaZTWznhLO7&amp;#10;v+nuLxMj2X5iFHQgsB9wipktTQ8tlVvoi68Dfe5+h8XfDV9FFKhPmtkZZrZ92b5IdgO+knKnETut&amp;#10;84iTn58ws1llc83sg8CVwDHEEdo+wLuIvji16muXsjcmBitHu/sSYiT+CjHdck5qc+nXL+V+DFjs&amp;#10;7ouA51PbbwEuMbMzzWxmlTan/AXEDuoY4AIzu9zdLwB+K7V9XnqoE0WqTPbhwF3pYoked3+TOAp5&amp;#10;hRg0HVXIfpW1/Mn0deQeQgyI+oA/NLNjiO375Q5zDwK+RNSes8xsPvBnwGZEIe6kL9YDPg70m9ki&amp;#10;d3+NuCJxS2K7eV/V7KpG1d/SsbgO39NGUva5GwA3ADcSL9IEd1+cfnYRMRK7khjhLwEOcveft5k9&amp;#10;jzhyuCYt9wLXuPvBZrYtUZReJXYCH3H3R9vM/R1gM3f/gZltBjwIrCBG5hBv6EeJE4BHtptbyD+D&amp;#10;GCXfSoyGHgd2Ifrg56m9pXJT0f0escHeTRwtvZGyXwK2BV4E5gAfLZl9GjDe3S8zs3uIE5PPEL//&amp;#10;r4hR+bwyuWZ2APCSu99jZlOAi4CfuvsXzGw74rV7jdjZlG3vZKJv/xr4LnEU8QRxMnEacbL8fmIk&amp;#10;3XY/p9zbgM+6+/fTfd8B7iEu9dwWeBOYXaHNPcA3gNvd/evpirg7gEfdvc/MziemFjchThYf7e4P&amp;#10;t5m9NbEjeQX4NTFIesjjDyluSJyfm0eMbjcGjnP3n7SRuwtR3I9194fN7EPEeb/TzGwicdK2Su6u&amp;#10;xIDoVHe/18wuBh4gXlMDzqnaF4V1nEQMLuYCF7v7srRDP534xyWbVs2uZDgOI4brizgRtyFrpm2u&amp;#10;K/xsEbG3/QqwU8ncHtJharq9FTFXu3m6bzrxRpzcQdvPBc5Lt08iishMYn52k4qZ25Hm7YkrO34D&amp;#10;XJCWx3eQuzNxNcqq1NYxxMjrCmBqesxGFXJ3IqaglhM7ToirMS4BFlbNTc9rzZkeSIyYd0nL66Xv&amp;#10;Uyrm/j5RJH5c6Nv9iSPW96fXr7dC7snEkdSxwJ8QRXopcFnhMVXbvLZzW/cAl7b6mNjJblUydxow&amp;#10;P92+gDgimUMMvoqvwWzg3SVy5wEnF5ZnEOe6tk7LVjF3D+C96fa7iAHGrcB1RHGGuOBh7wp90Zpi&amp;#10;Wgh8iBhQ/IyY0rmIOJrqrZLdydewrGQkvog9/Q2kok+cGJ1eQ+5YYqfyvbS8BPgysH7N7f9HYLcO&amp;#10;M7YgThKdlDa2zwK3F988HWTvACwdcN8dwK7pdtUroA4ljj4uLNy3jBi1Vc4dsI4Lgc8QO++253oH&amp;#10;ydsIuBQ4pHDfTaSdVMXMycSUy9XAXxTu//sqhZ72zm3dSMlzW2vJnly4fX4qoLun5Z07yO1N33tS&amp;#10;sbyVNYOwUlcqDcjtIQYsS4kpW4gB3Y9IO6+q2Wl5m0INOgt4Hfhip9tc5e1qpFY8LL9cbMRXE6PG&amp;#10;p+vckxLzkpcQo7v3dJhlA5aPSLmb1dDOC4mTlYem5X1Jo/Ca+7rV5kon2ws5Y4lzGM8CJ6avFXR4&amp;#10;ffVa2no36aRZTZkL0ra2PzF9+CBpBNph7pjC7eOIkfgGJTMOAf4HWF647yLif04Xi/5y0gnRCtnF&amp;#10;o+nxhdvnEx+O+hxxcrutEfg62tw6QhhD7PgmEUdAt9Dmkd/a2pvunzBgeRklr5wpZH+zcN9GxNH6&amp;#10;kcR033nEdNeH69r2SrVxJFY6rL9gXDr4fKdFuZBnxHTIM6mQzqyxrRNSgXucktNOg2ROpXCkQM3X&amp;#10;+qb++GjamHesMXdX4E+JQ+BaXrsB+dfXUZALeVOIE54/JI50So1m28hv9XGpvgA2II4W+4hBSrEw&amp;#10;X0RcCfQxYkpxJbBNB9nXFn42oXD7TmK6pK22D5HbQwwKvkVMz66gzaOSIXLHFm4fTpx7mV5TX3yO&amp;#10;OE90RFqeD8yoe5tu52tUnbStW7p64XrgTHd/pObsE4D7vb3/4tVu5jjiw2jPuPtTdeWmbPMML3a6&amp;#10;6mQ+8Ly7P1l3ft1y9UMhfyJxxPZizbnTiXnhpys8dwviRPp6xBUpv/E1FzQsIq5I2Q34S3d/rMPs&amp;#10;Vz2uWGr9fHvi8xQneImTkm3k3kyc31lU5r0yWG56//URO9fja+iL19396PTnL2a4+09zb39DtvGd&amp;#10;XPAhLo1y91cz5I7oCydSRbpCpJ8oRovNbEfgZXd/rsbsV9x9iZnNJqZdnvC4HLqu3JnAR4hR9BM1&amp;#10;5v428ZmJ26vsWIfIng285u4rO8nt1Du+4IvIW6XPTlxKXP3SA+zj7qtqzt4zZc9391/WmNu6dn0v&amp;#10;r/BZnUFy5xHTk3u7+/Od5g7IbvXFvnX1c1Uj/sErERleabT9CHEl0KI6i1AhewpweB3FfkDuJGIu&amp;#10;vONiPyB3csqtpdgPyG71xYgWe1DBF2mcdG7rIOJvzpT6MN9IZXdbbu7sqjSlI9JAuc5t5czuttzc&amp;#10;2VWo4IuINISmdEREGkIFX0SkIVTwRUQaQgVfRKQhVPBFRBpCBV9EpCH+D58/31fyFiw9AAAAAElF&amp;#10;TkSuQmCC&amp;#10;&quot;&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class=&quot;cell border-box-sizing text_cell rendered&quot;&gt;&lt;div class=&quot;prompt input_prompt&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;inner_cell&quot;&gt;
&lt;div class=&quot;text_cell_render border-box-sizing rendered_html&quot;&gt;
&lt;blockquote&gt;&lt;p&gt;plot 메소드들은 Axes라는 좌표축 객체를 반환합니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ax.set_xticks() : &lt;/strong&gt; x축의 간격을 지정합니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ax.set_xticklabels() : &lt;/strong&gt; x축의 간격에 라벨을 지정합니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ax.set_ylabel() : &lt;/strong&gt; y축의 라벨을 지정합니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ax.legend() : &lt;/strong&gt; 범례를 그래프에 넣어줍니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;긴글 읽어 주셔서 감사합니다.&lt;/p&gt;
&lt;p&gt;도움이 되셨으면 &lt;strong&gt;공감&lt;/strong&gt; 버튼 꼭 눌러주세요.&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Data Mining</category>
      <category>pandas plot</category>
      <category>pandas 그래프</category>
      <category>Plot</category>
      <category>python 가시화</category>
      <category>그래프</category>
      <category>파이썬 그래프</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/68</guid>
      <comments>https://ssoonidev.tistory.com/68#entry68comment</comments>
      <pubDate>Sun, 5 Aug 2018 17:56:03 +0900</pubDate>
    </item>
    <item>
      <title>[AdSense] 드디어 애드고시 통과ㅠㅠ (컨텐츠 불충분 해결기)</title>
      <link>https://ssoonidev.tistory.com/67</link>
      <description>&lt;p style=&quot;line-height: 1.5;&quot;&gt;세상에나.. 드디어 애드고시 통과했어요 ㅠㅠ&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/997134455B63130B13&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F997134455B63130B13&quot; width=&quot;580&quot; height=&quot;551&quot; filename=&quot;KakaoTalk_20180802_231724104.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5; text-align: center;&quot;&gt;반가워요 잘생긴 아저씨 ㅠㅠ 손가락 ㅠㅠ 팝콘님..&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;2016년에 이 블로그를 학교&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;에서 공부한걸 정리&lt;/span&gt;하자는 목적으로 시작해서&amp;nbsp;현재까지 수차례 애드센스의 문을 두들겨 보았으나 항상 &quot;컨텐츠 불충분&quot;의 늪에서 벗어날 수 없었는데, 이번에 드디어 구글 애드센스 광고를 달았습니다. 저처럼 너무 광고를 개제하고 싶으나 컨텐츠 불충분의 늪에서 못 빠져나간 분들을 위해서 제가 겪어온 과정들을 소개해드리겠습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; color: rgb(5, 0, 153);&quot;&gt;1. 진짜 컨텐츠가 불충분한가?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;2016년&amp;nbsp;블로그 초기에는 글은 짧고, 개발자 블로그 특징 상 소스 코드와 그림과 동영상이 주를 이루었습니다. &lt;b&gt;&lt;u&gt;구글 애드센스 심사는 봇으로 이루어져서 사진과 동영상보다 글이 가지는 비중이 크다&lt;/u&gt;&lt;/b&gt;는 것 조차 모르고 신청했습니다. 결과는&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;당연히 &lt;b&gt;&lt;u&gt;컨텐츠 불충분&lt;/u&gt;&lt;/b&gt;. 그 후&amp;nbsp;&quot;게시물 수를 늘리면 되지 않을까?&quot;&amp;nbsp;위해, 학교 보안 과제인 BOF 원정대의 풀이를 적는 컨텐츠를 진행했고,&amp;nbsp;18탄까지 클리어하면서 간단하게 풀이를 적은 후, 제출했지만 역시 컨텐츠 불충분 사유로 거절당했어요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; color: rgb(5, 0, 153);&quot;&gt;2. 양보다 질, 글자 수에 신경쓰기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;그후로 좌절감을 맞보고 여러 사이트를 검색하며, 팁을 동냥했습니다. 모든 블로거들이 &lt;b&gt;&lt;u&gt;공통적으로 1000자 이상의 글&lt;/u&gt;&lt;/b&gt;을 쓸 것을 추천하였고, &lt;b&gt;&lt;u&gt;기존의 글들을 수정하기보다 새로운 주제로 글을 작성&lt;/u&gt;&lt;/b&gt;하기 시작했어요. 기존의 글을 지우는 게 아까웠거든요. 소스 코드를 제외한 나머지 글들이 최소 700자는 넘게 적기위해 부단히 애를 썼습니다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;그리고 문장의 모양을 이쁘게 보이기 위해 했던 개인적인 강박도 고치고자 애를 썼습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;예를 간단하게 들어볼게요.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 700px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/990C034C5B630DA92A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F990C034C5B630DA92A&quot; width=&quot;700&quot; height=&quot;270&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;에디터를 사용할 때&amp;nbsp;&lt;b&gt;빨간 원처럼 글자 하나씩 남으면 상당히 언짢고 거슬려서 개행&lt;/b&gt;을&amp;nbsp;했었는데요. 구글 봇이 심사할 때, 혹시나 문장의 끝으로 이해를 할까봐. 잠깐의 언짢음을 참고 개행없이 글을 작성했습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;그리고 항상 문장의 끝을 &lt;b&gt;&lt;u&gt;~입니다. ~였어요 등 완전한 문장 형태&lt;/u&gt;&lt;/b&gt;로 적고, &lt;b&gt;&lt;u&gt;ㅋㅋㅋ나 ㅠㅠㅠ 등 개발하면서 느낀 희노애락을 표현하는 표현을 삼가&lt;/u&gt;&lt;/b&gt;했습니다. 구글 봇이 갑 오브 갑이였기 때문에 그의 심기를 나쁘게해선 안되거든요.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9992D5345B6311AE34&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9992D5345B6311AE34&quot; width=&quot;400&quot; height=&quot;224&quot; filename=&quot;그림2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;그렇게 글을 작성한 뒤, 애드센스 신청 결과는?? 역시 &lt;b style=&quot;text-decoration-line: underline;&quot;&gt;컨텐츠 불충분!!&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; color: rgb(5, 0, 153);&quot;&gt;3. 맞춤법 띄어쓰기 검사 / 안&amp;nbsp;쓰는 카테고리 통합&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;대학생에서 직장인이 되면서 블로그를 관리하기가 상당히 어려울거 같아서 방치했습니다. 2018년 1월 글을 마지막으로요. 하필 배정받은 프로젝트도 시리즈로 작성하려고 했던 SpringBoot가 아닌 데이터 마이닝 프로젝트에 배정되어서 더욱 글을 쓰기가 힘들어 졌습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;그와중에 여자친구가 블로그를 시작했고, 책, 영화, 공연 리뷰와 데이트하면서 다닌 이곳저곳 리뷰를 했습니다. 글자 수를 신경쓰면서 최대한 길게 적어서, 애드센스도 두세차례 시도했습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;하지만 마찬가지 컨텐츠 불충분에 막혀 있었죠.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: dashed; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;슬쩍 홍보 &amp;gt;&amp;gt;&amp;nbsp;&lt;a href=&quot;http://podenne-daily.tistory.com/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://podenne-daily.tistory.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;그리고 얼마전 애드센스를 재신청했는데, 된겁니다.. 3년을 블로그를 하면서 안되는걸 6개월 안에 해내다니 ㅠㅠ&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;비결을 들어 봤더니, 50개가 넘는 &lt;b&gt;&lt;u&gt;모든 포스팅을 맞춤법 검사와 띄어 쓰기 검사&lt;/u&gt;&lt;/b&gt;를 하여 일일히 수정했다는 겁니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;저도 그거 듣고 모든 포스팅을 수정하진 않고 &lt;b&gt;&lt;u&gt;가장 최신의 13개의 글을 맞춤법 검사&lt;/u&gt;&lt;/b&gt;를 해서 글을 수정했습니다. 생각보다 많은 글이 띄어쓰기와 맞춤법이 맞지 않았다는걸 이제서야 확인을 한거죠.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;그리고 &lt;b&gt;&lt;u&gt;사용 안하던 카테고리를 없애고 통합&lt;/u&gt;&lt;/b&gt;했습니다. 욕심이 많아서 이것저것 써보겠다고 벌려놓은 카테고리를 정리했습니다. 그리고 신청한 애드센스 결과는 앞에서 말했듯이 &lt;b&gt;&lt;u&gt;통과&lt;/u&gt;&lt;/b&gt;였습니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;구글 봇이 컨텐츠의 주제를 스캔하기 때문에 맞춤법과 띄어쓰기는 필수적인 요소로 작용하는 듯 합니다. 이것저것 시도했지만 애드센스 획득이 힘들었다면, &lt;b&gt;&lt;u&gt;하나의 주제에 대해&amp;nbsp;글을&amp;nbsp;길게 적고, 맞춤법과 띄어쓰기를 준수한 글을 적는다&lt;/u&gt;&lt;/b&gt;는 원칙하에 컨텐츠를 제작해보세요. 기존 블로그를 운영하는 분이라면 굳이 이전의 글을 지우지 않아도 &lt;u&gt;&lt;b&gt;최신의 글이 변별력이 있으면&lt;/b&gt; &lt;/u&gt;기회를 주는 거 같아요.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;구글봇 마음을 알 수 없어서 미신처럼 떠도는 팁들 중에 하나지만, 한 번 시도해보시고, 다들 애드센스 광고 개제하기를 진심으로 바랍니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;긴&amp;nbsp;글 읽어주셔서 감사합니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;도움이 되셨으면 공감 버튼 눌러주세요. 공감은 가장 큰 힘이 됩니다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Adsense</category>
      <category>블로그 광고</category>
      <category>애드고시</category>
      <category>애드센스</category>
      <category>애드센스 팁</category>
      <category>컨텐츠 불충분</category>
      <category>티스토리</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/67</guid>
      <comments>https://ssoonidev.tistory.com/67#entry67comment</comments>
      <pubDate>Thu, 2 Aug 2018 23:45:53 +0900</pubDate>
    </item>
    <item>
      <title>[Spring Boot]2-2. RestController with Swagger2</title>
      <link>https://ssoonidev.tistory.com/63</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;전체 소스 코드 :&amp;nbsp;&lt;a href=&quot;https://github.com/ssooni/ssoonidev_blog&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://github.com/ssooni/ssoonidev_blog&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;Spring Boot&lt;/u&gt;&amp;nbsp;: ver 1.5.9&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;JAVA&lt;/u&gt;&amp;nbsp;: ver 1.8&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;Build Tool&lt;/u&gt;&amp;nbsp;: MAVEN&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;

&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 51, 153);&quot;&gt;1. 목표&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;MongoDB의 데이터를 접근하는&amp;nbsp;&lt;b&gt;댓글 REST API를 만들어 보는 것&lt;/b&gt;이 목표입니다. 추가적으로 Redis Cache Layer를 두어 보는 것도 함께 실습해볼 예정입니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 51, 153);&quot;&gt;2. RestController&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;Spring 4.0부터 지원하는 &lt;b&gt;&lt;i&gt;@RestController&lt;/i&gt;&lt;/b&gt; Annotation은 &lt;b&gt;&lt;i&gt;@Controller&lt;/i&gt;&lt;/b&gt;와&amp;nbsp;&lt;b&gt;&lt;i&gt;@ResponseBody&lt;/i&gt;&lt;/b&gt;가 하나로 결합된 Annotation입니다. 따라서 &lt;b&gt;&lt;u&gt;이 클래스 내부의 모든 메서드들의 반환 값은 HTTP Response Body에 직접 쓰이게 됩니다&lt;/u&gt;&lt;/b&gt;. 따라서 &lt;b&gt;&lt;i&gt;&lt;u&gt;View가 없는 Controller&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;대부분 Web 프로그램을 처음으로 개발한다 하면, JSP를 이용해서 화면을 만들다 보니, Web Service는 반드시 View가 있어야 한다고 생각하기 쉽습니다. 하지만 Web Service마다 목적이 있습니다. 사용자에게&amp;nbsp;View를 제공하는 경우도 있지만, &lt;b&gt;&lt;i&gt;&lt;u&gt;프로그램끼리&amp;nbsp;데이터를 주고받기 위해 개발하는 경우&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;도 있습니다. RestController는 후자의 경우에 사용하는 Controller라고 할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;이 전 포스팅에서 구현한 ReplyService를 이용해서 RestController를 구현해 보겠습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@RestController&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;class&lt;/span&gt;&amp;nbsp;ReplyController&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;Logger&amp;nbsp;logger&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;LoggerFactory.getLogger(ReplyController.&lt;span style=&quot;color:#ff3399&quot;&gt;class&lt;/span&gt;);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Autowired&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;ReplyService&amp;nbsp;replyService;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@GetMapping(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/reply/{bno}&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;List&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;ReplyDomain&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;findByBno(@PathVariable(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;bno&quot;&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno)&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;throws&lt;/span&gt;&amp;nbsp;Exception{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;replyService.findbyBno(bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;//&amp;nbsp;이하&amp;nbsp;생략...&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;코드 상에서도 일반 @Controller를 사용했을 때와 차이점을 알 수 있는데, ModelAndView 객체나 String으로 View의 경로를 지정하지 않고 &lt;u&gt;&lt;i&gt;&lt;b&gt;데이터 그 자체를 반환&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;하는 것을 알 수 있습니다. 이후에 실행한다면, 화면에 아래의 그림처럼 JSON 형태의 화면을 보여줄 것입니다. 물론 MongoDB에 데이터가 있는 경우에만 해당됩니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 700px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99BC34385A64329102&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99BC34385A64329102&quot; width=&quot;700&quot; height=&quot;149&quot; filename=&quot;그림2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 51, 153);&quot;&gt;3. Swagger&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;View가 없다 보니 문제가 있습니다. 바로 &lt;b&gt;&lt;i&gt;&lt;u&gt;시연이나 테스트에서 보여주기가 힘들다&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;는 거죠. 데이터를 읽는 것은 그래도 저렇게 화면이라도 나오니까 망정이지만, 데이터를 입력하거나 삭제, 수정하는 경우에는 화면 없이 시연하기&amp;nbsp;어렵습니다. 그렇다고 이 시연을 위해 View를 새로 만든다는 것은 시간 낭비입니다.&amp;nbsp; 하지만 Swagger를 이용하면 이런 점을 깔끔하게 해결할 수 있습니다. Swagger가 알아서 View를 만들어주기 때문이죠.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 700px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99EB13415A64356621&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99EB13415A64356621&quot; width=&quot;700&quot; height=&quot;350&quot; filename=&quot;그림3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 700px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9958DB335A6435FD26&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9958DB335A6435FD26&quot; width=&quot;700&quot; height=&quot;443&quot; filename=&quot;그림4.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 4em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;Swagger는 프로그램이 시작할 때, URL Mapping을 추적해서 위의 그림과 같은 View를 만들어 줍니다. 그리고 각각의 Tab에는 위의 그림처럼 &lt;b&gt;&lt;i&gt;&lt;u&gt;입력이 가능한 Form과 각각의 타입 등의 정보&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;를 제공해줍니다. 따라서 이 프로그램을 &lt;b&gt;&lt;i&gt;&lt;u&gt;처음 보는 사람도 어떤 URL로 구성되어 있으며, 각각의 URL은 어떤 인자를 받아서 어떻게 반환&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;하는지를 쉽게 확인이 가능합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;pom.xml&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;!--&amp;nbsp;Swagger2&amp;nbsp;--&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;io.springfox&amp;lt;/groupId&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;springfox-swagger2&amp;lt;/artifactId&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;2.7.0&amp;lt;/version&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;groupId&amp;gt;io.springfox&amp;lt;/groupId&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;artifactId&amp;gt;springfox-swagger-ui&amp;lt;/artifactId&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;version&amp;gt;2.7.0&amp;lt;/version&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;이제 개발에 적용하는&amp;nbsp;방법을 알아보겠습니다. 우선 swagger2와 화면을 보여줄 swagger-ui 라이브러리를 추가합니다. 그리고 Swagger를 설정하기 위한 Configuration Class를 작성합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;&lt;b&gt;SwaggerConfig.java&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@Configuration&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@EnableSwagger2&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;class&lt;/span&gt;&amp;nbsp;SwaggerConfig&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Bean&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;Docket&amp;nbsp;api()&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;new&lt;/span&gt;&amp;nbsp;Docket(DocumentationType.SWAGGER_2)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.select()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.apis(RequestHandlerSelectors.basePackage(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;com.example.controller&quot;&lt;/span&gt;))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.paths(PathSelectors.ant(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/reply/**&quot;&lt;/span&gt;))&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.build();&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;line 8&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;컨트롤러가 있는&amp;nbsp;패키지를 지정할 수 있습니다. 만약 어떤 패키지를 특정하지 않고 &lt;b&gt;모든 패키지를 추적하고 싶다면 매개변수에서 RequestHandlerSelectors.any()를 사용&lt;/b&gt;하면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;line 9&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;Mapping URL&amp;nbsp;중에서 어떤 URL을 사용할 것인지 정해줄 수 있습니다. 저는 /reply 밑의 모든 경로에 대하여 추적하도록 하였습니다. 마찬가지로 모든 경로를 다 추적하게 하고 싶다면&lt;b&gt; PathSelectors.any()를 매개변수로 사용하면 됩니다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;이제 Spring Boot 프로그램을 실행하여,&amp;nbsp;http://localhost:8080[/root_path]/swagger-ui.html로 이동하면, 앞서 실행한 결과를 쉽게 확인할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;전체 소스코드는 GitHub를 확인해주세요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;다음 포스팅에서는 Redis로 Cache Layer를 구성하는 방법을 포스팅하겠습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Spring Framework</category>
      <category>MongoDB</category>
      <category>REST API</category>
      <category>restcontroller</category>
      <category>Spring Boot</category>
      <category>Swagger</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/63</guid>
      <comments>https://ssoonidev.tistory.com/63#entry63comment</comments>
      <pubDate>Sun, 21 Jan 2018 15:59:02 +0900</pubDate>
    </item>
    <item>
      <title>[Spring Boot]2-1.Mongo DB와 연결하기</title>
      <link>https://ssoonidev.tistory.com/62</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;전체 소스 코드 :&amp;nbsp;&lt;a href=&quot;https://github.com/ssooni/ssoonidev_blog&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://github.com/ssooni/ssoonidev_blog&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;Spring Boot&lt;/u&gt;&amp;nbsp;: ver 1.5.9&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;JAVA&lt;/u&gt;&amp;nbsp;: ver 1.8&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;Build Tool&lt;/u&gt;&amp;nbsp;: MAVEN&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 51, 153);&quot;&gt;1. 목표&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;MongoDB의 데이터를 접근하는 &lt;b&gt;댓글 REST API를 만들어 보는 것&lt;/b&gt;이 목표입니다. 추가적으로 Redis Cache Layer를 두어 보는 것도 함께 실습해볼 예정입니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 51, 153);&quot;&gt;2. MongoDB&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;MongoDB를 처음으로 사용한 건 인턴십&amp;nbsp;때였습니다. NoSQL의 존재는 이미 알고 있었지만,&amp;nbsp;이렇게 프로젝트에서 사용은 처음으로 해봤습니다. MySQL이나 오라클을 먼저 접한 저는 &lt;b&gt;&lt;u&gt;테이블이 없고, 난생처음&amp;nbsp;보는 쿼리&lt;/u&gt;&lt;/b&gt;에 적응하기 조금 시간이 필요했습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 700px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99DB303C5A5FEEC32C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99DB303C5A5FEEC32C&quot; width=&quot;700&quot; height=&quot;237&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 2; margin-left: 2em; text-align: center; clear: none; float: none;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;MongoDB vs &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;text-align: center; font-size: 10pt;&quot;&gt;MySQL&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;Mongo DB&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;세상의 모든 데이터가 일정한 틀과 형태를 가지고 있지는 않습니다. 대화나 채팅, 음악 등이&amp;nbsp;대표적이라 할 수 있죠. 이러한 데이터는&amp;nbsp;MySQL과 같은 테이블에 저장하기 어렵습니다. 테이블을 만들 때, 하나의 공통 거릴 찾아서 하나의 속성(Column)을 만드는 일이 어렵기 때문이죠.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;Mongo DB는 Collection 안에&amp;nbsp;Document에 데이터를 저장합니다.&amp;nbsp;Document는 특별한 틀을 가지고 있지 않습니다. &lt;b&gt;&lt;u&gt;Document의 Field 안의 데이터 형식이&amp;nbsp;서로 안 맞아도 입력이 가능하고, 각 Document들이 모두 일관된 Field를 가지지 않아도 됩니다.&lt;/u&gt;&lt;/b&gt; 이 방법은 비정형 데이터를 저장하는데 최적의 방법이라고 생각합니다. 관심이 가는 분야이고, Spring Boot 포스팅이 다 끝나는 대로 포스팅을 해보고 싶습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 2;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 51, 153);&quot;&gt;3. Mongo + Spring Boot&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;전체 폴더 구조나 소스코드는 GitHub를 참고해주세요&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;pom.xml 추가&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;&amp;lt;!--&amp;nbsp;Redis&amp;nbsp;Cache&amp;nbsp;Layer&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;org.springframework.boot&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;spring-boot-starter-data-redis&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;&amp;lt;!--&amp;nbsp;Swagger2&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;io.springfox&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;springfox-swagger2&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;version&lt;/span&gt;&amp;gt;2.7.0&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;version&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;io.springfox&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;springfox-swagger-ui&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;version&lt;/span&gt;&amp;gt;2.7.0&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;version&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;&amp;lt;!--&amp;nbsp;Mogno&amp;nbsp;DB&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;org.springframework.boot&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;spring-boot-starter-data-mongodb&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;i&gt;spring-boot-starter-data-mongodb&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;Spring Boot와 Mongo를 연결하기 위해 꼭 필요한 라이브러리입니다. 설정 및 데이터 접근을 하기위한 라이브리입니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;i&gt;spring-boot-starter-data-redis (선택)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;다음 포스팅에서 다룰 예정인 Redis Cache를 구현할 때 필요한 라이브러리입니다. 몽고DB만 사용하고 말겠다 생각하는 분이라면 굳이 추가하지 않으셔도 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;i&gt;springfox-swagger2(선택)&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;Swagger라는 API Document를 자동으로 생성해주는 라이브러리입니다. REST API를 사용하는 경우, 대부분 View가 없어, 테스트를 하거나 시연을 하기 힘든 부분이 있었는데 그것을 해결해준 고마운 라이브러리입니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; color: rgb(240, 240, 240); overflow: auto; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; position: relative !important;&quot;&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; color: rgb(0, 0, 0); font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;application.properties&amp;nbsp;작성&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;##&amp;nbsp;MongoDB&amp;nbsp;Config&amp;nbsp;##&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;spring.data.mongodb.uri=mongodb://localhost:27017&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;spring.data.mongodb.database=ssooni&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;spring.data.mongodb.username=ssooni526&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;spring.data.mongodb.password=ssooni&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;MongoDB의 uri와 기본적으로 사용할 데이터베이스, 인증을 위한 username과 password 정보를 작성해줍니다. uri에&amp;nbsp;&lt;i&gt; &lt;b&gt;&lt;u&gt;mongodb://[username]:[password]@[hostname]:[port number]/[database]&lt;/u&gt;&lt;/b&gt;&lt;/i&gt;&lt;u&gt; &lt;/u&gt;처럼 모든 정보를 넣을 수도 있습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; color: rgb(240, 240, 240); overflow: auto; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; position: relative !important;&quot;&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; color: rgb(0, 0, 0); font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;MongoConfig.java&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@Configuration&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;class&lt;/span&gt;&amp;nbsp;MongoConfig&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;extends&lt;/span&gt;&amp;nbsp;AbstractMongoConfiguration{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Value(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;${spring.data.mongodb.username}&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;String&lt;/span&gt;&amp;nbsp;userName;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Value(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;${spring.data.mongodb.password}&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;String&lt;/span&gt;&amp;nbsp;password;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Value(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;${spring.data.mongodb.database}&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;String&lt;/span&gt;&amp;nbsp;database;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;String&lt;/span&gt;&amp;nbsp;getDatabaseName()&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;database;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;Mongo&amp;nbsp;mongo()&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;throws&lt;/span&gt;&amp;nbsp;Exception&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MongoCredential&amp;nbsp;credential&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;MongoCredential.createCredential(userName,&amp;nbsp;database,&amp;nbsp;password.toCharArray());&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;new&lt;/span&gt;&amp;nbsp;MongoClient(&lt;span style=&quot;color:#ff3399&quot;&gt;new&lt;/span&gt;&amp;nbsp;ServerAddress(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;localhost&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#c10aff&quot;&gt;27017&lt;/span&gt;),&amp;nbsp;Arrays.asList(credential));&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;@Bean&amp;nbsp;MongoTemplate&amp;nbsp;mongoTemplate()&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;throws&lt;/span&gt;&amp;nbsp;Exception{&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;new&lt;/span&gt;&amp;nbsp;MongoTemplate(mongo(),&amp;nbsp;database);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;MongoDB와 연결하여 사용하기 위해 설정을 하는 클래스입니다. @Controller나 @Service Annotation처럼 &lt;b&gt;&lt;i&gt;@Configuration&lt;/i&gt;&lt;/b&gt; Annotation을 사용해, 이 클래스가 &lt;u&gt;&lt;i&gt;&lt;b&gt;무엇인가를 설정하기 위한 용도로 작성된 코드&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;임을 컨테이너에게 알려줍니다. MongoConfig 클래스는&amp;nbsp;AbstractMongoConfiguration 클래스를 상속하여 구현합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;이때 반드시 getDatabaseName()(line 14)과 mongo()(line 19)&amp;nbsp;함수를 오버라이드 해야 합니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;line 4 ~ line 11&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;application.properties에 정의한 값은&amp;nbsp;&lt;b&gt;&lt;i&gt;@Value&lt;/i&gt;&lt;/b&gt;&amp;nbsp;Annotation으로 접근 가능합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;line 19&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;mongo() 함수는 Mongo DB에 접근할 객체를 반환하는 함수입니다. 이 때 Mongo에 접근하기 위해 인증정보가 필요한&amp;nbsp;경우에&amp;nbsp;MongoCredential 객체에 인증 정보를 담은 후 MongoClient를 생성해줍니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;line 24&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;API 개발 프로젝트에서 &lt;b&gt;&lt;i&gt;@Query&lt;/i&gt;&lt;/b&gt; Annotation을 사용해서 동적 쿼리를 작성한 적이 있는데,&amp;nbsp; &lt;i&gt;MySQL 문과 많이 다른 데다가, SpEL은 또 처음이라&amp;nbsp;고생 많았던 기억이 있습니다&lt;/i&gt;. 저처럼&amp;nbsp;Mongo Query보다 SQL 계열이 익숙하다면 이&lt;b&gt; &lt;i&gt;mongoTemplete를&amp;nbsp;이용하여, 최대한 비슷하게 쿼리&lt;/i&gt;&lt;/b&gt;를 작성할 수 있습니다. 진작에 알았더라면 @Query Annotation 안 썼습니다.(삽질이 소중한 이유이기도 하죠.) DAO 클래스에서 사용하기 위해서 @Bean로 등록하여 DAO 클래스에서 @Autowired로 주입하여 사용이 가능도록 합시다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;ReplyDomain.java&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@Data&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@Document(collection&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;reply&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;class&lt;/span&gt;&amp;nbsp;ReplyDomain&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;implements&lt;/span&gt;&amp;nbsp;Serializable{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;final&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;long&lt;/span&gt;&amp;nbsp;serialVersionUID&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;1L;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Id&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;String&lt;/span&gt;&amp;nbsp;id;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;rno;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;String&lt;/span&gt;&amp;nbsp;contents;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;String&lt;/span&gt;&amp;nbsp;userName;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;i&gt;@Document&amp;nbsp;&lt;/i&gt;&lt;/b&gt;Annotation은 Collection 내의 하나의 Document에 대응합니다. Collection 명도 넣어줘서 나중에 어떤 Collection에 접근하여 데이터를 가져오는지를 명시해 줍니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;i&gt;@Data&lt;/i&gt;&lt;/b&gt; Annotation은 &lt;b&gt;&lt;i&gt;&lt;u&gt;Project Lombok 라이브러리&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;를 Maven에 등록하고 jar 파일로 STS 또는 이클립스에 적용해야 제대로 적용되는 Annotation입니다. getter와 setter, toString() 등을 자동으로 만들어주는 정말 편리한 기능입니다. 개인적으로 getter / setter 자동 완성보다 toString() 자동 완성 기능이 편리했습니다. 로그를 찍을 때, 참 편리하게 데이터를 확인할 수 있기 때문이죠. Lombok을 적용하는 방법도 포스팅으로 소개하겠습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;ReplyRepo.java&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;interface&lt;/span&gt;&amp;nbsp;ReplyRepo&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;extends&lt;/span&gt;&amp;nbsp;MongoRepository&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;ReplyDomain,&amp;nbsp;Long&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;List&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;ReplyDomain&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;findByBno(&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;List&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;ReplyDomain&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;findAll();&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;두 가지 방법으로 Mongo DB에 데이터를 가져오는 방법을 소개하고자 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left;&quot;&gt;첫 번째는 위의 ReplyRepo.java&amp;nbsp;코드처럼 &lt;b&gt;&lt;i&gt;MongoRepository&amp;lt;DataType, SerializeType&amp;gt; 클래스를 상속&lt;/i&gt;&lt;/b&gt;하여 사용하는 방법입니다. &lt;u&gt;&lt;b&gt;findByBno처럼 사전에 정의된 Action(Find 등등)과 조건(ByBno, All 등등)을 이용하여 함수 이름을&amp;nbsp;&lt;/b&gt;&lt;/u&gt;&lt;u&gt;&lt;b&gt;만들어주면 알아서 해당하는 쿼리를&amp;nbsp;수행&lt;/b&gt;&lt;/u&gt;합니다. 이 방법은 조건이 매우 단순한 경우에 쉽게 데이터베이스에 접근하는 방법을 제공합니다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left;&quot;&gt;이 방법으로 정의하기 힘든&amp;nbsp;복잡한 쿼리를 사용해야 하는 경우에는 &lt;b&gt;&lt;i&gt;@Query&lt;/i&gt;&lt;/b&gt; Annotation을 사용하여 구현합니다. MongoDB 쿼리에 익숙하다면 이 방법으로 구현하는 것도 좋습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; color: rgb(240, 240, 240); overflow: auto; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; position: relative !important;&quot;&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; color: rgb(0, 0, 0); font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;ReplyServiceImpl.java&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;30&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;31&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;32&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;33&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;34&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;35&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;36&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;37&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@Autowired&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;ReplyRepo&amp;nbsp;replyRepo;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@Autowired&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;MongoTemplate&amp;nbsp;mongoTemplete;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;//&amp;nbsp;---&amp;nbsp;첫&amp;nbsp;번째(Repo)&amp;nbsp;방법&amp;nbsp;사용시&amp;nbsp;-----&amp;nbsp;//&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@Override&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;List&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;ReplyDomain&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;findbyBno(&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno)&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Go&amp;nbsp;Mongo&quot;&lt;/span&gt;);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;replyRepo.findByBno(bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;//&amp;nbsp;---&amp;nbsp;두&amp;nbsp;번째(Templete)&amp;nbsp;방법&amp;nbsp;사용&amp;nbsp;-----&amp;nbsp;//&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@Override&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;List&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;ReplyDomain&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;insert(ReplyDomain&amp;nbsp;reply)&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;reply.getBno();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mongoTemplete.insert(reply);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;replyRepo.findByBno(bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@Override&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;List&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;ReplyDomain&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;update(ReplyDomain&amp;nbsp;reply)&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;reply.getBno();&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ObjectId&amp;nbsp;id&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;new&lt;/span&gt;&amp;nbsp;ObjectId(reply.getId());&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Query&amp;nbsp;query&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;new&lt;/span&gt;&amp;nbsp;Query();&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;query.addCriteria(Criteria.where(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;_id&quot;&lt;/span&gt;).is(id));&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Update&amp;nbsp;update&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;new&lt;/span&gt;&amp;nbsp;Update();&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;update.set(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;userName&quot;&lt;/span&gt;,&amp;nbsp;reply.getUserName());&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;update.set(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;contents&quot;&lt;/span&gt;,&amp;nbsp;reply.getContents());&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WriteResult&amp;nbsp;writeResult&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;mongoTemplete.updateFirst(query,&amp;nbsp;update,&amp;nbsp;ReplyDomain.&lt;span style=&quot;color:#ff3399&quot;&gt;class&lt;/span&gt;);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(writeResult.&lt;span style=&quot;color:#4be6fa&quot;&gt;toString&lt;/span&gt;());&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;replyRepo.findByBno(bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left;&quot;&gt;두 번째 방법은 앞서 설명한 &lt;b&gt;MongoTemplete&lt;/b&gt;를 이용하는 방법입니다. 개인적으로는 두 번째&amp;nbsp;방법을 선호합니다. &lt;b&gt;&lt;i&gt;Query 클래스와 Criteria 클래스로 조건을 만들고 Update&amp;nbsp;객체로 수정&lt;/i&gt; &lt;/b&gt;할 내용을 넣습니다. 그리고 MongoTemplete 객체의 메서드를 이용하여 실행합니다. 코드를 보다 보면 눈에 익숙한 where 절도 보이고 update에선 set도 보여서, SQL처럼 사용하기가 쉽습니다. 그리고 &lt;i&gt;동적 쿼리가 필요한 경우에는 Java 소스코드 내에서 if문을 이용하면 구현이 쉽습니다&lt;/i&gt;.&amp;nbsp; &lt;u&gt;&lt;i&gt;간단한 거는 첫 번째로, 복잡한 것은 두 번째로 작성하는 것을 추천합니다.&amp;nbsp;&lt;/i&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left;&quot;&gt;&lt;i&gt;다음 포스팅에서는 Swagger를 이용하여 자동으로 API Document를 작성하는 방법을 포스팅하겠습니다.&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Spring Framework</category>
      <category>MongoDB</category>
      <category>Spring Boot</category>
      <category>Spring boot Mongo DB</category>
      <category>Spring Monog 연동</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/62</guid>
      <comments>https://ssoonidev.tistory.com/62#entry62comment</comments>
      <pubDate>Thu, 18 Jan 2018 16:23:17 +0900</pubDate>
    </item>
    <item>
      <title>[Spring Boot]1-2. 간단한 게시판 만들기 (Modal로 깔끔하게 만들자)</title>
      <link>https://ssoonidev.tistory.com/61</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;전체 소스 코드 :&amp;nbsp;&lt;a href=&quot;https://github.com/ssooni/ssoonidev_blog&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://github.com/ssooni/ssoonidev_blog&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;Spring Boot&lt;/u&gt;&amp;nbsp;: ver 1.5.9&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;JAVA&lt;/u&gt;&amp;nbsp;: ver 1.8&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;Build Tool&lt;/u&gt;&amp;nbsp;: MAVEN&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async=&quot;&quot; src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display:block; text-align:center;&quot; data-ad-layout=&quot;in-article&quot; data-ad-format=&quot;fluid&quot; data-ad-client=&quot;ca-pub-2538641355026813&quot; data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 51, 153);&quot;&gt;1. 목표&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;사용자가&amp;nbsp;View를 통해 데이터를 조회하여, 새로운 데이터를 입력하거나 기존 데이터를 삭제, 수정이 가능한 웹페이지를 작성하는 것이 이번 포스팅의 목표입니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 51, 153);&quot;&gt;2. controller&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;Controller는 사용자가 요청하는&amp;nbsp;URL에 따라, 응답을 해주는 역할을 수행합니다. 그리고 GET, POST, PUT, DELETE 등의 Method로 사용자가 어떤 종류의 요청을 하는지를 정의해&amp;nbsp; 줄 수 있습니다. 따라서 &quot;/board&quot; 같은 주소를 사용하더라도 &lt;b&gt;&lt;u&gt;GET 방식이냐 POST 방식인가에 따라서 사용자에서 다른 응답&lt;/u&gt;&lt;/b&gt;을 보여줄 수 있습니다. 아래는 이번 게시판 만들기 포스팅에서 사용할 URL의 설계 방안입니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;/board &lt;i&gt;GET&lt;/i&gt; :&amp;nbsp;홈 화면을 보여준다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;/board &lt;i&gt;POST&lt;/i&gt; : 새로운 게시물을 데이터베이스에 저장한다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;/board &lt;i&gt;PUT&lt;/i&gt;&amp;nbsp; : 기존의 게시물을 수정한다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;/board/{bno}&amp;nbsp;&lt;i&gt;DELETE&lt;/i&gt;&amp;nbsp; : {bno}번 게시물을 삭제한다.&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;30&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;31&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;32&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;33&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;34&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@Controller&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;class&lt;/span&gt;&amp;nbsp;BoardController&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;static&lt;/span&gt;&amp;nbsp;Logger&amp;nbsp;logger&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;LoggerFactory.getLogger(BoardController.&lt;span style=&quot;color:#ff3399&quot;&gt;class&lt;/span&gt;);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Autowired&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;BoardService&amp;nbsp;boardService;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@GetMapping(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/board&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;ModelAndView&amp;nbsp;list()&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;throws&lt;/span&gt;&amp;nbsp;Exception{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;BoardDomain&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;boardList&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;boardService.findAll();&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ModelAndView&amp;nbsp;nextPage&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;new&lt;/span&gt;&amp;nbsp;ModelAndView(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;board/home&quot;&lt;/span&gt;);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nextPage.addObject(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;boardList&quot;&lt;/span&gt;,&amp;nbsp;boardList);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;nextPage;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@PostMapping(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/board&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;create(BoardDomain&amp;nbsp;board)&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;throws&lt;/span&gt;&amp;nbsp;Exception{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;POST&amp;nbsp;/board&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;+&lt;/span&gt;&amp;nbsp;board.&lt;span style=&quot;color:#4be6fa&quot;&gt;toString&lt;/span&gt;());&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;boardService.insert(board);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@PutMapping(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/board&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;modify(BoardDomain&amp;nbsp;board)&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;throws&lt;/span&gt;&amp;nbsp;Exception{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;PUT&amp;nbsp;data&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;+&lt;/span&gt;&amp;nbsp;board.&lt;span style=&quot;color:#4be6fa&quot;&gt;toString&lt;/span&gt;());&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;boardService.update(board);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@DeleteMapping(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/board/{bno}&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;delete(@PathVariable(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;bno&quot;&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno)&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;throws&lt;/span&gt;&amp;nbsp;Exception{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logger.info(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;DELETE&amp;nbsp;bno&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;+&lt;/span&gt;&amp;nbsp;bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;boardService.delete(bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;URL 설계를 기반으로 작성한 Controller입니다.&amp;nbsp;&lt;b&gt;&lt;i&gt;@Controller&lt;/i&gt;&lt;/b&gt; Annotation이 반드시 있어야 Spring Boot에서 웹 요청을 받아들이는 Controller로 이 클래스를 사용하고 beans로 등록합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;URL Mapping&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;URL을 Mapping 할 때&amp;nbsp;&lt;b&gt;&lt;i&gt;@RequestMapping(value=&quot;/board&quot;, method=RequestMethod.GET)&lt;/i&gt;&lt;/b&gt;처럼 예전에는 조금 길게 작성하는 Annotation 코드를 &lt;b&gt;&lt;i&gt;@GetMapping&lt;/i&gt;&lt;/b&gt;처럼 짧게 작성할 수 있습니다. &lt;b&gt;&lt;i&gt;@PostMapping&lt;/i&gt;&lt;/b&gt;과 &lt;i&gt;&lt;b&gt;@PutMapping&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&lt;i&gt;, @DeleteMapping&lt;/i&gt;&lt;/b&gt;도 마찬가지 역할을 수행합니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;ModelAndView&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;10번째 줄 list() 함수는 ModelAndView 객체를&amp;nbsp;반환하는 함수입니다. ModelAndView 객체는 어떤 페이지로 이동하는 페이지 정보와&amp;nbsp;데이터를 실을 수 있는 객체입니다. 따라서 list() 함수가 수행한 뒤엔 board/list.jsp로 이동하고 이때 boardList라는 객체도 함께 실어서 이동합니다. 이 boardList는 당연히 list.jsp에서 접근 가능합니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;@PathVariable&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;URL에 작성된 값을 참조하는 Annotation입니다. tistory 블로그의 URL을 보면 https://ssoonidev.tistory.com/{글번호}로 구성되어 있는데, 이 {글 번호}에 접근하기 위해 사용하는 Annotation이라고 생각하시면 됩니다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;&lt;b&gt;의존성 주입&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;데이터베이스에 접근하여 데이터를 처리하는 Service를 &lt;b&gt;&lt;i&gt;@Autowired&lt;/i&gt;&lt;/b&gt; Annotation을 이용하여 주입합니다. 흔히 Spring Framework에서&amp;nbsp;&lt;b&gt;&lt;u&gt;의존성 주입(DI)&lt;/u&gt;&lt;/b&gt;이라는 용어를 사용합니다. 이 개념은 포스팅 하나로 소개해도 무방할 정도로 강력한 개념이므로, 차후 포스팅으로 소개하도록 하고 지금은 간단히 &lt;b&gt;&lt;u&gt;&quot;컨테이너가 미리 만들어진 객체를 가져다가 쓰겠다.&quot;&lt;/u&gt;&lt;/b&gt;라고 생각하면 좋겠습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;추가적으로 BoardMapper와 BoardService의 코드를 추가/변경하였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;GitHub의 코드를 꼭 참고하시길 바랍니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 51, 153);&quot;&gt;3. View를 만들자.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;지난 포스팅에서 마지막으로 간단하게 뷰를 하나 만들어서 테스트를 수행하였습니다. 테스트 화면에서도 간단하게 Bootstrap을 적용하였는데요. 이번에는 Modal Class를 이용해서 새 글 작성과 수정, 삭제 기능을 하는 뷰를 작성해 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;전체적인 화면구성&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 700px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9919694B5A5D44E915&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9919694B5A5D44E915&quot; width=&quot;700&quot; height=&quot;237&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;우선 전체적인 화면 구성을 봅시다. home.jsp 파일에 header.jsp 파일을 include 한 형태로 만들고자 합니다. header.jsp는 차후에 Bootstrap의 nav 클래스와 dropdown 클래스 등을 사용하여 검색 기능과 메뉴 이동 기능을 추가할 예정입니다. 시간이 여유롭다면 말이죠.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 820px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99A5AB4A5A5D62A933&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99A5AB4A5A5D62A933&quot; width=&quot;820&quot; height=&quot;305&quot; filename=&quot;그림3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;home.jsp는 게시물을 테이블 형태로 보여주는 화면입니다.&amp;nbsp;수정과 새 글쓰기 버튼을 누르면 위의 그림과 같은 Modal이 화면에 보이게 구현했습니다. 수정 버튼을 누르면 작성자 명과 작성한 콘텐츠가 텍스트 박스에 위의 오른쪽 그림같이 놓이게 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;주요 코드만 간단하게 설명하겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;전체 코드는 GitHub를 참고하시길 바랍니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;&lt;i&gt;home.jsp&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;30&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;31&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;32&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;33&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;34&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;35&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;body&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;container&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;jsp:include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;page&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;../include/header.jsp&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;/&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;table&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;table&amp;nbsp;table-bordered&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;thead&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;tr&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;th&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;col-md-1&quot;&lt;/span&gt;&amp;gt;bno&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;th&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;th&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;col-md-7&quot;&lt;/span&gt;&amp;gt;contents&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;th&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;th&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;col-md-2&quot;&lt;/span&gt;&amp;gt;userName&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;th&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;th&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;col-md-2&quot;&lt;/span&gt;&amp;gt;수정&amp;nbsp;/&amp;nbsp;삭제&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;th&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;tr&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;thead&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;tbody&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;c:forEach&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;var&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;board&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;items&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;${boardList}&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;tr&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;tr${board.bno}&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;${board.bno}&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;a&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;href&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;#&quot;&lt;/span&gt;&amp;gt;${board.contents}&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;${board.userName}&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;btn-group&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;button&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;modify&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;value&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;${board.bno}&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;btn&amp;nbsp;btn-xs&amp;nbsp;btn-warning&quot;&lt;/span&gt;&amp;gt;수정&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;button&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;button&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;delete&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;value&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;${board.bno}&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;btn&amp;nbsp;btn-xs&amp;nbsp;btn-danger&quot;&lt;/span&gt;&amp;gt;삭제&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;button&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;tr&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;c:forEach&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;tbody&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;table&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;jsp:include&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;page&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;../include/modal.jsp&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;/&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;button&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;createBtn&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;type&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;button&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;btn&amp;nbsp;btn-info&amp;nbsp;btn-sm&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;data-toggle&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;modal&quot;&lt;/span&gt;&amp;gt;새&amp;nbsp;글&amp;nbsp;쓰기&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;button&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;body&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;Home화면 jsp 코드입니다. 주소창에 http://localhost:8080/board라고 입력했을 때 보여주는 화면입니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;3번째 줄&amp;nbsp; : &lt;/b&gt;header.jsp를 home.jsp에 포함합니다. (경로에 주의바랍니다.)&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&amp;lt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot;%&amp;gt;&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;14번째 줄 ~ 28번째 줄 (c:foreach Line)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;BoardController에서 list() 함수에서 전체 게시물 리스트를 담고 있는&amp;nbsp;&lt;b&gt;&lt;u&gt;&quot;boardList&quot;라는 List 객체&lt;/u&gt;&lt;/b&gt;를 전달해주는데,&amp;nbsp; 이&amp;nbsp;객체를 &lt;b&gt;&lt;u&gt;${boardList}&lt;/u&gt;&lt;/b&gt;로 받아 JSP에서 사용 가능합니다. &amp;lt;c:foreach&amp;gt;는 &lt;b&gt;&lt;i&gt;위의 JSP Core Tag Library를 추가하면 사용&lt;/i&gt;&lt;/b&gt;할 수 있고 for 문과 동일한 역할을 합니다. 즉,&amp;nbsp;&lt;b&gt;&lt;u&gt;boardList 안에 있는 원소들을 board에 하나씩 할당&lt;/u&gt;&lt;/b&gt;하는 반복문을 수행합니다.&amp;nbsp;&amp;nbsp;그리고 이 데이터를 테이블에 보여 주기 위해 &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;를 이용하여 행을 채워&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;나갑니다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;31번째 줄&amp;nbsp; :&amp;nbsp;&lt;/b&gt;modal.jsp를 home.jsp에 포함합니다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;&lt;i&gt;modal.jsp&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;&amp;lt;!--&amp;nbsp;Modal&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;modal&amp;nbsp;fade&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;myModal&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;role&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;dialog&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;modal-dialog&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;&amp;lt;!--&amp;nbsp;Modal&amp;nbsp;content--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;modal-content&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;modal-header&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;button&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;type&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;button&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;close&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;data-dismiss&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;modal&quot;&lt;/span&gt;&amp;gt;&amp;amp;times;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;button&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;h4&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;modal-title&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;modal-title&quot;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;h4&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;modal-body&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;table&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;table&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;tr&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;사용자명&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;input&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;form-control&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;userName&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;type&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;text&quot;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;tr&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;tr&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;내용&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;textarea&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;form-control&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;contents&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;rows&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;10&quot;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;textarea&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;tr&lt;/span&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;table&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;modal-footer&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;button&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;modalSubmit&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;type&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;button&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;btn&amp;nbsp;btn-success&quot;&lt;/span&gt;&amp;gt;Submit&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;button&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;button&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;type&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;button&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;btn&amp;nbsp;btn-default&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;data-dismiss&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;modal&quot;&lt;/span&gt;&amp;gt;Close&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;button&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;Bootstrap Modal 입니다. 하나의 Modal을 이용해서 &lt;b&gt;작성용 Modal과 수정용 Modal&lt;/b&gt;을 구현해서 Modal Title (9번째 줄)에 들어가는 내용이 없습니다. 여기에 들어갈 내용은 모두 modal.js에서 해결합니다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;&lt;i&gt;modal.js&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;30&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;31&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;32&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;33&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;34&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;35&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;36&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;37&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;38&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;39&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;40&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;41&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;42&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;43&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;44&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;45&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;46&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;47&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;48&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;49&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;50&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;51&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;52&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;53&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;54&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;55&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;56&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;57&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;58&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;59&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;60&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;61&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;62&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;63&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;64&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;65&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;66&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;67&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;68&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;69&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;70&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;71&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;72&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;73&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;74&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;var&lt;/span&gt;&amp;nbsp;action&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;''&lt;/span&gt;;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;var&lt;/span&gt;&amp;nbsp;url&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;''&lt;/span&gt;;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;var&lt;/span&gt;&amp;nbsp;type&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;''&lt;/span&gt;;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;var&lt;/span&gt;&amp;nbsp;bno&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#c10aff&quot;&gt;0&lt;/span&gt;;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;$(&lt;span style=&quot;color:#4be6fa&quot;&gt;document&lt;/span&gt;).ready(&lt;span style=&quot;color:#ff3399&quot;&gt;function&lt;/span&gt;(){&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;//&amp;nbsp;새&amp;nbsp;글&amp;nbsp;쓰기&amp;nbsp;버튼&amp;nbsp;클릭&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;#createBtn&quot;&lt;/span&gt;).click(&lt;span style=&quot;color:#ff3399&quot;&gt;function&lt;/span&gt;(){&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;action&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'create'&lt;/span&gt;;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;'POST'&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;#modal-title&quot;&lt;/span&gt;).text(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;새&amp;nbsp;글&amp;nbsp;작성&quot;&lt;/span&gt;);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;#myModal&quot;&lt;/span&gt;).modal();&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;//&amp;nbsp;수정하기&amp;nbsp;버튼&amp;nbsp;클릭&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;button[name='modify']&quot;&lt;/span&gt;).click(&lt;span style=&quot;color:#ff3399&quot;&gt;function&lt;/span&gt;(){&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;action&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;'modify'&lt;/span&gt;;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;'PUT'&lt;/span&gt;;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bno&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;this.value;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;//&amp;nbsp;content&amp;nbsp;담기&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;var&lt;/span&gt;&amp;nbsp;row&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;$(this).&lt;span style=&quot;color:#4be6fa&quot;&gt;parent&lt;/span&gt;().&lt;span style=&quot;color:#4be6fa&quot;&gt;parent&lt;/span&gt;().&lt;span style=&quot;color:#4be6fa&quot;&gt;parent&lt;/span&gt;();&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;var&lt;/span&gt;&amp;nbsp;tr&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;row.children();&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;var&lt;/span&gt;&amp;nbsp;userName&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;tr.eq(&lt;span style=&quot;color:#c10aff&quot;&gt;2&lt;/span&gt;).text();&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;var&lt;/span&gt;&amp;nbsp;contents&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;tr.eq(&lt;span style=&quot;color:#c10aff&quot;&gt;1&lt;/span&gt;).text();&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;#modal-title&quot;&lt;/span&gt;).text(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;수정하기&quot;&lt;/span&gt;);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;#userName&quot;&lt;/span&gt;).val(userName);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;#contents&quot;&lt;/span&gt;).val(contents);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;#myModal&quot;&lt;/span&gt;).modal();&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;//&amp;nbsp;삭제하기&amp;nbsp;버튼&amp;nbsp;클릭&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;button[name='delete']&quot;&lt;/span&gt;).click(&lt;span style=&quot;color:#ff3399&quot;&gt;function&lt;/span&gt;(){&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bno&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;this.value;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$.ajax({&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;'/board/'&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;+&lt;/span&gt;&amp;nbsp;bno,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;'DELETE'&lt;/span&gt;,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;location&lt;/span&gt;.reload();&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;//&amp;nbsp;Modal의&amp;nbsp;Submit&amp;nbsp;버튼&amp;nbsp;클릭&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;#modalSubmit&quot;&lt;/span&gt;).click(&lt;span style=&quot;color:#ff3399&quot;&gt;function&lt;/span&gt;(){&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;if&lt;/span&gt;(action&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;'create'&lt;/span&gt;){&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bno&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#c10aff&quot;&gt;0&lt;/span&gt;;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;'/board'&lt;/span&gt;;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;span style=&quot;color:#ff3399&quot;&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;if&lt;/span&gt;(action&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;'modify'&lt;/span&gt;){&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;'/board'&lt;/span&gt;;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;var&lt;/span&gt;&amp;nbsp;data&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;bno&quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;bno,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;userName&quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;$(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;#userName&quot;&lt;/span&gt;).val(),&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;contents&quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;$(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;#contents&quot;&lt;/span&gt;).val()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$.ajax({&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url&amp;nbsp;:&amp;nbsp;url,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type&amp;nbsp;:&amp;nbsp;type,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data&amp;nbsp;:&amp;nbsp;data,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;            success: function(data){ $(&quot;#myModal&quot;).modal('toggle'); }&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;            complete: function(data){ &lt;span style=&quot;color: rgb(75, 230, 250);&quot;&gt;location&lt;/span&gt;.reload(); }&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;});&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;p&gt;&lt;span style=&quot;color: white; font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;&amp;nbsp;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;cs&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;각각의 버튼의 클릭 이벤트를 처리하는 함수들로 구성되어 있습니다. Modal을 보여주는 부분은&amp;nbsp;&lt;b&gt;&lt;i&gt;$(&quot;#myModal&quot;).modal()&lt;/i&gt;&lt;/b&gt; 부분입니다. jQuery에서 # selector는 element의 ID를 찾아 추적합니다. 앞선 modal.jsp에서 modal의 id를 myModal 임을 확인 할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;또한 눈에 띄는 것은 Ajax&amp;nbsp;구문입니다.&amp;nbsp; 데이터가 입력 / 수정하면 기존 방식에서는 화면 전체가 reload 됩니다. 변화하는 부분은 테이블 하나인데 전체 페이지가 변경되는 쓸모없는 자원이 낭비합니다. 이 낭비를 줄이기 위해 나온 것이 Ajax입니다 Ajax는 서버에 요청을 &lt;b&gt;자바스크립트에서 하기 때문에 화면 전체가 아닌 일부분만 갱신이 가능&lt;/b&gt;합니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;물론 지금 구현한 함수는 완벽한 Ajax 구문이 아닙니다. 왜냐하면 화면을 전체 Reload&amp;nbsp;하기 때문에 굳이 Ajax가 아니더라도 해결할 수 있는 부분입니다. 맛보기로 이런 게 있구나 보여주는 것이죠.&amp;nbsp;이것이 완벽한 Ajax를 구현한 것은 아니라는 점 생각해주시길 바랍니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;-- 내용 추가 18.08.16 --&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-family: &amp;quot;Spoqa Han Sans&amp;quot;, sans-serif; white-space: nowrap;&quot;&gt;borker님의 실행 결과 리플래시가 안되는 문제가 있다해서 확인하였고, MySQL의 insert 요청을 보낸 동시에&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-family: &amp;quot;Spoqa Han Sans&amp;quot;, sans-serif; white-space: nowrap;&quot;&gt;화면이 reload해서 새로고침이 안됩니다. s&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-family: &amp;quot;Spoqa Han Sans&amp;quot;, sans-serif; white-space: nowrap;&quot;&gt;uccess로 Modal 을 닫고, complete로 reload하는&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-family: &amp;quot;Spoqa Han Sans&amp;quot;, sans-serif; white-space: nowrap;&quot;&gt;함수를 추가하여&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-family: &amp;quot;Spoqa Han Sans&amp;quot;, sans-serif; white-space: nowrap;&quot;&gt;반영하였습니다.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(34, 34, 34); font-family: &amp;quot;Spoqa Han Sans&amp;quot;, sans-serif; white-space: nowrap;&quot;&gt;피드백 해주셔서 감사합니다.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;이제 어느 정도 게시판 다운 모습을 하기 시작합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;추가적인 기능을 넣어보는 것은 조금씩 조금씩 애정을 갖고 만들어 나가보겠습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;혹시 먼저 만들어 보았으면 하는 기능이 있다면 댓글로 남겨주세요&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;다음 포스팅은 &lt;b&gt;&lt;i&gt;&lt;u&gt;Mongo DB를 이용해서 REST API를 만드는&amp;nbsp;것&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;을 해보도록 하겠습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;전체 소스 코드는 GitHub를 참조해주시길 바랍니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Spring Framework</category>
      <category>bootstrap</category>
      <category>CSS</category>
      <category>modal</category>
      <category>Spring Boot</category>
      <category>Spring boot 게시판</category>
      <category>Spring Framework</category>
      <category>Spring 게시판</category>
      <category>게시판</category>
      <category>스프링</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/61</guid>
      <comments>https://ssoonidev.tistory.com/61#entry61comment</comments>
      <pubDate>Tue, 16 Jan 2018 14:11:42 +0900</pubDate>
    </item>
    <item>
      <title>[etc] Windows Package Manager Choco를 써보았다..</title>
      <link>https://ssoonidev.tistory.com/60</link>
      <description>&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153); font-size: 18pt;&quot;&gt;1. Chocolaty Package Manager&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;Mac Book의 brew, RedHat 계열 리눅스의 yum, Python의 pip, Debian 계열 리눅스의 apt-get, NodeJS의 npm 등 Package Manager는 개발자들이 Commend Line 상으로 쉽게 Package를 설치하고 Upgrade 할 수 있는 편리한 Tool이다.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: dashed; border-width: 1px; border-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding: 10px;&quot;&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;Windows&lt;/b&gt;에서&amp;nbsp;일반적으로 MySQL을 설치하는 순서&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;1. MySQL &lt;b&gt;홈페이지&lt;/b&gt;로 간다. (구글 - MySQL 설치 검색 - 홈페이지 접속)&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;2. &lt;b&gt;MySQL 인스톨러를 다운로드 받은 뒤 실행한다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;3. 모니터를 가만히 쳐다본다.&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: dashed; border-width: 1px; border-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding: 10px;&quot;&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;RedHat 계열 리눅스&lt;/b&gt;에서 MySQL을 설치한다면&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;1. &lt;b&gt;sudo yum install -y mysql&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;2. 끝&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-2538641355026813&quot;
     data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;Command Line이 익숙하지 않는다면 직접 홈페이지를 찾아가서 설치하는 것도 좋지만,&amp;nbsp;리눅스나 Mac OS를 사용하다가 Windows에 환경설정을 하고자 하면, 귀찮다. 매우 귀찮다. 마침 새로운 개발 노트북에 개발 환경을 설정하는 과정에서 혹시 Windows에도 Package Manager가 있을까 했는데, Chocolaty라는 Package Manager가 있었다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;설치 과정&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;a href=&quot;https://chocolatey.org/install&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://chocolatey.org&lt;/a&gt;&lt;a href=&quot;https://chocolatey.org/install&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;/install&lt;/a&gt;&amp;nbsp;로 접속하게 되면 PowerShell 또는 cmd로 설치가 가능한 명령어를 제공한다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 640px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99560E395A585E8F0C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99560E395A585E8F0C&quot; width=&quot;640&quot; height=&quot;227&quot; filename=&quot;그림3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;Windows PowerShell을 이용해서 밑의 코드를 복사-붙여넣기 후 실행을 하면 혼자서 열심히 동작을 수행한다.&amp;nbsp;완료가 된 후에 &lt;b&gt;&lt;u&gt;choco&lt;/u&gt;&lt;/b&gt;라고 명령어를 타이핑했을 때, 아래 그림처럼 버전 정보를 제공하면, 성공적으로 설치가 완료된 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 700px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/994ED2495A585F3A35&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F994ED2495A585F3A35&quot; width=&quot;700&quot; height=&quot;90&quot; filename=&quot;그림4.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;패키지 검색 / 설치 / 갱신 / 삭제&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;설치가 완료되었으면 한 번 실행을 해보자. Sublime Text를 다운로드하기 위해 우선 Sublime Text가 Choco에 등록되어 있는지 확인하는 절차를 먼저 가진다.&amp;nbsp;&lt;b&gt;&lt;u&gt; cmd나 PowerShell 실행할 때 관리자 권한으로 실행&lt;/u&gt;&lt;/b&gt;을 해야 패키지를 정상적으로 설치 할 수 있다.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: dashed; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;choco search sublime&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9927744B5A5862B015&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9927744B5A5862B015&quot; width=&quot;400&quot; height=&quot;370&quot; filename=&quot;그림5.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;와.. 많기도 하다.&amp;nbsp; 우리는 그 중에서 SublimeText3를 설치해 보자.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: dashed; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;choco install -y sublimetext3&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/999204445A5863D30A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F999204445A5863D30A&quot; width=&quot;580&quot; height=&quot;411&quot; filename=&quot;그림6.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;설치가 끝났다. 설치 경로는 C:\Program Files\Sublime Text 3에 설치되어있다. 간혹 C:\tools나 C:\ProgramData 경로에 설치되는 패키지도 있다. Sublime Text 3을 저는&amp;nbsp;잘 사용하지 않기 때문에, 다시 삭제하도록 하겠다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: dashed; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;b&gt;choco uninstall sublimetext3&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;update나 upgrade를 이용하면 버전을 최신 버전으로도 관리가 가능하다. Windows에서도 이런 툴을 사용할 수 있어서, 나중에 포맷이나 새로운 컴퓨터를 또 얻는다면, Command만 파일에 잘 저장하여, 실행하면 간단하게 개발 환경을 구성할 수 있을 것으로 기대한다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Computer Science</category>
      <category>chocolatey</category>
      <category>Windows Choco</category>
      <category>Windows Package Manager</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/60</guid>
      <comments>https://ssoonidev.tistory.com/60#entry60comment</comments>
      <pubDate>Fri, 12 Jan 2018 16:37:00 +0900</pubDate>
    </item>
    <item>
      <title>[Spring Boot]1-1. 간단한 게시판 만들기 (MySQL과 데이터 주고 받기)</title>
      <link>https://ssoonidev.tistory.com/59</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;전체 소스 코드 :&amp;nbsp;&lt;a href=&quot;https://github.com/ssooni/ssoonidev_blog&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://github.com/ssooni/ssoonidev_blog&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;Spring Boot&lt;/u&gt; : ver 1.5.9&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;JAVA&lt;/u&gt; : ver 1.8&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;Build Tool&lt;/u&gt; : MAVEN&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-2538641355026813&quot;
     data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 51, 153);&quot;&gt;1. 목표&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;사용자가&amp;nbsp;View를 통해 데이터를 조회하여, 새로운 데이터를 입력하거나 기존 데이터를 삭제, 수정이 가능한 웹페이지를 작성하는 것이 이번 포스팅의 목표입니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 51, 153);&quot;&gt;2. pom.xml&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;org.mybatis.spring.boot&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;mybatis-spring-boot-starter&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;version&lt;/span&gt;&amp;gt;1.3.1&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;version&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;org.springframework.boot&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;spring-boot-starter-web&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;&amp;lt;!--&amp;nbsp;MYSQL&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;mysql&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;mysql-connector-java&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;scope&lt;/span&gt;&amp;gt;runtime&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;scope&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;&amp;lt;!--&amp;nbsp;JSP&amp;nbsp;/&amp;nbsp;JSTL&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;javax.servlet&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;jstl&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;org.apache.tomcat.embed&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;groupId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;tomcat-embed-jasper&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;artifactId&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;해당&amp;nbsp;Spring Boot 프로젝트에 필요한 Dependency Library를 추가해 줍니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;주요 라이브러리를 간단하게 소개하고 넘어가죠.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;color: rgb(0, 51, 153);&quot;&gt;mybatis-spring-boot-starter&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;Mapper&lt;/b&gt;라는 아주 좋은&amp;nbsp;기능을 가지고 있는 Persistence Framework MyBatis를 사용합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;JDBC만으로 코드를 작성하면 PrepareStatement, Connection 등을 사용하여 연결하고, 데이터베이스의 결과를 &lt;b&gt;&lt;u&gt;직접 매핑&lt;/u&gt;&lt;/b&gt;을 해야 하는 번거로움이 있었는데&amp;nbsp;&lt;b&gt;&lt;u&gt;@Mapper&lt;/u&gt;&lt;/b&gt;&amp;nbsp;와 설정 파일을 이용하면, MyBatis가 매핑까지 해줘서 간단하게 코딩이 가능합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;color: rgb(0, 51, 153);&quot;&gt;mysql-connector-java&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;정형 데이터베이스 MySQL와 연결을 위해 사용하는 라이브러리입니다. Spring Boot의 설정 파일 application.properies에 작성한 URL과 mysql User 정보 등을 읽고 데이터 베이스에 접근합니다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; color: rgb(240, 240, 240); overflow: auto; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; position: relative !important;&quot;&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px;&quot;&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; color: rgb(0, 0, 0); font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial; line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 51, 153);&quot;&gt;3. MySQL 테이블 생성&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding: 6px; border-right: 2px solid rgb(79, 79, 79); height: 157px;&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px; height: 157px;&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;create&lt;/span&gt;&amp;nbsp;database&amp;nbsp;ssooni;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;use&lt;/span&gt;&amp;nbsp;ssooni;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;create&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;table&lt;/span&gt;&amp;nbsp;board(&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bno&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;auto_increment&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;primary&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;key&lt;/span&gt;,&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;userName&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;varchar&lt;/span&gt;(&lt;span style=&quot;color:#c10aff&quot;&gt;10&lt;/span&gt;),&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;contents&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;text&lt;/span&gt;&amp;nbsp;);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;insert&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;into&lt;/span&gt;&amp;nbsp;board(userName,&amp;nbsp;contents)&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;values&lt;/span&gt;(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;ssooni&quot;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Welcome!!&quot;&lt;/span&gt;);&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; height: 157px;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;(MySQL 설치 및 설정 방법은 추후에 포스팅할 예정입니다.)&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;MySQL Workbench나 cmd(또는 bash)를 이용하여 MySQL 데이터베이스에 접속해봅시다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;그 후, 위의 쿼리를 이용해서 &lt;u&gt;&lt;b&gt;데이터베이스를 생성하고 해당 데이터베이스에 사용할 board 테이블을 만들고,&lt;/b&gt;&amp;nbsp;&lt;b&gt;데이터베이스에 Sample 데이터를 입력하는 과정&lt;/b&gt;&lt;/u&gt;까지 진행해 봅시다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/99824A395A5851DD24&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99824A395A5851DD24&quot; width=&quot;400&quot; height=&quot;253&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;그리고 테이블 생성과&amp;nbsp;데이터 입력이&amp;nbsp;잘 되었는지 확인해 봅시다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;u&gt;desc [테이블 명] 과 select * from [테이블 명]&lt;/u&gt;&lt;/b&gt;을 이용하여 위의 그림처럼 조회가 된다면 성공입니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 51, 153);&quot;&gt;4. application.properties 설정&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding: 6px; border-right: 2px solid rgb(79, 79, 79); height: 175px;&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px; height: 175px;&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;##&amp;nbsp;View&amp;nbsp;Path&amp;nbsp;Config&amp;nbsp;##&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;spring.mvc.view.prefix&lt;span style=&quot;color:#4be6fa&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#4be6fa&quot;&gt;/&lt;/span&gt;WEB&lt;span style=&quot;color:#4be6fa&quot;&gt;-&lt;/span&gt;INF&lt;span style=&quot;color:#4be6fa&quot;&gt;/&lt;/span&gt;view&lt;span style=&quot;color:#4be6fa&quot;&gt;/&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;spring.mvc.view.suffix&lt;span style=&quot;color:#4be6fa&quot;&gt;=&lt;/span&gt;.jsp&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;##&amp;nbsp;Mysql&amp;nbsp;Config&amp;nbsp;##&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;spring.datasource.username&lt;span style=&quot;color:#4be6fa&quot;&gt;=&lt;/span&gt;ssooni&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;spring.datasource.password&lt;span style=&quot;color:#4be6fa&quot;&gt;=&lt;/span&gt;ssooni&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;spring.datasource.url&lt;span style=&quot;color:#4be6fa&quot;&gt;=&lt;/span&gt;jdbc:mysql:&lt;span style=&quot;color:#4be6fa&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#4be6fa&quot;&gt;/&lt;/span&gt;localhost:&lt;span style=&quot;color:#c10aff&quot;&gt;3306&lt;/span&gt;&lt;span style=&quot;color:#4be6fa&quot;&gt;/&lt;/span&gt;ssooni?useSSL&lt;span style=&quot;color:#4be6fa&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#c10aff&quot;&gt;false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; height: 175px;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;Spring Boot로 개발을 하면서 가장 괜찮았던 점은 properties 파일에 모든 설정값을 넣어 관리가 가능하다는 점입니다. yaml 파일 형태로도 물론 관리가 가능하며, 이전 프로젝트에서 활용한 경험이 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 320px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9920474E5A56EBB707&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9920474E5A56EBB707&quot; width=&quot;320&quot; height=&quot;459&quot; filename=&quot;그림2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;가장 첫 번째 단락은 &lt;b&gt;&lt;u&gt;jsp 파일이 있는 경로와 확장자&lt;/u&gt;&lt;/b&gt;를 지정하는 설정입니다. 기존&amp;nbsp;Spring Framework에서는 xml 파일을 뒤져서 해당 경로를 지정하는 방법을 쓰는데, xml에 비하면 가독성이 아주 좋은 편이라 편리하네요. 참고로 &lt;b&gt;&lt;u&gt;webapp/WEB-INF/view/ 경로는 위의 그림 파일처럼 직접 폴더를 생성&lt;/u&gt;&lt;/b&gt;해야 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;두 번째 단락은 MySQL의 URL 정보와 DB 로그인을 위한 ID / PW 정보를 설정합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;URL의 구조는 보통 &lt;b&gt;&lt;u&gt;jdbc:mysql://[ host ip ] : [ host port ] / [ database name ] ? [ option ]&lt;/u&gt;&lt;/b&gt;으로 구성됩니다. 따라서 지금 저는 localhost의 3306번 포트에 ssooni라는 데이터 베이스에 접근하는 거죠.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;useSSL은 패킷을 암호화하는 Secure Socket Layer의 사용 여부를 설정하는 건데 database에 SSL 설정을 안 했기 때문에 사용하지 않음(false) 옵션을 주었습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 51, 153);&quot;&gt;5. 설정 끝!! 프로그래밍 하자.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;VO 또는 DTO 또는 Domain 클래스 작성&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;package&lt;/span&gt;&amp;nbsp;com.example.domain;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;class&lt;/span&gt;&amp;nbsp;BoardDomain&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;String&lt;/span&gt;&amp;nbsp;userName;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;String&lt;/span&gt;&amp;nbsp;contents;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;//&amp;nbsp;GETTER&amp;nbsp;AND&amp;nbsp;SETTER&amp;nbsp;+&amp;nbsp;TOSTRING&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;getBno()&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;bno;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;setBno(&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno)&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;this&lt;/span&gt;.bno&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;bno;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;String&lt;/span&gt;&amp;nbsp;getUserName()&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;userName;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;setUserName(&lt;span style=&quot;color:#4be6fa&quot;&gt;String&lt;/span&gt;&amp;nbsp;userName)&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;this&lt;/span&gt;.userName&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;userName;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;String&lt;/span&gt;&amp;nbsp;getContents()&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;contents;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;setContents(&lt;span style=&quot;color:#4be6fa&quot;&gt;String&lt;/span&gt;&amp;nbsp;contents)&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;this&lt;/span&gt;.contents&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;contents;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;사람들마다 다르게 명명하지만, 아무튼 비슷하게 사용하고 있는 모델 클래스입니다. &lt;b&gt;&lt;u&gt;데이터 베이스의 각각의 칼럼에 대응하게 작성하여, 조회 결과를 담을 수 있고 새로운 칼럼을 추가하기 위해 데이터베이스에 데이터를 실을 때 사용하는 클래스&lt;/u&gt;&lt;/b&gt;입니다. 사실상 getter와 setter, Log에 이쁘게 남기기&amp;nbsp;위한 toString() 함수로 구성된 아주 간단한 클래스입니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;Annotation&amp;nbsp;작성 vs mapper.xml 작성&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;다음은 Mapper Interface&amp;nbsp;작성입니다. Mapper Class 하나는 MySQL 데이터베이스의 테이블 하나와 대응합니다.&amp;nbsp;MyBatis는 &lt;b&gt;&lt;u&gt;xml 파일&amp;nbsp;또는 Annotation&lt;/u&gt;&lt;/b&gt;을 이용해서 쿼리를 설정하고&amp;nbsp;데이터베이스에 접근을 합니다. 저는 두 가지 다 이용해 보려고 합니다. 각각의 장단점은 분명히 있으니깐요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;선택 1) Annotation 작성&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@Mapper&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;interface&lt;/span&gt;&amp;nbsp;BoardMapper&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Select(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;board&amp;nbsp;WHERE&amp;nbsp;bno&amp;nbsp;=&amp;nbsp;#{bno}&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;List&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;BoardDomain&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;findByBno(@Param(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;bno&quot;&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Insert(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;INSERT&amp;nbsp;INTO&amp;nbsp;board(userName, contents)&amp;nbsp;VALUES(#{userName},&amp;nbsp;#{contents})&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;insert(BoardDomain&amp;nbsp;board);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Update(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;UPDATE&amp;nbsp;board&amp;nbsp;SET&amp;nbsp;contents=#{contents}&amp;nbsp;where&amp;nbsp;bno=#{bno}&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;update(BoardDomain&amp;nbsp;board);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Delete(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;DELETE&amp;nbsp;FROM&amp;nbsp;board&amp;nbsp;where bno=#{bno}&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;delete(@Param(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;bno&quot;&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;com.example.dao.BoardMapper.java 코드&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;MySQL로 할 수 있는 조회(@Select), 생성(@Insert), 갱신(@Update), 삭제(@Delete)를 할 수 있는 코드입니다. @Mapper Annotation과 각각의 함수마다 어떤 쿼리를 수행하는지를 작성하는 것이 끝입니다. 이 방법은 &lt;b&gt;쿼리가 단순한 경우&lt;/b&gt;에 사용하면 좋습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;선택 2) Mapper.xml 작성&lt;/b&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;##&amp;nbsp;Mapper&amp;nbsp;Config&amp;nbsp;##&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;mybatis.type-aliases-package=com.example.domain&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;mybatis.mapper-locations=mapper/**/*.xml&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;xml 파일로 mapper를 설정하려면 우선 application.properties에 mapper의 위치와 domain 패키지를 추가로 설정해줍니다. domain 패키지는 나중에 mapper.xml에서 resultType을 지정할 때&amp;nbsp; &lt;b&gt;&lt;u&gt;com.example.domain.BoardDomain&amp;nbsp;형태가 아닌 BoardDomain으로 간략하게 적기 위해&lt;/u&gt;&lt;/b&gt; 설정했습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;그리고 &lt;b&gt;&lt;u&gt;mapper-locations은 resourse 폴더 안에 mapper 폴더&lt;/u&gt;&lt;/b&gt;를 만든 후 설정해주시면 됩니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;?xml&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;version&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;1.0&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;encoding&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span style=&quot;color:#a8ff58&quot;&gt;?&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;!DOCTYPE&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;mapper&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;PUBLIC&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;-//mybatis.org//DTD&amp;nbsp;Mapper&amp;nbsp;3.0//EN&quot;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;http://mybatis.org/dtd/mybatis-3-mapper.dtd&quot;&lt;/span&gt;&amp;gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;mapper&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;namespace&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;com.example.dao.BoardMapper&quot;&lt;/span&gt;&amp;gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;findByBno2&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;parameterType&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Integer&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;resultType&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;BoardDomain&quot;&lt;/span&gt;&amp;gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;borad&amp;nbsp;WHERE&amp;nbsp;bno&amp;nbsp;=&amp;nbsp;#{bno}&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;select&lt;/span&gt;&amp;gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;mapper&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;public&amp;nbsp;List&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;BoardDomain&lt;/span&gt;&amp;gt;&amp;nbsp;findByBno(@Param(&quot;bno&quot;)&amp;nbsp;int&amp;nbsp;bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;span style=&quot;color: white; font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;/&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;cs&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;/resource/mapper/BoardMapper.xml(11번째 줄은 제외)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;11번 줄의 코드와 같은 결과를 보여주는 xml 파일을 하나 생성하였습니다. 물론 &amp;lt;insert&amp;gt;등도&amp;nbsp;가능합니다. 가장 위의 DTD를 입력하면 Ctrl + space 자동 완성을 지원해줘서 작성하기 편리해집니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;namepspace에는 mapper를 사용할 인터페이스 명을 사용합니다. 저는 선택 1번에서 사용한 BoardMapper.java 파일을 그대로 사용할 예정입니다. 그리고 parameterType과 resultType을 설정해줍니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@Mapper&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;interface&lt;/span&gt;&amp;nbsp;BoardMapper&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Select(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;board&amp;nbsp;WHERE&amp;nbsp;bno&amp;nbsp;=&amp;nbsp;#{bno}&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;List&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;BoardDomain&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;findByBno(@Param(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;bno&quot;&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;//중간&amp;nbsp;생략&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;List&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;BoardDomain&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;findByBno2(&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;com.example.dao.BoardMapper.java&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;아까 작성한 BoardMapper.java에 findByBno2 함수를 다음과 같이 작성했습니다. xml 작성 방법의&amp;nbsp;장점은 &lt;b&gt;&lt;u&gt;동적 SQL처럼&amp;nbsp;복잡한 쿼리를 사용할 때 Annotation 보다 훨씬 수월하게 작성&lt;/u&gt;&lt;/b&gt;할 수 있다는 점입니다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;Service&lt;/span&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;&amp;nbsp;구현&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;package&lt;/span&gt;&amp;nbsp;com.example.service;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;java.util.List;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.example.domain.BoardDomain;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;interface&lt;/span&gt;&amp;nbsp;BoardService&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;List&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;BoardDomain&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;findByBno(&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;List&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;BoardDomain&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;findByBno2(&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;insert(BoardDomain&amp;nbsp;board);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;update(BoardDomain&amp;nbsp;board);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;delete(&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;com.example.service.BoardService.java&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding: 6px; border-right: 2px solid rgb(79, 79, 79); height: 921px;&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;30&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;31&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;32&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;33&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;34&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;35&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;36&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;37&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;38&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;39&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;40&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;41&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;42&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;43&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;44&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px; height: 921px;&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;package&lt;/span&gt;&amp;nbsp;com.example.service.impl;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;java.util.List;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.beans.factory.annotation.Autowired;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.stereotype.Service;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.example.dao.BoardMapper;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.example.domain.BoardDomain;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.example.service.BoardService;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@Service&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;class&lt;/span&gt;&amp;nbsp;BoardServiceImpl&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;implements&lt;/span&gt;&amp;nbsp;BoardService{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Autowired&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BoardMapper&amp;nbsp;boardMapper;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;List&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;BoardDomain&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;findByBno(&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno)&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;boardMapper.findByBno(bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;List&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;BoardDomain&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;findByBno2(&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno)&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;boardMapper.findByBno2(bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;insert(BoardDomain&amp;nbsp;board)&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;boardMapper.insert(board);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;update(BoardDomain&amp;nbsp;board)&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;boardMapper.update(board);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;void&lt;/span&gt;&amp;nbsp;delete(&lt;span style=&quot;color:#4be6fa&quot;&gt;int&lt;/span&gt;&amp;nbsp;bno)&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;boardMapper.delete(bno);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; height: 921px;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;com.example.service.Impl.BoardServiceImpl.java&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&quot;아니.. DAO랑 똑같은데 굳이 또 해야 해???&quot;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;이런 질문을 주변에서 간혹 받기도 합니다. 앞서 말했듯이 DAO는 테이블 당 하나씩 연결되는 것이라면 &lt;b&gt;&lt;u&gt;Service는 비즈니스 또는 기능당 하나씩 사용하는 겁니다&lt;/u&gt;.&lt;/b&gt; 지금은 Service 클래스가 데이터 베이스의 테이블을&amp;nbsp;하나 밖에 안 쓰는 경우이지만 , &lt;b&gt;&lt;u&gt;하나의 기능 상에&amp;nbsp;테이블을&amp;nbsp;두 개 이상 사용하는 경우&lt;/u&gt;&lt;/b&gt;가 실제 프로젝트에서&amp;nbsp;상당히 많습니다. 예를 들면 게시물을 작성하는 동시에 게시물 History 테이블에 이력을 저장하는 경우가 대표적입니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 51, 153);&quot;&gt;6. Test&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;여기까지 수행하면 데이터베이스에 데이터를 읽는 코드를 작성해서 데이터를 잘 불러오는지 테스트를 진행해보겠습니다. controller 패키지와 그 안에 BoardController Class를 생성하고 아래 코드를 작성해 봅시다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;java.util.List;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.beans.factory.annotation.Autowired;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.stereotype.Controller;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.web.bind.annotation.GetMapping;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.web.bind.annotation.PathVariable;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;org.springframework.web.servlet.ModelAndView;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.example.domain.BoardDomain;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;import&lt;/span&gt;&amp;nbsp;com.example.service.BoardService;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;@Controller&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;class&lt;/span&gt;&amp;nbsp;BoardController&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Autowired&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BoardService&amp;nbsp;boardService;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@GetMapping(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;/test&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;public&lt;/span&gt;&amp;nbsp;ModelAndView&amp;nbsp;readTest()&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;lt;&lt;/span&gt;BoardDomain&lt;span style=&quot;color:#ff3399&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;boardList&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;boardService.findByBno(&lt;span style=&quot;color:#c10aff&quot;&gt;1&lt;/span&gt;);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ModelAndView&amp;nbsp;nextPage&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;new&lt;/span&gt;&amp;nbsp;ModelAndView(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;board/readTest&quot;&lt;/span&gt;);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nextPage.addObject(&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;boardList&quot;&lt;/span&gt;,&amp;nbsp;boardList);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ff3399&quot;&gt;return&lt;/span&gt;&amp;nbsp;nextPage;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;b&gt;com.example.controller.Boardcontroller.java&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;그리고 화면을 보여줄 JSP 파일도 만들어 줍니다. view 폴더 안에 board폴더를 생성한 후 readTest.jsp 파일을 생성해 아래와 같이 작성해 줍니다.&lt;/div&gt;&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#272727; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;30&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;31&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;32&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;33&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;34&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;35&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;36&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;37&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;38&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;39&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;40&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#f0f0f0; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff7e00&quot;&gt;&amp;lt;%&lt;/span&gt;&lt;span style=&quot;color:#0086b3&quot;&gt;@&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#0086b3&quot;&gt;page&lt;/span&gt;&amp;nbsp;language&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;java&quot;&lt;/span&gt;&amp;nbsp;contentType&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;text/html;&amp;nbsp;charset=UTF-8&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pageEncoding&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span style=&quot;color:#ff7e00&quot;&gt;%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#ff7e00&quot;&gt;&amp;lt;%&lt;/span&gt;&lt;span style=&quot;color:#0086b3&quot;&gt;@&lt;/span&gt;&amp;nbsp;taglib&amp;nbsp;prefix&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;c&quot;&lt;/span&gt;&amp;nbsp;uri&lt;span style=&quot;color:#ff3399&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;http://java.sun.com/jsp/jstl/core&quot;&lt;/span&gt;&lt;span style=&quot;color:#ff7e00&quot;&gt;%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;!DOCTYPE&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;html&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;PUBLIC&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;-//W3C//DTD&amp;nbsp;HTML&amp;nbsp;4.01&amp;nbsp;Transitional//EN&quot;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;http://www.w3.org/TR/html4/loose.dtd&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;html&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;head&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;meta&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;http-equiv&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;content&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;text/html;&amp;nbsp;charset=UTF-8&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;link&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;rel&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;stylesheet&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;href&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;title&lt;/span&gt;&amp;gt;Test&amp;nbsp;Read&amp;nbsp;Data&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;title&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;head&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;body&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;container&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;h2&lt;/span&gt;&amp;gt;Board&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;h2&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;table&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;table&amp;nbsp;table-bordered&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;thead&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;tr&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;th&lt;/span&gt;&amp;gt;bno&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;th&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;th&lt;/span&gt;&amp;gt;contents&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;th&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;th&lt;/span&gt;&amp;gt;userName&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;th&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;tr&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;thead&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;tbody&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;c:forEach&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;var&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;board&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;items&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;${boardList}&quot;&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;tr&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;${board.bno}&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;a&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a8ff58&quot;&gt;href&lt;/span&gt;=&lt;span style=&quot;color:#ffd500&quot;&gt;&quot;#&quot;&lt;/span&gt;&amp;gt;${board.contents}&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;${board.userName}&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;td&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;tr&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;c:forEach&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;tbody&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;table&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;div&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;body&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;lt;/&lt;span style=&quot;color:#ff3399&quot;&gt;html&lt;/span&gt;&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;결 과&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 820px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/9915E7365A58576407&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F9915E7365A58576407&quot; width=&quot;820&quot; height=&quot;107&quot; filename=&quot;그림3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.5;&quot;&gt;다음 포스팅에서는 Controller와 View에 대하여 알아보는 시간을 갖도록 해볼게요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.5;&quot;&gt;도움이 되셨으면 좋겠습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.5;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Spring Framework</category>
      <category>mybatis</category>
      <category>mysql</category>
      <category>spring</category>
      <category>springboot</category>
      <category>간단한 게시판 만들기</category>
      <category>게시판</category>
      <category>스프링</category>
      <category>스프링부트</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/59</guid>
      <comments>https://ssoonidev.tistory.com/59#entry59comment</comments>
      <pubDate>Fri, 12 Jan 2018 15:28:10 +0900</pubDate>
    </item>
    <item>
      <title>[정보처리기사] 2017년 1차 합격 수기</title>
      <link>https://ssoonidev.tistory.com/58</link>
      <description>&lt;p style=&quot;text-align: right; clear: none; float: none; margin-left: 4em;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/27790B4E594E6ECC15&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;정보처리기출_2006~2015.zip&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 34, 102);&quot;&gt;1. 합격했습니다!!&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2215A6475947D5C321&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2215A6475947D5C321&quot; width=&quot;400&quot; height=&quot;400&quot; filename=&quot;KakaoTalk_20170615_000632530.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;2017년에 지금까지&amp;nbsp;제가 한 일 중에 가장 잘한 일이라고 생각해요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;직접 서울 공단에 가서 자격증을 수령했습니다. 여권같이 생긴 게 멋있더라고요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;저는 &lt;b&gt;&lt;u&gt;2017년 1차 필기와 1차 실기 시험을 쳤고요&lt;/u&gt;&lt;/b&gt;. 그동안 공부를 했던 경험들을 떠올리면서 포스팅을 진행할게요&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;시험을 준비하시는 많은 분들께 도움이 될 수 있었으면 합니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;(참고로 저는&lt;b&gt; &lt;u&gt;4학년 소프트웨어학과 전공자&lt;/u&gt;&lt;/b&gt;입니다)&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 34, 102);&quot;&gt;2. 필기 공부방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;공단에서 2017년부터 정보처리기사 시험의 유형을 다르게 하겠다고 선언했었습니다. 이제 겨우 시험을 칠 자격을 얻었는데 실기는 서술형으로 나온다고 하질 않나.. 필기시험은 어렵게 낸다 하질 않나. 운이 지지리도 없다고 생각했어요. 그래도 4년 동안 대학교에서 공부를 했으니까 어느 정도는 알겠지 했는데, 기출문제를 풀어보니까 막상 그런 건 또 아니더라구요.(이럴려고 4년 공부했나.. 자괴감 들고...)&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 810px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/213B41505947DB4F10&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F213B41505947DB4F10&quot; width=&quot;810&quot; height=&quot;257&quot; filename=&quot;그림2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;저 같은 경우에는 자격증 공부를 할 때, 책 없이 하기에는 많이 힘이 들어서 &lt;u style=&quot;font-weight: bold;&quot;&gt;시나공 summary 정보처리기사 필기&lt;/u&gt;&amp;nbsp;책을 사용했습니다. 이 책은 정말 간단한&amp;nbsp;요약정리와 기출문제들로 구성되어 있어요. 그리고&amp;nbsp;&lt;u&gt;&lt;b&gt;필기 기출문제 파일&lt;/b&gt;&lt;/u&gt;을 따로 얻어서 문제를 풀었습니다. 파일로 첨부해 드렸으니까 공부하실 때 요긴하게 사용하세요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;저는 일단 파일에 있는 기출문제를 2012년부터 2015년까지 출력해서 문제를 풀었습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;프린트한 문제를 풀고 나서, &lt;u&gt;&lt;b&gt;오답을 체크할 때 summary 책을 이용해서 어떤 개념이 있었는지를 프린트한 기출문제에 다시 적어서 암기를&amp;nbsp;하고 넘어가는 방법&lt;/b&gt;&lt;/u&gt;으로 매 회를 진행하였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;기출문제를 공부하시다 보면&amp;nbsp;&lt;b&gt;&lt;u&gt;반복되는 문제&lt;/u&gt;&lt;/b&gt;가 한두 문제씩 나옵니다. 이 문제 같은 경우에는 반드시 꼭꼭꼭 집고 가시는 게 좋습니다. 실제 시험을 치면 생판 처음 보는 문제들도 있지만, 오아시스 같은 이런 문제들이 빈번하게 출제됩니다. 심지어 답도 똑같이 출제되는 경우도 있으니까 과락을 면하기 위해서 반드시 꼭 공부하시길 바랍니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;보통 필기를 공부하신 분들 후기를 보면 전자계산기 구조 과목과 데이터 통신 과목이 어렵다고 하시는 분들이 많습니다. 저도 또한 저 두 과목이 가장 공부하면서 어렵다고 느낀 점이 범위가 넓고,&amp;nbsp;외울 게 너무 많습니다. &amp;nbsp;특히 데이터 통신은 프로토콜을 외우는 게 정말 힘들었습니다. 그래서 복습을 할 때에도 이 두 과목에는 좀 더 신경을 쓰면서 공부를 했습니다. &lt;u&gt;&lt;b&gt;파트별로 공부를 하시는 분들은 데이터베이스, 운영체제, 소프트웨어 공학을 먼저 공부해서 점수를 끌어올리고 나머지 두 과목에서 과락을 면하자는 목표를 가지고 공부를 하는 게 좋습니다.&lt;/b&gt;&lt;/u&gt;&amp;nbsp;&amp;nbsp;먼저 공부하는 3과목의 경우에는 기출 문제에서 반복되는 문제가 많고, 외우는 게 어렵다고 &amp;nbsp;두 과목보다는 적습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;필기시험은 &lt;u&gt;&lt;b&gt;과목당 30분씩 2시간 반 동안 시험을 보고 절반 이상 시간이 지나면 퇴실이 가능&lt;/b&gt;&lt;/u&gt;합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;수능 과학 탐구영역처럼 30분씩 딱딱 정해서 과목별 시험지를 배부하는 것은 아닙니다. 모든 과목이 있는 시험지를 배부하고 순서도 원하는 데로 푸시면 됩니다. 그리고 시험지는 나중에 집에 가져가실 수 있는데, 시험이 끝나고 6시쯤에 가채점 답안이 공단에서 공시합니다. 그 동안 시험치신 분들이 이의를 제기할 수도 있고, 그게 받아 지는 경우 문제의 답도 달라질 수 있으니. 시험 결과가 나올 때까지 가채점은 그냥 가채점이라고 생각하시면 마음 편합니다. 실제로 제가 친 시험에도 문제에 오류가 있어서 해당 문제에 답이 없다라고 정정되었습니다.&lt;/p&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-2538641355026813&quot;
     data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 640px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/242DDA435947DF7930&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F242DDA435947DF7930&quot; width=&quot;640&quot; height=&quot;241&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;전자 계산기 과목에 조금 더 많이 신경을 쓰다 보니 전자계산기 과목 점수가 높게 나왔어요. 물론 찍은 것도 어느 정도 맞아서 높은 점수가 나왔을 뿐이지 그동안 공부하면서 푼 기출문제의 평균은 60점대 초반을 왔다 갔다 했었어요. &lt;u&gt;&lt;b&gt;필기는 다시 말씀드리지만 기출문제를 정확하게 푸는 것이 가장 중요하다&lt;/b&gt;&lt;/u&gt;고 생각합니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&amp;nbsp;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(0, 34, 102);&quot;&gt;3. 실기 공부방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;필기를 무사히 통과하고 실기 준비를 시작했어요. 예전에는 실기도 객관식이고 데이터베이스와 알고리즘을 어느 정도 맞추면 사실상 합격이라 사람들이 저 두 과목만 공부를 하고 합격을 하는 사례가 많아지자 공단에서 싹 다 서술형, 단답식으로 변경하겠다고 공언해 버렸죠.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 640px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2120533E594E642233&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2120533E594E642233&quot; width=&quot;640&quot; height=&quot;214&quot; filename=&quot;그림3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;실기 책도 역시 시나공으로 준비했습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;실기는 3시간 동안 시험을 치며, 총 20문제에 합격은 60점이상, 문제마다 배점은 각각 달리되어 있습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(61, 0, 153);&quot;&gt;알고리즘 - 25점&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(61, 0, 153);&quot;&gt;데이터베이스 - 25점&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(61, 0, 153);&quot;&gt;업무 프로세스 - 15점&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(61, 0, 153);&quot;&gt;전산영어 - 10점&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(61, 0, 153);&quot;&gt;IT 신기술 동향 및 시스템 관리 - 25점&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;저는 일단&amp;nbsp;알고리즘과 데이터 베이스는 무조건 다 맞추겠다고 목표를 세웠습니다. 전공 수업으로 웬만한 것은 풀 수 있고,&amp;nbsp;&lt;u&gt;&lt;b&gt;신기술 동향이나 전산 영어&lt;/b&gt;&lt;/u&gt;는 외워야 할 범위가 엄청 많습니다. 거기다가 &lt;u&gt;&lt;b&gt;영어 풀네임을 요구하는 문제&lt;/b&gt;&lt;/u&gt;가 간혹 있기 때문에 외우기 부담이 되는 경우도 있어요. 이 두 과목은&lt;u&gt;&lt;b&gt; 매일매일 어느 정도 범위를 정해놓고 꾸준히 보는게 중요&lt;/b&gt;&lt;/u&gt;한 거 같습니다. 시간이 없다면 보안에 관련된 전산 영어를 보고 가시는 걸 추천합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;u&gt;&lt;b&gt;알고리즘은 C / Java의 입출력문, 연산식,&amp;nbsp;조건문 등 간단한 문법과&amp;nbsp;문제를 푸는 방법에 대해서 이해&lt;/b&gt;&lt;/u&gt;를 하면 충분히 맞출 거라고 생각해요. &lt;u&gt;&lt;b&gt;데이터 베이스는 쿼리문, 관계 대수, 정규화를 집중적으로 공부&lt;/b&gt;&lt;/u&gt;했습니다. 알고리즘은 전체 코드를 코딩하는 개념보다는 빈칸에 들어가야 할 코드에 대하여 푸는 문제가 나왔었고, 데이터베이스는 요구하는 사항에 대한 쿼리를&amp;nbsp;작성하는 문제가 나왔습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;직접 데이터베이스나 컴파일러를 설치해서 실행해 보는 것이 이해하는데 가장 편하겠지만, 이쪽으로 갈 생각 없이 &lt;u&gt;&lt;b&gt;단순히 스펙으로 자격증을 따겠다고 생각하신 분들은&amp;nbsp;교재에 나온 문제를 모두 풀어보는 것이 좋습니다.&lt;/b&gt;&lt;/u&gt; 알고리즘과 데이터베이스는 약간의 암기 + 많은 응용을 요구하기 때문에 문제를 많이 풀면서 이해하는 것이 좋습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;u&gt;&lt;b&gt;업무 프로세스는 엄청 긴 지문을 읽고 각각에 해당되는 부분을 찾아 넣는 문제&lt;/b&gt;&lt;/u&gt;가 나왔는데, 시험 치기 전에 간단하게 몇 문제를 풀어보면 어려움 없이 문제를 해결하실 수 있을 거라 생각합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 820px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/223F194A594E6BCA11&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F223F194A594E6BCA11&quot; width=&quot;820&quot; height=&quot;180&quot; filename=&quot;그림4.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;서술형으로 변경된 후 처음으로 치러진 시험이라 그런지 &lt;u&gt;&lt;b&gt;1회 난이도는 생각했던 것보다&amp;nbsp;쉬웠습니다.&lt;/b&gt;&lt;/u&gt; 답안 채점도 생각보다 후하게 준 거 같아요.&amp;nbsp;인터넷에 떠도는 가채점 답안으로 채점한 결과보다 높은 결과가 나오면서 무사히 합격했습니다. 시험을 친지 꽤 오래돼서 문제에 대한 기억과 공부한 방법에 대해서 가물가물하긴 해요. 하지만 궁금하신 걸 물어보신다면 답변해 드리겠습니다. 다들 좋은 결과 있으시길 바랍니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;도움이 되셨다면 밑에 공감 하트 한 번씩만 눌러주세요. 하트는 저에게 큰 힘이 됩니다.&lt;/p&gt;</description>
      <category>Computer Science</category>
      <category>2017년 정보처리기사</category>
      <category>정보처리기사</category>
      <category>정보처리기사 실기</category>
      <category>정보처리기사 필기</category>
      <category>합격</category>
      <category>합격 수기</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/58</guid>
      <comments>https://ssoonidev.tistory.com/58#entry58comment</comments>
      <pubDate>Sat, 24 Jun 2017 22:45:52 +0900</pubDate>
    </item>
    <item>
      <title>[NodeJS] 라즈베리파이 LED 제어하기</title>
      <link>https://ssoonidev.tistory.com/57</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(0, 51, 153);&quot;&gt;1. LED 회로 구성하기&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;이전 포스트에서는 NodeJS의 serialport 패키지를 이용해서 아두이노에 연결된 센서의 값을 받아오는 과정을 진행했어요. 이번에는 &lt;b&gt;&lt;u&gt;라즈베리파이의 GPIO에 LED와 버튼을 연결하고 버튼을 누르면&amp;nbsp;LED가 켜지고 꺼지는 기능&lt;/u&gt;&lt;/b&gt;을 구현해 보겠습니다. 물론 NodeJS를 이용해서 말이죠!&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;우선 LED와 버튼 두 개를 이용해서 회로를 간단하게 구현을 해보려구 해요. &lt;b&gt;&lt;u&gt;버튼 하나는 On 버튼으로 다른 버튼은 Off 버튼으로 사용&lt;/u&gt;&lt;/b&gt;하면 끄고 켜고 기능을 할 수 있겠죠?&amp;nbsp;물론 버튼 하나 만으로도 구현이 가능해요. 근데 아두이노나 라즈베리파이에 쓰는 버튼은&amp;nbsp;&lt;b&gt;&lt;u&gt;한 번 누르면 한번으로 인식하지 않고 여러 번으로 인식&lt;/u&gt;&lt;/b&gt;해서 그냥 두 개를 씁니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2551503C590DC35631&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2551503C590DC35631&quot; width=&quot;400&quot; height=&quot;422&quot; filename=&quot;그림3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;그림과 같이&amp;nbsp;구성합니다. 매번 느끼지만 라즈베리파이의 GPIO에..&amp;nbsp;좀.. 아두이노처럼 GPIO 위치를 기판에 새겨 주면 좋겠다는 생각을 매번 해요. 지금은 아무 코드도 작성하지 않았으니까, 버튼을 눌러도 아무런 반응이 없을 거예요. 이제 코드를 작성해서 버튼에 따라서 LED가 켜지고 꺼지도록 만들어 볼게요!!&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(0, 51, 153);&quot;&gt;2. onoff 패키지 사용하기&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;라즈베리파이로 프로젝트를 진행하는 사람이 많아져서 그런가요?? 이런 패키지들이 생각보다 많네요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;우선 onoff 패키지를 설치합니다. 프로젝트 파일들이 있는 경로에서 아래와 같이 명령어를 입력합니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;npm install onoff --save&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;설치가 완료된 후 이제 소스코드를 작성해 봅시다. LED는 18번에 ON 버튼은 24번, OFF 버튼을 23번에 연결한 후 작성된 코드입니다. 여러분이 하실 때에는 연결하신 번호대로 작성해주시면 됩니다.&lt;/p&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-2538641355026813&quot;
     data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#FFFFFF; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#300A24; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#FFFFFF; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#AEAEAE&quot;&gt;//&amp;nbsp;GPIO&amp;nbsp;:&amp;nbsp;LED&amp;nbsp;제어&amp;nbsp;부분&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;var&lt;/span&gt;&amp;nbsp;GPIO&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;require(&lt;span style=&quot;color:#039A03&quot;&gt;'onoff'&lt;/span&gt;).Gpio,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LED&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;new&lt;/span&gt;&amp;nbsp;GPIO(&lt;span style=&quot;color:#8CC5FB&quot;&gt;18&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#039A03&quot;&gt;'out'&lt;/span&gt;),&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ON_sw&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;new&lt;/span&gt;&amp;nbsp;GPIO(&lt;span style=&quot;color:#8CC5FB&quot;&gt;24&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#039A03&quot;&gt;'in'&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#039A03&quot;&gt;'both'&lt;/span&gt;),&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OFF_sw&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;new&lt;/span&gt;&amp;nbsp;GPIO(&lt;span style=&quot;color:#8CC5FB&quot;&gt;23&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#039A03&quot;&gt;'in'&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#039A03&quot;&gt;'both'&lt;/span&gt;);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;ON_sw.watch(&lt;span style=&quot;color:#F753E8&quot;&gt;function&lt;/span&gt;(err,&amp;nbsp;state){&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;if&lt;/span&gt;(state&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;1&lt;/span&gt;){&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LED.writeSync(&lt;span style=&quot;color:#8CC5FB&quot;&gt;1&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;});&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;OFF_sw.watch(&lt;span style=&quot;color:#F753E8&quot;&gt;function&lt;/span&gt;(err,&amp;nbsp;state){&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;if&lt;/span&gt;(state&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;1&lt;/span&gt;){&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LED.writeSync(&lt;span style=&quot;color:#8CC5FB&quot;&gt;0&lt;/span&gt;);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;});&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;작성을 한 후 실행을 하면 파란 버튼을 누르면 불이 꺼지고 빨간 버튼을 누르면 불이 켜지는 걸 확인했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;스마트 스위치 같은 것을 실습하는 데에 좋은 패키지가 아닐까 생각합니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Computer Science</category>
      <category>GPIO</category>
      <category>LED</category>
      <category>LED 제어</category>
      <category>nodejs</category>
      <category>라즈베리파이</category>
      <category>버튼</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/57</guid>
      <comments>https://ssoonidev.tistory.com/57#entry57comment</comments>
      <pubDate>Sat, 6 May 2017 21:58:51 +0900</pubDate>
    </item>
    <item>
      <title>[NodeJS] 시리얼 통신으로 아두이노 센서 값 받기</title>
      <link>https://ssoonidev.tistory.com/56</link>
      <description>&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(5, 0, 153);&quot;&gt;1. 아두이노 - 센서 조립&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;요새 설계과목에 제출할 과제로 스마트 스위치를 만들고 있어요. 라즈베리파이2랑 아두이노, 조도센서를 이용해서 날이 너무 밝으면 불을 꺼주고, 날이 너무 어두우면 불을 켜주는 기능을 만들고 있는데 그러려면 &lt;b&gt;&lt;u&gt;아두이노에서 센서 값을 받은 다음 라즈베리파이로 전송하는 과정&lt;/u&gt;&lt;/b&gt;이 설계상 필요하더라고요. 라즈베리파이2가 웹서버로 NodeJS를 사용하고 있는데 설마.. &lt;b&gt;&lt;u&gt;시리얼 통신&amp;nbsp;패키지도 있나 했더니.. 정말 있네요&lt;/u&gt;&lt;/b&gt;.. node.. 당신은 도대체..&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;개발 보드&amp;nbsp;: 아두이노 나노, 조도 센서, 라즈베리파이2&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;OS : 라즈베리안 OS&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;언어 : &lt;b&gt;&lt;u&gt;NodeJS&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;(굳이 위의 개발보드와 OS가 아니더라도 가능합니다.&amp;nbsp;&lt;/b&gt;&lt;b&gt;저도 Window에서 Test 후 파이로 옮겨서 수행했습니다.)&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/24340C4759068F8530&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F24340C4759068F8530&quot; width=&quot;400&quot; height=&quot;264&quot; filename=&quot;temtschematics.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;우선 조도 센서를 아두이노와 연결해요. 조도 센서는 &lt;b&gt;&lt;u&gt;TEMT6000 센서&lt;/u&gt;&lt;/b&gt;를 사용했습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;VCC - 5V,&amp;nbsp;GND - GND, OUT - ANALOG 중 하나&lt;/u&gt;&lt;/b&gt;에 점핑 선을 연결해줍니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;아두이노 나노는 A0, A1 등등 A로 시작하는 곳이 ANALOG에요.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;다른 조도 센서를 사용하시는 분이라면 제품 번호를 확인하시고 연결하세요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 640px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2366E04F590693AD36&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2366E04F590693AD36&quot; width=&quot;640&quot; height=&quot;202&quot; filename=&quot;시리얼1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-2538641355026813&quot;
     data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;그리고 아두이노를 라즈베리파이에 USB 선을 이용해서 연결해줍니다. 그 후 SSH로 접속한&amp;nbsp;후 &amp;nbsp;&lt;b&gt;&lt;u&gt;dmesg | tail 명령어&lt;/u&gt;&lt;/b&gt;를 입력해 USB 포트 번호를 확인합니다. 저는 &lt;b&gt;&lt;u&gt;ttyUSB0에 아두이노 나노가 있다&lt;/u&gt;&lt;/b&gt;고 하네요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 398px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/255E7649590695CC01&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F255E7649590695CC01&quot; width=&quot;398&quot; height=&quot;330&quot; filename=&quot;시리얼2.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;Windows&amp;nbsp;환경이나 리눅스 쉘 커맨드에 익숙하지 않다면 연결 후 아두이노 스케치를 실행&lt;/u&gt;&lt;/b&gt;해서 USB 포트 정보를 확인할 수도 있습니다. 마찬가지로 ttyUSB0에 연결되어 있음을 알 수 있죠. 이 정보는 이어서 소개할 serialport 패키지를 사용하는데 필요하니까 반드시 알아 두시는 게 좋아요!!&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(5, 0, 153);&quot;&gt;2. serialport 패키지 사용하기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;serialport는 웹서버로 주로 사용하는 NodeJS에서 센서 값을 읽고 기기를 제어할 수 있게 하는 패키지에요!!&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;우선 nodeJS 프로젝트를 만든 후 해당 경로에서 리눅스 명령어 쉘(Windows에서는 cmd)&amp;nbsp;아래의 명령어로 &lt;b&gt;&lt;u&gt;serialport 패키지를 설치&lt;/u&gt;&lt;/b&gt;합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;npm install serialport --save&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;설치가 완료되면 자바 스크립트 파일을 하나 만든 후 아래와 같이 코드를 작성해 봅시다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#FFFFFF; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#300A24; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding: 6px; border-right: 2px solid rgb(79, 79, 79); height: 239px;&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px; height: 239px;&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#FFFFFF; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;var&lt;/span&gt;&amp;nbsp;SerialPort&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;require(&lt;span style=&quot;color:#039A03&quot;&gt;'serialport'&lt;/span&gt;),&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;portName&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#039A03&quot;&gt;'/dev/ttyUSB0'&lt;/span&gt;,&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sp&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;new&lt;/span&gt;&amp;nbsp;SerialPort(portName),&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sensorVal&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;0&lt;/span&gt;;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;sp.on(&lt;span style=&quot;color:#039A03&quot;&gt;'open'&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;function&lt;/span&gt;(){&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#7AA5DB&quot;&gt;console&lt;/span&gt;.log(&lt;span style=&quot;color:#039A03&quot;&gt;'Serial&amp;nbsp;Port&amp;nbsp;OPEN'&lt;/span&gt;);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sp.on(&lt;span style=&quot;color:#039A03&quot;&gt;'data'&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;function&lt;/span&gt;(data){&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#7AA5DB&quot;&gt;console&lt;/span&gt;.log(&lt;span style=&quot;color:#039A03&quot;&gt;&quot;Light&amp;nbsp;Sensor&amp;nbsp;Value&amp;nbsp;:&amp;nbsp;&quot;&lt;/span&gt;,&amp;nbsp;data[&lt;span style=&quot;color:#8CC5FB&quot;&gt;0&lt;/span&gt;]);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;    });&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;});&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px; height: 239px;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;시리얼 포트를 통해 &lt;b&gt;&lt;u&gt;아두이노에서 송신된 데이터를 수신하는 코드&lt;/u&gt;&lt;/b&gt;에요. 성공적으로 수신하면&amp;nbsp;화면에서 조도 센서 값을 읽을 수가 있어요. 그리고 이제 아두이노 스케치를 이용해서 아두이노에서 시리얼 통신으로 센서 값을 보내는 코드를 작성해 봅시다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#FFFFFF; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#300A24; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#FFFFFF; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;void&lt;/span&gt;&amp;nbsp;setup()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#AEAEAE&quot;&gt;//&amp;nbsp;전송&amp;nbsp;속도를&amp;nbsp;설정해줍니다.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Serial.&lt;span style=&quot;color:#7AA5DB&quot;&gt;begin&lt;/span&gt;(&lt;span style=&quot;color:#8CC5FB&quot;&gt;9600&lt;/span&gt;);&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;void&lt;/span&gt;&amp;nbsp;loop()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;{&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#7AA5DB&quot;&gt;int&lt;/span&gt;&amp;nbsp;val;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#AEAEAE&quot;&gt;//&amp;nbsp;조도&amp;nbsp;센서의&amp;nbsp;측정된&amp;nbsp;값을&amp;nbsp;읽어옵니다.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#AEAEAE&quot;&gt;//&amp;nbsp;센서에&amp;nbsp;연결한&amp;nbsp;아날로그&amp;nbsp;포트&amp;nbsp;번호를&amp;nbsp;매개변수로&amp;nbsp;지정합니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#AEAEAE&quot;&gt;//&amp;nbsp;저는&amp;nbsp;A1에&amp;nbsp;연결하였으므로&amp;nbsp;1번을&amp;nbsp;사용했습니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;val&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;analogRead(&lt;span style=&quot;color:#8CC5FB&quot;&gt;1&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#AEAEAE&quot;&gt;//&amp;nbsp;조건문은&amp;nbsp;무시하셔도&amp;nbsp;됩니다.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#AEAEAE&quot;&gt;//&amp;nbsp;Serial.write(val)을&amp;nbsp;통해&amp;nbsp;시리얼&amp;nbsp;통신을&amp;nbsp;한다는&amp;nbsp;점만&amp;nbsp;기억하시면&amp;nbsp;됩니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;if&lt;/span&gt;(val&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;40&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Serial.write(val);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;if&lt;/span&gt;(val&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;&amp;lt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;5&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Serial.write(val);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;delay(&lt;span style=&quot;color:#8CC5FB&quot;&gt;1000&lt;/span&gt;);&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 524px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/252FF1355906A89324&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F252FF1355906A89324&quot; width=&quot;524&quot; height=&quot;240&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;센서 값을 시리얼 통신을 통해서 성공적으로 전송받을 수 있는 것을 확인하였습니다. 다시 말씀드리지만 이것은 &lt;b&gt;&lt;u&gt;NodeJS를 이용해서 작성된 코드&lt;/u&gt;&lt;/b&gt;입니다. 물론 NodeJS 외에도 다른 언어를 이용해서 라즈베리파이와 아두이노 간의 시리얼 통신이 가능합니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt;도움이 되셨나요?? 아래에 하트 버튼은 저에게 큰 힘이 됩니다. 즐거운 하루되세요!!&amp;nbsp;&lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;</description>
      <category>Computer Science</category>
      <category>nodejs</category>
      <category>SerialPort</category>
      <category>TEMT6000 조도센서</category>
      <category>라즈베리파이</category>
      <category>센서</category>
      <category>센서값 받기</category>
      <category>시리얼 통신</category>
      <category>아두이노</category>
      <category>아두이노 나노</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/56</guid>
      <comments>https://ssoonidev.tistory.com/56#entry56comment</comments>
      <pubDate>Mon, 1 May 2017 12:20:48 +0900</pubDate>
    </item>
    <item>
      <title>[Data Mining] 의사 결정 트리</title>
      <link>https://ssoonidev.tistory.com/54</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: rgb(0, 51, 153);&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;1. 의사 결정 트리(Decison Tree)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;아키네이터&lt;/b&gt;라는 게임해보셨나요?? 이상한 요술 램프 지니같이 생긴 캐릭터가 여러 가지를 물으면서 사용자가 생각하는 내용을 맞추는 게임인데요. 짜증 날 정도로 잘 맞춰서 나중에는 엄청 말도 안 되는 걸&amp;nbsp;생각해서 정신 승리를 추구하려는 주변인+나 자신을 많이 봤습니다.&amp;nbsp;(저도 그러면서 컴퓨터 따위가 감히 내 생각을 맞출 수가 없지 하고 만족했지만...)&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;저의 조심스러운 추측이지만 아키네이터는&amp;nbsp;&lt;b&gt;의사 결정 트리&lt;/b&gt;를 사용한 게 아닐까 생각이 듭니다. 의사 결정 트리는 일종의 분류기인데 &lt;b&gt;&lt;u&gt;트리를 내려가면서 다양한 질문을 받게 됩니다. 그리고 그 질문의 응답에 따라 어떤 분류에 속하는지를&lt;/u&gt;&lt;/b&gt;&amp;nbsp;결론을 내려줍니다. &lt;b&gt;&lt;span style=&quot;color: rgb(0, 51, 153);&quot;&gt;의사 결정 트리의 장점은 분류 결과를 사람이 쉽게 이해할 수 있다&lt;/span&gt;&lt;/b&gt;는 겁니다. 왜냐하면 의사 결정 트리는 사람이 생각하는&amp;nbsp;과정과 매우 유사하기 때문이죠. 예를 하나 봅시다.&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2215D94758F606B927&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2215D94758F606B927&quot; width=&quot;400&quot; height=&quot;465&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;만약 여러분이 소개팅 주선자이고 소개팅 상대를 물어보는 친구가 있다고 생각합시다&lt;/b&gt;. 소개팅을 받는 친구는 아주 설렌&amp;nbsp;마음에 자기의 이상형에 맞는지 여러분께 계속 물어볼 겁니다. &lt;b&gt;&lt;u&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;키는 큰지 돈은 많은지 차는 있는지 잘 생겼는지 성격이 어떤지 말이죠. &lt;/span&gt;&lt;/u&gt;&lt;/b&gt;질문과 답이 오가는 과정에서 친구는 &lt;b&gt;&lt;u&gt;내 이상형이다&amp;nbsp;또는 내 이상형이 아니&lt;/u&gt;&lt;/b&gt;라고 결정을 내리게 됩니다. 그 결정과정을 보여주는 것이&amp;nbsp;위의 그림입니다. 그림을&amp;nbsp;보았을 때 어떠한 과정으로 분류를 해나가는지를 쉽게 알 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;의사 결정 트리의 단점은&lt;b&gt; 과적합(Overfitting)&lt;/b&gt;이 되기 쉽다는 점입니다&lt;b&gt;.&lt;/b&gt;&amp;nbsp;과적합은 훈련 데이터 내에서는 완전 딱 들어맞는 형태를 보여주지만 새로운 데이터에 대해서 예측 결과가 현저히 떨어지는 현상을 의미합니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(0, 51, 153); font-size: 24px; font-weight: bold;&quot;&gt;2. 정보 이득(Infomation Gain)&lt;/span&gt;&lt;/p&gt;&lt;hr class=&quot;tx-hr-border-3&quot; style=&quot;display:block; border: black 0 none; border-top: black 1px dotted; height: 1px&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;정보 이득은 어떤 순서로 트리를 구성하는 것이 효과적인지를 선정하는 지표로 사용합니다. 위에 소개팅의 예를 들어서 정보 이득의 간단한 개요를 설명해 보겠습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/223B454F58F6124C2B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F223B454F58F6124C2B&quot; width=&quot;580&quot; height=&quot;338&quot; filename=&quot;그림2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;다시 여러분의 친구에게 주변에 좋은 사람을 소개팅하려고 합니다. 위에서 예를 들었던 거와 다른 순서로 질문을 합니다. 키가 큰지 노래를 잘 하는지 말이죠. 전부 다 마음에 드는 상황에서 마지막으로 &lt;b&gt;&lt;u&gt;남자냐고 물었더니 아니라고 대답해 버린 주선자..&lt;/u&gt;&lt;/b&gt; 제 친구였으면 아마 반 죽여 버렸을 겁니다. 처음에 남자인지 물어봤으면 그 아래의 내용은 질문할 필요조차 없었는데 말입니다.&lt;b&gt;&amp;nbsp;&lt;u&gt;이처럼 질문들이 어떤 것이 더욱 결정적이고 변별력 있는지를 수치적으로 계산하는 것이 정보 이득입니다.&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;정보 이득을 계산하기 위해서는 &lt;b&gt;섀넌 엔트로피&lt;/b&gt;라는 개념이 필요합니다. 일반적으로 물리나 수학을 공부하신 분이라면 엔트로피라는 개념이 무질서도를 의미한다는 것을 의미한다는 걸 알고 있을 겁니다. 만약 엔트로피가 크다면 무질서한 정도가 크다는 걸 의미합니다. &lt;b&gt;&lt;u&gt;이해가 안 된다면 여러분이 지금 제멋대로 막 흩어 놓은 책상&lt;/u&gt;&lt;/b&gt;을 보시면 됩니다.&lt;b&gt;(정말 지저분하죠?? 엔트로피가 크다는 겁니다.)&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;섀넌 엔트로피는 비슷한 의미로 생각하시면 됩니다. &lt;b&gt;&lt;u&gt;섀넌 엔트로피가 크다는 것은 데이터가 정렬이 아주 안 된 상태를 의미하고 반대로 작다면 데이터가 정렬이 잘 되어 있는 상태&lt;/u&gt;&lt;/b&gt;를 의미합니다. 살짝 멀미가 나시겠지만 수식으로 섀넌 엔트로피를 확인해 봅시다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2130784758F6C09628&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2130784758F6C09628&quot; width=&quot;400&quot; height=&quot;182&quot; filename=&quot;그림3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;새넌 엔트로피는 위의 식으로 정의합니다. 그림에도 나와 있지만 p(x) 값이 크면 클수록 로그 함수의 결과가 작아짐을 알 수 있습니다. l(x) 값은 항상 음수이기 때문에 H(x)를 구할 때에 부호를 변경하기 위해 음수를 곱해주는 모습도 볼 수 있습니다.&amp;nbsp;이어서 정보 이득을 구하는 수식도 한꺼번에 계산하는 식을 살펴봅시다.&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/21077A4D58F61C4116&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F21077A4D58F61C4116&quot; width=&quot;400&quot; height=&quot;151&quot; filename=&quot;그림4.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/264FB04858F6C2C32C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F264FB04858F6C2C32C&quot; width=&quot;400&quot; height=&quot;192&quot; filename=&quot;그림6.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;간단한 예제도 같이 만들어 보았습니다. 한 사람을 대상으로 이상형의 조건에 따라 질문을 하고 그에 대한 답을 얻는 과정입니다. 우선 전체 엔트로피 H(S)를 구하는 과정입니다. 최종 결과인 이상형인 확률과 이상률이 아닐 확률을 구합니다. 각각 4개 중에 2개씩 차지하니까 확률 p(x)는 1/2,&amp;nbsp;위의 섀넌 엔트로피 공식에 집어넣으니 1이 됩니다.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;이제는 정보 이득을 한번 구해 보겠습니다. 어떤 질문을 먼저 할까 고민하다가 &quot;&lt;b&gt;잘 생겼어?&quot;라는 질문을 먼저 했을 경우에 얼마나 정보이득&lt;/b&gt;을 보는지 볼까요?&lt;/p&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-2538641355026813&quot;
     data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/264AD15058F6C98002&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F264AD15058F6C98002&quot; width=&quot;400&quot; height=&quot;222&quot; filename=&quot;그림7.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;간단히 설명하면 &lt;b&gt;&lt;u&gt;잘생겼다는 속성을 가진 데이터는 총 3개이며 그중에 이상형인 확률과 아닐 확률을 통해 섀넌 엔트로피를 구합니다&lt;/u&gt;&lt;/b&gt;. 못생겼다도 마친가지로 진행하면 되겠죠?? 그럼 이번엔 노래를 잘하는가에 대한 질문을 먼저 했을 때 정보 이득을 구해 봅시다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2744B94D58F6CC6E13&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2744B94D58F6CC6E13&quot; width=&quot;400&quot; height=&quot;226&quot; filename=&quot;그림8.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;똑같은 방법을 적용해서 계산을 했더니 잘 생겼다에 대한 질문의 결과보다 정보 이득이 크다는 것을 알 수 있어요. 그 말은 &lt;b&gt;&lt;u&gt;&quot;노래 잘해?&quot;라는 질문이 &quot;잘 생겼어?&quot;라는 질문보다 변별력이 크다&lt;/u&gt;&lt;/b&gt;는 것을 의미해요. 따라서 트리를 작성할 때 제일 먼저 &quot;노래 잘해?&quot;를 먼저 물어보는 것이 좋겠네요.. 이처럼 정보 이득을 사용하면 질문의 순서를 정하는데 근거가 되어 줄 수 있어요.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(0, 51, 153); font-size: 24px; font-weight: bold;&quot;&gt;3. 구현(python)&lt;/span&gt;&lt;hr style=&quot;color: rgb(0, 51, 153); font-size: 24px; font-weight: bold;&quot;&gt;&lt;p style=&quot;color: rgb(0, 51, 153); font-size: 24px;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 16px;&quot;&gt;블로그를 방문하신 분들은 위의 이론들보다&lt;b&gt;&lt;i&gt;&lt;u&gt; 그래서 어떻게 구현하는데?&lt;/u&gt;&lt;/i&gt;&lt;/b&gt; 가 더욱 중요할 겁니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: rgb(0, 51, 153); font-size: 24px;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 16px;&quot;&gt;구현 순서는 섀넌 엔트로피와 정보 이득을 계산하여 트리를 구성하는 것까지 진행해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: rgb(0, 51, 153); font-size: 24px;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;섀넌 엔트로피 계산&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#FFFFFF; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#300A24; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#FFFFFF; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;from&lt;/span&gt;&amp;nbsp;math&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;import&lt;/span&gt;&amp;nbsp;log&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;def&lt;/span&gt;&amp;nbsp;shannonEntropy(dataSet):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#AEAEAE&quot;&gt;#&amp;nbsp;확률&amp;nbsp;계산할&amp;nbsp;때&amp;nbsp;분모로&amp;nbsp;들어가는&amp;nbsp;부분&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dataSize&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#7AA5DB&quot;&gt;len&lt;/span&gt;(dataSet)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#AEAEAE&quot;&gt;#&amp;nbsp;라벨별로&amp;nbsp;몇&amp;nbsp;개씩&amp;nbsp;있는&amp;nbsp;지&amp;nbsp;저장&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;labelCount&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;{}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;entropy&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;0.&lt;/span&gt;&lt;span style=&quot;color:#8CC5FB&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#AEAEAE&quot;&gt;#&amp;nbsp;데이터&amp;nbsp;집합&amp;nbsp;중&amp;nbsp;라벨&amp;nbsp;별로&amp;nbsp;몇&amp;nbsp;개씩&amp;nbsp;있는지&amp;nbsp;계산&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;for&lt;/span&gt;&amp;nbsp;dataLine&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;in&lt;/span&gt;&amp;nbsp;dataSet:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;curLabel&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;dataLine[&lt;span style=&quot;color:#F753E8&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#8CC5FB&quot;&gt;1&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;if&lt;/span&gt;&amp;nbsp;curLabel&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;not&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;in&lt;/span&gt;&amp;nbsp;labelCount.keys():&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;labelCount[curLabel]&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;labelCount[curLabel]&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#AEAEAE&quot;&gt;#&amp;nbsp;확률&amp;nbsp;계산&amp;nbsp;및&amp;nbsp;섀넌&amp;nbsp;엔트로피&amp;nbsp;계산&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;for&lt;/span&gt;&amp;nbsp;key&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;in&lt;/span&gt;&amp;nbsp;labelCount:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prop&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;float(labelCount[key])&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;/&lt;/span&gt;&amp;nbsp;dataSize&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;entropy&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;prop&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;*&lt;/span&gt;&amp;nbsp;log(prop,&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;2&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;return&lt;/span&gt;&amp;nbsp;entropy&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;p&gt;&lt;b&gt;정보이득 계산&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#FFFFFF; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#300A24; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;30&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;31&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;32&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;33&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;34&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;35&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;36&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;37&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;38&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#FFFFFF; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#039A03&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#039A03&quot;&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#039A03&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;잘&amp;nbsp;생김,&amp;nbsp;노래&amp;nbsp;잘부름&amp;nbsp;등등&amp;nbsp;속성&amp;nbsp;중에서&amp;nbsp;하나를&amp;nbsp;선택합니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#039A03&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;그&amp;nbsp;속성&amp;nbsp;값을&amp;nbsp;제외한&amp;nbsp;나머지&amp;nbsp;값들을&amp;nbsp;결과로&amp;nbsp;반환하는&amp;nbsp;함수입니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#039A03&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(정보이득을&amp;nbsp;계산하기&amp;nbsp;위함)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#039A03&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#039A03&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;def&lt;/span&gt;&amp;nbsp;pickResult(dataSet,&amp;nbsp;index,&amp;nbsp;value):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;[]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;for&lt;/span&gt;&amp;nbsp;dataLine&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;in&lt;/span&gt;&amp;nbsp;dataSet:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;if&lt;/span&gt;&amp;nbsp;dataLine[index]&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;value:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tempVec&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;dataLine[:index]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tempVec.extend(dataLine[index&lt;span style=&quot;color:#F753E8&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#8CC5FB&quot;&gt;1&lt;/span&gt;:])&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result.append(tempVec)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;return&lt;/span&gt;&amp;nbsp;result&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#AEAEAE&quot;&gt;#&amp;nbsp;어떤&amp;nbsp;질문을&amp;nbsp;먼저&amp;nbsp;해야&amp;nbsp;효율적일지&amp;nbsp;선별하는&amp;nbsp;과정&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;def&lt;/span&gt;&amp;nbsp;getBestInfoGainFeat(dataSet):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;baseEntropy&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;shannonEntropy(dataSet)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bestInfoGain&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;0.&lt;/span&gt;&lt;span style=&quot;color:#8CC5FB&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;index&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numOfFeat&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#7AA5DB&quot;&gt;len&lt;/span&gt;(dataSet[&lt;span style=&quot;color:#8CC5FB&quot;&gt;0&lt;/span&gt;])&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;-&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;for&lt;/span&gt;&amp;nbsp;i&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#7AA5DB&quot;&gt;range&lt;/span&gt;(numOfFeat):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;featValueSet&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;set([value[i]&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;for&lt;/span&gt;&amp;nbsp;value&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;in&lt;/span&gt;&amp;nbsp;dataSet])&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;newEntropy&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;0.&lt;/span&gt;&lt;span style=&quot;color:#8CC5FB&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#AEAEAE&quot;&gt;#&amp;nbsp;정보이득을&amp;nbsp;구하는&amp;nbsp;과정&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;for&lt;/span&gt;&amp;nbsp;element&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;in&lt;/span&gt;&amp;nbsp;featValueSet:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;subDataSet&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;pickResult(dataSet,&amp;nbsp;i,&amp;nbsp;element)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prop&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#7AA5DB&quot;&gt;len&lt;/span&gt;(subDataSet)&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;/&lt;/span&gt;&amp;nbsp;float(&lt;span style=&quot;color:#7AA5DB&quot;&gt;len&lt;/span&gt;(dataSet))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;newEntropy&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;prop&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;*&lt;/span&gt;&amp;nbsp;shannonEntropy(subDataSet)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;infoGain&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;baseEntropy&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;-&lt;/span&gt;&amp;nbsp;newEntropy&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;if&lt;/span&gt;&amp;nbsp;bestInfoGain&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;&amp;lt;&lt;/span&gt;&amp;nbsp;infoGain:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bestInfoGain&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;infoGain&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;index&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;i&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;return&lt;/span&gt;&amp;nbsp;index&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style=&quot;color: rgb(0, 0, 0); font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; color: rgb(0, 0, 0); font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;b&gt;트리 생성&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#FFFFFF; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#300A24; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #4f4f4f&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#aaa; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;30&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;31&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;32&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#FFFFFF; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#AEAEAE&quot;&gt;#&amp;nbsp;다수결&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;def&lt;/span&gt;&amp;nbsp;majority(dataSet):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;classCount&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;{}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;for&lt;/span&gt;&amp;nbsp;data&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;in&lt;/span&gt;&amp;nbsp;dataSet:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;if&lt;/span&gt;&amp;nbsp;data&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;not&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;in&lt;/span&gt;&amp;nbsp;classCount.keys():&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;classCount[data]&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;classCount[data]&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sortedClassCount&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;sorted(classCount,key&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;operator.itemgetter(&lt;span style=&quot;color:#8CC5FB&quot;&gt;1&lt;/span&gt;),&amp;nbsp;reversed&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;True)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;return&lt;/span&gt;&amp;nbsp;sortedClassCount[&lt;span style=&quot;color:#8CC5FB&quot;&gt;0&lt;/span&gt;][&lt;span style=&quot;color:#8CC5FB&quot;&gt;0&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;def&lt;/span&gt;&amp;nbsp;createTree(dataSet,&amp;nbsp;labels):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;classifyList&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;[data[&lt;span style=&quot;color:#F753E8&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#8CC5FB&quot;&gt;1&lt;/span&gt;]&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;for&lt;/span&gt;&amp;nbsp;data&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;in&lt;/span&gt;&amp;nbsp;dataSet]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#AEAEAE&quot;&gt;#&amp;nbsp;정지조건&amp;nbsp;1.&amp;nbsp;모든&amp;nbsp;라벨&amp;nbsp;값이&amp;nbsp;동일한&amp;nbsp;경우&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;if&lt;/span&gt;&amp;nbsp;classifyList.count(classifyList[&lt;span style=&quot;color:#8CC5FB&quot;&gt;0&lt;/span&gt;])&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#7AA5DB&quot;&gt;len&lt;/span&gt;(classifyList):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;return&lt;/span&gt;&amp;nbsp;classifyList[&lt;span style=&quot;color:#8CC5FB&quot;&gt;0&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#AEAEAE&quot;&gt;#&amp;nbsp;정지조건&amp;nbsp;2.&amp;nbsp;더&amp;nbsp;이상&amp;nbsp;분류할&amp;nbsp;속성이&amp;nbsp;없는&amp;nbsp;경우&amp;nbsp;-&amp;gt;&amp;nbsp;다수결로&amp;nbsp;결정&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#7AA5DB&quot;&gt;len&lt;/span&gt;(dataSet[&lt;span style=&quot;color:#8CC5FB&quot;&gt;0&lt;/span&gt;])&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#8CC5FB&quot;&gt;1&lt;/span&gt;:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;return&lt;/span&gt;&amp;nbsp;majority(classifyList)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bestIndex&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;getBestInfoGainFeat(dataSet)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bestIndexLabel&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;labels[bestIndex]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tree&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;{bestIndexLabel&amp;nbsp;:&amp;nbsp;{}}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;del&lt;/span&gt;(labels[bestIndex])&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;featValue&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;set([example[bestIndex]&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;for&lt;/span&gt;&amp;nbsp;example&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;in&lt;/span&gt;&amp;nbsp;dataSet])&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;for&lt;/span&gt;&amp;nbsp;value&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;in&lt;/span&gt;&amp;nbsp;featValue:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;subLabels&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;labels[:]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tree[bestIndexLabel][value]&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;=&lt;/span&gt;&amp;nbsp;createTree(pickResult(dataSet,&amp;nbsp;bestIndex,&amp;nbsp;value),&amp;nbsp;subLabels)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#F753E8&quot;&gt;return&lt;/span&gt;&amp;nbsp;Tree&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(79, 79, 79);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(79, 79, 79); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; color: rgb(0, 0, 0); font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Data Mining</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/54</guid>
      <comments>https://ssoonidev.tistory.com/54#entry54comment</comments>
      <pubDate>Wed, 19 Apr 2017 21:18:37 +0900</pubDate>
    </item>
    <item>
      <title>[Python]pyplot으로 데이터 가시화하기</title>
      <link>https://ssoonidev.tistory.com/52</link>
      <description>&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;1. pyplot&lt;/span&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;&amp;nbsp;시작하기&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;python에서&amp;nbsp;데이터 가시화를 위한 라이브러리로&lt;b&gt; matplotlib.pyplot&lt;/b&gt;을 사용한다. 파이썬이 데이터를 처리하는 데에는 일가견이 있는 언어인데 가시화 라이브러리도 있다니.. (R에만 있는 줄 알았는데)&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;일단 저는 윈도우에서&amp;nbsp;PyCharm을 설치해서 사용하기 때문에 윈도우에서 설치하는 과정만 소개하겠습니다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(254, 254, 184); background-color: rgb(254, 254, 184); padding: 10px;&quot;&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;a href=&quot;https://sourceforge.net/projects/matplotlib/files/matplotlib/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://sourceforge.net/projects/matplotlib/files/matplotlib/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;위의 URL에서 사용중인 파이썬의 버전에 맞춰서 다운받은 다음 실행하시면 됩니다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;2. 그래프 그리기 : plot()&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(0, 34, 102);&quot;&gt;간단한 직선 그리기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;그래프를 그릴 때 필요한 것은 &lt;b&gt;X축과 Y축,&amp;nbsp;데이터&lt;/b&gt;겠죠??&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;일단 처음 그려보는거니까 간단한 걸로 한번 그려 봅시다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-2538641355026813&quot;
     data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#fafafa; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #e5e5e5&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#666; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;import&lt;/span&gt;&amp;nbsp;matplotlib.pyplot&amp;nbsp;as&amp;nbsp;plt&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;y좌표&amp;nbsp;데이터만&amp;nbsp;있는&amp;nbsp;경우&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.plot([&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;2&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;3&lt;/span&gt;])&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;(x,y)&amp;nbsp;좌표를&amp;nbsp;둘&amp;nbsp;다&amp;nbsp;사용할&amp;nbsp;경우&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.plot([&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;2&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;3&lt;/span&gt;],[&lt;span style=&quot;color:#0099cc&quot;&gt;2&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;4&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;6&lt;/span&gt;])&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;axis([x축&amp;nbsp;시작,&amp;nbsp;x축&amp;nbsp;끝,&amp;nbsp;y축&amp;nbsp;시작,&amp;nbsp;y축&amp;nbsp;끝])&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.axis([&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;4&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;7&lt;/span&gt;])&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.show()&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(229, 229, 229); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2321DB4058ECC39107&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2321DB4058ECC39107&quot; width=&quot;400&quot; height=&quot;336&quot; filename=&quot;그림1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;첫 번째 그린 그래프가 파란색 선이에요. Y좌표만 입력받았을 경우에는 축의 시작점 부터 1씩 증가하는 꼴로&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;좌표가 자동으로 매칭되요.&lt;span style=&quot;color: rgb(9, 0, 255);&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(34, 116, 28);&quot;&gt;&lt;span style=&quot;color: rgb(102, 153, 255);&quot;&gt;plot([1,2,3])의 경우에는, 따라서, (0,1), (1,2), (2,3)&lt;/span&gt;&lt;span style=&quot;color: rgb(102, 153, 255);&quot;&gt;을 이은 선&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;이 그려지는 거죠.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;두 번째 주황색 그래프는 (X, Y) 좌표를 직접 입력한 경우에요. 앞의 리스트에는 X축의 좌표,&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;뒤에는 Y축의 좌표로 사용해요. 따라서 &lt;b&gt;&lt;span style=&quot;color: rgb(34, 116, 28);&quot;&gt;&lt;span style=&quot;color: rgb(102, 153, 255);&quot;&gt;plot([1,2,3],[2,4,6])은 (1,2), (2,4), (3,6)을 이은 &lt;/span&gt;&lt;span style=&quot;color: rgb(102, 153, 255);&quot;&gt;선&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;을 그리게 되죠.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;axis는 화면에 보여줄 축의 최대 값과 최소&amp;nbsp;값을 지정하는 함수&lt;/b&gt;로 주석에서 보셨듯이,&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;이 그래프의 X축은 0~4 까지 Y축은 0 ~ 7까지로 &amp;nbsp;설정된 것을 그래프를 통해서도 확인이 가능할 거에요.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;그리고 &lt;b&gt;그래프를 화면에 보여주는 show()함수&lt;/b&gt;를 사용하는 것으로 마무리!!!&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(0, 34, 102);&quot;&gt;이쁘게 그리고 싶어요..&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;plot에는 다양한 옵션들이 있어요. 그래프 색깔을 지정할 수 있는 옵션과 선의 스타일도 지정하는 옵션도&amp;nbsp;있어요. 저는 그 중에서 몇가지 종류만 사용해 보겠습니다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#fafafa; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #e5e5e5&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#666; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;import&lt;/span&gt;&amp;nbsp;matplotlib.pyplot&amp;nbsp;as&amp;nbsp;plt&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;import&lt;/span&gt;&amp;nbsp;numpy&amp;nbsp;as&amp;nbsp;np&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;x&amp;nbsp;좌표는&amp;nbsp;0부터&amp;nbsp;0.01씩&amp;nbsp;더해져&amp;nbsp;최대&amp;nbsp;5까지&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;x&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;np.arange(&lt;span style=&quot;color:#0099cc&quot;&gt;0.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;5.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;0.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;01&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;y&amp;nbsp;=&amp;nbsp;x^2&amp;nbsp;그래프&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.plot(x,&amp;nbsp;x&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;2&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#63a35c&quot;&gt;'r--'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;y&amp;nbsp;=&amp;nbsp;2^x&amp;nbsp;그래프&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.plot(x,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;x,&amp;nbsp;&lt;span style=&quot;color:#63a35c&quot;&gt;'b'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.axis([&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;6&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;40&lt;/span&gt;])&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.show()&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(229, 229, 229); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/261FE63C58ECC9981B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F261FE63C58ECC9981B&quot; width=&quot;400&quot; height=&quot;339&quot; filename=&quot;그림2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;table class=&quot;txc-table&quot; width=&quot;405&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; style=&quot;border: none; border-collapse: collapse; width: 405px;&quot; 맑은=&quot;&quot; 고딕&quot;,=&quot;&quot; sans-serif;font-size:16px&quot;=&quot;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;width: 140px; height: 23px; border-width: 1px; border-style: solid; border-color: rgb(95, 142, 239) rgb(209, 223, 250) rgb(95, 142, 239) rgb(95, 142, 239); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;r&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 128px; height: 23px; border-bottom: 1px solid rgb(95, 142, 239); border-right: 1px solid rgb(209, 223, 250); border-top: 1px solid rgb(95, 142, 239); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;빨강&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 128px; height: 23px; border-bottom: 1px solid rgb(95, 142, 239); border-right: 1px solid rgb(209, 223, 250); border-top: 1px solid rgb(95, 142, 239); background-color: transparent; color: rgb(0, 0, 0);&quot; colspan=&quot;1&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;--&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 143px; height: 23px; border-bottom: 1px solid rgb(95, 142, 239); border-right: 1px solid rgb(95, 142, 239); border-top: 1px solid rgb(95, 142, 239); background-color: transparent; color: rgb(0, 0, 0);&quot; colspan=&quot;1&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;점선&amp;nbsp;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 140px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); border-left: 1px solid rgb(95, 142, 239); background-color: rgb(231, 239, 250); color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;b&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 128px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: rgb(231, 239, 250); color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;파랑&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 128px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: rgb(231, 239, 250); color: rgb(0, 0, 0);&quot; colspan=&quot;1&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;o&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 143px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(95, 142, 239); background-color: rgb(231, 239, 250); color: rgb(0, 0, 0);&quot; colspan=&quot;1&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;동그라미&amp;nbsp;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 140px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); border-left: 1px solid rgb(95, 142, 239); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;g&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 128px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;초록&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 128px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(209, 223, 250); background-color: transparent; color: rgb(0, 0, 0);&quot; colspan=&quot;1&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;^&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 143px; height: 24px; border-bottom: 1px solid rgb(209, 223, 250); border-right: 1px solid rgb(95, 142, 239); background-color: transparent; color: rgb(0, 0, 0);&quot; colspan=&quot;1&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;삼각형&amp;nbsp;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;width: 140px; height: 23px; border-bottom: 1px solid rgb(95, 142, 239); border-right: 1px solid rgb(209, 223, 250); border-left: 1px solid rgb(95, 142, 239); background-color: rgb(231, 239, 250); color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;y&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;width: 128px; height: 23px; border-bottom: 1px solid rgb(95, 142, 239); border-right: 1px solid rgb(209, 223, 250); background-color: rgb(231, 239, 250); color: rgb(0, 0, 0);&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;노랑&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 128px; height: 23px; border-bottom: 1px solid rgb(95, 142, 239); border-right: 1px solid rgb(209, 223, 250); background-color: rgb(231, 239, 250); color: rgb(0, 0, 0);&quot; colspan=&quot;1&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;*&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;width: 143px; height: 23px; border-bottom: 1px solid rgb(95, 142, 239); border-right: 1px solid rgb(95, 142, 239); background-color: rgb(231, 239, 250); color: rgb(0, 0, 0);&quot; colspan=&quot;1&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;별&amp;nbsp;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;이 정도가 제가 알고 있는 스타일과 색상이에요. &lt;a href=&quot;https://matplotlib.org/api/colors_api.html&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;pyplot의 공식페이지&lt;/a&gt;에서 더욱 다양한 옵션들이 있어요.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(0, 34, 102);&quot;&gt;하나의 창 여러 개 그래프&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;그래프를 이 때까지는 하나의 축상에서 두 개씩 그리는 것을 연습했어요. 그런데 여러 개의 그래프를 각각의 창으로 표현하는 방법도 있어요. 바로 &lt;b&gt;&lt;span style=&quot;color: rgb(65, 116, 217);&quot;&gt;subplot()&lt;/span&gt;&lt;/b&gt;을 이용하는 방법이죠.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#fafafa; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #e5e5e5&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#666; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;import&lt;/span&gt;&amp;nbsp;matplotlib.pyplot&amp;nbsp;as&amp;nbsp;plt&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;import&lt;/span&gt;&amp;nbsp;numpy&amp;nbsp;as&amp;nbsp;np&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;x&amp;nbsp;좌표는&amp;nbsp;0부터&amp;nbsp;0.01씩&amp;nbsp;더해져&amp;nbsp;최대&amp;nbsp;5까지&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;x&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;np.arange(&lt;span style=&quot;color:#0099cc&quot;&gt;0.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;5.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;0.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;01&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;y&amp;nbsp;=&amp;nbsp;x^2&amp;nbsp;그래프&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.subplot(&lt;span style=&quot;color:#0099cc&quot;&gt;221&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.plot(x,&amp;nbsp;x&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;2&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#63a35c&quot;&gt;'r--'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;y&amp;nbsp;=&amp;nbsp;2^x&amp;nbsp;그래프&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.subplot(&lt;span style=&quot;color:#0099cc&quot;&gt;222&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.plot(x,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;x,&amp;nbsp;&lt;span style=&quot;color:#63a35c&quot;&gt;'b-'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;y&amp;nbsp;=&amp;nbsp;x&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.subplot(&lt;span style=&quot;color:#0099cc&quot;&gt;223&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.plot(x,&amp;nbsp;x,&amp;nbsp;&lt;span style=&quot;color:#63a35c&quot;&gt;'g'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;y&amp;nbsp;=&amp;nbsp;1/(x+1)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.subplot(&lt;span style=&quot;color:#0099cc&quot;&gt;224&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.plot(x,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;/&lt;/span&gt;(x&lt;span style=&quot;color:#a71d5d&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.show()&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(229, 229, 229); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2516C13758ECD02B27&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2516C13758ECD02B27&quot; width=&quot;400&quot; height=&quot;347&quot; filename=&quot;그림3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;subplot()에 들어가는 숫자에 대하여 해설을 하자면 221은 전체창을 2 * 2로 나눈 뒤 1번째 그래프를 의미해요. 222는 2 * 2 중 2번째 이런 식으로 말이죠. 분할하고자 하는 화면의 갯수에 따라서 숫자를 다르게 쓰면 됩니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(0, 34, 102);&quot;&gt;그래프를 상세하게&amp;nbsp;표기하기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;여러 개의 그래프를 subplot으로 그리는 경우나 하나의 축에 그래프를 그리는 경우 제목이나 범례가 없으면 어떤 그래프인지 알기 힘들 겁니다. &lt;b&gt;&lt;span style=&quot;color: rgb(65, 116, 217);&quot;&gt;title() 함수와 legend() 함수&lt;/span&gt;&lt;/b&gt;를 이용해서 그래프의 제목과 범례를 지정할 수 있답니다. 그리고 X축과 Y축의 의미도 있으면 좋겠죠? X축과 Y축에 라벨을 붙여주는&lt;b&gt;&lt;span style=&quot;color: rgb(65, 116, 217);&quot;&gt; xlabel(), ylabel()&lt;/span&gt;&lt;/b&gt;함수도 한 번 사용해보겠습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#fafafa; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #e5e5e5&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#666; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;import&lt;/span&gt;&amp;nbsp;matplotlib.pyplot&amp;nbsp;as&amp;nbsp;plt&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;import&lt;/span&gt;&amp;nbsp;numpy&amp;nbsp;as&amp;nbsp;np&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;x&amp;nbsp;좌표는&amp;nbsp;0부터&amp;nbsp;0.01씩&amp;nbsp;더해져&amp;nbsp;최대&amp;nbsp;5까지&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;x&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;np.arange(&lt;span style=&quot;color:#0099cc&quot;&gt;0.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;5.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;0.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;01&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;그래프의&amp;nbsp;타이틀&amp;nbsp;설정&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.title(&lt;span style=&quot;color:#63a35c&quot;&gt;'two&amp;nbsp;graph'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.plot(x,&amp;nbsp;x,&amp;nbsp;&lt;span style=&quot;color:#63a35c&quot;&gt;'g'&lt;/span&gt;,&amp;nbsp;label&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#63a35c&quot;&gt;'y=x'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.plot(x,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;2&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&amp;nbsp;(x&lt;span style=&quot;color:#a71d5d&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;),&amp;nbsp;&lt;span style=&quot;color:#63a35c&quot;&gt;'r'&lt;/span&gt;,&amp;nbsp;label&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#63a35c&quot;&gt;'y=2*(x+1)'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;X,&amp;nbsp;Y축에&amp;nbsp;이름을&amp;nbsp;붙어주기&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.xlabel(&lt;span style=&quot;color:#63a35c&quot;&gt;'X&amp;nbsp;Data'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.ylabel(&lt;span style=&quot;color:#63a35c&quot;&gt;'Y&amp;nbsp;Data'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;범례&amp;nbsp;표시&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.legend()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;눈금&amp;nbsp;표시를&amp;nbsp;해주는&amp;nbsp;함수&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.grid(True)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;plt.show()&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(229, 229, 229);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(229, 229, 229); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/273E3F3658ECDA6B0B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F273E3F3658ECDA6B0B&quot; width=&quot;400&quot; height=&quot;341&quot; filename=&quot;그림4.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(5, 0, 153);&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(5, 0, 153);&quot;&gt;3. Scatter 사용하기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;산포도&amp;nbsp;그래프를 그리고 싶다!&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;분류기를 사용하여 데이터를 분류하는 경우 산포도 그래프로 데이터를 가시화하는 것을 많이 볼 수 있습니다. 데이터가 어느 쪽에 밀집해 있는지를 확인하기 쉽기 때문인데요.&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;matplotlib.&lt;/span&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;pyplot의 scatter() 함수&lt;/span&gt;&lt;/b&gt;를 이용하면 산포도 그래프를 손쉽게 그릴 수 있답니다. 예제 코드를 보시죠!&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: rgb(1, 1, 1); overflow: auto; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; position: relative !important;&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; style=&quot;margin: 0px; padding: 0px; border: none; background-color: rgb(250, 250, 250); border-radius: 4px;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding: 6px; border-right: 2px solid rgb(229, 229, 229);&quot;&gt;&lt;div style=&quot;margin: 0px; padding: 0px; word-break: normal; text-align: right; color: rgb(102, 102, 102); line-height: 20.8px; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important;&quot;&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px;&quot;&gt;&lt;div style=&quot;margin: 0px; padding: 0px; color: rgb(1, 1, 1); line-height: 20.8px; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important;&quot;&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;import&lt;/span&gt;&amp;nbsp;matplotlib.pyplot&amp;nbsp;as&amp;nbsp;plt&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;import&lt;/span&gt;&amp;nbsp;numpy&amp;nbsp;as&amp;nbsp;np&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;x1&amp;nbsp;&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&amp;nbsp;[&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;1&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;2&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;11&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;20&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;6&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;9&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;y1&amp;nbsp;&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&amp;nbsp;[&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;3&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;7&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;10&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;20&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;16&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;30&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;x2&amp;nbsp;&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&amp;nbsp;[&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;5&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;7&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;1&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;6&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;9&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;2&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;y2&amp;nbsp;&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&amp;nbsp;[&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;3&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;8&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;10&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;23&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;4&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;32&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153);&quot;&gt;#&amp;nbsp;그래프의&amp;nbsp;타이틀&amp;nbsp;설정&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;plt.title(&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'two&amp;nbsp;scatter'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;plt.scatter(x1,&amp;nbsp;y1,&amp;nbsp;marker&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'s'&lt;/span&gt;,&amp;nbsp;c&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'r'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;plt.scatter(x2,&amp;nbsp;y2,&amp;nbsp;marker&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'*'&lt;/span&gt;,&amp;nbsp;c&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'b'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153);&quot;&gt;#&amp;nbsp;X,&amp;nbsp;Y축에&amp;nbsp;이름을&amp;nbsp;붙어주기&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;plt.xlabel(&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'X&amp;nbsp;Data'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;plt.ylabel(&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'Y&amp;nbsp;Data'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153);&quot;&gt;#&amp;nbsp;범례&amp;nbsp;표시&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;plt.legend()&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153);&quot;&gt;#&amp;nbsp;눈금&amp;nbsp;표시를&amp;nbsp;해주는&amp;nbsp;함수&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;plt.grid(True)&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;plt.show()&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(229, 229, 229); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color: rgb(1, 1, 1); overflow: auto; position: relative !important;&quot;&gt;&lt;p style=&quot;clear: none; float: none; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important;&quot;&gt;&lt;img id=&quot;tx_entry_48878_&quot; class=&quot;txc-image&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/2138E04D58EF5F5221&quot; width=&quot;400&quot; height=&quot;337&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;두 개의&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&amp;nbsp;데이터를 간단하게 준비하고 scatter() 함수를 사용해서 그래프를 그립니다. 속성 중에 marker 속성이 있는데&amp;nbsp;이 속성을 이용하면 네모, 세모, 별 모양 등의 모양을 지정할 수 있고, c는 색깔 속성을 의미합니다. 그 외 다양한 속성들은&amp;nbsp;&lt;a href=&quot;http://matplotlib.org/api/pyplot_api.html&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;pyplot.scatter()&lt;/a&gt;&amp;nbsp;페이지에서 확인할 수 있습니다!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;맑은 고딕&amp;quot;, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: rgb(0, 0, 0); line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt; color: rgb(5, 0, 153);&quot;&gt;4. annotation 이용하기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: rgb(0, 0, 0); margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;아니 이런 기능도 있어??&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;단순히 그래프 그리는 용도로 선 그래프나 산포도 그래프 등의 그래프를 그리는 함수만 있는 게 아니다. 그래프에&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;주석을 달거나 화살표를 그리는 등의 기능&lt;/span&gt;&lt;/b&gt;도 있다. &amp;nbsp;이 기능을 사용해서 트리형 그래프를 그릴 수도 있고 표시가 필요한 부분을 표시하는 등의 기능을 수행할 수 있습니다. 예제 코드를 한 번 볼까요?&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;overflow: auto; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important; position: relative !important;&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; style=&quot;margin: 0px; padding: 0px; border: none; border-radius: 4px;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding: 6px; border-right: 2px solid rgb(229, 229, 229);&quot;&gt;&lt;div style=&quot;margin: 0px; padding: 0px; word-break: normal; text-align: right; color: rgb(102, 102, 102); line-height: 20.8px; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important;&quot;&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height: 20.8px;&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding: 6px 0px;&quot;&gt;&lt;div style=&quot;margin: 0px; padding: 0px; color: rgb(1, 1, 1); line-height: 20.8px; font-family: Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace !important;&quot;&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;import&lt;/span&gt;&amp;nbsp;matplotlib.pyplot&amp;nbsp;as&amp;nbsp;plt&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;import&lt;/span&gt;&amp;nbsp;numpy&amp;nbsp;as&amp;nbsp;np&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;x1&amp;nbsp;&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&amp;nbsp;[&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;1&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;2&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;11&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;20&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;6&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;9&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;y1&amp;nbsp;&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&amp;nbsp;[&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;3&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;7&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;10&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;20&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;16&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;30&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153);&quot;&gt;#&amp;nbsp;box&amp;nbsp;속성&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;bboxType&amp;nbsp;&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&amp;nbsp;dict(boxstyle&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;&quot;round4&quot;&lt;/span&gt;,&amp;nbsp;alpha&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;0.&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;8&lt;/span&gt;,&amp;nbsp;fc&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'w'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153);&quot;&gt;#&amp;nbsp;화살표&amp;nbsp;속성&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;arrow&amp;nbsp;&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&amp;nbsp;dict(arrowstyle&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'-|&amp;gt;'&lt;/span&gt;,&amp;nbsp;connectionstyle&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'arc3,rad=0.2'&lt;/span&gt;,&amp;nbsp;fc&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;&quot;w&quot;&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153);&quot;&gt;#&amp;nbsp;그래프의&amp;nbsp;타이틀&amp;nbsp;설정&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;plt.title(&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'annotation'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;plt.scatter(x1,&amp;nbsp;y1,&amp;nbsp;marker&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'*'&lt;/span&gt;,&amp;nbsp;c&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'r'&lt;/span&gt;,&amp;nbsp;s&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;40&lt;/span&gt;&amp;nbsp;)&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153);&quot;&gt;#&amp;nbsp;xy는&amp;nbsp;도착점,&amp;nbsp;xytext는&amp;nbsp;text가&amp;nbsp;위치할&amp;nbsp;장소&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;plt.annotate(&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'here!!'&lt;/span&gt;,&amp;nbsp;xy&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;(&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;11&lt;/span&gt;,&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;10&lt;/span&gt;),&amp;nbsp;xytext&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;(&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;15&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;15&lt;/span&gt;),&amp;nbsp;size&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 153, 204);&quot;&gt;20&lt;/span&gt;,&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: rgb(153, 153, 153);&quot;&gt;#&amp;nbsp;수평&amp;nbsp;정렬&amp;nbsp;/&amp;nbsp;수직&amp;nbsp;정렬&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ha&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'center'&lt;/span&gt;,&amp;nbsp;va&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: rgb(99, 163, 92);&quot;&gt;'center'&lt;/span&gt;,&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: rgb(153, 153, 153);&quot;&gt;#&amp;nbsp;화살표와&amp;nbsp;박스의&amp;nbsp;속성을&amp;nbsp;설정&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arrowprops&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;arrow,&amp;nbsp;bbox&lt;span style=&quot;color: rgb(167, 29, 93);&quot;&gt;=&lt;/span&gt;bboxType,&amp;nbsp;)&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;&lt;span style=&quot;color: rgb(153, 153, 153);&quot;&gt;#&amp;nbsp;눈금&amp;nbsp;표시를&amp;nbsp;해주는&amp;nbsp;함수&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;plt.grid(True)&lt;/div&gt;&lt;div style=&quot;padding: 0px 6px; white-space: pre; line-height: 20.8px;&quot;&gt;plt.show()&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: right; margin-top: -13px; margin-right: 5px; font-size: 9px; font-style: italic;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(229, 229, 229);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align: bottom; padding: 0px 2px 4px 0px;&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(229, 229, 229); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; clear: none; float: none;&quot;&gt;&lt;img id=&quot;tx_entry_47385_&quot; class=&quot;txc-image&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/2746E24958EF67F713&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; clear: none; float: none; margin-left: 2em;&quot;&gt;우선 아까 scatter 함수를 연습할 때 사용한 데이터로 산포도 그래프를 그려줍니다. 저는 이 데이터 중에 (11, 10) 지점이 중요한 데이터라고 생각하고 표시를 해둘려고 합니다. 이럴 때&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;annotate() 함수&lt;/span&gt;&lt;/b&gt;를 사용합니다. 속성이 꽤 많이 필요한걸 볼 수 있는데요. 주석에&amp;nbsp;정리했지만 아래에 다시 정리 해보았습니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; clear: none; float: none; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8; clear: none; float: none; margin-left: 2em;&quot;&gt;&lt;b&gt;xy&lt;/b&gt;&amp;nbsp;: 표시할 데이터가 있는 곳입니다. 쉽게&amp;nbsp;&lt;b&gt;도착점&lt;/b&gt;이라고 생각합시다&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; clear: none; float: none; margin-left: 2em;&quot;&gt;&lt;b&gt;xytext&lt;/b&gt;&amp;nbsp;: 텍스트 박스를 둘 위치를 지정합니다. 이 때&amp;nbsp;&lt;b&gt;박스의 중앙점의 좌표&lt;/b&gt;를 입력하면 됩니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; clear: none; float: none; margin-left: 2em;&quot;&gt;&lt;b&gt;ha / va&lt;/b&gt;&amp;nbsp;: 각각&amp;nbsp;&lt;b&gt;수평 / 수직 방향 정렬&lt;/b&gt;&amp;nbsp;속성입니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; clear: none; float: none; margin-left: 2em;&quot;&gt;&lt;b&gt;arrowprop&lt;/b&gt;&amp;nbsp;:&amp;nbsp;&lt;b&gt;화살표의 속성&lt;/b&gt;을 지정합니다. dict() 함수를 이용하여 지정합니다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; clear: none; float: none; margin-left: 2em;&quot;&gt;&lt;b&gt;bbox&lt;/b&gt;&amp;nbsp;:&amp;nbsp;&lt;b&gt;텍스트 박스의 속성&lt;/b&gt;을 지정합니다. 마친가지로 dict()함수로 지정합니다.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;박스와 화살표는 다양한 모양과 속성들이 있습니다. 모든 속성을 블로그에 옮겨 적는데에는 한계가 있어서&lt;a href=&quot;http://matplotlib.org/api/pyplot_api.html&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;&amp;nbsp;api 링크&lt;/a&gt;를 납깁니다. 긴 글&amp;nbsp;읽어주셔서 감사합니다!!&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Data Mining</category>
      <category>LEGEND</category>
      <category>matplotlib</category>
      <category>Plot</category>
      <category>pyplot</category>
      <category>title</category>
      <category>xlabel</category>
      <category>ylabel</category>
      <category>그래프</category>
      <category>직선</category>
      <category>파이썬</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/52</guid>
      <comments>https://ssoonidev.tistory.com/52#entry52comment</comments>
      <pubDate>Sat, 8 Apr 2017 20:37:04 +0900</pubDate>
    </item>
    <item>
      <title>[Data Mining] k-NN 알고리즘</title>
      <link>https://ssoonidev.tistory.com/51</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: dashed; border-width: 1px; border-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding: 10px;&quot;&gt;&lt;p&gt;&lt;b&gt;Python2.x를 사용하여 구현하였습니다. 3.x버전을 사용하시는 분들은 참고하시길 바랍니다.&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153); font-size: 18pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153); font-size: 18pt;&quot;&gt;1. &amp;nbsp;k-NN 알고리즘&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;가장 가까운 이웃을 찾아라&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;k-NN 알고리즘은 기존의&amp;nbsp;데이터들은 각각의 라벨이 붙어 있고, 라벨이 없는 임의의 데이터 X가 과연 어떤 종류에 들어가는지 분류하는 알고리즘이다. 이때 X와 기존의 데이터들의 거리를 모두 구한 후 그중 가장 가까운 &lt;b&gt;k 개의 데이터의 라벨들 중 가장 많은 수의 라벨&lt;/b&gt;이 X 데이터의 라벨로 결정하게 하는 알고리즘이다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;일반적으로 k-NN 알고리즘을 적용하기 위해서는&lt;b&gt; 수치형 값&lt;/b&gt;을 사용하는 편인데, 임의의 데이터와 기존 데이간의 거리를 계산하기 위해서이다. 특별히&lt;b&gt; 훈련하는 과정도 없는 특징&lt;/b&gt;도 바로 모든 기존의 데이터와 거리를 계산하는 특징으로 나타나는 것이다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153); font-size: 18pt;&quot;&gt;2. &amp;nbsp;NumPy로 구현&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 85, 255); background-color: rgb(217, 229, 255); padding: 10px;&quot;&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;알고리즘의 구현 순서&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;1) 파일로부터 데이터를 수집&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;2) 정규화(Normalization)&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;3) 가시화(Visualization)&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;4) 테스트 데이터와 모든 데이터 간의 거리 계산 후 가장 근접한 k개 데이터 선정후 다수결로 결정&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;(k-NN 알고리즘)&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;1) 파일로부터 데이터 수집&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 0.5;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#fafafa; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #e5e5e5&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#666; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;30&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;31&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;32&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;33&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;from&lt;/span&gt;&amp;nbsp;numpy&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;import&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;import&lt;/span&gt;&amp;nbsp;operator&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;def&lt;/span&gt;&amp;nbsp;file2matrix(filename):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;데이터에&amp;nbsp;저장된&amp;nbsp;Iris의&amp;nbsp;종류는&amp;nbsp;총&amp;nbsp;3개입니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;각각을&amp;nbsp;숫자로&amp;nbsp;매핑한&amp;nbsp;Dictionary를&amp;nbsp;구현합니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Iris_dict&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;{&lt;span style=&quot;color:#63a35c&quot;&gt;&quot;Iris-setosa&quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#63a35c&quot;&gt;&quot;Iris-versicolor&quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;2&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#63a35c&quot;&gt;&quot;Iris-virginica&quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;3&lt;/span&gt;}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;파일을&amp;nbsp;열고&amp;nbsp;라인&amp;nbsp;단위로&amp;nbsp;파일을&amp;nbsp;읽어&amp;nbsp;드립니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fr&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#066de2&quot;&gt;open&lt;/span&gt;(filename)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TextLine&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;fr.readline()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;numOfData&amp;nbsp;&amp;nbsp;:&amp;nbsp;데이터의&amp;nbsp;수를&amp;nbsp;의미&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;featMatrix&amp;nbsp;:&amp;nbsp;파일로&amp;nbsp;읽어드린&amp;nbsp;데이터를&amp;nbsp;행렬로&amp;nbsp;저장하기&amp;nbsp;위해&amp;nbsp;영행렬로&amp;nbsp;초기화합니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이&amp;nbsp;때&amp;nbsp;Feacture의&amp;nbsp;수가&amp;nbsp;총&amp;nbsp;3개이므로&amp;nbsp;Data의&amp;nbsp;수&amp;nbsp;X&amp;nbsp;3의&amp;nbsp;행렬을&amp;nbsp;만듭니다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numOfData&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#066de2&quot;&gt;len&lt;/span&gt;(TextLine)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;featMatrix&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;zeros((numOfData,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;3&lt;/span&gt;))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;labelVector&amp;nbsp;:&amp;nbsp;dataMatrix의&amp;nbsp;각&amp;nbsp;행에&amp;nbsp;대응하는&amp;nbsp;lebel을&amp;nbsp;저장합니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;labelVector&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;[]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;index&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;for&lt;/span&gt;&amp;nbsp;line&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;in&lt;/span&gt;&amp;nbsp;TextLine:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;각각의&amp;nbsp;데이터는&amp;nbsp;','으로&amp;nbsp;구분되어&amp;nbsp;있습니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;따라서&amp;nbsp;','을&amp;nbsp;기준으로&amp;nbsp;분리하여&amp;nbsp;줍니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;splitData&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;line.split(&lt;span style=&quot;color:#63a35c&quot;&gt;','&lt;/span&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;파일에&amp;nbsp;데이터가&amp;nbsp;&quot;종류,특징1,특징2,특징3&quot;으로&amp;nbsp;저장되어&amp;nbsp;있으므로&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;두번째&amp;nbsp;열부터&amp;nbsp;끝까지가&amp;nbsp;Feature입니다.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;featMatrix[index,&amp;nbsp;:&amp;nbsp;]&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;splitData[&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;:]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;labelVector.append(Iris_dictionary.get(splitData[&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;]))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;index&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;return&lt;/span&gt;&amp;nbsp;featMatrix,&amp;nbsp;labelVector&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(229, 229, 229);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(229, 229, 229); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-2538641355026813&quot;
     data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;2) 정규화&lt;/b&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;정규화를 하는 이유는 &lt;b&gt;각각의 특징(Feature)들이 서로 다른 단위를 가진다는 점에서 &lt;/b&gt;시작합니다.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;만약 달리기를 하는 사람의 데이터가 아래와 같이 있다고 가정하여 봅시다&lt;/div&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(0, 85, 255); background-color: rgb(217, 229, 255); padding: 10px;&quot;&gt;&lt;div style=&quot;margin-left: 4em; line-height: 1.8;&quot;&gt;&lt;b&gt;Feature 1 : 지칠 때까지 최대한 달린 거리&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 4em; line-height: 1.8;&quot;&gt;&lt;b&gt;Feature 2 : 100m 달리기 기록&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 4em; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 4em; line-height: 1.8;&quot;&gt;&lt;b&gt;Data 1 :&lt;/b&gt;&amp;nbsp; (10,300m, 13.40초, 장거리 선수)&lt;/div&gt;&lt;div style=&quot;margin-left: 4em; line-height: 1.8;&quot;&gt;&lt;b&gt;Data 2 :&lt;/b&gt; &amp;nbsp;(5,000m, 11.30초, 단거리 선수)&lt;/div&gt;&lt;div style=&quot;margin-left: 4em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 4em; line-height: 1.8;&quot;&gt;&lt;p&gt;&lt;b&gt;Data 1 ~ Data의 거리 :&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/235C6B4758E394C405&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28%5Csqrt%20%7B%20%2810%2C000%5Cquad%20-%5Cquad%205%2C000%29%5E%7B%202%20%7D%5Cquad%20-%5Cquad%20%2813.40%5Cquad%20-%5Cquad%2011.30%29%5E%7B%202%20%7D%20%7D%20%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A12%2C%0Atransparent&quot; width=&quot;359&quot; height=&quot;25&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;kNN은 Feature 간의 거리를 계산하는 알고리즘입니다.  Data 1 ~ Data 2간의 거리 값에서 가장 큰 비중을&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;차지하는 것은 &lt;b&gt;Feature 1&lt;/b&gt;이 되어 버리겠죠. 왜냐면 Feature를 구성하는 단위의 크기가 어마하게 차이가&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;나기 때문입니다. 100m 달리기 기록을 아무리 단축하여도 거리에는 큰 영향을 못 준다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;데이터를 분석하는 사람의&amp;nbsp;판단으로 &lt;b&gt;Feature 1이나 Feature 2나 동일하게 중요하다고 판단을 내리는 경우&lt;/b&gt;에&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;위의 같은 사례는 썩 좋아하는 상황이 아닙니다. 따라서 데이터를 일정 범위로 줄여 버리는 과정인 정규화 과정을 거칩니다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(255, 0, 127); background-color: rgb(255, 217, 236); padding: 10px; line-height: 1.8;&quot;&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;정규화&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 4em; line-height: 1.8;&quot;&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/2266CB4958E3994710&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28%5Cfrac%20%7B%20data%5Cquad%20Set%28X%29%5Cquad%20-%5Cquad%20min%28X%29%20%7D%7B%20range%5Cquad%20of%5Cquad%20Feature%5Cquad%20X%5Cquad%20%28max%28X%29%5Cquad%20-%5Cquad%20min%28X%29%29%20%7D%20%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A12%2C%0Atransparent&quot; width=&quot;359&quot; height=&quot;52&quot;&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;분모에는 각 Feature의 범위가 들어가고 분자에는 data Set에 저장되어있는 Feature 값과 최소값의 차이값이 들어갑니다. 이 식을 활용해서 파이썬으로 마찬가지로 구현하면 아래와 같습니다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#fafafa; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #e5e5e5&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#666; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;위의&amp;nbsp;함수에서&amp;nbsp;이어서&amp;nbsp;사용합니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;def&lt;/span&gt;&amp;nbsp;normarlization(dataSet):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;dataSet&amp;nbsp;중의&amp;nbsp;최소&amp;nbsp;값과&amp;nbsp;최대&amp;nbsp;값을&amp;nbsp;구합니다&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;그리고&amp;nbsp;두&amp;nbsp;값의&amp;nbsp;차이로&amp;nbsp;범위를&amp;nbsp;구해줍니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;minVal&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;dataSet.min(&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;maxVal&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;dataSet.max(&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ranges&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;maxVal&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;-&lt;/span&gt;&amp;nbsp;minVal&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;정규화&amp;nbsp;결과를&amp;nbsp;저장하는&amp;nbsp;행렬을&amp;nbsp;준비합니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;normalDataSet&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;zeros(shape(dataSet))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;dataSet의&amp;nbsp;행의&amp;nbsp;갯수를&amp;nbsp;저장합니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rowCnt&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;dataSet.shape[&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;정규화&amp;nbsp;공식에&amp;nbsp;맞게&amp;nbsp;적용하였습니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;normalDataSet&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;(dataSet&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;-&lt;/span&gt;&amp;nbsp;tile(minVal,&amp;nbsp;(rowCnt,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;)))&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;/&lt;/span&gt;&amp;nbsp;tile(ranges,&amp;nbsp;(rowCnt,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;))&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;return&lt;/span&gt;&amp;nbsp;normalDataSet&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(229, 229, 229);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(229, 229, 229); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;3) 가시화&lt;/b&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;보기에도 좋은 떡이 맛도 좋다는 말이 있죠? 데이터도 숫자로 되어 있으면 뭐가 뭔지 의미를 쉽게 알 수 없을&lt;/div&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;겁니다. 파이썬에는 matplotlib라는 좋은 그래프 그리는 라이브러리가 있으니까 그것을 적극적으로 활용해 봅시다.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#fafafa; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #e5e5e5&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#666; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;위의&amp;nbsp;함수에서&amp;nbsp;이어서&amp;nbsp;사용합니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;def&lt;/span&gt;&amp;nbsp;visualizeData(dataSet,&amp;nbsp;labels):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;import&lt;/span&gt;&amp;nbsp;matplotlib&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;matplotlib.use(&lt;span style=&quot;color:#63a35c&quot;&gt;'Agg'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;import&lt;/span&gt;&amp;nbsp;matplotlib.pyplot&amp;nbsp;as&amp;nbsp;plt&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fig,&amp;nbsp;ax&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;plt.subplots(&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ax.scatter(dataSet[:,&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;],&amp;nbsp;dataSet[&amp;nbsp;:,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;],&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;15.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;array(labels),&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;15.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&amp;nbsp;array(labels))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fig.savefig(&lt;span style=&quot;color:#63a35c&quot;&gt;'plot1.svg'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fig,&amp;nbsp;ax&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;plt.subplots(&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ax.scatter(dataSet[:,&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;],&amp;nbsp;dataSet[&amp;nbsp;:,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;2&lt;/span&gt;],&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;15.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;array(labels),&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;15.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&amp;nbsp;array(labels))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fig.savefig(&lt;span style=&quot;color:#63a35c&quot;&gt;'plot2.svg'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fig,&amp;nbsp;ax&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;plt.subplots(&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ax.scatter(dataSet[:,&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;],&amp;nbsp;dataSet[&amp;nbsp;:,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;2&lt;/span&gt;],&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;15.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;array(labels),&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;15.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&amp;nbsp;array(labels))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fig.savefig(&lt;span style=&quot;color:#63a35c&quot;&gt;'plot3.svg'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(229, 229, 229);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(229, 229, 229); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 820px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2349894D58E3A1A004&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2349894D58E3A1A004&quot; width=&quot;820&quot; height=&quot;232&quot; filename=&quot;scatter.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(140, 140, 140);&quot;&gt;짜잔.. 숫자로 봤을 때 보다 훨씬 좋죠?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;4) k-NN 알고리즘&lt;/b&gt;&lt;/p&gt;&lt;div style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;이제 마지막으로 k-NN 분류기를 구현해보겠습니다.&lt;/div&gt;&lt;div style=&quot;line-height: 1.8;&quot;&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#fafafa; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #e5e5e5&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#666; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;위의&amp;nbsp;함수에서&amp;nbsp;이어서&amp;nbsp;사용합니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;def&lt;/span&gt;&amp;nbsp;classify0(testDataSet,&amp;nbsp;trainDataSet,&amp;nbsp;labels,&amp;nbsp;k):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trainDataSetSize&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;trainDataSet.shape[&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;테스트&amp;nbsp;데이터와&amp;nbsp;훈련&amp;nbsp;데이터간의&amp;nbsp;거리를&amp;nbsp;계산하는&amp;nbsp;과정입니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;diffMat&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;tile(testDataSet,&amp;nbsp;(trainDataSetSize,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;))&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;-&lt;/span&gt;&amp;nbsp;trainDataSet&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sqDiffMat&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;diffMat&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;2&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sqDistances&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;sqDiffMat.sum(axis&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;distances&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;sqDistances&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;0.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;5&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;오름차순으로&amp;nbsp;argsort를&amp;nbsp;합니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;거리가&amp;nbsp;짧은&amp;nbsp;순서대로&amp;nbsp;정렬이&amp;nbsp;됩니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sortedDistIndex&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;distances.argsort()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;다수결의&amp;nbsp;결과를&amp;nbsp;저장하는&amp;nbsp;곳입니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;classCount&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;{}&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;for&lt;/span&gt;&amp;nbsp;i&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#066de2&quot;&gt;range&lt;/span&gt;(k):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;본격&amp;nbsp;개표&amp;nbsp;방송&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;오름차순으로&amp;nbsp;정렬한&amp;nbsp;데이터&amp;nbsp;중&amp;nbsp;k번째&amp;nbsp;데이터까지&amp;nbsp;라벨을&amp;nbsp;확인한&amp;nbsp;후&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;투표&amp;nbsp;결과를&amp;nbsp;저장합니다.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;votelabel&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;labels[sortedDistIndex[i]]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;classCount[votelabel]&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;classCount.get(votelabel,&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;내림차순으로&amp;nbsp;정렬합니다&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sortedClassCount&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;sorted(classCount.iteritems(),&amp;nbsp;key&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;operator.itemgetter(&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;),&amp;nbsp;reverse&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;True)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;return&lt;/span&gt;&amp;nbsp;sortedClassCount[&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;][&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;]&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(229, 229, 229);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(229, 229, 229); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153); font-size: 18pt;&quot;&gt;3. &amp;nbsp;마치면서..&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;k-NN은 단순하지만 데이터를 분류하는데 효과적인 알고리즘입니다. 하지만 데이터를 전부다 순회하면서&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;거리를 측정해야 하기 때문에 대규모의 데이터에 적용할 때는 시간이 오래걸리는 단점이 있습니다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;앞으로 여러 가지 알고리즘을 공부해서 포스팅 하겠습니다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;정말 긴 글 읽어 주셔서 감사합니다. 밑에 하트 한 번만 눌러주시면 저에게 큰 힘이 됩니다 ㅠㅠ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Data Mining</category>
      <category>knn</category>
      <category>numpy</category>
      <category>Python</category>
      <category>기계 학습</category>
      <category>데이터 마이닝</category>
      <category>파이썬</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/51</guid>
      <comments>https://ssoonidev.tistory.com/51#entry51comment</comments>
      <pubDate>Sun, 2 Apr 2017 18:12:02 +0900</pubDate>
    </item>
    <item>
      <title>[Tensorflow]선형 회귀(Linear Regression)</title>
      <link>https://ssoonidev.tistory.com/50</link>
      <description>&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: solid; border-width: 1px; border-color: rgb(121, 165, 228); background-color: rgb(219, 232, 251); padding: 10px;&quot;&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(0, 34, 102); font-size: 18pt;&quot;&gt;&lt;span style=&quot;color: rgb(0, 34, 102); font-size: 12pt;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;Andrew Ng 교수님의&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp;Machine Learning 강좌(&lt;a href=&quot;http://www.coursera.org&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://www.coursera.org&lt;/a&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;와&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;font color=&quot;#002266&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;모두를 위한 머신러닝 강좌(&lt;a href=&quot;http://hunkim.github.io/ml/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://hunkim.github.io/ml/&lt;/a&gt;)를 참고하여 포스팅하였습니다.&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(0, 34, 102); font-size: 18pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(0, 34, 102); font-size: 18pt;&quot;&gt;1. 선형 회귀&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; color: rgb(5, 0, 153);&quot;&gt;대표하는 직선!! &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 640px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2742BE3E58BE718220&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2742BE3E58BE718220&quot; width=&quot;640&quot; height=&quot;252&quot; filename=&quot;lin01.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;왼쪽 그림과 같이 데이터가 분포하여 있을 때 X=9일 때 Y 값을 예측을 하고자 한다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;단순히 왼쪽 그림만으로 Y 값을 예측하기에는 근거가 부족하다.&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;우리가&amp;nbsp;&lt;b&gt;4지 선다형 문제를 찍는 데에도 근거가 있으면 (예를 들면 답이 유독 4가 없다는 등)&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;묘하게 설득력이 생긴다.&lt;/b&gt;&amp;nbsp;통계학자들은 이런 근거를 만들고자 오른쪽과 같이 &lt;b&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;직선&lt;/span&gt;&lt;/b&gt;을 그어보았다.&lt;/p&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;이 직선 주변으로&amp;nbsp;데이터를 나타나는 점들이 분포하여 마치 &lt;b&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;데이터를 대표하는 모델&lt;/span&gt;&lt;/b&gt;로 역할을 수행한다.&lt;/p&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;따라서 이제 X=9에서 Y 값을 예측하는 것은 이 직선에서 X=9를 대입하면 끝!! 근거도 있어서 맘도 편하다.&lt;/p&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;이와 같은 방법으로 데이터를 예측하는 모델을 &lt;b&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;선형 회귀&lt;/span&gt;&lt;/b&gt;라고 하고, 이 &lt;b&gt;&lt;span style=&quot;color: rgb(0, 85, 255);&quot;&gt;직선의 방정식을 가설 함수&lt;/span&gt;&lt;/b&gt;라 한다.&lt;/p&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; color: rgb(5, 0, 153);&quot;&gt;직선 그리는 것도 각양각색&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 320px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/222AE23358BE7C5032&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F222AE23358BE7C5032&quot; width=&quot;320&quot; height=&quot;268&quot; filename=&quot;lin02.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;위의 그림에서 직선의 모양, 즉 가설 함수에 따라서 X=9일 때 예측값 Y의 값이 달라짐을 알 수 있다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;따라서 대표하는 직선을&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;어떤 기준으로&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;nbsp;그릴 거냐&lt;/span&gt;&lt;/b&gt;는 문제가 발생한다. &amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2742E24658BE8A100A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2742E24658BE8A100A&quot; width=&quot;580&quot; height=&quot;264&quot; filename=&quot;lin03.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;위의 그림에서 d는 원래 데이터의 값 y1과 예측값 H(x1)의 거리를 의미한다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;H(X)의 함수식 Θ1, Θ0에 따라서 d값이 달라질 것이며 어떤 점에 대해서는 너무 멀고&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;어떤 점에서는 너무 가깝지 않는, 즉 &lt;b&gt;분산이 최소가 되는 값&lt;/b&gt;을 구하여야 한다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;이 때 d값의 분산을 &lt;b&gt;&lt;span style=&quot;color: rgb(0, 85, 255);&quot;&gt;Cost Function&lt;/span&gt;&lt;/b&gt;이라 하고 &lt;b&gt;&lt;span style=&quot;color: rgb(0, 85, 255);&quot;&gt;Cost Function&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 85, 255);&quot;&gt;&amp;nbsp;최소가 되는 Θ1, Θ0를 구하는 것이 &lt;/span&gt;&lt;span style=&quot;color: rgb(0, 85, 255);&quot;&gt;목표&lt;/span&gt;&lt;/b&gt;이다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt; color: rgb(5, 0, 153);&quot;&gt;산을 타고 내려갑니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/235F323F58BE95FA2F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F235F323F58BE95FA2F&quot; width=&quot;580&quot; height=&quot;248&quot; filename=&quot;lin04.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;위의 그래프는 Θ에 따른 cost(Θ)의 변화이다. 앞서 말했듯이 우리가 원하는 것은&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;cost(Θ)을 최솟값으로 만드는 Θ값&lt;/span&gt;&lt;/b&gt;을 구하는 것이다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;이때 사용하는 알고리즘이 &lt;b&gt;&lt;span style=&quot;color: rgb(65, 116, 217);&quot;&gt;Gradient descent&lt;/span&gt;&lt;/b&gt;이다. 쉽게 말해서 산타고 내려가는 것!!&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;Θ를 일정한 양만큼 계속 줄여가면서 바닥으로 내려가는 것인데 만약 바닥이라면 기울기가 0이 되므로&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;위의 박스친 &lt;b&gt;&lt;span style=&quot;color: rgb(65, 116, 217);&quot;&gt;편미분 부분이 0이 되어 더 이상 감소하지 않는다.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;그리고 위의 식에서&lt;b&gt; α을 Learning rate&lt;/b&gt;라고 한다. α의 값은&amp;nbsp;개발자가 직접 설정해야 한다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;만약 α값이 너무 크면 바닥까지 내려오지 않을 수도 있고, α값이 너무 작으면 반복하는 횟수가 증가한다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;따라서 α값을 변형하면서 적절한 값을 찾는 것이 중요하다.&lt;/p&gt;&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(0, 34, 102); font-size: 18pt;&quot;&gt;2. Tensorflow 구현&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;font color=&quot;#050099&quot;&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;b&gt;소스 코드&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;colorscripter-code&quot; style=&quot;color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; position:relative !important; overflow:auto&quot;&gt;&lt;table class=&quot;colorscripter-code-table&quot; style=&quot;margin:0; padding:0; border:none; background-color:#fafafa; border-radius:4px;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding:6px; border-right:2px solid #e5e5e5&quot;&gt;&lt;div style=&quot;margin:0; padding:0; word-break:normal; text-align:right; color:#666; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;line-height:130%&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;6&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;7&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;8&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;9&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;10&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;11&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;12&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;13&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;14&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;15&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;16&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;17&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;18&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;19&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;20&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;21&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;22&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;23&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;24&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;25&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;26&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;27&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;28&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;29&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;30&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;31&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;32&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;33&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;34&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;35&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;36&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;37&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;38&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;39&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;40&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;41&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;42&lt;/div&gt;&lt;div style=&quot;line-height:130%&quot;&gt;43&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;padding:6px 0&quot;&gt;&lt;div style=&quot;margin:0; padding:0; color:#010101; font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace !important; line-height:130%&quot;&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;import&lt;/span&gt;&amp;nbsp;tensorflow&amp;nbsp;as&amp;nbsp;tf&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;import&lt;/span&gt;&amp;nbsp;matplotlib.pyplot&amp;nbsp;as&amp;nbsp;plt&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;학습&amp;nbsp;데이터&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;X_data&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;[&lt;span style=&quot;color:#0099cc&quot;&gt;3.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;3&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;4.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;4&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;5.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;5&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;6.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;71&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;6.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;93&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;4.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;168&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;9.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;779&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;6.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;182&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;7.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;59&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;2.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;167&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;7.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;042&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;10.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;791&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;5.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;313&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;7.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;997&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;5.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;654&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;9.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;27&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;3.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;Y_data&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;[&lt;span style=&quot;color:#0099cc&quot;&gt;1.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;7&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;2.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;76&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;2.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;09&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;3.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;19&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;1.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;694&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;1.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;573&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;3.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;366&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;2.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;596&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;2.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;53&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;1.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;221&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;2.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;827&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;3.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;465&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;1.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;65&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;2.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;904&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;2.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;42&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;2.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;94&lt;/span&gt;,&lt;span style=&quot;color:#0099cc&quot;&gt;1.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;3&lt;/span&gt;]&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;numOfData&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#066de2&quot;&gt;len&lt;/span&gt;(X_data)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;데이터의&amp;nbsp;갯수&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;alpha&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;0.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;001&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;Learning&amp;nbsp;Rate&amp;nbsp;alpha&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;itr&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;3000&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;반복&amp;nbsp;횟수&amp;nbsp;1000회&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;theta1&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;tf.Variable(tf.random_uniform([&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;],&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;0.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;3.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;theta1&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;theta0&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;tf.Variable(tf.random_uniform([&lt;span style=&quot;color:#0099cc&quot;&gt;1&lt;/span&gt;],&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;0.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;3.&lt;/span&gt;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;theta0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;H(x)&amp;nbsp;=&amp;nbsp;theta1&amp;nbsp;*&amp;nbsp;x&amp;nbsp;+&amp;nbsp;theta0&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;hypothesis&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;tf.add(tf.mul(theta1,&amp;nbsp;X_data),&amp;nbsp;theta0)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;cost()&amp;nbsp;=&amp;nbsp;1/2m&amp;nbsp;*&amp;nbsp;sum(pow(H(x)&amp;nbsp;-&amp;nbsp;y))&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;cost_function&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;tf.reduce_sum(tf.pow(hypothesis&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;-&lt;/span&gt;&amp;nbsp;Y_data,&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;2&lt;/span&gt;))&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;/&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color:#0099cc&quot;&gt;2&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&amp;nbsp;numOfData)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;Gradient&amp;nbsp;Descent&amp;nbsp;알고리즘&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;optimizer&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;tf.train.GradientDescentOptimizer(alpha).minimize(cost_function)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;변수&amp;nbsp;초기화&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;init&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;tf.global_variables_initializer()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;Tensorflow&amp;nbsp;session&amp;nbsp;시작&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;with&amp;nbsp;tf.Session()&amp;nbsp;as&amp;nbsp;sess:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sess.run(init)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;3000회&amp;nbsp;반복&amp;nbsp;수행&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;for&lt;/span&gt;&amp;nbsp;i&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#066de2&quot;&gt;range&lt;/span&gt;(itr):&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sess.run(optimizer)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;if&lt;/span&gt;&amp;nbsp;i&amp;nbsp;%&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;20&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color:#0099cc&quot;&gt;0&lt;/span&gt;:&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#066de2&quot;&gt;print&lt;/span&gt;(i,&amp;nbsp;sess.run(cost_function),&amp;nbsp;sess.run(theta1),&amp;nbsp;sess.run(theta0))&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color:#999999&quot;&gt;#&amp;nbsp;데이터&amp;nbsp;시각화&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plt.plot(X_data,&amp;nbsp;Y_data,&amp;nbsp;&lt;span style=&quot;color:#63a35c&quot;&gt;'ro'&lt;/span&gt;,&amp;nbsp;label&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#63a35c&quot;&gt;'Training&amp;nbsp;Data'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plt.plot(X_data,&amp;nbsp;sess.run(theta1)&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;*&lt;/span&gt;&amp;nbsp;X_data&amp;nbsp;&lt;span style=&quot;color:#a71d5d&quot;&gt;+&lt;/span&gt;&amp;nbsp;sess.run(theta0),&amp;nbsp;label&lt;span style=&quot;color:#a71d5d&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#63a35c&quot;&gt;'Linear&amp;nbsp;Regression&amp;nbsp;Result'&lt;/span&gt;)&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plt.legend()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plt.show()&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;padding:0 6px; white-space:pre; line-height:130%&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align:right; margin-top:-13px; margin-right:5px; font-size:9px; font-style:italic&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: rgb(229, 229, 229);&quot;&gt;Colored by Color Scripter&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style=&quot;vertical-align:bottom; padding:0 2px 4px 0&quot;&gt;&lt;a href=&quot;http://colorscripter.com/info#e&quot; target=&quot;_blank&quot; style=&quot;color: white;&quot;&gt;&lt;span style=&quot;font-size: 9px; word-break: normal; background-color: rgb(229, 229, 229); border-radius: 10px; padding: 1px;&quot;&gt;cs&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;font color=&quot;#050099&quot;&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;b&gt;결 과&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#050099&quot;&gt;&lt;span style=&quot;font-size: 18.6667px;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 400px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2652CB3C58BEA6F62B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2652CB3C58BEA6F62B&quot; width=&quot;400&quot; height=&quot;338&quot; filename=&quot;lin05.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Data Mining</category>
      <category>TensorFlow</category>
      <category>기계학습</category>
      <category>선현회귀</category>
      <category>텐서플로우</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/50</guid>
      <comments>https://ssoonidev.tistory.com/50#entry50comment</comments>
      <pubDate>Tue, 7 Mar 2017 21:26:48 +0900</pubDate>
    </item>
    <item>
      <title>[접근 제어] Overview &amp;amp; DAC</title>
      <link>https://ssoonidev.tistory.com/49</link>
      <description>&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;span style=&quot;color: rgb(0, 51, 153);&quot;&gt;1. Overvi&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 51, 153);&quot;&gt;ew&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;접근제어(Access Control)란??&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;접근제어는 자원에 대한 권한이 없는 주체(Subject)가 해당 자원의 사용을 막는 것을 의미한다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;접근제어를 하기 위해서 주체를 구별하기 위한&amp;nbsp;Identification과 본인 여부를 확인하는 인증 절차가 필요하다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;특히 인증의 성공 여부에 따라 리소스에 접근할&amp;nbsp;권한을 줄지 안 줄지 결정되므로 인증이 핵심 절차이다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;주체(Subject)는 컴퓨터를 사용하는 사람, 그룹, 프로세스, 컴퓨터와 같이 정보를 요청하는 요소이며,&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;객체(Object)는&amp;nbsp;파일이나 폴더, 디바이스, 메모리 등 정보를 가지고 있는 요소이다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;주체는 접근 권한에 따라 객체를 읽거나, 쓰기, 실행이 가능하며 권한은 객체별로 다른 형태로 부여한다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;요구사항&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;- 신뢰가능한 입력(reliable input) : 신뢰가능함은 인증을 통과한 주체가 행하는 입력을 의미한다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;- 포괄적 vs 세분화 : 권한의 범위를 어느 수준까지 설정하는가 문제&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;- 최소 권한 : 주체에게 너무 큰 권한을 부여하면 시스템의 문제의 여지가 될 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;- 열린&amp;nbsp;정책 vs 닫힌 정책 /&amp;nbsp;정책 간 충돌 문제&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;- 정책 관리 : 관리자만이 정책을 변경할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;- 동시성 제어 : 하나의 객체에 여러 주체가 동시에 접근할 경우 어떻게 처리할지 문제&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;- 의무의 분리 : 중요한 행위는 반드시 두 개이상의 user나 권한으로 나누어서 실행한다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-2538641355026813&quot;
     data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;span style=&quot;color: rgb(0, 51, 153);&quot;&gt;2. DAC(Discretionary Acess Control)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;주인장 맘대로&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;자원의 주인이&amp;nbsp;해당 자원에 대한 다른 사람들의 권한을 결정하여&amp;nbsp;접근 제어를 하는 방법이다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;따라서 이 방법을 사용하기 위해서 각자를 구별할 &lt;b&gt;ID&lt;/b&gt;와 해당 자원의 &lt;b&gt;소유권&lt;/b&gt;, 그리고 &lt;b&gt;다른 유저에게 분배된 권한을 정리할 파일&lt;/b&gt;이 필요하다. 권한을 저장하는 방법은 Access Control List, Capability List, Access Matrix가 있다. Access Matrix의 경우에는 사용자가 많고 자원들이 많은 실제 상용 시스템에서 사용하면 공란이 많은 희소 행렬의 형태라 공간 낭비가 심해 사용하지 않는다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/265AE543583E521B10&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F265AE543583E521B10&quot; width=&quot;580&quot; height=&quot;355&quot; filename=&quot;DAC1.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;Access Control List vs Capability List&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;ACLs는 자원에 대하여 각&amp;nbsp;사용자들의 권한을 저장하는 방법이고 CL은 반대로 사용자에 대하여 각 자원들의 권한을 저장하는 방법이다. 다시 말해&lt;b&gt; ACLs는 자원 중심, CL은 사용자 중심의 저장 방법&lt;/b&gt;이다. 따라서 사용자에 비해 자원이 많은 개인용 PC 같은 환경에서는 ACLs, 사용자의 수가 많은 웹 서버같은 환경에서는 CL이 더욱 유용한 방법이다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;DAC 장점&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;- 사용자가 접근 권한을 관리 할 수 있어서 보안 관리자가 업무가 줄어 든다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;- 권한을 수정이 쉽고 새로운 권한을 적용하기 쉽다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/233FE244583E568C24&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F233FE244583E568C24&quot; width=&quot;580&quot; height=&quot;253&quot; filename=&quot;DAC2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;DAC 단점&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;- 위의 그림처럼 권한을 부여한 사용자의 의도하지 않은 대로 정보가 흘러갈 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;- 루트의 권한이 너무 강력하다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;- 주체와 객체의 수가 증가한다면 복잡해지고 크기가 커지는 문제도 있다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;- 소유자를 쉽게 변경이 가능하다는 점을 악용한 프로그램들도 많다&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;Unix / Linux의 파일 시스템&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;리눅스의 파일 시스템의 정보는 inode&amp;nbsp;저장된다. inode에는&amp;nbsp;하나의 파일 또는 디렉터리의 &amp;nbsp;UID, GID, 소유권이 명시 되어있으며 12개의 비트로&amp;nbsp;특수권한 / 읽기 /&amp;nbsp;쓰기 /&amp;nbsp;실행&amp;nbsp;권한을 표기한다.&amp;nbsp;이&amp;nbsp;inode들은 디스크 상에 inode 테이블이나 리스트에 저장이 되어진다. 그리고 파일을 열면&amp;nbsp;해당 파일의&amp;nbsp;inode는&amp;nbsp;메인 메모리에 상주하는 inode 테이블에 저장된다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;b&gt;DAC 취약점 실습&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/22560238583E5F2918&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F22560238583E5F2918&quot; width=&quot;580&quot; height=&quot;259&quot; filename=&quot;DAC3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;위 그림은&amp;nbsp;file1의 소유주 csos가&amp;nbsp;user1에게&amp;nbsp;읽기 권한을 부여하는 과정이다.&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;리눅스에서 &lt;b&gt;setfacl 또는 chacl&amp;nbsp;명령어&lt;/b&gt;로 파일 시스템 상의 ACL을 변경할 수 있고 &lt;b&gt;getfacl 명령어&lt;/b&gt;로 해당 파일의 ACL정보를 확인 할 수 있다.&amp;nbsp;파일의 소유자의 UID, GID 정보와 각 사용자와 그룹에 대하여 권한,&amp;nbsp;마스크 정보도 추가된 확장된 ACL을 사용한다는 것을 알 수 있다.&amp;nbsp;파일 시스템에 접근하는 경우 파일의 ACL을 확인하여&amp;nbsp;&lt;b&gt;소유자 -&amp;gt; 지정한 유저 -&amp;gt; 그룹 -&amp;gt; 외부자&lt;/b&gt;로 순으로 연산 처리한다.&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 640px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/217F4438583E60FD11&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F217F4438583E60FD11&quot; width=&quot;640&quot; height=&quot;230&quot; filename=&quot;DAC4.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 2em; line-height: 1.8;&quot;&gt;user1으로 접속을 변경하고 csos가 읽기 권한을 준 file1을 복사하여 user1의 영역으로 복사하였다. 이제 user1은 file1의 사본 file2의 소유자이므로 file1에 대한 모든 권한을 행사할 수 있다. 이처럼 DAC는 원 소유자 csos의 의도와 다르게 흐름을 변경할 수 있는 취약점이 있다.&lt;/p&gt;</description>
      <category>Computer Science/Computer Security</category>
      <category>DAC</category>
      <category>getfacl</category>
      <category>setfacl</category>
      <category>리눅스</category>
      <category>보안</category>
      <category>접근제어</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/49</guid>
      <comments>https://ssoonidev.tistory.com/49#entry49comment</comments>
      <pubDate>Wed, 30 Nov 2016 14:25:04 +0900</pubDate>
    </item>
    <item>
      <title>[데이터베이스] 트리 구조 인덱스</title>
      <link>https://ssoonidev.tistory.com/48</link>
      <description>&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 18pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153); background-color: rgb(255, 255, 255);&quot;&gt;1. ISAM 트리구조&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;정적 트리구조&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;삽입 / 삭제를 하여도 트리의 구조가 변화하지 않는 것이 특징이다. 만일 페이지에 더 이상 데이터를 추가할 수 없다면 오버플로우 페이지를 생성하여 마지막 리프노드에 체인으로 연결하여 추가한다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px; text-align: center;; height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/27356E45583A77702D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F27356E45583A77702D&quot; width=&quot;580&quot; height=&quot;163&quot; filename=&quot;ISAM 트리 구조.png&quot; filemime=&quot;image/jpeg&quot; style=&quot;text-align: center;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;오버플로우 페이지&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;위의 그림 왼쪽&amp;nbsp;트리 구조에서 7을 삽입하는 연산이 수행한다고 가정하자. 루트에서 시작해서 리프 노드에 도달하면 7이 들어갈 노드가 (6*, 9*)로 채워져 들어갈 공간이 없다. 이때 ISAM 트리 구조는 트리의 구조를 변형시키지 않고&amp;nbsp;아래에 7이 들어갈 수 있는 공간을 만든 후 다음 7을 삽입한다. 이 때 새로 만들어진 이 공간을 오버플로&amp;nbsp;페이지라고 한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;오버플로&amp;nbsp;페이지를 생성함에 따라서 얻을 수 있는 이득은 &lt;b&gt;오버플로가 발생하는 경우&amp;nbsp;삽입 / 삭제 연산이 B+ 트리보다는 빠르다&lt;/b&gt;는 점이다. 아래에 설명할 B+트리는 동적 트리구조로 만약 위의 그림과 같은 상황이 발생하면 트리 구조를 변형을 하여 삽입을 시도하기 때문이다. 또한 Lock을 거는 경우 트리의 내용물에는 변화가 없기 때문에 &lt;b&gt;리프 노드에만 Lock을 걸면 된다.&lt;/b&gt;&amp;nbsp;하지만 오버플로&amp;nbsp;페이지가 많이 발생할수록 위 그림에서 눈치챘을지도 모르지만 데이터를 물리적으로 정렬하지 않기 때문에&lt;b&gt; 데이터를 탐색하는 속도는 늦어어진다&lt;/b&gt;는 단점이 있다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8;&quot;&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;2. B+ 트리구조&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;동&lt;/span&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;적 트리구조&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;ISAM 트리와 달리 삽입 / 삭제시에 트리구조가 변화가 발생하는 &amp;nbsp;특징이 있다. 또한 &lt;b&gt;Root 노드를 제외한 나머지&amp;nbsp;노드들은&amp;nbsp;데이터를 반드시 절반 이상 점유해야 하는&amp;nbsp;필수&amp;nbsp;조건&lt;/b&gt;이 있다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/21117A3C583A803C21&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F21117A3C583A803C21&quot; width=&quot;580&quot; height=&quot;244&quot; filename=&quot;B 트리.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;삽입 연산&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;위의 트리에서 8을 삽입한다고 가정하자. 8은 L2에 삽입되어야 하지만 현재 노드가 꽉 차있어서 삽입을 할 수 없다. B+ 트리는 오버플로&amp;nbsp;페이지를 생성하지 않고 &lt;b&gt;L2를 쪼개서 새로운 노드를 만드는 방법&lt;/b&gt;을 사용한다.&amp;nbsp;8을 포함한&lt;b&gt; L2의 구성 요소&amp;nbsp;(5,6,7,8,9) 중 중간 값인 7은 상위 단계 노드로 Copy up 되고&lt;/b&gt; &lt;b&gt;트리구조의 특징상 기존의 L2(5,6,7,8,9)는&amp;nbsp;L2(5,6), L3(7,8,9)로 갈라지게 되어 아래 그림과 같이 된다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/212B3D3F583A82282C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F212B3D3F583A82282C&quot; width=&quot;580&quot; height=&quot;222&quot; filename=&quot;B 트리2.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;따라서 삽입 연산 중&amp;nbsp;리프 노드에서 오버플로가 발생하면 B+트리는 해당 노드의 중간 값이 상위 노드로 Copy up 하는 과정이 발생한다. 만일 Copy-up 과정에서 상위 레벨 노드마다&amp;nbsp;오버플로가 발생한다면 어떻게 트리구조가 변화할까?&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2251A242583A87251E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2251A242583A87251E&quot; width=&quot;580&quot; height=&quot;186&quot; filename=&quot;B 트리3.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;위의 그림과 같은 트리에서 15가 삽입된다고 가정하자. 15가 삽입될 노드는 L4인데 L4가 가득 차있으니까 아까 위에서 Copy up을 시도한다. L4(13,14,15,16,18) 중에서 중간 값인 15가 상위 단계 노드로 Copy up이 되려는 순간 상위 노드가 꽉 차있다. 따라서 상위 노드도 분열이 되어야 하는데&amp;nbsp;이 과정에서 &lt;b&gt;분열된 상위 노드들을 연결할&amp;nbsp;새로운 루트 노드가 필요하다&lt;/b&gt;. &amp;nbsp;상위 노드의 값&amp;nbsp;(5, 7, 13, 15, 20) 중&lt;b&gt; 중간 값인 13이 한 단계 상승한 Push up 과정이 발생&lt;/b&gt;하고 나머지 (5,7) (15,20)이 다음 노드로 연결되는 아래 그림과 같은 트리구조로 변화한다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/227A9642583A872607&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F227A9642583A872607&quot; width=&quot;580&quot; height=&quot;236&quot; filename=&quot;B 트리4.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;기존 트리의 높이는 1이였지만 삽입의 결과로 높이가 2로 변화하였다. B+트리는 이처럼 트리의 구조를 유지하기 위해서 Copy up / Push up 알고리즘을 사용하고 경우에 따라서 트리의 높이가 변화할 수도 있다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;삭제 연산&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;삭제 연산에서 가장 중요한 키워드는 루트를 제외한 &lt;b&gt;각 노드는 점유율을 항상 50%이상 유지한다&lt;/b&gt;는 점이다. 만약 50프로가 안된다면 인접한 노드에서 빌려온다. 그런데 빌려 오니까 인접 노드도 점유율 50%를 만족하지 못한다면 인접 노드와 병합하는 방법으로 점유율 50%를 유지한다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/227A9642583A872607&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F227A9642583A872607&quot; width=&quot;580&quot; height=&quot;236&quot; filename=&quot;B 트리4.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;script async src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-2538641355026813&quot;
     data-ad-slot=&quot;5755941481&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;위 그림(아까 삽입한 결과)에서 &lt;b&gt;24*&lt;/b&gt;를 삭제하는 연산을 수행한다고 하자. L6은 이제 데이터가 (21*)만 존재하게 되어 &lt;b&gt;데이터의 점유율이 50프로 미만&lt;/b&gt;이 되어버렸다. 따라서 인접 노드인 L5에서 데이터를 (18*)를 빌려온다. L5도 (15*, 16*)을 가지고 있고 L6도 (18*, 21*)로 50프로를 유지할 수 있으므로 &lt;b&gt;L6의 최솟값&amp;nbsp;18*을 상위 노드에 20*으로 Copy up 하는 것으로 마무리&lt;/b&gt;한다. 결과는 아래의 그림과 같다.&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/21031636583A8BF016&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F21031636583A8BF016&quot; width=&quot;580&quot; height=&quot;227&quot; filename=&quot;B 트리5.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;이번에는 L1의 1을 삭제한다고 가정하자. 1이 삭제된 L1은 (2*)만 남아 50프로를 유지할 수 없고 인접 노드 L2의 5*를 빌려서 채울려고 하지만&lt;b&gt; 그렇게 진행하면 L2도 (6*)만 남아&amp;nbsp;점유율 50프로를 만족하지 못한다. 따라서 L1과 L2는 합병이 된다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/243B5741583A8DC61D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F243B5741583A8DC61D&quot; width=&quot;580&quot; height=&quot;241&quot; filename=&quot;B 트리6.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;합병을 하고 상위 노드 I1의 5*를 삭제하니 &lt;b&gt;I1도 50프로를 만족하지 못한다&lt;/b&gt;. 인접 노드 L2에서 데이터를 하나 빌릴려고 하니 연산 결과 L2도 50%를 만족하지 못한다. 따라서&amp;nbsp;&lt;b&gt;합병을 해야하는 상황&lt;/b&gt;이 발생한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em; text-align: left; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 580px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2115D33C583A90B030&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2115D33C583A90B030&quot; width=&quot;580&quot; height=&quot;178&quot; filename=&quot;B 트리7.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;합병을 할 때 &lt;b&gt;상위 노드의 값은 한 단계 내려와 Pull down되어 I1,&amp;nbsp;I2와 함께 합쳐진다.&lt;/b&gt;&amp;nbsp; 그 외 여기서 다루진 못했지만 만약 I1이 데이터가 4개 있고 삭제당한 I2의 데이터가 1개 있다면 합병하게 되면 5개가 돼버려서 오버플로가 발생하는 경우가 있다. 이 경우에는 &lt;b&gt;재분산(Re-distribution)&lt;/b&gt;을 사용하여 2개 / 3개로 다시 나누어 주는 과정이 있다.&amp;nbsp;&lt;b&gt;기존의 트리의 높이는 2였지만 모든 삭제 연산을 수행한 후에 보면 높이 1의 트리로 변화하였다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(5, 0, 153);&quot;&gt;트리 구조를 유지하면서 이득 / 손해&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;line-height: 1.8; margin-left: 2em;&quot;&gt;우선 이득은 데이터 탐색 속도가 ISAM보다 빠르다. 오버플로&amp;nbsp;페이지가 발생하지 않고 데이터가 삽입되면 그 데이터를 물리적으로 정렬하기 때문이다. 대신 삭제나 삽입의 경우 트리 구조를 유지해야 하는 면에서 ISAM에 비하면 복잡한 과정이 있기 때문에 비용이 좀 더 드는 손해는 있다. 하지만 인덱스를 사용하는 이유는 탐색 속도의 향상이므로 대부분 상용 DBMS에서는 B+ 트리를 사용하여 인덱스를 만든다.&lt;/p&gt;</description>
      <category>Computer Science/데이터베이스</category>
      <category>B+트리</category>
      <category>isam</category>
      <category>데이터베이스</category>
      <category>인덱스</category>
      <author>수니감자</author>
      <guid isPermaLink="true">https://ssoonidev.tistory.com/48</guid>
      <comments>https://ssoonidev.tistory.com/48#entry48comment</comments>
      <pubDate>Sun, 27 Nov 2016 17:17:37 +0900</pubDate>
    </item>
  </channel>
</rss>