From 332d0fa08390f45c3307a511c7750e86e03e784f Mon Sep 17 00:00:00 2001 From: D-Gun Date: Wed, 20 Jan 2021 00:02:16 +0900 Subject: [PATCH 01/59] updates --- .../config/applicationhost.config | 1025 +++++++++++++++++ .vs/D-Gun.github.io/v16/.suo | Bin 0 -> 49152 bytes .vs/ProjectSettings.json | 3 + .vs/VSWorkspaceState.json | 11 + .vs/slnx.sqlite | Bin 0 -> 249856 bytes 404.md | 2 +- Gemfile | 3 +- Gemfile.lock | 27 +- _config.yml | 14 +- _data/authors.yml | 24 +- _featured_categories/Git.md | 10 + _featured_categories/Java.md | 10 + _featured_categories/c.md | 10 + _featured_categories/dev.md | 10 - _featured_categories/envOps.md | 10 - _featured_categories/review.md | 2 +- _featured_categories/sql.md | 10 + _featured_categories/startup.md | 10 - _featured_categories/unclassified.md | 10 - _posts/2019-03-30-welcome-to-jekyll.markdown | 25 - ...02-review-book-hyperledger-fabric.markdown | 101 -- ...04-18-review-book-dl-from-scratch.markdown | 80 -- _posts/2019-05-01-dev-r-rinstall.markdown | 90 -- _posts/2019-05-01-envops-blog-intro.markdown | 192 --- _posts/2019-05-02-envops-blog-theme.markdown | 62 - ...3-envops-blog-github-pages-jekyll.markdown | 231 ---- ...5-04-envops-blog-posting-prose-io.markdown | 77 -- ...19-05-11-envops-blog-tipue-search.markdown | 157 --- ...-05-21-envops-blog-how-to-use-git.markdown | 214 ---- ...9-05-22-envops-blog-how-to-use-md.markdown | 379 ------ ...019-06-05-review-book-intro-ml-py.markdown | 130 --- ...06-20-review-book-self-study-java.markdown | 113 -- .../2019-06-23-dev-competition-list.markdown | 60 - _posts/2019-06-25-think-future-ai.markdown | 140 --- ...-07-08-review-book-game-algorithm.markdown | 130 --- ...v-papertomath-abroad-academy-list.markdown | 282 ----- .../2019-08-05-review-book-nlp-camp.markdown | 125 -- ...review-book-ga-facebook-marketing.markdown | 115 -- _posts/2019-08-23-dev-ml-colab.markdown | 217 ---- _posts/2019-08-25-dev-ml-insight.markdown | 105 -- ...19-08-27-dev-papertomath-paper-io.markdown | 367 ------ _posts/2019-09-04-review-book-dl-nal.markdown | 138 --- .../2019-09-05-favorites-economy-fav.markdown | 113 -- ...019-10-04-review-book-ml-cookbook.markdown | 121 -- ...-review-book-numpy-linear-algebra.markdown | 148 --- ...1-review-book-dynamic-programming.markdown | 167 --- .../2019-11-22-review-book-pycharm.markdown | 142 --- _posts/2019-12-15-review-book-GAN.markdown | 163 --- ...2019-12-26-review-book-git-github.markdown | 154 --- .../2019-12-27-review-book-us-stock.markdown | 172 --- .../2020-01-17-review-book-alphazero.markdown | 191 --- .../2020-01-22-review-book-tableau.markdown | 137 --- ...02-14-dev-dl-setting-local-python.markdown | 348 ------ ...eview-book-data-anomaly-detection.markdown | 152 --- ...03-13-review-book-ml-python-slice.markdown | 142 --- ...03-19-review-book-startup-science.markdown | 144 --- ...20-03-28-review-book-everyones-dl.markdown | 131 --- ...04-03-review-book-doit-android-10.markdown | 153 --- ...eview-book-being-a-good-executive.markdown | 118 -- ...tion-how-to-become-data-scientist.markdown | 314 ----- ...review-book-ai-expert-in-one-year.markdown | 84 -- ...og-how-to-register-google-adsense.markdown | 83 -- ...g-korean-history-proficiency-test.markdown | 51 - .../2020-04-23-review-book-targeted.markdown | 47 - ...-win-friends-and-influence-people.markdown | 84 -- ...writing-books-for-ordinary-people.markdown | 144 --- ...04-26-review-book-refactoring-2nd.markdown | 104 -- ...-05-11-review-book-run-company-10.markdown | 68 -- ...020-05-12-review-book-think-julia.markdown | 60 - ...review-book-japan-economy-30years.markdown | 61 - .../2020-05-22-review-book-grow-rich.markdown | 88 -- ...book-leadershift-the-11-essential.markdown | 82 -- ...0-05-27-review-book-head-first-go.markdown | 82 -- _posts/2020-05-29-review-book-range.markdown | 112 -- ...5-30-review-book-successful-aging.markdown | 148 --- ...review-book-task-exploration-king.markdown | 131 --- _posts/2020-06-09-review-book-xai.markdown | 176 --- ...4-review-book-age-40-meet-history.markdown | 93 -- ...6-15-review-book-gift-my-children.markdown | 100 -- ...6-17-review-book-defending-number.markdown | 74 -- .../2020-06-18-review-book-lab-rats.markdown | 65 -- ...20-review-book-cant-change-others.markdown | 126 -- ...-23-review-book-my-smart-work-env.markdown | 106 -- ...view-book-habit-of-reading-trends.markdown | 115 -- ...-review-book-house-purchase-drift.markdown | 50 - ...-book-secret-of-personal-branding.markdown | 121 -- ...2020-07-04-review-book-coronomics.markdown | 162 --- .../2020-07-05-review-book-dl-and-go.markdown | 133 --- ...-07-06-review-book-automate-tasks.markdown | 94 -- .../2020-07-07-review-book-meet-CEO.markdown | 160 --- ...book-deep-learning-in-the-browser.markdown | 101 -- ...9-review-book-neural-net-textbook.markdown | 130 --- ...13-review-book-12-laws-persuasion.markdown | 93 -- ...20-07-16-review-book-kaggle-guide.markdown | 140 --- ...0-07-18-review-book-homo-spacecus.markdown | 162 --- ...-19-review-book-first-programming.markdown | 108 -- ...-review-book-robotics-20-projects.markdown | 131 --- ...27-review-book-do-it-ds-algorithm.markdown | 100 -- ...ew-book-class-way-home-new-normal.markdown | 190 --- ...3-review-book-for-noctural-humans.markdown | 56 - ...iew-book-for-sales-of-strategists.markdown | 94 -- ...8-13-review-book-miracle-equation.markdown | 153 --- ...08-14-review-book-miss-everything.markdown | 61 - ...8-15-review-book-pungent-equation.markdown | 111 -- ...8-review-book-between-40s-and-50s.markdown | 103 -- ...20-08-21-review-book-ai-marketing.markdown | 61 - ...-review-book-speaking-matrix-zero.markdown | 74 -- _posts/2020-08-26-review-book-reload.markdown | 52 - ...2020-08-28-review-book-brain-lies.markdown | 113 -- _posts/2020-08-29-review-book-amway.markdown | 104 -- ...-08-30-review-book-to-do-list-250.markdown | 113 -- ...eview-book-testing-business-ideas.markdown | 84 -- .../2020-09-02-review-book-game-over.markdown | 152 --- ...2020-09-04-review-book-principles.markdown | 165 --- ...09-11-review-book-bilingual-brain.markdown | 161 --- ...020-09-12-review-book-ai-comics-1.markdown | 72 -- ...020-09-16-review-book-data-3-laws.markdown | 113 -- ...eview-book-data-science-interview.markdown | 181 --- ...5-review-book-wisdom-babilon-rich.markdown | 92 -- ...review-book-ai-for-quant-strategy.markdown | 110 -- ...7-review-book-emotion-arrangement.markdown | 113 -- .../2020-09-28-review-book-sns-pwa.markdown | 56 - ...10-04-review-book-big-dept-crises.markdown | 102 -- ...book-crypto-laundering-prevention.markdown | 99 -- ...iew-book-world-future-report-2021.markdown | 100 -- ...-10-24-review-book-gans-in-action.markdown | 79 -- .../2020-10-31-review-book-R-for-all.markdown | 106 -- ...-review-book-2020-real-estate-tax.markdown | 140 --- ...020-11-05-review-book-booket-list.markdown | 155 --- ...-11-07-review-book-elastic-habits.markdown | 124 -- ...book-financial-engineering-recipe.markdown | 56 - ...eview-book-principles-for-success.markdown | 110 -- .../2020-11-28-review-book-quantum.markdown | 94 -- ...9-review-book-untact-economy-2021.markdown | 71 -- ...ook-big-data-engineer-certificate.markdown | 150 --- ...2020-12-02-review-book-class-rich.markdown | 133 --- ...-18-review-book-DL-from-scratch-3.markdown | 76 -- ...-big-data-engineer-certificate-yj.markdown | 115 -- ...26-review-book-haljjak-psychology.markdown | 48 - ...2020-12-28-review-book-do-nothing.markdown | 67 -- ...-31-review-book-no-wonder-nervous.markdown | 58 - ...-01-01-review-book-economist-2021.markdown | 57 - ...-02-review-book-probability-again.markdown | 100 -- ...2021-01-19-think-hello-world-2021.markdown | 21 + about.md | 8 +- assets/img/cosmo.png | Bin 0 -> 52489 bytes assets/img/main_left.jpg | Bin 319072 -> 0 bytes assets/img/me.jpg | Bin 163550 -> 5635 bytes assets/img/think/welcome.png | Bin 0 -> 15947 bytes favicon.ico | Bin 561 -> 972 bytes 150 files changed, 1143 insertions(+), 15210 deletions(-) create mode 100644 .vs/D-Gun.github.io/config/applicationhost.config create mode 100644 .vs/D-Gun.github.io/v16/.suo create mode 100644 .vs/ProjectSettings.json create mode 100644 .vs/VSWorkspaceState.json create mode 100644 .vs/slnx.sqlite create mode 100644 _featured_categories/Git.md create mode 100644 _featured_categories/Java.md create mode 100644 _featured_categories/c.md delete mode 100644 _featured_categories/dev.md delete mode 100644 _featured_categories/envOps.md create mode 100644 _featured_categories/sql.md delete mode 100644 _featured_categories/startup.md delete mode 100644 _featured_categories/unclassified.md delete mode 100644 _posts/2019-03-30-welcome-to-jekyll.markdown delete mode 100644 _posts/2019-04-02-review-book-hyperledger-fabric.markdown delete mode 100644 _posts/2019-04-18-review-book-dl-from-scratch.markdown delete mode 100644 _posts/2019-05-01-dev-r-rinstall.markdown delete mode 100644 _posts/2019-05-01-envops-blog-intro.markdown delete mode 100644 _posts/2019-05-02-envops-blog-theme.markdown delete mode 100644 _posts/2019-05-03-envops-blog-github-pages-jekyll.markdown delete mode 100644 _posts/2019-05-04-envops-blog-posting-prose-io.markdown delete mode 100644 _posts/2019-05-11-envops-blog-tipue-search.markdown delete mode 100644 _posts/2019-05-21-envops-blog-how-to-use-git.markdown delete mode 100644 _posts/2019-05-22-envops-blog-how-to-use-md.markdown delete mode 100644 _posts/2019-06-05-review-book-intro-ml-py.markdown delete mode 100644 _posts/2019-06-20-review-book-self-study-java.markdown delete mode 100644 _posts/2019-06-23-dev-competition-list.markdown delete mode 100644 _posts/2019-06-25-think-future-ai.markdown delete mode 100644 _posts/2019-07-08-review-book-game-algorithm.markdown delete mode 100644 _posts/2019-07-10-dev-papertomath-abroad-academy-list.markdown delete mode 100644 _posts/2019-08-05-review-book-nlp-camp.markdown delete mode 100644 _posts/2019-08-20-review-book-ga-facebook-marketing.markdown delete mode 100644 _posts/2019-08-23-dev-ml-colab.markdown delete mode 100644 _posts/2019-08-25-dev-ml-insight.markdown delete mode 100644 _posts/2019-08-27-dev-papertomath-paper-io.markdown delete mode 100644 _posts/2019-09-04-review-book-dl-nal.markdown delete mode 100644 _posts/2019-09-05-favorites-economy-fav.markdown delete mode 100644 _posts/2019-10-04-review-book-ml-cookbook.markdown delete mode 100644 _posts/2019-10-28-review-book-numpy-linear-algebra.markdown delete mode 100644 _posts/2019-11-11-review-book-dynamic-programming.markdown delete mode 100644 _posts/2019-11-22-review-book-pycharm.markdown delete mode 100644 _posts/2019-12-15-review-book-GAN.markdown delete mode 100644 _posts/2019-12-26-review-book-git-github.markdown delete mode 100644 _posts/2019-12-27-review-book-us-stock.markdown delete mode 100644 _posts/2020-01-17-review-book-alphazero.markdown delete mode 100644 _posts/2020-01-22-review-book-tableau.markdown delete mode 100644 _posts/2020-02-14-dev-dl-setting-local-python.markdown delete mode 100644 _posts/2020-03-11-review-book-data-anomaly-detection.markdown delete mode 100644 _posts/2020-03-13-review-book-ml-python-slice.markdown delete mode 100644 _posts/2020-03-19-review-book-startup-science.markdown delete mode 100644 _posts/2020-03-28-review-book-everyones-dl.markdown delete mode 100644 _posts/2020-04-03-review-book-doit-android-10.markdown delete mode 100644 _posts/2020-04-04-review-book-being-a-good-executive.markdown delete mode 100644 _posts/2020-04-12-dev-competition-how-to-become-data-scientist.markdown delete mode 100644 _posts/2020-04-18-review-book-ai-expert-in-one-year.markdown delete mode 100644 _posts/2020-04-20-envops-blog-how-to-register-google-adsense.markdown delete mode 100644 _posts/2020-04-22-review-book-sinagong-korean-history-proficiency-test.markdown delete mode 100644 _posts/2020-04-23-review-book-targeted.markdown delete mode 100644 _posts/2020-04-24-review-book-how-to-win-friends-and-influence-people.markdown delete mode 100644 _posts/2020-04-25-review-book-writing-books-for-ordinary-people.markdown delete mode 100644 _posts/2020-04-26-review-book-refactoring-2nd.markdown delete mode 100644 _posts/2020-05-11-review-book-run-company-10.markdown delete mode 100644 _posts/2020-05-12-review-book-think-julia.markdown delete mode 100644 _posts/2020-05-16-review-book-japan-economy-30years.markdown delete mode 100644 _posts/2020-05-22-review-book-grow-rich.markdown delete mode 100644 _posts/2020-05-26-review-book-leadershift-the-11-essential.markdown delete mode 100644 _posts/2020-05-27-review-book-head-first-go.markdown delete mode 100644 _posts/2020-05-29-review-book-range.markdown delete mode 100644 _posts/2020-05-30-review-book-successful-aging.markdown delete mode 100644 _posts/2020-06-08-review-book-task-exploration-king.markdown delete mode 100644 _posts/2020-06-09-review-book-xai.markdown delete mode 100644 _posts/2020-06-14-review-book-age-40-meet-history.markdown delete mode 100644 _posts/2020-06-15-review-book-gift-my-children.markdown delete mode 100644 _posts/2020-06-17-review-book-defending-number.markdown delete mode 100644 _posts/2020-06-18-review-book-lab-rats.markdown delete mode 100644 _posts/2020-06-20-review-book-cant-change-others.markdown delete mode 100644 _posts/2020-06-23-review-book-my-smart-work-env.markdown delete mode 100644 _posts/2020-06-26-review-book-habit-of-reading-trends.markdown delete mode 100644 _posts/2020-07-02-review-book-house-purchase-drift.markdown delete mode 100644 _posts/2020-07-03-review-book-secret-of-personal-branding.markdown delete mode 100644 _posts/2020-07-04-review-book-coronomics.markdown delete mode 100644 _posts/2020-07-05-review-book-dl-and-go.markdown delete mode 100644 _posts/2020-07-06-review-book-automate-tasks.markdown delete mode 100644 _posts/2020-07-07-review-book-meet-CEO.markdown delete mode 100644 _posts/2020-07-08-review-book-deep-learning-in-the-browser.markdown delete mode 100644 _posts/2020-07-09-review-book-neural-net-textbook.markdown delete mode 100644 _posts/2020-07-13-review-book-12-laws-persuasion.markdown delete mode 100644 _posts/2020-07-16-review-book-kaggle-guide.markdown delete mode 100644 _posts/2020-07-18-review-book-homo-spacecus.markdown delete mode 100644 _posts/2020-07-19-review-book-first-programming.markdown delete mode 100644 _posts/2020-07-23-review-book-robotics-20-projects.markdown delete mode 100644 _posts/2020-07-27-review-book-do-it-ds-algorithm.markdown delete mode 100644 _posts/2020-08-02-review-book-class-way-home-new-normal.markdown delete mode 100644 _posts/2020-08-03-review-book-for-noctural-humans.markdown delete mode 100644 _posts/2020-08-10-review-book-for-sales-of-strategists.markdown delete mode 100644 _posts/2020-08-13-review-book-miracle-equation.markdown delete mode 100644 _posts/2020-08-14-review-book-miss-everything.markdown delete mode 100644 _posts/2020-08-15-review-book-pungent-equation.markdown delete mode 100644 _posts/2020-08-18-review-book-between-40s-and-50s.markdown delete mode 100644 _posts/2020-08-21-review-book-ai-marketing.markdown delete mode 100644 _posts/2020-08-21-review-book-speaking-matrix-zero.markdown delete mode 100644 _posts/2020-08-26-review-book-reload.markdown delete mode 100644 _posts/2020-08-28-review-book-brain-lies.markdown delete mode 100644 _posts/2020-08-29-review-book-amway.markdown delete mode 100644 _posts/2020-08-30-review-book-to-do-list-250.markdown delete mode 100644 _posts/2020-09-01-review-book-testing-business-ideas.markdown delete mode 100644 _posts/2020-09-02-review-book-game-over.markdown delete mode 100644 _posts/2020-09-04-review-book-principles.markdown delete mode 100644 _posts/2020-09-11-review-book-bilingual-brain.markdown delete mode 100644 _posts/2020-09-12-review-book-ai-comics-1.markdown delete mode 100644 _posts/2020-09-16-review-book-data-3-laws.markdown delete mode 100644 _posts/2020-09-19-review-book-data-science-interview.markdown delete mode 100644 _posts/2020-09-25-review-book-wisdom-babilon-rich.markdown delete mode 100644 _posts/2020-09-26-review-book-ai-for-quant-strategy.markdown delete mode 100644 _posts/2020-09-27-review-book-emotion-arrangement.markdown delete mode 100644 _posts/2020-09-28-review-book-sns-pwa.markdown delete mode 100644 _posts/2020-10-04-review-book-big-dept-crises.markdown delete mode 100644 _posts/2020-10-17-review-book-crypto-laundering-prevention.markdown delete mode 100644 _posts/2020-10-20-review-book-world-future-report-2021.markdown delete mode 100644 _posts/2020-10-24-review-book-gans-in-action.markdown delete mode 100644 _posts/2020-10-31-review-book-R-for-all.markdown delete mode 100644 _posts/2020-11-03-review-book-2020-real-estate-tax.markdown delete mode 100644 _posts/2020-11-05-review-book-booket-list.markdown delete mode 100644 _posts/2020-11-07-review-book-elastic-habits.markdown delete mode 100644 _posts/2020-11-19-review-book-financial-engineering-recipe.markdown delete mode 100644 _posts/2020-11-23-review-book-principles-for-success.markdown delete mode 100644 _posts/2020-11-28-review-book-quantum.markdown delete mode 100644 _posts/2020-11-29-review-book-untact-economy-2021.markdown delete mode 100644 _posts/2020-11-30-review-book-big-data-engineer-certificate.markdown delete mode 100644 _posts/2020-12-02-review-book-class-rich.markdown delete mode 100644 _posts/2020-12-18-review-book-DL-from-scratch-3.markdown delete mode 100644 _posts/2020-12-19-review-book-big-data-engineer-certificate-yj.markdown delete mode 100644 _posts/2020-12-26-review-book-haljjak-psychology.markdown delete mode 100644 _posts/2020-12-28-review-book-do-nothing.markdown delete mode 100644 _posts/2020-12-31-review-book-no-wonder-nervous.markdown delete mode 100644 _posts/2021-01-01-review-book-economist-2021.markdown delete mode 100644 _posts/2021-01-02-review-book-probability-again.markdown create mode 100644 _posts/2021-01-19-think-hello-world-2021.markdown create mode 100644 assets/img/cosmo.png delete mode 100644 assets/img/main_left.jpg create mode 100644 assets/img/think/welcome.png diff --git a/.vs/D-Gun.github.io/config/applicationhost.config b/.vs/D-Gun.github.io/config/applicationhost.config new file mode 100644 index 000000000..bd44eab35 --- /dev/null +++ b/.vs/D-Gun.github.io/config/applicationhost.config @@ -0,0 +1,1025 @@ + + + + + + + +
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+
+ + +
+
+
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo new file mode 100644 index 0000000000000000000000000000000000000000..b38eaf34984c926d3bb92d61a51a2eee283fabec GIT binary patch literal 49152 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 Z8HjX5Cqzd?8lnTDJ)#|=Eg}`s=HG0-s9692 literal 0 HcmV?d00001 diff --git a/404.md b/404.md index f71d6cf8a..5e3da3e49 100644 --- a/404.md +++ b/404.md @@ -2,4 +2,4 @@ layout: not-found title: "404: Page not found" permalink: 404.html ---- +--- \ No newline at end of file diff --git a/Gemfile b/Gemfile index f4f057d7b..d6526cd70 100644 --- a/Gemfile +++ b/Gemfile @@ -6,4 +6,5 @@ gem "jekyll-feed", "~> 0.9" gem "jekyll-sitemap", "~> 1.0" gem "jekyll-redirect-from", "~> 0.12" gem "classifier-reborn" -gem 'wdm', '>= 0.1.0' \ No newline at end of file +gem 'wdm', '>= 0.1.0' +gem "kramdown-parser-gfm" \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index dde9c4fdd..8db4ee796 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -6,31 +6,31 @@ GEM classifier-reborn (2.2.0) fast-stemmer (~> 1.0) colorator (1.1.0) - concurrent-ruby (1.1.6) - em-websocket (0.5.1) + concurrent-ruby (1.1.7) + em-websocket (0.5.2) eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) eventmachine (1.2.7-x64-mingw32) fast-stemmer (1.0.2) - ffi (1.12.2-x64-mingw32) + ffi (1.14.2-x64-mingw32) forwardable-extended (2.6.0) http_parser.rb (0.6.0) i18n (0.9.5) concurrent-ruby (~> 1.0) - jekyll (3.8.6) + jekyll (3.9.0) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) i18n (~> 0.7) jekyll-sass-converter (~> 1.0) jekyll-watch (~> 2.0) - kramdown (~> 1.14) + kramdown (>= 1.17, < 3) liquid (~> 4.0) mercenary (~> 0.3.3) pathutil (~> 0.9) rouge (>= 1.7, < 4) safe_yaml (~> 1.0) - jekyll-feed (0.13.0) + jekyll-feed (0.15.1) jekyll (>= 3.7, < 5.0) jekyll-paginate (1.1.0) jekyll-redirect-from (0.16.0) @@ -41,19 +41,23 @@ GEM jekyll (>= 3.7, < 5.0) jekyll-watch (2.2.1) listen (~> 3.0) - kramdown (1.17.0) + kramdown (2.3.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) liquid (4.0.3) - listen (3.2.1) + listen (3.4.1) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (4.0.3) - rb-fsevent (0.10.3) + public_suffix (4.0.6) + rb-fsevent (0.10.4) rb-inotify (0.10.1) ffi (~> 1.0) - rouge (3.17.0) + rexml (3.2.4) + rouge (3.26.0) safe_yaml (1.0.5) sass (3.7.4) sass-listen (~> 4.0.0) @@ -72,6 +76,7 @@ DEPENDENCIES jekyll-paginate (~> 1.1) jekyll-redirect-from (~> 0.12) jekyll-sitemap (~> 1.0) + kramdown-parser-gfm wdm (>= 0.1.0) BUNDLED WITH diff --git a/_config.yml b/_config.yml index c67f084a0..05b982dc3 100644 --- a/_config.yml +++ b/_config.yml @@ -2,31 +2,31 @@ # User configuration # ----------------------------------------------------------------------------- -title: TheoryDB +title: D-Gun # The unique resource location of your page. # Set to `https://.github.io` when hosting on GitHub Pages -url: https://theorydb.github.io +url: 'https://D-Gun.github.io' # Set to '' when hosting a blog on GitHub Pages, ie on `//.github.io` # Set to '/' when using the `gh-pages` branch of a repository baseurl: "" # A very short description of your page -tagline: "All roads lead to data." +tagline: "Wannabe a Good Developer" # A short description of the page, used in the sidebar and as fallback for the meta description tag. # Markdown enabled, but don't use more than one paragraph (enforced by `>`) description: > - Data science enthusiast and addict :) + Wannabe a Good Developer # This should be the same author as first entry in `_data/authors.yml` author: - name: min - email: theorydb@gmail.com + name: Gun + email: daegeungim7301@gmail.com # Fallback image and color -image: /assets/img/main_left.jpg +image: /assets/img/cosmo.png color: '#4f86aa' # The font used for headings. Expects a string that is a valid CSS font-family value. diff --git a/_data/authors.yml b/_data/authors.yml index 624dbb1dc..b0a003c16 100644 --- a/_data/authors.yml +++ b/_data/authors.yml @@ -2,13 +2,13 @@ # Must be the same as `author` in `_config.yml`. # Change `qwtel` to your shortname (used in the front matter to set a page's author, e.g. `author: qwtel`). theorydb: - name: min - email: theorydb@gmail.com + name: Gun + email: daegeungim7301@gmail.com # Used at the bottom of each page and at the top of the `about` layout # Markdown enabled, can use multiple paragraphs (enabled by `|`) about: | - Data science enthusiast and addict :) + Wannabe a Good Developer # This photo will be used in the about section picture: @@ -22,7 +22,7 @@ theorydb: # Comment/uncommet to show/hide # Icons appear in order, can be rearranged: social: - facebook: cantouchmin + #facebook: cantouchmin # twitter: # google: # vk: @@ -43,10 +43,10 @@ theorydb: # steam: # reddit: # tumblr: - # pinterest: + pinterest: daegeungim7301 # foursquare: # yelp: - github: theorydb + github: D-Gun # stackoverflow: # npm: # hackernews: @@ -57,13 +57,13 @@ theorydb: # delicious: # stumbleupon: # paypal: - email: mailto:theorydb@gmail.com - rss: https://theorydb.github.io/feed.xml + email: mailto:dagegungim7301@gmail.com + # rss: <>https://D-Gun.github.io/feed.xml # Another author mdo: - name: - email: + name: + email: about: | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. @@ -72,7 +72,7 @@ mdo: Open `_data/authors.yml` to edit this text. picture: https://placehold.it/128x128 social: - github: - twitter: + github: + pintrest: image: 'data:image/gif;base64,R0lGODlhAQABAPAAACAgIP///yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==' # http://jsfiddle.net/LPxrT/ color: '#268bd2' diff --git a/_featured_categories/Git.md b/_featured_categories/Git.md new file mode 100644 index 000000000..c164cb96f --- /dev/null +++ b/_featured_categories/Git.md @@ -0,0 +1,10 @@ +--- +layout: list +title: Git +slug: git +menu: true +submenu: false +order: 2 +description: > + git관련. +--- diff --git a/_featured_categories/Java.md b/_featured_categories/Java.md new file mode 100644 index 000000000..bc31d101a --- /dev/null +++ b/_featured_categories/Java.md @@ -0,0 +1,10 @@ +--- +layout: list +title: Java +slug: java +menu: true +submenu: false +order: 2 +description: > + java관련. +--- diff --git a/_featured_categories/c.md b/_featured_categories/c.md new file mode 100644 index 000000000..0cfe81d04 --- /dev/null +++ b/_featured_categories/c.md @@ -0,0 +1,10 @@ +--- +layout: list +title: C +slug: c +menu: true +submenu: true +order: 3 +description: > + C언어 관련. +--- diff --git a/_featured_categories/dev.md b/_featured_categories/dev.md deleted file mode 100644 index 6c52c9946..000000000 --- a/_featured_categories/dev.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: list -title: Dev -slug: dev -menu: true -submenu: true -order: 3 -description: > - 주로 Data Science 및 그 외 개발에 관련된 모든 것. ---- diff --git a/_featured_categories/envOps.md b/_featured_categories/envOps.md deleted file mode 100644 index 3866ec0ca..000000000 --- a/_featured_categories/envOps.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: list -title: EnvOps -slug: envops -menu: true -submenu: false -order: 2 -description: > - 주로 인프라 구축 및 IDE 환경설정 등 환경을 구축하는 방법에 관한 글. ---- diff --git a/_featured_categories/review.md b/_featured_categories/review.md index c919a3ac8..9058777eb 100644 --- a/_featured_categories/review.md +++ b/_featured_categories/review.md @@ -6,5 +6,5 @@ menu: true submenu: false order: 6 description: > - IT 서적 및 그 외 다양한 서적을 읽고 작성한 리뷰 모음. + 기존 진행했던 프로젝트나 다른 프로젝트 뜯어보기. --- diff --git a/_featured_categories/sql.md b/_featured_categories/sql.md new file mode 100644 index 000000000..c59e0fc4c --- /dev/null +++ b/_featured_categories/sql.md @@ -0,0 +1,10 @@ +--- +layout: list +title: SQL +slug: sql +menu: true +submenu: false +order: 5 +description: > + SQL관련. +--- diff --git a/_featured_categories/startup.md b/_featured_categories/startup.md deleted file mode 100644 index 801ccd3ee..000000000 --- a/_featured_categories/startup.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: list -title: Startup -slug: startup -menu: true -submenu: false -order: 4 -description: > - 스타트업 정보조사 및 예행연습. ---- diff --git a/_featured_categories/unclassified.md b/_featured_categories/unclassified.md deleted file mode 100644 index 029ec590d..000000000 --- a/_featured_categories/unclassified.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: list -title: Unclassified -slug: unclassified -menu: true -submenu: false -order: 5 -description: > - 경제. 취미. 그 외 살면서 필요한 기타 문서. ---- diff --git a/_posts/2019-03-30-welcome-to-jekyll.markdown b/_posts/2019-03-30-welcome-to-jekyll.markdown deleted file mode 100644 index de9e08004..000000000 --- a/_posts/2019-03-30-welcome-to-jekyll.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: post -title: "Welcome to Jekyll!" -date: 2019-03-30 20:38:27 +0900 -categories: jekyll update ---- -You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. - -To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. - -Jekyll also offers powerful support for code snippets: - -{% highlight ruby %} -def print_hi(name) - puts "Hi, #{name}" -end -print_hi('Tom') -#=> prints 'Hi, Tom' to STDOUT. -{% endhighlight %} - -Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. - -[jekyll-docs]: https://jekyllrb.com/docs/home -[jekyll-gh]: https://github.com/jekyll/jekyll -[jekyll-talk]: https://talk.jekyllrb.com/ diff --git a/_posts/2019-04-02-review-book-hyperledger-fabric.markdown b/_posts/2019-04-02-review-book-hyperledger-fabric.markdown deleted file mode 100644 index c6e175b74..000000000 --- a/_posts/2019-04-02-review-book-hyperledger-fabric.markdown +++ /dev/null @@ -1,101 +0,0 @@ ---- -layout: post -title: "[리뷰] 하이퍼레저 블록체인 개발" -subtitle: "하이퍼레저 블록체인 개발" -categories: review -tags: review blockchain -comments: true -header-img: img/review/2019-04-02-review-book-hyperledger-fabric-2-Cover.png ---- - -## 개요 -> 본 리뷰는 `한빛미디어` 출판사 `"하이퍼레저 블록체인 개발"`을 읽고 얻은 지식을 정리한 글입니다. - -- 목차 - - [블록체인과 비트코인, 그리고 리눅스 재단의 선택](#블록체인과-비트코인-그리고-리눅스-재단의-선택) - - [하이퍼레저 패브릭(Hyperledger Fabric)](#하이퍼레저-패브릭) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [책의 구성 및 요약](#책의-구성-및-요약) - - [요약하며...](#요약하며) - - - -## 블록체인과 비트코인, 그리고 리눅스 재단의 선택 ---- -2017년 여름부터 2018년 1월까지 비트코인의 열풍은 그 어느 때 보다도 뜨거웠다. 연령이 젊은 사람들은 대부분 소액이라도 투자를 해봤을 것이고 노년층도 예외는 아니었다. 투기의 광풍은 블록체인의 진가를 바래게 만들었지만 다른 한편으로는 블록체인의 인지도 대중화에 기여를 했다고 생각한다. 비트코인이 블록체인 기술 및 시장에 끼치는 양면은 이 책에도 언급하고 있듯이 퍼블릭 블록체인(무허가형 원장)과 프라이빗 블록체인(허가형 원장)의 대립으로 나타났고 과연 관련 업계, 기술 및 비지니스 진영 그리고 대중들은 어느 진영을 손을 들어주었는지 궁금했다. - -* __퍼블릭 블록체인(Public Blockchain)__ - - 비트코인의 창시자 나가모토 사토시의 개발 철학이 핵심. 리먼브라더스 부도를 수습하고자 정부는 양적완화 정책을 펼쳤고 그 피해는 고스란히 서민이 떠안게 되어 자본주의 경제체제는 결코 민주주의가 아님을 천명하였다. 모두에게 공정한 경제 체제를 유지하고자 비트코인을 창시한 것으로 알려져있으며 현재 우리의 불공평한 자본주의 시장을 해결하는데 가상 이상적인 제도라고 주장한다. - - 퍼블릭블록체인의 체계를 유지하기 위해 POW(작업증명) 방식으로 채굴을 통한 경제적 보상이 이루어지며 이는 금본위제 당시의 공정성에 착안한다. - -* __프라이빗 블록체인(Private Blockchain)__ - - 반면 프라이빗 블록체인의 경우 법적인 책임을 지는 허가받은 사람만이 참여할 수 있는 블록체인으로 별도의 코인을 발행하여 인센티브를 지급하지 않는다. 이상적인 모토를 가지고 있지 않으나 국가, 금융기관, 기업, 개인이 참여하기에 현실적으로 더 실현 가능성이 높으며 기존 경제체제를 흔드는 개념이 아니라 기술적인 효율성을 추구하는데 포커스가 맞춰져 있다. - -``` -"여러분은 어느 진영의 블록체인을 선호하시는지?" -``` - -대다수의 필자와 같은 서민이라면 퍼블릭을 선호할지도 모른다. 하지만 이상은 올바를지 몰라도 비트코인은 모든 경제주체를 고려하지 않은 이상적인 모델의 일부를 구현한 것에 불과한 것이라 생각하며, 블록체인을 구성하기 위한 가장 중요한 문제인 `합의`에 있어서도 실현 가능성이 제로에 가깝다. 현실적으로 투기의 광풍을 가져왔으며 오히려 일부 서민 경제를 흔들리게 만들었다. 더불어 탈중앙화로 강력한 보안을 자랑하지만 거래 자체가 이미 거래소를 중심으로 이루어지기 때문에 전체적인 보안이 보장된다고 보기 어렵다. - -과연 양쪽 진영의 블록체인 중 어떤 기술을 받아들이고 어디에 투자를 해야 할까? 필자는 이 질문에 이 시대를 밝은 방향으로 이끌고자 노력해 온 선구자들의 혜안을 빌려보고자 한다. 필자가 선택한 선구자는 리눅스의 창시자 리누스 토르발즈 그리고 그의 사상과 활동을 지원하는 [`Linux Foundation(리눅스재단)`](https://ko.wikipedia.org/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EC%9E%AC%EB%8B%A8)의 행보를 살펴보며 방향을 판단하고자 한다. 리눅스 재단은 대다수의 사람들이 아는 바와 같이 CopyLeft 정신으로 유명한 재단으로, 정보 및 자본의 불균형에 저항하여 공유의 위대함을 증명해왔던 단체로 세상 그 어떤 기업, 단체보다 보다나은 삻에 기여한 바가 크다고 생각한다. 결론부터 말하면 그들의 선택은 `프라이빗 블록체인`이었다. - - -## 하이퍼레저 패브릭 ---- -본 서적과 관련하여 가장 중요한 2개의 단체를 꼽으라면 리눅스 재단과 IBM이다. 책의 제목에서 소개한 `Hyper ledger`는 앞서 언급한 리눅스 재단에서 주관하는 프로젝트이며, 그 중에서도 `Hyper ledger Fabric`은 IBM이 주도적으로 개발한 프레임워크이다. 평소 개발자로써 기술로 사회에 효율성을 제공하고 싶었으며, 리눅스 재단과 그 방향을 같이 하고 싶어 본 진영의 선두에 자리잡은 Hyper ledger fabric에 깊은 관심을 가지고 있었으나 부족한 레퍼런스에 어려움을 겪고 있던 중 이 책을 접하고 기쁨을 감출 수가 없었다. - -하이퍼레저 패브릭은 모듈형 아키텍처를 고수하여 솔루션을 개발하기 적합하도록 설계되었으며 플러그 앤 플레이 구성요소를 허용하고, 컨테이너가 응용프로그램 논리 부분을 구성하는 체인코드라는 스마트 계약을 호스트할 수 있게 설계되었다. 전체 구성도는 아래와 같다. -![패브릭 구성도](https://theorydb.github.io/assets/img/review/2019-04-02-review-book-hyperledger-fabric-1-Flow-Diagram.png) - - -구현 소스는 [Github 리파지토리](https://github.com/HyperledgerHandsOn/trade-finance-logistics)에 공개되어 있다. - - - -## 누가 읽어야 하는가? ---- - -- __블록체인 비지니스 실무자, 스타트업 종사자__ - 이 책은 그저 뛰어나기만한 레퍼런스가 아니다. 저자가 바로 Hyper ledger fabric을 주도적으로 개발하는 IBM 블록체인 랩의 이사와 관련 부서의 실무진들이다. 더불어 그런 고수들이 집필한 책인데도 불구하고 블록체인의 지식에 대해 굉장히 겸허하고 조심스럽게 의견을 피력해서 더욱 진솔하게 읽어나갈 수 있었다. IBM이 주도한 특성상 기업과 관련된 측면의 서술이 많았기에 이 분야의 시장에서 성과를 얻고자 하는 사람이라면 필독서라고 할 수 있겠다. - -- __개발자(Dapp개발자, 블록체인에 관심이 많은 프로그래머, 그 외 개발자)__ - 굳이 블록체인 개발자가 아닐지라도 빅데이터에서 등장하는 CAP Theory를 다른 각도로 바라볼 수 있는 계기가 되며, RDBMS가 가지는 한계를 극복하기 위한 아이디어도 얻을 수 있다. 뿐만 아니라 이 책의 예제코드를 실습하면서 자연스럽게 최신 개발환경인 Git, Docker, 애자일 등의 활용 기술에 능숙해지는건 보너스다. - -- __투자자__ - 퍼블릭 블록체인을 맹목적으로 투자할 것이 아니라 앞으로의 금융, 경제 관련 변화를 심도있게 고민해볼 수 있는 계기를 준다. 특히, 퍼블릭의 인센티브 개념과 관련하여 단순히 채굴 등으로 쉽게 얻는 코인이라는 생각, 투자로 인해 수익이 발생하는 주객이 전도된 위험한 개념에서 벗어나 마치 스타트업처럼 가치 창출을 얻었을 때 진정한 인센티브가 얻어지는 것이라는 개념을 깨달을 필요가 있다. 그럼에도 투자를 하고 싶다면 이 책에서 소개하는 Git 등의 기술적인 개념을 파악하여 투자 대상의 블록체인이 과연 기술적으로 어느정도 성숙도를 가지고 있는지 판단하시길 권한다. - -## 책의 구성 및 요약 ---- -이 책은 크게 세 부분으로 구성된다. - -- __1. 블록체인, 하이퍼레저, 그리고 기업(1 ~ 3장)__ - - 블록체인의 개념 및 앞으로의 발전방향을 전망하고 기술생태계를 조망한다. - - 하이퍼레저 패브릭의 아키텍처 및 개발 목적을 다룬다. - - 기업 관점에서 비지니스와 블록체인의 관계를 심도있게 설명한다. - -- __2. 스마트계약, 응용프로그램 통합, 비지니스 네트워크 구성 등 `구축` 방법(3 ~ 7장)__ - - 구글의 Go언어를 활용하여 스마트 계약관련 체인코드를 개발한다. - - 전체적인 종단 간 비지니스 네트워크를 모델링, 설계, 배포하는 방법을 익힌다. - - 사용자 응용프로그램에서 전체 스마트 계약에 이르는 완전한 비지니스 네트워크를 구성한다. - -- __3. 데브옵스 애자일, 주요 운영이슈, 거버넌스, 보안, 미래 등 `운영` 방법(8 ~ 12장)__ - - 애자일 기법의 운영을 통한 데브옵스 달성 및 CI 파이프라인 구현 - - 조직 및 컨소시엄이 직면하게 될 주요 활동 및 과제에 대한 인식 - - 거버넌스 및 규제에 대한 통찰. 네트워크의 수명 및 확장성을 보장하는 방법 - - 보안설계 기법 및 향후 과제와 기회에 대한 전망 - -## 요약하며... ---- -책이 굉장히 심도깊고 기술적으로 고난이도의 내용을 담고 있음에도 불구하고, 책을 다 읽는데 일주일이 걸리지 않았다. (물론 코드를 구현하고 완벽히 이해하려면 몇 달은 족히 걸릴 듯 하다.) 그만큼 흥미진진하고 블록체인은 물론이거니와 개발자로서 평소 고민했던 부분에 대한 해답과 철학이 담겨져있기 때문일 것이다. 위에 추천한 독자의 대상이라면 반드시 일독할 것을 권한다. 이 책은 나의 인생책 중 한권으로 서재에 남아 오랜기간 두고두고 읽혀지게 될 것 같다. 끝으로 이 책을 읽을 기회를 주신 한빛미디어에 깊은 감사를 드린다. - - -> \<한빛미디어 출판사\> -> -> 개발자라면 믿고보는 "한빛미디어 출판사"라는 수식어가 따라다닐 만큼 IT분야는 물론 다른 분야에서도 양질의 도서를 끊임없이 -> 출판하는 회사입니다. 개발자로서 "나는 프로그래머다"라는 유익한 팟캐스트를 즐겨 듣곤 했는데 한빛미디어에서 후원을 -> 하였기에 수년간 방송이 이어져올 수 있었다 생각하며, 그외에도 리뷰어 활동, 학습지원 등 다양한 분야에서 사회에 공헌하는 -> 개발자와 공생하는 업체입니다. IT 분야에 관심이 많은 분이라면 한빛미디어의 책으로 시작하시면 후회없는 출발을 하실 수 -> 있습니다.(저 역시 최근에 출간된 '이렇게 쉬운 통계학'까지 50권은 넘게 산 것 같네요...^^;) - - -[한빛미디어 바로가기](http://www.hanbit.co.kr/) diff --git a/_posts/2019-04-18-review-book-dl-from-scratch.markdown b/_posts/2019-04-18-review-book-dl-from-scratch.markdown deleted file mode 100644 index cc7e6ad59..000000000 --- a/_posts/2019-04-18-review-book-dl-from-scratch.markdown +++ /dev/null @@ -1,80 +0,0 @@ ---- -layout: post -title: "[리뷰] 밑바닥부터 시작하는 딥러닝" -subtitle: "밑바닥부터 시작하는 딥러닝" -categories: review -tags: review dl -comments: true -header-img: img/review/2019-04-18-review-book-dl-from-scratch-Cover.jpg ---- - -## 개요 -> 본 리뷰는 `한빛미디어` 출판사 `"밑바닥부터 시작하는 딥러닝"`을 읽고 얻은 지식을 정리한 글입니다. - -- 목차 - - [IT 분야 15년, 항상 시간과 체력에 목마르다](#it-분야-15년-항상-시간과-체력에-목마르다) - - [밑바닥부터 시작하는 딥러닝, 그리고 인생 최대의 격변](#밑바닥부터-시작하는-딥러닝-그리고-인생-최대의-격변) - - [책의 장점 및 개요](#책의-장점-및-개요) - - [요약하며...](#요약하며) - - - -## IT 분야 15년, 항상 시간과 체력에 목마르다 ---- -``` -개발자로 살아온 지 벌써 15년이 되었다. -``` -그동안 많은 책을 읽고 다양한 프로그램을 만들었지만 요즘만큼 책을 읽고 싶어진 시절이 또 있었나 싶다. -모바일, SNS, 실리콘밸리 등의 영향으로 가뜩이나 빠르게 움직이던 IT기술들은 최근 머신러닝과 만나면서 -미래를 예측할 수 없는 속도로 배울 것이 많아졌고 그 결과로 셀 수 없는 변화가 일어나고 있다. - -덕분에 개발자로서 심장이 두근거릴 정도의 기대를 갖게되었고 동시에 우주같이 넓은 지식에 나의 시간과 -몸은 참으로 보잘것 없다는 막연함과 두려움을 느끼기도 한다. - -## 밑바닥부터 시작하는 딥러닝, 그리고 인생 최대의 격변 ---- -이러한 불안하면서도 스릴있는 이상 상태를 잠시 진정시켜주는 책이 `밑바닥부터 시작하는 딥러닝`이라는 책이다. -선무당이 사람 잡는다고 그간 프로그램에 창의성을 부여한다는 것이 회의적이었다. 알파고가 처음 등장했을 때 -이세돌의 100% 승리를 장담했던 이유도 앨런튜링 그리고 인공지능의 겨울 이후 큰 변화가 없는 인공지능 기술 및 -연구에 대하여 무시하는 마음이 적지 않았던 듯 싶다. - -하지만 SNS, 모바일 등으로 빅데이터가 수집되고 컴퓨팅 파워의 발전으로 딥러닝 수준의 연산을 처리할 수 있게된 -근래의 환경. 그리고 연역법과 귀납법의 오랜 싸움에서 100% 정답을 장담하지 못하는 귀납법을 택한 통계학과 -머신러닝의 선택이 이런 거대한 변화를 가져올 줄은 예전엔 상상할 수 없었다. - -## 책의 장점 및 개요 ---- -나름 15년간 이 분야에서 많은 노력을 기울였고 스스로 만족스러운 성과를 달성하며 살았다고 스스로에겐 후한 점수를 -주곤 하지만 눈에 보이는 가시적인 성과로 이어지지 못한것이 일상을 가끔 허탈하게 만들곤 했는데, 그간의 빛바랜 -줄로만 알았던 노력이 딥러닝을 이해하는 과정에서 더불어 이책을 이해해가는 과정에서 좋은 자양분이 되었다는 점에 -스스로에게 위안을 주는 계기가 되었고 더불어 내 미래의 방향과 목표까지 제시해 주었기에 책에 후한 점수를 주고 싶다. - -책의 장점과 개요를 몇가지로 간단히 요약해 보았다. -- 개앞맵시라고 소개한 로드맵 사이트를 통해 근래 출시된 머신러닝 관련 우수한 책을 소개하고 지속 발전이 가능한 -학습의 방향을 제시한다. -- 카페, 텐서플로 등 딥러닝 프레임워크로 딥러닝 학습을 시작하는 경우 내재된 근본 원리를 경시하게 되기 마련인데 -제목 그대로 밑바닥의 `기초 내공`을 튼튼히 해준다. -- 책을 읽으며 이런 질문도 하게 된다. -``` -컴퓨터는 사람이 가진 수천억 뉴런의 동시다발적 상호작용을 전기 신호로 모방한다. -``` -``` -그렇다면 인간의 에너지는 어떤 신호를 모방하는가? -``` -이렇듯 꼬리에 꼬리를 무는 근원적인 질문이 자연스럽게 떠오르며 보다 `넓은 철학 영역에의 사고를 쉽게 허락`한다. -- 파이썬 프로그래밍 문법, 패턴을 간결하고 길지 않은 지문을 할당하여 빠른 시간내에 익힐 수 있게 도와준다. -- numpy 등 파이썬의 딥러닝 관련 라이브러리를 집중적으로 설명하여 파이썬 익히다 지쳐 딥러닝까지 가지도 -못하는 `주화입마를 해결`해준다. 무엇이 초점인지 분명하게 해준다. 나아가 미적분, 선형대수의 기본 등 딥러닝에 -필요한 기초 수학지식을 든든하게 채워준다. -- 70년대에 인공지능의 한계에 부딪히게 했던 XOR의 비선형에 대한 고찰을 하게 해준다. -- 딥러닝은 빅데이터 기반에 다양한 층을 기반으로 한 매개변수 및 가중치가 핵심이라는 점을 분명하게 해줘 -나아갈 방향에 흔들림이 없게 초점을 맞춰둔다. 특히, 퍼셉트론에서 신경망으로 넘어가기에 다소 매끄러워진다. -- 시그모이드, ReLU, 다차원 배열 연산에 대해 간결하면서도 핵심을 놓치지 않도록 알기 쉽게 정리해준다. -- `역전파`에 대하여 이 책보다 알기 쉽게 설명한 책이 또 있을까? - -## 요약하며... ---- -딥러닝을 위한 기본적인 지식을 튼튼하게 하여 역전파까지 쉽게 이해시키는 과정을 볼 때 시중의 어떤 책을 읽어봐도 -핵심에 집중하게 해주는 책은 본 적이 없는 듯 하다. 흔한 알기쉽게 설명한 인공지능 서적은 그 핵심 기술을 익히는데 -둔하게 만들고, 기술서적은 각종 장애물 때문에 많은 시간을 소모하게 하는데 이 책은 그런 문제점이 없는 거의 유일한 책이다. -딥러닝에 관심이 있는 사람이라면 이 책을 필독서로 권장한다. diff --git a/_posts/2019-05-01-dev-r-rinstall.markdown b/_posts/2019-05-01-dev-r-rinstall.markdown deleted file mode 100644 index 695d18f38..000000000 --- a/_posts/2019-05-01-dev-r-rinstall.markdown +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: post -title: "[R] R 설치 및 환경구성(10분만에 끝내는)" -subtitle: "R 설치 및 환경구성(10분만에 끝내는)" -categories: dev -tags: r install -comments: true ---- - -## 개요 -> `R`을 활용한 데이터 분석의 첫관문. 설치 및 환경구성에 관한 포스트입니다. - -- 목차 - - [R이란 무엇인가?](#r이란-무엇인가) - - [R설치(Window PC 버전)](#r설치window-pc-버전) - - [R Studio설치(Window PC 버전)](#r-studio설치window-pc-버전) - - [R Studio 환경설정](#r-studio-환경설정) - -## R이란 무엇인가? ---- -R은 __데이터 분석을 위한 통계 및 그래픽스를 지원하는 오픈소스__로 Python과 더불어 데이터 분석을 위한 도구로 가장 널리 활용되고 있다. Python이 범용 언어로서 개발자가 보다 선호하는 도구임에 비해 R은 IT 비전공자의 경우에도 널리 사용되는 장점이 있다. 머신러닝, 통계는 물론 금융, 그래픽스, 논문작성 등 다양한 분야에 활용되고 있으며 [`CRAN`](http://cran.r-project.org/web/views/)에서 이를 가능하게 하는 다양한 패키지를 제공한다. 더불어 참조할 수 있는 레퍼런스가 다양하고, Eco환경이 훌륭하여 데이터 분석을 위한 최고의 도구임에 손색이 없다고 할 수 있겠다. - -## R설치(Window PC 버전) ---- -R의 설치는 그 어떤 개발언어의 IDE 설치 과정보다 쉽다. - -1. R 공식사이트에 접속 후, `Download > CRAN`을 클릭 : [`http://www.r-project.org/`](http://www.r-project.org/) -![그림1](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-1.png) -2. Ctrl+F을 눌러 `Korea` 검색 후, 원하는 사이트 아무데나 클릭 -![그림2](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-2.png) -3. `Download R for Windows` 클릭 -![그림3](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-3.png) -4. `base` 클릭 -![그림4](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-4.png) -5. `Download R 3.6.0for Windows` 클릭 (버전은 계속 변경됨) -![그림5](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-5.png) -6. 다운로드 완료 후, `R-3.6.0-win.exe`파일을 더블 클릭하여 설치(디폴트로 `Next`만 누르면 설치됨) -![그림6](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-6.png) -7. 정상적으로 설치되었는지 확인하기 위해, 아래와 같이 소스코드를 입력 -```r -print("welcome") -``` -8. 그림과 같이 입력한 문자열이 그대로 나오면 정상적으로 설치가 완료된 것이다. -![그림7](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-7.png) - - -## R Studio설치(Window PC 버전) ---- -R Studio는 R 프로그램을 보다 편리하게 활용하기 위한 IDE(통합개발환경)으로 GUI를 지원하며 프로젝트 관리 및 패키지 설치 관리, 환경 설정을 용이하게 해주므로 개발 생산성 향상을 위해 반드시 설치하는 것이 좋다. 마찬가지로 R만큼 설치과정이 단순하다. - -1. R Studio 공식사이트에 접속 후, `Download RStudio`버튼을 클릭 : [`https://www.rstudio.com/`](https://www.rstudio.com/) -![그림8](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-8.png) -2. Free 버전 `DOWNLOAD` 버튼을 클릭(그 외 버전은 사용제품으로 비용을 지불해야 한다.) -![그림9](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-9.png) -3. `RStudio 1.2.1355-Windows 7+ (64bit)` 버튼을 클릭(버전은 계속 변경됨) -![그림10](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-10.png) -4. 다운로드 완료 후, `RStudio-1.2.1335.exe`파일을 더블 클릭하여 설치(디폴트로 `Next`만 누르면 설치됨) -![그림11](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-11.png) -5. 설치가 완료되면 윈도우 시작버튼을 눌러 하단 검색창에 `rstudio`를 입력 후, 검색된 프로그램을 클릭하여 실행한다. -![그림18](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-18.png) -7. 정상적으로 설치되었는지 확인하기 위해, `Console`탭에서 아래와 같이 소스코드를 입력 -```r -print("welcome") -``` -8. 그림과 같이 입력한 문자열이 그대로 나오면 정상적으로 설치가 완료된 것이다. -![그림12](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-12.png) - -## R Studio 환경설정 ---- -R Studio을 보다 편리하게 사용하기 위한 몇가지 Tip을 소개한다. - -1. 편집기 `인코딩` 방식 변경 - - 그림과 같이 `Tools> Global Options > Code > Saving > Change버튼 > UTF-8선택` 순서로 클릭) - ![그림13](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-13.png) - - 설정을 변경하면 자동으로 R를 껐다 켤것인지 묻는데 `Yes`를 눌러준다. - ![그림14](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-14.png) - -2. 편집기 코딩 폰트 등 스타일 변경 : `Tools> Global Options > Appearance > 폰트, 사이즈, 테마 등 선택` - ![그림17](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-17.png) - -3. 화면 레이아웃 변경 : `Tools> Global Options > Pane Layout > 화면 위치별 원하는 레이아웃 선택` - ![그림16](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-16.png) - -4. 자동줄바꿈 기능 해제 : `Tools> Global Options > Code > Editing > Soft-wrap R source files 체크해제` - ![그림15](https://theorydb.github.io/assets/img/dev/r/2019-05-01-dev-r-rinstall-15.png) - ※ 참고로 코드 실행 시 `Ctrl+Enter`키를 누르면 멀티라인 실행이 가능하다. - - -이로써 R을 사용하기 위한 사전작업이 모두 완료되었다. 다음 포스트에는 간단한 R의 사용방법에 대하여 설명하겠다. - diff --git a/_posts/2019-05-01-envops-blog-intro.markdown b/_posts/2019-05-01-envops-blog-intro.markdown deleted file mode 100644 index 07b4d7b16..000000000 --- a/_posts/2019-05-01-envops-blog-intro.markdown +++ /dev/null @@ -1,192 +0,0 @@ ---- -layout: post -title: "[Jekyll Blog] (개요) 블로그를 만들어 봅시다!" -subtitle: "Let's create a blog" -categories: envops -tags: envops blog intro -comments: true ---- - - -## 개요 -> 블로그를 만들 때 고려할 사항과 만드는 방법에 대하여 알려드립니다. - -- 목차 - - [블로그를 만든 이유](#블로그를-만든-이유) - - [다른 사람들의 이유](#다른-사람들의-이유) - - [미리 고민하면 좋을 것들](#미리-고민하면-좋을-것들) - - [어떤 블로그가 완성되어 있을지 상상해보세요!(Check-List)](#어떤-블로그가-완성되어-있을지-상상해보세요check-list) - - [(Where) 어떤 서비스(플랫폼)와 기술을 활용할까?](#where-어떤-서비스플랫폼와-기술을-활용할까) - - [이 블로그는 어떤 플랫폼을 쓰나요?](#이-블로그는-어떤-플랫폼을-쓰나요) - - [(How-To) 블로그 구축부터 포스팅까지 배워봅시다.](#how-to-블로그-구축부터-포스팅까지-배워봅시다) - - -## 블로그를 만든 이유 ---- -지금 이 포스트를 읽고 계신 여러분은 `블로그 하나 만들어 볼까?`라는 생각을 분명 한번 이상은 해 보셨을 것이다. 같은 질문에 대한 필자의 대답과 고민의 흔적을 아래에 포스팅 하였으니 이 글이 시행착오를 줄이는데 조금이라도 보탬이 되었으면 한다. - -* __종이가 없어서 바위에 정으로라도 글을 새기겠다는 마음가짐__ -"글쓴이에게 이 정도 열망은 있어야 명작이 탄생할 수 있는 것이다." 학부시절 한 은사께서 하신 말씀이다. 이 정도는 너무 거창하지만, 1만 시간의 법칙 때문일까? 요즘들어 부쩍 배우고 익혀온 기술들을 정리하고 싶어 손과 머리가 근질거릴 때가 많았다. 더불어 요즘 큰 관심을 가지고 있는 데이터 사이언스 분야에 대한 배움을 정리할 곳이 간절했다. 비슷한 느낌이 든다면 여러분도 블로그를 운영할 때가 온 것은 아닐까? - -* __Relation > Entity__ -사고방식의 취향이라고 해야할까? 학창 시절부터 단편 지식을 완벽하게 숙지 못했더라도 그 지식이 다른 지식과 연결되어 큰 숲을 이루는 관계에 관심이 많았다. 새로운 것을 배우면 머리 속 수많은 거미줄 어느 모퉁이에 매달아야 하는지 고민을 하게된다. 이런 사고 방식을 충족시킬 수 있는 나만의 지식과 데이터를 쌓기에 블로그만한 것이 없을 것이라 생각했다. - -* __프로그래머라면 Jekyll?__ -이런 허세 때문에 Jekyll 기반의 블로그를 운영하는 것은 아니지만 직업적으로는 꽤 의미있는 일이 된다. 어느 분야에 종사하시는 분일지라도 `제너럴리스트 vs 스페셜리스트`사이의 고민은 항상 있으실 것이다. 둘 다 정통한 T자형 인재가 정답이겠지만 시간, 재능, 운의 한계로 결코 쉽지만은 않다. -필자는 프로그래머로 Front-end 보다는 Back-end 기술을 주로 다루며, 서비스보다는 공공 위주 프로젝트를 다루기 때문에 트렌드에 노출될 기회가 적다. 적어도 블로그만큼은 자주 다루기 힘든 기술(Front-end), 트렌드에 뒤떨어지지 않는 기술 그리고 다루고 싶은 기술을 활용하여 지적인 욕구도 충족시키고 제너럴리스트로서의 요건도 갖추고 싶었던 것이 이 블로그를 운영하는 또 다른 이유라고 할 수 있겠다. - -* __내 두뇌는 CPU, Memory, 하드디스크 어디에 가깝지?__ -컴퓨터는 크게 사고력을 상징하는 CPU, 메타인지를 상징하는 Memory, 기억력을 상징하는 HardDisk, 습득이 빠르고 생각을 전달하는 능력이 탁월한 I/O 등으로 이루어져 있다고 생각한다.(~~필자가 멋대로 정한 비유이므로 큰 의미는 두지 않으셨으면 한다.~~) 필자의 경우는 두뇌를 주로 CPU와 Memory의 기능 위주로 활용한다. 때문에 자연스럽게 타 영역에 대한 보완이 필요했는데 특히 기억력을 보완하기 위한 수단으로 블로그를 운영한다. - -* __진리탐구의 연장선__ -거창하게 써서 부끄럽다. 개똥철학일지는 모르겠지만 내 자식, 지인들에게 그간 노력하며 얻은 지식을 쉽고 빠르게 전달하고 싶은 마음이 컸다. 조금 더 욕심을 부리면 세상 모든 사람들의 시간을 조금이라도 줄여주는데 보탬이 되고 싶다. - - -## 다른 사람들의 이유 ---- -그렇다면 다른 사람들은 왜 블로그를 운영하는 것일까? 이 포스팅을 읽는 분들께는 이 질문이 더 중요할지도 모르겠다. 조사한 바 크고 작은 이유를 간추려 보았다. - -* 공유 정신으로 스스로 `사회에 기여`하는 사람이 되고 싶어서 -* `시간을 효율적`으로 쓰는 사람으로 보여지는게 마음에 든다. -* `적극`적인 사람 또는 `열정`을 가진 사람으로 보여지는게 좋다. -* `사업가 마인드`를 가진 사람으로 보인다. -* 구글 애드센스를 장착하여 `광고 수익`을 내기 위해서 -* 사업상 `마케팅 수단`이 필요하여 -* 1인 기업, 파워블로그 등의 활동으로 `수익 창출`을 위하여(유튜버와 유사) -* `취미가 글쓰기`이거나 쓰는 동안 `생각이 정리`되며 스트레스가 풀려서 -* 많은 이들과 육아, 가정 등 `지식, 노하우`를 공유하고 싶어서 -* 배운 지식을 정리하며 `메타적 사고`를 넓히고자 -* `취업`, 경력관리, 이직에 도움이 되어서 -* PC에 쌓여가는 지식을 정리하고, 온라인에 연결하여 `접근성`을 확보하기 위해서 -* SNS 할성화 및 `온오프라인 모임`을 위하여 -* `Markdown 등의 기술`을 써보고 싶어서, 내용에 방해를 받고싶지 않아서 -* 다른 사람의 정보를 모아놓기 위해서, `즐겨찾기` 용도로 -* 기타 외로워서, 관심이 필요, 똑똑해보여서, 주위에서 많이들 하길래, 심심해서 등 - -그 외 여러 목적이 있지만 어떤 이유든 글을 쓰기 위한 충분한 동기가 되지 않을까? - - -## 미리 고민하면 좋을 것들 ---- -미리 고민하지 않으면 블로그 구축 중 은근히 시간을 많이 잡아먹는 요소들로, 만들기로 결정했다면 일상생활 중 미리 고민해놓으면 시간을 상당히 절약할 수 있다. - -* 네이밍 : 블로그명, Sitename, .. 등 각종 이름짓기 -* 도메인 보유여부 : 도메인 유지비용 및 네이밍 고려 -* 개발스택, 언어 : MEAN, LAMP, Jsp, Asp, .. 등 -* 솔루션(플랫폼) : 미디엄, 브런치, 티스토리, 네이버, .. 등 -* 호스팅업체 : AWS, Google Cloud, MS Azure, KT Cloud, CAFE24, 가비아, .. 등 -* 연동할 SNS, E-mail 등 - -## 어떤 블로그가 완성되어 있을지 상상해보세요!(Check-List) ---- -블로그를 만들기로 마음 먹었다면, 미래에 어떤 모습으로 운영되고 있을지 생각해 볼 필요가 있다. - -* __(What) 뭘 쓰고있나요?__ -주로 다루게 될 주제가 무엇인지 생각해보는 것이 좋다. 분야는 너무나도 다양하다. - - 일기장, 일상, 전원생활, 철학, 소설, ... - - 리뷰, 육아, 교육, 주식, 자기계발, ... - - 게임, 취미, 여행, 요리, 건축, ... - - 역사, 문화, 정치, 종교, 사회, 과학, 예술, ...등 -흥미있는 주제로 어느 정도 범위를 좁혀놔야 글쓰기의 일상화에 부담이 되지 않아, 가볍게 출발하며 지구력을 얻게되고, 블로그 플랫폼 및 기술 선택 시 도움이 된다. - -* __(Who) 누가 읽을까요?__ -깊게 생각해 볼 문제다.(~~물론 아무도 없을지도 모른다.ㅎㅎㅎ~~) 문체, 전개 방식을 선택하는 계기가 되고 플랫폼 선택 후 여러번 삭제했다 다시 만드는 등 시행착오를 줄이게 된다. 더불어 글의 분량, 수준(난이도)을 결정하는데 도움이 된다. - -* __(When) 언제 써야 할까요? 계속 쓸 수는 있을까요?__ -귀중한 시간을 들여 블로그를 제작한 의미가 퇴색하지 않도록 꾸준히 글을 쓰는 습관이 중요하다. 시간 공간적으로 글쓰기에 문제는 없을지, 계속 운영할 수 있게하는 원동력이 무엇일지, 다시금 `Why`를 새기면서 스스로의 동기부여가 중요하다. - -* __(Why) 왜 쓰고 있나요?__ -이 질문이 가장 중요하지만, 위에서 이미 답이 나왔기에 블로그를 쓰기로 결정했을 것이다. - -여기까지는 생각을 정리해보는 것만으로 충분했다. 이제부터 직접 블로그를 개설하는 방법에 대하여 구체적으로 다루어보겠다. - - -## (Where) 어떤 서비스(플랫폼)와 기술을 활용할까? ---- -서비스(플랫폼)별 각각 장.단점이 존재하므로, 블로그의 주제 포커싱에 따라 선택이 필요하다. 아래 선정기준을 체크해 본 후, 이어서 `한눈에 제시한 비교표`를 통해 본인에게 가장 적합한 블로그를 선택하길 바란다. - -* __서비스(플랫폼) 선정기준__ - + (비용) 블로그를 만들 수 있다면 돈을 써도 상관없는지? - - AWS, Google Cloud, MS Azure, KT Cloud, CAFE24, 가비아,.. 등 웹 호스팅 업체를 알아봐야 한다. - + (글쓰기 집중) 글쓰기에만 집중하고 싶은지? - + (커스터마이징) 홈페이지처럼 내 마음대로 만들고, 바꾸고, 꾸미고 싶은지? - + (개인DB) 데이터베이스처럼 평생 내 자료를 소장하고, 에디팅하고 싶고, 분석도 하고 싶은지? - + (클릭율) 유저들이 많이 접속하길 희망하는지? - + (프로젝트 관리)프로그래머 등 직업적인 특성 상 Git 등의 연동이 필요한지? - -* __`<한눈에 보는 서비스별 장.단점>`__ - -| 서비스
(플랫폼) | 장점 | 단점 | -|:---: | :---: | :---: | -| 지킬
[Jekyll](https://jekyllrb-ko.github.io/) | -디자인,기능 거의 무제한
-비용 무료/속도 빠름
-개인DB화 관리| -양방향 서비스 불가
-기능 연동 시 기술적 노하우 필요 | -| 워드프레스
[Wordpress](https://ko.wordpress.com) | -이지위그(Wysiwyg) 탁월
-APM 웹 프로그래밍 운영가능 | -유료 호스팅 운영 필요
(AWS, CAFE24 등)
-유지보수 상당한 노력 필요 | -| 미디엄
[Medium](https://medium.com/) | -깔끔한 디자인
-서비스 오래 지속될 것으로 예상
-포스트에만 집중가능| -커스터마이징, 기능확장 불가
-한글 폰트 문제
-낯선기능(respanse 등) | -| 티스토리
[Tistory](https://www.tistory.com/) | -커스터마이징 자유도
-깔끔한 디자인
-카운팅 등 다양한 기능 | -에디터 Wysiwyg 불편
-신규 제작 시 초대장이 필요
-기능의 파편화 | -| 텀블러
[Tumblr](https://www.tumblr.com/) | -Markdown 지원
-이미지업로드 간편
-다양한 기능 | -카테고리, 추천글 기능이 없음
-속도문제
-기술 블로그에는 취약| -| 스팀잇
[Steemit](https://steemit.com/) | -블록체인 포스트에 효과적
-스팀달러 Coin 보상 | -에디터, 기능이 약간 부족함| -| 브런치
[Brunch](https://brunch.co.kr/) | -유사글 연결 기능
-깔끔한 디자인
-포스트에만 집중 가능
-모바일 탁월 | -구글 등 해외 검색엔진 노출 문제
-커스터마이징 불가
-코드 삽입과 gist 지원 불가 | -| 빙글
[Vingle](https://www.vingle.net) | -카테고리, 태그 기반 구조 | -노출이 약함
-사용자 많지 않음 -| 포스타입
[Postype](https://www.postype.com/) | -창작물 판매,후원 가능 | -서비스 조기종료 가능성
(스타트업) -| 구글블로그
[Blogger](https://www.blogger.com) | -검색노출 최고 | -검색 노출 외 좋은 점이 없다. -| 네이버
[Naver](https://blog.naver.com) | -국내 클릭율(CTR) 우수
-상품 리뷰에 효과적 | -구글 등 해외 검색엔진 노출 문제
-커스터마이징 불가
(Markdown 사용불가 등) | - -* 그 외 블로그 - 블로그 서비스는 너무나 다양해서 모든 것을 조사할 수는 없다. 다만 입소문이 제법 나있는 블로그 중 개인적인 직관으로 후보에서 제외시켰던 서비스들을 정리하였으니 좀 더 완벽한 조사를 원하신다면 참고하시기 바란다. - + [Squarespace](https://www.squarespace.com/) - + [TypePad](https://www.typepad.com/) - + [Movable Type](https://www.movabletype.org/) - + [Drupal](https://www.drupal.org/) - + [Joomla](https://www.joomla.org/) - + [Wix](https://ko.wix.com) - + [Weebly](https://www.quv.kr) - + [Strikingly](https://www.strikingly.com) - + [Ghost](https://ghost.org/) - + [HubSpot](https://www.hubspot.com/) - + [Shopify](https://www.shopify.com/) - + [Jimdo](https://www.jimdo.com/) - - -## 이 블로그는 어떤 플랫폼을 쓰나요? ---- -github.io 형태의 URL로 서비스가 제공되는 Jekyll 기반의 Github Pages 블로그이다. 바로 지금 보고계신 블로그가 그 예이다. 선택한 이유는 다음과 같다. - - - `공짜`다. 그런데 유료보다 `빠르다`. - - 마크다운(Markdown) 기반 포스트 작성 - + 글 작성이 쉽다. `글쓰기에 집중`하기 쉽다. - + `나만의 데이터베이스`를 보유한 효과가 있다. - - 기능 확장을 위한 Front-End `생태계(Eco)가 풍부`하고 수준이 뛰어나다. - - `Git`, Ruby등의 기술을 습관처럼 익히게 된다. 협업도 가능하다. - - 디자인, 기능 등 어떤 홈페이지 보다도 `다양한 기능`을 구현할 수 있다. - - `프로젝트 개발` 시 Git을 통한 연동으로 기술 블로그로서 최적의 기능을 제공한다. - - 블로그 만들고 꾸미는 것보다 `Publish에 집중`하고 싶다. - - 서비스(플랫폼, 호스팅 등)가 종료되어도 `쉽게 보관, 이동`이 가능하다. - - `광고`를 달 수 있다. - - Jekyll외 Ghost, Hexo 같은 `정적 사이트 생성기와 연동` 가능하다. - -## (How-To) 블로그 구축부터 포스팅까지 배워봅시다. ---- -만약 필자와 동일하게 Jekyll 기반의 GitHub Pages를 만드시기로 결정했다면 아래 순서대로 포스팅을 읽고 따라하시기만 하면 된다.(각 링크를 클릭) 필자와 다른 어떤 서비스를 이용하시든 쭉 훑어보는 것만으로도 큰 도움이 되실 것이므로 블로그를 구축하는 전체 과정에 대한 개요를 잡는다는 생각으로 읽어주시기 바란다. 대부분 구축방법은 이 범위 내 부분 집합일 뿐이다. 참고로 아직 링크가 걸리지 않은 경우, 조만간 포스팅할 예정이니 양해를 부탁드린다. - -* `블로그` 구축 - 1. [블로그 테마(Themes) 고르기 및 환경설정](https://theorydb.github.io/envops/2019/05/02/envops-blog-theme/) - 2. [GitHub 연동 및 Jekyll 설치](https://theorydb.github.io/envops/2019/05/03/envops-blog-github-pages-jekyll/) - 3. [Prose.io 연동으로 포스팅을 쉽게! 배포는 더 쉽게!](https://theorydb.github.io/envops/2019/05/04/envops-blog-posting-prose-io/) - 4. 개인의 취향에 맞도록 디자인 및 환경설정 변경 - 5. 파비콘 만들기 - -* `기능` 확장 및 연동 - 1. [Tipue Search를 이용하여 블로그 검색 기능 만들기](https://theorydb.github.io/envops/2019/05/11/envops-blog-tipue-search/) - 1. 블로그 댓글기능 추가 - 2. 구글 애널리틱스로 방문자 유입 분석 - 3. 구글 검색엔진 등록을 유리하게 - 4. [구글 애드센스(Google Adsense) 적용하기](https://theorydb.github.io/envops/2020/04/20/envops-blog-how-to-register-google-adsense/) - 5. 편리한 운영을 위한 기타 설정 및 오류 발생시 대처방법 - -* `글쓰기`를 편하게 - 1. [GitHub & Jekyll 사용법](https://theorydb.github.io/envops/2019/05/21/envops-blog-how-to-use-git/) - 2. [마크다운(Markdown) 사용법 및 예제](https://theorydb.github.io/envops/2019/05/22/envops-blog-how-to-use-md/) - 3. 이미지 캡션 활용 - - -이로써 블로그를 구축해야 하는 목적, 방법 등 전반적인 모든 것을 알아보았다. 앞으로도 유용한 기능을 계속 올릴 예정이니 관심있게 지켜봐주시길 부탁드린다. - \ No newline at end of file diff --git a/_posts/2019-05-02-envops-blog-theme.markdown b/_posts/2019-05-02-envops-blog-theme.markdown deleted file mode 100644 index c9028afee..000000000 --- a/_posts/2019-05-02-envops-blog-theme.markdown +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: post -title: "[Jekyll Blog] 블로그 테마(Themes) 고르기 및 환경설정 " -subtitle: "Choose and customize Themes" -categories: envops -tags: envops blog github pages jekyll themes personal preferences -comments: true ---- - - -## 개요 -> 블로그 구축의 첫 관문. `테마`를 고르고 `GitHub 저장소`에 등록하기 위한 사전 지식에 대하여 알아봅니다. - -- 목차 - - [Jekyll Themes 고르기](#jekyll-themes-고르기) - - [`Clean Blog` 테마를 선택한 이유](#clean-blog-테마를-선택한-이유) - -## Jekyll Themes 고르기 ---- -이전글 [(개요) 블로그를 만들어 봅시다!](https://theorydb.github.io/envops/2019/05/01/envops-blog-intro/)에서 Jekyll 블로그를 선택한 이유를 말씀드렸다. 여기까지 읽고 계시다면 이미 Jekyll 블로그를 구축하는데 관심이 있는 독자일 것이다. 그렇다면 Jekyll 테마에는 어떤 것들이 있으며 선정하는 기준에 대해서 언급해 보겠다. - -* __Jekyll Themes 제공 사이트__ - 대부분의 오픈소스 개발자들이 그러하듯 지킬 역시 많은 양의 테마를 오픈 소스로 제공하고 있다. 아래 사이트에 접속하시면 무료로 제공되는 테마를 원없이 구경하고 선택하실 수 있다. 오히려 많아서 선택하기 어려울 지경이다. - + - + - + - + -![그림1](https://theorydb.github.io/assets/img/envops/2019-05-02-envops-blog-theme-1.jpg) - -* __Jekyll Themes의 선정기준__ - 아래 기준에서 반드시 포함시킬 요소를 미리 염두에 둔다면 위 사이트에서 테마를 고르기 더 쉬워질 것이다. - + 모바일에서도 보기 편한 `반응형`인가? - + `한글 폰트` 가독성이 좋은가? - + `커스터마이징`하기 쉬운 구조인가? - + 레이아웃, 줄간격 등 `디자인` 요소가 마음에 드는가? - + 검색, 태그, 댓글, syntax highlighting, Summary, Google Analytics, 수식입력 등 `기능` 지원 여부 - - -## `Clean Blog` 테마를 선택한 이유 ---- -필자가 선정한 테마는 [`Clean Blog`](https://blackrockdigital.github.io/startbootstrap-clean-blog/)이다. 이유는 다음과 같다. - -* 깔끔한 디자인으로 `Simple is best` 철학이 돋보임 -* 반응형 지원으로 모바일 가독성에도 손색이 없음 -* 한글 폰트가 다른테마 대비 마음에 듬 -* 커스터마이징이 편리함 - -혹시 필자가 선정한 블로그가 크게 마음에 들지 않으신다면 아래 후보군을 참고하시기 바란다. 필자도 아래 후보군들이 꽤 마음에 들어서 많은 고민을 했다. 필자에게는 낙점되지 못 했지만 독자분들께는 더 마음에 드실지도 모른다. - -* __후보군__ - + Clean Blog : - + folio : - + Hydejack : - + EXAMPLE POST : - + Read Only : - + Mediator : - + Skinny Bones : - + lanyon : - -맘에드는 테마를 선택하셨다면 다음글[GitHub 연동 및 Jekyll 설치](https://theorydb.github.io/envops/2019/05/03/envops-blog-github-pages-jekyll/)에서 GitHub 연동 및 Jekyll 설치를 통해 웹서버에서 실행하는 방법을 배워보겠다. - - diff --git a/_posts/2019-05-03-envops-blog-github-pages-jekyll.markdown b/_posts/2019-05-03-envops-blog-github-pages-jekyll.markdown deleted file mode 100644 index 2d5b60957..000000000 --- a/_posts/2019-05-03-envops-blog-github-pages-jekyll.markdown +++ /dev/null @@ -1,231 +0,0 @@ ---- -layout: post -title: "[Jekyll Blog] GitHub 연동 및 Jekyll 설치" -subtitle: "Installing GitHub and Jekyll" -categories: envops -tags: envops github pages blog jekyll install push -comments: true ---- - - -## 개요 -> 앞서 선정한 테마를 `GitHub에 연동`하고 `Jekyll을 설치`하여 웹브라우저에 직접 블로그를 띄워봅시다. - -- 목차 - - [GitHub 회원가입 및 Fork](#github-회원가입-및-fork) - - [Git 설치 및 Clone](#git-설치-및-clone) - - [Ruby & Jekyll 설치](#ruby--jekyll-설치) - - [Jekyll 디렉토리 구조](#jekyll-디렉토리-구조) - - [파일 수정하기](#파일-수정하기) - - [GitHub에 올리기](#github에-올리기) - - [블로그 운영하기](#블로그-운영하기) - - -## GitHub 회원가입 및 Fork -이전글 [블로그 테마(Themes) 고르기 및 환경설정](https://theorydb.github.io/envops/2019/05/02/envops-blog-theme/)에서 멋진 Jekyll 테마를 골랐다는 가정하에 GitHub으로 연동하는 과정을 설명하겠다. - -* GitHub 회원가입 - 먼저 GitHub 에 접속 후 아래 그림과 같이 `Sign Up` 버튼을 클릭하여 회원가입을 진행한다. - ![그림1](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-1.jpg) - Username, E-mail, Password 등 간단한 정보를 입력하면 계정이 생성된다. - -> __사전체크__ - 다음으로 선택한 테마의 소스를 보관할 저장소를 GitHub에 만들어야 한다. 만드는 방법은 크게 2가지가 있다. 하나는 Fork 버튼을 클릭하는 방법이고, 다른 하나는 로그인 후 [Start a Project] 버튼을 클릭하여 직접 Repository를 생성하는 방법이 있다. - 후자의 경우 _config.yml을 복사한 후 여러 단계를 거쳐야하므로 초보자에게는 복잡하고 어렵다. 따라서 여기서는 전자의 방법을 택한다. 더불어 각자 선택한 테마가 상이할 것이므로 공통으로 필자의 블로그를 Fork하는 방법으로 실습하겠다. - 만약 초보자라면 필자가 운영중인 테마를 실습삼아 Fork 후 전 과정을 구축하며 미리 시뮬레이션 학습한 후에 선정한 테마를 동일한 방식으로 진행하시며 설치하시는 것을 권장한다.(이런 과정없이 처음부터 한번에 구축하기는 결코 쉽지않다.) - -* Fork(Clone)을 통한 저장소(Repository) 생성 - 필자의 테마 저장소에 접속 후, 아래 그림과 같이 우측 상단의 `Fork` 버튼을 클릭한다.(또는 Clone을 통해 PC에 다운로드 후 Git 설치를 통해 Commit, Push로 올리는 방법도 있는데 여기서는 생략한다. 추후 별도의 포스팅을 통해 Git을 설치하고 사용하는 방법에 대해 설명하겠다. 현 시점에서 소개하기엔 분량이 과하여 집중력을 잃고 자칫 포스팅 전체의 큰 흐름을 잃을까 우려되기 때문이다.) - ![그림2](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-2.jpg) - 잠시 기다리면 여러분의 계정에 저장소가 생성되어 필자 블로그의 모든 파일들이 저장소 내에 Copy된 것을 확인할 수 있다. -> __(참고)Reporitory 직접 생성하는 방법__ -> https://github.com/theorydb > repository > new > repository name에 username.github.io 입력 > create repository 버튼을 클릭하면 생성된다. - -* Repository name 변경 및 기타설정 - Fork가 완료된 저장소에서 아래 그림과 같이 `Settings`를 클릭하면 최상단에 `Repository name`이 나온다. - ![그림3](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-3.jpg) - 가급적 회원가입 시 사용했던 `username`을 이용하여 `username.github.io` 형식으로 저장할 것을 추천한다. 다른 명칭으로 저장할 경우 서브디텍토리가 포함된 보다 복잡한 URL로 접속해야하는 번거로움이 따른다. - - 그 외 동일페이지 하단으로 스크롤하여 내려가면서 Issues 체크, 브랜치는 Master로 설정할것을 권장한다. - -* (Tip-생략가능) Fork한 저장소를 초기화(삭제)하고 싶은 경우 - 처음 저장소를 만든다면 실수 및 마음에 드는 형태로 전부 삭제 후 다시 만들고 싶은 경우가 종종 발생한다. 이럴땐 위 3번 과정과 동일한 페이지 맨 밑에 그림과 같은 `Danger Zone`이라는 빨간색으로 둘러쌓인 영역으로 이동한다. `Delete this repository`를 클릭 후 패스워드를 한번 더 입력하게 되면 지금까지 만든 저장소가 전부 삭제된다. - ![그림4](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-4.jpg) - -* (Tip-생략가능) username이 마음에 안드는 경우 - 위 3번 과정에서 URL이 마음에 들지 않아 username을 바꾸고 싶은 경우가 있다. 아래 그림과 같이 `우측상단 프로필 아이콘 클릭 > Settings > Account > Change username 버튼`을 클릭하면 변경 가능하다. - ![그림5](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-5.jpg) - -* 최초의 블로그를 웹브라우저로 접속 - Fork를 통해 아주쉽게 블로그를 완성하였다. 크롬, IE 등 웹브라우저 열어 위에서 설정한 본인의 URL주소 `username.github.io`에 접속하여 페이지가 잘 뜨는지 확인해보자. - -## Git 설치 및 Clone ---- -위 과정을 통해 비록 알맹이는 남의 블로그지만 껍데기만큼은 내 URL로 접속가능한 반쪽자리 블로그가 완성되었다. 당연히 누구도 이 상태로 블로그를 운영하고 싶진 않을 것이다. 다운받아 수정 후 업로드 하는 과정이 필요한데, 이를 위해서 먼저 PC에 Git을 설치해야 한다. - -* Git설치 - Git 다운로드 링크 에 접속하여 Download 메뉴를 클릭한다. 아래 그림과 같이 본인의 운영체제(OS)와 일치하는 아이콘을 클릭한 후, OS버전에 맞는 Git 설치파일을 다운로드 받아 설치한다.(필자의 경우는 Windows이다.) - ![그림6](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-6.jpg) - 설치과정은 별 어려움 없이 디폴트 환경 그대로 `Next` 버튼을 클릭하여 진행해준다. - -* 위에서 Fork 한 저장소를 PC 내 다운로드 할 폴더를 만든다. 탐색기로 해당 폴더에 들어가 우클릭하면 `Git Bash Here`라는 추가된 메뉴가 보일것이다. 클릭하여 Git Bash창을 실행시킨다. - -* Git 사용자 등록을 진행한다. -```git - git config --global user.name "사용자" - git config --global user.email "사용자 이메일" -``` - -* 저장소 PC에 Clone - 위 과정에서 생성한 본인의 블로그 저장소에 접속하여 아래 그림과 같이 `Clone` 명령어를 복사한다. - ![그림7](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-7.jpg) - 위에서 실행한 Git Bash 실행창에서 아래 그림과 같이 `git clone + [복사한 Clone 명령어]` 형태로 다음과 같이 붙여넣기한다.(우클릭만 하면 붙여넣기 효과) -```git -$ git clone https://github.com/theorydb/theorydb.github.io.git -``` - ![그림8](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-8.jpg) - 엔터키를 입력하면 위에서 만든 PC내 폴더에 파일이 복사될 것이다. - 이제 복사한 파일들을 여러분의 환경에 맞게 수정하는 작업을 진행하겠다. - -## Ruby & Jekyll 설치 ---- -파일을 수정하기 전에 먼저 Jekyll을 설치해보자. 우리가 Fork한 테마는 Jekyll 기반으로 개발이 되어있기 때문에 Jekyll을 설치하지 않을 경우 우리가 원하는 방식으로 테마를 수정할 수가 없다. 이전글에서 설명했던 것을 복습하자면 Jekyll은 정적 컴파일러이다. Text로 우리가 작성한 Markdown, _config.yml 등의 파일들은 Jekyll을 통해서 _site폴더내의 산출물로 변환되고 해당 산출물이 WEB에서 실행되는 형태라고 할 수 있다. - -* Ruby 설치 - Ruby는 또 왜 설치해야 하냐고? Jekyll이 Ruby로 만들어져서 그렇다. Ruby를 몰라도 걱정하실 것 없다. 필자도 Ruby를 쓴 경험이 전무하지만 설치과정이 매우 간단하여 어려움 없이 설치 완료하였다. - 윈도우 OS의 경우 `Ruby와 개발툴킷`을 별도로 설치해줘야 하므로 루비 인스톨러 공식페이지 에 접속하자. 아래 그림과 같이 `=>`로 표시된 Ruby+Devkit 2.5.5-1 (x64)을 클릭하여 다운로드 한 후 Next만 누르며 디폴트로 설치하면 된다. - ![그림9](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-9.jpg) - -* 아래 그림과 같이 윈도우 검색창에서 `Start Command Prompt with Ruby`를 실행한다. - ![그림10](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-10.jpg) - -* 아래 그림과 같이 프롬프트 상에서 `chcp 65001`를 실행한다. 인코딩을 부여하기 위한 명령어인데 실행하지 않을 경우 이후 진행하게 될 온갖 명령어에서 오류가 발생하므로 꼭 진행하여야 한다. -```ruby -> chcp 65001 -``` - ![그림11](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-11.jpg) - -* PC내 저장소를 Clone했던 위치로 이동한다. (아래 명령어는 필자의 예시로, 여러분이 지정한 경로로 이동하여야 한다.) -```ruby -C:\>cd "C:\githubPages\theorydb.github.io" -``` - -* 이제 Ruby에서 지원하는 gem 명령어를 통해 Jekyll은 물론 종속된 필요한 라이브러리를 설치하자. 아래 코드와 그림을 참고하면 된다. 참고로, gem이란 루비에서 제공하는 라이브러를 편리하게 설치할 수 있도록 지원되는 도구다. -```ruby -C:\githubPages\theorydb.github.io>gem install bundler jekyll minima jekyll-feed tzinfo-data rdiscount -``` - ![그림12](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-12.jpg) - -* 초기화 설정 - Clone을 끝낸 Repository에 아래 코드와 같이 초기화 설정을 진행한다. -```ruby -C:\githubPages\theorydb.github.io>jekyll new theorydb.github.io -``` - -* 설치 및 초기화가 완료되면 아래 코드와 그림과 같이 지킬 서버를 구동해보자. -```ruby -C:\githubPages\theorydb.github.io>bundle exec jekyll serve -``` - ![그림13](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-13.jpg) - -* 이제 로컬에서 웹브라우저를 실행하여 `http://127.0.0.1:4000/`주소로 접속해보자. Apache 등을 설치하지 않았지만 블로그가 로컬에서 아래 그림과 같이 잘 실행되고 있음을 확인할 수 있다. - ![그림14](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-14.jpg) - -* 설치는 1회에 걸쳐 끝나기 때문에 앞으로는 위의 복잡한 과정을 전부 숙지할 필요는 없다. 평소 포스팅 작성 시 루비에 접속하여 지킬을 실행하는 정도의 명령어만 알면 되기 때문에 편의상 요약 명령어를 알려드리니 숙지하시기 바란다. - > `시작` -> start command prompt with ruby -> C:\githubPages\theorydb.github.io -> jekyll serve - -* 마무리 - 사실 단순하고 쉬운 과정이었지만 세상 만사가 어디 그렇게 쉬운가.. 분명 위 과정을 따라하시다가 오류가 나신 분도 계실 것이기에 `트러블 슈팅`에 관한 포스팅을 따로 정리할 예정이다. 그때까지는 번거로우시더라도 하단에 댓글을 남겨주시면 대답해 드릴 예정이다. - - - -## Jekyll 디렉토리 구조 ---- -자. 드디어 수정을 위한 모든 과정이 갖추어졌다. 그렇지만 저장소 내 수많은 파일 중 어떤 파일을 어떻게 고쳐야 하는걸까? 필자 역시 처음 Jekyll 블로그를 Clone 후 어떤걸 고쳐야 하는지 막막했던 기억이 있다. - -하지만 다행인 것은 많은 폴더와 파일들 중 반드시 고쳐야 하는 것들은 사실 많지 않다는 것이다. 이에 도움이 될 수 있도록 디렉토리 구조를 한 눈에 파악할 수 있도록 하단에 디렉토리 구조에 대한 설명을 추가한다. - -특히, `반드시 변경해야 하는 사항을 1번에 명시`하였으니 도움이 되었으면 좋겠다. 참고로 2번 사항은 주로 디자인, 기능을 커스터마이징하는 경우 참조하게 되고 3번 사항은 거의 건드릴 일이 없는 파일들인데 지금은 건너 뛰셨다가 나중에 필요할 때 다시 돌아와 참고하시면 도움이 될 것이다. - -+ __1. 반드시 변경__ - * _featured_tags/ : 카테고리 대분류 폴더 - * _featured_categories/ : 카테고리 소분류(태그) 폴더 - * _data/ : 개발자 및 운영자, 기타 정보 폴더 (author.yml 수정이 필요) - * _config.yml : 가장 중요한 환경변수 설정 파일 - * README.md : GitHub 프로젝트 애서 소개하게 될 글 - * favicon.ico : 블로그 접속 시 브라우저 주소창에 표시되는 대표 아이콘 - * about.md : About 메뉴 클릭 시 나타나는 블로그에 대한 소개글 - -+ __2. 필요시 변경__ - * assets/ : 이미지, CSS 등을 저장 폴더 - * _layouts/ : 포스트를 감싸기 위한 레이아웃 정의 폴더(페이지, 구성요소 등 UI변경 시 수정) - * _includes/ : 재사용을 위한 기본 페이지 폴더 - * Gemfile.lock : Gemfile에 기록한 레일 기반 라이브러리를 설치 후 기록하는 파일(중복설치 방지) - * Gemfile : 필요한 레일 기반 라이브러리를 자동으로 설치하고 싶을 때 명시하는 설정 파일 - * .gitignore : GitHub에 올리고 싶지 않은 파일들은 이 파일에 경로지정 가능(예: _site 산출물, 환경설정, 개인정보, 작성중인 글 등) - * sitemap.xml : 테마의 사이트맵 - * search.html : Tipue Search 설치 시, 검색결과를 출력하는 페이지로 활용 - * robots.xml : 구글 웹로봇 등 검색엔진 수집 등에 대한 정책을 명시하는 설정파일 - * posts.md : 포스트 작성 관련 설정파일 - -+ __3. 변경 필요없음(참고)__ - * _posts/ : 포스트를 저장하는 폴더 - * .git/ : GitHub 연동을 위한 상태정보가 담긴 폴더 - * _site/ : Jekyll 빌드 생성 결과물 폴더(실제 GitPages에서 WEB으로 보여지는 산출물) - * .sass-cache/ : 레일 엔진에서 사용하는 캐시 저장폴더(변하지 않는 산출물들에 대한 파싱을 하지 않아 속도보장) - * _sass/ : 일종의 CSS 조각파일 저장 폴더 - * _js/ : JavaScript 저장 폴더 - * _plugins/ : 플로그인 저장 폴더(크롬 정책상 어차피 사용안함) - * LICENSE.md : 테마 개발자의 라이센스 설명 - * index.html : 블로그 최초 접속 페이지 - * googlea0d1f22cc8208170.html : 구글 검색엔진에 블로그를 등록하는 과정의 소유권 확인 파일 - * feed.xml : RSS Feed 활용을 위한 XML - * browserconfig.xml : 윈도우8 이상 IE11 접속 시 클라이언트가 요청하는 환경설정 파일(윈도우의 표준 파괴 본능은 여기에도 숨어있다. ㅡ,.ㅡ) - * 404.md : 404 Not Found Page(블로그에 없는 페이지 요청 시 등장하는 페이지) - * .eslintrc : EcmaScript Lint(자바스크립트 협업 개발을 위한 규칙 정의) 환경설정 파일 - * .eslintignore : EcmaScript Lint 무시할 규칙 지정(전역변수 에러표시 예외처리 등) - * .babelrc : Babel(자바스크립트 컴파일러) 설정파일 - -보다 자세한 사항은 [지킬 한글화 공식 홈페이지](http://jekyllrb-ko.github.io/docs/structure/)를 참고하시기 바란다. - -## 파일 수정하기 ---- -드디어 파일을 수정해보자. 이제 저장소 내 대충 어떤 파일과 폴더가 있는지도 알았겠다 자신있게 `_config.yml`파일부터 수정해보자. 위에서 명시한바와 같이 가장 중요한 환경설정 파일으로 여러분의 개인화 정보와 관련된 거의 모든 환경변수가 존재한다. 반드시 수정해야 할 파일이다. 저장소 폴더 루트위치에 있는 _config.yml 파일을 아무 편집기로나 열어보면 주석에 자세한 사항이 명시가 되어있다. 주석의 지시대로 여러분의 환경에 맞게 수정하시기 바란다. -> 참고로 필자의 경로는 `C:\githubPages\theorydb.github.io\_config.yml`이다. - -더불어, 파일이 제대로 수정되었는지 파악하기 위해선 위에서 말씀드린 로컬사이트에 접속하면 바로 확인이 가능하다. 단, 지금 수정중인 _config.yml 파일의 경우 Jekyll을 껐다 켜줘야 반영된다. Jekyll 로컬 웹서버는 `[CTRL]+C` 단축키를 누르고 Y를 누르면 자동으로 꺼지고 `bundle exec jekyll serve` 명령어를 실행하면 다시 구동되니 참고하시기 바란다. - - -## GitHub에 올리기 ---- -드디어 내가 수정한 파일을 GitHub 저장소에 올려보자. 여기까지 따라오시느라 정말 고생 많으셨다. 마지막 관문이니 만큼 조금만 더 힘을 내서 수정된 블로그를 웹에서 감상하시기 바란다. - -* Git Bash를 실행한 후, 아래 코드와 같이 수정한 파일을 포함한 모든 파일을 `로컬 저장소에 업로드` 한다. - ```git - $ git add --all - ``` - ![그림15](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-15.jpg) - -* 수정된 파일들을 `로컬저장소에 커밋`한다. - ```git - $ git commit -m "updates" - ``` - ![그림16](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-16.jpg) - -* 로컬저장소에 커밋된 파일을 `원격저장소`에 업로드한다. 업로드 도중 본인의 GitHub 아이디와 비밀번호 인증을 통과해야 업로드가 - 성공적으로 완료된다. - ```git - $ git push -u origin master - ``` - ![그림17](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-17.jpg) - -* 여러분의 블로그 URL(`https://[username].github.io`)에 접속하면 몇 초 뒤 수정된 사항이 반영된 것을 확인할 수 있다. - -## 블로그 운영하기 ---- -위에서 열거한 방법은 최초 구축을 위한 방법으로 블로그 포스팅을 작성하고 운영하며 매일 다루게 되는 방법과는 다르다. 이에 운영하며 필요로 하게 되는 방법들은 간략하게 모아 별도의 포스팅으로 작성하였다. 관심있는 분들은 [[Jekyll Blog] (운영에 필요한) GitHub & Jekyll 사용법](https://theorydb.github.io/envops/2019/05/21/envops-blog-how-to-use-git/)을 참고하시기 바란다. - - -이로써 여러분의 블로그가 완성되었음을 축하드린다. 다만 Jekyll과 GitHub에 적응하기까지 제법 오랜 시간이 걸릴지도 모른다. 그래서 다음글 [Prose.io 연동으로 포스팅을 쉽게! 배포는 더 쉽게!](https://theorydb.github.io/envops/2019/05/04/envops-blog-posting-prose-io/)에서는 배포없이 좀 더 편하게 포스팅 할 수 있는 방법에 대해 알려드리고자 한다. - -> 필자가 수정 보완한 테마는 Free License이며 별도 동의없이 자유롭게 사용하실 수 있습니다. 마음에 드신다면 [필자의 블로그 저장소](https://github.com/theorydb/theorydb.github.io) [Fork] 버튼 왼쪽에 있는 `[★Star]` 버튼을 눌러주시면 큰 힘이 날 것 같네요. ^^. 긴 글 읽으시느라 고생 많으셨습니다. \ No newline at end of file diff --git a/_posts/2019-05-04-envops-blog-posting-prose-io.markdown b/_posts/2019-05-04-envops-blog-posting-prose-io.markdown deleted file mode 100644 index 8309700be..000000000 --- a/_posts/2019-05-04-envops-blog-posting-prose-io.markdown +++ /dev/null @@ -1,77 +0,0 @@ ---- -layout: post -title: "[Jekyll Blog] Prose.io 연동으로 포스팅을 쉽게! 배포는 더 쉽게!" -subtitle: "Prose.io" -categories: envops -tags: envops blog github pages jekyll prose io markdown editor -comments: true ---- - - -## 개요 -> `Prose.io`와 Github Pages를 연동하여 `더 쉽게 수정하고 배포하는` 방법을 알려드립니다. - -- 목차 - - [Prose.io란?](#proseio란) - - [Prose.io 회원가입 및 Github 연동](#proseio-회원가입-및-git-연동) - - [Prose.io로 포스트 수정하기](#proseio로-포스트-수정하기) - - -## Prose.io란? ---- -Jekyll과 Git을 사용하면서 디자인에 집중하거나 웹 프로그래밍의 기능에 집중하거나 배포 시 SFTP 등을 이용하여 변경된 파일을 일일이 기억하고 하나씩 클릭하여 업로드하는 글쓰기에 집중되지 않는 혹은 반복적이고 불편한 작업에서 크게 해방되었다. - -이 정도 수준이면 충분히 만족할 만 하지만 사람은 더 편한 환경을 찾기 마련이다. 낯선 장소에서 블로그를 수정할 일이 생긴다면 Git을 설치하고 Clone 명령어를 수행하고 다시 Commit, Push하는 작업을 피할 수는 없기 때문이다. - -게다가 수정하고 싶은 부분이 아주 작은 부분일 때 더욱 그렇다. 글을 수정하는데 걸리는 시간은 겨우 10초 정도인데, 환경을 구성하고 배포를 위한 시간이 5분이 걸린다면 능률이 떨어질 수 밖에 없다. 이런 불편함을 해결하고 싶다면? - -답은 [`Prose.io`](http://prose.io/)다. 분명 Jekyll 기반의 정적 컴파일을 해야 HTML로 변환이 될텐데 신기하게도 FTP 또는 DB에 직접 붙어서 글을 수정하는 것 같은 느낌을 받게된다. 연동도 매우 간단하다. 백번 설명하는 것보다 직접 연동하여 사용해보자. - -> __Prose.io__ ? -> Prose provides a beautifully simple content authoring environment for CMS-free websites. -> It's a web-based interface for managing content on GitHub. - - -## Prose.io 회원가입 및 Github 연동 ---- -1. Github에 로그인 후, [`Prose.io`](http://prose.io/)에 접속하자. `AUTHORIZE ON GITHUB` 버튼을 클릭하면, Prose라는 써드파티 App이 Github으로의 접근권한을 요청하는 화면으로 이동하게 된다. -![그림1](https://theorydb.github.io/assets/img/envops/2019-07-04-envops-blog-posting-prose-io-1.jpg) - -2. `Authorize prose`를 클릭하여 Prose의 Github 접근을 허용해준다. -![그림2](https://theorydb.github.io/assets/img/envops/2019-07-04-envops-blog-posting-prose-io-2.jpg) - -3. 패스워드를 입력한 후, `Confirm password`를 클릭한다. -![그림3](https://theorydb.github.io/assets/img/envops/2019-07-04-envops-blog-posting-prose-io-3.jpg) - -Git의 Project들이 전부 연동된 것을 확인할 수 있다. 이것으로 연동이 끝났다! -![그림참쉽죠](https://theorydb.github.io/assets/img/fun/bob-rose.jpg) -참~ 쉽죠? - - -## Prose.io로 포스트 수정하기 ---- -연동을 완료하였으니, 테스트로 포스트 하나를 간단히 수정해보자. - -1. 아래 그림과 같이 블로그 Project 우측의 `View Project`를 클릭한다. -![그림4](https://theorydb.github.io/assets/img/envops/2019-07-04-envops-blog-posting-prose-io-4.jpg) - -2. 블로그 글들이 담긴 폴더를 클릭한다.(Jekyll은 대부분 `_posts`폴더에 작성한 글들이 모여있다.) -![그림5](https://theorydb.github.io/assets/img/envops/2019-07-04-envops-blog-posting-prose-io-5.jpg) - -3. 아무글이나 하나 선택하여 `Edit` 버튼을 클릭하면, markdown 편집기가 열려 글을 수정할 수 있다. -![그림6](https://theorydb.github.io/assets/img/envops/2019-07-04-envops-blog-posting-prose-io-6.jpg) - -4. `미리보기`(눈 모양) 버튼을 클릭하면 미리보기로 중간 중간 수정이 잘 되고 있는지 확인할 수 있다. (필자의 경우 개요 맨 뒤에 `느낌표` 하나를 추가해보았다. 미리보기로도 잘 보여진다.) -![그림7](https://theorydb.github.io/assets/img/envops/2019-07-04-envops-blog-posting-prose-io-7.jpg) - -5. 수정이 완료되면 아래 그림과 같이 `저장`버튼을 누른다. 저장이 완료되면 `COMMIT` 버튼을 눌러 배포한다. -> * 수정내역 알림 : 수정 전,후 변경된 부분을 하이라이트로 알려준다. -> * 권장사항 반영 : markdown 권장 문법에 어긋나게 작성한 것은 자동으로 보정해준다. -![그림8](https://theorydb.github.io/assets/img/envops/2019-07-04-envops-blog-posting-prose-io-8.jpg) - -6. 블로그에 접속하면 수정한 사항이 정상적으로 반영된 것을 확인할 수 있다. -![그림9](https://theorydb.github.io/assets/img/envops/2019-07-04-envops-blog-posting-prose-io-9.jpg) - - -이제 Prose를 이용하여 어디서든 쉽게 블로그의 글을 수정할 수 있게 되었다. 관련 Eco 환경이 점점 좋아지고 있기 때문에 굳이 프로그래머가 아니더라도 누구든 쉽게 Jekyll 기반의 블로그를 운영할 수 있는 세상이 되어가고 있다. 프로그래머와 거리가 먼 분일지라도 필자의 블로그와 구글 검색을 통해 도전해시길 추천드린다. - \ No newline at end of file diff --git a/_posts/2019-05-11-envops-blog-tipue-search.markdown b/_posts/2019-05-11-envops-blog-tipue-search.markdown deleted file mode 100644 index 9afab3dfa..000000000 --- a/_posts/2019-05-11-envops-blog-tipue-search.markdown +++ /dev/null @@ -1,157 +0,0 @@ ---- -layout: post -title: "[Jekyll Blog] Tipue Search를 이용하여 블로그 검색 기능 만들기" -subtitle: "Tipue Search 플러그인" -categories: envops -tags: envops blog github pages jekyll site search tipue -comments: true ---- - - -## 개요 -> `Tipue Search`를 활용하여, 블로그 검색 기능을 구축한 과정에 대한 기록입니다. - -- 목차 - - [Tipue Search란?](#tipue-search란) - - [Tipue Search 설치](#tipue-search-설치) - - [Tipue Search 환경설정](#tipue-search-환경설정) - - [최적화 적용을 위한 디테일 마무리](#최적화-적용을-위한-디테일-마무리) - - -## Tipue Search란? ---- -블로그를 운영하다보니 검색 기능이 필요해졌다. 시간이 지날수록 포스트 개수가 늘어나게 되는 것은 당연한 일이기 때문이다. 기술 블로그는 다른 이들과 기술을 공유하는 목적도 있지만 개인적으로 효율적인 기억 관리를 위해 활용하기도 하는데, 정작 본인이 필요한 포스트의 위치가 기억나지 않아 한참 해맨다면 블로그 운영이 무슨 의미가 있을까? 그래서 검색기능을 만들어보기로 결심하였다! - -* __검색 기능을 뭘로 만들지?__ -우리나라 개발 환경의 고질적인 병폐일까? 검색 기능을 구현하기 위해 가장 먼저 떠오른 것이 슬프게도 DB였다. Oracle, Mysql, Pgsql,... 어떤것을 운영할까? 클라우드를 이용해야 하나? - -* __아! 맞다. 이 블로그는 Jekyll로 만들었지!__ -당연히 데이터가 DB에 있어야 DB 검색을 활용할 수 있다. 정적 컴파일러 Jekyll로 제작된 블로그에 DB는 당연 고려대상이 아니다. 그렇다면 Front-End 기술을 이용해야 한다는 의미니깐.. JavaScript를 이용해서 만들어야 하나? 고민하던 중 sitemap.xml, feed.xml이 생각났다. XML 기반의 Data가 구조적으로 모여있으니 XML 파싱을 이용하여 검색 기능을 구현해야겠다 마음먹던 중 귀차니즘이 밀려왔다. ~~난 Front-End 기술을 공유하기 위해 블로그를 만든것이 아닌데.. 데이터 사이언스 기술 공유가 목적인데..~~ 이걸 굳이 만들어야 하나?^^; - -* __Jekyll도 있는데 Front-End 검색 기능이 없겠어?__ -위대한 구글신께 물어보니 역시나 훌륭한 site search plugin을 발견하게 되었다. 그 이름하여 [`Tipue Search`](http://www.tipue.com/search/)! 메인 페이지를 들어가보니 대문에 `제이쿼리를 활용하여 만들었고 무료이며 빠르다`라고 자랑하고 있다. (실제로 자랑 할 만 하다.) 쓸만한지 테스트가 필요하시면 본 블로그 좌측메뉴 About 밑에 붙어있는 검색창을 사용해보시기 바란다. - - -## Tipue Search 설치(Window PC 버전) ---- -필자의 블로그에 구현된 기능이 맘에 드셨다면 바로 설치를 시작해보자. - -1. Github Repository 접속 : [`https://github.com/jekylltools/jekyll-tipue-search`](https://github.com/jekylltools/jekyll-tipue-search) -![그림1](https://theorydb.github.io/assets/img/envops/2019-07-03-envops-site-search-1.jpg) -2. `Clone or download` 를 클릭하여, `jekyll-tipue-search-master.zip` 파일을 다운받아 압축을 푼다. -3. 압축을 풀면 나오는 `search.html`파일을 본인의 깃헙 블로그 최상위 디렉토리(예: C:\githubPages\theorydb.github.io)에 복사한다. -![그림2](https://theorydb.github.io/assets/img/envops/2019-07-03-envops-site-search-2.jpg) -![그림3](https://theorydb.github.io/assets/img/envops/2019-07-03-envops-site-search-3.jpg) -4. `압축을 푼 폴더/assets/`안에 있는 `tipuesearch` 폴더를 본인의 깃헙 블로그 `최상위 디렉토리/assets/`(예: C:\githubPages\theorydb.github.io\assets\tipuesearch)아래에 복사한다. -![그림4](https://theorydb.github.io/assets/img/envops/2019-07-03-envops-site-search-4.jpg) - -이것으로 설치는 끝났다. 참 쉽죠~? -이제 환경설정을 통해 블로그에 적용해 보자. - - -## Tipue Search 환경설정 ---- -Jekyll 테마에 따라 설정이 약간 다를 수 있다. 본 블로그의 테마는 `Clean Blog`로, 동일한 테마를 사용하시는 경우 그대로 적용하면 된다. (운영중인 테마가 달라 적용에 어려움이 있는 경우 맨 하단의 Disqus에 댓글을 남겨주시면 아는 범위내에서 최대한 설명해 드리겠습니다.) - -1. `본인의 깃헙 블로그 최상위 디렉토리/_config.yml` (예:C:\githubPages\theorydb.github.io\_config.yml) 파일을 열어 맨 아래에 다음의 코드를 추가한다. - ```yml - tipue_search: - include: - pages: false - collections: [] - exclude: - files: [search.html, index.html, tags.html] - categories: [] - tags: [] - ``` -![그림5](https://theorydb.github.io/assets/img/envops/2019-07-03-envops-site-search-5.jpg) ->* include 부분의 `pages: false`의 설정은 pages 레이아웃에 해당하는 일반 html페이지는 검색하지 않겠다는 것을 의미한다.(포스트 내용 검색에 집중하기 위함) ->* exclude 부분의 `search.html, index.html, tags.html` 페이지는 검색에서 제외하겠다는 것을 의미한다. - -1. `본인의 깃헙 블로그 최상위 디렉토리/_includes/head.html` (예: C:\githubPages\theorydb.github.io\_includes\head.html) 파일을 열어 `META`영역 제일하단, `LINKS`영역 바로 위의 위치에 다음의 코드를 추가한다. - ```javascript - - - - - - - ``` -![그림6](https://theorydb.github.io/assets/img/envops/2019-07-03-envops-site-search-6.jpg) - -1. `본인의 깃헙 블로그 최상위 디렉토리/search.html` (예: C:\githubPages\theorydb.github.io\search.html) 파일을 열어 아래 그림과 같이 설정한다. -![그림7](https://theorydb.github.io/assets/img/envops/2019-07-03-envops-site-search-7.jpg) -> * `layout : page` 부분은 포스팅이 담기는 레이아웃 명칭이다.(테마에 따라 다를 수 있음) -> * `permalink: /search/` 부분은 다음 단계에서 설정할 검색어 및 버튼 Element의 form 태그 내 action 속성과 일치시켜야 한다. -> * `'wholeWords' : false` 속성은 한글 검색을 가능하게 하는 옵션이다. -> * `'showTime' : false` 속성은 검색이 완료되기 까지 소요된 시간을 표시하는 옵션이다. -> * `'minimumLength' : 1` 속성은 최소 검색 글자수에 대한 설정으로 필자는 한단어 이상이면 검색가능하게 설정하였다. -> * 그 외의 옵션은 Tipue 메인홈페이지 [`Tipue Search`](http://www.tipue.com/search/)에 접속하여 `Options in the .tipuesearch() method`에서 상세하게 확인할 수 있다. - -1. 마지막으로 `본인의 깃헙 블로그 최상위 디렉토리/_includes/sidebar.html` (예: C:\githubPages\theorydb.github.io\_includes\sidebar.html) 파일을 열어 아래 그림과 같이 설정한다. -> [주의사항] -> `sidebar.html` 페이지를 수정하는 이유는 필자가 검색창을 붙이길 원하는 위치의 페이지가 sidebar.html이기 때문입니다. -> 본인의 블로그에 검색창을 붙일 위치를 정한 후 해당 파일 및 파일 내 위치를 정한 후 해당 부분을 수정해야합니다. - - ```html -

-
- -
-
-
-
- - ``` -![그림8](https://theorydb.github.io/assets/img/envops/2019-07-03-envops-site-search-8.jpg) -> * `action="/search"` 설정은 위의 search.html 파일의 permalink 속성과 일치시킨것이다. -> * `pattern=".{1,}"` 속성은 검색어가 1글자 이상이면 검색을 허용한다는 의미로 활용하는 정규표현식 설정이다. -> * `title="At least 1 characters"` 설정은 위의 pattern을 지키지 않은 채 검색을 시도할 경우 나타나는 알림메시지 문구이다. - -1. 설치가 마무리 되었으므로 아래 그림과 같이 검색이 잘 동작하는지 확인한다. -![그림9](https://theorydb.github.io/assets/img/envops/2019-07-03-envops-site-search-9.jpg) - -## 최적화 적용을 위한 디테일 마무리 ---- -Tipue Search의 디폴트 기능만 설치된 상태이므로 필자는 블로그에 보다 친화적으로 어울릴 수 있도록 기능을 수정해보았다. 이번 단계는 귀차니즘 가동 시 건너뛰셔도 무방하다. - -1. `검색 입력창` 사이즈 조정을 위해 `C:\githubPages\theorydb.github.io\assets\tipuesearch\css\tipuesearch.css`의 CSS 속성을 변경하였다. - ```css - #tipue_search_input - { - color: #333; - max-width: 150px; - max-height: 20px; - padding: 17px; - border: 2px solid #626591; - border-radius: 0; - -moz-appearance: none; - -webkit-appearance: none; - box-shadow: none; - outline: 0; - margin: 0; - } - ``` - -1. `검색버튼(돋보기모양)`이 좌측 메뉴의 배경색에 가려져 잘 보이지 않아 색상을 조절하였고, 본 테마의 img 태그 CSS 속성이 검색창 모양을 삐뚫어져 보이게 만들어 해당 태그의 CSS속성을 상속받아 사이즈를 수정하였다. 마찬가지로 `C:\githubPages\theorydb.github.io\assets\tipuesearch\css\tipuesearch.css` 파일에서 아래와 같이 CSS 속성을 변경하였다. - ```css - .tipue_search_icon - { - width: 19px; - height: 19px; - margin-bottom: 0rem; - background-color: #626591; - } - .tipue_search_left - { - float: left; - padding: 10px 5px 0 0; - color: #e3e3e3; - max-height: 20px; - } - ``` - -이로써 Tipue Search 오픈소스를 활용하여 블로그에 멋진 검색 기능을 구축하였다. 다음 기능으로는 Jekyll 기반 블로그의 `Disqus` 댓글 기능 추가에 대하여 포스팅 할 예정임을 미리알려드린다. - - -> Jekyll 기반의 깃헙 페이지 블로그 구축 포스팅은 계속될 예정입니다. 처음 구축하는 방법부터 올리려고 했는데 시간 부족으로 계속 미루고 있네요^^; 포스팅 순서가 어긋나더라도 차후 개인적으로 구현하려는 목표가 모두 완성되는대로 `구축을 위한 설계도` 개념의 포스팅에서 통합 정리 및 링크부여를 통해 가급적 편하게 보시며 구축하실 수 있도록 노력하겠습니다. 읽어주셔서 감사합니다. \ No newline at end of file diff --git a/_posts/2019-05-21-envops-blog-how-to-use-git.markdown b/_posts/2019-05-21-envops-blog-how-to-use-git.markdown deleted file mode 100644 index d7d5053a1..000000000 --- a/_posts/2019-05-21-envops-blog-how-to-use-git.markdown +++ /dev/null @@ -1,214 +0,0 @@ ---- -layout: post -title: "[Jekyll Blog] (운영에 필요한) GitHub & Jekyll 사용법" -subtitle: "GitHub & Jekyll" -categories: envops -tags: envops blog github pages jekyll -comments: true ---- - - -## 개요 -> 이전에 올린 포스팅 [GitHub 연동 및 Jekyll 설치](https://theorydb.github.io/envops/2019/05/03/envops-blog-github-pages-jekyll/)는 최초 구축(1회성)에 포커스를 맞추고 있다. 이번 글은 매일 사용하게 되는 글쓰기 즉, `운영에 초점을 맞춰` GitHub & Jekyll 사용법을 다뤄보려한다. - -- 목차 - - [Git & GitHub. 꼭 써야 하나요?](#git--github-꼭-써야-하나요) - - [(최초 1번만 참고) 회사에서만 작성하다가 처음으로 집에서 수정할 일이 생겼다.](#최초-1번만-참고-회사에서만-작성하다가-처음으로-집에서-수정할-일이-생겼다) - - [(매일 참고) 집, 회사 가리지 않고 아무데서나 적성하고 싶다.](#매일-참고-집-회사-가리지-않고-아무데서나-적성하고-싶다) - - [더 알고 싶다면…](#더-알고-싶다면) - - -## Git & GitHub. 꼭 써야 하나요? ---- -Git은 분산(`여러명`이 수정할 수 있다.)버전(`최최..종`을 자동으로 관리해준다.)관리시스템이며, GitHub는 Git으로 생산된 산출물이 저장되는 Git저장소라고 할 수 있겠다. 지역저장소를 관리하기 위한 도구가 Git이며, 원격저장소의 집합체가 GitHub이다. - -* __Git을 쓰는 대표적인 이유__ - + 여러분이 지금 작성하고 있는 파일은 절대 최종 파일이 아니다. - + 기껏 회사에서 수정했건만.. 집에 있는 파일 또 수정해야 하나? USB, 클라우드 활용도 지겹다. - + 열심히 고쳤는데 다른 사람이 고치면서 내가 수정한 것 다 날라갔다. - ![그림1](https://theorydb.github.io/assets/img/fun/final-real.jpg) - -* __Git Bash vs Git GUI__ - + Git을 사용하기 위한 인터페이스는 크게 2가지 방법으로 나뉜다. - + `Bash`란 커맨드 모드로 텍스트 기반의 명령어를 통해서 Git을 사용하는 방법이고, `GUI`는 화면을 마우스로 제어하여 Git을 사용하는 방법이다. - + 처음에는 GUI가 편하다. 다만 갈수록 복잡해지는 기능을 숙달하기에는 직관적이지 않고 사용하기 어려워진다. 태생이 리눅스 버전을 관리하기 위한 용도로 개발되었기 때문에 Bash 모드에 적응하는 것이 Git의 활용도를 높이는 길이다. - -* __프로그램 소스코드 관리에만 쓰는거 아니예요?__ - + 아니다. 물론 프로그램 소스 관리에 주로 사용되지만 `그 어떤 문서`도 관리 및 공유가 가능하다. 예를들어 [`개발 블로그 모음`](https://github.com/theorydb/awesome-devblog)페이지는 일반문서로 깃헙으로 관리되고 있다. - - -## (최초 1번만 참고) 회사에서만 작성하다가 처음으로 집에서 수정할 일이 생겼다. ---- -먼저 블로그를 작성하려는 장소(PC, 노트북 등)가 변경 시 `최초 1회에 한하여 셋팅`해야 하는 내용을 다룬다. 이미 블로그를 운영중이라는 가정하에 작성하였으므로 아직 블로그를 구축하지 않은 분들은 [GitHub 연동 및 Jekyll 설치](https://theorydb.github.io/envops/2019/05/03/envops-blog-github-pages-jekyll/)를 참고하시기 바란다. - -* __1. Git 설치 및 내 블로그 복사(Clone)__ - + Git 설치 - 먼저 Git을 다운로드하기 위해 아래 그림과 같이 에 접속하여 Download 메뉴를 클릭한다. PC OS버전에 맞는(필자의 경우는 Windows 64-bit) Git 설치파일을 다운로드 받아 설치한다. - ![그림6](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-6.jpg) - 이후 설치는 디폴트 설정 그대로 `Next` 버튼만 누르면 된다. - - + 폴더 생성 및 Git Bash 실행 - - 내 블로그를 다운로드(복사)할 `폴더를 생성`한다. (필자의 경우는 보통 C:\githubPages\theorydb.github.io 위치에서 블로그를 관리한다.) - - 해당 폴더에 들어가 마우스 우클릭 후 `Git Bash Here`를 선택하여 Git Bash창을 실행시킨다. - - + Git 사용자 등록 - Git Bash창 프롬프트에서 아래와 같은 명령어로 본인 GitHub 계정을 등록한다. - ```git - $ git config --global user.name "사용자" - $ git config --global user.email "사용자 이메일" - ``` - 예를들면, 필자는 아래와 같이 설정한다. 참고로 Git Bash창에서의 붙여넣기는 우클릭 혹은 `Shift+Insert` 단축키를 활용하면 된다. (Git Bash창에서는 대부분의 리눅스 명령어 사용이 가능하다.) - ```git - $ git config --global user.name "MIN-HEO" - $ git config --global user.email "theorydb@gmail.com" - ``` - - + 내 블로그 다운받기(원격저장소 PC에 Clone) - 본인의 블로그를 올린 GitHub 원격저장소에 접속하여 아래 그림과 같이 `Clone` 명령어를 복사한다. - ![그림7](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-7.jpg) - - Git Bash창에서 아래 그림과 같이 `git clone + [복사한 Clone 명령어]` 형태로 붙여넣기한다. - ```git - $ git clone https://github.com/theorydb/theorydb.github.io.git - ``` - ![그림8](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-8.jpg) - 엔터키를 치면 위에서 만든 폴더에 내 블로그 파일이 복사될 것이다. - - -* __2. Ruby & Jekyll 설치__ - + Ruby 설치 - - 루비 인스톨러 공식페이지 에 접속하자. 아래 그림과 같이 `=>`로 표시된 Ruby+Devkit 2.5.5-1 (x64)을 클릭하여 다운로드 한 후 Next만 누르며 디폴트로 설치하면 된다. - ![그림9](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-9.jpg) - - + Ruby Prompt 실행 - - 아래 그림과 같이 윈도우 검색창에서 `Start Command Prompt with Ruby`를 실행한다. - ![그림10](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-10.jpg) - - - 아래 그림과 같이 프롬프트 상에서 `chcp 65001`를 실행한다. 인코딩을 부여하기 위한 명령어로 실행하지 않을 경우 이후 진행될 온갖 명령어에서 오류가 발생하므로 꼭 진행한다. - ```ruby - > chcp 65001 - ``` - ![그림11](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-11.jpg) - - - 위에서 블로그를 Clone했던 폴더로 이동한다. (아래 명령어는 필자의 예시로, 여러분이 지정한 경로로 이동하여야 한다.) - ```ruby - C:\>cd "C:\githubPages\theorydb.github.io" - ``` - + Jekyll 라이브러리 설치 - - Ruby의 gem 명령어를 활용하여 아래 그림과 같이 Jekyll 및 필요한 라이브러리를 설치한다. (참고로, gem이란 python의 pip install과 유사한 기능으로 라이브러리를 설치할 수 있도록 지원하는 도구다.) - ```ruby - C:\githubPages\theorydb.github.io>gem install bundler jekyll minima jekyll-feed tzinfo-data rdiscount - ``` - ![그림12](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-12.jpg) - "Successfully..." 메시지가 반복해서 보이다가 "XX gems installed" 문구가 나오면 성공적으로 설치된 것이다. - - + Jekyll 초기화 설정 - - 블로그를 Clone했던 폴더에서 아래 코드와 같이 초기화 설정을 진행한다. - ```ruby - C:\githubPages\theorydb.github.io>jekyll new theorydb.github.io - ``` - - - 위 초기화 과정은 생각보다 많은 에러를 경험하는 부분이기에 자주 발생하는 오류 몇가지를 정리해본다. - * (`트러블슈팅 1`) You have already activated i18n 1.8.2, but your Gemfile requires i18n 0.9.5. 오류 발생 시 : - project의 버전과 jekyll 설치된 버전이 달라서 발생하는 의존성 문제로 bundler를 설치함으로써 해결할 수 있다. - ```ruby - > gem install bundler - > bundle install - > bundle exec jekyll new theorydb.github.io # 기존 명령어 앞에 "bundle exec"을 추가하여 재 실행 - ``` - * (`트러블슈팅 2`) Could not find public_suffix-3.1.1 ... (Bundler::GemNotFound) 오류 발생 시 : - bundle을 최신버전으로 업데이트 해준다. - ```ruby - > bundle update - ``` - 혹은 아래와 같이 오류에 명시된 특정 패키지별로 최신버전을 지정하여 설치해준다. - ```ruby - > gem install public_suffix --version 3.1.1 - ``` - -* __3. 블로그 접속__ - + Jekyll 서버 구동 및 블로그 접속 - - 드디어 모든 준비과정이 끝났다. 지킬 서버를 구동해보자. - ```ruby - C:\githubPages\theorydb.github.io> bundle exec jekyll serve - ``` - ![그림13](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-13.jpg) - - - 웹브라우저를 실행하여 `http://127.0.0.1:4000/`주소로 접속해보자. Apache 등 웹서버를 설치하지 않았지만 블로그가 로컬에서 아래 그림과 같이 잘 실행되고 있음을 확인할 수 있다. - ![그림14](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-14.jpg) - - -이로써 새로운 기기에서의 블로그 포스팅을 위한 준비 과정이 끝났다. 위에서 언급한 바와 같이 본 설치과정은 처음 1회만 성공하면 다음부터는 별로 고려할 일이 없다. - -이어서 매일 포스팅을 작성하는 과정에서 필요한 명령어를 정리해보겠다. 어려움이 있으시다면 댓글을 남겨주시기 바란다. - - -## (매일 참고) 집, 회사 가리지 않고 아무데서나 적성하고 싶다. ---- -이제 Git과 Jekyll을 사용하기 위한 환경 구축은 끝났다. 본 장에서는 업무상 긴급한 업무가 발생하여 `집에서 수정하여 올린 후, 회사에서 수정한 내용을 다운로드 후 다시 수정하여 올리는` 시나리오를 가정하여 설명드리고자 한다. - -* __1. 최신파일 다운로드(`Pull`)__ - + 파일을 작성하기에 앞서 각각의 기기별 상황을 살펴보자. - * GitHub(원격저장소) : 서비스 운영중인 최종버전 상태 - * 집PC(지역저장소) : 마지막으로 업로드 한 시점이 1년전이라 GitHub와 비교할 경우 최근 1년동안 작성한 A,B,..등의 파일이 없다. - * 회사PC(지역저장소) : 현 시점엔 GitHub와 동일한 상태이지만 집PC에서 Z라는 문서를 만들어서 올리게 되면 역시 불일치가 발생하게 된다. - - + 이러한 불일치 상황 때문에 파일을 작성하기 전 가장 먼저 해야할 작업은 GitHub의 최신버전 파일을 다운로드 받아 갱신하는 일이다. - 블로그를 Clone한 최상위 폴더에서 Git Bash를 실행한 후, 아래 코드와 같이 최신파일을 다운로드(Pull) 한다. - ```git - $ git pull # 다운로드 - $ git log # 커밋내용 확인 - ``` - -* __2. `새로운 파일`을 작성한다.__ - + Jekyll 활용(정적컴파일 테스트 기능) : `시작`버튼 -> start command prompt with ruby -> 블로그 최상위 폴더 이동(예: C:\githubPages\theorydb.github.io) -> `bundle exec jekyll serve` ([바로 위 챕터 "3.블로그 접속" 참고](#최초-1번만-참고-회사에서만-작성하다가-처음으로-집에서-수정할-일이-생겼다)) - + 마크다운(Markdown) 사용법 및 예제 : 본 블로그 [게시글](https://theorydb.github.io/envops/2019/05/22/envops-blog-how-to-use-md/) 참고 - -* __3. 아래 코드와 같이 수정한 파일을 포함한 모든 파일을 `로컬 저장소에 업로드(Staging)` 한다.__ - ```git - $ git add --all - (혹은)$ git add test.txt # 수정한 파일만 올리는 경우 - ``` - ![그림15](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-15.jpg) - - (`트러블슈팅`) warning: LF will be replaced by CRLF in Gemfile.lock. 오류 발생 시 : - 시스템 간 개행문자(Line Feed)가 달라서 발생하는 문제이다. 리눅스는 LF, 윈도우는 CRLF을 사용하기 때문이다. - 협업자간 시스템이 동일하다면 autocrlf 기능을 활용하여 아래와 같은 명령어로 해결할 수 있다. - ```git - $ git config --global core.autocrlf true # 윈도우끼리 사용하는 경우 - $ git config --global core.autocrlf true input # 리눅스, 맥끼리 사용하는 경우 - ``` - -* __4. 수정된 파일들을 `로컬저장소에 업로드(Commit)`한다.__ - ```git - $ git commit -m "updates at HOME" - ``` - ![그림16](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-16.jpg) - -* __5. 로컬저장소에 커밋된 파일을 `원격저장소에 업로드(Push)`한다.__ - 업로드 도중 본인의 GitHub 아이디와 비밀번호 인증을 통과해야 업로드가 성공적으로 완료된다. (매번 인증이 귀찮을 경우 SSH 원격접속 기능을 활용할 수도 있다.) - ```git - $ git push -u origin master - ``` - ![그림17](https://theorydb.github.io/assets/img/envops/2019-05-03-envops-blog-github-pages-jekyll-17.jpg) - -* __6. 여러분의 블로그 URL(`https://[username].github.io`)에 접속하면 수 분 이내로 수정된 사항이 반영된 것을 확인할 수 있다.__ - -이상으로 2개 이상의 기기에서 작업을 수행하는 경우 운영방법을 알아보았다. 이와 같은 상황에서는 `풀(Pull) & 푸쉬(Push)를 습관화`하는 것이 좋다는 것을 유념하자. - - -## 더 알고 싶다면... ---- -개인 블로그는 보통 자기자신 즉, 1인이 관리하기 때문에 위에서 다룬 시나리오와 같이 장소(혹은 기기)가 변경되는 경우 외에는 버전 관리에 큰 이슈가 생기지 않는다. - -하지만 사내 기술 블로그와 같이 팀원들과 협업하여 관리하게 되는 경우는 어떻게 될까? 수정한 시점의 차이로 인해 A, B가 지역저장소에 소유한 두 파일이 서로 약간씩 다른 충돌 문제가 발생할 수 있다. - -더 깊게 다루고 싶지만 본 블로그의 운영 취지와는 맞지않아 생략한다. 더 관심있는 분들은 [[리뷰] Do it! 지옥에서 온 문서관리자 깃&깃허브 입문](https://theorydb.github.io/review/2019/12/26/review-book-git-github/) 포스팅에서 보다 자세한 이슈 사항을 정리하였다. Git관련 여러 도서를 보았지만 제법 난이도가 있기에 본 리뷰에서 소개한 책이 초보자 분들께는 가장 추천하고 싶은 도서이다. - -보다 많은 기능을 배우고 싶다면 아래 링크들을 참고하시기 바란다. -* GitHub 공식 가이드 : -* 누구나 쉽게 이해할 수 있는 Git 입문 : -* 버전관리를 들어본적 없는 사람들을 위한 DVCS - Git : -* svn 능력자를 위한 git 개념 가이드 : - -지금까지 GitHub & Jekyll 기반의 블로그 운영 방법에 대해 알아보았다. 블로그, 문서, 프로그래밍 소스코드 가릴것 없이 중복과 버전 관리로 인한 스트레스가 해결되시길 바란다. diff --git a/_posts/2019-05-22-envops-blog-how-to-use-md.markdown b/_posts/2019-05-22-envops-blog-how-to-use-md.markdown deleted file mode 100644 index 3d19e137c..000000000 --- a/_posts/2019-05-22-envops-blog-how-to-use-md.markdown +++ /dev/null @@ -1,379 +0,0 @@ ---- -layout: post -title: "[Jekyll Blog] 마크다운(Markdown) 사용법 및 예제" -subtitle: "마크다운(Markdown)" -categories: envops -tags: envops blog github pages jekyll markdown -comments: true ---- - - -## 개요 -> 지금 당장 필요한 `마크다운(Markdown)` 문법부터 단계적으로 배워봅시다. - -- 목차 - - [Markdown이란?](#markdown이란) - - [Markdown 에디터 뭘 쓸까?](#markdown-에디터-뭘-쓸까) - - [Markdown 문법1(반드시 알아야 하는)](#markdown-문법1반드시-알아야-하는) - - [Markdown 문법2(유용한 부가기능)](#markdown-문법2유용한-부가기능) - - [실전연습](#실전연습) - - [이미지를 쉽게 업로드 하는 방법](#이미지를-쉽게-업로드-하는-방법) - - [소소한 Tip 그리고 고장났을 때](#소소한-tip-그리고-고장났을-때) - - -## Markdown이란? ---- -[Markdown](http://kirkstrobeck.github.io/whatismarkdown.com/)은 문서 작성을 지원하는 태그(Tag) 형식의 문법이다. -> __What is Markdown? (출처 - 위키백과)__ -> 마크다운(markdown)은 일반 텍스트 문서의 양식을 편집하는 문법이다. README 파일이나 온라인 문서, 혹은 일반 텍스트 편집기로 문서 양식을 편집할 때 쓰인다. 마크다운을 이용해 작성된 문서는 쉽게 HTML 등 다른 문서형태로 변환이 가능하다. - -* __익숙한 MSWord나 한글(HWP)로 작성하면 안 되나요?__ -가능하다. 하지만 `WEB에서 글을 쓰고 싶다면` 이 둘은 적합한 도구가 아니다. 세상의 거의 모든 컨텐츠가 WEB 기반으로 생산되고 소비되기 때문에 이 문제는 중요하다. 물론 이런 편집기로도 Save As(다른 이름으로 저장) 기능을 통해 HTML 확장자로 변환 후 WEB에 올릴수도 있지만 변환된 소스코드의 양과 복잡도를 보면 경악을 금치 못하게 된다. 더욱이 스타일, 표 등이 온전하게 변환되지 않아 원본과 동일한 품질로 보기 어렵다. - -* __WEB문서라면 HTML이나 웹 프로그래밍 언어를 써도 되잖아요.__ -가능하다. 하지만 `생산성(작성 속도 및 편리성)에 큰 차이`가 있다. 더욱이 WEB언어를 모르는 사람이라면 익숙하지 않은 프로그래밍의 문법을 다시 배우고 능숙해지는데 있어 상당한 노력과 시간을 필요로 하게 될 것이다. - -* __그 외에 좋은점은 뭔가요?__ - - 배우기가 정말 `쉽고 직관적`이다. - - Text로 저장 후 `HTML으로의 변환이 가능`하다. 변환을 지원하는 도구나 Eco(생태계)가 매우 많다. - - Text로 저장하기 때문에 `Git을 통한 버전관리가 가능`하고, 용량이 적어 `보관이 용이`하다. - - Python의 Jupyter Notebook, R의 R Markdown 등 다른 기술을 익히는데 있어 훌륭한 커뮤니케이션 도구로써 가치가 있다. - -* __안 좋은점은?__ -유일하게 안 좋은 점이 하나 있는데 표준이 없다. 핵심 문법을 제외하고는 에디터에 따라 결과물이 달라질 수 있다. - -## Markdown 에디터 뭘 쓸까? ---- -윈도우 메모장도 상관없다. 하지만 그따위 것을 쓰려고 이 포스팅을 보시진 않을 것이다. - -* __선정기준__ - - __Q.__ 다양한 표현이 가능한가? - 논문 수준 수식, 다양한 Icon 이미지, Code Block, UML 다이어그램,.. 등 - - __Q.__ 어디에 저장되니? - PC에만 저장되어서 USB에 들고 다녀야 하는건지? 클라우드 개념으로 어디서든 수정 가능한지? - - __Q.__ 퍼블리쉬(Publish) 지원여부? - Git, 구글드라이브, 블로거, 드랍박스, 워드프레스, 텀블러, PC, 개발서버, .. 등 - - Q. 얼마면 돼? 얼마나 편리한데? 등 - - 그 외 온라인(인터넷)이 차단(비행기, 네트워크 장애, 비용 문제 등)될 때도 대비할 필요가 있다. - -* __추천 에디터__ - + [Prose.io](https://theorydb.github.io/envops/2019/07/04/envops-blog-posting-prose-io/) - - 어디서나 접속 가능하다. - - Git에 접속하여 `배포없이 바로 Markdown의 수정이 가능`하다. - - 위 링크를 클릭하여 필자가 작성한 Prose.io 설치 및 사용법을 알아보자. - + [StackEdit](https://stackedit.io) - - 위에 열거한 `구글드라이브, Git, 텀블러 전부 저장 및 배포` 가능하다. - - 어느 PC에서 접속해도 `동시성이 보장`된다. - - 예쁜 Icon부터 논문 수식까지 거의 모든 마크다운 표현이 가능하다. - + [MarkdownPad](http://markdownpad.com/) - - 위 링크에서 다운로드 가능하다. 단, 무료버전은 한계가 많다.(특히 편집탭이 4개밖에 열리지 않는다.) - - 클라우드 공유 방식이 아닌 PC에 설치하는 프로그램이다. 기능이 아주 뛰어나진 않다. - - 가끔 `서버가 다운되거나 인터넷이 느린 경우` PC에서 작업하기 때문에 사용할 수 있다는 점이 장점이다. - -* __그 외의 에디터__ - + [MacDown(for MAC)](https://macdown.uranusjr.com/) - + - -필자의 경우 위 세가지 모두 사용한다. 인터넷이 느린 반응을 보일 경우 Markdown Pad로 초안을 작성하고, StackEdit에서 보정 및 예쁜 시각화 지원을 이용한 후 Git을 통해 배포한다. 이후 경미한 수정을 할 경우 배포까지 하는 것은 배보다 배꼽이 큰 형국이므로, Prose를 이용하여 즉시 수정한다. - -일단 `초보자`라면 또는 포스트를 보고 실습을 원하신다면 위의 Markdown Pad 공식 사이트 링크를 클릭하여 PC에 설치 후 아래 소개될 문법을 익히며 예제를 따라 타이핑해보자. 설치가 아주 쉽다. 그냥 다운로드 버튼으로 다운받아 Next 버튼만 누르면 금방 깔린다. - -온라인 에디터의 경우 퍼블리쉬 등 클라우드 환경의 복잡한 부가 기능을 배우느라 Markdown 자체에 집중을 못할 수도 있다. 나중에 차차 익히면 되므로 먼저 Markdown을 익히는 것에 집중하자. - - - -## Markdown 문법1(반드시 알아야 하는) ---- -글을 작성할 때 마다 꼭 사용하는 문법들만 간추려 글을 쓰는 순서 및 흐름대로 기술하였다. 초보자라면 이 부분만 숙지해도 오늘을 보람찬 날로 만들 수 있을 것이다. 너무 쉬워 더 어려운 문법을 배우고 싶으시다면 다음 Chapter인 [Markdown의 기타 문법](#)으로 넘어가시기 바란다. - -실습은 간단하다. 마크다운 에디터를 실행한 후, 아래의 [1단계] ~ [8단계]까지 회색박스의 코드를 직접 손으로 코딩하신 후, 미리보기 화면으로 어떻게 보이는지 확인하시면 된다. - ---- -* __[1단계] `헤더(Header)` : 제목, 문단별 제목을 쓰고 싶을 때__ -글의 구조(개요) 및 큰 틀을 잡을 때 사용한다. - -``` -# 제목 1단계 -## 제목 2단계 -### 제목 3단계 -#### 제목 4단계 -##### 제목 5단계 -###### 제목 6단계 -``` - -# 제목 1단계 -## 제목 2단계 -### 제목 3단계 -#### 제목 4단계 -##### 제목 5단계 -###### 제목 6단계 - ---- -* __[2단계] `수평선` : 내용을 명시적으로 구분하고 싶을 때__ - -``` ---- -``` - ---- - ---- -* __[3단계] `엔터키(줄바꿈, 개행)` : 라인을 바꾸고 싶을 때__ - -``` -띄어쓰기 2번을 입력하면.(from) (to) -줄이 바뀐다. -``` - -띄어쓰기 2번을 입력하면.(from) (to) -줄이 바뀐다. - ---- -* __[4단계] `목록(List)` : 요소를 나열할 때__ - -``` -1. 첫번째 -1. 두번째 -1. 세번째 - -+ 순서없음 - - 홍길동 - * 중대장 - + 프로실망러 -``` - -1. 첫번째 -1. 두번째 -1. 세번째 - -+ 순서없음 - - 홍길동 - * 중대장 - + 프로실망러 - ---- -* __[5단계] `강조` : 문장 내 강조하고 싶은 단어를 눈에 띄게__ - -``` -__볼드(진하게)__ -_이탤릭체(기울여서)_ -~~취소선~~ -밑줄 -__볼드로 진하게 만들다가*이탤릭으로 기울이고*다시 볼드로__(중복 활용도 가능하다.) -``` - -__볼드(진하게)__ -_이탤릭체(기울여서)_ -~~취소선~~ -밑줄 -__볼드로 진하게 만들다가*이탤릭으로 기울이고*다시 볼드로__(중복 활용도 가능하다.) - ---- -* __[6단계] `인용구` : 인용할 경우 또는 분위기 전환시에도 사용(중복 형태 가능)__ - -``` -> 위키백과? ->> 중대장 드립 검색 ->>> "오늘 중대장은 너희에게 실망했다" -``` - -> 위키백과? ->> 중대장 드립 검색 ->>> "오늘 중대장은 너희에게 실망했다" - ---- -* __[7단계] `링크(Link)` : 클릭하면 다른 페이지, 다른 부분으로 이동 가능__ - -``` -유형1(`설명어`를 클릭하면 URL로 이동) : [TheoryDB 블로그](https://theorydb.github.io "마우스를 올려놓으면 말풍선이 나옵니다.") -유형2(URL 보여주고 `자동연결`) : -유형3(동일 파일 내 `문단 이동`) : [동일파일 내 문단 이동](#markdown의-반드시-알아야-하는-문법) -``` - -유형1(`설명어`를 클릭하면 URL로 이동) : [TheoryDB 블로그](https://theorydb.github.io "마우스를 올려놓으면 말풍선이 나옵니다.") -유형2(URL 보여주고 `자동연결`) : -유형3(동일 파일 내 `문단 이동`) : [동일파일 내 문단 이동](#markdown의-반드시-알아야-하는-문법) ->__유형3 문단 매칭방법__ : 제목(header)를 복사 붙여넣기 후, -> 1) `특수문자`제거 -> 2) 스페이스를 갯수만큼 `-`로 변경 -> 3) 대문자->`소문자`로 변경 -> 예) "#Markdown! 장점" -> "#markdown--장점" - -유형4(상대 경로로 서버 내 파일이동) 기능은 쓸 일이 거의 없어 제외한다. - ---- -* __[8단계] `이미지(Image)` : 이미지 보여주기__ - -``` -유형1(`이미지` 삽입) : -![이미지](https://theorydb.github.io/assets/img/think/2019-06-25-think-future-ai-1.png "인공지능") - -유형2(`사이즈를 조절`하고 싶은 경우 HTML 태그로 처리) : - - -유형3(이미지 삽입 후, `링크 걸기`) -[![이미지](https://theorydb.github.io/assets/img/think/2019-06-25-think-future-ai-1.png)](https://theorydb.github.io/think/2019/06/25/think-future-ai/) -``` - -유형1(`이미지` 삽입) : -![이미지](https://theorydb.github.io/assets/img/think/2019-06-25-think-future-ai-1.png "인공지능") - -유형2(`사이즈를 조절`하고 싶은 경우 HTML 태그로 처리) : - - -유형3(이미지 삽입 후, `링크 걸기`) -[![이미지](https://theorydb.github.io/assets/img/think/2019-06-25-think-future-ai-1.png)](https://theorydb.github.io/think/2019/06/25/think-future-ai/) - -이상 글을 쓸 때 매번 사용하는 Markdown의 문법을 알아보았다. - -## Markdown 문법2(유용한 부가기능) ---- -이 Chapter에서 배울 것들은 위의 기능보다는 사용 빈도가 낮지만 굉장히 고차원 적인 표현을 가능하게 해주는 매우 유용한 문법들이다. 필요할 때마다 참고하여 익히면 큰 도움이 될 것이다. - ---- -* __[1단계] `표(Table)` : 표 그리기__ - -``` -| | 수학 | 평가 | -|:--- | ---: | :---: | -| 철수 | 90 | 참잘했어요. | -| 영희 | 50 | 분발하세요. | -``` - -| | 수학 | 평가 | -|:--- | ---: | :---: | -| 철수 | 90 | 참잘했어요. | -| 영희 | 50 | 분발하세요. | - -> * 라인 단위로 생각하면서 구분자(`|`)로 열을 구분해주면 위와 같이 대충 그려도 알아서 예쁘게 완성된다. -> * 헤더(머리글)를 분리하고 싶은 경우, 위 예제와 같이 2번째 라인에 `---`을 사용하면 된다. -> * 정렬이 필요한 경우, 콜론(`:`) 기호를 구분선(`---`) 왼쪽, 오른쪽, 양쪽에 배치한다. - ---- -* __[2단계] `수식` : 수학, 논문분석 등에 사용__ - -``` -$$f(x)= if x < x_{min} : (x/x_{min})^a$$ -$$otherwise : 0$$ -$$P(w)=U(x/2)(7/5)/Z$$ -$$p_{\theta}(x) = \int p_{\theta}(2z)p_{\theta}(y\mid k)dz$$ -$$x = argmax_k((x_t-x_u+x_v)^T*x_m)/(||x_b-x_k+x_l||)$$ -``` - -$$f(x)= if x < x_{min} : (x/x_{min})^a$$ -$$otherwise : 0$$ -$$P(w)=U(x/2)(7/5)/Z$$ -$$p_{\theta}(x) = \int p_{\theta}(2z)p_{\theta}(y\mid k)dz$$ -$$x = argmax_k((x_t-x_u+x_v)^T*x_m)/(||x_b-x_k+x_l||)$$ - -> * 필자가 사용하는 지킬 테마는 별도 설정없이 위 예제와 같이 자유롭게 사용할 수 있다. -> * 수식 표현에 제한이 있는 경우, `MathJax` Javascript를 include하여 사용한다. -> ``` -> -> ``` -> * 표현형식은 [Latex](https://en.wikibooks.org/wiki/LaTeX/Mathematics) 표기법과 동일하다. -> * 몇가지 예를 들자면, 수식은 `$$`으로 둘러쌓여야 하고 `(),{}`으로 감싸면 우선순위를 고려한 동일 단위로 인식한다. - ---- -* __[3단계] `코드 블록(Code Block)` : 소스코드, 외부 인용자료 블록처리 등에 사용__ - -~~~ -```python -py_vector = one_hot_encoding("파이",word2index) -py_vector.dot(torch_vector) ->>> 0.0 -``` -~~~ - -```python -py_vector = one_hot_encoding("파이",word2index) -py_vector.dot(torch_vector) ->>> 0.0 -``` - -> * `뒤에 python이라고 쓰면 python 언어 스타일에 맞게 구문이 강조된다. -> * 보통 강조하고 싶은 프로그래밍 언어를 그대로 쓰면 된다. -> ex) bash, cpp, dockerfile, markdown, yml, html, http, json, r, ruby, xml, sql ... 등 - ---- -* __[4단계] `UML 다이어그램` : 순서도, 흐름도 등을 표현할 때 유용하다.__ -필요시 아래 링크를 참조하기 바란다. - -> * [Flow charts](http://flowchart.js.org/) -> * [Sequence diagrams](https://bramp.github.io/js-sequence-diagrams/) - - -## 실전연습 ---- -자! 이제 Markdown의 거의 모든 문법을 알아보았다. `백견이 불여일타`이므로 반드시 직접 마크다운 문서를 작성해보자. - -1. 연습문제1 : 위의 문법 실습을 그대로 타이핑하는 문서 만들기 -2. 연습문제2 : 이 포스팅과 동일한 문서 만들기 -최대한 정답 없이 위에서 배운 문법을 이용하여 본 포스팅과 동일하게 만들어보자. -성공한다면 앞으로 그 어떤 마크다운 문서 작성도 두렵지 않을 것이다. - -> __`연습문제2` 정답__ -> 1. [필자의 블로그 Github](https://github.com/theorydb/theorydb.github.io)에 접속 -> 2. 우측의 `Clone or download`(녹색버튼) 클릭 -> 3. `/theorydb.github.io-master/_posts/` 폴더 이동 -> 4. `2019-05-22-envops-blog-how-to-use-md.markdown`를 확인 - -## 이미지를 쉽게 업로드 하는 방법 -이미지를 웹 어디에 저장하는 것이 편리할까? 더불어 포스트 뿐만 아니라 이미지도 마치 데이터베이스 처럼 평생 관리하고 싶다면? 필자가 추천하고 싶은 방식은 크게 3가지이다. - -* __GitHub의 Issue를 이용하는 방법__ - + 일종의 편법인데 GitHub에서 `Issue를 하나 생성`한다. - ![이미지1](https://theorydb.github.io/assets/img/envops/2019-07-22-envops-blog-how-to-use-md-1.jpg) - + Write 탭에 PC에 있는 이미지를 `Drag & Drop`한다. 최종 저장을 안해도 GitHub에 자동으로 업로드가 된다. - ![이미지2](https://theorydb.github.io/assets/img/envops/2019-07-22-envops-blog-how-to-use-md-2.jpg) - + 업로드가 다 되면 위 그림과 같은 경로가 생기므로 `해당 URL을 복사해서 사용`한다. 테스트로 복사한 URL로 접속해보았다. - ![이미지3](https://theorydb.github.io/assets/img/envops/2019-07-22-envops-blog-how-to-use-md-3.jpg) - + 이 방식은 즉석 URL을 생성하는데는 최고의 방법이나, 대신 이미지를 체계적으로 관리하기가 어렵다. 대신 중요하지 않은 그림은 이 방식으로 운영하면 편리하다고 하겠다. - > __쉬어가며__ - > 저장할지 취소할지 결정되지 않은 작성중인 글에 종속된 이미지를 저장하는 것은 분명 자원 낭비다. 보통 이런 웹프로그램을 개발할 때는 브라우저의 Cache Storage 같은 영역에 임시로 올려두고 글의 저장 요청이 발생하는 순간 같이 전송시켜 I/O 접근을 최소화한다. - > 또, 단순히 저장공간 낭비만의 문제가 아니다. 네트워크 사용량이 증가하기 때문이다. 만약 AWS같은 클라우드 인프라 위에 이런 프로그램을 개발한다면 엄청난 네트워크 사용량을 유발하게 되고 속도, 저장 공간 문제를 떠나 네트워크 사용량에 따른 과금 폭탄을 맞게 될 것이다. - > 그런데 GitHub이 그걸 몰라서 이렇게 자원을 낭비하는 프로그램을 개발했을까? 원래도 GitHub은 소스 코드부터 이미지까지 무한에 가깝게 업로드 가능한 저장소이다. 더불어 짧은 생각에 GitHub Pages를 운영하는 사람들이 편리하게 이미지 관리를 할 수 있도록 서비스 개념으로 열어두지 않았을까 싶기도 한다. 한 수 더 바라보면 딥러닝 등에 활용하지 않을까 싶기도 하고.. - > 아무튼 이렇게 계속 퍼주기만 하는 Git 당신은 도대체... 리스펙트 그 이상이다. - - -* __GitHub를 이용하는 방법__ - + 필자가 자주 애용하는 방식이다. - + 예를 들면 `theorydb.github.io\assets\img\`의 위치에 포스트 계층과 동일하게 폴더를 만들어 `포스트 제목-일련번호`의 형태로 파일을 저장한 후, `https://theorydb.github.io/assets/img/think/2019-06-25-think-future-ai-1.png`와 같은 방식으로 링크를 걸어 활용한다. - + 물론, 이미지 파일 관리에 있어 노가다가 첨가되고 GitHub에 이미지를 먼저 올리지 않으면 Markdown을 작성하며 실시간으로 확인할 수 없다는 불편한 점이 있다. - + 하지만 필자가 처음 블로그를 개발했을 때 가장 중요했던 목적 하나는 블로그 서비스가 종료되더라도 포스트와 이미지를 개인 DB화 하여 영구 보존하는 것이었기에 큰 불만이 없는 방식이다. 더불어 숙달되어 큰 불편을 느끼지 않는다. - -* __기타__ - + 구글드라이브, 플리커, 드랍박스에 이미지를 체계적으로 관리하고 URL을 생성하여 연결하는 것도 한가지 방법이다. - + 큰 불편함을 느끼지 않아 더 찾아보지는 않았는데 이 부분을 쉽게 처리해 줄 Plug-in이 존재할 것으로 믿는다.ㅎㅎ - -## 이미지 만들기 막막할 때 -* __간단한 이미지는 `직접` 만들자__ - 간단한 도식이나 관계도를 정도는 쉽게 만들수 있도록 서비스를 제공하는 사이트를 추천해보겠다. - + 1. [`오토드로우`](https://www.autodraw.com/) - 정말 자주 애용하는 등장한지 얼마 안된 따끈따끈한 사이트로 강추한다. 마우스로 대충 그리면 그와 유사한 이미지를 AI가 추천하여 선택할 수 있게 해준다. - - + 2. 간단한 그림을 그릴 수 있게 도와주는 사이트 - -* __`무료 이미지` 제공 Site__ - 도저히 개인 실력으로 만들 수 없는 고급 퀄리티 이미지는 아래 무료로 제공하는 사이트를 이용하자. - + - + - + - + - + - -## 소소한 Tip 그리고 고장났을 때 ---- -이 부분은 본 포스트에 댓글로 질문이 달릴 경우 하나씩 추가해 나갈 예정이다. 더불어 언제나 통용되는 한가지 해결책을 남긴다. - -* 기능용도로 사용하는 특수문자(\*,\+,\- 등)를 있는 그대로 표현하고 싶은경우 `\` 기호를 앞에 붙이면 된다. -* 마크다운에서 지원하지 않거나 표현하기 어려운 경우 `HTML 태그로 직접 표현`하는 것도 한가지 방법이다. - ``` - 예를 들어 테마의 특성 때문에 줄바꿈이 잘 되지 않으면, - 줄바꿈을 원하는 문장뒤에
태그를 원하는 라인 수만큼 넣으면 된다. - ``` - - -이것으로 Markdown의 사용법 정리를 마친다. 꽤 오랜 시간을 내어 성의를 들여 작성했기에 자주 레퍼런스로 활용해 주시면 감사하겠다. 부족한 점은 댓글로 남겨주시면 보완해나갈 예정이다. diff --git a/_posts/2019-06-05-review-book-intro-ml-py.markdown b/_posts/2019-06-05-review-book-intro-ml-py.markdown deleted file mode 100644 index cb7a71067..000000000 --- a/_posts/2019-06-05-review-book-intro-ml-py.markdown +++ /dev/null @@ -1,130 +0,0 @@ ---- -layout: post -title: "[리뷰] 파이썬 라이브러리를 활용한 머신러닝" -subtitle: "파이썬 라이브러리를 활용한 머신러닝" -categories: review -tags: review ml python -comments: true -header-img: img/review/2019-06-05-review-book-intro-ml-py-Cover.jpg ---- - -## 개요 -> 본 리뷰는 `한빛미디어` 출판사 `"파이썬 라이브러리를 활용한 머신러닝(번역개정판)"`을 읽고 얻은 지식을 정리한 글입니다. - -- 목차 - - [머신러닝을 위한 파이썬의 도구들(Scikit-learn 등)](#머신러닝을-위한-파이썬의-도구들scikit-learn-등) - - [이 책이 중요한 이유 : 누가 더 적임자인가? (통계학 vs 컴퓨터공학)](#이-책이-중요한-이유--통계학자-vs-컴퓨터공학자-누가-더-적임자일까) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [책의 구성 및 요약](#책의-구성-및-요약) - - [요약하며...](#요약하며) - - - -## 머신러닝을 위한 파이썬의 도구들(Scikit-learn 등) ---- -바야흐로 딥러닝의 시대다. `알파고`를 언급하는 건 이젠 너무나 식상한 일이 되어버렸다. 대신 [`아카이브`](https://arxiv.org/)에는 일주일에도 수십편의 논문이 쏟아져 나오고 있고, Google I/O 2018에서는 일종의 튜링테스트 기법으로 사람을 속이는 인공지능 상담원이 등장하였다. 구글에서는 멀티미디어 검색 기능은 물론 심지어 세상에 존재하지 않는 강아지의 사진을 만들어 내기도 한다. 그러기에 필자같은 프로그래머를 비롯하여 통계, 수학 분야는 물론이고 경영, 의학 등 다양한 도메인 분야의 전문가들로 부터 깊은 관심을 받고 있으며,이들은 자연스레 최신기술을 익히고자 다양한 방법으로 데이터 사이언스에 접근하고 있다. - -딥러닝, 머신러닝 등 Data Science 영역에서 가장 많이 사용하는 프로그래밍 언어 2가지를 꼽으라면 단연 Python과 R일 것이다. 프로그래머라면 보다 범용적으로 활용도가 높은 Python을 선호하는 편이고, 통계분야 전문가를 비롯한 비 프로그래머 계열은 R을 선호하는 편이다. 물론 필자처럼 양쪽에 깊은 관심을 가지고 활용하는 사람도 있다. - - -``` -"그렇다면 왜 Python일까? 그리고 머신러닝을 위해선 어떤 도구들이 필요한 것일까?" -``` - -이를 위해 먼저 Python이 제공하는 머신러닝 도구들을 살펴 볼 필요가 있다. - -* __Scikit-learn__ - - 머신러닝에서 가장 많이 활용되는 분류, 회귀, 랭킹, 예측 등 다양한 알고리즘을 내장하고 있는 Python 라이브러리로 머신러닝 알고리즘을 별도로 구현할 필요가 없게 해준다. - - 오픈소스로 사용 및 배포에 거의 제약이 없다. 더불어 소스코드를 통해 동작방식을 익히기에 적합하기에 자칫 Keras, Tensorflow 등으로 구현에만 너무 치중되어 모델링과 알고리즘에 갈증을 느낀다면 돌아와 머신러닝의 내면을 바라보기에 매우 유용한 라이브러리이다. - -* __Pandas__ - - 데이터 처리와 분석을 위한 라이브러리로 R의 data.frame을 본떠서 설계 - - SQL과 같은 질의 기능을 수행할 수 있으며, 마치 RDBMS의 테이블과 같이 각 열의 데이터 타입이 달라도 무관하다. - - -* __Scipy__ - - 고성능 과학 계산용 라이브러리로 선형대수, 함수최적화, 신호처리, 특수 함수 및 통계 분포 기능이 구현되어있다. - - scipy.parse(희소행렬)을 활용하여 연산속도를 높이는 데 큰 효과를 볼 수 있다. - -* __Numpy__ - - 기본 수학관련 알고리즘은 물론 선형대수, 푸리에변환, 난수생성기 등을 지원한다. - - 다차원 배열 ndarray을 기본 데이터 타입으로 간주하며 원소로 동일한 데이터 타입만을 가질 수 있다. - -* __기타__ - - 시각화를 위한 Matplotlib, 학습과정을 용이하게 해주는 대화식 실행환경인 주피터 노트북 Ipython, 결정 트리 시각화에 필요한 graphviz 등 다양한 라이브러리로 머신러닝을 지원하고 있다. - -이 책은 위와 같은 도구를 소개로 시작한다. 출발하기에 앞서 기본적인 체계를 잡아주기에 가독성과 이해를 도와준다. 더불어 `저자`가 위의 도구 중 가장먼저 언급한 `Scikit-learn의 핵심 개발자` 안드레아스 뮐러, 세라 가이도이기에 그 어떤 책 보다도 본서가 Scikit-learn의 철학 및 내부 구조를 학습하는데 적격이라고 생각하며, 보다 수준높은 데이터 사이언티스트가 되기 위해선 머신러닝 알고리즘의 내부를 내것으로 만들어 다양한 데이터로부터 모델링의 능력을 키우는 것이 가장 중요하다고 생각하기에 이 책을 강력히 추천한다. - - -## 이 책이 중요한 이유 : "통계학자 vs 컴퓨터공학자" 누가 더 적임자일까? ---- -머신러닝 분야에 종사하고 싶다면 다양한 길이 있을 것이다. 하지만 진정한 데이터 사이언티스트가 되고 싶다면 개인적으로는 위에서 간략히 언급한 바와 같이 `모델링`이 핵심이라고 생각한다. 데이터가 어떤것이 주어지더라도 분석을 통해 인사이트를 뽑아내는 인재라면 EDA를 비롯 전처리 경험이 풍부해야 하며, 이를 기반으로 유의미한 모델링을 설계하는데 필요한 능력이 충분할 것이기 때문이다. - -IT의 태생이 그러했듯 딥러닝이 등장하면서 과학으로 불리는 Science의 영역이 Engineering의 영역으로 상당히 많이 옮겨진 듯 하다. 대신 다루는 데이터 영역이 이미지, 동영상, 음성, 텍스트라는 소재에 국한되는 경향이 있으며, 데이터 대신 GAN 같은 의미있는 기법이 등장하긴 하였지만 그래도 딥러닝이 Tabular 성격의 데이터에 유독 취약한 것은 현재까지는 부인할 수 없다고 생각한다. - -이에 프로그래머라면 더더욱 머신러닝 더 나아가 통계, 수학, 수리통계학, 정량분석의 분야를 소홀히 해선 안된다는 것을 깨닫곤 한다. -다음의 질문을 생각해보자. - -``` -"로또번호를 머신러닝으로 예측할 수 있는가? -``` - -과거의 당첨번호로 학습을 시켜 당첨번호를 예측한다? 원리는 몰라도 직관적으로 말도 안되는 일이라고 생각하는 사람이 많을 것이다. 한편으로는 딥러닝이 얼마나 위대한데.. 혹시 딥러닝이라면 가능하지 않을까? 이 질문이 유의미한지 알고 싶다면 그저 Keras, Tensorflow를 잘 다룰 줄 안다고 해결될 문제는 아닐 것이다. 에포크 횟수, 파리미터 튜닝을 열심히 한다고 답이 구해질까? 데이터는 과거 당첨번호를 이용해야 하나? 아니면 어떤 사건이나 영향을 주는 데이터를 수집하면 될까? 말도 안되는 질문들이지만 초보자라면 한번 깊게 생각할 필요가 있다. 우리가 허상에 빠지기 쉬울 때 바른 방향을 제시해주는 것이 통계학과 같은 사이언스 지식이라 생각을 하며 아주 쉬운 확률의 독립사건 개념부터 좀 더 나아가 `자기상관성`에 이르기까지 기본 개념이 탄탄하면 애초에 말도 안되는 주제로 시간과 노동력을 낭비하지는 않을것이다. - -프로그래머라면 Python이라는 범용프로그램 언어에 취해 R과 같은 데이터 분석 전용언어를 비하하거나 Python의 코딩 능력이 데이터 분석 능력을 좌우한다는 일종의 선입견(?)도 버릴 필요가 있다고 생각한다. 필자 또한 비슷한 과정을 거쳤는데 R은 Python과는 달리 행렬 표현이 2차원에 국한되어 종속적이지 않으며, 대부분의 함수에서 `포뮬러`를 지원하기에 불필요한 코딩을 방지하게 하여 보다 분석에 집중하게 해주는 엄청난 장점이 있다. 물론 Python처럼 범용언어가 아니기에 타 기능과의 매끄러운 연결은 어렵다. - -각설하고 Python으로 데이터 분석을 원하는 사람이 모델링의 능력을 키우기 위해선 먼저 Scikit-learn의 내부 구조를 들여다 보는 것이 좋은 수순이라고 생각하며, 이책은 그런 관점에서 매우 훌륭한 스승이 될 것이라고 본다. 더불어 mglearn 라이브러리로 핵심에 벗어나는 코딩량을 줄여 알고리즘의 핵심을 바라보게 해주는 장점을 가지고 있으며, 한가지 더, 시각화된 이미지가 아래 사진과 같이 컬러로 되어 가독성이 좋고 집중도 잘된다. 그리고 역자가 참 맛깔나게 번역을 잘했다. - -![그림1](https://theorydb.github.io/assets/img/review/2019-06-05-review-book-intro-ml-py-1.jpg) -![그림2](https://theorydb.github.io/assets/img/review/2019-06-05-review-book-intro-ml-py-2.jpg) - -구현 소스는 [Github 리파지토리](https://github.com/rickiepark/introduction_to_ml_with_python)에 공개되어 있다. - - - -## 누가 읽어야 하는가? ---- -- __개발자__ - 개발자의 최대 장점인 코딩 구현능력과 구조화된 사고방식을 활용하여 사이언스 원리 중심의 서적보다 머신러닝의 핵심에 더 쉽게 다가갈 수 있다. - -- __데이터전문가, 연구자, 과학자__ - 통계, 수학, 모델링 지식에 해박하나 좀 더 성능좋은 도구를 자유자재로 다뤄 연구 수행에 있어 효율성을 높이고 싶은 분들도 이 책이 많은 도움이 될 것이다. - -- __그 외 '데이터사이언티스트 = 프로그래머'라는 생각을 가지신 분__ - 이유는 위 절에서 자세히 설명하여 생략한다. - - - -## 책의 구성 및 요약 ---- -이 책은 크게 세 부분으로 구성된다. - -- __1. 머신러닝의 핵심 알고리즘(지도, 비지도 학습)(1 ~ 3장)__ - - 사실상 책의 핵심내용으로 친절한 개념 설명과 컬러 시각화를 통해 직관적인 이해를 돕는다. - - 분류, 회귀에 주요 고려사항인 일반화, 결정함수, 예측확률, 불확실성, 차원축소 등 통계 핵심기법이 담겨있다. - - 거의 모든 핵심 알고리즘을 다룬다.(KNN, 선형모델, 나이브베이즈, 결정트리, SVM, 신경망, K-means, 그외 군집알고리즘 등 - -- __2. 특성공학, 모델평가, 파이프라인 등 모델링 핵심지식(4 ~ 6장)__ - - 데이터의 성격을 분석하여 다양하고 유용한 전처리 기법을 배울 수 있다. - - 교차검증을 통한 성능 향상은 물론 다양한 평가지표에 대하여 학습한다. - - 전처리에 이어 파이프라인을 활용하는 방법을 익힐 수 있다. - -- __3. 텍스트마이닝 및 기타(7 ~ 8장)__ - - BOW변환, 불용어 등 전처리, tf-idf 생성, 고급 토큰화, stemming 등 텍스트마이닝 필수 지식을 배운다. - - 그 외 실무에 유용한 지식 및 앞으로 나아가야 할 방향을 제시한다. - -## 요약하며... ---- -이 책은 프로그래머로서 자칫 데이터 분석을 코딩만으로 배울뻔한 우(愚)에서 벗어나게 해주었기에 높은 점수를 주고 싶으며, 이 책을 읽으며 남이 만든것을 생각없이 따라가 만드는 데 급급했던 습관에서 모델링의 본질에 대해 깊이 생각하며 창조적인 시각의 중요성을 생각해보는 계기가 되었다. 보통 이럴땐 깊은 생각에 잠겨 책을 읽는 속도가 느려지게 마련인데 신기하게도 가독성이 너무 좋아 생각보다 읽는 시간이 오래 걸리지는 않았다. 데이터 사이언티스트의 영역에 발을 담그고 싶다는 꿈을 가지신 분이라면 누구나 꼭 한번 정독하시길 권한다. 끝으로 이 책을 읽을 기회를 주신 한빛미디어에 깊은 감사를 드린다. - - -> \<한빛미디어 출판사\> -> -> 개발자라면 믿고보는 "한빛미디어 출판사"라는 수식어가 따라다닐 만큼 IT분야는 물론 다른 분야에서도 양질의 도서를 끊임없이 -> 출판하는 회사입니다. 개발자로서 "나는 프로그래머다"라는 유익한 팟캐스트를 즐겨 듣곤 했는데 한빛미디어에서 후원을 -> 하였기에 수년간 방송이 이어져올 수 있었다 생각하며, 그외에도 리뷰어 활동, 학습지원 등 다양한 분야에서 사회에 공헌하는 -> 개발자와 공생하는 업체입니다. IT 분야에 관심이 많은 분이라면 한빛미디어의 책으로 시작하시면 후회없는 출발을 하실 수 -> 있습니다.(저 역시 최근에 출간된 '데이터를 부탁해'까지 100권은 넘게 산 것 같네요...^^;) - - -[한빛미디어 바로가기](http://www.hanbit.co.kr/) diff --git a/_posts/2019-06-20-review-book-self-study-java.markdown b/_posts/2019-06-20-review-book-self-study-java.markdown deleted file mode 100644 index be4f94cb9..000000000 --- a/_posts/2019-06-20-review-book-self-study-java.markdown +++ /dev/null @@ -1,113 +0,0 @@ ---- -layout: post -title: "[리뷰] 혼자 공부하는 자바" -subtitle: "혼자 공부하는 자바" -categories: review -tags: review java -comments: true -header-img: img/review/2019-06-20-review-book-self-study-java-1-Cover.jpg ---- - -## 개요 -> 본 리뷰는 `한빛미디어` 출판사 `"혼자 공부하는 자바"`를 읽고 얻은 지식을 정리한 글입니다. - -- 목차 - - [이 책을 읽으며 Java와 함께한 20년을 돌이켜보았다.](#이-책을-읽으며-java와-함께한-20년을-돌이켜보았다) - - [신용권 저자께 직접 들었던 모바일 웹앱 강의](#신용권-저자께-직접-들었던-모바일-웹앱-강의) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [책의 구성 및 요약](#책의-구성-및-요약) - - [요약하며...](#요약하며) - - - -## 이 책을 읽으며 Java와 함께한 20년을 돌이켜보았다. ---- -처음 Java와 만난건 2000년 어느날 프로그래밍 수업 시간이었다. 리뷰는 안하고 왜 갑자기 추억을 회상하는지 의아해 하실 분들이 계실지 모르겠다. 책을 읽기 전에 20년 간 Java를 익혀왔던 프로그래머의 회상과 푸념을 듣는다면 책을 읽으면서 본인이 어떤 학습 위치에 있는지 파악하기 쉬울 것이기에 향후 학습방향에 도움이 된다는 의미로 재미있게 읽어주셨으면 좋겠다. - -* __게시판과 메모장__ -요즘 학부 프로그래밍 수업에서도 메모장 또는 웹 게시판을 만들라는 과제가 부여되는지 모르겠다. 처음으로 GUI 방식으로 메모장을 만들면서 느끼는 희열은 대단했다. 내가 만든 프로그램을 내가 유용하게 쓰고 더불어 누군가가 편리하게 써주는 것에 보람을 느꼈다. 다만 데스크탑 위에서 돌아가는 `GUI 개발`에 있어 Java는 실망감을 안겨주기도 했다. 주로 Applet 또는 Swing을 활용하였는데 당시 이클립스가 대세가 아니었던 시절이었기에 Kawa Java라는 IDE를 쓰곤 했다. 지금도 마찬가지로 데스크탑 프로그램으로는 별로 추천하고 싶지 않은 언어이다. 게다가 `"exe"` 파일을 만드는 데 있어서도 너무 낯설었는데 Java가 깔려있어야 돌아갈 수 있다는 사실에 조금 불만이 있었다. JVM위에서 독립성을 보장하는 언어이니 당연한 얘기일진데 초보때는 Visual C++과 달리 UI 컴포넌트 배치도 불편하고, 배포 및 설치도 생소한 이 프로그램에 대한 안타까움을 느꼈던 것도 사실이다. 물론 이 부분에 느끼는 단점은 지금도 마찬가지이다.ㅎㅎ 대신 WEB, Network 기반의 개발에 있어서는 차원이 다른 고급 언어이다. C언어로 게시판을 개발했던 필자는 당시 초보자로서 웹에서 인코더/디코더를 구현하는 것이 얼마나 어려운 일이었는지 모른다. 그런데 Java는 원했던 모든것이 라이브러리화 되어있어 편하게 웹 프로그램을 개발할 수 있었고, 채팅방 Back-End 로직을 만들면서 네트워크 통신을 안전하게 보장하고 Thread등을 활용하여 성능을 높이고 동기화 할 수 있다는 점에 큰 매력을 느꼈다. - -* __SCJP1.4 자격증 취득__ -지금은 이 자격증이 사라지고 Oracle사의 다른 자격증으로 대체되었다고 들었다. Dump라는 일종의 족보(?)를 구하고 달달 외우기만 하면 붙을 수 있었던 시험. 비록 문제와 답이 영어로 되어있다는 점이 어색하긴 해도 합격이 크게 어려운 시험은 아니었다. 비록 취득이 쉬운 자격증이었지만 국제공인 프로그래밍 자격증 중에는 꽤나 인기있는 자격증이었고, 나름 `Class, 상속, 인터페이스, 추상화, 다형성, 예외처리 등 객체지향의 개념을 다잡고 정리하는데 좋은 계기`가 되었다. - -* __대학 전산원 근로장학생__ -비록 신분은 근로장학생으로 미천(?)했으나 2000년 초반 대부분의 대학들은 학사서비스를 WEB방식으로 운영하기 시작했으므로 나름 학부에서 배운 기술을 실전에 적용했던, 처음으로 실무로 뛰어들게 된 계기이다. 학생치고는 개발을 잘한다고 칭찬을 들었기에 더 열심히 개발하게 된 계기가 되었고 내가 쓰는 학사 프로그램을 내가 고친다는게 너무 신기했어서 마치 게임하 듯 개발에 푹 빠진 시간이었다. 대학 전산원 알바 시절에는 대부분은 웹 프로그램이 Servlet으로 구현되어 있었다. 물론 지금도 JSP가 Servlet 방식보다 개발하기 편리할 뿐 사실 내부적으로 WAS가 내부적으로 JSP를 Servlet으로 변경한다는 점은 변함이 없으므로 지금보다 low level의 개발을 하고 있다고 표현하는 것이 옳다고 하겠다. 그런데 `Ajax도 등장하지 않았던 시절 HTML, Javascript, Java, SQL 언어가 뒤죽박죽 섞여 있는 코드`를 보며 정녕 이것이 최선인가 자주 탄식할 수 밖에 없었다. - -* __전산장교 시절과 Factory 개념__ - 진짜 개발자로서의 첫 출발은 바로 이때가 아니었을까 싶다. 생각보다 꽤 큰 규모의 전산실에서 최초로 MVC 기법의 개발을 시작했다. 더불어 DB의 활용도를 높이고자 Factory 클래스를 만들어 싱글톤 디자인 패턴도 활용하기도 했고 나름 Java가 가진 맛을 제법 느껴볼 수 있는 경력을 쌓는 계기가 되었다. 다만 `우리나라의 현실은 왜 이렇게도 DB, SQL 중심인가? 그리고 이런 Java의 패턴 몇 가지가 최선인가? 라는 질문`이 계속 들기 시작했다. - -* __지금까지 이어온 개발자의 삶__ -군을 전역할 즈음 우리나라는 최악의 개발 환경을 가지고 있었고 SI, SM 정도의 직군만 존재하여 그것이 영원하리라 생각했다. 다 년간 개발을 하면서 창의적인 개발보다는 찍어내기식 개발에 스트레스는 늘어가고 보람은 줄어드는 패닉에 빠졌고 고민 끝에 가장 개발환경이 편하다는 안정적인 직장에 들어오게 되었다. 그리고 마침내 Framework를 다루기 시작했다. `스트럿츠, 스프링`까지 프레임워크를 다루며 그 안에 녹아있는 철학을 음미했다. 예를 들면 스프링에서 활용되는 개념인 `DI, AOP`등의 개념을 익히며 이 정도는 알아야 프로그래머라고 할 수 있는 것이겠구나, 더불어 소프트웨어 공학을 열심히 익혀야 이런 훌륭한 철학을 기반으로 한 프레임워크를 만들 수 있겠구나라고 깨닫는 계기가 되었다. - -* __모바일의 등장__ -지금까지도 대세인 모바일 개발 환경이 등장하기 시작한다. 안드로이드 OS가 리눅스와 비슷하여 친숙함도 들겠다 직접 만든 App이 내 모바일 기기 위에서 돌아가겠다 마치 처음 Java를 접했던 호기심이 다시금 발동해서 한동안 App개발에 푹 빠져 들던 시절이었다. 역시 자바는 자바였다. `자바를 아니까 .java도 개발하기 결코 어렵지 않았다.` - -* __그리고 광풍이 부는 격변의 개발환경__ -SNS까지 확산되며 MEAN스택이 등장하기 시작했다. 예전엔 LAMP만 알면 되었는데 프런트엔드 중심의 개발환경이 등장하고 앵귤러, 익스프레스, 리액트, D3, Vue.js 등 프런트 엔드에 엄청난 기술들이 등장했고 이 블로그를 운영하는 Jekyll같은 정적 컴파일 언어, Grant 등이 등장했다. 백엔드 단에는 Go, 얼랭 같은 언어가 등장했고, 딥러닝과 빅데이터가 화두가 됨은 물론 이더리움과 같은 블록체인 개발 언어, Iot 사물인터넷, 그리고 함수형 언어의 대세.. 광풍이라고 표현할 수 밖에 없는 격변의 개발환경이 등장하기 시작하고 심지어 수학, 통계학 등 기초 사이언스에 대한 내공이 얼마나 중요한지 보여주는 시점에 도달하게 되었다. - -주제가 인생사로 벗어나는 듯 하여 이쯤에서 각설하려 한다. 그렇다면 이 책이 다루는 범위는 위 개발자 20년 인생에 어느 부분을 다루는 것일까? 미안하지만 잘 쳐줘야 "대학 근로장학생" 시절까지 정도이다. 이 책이 좋지 않다는 말인가? 그렇지 않다. `Java의 객체 개념을 정확히 알지 못한다면 그리고 하나의 언어를 정확히 알지 못한다면 다른 언어, 기술, 철학, 프레임워크와 비교할 수 없고 창의적인 개발을 할 수 없게된다.` 가야할 길은 멀지만 이 책으로 개념의 초석을 튼튼히 쌓는다면 갈길이 먼 길을 축지법을 써서 이동하는 느낌으로 발전하는 자신을 보게 될 것이다. - -이 책은 필자가 처음 Java 개념을 접했던 기본서와 비교하자면 개념을 전달하는 깊이가 수십배는 되는 전달력, 가독성이 좋은 책이다. `프로그래밍 스킬이 쌓일수록 알고리즘과 기초 사이언스, 철학이 얼마나 중요한 것인지 깨닫게 된다.` 그저 지식의 양이 중요한 것이 아니라 그 안에 녹아있는 철학과 수학이라는 사이언스가 녹아있는 공학의 핵심 개념을 잡아내는 것이 중요하다. 지식의 양은 세월이 흐를수록 늘어나는 것이지만, 개념을 잡지 못한다면 그저 Copy&Paste 코더를 벗어나지 못하게 된다. 그런 점에서 이책을 강력하게 추천하고 싶다. - - -## 신용권 저자께 직접 들었던 모바일 웹앱 강의 ---- -이 책의 장점을 하나 더 소개하자면 바로 저자의 내공과 전달력이다. 2013년 경 삼성멀티캠퍼스에서 `모바일 웹 앱 & 하이브리드`라는 IT전문 교육을 1주일 정도 이수했다. 그때 강사님이 이 책의 저자이신 신용권님이었는데 그때 Core개념을 제대로 전수받은 것이 이후 모바일 개발을 하는데 있어 큰 도움이 되었고 더불어 애매하게 알고 있었던 Java의 개념과 기술을 다시 정리하고 토대를 다지는데 결정적인 계기가 되었다. - -이 책은 [혼자 공부하는 자바 동영상 강의](http://hongong.hanbit.co.kr/%EC%9E%90%EB%B0%94/)도 제공한다. 사투리가 구수하게 섞인 음성에 수강생들이 멍하게 있으면 유머스럽게 질책하던 기억이 아직도 생생하다. 더불어 책 마지막 부분엔 `혼공용어노트`라는 배운 핵심개념을 정리한 용어집도 있다. 프로그래밍도 암기력이 탄탄하면 그 위에 더 큰 작품을 더 빠르게 올릴 수 있다. - -이런 저런 측면에서 이 책은 초보자가 프로그래머로서의 길을 나아가기에 참 많은 배려를 한 디테일이 보이는 양서라고 생각한다. 소스 코드의 동작 순서를 화살표로 배치하거나 자바의 Stream을 가독성있게 그림으로 표현한 부분을 보신다면 어떤 의미인지 이해하실 수 있을 것이다. -![혼공용어노트](https://theorydb.github.io/assets/img/review/2019-06-20-review-book-self-study-java-2.jpg) - -![스트림개념도](https://theorydb.github.io/assets/img/review/2019-06-20-review-book-self-study-java-3.jpg) - -![소스코드동작순서](https://theorydb.github.io/assets/img/review/2019-06-20-review-book-self-study-java-4.jpg) - - -## 누가 읽어야 하는가? ---- - -- __초보 프로그래머, 컴퓨터 전공 학부 초년생__ - -- __Java에 관심있는 타 언어 개발자__ - -- __기타 비전공자__ - 데이터 분석, 경제학 등 타 분야에서도 프로그래밍을 알면 큰 시너지 성과를 얻을 수 있는 타 학문 전공자에게 컴퓨터 공학 개념의 기초를 다지기에 정말 도움이 되는 책이다. - - -## 책의 구성 및 요약 ---- -이 책은 크게 세 부분으로 구성된다. - -- __1. Java의 기본문법(1 ~ 5장)__ - - 자바 및 이클립스를 그 어떤 블로그 or 책 보다 쉽게 설치할 수 있다. (`시작이 반이다.`) - - 변수, 타입, 연산자, 조건문, 반복문 등 기본문법을 익힌다. - - 어느 프로그래밍 언어에나 존재하는 공통점을 배운다. - -- __2. Java와 객체지향언어의 특징(6 ~ 10장)__ - - 객체지향 언어의 특성과 개념을 익힌다. - - Java에서 설계된 객체지향 기법을 다룬다. - - 객체의 핵심 개념인 Class, Class의 재사용을 위한 상속, 메소드의 추상화와 구현을 위한 Interface, 중첩 Class, 예외처리까지 익힐 수 있다. - -- __3. Java의 멋진 도구들(11 ~ 14장)__ - - Java에 얼마나 유용한 라이브러리가 많이 있는지 체험하는 시간이다. - - 기본 API클래스인 java.lang.*, java.util.* 사용법을 익힌다. - - 스레드 및 동기화, 컬렉션 프레임워크, 입출력 스트림 등 자료구조나 병렬처리에 필요한 기법을 익힌다. - -## 요약하며... ---- -20년 전과는 달리 요즘엔 참 좋은 서적과 레퍼런스가 많아 막 프로그래머로서의 길을 출발하는 요즘 친구들이 너무 부럽다. 필자가 처음 Java를 공부한 기본서는 어색한 번역의 내용도 전달력도 딱딱한 그저 그런 책이었다. 친절함은 커녕 이제 뭐 좀 알겠다 싶으면 이상한 코드들이 무더기로 나와 보는 순간 질려버리게 만들기도 했다. 코드는 색상도 들여쓰기도 가독성도 형편없었다. 심지어는 오류도 있었다. - -이 책의 저자는 Java의 핵심 개념을 마스터한 전문가이며 나아가 WEB, Mobile 기술에 정통하다. 책도 친절한데 무료 동영상 강의도 해 준다. 부럽지 않을 수가 없다. 이 책은 위에서 언급한 바와 같이 입문자에게 더할나위 없이 좋은책으로 처음 시작하시는 분께 강력 추천한다. 아쉬운 점이 하나 있다면 Java에 해박하신 전문가께서 너무 얕은 기초 지식만 내공을 전수해주신다는 점이다.(하지만 그 개념은 매우 중요하다.) 언젠가 스트림 이후의 Java 세계에 대하여 시리즈로 집필을 계속 이어나가시길 바라며 본 포스팅을 마친다. - - -> \<한빛미디어 출판사\> -> -> 개발자라면 믿고보는 "한빛미디어 출판사"라는 수식어가 따라다닐 만큼 IT분야는 물론 다른 분야에서도 양질의 도서를 끊임없이 -> 출판하는 회사입니다. 개발자로서 "나는 프로그래머다"라는 유익한 팟캐스트를 즐겨 듣곤 했는데 한빛미디어에서 후원을 -> 하였기에 수년간 방송이 이어져올 수 있었다 생각하며, 그외에도 리뷰어 활동, 학습지원 등 다양한 분야에서 사회에 공헌하는 -> 개발자와 공생하는 업체입니다. IT 분야에 관심이 많은 분이라면 한빛미디어의 책으로 시작하시면 후회없는 출발을 하실 수 -> 있습니다. - - -[한빛미디어 바로가기](http://www.hanbit.co.kr/) diff --git a/_posts/2019-06-23-dev-competition-list.markdown b/_posts/2019-06-23-dev-competition-list.markdown deleted file mode 100644 index 4ac1cecf7..000000000 --- a/_posts/2019-06-23-dev-competition-list.markdown +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: post -title: "[Competition] 데이터 과학 경진대회 사이트 모음" -subtitle: "데이터 과학 경진대회 사이트 모음" -categories: dev -tags: competition list -comments: true ---- -## 개요 -> 국내/외 `데이터 과학 경진대회` 목록을 정리해 보았습니다. - -- 목차 - - [데이터 과학 경진대회란?](#데이터-과학-경진대회란) - - [데이터 과학 경진대회 사이트 모음](#데이터-과학-경진대회-사이트-모음) - -## 데이터 과학 경진대회란? ---- -데이터 과학 분야로의 진출을 희망하는 사람이라면 데이터 과학에 대한 학습 및 연구를 필요로 할 것이다. 본인의 내공을 키우기 위한 첫 단계는 데이터 확보이며, 두번째로 모델 구현 및 기계학습에 필요한 개발 환경 구축 그리고 마지막으로 이를 뒷받침하는 컴퓨팅 파워가 필요하다. 나아가 데이터 사이언스로서의 스킬을 공신력있게 입증할 필요도 있을 것이다. 데이터 과학 경진대회에서 제공하는 플랫폼을 활용하면 이 모든 것들을 한큐에 해결할 수 있다. - -가장 유명한 데이터 과학 경진대회 플랫폼은 `캐글(Kaggle)`이다. 캐글은 세계 최대의 데이터 과학자 커뮤니티로 2010년 예측모델 및 분석을 위한 플랫폼 서비스로 출발하여 2017년 구글에 인수되었으며, 2019년 기준 13,000여개의 데이터를 공개하고 있는 명실상부 최대 데이터 과학 서비스 플랫폼이다. 의료, 경제, 자연과학, 공학 등 거의 모든 분야의 데이터를 다루며 무려 190개 이상의 국가로부터 100만명 이상의 회원이 가입하여 활동중이다. - -주어진 과제에 예측모델을 만들고 학습 결과를 업로드 하면 정확도가 나오고 이를 기반으로 포인트를 획득하여 레벨을 업그레이드 할 수 있으며 커리어와 직결된다는 점에서 왠만한 게임보다 레벨업이 더 재미있다. 고수가 되어 수상을 하게되면 25,000 ~ 100,000달러에 이르는 상금을 얻을수도 있고, 데이터 과학자로 취업할 수 있는 기회가 주어지기도 한다. - -대부분의 입문자들이 처음으로 도전해보는 과제는 `Titanic: Machine Learning from Disaster`으로, 타이타닉 승선자의 피처 데이터를 바탕으로 생존율을 예측하는 미션이다. 아래 그림은 필자가 이 과제에 도전한 내역으로 Public Score 항목을 보면 0.78947점을 얻은 것을 확인할 수 있다. 모델을 개선하거나 전처리 및 파라미터 튜닝으로 성능을 높일 수 있고 업로드를 반복하여 점수를 올릴 수 있다. - - -![캐글(예시: 타이타닉 생존율 예측)](https://theorydb.github.io/assets/img/dev/competition/2019-06-23-dev-competition-list-1.jpg) - - -## 데이터 과학 경진대회 사이트 모음 ---- -그동안 알려진 국내외 경진대회 사이트들을 정리해보았다. 경진대회 일정은 수시로 변하기 때문에 본인의 업무 도메인 및 보유 스킬셋과 가장 적합한 커뮤니티를 골라 수시로 방문한다면 많은 정보를 얻을 수 있다. - -- __1. 국내__ - - [AI RUSH 2019 (Naver)](https://ai-rush.com/) - - [2019 AI Starthon (과학기술정보통신부)](http://www.aistarthon2019.co.kr/) - - [2019 빅콘테스트](http://www.bigcontest.or.kr/) - - [문화.관광 빅데이터 분석대회](http://www.tourbigdata.kr/) - - [데이터 사이언스 경진대회](http://dacon.io/) - - [인공지능 R&D 그랜드 챌린지 대회(과학기술정보통신부)](https://www.ai-challenge.kr/) - - [Samsung AI Challenge 2018(삼성)](https://research.samsung.com/aichallenge/data) - - [네이버 Data Science Competition 2019](http://stat.snu.ac.kr/sri/kor/document/board/notice.php?id=7) - - [카카오 아레나](https://arena.kakao.com/) - - [빅 콘테스트(한국정보통신진흥협회)](http://bigcontest.or.kr/) - - [날씨 빅데이터 콘테스트(기상청)](http://big.kma.go.kr/contest) - - [디지털 헬스 해커톤(삼성융합의과학원)](https://www.digitalhealthhack.org/) - -- __2. 해외__ - - [캐글(Kaggle)](https://www.kaggle.com/) - - [데이터 사이언스 게임(Data Science Game)](https://datasciencegame.com/) - - [일본 SIGNATE 경진대회](https://signate.jp/competitions) - - [데이터 해커톤(Data Hackathon)](https://datahack.analyticsvidhya.com/) - - [오픈 데이터 해커톤(Open Data Hackathon)](http://opendatacy.com/) - - [아시아 오픈 데이터 해커톤(Asia Open Data Hackathon)](http://odhack.asia/) - -- __3. 기타__ - - [WEVIFY (공모전 공고 모음)](https://www.wevity.com/index_biz.php?c=find&s=1&gub=1&cidx=21) - - -``` ※ 수시 업데이트 예정(오류 또는 최신정보가 있으신 경우 댓글로 알려주시면 감사하겠습니다.)``` \ No newline at end of file diff --git a/_posts/2019-06-25-think-future-ai.markdown b/_posts/2019-06-25-think-future-ai.markdown deleted file mode 100644 index d8f8cf692..000000000 --- a/_posts/2019-06-25-think-future-ai.markdown +++ /dev/null @@ -1,140 +0,0 @@ ---- -layout: post -title: "종합 예술영역 Data Science와 딥러닝에 대한 소고(小考)" -subtitle: "A Study on Data Science and Deep Learning, which is a fusion of diverse disciplines" -categories: think -tags: think ai ml dl data science future -comments: true -header-img: img/think/2019-06-25-think-future-ai-1.png ---- - -## 개요 -> 종합 예술영역이라 일컬어질 정도로 다양한 학문이 융합된 데이터 사이언스, 딥러닝에 대해 그동안의 경험, 감(感)을 바탕으로 몇자 주절거려 봅니다. - -- 목차 - - [딥러닝의 약점은 무엇일까?](#딥러닝의-약점은-무엇일까) - - [Data Science? AI? 모두 예전에 우리가 했던 일이다.](#data-science-ai-모두-예전에-우리가-했던-일이다) - - [NLP가 세상 모든 데이터의 기본단위를 바꾸지 않을까?](#nlp가-세상-모든-데이터의-기본단위를-바꾸지-않을까) - - [결국 논문이 Key이다.](#결국-논문이-key이다) - - [Science위의 공학. 공학위의 Science](#science위의-공학-공학위의-science) - - [개인이 생산한 데이터의 라벨링은 누가 해 줄 것인가?](#개인이-생산한-데이터의-라벨링은-누가-해-줄-것인가) - - [세상 모든 논문들을 딥러닝이 이해할 수 있게](#세상-모든-논문들을-딥러닝이-이해할-수-있게) - - [딥러닝은 사이언스인가? 또, 내부는 블랙박스인가?](#딥러닝은-사이언스인가-또-내부는-블랙박스인가) - - [요약하며...](#요약하며) - - -## 딥러닝의 약점은 무엇일까? ---- - -딥러닝은 분명 만능이 아니다. 더불어 딥러닝이 해결할 수 있는 대다수의 데이터 사이언스 문제들은 사실 다른 ML기법으로도 충분히 해결이 가능한 경우가 많다. 비슷한 성능을 내는데 굳이 DL을 쓰지 않고 ML을 쓰는 이유는 컴퓨팅 자원의 효율성 때문이다. - -최근 기업에서 나오는 우스개 소리로 결재가 반려될 경우 "AI, 딥러닝, 빅데이터"라는 마법의 단어를 사용하면 결재를 득할 수 있다는 풍자가 나올 정도로 A.I는 분명 핵심 트렌드이다. 본 챕터에서는 이렇게 핫한 딥러닝의 약점을 찾아볼까 한다. 만능으로 일컬어지는 최신 트렌드의 기술을 폄하할 의도는 없으나 이를 비판하는 과정은 중요하다. 그 과정에서 기술을 더 객관적으로 볼 수 있는 시야를 확보할 수 있음은 물론 더 나은 기술을 위한 초석이 될 수 있기 때문이다. - -인류가 쌓아온 지식의 분야에서 특히 딥러닝이 강점을 보이는 분야는 "동영상, 이미지, 음성인식, NLP" 등의 분야일 것이다.이 분야의 공통점은 무엇일까? 대부분 비정형 데이터이면서 동시에 컴퓨터가 이해할 수 있는 형태로의 `2차 가공을 거친` 데이터들을 다루는 분야이다. 이 세상 그대로의 데이터를 컴퓨터가 이해할 수 있도록 전할 방법이 없기에 아날로그를 디지털화 하는 등 일종의 "변환" 작업을 거친다. - -그 과정에서 이 세상의 Real 데이터들은 Computing Vision, 신호처리, 푸리에 변환 등 인류가 장기간 축적해 온 지식들의 손바닥 안에서 놀 수 있는 데이터의 형태로 변환된다. Min ~ Max의 유한한 범위를 갖는 일종의 해석 가능한 범주 형태의 피처로 변환이 되고 축적된 지식으로 만든 모델의 Input값으로 최적화 되어있는 셈이다. - -연산의 시간 복잡도 문제는 컴퓨팅 파워만 충분하다면 해결 가능해졌고, 이러한 가공을 통해 피처 선정 및 추출, 모델의 선택에 있어 경우의 수를 크게 좁혀준 셈이다. 그렇다면 가공을 거치지 않은 Tabular 형태의 일반 데이터는? 데이터 사이언스가 등장했음에도 여전히 통계학이 중요한 이유이기도 하다. - - -## Data Science? AI? 모두 예전에 우리가 했던 일이다. ---- -통계학 분야에서 종종 언급되는 말인데 필자는 부정하고 싶지않다. "딥러닝은 기존에 존재하던 Logit의 결합일 뿐인데 이를 최신 기술의 등장이라 말할 수 있는가? 마케팅아닌가?"라고 폄하하는 분도 있다. - -Tabular 기반의 데이터에서 - 2차 가공을 거치지 않은 세상의 진정한 의미가 담긴 데이터 - 가치있는 Insight를 추출하거나 미래를 예측하기 위해서는 모델링과 그 모델이 이해할 수 있는 형태로의 데이터 전처리, 그리고 모델링을 위한 수리통계학을 기반으로 한 과학이 필수임은 부인할 수 없다. - -그런 측면에서 딥러닝은 이미 전처리 및 관련 분야의 과학적 연구가 반영된 컴퓨터 비전, 영상, 음성 등의 데이터 셋을 다루고 과학적 지식이 없는 모델링을 통해 해석도 할 수 없는채로 AI, Data "Science"를 운운하고 있으니 시각에 따라서는 비판의 대상이 될 수 있다고 본다. - -세상의 모든 진리는 기초 과학들이 밝히고 컴퓨터 공학은 그들이 쌓아놓은 금자탑 위에서 단물을 쪽쪽 빨아먹는다. 어찌보면 제일 하는것도 없는 것 같은데 연구비, 정부 지원금도 가장 많이 가져가는 편이다. 그것도 모자라 이젠 감히 능력도 없는 것들이 "Science"라는 단어를 운운해? 필자는 한명의 컴퓨터 공학도로써 죄송하고 감사할 뿐이다. - -그럼에도 컴퓨터 공학의 핵심 가치는 대중화와 커뮤니케이션이 아닐까 싶다. 기초 과학의 최전선에 서있는 천재 연구자와 필자같은 평범한 대중의 지식의 격차는 어느정도일까? 길게 쳐줘야 100년도 안되는 컴퓨터 공학의 역사이지만 인류의 정보 불균형 문제를 해소하는데 가장 큰 기여를 한 것은 컴퓨터 공학이 아닐까싶다. 짧은 역사에도 불구하고 산업과 자본을 이끌어 온 저력은 바로 이러한 대중화 능력이다. 이들은 컴퓨터를 만들었고 지금도 다른 학문의 모든 데이터를 컴퓨터에 집어넣고 이해시키기 위해 변환한다. - -이제 이런 나름의 한계속에 딥러닝을 위시로 한 컴퓨터 공학이 앞으로 미래를 어떻게 헤쳐나갈지 공상과학을 써보려 한다. 이어지는 글들을 읽으시며 "개똥철학의 정도도 유분수지 더는 못봐주겠다."라고 느끼는 분들이 분명 계신다면 언제든 욕 한 번 시원하게 내뱉으시고 본 블로그를 꺼주시기 바란다. 그저 지극히 학식이 없는 이가 근거도 없이 개인적으로 바라는 미래의 방향을 생각해보고 두서없이 정리한 글이기 때문이다. - -## NLP가 세상 모든 데이터의 `기본단위`를 바꾸지 않을까? ---- -필자는 NLP가 현재의 RDB를 비롯한 세상의 대부분의 데이터(적어도 우리가 컴퓨터, 모바일을 사용하면서 생산하는 데이터 만큼은)의 저장 형태 및 기본 단위를 바꿀것이라 생각한다. 딥러닝의 자동화를 위해서 말이다. - -자연어를 NLP 기술을 활용하여 `Data-Meta` 구조의 기본 단위로 변형하여 그에 적합하게 고안된 유한한 모델을 만든 후, 변환된 데이터와 모델들은 인공지능을 위한 가교 역할 일종의 중간 Layer를 담당하게 될 것이라 멋대로 추측해보곤 한다. - -데이터는 이런 기본단위의 규칙을 갖는 반정형 형태로 축적될 것이고, 모든 자료는 Json, XML과 유사하게 Tree등의 자료구조를 활용한 Meta 정보를 쌍으로 가질 것이라 생각한다. Meta도 결국 피처로 쓰이게 될 것이고 세상의 거의 모든 자료는 서적부터 동영상에 이르기까지 이런 형태의 'Data-Meta' 단위로 재편될 것이다. - -데이터가 재편되는데는 사실 그리 오랜 시간이 걸리지 않을 것이다. 요즘 Tabular, Pad 등 글을 생산하는 플랫폼을 전부 컴퓨터 공학에서 주도하고 있기 때문이다. Tabular 데이터도 결국은 이미 고안된 유한한 모델링의 일부에 활용될 것이다. - -기생산된 데이터의 재편이 어려울지도 모른다. 하지만 빠른 시일내에 원저자 혹은 관련 연구자들이 일종의 라벨링처럼 반정형 형태로의 변환을 가능하게끔 연구해 줄 것이라 생각한다. - -어려움에 봉착할지라도 신호처리, 푸리에 변환이 활용된 것처럼 `다른 학문에 쌓인 축적된 지식을 가져와 모델링`할 것이라 예측한다. 그 중심에 NLP가 있다. - - -## 결국 논문이 Key이다. ---- -그동안 인류가 쌓아온 지식을 딥러닝이 이해할 수 있는 형태로 피처 형태를 정의하고 모델을 구성하는데 얼마나 오랜 시간이 걸릴까? 그동안 컴퓨가 보여준 실행력, 스피드, 실행가능성, 실용성, 자동화의 힘이라면 구현하여 활용하는데 그리 오랜 시간이 걸리지 않을 듯 하다. - -모든 학문 분야는 `"논문"이라는 일종의 공통된 언어`를 사용한다. `논문에는 대부분 가설이 존재하고 검증을 위한 모델이 담겨`있다. 중간에 NLP가 어떤 기능을 하느냐에 따라 딥러닝이 받아들이기 아주 쉬운 구조로 되어있다는 의미이다. - - -## Science위의 공학. 공학위의 Science ---- -공학에는 짧은 시간동안 빠른 구현 및 활용을 위한 철학을 기저로 한 고민과 무수한 시행착오를 녹인 강한 실행력을 가진 나름의 Science가 존재하기에 기초 사이언스를 쉽게 받아들이고, 결합하고, 그 과정에서 창조적인 지식이 재탄생한다. 그리고 그 지식을 누구보다도 빠르게 구현할 수 있는 학문 분야를 연구한다.(`GAN` 등이 대표적인 예라고 할 수 있다.) - -더불어 언제나 누구든 쉽게 인사이트를 착상할 수 있게 고취시킬 수 있는 환경을 가지고 있다. 때문에 세상의 자본을 쥐락펴락할 수 있는 것이 아닐까?(물론 이러한 강점이 인문학적인 측면에서, 기초 과학과 진리의 측면에서 사람이 살아가야 할 방향과 일치하느냐고 물으신다면 별개라고 답하고 싶다.) - - -## 개인이 생산한 데이터의 라벨링은 누가 해 줄 것인가? ---- -마땅한 예제가 떠오르지 않아 수준 낮은 예시를 하나들까 한다. NLP없이 컴퓨터 비전 지식만 활용한다고 가정시 이 문제를 어떻게 해결할 수 있을까? - -> 본인이 패드 또는 종이에 글을 쓰고 텍스트로 자동 변환하는 솔루션을 개발한다고 가정하자. 이때 [Space]는 어떻게 변환이 될까? 단어 간 띄어쓰기가 1cm일 때 스페이스를 넣을 것인가? 아니면 1mm? - -이 애매한 기준을 가지고는 과적합 발생 시 한글자 한글자마다 스페이스가 생겨 사용자로 하여금 노가다를 유발시키는 저질 변환이 이루어질 것이고, 과소 적합시에는 아에 줄 글로 주욱 붙어있어 스페이스를 찾기 어려운 지경에 빠질지도 모른다. - -그렇다면 이를 해결하기 위해 무엇이 필요할까? 당연히 데이터다. 더 정확하게 말하면 이 사람이 쓴 글의 이미지와 그에 기반한 텍스트로 변환된 라벨링이 필요하다. 피처가 단순히 이 사람의 라벨링에 기반한 스페이스 부분의 길이 정보 하나라면, 당연히 Min ~ Max의 띄어쓰기 길이가 존재할 것이고 한 글자 간 거리또한 유효한 범위가 존재할테니, 아주 간단한 경우에는 2개의 길이가 겹치는 지점에 대한 학습을 수행하여 정확도를 판별할 것이고, 더 나아간다면 특정 글자또는 단어가 들어가는 경우 스페이스의 길이가 줄어드는 특징을 잡아내어 정확도를 높일 수도 있을 것이다. - -여기서 중요한 것은 누군가는 라벨링을 해야한다는 것이다. 물론 사람의 눈은 이미 타인의 글도 상당히 정확하게 읽어내는 능력이 있으므로 라벨링 대행업체가 존재하겠지만 결국 딥러닝의 품질을 향상시키기 위해서 글쓴이의 라벨링이 직접 필요해질 수 밖에 없다. 그런데 과연 사람들이 이 귀찮은 라벨링을 순순히 참여할까? 이 문제에 대한 몫은 솔루션을 개발하는 사업가의 몫이다. 바로 개인들의 데이터에 대한 라벨을 어떻게 자연스럽게 어렵지 않게 수집할 것인지 말이다. - -이 예는 비단 NLP관련 극히 일부의 사례다. 앞으로 모바일을 통해서 더 많은 개인 데이터가 수집될 것이다. 개인화된 라벨을 마치 산소 마시듯이 편리하고 자연스럽게 축적시켜 기왕이면 개인정보 관련 본인의 동의여부 통제하에 제공될 수 있는 플랫폼을 가진 회사가 향후 딥러닝을 위시한 인공지능의 미래를 주도할 큰 축이 될 것임을 조심스럽게 예측해본다. - - -## 세상 모든 논문들을 딥러닝이 이해할 수 있게 ---- -위에서도 잠깐 언급한 바와 같이 학문의 축적된 기술과 이론을 피처 및 모델과 연동시키는 분야가 유망하지 않을까 조심스레 점쳐본다. 이 산업 분야는 상기의 과제 외에도 논문, 연구와 관련된 메카가 될 것이다. - -나아가 특허청과 유사한 역할로 블록체인을 활용하여 최초 지식 생산자부터의 위변조 감지도 담당할 것이고, 축적된 기술을 피처와 연관짓는 과정의 산출물로 특허 지식의 실현가능성, 적합성 등을 판단하여 특허 등록에 대한 엄밀한 예행 판단을 서비스 할 수 있게 될지도 모른다. 뉴턴과 라이프니치의 미적분 발명 논쟁도 이젠 역사속으로 사라진다. - -Review 논문의 역할과 유사한 `Reference Map + 그 위에 핵심 아이디어(해당 논문이 전달하고자 하는)`만 간략히 Graph형태로 배치될 것이고, 연구 지식이 가장 효율적인 형태로 축적된 신 인류의 지식 저장소 역할을 수행할 것이며, 사회적으로도 단일국가 탄생을 견인할 가능성도 까지 이어질지도 모르겠다고 한다면 너무 과도한 생각일까? - -학문적 깊이와 연결되기 힘든 `일반인들의 창의적인 발상`을 기존 학문이 축적한 깊이에 연결시켜 줌으로써 인류 지식의 초고속 발전에 기여하게 될지도 모른다. - - -## 딥러닝은 사이언스인가? 또, 내부는 블랙박스인가? ---- -위에서 잠깐 언급했듯이 딥러닝은 Science가 아니다라는 견해가 있다. 딥러닝 관련 논문 중 `전체 매커니즘에 관해 수식으로 표현하는` 논문이 없다. 엄밀한 증명을 적용할 수식이 없고 나아가 알파고를 이길 수 있었던 규칙이 무엇이었는지, 어떤 수학적 알고리즘으로 승리한 것인건지 만든 창조자도 설명을 못한다. 그래서 블랙박스라고 표현하기도 한다. - -개인적으로는 엄밀히 블랙박스는 아니라고 생각한다. 특정 은닉층의 값을 출력해보면 weight의 값이 0.32943.., bias가 0.324, .. 등 수치적으로 분명히 확인할 수 있으니 보이지 않는다고 표현할 수는 없다. 다만, 내부에 엄청나게 많은 노드와 가중치, 그리고 노드들의 활성 여부를 `사람의 기억력으로는 전체를 바라볼 수 없어` 수식과 같은 연역적 규칙으로 표현하지 못하는 것이다. - -아직까지 사람이 가진 수식으로는 표현 못하는 거대함이 숨어있는 것이다. 사실 노드 하나하나의 활성화 과정은 Logit과 거의 유사하므로 부분만 놓고보면 수식으로 충분히 표현할 수 있음은 물론 매우 쉽다. 하지만 전체를 설명 못하는 것이다. - -그렇다면 그냥 동작방식을 모른채로 살아가야 하는가? 원하는 결과만 얻으면 되는가? 그렇지 않다. 인류는 어떤 형태로든 항상 답을 구해왔으니 결국은 이뤄내지 않을까? DARPA의 XAI 프로젝트와 같이 이미 내부를 들여다보기 위한 여러 시도들이 이루어지고 있다. 특히 CNN과 같은 Vision 분야의 경우 피처 자체가 시각 데이터임에 착안하여 층별 시각화 이미지를 통해 내부를 들여다 보고 전체 로직을 설명하기 위한 필터시각화 등의 연구가 이루어지는 것으로 알고 있다. - -이와 관련하여 앞으로 개인적으로 해보고 싶은것이 있다. 전체 숲은 모를지언정 부분의 판단이 나오게 된 원인을 수식으로 변환하는 시도를 해보고 싶다. 특정 결론이 나오기까지 영향을 미친 노드들은 전체노드는 아닐 것이다. 관련 노드들 N개만 추출하여 해당 노드간의 수식을 구한다면 전체를 추적하는 것보다는 분명 쉽게 수식을 도출할 수 있을 것이라 생각한다. - -물론 ReLU함수와 같이 구해도 별 의미도 없는 수식이 등장할지도 모르겠다. 하지만 유의미한 수식이 도출될 가능성도 있다. 학습이 부족하여 ReLU 형태의 수식이 등장한 것인지도 모른다. 데이터 사이언스의 고유 업무 중의 하나가 패턴을 찾아내는 일이므로 패턴속의 규칙을 찾아내려는 시도 및 연구 결과가 모여 이 무의미한 수식들을 유의미한 수식으로 바꿔갈 것으로 기대한다. - -파격적으로 생각하면 수학에 새로운 방식의 표현이 등장할 것으로 예상한다. ~~시나리오 쓰고있다.~~ Sigma와 같이 동일 패턴의 묶음을 상징하는 기호가 많이 등장하여 천문학적인 IF의 갯수를 파격적으로 줄여주거나, `수없이 다양한 패턴이 표준 기호화`되어 그 데이터 위의 패턴을 찾으려는 시도가 진행되지 않을까 예측해본다. 너무 어려운 분야의 이야기를 얕은 지식으로 표현하였기에 허무맹랑한 이야기가 되었는지 모르겠으나 일부 역사에서 그래왔듯이 이 허무맹랑함이 인류의 과학 문명을 업그레이드시키는 씨앗이 되었으면 좋겠다. - - -## 요약하며 ---- -> "너만의 개똥철학에 경의를 표한다." - -본 포스팅의 요약이다. 어디가서 떠들면 욕먹을 것이 자명하기에 개인 블로그외에 남길곳이 없어 포스팅한 자료이니 그냥 가볍게 재미로 너그러이 봐주셨으면 한다. ~~어차피 읽는 분도 없는 것 알고 있다.~~ - -개인적으로 위와 관련된 주제의 연구를 하고싶고 또는 유관 산업에서 일을 하고 싶다. 그 중에서도 '세상 모든 논문들을 딥러닝이 이해할 수 있게'라는 소제목으로 표현한 분야에 가장 관심이 많은데 네이처 논문지, 특허청 같은 유사 기관들이 이미 설립되어 있으므로 그 곳에서 변화를 주도하던가, 아니면 꿈틀대는 태동기의 회사를 찾아 들어가던가, 아니면 새로 만들던가 하고 싶지만 생업에 종사하느라 열심히 갈고 닦을 시간이 부족함에 눈물이 난다. - -대부분의 연구자 분들의 한탄이겠지만 가방 끈 짧고 더 늦게 출발한 사짜 연구자의 심정은 오죽하랴. 그저 하루종일 데이터 사이언스 분야만 할 수 있길 바랄 뿐. - -아무쪼록 긴 글임에도 여기까지 읽어주심에 깊이 감사드린다. - -> 주1) 최초 버전의 글이 창피하여 다시 작성한다. - -> 주2) 필자가 블로그 이름을 `TheoryDB`라고 지은 이유는 논문들을 AI가 이해할 수 있도록 'Data-Meta' DB로 재편하고 싶은 욕구 때문이다. diff --git a/_posts/2019-07-08-review-book-game-algorithm.markdown b/_posts/2019-07-08-review-book-game-algorithm.markdown deleted file mode 100644 index 2b10bc388..000000000 --- a/_posts/2019-07-08-review-book-game-algorithm.markdown +++ /dev/null @@ -1,130 +0,0 @@ ---- -layout: post -title: "[리뷰] 게임으로 익히는 코딩 알고리즘" -subtitle: "코딩 알고리즘" -categories: review -tags: review book algorithm game -comments: true -header-img: img/review/2019-07-08-review-book-game-algorithm-1.jpg ---- - -## 개요 -> 본 리뷰는 `한빛미디어` 출판사 `"게임으로 익히는 코딩 알고리즘"`을 읽고 얻은 지식을 정리한 글입니다. - -- 목차 - - [알고리즘으로 게임하는 세상이 올 줄이야...](#알고리즘으로-게임하는-세상이-올-줄이야) - - [개발인생 15년. 알고리즘이 중요하다고 느낄 때](#개발인생-15년-알고리즘이-중요하다고-느낄-때) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [책의 구성 및 요약](#책의-구성-및-요약) - - [요약하며...](#요약하며) - - - -## 알고리즘으로 게임하는 세상이 올 줄이야... ---- -신선하다. 세상이 빠르게 변하고 점점 좋아진다는 건 알았지만 게임으로 알고리즘을 배우는 책이 나오리라고는 생각하지 못한것이 사실이다. 게임이든, 책이든 수단이 뭣이 중요한가 생각이 들기도 했지만 내 안에서는 알고리즘은 왠지 수학과 친밀하고 교과서 같은 분위기에서 벗어나면 안된다는 일종의 프레임이 형성되어 있었던 것 같다. - -책을 펼치자마자 [코딩게임](https://www.codingame.com/) 공식 사이트로 바로 들어가 보았다. 링크를 클릭하면 구글 OAuth 덕분에 별도 회원가입 없이 로그인이 가능하다. 구글 계정 등으로 로그인한 후 아래 그림과 같은 화면을 볼 수 있다. 처음이라 복잡해 보이지만 단순히 비교문 if만 알면 쉽게 풀 수 있는 쉬운 문제이다. 빨간색 동그라미 부분의 코드를 작성한 후 `PLAY ALL TESTCASES`를 클릭하면 좌측 상단의 멋진 게임실행 화면을 볼 수 있다. 그 후 `GOT IT` 또는 `SUBMIT` 버튼을 누르면 결과가 제출하고 메인화면으로 이동하게 된다. -![코딩게임접속화면](https://theorydb.github.io/assets/img/review/2019-07-08-review-book-game-algorithm-5.jpg) - -어떤가 꽤 참신하지 않은가? 너무 참신하여 혹시 게임 플랫폼 광고용으로 만든 책은 아닌건지, 혹은 첫인상은 매혹적으로 다가왔는데 실상 알고리즘 핵심은 텅텅 비어있는 껍데기에 불과한 책은 아닌지 의심이 되기 시작했다. 그러나 기우였다. 사실 지금까지 읽은 어떤 알고리즘 책 보다도 쉽게 설명하고, 가독성을 높이기 위한 시각화 처리가 잘 되어있으며, 실전에 필요한 케이스를 다룸으로써 집중력을 높여준다. 아래 -그림에서 보듯 주요 알고리즘을 시각적으로 쉽게 설명해 준다. -![알고리즘도1](https://theorydb.github.io/assets/img/review/2019-07-08-review-book-game-algorithm-2.jpg) -![알고리즘도2](https://theorydb.github.io/assets/img/review/2019-07-08-review-book-game-algorithm-3.jpg) -![알고리즘도3](https://theorydb.github.io/assets/img/review/2019-07-08-review-book-game-algorithm-4.jpg) - -Science에 가까운 흥미를 떨어뜨리는 요소는 실전에 필요한 만큼으로 간결하게 압축하여 설명하였고 대신 이해의 깊이가 필요한 것은 놓치지 않고 다루었다. 알고리즘의 핵심개념과 시간복잡도, 공간복잡도를 알기 쉽게 설명한 후 초보자를 위해 조건문, 반복문, 인코딩과 관련된 기본기를 탄탄하게 해주는 게임부터 시작한다. - -이어 2차원 배열, 큐, 스택, 해시맵 등의 자료구조를 다루고 탐욕 알고리즘, 그래프, 탐색(너비우선, 깊이우선), 재귀, 트리 등 알고리즘에서 가장 중요한 개념도 다룬다. 심지어 다익스트라, 동적프로그래밍까지 다루며 화룡정점을 찍는다. 흥미뿐만 아니라 지식의 깊이도 놓치지 않으려는 노력이 돋보였다. - -구성 측면에서도 학습 능률을 높이기 위한 장치로 `더 생각해 봅시다` 코너를 두었는데 이 부분의 구성이 가장 마음에 든다. 배운 것을 토대로 나아가야 할 방향을 제시하고 흥미를 유발시켜 준다. 10장의 폭탄의 위치를 찾는 게임의 경우 학부시절 혼자서 만들었던 게임 생각이 났는데 그렇게 고심해서 혼자 만들었던 과정에서 얻은 내공 덕에 지금 먹고 살 수 있다고 생각한다. 여러 Chapter를 거치면서 그런 유익한 시간이 된다면 독자들에게는 큰 보탬이 될 것이다. - -내용의 깊이, 구성, 흥미, 참신함 뭐 하나 떨어지는 구석이 없어서 솔직히 단점을 잘 못찾았다. 잘 만들어진 책이라는 생각이 들었다. - -## 개발인생 15년. 알고리즘이 중요하다고 느낄 때 -사실 한국 IT개발 시장에서 알고리즘을 쓸 일이 흔치는 않다. 알고리즘은 보통 각 언어들에 Library 형태로 잘 구현이 되어 있으며 잘 구현된 예제를 보며 `찍어내기`를 얼마나 빨리 하느냐가 그동안 IT시장에서 바라는 인재상이었기 때문에 쓸 일이 많지 않았다. ~~정말 슬픈현실이다.~~지금도 크게 다르진 않으나 AI, 딥러닝 분야를 필두로 뭔가 변화가 보이기 시작했다. 보다 수학, 통계학에 가까운 Science를 다룰 줄 아는 인재가 필요해지고 있다. - -* __알고리즘이 뭔데?__ - 간단히 말해서 문제를 해결하기 위한 (가급적 최선의 방법을 찾는)절차라고 할 수 있다. - -* __그런데 그게 왜 중요한데?__ - 문제 자체도 해결할 수 있고 시간복잡도, 공간복잡도 등을 예상하여 자원 사용을 효율화하고 연산 속도를 높이는데 큰 도움을 준다. - -* __어차피 컴퓨터로 돌리면 빠른거 아냐?__ - 이해를 돕기위해 간단한 예시를 들어보겠다. 이 책의 11장에서 다루는 `외판원 문제`를 생각해보자. - > __외판원 문제?__ (출처 - 위키백과) - > 여러 도시들이 있고 한 도시에서 다른 도시로 이동하는 비용이 모두 주어졌을 때, 모든 도시들을 단 한 번만 방문하고 원래 시작점으로 돌아오는 최소 비용의 이동 순서를 구하는 것이다. 그래프 이론의 용어로 엄밀하게 정의한다면, "각 변에 가중치가 주어진 완전 그래프(weighted complete graph)에서 가장 작은 가중치를 가지는 해밀턴 순환을 구하라"라고 표현할 수 있다. - - + 도시가 2개라면, A->B, B->A [`2개`] - + 도시가 3개라면, A->B->C, A->C->B, B->A->C, B->C->A, C->A->B, C->B->A [`6개`] - + ... - + 도시가 10개라면, [`3,628,800개`]의 경우의 수가 나온다. - - 핵심은 도시가 n개라면 이동 가능한 경로의 수는 n!이 된다는 것이다. 시간 복잡도가 O(n!)가 되는 것이다. A라는 컴퓨터에서 위 알고리즘을 수행하는 데 걸리는 시간 `O(1)을 무난하게 1초`라고 가정하자. - - 그리고 `우주의 나이`를 계산해보자. 지금까지의 관측한 결과를 바탕으로 ΛCDM 모형을 적용하면 우주의 나이는 약 137.98 ± 0.37억 년으로 추정된다. 비교를 위해 `년`단위를 위에서 가정한 `초`단위로 변경해보자. - > 1년 = 365일 = 365 * 24시간 = 8,760시간 = 8,760 * 60분 - > = 525,600분 = 525,600 * 60초 = 31,536,000초 - - 이므로, - > 우주의 나이 = $$1.3798 * 10^{10} * 3.1536 * 10^7$$ = 약 $$4.35 * 10^{17}$$초 - - 가 나온다. - - > 1. $$O(n!) > O(2^n)$$ - > 2. $$2^{10} = 1024 = 10^3$$ - - 두가지 상황을 어림잡아 17 × 10 /3 = 약 57. 위의 가정하에 대략 `57개의 도시만 있으면 A컴퓨터로 우주의 나이 만큼 연산을 수행`해야 결과를 구할 수 있다는 의미가 된다. (예시를 위해 대략적으로 계산하며 생긴 오차가 있을 수 있으니 양해 부탁드린다.) - -* __그리고 언제 또 쓰이는데?__ - + `구글 검색 서비스가 2초 이상 걸린다면` 고객이 구글을 사용할까? 구글의 가장 큰 자료는 피처수가 10억개에 육박하는 것도 있다. 아무리 서버 컴퓨팅 파워가 버텨준다 쳐도 조금이라도 빠르게 검색 알고리즘을 개발해야 하지 않을까? - + 모바일에서 딥러닝을 작동시키려면 `한정된 자원`을 최대한 활용할 수 있어야 한다. - + `딥러닝의 연산량`도 마이크로 Sec 차이가 최종 성능에는 엄청난 영향을 미친다. - + 일반적인 App도 자원을 얼마냐 쓰느냐가 `배터리 소모`에 직결된다. - + 구글이 온도 1도씨라도 줄이기 위해 IDC센터를 폭포 옆으로 이전한 이야기를 들은적이 있는가? 알고리즘이 `발열량`에도 영향을 미친다. - -그 뿐만이 아니다. 알고리즘을 사칙연산처럼 쉽게 쓰는 것은 어렵다. 상황에 따라 다르게 쓰일 수 있기 때문이다. 그 개념에 한바탕 푹 빠져든 채로 살아야 숨쉬듯이 자연스럽게 몸에 베는 것이다. 단순히 알고리즘 지식만 얻는 것도 아니다. 자연스레 프로그래밍 스킬도 얻게 되고 사고의 속도에 박차를 가할 수 있는 된다. 그럼에도 알고리즘 공부를 하지 않을 것인가? - - -## 누가 읽어야 하는가? ---- - -- __초보 프로그래머, 컴퓨터 전공 학부 초년생__ - -- __경력은 많아도 찍어내기 신공에만 탁월한 응용력이 부족한 현직 개발자__ - -- __기타 프로그래밍에 관심이 있으신 분__ - 데이터 분석, 경제학 등 프로그래밍을 알면 큰 시너지 성과를 얻을 수 있는 타 학문 전공자에게도 알고리즘 개념의 기초를 다지기에 정말 도움이 되는 책이다. - - -## 책의 구성 및 요약 ---- -이 책은 크게 세 부분으로 구성되며, 각 장에서 다루는 내용을 요약해 보았다. - -- __1. 알고리즘을 위한 최소한의 기초지식(1 ~ 5장)__ - - 알고리즘의 핵심 개념과 시간복잡도, 공간복잡도 개념 파악 - - 조건문, 반복문, 인코딩 등 기본기 전수 - - [코딩게임](https://www.codingame.com/)에서 노는 방법 - - 그 외 프로그래밍 기본 문법과 데이터 타입에 익숙해질 수 있다. - -- __2. 핵심 자료구조와 알고리즘(6 ~ 13장)__ - - 배열, 큐, 스택, 해시맵 등의 자료구조 - - 탐욕 알고리즘, 그래프, 탐색(너비우선, 깊이우선), 재귀, 트리 등 알고리즘 - - 실전에서 알고리즘을 활용하게 되었을 때 대처하는 자세 - -- __3. 고급 알고리즘(14장 ~ 15장, 부록)__ - - 다익스트라, 원형큐, 동적프로그래밍 등 고급 알고리즘 - - 취업한 선배들이 알려주는 Tip 및 수도코드 제시 - -## 요약하며... ---- -예전과는 달리 알고리즘을 그림으로도 공부하고 심지어 게임으로도 공부할 수 있는 멋진 세상이 왔다. 딥러닝 등의 열풍으로 우리나라에서도 찍어내기식 개발자 양산에서 Science에 튼튼한 프로그래머를 요구하는 문화도 다가오고 있다. 한 10년 만 늦게 태어났더라면 얼마나 좋았을까 그런 생각도 해본다. - -위에서 언급한 바와 같이 알고리즘은 컴퓨터 공학의 핵심이자 정수이다. 중요성은 두말할 나위 없고 어떻게 깊이있게 빨리 익히는가가 관건이라 할 수 있는데 시중에 나와있는 어떤 책보다 알고리즘에 흥미롭고 빠르게 적응할 수 있을 것이라 생각한다. 큰 틀만 잡으면 이젠 깊이있는 교과서, 참고서도 두렵지 않을 것이다. 뭐든지 알면 개뿔도 아닌데, 모르면 그렇게 무서울 수가 없다. 이 책으로 알고리즘을 개뿔처럼 보실 수 있게 되시길 바란다. - - -> \<한빛미디어 출판사\> -> -> 믿고보는 "한빛미디어 출판사". IT분야에서 독보적인 양질의 도서를 출판하는 회사입니다. "나는 프로그래머다" 팟캐스트 후원, DevGround2019 행사, 리뷰어 모집, 다양한 학습 지원 등 다양한 분야에서 사회에 공헌하는 개발자와 공생하는 업체입니다. IT분야에 관심있으시다면 한빛미디어의 책으로 후회없는 출발을 하실 수 있습니다. - -[한빛미디어 바로가기](http://www.hanbit.co.kr/) diff --git a/_posts/2019-07-10-dev-papertomath-abroad-academy-list.markdown b/_posts/2019-07-10-dev-papertomath-abroad-academy-list.markdown deleted file mode 100644 index e0469860e..000000000 --- a/_posts/2019-07-10-dev-papertomath-abroad-academy-list.markdown +++ /dev/null @@ -1,282 +0,0 @@ ---- -layout: post -title: "[Paper] 데이터 사이언스 관련 해외학회 모음" -subtitle: "해외학회 모음" -categories: dev -tags: papertomath academy list -comments: true ---- -## 개요 -> `데이터 사이언스 관련 해외학회` 목록을 정리해 보았습니다. - -- 목차 - - [Machine Learning / Data Mining](#machine-learning--data-mining) - - [Information Systems](#information-systems) - - [Computer Vision / Image Processing](#computer-vision--image-processing) - - [기타 MeetUp / Community](#기타-meetup--community) - - -## Machine Learning / Data Mining ---- -+ IEEE Conference on Computer Vision and Pattern Recognition (CVPR) -+ Neural Information Processing Systems (NIPS) -+ European Conference on Computer Vision (ECCV) -+ International Conference on Machine Learning (ICML) -+ IEEE International Conference on Computer Vision (ICCV) -+ ACM SIGKDD International Conference on Knowledge discovery and data mining -+ Meeting of the Association for Computational Linguistics (ACL) -+ ACM SIGMOD International Conference on Management of Data -+ Conference on Empirical Methods in Natural Language Processing (EMNLP) -+ AAAI Conference on Artificial Intelligence -+ ACM International Conference on Web Search and Data Mining (WSDM) -+ International Conference on Data Engineering Workshops (ICDE) -+ IEEE International Symposium on Information Theory (ISIT) -+ ACM SIGIR Conference on Research and development in information retrieval (SIGIR) -+ IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) -+ Conference of the International Speech Communication Association (INTERSPEECH) -+ International Joint Conference on Artificial Intelligence (IJCAI) -+ ACM International Conference on Information and Knowledge Management (CIKM) -+ British Machine Vision Conference (BMVC) -+ International Conference on Language Resources and Evaluation (LREC) -+ IEEE International Conference on Data Mining (ICDM) -+ Allerton Conference on Communication, Control, and Computing -+ International Conference on Computational Linguistics (COLING) -+ Asian Conference on Computer Vision (ACCV) -+ SIAM International Conference on Data Mining (SDM) -+ International Conference on Pattern Recognition (ICPR) -+ IEEE International Conference on Image Processing (ICIP) -+ ACM Conference on Recommender Systems (RecSys) -+ Conference On Learning Theory (COLT) -+ Conference on Uncertainty in Artificial Intelligence (UAI) -+ International Conference on Learning Analytics And Knowledge (LAK) -+ Conference of the European Chapter of the Association for Computational Linguistics (EACL) -+ European Conference on Machine learning and knowledge discovery in databases (ECMLPKDD) -+ International Conference on Artificial Intelligence and Statistics (AISTATS) -+ International Joint Conference on Neural Networks (IJCNN) -+ International Symposium on Information Processing in Sensor Networks (IPSN) -+ European Conference on Artificial Intelligence (ECAI) -+ International Conference on Biometrics (ICB) -+ ACM International Conference on Multimedia Retrieval (ICMR) -+ IEEE International Conference on Automatic Face & Gesture Recognition (FG) -+ Artificial Intelligence in Medicine (AIME) -+ International Conference on Information Fusion (FUSION) -+ International Conference on Intelligent User Interfaces (IUI) -+ IEEE International Conference on Biometrics: Theory Applications and Systems (BTAS) -+ International Conference on Document Analysis and Recognition (ICDAR) -+ International Conference on Automated Planning and Scheduling (ICAPS) -+ Principles of Knowledge Representation and Reasoning (KR) -+ IEEE International Conference on Autonomic Computing (ICAC) -+ IEEE International Conference on Big Data (Big Data) -+ IEEE Spoken Language Technology Workshop (SLT) -+ Conference on Innovative Data Systems Research (CIDR) -+ Workshop on Statistical Machine Translation (WMT) -+ IEEE International Conference on Systems, Man and Cybernetics (SMT) -+ European Conference on Information Retrieval (ECIR) -+ International Conference on Artificial Intelligence and Soft Computing (ICAISC) -+ Pacific-Asia Conference on Knowledge Discovery and Data Mining (PAKDD) -+ IEEE Conference on Computational Intelligence and Games (CIG) -+ IAPR International Workshop on Document Analysis Systems (DAS) -+ International Conference on Intelligent Tutoring Systems (ITS) -+ IEEE International Conference on Advanced Video and Signal-Based Surveillance (AVSS) -+ International Conference on Affective Computing and Intelligent Interaction (ACII) -+ Intelligent Virtual Agents (IVA) -+ IEEE International Conference on Fuzzy Systems (FUZZ) -+ International Conference on Computational Linguistics and Intelligent Text Processing (CICLing) -+ International Conference on Machine Learning and Applications (ICMLA) -+ International Conference on Complex, Intelligent and Software Intensive Systems (CISIS) -+ International Conference on Tools with Artificial Intelligence (ICTAI) -+ International Conference on Neural Information Processing (ICONIP) -+ IEEE/WIC/ACM International Joint Conferences on Web Intelligence and Intelligent Agent Technology (WI-IAT) -+ International Conference on Integration of AI and OR Techniques in Constraint Programming (CPAIOR) -+ Learning and Intelligent Optimization (LION) -+ Workshop in Computational Approaches to Subjectivity and Sentiment Analysis (WASSA) -+ Intelligent Data Analysis (IDA) -+ Combinatorial Pattern Matching (CPM) -+ International Symposium on Visual Computing (ISVC) -+ International Conference on Fuzzy Systems and Knowledge Discovery (FSKD) -+ European Symposium on Artificial Neural Networks (ESANN) -+ International Conference on Artificial Neural Networks (ICANN) -+ International Symposium on String Processing and Information Retrieval (SPIRE) -+ International Conference on Agents and Artificial Intelligence (ICAART) -+ European Conference on Logics in Artificial Intelligence (JELIA) -+ International Joint Conference on Natural Language Processing (IJCNLP) -+ International Conference on Advances in Swarm Intelligence (ICSI) -+ Data Warehousing and Knowledge Discovery (DaWaK) -+ Recent Advances in Natural Language Processing (RANLP) -+ International Conference on Information Processing and Management of Uncertainty in Knowledge-Based Systems (IPMU) -+ Iberoamerican Congress on Pattern Recognition (CIARP) -+ IEEE International Conference on Intelligence and Security Informatics (ISI) -+ International Conference on Hybrid Artificial Intelligent Systems (HAIS) -+ International Symposium on Applied Machine Intelligence and Informatics (SAMI) - - -## Information Systems ---- -+ International Conference on Very Large Databases (VLDB) -+ ACM SIGKDD International Conference on Knowledge discovery and data mining (SIGKDD) -+ ACM SIGMOD International Conference on Management of Data (SIGMOD) -+ ACM Symposium on Theory of Computing (STOC) -+ International Conference on Data Engineering Workshops (ICDE) -+ IEEE International Symposium on Information Theory (ISIT) -+ ACM SIGIR Conference on Research and development in information retrieval (SIGIR) -+ International Conference on High Performance Computing, Networking, Storage and Analysis (SC) -+ IEEE Symposium on Foundations of Computer Science (FOCS) -+ ACM International Conference on Information and Knowledge Management (CIKM) -+ ACM European Conference on Computer Systems (EuroSys) -+ Conference on File and Storage Technologies (FAST) -+ International Conference on Autonomous agents and multi-agent systems (AAMAS) -+ Hawaii International Conference on System Sciences (HICSS) -+ Mining Software Repositories (MSR) -+ ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA) -+ SIAM International Conference on Data Mining (SDM) -+ International Conference on Financial Cryptography and Data Security (FC) -+ International Conference on Parallel Architectures and Compilation Techniques (PACT) -+ Conference On Learning Theory (COLT) -+ International Conference on Extending Database Technology (EDBT) -+ International Conference on Learning Analytics And Knowledge (LAK) -+ ACM Symposium on Applied Computing (SAC) -+ European Conference on Machine learning and knowledge discovery in databases (ECMPKDD) -+ IEEE/ACM International Conference on Automated Software Engineering (ASE) -+ International Symposium on Software Testing and Analysis (ISSTA) -+ International Conference on Artificial Intelligence and Statistics (AISTATS) -+ Conference on Designing Interactive Systems (DIS) -+ IEEE International Conference on Pervasive Computing and Communications (PERCOM) -+ ACM Symposium on Information, Computer and Communications Security (AsiaCCS) -+ International Symposium on Information Processing in Sensor Networks (IPSN) -+ IEEE/ACM International Conference on Computer-Aided Design (ICCAD) -+ International Society for Music Information Retrieval Conference (ISMIR) -+ ACM International Conference on Multimedia Retrieval (ICMR) -+ International Conference on Information Systems (ICIS) -+ IEEE International Conference on Cloud Computing Technology and Science (CloudCom) -+ International Conference on Information Fusion (FUSION) -+ ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems (SIGPATIAL) -+ Asilomar Conference on Signals, Systems and Computers (ACSSC) -+ Principles of Knowledge Representation and Reasoning (KR) -+ ACM SIGMOD-SIGACT-SIGART Symposium on Principles of Database Systems (PODS) -+ ACM International Symposium on Mobile Ad Hoc Networking and Computing (MOBIHOC) -+ European Conference on Information Systems (ECIS) -+ IEEE International Conference on Multimedia and Expo (ICME) -+ IEEE International Conference on Big Data (Big Data) -+ Symposium on Theoretical Aspects of Computer Science (STACS) -+ IEEE International Geoscience and Remote Sensing Symposium (IGARSS) -+ IEEE/IFIP Network Operations and Management Symposium (NOMS) -+ Information Theory and Applications Workshop (ITA) -+ Conference on Information Sciences and Systems (CISS) -+ International Conference on Tangible, embedded, and embodied interaction (TEI) -+ Conference on Innovative Data Systems Research (CIDR) -+ IEEE International Conference on Systems, Man and Cybernetics (SMC) -+ IEEE Symposium on Mass Storage Systems and Technologies (MSST) -+ IEEE Information Theory Workshop (ITW) -+ European Conference on Information Retrieval (ECIR) -+ IEEE Real-Time Systems Symposium (RTSS) -+ Americas Conference on Information Systems (AMCIS) -+ International Conference on Advanced Information Systems Engineering (CaiSE) -+ Pacific-Asia Conference on Knowledge Discovery and Data Mining (PAKDD) -+ International Conference on Intelligent Tutoring Systems (ITS) -+ International Conference on Mobile Data Management (MDM) -+ International ACM/IEEE Joint Conference on Digital Libraries (JCDL) -+ International Conference on Database Theory (ICDT) -+ International Conference on Complex, Intelligent and Software Intensive Systems (CISIS) -+ ACM International on Systems and Storage Conference (SYSTOR) -+ Data Compression Conference (DCC) -+ Pacific Asia Conference on Information Systems (PACIS) -+ International Conference on Database Systems for Advanced Applications (DASFAA) -+ International Conference on Information and Communication Technologies and Development (ICTD) -+ International Conference on Web and Internet Economics (WINE) -+ EUROMICRO Conference on Software Engineering and Advanced Applications (SEAA) -+ IEEE International Workshop on Information Forensics and Security (WIFS) -+ International Conference on Research Challenges in Information Science (RCIS) -+ International Symposium on String Processing and Information Retrieval (SPIRE) -+ International Conference on Search based Software Engineering (SSBSE) -+ Annual International Conference on Digital Government Research (DGO) -+ Data Warehousing and Knowledge Discovery (DaWaK) -+ International Conference on Information Processing and Management of Uncertainty in Knowledge-Based Systems (IPMU) -+ International Conference on Enterprise Information Systems (ICEIS) -+ Asian Symposium on Programming Languages and Systems (APLAS) -+ IEEE International Conference on Intelligence and Security Informatics (ISI) -+ International Conference on Hybrid Artificial Intelligent Systems (HAIS) -+ International Conference on Web Information Systems and Technologies (WEBIST) - - -## Computer Vision / Image Processing ---- -+ IEEE Conference on Computer Vision and Pattern Recognition (CVPR) -+ European Conference on Computer Vision (ECCV) -+ IEEE International Conference on Computer Vision (ICCV) -+ IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) -+ ACM Multimedia (ACMMM) -+ British Machine Vision Conference (BMVC) -+ Asian Conference on Computer Vision (ACCV) -+ International Conference on Pattern Recognition (ICPR) -+ IEEE International Conference on Image Processing (ICIP) -+ Medical Image Computing and Computer Assisted Intervention (MICCAI) -+ Workshop on Applications of Computer Vision (WACV) -+ International Conference on Biometrics (ICB) -+ ACM International Conference on Multimedia Retrieval (ICMR) -+ IEEE International Conference on Automatic Face & Gesture Recognition (FG) -+ IEEE International Conference on Biometrics: Theory Applications and Systems (BTAS) -+ ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems -+ International Conference on Document Analysis and Recognition (ICDAR) -+ European Signal Processing Conference (EUSIPCO) -+ IEEE International Conference on Multimedia and Expo (ICME) -+ Eye Tracking Research & Application (ETRA) -+ IEEE International Geoscience and Remote Sensing Symposium (IGARSS) -+ ACM Multimedia Systems Conference (MMSys) -+ IEEE International Conference on Systems, Man and Cybernetics (SMC) -+ IAPR International Workshop on Document Analysis Systems (DAS) -+ Working Conference on Advanced Visual Interfaces (AVI) -+ IEEE International Conference on Advanced Video and Signal-Based Surveillance (AVSS) -+ International Conference on Affective Computing and Intelligent Interaction (ACII) -+ International Workshop on Quality of Multimedia Experience (QoMEX) -+ IEEE Symposium on Visual Analytics Science and Technology (VAST) -+ IEEE Workshop on Multimedia Signal Processing (MMSP) -+ Picture Coding Symposium (PCS) -+ IEEE Pacific Visualization Symposium (PacificVis) -+ International Conference on Machine Learning and Applications (ICMLA) -+ ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games (i3D) -+ Data Compression Conference (DCC) -+ IEEE Virtual Reality Conference (VR) -+ Workshop in Computational Approaches to Subjectivity and Sentiment Analysis (WASSA) -+ IEEE International Workshop on Information Forensics and Security (WIFS) -+ International Symposium on Visual Computing (ISVC) -+ ACM Symposium on Virtual Reality Software and Technology (VRST) -+ International Conference on 3D Web Technology (Web3D) -+ International Conference on Information Visualization (InfoVis) -+ ACM/IEEE International Conference on Distributed Smart Cameras (ICDSC) -+ International Conference on Digital Image Computing Techniques and Applications (DICTA) -+ International Conference on Image Analysis and Processing (ICIAP) -+ International Conference on Virtual Systems and Multimedia (VSMM) -+ International Conference on Image Analysis and Recognition (ICIAR) -+ International Conference on Systems, Signals and Image Processing (IWSSIP) -+ Iberoamerican Congress on Pattern Recognition (CIARP) -+ ACM workshop on Information hiding and multimedia security (IHMMSEC) -+ International Symposium on Mathematical Morphology (ISMM) -+ International Conference on Control, Automation, Robotics and Vision (ICARCV) - - -## 기타 MeetUp / Community ---- -+ International Winter School on Big Data (BigDat) -+ International Conference on Statistical Language and Speech Processing (SLSP) -+ International Summer School on Deep Learning (DeepLearn) -+ International Conference on Algorithms for Computational Biology (AlCoB) -+ International Conference on Language and Automata Theory and Applications (LATA) -+ International Conference on the Theory and Practice of Natural Computing (TPNC) -+ Pycon -+ SciPy -+ DjangoCon Europe -+ EuroPython -+ EuroScipy -+ O'Reilly Open Source Convention (OSCON) -+ PyData -+ PyGotham -+ AWS summit -+ Microsoft Azure + AI Conference -+ Microsoft Ignite -+ Google Cloud Next -+ TensorFlow Dev Summit - -기타 자세한 사항 및 다른 분야의 학회정보가 필요하신 분들은 [guide2research](http://www.guide2research.com/topconf/computer-vision)로 접속하시면 됩니다. - - -``` ※ 수시 업데이트 예정(오류 또는 최신정보가 있으신 경우 댓글로 알려주시면 감사하겠습니다.)``` \ No newline at end of file diff --git a/_posts/2019-08-05-review-book-nlp-camp.markdown b/_posts/2019-08-05-review-book-nlp-camp.markdown deleted file mode 100644 index 507760cb8..000000000 --- a/_posts/2019-08-05-review-book-nlp-camp.markdown +++ /dev/null @@ -1,125 +0,0 @@ ---- -layout: post -title: "[리뷰] 자연어처리 딥러닝 캠프" -subtitle: "Natural Language Processing Deep Learning Camp Pytorch" -categories: review -tags: review book nlp deep learning camp -comments: true -header-img: img/review/2019-08-05-review-book-nlp-camp-1.jpg ---- - -## 개요 -> 본 리뷰는 `한빛미디어` 출판사 `"자연어처리 딥러닝 캠프(김기현 저)"`를 읽고 얻은 지식을 정리한 글입니다. - -- 목차 - - [인공지능이 논문을 학습한다면](#인공지능이-논문을-학습한다면) - - [NLP를 배우는데 있어 본 도서의 장점](#nlp를-배우는데-있어-본-도서의-장점) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [책의 구성 및 요약](#책의-구성-및-요약) - - [요약하며...](#요약하며) - - -## 인공지능이 논문을 학습한다면 ---- -수학에 뿌리를 둔 통계학. 통계학에 뿌리를 둔 머신러닝. 머신러닝에 뿌리를 둔 딥러닝. 그리고 딥러닝에 뿌리를 둔 NLP가 있다. 자연언어처리라고도 불리는 NLP는 인공지능 기술 중 하나로 기계로 하여금 인간의 언어를 이해할 수 있게 만드는 기술이다. 이 기술이 실현된다면 마치 사람으로 따지면 통역가와 같이 다국어 간의 컴퓨터, 기계를 통한 번역이 가능해진다. 뿐만 아니라 문서 자동분류, 챗봇 등 다양한 응용분야으로의 적용도 가능해진다. - -> __자연 언어 처리(Natural language processing)__ -자연어 처리(自然語處理) 또는 자연 언어 처리(自然言語處理)는 인간의 언어 현상을 컴퓨터와 같은 기계를 이용해서 모사 할수 있도록 연구하고 이를 구현하는 인공지능의 주요 분야 중 하나다. 자연 언어 처리는 연구 대상이 언어 이기 때문에 당연하게도 언어 자체를 연구하는 언어학과 언어 현상의 내적 기재를 탐구하는 언어 인지 과학과 연관이 깊다. 구현을 위해 수학적 통계적 도구를 많이 활용하며 특히 기계학습 도구를 많이 사용하는 대표적인 분야이다. 정보검색, QA 시스템, 문서 자동 분류, 신문기사 클러스터링, 대화형 Agent 등 다양한 응용이 이루어 지고 있다. - 위키백과 - - -이 자체로도 충분히 전도 유망한 기술이지만 필자가 딥러닝 기술 중 NLP에 가장 관심이 많은 이유는 다른데에 있다. 바로 소제목에서 명시한 바와 같이 논문을 학습하게 될 가능성 때문이다. - -필자가 보기에 `논문`은 그야말로 딥러닝의 언어이다. Review 논문은 마치 Graph Theory를 활용하여 구성하기에 딱 좋은 형태이며 학문이 발전해 온 전체 목차를 구성하기 좋고, 대부분 논문의 Abstract에는 Review 논문의 흐름 중 어느 카테고리에 붙어야 어울리는지 힌트를 제공한다. 또 내부 지식은 대부분 귀무가설과 검증에 대한 시행착오가 담겨져 있어 통계학을 원류로 하는 현 딥러닝 모델이 인식하기에 적합한 지식 구조로 이루어져 있다. - -딥러닝이 핫이슈이긴 해도 현재까지는 적용되는 범위가 한정되어있는데 주로 이미지, 음성, 영상 인식 등에 국한되어있다. 이 분야들의 공통점은 자연 그대로가 아닌 1차 가공을 거친 데이터를 피처로 활용한다는 점이다. 신호처리 등 그간의 학문분야에서 심도 있게 연구되어 온 축적된 지식이 있기에 딥러닝 모델이 인식하기 좋은 형태로 변환하거나 특징을 추출, 선택, 변환할 수 있는 것이다. (보다 자세히 다룬 내용은 필자의 블로그 ["통계학 vs 컴퓨터공학, 멋대로 써보는 Data Science 미래에 대한 소고(小考)-세상 모든 논문들을 딥러닝이 이해할 수 있게"](https://theorydb.github.io/think/2019/06/25/think-future-ai/#%EC%84%B8%EC%83%81-%EB%AA%A8%EB%93%A0-%EB%85%BC%EB%AC%B8%EB%93%A4%EC%9D%84-%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%9D%B4-%EC%9D%B4%ED%95%B4%ED%95%A0-%EC%88%98-%EC%9E%88%EA%B2%8C) 부분을 참고하시기 바란다.) - -이런 측면에서 볼 때 NLP는 목적 그 자체가 될 수도 있으나, 세상의 거의 모든 분야의 데이터를 딥러닝이 이해하기 쉽고 좋은 성능을 낼 수 있도록 Feature생성 혹은 전처리 역할을 담당하는 일종의 중간 Layer로 활용될 가능성이 크지 않을까 생각한다. DQN 등 Reinforcement Learning과 결합하여 논문을 이해하고 구현체를 만들 수 있는 날이 온다면 세상은 대 격변을 맞을 것이라 생각한다. 때문에 필자는 NLP를 활용하여 논문을 학습할 수 있는 모델을 설계하거나 이를 뒷받침하는 연구를 하고 싶다는 꿈이 있다. - -## NLP를 배우는데 있어 본 도서의 장점 ---- -NLP 기술이 왜 중요한지 그리고 미래에 얼마나 유망한지 위 장에서 간단하게 언급하였다. 그렇다면 NLP 기술은 어떻게 익혀야 할까? 적어도 한국어와 관련된 자연어 처리라면 이 책이 해답 중에 하나라고 말하고 싶다. 그간 시중에 출간된 NLP 서적은 흔했지만 깊이가 너무 얕았다. 이와 관련하여 본 도서가 가지는 특출난 장점이 몇가지 있어서 소개해 본다. - -* __일단, 한국어 NLP를 다룬다.__ - + 한국어에는 다른 언어에 비해 다음과 같이 자연어 처리를 어렵게 만드는 요소가 있다. - - 교착어 : 접사가 붙어 의미와 문법적 기능이 정해진다. (예: 잡히시었겠더라) - - 띄어쓰기 : 표준이 계속 변한다. - - 평서문과 의문문 : 동일한 문장구조를 가진다. - - 주어생략 : 명사를 중요시하는 영어와는 달리 동사를 중요시한다. - - 한자(漢字) 기반의 언어 : 표음문자의 특징인 중의성 문제(예: 건널`제`, 끌`제`, 제목`제`) - + 대부분의 장에서 영어 기반의 NLP 기술과 수학적 근간을 설명한 후 한글에 적용해보며 특수성을 언급하고 해결책을 제시한다. - -* __깊이가 있다. (재미는 입문서급이다.)__ - + NLP 초보자라면 언어모델링도 쉽지않은데 이 책은 그 이상의 심화주제를 소개한다. - + 듀얼리티, 전이학습, NMT시스템 구축 등은 그간 에서 접하면서 이해가 까다로웠던 부분인데 비교적 최신 기술을 학습하고 그 결과를 공유해주려는 저자의 배려가 돋보였다. 이런 심화 내용에 대한 개념을 잡을 수 있었던 것이 필자에게는 가장 큰 소득이었다. - -* __다양한 전처리 기법 및 정규표현식의 소개__ - + 그간의 전처리에서 겪었던 시행착오를 한방에 깔끔하게 정리해주었다. - + 아래 그림과 같이 알기쉬운 도식을 통해 정규표현식 또한 엑기스를 뽑아 전수해준다. - ![정규표현식](https://theorydb.github.io/assets/img/review/2019-08-05-review-book-nlp-camp-2.jpg) - -* __기계번역을 정면돌파한다.__ - + 그간 시중의 NLP 서적이 마음에 안들었던 이유는 크게 한국어, 번역 두 부분이었다. - + 특히 기계번역은 난이도가 높아 다른 서적에서 잘 언급하지 않는데 이 책은 과감히 기계번역을 시도한다. - -* __수학을 정면돌파한다.__ - + 확률변수부터 MLE, MSE까지 직관적으로 설명한다. 문제를 푸는 수학이 아닌 어디에 왜 써야하는지의 관점으로 접근한다. - + 아래 그림은 몬테카를로 샘플링에 관한 설명이다. 기본 수학을 떼신 분이라면 꽤 깔끔하게 직관적으로 설명하는 저자의 능력 덕분에 그간 복잡하게 엉켜있던 수학의 개념이 쉽게 정리되는 것을 느끼실 수 있을 것이다. - ![몬테카를로](https://theorydb.github.io/assets/img/review/2019-08-05-review-book-nlp-camp-3.jpg) - + 아래 그림은 벡터유사도에 관한 설명이다. 쉽게 설명한다는 핑계로 수식을 열거하지 않는 책들이 많은데 그렇게 쉽게 얻은 지식은 희미한 개념으로만 남을 뿐 다른 분야에 적용할 때 그 한계를 드러내기 마련이다. 가급적 간명한 설명을 통해 하나도 근본 원리를 놓치지 않으려는 저자의 시도가 마음에 들었다. - ![벡터유사도](https://theorydb.github.io/assets/img/review/2019-08-05-review-book-nlp-camp-4.jpg) - -* __기타__ - + 그 외에도 패스트캠퍼스의 검증된 강의를 기반으로 한다는 점 - + Pytorch와 친숙해질 기회라는 점 - + [저자의 GitHub](https://github.com/kh-kim/nlp_with_pytorch_examples/)에 완성도 높은 구현체가 공개되어 있다는 점이 장점이라고 할 수 있겠다. - -내용의 깊이, 구성, 저자의 열정 뭐 하나 떨어지는 구석없이 잘 만들어진 책이라는 생각이 들었다. - - -## 누가 읽어야 하는가? ---- - -- __한국어 NLP, 전처리에 고민이 깊었던 분__ - -- __NLP 기술 전체를 한 눈에 알기쉽게 정리하고 싶은 분__ - -- __NLP 입문 서적 수준을 넘어서고 싶으신 분__ - -- __그 외 필자와 같은 NLP ~~빠돌이~~ 분들__ - - -## 책의 구성 및 요약 ---- -이 책은 크게 네 부분으로 구성되며, 각 장에서 다루는 내용을 요약해 보았다. - -- __1. NLP 학습을 위한 준비운동(0 ~ 3장)__ - - 딥러닝 및 NLP의 개요, 기술의 발전과정 - - 기초수학에 대한 내공쌓기 - - 개발실습환경 구축 및 Pytorch 기본문법 학습 - -- __2. NLP 기초체력 다지기(4 ~ 7장)__ - - 정규표현식 등 전처리의 다양한 기술 학습 - - 원핫인코딩, TF-IDF, 벡터유사도, 중의성 해소 등 NLP 입문서 수준의 주요 개념 정리 - - word2vec 등 단어임베딩 및 시퀀스 모델링, 텍스트 분류 등 중급 내공 쌓기 - -- __3. 기계번역(9장 ~ 11장)__ - - SRILM, NNLM 등 언어모델의 활용법 및 n-gram실습 - - seq2seq, 어텐션 등을 활용한 신경망 기계번역 - - 다국어 신경망 및 트랜스 포머 등 심화주제 소개 - -- __4. __심화주제(12장 ~ 15장)__ - - 강화학습 적용 및 자연어 생성 - - 듀얼리티, NMT 시스템 구축, 전이학습 등 최신기술 소개 - - -## 요약하며... ---- -언제나 그렇듯이 이런 양서는 왜 늦게 나오는지 모르겠다. 그동안 다른책에 낭비된 시간이 아깝기 때문일까. 꽤 어려운 주제들을 언급하고 있는데 반해 솔직히 꽤 재미있게 읽었다. 물론 정독하고 수식까지 음미하려면 꽤 많은 시간이 소요될 것 같다. 책을 읽으며 가장 인상 깊었던 점은 수준높은 주제를, 저자가 그동안 공부하고 노력하고 연구했던 지식들 전부를, 어떻게든 한정된 지면안에 간결하게 쏟고자하는 노력이 느껴졌다는 점이다. 수학, 통계학 등 기초 체력이 잘 다져진 분들에게는 NLP 기술이 잘 집대성된 양서를 만났다는 느낌이 들 것이다. - -아쉬웠던 점이 있다면 그런 저자의 열정때문에 설명에 다소 축약이 많아 기초 내공이 약하거나 입문자이신 분들한테는 실습 환경 하나 구축하기 조차 벅차다는 생각이 드실 것 같다. 더불어 수식으로 열거된 설명 부분은 좀 더 자세하고 쉽게 설명이 되어있다면 교과서로 쓰여도 무난하지 않을까 하는 약간의 아쉬움은 들었다. 하지만 이런 아쉬운 점은 전체 장점 대비 극히 작은 영역이기에 별로 중요하지 않다. - - -> \<한빛미디어 출판사\> -> -> 믿고보는 "한빛미디어 출판사". IT분야에서 독보적인 양질의 도서를 출판하는 회사입니다. "나는 프로그래머다" 팟캐스트 후원, DevGround2019 행사, 리뷰어 모집, 다양한 학습 지원 등 다양한 분야에서 사회에 공헌하는 개발자와 공생하는 업체입니다. IT분야에 관심있으시다면 한빛미디어의 책으로 후회없는 출발을 하실 수 있습니다. - -[한빛미디어 바로가기](http://www.hanbit.co.kr/) diff --git a/_posts/2019-08-20-review-book-ga-facebook-marketing.markdown b/_posts/2019-08-20-review-book-ga-facebook-marketing.markdown deleted file mode 100644 index 0bb6d18dc..000000000 --- a/_posts/2019-08-20-review-book-ga-facebook-marketing.markdown +++ /dev/null @@ -1,115 +0,0 @@ ---- -layout: post -title: "[리뷰] 페이스북 퍼포먼스 마케팅 with 구글 애널리틱스" -subtitle: "Facebook Performance-Marketing with Google Analytics" -categories: review -tags: review book marketing facebook ga google analytics -comments: true -header-img: img/review/2019-08-20-review-book-ga-facebook-marketing-1.jpg ---- - -## 개요 -> 본 리뷰는 `비제이퍼블릭` 출판사 `"페이스북 퍼포먼스 마케팅 with 구글 애널리틱스(전민우,유성민 저)"`를 읽고 얻은 지식을 정리한 글입니다. - -- 목차 - - [구글 애널리틱스](#구글-애널리틱스google-analytics-ga) - - [페이스북 퍼포먼스 마케팅](#페이스북-퍼포먼스-마케팅) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [요약하며...](#요약하며) - - -## 구글 애널리틱스(Google Analytics, GA) ---- -누구나 한번쯤은 수익 혹은 취미를 목적으로 웹사이트를 제작하겠다고 마음먹은 적이 있을 것이다. 웹사이트를 만들고 싶다면 필자의 블로그인 Github Page, 워드프레스, 네이버블로그 등 훌륭한 플랫폼을 이용하여 큰 비용과 노력을 들이지 않고도 쉽게 만들 수 있는 세상이 되었다. 대신 이 시점에 등장한 `새로운 문제`가 있다면 제작한 사이트가 목적에 맞게 효율적으로 동작하는지 평가하기 만만치 않다는데 있다. - -웹사이트에 누가 방문하고 어떤 행동을 하며 무엇이 문제라고 느끼고 있는지 그리고 내 목표 기준 대비 사용자들은 얼마나 만족을 느끼고 있는지 파악하기 위해 직접 프로그램을 개발한다고 가정하자. 위에서 열거한 블로그 플랫폼들은 워드프레스를 제외하고는 서버 지향 웹 프로그램 개발이 불가한 환경이며 워드프레스를 사용한다고 해도 서버를 운영해야 하는 관계로 별도의 호스팅 비용이 발생하게 된다. - -뿐만 아니라 본인이 제법 훌륭한 프로그래머가 아니라면 어떻게 분석 프로그램을 설계할지 결정하는데 있어 많은 시행착오를 필요로 하게 되며 꽤 많은 노력과 시간을 들여 프로그램을 개발해야 한다. 이런 수고를 차치하더라도 본연의 웹사이트 제작 목적에 다가가기 전에 지쳐버리거나 배보다 배꼽이 더 큰 목적이 전도되는 현상에 좌절을 겪을지도 모른다. - -이럴때 필요한 것이 바로 구글 애널리틱스이다. 왠만한 공수를 들여 프로그램을 개발하는 것보다 훨씬 다양한 분석도구와 서비스 속도를 자랑하는데 그것도 모자라 무료라는 점이 필자를 푹 빠지게 만드는 계기가 되었다. - -구글 애널리틱스는 일종의 비즈니스 애널리틱스(Business analytics, BA) 기능을 제공하는 구글사에서 제작한 솔루션으로 `웹사이트의 실적을 높이고 온라인 비즈니스의 성공을 돕는 효율적인 웹사이트 분석 도구`이다. -> __Google Analytics__ -Google Analytics is a web analytics service offered by Google that tracks and reports website traffic, currently as a platform inside the Google Marketing Platform brand.[1] Google launched the service in November 2005 after acquiring developer Urchin. - 위키백과 - - -더불어 구글 애널리틱스에서 제공하는 기능을 한번쯤은 체계적으로 정리해야겠다는 필요성을 느꼈는데, 첫째는 데이터 사이언티스트가 되고 싶은 사람으로써 GA를 통해 솔루션을 구성한 비지니스적 인사이트를 얻고 싶었기 때문이고, 둘째는 본 블로그를 운영하며 대시보드 정도만 바라보는 수준에서 좀 더 사용자의 유입경로를 세부적으로 분석해보고 싶었기 때문이다. - -이런 목적을 달성하는 데 있어 본 서적은 큰 도움이 되었다. 단순히 페이스북, 구글 애널리틱스의 기능을 따라하며 구축하는데 그치지 않고 구축의 필요성과 마케팅 관련 용어 및 개념을 자세히 서술하여 가독성을 높였고 별도의 검색없이도 모든 내용을 이해할 수 있도록 알차게 구성한 덕에 생각보다 빨리 그리고 쉽게 구글 애널리틱스 기능의 전반을 훑어볼 수 있었다. - -예를들면 요즘 마케팅 트렌드는 매 시간 광고관리자 페이지를 Refresh하며 캠페인 성과를 추적하고 빠르게 대응하는 것이 핵심이라는 배경 지식을 얻게 된다. LTV, CAC와 같은 마케팅 용어도 상세히 설명하여 솔루션을 이해하는데 지장이 없게 해준다. - -이런 매끄러운 가독성을 유지하며 필자가 읽은 내용 및 장점을 아래와 같이 간단히 정리해 보았다. - - -* __Google Analytics의 장점__ - + 쉽다! 공짜다! 마케터의 관점(잠재고객, 획득, 행동분석)에서 데이터를 활용할 수 있다. - + 분석을 위한 분석에서 피할 수 있게 된다. - -* __올바른 데이터분석을 하고 있는지 판단하기 위한 체크리스트__ - + 기존의 가설을 검증하는데 유용한가? - + 새로운 가설의 수립이 가능한가? - + 새로운 것을 배울 수 있는가? - -* __Google Analytics 개요 및 실습__ - + 핵심용어 : 상호작용, 세션, 전환, 이탈률, 종료율, 측정기준, 측정항목 등 - + 전환리포트, 잠재고객리포트, 획득리포트, 행동리포트 활용법 - + 필수설정 : 인구통계 설정, 서치콘솔(검색 키워드 유입분석), 보기설정(백업, 브랜치 기능), 필터 - + 상세기능 실습 : 목표 및 유입경로 설정, 채널, 맞춤알림, 데이터스튜디오 설정 방법 등 - + 아래 그림과 같이 단계별 이미지는 실습을 따라가는데 많은 도움을 준다. - ![애널리틱스](https://theorydb.github.io/assets/img/review/2019-08-20-review-book-ga-facebook-marketing-2.jpg) - - -## 페이스북 퍼포먼스 마케팅 ---- -페이스북은 소셜 기능 외에도 마케팅 용도로도 국내외에서 엄청난 인기를 끌어왔다. 문제는 유료 광고비 없이 무료로 활용 가능한 유기적 도달률이 2013년 이후로 계속 하락하여 최초 약 12%에서 현재 약1~2%로 추정될 정도로 하락하였기에 페이스북은 이제 끝물일지도 모른다는 점을 저자는 진솔하게 표현하고 있다. - -그럼에도 아직까지 이를 대체할 만한 훌륭한 플랫폼이 없기에 페이스북을 통한 마케팅은 나쁘지 않다는 점과 저자가 제시하는 `퍼포먼스 마케팅`의 전략으로 효과를 극대화 할 수 있음을 강조하고 있다. - -역시 앞선 구글 애널리틱스 파트와 마찬가지로 CTR(클릭율), CPC(클릭당비용), CVR(전환율) 등의 용어설명 및 나아가 퍼널 모델까지 마케팅 관련 지식을 쉽게 자세히 설명하여 큰 지장없이 실습을 따라갈 수 있도록 도와준다. - -본 파트에서 읽었던 내용 및 장점을 아래와 같이 요약하였다. - -* __초급기능__ - + 페이스북 광고관리자, 캠페인, 광고, 성과지표 제작방법 - + 특히 성과지표 수립 시 데이터를 다루는 방법을 매우 상세히 다뤄 많은 도움이 되었다. - + 그 외 효과적인 광고의 포맷이나 광고의 트렌드도 설명하여 최신 동향을 파악하기 좋았다. - -* __중급기능__ - + 리마케팅, 픽셀, 확장프로그램 설치 방법 - + 특히 페이스북 마케팅을 어렵게 만드는 픽셀에 관해 쇼핑몰별 설치법까지 상세히 다뤄준다. - + 아래 그림은 픽셀코드를 설치하는 방법으로 어려운 부분마다 친절히 그림이 삽입되어 이해를 돕는다. - ![픽셀설치](https://theorydb.github.io/assets/img/review/2019-08-20-review-book-ga-facebook-marketing-3.jpg) - -* __고급기능__ - + 맞춤이벤트, 픽셀심화, 전환값, 동적 리마케팅 학습 - + 마무리답게 그간 필자의 현장 강의를 토대로 자주 받았던 트러블 이슈를 언급하여 화룡정점을 찍는다 - -전반적으로 탄탄한 현장 강의 경험을 토대로 저자의 친절한 정성이 담긴 서술 방식이 마음에 들었다. - - -## 누가 읽어야 하는가? ---- - -- __최신 트렌드 마케팅 기법을 익히고 싶으신 분__ - -- __마케팅 분야 데이터분석가__ - -- __수익 창출을 목적으로 하는 사업가, 자영업자__ - -- __구글 애널리틱스, 페이스북 유사 프로그램을 개발, 운영중인 프로그래머__ - -- __기타 웹사이트 운영에 있어 인사이트를 얻고 싶은 분 누구나__ - - -## 요약하며... ---- -필자같은 IT 전공자에게는 마케팅을 실전적으로 알기 쉽게 한권의 책으로 요약하며 배우는 느낌이 들어 큰 도움이 되었다. 더불어 탁상공론식 마케팅이 아닌 최신 트렌드를 기반으로 구글 애널리틱스 및 페이스북과 같은 Hot한 플랫폼을 익힐 수 있는 좋은 기회였다. 비제이 퍼블릭의 서적에서 매번 느껴왔던 극도로 실전적인 기술이 백견이 불여일타를 좋아하는 필자에게 안성맞춤이었다고나 할까. 비제이퍼블릭 책 답게 한권의 책으로도 당장 실전에 적용하여 원하는 목적을 달성할 수 있었다는 점에서 높은 점수를 주고 싶다. - -반면 다소 아쉬웠던 점이 있다면 마케팅의 설명 부분과 실습파트를 명확히 분리하면 좀 더 가독성이 향상되지 않았을까 싶다. 더불어 마케팅 초보자를 위하여 컬러 이미지가 삽입되었으면 하는 아쉬움이 남았지만 상당한 지면수에 따른 비용을 감안할 때 어쩔 수 없는 선택이었다는 점도 이해가 된다. 더불어 실습을 진행하는데 있어 구글 애널리틱스 리포트 실습 시 메뉴의 접근방법이 명확히 표기되지 않아 동일 리포트를 찾는데 약간의 시간이 더 소요되었다는 점, 페이스북 파트에 비해 다소 부족한 기능을 설명하였다는 점이 부족한 부분이었다 생각한다. 하지만 전체적인 장점에 비해 큰 단점이라고 생각하지는 않는다. - - -> \<비제이퍼블릭 출판사\> -> -> 책 한권만으로도 실무를 바로 수행할 수 있을 정도의 극도의 실용성을 자랑하는 서적을 많이 접해 인상적이었으며, 우수하고 참신한 해외 번역서, 최신 트렌트를 겨냥하는 내용으로 필자를 놀라게 하였습니다. IT 출판 분야의 신기원을 개척하여 어느덧 독보적인 위치를 차지하는 훌륭한 출판사라고 생각합니다. 십여권의 책을 장만하여 평소 즐겁게 읽고 있는 중입니다. 여러분께도 IT기술 실력을 향상시키는데 있어 큰 도움이 될 것이라 믿습니다. - -[비제이퍼블릭 바로가기](http://www.bjpublic.co.kr/) diff --git a/_posts/2019-08-23-dev-ml-colab.markdown b/_posts/2019-08-23-dev-ml-colab.markdown deleted file mode 100644 index 9bc0b9a40..000000000 --- a/_posts/2019-08-23-dev-ml-colab.markdown +++ /dev/null @@ -1,217 +0,0 @@ ---- -layout: post -title: "[Colab] Google Colab (코랩) 환경설정 및 사용법" -subtitle: "Google Colab Preferences and Usage" -categories: dev -tags: ml google colab python jupyter notebook -comments: true ---- - -## 개요 -> 파이썬을 활용한 머신러닝의 첫 관문! 구글 `Colab(코랩)`의 환경구성 및 기본 사용법을 다룬 포스트입니다. - -- 목차 - - [Colab이란 무엇인가?](#colab이란-무엇인가) - - [Colab 환경설정](#colab-환경설정) - - [Colab을 활용한 간단한 예제 작성](#colab을-활용한-간단한-예제-작성) - - [Colab & Markdown](#colab--markdown) - -## Colab이란 무엇인가? ---- -구글 코랩(Colab)은 `클라우드 기반의 무료 Jupyter 노트북` 개발 환경이다. 내부적으로는 `코랩 + 구글드라이브 + 도커 + 리눅스 + 구글클라우드`의 기술스택으로 이루어진 것으로 알려져있다. - -흔히들 딥러닝은 `귀족학문`이라고 말한다. 대학원에서 등록금을 지불해야 함은 물론, 꽤 긴 시간의 고찰과 연구를 필요로 하며(그 시간동안 돈을 못번다. 오히려 더 써야 할지도...), 비싼 Machine을 가진 자가 더 빠른 결과를 얻을 수 있다. 금수저(귀족)에게 어울리는 분야다. GPU가 없거나 돈없는 분들은 꼭 한번 활용하시기 바란다. - - -먼저, Colab의 장단점을 알아보자. (참고로, PC 환경은 [딥러닝 개발 환경 구축 한방에 끝내기](https://theorydb.github.io/dev/2020/02/14/dev-dl-setting-local-python/)을 참고하시기 바란다.) - -* __내 PC도 좋은데.. 굳이 써야되나요?__ - - `공짜`다. - - 쉽다. 환경설정 및 구동 준비가 `5분`이면 끝난다. - - 클라우드 기반이다. - + 여러명이 `동시에 수정 가능`하다. - + 인터넷 브라우저만 깔려있으면 언제 어디서든 접속하여 수정이 가능하다. 심지어 모바일에서 수정할 수 있다. - - 어지간한 개인 PC보다 `성능이 좋고 빠르다.` - + 비록 내 PC 사양이 뛰어나더라도 딥러닝 학습시간동안 내 PC로 아무것도 못하는것 보다는 영화라도 한편보는 것이 낫지 않은가? - - `학습 및 공유`에 최고! - + 일반 Jupyter Notebook에 비해 더 좋은 기능을 제공한다. (목차기능, Markdown의 미리보기 기능, 파워레벨, 고양이모드 등) - + Git과의 연동이 용이하여 타인과 지식을 공유하기 좋은 환경이다. - + 어딘가 모여 스터디를 진행한다면? Python 기반 특성 상 다들 노트북의 환경 맞추기 등에 시간을 낭비하기 마련인데 그럴 걱정이 없다. - - 오류발생 시 `[SEARCH STACK OVERFLOW]` 버튼을 클릭하면 자동으로 스택오버플로우 사이트 검색 결과가 나타난다. - -* __주의할 점__ - 세상의 모든것은 Trade-off가 존재하는 법. 공짜로 쓰는 대신 다음 사항은 유의해야 한다. - - `최대 세션 유지시간은 12시간`이다. - + 아무짓도 안하거나 또는 12시간이 지나면 알아서 세션이 끊긴다는 의미이다. - + ![세션종료](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-1.jpg) - - 세션이 끊기면? 작업중이던 데이터가 다 날라간다. - + 그럼 쓰면 안되는거 아냐? 소스코드는 .ipynd 확장자로 구글 드라이브에 안전하게 보관되므로 걱정할 필요없다. - + 다만, 딥러닝 학습시킬 데이터가 문제인데 구글 드라이브에 저장해 놓으면 된다. - - 물론 개인이 공짜로 쓰는 구글 계정의 최대 용량은 15G이다. 30G이상 저렴한 비용으로 쓸 수도 있다. - - 학생이라면 구글 GSuite 서비스로 구글 드라이브를 무제한으로 활용하는 것도 방법이다. - - 금융권 등 망분리 보안 이슈로 법적으로 클라우드에 데이터를 올릴수 없는 경우는 사내에서 활용하기 어렵다. - -* 보다 자세한 사항은 [Google Colaboratory 공식페이지](https://colab.research.google.com/notebooks/welcome.ipynb)를 참고하시기 바란다. - -자! 그럼 이 좋은것을 써 보기 위해 환경설정을 해보자. 위에서 말한대로 `5분`이면 끝난다. - - -## Colab 환경설정 ---- -구글 계정에 가입한 후 아래와 같이 진행한다. - -1. 에 접속 후, 우클릭하여 다음과 같이 `test` 폴더를 만든다. -![test폴더](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-2.jpg) -2. 좌측 상단의 [+새로만들기] 버튼 > 더보기 > `연결할 앱 더보기`를 선택한다. -![연결할 앱 더보기](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-3.jpg) -3. 새로 뜬 팝업의 우측 상단에 `colab`이라는 검색어를 입력하면 아래 그림과 같이 Google Colaboratory 앱이 등장한다. 검색어 바로 밑에있는 녹색 `연결하기` 버튼을 누른다. (필자의 경우 이미 연결했기 때문에 평가하기 버튼으로 보이고 있다.) -![연결하기](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-4.jpg) -4. 드라이브 메인화면으로 이동 > 톱니바퀴 모양 버튼 클릭 > `설정`을 클릭한다. -![설정](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-5.jpg) -5. 새로 뜬 팝업의 좌측 메뉴 앱관리 클릭 > Google Colaboratory 우측의 `기본값으로 사용` 체크박스 클릭 > `완료`를 클릭한다. -![기본값으로 사용](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-6.jpg) -6. 드라이브 메인화면으로 이동 > 우클릭 > 더보기 > `Google Colaboratory 클릭` -![Google Colaboratory](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-7.jpg) -7. 드디어 `.ipynb` 확장자 파일의 쥬피터 노트북이 등장했다. 파일이름을 클릭하여 test.ipynb로 이름을 변경하자. -8. 상단 메뉴의 도구 > `환경설정`을 클릭한다. -![환경설정](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-8.jpg) -9. 팝업이 등장한다. 원하는 테마를 선택 후, 체크박스들을 클릭한다. -![사이트탭](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-9.jpg) -10. (좌측) 편집기 탭 클릭 > 들여쓰기 `4`선택 > 체크박스 2개 체크 -![편집기탭](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-10.jpg) -11. (좌측) 기타 탭 클릭 > 원하는 설정을 적용 > `저장`을 클릭한다. -![기타탭](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-11.jpg) - * 참고로 파워레벨을 선택 시, 코딩마다 불꽃이 튀기는 재미가 있다. - * 아기고양이 모드를 선택 시, 코딩에 지칠 때 고양이들이 위에 튀어나와 근심(?)을 덜어준다. -12. 상단 메뉴 런타임 > 런타임 유형 변경을 클릭한다. -![런타임](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-12.jpg) -13. 런타임 유형은 `Python3`를, 가속기는 `GPU`를 선택 > `저장`을 클릭한다. -![런타임2](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-13.jpg) -14. 아래 그림과 같이 `연결` 버튼을 클릭한다. -![연결](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-14.jpg) - * 할당중.. > 연결중... > 초기화중.. 으로 텍스트가 변경되며, 최종 `RAM, 디스크 사용량 막대그래프`가 나올 것이다. -15. 아래와 같이 `[>]` 모양의 버튼을 클릭하면, `목차, 코드스니펫, 파일`등의 기능을 활용할 수 있다. -![팁1](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-15.jpg) -![팁2](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-16.jpg) - * 쥬피터 노트북 수천줄 코드 속에서 셀끼리 비교를 하느라 마우스 드래그에 지치신 적이 있으시다면 할렐루야!가 저절로 나올것이다. - * 위에서 설명했듯이 Markdown의 기능 또한 강력하다. 다음 다음 챕터에서 설명하겠다. - -자! 이것으로 Colab 환경설정은 끝났다. 너무 쉽지 않은가? 이제 간단한 예제를 작성해보자. - - -## Colab을 활용한 간단한 예제 작성 ---- - -먼저 필자의 [`Colab .ipynb 파일`](https://colab.research.google.com/drive/1VZlUA1K-sKj6ME__vqVEeoWfpyCJfKGQ) 링크를 클릭하여 접속해주시기 바란다. 아래와 같은 화면이 보일것이다. -![Colab테스트](https://theorydb.github.io/assets/img/dev/ml/2019-08-23-dev-ml-colab-17.jpg) - -이 파일은 Colab에서 필수적으로 사용하게 될 클라우드 원격서버 스펙 확인, 파일다루기, 구글드라이브 연동, 텐서플로우 및 케라스의 예제를 필자가 직접 테스트해 본 Colab 실습예제이므로 복사 또는 공유를 통해 반드시 따라하며 실습하시기 바란다. 10분 정도만 투자하면 전체 매커니즘을 파악하는데 어렵지 않게 될 것이다. 각 셀을 실행하는 방법은 `Ctrl+Enter` 단축키를 입력하시면 된다. - -목차를 활용하셔서 참고하시면 편리하며, 그림에 빨간동그라미로 가리킨 `[▼]`모양의 버튼을 클릭하시면 다른 문단의 셀이 자동 접기가 되므로 해당 Chapter에만 집중하여 보실 수 있다. - -아래에는 블로그 포스트 특성 상 간단한 예제 코드를 기술하였으며, 자세한 내용은 상단의 링크를 참고하시기 바란다. - -__* Colab 서버 스펙 확인__ -```python -from tensorflow.python.client import device_lib -device_lib.list_local_devices() -``` -```python -import platform -platform.platform() -``` - -아래의 코드는 한줄씩 셀에서 실행하기 바란다. 쥬피터 노트북의 셀은 출력결과가 여러개인 경우 맨 마지막의 OutputStream 결과가 남으므로 이전 출력결과를 확인할 수 없기 때문이다. 일반적인 .py파일 작성과는 다르게 .ipynb파일의 경우 가급적 하나의 셀에 많은 코드를 작성하지 않는것이 좋다. -```python -!cat /etc/issue.net -!cat /proc/meminfo -!cat /proc/cpuinfo -!df -h -!nvidia-smi -!python --version -!ls -``` -```python -from tensorflow.python.client import device_lib -device_lib.list_local_devices() -``` - -__* 파일처리__ - -```python -%%writefile test.py -print('hello world!') - -# test.py 실행시키기 -%run test.py - -from google.colab import files -# 브라우저에 다운로드 됨을 확인할 수 있다. -files.download('test.py') - -# [Cancel upload] 버튼을 클릭하여 잠시 멈춘 후 파일선택 버튼을 클릭하면 PC 내 파일을 선택할 수 있는 다이얼로그 창이 뜬다. -# 리턴값을 받는 변수인 myupload라는 이름의 디렉토리가 생성된다. -myupload = files.upload() -``` - -*__구글드라이브 연동__ -```python - -import os -print(os.getcwd()) -!ls - -# 실행시 등장하는 URL을 클릭하여 허용해주면 인증KEY가 나타난다. 복사하여 URL아래 빈칸에 붙여넣으면 마운트에 성공하게된다. -from google.colab import drive -drive.mount('./MyDrive') - -# 마운트된 내 드라이브를 확인해보자 -!ls - -# 해당 드라이브로 이동 -# 내 드라이브는 원격서버가 아니라 로컬서버로 간주하므로 명령어 실행시 앞단에 !를 붙이지 않는다. -cd MyDrive/My Drive - -# 내드라이브의 전체 목록이 나타난다. -ls - -# 특정파일을 가져오고 싶은 경우 다음과 같이 접근한다. -import pandas as pd -df = pd.read_csv("./MyDrive/test/test.csv") -``` - -텐서플로우 및 케라스 예제 실행은 코드가 긴 관계로 생략하며 상기 링크를 통해 확인하시기 바란다. - - -## Colab & Markdown ---- -예전 포스팅에서 이미 [마크다운(Markdown) 사용법 및 예제](https://theorydb.github.io/envops/2019/05/22/envops-blog-how-to-use-md/)를 자세히 소개한 바 있다. 이 장에서는 당시 다루지 않은 특히 Colab에 특화된 새로운 마크다운 작성방법 및 단축키에 대하여 설명하겠다. - -하단의 단축키는 매우 자주 사용되는 단축키이므로 반드시 숙지하시기 바란다. 마우스로 이동하며 일일이 버튼을 클릭하는 것은 노가다가 심해 불편하다. - - * 선택된 셀을 실행 : Ctrl + Enter - * 선택된 셀을 실행 후 다음 셀로 포커스 이동 : Shift + Enter - * 실행 후 다음줄로 이동 : Alt + Enter - * 선택모드에서 화살표 방향키 : 셀 포커스를 위 아래로 움직일 수 있음 - - * 엔터키 : 편집모드(Vi 편집기와 유사) - * ESC : 선택모드(Vi 편집기와 유사) - * 마크다운으로 전환 : Ctrl + M M - * 코드로 전환 : Ctrl + M Y - * 저장 : Ctrl + S - - * 코드셀에 줄번호 부여 : Ctrl + M L - * 바로 윗줄에 셀 생성 : Ctrl + M A - * 바로 아랫줄에 셀 생성 : Ctrl + M B - * 셀 삭제 : Ctrl + M D - - * 셀 `병합` : (shift를 누른 상태에서 병합을 원하는 셀들을 한번에 다중 선택 후), Shift + M - * 셀 `분할` : (분기를 원하는 부분에 커서를 지정 후), Ctrl + Shift + - - - * 코드가 오래 실행되어 멈추고 싶은경우 : `Ctrl+ M + I` - * 위 코드로도 멈추지 않고 작업을 완전종료하고 싶은 경우 : Ctrl+M+. - - - -이로써 Colab을 활용하여 머신러닝 및 딥러닝을 학습하기 위한 준비가 완료되었다. 다음 포스트에서는 캐글과의 연동 실습을 주제로 보다 심도있게 사용하는 방법을 다뤄보겠다. - diff --git a/_posts/2019-08-25-dev-ml-insight.markdown b/_posts/2019-08-25-dev-ml-insight.markdown deleted file mode 100644 index 5ef9ab37f..000000000 --- a/_posts/2019-08-25-dev-ml-insight.markdown +++ /dev/null @@ -1,105 +0,0 @@ ---- -layout: post -title: "[Data Science] 인사이트(Insight)! 다시 기본으로" -subtitle: "Insight, back to basics" -categories: dev -tags: ml data science insight analysis basics modeling practice -comments: true ---- - -## 개요 -> 본 포스팅은 시리즈로 계획되어 있으며, 인사이트와 기본의 중요성을 다시금 새기고 긴 여정의 출발에 대한 각오를 다지는 글입니다. 차후 EDA, CDA 등 데이터 분석을 통해 인사이트를 도출하고 모델링을 거쳐 예측 및 설명의 자동화에 이르기까지 전체 과정을 실무에 즉시 적용할 수 있도록 기술해 나갈 예정입니다. - -- 목차 - - [인사이트(Insight)! 다시 기본으로](#인사이트insight-다시-기본으로) - - [인사이트(Insight)](#인사이트insight) - - [너무 추상적인데.. 보다 구체적으로!](#너무-추상적인데-보다-구체적으로) - - [학사 vs 석박사](#학사-vs-석박사) - - [그리고, 프로그래머 vs 연구자](#그리고-프로그래머-vs-연구자) - - [인사이트(Insight)를 도출하기 위하여](#인사이트insight를-도출하기-위하여) - - -## 인사이트(Insight), 다시 기본으로 ---- -데이터 사이언스, 빅데이터 분석의 최종 목적은 `인사이트 도출`일 것이다. 우리는 인사이트를 도출해야 하는 분명한 목표를 가지고 있음에도 때로는 목표를 잃고 방황하여 모델의 파라미터 수치를 최적화하는데 집중하기도 하고, P, Z, T값 등을 분석하는데 혈안이 되기도 하며, DQN 등 새로 등장하는 기술을 수학적으로 해석하려고 하거나, Tensorflow, Keras 코드 구현에 집중하며 우리가 왜 이것을 만들고 있는지 망각하기도 한다. - -물론 이런 현상이 나 자신에게 부여된 임무가 데이터 엔지니어나 비지니스에 특화된 데이터 분석에 한정되어있다면 큰 문제가 없을지도 모르나, 데이터 분석 조직 전체에서 각 역할을 책임지는 구성원들이 한곳의 목표의식 즉, 인사이트를 구체적으로 이해하고 바라볼 수 있다면 조직이 발휘할 시너지와 역량이 더욱 커져 목표 이상의 성과를 내는데 큰 도움이 될 것이라 생각한다. 그렇기 때문에 그 어떤 분석기법과 수학적 모델링 구현을 넘어 가장 중요한 것은 기본기. 즉, 쉽고 구체적이고 정량화된 인사이트 도출일 것이다. - -이 글은 필자가 데이터 분석을 하는데 있어 - 분석 목적이 업(業)에 있든 사적인 목적에 있든간에 - 실무를 해결하기 위한 직접적인 방법론을 기술하고, 당초 수립한 목표(관심사)를 잊지않기 위한 반면교사로 삼고자 작성하는 글이다. - -## 인사이트(Insight) ---- -인사이트.. 만능 키워드이다. 단어만 언급해도 차도남이 된 것 같고 뭔가 멋있어진 느낌이다. 중요한 것도 알겠고 이게 우리의 목표인 것 또한 알겠는데, 도대체 어떻게 얻을 수 있을지 생각하기 시작한 그 순간부터 왠지 부담되고 별로 친해지고 싶지 않은 마음이 든다. - -인사이트를 사전에서 찾아보면 "통찰력"이라고 번역되며, 통찰력은 "사물을 통찰하는 능력"이라고 표기되어 있다. 하여 필자는 `특정 분야에 대하여 전체 현상을 이해하는 능력으로 가장 효율적인 방식을 판단할 수 있음은 물론 미래 예측에 도움이 되는 능력`이라고 스스로 정의하고 있다. - -이를 조금 더 구체적으로 빅데이터 분야와 연관지어 본다면 인사이트가 도출될 경우, 전부에 가까운 데이터에 존재하는 패턴을 인식할 수 있기에 향후 의사결정의 방향을 정하는데 결정적인 역할을 담당하게 될 것이라 생각한다. 구성원들이 숲을 보지 못하고 나무만 바라볼 때 우물안에서 개구리를 꺼내주는 역할을 담당할 것이다. - -## 너무 추상적인데.. 보다 구체적으로! ---- -구체적인 예시를 통해 데이터 분석에 쓰이는 인사이트의 개념을 익혀보자. -``` - "10일 이내 친구 7명을 사귄 사용자는 서비스를 오래 이용한다." -``` -Facebook의 인사이트이다. - -세계 트렌드를 이끄는 실리콘밸리 굴지의 기업, 그리고 거창하고 멋있는 인사이트라는 단어와는 사뭇 다르게 뭔가 조촐하지 않은가? 초딩도 이해하기 아주 쉬운 문장이므로 약간의 의구심이 든다. - -하지만 의외로 유용한 인사이트는 굉장히 심플하다. 그래서 모든 구성원들이 목표를 정확하게 이해할 수 있게된다. 덕분에 구체적으로 컨트롤하고 싶은 관심사를 분명히 인지할 수 있다. - -위의 인사이트가 발견되기까지 Funnel Model 등을 통해 페이스북 결제페이지 도달까지의 유입 경로를 사용자 관점에서 분석하였을 것이다. 더불어 10일, 7명과 같은 구체적화 된 숫자에(정량화, 계량화 되었다고 한다.) 주목해보자. 구체적인 수치가 나오기까지 얼마나 많은 데이터가 전처리되고 시각화 되었을지 생각한다면 데이터분석의 실제가 어느정도 보일것이다. - -페이스북의 인사이트를 바라보며 사실 우리가 실무에서 맞닥드리게 될 대부분의 전투는 머신러닝 알고리즘을 어떻게 사용할까도 아니고, 수리통계학을 이용해서 데이터 특성을 반영한 멋진 수식과 모델을 세우는 것도 아니라는 것이다. 오히려 완벽주의 또는 범죄를 수사하는 탐정에 가까울 정도로 수집된 데이터의 측정시기와 배경조사, 본질파악, 오류가능성, Feature 엔지니어링, 전처리 등 디테일과의 싸움의 연속과 맞닥드리게 될 것이다. -![전처리](https://theorydb.github.io/assets/img/dev/ml/2019-08-25-dev-ml-insight-1.jpg) - - -## 학사 vs 석박사 -데이터 사이언스 분야의 커리어로 전환하고 싶다는 마음에 관련 채용시장을 조사해보았다. 최근 몇년간 재미있는 구인구직 트렌드 변화를 몇 가지 발견하였는데 최소 석사 이상을 선호한다는 것, 프로그래머 중심의 채용에서 연구자 중심의 채용, 마지막으로 정작 인재들은 그토록 핫한 데이터 사이언티스트의 시장을 걷어차고 보다 딥러닝의 세상으로 도망(?)가는 느낌이 들었다는 것이다. (~~어디까지나 필자의 주관적인 생각이다.~~) - -이런 현상이 시사하는 바가 무엇인지 나의 상황과 비추어 고민을 해보았다. 적어도 필자와 같이 20년 전 대학을 다니고 학사를 끝으로 취업전선에 뛰어든 사람이라면, 대학원이란 그저 지식의 양과 수준을 조금 더 높이고 인맥 좀 늘리고 커리어 스펙을 한단계 올리는 수단 정도로 생각하기 쉬울 것이다. 필자 역시 마찬가지였다. - -필자가 뒤늦게 대학원에 진학하고 싶어 알아본 바 지식의 양이 늘어나는 것은 연구의 최종 목적이 아니라는 것. 지식의 양은 과정일 뿐 최종 목적은 세상에 없었던 지식의 영역을 본인이 최초로 개척해 나간다는 데 있다는 것이다. 인맥이니 커리어니 이런 것들은 사실 다 과정에서 부수적으로 얻는 것이지, 본질이 아니므로 이를 대학원의 목적으로 삼고 진학한다면 좋은 결과를 맞이하긴 힘들겠다는 생각이 들었다. (이때 깨달은 것이 많아 추후 별도 포스팅으로 정리해보겠다.) - -대학원과 데이터 분석의 공통점이 있다면 그동안 존재하지 않았던 지식을, 방법론을, 인사이트를 얻어가는 과정이라는 것이다. 그저 미적분 빨리 풀 수 있고 프로그래밍 코드를 빠르게 구현하며 또는 두꺼운 서적을 암기하는 과정이 아니라는 것이다. 즉, 남이 개척해놓은 길을 따라가는 것이 아닌, 남의 개척한 길을 이용해서 새로운 길을 개척하는 것이 이 업(業)의 본질이라는 결론을 얻었다. - -그런데 새로운 길을 개척해 나가는 과정이 그저 암기와 단편적인 지식의 결합으로 가능할까? 학사라면 그 정도면 충분했겠지만 석사, 박사의 경우는 완전 다른 방식의 사고가 훈련되어야 할 것이다. - -최소 2년 ~ 5년 혹은 그 이상의 오랜시간을 데이터를 직접 특정 수집하며 그 안에 숨은 여러 속성 그리고 상황별로 달라질 수 있는 뉘앙스를 느끼고 변인 통제에 관련하여 시행착오를 여러번 반복하며, 데이터를 느낄 줄 아는 일종의 Sixth sense가 생겼을 것이다. 더불어 통계학 혹은 유사기법을 통해 가설을 세우고 실험을 반복하며 검증, 요약하는 과정을 수없이 반복하며 수많은 고민을 뚫고 사색하여 마침내 학위를 취득하며 연구 능력이 무쇠와 같이 단련되지 않았을까? -![Ph.D.의미](http://academiclifehistories.weebly.com/uploads/9/9/3/4/99343332/published/the-illustrated-guide-to-a-phd1.jpg?1530628082) -※출처 : [PhD pitfalls: Part I – The reality of your contribution](http://academiclifehistories.weebly.com/blog/phd-pitfalls-part-i-the-reality-of-your-contribution) - -그 똑똑한 사람들이 수년동안 고민하며 사색해 온 과정을 학사 출신들이 퇴근하고 몇개월 공부하고 고민한다고 쫓아갈 수 있는 것일까? 이런 이유로 필자는 대학원의 필요성을 느끼고 진실되게 고민을 하게 되었다. 위에서 언급했던 채용 트렌드가 최소 석사 이상으로 이동하는 것, 프로그래머에서 연구자 중심으로 이동한다는 것은 어쩌면 같은 이유이지 않을까? - - -## 그리고, 프로그래머 vs 연구자 -아마도 기본 연구능력이 없는 상태에서는 데이터 사이언스 프로젝트 수행 시 구성원 간 의사소통 능력이 떨어지고 - 필자 생각으로는 논문을 중심으로 하는 연구 중심의 의사소통 방식은 일종의 별도 언어라고 생각하고 있으며, 한국어나 영어 보다도 더 중요한 인생에서 배워야 할 가장 중요한 언어라고 생각한다. 부끄럽게도 그걸 깨달은 지 5년이 채 안되었다. - 기본적인 통계 및 수학적 지식이 없는 상태에서 새로운 모델을 세우는 것이 가능할까? 프로그래머는 알고리즘 중심으로 데이터 속성의 위대함과 디테일을 경시할 것이고, 연구자들은 프로그래밍 스킬은 본질이 아니라는 것을 강조하다가 계층간 갈등이 생길 우려도 있다. - -결코 학사출신 프로그래머 분들을 비하하는 것은 아니다. 그냥 정황을 파악해보며 주관적으로 판단해 본 상상일 뿐이다. 필자 역시 학사 출신 프로그래머이기 때문이다. 스스로 누워서 침 뱉기 하고 싶지는 않다. - -하지만 우리 같은 출신들도 데이터 사이언스가 되기 위해 위에서 열거한 데이터의 뉘앙스를 이해하는 능력을 실무에서 키워왔고, 개인 시간을 쪼개어 열심히 수리 통계학을 익혀왔으며, 논문과 연구중심의 의사소통을 위한 스터디를 진행해왔다면... - -그동안 우리가 닦아 온 수십년간의 백전노장으로서의 프로젝트의 현실과 실제에 대한 현장감각, 프레임워크 및 패턴의 설계/활용 능력, 수많은 계층과 갈등을 겪으며 발전해 온 의사소통 능력, 프로젝트를 효율적으로 완성시킬 수 있는 프로그래밍 스킬 등을 활용해 더 뛰어난 데이터 사이언티스트가 될 수 있을 것이라 생각한다. - -못해도 안드레이 카패시가 작성한 [ 스프트웨어 2.0 ](https://gist.github.com/haje01/d2518ea998ab2de102b072fed600c0a4) 같은 멋진 세계에서 활동하는 인재는 되지 않을까? - -## 인사이트(Insight)를 도출하기 위하여 -데이터 사이언티스들이 시장을 걷어차고 AI, 딥러닝 분야로 이직이 발생하는 이유 또한 독특한 현상이라고 생각한다. 아마도 데이터가 가진 속성이 너무 다양하고, 적용되는 업무 도메인 분야 또한 다양하며, 데이터 측정 당시 발생하는 본질의 다양성과 사람과의 커뮤니케이션 관계가 한몫하지 않았을까? - -딥러닝은 확실히 모델이 이해하기 쉬운 이미 가공된 데이터를 수집하여 활용하며 때문에 영상, 음성인식, NLP 등 한정된 분야에 좋은 성능을 발휘한다. 즉, 위에서 언급한 소프트웨어 2.0과 같은 개념의 프로그래밍 환경이 구성되어있다. 보다 높은 소득을 얻기 쉬운 가시적인 성과를 내기에 투입한 노력 대비 효과가 분명하다. - -다시 데이터 분석 본연의 관점으로 돌아와 보자. 훌륭한 데이터 사이언티스트라면 프로젝트를 효율적으로 실행가능하게 만드는 설계능력과 프로그래밍 스킬은 물론 위에서 언급한 데이터의 뉘앙스를 읽을 줄 알고 연구중심의 의사소통능력을 갖춰야 한다. - -그런점에서 `가설 > 실험 > 검증,분석,요약`으로 이어지는 통계 분석적 접근 방법이 필요하다. 그런데 현실은 가설 하나 건지기도 녹록지 않다. - -오히려 일반적인 사업도입 관점으로 접근하여 빅데이터를 도입하겠다는 명분아래 하둡, 스파크, NoSQL, 클라우드 등 인프라 도입을 먼저 추진하며 소득없는 비용을 지출하는 경우가 허다하며, 도입 후에도 업무만 늘어나고 의미있는 인사이트는 발견이 안된다. - -__왜 그럴까?__ - -이유는 간단하다. 관심있는 목표를 명확히 하지 않았기 때문이다. 관심사를 명확히 설정하고 구체적으로 정량화하여 측정가능한 가설을 세웠어야 하고 그러기 위해 조직 내 심도깊은 고민과 인터뷰, 브레인 스토밍 과정이 생략되었기 때문이다. - -심도있는 고민끝에 관심사를 끄집어내고 이를 설명할 수 있거나(즉, 컨트롤하여 향상시킬 수 있는) 예측할 수 있는 수백개 이상의 가설을 모은 후 다음 단계에서 기술할 EDA 과정을 통해 가설을 분석할 만한 가치가 있는지? 데이터는 보유하고 있는지? 보유한 데이터는 정말 우리가 알고 원하는 데이터인지? 등을 확인해가며 최종 의미있는 가설을 채택할 수 있게 될 것이다. - -인사이트는 그렇게 디테일한 진흙탕에서 구르며 진주를 찾는 과정이다. 단어의 뉘앙스처럼 그저 깔끔한 양복입고 하늘을 바라보고 드라마 한편 찍다 생기는 것이 아니다. - -진정한 인사이트를 얻기 위해 우리는 관심사(목표)가 무엇인지를 명확히 하는것을 시작으로 위에서 언급한 단계를 가급적 모든 구성원이 모든 아이디어(그것이 옳던 그르던)를 총동원하여 꽤 오랜 시간 고민해야 할 것이다. - diff --git a/_posts/2019-08-27-dev-papertomath-paper-io.markdown b/_posts/2019-08-27-dev-papertomath-paper-io.markdown deleted file mode 100644 index 90ec01dd6..000000000 --- a/_posts/2019-08-27-dev-papertomath-paper-io.markdown +++ /dev/null @@ -1,367 +0,0 @@ ---- -layout: post -title: "[Paper] 논문 읽는법, 쓰는법, 투고하는법" -subtitle: "Insight, back to basics" -categories: dev -tags: papertomath data science insight analysis basics modeling practice -comments: true ---- - -## 개요 -> 논문과 연구에 거리가 멀어진 셀러던트 직장인이 저처럼 `늦깍이 나이에 연구에 철이 들어 논문에 관심이 많아지셨다면` 본 포스팅을 꼭 읽어주세요. 학사출신 실무자가 논문을 잙읽고, 잘쓰고, 잘투고할 수 있도록 보고 배운 노하우를 공유합니다. - -- 목차 - - [논문. 연구. 늦었지만 하지 않을 수 없는...](#논문-연구-늦었지만-하지-않을-수-없는) - - [논문을 잘 읽는 방법](#논문을-잘-읽는-방법) - - [논문과 관련된 유용한 필수지식](#논문과-관련된-유용한-필수지식) - - [논문을 잘 쓰는 방법](#논문을-잘-쓰는-방법) - - [논문 투고와 심사](#논문-투고와-심사) - - [논문의 인용수와 질적관리](#논문의-인용수와-질적관리) - - [논문과 영어](#논문과-영어) - -- (참고) 내용이 상당히 깁니다. 즐겨찾기를 원하실 경우 목차를 클릭 시 변경되는 URL로 관심 위치까지 같이 저장하시기 바랍니다. - -## 논문. 연구. 늦었지만 하지 않을 수 없는... ---- -필자는 연구자도 아니고 석.박사 학위보유자도 아닌 그저 약 10여년간 실무에 몸담아온 직장인으로 학사출신 프로그래머라는 점을 먼저 밝혀둔다. 그런 사람이 왜 논문에 관심이 있는지, 아니 이런글을 쓸 자격이 있는건지 물으실 수도 있겠다. 부끄럽지만 굳이 하나의 자격을 찾자면 `필자처럼 연구에 늦게 철이 든 사람을 위해` 조금이나마 도움이되지 않을까하는 기대 정도다. - -다행인 것은 세월이 흐르다보니 나이를 먹었고 덕분에 주위에 아는 연구자분들이 점점 늘어나게 되었다. 그 분들의 조언 그리고 인터넷을 통해 다양한 분들이 각자의 노하우와 견해를 공유해주시는 바 이구동성의 중요한 조언을 모아 본 포스트를 정리하였다. - -데이터 사이언티스트에 관심이 있는 필자에게 논문이란 단순히 관련 직군의 최신 기술을 얻기 위한 정보로서의 가치 뿐만 아니라, 세상에 쌓여온 지식과 실험을 바탕으로 유의미한 인사이트를 얻기 위한 아이디어를 얻는 과정을 위한 스킬을 얻을 수 있다는 점에서 반드시 짚고 넘어가야 하는 산이다. - -더불어 필자가 논문에 큰 의미를 부여하는 이유는 일종의 세상을 발전시키데 가장 효율적인 의사소통 수단으로서의 기능 때문이다. 세상 지식에 경계선이 있다면 그리고 그 최전선을 확장시키는 것에 인생의 보람을 느끼는 분이라면 논문과 연구의 중요성은 두말할 나위없다. 보다 자세한 의미는 이미 충분히 표현한 바 [인사이트(Insight)! 다시 기본으로](https://theorydb.github.io/dev/2019/08/25/dev-ml-insight/) 포스팅으로 갈음한다. -![Ph.D.의미](http://academiclifehistories.weebly.com/uploads/9/9/3/4/99343332/published/the-illustrated-guide-to-a-phd1.jpg?1530628082) -※출처 : [PhD pitfalls: Part I – The reality of your contribution](http://academiclifehistories.weebly.com/blog/phd-pitfalls-part-i-the-reality-of-your-contribution) - -이제야 겨우 인생에 목표라는 것이 생겼는데 그러기 위해 대학원을 다녀야 하는데 그러려면 돈을 벌어오기는 커녕 되려 돈을 써야한다. 처자식을 먹여살려야 하는 현실속에서 퇴근 후 시간과 주말에 매진할 수 밖에없는 필자와 비슷한 늦깍이 셀러던트 분들께 조금이나마 보탬이 되었으면 좋겠다. - -논문을 읽고 쓰는 과정은 꾸준히 노력하고 매진하면 언젠가 기회는 온다는 점에 의미를 두고싶다. 비슷한 처지에서(실은 훨씬 더 가혹한) 본인이 가고 싶은 길을 꿋꿋히 달려오신 [경희대학교 동서의학대학원 박은정 교수님의 일화](https://post.naver.com/viewer/postView.nhn?volumeNo=21735819&memberNo=6687676)는 필자에게도 큰 힘이 된다. 인생의 목적이 분명 부와 명예만은 아니므로 가고싶은 길이 생겼으면 열심히 걸어가보려한다. - -육아와 가족들의 간병으로 20여년의 시간을 뒤로 한 경력 단절 아줌마께서 클래리베이트 애널리틱스(구 톰슨 로이터)가 선정한 연구성과 세계 상위 1% 연구자(HCR)에 2번이나 오르시고 ‘지식창조대상 장관상’을 수상하셨으며 유명대학 정교수에 이르기까지의 멋진 과정을 읽으며 용기를 얻으셨으면 한다. 그 외 연구실 셋방살이, 한국연구재단의 ‘대통령 포스트닥 펠로우십’ 등의 일화를 통해 힘없는 아웃사이더가 연구계의 인싸가 되기 위한 노하우들도 얻을 수 있을것이다. - - - -## 논문을 잘 읽는 방법 ---- -세상에 읽어야 할 논문은 정말 많다. 어떻게 읽어야 빠르고 정확하게 이해할 수 있을까? 역지사지(易地思之)라 했다. 가장 확실한 방법은 직접 당사자가 되어봐야 한다. 즉, 논문을 쓰고 심사하는 `저자와 심사자` 입장이 되어보는 것이다. 여기에선 모든 학문범위를 다룰 수 없는 관계로 필자가 관심있는 머신러닝 분야를 사례로 다뤄본다. - -* __1. 저자에게서 얻는 착안__ - 저자 입장에서 생각해보자. 내가 논문 저자라면 `연구성과를 명확히 표현함은 물론 심사과정에서 Accept를 얻어내기 위해 최대한 가독성있게 요약 전달하는` 부분을 작성하게 될 것 같다. 독자는 그 부분 먼저 읽어야 하지 않을까? 정리하는 과정에서 Andrew Ng 교수의 조언이 많은 도움이 된다. 저자의 시각과 더불어 도움이 될 사항을 아래와 같이 정리해보았다. [앤드류응 - 스탠포트 CS 230 강의](https://youtu.be/733m6qBH-jI)을 참고하시기 바란다. - - + `Review 논문` - - Review 논문이란 관련 연구분야를 집대성하여 요약한 논문으로 교과서 반영 직전 단계라 말할 수 있을 정도로 연구성과가 잘 정리되어있다. - - 즉, 관심있는 연구분야가 생겼다면 먼저 Review 논문을 파악함으로써 연구분야에 대한 논문 간 관계도 및 목차를 구성할 수 있게된다. - - Nature지의 경우 최근 핫토픽을 정리하는 형태로 자주 올라온다. - - 참고로, Article은 좀 더 자세한 최신 연구를 다루며, Letter는 좀 더 양이 적은 최신연구를 다룬다. - + 논문의 목록을 정리 : Review 논문을 통해 읽어야 할 논문 목록을 수집한다. - + 취사선택 : 목록에서 자세히 읽을 논문과 버릴 논문을 선정한다. - + 수집한 논문별로 `초록(abstract), 도표(figures)를 먼저` 읽는다. - - 기본적인 컨셉과 아이디어를 기술하여 전체 맥락을 잡을 수 있다. - + 다음으로 `도입(introduction), 결론(conclusion), 도표(figures)`를 읽는다. - - 왜 자신의 논문이 게재 승인되어야 하는지 명확히 설명하기 위해 신중하게 요약한 핵심정수가 담겨있다. - + 잘 읽었는지 확인하기 `Check-List` - - 저자가 뭘 해내고 싶어했는가? - - 이 연구의 접근에서 중요한 요소는 무엇인가? - - 스스로 이 논문을 이용할 수 있는가? - - 참고하고 싶은 다른 레퍼런스에는 어떤 것이 있는가? - + 추천하는 리딩 습관 - - 읽는데 걸리는 시간 : 관련 연구자 기준 보통 1-3시간 - - 한 주에 2개씩 꾸준히 - - 알고리즘 : 수식을 직접 쓰면서 이해하고 밑바닥부터 코드로 구현 - - 수식 : 직접 손으로 연산 - + 논문 정독횟수에 따른 ML/DL 지식수준 - - 5 ~ 20개 : ML/DL 시스템을 적용할 지식은 갖추었지만 최신의 기술을 이해하기에는 부족하다. - - 50 ~ 100개 : 해당 분야에 대해 자세히 알고 있다. - + 스터디/커리어의 방향 - - 배울 수 있는 팀으로 : 성장에 도움이 된다. - - 좋은 프로젝트(직장) 선정 : 세상을 발전시킬 수 있는 가치있는 프로젝트 - - ML/DL을 다른 산업에 적용 : 헬스케어, 천문학, 기후 등 - + 추천 커뮤니티 Site - - [ML subreddit](https://www.reddit.com/r/MachineLearning/) - - ML/DL 컨퍼런스 : [NIPS](https://nips.cc/) / [ICML](https://icml.cc/) / [ICLR](https://iclr.cc/) - - -* __2. 심사자에게서 얻는 착안__ - 이번에는 심사자의 입장에서 생각해보자. 각 저널에는 논문 심사를 위해 저명한 교수님들로 구성된 Reviewer Pool이 있다. 명망이 높고 활동도 활발한 분들인지라 대부분 일반인들보다 24시간의 밀도가 꽤나 짙을 것이다. 따라서 심사에 많은 시간을 할애하길 원치는 않을 것이다. 즉, `그분들은 그동안의 연구 경험을 바탕으로 한 빠른 Accept/Reject 선별 기술`이 있을것이다. 이를 바탕으로 심사자의 입장이 되어 그 분들의 눈이 되어보자. - - + Cover Letter 및 Abstract - `본 연구는 기존 연구와 이런점에서 다르다. 이와 같은 새로운 사실 또는 개선점을 밝힌다.` - 위와 같은 형식이 없다면 Reject 가능성이 커진다. 논문을 위한 논문일 수 있다고 선입견을 가지게 되는 것이다. 우리는 이런 형식으로 언급된 부분을 먼저읽어 양질의 논문인지, 원하는 내용이 있는지 미리 가늠해봐야 한다. - - 심사기준으로는 크게 독창성(Originality), 참신성(Novelty), 혁식적(Innovative) 3가지 기준이 중요한데 비록 기존에 잘 알려진 사실일지라도 해석이나 분석의 방법을 새롭게 하여 차별화된 설명, 혹은 결론으로 이끌 수 있다면 Accept되는 경우도 있다. 다만 이런 유형은 충분히 의미는 있겠지만 공부하는 우리 입장에서는 일단 차순위로 미뤄두는 것이 옳다고 본다. - - + Introduction - 이 부분은 연구배경, 목적, 필요성, `기존 연구와의 차별성`이 보다 자세히 강조된다. 참고문헌의 약90 %가 참조되는 영역이므로 `참고문헌의 갯수가 적은 논문`은 사전조사가 부실하게 여겨질 가능성이 크다. - - + Clarivate Analytics(구 톰슨 로이터)의 저널 평가지표 - 지금까지 논문 평가에 대한 혜안을 빌려왔다면 저널에 대한 평가를 알아보고 싶을때 저널 평가지표가 도움이 된다. - - 저널의 IMPACT FACTOR(인용률), Rejection Rate 등의 수치 - - 저자들의 국제성, 즉 여러 국가와 기관에서의 투고율 - - + 기타 - 심사자도 사람이므로 논문을 바라보는 시각과 기준, 각자의 논리 성향이 다양할 수 있음을 염두에 두어야 한다. 저널에 실렸다고 완벽하다고 반드시 읽어야 한다고 판단하는 우에서 벗어날 수 있고, 더불어 작성시에는 충분히 참신하고 자신 있음에도 Reject될 경우 다른 저널에 게재하는 등의 방법을 시도할 필요가 있다. - -이와 같이 작성자와 심사자의 입장이 되어 논문을 읽는다면, 입체적으로 비판적인 시각으로 보다 빠른 이해에 도움이 될 것이다. - - -## 논문과 관련된 유용한 필수지식 ---- -먼저 논문 및 그 Eco환경에 대해 전혀 모르는 분들은 반드시 본 파트에 정리한 사항들을 먼저 읽어주시기 바란다. 그동안 궁금했던 것들이 한번에 뚫릴것이다. - -* __1. 논문의 `구성요소`__ - 논문을 이루는 큰 구성요소들을 친숙한 말투로 정리해보았다. - - Title : 우리가 한게 뭐다 - - Author : 누가썼다 + 저자의 소속 기관 - - Abstract : - + 요약 : 본 연구는 기존 연구와 이런점에서 다르다. 이와 같은 새로운 사실 또는 개선점을 밝힌다. - + 판매를 위한 광고용으로도 쓰일 수 있기 때문에 독립된 글로 봐야 한다. - - Introduction : - + 우리가 한게 뭐다. - + 왜 중요하냐면, 본 연구는 기존 연구와 이런점에서 다르다. 이와 같은 새로운 사실 또는 개선점을 밝힌다. - + 참고문헌을 보면 과거에 어떤 사람들이 이런 시도를 했으나, 이 부분이 부족해서 어떤 아이디어를 가지고 어떤 실험을 했다. - - Result&Discussion : "실험결과에 대한 논의 후 이런 결과가 나왔다" 반복 - - Conclusion : - + 우리가 이런 결론을 얻었다. 미래에는 뭐가 중요하겠다. - + 이 기술이 기존과 어떻게 다르고 어떤 장단점이 있다. 주로 이런 의미이고 이게 왜 중요하다. - - Method : 논문에 활용한 실험 방법, 테크닉 - + ex) 내가 세포를 어떻게 키웠는지, 어떤 수식으로 분석했는지, 어떤 장비로 측정했는지... 등 - - Acknowledgements : - + 연구비 누구한테 받고, 누가 도와줬고, 저자 중에 누구는 특허권자다 - + 저자 중에 누구는 연구비를 받고있다 명시(공정성을 위해) - - References : 타 논문 인용 명시, 과거 언급, 기술 - -* __2. 논문 및 저널의 `등급`__ - 일반적으로 우수한 논문을 판단하는 기준은 `IF가 높은 저널에 등재`되었는지 여부와 `피인용횟수가 높은 논문`(일반적으로 2-3년은 지나야 쌓임)이라 할 수 있겠다. 일반적으로 인식되는 저널의 등급을 알아보자. - - 1. NCS(Nature, Cell, Science) - - N,S는 대중적 과학전문잡지(짧은논문) - - C는 전문학술지(의학분야, 전문(全文)) - 2. SCI(Science Citation Index, 과학인용색인), SSCI(Social Sciences Citation Index, 사회과학분야), AHIC(Arts&Humanities Citation Index, 인문예술분야) - - 역사가 더 깊고 개발도상국 등 IT인프라 열악한 국가의 접근성을 위해 유지되고 있음 - 3. SCIE(Scienece Citation Index Expanded) - - Journal information 매체형태 : SCI는 CD/DVD ↔ SCIE는 on-line - 4. SCOPUS - - 네덜란드 엘스비어(Elsevier) 출판사의 학술연구논문 인용 데이터베이스, 전세계 5천여개 출판사의 21,000여 종 저널타이틀 수록 - - 비영어권 모국어도 등재 기회를 줌 - - 제목, 저자, 요약, 키워드, 그림, 테이블, 참고문헌은 영어로 기재(인용문제) - 5. KCI(Korean Citation Index, 한국연구재단등재지) - - 국내 우수논문의 해외유출 및 우리말 품격 유지를 위한 한국형 인용색인 DB 및 인용지수 개발, 운영 - - 대학원생들이 본격적으로 해외저널에 논문을 투고하기 전에 논문투고의 경험을 쌓기 위한 연습용으로 전락했다는 비판도 있다. - 6. KCI Nominated(등재후보지) - 7. 학술지 - - 국내에서 1인당 논문수를 계량화하여 인정함에 따라 논문의 양이 중요해지면서 다양한 학술지가 등장함 - - 등급제 영향으로 군소학회, 대학 연구소까지 등재학술지를 발행함 - - 연구업적 평가에서 좋은 점수를 받기 때문에 논문게재를 편하게, 쉽게하기 위한 편법으로 활용되는 단점이 있다. - 8. 어떤 저널에 투고해야 할까? - - 저널 홈페이지 Author’s Guide를 반드시 확인 : 저널이 취급하는 연구분야의 주제인 Scope이 다름. - - Scope에 포함되어있지 않다면 Scope에서 기술된 주제와 어떤 연관이라도 있는 주제임을 억지로라도 이끌어 내야함. - - Cover Letter에 반드시 적어야 하는 내용이기 때문 - - Cover Letter와 투고논문의 Abstract 및 Keywords를 보고 판단하는 것이 일반적 - -* __3. `교원`이 되고 싶다면__ - + 공동저자는 큰 의미가 없음 - - 배점, 가중치가 낮음 - - 정성적으로도 심사자들에게 좋은 인식을 주지 못함 - - SCI, SCIE급 단독저자 2~3편 가지고 있는 경쟁자에게 밀리기 쉬움 - + 제1저자(First Author), 아니면 교신저자(Corresponding Author)로서의 논문이 많아야 함 - - 과정 중 학생은 교신저자는 거의 100 % 지도교수이므로 제1저자 논문이 많아야 함 - + 논문과 관련된 교수님의 역할 - - Advise, Supervise, 제1저자, 교신저자, 공동저자 - + Thomson Reuters의 Journal Citation Reports(JCR) 상위 10% ~ 20% 논문은 가산점이 부여되는 추세 - + 인력, 연구장비, 실험장비, 환경은 핑계일 뿐 - - 없으면 없는 대로 아이디어로 승부를 봐야 함 - + Review Article, Book Chapter, Letter to Editor 등은 연구업적에 포함되지 않는 경우가 있음 - - Original Research Article 위주로 인정되는 분위기 - + 박사 후 포닥 및 정출연 등에서 연구과정을 거침 - - 보통 3년 ~ 5년 간 대학에서 포닥이나 정출연 등에서 연구과정을 거침 - - 3년 ~ 4년 내 SCI, SCIE급 저널논문 10편 정도는 투고하기도 함 - + 초빙에 대한 현실적인 비판 - - 인맥, 학벌 문제로 서류심사 시 전공적합도라는 편리한 항목으로 걸러지기 쉬움 - - 면접도 마찬가지로 나이, 인성, 발전성 등의 주관적 항목에 의해 걸러질 수 있음 - - 명문 일부의 대학을 제외하고는 논문인용수를 많이 따지지 않는 편 - - 극소수 대학들은 일정기간(보통 최근의 2년 ~ 3년)동안 연구업적 외에 발표기간에 관계없이 대표논문을 요구하기도 함 - * 발표논문수도 중요하지만 발표논문의 질도 평가하다는 의미 - + 임용 후 현실에 대한 비판 - - 학생지도, 과제수주, 연구비 비용처리, 서류작성, 행정업무, 학내 파워게임(흔히들 안하면 바보가 된다고 표현) - - 외부강연, TV출연, 보직(장.차관, 정출연기관장 등)관련 공부 내지는 연구할 시간이 없다. - - 상대보다 더 잘해서 이기는 것보다는, 깍아내려서 동등한 수준으로 만드는 것이 더 쉬운 잔혹한 현실 - - -## 논문을 잘 쓰는 방법 ---- -논문의 정의를 사전에서 찾아보면 `연구과정을 과학적인 방법에 따라 전개한 체계적인 글`임을 알 수 있다. 먼저 논문의 작성 절차를 정리한 후, 잘 쓰기 위한 Tip을 정리해본다. - -* __논문 `작성절차`__ - 1. 무엇을 연구할 것인가? - 2. 참고문헌의 고찰 - - 부실한 검토를 피할것 : 유사논문이 되거나 의도치 않은 표절이 발생할 수 있음 - - 독창성(Originality), 참신성(Novelty), 혁신적(Innovative)이 필요 - - 가독성, 재현성, 정확성, 검증성이 갖춰져야 함 - 3. 타당한 문제 해결방법 구상 - 4. (객관성 입증을 위한) 실험 혹은 이론적 해석 - 5. 문제해결 및 결과도출 - 6. 고찰 및 요약 - -* __`좋은 논문`을 작성하기 위한 Tip__ - 1. 기존 연구와의 차별성 - - 독창성(Originality), 참신성(Novelty), 혁식적(Innovative) 중 하나만 만족해도 SCI급 - - 기존 연구에서 부족한 부분 혹은 간과되었던 부분을 새롭게 조명한다거나 틀린 부분을 밝힐 수 있어야 함 - - 변수를 바꾸거나 새로운 시각으로 접근하여 “참신”하거나, “어!! 이렇게도 해석할 수도 있네..”라고 느낄 수 있어야 함 - 2. 접근방식에 대한 사고 - - 방법1 : 예상 > 확인을 위한 실험 > 얻어진 결과를 바탕으로 논문 작성 - - 방법2 : 아이디어로 초안작성 > 결론, 참고문헌까지 먼저 작성 > Results and Discussion(Verification) 채우기 - - ex) “왜 지금까지 발표된 방정식은 유체역학의 정수력학(Hydrostatic theory)에서 시작하지?", "열역학의 이상기체 상태방정식(Equation of the Ideal Gas Law)으로도 충분히 유도할 수 있을 것 같은데...” - 3. 시각화와 가독성을 위한 배려 - - 포맷(Format)을 반드시 확인 - + SCI/SCIE급에 포함된 논문집의 경우에는 자체 논문양식을 제공하므로 양식에 맞춰 작성 - + Elsevier이나 Springer 계열의 경우에는 논문양식을 제공하지는 않지만 논문의 작성순서, 그림, 테이블, 참고문헌, 글씨체의 크기 및 종류, 단락의 칸 등 형식에 대한 작성법을 지정하고 있기 때문에 요구하는 양식을 맞추어 투고해야 함 - - Excel Graph 등 저품질의 시각화는 지양하고 높은 해상도를 유지할 것 - - 수식이 길어져 생략하는 경우 투고시 Supplement로 따로 보내면 논문심사자에게 호감을 줄 수 있다. - 4. 기타 알베르트 아인슈타인의 조언 - - 지금까지의 누군가 해왔던 동일한 생각으로 접근하면, 어떤 해결 방법도 찾을 수 없다. - - 모두가 비슷한 생각을 한다는 것은, 아무도 생각하고 있지 않다는 말이다. - > When all think alike, no one thinks very much. - -* __`Rejection`을 피하기 위하여__ - - Peer Reviewer는 전문가이므로 본인이 이미 다 알고 있는 것들이라면 차별성이 없다고 판단 - - 최근 5년 이내 Reference가 없으면 Rejection 가능성이 커짐 - - Revision이 통보되었으나 본인의 견해가 옳다고 생각할 경우 대응 예시 - + "심사위원님 말씀대로 모든 과학적 연구가 실험에 바탕을 두어야 한다면 과학자들이 마주치는 많은 난관을 돌파하기 위해 시도하는 새로운 접근이나 아이디어는 사장될 것이다." - - 수식에 가독성이 없어서 어렵게 보이도록 작성하면 Rejection 가능성이 커짐 - - 논문 전체의 내용과 결론이 일치하는지 확인 - - 아무리 실험 논문이지만 공학 논문에서 수식이 하나도 없는 것은 이상하다. - + 관련 수식을 삽입하고 가능하다면 이론값과 비교하거나 정성적인 해석을 추가하라. - - 모든 노력을 기울였으나 Rejection된 경우 - + Reviewer Comment를 잘 활용할 것(실패해도 얻을것은 분명 존재한다.) - - 참고로 Elsevier 계열의 저널은 3주 ~ 4주 내 Reviewer Comment(심사평)을 작성하므로 늦어지면 문의해 볼 것 - -* __`Revision, Reviewer Comment`의 유형__ - - 독자들이 쉽게 이해하기에는 한계가 있을 것 같다. 독자들이 당신 연구에서 적용한 계산을 보다 잘 이해할 수 있도록 계산절차를 설명하는 차트와 그래프를 추가해서 다시 보내라. Major Revision!! - - 제법 괜찮은 것 같다. 그런데 당신의 연구에 베르누이방정식을 적용해서 계산한 것이 부적절한 것 같다. 이에 대한 설명을 추가해서 다시 보내봐라. Minor Revision!! - - 문장의 삭제, 수정 검토는 쉬운편 ↔ 방정식이나 그림, 테이블, 논문의 작성순서 등은 많은 시간이 소요됨 - - -## 논문 투고와 심사 ---- -* __`심사`절차__ - - 보통 4개월 ~ 6개월 정도 소요. (길면 2년 가까이 걸리는 경우도 있을정도) - - 전자투고시스템(Electronic Editorial System)에 투고 : [Submitted to the Journal] - - Editor-in-Chief에게 전달 : [Editor Invited ↔ Desktop Rejection, Under Review] - - Desktop Rejection = Re-submission - + 30 ~ 40% 이탈. Science지의 경우 90% 이탈 - + 저널이 취급하는 범위와 맞지 않거나 심각한 결여의 결과 - + 한 달에 적으면 200편 많으면 약 300편 정도의 논문이 투고(하루에 7~10편 정도) - + 시간 제약으로 인해 Abstract, Conclusion만 읽는 경우가 많음 - + Instruction까지만 읽어줘도 감지덕지 => 반드시 타 연구와의 차별성 기술이 필요 - + NCS는 훨씬 엄격하다. - * 우리 저널의 독자가 별로 흥미를 가질 것 같지 않다. - * 우리 저널은 임팩트있고 과학계에 지대한 공헌을 할 수 있는 최신 연구내용만을 다룬다. - - Associate Editor에게 전달 : [With Editor ↔ ] - + 투고논문에 논문번호가 부여 - + 동일 연구분야에서 특정주제에 대한 유명한 전문가, 학자들이 평가 - - Peer Reviewr에게 전달(3~5명 / 1~3개월소요) - - 심사결과확인 : [Rejection, Major Revision, Minor Revision ↔ Required Review Completed] - - 수정 후 확인 : [Required Review Completed] - - Accept 후 DOI 등 - - Volume No.와 Page가 없다면 정식 출판논문으로 여기면 안됨 - + 연구업적기간 및 온라인 출판 연구논문의 인정시기에 대해 엄격히 규정 - -* __동료심사(Peer review)__ - - Pool에서 투고논문의 심사에 적합하다고 판단되는 Reviewer에게 심사를 의뢰 - - 편집장과 편집위원들로 구성된 편집위원회에서 추천하여 Pool에 등록시키거나, - - 논문을 최초로 특정저널에 투고할 때 저널측에서 투고자인 교신저자에게 Reviewer로서 활동할 수 있느냐고 문의 - - 전자투고시스템에 투고할 때 일반적으로 교신저자가 선호하는 Reviewer 3명을 추천 - - Review시에 이 사람만은 피해달라는 심사자의 기피명단을 요구하기도 함 => 참고문헌의 저자 중 한분을 요구하기도 함 - - 전문적인 지식을 가진 겸손한 Reviewer를 만나야하는데 결정할 수 있는 상황이 아니므로 복불복 - - 심사의견(Reviewer Comment) 작성을 위해 조상부터 알고 있었던 모든 지식을 동원, 관련 논문 다 찾아봐야 함 - - 심사결과도 해당저널에서 평가함 / 저널의 심사탈락율도 저널평가시 중요 지표임 - - 논문투고할 때는 해당저널의 편집위원 구성을 한번쯤 참고하는 것이 좋다. - - SCI나 SCIE로 등재된 국내저널(물론 영어로 적어야 하고, 투고-심사-수정-게재 혹은 게재불가의 모든 절차가 영어로 진행됨)의 경우는 그들만의 리그인 경우가 많다. 편집진을 보면 90 %가 한국인, 어쩌다가 외국인 1~2명이 ASSOCIATE EDITOR(부편집인)으로 구성. - - 투고논문 저자들의 소속이 좀 빵빵한 곳은 논문게재가 쉽다. - + 해외저널도 그런 경향이 좀 있지만 국내저널의 경우는 좀 심함. - + 교신저자가 세계적으로 알아주는 대가(??)이거나 특정저널의 EDITOR급이면 게재확률은 승률 80 % 이상 - - 심사위원의 유형 - + 영어문법을 중시하는 사람이 있을 수도 있고, - + 투고논문의 양식이 저널의 요구에 일치하는 지를 볼 수도 있고, - + 투고논문의 Cover Letter, Abstract, Conclusion만 읽어보고 논문의 가치를 판단하는 사람이 있고 천차만별 - + 저널의 Scope에 맞지 않으면 가차없이 Rejection, - + 투고논문의 양식이 저널의 요구사항에 맞지 않거나 영어가 맘에 안들거나해도 바로 Rejection - - -## 논문의 인용수와 질적관리 ---- - -* __Open Access Article__ - - Accept후 누구라도 저널의 홈페이지에서 자유롭게 다운로드 받을 수 있는 서비스 - - 보통 800 ~ 1200달러의 비용 지불 - - Google Scholar 검색 시, pdf 파일이 있다고 할지라도 저자들의 저작권은 이미 출판사가 가지고 있기 때문에 저작권 문제를 염려하여 저자들은 보통 투고시의 심사용 원본파일을 올려놓음. 따라서 저널명, 볼륨, 페이지가 없음 - - 대학이나 연구기관의 경우 저널의 각 출판사들과 년간 일정비용을 지불하고 전자저널시스템을 구축하고 있기 때문에 기관의 소속원이라면 자유롭게 이용할 수 있기도 함. - - 개발도상국 같은 곳의 연구자들은 IT인프라 전자저널시스템과 같은 것을 이용할 수 없는 환경이 거의 대다수. - - 그 곳의 연구자들은 어쩔 수 없이 “Open Access Article”의 논문을 많이 참조하고 참고문헌으로 기술. - - 시스템이 연구자의 피인용수를 올리는 편법인지, 연구자가 비용감수를 불구하고 연구생태계의 성장을 위해 타연구자들에 대한 기여인지 각각 장,단점이 존재함. - - -## 논문과 영어 ---- -Reviewer Comment를 받아보면 은근히 영어에 관련된 내용이 많다. 예를들면, "당신히 작성한 영어는 도저히 이해가 안된다. 문장에 약간의 실수들이 있다. 하지만 연구내용이 독창적이고, 관련분야에 기여도가 클것으로 판단한다. 내가 지적한 영어 문장들만 좀 수정해서 다시 보내라." 같은 첨삭을 받게된다. 이렇듯 영어로 발생한 문제를 해결하기 위한 영어 기반의 탬플릿 또는 예시를 Tip으로 정리해본다. - -* __Cover Letter 작성 예시__ - > - > Cover letter for submission of our original paper to 저널명 - > 교신저자명 - > 저자주소 - > Date: - - > Dear Sir, - > I wish to submit a new manuscript entitled “논문제목” for consideration by “저널명”. - - > I do confirm that this work is original and has not been published elsewhere nor is it currently under - > consideration for publication elsewhere. - - > - > In this paper, I report on the performance improvement of the MSF seawater desalination process. - > This will be significant because the production cost of fresh water can be reduced by the brine - > re-utilization of the upstream evaporators. The paper should be of interest to readers in the areas of - > process and energy saving. - - > I am sure that the submitted paper will provide very useful information to the engineers related with - > the vacuum distillation and multi-stage evaporation process. - > - - > Thank you for your consideration of this manuscript. - - > Sincerely, - > 교신저자명 - -* __장시간 심사 Status가 변하지 않을때 상태확인을 요청하는 메일작성 예시__ - > Dear Dr. ooo. - > - > I, along with my co-authors, submitted the manuscript (Manuscrpt #) entitled "(Manuscript Title)" - > for publication in (Journal Title) as an original paper in Oct., 13, 2016 (Submission Date). - > - > Today, we realized that current status/date of the manuscripts has not been changed since - > we initially submitted the manuscript. - > - > We are very concerned about the delay of the review process by an error in the review and tracking system. - > We would like to ask you to confirm current status of the manuscript. - > - > We look forward to hearing from you. - -* __Review Comment 예시__ - > Reviewer Comment on the manuscript: Heat Pump Seawater Distillation System Using Passive Vacuum Generation System (Manuscript Number: DES-D-16-00704) - > - > The submitted article requires a lot of time and patience to the reviewer. - > 1. In the scientific or engineering article, the perfect English is not important Although some mistakes in English writing are done in the manuscript it will be good if the authors meanings can be sufficiently transferred to the readers. However, in the submitted article, there are too many awkward English writing. - > - > 2. The words included in the manuscript are about 3000. It is not appropriate for the full length artide. Rather than it will be suitable to the short communication. - > - > However those defaults do not degrade the originality and the novelty of the submitted article. In the reviewers opinion, the submitted artide should be totally re-written and revised, which means that the reviewer's decision is the major revision. If the fully revised article is submitted the reviewer is wiling to re-review again. - > - > The following table is the detailed comment by the reviewer. Although the reviewer knows that some comments would be not proper from the author's viewpoint, it will be useful to improve the authors manuscript for the next submission. - > - > |No|Page|Original Sentence|Comments| - > |01|1|in abstract The passive systems that generate vacuum is a reliable systems and could allow heat pumps that uses traditional refrigerant to be used in seawater distillation process by reducing the Saturation temperature of seawater to be matched with the... | Not so easy to understand. Separate the sentence. | - -* 출처 : [칼있으마님의 블로그](https://blog.naver.com/choi_s_h) -영어로 논문을 읽고 작성하는 과정에서 유용한 템플릿이 생길때마다 계속 업데이트 예정이다. - diff --git a/_posts/2019-09-04-review-book-dl-nal.markdown b/_posts/2019-09-04-review-book-dl-nal.markdown deleted file mode 100644 index 4d9dad067..000000000 --- a/_posts/2019-09-04-review-book-dl-nal.markdown +++ /dev/null @@ -1,138 +0,0 @@ ---- -layout: post -title: "[리뷰] 파이썬 날코딩으로 알고짜는 딥러닝" -subtitle: "Deep learning with Python bottom coding" -categories: review -tags: review book deep learning python coding -comments: true -header-img: img/review/2019-09-02-review-book-dl-nal-1.jpg ---- - -## 개요 -> 본 리뷰는 `한빛미디어` 출판사 `"파이썬 날코딩으로 알고짜는 딥러닝(윤덕호 저)"`를 읽고 얻은 지식을 정리한 글입니다. - -- 목차 - - [논문을 구현하는 방법](#논문을-구현하는-방법) - - [국내 딥러닝 서적 중 한 획을 그을만한 책](#국내-딥러닝-서적-중-한-획을-그을만한-책) - - [날코딩이라는데 어느 정도까지 밑바닥인가?](#날코딩이라는데-어느-정도까지-밑바닥인가) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [책의 구성 및 요약](#책의-구성-및-요약) - - [요약하며...](#요약하며) - - -## 논문을 구현하는 방법 ---- -데이터 사이언티스트는 비록 하나의 단어이지만 업무 특성에 따라 필요한 핵심 역량이 매우 다양하다. 통계, Quantitive, 금융분석 등의 분야에서는 주로 Tabular 형태의 데이터를 바탕으로 수리통계학 기반의 모델링 설계가 핵심 역량이다. 반면, 딥러닝의 경우 주로 영상, 음성, 텍스트 위주의 데이터를 다루며 예측, 설명에 있어 가급적 사람이 개입하지 않고 머신에게 맡긴다. 그러다보니 수리통계학도 중요하지만 엔지니어로서의 역량 즉, 플랫폼 설계, 최적화, 프로그래밍 스킬 또한 중요시된다. - -최근 [스프트웨어 2.0](https://gist.github.com/haje01/d2518ea998ab2de102b072fed600c0a4)과 같은 트렌드가 이슈가 되고 있는 것은 그만큼 딥러닝 기술을 다룰 줄 아는 프로그래머에 대한 수요가 증가하고 있음을 반증하는 예이다. 덕분에 TensorFlow, Keras와 같은 플랫폼이 생겨나고, 범용 프로그래밍 언어인 Python의 점유율이 증가하고 있으며, 직관적인 통계 해석에 강점을 둔 R 진영에서 조차 Tidyverse가 등장하게 된다. 이것도 부족한것인지 보다 속도를 높이고자 Julia가 조명받고 있고, 나아가 구글에서는 Swift와 같은 데이터 사이언스에 최적화 된 언어를 개발하고 있다. 심지어 여전히 C언어로 딥러닝 개발을 고수하는 업체도 많다. - -타 산업 및 학문 분야는 논문을 기본으로 한 연구분야와 개발분야가 전통적으로 명확한 경계선을 갖는 편이었으나, 데이터 사이언스 분야의 경우 그 경계가 굉장히 옅어졌다고 생각한다. 워낙 신생 학문이기에 논문 등 연구업적의 축적은 부족한데 반해 산업분야엔 엄청나게 핫한 인기를 끌고 있어 `논문에 등장하는 아이디어가 빠른 속도로 구현`되고 있다. 이런 연구업적의 소모는 타 분야에 비해 분명 기현상이다. - -데이터 사이언티스트의 정의에서 보둣이 이들은 초특급 인재들이다. 수리통계학을 필두로 한 학문의 깊이가 남다르고, 전문가 수준의 프로그래밍 스킬도 보유하고 있으며, 데이터 분석능력 및 비지니스 감각도 탁월하다. 이런 천재들이 연구결과의 소비 속도를 더욱 가속시키고 있다. 그리고 이 현상의 중심에 `논문의 아이디어를 구현할 수 있는 능력`이 있다. - -한때 나프다(나는 프로그래머다)라는 프로그래머들에게 굉장히 인기가 많았던 팟캐스트가 있었다. 애청자로써 나프다가 종료될 때 그렇게 슬플 수 없었는데 다행히도 당시 데이터 사이언스 중심의 싸이채널을 담당하신 김진영 님께서 [데이터 지능 팟캐스트](http://data-intelligence.io/)를 운영하시면서 당시 필자에게 나프다의 대체제로 큰 위안이 되었다. - -데이터 지능 팟캐스트 중 Naver Clova 개발자분들이 등장하신 회차가 있는데 김진영 사회자님이 독자들을 위해 "데이터 사이언스 채용에 합격하기 위해 알아두어야 할 기출문제"를 공개해달라고 위트있는 요청을 하셨던 기억이 난다. 클로바분들의 대답은 간단했지만 꽤 인상적이었다. -``` -"최신 논문이 등장한 일자 - 해당 논문의 구현체가 Github에 올라온 일자 = 0에 수렴" -``` -위 공식을 보유한 능력자라면 채용하겠다는 힌트를 주셨는데 현업에 종사하는 분들의 조언만 들어도 논문을 이해하고 구현하는 능력이 얼마나 중요한 지 알 수 있는 대목이다. - -텐서플로우와 케라스를 자유자재로 다루는 능력은 분명 중요하다. 특히 초보자라면 이해하지 못하는 수식에 사로잡혀 세월을 낭비하고 있기 보다는 해당 라이브러리로 시각적 결과를 확인하며 딥러닝이라는 숲을 이해하고 Top-Down 방식으로 논문과 수식에 접근하는 것도 분명 효과적인 학습법일 것이라 생각한다. - -하지만 앞서 언급했듯이 데이터 사이언스 분야에서 언제 어떤 언어 또는 라이브러리가 Python이나 케라스를 왕좌에서 밀어낼지 모르는 급변하는 개발 환경속에 특정 언어 및 라이브러리에만 의존하는 것은, 빠르게 배우고 적용할 수 있는 인재를 원하는 이 분야에서 원하는 생존력을 갖췄다고 보기엔 다소 소극적이지 않을까? - -비단 딥러닝의 분야만이 아니다. 모델링 분야도 수식을 이해하는 것이 어렵기는 마찬가지이다. 책 읽기나 강연을 통해 습득했던 방식과는 또 다른 시각인 코딩 구현 과정의 사고 속에서 수식이 더욱 잘 이해되고 오래 기억에 남지 않을까? 어떻게 Keras, Tensorflow 없이 밑바닥부터 날코딩으로 구현하냐며 도망만칠 것이 아니라, 진정한 고수라면 내가 모르는 블랙박스를 최대한 없애기 위한 과정이자 수단으로 날코딩을 즐기지 않을까 생각한다. - -상기의 목적을 달성하기 위해 국내에서 집필된 단 한권의 책을 추천하라면 주저없이 본 책을 고르겠다. 아래 그림과 같이 순전파와 역전파를 구현한 후, 관련 수식을 깔끔하게 직관적으로 기술한다. 즉, 수식을 코딩으로 구현하는 방법을 배울 수 있고 논문에서 이해한 수식을 코딩으로 구현하는 능력이 배양된다. 이런 방식의 구현과 설명으로 최신기술인 GAN까지 설명이 이어진다. -![순전파역전파](https://theorydb.github.io/assets/img/review/2019-09-02-review-book-dl-nal-2.jpg) -![수식설명](https://theorydb.github.io/assets/img/review/2019-09-02-review-book-dl-nal-3.jpg) - - -## 국내 딥러닝 서적 중 한 획을 그을만한 책 ---- -본 서적에는 논문의 아이디어와 수식을 이해하여 코딩으로 구현할 수 있는 능력을 키울 수 있다는 점 외에도 몇가지 탁월한 장점이 더 있다. - -* __딥러닝을 위한 객체지향 기법을 동시에 배운다.__ - JAVA등의 언어로 객체지향을 객체지향답게 다룰 줄 아는 고수는 많다. 하지만 딥러닝을 객체지향으로 개발하는데 능숙한 고수는 흔치는 않을 것이다. 딥러닝이 각광받기 시작한 역사가 워낙 짧은 편이라 딥러닝 학습 자체에 집중하기도 급급한데, 객체지향 패턴을 입혀 솔루션 출시에 집중하는 것은 아무래도 시간 상 우선순위가 밀리기 마련이다. 이 책을 학습하다보면 별도 시간을 들이지 않아도 자연스레 객체지향으로 구현하는 방법을 익힐 수 있다. 더불어 아래 그림과 같이 `상속 재활용 관계도를 제시하여 큰 숲을 보여주므로 현재 읽고있는 위치가 어디인지 명확히 인지`할 수 있는 장점이 있다. - ![객체지향](https://theorydb.github.io/assets/img/review/2019-09-02-review-book-dl-nal-4.jpg) - - 객체지향 구현을 통한 구성덕에 얻을 수 있는 또 하나의 장점이 있다. 코드를 상속, 재사용 함으로써 기존 코드를 반복하여 설명하지 않게되고, 지면의 양도 상당히 줄어들어 책의 가격에 부담을 주지 않는다. 즉, 학습이 입체적으로 이루어지고 반복적으로 복습하게 되며 단원별 핵심 내용에 집중할 수 있다는 장점이 있다. 예를들면, GAN을 배우는데 이전에 배웠던 단층 퍼셉트론에서 배웠던 역전파, 경사하강법의 설명이나 코드가 반복적으로 등장하게 되다면 핵심 논점이 흐려져 집중력이 떨어질 수 밖에 없게된다. 디테일한 구성까지 저자와 편집자의 배려가 정말 돋보이는 책이다. - -* __Python 다운 Python 기법을 배운다.__ - [Google Colab 환경설정 및 사용법](https://theorydb.github.io/dev/2019/08/23/dev-ml-colab/#colab%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80) 포스팅에서 언급한 바와 같이 딥러닝은 가뜩이나 귀족학문이라 돈도 없어 힘든데, 심지어는 바둑과 같이 신선놀음이기까지 하다. 배우고 또 배우고 날밤을 새며 배워도 시간이 늘 부족하다. 그래서 자연스레 객체지향 기법이나 Python과 같은 엔지니어 스킬 측면의 내공을 뒷전으로 미루게 되기 마련이다. - - 이 책에서는 그런 부수적인 지식에 대한 부족함으로 드는 불안감을 안정감있게 채워준다. 예제를 실습하다보면 객체지향은 물론이고, [전문가를 위한 파이썬](http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788968484988&orderClick=LAG&Kc=), [파이썬 코딩의 기술](http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791186978825&orderClick=LAH&Kc=)등 양서에 나오는 Python을 Python답게 쓸 수 있는 스킬도 자연스럽게 늘어난다. 직접 책을 따라 코딩하다보면 파이썬에선 Global 변수를 함수 내에서 이런 방식으로 전달하는구나, 함수의 리턴값 중 필요없는 값은 _키워드로 불필요 인자를 지정할 수 있구나, 행렬 + 벡터합은 자동으로 반복 연산이 지원되는 구나... 등의 지식을 딥러닝을 공부하며 자연스럽게 익히게 된다. - 만약 본인이 비 프로그래머 연구자 출신이라면 이런 장점이 더욱 도움이 될지도 모르겠다. 논문지식을 통해 객체지향과 엔지니어링을 역으로 배우는 신기한 경험을 하게 될 것이다. - -* __이미지 및 삽화가 매우 설명력이 좋다.__ - 설명력이 좋다고 표현한 것은 통계, 머신러닝의 용어를 빌렸다. 이미지 하나만 깊이있게 들여다봐도 해당 챕터의 큰 그림이 그려지기 때문이다. 아래 그림들을 보면 무슨의미인지 직관적으로 와 닿으실 것이다. - ![이미지1](https://theorydb.github.io/assets/img/review/2019-09-02-review-book-dl-nal-5.jpg) - ![이미지2](https://theorydb.github.io/assets/img/review/2019-09-02-review-book-dl-nal-7.jpg) - ![이미지3](https://theorydb.github.io/assets/img/review/2019-09-02-review-book-dl-nal-6.jpg) - -참고로 저자가 구현한 소스코드를 확인하고 싶다면 [저자의 GitHub](https://github.com/KONANtechnology/)에 접속하시기 바란다. - - -## 날코딩이라는데 어느 정도까지 밑바닥인가? ---- -밑바닥의 수준을 파악하는 방법은 쉽다. import 모듈 외에는 모두 직접 개발한다고 간주하면 된다. 책의 222p에는 mlputil.ipynb라는 파일이 등장하는데 재사용을 극대화하기 위해 Python에서 필요한 라이브러리들을 공통으로 Import하는 파일이다. 이 파일 외 더 이상의 import문은 등장하지 않는다. - -그렇다면 import하는 라이브러리는 무엇일까? 파일 입출력, time, numpy 정도다. Pytorch, Scikit-learn, Pandas는 물론 심지어 Scipy도 안쓴다. 이 말인 즉슨 순전파, 역전파는 물론 sigmoid, softmax 같이 단순한 것들도 모두 구현해야 한다는 의미다. - -범위가 딱 적정하다는 생각이 들었다. 파일 입출력을 구현하는 것은 딥러닝과는 무관한 영역이고, numpy 내부를 구현하는 것 또한 딥러닝의 범위라고 하기엔 너무 디테일하다. 예를들어 exp와 같은 기초 수식까지 구현하는 것은 시간낭비가 심하고 내용이 너저분해질 수 있다. 적당한 선에서 끊어 투입 시간대비 능률적인 성과를 올릴 수 있도록 안배한 저자의 능력이 돋보인다. - - -## 누가 읽어야 하는가? ---- -- sw 2.0 프로그래머 : 케라스, 텐서플로우 등 프레임워크 개발, 사내 자체 딥러닝 솔루션 개발, 성능 이슈로 C, Swift 등 속도 빠른 타 언어 구현, 논문 구현시 큰 도움이 될 것이다. - -- 애널리스트 : 부족한 프로그래밍 스킬을 채우고 모델링 이해에 도움이 되는 수식, 논문 아이디어에 대한 습득 속도가 향상될 것이다. - -- 데이터 엔지니어 : 코드에 따른 최적화된 자원 활용에 도움이 될 것이다. - -- 사이언티스트 : 모델링 지식을 복습하고 성능을 보장하는 설계에 도움이 될 것이다. - -- 기타 딥러닝, Python, 논문, 객체지향, 프로그래밍 스킬 등을 배우고 싶은 학생, 실무자, 경영자 등 모든 분들께 강추한다. - - -## 책의 구성 및 요약 ---- -이 책은 크게 다섯 부분으로 구성되며, 각 파트에서 다루는 내용을 요약해 보았다. - -- __1. 단층 퍼셉트론(0 ~ 3장)__ - - 딥러닝의 발전과정 및 딥러닝 수학 등 개요 - - 딥러닝의 핵심 기초개념(경사하강법, 역전파, 편미분, 손실함수, 원-핫벡터 등) - - 회귀분석, 이진판단, 선택분류 구현 실습 - -- __2. 다층 퍼셉트론(4 ~ 6장)__ - - 입력층, 은닉층, 출력층 구현 - - 가변적 은닉 계층 구성을 위한 파라미터 생성함수, 순전파, 역전파 심화 - - 미니배치, 평가, 시각화, 정확도 계산, 각종 수학연산 함수 정의 등 - - 아담모델, 오피스31 다차원 분류 기법 등 - -- __3. 합성곱신경망(7장 ~ 9장)__ - - 합성곱 계층, 풀링 계층의 역전파처리 - - 과적합, L1/L2손실, 드랍아웃, 정규화 등 - - 인셉션, 레스넷 모델 심화 구현 - -- __4. 순환신경망(10장 ~ 12장)__ - - 기본 셀 순환 신경망, LSTM 구현 - - CNN과 RNN의 결합, 시계열 포장 등 - -- __5. 고급 응용 신경망 구조들(13장 ~ 15장)__ - - 오토인코더, 시맨틱 해싱, 인코더-디코더 모델 - - 생성적 적대 신경망(GAN) 등 - - -## 요약하며... ---- -이미 언급한 바와 같이 딥러닝 분야에 있어 우리 나라에 한 획을 그을만한 멋진 책이라 생각한다. 논문에 등장하는 수식과 아이디어를 정말 제대로 이해할 수 있게 끔 Python 코딩을 통해 구현하는 능력을 키워준다. 딥러닝 논문을 읽고 구현할 수 있다는 자신감이 생긴다. 객체지향 기법으로 딥러닝 솔루션을 구축하는 방법, 그로인한 챕터별 핵심에 집중할 수 있는 입체적인 설명, Python답게 Python을 다루는 방법, 핵심만을 다룬 깔끔한 수식설명과 설명력 있는 삽화까지 지금까지 나온 국내 딥러닝 서적중 최고의 점수를 주고 싶다. - -책을 읽으면 아쉬운 점을 보통 한두개 정도는 찾게되기 마련인데, 이 책은 도통 찾기가 어렵다. 수준이 제법 높아 입문자 분들께 벅찰 수 있겠다는 정도(?)이다. 컬러판으로 소스코드에 Syntax Hilight가 입혀져 있었다면 바랄 나위 없었겠지만 그러면 또 정가가 오르지 않겠는가? 이미지는 워낙 설명력이 좋아 컬러일 필요도 못느꼈다. 실습환경을 구축하기 어려울지 모르겠는데 그런 분들은 필자가 정리한 [Google Colab 환경설정 및 사용법](https://theorydb.github.io/dev/2019/08/23/dev-ml-colab/#colab%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80) 포스팅을 참고하시기 바란다. 결론은 10점 만점에 10점이다. 좋은 책을 세상에 선보여 주신 저자, 편집자, 출판사께 감사드린다. - -> \<한빛미디어 출판사\> -> -> 믿고보는 "한빛미디어 출판사". IT분야에서 독보적인 양질의 도서를 출판하는 회사입니다. "나는 프로그래머다" 팟캐스트 후원, DevGround2019 행사, 리뷰어 모집, 다양한 학습 지원 등 다양한 분야에서 사회에 공헌하는 개발자와 공생하는 업체입니다. IT분야에 관심 있으시다면 한빛미디어의 책으로 후회없는 출발을 하실 수 있습니다. - -[한빛미디어 바로가기](http://www.hanbit.co.kr/) \ No newline at end of file diff --git a/_posts/2019-09-05-favorites-economy-fav.markdown b/_posts/2019-09-05-favorites-economy-fav.markdown deleted file mode 100644 index b2b7616ef..000000000 --- a/_posts/2019-09-05-favorites-economy-fav.markdown +++ /dev/null @@ -1,113 +0,0 @@ ---- -layout: post -title: "[부동산] 부(富)와 재테크를 위한 유용한 사이트 모음(부동산, 경제, 법률 등)" -subtitle: "Site collection for real estate and economic data" -categories: favorites -tags: favorites land economy favorite law site -comments: true ---- - - -## 개요 -> `돈은 수단이지 목적이 아니다.`,`사람의 그릇보다 넘치는 돈은 그릇을 깨뜨리게 마련이다.` 흔한 돈과 관련된 명언들이지만 그 말들 안에는 분명 뼈가 있습니다. 제게 돈은 시간적인 자유를 가져다주는(즉, 직장을 다니지 않아도 내 시간을 온전히 의미있게 쓸 수 있는) 도구 그 이상 이하도 아닙니다만 여러분은 어떠신가요? - -- 목차 - - [내집마련 Site](#내집마련-site) - - [부동산 Site](#부동산-site) - - [경제 Site](#경제-site) - - [법률 Site](#법률-site) - - [부동산 Feature](#부동산-feature) - -## 내집마련 Site ---- -데이터 사이언스는 귀족 학문입니다. 입력층에 투입된 시간과 장비빨이 실력이라는 출력층까지 도달하는데 엄청난 가중치를 차지합니다. 시간과 장비빨을 최대로 얻기 위해선 돈이 무시못할 요소이기에 재테크에 유용한 사이트를 모아봅니다. - -먼저 내집마련을 위한 유용한 사이트들을 소개합니다. - - * [아파트투유](https://www.apt2you.com/) : - * [LH 청약센터](https://apply.lh.or.kr) : - * [SH](http://www.i-sh.co.kr/) : - * [KB 주택청약](https://oland.kbstar.com/quics?page=ohsubs&QSL=F#loading) : - - * [온나라부동산](http://onnara.go.kr) : 분양알리미 - * [LH 분양정보](http://www.lh.or.kr/) : - * [행복주택](http://www.molit.go.kr/happyhouse/info.jsp) : - * [분양정보](http://www.r114.com/z/sale/b_list.asp?only=0&m_=1&g_=1&type_g=B^&type_cd=03^&tabkind=1) : - * [청약일정 블로그](https://blog.naver.com/hihipk) : 개인이 운영 - -## 부동산 Site ---- -부동산 관련 유용한 사이트입니다. - -- __부동산 시세 및 거래__ - * [국토부실거래가](http://rt.molit.go.kr/) : 실거래가 - * [`국토부실거래가 DB`](http://rtdown.molit.go.kr/) : 실거래가 다운로드 - * [서울시 부동산 정보광장](http://land.seoul.go.kr/) : 부동산 거래현황 - * [밸류맵](https://www.valueupmap.com/) : 지역별 실거래가 - * [부동산지인](https://aptgin.com/) : 지역별 거래정보 - * [호갱노노](https://hogangnono.com/) : 신고가, 변동, 인구, 출근, 거래량, 역정보, 기사연동 - * [시세미](https://sise.me/) - * [KB부동산 리브온 (Liiv ON)](https://onland.kbstar.com) : 지역별 실거래가, 시장동향, 상업시설 - * [소상공인 상권정보](http://sg.sbiz.or.kr) : 상권분석 - * [통계청](http://kosis.kr) : 대한민국 통계 - -- __부동산 정책 및 행정__ - * [서울플랜2030](https://www.2040seoulplan.com/) : 서울 도시계획 - * [부동산미래](http://landfuture.co.kr/) : - * [대법원](http://www.courtauction.go.kr/) : 경매정보, 등기부등본 확인 - * [국토교통부](http://www.molit.go.kr) : 부동산 정책(보도, 공고, 고시 등) - * [도시계획포털](http://urban.seoul.go.kr/) : 도시계획 정보 - * [스마트서울맵](https://map.seoul.go.kr) : 도시재생활성화지역 등 용도 정보 - * [세움터](https://www.eais.go.kr/) : 국토교통부 건축 행정(부동산 건축물대장, 인허가 확인 등) - * [재개발재건축 클린업시스템](http://cleanup.seoul.go.kr) : 재개발 정보 - * [지존 토지보상](http://www.gzonei.com/) : 토지보상 정보 - * [경기 부동산 포털](https://gris.gg.go.kr) : 수도권 개발사업, 연속지적도, 토지이용계획 등 - * [강원도 부동산정보 통합열람](http://kras.gwd.go.kr/land_info/info/baseInfo/baseInfo.do) : - -- __부동산 기타__ - * [미래철도 DB](http://www.frdb.wo.to/) : 철도정보(주인장님의 접근방식이 이채롭습니다.) - * [세계도시정보 UBIN](https://ubin.krihs.re.kr) : 세계도시 통계 - * [국가교통 DB](https://www.ktdb.go.kr) : 교통 데이터 - * [서울 열린테이터 광장](http://data.seoul.go.kr/) : 인구, 가족, 복지, 산업, 교통, 교육 등 - - -## 경제 Site ---- -경제 관련 유용한 사이트입니다. - -* [한국은행 경제통계시스템](http://ecos.bok.or.kr) : 경제관련 통계(소비자 물가지수, 증권, 부동산 등) - - - -## 법률 Site ---- -법률 관련 유용한 사이트입니다. - - * [국가법령정보센터](http://www.law.go.kr/main.html) : - * [공정거래위원회](http://www.ftc.go.kr/) : - * [국민권익위원회](http://www.acrc.go.kr/acrc/index.do) : - * [등기소찾기](http://www.iros.go.kr/pos1/pfrontservlet?cmd=PINFSrchRegtC) : - * [국민신문고](https://www.epeople.go.kr/jsp/user/pc/cvreq/UPcCvreqForm.jsp?flag=N&) : - * [소비자상담센터](http://www.ccn.go.kr/index.ccn) : - * [한국소비자원](http://www.kca.go.kr/index.do) : - * [상속인 금융거래 조회](http://www.fcsc.kr/D/fu_d_07_01.jsp) : - * [내용증명(우체국 온라인)](http://blog.naver.com/ericaju/220270973199) : - - -## 부동산 Feature ---- -본 블로그는 본래 데이터 사이언스에 관한 지식을 공유하기 위한 취지로 만들어졌기에, 부동산에서 유용하다고 생각하는 특징(Feature)을 계속 정리해 나갈 예정입니다. - -주 이유는 제가 나중에 부동산 시세 예측등의 머신러닝 시스템을 만들 때 참고하기 위함이나, 유사한 프로젝트를 수행하신다면 도움이 될 정보들입니다. 다만 제 아이디어가 부족하여 공유하고 싶으신 정보가 있다면 댓글 부탁드립니다. - -* __부동산 정책 NLP 분석__ - - 누가 그러더군요. 역세권, 학군 등의 피처넣고 과거년도로 학습하면 예측 가능한거 아니냐고? 해봤습니다. 잘 안되더군요. 잘 안되는 가장 큰 이유가 바로 이 `정책`입니다. 하지만 정책에서 피처를 뽑아내는 작업은 사람이 개입하지 않는 한 딥러닝으로는 거의 불가능에 가깝습니다. 그래서 NLP를 이용해야 합니다. BERT 같은 것을 이용해서 말이죠. - -* __로열동(층) Feature__ - - 소음, 방향, 조망, 층, 일조량, 특화설계, 판상형vs탑상형, 출입구까지의 이동거리 - - -본 포스트는 주기적으로 업데이트 예정입니다. - - - diff --git a/_posts/2019-10-04-review-book-ml-cookbook.markdown b/_posts/2019-10-04-review-book-ml-cookbook.markdown deleted file mode 100644 index 3cb5c7907..000000000 --- a/_posts/2019-10-04-review-book-ml-cookbook.markdown +++ /dev/null @@ -1,121 +0,0 @@ ---- -layout: post -title: "[리뷰] 파이썬을 활용한 머신러닝 쿡북" -subtitle: "Machine Learning with Python Cookbook" -categories: review -tags: review book machine learning python cookbook preprocessing -comments: true -header-img: img/review/2019-10-04-review-book-ml-cookbook-1.jpg ---- - -## 개요 -> 본 리뷰는 `한빛미디어` 출판사 `"파이썬을 활용한 머신러닝 쿡북(크리스 알본 저)"`를 읽고 얻은 지식을 정리한 글입니다. - -- 목차 - - [데이터사이언스의 8할은 전처리](#데이터사이언스의-8할은-전처리) - - [전처리, SW 2.0, 통계 핵심개념 등 본 도서의 장점](#전처리-sw-20-통계-핵심개념-등-본-도서의-장점) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [책의 구성 및 요약](#책의-구성-및-요약) - - [요약하며...](#요약하며) - - -## 데이터사이언스의 8할은 전처리 ---- -자! 이제 난 제법 보스턴 주택가격 예측도 돌려봤고, MNIST 데이터셋 손글씨 인식도 해봤고, 또 Iris 붓꽃 분류도 능히 해냈다. 근데 왜 현실로 돌아오면 난 아무것도 할 수가 없지? 이 책에 관심있는 독자분이라면 다들 비슷한 고민을 한번쯤 해보셨거나 마주하고 있는 중일 것이다. 필자 역시 마찬가지였고 지금은 나아가긴 했지만 새로운 유형의 데이터 셋을 만날 때마다 비슷한 고민에 빠진다. - -머신러닝과 딥러닝을 마주하며 겪는 우리의 고민은 여러 유형이 존재하지만 당장 맞닥드리게 되는 크게 2가지 부류의 문제가 있다. 하나는 데이터 특성을 파악한 후 `어떻게 해야 모델에 떠먹여 줄 수 있을지.. 즉, 전처리에 대한 고민`이고, 다른 하나는 어느정도의 방법론은 찾아냈는데 언어의 벽 - `Python, Julia, R, Swift - 등을 사용하면서 문법을 모르거나 또는 그 언어다운 기법을 사용할 줄 몰라` 나만의 방식으로, 이상한 문법으로 빙빙 돌아가며 시간과 성능을 낭비하는 문제이다. - -머신러닝 모델을 배워서 자신감도 생겼겠다, 내공을 튼튼히 하고자 머신러닝 관련 수학 개념도 잡았고, 코딩 더 매트릭스 같은 책으로 선형대수도 배웠고, 통계학의 기본기도 다잡으며 여기까지 왔는데 할 수 있는게 별로없다니.. `독립변수, 종속변수가 수치형인지 범주형인지 이진인지 숫자인지 등` 데이터 성격에 따른 통계학적 개념도 어느정도 잡았는데 실무에서 마주친 데이터를 보고 머뭇거리게 될 수 밖에 없었던 경험. 그 무서운 경험에서 벗어나고 싶다면, 전처리에 대한 두려움을 없애고 싶다면, 필자가 아는 한 국내에선 이 책이 으뜸이라 말하고 싶다. - -몸값 높은 데이터사이언티스트라면 현실에서 데이터를 마주했을 때 EDA와 시각화등을 통해 데이터의 생김새가 어떤지 감을 잡을것이다. 그리고 그간의 경험으로 축적된 내공을 통해 어떤 모델을 선택하고 어떤 평가지표를 적용할 지 견적이 나올 것이고, 모델이 최고의 성능을 발휘할 수 있도록 모델의 입맛에 맞게 전처리 작업에 돌입할 것이다. 그런 전문가가 아니라면 우리 대부분은 상당히 방대한 전처리의 범위에 압도당하고, 데이터의 특성에 따라 분석 기법도 천차만별이라는 사실에 좌절하게 된다. -![전처리](https://theorydb.github.io/assets/img/dev/ml/2019-08-25-dev-ml-insight-1.jpg) - -실무에서 쉽게 맞닥드리게 되는 다음의 질문을 생각해보자. -* 이미지에 나타난 `사물의 경계선`을 표시하고 싶다. 그런데 어떻게 그리지? -* 기껏 학습에 사용할 사진을 열심히 찍었다. 그런데 `빛에 반사`가 되었네? 빛의 반사는 어떻게 지우지? -* 평가지표라고는 MSE, ROC Curve, 정확도, Score Method 등 기본 지식만 갖췄는데 `나만의 지표`는 어떻게 만들수 있을까? -* 방금 만든 로지스틱 회귀 모델의 `분산을 줄이고 싶은데` 이거 가능한건가? -* 성별 데이터 `불균형`이 심한데 이거 그대로 돌려도 과적합에 빠지진 않으려나? 성능에 문제는 없으려나? -* `명목변수`를 특성 인코딩을 거쳐 수치로 바꿨는데 왜 원하는 결과대로 안나오지? -만약 위 질문 중 단 한번이라도 비슷한 고민을 하셨다면 이 책이 솔루션이라고 말하고 싶다. - -저자는 수십 페이지로 작성된 안내글이 아닌 하나의 직관적인 질문으로 이 책을 소개한다. `1000개의 범주와 누락된 데이터가 있는 수치 특성, 불균형한 클래스로 이루어진 범주형 타깃 벡터가 담긴 JSON 파일을 다루기 위해 어떤 레시피를 사용해야 할까?` 이 짧은 문장에 대한 답이, 그리고 유사한 레시피가 이 책에 씌여있다. -![구성](https://theorydb.github.io/assets/img/review/2019-10-04-review-book-ml-cookbook-2.jpg) - -필자는 저자, 역자, 출판사와 금전적으로 관련이 없지만 이 책은 돈이 전혀 아깝지 않다. 그동안 데이터 사이언티스트의 꿈을 꾸며 열심히 삽질했던, 캐글 점수 좀 올려보겠다고 책 뒤져보며 축적해 온 엄청난 공을 들여왔던 나의 내공이 전부 녹아있다니... 눈 앞에 늦게 나타난 것이 밉기도 하고, 몰랐던 기법을 배울 수 있어 이쁘기도 한 묘한 매력을 뽑낸다. - -실무 혹은 캐글 등의 경진대회를 접할수록 전처리의 중요성은 알겠는데 도대체 고수들의 내공이 담긴 책이 없는 것이 늘 불만이었다. 원서나 외국 레퍼런스는 어학 실력이 부족해 종종 한계에 부딪혔고, 국내에 발간된 번역서 중 전처리라는 제목이 포함된 신간을 기쁜 마음으로 구입하기도 했는데 데이터 수집 내용만 잔뜩있는 것을 확인하고 눈물 흘리며 덮었던 경험도 있다. 다행히 이번엔 진짜가 나타났다. 다들 전처리, 전처리 말은 많지만 고작 결측치와 이상치 처리만 주구장창 다루고 실전에서 겪은 경험들은 왜 이리도 없는지.. 덕분에 갈증이 엄청나게 해소되었다. - - -## 전처리, SW 2.0, 통계 핵심개념 등 본 도서의 장점 ---- -앞 장에서 소개한 바와 같이 이 책의 화룡정점은 전처리이다. 하지만 그걸로 끝이 아니다. 전처리에 대한 필요 이상의 이론을 걷어내고 실무에 필요한 딱 그 수준으로 빨리 급한불을 끄게 솔루션을 제시한다. 그 후 깔끔하고 핵심이 담긴 언제 사용하고 왜 사용하는지 설명을 제시한다. 마지막으로 핵심과 어긋난 삽질으로 지치거나 가독성이 떨어지지 않도록 (예를 들면 Open CV가 Python 3.6에서 지원이 안되는 줄 알고 지웠다가 설치하는 등 또는 사이킷런 0.20 등 최신버전의 등장으로 deprecate되기 직전의 코드를 유지보수하지 않도록 지켜주는 등) 역자가 후방을 든든하게 지켜준다. 요약하자면 책의 구성은 아래 그림과 같이 `과제 - 해결 - 설명 - 참고 - 덧붙임(역자의 주)`순서로 구성되어 있다. 책의 제목에 걸맞게 쿡북답게 구성되어있다. -![구성틀](https://theorydb.github.io/assets/img/review/2019-10-04-review-book-ml-cookbook-3.jpg) - -덕분에 데이터의 기본 적재, 랭글링 기법을 기본으로 `수치, 범주, 텍스트, 시계열, 이미지`에 이르기까지 종류별로 거의 완벽하게 대응할 수 있는 기법들을 핵심개념 위주로 알려주어 문제 해결에 바로 적용할 수 있음은 물론 가독성을 올려주기에 학습효과가 좋다. -![이미지](https://theorydb.github.io/assets/img/review/2019-10-04-review-book-ml-cookbook-4.jpg) - -그렇게 탄탄해진 개념을 바탕으로 다양한 예제와 친절한 주석, 설명을 통해 [스프트웨어 2.0](https://gist.github.com/haje01/d2518ea998ab2de102b072fed600c0a4)의 구현에 도움을 주는 프로그래밍 스킬을 전수한다. 특히 `R에서 탄생한 Pandas를 Pandas답게(axis 활용 등), Python을 Python답게(리스트 컴프리핸션의 등) 사용할 수 있는 기법`을 전수한다. - -특성추출 및 선택 파트에서는 주성분분석(PCA)에 대한 깔끔한 해결책 뿐만 아니라 `데이터 종류, 분산 특성에 따라 베르누이, 카이제곱, RFECV 등 어떤 것을 사용해야 하는지` 통계학 개념이 실무핵심 위주로 집대성 되어있고 어떤 상황에서 왜 써야 하는지 상세히 서술한다. 더불어 현존하는 인기 머신러닝 모델을 선형회귀부터 신경망까지 깊이있게 다루는데 하나같이 다른책에선 보기 힘든 `모델 관련 실무`에서 맞닥드리게되는 문제 및 해결책 중심으로 구성되어 있어 저자 내공의 깊이에 적잖이 놀랐다. 마지막으로 pkl, HDF5등의 포맷으로 학습된 모델을 저장하고 불러오는 방법의 전수를 끝으로 화룡정점을 장식한다. -![모델저장](https://theorydb.github.io/assets/img/review/2019-10-04-review-book-ml-cookbook-5.jpg) - -누구나 좋은책을 만나면 숨겨놓고 나만보고 싶다는 생각이 든 경험이 있을 것이다. 본 도서가 그렇다. 내가 그동안 열심히 시간을 투자해가며 얻은 팁과 내공들을 왜 세상에 이렇게 쉽게 내놓는 거냐며 투덜거리면서도 몰랐던 부분을 배울땐 그렇게 고마울 수 없는 묘한 책이다. 멋진 저자와 역자의 환상적인 콜라보로 탄생한 이 명작이 국내에서 필자와 같이 고군분투중인 데이터 사이언티스트 지망생들께 큰 도움이 될 것이라 믿어 의심치 않는다. - -* [책소개 Link](http://www.hanbit.co.kr/store/books/look.php?p_code=B1652696754) -* [역자가 구현한 소스코드 GitHub Link](https://github.com/rickiepark/machine-learning-with-python-cookbook) - - -## 누가 읽어야 하는가? ---- -- sw 2.0 프로그래머 : 자체 데이터 사이언스 솔루션 개발, Python의 고급기술 습득 - -- 데이터 애널리스트 : 부족했던 프로그래밍 스킬을 채우기에 좋다. - -- 데이터 사이언티스트 : 모델링 핵심에 대한 실무 전반을 돌이켜 보고, 더 좋은 성능을 보장하는 설계에 도움이 될 것이다. - -- 기타 머신러닝, 딥러닝, Python, 전처리 등을 배우고 싶은 학생, 실무자, 경영자 등 - - -## 책의 구성 및 요약 ---- -이 책은 크게 네부분으로 구성되며, 각 파트에서 다루는 내용을 아래와 같이 요약해 보았다. - -- __1. 벡터, 행렬, 배열, 데이터 적재 및 랭글링(1 ~ 3장)__ - - Numpy를 활용한 벡터, 행렬, 배열, 희소행렬, 인덱싱, 벡터연산, 기초통계량, 전치, 행렬식, 고유벡터, 역행렬 등 - - 샘플 데이터셋 적재 및 생성, CSV/ Excel/ Json/ SQL로 부터의 적재방법 - - 데이터프레임, 행선택, 치환, 기초통계, 이상치, 결측치, 중복제거, 열원소순회, apply일괄적용, 병합 등 - -- __2. 데이터 종류별 전처리 기법(4 ~ 8장)__ - - 데이터 종류(수치, 범주, 텍스트, 시계열, 이미지)에 따른 차별화된 실무 솔루션 제공 - - 스케일변환, 군집과 KNN을 활용한 이상치 처리, 결측치 처리, 순서유무에 따른 인코딩, 불균형 해소 등 - - 구두점, 불용어, HTML파싱, 어간추출, 품사태깅, BoW, TF-IDF 처리기법 등 - - 시차특성, 이동시간 윈도우 사용법, 이미지 이진화, 배경제거, 경계선 감지 등 - -- __3. 특성 추출,선택 및 모델의 평가,선택(9장 ~ 12장)__ - - 주성분분석, 클래스분리, 행렬분해, 희소데이터 특성 줄이기, 분산 기준으로 수치 및 이진 처리, 상관관계 특성 다루기 등 - - 교차검증, 기본회귀, 기본분류, 이진분류, 다중클래스분류, 사용자정의 평가지표 만들기 등 - - 완전탐색, 랜덤탐색, 전처리, 병렬화, 알고리즘 특화 기법 활용등을 통한 최선의 모델 선택 기법 - -- __4. 머신러닝 모델(13장 ~ 20장)__ - - 선형회귀, 트리, KNN, 로지스틱회귀, SVM, 나이브베이즈, 군집, 신경망 등 - - 모델별 실전에서 마주치는 실무적 해결기법 정리 - - 훈련된 모델의 저장 및 복원 - - -## 요약하며... ---- -현존하는 국내 서적 중 데이터사이언스 전처리 실무를 다루는 끝판왕이라고 요약하고 싶다. 머신러닝 모델과 개념을 다루는 책은 많지만 실전에서 특히 전처리를 다루는 책은 정말 접하기 쉽지 않다. 실무에서 맞닥드리기 쉬운 200가지의 실전문제에 대한 레시피를 제공함으로써 능숙한 데이터사이언스들이 실무에서 발휘하는 내공을 얻을 수 있다는 점이 매력이다. 모델에 따른 전처리 능력은 현직자들의 몸값을 높이는 스킬이므로 좀처럼 공유되지도 않는데다, 전처리는 데이터 유형, 분포, 성격에 따라 다루는 기법이 천차만별이기에 집대성하기 결코 쉽지 않은 분야이다. 실무 및 캐글 등 경진대회에서 깊이있게 고민했던 거의 모든 문제에 대한 해법이 담겨있어 놀랄 수 밖에 없다. - -더불어 파이썬 다운 프로그래밍 기법을 활용한 샘플 제시로 좀 더 효율적인 프로그래밍 기법을 익힐 수 있게 해주는 점 또한 백미이다. 개념적으로 접근하기에도 쉽지 않은 실무문제에 골머리를 썩으면서, 또 한편으로는 파이썬의 효율적인 기법을 몰라 Pandas가 데이터를 다루는 방식을 몰라 레퍼런스를 찾고, 구글링하고, 커뮤니티에 질문을 올려 답이 올라오기만을 바라는 상황에 처해 본 프로그래머라면 이 책에서 제시하는 데이터사이언스에 특화된 프로그래밍 기법이 실무에 적용하기 얼마나 편리하게 정리되어있는지 감탄하게 될 것이다. - -아울러 때로는 실무에 필요한 요소를 바로 찾아내기 어려운 방대한 통계의 바다에서 실무 문제에 어떤 기술을 어떤 상황에서 빠르게 적용해야 하는지 바로 제시함으로써 실무에 특화된 통계적 시각을 함양하게 해준다. - -컬러판으로 출간되어 코드에 대한 가독성도 훌륭하여 아쉬운 점이 거의 없다. 굳이 찾자면 제목에 임팩트가 너무없기에 다른 서적과 중복된 내용을 다루는 듯한 느낌이 든다는 것? 머신러닝 서적을 수십권 보유한 필자와 같은 독자들의 시선을 한번에 사로잡기 어렵다는 정도이다. 필자에게 네이밍 센스는 없지만 적어도 "데이터 유형별 전처리 기법 전부 + 전처리를 통한 실무 모델링" 정도의 느낌이 풍기는 제목이었다면 더 유명해지지 않을까 싶다. 다행히도 본 리뷰를 접하는 독자가 있으시다면 적어도 다른책에서 흔히 다루는 뻔한 머신러닝 모델 의 중복 설명을 다루는 책이 아님을 아실 것이다. 관련 업계 실무자라면 꼭 일독을 권한다. - - -> \<한빛미디어 출판사\> -> -> 믿고보는 "한빛미디어 출판사". IT분야에서 독보적인 양질의 도서를 출판하는 회사입니다. "나는 프로그래머다" 팟캐스트 후원, DevGround2019 행사, 리뷰어 모집, 다양한 학습 지원 등 다양한 분야에서 사회에 공헌하는 개발자와 공생하는 업체입니다. IT분야에 관심 있으시다면 한빛미디어의 책으로 후회없는 출발을 하실 수 있습니다. - -[한빛미디어 바로가기](http://www.hanbit.co.kr/) \ No newline at end of file diff --git a/_posts/2019-10-28-review-book-numpy-linear-algebra.markdown b/_posts/2019-10-28-review-book-numpy-linear-algebra.markdown deleted file mode 100644 index a1b38668f..000000000 --- a/_posts/2019-10-28-review-book-numpy-linear-algebra.markdown +++ /dev/null @@ -1,148 +0,0 @@ ---- -layout: post -title: "[리뷰] 파이썬과 NumPy로 배우는 선형대수" -subtitle: "Learning a Linear Algebra with Python and NumPy" -categories: review -tags: review book python numpy linear algebra -comments: true -header-img: img/review/2019-10-28-review-book-numpy-linear-algebra-1.jpg ---- - -## 개요 -> 본 리뷰는 `비제이퍼블릭` 출판사 `"파이썬과 NumPy로 배우는 선형대수(이정주 저)"`를 읽고 얻은 지식을 정리한 글입니다. - -- 목차 - - [도대체 보스턴 주택가격 예측이 선형대수랑 뭔 상관이야?](#도대체-보스턴-주택가격-예측이-선형대수랑-뭔-상관이야) - - [선형대수를 쉽게 익히기 위한 본 도서의 장점](#선형대수를-쉽게-익히기-위한-본-도서의-장점) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [책의 구성 및 요약](#책의-구성-및-요약) - - [요약하며...](#요약하며) - - -## 도대체 보스턴 주택가격 예측이 선형대수랑 뭔 상관이야? ---- -책 소개에 앞서 잠시 선형대수의 맛을 보여드리고자 한다. 선형대수의 맛이라도 보지 않고는 그저 고1때 배웠던 행렬 정도로 피상적인 주입식 개념만 가진 채 앞으로도 그때처럼 선형대수를 마주하게 될 것이다. 그렇게 배운 지식은 쉽게 잊혀지고 잊혀지지 않아도 언제 어디에 써야 하는지 알수가 없다. 더불어 이 책이 왜 필요한 것인지도 제대로 알 수 없다. - -아마 이 글을 읽고 계신 대부분의 독자분들은 선형대수 자체를 배우기 위한 목적보다는 데이터 사이언스, 머신러닝, 딥러닝 예제를 구현하다 거꾸로 선형대수라는 기초를 튼튼히 하고자 오신 분들이 대다수일 것이다. 선형대수 책을 펴면 역행렬, 가우스 소거법, 단위행렬과 같은 생소한 수학 단어들이 즐비한데 보스턴 주택가격 예측 예제에는 저런 단어들이 나오지 않는다. 본 포스팅은 그 먼 간격을 좁히고 그 과정에 이 책이 얼마나 도움이 되는지를 알리는 데에 있다. 먼저 선형대수를 왜 알아야하는지 설명하면서 그 간격을 좁혀보고자 한다. - -* __가우스소거법과 역행렬__ - - 연립방정식 : 수포자가 아니라면 "그래 이 정도는 알고 있지."라고 생각하실 것이다. - + 1식 : `2x + 3y = 7` - + 2식 : `x + y = 3` - + 그렇다. 미지수가 2개이고 방정식도 2개이며 x, y를 각각 구하는 문제이다. 기억이 나시는지? - - - 가우스소거법 : "어디서 많이 들어봤는데.." 그렇다. 우리는 주입식 교육으로 중고교 시절 분명히 이것을 들었다. 먹고 사느라 잊혀졌지만 사실 별건(?) 아니다. - + (2,3) * (x) = (7) - + (1,1) * (y) = (3) - + 위 식을 이렇게 행렬로 변환한 후 역행렬과 단위행렬을 활용해 해를 구하는 방법이다. 여기서 우리가 알던 `수식들이 다른 차원의 세계 즉, 행렬의 형태로 변환이 가능`하고 심지어 해도 구할 수 있다는 것을 알게된다. - - - 역행렬 : "분명 배웠는데 뭔진 모르겠네.." 역시 별것아니다. 행렬 A에 곱하면 결과가 단위행렬이 되는 행렬이다. - + 그럼 이건 왜 중요하냐? `역행렬이 존재하면 연립방정식의 해가 존재하는지 알 수 있다.` 더불어 고유값, 고유벡터 계산시 활용된다. - -* __벡터, 벡터공간, 선형사상__ - - 벡터 : (2,3)과 같이 그저 1차원의 행렬이다. 가로, 세로 둘중에 하나만 있는 행렬이라고 생각하면 된다. - + 이걸 좌표에 그려보자. 그럼 x축이 1이고 y축이 2인 선이 만나는 곳에 점이 찍힐것이고 이것을 어떤점과 이으면 그것이 벡터다. - + 어? 그런데 위의 연립방정식 1식을 x,y축 좌표에 그리면 비슷한 모양의 직선이 된다. - + 모양이 비슷하지 않은가? 여기서 우리는 `"벡터=함수"`라는 것을 착안할 수 있다. - - 벡터공간 : 2개의 벡터가 만나면 생기는 공간. 여기서 우리는 `벡터 2개로 2차원의 평면 세계`를 다룰 수 있음에 주목해야 한다. - - 선형사상 : (2,3)과 같은 벡터에 10을 곱하면 (20,30)으로 변한다. 즉, `벡터라는 함수에 10을 곱하는 함수를 곱할 수 있다.` - -* __시각화와 GPU__ - - 시각화 - + 우리는 머신러닝을 다룰 때 시각화에 크게 의존한다. 수식 자체보다는 시각적 요소가 우리에게 직관을 쉽게 전달해주기 때문이다. - + SVM 분류를 다룰 때 초평면을 사용한다. 수식으로 보면 난해하겠지만 시각화를 이용하면 분류의 성공여부를 쉽게 파악할 수 있다. - + 수식으로만 알고 있던 것들이 벡터로 표현 가능함을 알았고 벡터로 그림을 그릴 수 있음을 위에서 설명했다. 이제 `시각화 도구를 구현하려면 위에서 설명한 선형대수를 활용하면 가능하다`는 것을 알게 되었다. - - GPU - + GPU는 대량의 실수 연산처리를 병렬로 수행할 수 있다. 가우스소거법에서 든 예처럼 `행렬로 데이터를 전달하면 GPU의 자원을 매우 효율적으로 활용할 수 있게 된다.` - -* __컴퓨터그래픽스와 이미지 전처리__ - - 데이터 사이언스와 별개로 특히 게임분야에서는 렌더링, 물리엔진 등 수학적 기법이 활용되고 있다. 2D, 3D 등 그래픽스의 구현을 위해서 위에서 설명한 선형대수가 활용된다. - - 딥러닝에 있어서도 이미지 전처리 과정에서 벡터를 중심으로 한 선형대수가 활용된다. `드랍아웃은 물론 이미지 회전, 이동, 확대/축소, 스케일 변환에 있어서 선형대수로 거의 모든 처리가 가능`하다. 즉, 수식을 행렬로 바꾸어 GPU에 전달이 가능해진다. - -* __최소제곱법과 딥러닝__ - - 최소제곱법은 익숙하실 것이다. 보스턴 주택가격 예측 예제 코딩하면서 시각화를 통해 선형회귀 모델의 결과로 산점도 사이의 정중앙을 통과하는 직선을 우리는 보았다. 그런데 이게 선형대수와 무슨 상관인가? 이제 간격을 좁힐때가 왔다. - - 연립방정식의 해는 방정식의 수와 미지수가 동일할 때 구할 수 있다. 하지만 방정식이 더 적고 해가 많다면 해가 무수히 존재하게 된다. 이때 해를 찾을순 없지만 정답에 가까운 근사해를 찾고 싶다면 오차제곱합이 가장 적은 하나의 선을 얻게 되는데 바로 이 기법이 최소제곱법이다. 즉, 위의 예시와 같이 `수많은 연립방정식이 선형대수를 활용하여 빠르게 GPU에게 연산을 맡길 수 있게 된다.` - -* __PCA(주성분분석)__ - - 주성분분석은 데이터 개수에 비해 차원이 클 경우에 대량의 차원에서 최대한 특성을 보존한채로 차원을 축소하는 기법이다. - - 이때 특성을 최대한 보존하기 위해 `분산이 최대인 주성분을 찾게 되는데 이것이 고유벡터다.` - -글이 예상외로 너무 길어져 이 즈음에서 줄일까 한다. 선형대수는(다른 수학도 마찬가지) 적어도 공학에 적용됨에있어서 만큼은 `WHAT << WHEN & WHERE`임을 강조하고 싶다. 우리나라 교육의 문제이기도 하다. 우리는 WHAT을 암기로만 외웠고 그 암기로 계산을 빨리 푸는데에만 집착했다. 그런데 그렇게 배운 지식을 언제, 어디에 써야하는지는 아무도 모른다. - -우리는 수학을 배워서 구멍가게에서 과자 사먹을때 계산할 때나 쓰지 언제쓰냐고 하고 있을 때, 미국에서는 선형대수와 미적분으로 경사하강법, 오차역전파법을 고안했고 그 결과 알파고를 만들 수 있었다. - - -## 선형대수를 쉽게 익히기 위한 본 도서의 장점 ---- -위 장에서 선형대수를 통해 우리 세상의 복잡한 수식을 연산 구조를 보존한 채 효율적으로 정형화 된 형태로 표현할 수 있음을 어렴풋하게나마 알게 되었다. 더불어 컴퓨터가 빠른 속도로 계산하기 쉬운 형태로 변환할 수 있다는 점, 그로인해 시각적 표현도 가능해 졌다는 점을 알게 되었다. 이제 그 구체적인 방법을 배울 차례인데 이 책에 그 해답이 담겨있다. - -필자는 프로그래머이고 위에서 언급했듯 선형대수를 익히기 위해 `WHAT보다는 WHEN, WHERE`가 중요했고 그로인해 수학 기본서보다는 프로그래머 전용의 수학책을 선호한다. 이 책도 그 중 하나인데 다른책에 비해 매우 쉽게 선형대수에 접근할 수 있다는 장점이 있다. - -딥러닝을 학습하다보면 배워야 할 것이 너무 많아 자칫 기본을 소홀히하고 지나가기 쉽다. 코딩 한줄 음미하여 그런가보다 하고 넘어가다보면 캐글 같은 문제를 접하거나 모델링을 시도할 때 어디서부터 시작해야 할지 막막해지곤 한다. 가끔 침착한 마음으로 그 본질을 되새기다보면 머리속 복잡했던 개념들이 말끔히 정리되어 불현듯 해답이 떠오르곤 하는데 이 책을 읽다가 그런 느낌을 자주 받을 수 있었다. - -저자는 미처 선형대수에 접근하지도 못한 채 낙오하는 독자를 한명도 남기지 않고자 파이썬을 다루기 위한 사전 작업에서부터 꽤 신경을 쓴 것 같다. 파이썬의 기본문법은 물론이고 설치과정, Numpy까지 친절히 설명하며 리스트 등의 다른 자료구조와 무엇이 다르고 그로인해 어떤점을 유의해야 하는지 자세한 예제를 통해 전달한다. 그 과정에서 파이썬과 Numpy에 대한 상당한 자신감을 갖고 선형대수를 접하게 된다. - -선형대수 역시 기본부터 천천히 다룬다. 인상적이었던 점은 모든 과정을 시각화하며 확인한다는 점이다. 처음엔 자칫 느린 진행처럼 보여 시간이 아깝진 않을까 우려가 되었으나 급할수록 돌아가라 했던가. 코드로 직접 구현하며 수식을 음미하고 시각화를 통해 눈으로 확인하는 확인사살까지 거치다보니 투자한 시간이 전혀 아깝지 않을정도로 머리속에 모호했던 개념들이 뚜렸하게 보이기 시작했다. 그리고 코드 구현 및 시각화 구현 과정에서 소요된 시간은 생각보다 길지 않았다. - -예를들어 아래 그림은 역행렬이 존재하지 않아 연립방정식의 해가 존재하지 않는다는 예제를 다룬 페이지이다. 위에서 언급한 기본 개념을 코드 및 시각화 구현을 통해 확실히 이해함으로써 역행렬의 개념을 보다 확실히 잡을 수 있었다. -![역행렬](https://theorydb.github.io/assets/img/review/2019-10-28-review-book-numpy-linear-algebra-2.jpg) - -다음 그림은 최소제곱법을 도출하는 수식을 제시하고 코드 및 시각화를 통해 어떤 상황인지 명확히 인지시켜준다. 그동안 두루뭉실하게 외우고 넘어갔던 지식들을 제대로 이해하는 계기가 되었다. -![최소제곱법](https://theorydb.github.io/assets/img/review/2019-10-28-review-book-numpy-linear-algebra-3.jpg) - -이미지를 확대, 축소, 이동, 변환하는 예제를 직접 구현하여 시각화해보면 수식과 숫자에 숨어있는 또 다른 의미가 명확히 보이게 된다. 수식에 대한 가독성이 높아진다고나 할까? 시각화를 선택한 저자의 판단은 옳았다. -![변환](https://theorydb.github.io/assets/img/review/2019-10-28-review-book-numpy-linear-algebra-4.jpg) - -그렇게 선형대수에 대한 자신감이 끓어오를때 즈음 이미지에 적용한 응용 예제가 나온다. 이미지의 기하학적 변환, Planar Rectification 등의 예제를 통해 선형대수가 어떻게 공학에 활용되는지 보다 구체적인 인사이트를 얻을 수 있다. -![Rectification](https://theorydb.github.io/assets/img/review/2019-10-28-review-book-numpy-linear-algebra-5.jpg) - -마지막으로 저자 특유의 꼼꼼한 설명으로 인공신경망에 대해 정리해준다. 선형대수와 크게 관련이 없는 내용이지만 인공신경망의 구조를 처음 접했을때와 달리 선형대수의 시각에서 접근하며 보게되어 밀도 높은 학습효과를 준다. 전체적으로 수수하면서도 내실이 꽉찬 묘한 정이 가는 기술서이다. -* [책소개 Link](http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791190014465&orderClick=LEa&Kc=) - - -## 누가 읽어야 하는가? ---- -- 데이터사이언스 선행학습으로 선형대수의 기본 개념을 탄탄히 잡고싶은 개발자. - -- 선형대수를 프로그래밍으로 구현해보고 싶은 수학도. - -- 선형대수의 기초 개념조차도 이해하기 쉽지 않으신 분. - -- 기타 선형대수, Python, 이미지 전처리 등을 배우고 싶은 학생, 실무자, 경영자 등 - - -## 책의 구성 및 요약 ---- -이 책은 크게 세부분으로 구성되며, 각 파트에서 다루는 내용을 아래와 같이 요약해 보았다. - -- __1. 파이썬과 넘파이(1 ~ 2장)__ - - 파이썬 개발환경 셋팅, 데이터타입, 제어문, 함수, 모듈, 입출력 등 - - 넘파이 배열, shape, 슬라이싱, 복사, 브로드캐스팅 등 - -- __2. 선형대수(3장)__ - - 시각화, 벡터, 행렬 - - 선형결합, 벡터공간, 벡터와 행렬 간 곱셈 등 - - 선형 연립방정식, 행렬식, 고유값, 고유벡터 등 - -- __3. 응용예제 및 인공신경망(4장 ~ 6장)__ - - 이미지의 기하학적 변환 - - 호모그래피 행렬과 Planar Rectification - - 인공신경망의 기본구조(레이어, 활성화함수, 가중치, 모델학습, 피드포워드, 경사하강법, 역전파 등) - - -## 요약하며... ---- -딥러닝을 학습하다보면 배워야 할 것이 너무 많아 시간에 쫓겨 자칫 기본을 소홀히하고 지나가기 쉽다. 이 책은 시간에 대한 부담은 잠시 접어두고 기본에 충실하게 만든다. 마치 여행을 한번 갔다오는듯한 착각을 불러일으키는 책이다. 파이썬의 기본문법은 물론이고 설치과정, Numpy까지 친절히 설명하며 다른 자료구조와의 차이점, 유의사항까지 상세한 예제를 통해 전달한다. - -이 책의 백미는 모든 과정을 시각화하며 확인한다는 점이다. 코드로 직접 구현하며 수식을 음미하고 시각화를 통해 눈으로 확인사살까지 거치다보면 머리속에 모호했던 개념들이 뚜렷하게 보이기 시작한다. 선형대수의 이해를 위해 전 과정을 시각화 한 저자의 선택이 탁월했다고 생각하며, 덕분에 수식과 숫자에 숨어있는 또 다른 의미가 명확히 보이게 된다. 일종의 수식에 대한 가독성이 높아진다. 특히 선형대수에 고질적인 어려움이 있는 독자라면 꼭 일독을 권하고 싶다. - -반면 아쉬운 점은 크게 없지만 컬러판이 아니라는 정도인데 상당한 지면수에 따른 비용을 감안할 때 어쩔 수 없는 선택이었다는 생각이 든다. 더불어 인공신경망 부분의 설명은 선형대수 중심으로 전개하고 기존 시중에 나온 서적과의 중복된 부분은 개념위주로 최소화 했다면 더욱 명작이 되지 않았을까하는 아쉬움이 남는다. - -전반적으로 겉모습은 수수한데 내실은 꽉찬 장인의 냄새가 나는 묘한 정이 가는 기술서이다. 선형대수에 관심이 있는 사람이라면 일독을 권한다. 그동안 경험하지 못했던 선형대수에 대한 새로운 시각을 얻게 될 것이다. - - -> \<비제이퍼블릭 출판사\> -> -> 책 한권만으로도 실무를 수행할 수 있을 정도의 실용성, 기존 출간된 책에서 다뤄지지 않았던 가려웠던 구석을 시원하게 긁어주는 참신함, 피상적인 접근으로 그런가보다 넘어가기 쉬운 지식에 대한 깊이있는 고찰을 담은 장인 냄새가 나는 출판사입니다. 더불어 참신한 해외 번역서, 최신 트렌트를 겨냥하는 양질의 서적을 자주 출간하여 필자의 책장에도 어느덧 십여권의 책이 꼽혀있네요. IT 실력을 향상시키는데 있어 뭔가 허전하거나 시간은 투자대비 내공이 채워지지 않는 공허함이 생긴다면 비제이퍼블릭 출판사의 책 목록을 살펴보시기 바랍니다. - -[비제이퍼블릭 바로가기](http://www.bjpublic.co.kr/) diff --git a/_posts/2019-11-11-review-book-dynamic-programming.markdown b/_posts/2019-11-11-review-book-dynamic-programming.markdown deleted file mode 100644 index 3cba00d42..000000000 --- a/_posts/2019-11-11-review-book-dynamic-programming.markdown +++ /dev/null @@ -1,167 +0,0 @@ ---- -layout: post -title: "[리뷰] 다이내믹 프로그래밍 완전정복" -subtitle: "Dynamic Programming Completely" -categories: review -tags: review book dynamic programming -comments: true -header-img: img/review/2019-11-11-review-book-dynamic-programming-1.jpg ---- - -## 개요 -> 본 리뷰는 `한빛미디어` 출판사 `"다이내믹 프로그래밍 완전정복(미나크시, 카말 라와트 저)"`을 읽고 얻은 지식을 정리한 글입니다. - -- 목차 - - [무서운 `재귀`, 더 무서운 `Dynamic Programming(DP)`](#무서운-재귀-더-무서운-dynamic-programmingdp) - - [다이내믹 프로그래밍을 위한 본 도서의 장점](#다이내믹-프로그래밍을-위한-본-도서의-장점) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [책의 구성 및 요약](#책의-구성-및-요약) - - [요약하며...](#요약하며) - - -## 무서운 `재귀`, 더 무서운 `Dynamic Programming(DP)` ---- -프로그래머 혹은 컴퓨터 공학도라면 누구나 이 무서운 단어들을 들어봤을 것이다. 대부분의 프로그래머는 이런 용어가 세상에 존재하는구나 하는 정도로 넘어가고 잊어버린다. 이 단어들은 프로그래머에게 왜 무서운 단어가 되었을까? 먼저, 본 도서의 장점을 전달하기 위해 필자가 겪었던 다이내믹 프로그래밍 경험을 말씀드리고자 한다. - -* __이름부터가 직관적이지 않다.__ - 본 도서 서문 "옮긴이의 말"에서 역자는 Dynamic Programming을 "동적계획법"이 아닌 "다이내믹 프로그래밍"으로 음차하겠다고 소개한다. 자칫 독자가 프로그래밍 방법론으로 혼동할 수 있기 때문이다. 역자가 우려하듯 우리말 번역과정에서 진의가 꽤 소실된다. - - 리처드 벨만은 그의 자서전, "태풍의 눈"에서 Dynamic Programming의 어원을 다음과 같이 설명한다. - > '의사 결정 프로세스'라는 이름을 사용했지만, 여기에서 '프로세스(Process)'라는 단어를 사용하는데 여러가지 차질이 생겨버리고 만 것이다. 그래서 나는 사람들이 알지 못하게 '계획법(Programming)'이라는 단어를 붙였다. 또한 나는 이 프로세스가 다단계로 이루어져 있으며, 시가변적(time-varing)이며, '동적(Dynamic)'이다라는 개념(idea)이 전달되길 원했다. 이 단어야말로 내가 연구하는 알고리즘의 성질을 정확하게 짚어내었고, 게다가 윌슨에게도 피해를 입히지 않으며 공군도 이 단어에선 꼬투리를 잡지 못했으니 그야말로 일석이조의 효과를 누린 것이다. - - 벨만이 처한 상황에는 당시 모종의 정치적인(?) 이유가(상급자, 연구비 등) 개입되며 직관성이 흐려진 듯 하다. 그래서 필자는 대다수의 해석에 따라 다음과 같은 뉘앙스로 이해한다. - - + 다이나믹(Dynamic) : 동적 메모리(`시간에 따라 변하는 메모리`) - + 프로그래밍(Programming) : 다단계(`큰 문제 안에 작은 문제들이 중첩된`)로 이루어진 문제 풀이`계획` - + 결론 : `시간에 따라 변하는 데이터를 고려하여, 큰 문제를 작은 문제로 쪼개서 푸는 방식` - -* __실무에서 좀처럼 쓰이지 않는다.__ - ``` - 여러분은 지금까지 재귀 혹은 다이내믹 프로그래밍을 몇번이나 활용하셨는지? - ``` - 필자 역시 대학원 혹은 취업 면접이 있을때만 책으로 접했고, 실무에서 사용한 경험은 많지 않다. 가장 쉬운 경험을 예로 들자면 `즐겨찾기 관리를 위한 App`을 개발하면서 즐겨찾기 폴더를 순회하여 폴더별 저장된 URL을 가져오는 용도로 활용한 적이 있다. - -* __시간복잡도와 찰떡궁합이다.__ - 위에서 언급한 즐겨찾기 관리 App의 경우를 보자. 테스트를 진행하며 폴더 Depth를 100으로 늘렸더니 생각외로 꽤 오랜 수행시간이 소모되었다. 재귀함수를 이용하여 매우 소량의 코드로 문제를 해결한데다 기억이 가물가물한 재귀를 제법 빠르게 구현했기에 나름 속으로 '아직 살아있구만!'라고 자화자찬하던 와중에 약간 충격을 받았다. - - 다른 관련코드들 역시 시간을 잡아먹을만한 부분이 보이지 않아서 결국 알고리즘 책을 간만에 펼쳤다. 문제는 의외로 간단했다. 재귀 함수의 `시간복잡도가 지수시간을 잡아먹고 있었던 것이다.` 알고리즘의 기초 내공의 중요함을 다시금 깨닫게 된 순간이었다. - -* __메모리 구조와 밀접한 관련이 있다.(공간복잡도)__ - 경력 2년차 초보때 벌어진 일이라 혼자만의 추측이 시작되었다. "결국 재귀를 버려야 하나..? 이래서 사람들이 재귀를 안쓰는 거구만..!"등등...결국 Loop를 이용해서 다시 구현할까 생각했는데 왠지 지는 느낌이 들어 싫었다. 결국 다시 알고리즘 책을 펴보았다. 역시나 선배들이 해결해 온 역사를 통해 힌트를 얻을 수 있었는데 `메모이제이션(Memoization)라는 캐시 기능`을 활용하여 재귀 함수가 호출될 때 시간복잡도를 O(N)으로 줄일 수 있었다. 배열 하나 썼을뿐인데 이렇게 속도가 빨라지다니! 조금 더 흥미가 생기기 시작했다. - - 메모리 구조를 분석하며 얻은 또 하나의 수확은 `Stack 시각화를 통한 개념 명확화`였다. 메모리 및 스택을 그림으로 그리고 활성레코드 함수 변화를 정리해보니 어렴풋했던 재귀 호출의 동작방식이 명확하게 이해되는 것이었다. 당시 정립한 개념 덕분에 지금도 DP를 활용하여 개발할 때 머리 속 스택그림의 도움을 많이 받는다. - -* __일상속의 직관과 거리가 멀어 전략이 필요하다.__ - 꼬리에 꼬리를 끝없이 물어가는 재귀 호출을 구현 시 명확한 기준이 없다면 재귀적 사고의 악순환(?)이라는 주화입마에 빠지고 만다. 머리가 복잡해지면서 뇌는 본능적으로 재귀를 피하려고 한다. 따라서 가장 중요한 것은 뇌에게 탈출구를 안내할 수 있는 `종료조건`과 `작은 문제에 대한 명확한 정의`이다. - - 재귀가 보통 `Top-Down` 방식을 이용하는 것과 달리(Top-Down 방식은 이름에서 유추할 수 있듯이 보다 큰 인자에서 작은 인자로의 재귀 호출을 반복한다. 따라서 동일한 인자를 가지는 함수가 매번 수행되어 성능상 치명적인 약점을 가지게 된다. 대신 코드의 가독성이 높다.) DP에서는 `Bottom-Up`방식을 이용한다. - - 재귀에 비해 크게 어려울 것이 없는것이 함수대신 변수(배열 등)의 이미 연산된 작은 값들을 활용하여 큰 값들을 반복적으로 채워나가는 방식이다. 덕분에 동일값에 대한 연산을 피하여 성능을 높일 수 있는 장점이 있다. 재귀와 마찬가지로 DP를 적용할 수 있는 문제인지 어떻게 세부적으로 구현할 지 등에 대한 전략이 존재한다. - -* __면접과 실무를 넘어서서...__ - DP 자체를 명확히 이해하는 것도 중요하지만 공학분야에 있어서만큼은 언제, 어디에 적용할 수 있는지를 아는 것이 더 중요하다. ([참고 : WHAT << WHEN & WHERE](https://theorydb.github.io/review/2019/10/28/review-book-numpy-linear-algebra/#%EB%8F%84%EB%8C%80%EC%B2%B4-%EB%B3%B4%EC%8A%A4%ED%84%B4-%EC%A3%BC%ED%83%9D%EA%B0%80%EA%B2%A9-%EC%98%88%EC%B8%A1%EC%9D%B4-%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98%EB%9E%91-%EB%AD%94-%EC%83%81%EA%B4%80%EC%9D%B4%EC%95%BC)) DP는 언제 어디에 적용할 수 있을까? - + 부분적으로는 O(n^3) 등 다항식 수준의 시간복잡도를 O(n*logn) 등의 로그 수준으로 줄여 성능을 높일경우 DP를 활용할 수 있을지 판단해야 한다. - + 더불어 한단계 수준을 넘어선 전혀 다른 영역에의 응용이 가능하다. 예를들면 `강화학습`이 있다. - > 강화학습은 각 Step별 Action을 취하는 문제를 모델이 없는(Model-free)상태에서 MDP(Markov Decision Process)를 활용하여 풀어나가는 방법이다. 때문에 Model의 Environment에 해당하는 Reward, State Transition Probability등을 최적화하기 위해 `Learning`(학습)을 해 나간다. - + DP와의 접점이 느껴지시지 않는지? - > DP는 Model을 완벽히 안다는 전제하에(Model-based) Bellman Equation을 풀어 Environment를 구하는 방식이다. 그래서 `Planning`이라고 부르며 이를 보완하여 Learning을 통해 Environment를 최적의 상태로 찾아가는 것 즉, 강화학습 알고리즘을 만들게 된 것이다. 때문에 DP의 개념 및 활용방안을 정확히 모른다면 강화학습에 대한 이해는 물론이고 보다 나은 방법을 찾기가 거의 불가능할 것이다. - + 더불어 문자열 연산을 다루는 `NLP`에 있어서도 DP의 문제 해결방식은 큰 도움을 준다. - -DP에 대해 더 설명하고 싶지만 필자의 짧은 지식으로는 여기까지다. 하지만 경제학 등 DP의 활용도는 무궁무진할 것이고 어떻게 다른 지식과 융합, 보완하느냐에 따라 멋진 걸작이 나올지도 모른다. 필자가 경험한 이 일련의 과정에 비추어 본 도서가 어떤 장점을 갖는지 다음장에서 간단히 다뤄보고자 한다. - - -## 다이내믹 프로그래밍을 위한 본 도서의 장점 ---- -앞장에서 다이내믹 프로그래밍 경험 및 스스로 학습해왔던 과정을 간략하게 설명하였지만, 사실 그 간략함이 몇 년간 다이내믹 프로그래밍과 관련하여 학습한 지식의 거의 전부이다. - -본 도서를 읽으며 놀라웠던 점은 필자가 겪었던 시행착오나 전략이 고스란히 담겨있다는 것이다. 필자의 지식이 고수들에 비할바 못하는것을 알면서도 꼭 이런 양서를 만나면 나만알고 있었을 듯한 밑천이 외부에 다 털린 느낌이 들어 배가 아프다. 하수라서 그런것일까? - -다이내믹 프로그래밍 자체를 적용하기 위해 몇일간 고민했던 흔적은 아이러니하게도 자연어로 정리하면 고작 한줄 정도 담긴다. 즉, 다이내믹 프로그래밍을 자연어로 정리하면 설명력이 크게 떨어진다. 미묘한 기법과 뉘앙스를 전달하기 위한 사고과정에 대한 뚜렷한 설명이 거의 불가능하다는 것이다. - -때문에 본 도서 또한 전략과 이론에 관련된 내용이 매우 짧다. 거의 대부분의 페이지는 예제와 예제의 설명, 시각적 설명이 차지하고 있다. 많은 예제를 바탕으로 사고과정을 공유하는 것이 거의 유일한 해결책이라는 생각이 드는데 본 도서가 그런 접근법을 통해 다이내믹 프로그래밍 예제를 같이 풀어보고 알기쉽게 설명해줌으로써 주화입마에 빠질 우려를 줄여준다. - -* __명쾌한 전략제시__ - 앞서 설명한 바와 같이 자연어로 다이내믹 프로그래밍이라는 문제풀이 접근방식을 설명하긴 보통 어려운 일이 아니다. 대신 기억하기 쉬운 핵심 전략을 머리속에 두고 접근하는 것과 대책없이 프로그래밍을 시작하는 것은 큰 차이가 있다. 아래 그림은 다이내믹 프로그래밍과 메모이제이션 그리고 재귀 호출에 대한 핵심 전략을 기술한 페이지이다. - ![다이내믹 전략](https://theorydb.github.io/assets/img/review/2019-11-11-review-book-dynamic-programming-8.jpg) - ![메모이제이션 전략](https://theorydb.github.io/assets/img/review/2019-11-11-review-book-dynamic-programming-5.jpg) - ![재귀 전략](https://theorydb.github.io/assets/img/review/2019-11-11-review-book-dynamic-programming-2.jpg) - -* __사고과정의 이해를 돕는 시각화__ - 다이내믹 프로그래밍은 예제와 실전을 통한 사고과정의 고민의 깊이가 어느 정도인지에 따라 그 활용 능력이 갈린다. 사고과정이 일상의 직관과는 동떨어져있어 쉽게 포기하기 쉬운데 절대 포기하지 않도록 저자, 역자의 고민의 흔적이 설명에 녹아있다. 더불어 아래 그림과 같이 직관적인 이해를 돕는 시각화를 통해 이해도를 크게 높여준다. - ![다이내믹 순서도](https://theorydb.github.io/assets/img/review/2019-11-11-review-book-dynamic-programming-6.jpg) - ![계산되지않는노드](https://theorydb.github.io/assets/img/review/2019-11-11-review-book-dynamic-programming-7.jpg) - -* __원리를 바탕으로 한 전달력, 중간중간 깨알같은 선수지식의 소개__ - 기저에 숨어있는 원리를 설명하지 않고 소스코드의 주석과 결과만으로는 다이내믹의 정수를 얻기 힘들다. 기본 원리를 절대 놓치지 않으려는 시도가 이 서적의 또 다른 매력이다. - - 예를들면 다이내믹 프로그래밍이 가지는 장점을 소개하기 위해, 또 이해도를 높이기 위해 메모리 구조를 설명한다. 이를 통해 공간복잡도의 계산이 훨씬 쉬워지고 다이내믹 프로그래밍이 얻게되는 시간, 공간복잡도 성능향상이 어느정도인지 개념적으로 와 닿도록 도와준다. - - 아래 그림은 메모리 구조 및 스택영역에서의 재귀함수의 활성레코드를 보여줌으로써 머리속에 스택의 동작방식을 이해하고 있는것이 얼마나 다이내믹 프로그래밍에 대한 이해도를 높여주는지 알 수 있게 해준다. - ![메모리구조](https://theorydb.github.io/assets/img/review/2019-11-11-review-book-dynamic-programming-3.jpg) - ![스택 활성레코드](https://theorydb.github.io/assets/img/review/2019-11-11-review-book-dynamic-programming-4.jpg) - -* __다이내믹 프로그래밍과 관련된 거의 모든 예제__ - 본 도서에 소개된 재귀 및 다이내믹 프로그래밍의 관련 예제는 무려 20개가 넘는다. 그 정도면 거의 왠만한 실무를 커버할 수 있는 수준이 아닌가 싶다. 제대로 이해를 못했다면 예제의 감각이라도 충분히 잡아 반드시 활용할 수 있게 해주려는 저자의 의지가 돋보인다. - - 아래 그림은 필자가 재미있게 풀어본 예제인 "문자열 인터리빙 확인" 문제인데 사고과정을 명확하게 시각화하여 이해를 돕는다. - ![다이내믹 전략](https://theorydb.github.io/assets/img/review/2019-11-11-review-book-dynamic-programming-9.jpg) - - 더불어 아래 "거스름돈 최적화" 문제와 같이 DP와 유사한 탐욕 알고리즘과의 비교도 시도한다. 탐욕 알고리즘이 반드시 최적해가 아닌 케이스를 설명하며 비교 과정을 통해 DP 특성에 대한 이해를 더욱 높여준다. - ![다이내믹 전략](https://theorydb.github.io/assets/img/review/2019-11-11-review-book-dynamic-programming-10.jpg) - - 본 도서의 모든 소스코드는 C와 Python 두종류의 언어로 제공된다. 두 언어를 모두 활용한다면 보다 이해도를 높일 수 있다. - -* __기타__ - 끝으로 본 도서를 학습하며 도움이 될만한 유용한 참고자료를 아래 링크로 남긴다. - + [책소개 Link](http://www.hanbit.co.kr/store/books/look.php?p_code=B9440449667) - + [GitHub 소스코드](https://github.com/crapas/dp) - + [C언어 개발환경 구성 - 인생초보자님의 블로그](https://m.blog.naver.com/PostView.nhn?blogId=suwon_man91&logNo=221382448285&categoryNo=11&proxyReferer=https%3A%2F%2Fwww.google.com%2F) - - -## 누가 읽어야 하는가? ---- -- 프로그래머 누구나(특히 면접시험을 앞둔 프로그래머) - -- 재귀호출과 다이내믹 프로그래밍에 정면 도전하고 싶은 분 - -- AI분야의 프로그래머(특히 강화학습, NLP에 많은 도움이 됨) - - -## 책의 구성 및 요약 ---- -이 책은 크게 세부분으로 구성되며, 각 파트에서 다루는 내용을 아래와 같이 요약해 보았다. - -- __1. 재귀호출과 메모리, 활용전략(Part1)__ - - 재귀 접근전략, 재귀 호출과 메모리 - - 최적의 하위구조, 하위 문제의 반복 계산, 메모이제이션(메모전략) - - 예제 : sum(n), 점화식, 하노이탑, 피보나치, 역사이 최소 비용 등 - -- __2. 다이내믹 프로그래밍(Part2)__ - - Top-Down 및 Bottom-Up 접근방식의 차이 - - 다이내믹 프로그래밍의 적용을 위한 전략 - - 예제 : 부분 문자열, 계승함수, 이진트리, 행렬 최소이동비용, 타일공터 채우기, 경우의수, 연속부분 배열의 최댓값 등 - -- __3. 실전연습(Part3)__ - - 최소교정비용문제, 직사각형의 총 경로수, 문자열 인터리빙, 부분집합의 합 - - 최장공통부분수열, 거스름돈 최적화, 철근자르기, 0 -1 배낭, 최장회문부분수열, 달결낙하퍼즐 등 - - 부록 : 시간 및 공간복잡도, 코딜리티(온라인 코딩 테스트) 활용법 - - -## 요약하며... ---- -다이내믹 프로그래밍이 어려운 가장 큰 이유는 일반적인 직관과는 다른 사고방식을 필요로 한다는 점이다. 특히 사고과정을 면대면이 아닌 책으로 기술한다는 것은 더욱 어려운 일일 것이다. - -이런 어려움을 해결하고자 본 도서는 명확한 전략, 사고과정에 대한 깊은 설명, 시각화를 이용한 사고과정의 보조, 원리를 중시한 핵심 개념 설명을 활용하여 DP에 대한 이해도를 극대화 시켜준다. 왜 이 책이 실리콘밸리의 우수한 IT인력을 공급하는 인도 그리고 해외 시장에서 베스트 셀러에 올랐는지 알 수 있는 부분이다. - -아쉬운 점이 하나 있다면 독자로 하여금 DP에 대한 이해를 포기하지 않도록 책 중간중간에 선수 지식이 종종 소개되는데 어느정도 내공이 찬 프로그래머라면 재귀 및 DP에만 집중하기에 약간 산만한 느낌을 받을 수 있겠다는 생각이 들었다. 하지만 초중급자를 위해서는 이만큼 친절할 수가 없다. - -아울러 C, Python 두가지 언어로 예제를 작성한 바 포인터의 유무, 객체지향의 유무 등 언어 특성에 따라 가려지기 쉬운 DP의 개념을 두 언어로 구현, 비교해봄으로써 이해를 명확하게 할 수 있다는 장점이 있다. 더불어 두 언어 자체에 대한 이해도가 높아지는 것은 보너스다. - -예쁜 색상으로 디자인되고 무겁지 않아 들고 다니면 왠지 뿌듯한 감성이 충만된다. 강화학습 또는 NLP를 학습하며 DP의 명확한 개념을 잡고 싶은 분, 알고리즘 코딩 테스트를 앞둔 분, DP를 뽀개 완전히 두려움을 없애고 싶은 분께 꼭 일독을 권한다. - - -> \<한빛미디어 출판사\> -> -> 믿고보는 "한빛미디어 출판사". IT분야에서 독보적인 양질의 도서를 출판하는 회사입니다. "나는 프로그래머다" 팟캐스트 후원, DevGround2019 행사, 리뷰어 모집, 다양한 학습 지원 등 다양한 분야에서 사회에 공헌하는 개발자와 공생하는 업체입니다. IT분야에 관심 있으시다면 한빛미디어의 책으로 후회없는 출발을 하실 수 있습니다. - -[한빛미디어 바로가기](http://www.hanbit.co.kr/) \ No newline at end of file diff --git a/_posts/2019-11-22-review-book-pycharm.markdown b/_posts/2019-11-22-review-book-pycharm.markdown deleted file mode 100644 index a38e0017b..000000000 --- a/_posts/2019-11-22-review-book-pycharm.markdown +++ /dev/null @@ -1,142 +0,0 @@ ---- -layout: post -title: "[리뷰] 파이썬에 참 좋은 PyCharm" -subtitle: "Pycharm good for python" -categories: review -tags: review book python pycharm -comments: true -header-img: img/review/2019-11-22-review-book-pycharm-1.jpg ---- - -## 개요 -> 본 리뷰는 `비제이퍼블릭` 출판사 `"파이썬에 참 좋은 PyCharm(테리엇 저)"`를 읽고 얻은 지식을 정리한 글입니다. - -- 목차 - - [제트브레인(Jetbrains)과 파이참(PyCharm)](#제트브레인jetbrains과-파이참pycharm) - - [Pycharm 체계적인 기능소개](#pycharm-체계적인-기능소개) - - [기본서보다 더 뛰어난 (실용) 기본서](#기본서보다-더-뛰어난-실용-기본서) - - [다시 고급기능으로... 화룡정점](#다시-고급기능으로-화룡정점) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [책의 구성 및 요약](#책의-구성-및-요약) - - [요약하며...](#요약하며) - - -## 제트브레인(Jetbrains)과 파이참(PyCharm) ---- -프로그래머라면 대부분 파이참, 웹스톰, 인텔리제이, 데이터그립과 같은 IDE툴을 한번쯤은 다뤘거나 최소한 들어보기라도 했을 것이다. 이 툴들에게 공통점이 있다면 제트브레인. 즉, 제조사가 동일하다는 것이다. - -필자는 프로그램 언어 중 Java를 가장많이 다뤄봤는데 그때 이 회사의 존재를 알게 되었다. 인텔리제이라는 매력적인 툴을 다뤘기 때문이다. 이클립스도 JAVA를 다루기에 훌륭한 도구이지만, 인텔리제이의 강력한 기능에 빠져든 사람은 쉽게 이클립스로 돌아오기 어렵다. 개인차는 있겠지만 개발자 커뮤니티 또는 주위의 개발자 동료들은 생산성이 2~5배 정도는 되는것 같다고 칭찬일색이다. 그동안 다뤘던 가장 매력적인 IDE Tool을 꼽으라면 Visual Studio를 주저앉고 꼽았었는데 제트브레인 社 제품을 사용하면서 순위가 바뀌게 되었다. 장인정신의 냄새가 가득담긴 기가막힌 IDE툴들을 개발하는 멋진 회사이다. - -아쉬운 점이 있다면 무료인 Community 버전엔 다소 기능제약이 있어 사용자 층이 두텁지 않다는 점과 그로인해 한글화가 부족하여 참조할만한 레퍼런스가 많지 않다는 점이다. 이렇게 훌륭한 툴에도 Trade-Off는 존재하는 씁쓸한 현실. 그 와중에 지금 리뷰하는 "파이썬에 참 좋은 PyCharm" 책을 만나고 얼마나 반가웠는지 모른다. - -인텔리제이는 나름 역사가 깊어 좋은 레퍼런스도 많았지만 Pycharm은 상대적으로 역사가 짧아서인지 좋은 한글 레퍼런스를 찾기가 어렵다. 마침 저자 테리엇님이 먼저 사용하신 좋은 팁들을 체계적으로 구성해 전달하신 덕에 이번 기회에 파이참의 활용 능력을 더욱 높일수 있었다. Python을 다루는 분들이라면 누구나 IDE의 아쉬움에 대해 고민이 많으셨을텐데 이 책을 계기로 Pycharm의 세계에 푹 빠져보시는 것은 어떠실런지.. - - -## Pycharm 체계적인 기능소개 ---- -본 도서에서는 파이참의 기능을 난이도에 따라 체계적으로 구성하였다. 먼저 파이썬을 설치하는 방법에 대해 학습한 후 아래 그림과 같이 파이참을 설치하는 방법을 자세히 다룬다. 설치단계에서부터 주저하는 독자가 없도록 설치과정은 자세하고 친절하게 안내되어있다. -![파이참 설치](https://theorydb.github.io/assets/img/review/2019-11-22-review-book-pycharm-2.jpg) - -설치가 완료되면 아래 그림과 같이 파이참의 IDE의 UI 레이아웃, 컴포넌트별 구성요소를 자세히 설명한다. -![파이참 레이아웃](https://theorydb.github.io/assets/img/review/2019-11-22-review-book-pycharm-4.jpg) - -이어서 자주 활용하는 기능 또는 추천할만한 설정을 통해 파이참에 친숙해지도록 잘 유도한다. 아래 그림은 파이썬의 가상환경을 설정하는 방법으로 자주 활용하는 기능 중 하나의 예시이다. -![파이참 기본](https://theorydb.github.io/assets/img/review/2019-11-22-review-book-pycharm-3.jpg) - -이렇게 파이참에 친숙해진 후 파이썬의 기본 맛보기에 들어간다. 파이썬의 기초조차 모르는 분들이 파이참에 익숙해지는 것은 조금 두려운 일일 수 있다. 이렇게 단계별로 쉽게 다음 심화단계에 적응할 수 있도록 선수지식을 짜임새 있게 배치한 점이 이 책의 매력이다. 어렵지 않은 입출력, 함수, 자료형, 조건문, 반복문, 주석, 예외처리, 패키지 등을 간단한 예제를 작성하며 파이썬을 알려준다. - -단순히 파이썬만 알려주는 것이 아니다. 매번 파이참 도구를 이용해서 예제를 개발하며 그때마다 생산성을 높일 수 있는 파이참의 기능 혹은 단축키를 설명해준다. 파이썬 초보자에게는 두마리 토끼를, 설사 파이썬 능숙자라 할지라도 파이참이 주는 개발 생산성이 얼마나 큰지 비교해볼 수 있는 기회다. 책의 가독성과 짜임새가 훌륭하여 여기까지 진행하는데 겨우 2시간이면 충분했다. - -여기까지 진행하면 파이참이 매우 만만해진다. 왠만한 IDE보다 훨씬 파이썬 코드를 능숙하게 다루는 레벨에 오른다. 그리고 다음에 소개할 5장에서 이책의 백미가 등장한다. - - -## 기본서보다 더 뛰어난 (실용) 기본서 ---- -언어의 기초부터 자세하게 설명하는 여느 기본서와는 달리 이 책의 5장은 파이썬이 어떤 분야에서 강점을 가지는지 알 수 있게끔 매우 재밌는 예제들로 시작한다. 뭐하나 재미없거나 신기하지 않은 것이 없다. 예를들어 아래 그림과 같이 처음부터 MS 클라우드인 Azure에 가입하여 AI API를 활용하는 예제가 등장한다. -![파이참 기본](https://theorydb.github.io/assets/img/review/2019-11-22-review-book-pycharm-5.jpg) - -로컬 PC에서 머신러닝 혹은 딥러닝 예제를 개발한 분들은 많겠지만 클라우드 API를 활용해서 개발한 분은 흔하진 않을 것이다. 파이썬에 API를 접목한 개발을 배우는 것을 넘어서서 AI API 수준이 얼마나 발전했는지 가늠하는 계기가 되고, 나아가 클라우드를 처음 쓰는 분이라면 신세계를 경험할 수 있다. 아래 그림은 zAI 패키지를 활용하여 특정 인물의 사진을 피카소 그림을 학습한 화풍으로 변환한 예제이다. -![사진피카소](https://theorydb.github.io/assets/img/review/2019-11-22-review-book-pycharm-6.jpg) - -데이터 사이언스를 위한 언어답게 의사결정나무를 통한 머신러닝 예제도 다룬다. 주피터 노트북만 다뤘던 분들도 파이참의 또 다른 매력을 느낄 수 있는 계기가 된다. 아래 사진은 Graphviz 라이브러리를 활용하여 의사결정나무를 도식화한 모습이다. -![Graphviz](https://theorydb.github.io/assets/img/review/2019-11-22-review-book-pycharm-7.jpg) - -그 외에도 매우 재밌는 파이썬의 매력을 파이참으로 구현한다. 하루를 온전히 투자할 수 있다면 파이썬으로 이 모든것을 엄청나게 빠르게 해낼 수 있다는 것에 큰 재미를 느끼게 될 것이고, 그 재미에 빠져드는 과정에서 파이참이라는 도구가 내 몸처럼 편안하게 착용되는 느낌을 얻을 수 있다는 점에 이 책에 높은 점수를 주고싶다. 추가로 구현하는 재미있는 예제를 간략히 소개하면 다음과 같다. - -* AI API를 활용한 사진을 텍스트로 변환 -* 영어를 한글로 번역 후 음성으로 변환 -* 파파고 API를 활용한 PDF 문서번역 -* Selenium 및 BeautifulSoup을 활용한 웹브라우저 자동화 및 크롤링 -* 암기하고 싶은 내용을 메일로 받기 -* GUI 기능을 활용한 만능사전 만들기 -* 오픈 API를 이용한 데이터 수집 및 분석 -* 금융데이터 수집, 분석, 시각화 -* MatPlotLib으로 타임 타이머 만들기 -* 의사결정나무로 메이저리그 경기결과 예측하기 -* 웹대시보드 만들기 - -열거한 주제만봐도 만들어보고 싶은 욕구가 샘솟았다. 그래서 책도 굉장히 빨리 읽을 수 있었고, 파이썬의 실용성에 다시금 감탄했으며, 파이참의 생산성에 또 한번 놀랐다. 그 과정에서 파이참은 더욱 능숙해졌다. - -## 다시 고급기능으로... 화룡정점 ---- -어떤 IDE툴일지라도 생산성을 최고로 높이는 Tip중 최고를 꼽으라면 디버깅이라고 말하고 싶다. 위에서 소개한바와 같이 재밌는 예제를 구현하며 흠뻑빠졌다 나오면 이제 익숙해진 파이참에 대한 자신감이 생기고 자연스럽게 다음 스텝에의 적응이 쉬워진다. 디버깅은 IDE툴을 제대로 다루기 위해선 빼놓을 수 없는 기능인 바 자연스럽게 익힐 수 있도록 짜임새있는 구성으로 배려한다. - -더불어 코드 탐색을 손쉽게 다룰 수 있는 방법, 코드 작성 Tip, 그 외의 기능에 대해 소개한다. 아래 그림은 다른 프로그램에서 파일열기, 탐색바로 이동하기, 함수단위로 이동하기 등 다양한 Tip에 대한 기술이다. -![다양한기능](https://theorydb.github.io/assets/img/review/2019-11-22-review-book-pycharm-8.jpg) - -아래 사진은 DB Navigator 플러그인을 설치하여 활용하는 방법을 제시한다. 이처럼 파이참의 본 기능을 충분히 다진 후 다양한 확장기능을 활용할 수 있도록 파이참에 대해 깊이있게 다룬다. -![DB Navigator](https://theorydb.github.io/assets/img/review/2019-11-22-review-book-pycharm-9.jpg) - -* [책소개 Link](http://www.bjpublic.co.kr/?fbclid=IwAR2ADMg2d817hzrDG-AYdpA-PJ79PfDhi62QjYRmXAJMMI7TpNg2AHBIMJY) -* [Github Link](https://github.com/bjpublic/pycharm) - - -## 누가 읽어야 하는가? ---- -- 다른 IDE 환경에 불편이 많아 파이참의 매력을 알고 싶은 분. - -- 파이썬의 매력을 제대로 알고싶은 파이썬 입문자. - -- 파이썬의 깊이보다는 넓이를 폭넓게 파악하고 싶은 기획자, 경영자, 문과생 등 - -- 기타 파이썬, AI, 데이터분석에 관심이 있는 분. - - -## 책의 구성 및 요약 ---- -이 책은 크게 세부분으로 구성되며, 각 파트에서 다루는 내용을 아래와 같이 요약해 보았다. - -- __1. 파이썬/파이참 설치 및 기본연습 (1 ~ 4장)__ - - 파이썬과 파이참 설치하기 - - 파이참 프로젝트, 레아이웃, 초기설정 익히기 - - 파이썬의 기초학습 - * 입출력, 함수, 자료형, 조건문, 반복문, 주석, 예외처리, 패키지 등 - -- __2. 재미있는 예제구현(5장)__ - - AI API, 오픈 API, 수집, 크롤링 활용 - - GUI 및 시각화, 자동화 및 웹개발 - - 의사결정나무 머신러닝 예제 등 - -- __3. 파이참 심화(6장)__ - - 디버깅 및 확장기능 활용 - - 코드 탐색 및 작성 Tip 등 - - -## 요약하며... ---- -제트브레인사의 또다른 명작 IDE `파이참의 활용방법을 다룬 현시점 국내 유일무이한 도서`이다. 처음부터 끝까지 독자가 어려워 나가떨어지는일이 없도록 흥미의 레벨을 서서히 올려가는 가독성있고 짜임새 있는 구성이 이 책의 백미이다. - -더불어 초보자 또는 파이썬 입문자들도 파이썬을 활용하여 어떤 재밌고 편리한 기능을 구현할 수 있는지 예제를 통해 실습해보면서 `스스로의 창의성에 파이썬을 접목시켜볼 수 있는 좋은 계기`를 얻게된다는 점이 큰 장점이라고 할 수 있다. - -파이참은 다양하고 파워풀한 기능을 제공하는 대신 초반에 익숙해지기 약간 까다로운 진입장벽이 있는 편인데 재미있는 예제에 푹빠져 하나씩 팁을 배우다보면 어느새 책을 덮을때 즈음 파이참이 수족처럼 느껴지는 신기한 현상을 경험할 수 있다. 저자는 독자로 하여금 흥미를 잃지않고 숨쉬듯 자연스럽게 훌륭한 IDE를 익힐 수 있게 인도해주는 좋은 선생님 역할을 충실히 수행해냈다 생각한다. - -물론 GUI IDE를 다루는 책의 특성 상 컬러판이었다면 가독성을 보다 높여주었을텐데 라는 아쉬운 마음도 있다. 대신 가독성이 좋은 책이라 흑백으로 봐도 큰 불편함은 없다. - -간만에 프로그램을 처음 배울때 처럼 호기심과 재미만으로, 공부보다는 취미생활하는 느낌을 주었던 책이다. 더불어 일상생활에 사진이나 데이터를 관리하고 시각화하는데 좋은 영감을 얻기도 해 상당히 만족스럽게 읽었다. 파이참을 몇년 간 다뤘음에도 알지못했던 Tip을 얻고 다시금 정리할 기회를 얻었음에 감사드리고, 파이참에 관심이 있거나 다루기 어려웠던 독자분들은 반드시 읽어보시길 추천드린다. `파이참을 익히는 가장 빠른 지름길`이라고 생각한다. - - -> \<비제이퍼블릭 출판사\> -> -> 책 한권만으로도 실무를 수행할 수 있을 정도의 실용성, 기존 출간된 책에서 다뤄지지 않았던 가려웠던 구석을 시원하게 긁어주는 참신함, 피상적인 접근으로 그런가보다 넘어가기 쉬운 지식에 대한 깊이있는 고찰을 담은 장인 냄새가 나는 출판사입니다. 더불어 참신한 해외 번역서, 최신 트렌트를 겨냥하는 양질의 서적을 자주 출간하여 필자의 책장에도 어느덧 십여권의 책이 꼽혀있네요. IT 실력을 향상시키는데 있어 뭔가 허전하거나 시간은 투자대비 내공이 채워지지 않는 공허함이 생긴다면 비제이퍼블릭 출판사의 책 목록을 살펴보시기 바랍니다. - -[비제이퍼블릭 바로가기](http://www.bjpublic.co.kr/) diff --git a/_posts/2019-12-15-review-book-GAN.markdown b/_posts/2019-12-15-review-book-GAN.markdown deleted file mode 100644 index 9865ad65a..000000000 --- a/_posts/2019-12-15-review-book-GAN.markdown +++ /dev/null @@ -1,163 +0,0 @@ ---- -layout: post -title: "[리뷰] 미술관에 GAN 딥러닝 실전 프로젝트" -subtitle: "Generative Deep Learning" -categories: review -tags: review book gan vae deep learning reinforcement learning -comments: true -header-img: img/review/2019-12-12-review-book-GAN-1.jpg ---- - -## 개요 -> 본 리뷰는 `한빛미디어` 출판사 `"미술관에 GAN 딥러닝 실전 프로젝트(데이비드 포스터 저)"`를 읽고 얻은 지식을 정리한 글입니다. - -- 목차 -- [생성 모델링이란?](#생성-모델링이란) -- [이해를 돕는 사례들](#이해를-돕는-사례들) -- [딥러닝 숲에서 VAE를 거쳐 GAN까지](#딥러닝-숲에서-vae를-거쳐-gan까지) -- [이 책의 백미 : 그리기, 글쓰기, 작곡하기, 게임하기](#이-책의-백미--그리기-글쓰기-작곡하기-게임하기) -- [이제 겨우 RNN, CNN 좀 알게 되었는데 어텐션은 또 뭐야?](#이제-겨우-rnn-cnn-좀-알게-되었는데-어텐션은-또-뭐야) -- [누가 읽어야 하는가?](#누가-읽어야-하는가) -- [책의 구성 및 요약](#책의-구성-및-요약) -- [요약하며...](#요약하며) - - -## 생성 모델링이란? ---- -판별 모델링에만 익숙했던 대부분의 머신러닝 엔지니어에게 생성 모델링은 처음 접하는 순간부터 직관적으로 와 닿지는 않는생소한 개념이다. 확률과 통계는 이제 다 배웠다고 안심하고 책을 덮는 순간부터 다른 악마로 나타나 처음부터 다시 공부해야 한다더니만... 생성 모델링이 어렵게 느껴지는 이유 중 하나도 확률적 랜덤요소를 활용하기 때문이다. - -`조건부확률 - 베이즈정리 - 나이브베이즈`라는 그 흔한 테크트리가 다시 등장한다. 본 도서에서는 아래와 같이 판별모델링과의 비교를 통해 생성 모델링에 대한 이해도를 높혀준다. - -* 판별 모델링 : - + `p(y|x)` - + 샘플 x가 레이블(카테고리) y일 확률을 추정. - + 예 : 추천시스템, 이메일의 긍정/부정 추정, 사진을 통한 녹내장 발생확률 추정 등 -* 생성 모델링 : - + `p(x|y)` - + 레이블(카테고리) y를 통해 샘플x일 확률을 추정. 즉, 원본 데이터셋에 속할 가능성이 높은 픽셀을 출력하는 모델링. - + 확률적 랜덤요소를 고려하여 샘플링한 데이터셋을 생성하는 방법. - + 예 : GAN -![생성모델링](https://theorydb.github.io/assets/img/review/2019-12-12-review-book-GAN-2.jpg) - -생성 모델링이 의미가 있는 이유는 판별 모델링이 해낼 수 없는 AI 특성을 가지고 있기 때문이다. 강화학습의 시행착오, 사람의 인지능력을 모방하는데 핵심적인 도구로 활용된다. - -그렇다면 도대체 어떻게 생성한다는 것인가? 본 도서에서는 아래 그림과 같이 `간단한 생성 모델링 프레임워크` 예제를 통해 P model에서 포인트 A, B, C를 생성하는 방법과 성공여부를 측정하는 방식을 알려준다. 더불어 핵심 개념을 파악하기 용이하게 끔 표본공간, 확률밀도함수, 모수모델, 가능도, 최대가능도추정 등 핵심 확률 개념을 다시금 짚어준다. -![생성모델링프레임워크](https://theorydb.github.io/assets/img/review/2019-12-12-review-book-GAN-5.jpg) - - -## 이해를 돕는 사례들 ---- -이 책이 가지는 흥미로운 부분은 각 장별로 이해를 돕기위해 일상생활과 유사한 사례를 예로 든다는 점이다. 예를 들면 위에서 설명한 생성 모델링을 이해시키기 위해 아래 그림과 같은 로들행성과 픽셀행성에서의 새로운 패션 스타일을 창조하기 위한 방법을 마치 소설과 같이 설명해준다. - -소설은 수학적 지식이 전무한 분들이나 문과출신 분들도 이해하는데 무리가 없기에 이해되지 않는 수식이나 용어들과 싸우는 대신 개념과 활용 용도를 파악하는데 있어 상당히 효과적인 방법이라고 생각한다. GAN을 접하는데 있어 이렇게 쉬운 방법으로 접근하는 책은 처음인 것 같다. -![로들행성](https://theorydb.github.io/assets/img/review/2019-12-12-review-book-GAN-3.jpg) -![픽셀행성](https://theorydb.github.io/assets/img/review/2019-12-12-review-book-GAN-4.jpg) - -먼저 로들행성에서 위 그림과 같은 50개의 패션 샘플을 바탕으로 `고수준 특성(머리모양, 색깔, 안경여부, 옷 등)`만을 바탕으로 가법 평활화 등을 활용하여 새로운 패션을 생성하는 방법을 예로 든다. 반면 픽셀행성 예제에서는 고수준 특성을 포함하여 `저수준 특성(픽셀의 가로 x 세로 갯수, RGB)`까지 고려하여 표현학습과 비선형 매니폴드의 개념을 학습한다. - -로들행성이 일반적인 데이터사이언스의 관점에서 접근한다면, 픽셀행성은 보다 심화된 딥러닝의 시각에서 접근하는데 두 예제만큼 딥러닝에서 GAN으로 매끄럽게 설명을 이어나가는 예제는 찾기 힘든것 같다. 상세히 정리하고 싶지만 리뷰 취지에는 벗어나기에 이 즈음에서 마무리하며 더 궁금하신 분들은 책을 참고하시기 바란다. - -## 딥러닝 숲에서 VAE를 거쳐 GAN까지 ---- -딥러닝을 학습하다보면 자칫 활성화함수, 배치 정규화, 드롭아웃, 경사하강법, 오차역전파법 등 딥러닝을 이루는 세부 요소와 원리에 깊이 빠져들어 딥러닝의 숲을 이해하지 못하고 주화입마에 빠지는 경우가 종종 발생한다. 나아가 월드모델과 같은 최신 논문 혹은 기술이 등장하면 현재 학습하고 있는 딥러닝 좌표를 잃어버리고 헤매이게 된다. - -무수히 많은 수식과 기본개념, 학습속도로 도저히 쫓아갈 수 없는 쏟아지는 최신 논문과 연구결과 속에서 본 도서는 현재 학습하고 있는 전체를 아우를 수 있는 큰 그림으로 학습중인 내용이 어느 위치에 해당하는지 명확한 좌표를 제시해준다. 2 ~ 4장에서 소개되는 지식들은 GAN을 구현하기 위해 반드시 알아야 할 필수 개념들이다. - -먼저 GAN에서 활용되는 딥러닝의 핵심 기술들과 개념들을 자세히 알아본다. 아래 그림은 간단한 예제실습을 통해 알아본 CNN에 관한 설명이다. -![CNN](https://theorydb.github.io/assets/img/review/2019-12-12-review-book-GAN-6.jpg) - -더불어 딥러닝의 필수 개념중 하나인 오토인코더(AE)를 비롯 그 한계를 뛰어넘기위해 사용된 변이형 오토인코더(VAE)에 대해 학습한다. 아래 그림은 VAE에 대한 소개 중 일부이다. -![VAE](https://theorydb.github.io/assets/img/review/2019-12-12-review-book-GAN-7.jpg) - -VAE까지 학습하고나면 생성모델링에 대해 제법 가시적인 개념이 형성된다. GAN의 핵심개념부터 비교적 최신 연구결과인 WGAN-GP까지 정리하면 비로소 GAN의 기술들에 대한 큰 그림이 보이기 시작한다. -![GAN](https://theorydb.github.io/assets/img/review/2019-12-12-review-book-GAN-8.jpg) -![WGAN-GP](https://theorydb.github.io/assets/img/review/2019-12-12-review-book-GAN-9.jpg) - -이렇듯 책의 구성이 전반적으로 Top-Down의 구조를 체계적으로 그려준다. 현존하는 최신기술들을 한눈에 정리해줌으로써 앞으로의 방향을 잃지 않게 해준다. 방향을 잃지않게 큰 그림과 개념을 지속적으로 잡아준다는 점. 바로 이 점이 본 도서의 뛰어난 매력중 하나이다. - -## 이 책의 백미 : 그리기, 글쓰기, 작곡하기, 게임하기 ---- -이로써 딥러닝부터 GAN에 이르까지 핵심개념과 기초를 탄탄히 학습하였다. 이제 이 책의 백미인 주옥같은 감성넘치는 예제들을 실습하며 GAN의 실체를 가시적으로 살펴볼 단계이다. - -* __그리기__ - + 역시나 초반부는 이해를 돕기위한 사례 소설이 또 등장한다. 사과를 파는 그래니 스미스와 오렌지를 파는 플로리다의 경쟁을 통해 CycleGAN의 핵심원리를 설명한다. `CycleGAN`을 통해 마치 고흐와 같은 아티스트가 시진의 풍경을 보고 그린듯한 결과를 생성할 수 있다. - + 더불어 `뉴럴 스타일 트랜스퍼 기법`을 통해 특정이미지의 스타일을 원본 이미지로 옮기는 방법을 구현한다. CycleGAN이 특정 화가의 기풍을 학습한 결과라면, 뉴럴 스타일 트랜스퍼의 경우 특정 작품을 학습한다고 비유해야 할까? - -* __쓰기__ - + 한 교도관이 죄수들을 이용하여 자신의 단편소설을 쓰게 하는 흥미로운 예제로 출발한다. - + `LSTM, GRU` 등의 순환층을 활용하여 특정 글의 스타일을 흉내낸 텍스트 시퀀스를 생성하는 방법에 대해 배운다. - -* __작곡하기__ - + 바흐의 첼로모음곡을 활용하여 옥타브, 키와 같은 개념을 학습한다. - + 어텐션 기법을 활용하여 `적층 LSTM, MuseGAN`의 기술을 실습한다. - -* __게임하기__ - + `오픈AI Gym` 라이브러리를 활용하여 자동차 경주를 학습한다. - + 아래 그림과 같은 `월드모델`을 활용하는데 VAE 생성모델에 강화학습을 접목한 방식이다. 개인적으로는 이 실습이 가장 흥미로웠고 GAN과 Reinforcement Learning을 동시에 학습할 수 있어서 가장 배운것이 많은 챕터였다. 생성모델을 의사환경으로 사용하여 전략 정책을 반복하는 기법인데 예전에 알파고와 유사한 것을 만들다가 어려운 난이도에 봉착했던 정책망에 대한 해결책을 얻을 수 있어서 뿌듯했다. -![월드모델](https://theorydb.github.io/assets/img/review/2019-12-12-review-book-GAN-10.jpg) - - - -## 이제 겨우 RNN, CNN 좀 알게 되었는데 어텐션은 또 뭐야? ---- -오래 전도 아닌 고작 2019년 올해의 일이다. NLP, Computing Vision을 학습하며 이제 좀 CNN, LSTM, RNN 기법도 이해가 가고 딥러닝이 실용적인 측면에서 어떻게 활용되는지 알만해질 때 즈음 BERT가 등장했다. 아니 정확히는 어텐션 기반의 기법들이 등장하기 시작했다. 실제로는 더 이전에 등장했겠지만 적어도 필자의 레이더망에는 그 즈음에 포착되었다. - -문제는 기껏 이전 기술들을 이제는 좀 알것 같아 실무에 적용 좀 해보려는데 BERT를 접하니 이전 기술들을 쓸 일이 없어졌다는 것이다. 아예 모르는것보다는 낫고 개념적으로도 도움이 되는것도 사실이지만 엔지니어링 측면에서는 좀 황당할 정도로 기존 레거시들을 활용할 일이 별로 없었다. - -물론 다시 배우면 된다. 그런데 이젠 수없이 쏟아지는 논문과 연구결과 속에 도대체 지금 어떤 기술을 눈여겨봐야 하는건지 어떤 기술을 실무에 적용해야 하는건지... 미로속에 빠진 느낌이었다. 살면서 요즘처럼 열심히 공부를 한 적도 없는것 같은데 겨우 최신 기술의 산더미 속에 단어조차 생소한 기법이 이렇게 많다니.. - -기술의 부분 부분들은 요즘 잘 활성화된 페이스북 등의 커뮤니티, 오픈채팅방 또는 외국 커뮤니티나 Quora 등의 활동을 통해 물어보면 대부분 친절하게 답을 해준다. 그런데 거시적인 숲과 현재 내가 학습하는 기술의 위치를 알고 싶다면? 그건 정말 어렵다. 다들 필자 못지 않게 열심히 공부중이시라 시간들도 부족하시고 무엇보다 필자의 학습수준을 파악하여 필자의 현재위치를 알려줄만큼 한가한 분은 없다. 학습자의 입장에서 무례한 질문이라는 생각도 든다. - -본 도서에서 개인적으로 가장 마음에 들었던 부분이 후반부 생성 모델링의 역사를 일목요연하게 정리해준 부분이다. 다뤄본적이 없던 GPT-2, MuseNet 등이 어텐션 기반의 모듈이라는 것도 새롭게 알 수 있었다. BERT 하나만 들이파도 시간과 정력이 부족한 나날이기에 다른것에 집중하기는 쉽지 않음을 인정하지만 적어도 근래에 핫한 최신기술이 어떤것이 등장하고 있고 그게 대충 뭔지는 알아야 내 기술의 현위치를 알 수 있고 이런 노력이 가치가 있는것인지 판단할 수 있을 것이다. 이런 측면에서도 이 책은 큰 가치를 발휘한다. - ![GAN계보](https://theorydb.github.io/assets/img/review/2019-12-12-review-book-GAN-11.jpg) - -정리하며 본 도서와 관련된 정보를 아래 링크로 남긴다. -+ [책소개](http://www.hanbit.co.kr/store/books/look.php?p_code=B9882286651) -+ [GitHub 소스코드](https://github.com/rickiepark/GDL_code) - - -## 누가 읽어야 하는가? ---- -- GAN 및 강화학습(Reinforcement Learning)에 관심이 많은 분 - -- AI관련 최신 논문, 연구, 기술을 숲의안목으로 체계적으로 정리하고 싶은 분 - -- 그 외 AI, 딥러닝 등에 관심이 많은 연구자, 프로그래머 등 - - -## 책의 구성 및 요약 ---- -이 책은 크게 세부분으로 구성되며, 각 파트에서 다루는 내용을 아래와 같이 요약해 보았다. - -- __1. 생성 모델링, 딥러닝, VAE, GAN (Part1)__ - + 생성 모델링과 확률의 개념, 복잡도를 해결하기 위한 딥러닝의 활용 - + 생성모델과 관련된 개념에 특화된 딥러닝의 전반적인 지식 재정립 - + 오토인코더의 한계점 분석, 변이형 오토인코더를 통한 무작위성 주입 및 잠재공간 분포방식 제한 기법 등 - + 애니멀 GAN 예제(생성자가 판별자를 속이기 위한 순환 방법)부터 WGAN-GP까지 GAN 기법 총정리 - -- __2. GAN을 활용한 실습예제(Part2)__ - + 그리기, 쓰기, 작곡하기, 게임하기 실습 - + GAN외에도 강화학습(Reinforcement Learning), MuseGAN, 적층LSTM, RNN, CNN 등 딥러닝의 핵심기법을 거의 모두 배울 수 있다. - -- __3. 생성모델링의 미래(9~10장)__ - + 2019년 최신기술까지 생성 모델링의 발전과 관련된 핵심 기술, 연구를 한눈에 살펴본다. - + 결론(10장)에서는 GAN을 넘어선 AI에 대한 저자의 통찰력이 담긴 고민도 엿볼 수 있다. - - -## 요약하며... ---- -2019년 한해가 어느덧 저물어간다. 2019년 한해동안 GAN, Reinforcement Learning으로 대표되는 AI기술들과 연구 결과는 끊임없이 쏟아졌고 축적되는 지식의 Volume은 점점 가속화되고 있다. BERT와 같은 기술 하나에 집중하기도 어려운데 정신을 차리고 주위를 둘러보면 MuseNet이니 GPT-2이니 주옥같은 기술들이 이미 등장하여 상용화 되어간다. - -넘쳐나는 기술의 축제이자 축복이라는 향연을 즐기며 행복한 반면 대부분 필자와 같은 평범한 사람들에게는 조급함이 느껴질 수도 있다. 그만큼 학습해야 할 과제들은 많아지고 자칫 항해의 좌표를 잃고 방황하기도 쉬워진다. 불과 몇달 전부터 열심히 파고들던 기술이 현 시점에는 큰 쓸모가 없어지는 절망감에 빠질수도 있다. - -논문을 처음쓸 때 보통 연구주제의 관련 지식들을 집대성한다. 지구상에 등장한 모든 관련 기술들을 집대성 하기 전 일종의 목차와 같은 기능을 담당하는 소중한 자료가 Review 논문인데, `이 책을 한마디로 표현하자면 딥러닝 기술의 Review 논문이라 말하고 싶다.` 쏟아져나오는 최신기술들을 숲의 안목으로 일목요연하게 정리하며, 자칫 원론과 개념에 치중하여 좌표를 잃지 않도록 감성충만한 주옥같은 예제들을 통해 빠른 시간내에 딥러닝의 현 주소를 제시해준다. 딥러닝과 최신 기술들의 원론을 가시적으로 이끌어내는 점이 이 책의 별미이다. - -때문에 딥러닝 관련 연구자, 엔지니어는 물론 사업가, 기획자, 관련 사업의 대표자들이 빠른시간 내에 딥러닝의 모든 기술을 아우르고 싶다면 이 책은 필수도서이다. 판별 모델링의 거의 모든 역사가 담긴 `패턴인식과 머신러닝(비숍 저)`나 NIPS 학회에서 GAN을 처음 선보인 이안 굿펠로 님의 `심층학습`과 같은 두말할 나위 없는 최고의 기본서들도 중요하지만, 쏟아지는 기술의 폭풍속에 현 주소를 놓치지 않을 수 있는 GPS와 같은 책도 제너럴리스트를 위해 반드시 필요한 책이다. - -예쁜 색상과 재질로 디자인되어 들고만 다녀도 감성 충만이다. `디자인 못지않은 감수성 있는 예제들을 구현해 보고 저변에 깊이 축적된 딥러닝 최신기술들의 향연을 즐기다보면 어느덧 인생의 목적이 어렴풋이 비춰질 정도로 뿌듯해지는 지금의 시간들에 감사하게 된다. AI와 관련된 분이라면 커피한잔 즐기시며 이 책이 전해주는 행복을 느껴보시길 바란다.` - -> \<한빛미디어 출판사\> -> -> 믿고보는 "한빛미디어 출판사". IT분야에서 독보적인 양질의 도서를 출판하는 회사입니다. "나는 프로그래머다" 팟캐스트 후원, DevGround2019 행사, 리뷰어 모집, 다양한 학습 지원 등 다양한 분야에서 사회에 공헌하는 개발자와 공생하는 업체입니다. IT분야에 관심 있으시다면 한빛미디어의 책으로 후회없는 출발을 하실 수 있습니다. - -[한빛미디어 바로가기](http://www.hanbit.co.kr/) \ No newline at end of file diff --git a/_posts/2019-12-26-review-book-git-github.markdown b/_posts/2019-12-26-review-book-git-github.markdown deleted file mode 100644 index 3bda063eb..000000000 --- a/_posts/2019-12-26-review-book-git-github.markdown +++ /dev/null @@ -1,154 +0,0 @@ ---- -layout: post -title: "[리뷰] Do it! 지옥에서 온 문서관리자 깃&깃허브 입문" -subtitle: "Do it! Introduction to Git & GitHub, Document Manager from Hell" -categories: review -tags: review book git github introduction -comments: true -header-img: img/review/2019-12-26-review-book-git-github-1.jpg ---- - -## 개요 -> 본 리뷰는 `이지스퍼블리싱` 출판사 `"Do it! 지옥에서 온 문서관리자 깃&깃허브 입문(이고잉,고경희 저)"`을 읽고 지식을 정리한 글입니다. - -- 목차 - - [Git은 뭐고? GitHub는 또 뭐여?](#git은-뭐고-github는-또-뭐여) - - [Git과 친해지기 어려운 이유](#git과-친해지기-어려운-이유) - - [이 책을 한마디로 표현하면 뚫어뻥](#이-책을-한마디로-표현하면-뚫어뻥) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [책의 구성 및 요약](#책의-구성-및-요약) - - [요약하며...](#요약하며) - - -## Git은 뭐고? GitHub는 또 뭐여? ---- -아래와 같은 곤란한 상황... 당신도 분명 겪어보셨을 것이다. -![그림1](https://theorydb.github.io/assets/img/fun/final-real.jpg) - -> __"당신이 무엇을 상상하든 이 파일은 최종파일이 아니다.__ - -설사 최종파일이 나왔다 치자. 다음은 또 무슨일이 기다리고 있을까? - -* 기껏 회사에서 수정했건만.. 집에서 고치려면 USB로 복사해야 하나? -* 열심히 수정했는데 다른 사람이 손데면서 다 날라갔다! - -보기만 해도 짜증나는 이 문제들을 Git은 지옥이라고 표현한다. 그렇다면 해결책은 무엇인가? 책 제목에서도 알 수 있듯이 바로 `지옥에서 온 문서관리자 깃&깃허브`이다. - -쉽게 정리하자면 Git은 분산(`여러명이 수정할 수 있다.`)버전(`최최..종을 알아서 관리해준다.`)관리시스템이며, GitHub는 Git으로 생산된 산출물이 저장되는 `Git저장소`라고 할 수 있겠다. 실용적인 관점에서 접근하자면 지역저장소를 관리하기 위한 도구가 Git이며, 원격저장소의 집합체가 GitHub이다. - -위 문제들 때문에 골치가 아프셨다면, 그리고 반드시 해결하고 싶다면 Git&GitHub는 필수다! - - -## Git과 친해지기 어려운 이유 ---- -위에서 설명한 지옥을 피하기 위해 반드시 Git&GitHub을 사용하겠다는 다짐은 누구나 할 수 있지만, Git&GitHub과 그 친분을 이어나가는 것은 아무나 할 수 없다. - -그 이유로 필자가 경험했던 내용을 위주로 아래와 같이 요약해보았다. - -* __Git Bash vs Git GUI__ - + Git을 사용하는 방법은 크게 2가지가 있다. `Bash는 커맨드라인 모드로 텍스트 기반의 명령어를 한줄식 타이핑하면서 Git을 사용하는 방법`이고, GUI는 화면을 마우스로 제어하여 Git을 사용하는 방법이다. - + 처음에는 물론 GUI가 편하다. 다만 갈수록 복잡해지는 기능을 숙달하기에는 직관적이지 않고 사용하기 어려워진다. 태생이 리눅스 버전을 관리하기 위한 용도로 개발되었기 때문에 Bash 모드에 적응하는 것이 Git에 친숙해질 수 있는 길이다. 다만 그렇게 커맨드 라인으로 타이핑하는 부분 때문에 초반에 낯설고 어려운 진입장벽이 되기도 한다. - -* __리눅스에 대한 사전지식의 필요성__ - + 앞서 설명한 바와 같이 Git Bash는 커맨드라인 텍스트 기반의 `리눅스 명령어 방식으로 동작`한다. 때문에 기본적인 리눅스 명령어에 숙달되지 않으면 버전관리가 어려워지며 다양하고 편리한 기능을 활용할 수 없다. - -* __Add - Commit - Push 매커니즘__ - + 그동안의 문서 편집기는 저장버튼만 클릭할 수 있으면 되었다. 간혹 되돌리고 싶은 경우 Ctrl+z 단축키를 이용하곤 했지만 겨우 커맨드는 2종류에 지나지 않았다. 그런데 저장만 하면 됐지 `Add - Commit - Push` 3종 세트는 귀찮고 어렵게 왜 계속 해야하는지 도통 이해가 안된다. - -* __브랜치는 또 뭐냐? 나뭇가지냐?__ - + 갑자기 난데없이 나뭇가지가 나온다. 뭔가 들여다보니 수정내용을 `커밋한 일련의 모음`을 의미하는데 이게 나뭇가지처럼 갈라지기도 하고, 심지어는 합쳐지기도 한다. - + 대략 여기서부터 멘붕이온다.. - -* __깃허브와 원격저장소__ - + 지역저장소 하나도 간신히 뗐는데, 이젠 `지역저장소를 원격저장소와 연결`하란다. - + 그것도 모자라서 원격저장소에 Push할 때마다 무슨 인증을 계속 하라는데 싫으면 `SSH`를 쓰란다. - + 리눅스도 몰라서 해메이는데 SSH는 또 뭐냐.. 이젠 보안도 알아야 하나? - -* __`회사 PC`와 `집 노트북`에서도 동일하게 작업할 수 있다던데..__ - + 그러려고 Git을 쓴건데 생각보다 어렵다. 매일 같은 컴퓨터에서 Commit이나 할 줄 알았지.. Git Pull도 다른 PC에선 필수라는 것을이 파악하는데 제법 오랜시간이 걸린다. - + 거기까진 좋은데 하다보면 파일이 서로 꼬여 Conflict라는 놈이 발생하는데.. 이거 해결이 골때리게 어렵다. - -* __다 알고나니 이젠 남들과 동기화하란다. OTL__ - + 날이 갈수록 복잡해진다. 팀원들 각자 별도의 브랜치를 만들기도 하고 승인이 끝나면 `팀장의 master 브랜치에 병합`도 한다. 기껏 병합했는데 일정 시점이 지나서 또 분기를 한다. 그렇게 분기와 병합을 밥먹듯이 한다. 근데 그 과정에서의 `충돌` 그리고 심지어 `되돌리기`도 한다. - -괴로워 보이는 일련의 과정이지만 돌이켜보면 생각보다 어렵지 않은 작업이었다. 그만큼 Git이 상당히 직관적으로 개발되었기 때문이다. 문제는 얼마나 쉽고 빠르게 익히느냐 정도인데 현재 필자가 아는 `최고 좋은 솔루션은 단연 현재 소개하고 있는 본 도서`이다. - - -## 이 책을 한마디로 표현하면 뚫어뻥 ---- -앞의 챕터에서 설명했던 Git과 친해지기 어려웠던 일련의 시나리오들은 이 책에서 매우 쉽고 간단한 예제를 통해 속시원하게 뚫어준다. 이미 Git의 대부분을 알아버린 이 시점에 이렇게 쉽고 재미있는 책을 늦게 만난것이 야속하지만, 그래도 그간의 Git 사용법을 돌이키고 간혹 몰랐던 Tip을 익힐 수도 있었다. - -단연컨데 이 책은 Git을 가장 빨리 익힐 수 있는 방법이다. 이 책의 백미는 초보자들이 겪는 `시행착오와 어려움을 일종의 타임라인 순으로 책을 구성`하였다는 점이다. 특정 챕터를 익히고 Git을 사용하다보면 궁금점이나 한계에 봉착하는데 대부분의 문제점은 바로 다음장을 펴면 해답이 있을 정도로 놀랍게도 그 흐름이 일치한다. 아래 그림부터 배움의 순서를 중요시 하는 저자의 조언이 등장한다. -![순서대로](https://theorydb.github.io/assets/img/review/2019-12-26-review-book-git-github-2.jpg) - -Git 명령어별로 `복잡한 상태에 대한 개념을 명확하게 해주는` 점도 이 책의 장점이라고 할 수 있다. 아래 그림은 git status 명령어의 수행 결과에 따라 파일 상태가 어떤 단계에 속하는지 전체 개념을 정리해주는 도식도이다. -![개념도식화](https://theorydb.github.io/assets/img/review/2019-12-26-review-book-git-github-3.jpg) - -집요할 정도로 쉽고 상세한 설명은 마치 독자에게 `아무리 무식해도 절대 이 책을 덮지 못하게 만들어 주마.`라고 호언장담하는 느낌이다. 그렇게 설명했는데도 어려워할까 두려웠던지 그림의 우측 상단 도움말이 어려운 내용을 반복하여 설명해준다. -![도움말](https://theorydb.github.io/assets/img/review/2019-12-26-review-book-git-github-4.jpg) - -여기서 끝이 아니고 확인사살이 또 있다. 각 장을 마치고 나면 손글씨를 쓰게 한다. 마치 아마존의 CEO 베조스가 보고 혹은 회의 석상에서 전자문서가 아닌 손으로 쓴 글씨를 요구하는 느낌이라고나 할까? 실제로 `손글씨가 오랜 기억력을 향상`시킨다는 연구결과가 있다. 그래서인지 그림과 같은 통과의례를 마치고 나면 며칠 뒤에도 기억이 생생하다. -![확인사살](https://theorydb.github.io/assets/img/review/2019-12-26-review-book-git-github-5.jpg) - -위 챕터에서 언급했던 Git과 친해지기 어려운 이유 중 하나인 충돌난 문서를 해결하는 부분이다. 대부분의 책 또는 블로그에서 대충 말로만 표현해서 어떻게 해결해야 하는지 막막했었던 경험이 있다. 그런데 이 책은 다르다! `필요한 부분만 정확하게 붉은색 박스로 하이라이트 했고, 유치원생에게 설명한다는 느낌`을 받을 정도로 최대한 구체적으로 설명한다. -![Merge](https://theorydb.github.io/assets/img/review/2019-12-26-review-book-git-github-6.jpg) - -마찬가지로 회사 컴퓨터에서 내려받아 작업하는 부분이다. git pull이라는 `명령어의 핵심 개념을 짚고, 실제 적용한 화면을 통해 실습과 비교할 수 있게 해주고, 확인사살로 도식화`를 통해 개념을 정립하게 해준다. -![회사컴퓨터와 협업](https://theorydb.github.io/assets/img/review/2019-12-26-review-book-git-github-7.jpg) - -혼히 풀리, 풀리퀘라고 말하는 pull request에 대한 설명이다. 오픈 소스에서 컨트리뷰터로 활동하기 위한 필수 과정이다. 사실 개인적으로 풀리퀘를 할 수 있다면 Git 관한 한 중수 ~ 고수는 되지 않을까 생각이 든다. 이 명령어는 책의 후반부에 설명이 되어있는데 역시 독자 `시행착오의 타임라인을 철저히 고수하여 밀착관계`를 유지한다. -![풀리퀘](https://theorydb.github.io/assets/img/review/2019-12-26-review-book-git-github-8.jpg) - -마지막으로 필자가 지금 운영중인 [블로그-theorydb](https://theorydb.github.io/)와 같은 Github Pages를 활용한 개인 블로그 만들기, Visual Studio Code와 Git의 연동 등 일상생활에 유익한 Tip을 소개하며 책이 마무리된다. -![Github Pages](https://theorydb.github.io/assets/img/review/2019-12-26-review-book-git-github-8.jpg) -![Visual Studio Code](https://theorydb.github.io/assets/img/review/2019-12-26-review-book-git-github-8.jpg) - -쓸데없는 군더더기 모두 제거하고 핵심만을 밀착 지도하는 최고의 Git 입문서로, Git을 정복하기에 많은 난관에 부딪혀 포기한 분이 계시다면 이번 기회에 100% 승리하시길 권한다. - -* [책소개 Link](http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791163031222&orderClick=LEa&Kc=) -* [Do it!공부단 상시모집 중](https://cafe.naver.com/doitstudyroom) - - -## 누가 읽어야 하는가? ---- -- Git&GitHub을 사용하고자 하는 모든 분. - -- Git을 정복하기에 많은 난관에 부딪혀 포기한 분. - -- 사내 깃헙을 도입하여 새롭게 Git을 익혀야 하는 IT 개발자 등. - - -## 책의 구성 및 요약 ---- -이 책은 크게 세부분으로 구성되며, 각 파트에서 다루는 내용을 아래와 같이 요약해 보았다. - -- __1. 깃에서 브랜치까지 (1 ~ 3장)__ - - 깃 & 설치 & 리눅스 익히기 - - 저장소 생성, 버전 만들기, 커밋, 파일상태 확인, 되돌리기 - - 브랜치, 정보확인, 병합, 관리 - -- __2. 깃허브(4 ~ 5장)__ - - 원격저장소, 깃허브, 지역저장소와의 연결, 원격저장소 pull&push, SSH - - 여러컴퓨터에서의 동기화 - - 협업에서 브랜치 활용 - -- __3. 기타 Tip(6장, 꿀팁)__ - - 프로필관리, Readme, 오픈소스 프로젝트 참여하기 - - Github Pages를 활용한 개인 블로그 구축 - - Visual Studio Code와 Git 연동 등 - - -## 요약하며... ---- -위에서 언급한 바와 같이 이 책을 한마디로 표현하자면 `Git&GitHub를 익히기 위한 최고의 솔루션`이다. 본 도서의 구성이 `독자 시행착오의 타임라인 순서를 철저히 고수하며 독자와의 밀착관계를 형성`하기 때문이다. 마치 선생님이 옆에 있는 것처럼 궁금한 질문에 대한 답이 바로바로 나와주니 흥미와 몰입도가 저절로 향상된다. - -이런 구성이 신기하여 알아보니 저자분이 가독성 좋고 전달력이 뛰어난 책을 집필하시기로 유명한 분이시더라. Git을 익히기에 군더더기는 모두 제거하고 핵심만을 확인 사살하며 뼈 속 깊이 익힐 수 있게 만든 몇가지의 장치가 있다. 굳이 이런 구성까지 눈치채지 못하더라도 은 엄청 빨리 읽혀지는데 내용은 쉬이 잊혀지지 않는 의아한 경험을 하게 될 것이다. - -책의 단점은 딱히 찾을 길 없고 입문서를 넘어선 중고급자를 위한 심화 후속편이 나왔으면 하는 바램이다. Git&GitHub이 어려워 손들고 포기한 분이 계시다면, 속는셈 치고 본 도서로 다시 도전하시길 권유드린다. 100% 성공을 보장한다. - - -> \<이지스퍼블리싱 출판사\> -> -> 출판사 이름에서도 알 수 있듯이 초보자도 읽기쉬운(Easy) 서적을 출판하는 회사입니다. IT개발자라면 누구나 한번쯤은 접했을 `Do it!` 시리즈는 따라하기만 해도 걸작을 만들 수 있기로 정평이 나 있습니다. 온갖 서적을 접해도 해결하지 못했다면 마지막으로 이지스퍼블리싱 도서를 읽어보세요. 그동안 이해하지 못했던 기술과 개념 조각의 퍼즐이 완성되는 것을 느끼실 수 있습니다. Do it! 스터디 룸 카페에 가입하여 공부단으로 활동하시면 책 1권을 선물로 받을 수 있습니다. 커피 몇잔의 가격으로 책 한권이 주는 다양한 실속 가치! 이지스퍼블리싱의 매력입니다. - -[이지스퍼블리싱 바로가기](http://www.easyspub.co.kr/) diff --git a/_posts/2019-12-27-review-book-us-stock.markdown b/_posts/2019-12-27-review-book-us-stock.markdown deleted file mode 100644 index 0856a28d5..000000000 --- a/_posts/2019-12-27-review-book-us-stock.markdown +++ /dev/null @@ -1,172 +0,0 @@ ---- -layout: post -title: "[리뷰] 미국 주식 스타터팩" -subtitle: "US Stock Starter Pack" -categories: review -tags: review book us stock starter -comments: true -header-img: img/review/2019-12-27-review-book-us-stock-1.jpg ---- - -## 개요 -> 본 리뷰는 `비제이퍼블릭` 출판사 `"미국 주식 스타터팩(정두현 저)"`을 읽고 지식을 정리한 글입니다. - -- 목차 - - [달러에 관심이 생겼다.(feat. 미-중 무역분쟁)](#달러에-관심이-생겼다feat-미-중-무역분쟁) - - [미국 주식이 매력적인 이유](#미국-주식이-매력적인-이유) - - [시간에 구애받지 않는 두고두고 볼 수 있는 책](#시간에-구애받지-않는-두고두고-볼-수-있는-책) - - [책의 화룡점정 - 사업보고서 분석과 경험기반의 통찰력](#책의-화룡점정---사업보고서-분석과-경험기반의-통찰력) - - [마무리 & 책에서 추천하는 주요사이트 URL](#마무리--책에서-추천하는-주요사이트-url) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [책의 구성 및 요약](#책의-구성-및-요약) - - [요약하며...](#요약하며) - - -## 달러에 관심이 생겼다.(feat. 미-중 무역분쟁) ---- -미-중 무역분쟁이 장기화되고있던 2019년 8월. 환율이 급등하여 최근 10년간의 박스권을 뚫고 최고점을 경신할 뻔한 위기가 있었다. IMF를 겪은지 20년이 지났지만 당시 평소 대비 2배를 넘겼던 환율과 그로 인해 파탄난 경제위기를 직접 겪었기에 그 악몽이 얼마나 끔찍했는지 생생하다. 경제위기 자체도 문제였지만 환율이 급등하면서 생기는 원화 가치의 하락은 그 위기를 가중시켰다. - -8월 13일. `환율이 1,223원`까지 치솟으며 미-중 무역분쟁은 해소될 기미를 보이지 않은데다 무역 의존도가 높은 우리나라의 산업 특성을 고려해볼 때 달러 매입을 심각하게 고려해야 하는 시점이 되었다고 생각했다. 자산 몇푼 보유하지 못한 서민이 경제위기로 반토막나고, 원화가치 하락으로 4토막 난다면 가정경제는 큰 위기에 빠질것임은 불을 보듯 뻔하다. - -최고점에 육박했을 때의 매입은 하수나 하는 행동임을 그간의 뼈아픈 주식 경험으로 알고 있었기에 적당한 시점을 기다려 대비하고자 했다. 결국 은행에서 달러통장을 개설하고 관련 정보를 조사하기 시작했다. 그 과정에서 환율이 2배로 상승할 경우 달러보다는 주식이 약 2배 가까이 더 가치있다는 것을 알게 되었고, 더불어 채권의 세계도 알게 되었다. - -그렇게 투자를 결심했지만 문제는 `미국 주식의 가치투자 방법과 세금 문제를 비롯 전반적인 지식`이 없다는 데에 있었다. 인터넷에서 정보를 수집하고 시행착오를 겪으면 어떻게든 해결은 되겠지만, 그러기엔 너무 많은 시간과 노동력을 낭비해야 한다. 그런 시점에 마침 미국 주식에 관련된 지식을 한방에 정리해주는 도서를 만난것은 행운이었다. - - -## 미국 주식이 매력적인 이유 ---- -아래 그림은 본 도서에서 발췌한 최근 5년간 `한국, 미국, 일본의 각 국가를 대표하는 주식 상승률`을 비교한 그래프이다. -![국가별 주식 수익률 비교](https://theorydb.github.io/assets/img/review/2019-12-27-review-book-us-stock-3.jpg) - -보시는 바와 같이 적어도 최근 5년간 한국의 주식 시장은 전혀 매력적이지 못했다. 비록 5년이라는 함정이 숨어있으므로 장기적인 관점에서 비판할 여지가 있다. 그런데... 과연 그럴까? - -아래 그림은 한국 부동산 투자의 대명사가 되어버린 은마아파트 가격의 상승률과 코카콜라의 상승률을 비교한 그림이다. -![은마vs코카콜라](https://theorydb.github.io/assets/img/review/2019-12-27-review-book-us-stock-2.jpg) - -동일기간 환율을 배제한 상승률은 코카콜라가 은마아파트에게 크게 뒤지지 않는다. 오히려 환율을 반영했을 때 코카콜라의 수익률이 비교도 안되게 월등해진다. - -달러는 세계의 기축통화이고 경제가 호황일 때는 양적완화 정책때문에, 불황일때는 IMF와 같은 환율 상승때문에 세계 각국의 경제가 미국을 결코 이길 수 없다는 것은 이미 기정사실화되었다. 때문에 본 도서를 읽으며 필자는 결국 장기적 관점에서 볼 때 미국주식은 좋은 투자임을 확신하게 되었다. - -본 도서의 저자가 짚어주는 미국 주식이 매력적인 부가적인 이유를 아래와 같이 요약해 보았다. -* 좋은 투자처의 부재 : 예금이자 2% 내외 / 상가 오피스 평균 임대 수익률 연 4% -* 장기 수익률 우수 : (최근 5년간) 코스피 상승률 `3.75%` vs S&P 500 상승률 `35.69%` -* 주주보호시스템 : 한국의 화이트 컬러 경제사범들에 대한 형량 미미 -* 시차를 심리적으로 활용 : 개장시간(밤 11시 30분 ~ 새벽 6시)이 수면시간대인 관계로 본업에 구애받지 않음 -* 환차익의 기회 -* 가격 제한폭 없음 : 한국은 최대 30%이므로 다음날의 추가 상승분을 놓칠 우려가 있음 - -## 시간에 구애받지 않는 `두고두고 볼 수 있는 책` ---- -본 도서의 매력중 하나는 기본에 충실한 투자 원칙 및 내공을 전달한다는 점이다. 이 챕터의 소제목은 저자가 머리말에서 소개한 문구로 세월이 흘러도 독자분들께 도움이 되는 지식을 담고자 노력했다고 한다. - -덕분에 우리나라 주식을 기반으로 한 지식으로는 알 수 없는 미국 주식 시장의 도메인을 익힐 수 있는 기회를 얻게 되었다. 리뷰 지면에는 한계가 있으므로 책이 다루고 있는 내공을 아래와 같이 요약해보았다. -* 미국의 3대 증권거래소 : 뉴욕증권거래소 / 나스닥 / 아멕스 -* 3대 주요지수 : S&P 500 / 나스닥 지수 / 다우지수 -* 성장주 vs 배당주 / -* 현금배당 / 주식배당 / 정기배당 / 특별배당 / 배당락일 / 배당지급일 / 배당수익률 / 연간배당금 / 배당성향 / 배당성장 -* 국가적요소 : 심리적요소 / 세금(법인세 등) / 금리 / 경제성장률 / 고용률 / 제조업경쟁력 -* 산업적요소 : 원자재가격 / 계절적요인 -* 기업한정요소 : 상품(서비스) / 산업지배력 / 법적, 제도적 위험 -* 거시경제지표 : 기준금리 / 고용률 / 국제유가 / 월간자동차판매량 / 계속실업급여청구건수 / 생산자물가지수 / 내구재수주 -* GICS(세상의 모든 산업을 `10개 섹터`로 분류한 국제기준) - ![GICS](https://theorydb.github.io/assets/img/review/2019-12-27-review-book-us-stock-4.jpg) -* ETF(국산/미국산 차이점) / 인버스 / 레버리지 / 저변동성 - -꼭 주식과 투자를 떠나 경제상식은 물론 각종 지표가 경제의 관계에 대해 포괄적인 눈을 키울 수 있었던 점이 큰 장점이었다. 저자가 언급한 바와 같이 세월이 흘러도 변하지 않는 내공을 전달하는 책이므로, 미국 주식에 관심있는 분은 물론이거나와 재미있게 경제 지식을 학습하고 싶은 분들께 추천드리고 싶다. - -## 책의 화룡점정 - 사업보고서 분석과 경험기반의 통찰력 ---- -사업보고서는 일종의 자기소개서와 유사하여 정량보다는 정성적 분석이 필요하나 미래의 사업방향, 자체 진단한 영업 이익의 감소 등이 언급되어 있으므로 투자에 있어 반드시 필요한 `1순위 정보`라 할 수 있다. - -아래 그림은 미국의 사업보고서에 대한 개요이다. 영문으로 되어 낯설지만 저자가 항목별로 어떤점을 살펴보아야 하는지 사례중심으로 설명하기에 굉장히 이해하기 쉽다. 사업보고서는 미국 주식 투자를 위한 난이도 끝판왕에 해당되는데 이를 분석하는 방법을 저자의 경험으로 손쉽게 인도하기에 필자는 본 파트를 책에서 가장 가치있는 지식이 담긴장이라 말하고 싶다. -![사업보고서](https://theorydb.github.io/assets/img/review/2019-12-27-review-book-us-stock-5.jpg) - -더불어 책의 곳곳에 숨어있는 경험에서 우러나온 통찰력과 노하우가 숨겨져 있어 인상깊었던 몇 구절을 아래와 같이 인용해 본다. -* 손익계산서 : 특정기간동안 거둔 수익과 비용을 나타낸 표 - - 즉, `돈을 얼마나 잘 버는가?` - - 매출 / 원가 / 매출총이익 / 관리비 / 경상비 / 영업이익 / 단기순이익 / 연구개발비 등 -* 재무상태표 : 특정 시점에 보유한 자산, 부채, 자본 상태를 나타낸 표 - - 즉, `현재 자산이 얼마인가?` - - 자산 / 부채 / 자본 => `유동비율 / 부채비율 / 자사주매입을 반드시 파악` -* 펀더멘탈(기업 현 상태를 점검할 수 있는 객관적 지표) - - PER / 매출성장률 / 이익성장률 / 부채비율 / 유동비율 -* 패션 브랜드 미래주가 확인 방법 - - 주변 여성 10명에게 그 브랜드를 좋아하는지, 구매한 적이 있는지 묻기 -* 삽과 곡괭이 전략 - - 비트코인의 광풍 뒤 큰돈을 번 기업은 Nvidia -* 미래의 유튜버인 어린이들의 선택을 받는 프리미어 프로는 파이널 컷보다 유리한 위치를 점하고 있다. -* 워린버핏이 죽기 전 재산 관리에게 당부할 말 - - "재산의 10%는 단기정부채권에, 90%는 수수료가 제일 저렴한 S&P 500 인덱스 펀드에..." - - -## 마무리 & 책에서 추천하는 주요사이트 URL ---- -위에서 언급한 부분외에도 저자는 2020년 주식시장의 키워드인 `스트리밍과 헬스케어`에 대하여 언급한다. 특히, 헬스케어 부분은 의료보험과 관련된 현 미국의 정치 주소와도 밀접한 관련이 있어 흥미있게 읽었으며 그동안 몰랐던 국제적인 경제상식을 함양할 기회를 얻을 수 있었다. - -더불어 필자가 관심있는 미국의 IT 핵심 기업을 분석하여 세부정인 시가총액, 배당수익률, 주가변화, 기업의 장단석 분석을 한눈에 파악할 수 있으며 저자가 우량 종목을 선정하는 기준을 얻을 수 있다는 장점이 있다. 즉, 주가는 언제든 변화할 수 있는 부분이므로 종목 하나하나에 연연하기 보다 종목을 분석하는 안목을 키우는 것이 중요하다고 생각했다. - -책의 후반부에는 미국 시장의 숨겨진 보석들이라는 타이틀로 저평가된 우량주를 소개하고 있으며, 대표 ETF 라이브러리를 섹터별로 분석하는데 이 파트에서 미국 산업구조의 전반을 이해하는데 있어 큰 도움이 되었다. 부록에서는 주식거래의 구체적인 방법과 아래 그림과 같이 세금을 줄이는 꿀팁을 공유하면서 책을 마무리한다. -![세금](https://theorydb.github.io/assets/img/review/2019-12-27-review-book-us-stock-5.jpg) - -끝으로 책의 저자가 추천하는 유용한 사이트를 정리해보며 본 도서의 내용 리뷰를 마친다. -* [디비던드닷컴](https://www.dividend.com/) : 미국 배당주, 배당세부지표 제공 -* [SEC](https://www.sec.gov/) : 미국기업의 사업보고서 제공(또는 각종 미국기업의 IR 페이지) -* [FRED](https://fred.stlouisfed.org/) : 미국 경제지표 데이터베이스 -* [잭스](https://www.zacks.com/) : 스탯분석 -* [시킹알파](https://seekingalpha.com/) : 스토리분석 -* [피어인사이트](https://www.gartner.com/reviews/home) : 가트너 운영 IT기업 리뷰 -* 인베스팅(Investing) : 스마트폰 앱. 한글지원, 미국 주식의 가격을 실시간 무료 제공 - -* [책소개 Link](http://www.bjpublic.co.kr/?fbclid=IwAR2ADMg2d817hzrDG-AYdpA-PJ79PfDhi62QjYRmXAJMMI7TpNg2AHBIMJY) -* [저자의 탈잉 강의](https://taling.me/Talent/Detail/8417) - -## 누가 읽어야 하는가? ---- -- 미국의 국가, 산업, 기업 측면에서의 경제 지식을 재밌게 정리하고 싶은 분. - -- 미국 주식 예비 투자자. - -- 주식과 투자의 전반적 원리에 대한 이해가 필요한 분. - - -## 책의 구성 및 요약 ---- -이 책은 크게 세부분으로 구성되며, 각 파트에서 다루는 내용을 아래와 같이 요약해 보았다. - -- __1. 미국 주식 시장의 개요 (1 ~ 3장)__ - - 미국 주식 투자이유 - - 미국 주식시장의 기초 - - 미국 ETF의 종류 - -- __2. 가치투자와 나만의 투자전략 (4 ~ 6장)__ - - 나만의 포트폴리오 및 투자전략 세우기 - - 재무제표 & 사업보고서 읽는 법 - - 투자에 필요한 도구 활용법 - -- __3. 미국시장 분석 및 실전(7 ~ 10장, 부록)__ - - 스트리밍 & 헬스케어 - - 미국 핵심 IT기업 리뷰 - - 미국 주요 ETF 라이브러리 - - 숨겨진 보석들 - * 부록 : 거래절차, 세금총정리, 투자참고 사이트 목록 등 - - -## 요약하며... ---- -세계 경제위기 및 미-중 무역 분쟁, IMF 등 각종 경제 위기는 슬기롭게 대처할 경우 되려 기회가 되기도 한다. 전화위복의 기회가 될 수 있는 한가지 방법이 바로 달러 혹은 미국 주식에 대한 투자라고 생각한다. 수익 창출과 부도 좋지만 현재의 자산가치를 안전하게 보존하기 위한 수단으로서도 의미가 있을것이다. - -시중에 미국 주식을 다루는 책들은 다양하게 나와 있지만 현 시장의 트렌드를 다루는 도서나 개인의 경험을 바탕으로 구체적인 시행착오를 진솔하게 다루는 책은 흔치 않다. 저자의 좌충우돌 시행착오를 일목요연하고 알기 쉽게 전달한 점이 이 책의 매력이라고 생각한다. - -머리말에서 저자가 언급한 바와 같이 세월이 흘러도 두고두고 볼 수 있는 책을 목표로 만들어진지라 `경제 지식에 대한 체계적인 정리`가 일품이다. 다른 경제학 도서가 이론에 충실한 나머지 가독성을 잃곤 하는데, 본 도서는 현실에서 벌어지고 맞닥드리는 사례 및 현상을 위주로 경제를 설명하고 있어 빠른 이해가 가능하다. - -특히 `가치 투자를 위한 사업보고서 분석은 이 책의 백미`이며 그 외에도 `현 미국 시장의 기업분석 정보 및 구체적인 투자방법, 세금문제에 대한 Tip`을 다룸으로써 실전적인 투자 가이드를 제시해준다. - -약간의 아쉬움이 있다면 미국 주식을 최초로 투자하는 독자들에게 어떤 사이트에 접속하여 어떤 버튼을 누르는 등의 상세하고 구체적인 따라하기 코너가 없다는 것이다. 미국 주식은 커녕 한국 주식시장도 경험하지 못한 독자분들께는 다소 난이도가 느껴질 수 있는 부분이나, 긴 세월의 관점에서 보면 그런 파트는 한번 익히면 다시 볼 필요없는 일회성 지식이기에 저자가 일부러 제외시키지 않았을까 추측해본다. - -미국 주식 초보자, 각종 경제 상황 및 거시 지표하에 주식에 대한 가치 투자를 하고 싶은 투자자라면 꼭 일독을 권한다. - -> \<비제이퍼블릭 출판사\> -> -> 한 분야의 실전적 절대고수가 그간 쌓아온 지식과 경험을 바탕으로 내공의 정수를 담은 장인의 향기가 나는 책을 출판하는 회사입니다. 참신한 해외 번역서, 최신 트렌트를 겨냥하는 양질의 서적을 자주 출간하여 필자의 책장에도 어느덧 십여권의 책이 꼽혀있네요. 특히, IT 기술을 향상시키는데 있어 제자리 걸음이거나 시간투자 대비 내공이 채워지지 않는 공허함이 생긴다면 비제이퍼블릭 출판사의 책 목록을 한번 살펴보시기 바랍니다. - -[비제이퍼블릭 바로가기](http://www.bjpublic.co.kr/) diff --git a/_posts/2020-01-17-review-book-alphazero.markdown b/_posts/2020-01-17-review-book-alphazero.markdown deleted file mode 100644 index bc2652f5d..000000000 --- a/_posts/2020-01-17-review-book-alphazero.markdown +++ /dev/null @@ -1,191 +0,0 @@ ---- -layout: post -title: "[리뷰] 알파제로를 분석하며 배우는 인공지능" -subtitle: "Alpha Zero Artificial Intelligence" -categories: review -tags: review book alpha zero deep learning dqn mcts thinker tic tac toe -comments: true -header-img: img/review/2020-01-17-review-book-alphazero-1.jpg ---- - -## 개요 -> 본 리뷰는 `제이펍` 출판사 `"알파제로를 분석하며 배우는 인공지능(후루카와 히데카즈 저)"`을 읽고 얻은 지식을 정리한 글입니다. - -- 목차 -- [2020년 처음으로 읽은 책](#2020년-처음으로-읽은-책) -- [알파고, 알파고제로, 알파제로](#알파고-알파고제로-알파제로) -- [딥러닝, 강화학습, 탐색의 핵심개요](#딥러닝-강화학습-탐색의-핵심개요) -- [깨알같은 디테일로 독자의 진입장벽을 낮춘다.](#깨알같은-디테일로-독자의-진입장벽을-낮춘다) -- [딥러닝](#딥러닝) -- [강화학습](#강화학습) -- [탐색](#탐색) -- [대망의 알파제로 구현!](#대망의-알파제로-구현) -- [누가 읽어야 하는가?](#누가-읽어야-하는가) -- [책의 구성 및 요약](#책의-구성-및-요약) -- [요약하며...](#요약하며) - - -## 2020년 처음으로 읽은 책 ---- -새해 처음으로 올리는 리뷰를 본 도서로 시작할 수 있어 상쾌하다. 지금까지 읽었던 딥러닝 계열의 도서 중 `가장 재미있고, 가장 포괄적인 내용을 다루고 있으며, 그럼에도 가장 쉬워, 가장 극찬하고 싶은 책`이다. - -단 `370 페이지`의 짧은 분량으로 알파고의 발전사, 파이썬 문법, 구글 Colab 및 TPU, 딥러닝, CNN, ResNet, 정책경사법, Sarsa, Q, DQN, 미니맥스법, 알파베타법, 몬테카를로 트리 탐색, 알파제로 구현, thinker를 활용한 UI 개발, 틱택토, 커넥트4, 오셀로, 간이장기...를 어떻게 다 가르쳐 줄 수 있는건지 또, 어떻게 이렇게 쉽고 재미있게 알려줄 수 있는건지 두 번에 걸쳐 정독한 지금도 믿기지 않는다. - -딥러닝을 몰라도, 심지어는 python을 몰라도, 조금 더 오버하자면 프로그램의 기초 개념 정도만 알아도 본 도서를 이해하는데 그리 어렵지 않을 것이다. - -가시적으로 실행 가능한 코드가 제공되고, 딥러닝의 발전 방향에 맞춰 모델 간 장단점을 비교해 나가며 핵심 차이점만 깔끔하게 전달하는 전개 방식, 그리고 심지어 구글 Colab의 자세한 사용법과 파이썬 문법까지 알려준다. 각 단원마다 재미있는 게임을 예로 들어 상상력을 전개하기 쉽게 도와주고 상상력이 원동력이 되어 이해를 돕도록 구성한 점도 특징이다. - -왜 이렇게 극찬하는지 궁금하신 분들은 잠깐 시간내어 본 리뷰를 읽어주시기 바란다. 성격 급한 분들은 당장 책을 구매하셔서 보시는게 시간 절약 측면에서 나을 수도 있겠다. 구체적인 리뷰를 시작하기에 앞서 아래 로드맵을 참고하기 바란다. 본 도서는 로드맵이 목차보다도 깔끔하며 본 리뷰 또한 동일한 순서로 진행할 예정이다. -![로드맵](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-2.jpg ) - - -## 알파고, 알파고제로, 알파제로 ---- -* `알파고`는 구글 딥마인드에서 개발한 인공지능 바둑 프로그램으로 이세돌 9단에게 4승 1패의 승리를 거두며 전세계에 AI, 데이터 사이언스의 열풍을 일으켰다. - -* `알파고 제로`는 알파고를 상대로 100대 0으로 압승을 거두었으며, 기보없이 셀프 플레이만으로 학습하였다. - -* `알파제로`는 알파고 제로보다 승률은 뛰어나고 학습 속도는 향상된 장점을 가진 최신 버전이다. - -본 포스팅을 읽고 계신 분이라면 일반적인 특징 보다는 기술적인 차이점에 관심이 많으실 것이다. 알파고는 지도학습과 강화학습을 혼용한데 반해 알파제로는 강화학습만 사용했다는 점이 큰 특징이고, 딥러닝 네트워크 구조에 있어 알파고는 CNN을, 알파제로는 ResNet을 사용했다는 차이점이 있다. 기타 자세한 차이점은 본 도서에서 발췌한 아래 그림을 참고하시기 바란다. -![알파고 제로와의 차이점](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-20.jpg ) - - -## 딥러닝, 강화학습, 탐색의 핵심개요 ---- -1장에서는 흥미진진한 스토리로 알파제로를 간단히 설명한 후 `퍼셉트론, 딥러닝, 지도학습(분류, 회귀), 비지도학습, CNN, RNN 등 딥러닝`과 관련된 핵심 개념을 다룬다. 딥러닝을 이미 알고 있는 독자에게 핵심 지식을 깔끔하게 정리할 기회를 주고, 전혀 모르는 분도 중요한 개념을 짚고 넘어가게 해준다. 아래 그림은 AND 함수를 구현한 퍼셉트론 및 딥러닝 학습 모델에 대한 도식도이다. -![퍼셉트론](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-3.jpg ) -![학습모델](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-4.jpg ) - -이어서 `에이전트, 환경, 행동, 상태, 보상, 정책, 수익, 가치 등 강화학습`의 핵심 개념을 다룬다. 아래 그림은 강화학습의 용어 및 학습사이클을 설명한 부분이다. -![강화학습 용어](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-5.jpg ) -![강화학습 사이클](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-6.jpg ) - -이어 탐색의 핵심 개념을 다룬다. 완전 게임 트리와 부분 게임 트리를 다룸으로써 `알파베타법`이 가지는 한계와 이를 대체하기 위한 수단인 `몬테카를로 트리 탐색`의 개념을 미리 소개한다. -![게임트리](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-7.jpg ) - -## 깨알같은 디테일로 독자의 진입장벽을 낮춘다. ---- -딥러닝과 알파제로의 핵심 주제에는 벗어나지만 이 책에 숨은 또 다른 공신을 찾자면 알파제로를 구현하기 위한 `파이썬 문법, 구글 Colab의 사용법, 로컬 환경 및 코랩 환경의 패키지 버전 소개 등 개발 환경 구축을 위한 정확하고 디테일한 설명` 등을 들 수 있겠다. - -* 예를들면 아래와 같이 책의 예제를 구현할 때 사용한 패키지 버전까지 상세하게 명시한다. 따라하기만 해도 알파제로를 만들 수 있도록 저자의 친절한 배려가 돋보인다. -![패키지 버전](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-8.jpg ) - -* 심지어 파이썬을 파이썬 답게 사용할 수 있는 문법을 총망라함으써 파이썬에 생소한 독자들도 쉽게 파이썬 문법에 적응하게 해준다. 두꺼운 파이썬 책을 읽다가 망각하는 것 보다 처음에 본 도서로 파이썬을 익혀도 되겠다는 생각이 들 정도였다. -![파이썬 문법](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-9.jpg ) - -* 더불어 돈 한푼 없어도, 뛰어난 장비 없어도 개발할 수 있도록 구글 Colab에 관하여 필수 지식을 모두 전수해준다. `90분 룰 회피하기, 12시간 룰 회피하기` 같은 Tip도 전수해주며 GPU가 아닌 TPU를 활용한 개발 방법까지도 자세하게 안내해 준다. 모든 책들이 흔히 말하지 않는 고수들만 알 법한 깨알같은 팁을 아낌없이 공유한다. - -이러니 도저히 개발을 못할 수가 없다. 독자들이 무엇때문에 알파제로를 개발하지 못할지 그 경우의 수를 수도 없이 고민한 장인의 냄새가 난다. 덕분에 독자들의 진입장벽이 현저히 낮아져 단언컨데 열정만 있는 독자라면 책을 덮고 난 뒤에는 프로그램을 거의 몰라도 알파제로를 만들고 상당 부분 이해하며 뿌듯해 할 것이다. - - -## 딥러닝 ---- -딥러닝을 조금이라도 학습해 본 분들은 누구나 MNIST 예제 정도는 한번쯤 돌려보셨을 것이다. 방심하지 말고 다시 돌려보자. 그저 그런줄 알았던 `MNIST` 일반적인 분류 모델이 `CNN`과 어떻게 다른지 명확히 느낄 수 있는 기회다. 더불어 `ResNet`과는 어떤 차이가 있는지 비교가능하다. 아래 그림과 같은 이해를 돕는 구조도와 함께 말이다. -![딥러닝 모델](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-10.jpg ) -![CNN 모델](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-11.jpg ) -![CNN 모델2](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-12.jpg ) -![ResNet 모델](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-13.jpg ) - -실습 코드 구현을 통해 이미지 인식 분야의 발전 과정을 명확히 이해할 수 있다. 발전 과정에서 등장한 모델을 서로 비교하며 구현하는 과정에서 기억이 오래 남도록 유지해주는 효과를 얻을 수 있다. - -각 장별로 사용한 색상도 달라 현재 내가 어느 파트를 읽고 있는지 도와주기도 한다. 이런 저자와 편집자가 구성한 `기억 지속 장치` 덕분에 후반부의 알파제로를 구현할 때 본 장에서 배운 ResNet 지식이 대부분 되살아남을 느꼈다. - - -## 강화학습 ---- -다중 슬롯머신 문제를 통해 어떤 팔을 당겨야 가장 많은 돈을 벌 수 있을지 일종의 게임이론과 같은 흥미로운 주제로 강화학습에 접근한다. 탐색과 이용이라는 트레이드 오프 관계를 이해하고 균형을 맞추기 위한 아래 그림과 같은 `UCB1`에 관해 설명한다. - -수학없이 코딩만 등장하는 허접한 책이 아니다. 놀라운 것은 수식이 제법 나오는데도 거의 이해되는 신기한 책이라는 점이다. -![UCB1](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-14.jpg ) - -강화학습은 처음 접하면 생소한 개념에 좌절하기 쉬운데 각 절마다 개념을 알기 쉽게 예제를 통해 이해를 돕는다. 정책 경사법 또한 미로찾기 같은 재미있는 게임을 통해 핵심 개념을 설명한다. - -Sarsa와 Q의 개념 또한 앞서 미로찾기에 대한 설명을 활용하여 이해를 돕고 행동 및 상태 가치 함수를 `벨만 방정식`으로 정리한다. -![벨만방정식](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-15.jpg ) - -탄탄히 정리된 기초 개념을 통해 DQN을 정리한다. 카트-폴 게임을 가시적인 예제로 사용하여 앞서 나왔던 개념들의 장단점을 총정리하게 되며 이 과정에서 알파제로에서 사용할 정책망과 가치망이 어떤 식으로 구현되는지 감을 잡을 수 있다. - - -## 탐색 ---- -일반적인 음성, 이미지, NLP 분야와 달리 게임분야 AI의 색다른 점이 있다면 바로 탐색이 아닐까 한다. `유한 확정 완전 정보` 게임이라면 더욱 탐색 기법을 사용하지 않을 수 없는데 알파제로 구현에 있어서도 역시 탐색이 핵심 기법 중 하나이다. - -먼저 `미니맥스법`을 통해 게임트리의 개념을 이해한 후 `알파베타법`의 가지치기 방법을 통해 계산의 속도를 높이는 방법을 배운다. 아래 그림과 같이 세부적인 예시를 들어 어떻게 탐색을 하지 않고 가지를 쳐 속도를 높일 수 있는지 이해를 돕는다. -![알파베타법](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-16.jpg ) - -이어 완전 게임 트리가 경우의 수가 많아질 수록 활용하기 어려운 이유를 설명하고 대체 수단인 `몬테카를로 트리 탐색`의 개념을 설명한다. 1 ~ N 회차의 시뮬레이션을 반복하며 트리 노드에 큰 변화가 있을 때 마다 아래 그림과 같이 알기 쉽게 설명해준다. -![몬테카를로 15회차](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-17.jpg ) - - -## 대망의 알파제로 구현! ---- -앞서 배운 딥러닝, 강화학습, 탐색 등 핵심 기술을 집대성하여 `알파제로`를 만든다. 알파제로에서 사용할 강화학습 사이클 및 딥러닝 네트워크의 구성 그리고 최종 완성된 틱택토 게임은 아래와 같다. -![강화학습 사이클](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-18.jpg ) -![듀얼네트워크](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-19.jpg ) -![최종본](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-22.jpg ) - -이 장에서는 딥러닝, 강화학습, 탐색을 어떻게 결합할 수 있는지 `소프트웨어 공학의 진수`가 담겨있는 장이기도 하다. 더불어 8장에서는 알파제로를 구현하며 만들었던 `모델을 재활용하고, 모델의 저장과 로드를 통해 커넥트4, 오셀로, 간이장기`를 개발한다. 이 과정에서 스프트웨어 공학은 물론 실무에서 이미 개발한 모델을 어떻게 변형된 모델에 적용할 수 있는지 실무 감각을 높일 수 있다. -![간이장기](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-23.jpg ) - -이 뿐만이 아니다. 알파제로에서는 몬테카를로 트리 탐색 시 앞서 설명한 UCB1을 활용하지 않고 아래 그림과 같은 공식의 `아크 평갓값`을 사용한다. 이처럼 필요한 분야에 적합한 수학적 모델링을 도출하고 직관적으로 이해하여 데이터와 비교 대응할 수 있는 데이터 사이언티스트의 역량을 엿볼 수도 있다. -![간이장기](https://theorydb.github.io/assets/img/review/2020-01-17-review-book-alphazero-21.jpg ) - -* [도서 미리보기](https://jpub.tistory.com/993) -* [GitHub 소스코드](http://github.com/Jpub/AlphaZero) - -## 누가 읽어야 하는가? ---- -- ResNet, 몬테카를로 탐색 트리, DQN에 부딪혀 딥러닝 학습에 좌절을 겪은 분 - -- 가시적인 제품 구현을 통해 딥러닝의 핵심 개념을 명확하게 이해하고 싶은 분 - -- 알파제로를 구현하고 싶거나 알파고 관련 논문 이해에 어려움을 겪는 분 - -- 기타 딥러닝에 관심이 있는 모든 분 - - -## 책의 구성 및 요약 ---- -이 책은 크게 세부분으로 구성되며, 각 파트에서 다루는 내용을 아래와 같이 요약해 보았다. - -- __1. 머신러닝의 개요, 파이썬, 구글 Colab__ - + 알파고, 딥러닝, 강화학습, 탐색의 개요 - + 구글 Colab의 사용법 - + Python 문법 학습 등 - -- __2. 딥러닝, 강화학습, 탐색의 핵심 개념__ - + 딥러닝 : 분류, 회귀, CNN, ResNet - + 강화학습 : 정책경사법, Sarsa, Q, DQN - + 탐색 : 미니맥스법, 알파베타법, 몬테카를로 탐색 트리 등 - -- __3. 알파제로의 구현__ - + Part2의 핵심 개념을 종합한 알파제로의 구현 - + 알파제로의 모델을 재사용하여 커넥트4, 오셀로, 간이장기 등의 구현 - + Thinker를 활용한 UI 구현(사람과의 대전) - - -## 요약하며... ---- -2020년 새해. 처음으로 읽어도 될만한 가치가 있는 귀한 책을 만났다. 리뷰를 작성할 때는 책의 장점을 진솔하게 전달하기 위해 노력하는 편이지만 특히 이번 책의 리뷰를 소홀히 작성하는 것은 예의가 아니라는 생각이 들만큼 훌륭한 내용과 짜임새있는 품격이 느껴져 두 번에 걸쳐 정독했다. - -책의 내용을 한바탕 정리하고 싶은 마음이 가득했으나 그러기엔 리뷰 수준의 분량을 넘어설 듯 하여 가급적 책의 장점만 피력하고자 노력했다. 앞서 설명한 바와 같이 `지금까지 읽었던 딥러닝 계열의 도서 중 가장 재미있고, 가장 넓은 영역을 다루고 있으며, 그럼에도 가장 쉬워, 가장 극찬하고 싶은 책`이다. - -단 `370페이지의 짧은 지면으로 알파고의 발전사, 파이썬 문법, 구글 Colab 및 TPU, 딥러닝, CNN, ResNet, 정책경사법, Sarsa, Q, DQN, 미니맥스법, 알파베타법, 몬테카를로 트리 탐색, 알파제로 구현, thinker를 활용한 UI 개발, 틱택토, 커넥트4, 오셀로, 간이장기 구현방법` 등을 모두 알려준다. - -딥러닝을 전혀 몰라도, 심지어는 파이썬을 몰라도, 조금 더 오버하자면 프로그램의 기초 개념 정도만 알아도 본 도서를 이해하는데 그리 어렵지 않을 것이다. `가시적으로 실행 가능한 코드가 제공되고, 딥러닝의 진화 방향에 맞춰 모델 간 장단점을 비교해 나가며, 심지어는 구글 Colab의 자세한 사용법과 파이썬 문법까지` 알려준다. 각 단원마다 재미있는 게임을 통해 개념을 전달하고자 한 시도도 눈에 띄는 특징이다. - -지난 2019년 한해동안 GAN, Reinforcement Learning으로 대표되는 AI기술들과 연구 결과는 끊임없이 쏟아졌고 축적되는 관련 지식의 Volume은 점차 가속화되고 있다. BERT와 같은 기술 하나에 집중하기도 어려운데 정신을 차리고 주위를 둘러보면 MuseNet이니 GPT-2이니 주옥같은 기술들이 이미 등장하여 상용화 되어간다. - -본 도서를 통해 딥러닝의 빠른 발전 속에도 길을 잃지 않도록 알파제로까지의 핵심 개념을 명확히 이해하여 허리를 튼튼히 하고, 알파제로의 구현을 통해 이해에 이해를 덧칠한다면 2020년에 다가올 폭풍우도 그리 두렵지 않을 것이다. 책의 내용은 말할 것도 없고 기억을 오랫동안 지속시키기 위한 편집과 구성도 일품이라는 생각이 든다. - -아쉬운 점은 사실 없다. 굳이 애써 찾자면 텐서플로 2.0을 사용했으면 더 좋았을 뻔 했다는 점, 알파제로의 모델로 바둑을 구현했으면 좋겠다는 점이 있겠으나, 그러기엔 이 책을 늦게 만나게 되거나 실습을 포기해야 하는 트레이드 오프를 감당해야 하므로 현재로도 대 만족이다. - -AI, 딥러닝에 관심이 있는 분이라면 초보자, 고수 가리지 않고 반드시 읽어보시길 바란다. 분명 무엇이든 얻게 될 것이다. - - -> \<제이펍 출판사\> -> -> 보통 서적에 담긴 내용의 기술적 깊이가 뛰어나면 가독성과 재미는 떨어지게 마련인데, 제이펍의 책들은 그 트레이드 오프가 성립하지 않아 개인적으로 매우 신기하다고 생각했습니다. 진정성 듬뿍담긴 깊이있는 내공을 즐겁게 흡수하고 싶다면 꼭 제이펍의 도서목록을 살펴보시기 바랍니다. 숨은 진주를 얻게 되실 겁니다. - -[제이펍 바로가기](https://jpub.tistory.com/) \ No newline at end of file diff --git a/_posts/2020-01-22-review-book-tableau.markdown b/_posts/2020-01-22-review-book-tableau.markdown deleted file mode 100644 index 503963cda..000000000 --- a/_posts/2020-01-22-review-book-tableau.markdown +++ /dev/null @@ -1,137 +0,0 @@ ---- -layout: post -title: "[리뷰] 태블로 굿모닝 굿애프터눈" -subtitle: "Tableau Good Morning Good Afternoon" -categories: review -tags: review book tableau bi bigdata visualization software -comments: true -header-img: img/review/2020-01-22-review-book-tableau-1.jpg ---- - -## 개요 -> 본 리뷰는 `비제이퍼블릭` 출판사 `"태블로 굿모닝 굿애프터눈(강승일, 송재환 저)"`을 읽고 지식을 정리한 글입니다. - -- 목차 - - [태블로(Tableau), 가트너 선정 BI분야 최고의 리더](#태블로tableau-가트너-선정-bi분야-최고의-리더) - - [본 도서와 함께하는 다양한 태블로(Tableau)의 기능](#본-도서와-함께하는-다양한-태블로tableau의-기능) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [책의 구성 및 요약](#책의-구성-및-요약) - - [요약하며...](#요약하며) - - -## 태블로(Tableau), 가트너 선정 BI분야 최고의 리더 ---- -최근 AI, 빅데이터 트렌드와 더불어 데이터 시각화(Data Visualization)의 중요성이 급부상하고 있다. 통계, 머신러닝, 딥러닝을 활용하여 유의미한 인사이트를 도출하거나 예측, 판별, 생성 등의 모델을 구현하는 것은 여전히 복잡한 문제이다. 이런 문제를 해결하는데 있어 데이터 시각화는 다양한 방법으로 도움을 준다. - -흔히 블랙박스라고 칭하는 딥러닝 `내부 학습 과정을 파악하고 싶거나, 다양한 포맷과 피처를 가진 대규모 데이터 속에서 패턴을 찾는 과정`에 있어 시각화를 이용하면 원하는 답을 쉽게 얻거나 답을 얻기 위한 시간을 상당히 절약할 수 있다. - -태블로는 데이터를 분석 및 시각화하는 BI 솔루션으로 전세계 8만개 이상의 기업이 이용하고 있으며, 태블로가 차지하는 영향력은 최근 가트너가 BI분야 최고의 리더로 선정한 일례로 대신할 수 있다. - -태블로가 어떤 솔루션인지 백번 설명하는 것보다 아래 그림을 보는 것이 나을 듯하다. 최근 신종 코로나 바이러스 확진자의 이동 경로를 시각화한 그림으로 태블로로 구현한 것이다. [한국 태블로(Tableau) 사용자 모임](https://www.facebook.com/groups/KoreaTUG/permalink/2437303859917843/) 페이스북 그룹에 공유된 [게시글](https://public.tableau.com/profile/leemonster#!/vizhome/2019-nCov_15804043195370/1)에서 발췌하였으며 Il Sup Lee 회원님께서 구현 및 공유하셨다. - -![신종 코로나 바이러스 확진자의 이동 경로](https://theorydb.github.io/assets/img/review/2020-01-22-review-book-tableau-7.jpg) - - -## 본 도서와 함께하는 다양한 태블로(Tableau)의 기능 ---- -`Part1(굿모닝)`에서는 먼저 태블로의 Tableau Desktop, Server, Prep 등 다양한 제품군에 대해 소개한 후 아래 그림과 같이 Tableau Desktop 설치를 통해 간단한 기능을 맛보게 해준다. -![Tableau Desktop 설치](https://theorydb.github.io/assets/img/review/2020-01-22-review-book-tableau-3.jpg) - -여느 프로그램이나 그러하듯 설치 후 처음 실행하면 생소하다. 하지만 시작페이지의 연결, 열기, 검색 영역의 기능부터 시작하여 데이터 원본 페이지, 작업 영역의 메뉴별 다양한 기능까지 상세히 설명하므로 읽다보면 빠르게 사용 감각을 익힐 수 있다. 특히 태블로의 다양한 파일 유형 .twb, .tds 등에 대해 자세히 알아보고 측정값, 차원 등의 생소한 기본개념을 먼저잡고 출발할 수 있어 초보자도 후반부의 복잡한 실습 예제를 수행할 수 있도록 도움을 준다. - -이어서 `3장. 기본 차트 만들기`라는 기본 예제들을 실습하게 되는데 개인적으로 상당히 중요한 부분이라 생각한다. 실습을 따라하기에 전혀 부담이 없고 컴포넌트 하나 하나에 집중하여 예제를 개발하며 상세한 기능을 소개하는 방향으로 진행이 되는데 이 부분을 확실히 알아야만 나중에 실무에서 독자들이 원하는 숲을 그려낼 수 있다. - -최근 데이터 사이언스의 영향으로 R의 ggplot2나 Python의 matplotlib, pyecharts 등을 활용하는 분들도 많을텐데 대부분의 시각화 구현의 `문제는 라이브러리를 활용한 구현 자체에 있는것이 아니라 최종 산출물을 만드는데에 별도의 감각이 필요하다는 사실`이다. 필자도 마찬가지였는데 기본에 충실한 실습들을 진행하며 `데이터가 가지는 특징에 따라 어떤 시각화 방법이 가능한지` 일종의 표현 방법론에 대한 감을 익힐 수 있었다. - -태블로 자체의 기능을 익히는 것은 물론 데이터의 주어진 상황과 특징에 따라 태블로 개발자들은 이러한 방식을 활용했구나라는 아이디어 및 인사이트를 얻을 수 있다. 기본 실습의 구체적인 예제는 아래 목록과 같으며 시각화를 자주 다루는 분이라면 이 목록들의 수준이 기초이지만 꽤 중요한 개념들이라는 사실을 깨달으실 것이라 생각한다. 시간이 넉넉하지 않은 분들은 본 장은 건너뛰신 후 필요할 때마다 책장에서 꺼내보는 일종의 레퍼런스로 활용하셔도 되겠다. - -* 막대 차트 만들기, 라인 차트 만들기, 파이 차트 만들기, 도넛 차트 만들기 -* 임시 계산, 분산형 차트 만들기, 트리맵 차트 만들기, 하이라이트 테이블 만들기 -* 영역 차트 만들기, 누적 막대 차트 만들기, 간트 차트 만들기, 히스토그램 만들기 -* 이중 축 만들기(Dual axis), 결합된 축 만들기(Combined axis) -* 라운드형 막대 차트 만들기, 평균 라인 만들기, 워드 클라우드 만들기 -* 캘린더 차트 만들기, 총계 만들기, 계층 만들기, 지리적 역할 부여하기 -* 채워진 맵 만들기, 기호 맵 만들기, 밀도 맵 만들기, 이중 축 맵(면+기호) -* 그룹과 집합 차이, 데이터 설명 - -`Part2(굿애프터눈1)` 파트에서는 위에서 배운 기본차트 구현의 수준을 넘어 주어진 데이터를 가공하여 시각화하는 방법을 학습한다. 먼저 퀵 테이블 계산방법을 배우게 되는데 조금이라도 데이터에 관련된 업무를 수행한 분이라면 흔히 접하게 되는 전월대비 및 전년대비 성장률의 시각화 등을 구현할 수 있다. 주가 차트의 이평선 등 약간은 복잡할 수 있는 시각화 표현 방법을 어떻게 쉽게 효율적으로 표현할 수 있는지 도와준다. - -이어 IF로 계산된 필드를 만드는 방법, 목록형 매개 변수의 생성 방법을 익힌 후 전체 범위로 필터를 적용하거나 컨텍스트 필터에 추가하는 상세한 방법을 다룬다. 대시보드 액션 적용하기 실습을 따라하다보면 아래 그림과 같은 뛰어난 시각적 표현도 가능하다. -![대시보드 액션 적용하기](https://theorydb.github.io/assets/img/review/2020-01-22-review-book-tableau-4.jpg) - -`Part3(굿애프터눈2)`에서는 드디어 본격적으로 데이터를 주무르기 시작한다. 필자가 가장 재미있게 실습했던 파트이기도 하며, 태블로가 얼마나 다양한 데이터를 손쉽게 다룰 수 있는지 장점을 맛볼 수 있는 파트이기도 하다. - -데이터 원본을 설정하는 방법으로 `조인, 교차 조인, 블렌딩, 유니온, Split의 실습을 통해 일종의 데이터 전처리 방법을 학습하며 데이터 해석기를 사용하여 원본 필터 등을 적용함으로써 데이터를 직관적으로 이해`할 수 있도록 돕는다. - -다음으로 Prep을 다룬다. Prep은 데이터를 결합, 정리, 변형하는데 편리한 기능을 제공하는 도구로 데이터 분석 직군 혹은 개발자가 아닌 기획 및 비지니스 직군에 계신분들도 매우 직관적으로 편리하게 데이터를 활용할 수 있다는 장점이 있다. - -태블로가 BI업계 시각화 리더가 된 결정적인 계기가 Prep과 같은 비전문가들도 사용하기 쉬운 도구의 제공 덕분이 아니었을까 싶다. 아래 그림은 Prep을 이용하여 데이터 결합과정을 시각화한 사진이다. 사진이 보여주듯 Prep에서 제공하는 대부분의 기능들은 비 전문가들이 다루기 매우 편리하게 도와준다. -![대시보드 액션 적용하기](https://theorydb.github.io/assets/img/review/2020-01-22-review-book-tableau-5.jpg) - -본 파트의 마지막엔 구글 스프레드시트를 활용한 재미있는 예제를 다룬다. 지금까지 우리가 필요로 하는 입맛에 맞춘 데이터로만 실습을 해왔다면 본 장에서는 웹에 널린 데이터를 직접 크롤링한 후 태블로와 연동하는 보다 실전적인 예제를 다룬다. 아래 그림과 같이 `구글 스프레드시트를 활용하여 미국 메이저리그 야구장 리스트를 웹페이지에서 크롤링한 후 태블로의 맵형태로 구장들의 위치를 표현`할 수 있다. -![크롤링](https://theorydb.github.io/assets/img/review/2020-01-22-review-book-tableau-6.jpg) - -마지막으로 `Part4(굿이브닝)`파트에서는 태블로가 가진 보다 강력한 심화기능을 다룬다. LOD 세부수준식인 Fixed, Exclude, Include를 활용하여 보다 사용자가 원하는 기준과 관점에 맞는 세부적인 집계 및 통계 자료를 추출할 수 있다. 더불어 타임라인에 특화된 처리가 가능한 복합 매개변수를 다루는 방법을 학습한다. - -이어 `PDF에 담긴 주식 데이터를 태블로에 연동하는 방법, 변경된 데이터의 증분만 서버에 업로드 하는 노하우, 그리고 태블로 퍼블릭에 업로드하여 전세계에 본인이 만든 대시보드를 공유하는 방법까지` 태블로가 가진 확장성을 맛볼 수 있다. - -본 도서의 저자들은 태블로에 직접 몸담고 있는 전문 강사들로 본 도서와 더불어 아래 사진에서 안내하는 바와 같이 유튜브 채널을 통해서도 노하우를 습득할 수 있다는 장점이 있다. -![유튜브](https://theorydb.github.io/assets/img/review/2020-01-22-review-book-tableau-2.jpg) - -* [책소개 Link](https://bjpublic.tistory.com/350?fbclid=IwAR050AvBeE_7-r_IwL6taNqXxzXWUD0QrSHtyZe84TLCMczR1ogWlarcF54) -* [PLANIT DATAV 유튜브 채널](https://www.youtube.com/c/planitdatav) - - -## 누가 읽어야 하는가? ---- -- 태블로에 관심이 많거나 처음 접하셔서 활용에 어려움을 겪는 분. - -- 태블로 플랫폼을 활용하는 실무자. - -- 그 외 데이터 시각화에 관심있는 분. - - -## 책의 구성 및 요약 ---- -이 책은 크게 세부분으로 구성되며, 각 파트에서 다루는 내용을 아래와 같이 요약해 보았다. - -- __1. 태블로 굿모닝 (Part1)__ - - 태블로 제품 소개 및 설치 - - 태블로의 기본 UI 활용방법에 대한 설명, 기본개념(측정값 및 연속형 등) - - 기본차트 만들기 예제 실습 - -- __2. 태블로 굿애프터눈 (Part2,3)__ - - 퀵테이블, 계산된 필드 만들기 - - 범위형, 목록형 매개변수 만드는 방법 - - 대시보드 액션 적용하기 (필터, 하이라이트, URL/시트 이동, 매개변수 및 집합 값 변경) - - 데이터 전처리(조인, 교차 조인, 블렌딩, 유니온, Split 등) - - Prep과 함께하는 데이터 연동 및 정제 방법 - - 구글 Spreadsheet를 활용한 크롤링 및 태블로 연동 - -- __3. 태블로 굿이브닝 (Part4)__ - - LOD Expressions(세부 수준 식) 및 복합 매개변수 만들기 - - 상황에 맞는 대시보드 만들기(PDF 연동 등) - - 서버에 업로드하기(Live 연결, 퍼블릭 업로드, 질문하기 등) - - 숨겨진 보석들 - * 부록 : 거래절차, 세금총정리, 투자참고 사이트 목록 등 - - -## 요약하며... ---- -데이터 시각화는 통계 등을 활용한 정보의 요약 전달 및 의사결정 등 자체로도 다양한 장점을 갖고 있지만, 특히 빅데이터 및 AI와 관련하여서도 내부 학습 과정을 파악하는데 도움이 되거나 다양한 포맷과 피처를 가진 대규모 데이터 속에서 패턴 인사이트를 찾는 과정에 유용하다. - -본 도서는 초반에 태블로의 상세 기능을 다루고 특히 3장 "기본 차트 만들기" 파트에서 거의 모든 컴포넌트들을 구현해보는 실습 과정을 거치기 때문에 초반 빠른 사용 감각을 익히는데 도움을 준다. 시각화에서 겪는 대부분의 문제는 라이브러리 구현 자체에 있는것이 아니라 최종 결과물을 만드는데에 별도 감각이 필요하다는 점인데 본 도서를 통해 `데이터 특징에 따라 어떤 유형의 시각화 방법이 가능한지 감을 익힐 수 있다는 점`이 큰 장점 중의 하나이다. - -후반부에 다양한 데이터의 연동 방법을 익힐 수 있으며 퀵 테이블 계산방법, 계산된 필드 만들기, 조인, 교차 조인, 블렌딩, 유니온, Split 등 데이터 전처리 방법을 학습하여 태블로 연동에 필요한 데이터를 가공 스킬을 쌓을 수 있다. 이를 바탕으로 시각화 자체에도 충실할 수 있음은 물론 `구글 Spreadsheet를 활용하여 크롤링 후 태블로에 연동하거나, PDF 문서와의 연동을 통한 시각화 등 태블로가 가진 다양한 확장성`을 음미할 수 있게 된다. - -본 도서는 태블로를 상세하게 다루는 국내 최초의 도서라는 점에서 의의가 있고, 저자들은 태블로에 직접 소속된 전문 강사들로 직접 운영하는 `유튜브 채널` 시청을 통해 학습 효과를 높일 수 있다는 장점이 있다. - -반면 전체 내용이 특정 프로젝트의 완성을 향한 흐름을 유지하며 통일성있게 구성되었다면 보다 전달력을 높이고 실전에 도움이 되지 않았을까 하는 아쉬움이 있다. 더불어 너무 상세한 기능 구현과 설명에 집중한 나머지 약간의 메뉴얼 같은 딱딱한 느낌을 갖게한 점과 그에 따른 독자 친화적인 구성과 거리가 있다는 점이 아쉽지만 태블로를 다루는 최초의 책인만큼 상세한 레퍼런스를 다루는 책도 필요하겠다는 생각도 든다. - -실무에 태블로의 의존도가 높거나 데이터 시각화에 관심이 많은 분이라면 일독을 권하는 바이다. - -> \<비제이퍼블릭 출판사\> -> -> 한 분야의 실전적 절대고수가 그간 쌓아온 지식과 경험을 바탕으로 내공의 정수를 담은 장인의 향기가 나는 책을 출판하는 회사입니다. 참신한 해외 번역서, 최신 트렌트를 겨냥하는 양질의 서적을 자주 출간하여 필자의 책장에도 어느덧 십여권의 책이 꼽혀있네요. 특히, IT 기술을 향상시키는데 있어 제자리 걸음이거나 시간투자 대비 내공이 채워지지 않는 공허함이 생긴다면 비제이퍼블릭 출판사의 책 목록을 한번 살펴보시기 바랍니다. - -[비제이퍼블릭 바로가기](http://www.bjpublic.co.kr/) diff --git a/_posts/2020-02-14-dev-dl-setting-local-python.markdown b/_posts/2020-02-14-dev-dl-setting-local-python.markdown deleted file mode 100644 index 8ff388e38..000000000 --- a/_posts/2020-02-14-dev-dl-setting-local-python.markdown +++ /dev/null @@ -1,348 +0,0 @@ ---- -layout: post -title: "[Setup] 딥러닝 개발 환경 구축 한방에 끝내기" -subtitle: "How to build a deep learning environment with python" -categories: dev -tags: dl data science ai python local deep learning setup build -comments: true ---- - - -## 개요 -> 딥러닝이라는 긴 여정을 위한 첫 단계. `딥러닝 개발 환경 구축`을 위한 포스팅입니다. 환경설정으로 인한 시간낭비를 최소화 하고자 대부분의 내용을 `총정리`합니다. - -- 목차 - - [사전 확인사항 및 GPU 준비](#사전-확인사항-및-gpu-준비) - - [아나콘다(Anaconda) 설치](#아나콘다anaconda-설치) - - [텐서플로(TensorFlow)를 위한 사전 호환성 검토](#텐서플로tensorflow를-위한-사전-호환성-검토) - - [Visual Studio 2019 설치](#visual-studio-2019-설치) - - [CUDA 10.1 설치](#cuda-101-설치) - - [cuDNN v7.6.5 설치](#cudnn-v765-설치) - - [가상 개발 환경 만들기 및 접속](#가상-개발-환경-만들기-및-접속) - - [텐서플로 및 기타 라이브러리 설치](#텐서플로-및-기타-라이브러리-설치) - - [설치 환경 테스트](#설치-환경-테스트) - - [PyTorch 설치](#pytorch-설치) - - [마치며...](#마치며) - - -## 사전 확인사항 및 GPU 준비 ---- -시간낭비를 방지하기 위해 먼저 아래의 `구축할 기술 스택`을 확인하시기 바란다. Ubuntu 등 Linux 환경은 시간이 나는대로 별도의 포스팅을 통해 기술할 예정이다. Mac은 2019년도 말 Nvidia와 결별했으므로 작성하지 않을 예정이다. - -더불어 귀차니즘 때문에 딥러닝 및 머신러닝 학습을 포기하는 일이 없도록 거의 모든 환경 설정을 다룰 예정이다. 따라서 상단 개요의 `목차`를 잘 확인하시어 불필요한 부분은 건너뛰며 시간을 절약하시기 바란다. GPU 없이도 작업이 가능한 경우 상당 부분 건너뛸 수 있다. - -* __구축할 기술 스택__ - - Window10 64-bit - - Python 3.7 (아나콘다 conda 4.7.12) - - TensorFlow GPU 2.0 - - CUDA Toolkit 10.1 update2 - - NVIDIA® GPU drivers 418.x or higher. - - Visual Studio 2019 - - cuDNN v7.6.5 - - LightGBM, XGBoost 등 - -* __GPU 체크__ - - __1. 내 PC에 장착된 GPU 모델 확인__ - [윈도우키+X] > 장치관리자 클릭 > 디스플레이 어댑터 클릭 > 모델명 확인 - ![모델 확인](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-2.png) - - __2. Nvidia 제품이 아니라면 구매 후 다시 읽어주시기 바란다.__ - 물론 AMD나 Intel에서도 OpenCL 프레임워크로 딥러닝을 활용할 수는 있으나 결코 쉽지 않은 영역이다. 관심있으면 [딥러닝프레임워크 비교](https://www.slideshare.net/JunyiSong1/ss-75552936)를 참고하시기 바란다. - - __3. 내 GPU가 CUDA 툴킷을 활용할 수 있는지 [Nvidia](https://developer.nvidia.com/cuda-gpus)에 접속하여 확인한다.__ - 아래 그림과 같이 `CUDA-Enabled GeForce and TITAN Products` 버튼을 클릭하면 좌측에 PC, 우측에 노트북 기준의 모델별 Capability가 나오는데 목록에 존재하지 않거나 3.0 미만이면 활용할 수 없다. - ![CUDA](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-1.png) - -이상이 없다면 본격적으로 설치를 진행하자. - -## 아나콘다(Anaconda) 설치 ---- -아나콘다는 파이썬 기반의 범용 패키지로 머신러닝을 비롯한 과학 계산용도로 인기가 좋다. 아나콘다 대신 Python을 직접 설치할 수도 있지만 필요한 패키지를 전부 찾아 pip 명령어로 별도로 설치해야 하거나, XGBoost 등 윈도우에서 설치가 까다로운 패키지들도 쉽게 설치할 수 있기 때문에 본 장에서는 아나콘다를 설치한다. 더욱이 텐서플로는 공식적으로 윈도우에서 아나콘다 배포판을 설치할 것을 권장한다. - -* [아나콘다 공식 사이트](https://www.anaconda.com/distribution/)에 접속하여 다운로드 한다. Download 버튼을 누르면 OS 및 32/64-Bit와 일치하는 버전이 자동으로 다운로드된다. - ![아나콘다](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-3.png) - -* 아래 그림과 같은 단계를 제외하고는 다운로드 된 파일(필자의 경우 Anaconda3-2019.10-Windows-x86_64.exe)을 실행한 후 디폴트 설정대로 `Next`만 눌러나가면 된다. 아래 그림을 만나게 될 경우 `체크박스 2개 모두 체크` 후 Install을 누른다. (체크 시 이미 기존에 설치된 Python이 있는 경우 충돌 이슈가 있는데 그런 상황을 맞닥드리는 고수분께서는 현명하게 알아서 체크 옵션을 조절할 능력이 되므로 초보자의 기준으로 설명한다.) - ![아나콘다 체크옵션](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-4.png) - -* 설치 완료 후, 시작버튼 > Anaconda > Anaconda Prompt 를 클릭하면 윈도우 명령프롬프트(cmd)와 비슷한 화면이 나온다. 아래 그림과 같이 `python`이라고 입력 시 Python의 버전이 나온다면 정상적으로 설치된 것이다. `Ctrl+Z` 명령어로 빠져나온 후 `conda --version` 명령어를 통해 아나콘다의 버전도 확인해본다. - ![버전확인](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-5.png) - 만약 아나콘다를 최신 버전으로 업데이트 하고 싶을 경우 Anaconda Prompt를 관리자 권한으로 실행하여 아래와 같이 명령어를 입력한다. 여기에선 생략한다. - ``` - conda update -n base -c defaults conda # 아나콘다 업그레이드 - conda update --all # 파이썬 패키지 업그레이드 - ``` - -## 텐서플로(TensorFlow)를 위한 사전 호환성 검토 ---- -본 장에서는 텐서플로를 설치하기 위해 CUDA, cuDNN, Visual Studio와의 호환성을 먼저 검토한다. 흔히들 tensorflow-gpu를 처음 설치할 때 한번에 성공하는 사람이 드문데 바로 이 호환성 문제를 너무 쉽게 생각하기 때문이다. 필자의 동료들도 질문하는 분들이 많아 이 참에 호환성을 검토하는 방법을 짚고 넘어가려 한다.(최초 설치 뿐만아니라 추후 최신 버전의 업그레이드시에도 참고하시기 바란다.) - -텐서플로를 설치하려면 당연히 공식문서를 확인해야 한다. 에 접속하면 먼저 상단에 지원 가능한 시스템이 나온다. 앞 장에서 윈도우10에 아나콘다를 설치한 것도 그냥 설치한 것이 아니라 사실 호환성을 검토하여 Python 3.5–3.7, Windows 7 or later의 요건을 확인 후 설치한 것이므로 반드시 본 문서를 버전별로 숙지하고 설치해야 한다. (그냥 감으로 때려맞추며 설치했다간 나중에 전부 다 재설치하는 봉변을 겪게 될지도 모른다.) - -공식문서를 보자. 좌측 메뉴에 여러 특성들이 안내 되어있지만 이 중 눈여겨봐야 할 메뉴는 `GPU 지원`이다. 아래 그림과 같이 표시한 부분이 핵심이다. -![지원가능한 GPU](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-6.png) - -* __Hardware requirements__ - + CUDA-enabled GPU cards 항목이 첫번째 장에서 소개한 지원 가능한 GPU 목록 링크이다. 이미 확인했으므로 건너뛴다. - -* __Software requirements__ - + 첫번째, `NVIDIA® GPU drivers` 항목을 클릭하면 드라이버를 다운로드 받는 창이 뜬다. `CUDA 10.1 requires 418.x or higher.`라고 명시가 되어있으므로 우리 PC에 설치된 드라이버의 버전은 당연히 418. 버전 이상이어야 한다. 아닐 경우 아래와 화면과 같이 붉은색으로 표시한 부분에 내 PC의 GPU 정보를 입력 후 최신버전을 다운로드 받아 설치한다. - ![드라이버 다운로드](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-7.png) - - + 두번째, `CUDA® Toolkit`은 CUDA 툴킷에 대한 요건이다. TensorFlow >= 2.1.0 이상인 경우에 CUDA 10.1을 지원한다는 것을 알 수 있다. 항목을 클릭하면 아래 화면과 같이 `CUDA Toolkit 10.1 update2`라는 10.1 버전의 최신 정보가 보인다. 우측의 `Versioned Online Documentation`를 클릭해서 조금 더 자세히 살펴보자. - ![CUDA Toolkit](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-8.png) - -* __CUDA Toolkit v10.1.243 문서__ - + 클릭하면 CUDA Toolkit 가이드가 나오는데 `Installation Guides > Installation Guide Windows`을 차례대로 클릭해보자. 아래 붉은색으로 표시한 부분에서 Cuda 10.1이 윈도우 10에서 지원한다는 사실과 컴파일러 도구로 Visual Studio 2019 16.x 버전을 설치해야 한다는 것을 알게 되었다. - ![System Requirements](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-9.png) - -이것으로 호환성을 위한 조사는 거의 끝났다. 비록 영어지만 공식 문서에 관련된 모든 정보가 꼼꼼하고 친절하게 기입되어있다. 추가적인 정보가 필요한 분들은 나머지 항목들도 유심히 살펴보시기 바란다. - -## Visual Studio 2019 설치 ---- -위에서 조사한바와 같이 윈도우 환경에서 컴파일러 도구로 Visual Studio가 필요하다는 것을 확인했다. Visual Studio를 설치하는 목적은 LightGBM, Surprise등의 패키지를 활용하기 위함이므로 Visual Studio 2019용 Build Tools을 설치해도 되는데 컴퓨터 비전을 위한 전처리 등 OpenCV의 활용 가능성을 위해 여기서는 Community 라이센스를 설치한다. 버전은 위에서 확인한대로 2019을 설치한다. - -* 에 접속하여 아래 그림과 같이 Visual Studio 2019 Community 버전을 다운로드한다. - ![Visual Studio 2019 Community](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-10.png) - -* 다운로드 한 파일을 더블클릭하여 설치 중 아래 화면과 같이 `C++를 사용한 데스크톱 개발`에 클릭한 후 설치한다. - ![C++](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-11.png) - - -## CUDA 10.1 설치 ---- -위에서 호환성 조사 시 접속했던 [CUDA Toolkit Archive](https://developer.nvidia.com/cuda-toolkit-archive)에 다시 접속한다. - -* `CUDA Toolkit 10.1 update2 (Aug 2019)`을 클릭한 후 아래와 같이 PC 환경에 맞는 값을 선택 후 다운로드 한다. - ![CUDA 다운로드](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-12.png) - -* 다운로드가 완료되면 해당 파일을 관리자 권한으로 실행하여 설치한다. - -## cuDNN v7.6.5 설치 ---- -마찬가지로 [software_requirements](https://www.tensorflow.org/install/gpu#software_requirements)에 다시 접속한다. `CUPTI`는 CUDA Toolkit과 같이 제공된다고 명시되어 있으므로 별도의 설치가 필요없다. `cuDNN SDK`을 클릭한다. - -* [cudnn](https://developer.nvidia.com/cudnn) 페이지로 연결되는데 `Download cuDNN` 버튼을 클릭한다. 이어서 `Login`버튼을 클릭하여 로그인한다. 계정이 없는 경우 새로 만들어야 하는데 로그인 화면 하단의 `Login with your social account`를 클릭하면 페이스북 등의 SNS 계정으로 보다 쉽게 가입할 수 있다. 이메일 본인인증 및 간단한 설문조사를 마치고 나면 아래 화면과 같이 다운로드 페이지가 활성화된다. `cuDNN Library for Windows 10`을 클릭하여 다운로드한다. - ![cuDNN 다운로드](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-13.png) - -* 설치 방법은 역시 공식문서에 자세히 나와있다. [install-windows](https://docs.nvidia.com/deeplearning/sdk/cudnn-archived/cudnn_765/cudnn-install/index.html#install-windows) 링크를 참고하면 된다. 일단 다운로드 받은 파일을 압축풀기 하면 `cuda` 폴더 밑에 `bin, include, lib` 등 3개의 폴더가 존재함을 확인할 수 있다. 3개의 폴더를 복사하여 CUDA가 설치된 폴더인 `C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1` 폴더에 그대로 붙여넣기(덮어씌우기) 하면 된다. - -* 3. 윈도우 명령프롬프트에서 `control sysdm.cpl > 고급 탭 선택 > 환경변수 버튼`을 클릭한다. 시스템 변수에 `CUDA_PATH` 변수의 값이 잘 지정되었는지 확인하고, 없으면 공식 문서에서 언급한 바와 같이 다음의 환경변수를 추가한다.(일반적으로 별도의 환경변수를 추가할 필요는 없다.) - ``` - Variable Name: CUDA_PATH - Variable Value: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1 - ``` - -## 가상 개발 환경 만들기 및 접속 ---- -이로써 GPU를 활용하기 위한 사전 환경설정은 끝났다. 이제 본격적으로 텐서플로 등의 패키지를 설치해야 하는데 그 전에 `가상 개발환경`을 구성한다. 이를 구성하는 이유는 `프로젝트 별로 파이썬의 라이브러리 사용여부 및 버전이 다를 경우` 충돌을 방지하기 위해서이다. - -예를들어 최근 텐서플로 2.0 버전이 출시되었는데 1.x 버전을 사용하던 기존 프로젝트의 레거시 규모가 거대할 경우 2.0 버전으로 포팅을 완료하기 전까지는 1.x 버전을 활용해야 한다. 그런데 지금처럼 텐서플로 2.0을 활용하여 신규 프로젝트를 진행하고 싶은 경우 버전 충돌이 일어난다. 이를 피하기 위해서 프로젝트 단위별로 가상 환경을 구성하는 것이 중요하다. - -* 우선 아나콘다 프롬프트에 접속한 후(시작버튼 > Anaconda > Anaconda Prompt), 아래와 같이 test용 폴더를 만든다. -``` -(base) C:\projects\dl\test> -``` - -* 이어서 필요 시 아나콘다의 버전을 최신화한다. (현 버전이 마음에 들면 건너뛰어도 무방하다.) -``` -(base) conda update -n base -c defaults conda -``` - -* 새로운 가상환경을 만든다. (참고로, 쉽게 예시를 들기 위해 가상환경 이름을 test로 사용하였으나, 보통은 `tensorflow2_py37`와 같이 프레임워크 및 버전에 맞게 명명한다.) -``` -(base) conda create -n test python=3.7 -``` - -* 가상환경으로 접속한다. -``` -(base) C:\projects\dl\test>activate test -``` - - -## 텐서플로 및 기타 라이브러리 설치 ---- -가상환경에 접속하면 프롬프트 맨 앞이 (base) -> (test)로 변경되는 것을 확인할 수 있다. 이제 가상환경에 필요한 버전의 텐서플로와 기타 필요 라이브러리를 설치한다. - -* `쥬피터 노트북`과 관련된 라이브러리를 제일 먼저 설치한다. -``` -(test) conda install -n test ipython notebook jupyter -``` - -* 개발중인 프로젝트가 의존성 및 버전 등에 민감한 경우, 아래와 같이 라이브러리의 `특정 버전`을 같이 명시할 수도 있다. -``` -(test) conda install -n test numpy==1.16.4 # numpy의 특정 버전을 설치하고 싶은 경우 버전 명시 -``` - -* 다음으로 머신러닝 및 딥러닝에 자주 활용되는 패키지를 설치한다. 패키지명 각각의 기능이 궁금하다면 예전에 작성한 [머신러닝을 위한 파이썬의 도구들](https://theorydb.github.io/review/2019/06/05/review-book-intro-ml-py/#%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D%EC%9D%84-%EC%9C%84%ED%95%9C-%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9D%98-%EB%8F%84%EA%B5%AC%EB%93%A4scikit-learn-%EB%93%B1)을 참고하시기 바란다. -``` -(test) conda install -n test numpy scipy matplotlib spyder pandas seaborn -scikit-learn h5py pillow matplotlib tqdm -``` - -* tensorflow를 설치한다. -``` -(test) conda install -n test tensorflow-gpu -``` - -* keras를 설치한다. -텐서플로 2 버전부터는 케라스가 내장되어 별도의 설치가 필요없으나 이전 버전인 경우 아래와 같이 설치한다. -``` -(test) conda install -n test keras -``` - -마지막으로 일반적인 방법으로는 설치되지 않는 까다로운 패키지들을 설치해보자. - -* 먼저 그라디언트 부스팅으로 자주 활용되는 `xgboost`를 설치해보자. 위 방식과 동일하게 일반적인 방법으로 설치하면 "The following packages are not available from current channels"이라는 오류메시지가 나온다. - - 이럴 경우 보통 설치 명령어에 `-c conda-forge` 옵션을 추가하면 해결되는 경우가 많다. 이는 conda install에서 제공하는 다운로드 기본 채널에 패키지가 존재하지 않아서 발생하는 문제인데 conda-forge 옵션을 통해 검증된 패키지들이 모인 채널에서 강제로 다운로드 받아 설치하겠다는 옵션이다. - - 하지만 xgboost는 이 방법으로도 해결되지 않는다. 이럴 경우 최상의 솔루션은 위에서 언급한 바와 같이 공식 문서에서 찾는 것이다. 링크에 접속하면 윈도우 64비트 버전의 xgboost를 설치하는 방법이 안내되므로 아래와 같이 해당 페이지에서 제시하는 명령어로 설치하면 이상없이 설치된다. - ``` - (test) conda install -n test -c anaconda py-xgboost - ``` - -* 마찬가지로 `catboost`도 위와 같이 공식문서를 참고하여 설치한다. - ``` - (test) conda install -n test -c conda-forge catboost - ``` - -* 동일하게 `lightgbm` 등도 위와 같이 설치한다. - ``` - (test) conda install -n test -c conda-forge lightgbm # lightgbm - (test) conda install -n test -c conda-forge pydotplus # pydotplus - (test) conda install -n test -c conda-forge pydot # pydot - ``` - -* 그 외 `scikit-image, patsy, statsmodels, opencv` 등 별도로 필요한 라이브러리를 설치한다. - -* 설치가 모두 완료되었다면 이제 마지막 단계이다. 지금 구축한 가상환경을 ipython kernel로 등록한다. -``` -python -m ipykernel install --user --name test -``` - -이상으로 라이브러리 설치를 마친다. 그 외 Kaggle 혹은 실무 프로젝트의 필요에 의해 다른 패키지 설치가 필요한 경우 와 같은 공식문서 혹은 검색을 활용하시기 바란다. - - -## 설치 환경 테스트 ---- -이제 모든 준비는 끝났다. 남은 것은 지금까지 설치한 환경이 잘 돌아가는지 테스트하는 것이다. - -* 아나콘다 프롬프트에서 가상환경에 접속한 후 아래의 명령어로 `주피터 노트북에 접속`한다. -``` -(test) C:\projects\dl\test>jupyter notebook -``` -아래와 같이 예쁜(?) 쥬피터 노트북이 주소로 실행되는 것을 볼 수 있다. 우측의 `New` 버튼을 클릭하여 위에서 ipython kernel로 등록한 `test`를 선택한 후 아래 예제를 차례로 실행해본다. -![쥬피터 노트북](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-14.png) - -* 텐서플로 GPU 버전 설치여부 확인 -빈 셀에 아래의 코드를 입력한 후 -``` -import tensorflow -from tensorflow.python.client import device_lib -print(device_lib.list_local_devices()) -``` -`Shift + Enter` 단축키를 누르면 아래 그림과 같은 GPU 정보를 확인할 수 있다. -![tensorflow-gpu](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-15.png) - -이를 통해 tensorflow(CPU버전)가 아닌 tensorflow-gpu가 이상없이 설치되었음을 확인할 수 있다. 추가로 GPU 모델은 GeForce GTX 1660 Ti이고(~~스펙이 낮다고 비웃지 마시길...ㅜㅜ 이것도 와이프 몰래 사비를 털어서 어렵게 어렵게 장만했습니다.~~), compute capability는 7.5이며, 메모리는 약 4GB 정도 된다는 것을 확인할 수 있고 GPU는 1개가 있음 등의 정보를 확인할 수 있다. - -* 그 외 기타 패키지들이 정상적으로 설치되었는지 아래의 코드를 통해 확인한다. -``` -import tensorflow -from tensorflow import keras -import pandas -import sklearn -import scipy -import numpy -import matplotlib -import pydotplus -import pydot -import h5py -print('tensorflow ' + tensorflow.__version__) -print('keras ' + keras.__version__) -print('pandas ' + pandas.__version__) -print('sklearn ' + sklearn.__version__) -print('scipy ' + scipy.__version__) -print('numpy ' + numpy.__version__) -print('matplotlib ' + matplotlib.__version__) -print('h5py ' + h5py.__version__) -``` - -별다른 이상이 없다면 아래와 같은 결과가 나올 것이다. -``` -tensorflow 2.0.0 -keras 2.2.4-tf -pandas 1.0.1 -sklearn 0.22.1 -scipy 1.4.1 -numpy 1.18.1 -matplotlib 3.1.3 -h5py 2.10.0 -``` - -## PyTorch 설치 ---- -PyTorch는 Tensorflow와 함께 딥러닝 프레임워크의 양대 산맥이라고 할 수 있다. 몇 년 전만해도 NLP 분야에 자주 활용되었으나, 최근 2020년에 이르러 가장 많이 활용되는 딥러닝 프레임워크로 자리매김하는 등 파죽지세로 경쟁 프레임워크를 압도하고 있고 연구 결과를 구현하는데 애용되고 있기에 반드시 배워둘 필요가 있다. - -Tensorflow 1.x 대 버전에 비해 Define-By-Run 방식을 채택하여 직관적인 코드 설계가 가능하며 가독성 측면에서 유리하다. Computational Graphs를 빠르고 쉽게 분석할 수 있다는 점도 큰 장점이다. 덕분에 연구자들의 코드 구현에 있어 큰 사랑을 받아왔으며, 와 같은 연구 결과를 코드로 구현하는 사이트에서 Pytorch로 구현한 코드가 상당한 포션을 차지하고 있다는 점에서 그 인기가 입증되고 있다고 볼 수 있다. - -Tensorflow는 Auto ML 등의 방대한 라이브러리 및 GCP 클라우드 호환이라는 나름 고유의 장점이 있고 2.0 이후로는 Define-By-Run 방식을 채택하고 있어 PyTorch와 기능상 큰 차이가 없지만 아직 대부분의 오픈 소스 및 레퍼런스들이 1.x 버전 대의 코드로 공유되고 있다는 단점이 있다. - -본 파트에서는 PyTorch를 설치하는 방법을 정리해 본다. - - -* 먼저 Anaconda Prompt 셀에 접속하여 Tensorflow를 설치할 때와 마찬가지로 새로운 가상 환경을 만든다. 여기에서는 가상환경의 이름으로 `pytorch17_p38`을 지정하였다. -``` -C:\projects\torch> conda create -n pytorch17_p38 python=3.8 -``` - -* 가상환경에 접속한다. -``` -C:\projects\torch> conda activate pytorch17_p38 -``` - -* 에 접속한 후, 스크롤을 내리다보면 아래 그림과 같은 INSTALL PYTORCH 메뉴가 보인다. OS 등 각자의 개발 환경 및 버전을 체크하면 보라색으로 표시한 부분과 같은 install 명령어가 자동 완성된다. - ![pytorch](https://theorydb.github.io/assets/img/dev/dl/2020-02-14-dev-dl-setting-local-python-16.png) - -* 위 명령어에 가상환경을 추가로 지정하여 설치한다. -``` -(pytorch17_p38)C:\projects\torch> conda install pytorch torchvision torchaudio cudatoolkit=10.1 -c pytorch -n pytorch17_p38 -``` - -* 주피터 노트북 등 추가로 원하는 라이브러리를 설치한다. -``` -(pytorch17_p38)C:\projects\torch> conda install -n pytorch17_p38 jupyter notebook ipython -``` - -* conda list 명령어를 통해 원하는 라이브러리가 원하는 버전으로 모두 설치되었는지 확인한다. 부족한 라이브러리는 위 명령어와 같이 추가로 설치한다. -``` -(pytorch17_p38)C:\projects\torch> conda list -``` - -* 구축한 가상환경을 ipython kernel로 등록한다. -``` -(pytorch17_p38)C:\projects\torch> python -m ipykernel install --user --name pytorch17_p38 -``` - -* 주피터 노트북에 접속한 후, 방금 등록한 pytorch17_p38 커널을 선택하여 새 파일을 만든다. -``` -(pytorch17_p38)C:\projects\torch> jupyter notebook -``` - -* 노트북 셀에 아래와 같은 import 문을 실행 시 오류가 발생하지 않으면 성공적으로 설치된 것이다. -``` -import torch -``` - - -## 마치며... ---- -드디어 딥러닝 개발 환경이 구축되었다. 여기까지 따라오시느라 정말 고생하셨다는 말씀을 드리고 싶다. 추후 업무 도메인별, 플랫폼별 별도의 환경설정 방식을 정리하여 하나씩 추가할 예정이다. 특히 캐글에 관련된 환경설정은 한번 반드시 짚고 넘어갈 생각이다. - -더불어 딥러닝 개발과 관련하여 예전에 정리한 문서를 링크로 남긴다. -* [[Colab] Google Colab 환경설정 및 사용법](https://theorydb.github.io/dev/2019/08/23/dev-ml-colab/) -* [[Jekyll Blog] 마크다운(Markdown) 사용법 및 예제](https://theorydb.github.io/envops/2019/05/22/envops-blog-how-to-use-md/) -* [[R] R 설치 및 환경구성(10분만에 끝내는)](https://theorydb.github.io/dev/2019/05/01/dev-r-rinstall/) -* [아나콘다 전용 파이참 다운로드](https://www.jetbrains.com/pycharm/promo/anaconda/) - -긴 글 읽어주심에 감사드리며 궁금하시거나 문제점이 발생된다면 댓글 부탁드린다. 앞으로 개인적으로 진행했던 흥미로운 예제를 바탕으로 머신러닝 및 딥러닝의 포스팅을 종종 올릴 생각이니 잊지말고 자주 들려주시면 감사하겠다. - diff --git a/_posts/2020-03-11-review-book-data-anomaly-detection.markdown b/_posts/2020-03-11-review-book-data-anomaly-detection.markdown deleted file mode 100644 index 2b3af540b..000000000 --- a/_posts/2020-03-11-review-book-data-anomaly-detection.markdown +++ /dev/null @@ -1,152 +0,0 @@ ---- -layout: post -title: "[리뷰] 엘라스틱서치로 알아보는 이상징후 분석" -subtitle: "Data Anomaly Detection" -categories: review -tags: review book data anomaly detection elk elasticsearch logstash kibana -comments: true -header-img: img/review/2020-03-11-review-book-data-anomaly-detection-1.jpg ---- - -## 개요 -> 본 리뷰는 `이지데이터` 출판사 `"엘라스틱서치로 알아보는 이상징후 분석(강명훈 저)"`을 읽고 얻은 지식을 정리한 글입니다. - -- 목차 - - [시간이 많지 않은 독자분들을 위하여](#시간이-많지-않은-독자분들을-위하여) - - [EDA, 데이터의 질감을 느낄 수 있는 기회!](#eda-데이터의-질감을-느낄-수-있는-기회) - - [데이터 전처리](#데이터-전처리) - - [데이터 시각화](#데이터-시각화) - - [ELK 스택과 머신러닝](#elk-스택과-머신러닝) - - [정규표현식](#정규표현식) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [책의 구성 및 요약](#책의-구성-및-요약) - - [요약하며...](#요약하며) - - -## 시간이 많지 않은 독자분들을 위하여 ---- -본 도서는 제목이 말해주듯 `이상징후 분석`이라는 주제를 다루기에 보안분야에 대한 도메인 지식이 부족한 분이라면 책의 난이도에 선입견이 들 수 있다. - -하지만 1장(데이터분석)을 보면 알 수 있듯이 생전 처음 데이터 분석을 접하는 사람도 이해할 수 있도록 매우 쉽게 데이터 분석 방법을 다룬다. 소재가 보안분야일 뿐이다. 제목에서 선입견이 생길까 우려되어 본 메시지부터 전달하였다. - -책은 크게 두 파트로 구성된다. 하나는 `데이터 분석`의 기초, 다른 하나는 `ELK 스택을 활용한 이상징후 분석`이다. 대상 독자는 보안 분야에 관심이 있는 사람은 물론 AI, 빅데이터, 머신러닝에 관심이 있는 사람도 포함된다. 그만큼 보안 도메인 지식 이전에 데이터 분석이 주를 이룬다. - -필자와 같이 AI에 관심이 있는 분이라면 반드시 일독을 권하고 싶다. 대다수의 AI 초보자들은 Keras API로 딥러닝을 구현하다가 막상 본인의 과제는 구현하지 못하는 경우가 흔하다. 기본 내공이 약한것을 깨닫고 밑바닥 구현 원리에 집중한다. 손실함수에 대한 정확한 개념을 다시잡고, 최적의 W(가중치)를 학습하기 위해 손실함수의 미분 방법을 배운다. 경사하강법의 원리를 배우고 미분의 체인룰을 활용하여 오차역전파법도 익힌다. - -물론 이 또한 중요한 과정이다. 그런데 문제는 그런 기초를 익히고도 현업에서 맞닥뜨린 데이터를 마주하면 다시 좌절하기 십상이다. 무엇이 문제일까? 본 도서는 그 해답을 얻기 위한 인사이트를 제공한다. 보다 관심이 있으시다면 아래 챕터를 계속 읽어주시기 바란다. - -* [책소개 LINK](https://play.google.com/store/books/details/%EA%B0%95%EB%AA%85%ED%9B%88_%EC%97%98%EB%9D%BC%EC%8A%A4%ED%8B%B1%EC%84%9C%EC%B9%98%EB%A1%9C_%EC%95%8C%EC%95%84%EB%B3%B4%EB%8A%94_%EC%9D%B4%EC%83%81%EC%A7%95%ED%9B%84_%EB%B6%84%EC%84%9D?id=eqjDDwAAQBAJ) - -## EDA, 데이터의 질감을 느낄 수 있는 기회! ---- -앞의 챕터에서 소개한 본 도서에서 얻을 수 있는 인사이트를 가장 잘 표현하는 문장을 소개해볼까 한다. 데이터 분석과 관련된 컬럼에서 발췌한 일부이다. - -> "아주 똑똑한 학생이나 엔지니어도 자신이 만지는 데이터에 대해 놀라울 정도로 호기심을 보이지 않는 경우가 많다. 대부분 뭘 궁금해해야 하는지를 모른다. 데이터를 그냥 가로 세로 줄 맞춘 다음 블랙박스 모델에 집어넣으면 첨단 알고리즘이 알아서해줄 거라 기대한다. `당연히 실패한다.` 그래서 필자는 프로젝트에서 데이터의 공간 변환, 공간 탐색 등의 전문적 단계에 진입하기 전에 학생들에게 데이터를 가지고 `온갖 자질구레한 관찰을 해보도록 강제한다. 데이터의 질감을 느끼는 단계다.` 이 과정에서 통찰과 관점이 생긴다. 이 단계를 충분히거치지 않은 문제의 모델링은 문제를 쓸데없이 어렵게 만들거나 왜곡시킬수도 있다." ->\- 문병로 서울대 컴퓨터공학부 교수 (출처) - -책의 머리글에서 저자가 소개한 모 교수님의 컬럼으로 머신러닝, 딥러닝에 앞서 무엇이 중요한지 그리고 EDA의 중요성을 현실과 결부하여 알기쉽게 전달한다. EDA의 중요성을 알기쉽게 표현한 또 다른 인용구를 소개해본다. - -> “봤던 서류를 계속 다시 본다. 보고 또 본다. 혹 놓치는 게 있을까봐 뒤부터 보기도 한다. 익숙해져서 놓치는 부분이 있을까봐 `계속 낯설게 하기` 작업을 하는 것이다. ” ->\- 미생 84 수 - -데이터 분석은 크게 두가지로 나뉜다. `탐색적 데이터 분석(Exploratory Data Analysis)`은 집계(Metrics), 시각화 등을 이용한 데이터 구조 및 의미를 파악하는 과정이다. 나머지 하나는 `확증적 데이터 분석 (Confirmatory Data Analysis)`으로 파악된 데이터 구조를 바탕으로 의미 기반의 정형화된 모델링을 분석하는 과정이다. - -저자는 1장(데이터분석)에서 시종일관 독자로 하여금 데이터 질감을 느끼도록 강제한다. 도구 선택부터 독특하다. 요즘 유행하는 Python, Julia, R, Swift, Spark 등을 사용하지 않고 누구나 접해본 `Excel`로 분석을 시작한다. - -혹 실망하셨는지? 필자도 책을 읽으며 5초 정도(?) 실망했다. 하지만 데이터 분석의 본연을 위해 이만한 장치가 없었다. 도구는 도구일 뿐 본질이 아닌데 자칫 도구에 집착하여 데이터 분석을 뒷전으로 미루거나 도구의 기능에 빠져들어 엉뚱한 부분에 시간과 노력을 낭비하는 일을 방지할 수 있다. 그래도 위로가 안되신다면 2장부터 ELK라는 멋진 도구를 이용한 분석을 시작하니 실망하지 않으셨으면 한다. Keras API에 집중하느라 분석과 모델링의 감을 잃었던 경험이 있다면 더욱 좋다. 엑셀로 충분히 느낀 감을 통해 ELK로 구축하며 Keras API를 사용하는 동안 무엇이 문제였는지 확실히 깨닫게 될 것이다. - -다음은 책의 서두 중 일부이다. -> ① [그림 1-2]는 인구라는 상태의 수를 센 것, ② [그림 1-3]은 인구라는 상태를 남자와 여자라는 두 개의 상태로 쪼개서 수를 센 것, ③ [그림 1-4]는 남자, 여자, 그리고 나이라는 세 개의 상태로 쪼개서 수를 센 것이다. 이중 인구라는 상태를 이해하는 데 가장 도움이 되는 통계는 무엇일까? - -쪼개면 쪼갤수록 그 상태에 대해 더욱 잘 알 수 있다는 통계의 기본을 시각화 된 도표를 활용하여 흥미롭게 전달한다. 이 책에는 평소의 얕은 상식에서 출발하여 데이터 분석으로 항해하기 까지의 일반인들의 어려움과 고민을 함께 다루며 나아간다. 따라서 본인이 통알못, 수알못, 데알못일지라도 읽는데 전혀 부담이 없다. - -이 정도면 책의 백미는 거의 다 소개한 것 같다. 아쉬워 할 분들을 위해 추가로 얻을 수 있는 지식들을 아래 챕터에서 간단히 요약해본다. - -## 데이터 전처리 ---- -![전처리](https://theorydb.github.io/assets/img/review/2020-03-11-review-book-data-anomaly-detection-2.jpg) - -책에서는 아래 문구와 같이 전처리의 필요성을 알기 쉽게 설명한다. -> 서버의 로그를 분석하기 위해서 1 초에 한 줄씩 읽는다고 해도 사람이 (밥도 안 먹고, 잠도 안 자고, 화장실까지 포기하면서) 하루에 읽을 수 있는 로그양은 86,400 개일 뿐이다. - -과거 데이터 파싱(Parsing)이나 ETL(Extract, Transform, Load) 등의 용어로 많이 불린, 빅데이터가 유행하면서부터는 거의 ‘데이터 전처리’란 용어로 굳어진 ‘처리’ 과정을 밑바닥부터 엑셀을 활용하여 심도 있게 다룬다. - -예를 들어 실습을 따라하다보면 SQL Injection 취약점 스캔 시도가 변수 고유 개수 증가 원인임을 알 수 있고 고유한 변수라는 상태의 개수, 숫자의 변화를 추적함으로써 해킹 패턴을 검색하지 않고도 해킹 징후를 발견할 수 있게된다. - -그 과정에서 아래 그림과 같이 보안 분야의 도메인 지식을 얻을 수 있다는 장점도 있다. -![전처리](https://theorydb.github.io/assets/img/review/2020-03-11-review-book-data-anomaly-detection-3.jpg) - -## 데이터 시각화 ---- -시각화의 중요성은 이미 위에서 탐색적 데이터 분석을 소개하면서 언급하였다. 문제는 시각화를 어떻게 구현하고 활용할 것인지가 핵심이라 할 수 있는데 책을 읽다보면 시각화 과정에서 자주 맞닥드리게 되는 실전에서의 해결방법이 아래와 같이 다양하게 등장한다. - ->200, 304 응답 코드 발생량이 너무 커서 나머지는 보이지도 않는다. 요청 대부분 정상 처리 되고 있다는 얘기. 대부분의 사용자는 정상일테니 당연한 결과. 우리는 보안 관점의 분석을 하고 있으니 [그림 1-63]처럼 정상 응답을 제외시켜 보자. ![시각화1](https://theorydb.github.io/assets/img/review/2020-03-11-review-book-data-anomaly-detection-4.jpg) - -> 점을 표시하지 않아서 발생한 결과. 데이터 분석은 데이터만 잘 알아서는 곤란하며, 분석 도구의 특징도 잘 알아둘 필요가 있다. [그림 1-64]처럼 차트 종류를 ‘표식이 있는 꺾은 선형’으로 바꾸니 보이지 않던 500 응답 코드 상태가 보인다. - -> 500 응답 코드는 서버 설정이나 개발 과정의 오류에 의해서도 발생하지만, ‘어떤 요청을 했길래 서버에서 에러가 발생했을까?’란 호기심을 갖게 해주는, 보안 관점에서도 가치가 있는 통계 지표다. - -> 404 역시 서버측 실수에 의해 발생할 수 있는 응답 코드. 하지만 ‘왜 없는 페이지를 요청했을까?’란 의문을 품을 수 있는, 역시 가치가 있는 보안 지표다. - - -## ELK 스택과 머신러닝 ---- -![ELK](https://theorydb.github.io/assets/img/review/2020-03-11-review-book-data-anomaly-detection-6.jpg) - -ELK를 다루는 파트는 앞서 설명한 바와 같이 본 도서를 구성하는 큰 축을 담당하고 있다. 하지만 저자는 책의 말미에서 데이터 분석 강의의 지루함을 상쇄하기 위한 `은총알(silver bullet)`으로 ELK 스택을 활용했다고 소개한다. 그만큼 저자가 전달하고 싶었던 본연의 스킬은 데이터 분석이라는 것이다. - -그렇다고 ELK 파트를 무시하면 안된다. 1장에서 데이터 분석에 대한 질감을 느끼며 익혔던 인사이트를 ELK라는 훌륭한 도구로 구현하는 과정이다. 설치부터 데이터 연동은 물론 키바나를 활용한 대시보드 구현까지 ELK도 수준높게 다룰 수 있다. -![대시보드](https://theorydb.github.io/assets/img/review/2020-03-11-review-book-data-anomaly-detection-7.jpg) - -더불어 엘라스틱 머신러닝까지 체험할 수 있다. 30일 간 무료로 활용할 수 있는 플래티넘 라이센스를 통해서 말이다. -![머신러닝](https://theorydb.github.io/assets/img/review/2020-03-11-review-book-data-anomaly-detection-8.jpg) - -## 정규표현식 ---- -프로그래밍은 물론 데이터 전처리에 있어 알아두면 생산성을 수십배까지 끌어올리고 주위 사람들에게 고수의 냄새를 풍길 수 있는 정규표현식! 본 도서는 정규표현식을 위한 도서는 아니지만 EDA 및 ELK를 활용하는 과정에서 약간이나마 맛을 볼 수 있다. [PCRE](https://regex101.com/r/vZehhU/1) 웹 사이트를 활용해서 보다 쉽게 실습하는 방법을 알려준다. -![정규표현식1](https://theorydb.github.io/assets/img/review/2020-03-11-review-book-data-anomaly-detection-5.jpg) -![정규표현식2](https://theorydb.github.io/assets/img/review/2020-03-11-review-book-data-anomaly-detection-9.jpg) - -번외로 사실 저자는 보안분야는 물론 정규표현식 또한 초고수이다. 3년 전 즈음 대한민국 최대 서점 교보문고 광화문점에서 정규표현식을 가장 쉽게 저술한 책을 몇시간 동안 찾아 헤맨적이 있다. 그때 압도적으로 훌륭한 책을 고를 수 있었는데 그 책의 저자가 바로 본 도서의 저자이다. [데이터 분석이 쉬워지는 정규표현식](http://www.yes24.com/Product/Goods/38600172?Acode=101)라는 책인데 정규표현식에 관심있는 분들은 꼭 한번 읽어보시기 바란다. - - -## 누가 읽어야 하는가? ---- -- AI, 머신러닝, 딥러닝 및 데이터 분석에 관심이 있는 분(특히, 초보자). - -- ELK 스택을 실무에 활용하고 싶은 분. - -- 로그 분석을 통한 이상징후를 분석하고 싶은 분. - - -## 책의 구성 및 요약 ---- -이 책은 크게 두부분으로 구성되며, 각 파트에서 다루는 내용을 아래와 같이 요약해 보았다. - -- __1. 데이터 분석 (1장)__ - - 통계 분석 및 데이터 전처리 - - 탐색적 데이터 분석 - - 데이터 해상도 - -- __2. ELK 스택을 활용한 이상징후 분석 (2장 ~ 4장)__ - - 엘라스틱 스택 설치 및 데이터 연동 - - 시계열 차트 분석 및 이상징후 대시보드 구현 - - 이상징후 분석환경 구축 및 정규표현식의 활용 - - -## 요약하며... ---- -제목에서 선입견이 생길까 본 메시지부터 전달한다. 본 도서는 제목이 말해주듯 `이상징후 분석`이라는 주제를 다루기에 보안분야 도메인 지식이 부족한 분이라면 책의 난이도에 선입견이 생길 수 있다. 하지만 1장(데이터분석)을 보면 알 수 있듯이 생전 처음 데이터 분석을 접하는 사람도 이해할 수 있도록 매우 쉽게 데이터 분석 방법을 다룬다. 다루는 데이터 소재가 보안분야일 뿐이다. - -책은 크게 두 파트로 구성된다. 하나는 `데이터 분석`의 기초, 다른 하나는 `ELK 스택을 활용한 이상징후 분석`이다. 대상 독자는 보안 분야에 관심이 있는 사람은 물론 AI, 빅데이터, 머신러닝에 관심이 있는 사람도 포함된다. 그만큼 보안 도메인 지식 이전에 데이터 분석이 주를 이룬다. - -필자와 같이 AI에 관심이 있는 분이라면 반드시 일독을 권하고 싶다. 대다수의 AI 초보자들은 Keras API로 딥러닝을 구현하다가 막상 본인의 과제는 구현하지 못하는 경우가 흔하다. 기본 내공이 약한것을 깨닫고 밑바닥 구현 원리에 집중한다. 손실함수에 대한 정확한 개념을 다시잡고, 최적의 W(가중치)를 학습하기 위해 손실함수의 미분 방법을 배운다. 경사하강법의 원리를 배우고 미분의 체인룰을 활용하여 오차역전파법도 익힌다. - -물론 이 또한 중요한 과정이다. 그런데 문제는 `그런 기초를 익히고도 현업에서 맞닥뜨린 데이터를 마주하면 다시 좌절하기 십상이다. 무엇이 문제일까?` 본 도서는 그 해답을 얻기 위한 인사이트를 제공한다. - -더불어 본 도서는 내용의 가독성과 전달력이 뛰어나고 어려운 지식에 대한 포장없이 예제를 통해 진솔하게 독자에게 다가가는 저자의 기술 방식이 일품이다. 반면 아쉬운 점은 고르기 어렵다. 굳이 필자의 취향으로 하나 꼽으라면 E-book만 존재하고 종이책이 없다는 사실 정도이다. - -데이터 분석의 기초가 부족해 좌절했던 분께 특히 추천드리고 싶다. 그 외 보안 이상징후 분석, ELK, 정규표현식, EDA, 전처리 실무 등에 관심이 많은 분이라면 일독을 권하는 바이다. - -* [책소개 바로가기](https://play.google.com/store/books/details/%EA%B0%95%EB%AA%85%ED%9B%88_%EC%97%98%EB%9D%BC%EC%8A%A4%ED%8B%B1%EC%84%9C%EC%B9%98%EB%A1%9C_%EC%95%8C%EC%95%84%EB%B3%B4%EB%8A%94_%EC%9D%B4%EC%83%81%EC%A7%95%ED%9B%84_%EB%B6%84%EC%84%9D?id=eqjDDwAAQBAJ) -* [강명훈 저자 블로그 바로가기](http://kangmyounghun.blogspot.com/) diff --git a/_posts/2020-03-13-review-book-ml-python-slice.markdown b/_posts/2020-03-13-review-book-ml-python-slice.markdown deleted file mode 100644 index 508fa146c..000000000 --- a/_posts/2020-03-13-review-book-ml-python-slice.markdown +++ /dev/null @@ -1,142 +0,0 @@ ---- -layout: post -title: "[리뷰] 머신러닝을 위한 파이썬 한 조각" -subtitle: "a slice of Python for machine Learning" -categories: review -tags: review book ml python CNN RNN TensorFlow BackPropagation DNN Derivative -comments: true -header-img: img/review/2020-03-13-review-book-ml-python-slice-1.jpg ---- - -## 개요 -> 본 리뷰는 `비제이퍼블릭` 출판사 `"머신러닝을 위한 파이썬 한 조각(박성호 저)"`을 읽고 얻은 지식을 정리한 글입니다. - -- 목차 - - [시간이 많지 않은 독자분들을 위하여 (요약소개)](#시간이-많지-않은-독자분들을-위하여-요약소개) - - [MNIST, 한놈만 팬다.(수치미분 -> 오차역전파 -> 텐서플로 -> CNN)](#mnist-한놈만-팬다수치미분---오차역전파---텐서플로---cnn) - - [오차역전파, 미분을 12번 반복하여 끝을 본다.](#오차역전파-미분을-12번-반복하여-끝을-본다) - - [Python과 Numpy는 헷갈리는 것만 최소한으로](#python과-numpy는-헷갈리는-것만-최소한으로) - - [수학은 언제나 정면 돌파, 그리고…](#수학은-언제나-정면-돌파-그리고) - - [누가 읽어야 하는가?](#누가-읽어야-하는가) - - [책의 구성 및 요약](#책의-구성-및-요약) - - -## 시간이 많지 않은 독자분들을 위하여 (요약소개) ---- -한마디로 표현하자면 `이 세상에서 가장 쉽지만 깊이있는 딥러닝 도서`이다. 왜 가장 쉬운 딥러닝 책인지 하나씩 살펴보자. - -* 제목에 "한 조각"이라는 표현이 있는데 그래서인지 `예제 코드도 한 놈만(?) 팬다`. 바로 MNIST. 먼저 수치미분만 활용한 딥러닝 모델을 만들어 정확도 92%를 얻어낸 후 오차역전파, 텐서플로, 마지막으로 CNN을 적용하여 99%까지 단계별로 정확도를 높여나가며 적용한 원리를 깊이있게 살펴본다. 예제가 하나인 관계로 딥러닝의 원리에 더욱 집중할 수 있다. - -* 딥러닝을 학습하며 수학적으로 가장 어려움을 겪는 내용은 아무래도 `오차역전파`가 아닐까 한다. 이 문제를 해결하기 위해 은닉노드와 출력노드를 단 2개로 한정한 후 `12번의 미분 계산과정을 반복`한다. 어지간히 머리가 안 좋은사람도 12번 반복해서 읽고도 이해 못하긴 어려울 듯 하다. 반드시 오차역전파를 이해시키고야 말겠다는 저자의 뚝심이 느껴졌다. - -* 책을 읽다보면 설명은 뒤에 있는데 전체 도식도를 확인하기 위해 앞으로 책장을 넘겨야 하는 경우가 있다. 때로는 왔다갔다하기 귀찮아 대충 읽고 넘기는 경우도 있고 심지어는 찾지못해 그냥 읽는 경우가 생길 수 있다. 저자는 같은 그림이 반복되어 지면이 낭비될 지언정 관련 설명 근처에 반드시 `도식도를 반복적으로 배치`한다. 전달력과 가독성이 훨씬 높아진다. - -* 보통 딥러닝 서적에 Python의 기초 문법이나 Numpy 활용법을 다루면 자칫 지면의 양이 늘어나거나 독자 입장에서는 주객이 전도되어 딥러닝을 포기하고 파이썬에 집중하는 현상이 생길 수 있다. 마치 수학의 정석 집합 부분만 읽고 포기하는 것처럼... 그래서일까? `Python과 Numpy에서 혼동하기 쉬운 (예를 들면 reshape함수와 전치행렬의 차이 등) 부분만 설명`한다. 전부 다 배우다가 잊혀지기 전에 핵심만 습득할 수 있다. - -특히 아무리 학습해도 딥러닝의 기본을 깊이있게 이해하지 못한 분들께 추천드리고 싶다. 보다 관심이 있으시다면 이어지는 챕터를 계속 읽어주시기 바란다. - -* [책소개 LINK](http://www.yes24.com/Product/Goods/87663679?scode=032&OzSrank=1) - - -## MNIST, 한놈만 팬다.(수치미분 -> 오차역전파 -> 텐서플로 -> CNN) ---- -제목에 "한 조각"이라는 표현이 있는데 그래서인지 `예제 코드도 한 놈만(?) 팬다`. 그 한놈은 바로 MNIST. 정확히는 RNN에서 "gohome"이라는 텍스트에서 "gohom"만 제시되었을때 다음에 올 글자로 "e"를 예측하는 예제가 하나 더 있긴하다. 이 예제를 제외하고는 전부 MNIST를 다룬다. - -현란한 텐서플로 코딩과 재미있는 다양한 예제를 찾는 분들께는 MNIST의 예제만 다룬다는 사실이 조금은 실망스러울지도 모른다. 하지만 예제가 극도로 간단해서 딥러닝 모델과 미분 등의 수학적 요소가 현미경으로 들여다보듯이 명확해진다. - -MNIST를 가지고 딥러닝을 이루는 스킬셋을 하나씩 적용하며 정확도를 높여가게 되는데 예제도 단순한데다 Numpy를 통해 수치미분부터 직접 구현하기 때문에 상세한 딥러닝의 원리를 이해할 수 있다. 구체적으로 아래와 같은 실습 과정을 거친다. - -* 1단계 : `수치미분`만 활용한 딥러닝 모델(정확도 92%) -* 2단계 : `오차역전파` 추가 적용(정확도 94%) -* 3단계 : `텐서플로` 구현(정확도 95%) - - 텐서플로 API 자체의 성능을 확인할 수 있는 계기이다. - - 내부적으로 텐서플로는 활성화함수로 sigmoid -> relu을, 출력층에 sigmoid -> softmax을 활용하므로 relu, softmax의 장점을 설명하는 부분이라고 봐도 되겠다. -* 4단계 : `CNN` 적용(정확도 99%) - -딥러닝 서적 중 베스트셀러였던 [밑바닥부터 시작하는 딥러닝](https://theorydb.github.io/review/2019/04/18/review-book-dl-from-scratch/)과 견주어도 손색이 없다. 각각의 장단점이 있겠지만 "밑바닥부터 시작하는 딥러닝"이 거의 모든 구현과정을 아주 상세하게 전부 훑었다면, 본 도서는 정말 필요하고 제일 중요한 숲부분만 추려 깊이있게 다룬다. 두권의 도서와 [파이썬 날코딩으로 알고짜는 딥러닝](https://theorydb.github.io/review/2019/09/04/review-book-dl-nal/)을 포함해서 3권의 도서를 독파한다면 딥러닝의 구현 원리를 확실히 이해하면서 적어도 딥러닝의 구현 및 응용에는 부족함이 없을듯 싶다. - - -## 오차역전파, 미분을 12번 반복하여 끝을 본다. ---- -딥러닝을 학습하며 수학적으로 가장 어려움을 겪는 부분은 아무래도 `오차역전파`가 아닐까 한다. 기껏 어렵게 미분에 대한 기초 개념을 잡아 여기까지 왔는데 시그모이드 함수 미분을 만나면 대부분 좌절을 겪기 때문이다. - -이 정도로 끝나면 그래도 견딜만은 한데 은닉층의 완전연결에서 생기는 간선의 수가 많아지고 선형대수 연산법도 알아야하는데 손실함수와 활성화함수의 개념도 잡히지 않은 상황에서 출력층과 은닉층의 각 가중치를 미분하다보면 머리는 하얘지고 결국 포기하기 일수다. - -저자는 숭실대학교 교수님으로 그동안 학생들이 딥러닝의 어느 부분을 어려워하는지, 어떻게 한학기에 딥러닝의 기본 지식을 잘 전달할 수 있는지 등 딥러닝 강의를 효율적으로 전달하기 위한 방법에 많은 고민이 있었던 것 같다. 책을 읽다보면 최대한 쉬운 구성과 반복 학습효과를 통해 저자가 전하고자 하는 의도를 느낄 수 있다. 확실히 교수님들이 쓰시는 서적들은 내공의 깊이가 다르다. - -딥러닝을 마주하며 겪는 이러한 주화입마를 해결하기 위해 이 책은 `예제를 최대한 단순화` 한다. 우선 은닉노드와 출력노드를 단 2개로 한정한다. 따라서 가중치(W) 4개와 바이어스(b) 2개만 존재하게 되며 이 6개의 요소를 모두 미분하는 과정을 기술한다. - -6개의 미분과정은 대부분 거의 동일하기에 보통 다른 서적에서는 간단한 1개 예제만 집중하고 다음 내용으로 넘어간다. 그런데 6번 전부 다 상세히 계산하고 설명한다. 더 놀라운 것은 은닉층에서 6번을 더 설명한다. `어지간히 머리가 안 좋은사람도 12번 반복해서 읽고도 이해 못하긴 어려울 듯` 하다. 반드시 이해시키고야 말겠다는 저자의 뚝심이 느껴지는 대목이었다. -![오차역전파 미분](https://theorydb.github.io/assets/img/review/2020-03-13-review-book-ml-python-slice-5.jpg) - - -## Python과 Numpy는 헷갈리는 것만 최소한으로 ---- -보통 딥러닝 서적에 Python의 기초 문법이나 Numpy 활용법을 다루면 자칫 지면의 양이 늘어나 딥러닝 본연에의 집중을 어렵게 할 소지가 있다. 독자 입장에서는 주객이 전도되어 "파이썬을 제대로 익힌 후 다시 도전해야 겠군."이라는 마음이 들어 마치 수학의 정석 집합만 읽고 포기하는 것과 동일한 현상을 겪을 수 있다. - -그래서일까? Python과 Numpy에서 혼동하기 쉬운 (예를 들면, reshape함수와 전치행렬의 결과는 shape은 같지만 결과는 엄연히 다르다.) 부분만 설명한다. 전부 다 배우다가 내용이 너무 많아 중요한 것들이 잊혀지기 전에 핵심만 쏙 먹을 수 있는 장점이 있다. -![reshape함수와 전치행렬의 결과](https://theorydb.github.io/assets/img/review/2020-03-13-review-book-ml-python-slice-2.jpg) - -본 도서에서 Python과 Numpy의 어떤 부분만 다루는지 간단히 요약해 본다. -* `Python`의 혼동하기 쉬운 기능 - - 음수 인덱스(a[-1]) : 리스트 원소를 -1, -2,..등의 음수 인덱스를 활용해 역순으로도 접근가능 - - 슬라이스(c[:-2]) : 인덱스의 범위 지정 기능 - - 튜플(a=(1,2,..)) : 소괄호로 묶는다. 읽기전용. - - 딕셔너리(score={'A':1}) : Key-value구조. - - mutable : 함수 파라미터의 원본값 변경가능(리스트, 딕셔너리, Numpy) <-> immutable : 숫자, 문자, 튜플 - - list comprehension : list 내부 변수에 for 구문 활용 - - 그 외 in 키워드, range() 활용법, 함수의 복수 return 기능, lamda, Class, self 등 - -* `Numpy`의 혼동하기 쉬운 기능 - - array(배열)과 ndarray(배열, 행렬)의 차이 : shape, ndim, reshape의 -1인자 - - reshape과 전치행렬의 결과 차이 - - Broadcast, Iterator, rand(), argmax(), loadtxt() 함수의 활용법 - -이와 같이 딥러닝 구현을 위해 반드시 알아야 할 기능 및 혼동하기 쉬운 기능만 집중적으로 다루기에 보다 딥러닝에 집중할 수 있다. - - -## 수학은 언제나 정면 돌파, 그리고... ---- -위에서 언급했듯이 오차역전파에서 12번의 미분 풀이를 필두로 본 도서의 매력 중 하나로 수학 정면 돌파를 들고싶다. 절대 공식을 생략하지 않으며 그 대신 `한번 공식이 등장하면 절대 혼동이 없도록 최대한 자세한 설명으로 보충`한다. - -4장에서는 편미분, 체인룰, 수치미분 등 딥러닝에서 활용하는 미분 정도로 범위는 좁히고 쉬운 비유를 들어 최대한 쉽게 설명한다. 미분이 무엇인지 보다 `왜 필요하고 딥러닝의 어느 부분에 적용하는지`를 명확히 짚고 있어 딥러닝과의 유기 관계가 명확해지며 마지막에 수치 미분 함수를 직접 구현하여 뒷장의 딥러닝 실습에 활용한다. - -마찬가지로 `MSE 손실함수, 경사하강법, 크로스 엔트로피 등 모든 단계에 수식이 등장`하고 최대한 쉽게 해설하며 입력변수가 1개 혹은 2개일때마다 각각에 대한 미분 및 수식 적용과정을 보여주기에 딥러닝의 원리를 전체적으로 조망하기 쉽다. -이토록 자세히 알아봤는데도 각 장마다 유사한 내용이 나올때마다 전 `공식과 유도과정을 반복적으로 설명`하여 앞부분에서 학습한 내용들의 기억이 반감될 때마다 다시 기억을 살릴 수 있다. - -CNN, RNN 등 다른 모델을 다룰기 직전에는 DNN의 핵심원리를 다시한번 소개해줌으로써 `DNN을 학습했던 기억력을 지속시키고 CNN, RNN 모델과의 정확한 차이점을 잡을 수 있게` 해준다. -![RNN](https://theorydb.github.io/assets/img/review/2020-03-13-review-book-ml-python-slice-3.jpg) -![CNN](https://theorydb.github.io/assets/img/review/2020-03-13-review-book-ml-python-slice-4.jpg) - -덕분에 책의 후반부를 읽다보면 `Feed 포워드를 거쳐 출력값 y를 계산한 후, 정답 T와 비교하여 크로스 엔트로피와 같은 손실함수 값을 계산하고, 손실함수 값이 최소가 될때까지 오차 역전파를 이용해 W와 b를 최적화한다는 DNN의 전체 구조`가 머리속에 뚜렷한 개념으로 자리잡게 된다. -![가중치W 손실함수 미분](https://theorydb.github.io/assets/img/review/2020-03-13-review-book-ml-python-slice-6.jpg) - -그 외 CNN, RNN 역시 모델의 구조적 차이부터 상세한 구현과정 및 텐서플로의 기초를 알기쉽게 전달하고 있으나 리뷰 목적상 이 즈음에서 마칠까 한다. - - -## 누가 읽어야 하는가? ---- -- AI, 머신러닝, 딥러닝 및 데이터 분석에 관심이 있는 모든 분. -- 오차역전파, 경사하강법, 수치미분 등 딥러닝의 핵심개념의 이해에 실패하신 분. -- DNN, CNN, RNN의 핵심 구조를 파악하고 싶은 분. -- 그 외 딥러닝 관련 수학적 기초를 튼튼히 하고 싶은 분. - -## 책의 구성 및 요약 ---- -이 책은 크게 두부분으로 구성되며, 각 파트에서 다루는 내용을 아래와 같이 요약해 보았다. - -- __1. 머신러닝, 딥러닝의 기초 (1 ~ 10장)__ - - Python 및 Numpy의 핵심, 미분 - - 선형회귀와 분류, XOR문제 - - 딥러닝과 MNIST - - 텐서플로의 기초 - -- __2. 딥러닝 고급 (11 ~ 12장)__ - - CNN, RNN - - -> \<비제이퍼블릭 출판사\> -> -> 비제이퍼블릭 출판사 책을 읽으며 지금까지 느꼈던 것은 IT 무림 맹주급 은둔고수의 비기가 담긴 책이 은근 많다는 것입니다. 쌓아온 지식과 경험을 바탕으로 장인 냄새가 나는 책을 자주 출간합니다. 열심히 공부해도 제자리 걸음인 분들은 비제이퍼블릭 출판사의 책 목록에서 해결책을 찾아보시기 바랍니다. - -[비제이퍼블릭 바로가기](http://www.bjpublic.co.kr/) diff --git a/_posts/2020-03-19-review-book-startup-science.markdown b/_posts/2020-03-19-review-book-startup-science.markdown deleted file mode 100644 index f93f77daf..000000000 --- a/_posts/2020-03-19-review-book-startup-science.markdown +++ /dev/null @@ -1,144 +0,0 @@ ---- -layout: post -title: "[리뷰] 창업의 과학" -subtitle: "Startup Science" -categories: review -tags: review book startup science -comments: true -header-img: img/review/2020-03-19-review-book-startup-science-1.jpg ---- - -## 개요 -> 본 리뷰는 `한빛미디어` 출판사 `"창업의 과학(다도코로 마사유키 저, 이자영 역)"`을 읽고 얻은 지식을 정리한 글입니다. - -- 목차 -- [시간이 많지 않은 독자분들을 위하여 (요약소개)](#시간이-많지-않은-독자분들을-위하여-요약소개) -- [누구나 한번쯤 꾸는 꿈, 창업!](#누구나-한번쯤-꾸는-꿈-창업) -- [과거 실패했던 저자 자신을 위한 책](#과거-실패했던-저자-자신을-위한-책) -- [성공을 위한 체계적인 검증절차(PMF-CPF-PSF-유닛이코노믹스)](#성공을-위한-체계적인-검증절차pmf-cpf-psf-유닛이코노믹스) -- [창업에 과학이라는 단어를 사용한 이유](#창업에-과학이라는-단어를-사용한-이유) -- [누가 읽어야 하는가?](#누가-읽어야-하는가) -- [책의 구성 및 요약](#책의-구성-및-요약) - - - -## 시간이 많지 않은 독자분들을 위하여 (요약소개) ---- -한마디로 표현하자면 `세상을 바라보는 안목을 넓혀주는` 책이다. 창업의 성공을 위한 체계적인 검증과 더불어 자신의 인생 목표를 다시금 돌아보게해주는 본 도서의 장점을 아래와 같이 간략히 요약해본다. - -* 본 도서를 읽으며 필자 스스로 꿈꾸던 창업 아이템이 성공할지 검증해보았다. 정말 깊이있게 고민에 고민을 더했음에도 이 책에서 제시하는 검증방법의 절반도 검토하지 못했다는 사실이 충격이었다. 각 요소별 기업들의 흥망 성쇠 원인을 조망하며 무엇이 내 아이템에 다가올 위기인지 집중하여 읽다보니 어느덧 책의 마지막장을 넘기고 있었다. `미래의 나에게 이렇게 집중해 본적이 있었던가. 또 이 책을 읽지않고 무작정 창업에 뛰어들었다면?` 책이 전달하는 집중력과 흥미로움에 빠져 정신없이 끝까지 읽고 난 후 창업을 준비하는 사람이라면 반드시 읽어야하는 바이블이라는 생각을 하게 되었다. - -* “그때 이 책을 만날 수 있었다면, 나와 내가 시작했던 스타트업의 운명이 완전히 달라졌을까?” 스스로의 경험에 비추어 책의 완성도를 검증하는 독백에서 진실성이 느껴졌다. - -* `성공을 위한 체계적인 검증절차(PMF-CPF-PSF-유닛이코노믹스)`를 통해 매단계 창업의 본질인 `적합성`을 철두철미하게 검증한다. - -* 린캔버스, 고객여정지도, 재블린보드, 간반보드 등 직관적인 시각적 도구와 함께 본 도서에서 `과학이라고 자신감 넘치게 표현한` 창업 성공의 법칙을 엿볼 수 있다. - -창업을 진행중인, 실패를 복기중인, 도전을 준비중인 사람이라면 누구나 반드시 읽어야 할 바이블이라고 생각한다. 더불어 우리 모두는 항상 내일을 위해 먹고 살 걱정을 한다. 경제적, 시간적으로 자유롭지 못한 분 그리고 인생의 목표를 다시 돌이켜 보고 싶은 분들께도 일독을 권한다. 첫장부터 흥미롭게 읽기 시작하여 마지막 장을 덮을때 즈음 보다 또렷해진 미래의 자신을 발견하고 건설적인 사색에 잠겨있게 될 것이다. - -보다 자세한 정보가 궁금하시다면 이어지는 챕터를 계속 읽어주시기 바란다. - -* [책소개 - 창업의과학](http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791162242421&orderClick=LAG&Kc=) -* [저자 개인블로그](http://bit.ly/Startup_Science) - - -## 누구나 한번쯤 꾸는 꿈, 창업! ---- -누구나 한번쯤 창업을 꿈꾼다. 아마도 대부분의 사람들이 창업을 꿈꾸게 되는 이유는 현재에 만족하지 못하기 때문일 것이다. 주위 지인들과 이야기를 나누다보면 `직장일이 혹은 같이 일하는 사람이 견디기 힘들 정도로 날 괴롭게 만드는데 연봉은 쥐꼬리`인 상황이 창업을 꿈꾸는 단골 메뉴 중 하나이다. - -필자 역시 같은 상황을 피하고자 창업을 꿈꾼적도 있지만 지금은 조금 다르다. 진정하고 싶은 일이 생겼는데 직장때문에 너무 많은 시간을 뺐겨 할 수 없는 상황에 처해버렸고 직장을 그만두자니 처자식이 눈에 선하다. 한술 더 떠 그동안 뭘했는지 이뤄놓은 건 없는 것 같은데 나이만 훌쩍 먹어버렸다. - -이런 저런 다양한 이유로 "다 때려치고 창업 한번 해볼까?"라는 생각은 인생에 한번쯤은 반드시 찾아온다. `중요한 것은 인생에 언제 기회가 올지 모르다는 것, 더 중요한 것은 성공할 수 없다는 결론이 뻔히 나와있음에도 스스로의 감만 믿고 무모하게 사업에 뛰어들어 모든 것을 잃는 것을 피하는 방법이다.` 본 도서는 창업에 과학이라는 잣대를 적용해 위험하고 무모한 사업에 뛰어들지 않도록 이끌어주며 창업에 갈증난 이에게 차근차근 미래를 준비할 수 있는 길을 제시한다. - -본 도서를 읽으며 필자 스스로 꿈꾸던 창업 아이템이 성공할지 검증해보았다. 정말 깊이있게 고민에 고민을 더했음에도 이 책에서 제시하는 검증방법의 절반도 검토하지 못했다는 사실이 충격이었다. 각 요소별 기업들의 흥망 성쇠 원인을 조망하며 무엇이 내 아이템에 다가올 위기인지 집중하여 읽다보니 어느덧 책의 마지막장을 넘기고 있었다. - -`미래의 나에게 이렇게 집중해 본적이 있었던가. 또 이 책을 읽지않고 무작정 창업에 뛰어들었다면?` 책이 전달하는 집중력과 흥미로움에 빠져 정신없이 끝까지 읽고 난 후 창업을 준비하는 사람이라면 반드시 읽어야하는 바이블이라는 생각을 하게 되었다. - - -## 과거 실패했던 저자 자신을 위한 책 ---- -필자는 책을 고를 때 `저자의 경험`을 중요시 한다. 특히 창업과 관련된 책을 고를때는 저자의 창업 경험의 유무, 실패와 성공의 유무를 날카롭게 따진다. 대단히 죄송하지만 창업 상담 혹은 컨설팅 경험만 진행했다던가, 창업 경험없이 이론적으로 연구만 하신 교수님이라던가, 성공한 창업가에 대한 인터뷰 내용을 엮은 책들은 반드시 거른다. - -이미 여러번 당했기 때문이다. 타인의 경험을 전달한 간접 경험의 글을 읽으며 열정이 느껴질리가 없고 그래서 흥미는 떨어지고 창업 이론을 외우려고 책을 보는 것인지 나의 창업을 위해 책을 읽는 것인지 혼동되기 일수이다. 살아있지 않은 지식으로 나의 미래를 망칠 수 있다는 아찔함까지 들기 시작하면 그런 부류의 책은 도저히 손에 잡을 수 없다. - -저자는 서문과 마지막글에서 이 책의 독자로 과거 창업에 실패한 자기 자신을 선택했음을 밝힌다. -> "그때 이 책을 만날 수 있었다면, 나와 내가 시작했던 스타트업의 운명이 완전히 달라졌을까?" - -스스로의 경험에 비추어 `책의 완성도를 검증하는 독백에서 진실성`이 느껴졌다. - -> "필자는 이 책에서 에릭 리스가 제창한 린 스타트업 방법론을 더 실천적으로 발전시킬 수 없는지 실험해보았다. 2 ~ 3년 후에 이책의 독자로 부터 "창업의 과학을 읽고 성공할 수 있었습니다."라는 메시지를 받았는지 여부로 검증할 수 있을 것이다." - -`본인이 쓴 글에 미래를 걸어 검증`하는 것은 그만큼 저자가 본 도서에 얼마만한 열정을 녹였고 자신감을 갖고 있는지를 간접적으로 보여준다. - - -## 성공을 위한 체계적인 검증절차(PMF-CPF-PSF-유닛이코노믹스) ---- -이 책에 관심있는 분이라면 이미 지금은 취업 문턱 한번쯤은 넘은 분이 대다수일 것이다. 취업의 관문을 통과하기 위해 가장 중요한 것이 무엇일까? 필자의 생각에는 `직무적합성` 그 이상도 이하도 아니다. - -과거 신입사원에 지원하는 후배들의 자소서를 자주 첨삭하였다. 볼때마다 자주 심각하게 느꼈던 부분은 `나-(관계)-기업`에서 관계가 언급이 거의 안된다는 점이다. 기업에서 전혀 하지 않는 수상경력과 공모전, 알바 경험을 쭉 늘어놓거나 한술 더떠 자신의 성명학 혹은 혈액형을 서술한 자소서도 있다. 도대체 그런것이 무슨 의미가 있는건지? 기업과 나의 관계가 형성되지 않는 모든 글들은 적어도 자소서에선 쓰레기이다. - -마찬가지로 본 도서에서는 매단계 창업의 본질인 `적합성`을 철두철미하게 검증한다. 창업의 성공여부는 얼핏 거창해보이는 제품의 아이디어, 적용한 기술력 수준, 구성 멤버의 학벌 및 스펙 등이 아님을 분명히 한다. MVP보다 중요한 것이 바로 적합성으로 어떤 적합성을 강조하는지 아래와 같이 간단히 정리해 보았다. - -* `PMF`(Product Market Fit) : 제품/시장 적합성. 당신의 스타트업이 구상하는 아이디어가 인생을 걸만한 진짜 가치가 있는지 철저히 검증해야 한다. -* `CPF`(Customer Problem Fit) : 고객/문제 적합성. 창업가가 가설로 세운 문제에 대해 고객이 얼마나 해결하길 원하는지 직접 대화해보고 검증해야 한다. -* `PSF`(Problem Solution Fit) : 문제/솔루션 적합성. 제작한 솔루션으로 정말 문제를 해결할 수 있는지? 그 제안이 고객에게 의미있는 제안이 될지? - -모든 적합성 검증을 통과하여 스타트업을 했다면 마지막 장에선 `유닛 이코노믹스(1인당 채산성)를 측정하고, LTV(고객 생애 가치)의 최대화, CPA(고객 획득 비용)의 최소화`를 실현하는 등의 사업 확장 준비방법에 대하여 다룬다. - - -## 창업에 과학이라는 단어를 사용한 이유 ---- -과학이란 "보편적 진리나 법칙의 발견을 목적으로 하는 체계적 지식"을 말한다. 즉, 아무데나 쓰기 송구해지는 단어로 특히 어지간한 자신감 없이는 자신이 집필한 책의 제목으로 사용하기 쉽지 않을 것이다. - -위 챕터에서 언급했던 저자의 머리말이나 책의 제목에서도 저자의 대단한 자신감이 느껴진다. 놀라운 것은 본 도서가 `과학이라는 단어를 쓸만할 정도로 스타트업의 성공에 관한 지식을 체계적으로 정리`하여 다루고 있다는 점과 그 체계를 입증할만한 다양한 기업의 흥망성쇠 사례를 풍부하게 다루고 있다는 점이다. 리뷰의 지면 제약상 자세한 설명은 어렵지만 직관적으로 과학이 담겨있음을 느낄 수 있는 본 도서의 몇가지 시각적 도구를 소개하며 리뷰를 마칠까 한다. - -* 린캔버스 - - 초기단계에서 최선으로 판단되는 플랜A 비즈니스 모델을 시각화하기 위한 도구 - - ![린캔버스](https://theorydb.github.io/assets/img/review/2020-03-19-review-book-startup-science-3.jpg) - -* 고객여정지도 - - 가상의 고객 페르소나를 만든 후, 페르소나의 상황 및 행동을 8단계에 걸쳐 만들어간 지도 - - ![고객여정지도](https://theorydb.github.io/assets/img/review/2020-03-19-review-book-startup-science-2.jpg) - -* 재블린보드 - - 고객여정지도로 이제 막 보이기 시작한 문제가설을 더욱 더 깊이 파고드는 도구 - - ![재블린보드](https://theorydb.github.io/assets/img/review/2020-03-19-review-book-startup-science-4.jpg) - -* 간반보드 - - 개인 혹은 조직적인 수준에서 작업을 관리하기 위한 도구로 다양한 단계의 프로세스를 시각적으로 표현 - - ![간반보드](https://theorydb.github.io/assets/img/review/2020-03-19-review-book-startup-science-5.jpg) - -* 고객정착률(코호트 분석) - - 유닉 이코노믹스를 개선하기 위해 코호트 분석을 통해 해지율 추이를 추적하며 줄이기 위한 개선 시도 - - ![코호트](https://theorydb.github.io/assets/img/review/2020-03-19-review-book-startup-science-6.jpg) - -위 시각화 도구는 본 도서에서 제시한 과학적 방법을 시각화한 도구의 일부일 뿐으로 더 많은 정보는 본 도서 혹은 저자의 개인블로그를 참고하시기 바란다. -* [책소개 - 창업의과학](http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791162242421&orderClick=LAG&Kc=) -* [저자 개인블로그](http://bit.ly/Startup_Science) - - -## 누가 읽어야 하는가? ---- -- 창업을 진행중인 혹은 꿈꾸는 혹은 실패를 복기중인 모든 분. -- 미래를 위해 창업의 안목을 키우고 싶은 대학생. -- 그 외 창업가의 안목으로 세상을 바라보고 싶은 분. - -## 책의 구성 및 요약 ---- -이 책은 크게 두부분으로 구성되며, 각 파트에서 다루는 내용을 아래와 같이 요약해 보았다. - -- __1. 창업이 성공하기 까지 (1 ~ 4장)__ - - 1장. 아이디어 검증하기 - - 2장. 문제 검증하기 - - 3장. 솔루션 검증하기 - - 4장. 제품 검증하기 - -- __2. 사업 확장을 위하여 (5장)__ - - 5장. 사업 확장 준비하기 - - -> \<한빛미디어 출판사\> -> -> 믿고보는 "한빛미디어 출판사". IT분야에서 독보적인 양질의 도서를 출판하는 회사입니다. "나는 프로그래머다" 팟캐스트 후원, DevGround2019 행사, 리뷰어 모집, 다양한 학습 지원 등 다양한 분야에서 사회에 공헌하는 개발자와 공생하는 업체입니다. IT분야에 관심 있으시다면 한빛미디어의 책으로 후회없는 출발을 하실 수 있습니다. - -[한빛미디어 바로가기](http://www.hanbit.co.kr/) \ No newline at end of file diff --git a/_posts/2020-03-28-review-book-everyones-dl.markdown b/_posts/2020-03-28-review-book-everyones-dl.markdown deleted file mode 100644 index 48c711f15..000000000 --- a/_posts/2020-03-28-review-book-everyones-dl.markdown +++ /dev/null @@ -1,131 +0,0 @@ ---- -layout: post -title: "[리뷰] 모두의 딥러닝(개정2판)" -subtitle: "Everyone's deep learning" -categories: review -tags: review book dl deep learning CNN RNN auto encoder GAN NLP -comments: true -header-img: img/review/2020-03-28-review-book-everyones-dl-1.jpg ---- - -## 개요 -> 본 리뷰는 `길벗` 출판사 `"모두의 딥러닝(조태호 저)"`을 읽고 얻은 지식을 정리한 글입니다. - -- 목차 -- [시간이 많지 않은 독자분들을 위하여 (요약소개)](#시간이-많지-않은-독자분들을-위하여-요약소개) -- [개정판에서 달라진 점](#개정판에서-달라진-점) -- [직관적인 시각 자료를 활용한 핵심만 간추린 설명!](#직관적인-시각-자료를-활용한-핵심만-간추린-설명) -- [표지가 가벼워보인다고 내용까지 가벼운 것은 아니다.](#표지가-가벼워보인다고-내용까지-가벼운-것은-아니다) -- [누가 읽어야 하는가?](#누가-읽어야-하는가) -- [책의 구성 및 요약](#책의-구성-및-요약) - - - -## 시간이 많지 않은 독자분들을 위하여 (요약소개) ---- -본 도서를 한마디로 표현하자면 `최고의 가성비를 자랑하는 딥러닝 교재`이다. 장점을 아래와 같이 간략히 요약해보았다. - -* 본 개정판에서 달라진 점 - - 딥러닝 기법 중 `NLP, GAN, 오토인코더, 전이학습, 딥러닝 기초수학` 등의 내용이 추가되었다. - - 실습환경 또한 `텐서플로 2.0 기반으로 진행하며 Google Colab 및 Pycharm`에서의 실습 방법이 안내된다. - -* `직관적인 시각 자료를 활용한 핵심만 간추린 설명`이 최고의 백미이다. 아래 챕터에 시그모이드 함수, 로지스틱 회귀, XOR 문제를 예로 들었다. - -* 표지가 가벼워보인다고 내용까지 가벼운 것은 아니다. 딥러닝을 학습하고 싶은 분이라면 이 책을 가장 먼저 읽으시길 강력히 추천한다. - -본 도서는 `VGG16 모델을 전이학습에 적용하여 MRI 뇌 사진으로 치매 환자를 예측하는 모델을 필두고 23가지의 다양한 예제`로 이루어져있다. 예제를 실습하며 초보자가 가장 어려워하거나 실수할 만한 내용들을 꼼꼼하게 풀어준다. 단언컨데 가장 적은 시간에 가장 많은 효과를 얻으실 수 있다. - -보다 자세한 정보가 필요하시다면 이어지는 챕터를 계속 읽어주시기 바란다. - -* [책소개 - 모두의딥러닝(개정2판)](http://www.yes24.com/Product/Goods/86611190?scode=032&OzSrank=1) -* [깃헙 예제소스](https://github.com/gilbutITBook/080228) - - -## 개정판에서 달라진 점 ---- -본 서적은 초판이 발행되자마자 AI분야 베스트셀러로 등극한 유명한 책이다. 때문에 초판의 좋은 기억을 갖고 계신 분들이 많을 것 같아 개정판에서 달라진 내용들을 먼저 소개하고자 한다. - -초판을 읽었을 때 약간 아쉬웠던 점이 보강되었다. 기존에 [다섯째마당] 딥러닝의 활용편이 CNN과 RNN만 소개되어서 약간 빈약하다는 생각이 들었기 때문이다. 하지만 초판이 2017년에 발간되었으므로 당시에는 빈약한 내용이 아니었고 또 필자가 이 책을 늦게 만났던 것도 한 몫했다. - -본 도서의 독특한 구성인 `직관적인 시각적 자료를 이용한 핵심만 간추린 명쾌한 설명이 NLP같은 다른 주제나 GAN이나 전이학습 같은 어려운 주제도 설명해주길 바랬기 때문`이다. 그런데 이번 개정판에 드디어 등장하게 되었다! 추가된 내용을 아래와 같이 간단히 요약해본다. - -* 딥러닝을 이용한 자연어처리(17장) - - "해보지 않으면 해낼 수 없다"과 같은 간단한 문장을 예로들어 `토큰화, BoW, 원-핫 인코딩, 단어임베딩`의 핵심을 다룬다. - - 이를 토대로 짧은 리뷰들을 이용하여 `영화 리뷰가 긍정인지 부정인지` 예측하는 모델을 만든다. -* 세상에 없는 얼굴 GAN, 오토인코더(19장) - - 정말 짧은 지면에 GAN의 거의 모든것을 언급하고 핵심을 잘 전달해준다. - - 실습 예제로는 MNIST에 존재하지 않는 MNIST와 유사한 이미지를 생성하는데 예제 선택이 정말 탁월했다고 생각한다. `MNIST는 매우 쉬운 예제이고 누구나 한번쯤 다뤄봤을만한 예제이기에 GAN의 핵심을 이해하기 순조로웠다.` - - 마찬가지로 오토인코더의 실습도 MNIST로 진행한다. - - 처음부터 방대한 DNN의 여러 주제를 이 도서로 시작할 수 있다면 행운일 것이다. 예를 들어 GAN 모델을 처음 배울 때 이미지의 크기를 축소하는 MaxPooling2D와 반대로 크기를 늘리는 UpSampling2D를 왜 비대칭으로 사용하는지 굉장히 혼동되었는데 이렇듯 `초보자들이 헤매이는 부분을 꼼꼼히 다잡아준다.` -* 전이학습을 통해 딥러닝의 성능 극대화하기(20장) - - 전이학습은 기존의 이미지에서 학습한 정보를 가져와 새로운 모델에 활용하는 기법인데 최근 매우 핫한 기법이다. - - 먼저 `ImageDataGenerator()를 활용하여 이미지 전처리`를 매우 쉽게 처리하는 방법에 대해 알려준다. - - 이어서 MRI 단면 이미지를 활용하여 치매환자인지를 예측하는 모델을 만든다. - - 한단계 더 나아가 `전이학습 기법을 활용해 정확도를 92.6%에서 100%로` 끌어올린다. 전이학습의 모델로 기존에 학습된 VGG16을 활용하며 전이학습을 이렇게 쉽게 가르쳐준다는 것에 적잖이 놀랐다. - - ![전이학습](https://theorydb.github.io/assets/img/review/2020-03-28-review-book-everyones-dl-6.jpg) -* 기초수학과 텐서플로 2.0 - - `수포자를 위한 정말 쉬운 기초 수학 챕터가 추가`되었다.(일차함수부터 편미분, 지수/로그 함수에서 시그모이드 함수까지 다룬다.) - - 본 도서의 실습 예제는 최근에 출시된 `텐서플로 2.0 기반`으로 실습을 진행할 수 있어 더욱 유익하다. - - 더불어 `Google Colab 및 Pycharm에서 실습`하는 방법도 부록에 안내되어있어 독자층을 넓혔다. - - 한가지 아쉬운 점은 초판에서 확률적 경사하강법부터 Adam 알고리즘에 이르기까지 경사하강법의 변천사를 정리한 부록 부분이 빠졌다는 점인데 아마도 학술적인 내용에 가깝다보니 보다 쉬운 구성을 위해 사라진 듯 하다. - -## 직관적인 시각 자료를 활용한 핵심만 간추린 설명! ---- -이 책의 장점은 한두가지가 아니지만 그 중에서도 최고를 꼽으라면 직관적인 시각적 자료를 이용한 핵심만 간추린 명쾌한 설명을 꼽고 싶다. 시그모이드 함수로 예를 들어보겠다. - -딥러닝을 학습하는 초보자들의 첫번째 관문은 아마 시그모이드 함수가 아닐까 싶다. 선형회귀에서 다루는 1차 방정식은 수식 자체도 너무 간단하고 도식화 했을때도 좌표상의 직선만 보이기 때문에 수식 좀 등장해도 절대 쫄지 않는다. - -그 뒤로 손실함수를 통한 최적화에 2차함수 등이 등장하긴 하지만 딥러닝을 포기하고 싶을 정도는 아니다. 하지만 분류를 위한 로지스틱 회귀가 등장하면 얘기가 조금 달라진다. 일단 수식부터 자연상수 e가 등장하고 ~~우리는 고등학교 시절의 수학이 잘 기억은 나지 않지만 자연상수 e가 등장하면서 헬게이트가 얼렸다는 사실은 대부분 기억한다.~~ 한술 더 떠 e의 지수에 선형회귀 때 살폈던 1차 방정식이 턱하니 올라가있다. ~~형이 왜 거기서 나와?~~ 슬슬 괴로워진다. - -1차 방정식이 지수로 가면 무슨 결과가 나오고 왜 저렇게 써야하며 도대체 저 함수는 어떻게 생겼을까? 많은 의문과 딥러닝 포기 경보가 울릴 때 즈음 앞서 언급한 직관적인 시각 자료가 딥러닝 생명연장의 꿈에 한발 다가가게 해준다. - -길게 설명할 것도 없이 아래 그림을 보자. -![시그모이드 함수1](https://theorydb.github.io/assets/img/review/2020-03-28-review-book-everyones-dl-2.jpg) -![시그모이드 함수2](https://theorydb.github.io/assets/img/review/2020-03-28-review-book-everyones-dl-3.jpg) - -그림을 보면 e의 지수로 있던 1차 방정식의 의미를 쉽게 직관적으로 파악할 수 있다. `a의 기울기가 변하면 그래프가 어떤 모양을 가지는지, 절편 b가 변하면 그래프가 어떻게 변하는지` 아주 쉽게 이해할 수 있다. - -하나 더 예를 들어 보자. `로지스틱 회귀를 이해하기 쉽게 로그함수를 대칭, 이동 등으로 변형한 두 함수를 시각적으로 확인`할 수 있다. 이로 인해 도출되는 공식뿐만 아니라 오즈비 등 로지스틱 회귀의 특성을 쉽게 파악할 수 있다. -![로지스틱 회귀](https://theorydb.github.io/assets/img/review/2020-03-28-review-book-everyones-dl-4.jpg) - -선형 방정식이 해결하지 못하는 `XOR 문제를 딥러닝이 해결하는 방식을 시각적으로 표현`한 것 또한 예술이다. -![XOR문제](https://theorydb.github.io/assets/img/review/2020-03-28-review-book-everyones-dl-5.jpg) - -이 예들은 지극히 일례일 뿐으로 책의 모든 페이지에 걸쳐 직관적인 시각자료와 핵심만 다루는 설명이 가득차 있어 인상적이었다. - -## 표지가 가벼워보인다고 내용까지 가벼운 것은 아니다. ---- -사실 우리에게는 AI, 딥러닝하면 왠지 좀 어려워야 하고 근엄하고 엄숙한 느낌(?)이 나야 한다는 선입견이 있다. 필자도 마찬가지였다. 때문에 사실 이 모두의 딥러닝이란 책을 꽤 늦게 집어들게 되었다. 왜냐면 표지가 너무 아동틱(?)했기 때문이다. -이제 제법 머신러닝과 딥러닝 공부 좀 했는데 왠지 이 책을 읽으면 다 알고 있는 것을 답습한다는 느낌이 들어서였다. - -필자가 바둑을 좋아하는데 바둑에서는 하수랑 두면 실력이 줄어든다는 표현을 종종한다. 그런 느낌이었을까? 이상하게 손이 가지 않았다. - -그런데 우연히 와이프도 딥러닝을 학습하고 싶다고 해서 마땅한 교재를 찾던 중에 본 도서를 집어들게 되었다. 왠지 표지만 봐도 우리 아들도 따라할 수 있을것 같은 느낌! 서점에서 책을 대충 훑어보니 일단 그림이 많았고 더불어 아이들 참고서에서 볼 수 있을듯한 구성에 이거구나!하고 집어들게 되었다. 그런데 왠일인가? 생각보다 깊은 내용에 범위는 굉장히 방대했고 기초부터 탄탄히 잡아주는 구성에 감탄했다. - -더욱 자세히 살펴보니 인디애나대학교 의과대학 현직 교수님이 직접 저술하신 책이었고 내용도 딥러닝의 다양한 기술과 연구 성과의 핵심을 모두 담고 있었다. 지금까지 AI관련 된 책은 족히 30권은 넘게 읽은것 같은데 이렇게 쉬운 구성은 보질 못했다. - -더욱이 이 다양한 분야의 예제를 이렇게 빨리 구현할 수 있고 큰 줄기를 빨리 파악할 수 있었더라면 AI분야 중 어떤 기술에 조금 더 집중했을지 파악하는데 큰 도움이 되었을 것이다. 먼저 읽었던 30여권의 책의 좋은 네비게이션이 되어 학습 시너지가 크게 올라갔을 것 또한 두말할 나위 없다. 처음부터 이 책으로 시작하지 못한 것에 배가 많이 아팠던.. 내게는 조금 묘한책이다. - -이것으로 책에 대한 소개를 마칠까 한다. 딥러닝에 관심이 있는 분이라면 누구든 좋다. 책을 읽어나가는 족족 `딥러닝 학습의 최고 가성비`를 느끼실 수 있을것이다. - -## 누가 읽어야 하는가? ---- -- AI에 흥미가 생긴 학생 및 모든 분. -- 딥러닝을 처음으로 접하는 모든 분. -- 그 외 딥러닝 난이도의 벽에 막혀 마지막으로 딱 한번 더 도전하고 싶은 분. - -## 책의 구성 및 요약 ---- -이 책은 크게 세부분으로 구성되며, 각 파트에서 다루는 내용을 아래와 같이 요약해 보았다. - -- __1. 신경망과 딥러닝의 개요 (첫째마당 ~ 셋째마당)__ - - 폐암 수술 환자의 생존 예측을 기본으로 한 딥러닝의 개요 살피기 - - 딥러닝을 위한 기초수학 - - 선형회귀, 경사하강법, 로지스틱 회귀, 다층 퍼셉트론, 오차역전파 등 딥러닝의 핵심 개념 - -- __2. 딥러닝 기본기 다지기 (넷째마당)__ - - 모델설계, 데이터 가공, 다중분류, 과적합 등 - -- __3. 딥러닝의 활용 (다섯째마당)__ - - CNN, NLP, RNN, GAN, 오토인코더, 전이학습 등 - - 부록 : 오파역전파 계산법, XOR구현, Google Colab 및 Pycharm 구동법 등 \ No newline at end of file diff --git a/_posts/2020-04-03-review-book-doit-android-10.markdown b/_posts/2020-04-03-review-book-doit-android-10.markdown deleted file mode 100644 index fd441e6c3..000000000 --- a/_posts/2020-04-03-review-book-doit-android-10.markdown +++ /dev/null @@ -1,153 +0,0 @@ ---- -layout: post -title: "[리뷰] Do it! 안드로이드 앱 프로그래밍(개정 7판)" -subtitle: "Do it! Android App Programming" -categories: review -tags: review book android app programming -comments: true -header-img: img/review/2020-04-03-review-book-doit-android-10-1.jpg ---- - -## 개요 -> 본 리뷰는 `이지스퍼블리싱` 출판사 `"Do it! 안드로이드 앱 프로그래밍(정재곤 저)"`을 읽고 얻은 지식을 정리한 글입니다. - -- 목차 -- [시간이 많지 않은 분들을 위하여 (요약소개)](#시간이-많지-않은-분들을-위하여-요약소개) -- [개정 7판에서 달라진 점](#개정-7판에서-달라진-점) -- [변화무쌍한 안드로이드의 폭풍속에서 살아남는 법](#변화무쌍한-안드로이드의-폭풍속에서-살아남는-법) -- [백견이 불여일타! 일단 무조건 App 하나 만들고 시작한다.](#백견이-불여일타-일단-무조건-app-하나-만들고-시작한다) -- [화룡정점. 한 줄 일기장 앱 만들기.](#화룡정점-한-줄-일기장-앱-만들기) -- [그럼에도 약간 아쉬운 점은?](#그럼에도-약간-아쉬운-점은) -- [누가 읽어야 하는가?](#누가-읽어야-하는가) -- [책의 구성 및 요약](#책의-구성-및-요약) - - - -## 시간이 많지 않은 분들을 위하여 (요약소개) ---- -본 도서를 한마디로 표현하자면 `안드로이드 앱 개발의 많은 진입 장벽을 단 한권으로 끝내주는 책`이다. - -* 개정 7판에서 달라진 점 - - 개발환경은 `안드로이드 10` 버전 기반 - - 코틀린을 지원하기 위해 외부 라이브러리가 `androidx`로 통합 변경 - - 리사이클러뷰(RecyclerView) 등 `최신 기술이 잘 반영`되어 개발자의 스킬을 한층 업그레이드 할 수 있는 기회를 제공 - -* 좋았던 점 - - 컨텐츠의 지속적인 업그레이드 : `7판 2쇄` 발행(독자들의 수요가 지속되어 어마어마한 판매량을 기록했다는 의미) - - 개발자가 개발에만 집중할 수 있게끔 마치 형상관리 해주는 느낌 - - 학습 보조 네트워크 : `유튜브 강의, 개정 PDF파일, 저자와 소통이 가능한 테크다운 카페` - - 극단적 실전 위주 구성 : `28p에 바로 첫 번째 앱 만들기` 코너가 등장 - - 최종 프로젝트 : `한 줄 일기장 앱` 만들기 - - 대부분의 시리즈가 그렇듯 `초보자도 비전공자도 따라하기 쉬운 구성`으로 되어있음 - - 학습 능률을 높이기 위한 구성 : 장박사의 조언 코너, 따라하는 과정 곳곳에 가독성을 보장하는 시각화 처리 등 - -* 아쉬운 점 - - 구글 Play Store에 앱 등록하기 파트의 누락 - - 앱 아키텍처 설계자 혹은 고수를 위한 챕터도 포함되었으면 하는 아쉬움 - - 보다 상세화된 목차의 필요성 - -보다 자세한 정보가 필요하시다면 이어지는 챕터를 계속 읽어주시기 바란다. - -* [책소개 - Do it! 안드로이드 앱 프로그래밍(개정7판)](http://www.yes24.com/Product/Goods/87609520?Acode=101) -* [유튜브 강의](https://www.youtube.com/watch?v=nN4xnEcnjE8&list=PLG7te9eYUi7sjJzJR2i5m6wv-X_7K2pVE) -* [테크다운-저자 네이버 카페](https://cafe.naver.com/techtown) -* [이지스퍼블리싱 홈페이지 - 로그인 후 개정 PDF파일, 깃허브 소스 제공](http://www.easyspub.co.kr/) - - -## 개정 7판에서 달라진 점 ---- -25년 전 즈음으로 기억한다. 책이 지금처럼 많지 않았던 시절에 어느책에선가 `좋은책을 고르는 법의 Tip`이 소개된 적이 있었는데 그때 읽었던 몇 구절이 지금까지도 좋은 책을 고르는데 도움이 되고 있다. - -그 Tip들 중 하나가 책의 "판, 쇄"를 보는것인데 현 시점 필자가 읽고있는 의 경우로 예를 들면 `7판 2쇄 발행`이다. 벌써 7번째 전면개정을 했다는 의미이며 나온지 얼마되지 않아 2번째의 인쇄를 거쳤다는 것인데 이는 `독자들의 수요가 지속되어 어마어마한 판매량을 기록했다는 의미이기도 하며, 오랜시간 경쟁에서 살아남아 지속적으로 개정판을 발행할 수 있는 여건을 갖춘 책`이라는 의미이다. - -이 책이 안드로이드 앱 개발 모바일 분야에서 다년 간 베스트셀러로 등극되어온 사실은 대부분의 IT분야 특히, 모바일 앱 개발 종사자들은 잘 알고 있는 사실이다. - -관련 직군의 프로그래머라면 한번쯤은 거쳤을 책이며 2010년 전후로 모바일 서비스의 수요가 급증하면서 비전공자들의 진입장벽을 낮추는데 기여한 책이라고 생각한다. 이미 시중에 판-쇄를 거듭하며 리뷰도 많이 작성된 바 책의 장점은 충분히 알려졌을 것이기에 먼저 개정판에서 달라진 내용을 소개하고자 한다. - -* 개정 7판의 주요 변경사항 - - 본 개정판의 개발환경은 `안드로이드 10` 버전 기반이다. - - 특히, 코틀린을 지원하기 위해 `외부 라이브러리가 androidx로 통합 변경`되었다. - - 다만 본 서적은 코틀린이 아닌 Java를 기본으로 사용한다. - - ![개정7판](https://theorydb.github.io/assets/img/review/2020-04-03-review-book-doit-android-10-4.jpg) -* 개인적으로 느낀 주요 변경사항 - - 개인적으로 이미 예전에 읽었던 개정 4판 1쇄 버전과 비교했을때의 향상된 장점을 요약해보았다. - - 가장 눈에띄는 장점은 역시 `최신기술이 잘 반영`되어 있다는 점이다. 예를 들면 4판까지는 리스트 등의 선택 위젯을 개발할 경우 주로 리스트뷰, 그리드뷰, 스피너 기술을 활용하여 개발하였는데, 이번 개정판에선 `리사이클러뷰(RecyclerView)`를 활용하여 이전 기술들을 교체했다. RecyclerView는 메모리를 효율적으로 사용할 수 있도록 캐시 매커니즘이 구현되어 있으며 스크롤링에 특화된 기술이다. 실제 [안드로이드 공식 개발자 가이드](https://developer.android.com/guide/topics/ui/layout/recyclerview)를 참고해보면 "앱에서 대량의 데이터 세트 또는 자주 변경되는 데이터에 기반한 요소의 스크롤 목록을 표시"하고 싶은 경우 리사이클러뷰를 사용할 것을 권장하고 있다. - - 이처럼 본 도서는 사용자 측면에서 UI로 확인하면 큰 변화가 없는것 같은 부분도 항상 `최신기술을 활용하여 개발자의 스킬이 한층 업그레이드` 될 수 있도록 도와준다. 지속적인 개정판이 나올 수 있는 이유이며 독자로서 상당히 신뢰감이 느껴진다. 이외에도 눈에 띄는 기술의 변화가 많아 다루고 싶지만 리뷰 특성상 이 즈음에서 줄인다. - - -## 변화무쌍한 안드로이드의 폭풍속에서 살아남는 법 ---- -개인적으로 생각하는 본 도서 최고의 장점은 `컨텐츠의 지속적인 업그레이드`이다. 안드로이드는 모바일 특수성에 의해 시장이 자주 변동된다는 특성 때문에 버전 역시 변화가 빠르다. 더불어 구글의 정책 및 지원 등이 변화함에 따라 코틀린과 같은 새로운 개발환경이 등장하기도 하고 모바일 기기를 생산하는 삼성같은 업체의 변수도 있다. - -현재는 안드로이드 개발을 업(業)으로 삼고 있진 않지만 취미로 간간히 접할때마다 변화하는 속도를 따라가기 어렵다고 느낀다. 모바일 앱 개발이 본인도 직접 활용할 수 있고 마켓에 바로 올려 시장의 반응도 볼 수 있기 때문에 다른 프로그래밍에 비해 흥미로운 요소가 많다는 점이 장점이라면 Trade-off 측면에서 그에 못지 않은 단점도 있다고 생각하는데 그 부분이 바로 `변화의 빈도`가 아닐까 싶다. (이 포스팅을 쓰는 현재 벌써 최근 안드로이드 11 버전의 개발자 프리뷰가 등장했다.) - -본 도서는 개정 7판이 등장하기까지 저자, 출판사 모두 주기적으로 안드로이드의 변화에 대응할 수 있도록 책을 업그레이드 해준다. `개발자가 개발에만 집중할 수 있게끔 마치 형상관리 해주는 느낌`이 들며, 책으로도 안드로이드의 변화를 쫓아가지 못할 경우를 대비해 `유튜브 강의, 개정 PDF파일, 저자와 소통이 가능한 테크다운 카페` 등 다양한 학습 서비스도 제공된다. 아래에 학습에 도움이 되는 URL 경로를 정리해보았다. - -* [유튜브 강의](https://www.youtube.com/watch?v=nN4xnEcnjE8&list=PLG7te9eYUi7sjJzJR2i5m6wv-X_7K2pVE) -* [테크다운-저자 네이버 카페](https://cafe.naver.com/techtown) -* [이지스퍼블리싱 홈페이지 - 로그인 후 개정 PDF파일, 깃허브 소스 제공](http://www.easyspub.co.kr/) - - -## 백견이 불여일타! 일단 무조건 App 하나 만들고 시작한다. ---- -분야마다 양질의 서적을 가르는 기준은 다양하겠지만 적어도 IT 분야에 있어서 만큼은 백견이 불여일타가 최고의 기준이라고 생각한다. 아무것도 모르는 채로 출발한다는 가정하에 `직접 만들어보고 눈에 보이게 해주고 사용도 해봐야 흥미도 생기고 실체도 느낄 수 있고 그래야 다시 책의 원문으로 돌아왔을때 학습의 능률을 높여줄 수 있다`고 생각하기 때문이다. - -본 도서 역시 그런 극단적 실전 위주의 구성이 마음에 들었다. 안드로이드의 개요를 대충 설명하고 개발환경을 구성하자마자 `28p에 바로 첫 번째 앱 만들기 코너가 등장`한다. 참고로 이 책의 `총 페이지수가 848p`임을 감안한다면 다른 책들로 비유할 경우 책 표지 넘기자마자 알려준 것도 없는데 App부터 만들어야 하는 느낌과 유사할 것이다. - -아니, 방법도 안 알려주고 목적지에 도착하라니? 그러면 안 좋은책 아닌가? 라고 생각하실 수도 있겠지만, 사실 처음으로 도전하는 앱은 아래 그림과 같이 버튼 3개정도 붙어있는 조촐한 앱이다. -![첫번째앱만들기](https://theorydb.github.io/assets/img/review/2020-04-03-review-book-doit-android-10-5.jpg) - -책에도 `타이밍`이라는 것이 중요하다고 생각하는데 2010년 즈음 안드로이드 시뮬레이터를 처음 켜고 두근거렸던 생각이 든다. 직접 핸드폰 다루듯 시뮬레이터 위에 앱을 터치해보면 학습 능률이 수직상승하게 된다. 초보자, 비전공자도 28p부터 필자가 느꼈던 감정을 느낄 것이기에 848p 책의 대항해를 출발하기 전 흥미로 의지를 굳게 다질 수 있지 않을까 생각한다. - -## 화룡정점. 한 줄 일기장 앱 만들기. ---- -사람마다 학습 방법은 다르겠지만 필자는 독자분들이 70페이지 분량의 첫째마당을 독파하신 후 먼저 셋째마당으로 건너뛰어 본인의 앱을 먼저 만들어보시길 권유드리고 싶다. - -특히 이미 안드로이드 개발 경험이 있는 독자이거나 뚜렷히 어떤 앱을 만들지 목표가 있는 스타트업 개발자라면 더욱 그렇다. 당장 만들고 싶은 앱이 없다면 만들고 싶은 앱을 떠올린 후 `첫째마당 -> 셋째마당 -> 둘째마당`의 순서로 읽길 권유드리고 싶은데 셋째 마당은 실전에서 필요한 대부분의 기술이 집약되어있으며 원하는 프로젝트의 숲을 먼저 경험할 수 있는 기회를 가질 수 있기 때문이다. - -그렇게 본인의 학습 위치의 좌표를 명확히 설정한 후 둘째마당의 다양한 기술을 익힌다면 기억도 오래 지속되고 특히 두번째, 세번째 앱을 만들때마다 필요한 레퍼런스를 빨리 찾을 수 있는 `일종의 메타지식`을 얻을 수 있기 때문이다. -![최종프로젝트](https://theorydb.github.io/assets/img/review/2020-04-03-review-book-doit-android-10-2.jpg) - -둘째마당의 구성은 안드로이드 앱 개발에 필요한 다양한 기술들로 이루어져 있다. 예를 들어 13장의 멀티미디어 다루기의 경우 카메라, 동영상, 오디오를 처리할 수 있는 기술에 대해 다루는데 지금 당장 만들고자 하는 앱에 동영상 재생기능이 필요없다면 자칫 집중력이 떨어질 수 있기 때문이다. - -당장의 필요에 의한 학습과 개발이 집중력을 높여주는 것은 당연하다. 앞서 설명한바와 같이 848p의 분량은 결코 쉬운 분량이 아니므로 시작도 하기 전에 지치는 것은 바람직하지 않다고 생각한다. - -## 그럼에도 약간 아쉬운 점은? ---- -충분히 많은 장점과 높은 완성도에도 불구하고 개인적으로 이번 개정7판에 약간의 아쉬운 점을 정리해보았다. -* 구글 `Play Store에 앱 등록하기` 파트의 누락 - - 구글의 정책에 민감한 플레이 스토어에 앱을 등록하는 과정은 매우 쉬운편이나 가끔 1%의 까다로움이 존재한다. - - 최근 페이스북 페이지에서 한 개발자가 영구 계정 정지를 당한 사례도 있었는데 원인을 알아봐도 구글 특유의 정책에 위반되었다는 답변만 돌아와 개발자의 마음을 아프게 한 사연이었다. 어쩌면 이 부분이 누락된 이유가 초보자가 호기롭게 앱을 먼저 등록하고자 시도하다가 위와 같은 안좋은 사례를 당할 수 있어서 이번 개정판에서 제외된것이 아닐까 하는 추측도 든다. - - 하지만 그런 위험성을 충분히 알려주고 본 챕터를 포함시키는 편이 관련 경험이 없는 초보자들에게는 큰 힘이 될 듯 싶어서 아쉬운 부분으로 남긴다. -* 앱 `아키텍처 설계자 혹은 고수를 위한` 챕터도 포함되었으면 하는 아쉬움 - - MVPP, RxAndroid와 같은 아키텍처 부분이나 Jetpack과 같은 실전에서 활용하기 좋은 기법이나 팁도 다루어 준다면 다음 단계의 심화과정을 준비하는 분들께 많은 도움이 될 수 있을 듯 하다. - - 마찬가지로 이전 판에서 다뤄졌던 NFC 근거리 통신 SQLite의 상세한 활용법 같은 부분이 누락된 것도 아쉽다. - - 물론 이미 포화상태인 지면의 제약을 감안할 때 내용을 추가한다는 것은 어려운 일일 것이기에 이건 단점이라기 보다는 개인적인 바램이다. 때문에 이제 충분히 유명해진 본 서적도 초급편, 중급편, 고급편 등으로 레벨을 차등화하면 어떨까 싶은 바램이 있다. -* 보다 `상세화된 목차`의 필요성 - - 본 책의 지면이 상당한 관계로 보다 목차가 상세화되어 메타 지식을 구조화할 수 있으면 더욱 학습효과에 도움이 되지 않을까 싶다. 예전에 매우 상세한 목차덕에 둘째 마당에서 필요로 하는 기술을 바로바로 찾아갈 수 있었던 장점이 있었는데 이번 판은 그런 부분이 좀 더 어려워보여 약간의 아쉬움이 남는다. - -그럼에도 본 도서는 장점 투성이다. 사실 열거한 아쉬움들도 일종의 자기 자신과의 싸움처럼 초반부터 7판까지 이어져 온 다른 버전의 개정판들과 비교했을때 아쉬운 부분을 설명한 정도이다. - -이것으로 책에 대한 소개를 마칠까 한다. 안드로이드 앱 개발에 관심이 있는 분이라면 누구라도 본 도서를 추천드리고 싶다. 안드로이드에 관심이 많은데 한번도 관련 책을 보지 못한 분들은 반드시 이 책으로 시작하시기 바란다. `책 한권으로 많은 초반 진입장벽을 뛰어넘을 수` 있을테니 말이다. - -## 누가 읽어야 하는가? ---- -- 안드로이드 앱 개발에 관심있는 모든 분. -- 과거 안드로이드 앱 개발 경험이 있으나 최신 기술을 접하지 못한 분. -- 그 외 초보자 혹은 비전공자로 난이도 진입장벽에 막혀 앱 개발을 포기했던 분. - -## 책의 구성 및 요약 ---- -이 책은 크게 세부분으로 구성되며, 각 파트에서 다루는 내용을 아래와 같이 요약해 보았다. - -- __1. 안드로이드 개요 (첫째마당)__ - - 안드로이드의 개요 및 개발환경 구성 - - 첫번째 앱 만들기 및 실제 단말 연결 - -- __2. 안드로이드 완벽 가이드 (둘째마당)__ - - 안드로이드 스튜디오와 친숙해지기, 레이아웃 익히기, 기본 위젯 사용, 화면 간 전환 등 - - 프래그먼트, 서비스와 수신자, 선택 위젯, 애니메이션 등 - - 스레드와 핸들러, 서버와의 통신, 데이터베이스, 멀티미디어, GPS, Push 등 - -- __3. 실전 앱 만들기 (셋째마당)__ - - 한 줄 일기장 앱 만들기 \ No newline at end of file diff --git a/_posts/2020-04-04-review-book-being-a-good-executive.markdown b/_posts/2020-04-04-review-book-being-a-good-executive.markdown deleted file mode 100644 index deb616847..000000000 --- a/_posts/2020-04-04-review-book-being-a-good-executive.markdown +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: post -title: "[리뷰] 임원이 된다는 것" -subtitle: "Being a good executive" -categories: review -tags: review book good executive 임원 -comments: true -header-img: img/review/2020-04-04-review-book-being-a-good-executive-1.jpg ---- - -## 개요 -> 본 리뷰는 `페이퍼로드` 출판사 `"임원이 된다는 것(김혜영 저)"`을 읽고 얻은 지식을 정리한 글입니다. - -- 목차 -- [프롤로그가 던지는 범상치 않은 화두](#프롤로그가-던지는-범상치-않은-화두) -- [“난 임원과는 거리가 먼데…” 과연 그럴까?](#난-임원과는-거리가-먼데-과연-그럴까) -- [우리는 임원을 모른다.](#우리는-임원을-모른다) -- [임원의 자격 그리고 좋은 임원이 된다는 것](#임원의-자격-그리고-좋은-임원이-된다는-것) - - -## 프롤로그가 던지는 범상치 않은 화두 ---- -보통 프롤로그를 통해 앞으로 펼쳐질 내용에 대한 작가의 생각과 의도를 엿볼 수 있고 이어질 내용에 대한 흥미가 유발되곤 한다. 본 게임이 시작되기 전의 서곡(序曲)이기 때문에 흥미는 있을지언정 깊은 생각에 잠기거나 많은 시간을 필요로하지는 않는데 이 책은 조금 달랐다. - -본 도서의 저자는 인재 개발을 담당하는 교육서비스업의 종사자로 추정이 된다. `어느날 예기치 않게 대기업 임원 과정을 담당`하게 되는데 직장인 대다수가 그렇듯 임원 혹은 고위직 신분의 어느 간부와 가까워지는 것은 별로 원하는 일이 아니다. 저자는 당시의 상황을 위기이자 기회로 받아들이며 굵직한 두마디로 표현한다. -> "인생의 전환점은 예기치 않은 순간에 불쑥 찾아온다." - -> "행운은 불운의 탈을 쓰고 온다." - -그런데 이런 상황이 과연 저자에게만 다가오는 순간일까? 직장 생활을 하다보면 한치 앞의 미래도 모르는 자신의 처지에 대해 한탄할 때가 많아진다. - -당장 내일 저자가 겪었던 경험과 유사한 일이 벌어진다면? 중요한 것은 그 일이 `그냥 스트레스 유발 원인으로 끝날 것인지, 아니면 불운의 탈을 쓰고 찾아오는 행운일지` 받아들이는 자세에 있다. 실제로 후자처럼 판단하는 경우는 흔치 않아 돌이켜 보면 찾아온 기회를 여러번 걷어찬 기억이 있다. - -그렇다면 이 책이 담고있는 최종 결론은 무엇일까? 이 역시 프롤로그에 담겨있다. -> "임원이 됐다는 것은 이미 알고 있는 `기본`을 실천했다는 방증이다." - -임원이 되기 위해서, 그리고 좋은 임원이 되기 위해서 기본에 충실했다는 다소 식상할 수 있는 결론인데 불혹의 나이에서는 이 말이 절실하게 다가왔다. - -학창시절 이 말의 의미는 그저그런 뻔한 상식이었지만, 지금의 나에게는 실천하기 어려운 무서운 말이다. 기본을 실천하는 구체적인 방법은 2~5장에 걸쳐 이어진다. - - -## "난 임원과는 거리가 먼데..." 과연 그럴까? ---- -처음에 본 도서를 읽고 싶었던 이유는 임원이 생각하는 열길 물속을 조금이라도 들여다볼 수 있지 않을까 하는 호기심에서였다. 혹은 임원이라는 높은(?)분들의 좋은 시각과 습관을 얻어가고자 함에 있었다. 하지만 내 스스로 임원이기에 혹은 임원이 되기 위해 이 책을 짚어든 것은 아니다. - -그런데 책을 읽어나가는 도중 이런 생각이 들었다. -> "과연 나는 임원과는 `거리`가 먼 것일까?" - -읽다보니 생각보다 임원은 가까운 곳에 있었다. 입사 후 기본에 충실한 사람으로 성실히 살아간다면 위 챕터에서 언급한 바와 같이 불운의 탈을 쓴 행운이 다가와 임원의 기회가 올 수도 있겠다는 생각도 들었다. 이 책을 읽는 독자의 나이가 어리다면 그 확률을 높일 수도 있을 것이다. - -또 사람들은 생각한다. 직장의 위기가 있을 때마다, 직장을 그만두고 싶을 때마다 그리고 현재 무직일 때도 "이제 뭐 먹고 살지?"를 늘 가슴속에 물어보며 살아가게 된다. - -그 결과 크든 작든간에 자기 사업을 시작할 수도 있고 그럼 한순간에 일개 직장인에서 임원 혹은 오너가 된다. 임원이 된다면 이 책을 읽으며 한번 해봤던 고민들이 큰 약이 될 것이고, 오너가 된다면 미래에 채용하게 될 임원들의 생각을 읽을 기회가 된다. - -평생 임원될 일 없다고 못 박았다고 가정해도 내 위의 팀장은 임원의 눈치를 본다. 혹은 내가 팀장이어도 그 위의 상사가 임원의 눈치를 본다. 한발 물러서 정말 관련이 없다고 할지라도 배울 것은 있다. -> "좋은 것만 보고 배우기에도 모자란 시간이다." - -임원에 대해 알면 알수록 직장생활에 제법 큰 영향을 미치게 된다. 그런 점에서 `현재 직장에서의 본인의 모습을 돌이켜보고, 직장 내 구성원간의 관계를 되짚고, 미래 행동 전략을 위한 생각을 정리하고, 임원이 되기 위한 전략을 세워보거나 혹은 임원으로서 아랫 사람의 생각을 읽고 더 나은 임원이 되기 위한` 고민을 함께할 수 있는 동반자로 본 도서를 추천하고 싶다. - -## 우리는 임원을 모른다. ---- -1장은 임원이 아닌 사람들 즉, `일반 직장인들에게 특히 도움이 되는 파트`이다. 직장인의 시각에서 임원들의 행동을 엿보고 그들의 생각과 힘을 살펴보는 시간이다. - -평소 직장생활에서 도저히 왜 일이 벌어졌는지 복기가 되지 않는다면 이 파트에서 해답을 찾는데 도움을 줄 것이다. 필자 역시 이해 되지 않던 사내 정치(?)관계의 한 사례를 본 도서를 읽으며 유추해 낼 수 있었다. - -회사의 0.6%만 오를 수 있다는 임원의 특성을 아래와 같이 요약해본다. -* 모든 임원에게는 상황을 종료시킬수 있는 한 방, 자신만의 비장의 무기가 있다. -* 직장 내 특정 직원에 대한 평가를 한 문장으로 적을 수 있다면 그 사람은 포지셔닝에 성공한 사람이다. -* 임원이 되기 위한 `공식` = 80%의 변수(상황, 환경, 운) + 20%의 상수(개인의 역량=인지역량+실행역량+관계역량) -* 임원의 5가지 업무 스타일 : 카리스마형, 사고형, 의심형, 추종형, 통제형 -* 임원이 가진 6가지 증후군 : 카멜레온, 탑독, 슈퍼맨, 시시포스, 워커홀릭, 전문용어 증후군 -* 임원이 스트레스를 적게 받는 이유 : 통제력. 업무를 이리저리 통제할 수 있는 권한이 크다. -* 임원은 자기효능감이 높다. : 특정 임무를 완수할 수 있다는 스스로에 대한 믿음 -* 학증편향 : 보고싶은 것만 본다. 수십년간 지속한 자신의 가설 검증이 맞았기 때문. -* 암묵지의 힘 : "우리"만의 이야기를 할 수 있는 능력. 외부 전문가에게는 없고 임원에게만 있는 암묵지의 힘이 있다. - -## 임원의 자격 그리고 좋은 임원이 된다는 것 ---- -2 ~ 5장에서는 임원의 자격과 좋은 임원이 되기 위한 방법을 알아본다. 이 파트는 `임원이 되기 위한 혹은 현재 임원들에게 도움이 되는 파트`이다. - -임원들이 `일, 관계, 삶`을 관리하는 방법에 대해 자세히 살펴보고 좋은 임원이 되기 위한 방법을 알아본다. 물론 임원이 아닌 사람들에게도 임원들이 가지는 시각과 사고방식을 엿봄으로써 직접적으로 직장 생활에 도움이 되거나 간접적으로 숨겨진 인생의 지혜를 배울 수 있는 장이기도하다. - -개인적으로 인상적이었던 내용 몇가지를 요약해 본다. - -* 합리적인 의사결정을 위해 경계해야 할 5가지 착각 - - 잘못된(거짓) 합의 효과 : 자신의 오랜 경험과 감에 대한 근자감에서 비롯된 오해 ("길 막고 지나가는 사람 붙잡아서 물어봐. 다 그렇게 대답하지") - - 확증편향 : 보고싶은 것만 본다. - - 자기 고양적 편향 : 피라미드 상층부일수록 과거의 덫에 걸려 우월감을 과시("내가 저 사람보다는 낫지 않나?") - - 비현실적 낙관주의 - - 통제감의 착각 -* `리더 승인 요소`(결재를 승인받는 방법) - - 숫자 : 전년 대비 10%포인트 증가, 동종업계 M/S 대비 3% 등 - - 증거 : "S사, G사에서 어떻게 하는지 알아봐" - - 세련된 아부 : 능력있는 리더가 있어서 일에 도움이 됐다는 메시지 - - 심리 : 심사관의 가석방 승인율은 배부른 상태에서 2배이상 높다. 즉, 누구나 신체의 영향을 받는다. - - 5분 보고(書目) : 30초 안에 "오 그래? 더 자세히 말해줘"가 돌아와야 합격 -* 제너럴 vs 스페셜 : 제너럴에서 2~3개 분야에서 25%안에 드는 사람이 스페셜보다 임원될 확률이 높다. -* 옳은 판단을 위한 조건 : 망원경 시야, 의외의 선택지를 보는 촉(`케냐 학교의 출석률 향상 방법`은 장학금 등이 아닌 기생충 구제에 있었다.) -* `CDO`(Chief Destruction Officer, 최고파괴자) : 혁신은 개선하는 것이 아니라 파괴다. - - 당연하게 여겼던 집단의 루틴 : 출근시간을 안 지키면 욕먹는데 퇴근시간은 지키면 왜 욕을 먹는지? - - 고유의 영역 : 융합이 필요 - - 당연하게 해왔던 습관 : To do list => Do not list -* 성공(by 아인슈타인) = 일 + 놀이 + 침묵(묵이식지) -* 행간과 몸짓언어를 읽어라 - - 상사가 중시하는 것 : 돈? 사람? 종교? 워라밸? 가족? 애완견? 언제 희노애락하는지? - - `NLP(신경언어학프로그래밍)`의 상사 머리속을 점유하는 과정 - + 캘리브레이션 : 손짓, 몸짓, 자세, 표정, 눈동자, 음정으로 마음을 읽기 - + 페이싱 : 관찰하여 얻은 정보를 토대로 상대의 호흡, 제스처, 목소리 톤, 말의 빠르기를 맞춘다. - + 라포형성 : 신뢰관계 - + 리딩 : 변화를 유도 -* 좋은 평판을 만드는 세가지 방법 : 전문성, 일관된 태도, 온라인 평판 -* 반전 매력의 힘 : 각인. 수줍어 보이는데 프레젠테이션의 고수, 놀기만 좋아하는데 서울대 등 -* `디로딩`(Deloading) : 낮잠, 산책, 웹툰보기 등 잠깐의 이탈이 흐려진 판단력을 높인다. 샤워, 산책, 버스, 잠들기 전의 아이디어 생산성. -* 신뢰 : 역량 x 개방성 x 관심 x 일관성 - -이것으로 책에 대한 소개를 마칠까 한다. 미래의 나를 위해 하루정도 비워두고 이 책과 함께 깊은 고민을 거쳐 미래의 방향을 정해보시는 것은 어떠실런지...? - -* [책소개 - 임원이 된다는 것](http://www.yes24.com/Product/Goods/89565681?scode=032&OzSrank=1) diff --git a/_posts/2020-04-12-dev-competition-how-to-become-data-scientist.markdown b/_posts/2020-04-12-dev-competition-how-to-become-data-scientist.markdown deleted file mode 100644 index 6850ac63d..000000000 --- a/_posts/2020-04-12-dev-competition-how-to-become-data-scientist.markdown +++ /dev/null @@ -1,314 +0,0 @@ ---- -layout: post -title: "[Goal] 한걸음 한걸음, 데이터 과학자(Data Scientist)가 되는 방법" -subtitle: "The Way to become a data scientist step by step" -categories: dev -tags: competition how to become data scientist 데이터 사이언티스트 과학자 -comments: true ---- -## 개요 -> `Data Scientist`가 되기 위한 방법들을 정리한 글입니다. - -- 목차 - - [데이터 사이언스, 데이터 사이언티스트란?](#데이터-사이언스-데이터-사이언티스트란) - - [빠르게 데이터 사이언티스트가 되기 위한 방향잡기](#빠르게-데이터-사이언티스트가-되기-위한-방향잡기) - - [현 직장에서 데이터 사이언티스트가 되어보기](#현-직장에서-데이터-사이언티스트가-되어보기) - - [이직](#이직) - - [창업](#창업) - - [지금이라도 대학원을 가야할까?](#지금이라도-대학원을-가야할까) - - [롤모델 설정 및 끊임없는 학습](#롤모델-설정-및-끊임없는-학습) - - [프로젝트 및 블로그](#프로젝트-및-블로그) - - [논문, 특허, 저서, 강연](#논문-특허-저서-강연) - - [자격증](#자격증) - - [추천할만한 교재 및 커뮤니티](#추천할만한-교재-및-커뮤니티) - - [(참고) AI 활용사례](#참고-ai-활용사례) - - [(참고) 데이터 사이언티스트의 진정한 의미](#참고-데이터-사이언티스트의-진정한-의미) - - [(참고) 그 외의 학습조언](#참고-그-외의-학습조언) - - [마무리](#마무리) - - -## 데이터 사이언스, 데이터 사이언티스트란? ---- - -* __데이터 사이언스란?__ -> 데이터 과학(data science)이란, 데이터 마이닝(Data Mining)과 유사하게 정형, 비정형 형태를 포함한 다양한 데이터로부터 지식과 인사이트를 추출하는데 과학적 방법론, 프로세스, 알고리즘, 시스템을 동원하는 융합분야다. [(위키백과)](https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0_%EC%82%AC%EC%9D%B4%EC%96%B8%EC%8A%A4) - -데이터 사이언스, 사이언티스트는 사람마다 정의가 달라 용어 자체에 집착하는 것은 시간 낭비일 뿐이다. - -대신 우리가 진짜 원하는 것들 - 데이터 사이언티스트가 일하는 `기업, 직군, 직무, 제품, 갖춰야 할 스킬셋` - 을 알아보는 것이 훨씬 효율적이다. 최근 유명한 인포 그래픽들로 대체한다. - -* AI 관련 기업, 제품, 업무도메인 등 -![data & ai landscape 2019](https://theorydb.github.io/assets/img/dev/competition/2020-04-11-dev-competition-how-to-become-data-scientist-1.png) - - [확대 이미지](http://mattturck.com/wp-content/uploads/2019/07/2019_Matt_Turck_Big_Data_Landscape_Final_Fullsize.png) - - [출처-A Turbulent Year: The 2019 Data & AI Landscape ](https://mattturck.com/data2019/) - -* 데이터 사이언티스트가 갖춰야 할 역량 -![data & ai landscape 2019](https://theorydb.github.io/assets/img/dev/competition/2020-04-11-dev-competition-how-to-become-data-scientist-2.png) -![Venn diagram](https://theorydb.github.io/assets/img/dev/competition/2020-04-11-dev-competition-how-to-become-data-scientist-3.png) - - [출처-Towards Data Science](https://datacatchup.com/4-pillars-of-data-science-expertise/) - -* 데이터 직군 큰그림 -![Data Science Occupation](https://theorydb.github.io/assets/img/dev/competition/2020-04-11-dev-competition-how-to-become-data-scientist-4.png) - - [출처-데이터 분야의 직군 소개](https://github.com/Team-Neighborhood/I-want-to-study-Data-Science/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%95%BC%EC%9D%98-%EC%A7%81%EA%B5%B0-%EC%86%8C%EA%B0%9C) - -그야말로 `망망대해`다. 이런 규모의 다양성과 융합 때문에 용어의 정의가 어렵다. 따라서 본 포스팅에서는 데이터 사이언티스트의 정의를 최대한 광의적으로 해석하여 데이터, AI, 빅데이터 전반에 걸쳐 필요한 인재라고 정의한 후 포스팅을 작성하였다. - -이제 데이터 사이언티스트가 되기 위한 전략 및 준비과정에 대해 알아보자. - -## 빠르게 데이터 사이언티스트가 되기 위한 방향잡기 ---- -AI 및 데이터 사이언스에 관심있는 분들의 수다(?) 한 번 들어보자. -> "딥러닝을 배워야 한다, Python vs Jilia vs R?, TensorFlow를 알아야 한다더라, 최근에 2.0 등장!, PyTorch/Keras/Torch/Caffe/CNTK/Theano..?, 코딩이 중요한 것이 아니란다, 수리통계학이 중요하다, 미적분/확통/선대와 씨름 좀 해볼까?, 기껏 LSTM에 적응했는데 다 필요없고 BERT!, GAN/DQN/ANN/DNN/RNN/CNN/LSTM/ResNet/RBM/DBN/AE/GRU/styleGAN..?, 전이학습과 Auto-ML이 대세다, IBM Q Experience과 텐서플로 퀀텀(TFQ)도 등장했는데 양자 컴퓨팅 준비해야지, Serving은?, DARPA XAI는?, 실무의 꽃은 전처리지! No+SQL/OpenCV, 파이프라인 ELK/Hadoop-Spark, 지도 / 비지도 / 강화학습, PC나 서버 장비 스펙은?, Colab을 어떻게 사용하지?, 비즈니스 관점의 문제 및 인사이트 분석/도출도 쉽지 않고, 스토리텔링 및 사내 의사소통은 어찌하며, 시각화는 또 어쩐다,...등" - -한도 끝도 없어서 여기까지만 표현하겠다. 이 역시 망망대해다. 지금까지 위에 요약한 사례들은 데이터 사이언티스트에게 가장 중요시되는 역량이 `빠른 학습 속도 및 적용 능력`이라고 말하는 이유를 대변해준다. - -이런 폭풍속에서 헤쳐나가는 방법은 먼저 가고자 하는 방향을 구체적으로 정하는 일일 것이다. -* 지금까지 쌓아온 스킬, 재미있는 분야, 적성 고민하기 -* 시장이 원하는 사람되기 : 당장 개인 혹은 기업원하는 스킬셋, 세상이 원하는 제품 -* 세부 연구분야 정하기 -* 직군 정하기 -* 업무도메인 - -## 현 직장에서 데이터 사이언티스트가 되어보기 ---- -데이터 사이언티스트가 되기 위한 방법은 다양하다. 이직, 대학원 진학, 개인 프로젝트 진행, 창업, 꾸준한 학습 등 여러 방법이 있겠지만 모두 상당한 리스크가 존재하기에 심사숙고해야 한다. 반면 현재 소속된 회사에서 새로운 직무, 직군에 편성되는 것은 비교적 안전하고 쉬운 방법일 것이다. - -* 예) LG전자 - 사내 해외 대학 위탁교육 프로그램, LG전자-KAIST 인공지능 고급과정 등 - -## 이직 ---- -현 직장에서 데이터 사이언티스트가 될 방법을 찾지 못했다면 가장 일반적인 전환 수단은 역시 이직일 것이다. 현 직장이 적성에 맞지 않는데 평생 그 테두리에 갖혀 스트레스 속에 시간을 낭비한다는 것은 굳이 말하지 않아도 지옥과 다를바 없다. - -* AI 및 빅데이터 분야 채용정보 모음 - - [그 외 채용 및 조언 사이트 모음](https://theorydb.github.io/favorites/2019/09/05/favorites-ds-career/) - -* 한번에 이직이 어려운 경우 우회방법 - - 포스코 청년 AI 빅데이터 아카데미 : 우수 수료자 입사 우선권 제공 - - 스타트업 : 열정은 가득하나 쌓아온 커리어, 스킬이 변변치 않을 때 고려 가능. 기회의 장이자 연봉 및 안정성 등의 문제점도 있음 - -## 창업 ---- -데이터사이언스로 성공적으로 이직을 했다고 할 지라도 자신이 정말 원했던 분야의 연구 혹은 실무를 담당할 가능성은 낮으며 직장인은 언제나 회사의 부품임을 감안하여야 한다. 정말 본인이 하고 싶었던 일만 하고 싶다면 결국 언젠가는 창업의 문을 두드릴 수 밖에 없으므로 항상 관심있게 지켜봐야 할 핵심 선택지이다. -* 정부 지원정책 활용 - - 초기 창업 지원신청 : 5천만원 ~ 1억 (앱개발 등 주력 사업이 아닌 협업을 통한 서비스 구축에 활용하면 좋다.) - - R&D 사업 선정 지원금 - - 사무실 지원, 딥러닝 서버 지원 등 - - 국비지원 교육 : 단, 별로 추천하고 싶진 않다. 하지만 본인의 실력에 따라 고려대상이기도 하고 소정의 용돈도 받을 수 있다. -* 엔젤투자, 엑셀러레이터 투자 유치 -* 직업 특수성에 의한 장점 - - 인테리어, 장비, 재료, 임대료, 권리금, 보증금 불필요 - - 융합 학문 특성 상 다양한 분야와 연결 가능 : 채용, 요식업, 법률, - - 노하우 축적 및 모델 재활용 - - 시장 수요 급증 및 정부 정책 지원 활용 가능 - - 신생 분야인만큼 전문가의 절대적인 수가 부족하고 소위 객관적인 스펙(?)이 전무하므로 자기PR이 중요하다. - - 선점 효과를 통해 얻은 고객평, 리뷰, 입소문 등이 지속가능한 시간적, 경제적 자유를 제공해줄 수 있다. - -## 지금이라도 대학원을 가야할까? ---- -논란이 많은 부분이나 유경험자들의 의견을 토대로 가장 중요한 장단점 몇가지를 꼽아보았다. 개인적으로는 대학원에서 얻을 수 있는 능력들을 이미 갖추고 있는 분이라면 가지 않아도 큰 문제될 것은 없으나 그렇지 않다면 심각하게 진학을 고민해봐야한다고 생각한다. - -* __가야하는 이유__ - - `논문`과 `커뮤니케이션` 스킬 - + 논문을 빠르게 `읽고, 구현하고, 쓰는` 능력이 매우 중요하다. 좋은 논문과 아이디어 하나에 예측의 정확도가 급변하는 상황 속에서 논문때문에 팀원들과 커뮤니케이션이 안된다면? 내가 구성원이어도 절대 안뽑겠다. - + 논문은 그야말로 AI의 언어이다. - + [참고-인공지능이 논문을 학습한다면](https://theorydb.github.io/review/2019/08/05/review-book-nlp-camp/#%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5%EC%9D%B4-%EB%85%BC%EB%AC%B8%EC%9D%84-%ED%95%99%EC%8A%B5%ED%95%9C%EB%8B%A4%EB%A9%B4) - + [참고-세상 모든 논문들을 딥러닝이 이해할 수 있게](https://theorydb.github.io/think/2019/06/25/think-future-ai/#%EC%84%B8%EC%83%81-%EB%AA%A8%EB%93%A0-%EB%85%BC%EB%AC%B8%EB%93%A4%EC%9D%84-%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%9D%B4-%EC%9D%B4%ED%95%B4%ED%95%A0-%EC%88%98-%EC%9E%88%EA%B2%8C) - - 대학원 생활 수년간 AI 분야에 필요한 기본 역량과 자세를 디폴트로 얻어온다. 세상에 쌓여 온 데이터, 지식을 바탕으로 실험을 통해 유의미한 인사이트를 얻는 논문을 쓰는 과정에서 p-value이니, 가설수립에서 과학적 실험/설계 등으로 수년간 고민을 했다는 것은 학부생 출신이 쉽게 범접할 수 없는 경험이다. - -* __가지 말아야 하는 이유__ - - 이미 논문을 이해하고 빠르게 구현체를 만들 수 있는 사람에게는 `돈, 시간 낭비`이다. - - `연구 분야가 협소`하여 차후 기업에서 담당할 직무간 불일치 가능성이 크다. - - 해외라면 모를까? 정부지원을 받는 국내 유수 AI대학원들도 교수 초빙단계부터 몸살이다. 교육 커리큘럼의 신뢰도도 의심스럽다. Matlab, SAS, IBM 모델러, RapidMiner, 나임같은 구시대의 도구를 사용하기도 한다. 미국의 경우 2개 정도의 AI대학원에 약 1조원 정도의 예산을 집중하고 있고, 중국의 경우 대학 학과만 연간 400개 이상 신설하는 상황에서 우리 나라의 경우 두 나라에 비해 학과 신설은 커녕 택도없는 예산으로 AI 대학원만 7개를 지원하는 등 정책적 문제점을 지적받고 있다. - + [참고-AI전문가 채용 없이 '교수 돌려막기'](https://biz.chosun.com/site/data/html_dir/2019/05/04/2019050400138.html) - -* __주의해야 할 점__ - - 본인이 하고 싶은 연구분야와 지도교수님의 연구분야가 정확히 일치해야한다. - - 영수증 처리, 제안서 작성, 수업자료 준비, 조교실습, 청소, 세미나참여, 대리기사, 짐꾼 등 허드렛일로 인한 시간 및 노동력 낭비는 감수해야한다. - - [대학원생 때 알았더라면 좋았을 것들](http://gradschoolstory.net/) - -## 롤모델 설정 및 끊임없는 학습 ---- -지금까지 직접적인 진로의 변경에 대해서 알아보았다면, 앞으로는 원활한 커리어 전환을 위한 학습 및 스킬셋을 획득하는 방법을 중점적으로 기술하고자 한다. - -* 링크드인(LinkedIn)에서 유명 데이터 사이언티스트 분들을 수시로 검색한 후 커리어에서 힌트를 얻는 방법이 가장 실용적이다. - - [링크드인](https://www.linkedin.com/) - -더불어 평소 우리가 떠올리는 과학자의 이미지가 그러하듯 데이터 사이언티스트도 끊임없는 연구 및 학습은 필수 조건이다. 서두에서 언급했던 방향잡기에 대한 답 또한 끊임없는 학습과 노력 끝에 찾을 수 있다. -구체적인 커리어 및 학습을 위한 방법들을 살펴보자. - -## 프로젝트 및 블로그 ---- - -* 캐글 등 Competition 참여 - - 캐글의 중요성은 아무리 언급해도 지나치지 않다. 특히 현재 데이터 사이언스와 무관한 직무를 수행중인 분들은 이 곳에서 마스터 혹은 메달을 획득하는 것 만큼 객관적으로 신빙성있는 실력을 어필할만한 수단이 거의 없다. 그 외에도 앞서 방향잡기에서 말씀드린바와 같이 다양한 업무 도메인을 미리 경험함으로써 본인이 가고자 하는 범위를 보다 세부적으로 축소시킬 수 있고 그만큼 학습과 커리어에 집중하기 쉬워진다. Notebooks 게시판에 다른 참여자들의 해결 기법 및 인사이트를 얻을 수 있고, Discussion에서 질의응답 내용을 읽어보며 내용을 파악할 수 있다. - - [참고-데이터 과학 경진대회 사이트 모음](https://theorydb.github.io/dev/2019/06/23/dev-competition-list/) - -* 외주 및 프리랜서 플랫폼 - - 인력 수요에 비해 프리랜서가 전무하여 Small 커리어 쌓기에 안성맞춤 - - 주요 의뢰업무 : 로그/센서/게임/SNS 분석, 시장조사 의뢰, 추천서비스, 정부과제 용역 및 컨설팅, 공공 자문 보고서 작성, 논문 데이터 분석 의뢰 등 - - [그 외 재능거래 사이트의 비교 분석글](https://okky.kr/article/409248) - - [크몽 - 데이터분석/인공지능/머신러닝](https://kmong.com/category/613) - - [재능넷](https://www.jaenung.net/) - - [오투잡](https://www.otwojob.com/products/15) - - [위시캣](https://www.wishket.com/project/#) - - [프리모아](https://www.freemoa.net/m4/s41?page=1) - -* 블로그 - - 학습 내용을 효율적으로 정리할 수 있고 열정과 전문성을 어필할 수 있는 좋은 수단이다. - - 본 블로그에도 구축을 위한 좋은 방법을 다루고 있으므로 관련 글을 추천한다. - + [추천-블로그를 만들어 봅시다!](https://theorydb.github.io/envops/2019/05/01/envops-blog-intro/) - - -## 논문, 특허, 저서, 강연 ---- -* 논문 - - 논문의 중요성은 위 대학원 진로 파트에서 이미 언급했으므로 생략하고 셀러던트로서 혹은 학사 출신으로서 논문을 쓰기 위한 방법에 대해 간략히 언급하고자 한다. - - 논문을 실제코드로 구현하고, 개량해보고 공헌도를 높일 수 있는 논문 게재로의 선순환 능력을 갖춰야한다. - + [논문 초보자를 위한 Tip] - + 세부 연구분야 선정 > 타깃저널 선택(격월/계간) > 벤치마킹 논문 > 리뷰 논문 등 메타분석 > 연구주제 선정(최근 화두) - + 처음에는 논리전개 방식을 배우고, 연구 대상과 방법만 바꾸는 방식을 추천 - + 변형, 새로운, 혼합에 초점을 맞추되, 구글 스칼라 검색 시 30개 이내 검색되면 딱 좋은 분야 - + 새로운 업무 도메인의 데이터로 분석한 연구도 새로운 공헌으로 인정받을 수 있다. - - 선행연구 파악 : 리뷰(메타분석/literature review) 논문으로 최신 연구분야에 대한 체계적 정리 - + 저자, 제목, 연도, 인용수, 연구목적, 연구방법, 비고 등으로 테이블 정리 - + 구글 스칼라, 대학 도서관 포털, SCI-HUB 사이트에서 검색, 결론 및 시사점에 현 시점 부족한 연구도 정리가 되어있음 - - 국내저널 : 지능정보연구, 한국경영과학회지, Information Systems Review - - 해외저널 : IEEE Access, IEEE Transactions on Big Data, Information Systems Research - + [참고-데이터 사이언스 관련 해외학회 모음](https://theorydb.github.io/dev/2019/07/10/dev-papertomath-abroad-academy-list/) - - 논문 구현 사이트 - - [KCI 등재지](https://www.kci.go.kr/kciportal/po/search/poCitaView.kci?sereId=000721&year=2018) - - [참고-논문 읽는법, 쓰는법, 투고하는법](https://theorydb.github.io/dev/2019/08/27/dev-papertomath-paper-io/) - -* 특허 - - 특허의 유명무실에 대한 논쟁은 논외로 한다. 다만 가급적 본인이 회사 업무 과정에서 등록하면 수월할 것이다. - - [추천도서-실전으로 배우는 발명·특허](http://www.yes24.com/Product/Goods/13608913?scode=032&OzSrank=1) - - [추천도서-나는 특허로 평생 월급 받는다](http://www.yes24.com/Product/Goods/17472918?scode=032&OzSrank=10) - -* 저서 - - 평소 열심히 공부해 온 것들을 가독성과 전달력을 살려 책을 출간하는 방법도 전문성을 인정받기 위한 좋은 수단이다. - -* 강연 - - 데이터 사이언티스트가 되기 전 이 기회를 만나기는 쉽지 않겠지만 이 만큼 인맥을 빨리 형성하고 입사 추천을 받기 좋은 수단도 없다. - - -## 자격증 ---- -없는 것보다는 낫겠지만 굳이 추천하고 싶진 않다. 적어도 필자에겐 영화배우 하정우님보다 셀럽이신 네이버AI 임원 하정우님께서 자격증의 가치가 정말 무의미 함을 페북에 종종 올리시는데 분명 이유가 있다 생각한다. 하지만 커리어를 위해서가 아니라 학습 자체를 위하여 또, 동기부여를 위한 것이라면 굳이 취득하지 않을 이유 또한 없기에 정리해본다. - -* Google Certificate for ML - - 구글이 인정하는 자격증으로 최근 등장하여 텐서플로 코리아 페북 커뮤니티에서 약간 웅성웅성함. 하지만 취득자들 말로는 실무 경력에 비할만큼 가치있는 자격증은 아니라고 함. - - [핸드북 가이드 정리글](https://korchris.github.io/2020/03/15/Google_Certificate/) - - [추천강의](https://www.coursera.org/specializations/tensorflow-in-practice) -* Google Cloud Certified Professional Data Engineer - - [GCP 자격증 후기](https://reoim.tistory.com/m/entry/GCP-%EC%9E%90%EA%B2%A9%EC%A6%9D-%ED%9B%84%EA%B8%B0-Google-Cloud-Certified-Professional-Data-Engineer) -* 빅데이터 분석 기사 (2020 예정) -* 한국산업인력공단 - 사회조사 분석사 - - 통계학과 전공자들에게는 나름 유명한 시험. 확통 부분을 제외한 설문조사 등 사회학과 관련된 부분은 데이터 사이언스와는 큰 관련이 없다. -* 데이터산업진흥원 - ADP - - 그나마 대안이 없어 약간의 의미는 인정받는 시험. 동 기관에서 빅데이터 분석 기사 시험도 주관할 예정. - - 필기 시험은 쓸데없는 주입식, 암기식 위주로 가치가 없다 생각하며, 실기 시험은 최근들어 수준이 많이 향상되었으나 행정처리 미숙으로 응시자들의 불만이 상당함. -* 한국경제 - 경영 빅데이터 분석사 - - 비지니스 측면에서 문제의 정의 및 기획을 위한 안목 향상에는 도움이 되나 기술적으로는 가치가 거의 없음. - -## 추천할만한 교재 및 커뮤니티 ---- -언제나 전문가가 되기 위한 첫발은 책에 있고, 그 완성은 사람에 있다. 양서를 다독하고 커뮤니티 등 사람 모임에서 좋은 인간관계를 쌓는 것의 중요성은 두말할 나위 없다. - -* 원서 : 너무 많아 국내외 유명 데이터 사이언티스트 분들이 이구동성으로 추천한 서적들만 모았다. - - Machine Learning : A Probabilistic Perspective (by Kevin P. Murphy) - - Artificial Intelligence: A Modern Approach (by Stuart Russell and Peter Norvig) - - Deep Learning (by Ian Goodfellow) - - Neural Networks and Deep Learning (by Charu Aggarwal) - - Reinforcement Learning (An Introduction by Richard S. Sutton) - - Causal Inference in Statistics (A Primer by Judea Pearl) - - Fluent Python: Clear, Concise and Effective Programming (by Luciano Ramalho) - - Linear Algebra Done Right (by Sheldon Axler) - - Probability Theory: A Comprehensive Course (by Achim Klenke) - - The Elements of Statistical Learning (by Trevor Hastie) - - Machine Learning : A Bayesian and Optimization Perspective (by Sergios Theodoridis) - - Probabilistic Graphical Models, Principle and Techniques (by Daphne Koller, Nir Friedman) - - Information Theory, Inference, and Learning Algorithm (by David J. C. MacKay, David J. C. Mac Kay) - - Pattern Classification (by Richard O. Duda, Peter E. Hart, David G. Stork) - - Pattern Recognition and Machine Learning (by Christopher M. Bishop) - - Recommender Systems (by Aggarwal, Charu C.) - - Building Recommender Systems with Machine Learning and AI (by Frank Kane, Frank Kane) - - 참고로, 유명한 서적들이라 관련 번역서들도 제법있다. - -* 국내서(번역서 포함) : 개인적으로 유익했던 또 많은 추천을 받은 책을 간추려 보았다. - - 패턴인식 (오일석 저) - - 빅데이터 기초:개념, 동인, 기법 (Thomas Erl, Wajid Khattak, Paul Buhler 저) - - 인공지능 시대의 비즈니스 전략 (정도희 저) - - 데이터 마이닝 개념과 기법 (지아웨이 한, 미셸린 캠버, 지안 페이 공저) - - 수리통계학 개론 (Hogg, Mckean, Craig 저) - - 수리통계학 (김우철 저) - - 밑바닥부터 시작하는 딥러닝 (사이토 고키 저) - - 핸즈온 머신러닝 (오렐리앙 제롱 저) - - 케라스 창시자에게 배우는 딥러닝 (프랑소와 숄레 저) : 초보자 강추, 참고문헌이 주석으로 제시 - - -* 커뮤니티 - - [참고-데이터 사이언티스트가 되기 위한 채용 및 조언 사이트 모음](https://theorydb.github.io/favorites/2019/09/05/favorites-ds-career/) - -* 온라인 교육 - - 쿄세라 - - 패스트캠퍼스 - - 인프런 - - DS스쿨 - - 인사이트 캠퍼스 - - 탈잉 - - 무크 - -* 데이터셋 제공 사이트 - - 무비렌즈 - -## (참고) AI 활용사례 ---- -위에서 언급한 방향을 찾기 위해 지금까지 구현된 서비스 혹은 제품을 통해 자신에게 적합한 분야를 찾는 인사이트를 얻는 것도 좋은 방법이다. - -* 추천시스템 -* RateMyDrive -* Acxiom DB -* DHL의 배송 타이밍 관리 및 물류망 구축, 물류센터 확장 및 배송차량 추가 등 투자결정, -* 코로나 확산 상황 등 재해 예측 -* 의료 및 헬스케어 분야의 AI 논문 학습 -* AI스피커, 자율자동차 -* 제조공정 기술, 교육, 마케팅 -* 보안 이상탐지, 스팸메일 탐지, 아마존 가드듀티 등 - -## (참고) 데이터 사이언티스트의 진정한 의미 ---- -서두에 데이터 사이언티스트의 의미를 광의적으로 정의한 후 본 포스팅을 작성하였지만 사실 필자는 평소 본 단어를 굉장히 협의적으로 해석한다. 짧게 말해 정말 과학자 칭호를 얻을 자격이 있는 분들을 데이터 사이언티스트라고 말한다. 국내 데이터 사이언티스트로 유명한 분들도 본인 스스로를 데이터 사이언티스트라고 표현하지 못할 정도로 고수일수록 조심스러운 단어이다. 그렇다면 협의적인 의미에서 이들은 어떤 능력을 갖추고 있을지 간추려본다. (정확하지는 않겠지만 사실 필자의 목표를 정리한 글이다.) - -* __필수 역량__ - - 수학, 수리통계학에서 연구된 핵심 개념을 프로젝트 전반의 과정에서 언제, 어디에 쓸 수 있는지 선택, 적용, 고안할 수 있는 능력 - - 모델을 직접 선택할 수 있음은 물론 고안하고, 변형할 수 있는 능력 - - 데이터 및 업무의 성격에 따라 휴리스틱 요소 즉, 파라미터 조정, 신경망 구조 변경등에 오버헤드를 줄이는 경험에 따른 감각 - - 모델의 재구성 : 엣지 네트뤄크 구성, 레이어, 뉴런의 개수, 파라미터 튜닝, 활성화 함수 등의 변화 - -* __선택 역량__ - - 문제 인식 및 정의 등 비지니스적 인사이트 - - 전처리 능력. 모델은 데이터에 의존적이기 때문에 알맞은 모델을 찾기 위한 분석, 더불어 모델의 성능을 극대화할 수 있는 인풋의 변환 능력이 필요하다. - + 실무에 데이터는 없거나, 쓸 수 없는 형태이거나 둘 중 하나이다. - + 비정형, 정규화, 표준화 이슈부터 결측치, 이상치, 센서 오작동으로 인한 오류는 말할것도 없고 시간 규격의 불일치, 기후와 고도에 따른 특수성도 존재한다. - - ML/DL 엔지니어링에서 애플리케이션 서빙에 이르기까지 전반의 IT 프로젝트 진행 능력 및 아키텍처 설계 능력 - -## (참고) 그 외의 학습조언 ---- -* IT개발자라면 코딩 구현 보다는 수리통계학에 조금 더 관심을 가졌으면 한다. - - 예를들면 기본적인 선형회귀가 1차 방정식인 것은 잘 알아도 충족조건은 잘 모른다. - + 등분산성(전차의 분산이 같아야 한다.), 정규분포(잔차가 정규분포를 띄어야 한다.) - - 데이터 유형을 알아야 한다. 예) 명서등비, 이진, 숫자, 이산/연속 등, 전처리(정제/통합/축소/변환) 포함 - - 빈발 패턴, 아웃라이어 분석, 퍼지 세트, 베이즈정리, 최대가능도 추정 정도는 알아야 한다. - - 빅데이터 시대에 들어서면서 추정, 검정, p-value는 상대적으로 중요도가 떨어진다. - - 확률분포 : 정규, 지수, 감마, 카이제곱, 포아송, 이항, 다리클레, 결합, 주변 등 -* 수학의 엄밀한 증명은 피하고 집합론, 해석학으로 이해를 보충하고 활용에 초점을 맞춘다. -* 딥러닝 노드의 활성화 함수 : 거듭 합성함수 꼴로 표현되며, 어떤 데이터도 복잡한 함수로 표현이 가능하여 표현력이 좋아진다. -* 국내 빅데이터 분석 SI 업체 : 솔트룩스, 모비젠, 엔텔스, 와이즈넛 등 - -## 마무리 ---- -본 포스팅은 그동안 개인적으로 읽었던 출간된 도서, 지인의 조언, 유튜브 등 고수들의 개인 채널, 블로그 등을 망라하여 필자 스스로 좋은 데이터 사이언티스트가 되기 위한 방향을 정리하고자 작성한 글이다. 따라서 절대 맹신하지 말고 참고로 삼아 더 좋은 방향을 찾으셨으면 한다. - -긴 글 읽어주심에 감사드리며 필자와 같이 열정은 있으나 현실이 막막한 분들께 조금이라도 도움이 되길 간절히 바란다. -(참고 - 현재 버전은 초안이며, 글의 내용이 길어 앞으로 계속 보완해나갈 예정입니다.) - diff --git a/_posts/2020-04-18-review-book-ai-expert-in-one-year.markdown b/_posts/2020-04-18-review-book-ai-expert-in-one-year.markdown deleted file mode 100644 index 74912c049..000000000 --- a/_posts/2020-04-18-review-book-ai-expert-in-one-year.markdown +++ /dev/null @@ -1,84 +0,0 @@ ---- -layout: post -title: "[리뷰] 1년 안에 AI 빅데이터 전문가가 되는 법" -subtitle: "How to become an AI big data expert in a year" -categories: review -tags: review book ai expert big data -comments: true -header-img: img/review/2020-04-10-review-book-ai-expert-in-one-year-1.jpg ---- - -## 개요 -> 본 리뷰는 `반니` 출판사 `"1년 안에 AI 빅데이터 전문가가 되는 법(서대호 저)"`을 읽고 얻은 지식을 정리한 글입니다. - -- 목차 -- [데이터 사이언스 분야에 커리어 책이 적은 이유](#데이터-사이언스-분야에-커리어-책이-적은-이유) -- [다소 위험해보이는 파격적인 제목](#다소-위험해보이는-파격적인-제목) -- [특허, 저서, 자격증, 창업, 취업, 집필 등 다양한 저자의 경험](#특허-저서-자격증-창업-취업-집필-등-다양한-저자의-경험) -- [대학원 경험의 공유와 논문 쓰기](#대학원-경험의-공유와-논문-쓰기) - - -## 데이터 사이언스 분야에 커리어 책이 적은 이유 ---- -알파고의 등장 이후 국내에도 AI 바람이 불고 있다. 기존에도 빅데이터, 데이터 마이닝 등 유사 분야의 인기가 높았는데 특히 알파고를 통해 딥러닝의 성능에 신뢰가 더해지며 AI의 관심이 높아졌고 이를 배우고자 혹은 관련 분야로 커리어를 선회하고자 하는 이들이 많아졌다. - -그동안 AI 빅데이터 전문가가 되는 길을 안내하는 도서는 없었다. 그저 앞서 나간 선배님들의 세미나, 블로그 등의 활동에서 분야별, 커리어별 제한적인 정보를 얻을 수 있을 뿐이었다. - -사실 AI 빅데이터 전문가라는 용어를 데이터 사이언스 업계에서 들어본 적은 없다. 책에도 소개되다시피 빅데이터 및 AI 업무를 수행하는 전문가를 특칭하기 어려워 저자가 선택한 단어이기 때문이다. 업계에서는 보통 `데이터 사이언티스트`라 부르기 때문에 두 단어를 유사한 단어라 생각하고 책을 읽었는데 저자의 의도 또한 유사했다 본다. - -이런 도서가 등장하기 어려운 이유가 있다. - -* 첫번째 이유는 `신생분야`라는 점이다. 알파고가 등장한지 이제 겨우 4년 남짓의 시간이 흘렀다. 책이 등장하는 시점은 늘 실무나 논문에 비해 후행적인 성격을 띄기 때문에 그만한 경험이 축적되려면 제법 시간이 흘러야 하는데 특히 AI 분야는 10여년 이상의 커리어를 자신있게 자랑할 수 있는 사람이 매우 드물다. - -* 두번째 이유는 `융합분야`라는 점이다. 본 도서에 제시된 아래 그림을 보자. -![데이터 과학 분야](https://theorydb.github.io/assets/img/review/2020-04-10-review-book-ai-expert-in-one-year-3.jpg) -데이터 과학과 관련된 분야는 이처럼 다양한 분야가 상호 연계되어있다. - -때문에 방대한 분애에의 전문성을 요한다. 데이터 사이언스의 정의를 명확히 내리기 어려운 이유도 이 때문이다. 하나 하나의 부분을 차지하는 분야들이 평생 공을 들여도 결코 정상에 오르기 녹록치 않은 분야들이기 때문이다. - -즉, 이 분야의 커리어를 다루는 책을 쓰려면 세계적으로 유명한 논문을 등재한 사람 혹은 자타가 공인하는 회사에서 AI 업무를 수행하는 사람이 아닌 이상 인정받기도 쉽지 않기에 자신있게 집필하기 굉장히 어려운 분야 중 하나이다. - -## 다소 위험해보이는 파격적인 제목 ---- -본 도서가 등장했을 때 매우 놀랄 수 밖에 없었다. 저자분이 얼마나 고수이시길래 이런 과감한 제목을 택할 수 있는 걸까? 한편으로는 불안감도 들었다. 보통 이런 자극적인 제목은 별로 얻을 것이 없던데... 본 도서의 제목에 이끌리신 대다수의 분들도 비슷한 생각을 하시지 않을까? - -때문에 결론부터 말씀드리면 `데이터 사이언티스트가 되기 위해 저자가 다방면으로 노력했던 흔적의 기록`이 책의 내용이라고 말하고 싶다. 물론 이런 전문분야에 과감히 당찬 제목을 사용한 것은 저자 본인의 자신감과 패기일 것이나 그럼에도 본 도서가 의미를 담고 있는 것은 타인들의 시선을 두려워하지 않으며 본인의 노력을 진솔하게 표현한 용기가 아닐까 싶다. - -더불어 다양한 융합 분야라는 특성 상 일생을 다 바쳐도 모든 영역에 커리어를 쌓을 수 있는 사람은 거의 없을텐데 각자가 노력한 방식이 공유될 수 있는 배경을 조성한 점에 큰 박수를 보내고 싶다. - -분명 저자의 길을 가보지 않았던 분, 그리고 저자보다 내공이 떨어지는 분, 그리고 내공이 높은 분일지라도 이런 다방면의 커리어를 폭 넓게 생각한 분은 흔치 않을 것이기에 `관련 분야에 종사하고 있거나 꿈을 가진 사람들은 반드시 한 번 읽어보시길 권장한다.` 분명 무엇이든 얻으실 수 있을 것이다. - -이 책을 읽은 소감 및 요약은 여기서 마친다. 보다 자세한 내용이 궁금하시면 이어지는 챕터를 읽어주시기 바란다. - -## 특허, 저서, 자격증, 창업, 취업, 집필 등 다양한 저자의 경험 ---- -저자의 데이터 사이언티스트로서의 역량과 무관하게 저자는 본 도서를 집필할 자격이 충분하다고 생각했다. 챕터의 제목에 열거한 바와 같이 `대학원, 논문, 특허, 저서, 자격증, 창업, 취업` 등 데이터 사이언스와 관련된 거의 전 분야에 커리어를 쌓고자 많은 노력을 기울였기 때문이고, 그 시행착오의 과정을 자신있게 공유했기 때문이다. - -분야가 신생이니 만큼 모두 우왕좌왕이다. 본 리뷰를 작성하는 필자도 그렇고, AI 인재 육성을 위한 정부 혹은 담당자들고 헤매이고 있고, 전도 유망한 기업에서 이름 꽤나 날리는 고수 분들의 세미나를 들어도 누구하나 쉽게 자신있게 얘기하거나 방향을 제시하기 어려워한다. - -때문에 저자도 이런 시행착오를 거쳐으며 `흔한 이 시대의 취준생들이 그렇듯 먼저 스펙적인 요소로 고군분투하며 접근했던 시행착오들이 본 도서에 기록`되어있다. 그리고 그 노력의 과정이 매우 진솔하게 담겨있다. 필자도 다 한번씩 도전해 본 분야들이기에 그 마음과 노력이 많이 와 닿았다. - -예를들면 자격증이 그 중 하나일 것이다. 본 도서에는 언급되지 않았지만 약 한달전 텐서플로 코리아 커뮤니티를 약간 들썩이게 했던 자격증이 있었다. 구글께서 만드신 자격증 `Google Certificate for ML`! 구글이 만든 자격증이라는 위상 덕분에 드디어 업계에서 실력을 공인받을 수 있는 자격증이 생긴것이 아닐지 많은 사람들이 관심을 가졌기 때문이다. - -사실 그동안 빅데이터, AI 분야에는 이렇다 할 자격증이 없었다. 그나마 가장 목적과 유사한 자격증으로 인정받는 것이 ADP 정도일 텐데 이 또한 필기 시험의 경우 암기식, 주입식을 지향하고 있고 데이터 분석의 핵심에 동떨어지고 R언어만을 다루는 등의 이슈로 - 물론 최근에는 많은 변화가 있는 것으로 알고 있지만 - 비난을 많이 받았었다. - -실기 또한 획일적인 유형이 로테이션 경향으로 출제되고 출제 당국의 미숙한 행정처리 때문에 시험에 집중하기 어렵다는 응시자들의 불만이 쏟아졌다. 본 도서의 저자도 유사한 시각으로 언급한다. 관련 자격증이 3개 정도 있는데 `어떤 자격증을 취득했을지라도 아무도 전문가로 인정하지 않는 것이 현실이다`라고 말이다. - -이렇듯 각 스펙 분야별로 저자가 수집한 정보들을 - 심지어 공부했던 책 목록까지 추천한다. - 공유해주는 것은 물론, 고군분투했던 개인의 경험담과 관련 업계의 현실에서 느낀 것들을 빠짐없이 공유하고 있기에 많은 정보를 얻을 수 있고 정보가 많지 않은 분야인 만큼 유익한 정보를 얻을 수 있다. - -## 대학원 경험의 공유와 논문 쓰기 ---- -AI와 같은 신생 분야는 특성상 책이 별로 없다. 가끔 양서가 등장하긴 하지만 책의 집필은 상당한 시간을 요하기에 최신 기술을 다루긴 어렵다. 그렇기에 `논문에의 의존도`가 자연스레 높아진다. -![논문 예시](https://theorydb.github.io/assets/img/review/2020-04-10-review-book-ai-expert-in-one-year-2.jpg) - -필자의 경우는 특히 대학원 생활을 통해 얻을 수 있는 것들과 논문에 관련된 정보가 많은 도움이 되었다. 학사 출신이라 대학원에 대한 미련이 늘 존재했는데 `대학원의 세계가 어떻게 돌아가며 AI 분야에는 어떤 도움을 줄지 혹은 논문을 작성하는 방법 등의 노하우` 등이 공유되어 있어 많은 도움을 얻을 수 있었다. - -AI 분야로 진출하고 싶은데 대학원을 반드시 가야할지 고민하는 것은 관련 업계에 관심있는 분들에게 흔히 오고가는 질문이다. 저자의 경험을 바탕을 비판적으로 받아들인다면 좋을 길을 찾을 수 있지 않을까 생각한다. - -저자는 책에서 10학번이라고 본인을 소개했으므로 추정컨데 필자와는 아마도 10년 정도의 나이 차이가 나는 듯하다. 이렇게 다방면에서 열심히 하였기에 관련 분야에서 창업을 할 수 있었겠구나라는 생각과 함께 정말 인생을 주도적으로 열심히 사시는 젊은 분들이 많구나라는 생각과 함께 필자의 인생을 돌아보고 반성해 보기도 하는 등 많은 생각을 하게 된 계기가 되었다. - -책의 내용이 지극히 현실적이라 관련 업계에 관심있는 분이라면 주말 하루면 능히 다 읽으실 수 있을 것이다. - -이것으로 책에 대한 소개를 마칠까 한다. 담고있는 정보에 반해 책의 가격도 저렴한데 한번 읽고 본인의 커리어 방향과 현 위치를 고민하시는 것은 어떠실런지? - -* [책소개 - 1년 안에 AI 빅데이터 전문가가 되는 법](http://www.yes24.com/Product/Goods/87473319?Acode=101) diff --git a/_posts/2020-04-20-envops-blog-how-to-register-google-adsense.markdown b/_posts/2020-04-20-envops-blog-how-to-register-google-adsense.markdown deleted file mode 100644 index 31b9762be..000000000 --- a/_posts/2020-04-20-envops-blog-how-to-register-google-adsense.markdown +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: post -title: "[Jekyll Blog] 구글 애드센스(Google Adsense) 적용하기" -subtitle: "How to register Google Adsense" -categories: envops -tags: envops blog github pages jekyll google adsense -comments: true ---- - - -## 개요 -> 블로그에 `구글 애드센스(Google Adsense)`를 등록하는 방법에 대해서 알아봅니다. - -- 목차 - - [구글 애드센스(Google Adsense)란?](#구글-애드센스google-adsense란) - - [애드센스 가입](#애드센스-가입) - - [애드센스 소스코드 적용](#애드센스-소스코드-적용) - - [승인 후 절차](#승인-후-절차) - - -## 구글 애드센스(Google Adsense)란? ---- -구글 애드센스(Google Adsense)란 구글의 `수익형 광고 플랫폼`으로 웹사이트 및 블로그 등을 운영하는 사람이라면 누구나 애드센스에 가입하여 광고 수익을 구글과 나눌 수 있다. - -반대로 애드워즈의 경우 광고주를 위한 플랫폼으로 광고 게재를 의뢰하고 구글측에 광고비를 지급한다. 비슷한 플랫폼으로는 `Naver의 애드포스트, MS의 애드센터, Yahoo의 퍼블리셔 네트워크` 등이 있다. - -구글 애드센스는 신청 후 승인이 되어야 운영이 가능하므로, 가급적이면 블로그 개설 직후 바로 신청하지 말고 몇개월 정도 포스팅을 꾸준히 등록하고 구글 애널리틱스 등을 통해 유입 정도를 파악한 후 신청하는 것이 좋다. 한가지 유념할 것은 승인 후 `본인 블로그의 광고를 본인이 클릭하게 되면 이용정지`를 당할 수 있기 때문에 주의해야 한다. - -본 포스팅에서는 애드센스와의 기술적인 연동만을 다루므로 수익성, 장단점, 유의사항 등은 다루지 않는다. 필요시, 아래 링크를 참고하시기 바란다. -* [애드센스 - 나무위키](https://namu.wiki/w/%EC%95%A0%EB%93%9C%EC%84%BC%EC%8A%A4) -* [구글 애드센스 승인과정과 광고넣기 - 휴식같은 여행으로의 초대](https://invitetour.tistory.com/38) -* ["구글 애드센스 정지 후 30일만에 해제됐네요." - 휴식같은 여행으로의 초대](https://invitetour.tistory.com/128) -* [Average Cost per Click by Country: Where in the World Are the Highest CPCs? - WordStream](https://www.wordstream.com/blog/ws/2015/07/06/average-cost-per-click) -* [구글 애드센스로 돈벌기 쉽지 않은 이유 - 찌소 주식차트분석](https://jjisso.tistory.com/317) - -## 애드센스 가입 ---- -+ 아래 그림과 같이 [Goodle Adesense](https://www.google.com/adsense/)에 접속하여 `시작하기`를 클릭한다. - ![그림1](https://theorydb.github.io/assets/img/envops/2020-04-20-envops-blog-how-to-register-google-adsense-1.png) -+ 광고를 게재할 `웹사이트 주소, 이메일 주소` 등의 정보를 입력한다. - ![그림2](https://theorydb.github.io/assets/img/envops/2020-04-20-envops-blog-how-to-register-google-adsense-2.png) -+ `국가`를 선택 후, `이용약관`에 동의한다. - ![그림3](https://theorydb.github.io/assets/img/envops/2020-04-20-envops-blog-how-to-register-google-adsense-3.png) -+ 수익금을 받기 위한 절차로 `결제 프로필`을 등록한다. 주소 및 연락처 등의 개인정보를 입력한다. - ![그림4](https://theorydb.github.io/assets/img/envops/2020-04-20-envops-blog-how-to-register-google-adsense-4.png) - -## 애드센스 소스코드 적용 ---- -* 가입 마무리 단계 즈음, 아래 그림과 같이 구글 애드센스 소스 코드를 웹사이트에 `적용`하라는 안내 메시지가 나온다. - ![그림5](https://theorydb.github.io/assets/img/envops/2020-04-20-envops-blog-how-to-register-google-adsense-5.png) - 여기서 `data-ad-client` 부분에 명시된 ca-pub로 시작되는 값이 본인의 애드센스 id가 된다. - -* 소스 코드를 웹사이트에 적용하는 방법은 웹사이트 및 블로그 운영방식에 따라 천차만별이다. 일반적으로 위 그림에 안내된 바와 같이 메인 페이지의 태그 사이에 코드를 붙여넣으면 되는데, 워드프레스 사용자의 경우 별도 안내방법이 소개되어 있다. 다만 네이버, 티스토리 등 개인이 소스코드를 직접 관리하지 않는 경우 해당 블로그 메뉴얼을 찾아보거나 구글링을 통해 적용방법을 별도로 찾아야한다. 본 포스팅에서는 Jekyll 기반의 블로그에 적용하는 방법만을 다루며 필자의 블로그를 예시로 적용해 보겠다. - -* 먼저 본 블로그의 경우 아래 그림과 같이 `_includes` 폴더 아래에 `post.html, right-side.html, contents.html` 총 3개의 파일에 구글 애드센스를 연동할 수 있는 페이지가 이미 구성되어있다. - ![그림8](https://theorydb.github.io/assets/img/envops/2020-04-20-envops-blog-how-to-register-google-adsense-8.png) - -* 해당 파일 3개를 열어 `data-ad-client` 속성값을 아래 그림과 같이 위에서 본인이 부여받은 애드센스 id로 입력해준다. 각 파일별로 수정해야 할 부분이 2군데 존재한다. - ![그림9](https://theorydb.github.io/assets/img/envops/2020-04-20-envops-blog-how-to-register-google-adsense-9.png) - ![그림10](https://theorydb.github.io/assets/img/envops/2020-04-20-envops-blog-how-to-register-google-adsense-10.png) - ![그림11](https://theorydb.github.io/assets/img/envops/2020-04-20-envops-blog-how-to-register-google-adsense-11.png) - -* 다시 위의 화면으로 돌아가 `코드를 사이트에 붙여넣었습니다.` 부분에 체크한 후, 완료 버튼을 누르면 아래와 같은 메시지를 볼 수 있다. - ![그림6](https://theorydb.github.io/assets/img/envops/2020-04-20-envops-blog-how-to-register-google-adsense-6.png) - ![그림7](https://theorydb.github.io/assets/img/envops/2020-04-20-envops-blog-how-to-register-google-adsense-7.png) - -* 승인이 완료될 때까지 기다린다. 일반적으로 승인에는 1일 ~ 14일 정도 소요되며 승인될 경우 위에서 신청했던 이메일로 축하 메일이 도착한다. - -## 승인 후 절차 ---- -* 승인이 완료되면 `Congrats!` 메일이 도착한다. `Get started` 버튼을 클릭한다. - -* 광고 선택 등 원하는 옵션을 설정하면 블로그에 광고가 게재되는 것을 확인할 수 있다. - -* 블로그에 광고가 나오지 않거나 광고의 위치 및 종료 등을 바꾸고 싶을 경우 위 `애드센스 소스코드 적용` 항목의 3개 파일들을 본인이 원하는 형태로 조정해주면 된다. - -* 그 외 광고 코드를 수정하고 싶거나 디스플레이 광고 단위를 변경하는 등의 세부 조정을 원할 경우 아래 AdSense 고객센터의 매뉴얼을 참고하기 바란다. - + [반응형 광고 코드 수정 방법](https://support.google.com/adsense/answer/9183363?hl=ko) - + [디스플레이 광고 단위 만들기](https://support.google.com/adsense/answer/9274025?visit_id=637229849626433504-2364562223&rd=1) - -> 필자의 경우 본 포스팅을 작성하는 시점에 애드센스를 신청하였기에 승인되는대로 포스팅을 업데이트 할 예정이다. - - diff --git a/_posts/2020-04-22-review-book-sinagong-korean-history-proficiency-test.markdown b/_posts/2020-04-22-review-book-sinagong-korean-history-proficiency-test.markdown deleted file mode 100644 index a73a1b8c0..000000000 --- a/_posts/2020-04-22-review-book-sinagong-korean-history-proficiency-test.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: post -title: "[리뷰] 2020 시나공 한국사능력검정시험 막판기출 심화(1,2,3급)" -subtitle: "2020 Korean History Proficiency Test by Sinagong" -categories: review -tags: review book korean history test -comments: true ---- - -> `길벗` 출판사 `"2020 시나공 한국사능력검정시험 막판기출 심화(1,2,3급)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-04-22-review-book-sinagong-korean-history-proficiency-test-1.jpg) - - -필자는 지금까지 1급 및 2급 총 두번에 걸쳐 한국사능력검정시험에 합격하였다. 어떤 시험이든 수험서의 리뷰는 합격자가 검토하는 것이 독자분들께 많은 도움이 될 수 있다는 생각으로 총 2회에 걸쳐 고급 레벨에 합격할 수 있었던 나만의 방법을 되짚어보며 본 도서에 대한 리뷰를 진행하려한다. - -한국사능력검정시험에 `반드시 합격하기 위한 필살기`는 무엇일까? - -사람마다 의견이 다르겠지만 필자의 경우 `입체적인 학습 방법`이 가장 중요하다고 생각한다. 그렇다면 입체적인 학습 방법이 뭐냐? 아래 그림을 보자. -![입체적인 학습](https://theorydb.github.io/assets/img/review/2020-04-22-review-book-sinagong-korean-history-proficiency-test-2.jpg) - -(가),(나)의 나라를 찾고 해당 나라에 대한 설명으로 옳은 것을 고르는 문제다. 소단원 제목에서도 알 수 있듯 문제의 배경은 고대 국가가 생성되던 시기이다. 당시 한반도에는 상당히 많은 나라가 존재하는데 문제에 해당되는 옥저, 동예, 부여, 삼한(마한, 진한, 변한), 고구려, 신라, 백제가 존재하며 우리나라는 아니지만 인근에 낙랑, 대방 등 한4군의 잔재들도 남아있던 시기이다. - -이 시기에는 나라가 많은것이 출제 포인트가 된다. 즉, 이렇게 많은 국가들의 당시 풍속이나 풍습만 예를 들어도 옥저의 민며느리제, 고구려의 데릴사위제, 동예의 책화 등 나라별로 한 두가지의 풍습이 존재한다. - -과거 초중고 시절에 통하던 단편식 암기로는 시험을 합격하기 어렵다. 예를 들어 옥저의 민며느리제 하나만 확실히 암기해서는 정답을 고르기 어렵다. 나라별로 하나씩 외울 것이 아니라 `풍습이라는 주제를 하나 정해두고 나라별로 전부 외워야 하는 셈`이다. 마찬가지로 `풍습 뿐만 아니라 법률(형벌 등), 특산물, 지도계층의 칭호, 위치` 등 하나의 주제에 각 나라들이 입체적으로 연결되도록 학습을 해야한다. - -그래야만 위 그림과 같은 문제에서 정답을 맞추기 쉬워진다. 입체적으로 암기하면 또 하나의 장점이 생긴다. 일단 비교가 가능하기 때문에 머리속에 연상이 쉽고 암기에 의존하지 않아도 쉽게 이해된다. 더불어 완벽하게 외우지 않아도 연결고리를 입체적으로 살피다보면 외우지 못한 한 두개쯤은 찾아낼 수 있는 여지도 생긴다. 문제 유형이 어차피 객관식 5지 선다이기 때문에 퍼즐 조각처럼 채워진다. - -입체적인 학습 방법이 중요한 예를 더 들어보자. 예를 들어 토지제도만 해도 그렇다. `녹읍, 관료전, 정전, 역분전, 전시과, 녹과전, 과전법, 시정전시과, 개정전시과, ..` 정말 많은 토지제도가 우리의 역사에 존재해 왔다. 그런데 토지제도의 정의 정도만 알아서는 역시 합격하기 어렵다. `전직, 현직, 관리, 인품 등 지급대상, 그리고 수조권등의 개념` 등 토지 제도별 세부 특성도 알아야 한다. - -이렇게 장기간에 걸친 변화에서 가장 중요한 것은 `시간`이다. 즉, 녹과전이 시행되던 시기의 법률이나 풍속 혹은 창작물 등을 맞추라는 식으로 입체적으로 연계된 문제가 나온다. - -마찬가지로 1880년도 이후 광복까지의 시기 또한 그러하다. 을사조약이 있던 시기에 `전신주가 도입되었는지, 서간도 혹은 북간도에 어떤 독립운동이 일어났는지, 한성신문이 발간되었는지, 육영학교가 설립되었는지` 등을 물어본다. 이러니 단편적 암기로는 절대 합격율을 높일 수 없다. 즉, 머리속에 최소 `시간별, 주제별 2가지 키워드`를 중심으로 입체적으로 서로 연결고리가 이어져 있어야 하는 것이다. 실제로 이런 방법이 이해도 빠르고 2차원의 표로 직접 정리해가는 과정에서 거의 대부분 암기가 된다. - -때문에 필자는 한국사능력검정시험의 수험서를 고를때 입체적으로 얼마나 잘 구성되어있는지를 본다. 위의 문제를 빨간펜으로 해설한 부분을 보면 각 국가별로 다양한 풍속, 풍습이 등장하여 입체적으로 학습할 수 있음을 알 수 있다. 더불어 아래 그림과 같은 선택지 분석을 통해 당장 풀고있는 문제에 언급이 되지 않을지라도 유사한 과거 기출 분석을 통해 등장했던 지식들도 연계하며 입체적으로 엮어준다. -![선택지분석](https://theorydb.github.io/assets/img/review/2020-04-22-review-book-sinagong-korean-history-proficiency-test-4.jpg) - -앞서 타임라인의 중요성을 언급했는데 본 도서 역시 아래 그림과 같이 시간의 흐름을 중요시 한다. -![연표](https://theorydb.github.io/assets/img/review/2020-04-22-review-book-sinagong-korean-history-proficiency-test-3.jpg) - -마찬가지로 현대의 각 정권별 통일을 위해 어떤 노력을 했는지 주제별로 정리한다. -![통일노력](https://theorydb.github.io/assets/img/review/2020-04-22-review-book-sinagong-korean-history-proficiency-test-5.jpg) - -사실 한국사능력검정시험을 학습하는데 있어 본 도서와 같이 입체적으로 지식들이 연결되어 있기만 하면 다른 요소들은 별로 중요하지 않다. 그럼에도 본 도서는 벼락치기에도 합격률을 최고로 높이고자 막판 기출 7일 분량의 핵심 엑기스를 담았으며, 심화공부 소책자, 친절한 오답해설, 키워드 학습법 등 학습 효과를 높이기 위한 다양한 장치가 마련되어있다. - -이런점에서 필자는 본 도서에 합격점을 주고 싶으며, 경험상 최단 기간내에 가장 합격 확률을 높일 수 있는 좋은 선택이 될 것이라 생각한다. - -* [책소개 - 2020 시나공 한국사능력검정시험 막판기출 심화(1,2,3급) 7일 기출문제집](http://www.yes24.com/Product/goods/89784594) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. diff --git a/_posts/2020-04-23-review-book-targeted.markdown b/_posts/2020-04-23-review-book-targeted.markdown deleted file mode 100644 index 6655cd2ee..000000000 --- a/_posts/2020-04-23-review-book-targeted.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: post -title: "[리뷰] 타겟티드" -subtitle: "Targeted" -categories: review -tags: review book targeted facebook like Cambridge Analytica -comments: true ---- - -> `한빛비즈` 출판사 `"타겟티드 : 당신이 누른 ‘좋아요’는 어떻게 당신을 조종하는가 (브리태니 카이저 저/고영태 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-04-23-review-book-targeted-1.jpg) - - -* __케임브리지 애널리티카 (Cambridge Analytica) 사건__ - 본 도서를 이해하기 위해서는 먼저 케임브리지 애널리티카 사건에 대해 알아야한다. 2018년 3월 세계를 들썩이게 한 사건으로 국내에도 이미 많은 사람들이 언론의 보도를 통해 접했다. 페이스북이 점점 유튜브, 인스타그램, 팟캐스트 등 다른 SNS에 비해 점점 위상이 밀리고 있는 결정적인 이유이기도 하다. - - 당시 보도에 따르면 페이스북에서 `무려 5000만명의 개인 정보가 영국의 케임브리지 애널리티카라는 회사에 넘어갔다고 알려졌고, 유출된 개인 정보는 영국의 브렉시트, 2016년 미국 대선 등 정치 공작에 사용`되었다고 알려졌다. 이로 인해 페이스북은 창립 이래 최대 위기를 맞기도 했다. - - 구체적으로 정보가 어떤 경로를 통해 유출된 것인지, 도널드 트럼프 대통령의 당선에 얼마나 많은 영향을 미친것인지, 영국의 EU탈퇴에는 어떤 개입을 한 것인지 매우 궁금한 부분이 많았으나 거물들 간의 속내를 일반인이 알 수 있는 길은 요원하다. - - 그런데 `케임브리지 애널리티카에서 3년 이상을 근무하며 위의 사건들과 연관된 핵심 업무를 수행했던 브래티지 카이저가 이 모든 전말을 담고 있는 책을 한권 출간하는데 그 책이 바로 이 도서`이다. 그녀는 서문에서 케임브리지 애널리티카에 입사하게 된 과정부터 그들이 어떻게 광범위한 유권자들의 심리를 공작했는지를 밝히며 내부 고발자가 되어 저지른 잘못의 일부라도 만회하고자 책을 저술했음을 밝힌다. - -* __서양 엘리트 상류층들의 거래, 협상, 대화를 엿볼 수 있는 기회__ - 본 도서의 핵심 내용은 대부분 `개인 정보의 유출과 그로인한 인권 침해`에 대해 다루고 있지만 그 외에도 요소요소 볼만한 백미들이 듬뿍 담겨있다. 그 중 하나가 바로 `엘리트 및 상류층, 권력층 사이에 오고가는 대화, 협상, 거래 등 현장감을 담은 생생한 커뮤니케이션` 과정이다. - - 이를 통해 우리는 평소 듣기 힘든 권력층 사이에 이루어지는 커뮤니케이션을 엿보는 기회를 얻을 수 있다. 브리태니는 거의 모든 과정을 진솔하고 구체적으로 저술했기 때문에 흥미롭게 내용에 빠져들 수 있음은 물론 탁월한 협상 기법이나 원하는 것을 얻고자 하는 방법 등 다양한 스킬을 배울 수 있는 기회를 제공한다. - -* __영화 뺨치는 스케일__ - 브리태니가 처음으로 협상을 따낸 나이지리아 권력자와의 정치공작 건을 시작으로, EU 역사상 유례없던 브렉시트, 도널드 트럼프 대통령과의 대화 및 당선 과정 등 세계 최고의 거물들과의 협상을 비롯해서 미국 전 국민의 개인정보 수집 과정까지 시종일관 소설을 읽는 것인지 현실의 팩트를 읽는 것인지 분간하기 힘들 정도였다. - - 그만큼 책이 독자를 빨아들이는 몰입도가 강해서 시간가는 줄 모르고 단기간 내에 책을 덮을 수 있었다. 아래 그림은 `50개국이 넘는 나라의 정치 공작에 관여한 케임브리지 애널리티카와 계약을 체결한 고객들의 분포도`이며 이를 통해 본 도서가 다루는 스케일이 어느 정도일지 가늠될 것이다. - ![케임브리지 애널리티카 분포도](https://theorydb.github.io/assets/img/review/2020-04-23-review-book-targeted-2.jpg) - -* __저자의 생동감 넘치는 내면과 일상__ - 책의 전반에 걸쳐 저자는 권력층의 개인정보 활용으로 부터 인권을 지키기 위해, 과거 자신의 잘못을 만회하기 위해 본 도서를 저술했다는 메시지를 전한다. 하지만 그녀가 내부 고발자가 되기까지의 결정적인 요소는 케임브리지 애널리티카 오너인 알렉산더와의 갈등이 주 원인이 아닌가 싶기도 하다. - - 보통 대의를 위해 책을 출간했다면 개인의 사적인 판단과 감정은 몰래 숨겨둘 법도 한데 그녀는 그 모든 과정을 여과없이 진술하게 서술하고 있다. 가족들의 생계를 위해 일을 처음으로 시작하고, 남자친구와 시시콜콜한 데이트를 하는 장면, 부친이 수술하며 심적으로 고생한 사연 등 개인적으로 밝히고 싶지 않은 사건들과 그로인한 심경의 변화를 최대한 자세히 언급한다. `이런 진솔한 기록들이 한 개인의 심리를 들여다 보게 해주고 대외적으로 연결됨으로서 당시의 상황이 명확하게 이해되어 이 또한 읽는 재미`를 가져다 준다. - -그 외 내부 고발자로 변모하며 불안했던 심경의 고백, 데니얼 엘즈버그 등의 선례를 통한 자신의 위험 정도를 파악하고 미래를 대처하는 모습 등 `보통 배짱이 두둑하지 않고는 일반인들은 움직일 수 없는 처신`, 수많은 유권자의 데이터가 수집되기까지의 과정, `축적된 개인정보를 모델링하여 어떤 방식을 통해 정치 공작에 활용되었는지` 등 앞서 언급한 흥미유발적인 요소 외에도 이 책은 제법 많은 인사이트 및 지식을 얻게 해준다. - -때문에 AI, 데이터 사이언스에 관심이 많은 학자, 전문가는 물론 기획자, 정치인, 법률 종사자에 해당하는 독자분들 또한 제법 유용한 인사이트를 얻을 수 있는 기회이므로 반드시 일독을 권하고 싶다. 그 외에도 본인의 개인정보가 어떻게 악용될 수 있는지 궁금한 분들, 하다못해 지식이 필요없어도 왠만한 소설과 영화보다 재밌게 빠져들 수 있는 몰입을 경험하고 싶은 독자분들께도 추천을 권한다. - - -* [책소개 - 타겟티드 : 당신이 누른 ‘좋아요’는 어떻게 당신을 조종하는가](http://www.yes24.com/Product/goods/89584352) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. diff --git a/_posts/2020-04-24-review-book-how-to-win-friends-and-influence-people.markdown b/_posts/2020-04-24-review-book-how-to-win-friends-and-influence-people.markdown deleted file mode 100644 index f2ce55d58..000000000 --- a/_posts/2020-04-24-review-book-how-to-win-friends-and-influence-people.markdown +++ /dev/null @@ -1,84 +0,0 @@ ---- -layout: post -title: "[리뷰] 초판본 인간관계론 : 1937년 오리지널 초판본 표지디자인" -subtitle: "How to Win Friends and Influence People" -categories: review -tags: review book 인간관계론 친구 사람 관계 영향 win friends influence people -comments: true ---- - -> `미르북컴퍼니` 출판사의 `"초판본 인간관계론 : 1937년 오리지널 초판본 표지디자인"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-04-24-review-book-how-to-win-friends-and-influence-people-1.jpg) - -지금 본 글을 보고 계신 분들은 이 짧은 리뷰를 조금이라도 꼭 읽어주셨으면 좋겠다. 행복해지고 싶다면 혹은 사람때문에 괴롭거나 힘들다면 이 책은 `당신의 인생을 조금이라도` 반드시 바꿔줄 것이다. - -* __인간관계론을 읽어야 하는 이유__ - + 전 세계적으로 `6,000만부 이상`이 팔린 베스트 오브 베스트셀러. - + 이 책이 만들어지기까지1 - 이론적배경 - - 고대 철학자들과 현대 심리학자들의 `논문, 위인들의 자서전 및 전기, 신문 컬럼, 잡지, 가정법원 기록, 그 외 1년 반 동안 여러 도서관의 모든 자료`들을 빠짐없이 탐독. - + 이 책이 민들어지기까지2 - 실증적 실험 - - 15년간 강의를 통한 `실제 수강생과의 실험 및 피드백`을 통해 완성. - - 이 책은 `엽서`만한 종이에 몇가지 원칙을 인쇄하는 것에서 출발하여 > `조금 더 큰 카드 > 낱장 인쇄물 > 소책자 > 그리고 본 도서`로 완성되었다. - + 기술분야조차도 15%만이 전문지식으로 성공했으며, 나머지 85%는 인간관계로 성공했음은 인간관계가 우리에게 시사하는 바가 크다. - -* __책의 `3장까지 읽고서도 발전이 없으면` 이 책이 완전히 실패했다고 인정하겠다.(데일 카네기의 서문 中)__ - 이 처럼 호기로운 장담은 여타 다른책에서는 찾아보기 어렵다. 그만큼 저자는 자신의 책에 상당한 자신감을 갖고 있다는 반증인데 과연 사실일까? 시간이 없는 분들을 위해 적어도 3장까지는 읽은 내용을 요약해 드리고자 한다. - - + 상대방에 대한 `비난`을 삼가라. - > 1931년. 살인자 쌍권총 크로울리는 면허증 검사를 요구하는 경찰관을 총으로 사살했으나, 자신은 선한 마음을 가진자로 어느 누구도 해치고 싶지 않다고 말했다. - > 악명높은 갱단의 두목 알카포네는 스스로를 다른 사람에게 즐거움을 주는 독지가라고 평했다. - > 인간은 아무리 나쁜짓을 저지르더라도 남을 탓하지 자신을 탓하지 않는다. - - 우리나라에도 "제 탓, 못되면 조상 탓"이라는 속담이 있듯이 주위의 모든 사람들이 비난해도 상대방은 자신의 잘못을 인정하지 않는다. - - 사람은 감정의 동물이고 편견에 가득 차 있으며, 자존심과 허영심에 자극을 받아 행동한다. - - 하느님도 사람이 죽기 전까지는 심판하지 않으신다. - 새뮤얼 존슨 - - 다른 사람을 개선시키는 것보다는 자신을 개선시키는 것이 낫다. - - 즉, 당신이 `아무리 비난하여도 상대방은 당신이 원하는대로 변하지 않으며 오히려 역효과`를 불러올 뿐이다. 자존심 때문에라도 자기 주장을 굽히지 않기 때문이다. - - + 누군가에게 `무엇인가를 시키고 싶다면` 어떻게 해야할까? - - 상대를 인정받을 만한 인물로, 위대한 인물 여긴다. - * `인정받는 인물이 되고픈 욕망`, 위대해지고 싶은 욕망 (사람과 동물의 가장 중요한 차이점) - > 리처드 제독은 남극 탐험 시 각 빙산들에 자신의 이름을 붙이는 조건으로 백만장자들의 자금을 지원받을 수 있었다. - - 상대방에 대해 알 수 있는 최고의 질문은 `당신이 언제 존재 가치를 느끼는지` 묻는것이다. - > 현실에서 이루기 어려운 존재 가치를 인정받기 위해 정신 이상자들이 실제로 미쳐버릴 정도라면, 평범한 사람들을 인정해줌으로써 당신과 내가 이룰 수 있는 기적은 어느 정도일까? - - 그 일을 하고 싶게 만들라. 상대에게 원하는 것을 주는 것만이 유일한 방법이다. - * 즉, 상대가 원하는 것을 할 수 있게끔 마음속에 강한 욕구를 불러일으켜라. - -* __전반적인 내용에 대한 소개__ - 위에서 언급한 3장까지의 내용은 이 책의 요약본이라고 봐도 무방하다. 1 ~ 3장을 엮은 Section1의 제목 또한 `사람을 다루는 데 필요한 기본 원칙`으로 Section2 ~ 6에서 이어질 대전제이다. Section1이 책에서 말하고자 하는 사람을 다루는 `전략`이라 한다면, 이어질 내용들은 전략을 상세히 언급하는 `전술`이라고 할 수 있다. - - 전술 부분에는 `타인의 호감을 얻는 비결, 설득하는 비결, 상대를 변화시키는 비결, 행복한 가정을 만드는 비결`을 차례로 다루고 있다. 전체적인 구성은 사례 중심으로 되어있으며 위대한 위인들이 실제 일상에서 겪었던 실화와 15년 간 강의에 참석한 청중들의 일종의 실험(?)들로 구성되어 있다. - - 덕분에 책의 내용이 재미있게 술술 읽혀짐은 물론이고, 저자가 말하고자 하는 대원칙이 사전적인 의미가 아닌 삶에 녹은 진정한 의미로 와 닿을 수 있도록 `수많은 사례속에 독자를 뛰어들어 생각하고 판단`하게 한다. - - 실제 위에서 요약한 Section1은 새로운 것이 아닌 일상에서 누구나 한번쯤 생각해 본 것들이다. 다만 위의 대원칙이 그동안 우리 삶에서 큰 포션을 차지하거나 영향력을 발휘하지 못했다면, 우리는 그 속에 `숨겨진 진정한 의미를 모르거나 일상생활에 적응하기 위한 방법을 몰랐음`을 의미할 것이다. - - 누군가 주위에서 "상대를 비난하지 말라"라고 말한다면, 대부분의 사람들은 "아이고, 성직자 나셨네.", "남이 나를 비난할때도? 날 지금 호구로 보는건가?" 등의 반응을 보일 것이다. - - 하지만 저자가 언급한대로 한 단계 더 들여다본다면 비난이 우리에게 주는 이득이 아무것도 없다는 사실을 깨닫게 된다. 되려 상대방의 자존심때문이라도 반감을 가지고 내가 원하는대로 움직이지 않을것이 자명하다. `정말 간단한 이치인데 우리는 대부분 그것의 중요성을 모르고 살아간다.` - -* __책의 효과를 최대한 얻기위한 9가지 제안__ - 구슬이 서말이라도 꿰어야 보배이듯 저자는 본 도서를 읽고 반드시 `실천`할 것을 강조한다. 벌써 필자는 저자의 제안을 한가지 어겼다. 책의 내용이 너무 흥미진진하여 주말 하루동안 전부 다 읽어버린 것이다. - - 책을 열심히 부지런히 읽고도 양심에 찔리는 몇 안되는 신기한 경험이다. 9가지 제안 중 2번째 제안은 빠르게 읽지말고 각 장을 돌아가서 정독하라고 되어있기 때문이다. - - 그 외에 9가지 제안의 핵심내용을 요약해 본다. - + 이 책을 읽기 전에 필요한 준비물은 `사람을 다루는 자신의 능력을 향상시키고자 하는 강한 결의`이다. - + 각각의 제안을 `언제, 어떻게 활용할 수 있을지` 자신에게 물어보라. - + 매달, 매년 `계속` 읽어라. 분명하게 기억하는 유일한 방법이다. - + 주위 사람에게 `이 원칙을 어길때마다 벌금을 내겠다`고 제안하라. - + 책을 읽고 거둔 성공을 `기록`하라. `이름, 날짜, 결과` 등 구체적으로 작성하라. - -* __마치며__ - 우리는 평소 누군가로 인해 괴로울 때 친한 사람들과 수다를 떤다. 술을 한잔마시며 얘기하기도 하고, 혼자 분에 못이겨 스트레스를 풀기도 하고, 직장을 때려치는 등의 방법으로 영원한 거리감을 두고 보다 심각한 경우 정신병원을 찾거나 더 심각한 경우 세상과 등지기도 한다. 이처럼 `사람에게 있어 최고의 문제는 사람`이다. - - 이렇듯 우리는 일상 시간의 대부분을 사람과의 관계에 대한 수다로 소모하지만 정작 이를 다루는 책은 멀리한다. 이미 수많은 사람들의 얘기를 다루고 해결책까지 제시해주고 당신을 행복하게 만들 좋은 책이 기다리고 있는데도 말이다. 적어도 이 멋진 솔루션은 상사 욕하느라 주점에서 지불한 술값에 비하면 아주 저렴하다. - - 본 도서는 양장본이다. 두꺼운 표지 덕에 자주 읽어도 책의 손상이 발생할 일이 없으며, 1937년의 고즈넉한 디자인의 표지덕에 잠시 모든것을 잊고 시간 여행을 다녀온듯한 느낌도 든다. 종이의 재질이 부드럽고 특유의 종이의 냄새덕에 넘기는 재미가 있고, 밑줄과 메모가 매우 잘 써져 기분이 좋다. 전체적으로 책의 외형적인, 디자인적인 측면도 마음에 들었다. - - 정신없이 책을 읽고 마지막 장을 덮고 참 많은 생각을 했다. 이 책에서 언급한대로 바로 실천에 들어갔는데 첫 대상은 바로 아내였다. 실천에 어려움이 있으나 그 과정에서 나는 그동안 느끼지 못했던 `행복이 곳곳에 보물찾기 하듯 많이 숨겨져 있다는 사실, 그리고 아내가 이 책 덕분에 웃음이 늘었다는 사실`을 경험했다. 제법 실천에 숙달된 앞으로의 내 미래를 생각하며, 그리고 끝까지 읽어준 당신이 누군가와 행복할 미래를 기대하며 리뷰를 마친다. - - -* [책소개 - 초판본 인간관계론 : 1937년 오리지널 초판본 표지디자인](http://www.yes24.com/Product/goods/89850541) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. diff --git a/_posts/2020-04-25-review-book-writing-books-for-ordinary-people.markdown b/_posts/2020-04-25-review-book-writing-books-for-ordinary-people.markdown deleted file mode 100644 index 7937ae37a..000000000 --- a/_posts/2020-04-25-review-book-writing-books-for-ordinary-people.markdown +++ /dev/null @@ -1,144 +0,0 @@ ---- -layout: post -title: "[리뷰] 보통 사람을 위한 책쓰기" -subtitle: "Writing books for ordinary people" -categories: review -tags: review book writing book ordinary people -comments: true ---- - -> `덴스토리(DENSTORY)` 출판사의 `"보통 사람을 위한 책쓰기(이상민 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-04-25-review-book-writing-books-for-ordinary-people-1.jpg) - -언젠가 반드시 내 책을 한편 쓰고싶다는 생각. 본 리뷰를 작성하는 필자는 물론 누구나 한번쯤은 드는 생각이다. 책을 쓰는것은 정말 쉽지 않다. 저자가 강조하듯 융합적 사고력, 이해력, 암기력은 물론 독자에게 도움이 될 수 있는 내공이 있어야 한다. - -그럼에도 본 도서가 보통 사람도 책을 쓸 수 있다고 강조하는 것은 책의 저술이 그만큼 내공이 낮아도 쓸 수 있다는 의미가 아니라, 미리 노력하고 준비해야 할 것들을 충실히 이행할 수 있다면 그리고 약간의 자신감을 가질 수 있다면 능히 보통 사람도 책을 저술할 수 있다는 것을 뜻한다. - -본 도서를 통해 보통 사람이 책을 쓰기 위해 어떤 것들을 준비해야 할지에 대한 명확한 전략, 알아야 할 정보, Tip 등 구체적인 방법을 아래와 같이 요약해본다. - -* __보통 사람을 위한 자신감__ - + 학벌, 경력이 중요한 것이 아니다. - > <미생>의 핵심 주제는 직장 생활임에도 윤태호 작가는 직장생활 경험이 하루도 없다. - > <익숙한 것과의 결별>의 저자 구본형은 경영학 박사 학위나 사업 경험이 없다. - - 저자 역시 학력, 경력이 변변치 않은 보통사람이지만, 현재 글쓰기를 가르치고 있으며 임원, 교수, 박사, 하버드생도 글쓰기를 배우려 찾아온다. - - 그럼에도 10권의 책을 저술하여 베스트셀러 1위, 문광부 세종도서 선정 등의 영예를 안았다. - -* __보통 사람이 책을 쓰기 위한 조건__ - + 쓰고자 하는 절박함(동기부여)의 중요성 - > "사람들은 도전에 직면해서야 비로소 자신이 가지고 있는 잠재력을 발견하게 된다." - 코피아난 - - 힘이 들어야 제대로 된 책이 나온다. 잘나갈 때는 사람을 내려다 보게 되므로 최악의 책이 나온다. - - 잠재력은 깨울 필요가 있을 때 폭발한다. (정약용은 귀양 생활에 명저를 탄생시켰다.) - - 성실히 산 사람의 글은 문장이 다르다. 문장 속에서 뜨거움이 느껴진다. - - 사람들이 책을 쓰는 이유 - * 종신고용 개념이 붕괴되고 자기 브랜딩이 중요한 현 시점 책은 브랜드의 가치를 높힌다. - * 승진을 위해, 이직을 위해, 사업을 위해 - - 하고 싶은 것이 있다면 지금 해야 한다. - * 박사가 된 후에, 부자가 된 후에 책을 쓰려니 다른 세상이 눈에 들어오거나 혹은 체력이 부족해서 결국 영원히 쓰지 못하는 것이다. - -* __책을 쓰기 위한 구체적인 전략__ - + 주제 선정 - - 하늘 아래 새로운 것은 없다. - - `착안` : 직업, 전문가 여부, 특별한 경험, 성취 경험, 앞으로 하고 싶은 일, 특기, 취미, 나만의 차별화 요소, 공유하고 싶은 일상이 있는가?, 내 삶이 위로가 될 수 있을까?, 사는(살아갈) 장소, 돈에 구애받지 않는다면 어떤일을 하고 싶은가?, 반드시 남기고 싶은 말이 있는가? 등 - - 자신의 인생을 표로 그려본다. : 타임라인 별 인생의 `이벤트, 수상, 직업, 관심사` - - 시중에 나와있는 주제에 나만의 이야기로 경쟁 - + 독서 주제 : `속독, 정독법, 초서법, 리뷰, 정약용 독서법` 등 무궁무진하게 차별화가 가능하다. - - + 다독과 자료수집의 중요성 - - `책, 인터뷰, 논문, 신문, 보고서, 강의, 교과서, 연구자료, 다큐멘터리` 등 - - 전문가와 대적해도 밀리지 않을 수준이 필요 - + 1권을 쓰기 위해 보통 30 ~ 100권은 읽어야 한다. - + 저자 역시 서른이 되기전 3000여권의 책을 읽었다. (다치바나 다카시다는 4만권) - + 과학분야 60권 이상을 집필한 이인식 작가 : 40대에 독서실에서 3년 간 학습 - - 전문가가 아니어도 된다. 대신 열정과 호기심이 있어야 한다. - - 모르니까 쓴다. 쓰고 나서 비로소 알게 되었다. - - + 제목, 목차의 중요성 - - 제목과 표지 : 돈 안 드는 마케팅 방안 - + 예) `어떤점이 좋을지, 알지 못하면 손해, 물러설 수 없는 매력적 제안, 브랜딩 빌리기, 타깃 독자 명확히, 시대정신 반영, 차별성, 파격적이거나 인상적, 인터넷 검색이 잘되는, 감성 vs 정보에 따른 톤` 등 - ![베스트셀러 제목](https://theorydb.github.io/assets/img/review/2020-04-25-review-book-writing-books-for-ordinary-people-3.jpg) - (출처 : 한기호 <베스트셀러 30년>) - - 출판 여부의 `80퍼센트`가 결정된다. 목차를 펼쳤을 때 사고 싶은 마음이 `5초`내에 결정된다. - - 작가의도 부각, 틈새시장, 개성과 차별화 - - 보통 소목차 40개(목차당 2.5장, 총 250페이지 정도) - - + 독자에게 실질적으로 도움을 줄 수 있는 컨텐츠가 있어야 한다. - - 최소 3시간 이상 신체적으로 피곤함에도 읽어야 하므로 가치를 제공해야 한다. - - 대중들은 `빨리, 쉽게` 결과를 얻고 싶어 한다. - + 1년내에 5억부자 > 10년 노력 100억 부자 : 빠르다 - + 말투하나 바꿨을 뿐인데 : 쉽다 - + 나는 나로 살기로 했다 : 신경쓰지 마라. 나는 재밌게 살 것이다. - + 확실한 삶의 변화를 다짐하게 하는 책이 잘 팔린다. - - 당위적인 메시지(옳지만 당연함) 보다는 확실한 도움을 줘야 한다. - + 착하게 살자 < `정약용으로부터 배우는 공부의 기술` - - 독자에게는 창조의 중요성 보다는 창의성을 키우는 방법이 더 필요하다. - - 가치 교환의 시대. 적어도 120을 줘야 100을 얻을 수 있다. - - 컨텐츠 구성을 위한 9가지 질문 - ![9가지 질문](https://theorydb.github.io/assets/img/review/2020-04-25-review-book-writing-books-for-ordinary-people-5.jpg) - - + 독자층과 시장 - - 누가? 왜 읽을까? 어떤 도움을 받을 수 있나? 현실적인 변화가 가능할까? - + 그 사람의 시간, 돈, 인간관계, 심리상태, 고민 등 다각도 분석 - + 예) 일반 직장인, 10억미만 매출 사장, 육아, - - 구체적인 한사람을 `특칭`할 수 있어야 한다. - + 예) 엄마 -> 유대인 자녀교육 비결을 배워 자녀를 키우고 싶은 엄마 - - 가장 넓은 독자층은 왕초보다. (20%는 베스트셀러 읽지 않는다.) - + 1% 작가, 전문가 / 19% 중급자 / 80% 왕초보 - - 시장성 충족 여부 - + 사람들의 성향 분석 : `KDI, 삼성경제연구소 등의 자료로 이슈, 흐름, 트렌드` 파악 - + 1, 3, 6개월 마다 `네이버 랭킹 뉴스` 참조 - + 트렌드 분석, 비즈니스 모임, 강의에 참석 - - + SNS등 마케팅과 기획력 - - SNS 채널을 통해 강력한 마케팅력을 보유하고 있다면 승부가 가능하다. - - 온라인 채널을 구축하고 독자들과의 소통을 늘려야 한다. - - 강의 홍보 - + `강의제안서` : 도서관, 백화점 문화센터, 구청, 시청, 대기업 교육팀, 정부 기관 등 - - 저자 `본인`의 방향성 : 최종 목적지(재미? 똑똑함? 특정분야 전문가?) - -* __글쓰기를 위해 필요한 것들__ - + `독서, 정리, 공부, 메모, 관찰, 해석, 경험, 상상, 통찰` - + 주제 -> 자료수집 -> 사색과 숙고 -> 자기화 -> 집필 - + 중학교 1학년도 이해할 수 있는 수준으로 작성 - + 주제문과 목차를 중심으로 원고의 일관성을 유지 - + 너무 잘 쓰겠다고 생각하면 핵심 메시지에 대한 생각이 옅어진다. - + `이미지`가 연상되도록 써야 한다. - > 사람의 사고는 이미지를 바탕으로 표현하는 것 - 안토니오 (스피노자의 뇌 저자) - + 독창성 : 자기만의 이론을 들고 나오는 사람, 경쟁도서를 이길 수 있는 차별화, 개성과 독특함 - + 보통사람도 글쓰기를 잘할 수 있는 60가지 비결 - ![60가지 비결](https://theorydb.github.io/assets/img/review/2020-04-25-review-book-writing-books-for-ordinary-people-7.jpg) - + 긴문장은 쪼갠다 / 접속사, 수식어, 대명사 제거 - + 퇴고할 때 검토해야 할 30가지 체크리스트 - ![30가지 체크리스트](https://theorydb.github.io/assets/img/review/2020-04-25-review-book-writing-books-for-ordinary-people-6.jpg) - -* __출판사와 친구되는 법__ - + 최소 `300곳`에 이메일(책의 판권페이지에 수록)로 투고한다. - - 종합출판사 혹은 분야출판사에 어디에서 좋게 볼지 모른다. - - [한국출판인회의](http://kopus.org/) - - [대한출판문화협회](http://kpa21.or.kr/) - - [출판유통진흥원](http://www.booktrade.or.kr/) - - [서지정보유통지원시스템](http://seoji.nl.go.kr/) - + 회의 : `인세(7~10%, 전자책은 20~30%), 계약금(선인세 보통 100만원), 출판시기(2~3개월 내 좋은 조건)`, 편집과정 특이사항, 마케팅 - + 전체 책 중 20권이 판매량의 80%를 차지한다. - + 기획출판 vs 자비출판 : 출판비용(1000부 기준 1000만원), 인세, 계약금을 누가 주는지의 문제 - - 기획출판 성공률 : 0.1%(약 1000개 투고 중 1개 출판) - + 자료`인용` - - 출처표시 : 저자명, 제목, 출판사명 - - 저작권 사용료 : 출판사 도움 필요 - - 표절 : 대학 논문의 경우 1문장 기준 6단어 연속 일치 - - 너무 많은 인용도 문제 - - 사진, 그림 : 저작권 필요(인용의 개념이 아님) - + 편집자의 전문성 : 독자 vs 작가 사이에서 충분히 일반적이고 보편적인 것을 찾아내는 능력 - ![편집자](https://theorydb.github.io/assets/img/review/2020-04-25-review-book-writing-books-for-ordinary-people-4.jpg) - - -* __마치며__ - 위에서 열거한 바와 같이 본 도서는 보통사람도 책을 쓸 수 있도록 저자의 경험을 통해 자신감을 복돋워주고 동기를 부여해준다. 책쓰는 길이 그리 요원하지 않음을 진솔하게 확인시켜 준다. - - 특히 책을 쓰기 위한 전략과 글쓰기에 대한 방법론, 그 외 출판사와 계약에 대한 정보 등은 본 도서의 백미라고 생각한다. 그동안 몰랐던 정보를 다양하게 얻을 수 있어 좋았다. - - 약간 아쉬운 점이 있다면 챕터별 반복적으로 열거되는 내용이 많아 약간 산만하다. 하지만 전체적으로 계속 강조되어야 할 내용이기도 해서 읽는데 전체적으로 부담은 없었다. 책 쓰기에 대한 꿈을 가진 사람이라면 꼭 일독을 권한다. 많은 노하우와 지식을 얻게 될 것이다. - -* [책소개 - 보통 사람을 위한 책쓰기 누구나 책 쓰는 시대 : 팔리는 책을 쓰는 비법](http://www.yes24.com/Product/goods/89745030) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. diff --git a/_posts/2020-04-26-review-book-refactoring-2nd.markdown b/_posts/2020-04-26-review-book-refactoring-2nd.markdown deleted file mode 100644 index 5a88eb301..000000000 --- a/_posts/2020-04-26-review-book-refactoring-2nd.markdown +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: post -title: "[리뷰] 리팩터링 2판" -subtitle: "Refactoring: Improving the Design of Existing Code (2nd Edition)" -categories: review -tags: review book Refactoring Improving the Design of Existing Code 리팩터링 -comments: true ---- - -> `한빛미디어` 출판사의 `"리팩터링 2판(마틴 파울러 저/개앞맵시, 남기혁 역)"`을 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-04-26-review-book-refactoring-2nd-1.jpg) - ---- -개정판을 소개하기 앞서 약 20년전의 초판에 대해 잠깐 설명하려 한다. 2000년 초반 학부시절 어렵사리 초판을 원서로 구했다. 미학과는 거리가 멀어보이는 딱딱해보이는 S/W 아키텍처 설계에 예술같은 개념이 숨어있다는 것에 적잖이 놀랐고, 그동안 등한시 했던 철학에 대한 새로운 시각이 정립된 것은 신선한 충격이었다. - -되지도 않는 영어와 씨름하며 열심히 읽었던 덕분에 당시 국내에는 생소했던 `OOP의 다형성 및 상속구조에 대한 개념`을 동년배들에 비해 빠르게 다질 수 있어 이후의 프로그래밍 실무가 정말 편했다. - -세월이 흘러 Spring 프레임워크가 등장했을 때에도 저자 마틴 파울러의 철학이 이미 녹아있었던 덕분인지 `DI 및 IoC와 같은 커다란 변화`도 쉽게 이해할 수 있었다. - -뿐만이랴. `리팩토링 자체에 대한 실무는 물론 테스트 코드 작성, 디자인 패턴` 등 대부분의 OOP 프로그래밍에 있어 개념적으로 헤매인 기억은 없는 듯 하다. - -이렇게 초판을 구구절절 칭찬하는 이유는 `이제 중견의 나이에 접어든 한 독자가 20년에 걸친 산 증인으로 본 도서가 개발에 얼마나 많은 도움을 주었는지 언급하는 것이 후배 프로그래머들에게 제일 도움이 되리라는 판단`에서다. - -초판의 장점은 2판에 있어서도 역시 유효하다. 초판을 읽고 나름 실무의 내공이 쌓인 덕인지 2판은 정말 쉽게 술술 읽혔다. 대부분의 프로그래머라면 자질구레한 이론보다는 먼저 코드로 설명하길 원할 것이다. - -마틴 파울러는 1장부터 이론적 설명 보다는 아래 그림과 같은 예제 코드를 제시하고 직접 리팩토링이 무엇인지 느낄 수 있도록 `바로 실습부터` 진행한다. -![표지](https://theorydb.github.io/assets/img/review/2020-04-26-review-book-refactoring-2nd-7.jpg) - ---- -본 리뷰도 이를 본받아 실무에서 `이 책을 읽는 사용하는 방법`부터 설명하고자 한다. - -* 먼저 <부록B>부터 보자. 내가 맡은 프로그램에 이런 유형의 악취가 풍기면 해당절을 읽으면 된다. - - ![악취유형](https://theorydb.github.io/assets/img/review/2020-04-26-review-book-refactoring-2nd-2.jpg) - -* 첫번째 제시된 해결기법인(빨간색 네모 안)의 변수 캡슐화하기를 보면 6.6절을 참고하라고 안내되어있다. 해당절로 이동하면 직관적인 그림 하나가 눈에 들어온다. - ![해결기법 세부](https://theorydb.github.io/assets/img/review/2020-04-26-review-book-refactoring-2nd-3.jpg) - - 해당 유형의 리팩토링을 한 3번 정도 해보면 나중엔 그림만 봐도 실무에서 어떤 기법으로 리팩토링할지 바로 감이 잡힌다. 잘 기억이 안나면 그 밑의 아주 간단한 코드의 변화를 보면 거의 99% 바로 이해된다. - -* 만약 악취의 유형 자체가 이해가 가지 않는다면 3장(코드에서 나는 악취)로 넘어가 가변데이터 부분을 읽으면 이해가 된다. - ---- -다시 돌아와 `책을 읽는 방법`을 설명하고자 한다. - -`1장`은 제일 먼저 반드시 읽어야 하는 부분이고 아마 경력 1년정도 제대로 프로그래밍을 경험하신 분이라면 재미있게 2시간 정도면 읽을 수 있을거라 본다. 실무에서 `가장 자주 사용하는 리팩토링 기법`들로 구성되어 있는데 간단히 설명하면 다음과 같다. -* 반복문쪼개기 + 문장슬라이드 + 함수추출 + 변수인라인 -* 중첩함수 난무 제거 : 중간데이터 클래스 활용 -* 다형성 적용 : .js 특성을 고려해 factory 패턴 활용 - -`2장`에는 리팩토링을 적용 시 실무에서 고려할 사항 등 관련된 이론 전부가 짧은 페이지안에 다 녹아있다. 이론이 이렇게 짧은 책은 정말 처음본다. 그런데 필요한 내용은 다 들어있다. - -예를 들면 아래 그림은 브랜치에 관한 설명이다. 개인적으로 GitHub 사용하며 봉착했던 문제와 해결책이 이 반쪽에 전반적으로 다 들어있다. 이를 통해 결론적으로 리팩토링을 효율적으로 사용하기 위해 `CI + TDD 개발방식`을 추천한다는 내용이다. -![브랜치](https://theorydb.github.io/assets/img/review/2020-04-26-review-book-refactoring-2nd-6.jpg) - -`3장`은 위에서 언급했다. 악취의 유형과 맡는 방법에 대한 설명인데 이게 무슨 말이냐? 리팩토링은 `언제`해야 하는지에 대한 가이드라고 보면 된다. - -`4장`은 솔직히 감동이었다. 테스트 코드 작성의 중요성은 굳이 강조하지 않겠다. 2장에서 중요성을 언급했던 것에 대한 책임감인지 테스트 구축 방법을 안내한다. -![테스트](https://theorydb.github.io/assets/img/review/2020-04-26-review-book-refactoring-2nd-4.jpg) - -`5장`은 겨우 2페이지이므로 가볍게 읽으시면 된다. - -`6장 ~ 12장`이 본 게임인데 양이 많다고 기죽지 마시길. 괜히 처음부터 읽느라 기운뺄 필요는 없다. 실무에서 필요성이 감지되면 위에서 안내한 `이 책을 읽는 사용하는 방법`대로 진행하시면 된다. - -굳이 너무 읽고싶어 못참겠다면 먼저 그림과 코드 정도만 빠르게 읽어 머리속에 메타지도를 완성하시면 실무에 도움이 될 수 있을듯 하다. - ---- -책의 장점은 20년동안 필자를 비롯한 산증인(?)들에 의해 검증이 되었다고 요약하며 끝내고 싶지만, 읽지 않았던 분들을 위해 개인적으로 인상깊었던 부분을 간단히 짚고 넘어가겠다. - -* 리팩토링 기법도 중요하지만 사실 제일 좋은 방법은 리팩토링이 생길 여지를 주지 않는 것이다. 즉, 설계적 안목이 굉장히 중요한데 그 어떤 서적보다 빠르게 정립할 수 있다. - > (예 75p 中) "서브클래스를 언제 사용하면 좋은지 감이 잡힐 것이다." - -* 프로그램 개발 시 완성 속도는 빠를지 몰라도 거지같이 만들어서 유지보수를 힘겹게 만드는 현상을 두고 흔히들 `기술적 부채(Technical debt)`라고 한다. - -특히, 한국의 거지같은 SI 문화가 이를 지향하는데 쉽게 말해 10명이 개발해야 하는 것을 1명이 개발하는 오너의 마법이다. 파는 사람 입장에서야 단가 후려치기에 있어 최고 스킬이겠지만, 사는 사람 입장에서는 1명이 유지보수 할 수 있는 것 10명 인건비 주며 유지보수 해야하는 셈이다. - -이 책을 읽으면 이 `기술적 부채(Technical debt)`가 거의 쌓이지 않는다. - -* 속도에 대한 개념이 하나 추가된다. - + `(컴퓨터의) 연산속도 + (사람의) 개발 속도` - + 1분만에 돌아가는 100시간동안 만든 프로그램 vs 10분만에 돌아가는 10시간만에 만든 프로그램 - -* 철학에 대한 개념 재정립. - + 멀리있지 않다는 것, 정말 중요하다는 것을 일깨워 준다. (본 도서에 철학이라는 단어는 거의 등장하지 않음에도) - -* 기타의견 - + 번역의 품질이 아주 우수하다. - + 20년만의 개정판은 많은 의미를 내포한다. - - 20년 동안 쓸만했다는 것과, 20년 동안 많은 이들이 읽었다는 것(유용했다는 것), 그리고 개정판을 원하는 이가 많았다는 것 등.. - + 실습예제가 .java에서 .js로 변경되었다. - - async 및 await, promise 등의 js에 특화된 내용은 다루지 않는다. (프로그램 일반화에 초점을 맞추고 js에 초점을 맞추진 않는다.) - - 단, 구현 특성 상 덕타이핑, 최상위 클래스 제약 등은 사전에 알면 도움이 된다. - ---- -* __마치며__ - 구구절절한 말은 필요없다. 프로그래머라면, 예비 프로그래머라면, 프로그램 만들고 싶다면, 관심있다면 반드시 읽어라. - - 안 읽으면? 당신만 손해다. - - -* [책소개 - 리팩터링 2판 : 코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기](http://www.yes24.com/Product/Goods/89649360?Acode=101) - - diff --git a/_posts/2020-05-11-review-book-run-company-10.markdown b/_posts/2020-05-11-review-book-run-company-10.markdown deleted file mode 100644 index 7e7ef7bd8..000000000 --- a/_posts/2020-05-11-review-book-run-company-10.markdown +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: post -title: "[리뷰] 10인 이하 회사를 경영하는 법" -subtitle: "How to run a company with fewer than 10 employees" -categories: review -tags: review book how to a run 10 fewer company -comments: true ---- - -> `페이퍼로드` 출판사의 `"10인 이하 회사를 경영하는 법(이시노 세이이치 저/김상헌 역)"`을 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-05-11-review-book-run-company-10-1.jpg) - ---- -누구나 한번쯤은 창업을 꿈꾼다. 흔히들 창업은 사업가나 도전 정신이 강한 분들에게만 해당되는 단어일 뿐 일반인과는 거리가 먼 단어라고 생각한다. - -`제로투원`과 같은 창업 서적의 바이블들을 읽다보면 지금 내게 처한 상황에서 가장 현실적인 교훈을 하나 얻게된다. `경제적인 자유를 달성하지 못한 사람은 결코 창업에서 자유로울 수 없다`는 사실을 말이다. - -4차 산업혁명이 등장하며 산업구조도 빠르게 변하고 있고 평생 고용이라는 개념도 점차 흐릿해 지고 있는 요즘 오너의 안목을 갖는 것이 어느때보다 중요한 시기가 되었다. 배울 것은 넘쳐나고 변화는 너무도 빠른 세상속에 자신이 원하는 꿈을 이루기 위해서는 `경제적, 시간적 독립`이 점점 필요해지는 시대이다. - -그렇게 시작한 독립이 처음부터 공룡 기업일 수는 없는 법. 1인 기업에서 출발하여 작은회사에 도달하기까지 홀로 일어서기 위해 우리에겐 많은 정보와 노하우가 필요하다. - -예전부터 시중엔 대기업 규모의 회사 경영 노하우는 넘쳐났고, 최근들어 1인 기업 규모의 창업 서적이 붐을 이루고 있으나 10인 규모의 작은 회사를 경영하는 방법은 도통 찾기 어려웠다. 이러한 Missing-Link를 메워줄 서적이 등장하여 반갑게 읽게 되었다. - -![성공할 사장인가](https://theorydb.github.io/assets/img/review/2020-05-11-review-book-run-company-10-2.jpg) - ---- -본 도서를 한마디로 요약하면 다음과 같다. - -> "작은 회사의 경영 방식은 따로 있다." - -제목에서 언급된 숫자 10명의 표현이 독특하다. 왜 굳이 10명일까? - -"크리티컬 일레븐"이라는 용어가 있다. 비행기 사고의 최대 위험 순간은 이륙 후 11분, 착륙 전 11분을 의미하는 용어인데 저자는 기업 역시 직원수 10명을 기점으로 경영방식에 위기가 올 수 있음을 지적한다. - -저자는 정직원 기준 2명 ~ 19명 정도 규모의 회사를 3개 운영하고 있는 실제 CEO로 크리티컬 일레븐을 거쳐왔으며 그 과정에서 얻은 노하우와 경험을 이 책을 통해 전달하고 있다. - -머리말에서 언급하길 어느 유명 경영 세미나에 일본 유통업계의 거물의 경영 강의가 열렸는데 참석자의 대부분이 작은 회사의 사장들이었다고 한다. 평범한 일반인이 보기엔 지극히 당연하다. 아직 작은 기업을 운영하는 사장들이 더 큰 기업으로 성장하기 위해 대기업을 일으킨 산증인들의 강의가 얼마나 소중하게 느껴지겠는가. 하지만 저자는 그런 `큰 기업의 경영방식은 작은 기업에게는 오히려 독`이 될 수 있음을 지적한다. - -본 도서는 저자가 3개 회사를 성공적으로 운영하며 얻은 경험을 바탕으로 작은 회사의 성공법, 돈을 버는 법, 사람을 관리하는 법에 대해 디테일하게 다룬다. - -작은 회사를 잘 운영하던 사장이 정치가들의 꼬임에 넘어가 도산기업을 맡아 지역 사회를 일으키라는 주문 등에 무너진 사연을 예로 들며 `나라면 할 수 있다라는 자만심`에 경종을 울리는가 하면, `세상은 당신의 과거를 보고 판단한다`는 당연하지만 신선한 시각을 일깨워주기도 한다. - -개인적으로 친한 친구 혹은 지인이 술한잔 걸치며 내게 이야기 하듯 진솔하게 본인의 과거를 이야기 하며 작은 회사를 운영하는 법을 풀어나간 것이 인상적이다. 그 중 평생 기억하고 싶은 몇가지 예를 요약해본다. - -* 사장의 생각은 직원에게 그대로 전해지지 않는다. 즉, `적어도 세번은 똑같은 지시`를 하라. -* 가능한 `결재를 빨리` 처리하라. 기다리는 시간을 줄여 바로 일할 수 있으므로 인건비를 줄일 수 있다. -* 사람의 감정이 얽힌 문제에 대해서는 빠른 반응을 하지 말라. -* 개업 후 바라는 손님보다는 세일즈맨들이 줄기차게 회사를 방문하는데 귀찮아 할 것이 아니라, 그 중 고용할 만한 `옥석`을 찾을수도 있다. -* 현금으로 구매하면 반드시 값싸게 구매한다. `판매를 외상으로 하면, 구매도 외상으로` 해야 한다. -* 은행은 회사의 이익보다 사장 개인의 예금이 많은쪽을 더 선호한다. -* 일반적으로 제조업체의 이익률은 10%, 도매상은 3%, 소매상은 8% -* `사람이 빠진 구멍은 눈 깜짝할 사이에 다른 사람이 메운다.` - 괴테 -* 직원들과 반드시 소통해야 한다. 연락, 보고, 상담망을 반드시 운영한다. -* 나와 성격이 맞지 않는 사람은 조직밖으로 독립시켜 좋은 협력업체 관계를 유지하는 것도 방법이다. -* `퇴직금은 당사자가 놀랄 정도로` 많이 줘라. 남은 직원들이 숨죽이고 바라본다. - -![사람을 키운다2](https://theorydb.github.io/assets/img/review/2020-05-11-review-book-run-company-10-3.jpg) - -본 도서는 작은 기업의 사장에게는 경험을 기반으로 한 경영의 팁을, 독립을 준비하는 이들에게는 미래를 그려보며 인사이트를 얻게 해주는 책이다. - -그간 작은 회사의 경영 방법은 흔하지 않은 주제였던 만큼 경제활동에 참여하고 있는 분이라면 한 번쯤 읽어보시길 권유드린다. 많은 생각과 함께 미래를 준비할 수 있을 것이다. - -* [책소개 - 10인 이하 회사를 경영하는 법](http://www.yes24.com/Product/Goods/90048022?scode=032&OzSrank=1) - - - - diff --git a/_posts/2020-05-12-review-book-think-julia.markdown b/_posts/2020-05-12-review-book-think-julia.markdown deleted file mode 100644 index d192902a9..000000000 --- a/_posts/2020-05-12-review-book-think-julia.markdown +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: post -title: "[리뷰] 줄리아를 생각하다(Think Julia)" -subtitle: "Think Julia" -categories: review -tags: review book julia data science analyst -comments: true ---- - -> `한빛미디어` 출판사의 `"줄리아를 생각하다(벤 로언스,앨런 다우니 저 / 송한별 역)"`을 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-05-12-review-book-think-julia-1.jpg) - ---- -줄리아(Julia)는 수치해석 및 계산과학용으로 개발된 속도가 빠르고 문법도 우아한 언어이다. 사실 Julia를 처음 알게 된것은 쥬피터 노트북 이름의 어원에서였다. 왜 쥬피터인지 궁금하였는데 `Ju(Julia)+py(Python)+te+r(R)` 즉, 데이터 분석의 대표적인 3가지 언어의 약자 합성어라는 것을 알게되었다. -![Jupyter와 Julia](https://theorydb.github.io/assets/img/review/2020-05-12-review-book-think-julia-2.jpg) - -R, Python은 자주 접했지만 Julia는 대체 뭐길래 제법 유명세도 있고 데이터 사이언스 도구로서 점유율도 높은것일까? 궁금하여 일단 페이스북 그룹 [Julia Korea](https://www.facebook.com/groups/307563486035303/)에 가입하여 살펴보니 특히 성능 측면에서 큰 인기를 끌고 있음을 알 수 있었다. 쉽게 말하면 속도는 C언어인데 난이도는 Python인 셈이다. - -조금 더 깊이 파보고 싶었지만 레퍼런스도 많지 않았고 대부분의 레퍼런스가 원어로 쓰여져있어 피곤함을 느끼곤 했다. 한글로 된 도서는 거의 전무하다시피 했는데 마침 본 도서가 등장하게 되어 매우 반가웠다. - -아마 국내에서 한글로 된 줄리아 서적은 2번째인 것으로 알고 있다. 본 도서를 읽고 정리한 줄리아의 특징을 간단히 요약하면 다음과 같다. - -* C, 포트란 언어 수준으로 `속도`가 빠르다. -* `다중 디스패치`(Multiple Dispatch) - - Python과 같은 동적언어는 컴파일 과정이 없어 자료형을 미리 알 수 없어 속도가 느려진다. - - Java 등의 언어를 다룬 사람들은 익숙하겠지만 생김새가 마치 `제네릭 프로그래밍`과 유사하다. - - 이 기능을 활용하여 동적언어임에도 속도를 보장하며, `여러 프로그래밍 패턴`을 골라 쓸 수 있다. -* 모든 패키지의 저장소가 `Github`이기에 서드파티가 탄탄하다. -* `수학적 표현`을 (마치 노트에 수학공식을 쓰듯이) 거의 그대로 사용할 수 있다. - - 예를 들면, 원주율(파이)를 쓰고 싶으면 \pi라고 입력 후 TAB을 누르면 파이 수학기호가 등장한다. - - 레이텍(Latex) 노가다를 생각하면 ㅜㅜ.. -* LISP 수준의 `메타 프로그래밍`이 가능하며 `고수준 언어의 편리성`을 제공한다. - -이번에는 책을 완독하며 인상깊었던 점을 간추려본다. - -* `Think`라 불리는 독특한 구성 - - 저자는 본 도서를 Think Python의 책에서 Python을 Julia로 바꾼 책이라 표현한다. - - Think Python은 이미 Python의 초급 교재로 선풍적인 인기를 끌었던 도서이다. - - Think 방식이 개인적으로 굉장히 마음에 드는데 그 이유는 2가지이다. - + 언어의 문법만 가르치는 것이 아니라 `프로그래밍 언어론에 1:1 대응하듯이` 설명한다. - + 즉, Python만 배운 사람이 C언어를 접할때 얼마나 좌절하는지 종종 보게된다. 이런 문제에 좋은 솔루션이 될 수 있다. - + `다상량`(多商量)을 유도한다. 그냥 문법을 외우는 것이 아니라 왜 이런식의 표현을 하는지 생각하게 되는데 이를 통해 문법의 장기적인 기억에 도움이 될 뿐 아니라 처음 접하는 문법에 응용력이 생긴다. - 예를 들면 아래 그림을 참고하시기 바란다. - ![함수작성의 접근법](https://theorydb.github.io/assets/img/review/2020-05-12-review-book-think-julia-4.jpg) - ![스택 도식](https://theorydb.github.io/assets/img/review/2020-05-12-review-book-think-julia-3.jpg) -* `프로그래밍을 처음 배우는 사람`에게는 최고의 책 - - 앞서 언급한 Think 구성덕분에 이미 다른 언어를 알고 있는 사람은 더욱 쉽게 익힐 수 있을뿐더러 Julia만의 특징을 입체적으로 느낄 수 있다. - - 프로그램의 개념부터 변수, 함수, 문자열 등의 기초적인 설명을 각각 한 챕터 분량으로 설명한다. (이해가 안될수가 없다.) -* 연습문제의 수준이 훌륭한데 난이도는 크게 높지않아 능동적인 학습이 가능하다. -* 단원 마지막에 용어집이 등장하여 배운 내용을 복습할 수 있게 해준다. - -Julia 입문자 및 초보자라면 이 책을 첫 단추로 삼으면 절대 후회하지 않을 듯 하다. R, Python과의 기능 차이가 명확히 보여 혼동할 일이 줄어들고 Julia에 빠르게 적응할 수 있도록 도와주기 때문이다. - - -* [책소개 - 줄리아를 생각하다](http://www.yes24.com/Product/Goods/89643887?scode=032&OzSrank=1) - - - - diff --git a/_posts/2020-05-16-review-book-japan-economy-30years.markdown b/_posts/2020-05-16-review-book-japan-economy-30years.markdown deleted file mode 100644 index cafc98dfb..000000000 --- a/_posts/2020-05-16-review-book-japan-economy-30years.markdown +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: post -title: "[리뷰] 일본 경제 30년사" -subtitle: "Thirty Years of Japanese Economy" -categories: review -tags: review book japan economy 30years -comments: true ---- - -> `에이지21` 출판사의 `"일본 경제 30년사(얀베 유키오 저/홍채훈 역/홍춘욱 감수)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-05-16-review-book-japan-economy-30years-1.png) - ---- - -> 일본 경제는 우리 경제의 미래인가? - -20여년 전 부터 노령 인구의 증가와 내수시장의 침체, 주택시장의 붕괴 등의 측면에서 우리나라는 일본의 경제와 유사한 점이 많다는 말이 유행처럼 번졌었다. 당시 약 10년 정도의 격차를 벌여가며 일본을 따라잡고 있는데 90년대 초 일본이 그랬듯 우리도 이제 곧 일본의 전철을 밟게 될 것 이라는 우려섞인 목소리도 많았던 것으로 기억한다. - -다행인 것은 최근 우리의 GDP가 일본을 추월한 적도 있고 대한민국의 경제 성장 속도가 느려진 것은 사실이지만 여전히 조금씩 발전하고 있고, 특히 최근 코로나 발병에 대한 완벽에 가까운 통제로 OECD 국가 중 경제 성장률이 최고 수준으로 예측되고 있다는 점이다. - -그렇다면 이미 일본의 전철을 밟지 않는데는 어느정도 성공했다고 볼 수 있고 인구수나 경제구조가 완벽히 동일하지도 않다는 점, 더욱이 아베노믹스로 불리는 일본의 경제 정책이 이미 우리 노선과 다르다는 점에서 굳이 일본 경제의 미래를 되짚어 볼 필요가 있을까? - -완벽히 동일한 행보를 걷지는 않겠지만 그럼에도 그들의 과거를 짚어보는 것은 충분히 의의가 있다. 그들의 `정책이 실패했다면 그 안에서 동일한 실수를 반복하지 않기 위한 지혜를 뽑아야 할 것`이기 때문이다. - -본 도서는 가계 구성원인 우리 개개인이 살아갈 방향 혹은 경제의 어려움 속에 헤쳐나가야할 방법들을 구체적으로 제시하진 않는다. 보다 시야를 넓혀 `국가 경제 및 거시 경제에 초점`을 맞추고 있다. 과외식 쪽집게 예측 혹은 대비책을 알려주지 않는 것에 대해 약간의 아쉬움이 있을수도 있으나, 이미 그런 책들은 시중에 널리고 널렸다. - -게다가 `그 누가 정확한 미래를 예견할 수 있단 말인가.` 어차피 향후 경제에 대한 판단은 각자의 몫이기에 우리가 할 수 있는것은 여러 경제관련 서적 및 자료를 접하고 인사이트를 갖춰 대비하는 일 뿐이다. 더욱이 정책은 시간이 변할수록 살아 움직이고 변한다. 그 변화는 장기적으로 경제에 영향을 미치고 그 속에 우리가 살 길이 숨어있기에 국가 경제 정책을 파악하고 과거 선례를 분석하여 가계와 개인에게 미칠 영향력을 배워두는 것은 매우 중요한 일이라 생각한다. - -그런 점에서 본 도서의 가치를 꼽으라면 `한 국가의 거시 경제지표를 볼 줄 아는 시각을 키울 수 있다는 점, 그리고 그에 따른 정부의 정책이 잘되든 잘못되든 우리 한 몸 정도는 처신할 수 있는 혜안`을 갖추게 해준다는 점이다. - -이 책의 첫 장은 유명 이코노미스트 홍춘욱 님의 감수의 글에서 시작한다. 거시경제나 국가의 경제 정책은 일반인들에게 결코 쉬운 내용이 아닌 바 앞으로 본 도서에서 이어질 내용을 전문가의 눈으로 요약해주는 효과가 있어 내용을 미리 파악하는데 많은 도움이 되었다. - -더불어 `GDP Gap`과 같은 거시경제 지표를 친절히 설명함으로써 차후 이어질 내용에 대해 어느정도 선행 학습하는 듯한 효과를 얻을 수 있다. 아래 그림을 통해 예를 들어보자. GDP Gap과 소비자 물가 상승률 추이가 거의 비례하고 있음을 알 수 있다. -![GDP Gap과 물가](https://theorydb.github.io/assets/img/review/2020-05-16-review-book-japan-economy-30years-2.png) - -공식으로 표현하자면 `GDP Gap = 실제GDP - 잠재GDP`이 성립한다. 잠재GDP란 국가가 생산할 수 있는 Capacity를 의미하는데 이 지표가 마이너스라는 것은 생산력을 충분히 갖추고 있음에도 생산을 하지 않았음을 의미하므로 디플레 시기임을 확인 할 수 있는 것이다. 때문에 당연히 물가도 내려가게 되어 두 지표는 서로 비례 관계에 있음을 알 수 있다. - -이어지는 내용을 요약하자면 `Part1에서 주요 경제지표를 중심으로 일본의 경제가 30년 간 어떻게 변화했는지` 간단히 설명한다. 이어지는 `Part2에서는 앞서 다룬 경제상황의 변화를 정책 및 사회적 측면과 결부`지어 서술한다. - -버블붕괴를 시작으로 하시모토 내각과 고이즈미 내각이 추진했던 구조개혁이 미친 효과에 대해 집중적으로 분석하고 신랄하게 비판한다. 이어 민주당 정권이 붕괴되어 가는 과정을 서술하며 그들의 소비세 증세에 대해 비판한다. - -마지막으로 현 아베 정권의 이른바 `아베노믹스의 실패를 되짚으며 과거의 정책들을 근거로 현 정책의 문제점을 강력히 지적`한다. - -일본의 정부 부채 수준은 심각한 것이 사실이나 그럼에도 그리스와는 달리 가계에는 돈이 남아돌고 있다는 점을 강조하면서 아직까지도 일본 경제에는 강력한 힘이 있음을 강조한다. 다만 현 정책이 일본 경제의 부활을 위해 나아가야 할 방향과 거리가 멀어지고 있다는 점에 따끔한 일침을 날린다. - -본 도서 덕분에 국가 경제에 대해 바라볼 수 있는 안목이 많이 늘어난 것 같다. 더불어 `정책이 경제에 미치는 영향력`을 가시적으로 볼 수 있어서 경제 지식 수준을 높이는데 큰 도움이 되었다. 겉으로 아무 하자 없어보이는 정책 하나가 국가 경제에 미치는 영향이 얼마나 거대한지, 그 일련의 과정을 상세히 짚어볼 수 있었다는 점이 인상적이었다. - -국가적 차원에서 `재정 건전성을 높이겠다고 주장하면 일반인들 중 누가 이 정책이 잘못 되었다 하겠는가?` 단어에 내포된 건전성이라는 깨끗한 이미지만으로도 정책에 반대를 표하는 이는 많지않다. 하지만 일본은 지난 30년간 재정 건전성을 위한 구조개혁 및 소비세 인상을 단행하였고 그 결과 일본 경제의 침체는 물론 고질적인 디플레로부터 쉽게 헤어나오지 못했다. 무리한 경기 부양책은 일본 정부를 빚더미에 앉게 했으며 GDP대비 부채 수준은 OECD 다른 국가에서 좀처럼 찾아보기 힘든 수준에 이르렀다. -![금융자산구성](https://theorydb.github.io/assets/img/review/2020-05-16-review-book-japan-economy-30years-3.png) -![부채](https://theorydb.github.io/assets/img/review/2020-05-16-review-book-japan-economy-30years-4.png) - - -거시 경제를 볼 줄 아는 눈을 키우고, 그에 따른 국가 정책이 현실에서 어떤 모습으로 효력을 발휘하는 지, 나아가 우리 개개인은 앞으로 어떻게 살아가야 할지 어떤 경제적 활동을 대비해야 할지 인사이트를 얻고 싶다면 본 도서를 읽어보실 것을 권유드린다. - -* [책소개 - 일본 경제 30년사](http://www.yes24.com/Product/Goods/90179877?scode=032&OzSrank=1) - - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. - - diff --git a/_posts/2020-05-22-review-book-grow-rich.markdown b/_posts/2020-05-22-review-book-grow-rich.markdown deleted file mode 100644 index 822a179da..000000000 --- a/_posts/2020-05-22-review-book-grow-rich.markdown +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: post -title: "[리뷰] 부의 선택 (자수성가한 부자들의 또 다른 용기)" -subtitle: "Dare to Be Different and Grow Rich" -categories: review -tags: review book different grow rich -comments: true ---- - -> `위북(webook)` 출판사의 `"부의 선택(라이너 지텔만 저/서정아 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-05-22-review-book-grow-rich-1.png) - ---- -> 부는 누구를 선택했는가? 그리고 선택받은 이들은 어떤 능력을 가지고 있는가? - -저자 라이너 지텔만 박사는 이미 그의 저서 "부의 자본주의 사회주의"와 많은 강연으로 국내에도 널리 알려진 인물이다. 슈퍼리치의 심리학이란 논문으로 박사학위를 받았기에 본 도서는 탄탄한 이론적 연구 결과를 토대로 한다. 동시에 본인 스스로 상당한 부를 축적한 성공한 기업가이기에 본 도서는 실전과 이론이 모두 녹아있어 더욱 설득력을 갖는다. - -보통 이런 분야의 책을 몇 권 읽다보면 이내 실망하곤 했는데 현실에 적용하기 어려운 이론들을 열거하거나 혹은 일반화되지 않은 자신만의 특수한 상황이 담긴 개똥철학을 늘어놓는 책들이 많아서였다. 그냥 얻을 것없고 재미없으면 그런가보다 하고 넘기겠는데 따라했다가 큰 위험에 처한 적도 있어서 돈을 다루는 서적은 굉장히 신중하게 고르는 습관이 생겼다. - -반면 본 도서는 충분히 합격점을 주고 싶다. 저자의 탄탄한 연구성과 덕분일까? 다른 도서와는 달리 `관점을 뒤집어 사람이 아닌 부의 입장에서 집필된 느낌`이다. 즉, 사람 개개인의 특수성에 종속된 일시적인 특별한 상황에 처한 사람들을 위한 책이 아닌 연구를 통한 일반화를 통해 그들의 성공의 방법을 제시한다. - -세계 `1위 ~ 10위`의 부자들을 위주로 그들이 가진 공통된 능력 `17가지`를 추려냈다. 워런 버핏, 빌게이츠, 스티브 잡스가 마치 옆에 앉아서 자신의 무용담을 들려주듯 예시를 통한 흥미로운 구성 덕분인지 술술 읽힌다. 보통 책을 다 읽으려면 며칠 걸리기 마련인데 내용이 흥미진진해 하루만에 다 읽을 수 있었다. - ---- -먼저 읽은 독자로써 본 도서를 읽기 전에 3가지 준비물을 챙기시길 권유드린다. - -* __준비물 1__ : `돈에 대한 자신의 간단한 가설` - 예를 들어 개인적으로는 `돈은 부수적인 것이다. 그 자체로 목적이 되어서는 안된다. 심하게 표현하면 약간 더러운것이다.`라는 가설을 들고 책을 읽기 시작했다. 가설이 맞는지 틀리는지 책과 씨름한 결과 결론부터 말하자면 반은 맞고, 반은 틀렸다. - - 책의 16장(주로 돈에대해 다룸)에서 말하듯 우리는 대부분 돈을 부수적인 목표로 취급하는 것이 사회의 불문율인 양 살아간다. 돈을 쫓으면 마치 무식하고 탐욕한 사람으로 비춰지는 셈이다. 이 책에서 말하는 부는 성공에 의해 따라오는 보상에 불과하기 때문에 가설의 반은 맞았다고 볼 수 있었다. - - 하지만 우리가 경계해야 하는 것은 우리의 그런 인식 때문에 돈의 이미지를 자신이 성공하지 못하는 이유를 정당화하는 수단으로 여기는 경우가 많다는 것이다. 더불어 성공한 부호들은 그런 돈의 이미지를 어떤 시각으로 접근했는지 상세히 알려주어 부에 대한 인식과 태도를 다시 생각하는 계기가 되었다. - -* __준비물 2__ : `돈을 벌기위한 나만의 아이디어` 혹은 사업아이템 - 누구나 사업 한 번 쯤은 꿈꾼적이 있을것이다. 허황된 아이디어 혹은 실현 가능성이 전무한 것이라도 좋으니 예전에 생각했던 것이나 지금 들고 있는 자신만의 아이템이 성공할 수 있는지 이 책을 읽으며 검증해보면 좋다. - - 워런 버핏과 같은 성공의 대명사들의 중요한 순간마다 판단했던 일화, 근거, 철학들을 만날 수 있기 때문에 검증하며 읽을 수 있다. 단순히 옳고 그른 검증에서 그치는 것이 아니라 또 다른 멋진 아이디어를 낼 수 있도록 또 다른 검증을 위한 발판을 마련해준다. - -* __준비물 3__ : 17가지의 능력 중 `자신이 부족하거나, 잘 모르거나, 정말 궁금한 것 부터` 읽으면 좋다. - 책의 내용이 흥미롭지만 굉장히 심오하다. 세계에서 최고로 성공한 사람들의 인생이 녹아있기 때문에 평범한 개인으로서 소화할 수 있는 양이 아니다. 때문에 자신이 부족하여 당장 절실한 것 부터 채운다면 읽기도 흥미롭고 이 책을 제대로 읽는 방법을 깨닫는데 많은 도움이 될 것이다. - - 읽는 방법이 생겼으면 가볍게 한번 쭉 읽기를 권유드린다. 데일 카네기 인간관계론과 같은 느낌이라고 비유를 해야 할까? 분명 오랜 세월의 흐름속에 `그때 그때 처한 상황에 따라서 다르게 읽힐 것이고, 읽을 때마다 색다른 교훈`을 얻게 될 것이다. - - 한번에 모든 내용을 소화할 수 없기 때문에 한번 쭉 읽었던 기억의 잔상을 토대로 17가지의 능력을 인생에 적용해보면서 쉽지 않음을 느낄때 혹은 절실할 때 열어본다면 많은 지혜를 선사할 것이라 생각한다. - ---- -읽으며 가슴속에 와 닿았던 내용이 많아 배웠던 것들을 총정리해보고 싶지만, 이제 겨우 1번 읽었을 뿐이고 리뷰 특성 상 가장 감명깊었던 구절 몇 가지만 간추리며 리뷰를 마친다. - -> 다른 사람이라면 절대 하지 않을 일을 시도해야 한다. - 래리 페이지(구글) - -> 그것은 30년간의 영업 경력을 활용할 수 있는 일이었다. - 크록(맥도날드) - -> 이들은 경제적으로 불안정한 시기야말로 기업 쇼핑을 하기에 최적기라는 것을 잘 안다. - 록펠러 등 - -> 문제에 직면할 때마다 록펠러처럼 피하지 말고 받아들여야 한다. 그리고 문제에서 기회를 찾아 활용해야 한다. (절실함과 위기의 힘) - -> 부정적인 전략을 취해봤자 아무 소용없다. 경쟁사의 활동을 막는 데 에너지를 낭비한다면 아무런 소득도 얻지 못한다. - 캄프라드 (이케아) - -> 디즈니랜드에 투자하면 주간 프로그램에 디즈니가 제작한 캐릭터들을 사용할 수 있게 허락해주겠다 - 디즈니 - -> 학생에게 벌점이 무한 부과되지 않도록 제도를 수정해야 했다. -> 아버지의 훈계를 한 글자도 빠뜨리지 않고 헤럴드 사설면에 투고 - 터너(CNN)의 유년시절 - -> 학교에서의 성과와 인생의 성공사이에는 상관관계가 없다. - 데이비드 오길비 - -> 냄새나는 빌어먹을 히피 스티브 잡스를 밤에만 일하게 하자고 했다. 다른 사람의 눈에 띄지 않게 말이다. - 잡스의 취업기 -> 안된다는 말을 된다로 바꿀 만한 방법이 있을지 생각해보자. - 잡스 - -> "어떻게 해서 이 일을 시작하게 되셨나요?" 서먹할 때 쓰는 마법의 문장 - 베트거 - -> 성공한 사람들에게 불만은 강력한 원동력이다. 어떻게 하면 우리의 불만을 성공을 이끄는 원동력으로 활용할 수 있을까? 내면에 더 크고 과감한 목표를 입력하는 것이 중요하다. - 저자의 말 210p - -![끝](https://theorydb.github.io/assets/img/review/2020-05-22-review-book-grow-rich-2.png) - ---- -* __마치며...__ - 처음 책의 표지를 만졌을 때 매우 신선했다. 보들보들한 고급진 느낌이 들어 책 표지도 이렇게 만들 수 있구나 라는 생각이 들었다. 취미가 독서인지라 그래도 제법 지금까지 많은 책들을 읽었는데 이런 느낌의 표지는 처음이었다. 두꺼운 표지의 양장본보다 가치있는 느낌이 들었다. 책을 덮고 나니 마치 부의 느낌을 책 표지로 옮긴듯한 느낌이 들어 묘한 수미쌍관(?)의 만족감이 들었다. - - 책의 내용은 표지보다도 훌륭하여 개인적으로 많은 인사이트를 얻을 수 있었다. 사업가, 예비사업가는 물론이고 성공이 쉽지 않은 분들, 부에 대한 생각을 재정립하고 싶은 분들께도 추천드리고 싶다. - - -* [책소개 - 부의 선택](http://www.yes24.com/Product/Goods/90158445?scode=032&OzSrank=1) - - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. - - diff --git a/_posts/2020-05-26-review-book-leadershift-the-11-essential.markdown b/_posts/2020-05-26-review-book-leadershift-the-11-essential.markdown deleted file mode 100644 index 225c2c541..000000000 --- a/_posts/2020-05-26-review-book-leadershift-the-11-essential.markdown +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: post -title: "[리뷰] 다시 리더를 생각하다" -subtitle: "위기를 뛰어넘는 리더의 11가지 원칙" -categories: review -tags: review book leadershift the 11 essential changes leader -comments: true -header-img: img/review/2020-05-26-review-book-leadershift-the-11-essential-1.png ---- - -> `비즈니스북스` 출판사의 `"다시 리더를 생각하다(존 맥스웰 저/이한이 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-05-26-review-book-leadershift-the-11-essential-1.png) - ---- -개인적으로 본 도서를 읽게 된 계기는 [현대카드 정태영 사장이 한 고등학생에게 보낸 편지](https://blog.naver.com/businessnewsdaily/221981059923)에서 시작된다. 편지를 읽어보면 정태영 대표에게서 느껴지는 개인으로서의 인간적인 면이나 겸손함 외에도 경영에 대한 인사이트를 얻을 수 있다. - -이미 훌륭한 CEO임에도 불구하고 학부에서의 경영학 전공을 반대하는 대목이 있다. 더불어 세상이 변화하는 속도에 맞춰 리더시프트에 최선의 노력을 기울이는 모습을 그의 일상에서도 엿볼 수 있는데 현 시점 뛰어난 CEO의 세상에 대처하는 모습을 실전으로 느낀 후 본 도서를 접하게 되었을 때 일맥상통하는 부분이 많았고 덕분에 본 도서의 진가를 한 눈에 알아보게 되었다. - -본 도서는 피터 드러커가 왕으로 군림했던 시절의 경영관리에서 벗어나 격변하는 세상에 적응할 수 있는 리더시프트를 강조한다. 저자는 먼저 독자로 하여금 세상이 변화하는 속도가 얼마나 빠른지 느낄 수 있도록 아래와 같은 표현을 사용한다. - -* `기술, 소셜 미디어, 변화 속도`는 절대 느린 속도의 미래를 허용하지 않을 것이다. -* 이코노미스트 인텔리전스 유닛은 연구의 결과로 최상위 리더십 자질 세가지를 규정하는데 여기에는 모두 `적응력`이 요구된다. - + 직원들의 동기를 촉발하는 능력 : 35% - + 문화를 넘나들며 일하는 능력 : 34% - + 변화를 가능하게 하는 능력 : 32% -* 장차 기업의 `구인 활동 91%가 구직자의 변화와 불확실성을 다루는 능력`을 원할 것이다. -* 4년 안에 당신은 자기 직업에서 필요한 업무 능력 중 `30%를 새로 배워야 할 것`이다. -* 대학에서 배운 기초 훈련들의 `유효기간은 단 5년` 정도로 예상된다. - -이런 변화 속에서 살아남기 위한 리더의 대처 방안을 저자는 `리더시프트`라고 소개한다. 세부적인 방법과 전략은 11가지로 압축되는데 각 전략마다 1개의 Chapter를 할애하여 상세하게 다룬다. 이를 성공적으로 수행하기 위해 취할 수 있는 `7가지 전략`을 먼저 언급해 보겠다. - -* 1.배우고, 잊고, 다시 배우라. -* 2.어제를 소중히 여겨라. 하지만 오늘을 살아라. -* 3.속도는 중요하다. 하지만 타이밍이 관건이다. -* 4.그림이 점점 커져 갈수록 더 큰 그림을 보라. -* 5.오늘을 살아라. 하지만 내일을 생각하라. -* 6.불확실성의 한가운데서 용감하게 나아가라. -* 7.오늘의 최선이 내일의 도전을 달성하게 해 주지 않는다. - -속도와 변화에 관련된 조언들로 새로운 책을 출간하는 데 들었던 조언, 처음 리더가 된 사례 등을 예시로 들어 깊이있는 개념에 대한 빠른 이해를 도우며 미래 지향적인 사고를 현실적으로 갖출 수 있도록 도와준다. - -준비 운동을 마치고 나면 이제 본격적으로 `11가지 리더시프트 스킬`에 대해 언급한다. - -* 1.독주자에서 지휘자로 전환하라. - `초점` 시프트 -* 2.목표 달성보다 성장 자체를 중시하라. - `자기 계발` 시프트 -* 3.특권을 누리려 하지 말고 대가를 치르는 리더가 되라. - `비용` 시프트 -* 4.리더가 모든 팀원을 기쁘게 할 수는 없다. - `관계` 시프트 -* 5.익숙함에 안주하지 말고 새로움을 창조하라. - `풍요` 시프트 -* 6.조직 성장을 위한 강력한 기반을 만들어라. - `재생산` 시프트 -* 7.지시하지 말고 교류하라. - `커뮤니케이션` 시프트 -* 8.획일성에서 벗어나 다양성을 추구하라. - `개선` 시프트 -* 9.지위적 권위를 버리고 도덕적 권위를 행사하라. - `영향력` 시프트 -* 10.리더십은 배움과 훈련으로 완성된다. - `임팩트` 시프트 -* 11.커리어를 쌓는 대신 소명을 키워라. - `열정` 시프트 - -모든 장에 대해 느낀바가 있어 전부 언급하고 싶지만 리뷰라는 특성 상 큰 도움이 안 될 것이기에 이 중 감명깊게 읽었던 몇 장을 추려볼까 한다. 개인적으로 리더가 아니기에 아무래도 구성원으로서 리더가 갖춰야 할 능력에 초점을 위주로 선정한 내용임을 밝힌다. - -먼저 1장에서는 제목 중 지휘자라는 표현이 등장하듯 반가운 인물이 등장한다. 바로 한국이 낳은 세계적인 첼리스트 장한나. 그녀는 독주와 지휘의 차이를 이렇게 표현한다. -> "오케스트라가 만들어 낼 수 있는 소리에는 실상 한계가 없습니다. 저를 정말로 매료시키는 건 바로 이겁니다." -1장을 읽는 내내 리더가 갖춰야 할 최고의 덕목은 바로 이 한마디로 요약할 수 있다고 생각한다. - -이를 실행할 수 있는 자질을 갖추었는지 저자는 여러 질문을 통해 독자의 자질을 스스로 검증하게 하는데 그 중 인상적이었던 것은 `초점 시프트의 선순환 과정`이다. 아래 그림과 같이 믿음에서부터 열정에 이르기까지 리더가 갖춰야 할 자질을 간명하게 보여준다. -![초점 시프트](https://theorydb.github.io/assets/img/review/2020-05-26-review-book-leadershift-the-11-essential-2.png) - -2장은 조직의 구성원으로서 실무자로서 절실히 느꼈던 부분이다. 프로그래머를 업으로 삼고 있는 분들이라면 더욱 절실히 느끼는 부분이다. 한국의 개발 업계는 성장 자체를 중요시한다기 보다 성과를 중요시 하기 때문이다. - -예를 들면 한번 개발한 프로그램을 복사하기, 붙여넣기로 찍어내듯이 개발하는 경우가 많다. 프로그램의 내부는 서서히 곪아가고 언젠가 유연한 확장성을 확보하기 위해서는 유지보수에 많은 인력과 시간을 들여야하는 일종의 부채를 떠 안게 된다. 이를 흔히 `기술적인 빚(Technical Debt)`이라 부른다. - -찍어내기식 개발 문화 덕분에 새로운 기술에 대한 중요성도 뒷전으로 밀려난다. 성장도 마찬가지이다. 우수한 인재는 성장없는 현실에 보람을 느끼지 못하고 떠나는 악순환이 반복된다. 최근 AI가 등장하며 이제 이런 기업들은 점차 도태되고 있다. 성장에 대한 중요성을 본업에서 여실히 느끼고 있기에 뛰어난 리더라면 분명 이 점을 놓치지 않을 것이라는 점에서 책의 내용을 절실히 공감할 수 있었다. - -10장은 저자가 이 책을 통틀어 가장 중요한 장이라고 언급했기 때문에 별도로 다뤄보고자 한다. 저자는 자신만 바라보며 살다가 어떤 사람을 돕지 못했고 그로 인해 그 사람이 죽음을 맞이한 아픈 과거를 갖고있다. 뼈아픈 과거의 충격을 이겨내며 얻어낸 것이 이 장에서 강조하는 임팩트 시프트이다. - -`임팩트 시프트`란 사람들을 더 꿈꾸고, 더 배우고, 더 행동할 수 있도록 고취시킬수 있는 능력을 말한다. 이를 숙련된 리더와 변혁의 리더의 비교를 통해 설명하며, 콜롬비아 정부의 감옥에서 임팩트 시프트 능력을 가진 소수가 다수의 죄인들을 어떻게 바꿔나가는지의 사례를 통해 그 중요성을 강조한다. 더불어 이 중요한 능력을 얻기 위한 연구 결과에 대해 기술한다. - -마지막으로 본 도서를 총평하자면 리더십과 경영에 대한 내공이 탄탄한 분들이 읽을수록 더욱 큰 가치를 얻는 책이라 말하고 싶다. 현재 CEO인 분들이나 경영학과 리더십에 대한 연구를 바탕으로 깊은 이해가 가능한 분들 일수록 더욱 진가를 느낄 수 있을 것이다. 이미 기존의 경영과 리더십을 다룬 책에서 이구동성으로 언급한 가치들 보다는 `현 시점에 중요하고 필요한 가치`들이 언급되어 있기 때문이다. - -이 시대에 걸맞는 책이 또 있을까? 물론 피터드러커 등의 거장들이 집필한 과거의 명저들을 폄하하고 싶은 것은 아니다. 개인적으로 피터 드러커의 위대한 혁신과 같은 책은 10번도 넘게 읽은 것 같다. 나이가 먹어감에 따라 읽을 때마다 새로운 인사이트를 얻을 수 있었기 때문이다. 고전은 고전 자체로서 진리에 가까운 가치가 있다. - -결론적으로 고전적인 가치를 이미 습득한 내공이 탄탄한 상태에서 본 도서를 읽는다면 현재 우리에게 필요한 변화에 적응할 수 있는 시프트 능력을 온전히 흡수하고 이해할 수 있다고 생각한다. 리더가 아님에도 불구하고 감히 이런 추측을 할 수 있는 이유는 그동안 책을 많이 읽어왔기 때문이다. 그동안의 고전들이 언급한 가치를 현 시점에 맞게 재배치하고 가중치를 재부여하여 그동안 고전에서 말한 모든것들이 집대성되는 느낌을 얻을 수 있었다. - -* [책소개 - 다시 리더를 생각하다](http://www.yes24.com/Product/Goods/90311639?scode=032&OzSrank=1) diff --git a/_posts/2020-05-27-review-book-head-first-go.markdown b/_posts/2020-05-27-review-book-head-first-go.markdown deleted file mode 100644 index 1de051c70..000000000 --- a/_posts/2020-05-27-review-book-head-first-go.markdown +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: post -title: "[리뷰] Head First Go" -subtitle: "명확한 예제로 효율적인 학습법을 제시하는 Go 입문서" -categories: review -tags: review book head first go -comments: true -header-img: img/review/2020-05-17-review-book-head-first-go-1.png ---- - -> `한빛미디어` 출판사의 `"Head First Go(제이 맥가브렌 저 / 권민재 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-05-17-review-book-head-first-go-1.png) - ---- -Go 언어는 구글에서 개발한 언어로 동시성 지원이 가능하기 때문에 클라우드를 위한 언어로 불리기도 하며, [해커랭크(HackerRank)](https://research.hackerrank.com/developer-skills/2020/)의 올해 설문조사에서 개발자들 사이에 `가장 배우고 싶은 언어 1위`를 차지할 만큼 인기있는 언어이다. - -처음 Go를 접했을 때만 해도 구글 내부에서만 쓰이는 듯한 느낌, 독특한 기능들 때문에(마치 무림의 세계로 비유하면 사파 혹은 마교 같은 느낌이다.) 썩 내키지 않았는데 앞서 언급한 인기 순위나 트렌드, 그리고 사용자 비율이 계속 증가세를 보이고 있어 본 도서를 시작으로 학습하기로 결정하였고 그 결과를 본 리뷰로 남긴다. - -먼저 본 도서를 통해 배운 Go 언어에 대한 특징을 간단히 요약하면 다음과 같다. - -* Go 만의 독특한 (구글스러운?)면이 있다. - - 물론 장점일수도 단점일수도 있다. - - `현대 프로그래밍 언어론과 부합하지 않는` 경우가 많다. - + 예를 들면 Class가 없다. - - 많이 듣긴 했지만 정체를 몰랐던 `Duck Typing(덕 타이핑)` 개념이 존재한다. - + 덕분에 Class가 아닌 Struct를 통해 객체 지향을 구현한다. - + 개인적으로 C 언어의 Struct와 함수 포인터를 이용해 OOP를 구현하던 시절이 생각나서 반가웠다. - + 함수형 프로그래밍의 직관성과 효율성이 가미된 것 같은 느낌이 들어 만족스러웠다. - - `Function과 Method가 공존`한다. ~~ㅋㅋㅋ~~ - + 메소드 체이닝, 추상화, Interchangeability(교체가능성)의 개념과 밀접하다. - + 대문자로 시작하면 Function과, 소문자로 시작하면 Method이다. - + 개인적으로 효율적이라 좋았다. - -* `GoRoutine(고루틴)` 이라는 비동기 매커니즘을 제공한다. - - 메시지 채널을 이용하여 동시성 프로그래밍이 가능하다. - - C 언어 등으로 멀티스레드 프로그램을 개발해 본 사람은 동시성 구현을 위해 프로그래머가 이렇게 할 일이 없다는 것에 적잖이 놀란다. - -* 클라우드, 서버 사이드 언어로 인기가 많다. - - 분산시스템에 매우 특화되어 있다. - - `Docker나 Kubernetes`를 모르는 사람은 있어도 못들어 본 사람은 거의 없을 것이다. 바로 이것들을 만드는 언어이다. - -* `Go 언어 컴파일러`는 Go 언어로 만들었다. (덕분에 컴파일이 빨라 인터프리터 언어처럼 쓸 수 있다.) - -* C 언어와 문법이 유사하다. - - 개발자가 C 언어를 개발했던 사람 중 한명이다. - - 덕분에 `포인터`가 등장한다. ~~ㅋㅋㅋ~~ - - 그런데 본인처럼 C언어를 좋아하는 사람들은 쌍수를 들고 환영할 일이기도 하다. - (개인적으로 Java의 참조포인터, close() 메소드가 마음에 안 들었는데 어차피 포인터 개념이면서 조작이 불가하여 불편했었다.) - -* 예약어(keyword)가 25개 밖에 없어 쉽게 배울 수 있다. - -이렇듯 Go 언어는 정말 Go 스럽다. 굉장히 우스꽝스러운 모양새가 많아 배우고 구현하면서도 자주 웃었다. 구글의 개발자 문화가 반영된 것일까? 피식피식 웃으면서도 OOP와 비효율성에 대한 깊은 고민과 철학이 담겨있다는 점에서 감탄하는 계기가 되기도 했다. - ---- -본 도서에 대한 소개를 이 즈음에서 마무리 하고 수십년 간 입문서로 유명한 `Head First 시리즈`에 대해 소개해 볼까 한다. Head First 시리즈는 입문서로 활용할 경우 최고의 선택으로 손색이 없을 정도의 명작이다. - -Head First 시리즈의 독특한 구성에 대해 아는 것은 본 도서의 절반인 구성과 체계를 이해하는 것이기에 장점 및 특징 몇 가지를 소개해보려 한다. 먼저, 아래 그림을 보면 이런 Go 언어와 무관해보이는 두뇌를 정복하는 방법이 나온다. -![Head First](https://theorydb.github.io/assets/img/review/2020-05-17-review-book-head-first-go-2.png) -책을 읽을 때마다 중간 중간 이러한 장치들이 나타나는데 머리말에서 알 수 있듯 머리가 휴식을 취한 것 처럼 환기되기도하고 흥미를 불어넣어 가독성을 높여주는 역할을 한다. - -예를 들면 Go언어 대한 Block 설명을 들 수 있는데 순차적으로 이루어진 코드를 그냥 읽어나가다 보면 블록 간 뚜렷한 경계선이 보이지 않은 채 지나가는 경우가 있다. 그럴때마다 아래 그림처럼 `핵심 개념을 명확히 해주는 시각화 자료`가 등장하여 쉽고 빠른 이해가 가능하다. -![Block](https://theorydb.github.io/assets/img/review/2020-05-17-review-book-head-first-go-3.png) - -프로그래밍을 한 번이라도 배운 분들이 처음 맞닥뜨리는 장애물 중 하나가 for문의 생소한 구조이다. 우리는 순차적으로 코드를 읽어나가기 마련인데 for문의 동작 방식은 그렇지 않아 매끄러운 이해가 어렵다. 역시 아래 그림과 같이 깔끔한 시각화로 개념을 명확하게 하기 위한 `경계선`을 긋는다. -![Head First](https://theorydb.github.io/assets/img/review/2020-05-17-review-book-head-first-go-4.png) - -하나의 소스를 완성하기 까지 위에서 열거한 방식처럼 `부분의 개념을 쪼개 개념을 명확히 한 후 각 개념간의 관계에 집중할 수 있는 구성`이 마음에 들었다. 단원의 마지막 장에는 아래 그림과 같이 완성된 소스코드를 보여주는데 `주석이 앞서 설명한 개념 및 관계를 상기`시켜주므로 완벽한 이해를 돕는다. -![소스코드 완성본](https://theorydb.github.io/assets/img/review/2020-05-17-review-book-head-first-go-5.png) - -마지막으로 고루틴을 예로 들어보자. 멀티스레드 프로그래밍을 전혀 접하지 않은 분들은 동시성 처리가 매우 생소하고 어렵게 느껴질 것이다. 미리 접한 이로써 말씀드리자면 동시성 처리가 어려운 이유는 프로그래머가 메모리의 상황을 머리속에서 그려가며 세마포어, 뮤텍스 등을 활용해 각 병렬 모듈을 일일이 제어해야 하기 때문이다. - -Go 언어는 그런 세부적인 부분을 알아서 처리하기 때문에 매우 편리하지만 물론 프로그래머가 처리해야 하는 부분도 있다. 순서 등의 제어를 위해 채널을 활용해야 하는 것이다. 아래 그림은 `동시성의 개념을 직관적으로 이해`하는데 있어 큰 도움을 준다. -![고루틴](https://theorydb.github.io/assets/img/review/2020-05-17-review-book-head-first-go-6.png) - -실행 시마다 순서가 뒤죽박죽으로 실행되는 3가지 예시를 통해 동시성의 특성을 직관적으로 이해할 수 있으며 `채널`의 필요성 또한 바로 이해가 가능하다. 아래 코드 자석 그림은 처음부터 프로그래밍을 짜는 막막함을 크게 덜어주며, `코드 자석 퀴즈를 풀고 직접 코딩을 해보면 얼마나 쉬운지 느낄 수 있다`. 머리속에서 개념간의 연결 그물이 느껴질 것이다. - -Go 언어 초보자라면 혹은 프로그래밍에 대해 아무것도 모른다면 이 책을 첫 단추로 삼으면 절대 후회하지 않을 듯 하다. Go의 재미와 Head First의 재미를 둘 다 느낄 수 있기 때문이다. - - -* [책소개 - Head First Go](http://www.yes24.com/Product/Goods/89342507?scode=032&OzSrank=1) - diff --git a/_posts/2020-05-29-review-book-range.markdown b/_posts/2020-05-29-review-book-range.markdown deleted file mode 100644 index 6c06b1447..000000000 --- a/_posts/2020-05-29-review-book-range.markdown +++ /dev/null @@ -1,112 +0,0 @@ ---- -layout: post -title: "[리뷰] 늦깎이 천재들의 비밀" -subtitle: "전문화된 세상에서 늦깎이 제너럴리스트가 성공하는 이유" -categories: review -tags: review book Range Late Generalist Succeeds -comments: true -header-img: img/review/2020-05-29-review-book-range-1.png ---- - -> `열린책들` 출판사의 `"늦깎이 천재들의 비밀(데이비드 엡스타인 저/이한음 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-05-29-review-book-range-1.png) - ---- -* __너무도 빨리 변하는 세상에서 앞으로 우리가 해야할 것은?__ - 본 도서는 급변하는 세상에서 `우리가 정작 배워야 할 것이 무엇인지, 앞으로의 미래를 어떤 방향으로 살아야 하는지` 해법을 제시한다. - - 책의 제목이나 온라인 서점의 소개글에서 알 수 있듯이 비교적 늦은 나이에 성공한 사람들의 사례를 예로 들고 늦은 나이에도 성공할 수 있었던 비결을 현재 우리가 사는 세상 시점에서 파헤친다. 한동안 커리어와 관련되어 화두가 되었던 Generalist vs Specialist의 문제도 다룬다. - - 하지만 책에서 다루고자 한 핵심은 `빠르게 변화하는 세상을 살아가는 법`이다. 따라서 불안한 마음으로 현 시대를 살아가는 우리들이 앞으로 물리적으로 제한된 짧은 인생동안 어떤것을 추구해야 할지 배워나가야 할지에 대한 방법을 다룬 것이 보다 본 도서의 주제에 가깝다고 하겠다. - - 제목 때문에 늦은 나이에 성공하는 천재들에 초점이 맞춰진 책이라고 생각하면 약간 오산이다. 이는 책에 주장하는 여러 주요 논지 중에 하나일 뿐이다. 아무래도 마케팅적인 측면의 영향 때문이 아닌가 싶다. - - 그렇다고 얻을 것이 없는 서적에 그럴사한 제목을 포장했다는 말을 하고 싶은 것은 전혀 아니다. 오히려 반대이다. 원제를 보다 잘 살렸으면 이 책이 늦은 나이에 성공하는 비법이 아닌 현 시점 내 인생의 나침반을 제공하는, 고전에 비견될만한 인사이트를 전해준다는 것을 알게 해줬을텐데 라는 아쉬움에서 하는 말이다. - - > 책의 원제는 `Range`이다. 우리말로 번역하면 `다양성, 범위` 정도 되겠다. - 책을 모두 읽으면 이해되겠지만 `다양한 것을 접하고 다양한 것을 공부하고 특히 학제 간 범위의 제약을 없애 일종의 융합, 통섭의 힘을 극대화 하는 것`이 앞으로 살아남는 방법임을 시사한다. - - 지금 우리 사회는 4차산업 혁명을 필두로 예측할 수 없을 정도로 빠른 속도로 변해가고 있다. 특히 AI는 알파고로 대중에 신선한 충격을 선사했고, Youtube를 시청할때나 상품을 구매할 때마다 꽤 놀라울 정도로 원하는 것을 추천해주는 시스템, 제조업의 자동화 등 우리 사회에 많은 영향을 미치고 있다. - - 10년 후면 대부분의 일자리가 사라진다는 루머, 바둑같이 그동안 수많은 프로그래머와 컴퓨터들이 정복하고자 노력했으나 사람의 감으로 표현되는 레벨을 뛰어넘는데 실패했던 영역도 점차 AI가 정복해나가고 있다. - - 뭔가 `이대로 있으면 안되겠다는 생각이 드는 것이 사실이고 부지런히 살고 노력은 하고 싶은데 방향은 잃었다.` 도대체 우리가 어떤 방향으로 나아가야 할지 조급한 분이라면, 미래를 대비하고 싶은 분이라면 꼭 이 책을 권유드린다. - ---- - -* __그동안 우리가 진리라고 여겨졌던 방법들__ - 저자는 이미 뉴욕 타임스 베스트셀러에 오른 전작 "스포츠 유전자(The Sports Gene)"으로 유명해진 데이비드 엡스타인이다. 전작 이후 유명 저널리스트로도 활동해서인지 본 책의 연구적 깊이와 철저한 검증, 독서량 등은 놀라운 수준이다. - - 1만 시간의 법칙으로 약 10년 전 유명했던 "아웃라이어"의 저자 말콤 글래드웰 조차 본 도서를 너무나 마음에 든는 책이라고 표현한 것이 상당히 이색적으로 느껴졌다. 정반대라고 볼 수는 없지만 저자는 본 도서를 통해 `1만 시간의 법칙과 관련된 한계나 반대 진영의 견해를 주장`하기 때문이다. - - 그동안 우리가 알고 있던 대부분의 인생 상식에 냉철한 비판을 가하고 `그동안의 진리라고 여겨졌던 방법들을 현 시점 우리에게 필요한 인사이트로 재구성`한다. 그 누가 수십년간 진리처럼 여겨졌던 방법을 쉽게 비판할 수 있겠는가? 나아가 기존 방법들의 한계를 보완하고 재구성하여 미래의 인사이트를 제공할 수 있단 말인가? - - 놀랍게도 저자는 이 모든것에 과감히 도전한다. 그저 스스로 주장만 하는것이 아닌, 저자 개인의 일반화되지 않은 사례의 개똥철학을 펴는 것이 아닌, 대규모의 연구 자료를 철저히 분석하여 통일성있게 배치하고 많은 위인들의 일생을 돌이켜보며 탄탄한 검증 자료로 자신의 주장에 설득력을 부여한다. 오죽하면 반대 진영의 말콤 글래드웰이 극찬할 정도일까. - ---- - -* __본 도서에서 얻을 수 있는 최고의 인사이트 3가지__ - 서두는 두 천재 골퍼 `로저 페더러 vs 타이거 우즈`의 비교로 시작한다. 타이거 우즈는 마크 저커버그와 같이 적절한 조기 교육의 성공, 천재의 대명사였다. 반면 페더러의 경우 어린 시절 다양한 활동을 거쳐 비교적 늦은 나이에 대기만성한 천재이다. - - 저자는 세상이 최연소, 천재라는 자극적인 단어에 관심을 두는 경향이 있어 우즈나 저커버그 등의 유형이 많이 알려졌을 뿐 실제로는 다양한 경험을 통해 `완숙한 나이에 천재에 반열에 오르고 성공한 사람이 더 많다`는 것을 지적한다. - - 더불어 운동, 패턴 인식을 필요로 하는 직업군에서는 조기 교육의 방법이 나쁘지 않음을 인정하지만, 그 외 금융 등 대부분의 다양한 판단 요소에 `넓은 경험을 필요로 하는 직업군에서는 Range의 역량이 필요함을 강조`한다. - - 개인적으로 판단하건데 본 도서는 다음과 같은 `3가지` 주제로 세상에 높은 가치를 시사한다 할 수 있다. - - + __첫째. `누구나` 조기교육이 `가능`한 천재인가?__ - 대중들이 지나치게 최연소 천재에만 집중하여 자신 혹은 자식의 인생을 망치는 우를 범하지 않도록 다양한 연구결과와 사례를 제시하고 있으며 희소하지 않은 즉, 보다 일반적인 방법으로 성공에 이르는 방법을 제시한다. - - + __둘째. 직무 적합도와 `다중 슬롯머신`의 문제.__ - 천재의 재능을 타고났다 한들 그것을 알아보고 이끌어줄 사람이 없다면, 또는 운이 없어 자신의 천재성이 발현될 만한 기회를 얻지 못한다면? 대중이 열광하는 조기교육 방법은 적용할 수 없다. 안타깝게도 대부분의 사람이 이 유형에 속한다. - - 타이거 우즈는 생후 6개월째에 아빠 손바닥 위에서 균형을 잡는 등 비범한 재능을 보여주었고 그의 아버지는 그런 재능을 놓치지 않았다. 하지만 이것은 대중들의 삶에 일반화하긴 어려운 운이 좋았던 케이스라 하겠다. - - 즉, 보통 사람은 대부분 다중 슬롯머신의 과정을 거쳐야 한다. `자신의 천재성을 발휘할 영역을 찾을 때까지 머신의 팔을 하나씩 당겨보는 과정을 피할 수 없다.` - - 천재 화가 고흐의 삶을 예로 들 수 있다. 그는 34세에 유명화가 되기까지 학생, 미술상, 교사, 서점 점원, 목사, 전도사의 길을 걸었다. 37세의 나이로 숨을 거두기 전 간신히 다중 슬롯머신의 문제를 풀어내며 성공을 거둔 케이스지만 그 전에 경험했던 다양한 직업과 노력들은 Range 역량이 되어 그를 완성된 화가로 만들어 주었다. - - + __셋째. 학제간의 연계, 다양성, 집단지성 등 `융합`의 힘.__ - 이 융합의 힘 또한 저자가 주장하는 Range의 힘이다. `플린효과`, 즉 모든 IQ 검사에서 정답을 맞히는 비율이 높아지는 현상을 의미한다. 무려 10년마다 3점씩 높아진다. 정신측정학 전공자들도 의례 당연시 여겼던 측정 방법의 맹점을 찾아낸 비결에 대해 플린은 내가 외부인이어서 가능했던 것 같다고 대답한다. - - 저자 역시 대학원 생 시절 통계분석이 어떻게 작동하는지, 살펴보는 법 자체를 배운적이 없었음을 고백한다. 연구 성과를 내기만으로도 시간이 부족한 것이 대부분 연구자들의 현실이다. 고등교육을 받은 우리 일반인들도 다를 바 없다. 수학의 공식과 공리와 해석에 있어 그 내부를 들여다 본 이가 과연 몇이나 될까? - - 저자는 또 하나의 강력한 Range를 발휘한 예로 케플러를 꼽는다. 천문학과 행성과 관련된 데이터베이스가 전무했던 시절 그는 `유추의 힘을 통해 아리스토텔레스의 시계 태엽 우주관을 완전 뒤엎어` 버렸다. 그가 이미 잘 알고 있는 빛, 열, 냄새, 배, 빗자루, 자석을 천체와 비교하며 동작 방식을 유추했던 과정을 통해 다양성의 힘이 불모지를 개척하는 힘을 보여준다. - ---- - -* __그 외의 흥미로운 요소__ - - 앞의 메인 주제 외에도 본 도서는 다양한 볼거리를 제공한다. - - 읽다보면 저자가 독서광임은 자연스레 증명된다. 수많은 연구 결과와 위인들의 일대기 혹은 서적들이 인용되는 것을 보며 도대체 저자는 지금까지 얼마나 많은 책을 읽었을까라는 생각을 했다. 한 베스트셀러 작가님의 글을 읽은 적이 있는데 그 분이 지금껏 3천권이 넘는 책을 읽었다고 했다. 3천권의 책을 읽은 분이 작성한 책에서 얻은 외부 지식은 생각보다 많지 않았다. - - 지식의 도메인의 범주 포함 관계나 의도적 인용 비율을 고려할 때 반드시 읽은 권수가 서적 내 새롭게 등장하는 정보와 정비례하지는 않겠지만 3천권을 읽은 분의 책으로 비교해보면 본 도서는 거의 10만 권은 읽어야 할 느낌이다. (실제로 그럴지도 모른다.) - - 덕분에 무엇인가에 시간이나 돈을 투자하면 우리는 거기에서 손을 떼기를 무척 꺼려한다는 `매몰 비용 오류`, 그릿 측정과 관련된 `마시멜로 실험`, 생성효과, 과잉 과장 효과,.. 등 우리는 `수많은 지식들의 잔치에 초대되며 교양 수준을 높일 수 있음`은 두말할 나위없다. - ---- - -* __마무리하며...__ - - 개인적으로 AI에 관심이 많아 열심히 학습중이다. 딥러닝의 출현으로 데이터 사이언스가 각광을 받고 이미 우리 사회를 뒤바꾸고 있는 것은 사실이지만, 모든 것이 AI로 해결할 수 있다고 여기는 등의 거품도 분명히 존재한다. - - 더불어 AI 분야의 연구는 일주일이 멀다하고 수십편의 논문이 쏟아지는 격세지감의 장이다. 열심히 공부 중인데 아무리 배움에 끝이 없다지만 그럼에도 배울 것이 너무도 많다. - - 신생 학문으로 일컬어지는 관계로 데이터 사이언티스트 같은 용어의 정의도 어렵다. 국내에 AI로 유명한 분들도 쉽사리 본인을 데이터 사이언티스트로 소개하는데 머뭇거린다. 겸손함의 표현이다. - - 용어의 정의도 어렵고 배울것도 너무 많은 AI. 게다가 자신 혹은 타인을 데이터 사이언티스트라고 명명하기 어려운 이 일련의 현상에 대한 원인을 찾자면 `모든 학문들이 AI로 융합되기 때문`인 것 같다. 즉, 데이터 사이언스는 수학, 경영학, 심리학 등 범주가 떨어진 명확한 하나의 학문으로서의 개념이기보다는 다양한 학문과 기술적으로 결합하는 일종의 수평적인 `층(Layer)`으로서 자리잡은 듯 하다. - - 이는 저자가 주장하는 바와 일맥상통하다. 우리는 알게 모르게 융합의 힘을 필요로 하는 세상에 살고 있는 것이다. 그리고 세상은 융합의 방향으로 빠르게 움직이고 있다. - - > 편협한 세계의 `전술`은 사람보다 뛰어난 AI에게 맡기고, `사람`은 다양성을 바탕으로 창의성을 발휘하는 전략에 집중해야 하는 것이다. - - 그것이 내가 저자에게 배운 핵심, 즉 변화가 빠른 이 시대에 우리가 살아남을 수 있는 거의 `유일한 해법`이다. - -* [책소개 - 늦깎이 천재들의 비밀](http://www.yes24.com/Product/goods/90175929) - - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. - - diff --git a/_posts/2020-05-30-review-book-successful-aging.markdown b/_posts/2020-05-30-review-book-successful-aging.markdown deleted file mode 100644 index 582419d19..000000000 --- a/_posts/2020-05-30-review-book-successful-aging.markdown +++ /dev/null @@ -1,148 +0,0 @@ ---- -layout: post -title: "[리뷰★] 석세스 에이징" -subtitle: "노화의 잠재력을 끌어올리는 뇌과학의 힘" -categories: review -tags: review book successful aging neuroscientist explores power potential lives -comments: true -header-img: img/review/2020-05-30-review-book-successful-aging-1.png ---- - -> `와이즈베리` 출판사의 `"석세스 에이징(대니얼 J. 레비틴 저/이은경 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-05-30-review-book-successful-aging-1.png) - ---- - -* __인생 Best 책이 바뀌었다.__ - 명작이다. 이 책으로 인해 나의 인생 Best 책이 바뀌었다. 지금 이 포스팅을 쓰는 내게 고민은 단 하나이다. - > 어떻게 하면 이 책을 읽게 만들 수 있을까? - - 먼저 본 책에 노화라는 관점의 프레임이 씌워질 수 있기에 이를 바로잡고자 한다. 원서의 제목은 `Successful Aging: A Neuroscientist Explores the Power and Potential of Our Lives(성공적인 노화: 우리 삶의 힘과 잠재력을 탐구하는 신경과학자)`이다. - - 자칫 노화(Aging)라는 단어를 깊게 포커싱하면 다가오지 않은, 별 관심없는 뻔한 먼 미래의 이야기로 비춰질까 두렵다. 명저일수록 겨우 몇개의 단어로 이루어진 제목이 몇 번 오지 않을 소중한 기회를 놓치는 선입견이 될 수 있으므로 항상 경계해야 한다. - - Aging이라는 표현이 영미 문화권에서는 정확히 어떤 의미를 지니는지 그리고 그 의미의 범위가 우리말로 어떻게 표현되어야 하는지 모르겠으나, 적어도 확실히 말할 수 있는 것은 인생과 동의어로 받아들여도 된다는 것이다. 인생. 즉, 나이를 먹어가는 것이다. - - 유아기부터 노인이 되는날까지 `인생의 어떤 순간에도 이 책은 우리에게 유용하고 위로가 되는 인사이트를 제공`한다. 그러므로 이 책을 읽는 대상은 노인 혹은 노인이 될 날이 머지 않은 사람이 아니다. 책을 읽을 수 있는 나이가 되었다면 가급적 빠를수록 좋다. 리뷰를 보는 분들이라면 반드시 본 도서를 놓치지 않길 권유드린다. - ---- - - -* __알파고 AI, 신경과학, 융합의 시대__ - 저자 레비틴은 이미 `정리하는 뇌`로 우리에게 유명해진 작가이자, `1만 시간의 법칙`의 장본인이자, 신경과학자이다. "정리하는 뇌"는 신경 가소성의 개념 등 자체로도 엄청난 가치를 지닌 책이므로 더 언급할 필요도 없고, 저자의 연구분야인 신경과학에 대해 잠깐 언급하고자 한다. - - 신경과학이라는 단어를 처음 듣는 분들은 "신경"도 어려운데 "과학"까지 나왔으니 골치 아픈것으로 받아들일 것이고, 조금 아는 분일지라도 코르티솔, 세로토닌, 축삭돌기 등의 단어에 두려움이 생기는 것은 자연스러운 일이다. - - 알파고를 모르는 사람은 거의 없을 것이다. 최근 "AI 마인드"라는 책을 흥미롭게 읽었다. 세계적인 인공지능 석학들이 인공지능에 대해 알려주고 AI 시대에 살고 있는 우리에게 어떻게 미래를 준비해야 하는지에 대해 언급하는 인터뷰로 구성되어 있다. 책을 읽은 이유는 첫번째 연사가 알파고를 창시한 데미스 허사비스였기 때문이다. 그 책에서 인터뷰한 그의 말과 논문의 요지는 다음과 같다. - - > "인공지능 혁신의 핵심은 `신경과학`이다. 인공지능의 미래는 신경과학에 달려 있다." - 데미스 허사비스(알파고 창시자) - - 개인적으로 알파고에 적잖은 충격을 받아 AI를 열심히 공부중인데 아무리 배움에 끝이 없다지만 배울 것이 너무도 많다. 신생 학문으로 일컬어지는 관계로 데이터 사이언티스트 같은 용어의 정의도 어렵다. 국내에 AI로 유명한 분들도 쉽사리 본인을 데이터 사이언티스트로 소개하는데 머뭇거린다. 겸손함의 표현이다. - - 용어의 정의도 어렵고 배울것도 너무 많은 AI. 개인적으로 그 원인을 찾자면 `모든 학문들이 AI로 융합`되기 때문인 것 같다. 진리를 연구할 떄 자연에서 힌트를 얻듯, AI 역시 자연에서 인사이트를 찾는다. 바로 우리의 뇌. 그리고 AI의 중심에 신경과학이 있으며 어떤식으로든 AI에 깊은 영향을 받을 우리는 더이상 우리가 가진 뇌와 그 메커니즘을 이해하지 못한다면 미래에 대응하기 결코 쉽지 않을 것이다. - - 저자는 신경과학자로 감사하게도 본 도서를 통해 `대중에게 가장 이해하기 쉽게끔` 과학이 아닌 인생을 중심으로 그가 연구한 분야를 소개한다. 지금 이 리뷰를 보고 계신 분들 또한 어떤것이든 배우고 계실 것이다. 그리고 그 어떤것은 AI와 융합할 것이다. 그리고 AI는 우리 생활을 변화시킬 것이다. - - `자신의 인생을, 변화하는 미래를 이렇게 쉽고 재미있게 배울 기회가 왔는데 그냥 저버릴 것인가?` - ---- - - -* __내 자식에게 처음으로 읽히고 싶은 책__ - 대체 책이 얼마나 좋길래 할 수 있는 극찬을 다 쏟아내는 것인지 궁금할 것이다. 책에서 얻을 수 있는 것들을 요약하고 싶었지만 이게 리뷰인지 개인의 인생사를 더해 인사이트를 정리한 일종의 주해(註解)인지 분간할 수 없을 정도의 많은 분량이 예상되어, 그리고 학식이 부족하여 감히 요약을 못하겠다. - - 다만 여러분들이 `얻을 수 있는 것들` 위주로 아래와 같이 두서없이 정리해본다. - - + __당신의 `성격이 왜 그 모양이 되었는지` 혹은 왜 이렇게 만족스럽게 변하였는지 알 수 있게 된다.__ - - 지금과 같은 성격이 생성된 배경과 원인을 유추할 수 있고 어떻게 변화시킬 수 있을지 해결책을 얻을 수 있다. 제일 중요한 왜 변화시켜야 하는지 이유를 찾을 수 있다. - - 모든 요인들을 과학적으로 배움으로써 나의 뇌가 설득되고 덕분에 습관을 바꾸기 쉬워진다. - - 저자는 음반 프로듀서이자 음악가이기도 한데 다방면에 걸친 성공이 산 증거인 듯 하다. - - + __앞으로 `어떻게 살아가야 할 것인지` 그리고 행복이란 무엇인지 객관적이고 논리적으로 재조명해 볼 수 있다.__ - - 일광욕, 치아, 운동, 비만, 수면, 식단, 만남 등 일상과 습관에 대해 다시금 바라보게 된다. - - ![운동](https://theorydb.github.io/assets/img/review/2020-05-30-review-book-successful-aging-4.png) - - 죽음이 눈 앞에 닥쳤을 때 당신은 결코 "페이스북을 좀 더 많이 했더라면 좋았을텐데.."와 같은 유언을 남기지는 않을 것이다. - - + __`자신의 뇌가 무엇을 생각하는지` 그 메커니즘을 알 수 있고, 뇌를 컨트롤 할 수 있는 능력이 생기며, 지친 나를 위로할 수 있는 방법도 찾게 된다.__ - - 급변하는 세상속에 지친 나를 위로하는 서적은 많아도 그런 부류의 서적들이 자신의 감정에 공감을 해줄지언정 해결책을 제시하지는 않는다. - - 보다 자신에 대해 정확하게 알게 된다면 해결책을 찾을 수 있을것이다. - - + __여러분의 아이를 어떻게 키워야 할지 알 수 있으며, 전투와도 같은 육아에도 불구하고 `육아를 열심히 하게되는 동기부여`가 된다.__ - - 세상에 참 많은 육아서적이 있고 책마다 저마다의 슬기로운 방법을 제시하지만 이렇게 근본적으로 내 아이를 열심히 키워야 겠구나라는 생각이 들게 하는 책은 처음이었다. - - 육아에 대한 스킬 하나 등장하지 않음에도 아이를 사랑하기만 한다면 앞으로의 육아가 그리 힘들어지지 않는 마법을 경험할 수 있다. - - ![보호인자](https://theorydb.github.io/assets/img/review/2020-05-30-review-book-successful-aging-6.png) - - + __힘들게 살아오신 `부모님께 노년을 가치있게 살 수 있는 방법`을 알려드릴 수 있다.__ - - 빵꾸똥꾸로 또 다른 매력을 보여주신 이순재 선생님 같은 분들을 보면서 항상 궁금했다. 저런 고령의 연세에도 어떻게 건강한 활동과 더불어 저술, 강연 등 주위에 선한 영향력을 미치시는지? 어떤 분은 이른 연세에 고통속에 놓여지고 어떤분은 이렇게 건강하고 활기차게 사시는지 그 이유가 과연 유전력에만 있는것인지? 여러분도 궁금하시다면 본 서적이 그 답을 줄 수 있다. - - 인생에서 가장 행복했던 시기로 가장 많이 꼽히는 연령은 82세이다. - - ![웰빙지수](https://theorydb.github.io/assets/img/review/2020-05-30-review-book-successful-aging-3.png) - - + __`수준 높은 과학 지식`을 매우 쉽고 재미있게 얻을 수 있다. 더불어 과학자들이 진리에 접근하는 방법을 알 수 있다.__ - - 신경과학, 발달 신경과학, 성격 심리학, 인지 심리학에 대해 알 수 있다. - - 학문 간 융합하고 통섭되는 방법과 과정 그리고 그 위력을 알 수 있다. - - 사회, 문화, 언어 등에 관하여 기존의 상식과 교양 수준을 수십배 높힐 수 있다. - - 코르티솔, 세로토닌, 축삭돌기, 뉴런, PCA, DNA, 어휘 가설 등 수도 없는 과학 개념을 배울 수 있다. - - - + __마지막으로 우리가 깊게 생각해 볼만한 `심오한 질문들`이 등장한다.__ - - 질문에 답을 하고 나면 소크라테스의 문답법 같이 저자의 풀이가 등장한다. 스스로의 답변과 저자의 풀이법을 비교해보면서 많은 인사이트와 방법론을 얻을 수 있다. - - 플라톤의 대화편을 읽는 느낌인데 이 책이 철학서는 아닌지 혼동될 때도 있다. 철학이 어려운 것이라고 생각하면 오산이다. 당신이 지금 살면서 고민하는 것들 그리고 그에 대한 생각들이 바로 철학이다. - - 자세한 예는 바로 밑에 이어지는 내용을 참고하시기 바란다. - ---- - - -* __"자네라면 성격을 어떻게 연구하겠나?"__ - 잠시 본 도서 중 일부 문구를 요약하여 인용하겠다. - - > 과학자들은 `성격처럼 지극히 개인적이고 주관적인 개념을 어떻게 연구할까?` 동료이자 저명한 심리학 교수인 루이스 골드버그에게 성격 측정 연구에 관해 이야기해달라고 했다. 골드버그는 먼저 "자네라면 성격을 어떻게 연구하겠나?"라고 물었다. (`당신도` 다음 내용을 읽기 전에 잠시 이 문제를 `생각해보라.`) - 47p, 마법의 수를 찾아서 中 - - 잠시 리뷰 읽는 것을 멈추고 이 문제에 잠시 생각하셨으면 좋겠다. 생각이 끝나셨다면, 내가 풀이법을 소개하고 책 뒷편에 이어질 저자의 풀이법과 어떻게 비교 검증했는지 소개해보고자 한다. - - + __내가 생각한 `풀이` 과정__ - - 성격이라는 개념의 정의가 너무 어려워 표현하는 단어들을 모두 수집하기로 했다. (온화함, 냉정함, 겸손함,...등) - - 자연어처리(NLP)의 BoW, TF-IDF 처럼 개인별 성격 표현 단어들의 빈도수를 수집한다. - - 각 분류 단어 하나 하나를 하나의 차원으로 간주하여 위치를 정한다. - - 좌표에 배치된 개개인의 위치에 따라 유사 성격을 분류할 수 있고 상관관계도 적용할 수 있다. - - 그런데 이렇게 많은 특징들은 차원의 저주에 걸릴텐데.. 어떡하지? - - + __답안 `검증` 과정(저자 풀이와 비교)__ - - 뇌 스캐너 연결 : 내 풀이 과정에는 측정 방법조차 없었다. OTL - - 노숙자 사진을 보여준다. - - 너그러움을 느끼는 뇌 영역이 활성화 되는지 관찰 : 업무 도메인의 지식 유무가 이렇게 중요하다.(선무당인 나는 이런 지식은 없었기에 고안도 못했다.) - - ![뇌의영역](https://theorydb.github.io/assets/img/review/2020-05-30-review-book-successful-aging-5.png) - - 그런데, 너그러움을 느끼는 뇌 영역이 어느 부분인지 어떻게 알 수 있을까? - - 다시 시작 지점으로 돌아왔다. 너그러운지는 어떻게 알 수 있을까? - - 사람들이 너그러움을 발휘할 기회를 주고 그때 뇌의 활성 영역을 수집한다. - - 사람들로 하여금 노숙자를 지나치게 하여 어떤 행동을 하는지 보기로 한다. - - 한계 : 우리가 볼때만 행동, 너그럽지 않았던 사람이 갑자기 동정심을 느끼는 경우, 특질의 수가 너무 많다. : 특징 수가 많다는 것 하나 맞췄다. (일반인의 한계) - - 이후, 프랜시스 골턴(평균으로의 회기, 우생학으로 유명한 명암이 있는 양반)의 가정하에 지인 골드버그 가설이 등장 - - 분명 여러분도 `스스로 고안한 해답을 저자의 방식과 비교 검증하는 과정에서 많은 것을 얻을 수` 있으리라 본다. 이처럼 저자는 마치 소크라테스의 문답법 처럼 가끔 심오한 질문을 던져 독자로 하여금 깊은 사유에 빠져들게 한다. 개인적으로 이런 부분이 본 도서의 백미라 꼽고 싶다. - ---- - - -* __마무리하며__ - 번역의 수준과 질에 대한 장점을 빼놓을 수 없다. 요즘 유행하는 표현으로 `저자는 다 계획이 있었던 것 같다.` 본인의 가치를 세상 많은 분들과 공유하고자 타깃 독자를 전세계 모든 사람들로 정한 것 같다. 본문 중의 표현을 빌리자면 이미 어휘 가설에 대해 깊이 연구하셨기에 같은 단어일지라도 전세계 모든 독자들마다 문화, 개인차에 의해 받아들여지는 가치가 달라짐을 지극히 고려하여 최대한 객관적으로 글을 풀어가고자 노력한 흔적들이 보인다. - - `이은경 역자님의 공헌도 빼놓을 수 없다.` 역자분의 개인적인 능력은 두말할 나위 없고, 영문학과 심리학을 전공하셨기에 본 도서의 내용과 업무 도메인이 일치하여 더욱 빛나는 번역서가 탄생하지 않았나 싶다. 과학과 관련된 개념과 용어가 수없이 등장함에도 국내 저자의 책처럼 자연스럽고 쉽게 읽혔다. 이런 멋진 책에는 최고의 번역가의 역할이 굉장히 중요하다 생각하는데 그런 측면에서 매우 만족하였다. - - 본 도서의 페이지 수는 무려 `646p`이다. 거대한 분량에 압도되는 것도 사실이다. 그나마 위안을 조금 드리자면 뒷 부분은 인용한 논문들의 목록으로 이루어져있어 578p까지만 읽으면 된다. 물론 그럼에도 적지 않은 분량이다. 하지만 장담할 수 있는 것은 다른 책들에 비해 훨씬 빠르게 읽을 수 있을 것이고 재미있게 읽을 수 있어 읽은 페이지 수 체크 하지 않아도 자신도 모르게 어느덧 책을 덮게되는 순간이 올 것이다. - - 이 방대한 분량의 책을 저자는 어떻게 독자가 지치지 않고 읽을 수 있게끔 흥미롭게 구성하였는지 통일성을 어떻게 유지하였는지 신기하다. 읽으면서도 이 분이 과학자인지 작가인지 혼동되었을 정도이니 말이다. 논리의 전개 방식과 진리에 대한 사고의 흐름에 있어 두 직업군은 맞닿아 있는 듯 하다. - - 읽는데 별로 힘이 들지 않는다. 조금 오버하자면 다 읽고 더 읽을 것이 없나 아쉬웠고 인용 문헌들을 기웃거리기 까지 했는데 저자의 표현 방식이 아니라 이해하기 어려워 중단하였다. 이처럼 `값진 과학 지식을, 인생을 위한 조언을 나 대신 나의 뇌를 대신 설득시켜준` 저자께 깊이 감사드린다. 본인이 가진 최고의 무기를 흔쾌히 공개하여 세상에 위대한 가치를 선물하신 것에 한번 더 감사드린다는 말과 함께 리뷰를 마친다. - - ![뇌의젊음](https://theorydb.github.io/assets/img/review/2020-05-30-review-book-successful-aging-2.png) - ---- - - -* [책소개 - 석세스 에이징 : 노화의 잠재력을 끌어올리는 뇌과학의 힘](http://www.yes24.com/Product/goods/90232655) - - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. - - diff --git a/_posts/2020-06-08-review-book-task-exploration-king.markdown b/_posts/2020-06-08-review-book-task-exploration-king.markdown deleted file mode 100644 index 2ff091cc6..000000000 --- a/_posts/2020-06-08-review-book-task-exploration-king.markdown +++ /dev/null @@ -1,131 +0,0 @@ ---- -layout: post -title: "[리뷰] 과제탐구 끝판왕" -subtitle: "대입 합격의 모든것" -categories: review -tags: review book task exploration king university entrance examination -comments: true -header-img: img/review/2020-06-04-review-book-task-exploration-king-1.png ---- - -> `꿈구두` 출판사의 `"과제탐구 끝판왕(신다인, 이성훈, 송경훈, 김승호, 정동완 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-06-04-review-book-task-exploration-king-1.png) - ---- - -책의 소개에 앞서 탐구과제의 중요성에 대해 먼저 언급해 보려한다. 책의 내용이 아무리 훌륭한 가치를 지녔다 한들 탐구과제가 왜 중요한 것인지 알지 못한다면 책의 진가를 알아보기 어려울 것이기 때문이다. - -> 이 세상에 단 `2가지`만 배울 수 있다면 무엇을 배워야 할까? - -답은 사람마다 천차만별이겠지만 개인적으로는 `논문`과 `고전` 2가지를 꼽고싶다. 100년 전의 미국은 사립학교와 공립학교의 교육방식이 매우 달랐다. 하나의 원칙을 충실히 따른 대부분의 사립학교들은 지금도 세계 최고의 명문대학으로 군림하고 있다. 국적을 불문한 전 세계 최고의 인재들이 모여 동문을 이루기도 하고 구글이나 애플같은 세계 최고의 기업을 이끄는 인재들이 되기도 한다. - -> 이러한 명문 대학을 가르는 가장 큰 교육과정의 차이점은 무엇이었을까? - -그것이 바로 `고전 읽기`이다. 고전을 읽음으로 인류의 역사를 살아온 성현들의 지혜를 얻을 수 있을뿐더러 그것을 본인의 지적 자산으로 내재화하기 위해 많은 사고를 동반했다. 더불어 사고 과정에 대한 답을 얻고자 철학, 수학, 과학과 같은 기초 학문에 질문하는 습관을 갖게 되었다. - -반면 공립학교의 경우는 획일화된 교육방식, 암기 위주의 학습이 지배적이었다. 공립학교에 소속된 학생들은 자연스레 생각을 거쳐 인사이트를 얻어내는 방법을 익히기 어려웠으며, 결국 대부분의 인력들이 산업화 시대에 공장의 부품으로 전락하고 만다. - -이러한 공립학교의 영향은 타국에도 영향을 미쳤는데 근대화 시대 일본을 거쳐 오늘날 대한민국의 교육방식에도 크게 영향을 미쳤다. 기초 학문의 중요성을 언론 등에서 수없이 강조하고 있지만 우리 교육은 아직도 좋은 점수 받아서 명문대 타이틀 하나 따는 것을 목표로 삼는 수준이다. - -때문에 학생들은 스스로 생각할 수 있는 기회를 박탈당함으써 성인이 되어서도 누가 시키는 것은 잘할지 몰라도 창업이나 스스로 리드하는 것에는 관심도 없고 할 줄도 모른다. 결국 스티브 잡스의 애플이나 마크저커 버그의 페이스북이 우리나라에 등장할 확률은 매우 줄어들었고, 경제 활동 외에도 개인의 인생사에 있어 길을 잃고 방황하기 일쑤다. - -그나마 다행인 것은 고전의 중요성이 많이 알려지고 경제 수준이 향상되면서 고전 서적을 접하기 쉬운 세월이 되었다는 점이다. 하지만 고전이라는 엄청난 소재가 우리 주위에 널렸음에도 의외로 고전 책 하나 품에 안고 한장 한장 읽으며 사색하는 것을 낙으로 여기며 사는 사람은 찾기 힘들다. - -개인적으로 가장 큰 문제는 `교육방식과 교과과정`에 있다고 생각한다. 그나마 근래 탐구과제와 같은 우수한 교육과정이 생겨 우리나라에도 미래의 희망이 보이는 듯 하여 마음의 위안이 되었다. 하지만 그것도 잠시 어느덧 사교육 열풍을 잠 재운다는 이유, 입시에 비리로 활용된다는 이유로 탐구과제가 입시에 큰 영향을 미치지 못하게 되었고 안타깝게도 수요도 줄어들고 있는 듯 하다. - -빈대 잡으려다 초가삼간 태우는 교육 정책을 한 껏 비판하고 싶지만 그것은 리뷰의 취지에 어긋나므로 각설하고, 굳이 입시 점수에 반영이 되든 말든간에 탐구과제는 매우 중요하고 반드시 필요한 과정임을 꼭 강조하고 싶다. - -> 그 이유는 위에서 언급한 또 하나의 열쇠 `논문` 때문이다. - -바야흐로 `AI`(인공지능)의 시대이다. 알파고가 이세돌 9단을 이기고 4차산업 혁명이 도래하며 AI 기술 중에서도 딥러닝과 같은 기술은 이미 우리 삶에 깊숙히 침투해있고 앞으로도 우리의 삶을 크게 바꿀 것이다. - -관심있는 분들은 알겠지만 이미 인공지능은 그동안 기계는 범접할 수 없는 영역으로 여겨졌던 창작의 영역인 `바둑기사, 작곡가, 화가, 프로그래머`로써 활동하고 있다. `유튜브의 추천 알고리즘, 구글의 검색 알고리즘, 의료, 교육, 패션` 등 전 산업분야에 두루 활용되고 있다. - -이러한 시대에 언제까지 수학 문제 잘 풀어서 정확한 답을 내는데 급급한 교육을 받아야 하는가? - -이미 학창시절 부터 우리는 수학과 영어의 중요성을 뼈저리게 느끼고 있다. 가장 큰 가중치를 자랑하는 과목들이고 주위 어른들도 두과목은 언제나 잘해야 한다고 누누히 가르친다. - -> 그런데 도대체 수학과 영어는 왜 배워야 하는가? - -이상하게도 열심히 해야 하는 건 알고 있지만 왜 배워야 하는지는 모르고 살아간다. 우리의 아이들이 자유로운 생각에 제약을 받고 획일적인 기계의 부품으로 전락하는 대표적인 현상이다. - -개인적으로 수학과 영어를 잘해야 하는 이유는 한가지라고 생각한다. 그 답은 `논문을 잘 읽고 쓰기 위해서`이다. 무슨 뚱딴지 같은 소리냐고? 몇년 전 부의 추월차선이라는 베스트 셀러가 있었다. 부자가 되기 위해서는 월급으로는 불가능하고 자는 동안에도 돈을 벌어오는 파이프라인이 필수이며 우리에게 주어진 여건을 총 동원해 부를 획득할 수 있는 다른 루트를 마련해야 한다는 것이 책의 요지이다. - -> 그렇다면 계층의 추월차선은 어디에 있을까? - -그것이 논문에 있다고 말하고 싶다. 대부분의 일반인들은 성인되도록 논문을 한 번 써보기는 커녕 한편 제대로 읽어보지도 않고 살아간다. 논문은 인류 지식의 경계선 중 최전선에 배치된 지식이다. - -논문에 등장하는 지식이 책으로 전파되는데 몇 년이 걸리고 산업에 활용되기까지 몇 년이 걸린다. 논문을 읽지 않고는 한 분야의 전문가가 될 수도 없다. 그렇다면 한 분야의 전문가나 뛰어난 학자가 될 수 있을지 언정 어떻게 계층까지 추월할 수 있냐고 의문을 가질 수도 있겠다. - -사실 그렇다. 지금까지는 말이다. 그런데 앞으로는 2가지 결정적인 요소 때문에 논문 커뮤니케이션 능력이 필수인 시대가 될 것이라 말하고 싶다. - -첫번째 요소는 `시간`이다. 일단 시간에 관한 부분은 직전에 언급했듯이 인류 최전선에 배치된 지식을 빠르기 얻는데 있어 다른 경쟁자들에 비해 빠른 지식을 활용할 수 있다는 장점으로 귀결된다. 책으로 접하면 몇 년 늦어진다. 더불어 산업 분야의 트렌드를 빠르게 감지하기 어려워진다. - -그마저도 책을 좋아하는 이들의 이야기이다. 책조차 읽지 않는 대부분의 일반인들은 최첨단의 지식을 얻는데 논문을 읽는 이에 비해 최소 몇 년에서 수십 년이 뒤쳐질 수도 있다. 정보의 가치가 점점 높아지고 속도는 점점 빨라지는 현 사회에서 그렇게 늦은 정보로 무엇을 할 수 있을까? - -두번째 요소는 `AI의 등장`이다. 개인적으로 늦은 나이에 AI를 열심히 공부하고 있다. AI의 간단한 예를 빗대어 `수학과 영어가 어떻게 쓰이는지 왜 철학적 사고가 중요한지 이제는 논문의 지식을 알고 모름이 어떻게 계층까지 가를 수 있는것인지` 언급해 보겠다. - -인공지능이 학습을 한다는 표현은 많이 들어봤을 것이다. 이 학습이라는 개념을 일반인들은 사람의 학습과 비슷한 용어라고 생각하기 쉽겠지만 사실은 다르다. 쉽게 말해 인공지능의 학습이란 일종의 수학 함수 혹은 방정식을 만드는 과정이다. 수많은 데이터를 통해서 일관된 패턴, 수식을 찾는 과정이다. - -어렸을 때 주구장창 들었던 말 중의 하나가 수학 그까이꺼 배워서 어디다가 쓰냐는 말이었다. 구멍가게 잔돈 계산할 때 말고 언제 쓰냐는 것이다. 물론 지금까지의 삶은 전문 분야를 제외하고는 잔돈만 계산할 수 있으면 되었다. 그런데 이제 사정이 달라졌다. 보다 구체적으로 말해보자. - -> `미분`은 언제 쓰는가? - -미분이 바로 인공지능의 학습에 쓰인다. 앞서 얘기한 수집된 데이터로 찾아낸 수식을 만들어 가는 과정에 있어 학습을 무한으로 반복할 수는 없는 노릇이므로 언젠가는 학습을 종료해야 하는데 그때 활용된다. - -구체적으로 경사하강법이라는 기법에 쓰이는데 손실함수가 2차 방정식 이상인 경우 매끄러운 곡선을 가지므로 국소 최저점이 존재한다. 손실함수라는 것은 용어에서도 알 수 있듯이 손실의 정도를 나타내는 함수이므로 손실의 최소값 지점을 찾아야 한다. 그 최소값이 존재하는 지점에 곡선의 방향이 변하므로 미분값이 0이 된다. - -"아.. 그렇다면 미분을 잘 알아야겠구나!" 라고 생각한다면 오산이다. 그보다 중요한것은 미분을 배우고 나서 어디에 쓰는지 알아내는 사고력과 안목이다. 수학을 어디다쓰냐고 투덜댈 것이 아니라 무언가를 배웠으면 사용하는 능력을 키워야 한다는 말이다. - -곡선의 방향이 변할 때 미분값이 0이 된다는 것은 고교 수학을 배운이라면 누구나 안다. 하지만 그 지식을 도구로 삼아 자신이 원하는 창업 혹은 지적 갈구를 위해 도구로 자유롭게 사용할 줄 아는 사람이 얼마나 될까? - -> 하지만 AI 과학자들은 미분을 인공지능 학습의 `도구`로 훌륭하게 이용했다. - -현 시점 우리의 교육은 정해진 주제에 답만 잘 찾아내는 능력만을 키워준다. 그런데 AI는 반대로 행동한다. 널리고 널린 정보속에서 숨은 패턴을 찾고, 숨은 공식을 찾는다. 그 과정에서 AI 과학자들은 그동안 배운 모든 지식을 쏟아내 자신의 목표와 이상을 이룰 수 있는 도구로 활용하였다. - -그런 사고 능력은 충분한 생각 훈련을 필요로하고, 충분한 생각을 효율적으로 주고 받는 커뮤니케이션 스킬은 논문의 작성과 이해에서 온다. - -> 그럼 영어는 언제 쓰이냐고? - -현재 지식 최전선을 개척하는 대부분의 논문이 거의 영어로 쓰여져 있기 때문이다. 즉, 우리가 수학과 영어를 배우는 이유는 모두 논문 커뮤니케이션 능력을 키우기 위함이라 말하고 싶다. - -인공지능은 수학, 언어, 의료와 같은 특정 학문 혹은 업무도메인과 같은 계층의 독립 학문이 아니다. 괜히 4차 산업혁명이라는 용어로 표현되는 것이 아니다. 산업혁명 당시 기계가 모든 산업 분야에 영향을 미치는 Layer(층)였듯이 인공지능 역시 전 분야와 융합되는 Layer이다. - -앞으로 우리가 배워야 할 것은 위에서 언급한 `무에서 유를 창조하는 사고, 배웠던 학문을 자신의 목표를 위해 도구로 활용할 줄 아는 능력`이다. 보다 구체적으로는 `그런 사고력을 흡수하며 자라는 AI 기술`이며, AI 기술이 아닐지라도 `AI의 해석과 응용에 도움이 되는 각 학문 분야 최전선의 지식`들이다. - -서두가 너무 깊었음을 송구스럽게 생각하며 본 도서의 의의를 여기에 두고 싶다. 다른것은 차치하더라도 생각의 힘을 키우는 것은 시간이 매우 오래 걸린다. 취업 전선에 뛰어들어 성과를 내야 하는 직장인이 뒤늦게 깨닫고 생각의 힘을 키우고자 노력한다면 얼마나 많은 시간이 필요할까? 또, 아이를 키우고, 직장의 실적 압박속에 생각할 시간은 얼마나 줄어들까? - -모든 것이 때가 있듯 `생각의 힘을 키우는 때야말로 학창시절`이라고 말하고 싶다. 그리고 그 생각의 힘을 키우기 위해 고전을 많이 읽어 옛 선현들의 지혜속에서 문답을 해야 하고, 논문 작성 및 읽기에 초점을 맞춰야 한다. - -하지만 첫 술에 배부를 수는 없듯 논문 커뮤니케이션 능력을 단번에 얻기는 너무나 어렵다. 그래서 적절한 중간 과정의 디딤돌이 필요한데 탐구과제가 좋은 해결책이라 할 수 있다. 본 도서는 학생들이 스스로 탐구과제를 진행할 수 있도록 도와주는 제목 그대로 "끝판왕"급 가이드이다. 본 도서를 읽으며 느꼈던 장점을 아래와 같이 요약해본다. - - - * 탐구에 있어 가장 어려운 부분은 `주제 선정`이다. 논문 역시 대부분의 연구자들이 가장 어려워하고 많은 시간을 소모하는 부분이 연구 주제 선정이다. 본 도서는 저자가 무려 다섯분에 이르는 만큼 가장 어려운 부분을 등한시 하지 않았다. 주제로 여길 수 있을만한 다양한 사례부터 자신의 주위의 것들로부터 의문을 갖고 주제를 선정하는 방법까지 다양한 Tip을 제시하고 있어 마음에 들었다. - - * 더불어 실전에서 이미 경험한 `과제 탐구 활동의 패턴`을 분석하여 일반화한 것이 인상적이었다. 아래 그림에서 볼 수 있듯 시간의 흐름에 따라 과제 탐구를 안정적으로 수행할 수 있는 검증된 방법 등을 제시한다. - ![계획](https://theorydb.github.io/assets/img/review/2020-06-04-review-book-task-exploration-king-3.png) - - * 고등학교 교육과정에서 배울 수 있는 지식을 활용하여 자신의 목표 혹은 가설을 검증하여 논문과 연구로 나아갈 수 있는 `징검다리`를 제시한다. 아래 그림에서 볼 수 있듯이 활용된 기초 학문의 수준은 고등학교 과정에서 충분히 배울 수 있는 것들이다. - 중요한 것은 자신의 가설을 어떻게 측정하는지, 과학이라는 도구를 어떻게 사용하는지 매칭시키는 능력인데 이는 추후 논문을 작성하는데 있어 커다란 경험적 빼대의 역할을 하는 중요한 과정이다. 더불어 자신이 생각한 논리의 흐름을 이미 표현해 봤기에 다른 이들이 쓴 논문을 이해하는데 도움이 되는 색다른 안목을 얻게 된다. 즉, 논문 커뮤니케이션 스킬을 함양하기에 좋은 구성이다. - ![결과](https://theorydb.github.io/assets/img/review/2020-06-04-review-book-task-exploration-king-4.png) - - * 개인적으로 제일 마음에 드는 장점은 고등학교의 과정이라고 `논문을 등한시 하지 않는다`는 점이다. 논문을 읽고 인용 및 참조할 수 있는 방법을 제시하고 논문의 구조에 대해 상세히 언급하고 있어 자신의 탐구 과제를 완성한 뒤에도 지속적으로 연구자가 될 수 있는 능력을 키워준다. - ![논문](https://theorydb.github.io/assets/img/review/2020-06-04-review-book-task-exploration-king-2.png) - - * 그 외에도 유용한 `부수적인 Tip`들이 많다. 탐구라는 핵심에만 집중할 수 있도록 그 외의 레퍼런스를 편하게 학습할 수 있게 구성된 점이나 아래 그림과 같이 IT, 정보화 도구를 활용하여 탐구의 효율성을 높이고 작은 것에 좌절하지 않도록 구성한 배려가 돋보인다. - ![TIP](https://theorydb.github.io/assets/img/review/2020-06-04-review-book-task-exploration-king-5.png) - - -앞서 언급했듯 과제 탐구의 중요성은 앞으로 우리가 미래에 살아남기 위해 배워야 할 논문과 연구의 징검다리 역할에 있다. 한번 사는 인생 그저 부품으로 전락하고 싶지 않다면 입시에 반영되는 비율 따위보다는 세상을 바꾸고 이끌기 위한 최고의 투자라고 생각했으면 좋겠다. - -쉽지 않은 과정이겠지만 본 도서와 함께 한다면 원하는 바를 이룰 수 있을 것이라 말씀드리며 본 리뷰를 마친다. - ---- - -* [책소개 - 과제탐구 끝판왕](http://www.yes24.com/Product/Goods/90195338?scode=032&OzSrank=1) - - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. - - diff --git a/_posts/2020-06-09-review-book-xai.markdown b/_posts/2020-06-09-review-book-xai.markdown deleted file mode 100644 index 517dd5d60..000000000 --- a/_posts/2020-06-09-review-book-xai.markdown +++ /dev/null @@ -1,176 +0,0 @@ ---- -layout: post -title: "[리뷰] XAI 설명 가능한 인공지능 (인공지능을 해부하다)" -subtitle: "블랙박스를 이해하고 시스템의 신뢰성을 높이기 위한" -categories: review -tags: review book xai explainable artificial intelligence pfi pdp lime shap filter visualization lrp -comments: true -header-img: img/review/2020-06-05-review-book-xai-1.png ---- - -> `위키북스` 출판사의 `"XAI 설명 가능한 인공지능, 인공지능을 해부하다(안재현 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-1.png) - ---- - -* __XAI(eXplainable Artificial Intelligence, 설명 가능한 인공지능)__ - > XAI는 말 그대로 설명 가능한 인공지능을 의미한다. - - 딥러닝은 성능이 훌륭한 만큼이나 해석력이 떨어지기에 내부가 `블랙박스`로 표현되곤 한다. 1975년 Buchanan과 Shortliffe의 논문에서 설명 가능한 의사 결정 체계라는 의미로 처음 사용된 후, 2004년이 되어서야 Fisher, Rudin, Dominic에 의해 현재 의미를 뜻하는 전문 용어로 자리잡았다. - - AI는 인간의 뇌를 모방하여 탄생하였다. XAI는 거꾸로 AI의 뇌(?)를 Hacking하는 과정으로 볼 수 있겠다. 양자 간 끊임없는 Hacking 속에 우리는 인간의 지능과 인공의 지능을 더욱 잘 이해할 수 있게 될 것이므로 XAI의 중요성은 두말할 나위 없다. - - 미국의 국가 주도 첨단 기술 연구는 보통 NASA(미국 항공우주국 제트추진 연구소)와 `DARPA(방위 고등 연구 계획국)`가 이끄는데, 두 기관 중 하나인 DARPA의 인공지능 관련 프로젝트이기도 하다. DARPA의 지침에 따르면 XAI는 다음 3가지 과정을 따른다. - - + 1.기존 머신러닝 모델에 설명 가능한 기능 추가 - + 2.머신러닝 모델에 HCI(Human Computer Interaction) 기능 추가 - + 3.XAI를 통한 현재 상황의 개선 - - 최근 네이버 리서치 헤드 하정우님의 인터뷰 기사 - [OCR은 한국이 세계 최고, '설명 AI'에 승부 걸어야](https://m.news.naver.com/read.nhn?mode=LSD&mid=sec&sid1=105&oid=092&aid=0002188379&fbclid=IwAR3I1WRtx19g-frQngQOzNInv4CJINFzToxyBEaUl-kqwltpmdGiqtN4DKs) - 에서도 XAI와 HCI의 중요성을 확인할 수 있다. AI 기술이 생활속에 녹아들고 소비자가 사용하기 위해서는 XAI가 선결 과제임과 동시에 우리나라가 AI 강국으로 발돋움하기 위한 기술임을 강조한다. - - 본 리뷰에서는 먼저 본 도서의 매력에 대해 소개한 후, `다양한 XAI 기법`들을 소개하고자 한다. 배운 기술을 모두 정리해놓고 싶은 것이 쟁이의 욕심이지만 그렇게 되면 리뷰가 리뷰가 아니게 되므로, 각 기법의 의미, 활용법, 시각화 자료 위주로 소개하고자 한다. - ---- - -* __본 도서의 매력__ - 본 도서에는 두가지의 매력이 있다. 하나는 `XAI를 다룬 국내 최초 서적`이라는 점이다. 본 글을 작성하는 현시점에도 국내 유일한 서적임을 확인했다. 다른 하나는 XAI라는 어려운 기술을 독자들에게 `쉽게 전달`한다는 점이다. - - + 생활과 밀접한 `쉬운 AI 예제`를 선택한다. - - 집값예측, 신용대출, 얼굴 사진 감정 분석 등 - - 쉬운 예제 덕분에 XAI의 핵심에 집중할 수 있다. - - + AI 모델의 구현 및 `성능 고도화 과정을 분리`하여 다룬다. - - 개선이 필요한 AI모델의 핵심을 심플하게 이해할 수 있다. - - 예제 모델이 한번에 이해되지 않더라도 고도화를 통해 반복 학습이 가능하다. - - 모델 자체의 성능 향상에 대한 기법도 덤으로 배울 수 있다. - - + `가독성`이 매우 뛰어나다. - - XAI외 부수적인 선수 지식들에 대한 설명을 모두 다룬다. - - 핵심만 간결히 전달하여 이해의 흐름이 쉽게 끊기지 않는다. - - + 마무리 디테일이 강점이다. - - 각 단원마다 다양한 XAI 기술을 접하면 머리속에 한바탕 폭풍우가 휩쓴 느낌이 된다. - - 그로 인해 독자가 현 좌표를 잃기 쉬운데 단원마다 마무리 설명이 체계적으로 되어있어 현 위치를 파악할 수 있다. (예:150p) - - 8, 9장에서 앞서 배운 XAI 기법들을 총망라하여 실전에 적용한다. - - 이 과정에서 반감된 기억을 다시 언급하여 흡수할 수 있도록 이끌어 준다. - - 읽는 내내 저자 내공의 깊이에 감탄하기도 했고, 딥러닝의 뇌(?)를 해킹하는 즐거움도 있었지만 이에 못지 않게 위에서 언급한 짜임새 있는 구성에 놀랐다. 독자가 지쳐 포기할 때를 정확히 알고 있는 느낌이었고, 그때마다 저자의 묘한 티칭 기술로 구제받을 수 있었다. - - 추측컨데 본 도서의 짜임새는 아마 저자의 학습 방식과도 닮아있지 않나 생각한다. `체계화되어 핵심을 찌르는 짜임새` 덕분에 어려운 최신 기술을 편하게 얻을 수 있어 대만족이었다. - - 본 도서를 읽고나면 `XAI라는 최신기술, 현재까지의 연구성과, 블랙박스의 해석은 물론 현재 모델의 개선 방법까지` 많은 것들을 얻을 수 있다. 아는 만큼만 보인다고 나의 경우엔 학식이 얕아 기법들을 완벽히 이해하진 못했지만 2가지는 확실하게 얻을 수 있었다. - - 하나는 `Data Analysis에 있어 차원이 다른 분석 기법`을 얻었다는 점, 또 다른 하나는 `모델의 성능이 떨어질 경우 활용할 수 있는 일종의 디버깅과 유사한 기법`을 얻었다는 점이다. - - XAI 자체에 관심이 없는 분일지라도 모델의 성능을 높이는데 있어 자유로운 분들이 얼마나 될까? 그런점에서 본 도서는 AI를 다루는 모든 분들께 도움이 될 것이다. - - 이어서 개인적으로 학습한 `XAI 기법 7가지`를 아래와 같이 정리해 본다. - ---- - -* __기법1 - `피처 중요도`(Feature Importance, Permutation Importance)__ - - 모델의 피처 중 어느 피처가 가장 중요한지 나타내는 기법이다. - - 특정 피처의 값을 임의의 값으로 치환했을 때 원본보다 에러가 얼마나 더 커지는지를 판단하여 중요도를 측정한다. - - 단, 음양의 방향이 없고, scale에 따라 모델에 미치는 영향 파악이 어려우며, 피처 간 의존성 존재 시 신뢰할 수 없다. - - 아래 그림은 파마 인디언 당뇨병 결정 모델에서 트리 깊이가 3일때 가장 중요한 피처가 글루코스(Glucose, 포도당 농도)임을 보여준다. - ![피처 중요도](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-5.png) - ---- - -* __기법2 - `부분 의존성 플롯`(PDP, Partial Dependence Plots)__ - - 피처가 모델에 미치는 영향을 판단하는 기법이다. - - 특정 피처의 값을 선형적으로 변경하면서 알고리즘 해석 능력이 얼마나 증가하고 감소하는지를 관찰한다. - - 피처 중요도가 가진 단점을 상당수 보완하지만 계산이 오래걸리는 단점이 있다. - - 아래 그림은 파마 인디언 당뇨병 결정 모델에서 혈압 피처의 증감에 따른 당뇨병 발병 관계를 보여준다. - ![PDP](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-3.png) - - 파이썬의 pdpbox를 활용하여 위 그림 외에도 그린 목표 플롯, 예측에 대한 의존성 플롯, 두 피처 간 의존성 플롯, 피처간 부분 의존성 등고선 비교 등이 가능하다. - ---- - -* __기법3 - `글로벌 대리 분석`(Global Surrogate)__ - - 블랙박스 모델과 유사한 기능을 흉내내는 설명 가능한 모델 여러개를 대리로 만들어 원본 블랙박스 모델을 분석하는 기법이다. - - 아래 그림은 유사 모델로 사용할 수 있는 잘 알려진 XAI 알고리즘의 특징을 정리한 표이다. - ![GS](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-6.png) - - ---- - -* __기법4 - `로컬 대리 분석`(LIME, Local Interpretable Model-agnostic Explanations)__ - - 데이터 하나에 초점을 맞추어 블랙박스가 해석하는 과정을 분석하는 기법이다. - - 첫번째 그림은 슈퍼픽셀을 변형해가며 모델이 가장 영향을 많이 받는 `슈퍼픽셀`을 찾는 과정이다. - ![LIME1](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-7.png) - + 슈퍼픽셀이란, 특정 이미지의 관심 영역(노란색 선)을 주변으로 영역을 확대해나가며 동일한 정보를 가진다고 간주할 수 있다고 찾은 영역을 의미한다. - - 두번째 그림은 특정 텍스트를 `autos(자동차) 카테고리로 분류한 이유`를 설명한다. - ![LIME2](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-8.png) - + 우측 상단에 Not autos로 판단한 텍스트 및 autos로 판단한 텍스트 및 확률이 등장한다. - + 하단에는 해당 단어들이 하이라이트 되어 가독성을 높혀준다. - - 세번째 그림은 올리베티 이미지를 XAI한 결과이다. - ![LIME3](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-9.png) - + `분홍색` 영역은 해당 인물을 21번째 사람으로 분류한 조각이며, `파란색`은 2번째 사람, `노란색`은 도움이 되지 않는 영역이다. - - 네번째 그림은 각 N번째 사람으로 분류한 근거 이미지 조각과 `34번째 사람의 일치율`을 확인하는 과정이다. - ![LIME4](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-10.png) - - 이처럼 LIME 기법은 데이터 하나에 초점을 맞추어 결정 경계를 분석하고 모델을 수정할 방향을 찾을 수 있게 도와준다. - ---- - -* __기법5 - `SHAP`(Shapley Additive exPlanations)__ - - 섀플리값과 피처 간 독립성을 활용하여 전체 성과를 창출하는데 각 피처가 얼마나 공헌했는지 파악하는 기법이다. - - 위에서 언급한 피처 중요도의 단점 및 부분 의존성 플롯이 3차원까지의 관계만 표현할 수 있다는 한계를 극복할 수 있다. - - 단, 계산 시간이 오래걸린다. 샘플 계산량을 줄이면 오차의 분산이 커진다. 더불어 새로운 아웃라이어 데이터에 취약하다. - - 아래 그림은 보스턴 주택 가격 결정 요소와 관련하여 0번 주택의 가격에 영향을 미친 긍정, 부정의 요소를 찾아낸 결과이다. - ![SHAP1](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-11.png) - ![SHAP2](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-12.png) - ---- - -* __기법6 - `필터 시각화`(Filter Visualization)__ - - 이미지 딥러닝 계열의 은닉층에서 주로 사용하는 필터를 시각화하는 기법이다. - - 아래 그림은 숫자 2와 7의 은닉층 필터를 시각화한 결과로 숫자 2의 꼬리획을 흐리게 해석하여 성능이 저하됨을 확인할 수 있다. - ![필터 시각화](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-13.png) - - 위와 같은 문제를 발견 시, 꼬리획 특징을 분리하는 필터를 추가하거나 데이터를 키워 모델의 분별력을 키우는 등의 조치가 가능할 것이다. - ---- - -* __기법7 - `계층별 타당성 전파`(LRP, Layer-wise Relevance Propagation)__ - - 딥러닝 모델의 결과를 역추적하여 입력 이미지에 히트맵을 출력하는 기법이다. - - LIME이나 SHAP이 민감도 분석 기법인데 반해, LRP는 타당성 전파 및 분해 기법을 활용한다. - - 아래 그림은 MNIST 이미지의 LRP를 수행한 결과로 각 숫자의 주요 특징이 히트맵 표시되어 있음을 알 수 있다. - ![LRP](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-14.png) - - ---- - -* __마무리__ - 그 외 유익한 점 및 흥미로웠던 점을 정리하며 리뷰를 마칠까 한다. - - + 위 7가지 기법을 종합적으로 엮어 8, 9장 `실전연습`에서 활용할 수 있다. - - 8장 : 아래와 같이 13번째 사용자는 수입이 적었음에도 신용등급과 나이 덕분에 대출이 승인되었음을 알 수 있다. - ![신용대출](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-15.png) - - 9장 : 그림과 같이 학습한 모델에 새로운 이미지를 입력한 결과 슬픈 사진으로 판단했다. LRP는 처진 눈, 아래로 뻗은 인중 등을 주시한다. - ![슬픈사진](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-16.png) - - + XAI를 적용하여 개선할 AI에 대한 `선수 지식`을 튼튼히한다. - - 의사결정트리 모델의 설명에 앞서 엔트로피의 개념을 명확히한다. - - XGBoost의 기본원리부터 수식까지 핵심을 놓치지 않는 설명이 인상적이었다. - ![XGBoost](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-4.png) - - + 수식의 전개를 `직접 숫자까지 넣어 이해시켜주는` 친절한 책은 처음 만난것 같다. - ![엔트로피](https://theorydb.github.io/assets/img/review/2020-06-05-review-book-xai-2.png) - 위 그림은 엔트로피에 관한 수식 설명인데 보시다시피 그림 예제에 따른 숫자까지 대입해가며 설명하기에 쉽게 이해할 수 있었다. - - + 각 이론의 배경지식 및 연구성과에 대한 설명이 탄탄하며 관련 `레퍼런스`들이 각주에 친절히 안내되어 있어 참고 시 시간을 줄여준다. - - + `전처리` 과정을 비중있게 다루는 편이며 저자의 경험과 스킬이 소개된다. - - + 여담으로 저자분은 다독가이신 듯 하다. "도개교", "환원적 관점"이라는 단어는 IT서적에서는 처음본 것 같다. 그만큼 책의 가독성, 전달력이 인상깊었다. - - > "제가 학생일 땐 돈이 없어서, 그러니까 기회비용이 커서 다양한 책을 구매해보지 못했습니다." - - TensorFlow KR 페이스북 그룹에서 돈이 충분하지 않은 연구자들을 위해 진행한 안재현 저자님의 이벤트 - [인공지능 연구자들을 위해 책을 드립니다!](https://www.facebook.com/groups/TensorFlowKR/permalink/1156872661320457/) - 글 중 일부이다. - - 저자님의 따뜻한 마음씨가 감동이었고 특히 이벤트가 아니었다면 이런 멋진 책을 못보고 지나칠 뻔 했다. 보답하고픈 마음에 주저리 주저리 글은 길어졌는데 리뷰는 책의 진가에 비해 한참 모자른 것 같다. AI에 관심이 있는 분이라면 꼭 읽어보시길 추천한다. - -* [책소개 - XAI 설명 가능한 인공지능, 인공지능을 해부하다](http://www.yes24.com/Product/Goods/89583774?scode=032&OzSrank=1) - - diff --git a/_posts/2020-06-14-review-book-age-40-meet-history.markdown b/_posts/2020-06-14-review-book-age-40-meet-history.markdown deleted file mode 100644 index 4b531f108..000000000 --- a/_posts/2020-06-14-review-book-age-40-meet-history.markdown +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: post -title: "[리뷰] 마흔, 역사와 만날 시간" -subtitle: "인생의 변곡점에서 자신만의 길을 찾은 사람들" -categories: review -tags: review book 40대 인생 변곡점 역사 위인 -comments: true -header-img: img/review/2020-06-14-review-book-age-40-meet-history-1.png ---- - -> `한겨레출판` 출판사의 `"마흔, 역사와 만날 시간(김준태 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-06-14-review-book-age-40-meet-history-1.png) - ---- -어린 시절을 떠올려보면 40대 분들은 그야말로 아저씨들이었다. 그런데 막상 40의 나이가 되고 보니 어린 시절의 내가 얼마나 선입견을 가지고 살았는지 알게 되었다. - -> 40살 아저씨도 40대를 `처음` 살아가기 때문이다. - -30대 이전의 경험 덕에 세상을 좀 더 아는듯 보이지만 40대에는 이전 시절 겪지 못한 새로운 도전 과제들이 등장한다. - -연로해진 부모님과 자식들을 부양해야 하는 의무 속에 경제는 늘 위기이고 직장 생활은 승진이나 퇴직의 문제로 곪머리를 않는다. 청년때와 같은 체력과 건강이 있는것도 아니고 어르신들의 백전 노장 인생 경륜이 쌓여있는 것도 아니다. 주위의 시선 또한 너그러움이 사라지기에 저자의 말대로 한 발자국 헛디뎠다가는 곧장 낭떠러지로 떨어지고 만다. - -주위에서 기대거나 `해달라는 것들은 많은데 주겠다는 사람은 정말 찾기 힘든` 나이. 그래도 이 악물고 살아 온 나름의 역사가 있기에 끈기와 성실함 만큼은 이제 조금 알 것 같은데 막상 부딪혀보면 쉽지 않다. 시간, 돈, 체력 중 어느 하나만 받혀준다면 과감히 도전하고 싶은데 어느 것 하나 남아도는 자원이 없다. - -현실의 돌파구로 보였던 것일까? 정신없이 몰입하여 2시간 만에 책을 읽었다. TV 속 드라마도 내 얘기가 나오면 더 재미있게 몰입하게 되듯이 본 도서도 지금 나의 이야기를 다루기 때문이다. 한구절, 한단어라도 지금의 갑갑함에서 벗어날 수 있는 조금의 여지라도 얻을 수 있다면 감사하겠다는 마음으로 읽었다. 결과적으로 인사이트를 얻을 수 있었고, 애매했던 것들에 대한 생각을 조금 더 깊이있게 정리할 수 있었다. - -책의 내용은 주로 `40대 혹은 인생 후반부에 변곡점을 맞이하여 인생이 달라진 위인`들의 이야기이다. 위인들이 인생에서 어떤 `어려움`을 겪었는지, 어떤 인생관과 철학으로 고난을 `바라봤는지`, `극복 과정`은 어땠는지, `결과`는 어땠으며 `의의`는 무엇인지, 마지막으로 저자는 어떻게 생각하는지 알 수 있다. - -각자 인생을 바라보는 눈이 다르고 고민하는 주제가 다르기에 보는 사람마다 느끼는 바가 천차만별일 것이다. 비록 40대에 초점이 맞춰지긴 했지만 이 책은 누가 읽어도 좋을 듯 하다. 40대에 성공한 위인들의 얘기를 다룬것이 아니라 인생 후반부를 포커스로 다루고 있기에 40대 이상의 어르신들은 물론 곧 40대의 인생을 마주칠 후배들 또한 도움이 되기 때문이다. - -정신없이 사느라 스스로에 대해 바라볼 시간도 없었던 처지에 본 도서를 만나 생각도 많이하고, 현실의 좌표도 점검해보고, 소소한 공감과 위로도 나눌 수 있어 뜻 깊은 시간이었다. 리뷰 취지 상 도서의 내용 전부를 다룰수는 없겠지만 인상깊게 읽었던 몇 위인들의 일화를 정리해봄으로써 본 리뷰를 마치고자 한다. - ---- - -* __내 마음가짐의 중요성 - 양명학의 창시자 왕수인__ - - 여덟 환관의 모함에 곤장 40대를 맞고 면사무소 9급 직원으로 강등. 자객까지 만나며 목숨을 잃을뻔 했다. - - 보통 사람이라면 비참한 현실에 알콜 중독자로 생을 마감하기 쉽겠지만 `공자께서는 나와 같은 상황이라면 어찌하셨을까?`라는 질문을 던진다. - - 공자가 구이에서 살겠다고 하자 제자들은 누추한데 괜찮겠냐고 물었지만 `"군자가 사는데 어찌 누추하겠느냐?"`라고 반문하였다. - - 이에 중요한 것은 어떤 상황에 놓여있느냐가 아닌 `자신의 마음가짐`임을 깨닫게 된다. - - 인생의 후반부에서 훗날 용장오도라고 불리는 이러한 깨달음을 통해 양명학의 창시자가 된다. - -* __자만심의 결과 - 제나라 환공__ - - 제나라의 환공은 연나라 군주가 제나라 국경을 넘어 환공을 환송하러 온 일화에서 "천자가 아닌 제후끼리는 국경을 넘어 환송할 수 없게 되어 있습니다. 연에 무례를 저지를 수는 없지요."라며 `연의 군주가 지나온 제나라 땅을 모두` 연나라에게 내어줄 정도로 겸손하고 예의바른 군주였다. - - 늘 승승장구했던 세월 속에 간신 세사람을 총애하게 된다. 자신의 아들을 삶아 바친 역아, 스스로 거세하여 환관이 된 수초, 부모가 죽었음에도 군주 곁을 떠나지 않은 개방. - - 결국 관중, 포숙아 등의 명재상을 옆에 두고도 세 간신의 포위속에 비참한 죽음을 맞이한다. - - `자만심이 마음을 치우치게 만들면 아무리 머리가 좋고 자질이 뛰어난 사람일지라도 올바른 행동을 하기가 힘들다.` - -* __꼰대의 대명사 - 선조__ - - 보통 사람은 먹고 살기 바빠서 욕망에 빠질 형편이 못되거나 법이 두려워 함부로 행동하지는 않는다. - - 하지만 임금은 다르다. 주어진 권력과 풍요는 잠시만 방심해도 나태하고 방종하게 만든다. - - 나이가 들어가며 조직의 `리더`가 되어가든 `일확천금`으로 막대한 돈을 얻든 그것들에게 잡아먹히지 않는 `그릇`이 되려면 독선과 아집을 경계해야 한다. - -* __인생의 위기속에서 `살아가야 할 이유`의 중요성 - 강항, 사마천__ - - 강항은 임진왜란 때 포로가 된 삶의 기록 간양록을 남긴다. 포로 압송 과정에서 극도의 고통을 받았음은 물론이거니와 어린 아들과 딸이 파도에 휩쓸려 살려달라는 처절한 울음속에 죽음을 맞이한 과정을 목도한다. 보통사람이라면 폐인이 되거나 죽음을 택했겠지만 일본 장수들의 인적사항에서 행정, 지리적인 정보에 이르기까지 정리하여 조선에 보고한다. - - 한무제에게 직언한 이유로 분노를 사 궁형에 처했으나 한나라의 역사를 기록해야 한다는 삶의 이유로 치욕과 멸시를 뒤로하고 자신의 사명을 다해 역사서 사기를 남긴다. - -* __위기를 기회로 - 이홍장, 정약용, 정조, 김득신__ - - 시모노세키 조약 협상과정에서 총격을 당한 이홍장은 왼쪽 `광대뼝 아래에 탄알`이 박혔으나 수술도 거부하고 협상에 임해 분위기, 여론을 협상에 유리하게 돌리게 된다. 그로 인해 일본의 당초 요구안을 현격히 낮춰 자국의 피해를 최소화하는 협상을 이끌어 낸다. - - 자신의 든든한 보호막이었던 정조가 승하하여 18년이나 유배생활을 보냈음에도 인생을 한탄할 시간에 경세유표, 목민심서 등 학문을 집대성한다. - - 사도세자의 죽음 및 연산군의 전례라는 프레임에 국본의 지위가 늘 위태로웠으나 `위기속에 갈고닦은 실력` 하나로 왕권강화 및 개혁을 이루어 낸다. 얼마나 엄격하게 실력을 갈고 닦았는지 정조가 남긴 말들이 기억에 남는다. - > "`하루`동안 생각한 것과 실천한 것을 점검하여 `하나라도` 내세울 만한 것이 없으면 밥상을 마주해도 수저를 들고 싶은 생각이 들지 않았다." - > "`정성`을 다했는데도 감동시키지 못하고, `감동`시킬 정도가 되었는데도 `응하지 않는 일`이란 없다." - - 어릴적 질병을 앓아 지각 능력이 크게 저하된 김득신은 사기의 백이전은 `11만 1천번`을, 노자전은 2만번을, 중용장구 또한 2만번을 읽어 `59세`의 나이로 문과에 급제한다. - -* __`조직`에서 살아가는 법 - 이원익, 강감찬, 제갈량, 서희, 흥성대원군, 이남규, 정도전, 인조__ - - 이원익은 의심 많기로는 둘째가라면 서러운 선조, 광해군, 인조에게 늘 칭찬을 들을 정도로 왕의 어려움을 긁어줄 줄 아는 능력이 있었다. - - 강감찬은 `특정 분야의 전문가가 되어 대체불가한 존재`가 된다면 언젠가는 중히 쓰일 수 있다 생각했다. 나라에는 아주 필요하지만 당장 `사람들이 관심을 두지 않는 일`. 고려의 북쪽 국경 및 거란족의 동향을 면밀히 살펴 기회를 얻고 귀주대첩을 대승으로 이끈다. 조직내에 `나만이 할 수 있는 영역`을 만든다는 것이 얼마나 중요한지 일깨워주는 사례이다. - - 제갈량의 적벽대전 협상에서 특히 눈여겨 볼만한 대목은 아쉬운 이가 우물물을 파듯 오로 하여금 `연대할 생각이 없는 듯 연출해 조바심`을 일으킨 점이다. 더불어 손권, 주화파의 `자존심`을 건드려 감정적으로 자극하여 협상에서 유리한 고지를 점령하기도 했다. 담판은 언제나 유리한 상황에서 벌어지는 것이 아니므로 불리한 여건을 딛고 이익을 관철하는 것이 중요하다. - - 외교의 정석으로 유명한 서희는 `상대가 원하는 것`이 무엇인지 간파하는 능력이 탁월했다. 거란이 고려를 정벌하겠다고 마음 먹었다면 사신을 보내 귀부니 뭐니 고려의 반응을 살필 이유가 없으며 이는 원하는것이 다른데 있음을 간파한다. 더욱이 당시 `국제정세라는 객관적인 정보`에 입각하여 송나라를 등지고 고려와 전면전을 벌일 수 없음을 파악했다. - - 흥선대원군이 기득권을 등지고 서원철폐에 성공하는 과정이 흥미롭다. 백성의 고통을 줄이기 위함이라는 명분싸움에서의 승리, 8년에 걸친 점진적 시행으로 부작용을 최소화하였는데 불가능에 가까운 일을 성사시키기 위해 보고 배울점이 많다. - - 자신의 신념을 지키기 위해 상소문에 쓴 이남규의 글이 인상적이다. - > 아무래도 신이 목숨을 바칠 때인가 보옵니다. - 조직이 자신의 신념에 어긋남에도 사표를 던지지 못하는 대부분의 직장인들. 정이나 충성심과 같은 도덕적 의무기제, 동종업계 괘씸죄에 대한 두려움 속에서 고민이 많을 때 이남규가 보여준 마흔의 용기는 좋은 반면 거울이 될 듯하다. - - 조선의 공동 창업자 정도전은 대의와 실력이 출중했으나 왕의 후계자를 선정하는 과정에서 선을 넘고 원칙을 어겨 죽음을 맞이한다. - - 현실을 냉철히 인지하지 못하고 걱정으로 인한 스트레스를 견디지 못해 `통제 환상`을 가졌던 전형적인 인물이 인조이다. 병자호란에 대한 아무런 대비책 없이 자존심만 내세우다 삼전도의 치욕을 겪고 그 책임은 신하들에게 묻는 전형적인 최악의 상관이 되었다. 인조와 같은 유형은 상사로도 흔하지만 우리 자신에게도 흔한 성향이다. - -* __사람과의 `관계` - 친구, 스승, 부모, 상사 등__ - - 김유신과 김춘추의 관계에서 볼 수 있듯 서로가 필요로 하는 부분을 채워주는 것이 중요하며, 그 출발은 `상대방에게 도움을 줄 수 있는 사람`이 되는 것에 있다. - - 당태종과 위징의 관계에서 올바른 상사란 `나를 더 나은 사람으로` 만들어 줄 수 있는 상사, `조언과 아이디어를 수용하고 지원`해주는 상사임을 배울 수 있다. - - 공자와 제자들의 관계에서 `부족한 점`을 일깨워주고 `자발적`으로 고쳐나갈 수 있도록 도와주는 것이 스승의 중요한 덕목임을 알 수 있다. - - 정조와 홍국영의 관계에서 `선`을 넘고, 역린을 건드리는 것이 관계를 깨뜨리는 지름길임을 알 수 있다. - - 진정한 우정은 이시백, 장유, 조익, 최명길과 같은 사우(四友)에서 엿볼 수 있다. 정치적인 의견이 달라 격한 논쟁을 벌이며 얼굴을 붉히다가도, 마음을 나눌 수 있는 벗이라 마음을 표현하기도 한다. 진정한 친구는 `차이를 존중하고 다름을 이해할 수 있는` 관계에서 비롯되는 듯 하다. - - 주희와 진량 처럼 `라이벌`이 있어야 모두 건강하게 성장할 수 있음을 알아야 한다. - - 부부 관계 및 가정의 `화목`에 문제가 있다면 퇴계 선생의 편지와 생각에서 교훈을 얻어라. - - 역사적으로 유명한 위인이나 학자의 자식이 부모를 넘어서는 모습을 보기 어려운 대표적인 예는 영조와 사도세자의 관계에서 찾을 수 있다. 나중에 자식을 낳아보면 알 것이라는 `소통을 포기하는 말` 따위나, 부모의 잣대로 `자식을 재단`하는 등 욕심이 크고 의욕이 넘칠수록 순리를 벗어날 수 있음을 유념해야 한다. - - 황희는 처음부터 청백리의 정승이 아니었다. 부정부패로 일심았던 그의 청년 시절이 영의정에 오른 후 늙으막에 바뀔 수 있었던것은 `끊임없는 세종의 용서`와 이를 바라보는 자신의 양심 덕분이었다. 반대로 문학이 으뜸가는 거장이라는 극찬을 받을 정도의 재능을 지녔던 김석주는 `숙종이 정치적인 역할을 부여`함으로써 권모술수의 화신으로 남게되었다. 주위의 인간 관계 특히, 주위에 `나의 쓰임을 결정하는 사람`에 따라 인생이 180도 달라질 수 있음을 보여주는 대표적인 사례이다. - -* [책소개 - 마흔, 역사와 만날 시간](http://www.yes24.com/Product/goods/90399903) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. - - diff --git a/_posts/2020-06-15-review-book-gift-my-children.markdown b/_posts/2020-06-15-review-book-gift-my-children.markdown deleted file mode 100644 index dcd05e4fe..000000000 --- a/_posts/2020-06-15-review-book-gift-my-children.markdown +++ /dev/null @@ -1,100 +0,0 @@ ---- -layout: post -title: "[리뷰] 내 아이들에게 주는 선물" -subtitle: "억만장자 아버지가 들려주는 인생과 투자에 대한 조언" -categories: review -tags: review book 인생 투자 조언 아이들 선물 -comments: true -header-img: img/review/review-book-gift-my-children-1.png ---- - -> `이레미디어` 출판사의 `"내 아이들에게 주는 선물(짐 로저스 저/이은주 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-gift-my-children-1.png) - ---- - -이 책은 짐 로저스가 자신의 인생에서 얻은 삶의 교훈을 엮은 책이자 두 딸들과 독자를 위한 선물이다. 짐 로저스는 `4200%`의 수익률을 자랑한 퀀텀펀드의 공동 창업자로 `억만장자`의 반열에 오른 자산가이자 `기네스 기록 3개`를 보유한 이색적인 경력의 소유자다. - -아래 사진은 책에 소개된 짐 로저스의 여러장의 가족 사진 중 한장이다. 여담으로 처음엔 딸이 셋인줄 알았다. ~~ㅎㅎㅎ~~ 자세히 보니 젊은 아내가 한 분있고, 두 딸이 있음을 알게 되었는데 억만장자는 역시 클라스가 다르다고 느꼈다.(물론 농담이다.) -![짐 로저스의 가족](https://theorydb.github.io/assets/img/review/review-book-gift-my-children-2.png) - -여튼 세계를 누비며 모험을 즐기고 가족들과 행복한 일상의 즐기는 그의 일상이 부러워 보였다. 그만큼 행복을 아는 성공한 사람이 전하는 교훈을 얻을 수 있다면 나 또한 그렇게 될 수 있을까? - -사실 짐 로저스가 누구인지 잘 몰랐다가 책의 맨 마지막에 소개글을 통해 알게 되었다. 저자는 책에서 딸들에게 편견을 멀리하고 겸손의 중요성을 여러차례 강조하는데 이러한 그의 철학이 녹아서일까? 보통 저자의 약력은 책의 객관성을 확보하기 위해 서두에 배치하던데 마지막에 언급된 구성이 독특했다. - -대부분의 자기계발서 혹은 인생에 대한 조언서는 누구나 알고 있는 혹은 교과서적인 말들로 채워져있다. 하지만 저자의 약력이 먼저 소개가 되었다면 억만장자이자 세계 최고의 명문대학을 졸업하고 기네스 기록을 3개나 보유한 인생의 후광에 가려 저자가 전달하고자 하는 메시지를 담백하게 받아들이진 못했을 것이다. 색 안경을 끼고 비판적인 사고없이 무조건 받아들여야 한다는 생각이 지배적으로 작용했을 듯 하다. - -덕분에 책을 덮고나서 진실성이 와 닿았다. 세상 어느 부모가 자식의 이름을 걸고 앞날을 위해 쓴 책에 거짓이나 위선을 담았겠느냐 만은 이런 사소한 구성 하나도 적어도 내게는 설득력을 높여주었다. - -또 한가지 독특한 것은 서문에 한국과 한국의 독자들을 언급하여 놀랐다. 싱가포르에 거주 중인 미국인이 한국의 독자들에게 메시지를 던지고 있어 한국어판 서문을 별도로 만든것인지 궁금했는데 다 읽은 후 찾아보니 세계 최초로 한국에 개정판을 발간했기 때문이라 한다. 왜 굳이 한국에 최초로 개정판을 소개한 것인지 이유가 궁금하지만 서문에 따르면 저자는 한국이 향후 미래에 세계의 중심이 될 것이라 생각한다는 점이 한 몫하지 않았을까 싶다. - -세상에 많은 행복의 순간이 있겠지만 그 어느것도 부모가 된 기쁨에 비할 수는 없다는 것을 자식을 낳아본 모든 부모는 느낄 것이다. 더불어 자식을 향한 부모의 사랑보다 더 큰 사랑은 없다는 사실도 말이다. 억만장자라고 다를 바 있을까? 역시나 저자 또한 두 딸들에게 부모가 된 행복과 자식에 대한 소중함을 고백하는 글로 서문의 운을 띄운다. - -읽는 내내 저자가 두 딸을 사랑하는 마음이 전해져 훈훈했다. 더불어 뻔히 아는 원칙속에서도 `나의 과거 혹은 현재`의 상황과 비추어보며 스스로의 인생의 `좌표`를 돌아볼 수 있는 계기가 되었다. `스스로 옳다고 생각하는 길을 남들이 우려스러운 시선으로 바라볼 때 조금은 자신감이 줄어들기도 했는데 저자의 인생과 조언을 통해 굳건한 확신을 얻을 수 있었던 점은 큰 소득`이었다. - -더불어 내 아들에게도 도움이 될 수 있는 교육 방식에 깊은 고민을 할 수 있었고, 스스로의 인생에서 얻은 교훈도 정리해 볼 수 있는 기회가 되었다. 책의 제목에 선물이라는 단어가 담겨있 듯 여러모로 이 책은 나와 가족들에게 많은 선물을 준 듯하다. 리뷰의 제약상 모든 것을 언급하긴 어렵겠지만 그 중 가장 인상적이었던 몇 가지 메시지를 추려보며 본 리뷰를 마친다. - - -* __학창시절__ - > (왕따에 관하여) 나는 너희가 괴롭힘을 목격했을 때 `용기있게 나서서 알릴 줄 아는 강인함과 도덕성을 갖춘` 그런 사람이기를 바란다. - - > (시험을 잘 보는 법) 문제의 뜻을 확실히 이해한 다음, 쓴 답을 다시 확인하라! - -* __절대로 하지 말아야 할 일__ - > (문신에 관해) 인생을 살다보면 `아주 많은 부분에서 마음이 수십 번도 더 바뀐다.` 찰스라는 사람과 결혼하게 되었는데 몸에 밥이라는 남자 이름이 새겨져 평생 지워지지 않으면 얼마나 끔찍할지 생각해봐라. - - > (석사과정 마지막 학기 학위를 받지 못해 자살한 젊은이에 대해) 앞으로 성공할 기회는 수도 없이 많았을 것이다. 그러나 안타깝게도 너무 빨리 포기했기 때문에...(중략) 고통이 두려워 첫 번째 아내와 헤어지지 않았다면 정말 좋아하는 지금의 아내를 만날 수 있었을지, 너희를 만날 수 있었을까? `시간이 자니면 모든일이 달라지고 결국엔 다 잘 풀릴 수 있다.` - -* __성공__ - > (실패에 관하여) 실패하면 거기에서 교훈을 얻고, 포기하지 않는 불굴의 정신도 배운다. 실패할때마다 해결책이 하나 있다. `"다시 해봐."` - - > (유년 시절의 아르바이트의 중요성) 정시에 출근하는 것부터 자제력을 키울 수 있고, 마주치지 않고 싶은 사람과의 인간 관계를 배우며, 돈의 생리를 얻을 수 있다. - - > (질문하는 용기) 어떤 일이든 `나중에 바로잡기보다는 처음부터 제대로 하는 편이 훨씬 쉽다.` 질문하지 않아서 일을 망치게 되면 2가지 면에서 문제가 생긴다. 하나는 너희가 잘못한 부분을 찾아내는 수고를 해야한다는 것이고, 다른 하나는 바로잡는데 시간이 아주 많이 걸린다는 것이다. - - > (수면) 가능한 많이 자라. 자명종을 사용하지 않고 몸이 알아서 깼을 때 일어나는 것이 가장 이상적이다. - -* __재능, 마음__ - > (재능) 남들이 비웃으면 비웃을수록 그 일에서 성공할 가능성이 더 커진다. - - > (첫사랑) 철없는 사랑은 덧없이 지나가기 쉽다. - - > (실연) 그 나이 때 남자애들은 테스토스테론(남성 호르몬) 수치가 매우 높다는 점이다. 또 허풍이 심해서 자신이 정복한 여자애들에 관해 한껏 부풀려 말하고 다닌다는 사실도 알아야 한다. 실연은 내 인생의 큰 실패였고, 게다가 공공연하게 드러나버리는 실패라서 더 참기 힘들었다. - - > (진정한 친구) 어려울 때 무조건적인 지지와 응원을 보냈던 친구는 상상 이상으로 너무 고마워했다. - - -* __품위있는 삶__ - > (옷차림) 고상한 옷차림으로 품위 있게 보이면 반쯤 걸치다 만 옷차림 탓을 했을 때보다 주변 사람들이 너희를 더 존중하게 된다. - - > (겸손) `돈에 관한 이야기는 하지 않는 편이 낫다.` - - > (경청의 중요성) 한 중국 회사의 이사가 된 후 `경청의 자세` 덕분에 이 회사가 자사에 상을 줬고 함께 상을 받은 정부 관료가 누군지도 모르는 사실을 알게 되었다. 덕분에 회사와 계약 갱신을 하지 않았는데 6개월 후 CEO가 횡령과 사기 협의로 투옥되었다. 그렇긴해도 회사의 주식을 처분하지 않았기 때문에 재정적으로 큰 타격을 입기는 했다. - - > (고독함) 일을 도모하고 있거나 어려운 문제에 봉착할 때면 혼자가 되어보라. - -* __모험, 돈__ - > (모험에 관하여) 늘 가던 길에서 많이 벗어나면 벗어날수록 더 좋다. 대다수 사람의 생각과는 달리 그 위험하다는 곳이 사실 전혀 위험하지 않다는 사실을 알고 있기 때문이다. 모험을 두려워하지 않는 용감함을 갖추면 새로운 것을 다양하게 경험할 기회가 많이 생긴다는 사실을 알았다. - - > (성공적인 투자에 관하여) 반드시 `잘 아는` 정보, 종목에 집중하라. `최신 정보`에 휘둘리지 마라. 평생의 투자 기회가 `25회` 밖에 없다고 생각하라. 큰 성공을 얻으면 자신감이 자만에 이르므로 흥분이 가라앉고 자만과 오만에 가득한 마음이 잦아들 때까지 기다려라. `손실을 낼 바에야` 투자금을 그냥 지니고 있는 편이 낫다. - -* __마무리 교훈__ - - 남의 험담이나 판단에 연연하지 마라. `자신에 대해서는 자신이 가장 잘 아는 법`이다. - - 자신의 `장점과 단점`을 알아야 한다. `자신의 생각`을 명확히 이해하도록 해라. - - 돈 보다는 매일, 매순간 뭔가를 배우기 위한 인생을 살아라. - - 두려움에 무릎을 꿇어서는 안 된다. - - `그럴만한 가치가 있는 사람들`에게 너희의 시간을 할애하라. - - 더치 리치와 같은 안전한 `습관`을 몸에 완전히 익혀라. - - 어떤일이든 `할 수 있을 때 최대한 많이` 해둬라. - -삶은 짧기 때문에 한 사람의 인생만으로 모든 이에게 일반화 되는 원칙을 수립하기란 거의 불가능하다. 뻔해 보이는 말도 지금 내가 처한 상황과 타이밍에 따라 원효대사의 해골물이 될 수도 있고 식상한 도덕 교과서가 될 수도 있기 때문이다. - -그러므로 이런 인생의 교훈들은 받아들이는 사람의 자세와 안목이 중요하다고 생각한다. 앞서 언급했듯이 나는 나대로 아들을 키워야하는 방식에서 인사이트를 얻을 수 있었고, 스스로의 삶에서는 `남들이 비웃으면 비웃을수록 그 일에서 성공할 가능성이 더 커진다.`라는 확신을 얻게 되었다. 여러분께는 어떤 인사이트와 교훈가 선물이 될 수 있을지 궁금하다. - -두 딸에게 쓴 글이니 만큼 책은 1 ~ 2시간이면 술술 읽힌다. 인생의 작은 시간을 투자하여 짐 로저스가 주는 선물을 받아보시는 것도 나쁘지 않을 듯 하다. - ---- - -* [책소개 - 내 아이들에게 주는 선물](http://www.yes24.com/Product/Goods/90400344?scode=032&OzSrank=1) - diff --git a/_posts/2020-06-17-review-book-defending-number.markdown b/_posts/2020-06-17-review-book-defending-number.markdown deleted file mode 100644 index af6fcc852..000000000 --- a/_posts/2020-06-17-review-book-defending-number.markdown +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: post -title: "[리뷰] 숫자가 만만해지는 책" -subtitle: "한 번 배우고 평생 써먹는 숫자 감각 기르기" -categories: review -tags: review book 숫자 방어 감각 어림산 페르미 추정 통계 커니헨 -comments: true -header-img: img/review/review-book-defending-number-1.png ---- - -> `어크로스` 출판사의 `"숫자가 만만해지는 책(브라이언 W. 커니핸 저/양병찬 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-defending-number-1.png) - ---- - -> 세상에는 얼마나 많은 자동차가 있을까? - -첫페이지 첫번째 문장이다. 조금 막막하다. 하지만 틀려도 아무 문제 없으니 이 첫번째 문장을 잠시나마 시간을 가지고 나름의 방식으로 풀어보자. 본 도서의 가장 핵심이 되는 질문이자 일상에서 숫자를 보는 감각을 바꿔주는 가장 중요한 `준비 운동`이기 때문이다. 책을 보면 알겠지만 전혀 어렵지 않은 방법으로 풀이를 전개하는 과정이 인상적이다. - -이 책은 크게 요약해보자면 사기 치려는 불순한 세력들의 숫자 장난으로부터 `4칙 연산만 가지고도 자신을 방어하는 방법`이라고 할 수 있겠다. 전체적인 구성은 다음과 같다. -* 명백히 틀린 숫자의 사례 -* 그게 틀렸음을 추론하는 방법 -* 옳을 가능성이 높은 숫자 추정 -* 일반적인 교훈 얻기 - -말로 재미있게 풀어쓴 사례를 하나하나 따라가다보면 어느덧 4칙 연산만으로도 숫자와 친숙해질 기회를 얻을 수 있다. - -본 도서의 저자는 컴퓨터 프로그래밍 언어 중 유명한 `C언어의 창시자` 프린스턴대학교 컴퓨터 과학과 교수 브라이언 W. 커니핸이다. 지식의 정점에 닿아있는 교수님이 이렇게 쉬운 센스있는 일상 문제로 일반인들을 위한 쉬운 풀이 및 접근법을 제공한다는 것이 흥미로웠다. - -원서의 제목은 Defending Yourself in a World of Too Many Numbers으로 본 책을 다 읽은 시점에서는 숫자로부터 자신을 보호하기 정도의 의미로 해석된다. 한국어 번역본의 제목처럼 결국은 숫자가 만만해지기도 하고 평생 써먹는 숫자 감각을 기를 수 있기에 의미가 통한다 볼 수도 있겠지만 그래도 내게는 불순한 세력들이 숫자로 장난치는 것으로 부터 당하지 않는 비법으로 해석되었다면 더욱 와 닿았을 듯 하다. - -책에서 인상 깊게 배웠던 비법들을 아래와 같이 정리해 보았다. - -* __페르미 추정__ - 엔리코 페르미는 원자폭탄을 만든 물리학자로 수많은 재능 중 가장 널리 알려진 재능은 `충분한 정보가 없는 양에 대해 정확한 추정치를 제시하는 능력`이었다. 오늘날 그런 추정 문제를 `페르미 문제`라고 한다. 유명한 페르미 문제를 몇가지 소개하면 다음과 같다. - - 시카고에는 피아노 조율사가 몇 명이나 있을까? - - 통상적인 간격을 유지한다는 가정하에, 주어진 공간에 얼마나 많은 사람들이 들어갈까? - - 매년 가을 잔디를 관리할 때, 갈퀴로 긁어내야 하는 나뭇잎은 몇 장이나 될까? - 페르미 문제는 구글 등 실리콘 밸리의 입사문제로도 유명하다. 페르미 문제가 각광을 받는 이유는 `창의성의 발로`이기 때문이다. 아무것도 없는 무에서 유를 창조할 때 무의 실체를 조금이나마 짚어볼 수 있다면 많은 생각들이 비집고 나올 틈이 생긴다. - -* __통계의 거짓말__ - 통계는 일상생활에서 다양하게 사용되며 일반인들도 유용하게 활용한다. 신문기사에 제법 큰수나 그럴듯한 단위를 가진 숫자를 보면 우리는 숫자 감각이 마비되고, 의례 맞겠구나 여기고 믿고 지나가는 경향이 있다. 저자는 다음과 같이 최소한의 숫자 사기의 방어를 위한 몇가지 Tip을 제시한다. - - 이미 원본 데이터에 `유효숫자`가 가득한 평균은 실제와 다를 수 있다. (특정 대학 출신들의 소득 평균) - - `아웃라이어` 값의 위력 (하버드 동문들의 임금 평균을 계산시 중퇴자까지 포함한다면 빌게이츠 같은 전세계 최고 수준의 부자들이 포함된다. 이로인해 평균은 급상승하고 마치 동문 대부분이 실제 이상으로 부유하게 사는 것으로 보일 수 있다. 이런 경우 중앙값을 통해 특징을 달리 해석해볼 수 있다.) - - 설문에 참여한 이들의 `편향`이 존재할 수 있다. (상대적으로 성공한 졸업생들만 임금 설문조사에 참여한 경우) - - 생존자 편향 : 대표성이 없는 표본을 들이대며 일반론을 펼치는 오류 (흡연가 블로거가 흡연이 사망과 무관하다고 주장하는 경우) - - `상관관계와 인과관계` : 두 수치가 비례적으로 변화한다고 해서 하나가 다른 하나를 초래하는 것은 아니다. (아이스크림이 많이 팔리면 상어에게 죽는 사람이 많다.) - -* __그래프의 속임수__ - 불순한 의도를 가지고 그래픽의 시각화를 이용하면 받아들이는 사람은 속을 수 밖에 없다. 그 대표적인 예는 다음과 같다. - - `Y축` 생략 : 주가지수의 Y축이 1만선 ~ 1만 1천선만 나타낸다면, 0 ~ 1만1천선의 그래프에 비해 개미들의 심리에 영향을 줄 수 있다. (물결선도 마찬가지) - - `X축` 생략 : x축이 20세 이상, 20대, 40대, 60대 이상과 같이 균일하지 않다면 불순한 의도를 찾아볼 필요가 있다. - - `원` 그래프 : 1차원이냐, 2차원이냐에 따라 특정 비율이 더욱 확대되어 보인다. 대선 지지율과 같은 정치 의도에 반영될 수 있다. - - 비율의 변화에 `차원`을 활용 : 원 그래프는 기본적으로 pi(3.14)가 곱해지므로 더욱 증가율이 부각될 수 있다. - - 마찬가지로, 1차원을 2차 혹은 3차원으로 표현하는 경우도 제곱, 세제곱의 왜곡 효과를 가진다. - -* __간편셈(어림산)__ - - 오차범위를 확보하고 `대략적인 숫자`로 표현하여 계산한다. - - `2^(n*10) = 10^(n*3)` 은 거의 유사하다. (예: 1024 = 2^(1*10) = 10^(1*3)) - - `72의 법칙` : 어떤 금액이 단위 기간당 x퍼센트의 복리로 불어난다면, 두배가 되기까지 걸리는 시간은 72/x - - 퍼센트(%)와 퍼센트 포인트의 차이(%p) - - 올라갈 때와 내려갈 때는 `변화율`이 다르다. (주식 수익률) - -* __그 외 유용한 기법들__ - - 매우 큰수가 있다면 개인 혹은 가족의 문제라고 생각하여 `1인당, 1가구당의 개념으로 숫자를 작게` 만들어라. - - 과도한 정밀성이 보일 경우 강력한 인상을 품은 `의도` 혹은 `맹목`적인 계산기 사용(단위 무시)등의 오류 존재 가능성이 있다. - - 계산기를 다룰때 실수했는지 검증하는 방법으로 `자릿수를 짐작`하고 있으면 검산에 도움이 된다. - - `물리학 상수, 단위 전환율`을 아는 것은 늘 도움이 된다. - -숫자에 막연한 공포가 있거나 그로 인해 일상에 어려움이 있으셨던 분 혹은 (그런일이 있어서는 안되지만) 사기를 당한 경험이 있으셨던 분들은 일독을 권한다. 특히 수학을 배우기 시작하는 학생들에게는 숫자에 대한 부담감을 줄이고 수학과 좋은 인연을 쌓는데 좋은 솔루션이 될 것이다. - -* [책소개 - 숫자가 만만해지는 책](http://www.yes24.com/Product/Goods/90002377?scode=032&OzSrank=1) - diff --git a/_posts/2020-06-18-review-book-lab-rats.markdown b/_posts/2020-06-18-review-book-lab-rats.markdown deleted file mode 100644 index 2b05944fb..000000000 --- a/_posts/2020-06-18-review-book-lab-rats.markdown +++ /dev/null @@ -1,65 +0,0 @@ ---- -layout: post -title: "[리뷰] 실험실의 쥐" -subtitle: "왜 일할수록 우리는 힘들어지는가" -categories: review -tags: review book 실험실 쥐 직장 노예 노동 인권 실리콘밸리 -comments: true -header-img: img/review/review-book-lab-rats-1.png ---- - -> `프런티어(한경BP)` 출판사의 `"실험실의 쥐(댄 라이언스 저/이윤진 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-lab-rats-1.png) - ---- -실리콘밸리로 대표되는 미국의 테크기업에는 늘 환상이 있다. 구글, 애플, 페이스북, 넷플릭스, 테슬라 등 열거하면 끝도 없는 회사들이 AI부터 4차 산업혁명에 이르기까지 세상의 변화를 주도한다. 누구나 세계를 이끄는 기업에 입사하고 싶어하며, 이들이 만든 제품 혹은 서비스를 사용하고 싶어한다. 이들 대부분이 공통적으로 하는 말이 있다. -> 지금까지 없었던 `가치`를 만듭니다. 더 나은 세상을 만듭니다. - -이 책을 한마디로 요약해보자면, 여기에 한 문장만 추가하면 된다. -> 그 가치는 여러분이 고객일 때(돈을 쓸 때)`만` 이용하실 수 있습니다. - -조금 더 구체적으로 표현하면 한 문장을 더 추가하면 된다. -> 대신 가치를 이용하기 위한 돈을 벌기 위해 우리 회사의 `노동자`로 일한다면, 이 은탄환(Silver Bullet)으로 보이는 가치를 위한 온갖 Trade-Off를 모두 감당하셔야 합니다. - -1부는 우리의 직장 생활이 어쩌다 이 지경이 되었는지 알아본다. 저자의 전작 천재들의 대참사라는 책에서 피드백을 받은 다양한 계층의 독자들의 고민 속에 현대 자본주의 사회가 가진 맹점을 파헤친다. - -2부는 직장 생활을 힘들게 만든 결정적인 요소들을 다룬다. `돈, 고용의 불안정성, 변화, 비인간화`에 관련된 기업과 노동이 현재 갖고 있는 위치 및 트렌드에 대해 알 수 있다. - -마지막으로 3부에서는 `지속가능한 일자리`에 대해 알아본다. 위에서 신랄하게 비판한 자본주의의 행태속에서도 기본에 충실한 기업들에 대해 알아본다. 이를 통해 이직해야 할 기업을 고르는 눈을 키울수도 있고, 개인적으로 어떻게 하면 행복하게 먹고 살 수 있을지, 어떤 길로 나아가야 할지 답을 얻을 수도 있을것이다. - -저자 댄 라이언스는 개인적으로 좋아하는 미드 실리콘밸리 시즌 1,2의 극작가로 참여한 사람이다. 기술 분야 최고의 저널리스트로 활동하다 50대의 나이로 스타트업에 도전하는 멋진 용기를 가진 베스트셀러 작가이기도 하다. 저자가 스타트업 생활에서 느낀 것들이 본문에 상당 분량 소개되기도 하고 자신의 경험을 통해 우리가 느꼈던 고충을 속 시원히 대변한다. - -본 도서의 가장 큰 매력은 누구에게나 선망 받을 만한 `당연했던 것들에 대한 냉철한 비판`이다. - -* 실리콘밸리 기업 문화 - 앞서 언급했듯 실리콘밸리의 기업들이 추구하는 가치는 `돈 버는 사람과 돈 쓰는 사람`들을 차별한다. - -* 최신 경영기법 - IT 개발자로서 실리콘밸리에 대한 환상이 있었다. 때로는 그 안의 구성원이 되고 싶기도 했고, 때로는 한국에 있을지라도 그들이 말하는 세상을 변화시키는 가치를 만들줄 아는 혁신가가 되고 싶기도 했다. 한편 `애자일, 린스타트업, 개방적인 공간 문화`에는 물음표를 찍기도 했다. 과연 그것들의 정확한 의미는 무엇이고, 정말 좋은 것인가? - -* 돈버는 방법과 트렌드 - - 돈이 모두에게 가지는 가치는 각자 다르겠지만 그래도 제법 중요한 포션을 차지할 것이다. 나 역시 돈따위가 감히 1순위가 될 수 없음을 분명히 하면서도 돈을 벌기 위해 애쓴다. 내가 하고 싶은 것을 할 수 있는 시간의 자유, 경제적 자유를 얻는데는 돈만한 것이 없기 때문이다. - - 그런데 돈에 관한 키워드를 쫓다보면 몇몇 유명한 인사를 접하게 된다. 원칙(Principle)이라는 책으로 유명한 `레이 달리오`(Ray Dalio)나 허슬(Hustle)이라는 키워드로 유명한 `게리 바이너척`(Gary Vaynerchuck)과 같은 인물들을 말이다. 이들은 자기계발, 부의증식, 동기부여와 관련되어 지금 전세계 두꺼운 팬층을 형성하고 있는 유명 인사들이다. - - 인터넷에 돈을 버는 법 따위의 키워드로 검색하면 쉽게 접할 수 있는 사람들이며, 유튜브에 구독자수도 수백만에 이른다. 돈 버는 방법과 열심히 사는 방법에 관한 한 성역과도 같은 인물들인데 그런 그들도 이 책에서는 그저 사기꾼 정도의 취급을 받는다. - -* 미국과 현 자본주의 - 헬조선 운운하지만 우리는 은연 중 이제 몇가지를 알게 되었다. 적어도 `코로나, 건강보험, 해고`에 대해서 말이다. 물론 사회주의나 공산주의를 지향하는 책은 아님을 밝혀둔다. 그런 사상, 정치 이야기가 나오면 나는 몇 페이지 조차 읽지 않고 바로 덮었을 것이다. 그런것들 보다는 우리 직장인 한명 한명 개인의 삶과 현실에 초점을 맞추고 자본주의나 기업이 발전해 나가야 할 방향을 조망한다. - -읽는 내내 세상을 뒤집어 볼 수 있는 눈을 얻게 된것 같아 신선했다. 누구나 칭송하던 화제가 만능 해결사 은탄환(Silver Bullet)이 아님을, 그리고 그 빛나는 이면속에 Trade-Off로 무엇이 사라지고 죽어가는지 명확히 알 수 있었다. - -이 책을 읽으면서 `얻은 것`들은 다음과 같다. -* 나의 직장 생활이 왜 이렇게 고단했는지? -* 그동안 애자일과 같이 안개처럼 불투명했던 부분들에 대한 물음들이 해소되었다. -* 더불어 소득의 양극화나 직장이 노동자를 잡아먹는 매커니즘에 대한 인식이 많이 달라졌다. -* 실리콘밸리로 대표되는 허상에 집착하기보다는 내실있는 기업을 볼 줄 아는 눈이 생겼다. -* 애자일, 린스타트업, NLP 트레이닝 등의 최신 경영의 트렌드 - -세상에 은탄환은 없듯 이 책 역시 완벽히 옳은 말만을 담고 있지는 않을 것이다. 하지만 세상에 모두가 옳다고 동경하는 주제에 관하여 `이면에 숨은것들을 직시하고 비판할 줄 아는 사고`는 언제나 훌륭하다고 생각한다. - -직장이 왜 이렇게 힘든지, 죽어라고 버는데 왜 모이는 것은 없는지, 열심히 사는데 나아지는 것은 없는지, 남들이 선망하는 직장을 다니고 있는데 속으로는 왜 울고 있는것인지, 도대체 이 놈의 경제는 어떻게 돌아가는지, 부자들은 우리 호주머니를 어떤 방식으로 털어가는지, 앞으로 어떻게 살아야 하는지 이 중 하나라도 궁금점이 있다면 반드시 읽어보시길 권유드린다. - -질문에 대한 답을 찾게 되거나, 최소한 많은 궁금이 해소될 것이다. - -* [책소개 - 실험실의 쥐](http://www.yes24.com/Product/Goods/90397267?scode=032&OzSrank=1) - diff --git a/_posts/2020-06-20-review-book-cant-change-others.markdown b/_posts/2020-06-20-review-book-cant-change-others.markdown deleted file mode 100644 index 24bf61d45..000000000 --- a/_posts/2020-06-20-review-book-cant-change-others.markdown +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: post -title: "[리뷰] 당신은 타인을 바꿀 수 없다" -subtitle: "나와 생각이 다른 사람을 ‘적’이 아닌 ‘내 편’으로 만드는 법" -categories: review -tags: review book 인간 관계 마음 내편 적 타인 원하는것 얻는방법 -comments: true -header-img: img/review/2020-06-20-review-book-cant-change-others-1.png ---- - -> `동양북스` 출판사의 `"당신은 타인을 바꿀 수 없다(코르넬리아 슈바르츠, 슈테판 슈바르츠 저/서유리 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-06-20-review-book-cant-change-others-1.png) - ---- - -몇년 전 데일카네기의 인간관계론을 읽고 크게 두가지에 놀랐다. - -> 하나는, 상대방은 절대 내가 원하는대로 변하지 않는다는 것. - -> 다른 하나는, 사람은 누구에게나 인정받고 싶어한다는 것. - -그 중 하나가 바로 이 책의 제목 `당신은 타인을 바꿀 수 없다`과 유사하다. 제목이 말하는 바와 같이 당신이 아무리 비난하고 원하는대로 움직이게 하고 싶어도 상대방을 바꿀 수는 없다. 책의 제목 덕분에 보자마자 읽어야 할 책이라고 생각했다. - -사실 우리 주위에는 늘 훌륭한 교훈이 넘치는데 반해 너무 많이 화자되거나 유명해지는 바람에 그 숨은 진가를 알아보지 못하는 말들이 있다. 손자병법의 "싸우지 않고 굴복시키는 것이 최상이다.", "지피지기면 백전불태(百戰不殆)" 등이 대표적인 예이다. - -싸우지 않고 굴복시키는 것이 최상이라는 말을 들으면 이젠 너무 익숙해져 수학 공식을 들은 듯 반대편 귓구멍으로 빠져나가기 쉽다. 혹은 누가 모르냐, 할 수 있는 방법이 없으니 문제인 것이라며 의미를 두지 않는다. - -개인적으로 이 진정한 의미는 싸울일을 만들지 않거나 싸우게 되기 전에 미연에 방지하라는 의미로 받아들이고 있다. 병법에서 나왔다고 전쟁에서만 요긴한 말이 아니라 사람 관계에서도 매우 중요한 말이다. 흔히들 상대와 다투게 되면 사이다 느낌을 받길 원하겠지만 사실 싸울만한 상황이 안생기도록 만드는 것이 더욱 현명한 것이며 혹은 `상대가 내가 원하는 것과 반대로 행동할 생각조차 못하게 할 수 있다`면 더욱 뛰어난 방법이라 할 것이다. - -지피지기 백전불태도 마찬가지로 사람 관계에서도 너무 의미있다. 무리에서 살아가는 이상 관계를 맺고 그 과정에 갈등이 생기는 것은 피할 수가 없는데 이를 슬기롭게 해결하기 위해 `상대방이 원하는 것이 무엇인지` 파악하는 능력은 매우 중요하다. 그리고 그 전에 내가 원하는 것이 무엇인지 확실하고 구체적으로 알아둘 필요가 있다. 의외라고 생각하겠지만 우리는 보통 화를 낼 때 정말 스스로 원하는 것이 무엇인지 정의내리기 어려운 경우가 많다. - -구구절절 책과 무관한 얘기를 늘어놓은 것으로 보이지만 사실 위에서 언급한 내용들이 바로 이 책의 핵심이다. 조금 더 구체적으로 언급하자면 `처음부터 오해와 다툼을 방지하는 대화법, 상대방의 시각으로 대화를 진행하는 법, 공감의 능력과 미러링, 상대방의 행동과 특성을 더 명확하게 인지하는 법, 내면의 욕구를 파악하는 법`에 대해 다룬다. - -사실 책 제목에 강력하게 끌렸음에도 두 저자에게 공통적으로 해당되는 한 단어 때문에 약간의 거부감이 들었다. 바로 NLP(Neuro-Linguistic Programming, 신경 언어 프로그래밍). - -최근 감명깊게 읽은 실험실의 쥐(Lab Rats)라는 책에서 저자 댄 라이언스가 곱지 않은 시선으로 바라보았기 때문이다. NLP란 사람의 마음에 대한 이론을 바탕으로 사람의 마음을 변화시킬 수 있는 기법을 의미하는데 컴퓨터공학이나 프로그램 엔지니어링 기법에서 착안하여 뇌신경 작용이나 감정기작 등을 분석하고 바꾸고자 노력하는 학문이다. - -하지만 책을 다 읽은 시점에서는 그저 기우라고 생각할 수 있었다. 댄 라이언스는 실리콘밸리와 같은 기업에서 NLP를 활용해 직원들을 통제하고 직장 생활을 힘들게한다고 비난하였는데 효용이 그만큼 뛰어나기에 기업들이 활용하는 것이 아닌가 싶다. - -즉, NLP는 쓰임에 있어 잘잘못을 가릴수는 있어도 효용 자체로는 상당히 검증된 방법인 듯 하다. 두 저자는 NLP에 기반한 교육 프로그램을 개발하거나 상담 치료를 담당하고 있기에 관련 기법들이 본 도서의 상당부분 언급된다. - -본 도서는 보통 각 조언에 대한 개요를 서술한 후 연습해보기를 통해 독자로 하여금 실천적인 참여를 유도한다. 더불어 `BAD CASE`의 실제 상황을 제시한 후 언급한 방법을 적용하여 `GOOD CASE`의 사례와 같이 개선시킬 수 있음을 보여준다. - -각 조언별로 구체적인 사례가 제시되므로 일상생활에 적용하고 실천하기 쉽게 구성되어 있는 점이 백미라 할 수 있겠다. 아래 그림은 이와 같은 구성의 일례로 아이와의 갈등이 발생되는 일상을 슬기롭게 해결하는 방법을 알려준다. -![연습해보기](https://theorydb.github.io/assets/img/review/2020-06-20-review-book-cant-change-others-2.png) -![BAD CASE](https://theorydb.github.io/assets/img/review/2020-06-20-review-book-cant-change-others-3.png) -![GOOD CASE](https://theorydb.github.io/assets/img/review/2020-06-20-review-book-cant-change-others-4.png) - -더불어 저자가 주장하는 것이 정말 옳은지 의문이 들 때마다 독자와 마찬가지로 다른 사람들에게 같은 질문 받았던 사례 및 그에 대한 대답이 나온다. 계속된 살아있는 검증이 마음에 들었다. - -개인적으로 책의 내용이 충분히 객관적인지 판단하는 두가지 방법이 있는데 하나는 인용이고, 다른 하나는 반례(질문)에 대한 대답이다. 두가지 측면에서 만족스럽게 구성되어 있어 충분히 일반화되었다 생각했다. - -타인을 바꿀 수 없다는 대전제에도 불구하고 결국 우리는 상대가 원하는 것을 간파하여 원하는 것을 얻어내야 한다. 이를 위해 그동안 몰랐던 책에서 얻은 실생활에 적용할 수 있는 인상깊었던 방법을 정리하며 본 리뷰를 마칠까 한다. - -* 상대방의 기분이나 상황을 파악하는 방법(공감적 `미러링`, empathic mirroring) - - 신체언어 : 편히 누워있는 자세, 손가락질 등 - - 목소리 톤 : 음역대의 높낮이 - - 표정, 말 - -* 공감 능력이 사라지는 이유 - - `거울뉴런 = 공감세포 = 공유 생리 현상`은 사용하지 않으면 퇴화한다. - - 공감 능력은 1970년에 비해 40%나 감소했다는 연구결과가 있다. - - 기술과 지적능력은 점점 발달하지만 인간 관계는 점점 아이처럼 행동한다. - - 타인과의 거리를 두는 것이 자신을 지키는 것이라 여기고 스스로를 우선순위에 두며 미러링을 차단하곤 한다. - - 스트레스 상황에서는 자신의 상태에만 초점을 맞추도록 시스템화한다. - - 급변하는 세상속에 시간적 여유가 없어 짧은 시간에 질 나쁜 대화가 유도된다. - - 선입견에 지배되거나 무관심하다. - - 어린시절에 문제가 있거나 안 좋은 추억도 한 몫한다. - -* 공감대를 형성하는 단계 - - 1.내가 원하는 것은 무엇인가? - - 2.상대의 기분은 어떤가? - - 3.감정이입 후 `미러링`한다. : 행동, 말투, 표정, 목소리를 따라해보며 무엇을 원하는지 파악한다. - - 4.내가 원하는 것은 구체적으로 무엇인가? - - 5.건설적인 방향으로 나아가기 - -* 상대방이 무엇을 원하는지 어떻게 알 수 있을까? - - 누구나 원하는 것들 : `인정`받고 싶다 / `소속감`을 느끼고 외롭고 싶지 않다. - - 함께 발 맞춰 걷는것만으로도(같은 자세) 더욱 신뢰한다. - - 설득하려 하지말고 그냥 공감하라. - - 이해할 수 없어도 `존중`할 수는 있다. - - 상대도 당신을 미러링하는지 살펴본다. 그렇지 않더라도 인내심을 가지고 비슷한 행동, 표정, 말투로 공감하고 있다는 신호를 더욱 강화해본다. - - `경청`한다. 상대의 눈을 통해 `컨디션`을 살핀다. 지금 어떤 `감정`을 갖고 있는지 먼저 생각해본다. - - 상대방이 감정을 충분히 `표현`하게 하라. - - 목소리 `톤` - + 두려우면 꽉 막힌듯한 목소리가 나오고, 분노하면 목소리가 떨린다. - + 음역(높낮이), 음색, 속도, 호흡(간격)을 파악한다. - - 상대방과 나의 자세가 비대칭인지 확인하라. - - 말할 때 `자주쓰는 단어`를 파악하고 언급해보라. - - 상대의 `가치관`을 판단할 수 있는 말에 집중하라. 특히, "나"라는 단어가 등장하면 더 귀를 기울인다. - - 설득하지 말고 스스로 움직이게 만들어라. - - `사고` 필터에 따라 대화 전략도 달라진다. - + 크기필터 : 세부적인 대화인지? 총체적인 대화인지? - + 방향필터 : 목표가 초점인지? 피하기 위함이 초점인지? 보상 vs 문제해결 - + 시간 지향 필터 : 과거에 그랬으므로 앞으로도 동일한지? 이 순간이 앞으로의 삶에 어떤 영향을 미칠지? - + 매칭 필터 : 익숙한 것만 받아들이는지? 비판적인 태도 부터 취하는지? - - 불편한 대화를 벗어나는 방법 : 칭찬, 질문(상대방의 관심사, 함께 경험한 것들, 목표를 정하고 질문하기) - -* 나를 알기 위한 조언 - - 표정과 신체 언어로 `나의 이미지`를 구축하라. - - 말할 때 어떤 단어를 자주 쓰는가? - - 우리는 감정을 조절할 수 있다. - + 기쁨, 슬픔은 뇌의 화학적 패턴 - + 조건반사 : 첫사랑에게 실연당한 시절의 노래는 우리를 `그때 저장된 감정으로 인도`한다. 조건 반사를 깨뜨린다면 아마도 노래를 끄거나 바꿀 것이다. - - 비난을 받아 상처입을 때 - + 타이밍 : 뜸을 들여 시간을 번다. - + 공감적 미러링 : 상대의 자세와 동일한 자세를 취하며 미러링 한다. - + 객관적인 주장을 통해 통합적으로 해결한다. - - 영혼의 쓰레기 비우기(스트레스를 날려버리기) - + 나를 열받게 하는 그 인간을 떠올린다. - + 분노인가? 짜증인가? 불쾌인가? - + 감정이 어디에 자리잡았는가? 배? 심장? 등? - + 어떤 냄새인가? 어떤 색깔인가? 어떤 질감인가? - + 감정을 손으로 잡아 끄집어 낸 후 상상속의 창문을 열고 던져버리거나 손에 바람을 불어 멀리 날려보낸다. - - 상대할 가치가 없는 사람 : 심리조정자(희생자, 구조자, 추적자, 가스라이팅), 사이코패스, 소시오패스 등 - - -끝으로 역자 서유리님께 감사드린다. 번역서를 읽다보면 가끔 차원이 다른 경지의 훌륭한 번역 덕분에 저자가 외국인인지 한국인인지 혼동될때가 있는데 본 도서도 그러했다. - -사람, 직장, 관계때문에 갈등을 겪는 분이나 사람 자체에 대해 잘 모르는 분들은 이 책이 삶에 있어 훌륭한 솔루션이 될 것이다. - -* [책소개 - 당신은 타인을 바꿀 수 없다](http://www.yes24.com/Product/goods/90460925) - - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. \ No newline at end of file diff --git a/_posts/2020-06-23-review-book-my-smart-work-env.markdown b/_posts/2020-06-23-review-book-my-smart-work-env.markdown deleted file mode 100644 index 27c087bcb..000000000 --- a/_posts/2020-06-23-review-book-my-smart-work-env.markdown +++ /dev/null @@ -1,106 +0,0 @@ ---- -layout: post -title: "[리뷰] 나만의 스마트워크 환경 만들기" -subtitle: "파이썬으로 만드는 업무 자동화 프로그램" -categories: review -tags: review book python vscode pandas docx openpyxl automation beautifulsoup machine leraning 자동화 -comments: true -header-img: img/review/review-book-my-smart-work-env-1.png ---- - -> `비제이퍼블릭` 출판사의 `"나만의 스마트워크 환경 만들기(박찬성 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-my-smart-work-env-1.png) - ---- -본 도서는 `Python 프로그래밍의 기초에서부터 머신러닝의 기초까지 폭넓은 영역을 다루는데 반해서 난이도는 매우 쉽다`는 것이 특징이다. 제목에서 알 수 있듯이 Python을 활용하여 개인 생활이나 업무를 편하게 만들어 주는 자동화 도구를 만드는 것에 초점이 맞춰져 있다. - -처음 이 책을 보았을 때 스마트워크 환경을 다룬다는 것 자체로도 흥미로운 일이지만 특히 저자에 눈길이 갔다. AI에 관심이 많은 분들이라면 페이스북의 [TensorFlow KR](https://www.facebook.com/groups/TensorFlowKR/?ref=nf_target&fref=nf) 커뮤니티를 모르는 분은 흔치 않을 것이다. - -저자인 박찬성님은 텐서플로우 코리아에서 자주 활동하시는 분으로 매일같이 유익한 게시글을 자주 작성하시기로 유명하다. 인기게시물을 하루에도 몇개를 올리시는데 하나같이 유용한 정보들로 가득하다. 본 도서가 `자동화까지만 다루는데 그치지 않고 마지막 장 머신러닝까지 다룬 것은 저자분의 AI에 대한 깊은 관심` 때문이 아닐까 싶다. - -최근에는 `TF-KR 포스팅의 상위 랭크된 게시글에 대한 뉴스레터 서비스`를 만들고 계신듯 하다. 본 도서를 충분히 숙지하면 비슷한 것들을 만들어 여러모로 유용하게 활용할 수 있을듯 하다. - -먼저 본 도서 내용의 개략적인 내용을 추천해 드리고 싶은 독자 유형을 분류해보며 소개해 드릴까 한다. - -* `AI 유관 IT 기술`을 다뤄 본 경험이 없어 폭넓고 빠르게 익히고 싶은 분 - AI에 관련된 기술은 너무 다양하여 관련 기술을 모두 알고 계신분은 정말 흔치 않을 것으로 생각된다. - - 본인이 몸담고 있는 업무 도메인의 지식이 출중하고 수학적 학식이 풍부하여 AI 모델링 혹은 연구를 하신분들도 DL/ML 엔지니어의 AI 구현 능력은 부족할 수 있고, 혹은 데이터를 원하는대로 가공하는데 있어 전처리 스킬이 떨어지는 분, 혹은 원하는 데이터를 확보하고 싶은데 수집 능력이 떨어지는 분 등 `다양한 분야에서 조금씩 모자란 부분`은 존재하게 마련이다. - - 그런 측면에서 이 책은 직접적인 AI 기술은 아니지만 유관된 유용한 기술을 폭넓고 쉽게 다루고 있으므로 빠르게 전체를 훑고 취미삼아 미니 프로젝트를 만들어보기에 적합하다. 큰 스트레스 받지 않고 빠른 시일내에 다양한 기술을 습득할 수 있다. - -* AI에 관심이 많으나 입문조차 어려워 `포기`를 고민중인 분 - 위에서 언급했듯이 AI와 유관된 기술은 매우 다양하다. 본 도서에서는 Python의 기초는 물론 데이터 수집을 위한 자동화 프로그램을 개발할 수 있으며 이를 통해 수집된 데이터를 활용하여 간단한 머신러닝을 프로그램을 구축 할 수도 있다. - - 유관 기술들을 전체적으로 다룬 후 AI의 입문까지 안내하는 도서이기 때문에 포기하지 말고 본 도서에서 제공하는 흥미로운 예제를 익혀본 후 본격적으로 AI에 접근한다면 한단계 레벨이 상승했음을 느낄 수 있을듯하다. - -* 업무나 개인 생활에 낭비되는 시간이 아까워 `자동화` 프로그램이 필요한 분 - 본 도서는 Python을 이용하여 엑셀, 워드를 다룰 뿐만 아니라 그래프 등 시각화 도구를 활용하는 방법, 엑셀 표 형식의 DataFrame을 가공하는 방법, 수집한 데이터를 기반으로 원하는 정보를 주기적으로 E-mail로 발송하는 방법을 다루기 때문에 사무실에서 `시간을 뺏기는 단순 반복 업무`를 처리하는데 큰 도움이 될 것이다. - - 더불어 본 도서의 예제 중 하나인 네이버 웹툰 알림 기능 구현하기와 같은 개인적인 생활에 있어서도 삶의 질을 높여주는 편리함을 제공해 줄 것이다. - -* `프로그래밍`을 배우고 싶은데 난이도에 막혀 포기를 고민중인 분 - 이 책은 심지어 `프로그래밍 입문`도 다룬다. 첫장이 프로그래밍 입문이다. 컴퓨터공학과 전공 과목 중 하나인데 몇 페이지를 할애하여 프로그래밍을 모르는 사람도 책에 진입할 수 있도록 도와준다. - - 더불어 새로운 개념을 소개할 때마다 여러번에 걸쳐 반복적으로 쉬운 설명으로 서술하는 방식을 책의 마지막 6장 기계학습까지 유지하고 있음을 미리 읽어 본 독자로서 모두 확인했으므로, 안심하시고 끝까지 정주행하시며 나의 `일상을 위한 소박한 개인 비서` 하나 만들어두시면 어떠실런지 추천드리고 싶다. - -이제 본격적으로 배웠던 스킬들을 간단히 정리해보며 본 리뷰를 마칠까 한다. - -* __Python 프로그래밍의 기초 (1장 ~ 2장)__ - 프로그래밍 입문이라는 주제를 시작으로 Python의 개발환경(IDE)를 구성한다. Python을 설치한 후, Visual Studio 설치 및 기본적인 IDE의 활용 방법이 매우 자세하게 가이드 되어있다. - - 특히, 개인적으로 프로그래밍 실력을 향상시키는 데 있어 최고의 방법은 `디버깅(Debugging)`이라고 생각하는데 이 부분을 상세히 다룬 것이 마음에 들었다. 아래 그림은 브레이크 포인트를 설정 한 후 디버깅을 진행하며, 중간 과정에 변수값 등을 확인하는 방법을 안내한 그림인데 매우 쉬운 예제를 기반으로 초보자도 쉽게 따라할 수 있게끔 디버깅 방법을 상세히 다룬다. - ![디버깅](https://theorydb.github.io/assets/img/review/review-book-my-smart-work-env-7.png) - - 이어서 Python의 기초 문법을 배운다. 자료형이나 변수 등의 기초내용들은 다양한 그림을 통해 여느 프로그래밍 언어 입문서 못지 않게 처음 배우는 분들을 배려한다. - - 더불어 `pip install`에 관해 상세히 다룬다. Python은 다른 언어에 비해 라이브러리의 활용도가 매우 높다. 따라서 시기적절하게 패키지를 설치하는 방법에 능숙해져야 하는데 pip를 자세히 다루거나 앞서 언급한 디버깅을 자세히 다루는 등 중요한 것은 부각시키고 덜 중요한 것은 과감히 덜어내는 `저자의 완급 조절`이 인상적이었다. 분명 처음 프로그래밍을 접하는 분들께 많은 도움이 되는 구성이라 생각한다. - - 다음으로 프로그래밍의 기본인 제어문이나 반복문을 다루는데 그냥 기능만 간략히 언급하고 넘어가는 것이 아니라, 유의할 점을 상세히 명시해 준다. 활용도가 매우 높은 문자형, 숫자형, 리스트, 딕셔너리 함수를 소개하고, 상속과 다형성 같은 `OOP` 지식이 전제되어야 이해할 수 있는 Class도 주요 개념을 빠짐없이 언급한다. 이어서 I/O를 처리하는데 필수적인 `파일처리`도 심도있게 다룬다. - - 전체적으로 프로그래밍 `입문서 한권을 가장 자주 사용하는 것만 추려서 100페이지 정도의 분량으로 압축`한 느낌이다. - -* __문서다루기 (3장)__ - 아마도 본 도서의 꽃은 이 장이 아닐까 한다. 데이터를 가공하고 업무 효율화를 높여주는 대부분의 스킬이 이 장에서 등장한다. - - 먼저 `OpenPyXL` 라이브러리를 통해 엑셀을 다루는 법을 익힌다. "Cell - 워크시트(WorkSheet) - 워크북(WorkBook)"의 구조로 확장되는 엑셀의 기본 구조를 그림을 통해 쉽게 개념을 전달하고 마치 RDBMS SQL을 다루듯 데이터를 가공하거나 조작, 병합하는 방법을 다룬다. - - 이어서 `python-docx` 라이브러리를 활용하여 워드파일을 다룬다. 마찬가지로 "Run - 문단(Paragraph) - 도큐먼트(Document) - 워드파일(Docx)"로 확장되는 기본 구조를 설명한 후, 문단에 스타일을 추가하거나 테이블, 그림을 추가하는 방법을 배운다. 최종예제에서는 Python을 활용하여 회의록 양식을 만드는 법을 배울 수 있다. - - `Pandas`를 활용하여 `공공데이터`를 다루는 것도 유익하다. Pandas를 통해 Tabular 자료형을 `DataFrame`으로 변환한 후 라이브러리에서 자주 활용하는 함수를 한번씩 실습 후 분리, 추출, 변형하는 방법을 다룬다. - - 이어 `matplotlib` 패키지를 활용하여 `시각화`를 배운다. 보다 다양한 시각적 효과를 표현하기 위해 저자의 경험에서 비롯한 Tip이 소개된 후, 선그래프, 서브플롯, 박스그래프, 히스토그램, 산점도 등 시각화 유형별로 모두 실습해봄으로써 시각화에 자신감을 키워준다. - - 마지막으로 본 챕터에서 배운 스킬들을 모두 활용하여 공공데이터를 활용한 미세먼지 수치 변화에 대한 트렌드 분석 프로그램을 만드는데 배운 내용을 복습하기 적절하게 구성되어있다. - ![미세먼지 추이](https://theorydb.github.io/assets/img/review/review-book-my-smart-work-env-6.png) - -* __웹크롤링 및 자동화 (4 ~ 5장)__ - 먼저 4장에서는 웹 크롤링에대해 다룬다. `beautifulsoup4` 및 `urllib3` 패키지의 기본 활용법을 다루고 이를 통해 수집한 HTML DOM 구조를 상세히 분석한다. 이를 통해 파워링크, 블로그 수집을 시작으로 Daum의 뉴스 수집을 실습한다. - ![DAUM 뉴스 수집1](https://theorydb.github.io/assets/img/review/review-book-my-smart-work-env-5.png) - ![DAUM 뉴스 수집2](https://theorydb.github.io/assets/img/review/review-book-my-smart-work-env-4.png) - - 이어지는 5장에서는 자동화를 위한 스케줄링 도구를 배운다. OS차원의 `Cron`을 비롯, Python의 `schedule` 패키지를 활용하는 법을 다룬다. 이어 `네이버 웹툰을 크롤링하여 업데이트 상태를 체크하고 모니터링 결과를 E-mail로 전송`하는 흥미로운 예제를 다룬다. - ![웹툰 업데이트 알람](https://theorydb.github.io/assets/img/review/review-book-my-smart-work-env-3.png) - - E-mail을 발송하기 위한 기본 지식인 `SMTP` 프로토콜에 대해 자세히 알아보는 것은 물론, Gmail 및 네이버 메일에서 수신 가능하도록 보안 옵션을 조정하는 방법까지 디테일하게 다룸으로써 쉽게 구현할 수 있다. - -* __기계학습 (6장)__ - 기존의 도서들이 수집 및 기본적인 분석에서 내용을 마쳤다면 본 서적은 한단계 더 나아가 수집된 데이터에 대한 활용가치를 극대화할 수 있는 기계학습을 다룬다. - - 기계학습의 전반적인 개념을 다루고 Colab 및 Jupyter Notebook을 활용하여 머신러닝 예제를 실습하는 방법을 자세히 알려준다. 더불어 Kaggle 전반에 대한 소개 및 활용방법도 다루고 있다. - - 이어 본격적으로 `Kaggle 예제 중 하나인 특정 중장비의 경매 가격을 예측하는 Blue Book for Bulldozar 경진대회`를 실습한다. 기본적인 전처리의 방법에 대해 배운 후, 랜덤포레스트 알고리즘을 활용하여 모델을 만들고 성능을 측정한다. 랜덤포레스트에 대한 자세한 개념 설명은 물론 각각의 하이퍼파라미터에 대해서도 상세히 언급한다. - ![랜덤포레스트](https://theorydb.github.io/assets/img/review/review-book-my-smart-work-env-2.png) - - 더불어 [XAI](https://theorydb.github.io/review/2020/06/09/review-book-xai/)의 기법 중 하나인 `특징 중요도`(Feature Importance, Permutation Importance)를 통해 각 특징의 중요도를 파악하는 등 결과의 해석을 통해 모델의 성능을 개선하려는 시도도 담겨있어 유익했다. 더불어 `트리해석기`를 통한 분석도 다루고 있다. - -이로써 전반적인 도서의 내용을 언급했다. 비록 전체 457p에 이르는 방대한 분량으로 구성되어있으나, 흥미로운 예제가 많고 각 설명들이 쉽게 서술되어있어 생각보다 빠르게 읽을 수 있다. - -AI 혹은 프로그래밍에 능숙한 분이라면 하루를 온전히 투자한다는 가정하에 2-3일이면 충분하다고 생각하고, 프로그래밍을 처음 접하는 독자일지라도 예제 구현까지 포함해 한달 남짓의 시간이면 충분히 학습할 수 있을듯 하다. - -앞서 언급했듯 AI의 다양한 유관분야를 빠르게 훑어보고 싶은분이나, 일상과 업무를 자동화하고 싶은분께 꼭 추천드린다. - -* [책소개 - 나만의 스마트워크 환경 만들기](http://www.yes24.com/Product/Goods/90349631?Acode=101) - - diff --git a/_posts/2020-06-26-review-book-habit-of-reading-trends.markdown b/_posts/2020-06-26-review-book-habit-of-reading-trends.markdown deleted file mode 100644 index 026554f5e..000000000 --- a/_posts/2020-06-26-review-book-habit-of-reading-trends.markdown +++ /dev/null @@ -1,115 +0,0 @@ ---- -layout: post -title: "[리뷰] 트렌드 읽는 습관" -subtitle: "모든 기획의 시작" -categories: review -tags: review book 트렌드 기획 습관 비즈니스 패턴 맥락 home visiting -comments: true -header-img: img/review/review-book-habit-of-reading-trends-1.png ---- - -> `좋은습관연구소` 출판사의 `"트렌드 읽는 습관(김선주, 안현정 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-habit-of-reading-trends-1.png) - ---- - -이 책은 `트렌드가 무엇인지, 트렌드를 보는 안목은 어떻게 키울 수 있는지, 트렌드를 읽기 위한 습관은 어떻게 얻을 수 있는지` 알려주는 책이다. - -보통 사람들은 트렌드라 하면 대기업 기획자 부류에게나 해당되는 말쯤으로 여기고 본인과는 아무 상관 없는 단어 정도로 여기곤 한다. 나 역시 마찬가지였는데 그럼에도 이 책을 관심을 갖고 읽게 된 배경에는 트렌드의 중요성을 깨달은 어떤 `계기` 때문이었다. - -대부분 현재 하고 있는 업무에 비전이 안보이거나 매일 반복되는 일상의 매너리즘에 젖어 이직 혹은 사업에 기웃거렸던 경험 한 번쯤은 있을 것이다. 더불어 몇년 전 부터 직업의 트렌드로 자리잡은 1인 기업 열풍은 그런 결정에 박차를 가하게 하곤 한다. - -같은 이유로 몇년 전 진지하게 개인 사업을 고민해 본 적이 있다. 이번만큼은 그저 한 번 심각하게 고민했다가 다시 기억속으로 묻어버리는 일에서 벗어나 절박함으로 뭔가를 해보려 노력해야 겠다는 생각이 들었다. - -그런데 월급의 노예로 살아왔던 십 수년간의 타성 때문인지 생각보다 돈 버는 일이 결코 만만치 않음을 깨닫게 되었다. -> "뭘해서 먹고 살아야 하지?" - -노동의 댓가로 월급을 받는 매커니즘 외에는 직접적으로 고객에게 돈을 받는 방법이 결코 쉽게 떠오르지 않았다. 물론 편의점 아르바이트나 oo인력같은 일용직을 해볼 수는 있겠지만 안정성 및 급여 측면에서 직장을 그만두고 할만한 일은 아니었다. - -고작 생각해 낸게 아르바이트라니. - -그렇다. 대학을 졸업한지 십 수년이 지났지만 돈 버는 안목은 고작 대학생 시절 그 수준에 지나지 않았다. - -답답한 마음에 거리를 나섰다. 먹고 살 일을 찾는데 몰입해서였을까? 순간 놀라운일이 벌어졌다. `지나가는 사람들, 거리의 상호 간판들이 모두 돈으로 보였다.` 간판을 보며 다른 이들은 어떤것을 팔고, 어떤 서비스를 제공하면서 돈을 벌고 있는지? 사람들은 어떤것들을 구매하고 착용하고 다니는지? - -이제껏 바둑의 공배 메우기 같이 무의미해 보였던 것들에 큰 의미가 숨어있음을 발견하고 새로운 안목을 갖게 된 변화된 나 자신에 매우 놀랐다. 그때부터 세상을 바라보는 안목이 달라졌다. - -본 도서는 내가 예전에 일상에서 경험했던 작은 깨달음의 내용으로 채워져있기에 반드시 읽어야 겠다는 생각을 했다. 몇년동안 스스로 훈련된 노하우가 있었지만 분명 내가 모르는 방법과 정보를 얻을 수 있을것이라 생각했기 때문이다. - -예상대로 본 도서에는 `사람을 관찰하고, 매장을 눈여겨보고, 핫플레이스에 방문하며 트렌드를 읽을 수 있는 방법을 알려준다.` - -그동안의 AI 역사와는 다르게 이번 AI는 조금 다른것 같다. AI로 부터 오랜시간 지켜질 줄 알았던 창의력의 성역도 상당 부분 무너졌다. 유튜브나 마켓의 추천시스템은 이미 식상해졌고, 이젠 작곡도하고 특정 화가의 화풍도 학습하여 그림도 그리고 바둑도 신의 경지로 두는 세상이다. - -그런데 운명의 장난처럼 코로나-19가 등장하며 언택트를 가속화 시키고 있다. 부동산 가격의 시세부터, 금리나 GDP 같은 거시 경제, 일하는 방식과 환경의 변화까지 우리 생활의 전반을 변화시키는데 결정적인 촉매 역할을 할 것으로 보인다. - -본 도서는 그저 트렌드에 민감한 직업에 속하는 담당자에게만이 아닌 `일상의 우리 모두에게 미래에 대응할 수 있는 좋은 인사이트를 제공`할 것이라 생각한다. 만약 AI 기술을 비롯한 언택트 기술이 발전한다면 우린 1인 기업이 되어 스스로 돈을 벌 방법을 찾아나서야 할지도 모른다. 그 때 무엇보다 중요한 것이 트렌드일 것이다. 트렌드를 모르고 사업을 성사시키기는 어려운 일이기 때문이다. - -마지막으로 본 도서를 읽으며 배웠던 내용들과 인사이트를 아래와 같이 정리해 보며 본 리뷰를 마친다. - -* __코로나 19 이후의 트렌드__ - - 방아쇠(trigger) 역할 : 온라인 구매, 재택근무, 화상회의, 온라인 교육, 원격의료 등 - - 장벽(barrier) 역할 : 공유경제 - - `패드`(짧은 유행, 흑당 커피) / 마이크로트렌드(특정 계층에만 영향, 오타쿠) / 메가트렌드(정치, 경제, 문화 전반에 걸친 영향) / 소비트렌드(특정 영역, 소확행) - - 증설의 저주(투자, 설비를 늘리면 유행이 사라짐), 본질파악 - 유행은 돌고돈다(아이스 버킷 챌린지 -> 북 커버 챌린지) - - 반대 방향을 주목하라(`역방향` 트렌드) : 웰빙 - 칼로리 폭탄(먹방, 배달앱 전성기) / 외모중시 - 탈코르셋 / 가성비 - 작은사치, 탕진잼 - - 밴드웨건 효과(Bandwagon effect) : `대세`를 따르고 싶은 심리 / `가심비` : 가격대비 만족감 - - 생성기 - 성장기 - 성숙기 - 쇠퇴기 - - 식품에서 의류, 주거, 레저 등으로 확대 - - 거시환경요인 분석(`PEST` 분석) : Political(정치, 법규), Economical(GDP, 금리, 환율, 원자재 및 에너지 가격, 물가상승), Social(인구수 변화 추이, 환경이슈, 여성사회참여), Technological(4차 산업혁명) - - 패드 : 유명인의 발언(곱창 대란, 산티아고 순례길) - - 트렌드를 찾았다면 `트리거와 배리어`를 함께 생각하는 습관이 필요 + `패드, 역트렌드, 마이크로트렌드`로 변화될 가능성 체크 - -* __일상에서 실천할 수 있는 트렌드 읽기 `습관`__ - - 사람, 매장, 거리 모습에 관심갖기 - + 명동 길거리 가게 앞에 사람들이 `줄 서 있는 모습`이 한동안 지속된다면 직접 방문해서 원인이 무엇인지 파악해볼 필요가 있다. - + 한달에 한두 번은 일부러 시내 중심가를 찾아 사람들의 표정, 매장의 변화 등을 챙겨볼 필요가 있다. - + 시간(주별, 월별, 연별) : 새로 생긴 매장 및 없어진 매장, 매장 내 상품의 변화, 디스플레이 및 외관의 변화 - + `사람` : 성별, 연령대, 복장 특징(퇴근길에 40대 급감) > 옷차림이나 소지품에서 공통으로 보이는 특징(테이크 아웃 커피 등) > 특정 조건에서의 표정변화(스마트폰을 보며 웃는 모습) - + `상품` : 디자인, 기능, 감성적 편익, 대화(새로운 정보, 불편 호소 등), 판매 방식, 진열 방식(색상 배치, 의약품처럼 보이게 하는 등 기능성 강조) - + `매장` : 증가한 혹은 줄어든 업종(남성 타깃 편집숍, 저가 할인점, 테이크 아웃 음식점), 간판(색상, 서체, 이름, SNS 주소 노출여부 등의 공통점), 특별한 요소(포토존 : 오프라인은 구매에서 체험으로 변화, SNS 인증 가능성 여부), 고객 동선 - - 회식 및 약속은 `핫플레이스`에서 - + 장소 고르는 법 : SNS (단, 광고주의) - + 눈 여겨볼 것 : 주로 주문하는 `메뉴`, 방문자들의 `분위기`, `대화`들의 느낌, SNS에서 본 것과의 `차이`점 - + 사례1(이태원 `비건` - 채식선호 식당) - * 매장위치 : 골목 / 알고 찾아간 다는 의미이므로 마이크로트렌드 혹은 패드가 아닐지 의심해 본다. - * 방문객 특징 : 내외국인 비율 / 외국에서는 비건 문화가 보편화 것은 아닌지 체크 - * 신체적 특징 : 날씬하다 / 다이어트와 연관된 것인지 동물 보호와 연관된 것인지 - * 메뉴 특징 : 모든 메뉴가 야채이지만 종류가 다양 / 소수가 아닌 대중화되고 있음을 짐작할 수 있다. - * 인기있는 이유가 무엇일까? : 단체고객이 보인다 / 닉네임으로 부르는 걸 보니 동호회가 활성화 되어있는지 파악해 볼 필요가 있다. - * 방문객 행동 파악 : 사진 찍는 행위가 많고 옷차림에 신경을 쓴다. / 식문화이자 아이덴티티로 부각됨을 알 수 있다. - - 집을 나가기 전 `서칭 주제`를 정한다. - + 특정 사물 (전기차, 킥보드 등) / 패턴(옷, 가방, 액세서리, 간판, 포장지, 플라워 등) / 색깔(공통점 찾기) - - `전시회, 박람회, 대형서점` 탐방 - + 코렉스, 동대문 DDP 등 행사 개최 이메일 리스트 혹은 SNS 팔로워 신청으로 개최소식 접하기 - + 다녀온 후 의미있는 부스는 사진과 기록으로 정리 - + 꼭 가봐야 할 박람회 : CES(세계 최대 규모 IT, 가전 박람회), IFA(트렌드가 얼마나 제품화되었는지 확인 가능), MWC(통신기술, 전자제품) - + 대형서점 : 베스트셀러 목록, 사람들의 마음을 알 수 있음(어떤 사업에 진출해야 하는지, 무엇에 아쉬움을 느끼는지 등) - * 베스트셀러 코너 사진 찍기 > 작가 확인 > 심리학과의 공통패턴 파악 > 스스로 찾던 트렌드가 서적으로 많이 출간되는지 여부를 검증 - - 친인척 집 방문(`홈비지팅`) - + 변화 체크(가전, 가구, 소품) > 변화의 이유 파악(구매 이유, 과정, 사용후기 등) > 창고(사용을 중단한 제품 및 원인) - - 다양한 `네트워크` 만들기 - + CEO 혁신을 위한 아이디어 원천(Global CEO Study, IBM) - * 사내 : 일반직원(43%), 영업 담당자(18%), R&D연구원(17%) - * 사외 : 파트너회사(39%), 고객(36%) - + 독서모임, 취미 동호회, 외부 스터디 등 - - 얼리어답터 트렌드 접근 방식 : 동호회 카페, 잡지 사이트를 통한 동향파악, 오프라인 매장 방문, 박람회 참석 - - SNS, 빅데이터 활용 : [썸트렌드](http://some.co.kr), [구글 트렌드](https://trends.google.co.kr/trends/?geo=KR), [네이버 데이터랩](https://datalab.naver.com/), [녹스인플루언서](http://kr.noxinfluencer.com), [빅풋](http://bigfoot9.com), [트렌드헌터](https://www.trendhunter.com/), [트렌드와칭](https://trendwatching.com/) - - 뉴스 구독서비스 활용 - + [빅카인즈](https://www.bigkinds.or.kr/), 구글 알리미, RSS, Flipboard, JANDI, Digg, Feedly 등 - + 이슈별, 섹션별 주요뉴스 - - 트렌드 도서 재분석 : 트렌드 코리아, 대한민국 트렌드 등 - -* __트렌드를 내 비즈니스로 연결하기__ - - > "새롭고 재미있는데 내가 써먹을 건 별로 없는 것 같군." - - > "우리가 좋은 아이디어를 내봤자 소용없다. 외부 컨설턴트들이 의견을 내야 그만큼 먹힌다." - - 관련없어 보여도 내 사업, 일에 연계할 수 있는 `주관화 능력`이 중요하다. - - 주관화의 힌트는 `다른 사업`에서 얻을 수 있다. - - > "에어컨도 스마트폰처럼 자동으로 업그레이드 되는 기능은 없을까?" - - 연습방법 : 과제 해결형 트렌드 읽기 (ex : 1인 가구를 위한 가전라인 개발) - - 트렌드의 사업화 : 5w1H(육하원칙) - ---- - -* [책소개 - 트렌드 읽는 습관](http://www.yes24.com/Product/Goods/90454984?scode=032&OzSrank=1) - diff --git a/_posts/2020-07-02-review-book-house-purchase-drift.markdown b/_posts/2020-07-02-review-book-house-purchase-drift.markdown deleted file mode 100644 index ce239a1f8..000000000 --- a/_posts/2020-07-02-review-book-house-purchase-drift.markdown +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: post -title: "[리뷰] 생애최초주택구입 표류기" -subtitle: "2년마다 이사하지 않을 자유를 얻기 위하여" -categories: review -tags: review book 내집마련 생애최초 표류기 이사 전세 가족 독립 안정 자유 에코세대 공감 -comments: true -header-img: img/review/2020-07-02-review-book-house-purchase-drift-1.png ---- - -> `북라이프` 출판사의 `"생애최초주택구입 표류기(강병진 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-07-02-review-book-house-purchase-drift-1.png) - ---- - -본 도서는 `내집 마련을 통해 안정과 자유라는 행복을 찾은 한 서민의 이야기`이다. - -책을 읽기 전에는 적은 돈으로 성공적인 투자와 승부사 감각으로 훌륭한 아파트를 구매했고 그로 인해 재테크에 성공했으며 집을 여러채로 불렸고 그 노하우를 책에 담았다는.. 서점에서 흔히볼 수 있는 고가 건물주의 고군 분투 일대기인 줄 알았다. - -그런데 막상 열어보니 정반대였다. 저자는 40의 나이에 집값의 절반에 해당하는 대출을 실행하고 그것도 흔히들 사지말라는 빌라를 구매한다. 더 황당한 것은 막대한 대출금을 뒤로 하고 자신만의 공간을 얻고자 월세 독립까지 감행하여 받는 월급을 대출비와 월세로 꼬박 상납하고 있다. 앞서 언급한 부류의 책에서 절대하지 말라는 투자 방식이다. - -그럼에도 어떻게 이 책이 카카오 브런치북 대상을 수상한 것인지 의문을 가지고 책을 읽기 시작했다. 그리고 책을 덮은 순간 깊은 한숨과 함께 그럴만한 자격이 있는 책이라는 생각이 들었다. 읽는 내내 쉽지 않은 인생에 대한 공감, 남의 일 같지 않은 생생한 저자의 고뇌, 그리고 무엇보다 나였으면 하지 못했을 자랑할 것 없는 삶에 대한 `매우 솔직한 독백`이 와 닿았다. - -대부분의 서민이라면 누구나 인생에 경제적으로 어려웠던 시절이 있을 것이다. 서민이라면 과거 혹은 현재 아니면 미래에 그럴 가능성까지 경제적 어려움은 상당 부분 각오를 해야하는 부분이다. 그리고 경제적 어려움 중 가장 큰 문제는 역시 집문제이다. - -나 역시 어릴적 아버지의 사업 실패로 가세가 기울어 반지하에 살아 본 경험이 있었고 그로 인해 가정에도 불화가 종종 생겼으며 성인이 되어 자립하기까지 나름의 가슴앓이를 이어왔던 슬픈 사연을 가지고 있다. - -읽는 순간 잊고 살았던 당시의 암울한 기억이 떠올라 잠시 읽는 것을 멈추고 멍하니 천장만 바라보거나 깊은 한숨을 쉬기도 했고 또 한편으로는 부족하지만 그때보다 나아진 지금의 현실에 위안하기도 했고 얼마전 스트레스로 다가왔던 직장일 따위는 대수롭지 않게 여기기도 했다. - -이 책은 내집 마련은 물론 넉넉치 않은 경제 사정을 위해 하루 하루 쉽지 않게 살아가지만 `근처에 나와 같은 사람이 또 있다는 위안`을 느끼고 싶은 분들을 위한 책이다. 스스로의 능력 없음에 한탄하며 현재 처한 경제적 어려움으로 인한 한숨속에 술한잔 기울이고 싶은 날이 온다면 또 누구보다 같이 공감해 줄 사람이 필요한 순간이 온다면 그 때 이 책을 읽어보길 권유드린다. - -솔직히 나와 비슷한 나이의 저자가 철이 덜 든것이 아닌가 훈계하고 싶기도 했고 걱정되기도 했다. 어머님께 아직도 반말을 하는 모습하며, 대출금이 위험 수준인데도 혼자 살고 싶어 월세를 부담하여 독립한 것이나 아파트도 아닌 빌라를 구매하여 생애최초 청약의 기회까지 날렸으니 40살이 넘은 양반이 정녕 정신을 못차린 것인가 꼰대같은 훈계를 늘어놓고 싶었다. - -그런데 생각해보면 이해가 간다. 나 역시 총각때 그렇게 혼자 살고 싶어서 발버둥을 쳤다. 자의반 타의반 대학이 집에서 다른 행정구역에 있었고 직장 역시 그러했기에 자연스레 혼자 거주하게 되었지만 총각 시절 혼자 살았던 그 자유라는 꿀맛은 지금도 잊지 못한다. - -어느덧 결혼을 하고 아이가 나오고 가족의 생계를 책임져야 할 가장이 되다보니 하루 24시간은 2시간 정도로 짧아진 느낌이고 공간적인 자유는 더 이상 없다. 낮에는 직장에서 밭을 갈고 퇴근해서는 육아 크리에 시달리며 밤에는 책을 읽어 미래를 대비해야 하기에 삶에 주어진 개인의 시간이란 없다고 봐도 무방하다. - -아마 저자도 결혼을 하고 아이를 낳으면 저절로 철이 들 것이다. 나라고 성인 군자라서 그렇게 이상적으로 살고자 노력하는 것은 아니지만 자신보다 소중한 아이를 보면 자동으로 철 든 나로 변해지기 때문이다. 자유와 욕망보다도 소중한 잠든 아이의 얼굴을 보며 부모가 되니 인생이 180도 뒤짚히는 구나 자조하기도 하고 씁쓸한 웃음을 짓기도 하고 그 와중에 또 묘한 쾌감을 느끼는 새로운 나로 변하게 된다. - -저자는 아직 육아크리의 현실과 마주하지 않은데다 독립의 자유를 평생 한 번도 느끼지 못했다. 게다가 흙수저 출신에 변변치 않은 환경에서 거주해 온 지난날이 한으로 맺혔을 것이다. 나이는 숫자에 불과할 뿐 그토록 원했으나 한번도 누리지 못한 독립과 자유를 실현한 저자에게 박수를 보내고 싶은 심정이다. - -본 도서는 유용한 내집 마련 정보나 특별한 재테크 노하우가 담긴 책은 아니다. - -하지만 먹고 살기 힘든 오늘에 속상하거나, 쉽지 않은 내집 마련에 고통을 받고 있거나, 너무나도 자유와 독립을 원하는 이라면 저자가 인생의 좋은 벗이자 선배가 되어 술한잔 같이 기울인것 만큼 `적잖은 공감과 위로`를 전해줄 것이다. 그런 의미에서 특히 돈 문제로 오늘을 쉽지 않게 살아가는 모든이에게 이 책을 추천한다. - - -* [책소개 - 생애최초주택구입 표류기](http://www.yes24.com/Product/Goods/90977376?Acode=101) - - diff --git a/_posts/2020-07-03-review-book-secret-of-personal-branding.markdown b/_posts/2020-07-03-review-book-secret-of-personal-branding.markdown deleted file mode 100644 index 2b707e305..000000000 --- a/_posts/2020-07-03-review-book-secret-of-personal-branding.markdown +++ /dev/null @@ -1,121 +0,0 @@ ---- -layout: post -title: "[리뷰] 끌리는 퍼스널 브랜딩의 비밀" -subtitle: "The Secret of the Attractive Personal Branding" -categories: review -tags: review book CEO 퍼스널 브랜딩 Personal Branding 마케팅 창업 인사이트 개인 매력 -comments: true -header-img: img/review/2020-07-03-review-book-secret-of-personal-branding-1.png ---- - -> `성안당` 출판사의 `"끌리는 퍼스널 브랜딩의 비밀(최영인, 김혜경 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-07-03-review-book-secret-of-personal-branding-1.png) - ---- - -본 도서는 `퍼스널 브랜딩에 대한 방법을 알려주고 감각을 깨워주는` 책이다. - -퍼스널 브랜딩의 정의를 내리자면 다음과 같다. -> 개인이 제공하는 특정 분야의 지식, 경험, 인간적인 매력으로 완성된 식별할 수 있는 이름, 심벌, 디자인의 총 결합물 - -흔히 우리는 퍼스널 브랜딩을 자신과는 거리 먼 단어라고 생각한다. 굳이 조금 더 깊이 들어가도 면접 때 주목받기 위한 PR이나 요즈음 잘 나간다는 유튜버들에게 필요한 방법이 아닌가 생각할 수 있다. 하지만 이미 우리는 페이스북이나 인스타 그램을 통해 자신을 알려 주목받고자 노력하고 있다. - -특히 데일카네기의 인간관계론을 읽거나 철학 서적을 보면 인간이 `인정받고자 하는 욕구`는 그 어떤 욕망보다도 간절하다고 한다. 실제로 곰곰히 생각해보면 알 수 없는 우리의 행동이나 감정도 인정받고 싶은 욕구에서 비롯되는 경우가 많다는 것을 발견할 수 있다. - -누구나 인생에서 자신의 목표를 이루고 싶거나 불현듯 찾아오는 기회를 잡기 위해서는 퍼스널 브랜딩이 준비되어있어야 한다. 설령 지금 스스로 보잘 것 없는 존재라고 생각하는 사람일지라도 자신의 목표를 달성하는데 지금 당장 퍼스널 브랜딩을 고민하는 것이 미래에 큰 도움이 될 것이다. - -광의적으로 해석하자면 결국 `스스로를 잘 알기 위한 과정`이다. 나는 누구인가라는 질문에서 시작하여 좋아하는 것, 잘하는 것을 짚어보고 무엇을 이루고 싶은지 구체적으로 계획은 어떤지 어떤 경험과 커리어를 쌓아왔는지 파악하는 것이 기본 과정이다. - -우리는 늘 `목표`를 이루고자 살아간다. 목표가 없는 사람이 아닌 이상 이 책은 그 누구에게도 도움이 된다. 퍼스널 브랜딩은 한 평생을 의미있게 살아가기 위해 자신을 조금 더 잘 알고 목표를 튼튼히 하는 과정이기 때문이다. - -본 서적은 크게 두 파트로 구성된다. - -전반부는 이미 『좋아 보이는 것들의 비밀, 브랜드 디자인』(길벗)의 저자이자 컨설턴트로 유명한 최영인님이 경제적 효과에 초점을 맞춰 퍼스널 브랜딩을 위한 방법론을 다룬 `상업편`이고, 후반부는 『Phtoshop & Illustrator Design Artwork』(성안당)의 저자이자 예술가로도 유명한 김혜경님이 본인의 실제 경험에 초점을 맞춰 브랜딩에 필요한 예술적 감각을 키워주는 `아트편`으로 구성되어있다. - -더불어 저자분들이 취재한 퍼스널 브랜딩의 유명 인사들의 인터뷰도 실려있다. - -개인적으로는 이 구성이 너무 마음에 들었다. 일단 퍼스널 브랜딩 디자인 분야의 두 전문가분들 각각의 시각을 비교하며 읽는 과정에서 숨겨진 의미와 개념을 이해하는데 도움이 되었고, 이론과 실전이 적절히 어우러진 느낌이 들었으며, 실제 고수분들의 인터뷰로 궁금했던 점들을 완성할 수 있었기 때문이다. - ---- - -본 도서를 읽으며 얻었던 인사이트와 감명 깊었던 구절을 아래와 같이 정리해보았다. - -* 퍼스널 브랜딩의 시작 - + 친밀도, 충성도 : 사용했거나 익히 알고있는 친숙한 브랜드를 (재)구매하는 경향이 있다. - + `선점`효과 - - 누가 먼저 브랜드 인지도를 선점하는지에 따라 성공 가능성이 높아진다. - - 전문 지식 또한 누가 먼저 지식을 습득했느냐가 중요하다. - + 내가 보는 나와 남에게 보여지는 나의 교집합으로 완성된다. - + 외모와 격식 : 전문 분야는 실용적이지만 격식이, 창의적인 분야에서는 시각적으로 확실한 차이를 보이는 격식이 유리하다. - + 퍼스널 브랜딩을 위한 `프로세스` - - 발견 : 나는 누구인가? 어떤 브랜드가 되고 싶은가? - - 컨셉 : 정체성, 차별화 전략 - - 디자인 : 상품명, 로고, 심벌, 컬러 등 아이덴티티 - - 관리 : 홍보, 확산, 관리 - + 차별화, 인지도 상승, 뚜렷한 비전, 1:1의 느낌, 라포(상호신뢰관계), 귀기울여듣기 등은 퍼스널 브랜딩을 더욱 강하게 만들어 준다. - -* 나에 대해 알아보기 - - 내가 가진 `경험과 지식`을 시간 순으로 정리하기 : 학력, 경력, 특기, 자격증, 보유 기술, 꿈, 희망 등 - - `좋아하는 것` : 컬러, 음악 등의 성향, 취향, 개성 - - `잘하는 것` : 수상 경력이나 인증은 물론 칭찬 받은일 등. 모두 정리했다면 우선순위를 매겨본다. - - `목표`는 무엇인가? : 달성하고 싶은 시간, 규모, 형태를 구체적으로. 언제 무엇을 해야하는지 등 - - `롤모델` : 반드시 한 사람일 필요는 없다. 방향성이나 브랜드 철학에 도움이 되는지 생각한다. - - `타겟 마켓` 설정 : 누구를 위한 브랜드인가? 성별, 연령, 주거, 교육수준은 물론 감성적, 가심비, 라이프 스타일적 변수까지 고려 - - `팬`의 행동을 관찰하고 습관을 파악한다. - - `경쟁 브랜드` 분석 : SWOT, 소규모 브랜드를 찾아주는 이유가 반드시 있어야 한다. - -* 퍼스널 브랜딩을 만드는 방법 - - 단어 선택 : 믿음, 꼼꼼, 신의 등이 중요 / 이력서를 최대한 자세히 써라. - - 정치, 종교, 성별, 인권, 지역 등의 민감성 문제에 대한 언급을 피하라. - - 대화의 기술을 익힌다 : 듣기, 말하기, 생각하기, 바디랭귀지 (good case: 백종원) - - 자신의 생각을 `글`로 표현할 줄 안다. - > 팝니다. 아기 신발. 한 번도 신은 적 없습니다. (For sale : Baby shoes. Never worn.) - > - 어니스트 해밍웨이 - + 150년 하버드 글쓰기 OREO MAP : Opinion(핵심의견을 가장 먼저) + Reason(주장하는 이유, 근거) + Example(사례와 예시) + Opinion(주장을 다시 강조) - + 쓴 글은 반드시 소리내어 읽어 보며 소요 시간이나 어색함 등을 파악해본다. - - 전문가다운 외모 : 호감, 청결, 피부, 체취, 화장, 헤어스타일, 옷차림 등 그 외 분야별 성실, 믿음, 카리스마, 독창적, 트렌디 중 선택 - - `개인미디어` 매체 만들기 : 블로그, 브이로그, 유튜브 등 창의적인 컨텐츠를 지속적으로 + 꾸준히 구독하는 팬 만들기 - - SNS 참여 : 페이스북, 인스타그램, 트위터 등 + 네트워크, 커뮤니티, 그룹 참여 - - 현재 위치, 경제 상황, 주변인과의 관계 등을 고려 + 3 ~ 6개월 정도를 준비 - - 관계를 중시하고 브랜드의 가치를 높혀라. - -* 디자인 입히기 - ![디자인](https://theorydb.github.io/assets/img/review/2020-07-03-review-book-secret-of-personal-branding-2.png) - - 이미지 : 네임, 로고, 심벌, 마크, 아이콘, 일러스트, 캐릭터, 사진, 색, 슬로건 등 - - `구글 이미지 검색`, `핀터레스트` 사이트를 통해 생각한 것과 유사한 이미지를 찾아본다. - - 이름으로 만들기 : 알파벳 이니셜, 한자의 다양한 의미 활용, 한자에 매칭되는 순수 우리말 - - 브랜드 컨셉에 단어, 기호, 접속사, 정관사 등을 조합 혹은 의성어나 의태어 - - 상표 출원 : `특허 정보넷 키프리스` 상표 검색 시스템으로 이미 존재하는지 확인 - - 폰트 : `다폰트닷컴`에서 어울리는 폰트 찾기 - - 기억하기 좋게 다자인하고 배열하기 - - 직접적인 비유보다는 은유적인 표현으로 + 상징적으로 단순화 + 브랜드 대표 컬러 선정 - - 슬로건 : 간단하게 + 부정적 의미 피하기 - - 프로필 사진 : 최근 것으로 + 포토그래퍼 섭외 + 내가 부각되도록 - - 포트폴리오 및 매뉴얼 - -* 아트편 - - 소비자의 영혼에 도달하려면 진정성이 바탕이 되어야 한다. - - 스스로의 객관화 : 나의 브랜드, 경력 다질 기회 만들기, 나의 영향력 만들기, 현재의 퍼스널 브랜드 정의하기, 원하는 브랜드 만들기, 타깃 고객 정의, 나만의 전략, 네트워킹 - - `나만의 컨텐츠` 제작 : 온오프라인 콘텐츠 아카이빙, 출판, 네이버 인물 검색, SNS, 유튜브, 공모전, 수상전, 세미나, 워크숍, 강연, 전시, 스터디 그룹 - - 차별성, 일관성, 진정성 - - 김혜경 저자의 퍼스널 브랜딩 실제 경험이 흥미롭다. - ![여민락](https://theorydb.github.io/assets/img/review/2020-07-03-review-book-secret-of-personal-branding-3.png) - - 그 외의 인터뷰 8편 : 이승준, 성주연, 사키루, 이윰, 이혜미, 강선형, 윤지윤, 아리스 김 - ![인터뷰](https://theorydb.github.io/assets/img/review/2020-07-03-review-book-secret-of-personal-branding-4.png) - ---- - -> The most personal is the most creative. (가장 개인적인 것이 가장 창의적인 것이다.) -> - 2019 아카데미 시상식, 봉준호 감독 - -> 대중이 좋아하는 것을 만드니 망하고, 내가 좋아하는 것을 하니 대중이 좋아하더라. -> - 윤종신 - -책을 덮고 퍼스널 브랜딩은 그 자체로 우리 삶의 목표이자 인생에 대한 고민이라는 생각이 든다. 브랜딩 과정을 통해 목표를 명확히 하고, 나를 더욱 잘알고, 잘 관리할 뿐 결국 우리 인생을 보다 풍요롭게 해주는 동반자적인 인사이트가 아닐까 한다. 그런 측면에서 본 도서는 아이부터 노인까지 각자에게 있어 큰 의미가 있을 것이다. - - -* [책소개 - 끌리는 퍼스널 브랜딩의 비밀](http://www.yes24.com/Product/goods/90611593) - - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. \ No newline at end of file diff --git a/_posts/2020-07-04-review-book-coronomics.markdown b/_posts/2020-07-04-review-book-coronomics.markdown deleted file mode 100644 index 828ed79f1..000000000 --- a/_posts/2020-07-04-review-book-coronomics.markdown +++ /dev/null @@ -1,162 +0,0 @@ ---- -layout: post -title: "[리뷰] 코로노믹스" -subtitle: "코로나 쇼크 이후, 세계 경제의 미래와 우리가 가야 할 길" -categories: review -tags: review book corona covid-19 Coronomics economics future 코로나 대비책 경제 레버리지 양적완화 인플레이션 전쟁 질병 -comments: true -header-img: img/review/review-book-coronomics-1.png ---- - -> `더숲` 출판사의 `"코로노믹스(다니엘 슈텔터 저/도지영 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-coronomics-1.png) - ---- - -> 코로나-19 이후 세계는 어떻게 변할 것인가? - -현 시점 우리에게 가장 관심있는 단연 코로나이다. 미래에 대한 예측은 누구에게도 쉬운 일은 아니지만 우리에게는 이 쉽지 않은 일이 최대 관심사일 수 밖에 없다. - -경제, 문화, 정치 등 사회 전반에 걸쳐 언택트가 핵심 키워드로 자리잡았다. 그 중에서도 대다수 서민 초미의 관심사는 경제 즉, `어떻게 먹고 살아야 할 것인가`에 대한 고민일 것이다. 개인적으로 이 책에 관심을 가지게 된 이유 또한 불안한 미래 속에 어떻게 먹고 살아야 할지 실마리라도 찾기 위해서였다. - -이 책을 다 읽은 시점에서 결론부터 말씀드리면 책을 읽어보길 정말 잘했다는 생각이 든다. 특히 그동안 레버리지와 부채가 중요한 키워드라고만 생각했지 `경제가 어떻게 움직여 왔기에 레버리지가 부의 수단이 되었는지, 또 앞으로 레버리지의 지속 효과는 얼마나 이어질 수 있을지, 그로 인한 부동산으로 대표되는 자산의 가치는 어떻게 변해갈 것이며, 금리와 각국의 부채는 어떻게 변하게 될지, 가계와 민감하게 반응할 미래의 기조에 대한 어느 정도의 대비`를 할 수 있어서 큰 만족이었다. - -더불어 거시 경제 정책 또한 가계에 미치는 엄청난 변수이므로 `각 국의 정부가 현 사태를 해결하기 위해 어떤 고민`을 하고 있는지, 미래에는 `어떤 정책`을 펴게 될 것인지 조망해볼 수 있는 소중한 시간이었다. - -저자 다니엘 슈텔터는 독일에서 가장 유명한 거시 경제학자 중 한 명이다. 부채, 레버리지, 금리, 인플레이션, 경기침체 등의 거시 경제지표간의 관계를 일목요연하게 이해하고 한 단계 더 나아가 코로나와 결부시켜 미래를 전망하는 일을 누가 감히 쉽게 접근할 수 있겠는가? - -한치 앞이 불투명한 현 시점에서는 미시 경제나 국소적인 산업 분야의 변화 특히 내 삶의 변화를 예측하기란 불가능에 가깝다. 그나마 거시 경제의 현 주소와 과거로부터 이어져 온 기조와 추세를 정확히 이해하고 다가올 미래의 가능성있는 시나리오를 검토한 후 각각의 대응책을 마련하는 것이 우리 개인들이 할 수 있는 최선이 아닐까? - -미래를 예측하는 것은 누구나 꺼리는 일임에도 불구하고 저자는 감사하게도 소신껏 상당 부분의 미래를 예측했다. 특히 개인적으로는 `8장 경제정책의 최종단계` 파트가 매우 인상적이었다. 1930년대 맞이한 대공황과 흑사병, 스페인 독감의 유행 이후 벌어진 세계 경제의 변화를 토대로 각국이 부채를 어떻게 해결하고 코로노믹스를 어떤 방식으로 단행해야 할 지 대비책을 제시하고 있다. - -더불어 10장도 인상적인데 `기업이 어떻게 살아나고 승리할 수 있을지` 대비책도 제시한다. - -약간의 아쉬움이 있다면 가계가 어떻게 대응해야 할지, 서민이 어떻게 대응해야 할지에 대한 해결책이 구체적으로 제시되진 않았다는 점. 그리고 6장과 9장은 독일 출신의 경제학자가 관심을 가질 수 밖에 없는 유로존과 유럽 연합의 경제 상황에 초점을 맞춰 기술했기에 현 시점 우리의 문제의 해결책으로 직접적으로 와 닿진 않는다는 점을 들 수 있겠다. - -하지만 이 또한 세계의 거시 경제를 바라보는 데 큰 도움이 된다. 유로존은 결코 우리와 동떨어진 집단으로 여길 수 없다. 유로존이 세계 경제에서 차지하는 비중은 차치하더라도, 앞으로 보호주의 무역 시대에 유로존이 나아가는 방향에서 선견지명 혹은 선행지표를 얻을 수 있을 것이기 때문이다. - -유로존은 자국의 실리와 유럽 연합 공동체라는 두가지 목적을 갖고 있기에 경제 상황이 우리나라나 미국보다 훨씬 복잡한 상황이라고 생각한다. 보다 복잡도 높은 유로존의 고민을 미래에 대비하는 체크리스트로 활용할 수 있다면 상대적으로 덜 복잡한 우리나라의 경제 해법을 찾는데 있어 보다 정확한 해결책을 찾을 수 있다는 점에서 큰 의의가 있을것이다. - -끝으로 이 책에서 다루고 있는 거시경제 지표간의 복잡한 역학 관계나 세계 경제가 안고 있는 문제점 그리고 앞으로 나아가야 할 길 가운데 중요하다고 생각한 내용을 중심으로 요약해 보며 본 리뷰를 마칠까 한다. - -* __코로나-19 이전 : 이미 위험했던 세계 경제__ - - 코로나-19는 변화의 촉매 역할을 할 수 있겠으나 이미 2008 금융위기 이후 세계 경제는 심각한 문제를 앉고 있었다. - - 높은 수준의 부채, 공격적인 양적완화, 저금리, 양극화 - - 2019년 대부분의 투자자가 이득을 얻고, 최장기간 경기상승 및 유럽 재정위기의 종식 선언이 있었다. 과연 2019의 세계 경제는 안전했을까? - - `아웃풋 갭(Output Gap)` : 실질 GDP 성장률 - 잠재 성장률 - + 아웃풋 갭은 현 경제 수준을 파악하기 좋은 지표이다. - + 2009 금융위기와 비교해 볼 때 미국은 4조원의 부가 사라졌고, 2019 이탈리아의 GDP는 2002년과 동일했다. - - `총요소생산성(TFP)` : 눈에 보이는 노동, 자본, 원자재 등의 생산요소 외 눈에 보이지 않는 기술개발, 경영혁신 등이 차지하는 생산 효율성 지표 - + 2009 금융위기 이후 고작 0.7% 증가하였다. - -* __레버리지와 부채__ - + 부채 수준이 늘어나는 현상을 `레버리지`라 부르는데 이 지렛대가 투하 자본 수익률을 높여주는 역할을 해왔다. 1980년대 이래로 레버리지는 부의 확대 뒤에 숨어있던 주요 원동력이었다. - + 중앙은행은 1987년 주식시장 붕괴 이후 금융 시장이 요동치거나 실물 경제가 침체할 때마다 `화폐가치를 떨어뜨렸다`. - ![부채](https://theorydb.github.io/assets/img/review/review-book-coronomics-2.png) - + `양적완화`는 일본의 경기침체 30년을 반면 거울 삼아 디플레이션을 피하고자 쓴 궁여지책이었다. - + 부채 자체가 큰것이 문제가 되지는 않는다. 하지만 부채가 신기술을 개발하거나 새로운 공장을 가동하는 등 생산적인 방식으로 사용되지 않았고, 부동산 등 자산 가치의 거품으로 흡수되었다는 것이 문제이다. 하지만 레버리지 효과에 의해 `배당 수익률이 대출 이자율보다 높기만 하면 더 많은 대출을 받을 이유`가 된다. 문제는 이것이 지난 30년간 그리고 현재도 지속되고 있다는 점이다. - + 양적완화나 경기 부양책 자체가 문제가 된다기 보다는 많은 좀비기업들이 최저 투자등급 BBB(투자자들은 이 등급까지의 회사채만 살 수 있다.) 보다 낮게 매겨졌어야 했다. - + `2020년` 올해 미국에서는 BBB 등급 이하의 채권 `약 8400억 달러에 대한 만기`가 돌아온다. - + 투자자, 투기꾼들은 이제 타성에 젖었다. 위기가 다가오면 언제든 중앙은행이 `돈을 싼값에 풀 것`을 알고 있었기에 오히려 금융 위기는 돈을 확보할 수 있는 기회였고 그렇게 빌린돈은 부동산의 가격을 상승시키는데 결정적인 역할을 하였다. - + 중앙은행이 찍어낸 저렴한 화폐는 부에서 특히 강한 영향력을 발휘한다. `자산을 가진 자만이 자산가격의 상승으로 인한 혜택`을 얻을 수 있어 양극화가 심해진다. - + 양극화로 인해 포퓰리즘과 반체제 정당에 대한 지지가 크게 높아지는 등의 변화는 언제 터질지 모르는 폭탄으로 주목해야 할 사회적 문제이다. - + 만약 `디레버리지`가 닥친다면? - - 닥칠 시나리오를 실감하고 싶다면 영화 <마진콜:24시간, 조작된 진실>을 추천한다. 혹은 어빙 피셔 예일대학교 교수의 "대공황의 부채 디플레이션이론"을 참고하기 바란다. - - 자산 가격이 오르지 않거나 금융 비용이 상승하는 순간 위험해진다. 채권자는 더 많은 담보(마진콜)을 요구할 것이고, 채무자는 정해진 기간안에 합의한 수준으로 되돌려놔야 한다. 불이행시 채무자의 자산이 매각된다. 자산의 가격은 빠르게 하락하고 더 많은 투자자가 투매에 나서 가격 하락 속도는 더욱 빨라지고 시장은 붕괴한다. - - 기업은 현금 흐름이 나빠짐을 감지하고 채무 상환 능력에 문제가 생긴다. 회사채를 가진 사람들은 채권을 팔고 싶어 한다. 다른 투자자가 자신보다 주식을 먼저 매도할지도 모른다는 생각에 두려워한다. 신용대출로 투자한 사람들은 좌절에 빠진다. 모든 상품의 가격, 금, 국채마저 떨어지게 된다. 비록 V자형으로 많은 부분 해결되긴 했으나 올해 5월의 공포는 아찔했다. - ![하락장](https://theorydb.github.io/assets/img/review/review-book-coronomics-3.png) - ![채권](https://theorydb.github.io/assets/img/review/review-book-coronomics-4.png) - -* __코로나-19의 현주소__ - - `공급`의 외생 충격 : 70년대 유가 충격, 중국과 동유럽의 시장 개방 이후 세번째 타격 - - `수요`의 외생 충격 : 관세 보호주의 무역 이상으로 수요량이 줄었다. - - 실직 기간이 길어질수록 일자리를 얻을 가능성은 낮아진다. - - 완전 변동비 : 전기료, 수도료, 가스비, 청소비 - - 고정비 : 월세, 보험료, 자동차세, 하수도비, 운영비 - - 유료존의 위기 - + 유로화 도입으로 이미 금리가 큰 폭으로 하락. 하지만 물가 상승률은 금리만큼 떨어지지 않아 실질 금리(명목금리 - 물가상승률)이 마이너스가 되었고 더 많은 부채를 받게되는 원인이 되었다. - + GDP가 클수록 상환금 비중이 높음 : 독일 납세자와 이탈리아 스페인 등의 납세자와 부의 재분배로 귀결 => 갈등요소. - - 경제성장률 저하, 화폐가치의 절하, 보호주의 무역의 심화 - -* __코로나-19 이후 : 세계 경제의 대응 방법__ - - 인위적 `혼수상태` 조성 - + 1년 중 한 분기를 없었던 것처럼 취급. 일정기간 우리가 모든 활동을 멈춘다고 선언. 임금, 월세, 이자로 상호 지불 금지. 단, 식비등의 현실적인 문제로 실현 가능성이 낮음. - - 부가세를 일시적으로 할인하거나, 보조금 지급 혹은 `사용기한이 존재하는 상품권` 지급 - - 누가 부채를 갚을 것인가? - + 2020년 3월말 상황 : 독일 GDP 손실액 1.5조 유로, 프랑스 1조, 영국 임금의 80%까지 지원, 미국 2조 달러의 경기 부양책. - + 일본의 경우 수년동안 GDP의 200%가 넘는 정부 부채와 함께하고 있다. - + 부채의 해결방법 4가지. 가능할까? - - 높은 `경제성장` : 정부 부채가 GDP의 90% 이상이 되면 실질 경제성장률이 1%p 떨어진다. - - 저축과 상환(`긴축재정`) : 경제성장을 저해하지 않고 긴축 재정에 성공할 수 있는 유일한 전략은 수출 의존뿐이다. - - `부유세` : 투자 감소. 1949 2차 세계대전 이후 독일이 실시한 적이 있음. - - `인플레이션` - + 과잉 설비 및 느린 임금 상승을 생각하면 어려워 보임. - + `금융 억압`이라는 완화된 인플레이션 : 수익이 낮은 국채에 투자하도록 법으로 강제. 2차 세계대전 이후 미국과 영국에서 시행. ex) 여느 나라에서 이자 지급분에 새로운 부채의 2%를 더하면 명목금리가 3%이고, 실질 경제성장률은 1%라 하자. 5%의 금융억압이 있으려면 9%의 인플레이션이 필요하다. - - `중앙은행`의 딜레마 - - GDP대비 미국 주가 사상 최고치. 자산 시장 평가 가치 사상 최고 기록. - - 기록적 수준의 부채 - - 자국의 화폐가치가 타국에 비해 평가절상되지 않도록 주의 - - 공식적으로는 인플레이션을 막겠다고 하지만 재정 적자의 실질 가치를 줄이기 위해 노력하는 딜레마에 빠짐 - - 다음 경제 위기에 대비해 이자율을 크게 올렸어야 했다. `금리 인하 일방 통행이라는 뻔한 선택지 속에 정부의 시장 개입이 얼마나 빛을 볼 수 있을까?` - - 가능한 급진적 대응 방법 - - 다음 위기는 경제 상황의 `최종` 단계일까? `자산 가치의 환상을 몇 년 더` 즐길 수 있을까? - > "금리가 이미 0 이하이고 수조 달러의 채권도 매입한 상황에서 지난 30 동안의 방식을 어떻게 계속 유지할 수 있을까?" - - 현금 사용을 차단한다 : 마이너스 금리에 대비하기 위해 `현금에 세금`을 부과한다. - - 금에 대항한다 : `금`은 자산 도피를 위한 최종 가치 저장 수단이므로 `개인 소유를 금지`한다. - - 자본이동 제한 : 예금을 `외환으로 교환하지 못하도록` 막는다. - - 재정 적자의 화폐화 : 대차대조표상의 정부와 민간 부채를 그냥 `없앤다`. 혹은 100년간 무이자인 상태로 `영구화`한다. 일본이 이미 시행중이다. - - 헬리콥터 머니 : 좀비 기업, 유권자에 대한 의식 및 공약, 생산성 향상의 편익 감소, 노동력 감소에 대한 대안 - - 현대통화이론 : 중앙은행이 `직접 정부에 통화 공급`. 옛 독일 바이마르 공화국에서 시도.(단, 과세에 세심한 주의를 기울이지 않아 짐바브웨와 같은 꼴이 되었다.) 인플레이션은 `세금을 높혀` 통화가 시중에 유통되는것을 방지. - - 어떤 방식이 되었던 코로나-19의 위기 덕분에 일종의 명분을 가질 수 있게 되었으므로 정치권에서 만큼은 코로나-19가 효자 노릇도 하고 있는 셈. - + 과거 역사에서 얻을 수 있는 힌트 - - `뉴딜정책` - - 일본 정부의 `적자 화폐화` - - 민감 금융기관으로부터 강제 조달 : 2차 세계대전 미국, 캐나다, 영국이 실시. - + 최종대안 - - 경기 침체가 발생하도록 놔둔다. 최악의 수이다. - - 정부 차입 후 위기를 벗어나면 적자를 줄여나간다. 국가 간 긴장관계 속 `보호주의`가 강해질 가능성이 높다. - - `부유세`가 대안이 될 수 있다. - - `인플레이션` - + `흑사병, 신종 플루 이후 실질 임금 증가, 자본 소득 비중의 감소(노동 소득 비중 증가)` - + 세계대전 전 후 파괴된 물리적 자산의 복구 등으로 경제 급성장 - + 새로운 기술과 산업의 등장 : 화석연료 사용 중단이 전기차, 태양열 등의 산업을 촉진할 수 있다. - - 대부분의 전망 - + `정부 부채가 화폐화되고 인플레이션 초래.` - + 금리가 갑자기 오르는 경우 : 30년 전쟁, 2차 세계대전, 흑사병 - + 단, 명목금리 상승에 불과할 것. 실질 금리는 오랜기간동안 낮은 수준을 유지할것으로 전망. - -* __한국의 대응 방법__ - - 한국의 경우 생각보다 재정이 안정적인 편 : 문화 강국으로 GDP 대비 투자 비율이 세계 최상위권. GDP 대비 부채규모도 선진국 중위권 수준. - - 아시아 `지역 내 수출 활성화` 및 `내수 경제 활성화` - - 성장 동력 강화 : 생산성 높이기. 세금을 낮추고, 노동 시장 접근성을 높이고, 투자를 늘리고, 교육과 혁신 비용을 늘리고, 정치적 발언에서 그치는 것이 아닌 코로나 19 이후 실행에 옮겨야 한다. - -* __기업이 살아남는 방법__ - - 유동성 확보, 자기 자본 확대, 벤치마킹으로 현 좌표 파악, 부채 상환 전략 수립, 생산지 재배치 검토, 재무 및 영업 레버리지 검토, 비용절감, 신뢰유지(사회적 공헌 및 파트너십) - - 상황별 `시나리오`에 따른 대처 : V, U, W, L 상황에 따른 각각의 대비책 - - `반세계화`에 대비 : 독점금지법과 특허 보호 역량 강화 - - 판매 최대화 : 활동 규제 때문에 `소비를 줄인 고객들의 잠재구매력` 활용 (상품권이나 할인행사 등) - - `정부 경기부양책` 활용 : 대규모 지출 정책이 예상됨. 사회기반시설, 디지털, 기후변화 등 - - 전쟁 및 질병의 위기 후 `인플레이션`이 도래했기 때문에 임금 상승, 혁신적인 가격 전략 등에 대한 `대비` 필요 - - 에너지, 자동차, 무역, 노동 시장에서 근본적인 기술 변화에 대비 - - 기회의 측면 : 경쟁사 인수, 정부 보조금 확보, `완전히 다른 산업 기회와 모델`에 대비 - -* __우리(개인)가 생각해 볼 문제__ - > "위기속에는 언제나 기회가 있다." - > "당신이 가진 도구가 망치 뿐이라면 모든 문제가 못으로 보일 것이다." - - 현재 우리나라의 `부동산 정책` : 경기 부양을 위해 대출을 해줘야 함에도 부동산에는 안 해주므로, 부동산 관련 대출이 있는 사람들은 주의할 필요가 있다. 하지만 양적완화는 우리만의 문제가 아닌 전 세계적인 문제이므로 과연 부동산 시장에 침체가 올지 호황이 올지 속단하기 어렵다. 인플레이션이 권장되고 필연인 현 시점에서 부동산 자산 가치의 상승은 한동안 지속될 것으로 조심스레 예측해본다. - - 이대로 양적완화가 지속될 것인가? 임금 상승 및 인플레이션이 다가올 것인가? - - `고령화`를 위기가 아닌 엄청난 기회로 받아들여야 한다. 위기 대응 능력은 언제나 필요하다. - - 기회 : 디지털, 온라인, 화상회의, 재택근무, 보호주의, 4차산업 혁명, 인플레이션 등 - - 위기 : 오프라인 상점, 항공사, 숙소, 컨택트 등 - - `혁신`은 소비자에게 혜택 뿐만 아니라 싸게 구입할 수 있게 해준다. - - 2020년 가을 `2차 대유행`은 과연 올 것인가? - - 최악의 경우 , "`패닉에 빠지려면 먼저 빠져라!`"라는 좌우명에 따른다. - -위에서 언급했듯이 거시경제 지표 간 복잡한 관계를 이보다 쉽게 설명한 경제 서적을 본 적이 없다. 특히 그동안 유행했던 재테크 방식이었던 레버리지에 초점을 맞춰 경제를 알기 쉽게 설명해 준 책은 찾기 어려웠다. 더불어 코로나로 인한 각국 정부의 경제 정책에 대한 전망 및 해법을 다루고 있으며 나아가 기업들이 생존하기 위한 해법을 제시한다. - -그 과정에서 이미 우리가 안고 있던 부채 위주의 세계 경제의 심각함과 과거 역사를 객관적으로 되짚어 대공황과 과거 질병유행 등의 선 경험을 통해 미래를 예측해보는 의미있는 시간에 세계의 유명한 경제 석학의 눈을 빌려 우리의 눈높이에 맞게 참여할 수 있다는 것은 비단 코로나에 대한 대비 뿐만 아니라 스스로의 경제 지식을 함양하는데도 큰 의미가 있으므로 누구나 꼭 이 책을 읽어보시길 권유드린다. - -* [책소개 - 코로노믹스](http://www.yes24.com/Product/Goods/90428476?Acode=101) - - diff --git a/_posts/2020-07-05-review-book-dl-and-go.markdown b/_posts/2020-07-05-review-book-dl-and-go.markdown deleted file mode 100644 index 48c38adfc..000000000 --- a/_posts/2020-07-05-review-book-dl-and-go.markdown +++ /dev/null @@ -1,133 +0,0 @@ ---- -layout: post -title: "[리뷰] 딥러닝과 바둑" -subtitle: "알파고를 능가하는 바둑봇을 만들며 익히는 딥러닝, 강화학습" -categories: review -tags: review book python deep leraning 바둑 go alphago alphazero bot 알파고 알파고제로 -comments: true -header-img: img/review/review-book-dl-and-go-1.png ---- - -> `한빛미디어` 출판사의 `"딥러닝과 바둑(막스 펌펄라, 케빈 퍼거슨 저/권정민 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-dl-and-go-1.png) - ---- - -이 책이 다루는 내용은 한 마디의 질문으로 요약할 수 있다. - -> "알파고는 어떻게 만드는 걸까?" - -알파고 덕분에 AI를 심도있게 연구하고 학습하는 이들이 많아졌지만, 정작 알파고와 유사한 봇을 개발한 사람은 극소수가 아닐까 싶다. 당장 업무와 산업 분야에 관련되거나 취업과 관련된 지식이 아닐뿐더러 게임 분야에 관심이 없거나 특히 바둑에 대한 지식이 전무한 사람은 넘어야 할 장벽이 많기 때문일 것이다. - -그럼에도 알파고를 구현하는 것은 큰 의미가 있다. AI 열풍을 견인한 기술의 실체를 최대한 `밑바닥`까지 들여다 볼 수 있는 지적 호기심을 채울 수 있을 뿐더러, 다소 부풀려진 AI에 대한 환상을 제대로 `측정`할 수 있는 기술적 안목을 얻을 수 있고, 우주의 나이보다도 훨씬 많은 `경우의 수`와 불가능에 가까운 연산에 도전해 볼 수 있다는 것은 분명 흥미로운 일이다. - - -> 복기(復碁) - -바둑에는 `복기`라는 용어가 있다. 게임에서 패배한 경우 결정적인 패착수를 둔 상황으로 돌아가 A, B 중 어떤 수를 선택해야 했는지 곱씹어 보는 과정이다. - -재미있는 것은 인생에도 비슷한 느낌의 `선택`을 필요로 하는 순간이 온다는 점이다. 사람마다 다르겠지만 개인적으로 선택의 순간에서 판단이 어려울 때 바둑을 두곤 했다. `착수 A, B 선택의 순간에서 드는 느낌이 묘하게 인생에서의 선택지와 비슷한` 색상, 감, 냄새 같은 것이 느껴질 때가 있는데 승패 결과에 따라 인생에서도 비슷한 느낌의 선택지를 고른다. - -정작 알파고가 놀라웠던 것은 이세돌 9단에게 승리한 것이 아니라 이 표현 못할 `감의 영역을 어떤 방법으로 수치화했는지` 궁금해서였다. 그 `방법을 알면 인생의 답을 얻는데 큰 도움이 되지 않을까`라는 호기심이 계기가 되어 AI와 관련된 서적이나 논문을 읽는 것이 일상의 취미가 되어버렸다. - -잠시 바둑의 이야기를 구구절절 늘어놓은 것은 두가지 목적에서다. 하나는 바둑을 잘 모르는 분들께 알파고를 구현해보는 것이 얼마나 의미가 될 수 있는지 강조하고 싶었고, 다른 하나는 독자분들이 본 도서의 진가를 몰라보고 일본식 전통 의상을 입고있는 표지에 비호감 혹은 고리타분함이라는 선입견이 생겼을까 우려되었기 때문이다. - - -> 베타고(BetaGo) - -본 도서의 두 저자 막스와 케빈은 알파고의 동작 원리에 대한 궁금증을 파헤치고자 알파고와 유사한 오픈소스 바둑봇인 `베타고`를 만든 장본인들이다. 베타고의 성능이 궁금하여 직접 겨뤄봤는데 나는 고작 타이젬 바둑 2단의 실력이기에 베타고의 실력을 가늠할 수는 없었지만 초고수의 느낌은 지울 수 없었다. - -더불어 딥마인드 알파고팀의 대표인 `소레이 그리펠`이 알파고부터 이후의 확장에 대한 여정과 더불어 현대 AI를 구성하는 주요 알고리즘을 익힐 수 있다고 추천사를 남겼기에 더욱 책의 내용에 신뢰가 갔다. 책을 다 읽고난 지금 시점에서는 신뢰의 수준을 넘어서 이 책이 없었다면 개인적으로 알파고를 만드는 길이 얼마나 요원했을지 아찔한 생각이 들어 감사의 마음이 절로 들었다. 이전에도 이미 알파고를 만들고 말겠다는 덕질의 일환으로 여러 책과 논문, 레퍼런스 및 오픈소스를 읽어왔으나 생각보다 다양한 기술들이 필요하고 고민거리가 많아 진척이 쉽지 않았기 때문이다. - - -> 책의 난이도와 선수지식 - -제목에서 알 수 있듯 본 도서의 내용은 조금 어렵다. 먼저 `기본적인 파이썬 및 프로그래밍 관련 지식`이 필요하다. 파이썬의 문법은 물론 배포, Flask, AWS 배포와 연동, 프로토콜 지식 등이 등장한다. - -또한 일정 수준 이상의 `딥러닝` 지식이 필요한데 CNN 모델과 SGD 보다 성능이 좋은 에이다그래드, 에이다델타와 같은 경사법을 이해할 수 있는 수준이면 좋다. 마지막으로 행위자-비평가 학습(Actor-Critic Learning) 및 DQN 등의 `강화학습`에 대한 선수 지식이 있다면 책을 이해하는데 순조로울 것으로 예상한다. 더불어 바둑에 대한 도메인 지식(?)이 은근히 중요하다. - -대신 `바둑`을 좋아하는 사람이라면 본 도서에 충분히 도전할만하다. 즐기는 자는 천재도 노력하는 사람도 이길 수 없다고 논어(論語) 옹야편(雍也篇)에 언급되어 있으니 말이다. 마찬가지로 강화학습이나 딥러닝의 입문을 뗀 분들도 도전해볼만 하다. Python과 알고리즘에 자신있는 분들도 마찬가지이다. - -세가지 경우에 모두 해당되지 않는 분일지라도 반드시 알파고를 만들겠다는 의지가 강력한 분이라면 도전을 권유드린다. 1장에는 딥러닝에 대한 기초 설명이, 2장에는 바둑의 룰에 관한 설명이, 부록에는 선형대수와 미적분 등에 대한 설명이 언급되어있어 도전해볼 만하다. 부족한 부분은 검색이나 유튜브 등을 통해 보완하며 책을 읽어나간다면 최단 시간 내 가장 큰 효과를 얻을 수 있을 것이다. - ---- - -본 도서가 가지는 `장점`을 요약하면 다음과 같다. - -* 알파고를 `실제로 구현`할 수 있다. - 저자들이 실제 베타고를 구현해 본 경험이 있기 때문에 연구 및 구현 능력에 의구심을 품지 않아도 된다. - -* 베타고의 성능을 높이기 까지의 `시행착오와 일련의 과정들`이 잘 녹아있다. - 처음부터 알파고제로 수준의 동작방식이나 원리를 설명하고 구현체의 소스를 설명하는 방식으로 구성되었다고 한들 충분히 가치있는 책이 되었을것이다. - - 하지만 본 도서는 한 단계 더 나아가 저자들이 겪었던 시행 착오들을 언급하고 있다. 그 과정에서 `왜 딥러닝 모델을 CNN으로 바꾸었는지, Input 데이터의 평탄화 작업(Flatten)을 왜 회피하였는지, 몬테카를로 트리 탐색 기법을 강화학습과 결합하여 사용하였는지` 등의 그동안 궁금했던 지식들을 함께 익힐 수 있었다. - - 점 A 하나만으로는 벡터 혹은 함수를 만들 수 없고, 미래의 점 C는 예측이 어려워진다. 본 도서의 구성은 점 A는 물론 A에 대한 개선안인 점 B를 설명하기에 C를 유추해볼수도 있고 나중에 우리가 성능을 보완할 여지인 점 D도 어렵지 않게 추정해볼 수 있다. 더불어 개선 과정에서 딥러닝, 탐색 알고리즘, 강화학습 등 각각의 활용 방법이나 필요성의 진정한 의미에 정통할 수 있다. - -* `실 서비스`를 위한 고민의 흔적들 - - 실제 봇과의 대국을 위한 원시 `CLI`(명령 커맨드 라인 방식) 부터 `WEB Front-End UI` 방식까지 인터페이스 또한 상세히 다룸으로써 아는데 그치는 수준이 아닌 서비스가 가능한 BOT을 구현할 수 있다. - - GPU 자원이 부족한 독자를 위해 모델 다운로드 등의 대안이 제시될 뿐만 아니라 최소 과금체계로 `AWS` 클라우드를 활용할 수 있도록 가이드한다. - - 사람과의 대국 수준을 뛰어넘어 다른이가 만든 `BOT과의 대국 및 성능평가 방법`도 기술한다. - - 프로기사 수준의 기보를 학습하는 방법이 자세히 설명되어있다. `SGF 대국 데이터`를 다운받아 전처리 후 활용하는 방법을 통해 실무에 적용할 수 있는 전처리 기법도 배울 수 있다. - - 바둑 전용 프로토콜 `GTP` 및 Front-End 기술도 활용한다. - -* `번역 수준`이 뛰어나다. - ---- - -마지막으로 본 도서의 `주요 내용`을 요약하며 리뷰를 마친다. - -* __딥러닝과 바둑의 기초__ (1장 ~ 2장) - -* __`원시 바둑봇` 만들기__ (3장) - - 바둑의 게임 수행에 필요한 전반적인 기능을 모두 구현한다. - + Enum(흑,백), 보드, 게임 국면상태(GameState) 등 필수 기능 구현 - + 동형반복 규칙을 활용한 패, 돌의 이음 파악 방법, 착수/한수쉼/던지기 등 규칙 구현 - + 조브리스트 해싱 알고리즘을 이용한 속도 개선 - - 사람 및 다른 BOT과의 대국 가능 - ![첫번째](https://theorydb.github.io/assets/img/review/review-book-dl-and-go-4.png) - -* __트리 탐색__ (4장) - - 결정론적 완전 정보 게임에 대한 이해 - - 미니맥스 - + 모든 경로를 탐색하기에 정확도는 높지만 연산속도에 치명적. 틱택도같은 매우 간단한 게임에만 적용가능하다. - + 위치 평가 함수를 활용한 깊이 가지치기 - - 알파-베타 가지치기 - + 충분히 최악인 수가 파악되었으면 상대의 수는 더이상 고려할 필요가 없으므로 가지치기를 통해 연산량을 줄일 수 있다. - - `몬테카를로 트리 탐색(MCTS)` - + 사전 도메인 지식 없이도 임의의 롤아웃을 통해 상태 평가가 가능 - + 탐색할 가지를 선택하기 위해 트리 신뢰도 상한선(UCT) 방식을 활용 - -* __딥러닝__ (5장 ~ 8장) - - 신경망의 기본 : MNIST 구현, 역전파, 손실함수, 경사하강법, 활성화함수 등 - - `바둑용 신경망` 설계 : Encoder 구현, MCTS를 활용한 기보 생성, Keras 학습, CNN 모델 구현, 손실함수 및 활성화함수 개선 등 - - 학습 : SGF 전처리 및 훈련, 에이다그래드를 활용한 신경망 최적화 - - `두번째 바둑봇` 만들기 - + HDF5 포맷을 이용한 예측 에이전트 생성 - + FLASK를 활용한 HTTP 프런트엔드 앱 개발 - + GTP 바둑 프로토콜 사용, AWS 배포, OGS 온라인 바둑서버 연동 등 - ![두번째](https://theorydb.github.io/assets/img/review/review-book-dl-and-go-3.png) - -* __강화학습 적용__ (9장 ~ 12장) - - `상태, 행동, 보상` 등 강화학습의 기본 정리 - - 출력 결과에 대한 확률 분포로부터 표본을 추출하여 정책 신경망 구현 - - 자체 대국을 통한 실험 데이터 수집 - - `정책 경사 학습` : 승리를 이끈 모든 수의 확률을 높이고, 패배에 일조한 수의 확률을 낮춤 - - 교차 엔트로피 손실함수 적용 - - `행동-가치 함수, Q-학습, 행위자-비평가 학습`을 통한 정책 함수 및 가치 함수 활용 등 - -* __알파고와 알파제로__ (13장 ~ 14장) - - `정책 신경망 2개와 가치 신경망 1개` 구현 - - 빠른 정책 신경망과 강한 정책 신경망 - - 시뮬레이션 방식, Q값, 유틸리티 값 등 동작방식 구현 - - `강화학습과 트리 탐색`의 결합 - - `디리클레 잡음, 배치정규화, 잔차 신경망` 구현 - -![구성도](https://theorydb.github.io/assets/img/review/review-book-dl-and-go-2.png) - ---- - -* [책소개 - 딥러닝과 바둑](http://www.yes24.com/Product/Goods/90323579?scode=032&OzSrank=1) - - diff --git a/_posts/2020-07-06-review-book-automate-tasks.markdown b/_posts/2020-07-06-review-book-automate-tasks.markdown deleted file mode 100644 index 833dc1bde..000000000 --- a/_posts/2020-07-06-review-book-automate-tasks.markdown +++ /dev/null @@ -1,94 +0,0 @@ ---- -layout: post -title: "[리뷰] 내 일을 바꾸는 업무 자동화" -subtitle: "파이썬 클릭 한 번으로 지겨운 업무 클리어" -categories: review -tags: review book python 자동화 vscode pycharm pandas cron bot email excel spread sheet crawling -comments: true -header-img: img/review/review-book-automate-tasks-1.png ---- - -> `프리렉` 출판사의 `"내 일을 바꾸는 업무 자동화(이태화 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-automate-tasks-1.png) - ---- -이 책은 "일 잘하는 평사원의 업무 자동화" 개정판이다. 저자는 패스트 캠퍼스 강의 "파이썬을 활용한 업무자동화 CAMP"로 유명한 교수님이며 강의에서 다루는 내용들이 책으로 옮겨졌다 볼 수 있다. - -먼저 책의 내용을 간단히 요약하자면 `폴더 내 파일을 관리하거나, 엑셀을 통합 및 작성하거나, 매일 반복 업무를 수행한다거나, 웹사이트에서 데이터를 수집한다거나, 인스타그램에 좋아요를 누른다던가, 혹은 메신저로 원하는 정보를 발송한다던가` 등의 우리가 일상에서 흔히 하는 일들에 대해 다룬다고 말할 수 있겠다. - -단, 우리의 일상 행동과 차이점이 한가지 존재한다. -> 우리가 손으로 해왔던 일들을 프로그래밍으로 자동화 한다는 것! - -프로그래머가 아니라면 분명 호기심이 들 수 밖에 없는 내용들이다. 내가 인스타그램의 좋아요를 누르지 않아도 프로그램이 알아서 자동으로 눌러준다니! - -바로 이런 흥미로운 주제들이 이 책의 장점이다. 프로그래밍 난이도에 대한 거부감을 느끼기도 전에 그대로 따라하다보면 위에서 열거한 재미있는 일들이 자동으로 이뤄지는 것을 확인하며 재미를 느끼게 될 것이다. 그렇게 자연스럽게 프로그래밍의 스킬이 몸에 베고 나면 보다 능률적이고 재미있는 자동화를 자연스레 쫓게 되며 습관이 되다보면 어느새 개인적인 혹은 직장의 업무도 빠르고 편하게 처리할 수 있다. - -책의 전반적인 내용을 살펴보면 제일 먼저 초보자도 직관적으로 쉽게 배울 수 있는 `Python`이라는 프로그래밍의 기초를 학습한다. 비 전공자라면 프로그래밍에 부담을 느낄 수도 있겠으나 최근 일부 은행의 일반직 행원분들도 프로그래밍 교육이 의무화되고 인사 고과에 반영되는 것을 보면서 더이상 피하기만 할 것이 아니라는 생각이 들었다. 다행히도 본 도서에서는 자동화에 필요한 부분만을 골라서 아주 기초적인 내용만을 다룬다. - -살펴보니 클래스라는 개념을 제외하고는 달리 어려울만한 내용이 없었다. 설치는 그대로 따라하기만 하면 될 정도로 `매우 상세히 단계별 스크린 샷`이 제공된다. 변수와 자료형 또한 예제를 찍다보면 자연스레 익힐 수 있다. 프로그램이 어떤 값을 저장하는 공간을 `변수`라하고, `자료형`이란 데이터의 유형이나 생김새를 의미하는데 우리가 흔히 업무에서 엑셀 등으로 다뤘던 유형에 지나지 않으므로 쉽게 익힐 수 있다. - -`제어문`은 if문이다. 살면서 항상 선택을 해야하듯이 프로그램도 어떤 행동을 할지 선택을 해야 한다. 어떤 조건에 따라 어떤 선택을 할지 각기 다른 명령을 내리고 싶을때 if문을 사용한다. `반복문`은 말 그대로 같은 동작을 반복하기 위해 사용한다. 예를 들면 1부터 100을 더한다면 더한다는 동작을 하나의 명령문으로 놓고 시작을 1, 끝을 100으로 놓는 반복문 1줄만 추가하면 총 2줄으로 1부터 100이든 1000이든 모두 더할 수 있는 셈이다. - -`함수`는 같은 동작을 반복할 일이 있다면 매번 비슷한 프로그램을 만들 것이 아니라 하나를 제대로 만들어 재사용하여 효율성을 높이고자 사용하는 것이다. 문제는 `클래스`인데 여기엔 객체지향언어(OOP)라는 개념이 들어가므로 비 전공자들이 처음 익히기엔 다소 어렵다. 하지만 이 책에서는 그저 함수나 변수들을 모아놓은 전체 집합 정도로 여기고 학습하면 문제가 없을 것이다. 키워드 정도만 외우고 그대로 따라해보면 감을 잡을 수 있다. - -이어서 다양한 일상 업무 자동화 예제를 다루고 매일 반복 수행을 할 수 있게끔 `cron`에 대해 배운다. 마지막으로 프로그래밍에 깊은 관심이 생긴 독자들을 위해 Python을 보다 효과적으로 다룰 수 있는 Pycharm, VS Code와 같은 `IDE` 활용법을 다룬다. IDE 부분은 관심이 없다면 건너 뛰어도 큰 문제가 없다. - -여기까지가 책의 전반적 내용이다. 이 정도의 설명으로는 약간 추상적으로 느껴질 수 있으므로 이 책의 `꽃`이라 할 수 있는 "`도전업무`" 시리즈 몇 가지를 추가로 소개해볼까 한다. 프로그래머 분들에게는 어렵지 않은 내용일 것이기에 비 전공자 분들이 본 리뷰의 독자라 생각하고 조금 쉽게 풀어보겠다. - -* __`스캔 파일`을 폴더로 정리하기__ - 평소 탐색기를 통해 윈도우의 엑셀 혹은 워드 파일을 바라봤던 분들은 프로그래밍으로도 파일, 폴더에 접근할 수 있다는 사실에 매우 놀랄 것이다. - - Python의 os, shutil과 같은 패키지를 이용하면 폴더 내 파일의 목록을 한번에 불러올 수도 있고, 파일명을 변경할 수도 있으며 이동도 가능하다. 심지어 파일을 읽어서 내용을 변경한 후 다시 저장할 수도 있다. - - 스캔을 하면 보통 스캐너의 디폴트 양식에 맞게 파일명이 생성된다. 보통 날짜+순번 정도로 파일명이 생성되는데 그 규칙을 파악해보고 Python의 문자열 함수를 이용한다면 원하는 대로 분류할 수 있을 것이다. 업무 상 스캔할 일이 많거나 스캔 파일을 정리하는 일이 많은 분들이 활용한다면 줄어드는 업무 시간에 깜짝 놀라게 될 것이다. - ![스캔파일](https://theorydb.github.io/assets/img/review/review-book-automate-tasks-2.png) - -* __여러 `엑셀` 파일의 내용을 `취합`하기__ - 처음 접하는 분들은 매번 엑셀을 직접 열어서 기록할 줄만 알았지 프로그램도 엑셀을 열고 내용을 변경할 수 있다는 사실에 놀랄 것이다. 주위분들에게 사소한 자동화 몇 가지만 알려드려도 굉장히 많이 놀라신다. 어떻게 이런것들이 가능하냐고. - - 하지만 더욱 놀랄 것은 프로그래밍을 배우지 않은 분들도 이 책에서 다루는 정도의 학습만 익힌다면 이 모든 것들을 구현할 수 있다는 사실이다. 이 파트 역시 os 및 파일과 관련된 함수 몇가지를 다룰 줄 알면 매우 쉽게 엑셀을 취합할 수 있음을 알게 될 것이다. - ![엑셀](https://theorydb.github.io/assets/img/review/review-book-automate-tasks-3.png) - -* __결제 완료한 수강생들에게 `메일` 보내기__ - 이 부분부터 살짝 어려운 내용들이 보이기 시작한다. 지금까지는 내 PC안의 파일들만 다뤄왔다면 이번 장 부터 최초로 `네트워크`라는 개념이 들어가기 때문이다. 아무리 초보자라도 인터넷이 끊기면 네이버나 구글에 접속을 못하고 이메일도 보낼 수 없음을 알고 계실 것이다. - - 여기서는 처음으로 다른 서버와의 연결 작업인 `SMTP` 프로토콜을 활용한 이메일 전송 기능이 포함된다. 덕분에 아이디, 패스워드와 관련된 `인증` 개념도 등장한다. - - 하지만 막상 예제를 구현해보면 알겠지만 생각보다 별로 어렵지 않다. 일단 예제를 있는 그대로 따라쳐보면 서버와의 통신에 대한 감이 잡히기 시작할 것이다. 대부분의 직장인에게 이메일 발송은 업무의 상당 시간을 차지하는 일이므로 알아두면 큰 도움이 될 것이다. - ![이메일](https://theorydb.github.io/assets/img/review/review-book-automate-tasks-4.png) - -* __네이버 `검색 결과` 수집하기__ - 주위 분들에게 자동화를 알려주다 보면 이 예제에서 다룰 `웹 크롤링` 기술에 가장 놀라곤 한다. 지금까지 웹페이지에서 필요한 내용은 드래그해서 일일이 편집하기 일수였지만 이 부분이야 말로 자동화의 꽃이라 할 수 있다. - - WEB 페이지도 결국은 구조를 가지고 있다. 흔히 DOM이라는 구조로 불리는데 네이버 검색 사이트와 같은 웹프로그램도 `DOM`의 어떤 패턴에 일치하게 구조화하여 데이터를 제공한다. - - 우리가 웹 크롤링에서 할 일은 `BeautifulSoup`이라는 Python 라이브러리를 이용해서 HTML 웹 페이지를 DOM이라는 구조로 변경시킨 후 소스를 열어 유일한 검색어를 찾아 분석하는 것이다. 분석 후 수집한 내용은 예제처럼 이메일로 발송하거나 엑셀로 저장하거나 앞서 배운 다른 어떤 방식으로든 우리 원하는대로 저장할 수 있다. - ![검색결과](https://theorydb.github.io/assets/img/review/review-book-automate-tasks-5.png) - -* __인스타그램 태그 검색 후 인기 게시글에 `좋아요` 누르기__ - 여기에서도 웹 크롤링을 다룬다. 단지 차이가 하나 있다면 `selenium`이라는 라이브러리를 활용해서 마치 아이디, 패스워드를 입력하고 `인증`한 것과 동일한 효과를 낼 수 있다는 점이다. - - 더불어 우리가 마우스로 브라우저를 다루는 것과 동일하게 프로그램이 알아서 귀신처럼 마우스를 움직이고 클릭하는 등의 장관을 목격할 수 있다. 왜 이렇게 되는지 파악하는 건 나중 문제이다. 일단 한번 이 멋진 예제를 수행해보길 바란다. - ![인스타그램](https://theorydb.github.io/assets/img/review/review-book-automate-tasks-6.png) - -* __네이버 검색 결과 `메신저`로 받기__ - 너무 주옥같은 실전 예제들이 많아 모두 다루기 어려워 이 예제를 끝으로 소개를 마칠까 한다. 이 부분도 위에서 다룬 예제들과 유사하다. 일단 웹 페이지의 구조를 분석하고 웹 크롤링을 통해 정보를 수집한다. - - 차이점은 수집한 데이터를 `텔레그램 메신저로 전송`하는 일인데 어려워 보이지만 생각보다 간단하다. 텔레그램의 봇 `API Key`를 발급 받고 Python의 모듈을 활용해 해당키와 함께 수집 결과를 전송하면 알아서 메신저 창에 뜬다. - - 우리의 메신저를 통해 알고 싶었던 이벤트와 내용들이 자동으로 시시 각각 도착한다고 생각해보라. 마치 개인 비서를 둔 기분이 들 것이다. - ![텔레그램](https://theorydb.github.io/assets/img/review/review-book-automate-tasks-7.png) - - -이상으로 책에 대한 소개를 마칠까 한다. 책에서 다루는 내용들은 상당히 광범위하므로 본 리뷰에서는 대략적인 책의 요약 내용과 흥미로운 예제들을 중심으로 다뤄보았다. - -프로그래밍을 알게되면 비단 일상의 효율화를 얻을 수 있을 뿐만 아니라 사고의 깊이를 깊게 해주므로 취미로도 가까이 할만 하다. - -다만 배우는 과정에 있어 약간의 인내가 필요하게 마련인데, 일상에서 골치아팠던 일들을 해결하고 자신의 온라인 취미 생활까지 윤택하게 해주는 이런 흥미 진진한 일들을 다루는 본 도서와 함께 한다면 프로그래밍과 자동화라는 두마리 토끼를 쉽게 잡을 수 있을거라 확신한다. - -프로그래밍을 한번도 배우지 않았거나 반복되는 일상 업무에 지친 분들께 꼭 추천드린다. - -* [책소개 - 내 일을 바꾸는 업무 자동화](http://www.yes24.com/Product/Goods/90451960?scode=032&OzSrank=1) - - diff --git a/_posts/2020-07-07-review-book-meet-CEO.markdown b/_posts/2020-07-07-review-book-meet-CEO.markdown deleted file mode 100644 index f8ba5bd5a..000000000 --- a/_posts/2020-07-07-review-book-meet-CEO.markdown +++ /dev/null @@ -1,160 +0,0 @@ ---- -layout: post -title: "[리뷰] 사장님 만나주세요!" -subtitle: "꿈을 찾아 떠난 청년 사업가의 무한도전" -categories: review -tags: review book CEO 창업 사업가 동남아 인사이트 여행 비즈니스 경험 경영 사람 -comments: true -header-img: img/review/2020-07-07-review-book-meet-CEO-1.png ---- - -> `뜨인돌` 출판사의 `"사장님 만나주세요!(김상우 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-07-07-review-book-meet-CEO-1.png) - ---- - -본 도서는 `사업가가 되기 위한 꿈을 이루고자 동남아시아의 CEO들을 만난 한 청년의 모험기`이다. - -저자는 장교로써의 임관을 2달 앞두고 사업가가 되기 위한 꿈을 이루고자 남은 시간을 어떻게 의미있게 보낼지 고민한다. 수학과 출신인 그에게 가장 부족한 것은 경영학에 대한 지식이었고 결국 그는 옛 은사님의 조언을 떠올려 전문가를 찾아 직접 만나고자 도전에 나선다. - -> 사업의 꿈을 이루고 싶은 무대 동남아시아로 직접 건너가 성공한 CEO들을 직접 찾아가 지혜를 얻는 것. - -본 도서는 2015년 여름 동남아사아 5개국을 여행하며 한입 사업가들을 만나 인터뷰한 기록이다. 2019년 여름 다시 사업가들을 찾아가 당시의 기록을 보완하여 책으로 출간되었다는 것이 흥미로운 점이다. - ---- - -개인적으로 재미있고 인상깊었던 눈여겨 볼만한 장점들을 요약하면 다음과 같다. - -* __창업을 먼저 겪은 선배 CEO들의 인사이트와 도전이 담겨 있다.__ - - 베트남 `달릿밀크` 호대표 - + 1992년 베트남 유제품 시장의 미래를 보고 국영 기업 민영화 당시 인수. 주식 10%를 보유한 주주이자 경영인. - + 경영은 전체적인 프레임을 어떻게 볼 수 있느냐가 중요한 것이지 해당 분야의 전문성이 필요한 것이 아니다. - + 파스퇴르유업 회장님의 명언 : "타성에 젖으면 변화가 어렵다." - + 한달 책 값만 300만원이 드는 `독서`광. 모든 지식은 다 연결된다. 책을 읽고 얻은 15 ~ 18세기의 포르투갈의 역사 지식 덕분에 협상을 성사시킨 일화. - + 직장인일지라도 남 일을 내 일같이 하다 보면 언젠가는 자신의 일을 할 수 있다. - - 베트남 `라이프플라자` 안치복 대표 - + 베트남 한인을 위한 매거진 발행업체의 대표. 광고 사기를 당해 직접 출판업체를 차린 이색 경험의 소유자. 인터넷이 속도가 느린 시절 긁어 붙여 광고 페이지를 만들며 시작. 베트남은 남북으로 긴 형태의 지정학적 특성 상 가까운 이웃 캄보디아의 프놈펜으로 시장을 확장. - + 시장성 조사 : `사줄 사람`이 있어야 한다. - + 장래의 가망성 : 사줄 사람이 `늘어나야` 한다. - + 장소의 중요성 : 유동 인구가 많은 지하철 보다는 주변에 공원 등 `볼거리가 많은 곳` - + 화교식 동업에서 얻는 지혜 : 100만원이 필요 시 100명이 동업하면 각자 1만 준비하면 된다는 이점을 활용. 잘되면 분점을 내고 다른 사람에게 지분을 내고 들어오게하여 확장. 10원을 벌더라도 제대로 나누고, 안된다 싶으면 같이 정리함. `성공하면 200원을 주고 망하면 50원만 달라`는 신뢰를 우선시하는 마인드. 지분에 따른 정산을 명문화함. - + 인맥과 명예 등 지역사회에서 대우를 받기도 하나 잘된다 싶으면 뛰어드는 한국인의 특성 상 잡자사는 경쟁이 치열하여 많은 수익이 발생하진 않음. - - 캄보디아 `트랜스초이스` 최대룡 대표 - + 베트남을 와보니 택시가 없는 것을 보고 시장의 필요성을 깨달아 설립. - + `어느곳을 가든 거기서 필요한 것이 무엇인지` 생각하라. - + 최초로 콜센터 마케팅을 시도. 앞뒤가 똑같은 전화번호 등 - + 늦은 시간 버스에서 내린 승객들을 위해 금호고속 측에서 초이스 택시를 대기시켜 달라는 요청을 받아들이면서 트래비초이스로 사세 확장. - + 택시, 버스를 동시에 운영할 수 있기에 `세명이상 버스를 예약하면 집에서 터미널까지 무료로 픽업` 서비스를 제공함. - + 먼 미래의 목표를 미리 잡아두긴 쉽지 않으며 그것을 가늠하려면 `지금` 내가 하는 일을 보면된다. - - 라오스 폴트레이딩 엄기태 대표 - + 자동차 무역회사. 인도 마힌드라 독점 판매권 획득. 중국 장안자동차 독점 판매권 획득 계획 추진. - + 국내 기업 파견 지사장 시절 회사의 부도가 계기가 되어 그동안의 경험을 바탕으로 창업. - + 현지인 부동산에게 크게 사기를 당함. 경쟁자들을 피해 픽세라는 지방에서 사업 재개. 딜러들에게 100퍼센트 외상으로 차를 공급하며 신뢰 전략 구사. - + 먼저 취직을 하는게 좋다. 사업 아이디어가 있을지라도 `제반 지식`이 필요함. 거래처 만났을때의 `구수한 입담`도 필요. `창업을 꿈꾸는 직원은 상사가 말들으라니깐 잘 듣는게 아니라 자신의 창업관련 지식의 성장을 위한 것임. 중소기업은 많이 가르쳐서 빨리 써 먹어야 하므로 배움이 빠르다.` - + 인터넷에 뜬 정보는 전부가 아니다. 기자라고도 하지 않고 누군가 찾아와서 인생을 얘기했더니 기사가 나와버리는 현실 - + 기왕이면 큰 나라로 가라. 가난한 나라에 가면 대접은 받는데 실상은 별 것 없다. `잘사는 나라는 사업이 망해도 다시 일어설 수 있는 기회가 있지만 후진국에서는 어렵다. 경쟁자가 있다는 것은 시장 또한 형성되어있다는 증거.` (캄보디아 최대룡 대표와는 달리 동남아 시장에 대한 부정적인 의견) - + 사업 이전에 가정과 행복이 먼저다. - - 라오스 `철수네여행사` 박철수 대표 - + 현지의 경제력 수준 때문에 숙박업에서 여행사로 선회. - + 온라인 동남아시아 커뮤니티의 여행자 카페 게시판에 글을 올리며 홍보 - + `여행업은 주로 수수료를 통해 수익이 발생하는 구조이므로 고정비용으로 인한 손실이 적어 운영 부담이 적은 장점`이 있다. - - 태국 `아이윈드` 강금파 대표 - + 풍력, 태양광 발전 사업 등 신재생 에너지 기업 대표. 태국, 제주도, 강원도, 폴란드를 오가는 등 스케일이 큰 사업을 진행. - + 금융회사에서 28세의 나이로 부장직에 오르는 등 초고속 승진의 경험자 - + 탁월한 기획능력으로 회장의 눈에 들어 종합기획실장의 직책을 맡았으나 IMF 사태로 1년만에 빈털털이가 됨. - + 가진 경험을 살려 컨설팅으로 사업을 시작. - + 투자자의 걱정거리는 뻔하다 : 기존 투자자와 겹치는 부분, 이익의 배분 - + 지인의 컨설팅을 도우며 신재생 사업의 전반적인 지식, 기술, 사업성을 익히게 됨 (사람의 `인연, 도움`은 정말 중요하다.) - + 지인을 돕는 중 한-아세안 특별정상회담에서 태국 총리를 접견하고 태국에서의 사업을 실체화 하게 됨. - + 사업 노하우는 책 속에 있지 않다. (이론보다는 실전의 중요성을 강조) `안 되면 스스로 공부할게 아니라 잘하는 사람 돈 주고 데려다 쓰는 식`으로 풀어야 한다. 생각이 유연해야 함. - + 대기업은 연봉은 많지만 절대 안정적이지 않다. 기업 문화에 맞지 않으면 왕따당할 각오도. - + `그 나라 사람들을 한국 방식으로 끌고 가려하면 실패`한다. 계몽운동을 하러 온건지 사업을 하러 온건지 분명히 정해라. 태국인들은 서두르는 일이 없다. 멀리서 비행기를 타고 온 사람한테 다음달에 보자는 약속을 잡기도. 단, SNS 등 기계에 대한 반응은 빠른데 회의는 너무 느리다. 의사결정과정 또한 전원의 의견을 다 듣고 조정한다. 상대방 체면을 우선시하는 분위기 때문. 이 곳에서의 승부는 긴호흡으로 꾸준히 나가야 한다. - + 화교식 사업방식 : 나 혼자서 다 먹는다? 대신 모든 리스크도 혼자 떠안는다. 그걸 `감당할 능력이 되는가?` 동업하다 서로 마음에 안들면 성공한 뒤 헤어지면 된다. - + `전력과 관련된 사업은 유틸리티 분야라 안정적이다.` 안팔리는 재고 걱정도 없이 `일단 만들어 놓으면 다 사간다.` 얼마나 많이 만드느냐의 문제일 뿐. - + 자본주의 시장에서는 돈싸움. 체급도 없다. 돈이 없으면 종속된 인생을 살고 평생 눈칫밥을 먹어야 하는 구조. 한국의 특성은 사람으로 먹고 사는 나라이기 때문에 누군가는 자리를 잡아줘야 모두 살 수 있다. 대만은 직장에 다니는 이유는 자본을 모으고 필요한 것을 배우는 과정으로 여긴다. 에전엔 `공부 잘하면 박수를 받았지만 지금은 평생 종노릇이나 하다가 가는 것임.` - + 모험은 젊었을 때 해야한다. 깨지면 또 일어나서 가면 된다. 늙으면 시간조차 없다. - - 말레이시아 `다오래` 윤선규 회장 - + 요식업이 제일 쉬울것 같아서 시작 - + `자기만 잘하면 혼자만 힘들게 된다. 사람을 잘 거느려야 성공하는 것임.(정말 중요)` - + 지점을 하나 오픈할 때 한 두달 장사를 하고 잘되면 직원들에게 40%를 주식으로 판매(지점장은 10%, 직원은 5%, 경영자는 60%)함으로써 `책임의식` 고취. 새 지점을 접어야 한다면 혼자서 모든 손실을 안고 간다. - + 직원에게 제공하는 복지 차량으로 광고, 홍보 효과를 달성 - + 외국인이 돈 벌어서 모국으로 안가져가고 `현지에 되돌리면` 자연스레 이미지가 좋아진다. - + 화교식 사업방식 : 한국인의 무리한 경쟁은 한국 음식을 세계에서 제일 싼 음식으로 만들어 버렸다. 한국인이 경쟁을 하는 동안, 중국인은 잘 되는 업소에 찾아가 동업을 제안한다.(벌써 3분이나 화교식 사업방식을 극찬한다.) - + 얼마나 좋은 사람들이 주위에 있는지가 성패를 좌우. 외국에 처음 나왔을 때 픽업하러 나온 사람이 누구인가에 따라 그 사람의 운명이 좌우된다. (한인회에서 다들 똑같은 말을 함) - + 처음엔 식당을 늘릴때마다 다 내 재산이라고 생각했으나 시간이 지나면 에어컨도 고장나고 인테리어도 바꿔야하는 등 실상은 그렇지 않다. - ---- - -* __동남아시아 여행이라는 낭만적인 프레임 안에 꿈을 이루기 위한 두근거림이 녹아있다.__ - ![푸시산의 계단](https://theorydb.github.io/assets/img/review/2020-07-07-review-book-meet-CEO-2.png) - + 비행기를 타지 않고도 국경을 넘을 수 있다는 새로운 경험 - + 베트남 - - 동양의 파리 호찌민 시청, 호찌민 노트르담 대성당, 호찌민 중앙우체국 - - 베트남은 프랑스 식민지시절 콜리니얼 양식 등 동서 융합된 문화가 발달함. 에펠탑 설계자 귀스타브 에펠이 설계에 참여함. - + 캄보디아 - - 중앙시장, 국립 박물관, 프놈펜 왕궁, 투옥 슬렝 박물관 - - 숙박시설은 강변은 값이 비싸고 시내 안쪽이 저렴한 편 - + 라오스 - - 메콩강, 루앙프라방 꽝시폭포 - - 화려함보다는 한적한 시골 느낌의 문화 - + 태국 - - 방콕역, 수상버스, 코사멧섬 - - 동남아시에서 가장 발전한 국가 중 하나 - + 말레이시아 - - 쿠알라룸푸르 거리 - ---- - -* __현지에 녹아있는 문화 및 비즈니스 정보를 엿볼 수 있는 좋은 기회이다.__ - - 베트남 - + 인터넷이 싸고 무료 와이파이가 흔하다. 호찌민 시내 중심에서 공항까지 단돈 300원이면 버스를 탈 수 있다. - + 오토바이 택시 "모또"가 주요 교통수단이다. - + 한국보다 빗방울이 더 크고 무겁다. - - 캄보디아 - + 오토바이에 수레를 이어 붙인 "툭툭"이 유명하다. 툭툭의 운임은 사람 수마다 달라지기에 택시 요금을 인식하는 문화가 정착되기까지 노력이 필요했음. - + 9 ~ 15세기 앙코르 시대 크메르 제국이 강성. 자야바르만 7세는 한국의 세종대왕급. - + 킬링필드 사건 : 폴 포트 공산주의 독재시절 200만에 가까운 자국민을 대학살. - + 서비스 마인드가 부족해서 별도 교육을 필요로 함. `선진국의 선진 가치를 지역의 문화로 전파하는 공헌`을 통해 신뢰도를 쌓을 수 있음. - + 동남아 시장은 이미 `선진국의 안정된 매뉴얼을 이행하면 되는 후행적 유리함`이 존재함. 미국 등의 이미 갖춰진 나라에서 새로운 사업을 굴리기엔 어려움이 있음을 통해 새로운 기회로 받아들일 필요가 있다. - - 라오스 - + 국경을 넘나드는 슬리핑 버스 : 24시간 장거리 이동 버스로 2층버스로 거대하며 2인 1실의 방이 벌집처럼 내부에 포진되어 있다. - - 태국 - + 입헌군주제 나라로 국왕이 존재. - + 도시철도는 MRT, BTS, 공항철도 3가지로 나뉜다. 수상버스 요금은 15바트(우리나라돈 600원) - + 미국식 묽은 커피를 먹는 나라는 한국과 필리핀 뿐이다. 동남아 대부분의 나라들은 유럽식 독한 커피를 마신다. - ---- - -* __일개 대학생이 상류 사회의 CEO들을 만나기 위한 경험담과 기타 타국에서의 도전은 또 다른 도전에 좋은 인사이트를 준다.__ - - 무모할 정도로 무계획적인 모습을 보이기도 한다. 도로 등 인프라가 발달하지 않은 곳에서 자전거로 국경을 넘나드는 여행에 대한 발상하며, 만날 CEO가 누군지 파악하고 선약을 잡지 않는 모습도 보인다. 상황마다 만난 CEO에게 타국의 CEO를 추천받는다거나 직접 회사를 검색해 찾아들어가 편지를 남기는 등의 기지를 보여주는 모습이 흥미롭다. 2개월의 짧은 여정에 갑작스럽게 정한 도전인지라 완벽한 계획보다는 즉흥적인 모습이 많은데 짧은 기간내 무방비로 목표를 성사시킨다는 점에서 인생과 비슷하기도 하며 의외로 배울만한 요소가 많다. - - 사람은 `누구나 인정받고 싶어하는 욕구`가 있다. 자신의 얘기를 들어주는 것 또한 인정받았다고 느끼는 것일텐데, 저자가 그런 CEO들의 심리를 잘 포착한 것 같다. - - "집 나가면 개고생이다."라는 말이 있듯이 일단 집을 나서는 순간 우리는 많은 도전에 직면하게 된다. 그 순리 그대로 저자는 출국부터 난항에 빠진다. 무비자 여행은 왕복 항공권이 필수인데 편도로 끊는 바람에 출국부터 실패할 뻔 했다. - - 숙박비를 아끼기 위한 사투도 재미있다. 백팩커로 다수 여행자들과 한 방을 이용하는 도미토리 사용은 물론이고 여행중에 타국 친구를 사귀어 친구의 집에서 잠을 취하기도 한다. 때로는 공항 바닥이나 화장실에서 잠들기도 한다. - - 돈 아끼자고 모또 기사와 흥정을 벌이기도 하지만 더 큰 지폐를 주는 실수를 저지르기도 한다. - - 여행중에 다양한 방법으로 친구를 만든다. - - 가족사기단에 걸려 도박에 가담할 뻔한 위기를 겪고 돈도 뜯김. 개인적으로 모든것엔 Trade-Off가 따르는 법이니 평상시와 다른 호의나 운에는 이면의 그림자가 존재하진 않는지 신중해야 한다고 생각했다. - - `룩다운 원스텝` : 고된 목표일수록 눈앞의 한계단 한계단 오르다보면 언젠가는 목적지에 도착할 수 있다. - - 행복은 멀리있지 않다. `예쁜 자연 풍경을 바라보며 살아 있음을 느끼는 것만으로도 행복을 느낄때`가 있다. 여행이 행복을 주는 이유이기도 하다. - ---- - -다 읽고 나서 저자의 한마디가 귀에 맴돌았다. - -> 무엇이든 새로운 싣를 앞두고 앞날을 합리적으로 예측해보는 것은 반드시 필요하다. 하지만 그 미래를 `직접` 확인해보지 않고서는 어떤 것도 쉽게 예측하거나 단정 지을 수 없다. - -한 때 창업을 꿈꿨고 아직도 포기하지 않았기에 늘 창업 서적을 즐겨읽는다. 유용한 정보를 주는 책들이 많아서 좋지만 때로는 고리타분하고 딱딱한 원칙도 등장하고 때로는 파산의 긴장감에 재미의 요소는 찾기 힘들다. 반면 이 책은 유용한 정보와 인사이트도 듬뿍 담겨있으면서 여행이라는 요소가 가미되어있기에 읽는 내내 재미의 요소가 살아있다는 것이 장점이다. - -최근 코로나-19 덕분에 책을 읽을 기회가 많아서 좋다. 대신 여행을 못가 아쉽다. 모든일에는 `Trade-Off`가 있기에 현 상황도 장점을 찾고자 하는 순응의 지혜가 우리 삶을 윤택하게 해 줄 것이라 믿는다. 본 도서 덕분에 좋은 여행을 다녀온 기분이 들었다. - -어느덧 사회에 뛰어든지 수십 년이 지난 직장인이라면 청년 시절 푸릇했던 꿈을꾸던 그 시절로 회상으로 잠시 여행을 다녀올 수 있다. 이제 막 사회에 첫 발을 내딛는 초년생들에게는 선배들의 고귀한 조언을 들으며 미래를 꿈꿔 볼 수도 있을 것이다. - -어떤 목적으로든 코로나-19의 현실속에서 잠시나마 흥미로운 여행을 떠나보시는건 어떠실런지? -![여행을 마치며](https://theorydb.github.io/assets/img/review/2020-07-07-review-book-meet-CEO-3.png) - ---- - -* [책소개 - 사장님 만나주세요!](http://www.yes24.com/Product/goods/90451503) - - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. \ No newline at end of file diff --git a/_posts/2020-07-08-review-book-deep-learning-in-the-browser.markdown b/_posts/2020-07-08-review-book-deep-learning-in-the-browser.markdown deleted file mode 100644 index 219447cd7..000000000 --- a/_posts/2020-07-08-review-book-deep-learning-in-the-browser.markdown +++ /dev/null @@ -1,101 +0,0 @@ ---- -layout: post -title: "[리뷰] 딥러닝 인 더 브라우저" -subtitle: "자바스크립트 프레임워크를 이용한 딥러닝 웹 개발" -categories: review -tags: review book deep learning javascript tensorflow.js keras.js chart.js WebGL -comments: true -header-img: img/review/review-book-deep-learning-in-the-browser-1.png ---- - -> `제이펍` 출판사의 `"딥러닝 인 더 브라우저(자비에르 보우리, 카이 사사키, 크리스토프 코너, 레이이치로 나카노 저/이수진 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-deep-learning-in-the-browser-1.png) - ---- -본 도서의 내용을 한 줄로 요약하자면 `AI와 웹 개발의 만남`을 다룬 책이라고 할 수 있겠다. - -이제 Front-End에서도 딥러닝을 학습할 수 있는 시대가 되었다. 개인적으로 2018년 당시 텐서플로 서밋과 구글 I/O는 정말 충격이었다. - -모든 주제가 인상깊었지만 특히 사람처럼 대화하는 튜링 테스트 구글 듀플렉스(Google Duplex)와 `Tensorflow.js`의 시연이 아직도 여운에 남는다 ([관련영상 - TensorFlow for JavaScript (Google I/O '18)](https://www.youtube.com/watch?v=OmofOvMApTU)). 얼굴 및 텍스트 인식, 바코드 스캐닝 등을 가능하게 해주는 모바일 버전 `ML Kit`과 더불어 IoT 디바이스 버전의 `Tensorflow Lite`도 등장했다. - -자바스크립트 역시 ECMA 표준 규격이 발표된 이래 브라우저에서 3D 그래픽을 그릴 수 있게 해주는 `WebGL`, 실시간 멀티미디어 통신을 위한 `WebRTC`, 게임 패드 컨트롤러 `GamePad API`, 오디오 합성을 위한 `WebAudio`, 증강 및 가상현실 `WebXR` 등의 신기술이 꾸준히 등장하였다. - -심지어 고유의 경계선도 넘어서 서버 측에는 `Node.js`가 등장하였고, Desktop Application 진영에는 `Electron`이 등장했다. 자바스크립트의 구현을 풍부하게 해주는 `Vue.js, React.js, Angular.js` 프레임워크가 등장한 것은 이미 오래전의 일이다. - -백엔드에서 주로 수행되던 AI 기술이 클라이언트에서 가능해진 배경에는 `모바일 GPU` 성능의 향상, `5G` 이동통신의 등장, `Edge Computing`의 부상, `Tensorflow.js` 개발 등의 요소를 들 수 있다. 앞으로 IoT 기기들이 부상하게 되면 자체의 기능과 VR, AR 서비스를 충실히 수행하기 위해 AI 서비스의 여부는 더욱 중요해질 것이라 생각한다. - -더불어 Front-End 시장에 AI기술이 접목되면 기술에 대한 소요가 상당할 것으로 예측된다. 그럼에도 아직 클라이언트 측에서 AI 서비스를 가능하게 해주는 레퍼런스는 많지 않은 듯 하다. 특히 책은 거의 찾아보기 힘든데 때 마침 본 도서가 등장하여 꼭 읽어봐야겠다고 생각했다. - -이 책을 다 읽고 나면 `Tensorflow.js를 활용해 기본적인 AI 모델을 생성 및 학습`할 수 있으며, 프런트엔드 기술과의 연동도 가능해진다. `WebGL의 활용과 더불어 이미지에서 픽셀을 추출하여 캔버스에 렌더링하거나 카메라, 마이크, 스피커를 활용하여 딥러닝과 연동`할 수 있다. 마지막 8장에서는 그동안 배웠던 지식을 종합하여 분류, 텍스트 생성, 이미지 노이즈 제거 등 실무에 적용할 수 있는 프로젝트를 다룬다. - ---- - -책에서 배우고 느꼈던 보다 구체적인 내용들은 아래와 같이 요약해보았다. - -* __딥러닝과 자바스크립트의 기초__ (1,2,4장) - 1장에서는 `딥러닝의 기초`를 소개한다. 딥러닝을 완벽하게 숙지하는 분이 아닌 이상 이미 알고있는 내용일지라도 한번 숙독하시길 권한다. 딥러닝을 수행하는데 반드시 알아둬야 할 핵심 내용들만 간추려 20페이지 정도로 압축했는데 저자들의 실전 경험을 바탕으로 이론을 재구성하여 설명하기에 이해하기 쉽고 가독성이 높다. - - > 1차 선형 방정식, 초평면, 선형 이진분류, CNN(스트라이드, 패딩, 2D 필터, 가우시안-라플라시안 서브 샘플링 등), 활성화함수(시그모이드, 하이퍼볼릭 탄젠트, 렐루, 리키렐루, E렐루, 소프트맥스 등), 손실함수(교차엔트로피, 평균제곱오차 등), 정규화(L1, L2, 가중치 감퇴), 역전파와 미분 연쇄법칙, 최적화(경사하강법, SGD, 네스테로프 모멘텀, 아담, RMSProp 등) 등의 내용을 실전과 핵심 위주로 얕고 넓게 정리한다. - - 보통 딥러닝이나 머신러닝을 학습하기 위해 곁에 두꺼운 책들을 두기 마련인데 세부적인 내용과 기법에 너무 집중한 나머지 큰 숲을 놓치거나 ML, DL 엔지니어링을 하다보면 그런 기법이나 개념들이 있었는지 조차 떠오르지 않을때가 있다. 특히 프런트 엔드 위주의 기술 스택을 갖고 있는분이 종합적으로 정리하기에 시간대비 효과가 좋을 듯 하다. - - 아직까지 프런트엔드 영역에서의 딥러닝은 학습 보다는 활용에 초점이 맞춰져 있기에 활용 중심의 간명한 정리가 인상적이었다. - - 2장에서는 `신경망 모델`을 간략히 정리한다. - - > CNN 파트에서는 핵심 구성 요소인 합성곱층, 풀링층 등의 개념을 정리하고 AlexNet, GoogLeNet, ResNet, SqueezeNet 등의 모델을 활용 중심으로 간단히 정리해본다. 특히 `SqueezeNet`은 AlexNet과 유사한 성능을 가지는데 반해 용량이 작아 모바일, IoT 클라이언트에서 활용하기 좋다. - - RNN 파트에서는 LSTM, GRU를, 그 외 강화학습에서는 DQN 등을 간단히 살펴본다. BERT나 GPT-3 등 비교적 최신 모델이 등장하진 않지만 아직 프런트엔드에서 수용할 수 있는 모델이 아닌데다 원서가 2018년도의 책임을 감안할 때 필요한 만큼의 적절한 요약이라 생각한다. - - 4장에서는 `자바스크립트의 기초`를 다룬다. 장황한 설명이 아닌 딥러닝에 꼭 필요한 핵심 내용만 정리한다. - - > 데이터 타입에 관련된 TypedArrays, ArrayBuffer, DataView 등의 `형식화 배열` 및 논블로킹 I/O 위주의 `비동기` 매커니즘을 정리한다. 더불어 웹 또는 로컬시스템의 리소스를 로드하기 위한 추상화 메서드 `Fetch API`를 배운다. - -* __딥러닝 프레임워크__(3,8장) - 3장에서는 먼저 프런트엔드 진영의 대표적인 딥러닝 프레임워크들을 살펴본다. - - TensorFlow.js : 구글에서 개발. node.js에서 학습 및 배포 가능. [코드펜](https://codepen.io/)에서 설치없이 실행해 볼 수 있음. - - WebDNN : 도쿄대학교에서 개발. 학습이 불가능하며 추론만 가능하다는 단점이 있음. - - Keras.js : 2018년 이후 유지보수 중단. - 특히 XOR 분류기 예제를 만들다보면 TensorFlow와는 약간 다른 느낌의 TensorFlow.js의 감을 잡을 수 있다. 모델 구현, 네트워크 구조 파악, 텐서, 연산, 학습의 개념을 익히다보면 `프런트엔드 고유의 코딩 스타일`에 대한 감을 잡을 수 있다. - - 8장은 TensorFlow.js를 활용하여 그동안 배운 기술을 총정리한다. `웹캠을 활용한 가위바위보 게임, 텍스트 생성 애플리케이션, 이미지 노이즈 제거 프로그램` 등을 만들어 보며, 서비스를 위한 전 과정을 다룰 수 있다. 덕분에 딥러닝 기술을 프런트엔드에서 어떤 방식으로 활용하는지, WebGL을 비롯한 브라우저와의 인터페이스는 어떻게 구성되는지, 아이디어와 기획은 어떻게 솔루션화시켜야 할지 종합적인 감을 잡을 수 있다. - -* __딥러닝-웹브라우저 인터페이스__(5,6,7장) - 5장에서는 GPU 가속화를 활용하기 위한 `WebGL`을 다룬다. WebGL을 활용하면 실시간으로 비디오 스트림이 가능하다. 아래 그림은 가상 3D 선글라스 착용 애플리케이션이다. - ![3D 선글라스](https://theorydb.github.io/assets/img/review/review-book-deep-learning-in-the-browser-2.png) - - WebGL은 프로젝트 전체를 일반 행렬 연산으로 개발해야 한다는 특징이 있으며 렌더링 파이프라인 기법을 활용한다. \ 엘리먼트를 통해 UI와 연동되며, 그리기 영역은 뷰포트(viewport)이다. GPU에서 실행되는 코드를 버텍스, 프래그먼트 셰이더로 래핑하는 것이 핵심인데 주요 구조는 아래 그림과 같다. - ![WebGL 동작방식](https://theorydb.github.io/assets/img/review/review-book-deep-learning-in-the-browser-3.png) - - 망델브로 프랙탈을 그리는 예제를 시작으로 디버깅, 텍스처 렌더링, 부동 소수점 계산 문제 등을 차례로 다룬다. 마지막 MNIST와 유사한 예제를 구현해 보며 당연한 이야기지만 확실히 프런트엔드는 백엔드와 다르다는 것을 느꼈다. 그동안 모델의 네트워크나 성능에 초점을 맞춰 학습했었는데 프런트엔드는 UI와 연결되어야 하다보니 이미지 인식 분야의 경우 WebGL과 같은 일종의 별도 UI Layer가 필요하다는 것을 깨닫게 되었다. - - 처음으로 접하다 보니 생각보다 난이도가 높았는데 WebGL을 다루며 주화입마에 빠지기 쉬운 영역들을 특별히 신경써서 집중적으로 다뤄준 인상이 들었다. 저자가 언급한대로 렌더링하기 전에 다른 객체들을 그리는 연습을 통해 향후 WebGL 구현을 논리적으로 풀어갈 수 있을 것이라는 말이 어떤 의미인것인지 어렴풋이 감을 잡을 수 있었다. - - 6장에서는 `브라우저와의 데이터 통신`을 다룬다. URL, 웹캠, 오디오를 통해 데이터를 추출하며 앞서 4장에서 다뤘던 형식화 배열과 Fetch API도 활용한다. Canvas API를 사용하여 이미지 데이터로 변환하거나 형식화 배열 위 추상화를 사용하여 이미지, 오디오 데이터를 파싱하는 방법도 배울 수 있다. - - 가끔 특정 웹사이트를 방문하다보면 이런 기술이 브라우저에서 어떻게 가능할까 놀란 때가 있는데 이번 장에서 다양한 멀티미디어 데이터를 다루다보니 그런 멋진 기능들의 내부 메커니즘을 알 수 있게 되었다. 개인적으로는 가장 실습하기 재미있던 장이었고, 어렵긴 마찬가지였지만 확실히 5장에 비해서는 해볼만 했다. - - 7장은 흥미로운 예제가 많다. 아래 그림은 구글에서 발표한 Sketch-RNN 모델을 사용한 드로잉 애플리케이션 데모이다. 캔버스에 그림을 그리고 펜 스트로크를 추출해보는 예제를 다룬다. - ![Sketch-RNN](https://theorydb.github.io/assets/img/review/review-book-deep-learning-in-the-browser-4.png) - - Protobuf.js를 사용하면 `사전에 학습된 모델`도 불러올 수 있으며, Chart.js 예제 덕분에 데이터가 실시간으로 변화는 상황에서 렌더링하는 메커니즘을 이해할 수 있었다. 처음 경험하는 기술들이라 어렵기도 했지만 흥미진진한 기술들이 많았다. 7장까지 읽다보니 그동안 발전해 온 프런트엔드의 주옥같은 기술들이 어떻게 AI와 결합하는 것인지 감을 잡을 수 있었다. 배울것이 무한대로 늘어난다는 사실에 좌절하기도 했지만 지적 호기심에 여러번 설레기도 했다. - ---- - -이로써 정리한 내용을 마무리하며 주의할 점과 아쉬운 점을 첨언할까 한다. 아직까지 클라이언트 측의 딥러닝은 백엔드에 비하면 많이 부족한 것이 사실이다. 위에서 정리했듯이 TensorFlow.js가 완벽하게 브라우저 하나만으로 독립적으로 구현할 수는 없어 `Node.js에 의존`한다는 점, TensorFlow.js를 제외한 대부분의 프레임워크는 딥러닝 학습은 불가능하고 `추론만 가능`하다는 점이다. - -마치 JQuery 라이브러리 하나만 include하면 당장 프런트엔드 딥러닝이 가능한 것으로 인식하는 독자분들이 계실듯하여 노파심에 글을 남긴다. 물론 양쪽 기술모두 전례 없이 급속도로 발전하고 있기 때문에 조만간 Node.js 등의 의존없이도 활용 가능한 시기가 도래하겠지만 적어도 TensorFlow.js를 활용하려는 독자 분들은 이 점을 알아두셨으면 한다. - -약간의 아쉬운 점이 있다면 본 도서가 큰 숲을 다루는 만큼 나무 하나하나의 설명은 약간 부족한 편이다. 특히 TensorFlow.js의 설치 과정의 가이드가 빈약하기에 두 기술 모두 어느정도 다뤄봤던 사람이 아니면 예제를 실습하기 어려움이 있을 듯 하다. - -양평에 두물머리라는 한 번쯤 가볼만한 여행지가있다. 그곳에 가면 북한강과 남한강이라는 거대한 두 물줄기가 만나 한강을 이루는 장관과 경치를 감상할 수 있다. 개인적으로 AI는 워낙 관심이 많았던 분야라 거대한 물줄기를 실감하고 있었지만 책을 읽으며 프런트엔드 진영의 기술도 AI 못지 않게 장관을 연출하고 있다는 사실을 깨닫게 되었다. 그보다 소중했던 경험은 `두 거대한 기술을 어떻게 융합할 수 있는지 큰 그림을 볼 줄 아는 눈`을 얻었다는 것이다. - -본 도서는 딥러닝, 자바스크립트 둘 다 초급 이상은 다룰줄 아는 분께 적합하다. 더불어 Node.js를 구현해 본 독자라면 더할나위 없이 좋은 책이다. 적어도 두가지 기술 중 하나의 수준이 깊다면 읽는데 큰 무리는 없어 보인다. 그럼에도 둘 다 모르는 분들 또한 관련 내용을 다루는 도서가 매우 희귀하다는 점, 두 기술의 융합 방법에 대한 인사이트를 얻을 수 있다는 점에서 꼭 읽어보시길 추천드린다. - ---- - -* [깃허브 예제코드](http://git.io/Jvso3) -* [책소개 - 딥러닝 인 더 브라우저](http://www.yes24.com/Product/Goods/88244652?Acode=101) - - diff --git a/_posts/2020-07-09-review-book-neural-net-textbook.markdown b/_posts/2020-07-09-review-book-neural-net-textbook.markdown deleted file mode 100644 index 48fe1cc18..000000000 --- a/_posts/2020-07-09-review-book-neural-net-textbook.markdown +++ /dev/null @@ -1,130 +0,0 @@ ---- -layout: post -title: "[리뷰] 신경망 교과서" -subtitle: "6개 프로젝트로 제대로 배우는 신경망의 기본기" -categories: review -tags: review book 딥러닝 신경망 neural network autoencoder CNN RNN LSTM Siamese 당뇨예측 요금예측 노이즈제거 이미지분류 리뷰감성분석 안면인식 -comments: true -header-img: img/review/2020-07-09-review-book-neural-net-textbook-1.png ---- - -> `길벗` 출판사의 `"신경망 교과서(제임스 로이 저/이춘오 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-07-09-review-book-neural-net-textbook-1.png) - ---- - -본 도서의 특징을 한 줄로 표현하자면 딥러닝에서 자주 활용하는 기술을 `최단 시간내에 가장 쉽게 익힐 수 있는` 실전 교과서라고 할 수 있겠다. IT 기술은 백문이 언제나 불여일타이다. 도서의 내용 요약은 잠시 뒤로 미루고 멋진 예제 하나를 집중적으로 분석하여 책의 특징을 빠르게 파악해보겠다. - -이 책에는 총 6개의 신경망 예제가 소개되는데 하나하나 특별한 장점들이 숨어있어 어느 파트를 집중적으로 리뷰할지 고민했다. 4장 이미지 분류에서는 CNN의 필터나 Max 풀링을 지금까지 본 어떤 레퍼런스보다 쉽게 설명하고 있고 전이학습이 매력적이다. - -5장 오토인코더에서는 노이즈 제거라는 실용적인 예제가 마음에 들었고 나중에 GAN을 학습하는데 도움되는 개념이 많았다. 7장 안면 인식 예제에서는 비교적 새로운 샴 신경망을 소개하고도 싶었고, 6장 역시 RNN, LSTM, 장기의존성 이슈를 시각적 도구를 활용해 쉽게 설명하고 있으며, 2장 당뇨 예측은 간단하여 집중적으로 리뷰를 다루고 싶었다. - -모두 다뤄보고 싶지만 리뷰가 너무 길어져 아무도 읽지 않을 것 같아 3장 `택시 요금 예측`를 집중적으로 리뷰해보려 한다. 이 예제를 선택한 이유는 다음과 같다. -* 업무 도메인 지식이 필요없다. (택시 요금 내는 것 모르는 사람은 없다.) -* 데이터 분석의 기본인 Tabular 형태의 데이터 셋이 등장한다. (기본 중의 기본) -* 히스토그램, 위/경도 점차트나 구글 지도 등의 시각화 자료가 이해를 빠르게 돕는다. -* 그 외 샴(Siamese) 신경망, 전이학습, CNN, RNN, LSTM 등을 다루는 다른 예제들은 처음 접하시는 분들이 책의 특징을 파악하는데 적합하지 않은 듯 하여 제외했다. - ---- - -목표는 간단하다. 콜택시를 호출할 때 모바일 앱에서 `예상 요금`을 가급적 정확하게 알려주는 것이 목표이다. 2009년 ~ 2015년의 총 5,500만회 택시를 운행한 과거 데이터셋이 주어진다. 데이터셋의 컬럼(특징)은 5개로 다음과 같다. -> 요금, 승차 일시, 승차 위치, 하차 위치, 탑승자 수 - -먼저 시각화를 통해 EDA 진행한다. 데이터를 친숙하게 이해하는 과정에서 전처리 및 모델 설계를 위한 전략이 수립된다. 데이터셋에서 승, 하차 위치 정보를 알고 있으므로 먼저 아래 그림과 같이 `위경도 점차트`를 그려본다. 점차트에 대한 이해를 돕기 위해 주변의 주요 랜드마크의 좌표도 함께 찍어본다. -![위경도 점좌표](https://theorydb.github.io/assets/img/review/2020-07-09-review-book-neural-net-textbook-2.png) - -점차트를 통해 어느 지역에서 가장 많이 승하차 하는지 알 수 있다. Manhatten 섬 바깥은 상대적으로 승하차가 적음을 확인할 수 있다. - -다음으로 전처리를 진행한다. 전처리 중 일부인 `통계 요약 정보 및 히스토그램`을 이용하여 이상치 데이터를 탐색하는 과정을 발췌해 보겠다. 아래 그림을 보면 요금이 음수인 경우이거나 500달러가 넘어가는 이상치 자료들이 보인다. 책에서는 Tip으로 히스토그램이 가장 빠르게 직관적으로 이상치를 찾는 방법임과 동시에 통계 요약 정보를 활용할 것을 권장하고 있다. -![이상치](https://theorydb.github.io/assets/img/review/2020-07-09-review-book-neural-net-textbook-3.png) - -전처리는 보통 절차와 코드가 복잡하기에 이를 모듈화하여 `헬퍼 함수`로 생성할 것을 권장한다. 사실 그동안 주피터노트북 위주로 데이터 분석을 시도하다보니 무한 스크롤 압박 때문에 위 아래 이동하기가 너무 불편했다. 코랩에서는 책갈피 기능을 활용하곤 했는데 이 참에 헬퍼 함수 방식을 습득하고 보니 근본적으로 이 방식이 훨씬 편한 것 같다. - -중간중간 아주 유용한 Python 코드들도 숨어있다. 지금이야 다 아는 코드들이지만 예전에 이런 코드들만 명확하게 찝어서 미리 학습할 수 있었다면 얼마나 많은 시행착오를 줄일 수 있었을까 생각이 든다. 리뷰하는 입장에서 군데 군데 숨은 주옥같은 코드들을 잘 익혀두면 쓸데 없는 시간 낭비를 최소화 할 수 있음을 언지하고 싶었다. - -이게 무슨 의미냐면 C, Java에 익숙한 연식(?)이 좀 되는 분들은 데이터를 1차원으로 보려는 선입견이 강하다. Python, R, Julia 등은 데이터 분석에 특화된 언어이기 때문에 그동안 다른 언어에서 적응한 사고 방식이 오히려 방해가 된다. ~~~일찍 태어나서 억울하다. ㅎㅎㅎ~~~ - -몇 가지 유용한 코드들을 예로 들면 다음과 같다. -```python -df = df[(df['amount'] >= 100) & (df['amount'] <= 200)] # 요금이 100이상 200이하인 자료만 -df = df.drop(['amount'], axis=1) # 요금 컬럼 제거 -df['amount' + airport] = func(airports[airport][0]) # 변수의 변수화 -X = df.loc[;, df.columns != 'amount'] # 요금 컬럼만 제외 (물론 loc는 권장하는 방식은 아니다.) -``` -위와 같은 코드들은 처음엔 for문을 돌리면서 컬럼을 하나씩 불러와 복사하는 등의 뻘짓을 많이 했었다. 사고방식이 익숙하지 않아서 그렇지 각 패턴별로 활용할 수 있는 초간단 코드들이 많으니 처음부터 이 책과 같이 좋은 예제로 습관을 들이는 것이 중요하다. - -다음으로는 `특징공학`을 다뤄본다. 특징공학(특성공학, feature engineering)이란 업무 도메인 지식을 활용하여 예측 성능을 높여줄 수 있는 변수(특징)을 만드는 것을 말한다. - -본 예제의 데이터셋에는 `운행거리`가 없으므로 승하차 위치를 활용하여 운행거리를 계산해야 한다. 유클리드 거리를 활용하여 운행거리를 계산한 후 제대로 산출되었는지 검증 목적으로 요금과의 관계를 아래 그림과 같이 시각화한다. -![운행거리와 요금](https://theorydb.github.io/assets/img/review/2020-07-09-review-book-neural-net-textbook-4.png) - -상식적으로 운행거리가 늘어날수록 요금도 증가하는 것이 맞으므로 그림과 같이 비례 관계를 가지는 것이 맞다고 볼 수 있으나 `동그라미 친 부분`은 거리와 상관없이 요금이 일정하여 의심스럽다. 구글링을 통해 알아보니 공항을 오가는 택시는 추가로 통행료를 더한 요금을 지불해야 함을 알 수 있었다. 즉, 동그라미 친 부분은 `공항을 오가는 경우 같은 거리대비 더 많은 요금이 징수`됨을 의미한다. - -이제 새로운 업무 도메인 지식이 생겼으니 특징공학을 활용하여 공항과 승하차 위치간의 거리를 새로운 특징으로 생성할 수 있으며 이는 예측 성능을 높이는데 도움을 준다. - -기타 스케일링 등 전처리를 완료하고 나면 모델을 생성해야 한다. 모델을 생성하는 부분 또한 본 도서의 장점이다. 6개 예제 각기 다른 모델을 사용하므로 모델의 특성에 맞는 레이어를 구성하는 팁이나 손실함수, 활성화함수, 옵티마이저에 대한 옵션 및 하이퍼 파라미터 설정 방법을 안내하여 목적에 맞는 모델에 빠르고 쉽게 적응할 수 있다. -![모델링](https://theorydb.github.io/assets/img/review/2020-07-09-review-book-neural-net-textbook-5.png) - -마지막으로 테스트셋을 활용하여 실제 요금을 `예측`해본다. 특징공학을 활용한 덕분에 제법 정확하게 요금을 예측하는 것을 확인할 수 있다. -![평가](https://theorydb.github.io/assets/img/review/2020-07-09-review-book-neural-net-textbook-6.png) - ---- - -이로써 3장의 택시 요금 예측 예제를 집중적으로 리뷰해 보았다. 그 외 나머지 5개의 예제를 학습하며 인상적이었던 부분을 간략히 요약해보겠다. - -* __당뇨 예측__(2장) - - 다중 레이어 퍼셉트론 및 파마 인디언 부족의 당뇨 데이터셋을 활용하여 새로운 환자에 대한 당뇨 발병 여부를 예측하는 모델을 생성한다. - - 택시 요금 예측 예제와 거의 동일하나 처음으로 다루는 예제인 만큼 EDA 및 전처리의 `기초` 지식을 좀 더 상세히 다룬다. - - 특히, 활성화 함수의 기능과 종류 및 ROC나 혼동 행렬과 같은 `평가` 방법을 알기 쉽게 설명한 것이 인상적이었다. - -* __이미지 분류__(4장) - - 컨볼루션 신경망을 활용하여 개와 고양이 사진을 분류하는 모델을 만든다. - - 이미지 분류, 사물 탐지, 이미지 분할을 별도로 소개하여 관련 기술을 상세히 알 수 있었다. - - 본 장의 백미는 CNN의 필터나 Max풀링에 대한 소개이다. 가장 심플한 예시를 하나 들어 그 과정을 아래와 같은 그림을 통해 정리하기 때문에 이해가 안될 수가 없다. 지금까지 본 어떤 레퍼런스보다 쉽게 설명하고 있는데 이 기조는 뒤의 오토인코더나 RNN, LSTM 등을 설명할때도 계속 이어진다. `추상적이고 복잡한 개념을 알기 쉽게 전달하는 저자의 능력`이 돋보였다. - ![CNN](https://theorydb.github.io/assets/img/review/2020-07-09-review-book-neural-net-textbook-7.png) - - VGG16 모델을 전이학습을 통해 성능을 개선한 예제도 인상적이었다. - -* __오토인코더__(5장) - - 오토인코더는 원본 이미지를 잠재표현으로 변환하는 방법을 학습한다. 단순히 압축률로만 보면 JPEG 등의 일반 기술에 비해 훨씬 떨어지며 오히려 원본이미지가 손실되기도한다. 아이러니 하게도 손실 덕분에 이 기술이 가치를 가진다. - - `손실의 영역만큼 창의성이 개입`될 수 있기에 이 장의 예제처럼 커피 자국으로 오염된 문서에서 노이즈를 제거할 수 있다. - - GAN의 핵심으로 이어지는 유용한 개념이 많았다. - -* __영화 리뷰 분석__(6장) - - LSTM 모델 및 IMDb 데이터셋을 활용하여 영화 리뷰에 대한 감성을 분석하는 모델을 만든다. - - 흔하고 유명한 예제이지만 4장에서 언급한 장점이 한번 더 발휘되는데 RNN, LSTM, 장기 의존성 이슈를 이렇게 `쉽게` 설명하는 책은 본 적이 없다. - -* __안면인식__(7장) - - 샴(Siamese) 신경망을 활용하여 안면 인식 모델을 만든다. - - 속도, 확장성, 적은 데이터셋으로 부터 높은 정확도를 보장하기 위해 CNN 대신 샴 신경망을 이용한다. - - `샴 신경망`은 처음 접해봤는데 가중치가 공유된다는 점, 두 이미지의 유사도 거리를 측정한다는 점, 대조 손실함수를 사용한다는 점에서 흥미로웠다. - - 바이올라-존스 알고리즘의 하르 특징을 활용하여 실시간으로 얼굴을 탐지할 수 있는데 Open CV로 생각보다 쉽게 구현할 수 있어서 유용했다. - -그 외 1, 8장은 이론적인 내용을 다루며 1장에서는 전반적인 머신러닝과 신경망의 기초를, 8장에서는 배운 개념들을 정리해보고 앞으로의 AI 미래에 대해 다룬다. - ---- - -본 도서는 구성의 완성도 측면에서도 인상적이었다. - -각 장의 학습을 마칠때마다 `복습` 코너가 등장하는데 해당 장에서 배웠던 가장 핵심 개념들을 다시 떠오르게 하는 효과가 있다. 덕분에 기억의 반감기를 연장할 수 있고 애매하게 알았던 부분은 보다 확실하게 깨우치고 넘어갈 수 있게 해준다. 흔히 복습을 반복하는 것은 흥미로운 일은 아니지만 각 문항마다 바로 밑에 친절한 `답안`이 달려있으므로 크게 부담되지는 않을 것이다. - -더불어 각 장의 실습환경 설정 방식도 마음에 들었다. 보통 클라우드에서 많이 활용했던 방법인데 YAML 방식을 활용하여 쉽게 개발 환경을 구축할 수 있다. 대표적인 명령어는 다음과 같다. -> $ conda env create -f `environment.yml` - -지금까지 장점만 열거했으니 다소 아쉬운 점도 언급해보겠다. - -전체적으로 실전 위주의 내용을 담고 있어 이론이 부족한 편이며, 신경망 자체에 초점을 두다보니 GAN, Reinforcement Learning 등의 기술은 소개 정도로만 다루어 진다. 결론적으로 처음 언급했던 바와 같이 본 도서는 딥러닝에서 자주 활용하는 기술을 최단 시간내에 가장 쉽게 익힐 수 있는 도서이기에 구체적으로 표현하면 교과서라기 보다는 실전 교과서 정도로 표현되면 정확할 것 같다. - -`파이썬 코딩의 기술(길벗)`등의 책에서 강조하는 파이썬 다운 코딩 스타일과 약간 거리있는 코드들이 보이기도 하는데 본 주제도 아닌데다 전체적으로 헬퍼 함수 등 깔끔한 구조를 유지하는 등의 장점도 있어 큰 문제가 되지는 않는다. 더불어 워낙 실전 위주로 구성되어 내심 레이어의 갯수나 하이퍼파라미터를 선정하는 등 본인만의 실전 노하우가 공개되진 않을지 기대했었는데 역시나 그런 부분은 설명이 부족했다. - -사실 이 부분들은 일반적인 방법론이 존재하지 않아 상황에 따라 노하우가 다르고, 그 어떤 책이나 커뮤니티에서도 언급을 피하니 본 도서만의 단점이라고 보긴 어렵다.ㅎㅎ - -대상 독자로는 초급에서 중급으로 넘어가는 분들에게 가장 유용한 도서라고 생각한다. 깊은 원리에 대한 이해가 다소 부족하더라도 실무의 감을 빠르게 잡기 위한 숲을 보는 안목을 갖게 해준다. - -더불어 열의를 가지고 학습하였으나 난이도의 벽에 부딪혀 포기를 고민중인 입문자 분들께도 좋은 솔루션이 되리라 본다. 본 도서는 그동안 이해되지 않았던 미싱링크들이 눈으로 직접 보고 손으로 코딩해 나가는 과정에서 연결되어가는 색다른 경험을 선사할 것이다. - ---- - -* [책소개 - 신경망 교과서](http://www.yes24.com/Product/Goods/90327949?scode=032&OzSrank=1) - - diff --git a/_posts/2020-07-13-review-book-12-laws-persuasion.markdown b/_posts/2020-07-13-review-book-12-laws-persuasion.markdown deleted file mode 100644 index af2913037..000000000 --- a/_posts/2020-07-13-review-book-12-laws-persuasion.markdown +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: post -title: "[리뷰] 설득의 12가지 법칙" -subtitle: "30년차 광고 마스터가 최초로 공개하는" -categories: review -tags: review book 설득 광고마스터 실전 선의 협동 심리학 경청 인정 인내 정직 진솔 -comments: true -header-img: img/review/2020-07-13-review-book-12-laws-persuasion-1.png ---- - -> `웅진지식하우스` 출판사의 `"설득의 12가지 법칙(김시래 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-07-13-review-book-12-laws-persuasion-1.png) - ---- -본 도서는 농심 기획의 대표이사를 비롯한 광고 및 기획 분야 30년차 마스터의 `실전에서 적용할 수 있는 설득의 법칙`이 담겨 있다. - -"S-OIL 좋은 기름이니까.", "브라보 유어 라이프" 광고를 모르는 분은 별로 없을 것이다. 저자는 그 유명한 광고들을 만드신 분으로 본 도서에는 최고의 광고가 탄생하기까지의 실전에서의 설득의 과정은 물론 그런 성공을 가능케 한 저변에 녹아있는 설득의 이론, 철학, 심리학, 방법론이 모두 녹아있다. - -`인문학`이 우리 삶에 중요한 관심사로 자리 잡은지 어느덧 10년이 넘었건만 아직도 그 안에 담긴 진의에 관심있는 사람은 적은 듯하다. - -먼저 나를 이해하고, 상대방의 입장이 되어 인정하고 원하는 것을 알고 함께 나아가기 위한 일련의 과정들을 위한 방법, 절실함들이 인문학의 정수로 받아들여지기 보다는 교양 있어 보이는 트렌드, 제품이나 서비스에 녹일 꺼리를 찾아 해메는 상업적인 관점이 주류가 되어버린 모습에 안타까움을 느낀다. - -스스로를 다독가라고 말하긴 약간 쑥쓰럽지만 책을 정말 좋아한다. 경제적으로 넉넉한 편은 아니지만 집에는 1000권이 넘는 장서가 있다. 하루 평균 책 1~2권을 읽는다. 보통 읽은 책중에서 절반은 개인 블로그 혹은 YES24 블로그에 리뷰를 남긴다. - -IT 분야에 몸담고 있기에 쌓아온 지식을 활용해서 책을 만드는 베타리딩 과정에 참여하기도 한다. 벌써 20권이 넘게 참여한 것 같다. - -적어도 한달에 하루 정도는 10시간 이상 시간을 따로 내어 대한민국에서 가장 큰 오프라인 서점에 방문하고 눈에 띄는 변화를 체크하기도 하고 그동안 못 보던 책들을 기웃거리기는 취미도 있다. - -출판 관계자도 아니고 작가도 아니지만 단지 책을 좋아하는 덕후인지라 언젠가는 꼭 책 한 권 써보는 것이 삶의 목표이다. - -구구절절 관심도 없을 독서광 취미를 언급하는 이유는 이어질 말에 대한 객관성을 조금이나마 확보하기 위함이다. 본 리뷰를 읽어주시는 분께 한가지 꼭 말씀드리고 싶은 것이 있다. - -각종 서점에서 흥행하는 `베스트셀러`는 멋진 내용을 담고 있어서 베스트 셀러가 아니다. 단지 쉽고 공감이 잘 되기 때문이다. - -인문학을 필두에 언급한 것도 마찬가지이다. 자본주의의 특성상 모든 힘의 근원지는 돈이다. 그래서 베스트 셀러에도 영향을 미친다. 베스트셀러를 폄하하고 싶은 것은 아니다. 하지만 수십년간 책을 사랑하는 이로써 보다 가치있는 내용을 담고 있는 책들은 정작 소외되기 일쑤고 소중한 가치와 경험을 전달해주시는 저자 분들에게 소정의 인세도 돌아가지 않는 현실이 답답하다. - -더욱 답답한 것은 자라나는 청소년들이 좋은 책을 선별하기 더 어려워진다는 점과 AI 등 최신기술의 등장으로 우리에겐 시간은 점점 부족하다는 것이다. 독서의 세계에 입문하고자 기웃거리는 독자들도 결국 시간내어 허리 아프게 읽었음에도 큰 변화도 없고 이렇다할 노하우를 얻지 못해 떠나가는 모습들이 안타깝다. - -그나마 읽힌다는 베스트 셀러 책들은 대부분 공감되는 측면에서만 Top에 드는 책들이 난무하다. 정말이지 공감 하나는 기가막히다. - -마치 힘든 내가 저녁에 정말 보고 싶었던 친구와 연인을 만나 술 한잔 기울이거나 맛나는 음식을 먹거나 멋진 야경을 보면서 속 시원하게 스트레스를 털어놓고 그들은 나를 위로해주는... 그런 느낌이 드는 책들이 많다. 하지만 다음날 깨면 머리도 아프고 해장도 필요하고 다람쥐 챗바퀴 도는 일상은 여전하다. 한마디로 해결책이 없다. - -본 도서는 요즘 서적 중 흔치않은 `해결책이 있는 귀한 책`이다. - -책을 그토록 많이 읽어왔지만 아직도 책표지, 서론, 판쇄수, 추천사, 리뷰, 제목, 목차 등의 일부 요소로는 감히 책을 판단하기 어렵다. 그동안 쌓아왔던 경험적인 패턴으로 일부 거르고 선택하지만 사실 내 패턴에 얼마나 많은 편향이 존재할지는 모르는 일이다. 때로는 그놈의 패턴이 명저를 뒤늦게 읽게하거나 평생 인연이 되지 못하도록 훼방하기도 한다. - -이 책도 그런점에서 묘한 책이다. 일단 표지 디자인이 베스트 셀러와는 거리가 멀다. 뭔가 베스트셀러의 느낌이 나는 - 알맹이가 부족한 - 고수, 법칙, 마스터, 30년차 와 같은 단어가 보인다. 적어도 내 선입견에 본 도서는 읽지 말아야 하는 도서이다. 하지만 그간 책을 열심히 읽었던 덕분일까 목차를 읽고 꼭 읽어봐야 할 책이라는 생각이 들었다. - -보통 리뷰를 나름 정성들여 작성하고 특히 배운 내용을 반드시 요약하는 편이다. 나중에 시간이 없을 때 요긴하기 활용하기 위한 순전히 개인적인 목적이다. 개인 블로그에 자주 방문해주시는 어떤 분은 리뷰가 그렇게 길면 사람들이 자주 들어오지 않는다고 충고해주신 분도 있다. 하지만 난 반드시 배운 내용을 리뷰에 적고자 노력하는 편이다. - -안타깝게도 본 리뷰에는 배운 내용을 정리하는 파트가 없다. 이 책을 읽는데는 3시간도 걸리지 않는다. 게다가 일상의 내용을 담고있어 시간 가는줄 모르고 재미있게 읽을 수 있다. 하지만 1회독만으로 책에서 배운 내용을 정리하기엔 `저자의 30년 내공이 버티고 있고 유명 철학서를 근간으로 하고 있으며 내가 고민하는 일상과 합리적인 연결에는 아직 내공이 부족하다`는 핑계로 배운 내용을 따로 정리하지 않았음을 고백한다. - -본 도서가 얼마나 삶에 도움이 되는 내용들로 가득한지, 얼마나 재미있는지, 얼마나 유익한지, 얼마나 그동안 몰랐던 것들을 알게 해주었는지 강조하는 내용들로 채울뿐이다. 언젠가 일정 수준 이상의 깊이가 채워진다면 개인 블로그 내 별도의 프스팅으로 유익한 글을 작성해보는 것으로 대신하려 한다. - -다시 인문학의 본질로 돌아가려 한다. 일찍이 데일카네기의 인관관계론을 읽고 사람과 그 안에서 형성되는 관계를 바라보는 시각이 바뀌었다. 덕분에 설득의 심리학, 프레임, 당신은 타인을 바꿀 수 없다와 같은 심리학의 유명 도서를 즐겨 읽어왔다. 그 안에서 배운 것들이 그저 내 안의 갇혀버린 지식으로 끝나지 않도록 가족, 지인, 직장 동료들에게 실천하고자 노력했다. - -덕분에 삶이 풍요로워지고 사람의 마음을 얻는데 성공하였으며 원하는 것들도 상당수 이룰 수 있었다. 그럼에도 실천으로 녹이기는 여전히 힘든데 아마도 내 그릇의 문제인 듯 하다. - -보다 실전적으로 적용할 수 있는 `구체적인 Tip`이 필요했다. 술 한 잔 기울이며 곁에서 `자신의 인생을 녹여 특강을 해주는 선배가 필요했다고나 할까.` 그것도 한 분야에서 줄기찬 노력으로 성공도 이뤄보고 가시밭길 속에서 묵묵히 인생의 역정도 견뎌 본 정년 퇴직하신 환갑 이상의 연배인 분이면 더욱 좋겠다는 생각을 했다. - -그런데 별 볼일 없는 내 인생에 이런 지인이 있을리가 있나. 있긴 있어도 그저 그런 평범한 한 사람을 위해 시간과 노력을 들일만큼 한가한 분들이 아니다. - -> 그런데 이 책에서 `그동안 찾고 있던` 대 선배님을 뵙게 될 줄이야. - -읽는 내내 감동은 물론 내가 그동안 모르는 것들이 무엇이었는지 본인의 인생을 녹여 상세하게 설명해 주셨다. 깨달음의 즐거움에 읽는 내내 행복했고, 속도 너무도 시원해졌다. 본인의 시골 마을을 언급하거나 다낭으로의 여행 일화가 소개될 때면 뭔가 모를 추억의 향수에 젖기도 했다. - -아웃라이어라는 책에서 화자되어 유명했던 말콤 글래드웰의 1만 시간의 법칙을 모르는 사람은 거의 없을 것이다. 그런데 저자는 무려 3만 시간 이상의 내공을 쌓은 고수이며 대기업의 대표 이사에까지 오른 한 분야의 마스터이자 대학 교수님이기도 하다. - -광고가 난무하는 자본주의 시장에서 이런 화려한 수식어구들은 가끔 의심을 사게도 하지만 유사한 도서들을 다독하고 본 도서를 다 읽은 독자로써 이 책은 오히려 내용에 비해 겸손한 수식어구로 소개된 책임을 알려드리고 싶다. - -위에서 열거한 명작들을 여러번 읽었음에도 쉽게 채워지지 않았던 궁금증들이 있다. 예를 들면 상대방의 마음을 읽기 위해 노력하는 방법을 들 수 있겠다. 이제 방법론 정도는 알고 있었기에 상대방의 마음을 읽고자 매우 노력하였다. - -이런 태도가 중요하다는 것은 알고 있지만 막상 일상에 적용해보니 정말 쉽지가 않다. `전혀 상대의 의도나 마음이 보이지 않는 것이다.` 그나마 눈치밥이나 입장 바꿔 생각하기등의 스킬덕에 약간은 보이기 시작했지만 열길 물속은 알아도 한길 사람속은 모른다는 속담이 괜히 있는것이 아닌가 싶었다. - -그 이유를 이 책을 읽으며 알 수 있었다. 내가 읽는 책에는 편향이 있다. IT분야의 책, 실용적인 책이 그것이다. 지극히 실전적이고 실용적이어야 하며 반드시 효과를 보는 책을 즐겨 읽는다. 그러다보니 상대적으로 문학이나 소설은 등한시 하는 편이다. - -사람은 각기 다른 경험과 기억을 가지고 현재의 모습이 되었다. 지극히 자기중심적이며, 사람이 가진 기억은 왜곡 그 자체이고, 설득의 관점에서는 욕망과 오류 투성이이다. 현재의 그 사람의 성격이 형성되기까지 각자가 경험은 너무나도 다르다. 책에서 언급한대로 점 하나가 어떤이에게는 구두점으로 어떤이에게는 껌딱지로 보이는 것이다. - -이때 `문학 서적`이 해결책이 될 수 있다. 각기 다른 주인공들의 삶의 배경을 통해 `간접 경험`이 가능한것이다. 그간 문학서적은 기술 분야의 창의성을 돋구려는 목적으로만 읽고 그 외에는 멀리했는데 생각이 바뀌었다. 지식은 역시 어떤식으로든 모두 연결되는 듯 하다. - -본 도서의 가장 큰 백미는 그동안 피상적으로 알고 있던 설득에 관한 이론들이 `지극히 실전적이고 일상적인 수준의 일반인들의 눈높이에 맞게` 구성되어 있다는 점이다. 어찌보면 광고계만큼 설득이 실전적으로 필요한 곳은 없다. 단 몇 초의 영상, 단 한 컷의 이미지로 소비자의 구매욕을 돋궈야 한다. 게다가 저자의 표현대로 소비자 이전에 광고주와 상급자의 설득이 전제된다. - -덕분에 그 동안 이론의 세계에 둥둥 떠있던 지식들이 실전에 적용할 수 있는 지혜로 바뀌는 신비한 경험이 가능했다. - -세상 모든 일은 사람과의 관계로 이루어진다. 갓난 아이부터 연로하신 노인분들까지. 그런 의미에서 본 도서는 누군가와는 함께 살아갈 여러분을 위한 설득과 인간 관계를 위한 최고의 실전서로 추천드리고 싶다는 말을 전하면서 본 리뷰를 마친다. - ---- - -* [책소개 - 설득의 12가지 법칙](http://www.yes24.com/Product/goods/90689255) - - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. \ No newline at end of file diff --git a/_posts/2020-07-16-review-book-kaggle-guide.markdown b/_posts/2020-07-16-review-book-kaggle-guide.markdown deleted file mode 100644 index c63e01b16..000000000 --- a/_posts/2020-07-16-review-book-kaggle-guide.markdown +++ /dev/null @@ -1,140 +0,0 @@ ---- -layout: post -title: "[리뷰] 캐글 가이드" -subtitle: "전 세계 데이터 과학자와 소통하고, 경쟁하고, 성장하기" -categories: review -tags: review book kaggle 데이터 과학 경진대회 notebook -comments: true -header-img: img/review/2020-07-16-review-book-kaggle-guide-1.png ---- - -> `동양북스` 출판사의 `"캐글 가이드(사카모토 도시유키 저/박광수 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-07-16-review-book-kaggle-guide-1.png) - ---- - -본 도서는 `캐글 사용법`을 다룬 안내서이다. - -캐글 마스터가 되기 위한 데이터 과학 기법을 깊이있게 분석한다거나 최신 기술을 연구 및 구현하는 책이라기 보다는, 캐글의 전반적인 메뉴를 전부 훑어보고 다른 과학자들과 소통하는 방법을 살펴보며 마스터가 되기 위한 절차 및 캐글의 분위기나 문화를 엿보는 구성 등으로 이루어져있다. - -특히 `저자와 함께 경진대회에 참여하여 점수와 순위를 높여보는 실습 과정`은 본 도서의 백미라 할 수 있다. - -이 책은 크게 3개의 파트로 구성되어 있으며, 각각 `캐글 플랫폼`에 대한 설명, `노트북`의 활용법, `경진대회 및 마스터`가 되는 방법을 다루고 있다. - -파트별 내용을 아래와 같이 간략히 요약해본다. - ---- - -* [캐글](https://www.kaggle.com/) 플랫폼 소개 - + 메뉴 소개 - - 데이터 과학 경진대회 플랫폼으로 구글에서 인수했다. 약 15만명이 활동중이다. - - Compete : 현재 진행중이거나 과거 진행했던 경진대회 목록 - - Data : Dataset 모음 - - Notebooks : 과거에는 커널로 불리웠음. 실제 경진대회를 위한 코드 모음 - - Discuss - + Forum : 일반적인 데이터 과학 주제에 관한 토론 - + Topic : 경진대회와 관련된 토론 - + Getting Started : 초보자들을 위한 공간 - + Q & A : 질의응답 - + Learn : 캐글 데이터 과학 강의에 대한 질의응답 - + Product Feedback : 캐글 플랫폼에 대한 건의사항 - - Courses : 데이터 과학에 관련된 강좌 및 교육 - - More - + Jobs : 데이터 과학자 구인구직 - + 그 외 랭킹, 블로그 등 - ![Jobs](https://theorydb.github.io/assets/img/review/2020-07-16-review-book-kaggle-guide-2.png) - - + 경진대회 종류 - Compete > All Competetions > All Categories를 선택하면 다양한 카테고리의 경진대회 리스트가 등장한다. - - Getting Started : 초보자 연습용 / 필기체 숫자 인식, 타이타닉 생존 예측 등 - - Playground : 놀이터. 흥미로운 문제 위주 - - Traveling Santa : 수학 알고리즘으로 문제 해결 (순회, 최단경로 문제 등) - - NCAA ML Competition : 전미 대학 체육 협회 관련 경기 결과 예측 - - ImageNet Object Localization Challenge : 연구용 경진대회 - - Ciphertext Challenge : 암호문 해독 도전 - - Predicting Molecular Properties : 물리학 데이터 경진대회 (원자 사이 자기 상호작용 예측 등) - - NFL Punt Analytics : 미식축구협회 경진대회. 개선안을 제안. 프레젠테이션을 제출. 심사위원이 결정 - - Generative Dog Images : GAN. 강아지 사진 그리기 경진대회. 프로그래머가 2단계 심사 - - + 활용방법 - - 회원가입, Courses 수강 - - 캐글러 등급 - Novice > Contributor > Expert > Master > Grandmaster(최고등급) - ![Level](https://theorydb.github.io/assets/img/review/2020-07-16-review-book-kaggle-guide-3.png) - - 메달 획득 방법 - + 경진대회 : 경진대회 10% 내 동메달, 5% 내 은메달, 상위10팀+0.2% 내 금메달 - + Datasets, Notebooks : 5 Votes 동메달, 20 Votes 은메달, 50 Votes 금메달 - + Discussion 메달 : 1 Votes 동메달, 5 Votes 은메달, 10 Votes 금메달 - - 등급 상향 조건 - ![Level](https://theorydb.github.io/assets/img/review/2020-07-16-review-book-kaggle-guide-5.png) - - `컨트리뷰터 등급` 오르기 - + 튜토리얼을 완료한 등급으로 주요서비스를 모두 사용하면 됨 - + Profile : 이름, 직업, 소속, 거주지, 휴대폰, Bio(자기소개) 입력 - + Discuss > Forums > Getting Started > New Topic 으로 새 게시물 올리기 - + UpVote 추천하기 + Reply 답장 작성 - + `경진대회` 참가하기 - - 경진대회 검색어 : Digit Recognizer in:competitions - - 상단 Notebooks 클릭 > Chainer-MNISTClassifier-base 노트북 선택 (저자작품) > Copy and Edit(Fork Kernel) > Save Version 클릭 > Save & Run All(Commit) 선택 후 Save - - 뒤로가기(메인메뉴) > 우측 상단 My Profile 클릭 > Notebooks 메뉴에서 방금 복사한 노트북 확인 가능 > 우측 Output 클릭 > submission.csv 선택 > Submit 클릭 > Leaderboard 페이지 자동이동 > Jump to your position on the leaderboard 클릭하면 순위 확인 가능 - - 본 예제 코드를 설명 후, 정확도를 2단계 더 높여 순위를 갱신하는 과정 안내 - ---- - -* `노트북` 활용법 - + 공개된 노트북에 댓글 및 추천 기능으로 캐글러끼리의 교류가 가능 - + 커널타입 : 스크립트 타입(선택한 코드만 실행 시 Run > Run Selection 클릭)과 노트북 타입 - + 경진대회 이름으로 명명한 디렉토리를 지정하여 파일을 위치시킬 것 - + 우측 상단의 Share 클릭 시 공개 / 비공개 설정 가능 - + 그 외 우측 Setting 메뉴를 통해 인터넷 접속 여부 등 다양한 옵션 설정이 가능 - + Dataset 업로드 : Data > +New Dataset > Enter Dataset Title > Select Files to Upload 클릭 - + 좌측 하단 Console 버튼을 클릭하면 pip install 명령어를 통해 외부 패키지 추가 가능 (!기호 활용) - ---- - -* 경진대회 및 마스터 되기 - + 노트북의 발전 과정 - - 베이스라인 > 데이터 분석 > 포크 > 병합 - - 예) Jigsaw Unintended Bias in Toxicity Classification 경진대회의 `7개 발전 흐름` - ![Level](https://theorydb.github.io/assets/img/review/2020-07-16-review-book-kaggle-guide-4.png) - - 프라이빗 리더보드는 머신러닝 알고리즘의 역사를 공부할 때 유용 - + 규칙 확인하기 : 피처 그룹에 따른 가중치 적용, 리더보드 점수 1일 확인가능 횟수, 노트북 전용 경진대회 유무(인터넷 및 외부 데이터 사용 불가) 등 - + 데이터 꼼꼼히 살펴보기 : ex) Santander Value Prediction Challenge - - 행보다 열이 더 많다. 64%의 특정 열을 삭제해도 점수가 변하지 않음을 발견 - - 종속변수 누설이 발견되기도 함 - + [입상한 솔루션 한번에 살펴보기](https://github.com/interviewBubble/Data-Science-Competitions) - + 파일 용량 제한 : 20GB - + Kaggle API : 로컬컴퓨터에 연결가능 - - API 설치 > API 토큰 json 다운로드 - - 주요 `명령어` - ```python - $ kaggle competitions list # 경진대회 목록 - $ kaggle competitions download 경진대회이름 # 경진대회 파일 다운로드 - $ kaggle competitions submissions 경진대회이름 # 리더보드 점수 확인 - $ kaggle competitions submit -f submissions.csv -m "메시지" 경진대회이름 # 제출 - $ kaggle kernels output ID/노트북이름 # 실행 결과 다운로드 - ``` - + 유용한 라이브러리 : LightGBM, fast.ai - ---- - -개인적으로 캐글을 사용한지는 2년이 넘었는데도 책에서 워낙 상세한 기능과 Tip을 소개한 덕분에 그동안 모르고 있던 Tip들을 상당수 챙길 수 있었다. - -위에 요약된 사항을 훑어보면 책에서 대략 어떤 내용을 다루는지 확인할 수 있을 것이다. 요약 내역들은 극히 큰 흐름만 정리해보았기에 내용이 어려울 수 있으나 실제 도서에는 각 단계 과정 하나하나 자세한 설명과 더불어 스크린 샷이 캡쳐되어있어 매우 쉽게 따라할 수 있다. - -개인적으로 본 도서 최고의 백미는 `노트북의 발전 과정`을 설명한 파트이다. 캐글을 알고 나서 노트북의 일반적인 발전 흐름을 이해하는데 반년은 걸린 것 같다. 아무래도 캐글 플랫폼의 글 대다수가 원어로 되어있다보니 읽는데 시간이 걸리고 읽어도 전체 흐름이 잘 파악되지 않는다. - -한창 경진대회에 참여하다보니 노트북이 저런 흐름대로 공개된 사실을 알게 되었는데 경진대회에 처음 참여하는 사람이라면 본 도서가 엄청난 시행착오와 시간을 줄여줄 것이다. 더불어 Review 논문을 작성하듯이, `머신러닝 기술의 발전과정을 한 눈에 정리`할 수 있는 좋은 계기가 될 것이다. - -또 다른 눈에 띄는 장점으로는 중간에 3개 정도의 예제를 통해 `저자를 따라 경진대회에 참여할 수 있다`는 점을 들고 싶다. 특히, Digit Recognizer in:competitions 경진대회의 경우 저자가 작성한 코드와 개념도 상세히 분석하고 2번의 개선 과정을 통해 `총 3회에 걸쳐 점수를 높이는 과정`에서 캐글에 대한 감을 90% 이상 익힐 수 있을 것이라 본다. - -그 외 캐글 플랫폼에 대한 설명이 거의 하나도 `누락없이` 설명되어있다는 점, 각 단계의 설명은 초등학생도 따라할 수 있을 정도로 `상세한 설명`과 더불어 `시각 자료`로 이해를 돕는다는 점에서 높은 점수를 주고 싶다. - -캐글에 관한 책은 시중에 많지 않다. 머신러닝 알고리즘과 데이터 과학 자체에 집중하기도 충분히 바쁘고 어렵기 때문에 캐글에 처음 참여하는 분은 이 책을 통해 캐글을 시작한다면 상당히 많은 시간을 절약함과 동시에 매우 편하게 경진대회에 참여할 수 있을 것이다. - -캐글 입문자 혹은 활용 방법의 난이도에 막혀 중도 포기하신 분께 강력히 추천한다. - - -* [책소개 - 캐글 가이드](http://www.yes24.com/Product/Goods/90964592?scode=032&OzSrank=1) - - diff --git a/_posts/2020-07-18-review-book-homo-spacecus.markdown b/_posts/2020-07-18-review-book-homo-spacecus.markdown deleted file mode 100644 index cc9bb4cad..000000000 --- a/_posts/2020-07-18-review-book-homo-spacecus.markdown +++ /dev/null @@ -1,162 +0,0 @@ ---- -layout: post -title: "[리뷰] 호모 스페이스쿠스" -subtitle: "우주에서 부를 캐는" -categories: review -tags: review book python 우주 비즈니스 돈 경제 로켓 발사체 인공위성 호모스페이스쿠스 homo spacecus -comments: true -header-img: img/review/2020-07-18-review-book-homo-spacecus-1.png ---- - -> `플루토` 출판사의 `"호모 스페이스쿠스(이성규 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-07-18-review-book-homo-spacecus-1.png) - ---- -본 도서는 `비즈니스 측면에서 우주 산업을 조망하고 한국의 현 위치를 파악하는` 내용을 다룬다. - -> 우주는 과연 돈이 될까? - -금본위제 정착 이래 사상 최대의 양적완화 시대이다. - -[코로노믹스](https://theorydb.github.io/review/2020/07/04/review-book-coronomics/)나 [일본 경제 30년사](https://theorydb.github.io/review/2020/05/16/review-book-japan-economy-30years/)와 같은 도서를 읽어보면 전 세계적으로 양적완화 정책이 얼마나 극에 달했는지 여실히 느낄 수 있다. 일본은 양적완화에 정면 도전하여 재정건전성에 집착하였으나 그 결과는 잃어버린 30년에 비유되는 디플레이션이었다. - -위험한 줄다리기 같아 보이지만 양적완화는 어쨌든 현 경제체제를 유지는 하고 있다. 2008년 금융위기 이후로 금리가 0의 수면위로 들락날락하는 비정상적 경제 행태들이 나타나고 있지만 어쨌든 경제는 침체없이 돌아가고 있다. - -다소 위험한 발언이 될 수 있겠지만 나는 양적완화는 자본주의의 어쩔 수 없는 종착역이라는 생각이 든다. 경기침체보다는 나은 선택이기에 피할 수 없고 다람쥐 챗바퀴돌 듯 금융위기가 발생할때마다 돈을 미친듯이 찍어내어 막기에 급급하다. - -그로인해 양극화가 심화되고 체제가 붕괴될 우려를 안고 있음에도 경제 측면에서만 보면 돈이 자꾸 늘어난다. 태생적으로 자본주의에 있어 가장 중요한 것은 역시 돈이다. 그러니 돈을 가진 사람이 돈을 벌고 돈이 없으면 인권을 고민하고 살아갈만큼 힘들어진다. 애초에 돈을 원했으니 돈이 늘어나고 돈이 최고가 되는 것은 어찌보면 당연한 순리이다. 양적완화라는 단 하나의 방향성을 진즉 신뢰하지 못한 것이 후회될 뿐이다. - -양적완화는 언제까지 가능한 정책인걸까? 그 끝이 시한 폭탄이 겹겹이 쌓인 경기침체일지 체제 붕괴로 인한 자본주의의 몰락일지 아니면 다른 제3의 무엇일지 경제학자도 아닌 내가 미래를 점칠 수는 없다. - -하지만 확실한 것은 코로나까지 겹친 현실에 양적완화는 한동안 지속될 것이라는 것과 `돈은 또 다른 투자처를 찾아 움직일 것`이라고 전망할 수 있겠다. 세상에 널리고 널린 돈은 부동산을 삼키고 금과 같은 안전한 저장수단을 모두 집어 삼켰음에도 아직도 남아돈다. 없는 사람만 없는 것일뿐 세상에 돈은 넘쳐난다. 오죽하면 비트코인과 같은 허상도 돈을 주고 사는 시대일까? - -그렇다면 돈은 이제 어디로 갈까? 계속 부동산의 가격을 높이는 역할을 하게 될까? 대답은 누구도 알 수 없겠지만 나는 조심스럽게 우주, 양자 세계, AI에 점친다. - ---- -먼저 본 도서의 내용을 간략히 소개해보면 크게 3개의 파트로 나뉜다. `우주가 비즈니스가 될 수 있을지, 각 국의 우주 과학의 발전 정도와 대한민국의 현실, 나머지는 우주와 로켓에 관련된 상식`으로 구성되어있다. - -다시 처음의 질문으로 돌아가보자. 우주는 과연 돈이 될 것인가? 사실 개인적으로 매우 궁금한 주제였다. 더이상 돈이 갈 곳이 없다는 판단에 하늘을 바라보았지만 지식이 부족해서일까? 즉시 대답이 나오지 않았다. - -때마침 그 답을 찾기 위한 지식이 모인 본 도서를 발견하였다. 저자는 YTN 사이언스의 과학전문 기자인 만큼 현재 우주 산업의 비즈니스를 폭넓게 조망하고 관련된 지식이 풍부할 것이라는 생각이 들었다. - -저자는 우리가 아직 전혀 짐작조차 못하는 쉽게 상상할 수 없는 아무도 모르는 답을 제외하고는 돈이 될 수 있다고 말한다. 그 대답을 아래와 같이 정리해 보았다. - -* 달의 `자원` - - 남극의 물 : 수소(로켓 연료) + 산소(우주인의 호흡 용도, 우주선의 산화제) - - 헬륨-3 : 100톤 당 전 세계가 1년간 사용할 수 있는 에너지를 생산할 수 있다. - - 레골라스 층 : 거주 시 필요한 자재나 부품 자원으로 활용 가능성 - -* 우주`관광` 상품 - - 국제우주정거장 : 1박에 35,000달러(약 4,300만원) - - 무중력 체험 : 고도 100킬로 이상 우주 경계까지 올라가는 체험. 90분에 약 3억원. - -* 우주 생활과 `노화` - - 노화 : DNA의 변화 정도(노화가 진행되면 텔로미어의 끝이 짧아진다.) - - 면역기능의 변화 - - 단점 : 인지력 약화, 유전자 변형 지속 - - 유도만능줄기세포의 변화 - -* 우주 기술 - - 목적에 따른 위성 : 기상, 지구관측, 항법, GPS, 군사, 허블우주망원경 등 - - 스페이스엑스의 `스타링크` 프로젝트 - - 시미즈의 달궤도 `태양광 패널 고리` : 지구에 빔으로 쏴 에너지원으로 활용 - - 재활용 로켓 : 스페이스엑스 등 - -* 각 산업 `파급`효과 - - AI와 연관된 무궁무진한 상업화 - - 포도주 숙성 정도 실험 - - 전자레인지, 정수기, 진공청소기, 베개, 매트리스, 이미징기술(CT, MRI) 등 - - 그 외 우주기술이 견인하는 산업분야의 신기술 - -* 각 국의 정책과 동향(비즈니스 가능성) - 나라별 우주 관련 추진 정책을 비추어 볼때 현 시점은 우주 탐사가 비즈니스로 전환하는 시발점으로 해석할 수 있다. - - 아르테미스 : 미국의 새 유인 달 탐사 프로그램의 정식 명칭. 2024년 목표. 달을 화성탐사의 전진기지로 삼는다. - - 베조스(아마존 CEO) 4조원을 확보하여 블루 오리진 투자 - ---- - -본 도서가 언급하는 굵직한 또 하나의 주제는 우주 산업과 관련된 `각국의 발전 정도 및 대한민국의 현실`이다. 관련 내용을 국가별로 아래와 같이 정리해보았다. - -* 달 탐사 발전과정 - - 달 궤도 탐사선 성공 : 러시아, 미국, 일본, EU, 중국, 인도 - - 달 궤도 충돌 성공 : 러시아, 미국, 일본 - - 달 착륙선 성공 : 러시아, 미국, 중국 - - 달에서 시료 채취 : 미국, 러시아 - - 달 유인 착륙 : 미국 -* 중국 - - 창어 4호 : 달의 뒷면에 무인 로버 착륙 성공. - - 자체 우주정거장 텐궁 제작. 자체 GPS 베이더우 시스템 구축. -* 인도 - - 찬드리얀 1호 : 달 광물 지도기(Moon Mineralogy Mapper)를 통해 물 발견. - - 찬드리얀 2호 : 헬륨-3 탐사. 제작비용 절감(1.23억달러) * 인터스텔라 제작비 : 1.65억달러 -* 일본 - - 하이텐 : 달 궤도선 - - 가구야 : 달 착륙, 구글 달 3-D 지도에 상세 고도와 지정학적 자료를 제공 - - 미국과 셀레네-2, 인도와 찬드라얀 3호 협력 중 - - 2030 유인 우주선 달 착륙 계획 중 -* 러시아 - - 루나 1호 : 최초의 달 탐사선 - - 루나 2호 : 최초의 달 충돌선 - - 루나 9호 : 최초의 달 착륙선 - - 루나 16호 : 달 시료 채취 - - 루나 17호 : 무인 로버 루노호트 1호 착륙 -* 그 외 국가 및 민간기업 - - UAE : 막대한 석유자금 투자 - - 룩셈부르크 : 소행성 자원 탐사 기술 개발, 금융중심지이자 우주 산업분야 중심지 모색 - - 이스라엘 스페이스일 : 루나 엑스프라이즈 경연대회 - - 터키의 페이스 오즈멘 : SNC 설립, 터키판 일론머스크 - - 우주청 보유 : 이란, 태국, - - 달 화물 운송 서비스 관련 : 오빗 비욘드, 아스트로보틱 테크놀로지, 인투이티브 머신스 등 - - 우주인 운송 관련 : 스페이스엑스, 노스럽그러먼 - - 그 외 블루오리진, 보잉, 노스아메리칸, 더글라스 에어크래프트 등 -* `대한민국` - - 예산 : 미국 20조(예산 0.5%) vs 한국 6,100억원(예산 0.1%) - - 발사체는 군사 목적인 ICBM(대륙간탄도미사일)기술과 관련됨. - - 본체 : 기술력은 수준급 - - 탑재체 : 수입 의존 - - 시장 및 정책 - + 공공 수요만 존재.(국가의 R&D 과제가 수용의 전부). - + 매칭펀드 50%. 정부지원금 인건비 항목으로 사용 불가 - + 대안 : 국가 획득(구매) 사업으로 전환 => 경쟁력 확보 - + 기업 : 씨트렉아이(소형위성기술확보. 수출) - + 미국 : 수출허가제(EL), 미사일 기술 통제 체제(MTCR) - - 나로호, 누리호(2022년 7월 달 착륙선 목표), 달착륙선(2030년 목표) - - 우주청 부재. 과기부, 국토부, 환경부, 기상청, 국방부 중복투자 및 예산낭비 - - 국제우주정거장 참여 거절이 뼈아픈 한수였음 - ---- -그 외 본 도서에서는 우주, 로켓에 관한 과학적 상식을 배울 수 있다. - -* 뉴턴 운동의 3법칙 중 `작용-반작용` 법칙 - - 걸을때 : 우리가 지구를 미는힘(작용) + 지구가 우리를 튕기는 힘(반작용) - - 제1 우주속도 : 초속 7.9km / 지구를 벗어나 지구 중력장 진입 - + 만유인력(구심력) = 원심력 원리 - - 제2 우주속도 : 초속 11.2km / 지구 중력장을 벗어나는 속도 - + 역학적 에너지 보존법칙 원리 - - 제3 우주속도 : 초속 16.7km / 태양계를 벗어나는 속도 - - 달 중력장 탈출속도 : 초속 2.4km / 달 우주 정거장이 중요한 이유 - ![우주속도](https://theorydb.github.io/assets/img/review/2020-07-18-review-book-homo-spacecus-3.png) -* 로켓의 종류 - - 새턴 V : 아폴로 탐사에 활용 / 3,450만 뉴턴 - - SLS : 아르테미스 탐사에 활용 예정 - - 스페이스엑스 펠컨 헤비, EU의 아리안 5 ECA 등 -* 국제우주정거장은 약 92분마다 지구를 한바퀴, 하루 평균 15.5회 공전한다. -* 현 기술로 달은 3일, 화성은 10개월이 소요된다. -* 우주왕복선의 구성요소 - - 궤도선 + 고체 로켓 부스터 + 연료 탱크 등 - ![왕복선](https://theorydb.github.io/assets/img/review/2020-07-18-review-book-homo-spacecus-2.png) - - 탑재체 : 고해상도 카메라, 자기장 측정기, 감마선 분광기, 광시야 편광 카메라, 기술 검증 기구, 음영지역 촬영 카메라(NASA) -* 위성의 종류 : 대형, 중형, 소형, 마이크로, 피코, 팸토 등 -* 궤도 : 저궤도(250 ~ 2,000km), 중궤도(~36,000km), 정지궤도(36,000km), 고궤도(36,000km~) - ---- - -본 도서는 앞서 언급한 바와 같이 우주에 대한 전 세계 비즈니스의 동향을 파악할 수 있다는 점이 백미이다. 더불어 우주 및 로켓에 대한 과학적 상식을 얻을 수 있는 교양 도서이기도 하다. - -우주에 대한 관심이 깊거나 비즈니스 접근이 필요한 분이라면 읽어보시길 추천한다. - -* [책소개 - 호모 스페이스쿠스](http://www.yes24.com/Product/goods/90619130) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. - diff --git a/_posts/2020-07-19-review-book-first-programming.markdown b/_posts/2020-07-19-review-book-first-programming.markdown deleted file mode 100644 index 3afbacb83..000000000 --- a/_posts/2020-07-19-review-book-first-programming.markdown +++ /dev/null @@ -1,108 +0,0 @@ ---- -layout: post -title: "[리뷰] 혼자 공부하는 첫 프로그래밍 with 파이썬" -subtitle: "1:1 과외하듯 배우는 왕초보 코딩 입문서" -categories: review -tags: review book python 첫 프로그래밍 왕초보 입문서 과외 동영상강의 -comments: true -header-img: img/review/2020-07-19-review-book-first-programming-1.png ---- - -> `한빛미디어` 출판사의 `"혼자 공부하는 첫 프로그래밍 with 파이썬(문현일 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-07-19-review-book-first-programming-1.png) - ---- -본 도서는 `처음` 프로그래밍을 학습하는 사람을 위한 프로그래밍 입문서이다. - -개인적으로 C, Java 등의 프로그래밍이야 다룬지가 10년이 넘었고 덕분에 Python에 적응하는데 그리 오랜 시간이 걸리지 않았다. - -그럼에도 이 책을 읽게 된 이유는 아이와 아내가 프로그래밍에 관심이 많아 가족들을 가르치기 위한 교재를 선별하기 위함이었고, 다른 소소한 목적은 내가 처음 프로그래밍을 배울 때와 달리 얼마나 교육, 미디어가 훌륭해졌는지 궁금해서였다. - -> 프로그래밍에서 가장 중요한 것은 무엇일까? - -아마도 각자 처한 목적이나 수준에 따라 다른 대답이 나오겠지만 왕초보 시절을 떠올려 보니 적어도 입문자 기준에서 가장 중요한 기법은 `제어문과 반복문`이 아닐까 싶다. - -변수, 데이터형 그리고 통합개발환경(IDE) 구성쯤이야 시간 싸움이다. 시간만 충분하다면 이해하는데 무리가 없다. 반면 제어문과 반복문은 프로그래밍에 발을 들이는 사람으로써 처음으로 어려움을 겪는 장애물이다. - -만약 이 첫 관문을 통과하지 못한다면 뒤이어 넘어야 할 산(?)들을 넘기 쉽지 않을 것이다. C언어의 포인터 개념, 함수의 모듈화, 클래스의 OOP, 자료구조와 알고리즘, 패턴 및 프레임워크 그 외 AI나 게임분야와 같이 업무 도메인 특성에 따른 수학, 물리학 등 기초 학문의 적용 등 녹록치 않은 장애물들이 기다리고 있다. - -참고로 본 도서에서는 앞서 언급한 장애물 중 첫 관문인 제어문과 반복문, 그리고 함수의 모듈화까지 2개의 관문을 다룬다. - -사실 입문자의 목적은 내공이 중후한 실력이 고강한 프로그래머가 되는 것은 아닐 것이다. 아마도 비 전공자로써 요즘 핫하다는 프로그래밍을 배워 전문성을 함양하거나, 직장 업무에 있어 노가다성 업무에 소요되는 시간을 줄여본다거나, 아니면 프로그래머로써의 꿈이 아닐까라는 생각이든다. - -그런 측면에서 본 도서는 타깃 독자층을 제대로 파악하고 그들의 목적을 이룰 수 있는 수준의 적절한 내용을 담고있다고 생각한다. 적어도 지금까지 본 프로그래밍 입문서 중에서 가장 뛰어난 책으로 보인다. - -20년 전 컴퓨터공학과 최고의 속담은 `백견이 불여일타`였다. - -다른 학생들이 전공을 책과 이론으로 학습할 때, 우리는 눈으로 볼 수 있는 프로그램을 완성하는 행동을 높이 샀다. 너무 실습 측면만 바라보면 Trade-off가 생기기 마련이겠지만 적어도 초보 프로그래머에게는 진리이다. - -당장 `내 컴퓨터에서 내가 만든 프로그램이 원하는대로 돌아가는 것을 보는 것` 만큼 흥미롭고 보람된 일이 있을까? - -정리하자면 선 경험을 구구절절이 늘어놓은 까닭은 프로그래밍 첫 입문서의 자격을 판단하기 위한 기준을 파악하기 위해서이다. 즉, 내가 생각하는 기준은 2가지로 요약할 수 있는데, -* __(최소한의 학습으로) 지금 당장 프로그램을 개발할 수 있는가?__ -* __(프로그래밍의 첫 관문) 제어문과 반복문을 얼마나 쉽게 알려주는가?__ -로 요약할 수 있겠다. - -결론부터 말씀드리자면 본 도서는 충분히 합격점을 받을 만하다. 두가지 측면에 초점을 맞춰 조금 더 상세히 리뷰를 해보겠다. - ---- - -첫번째 질문의 답변으로 본 도서가 제시하는 솔루션으로 가장 마음에 들었던 것은 [`리플잇`](https://repl.it/) 클라우드 IDE의 활용이다. - -프로그램을 만드는 과정은 본 도서에서 제시하는 아래 그림과 같은 과정을 따른다. 소스코드를 입력하고 이를 컴퓨터가 이해할 수 있는 기계어로 변환하는 과정이 필요한데 이 두 과정을 IDE가 담당하게 된다. -![프로그래밍](https://theorydb.github.io/assets/img/review/2020-07-19-review-book-first-programming-8.png) - -프로그램을 만들고 싶다면 이 IDE를 설치하고 환경을 구성하는 과정이 필요하다는 의미이다. 주위를 살펴보면 컴퓨터나 기계를 다루는 감각이 부족하거나 공포심이 있는 경우 프로그래밍을 시작하기도 전에 IDE 구성 단계에서 어려움을 느껴 포기하는 경우를 종종 봐왔다. - -프로그래밍의 실체를 느껴보지도 못한채 포기라니.. 이를 해결하기 위한 좋은 방법이 리플잇을 활용하는 것이다. 접속해보면 알겠지만 IDE가 클라우드로 제공되고 있어 프로그램 소스 코드만 입력하면 실행은 리플잇이 대신해준다. -![리플잇](https://theorydb.github.io/assets/img/review/2020-07-19-review-book-first-programming-7.png) - -`군더더기를 떼어 버리고 프로그래밍에 바로 집중`할 수 있다는 것은 엄청난 장점이다. 그래서인지 여느 책과는 다르게 직접 개인 PC에 IDE를 구성하는 방법은 책의 맨 뒤 부록에서 언급한다. PC IDE를 구성하는 방법도 놓치지 않으면서, 프로그래밍 본연의 목적에 집중할 수 있게 배치된 구성이 마음에 들었다. -![VS Code](https://theorydb.github.io/assets/img/review/2020-07-19-review-book-first-programming-3.png) - ---- - -두번째 질문의 답변을 설명하기에 앞서 반복문에 관련된 한가지 질문을 하고 싶다. (제어문과 반복문을 아는 분은 건너뛰어도 좋다.) - -> 계란 3개가 있는데 1개씩 후라이를 만들때마다 "1번 달걀이 프라이가 되었습니다.", "2번 달걀이..", "3번 달걀이.."와 같은 메시지를 출력하는 프로그램을 만들려면 어떻게 해야 할까? - -답은 책에 소개된 직관적인 그림으로 대신하려 한다. -![반복문](https://theorydb.github.io/assets/img/review/2020-07-19-review-book-first-programming-5.png) - -프로그래밍이 뭔지 모르는 분들도 반복문이라는 용어 자체에서 똑같은 동작을 반복하는 프로그램 기능일 것이라는 감을 잡을 수 있다. 위 그림과 함께 생각해보자면 `for, in, :` 키워드만 있으면 반복문을 구현할 수 있다는 감을 잡을 수 있을것이다. - -특히 위 그림에서 화살표의 이동 순서가 중요한데 20년 전에 배울때는 이런 직관적인 그림으로 프로그래밍을 알려주는 도서가 전혀 없었다. 왕초보일때 소스코드 구문 자체에 저런 화살표를 그리면서 독해력을 향상시켰었는데 그때의 화살표와 동일한 그림이 달갈과 함께 나오다니..~~~세상 참 좋아졌다.~~~ - -제어문과 반복문에서 `화살표 그림이 중요한 이유는 프로그램의 실행 순서를 직관적으로 이해`할 수 있기 때문이다. - -프로그램은 일반적으로 위에서 아래로 소스 코드 순서대로 실행되는데, 제어문과 반복문이 어려운 이유는 사실 `소스 코드 순서대로 실행되지 않는 첫번째 로직`이기 때문에 어려움을 느끼는 것이다. -아래 반복문에서 가장 흔히 사용하는 2가지 키워드 coninue와 break를 시각화한 그림을 보자. -![continue_break](https://theorydb.github.io/assets/img/review/2020-07-19-review-book-first-programming-6.png) - -화살표만 잘 따라간다면 소스코드가 실제 어떤 순서로 동작하는지 충분히 이해할 수 있을것이다. 그래서 두번째 질문도 합격점이다. 본 도서만 잘 따라간다면 충분히 프로그래밍의 첫 관문인 반복문과 제어문을 쉽게 이해할 수 있을 것이다. - ---- - -위 2가지 핵심을 충족하는 도서라면 처음 프로그래밍을 접하는 사람이 어려움을 느낄 요소는 흔치 않다고 생각한다. 그럼에도 학습 능률을 높여주는 다음의 추가 보완재들이 책의 신뢰를 높여주었다. -* [동영상강의](https://www.youtube.com/channel/UCK3srTIIG3LtqQRDFH1Gh4A) - 한빛미디어 홈페이지 미치 유튜브에 저자의 동영상이 올라온다. 무료이다. -* `눈코딩 - 손코딩` 구성 - 이 부분이 독특한 구성인데 이 책의 모든 코딩은 먼저 눈으로 짠다. 다음으로 손으로 옮기는 코딩을 하는데 초보자에게 있어 극찬할만한 구성이다. - ![함수](https://theorydb.github.io/assets/img/review/2020-07-19-review-book-first-programming-4.png) -* 꼼꼼한 수험서 느낌의 학습 보조구성 - - 용어노트, 확인문제, 해답, 실습코드, 핵심정리 등 - ![혼공용어노트](https://theorydb.github.io/assets/img/review/2020-07-19-review-book-first-programming-2.png) - -첫 입문서로 책이 마음에 들어 객관적으로 리뷰를 작성하고자 하였지만 아이가 이 책을 너무 마음에 들어하고 열심히 보고 있어 주관적으로는 이미 합격점이었다. - -여담으로 혹시 프로그래밍을 아직 접하지 않은 분들은 꼭 한번 도전하시길 바란다. 업무 자동화나 트렌드 따위의 부가적인 장점 외에도 `세상과 정보를 바라보는 시각이 크게 바뀐다`. 다른 분야에서 쉽게 느껴기 어려운 창의성, 깨달음이라는 즐거움을 얻을 수 있다. - -처음엔 나도 프로그래밍이라는 단어가 주는 선입견 느낌 때문에 전공 선택을 주저했었다. 새로운 분야에 도전하기 전 사람들은 나름의 합리적인 득실 계산을 한다. 하지만 결국은 `직접 해보지 않으면` 스스로 적성이 있었는지 좋아하는 분야인지 아무도 모른다. - -본 도서라면 `최소한의 시간과 노력으로 스스로 프로그래밍과 적합한지 테스트해 볼 가치`가 있어 보인다. 프로그래밍을 전혀 모르지만 관심있는 분 혹은 입문 단계에서 좌절해 포기했던 분 또한 재도전해볼만한 책으로 추천하고 싶다. - - -* [책소개 - 혼자 공부하는 첫 프로그래밍 with 파이썬](http://www.yes24.com/Product/Goods/90617738?Acode=101) - - diff --git a/_posts/2020-07-23-review-book-robotics-20-projects.markdown b/_posts/2020-07-23-review-book-robotics-20-projects.markdown deleted file mode 100644 index cbb8fbaf3..000000000 --- a/_posts/2020-07-23-review-book-robotics-20-projects.markdown +++ /dev/null @@ -1,131 +0,0 @@ ---- -layout: post -title: "[리뷰] 로봇 스쿨" -subtitle: "호기심 많은 우리 아이, 로봇 영재로 만드는" -categories: review -tags: review book python 로봇 AI 인공지능 프로그래밍 과학 기술 STEM STEAM 20개 프로젝트 -comments: true -header-img: img/review/2020-07-23-review-book-robotics-20-projects-1.png ---- - -> `프리렉` 출판사의 `"로봇 스쿨(캐시 세서리 글/김의석, 임성국 공역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-07-23-review-book-robotics-20-projects-1.png) - ---- - -본 도서는 아이와 함께 `20가지의 흥미로운 로봇을 만드는 방법`을 다룬다. - -코로나의 여파로 인해 아이와 함께 집에 머무는 시간이 늘어났다. 개인적으로는 주로 책을 읽고 리뷰를 작성하는 편이다. 더불어 AI에도 관심이 많아 딥러닝으로 모델을 개발하거나 통계나 수학을 공부하며 시간을 보내고 있는데 아이에게는 흥미로운 놀이 방법을 알려주지 못해 내심 미안한 감이 들었다. - -스스로의 취미인 AI나 어른의 독서를 알려주기에 쉽지 않은 상황이었는데 본 도서를 만난것은 행운이었다. 무엇보다 AI와 책이라는 주제를 동시에 만족시킬 수 있는 `아이와의 접점`을 찾았다는 것이 기뻤다. 다루기 어려운 주제임에도 친숙한 만화같은 삽화가 지면의 대다수를 차지하고 있어 아이가 로봇의 난이도라는 선입견에서 벗어날 수 있었다고 생각한다. - -첫 페이지엔 로봇의 역사 연표가 등장한다. 무려 기원전 200년 전부터 중국에 황제를 위한 기계 연주 장치가 존재했다는 사실을 처음 알게 되었다. 다음으로는 로봇을 만드는데 필요한 지식인 STEM, STEAM이 소개된다. -* STEM : Science + Technology + Engineering + Math -* STEAM : Science + Technology + Engineering + Art + Math - -이 책에는 간단한 로봇을 만드는 20가지 방법이 소개되어있는데 그 중 절반은 `당장 실습`을 할 수 있어 좋았다. 보통 로봇을 만드려면 값 비싼 키트를 사야한다. 일일이 전 부품을 만들면 좋겠지만 시간도 부족하고 상당한 비용이 필요할 뿐더러 무엇보다 그런 부품들을 만들 수 있는 시설이 가정에 있을리 만무하다. - -그런 측면에서 우리 주변에서 비교적 쉽게 구할 수 있는 재료를 가지고 로봇을 만드는 예제들이 이 책의 백미라고 할 수 있다. 더불어 로봇 키트는 자칫 `창의성`을 방해할 수 있다. 알파고가 등장하고 AI 추천 시스템의 성능이 뛰어난 세상이지만 아직까지 `강(强) 인공지능`이나 이를 탑재한 로봇은 존재하지 않는다. - -미래에 로봇이 어떤 형태일지 아무도 모르는데 키트와 같은 구성은 아두이노, 라즈베리파이 등과 같은 획일화된 특정 부품을 활용해야만 한다는 고정관념을 아이에게 심어주기 쉽다. 일단은 `순리 그대로, 자연 그대로` 우리 주변에 널린것들의 용도를 생각해볼 줄 아는 안목을 키워주고 싶었다. - -전자 부품. 즉, 인위적으로 1차 가공되지 않은 `자연 그대로의 세상을 활용`한다는 점에서 특히 마음에 들었다. - ---- - -"들어가며" 파트에는 재료를 구하는 방법이 소개된다. 가급적 폐부품이나 주위의 널린 재료들을 활용할 것을 안내한다. 최대한 비용을 줄여주려는 노력이 보인다. 다음으로 캐패시터나 고글 등 안전과 관련된 장비가 소개된 후 특정 장치가 로봇인지 아닌지 판단할 수 있는 흥미로운 순서도를 통해 로봇의 개념을 명확하게 이해할 수 있도록 돕는다. - ---- - -1장에는 로봇 공학의 발전이 소개된다. 레오나르도 다빈치가 12살에 만든 로봇기사부터 방직기, 천공카드 계산기, 무선송신기, 튜링테스트 등 역사의 흐름속에 굵직한 기계들이 소개된다. 아는 지식과 검색을 통해 부연설명을 하니 아이의 눈이 꽤나 반짝였다. 돌아오는 질문들이 날카로웠는데 아이들의 세계에는 고정관념이 없는 듯 하다. 덕분에 아이의 안목이 꽤나 넓어진 듯 했다. - -더불어 웹 캠과 같은 가정용 로봇, 마인드 스톰즈 장난감 로봇, 전자악기 테레민을 비롯한 예술용 로봇, 인공 달팽이관 의료용 로봇, 산업용 로봇 유니메이트, 군사용 무인기 드래곤아이, 지구 화산 탐사용 단테2호, 우주 탐사용 큐리오시티 등의 분야별 로봇들이 소개된다. - -`하나하나 심오한 과학의 원리와 자연의 이치`가 담겨있기에 하나의 주제를 설명하는데만 하루 정도의 시간이 필요하다. 종류별로 하나의 예제만 소개하는데도 우주에 관심 많은 아들이 던지는 수많은 질문들 - 화산이 그렇게 뜨거운데 로봇은 왜 안타는지, 인공 달팽이관이 어떻게 소리를 두뇌로 전달하고 그 신호를 어떻게 두뇌가 해석하는지 등 -의 향연이 벌어졌다. - -답변이 결코 쉽지는 않지만 한번 답을 듣고 나면 그만큼 아이의 안목도 넓어지는 듯 했다. 혼자 우주 책을 펴고 곰곰이 책을 읽는다던가 창밖을 보며 질문을 하는 등 발전적인 모습이 보여 매우 뿌듯했다. 확실히 그냥 공부보다는 주위의 현상과 이치에 대한 궁금증이 아이를 성장시키는 듯 하다. - ---- - -2장에서는 로봇의 겉모습과 종류별 다른 소재들이 소개되고 아주 쉬운 실습을 진행한다. 아래 그림은 프러버와 비슷한 로봇 `피부`를 만드는 실습이다. -![프러버1](https://theorydb.github.io/assets/img/review/2020-07-23-review-book-robotics-20-projects-2.png) -![프러버2](https://theorydb.github.io/assets/img/review/2020-07-23-review-book-robotics-20-projects-3.png) - ---- - -3장에서는 로봇을 움직이게 하는 `액추에이터`를 설명한다. 모터, 태양전지, 배터리 등이 에너지를 변환하는 과정이 설명되는데 이 부분은 정말 설명하기가 어렵다. 성인도 쉽지 않은 영역들이 즐비하기 때문이다. 하지만 아들 입장에서는 이 파트에서 가장 호기심을 느끼는 듯 했다. 전기에너지가 어떻게 자기장으로 변하는지, 왜 변화시켜야 하는지에 관심을 가졌다. - -아래 예제는 태양전지를 활용해 `뒤뚱거리는 로봇`을 만드는 예제인데, 꼭 만들고 싶었으나 아직 재료를 구하지 못해 설명만으로 그쳤다. 아쉽지만 간혹 재료를 구하기 힘든 예제도 숨어 있다. -![뒤뚱로봇1](https://theorydb.github.io/assets/img/review/2020-07-23-review-book-robotics-20-projects-4.png) -![뒤뚱로봇2](https://theorydb.github.io/assets/img/review/2020-07-23-review-book-robotics-20-projects-5.png) - -대신 아래 예제는 쉽게 재료를 구하고 만들 수 있다. 이렇게 간단한 예제로 중력의 원리도 설명하고 로봇이 `두다리로 걷는 것`이 왜 어려운지, 우리 몸이 균형잡는 것이 사실 얼마나 어려운 과정인지 설명할 수 있어 유익했다. -![보행로봇1](https://theorydb.github.io/assets/img/review/2020-07-23-review-book-robotics-20-projects-6.png) -![보행로봇2](https://theorydb.github.io/assets/img/review/2020-07-23-review-book-robotics-20-projects-7.png) - ---- - -4장에서는 로봇이 일하는 방법인 `이펙터`에 대해 다룬다. 로봇의 `자유도`라는 개념을 처음 알게되었는데 X, Y, Z 3차원의 3개 축과 축에 대한 기울기인 롤, 요, 피치 등 3개 축이 존재하여 기본적으로 자유도 6을 가진다는 사실을 알게 되었다. 일상을 이렇게 `법칙화`한다는 점은 아이에게 또 다른 시각을 불러일으킨 듯 했다. - -여기서는 로봇 팔 만들기 예제가 유용했다. 자유도의 개념을 구현하는 방법을 배울 수 있고, 펌프나 관절 등의 개념이 소개되기 때문이다. -![로봇팔1](https://theorydb.github.io/assets/img/review/2020-07-23-review-book-robotics-20-projects-8.png) -![로봇팔2](https://theorydb.github.io/assets/img/review/2020-07-23-review-book-robotics-20-projects-9.png) - ---- - -5장에서는 `센서`에 대해 다루는데 소나, 레이더 및 라이더, 가속도계의 원리를 배울 수 있다. 특히 압력 센서는 생각보다 매우 간단하게 만들 수 있다. 하지만 내용은 다소 빈약한 편이므로 이 부분은 아두이노와 같은 IoT 장비를 활용하면 좋을 듯 하다. - ---- - -6장은 프로그래밍에서 AI까지를 다룬다. 로봇이 생각하는 방법인데 `부울 논리나 기호학, 논리학`의 개념이 소개되어 있어 사고력에 도움이 되는 것 같다. 프로그래밍으로 밥먹고 살고 있기에 다른 장에 비해 설명하기 다소 수월했다. - -Python의 `turtle` 모듈을 활용해 간단한 프로그래밍을 구현하는 예제도 나오는데 설치 방법이나 프로그래밍 방법은 생략되어 있어 다소 아쉬웠다. 처음 하는 분들은 따라하기 힘들 듯 하다. 대신 아래 예제와 같이 모눈종이에 그려가며 프로그래밍의 메커니즘과 동작방식을 익힐 수 있다. -![거북이1](https://theorydb.github.io/assets/img/review/2020-07-23-review-book-robotics-20-projects-10.png) -![거북이2](https://theorydb.github.io/assets/img/review/2020-07-23-review-book-robotics-20-projects-11.png) - ---- - -마지막으로는 AI와 로봇의 미래에 대해 설명한다. 앞으로 아들이 무엇을 만들면 좋을지, 아직 아무도 만들지 못한 것은 무엇인지, 뛰어난 세상의 로봇공학자는 누가 있는지 설명할 수 있는 장이다. - -더불어 각종 유용한 로봇 관련 사이트 URL이 정리되어있다. 그 중 관심있었던 몇개의 URL을 아래와 같이 정리해본다. - -+ __AI 만들기__ - * [`Teachable Machine`](http://teachablemachine.withgoogle.com/) : 웹카메라를 활용한 기계학습 - * [머신러닝 포키드](http://machinelearningforkids.co.uk/) : 스크래치를 활용한 인공지능 블록 개발 - * [코그니메이트](http://cognimates.me/) : 마이크로비트, 스크래치를 활용한 인공지능 모델 학습 교육과정 - -+ __로봇관련 지식__ - * [`테드` - 발명가, 과학자들의 강연](https://www.ted.com/) - * [전지로 움직이는 로봇들](http://instructables.com/id/Simple-Bots) - * [`NASA` 로봇 관련 사이트](https://www.robotics.nasa.gov/) - * [로봇 관련 뉴스 모음](http://botmag.com/) - * [잡지 Make](http://makeproject.com/) - * [로봇 애호가 공유사이트](https://www.robotshop.com/community/forum/c/letsmakerobots) - -+ __로봇 키트 구매(국내)__ - * [레고 마인드 스톰스](https://www.lego.com/ko-kr/themes/mindstorms) - * [엘레파츠](https://www.eleparts.co.kr) - * [디바이스마트](https://www.devicemart.co.kr) - * [아트로봇](http://robobob.cafe24.com/) - * [로보티즈](https://www.robotis.com/) - -+ __로봇 키트 구매(해외)__ - * [벡스 로보틱스](http://vexrobotics.com/) - * [프로토스냅 미니봇 키트](http://sparkfun.com/) - * [리틀비츠](http://littlebits.cc/) - * [봇볼](http://botball.org/) - ---- - -앞서 언급했듯이 본 도서는 `일상의 재료를 활용하여 로봇을 만듦으로써 창의성에 제약이 생기지 않는다는 점, 로봇에 친숙해질 수 있는 구성 방식과 다양한 예제를 실습하며 숨은 자연의 이치를 알려준다`는 두가지 측면에서 매우 유용한 도서라 생각한다. - -원리에 대한 설명이 다소 부족하거나 간혹 구하기 어려운 재료를 활용해야 하는 실습 예제들로 인한 약간의 아쉬움도 있지만 아이가 로봇의 세계로 첫발을 딛기에는 훌륭한 교재라고 생각한다. - -AI와 양자 컴퓨터, 우주 공학이 점차 현실화 되어가며 `우리 아이들의 곁에는 항상 로봇이 있을 세상`이 멀지 않은 듯 하다. 로봇에 친숙해짐은 물론 각종 자연의 이치를 이해하는 것이 중요해진 시대이니만큼 본 도서를 통해 아이와 함께 로봇에 대해 알아가기를 추천드린다. - ---- - -* [책소개 - 로봇 스쿨](http://www.yes24.com/Product/Goods/90859843?scode=032&OzSrank=1&fbclid=IwAR1YEW19-VHY2xbrWR2vQgAEbNwz87isRBobKfXf2iMgpcst-Uqr8eNvPs0) - - diff --git a/_posts/2020-07-27-review-book-do-it-ds-algorithm.markdown b/_posts/2020-07-27-review-book-do-it-ds-algorithm.markdown deleted file mode 100644 index 67f14d90d..000000000 --- a/_posts/2020-07-27-review-book-do-it-ds-algorithm.markdown +++ /dev/null @@ -1,100 +0,0 @@ ---- -layout: post -title: "[리뷰] Do it! 자료구조와 함께 배우는 알고리즘 입문" -subtitle: "파이썬 편" -categories: review -tags: review book python 자료구조 알고리즘 do it 테스트 면접 입문서 취업 -comments: true -header-img: img/review/review-book-do-it-ds-algorithm-1.png ---- - -> `이지스퍼블리싱` 출판사의 `"Do it! 자료구조와 함께 배우는 알고리즘 입문 : 파이썬 편(시바타 보요 저/강민 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-do-it-ds-algorithm-1.png) - ---- - -본 도서는 `Python을 활용한 알고리즘, 자료구조 입문서`이다. - -[Do it! 자료구조와 함께 배우는 알고리즘 입문]은 시리즈로 간행되어 3년 전 C언어편, 2년 전 Java편에 이어 금년도에 Python편이 나왔다. 쉽게 이해할 수 있는 알고리즘 입문서로 꽤나 정평이 나있었기에 언젠가 한 번 읽어봐야 겠다 싶었는데 드디어 Python편을 처음 접하게 되었다. - -본 도서의 장점은 크게 2가지를 들 수 있다. - -> 하나는 C, Java, Python까지 동일한 저자가 시리즈로 간행한 도서이기에 `Python만이 가지는 독특한` 문법이나 패턴을 이해하기 쉽다는 점이다. - -다른 입문서와는 달리 책 곳곳에 다른 언어와 어떤 점이 다른지 설명해준다는 측면이 인상적이었다. 예를 들면 타 언어에서 자주 언급되는 Call by Value, Reference 등의 개념이 Python에서는 `Call by Object Reference`로 사용된다는 등 차이점을 상세히 설명함으로써 다른 언어와 다른 결과에 당황하지 않고 Python에 쉽게 적응하게 해준다. - -> 또 다른 한가지 장점은 `실무`를 고려한 서적이라는 점이다. - -15년 간 프로그래머로 밥먹고 살면서 의외였던 점은 생각보다 학교에서 배운 알고리즘을 사용할 기회가 적었다는 점이다. - -물론 알고리즘은 매우 중요하다. 알고리즘 자체에 대한 중요성을 폄하하려기보다는 `알고리즘을 실전의 목적과 문제에 맞게 변형하여 빠른 시간내에 생산성을 높이는 실전 감각`이 중요하다는 점을 강조하고 싶은 것이다. - -대부분의 입문서나 교과서는 뻔하다. 버블, 삽입, 선택, 병합, 퀵 등의 정렬과 선형, 이진, 해시 등의 검색 크게 두 파트로 정리되어있다. 거기에 링크드 리스트와 스택, 큐, 트리 등의 내용이 보태어 진다. - -그림으로 볼 때 어떤 방식으로 움직이고, 소스코드는 어떻고, 그리하여 시간복잡도는 어떠하다. CRUD(삽입, 검색, 수정, 삭제)별 시간복잡도가 다를 수 있으므로 상황에 맞게 골라써야 한다. 대부분의 교과서가 지금 언급한 구성에서 크게 벗어나지 않을 것이다. - -물론 본 도서도 대부분 위의 구성을 따르지만 앞서 언급한대로 실무에서 활용할 수 있도록 구성된 점이 차별점이다. 약 100 페이지(1/4 정도 분량)를 할애하여 1,2장 알고리즘과 자료구조의 기초를 다룬다. - -정수의 합을 계산하는 문제부터 소수를 나열하는 문제까지 기초적인 문제가 매우 다양한 유형으로 소개되어있다. 기초 내용이라고 무시하기 쉽지만 실전에서 수도 없이 자주 맞닥드리는 문제들이다. - -더불어 이런 기초에 대한 폭넓은 이해없이는 프로그램을 개발하는데 있어 생산성이 보장되지 않는다. 속도도 느린마당에 이해력이 부족하여 옆의 팀원과 대화조차 안되어 몰래 집에서 혼자 공부하는 서러움을 겪을 수도 있다. - -폭넓은 예제를 다루며 여러 단계의 개선 과정을 거치는데 각 과정마다 `개선을 시도하려는 접근 방식과 안목`이 주옥같다. 실전에서 효율성을 위해 검토하는 방식과 동일하기 때문이다. 1, 2장이 앞에 포진되어 있어 기초를 다룬 장이라고 무시할 것이 아니라 `저자의 접근법`을 잘 따라간다면 실무에서 놀랄만한 성취를 이룰 수 있다. - -더불어 각 과정 마다 독자가 따라오지 못하거나 이해하지 못할 경우를 대비해 `상세한 시각화 자료`가 제시된다. 시각화도 저자의 관점과 생각에 따라 같은 소스 코드를 두고 비효율적으로 이해하는 선입견이 생길수 있어 주의해야 하는 부분인데 저자가 다년간 알고리즘을 `어떻게 시각적으로 쉽고 효율적으로 표현할 수 있을지 고민한 흔적`이 역력히 느껴진다. - -아래 그림은 이진 검색 알고리즘을 구현하고 테스트하는 예제인데 구현을 넘어서 스스로의 동작 방식을 시각화하여 이해할 수 있는 형태로 프로그램을 개발한다. 스스로 구현한 프로그램의 동작 방식을 명확히 이해하는데 있어 이보다 훌륭한 방법이 있을까 싶다. -![이진검색](https://theorydb.github.io/assets/img/review/review-book-do-it-ds-algorithm-2.png) - ---- - -위에서 언급한 구체적인 장점들을 설명하고자 하나의 예시를 선정해 보았다. 2장 마지막 예제 소수 나열하기로 아래 그림은 소수를 나열하는 프로그램을 시각적으로 표현한 부분이다. -![소수1](https://theorydb.github.io/assets/img/review/review-book-do-it-ds-algorithm-3.png) - -소수는 1과 자기 자신을 제외한 나누어 떨어지는 숫자가 없다는 규칙이 있다. 예를 들어 13이 소수인지 판단하려면 2, 3, ... , 12까지의 수들로 13을 나누어 떨어지는지(즉, 나머지가 0인지) 판단하면 된다. - -위 그림은 2 ~ 18까지 소수인지 검사하는 과정을 시각화한 그림인데 파랑색 이탤릭체로 나누어 떨어지는 숫자를 표기했고, 나누어 떨어지는 숫자가 하나라도 등장하면 소수가 아니므로 뒤의 숫자는 검사할 필요가 없다는 것을 취소선을 이용해 표기했다. 소수의 나열 과정을 이렇게 직관적으로 표현한 그림은 처음 보는 듯 하다. - -여기서 소개를 마쳐도 나무랄 바 없는데 아래 그림과 같이 `개선`을 시도한다. 2와 3이 소수로 밝혀진 이후에는 두 숫자로 나누어 떨어지지 않는 숫자 N은 두 숫자의 곱 조합인 2 * 2 = 4, 2 * 3 = 6, 3 * 3 = 9 등의 숫자로도 나누어 떨어지지 않음을 알 수 있다. 그럼에도 4, 6, 9로 나눠 떨어지는지 검사하는 것은 비효율적이다. -![소수2](https://theorydb.github.io/assets/img/review/review-book-do-it-ds-algorithm-4.png) - -따라서 위 그림과 같이 찾아낸 소수를 특정 배열에 저장한 후 해당 수들로만 나눗셈을 하여 나눠 떨어지는지 파악하면 된다. - -여기서 `한단계 더` 나아간다. 아래 그림과 같이 5 * 20과 20 * 5는 대칭 구조를 이룬다. 즉, 특정 수 N이 정사각형의 면적이라 생각하여 한변의 길이로 나누어 떨어지지 않으면 나머지 변의 길이로도 나눠 떨어지지 않음에 착안한다. -![소수3](https://theorydb.github.io/assets/img/review/review-book-do-it-ds-algorithm-5.png) - -즉, 위 그림의 네모박스와 같이 N 제곱근 이하의 어떤 소수로도 나눠떨어지지 않는다면 소수라고 할 수 있는 것이다. - -이렇듯 작은 알고리즘 문제 하나에 있어서도 여러 개선점을 찾고자 노력하고 그 과정을 쉽게 이해할 수 있게 시각적으로 도식화 한 구성이 매력적인 도서라 할 수 있겠다. - ---- - -3장 이후 이어지는 알고리즘의 핵심 부분도 이러한 기조를 이어나간다. 선형 검색을 개선하기 위해 보초법으로 if문을 제거하는 방법 등 지속적인 알고리즘의 개선 시도는 물론, 이진 검색부터는 데이터가 정렬되어 있어야 한다는 등 `전제 조건` 등이 명확히 언급된다. - -시간복잡도를 설명하는데 있어서도 O(n)의 의미가 n과의 비례 관계를 의미한다는 점과 연속 동작에서의 시간복잡도는 Max 복잡도를 기준으로 함을 분명히 한다. 그동안 만났던 알고리즘 입문서는 이런 핵심에 대한 설명이 누락되어 괜히 이해를 어렵게 하였는데 이런 `명쾌`한 점이 본 도서의 장점이다. - -각 알고리즘별 `Trade-Off` 관계를 언급함으로써 실전에서 고려해야 할 사항들에 대한 판단을 돕기도 하며, 알고리즘을 이해하고자 밑바닥부터 구현하긴 하지만 `실전에서는 어떤 라이브러리`를 활용하면 되는지 안내된다. 예를 들면 스택의 경우 collection.deque를, 큐에서는 heapq 모듈을 활용할 수 있음을 알려준다. - -재귀 파트야 말로 본 도서의 시각화 자료의 활용이 얼마나 빛을 발하는지 알 수 있는 대목이다. 재귀는 직관적으로 사고하기 어려워 시각화 자료가 정말 중요한 파트인데 각 재귀 흐름 단계별 명쾌한 시각화 자료로 로직이 쉽게 이해된다. 본 도서에서는 다루지 않지만 차후 `Dynamic Programming`을 배우는데 있어서 튼튼한 기초를 마련할 수 있을 것이다. - -정렬 파트 역시 주요 9개 알고리즘을 꼼꼼하게 다루고 있으며 단순 삽입 정렬이 선택 정렬과 비교해 어떤 차이점이 있는지 - 값이 가장 작은 원소를 선택하지 않는다 등 - 언급된 것을 보며 디테일에 적잖이 놀랐다. 학부 시절 둘다 삽입인데 이름은 한쪽만 삽입이라 해메였던 기억이 떠올랐다. 작은 부분 하나까지 입문 독자를 위한 `배려`가 느껴졌다. - -문자열 검색 파트도 비교적 자세히 다뤘기에 차후 AI 진영의 NLP를 익힐 때 큰 도움이 될 만큼 기초를 다지는데 도움이 되며, 특히 리스트 부분은 링크드 리스트는 물론 `확장 버전별로 매우 상세히` 다뤄 처음 접하는 독자들도 쉽게 이해할 수 있게 구성되어 있다. - -개인적으로 검색, 정렬, 트리 등의 알고리즘이야 라이브러리가 잘 되어있어 활용에 있어서 만큼은 큰 중요성을 느끼지 못했는데, 리스트의 경우 알아두면 실전에서 사용자 정의 알고리즘에 있어 유사한 형태가 자주 활용되기에 실전적인 알고리즘이라 생각한다. 역시 실전에 도움되는 구성답게 상당한 지면을 할애한다. - -마지막으로 트리는 기본적인 종류만 다루고 있어 약간 아쉬움이 남았다. AVL, red-black, B, B+, 2-3 tree 등 다양한 트리가 소개되지 않아 파일 구조나 데이터베이스에 관심이 깊은 독자분들은 다소 부족함을 느낄 수 있다. - -더불어 Python의 포인터를 다루는 부분의 설명이 다소 부족하여 포인터 개념에 익숙치 않은 독자들은 관련 부분에 어려움을 느낄 수 있다. 하지만 어디까지나 본 도서는 입문서이므로 입문서 기준으로는 나무랄 부분은 없어 보인다. - -전반적으로 책의 장점으로 비추어 볼 때 C나 Java와 같은 다른 언어에 이미 익숙하지만 `Python을 처음` 접하시는 분들께 매우 유용할 것이라 생각된다. - -더불어 알고리즘을 알고는 있지만 아직 `명쾌`하게 이해하지 못하는 분 또한 본 도서가 큰 도움을 줄 수 있으리라 본다. 알고리즘을 이미 명확하게 숙지하고 있음에도 실전에서 새로운 알고리즘을 개발할 때 방향을 잡기 어렵거나 속도가 나지 않는 분들은 `실전 감각`을 키우는 데 도움이 될 것이다. - -그 외에도 알고리즘을 처음 접하는 분이나 Python을 배우고 싶은 분께도 추천하고 싶다. 어떤 레퍼런스보다도 쉽게 이해하고 실전에 빠르게 적용할 수 있기 때문이다. - - -* [책소개 - Do it! 자료구조와 함께 배우는 알고리즘 입문 : 파이썬 편](http://www.yes24.com/Product/Goods/91219874?OzSrank=1) - - diff --git a/_posts/2020-08-02-review-book-class-way-home-new-normal.markdown b/_posts/2020-08-02-review-book-class-way-home-new-normal.markdown deleted file mode 100644 index 3fbc21b2b..000000000 --- a/_posts/2020-08-02-review-book-class-way-home-new-normal.markdown +++ /dev/null @@ -1,190 +0,0 @@ ---- -layout: post -title: "[리뷰] 퇴근길 인문학 수업 : 뉴노멀" -subtitle: "대전환의 시대, 새로운 표준에 대한 인문학적 사고" -categories: review -tags: review book 인문학 퇴근길 뉴노멀 코로나 대전환 새로운 표준 기술 행복 삶 생각 전환 -comments: true -header-img: img/review/review-book-class-way-home-new-normal-1.png ---- - -> `한빛비즈` 출판사의 `"퇴근길 인문학 수업 : 뉴노멀(김경미, 연유진, 이준정, 김숙, 오준호 저 외 8명)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-class-way-home-new-normal-1.png) - ---- - -> 인문학이란 무엇인가? - -`인간, 인간의 근원문제, 인간의 문화 등에 관한 학문`이다. 보통 우리는 대학 내 전공이나 학과라는 프레임에 갇혀 인문학의 범위를 지극히 좁게 생각하는 경향이 있다. 보통 언어나 문학에 국한된 것 혹은 철학에 관련된 것이라는 선입견이 지배적이다. - -인문학이 무엇인지 보다 명확히 하고자 다음과 같이 역으로 질문하고 싶다. - -> 이 세상에서 인간과 관련이 없는 학문은 무엇일까? - -직간접적으로 그런 학문은 찾기 어렵다. 심지어는 수학이나 과학도 숫자로 표기 방식이 다를 뿐 내포된 논리와 철학의 저변이 곧 인문학이다. - -`위 질문에 대한 답을 찾는 노력덕에 인문학의 영역이 넓어지는 듯 하다.` 본 도서에 소개된 프로이트의 무의식이나 데카르트의 생각 또한 저런 질문의 파생이 아닐까? 이 세상에 등장하지 않은 그러나 감각적 혹은 사변적인 방법으로 존재하는 것들 말이다. - -개인적으로 인문학을 좋아하는 이유는 마케팅 냄새가 짙은 최근의 인문학 열풍이나 스티브잡스의 연설 따위 때문이 아니다. 바로 위 질문의 대답을 위한 인사이트를 상기시키기 때문이다. 세상의 위대한 발견이나 창조는 대부분 인문학이 그동안 다루지 않았던 그 무엇인가에 대한 대답들이었다고 확신한다. - -바꾸어 말하면 인문학은 `우리가 사는 세상 거의 모든것`에 대한 이야기라 생각한다. 즉, 인문학이 어렵거나 고리타분한 것이라는 선입견을 버리셨으면 좋겠다. 우리 모두 이미 일상에서 사랑하는 사람때문에 두근거리기도 하고, 사람 사이의 갈등에서 괴로워 술 한잔 기울이기도 한다. 이에 대한 근원을 찾고 해답을 구하기 위함인데 `꼭 술자리 옆 동료의 대답만이 해답일까?` 이미 지금까지의 `수많은 현인들이 답을 내놓았는데 왜 그 답은 들으려고도 안할까?` - -인문학이 세상의 거의 모든 것임을 강조했듯 본 도서에도 세상의 `거의 모든 것들이 등장한다.` 다만 금번 시리즈 `뉴노멀` 편에서는 특히 코로나로 인한 대전환에 초점을 맞춘 인문학들이 포커싱 되었을 뿐이다. - -그래서 대부분의 사람들이 좋아하는 영화이야기도 나온다. 흥미진진한 과학이 등장하기도 하며, 미래를 예측하기도 한다. 그 외에도 사회, 기술, 경제, 인생, 철학, 역사, 인권, 한문학 등 분야별 지식이 총 출동한다. -![개요](https://theorydb.github.io/assets/img/review/review-book-class-way-home-new-normal-2.png) - -세상에 모든 것을 좋아하는 사람은 없어도 어느것 하나도 좋아하지 않는 사람은 없을 것이다. 즉, 이 도서 주제 중 `최소한 반드시 좋아하는 주제 하나는 숨어있을 것이다.` 또는 `지금 깊은 고민에 빠진 그 어떤 주제에 대해 심도있게 생각해 볼 기회`를 주거나, 운이 좋으면 슬기로운 `해답`을 얻을 수도 있을 것이다. - -개인적으로는 주말 하루동안 약 6시간에 걸쳐서 읽었다. 흥미진진하고 평소 고민했던 주제들이 나와서 손을 뗄 수가 없었다. 게 중에는 민감한 문제도 있어 스스로 동의하지 못해 최대한 비판적 사고로 읽었던 주제도 있었지만 대부분 몰랐던 사실을 알게 해주고 그로 인해 나도 모르게 잘못 씌워져있던 프레임을 고치기도 했다. 특히 어려운 문제에 대한 인사이트를 얻었고, 머리속에 복잡했던 사고들을 정리할 계기가 되기도 했다. - -책의 구성은 다소 독특하다. 제목에서도 알 수 있듯 부담갖지 말고 `퇴근길에 약 30분 이내의 짧은 시간만 투자하여 인문학에 접속`하고 나의 고민을 해결하거나 나의 삶을 풍요롭게 이끌 것을 강조하고 있다. - -총 12장으로 이루어져있으며 각 장은 한 주 단위로 이루어져있어 월,화,수,목,금 5개의 小챕터로 이루어져있다. 매일 읽는다면 12주 즉, 3달 동안 읽을 수 있다. 하루 부담되지 않는 양만큼 읽고 건설적인 사유에 흠뻑 빠질 수 있는 구성이므로 부담이 없다. - -그런데 너무 재미있어서 하루만에 다 읽어 버렸다. 순간 순간 지식과 결론을 흡수하는 것 보다는 이 책의 구성대로 한 챕터씩 음미하며 깊은 생각을 통해 `현안들과 제시된 지식들을 정리하며 한 걸음씩 읽어가는 편이 더 좋을 듯` 하다. 물론 게을러 하루 30분 내의 시간도 투자를 못하겠다면 차라리 한 번에 다 읽는 것이 낫다. - -한 챕터, 한챕터 마다 특정 전공분야의 정수가 깃들여 있으며 현 사회 우리의 고민거리 혹은 궁금증들이 등장한다. 모두 주옥같은 내용들인지라 개인적으로 느끼고 인상깊었던 점들을 각 강의 챕터별로 하나씩 정리해본다. - ---- - -* __[사회] 디지털 기술__ - + 온라인 세상의 저렴한 비용 : 검색, 복제, 전송, 추적, 검증 - - 검색 : 매칭(추천시스템) 비용이 저렴해져 플랫폼(중개자) 비즈니스 성행 - + 데이트 앱 틴더 : `300억건 이상`의 매칭 기록 / 미국 커플의 40%가 온라인 데이팅 앱으로 만남을 시작 - + 인도의 사회운동가 하자레 : 문자 혹은 부재중 전화로 `3.5만명의 지지자` 연락처 확보 - - 복제 : `한계비용 제로` 상태(추가 생산 비용이 없음) - + 과거 : 영화 필름 복제본의 양과 노동력이 비례하고, 화질은 반비례 - + 현재 : 넷플릭스 월정액 동영상 스트리밍 서비스 - - 전송 : 디지털 운송비용이 0에 수렴 (지구 반대편 역시 고화질 시청 가능) - - 추적 : Client의 행위기록을 수집, 분석하여 추천 가능 - - 검증 : 브랜드의 평판에서 리뷰 평판으로 (별점테러와 같은 부작용도 존재) - + 연결 - - 인플루엔서, 관심 쏠리는 현상이 가속화되면서 다양성의 기회가 줄어드는 현상도 발생 - - `포모증후군` : 제외되는 것에 대한 두려움 - - `디지털 격차` : 노인들의 스마트폰, 키오스크 사용에 대한 두려움 -> 세대갈등의 조짐 - - 첨단 기술 : 선점한 소수 집단의 성공 가능성 - - 전장체유전분석 : 개별 유전체를 통째로 분석해 개인에게 맞는 진단과 치료법을 찾아내는 기술. 소수 부유층만 누릴 수 있음 - - 정보취약계층의 디지털 정보화 수준 69.9 - - 소외감 : 유발 하라리, 자기 몸과의 접촉을 잃어버린 것이 원인 - -* __[사회] 소유 vs 접속(공유)__ - + `규모의 경제` : 생산량을 늘릴 때 1개의 생산 및 유통 비용이 낮아지는 효과 - + 러프킨, 한계비용 제로사회 : 낮은 소비자가 혜택을 위해 과점 체제를 사실상 용인해 줬음 - + 공유, 구독, 중고시장 경제 : 공급자와 사용자가 잠시 접속권을 교환 - + 초연결 : 24시간, 쉽게, 풍부한 정보, 상호작용, 연결, 무한용량 기록 - + `GDP 대신 새로운 지표`가 필요 : 중고시장이나 접속권 교환의 경제 규모 측정 불가 - -* __[기술] AI__ - + 디지털 인물 발전 단계 : 영상토막 > GAN, 딥페이크, 아바타 > 듀플렉스, 대화형 > Neon, 전신 > 3D, AR - + 인간 뇌 기억 용량 : 2.5페타바이트 (약 250만 기가바이트) - + 일자리 : 유선 전화기 > 축음기 > 영화배우 대체 - + 단순 반복적인 업무가 제일 먼저 사라질 것 - + AP통신 NLG(자연어 발생) : s/w가 기사를 작성 - -* __[영화] 인간의 오만__ - + 르네상스(인간의 재탄생) : 신을 시계만드는 기술자로 보는 사유체계의 변화(관점의 변화) - + 데카르트의 생각하기(코기토) : 사람은 인과법칙의 지배를 받는 일종의 기계(포스트모더니즘의 비판 대상) - + 카르페디엠 : 이 순간을 놓치지 말라. - + 이미테이션 게임, 12몽키즈, 블레이드 러너, 마이너리티 리포트, 아폴로 13호, 스피어 리뷰 - -* __[미래] 인간, 사회, 일, 한반도__ - + `텔로미어` : 염색체 말단에 위치하며, 이를 감소를 차단하거나 감속 속도를 늦추면 노화를 극복할 수 있다. - + `크리스퍼 단백질` : 유전자 가위. 배아 유전자의 교정 가능 (뿔없는 소) - + 빛의 파장을 소리로 바꿔 뇌에 전달하는 안테나 - + 2050 전체 가구의 절반 이상이 1인 가구로 예상(인구수는 4700만명으로 감소) - + `역분화 줄기세포(iPCS)` : 체세포 -> 줄기세포 -> 생식세포 (동성 커플도 유전자를 계승한 아이를 얻을 수 있음) - + 출산 감소로 인한 외국인 유입정책 노동력 보완 : 문화갈등의 우려 - + 반복, 지루, 위험한 일의 소멸, 출퇴근 개념 사라짐, 평생 여러 분야에 종사 - - 정원 조경, 문서 관리, 배달업, 여행업, 노약자 케어 등 - + 미중전쟁 발발 시 `한반도가 분쟁의 무대`가 될 가능성이 농후 - + 북한 장마당의 시장 경제 전환 움직임 - + 투키디네스의 함정 : 전쟁 전 조짐. 지역 내 안보딜레마 심화과정 (군비확장 반족) - + 코로나-19 대응으로 국제사회 위상이 올라간만큼 아시아의 리더 위치 필요 - + 동아시아 `원전`사고 : 중국 서해 원전 56기, 폭발 시 하루만에 서울로 방사능 물질 도달 - + 갑작스러운 `통일` : 수습 복구 비용, 문화갈등 <-> 기회(세계적 휴양지, 동북아 에너지 그리드, 북한 발사체 기술) - + 디지털 재난 : 통신 중단, 공기정화 및 에어컨 중단 - -* __[과학] 지구__ - 역사에서 미래를 배우듯, 자연을 배우는 것은 (주역 등) `진리라는 감각`을 배우는 것이므로 과학도 인문학에 매우 유용하다고 생각했다. - + 태양 : 3세대 별로 추정, 1AU(지구와 태양의 거리, 1.5억km, 빛으로 8분 20초), 우리 은하를 2.4억년 주기로 공전 - + 달 : 지구에 미치는 중력 태양의 2배, 맨틀흐름, 생활주기, 조수흐름에 영향, 자전축 23.4도, 빛의 속도로 1.3초 도달 - + 지구 탄생 : 철, 니켈은 중심으로, 가벼운 산소, 규소는 광물과 대기로 - + `외핵` 회전 > 자기장 > 극지방 오로라 > 태양풍 보호 - + 생명 : 심해열수구 기원이 유력, 남세균의 테라포밍(산소대폭발), 오존층, 호모(속명) 사피엔스(종명칭) 홍길동(이름) - + 문명과 대비하여 정신영역은 진화하지 않았음 - + 지구 온난화의 한계점 : `15.7도`, 해수팽창, 부산 잠김, 해일 및 토네이도 급증, 빙하의 소실로 햇빛 반사 불가, 한파폭설, 제트기류 소멸(한파, 장마) - + 원자력 발전 : 현재의 편의를 위해 후대에 부담과 희생을 떠 넘기는 행위 - + 지구 생물종에서 유독 하나가 독보적으로 강한 사례는 드물었다. : 바이러스는 다른 생물종에게 별다른 피해를 주지 않는다. - + 티티우스-보데 법칙 : n번째 행성의 평균 반지름 r = 0.4+0.3*2n - + 신호는 거리의 제곱에 반비례하여 작아짐 - -* __[경제] Trade-Off__ - + 기회비용(포기비용) vs 현재의 소비로 보상(노마드족) - + 레몬마켓(불량품 거래, 정보비대칭, 중고차시장) vs 피치마켓(가격대비 고품질 상품, 정보대칭) - + 고정비용(매출과 상관없이 계속 지출, 화장실 유지비) vs 가변비용(매출 비례) - + 긱노동자(플랫폼 노동자) : 프리랜서 배달기사, 소득 안정성 문제 - + 소비자 `잉여` 이론 vs 공급자 잉여 이론 : 국산품 애국심보다는 해외 경쟁력을 갖추는게 낫다. - -* __[인생] 100세 시대__ - + 2010년 평균수명 `80.6세` 2080년 기대수명 90.3세 - + 부도 어느 임계점 이상을 넘어서면 그 이상을 가져도 행복하지 않다. 복권의 행복 유효기간도 5년 - + `성공역`에 도착하고 나서야 그곳에 행복이 없음을 깨닫지 않아야 함 - + 인생의 가장 좋은 친구는 나 자신. 행복은 습관이자 태도다. - + 부탄의 국민총행복위원회와 `GHN(국민총행복)` 지수 - + 흔들림을 잡아줄 `핵심가치(단순함)` 필요 : 평화, 가족, 건강, 나눔, 봉사 등 - + 별일이 없다고 생각할 때 `가정`에 더 열심히 물을주고 잡초를 뽑아줘야 한다. - + 청하지도 않은 충고나 잔소리는 삼가자. - + 사전연명의료의향서와 사전장례의향서, 존엄사법, 의사조력자살 : 의미없는 연명치료 의사표현 필요 - + 초고령사회(65세 이상 인구가 20% 이상) `2025년` 예정 - + 노인이 되어 빛나는 가치 : 성장, 성숙, 지혜, 관대, 수용, 영적인 성장, 철학, 독서 등 - -* __[역사] 자유와 평등__ - 프랑스 혁명을 통해 사람의 심리, 욕구, 혁명과 관련되어 `자유와 평등이 정착하기 까지 얼마나 많은 노력`이 필요했는지 알 수 있다. 현대 사회의 민주주의 발전과 `노사관계`까지 이면의 원동력을 엿보고 미래를 예측하는데 도움이 된다. - + 프랑스 혁명 : 바스티유 감옥 함락. 농민의 힘으로 봉건제 폐지. - + 르 샤플리에 법 : 결사와 파업 금지. 노동을 거부할 자유 금지. 시민 자격 요건인 재산. - + 프랑스 전쟁 : 곡물 상한가 결정, 남자 보통선거 헌법 제정 - + 입헌군주제 : 언론을 지배하는 자가 최상층 시민. 묵묵히 일해야하는 자유. - + 2월혁명 : 성인 남자 보통선거. 언론과 집회의 자유. 노동시간 제한(11시간). 국민작업장의 한계 - + 6월봉기 : 중소 시민층은 일단 자신들이 언하는 것을 얻었을 때 재빨리 질서유지에 가담 - + 파리코뮌 : 공화정이나 왕당파 의석이 제일 많음. 무상의무 교육. 동일시간 동일임금. 72일만에 종료. - + 68혁명 : 자본주의적 경쟁 구도에 휩쓸려 소외된 삶은 살지 않겠다. 최저임금 인상. 노동시간 단축. 안정된 일자리 보장. 흑인, 여성을 위한 신호탄. - -* __[인권] 인권감수성__ - 좋든 싫든 세상은 계속 변하고 있다. 나이가 변할 수록 `내가 시간축의 마지막에 있다는 선입견에서 벗어나야겠다`는 다짐을 하게 되었다. - + 인권감수성 : 내가 처한 상황처럼 인식하고 이해하고자 노력하는 것. - + 살색 -> 살구색, 녹색 -> 청포도색, 학생 -> 청소년(학업중단 청소년 5만명) - + 인권 vs 인권 : 동성애, 양심적 병역거부, 흉악범, 알권리 - + 노키즈 존 : 아이들이 자라 어른이 되면 또 다른 배척과 혐오를 생산하진 않을지 우려됨. - -* __[한문학] 세대화합__ - + 선조들은 답사 기록을 보고 개선하며 선후배 사이의 공감을 이룸 - + 아들을 잃고 손자 서태순과 함께 임원경제지를 마무리한 서유구 - + 고봉 기대승과 퇴계 이황 : 58세의 성균관 최고의 대학자가 과거에 갓 합격한 애송이의 문제를 겸허히 받아들임("황은 머리를 숙입니다") - + 김정국 사재집 中 : "...아버지에게 밥그릇을 던져 아버지를 다치게 하였다..." - + 반계 유형원 : 어린 아이에게도 항상 성인을 대하듯이 존중하라. - -* __[철학] 무의식__ - + 무의식 : 내가 의식하지 않는 가운데 일어나는 심리적 사태 - + 프로이트의 무의식(`기호`) - 스스로의 기준에 허용될 수 없는 불미스러운 것들을 자신의 영역밖으로 내쫓음으로 발생한다고 주장. 위장된 모습으로 자신을 은폐하고 변형시킬 수 있을 때만 의식의 문턱을 넘어올 수 있다. 자신의 욕망을 채우기 위해 의식의 검열을 피해 비밀리에 펼쳐나가는 은밀한 활동으로 구성된다. - + 칼융(`상징`) - - 기호가 아닌 상징으로 이해되어야 하는 것들이 있다. ex) 순결함 = 하얀색(어떤 인과관계도 성립하지 않는다.) - - 선험 : 경험보다 선행하는 것, 원형(상징)은 사건보다 앞서 존재하며 사건의 발생을 설명해주는 원리임. - ex) 유카 나방의 번식 행위, 성행위 본능 등 (유전, 경험이 아님) - - `원형` : 초개체적, 초역사적, 초경험적 차원의 것이 존재함. - + 종교적 변성 의식상태 : 기도, 명상, 최면, 유체이탈, 임사 체험, 접신 등 - ---- - -각 강의별로 최대한 핵심만을 정리하였음에도 배우고 생각할 것이 많아 정리하다보니 제법 많은 분량이 되었다. 책의 목차가 심오하게 구성되어있어 내용을 파악하는데 어려움이 있으므로 각 강의가 어떤 내용을 담고 있는지 위에 정리한 요약 리뷰를 통해 `원하는 내용이 있는지` 살펴보는데 도움이 되었으면 좋겠다. - -이것으로 리뷰를 정리하며 마지막으로 인문학과 본 도서에 대한 선입견을 버리면 좋겠다는 말씀을 전하고 싶다. 정확한 정의는 아니지만 인문학은 그냥 우리 주위에 널린 모든 것들이고, 철학은 연애고민, 인간관계 고민 등 우리가 늘 고민해서 자주 생각하는 것들이다. 아이러니하게도 주제와는 달리 과학 파트는 어느 파트보다 예술적인 감성으로 읽을 수 있기도 하다. - -`뉴노멀편을 읽고 퇴근길 인문학 수업 시리즈의 가치를 다시 알게 되었다.` 우리 주위에 널려있는 주제들을 다시금 돌아보고 폭넓은 안목과 지식을 갖춘 후 앞으로의 삶의 방향을 수립하기에 적격인 책이므로 꼭 일독을 권한다. - - -* [책소개 - 퇴근길 인문학 수업 : 뉴노멀](http://www.yes24.com/Product/Goods/90864285) - - diff --git a/_posts/2020-08-03-review-book-for-noctural-humans.markdown b/_posts/2020-08-03-review-book-for-noctural-humans.markdown deleted file mode 100644 index b5add4e53..000000000 --- a/_posts/2020-08-03-review-book-for-noctural-humans.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: post -title: "[리뷰] 야행성 인간을 위한 지적 생산술" -subtitle: "천재들이 사랑한 슬기로운 야행성 습관" -categories: review -tags: review book 야행성 지적 생산술 습관 지식 교양 독서 발상법 -comments: true -header-img: img/review/review-book-for-noctural-humans-1.png ---- - -> `쌤앤파커스` 출판사의 `"야행성 인간을 위한 지적 생산술(사이토 다카시 저/김윤희 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-for-noctural-humans-1.png) - ---- - -본 도서의 내용을 한마디로 요약하자면 `야행성 인간의 공부법`이다. - -야행성 인간은 고충이 많다. 아침마다 늦잠 잔다고 가장 가까운 가족에게조차 시달리며 낮 시간동안 집중력 저하로 고생이 이만 저만이 아니다. 일찍 일어나는 새가 빨리 먹이를 찾는다는 미명하에 스스로의 생활패턴과 습관을 바꾸고자 많은 노력을 기울였음에도 언젠가 부터 형성된 이 태생적 야행성 습관은 좀 처럼 떨치기 어렵다. - -나 역시 야행성 인간인지라 이를 어떻게 슬기롭게 극복할지 한참 고민하였고 야행성으로 유명했던 처칠이나 도리야마 아키라 - 드래곤볼 작가 - 의 인생을 벤치마킹하려고 노력했었다. 그런데 얻을 수 있는 정보에는 한계가 있고 저런 능력 좋은 위인들의 방식을 평범한 나에게 적용하기에는 한계가 있어 큰 도움이 되진 못했다. - -그러던 중 본 도서를 알게되어 재미있게 읽을 수 있었고 여러 방법들을 배울 수 있다. 결론부터 말하자면 `야행성 인간이 어떻게 시간을 효율적으로 사용하고 지적으로 발전할 수 있는지` 쉽고 흥미로운 방법들이 제시되어있어 만족스러웠다. 다만, 야행성 인간이 사회에 적응하는 방법은 많이 다루지 않아 약간은 아쉬웠다. - -어쨌든 다음 한 구절은 이렇게 멋대로(?) 살아도 된다는, 아니 야행성으로 살아야 한다는 나름의 확신을 갖게 하였다. - -> 야행성 인간의 무리한 아침 기상이 `데카르트 죽음`의 핵심 원인이라는 것을 알고 있는가? - -적어도 바꿀 수 없는 것을 바꾸려고 애쓰고 시간 낭비하는 것 보다는 스스로의 방식에 맞춰 삶을 알차게 보낼 수 있는 - 즉, 바꿀 수 있는 - 방법에 집중하는 것이 훨씬 효율적이라는 생각이 든다. 우리 야행성 인간에게도 2가지의 무기는 확실히 있기 때문이다. - -* 밤 : 지적 활동을 하기에 최고의 시간(낮의 집중력과는 비교가 안된다.) -* 언택트 : 코로나19가 변화시킨 재택근무, 원격 회의, 언택트, 출퇴근 유연제 - -당신이 새벽의 여유를 즐기는 독자분이라면 이 책이 그 시간을 어떻게 알차게 보낼 수 있는지 많은 방법을 알려줄 것이다. 그 중 인상적이고 도움될 만한 몇가지 정보를 아래와 같이 간추려보았다. - -* 발상력. 그리고 밤 - - 발상력을 현실에서 과감히 `행동`으로 옮기면 다음 단계로 이끄는 발상이 떠오르게 된다. - - 어떤 일이든 반드시 `마감(deadline)`을 설정해야 한다. - - 밤은 낮동안 사고를 지배했던 일반론을 버리고 사물과 현상을 있는 그대로 바라보기에 좋은 시간이다. - + 프랑스의 화가 폴 세잔은 사과 하나를 주제로 60점이 넘는 작품을 남겼다. 사람들은 머릿속에 떠오르는 이미지대로 `일반화된 사과`만 그린다. 다양한 사과를 그리는 위해 밤 시간이 큰 도움이 된다. - - 손글씨의 가장 큰 장점은 쓸수록 뇌가 활성화되면서 좋은 아이디어가 떠오른다는 것이다. - - 새로운 시각과 아이디어 - > 왜 이 키워드가 내 머릿속에 머물고 있었을까? - 라고 생각하면서 `사고의 흔적`을 따라가면 새로운 아이디어와 관점이 떠오른다. -* 공자는 주공을 군자의 표본으로 여겨 추앙했는데 어느날 다음과 같은 말을 남긴다. - > "오래되었도다. 내가 다시는 꿈에 주공을 보지 못함이" - 논어 中 - `꿈`에서도 볼 정도가 아니면 간절히 바란 것이 아니라며 게으름을 반성한 말이다. -* 온라인 서점의 독자서평 - 리뷰를 읽으면 자신이 가진 `지식의 수준`을 돌아볼 수 있고, 다른 사람들의 다양한 `의견을 파악`하는 연습도 할 수 있다. 훌륭한 서평가들이 많이 존재하며 다양한 의견을 `선입견 없이` 접할 수 있다. - -본 도서는 무겁지 않은 주제로 가볍게 읽을 수 있다는 점이 장점이다. 또 중요한 부분마다 형광펜이 칠해져 있어 핵심을 파악하기 쉽다. 여타 다른 책보다는 가독성이 훨씬 향상된다. 야행성 생활 패턴을 갖고 있거나 밤 혹은 한가한 시간에 스스로의 발전 방법을 모르는 독자가 가볍게 읽기 좋은 책이다. - - -* [책소개 - 야행성 인간을 위한 지적 생산술](http://www.yes24.com/Product/goods/91169112) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. \ No newline at end of file diff --git a/_posts/2020-08-10-review-book-for-sales-of-strategists.markdown b/_posts/2020-08-10-review-book-for-sales-of-strategists.markdown deleted file mode 100644 index 46b27a82f..000000000 --- a/_posts/2020-08-10-review-book-for-sales-of-strategists.markdown +++ /dev/null @@ -1,94 +0,0 @@ ---- -layout: post -title: "[리뷰] 전략가의 일류 영업" -subtitle: "영업과 마케팅의 시작부터 끝까지!" -categories: review -tags: review book 영업 전략 시크릿 스킬 노하우 -comments: true -header-img: img/review/review-book-for-sales-of-strategists-1.png ---- - -> `세종서적` 출판사의 `"전략가의 일류 영업(김유상 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-for-sales-of-strategists-1.png) - ---- - -본 도서는 에너지 기업 에넬엑스코리아 전무 김유상 저자님의 `영업 필살기 대공개`라고 요약할 수 있다. - -보통 전무급 정도 되는 분들의 시간은 황금 이상의 가치를 지니기에 좀처럼 도서로 만나보기 어렵다. 때문에 한 분야의 획을 긋는 거장들이 집필한 도서는 거장의 말년 혹은 사후에나 접하고 배울 수 있는데 본 도서는 현직 임원분의 살아있는 현장 인사이트까지 녹아있어 가치가 더해진다. 역시나 시간이 귀한 분인지라 장장 5년에 걸쳐 본 도서를 집필하셨다고 소개하고 있다. - -개인적으로 영업과 마케팅은 누구에게나 필요한 스킬이라고 생각한다. 책에도 소개되어있듯이 우리는 생각보다 일상에서 많은 영업(?)을 하고 있다. 관련 직군은 물론 심지어 가족, 친구, 애인이게도 영업이 필요할 때가 있다. - -무엇보다도 영업의 핵심은 결국 타인의 마음을 읽는 능력이 아닐까 생각한다. 단지 영업이라는 용어가 기업에 초점이 맞춰진다면 제품 혹은 서비스를 판매하여 수익을 극대화하기 위한 목적을 가질 뿐 결국 그 내부의 핵심은 `상대방(고객)의 마음을 읽는 능력`이라는 것을 이 책에서도 전하고 있다. - -사람의 마음을 읽는 능력은 언제나 중요하다는 바로 이런 점 때문에 본 도서는 굳이 영업 직군 종사자 뿐만 아니라 일상 생활을 살아가는 누구에게나 도움이 될 수 있는 책이다. 그동안 많은 인사이트를 주었던 [인간관계론](https://theorydb.github.io/review/2020/04/24/review-book-how-to-win-friends-and-influence-people/), [당신은 타인을 바꿀 수 없다](https://theorydb.github.io/review/2020/06/20/review-book-cant-change-others/), [설득의 12가지 법칙](https://theorydb.github.io/review/2020/07/13/review-book-12-laws-persuasion/)와 같은 사람의 마음과 심리를 읽는데 큰 도움을 주었던 책 못지 않게 본 도서도 큰 도움이 되었다. 단지 프레임이 기업과 이윤에 조금 더 집중되었을 뿐이다. - -본 도서에서 꼽고 싶은 백미 2가지가 있다. 하나는 `실전성`, 다른 하나는 `진솔함`이다. 영업 시크릿 노하우를 공개할 때마다 실제 대화 내용이 사례로 제시되어 딱딱한 경영, 마케팅, 영업 이론들을 확실하게 이해할 수 있도록 도와준다. - -전무님이라고 느껴지지 않을 정도로 본 도서에 쓰여진 글의 색은 마치 친한 동네 형님이 구수하게 본인 이야기를 들려주는 느낌이다. 높은 직위에 걸맞는 박학다식함과 딱딱함의 색이 입혀져 있을만도 한데 일부러 그런것들을 걷어내고자 노력한 저자의 의도가 느껴졌다. - -책을 덮은 후 참 많은 것을 알게 되었다. 영업과 마케팅의 핵심 이론은 물론, 실전에서 적용할 수 있는 살아있는 스킬, 그리고 디테일한 상황에서도 적용할 수 있는 기법들은 다른 영업 관련 도서에서는 결코 얻기 어려울 것이다. - -인상깊었거나 깨달음을 얻은 내용들을 위주로 아래와 같이 간략히 정리해본다. - -* __영업의 기본__ - - 책의 초미에 소개된 대화에 본 도서에 소개된 모든 노하우가 응축되어있다. - > (히든니즈 파악)요새 철강재 시장 가격이 많이 올라서 애로가 좀 있으실 것 같습니다... (전문성, 신뢰성)호주 선물 가격을 보면 확실히 추세는 강해보입니다... (주 관심사에 대한 정리된 인사이트를 듣고 좋아함. 실무자 개인 역시 회사에 인정받고 싶은 욕구가 가득하기 때문) - - 엉업의 분류 : B2C vs B2B, 국내 vs 해외, 일반 vs 기술 - - AI가 대체하기 힘든 IQ & EQ의 종합 영역으로 전망이 밝다. - ![AI](https://theorydb.github.io/assets/img/review/review-book-for-sales-of-strategists-2.png) - - 차별화 전략 및 가격 우위 전략 : 기술력, 신제품, 낮은 생산원가, 저렴한 원재료 구매 등 - - 시장 분석 : 경쟁사, 고객, 공급처, 잠재 진입자, 트리거, STP분석, 타깃고객 설정, 어디서 싸울것인가?(산업군, 고객규모, 지역 등) - - `STP(세그멘테이션)` : 소급, 설탕등의 제품조차도 일반 고객, 대용량 선호 고객, 브랜드 충성 고객, 최고급 지향 고객 등 다양한 클러스터가 존재 - + 인구통계학적 기준(나이, 성별, 지역) / 사회경제학적 기준(소득, 수준, 취향) / 소비자행동적 기준(브랜드 충성도, 구매성향) - - 5P : 제품, 가격, 어디에, 프로모션(홍보), 타깃 고객 - - 사업 전략 `5box` 체계도 - ![5box](https://theorydb.github.io/assets/img/review/review-book-for-sales-of-strategists-3.png) - - 타인 관점 이론과 `샐리-앤 실험` - 본인의 관점은 수익성과 장기 계약에 있지만, 상대는 합리적 명분과 사회적 효과에 있다. - > 샐리가 공을 바구니에 넣고 앤은 바구니에 넣은 공을 꺼내 박스에 옮긴다. 샐리는 어디서 부터 공을 찾을까? - 당연히 샐리 입장에서는 본인이 공을 넣었던 바구니 부터 찾겠지만 어린 아이들은 박스부터 찾는다고 대답한다. 본인이 아닌 상대관점에서 바라볼 줄 모르기 때문. - - 레토릭법(심리학 전략 스킬) : "~해야 하지 않을까?" 등의 질문형으로 대화하면 상대를 존중하는 느낌과 결정권을 주기에 업무 효율을 높힐 수 있다. - - 함무라비 대화법 : 물러서기 힘든 조건에서는 카운터를 요구할 준비가 되어있어야 한다. 예를 들어 가격 인하에 응대 시 주문수량 혹은 납기, 품질을 요구한다. - -* __시크릿 영업스킬__ - - 10시간 중 7시간은 머리를 정비하는데 써라. - + 새 아이템, 판매전략, 새 타깃 고객, 기존 고객사, 포지셔닝 & 어프로칭 전략(가성비 vs 고가 프리미엄 등) 등을 점검 - - 업종별 영업특성 파악이 중요 - + KSIC 기준 산업군 77개, 세부 분류 495개 존재(식음료, 소비재, 반도체, 통신, 철강, 문화 등) - + B2C의 경우 개인이 엔드포인트이지만 중간에 대리점, 매장 등 `유통망`이 끼어있다. - - `NDR` 이론(니즈, 결정권자 파악, 신뢰확보) - 잘 숙지하면 어느날 불쑥 찾아올 기회에 대비한 효율적인 생각의 tool이 된다. - > 예 : 고객사의 핵심 니즈는 공장 지붕 개보수 이슈에 대한 체크임을 파악 후, 왜 지붕 개보수가 잦은지 이유를 묻고 경청함 / 그 제품은 C 이사님의 결정이 중요하지요 등 - - 시장 생태계 완전 분석 : 소소한 부재료 스펙, 제품들의 시장 가격 역사 연도별 파악 등 - - 술 문화에서 `점심 문화`로 : 다과나 음료를 주며 설득 시 20% 설득 향상, - > 제 책 사면서 한권 더 샀습니다. - - 고객 결정에 영향을 주는 인플루언서, 경쟁사 제시 가격 획득 및 예측, 고객의 업무스타일, 히든 니즈 등의 파악이 중요 - - 경쟁 우위를 위한 요소들 : 시간, 인력, 경쟁력, 광고 홍보비, 판관비 등 vs 전략 - - 스토리텔링 : 개연성과 임팩트 - > 불이행 패털티가 이번 매출액보다 클 정도로 민감한 건입니다, 부사장님이 매식간 보고하라고 할 정도로.., 고객이 납기 지연으로 작년 손해액만 15억 정도.. - - 고객 접근 전략 : 기존 고객사 연결, 영업 파트너 및 대리점 연결, 콜드 콜(첫미팅 약속만 성사되면 목표 달성), 인맥 네트워크, 공개입찰 참여 등 - - 제안서 : 제품, 조건, 스펙, 기능, 가격, 수량, 납기, 부가조건 등 - + 경쟁사 제안 조건 예측 준비, 2차 네고에 대비, 유효 기일 반드시 명기, 직접 만나서 전달, 강조하고 싶은 점 별첨 삽입 등 - - 고객관리(CRM) - + 고객 입장에서의 상황 분석 툴, 경쟁사 정보 활용이 중요 - + 진솔함을 통해 신뢰를 얻으려면 할 말과 안해도 될 말을 잘 구분하는 것이 필요하다. - + 고객 생애 가치(CLV, LTV) 개념이 포함된 보고서 활용 - + 클레임(객관적인 문제점) vs 컴플레인(태도 등 주관적인 문제점) - -* 권위자 인터뷰 & 맺음말 - - 중요한 포인트는 `서로 다름`을 이해하고 공감하려는 노력, 변화를 읽어내는 통찰력, 빠른 의사결정과 믿음 - - 전략은 목표-싸울곳-이기는방법-필요한 자원과 역량-시스템 5가지를 일관성있게 구성하는 것 - - 적극적인 `포기` : 이것을 반드시 이루기 위해 저것은 포기할거야. - - 상대의 `대응`하는 수를 읽을 수 있는 능력 - - 현 상황을 가장 객관적으로 읽고 `한 발` 앞서 변화하려는 부단한 노력 - - 일할 맛 나는 조직 : 합리적 보상, 직무 적합성, 권한 위임 - > "시키는 대로 모조리 다 했으니 결과가 좀 좋지 못해도 괜찮겠지." 심리를 경계해야 함 - -이 책은 영업, 마케팅 직군 종사자에게 자체로도 훌륭한 실무 바이블임과 동시에 관련이 적은 일반인들에게도 유용하다. 우리는 이익 창출에서 자유롭기 어렵고, 무엇보다 살아가는데 있어 사람의 마음을 읽을줄 아는 스킬보다 근사한 것은 없기 때문이다. - - -* [책소개 - 전략가의 일류 영업](http://www.yes24.com/Product/goods/91199816) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. \ No newline at end of file diff --git a/_posts/2020-08-13-review-book-miracle-equation.markdown b/_posts/2020-08-13-review-book-miracle-equation.markdown deleted file mode 100644 index 8603210cb..000000000 --- a/_posts/2020-08-13-review-book-miracle-equation.markdown +++ /dev/null @@ -1,153 +0,0 @@ ---- -layout: post -title: "[리뷰] 미라클 모닝 기적의 공식" -subtitle: "The Miracle Equation" -categories: review -tags: review book 기적 공식 자기계발 실천 가능성 감정 신념 노력 습관 자격 -comments: true -header-img: img/review/review-book-miracle-equation-1.png ---- - -> `한빛비즈` 출판사의 `"미라클 모닝 기적의 공식(할 엘로드 저/김잔디 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-miracle-equation-1.png) - ---- - -본 도서는 `이루기 어려운 목표에 현실적으로 도달할 수 있도록` 도와주는 책이다. 여기서 목표 수준은 책의 제목에 사용되었듯 기적에 가까운 목표이다. - -리뷰를 시작하기에 앞서 먼저 기적이라는 단어에서 풍기는 일반적인 선입견과 이 책에서 사용하는 기적이라는 단어의 뜻이 다름을 강조하고 싶다. - -개인적으로 처음 책을 접했을 때 마치 사이비 종교같은, 그래서 사기칠 때 자주 사용되는 단어같은 느낌의 기적이라는 단어 때문에 거슬렸기 때문이다. - -하지만 이 책에서 언급하는 기적의 의미는 종교적인 것이나 초월적인 것이 아님을 분명히 하고 있다. 기적이라는 단어를 사용해야 할 만큼 놀라운 목표를 이루기 위한 표현일 뿐 목표는 어디까지나 가시적이고 측정 가능한 것임을 여러차례 강조한다. - -이 책에서 말하는 기적을 예로 들면 책의 7장 서두에 소개된 것 처럼 다음과 같은 것들이다. - -> 빈센트 반 고흐는 비록 생전에 겨우 한 점의 작품을 그것도 친구에게 팔았지만 오늘날 한 점당 가격은 수백만 달러에 달한다. - -반 고흐의 삶은 너무 애잔하다. 과거 [늦깎이 천재들의 비밀](https://theorydb.github.io/review/2020/05/29/review-book-range/) 리뷰에서 언급하기도 했는데 34세에 유명화가 되기까지 학생, 미술상, 교사, 서점 점원, 목사, 전도사 등 다양한 직업속에서 방황하다가 37세에 숨을 거둔다. - -> 무엇이 그의 유작을 위대하게 했을까? - -마찬가지로 월트 디즈니, 타일러 페리, 마이클 조던의 성공 이면에는 늘 주위의 비아냥과 안될거라는 선입견, 반대가 존재했다. 이는 이제는 식상할 정도로 우리에게 잘 알려진 일화들이다. - -> 하지만 그들은 `왜? 왜 계속했을까?` - -바로 이 질문에 대한 답이 본 도서에서 말하고자 하는 핵심이다. - -모든 자기계발서는 사기 혹은 영웅담에 가까운 공상 소설이라는 지독한 선입견이 있는 내게 이번 책은 그 선입견을 상당부분 덜어주는 진솔한 책이었다고 평하고 싶다. - -단순히 저자가 교통사고로 죽거나 불구가 될 뻔한 악재를 극복한 점, 생존률 30%에 불과한 암을 투병하고 이겨낸 점, 20대 초반 사내 최고의 영업 실적을 달성한 점 때문에 확신을 갖는 것은 아니다. - -다만 `현실과 동떨어지지 않은 하루내지 월 단위의 가시적인 목표 수립과 측정 방법, 원론적인 공식을 현실로 이어줄 수 있는 직접적인 사례와 저자 경험의 공유` 등 책에서 전달하는 메시지가 지극히 현실적이고 진솔했기 때문이다. - -더불어 저자가 운영하는 26만명 회원의 페이스북 커뮤니티 [The Miracle Morning™ Community](https://www.facebook.com/groups/MyTMMCommunity/)에 올라오는 살아있는 증거들은 보다 신뢰를 더해준다. - ---- - -책에서 제시하는 목표를 달성하기 위한 답(기적의 공식)은 매우 간단하다. - -> 확고한 `신념`을 가지고 남다른 `노력`을 기울여라. - -이토록 쉬운 말을 실행하기 위한 구체적인 실행 방법은 기적의 공식을 만드는 방법과 실천하는 방법 두가지로 나눌 수 있겠다. - -* __기적의 공식 템플릿__ : [다운로드](https://www.tmebonuses.com/miracle-equation-bonuses28168739) - 1. 나는 _________ 한다(6장에서 수립한 사명 삽입)는 확고한 신념을 지킬 것이며, 다른 선택은 고려하지 않고 사명을 달성할 때까지 무슨 일이 있어도 남다른 노력을 기울일 것이다. - 2. 내가 사명에 전념하는 이유는 ___________이다(깊은 의미를 담고 있는 이유, 즉 사명을 추진하거나 얻는 과정에서 경험할 가장 중요한 효과를 삽입). - 3. 사명을 필연적으로 달성하기 위해, 결과에 감정적으로 집착하지 않고 _______(일자와 시간 삽입)에 _________(프로세스 삽입)하는 데 전념할 것이다. - 4. 나는 사명에 전념하며 매일 기적 전문가로 살아갈 것이다. 지구상의 다른 어떤 사람들에게 못지않게 가시적이고 측정 가능한 기적을 일으키며 원하는 모든 대상을 얻을 가치와 자격, 능력이 있기 때문이다. - * 책 내부에 저자가 직접 작성한 예문이 소개된다. - -* __실천방법__ - 1. 첫 사명 결정(목표) - 2. 프로세스를 미리 결정 - 3. 암송(하루도 빠짐없이) - 4. 책임(주위 가족 혹은 모임에 공언) - 5. 평가(매일) - 6. 평가(프로젝트 종료 후) - -핵심은 보다시피 매우 간단하고, 뻔하며, 다소 유치한 단어도 섞여있어 다른 자기계발서들과 다를바 없다 생각할 수도 있다. 지극히 일반화, 단순화되었기 때문이다. 하지만 그 저변에 거미줄처럼 얽혀있는 책에서 강조하는 지식을 알게된다면 저 유치한 공식이 달리보일 것이다. - -예를 들어 위 실천방법 3번의 매일 "암송"은 유치함을 떠나서 군사 독재 시절을 떠올리게 할 수도 있고, 종교 기도문이 떠오르기도 하며, 군대에서 점호시간에 암송하는 계명 같기도 하다. - -하지만 더 암송의 행위 안에는 `자신과의 대화`가 담겨있다. - -책의 표현을 빌리자면 `연인 사이에도 머리로는 이해되지만 감정으로는 이해되지 않는 행위`들이 있다. 반면 감정으로도 이해될 때가 있는데 내가 세운 목표는 그 정도 수준으로 감정적으로 이해가 되어야 함을 강조한다. - -목표를 이루지 못하는 이유는 자신의 감정을 이해하지 못하기 때문인데 충분히 `감정으로도 이해되는 목표`를 세울 것을 강조하고 있는 것이다. - -더불어 자존감이 낮은 사람에게 "나는 사랑받을 자격이 있어."라는 말을 반복하게하면 굉장히 기분이 나빠진다는 연구 결과를 예로 든다. 잠재의식이 거짓말에 저항하여 현재 신념 체계와 충돌하게 된다. 즉, 스스로에게 맞지 않는 `거부감이 드는 목표 수립을 지양`해야 한다. - -이런 여러 측면에서 암송 행위는 유치해보이지만 자신의 감정과 충분한 대화를 통해 실현 가능한 목표를 수립하고 스스로 잘못된 목표를 수정하는 과정을 거치는 중요한 과정이다. - -이렇게 스스로 충분히 설득된 목표로 잠재의식을 자주 건드리면 결국 수용되게 마련이다. 이유가 심장을 뛰게 하면 방법에 다리가 생긴다. - -개인적으로 위의 기적의 공식을 만드는 행위 하나만으로도 우리의 삶이 크게 바뀔 것이라 생각했다. 사람은 망각의 동물이기에 저 하나만 확실히 알아도 매일 반복되는 습관이라는 잠잠한 호수에 큰 울림을 주는 돌을 던지는 의미가 될 수 있지 않을까? - ---- - -더불어 개인적으로는 4장 `감정에 휘둘리지 않는 법`이 책의 백미라고 생각한다. 목표에 집착하면 내면의 감정을 소홀히 하다 그르치기 일쑤인데, 다른 자기계발서와는 달리 이 책에서는 상당한 지면을 할애하여 자신의 감정을 파악하고 다스리는 법을 매우 상세히 제시한다. - -* 부정적 감정 : 분노, 좌절감, 슬픔, 비애, 두려움, 실망, 지루함, 증오, 짜증, 당황, 죄책감, 걱정 등 -* 속수무책이라는 느낌은 아무도 좋아하지 않는다. 하지만 고통의 저편에는 `빛`이 존재한다. -* 감정적으로 최적의 상태가 아닐때는 당신에게 어떤 `가능성`이 있는지 생각하지 않는다. -* 감정은 외부와는 별 상관없고 우리 내면에서 벌어지는 일과 관련이 있다. - - 즉, 스스로 만들어 냈고 얼마든지 `선택 가능`하다. -* `5분의 법칙` : 속상해해도 되지만, 5분을 넘기면 안된다. - - 휴대전화로 5분 타이머를 맞추고 벽에 주먹질을 하든 별 짓을 다해도 된다. 단, 5분만 가능하다. -* 바꿀 수 없다.(`수용`) - - 타이머가 꺼지면 바꿀 수 없다고 외치고 바꿀 수 없는것에 감정과 에너지를 소모하는 무의미하고 고통스럽기만 했다는 현실을 깨닫는다. - - 모든것을 인정하겠다는 수용이라는 출입구에 다다르면 평정심을 선물로 받을 수 있다. -* `평정심`은 의식의 수준이다. 원하는 감정을 고를 수 있는 공간이다. - - 충격을 받으면 다른 대상으로 관심을 돌리기 위해 다양한 비행을 저지르게 된다. - - 통제할 수 있는 일에 에너지를 집중할 수 있다. -* 문제는 없다. - - 우리가 그것을 문제라고 인식하면 그 때 문제가 된다. - - 마음에 안드는 상황마다 문제라는 꼬리표를 달고 이미 쌓인 문제에 또 하나를 얹히면 너무 바빠서 10등급을 삶을 창조할 시간이 없게된다. - -그 외에도 다른 명저들에도 공통적으로 언급되는 소중한 삶의 지혜들이 소개되어 있다. - -* `습관`의 중요성 : 반복과 자동화 - - 대부분 매일 같은 생각을 한다. 습관적인 순서대로. -* 바꿀 수 있는(`통제`할 수 있는)것에 집중하라. -* 가장 피하고 싶은 길이 제일 빠른 지름길이다. -* `뇌`는 안전 지대에서 벗어나는 일이라면 삼엄한 경계 태세를 갖추고 이를 피하고자 한다. - - 우리는 다시 상처받을 까 두려워서 위험을 감수하지도, 기회를 잡으려 하지도 않는다. -* 모두가 힘들어할 때 딱 한발 자국만 더 -* 스스로를 다른 사람이 좌우하게 방치하면 본능이 억압되고 변형된다. -* 누구도 할 수 없는 `나만이` 살아온 삶, 경험, 개성, 특징에 Key가 숨어있다. -* 실패하려야 실패 할 수 없는 패러다임 : 감정적인 여유 + 물리적 공간 -* "즉시"라는 시간 개념은 가치있는 목표에 도달하기엔 어울리지 않다. - -* 우선순위의 중요성 : 한 가지가 넘는 종목에서 금메달을 딸 수는 없다. - - 가족, 건강, 친구, 경제력, 성취, 취미 ? - - 정말 가족이 최우선 가치라면 다음과 같은 생활이 가능하다. - + 아침 제일 먼저 눈을 떠 업무 서적보다 육아, 가족 서적을 읽는다. - + 아이들의 기분 좋게 깨워준다.(칭찬과 가능성을 말해주면서) - + 하루의 시작을 아이들과의 놀이로 시작한다.(소모되지 않은 충전된 아빠로) - + 아이들에게 평소 최선을 다했기에 하루 정도는 베이비시터에게 맡기고 부부 데이트를 즐긴다. - -* `최우선 목표`를 정하는 방법 - - 건강과 몸매, 재미, 가족, 발전, 친구, 영성, 일, 기여, 돈,.. 주제 각각에 처음 떠오르는 것은 무엇인가? 개선하고 싶은것은 무엇인가? - - 이 모든것을 달성할 수 있게 해주는 자질을 길러줄 목표 한 가지는 무엇인가? - - 신념을 가진다. (종교일수도, 롤모델일수도, 영화 매트릭스 속 네오일수도 있다.) - - 롤모델에 대한 조사 + 신념 + 노력 - - 정량화(수치화)하면 목표가 눈에 보여 노력하기 쉽다. - - Life S.A.V.E.R.S(자기계발수행법) : 침묵, 확신의 말, 직관의 시각화, 운동, 독서, 기록 - -인상적인 부분에 대한 소개는 이 즈음에서 마치지만 책의 곳곳에 여기서 언급하지 않은 가치 있는 내용들이 숨어있음을 강조하고 싶다. - ---- - -다음으로 전체적인 구성을 살펴볼까 한다. 1 ~ 6장은 목표를 이루기 위한 선수 지식 혹은 사례들이 소개되는 뜸을 들이는 과정이고, 7~10장은 구체적인 전략을 통해 목표를 만들고 실행하기 위한 프로세스를 개발하는 실전편이다. - -책의 내용은 재미있고 흥미로워 읽는 것에만 집중하면 3시간이면 충분하다. 하지만 스스로 일상에서 고민해왔던 부분과 충돌하거나 그동안 몰랐던 프레임을 발견하여 숙고하다보면 일주일 정도의 시간이 걸린다. 특히, 실전편(7~10장)에서 자신을 돌이켜보고 목표를 설계하는 과정을 포함한다면 더 많은 시간이 걸릴 수도 있다. - -그동안 명저들에서 소개된 삶에 큰 도움이 되는 개념들은 물론 위에서 언급한 5분의 법칙과 같은 신선한 내용들이 가득하기에 목표 달성 및 자기계발 목적이 없는 분들도 꼭 한 번 읽어보시길 추천드린다. - ---- - -* [책소개 - 미라클 모닝 기적의 공식](http://www.yes24.com/Product/Goods/91090423) - - diff --git a/_posts/2020-08-14-review-book-miss-everything.markdown b/_posts/2020-08-14-review-book-miss-everything.markdown deleted file mode 100644 index e4fb56458..000000000 --- a/_posts/2020-08-14-review-book-miss-everything.markdown +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: post -title: "[리뷰] 별, 걔 다 그립네" -subtitle: "한 줄 노랫말이 백 마디 위로보다 나을 때" -categories: review -tags: review book 노랫말 가사 감상 인생 위로 시 밤하늘 사랑 추억 회상 이별 아픔 -comments: true -header-img: img/review/review-book-miss-everything-1.png ---- - -> `한빛비즈` 출판사의 `"별, 걔 다 그립네(밤하늘 저/차희라 그림)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-miss-everything-1.png) - ---- -본 도서는 작곡가이자 피아니스트로 활동 중인 밤하늘의 `전하지 못한 노랫말 모음집`이다. - -> 어떤 가사들은 제가 유리병 속에 넣어둔 편지입니다. 매일 밤 천장에 그리운 이의 얼굴이 파노라마처럼 펼쳐져도, 오랜 날 서성이다 끝끝 내 전하지 못하고 불현듯 바다에 띄워 보낸 파도에 넘실대고 있는 마음입니다. -> 망망대해에 내던져놓고선 먼 백사장을 홀로 거니는 그이의 발치에 우연히 닿아 나의 고백이 들키기를 소망하던 염치없는 마음들이 `모래알 한 알만큼이라도 당신께 가 닿기를 바랍니다`. - -머리말에 수록된 글의 일부이다. 그 어떤 설명보다 느낌만으로도 본 도서를 잘 설명할 수 있는 글귀인지라 리뷰 첫 부분에 인용하고 싶었다. - -시, 소설 등 문학 작품의 리뷰란 늘 어려운일인 것 같다. 최근 봉준호 감독의 아카데미 시상식 발언으로도 유명했던 "가장 개인적인 것이 가장 창의적인 것"이 적용되는 동일한 세계가 아닐까? - -때문에 리뷰를 작성한 사람의 `주관화를 객관적`으로 접한다면 왜곡과 선입견이라는 색이 덧칠될 수 있다는 우려가 든다. 그렇기에 먼저 책에서 느낀 가장 인상적이었던 문구를 먼저 인용하였다. - -저자 밤하늘(본명 김하늘)은 가수 수지(본명 배수지)의 "잘 자, 내 몫까지" 를 쓴 작사, 작곡가이기도 하며 혼성 듀오 모자루트에서 작사, 작곡, 피아노를 맡고 있다. - -이 책은 저자가 그간 정성들여 써 온 가사들의 모음집으로 마치 시집처럼 구성되어 있다. 본문의 가사말을 읽다보면 `마음`에 잔잔한 파도를 일으키는 문구도 있고, 세상을 다른 시각으로 생각하고 바라볼 수 있는 `프레임`을 선사하기도 한다. - -> 시집과 비교하면 장, 단점이 공존한다. - -개인적으로는 스스로 문학 작품을 평가할 때 제일 중요한 기준을 전달력으로 삼기 때문에 노랫말 보다는 머리말의 시적 표현이 읽기 좋았다. 노랫말은 작곡 영역의 선율이 만날 때 작품이 비로소 완성된다는 제약이 있기 때문인지, 아니면 랩 장르에서 자주 쓰이는 라임 등의 장치 때문인지, 혹은 최신 트렌드 성향 때문인지 오히려 작자의 마음과 심경과 상태가 잘 전달되지 않는 한계가 있어 보인다. - -그대신 시집과 같은 문학작품을 읽을 때와는 또 다른 `두가지 독특한 묘미`가 있는 것 같다. - -하나는 가삿말 덕분에 또 다른 생각이 꼬리를 물고 나타나 우리를 `끊없는 상상의 나래`로 이끌어준다는 점이다. 꼬리를 물고 연결된 상상이 있었던 그 시절. 그 당시의 노래. 그 당시의 추억. 그 당시의 감정으로 여행을 떠날 수 있다는 점이 노랫말을 읽는 매력이다. - -> 마치 소중했던 추억이 담겨있는 빛 바랜 사진을 선명하게 해주는 느낌이랄까? - -또 다른 하나의 묘미는 `미완성의 미학`이다. 노랫말이라는 가사에 우리 상상을 덧대어 볼 수 있다. 즉, 선율을 입혀보고 바꿔볼 수도 있다. 시집은 작곡 파트에 해당하는 선율이 없기 때문에 이런 유형의 상상에는 제약이 있다. 하지만 음악을 좋아하는 분이라면 또 많은 노래를 들어왔던 분이라면, 가사에 어떤 멜로디가 어울릴지 상상해 볼 수 있는 즐거움이 있다. - -4부 "선율을 입은 가사들" 편에는 각 페이지에 `QR코드`가 인쇄되어 있어 저자가 완성한 노래를 들을 수 있다. 그렇지만 난 아직 노래를 듣지 않았다. 완성된 노래를 들으면 상상력이 자극되지 않기 때문이다. 노래를 좋아하는 사람으로써 충분히 상상의 선율을 바꿔 입혀본 후 충분하다 싶을 때 저자는 어떤 선율을 입혔는지 확인해보려고 한다. -![QR코드](https://theorydb.github.io/assets/img/review/review-book-miss-everything-2.png) - -이 책에 흥미를 느낀 분이라면 위에 언급한 두가지 묘미에 초점을 맞춰 읽어보시길 바란다. 이 책을 읽는 시간대는 `밤`이 좋다. 1부의 제목은 "새벽 두 시 반"인데 실제로 이 시간에 이 책을 읽어보았다. - -밤은 우리의 집중력을 최고로 올려주고 감수성을 풍부하게 해주기에 상상의 여행을 떠나기엔 최고의 시간대이다. 밤이 주는 선물을 보다 활용하고 싶다면 [야행성 인간을 위한 지적 생산술](https://theorydb.github.io/review/2020/08/03/review-book-for-noctural-humans/) 리뷰를 클릭하시기 바란다. - -작품 특성 상 분량이 짧다. 그러기에 짧은 문장 속에 녹아있는 함의(含意)를 충분히 느끼고 저자가 고민한 기법과 장치를 풀어가는 재미를 느끼고 싶다면 `천천히` 음미하시길 권유드린다. - -돌이켜보니 결혼도 하고 아이도 낳고 어느덧 아저씨가 되어버렸다. 감수성도 무더져버렸고 최신 유행 가요에 대한 정보는 아는 것이 없다. 흥얼거리는 노래는 비교적 최근이라 한들 10년 전 노래다. 최근 TV에 나오는 가수들을 안다는 것, 또 그들이 부른 새로운 노래를 흥얼거릴 수 있을 만큼 많이 듣고 외운다는 것은 시간적으로도 경제적으로도 사치가 돼버린지 오래다. - -그렇게 일종의 단절을 겪으며 살다가, 노랫말을 `귀로만 들어오다가, 눈으로 보니` 느낌이 새롭다. 앞서 언급한 대로 가삿말에 선율을 입히는 재미가 있다. 그리고 비슷한 느낌의 선율 혹은 노랫말을 만나면 그 감정을 만났던 시절로 상상 속 여행을 떠날 수 있다. - -간만에 깊은 밤 한밤 중 과거의 추억을 떠올려보며 가슴 뭉클해지고 때로는 터질 것 같은 아련함에 잠시나마 복잡한 일상을 탈출해 볼 수 있었다. 상상 속 여행을 통해 잠시나마 일탈하여 아련한 추억 여행을 떠나보는 것은 어떨까? - - -* [책소개 - 별, 걔 다 그립네](http://www.yes24.com/Product/Goods/91284747) - - diff --git a/_posts/2020-08-15-review-book-pungent-equation.markdown b/_posts/2020-08-15-review-book-pungent-equation.markdown deleted file mode 100644 index fbfff7934..000000000 --- a/_posts/2020-08-15-review-book-pungent-equation.markdown +++ /dev/null @@ -1,111 +0,0 @@ ---- -layout: post -title: "[리뷰] 톡 쏘는 방정식" -subtitle: "삶이 풀리는 수학 공부" -categories: review -tags: review book 수학 방정식 삶 등식 인공지능 히든피겨스 주사위 -comments: true -header-img: img/review/review-book-pungent-equation-1.png ---- - -> `지노` 출판사의 `"톡 쏘는 방정식(김용관 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-pungent-equation-1.png) - ---- - -본 도서는 `방정식을 왜 배워야하는지 진정한 의미를 알아가기 위한 수학 여행서`이다. - -살면서 방정식에 대한 강렬한 인상을 받은적이 2번 있다. 한번은 방정식에 깊은 실망을, 다른 하나는 방정식의 위대함을 실감했던 경험이다. - -학교에서 죽어라고 근의 공식을 외우고, N원 일차 연립방정식을 풀었건만 지나가는 동네아저씨가 하신 말씀이 매우 심플했지만 강렬했다. - -> 방정식 그까이꺼 구멍가게에서 거스름돈 계산할 때나 쓰지 어따 쓰냐? - -생각해보니 일상 생활을 살아가는데 정말 쓸모도 없는 것을 배우느라 왜 이 고생인지 몰랐다. - -반면 AI에 깊은 관심을 가지고 학습을 시작했을때에는 방정식의 위대함을 느낄 수 있었다. 알파고의 등장이 놀라웠던 것은 이세돌을 뛰어넘었다는 것 자체보다 활용의 미학이라 해야 할까 기존에 이미 통계학이나 머신러닝 진영에서 흔했던 개념들을 바둑의 승부에 녹였다는 점에서 충격을 받았다. - -AI에서 흔히 쓰이는 기술인 머신러닝은 쉽게 말하면 본 도서에서 다루는 주제인 방정식과 관련이 있다. 차이가 있다면 방정식을 활용해서 해를 구하는 용도로 활용한다기 보다는 데이터를 통해 방정식을 세우다는 점이다. 엄밀히 수식은 보통 사람이 세우고 반복을 통해 최적의 계수, 절편등의 상수항을 구한다. 이를 학습이라 한다. - -그렇게 어릴적 비웃음을 받았던 방정식은 미적분과 함께 딥러닝의 오차역전파법, 경사하강법에 쓰였다. 내가 공학도이기 때문일까? 어쩌면 방정식의 해를 구하는 것보다, 식을 세우는 것보다, 활용이 더 중요할지도 모른다고 생각했다. - -> 이처럼 위대한 방정식을 우리 생활에 `어디에 사용하면 좋은지` 왜 아무도 알려주지 않는가? - -이 책의 핵심을 요약하자면 위 질문에 대한 답의 기록이다. - -방정식이 우리 생활의 어느 영역에 깊게 침투해있는지 살펴보면서 그 위력을 실감할 수 있는 구성으로 되어있다. 더불어 학교에서 배우지 못한 방정식의 진정한 의미를 되새길 수 있다. - -더불어 방정식의 풀이에 대해서도 다룬다. 간단한 1차방정식에서 출발하여 4차방정식까지 어떻게 해를 구해야 하는지, 5차방정식에는 일반적인 근의 공식을 찾을 수 없다는 지식까지 가벼운 여정을 떠나볼 수도 있다. 중국의 구장산술에 나온 방식대로 방정식의 해를 구함으로써 방정식이라는 용어의 기원을 알아볼 수 있는 과정도 포함되어 있다. - -마지막으로는 AI와 방정식의 미래에 대해 살펴본다. 뉴턴의 법칙이 등장한 이후 방정식이라는 절대반지 힘의 위력을 알고 이를 얻기 위해 그간 어떤 노력을 해왔는지 알 수 있다. 일반적으로 해를 구하거나 식을 세우는데 집중해왔던 지금까지의 발전 과정과는 달리 AI의 등장으로 데이터로부터 식을 세우게 되며 방정식을 또 다른 각도로 바라볼 수 있게 되었음을 강조하며 새로운 시대에 대비하여 방정식을 어떻게 활용할 것인지 정리하며 여정을 마무리 한다. - -방정식은 밀레니엄 7대 수학 난제에 2개의 문제가 포함될 만큼 무거운 주제가 될 수도 있으나 이 책에서 다루는 설명 수준은 그렇지 않다. 본 리뷰에서 여정, 여행이라는 단어로 표현한 이유이기도 하다. 기호학이나 해석학을 심도있게 알아할 수준의 수식이 난무하지 않고, 해를 구하기 위한 깊이있는 지식이 없어도 된다. 그저 가볍게 교양수준으로 편히 누워서 읽을 수 있는 수준으로 구성되어있다. - -온라인 서점에 제공되는 목차나 미리보기로는 내용을 파악하는데 어려움이 있을 듯 하여 책에서 다루는 굵직한 개념들을 아래와 같이 요약하니 참고하시기 바란다. - ---- - -* __어디에 쓰일까?__ - - 아인슈타인 장 방정식 - 일반 상대성 이론과 관련된 방정식으로 해를 풀자 항 하나의 값이 무한이 되는 특이점을 가졌다. 이로부터 `블랙홀`이 예견되었고 실제 발견되었다. - - 블랙-숄즈 방정식 : 금융시장 파생 상품의 옵션 가격을 결정하는데 사용 - - 나비에-스토크스 : 점성을 가진 유체의 운동을 표현한다. 겨울왕국의 눈 송이 구현에 활용됨 - - 히든피겨스 : 타원형으로 빙빙 도는 우주선을 포물선처럼 지상으로 떨어뜨리는 방법 - + 캐서린 존슨이 22개의 방정식과 9개의 오차식으로 우주 귀환 문제를 해결 - - 걷고싶은 거리의 방정식(유현준, 도시는 무엇으로 사는가) - > 공간의 속도 = {(차도면적x차 평균속도)+(인도면적x보행속도평균)+(데크면적x1km/h)+(주차장면적x1km/h)} / (전체면적) - - 최적의 배차간격(대한토목학회지 2018년 2월호) - > 배차간격(분/초) = {60 * 혼잡도 * 차량용량(대/시)} / 최대재차수요(인/시) (단, 배차간격 < 정책배차간격) - > 투입차량대수 = 왕복운행시간 / 배차간격 - - 히트곡 방정식 - > (박자 * w1) + (화음 * w2) + ... + (소리세기 * w23) - - 그 외 맛있는 피자 방정식, 그래프 및 디자인 등에 활용 - - -* __방정식의 의미__ - - 등호(=)의 특징 - + 결과만 본다. 과정은 보지 않는다. 방향성이 있다. 변형과 조작이 가능하다. 즉, 해를 구할 수 있다. - + 러셀과 화이트헤드의 수학원리 - - 등식 : 등호(=)를 포함하는 식 - + 참 : 0x = 0 (x에는 어떤수를 넣어도 참이 성립하므로 `항등식, 부정`) - + 거짓 : 0x = 3 (x를 만족하는 수는 하나도 없으므로 `불능`) - + 참 or 거짓 : 2x + 3 = 7 (해가 유한하다. `방정식`) - - 방정식 : 네모방(方) + 길정(程) + 수식 - + 중국의 구장산술에는 삼원일차연립방정식의 풀이법이 나오는데 네모표를 이용해서 현대의 방식과는 또 다른 방식으로 푸는 방법이 소개된다. 이 네모표를 이용한다는 것에서 방정식이 유래되었다. 덕분에 음수가 출현한다. - - -* __어떻게 풀까?__ - - 수치대입법 : X에 숫자를 하나씩 넣어보기 - - 식의 형태를 변형, 조작하기 - - 2차방정식의 해 : 1차방정식의 해를 활용 - > 일차식 * 일차식 = 2차식, 인수분해, 완전제곱식(근의공식) - - 3, 4차방정식은 치환을 이용한 해법을 통해 2차방정식으로 변형 - - 5차방정식은 근의 공식과 같은 해법이 존재하지 않음이 증명됨(아벨) - + 갈루아가 근을 구하는 대신 방정식의 구조를 살피면서 `군론`이 탄생 - - 방정식은 새로운 수의 공장 : 음수, 무리수, 허수, 복소수가 방정식의 풀이 과정에서 만들어짐 - - -* __절대반지의 힘__ - - 미지의 대상을 알 수 있는 방정식을 갈망하고 욕망하는 사람들이 잇따랐다. - - 뉴턴의 만유인력 법칙 = 갈릴레이의 지상역학(속도, 가속도, 이동거리) + 케플러의 천상역학(궤도, 주기) - - 제2의 뉴턴을 향해 - + 맥스웰방정식 = 전기와 자기의 현상 기술. 빛 역시 전자기파의 하나임을 의미. - + 양자역학(슈뢰딩거의 파동 방정식) = 미시세계. 전자를 파동으로 다뤄 전자의 상태를 나타냄. 해가 여러개 존재하며 각각이 전자의 상태를 나타내는 확률. - + 사회학 도덕성 방정식, 생태학 로지스틱 방정식, 군사학 오시포프 방정식 - - 인공지능 - + 우리나라 슈퍼컴퓨터 누리온 연산속도 (25.7 페타플롭스) = 지구 전체 70억명이 420년 동안 수행해야 할 계산을 1시간 내에 마칠 수 있다. - + 돈만 내면 돈 낸 사람의 이름을 새긴 정리를 보내주는 사이트 : - + [`울프럼알파`](http://wolframalpha.com/) : 방정식을 대입하면 해를 찾아준다. 인수분해도 해주고, 그래프도 그려준다. - + 사람이란 무엇인가?에 대한 존재론적 고민이 필요한 시점 - ---- - -![오일러](https://theorydb.github.io/assets/img/review/review-book-pungent-equation-2.png) - -이것으로 요약을 마친다. 수학과 방정식에 관심이 많은 분들은 물론 이 멋진 학문을 제대로 활용할 수 있는 방법이 궁금한 분들께 일독을 권한다. - - -* [책소개 - 톡 쏘는 방정식](http://www.yes24.com/Product/goods/91072396) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. \ No newline at end of file diff --git a/_posts/2020-08-18-review-book-between-40s-and-50s.markdown b/_posts/2020-08-18-review-book-between-40s-and-50s.markdown deleted file mode 100644 index 75088991d..000000000 --- a/_posts/2020-08-18-review-book-between-40s-and-50s.markdown +++ /dev/null @@ -1,103 +0,0 @@ ---- -layout: post -title: "[리뷰] 사십과 오십 사이" -subtitle: "4050세대 인생 새판 짜기 프로젝트" -categories: review -tags: review book 인생 40대 50대 미래 전략 노후 브랜드 감정 실행 직업 -comments: true -header-img: img/review/2020-08-18-review-book-between-40s-and-50s-1.png ---- - -> `성안당` 출판사의 `"사십과 오십 사이(김병숙 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-08-18-review-book-between-40s-and-50s-1.png) - ---- - -본 도서는 `새로운 삶을 개척하려는 4050 세대를 위한 가이드`이다. - -40 ~ 50대는 대한민국의 중추 세력이자 승진, 경쟁, 고용 불안, 부양, 경제적 부담으로 커다란 사회적, 심리적 변화를 겪는 시기이다. - -코로나로 인해 언택트가 확산되고 있고, 노동시장은 긱형태를 띄고 있으며 변화의 속도에 적응하기 어려운 현 시점에 확실히 평생 고용의 개념은 옛말이 되어버린 듯 하다. - -최근 공무원 연금법에 커다란 변화가 있었음을 비추어 볼 때, 비교적 안정적인 직업으로 선호되던 공무원, 준공무원들도 언제까지 소위 철밥통을 유지할 수 있을지 미지수이다. - -책에서 언급한 바에 따르면 퇴직연령 또한 2015년 52.1세에서 2018년 `47.5세`로 급격이 줄어들고 있다. 반면 노동시장에서 완전히 퇴장하는 연령은 `71.4세`이다. 이러한 환경에 비추어 본 도서에서는 구버전인 버티기 전략보다는 신버전인 새로운 삶을 개척하기 위한 시나리오를 마련할 것을 권장하고 있다. - -시대의 변화에 대비한 해결책 제시가 이 책의 핵심이라고 할 수 있다. 책의 구성은 크게 4개의 파트로 나뉜다. - -먼저 주변을 정리하기 위해 자신의 `감정`을 다스리는 법과 주변의 `인간 관계`를 돌이켜 보고 보완할 것을 권한다. 나아가 인생 재구조화를 위한 목표를 설정하기 위해 자신에 `내면`을 성찰할 기회를 가진 후, 마지막으로 생애 주기 수첩 및 진로 포트폴리오를 작성해 보며 인생의 `새판`을 짜도록 권유하는 구성으로 되어있다. - -저자는 40여 년간 직업에 관한 연구에 몰두하고 직업에 관한 클리닉 업무를 담당한 관련 분야의 베테랑으로 본문 중 언급에 따르면 환갑의 연세를 넘긴 분인 듯 하다. 덕분에 삶을 살아가는 관록에서 우러나오는 지혜가 잔잔히 담겨 있어 많은 도움이 되었다. - -책의 난이도 및 가독성 측면에서는 인생을 주제로 다루고 있는 만큼 술술 읽힌다. 책의 제목과 비슷한 연령대의 독자분들이라면 늘 고민하던 요소들인지라 자신의 하루를 돌아보는 것 처럼 어렵지 않은 일이며 3시간 정도면 충분히 읽을 수 있다. 단, 4장의 인생 계획을 수립하는 부분은 책을 읽는 것과 상관없이 상당한 시간이 필요해보인다. - -각 챕터별 인상적이었던 내용을 아래와 같이 요약해본다. - ---- - -* __감정 다스리기__ - - 화 : 난폭, 적대, 격노, 화난, 엄격, 미운, 비천, 보복, 공격, 짜증, 성난, 미친, 갈등, 분개, 슬픈 약오른, 안달, 고집, 당황, 토라진, 들볶는, 성가신, 동의하지 않는 등 - - 화는 언제 생길까? - 원하는 것이, 원하는 시간에, 사람들이 원하는 대로 행동해주지 않을 때 - - 화를 관리하는 법 - + 그 자체를 `존중(인정)`하고, `분석`을 바탕으로 대처 방식을 결정, `새로운 나`를 만남 - + 무엇이 나를 화나게 만들었지? - + 화를 내니 `몸`에서는 어떤 변화가? - + 이 모습은 내가 `원하는 모습`인지? - + 이 순간만 생각하여 화를 키우지 않기 - > 심호흡, 생각체계를 바꾸기, 걷기, 독서, 음악감상, 미술감상 등 - + 나는 지금 편안하다는 말을 반복하기 - + 생각멈추기 - 겨우 노래방에서 소리를 지르거나, TV보면서 먹는 등의 행위는 부정적인 생각이 기어코 머리속을 맴돌게 만든다. 그보다는 `늘 머무르는 곳에 의미있는 사진, 물건, 일기, 소중한 사람에게서 받은 선물` 등을 놓아두자. - - 우리 수명은 대부분 36,500일 이내이다.(100살 기준) - + 다른 누군가의 삶을 살기엔 시간이 너무 짧다. 마음과 직관을 따르는 용기가 필요. - - 길흉화복은 말이 관장한다. - > "한 시간보다 더 자요." - 정은경 질병관리본부장의 답변 - - "이 나이에" - + 나이가 많다는 말은 심리적 기준이다 : 20대도 스스로 나이가 많다고 평한다. - + 자신의 위세를 세우려는 의지가 담겨있다. 하지만 위세는 다른 사람들이 치켜세우는 것이지 스스로 세우는 것이 아니다. - + 청결, 정중한인사, 얼굴 모습, 신체적 불균형, 걷는 자세, 식사 모습 등을 살핀다. - - 새옹지마의 격언에 맞게 나쁜일이 일어날 때 어떤 좋은 일이 찾아올지 기대하고, 좋은일이 일어나면 나쁜일에 대비하며 평정심을 유지해야 한다. - - 커피를 무료로 주는 주유소는 하루 매출 1억. 반면 1,000원을 내야 커피를 주는 주유소는 한산하다. `1000원 벌 욕심에 1억을 놓치는 꼴.` - - 한 함흥냉면집은 메뉴 주문(물냉 or 비냉), 가위의 필요여부 단 2가지만 손님께 물어 한 테이블을 `한 나절에 세번 회전`하게 만들었다. - -* __인간관계__ - - 코로나 19 초기 발생 시 한 지체 3급 장애인이 파출소에 감사 편지와 다과를 남긴 행동. 사람들이 도리어 기부에 참여하는 현상으로 이어짐. 각자의 특별한 위치에 처한 그 상황에 비관하기 보다는 `나만 할 수 있는 값진 일`을 찾는 태도가 중요하다. - - 행복과 불행은 주위 사람에게 전염된다. - - 스트레스 대처법 : 산책, 음악, 여행, 운동, 기도 등 - > "바로 그게 문제야. 알지도 못하면서 왜 두려워하지?" (이를테면 죽음 등) - - 부모의 실수 : 무한대 보호, 소유물로 착각, 결과 중시, 진로 결정 등 - - 아이의 유머에 대해 `칭찬`을 두세달 계속하면 아이는 유머 감각이 늘어 인기짱이 된다. 왕따, 공부 걱정이 필요없다. 즉, 자녀가 어떻게 하면 행복해질 수 있을지에 초점을 맞춰야 한다. - -* __자기성찰__ - - 피카소 작품 3만여점. 하루 한점 이상 그린셈. 세상 만물을 자기 그림으로 만드는 천재. - - 최종수 씨 : 기타 만드는 꿈을 위해 `59세에 사표`낸 후 73세에 1000만원에 이르는 기타를 제작. - > 늦었다고 생각하는 것은 이미 시작한 것과 같다. - - 임원 퇴직 후 방문한 상담가에게 : "당장 등산복을 벗고 임원 시절의 `정장`으로 갈아입으세요." - - 잘못을 저지르면 충분히 대가를 치러야 한다는 편향과 프레임을 벗어나야 함 - -* __인생 새판짜기__ - - 평생 : 웃는 시간 89일, 화 5년, 일 23년, 수면 20년 - - 직업 카드 분류 150 검사 : 자신에 대한 탐구가 필요 - - 미래 50년간 진로 분야 정하기 : 가족, 건강, 자산 계획 수립 - - 생애 주기 수첩 써보기 - 놀랍게도 대부분 아래와 유사한 그림이 나온다. 노년은 의외로 행복의 연속이다. - ![생애주기](https://theorydb.github.io/assets/img/review/2020-08-18-review-book-between-40s-and-50s-2.png) - - 초등학교 교장 정년 퇴직 후, 신용카드 배달 일을 하시는 분 - > "일해서 좋고, 오전만 일해서 좋고, 운동되고, 월 60을 벌어서 좋다." - - 조직 문화 역시 자신의 가치관과 맞아야 한다. - - 노벨상 수상자 다나카 고이치 - `박사 학위 없는` 역대 두번째 수상자로, 연구에 충실하면 평범한 사람도 수상자가 될 수 있음을 보여준다. - - 진로 포트폴리오 : - + 적성, 흥미, 가치관, 역할, 목표, 역량, 경력, 훈련, 자격증, 진로 계획서, 성적표, 졸업장, 상장, 수료증 등 미리 챙기기 - + 예상 사망나이 추정 후 원하는 경제적 수준, 사회적 지위, 교육, 거주 장소 등 구체적으로 구상 - + ![포트폴리오](https://theorydb.github.io/assets/img/review/2020-08-18-review-book-between-40s-and-50s-3.png) - ---- - -본 도서는 4050 세대에게 인생을 돌이켜보고 미래를 설계할 수 있는 좋은 기회를 준다. 마찬가지로 아직 젊은 연령대라 할 지라도 스스로의 미래를 돌이켜본다면 훗날 기회가 찾아올 것이라는 생각에 일독을 권한다. - -* [책소개 - 사십과 오십 사이](http://www.yes24.com/Product/goods/91360654) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. \ No newline at end of file diff --git a/_posts/2020-08-21-review-book-ai-marketing.markdown b/_posts/2020-08-21-review-book-ai-marketing.markdown deleted file mode 100644 index 91c645f10..000000000 --- a/_posts/2020-08-21-review-book-ai-marketing.markdown +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: post -title: "[리뷰] 인공지능 마케팅" -subtitle: "인공지능은 어떻게 미래의 마케팅을 장악하는가?" -categories: review -tags: review book 인공지능 AI 마케팅 미래 데이터과학 계량경제학 시장 설득 고객 플랫폼 -comments: true -header-img: img/review/review-book-ai-marketing-1.png ---- - -> `한빛미디어` 출판사의 `"인공지능 마케팅(짐 스턴 저/김현정 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-ai-marketing-1.png) - ---- - -본 도서는 `AI 기술을 활용한 마케팅 전략`을 다룬 책이다. - -AI와 마케팅이라는 비교적 까다로운 주제를 사례 중심으로 알기 쉽게 풀어쓴 입문서이다. AI와 마케팅을 둘 다 모르는 사람일지라도 두마리 토끼를 잡을 수 있을 정도로 쉽게 쓰여진 점이 인상적이다. - -책 8장 서두에도 소개된 사례로 타깃이 고교생에게 임산용품을 추천하여 자녀의 아버지가 크게 항의했으나 실제로 딸이 임신했다는 일화는 이미 식상해진지 오래다. 그만큼 AI는 산업 분야 곳곳에는 물론 우리 삶 깊숙히에 들어와 있다. - -기업이 보유한 자체 시스템, 에이전시, 신디케이터, 고객 온라인 행동, 그 외 다양한 자료가 마케팅 자료라 할 수 있다. 이를 통해 매일 실시간으로 어떤 사이트에 어떤 광고를 내보내야 할지, 어떤 검색어를 사야 할지, 어떤 웹사이트 버전을 채택해야 할지 판단이 가능하다. - -이런 측면에서 AI는 `프로그래매틱 바잉`이라고 불리는 활동을 수행한다. 디지털 광고 구매, 웹사이트 운영 및 최적화, 검색 엔진 최적화, A/B 테스팅, 아웃바우드 이메일 마케팅, 리드 필터링과 스코어링 등이 그 예이다. 이 책은 이러한 AI기술이 마케팅 분야에 어떻게 활용되고 있는지 폭넓게 다룬다. - -나는 AI에 관심이 많은 편이라 상대적으로 마케팅 위주의 지식에 관심을 갖고 읽었다. AI의 기술은 2장 머신러닝 입문편에서 집중적으로 다루는데 난이도는 쉬운편이다. AI의 상식과 개론 위주의 설명으로 이루어져 있다. 2장 본문에도 언급된 책인 알파고 등장 이후 가장 인기있었던 AI 교양서 "마스터 알고리즘(페드로 도밍고스 저)"와 비슷하거나 보다 쉽다고 생각하면 된다. - -마케팅 지식은 전무하여 함부로 평하긴 어렵지만 최근에 읽었던 [전략가의 일류 영업](https://theorydb.github.io/review/2020/08/10/review-book-for-sales-of-strategists/)에서 다루는 수준과 비슷했다. 즉, 내가 쉽게 이해되는 걸로 봐서 입문서 수준인 듯 하다. - -일반적으로 읽어왔던 다른 마케팅 서적들과 비교하자면 보다 `AI 기술 활용에 초점`을 맞추고 기술이 중심이 되어 마케팅 곳곳에 어떻게 활용되는지를 다룬다는 점이 뚜렷한 차이라고 할 수 있다. 개인적으로는 상대적으로 부족한 지식인 마케팅이 기술과 결합되었을 때 어떤 시너지를 내고 있는지 일목요연하게 정리된 "3장. 마케팅 문제를 해결하려면" 부분이 가장 마음에 들었다. - ---- - -전반적인 구성과 내용에 대해 요약해보겠다. - -1장은 AI 기술을 두루 설명하고 이를 통해 미래의 모습을 상상하는 내용으로 채워져 있다. 미래에는 삽입형 통신 장치가 휴대 전화를 대체할 수 있고, 자기 부상 엘리베이터가 건물의 형태를 변화시킬 수 있다는 등 산업 전반에 현재 연구중인 `전망`에 대해 두루 다룬다. 더불어 AI가 서비스화 된 사례를 비롯하여 인간과의 윤리 및 일자리 문제를 조망해보고 데이터 사이언티스트가 주의하고 발전을 위해 노력해야 하는 방법들에 대해 살펴본다. 구글 빅쿼리가 제공하는 정보나 무료 데이터 셋을 제공하는 20개 사이트 등 유용한 정보도 소개되어있다. -![방대한 데이터](https://theorydb.github.io/assets/img/review/review-book-ai-marketing-4.png) - -2장은 앞서 언급한 바와 같이 `머신러닝의 개요`를 다룬다. 머신러닝 모델의 실제와 한계도 돌아보고 기수, 차원 등 머신러닝에서 알아야 할 기초적인 상식 및 용어도 다룬다. 흔히 쓰이는 머신러닝 알고리즘인 베이즈 정리, 의사결정 트리, 랜덤포레스트, SVM 등의 알고리즘이 소개되며 연관성 분석이나 클러스터 분석같은 통계 기반의 분석기법도 소개된다. 그 외에도 비교적 최근에 등장한 딥러닝, 강화학습도 다루며 마지막으로 가장 흔히 사용되는 통계 용어들을 정리하며 장을 마무리 한다. - -3장은 일대일 마케팅, 일대다 광고, 4P 및 그 외 마케팅 고려 요소들을 다루는데 옛 사람들의 실제 구매 및 판매 사례를 이야기처럼 예로 들고 있어 `마케팅의 태생과 관련된 전반적인 지식`을 쉽게 이해하는데 큰 도움이 된다. 더불어 AI 기술이 활용되기 적합한 개념과 용어들을 살펴본다. 고객여정, 신 마케팅 생태계 포스터, 마케팅 믹스 모델링, 고객 생애 가치, 계량 경제학 등에 이르기까지 마케팅의 지식을 전반적으로 폭 넓게 훑을 수 있는 기회였다. - -4장 ~ 7장은 본격적으로 AI 기술이 마케팅에 어떻게 활용되는지를 중점적으로 알아보는 파트이다. 4장에서는 `잠재 고객`을 유치하기 위해 AI 기술을 어떻게 활용하는지 다룬다. 시장조사, 세분화, SNS 인플루언서. 고객감성 분석 등의 기술을 살펴본다. 전통적인 광고 기법 대비 현재 활용하는 프로그래매틱 방법들이 어떤 차이가 있는지 비교해 볼 수 있다. - -5장에서는 앞 장에서 유치한 고객이 `구매` 하도록 설득하는 방법을 다룬다. 고객이 매장에 들어왔을 때 전통적으로 고객을 응대하는 수순에 비추어 단계별 AI는 어떤 서비스를 대체하고 있는지 실 사례를 통해 집중 조명한다. 센티언트 어센드라는 유전 알고리즘을 이용해 테스트 할 웹페이지 후보를 만들어 내는 방법, 세션 리플레이로 마우스의 움직임을 기록하여 웹사이트에 봉착한 문제를 파악하는 기술 등이 소개된다. 뒤이어 거래성사 및 리마케팅까지 기술만 알고 있던 내게 이를 적용할 만한 분야가 생각보다 다양하다는 것을 깨닫게 해준 장이다. - -6장에서는 `충성 고객`을 확보하는 방법을 다룬다. 고객 이탈률이 확보율을 넘어섰다면 비즈니스가 실패함을 의미한다. 이탈률을 최소화하기 위한 정책과 실제 기업의 해결 사례 및 AI 봇을 활용하는 방법이 소개된다. -![이탈률과 확보율](https://theorydb.github.io/assets/img/review/review-book-ai-marketing-3.png) - -7장에는 AI `플랫폼`이 소개된다. 세일즈 포스 닷컴의 아인슈타인, IBM의 루시 등의 실제 플랫폼이 어떻게 동작하는지를 확인해보고 실무에 적용하는 방법을 다뤄본다. - -8장 ~ 11장은 내용이 거의 유사하다. AI의 약점이 무엇이고 이를 통해 인간이 찾아가야 할 길을 조망해보며 `미래`를 예측해 보는 시간을 갖는다. 현재의 AI가 실패하는 과적합 등의 문제를 살펴보며 데이터 과학자나 분석가가 저지르는 실수인 편향 등에 대해 다룬다. 더불어 산업분야와 일자리를 중심으로 인간이 선전할 수 있는 분야를 살펴보고, 인간이 가진 우위 판단력, 상상력 등을 통해 AI를 멘토링하는 방법도 살펴본다. 마지막으로는 소개한 AI 기술들이 어떻게 발전하고 미래를 어떻게 변화시킬지 간단히 정리한다. -![10대기술](https://theorydb.github.io/assets/img/review/review-book-ai-marketing-2.png) - ---- - -앞서 언급한대로 전반적인 AI와 마케팅의 개론을 쉽게 이해하는데 매우 효율적인 책이다. 반면, 지식의 깊이에는 제한이 있는 입문서이므로 보다 심도있는 지식을 원하는 분들께는 약간 부족할 수도 있겠다. 따라서 두 분야의 큰 그림을 갖고 싶은 초기 사업가나 두 분야 중 한 분야가 문외한인 다른 영역의 전문가라면 짧은 시간내에 많은 도움을 받을 수 있을 것이므로 일독을 권한다. - - -* [책소개 - 인공지능 마케팅](http://www.yes24.com/Product/Goods/67090210?OzSrank=1) diff --git a/_posts/2020-08-21-review-book-speaking-matrix-zero.markdown b/_posts/2020-08-21-review-book-speaking-matrix-zero.markdown deleted file mode 100644 index c8e140c25..000000000 --- a/_posts/2020-08-21-review-book-speaking-matrix-zero.markdown +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: post -title: "[리뷰] 스피킹 매트릭스 0 제로" -subtitle: "모국어처럼 유창한 영어 말하기의 시작" -categories: review -tags: review book 스피킹 모국어 영어 유창한 구글코리아 -comments: true -header-img: img/review/review-book-speaking-matrix-zero-1.png ---- - -> `길벗이지톡` 출판사의 `"스피킹 매트릭스 0 제로(김태윤 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-speaking-matrix-zero-1.png) - ---- - -본 도서는 `영어 스피킹을 유창한 모국어 수준으로 끌어 올려주는 가이드`이다. - -다른 서적과 달리 영어 실전서는 저자가 매우 중요하다. 저자는 이익훈 어학원, EBS 강사 등을 거쳐 현재는 구글코리아의 영어 강사로 활동 중인 김태윤 강사이다. - -스피킹 매트릭스를 알게 된 계기는 실제로 저자의 강의를 들었던 주위 친구들 때문이다. 친구들이 추천한 핵심은 두가지로 요약된다. - -하나는 이론적으로 설명하기 어렵지만 하루 하루 실습을 따라하는 과정에서 영어 단어의 `진정한 의미와 개념을 정립`할 수 있다는 점이다. 그러다보면 어순의 감각은 저절로 터진다고 했다. - -예를 들면, Be동사나 전치사같은 우리말에서는 별 의미 없고 보조적으로 결정되는 것들이 상황에 따라 결정적인 뉘앙스의 주체가 되기도 하고, 머릿속 사고 과정에서 스위치 On-Off의 결정적인 역할을 한다고 하던데 들을 때는 솔직히 무슨말인지 몰랐다. 이 책을 읽고 실습하고 나서야 그 친구들의 말이 무슨 뜻이었는지 이해가 된다. - -다른 하나는 `오래 기억`이 지속된다는 점이다. 자전거 타기와 같이 몸으로 배운 것들은 한동안 안 타다가 어느 순간 다시 타도 몸이 기억하고 있듯 스피킹을 머리로 배웠을때 지식들이 전부 증발해 다음 순간에 버벅이던 것과는 달리 언제고 예전과 거의 비슷한 수준의 실력 유지가 가능하다는 점을 들었다. - -결론을 먼저 말하자면 친구들이 추천한 이 두가지 비결로 이 책을 읽기 시작했고 읽고 난 후 그들이 무슨 말을 하는지 이해가 되었다. 즉, 먼저 경험한 친구들이 언급한 이 두가지 장점이 아마도 이 책의 핵심이 아닐까 싶다. - -책의 `핵심`은 아래 그림이 가장 잘 설명해준다. -![핵심](https://theorydb.github.io/assets/img/review/review-book-speaking-matrix-zero-2.png) -* 1.Message : 말하고자하는 `의도`. 혹은 의도에 의해 떠오르는 이미지나 개념 정도로 해석된다. 처음엔 한 단어로 아주 짧게 만드는 것을 추천한다. -* 2.E-Actives : 의도에 해당하는 `영어말`을 떠올리는 작업이다. 중요한 것은 끊어 말하기이다. 한 문장으로 이어지는 형태가 아니라 Chunk 단위로 떠올라야 한다. -* 3.Speaking : 발음과 논리로 구성된다. 특히 `논리`를 신경써야 한다. -* 4.Checking : 확인하기. 스피킹에서 제일 중요한 과정이다. `자신이 한 말`이 무슨뜻인지 이해하고 내용이 맞는지 확인하며, `오류`를 알아채기도 하고 정정해보기도 한다. `다음`에 이어질 말을 위한 중요한 단계이기도 하다. - -이론적으로는 이 설명이 이 책에서 말하는 전부이다. 그 외 저자가 책을 통해 전달하는 부가적인 설명은 다음과 같다. - -* 그동안 우리가 배웠던 리딩 중심의 과정은 머릿속에서 문장을 완전하게 만들고 입 밖으로 읽는 과정이다. -> 영작한 문장을 그저 읽는 셈이다. 덕분에 영어에서 중요한 `감정`이 묻어나지 않는다. -과부하가 걸리고 오랜 시간이 걸린다. - -* 마침표가 찍힐 때까지 끊어지면 안된다는 강박 관념을 버려라. -> 원어민도 처음부터 끝까지 할 말을 모두 짜놓고 말하지 않는다. -원어민 아이들도 천천히 하나씩 말을 했고 주위에선 신기해하고 칭찬해주는 과정을 거친다. - -* 말하기는 왼쪽에서 오른쪽으로 하는 것이 아니라 개념들이 눈 앞에 `나타났다 사라졌다` 하는 것이다. - -책의 이론이 간단해서 좋고 별로 기억할 것도 없다. 때문에 책의 백미는 Part2 실천편에 있다. 실천 방법을 진행하는 방식은 아래와 같이 청크(의미덩어리) 단위의 스피킹이 기본 개념이 된다. -![청크](https://theorydb.github.io/assets/img/review/review-book-speaking-matrix-zero-3.png) - -구체적인 실습 방법은 아래 그림을 보면 한 번에 이해될 것이다. -![실습방법](https://theorydb.github.io/assets/img/review/review-book-speaking-matrix-zero-4.png) - -세로 표의 순서대로 위 그림의 부분 파트들의 그림이 나온다. 이를 보고 현재 단계가 어떤 단계인지 확인하며 책에서 서술된 개념을 실전을 통해 연습해 나가면 된다. 의도를 떠올리고, 한 단어씩 영어로 바꿔보고, 자신이 뱉은 말이 어떤 의미인지 확인한다. - -2번째 반복 시 청크 단위로 의도를 키워본다. 3번째는 문장 전체로 키운다. 한장 더 넘기면 OUTPUT 페이지가 나오는데 INPUT 페이지와의 차이점은 영어 부분에 빵꾸가 뚫려있다는 점이다. 즉 의도만으로 스피킹을 훈련할 수 있는 구성으로 되어있다. - -그렇게 50일 동안 하루 3문장씩 연습할 수 있는 구성으로 되어있다. 영어는 반복이 중요함을 누구나 알고 있다. 꾸준한 이 감각을 유지하는 것이 중요한데 하루에 길어야 10분이면 하루 분량을 훈련할 수 있는 매우 쉬운 구성이므로 꼭 매일 하시길 추천드린다. - -더불어 저자의 해설강의 및 훈련용 MP3 파일은 길벗 출판사 홈페이지에서 다운로드 가능하다. - -알고 금방 잊어버리는 이론 따위는 그만두고 계속되는 반복 속에 영어의 개념과 어순과 상황을 몸으로 익히고 감각을 오래 유지할 수 있다는 점에서 뛰어난 책이라는 생각이 들었다. - -예를 들면 우리는 Be동사를 쉽다고 생각하지만 없는 것 취급하기도 한다. 그래서 스피킹할때는 은근 빼먹기 일쑤고 어느 타이밍에 말해야 하는지 감도 못 잡는다. - -프로그래머로 먹고 사는 내겐 이 is에 담긴 철학이 Class - Object라는 개념으로 명확하게 자리잡고 있다. 덕분에 마치 형상화한 머릿속 개념과 이미지를 세상에 구현하는 느낌으로 is를 사용하는데 그러다보면 영어의 어순 타이밍이 잘 느껴진다. - -이걸 어찌 다 이론으로 설명하랴. `하루 10분 부담없이 50일`을 실천하다보면 그동안의 미싱 링크들이 연결되는 기쁨을 느낄 수 있을 것이다. 그 감이 오래 지속될 수 있다는 것은 덤이다. - -* [책소개 - 스피킹 매트릭스 0 제로](http://www.yes24.com/Product/goods/91445547) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. \ No newline at end of file diff --git a/_posts/2020-08-26-review-book-reload.markdown b/_posts/2020-08-26-review-book-reload.markdown deleted file mode 100644 index af51b1d34..000000000 --- a/_posts/2020-08-26-review-book-reload.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: post -title: "[리뷰] 리로드" -subtitle: "Reload" -categories: review -tags: review book reload 인생 새로고침 재장전 새출발 나 습관 야망 미래 멘토 도움 -comments: true -header-img: img/review/review-book-reload-1.png ---- - -> `포레스트북스` 출판사의 `"리로드(제임스 리드 저/이정민 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-reload-1.png) - ---- - -본 도서는 `과거의 나와 다른 새로운 나를 위해 리로드(reload)하는 방법`에 관한 책이다. - -게임을 하다보면 기존의 캐릭터를 없애고 새로운 캐릭터를 만들고 싶을 때가 있다. 인생에도 그런때가 종종 있기 마련인데 한번 태어난 인생을 리셋할 수 없음을 알기에 인터넷을 돌아다니다 보면 이런 우스갯 소리가 나오곤한다. -> "이번 세상은 글렀어.. 다음 세상을 기약해야지.." - -저자가 이 책을 통해 말하고자 하는 메시지도 바로 위의 말과 일맥 상통한다 볼 수 있다. 더 나은 미래의 나를 만들기 위해 마치 컴퓨터를 `재부팅`하듯이 새롭게 바꾸고 준비할 수 있도록 안내하는 것이 이 책의 목표라 할 수 있겠다. - -저자는 전 세계 148개 도시에 지사를 둔 세계 최대 규모의 헤드헌팅사 뤼드그룹의 CEO이다. 책에 언급된 감사의 말에 따르면 그가 50년 넘게 살아오고 일하면서 수도 없이 질문하고 대화하며 관찰한 결과물이라고 언급한다. - -개인적으로도 책이 꽤 마음에 들었다. 여느 책이 그렇듯 더 나은 인생을 만들기 위해 마법의 비책이 등장하는 것은 아니지만 `책에서 인도하는 날카로운 질문`에 하나씩 응답하다보면 `생각보다 몰랐던 자기 자신`을 발견하게 되고, 잊었던 과거의 경험과 뿌듯함을 떠올리게 하며, 그로 인해 미래의 방향을 잡는데 단초가 될 열쇠를 손에 쥘 수 있다. - -처음엔 거울을 보며 자신의 생긴 모습이 어떤지부터 시작하여 스스로의 내면을 보도록 조언한다. 처음 접했을 때는 다소 황당하기 그지 없었는데 생각보다 거울로 나 자신을 보는 것은 말로 표현하기 어려운 힘이 있는 것 같다. 자신의 `내면과 친근`해지는(?) 느낌이라고나 할까. 또 한가지 장점이 더 있다면 마치 `제3자의 시각`으로 나를 보는 것 같아서 현재 나의 감정 상태나 처한 상황에 대해 보다 객관적으로 바라볼 수 있는 효과를 준다. - -이어서 현재 몸담고 있는 직업과 관련되어 좋은점과 싫은점을 찾기 시작한다. 직접 기록해가며 정리하고 파악해보니 생각보다 그동안 안보이던 직업의 장, 단점이 보이게 됐다. 이 또한 시각화되고 객관화되어 스스로 발전할 수 있는 방향을 잡는데 도움이 된다. - -책에서 던지는 날카로운 질문들에 하나씩 깊게 생각하며 답을 내놓다보면 어느덧 내가 원했던 세상, 그리고 그런 세상을 실현하기 위한 나의 `가치관`을 뚜렷하게 볼 수 있게 된다. 자연스레 스스로의 목표가 무엇인지 안개속에 희미했던 목표를 좀 더 명확하게 잡아볼 수도 있다. - -이직 혹은 창업을 원한다는 결론에 도달할 수도 있다. 하지만 문제는 그 길로 나아가기 위한 방법을 모른다는 것. 저자는 그 방법을 찾기 위한 여러가지 솔루션을 제시한다. 그 중 가장 인상적이었던 것은 `사람`을 통해 해결하라는 조언이었다. 생각보다 주위에 관련 정보에 박학 다식한 지인이 존재할 수도 있고, 혹은 관련 커뮤니티의 파티 등에 참석하여 우연치 않게 멋진 방향 혹은 조언을 구할 수도 있다고 저자는 전한다. - -중요한 것은 이들을 만나려고 시도하고 노력하고 실천하는 일련의 과정들이 `변화`를 일으키고, 그 실마리 하나하나를 풀어가면서 본인이 원하던 모습으로 리로드 할 수 있음을 강조한다. - -그 외에도 저자는 본인이 인생을 살아오며 꽤 유용했던 전략들을 소개한다. -* 인생과 시간에 있어 가장 중요한 습관에 대한 조언 -* 푸스틱 게임(빠른 물살에 몸을 맡기는) 전략에 따른 스스로의 발전 -* 인생의 세 단계별 계획(18세 ~ 30세, 30 ~ 50세, 50 ~ 70세) -* 30분 전에 약속 장소에 도착하는 준비된 생활 -* 자신만의 노동 원칙, 관계의 중요성(도움 요청, 멘토, 퇴사 정리 등) - -등 인생에서 배워 온 상세한 방법들을 열거한다. - -스스로 나 자신에 대해 잘 모르거나, 자신에 대해 더욱 알고 싶거나, 미래의 방향을 설계하는데 앞이 잘 보이지 않거나, 삶을 바꾸고 싶지만 방법을 잘 모르는 분들이라면 이 책이 꽤 많은 부분에 있어 좋은 솔루션이 될 것이다. - - -* [책소개 - 리로드](http://www.yes24.com/Product/goods/91451085) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. \ No newline at end of file diff --git a/_posts/2020-08-28-review-book-brain-lies.markdown b/_posts/2020-08-28-review-book-brain-lies.markdown deleted file mode 100644 index 987da9a55..000000000 --- a/_posts/2020-08-28-review-book-brain-lies.markdown +++ /dev/null @@ -1,113 +0,0 @@ ---- -layout: post -title: "[리뷰] 오늘도 뇌는 거짓말을 한다" -subtitle: "착각에 빠진 뇌를 깨우는 메타인지 수업" -categories: review -tags: review book 인지부조화 뇌 편향 넛지 귀인오류 메타인지 앵커링효과 쌍안정그림 휴리스틱 -comments: true -header-img: img/review/2020-08-28-review-book-brain-lies-1.png ---- - -> `한빛비즈` 출판사의 `"오늘도 뇌는 거짓말을 한다(알베르 무케베르 저/정수민 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-08-28-review-book-brain-lies-1.png) - ---- - -> 분명 내가 한 행동인데 내가 왜 그랬을까? - -본 도서는 `내가 했음에도 이해가 되지 않는 행동 혹은 자동으로 하는 행동들에 대한 원인과 답`을 알려주는 책이다. - -구구절절한 설명보다 먼저 재미있는 현상 2개를 설명하려한다. 아래 그림을 보자. -![쌍안정](https://theorydb.github.io/assets/img/review/2020-08-28-review-book-brain-lies-2.png) - -(a) 그림을 먼저보고 가운데 그림을 보자. 다음에는 (b) 그림을 보고 가운데 그림을 보자. 놀랍게도 우리뇌는 선험적으로 받아들인 정보(이미지)에 의해 모호함을 확신으로 바꾼다. 이를 `모호함의 감소`라 한다. - -다음 그림을 하나 더 보자. 왼쪽 눈을 손바닥으로 가리고 오른쪽 눈으로 십자가 모양에 집중한 후 모니터에 얼굴을 조금씩 가까이 가져가보자. 얼굴과 모니터 사이의 거리가 25cm 정도 되었을 때 오른쪽의 검은색 동그라미가 보이지 않는 구간인 `맹점`이 있음을 발견할 것이다. -![맹점](https://theorydb.github.io/assets/img/review/2020-08-28-review-book-brain-lies-3.png) - -드라마나 영화를 보다 보면 주인공이 확신에 찬 어조로 멋진 말을 하곤 한다. -> "나는 내가 눈으로 직접 본 것만을 믿어." - -편견따위 사로잡하지 않고 소신있고 객관적으로 상황을 마주하려는 주인공의 태도가 멋있고 감동이 생긴다. 그런데 정말 저 말이 100% 진실이 될 수 있을까? 위 두가지 단순한 경험으로 우리는 이제 100%는 아닐 수도 있음을 알게 되었다. - -동일한 그림임에도 보는 위치, 각도, 선험적 지식에 따라 당신의 지각을 수정할 수 있다는 점에 놀라지 않으셨는지? 이 경험을 통해 이제 우리는 우리의 인지, 지각, 판단에 조금 더 `의심`을 해 볼 필요가 있다. 이를 위해서는 우리 뇌의 매커니즘을 좀 더 많이 알아야 하고, 평소 우리가 보고 싶은 것만 보지 않을 수 있도록 방법이 필요한데 이러한 주제가 바로 이 책이 말하고자 하는 핵심이다. - ---- -* __모호함의 감소, 인지부조화, 영속성의 원리__ - -> "우리는 글을 이 수 읽을 있다." -> "괄도네넴띤" -> "이건 정말 띵작이야." - -우리는 이러한 말도 안되는 글들을 읽고 무슨 의미인지 파악할 수 있다. 정확히 읽으면 아무 의미도 없는 이상한 문장이므로 일시적으로 우리 뇌는 신념과 마주친 현실의 부조화를 겪는다. 이를 `인지부조화`라 칭한다. 결국 우리 뇌는 이 혼란스러운 상황을 피하기 위해 그동안 선험해왔던 신념 혹은 지식체계를 통해 모호한 상황을 타파한다. 이를 `모호함의 감소`라 한다. 이런 전반의 과정을 `영속성의 원리`라 한다. - -1미터 거리의 큰 글씨도 읽을 수 없는 시각 능력이 부족한 아이가 벽에 부딪히고도 "그냥 장난이었어요."라고 사실과 다르게 말하는 작화증, 뇌량 절제 환자가 일관성을 유지하고자 자신의 선택을 정당화하는 현상, 피해자의 기억과 정신 건강에 의심을 품게 만들고 농담으로 치부해 버리는 가스라이팅 등은 모두 모호함의 감소 매커니즘에 의한 부작용이다. - -인지부조화로 심지어 사람을 조종할 수도 있다. 어느날 벤저민 프랭클린이 정적에게 중요하고 희귀한 책을 빌릴 수 있을지 물었는데 정적은 프랭클린에 대한 부정적인 시선과 책을 빌려주지 않았을 때 모두의 웃음거리가 되고 싶지 않다는 부조화 속에서 갈등을 한다. 결국 책을 빌려주게 되면서 프랭클린이 부정적이라는 처음의 신념을 수정하게 된다. - -마치 관광에 놀러갔던 아내가 남편의 영양제를 사면서 사은품으로 자신이 원하는 것을 챙기는 정당화와 유사한 현상이다. 그럼애도 우리는 우리를 도와주는 사람만 선호하는 것이 아니라, 우리가 도움을 주는 사람 또한 선호한다는 것을 잘 인지하지 못한다. - -[인간관계론](https://theorydb.github.io/review/2020/04/24/review-book-how-to-win-friends-and-influence-people/)에 소개된 바와 같이 결국 사람은 인정받고 싶어하는 욕구가 매우 강렬한 존재이기 때문이다. 이 `프랭클린 효과`는 사는데 정말 많은 도움이 된다. - -이와 더불어 학습된 무기력도 모호함의 감소에서 비롯된다. 예전에 몇번의 실패와 방해가 있었다고 쉽게 포기해버리는 함으로써 우리는 가능성을 놓치고 있는 것은 아닌지 항상 의심을 품고 확인해봐야 한다. 공부도 마찬가지이다. 쉽고 자신감이 생길수록 학습 효과가 높아지는데, 근거없는 자신감이 최고일 때 모든 학습이 시작된다. - -어쩌면 수 많은 자기계발서에서 "자기 자신을 믿어라."라는 영감을 고취시키거나, 정주영 회장의 "해봤어?" 등의 일화가 큰 힘을 발휘하는 이유가 바로 `학습된 무기력`을 타파하는 것에 근원을 두고 있지는 않을까라는 생각을 했다. - - ---- -* __귀인 오류 편향__ - -> 30년 간 서로 다른 길을 살아 온 부부가 살아온 배경이 다른데 어떻게 다툼 하나없이 살 수 있을까? - -우리는 살아온 배경이 다르다. 살아 온 국가, 취향, 종교, 친구, 신념, 좋아하는 색, 응원하는 툭구 팀, 정치 성향 등의 비교적 오랜 기간 선험하며 누적되어온 배경을 비롯하여 시간, 날씨, 내면의 감정 상태 등 일시적이고 순간적인 배경까지 각자의 배경, 상황, 핑계가 전부 다르다. - -착한 사마리아인의 일화와 유사한 실험이 있었다. 실험자들은 프레젠테이션의 임무를 부여받고 이를 발표하러 가는 길목에 땅바닥에 누워 있는 사람을 만나도록 설계된 실험이다. 프레젠테이션의 시간이 넉넉했던 A그룹은 10%만이 그를 도왔고, B그룹은 63%가 도왔다. - -어쩌면 착한 사마리아인의 일화에서 제사장과 레위인은 단지 시간이 없었을지도 모르는 일이다. 이처럼 우리는 `다른 사람들은 행동으로 판단하지만, 나 자신은 스스로의 의도`를 가지고 판단하려는 경향이 있다. 이를 `귀인 오류`라는 편향이라고 부른다. - ---- -* __스트레스의 원인__ - -우리는 생물학적으로 호모 사피엔스 종(種)이다. 우리의 문명이 급속도의 발전을 이룬 것에 비해 우리의 정신 영역은 별로 진화하지 못했다. 불과 얼마전 동굴속에 살며 맹수의 위협속에 생존이 최우선 과제였던 종(種)이다. - -`생존`이 최우선이 되면 소화, 성욕, 바이러스 퇴치 등은 아무 소용이 없다. 죽임을 당하느니 차라리 과민 반응을 택하는 본능을 택하는데 이 현상이 바로 스트레스의 기원이다. -* 밤에 숙면하는 것이 더 도움이 된다는 것을 알면서도 우리는 수능 시험 전날 왜 편히 잠을 이루지 못할까? -* 중요한 프레젠테이션에서 잘하다가 왜 갑자기 기억상실에 걸릴까? - -우리의 뇌는 수능시험, 주요 프레젠테이션에서 느끼는 중요함과 맹수로부터 생존하려는 중요함을 유사하게 판단하기 때문이다. 생존 본능 앞에서 다른 판단력은 다 사치일 뿐이기에 일시적으로 사고가 마비되거나 더욱 올바른 선택을 할 수 없는 것이다. - -그렇다면 스트레스를 어떻게 해소할 수 있을까? 책에서 소개된 방법은 다음과 같다. -* 명상, 요가, 스트레칭 -* 몸을 `이완`시키면 뇌는 "몸이 이완되는걸 보면 이건 정말 위험한 일은 아닐거야."라고 생각하며 긴장을 풀게된다. -* 맹수의 위협이 아님을, `생존 문제가 아님`을 인지하고 안도한다. 내가 그러한 긴장 상태에 있는 것은 아닌지 자문해본다. - ---- -* __정신적 유연성을 위한 기술__ - -10장에서는 그동안 배운 우리 뇌의 매커니즘을 정리해보며 우리가 편향 혹은 거짓 뉴스 등에 빠지지 않도록 메타인지를 활성화하는 솔루션을 제시한다. -* 이 자동화된 사고(휴리스틱)은 어떤 요소에 근거하는가? -* 이 사고는 비생산적이며 주기적으로 돌아오는가? -* 친구가 이 상황이라면 당신은 어떤 조언을 할 것인가? - -더불어 정보의 신뢰도를 평가하는 칼세이건의 방법을 소개한다. -* 인신공격인지, 아닌지? -* 권위가 있을수록 그의 논리의 타당성을 연구해야 한다. -* 공통점이 없는 두 가지 상황에 대한 비유, 대조는 아닌지? -* 감정적 호소 유의 -* 일화적 증거보다는 과학적 증거를 선호 -* 거짓등가성 등 - ---- - -이로써 본 도서를 읽으며 인상적이었던 부분들의 정리를 마칠까 한다. 책에 가끔 낯설고 어려운 용어가 등장하기도 하는데 큰 걱정할 필요가 없다. 책의 뒷 부분에 용어 설명 부록이 있다. -![표지](https://theorydb.github.io/assets/img/review/2020-08-28-review-book-brain-lies-4.png) - -이 책 덕분에 우리 뇌의 매커니즘에 대한 이해는 물론 나 자신의 행동조차 이해되지 않았던 이유 등에 대한 궁금증을 상당 부분 해소할 수 있었다. 스트레스도 많이 줄었다. 몸을 의식적으로 이완시키고 생존 위협이 아니라고 스스로에게 말해줄 때마다 평정심을 찾을 수 있었다. - -더불어 귀인오류를 경계하며 타인의 마음을 읽는데 도움이 되기도 했고, 정신적 유연성을 확보하고자 노력하면서 비판적인 시각과 사고를 견지하는데 도움이 되기도 했다. - -이처럼 이 책은 뇌의 매커니즘을 학습하는 앎의 즐거움은 물론 나의 일상에 적용하여 삶의 질을 높여주는 즐거움이 공존한다. 스스로의 행동에 이해가 되지 않아 후회하거나 괴로워 하는 일들은 사람이라면 누구나 겪는 일이기에 가급적 많은 분들께 본 도서를 권하는 바이다. - - -* [책소개 - 오늘도 뇌는 거짓말을 한다](http://www.yes24.com/Product/Goods/91408571?OzSrank=1) diff --git a/_posts/2020-08-29-review-book-amway.markdown b/_posts/2020-08-29-review-book-amway.markdown deleted file mode 100644 index 657eada44..000000000 --- a/_posts/2020-08-29-review-book-amway.markdown +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: post -title: "[리뷰] 초연결 시대 최고의 비즈니스" -subtitle: "돈 걱정 없이 잘사는 가장 현실적인 부(富)의 안내서" -categories: review -tags: review book 네트워크 마케팅 암웨이 비즈니스 초연결 부자아빠 가난한아빠 현금흐름 보상 다단계 -comments: true -header-img: img/review/review-book-amway-1.png ---- - -> `전나무숲` 출판사의 `"초연결 시대 최고의 비즈니스(장영 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-amway-1.png) - ---- - -본 도서를 읽게 된 이유는 다음 3가지에 대한 궁금증 때문이었다. -* `네트워크 마케팅`으로 돈을 버는 방법 -* 암웨이 그리고 `다단계` 회사의 실체 -* 암웨이가 성공할 수 있었던 비결과 배울점 (`수익구조`) - -책은 크게 두 파트로 나뉜다. 전반부는 로버트 기요사키의 명저 "부자 아빠 가난한 아빠"의 인용을 중심으로 `네트워크 마케팅의 중요성`을 다룬다. - -후반부는 `암웨이`와 다단계의 차이점, 암웨이 네트워크 마케팅의 장점 및 사업 모델을 분석한다. 본 도서에서 다룬 인상적인 내용을 정리하며 느낀 바를 아래와 같이 정리해본다. - ---- - -4차 산업혁명의 도래와 코로나의 등장으로 초연결이 화두인 세계가 되었다. 초연결 시대의 특성을 잘 활용한 여러 기업이 있다. - -아이러니하게도 호텔과 리조트를 소유하지 않은 에어비앤비의 시가총액이 힐튼보다 더 크며, 자동차를 만들어 파는 GM보다 우버의 시총이 더 높다. 때문에 현 사회의 특성을 잘 파악하고 부가가치를 창출해 낼 수 있는 학습 능력이 중요한 시대이다. - -한편 우리는 상위 소득 `0.9%`(약 4,680만명)의 부자들이 전 세계 부의 `44%`(약 158조 달러)를 차지하는 양극화의 정점에 서 있다. 2020년 5월 `확장실업률`은 14.5%를 넘어섰으며, 15 ~ 29세 청년층의 실업자 비중이 26%를 넘어섰다. - -바야흐로 돈이 더욱 중요해진 세상이 되어버렸고, 초연결은 분명 돈을 버는 좋은 기회일 것이다. - -초연결 시대에 제격인 돈 버는 방법은 무엇일까? 돈은 사람의 관심이 머무는 곳에 존재하므로 `사람들의 주된 관심사 7가지`를 살펴볼 필요가 있다. - -* 건강 : 비만, 탈모, 자녀의 성장, 질병, 노화 등 -* 돈 : 경제적 독립, 노후, 자녀, 재테크 등 -* 관계 : 부부, 자녀, 부모, 상사, 동료, 이웃 등 -* 일 : 이직, 승진, 투잡, 사업 등 -* 자기계발 : 리더십, 어학, 요리, 미용, 취미 등 -* 봉사 : 종교, 자선사업 등 -* 기타 : 그 외 - -대부분 위 관심사 중 하나를 성취하고자 돈을 벌고자 한다. 때문에 아래의 질문을 스스로 해볼 필요가 있다. - -* 돈을 버는것에 관심을 갖는 이유는? -* 언제부터 관심을 가졌나? -* 목표 월수입은? -* 돈 문제를 해결하기 위해 어떤 노력을 했는가? -* 그 노력은 효과가 있었나? -* 지금 재정 상태는? - -본 도서는 로버트 기요사키가 그의 저서에서 말하고자 하는 핵심을 잘 간추렸다. 덕분에 부의 속성을 빠르게 파악하는데 도움이 된다. - -먼저 돈의 노예에서 해방되어 돈의 주인이 되기까지 현금 흐름의 사분면 `EBSI`이다. 남을 위해 돈을 버는 일반 직장인, 자신을 위해 돈을 버는 전문가, 시스템을 만들어 파이프라인으로 돈을 버는 사업가, 돈이 돈을 버는 투자자로 나뉜다. -![표지](https://theorydb.github.io/assets/img/review/review-book-amway-2.png) - -다음은 가난한 사람, 중산층, 부자의 `현금 흐름과 재무제표`를 각각의 순서대로 나열한 그림이다. 돈의 흐름이 어떻게 흘러야 하는지 직관적으로 파악할 수 있다. -![가난한사람](https://theorydb.github.io/assets/img/review/review-book-amway-3.png) -![중산층](https://theorydb.github.io/assets/img/review/review-book-amway-4.png) -![부자](https://theorydb.github.io/assets/img/review/review-book-amway-5.png) - -레버리지, 부의 추월차선 등의 유명 서적에서 강조한 잠을 자는 동안에도 돈을 벌 수 있는 파이프 라인, 타인의 자본으로 나의 자산 가치를 높이는 레버리지의 개념이 무엇인지 정리해본다. - -이어서 3가지 사업 시스템을 정리한다. 전통적인 직접 개발, 체인점 사업, 네트워크 마케팅의 실체를 알아본다. 일반 유통 방식에서 생산자의 원가가 고작 20%이고, 중간 유통 비용이 80%나 된다는 사실을 알 수 있었다. - -이어 암웨이와 `다단계 사업의 차이점`이 무엇인지 정리한다. 아래 도표에 사기업체와 암웨이를 구별하는 내용의 핵심이 정리되어 있다. -![암웨이와 다단계](https://theorydb.github.io/assets/img/review/review-book-amway-6.png) - -혹시 암웨이를 부업 목적으로 관심을 가지는 분들을 위해 아래 그림을 첨부하였다. 얻을 수 있는 보상 체계가 잘 정리되어있다. -![보상체계](https://theorydb.github.io/assets/img/review/review-book-amway-6.png) - -암웨이의 수익 구조와 사업 모델은 6장에 친절하고 자세히 기록되어있다. 꼭 암웨이에 대한 관심 여부를 떠나서 실전적인 사업 지식을 배우는데 유용하다. - ---- - -마지막으로 암웨이가 안전한 회사인지 궁금한 분들을 위해 비판적으로 읽으며 정리한 나의 소견을 정리해볼까 한다. - -1990년까지 분명 암웨이는 다단계 회사였다. 하지만 미국 법원에서 합법적인 판결을 받았으며, 더욱이 주력 사업은 생필품 제조업체이다. 이를 판매하는 사람과 구매하는 사람이 제품을 팔지 않는다고 해서 돌아오는 불이익도 없다. - -고유한 사업 모델덕에 사세도 점차 확장되고 있다. 암웨이의 제품으로는 우리가 주위에서 흔히 알고 있거나 들어본 제품도 많다. 건강식품 뉴트리라이트나 아티스트리 화장품 등이 대표적이다. - -이를 두고 과거의 활동과 충분한 검증없는 주위의 선입견 때문에 다단계 회사로 규정하여 무조건 배척하는 행위는 위험하다. 근거 없는 가짜 뉴스나 악플을 맹신하여 죄 없는 누군가를 비방하는 것과 다를 바가 없기 때문이다. - -개인적으로 사업과 적성이 일치한다면 분명 투잡을 위한 좋은 선택이 되리라 생각한다. - -하지만 비판적인 시각으로 분석해 보면 다음과 같은 한계도 보인다. - -* 생필품 영역에 국한되어 있다고는 하나 크라우드 펀딩 등으로 다양한 제품이 등장하고 있는 요즈음 다양한 `취사 선택`에 제약이 있을 수 있다. -* 스폰서의 존재 유무와 무관하게 나의 마케팅, 판매 기여도와 노력에 따라 보상 금액이 정해지는 구조는 다단계와 달리 큰 장점이다. 하지만 스폰서에게 지급되는 소량의 보너스도 엄연히 `전체 파이의 일부`이다. 만약 원가에 포함되는 파이라면 이로인해 가격 경쟁력이 떨어질 수 밖에 없는 구조가 된다. -* 사람에게 구전(입소문)으로 판매 루트를 개척해야 한다는 점은 대다수에게 `부정적인 느낌`을 준다. 특히 요즘같이 온라인에 정보가 넘쳐서 문제인 세상에 판매 경쟁력에 뒤처질 수 있을만한 요소이다. -* 일반 마트에서 판매하지 않는 `폐쇄적 판매 루트`는 본 사업 모델을 유지하기 위한 어쩔 수 없는 필요악으로 보인다. 하지만 이로 인해 엄연히 제품의 경쟁력이 떨어질 수도 있다. 고객 신뢰 문제로 이어질 수 있다는 생각도 들었다. -* 암웨이 네트워크 마케팅은 여느 회사보다도 빨랐다. 시장을 아주 오래전부터 선점하고도 오늘날의 아마존 등의 네트워킹을 앞지르지 못한것은 위에서 말한 한계점 때문이 아닐까 생각해보았다. - -그럼에도 사업 이념이 굉장히 마음에 들고, 또 본인의 적성에 맞다면 유명한 투잡 분야라는 생각이 든다. 특히 소신있고 전도 유망한 업체에 다단계라는 선입견이 사라졌으면 하는 바램이다. - -암웨이 투잡에 관심이 많거나, 다단계의 실체가 궁금하거나, 네트워크 마케팅의 사업 모델 구조가 궁금하거나 실제 운영 원리를 알고 싶은 분들께 추천드린다. - - -* [책소개 - 초연결 시대 최고의 비즈니스](http://www.yes24.com/Product/Goods/91738415) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. \ No newline at end of file diff --git a/_posts/2020-08-30-review-book-to-do-list-250.markdown b/_posts/2020-08-30-review-book-to-do-list-250.markdown deleted file mode 100644 index b3befc0f2..000000000 --- a/_posts/2020-08-30-review-book-to-do-list-250.markdown +++ /dev/null @@ -1,113 +0,0 @@ ---- -layout: post -title: "[리뷰] 일이 편해지는 TO DO LIST 250" -subtitle: "사소한 습관이 하루를 승리로 이끈다" -categories: review -tags: review book 습관 일 효율 자동화 정시퇴근 시간관리 집중력 스트레스 정보수집 학습 아이디어 커뮤니케이션 여행 -comments: true -header-img: img/review/review-book-to-do-list-250-1.png ---- - -> `꼼지락` 출판사의 `"일이 편해지는 TO DO LIST 250(호리 마사타케 저/황세정 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-to-do-list-250-1.png) - ---- - -본 도서는 `자신의 삶을 해킹하여 더 나은 삶으로 인도하는 방법`에 관한 모음집이다. - -IT분야에 몸담고 있는 나로써는 해킹(Hacking)이라는 말이 전혀 낯설지가 않다. 일반인들은 해킹을 정보를 탈취하기 위해 컴퓨터에 무단 접속하는 기술 정도로 인식하고 있겠지만 해킹의 근원은 말 그대로 핵(가장 중심)에 들어가는 행위이다. 지구의 핵을 떠올리면 더 어울릴 것이다. - -자신의 삶을 해킹하여 스스로에 대해 더 자세히 알아보고, 보다 개선할 수 있는 방법을 250가지나 제시해주는 책이다. - -어떤 조언은 이미 습관화 되었거나 실행중이라 큰 도움이 안되기도 하고, 어떤 조언은 이런 방법이 있었어? 라고 놀라며 받아들이게 되고, 또 어떤 조언은 좋아보이기는 하는데 당장 실천할만한 동기가 부여되지는 않는 여러 종류의 조언들이 담겨있다. - -사람마다 현재의 상황과 강약점이 다를 것이지만 무려 250가지나 되는 조언 중에 반드시 본인에게 큰 도움이 될 만한 조언이 숨어있다는 것이 이 책의 가장 큰 매력이라고 할 수 있겠다. - -조언을 주는 분야도 정말 다양하다. 주로 업무의 효율성을 높이는 방법과 시간을 아끼는 스킬들, 정보를 수집하고 학습하는 방법 등이 등장한다. - -아무래도 우리의 행동 패턴은 대부분 습관에서 나오기 때문에 습관에 관한 조언도 많고, 4차 산업혁명의 시대에 걸맞게 각종 모바일 App이 소개되거나 혹은 IT 기술을 활용하는 방법이 소개되기도 한다. - -심지어 일상에 스트레스를 풀고 자신을 돌아보는 여행에 대한 조언도 있고, 대인 관계 및 스트레스를 해소하는 방법이나, 아이디어를 떠올리는 발상법에 대한 조언도 있다. - -개인적으로는 다른 무엇보다 8장의 습관화 기술이 가장 마음에 들었다. 세계 유명 서적들 마다 하나씩 내세울만한 좋은 아이디어가 인용되기도 하고 습관을 좋은 방향으로 바꿀 수 있는 멋진 방법들이 제시되기도 한다. - -대략적인 개요만으로는 책의 진가를 알기 어려울 것이기에 250가지의 스킬 중 나에게 큰 도움이 된 멋진 스킬들을 간추려 소개할까 한다. - -* __습관__ - + 습관의 힘 中 습관의 고리 : 신호 - 반복행동 - 보상 - - `신호`가 될 계기를 잘 설계하는 것이 가장 중요 (사소한 것부터) - ex) 운동복을 현관에 걸어둔다. - - 매일 꼭 일어나는 일을 신호로 설정 - ex) 집 근처 역에 내리면 그김에 oo한다. - - 새로운 습관을 기존 습관에 연결한다. - - 신호와 보상을 `가시화` 한다. - ex) 왜 담배가 피우고 싶어졌는지? 피우고 나니 어떤지 - - 똑같은 신호가 발생할 때 `다른 행동으로` 바꿀 수 없는지 찾아보기 - - 가짜 기억으로 만족감이나 보상의 습관 고리를 끊기 - ex) 어린 시절에 oo먹고 탈이 났다. - + 밴저민 프랭클린의 `13가지` 덕목 습득법 - - 13가지 덕목을 1년동안 집중적으로 실천하는 주기 (13 * 4회 = 52주 = 1년) - - 요일별 습관도 좋다. - + 30일 챌린지 - - 살면서 줄곧 해보고 싶었던 일을 30일 동안만 실천해보기 - + 안전지대 벗어나기 - - 생각보다 안전하고 별 일 안일어 난다. 결정하고 양해를 구한다. - ex) 죄송하지만 정시에 퇴근하겠습니다. - + 나는 oo할거야 뒤에 `왜냐하면`의 이유를 붙이고, 하기로 `선택했다`로 표현하기 - + 하고자 하는 행동을 노력에 의존하지 않아도 될 정도로 작게 쪼개기 - + 스트릭스(Streaks) App : 12개까지 습관을 기록하고 달성률을 측정할 수 있다. - + 온라인 가상 비서 서비스 : 시간을 돈으로 사는 서비스 - + 미루기 일지 : 일을 미루는 것은 불안에 대한 방어기제이므로 왜 두려운지 적어본다. - + 히어로 만들기 : `What would Jesus do?` - -* __감정과 대인관계__ - + `행동 유도성` 활용 : 내 물건에 벨크로 테이프를 감아 촉감에 변화를 주면 남이 가져가지 않는다. - + 자리를 피하고 싶을때 : IFTTT를 활용하여 스마트 워치의 버튼을 길게 누르면 전화벨이 울리는 기술 활용 - + [밴저민 프랭클린 효과](https://theorydb.github.io/review/2020/08/28/review-book-brain-lies/) - + 분노의 대상에게 하고싶은 말을 전부 `메일로` 쓴다. (단, 수신인은 나에게) - - 링컨이 애용했던 분노 해소법 - - 적기만 해도 마음이 편안해짐, 객관화, 반성의 계기가 됨 - + 분노의 `즉시` 억제법 - - 손바닥을 쫙편다 / 어꺠를 내린다 / 말하는 속도를 천천히 - + 통화시간은 3분을 넘지 않는다. - - 지금은 o분 밖에 통화를 할 수가 없습니다. - - 오전엔 바빠 전화를 못 받을 수 있으니 용건이 있으면 이메일로 - -* __업무__ - + `43개` 폴더 정리법 - - 31개(매일)의 폴더 + 12개(월) 폴더 : 매일 불필요한 서류를 미래로 보내기 - + 재능은 다차원이므로 반드시 어딘가 활용할 방법이 있다. 단점 조차도. - + 아이디어 발상법 - - 리믹스 : 복제, 변용, 합성 - - 평소 양의 중요성 : 아침마다 아이디어를 5개씩 접는 습관. 이들을 모아 리믹스. - - 산책, 화장실, 이동중, 샤워 등의 환경 - + 구글 검색 테크닉 - - 완전히 일치하는 단어 찾기 : 따옴표 ("라이프핵") - - 제외하고 싶은 단어 : 마이너스 (-해커) - - OR : (Mac or 맥) PC - - 범위 : .. (100..200년) - - 특정 사이트만 : site:URL - - 관련 사이트 : related:URL - + 지메일 - - 메일 고유링크 / 필터활용 / 지정한 시간에 다시 새 메일처럼 수신되는 알림기능 - + 자동화 여부의 결정 기준 : 이용`횟수` (시간이 아님) - -* __일상__ - + 책장 옆에 자석시트지 붙여서 대시보드 혹은 열쇠고리 등으로 활용 - + 보이지 않는 물건 찾기 : `트래커 브라보` 기기 활용 - + 구글 맵의 `오프라인 기능` : 온라인이 불가능한 상황을 대비하여 지도 등을 미리 다운로드 - + 스캔스냅(스캐너) + 콤팩트 재단기(PK-213) - + 포켓앱의 텍스트음성변환(TTS) 기능을 활용하여 책을 음성으로 듣는다. - + 듀엣 디스플레이 앱 + `라이트닝 케이블` - + IFTTT : 특정 `장소`(특정 조건)에 도착하면 알람이 울리는 기능 - + `운`이 따르지 않으면 일상의 루틴을 바꿔본다. (낯선 무리, 다른길로 가보기, 왼손으로 쓰기 등) - -위의 내용은 내게 필요로하는 인상적인 내용을 정리한 것이다. 사람마다 각자 필요한 조언이 모두 다를 것이다. - -확실한 것은 유용한 내용이 정말 많기에 한 번 읽어보고 본인에게 필요한 꿀팁들을 정리해보는 시간을 가진다면 미래의 삶에 큰 도움이 될 것이라 생각한다. - - -* [책소개 - 일이 편해지는 TO DO LIST 250](http://www.yes24.com/Product/goods/91576176) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. \ No newline at end of file diff --git a/_posts/2020-09-01-review-book-testing-business-ideas.markdown b/_posts/2020-09-01-review-book-testing-business-ideas.markdown deleted file mode 100644 index 27d5bac43..000000000 --- a/_posts/2020-09-01-review-book-testing-business-ideas.markdown +++ /dev/null @@ -1,84 +0,0 @@ ---- -layout: post -title: "[리뷰] 비즈니스 아이디어의 탄생" -subtitle: "혁신적 아이디어 설계와 테스트, 팀 디자인, 마인드셋까지 44가지" -categories: review -tags: review book 창업 비즈니스 아이디어 검증 기업 전략 혁신 의사결정 실험 마인드셋 디자인 -comments: true -header-img: img/review/review-book-testing-business-ideas-1.png ---- - -> `비즈니스북스` 출판사의 `"비즈니스 아이디어의 탄생(데이비드 블랜드, 알렉산더 오스터왈더 저/유정식 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-testing-business-ideas-1.png) - ---- - -본 도서는 `비즈니스 아이디어를 신속하게 검증하여 인사이트를 실행으로` 이끌어 준다. - -> "이거 돈 되겠는데..!" - -살면서 번쩍이는 비즈니스 모델 혹은 아이디어가 떠올랐던 경험을 누구나 한 번쯤은 갖고 있을 것이다. 이 책은 그런 번쩍이는 아이디어가 정말 돈으로 연결될 수 있도록 아이디어의 철저한 검증 및 실험을 위한 도구라고 할 수 있겠다. - -이 책에서 다루는 구체적인 실험법은 무려 44가지에 이르기 때문에 먼저 실험과 검증을 위한 로드맵의 윤곽을 어느정도 잡고 출발하는 것이 좋다. -![개요](https://theorydb.github.io/assets/img/review/review-book-testing-business-ideas-2.png) - -개요를 간단히 설명하자면 먼저 디자인을 꾸리고 아이디어를 형성하는 방법에서 출발하여 가설, 실험, 학습, 결정, 관리에 이르는 철저한 테스트를 거친다. 이후 실험을 통해 몰랐던 인사이트를 발견하고 옳고 그름에 대한 검증을 수행한다. 마지막으로 실험에 최적화된 조직과 팀을 꾸리는 방법과 이에 필요한 조언을 소개한다. - -각 실험법은 아이디어가 그저 환상에 불과한지 아니면 보완하여 돈이 될 수 있는지 판단해주는 매우 촘촘한 그물망과도 같다. 이를 위해 `팀 정렬맵, 비즈니스 모델 캔버스, 가치 제안 캔버스, 테스트 카드, 학습카드와 구체적인 실험 기법` 등 비즈니스 모델을 현실화시킬 수 있는 다양한 도구들이 소개되는데 불확실성을 가시적으로 만들어 준다는 점에서 이런 도구들이 본 도서의 백미라고 할 수 있다. - -테스트, 실험 기법의 대부분은 고객 개발 방법론과 린 스타트업에 기초하고 있으며 불확실성과 리스크를 감소시키는데 주력한다. 특히 고객이 `관심`을 갖지 않을 가능성, 아이디어를 `실행`하지 못할 가능성, 이를 통해 `돈`을 벌지 못할 가능성에 초점을 둔다. - -이제 본 도서에서 다루는 이러한 일련의 과정을 좀 더 구체적으로 소개해볼까 한다. - ---- - -1부에서는 팀에 대해 다룬다. 먼저 아이디어를 테스트 하기 위한 전제 조건인 스킬셋이 확보되어 있는지 살펴보고 부족한 부분은 기술 도구로 갈음한다. 성공적인 팀을 위한 데이터 중시, 리스크가 큰 가정들이 옳은지 판단하기 위한 실험, 지속적인 Why를 기반으로 한 고객 중심화, 절박감에서 비롯되는 추진력, 차별화된 전술의 반복, 가정에 대한 끊임없는 의심을 통해 파괴적인 비즈니스 모델을 이끌어내는 방법이 기술되어있다. - -이를 위해 일에 전념할 수 있는 팀 환경을 구성하기 위한 조언이 소개된 후 팀이 한 방향으로 정렬될 수 있는 `팀 정렬 맵`이 소개된다. -![개요](https://theorydb.github.io/assets/img/review/review-book-testing-business-ideas-3.png) - -다음으로 아이디어를 형성하기 위한 구체적인 단계를 거친다. 가능한 많은 아이디어의 대안을 확보하고, `가치 제안 캔버스`와 `비즈니스 모델 캔버스` 등의 도구를 사용해 아이디어를 명확하고 구체적으로 표현하게 된다. 결과적으로 고객의 불만을 해결하거나 현금화하기 위한 가장 좋은 방법인지 혹은 학습한 것을 최대한 고려한 것인지에 대한 검증을 거친다. -![비즈니스 모델 캔버스](https://theorydb.github.io/assets/img/review/review-book-testing-business-ideas-4.png) -![가치 제안 캔버스](https://theorydb.github.io/assets/img/review/review-book-testing-business-ideas-5.png) - ---- - -2부에서는 테스트 방법을 다룬다. 좋은 가설을 세우기 위해 참인지, 거짓인지를 증명할 수 있는지 파악하고, 수치화 된 구체적인 기술의 포함여부, 조사대상의 범위를 좁힌 개별적인 가설인지 검토해본다. 핵심은 위에서 언급했던 관심, 실행, 돈이 되겠다. - -구체적인 실험을 위해 `테스트 카드`라는 도구를 활용한다. 하나의 가설을 여러 실험으로 진행하며 실험 강도에 따라 아래와 같이 다른 증거가 나올 수 있음을 파악하고 이에 대한 구체화 된 통찰을 얻는다. -![테스트카드](https://theorydb.github.io/assets/img/review/review-book-testing-business-ideas-6.png) - -이렇게 얻은 통찰을 행동으로 전환하기 위해 `학습카드` 도구를 활용한다. -![학습카드](https://theorydb.github.io/assets/img/review/review-book-testing-business-ideas-7.png) - -마지막으로 이러한 일련의 활동을 원할하게 진행하기 위한 일일, 주간, 월간 등의 세부 미팅 플랜을 작성하는 방법 및 실험 가이드라인이 소개된다. - ---- - -3부에서는 본격적으로 실험에 돌입하는데 이 부분이 본 도서의 꽃이라 할 수 있는 가장 중요한 파트이다. - -먼저 실험을 선택한 후 발견 실험, 검증 실험 등의 단계를 거친다. 실험순서는 기업의 유형에 따라 아래와 같이 다양한 방법이 소개되어있다. -![학습카드](https://theorydb.github.io/assets/img/review/review-book-testing-business-ideas-8.png) - -이어 고객 유형에 따른 `인터뷰이를 선정하는 구체적인 방법부터 , 설문조사, 검색 트렌드 분석, 웹 트래픽 분석, 토론 포럼, 광고, 링크추적, 캠페인, 추천프로그램, 3D 프린트 및 프로토타입, 스토리보드, 브로슈어, 설명 동영상, 가상 소유, 매시업 등의 상호작용, 컨시어지, 심플 랜딩 페이지, 크라우드 펀딩, 사전 판매, 가상판매, 팝업 스토어`에 이르기까지 구체적이고 상세한 전문 기법들이 전부 등장한다. - -나름 그동안 창업, 마케팅, 영업에 관한 책을 자주 즐겨읽었는데 이런 빈틈없는 촘촘한 그물망을 전부 다루는 도서는 거의 처음인 듯 하다. 스타트업을 위한 필수 바이블이자 유명 비즈니스 프레임워크나 도구들이 전부 집대성된 느낌이었다. - ---- - -4부에서는 실험의 본질과 유의할 점에 대해 다시금 정리하고 `실험에 적합한 조직`을 구성하는 방법을 다룬다. 비즈니스 모델을 개선하고 리더를 양성하는 방법부터 기능적인 사일로팀에서 다기능팀으로 전환해야 하는 이유와 방법, 투자 유치를 위한 조언으로 대단원의 여정을 마무리한다. - ---- - -본 도서가 가지는 또 하나의 장점은 `창의적인 발상에 도움이 되는 디자인`으로 구성되어 있다는 점이다. 일반적으로 스타트업에 관련된 책들을 읽다보면 지루하게 마련이다. 끊임없는 줄글의 연속은 물론 때론 원칙과 이론 위주의 철학적인 사고를 요구하는 수준의 딱딱한 문구에 졸음이 쏟아지기도 한다. - -그에 반해 본 도서는 예쁘고 가독성 좋은 시각 자료가 풍부하게 수록되어 있다. 덕분에 읽는 내내 눈도 덜 아프고 뭔가 재미있는 것에 도전하는 느낌이 든다. - -단순히 스타트업 창업가를 넘어서 일반 기업에 재직중인 마케팅 혹은 영업부서의 사원들도 조직의 발전에 활용할 수 있는 전문성있는 아이디어들로 채워져있다. 과연 국내 현직 전문가들도 책에서 소개되는 모든 기법들을 전부 알고 있다고 장담하긴 어려울 것이다. 일반인들도 마케팅과 비즈니스의 일련의 절차를 한 눈에 정리할 수 있는 좋은 기회이기도 하다. - -기회는 준비된 자에게 오는 법. 누구나 직업과는 뗄 수 없는 관계를 맺고 있기 때문에 모든 분들께 본 도서를 추천드린다. - - -* [책소개 - 비즈니스 아이디어의 탄생](http://www.yes24.com/Product/Goods/91868851) - diff --git a/_posts/2020-09-02-review-book-game-over.markdown b/_posts/2020-09-02-review-book-game-over.markdown deleted file mode 100644 index 3fad82161..000000000 --- a/_posts/2020-09-02-review-book-game-over.markdown +++ /dev/null @@ -1,152 +0,0 @@ ---- -layout: post -title: "[리뷰] 게임 오버 GAME OVER" -subtitle: "소수만 누리는 번영, 누구도 원치 않는 민주주의, 모두가 바라는 민족주의, 그다음은?" -categories: review -tags: review book game over 세계 위기 민주주의 민족주의 신자유주의 양적완화 부채 양극화 분배 AI 기술 감시 다양성 기후 정치 경제 사회 -comments: true -header-img: img/review/review-book-game-over-1.png ---- - -> `한빛비즈` 출판사의 `"게임 오버(한스 페터 마르틴 저/이지윤 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-game-over-1.png) - ---- - -본 도서는 `현 세계의 정세를 정확히 파악하고 내가 무엇을 해야 하는지` 일깨워주는 명작이다. - -> "뭔가 잘못되어 가고 있다." - -Game Over. 게임이 끝났다. 여기서 게임이란 현재 우리가 살고 있는 세계를 말한다. 그렇다면 무엇이 잘못되어 가고 있는 것일까? 본 도서에서 다루는 `주요 문제점`을 요약하면 다음과 같다. -* 경제 위기와 부의 분배(양극화) -* 민주주의의 퇴보 -* AI 등 기술의 발전과 감시체계 -* 다양성의 퇴색 -* 기후 변화와 환경 보전 - -저자는 이미 "세계화의 덫"으로 유명한 한스 페터 마르틴이다. 전작은 신자유주의가 가져온 20%의 부자들과 나머지 80%의 양극화 문제, 민주주의 퇴색과 미래의 전망으로 유명했던 책으로 세상을 바라보는 혜안을 선사해 준 고마운 책이다. - -이번 도서는 한 발 더 나아갔다. "Game Over"라는 제목만으로도 저자가 책에서 무엇을 시사하려는지 대략적인 의도가 느껴진다. 현 사회와 시스템의 붕괴 가능성이 심각한 수준에 이르렀으며, 무엇이 시스템을 이렇게 만들었는지, 우리는 이를 막기 위해 `무엇을 해야하는지` 경종을 울리는 내용으로 구성되어있다. - -한달 벌어 한달 먹고 사는 우리 대다수의 월급 쟁이들에게 복잡한 정치, 경제 이슈는 주 관심사가 아닐 수 있다. 더욱이 코로나19 바이러스가 판을 치는 바람에 가뜩이나 일상 생활이 쉽지 않은 상황에서 세계의 거시적인 안목을 가질 여유가 어디 있겠는가? - -하지만 자꾸 먹고 살기 어렵다고만 하지 말고 심각하게 생각해보자. 나는 언젠가 부터 왜 열심히 노력을 해도 돈을 벌기가 어려운건지 의문이 들었다. - -월급쟁이가 월급 외에 돈을 벌려면 무엇을 해야 하는가? 노력을 안하겠다는 것도 아니고 열심히 땀 흘릴테니 누가 부가 소득을 벌 수단(직장이든 투잡이든)의 장을 마련해 줄 수는 없는 것인가? - -방법을 찾기 위해 창업서적은 물론이고 경제학, 투잡과 부업을 다루는 도서를 수도 없이 읽어왔다. 물론 여러 방법이 있었다. 요즘 트렌드인 유튜버, 네이버 스마트 스토어나 쿠팡 파트너스, 해외 유통, 심지어는 배달업까지 다양한 방법이 있긴 하다. - -그런데 우리는 왜 그것들에 쉽사리 뛰어들지 못할까? 그런 수단으로 돈을 벌기에 노력은 물론 만만치 않은 자본이나 시간적 투자가 필요하기 때문이다. - -더욱이 이미 날고 기는 지식을 보유한 시장 선점자들이 있다. 효율적인 높은 수준의 교육없이는 뛰어들기가 어렵다. 되려 선점한 이들에게 크몽과 같은 재능 플랫폼에서 돈을 주고 배운다. 돈을 벌려고 뛰어들다가 돈만 쓰고 시간만 버리기 일쑤다. - -무엇이 문제일까? 우리가 문제일까? 아니면 시스템이 문제일까? 혹시 나와 같은 생각을 가졌던 분이 있다면 이 책이 그 답을 알려줄 것이다. - ---- -* __경제 위기와 부의 분배(양극화)__ - -앞서 언급한 주요 문제점 중 우선 `경제 문제`에 대해 읽고 느낀 점을 요약해보겠다. - -일본이 잃어버린 30년이라 불리는 경제위기의 늪에 처해있다. 그렇다고 다른 나라라고 해서 상황이 크게 다른 것도 아니다. - -다양한 원인이 있겠지만 일본이 경기 침체의 늪에 빠진 가장 큰 원인은 국가 부채를 완화하고 재정 건전성을 확보하고자 무리한 개혁을 단행하다 디플레이션에 빠진 경제 정책 실패를 꼽을 수 있다. 이는 얀베 유키오가 저술한 [일본 경제 30년사](https://theorydb.github.io/review/2020/05/16/review-book-japan-economy-30years/)에 자세히 언급되어 있다. - -세계는 일본의 전철을 밟지 않고자 양적 완화를 단행해왔다. 경기 침체에 빠져들지 않기 위해서는 돈을 찍어내야 했다. 돈을 찍어내야 소비 주체인 가계에 구매력이 생기고 소비가 활성화되면 기업의 생산량이 증가하고 경기가 부양되며 지속적으로 경제가 성장한다. 선순환이 이루어지는 경제 모델의 이상향이다. - -하지만 레버리지라는 단어로 위시되는 부작용이 일어났다. 세계의 부호들과 눈치 빠른 중산층은 이미 알고 있었다. 2008년 금융 위기 사태와 같은 큰 위기가 있을 때마다 중앙 은행은 돈을 찍어낸다는 사실을. 그 얘기인 즉슨 시중에 돈의 가치가 남아돌 것이므로 돈과 반대 진영에 있는 자산을 보유하고 있어야 한다는 사실임을 의미한다. - -국가가 돈을 찍어 막대한 부채에 시달리는 대도 부동산을 필두로 한 자산 가격을 높이는데 활용되는 기 현상. 그럼에도 중앙 은행에는 달리 선택지가 없다. 이미 돌이킬 수 없는 국가 부채에 시달려 양적 완화를 피하면 경기 침체를 맞이할 수 밖에 없는 상황에 이른 것이다. -![부채](https://theorydb.github.io/assets/img/review/review-book-game-over-6.png) - -부채를 해소하고 재정 건전성을 확보하고자 지금 경기 침체를 맞이하기로 선택한다면? 독일의 저명한 거시경제학자 다니엘 슈텔터는 [코로노믹스](https://theorydb.github.io/review/2020/07/04/review-book-coronomics/)에서 다음과 같이 말한다. - -> “패닉에 빠지려면 먼저 빠져라!“라는 좌우명에 따르라. - -즉, 그동안 연쇄적으로 쌓인 거품이 어떤 여파를 미칠지는 상상이 가지 않을 정도로 심각할 것이라는 의미이다. - -그렇다면 양적 완화는 언제까지 가능할까? 아무도 모른다. 그 끝은 어떨까? 역시 아무도 모른다. 하지만 본 도서에서 언급하는 방향은 대략적으로 이러하다. - -우선 `국가부채`가 감당할 수 없는 수준에 이르게 되면 `통화 개혁`이 필연적으로 발생한다. 통화 개혁은 전 경제 주체에 막대한 피해를 입힌다. 인위적으로 모든 자신 가치를 낮추는 작업이 동반될 것이다. 게다가 미국외의 국가들은 기축 통화를 보유하고 있지않다. 결국 `통화 전쟁`의 여파도 감수해야 한다. - -난 위대한 경제학자도 아니고 뛰어난 경제 지식을 보유하지 못했지만 자본주의 경제 체계는 아직도 쉽사리 이해되지 않는다. 어린 시절 누구나 생각해 봤을 법한 질문부터 그러하다. - -> 그냥 세금 걷어서 못사는 집마다 돈 펑펑 주면 안되나? - -불가능한 것을 누구나 알고 있지만 왜 안되는 것인지 이 질문에 대한 대답을 정확히 알지 못하면 알고 있는 경제학 지식은 뜬 구름에 지나지 않는다고 생각한다. - -개인적으로 가장 큰 문제는 기축 통화와 힘의 논리라 생각한다. 세계가 힘의 논리에 의해 강제 약속된 달러라는 기축 통화 앞에 무슨 자유무역과 시장경제 체계가 존재한다는 것인지? - -민족주의의 강세에 따른 무역 관세 보복 행위등도 결국은 힘의 논리에 좌우된다. 안타깝게도 현 시점 전 세계에는 트럼프를 대표 주자로 위시한 민족주의 바람이 거세게 불고 있다. - -경제 문제는 그렇다치고 `부의 분배`와 관련된 형평성 문제를 살펴보자. 이는 저자가 본 도서에서 가장 강력히 주장을 피력하는 논제이기도 하다. - -2018년을 기준으로 상위 소득 0.9%(약 4,680만명)의 부자들이 전 세계 부의 44%(약 158조 달러)를 차지하는 양극화의 정점에 서 있다. 부호들의 순위가 궁금하다면 저자가 언급한 [포브스 집계 전세계 부의 순위 LINK](https://www.forbes.com/billionaires/#version:realtime)를 참고하시기 바란다. - -100명 중 1명도 안되는 사람이 거의 절반을 갖고 있다는 사실 놀랍지 않은가? 알고 나면 상당히 화가 날 법도 한데 안타깝게도 세상 사람 대다수는 이러한 사실을 모르고 있는 듯 하다. - -아래 그림은 1980 ~ 2016년 전 세계 소득 계층별 소득증가 추이 도표인데 양극화와 얼만큼 심각한지 따로 설명이 필요 없을 듯 하다. -![양극화1980](https://theorydb.github.io/assets/img/review/review-book-game-over-2.png) -![양극화2016](https://theorydb.github.io/assets/img/review/review-book-game-over-3.png) - -양극화의 원인은 무엇일까? 책에서는 다양하고 복잡한 변인들을 다루지만 가장 크게 꼽을 수 있는 두가지가 있다. 하나는 `실질 임금의 동결, 다른 하나는 세금 문제`이다. - -아래 그림을 보면 시간이 지날수록 생산성은 오르는데 임금은 수십년간 비슷한 수준이다. 즉 일을 많이 해서 많은 이윤을 냈지만 월급은 그대로라는 의미이고 앞서 개인적으로 푸념했던 직장인들의 유일한 소득원인 임금이 동결되면서 저자가 말하는 80%의 사람들의 자산이 쌓일리가 없고 양극화 문제로 귀결되는 것은 불 보듯 뻔한 일이 되어버린 것이다. -![실질임금](https://theorydb.github.io/assets/img/review/review-book-game-over-4.png) - -다음 문제인 세금 문제도 마찬가지이다. 기업 부담세는 계속 줄어 들고, 80% 노동자들의 세금은 되려 늘어난다. 돈을 더 많이 번 놈이 세금은 덜 내니, 덜 번 놈이 더 많이 내야하는 구조이다. -![세금](https://theorydb.github.io/assets/img/review/review-book-game-over-5.png) - -가뜩이나 앞서 살펴봤듯 세계의 지속적인 양적완화 정책으로 국채는 산더미인데 그나마도 이미 자산이 없는 80%의 파이에서 국가 부채까지 충당하라니. - -이 정도면 우리가 살고 있는 정치, 경제 시스템을 신뢰할 수 있는 것인지 의심하기에 충분한 지경이 아닌가? 그럼에도 우리는 [학습된 무기력](https://theorydb.github.io/review/2020/08/28/review-book-brain-lies/)에 빠져있다. 경제 사범은 감방에서 몇 년 살다가 일확천금으로 호의호식하는 것이 당연하고, 탈세 기업인에게도 그 정도 벌었으면 그 정도 삥칠수도 있다는 등의 자애로운 관용을 베풀고 있다. - -그리고 돌아서면 임금 동결과 세금 불균형의 문제에 먹고 살기 힘들다고 눈물을 흘릴 것이 자명한데도 두 사건에 연관성은 전혀 생각하지 않는 듯 하다. 저자의 표현대로 그럭저럭 시스템에 순응해서 살다보니 이 지경에 이르렀다. `왜 아무도 이런 점에 불만을 제기하지 않는지` 시스템을 바꾸기 위해 정치, 경제, 디지털 등의 자발적 모임에 참여하지 않는지 저자는 의문을 제기한다. - ---- -* __민주주의의 퇴보__ - -민주주의 역시 퇴보하고 있다. 경제가 엉망인 이유도 한 몫하고 있고, 트럼프 등으로 대표되는 민족주의의 출현도 한 몫한다. 중국이 배타적으로 감시형 민주주의를 추구하고 각 국에 완력을 행사하는 것도 큰 이유이다. - -하지만 저자가 말하는 가장 심각한 현상은 `민주주의의 부재`이다. 꼬리에 꼬리를 무는 재귀식 표현이라 이상하지만 민주주의는 곧 정치 참여를 의미한다. 개인(국민)이 주권을 행사하는 정치 이념이기 때문이다. - -즉, 아무도 요즘 정치에 참여를 하지 않고 관심도 없다. 저자가 말하듯 80년대 베이비붐 시대 이후로 정치에 관심을 가지는 사람이 극히 적어졌다. 정치에 참여하지 않고 세상을 바꿀 수 있을까? - -[퇴근길 인문학 수업 - 뉴노멀편](https://theorydb.github.io/review/2020/08/02/review-book-class-way-home-new-normal/)을 보면 자유와 평등과 관련된 장이 나온다. 프랑스 혁명 전반을 짚어보는 내용인데 그저 역사를 배우는 수준을 넘어서, 그 안에 사람이 정치에 참여해 세상의 시스템을 어떻게 바꿀 수 있는지 모든 것이 담겨있다. - -민주주의가 필연적으로 등장했던 배경부터, 각기 다른 생각을 가진 구성원들의 심리와 움직임을 한 눈에 정리할 수 있다. 이를 한 번 정리하고 나면 기업 내 노동조합이 움직이는 흐름이 쉽게 예측되고, 현 시점 민족주의가 부각되는 이유도 보이게 된다. - -나 역시 앞서 언급했던 80년 이후 출생자로써 정치에 관심없는 문외한이다. 하지만 지금의 자유를 누리고 사는 것은 앞선 세대의 피와 희생 덕분에 이상적인 정치 체계가 검토된 일종의 정치 향유의 시대를 살고 있는 혜택임을 잊지 말아야 한다고 느꼈다. - -한 세대가 지나가면 저자가 언급한대로 이전 세대의 민주주의 정신은 물려받지 못하게 된다. 그들이 갚진 투쟁과 피로 얻어낸 권리의 소중함을 누리고만 살았기에 자유가 없을때의 시절을 상상하지 못한다. 의례 공기와 같이 당연히 누릴 수 있는 것으로 생각하고 살 것이다. - -어쩌면 지금의 민족주의 열풍은 그런 아픔의 시간이 없는 세대들에게 필연적인 선택의 길이 되어버린건 아닐런지? - ---- -* __AI 등 기술의 발전과 감시체계, 그리고...__ - -또 다른 Game Over를 일으키는 주요 요인은 AI를 위시한 기술의 발전과 정보의 중요성을 들 수 있다. 개인을 감시할 수 있을만큼의 충분한 정보는 민주주의를 퇴보시키는 결정적인 족쇄가 된다. - -물론 기술에는 선도 악도 없다. 하지만 이에 대한 활용법을 결정할 수 있는 결정권자들도 믿을 수 있을까? -![감시](https://theorydb.github.io/assets/img/review/review-book-game-over-7.png) - -그 외 이민문제, 다양성 등 인권감수성 문제, 지구 온난화와 관련 사회 전반의 현상을 매우 상세하게 다루고 있으나 무려 551 페이지에 이르는 방대한 책의 분량을 모두 정리하기엔 무리가 있어 본 리뷰는 이 중에서 저자가 가장 강조하는 부분만 언급했다. 그럼에도 스스로 느낀 것을 녹여 정리하다보니 어느덧 분량이 과해져서 이만 리뷰를 정리할까 한다. - ---- - -책은 전반적으로 앞서 말한 굵직한 주제 몇가지를 가지고 상세하게 이야기를 풀어내는 방식으로 전개가 된다. 덕분에 마치 소설 읽듯 흥미진진한 부분이 많고, 다양한 실제 사례가 언급되며 다양한 인물들의 인용이 주를 이어 방대한 분량에 비해 생각보다 빨리 읽을 수 있다. - -번역의 질 또한 뛰어나 무리없이 읽을 수 있다. 간혹 아리송한 문장이 나오기도 하지만 앞서 언급했듯 저자의 저술방식이 하나의 주제에 깊숙히 파고 드는 방식이므로 주위 문맥에 의해 이해함에 무리가 없었다. - -더불어 `세계 각국의 현상황과 문제점`을 비교적 상세히 조망해 볼 수 있다는 점이 도서의 큰 매력 요소 중 하나이다. - -마지막으로 새로운 게임을 위한 20가지 아이디어가 소개되는데 각 장을 유심히 읽었다면 저자가 말하고자 하는 메시지가 한 눈에 정리될 것이다. - -개구리가 서서히 끓는 물에 자신도 모르게 편안함을 느끼며 죽어가듯 어느덧 부당한 시스템을 저항없이 받아들이는 우리도 당연히 결정된 Game Over를 향해 치닫고 있는 것은 아닐까? - -거창한 운동권이니 반 사회적인 고리타분한 정치 사상 따위를 언급하고 싶지는 않다. 하지만 저자가 말한대로 적어도 나 자신 개인이 가진 주권을 제대로 행사해야 할 절실한 시점이 온 것 같다. 자유와 소중함을 잃고나서야 후회한다면 다시 회복하는데 이젠 평생이 모자를지도 모른다는 생각이 들었다. - -꼭 민주주의의 참여외에도 지구촌의 경제, 정치, 사회, 기술의 흐름을 한 눈에 알기쉽게 정리하고 싶은 분들은 꼭 일독하실 것을 추천드린다. 세상을 바라보는 혜안을 얻을 수 있을 것이다. - -* [책소개 - 게임 오버](http://www.yes24.com/Product/Goods/91771970?OzSrank=1) - diff --git a/_posts/2020-09-04-review-book-principles.markdown b/_posts/2020-09-04-review-book-principles.markdown deleted file mode 100644 index 67b2de5d8..000000000 --- a/_posts/2020-09-04-review-book-principles.markdown +++ /dev/null @@ -1,165 +0,0 @@ ---- -layout: post -title: "[리뷰] 레이 달리오의 원칙" -subtitle: "PRINCIPLES" -categories: review -tags: review book principles 원칙 레이달리오 인사이트 인생 사업 헤지펀드 경영 일 자서전 -comments: true -header-img: img/review/review-book-principles-1.png ---- - -> `한빛비즈` 출판사의 `"원칙(레이 달리오 저/고영태 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-principles-1.png) - ---- - -본 도서는 `20조 자산가가 직접 자신의 삶을 저술한 자서전이자, 인생을 성공으로 이끈 원칙`이 담긴 책이다. - -독서는 내게 있어 어릴적부터 지속되어 온 너무 즐거운 취미이자 삶의 동반자와도 같다. 성공의 대명사 워런 버핏과 점심 한 끼 하려면 54억을 줘야 하는데 점심 한 끼에서 얻을 수 있는 지식과 통찰력이 그들의 정수가 담긴 책에 비해 소중한 것일까? - -무엇보다 독서의 장점은 본 도서를 쓴 레이 달리오 부터 워런 버핏에 이르기까지 세계적으로 성공한 거장을 만나는 데 54억은 커녕 보통의 점심값 한 끼면 만날 수 있다는 점이다. 뿐만이랴. 돌아가신 아인슈타인, 스티브 잡스와 같은 다시는 만나지 못할 위인들과 생각을 나눌수도 있다. - -그래서 책 중에서도 스스로의 인생을 쓴 자서전이나 그들이 왜 생각하고, 어떻게 생각하는지를 담은 철학 서적을 지극히 좋아한다. 아직 그럴만한 수준엔 한참 부족하지만 나중에는 그들에게 왜 사는지에 대한 답도 얻을 수 있을 것이다. - -본 도서에는 레이 달리오의 원칙이 담겨있다. - -> 원칙은 왜 중요한 것일까? - -그가 서문에서 이렇게 밝힌다. 사람은 누구에게나 `알지 못하는 것에 대응`해야 하는 순간이 온다. 이런 상황들을 유형으로 분류하고 대응 방식에 대한 원칙을 갖고 있다면 더 빨리 더 좋은 결정을 내릴 수 있다. - -세상에 자신이 얻은 소중한 인사이트를 공유하는 것 또한 저자의 인생 목표이기에 본 도서를 읽는 독자분들도 이 책을 참고로 하여 자신의 원칙을 세울 것을 권고한다. 저자가 제시하는 자신만의 원칙을 세우는 방법은 다음 3가지의 질문에서 출발한다. - -* 1.무엇을 원하는가? -* 2.진실은 무엇인가? -* 3.2번 질문의 관점에서 1번 질문을 달성하려면 무엇을 해야 하는가? - -자수성가. 월급만으로 먹고 살기엔 쉽지 않은 요즈음 재테크와 투잡과 관련된 책 특히, 자주성가한 이들의 도서가 유행처럼 읽히고 있다. 어느덧 식상해져 버린 단어이지만 그럼에도 의미를 부여할 수 밖에 없는 중요한 이유가 있다. - -[게임오버](https://theorydb.github.io/review/2020/09/02/review-book-game-over/)나 [코로노믹스](https://theorydb.github.io/review/2020/07/04/review-book-coronomics/)와 같은 명저를 보면 알 수 있듯 세상에 흙수저와 금수저의 격차는 어마어마하다. 흙수저로 태어나 스스로 자수성가하기엔 오늘날 자본주의 시스템은 결코 녹록치 않다. - -때문에 나로써는 흙수저로 태어나 모진 시련을 딛고 스스로의 철학과 신념으로 20조의 자산가가 되어 성공한 그의 도전과 원칙이 담긴 본 도서를 읽지 않을 수 없었다. - -책을 읽는 내내 그에게 보통 사람과는 다른 몇가지 특별한 능력이 있다는 것을 발견할 수 있었다. 책에서 유난히 자주 등장하는 단어 - `인과관계, 시스템(기계), 원칙` - 가 등장할 때마다 철학적 사고를 지닌 생각의 구조를 엿볼 수 있다. 자연의 섭리, 진리에 한 발 더 다가가고 싶어 스스로의 계(System)를 만들려는 그의 의지가 돋보인다. 한마디로 그에게는 원칙이라는 무거운 단어를 언급할 만한 자격이 충분한 것 같다. - -원칙이라는 단어는 매우 조심스럽다. 아무리 훌륭한 원칙이 담겨있어도 독자가 이해할 수 없어 어렵거나 추상적인 전달에 그친다면 결국 개똥철학에 지나지 않을 것이다. 분명 같은 글자를 담고 있는 책인데 저자와 독자의 이해 수준이 다르고 보는 시야의 범위가 달라 무용지물이 되어 버릴 것이다. - ---- - -그런점에서 이 책이 보다 각별한 이유는 1부 - `인생 여정` - 파트를 담고 있기 때문이다. 저자가 어떻게 살아왔는지, 어떤 위기를 겪었으며, 그 과정을 어떻게 극복했는지, 그 과정에서 탄생한 그의 원칙은 무엇이었는지, 외롭고 괴로운 감정의 상태는 어땠는지 등의 구체적인 사례와 실화를 읽음으로써 원칙이 자연스럽게 스며들 수 있는 배경 지식을 습득할 수 있다. - -1부는 원칙 하나하나가 그저 교과서적인 말에서 그치지 않고 우리의 삶 속에서 살아 녹아 흐를 수 있게 하는 소중한 기록의 모임이다. 조지프 캠벨의 `영웅의 여정`이라는 프레임에 빗대어 그가 살아 온 여정을 시간순으로 아래 그림과 같이 전개한다. -![여정](https://theorydb.github.io/assets/img/review/review-book-principles-2.png) - -이야기의 시작은 하고 싶지 않은 일을 할 때는 저항하며 학업 성적마저도 포기했고, 하고 싶은 일만큼은 무슨일이 있어도 완수해내는 평범함을 두려워 했던 그의 유년 시절에서 출발한다. 어린 나이부터 주식 투자를 시작해 석유 파동을 비롯한 사상 최고 수준의 변동성과 위험성을 가진 미국 시장에서 금과 달러의 인과 관계, 각국 통화와의 관계, 정부 관리들의 거짓말에 이르기까지 시장의 살아있는 특징들을 두루 섭렵하며 스스로의 원칙을 만들어가기 시작한다. - -하지만 두번의 큰 인생의 나락을 거치면서 시간에 관계없이 보편적으로 현실을 수용하고 대응에 초점을 맞춘 그의 원칙이 형성되기 시작한다. 이른바 `투자의 성배`. - -개인적으로 투자에는 문외한에 가깝지만 예전 주식 투자로 큰 손실을 입으면서 느낀 점이 있다. 초보자일수록 주식의 Y축(가격)만 보려하지만 사실 승패는 X축(시간)에 달려있다는 것. 그의 원칙을 읽어나가며 내 인생의 이력과 검증을 하다보면 느끼고 얻는 것이 많다. - -결국 그는 그만의 원칙을 세우고 많은 실패를 통한 철저한 검증을 거치며 이를 컴퓨터 알고리즘으로 구현해낸다. 그의 원칙이 녹아있는 시스템. 그것이 오늘날 그를 20조의 자산가로 만들어 준 일등 공신이 된다. 그가 세운 브리지워터 회사는 이를 통해 수익을 실현하고, 위험을 분산시킬 수 있는 사업을 지속할 수 있게 된다. - -이후 회사가 어떤 과정을 거치면서 번창해 왔는지 비결이 공개된다. 일과 조직이라는 또 하나의 도전 과제와 부딪히며 그 안에서 만난 새로운 시련을 해결하는 과정에서 또 다른 유형의 원칙을 만들게 된다. 철학적인 마인드로 기업의 생리를 파악하고 조직을 발전으로 이끈 경영자로써의 그의 자질이 돋보인다. - -마지막으로 위대한 선물에 대한 보답을 소개하며 그의 인생 여정은 마무리된다. 이 책을 쓴 이유도 여기에서 나온다. 세상에 노력하여 받은 선물을 다시 세상에 돌리기 위해 스스로 배우고 깨달은 것들을 책을 통해 환원하는 것이다. 이 챕터에는 이제 할아버지가 되어버린 그의 인자함과 인생에 대한 관록, 그의 혜안이 곳곳에 묻어나와 많은 것들을 깨닫게 해준다. - -이렇게 그의 삶의 일대기를 간접 경험함으로써 이제 그의 원칙을 배우고 독자 나름의 기준으로 재단해 볼 법한 최소한의 배경을 얻을 수 있다. 사실 성격이 급한 나로써는 1부를 건너뛰고 2부 부터 읽기 시작했는데 도통 추상적이고 개념이 와 닿지 않아 2부의 100페이지도 채 읽지 못한채 1부로 선회했음을 밝혀둔다. - -1부를 읽고나니 2부와 3부가 술술 읽혔다. 하지만 그럼에도 아직도 20 ~ 30%는 잘 읽히지 않는다. 아마도 나의 경험이 그에 비해 턱없이 부족하거나, 시련의 길을 거쳐온 짬밥의 차이가 아닐까 생각이 든다. 그나마 다행인 것은 이어질 2부, 3부 역시 구체적인 경험 사례가 이해를 돕는다. - ---- - -2부는 `인생의 원칙`을 다룬다. 먼저 현실을 있는 그대로 수용(인정)하고 진솔함과 투명성을 바탕으로 객관적으로 대처할 것을 주문한다. - -이는 앞으로의 발전을 위한 필수적인 전제 조건으로써, 데일카네기의 [인간관계론](https://theorydb.github.io/review/2020/04/24/review-book-how-to-win-friends-and-influence-people/)이나 할 엘로드의 [미라클 모닝 기적의 공식](https://theorydb.github.io/review/2020/08/13/review-book-miracle-equation/) 등 여타 다른 명저에서도 매우 강조한 바 있다. - -이어 미래에 대응하기 위한 발전 과정을 5단계로 설명한다. 이는 `목표 설정 - 문제 발견 - 진단 - 해결 계획 수립 - 실천`의 과정을 따른다. - -그 과정에서 자아의 장벽과 사각지대의 장벽이 우리를 편향에 젖게 만들기 때문에 극단적으로 개방적인 사고가 중요함을 일깨워 준다. 열쇠는 나의 의견에 동의하지 않는 똑똑한 사람들을 비롯한 타인들의 지혜에 달려있다. 도움을 받는 과정에 인간 관계는 피할 수 없는 과제이므로 본 도서에서는 우리의 뇌와 감정 매커니즘까지 깊숙히 들여다 본다. - -이를 읽으며 감명깊었던 원칙 몇가지를 인용해본다. - -> 다른 사람들이 당신을 어떻게 생각하는지에 대한 두려움이 당신을 가로막지 못하게 하라. - -> 당신의 관점에 집착하여 실제 사물들이 어떤 것인지 배울 기회를 놓치지 마라. - -> 결국 진화하지 않으면 죽는다. (자연의 법칙) - -> 개인의 보상은 단체의 `목표와 일치`해야 한다. (비전이 일치하는지도 모르고 취업에 목말라 시간을 낭비하는 인생들이 많다는 것을 유념해야 한다고 느꼈다.) - -> 자신을 큰 기계안에 작동하는 기계로 생각하라. 그리고 그 기계를 고치는 능력이 있다는 사실을 깨달아라. - -> 자신을 객관적으로 보기는 어렵기 때문에, 다른 사람들의 조언과 전체적인 증거에 의존해야 한다. - -> 해결책보다는 `무엇`이 문제인가에 더 집중하라. - -> 그들에게서 무엇을 기대할 수 있는지 찾아라. - -> 5단계의 과정 중 어느 단계에서 실수를 하는지 파악하라. - -> 가장 중요한 의사결정 가운데 하나는 `누구에게 질문을` 하는가이다. - -> 가까이서 보면 모든 것이 더 커 보인다. - -> `새로운 것`은 훌륭한 것과 비교해 과대평가된다. - -> `80/20의 규칙`으로 핵심 20%의 일만 집중하여 일하라. - -이는 나에게 필요한 원칙을 위주로 정리한 것이며 본 리뷰를 읽는 독자분들께는 언급하지 않은 더 훌륭한 원칙이 존재할 것이다. - -함께 일할 때 원하는 것을 성취하는 능력은 홀로 일할 때보다 훨씬 더 커진다. 결과적으로 중요한 해결책은 열쇠는 사람에게 달려있는 것이다. 대신 이를 위해 피할 수 없는 일과 조직에서의 원칙이 필요해진다. 이는 이어지는 3부에 더욱 자세히 소개된다. - ---- - -3부 `일의 원칙`에는 그가 위대한 조직을 만들기 위해 노력했던 각고의 과정이 담겨있다. 일의 원칙부터 올바른 문화 만들기에 이르기까지 상당히 방대한 분량으로 이루어져있다. -![일의 원칙](https://theorydb.github.io/assets/img/review/review-book-principles-3.png) - -이 파트를 활용하는 방법은 자신이 처한 위치에 따라 다양할 것 같다. 조직의 리더라면 저자와 유사한 상황으로 자체로서 적합한 솔루션이 될 것이고, 중간 관리자라면 조직에 기여하고 개인적인 승진의 목표를 이루는데 유익한 팁들이 넘쳐날 것이다. - -대부분의 사회 초년생들이 저지르는 실수는 스스로의 미래를 조직과 전혀 교집합이 없는 상태로 상상한다는 것이다. 나 역시 20년 가까운 직장생활을 거치며 당시의 호기로움이 그저 객기였음을 이제서야 깨닫곤 한다. 리더십과 당장 관련이 적은 사회 초년생들도 본 도서와 함께한다면 스스로와 조직의 비전, 문화의 중요성을 인지하고 더 확실한 방향으로 자신의 꿈을 설계하는데 큰 도움이 될 것이라 생각한다. - -본 파트에서 인상적이었던 원칙 몇가지를 소개해본다. - -> `신뢰도`에 가중치를 주는 아이디어 성과주의는 효율적인 결정을 내리는 최선의 시스템이다. - -> `면전`에서 직접 비난하지 않을 것이라면 어떤 사람에 대해 아무것도 말하지 마라. - -> 공유하기 가장 어려운 것을 공유하라. - -> 공정성과 너그러움의 차이를 분명하게 이해하라. - -> 실수는 괜찮지만, 실수에서 배우지 못하는 것은 용납되지 않는다. - -> 집요하게 대화를 방해하는 행동을 피하려면 2분 규칙을 활용하라. - -> `성공적으로 완수할 수 없다면` 다른 사람에게 어떻게 하라고 말할 생각도 하지 마라. - -> 당신은 교사, 학생, 동료 중 어떤 역할인가? - -> 누구에게 질문할 것인지 충분히 생각하라. - -> 답을 찾는 목적이라면 관련성이 높은 사람 위주로, 교육이나 단결이 목적이라면 폭넓은 범위의 사람들을 포함시켜라. - -> 당신이 찾는 사람을 발견할 수 있는 면접관을 선택하라. - -> 사례연구 2단계 : `왜` 그런 결과가 생성되었는가? `무엇`을 할 것인가? - -> 조직에서 무엇을 기대할 수 있는지 알아내기 위해 깊이 탐구하라. - -> 끓는 물 속 개구리 증후군, 집단사고에 조심하라. - -> `익명`의 표현(우리, 그들)을 사용하지 마라. - -> 지배구조를 간과하지 마라. - -![지배구조](https://theorydb.github.io/assets/img/review/review-book-principles-4.png) - ---- - -70년의 치열한 인생을 고작 40년의 부족한 인생으로 고작 1회독 후 작성한 본 리뷰의 부끄러움과 부족함을 밝힌다. 비록 리뷰는 부족할지만 책은 방대하고 심오하다. 보다 많은 원칙을 흡수하고자 다른 이들의 리뷰도 많이 참조하였는데 동영상으로 소개되어 이해하기 쉽고, 다른 분들보다 깨어있는 시각으로 소개된 리뷰가 있어 소개할까 한다. -* [이상한리뷰의앨리스 Youtube 채널 - 20조 자산가가 혼자서 성공을 이룬 방법 (레이 달리오의 원칙)](https://www.youtube.com/watch?v=Xo_KGDkRq74&list=UUzmyfZl7lxV-lLZxpSJWsWQ&index=25&t=0s) - -좋은 반면 거울로 삼을 수 있는 위대한 원칙을 곁에두고 스스로의 원칙을 만들어 예기치 못한 삶의 어려움에 대응할 수 있도록 스스로의 원칙을 만들길 권유한다. 이것이 본 도서를 필독해야 할 이유이다. - -* [책소개 - 원칙](http://www.yes24.com/Product/Goods/61186169) - diff --git a/_posts/2020-09-11-review-book-bilingual-brain.markdown b/_posts/2020-09-11-review-book-bilingual-brain.markdown deleted file mode 100644 index 718ad7a14..000000000 --- a/_posts/2020-09-11-review-book-bilingual-brain.markdown +++ /dev/null @@ -1,161 +0,0 @@ ---- -layout: post -title: "[리뷰] 언어의 뇌과학" -subtitle: "이중언어자의 뇌로 보는 언어의 비밀" -categories: review -tags: review book bilingual 이중언어구사자 뇌 아기 언어 소리음절 전이학습 의사결정 -comments: true -header-img: img/review/review-book-bilingual-brain-1.png ---- - -> `현대지성` 출판사의 `"언어의 뇌과학(알베르트 코스타 저/김유경 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-bilingual-brain-1.png) - ---- - -> 아기는 어떻게 언어를 습득할까? 이중 언어 구사자들은 주의력이 더 좋을까? 혹은 머리가 더 좋거나 치매에 걸릴 확률이 줄어들까? 그리고 이런 것들은 어떻게 측정할까? - -본 도서는 위 질문들에 대한 대답이다. 저자는 평생에 걸쳐 연구한 이중 언어 사용과 뇌라는 주제를 이해하기 쉽게 저술한다. - -우리가 일상에서 흔히 접할 수 있지만 궁금했던 주제에 의문을 던지는 것으로 출발하여 특정 가설이나 질문에 대한 답을 찾는 과정에 있어 기발하고 흥미로운 실험법을 소개하고 그에 대한 이해하기 쉬운 답을 들려주는 구성이 일품이다. - -책은 크게 5가지 주제의 내용을 담고 있다. `아기의 탄생에서 출발하여 한 사람이 언어를 습득해나가는 매커니즘, 이중 언어자와 단일 언어자의 차이, 이중 언어가 의사 결정에 미치는 영향, 이중 언어를 익히기 위한 조언, 마지막으로 흥미로운 실험법과 과학적 측정 방법`이 소개된다. - -영어와 같은 외국어를 빨리 익히는 방법을 다루는 책은 아니다. 이미 그런 책들은 시중에 널리고 널렸기에 큰 의미가 없을 듯 하고, 본 도서에서 중점적으로 다루는 부분은 이중 언어자와 단일 언어자의 비교가 되겠다. - -개인적으로는 과학적 실험법과 측정법을 소개한 파트도 마음에 들었다. AI에 관심이 많은 나로써는 AI 모델에 한 부분으로 활용된 행동 경제학 모델이 포함된 것이나, RNN등의 모델에 활용되는 전이 학습의 개념 등 AI에 영향을 준 기술들의 실체를 확인하며 앎의 즐거움도 누릴 수 있었다. -![전이 학습](https://theorydb.github.io/assets/img/review/review-book-bilingual-brain-2.png) - -위에서 개인적으로 정리한 이 책의 5가지 굵직한 주제를 중심으로 인상깊었던 내용을 중심으로 아래와 같이 요약해 본다. - ---- - -* __일반적인 언어 습득의 매커니즘__ - + 아기들은 `구두언어`로 처음 단어를 구분한다. 문자 언어와는 달리 구두 언어에는 공백이 없기 때문에 소리 사슬에 빈칸이 있음을 추측하여 단어를 구분하지 않는다. - - 대신 `소리 사슬`을 잘 나누는 일정한 규칙이 있다는데 예를 들면 스페인어에서는 str로 시작하거나 끝나는 단어가 없음을 예로 들 수 있다. - - 더불어 `전이 효과`를 들 수 있다. tupiro라는 단어로 예를 들면 tu 다음에는 pi가 따라오고 그 뒤에는 ro 음절이 따라오는 경우의 수가 많다. 서로 다른 단어들 사이의 전이 확률을 파악하는 머리속에 무척 강력한 통계 컴퓨터가 있는 셈이다. - - 한편 특정 언어에만 존재하는 음운적 속성도 있다. 중국어의 `성조`가 그 예이다. 이런 소리에서 구별할 수 있는 온갖 특징을 활용하여 아이는 소리 사슬을 구분하며 생후 1년 이내 이 구별 능력이 최고조에 달한다. - - + 이후 시각이 발달하면 `조음 운동`을 유심히 본다. 성인도 주위 소음이 심하거나 잘 모르는 말이 나올때는 상대방의 입술을 보는데 이중 언어자 아기들은 조음 운동이 더욱 발달한다. 생후 1년 6개월쯤 되었을 때는 어휘를 폭발적으로 습득한다. - - + 우리는 우리가 알고 있거나 믿고 있던 신념과 상충되는 정보를 입력받는 경우 모호함을 제거하고자 노력한다. 이를 `상호 배타성 원리`라 하는데 이 때문에 편향이 발생한다. 이중 언어자들은 하나의 개념이 두 단어와 연결되어 있기에 편향이 덜하다. - - + 특정 상황에서 습득 연령이 습득 능력보다 중요하다는 실험 결과가 있다. - - + 고등 교육을 받는 사람은 대개 3.5만개의 단어를 알고 있다. 하지만 하루에 겨우 천개 정도의 단어만 사용하며, 세르반테스도 그의 전 작품에서 8천개의 단어만 사용했다. - ---- - -* __이중언어자와 단일언어자의 차이__ - + 관여하는 뇌의 영역은 동일하나 피질 표상에 차이가 있다. 이중 언어자의 경우 2가지 언어가 모두 활성화 되고, 단일 언어자의 경우 2가지 언어가 겹치는 부분이 적다. - - + 언어 `통제 능력`이 뛰어나다. 마치 저글링으로 두 개 이상의 공을 처리하듯이 언어 간 상호간섭이 일어나지 않는다. 즉, 무슨 언어를 사용하든 두 개의 언어가 `동시에 활성화`된다. 도중 하나의 언어를 끄는 것이 불가능하다. - ![언어통제능력](https://theorydb.github.io/assets/img/review/review-book-bilingual-brain-3.png) - - + 의식적으로는 이미 모국어를 모두 잊어버린 입양자들 조차도 유아기에 형성되는 소리를 구별하는 능력은 남아있었다. - - + 이중 언어 사용이 인지능력을 저하시킨다거나 정신 분열증을 초래할 수 있다는 가설은 미신에 가깝다. - - + `어휘량`은 이중언어자들이 다소 적다. 이는 새 단어를 사용하는 환경에 얼마나 자주 노출되어 있는가와 관련이 있다. 이중 언어자가 단일 언어자보다 각 언어에 덜 노출되는 현상으로 볼 수 있다. 어휘량이 상대적으로 감소하긴 하지만, 상대적으로 감소폭은 매우 작다. - - + 언어들 사이의 `유사성`이라는 관계를 이미 이해하고 있기에 새로운 언어를 습득하는데 유리하다. - - + 자기 중심적 편향이 적다. 다른 사람의 입장에서 생각할 수 있는 `공감 능력`이 더욱 빨리 발달한다. 비슷한 맥락으로 시몬효과(자극이 생각과 상이할 때 응답 시간에 차이가 나는 현상)를 더 적게 경험하여 주의력이 높고, 인지 유연성을 더 확보하고 있다. - - + 뇌의 `노화`와 관련하여 인지 예비용량이 더 크기 때문에 치매 등의 증상으로 신경과를 방문하는 일이 단일 언어자에 비해 3년 정도 늦다. - ---- - -* __의사결정에서의 이중 언어 활용__ - > 상대방이 이해할 수 있는 언어로 말하면 상대방의 머리로 가고, 상대방의 언어로 말한다면 상대방의 가슴으로 간다. - 넬슨 만델라 - - - `사고 편향` - 의사 결정 시 사람들은 무엇을 선택할지 실제 확률을 계산하는 것이 아니라, 세부 사항을 단순화하고 경험적으로 알게 된 지름길을 사용하는 경향이 있다. 이로 인해 최적 선택이 아닌 결정을 할 수 있는데 이런 왜곡을 사고편향이라고 부른다. - - 다음 문제를 풀어보자. - > 린다는 31세 여성으로 미혼이고 지적이며 똑똑하다. 철학을 전공 후 사회 차별 정의 문제에 관심이 많아 반핵 시위에도 참여했다. 다음 중 누가 린다인가? - - > a) 은행 창구 직원 - - > b) 은행 창구 직원이고 여성주의 운동가 - - 대부분 결합 오류에 빠져 b)를 답으로 고른다. 하지만 확률적으로 a)일 가능성이 높다. - - - `프레이밍 효과` - 의사 결정은 프레임에 따라 바뀔 수 있다. 다음 문제를 풀어보자. - - > 최근에 위험한 질병이 퍼지고 있다. 약이 없으면 60만명이 죽을 것이다. 약 A와 B가 있다. - - > A는 20만명을 구할 수 있다. - - > B는 1/3을 구할 수 있고, 아무도 구하지 못할 확률이 2/3이다. - - > 당신은 어떤 약을 선택할 것인가? - - 약 75%의 사람은 A를 선택한다. 일명 위험 회피의 선택을 따르는데 B를 선택하면 무슨일이 일어날지 모르기 때문이다. - - 동일한 상황에서 두 번째 문제를 풀어보자. - - > A는 40만명이 죽을 것이다. - - > B는 1/3이 아무도 죽지않고, 다 죽을 확률이 2/3이다. - - > 당신은 어떤 약을 선택할 것인가? - - 대부분 B를 선택한다. 생명이나 돈을 잃는 것을 싫어하기 때문인데 이를 손실 회피 현상이라고 한다. - - 이처럼 같은 문제임에도 불구하고 우리는 프레임의 제약을 받는다. 놀라운 것은 제2 언어로 말할 때는 프레이밍 효과에 걸려들지 않는다. 외국어와 관련된 감정성 감소 때문이다. - - - `인지 반응 검사` - - 또 문제를 풀어보자. - - > 1.야구 방망이와 야구공은 총 1.10유로이다. 방망이는 공보다 1유로가 더 비싸다. 공은 얼마인가? ( )센트 - - > 2.만일 5개의 기계가 5개의 키보드를 만드는 데 5분이 걸린다면, 100개의 기계가 100개의 키보드를 만드는 데 얼마나 걸릴까? ( )분 - - > 3.호수에 꽃이 피는 지역이 있다. 매일 꽃이 피는 지역은 두 배의 면적으로 커진다. 꽃이 호수를 덮는 데 48일이 걸린다면, 호수의 절반을 덮는 데 며칠이 걸릴까? ( )일 - - 답은 10, 100, 24이다. 너무 쉬운가? 그렇게 선택했다면 오답이다. 답은 5, 5, 47이다. - - 이 문제는 이중 언어자와 무관하게 오답율이 높다. 즉, 감정 체계를 수반하지 않는 논리 문제에서는 외국어가 영향을 미치지 않는 것으로 보인다. - - 결론이다. 상대방의 `가슴`에 메시지를 전달하고 싶다면 모국어를, 상대의 `머리`에 메시지를 전달하고 싶다면 외국어를 사용하는 것이 유리하다. - ---- - -* __이중언어를 익히기 위한 방법__ - + 꾸준한 연습이 최고의 방법이다. - + 흔히 알고 있는 것과는 달리 상호작용 없이 동영상이나 음성에 자주 노출된다고 해서 외국어를 빠르게 익히진 못한다. - + 자녀를 더 도전적이고 풍부한 자극을 줄 수 있는 언어 환경에 노출시키는 것이 좋다. - ---- - -* __과학자들의 실험과 측정 방법__ - + 공갈 젖꼭지 빨기 방법 - 아이들의 빨기 반사를 통해 집중 정도를 파악할 수 있다. 새로운 단어를 들을 때 흡입률과 흡입폭이 줄어든다. 이 실험을 통해 언어를 구분한다는 사실을 알 수 있다. - + 신경 촬영법 : 특정 영역의 산소 소비량 측정, 뉴런 그룹이 만든 전기적 활성 기록 추적 등 - + 경두개 자기자극술 : 두개골에 자기장을 생성하여 뉴런의 전기 기능과 일시적으로 상호 작용한다. 뇌 영역의 간섭이 가능하며 피질 구조를 바꿀 수 있다. - + 피질 전기 자극술 : 호문클루스 지도를 발생시킨 기술. 덕분에 뇌종양 제거 시 환자에게 어떤 부작용이 있을 수 있는지 예측이 가능해졌다. - + 생리학적 반응 연구 : 피부의 전기 전도도, 심박수, 동공 확장 등 - ---- - -이렇듯 본 도서에는 언어를 익히는 원리부터 이중 언어자들이 가지는 흥미로운 특성들이 다양하게 소개되어 있다. - -이미 나를 포함하여 본 리뷰를 읽고 계신 독자분들은 이중 언어의 습득이 너무 늦어버린 사람일 가능성이 크다. 하지만 우리의 자녀 그리고 우리 주위의 사람들로 하여금 이중 언어가 가지는 장점과 불확실하게 퍼진 미신들을 객관적으로 평가할 수 있도록 도울 수는 있을 것이다. - -더불어 우리 뇌를 연구하는 과학 매커니즘으로 여행을 떠나고 연구 방법의 향연을 즐길 수 있다는 것은 매우 흥미로운 일이다. - -모든 학문은 이렇고 저런 그물로 서로 연결되기 때문에 철학이나 아이디어 발상에 관심이 많은 독자에게도 많은 도움이 되리라 생각한다. - -우리의 뇌와 언어에 대한 훌륭한 교양을 담고 있는 책인만큼 일독을 권하는 바이다. - ---- - -* [책소개 - 언어의 뇌과학](http://www.yes24.com/Product/Goods/91621101?OzSrank=1) - diff --git a/_posts/2020-09-12-review-book-ai-comics-1.markdown b/_posts/2020-09-12-review-book-ai-comics-1.markdown deleted file mode 100644 index a41e6758f..000000000 --- a/_posts/2020-09-12-review-book-ai-comics-1.markdown +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: post -title: "[리뷰] 야사와 만화로 배우는 인공지능 1" -subtitle: "인공지능 알고리즘의 진화여정과 구루들의 뒷이야기" -categories: review -tags: review book ai 만화 야사 comics 진화 계보 구루 인공지능 딥러닝 -comments: true -header-img: img/review/review-book-ai-comics-1-1.png ---- - -> `루나파인북스` 출판사의 `"야사와 만화로 배우는 인공지능 1(권건우 글/허령 그림)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-ai-comics-1-1.png) - ---- - -> 어려운 인공지능을 만화로 먼저 만날 수 있다는 것은 행운이다. - -이 만화를 처음 접하게 된 계기는 본 도서를 통해서가 아니다. 국내에 AI 분야로 가장 활성화된 페이스북 커뮤니티인 [TensorFlow KR](https://www.facebook.com/groups/TensorFlowKR/)에서 공유글을 통해 [야사와 만화로 배우는 인공지능](https://www.facebook.com/yamaninstory)페이지를 알게 되었다. - -AI 분야가 딱딱하고 배우기 어려운 주제인만큼 만화를 통해 기본 개념을 익히고 그동안의 연구가 어떻게 발전되어 왔는지 일목요연하게 정리해 볼 수 있는 좋은 기회였기에 공유되는 만화를 종종 즐겨 읽었다. - -새로운 주제의 만화가 올라올 때면 잠시 머리식히는 용도로 제격이었는데 어느덧 양이 꽤 많아졌다. 오래 전에 본 내용은 기억도 가물했고 가끔 우연히 페이스북 포스팅을 통해 만났기에 놓치는 회차도 제법 되었다. - -더불어 만화의 내용이 상당히 유익하고 재미있어 언젠가 단행본으로 등장할거라 기대했는데 최근 종이책으로 발간되었다. 이 리뷰는 종이책 1권의 내용을 읽은 소감에 대한 기록이다. - -본 도서에 관심있을 독자분들을 위해 간단히 핵심을 요약하자면 아래 그림으로 정리해볼 수 있겠다. 본 도서를 구매하면 선물로 증정되는 인공지능 `계보도` 포스터인데 인공지능에 기여한 연구자들과 연구 주제의 흐름을 한 눈에 정리할 수 있는 귀한 아이템이다. -![계보도](https://theorydb.github.io/assets/img/review/review-book-ai-comics-1-2.png) - -이 계보도에 등장한 인물들의 `일화`이자, 이들이 `왜` 인공지능에 관심을 갖게 되었는지, 또 어떠한 연구 `성과`를 이룩하였는지, 현재의 분야별 고급 모델이 등장하기까지 어떤 `난제`를 해결해 왔는지 등이 본 도서가 다루고 있는 내용들이다. - -인공지능 입문서를 한 번이라도 접해본 분들이라면 항상 서두에 단골로 나오는 기호주의의 대표주자 마빈 민스키와 연결주의의 대표주자 로젠블랫의 일화를 접해보았을 것이다. 로젠블랫의 퍼셉트론이 XOR 문제를 해결할 수 없어 인공지능은 겨울을 맞이했다는 내용은 이제 식상할 정도이다. - -이 책에는 이와 비슷한 일화들이 매우 많이 등장한다. 영화 이미테이션 게임 주인공의 모델이 된 튜링 테스트로 유명한 `앨런 튜링`, 어릴적부터 천재 소리를 듣고 놀랄 만한 업적을 이룬 `폰 노이만`, 현대 인공지능의 아버지로 불리는 튜링상 수상자 `제프리 힌튼` 등 AI의 역사에서 빠질 수 없는 굵직한 획을 그은 인물들이 차례차례 소개되고 있다. - -무엇보다 본 도서의 매력은 각 위대한 인물들이 AI와 관련하여 어떤 철학적 `사고`를 하였고, 시대별로 주어진 난제를 해결하기 위해 어떤 `인사이트`를 동원하였는지, 복잡한 AI 발전의 `흐름`은 어떤지 파악할 수 있다는 점 등을 들 수 있겠다. - -개똥도 약에 쓸때가 있는 법. 바둑을 좋아하는 나로써는 어릴적 분명이 의미 있는 착점 자리라고 판단했음에도 기원 선생님이나 프로기사들이 가치없는 자리라고 일축하고 설명조차 하지 않는 것을 의아하게 생각하였다. - -예를들면, 화점의 바로 밑에 해당하는 3*3의 자리에 착점하면 이유도 모른채 혼나거나 포부가 적다는 등 인성에 문제 있어(?)라는 소리를 듣기도 했다. 다행히도 알파고의 등장 덕분에 상황과 조건에 다 일리가 있는 수라는 것이 밝혀졌다. - -알파고의 등장은 바둑계에 그동안 권위주의 오류를 비롯한 얼마나 많은 편향들이 공유되고 확신되고 있었는지 인간의 아둔함을 크게 일깨워준 계기이기도 했다. - -> 그런데 그런 `편향`이 과연 바둑계에만 존재할까? - -우리 개개인의 지식과 시각은 정도의 차이가 있을 뿐 대부분 의미가 있고 때에 따라서 유용해질 수 있다 생각한다. 꼭 세계적인 석학의 견해에 위배되거나 그동안 학회에서 인정해주는 스타일이 아니라는 이유로 개개인의 멋진 아이디어가 사장되는 일은 AI 시대엔 어울리지 않을 것이다. - -그런점에서 독자 개개인이 AI에 번쩍이는 아이디어가 떠올랐지만 당장 연구의 길을 개척하기 어려울지라도 제프리 힌튼 등의 뛰어난 연구자조차 연구 논문을 학회에 게재할 수 없었던 사정 등을 본 도서를 통해 보고 배우며 가고자 하는 꿈을 놓치 않기를 희망한다. 역사는 언제나 미래를 위한 소중한 교훈이다. - -본 도서의 또 다른 매력은 AI 연구의 `거대한 그물 어느 지점에 자신의 아이디어를 연결`해야 할지 도움을 받을 수 있다는 점이다. - -뉴턴이 말했듯 모든 연구자들은 이전 연구자들이 쌓아놓은 거인의 어깨위에서 새로운 지식의 영역을 개척한다. 대학원에 진학하면 연구 주제를 선정한 후 선행 연구에 돌입하여 과거의 연구를 조사하고 Review 논문을 참고하거나 정리하는 과정이 필요한데 본 도서는 일종의 일반인들을 위한 `Review 논문`이라는 생각이 든다. - -물론 일반인이 아닌 AI 연구자들에게는 수준이 얕게 느껴질 수도 있겠지만 AI에 기여한 연구자들을 모두 아는 사람은 매우 드물 것이기에 잠시 머리식히는 목적으로 새로운 상식과 다른 유관분야를 접하는 것도 의미있을 듯 하다. 혹시 또 아는가? 번쩍이는 아이디어가 솟아오를지. - -특히 이 책은 대한민국의 미래를 책임질 자라나는 AI 꿈나무들에게 강력 추천하고 싶다. 그동안 AI에 어떤 주제가 화두로 연구되어왔는지 쉽고 재미있게 파악하고, 스스로 미래에 기여할 수 있는 영역을 미리 둘러볼 수 있다는 것은 엄청난 기회가 될 수 있다. 노력만큼이나 소중한 것이 방향이기 때문이다. - -중, 고교생이라면 배웠던 수학으로도 충분히 알 수 있는 알고리즘이 소개되기도 한다. 아래 그림은 코호넨의 SOM(자기조직화지도) 모델인데 이 모델이 어떻게 동작하는지 수학을 통해 소개되고 있다. -![SOM-1](https://theorydb.github.io/assets/img/review/review-book-ai-comics-1-3.png) -![SOM-2](https://theorydb.github.io/assets/img/review/review-book-ai-comics-1-4.png) -![SOM-3](https://theorydb.github.io/assets/img/review/review-book-ai-comics-1-5.png) - -쉬운 내용을 따라가면서 AI분야의 연구가 어떤식으로 이루어지는지 간접 체험해봄으로써 미래의 꿈에 여러 발자국 먼저 다가갈 수 있을 것이다. - -벌써부터 2권이 읽고 싶어지고, 3권이 어서 출간되길 기대한다. 아니 그보다 [만화로배우는인공지능](https://post.naver.com/yamanin-story?fbclid=IwAR3Mzes1frj-3JnKBMZJf7X_jjyDQK3eA16ymvfWtUTY285kW23lQ-wgEaQ) 포스트가 일반인들에게도 널리 알려지면 좋겠다. - -딱딱할 수 있는 AI 분야를 흥미로운 만화로 구성하여 커뮤니티에 종종 공유해주시는 두 분 작가들께 감사를 표하며 리뷰를 마친다. - ---- - -* [책소개 - 야사와 만화로 배우는 인공지능 1](http://www.yes24.com/Product/Goods/91722229) - diff --git a/_posts/2020-09-16-review-book-data-3-laws.markdown b/_posts/2020-09-16-review-book-data-3-laws.markdown deleted file mode 100644 index a43d7794f..000000000 --- a/_posts/2020-09-16-review-book-data-3-laws.markdown +++ /dev/null @@ -1,113 +0,0 @@ ---- -layout: post -title: "[리뷰] 디지털 뉴딜 시대 리더가 꼭 알아야 할 데이터 3법" -subtitle: "IT 전문가와 변호사가 쉽게 풀어가는 데이터 3법" -categories: review -tags: review book 데이터3법 법률 IT 인공지능 데이터 바이오 헬스케어 테크핀 블록체인 비즈니스 개인정보 -comments: true -header-img: img/review/review-book-data-3-laws-1.png ---- - -> `지식플랫폼` 출판사의 `"디지털 뉴딜 시대 리더가 꼭 알아야 할 데이터 3법(백남정 외 5명)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-data-3-laws-1.png) - ---- - -> 데이터 3법, 데이터 3법... 말들은 많은데 도대체 이게 뭐야? - -최근 누구나 한 번쯤 생각해 봤을 법한 질문이다. 그러다 이내 곧 "에이. 먹고 살기도 바빠 죽겠는데 이까짓 것 모르는게 뭔 대수라고.."하며 관심을 돌린다. - -그런데 과연 그럴까? - -우리는 지금 대 격변의 시대를 맞이하고 있다. IT를 대표 주자로 기술이 급속도로 발전하고 있으며 4차산업이라는 말은 귀에 딱지가 앉을 정도로 자주 듣고 있다. 이를 대표하는 인공지능, 핀테크, 자율주행, 블록체인은 무엇일까? - -어렵게 생각할 것 없이 주위를 둘러보면 된다. 요즘처럼 TV 대신 유튜버나 넷플릭스를 자주 봤던 시절이 또 있었던가? - -가뜩이나 구글의 알 수 없는 추천 알고리즘 덕에 자의 반으로 유튜브 등을 감상했다면 구글의 코로나 감염병의 대유행덕에 타의 반으로 유튜브를 또 본다. 바로 그 알 수 없는 추천 알고리즘에 인공지능의 기술이 쓰인다. - -일상이야 그렇다 치고 먹고 사는 일은 또 어떤가? - -요즘 1인 기업의 열풍이 불고 있고 네이버 스마트 스토어나 쿠팡 파트너스 같은 투잡족들이 늘고 있다. 크라우드 펀딩과 핀테크 등 새로운 형태의 비즈니스들이 파생된 것은 이미 오래 전 일이다. - -부지런한 아이디어가 가득했던 사람들은 스마트 폰 앱을 만드는 기술을 배웠거나, 기술을 아는 사람과 협력하여 월급 못지 않은 수익을 올리기도 하고 거대한 창업에 성공하기도 한다. - -이런데도 더이상 먹고 살기 바쁘니 데이터 3법 따위는 안중에 없다고 할 수 있겠는가? - -변화는 가속화되어 평생 밥그릇은 점차 사라지고 새로운 기술과 비즈니스, 법에 적응해야 하는 이 시점에 현실과 가장 밀접한 법을 모른다면 다가올 미래에 도태될 일만 남게 되지 않을까? - -먼저 본 서적을 통해 알게된 `데이터 3법`을 간략히 요약하면 다음과 같다. -* 개인정보보호법 -* 정보통신망 이용촉진 및 정보보호 등에 관한 법률 (이하 정보통신망법) -* 신용정보의 이용 및 보호에 관한 법률(이하 신용정보법) - -올해 2020년 1월에 일괄 개정되어 데이터 분야에 큰 변화를 불러 일으키고 있으며 주요 쟁점은 활용 및 수집에 있어서의 개인의 `동의 여부`이다. 정보에 관련된 법은 이외에도 많지만 규제와 관련되어 가장 영향력이 높은 법들이라 할 수 있다. - -데이터 3법은 대충 알게 되었다 치자. 그런데 이젠 다음과 같은 다른 질문들이 파생된다. - -> 4차산업 혹은 신사업으로 일컬어지는 인공지능, 핀테크, 자율주행, 블록체인 등은 또 무엇인가? 그리고 세상에 어떤 영향을 미치고 있는가? - -우리가 사는 세상이 어떻게 변해가는지도 모르면서 관련된 법만 아는 것이 무슨 소용이 있을까? - -본 도서는 바로 이런 질문들에 대한 대답이다. 세상이 어떻게 변해가는지 `기술 중심의 트렌드`를 짚어주고, 그에 따른 `법률과 규제`는 어떻게 변해가고 있는지에 대한 대답이다. 이렇게 IT기술과 법률을 동시에 조망할 수 있다는 점이 본 도서의 가장 큰 매력이라 할 수 있겠다. - -처음에는 따분한 법률을 다루는 서적이 아닐까 우려했다. 그런데 본문에 언급된 감사글에 언급되었듯이 이 시대에 필요한 종합 선물 세트 같은 느낌이다. 7개의 파트 하나하나가 모두 감명 깊었는데 어떤 점이 인상적이었는지 파트별로 간략히 정리해 보았다. - ---- - -* __1장. 왜 데이터인가?__ - 데이터의 의미와 중요성 그 자체도 읽을 거리가 제법이지만 철학의 대가가 인간의 `정신과 결부하여 현 시점의 세상을 풀어낸 안목과 통찰력`에 매우 놀랄 수 밖에 없었다. - - 호모 사피엔스 시대부터 문명의 기하급수적인 발전 속에 현재에 이르기까지 사람의 정신 세계와 결부하여 지금 우리의 세상을 진정성 있는 고민 속에 바라보게 해줘 감회가 새로웠다. - -* __2장. 마이데이터 시대의 테크핀과 블록체인 파트__ - `오픈 뱅킹, 핀테크, 테크핀`을 비롯한 기술들을 깔끔하게 정리해준다. 한 발 더 나아가 이 기술들을 활용한 현재 실용화 된 비즈니스의 사례를 들고 있어 4차산업 혁명의 최신 기술이 우리 생활을 어떻게 바꿔놓았는지 알기 쉽게 설명해준다. 나는 AI에 깊은 관심을 갖고 기술을 연구하는 사람이자 IT 분야 종사자로써 최신 기술과 트렌드에는 나름 정통하다고 생각했는데 이 파트를 읽고나서야 이토록 모르는 최신 트렌드가 많았다는 사실에 놀랄 수 밖에 없었다. - - 더불어 비트코인의 광풍 속에 멸망한 줄 알았던 `블록체인`의 기술 저변에 숨어있는 미래의 원동력을 재 발견할 수 있었다. 비트코인이 멸망할지는 모르겠지만 블록체인 만큼은 경제적, 사회적으로 우리 삶을 크게 바꿔놓을 것이라는 확신이 들었다. - -* __3장. 데이터 비즈니스를 위한 인공지능과 클라우드__ - 이 파트는 최신 기술이 우리 업무와 일상에 어느정도 깊숙히 개입하여 어느 정도 범위의 파급 효과를 일으켰는지 그 전반을 돌이켜 볼 수 있는 장이다. - - 특히 딥러닝을 위시한 `인공지능`이 무엇이며 어떤 비즈니스를 통해 우리 삶에 파고 들었는지 중점적으로 설명하고 있으며 이를 가능케하는 클라우드 플랫폼 및 애자일과 같은 조직 문화에 대해서도 알아본다. - - 개인적으로는 이미 대부분 알고 있는 지식이었기에 크게 흥미롭지는 않았으나 인공지능과 클라우드를 잘 모르는 독자분들께는 매우 유익한 정보가 될 것이라 확신한다. - -* __4장. 테크핀과 법률__ - 앞서 1~3장이 주로 기술, 비즈니스, 트렌드, 일상에 대해 다뤘다면 이제부터 본격적으로 데이터 3법이 등장한다. 그 중 이 장에서는 테크핀에 초점을 맞춘 법률을 소개한다. - - 데이터 3법에 의해 이제 데이터를 팔고 살 수 있는 시대가 되었다. 이미 일반인에게도 많이 알려진 공공데이터의 개방은 물론이고 한 발 더 나아가 데이터를 `거래`할 수 있는 시대가 되었다. - - 하지만 이는 개인정보보호와 위배될 수 있는 사안이기에 이에 관여하는 `주체`와 `관계`는 너무나도 복잡하다. 금융위원회, 금융결제원, 한국신용정보원 등 무수히 많은 금융 관련 기관이 포함되어있고 세부 법률 또한 다양하다. - - 우리 일반인의 시각에서 이 많은 법률들을 전부 다 외우고 주체간의 관계를 고려하는 것은 어려운 일이므로 만약 우리 삶에 필요한 비즈니스가 있다면 필요시 찾아보고 어떤 조치를 취해야 하는지 정도의 수준으로 알아두면 좋을 듯 하다. - -* __5장. 바이오 헬스케어와 법률__ - 데이터 3법과 관련되어 금융 못지않게 큰 변화를 겪게 된 `바이오` 분야에 초점을 맞춰 법률을 살펴본다. - - 원격의료와 스마트 병원과 같은 화두에 대해 비즈니스를 운영할 수 있는 법적 근거나 절차를 한 눈에 파악하기에 유용하다. - - 만약 여러분이 모바일 의료용 앱을 개발하여 수익을 내고 싶다면 이젠 데이터 3법을 꼼꼼히 살펴보아야 한다. 그 때 본 도서가 향후 사업을 어떻게 추진해야 할지 많은 도움을 줄 것이다. - -* __6장. 스마트 신사업과 법률__ - 데이터 3법에 대한 전체적인 개괄을 정리하고 위에서 언급한 두 분야외 신사업 분야에 데이터 3법이 어떤 영향을 미칠지 `거시적`으로 파악할 수 있는 파트이다. - - 정보, 가명정보, 익명정보 등 법률에서도 정의조차 되어있지 않거나 상황에 따라 달리 해석될 수 있는 미묘한 개념들을 꼼꼼히 살펴본다. 그 외에도 자동화와 관련된 이슈, 민감정보 및 위치 정보에 대해서도 다룬다. - - 법률과 정부의 정책조차 하루가 다르게 급속도로 변화하는 현실을 쫓기는 사실상 불가능하기에 그에 대한 대안으로 시행되는 `규제 샌드박스`에 대해서도 알아본다. 특히 법령 상 허용 여부가 불명확한 이른바 `그레이존`은 기회이자 위기의 땅이 될 수 있음을 명심해야 할 것 같다. - -* __7장. 새로운 인공지능 시대를 맞이하며__ - 앞서 기술과 법률로 머리가 복잡했을 독자분들을 위해 휴식을 취하게 해주는 장인 것 같다. 일상의 언어로 돌아가 전반적인 사회의 변화와 미래의 대응 방법을 개괄적으로 서술한다. - - 특히, 마음이라는 사람 고유의 영역을 다시금 생각해 볼 기회를 마련해주고, 프라이빗에 대해 고찰해 보며 긴 여정을 마무리한다. - ---- - -지금까지 책에 대한 칭찬 일색이었으니 아쉬운 점도 언급해볼까 한다. 바쁜 전문가 분들이 어렵게 시간을 내어 작성한 티가 제법난다고 해야 할까? 책에 오탈자가 종종 발견되며 도표 등의 시각화 자료에 정리되지 않은 흔적이 보이기도 한다. - -하지만 그 피상적인 부분들의 몇몇 결점이 본 도서의 유일한 단점이다. 핵심과 인사이트 그리고 알맹이는 칭찬하지 않을수가 없다. 그 외에는 굳이 단점을 찾기가 어렵다. - -빠르게 변해버린 세상을 넓은 시야로 `훑고`, 그 새로운 기술과 법률안에서 생존하기 위한 `전략`을 세우고, 삶을 살아가는 이유나 정신적인 측면에서 현실을 `짚어보는` 등의 이 모든 것을 단 한 권의 책으로 누릴 수 있다는 것은 정말 큰 행운이다. 그런 점에서 격변의 시대를 살아갈 모든 독자분들께 본 도서를 강력히 추천하는 바이다. - - -* [책소개 - 디지털 뉴딜 시대 리더가 꼭 알아야 할 데이터 3법](http://www.yes24.com/Product/Goods/92424184) - diff --git a/_posts/2020-09-19-review-book-data-science-interview.markdown b/_posts/2020-09-19-review-book-data-science-interview.markdown deleted file mode 100644 index 793fde9a4..000000000 --- a/_posts/2020-09-19-review-book-data-science-interview.markdown +++ /dev/null @@ -1,181 +0,0 @@ ---- -layout: post -title: "[리뷰] 데이터 과학자와 데이터 엔지니어를 위한 인터뷰 문답집" -subtitle: "100개 이상의 실전 면접 문제로 배우는 머신러닝, 딥러닝, 강화학습 알고리즘" -categories: review -tags: review book 데이터사이언스 인터뷰 면접 딥러닝 머신러닝 강화학습 -comments: true -header-img: img/review/review-book-data-science-interview-1.png ---- - -> `제이펍` 출판사의 `"데이터 과학자와 데이터 엔지니어를 위한 인터뷰 문답집(Hulu 데이터 과학팀 저/주거웨 편/김태헌 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-data-science-interview-1.png) - ---- - -본 도서는 HULU(넷플릭스 대항마로 월트 디즈니가 설립한 OTT 서비스 회사) 15명의 데이터 과학자가 공저하였다. - -HULU는 개인화 추천, 검색, 컨텐츠 이해, 광고 예측과 타기팅, 의사결정 서프트 등에 특화된 AI 기술을 다루고 있고, 저자들이 탄탄한 연구 실적을 쌓아와서일까 책 내용의 깊이가 남다른 것 같다. - -읽은 소감을 먼저 전하자면 15인의 전문가들이 마치 `앙상블 방식으로 저술`한 점이 마음에 든다. 개개인의 튼튼한 수학 기초는 물론 알고리즘 및 모델에 대한 깊은 이해를 집단 지성으로 녹인 듯 하다. 개인적으로는 국내에 나온 관련 서적 중 손에 꼽을 수 있는 Top-Tier 레벨의 책이라는 생각이 들었다. - -책의 내용을 전체적으로 정리해보고 싶은 욕심이 있었지만 리뷰 수준으로는 분량을 감당하기 어려워 책의 장점과 학습법을 위주로 몇가지 토픽들을 정리해보았다. - ---- - -* __메타 지식__ - 데이터 사이언스 분야는 공부할 것이 너무 많아 시간이 매우 부족하기에 속도 보다는 방향이 중요하다. 메타지식을 먼저 접하여 좋은 방향을 설정하는 것도 시간을 줄여줄 수 있는 좋은 방법이다. - - ![트리맵](https://theorydb.github.io/assets/img/review/review-book-data-science-interview-2.png) - - 이 책은 실무에서 `80%를 차지하는 20%의 지식`을 메타지식으로 잘 정리한 책이다. 가장 중요한 것을 먼저 배울 수 있다. - - 개인적인 경험으로는 이 분야를 학습할 때 삼천포로 빠지지 않기 위해 많은 노력을 기울여야 한다. - - 남들이 좋다는 논문을 가리지 않고 리뷰하면 만족감이나 수박 겉 핥기 지식이 쌓이기는 하는데 배후의 원리나 철학은 블랙박스로 남아있거나 잘 기억이 나지 않을 수 있다. - - 혹은 선대, 미방, 확통의 중요성을 늘 들어왔기에 책도 보고 논문도 들춰본다. 처음 보는 수학기호를 만나면 아! 내가 수학 기초가 정말 부족하구나라고 중얼거리면서 정수론, 집합론, 해석학 책을 구매하기 시작한다. - - 시간을 헛되이 보내지 않은 것 같은 만족감이 나를 위로 하긴 하지만 다시 현실로 돌아가면 여전히 할 수 있는게 없다. 학습은 열심히 했는데 실전에선 영 시원찮다. - - 일종의 과적합에 빠진 것 같다. 과적합을 피하기 위한 좋은 기법 중 하나가 Dropout이다. 학습에도 가지치기가 필요하다. 너무 불필요한 노드까지 다 학습하면 시간은 다 증발하고 현실에서 성능을 발휘하지 못한다. - - 이 책에는 중요한 핵심이 잘 드러난다. QnA의 구성 덕분인지 `두괄식으로 우선순위`에 따라 서술된다. - - 배깅과 부스팅을 예로 들면 배깅은 분산을 낮추데 효과적이고, 부스팅은 편향을 낮추는데 효과적이라고 먼저 알려주어 숲을 파악하기 쉽게 해준다. - ![배깅과 부스팅](https://theorydb.github.io/assets/img/review/review-book-data-science-interview-5.png) - - 예전에 어떤 책을 따라하다 성능이 저조한데도 원인도 제대로 파악 못하고 편향을 낮춰야 하는데 배깅으로 끙끙대고 했던 기억이 있기에 이런 두괄식 구성이 눈에 띄였다. - - 만약 AI 분야로 진로를 정한 입문자라면 먼저 이 책을 볼 것을 권유드리고 싶다. AI 기술 분야별로 자신에게 소질이 있거나 적성이 있어 보이는 분야를 먼저 찾기에 용이하기 때문이다. 최소한 이건 내가 죽었다 깨어나도 못하겠다는 분야 정도는 찾을 수 있다. - - 난이도는 결코 입문자급도 아니고 쉽지 않다. 깊은 수학적 원리가 정리된 챕터 같은 경우 이미 실무에 종사하고 있는 전문가분들도 어렵다는 평을 들었다. - - 하지만 일단 메타지식을 쌓고 비벼볼만한 영역을 찾아 읽어나가다 막히는 부분이 생기면 다른 입문서를 참조하면 된다. Top-Down 방식처럼 말이다. 비록 과적합에 빠질지라도 가장 알짜배기를 모아놓은 책이기에 투자대비 위험 부담이 적다. - - 그렇게 노력하다보면 스스로 하고 싶은 연구 혹은 진로 분야가 명확해지지 않을까? - ---- - -* __실무 스킬과의 연계__ - 본 도서의 또 다른 장점은 실무에서 활용되는 예시가 자주 등장한다는 것이다. 그간 경험한 사례와 비추어 유용했던 몇 가지 예시를 정리해 보았다. - - + RMSE(평균제곱근오차)와 특이점 - ![RMSE](https://theorydb.github.io/assets/img/review/review-book-data-science-interview-3.png) - - 이 문제는 내가 겪은 문제이기도 하고 누구나 초보 시절 한 번은 겪을 법한 문제인데 RMSE(평균제곱근오차)가 `특이점`에 민감하다는 내용이다. - - 이론을 아는 수준에서 그치고 넘어가면 실제 상황에는 잘 기억이 나지 않는다. 직접 당해보고 해결한 후에나 다음 번에 주의를 기울이게 되는데 업계의 사례가 구체적으로 제시되기에 미리 간접 경험을 할 수 있고 이해도 쉬워진다. - - 이런 현상이 발생하는 원인을 수식을 통해 풀어보며 원리 깊숙히 들여다보기도 하고 나아가 전처리 과정에서의 필터링, 예측 성능 향상, 평가지표를 견고하게 만드는 등 또 다른 해결책이 제시되는 유기적으로 이어진 구성이 마음에 든다. - - + LDA - PCA의 원리를 배우고 예제를 따라해보며 자신감을 얻은 후 실전에 적용해보니 원하는 대로 동작하지 않은 적이 있었다. - ![LDA](https://theorydb.github.io/assets/img/review/review-book-data-science-interview-9.png) - - 나중에야 클래스가 다른 레이블들의 차원 축소에는 LDA라는 기법이 도움이 된다는 사실을 알았는데 당시에는 LDA 지식이 이론으로만 머리속에서 따로 놀아 실전에서 유용한 해결 기법으로 매칭되지 않았다. - - 해당 파트를 읽어보니 어떤 상황에서 써야 하는지가 자세히 소개되어 처음부터 이 책을 통해 LDA를 배웠다면 큰 도움을 받을 수 있을거라는 아쉬움이 들었다. 특히, QnA 방식 구성이 실전에 필요한 집중력을 높여주는 것 같다. - - + 클러스터링 경향성 측정 - 양질의 데이터가 넘치는 기업은 드문데 내가 다니는 회사도 마찬가지이다. 결국 비지도 학습에서 인사이트를 얻고자 노력하는 편인데 라벨이 없는 상태에서 클러스터링을 비교하는 일은 지식이 부족해 주로 R스퀘어 값이 많이 의존하는 편이었다. - - 본 파트 덕분에 그동안 몰랐던 지식을 체계적으로 이해할 수 있었다. 예전에 데이터의 분포가 랜덤을 띄는지 파악할 필요가 생겼는데 방법을 몰라 생략한 적이 있다. - - 아래는 `홉킨스 통계`를 사용한 랜덤성 여부를 판단하는 과정인데 설명이 짧고 깔끔해 이해하기 쉽다. - ![경향성](https://theorydb.github.io/assets/img/review/review-book-data-science-interview-4.png) - - 클러스터링 품질을 측정하는 방법으로 실루엣 계수, RMSSTD, 후버트 통계량 등 여러 가지 기법이 제시된 점, 이론적으로 깔끔하게 정리된 점이 마음에 들었다. - - 다양한 분야의 머신러닝, 딥러닝 지식이 폭넓게 담겨있어 실전에서 모델링 후 `체크리스트`로 활용하기에 좋겠다는 생각도 든다. - ---- - -* __아이디어의 근간이 되는 기초 과학과의 접목__ - 사실 이 장점은 개인적으로는 너무 마음에 들지만 독자에 따라 상황에 따라 호불호가 갈릴 것 같다. 인터뷰를 준비하는 독자의 시점에서 너무 이론 중심으로 치우친 것은 아닌가 싶을 정도로 각 아이디어는 철저히 원리를 파헤친다. - - 예를 들어 아래 그림은 GANs 가치함수에 대해 수식 전개는 물론 아이디어의 원리까지 꼼꼼히 설명하는 부분이다. - ![GANs 가치함수](https://theorydb.github.io/assets/img/review/review-book-data-science-interview-6.png) - - 이어 대량 확률추론 계산을 피하는 법, 훈련 중 발생하는 이슈, 와서스타인 거리, 추론 네트워크 등이 소개되기에 GANs의 발전 과정과 핵심 아이디어를 유기적으로 배울 수 있다. - - 수식이 난무하고 원리를 대충 지나가는 법이 없으니 수월치 않은 것도 사실이지만 실전에서 `나의 문제에만, 나의 데이터에만` 발생하는 문제에 대응하기 위해서는 원리의 이해가 필수라 생각한다. - - 인터뷰에서 이 정도 깊이의 문제가 나오면 얼마나 나오냐 부정적으로 볼 수도 있을텐데 - 흔히 접하는 80%의 문제는 잘 외우기만 하면 된다. 하지만 면접관 분들이 외워서 해결되는 문제만 질문할까? - - 본 책에서도 저자 중 한 사람인 천라밍의 경우 지원자들의 경험에 맞춰 맞춤형 문제를 미리 만들어 간다 했다. - - 흔히 마주치기 어려운 20%의 문제에 대한 어떤 아이디어가 있는지, 빨리 해결할 수 있는 능력이 있는지 파악하기 위해 응용뒤에 숨겨진 원리를 물어보게 될텐데 이에 대한 대답이 승부수가 아닐까 한다. - - 예전에 본 어떤 영화에서 A에서 D를 유추하기까지 일반인들은 A, B, C, D를 하나씩 단계적으로 배워가야 하지만 천재들은 A에서 바로 D가 나온다고 한 대사가 기억에 남는다. - - 비숍의 [PRML](http://users.isr.ist.utl.pt/~wurmd/Livros/school/Bishop%20-%20Pattern%20Recognition%20And%20Machine%20Learning%20-%20Springer%20%202006.pdf)이 다들 칭송하는 책임에도 생각보다 우리 곁에 오래 머물지 않는 이유도 마찬가지가 아닐까? 우리는 B, C 를 알아야 하는데 자꾸 D만 이야기 하니 말이다. - - 그렇다고 언제까지 B, C를 피할수도 없고 피해서도 안되며 즐길 수 있어야 한다. B, C를 알고 싶은 호기심은 데이터 사이언스 분야에서 일하는 이들의 원동력이기도 하다. 저자 중 한 사람인 쉬샤오란의 말처럼 공리적인 이유나 현란한 기술을 뽐내기 위해 이 분야에 들어왔다면 금방 지치고 말것이기 때문이다. - - 이 책은 그런 B, C의 과정을 익히는데 제격이라는 생각이 든다. 수학을 근간으로 하면서도 설명은 직관적으로 서술하고자 노력한 흔적이 돋보인다. 행렬 분해가 어디에 응용되는지 자꾸 언급되기에 자연스레 선형대수에 호기심이 생길 수 밖에 없다. - - 용어, 수학, 원리, 선행연구와 더불어 다들 `왜 그렇게 만들고 돌리는지` 명확하게 알고 있어야 나에게만 닥칠 혼돈 속에서 길을 잃지 않고 방향을 잡을 수 있지 않을까? - - 그렇게 경험이 쌓여야 기존 학문의 진의를 깨치고, 나아가 기존 학술 연구에 존재하는 편견과 고정관념에서 탈피해 자유로운 상상력을 펼 수 있을 것 같다. - ---- - -* __만들줄 안다고 제대로 알고 있는걸까?__ - 좋은 모델을 설계할 수 있다고, 잘 구현할 수 있다고, 데이터 분석을 능숙하게 한다고 해도 과연 제대로 알고 있는 것인지 `반문`하는 것은 스스로의 발전에 정말 중요하다고 생각한다. - - 이 책에는 그런 점에서 스스로의 실력을 되돌아 볼 만한 날카로운 질문과 그에 대한 해답이 등장한다. - - + N차원 입력의 임의의 부울함수는 최소 몇 개의 노드와 층을 필요로 할까? - + 부트스트래핑 과정 중 n이 무한대로 커진다면 한 번도 추출되지 않는 데이터 수는 얼마나 될지? - + 수치형 데이터에 왜 정규화를 해야 하는지? - + 신경망의 가중치를 0으로 초기화하면 무슨일이 벌어지는지? - - 왜 해야 하는지도 모르고 했던 많은 작업들의 진의를 알 수 있다면 실무에서 간혹 발생하는 안개를 뚫고 지나갈 수 있는 묘안도 얻을 수 있을 것이다. - ---- - -* __융합에서 얻는 아이디어__ - 데이터 사이언스 분야는 컴퓨터 과학, 통계학, 심리학, 신경과학, 인지과학, 사회학 등 방대한 스펙트럼이 폭넓게 융합된 학문인지라 모든 분야를 다 잘하는 사람은 있을 수가 없다. - - 마찬가지로 아무리 전문가라 할 지라도 이 책에서 다루는 모든 분야를 완벽하게 다 알고 있는 사람은 드물 것이다. 책을 통해 잘 모르는 분야를 빠르게 익힌다면 연구 및 실무에 `새로운 아이디어`를 떠올릴 수 있는 계기가 될지도 모른다. - - 마치 GANs과 CNN이 융합하여 DCGAN이 탄생한 것 처럼 말이다. - ![가치함수](https://theorydb.github.io/assets/img/review/review-book-data-science-interview-7.png) - ---- - -* __인터뷰와 커리어__ - 이 책의 주된 관심사는 아마도 `인터뷰`일 것 이다. 본 도서에서 다루는 인터뷰 문제는 실제 HULU 채용에 활용되었던 문제들이기에 이미 검증된 셈이다. - - Tensorflow, Pytorch 등 특정 플랫폼이나 언어의 구현 방법이나 팁 등은 다루지 않아 불만인 분들도 있을 것 같다. 하지만 그런 부분들은 지면상 모두 언급될 수도 없거니와 사실 참고할 만한 도서도 많다. - - 42p에는 아래와 같이 인터뷰에 대한 팁도 나온다. - ![인터뷰](https://theorydb.github.io/assets/img/review/review-book-data-science-interview-8.png) - 중요한 핵심을 모두 담고있는 유용한 팁이 아닐까? - - 이런 부류의 책들이 더 많이 출간되었으면 좋겠다. 참고로 개인적으로 유용했던 인터넷 정보들도 같이 정리해본다. - - - [변성윤님의 블로그](https://zzsza.github.io/data/2018/02/17/datascience-interivew-questions/) - - [Data Scientist 면접 질문들](https://blog.pabii.co.kr/data-scientist-interview-questions/) - - [Cracking the Facebook Data Scientist Interview](https://medium.com/@deepen.h.panchal/cracking-the-facebook-data-scientist-interview-415508777ba6) - - [glassdoor](https://www.glassdoor.com/Interview/Facebook-Data-Scientist-Interview-Questions-EI_IE40772.0,8_KO9,23.htm) - - 그 외 하용호님, 남세동님의 글도 있었으나 원본 링크는 사라졌고 대신 위 변성윤님 블로그에 같이 포함되어있다. - ---- - -그 외 책을 읽으며 느꼈던 전반적인 내용들을 정리해 보겠다. 7장 최적화 및 9장 피드 포워드 신경망은 보통 대부분의 분들이 딥러닝, 머신러닝을 통해 입문하시기에 가장 친숙하실 것 같다. 책이 본인에게 맞는지 판단하려면 서점에서 7, 9장을 먼저 확인해보는 것도 좋을 것 같다. - -1, 2장은 피처 엔지니어링과 모델 평가를 다루는데 쉬워보이지만 언제나 활용되는 매우 중요한 개념들이 가득하다. 특히 케이스가 다양하여 이론과 실제를 연동하기 힘든 부분 임에도 적은 지면에 필요한 내용을 잘 정리한 느낌이었다. - -AI 분야에 처음 발을 딛는 일반인 혹은 입문자 분들이라면 15명 저자의 에필로그, 14장 인공지능의 응용 현황 부터 읽으신다면 발걸음이 좀 가벼울 것이다. 이미 지식이 있는 분들이라면 목차를 보고 늘 궁금했던 질문 순서로 읽는 것도 좋은 방법일 것 같다. - -더불어 번역의 질이 매우 뛰어나 읽는데 매우 편하다. 역자의 또 다른 역서 [단단한 머신러닝](http://www.yes24.com/Product/Goods/88440860?OzSrank=1)도 번역이 잘 되어 읽기 좋았다. 최근에 출간된 [퀀트 전략을 위한 인공지능 트레이딩](http://www.yes24.com/Product/Goods/91326289?OzSrank=1)의 저자이기도 하다. 이 책 또한 특유의 매끄러운 전개 방식과 뛰어난 가독성이 일품이다. - -데이터 사이언스 인터뷰를 준비하시는 지원자, 면접관은 물론 AI 기술의 핵심을 빠르게 훑고 싶은 관리자, 사업가께도 좋은 책이라 생각한다. 더불어 새로운 주제를 찾는 연구자 분들께도 적합하며 난이도는 쉽지 않지만 메타 지식을 활용하기 위해 입문자 분들께 가장 추천드리고 싶다. - ---- - -* [책소개 - 데이터 과학자와 데이터 엔지니어를 위한 인터뷰 문답집](http://www.yes24.com/Product/Goods/90626736) diff --git a/_posts/2020-09-25-review-book-wisdom-babilon-rich.markdown b/_posts/2020-09-25-review-book-wisdom-babilon-rich.markdown deleted file mode 100644 index 138aab50d..000000000 --- a/_posts/2020-09-25-review-book-wisdom-babilon-rich.markdown +++ /dev/null @@ -1,92 +0,0 @@ ---- -layout: post -title: "[리뷰] 만화로 보는 바빌론 부자들의 돈 버는 지혜" -subtitle: "The Wisdom of the Babilon Rich in Comics" -categories: review -tags: review book 바빌론 부자 지혜 돈 부 재테크 황금 법칙 -comments: true -header-img: img/review/review-book-wisdom-babilon-rich-1.png ---- - -> `한빛비즈` 출판사의 `"만화로 보는 바빌론 부자들의 돈 버는 지혜(조지 S. 클래이슨 원저/사카노 아사히 그림/김은혜 역/오하시 코스케 기획)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-wisdom-babilon-rich-1.png) - ---- - -본 도서는 1926년 미국에서 출간된 "바빌론 부자들의 돈 버는 지혜"를 각색한 만화책으로 `인생에 필요한 금융, 재테크, 인간관계, 행복`을 주제로 다룬다. - -데일카네기의 인간관계론과 더불어 그 무렵 출간된 멋진 고전 중 하나로 100년 가까이 사랑을 받아왔던 책인지라 꼭 한 번 읽어보고 싶었는데 만화책이 간행되어 부담없이 재미를 느끼며 읽을 수 있어 행복했다. - -책의 배경은 기원전 18세기에서 4세기까지 번성했던 바빌로니아 왕국을 무대로 한다. 잘 모르는 나라라고 생각하기 쉽지만 바벨탑으로 유명한 나라이며 "눈에는 눈, 이에는 이"로 유명한 함무라비 왕도 이 나라를 다스린 왕 중 한 명이다. -![바빌로니아](https://theorydb.github.io/assets/img/review/review-book-wisdom-babilon-rich-3.png) - -책의 내용은 액자식 구성을 띈다. 인생에 실패한 고고학자 최재욱 교수가 친구의 의뢰를 받아 바빌로니아 유적지에서 발굴된 점토판을 번역하는 것으로 이야기는 시작된다. -![시작](https://theorydb.github.io/assets/img/review/review-book-wisdom-babilon-rich-2.png) - -점토판에는 바빌로니아 시대 주인공 반시르가 거액의 부를 쌓는 여정이 담겨있다. 특히, 바빌로니아의 발전을 지탱한 `황금의 법칙`이 등장하는데 이 부분이 이 책의 핵심이다. - -최교수는 번역을 마치고 황금의 법칙대로 열심히 살아 파탄난 인생을 다시 행복한 인생으로 되돌린다는 액자식 구성으로 되어있는데, 무려 459p에 달하는 방대한 분량에 반시르의 인생 대부분이 녹아있다. - -분량이 상당하지만 걱정하지 않아도 된다. 만화책이기 때문이다. 또한 우리가 늘 일상에 겪는 일들이 소재로 담겨있어 흥미진진하다. - -보다 자세한 내용을 소개하고 싶지만 자칫 스포일러가 될까 우려되어 대신 가장 중요하게 느낀 핵심과 나의 생각을 정리해보려 한다. - ---- - -* __황금을 불리는 5가지 법칙__ - 바빌로니아를 장구한 역사에 걸쳐 지탱해 온 황금을 불리는 법칙 5가지를 먼저 소개할까 한다. 전 시대에 걸쳐 통용될 만한 매우 중요한 법칙이지만 원칙이라는 것이 늘 그렇듯 중요한 만큼 단순하고 뻔하다. - - 사실 어린 시절에 읽었으면 크게 와 닿지 않았을지 모르는데 살면서 좌충우돌 돈 때문에 속을 썩고 살다보니 `뻔한 문장이 달리보인다`. 아이들이 돈의 관념을 익히기 전 반드시 읽어야 할 책이라는 생각이 들었다. - - 아이들은 현실로 받아들이기보다는 교과서 처럼 받아들일 가능성이 크기에 부모나 스승이 자신의 사례를 곁들여 설명해준다면 아이가 장성하여 스스로의 부를 지키는 데 가장 훌륭한 울타리가 될 수 있을것 같다. - - - __1.가족과 자신의 미래를 위해 수입의 10분의 1이상을 저축하는 자에게 황금이 따라온다.__ - 요즘 식으로 말하자면 `종잣돈`의 소중함이다. 서민에게 종잣돈이란 부의 항해를 위한 유일한 교두보이자 가능성이다. - - 나 역시 사회 초년 시절엔 종잣돈이란 그저 어릴때부터 귀에 못이 박히도록 중요하다고 들어온 저축 정도로만 생각했다. - - 생각보다 시간은 빠르다. 물론 총각 때 버는 돈은 금방 모인다. 인생에 작은 실수 정도는 세월이 용납해준다. - - 하지만 결국 차를 사고 결혼하고 아이를 부양하고 집을사며 교육비를 부양하고 노부모를 부양하는 누구나 뻔하게 살아가는 인생 패턴이 생각보다 빨리 찾아온다. - - 그 시절엔 하루도 1/24로 줄고, 돈도 1/24로 줄어드는 느낌이다. 총소득은 자꾸 늘어나는데 새는 돈은 걷잡을 수도 없이 많아지는 봉변이 일어난다. - - 역설적이지만 종잣돈은 총각 때 모아야 한다. 아니 그때가 아니면 거의 모을 수 없다. 그럼에도 그 이후 모으는 유일한 방법은 수입의 10분의 1이상을 저축하는 것이다. - - - __2. 황금을 모을 수 있는 직장을 찾고, 양 떼를 불리는 양치기처럼 현명하게 행동하면 황금이 불어난다.__ - 직장의 중요성은 두말할 나위 없다. `꾸준한 소득원`이 있어야 한다는 말이며 이를 불릴줄 알아야 한다. - - - __3. 황금을 잘 다루는 사람의 조언에 귀 기울이는 자가 황금을 지킬 수 있다.__ - `정보`의 중요성은 나날이 중요해지고 있다. 주위의 인맥을 활용하여 재테크의 조언을 구하는 것은 상상 이상으로 중요하다. - - - __4. 자신이 잘 모르는 사업이나 황금을 잘 지키는 자가 추천하지 않는 사업에 투자하는 자는 황금을 지킬 수 없다.__ - `지피지기`면 백전백승이라는 고금의 진리로 돈을 굴릴때는 반드시 내가 잘 알거나, 잘 아는 사람이 추천하는 길로 가야 한다. - - - __5. 비현실적인 이익을 바라거나 사기꾼의 달콤한 유혹에 넘어가고 자신의 미숙한 경험을 맹신하는 자는 황금을 지킬 수 없다.__ - 대표적으로 `비트코인`을 예로 들고 싶다. 지금까지도 열풍이 식지않고 꾸준히 우상향하는 것은 사실이지만 2017년 우리나라에 광풍이 불었을 때 불나방 같은 투자로 많은 청년들이 재산을 잃었다. 물론 시점에 따라 어마어마한 부를 얻은 사람도 있겠지만 전체 대비 얼마나 많은 사람들이 성공했을까? - - 주식이든 코인이든 다른 현물이든 사람들은 X축(시간)에 별로 집중하지 않고 Y축(가격)에만 집착하는 경향이 있다. X축이 무한에 가까운 변수가 될 수 있음을 깨닫는다면 일확천금을 노리다 한방에 올인될 수도 있음을 알아야한다. 위험한 투자 역시 마찬가지다. - - 더불어 주위에 부유한 분들의 조언을 새겨 들었더라면 지금 부자는 아니어도 넉넉한 경제력을 유지할 수는 있을것이라는 생각이 든다. - - 집부터 사고, 종잣돈 모으고, 차를 사는 너무 쉽고 간단한 그 분들의 조언을 단순하다고 무시하고, `똑똑한 나는 대부분의 사람들이 모르는 마법의 공식을 찾아내 성공할 수 있다고 자만한` 청년 시절의 치기가 떠올라 읽는 내내 부끄러웠다. - - 황금의 법칙외에도 또 다른 유용한 법칙들도 있는데 아래 그림은 책 전반에 걸친 핵심을 잘 정리한 페이지이다. - ![핵심](https://theorydb.github.io/assets/img/review/review-book-wisdom-babilon-rich-4.png) - - 더불어 책 곳곳에 현 시점에 걸맞는 투자법도 소개되어 있다. 하지만 대부분 황금의 법칙과 일맥상통하는 내용들이라 자세히 다루지는 않겠다. 이것으로 리뷰를 마무리할까 한다. - ---- - -이 책은 학생 혹은 사회 초년생에게 꼭 추천하고 싶은 책이다. 돈을 본격적으로 접하기 전 좋은 기본 지침을 들고 원칙을 세우고 자신의 자산을 관리하게 된다면 일확천금은 아니더라도 경제적으로 방향을 잃고 헤매진 않을거라는 생각이 든다. - -경계할 것은 뻔한 이야기라고 절대 무시하지 않았으면 좋겠다. 그 `뻔한 이야기를 대부분 실천으로 옮기지 못해 인생에 최소 한 번 이상의 위기와 직면하게 되고 괴로워 한다.` 특히 황금의 법칙 5번 처럼 자신의 미숙한 경험을 맹신하지 않았으면 좋겠다. - -이미 부를 이룬 분들은 그동안 걸어 온 본인의 여정에 잘못된 원칙이 있진 않은지 점검하기에 좋은 기회가 될거라 생각하며 한창 부의 전선에서 치열하게 전쟁 중인 나와 같은 사람들에게는 과거의 잘못을 곱씹고 반성하며 미래에 반복하지 않기 위한 원칙을 세우는 데 도움이 되리라 생각한다. - -그 외 주인공 반시르의 평생의 여정을 같이 여행해보며 스스로의 인생, 가족, 사랑에 대해 다시 돌이켜 보는 소중한 시간을 얻을 수 있음을 강조하고 싶다. - - -* [책소개 - 만화로 보는 바빌론 부자들의 돈 버는 지혜](http://www.yes24.com/Product/Goods/92524201) - diff --git a/_posts/2020-09-26-review-book-ai-for-quant-strategy.markdown b/_posts/2020-09-26-review-book-ai-for-quant-strategy.markdown deleted file mode 100644 index 1f51bd3b6..000000000 --- a/_posts/2020-09-26-review-book-ai-for-quant-strategy.markdown +++ /dev/null @@ -1,110 +0,0 @@ ---- -layout: post -title: "[리뷰] 퀀트 전략을 위한 인공지능 트레이딩" -subtitle: "파이썬과 케라스를 활용한 머신러닝/딥러닝 퀀트 전략 기술" -categories: review -tags: review book 퀀트 트레이딩 인공지능 AI 머신러닝 딥러닝 파이썬 케라스 금융 백테스팅 -comments: true -header-img: img/review/review-book-ai-for-quant-strategy-1.png ---- - -> `한빛미디어` 출판사의 `"퀀트 전략을 위한 인공지능 트레이딩(김태헌, 신준호 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-ai-for-quant-strategy-1.png) - ---- - -본 도서는 `머신러닝과 딥러닝을 활용한 AI 트레이닝 전략 및 구현`을 다룬다. - -알파고가 등장한지 4년이 넘어서일까 이제 시중에는 좋은 AI 서적들이 많이 늘어났다. 이 책 역시 그런 멋진 도서 중 하나이다. 총평을 먼저 내리자면 `AI 실용서 중 으뜸인 수작`이라고 평하고 싶다. - -총 379페이지에 달하는 분량안에 `투자의 핵심, 퀀트 전략, 머신러닝과 딥러닝에의 접목, 알짜배기 Python 스킬, 금융 학술분야 논문 구현`에 이르기까지 상대적으로 적은 분량에 어떻게 이 모든 지식들을 다 녹여낼 수 있는 것인지 저자의 역량에 감탄을 금할 길 없다. - -AI를 다루는 서적임에도 좋은 투자의 교본서 같은 느낌도 든다. 주식이나 코인 등을 투자해본 경험이 있는 분이 이 책을 읽는다면 왠만한 시중의 주식 서적보다 더 많은 인사이트와 분석법을 제공한다는 사실을 깨닫게 될 것이다. - -무엇보다 저자의 전달력이 너무 뛰어나다. 저자는 AI 분야의 베스트 셀러인 단단한 머신러닝, [데이터 과학자와 데이터 엔지니어를 위한 문답집](https://theorydb.github.io/review/2020/09/19/review-book-data-science-interview/)의 역자이기도 하다. - -두 책 모두 읽은 독자로써 번역서임에도 읽기가 참 편하다는 느낌이 들어 저자분의 성함을 기억하고 있었는데 그런 전달력으로 본인의 내공을 전달하기 때문일까 고난도의 알짜배기 지식이 간결하고 알기 쉽게 저술되어있어 인상적이었다. - -책의 구성은 크게 `개요 및 파이썬, 퀀트 전략, 머신러닝 적용, 딥러닝 적용` 4개의 파트로 나뉜다. 각 장의 특성에 맞게 파트별로 간단히 소개해 보겠다. - ---- - -* __개요 및 파이썬 (1~2장)__ - 1장 개요에서는 금융 영역 전반에 걸쳐 머신러닝이 어떤 평가를 받고 있고 어떻게 적용되고 있으며 투자에 어떤 알고리즘이 활용되는지 등의 전반적인 교양 수준의 지식을 총체적으로 다룬다. 뒷장에서 이어나갈 이론의 배경이자 실습 구현을 위한 기본 상식이기 때문에 미리 알아두는 것이 좋다. - - 2장은 `금융에 특화된 파이썬 활용법`을 소개한다. 이 장은 비록 본 도서의 핵심 내용은 아니지만 반드시 필요한 기초 중의 기초를 다루고 있으며 이 장의 파이썬 스킬들만 잘 익혀도 뒷 장의 구현에 큰 어려움이 없을만큼 알짜 지식이 잘 정리되어 있다. - - 일반적인 다른 서적들이 두루뭉실 API 활용법과 예제의 나열로 이루어져 뒷장을 넘길수록 망각하거나 체계가 잡히지 않아 고난이도 파트를 구현하는데 애를 먹기 마련인데 이 책은 필요 지식들이 유기적으로 연결되어있어 기억이 오래 남았다. 무엇보다 파이썬으로 데이터를 처리하려는 초보자가 한 번씩 골머리 앓는 아래와 같은 문제들을 디테일하게 언급하고 있어 인상적이었다. - - + 시계열에 특화된 함수들 - 잘 모르면 group by 등 전통적인 프로그래밍 방식으로 노가다의 지옥에 빠져들 수 있는데 이를 방지하기 위한 주요 함수들을 깔끔히 정리해준다. - - shift() : 특정 시점 시프트 이동 기능. 이후 비교 등의 처리에 용이. 아래와 같이 직관적인 시각화 그림이 제시되어있어 정말 쉽게 이해할 수 있다. - ![shift](https://theorydb.github.io/assets/img/review/review-book-ai-for-quant-strategy-2.png) - - pct_change() : shift 기능 + 백분율 변화량 - - diff() : shift 기능 + 변화량 - - rolling() : 마치 CNN의 윈도우와 비슷한 개념으로 윈도우 크기만큼 일정 구간 데이터들의 평균, 최소, 최대 값을 계산하는 함수 - - resample() : 시간 간격 조정 가능. 업 샘플링 + 다운 샘플링 - + 시계열 데이터 분석 시 시점과 기간의 컨트롤 차이 - + R과의 차이점 : NaN(Not a Number) 등 - + dropna() 함수로 열을 제거하고 싶은 경우 axis=1 옵션에 대한 깔끔한 설명 - + Pandas에서 컬럼에 접근 시 중괄호 두번 사용 등 - - 거의 매일 쓰이는 유용한 금융 데이터 처리 기법을 익힌 후 금융 API가 소개되며 "인베스팅.com"의 API를 활용하여 차트를 그려보는 등의 실습을 진행한다. 금융 데이터를 처리할 때 사용하는 Python의 핵심 기능을 최대한 분량을 줄여 전달하는 저자의 노력과 배려가 돋보였다. - ---- - -* __퀀트 전략 (3~4장)__ - 3장에서는 가장 기초적인 바이앤홀드 전략을 소개하고 `연평균 복리 수익률, 최대 낙폭, 변동성, 샤프 지수, 성과 분석 결과`를 구현해 본다. 일반인들에게도 크게 어렵지 않은 지표들이지만 데이터에 특화된 프로그래밍 언어나 라이브러리를 사용하지 않고 일반적인 프로그래밍 기법으로 구현하면 쉽지도 않을뿐 더러 코드가 복잡해진다. 나중에는 객체 지향 기법과 패턴을 동원해도 한 눈에 알아보기 힘들어 시간이 흐른 후 유지보수하기 힘들어지는 단점을 2장에서 배운 핵심 파이썬 지식을 활용해 방지할 수 있다. - - 4장에서는 전통적인 퀀트 투자 전략을 구현해본다. 주식 투자를 한 번이라도 해 본 사람은 귀에 익은 말이 있을 것이다. 바로 기술적 투자와 가치투자. - - 이 장에서는 기술적 투자에 있어 대표적인 2가지 관점에 대한 지표들을 직접 구현해 본다. 먼저 "올라간 주식은 반드시 내려온다." 관점의 대표격이라 할 수 있는 평균 회귀 지표인 `볼린저 밴드`를 구현해 본다. - ![볼린저밴드](https://theorydb.github.io/assets/img/review/review-book-ai-for-quant-strategy-3.png) - - 마찬가지로 또 다른 유용한 관점 "올라가는 주식이 계속 오른다"의 방식인 `듀얼(상대-절대) 모멘텀`도 구현해 본다. - ![듀얼모멘텀](https://theorydb.github.io/assets/img/review/review-book-ai-for-quant-strategy-4.png) - - 더불어 가치투자에 해당하는 `마법의 공식`도 구현해본다. 이는 주식 실전 투자 전략서에 자주 소개되는 유명한 공식인데 조엘 그린블라트가 고안한 방법이다. - ![마법공식](https://theorydb.github.io/assets/img/review/review-book-ai-for-quant-strategy-5.png) - - 주식 투자 시 각종 차트를 통해 활용했던 입장에서 직접 구현을 해봄으로써 내부 매커니즘을 익히는데 도움이되고 특히 퀀트를 목표로 하는 입문자에게는 상당한 자신감을 키워줄 수 있는 유용한 파트였다. - ---- - -* __머신러닝 적용 (5~6장)__ - 사실 위 4장까지만 다뤄도 충분히 부족함 없는 완성도 높은 책이라는 생각이 들텐데 본 게임은 여기에서부터 시작된다. - - 금융 분야는 핵심 이론의 공유가 폐쇄된 분야인데 이는 수익성과 직결되어있기 때문이다. 5장에서는 조심스러운 입장에서 많이 공개되지 않은 학술자료를 바탕으로 머신러닝이 금융에서 차지하는 포지션을 다뤄본다. - - 더불어 머신러닝의 대표적인 기법들을 간단히 정리해 본 후 `교차검증, 전처리, 측정 지표, 백테스팅` 방법에 대해 다룬다. 짧은 내용이지만 머신러닝의 알짜배기를 빠르게 익힐 수 있고 특히 말로만 듣던 백테스팅 방법을 직접 구현해보며 퀀트의 실제에 대한 맛을 볼 수 있었다. - - 6장에서는 5장에서 배운 지식들을 토대로 머신러닝을 적용한 결과물들을 직접 구현해본다. `ETFs를 활용한 주가 방향 예측` 구현 파트에서는 트리 기반의 앙상블 구현을 통해 각 전문가들의 의견을 조합하는 방식을 배울 수 있다. - - 이어 초보자도 이해하기 쉬운 `k-최근접 이웃 알고리즘을 통한 지도학습` 전략, `비지도 학습 알고리즘인 클러스터링을 활용한 종목 분류` 또한 직접 구현한다. 여기까지 이르면 사실 머리가 상당히 복잡해지지만 그럼에도 머리속에 나름의 체계가 잡히는 것이 신기했다. 아마도 저자의 뛰어난 체계적인 전달력이 책에 녹아있기 때문이 아닐까 생각한다. - ---- - -* __딥러닝 적용 (7~8장)__ - 드디어 대망의 딥러닝이 등장하는 파트이다. - - 7장에는 딥러닝의 전반적인 지식을 소개하는 개요 부분이라 할 수 있다. 대표적인 딥러닝 알고리즘 소개 및 학술 분야의 연구 현황과 케라스 프레임워크를 다루는 방법까지 두루 살펴본다. - - 이어 8장에서는 7장의 지식들을 활용해 직접 `논문의 기술들을 구현`해본다. 제일 먼저 주식 데이터의 캔들 그림을 인풋 데이터로 활용하여 `CNN으로 예측 분석 모델`을 구현한다. Tabular 데이터가 뻔히 있음에도 이미지로 변환하여 CNN에 적용하는 아이디어가 매우 인상적이었다. - ![CNN](https://theorydb.github.io/assets/img/review/review-book-ai-for-quant-strategy-6.png) - - 다음으로 `시계열 모델에 유리한 RNN을 활용하여 주가 방향성을 분류`하는 모델을 만든다. 더불어 `오토인코더를 활용하여 주가 데이터를 생성`해보는 논문도 구현하게 되는데 이 부분은 나중에 GAN 같은 기술을 활용하면 더욱 의미 있을 듯 하다. - - 그간 금융 분야에 딥러닝을 적용하는 기법들은 세간의 관심사인데 반해 정작 알려진 혹은 쉽게 이해할 수 있는 레퍼런스가 매우 드물었다. 특히 국내 서적은 말할 것도 없다. 그런점에서 본 파트가 책 중 가장 가치 있는 내용을 다룬다고 생각한다. 논문을 직접 구현해보며 학술적인 안목도 높힐 수 있고 스스로의 인사이트를 트레이닝 모델에 접목해 볼 수 있는 `자생력`을 키울 수 있기에 매우 유익했다. - ---- - -책 소개는 이 정도면 충분할 것 같다. 금융 분야에의 AI 기술은 수익과 직결되는 부분이기에 쉽게 공유되지 않는 소중한 지식들이다. 더욱이 일반인들이 쉽게 이해하기 어려운 영역이기도 하다. - -이런 소중한 지식을 저자의 내공과 전달력이 버무러져 쉽게 떠먹을 수 있는 형태로 구성된 책이기에 도저히 추천하지 않을 수 없다. 앞에서 칭찬 일색으로 도배했듯 AI에 관심 있는 모든 분들이 반드시 읽어봐야 할 `필독서`임을 강조하고 싶다. 이런 멋진 양서를 세상에 베푼 저자, 출판사 관계자 분들께 깊이 감사드린다. - - ---- - -* [책소개 - 퀀트 전략을 위한 인공지능 트레이딩](http://www.yes24.com/Product/Goods/91326289) - diff --git a/_posts/2020-09-27-review-book-emotion-arrangement.markdown b/_posts/2020-09-27-review-book-emotion-arrangement.markdown deleted file mode 100644 index 441c57ba3..000000000 --- a/_posts/2020-09-27-review-book-emotion-arrangement.markdown +++ /dev/null @@ -1,113 +0,0 @@ ---- -layout: post -title: "[리뷰] 감정이 어려워 정리해 보았습니다" -subtitle: "감정을 설명하기가 가장 어려웠다" -categories: review -tags: review book 감정 정리 뇌 통증 쾌감 이성 욕망 오감 중독 몰입 가소성 행복 연결 -comments: true -header-img: img/review/review-book-emotion-arrangement-1.png ---- - -> `예문당` 출판사의 `"감정이 어려워 정리해 보았습니다(최낙언 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-emotion-arrangement-1.png) - ---- - -본 도서는 `감정의 원리를 이해하기 위한 지식의 모음`이다. - -> 맛이란 무엇인가? - -쉽다면 쉽겠지만 어렵다면 매우 어려운 질문이다. 이 책은 위 질문의 해답을 찾기 위한 저자의 여정을 기록한 글이다. - -책에는 인간의 `뇌, 감정, 감각, 지각, 이성` 등에 관한 놀랍고도 흥미로운 연구 결과 및 매커니즘들이 듬뿍 담겨있다. "명령하는 뇌, 착각하는 뇌"로 유명한 라마찬드 교수나 "환각"으로 유명한 올리버 색스 등 저명한 학자들의 지식이 담겨있으며 그 외 폭넓은 실험, 연구 등을 토대로 저자의 인사이트를 녹여 새로운 시각을 독자들에게 전달한다는 점이 인상적이다. - -책을 읽고 그동안 알고 있던 감정이라는 개념을 달리보게 되었다. 감정을 흔히 이성에 반하는 무식하고 원초적인 감각쯤으로 생각해왔는데 생존에 필요한 이성보다 소중한 삶의 `원동력`이라는 점이나 무엇보다 `가치 "판단"`이 감정에서 비롯된다는 점에서 인식을 달리하게 되었다. - -현재의 AI 역시 알파고 등 비약적인 발전을 거듭하고는 있지만 인간의 지능은 흉내내는 데 반해 감정은 흉내내지 못한다. 더불어 과학의 영역에도 감정이 허용되지 않는다. 포도당이 우리 몸에 가장 고마운 존재임에도 감사하는 마음은 전달되지 않는 것 처럼 말이다. - -인류의 역사를 돌이켜 볼 때 물질적으로 최고로 풍요로운 시기에 살고 있으며 문명의 발전이 극에 달했음에도 정신적인 영역과 행복한 삶이라는 측면에서는 거의 진화한 것이 없다. 오히려 원시시대 거대한 매머드를 잡아 한 달간 식량에서 해방된다는 만족감이나 사냥의 과정에 있어서 구성원 간의 결속과 협동의 과정에서 느끼는 행복도 사라졌다. - -아프니까 청춘이다라는 식상해진 말 부터 감정을 위로하고 위로 받고자하는 책과 프로그램으로 구성된 시장이 연일 거대해지고 있다. 이 모든 사회 문제가 감정에 대한 `무지 혹은 무관심`에서 비롯되는 것이 아닐까? - -감정은 너무나도 어려운 영역이다. 우리는 뇌의 매커니즘에 따라 감정이 결정하는 판단에 의해 움직일 수는 있으나 감정이 왜 그렇게 판단을 했는지 등의 내부 작동 원리는 모른다. 때문에 이 책에도 감정을 다스리는 마법같은 해결책이 등장하지는 않는다. - -그럼에도 본 도서가 굉장히 의미있는 것은 그동안 학계에서 연구한 흥미로운 결과들을 집대성하였다는 점, 그리고 그 많은 지식들을 일반 대중의 눈높이에 맞게 재구성했다는 점, 간접적이나마 우리에게 감정을 다스리는 해법을 제시한다는 점을 들 수 있겠다. - -예를 들면 맹점, 환각사지(절단된 팔에서 느껴지는 환각), 담배의 중독 원리, 다이어트의 실패 이유 등 평소 궁금해했던 흥미로운 주제들이 듬뿍 담겨있다. 감정이나 뇌라고 하면 다소 딱딱한 주제라고 여길 수도 있겠지만 이처럼 흥미진진한 주제와 예시를 통해 이야기를 전개해 나가기 때문에 손에서 책을 떼기가 어려울 정도이다. - -책에서 읽고 알게된 신비한 지식과 새롭게 얻게된 인사이트들을 아래와 같이 정리해 보았다. - ---- - -* __감정이란?__ - + ex) 공포를 느끼면 호르몬 분비를 촉진하고 근육에 혈액을 공급해 도망갈 준비를 시킨다. - + 오랜 진화의 역작. 생존과 번식에 유리한 쪽에 쾌감을 부여하고 불리한 쪽에 통증을 부여. - + 행동의 `지휘자`. 이성은 나중에 합리화하는 정도에 지나지 않는다. - + 사람이 살아가게 하는 힘이자 고통의 원천. - + 생각이 많으면 행복이 멀어지고, 생각이 없으면 의미가 멀어진다. - + 성현, 철학자의 행복론에 귀기울여도 자신의 삶에 적용해 행복해지기는 쉽지 않다. - + 생각이 감정에 작용하는 뇌의 네트워크 보다 감정이 이성에 명령을 내리는 네트워크가 3배 더 많다. - + 보통 감정이 이성을 이길 뿐더러 `순식간에 생각을 지배`하기에 대중 앞에서 강연 시 아무 생각이 들지 않는 현상이 생기기도 한다. - -* __욕망과 풍선효과__ - + 욕망은 만족감 보다는 `더욱 큰 새로운 욕망`을 발명하여 갈증을 심화시킨다. - + 단맛에 대한 욕망은 미국 독립운동 원인의 하나이기도 하다. - + 감칠맛의 핵심인 글루탐산의 발견으로 MSG 등장. 맛의 민주화를 이룸. - + 향에 대한 갈증이 유럽의 대항해시대를 열고 아메리카 대륙 발견의 원동력이 됨. - + 소리를 붙잡아 기록하고 싶은 열망에 최초의 축음기 포노그래프 발명. - + 욕망과의 전쟁은 실패한다. - - 붉은 살코기를 먹지말라하면 마가린을 먹고 마가리는 재제하면 식용유를 먹는다. - - 미국의 금주법 이후 암거래와 마피아 세력이 활개를 치며 법과 정부를 무시하는 풍토가 확상되었다. - - 영국의 제임스 1세는 담배를 탄압하였으나 밀수입이 급증했고 그 외 히틀러 등의 독재자 그 누구도 담배를 몰아내는데 성공하지 못했다. - - 네덜란드의 경우 대마를 허용하자 오히려 마약으로 인한 피해가 줄었다. - + `타인의 욕망`을 욕망한다. - - 남들이 좋아하는 것을 좋아하고, 남들이 하고 싶은 것을 하고 싶어하는 현상. 애초에 타인의 욕망을 욕망하도록 설계되어 있다. 아기가 엄마의 웃음을 따라하는 것 처럼. - - 이 때문에 자신이 진짜 원하는 것을 구분하기 힘들고, 타인의 평가나 시선을 지나치게 의식하게 된다. - -* __뇌와 감정__ - - `맹점 채움 현상` - 오른쪽 눈을 손바닥으로 가리고 왼쪽 눈으로 십자가 모양에 집중한 후 모니터에 얼굴을 조금씩 가까이 가져가보자. 얼굴과 모니터 사이의 거리가 25cm 정도 되었을 때 왼쪽의 하트가 보이지 않는 구간인 맹점이 있음을 발견할 것이다. 더 놀라운 것은 우리의 두뇌가 하트를 글씨로 채운다는 점인데 이것이 맹점 채움 현상이다. - ![맹점](https://theorydb.github.io/assets/img/review/review-book-emotion-arrangement-2.png) - - `미러뉴런 매칭` 시스템 - + 시각뿐만 아니라 후각, 미각 또한 동일한 방식으로 작동한다. - + 동일한 와인의 가격을 미리 알려주고 맛을 품평하는 실험에서 비싼 가격으로 칭한 와인의 맛이 좋다고 하는 현상은 이미 감정에 의한 판단이 일어났음을 의미한다. - + 우리 뇌는 생존을 위한 빠른 판단을 위해 온갖 기술과 편법을 동원하여 사실을 왜곡한다. - + 즉, 모든 기억의 행위는 어느 정도 상상의 행위이다. - - 기억이 없으면 판단의 기준이 없고, 적합한 감정도 일어나기 힘들다. - - 자물쇠 효과 - 새로운 것이 나와도 익히는 것이 귀찮아 원래 하던 대로 계속 하는 현상. 30대 이후 남자에게 두드러지며 평생동안 즐길 게임 목록이 마감되기 전에 새로운 것을 찾아 즐길 필요가 있다. - - 휴지 상태 네트워크(디폴트 모드 네트워크) - 누워서 가만히 쉬기만 해도 많은 에너지를 사용. 일종의 명상과 같은 상태로 자아 성찰, 자전적 기억, 사회성과 감정의 처리 과정, 창의성 등을 지원한다. - - 환각사지 - 없어진 손발이 마치 존재하는 것처럼 생생하게 느껴지는 현상. 절단된 부위가 재배선된 두뇌에 존재. 라마찬드란의 저서 "두뇌실험실"에 따르면 거울을 이용해 2개의 팔이 모두 있는 것 처럼 보이게 한 후 움직이면 치유에 도움이 된다. - 시각 정보는 팔이 움직인다고 하고, 체감각은 없다고 하기에 이 갈등을 해소하기 위해 팔이 존재하지 않음을 인지하게 된다. 놀랍게도 생각과 의지가 아닌 시각적 감각이 치유의 열쇠이다. - - 최후통첩 게임 - 공정함을 최우선 가치로 여기는 경우가 많다. 조금의 이득보다는 상대방이 불공정하게 많이 가져가는 것을 맏는데 만족한다. 감정은 이렇게 사회적 활동과 관계를 통해서도 구성된다. - -* __우리의 감정을 지배하는 것이 스스로의 의지인가? 신경전달물질인가?__ - + 도파민 : 우리 몸의 보상 체계를 담당하는 쾌락 유발 물질. - + 도파민과 수용체의 결합으로 쾌감을 느끼게 되는데 코카인 같이 도파민의 수용을 방해해 쾌락을 지속시키는 마약이 있는가 하면 도파민 자체가 마약이 될 수도 있다. 우리 몸의 항상성은 체온을 유지하듯 도파민이 과할 경우 수용체를 줄이게 되는데 이로 인해 더 강렬한 자극을 원하게 되면서 마약 중독과 같은 악순환이 반복된다. - + 코스모스의 저자 칼 세이건은 인류의 농경 기원을 식량이 아닌 마약 재배에서 찾기도 한다. - + 세로토닌 : 평온함을 담당하는 신경 물질. - + 엔도르핀 : 모르핀보다 훨씬 강력한 내인성 마약물질. 출산, 사망시 최대 분비. - + 옥시토신 : 일시적으로 억제성 뉴런 활동을 억눌러 흥분성 세포들이 반응할 수 있게 해준다. 사람의 코에 뿌리면 신뢰도를 높여준다는 연구 결과도 있다. - + 뇌의 신경가소성 : 뇌가 학습이나 환경에 따라 유동적으로 변하는 현상. - -* __무엇을 해야 할까?__ - + `반복`은 신경가소성을 활용할 수 있는 좋은 방법이기에 좋은 `습관`을 반복적으로 형성한다. - + 행동과 감정은 한 세트이므로 `행동`을 바꾸면 감정도 바꿀 수 있다. - + 올바른 감정이 샘솟을 수 있도록 `환경`을 바꾼다. - + `건강`을 챙긴다. - + `흥미`진진한 일에 몰두한다. - ---- - -개인적으로 인상깊었던 부분들만 정리해 보았음에도 상당히 많은 분량이 되었다. 이처럼 우리 뇌와 감정에 관한 매커니즘을 이해하고 다스리기 위한 폭넓은 지식을 제공하기에 모든 분들께 일독을 권하고 싶다. - -![감정의 원리](https://theorydb.github.io/assets/img/review/review-book-emotion-arrangement-3.png) - -* [책소개 - 감정이 어려워 정리해 보았습니다](http://www.yes24.com/Product/Goods/92305212?OzSrank=1) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. - diff --git a/_posts/2020-09-28-review-book-sns-pwa.markdown b/_posts/2020-09-28-review-book-sns-pwa.markdown deleted file mode 100644 index bb8616dfa..000000000 --- a/_posts/2020-09-28-review-book-sns-pwa.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: post -title: "[리뷰] SNS 앱 예제로 배우는 프로그레시브 웹 앱" -subtitle: "네이티브 앱처럼 동작하는 웹 프로젝트 완성" -categories: review -tags: review book PWA 프로그레시브 웹 앱 서비스 워커 Push SNS -comments: true -header-img: img/review/review-book-sns-pwa-1.png ---- - -> `비제이퍼블릭(BJ퍼블릭)` 출판사의 `"SNS 앱 예제로 배우는 프로그레시브 웹 앱(이근혁 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-sns-pwa-1.png) - ---- - -2010년 경 모바일 앱을 처음 만들어 봤다. 당시만 해도 대세는 네이티브 앱이었는데 모바일 웹과 중복으로 개발해야 하는 생산성 문제 때문에 폰갭 등의 하이브리드 앱이 등장하였다. - -10년이 지난 후 모바일 개발 생태계는 춘추전국시대가 되어버렸다. 안드로이드 진영에는 코틀린이 네이티브 개발을 대체하는 추세이고, 본 도서에서 소개하는 PWA가 나름의 한 축을 이끌어 가고 있으며, 구글의 플러터도 한 축을 담당하고 있다. - -아직 어느것 하나가 뚜렷하게 대세를 끌고 있는 형국은 아니기에 개발 목적에 제일 부합하는 방식을 찾는 융통성이 필요한 시점이 아닐까 한다. - -이 책은 그런 측면에서 PWA의 장단점을 쉽게 파악하고 `쿡북` 형태로 빠르게 구현 방법을 익힐 수 있다는 점이 장점이다. - -PWA는 웹 앱임에도 네이티브 앱에서 제공하는 기능을 구현할 수 있다는 점이 장점이며, 자바스크립트 하나만으로 서버 사이드 까지 아우를 수 있다는 심플함이 있다. 개인적으로는 애플 진영에서 이 기술을 어디까지 용인하느냐가 대세 여부에 지장을 줄 변수라고 본다. - -PWA를 사용하면 `Node.js`를 통해 자바스크립트 문법으로 네이티브 기능들을 컨트롤 할 수 있고, 오프라인 상태에서도 활용이 가능하며, `서비스 워커`를 통해 백그라운드에서도 데이터를 동기화 할 수 있다. 심지어 그동안 웹 앱에서는 구현이 불가능했던 `Push` 기능의 구현도 가능해진다. - -본 도서는 Paper라는 간단한 예제에 PWA의 기능들을 입혀가며 개선하는 과정을 통해 PWA를 학습할 수 있게 도와준다. `하나의 앱에만 집중`하기 때문에 군더더기 없이 통일성있게 PWA를 배울 수 있다는 장점이 있으며, 저자 특유의 문체 덕분에 `가독성`이 좋아 그만큼 학습 능률에 도움이 된다. - -PWA의 핵심 기능인 서비스 워커를 알기 쉽게 풀어나가는 점도 책의 매력이라 할 수 있다. 기본적으로 자바스크립트는 싱글 스레드 기반으로 움직이기 때문에 이 제약을 피하기 위해 백그라운드의 기술이 중요해 진다. 이는 Node.js에서도 마찬가지이다. - -서비스 워커를 활용하면 대표적으로 아래와 같은 3가지 기능을 활용할 수 있게 되는데 책의 예제를 통해 한 단계씩 구현하다보면 쉽게 익힐 수 있다. -* Fetch(브라우저 요청) -* Sync(백그라운드 동기화) -* Push(푸시 알림 수신) - -그 외 캐시스토리지, IndexedDB, 웹 앱 매니페스트 등의 자주 활용하는 부가기능이 소개된다. `캐시 스토리지`란 브라우저에 리소스를 직접 저장하고 관리할 수 있는 공간으로 API를 통해 활용할 수 있다. 덕분에 오프라인에서도 PWA를 활용할 수 있게 된다. - -`IndexedDB`란 말그대로 DB이다. Paper 예제에서 CRUD를 통해 IndexedDB를 활용하는 예제를 따라하다보면 어떤 개념인지 쉽게 파악할 수 있다. 덕분에 Mysql과 같은 DB로부터 독립적인 설계가 가능해진다. - -`웹 앱 매니페스트`는 웹 앱을 일반적인 앱처럼 설치할 수 있게 해주는 기능이다. 웹 앱의 이름이나 시작페이지, 아이콘 등의 정보가 담겨있다. - -다음으로 앞서 설명했던 서비스 워커의 심화과정인 `백그라운드 동기화`를 다룬다. 모바일이 온라인에서 오프라인으로 바뀌었을 때 혹은 그 반대의 케이스가 구체적으로 어떤 매커니즘으로 동작하는지 궁금했는데 이 책 덕분에 상세히 알 수 있어 좋았다. - -주로 서비스 워커에 동기화 작업을 등록하여 처리하며 클라이언트와의 `메시지 전달` 기법을 통해 문제점들을 보완한다. 이를 통해 삭제한 이미지 등이 캐시에 잔존하는 문제 혹은 동기화 작업 후에도 작업 목록이 갱신되지 않는 문제에 대한 처리가 가능해진다. - -마지막으로 Paper 앱에 Push 기능을 구현하며 대단원을 마무리한다. 앱 푸시 아키텍처에 대해 익힌 후 알림 API를 활용하며 구글의 FCM이라는 푸시서비스 연동을 통해 알림 기능을 구현한다. 부가적으로 `BABEL`을 활용해 구버전의 브라우저에 대한 대응 방법을 다루며 부록에서는 비동기와 콜백 매커니즘을 위주로 살펴보는데 초보자들에게는 많은 도움이 될 것 같다. - -전반적으로 Paper라는 앱 하나를 선정하여 PWA의 주요 기능을 하나씩 구현해나가는 과정이 통일성을 부여하여 집중력을 높여주는 구성이 백미이다. 더불어 PWA의 주요 기능들을 디테일하게 다루고 있기에 초보자도 쉽게 따라해보며 기능과 개념을 익힐 수 있다는 점이 장점이다. 더불어 가독성이 좋아 매끄럽게 읽힌다. - -PWA에 관심이 있거나 앱 개발을 처음 시작하는 분이라면 본 도서로 시작할 것을 추천하고 싶다. - - -* [책소개 - SNS 앱 예제로 배우는 프로그레시브 웹 앱](http://www.yes24.com/Product/Goods/91360603) - diff --git a/_posts/2020-10-04-review-book-big-dept-crises.markdown b/_posts/2020-10-04-review-book-big-dept-crises.markdown deleted file mode 100644 index 4299c13c4..000000000 --- a/_posts/2020-10-04-review-book-big-dept-crises.markdown +++ /dev/null @@ -1,102 +0,0 @@ ---- -layout: post -title: "[리뷰] 레이 달리오의 금융 위기 템플릿" -subtitle: "다가올 금융 위기를 대비하는 원칙" -categories: review -tags: review book 레이달리오 금융 부채 위기 원칙 사이클 사례 연구 경제 정책 시장 투자 -comments: true -header-img: img/review/review-book-big-dept-crises-1.png ---- - -> `한빛비즈` 출판사의 `"레이 달리오의 금융 위기 템플릿(레이 달리오 저/송이루, 이종호, 임경은 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-big-dept-crises-1.png) - ---- - -본 도서는 `부채로 인한 금융 위기를 체계적으로 유형화한 템플릿`이다. - -저자 레이달리오는 세계적인 헤지펀드 회사 브리지워터의 설립자이다. 세계 100대 갑부라는 타이틀 외에도 그가 유명세를 타는 이유는 몇가지가 더 있다. - -2008년 글로벌 금융 위기 당시 대부분의 투자사의 수익률은 -30% 수준을 기록했다. 하지만 그의 브리지워터 헤지펀드 수익률은 +15%를 달성했다. `당시 위기를 슬기롭게 대처한 핵심 비결`이 바로 본 도서의 내용이다. - -그는 전작 [원칙](https://theorydb.github.io/review/2020/09/04/review-book-principles/)으로도 유명하다. 자신이 겪었던 세상의 굴곡을 자서전 형태로 남긴 도서로, 인생과 일이라는 두가지 큰 축에 맞춰 스스로의 원칙이 무엇이었는지 저술한 책이다. 인생 파산에서 세계 100대 부자에 오르기까지의 그의 철학과 경험이 묻어있는 책이기에 일독을 권하는 바이다. - -원칙을 읽었던 독자로써 이 템플릿이 무엇인지 또 가치는 어떠한지 바로 알아볼 수 있었다. 원칙을 읽어보면 브리지워터에는 컴퓨터 의사결정 시스템이 존재하는데 그 시스템에는 금융 예측을 위한 패턴들이 녹아있다. - -이 템플릿은 바로 그 예측 패턴들을 글로 옮겨 적은 버전이다. 물론 타 경쟁사에 유출되어 자생력을 잃을 수준으로 모든 비법이 공개되지는 않았겠지만 적어도 일반인에게는 전문가들이 `어떤 방식으로 금융 위기를 유형화하고 예측하며 대처하는지`에 대한 궁금증을 해소할 수 있으며 `스스로의 투자 전략을 업그레이드` 할 수 있는 멋진 기회로 삼을 수도 있다. - ---- - -책을 읽으며 느꼈던 인상깊었던 또 다른 장점들을 파트별로 소개해볼까 한다. 먼저 책은 크게 3개의 파트로 이루어져 있다. - -Part1은 총론이다. "대형 금융 위기를 이해하는 기본 템플릿"으로 크게 `디플레이션과 인플레이션` 두가지 유형의 관점에서 `부채 사이클`을 분석한다. 부채 사이클에 대한 독자들의 이해를 돕기위해 모노폴리 보드 게임과 같은 단순하고 흥미로운 예제를 첫 출발으로 사이클의 전반을 설명하는 점에서 저자의 배려가 느껴졌다. - -개인적으로 흥미롭게 읽었던 주제는 Part1의 후반부에 해당하는 하이퍼플레이션과 전쟁 경제 부분이었다. 하이퍼플레이션은 인플레이션이 극도로 심각해지고 장기적으로 이어져 발생하는 위기이다. - -2008년 금융 위기 이후 전세계 각국 정부가 지속적인 `양적완화` 정책을 펼치고 있기에 우리 사회 곳곳에 이 템플릿에서 설명하는 현상들이 감지되고 있어 미래를 준비하는 입장에서 흥미롭게 읽을 수 있는 부분이었다. - -저자는 하이퍼플레이션의 해결책으로 기존 통화를 단계적으로 폐지하고 가치 담보의 역할을 제대로 수행할 수 있는 새로운 통화를 도입하는 방법을 제시하고 있는데 몇년 전부터 통화 개혁이 왜 이슈가 되었는지 알 수 있는 계기가 되었다. - -더불어 몇몇 투자가들로부터 달러 투자가 해법이라는 말이 왜 나오는지, 몇년 전 금과 같은 원자재 투자 열풍이나 부동산 가격의 폭등 등 전반적인 현상황에 대한 이해에 많은 도움이 되었으며 씁쓸하지만 현재 우리의 경제가 얼마나 위태로운 상태인지도 가늠할 수 있는 계기가 되기도 하였다. - -특히 일반적인 거시경제학이나 정책입안자의 입장에서 쓰여진 글이 아닌 `순전히 투자자의 시각`에서 경제를 바라보고 위기 대응책을 찾고자 노력했다는 점이 마음에 들었다. - -일례로 위에서 언급했던 Part1 "일시적인 인플레이션 불황과 하이퍼인플레이션의 악순환" 부분을 보면 하이퍼인플레이션에 봉착한 경우 투자자는 모든 수단을 동원하여 국외로 돈을 반출하고, 원자재를 매입하고, 원자재 산업에 투자하며, 주식시장을 대체로 멀리할 것을 종용하고 있다. - -이는 개인의 입장에서는 최선의 선택일 수 있겠으나 국가 입장에서는 매국노도 이런 매국노가 없을 것이다. 그럼에도 불구하고 국가 측면, 도덕적 측면, 복잡한 거시경제 다 제쳐놓고 투자자가 수익을 올리기 위한 관점에서 집요하게 최근 100년 간의 전세계 굵직한 금융 위기를 분석했다는 점에서 세상 다른 도서들이 가지지 못한 멋진 가치를 가지고 있다. - -더불어 전쟁 경제를 다룬점이 마음에 들었다. 전쟁이 발발할 경우 평시와는 전혀 다른 양상을 띄는 그동안 알고 있던 경제 상식이 적용되지 않는 시기이다. 이에 대한 거시적인 양상과 대비책을 알고 싶었는데 이에 대해 자세히 다루는 도서는 찾아보기 어려웠는데 본 도서에서 해당 파트를 심도있게 다뤄줘서 안목을 넓히는 데 도움이 되었다. - -지금처럼 평화로운 시기에 전쟁 경제에 관심을 가지는 이유는 `미-중 갈등의 지속` 때문이다. 미-중 갈등은 우리나라에 특히 치명적이다. 우리나라의 산업이 무역에 의존하는 비중이 높기 때문이기도 하고, 카운터 무역 파트너로써 미국과 중국이 차지하는 비중도 어마어마하기 때문이다. - -더 심각한 시나리오를 생각해본다면 전쟁이 될 수 있겠는데 지정학적 위치 상 우리나라의 위치는 최악이다. 미국과 중국이 전쟁을 치르게 될 경우 전장의 중심은 한반도가 될 가능성이 농후하기 때문이다. - -이런 시나리오는 최대한 피하고 생각하기도 싫지만 만에 하나의 가능성에 대비해 모르고 닥치는 것보다는 미리 알고 있는편이 좋다고 생각했다. 그런 측면에서 총론에서 다양한 관점에서 경제 위기를 다룬 점이 매우 마음에 들었다. - -비록 총론에서는 전쟁 경제를 심도있게 다루진 않지만 이어지는 Part2에서 상세한 단면을 엿볼 수 있도록 구성되어 있다. - ---- - -이어지는 Part2에서는 각론을 다룬다. 크게 3가지의 위기를 매우 중점적으로 다루는데 그 중 하나는 `세계대전 이후 독일이 겪었던 하이퍼인플레이션`을 중점적으로 다룬다. - -앞서 언급했듯 개인적으로 하이퍼인플레이션과 전쟁 경제에 관심이 많은데 전후 막대한 전쟁 보상금으로 인플레이션이 지속될 수 밖에 없었던 독일의 당시 상황과 수십년에 걸쳐 회복하기 위해 조치했던 내막을 자세히 알 수 있어 매우 유익했다. - -더불어 전쟁이 발발하며 단계적으로 변화하는 경제의 양상을 `타임라인` 순서에 맞게 상세히 보여주고 있어 전쟁이 경제에 미치는 영향은 물론 시간에 따른 패턴을 파악하기에 용이했다. - -특히 각 `시기별 신문 기사`의 주요 내용이 함께 수록된 점이 주옥같다. 당시의 현장감을 생생하게 느낄 수 있으며 개인의 입장에서 뉴스 및 신문의 헤더라인에 비슷한 내용이 뜰 경우 어떻게 미래에 대응해야 할지 감을 익히기에 이보다 훌륭한 교재가 또 있을까 싶다. -![신문기사](https://theorydb.github.io/assets/img/review/review-book-big-dept-crises-3.png) - -나머지 2개의 위기는 `2008년 글로벌 금융위기`와 `1930년대의 세계 경제 대공황`을 다룬다. 두 사건은 모두 현 경제를 조망하고 위기를 언급할 때마다 가장 먼저 언급되는 단골 소재들인데 당시의 상황이 어땠고 가계와 투자 측면에서 어떤 현상이 나타났으며 해결을 위해 어떤 조치들이 있었는지 상세히 파악할 수 있다. - -위에서 언급한 주요 신문기사를 확인할 수 있으며, `주요 경제 지표와 도표`들을 총체적으로 파악할 수 있는 좋은 기회이기도 하다. -![지표](https://theorydb.github.io/assets/img/review/review-book-big-dept-crises-2.png) - -개인적으로 AI에 관심이 매우 많아 각 패턴과 특성(Feature)들에 관심이 많은데 거의 대부분의 주요 지표들이 사례와 함께 모조리 언급되고 있어 나에게는 이보다 보석같은 경제 서적이 없다. 여기서 언급하는 패턴과 금융 도메인 지식을 조합한다면 투자에 활용할 수 있는 AI를 만들기에 손색이 없다 느껴졌다. - -더불어 Part2는 이어지는 Part3를 분석하는데 매우 중요한 부분이다. 최근 100년 간 가장 주목할 만한 대형사건 세가지를 분석하고 있는 바, 이어지는 Part3의 각국별 금융 위기를 분석하기 위한 `방법론`을 훈련하는 과정이라 생각한다. - ---- - -Part3는 세계 각국의 굵직했던 부채 위기 `48개를 사례별로 연구`한 결과에 대한 모음집이다. 앞서 언급했듯 Part2에서 저자가 어떤 관점에서 위기를 분석했는지 방법론을 빌려 Part3를 분석하면 될 것 같다는 생각이 들었다. - -48개라는 상당한 사례를 다룬 만큼 독잡 입장에서는 특정 편향에 빠지지 않고 보다 `일반화`된 금융 및 위기 모델을 만들거나, 보다 객관적인 패턴을 파악하기에 용이할 거라 생각한다. - -더불어 개략적인 연구 결과를 파악한 후 보다 심도있게 해당 사례를 분석하고 싶다면 Part2에서 다룬 방법론과 동일하게 Part3 특정 사례의 자료를 수집하고 분석해 보는 것도 훌륭한 경제 공부가 되지 않을까 싶다. - -또 한가지 흥미로운 점은 대한민국의 IMF 사례가 등장한다는 점을 들 수 있겠는데 보다 우리와 밀접한 주제이고 어느 정도 나이가 있는 사람들은 직접 몸으로 겪었던 사례이기에 보다 친숙하게 경제와 금융을 학습하는데 도움이 된다. -![대한민국](https://theorydb.github.io/assets/img/review/review-book-big-dept-crises-4.png) - ---- - -이것으로 책에 대한 소개를 마칠까 한다. 예전부터 리뷰를 작성할 때는 개인적으로 가장 인상깊었던 인사이트나 기억해야 할 주요 내용을 기록하는 편인데 이번 도서는 감히 그럴 깜냥이 되질 않는다. - -최근 100년간의 주요 금융 위기라는 대규모 데이터속에서 한 고수가 평생 갈고 닦은 내공을 통해 압축한 패턴을 선보였는데 이를 리뷰를 통해 더 압축하기엔 스스로의 역량도 부족하고 인사이트가 너무 풍부하여 불가능에 가깝다. - -이런 멋진 템플릿을 세상에 공유한 저자께 깊이 감사드리고 싶다. 참고로 저자가 운영하는 홈페이지 [principles](https://www.principles.com/big-debt-crises/)에 접속하여 이메일을 등록하기만 하면 원문 PDF를 무료로 다운로드 받을 수 있다. 늘 그렇듯 원문에는 특유의 정보와 뉘앙스가 숨어있는 법이므로 본 번역서를 다 읽고 원문으로 읽어볼 것을 추천드린다. - -보통 리뷰를 마무리할 때에는 왜 추천하고 싶은지 정리하며 귀결하는 편인데 이 책은 굳이 그럴 필요가 없을 것 같다. 읽지 않으면 손해이기에 반드시 일독을 권하는 바이다. - - -* [책소개 - 레이 달리오의 금융 위기 템플릿](http://www.yes24.com/Product/Goods/87117230) - diff --git a/_posts/2020-10-17-review-book-crypto-laundering-prevention.markdown b/_posts/2020-10-17-review-book-crypto-laundering-prevention.markdown deleted file mode 100644 index b44ef89fb..000000000 --- a/_posts/2020-10-17-review-book-crypto-laundering-prevention.markdown +++ /dev/null @@ -1,99 +0,0 @@ ---- -layout: post -title: "[리뷰] 쉽게 이해하는 블록체인 : 암호화폐 자금세탁방지" -subtitle: "실무자를 위한 핀테크 자금세탁방지 가이드" -categories: review -tags: review book 블록체인 암호화폐 자금세탁방지 핀테크 규정 법안 업계 특금법 -comments: true -header-img: img/review/review-book-crypto-laundering-prevention-1.png ---- - -> `지식플랫폼` 출판사의 `"쉽게 이해하는 블록체인 : 암호화폐 자금세탁방지(백남정 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-crypto-laundering-prevention-1.png) - ---- - -본 도서는 `암호화폐 및 블록체인 기술의 개관 및 자금세탁 실무`를 다루고 있다. - -저자는 블록체인 및 해외송금과 관련하여 다수 경력을 보유한 정보보호전문가이다. 책 내부에도 소개되어있지만 소액 해외송금업과 관련하여 비대면 실명인증에 관한 구체적인 지침이 없던 2017년에 누구보다 빠르게 관련 실무를 정립하는데 참여하였으며, 기획재정부 유권해석을 통해 삼성페이의 해외송금 중개를 성사시킨 이력도 보유하고 있다. - -책을 읽으며 특히 인상깊었던 점은 어디서도 듣지 못했던 `최신 기술이나 규제 등의 정보`가 가득 담겨있다는 점을 들고 싶다. 비트코인이 투자 관련 광풍을 일으킨지도 어느덧 3년이 넘었는데 FATF(국제자금세탁방지기구)가 암호화폐와 관련하여 각국에 자금세탁방지 대책 마련을 촉구한 기간은 2020년 6월이라는 사실에 놀랐다. - -블록체인과 핀테크 등의 기술과 트렌드는 하루가 멀다하고 발전하고 있는데 그와 관련된 법규나 규제는 이제서야 모양새를 갖추는 형국이다. 규제가 그러하니 이와 관련된 실무 지침은 존재하지 않거나 실무에 활용하기 부족하기 그지 없는 듯 하다. 하물며 이에 박학다식한 전문가는 얼마나 적을까. - -바로 이런 측면에서 본 도서의 `진가`가 드러난다. 개인적으로 IT 및 AI 분야에 종사하고 있기에 나름 관련 업계의 최신 정보를 빠르게 수급하는 편이라 자부해 왔는데 본 도서에 담긴 최신 정보에 적잖이 놀랐다. 더불어 아직 규제나 지침조차 미비한 분야에 활용할 수 있는 실무 가이드를 제시하고 있어 관련 업계 종사자들에게는 많은 도움이 될 것이라 생각한다. - -다만 나는 블록체인 업계 종사자는 아닌지라 본 도서의 실무 가이드 수준이 업무 적용에 있어 얼마나 큰 효과를 발휘하는지 정확히 알 수 없기에 IT 기술 및 블록체인 관련 최신 정보와 업계 동향에 주안점을 두고 읽었다. - -책은 크게 두 부분으로 나뉜다. 하나는 블록체인, 암호화페, 핀테크와 같은 관련 `업계 전반의 기술 동향과 트렌드`를 다루고 있으며, 다른 하나는 `자금 세탁방지와 관련된 규제 및 실무 가이드`를 다루고 있다. - -암호화폐의 종류나 채굴과 보상, 등기소 기능의 기본 기술 지식은 어느정도 알고 있었으나 스테이블 코인, 디파이, 커스터디 등 암호화폐가 금융 산업의 최전선에 이토록 깊숙히 침투한 줄은 꿈에도 몰랐다. 대부분의 일반인들은 비트코인의 기능을 일확천금의 대상 정도로만 여기겠지만 암호화폐는 지난 3년 간 세간의 관심이 멀어졌음에도 꾸준한 나름의 발전을 해왔다는 것에 적잖이 놀랐다. - -더불어 이런 `신생 분야의 제도 정착 과정` 또한 흥미로운 부분이었다. 블록체인 뿐만 아니라 앞으로 겪지 못할 기술의 변화가 지속적으로 등장할텐데 새로운 기술과 관련된 규제 및 제도의 정착 과정을 유심히 살펴본다면 누군가에게는 신생 분야가 `기회`의 땅이 되지 않을까 생각해 본다. 꼭 기회를 떠나 만약 뜻하지 않게 관련 분야에 종사하게 된다면 `리스크`를 피하고 본인의 업무에 융통성을 부여하는 혜안을 가질 수 있지 않을까라는 생각도 든다. - -그 외 본연의 목적을 떠나 다크웹이나 WLF(제재목록) 등 다른 곳에서 참고하기 어려웠던 흥미진진한 최신 정보들도 포함되어 있어 다양한 교양과 견문을 넓히기에도 유익하다. 이에 개인적으로 인상깊었던 정보를 중심으로 책의 내용을 아래와 같이 간단히 요약해 보았다. - ---- - -* __블록체인, 암호화폐, 핀테크 개요__ - - 비즈니스 적용 사례 - + 월마트 : 식재료 생산 및 유통 과정 전체를 블록체인으로 기록하여 위생 상태 점검 - + 삼성SDS : 중고차 시장 위조 불가 블록체인 기술 적용으로 차량 수리, 사고 이력 조회에 활용 - + LG CNS : 하이퍼레저 패브릭을 활용한 모나체인 출시 - - SEC(증권거래위원회) : 미국. 자본시장의 질서 확립과 규제를 위한 준사법기관 - - FCA(금융행위감독청) : 영국. 암호화 자산 관련 가이드라인 최종안 발표 - - `스테이블` 코인 : 페이스북 Libra, 필리핀 유니온뱅크 PHX, 일본 미즈호 은행 엔화 연동 J코인 발행 - ![코인비교](https://theorydb.github.io/assets/img/review/review-book-crypto-laundering-prevention-3.png) - - `디파이(DeFi)` : 탈중앙화 금융 시스템. 결제, 해외송금, 대출, 펀트 등 금융상품에 암호화폐 활용 - - `커스터디` : 대규모 중앙화 보관시스템. 자산을 대신 보관, 관리해주는 개념 - - 리그테크 : 규제 + 기술. 이상거래 탐지 시스템이 대표적인 기술 - - 사업 연속성 : ISO 22301 BCMS 국제표준 - - RTO(재난복구시간, 은행은 3시간, 보험사는 24시간 등), RPO(재난복구시점) - - 블록체인 관련 규정 : 정보통신 방송 연구개발 관리규정 - ---- - -* __자금세탁방지 개요 및 실무__ - ![해외송금업무흐름도](https://theorydb.github.io/assets/img/review/review-book-crypto-laundering-prevention-2.png) - - 자금세탁 : 자기앞수표 돌리기, 보험사기, 환치기(불법 해외송금), 보이스피싱, 전자사이버칩, 사이버머니, 고액 게임 아이템, 텀블러, 믹싱 등 - - 다크웹 : 마약, 아동 포르노, 도난 신용카드 정보 등 거래. 별도 브라우저 토르 접속 후 hidden wiki 검색. DID(탈중앙화 신원확인 시스템) 인증 필요. - - OTC DESK : 가상자산 거래소 장외 시장 마켓 - - 베스트 믹서닷아이오(`Bestmixer.io`) : 비트코인 거래 시 새로운 거래 기록을 허위로 생성해 본래의 거래 기록을 감추는 사이트. - - KYC : 고객정보확인 (이름 식별불가 시 KYT 트랜잭션 추적) - - KYE : 내부 직원 알기 - - 비대면 실명 인증 : 기존 계좌 활용, 신분증 스캔, 영상 통화, 직접 확인, 생체 인증 등 - - AML : 자금세탁방지 규정 - - CDD : 고객확인의무(이름, 주소, 국적정보, 수집동의 등) - - EDD : 강화된 고객확인(출처, 송금목적 등) - - `WLF` : 제재목록 - + OFAC SDNs 리스트 - + UN 테러리스트 : - + 금융거래제한 대상자 리스트(금융위원회) : 기획재정부 사이트 정책게시판의 금융 제재대상자 명단 다운로드로 확인 가능 - + 내부 임의등록 리스트(각 기관) - + PEP 정치적 위험 인물 포함 거래 불가 계좌 리스트 - + FATF 국제기준 미이행 국가 주의 필요 : 북한, 이란, 예맨, 에티오피아, 스리랑카, 시리아, 튀니지, 파키스탄 등 - - 벌집계좌 금지 - - CTR : 현금거래보고제도로 천만원 이상 출금시 신고 - - STR : 이상거래보고제도(금융정보분석원에 신고) / - + `1일 1천만원 이상 혹은 7일간 2천만원` 이상 입출금 / N:M 관계 송금 - + AML 필터링 된 경우, 최대 한도 확인 시도, 타국 송금, 2개국 이상 송금, MTO(송금 중계상) 의심거래 보고 시 - - 트래블 룰 : 송금측, 수신측 신원 상호 확인 - - 특정 금융거래정보의 보고 및 이용 등에 관한 법률(특금법) 개정안 : 가상화폐 거래소 FIU 신고 의무화 - - 대검 암호화폐, 핀테크 신종 범죄 전담 형사 10부 개설 검토 및 가상화폐 주소 조회, 거래소 식별 시스템 개발 추진 중 - - `실무 규정 및 법안` - + 자금세탁방지 및 공중협박자금조달금지에 관한 업무 규정 - + 가상통화 관련 자금세탁방지 가이드라인 개정안 - + 김병욱 의원 입법안 - + 김수민 의원 입법안 - + 제30기 제3차 국제자금세탁방지기구(FATF) 총회 참석 보도자료 등 - ---- - -상기 요약 내용은 개인적으로 관심있던 기술을 키워드 중심으로 정리한 글이기에 본 도서에서 다루는 모든 내용이 포함되어 있지 않음을 밝힌다. 평소 관심있던 주제나 키워드를 발견했다면 책을 통해 자세한 내용을 확인하시길 권유드린다. - -직접적인 대상 독자는 블록체인 및 자금세탁, 해외송금 실무 업계 종사자가 적합할 듯 싶다. 앞서 언급했듯 개인적으로는 누구보다 최신 기술이 규제 및 제도에 안착하는 과정에 호기심이 생기는 분 그리고 그 속의 기회를 활용하거나 리스크에 대처하고 싶은 분께 추천을 권하고 싶다. 그 외 블록체인 및 최신 기술 트렌드에 관심이 많은 독자분들께도 훌륭한 교양서가 되리라 생각한다. - - -* [책소개 - 쉽게 이해하는 블록체인 : 암호화폐 자금세탁방지](http://www.yes24.com/Product/Goods/81579112?OzSrank=3) - diff --git a/_posts/2020-10-20-review-book-world-future-report-2021.markdown b/_posts/2020-10-20-review-book-world-future-report-2021.markdown deleted file mode 100644 index 36783ec84..000000000 --- a/_posts/2020-10-20-review-book-world-future-report-2021.markdown +++ /dev/null @@ -1,100 +0,0 @@ ---- -layout: post -title: "[리뷰] 세계미래보고서 2021 (포스트 코로나 특별판)" -subtitle: "세계적인 미래연구기구 ‘밀레니엄 프로젝트’가 예측한 코로나가 만든 세계!" -categories: review -tags: review book 포스트 코로나 66개국 4500명전문가 진단 미래 부 교육 지속가능 시민 국가 정치 비즈니스 일자리 기술 문명 -comments: true -header-img: img/review/review-book-world-future-report-2021-1.png ---- - -> `비즈니스북스` 출판사의 `"세계미래보고서 2021 (박영숙, 제롬 글렌 공저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-world-future-report-2021-1.png) - ---- - -본 도서에서는 `코로나 이후의 미래를 전 분야에 걸쳐 예측`한다. - -개인적으로 2016년에 출간된 "세계미래보고서 2050"을 감명깊게 읽었기에 이번 도서 상당한 기대를 갖고 첫 장을 폈다. 감상 후 총평을 먼저 언급하자면 전작들이 그러했듯 이번 시리즈 또한 세상의 모든 트렌드를 압축하는, 다가올 미래에 스스로 준비할 수 있는 필독서라는 생각이 들었다. - -AI를 연구하는 나로써는 요즘만큼 `미래학`에 대한 관심이 높아진 적이 또 있었을까 싶다. AI를 필두로 한 4차 산업혁명은 이미 거론된지 오래인데 이에 불을 붙이듯 코로나가 등장하며 언택트 시대를 가속시켰다. 세상이 지금 큰 변화를 맞이하는 만큼 미래가 어떻게 변할지는 누구에게나 초미의 관심사다. - -코로나가 맹위를 떨치는 요즘이지만 책의 서문에 언급된 바와 같이 그보다 더 강력한 질병들도 존재했다. 6세기에 번진 유스티니아누스의 전염병은 당시 전 세계 인구의 절반인 5,000만 명의 목숨을 앗아갔고, 14세기의 흑사병은 2억 명의 사람을 죽음에 이르게 했다. 천연두는 20세기에만 약 3억 명을, 인플루엔자 전염병은 약 1억 명을, 그리고 독감 바이러스는 5억 명을 감염시켰다. - -이러한 질병의 원인은 `인구밀집, 도심화, 연결성`이 가속되며 나타난 부작용이다. 코로나 역시 인류의 역사에 녹아있는 흐름 속에서 그 해결책을 찾을 수 있을 것이다. - -다양한 측면에서 거대한 변화가 시작되고 있다. 미국의 기업들이 값이 싸고 쾌적한 도시 외곽으로 이사하는 추세를 보이며 캘리포니아 `마운틴 뷰의 임대료는 30% 가까이 하락`했다. 우리나라 또한 테헤란로 공실률이 20%를 넘어섰다. - -복지 측면에서 미국은 `월 2,500달러 수준의 기본소득제`를 도입할 예정이다. 교육 측면 또한 구글, MS 등의 굴지의 회사들이 `대학 학위 무용론`을 들고 나오고 있다. 졸업장이 중요한 것이 아닌 그들이 만든 3~6개월짜리 기술 과정을 수료해야만 원서를 낼 수 있다고 발표했다. - -종합해 볼 때 이 책은 과거 인류 역사를 통찰하며 발견한 패턴을 바탕으로 미래를 `예측`해 나간다는 점과 더불어 부, 교육, 우주, 시민, 국가, 정치, 복지, 비즈니스, 일자리, 기술, 문명에 이르는 `폭 넓은` 분야를 다룬다는 점에서 매우 가치있는 책이다. - -이어 책의 내용을 간단히 소개해 보고자 한다. 서두에 소개된 `세상을 바꿀 혁신적 미래 기술 9가지` 중 인상깊었던 지식들을 아래에 정리해보았다. 미래와 트렌드에 제법 관심있는 독자도 처음 들어보았을 만한 기술들이 분명 존재할 것이기에 꼭 읽어보실 것을 추천드린다. - ---- - -* __뇌-컴퓨터 인터페이스(BCI)__ - 일론 머스크와 뉴럴링크는 돼지의 뇌에 칩을 이식해 코에서 뇌로 전달되는 신호를 기록하고 있다. 이를 사람에게 적용하면 공부하지 않아도 지식을 전수하는 일이 가능해지며, 척추 손상이나 시각, 청각 등의 감각이 마비된 환자들을 위해 활용될 수 있다. - -* __몰입형 현실(IR)__ - "포켓몬 고"의 등장으로 증강현실(AR), 가상현실(VR)이라는 용어는 이제 제법 대중화되었다. 하지만 대부분 이 기술들이 최첨단 기술이라고 생각할 뿐 그 이상의 기술은 잘 알지 못한다. 그 위에 IR 즉, 몰입형 현실이 있다. - - 위의 BCI를 이용한 기술로 경험을 만들기 위해 뇌파를 조작하여 과거의 경험까지 완전히 조작이 가능해진다. 나아가 감정을 제어하거나 성격을 바꿀 수도 있으며 레이커즈 와일 박사는 2035년까지 두뇌를 클라우드에 연결하게 될 것이라 예측한 바 있다. - -* __마음 업로딩__ - 앞서 언급한 기술들과 맥락이 일치하는 기술로 뇌와 클라우드의 인공지능을 무선으로 연결할 수 있는 기술이다. 실현될 경우 인간의 지능은 10억 배 증가한다. - -* __범용인공지능(AGI)__ - AI는 어느 때보다 핫한 트렌드 기술이 되어버렸다. 인공지능 아티스트가 그린 그림이 43만 달러가 넘는 가격에 입찰되는가 하면, 로봇 기술과 결합하여 인간과의 쾌감을 뛰어넘는 섹스 로봇이 개발되기도 한다. 스타일 어시스트 AI 에코룩을 활용하면 오늘 입을 옷에 대한 의사결정을 위탁할 수 있는데 중요한 문제에 대한 의사 결정일수록 보다 AI는 가치있게 될 것이다. - - 그럼에도 이미 최신 기술의 영역에서는 AI를 넘어선 AGI 즉, 범용 인공지능 연구 개발에 몰두하고 있다. 보편적인 가치판단을 할 수 있는 인공지능이야 말로 인간이 예전부터 추구했던 진정한 인공지능이라 할 수 있으며 알파고와 같이 어느 특정 분야에서만 인간을 뛰어넘는 것이 아니라 전 분야에 있어 인간을 뛰어넘는 기술이기에 궁극적인 AI의 목표라 할 수 있다. - -* __나나이트(Nanites)__ - 극미세로봇으로 혈관에 들어가 복잡한 생물학적 조직에 약물을 전달할 수 있는 기술이다. 나아가 인간의 뇌에 이식해 위에서 소개한 BCI 등의 기술과 결합하여 뇌를 해킹할 수 있는 기술이기도 하다. - -* __DNA 가위(크리스퍼 카스9)__ - 중국의 허 젠쿠이 교수는 에이즈 저항력을 갖도록 CCR5 유전자를 편집한 배아를 실제로 만들었다. 한 아이가 에이즈에 감염되지 않고 태어날 수 있게 했다는 측면에서 긍정적인 요소로 비춰지기도 하지만 조작된 형질이 후세에 전해질 수 있는 심각한 문제이기도 하다. - ---- - -9가지 강렬한 기술의 소개 뒤에는 본론이 시작된다. `부, 교육, 우주, 시민, 국가, 정치, 복지, 비즈니스, 일자리, 기술, 문명`에 걸친 세상의 거의 전 분야에 대한 변화의 예측이 담겨있다. - -모든 분야를 언급하기에는 서평의 취지를 벗어나므로 개인적으로 가장 감명깊게 읽었던 부분이자 모든 사람들이 가장 관심있어할 만한 돈과 경제를 다룬 `Chapter1. 부의 미래`를 대표로 간단히 요약, 소개하고자 한다. - ---- - -* 항공, 여행, 관광, 호텔, 컨벤션 이벤트, 스포츠, 예식장, 장례식장, 학교, 학원, 쇼핑몰, 백화점, 마트에서 `온라인`으로 부의 이동 가속화 -* 컨텐츠의 대세 : 자신의 일상, 아이디어, 개성 -* 디지털 화폐의 등장과 화폐 개혁 - - 스웨덴, 노르웨이에 이어 2017년 이후 덴마크는 화폐의 공식 발행을 중단함. - - 인도는 2016년 시중 현금의 86%를 회수하며 `화폐개혁`을 단행. - - 블록체인 기술의 발전 : 네덜란드 중앙은행 DNB 코인 발행, 중국의 디지털 위안화 개발, 페이스북의 Libra 등 - - 화폐의 투명성이 보장되어 지하경제를 위측 시킬 수 있으며 경제동향, 소비패턴 역시 실시간 파악이 가능 - - 저금리 시대에 물가가 계속 상승하는 경우 `은행에 돈을 넣어야 할 이유`가 사라짐. 이에 대한 최선은 현금을 없애는 것이기에 가상 화폐가 계속 주목받고 있음. - - 모든 자산의 토큰화 : 마치 주식처럼 소유권에 대한 지분의 비율을 보유할 수 있으며 수수료 및 불필요한 종이 서류 방식의 구식 절차의 해소 가능. 유동성 증가 및 사기행위 방지 가능. -* AI와 핀테크 기업 - - 레모네이드 : 영업 사원 없는 보험회사 - - 트렌스퍼와이즈 : A, B 국가 간 해외 송금이 필요할 경우 동일한 Pair의 반대 방향 송금을 원하는 이들을 `매칭`해 수수료가 발생하지 않도록 중개 - - 쇼피파이 : 누구나 손쉽게 맞춤형 홈페이지와 온라인 매장을 만들 수 있는 서비스 제공. 아마존을 위협하는 경쟁사. -* `도심` 부동산 불패 신화의 내리막 - - 코로나로 인한 도심 이탈 현상으로 뉴욕 맨해튼 집값 25% 급락 - - 삼성그룹 최근 2년간 서울 도심 빌딩 3조원 어치 매각 - - 2030년에는 적어도 강남에 임대를 위해 신축건물이 들어설 일이 희박할 것으로 전망 - ---- - -특정 챕터 하나를 정리했을 뿐인데 이토록 신선한 아이디어와 최신 트렌드와 지식들이 넘쳐난다. 개인적으로 최신 기술에 촉각을 곤두세우는 편인데 그동안 들어보지 못했던 기술들과 아이디어가 상당수 소개되고 있어 적잖이 놀랐다. - -뒤에 이어질 교육이나 우주 등의 다양한 분야도 깜짝 놀랄만한 그동안 몰랐던 정보들이 등장한다. 책 한권으로 이 모든 지식을 압축하여 한 눈에 파악해볼 수 있어 읽는 내내 감탄을 금할 수 없었다. - -미래를 정확하게 예측하는 것은 누구도 할 수 없는 일이지만 레이 커즈와일을 비롯한 세계적인 미래학자들의 견해를 인용하고 과거의 패턴을 통해 검증하며 각 분야 전문가들의 의견을 집대성해 객관성을 확보하고자 노력한 흔적이 인상적이었다. - -정보의 정확성 유뮤를 떠나 미래를 바라보는 독자와는 또 다른 `시각`을 제공해 준다는 점, 독자로 하여금 개인의 경험을 더해 미래를 상상하고 변화에 `대비할 기회`를 준다는 점, 급속도로 변하는 세상의 모습을 한 권의 책으로 압축하여 `정보`를 전달한다는 점 등이 본 도서의 가치이기에 반드시 필독할 것을 추천한다. - - -* [책소개 - 세계미래보고서 2021 (포스트 코로나 특별판)](http://www.yes24.com/Product/Goods/93720373?OzSrank=2) - - -> 비즈니스북스 출판사로부터 해당 도서 지원을 받아 작성한 서평입니다. - diff --git a/_posts/2020-10-24-review-book-gans-in-action.markdown b/_posts/2020-10-24-review-book-gans-in-action.markdown deleted file mode 100644 index 991e717d3..000000000 --- a/_posts/2020-10-24-review-book-gans-in-action.markdown +++ /dev/null @@ -1,79 +0,0 @@ ---- -layout: post -title: "[리뷰] GAN 인 액션" -subtitle: "텐서플로 2.x와 케라스로 구축하는 생성적 적대 신경망" -categories: review -tags: review book GAN AutoEncoder DCGAN ProGAN SGAN CGAN CycleGAN -comments: true -header-img: img/review/review-book-gans-in-action-1.png ---- - -> `한빛미디어` 출판사의 `"GAN 인 액션(야쿠프 란그르, 블라디미르 보크 저/박해선 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-gans-in-action-1.png) - ---- - -`GAN`(Generative Adversarial Network)은 비지도 학습에 사용되는 인공지능 알고리즘으로, 제로섬 게임 틀 안에서 서로 경쟁하는 두 개의 신경 네트워크 시스템에 의해 구현된다. - -두 개의 네트워크는 각각 `생성자, 판별자`로 불리는데 생성자는 새로운 데이터를 생성하는 네트워크이고 판별자는 가짜 데이터를 실제 데이터와 구별하는 네트워크이다. - -생성자와 판별자는 서로 이기려는 경쟁을 지속한다. 마치 위조범이 더욱 그럴듯한 위작을 만들면 판별자가 위조품을 잡아내는 식의 경쟁이다. - -![GAN](https://theorydb.github.io/assets/img/review/review-book-gans-in-action-2.png) - -본 도서는 워낙 유명한 In Action 시리즈 중 하나로 시리즈의 다른 책들과는 다르게 책의 분량이 슬림하다는 것이 신기했다. 책을 다 읽고 나중에 알게 된 사실이지만 예제의 일부를 `텐서플로 허브(TFH)`를 활용하기 때문이다. - -아무래도 방대한 이론 설명, 수식의 전개, 복잡한 코드 구현으로 부터 벗어나 보다 중요한 핵심과 전체의 맥락에 집중할 수 있도록 저자의 의도가 이끈 구성이 아닌가 싶다. - -그래서인지 곳곳에 다소 썰렁한(?) 개발자들의 농담이 숨어있다. 저자도 서문에서 일부러 이런 컨셉을 잡고 있음을 밝혔는데 취향이 비슷한 나로써는 요소요소 흥미롭게 읽을 수 있는 장치였다. 예를 들면 아래 그림처럼 말이다. - -![썰렁](https://theorydb.github.io/assets/img/review/review-book-gans-in-action-6.png) - -이런 구성 측면 외에도 책이 마음에 들었던 점 한가지는 다양한 GAN의 모델을 소개하고 있다는 점이다. 책에서 다루고 있는 GAN과 관련된 모델만 해도 `AE, VAE, GAN, DCGAN, MMGAN, NSGAN, WGAN, WGAN-GP, ProGAN, SGAN, CGAN, CycleGAN, RGAN, SAGAN, BigGAN`에 이른다. - -물론 하나하나의 모델을 이론적으로 자세히 알아보고 심층있게 구현하는 파트는 별로 없다. 필요한 모델의 레퍼런스는 이미 인터넷과 논문 등 널려있기 때문에, 인 액션 시리즈의 취지대로 `전체 흐름을 파악하고 활용하는 스스로의 메타지식을 갖추는데 주안점`을 두고 있는 듯 하다. - -위에서 언급한 GAN의 여러 기법들을 모두 정리하고 싶으나 그러기엔 리뷰 분량에 걸맞지 않은 것 같아 책을 읽으며 인상깊었던 점을 중심으로 간략하게 정리해보려 한다. - -GAN은 수학적으로 쉽지 않은 모델이기에 입문자들이 바로 이해하기 어렵다. 때문에 다른 GAN 서적들과 비슷하게 먼저 오토인코더 및 변이형 오토인코더를 설명하여 생성 모델을 이해하는데 초점을 맞춘 후 출발한다. - -`AE, VAE, GAN`의 모델의 차이점을 명확하게 설명하고 있으며 아래 나오는 그림으로 명확하게 정리할 수 있다. - -![GAN과 AE차이](https://theorydb.github.io/assets/img/review/review-book-gans-in-action-3.png) - -AE가 GAN이 탄생하는데 좋은 아이디어가 되었지만 그럼에도 GAN이 필연적으로 활용될 수 밖에 없는 이유에 대한 설명도 다루고 있다. - -아래 그림과 같이 VAE 모델은 `최대 가능도 추정`을 적용해 분포의 모드가 하나라고 추정하기에 잘못된 결론이 이르게된다. 즉, 서로 다른 두 분포가 있다는 점을 알지 못하기에 점 추정 근처에 꼬리가 두꺼운 정규분포를 형성한다. -![최대가능도추정](https://theorydb.github.io/assets/img/review/review-book-gans-in-action-4.png) - -개인적으로 이 현상을 예전에 겪었을 때 잘못된 결과에 대한 원인을 쉽게 알지 못했다. 주위 지인에게 물어 꼬리가 두꺼운 정규분포의 결과로 원인을 추정하고 대충 알고 넘긴 부분인데 책 전반에 걸쳐 이런 통계학과 딥러닝의 경계에 필요한 지식들이 두루 소개되고 있어 인상깊었고 많은 도움이 되었다. - -이어서 `GAN` 기본 모델으로 MNIST 손글씨를 흉내내는 예제를 실습하게 된다. 이를 통해 생성자 G와 판별자 D 각각의 비용함수 J를 정의하고 포드 피워드 신경망으로 훈련값을 갱신하는 절차를 상세히 알 수 있다. - -결론적으로 생성자는 판별자의 거짓 양성을 최대화하고, 판별자는 거짓 양성과 거짓 음성 분류를 최소화하는데 목적을 두고 있음을 파악할 수 있다. - -다음으로 GAN의 기본 모델에 CNN 모델을 결합한 `DCGAN`으로 MNIST 이미지를 생성하는 실습을하게 되는데 기본 모델에 비해 화질 등의 성능이 얼마나 개선되는지 뚜렷하게 확인할 수 있다. 이 과정에서 배치 정규화에 대해 심도있게 학습할 수 있다. - -5장은 GAN의 핵심을 잘 전달하고 있는 장으로 개인적으로 가장 마음에 드는 파트이다. `MMGAN`, `비포화GAN`(NSGAN), 와서스테인(EM) 거리를 종료 기준으로 활용한 `WGAN` 등의 비교를 통해 최근에 발전한 GAN의 핵심을 간략하고 쉽게 설명하고 있다.(물론 딥러닝 세계의 속도가 너무 빨라 이젠 최근에 등장한 기술이라 말하기 어려운 고전이 되어버린 것 같은 느낌이다.) - -![GAN핵심](https://theorydb.github.io/assets/img/review/review-book-gans-in-action-7.png) - -6장에서는 고해상도 층의 점진적 향상을 통해 Full HD 화질의 사진을 생성할 수 있는 `ProGAN`을 학습한다. 이 파트에는 앞서 언급했던 `텐서플로 허브`를 활용하게 되는데 다른 책에선 아직 보지 못했던 방법인지라 이번 장을 통해 유용함을 체감할 수 있어 좋았다. - -![TFH](https://theorydb.github.io/assets/img/review/review-book-gans-in-action-8.png) - -구글의 AutoML, 아마존의 세이지메이커 등에서도 보이는 트렌드이기에 익혀두면 좋은 기술이며 나아가 복잡한 코드 구현으로 숲을 잃고 헤매이지 않도록 보다 연구의 중요 아이디어에 집중할 수 있는 장점이 있다. - -이어서 적은 레이블로도 높은 분류 정확도를 달성할 수 있는 `SGAN`, 훈련 중 레이블 부가정보를 활용하여 이미지 변환의 토대를 제공한 `CGAN`, 마지막으로 사과를 오렌지로 만드는 마법같은 `CycleGAN`을 실습한다. - -실습과정은 이것으로 마치고 파트3에서 앞으로 배울 것들에 대한 소개가 이어진다. 딥러닝 왕초보 시절 학습 데이터에 불순한 의도를 입력해도 원하는대로 동작하는 모델이 생성될 수 있을까 궁금했었는데 역시나 GAN 모델의 해킹이라 할 수 있는 `적대 샘플`에 대해 다뤄본다. - -GAN이 실제 활용되는 의료, 패션 분야의 비즈니스 모델 및 전망에 대해서도 살펴보고 마지막으로 위에서 구현한 모델보다 한단계 발전한 `RGAN, SAGAN, BigGAN`을 소개한다. - -GAN은 과학보다는 예술에 가깝다는 명언을 끝으로 본 도서의 대단원도 막을 내린다. - -앞서 언급했듯 전반적인 GAN의 발전사를 `알맹이`만 쏙쏙 빼먹는 느낌이 든다. 공부할 것이 많은 딥러닝의 세계에 TFH를 활용한 전달 방식도 마음에 들었다. GAN의 연구 및 실무자로 입문하는 분들께는 짧은 시간 대비 효율적인 학습 효과를 얻을 수 있을거란 생각이 들기에 누구보다 GAN 입문자에게 이 책을 추천하고 싶다. - -* [책소개 - GAN 인 액션](http://www.yes24.com/Product/Goods/92455849?OzSrank=1) - diff --git a/_posts/2020-10-31-review-book-R-for-all.markdown b/_posts/2020-10-31-review-book-R-for-all.markdown deleted file mode 100644 index 1dad6910b..000000000 --- a/_posts/2020-10-31-review-book-R-for-all.markdown +++ /dev/null @@ -1,106 +0,0 @@ ---- -layout: post -title: "[리뷰] 모두의 R 데이터 분석" -subtitle: "누구나 쉽게 배우는 데이터 분석과 시각화 기초" -categories: review -tags: review book R 데이터분석 통계 EDA 빈도분석 교차분석 RFM 상관분석 의사결정트리 -comments: true -header-img: img/review/2020-10-31-review-book-R-for-all-1.png ---- - -> `길벗` 출판사의 `"모두의 R 데이터 분석(김도연 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-10-31-review-book-R-for-all-1.png) - ---- - -본 도서는 R과 통계를 모르는 입문자들도 쉽게 데이터 분석의 세계에 발을 들여 놓을 수 있도록 도와주는 책으로 `R의 기초`에서 시작하여 `비즈니스 실무`에 적용할 수 있을 입문 수준의 지식까지 다룬다. - -새로운 IT 기술이 등장할 때마다 보통 "모두의 ooo" 시리즈를 즐겨 찾는다. 1999년 PC를 조립하고 컴퓨터 구조를 이해하는데 무작정 따라하기 시리즈의 책이 내게 워낙 강렬한 인상을 남겼기에 길벗 출판사 책은 믿고 즐겨보는데 몇년 전 부터는 모두의 시리즈 책이 큰 도움이 되고 있다. 대표적으로 알파고 등장 당시 딥러닝 입문에 큰 도움을 받았던 모두의 딥러닝을 예로 들 수 있다. - -프로그래머로 십여년 간 활동을 했기에 상대적으로 Python에는 친숙하지만 R과는 약간 거리가 있었다. 마침 R 데이터 분석이 모두의 시리즈로 등장하였기에 R의 기초를 정리해보고 부족한 부분을 채우고자 본 도서를 읽게 되었다. - -전체적인 총평을 먼저 내리자면 모두의 시리즈 답게 매우 만족스러웠고, 책 말미에 언급된 저자가 표현한 `가장 쉽게 핵심만`이라는 구절과 전체 내용이 일맥 상통했다. AI 및 데이터 분석에 관심이 많은 나로써는 집에 R과 관련된 책을 10권 이상 구매하여 보고 있는데 그 중 입문서로 가장 뛰어난 책이라는 생각이 든다. - -다른 서적과 비교해 볼 때 어떤 입문서는 R 함수를 하나씩 전부 소개하는 책도 있다. 실습할 때는 쉽고 따라하기 좋은데 전체 프로젝트를 수행할 땐 파편화된 지식을 엮어내는데 고충을 겪는다. - -또 어떤 책은 깊은 통계와 수식이 난무한다. 일정 수준 이상 오르면 그 책은 나름대로의 분명한 가치를 지니겠지만 적어도 입문 서적으로는 정말 도움이 안된다. 읽다보면 숲을 잃고 길을 헤매는 느낌이다. - -반면 본 도서는 정말 당장 필요한 것만 알려주는 느낌이 들어 만족스러웠다. 핵심만 다룬다는 것이 어떤 의미인지 각 장별로 간단한 소개를 해볼까 한다. - -먼저 1 ~ 5장은 기초 과정이다. R의 개요, 설치, 데이터 분석의 의미, 데이터 구조나 변수 및 함수와 같은 프로그래밍에 필요한 왕초보 지식을 담고 있다. 데이터 분석이나 프로그래밍을 알고 있는 사람이라면 건너뛰어도 좋을 수준인데 앞서 언급했듯 대상 독자를 R을 전혀 모르는 독자를 위해 다루는 부분인 듯 하다. -![기초](https://theorydb.github.io/assets/img/review/2020-10-31-review-book-R-for-all-4.png) - ---- - -이어지는 6장 ~ 9장이 핵심이라 할 수 있는데 먼저 6장에는 R에서 가장 많이 활용하는 연산자와 함수, 시각화의 기본 등이 등장한다. - -7장은 `dplyr` 패키지를 집중적으로 다루는데 Tabular 구조의 자료를 처리하기에 적합한 패키지이다. Python에 비유하자면 Pandas 패키지를 학습하는 장이라고 생각하면 되겠고 RDBMS와 관련지어 SQL에 해당하는 파트라고 할 수 있다. - -데이터 분석의 가장 핵심이 되는 기본을 다루는데 Outer Join을 비롯 처음 접하면 생소한 개념들을 그림으로 굉장히 쉽게 풀어주는 점이 인상적이었다. 특히 SQL을 어느 정도 알고 있는 사람이라면 해당 부분에 1시간 정도만 투자하면 바로 R로 테이블 형태를 조작하는데 전혀 무리가 없을 것이라는 생각이 든다. - -8장은 `ggplot2`를 이용한 시각화 파트이다. 시각화는 정말 R의 꽃이라고 할 수 있다. Python을 주로 활용하는 나로써는 이 부분이 늘 아쉬운 부분이다. Pandas 또한 R의 데이터프레임을 모방했는데 나름대로 약간의 불편함이 있긴 해도 쓸만하다. 반면 시각화를 위한 ggplot2과 Python을 비교하라면 견줄만한 좋은 라이브러리가 딱히 떠오르지 않는다. - -때문에 데이터 분석 결과를 실무에 보고하거나 커뮤니케이션 하기 위한 시각화 부분 만큼은 도출된 자료를 토대로 R을 활용하는 일도 종종있다. 다만 ggplot2의 기능이 워낙 방대하고 시각화에 대한 활용 지식이 받쳐주지 않는 다면 이 또한 사용하기 쉽다고 볼 수는 없는데 그간의 경험을 비추어 볼 때 가장 필요한 부분만 적은 분량으로 요약하고 있어 마음에 들었다. - -처음으로 데이터 분석을 접하는 사람이라면 이 책이 핵심과 방향을 잡아주는데 큰 도움이 될 것 같다는 생각이 들었다. 또한 어떤 상황에서 어떤 시각화 자료를 이용하는 것이 좋은 방법인지 잘 요약하고 있어 입문자가 빠르게 ggplot2을 익히는 데 이만한 도서도 없겠다는 생각도 들었다. -![시각화](https://theorydb.github.io/assets/img/review/2020-10-31-review-book-R-for-all-3.png) - -앞서 언급했던 7~8장에서 배운 지식을 활용하면 탐색적 데이터 분석(EDA)를 수행할 수 있고 이 과정에서 눈여겨 볼 만한 가설과 인사이트를 얻어낼 수 있다. - ---- - -책의 내용 중 가장 마음에 들었던 파트가 지금 소개할 9장 `멤버십 기획 프로젝트`와 8장 뒷부분의 `기초 통계 이론과 통계적 가설 검정` 파트이다. - -먼저 기초 통계 이론과 통계적 가설 검정 파트를 소개하자면 다음과 같은 내용으로 요약할 수 있다. -* 기술통계 : 요약, 묘사 ex) 성적 평균 등 -* 추론통계 - - 어떤 일이 일어날지 여부를 `확률로 예측`하는 기법 - - 표본으로 전체(`모집단`)의 특성을 추론하는 기법 - - ex) 사고발생 횟수 예측, 신약 유효성 검증 등 -* 평균 -* 편차 : 평균에서 떨어진 정도. 편차를 모두 더하면 0이 되어 평균을 구할 수 없다. -* 분산 : 편차를 제곱합 / 데이터 개수 -* 표준편차 : 분산에 루트를 취한 것. 진정한 의미의 편차 평균. -* 정규분포 - - 평균을 중심으로 좌우 대칭 `종` 모양을 이루는 분포. 전부 합하면 `1`. - - ex) 몸무게, 키, 성적, 수익률 등 - - 평균을 중심으로 `(+-1.96*표준편차) 범위 내 약 95%`의 데이터가 존재. - - ex) 평균 66kg 몸무게, 표준편차5 기준 56.2kg ~ 75.8kg 내에 95%의 데이터가 존재. -* 가설검정 - - 귀무가설(H0) : 평소 사실. 차이가 `없다`. - - 대립가설(H1) : 우리의 새로운 `주장`. 차이가 있다. - - 유의수준 : 검정 통계량이 기각역에 들어갈 확룔. `오차 가능성`. 보통 5% - - 유의확률(p-value) : 귀무가설을 `지지하는 정도`. - + 유의확률 < 유의수준 : 귀무가설 `기각` -> 대립가설 채택 -> `유의(미)`하다. - + 유의확률 > 유의수준 : 귀무가설 기각 불가 -> 귀무가설 채택 -> 유의하지 않다. - - t분포와 t검정 - 정규 분포와 비슷한 모양의 t분포를 이용해 검정하고자 하는 귀무가설("전체 몸무게 평균은 65kg이다.")의 65값을 mu값으로 활용하면 p-value를 알 수 있다. - -연구에 필요한 통계 기초 지식을 단 몇 페이지에 걸쳐 필요한 내용을 모두 소개하고 매우 알기 쉽게 설명한 책은 처음이다. 처음 데이터 분석을 접할 때 p-value가 직관적이지 않아 애를 먹었던 기억이 있는데 이 단 몇 페이지를 먼저 접했다면 얼마나 쉽게 이후의 과정을 수행할 수 있었을지 아쉬울 뿐이다. - -물론 검정과 같은 지식은 빅데이터를 분석하는 현 시점에 그리 자주 활용되지는 않는다. 이미 표본이라 칭하는 데이터가 충분히 방대해서 검정에 큰 의미를 두지 않을 뿐더러 투자 시간대비 확실하고 유익한 인사이트를 도출하기 어렵기 때문이다. - -하지만 매우 중요한 상황에서 병행하여 쓰이는 기법이기도 하고 각종 연구 결과를 분석하거나 논문을 해석하는데 필요하기 때문에 반드시 알아두어야 하는 기법이라고 생각하는데 이런 점에서 초보자가 쉽게 p-value를 쉽게 정리할 수 있다는 것은 좋은 기회임을 강조하고 싶다. - -마지막으로 본 도서의 꽃인 9장 멤버십 기획 프로젝트 파트를 소개하려 한다. 앞서 총평에서 언급했듯 R의 좋은 기능을 배웠다면 이를 실무에서 활용할 수 있을 수준 즉, `구슬을 꿸 수 있는 지식`이 필요한데 본 장이 그 역할을 담당하고 있다고 보면 된다. - -음식으로 매출을 올리는 직장에서 `고객정보, 주문정보, 예약정보, 제품정보` 등 4가지의 테이블 형태의 데이터를 가공하여 `멤버십 프로그램`의 제도를 만드는 과정으로 실무에서 가장 자주 다뤄지는 실제 사례라고 할 수 있다. 비중있게 다뤄지는 분석을 요약하면 다음과 같다. - -* 빈도, 교차 분석 : 예약건과 예약 완료 비율이 비슷하다는 점, 지점별 매출 구성이 유사하다는 점 등을 도출 -* RFM 분석 : 한번 방문한 고객이 대다이고, 우수 등급 이상 고객의 방문 및 매출 기여도가 높음을 도출 -* 상관 분석 : 스테이크와 와인은 높은 상관관계가 존재함을 도출 -* 의사결정나무분석 : 스테이크를 주문한 고객은 높은 매출의 고객이며 전체 평균 방문 횟수보다 낮다 등을 도출 -![의사결정트리](https://theorydb.github.io/assets/img/review/2020-10-31-review-book-R-for-all-2.png) - -이로써 각 파트의 요약을 마칠까한다. - -마지막으로 정리하자면 본 도서의 장점은 각종 데이터 분석 과정을 거치며 앞서 배운 R의 단편 지식들이 어떤 방식의 꿰어지는지 충분히 실습할 수 있다는 점이 매력이라 할 수 있겠다. 더불어 저자가 쌓아온 내공 덕분에 도출 결과를 비즈니스로 어떻게 풀어가는지 슬쩍 엿볼 수 있는 계기가 될 수도 있다. - -무엇보다 전체 과정의 파이프 라인 흐름에 대해 감을 잡을 수 있으므로 본인이 비록 미숙한 단계일지라도 프로젝트의 숲을 대강이나마 구성할 수 있는 체계적인 시야를 갖출 수 있다는 점에서 초보자의 자신감을 향상시킬 수 있기에 훌륭한 입문서라 말하고 싶다. R로 데이터 분석을 처음 접하고 싶은 입문자라면 꼭 본 도서를 추천하고 싶다. - ---- - -* [책소개 - 모두의 R 데이터 분석](http://www.yes24.com/Product/goods/92851804) - -> YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다. \ No newline at end of file diff --git a/_posts/2020-11-03-review-book-2020-real-estate-tax.markdown b/_posts/2020-11-03-review-book-2020-real-estate-tax.markdown deleted file mode 100644 index 8eb98cc74..000000000 --- a/_posts/2020-11-03-review-book-2020-real-estate-tax.markdown +++ /dev/null @@ -1,140 +0,0 @@ ---- -layout: post -title: "[리뷰] 2020 부동산 세금 사용설명서" -subtitle: "2020년 개정 세법에 맞춘 부동산 절세전략 가이드" -categories: review -tags: review book 부동산 세금 절세 세법 2020 취득 보유 양도 상속 증여 임대 -comments: true -header-img: img/review/review-book-2020-real-estate-tax-1.png ---- - -> `한빛비즈` 출판사의 `"2020 부동산 세금 사용설명서(김성일 저/우승일 감수)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-2020-real-estate-tax-1.png) - ---- - -집은 `살때`, `팔때`, `가지고 있을 때`도 세금을 낸다. 심지어는 안팔아도 죽을 때 또 세금을 낸다.(상속세) 또는 죽기전에 증여세를 내기도 한다. - -집을 사는 순간부터 참 여러번의 세금을 내야 한다. 그리고 누구나 평생 한 번은 집을 갖고 있거나 가지려고 시도한다. - -이 책은 평생에 걸쳐 일어나는 부동산 세금 지식을 집대성한 지식의 모음이다. 이상하게도 우리는 집을 사고 팔며 생기는 차익으로 돈을 얼마나 벌게될지에 지대한 관심을 가지지만, 그 과정에서 소득을 갉아먹는 세금에 대한 지식은 둔감하다. - -특히 2020년에 들어서면서 수도 없이 잦은 부동산 관련 정책과 법안이 등장하고 있기에 혼란스럽기 그지 없다. 앞으로 또 정권에 따라 어떻게 변할지도 모른다. - -한치 앞도 모르는 부동산 정책과 불확실한 미래속에 평생 고민해야 할 부동산 세금에 대한 `기초 개념`을 튼튼히 다지고 출발할 수 있다는 점이 이 책의 가장 큰 장점이다. - -이 책으로 기초를 탄탄히 한 후, 변화되는 세법에 유연하게 대응한다면 내집마련 혹은 부동산 투자의 허와 실을 간파하는데 큰 도움이 될 것이다. - -책은 5개의 장으로 이루어져있으며, 크게 6가지의 내용을 담고 있다. `취득, 보유, 양도, 상속, 증여, 그리고 임대`가 그것이다. - -파트별 핵심 사항이나 인상깊었던 내용들을 중심으로 아래와 같이 정리해본다. - ---- - -* __살 때(취득)__ - 집을 살때 내는 세금을 정리한다. - - 취득세 - + `(구매금액 * 2 / 3억 -3) / 100` - + 예시) 8억원에 산 경우 - > (8억 * 2 / 3억 -3) / 100 = 2.33% = 1,846만원 - + 단, 4번째 주택은 4%. 임대 주택 등록시 감면 있음. - - 인지세 - + 1억 ~ 10억 : 15만원 - + 10억 ~ : 35만원 - - 자금조달계획서 : 6억원 이상 주택 거래 시 제출 의무화 - -* __보유하고 있을 때(보유)__ - - 종합부동산세(공시가 6억 초과 시) 예시 - 주택(가) : 7억원 / 재산세 과표 4.2억 / 재산세 105만원 - 주택(나) : 2억원 / 재산세 과표 1.2억 / 재산세 15만원 - 2채를 보유하고 있다 가정 시, - > A = 120만원(재산세 합계)
- > B = (9억 - 6억) * 90%(종부세법) * 60%(지방세법) * 0.4%(표준세율) = 64만 8천원
- > C = 5.4억(재산세 과표 합계) * 0.4% - 63만원 = 153만원 (재산세 세율 적용)
- > 공제액 = 120(A) * 64만 8천원(B) / 153만원(C) = 50만 8,325원
- > 산출세액 = 162만원(종부세액, 세율 0.6%) - 50만 8,325원(공제액) = 111만 1,765원
- > 그 외 차감금액 : 세부담 상한 초과세액, 고령 공제, 장기보유 공제
- > 그 외 합산금액 : 농어촌특별세
- + 단, 1세대 1주택자의 경우 `9억원`까지 비과세 - + `부부 공동 명의` : 12억원까지 절세효과가 있으나, 장기 및 고령 공제를 받지 못하는 경우가 발생하며, 취득세는 공시가격 기준 4%만큼 부담해야 함. 보유기간에 따라 판단할 문제. - + `동거봉양`으로 인한 합가의 경우 혜택 부여 - - 지방세 - + 재산세 예시 : 6억 4,268만 4천원 기준(서울 중위 매매가격) - > 3억 8,651만 400원(재산세 과표) * 0.4%(제산세 세율) - 63만원(누진공제) = 91만 2,442원 - + 지방교육세 예시 : 위 예시와 동일 기준, 재산세 산출세액의 20% - > 91만,2442원 * 20% = 18만 2,488원 - + 재산세 도시지역분 : 위 예시 동일 기준, 재산세 과표 * 0.14% - > 3억 8,651만 400원 * 0.14% = 53만 9,855원 - + 지역 자원시설세 추가 부과 가능성 있음, 주임사 감면 있음 - -* __팔 때(양도)__ - - 양도소득세 예시 - 9.5억 매수 / 19억 매도 / 4년 8개월 보유 실거주 시 / 1세대 1주택 - > 양도차익 = 19억 - 9.5억 = 9.5억
- > 과세대상 양도차익 = 9.5억 * (19 - 9억) / 19억 = 5억 (9억 비과세 적용)
- > 장기보유공제 = 5억 * 32%(실거주 4년*8%=32%) = 1.6억
- > 과세표준 = 과세대상 양도차익 - 장기보유공제 = 3.4억
- > 양도소득세 = 3.4억 * 40% - 2,540만 = 1억 1,060만원
- + 동일 조건 실거주 안할 경우 양도 소득세가 4,800만원 정도 더 부과된다. - + `장기보유 공제율, 거주기간별 양도소득세`표 참조(100 ~ 101p) - + `일시적 2주택자` 요건 확인 필요 (중복 가능 기간이 점점 줄어드는 추세) - - 농어촌특별세, 개인지방소득세 추가 부과됨 - -* __상속__ - - 상속세 예시 - 주택1 11억 / 주택2 10억 / 금융자산 7억 / 배우자, 자녀2명(18세, 25세) - > 과세가액 = 28억
- > 배우자 공제 = 12억
- > 일괄공제 = 5억 = Max[(일괄공제 2억 + 기타 인적공제), 5억]
- > 금융재산공제 = 7억 * 20% = 1.4억
- > 과세표준 = 과세가액 - 배우자 공제 - 일괄공제 - 금융재산공제 = 9.6억
- > 산출세액 = 9.6억 * 세율(30%) - 0.6억(누진공제) = 2.28억
- > 세액공제 = 684만원(신고세액공제 3%)
- > 납부금액 = 산출세액 - 세액공제 = 2억 2,116만원
- + 과세가액 : 상속재산, 추정간주재산(보험금, 신탁재산, 퇴직금 등), 사전증여재산(`10년 이내 증여`액) - + 공제 : 기초공제 2억(가업 및 `영농상속`은 별도 고려), 배우자 공제, 인적공제(인당 5천만원), 금융재산 상속공제, 동거주택 상속공제 등 - -* __증여__ - - 증여추정 `배제`기준 : 세법상 불법이지만 현실적으로 합법인 케이스가 존재 가능 - - 증여세 예시 : 증여금액 2억원 기준 - > 누진공제방식 : 2억 * 20% - 1천만원 = 3천만원 - > 법률상의 계산 방식 : 1천만원 + (2억 -1억)*20% = 3천만원 - - 증여세 절세 - + 자녀, 배우자 공동명의 - + 세대생략증여 : 할아버지 -> 손주 - + 그 외 의사결정 방법, 시기 등 고려 - ![증여상속차이](https://theorydb.github.io/assets/img/review/review-book-2020-real-estate-tax-2.png) - -* __세무 상담 전 사전체크__ - - 모두 말할 것(누락한 부분에서 과세되는 경우가 흔하다.) - 소재지, 취득방법, 취득일, 취득금액, 처분일, 처분예정금액, 전체주택, 임대등록여부 등 - - 아는 지식으로 도출된 결론 중 불확실한 부분 중심으로 상담 - - 의사결정된 상태에서 질의 - - 타 전문가 재확인 - ---- - -이것으로 핵심 정리를 마친다. 주의해야 할 것은 리뷰 분량 상 위 예시들은 특정 상황에 국한되어 산출된 결과이므로 상황이 바뀌거나 구체화되거나 혹은 세법 적용 시기에 따라 달라질 수 있으니 맹신하지 않도록 유의해야 한다. - -이 책의 장점을 요약하자면 앞서 언급한 대로 인생에 주택과 관련되어 평생에 걸쳐 내야 할 세금 지식이 총정리 되어있다는 점이다. - -즉, 한 번 샀다하면 평생에 걸쳐 `취득, 보유, 양도, 상속, 증여, 그리고 임대` 등의 사건이 생기고 그때마다 세금을 내야 하는데 책 한권으로 평생의 부동산 세금을 대비할 수 있다는 것이 엄청난 장점이다. -![총정리](https://theorydb.github.io/assets/img/review/review-book-2020-real-estate-tax-3.png) - -더불어 각 상황마다 직접 각종 `신고서`를 작성하는 방법이 구체적으로 안내되어 있으며, `절세 팁`이 곳곳에 숨어있다는 것도 큰 장점이다. 아마도 저자분께서 평소 세무 상담할때 활용하는 `본인만의 가이드 혹은 매뉴얼`을 책으로 정리한 느낌이다. - -`쉬운 예시`를 통해 이해를 돕는 점이 인상적이었고 책의 가격도 매우 `저렴`한데다 `분량`도 많지 않아 짧은 시간내에 굵직한 내용 위주로 큰 숲을 그려볼 수 있다. - -어차피 세법 관련 내용은 지겹고 어려워하는 사람이 대다수이므로 본 도서와 같이 필요한 핵심만 먼저 꿰뚫은 후 필요 시 세무상담이나 보다 구체적인 서적을 참고하면 향후 절세를 위한 좋은 방안이 되지 않을까 싶다. - -이 책은 특히 내집마련을 앞두고 있거나, 주택 취득 계획이 있는 분, 혹은 변경된 세법에 대응하여 절세하고 싶은 다주택자 분들께 권하고 싶다. - -더불어 직접적으로는 아직 관계가 없을지라도 내집마련의 꿈을 가진 사회 초년생, 신혼 부부 분들께도 강력히 추천하고 싶다. - -당장 매매할 일이 없어 눈에 들어오지 않을 수 있다. 하지만 이 책처럼 짧고 굵직한 분량의 큰 줄기만 알아두어도 주위에 뜨는 분양, 매매 정보에 대한 이해도가 깊어져 준비된 자세로 부동산 투자의 흐름을 느끼고 대응할 수 있도록 많은 지식을 얻을 수 있을 것이다. - ---- - -* [책소개 - 2020 부동산 세금 사용설명서](http://www.yes24.com/Product/Goods/90367322) - diff --git a/_posts/2020-11-05-review-book-booket-list.markdown b/_posts/2020-11-05-review-book-booket-list.markdown deleted file mode 100644 index 61e06a97d..000000000 --- a/_posts/2020-11-05-review-book-booket-list.markdown +++ /dev/null @@ -1,155 +0,0 @@ ---- -layout: post -title: "[리뷰] 북킷리스트" -subtitle: "21세기 지식인들이 선택한 인생 책 12" -categories: review -tags: review book 인생책 12권 책읽어드립니다 호모데우스 왜세계의절반은굶주리는가 죽음이란무엇인가 생각에관한생각 오리지널스 거의모든것의역사 부의감각 오래된미래 몰입 랩걸 침묵의봄 지리의힘 -comments: true -header-img: img/review/review-book-booket-list-1.png ---- - -> `한빛비즈` 출판사의 `"북킷리스트(홍지해, 김나영, 김문주, 정윤서 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-booket-list-1.png) - ---- - -이 책을 읽어야 하는 가장 중요한 이유 세가지를 책에 담긴 12권의 밀리언셀러의 표현으로 소개해 볼까 한다. - -행동경제학의 완성으로 노벨상을 받은 `대니얼 카너먼`의 표현을 빌리자면 우리는 직관으로 움직이는 시스템1을 선호하기 때문에 책보다 유튜브나 TV 시청을 좋아하게 된다. 게다가 이성에 기반한 시스템2는 게으르고 나태하기에 책을 읽는 불편한 행위에 거부감을 느낀다. 즉, 스스로의 감정에 반하여 억지로 읽는 과정으로 자아가 고갈되는 것을 꺼려한다. 그럼에도 본 도서를 읽어야 하는 이유는 시스템2가 우리를 올바른 결정으로 이끌기 때문이다. - -세상 지식의 최전선에 논문이 있고 그 논문을 목차처럼 구성하는 논문을 리뷰 논문 혹은 메타 논문이라 부른다. 지금 출간되는 베스트 셀러 혹은 명작도 하나같이 어떤 책들을 `인용`하고 있는데 북킷리스트 12권의 책이 바로 그런 출처이자 `근원지`이다. 즉, 당신이 책을 좋아하는 사람이라면 읽은 책 대부분은 이 12권의 밀리언셀러를 인용하였다는 의미이며, 당신이 아직 읽고 있진 않았으나 꼭 한 번 읽어보기로 결심한 책이 있을지라도 그 책은 본 도서 12권의 책을 인용했을 가능성이 높다는 의미이다. - -마지막으로 클래식으로 넘어가기 위한 교양있는 대중 가요의 `징검다리` 같은 느낌이라고 표현하고 싶다. 수천년의 역사가 흘러도 꾸준히 읽히고 해석되는 고전의 중요성을 모르는 이는 없다. 다만 그 내용이 어려워 일종의 커넥트 수단이 필요한데 본 도서에 소개된 책들은 내용은 깊이 있어도 비교적 최근에 출간된 현대의 표현과 사상으로 이루어진 책들이기에 고전으로 넘어가기 위한 좋은 징검 다리의 역할을 한다. - -그 외 책을 대신 읽어줘서 편하다거나, 어려운 책을 알기 쉽게 요약해줬다거나, 분량이 줄어들어 읽기 쉽다거나, 어떤 책이 좋은 책인지조차 몰랐던 내게 무엇을 읽어야 할지 콕 찝어줘서 좋았다거나, 마치 저자가 요약본으로 다시 책을 집필한 듯 1인칭 느낌으로 재배치 되었다는 점들도 이 책이 가진 또 다른 훌륭한 장점이지만 모두 부수적인 것에 지나지 않는다. 스스로 생각하기에 정말 중요한 가치는 앞에 열거한 세가지라 생각한다. - -12권의 밀리언셀러가 각각 어떤 내용을 담고있는지 많은 도움과 더불어 감동받았던 핵심을 중심으로 아래와 같이 요약해 보았다. - ---- - -* __호모데우스__(by 유발하라리) - + 저자 특유의 독특한 시각으로 `인류의 미래`를 예측한다. - + 농업혁명 이전에 `인지혁명`이 있었다. 상상을 가능하게 하였으며 존재하지 않는 신, 조국, 화폐, 이념 등의 `허구를 믿는` 협력의 힘이 문화를 탄생시키게 된다. - + 산업혁명을 거치며 신이 맡던 역할을 인간이 대신하는 자유주의, 사회주의, 진화론 세 분파의 `인본주의`가 등장하였고 치열한 종교 전쟁으로 치닫는다. - + 하지만 인간 역시 알고리즘으로 움직이며 약물, 유전공학 등으로 믿음과 욕망도 통제할 수 있음이 밝혀지는 현시점 21세기 인류의 최대 의제는 불멸, 행복, 신성이다. - -* __왜 세계의 절반은 굶주리는가__(by 장 지글러) - + 유엔 식량특별조사관이었던 저자의 `기아` 문제에 대한 경종을 울린 책 - + 전 세계 인구의 25%가 빈곤 상태. 매년 700만 명이 실명. 22%의 인구가 영양실조. - + 하지만 지구는 현재나 2배나 많은 인구를 먹여살릴 수 있을 만큼의 식량 생산이 가능하다. - + `멜서스 이론` : 질병과 배고픔이 사회에 필수적인 기능을 제공하므로 기부를 반대한 이론으로 가진자들로 하여금 양심의 가책을 줄이는 것을 합리화하여 신봉된 이론. - + 기아의 원인 : 전쟁, 사막화, 교육의 부재(아무도 실상을 정확히 모르고, 교육하지 않는다.) - + 해결책 : 부르키나파소의 `상카라`가 취한 정책이 롤모델(자주관리, 철도건설, 인두세 폐지, 토지 국유화) + UN의 경제적 원조에 앞서 사회 구조를 바탕으로 `개혁`을 지원 - -* __죽음이란 무엇인가__ (by 셀리 케이건) - + 죽음을 맞이하는 우리가 어떻게 살아가야 할지 논리와 이성 측면에서 삶의 의미를 고찰한다. - + 영혼과 육체가 분리되었다는 `이원론`과 하나라는 `일원론`의 대립 - + `최선 설명으로의 추론` : 뼈가 찍힌 사진으로 엑스레이가 존재한다고 받아들이는 추론 - + 영혼, 육체, 인격의 관점에서 인간의 정체성을 찾는 여정을 통해 어떻게 살아야 할지 독자로 하여금 깊은 사색의 문을 열어준다. - -* __생각에 관한 생각__(by 대니얼 카너먼) - + 인간은 합리적으로 사고하는 존재라는 전통 경제학의 프레임을 뒤엎고 `행동경제학`의 완성으로 노벨상을 받은 저자의 생각에 관한 고찰. - + `시스템1(직관)` : 즉흥적으로 바로 떠오르는 생각. 의식적인 접근이 불가능한 영역. 부정확할 가능성이 높다. 경험하는 자아. - + `시스템2(이성)` : 집중을 필요로 하는 신중한 판단. 자아고갈을 일으킬 수 있다. 게으르다. 기억하는 자아. - + 논리적 일관성 : 단어 -> 기억 -> 감정 -> 표정, 긴장, 회피 -> 연관된 기분 상승 -> 비슷한 다른 생각 -> 자기강화 - + 단순 노출 효과 : 단어나 그림이 반복되어 그것을 봤다는 사실 조차 모른채 대상을 좋아하게 된다. - + 자아고갈 : 감정을 억눌러 노력하여 의지나 능력이 줄어들어 다른 일을 포기하고 싶은 마음이 커진 상태. - + 소수법칙 : 표본이 작아 발생가능한 오류를 무시하고 시스템1에 의해 판단. - + 기준점효과 : 머리속에 떠오른 값을 기준점 삼아 그와 가까운 숫자를 추정치로 내놓는 현상. 반대로 생각하기 전략으로 오류를 막을 수 있다. - + 기저율 : 어떤 요소가 전체에서 차지하는 통계적 비율 (예: 사서보다는 농부를 직업으로 가진 사람의 수가 더 많다.) - + 대표성에 기댄 예측 : 머리는 좋고 질서정연한 것을 선호하는 사람은 기저율에 근거 농부일 가능성이 높음에도 사서라고 판단하는 오류. - + 회상 용이성 어림짐작 : 회상하기 쉬운 것에 편향함. - + 후광효과 : 대상을 단순하고 일관되게 유지하여 파악하려는 특성. - + 효용성 : 기댓값이 합리적인 판단 기준임에도, 심리적 가치인 효용성을 중시하게 된다. - + 낙관편향 : 근거도 없이 잘될거라 낙관하는 편향. 위험관리 정책으로 극복가능. - + 손실회피 : 효용성은 재산의 상태보다 변화와 밀접하다. 위험관리 정책으로 극복가능. - + 프레이밍 효과(틀짜기 효과) : 의사 전달을 어떤 틀에서 하느냐에 따라 전달 받은 사람의 행동이나 태도가 달라지는 현상 - + 매몰비용 오류 : 회수할 수 없는 비용으로 인한 후회로 일상에서 쉽게 빠져나오기 힘든 상태 - + 판단과 선택의 역전 : 시스템1과 2의 모순으로 공동평가에 따른 시스템2의 가동으로 해결해야 한다. - + 해결책 : 위 오류를 경계하고 심사숙고, 틀짜기, 정보수집, 위험관리 정책, 반대로 생각하기 전략을 가동 - -* __오리지널스__ (by 애덤 그랜트) - + 와튼 스쿨 최연소 종신교수의 창의성으로 세상을 움직이는 법에 관한 기록. - + 성공한 기업가는 모든 것을 걸지 않고 안전장치를 하나씩 마련했다. 한 분야의 `안정성`이 확보되면 다른 분야 독창성이 발휘될 확률이 증가한다. 주변사람들의 등떠밀기도 한 몫 한다. - + 평균보다 `더 많은 아이디어`를 내면 된다. 베토벤 600여곡 작곡, 아인슈타인 248편의 논문, 피카소 2만여점의 작품 등 - + 확증편향 경계, 긍정 오류 및 부정 오류 경계 - + 내 기업에 투자하면 안되는 이유, 즉, `약점`을 먼저 내세우면 투자자로 하여금 정신적 방어막을 무장 해제 시키는 효과가 있다. - + 적절한 `시기`를 기다리는 것이 중요. - + `타인에게` 어떤 영향을 미칠지를 강조하는 것이 효과적. (즉, 아이 또한 행동보다는 성품을 칭찬해주는 것이 좋다.) - + 스스로의 회사를 망하게 만들 만한 아이디어를 장려하는 사내 문화가 중요. - -* __거의 모든 것의 역사__ (by 빌 브라이슨) - + 과학의 신비로움과 성과에 대해 모두가 이해할 수 있는 책을 쓰고자 3년간의 과학자를 찾아가 답사한 결과를 집대성한 책. - + `우주`의 역사 : 잡음의 원인을 찾는 과정에서 우주배경복사가 발견되었고, 뉴턴의 법칙과 중력이 발견된 일화를 시간순으로 열거. - + `지구`의 역사 : 지구의 나이를 찾아 떠나는 200년간의 흥미로운 가설들과 판구조론, 미생물의 발견 과정이 기술. - + `인간`의 역사 : 세포-핵-염색체-DNA(복제, 개성)-유전자의 매커니즘 기술. - -* __부의 감각__ (by 댄 애리얼리) - + 인간의 행동을 설명하는 이론적 근거를 마련. 우리가 저지르는 실수로 부터 `돈 쓰기의 기술`을 가르쳐준다. - + 상대성 : 우리는 어떤 물건에 대한 가치를 정확하게 측정하는 방법을 알지 못한다. 즉, 동일한 다른 버전과 비교해 가치를 측정하는 경향이 있다. - - ex) 흑진주를 다이아몬드들 가운데 진열하면 비싸게 팔린다. - + 신용카드와 같은 후불제는 우리의 시야를 흐리게 만들고, 기회비용을 불투명하게 만드는 경향이 있다. - + 기대치 : 모든 구매 가치에 영향을 미친다. ex) 사치품과 심장 수술비는 반드시 비싸야 한다. - + 소유효과 : 내가 소유하고 있는 것의 가치를 과대평가하는 경향. - + 이케아 효과 : 불편에도 불구하고 자신의 노력이 투입된 제품에 대해 더 만족하는 현상. - + 군중심리 : 다른 사람의 행동에 근거하여 판단을 기대려는 현상. - + 공정함이 가격에 미치는 영향 : 합리적인 가격 책정에도 억울하면 제 값을 안쳐주는 현상. - + 율리시스의 약정 : 미래의 자신의 안정성을 위해 2040년 10월 18일과 같이 구체적인 날짜를 지정한 스스로와 대화하고 현재의 나에게서 선택권을 박탈한다. - + 시간의 프레임 : 커피는 하루에 4000원이 아니라 1년에 1,460,000원입니다. - + 자동이체의 활용 : 돈을 보이지 않는 곳에 숨기는 것이 좋다. - -* __오래된 미래__ (by 헬레나 노르베리 호지) - + 작은 티베트라 불리는 `라다크`에 16년 동안 머물며 자연의 회복과 공동체적 삶의 본질을 되찾기 위한 답을 제시한 책. - + 라다크 사람들의 자립 정신, 절약 정신, 사회적 조화, 환경적 지속성, 내면의 풍요로움을 배워야 한다. - + 아이들은 할머니에게 위로받고, 아이들은 노인을 위해 자발적으로 부축하고 돕는다. - + 서양 문화에 노출되며 스프롤 현상으로 그들의 문화가 파괴된 것은 산업혁명 이후 망가진 우리 문명의 축소판이다. - + 국민총생산이 아닌 국민총행복의 지표가 더 중요해지도록 그들의 삶에서 우리가 잃은 것의 소중함을 느끼고 배워야 한다. - -* __몰입__ (by 미하이 칙센트미하이) - + 몰입을 통해 삶이 좀 더 창의적이고 행복해질 수 있도록 지혜를 기술한 책. - + 최적 경험 : 외적 조건(내가 통제할 수 없는 것들)에 압도되지 않고 자기 행동을 스스로 조절할 수 있는 상황 - + `플로우` : 현재 하고 있는 일에 푹 빠져있는 몰입된 상태. 현재 삶을 즐겁게 만들고, 자신감을 향상시키고, 인류에 공헌하게 된다. - + 플로우의 조건 : 능력이 많을 때, 목표가 명확할 때, 즉각적인 피드백이 있을 때 - + 최적 경험을 유발하는 가정 환경 : 부모가 무엇을 기대하는지 명료함, 스펙보다 경험과 감정에 부모가 더 관심을 가짐, 선택권이 주어짐, 보호감, 기회를 제공하고자 헌신함 등 - -* __랩걸__ (by 호프 자런) - + 연구자의 길을 선택한 소녀가 긴 시간을 견디며 멋진 과학자가 되기까지의 여정이자 자서전. - + 숲이 10년 마다 1%씩(프랑스 크기) 파괴되고 있다. 무기물에서 당을 만들 수 있는 것은 우주에서 식물이 유일하다. 나무는 자신의 어린 시절을 기억한다. - + 팽나무를 죽일 수 있는 병은 거의 없다. 이를 강화하는 오팔이 형성되기에 온도가 어떤 영향을 주는지 연구. - + 거의 모든 과학분야가 미 국립과학재단 예산 73억 달러에 의지한다. - + `진짜 과학자가 되는 것이 소원이었는데, 그 목적에 가까워지자 모든 것을 잃을 위험에 빠지게 되었다.` - + 어떤 문제를 해결하지 못하는 이유는 불가능해서가 아니라 해결책이 관습에서 벗어나지 못했기 때문이다. - -* __침묵의 봄__ (by 레이첼 카슨) - + 살충제 사용으로 파괴되는 야생 생태계의 모습을 적나라하게 공개한 책으로 리우 회담으로 이어지는 성과를 낸 책. - + 곤충, 잡초, 설치류 등을 없애기 위해 약 200여종의 화학물질 제조. 무차별적 살생으로 이어지며 가장 문제가 되는 요소는 `비소`. - + DDT로 대표되는 염화탄화수소 계열 및 말라티온으로 대표되는 유기 인산 계열이 주축. 소화기관이나 폐를 통해 천천히 흡수됨. - + 인간에게 가장 위험한 적은 슬그머니 나타나는 병으로 기억력 감퇴, 정신분열, 우울증, 다운증후군, 암으로 이어진다. - + 해결책 : 천적을 이용한 생물적 방제, 곤충이 만드는 여러 물질을 모방 - -* __지리의 힘__ (by 팀 마샬) - + 지리가 우리 삶에 어떤 영향을 미치고, 어떻게 세계 경제를 좌우하는지 색다른 시각으로 저술된 책. - + 미국 : 산맥과 바다에 힘입어 뒤로 물러날 수 있는 `전략적 깊이` 덕에 방어에 최적화된 지형. 알래스카의 금광 및 원유 발견, 영국 기지와 구축함의 교환, 루이지애나 영토 매입 등의 전략적 중요성을 돌이켜 본다. - + 중국 : 티베트 승려들의 분신과 자유 운동에도 불구하고 신장, 티베트를 포기할 수 없는 이유는 황하, 양쯔강의 `수원`이자 전략적 요충지이기 때문 - + 러시아 : `V자 모양의 북유럽 평원`이 나폴레옹도 물리칠 정도로 천혜의 요새로 작용. 부동항의 부재가 미친 영향. - + 유럽 : 많은 산과 계곡이 여러 나라가 등장하게 된 배경이 됨. 서유럽과 남유럽의 지리적 차이. - + 북극 : 지구온난화로 인한 북극항로와 북서항로의 중요성. 천연가스와 유전에 대한 접근성이 높아짐. 영토 및 자원 분쟁으로 셰계에 독이 되지 않는 결정이 필요. - ---- - -이로써 12권의 명작을 읽으며 개인적으로 인상깊었던 여정을 마무리한다. 상당한 분량의 명작을 이미 압축한 본 도서의 내용을 한 번 더 압축한 것이라 저자가 전달하고자 하는 바를 충분히 전달하지 못하였으므로 이에 유의하여 소재와 내용에 대한 소개 정도로 받아들이길 권장한다. - -게다가 위 내용들은 모두 개인적인 기준에서 중요도가 높은 것을 간추린 것임을 분명히 해두고 싶다. 다른 시각과 지식을 가진 독자에게는 보다 중요한 가치를 가진 지혜와 지식이 담겨져 있을거라 믿는다. - -여행의 목적은 가보지 못한 곳이 불러오는 신선함과 일상으로부터의 환기. 도전을 통한 삶의 활력 충족. 번잡한 현재에서 탈출하여 인생을 돌이키고 충전하는 등 여러 이유가 있을 것이다. 본 도서는 정신적으로 여행 이상의 효과를 우리에게 전해줄 것이다. - -때로 미처 알지 못한 나와 사람들의 행동 양식을 이해하고 감정의 속성을 제대로 파악하여 스스로와 주위를 납득하기도 하고, 인류가 쌓아온 잘못으로 인한 지구, 환경, 인간의 파괴에 대해 돌이켜 볼 수도 있으며, 미처 몰랐던 흥미로운 지식에 대한 탐험에 이르기까지 스스로의 `마음의 양식을 충만하게 해주는 명작`이다. - -읽기 전에 한가지 우려스러웠던 점은 본 도서의 저자들이 원작자들의 메시지를 얼마나 훌륭하게 전달할 수 있는지에 대한 의구심이었는데 이미 몇 권의 원작을 읽어본 독자로써 그 메시지를 훌륭하게 전달하고 있음을 느낄 수 있었다. 특히 10번째로 소개된 랩걸의 경우 저자의 1인칭 시점을 재현하기 어려운 작품인데 마치 원작자가 작성했다고 느낄 정도로 완벽하게 재구성되어있다. 랩걸의 전달 수준이 이리할진데 다른 파트는 의심할 여지가 없다. - -스스로의 미래와 내면의 안식을 위해, 미래에 이어질 멋진 또 다른 양서와의 인연을 위해 일독을 권하며 본 리뷰를 마친다. - ---- -* [책소개 - 북킷리스트](http://www.yes24.com/Product/Goods/93720516) - diff --git a/_posts/2020-11-07-review-book-elastic-habits.markdown b/_posts/2020-11-07-review-book-elastic-habits.markdown deleted file mode 100644 index 8f910f20c..000000000 --- a/_posts/2020-11-07-review-book-elastic-habits.markdown +++ /dev/null @@ -1,124 +0,0 @@ ---- -layout: post -title: "[리뷰] 탄력적 습관" -subtitle: "당신의 삶에 완벽하게 들어맞는 스마트한 습관법" -categories: review -tags: review book 습관 minihabits 스티븐기즈 습관의재발견 탄력적습관 습관시스템 자유 탄력성 동기부여 전략 -comments: true -header-img: img/review/review-book-elastic-habits-1.png ---- - -> `한빛비즈` 출판사의 `"탄력적 습관(스티븐 기즈 저/김정희 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-elastic-habits-1.png) - ---- - -저자의 말 처럼 습관은 우리 삶에서 가장 큰 `레버리지` 효과를 일으키는 중요한 도구이다. 습관의 중요성은 누구나 아는 사실이지만 좋은 습관을 갖는 것은 생각보다 어려운 일이다. - -이 책은 `좋은 습관을 길들이기 위한 성공 방법`을 다룬 책이다. 저자는 이미 습관의 재발견이라는 전작을 통해 하루 윗몸 일으켜기 1회와 같은 작은 습관을 길들이는 방법을 다루었는데, 이번 도서에는 보다 업그레이드된 `유연성`의 개념을 소개한다. - -살다보면 어떤 날은 병이 나거나, 혹은 피치못한 경조사가 생기기도 하며, 모든 것을 포기하고 싶을 정도로 무기력한 날도 있다. 그런날조차 반복적으로 실행할 수 있는 작은 습관을 시작으로 각각의 상황에 따라 유연성을 부여하는 방법을 소개한다. - -이를 통해 미래에 나의 행동을 돌이켜보며 강한 내적 지지와 자신감을 얻을 수 있는 습관의 형성법을 소개하는데 말만으로는 구체적으로 와 닿지 않을 것이기에 책에서 제공하는 키트를 예시로 실천 방법을 먼저 소개하겠다. - ---- - -* __습관 정하기__ - 먼저 아래의 `포스터`에 목표로 하는 습관을 3개 적는다. - ![포스터](https://theorydb.github.io/assets/img/review/review-book-elastic-habits-2.png) - - 예시를 들면 아래와 같다. - ![예시](https://theorydb.github.io/assets/img/review/review-book-elastic-habits-5.png) - - 분홍색 네모 박스에는 원하는 습관을 대표하는 말 혹은 스스로의 감정에 활력을 불어넣는 어떤말이든 작성할 수 있다. 보통 `정체성, 꾸준함, 활동 묘사` 등을 적는다. 책의 보다 구체적인 예시를 참조하면 쉽게 작성할 수 있다. - - 이어지는 미니, 플러스, 엘리트 네모박스 하단의 송곳니처럼 튀어 나온 부분은 여러개를 적을 때 선을 긋기 위한 표시자로 각각 1/4, 1/3, 1/2 지점을 나타내며 세로로 선을 그으면 2등분, 3등분, 4등분의 선을 쉽게 그을 수 있다. `수평적` 습관을 열거하기 위한 공간으로 여러 선택지를 배치할 수 있다. - - 추가적인 팁으로 벽을 "탁"치는 행위를 통해 (`탁치기 계약`이라고 소개됨) 계약이 성립되었음을 뇌에 한 번 더 각인시키면 효과가 좋다. 윌리엄 선서도 좋다. 화장실을 통과할 때 마다 팔굽혀 펴기 1회를 해야하는 `통행료`(계약 트롤)을 설정하면 더욱 좋다. - -* __점수 추적__ - 습관을 실행한 후 점수를 기입한다. 15일이 1주기이며 미니=1점, 플러스=2점, 엘리트=3점에 맞게 점수를 기입한다. - ![점수표](https://theorydb.github.io/assets/img/review/review-book-elastic-habits-3.png) - - 더불어 매일 부여되는 보너스 점수도 존재한다. - + 성취두배(1점) : 엘리트 2번 달성 시 - + 완벽한하루(2점) : 모든 습관에서 엘리트 달성 시 - + 상승세(3점) : 엘리트 3회 연속 달성 시 - + 믿기지 않는 승리(5점) : 엘리트 7회 연속 달성 시 - - 15일 1주기를 마치면 추가로 보너스 점수가 등장한다. - + 스페셜리스트(3점) : 엘리트 10회 이상 달성 시 - + 거물(3점) : 엘리트 총 15회 달성 시 - + 거대한습관(10점) : 엘리트 총 23회 달성 시 - + 습관의 달인(20점) : 15일 동안 하루도 빼먹지 않고 실천 시 - - 습관의 지속 가능성을 위해 여러 유연성을 부여하는 도구도 있다. - + `31일` : 1년 중 7번. 마음대로 해도 되는 날. 쉬어도 되고 빼먹은 날 혹은 2월의 부족한 2일을 채울 수 있는 날이다. - + `패치` : 15일 중 딱 한 번만 쓸 수 있다. 빼먹은 날을 하루 보충할 수 있는 특권이다. - -* __탄력적 습관 추적기__ - ![추적기](https://theorydb.github.io/assets/img/review/review-book-elastic-habits-4.png) - 습관을 "했음/안했음" 형태로 기록하기 위한 것으로 날짜별로 실선 부분을 가위로 자른 후 매일 접는 형태로 체크한다. - - 혹은 숫자를 활용해 실행한 횟수에 해당하는 숫자를 접거나 횟수를 세는 방법으로 활용할 수도 있다. - ---- - -위에서 소개한 내용이 이 책에서 소개하는 습관 형성법의 대부분이다. 보다 구체적인 사항은 5부 실천 파트 (9장 ~12장)을 참조하면 된다. 만약 지금 당장 바로 좋은 습관을 형성하고 싶다면 5부부터 읽을 것을 추천한다. - -저자는 유연성(=탄력성=복원력)이 가지는 위력을 여러차례 강조한다. 더불어 몇가지 습관 형성을 위한 좋은 팁을 소개하고 있어 아래와 같이 정리해 보았다. - ---- - -* 팔굽혀 펴기 목표 100회 중 초반에는 실행 완료 여부가 관건이지만, 75회를 넘어가면 애초의 목표 달성 자체가 큰 동기부여가 된다. 즉, `단계별로 유연성`을 부여해야 성공 가능성이 높아진다. - -* 유연성을 부여한다는 말을 구체적인 예시로 들면 다음과 같다. - + 피곤한 날 : 보통의 목표라면 1km를 뛰어야 하지만, 유연성을 부여하면 노래1곡을 들으며 춤을 춰도 된다. - + 에너지가 넘치는 날 : 보통의 목표라면 1km를 뛰어야 하지만, 오늘은 2km를 뛰어 엘리트 목표를 달성할 수 있다. - -* 습관을 정하는 방법 - + `파급력` 있는 습관을 선택한다. 내게 지금 가장 필요한 가치를 선정한다. 예를 들면 건강, 정직함, 창의성, 자유, 배움, 대인관계 등을 들 수 있으며 그 중 가장 중요한 3가지를 고르면 된다. 예를 들면 다음과 같다. - - 건강 : 운동, 명상, 식단관리 - - 창의성 : 글쓰기, 독서, 실험, 아이디어 내기 - - 자유 : 돈벌기, 돈관리, 경력 투자 - + `구체적`으로 명시한다. 운동 20분 보다는 달리기 1km, 노래 1곡동안 춤추기와 같이 구체적인 `수평` 선택지를 3개 정도 선정한다. 물론 1주기 실천 이후 바꿀 수 있다. - -* `신호`를 활용한다. - + 시간 기반 신호 : 8시에 이 닦기 - + 행동 기반 신호 : 샤워 뒤에(혹은 잠들기 전) 이 닦기 - -* 수평적 습관은 모듈형(바닥쓸고 걸레질), 호환형(주방, 방, 대청소 등 택1), 루틴형(팔굽1회-요가1회) 등의 응용이 가능하다. - -* 예외를 역이용한다. - - TV를 보고 싶지만 `이번 한 번만` 설거지를 먼저하자. 1분이면 끝날거야. - - 저 놈의 대갈통을 날려버리고 싶지만 이번 한 번만 살려주고 심호흡이나 몇 번 하자. - -* 습관을 끝냈음을 `표시`할 4번의 기회가 있다. - - 습관 실행 직후 - - 모두 끝내고 한꺼번에 표시 - - 잠들기 전 - - 다음날 일어나자마자 - ---- - -습관과 관련된 유명한 도서는 너무도 많고, 습관이 개인의 인생을 어떻게 성공으로 이끄는지에 대한 과거 위인들의 일화는 더더욱 많다. 꼭 그렇게 다른이의 가르침이 없더라도 이미 개개인 마다 살면서 저절로 얻게된 좋은 습관들도 있을 것이다. - -나 역시 살면서 우연히 얻게된 좋은 습관 몇가지가 있다. 하나는 외출 시 들어오자마자 옷벗고 씻는 행위이다. 어린 시절 들어오면 귀찮아 놀고 먹느라 씻기를 미룬적이 많았는데 어느 날인가 씻고 먹는 행위를 더 즐기고 싶어 먼저 씻은 적이 있는데 상쾌한 기분 덕분에 노는 것이 더 즐거워진 경험이 있다. - -덕분에 매일 들어오자마자 씻는 습관이 형성되었는데 그러고 나니 기분 뿐만 아니라 감기에 걸리는 횟수도 줄어들어 습관의 위대함을 깨칠 수 있었다. - -최근에 형성된 좋은 습관으로는 매일 독서하는 습관이 있다. 혹은 독서를 하지 않으면 AI 분야의 온라인 강의를 시청하거나 Python 프로그래밍 코드는 구현한다. - -이를 가능하게 하는 `원동력`은 여러가지가 있다. 미래에 과거의 나를 바라보며 흐뭇하게 미소짓는 내 모습, 목표에 한발짝 더 접근한 내 모습, 하루를 뿌듯하게 보냈다는 잠들기 전의 나, 하루도 헛되이 살지 않았다는 내일의 나, 무엇인가 몰입해서 행복한 지금의 나, 세상의 진리를 하나라도 더 깨우쳤다는 지금의 나, 현명한 저자와 수다떨며 즐거움을 얻은 나, 때로는 출판사 혹은 저자와의 약속을 지키기 위해 리뷰를 작성하는 나 등 여러 동기들이 나의 습관이 지속되기 위해 나를 격려하고 있다. - -안창호 선생의 하루라도 독서를 하지 않으면 입안에 가시가 돋친다는 말이 무엇인지 여실히 느끼고 있으며, 과거 리즈시절의 안철수 교수가 공부하기 싫을 때 신문의 기고 연재를 예약하여 반드시 글을 쓸 수 밖에 없는 상황을 만들었다는 말들의 의미를 알아가게 되었다. - -스스로 습관의 위대함을 느끼며 보다 좋은 습관을 더욱 많이 꾸준히 실천하기 위해 노력해 온 나로써 이 책에서 말하는 습관 실천법이 얼마나 쉬운 방법인지 여실히 느끼고 있다. 저자가 일부러 자신의 삶을 망가뜨린 후 책의 방법이 효과가 있는지 검증한 방법도 있지만, 나 역시 독자로써 이 방법이 충분히 쉽게 실천할 수 있는 방법임을 삶에 비추어 확신한다. - -다만 개인적으로 조금 더 어려운 방법으로 좋은 습관을 형성했기에 보다 어린 나이에 이 책을 읽었다면 더욱 이른 나이에 좋은 습관을 익힐 수 있었을 것이라는 아쉬움이 크다. 때문에 이 책은 습관 형성에 실패한 무기력한 사람은 물론, 자라나는 청소년에게도 제일 먼저 추천하고 싶다. - ---- - -* [책소개 - 탄력적 습관](http://www.yes24.com/Product/Goods/93764236) - diff --git a/_posts/2020-11-19-review-book-financial-engineering-recipe.markdown b/_posts/2020-11-19-review-book-financial-engineering-recipe.markdown deleted file mode 100644 index 8b4740b1e..000000000 --- a/_posts/2020-11-19-review-book-financial-engineering-recipe.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: post -title: "[리뷰] 파이썬을 활용한 금융공학 레시피" -subtitle: "문과생의 코딩 울렁증과 이과생의 금융 울렁증을 한 방에 씻어줄 금융공학 사이다" -categories: review -tags: review book 금융공학 Python 주식 지수 선물 옵션 구조화상품 Pandas Numpy 시각화 모델링 -comments: true -header-img: img/review/2020-11-19-review-book-financial-engineering-recipe-1.png ---- - -> `한빛미디어` 출판사의 `"파이썬을 활용한 금융공학 레시피(김용환 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-11-19-review-book-financial-engineering-recipe-1.png) - ---- - -본 도서의 내용은 부제가 가장 잘 표현하고 있는 듯 하다. - -> 문과생의 `코딩 울렁증`과 이과생의 `금융 울렁증`을 한 방에 씻어줄 금융공학 사이다 - -즉, 본 도서는 2가지 목적을 가지고 있다. -* 금융 관련 업무 종사자가 Python 코딩과 같은 IT 스킬을 얻고 싶은 경우 -* IT 업계 종사자가 금융 공학의 입문 지식을 탄탄히 다지고 싶은 경우 - -물론 가장 적합한 독자는 두 영역 모두 잘 모르지만 양쪽 다 관심이 있는 독자이다. - -두마리의 토끼를 잡을 수 있다는 점은 본 도서의 가장 큰 장점이자 단점인 듯 하다. 한 권의 책으로 두마리의 토끼를 완벽하게 잡는 것은 어려운 일이므로 어느 한 쪽을 심도있게 학습하고 싶은 사람에게는 특정 분야의 깊이가 부족해 보일 수도 있겠다. - -나는 IT 업계 종사자로써 금융 공학의 지식이 부족한 유형으로 위 유형 중 후자에 해당하는 독자이다. 따라서 본 리뷰는 후자 유형과 유사한 독자분들께 보다 도움이 될 것 같다. - -금융공학의 전반을 잘 아는 것은 아니지만 퀀트, 투자 금융 등 금융 공학 분야도 굉장히 세분화 되어있는 것으로 알고 있다. 본 도서는 모든 금융 공학 분야를 다루진 않는 듯 하다. 저자가 근무하고 있는 `한국거래소`에서 주로 활용하는 금융 공학 혹은 `금융 상품 개발`과 관련된 공학에 초점이 맞춰져 있다. - -즉, 선물, 옵션, 구조화 상품과 관련된 지식 및 이에 필요한 모델링을 다룬다. 선물은 이미 투자자로써 어느 정도 알고있는 지식이었지만 옵션이나 구조화 상품은 지식이 전무했다. 특히, 옵션은 예전에 누군가의 설명을 읽고도 쉽게 이해가지 않아 투자를 포기한 적이 있으며, 구조화 상품은 내부의 복잡한 매커니즘에 대한 이해는 커녕 단순한 주식 같은 펀드라고만 생각해 왔다. - -개인적으로 본 도서를 읽으며 가장 만족스러웠던 점은 2가지를 꼽을 수 있는데 그 중 하나가 바로 `선물, 옵션, 구조화 상품과 같은 상품이 어떻게 만들어지는지` 내부적으로 `어떤 모델링 기법을` 사용하고 `수학적 공식`을 활용하는지 상세히 알 수 있었다는 점이다. 설명 또한 적절하고 쉬운 예시를 비유로 들고 있어 이해하는데 큰 어려움이 없어 만족스러웠다. -![콜옵션](https://theorydb.github.io/assets/img/review/2020-11-19-review-book-financial-engineering-recipe-2.png) - -내용 전개 방식 또한 쉬운 예시를 통한 개념 이해를 시작으로, 엑셀로 구현하는 과정 속에서 자칫 프로그래밍 코딩 자체에 집중이 팔려 `업무 도메인지식을 놓치지 않도록 배려`한 부분이 마음에 들었다. 엑셀로 필요 수식이나 모델링을 구현하고 나면 실제로 해당 상품의 구조에 대한 이해가 쉬워진다. 이와 동일한 작업을 Python 코딩을 통해 마무리함으로써 금융 공학 지식을 한 번 더 복습 할 수 있는 구조이기에 금융에서 활용되는 프로그램이 어떤 식으로 구현되는지 감을 잡을 수 있어 좋았다. 마지막으로 모델링으로 총정리를 하고 나면 한국거래소에서 돌아가는 업무나 그 외 금융 상품이 만들어지는 방식에 대해 쉽게 이해할 수 있다. - -두번째로 만족스러웠던 점은 `블랙-숄즈 방정식`을 다룬점이다. 금융 공학에 대한 깊이는 부족하지만 퀀트에 관심이 많아 예전에 금융 전공자들이 데이터 분석을 목적으로 참고하는 서적을 지인에게 빌려 읽은 적이 있는데 수식이나 그릭스 표기 때문에 직관적으로 이해되지 않아 어려움을 겪었었다. -![블랙-숄즈](https://theorydb.github.io/assets/img/review/2020-11-19-review-book-financial-engineering-recipe-3.png) - -블랙-숄즈 방정식에 대한 설명과 이를 코딩으로 구현함으로써 내부에 숨겨진 의미를 명쾌하게 파악할 수 있었다는 점에서 매우 만족스러웠다. 금융 공학에서 숫자와 금융을 어떤 관점에서 바라보는지 감을 잡을 수 있었다고 해야할까? `금융 관련 전공자들의 다각적인 시각`이 다른 데이터 분석을 할때에도 좋은 인사이트를 제공한다는 느낌을 받을 수 있었다. - -비록 책에서 다루고 있지는 않지만 이항 모형, 몬테카를로 시뮬레이션, 유한차분법의 위치가 어느 포지션에 해당하는지도 이해할 수 있어 금융 공학으로 깊이 있게 넘어갈 수 있는 `가교 역할`의 기능을 갖춘 듯 하다. 적어도 금융 공학 지식이 부족한 개발자에게는 많은 도움이 될 수 있는 서적이다. - -반면 부족한 점도 있다. IT 업계 종사자라면 기술 측면으로는 약간 지식이 부족하다. 일단 머신러닝이나 딥러닝의 모델을 적용한 예제가 없으며 좋은 데이터 사이언티스트들이 연구한 수학 공식을 코드로 표현한 느낌이 든다. 연역법의 충실한 표현은 있지만 귀납적인 형태의 모델링이 부족하다는 뜻이다. 또, 개인적으로는 블랙-숄즈 방정식이 도출되는 과정이 없어 조금은 아쉬웠다. 하지만 구현하는 과정을 통해 대리 만족할 수 있어 큰 불만은 없다. - -더불어 Python 고급 스킬은 많이 다루고 있지 않다. 하지만 금융 공학에서 활용하는 코딩 스타일을 배울 수 있다는 점은 장점이며, 선물 파트 부분에서 Pandas나 Numpy를 알기쉽게 정리할 수 있다는 점과 옵션 파트에서 최단 시간 내 효율적으로 사용할 수 있는 시각화 방법을 다룬 점은 크게 칭찬할 만한 부분이라 생각한다. - -비록 내게는 해당되지는 않지만 IT 실력이 부족한 금융 업계 종사자 기준에서는 Python과 친숙해지기에 이만한 책이 없다고 본다. 엑셀로 구현한 부분과 Python으로 구현한 부분을 비교할 수 있기에 프로그래밍에서 커버할 수 있는 스킬이 어떤 것인지 그 `미묘한 감`을 익히는 데 큰 도움이 될 것 같다는 생각이 든다. 더욱이 부록에 Python의 기초를 다루고 있기에 프로그래밍 경험이 전무해도 본 도서 하나만 있으면 프로그래밍 세계에 입문하기에 큰 어려움이 없을 것 같다. - ---- - -* [책소개 - 파이썬을 활용한 금융공학 레시피](http://www.yes24.com/Product/Goods/61177004?OzSrank=1) - diff --git a/_posts/2020-11-23-review-book-principles-for-success.markdown b/_posts/2020-11-23-review-book-principles-for-success.markdown deleted file mode 100644 index fc7bf2f1a..000000000 --- a/_posts/2020-11-23-review-book-principles-for-success.markdown +++ /dev/null @@ -1,110 +0,0 @@ ---- -layout: post -title: "[리뷰] 성공 원칙 PRINCIPLES FOR SUCCESS" -subtitle: "PRINCIPLES" -categories: review -tags: review book principles 원칙 레이달리오 인사이트 인생 사업 헤지펀드 경영 일 자서전 -comments: true -header-img: img/review/review-book-principles-for-success-1.png ---- - -> `한빛비즈` 출판사의 `"성공 원칙 PRINCIPLES FOR SUCCESS(레이 달리오 저/고영태 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-principles-for-success-1.png) - ---- - -본 도서는 `그림으로 요약하여 보는 원칙의 각색본`이라고 할 수 있다. 원칙은 레이달리오의 베스트 셀러로 `20조 자산가가 자신의 삶을 성공으로 이끈 원칙`을 담은 책이다. - -성공 원칙 도서를 리뷰하기에 앞서 전작 원칙에 대한 리뷰를 작성해 두었으니 필요하신 분들은 다음 링크를 참고하시기 바란다. [[리뷰] 레이 달리오의 원칙](https://theorydb.github.io/review/2020/09/04/review-book-principles/) -![원칙](https://theorydb.github.io/assets/img/review/review-book-principles-for-success-2.png) -![원칙](https://theorydb.github.io/assets/img/review/review-book-principles-for-success-3.png) - -원칙을 감명깊게 읽은 사람으로써 본 도서는 두가지 측면에서 인상적이었다. 하나는 도식화된 그림들이 매우 `직관적`이라는 점이다. 저자와 일러스트레이터가 원칙이라는 내용들을 독자들에게 어떻게하면 쉽고 빠르고 편하게 전달할 수 있을지 긴 시간을 고민한 흔적이 돋보인다. -![갈림길](https://theorydb.github.io/assets/img/review/review-book-principles-for-success-9.png) - -다른 하나는 원작의 `핵심만` 적절히 추출하여 `압축`한 점이다. 원작을 굉장히 감명깊게 읽은 독자로써 원작의 질이 얼마나 훌륭한지는 의심할 여지가 없다. 하지만 책의 내용은 상당히 방대하고 심오하며 한 사람의 인생이 집대성된 것인지라 이해하기엔 다소 어렵다. - -원작을 제대로 읽기 위해서는 오랜 시간을 두고 자신의 인생과 비교하며 긴 미래를 설계하는 과정이 동반되어야 하고 실제로 세운 원칙을 긴 시간 인생에 적용해보며 그 피드백을 다시 평가하는 과정이 필요하기에 결코 녹록치 않은 여정이다. - -나 역시 벌써 3회독 하고 있지만 구체적인 나만의 원칙을 세우는 작업은 여전히 현재진행형이다. 이런 점에서 독서에 꽤 열의를 가지고 있고, 스스로의 인생과 미래에 정면 도전하고 싶은 생각을 가진 독자가 아닌 이상에야 원작은 꿰어야 구슬이 되는 그림의 떡이 될지도 모른다. - -대부분의 독자들이 원칙이라는 책에 다가가기 위한 `진입장벽`을 느꼈던 것일까? 저자는 이번 도서 성공 원칙을 통해 그 진입 장벽을 상당히 낮춰주었다. 즉, 읽기 쉬운 핵심만 담은 요약본이라는 점이 두번째 장점이라하겠다. - -이 책은 인생이 힘들거나, 실패에 자주 부딪혀 지쳐있는 상태일 때, 혹은 중대한 도전을 앞두고 막막한 느낌이 들 때, 매번 같은 문제로 좌절을 겪을 때, 좀처럼 삶의 방향을 찾을 수 없어 미래를 깊이 있게 설계하고 싶을 때 매우 유용하다. -![인생](https://theorydb.github.io/assets/img/review/review-book-principles-for-success-7.png) - -멋진 여행지에 휴식을 취하러 갈 때 들고 갈 책으로 제격이다. 잠시 인생의 챗바퀴를 멈추고 스스로에게 생각할 시간을 주고 이 책을 읽으며 지금까지 무엇이 잘못되었고 앞으로 어떻게 살아가야 할지 방향을 알려줄 수 있는 좋은 기회다. - -몸의 건강을 위해 영양제를 섭취하듯 정신의 건강 또한 중요하기에 우리는 무언가를 섭취해야 하는데 이 책은 정신 건강을 위한 비타민이라 할 수 있다. 주위에 삶에 지친 소중한 이가 있다면 여행과 함께 이 책을 선물하는 것도 소중한 사람을 위한 좋은 선택이 될 수 있을거라 믿는다. - ---- - -이제 이 책이 다루고 있는 내용의 핵심과 인상적이었던 부분을 간단히 요약해 보고자 한다. - -* 원칙 - 현실에 성공적으로 대응하는 방법. 무엇을 해야할지 결정하는데 도움이 되고 실행으로 옮길 수 있는 용기를 주는 것. - -* 나를 `꼼짝 못 하게 가두는` 주변 환경에 갇힌 채 살고 싶지 않다면? - ![환경](https://theorydb.github.io/assets/img/review/review-book-principles-for-success-8.png) - - `무엇`을 할지 결정해야 한다. - - 결정한 것을 실천할 `용기`가 필요하다. - -* 스스로의 원칙을 업그레이드 하는 가장 좋은 계기는 인생에서 넘어졌을 때이다. - 잘 해결해 나가다 보면 인생에 보석같은 보상을 가져오는 귀중한 퀴즈처럼 생각될 수도 있다. 이 책은 저자가 넘어졌을 때 마다 저자를 일으켜 세운 원칙들의 모음이다. - -* 진실이 무엇인지 알아야 한다. - 즉, 이를 위해 현실을 객관적으로 직시해야 한다. 무작정 현실이 지금과 달랐으면 좋겠다고 바라기만 하거나, 불평하는 일은 나에게 아무런 도움이 되지 않기 때문에 극사실주의자가 되어야한다. - -* 그렇다면 무엇이 성공적인 인생일까? - 내가 무엇을 원할지는 스스로만이 알고있고 그 길은 다양하기에 누가 정해줄 수 있는 문제는 아니지만 행복하고 건강할 수 있고 긍정적인 방향으로 발전할 수 있는 길 중 하나일 것이다. - -* 성공하기 위한 `5단계` 방법 - - 목표 - + 원하는 것이 무엇인지 정한 후 이를 전부 가질 수 없기에 우선순위를 결정해야 한다. - + 나를 잘 이해하고, 지금 가고 있는 길을 목표와 일치시켜야 한다. - - 문제 - + 절대 안일하게 넘기지 말고 해결하려는 시행착오 속에 스스로의 원칙을 만들어 나가야 한다. - - 진단 - + 어떤 약점때문에 문제에 부딪히게 되었는지 파악하고 해결책을 찾아야만 한다. - - 계획 - + 문제를 극복하기 위한 계획을 세워본다. - - 실행 - 위 5단계는 자연의 법칙일 뿐이다. 즉, 발전이란 적응하거나 도태되거나 둘 중 하나의 문제이다. - ![5단계](https://theorydb.github.io/assets/img/review/review-book-principles-for-success-11.png) - -* 언젠가 닥칠 위기(`인과관계`) - 1980년 대 미국에 대공황이 찾아올 것이라는 잘못된 판단으로 저자는 그동안 벌었던 모든 재산을 잃고 직원을 해고하며 괴로워하고 주저 않았다. 누가 되었든 인생에는 유사한 일이 발생할 수 있다. - 전재산, 건강, 부상, 경력 무엇을 잃게 될지 모른다. 하지만 언제나 최선의 방법은 있게 마련이다. 아직 찾지 못했을 뿐이다. 냉점함을 유지하고 방법을 찾기 위해 현실을 받아들이고 끈임없이 성찰해야 한다. - 고통은 세상이 어떻게 돌아가는지 성찰하게 하며 더 넓은 시야에서 사물을 볼 수 있게 한다. 모든 것에는 그런 일이 발생하게 하는 원인이 있다. 그 원인들이 세상을 영원히 움직이는 기계장치 처럼 작동하게 만든다. 우주의 탄생, 우리의 경제, 시장, 몸의 순환계 등이 그런 기계장치이다. - 우리는 하루같은 짧은 주기로 발생하는 인과관계는 잘 파악하고 있지만, 오랫동안 일어나지 않았거나 아직 일어난 적이 없는 일들은 간과하곤 한다. 하지만 그런 일들도 언젠가 발생할 것이다. - ![인과관계](https://theorydb.github.io/assets/img/review/review-book-principles-for-success-10.png) - -* 위험과 보상 - 하이리스크 하이리턴. 위험과 보상 사이에 적절한 균형을 유지하는 방법을 알아야 한다. 하지만 이를 방해하는 2가지가 있다. - - 자아 : 약점을 인정하는 것을 방해한다. `올바르고 싶어하는 욕망`이 진실을 알고 싶은 욕망보다 앞서기 때문이다. 약점과 실수에 대해 탐구하는 것을 본능적으로 공격이라고 받아들이는 것이다. 이는 더 나쁜 결정으로 우리를 유도하고 잠재력을 발휘하지 못하게 만든다. 내가 옳다는 즐거움보다 무엇이 진실인지 배우는 즐거움을 선택해야 한다. - - 사각지대 : 각자 `서로 다른 방식으로 사물을 본다.` 즉, 내가 보지 못하는 것들을 다른 이들은 볼 수 있기에 이들의 도움이 필요하다. 나와 다른 시각으로 세상을 볼 줄 아는 통찰력 있는 사람과 개방적인 사고로 답을 찾아야 하고 그 과정이 투명해야 한다. 결국 함께하는 사람들이 나보다 더 성공하기를 바라게 되는 수준에 이르면 그것이 곧 나의 성공이 된다. - -* 당신의 원칙을 위하여(인생의 `원호` 만들기) - 우리는 기계장치에 애착을 가지기에 가끔 이것이 우리를 슬프게 만든다. 하지만 더 높은 수준에서 내려다보면 진화가 어떻게 작동하는지 관찰하는 것은 아름다운 일이다. - 여기까지 알려준 저자의 원칙을 넘어 스스로의 원칙을 찾고, 기록하고, 발전시켜라. - ![원호1](https://theorydb.github.io/assets/img/review/review-book-principles-for-success-4.png) - ![원호2](https://theorydb.github.io/assets/img/review/review-book-principles-for-success-5.png) - ![원호3](https://theorydb.github.io/assets/img/review/review-book-principles-for-success-6.png) - ---- - -결국 인생의 위기엔 반드시 위기를 있게 만든 원인이 있다. 세상의 대부분의 시스템(기계장치)은 인관관계 속에서 돌아간다. - -우리는 그 원인이 발생한 진짜 이유를 현실적이고 냉철한 시각으로 찾아내야 한다. 하지만 올바르고 싶다는 욕망과 한정된 시각의 사각지대는 그 원인을 찾기 어렵게 만든다. 이에 대한 시행착오의 과정을 통해 답을 잘 찾을 수 있는 당신의 원칙이 필요하다. - -세상의 원리를 한차원 더 높은 곳에서 바라볼 수 있도록 그간의 `프레임`을 깨뜨려 준 점, 그리고 원리를 알아가기 위한 `원칙을 만들고 발전시키는 방법`을 전수해 준다는 점에서 난 이 책을 즐겨읽는다. - -워런 버핏과 점심 한 끼 하려면 54억을 줘야 하는데, 고작 내 점심 한 끼 가격의 책에서 성공을 이룬 이들의 지식과 통찰력, 삶의 정수를 얻을 수 있다는 것은 행복한 일인 것 같다. - -주위에 어지러운 현실을 정리하고 미래의 방향을 찾고 싶은 분이 있다면 이 책은 평생 남을 뜻깊은 선물이 될 것이다. - ---- - -* [책소개 - 성공 원칙 PRINCIPLES FOR SUCCESS](http://www.yes24.com/Product/Goods/93767725?OzSrank=2) - diff --git a/_posts/2020-11-28-review-book-quantum.markdown b/_posts/2020-11-28-review-book-quantum.markdown deleted file mode 100644 index b4d721a1b..000000000 --- a/_posts/2020-11-28-review-book-quantum.markdown +++ /dev/null @@ -1,94 +0,0 @@ ---- -layout: post -title: "[리뷰] 퀀텀(Quantum)" -subtitle: "만화로 배우는 양자역학과 상대성이론" -categories: review -tags: review book 양자역학 상대성이론 퀀텀 슈뢰딩거고양이 보어 아인슈타인 시간 공간 물리학 -comments: true -header-img: img/review/review-book-quantum-1.png ---- - -> `한빛비즈` 출판사의 `"퀀텀(로랑 셰페르 글그림/이정은 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-quantum-1.png) - ---- - -> "여러분은 결코 이해하지 못할 것이다. 왜냐하면 나 자신도 이해하지 못하기 때문이다. 이해하는 사람은 아무도 없다! 그러니까 여러분도 자연 자체가 터무니없는 존재라는 사실을 받아들이는 게 좋을 것이다." - 리차드 파인만, 양자역학 강의中 - -`양자 역학.` 현대 과학에서 가장 어려운 영역이자 이해하기로는 끝판왕급 난이도를 자랑한다. 아무도 몰라서 이걸 언급하면 똑똑해보이는 착시효과를 얻을 수 있다. - -언젠가 밀레니엄 7대 난제 중 하나인 `리만 가설`과 `양자 역학` 중 무엇이 더 어려울까 생각한 적이 있다. 물론 난 모르지만 "모든 자명하지 않은 영점의 실수부가 1/2라는 추측"은 그래도 무슨 소리인지 알아는 듣겠는데 양자 역학의 매커니즘은 아예 이해가 안된다. 상식과는 너무도 정반대이기 때문이다. - -개인적으로는 AI에 관심이 많아 양자컴퓨팅 때문에 양자역학을 본격적으로 접하게 되었다. Q-bit이 정보처리의 기본 단위로 활용되어 현존하는 컴퓨터에 비해 기하급수적인 컴퓨팅 파워를 갖는다. 덕분에 자연스레 양자적 성질에 관심을 가지게 되었다. - -또 양자 역학은 가끔 `과학인지 철학인지` 분간을 할 수 없다. 관찰이 일어나야 양자에서 우리 눈에 보이는 입자 형태로 결정지어진다는 개념은 생각해야 존재한다는 데카르트의 말과도 유사하기 때문이다. 책을 좋아하고, 생각을 좋아하고, 철학을 좋아하고, 창의력을 좋아한다면 양자 역학만큼 `무한의 가능성을 열어두고 생각의 폭을 넓히기에` 좋은 주제는 없다. - -문제는 양자를 알고 싶어도 잘 설명해주는 레퍼런스를 찾기 어렵다는 것인데 리차드 파인만도 이해 못한것을 누가 대중이 이해하기 쉽게 풀어줄 수 있단 말인가. - -여담으로 최근 `스티븐 와인버그의 제3의 생각`이 출간되었을 때 드디어 양자역학을 위한 레퍼런스가 나왔다는 생각에 기쁨을 감출 수가 없었다. 노벨상 수상자이자 현재 양자 역학에 가장 가까이 닿아있는 천재께서 딱딱한 논문이 아닌 에세이로 책을 내셨으니 분명 기대할 법 했다. - -하지만 착각이었다. 1년 가까운 시간동안 이해를 위해 시간차를 두면서 3번이나 읽었지만 리뷰 하나 제대로 쓰지 못하는 수준에 그쳤다. 과연 몇번을 더 읽으면 조금 아는 척은 할 수 있을지 스스로 되묻는 시간만 많아졌다. 확실히 기억하고 이해하는 구절이 하나 있는데 누군가가 와인버그에게 물리학이 뭐냐고 묻는다면 물리학에 대해 아는 것이 없다는 말만 해줄 수 있다는 겸손하고도 어찌보면 진실(?)인 회고뿐이다. - -비록 제3의 생각을 이해하는데는 어려움을 겪고 있지만 지금 리뷰하고자 하는 퀀텀을 만나 그 갈증을 상당부분 해소하게 되었다. 그동안 양자역학을 이해하고자 상당한 책을 읽어왔음을 자부하는 독자로써 감히 예상컨데 `현존하는 책 중 양자 역학을 가장 쉽게 풀어주는 책`이라고 말하고 싶다. - -이 책을 읽고나면 얻을 수 있는 것을 두마디로 요약하면 다음과 같다. -> (읽기 전) 양자 역학이 무엇인지 모른다. -> (읽은 후) 양자 역학의 "무엇을" 이해 못하는지 알게 된다. - -장난하냐?고 반문하시겠지만 양자역학이란게 그렇다. 스스로 나 좀 똑똑하다고 자부하는 사람 있으면 아무책이나 잡고 도전해 보라. 내가 그렇게 표현할 수 밖에 없음을 이해할 것이다. - -이제 본론으로 넘어가 본격적인 리뷰를 시작하겠다. 만화책인지라 리뷰하기 수월해서 다행이다. 본 도서의 스토리 중 가장 핵심이라고 생각하는 굵직한 컷을 하나씩 소개할텐데 이 책의 요약본이라 생각하시면 되겠다. 핵심 주제컷 사이에 이해되지 않는 논리적 유추나 비약을 느낀다면 그 내용들이 여기서 소개되지 않은 책의 나머지 내용이라고 생각하면 된다. - -과학에 호기심 많은 독자일지라도 그동안 알고 있던 지식이 얼마나 잘못되어있는지, 얼마나 적은 영역의 범위를 커버하고 있었던 것인지 놀라움을 금치 못할 것이다. - ---- - -* __간단한 문제__ - 먼저 간단한 문제를 내겠다. 빛의 속도는 약 30만km/s이다. 대충 달까지 1초만에 도달하는 속도라고 생각하면 그나마 좀 감이 올 것이다. 당신은 똑똑해서 다행히 초속 29만km의 우주선을 만드는데 성공했다. 이제 이 우주선으로 빛을 따라가보자. 3초 전 출발한 빛을 따라간 우주선과 그 빛의 거리(A)는 얼마이고, 지구에서 그 빛을 본 우리와 빛의 거리(B)는 얼마일까? 모르겠다면 A와 B가 같을지 다를지만 맞춰보자. - - 답은 `A=B`이다. 왜 이런 답이 나오는지는 아래 그림을 보자. 속도가 빠른 물체의 내부에서 시간은 천천히 흘러가기 때문이다. 빛의 속도가 기준과 무관하게 언제나 일정하다는 것은 특수 상대성 이론의 시작이다. - ![빛의속도](https://theorydb.github.io/assets/img/review/review-book-quantum-2.png) - -* __시공간__ - 위 그림에서 이해한 바와 같이 시간과 공간은 하나로 이루어져있다. 아래 그림이 이를 가장 직관적으로 설명해준다. - ![시공간](https://theorydb.github.io/assets/img/review/review-book-quantum-3.png) - - 중력은 `시공간의 뒤틀림`이다. 빛 또한 시공간의 뒤틀림을 통과하면서 착시를 유발하게 한다. 우리 눈에 관측되는 광원(별이나 혹은 빛을 내는 어떤 물질)의 위치는 실제 위치와 다른 이유 또한 시공간이 하나로 되어있기 때문이다. GPS 또한 우리의 위치를 관측할 때 이런 현상의 오차를 보정하게 되는데 시공간이 하나라는 증거이다. - -* __소립자__ - 원자안에는 핵이 있다. 핵안에는 양성자와 중성자가 존재한다. 둘은 쿼크로 이루어져있다. 쿼크는 글루온으로 서로 연결되어 있으며, 쿼크 사이의 빈공간에 입자들이 생겼다 사라지는데 이것이 에너지이며 질량을 만들게 된다. 즉, E=mc^2이다. 이걸 왜 알아야 하냐고? 양자가 뭔지, 광자가 뭔지, 둘이 만나면 어떤 현상이 나는지 이해하기 위함이며 양자 역학으로 들어서는 첫 관문이다. - ![시공간](https://theorydb.github.io/assets/img/review/review-book-quantum-4.png) - -* __슈뢰딩거의 고양이__ - 양자역학에 조금이라도 관심있는 독자라면 슈뢰딩거의 고양이가 무엇인지 정도는 충분히 들어봤을것이다. 하지만 대부분 상자속의 고양이가 죽었거나 살아있는 상태가 공존할 수 있다는 정도만 알지 실제 정확한 실험이 어떻게 이루어졌는지는 잘 모를 것이다. 내가 아는 한 그 과정을 자세히 소개한 책 또한 많지 않다. - ![슈뢰딩거의 고양이](https://theorydb.github.io/assets/img/review/review-book-quantum-5.png) - ![슈뢰딩거의 고양이2](https://theorydb.github.io/assets/img/review/review-book-quantum-6.png) - - 정확하게는 위 그림에서 보다시피 방사능, 계수기 등의 실험 장치가 존재하고 빛의 파동으로서의 성질과 같은 개념도 등장한다. - - > 그런데 실험이 끝난 뒤 고양이는 죽었을까? 살았을까? - - 그것은 상상에 맡긴다. 결과는 물론 이 책에 소개되어있다.(이 페이지보다 한참 더 뒤로 가면 그때 알려준다.) - -* __간섭무늬__ - 양자 역학에서 가장 중요한 간섭 무늬 실험에 대한 설명이다. - ![간섭무늬](https://theorydb.github.io/assets/img/review/review-book-quantum-7.png) - - 이 실험을 통해 아인슈타인이 왜 반은 맞고, 반은 틀렸는지 알게될 것이다. - - 나아가 미래의 행위가 과거를 변화시키는 마치 타임머신의 가능성에 대해 생각해 볼 계기를 얻게될 것이다. 조금 더 나아가 공간이라는게 무엇인지 더 생각해볼 수 있는 계기를 얻을 수 있다. 지금까지 시간만 어려웠지 공간은 별로 안 어려웠을텐데, `공간이 시간보다 어렵기 시작하면 적어도 일반인 기준에서 이제 양자 좀 안다고 할 수 있는 수준`이라고 봐도 될 것 같다. - ---- -이 책은 양자역학을 `일반인이 다가갈 수 있도록 쉽게 풀어준다`는 점에서 그 가치를 인정받을 만하다. 그냥 쉽게만 풀어주는 것이 아닌 시공간, 소립자의 세계, 빛의 속도와 상대성 이론 등 양자 역학을 이해하기 위한 `전제 지식`들을 먼저 쉽게 풀어주기에 그 가치는 더욱 빛이난다. - -책을 사랑하고 과학을 사랑하는 AI에 관심있는 프로그래머가 그동안 양자 역학을 다루는 여러 분야의 책을 읽어봤지만 이 보다 쉬운 책은 본 적이 없다. 더 놀라운 것은 스스로 꿰지 못한 지식은 제법 많이 알고 있다고 자부해 왔음에도 `의외로 몰랐던 지식이 상당수 있었다`는 점이다. - -쉬워보이는 만화책이 탄생하기까지 `3년`이 걸린 이유를 알겠다. 지식을 이해하고 대중의 눈에 맞춰 재 각색의 과정은 저자에게 쉽지 않은 여정이자 행복한 여정이 아니었을까 싶다. - -아직 알려지지 않은 세상의 진리로 다가가는 것에 조금이라도 흥미를 느끼는 사람이라면 이 책은 그 끝없는 항해를 위한 가장 쉬운 나침반이 될 것이다. 혹여 호기심이 전혀 없는 사람일지라도 주위의 소중한 사람 특히 살아갈 날이 많은 자녀, 어린이들에게만큼은 꼭 이 책을 읽도록 추천했으면 한다. `양자 역학은 우리에게 정말 많은 생각을 할 수 있도록` 이끌어주기 때문이다. - ---- - -* [책소개 - 퀀텀](http://www.yes24.com/Product/Goods/89308633) - diff --git a/_posts/2020-11-29-review-book-untact-economy-2021.markdown b/_posts/2020-11-29-review-book-untact-economy-2021.markdown deleted file mode 100644 index 63b2548a4..000000000 --- a/_posts/2020-11-29-review-book-untact-economy-2021.markdown +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: post -title: "[리뷰] 언택트 이코노미 2021" -subtitle: "비대면 경제 시대의 맞춤형 투자 전략" -categories: review -tags: review book 언택트 비대면 온라인 코로나 부동산 이코노미 디플레이션 주식 금리 경제 보호무역 -comments: true -header-img: img/review/review-book-untact-economy-2021-1.png ---- - -> `한빛비즈` 출판사의 `"언택트 이코노미 2021(최성근, 장두석, 문홍철, 권기정, 양석재 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-untact-economy-2021-1.png) - ---- -4차 산업혁명이 몰고온 순풍이 코로나-19를 만나 거대한 태풍이 되어버렸다. - -언택트, 포스트 코로나로 세상에는 많은 변화가 생겼고 그 중에서도 대부분 서민의 초미의 관심사는 단연 `먹고 사는 문제`에 대한 걱정일 것이다. - -세계 각국이 그동안 경기부양을 위해 퍼부은 유동성 규모는 무료 `12조 달러`. 게다가 오프라인 위주의 여행, 항공 등 사람과의 접촉이 필연인 대부분의 산업 분야는 쑥대밭이 되어 버렸기 때문이다. - -굳이 직접적으로 관련있는 직종이 아닐지라도 내 주변에도 오프라인 위주의 산업 종사자, 자영업자는 상대적으로 영향이 그나마 적은 서민들조차 부동산, 주식을 필두로 다음과 같은 질문이 늘어나기 시작했다. - ---- - -* 부동산, 앞으로도 승승장구 할까? 지속적인 양적 완화와 정부 주도의 거대 유동성은 좀처럼 사그러들지 않는 분위기 인데.. - -* 마이너스 금리 운운하는 요즘 같은 시절에도 디플레이션이 발생할까? 과연 인플레 vs 디플레 어느 방향으로 가게 될까? - -* 미국 vs 중국 분위기가 심상찮은 것은 알겠는데 그게 정확히 세계에 아니, 그보다 우리나라에 어떤 영향을 미치는 거야? 그렇게 호들갑 떨만한 이슈인건가? - -* 제조업과 자영업이 쇠퇴하고 있다는데 그럼 도대체 뭐해먹고 살아야 하나? - -* 앞으로 어떤 주식 종목이 오를까? - ---- - -이 책은 `위 질문들에 대한 해답을 담은 책`이다. 주식 시장의 위, 아래를 함부로 단정짓는 예언은 없다. 하지만 상방일지 하방일지에 대한 가능성이 어느정도 되고 그렇게 판단하는 이유를 팩트 위주로 설명하고 있다. - -사실 우리에게 필요한 것은 위, 아래를 정해주는 것이 아닌 `어떤 매커니즘으로 위, 아래가 발생하는지 그 원리를 볼줄 아는 눈`을 키우는 것이기에 그런 측면에서 본 도서가 개인적으로 매우 가치있는 책이라 평하고 싶다. - -개인적으로는 위의 질문들 중 상위 2가지 질문이 가장 궁금했다. 특히, `인플레 vs 디플레`에 대한 지식은 언제고 명확히 정리해보고 싶었는데 그간 읽었던 어떤 경제서보다도 명확한 개념을 정리할 수 있어 만족스러웠다. - -읽는 과정에서 `금리, 채권, 장단기 금리 정책, 인플레이션, 디플레이션, 기축 통화국이 아닌 국가들의 마이너스 금리의 의미, 국가 부채가 가져오는 변화, 미 연준 통화정책의 영향력, 원달러 관계` 등 그동안 너무 궁금했는데 이런 거시 경제지표를 코로나 위주의 시선으로 한 눈에 정리할 수 있는 기회를 주었다. - -이런 책이 정말 필요해서 그동안 다양한 책을 읽었는데 부분 부분만 놓고 보면 상세하게 다룬 책은 많아도 전체를 아우르는 책은 정말 찾기 어려웠다. - -이런 책을 찾는 과정에서 미국, 독일의 세계적 경제학자가 쓴 책도 읽었지만 세계 거시 경제 흐름에 대한 안목, 자본주의 체제의 맹점 등을 파악할 수 있어 뜻 깊었으나 그것들이 `한국 경제에 미치는 영향`을 알길이 없어 답답하기도 했다. - -이 책이 다루는 세계 경제, 국내 경제, 금리와 환율, 주식, 부동산 총 5개 섹터 중 개인적으로 가장 마음에 드는 파트가 금리와 환율 파트로 위에서 언급한 거시 경제지표간의 관계를 파악할 수 있었기 때문이다. 이 리뷰를 기회로 배운 것들을 정리해보고 싶었으나 분량이 너무 거대해져 별도 포스팅으로 블로그에 정리해 볼 예정이다. - -또 하나 인상적이었던 파트는 부동산 편이다. 유례없는 미친 상승을 보이는 부동산 시장의 상승세가 앞으로도 계속 지속될지 코로나의 여파로 흔들림은 없을지 궁금한 점이 많았는데 모든 방향이 열려있음을 상승 요인, 하락 요인별로 깔끔하게 정리하고 있어 앞으로 어떤 지표와 현상을 눈여겨 보고 있어야 할지 판단하는 방법을 얻게 되었다. - -특히, 그동안 유동성, 유동성.. 말만 많이 들었지 이게 어떤 지표를 확인해야 알 수 있는건지 무슨 의미인지 궁금했었다. 그저 정부에서 돈을 많이 푼다, 양적 완화시대다 등으로만 알고 있었지 중앙은행의 금리 발표가 구체적으로 유동성에 어떤 과정으로 영향을 미치는지 궁금했었는데 그 상세한 매커니즘은 물론 `요구불 예금 잔액` 추이나 `M1, M2에 따른 통화 및 유동성 지표` 등의 지표도 새롭게 알게 되었다. - -그 외 전문가들이 눈여겨 보는 정보, 지표, 자료들이 무엇인지 각종 유용한 지식을 투명하게 전달하고 있어 경제를 바라보는 안목의 수준이 높아지는 계기가 되었다. - -읽다가 잘 이해되지 않는 부분은 경제학과 출신의 아내에게 조언을 얻어가며 읽었는데 재미있는 것은 오히려 아내가 알려주다 재미를 느껴 나보다도 더 많이 읽은 듯 하다. 아내의 말인 즉슨 4년동안 학부에서 배웠던 것 보다 이 책 한 권이 사는데 더 필요한 가치들을 담고 있다고 극찬했다. - -아내의 말이 맞다면 이 책만 제대로 공부하고 이해할 수 있으면 경제면 신문 기사 중 못 읽는 것이 거의 없을 것이고 경제를 바라보는 안목이 몇 차원은 성장하는 기회이다. - -앞서 언급한 인상적인 부분 외에도 `미국 대선과 관련된 동향, 4차 산업혁명과 국내 경제의 추후 변화 예측, 동학 개미들의 저항으로 출발한 국내외 주식 시장 및 관심 섹터` 등 흥미로운 요소들이 담겨있다. - -그 어느 때보다 희망적인 새해 메시지를 전하기 어려운 2020년이 저물어간다. 한해의 시작과 끝이 온통 코로나인데 그간 1년 간 경제적으로 어떤 변화가 있었는지 국내 실정에 맞게 잘 정리된 책을 읽을 수 있어서 내년을 살아가는데 든든한 느낌이 든다. - -`경제에 대해 잘 모르는 일반 서민들이 반드시 읽어야 할 필독서`라 생각되기에 이 책을 꼭 추천하고 싶다. 특히, 부동산 및 직업과 직접적인 관련이 있는 분들께는 이 책에서 다루는 내용이 큰 도움이 되지 않을까 예상해보며 리뷰를 마친다. - ---- - -* [책소개 - 언택트 이코노미 2021](http://www.yes24.com/Product/Goods/95348342?OzSrank=2) - diff --git a/_posts/2020-11-30-review-book-big-data-engineer-certificate.markdown b/_posts/2020-11-30-review-book-big-data-engineer-certificate.markdown deleted file mode 100644 index eaadc0760..000000000 --- a/_posts/2020-11-30-review-book-big-data-engineer-certificate.markdown +++ /dev/null @@ -1,150 +0,0 @@ ---- -layout: post -title: "[리뷰] 이지패스 2021 빅데이터분석기사 필기" -subtitle: "Big Data Analysis Engineer Certificate" -categories: review -tags: review book 빅데이터분석기사 2021 필기 수험서 DL ML 통계 분석 -comments: true -header-img: img/review/review-book-big-data-engineer-certificate-1.png ---- - -> `위키북스` 출판사의 `"이지패스 2021 빅데이터분석기사 필기(전용문, 정다혜, 임예은, 오경서 공저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-big-data-engineer-certificate-1.png) - ---- - -드디어 2020년 12월 19일 제1회 빅데이터분석기사 1차 시험이 시행된다. 4차 산업혁명과 알파고의 여파로 AI에 대한 열풍이 일고있는 현 시점에 AI 인재인지를 판가름하는 국가 기사 시험이기 때문에 AI 인재 여부를 얼마나 잘 가려내느냐에 대한 신뢰도를 떠나 AI 분야에 종사하고 싶은 이라면 기본으로 갖춰야 할 자격증으로 자리매김될 것 같다. - -문제는 빅데이터분석기사 시험이 올해 처음으로 치뤄지기 때문에 어떤 교재로 학습을 해야하는지 공부는 어떤 분야를 어떤 수준으로 학습해야 하는지 감을 잡기가 어렵다는 것이다. - -그나마 본 시험의 시행 기관인 [한국데이터산업진흥원](https://www.dataq.or.kr/)에서 본 시험과 유사한 ADP(데이터분석전문가) 자격 시험을 몇년 간 운영해왔기에 이와 유사한 학습 범위와 출제 기준이 적용될 것이라는 추측이 가능하다. - -처음엔 ADP를 준비하고 싶은 마음이 있어 각종 응시후기를 읽고 복원 문제 및 교재를 학습해본 적이 있는데 취득 후 효용성이 떨어지고, 특히 시험 진행에 대한 진흥원 측의 운영 미숙 관련 각종 후기를 본 이후 응시할 마음을 접었다. - -대신 빅데이터분석기사는 어쨌든 국가 공인 기사 시험이기 때문에 인재 변별력과 무관하게 형식적일지라도 반드시 취득해야 할테니 ADP는 접고 빅데이터분석기사를 치르기로 마음 먹었다. - -하지만 빅데이터분석기사가 동 진흥원에서 치뤄진다는 확정 공고문을 본 이후로 마땅한 교재가 없어 그동안 ADP 공식 수험서를 구매하여 읽었다. 아마도 진행이 미숙한 진흥원 측에서 빅데이터분석기사를 위한 별도의 체계적인 준비가 잘 진행되고 있다고 보기 어려워 ADP ~ ADSP 중간 수준의 난이도로 그동안의 문제 은행을 활용하지 않을까 예상해본다. - -진흥원에서 발간된 공식 수험서는 모르는 내용은 까다롭게 저술되어 가독성이 떨어지고, 아는 내용 조차 조악하게 기술되고 완급 조절이 없어 읽어야 할 내용은 많은데 핵심을 정리하기 어려운 구성으로 되어있다. 그럼에도 빅데이터분석기사 대비를 위한 마땅한 교재가 없어 최근 1년간 가벼운 마음으로 학습해왔다. - -12월이 시험이니 3개월 전이면 슬슬 빅데이터분석기사에 대한 수험서가 나올거라 생각하여 서점을 둘러보기 시작했는데 현시점(2020년 11월말)까지 5종의 책이 등장했다. -* [관련링크](http://www.yes24.com/SearchCorner/Search?domain=BOOK&query=%uBE45%uB370%uC774%uD130%uBD84%uC11D%uAE30%uC0AC) - -그 중 2권은 제대로 읽었고 나머지는 전부 읽어본 것은 아니지만 서점에서 꽤 오랜시간 들춰본 후의 소감을 요약하면 다음과 같다. - ---- - -* __2020 빅데이터분석기사 필기 한권으로 끝내기(시x고시)__ - 가장 먼저 간행된 수험서라는 점에 의의를 둘 수 있겠으나, 구성이 조악하다. 일단 `목차 구성부터 출제 기준 목록과 불일치` 하는 경우가 많다. 그러다 보니 핵심을 파악하기 어렵고 메타지식을 파악하기 어려었다. - - 물론 일부 분석기법 파트는 실전에 유용할만한 지식이 담겨있어 실무에 도움이 될 것 같은 부분도 보였으나, 수험서의 기준으로는 좋은 내용이라고 보기 어려웠다. - - 연습문제가 많다는 것은 나름의 장점이지만 아직 1회도 치르지 않은 시험에 많은 문제로 승부수를 띄운 것은 위험한 선택이 될 수도 있다. 오타도 흔하게 발견되어 솔직히 가장 추천하고 싶지 않은 책이다. - -* __2021 최적합 빅데이터분석기사 필기(성x당)__ - 각 교재의 `저자분들 중 가장 뛰어난 역량을 지닌 분`들이 쓴 책이라는 점이 장점이다. 물론 저자의 수준과 전달력은 별개의 문제이지만 일단 저자의 약력에서 신뢰가 갔다. 더불어 앞서 소개한 책과 달리 진흥원에 공고된 출제범위와도 부합하여 정리하기 편해보였다. - - 다만, 대학 강의노트 느낌의 `개조식` 서술 덕분에 요약 정리된 느낌인지라 어느 정도의 지식이 있는 이들에게는 깔끔한 느낌이 들 것 같긴한데 초보 수험생들에게는 이해하기 어려운 장벽으로 작용할 것 같다는 느낌이 들었다. `가독성` 측면에서 매끄럽게 읽히지 않는 부분도 많다. - - 더불어 `단원별 연습 문제가 없으니 수험서로는 약간 부족한` 느낌이었다. - -* __2021 수제비 빅데이터분석기사 필기(건x원)__ - 이 책은 직접 구매해서 2회독 중이다. 좋은 책들을 기다리다가 더 늦으면 안될 것 같아 결국 10월에 구매했는데 심도있는 부분의 설명이 부족한 것을 제외하면 대체로 무난하다. 특히 `초보자들에게 추천하고 싶은 책`이다. - - 일단 `쉽게 읽힌다`는 점이 가장 장점인 책이다. 전체적인 구성이나 두음 비법 등의 독자들을 위한 장치들을 보며 수험생이 가급적 쉽고 편하게 공부할 수 있도록 친절한 배려가 돋보인다. 표와 그래프 위주로 핵심만 전달하고 있어 무작정 암기모드로 돌입하기에 적합한 구성이다. 대신 추후 실전에도 도움될만한 `깊이있는 이해를 위해서는 부족한 느낌`이다. - - 예전부터 머신러닝 진영에 컴공 vs 통계학의 대립각이 있었는데 머신러닝이 융합 학문의 성격이 강해 저자가 어느 출신이냐에 따라 한 쪽이 부실하게 마련이다. - - 나도 팔이 안으로 굽는 컴공 출신이지만 내 판단이 틀리지 않았다면 수제비 책 중 난이도가 어렵거나 통계에 해당되는 부분은 내용 `오류도 제법 있고 설명이 부실`하다. 저자분들이 IT 기술사 분들인지라 IT쪽은 튼튼한데 통계학은 약간 부실하다는 생각이 들었다. - - 만약 빅데이터분석기사의 난이도가 매우 쉽게 출제된다면 본 도서의 저자의 의도가 적중했다고 볼 수 있을듯 하나, 약간 난이도가 높아진다면 이 수험서로는 부족할 듯 하다. - -* __2021 이기적 빅데이터분석기사 필기 기본서(영x닷컴)__ - 나온지 며칠 안된 책인지라 아직 서점에서 확인을 못했다. 기회가 되면 읽고 평해보겠다. - -* __이지패스 2021 빅데이터분석기사 필기(위x북스)__ - 바로 이 책이 본 포스팅에서 평해보려는 책이다. 이미 ADP 공식 교재를 학습해 왔던 터라 수제비 책만으로는 난이도 측면에서 약간 부족한 느낌이 들었기에 다른 책도 추가로 한 권 더 읽으며 공부하고 싶었는데 마침 기회가 닿아 이 책을 읽을 기회가 생겼다. - - 이미 ADP 교재와 수제비 책으로 공부를 해왔기에 이 책을 빠르게 1회독 할 수 있었다. 읽으며 느꼈던 점을 장단점 위주로 정리해보려 한다. - - + __장점__ - - __제대로 알고 있는 저자가 기술한 느낌이 든다.__ - 어떤 책을 읽다보면 정말 저자가 알고 작성한 글인지 의심이 들때가 있다. 물론 면면이 훌륭한 약력의 저자분들이기에 저자의 수준을 의심하긴 어렵겠지만 그래도 도통 무슨 소리인지 이해안되게 저술되는 경우가 있다. - - 이 책을 읽으며 놀랐던 것은 짧은 글임에도 말하고자하는 `핵심`이 잘 전달되고, 도출까지의 과정이 상세히 녹아있어 `이론을 충분히 아는 저자가 실무에서 겪었던 경험을 녹여 저술한` 느낌이 들었다는 점이다. - - 대표적으로 `로지스틱 회귀나 p-value` 설명 파트를 예를 들 수 있겠다. 이 부분들은 어떤 책을 읽어도 어렵고 모호한 용어가 난잡하게 등장하므로 한번에 이해하기 결코 쉽지 않다. 덕분에 `빅데이터분석기사 책을 고를 때 좋은 기준`이 되었는데 이 책의 로지스틱 회귀 부분을 읽다보면 수식이 없어도 수식이 보이고 설명은 짧아도 핵심은 놓치지 않는 느낌이 들었다. - - 설명하기 어려운 부분을 잘 전달하고 있기에 일반적인 부분에 대한 가독성은 의심할 여지 없이 매끄러웠다. 전문 지식을 정확하게 이해하는 저자가 훌륭한 전달력을 갖고 저술했다고 볼 수 있다. - - - __TIP 박스가 적중율을 예측하고, 핵심을 완급조절하는 느낌이다.__ - 정신없이 학습하다보면 강약에 대한 완급 조절을 실패할 때가 있다. 물론 일반 실무서라면 모두 필요한 내용이기에 언제고 활용되니 가치가 있겠지만 수험서는 제한된 시간 내 최대 점수를 획득해야 하는 입장이기에 완급 조절이 중요하다고 생각한다. - - 이 책에는 `TIP박스`가 등장하는데 그 부분은 중요하다는 의미이다. 더불어 문제가 대충 어떤 식으로 `나올 가능성`이 있다고 알려준다. 아마도 내 예상이 맞다면 그동안 `ADP 필기 시험 문제로 등장한 부분들마다` 해당 TIP박스가 등장하는 것 같다. - - 따라서 시간이 없는 분들은 TIP박스가 표시된 부분부터 읽는 것도 효율적인 방법이 될 수 있을 것 같다. - - - __연습문제의 질이 좋다. 확실히 학습하고 있는지 체크하는 계기__ - ADP 실전문제집을 학습하며 조악한 암기식 문제의 나열에 실망한 적이 있었다. 이 책은 이런 단순 암기식 문제의 비율이 적은 편이다. - - 예를 들면 `SOM`(자기조직화지도)에 대한 문제가 있는데 군집, 차원축소에 모두 사용될 수 있음을 확실히 알게 해준다. - - ADP 문제들을 보면 난이도가 높은 경우 두 영역의 기능을 포괄하는 기능들이 단골로 나오곤 하던데 이런 부분들을 놓치지 않게 구성한 점이 좋았다. - - 또 하나 과적합을 예로 든다면 `과소적합을 해결`하기 위해 `L1, L2 규제`를 완화하면 `모델이 복잡`해진다는 일련의 매커니즘도 연습 문제를 풀며 정확하게 익힐 수 있게 해준다. - - 더불어 라쏘(L1) norm을 구하는 등의 `수학적 계산이 동반되는 문제도 자주 등장`하기에 핵심 개념을 명확히 이해하고 있는지 수험생들의 수준을 잘 평가하는 느낌이 든다. - - - __가독성이 좋다.__ - 전체적으로 읽기 편한 줄글로 구성되어있다. 소설 책 읽어나가듯 술술 읽어나가기만 하면 된다. 너무 개조식 위주로 작성되어있으면 핵심은 눈에 명확히 들어올 지라도 끝없는 암기와의 싸움이 되기에 쉽게 지칠 수 있다. 이해를 동반한 암기만큼 암기를 쉽게 해주는 것도 없기에 그런 점에서 읽기 쉬운 책이라는 생각이 들었다. - - - __ADP와 범용성__ - ADP 공식 수험서로 빅데이터분석기사를 준비한 수험생 입장으로써 `ADP를 단권화한 느낌`이 든다. ADP 공식 교재는 기본서와 실전문제집으로 나뉘는데 공식 교재는 내용을 이해하기 어려운 부분이 많다. 대충 암기하고 넘어갈 수는 있으나 정확히 이해하며 넘기기 어려운 파트가 부분 부분 존재한다. - - 그런 측면에서 `ADP에서 이해하기 어려운 부분을 잘 풀어쓴 느낌`이고 잘 이해되는 부분은 `단권화`하여 내용을 압축한 구성이 돋보인다. 위에서 언급했듯 `강약 완급 조절`을 위해 중요한 부분은 TIP 박스로 강조하며 실전문제집에 나오는 부분들 역시 TIP 박스로 강조되어있다. - - 나아가 범용성이 뛰어난 것 같다. 특정 부분에 대한 집중적인 기술이나 설명 등의 편향 없이 고루 고루 적절한 분량으로 강조하고 있어 빅데이터분석기사 뿐만 아니라 다른 시험 혹은 나아가 `실무에 있어서도 도움되는 지식`들이 많다. - - 딥러닝 위주로 연구, 학습하던 나로써는 부족한 부분을 이 수험서로 채울 수 있어 수험생의 입장이 아닌 `실무자 입장으로도 가치있는 책`이라는 생각이 들었다. - - + __단점__ - - __핵심내용요약__ - 본문의 내용이 훌륭한 편인데 반해 핵심내용요약 파트는 약간 부실한 느낌이다. - - 예를 들면 352p에 분석 모형의 종류가 정리되어있는데 로지스틱, DBSCAN 등 여러 모형이 나오지만 키워드만 다루고 있어 아쉬운 느낌이다. 알고리즘 별로 간단한 기능이 언급되고 시험에 자주 출제될 만한 어느 알고리즘이 비계층인지 등의 핵심포인트가 언급되어있다면 좋았겠다는 생각이든다. 더불어 SOM 같은 경우는 차원축소 기능으로도 활용될 수 있으나 군집 모형에서만 다루고 있어 이런 부분들이 약간 아쉽다. - - - __본문 - 핵심 - 연습문제의 범위 불일치__ - 가장 중요하다고 생각하는 3과목 빅데이터 모델링 파트를 예로 들면, 준지도 강화학습에 대한 설명이 본문에 존재하지 않는데 핵심내용요약에는 언급하고 있다. 이처럼 본문과 핵심내용이 상호 불일치 하는 경우가 조금씩 보인다. - - 더불어 수제비 책의 경우 본문 자체가 핵심요약 같은 느낌이다. 물론 그로인해 상세한 본문 서술의 느낌이 없어 수제비 또한 이런 부분이 단점이라 하겠으나, 대신 암기식 위주의 효율성 측면에서는 손꼽힐 정도로 정리가 잘 되어있다. - - 반면 본 도서의 경우 핵심요약이 본문의 굵직한 부분만 다루고 있어 핵심요약만으로 시험을 준비하기에는 부족하다는 생각이 들었다. 대신 본문의 내용이 튼튼하고 연습문제의 질이 좋기 때문에 여기서 배운 핵심내용요약 파트에 다루지 않는 내용들을 `단권화 한다면 든든한 무기`가 될 수 있을 것 같다. - - - __시험전략 등 부가적인 정보에 대한 부재__ - 전반적으로 빅데이터분석기사 학습에 필요한 내용은 잘 정리되어있으나 부수적인 시험장 전략이나 본 도서가 적중률을 위해 어떤 전략을 취했는지 가장 효율적으로 학습하기 위해선 어떻게 활용해야하는지 등의 전략이 추가되면 좋겠다. - - 혹시나 싶어 네이버 카페를 찾아보니 [[비전공자를 위한 빅분기 D-30] 한달 남은 빅분기 필기 어떻게 공부해야 할까?](https://cafe.naver.com/sqlpd/15297)와 같은 읽어볼 만한 전략글들이 있었다. - - 왜 이런 내용들이 책에는 실리지 않았는지 의문이지만 아마 급하게 출간되어서 그런것이 아닐까라는 생각에 개정판에는 이런 소소한 팁들도 반영되었으면 한다. - - - __실습코드의 부재__ - 필기 과목이기 때문에 이 부분은 그리 중요한 부분은 아닌 것 같다. 예를 들면 R이나 Python 같은 언어로 실습한 결과를 함께 보여준다면 이해에 많은 도움이 되었을 것 같다. - - 하지만 그만큼 지면의 분량도 늘어날 것 같고 또 핵심을 쉽게 파악하기 어렵게끔 난잡한 느낌이 들 수 있겠다는 생각이 들어 나름의 트레이드 오프가 있을 듯 하다. - ---- - -결론적으로 최근에 출시되어 정보가 없는 영x닷컴 책을 제외한다면, 위에서 `언급한 4권의 책 중에서 가장 적합한 책`이라는 생각이 든다. 위에서 언급한 대로 장점이 상당히 많은 반면, 단점은 대세에 큰 지장이 없는 미미한 정도에 불과하기 때문이다. - -개인적으로 학습하던 수제비 책 수준이 너무 초보자 중심인지라 난이도 높은 부분을 잘 정리한 책이 필요했는데 이 책이 충분히 어려운 부분들을 이해하기 쉽게 깔끔하게 정리한 느낌이다. - -우연찮게 네이버 카페 이벤트에 참여하게 되어 읽게 된 책이지만 과대 칭찬, 과장 혹은 비하 등 편향없이 리뷰를 작성하고자 노력했다. 어차피 내가 의도를 가지고 허위 진술을 한들 어느 정도 학습하신 분들은 오프라인 서점에서 책의 일부만 펼쳐봐도 내가 위에서 한 말들이 사실인지 아닌지 금방 검증하실 수 있을 것이다. - -수험생들 모두 어떤 책이 제일 좋은지 관심사인지라 이런 비교글을 올리고 싶었는데 귀찮아서 안올리다가 이벤트 참여를 계기로 정리해본다. - - -> 이 글은 "빅데이터분석기사 필기" 수험서 서평단으로 선정되어 작성하였습니다. - -* [책소개 - 이지패스 2021 빅데이터분석기사 필기](http://www.yes24.com/Product/Goods/95542092?OzSrank=3) - diff --git a/_posts/2020-12-02-review-book-class-rich.markdown b/_posts/2020-12-02-review-book-class-rich.markdown deleted file mode 100644 index 58ca536fc..000000000 --- a/_posts/2020-12-02-review-book-class-rich.markdown +++ /dev/null @@ -1,133 +0,0 @@ ---- -layout: post -title: "[리뷰] 출근길 부자 수업: 트렌드 편" -subtitle: "classes for the rich on their way to work" -categories: review -tags: review book 부자수업 경제 언택트 AI 블록체인 기본소득 미중관계 한국경제 코로나 -comments: true -header-img: img/review/2020-12-02-review-book-class-rich-1.png ---- - -> `한빛비즈` 출판사의 `"출근길 부자 수업: 트렌드 편(김연하, 김정곤, 노희영, 민병권, 성필규 공저 외 4명)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-12-02-review-book-class-rich-1.png) - ---- -> "클라스"가 다르게 돈을 벌었던 사람들. 도대체 어떻게 돈을 벌었을까? - -이 책은 이 질문에 대한 대답이자, 이런 유형의 질문을 하고 답을 낼줄 아는 인사이트와 안목을 키워준다. - -세계 부의 절반을 상위 1%가 가지고 있는 현 시점에 누군가는 세상 돈의 절반을 휩쓸고 있는데 반해 나머지 99%는 나머지 절반가지고 희희낙낙하며 살아야 하는걸까? - -결국 `1%만이 알고 있는 어떤 답`이 있다고 단정지을 수 있다. 사람 머리와 재능이 거기서 거기인데 우리가 모르는 그들만이 알고있는 어떤 정보가 있는 것이다. - -이제 위 질문에 답을 해보자. 우리는 보통 돈을 버는 방법을 떠올리면 취업, 주식, 부동산 정도가 떠오른다. 그게 일반인 수준에서의 뻔한 답이다. 그 이외의 돈버는 법을 찾으려면 역사를 돌이켜보고 차원이 다르게 돈을 번 사람들이 어떻게 돈을 벌었는지 살펴봐야 할 것이다. - -* __1단계__ - - 우리가 뻔히 아는 답 월급, 주식, 부동산이다. - -* __2단계__ - - 트렌드를 읽을 줄 아는 사람이다. 코로나 직전 몇년 간 공유경제가 핫플레이스였다는 사실은 누구나 알 것이다. 우버, 에어비엔비로 대표되는 회사들이 구닥다리 공유경제 모델로 회귀하였고 그간 사람들이 누리지 못했던 불만에서 비롯된 고객의 니즈를 날카롭게 파고들었다. - - 비트코인이나 양적완화의 지속과 같은 흐름을 읽을줄 아는 사람도 돈을 벌었다. 최근 AI의 급부상에 힘입어 돈을 버는 사람도 많다. 이런 경제적인 흐름이나 무한으로 샘솟는 양적완화 정책의 기조에서 빈틈을 찾은 사람도 있다. - - 대신 `트렌드를 읽고 정책의 빈틈과 맹점을 찾을 줄 아는 눈`이 필요하다. 기본적인 수준의 경제 상식과 해석능력은 기본이다. - -* __3단계__ - - 유럽의 전설적인 투자자 앙드레 코스톨라니는 1989년 소련과 서방의 화해에서 기회를 포착했다. 소련이 경제 수준을 끌어올리기 위해 서방 자본의 투입이 절대적으로 필요할 것으로 보았고 과거 `차르시대의 빚을 어떤식으로든 정리할 것이라 예견`하여 이 시대의 채권을 대거 사들였고 6,000%의 수익률을 올렸다. - - 애덤스미스의 국부론으로 수요와 공급 법칙이 전 세계에 널리퍼지고 이 이론으로 `세계 경제 패러다임`이 바뀌었다. 이는 신흥 자본사업가들에게 뛰어난 대항 논리이자 사상 체계로 대변되었고 그 결과 중상주의가 몰락했다. - 세상의 질서를 보는 눈이 있었다면 당시 신흥 자본사업가의 반열에 서서 순조롭게 부를 축적했을테지만, 끓는 물 안의 개구리 처럼 현재만 보는 사람들은 중상주의에 젖어 막대한 손실을 입었을 것이다. - -위에서 정리한 3단계는 이 책에서 직접적으로 언급하는 대목은 아니다. 내가 이 책을 읽고 얻은 인사이트를 통해 나름의 방식으로 질서를 부여한 것 뿐이며, 단계가 높아질수록 돈을 잘 버는 방법이라는 말 또한 아니다. 그저 현실에 젖어 새로운 것을 보지 못하는 프레임을 얼마나 창의적으로 걷어내었는지에 따라 나름의 등급을 매긴 것임에 유의하길 바란다. - -어쨌든 위와 같은 어나더 레벨로 부를 축적하기 위해서는 기본적인 경제에 대한 학습이 선행되어야 하며 `현 시류를 읽고 새로운 프레임을 적용하는 안목`이 필요하다. 그리고 이 책이 이런 방법을 익힐 수 있게 도와준다는 점에서 의의를 부여할 수 있겠다. - -이 책은 크게 4개의 파트로 구성된다. 각각의 파트를 전부 요약하는 것은 리뷰 취지에 맞지 않아 각 파트를 읽으며 기억에 남을 정도로 인상적이었던 지식이나 듣도보도 못한 놀라운 정보를 중심으로 각 파트를 간추려 본다. - ---- - -* __파트1. 언택트와 최신기술__ - - 원격근무, 원격의료, 원격교육, 온라인쇼핑, 무인의 일상화 - - IBM의 경우 재택 근무 시행으로 사무실 건물 매각을 통해 약 20억 달러의 이득을 냈다. - - 영상회의 대표 솔루션 - + 구글 지스위트, MS 팀즈, 애플 아이워크, 시스코 웹엑스, 줌 줌클라우드 미팅 등 - - 코로나 이후 아마존, 월마트 등 온라인 주문 151%, 매출은 210% 증가 - - `도심항공택시(UAM)` : 김포공항에서 잠실까지 12분이면 날아서 도착할 수 있는 UAM이 2029년까지 사용화가 계획되어있으며 수소차의 등장으로 실현 가능성이 높아졌다. 일반인들이 자신의 차를 수소차로 바꿀까 고민하는 반면 어나더 레벨의 사람들은 수소의 실용화로 다른 것을 볼 수 있는 안목이 있을것이다. - - 마이크로모빌리티 : 2~3km 떨어진 근거리 이동 기술. 전동킥보드나 공유경제 기반의 자전거 등 - - `캡슐트레인` : 진공 튜브 터널에서 음속의 빠르기로 전국을 15 ~ 20분안에 주파할 수 있는데 발표되지는 않았지만 GTX에 도입될 수도 있지 않을까 상상해보았다. 혹은 GTX는 아니더라도 전국 주요 교통망에 도입될 가능성이 커보인다. 이런 것도 모른채 부동산 투자를 그저 지금까지의 상식으로 접근하는 것은 위험한 일이 아닐까? - - 뉴스페이스 시대 : 달에 이어 화성이 본격적인 무대가 되었다. 스페이스X와 같은 민간기업이 참여하여 발사체 회수 기술을 활용하는 것도 인상적이다. 이 부분에 대한 추가 정보는 별도로 작성한 리뷰 [호모 스페이스쿠스](https://theorydb.github.io/review/2020/07/18/review-book-homo-spacecus/)에서 자세히 확인할 수 있다. - - 확장현실 : 증강, 가상, 혼합 현실을 아우르는 말. 구글글래스를 비롯 질감을 느낄 수 있는 햅틱 기술이 대표적이다. - - `뇌-컴퓨터 인터페이스(BCI)`나 비접촉을 위한 견마로봇 스팟 등의 최신 기술들이 본 도서에 잘 정리되어있는데 추가로 [세계미래보고서 2021 (포스트 코로나 특별판)](https://theorydb.github.io/review/2020/10/20/review-book-world-future-report-2021/)의 리뷰에 보다 자세한 기술들이 정리되어있다. - - 그 외 긱이코노미, 크라우드 펀딩 등의 공유경제도 소개되어 있으며 돈이 되는 트렌드를 읽을 수 있는 눈을 파트 1을 통해 키울 수 있다. - ---- - -* __파트2. 경제구조와 AI, 블록체인__ - - 생계형 절도범에게 끔찍한 처벌대신 약간의 생계수단을 제공하는 것이 나을 수 있다는 토머스 모어의 유토피아에서 시작된 기본소득이 이슈가 되고 있다. - - `스위스의 기본소득 헌법개정안 국민투표` 실시, 우리나라의 `경기도 청년기본소득 정책` 등 기본소득 모델의 실효성 측정을 위한 각종 실험이 이뤄지고 있다. 포스트 코로나 이후 긱 이코노미 등 시대의 변화를 고려할 때 이전과는 달리 심각하게 눈여겨 볼 부분이다. - - 딥바흐 AI가 작곡해 낸 곡들은 사람들로 하여금 실제 바흐가 작곡한 곡과 구별하지 못하게 했다. - + 화성법과 대위법 : 어떤 음끼리 조화를 이루게 해야 하는지, 시간순으로 어떻게 음과 조를 배열해야 하는지 바흐의 다작을 가능하게 했던 일종의 기교이자 알고리즘. - - AI를 테마로 한 상장지수펀드 : IRBO, AIQ 등 에서 검색 가능 - - 블록체인과 토큰이코노미의 등장 - ---- - -* __파트3. 세계경제와 미중관계__ - - 8강에서는 필수 경제상식을 함축해서 얻을 수 있다. - - 돈이 늘어나는 속도(인플레이션)에 따라 하이퍼인프레이션, 디플레이션, 스태크플레이션으로 분류 - - 금리가 하락하면 주가가 상승한다. (이자가 싸서 위험자산에 눈을 돌림) - - 금리가 하락하면 환율이 오른다. (이자를 더 많이 주는 국가로 외화가 이동함) - - 기준금리 인하 -> 콜금리 인하 -> 예금.대출금리 인하 -> 장기 시중금리 인하 - - 유가 : 경기가 좋을것으로 예상되면 오른다. - - 일본은 엔화 강세 및 수출 부진으로 인한 경제를 부양하고자 아시아 최초로 마이너스 금리를 도입했다. 하지만 기대와 달리 기업은 투자를 늘리지 않았고, 가계는 소비하지 않았다. 돈을 찾아 금고에 넣어두려 했기에 금고 소비량만 늘었다. 위에서 언급한 바와 같이 갈 곳 없는 자산이 위험자산인 주식으로 몰릴것으로 기대했지만 엔화강세로 기업 실적이 나빠질것으로 여겨 오히려 주가도 급락했다. 이처럼 전통 경제학에서 주장하는 금리와 주가 등 일반적인 관계가 `현실에서는 적용되지 않아 경제 예측이 어려워지는 이유`가 되기도 한다. - - 유동성의 함정 : 금리를 낮추고 시중에 돈을 풀어도 돈이 돌지않고 고여있는 현상 - - `플라자 합의` : 인위적인 통화 평가절상 조치. 일본 잃어버린 20년의 발단. - - `브레튼우즈 체제` : 달러를 기축통화로 결정한 회의. 금 1온스에 35달러 책정. - - `트리핀딜레마` : 기축통화의 역설. 적자를 막기위해 유동성을 줄이면 세계 경제가 위축되고, 적자를 지속시키면 달러 가치가 하락해 신뢰도가 떨어지고 고정환율제도가 붕괴되는 현상 - - `닉슨쇼크` : 금본위제의 폐지 - - 원/달러 환율이 오르면 수출에 도움. 제품의 가격이 떨어지기 때문. 단, 해외여행 상승 등으로 외화 유출 가능성 존재. - - 국제유가 마이너스 사태 : 웃돈을 주면서 기름을 팔아야 할 정도로 세계 경제의 침체를 시사. - - 셰일 가스 개발 등 에너지 패권의 판도 변화로 석유 수요는 2020년 9% 감소 예측 - - 미중관계의 흐름 - + 10강에서는 그간 이어진 미중관계의 변화와 흐름을 파악할 수 있다. 닉슨 독트린과 핑퐁외교로 미중관계에 훈풍이 불기 시작. 마오쩌둥의 제사해운동 등 경제 정책 실패를 흑묘백묘론 정책으로 대표되는 덩샤오핑이 되살린다. - + 2018년 1인당 국민총소득을 9,470달러까지 올렸으며 화성에 첫 탐사선을 보내고 AI 산업이 급성장하는 등 경제 대국으로 변모한다. 아프리카에 대한 지원을 필두로 일대일로를 추진하고 있으며 동인도회사 시절에 비유되기도 한다. - + Z세대를 겨냥한 틱톡의 성공은 미국인들의 전화번호, GPS위치, 결제정보까지 수집하게 되어 미국의 안보를 위협할 수준에 이르렀으며 트럼프는 퇴출 명령을 선언한다. - + 투키디데스의 함정의 결론은 과연 어떤 결론을 맞이할 것인가? - ---- - -* __파트4. 한국경제와 포스트코로나__ - - 한국경제의 적신호 : 저출산, 고령화, 생산성 하락 - - IMF 2020년 4월 연차 총회 성장률 예측 : 세계 -3%, 아시아 0%, 한국 -1.2% - - 인구오너스 : 생산가능인구 연평균 52만명 감소. - - 디플레이션의 위협 - + 사상 최초 소비자 물가 마이너스 기록. 장기적인 0%대 물가상승률이 경고음이라는 해석. - - 중산층의 붕괴와 양극화 - - `국가 부채`의 증가 - + 기축 통화국이 아니기에 마이너스 금리는 현실 가능성이 적으며 부채 또한 쉽게 넘길 문제가 아니다. - + 전임 정부는 나름 균형 재정을 유지하기 위해 노력했으나, 현 정부는 재정지출증가율(5.7 ~7.3%)가 재정수입증가율(3.5~5.5%)를 매년 웃돌고 있다. 대책없이 빚을 늘리는 건 도덕적 해이다. - + 2024년 기준 1인당 국가 채무는 2,557만원까지 증가. 4인가구당 1억이라는 의미. - + 중기재정운용계획의 법적 구속력이 없음. 번만큼만 쓴다는 미국의 재정건전화법 제정안이 제출되었으나 통과는 감감 무소식. - - 해결책 - + 구조개혁 : 노동, 금융, 공공, 재정 등 대표 4대 부분 - + 생산성 향상 : 노동, 자본 투입, 기술혁신(R&D 투자효율 제고) 등 - + 노동력 투입 : 여성, 고령자, 이민자 유입 정책 등 - + 낙수효과 vs 분수효과 - - 리쇼어링 등 보호무역주의, 긱워커의 등장과 플랫폼 노동자의 노동관계법 사각 지대 문제 - - 3대 미래 먹거리 - + 비메모리 반도체 : 파운드리, 팹리스, 모바일 AP, 이미지센서 등 - + 바이오 : 고령화, 감염병, 먹거리, 기후변화 대응 등 - + 미래차 : 수소연료전기차(FCEV). 현대 투싼ix 등 - ---- - -인상적인 파트만 요약했음에도 이처럼 책이 다루고 있는 정보는 방대하다. 얻을 수 있는 지식이 많은 만큼 많은 시간 생각이 필요해지는데 이를 대비한 책의 구성이 재미있다. - -월,화,수,목,금으로 챕터별 요일이 부여되어 있으며 넉넉잡아 요일별로 하루 15분이면 읽을 수 있다. 그렇게 총 12강으로 구성되어 있다. 이런 구성은 퇴근길 인문학 수업 시리즈에서 차용한 듯 한데 혹시 인문학에 관심이 있는 사람이라면 이 책도 추천하고 싶다. 필요하다면 [퇴근길 인문학 수업 : 뉴노멀](https://theorydb.github.io/review/2020/08/02/review-book-class-way-home-new-normal/) 리뷰를 참고하기 바란다. - -앞서 언급한 바와 같이 돈을 벌기 위해서는 나의 현위치를 정확히 알고 세상이 어떻게 변화하고 있는지, 미래는 또 어떤 모습을 보일지 파악할 수 있는 안목과 정보가 대단히 중요하다. 그렇게해도 쉽지 않은 돈벌이 전투에 기본적인 경제상식은 커녕 현 시점의 트렌드 조차 제대로 읽지 못한다면 어떻게 돈을 벌 수 있을까? - -이 책은 트렌드의 변화를 민감하게 읽을 수 있는 안목과 세계 경제의 흐름을 눈여겨 보며 통찰력을 얻게하여 스스로의 프레임을 깨뜨릴 수 있다는 점에서 대단히 만족스러웠다. 돈에 자유로운 사람은 거의 없을 것이기에 스스로의 경제적, 시간적 자유를 위해 일독을 권한다. - ---- - -* [책소개 - 출근길 부자 수업: 트렌드 편](http://www.yes24.com/Product/Goods/95751301) - diff --git a/_posts/2020-12-18-review-book-DL-from-scratch-3.markdown b/_posts/2020-12-18-review-book-DL-from-scratch-3.markdown deleted file mode 100644 index 14b3185a3..000000000 --- a/_posts/2020-12-18-review-book-DL-from-scratch-3.markdown +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: post -title: "[리뷰] 밑바닥부터 시작하는 딥러닝 3" -subtitle: "파이썬으로 직접 구현하며 배우는 딥러닝 프레임워크" -categories: review -tags: review book 밑바닥 딥러닝 프레임워크 define-by-run 자동미분 2차미분 DeZero 체이너 파이토치 설계 Pythonic 역전파의역전파 계산그래프 추상화 -comments: true -header-img: img/review/2020-12-18-review-book-DL-from-scratch-3-1.png ---- - -> `한빛미디어` 출판사의 `"밑바닥부터 시작하는 딥러닝 3(사이토 고키 저/개앞맵시 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-12-18-review-book-DL-from-scratch-3-1.png) - ---- - -어느덧 "밑바닥부터 시작하는 딥러닝 시리즈"의 세번째 책이 발간되었다. 밑바닥 시리즈는 딥러닝을 연구, 학습하는 이들이 이구동성으로 극찬하는 딥러닝 입문서이다. - -개인적으로 알파고 등장 이후 2017년 처음으로 구매한 딥러닝 서적이 "밑바닥부터 시작하는 딥러닝" 인데, 이 책 덕분에 역전파의 늪에서 벗어날 수 있었기에 지금도 깊은 애정을 갖고 있는 책이다. 그때는 시리즈로 계속 나올줄 몰랐는데 결국 3권까지 나왔다. - -> 이번 도서 3권은 어떤 밑바닥을 구현하게 될까? 그것은 바로 `DeZero`라는 이름을 가진 딥러닝 프레임워크 이다. -![밑바닥시리즈](https://github.com/WegraLee/deep-learning-from-scratch-3/raw/master/%EB%B0%91%EB%B0%94%EB%8B%A5%20%EC%8B%9C%EB%A6%AC%EC%A6%88%20%EC%86%8C%EA%B0%9C.png) - -텐서플로우나 파이토치 같은 훌륭한 딥러닝 프레임워크가 이미 존재하는데 굳이 프레임워크를 만들 필요가 있을까라는 의문이 생길 수도 있다. 그럼에도 이 책을 반드시 읽어야 할 이유는 무엇일까? 대표적으로 다음 2가지 이유를 들고 싶다. - ---- - -* __SOTA 연구 및 개발 협업 `연구 리터러시` 능력__ - 최신 AI 기술을 활용하여 서비스를 개발하는 회사일수록 `SOTA급 논문을 빠르게 이해하고 코드로 구현하는 능력`이 매우 중요하다. 연구 결과를 구현체로 만드는 대표적인 사이트로 [paperswithcode](https://paperswithcode.com/)를 예로 들 수 있는데 최전선에 위치한 기술인 만큼 타인의 연구 결과를 빠르게 해석하여 구현하고자하는 서비스에 빠르게 녹일 수 있는 커뮤니케이션 능력 혹은 리터러시는 매우 중요한 능력이다. - - 또한 스스로의 연구를 코드로 구현하고 검증하는 과정은 `연구의 이해 수준` 자체를 높일 수 있음과 동시에 `다른이와의 의사소통을 향상`시킬 수 있고 `객관화` 할 수 있다. - - 연구 리터러시외에도 실제 서비스를 구현할 때의 커뮤니케이션도 중요한 부분이다. 뛰어난 아이디어가 있음에도 팀 내 수준 높은 코드를 이해하지 못해 `민폐 코드`를 작성한다거나, `미래에 예기치 못한 오류를 양산할 수 있는 가능성을 가진 코드`를 주입한다면 향후 서비스 품질과 일정에 막대한 지장을 초래할 수 있다. - - 본 도서를 통해 딥러닝 프레임워크 내부 구현 매커니즘을 확실히 이해한다면 실 서비스 개발에 있어 수준높은 협업을 통한 서비스 구현은 물론 다른 연구 결과를 빠르고 쉽게 분석하여 좋은 인사이트를 녹일 수 있다는 장점이 있다. - -* __프로젝트 `설계-구현 능력` 향상__ - 딥러닝 분야 외에도 이 책에는 파이썬을 활용한 대규모 프로젝트 설계 기법을 다루고 있다. 변수와 함수를 굳이 Variable, Function이라는 클래스로 추상화하여 출발하는데서 `객체지향`에 숨은 철학을 이해할 수 있다. - - Define-by-Run(동적 계산 그래프), 고차미분, Computational Graphs를 직접 구현하며 왜 개발자들이 텐서플로우 1.x 버전보다 파이토치에 열광했는지, 텐서플로우 2.x의 출현이 필연적이었는지 깨닫는 것은 신호탄에 불과하다. - - 텐서플로는 버전 1.x에서 채택한 독자적인 프로그래밍 언어 Domain Specific Language (DSL)을 사용한 정적 계산 그래프 기능을 보며 잘못된 설계가 가져오는 여파를 대규모의 프로젝트에 참여하지 않아도 간접적으로나마 직접 눈으로 확인하고 실감할 수 있게 된다. - - 이를 통해 동적 `Define-by-Run` 방식(텐서플로우의 경우 Eager Execution이라 지칭) 매커니즘과 자동 미분의 매커니즘 그리고 이를 지원하기 위한 설계 기법을 배울 수 있는데 이는 다른 서비스를 구현할 때도 활용할 수 있는 메타 설계기법으로 활용할 수 있을 것이다. - ![핵심 클래스들의 관계도](https://github.com/WegraLee/deep-learning-from-scratch-3/raw/master/DeZeroClasses.png) - - 자동 미분, 계층 컬렉션, 데이터셋, 옵티마이저 각각의 Layer와 클래스를 분리하는 관점이나 파이썬을 Pythonic하게 활용하는 방법부터 GPU 활용 및 속도, 메모리 성능 개선 측면에서도 배울 것이 많기에 굳이 딥러닝이 아니더라도 어떤 서비스를 설계 및 구현하는데 필요한 프로젝트 능력을 크게 향상 시킬 수 있다. - ---- - -본 도서를 읽으며 느꼈던 위 2가지 장점 외에도 `단 한 권의 책으로 딥러닝 프레임워크를 만들 수 있다는 사실`에 적잖이 놀랐다. - -단 2개의 클래스 Variable, Function의 추상화에서 출발하여 역전파, Define-by-Run(동적 계산 그래프), 고차미분, Computational Graphs, Layer 및 Optimizer 등의 확장성을 부여하며 60단계 과정을 따라 하다 보면 어느덧 CNN, RNN, LSTM 모델을 지원하는 딥러닝 프레임워크 DeZero를 만들 수 있게된다. - -특히 `어떤 식도 미분 가능하게 모듈화한 설계`가 인상적이었으며, 5개고지 60단계별로 구현한 결과를 시점별로 실행하며 눈으로 확인할 수 있어 보다 쉬운 이해가 가능했다. - -스스로 역전파를 완전히 이해하고 있다고 생각했었는데 `3고지에서 역전파의 역전파를 구현하면서 구석에 남아있는 무지의 영역을 확실히 깨칠 수 있는 계기`를 얻을 수 있어 만족스러웠다. - -책의 구성과 전달력 또한 일품이다. 독자 의식의 흐름을 꿰뚫기라도 한 듯 궁금한 질문이 생길때마다 저자의 답변이 등장한다. 독자의 마음을 어떻게 이렇게 잘 들여다 볼 수 있을까? 저자의 뛰어난 예측 공감각력(?)에 감탄하는 일련의 과정이었다. 고수들의 내공을 이보다 쉽고 편하게 배우긴 어려울 것 같다. 전편 명성 그대로 독자 의식을 꿰뚫 듯 궁금증이 생길 때마다 친절한 설명이 등장한다. - -설계에 녹아있는 철학은 기술을 넘어 예술의 영역에 가깝다. Layer, Optimizer, DataLoader 등 앞서 설명한 설계 철학 외에도 구체적으로 `계산 그래프의 위상이 어떤 형태일지라도 역전파가 가능하도록 설계`한 부분은 감탄을 금할 수 없었다. - -개인적으로는 DeZero를 만든 후 paperswithcode 사이트를 비롯 연구 결과의 코드 구현체가 전보다 쉽게 읽혀 매우 신기했다. 연구의 철학이나 아이디어를 생생히 느낄 수 있는 또 다른 시야를 얻은 것 같아 특히 만족스러웠다. - -Eager Execution, Computational Graphs를 직접 구현하며 TensorFlow2.0 등장 등의 트렌드를 알 수 있었고, 자주 사용하지 않던 프레임워크에 대한 자신감 또한 큰 수확이었다. - -텐서플로우 1.x에서 누구나 느꼈던 불편함과 어색함이었던 PlaceHolder, Session분기, Define-and-Run 방식에서 비롯된 계산 그래프 수행의 비효율성 등이 왜 발생했는지 그래서 올바른 설계가 왜 중요한지 나아가 파격적인 문법 변화에 따른 리스크를 감수하면서까지 텐서플로우 2.x이 등장할 수 밖에 없었던 필연을 구체적으로 실감할 수 있었다. - -그 외 파이썬을 파이썬답게 활용하는 방법부터 GPU 활용 및 속도, 메모리 성능 개선 측면에서도 배울 것이 많았다. - -읽는 내내 머리속에 계속 느낌표가 떠오르는 명작 중의 명작이었다. ML/DL 엔지니어분들은 물론 IT 서비스를 설계, 구현하는 분들께도 강력하게 추천하고 싶은 책이다. - ---- - -* [책소개 - 밑바닥부터 시작하는 딥러닝 3](http://www.yes24.com/Product/Goods/95343845) - diff --git a/_posts/2020-12-19-review-book-big-data-engineer-certificate-yj.markdown b/_posts/2020-12-19-review-book-big-data-engineer-certificate-yj.markdown deleted file mode 100644 index c05b6c507..000000000 --- a/_posts/2020-12-19-review-book-big-data-engineer-certificate-yj.markdown +++ /dev/null @@ -1,115 +0,0 @@ ---- -layout: post -title: "[리뷰] 2021 이기적 빅데이터분석기사 필기 기본서" -subtitle: "최신 출제기준 반영 + 동영상 강의 무료 제공 + CBT 온라인 모의고사" -categories: review -tags: review book 빅데이터분석기사 이기적 2021 필기 수험서 DL ML 통계 분석 -comments: true -header-img: img/review/2020-12-19-review-book-big-data-engineer-certificate-yj-1.png ---- - -> `영진닷컴` 출판사의 `"2021 이기적 빅데이터분석기사 필기 기본서(나홍석, 배원성, 이건길, 이혜영, 고려사이버대학교 AI·빅데이터 연구소 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/2020-12-19-review-book-big-data-engineer-certificate-yj-1.png) - ---- - -아쉽게도 코로나로 인해 제1회 빅데이터분석기사 1차 시험이 취소되었다. 2차 시험이 내년 4월 17일 시행 예정이므로 그동안 준비를 철저하게 해 온 분께는 슬픈소식이겠지만, 준비가 부족한 분께는 기회가 될 수 있을 듯 하다. - -국가 기사 시험이기 때문에 인재를 얼마나 적합하게 가려내는지와는 별도의 문제로 AI, 빅데이터 관련 분야에 종사하고 싶은 이라면 기본으로 갖춰야 할 자격증으로 자리매김될 것 같다. - -올해 처음으로 치뤄지기 때문에 대략적인 출제기준, 범위 외 난이도와 내용, 출제경향이 어떨지 예측이 어렵다. 때문에 시종에 나와있는 5종의 교재 중 어떤 수험서가 가장 우수한지 판단하기 어렵다. - -개인적으로 꼭 취득하겠다는 마음을 먹고 있는 시험인지라 앞서 시중에 발간된 4종의 도서를 비교 분석한 리뷰를 올렸으니 관심있는 분들은 [[리뷰] 이지패스 2021 빅데이터분석기사 필기](https://theorydb.github.io/review/2020/11/30/review-book-big-data-engineer-certificate/)를 참고하시기 바란다. - -본 포스팅에서는 지난번 리뷰에서 다루지 못한 나머지 1종의 수험서 `2021 이기적 빅데이터분석기사 필기 기본서`에 대한 리뷰를 다뤄보려 한다. 먼저 구체적인 장점과 단점을 알아보자. - ---- - -* __장점__ - - __집필진의 `전문성`. 그리고 `계산`을 필요로 하는 예제의 우수함.__ - 상대적으로 암기식 위주의 학습을 필요로하는 파트 1, 4에 비해 파트 2, 3은 난이도에 따라 충분히 어려운 계산 문제가 등장할 수 있는 파트이다. - - 때문에 개인적으로 빅데이터분석기사 수험서를 고를 때 가장 먼저 보는 부분이 "파트2 3절 통계기법 부분"과 "파트3 2절 분석기법" 부분이다. - - 빅데이터 분석의 핵심이 되는 부분이자 실무에서 가장 중요하게 활용되는 부분이기에 실제 배워야 하는 가장 중요한 부분이라고 생각하며 난이도에 따라 당락을 좌지우지할 부분이 될 수 있기에 해당 부분을 `저자가 얼마나 잘 알고 전달할 수 있는지 파악하는 것`이 중요하다. - - "파트2 3절 통계기법 부분"에서 다루는 추정과 검정은 사실 빅데이터 시대에 중요성이 많이 퇴색했다고 생각한다. 표본과 모집단의 관계를 파악하는 것이 쑥쓰러울 정도로 많은 데이터가 쌓이고 있는 시대이기 때문이다. - - 하지만 그럼에도 추정과 검정은 통계 핵심을 담당하는 한 축이며 무엇보다 논문이나 연구 결과에 중요하게 활용되고 있어 이를 모르고는 타인의 연구 결과에서 인사이트를 추출하기 어렵거나, 스스로의 연구 결과의 전달에 실패할 가능성이 크다. - - 그렇기에 빅데이터분석기사의 출제 기준에도 해당 범위만큼은 반드시 알아야 할 부분으로 여겨 범위가 포함된것이 아닐까 추측한다. 더 깊은 연구결과를 이해하기 위해 p-value, 유의수준, 기각역, 귀무가설, 대립가설, 독립표본 간 평균차이 검정, 모수, 점추정, 구간추정 등의 핵심개념은 최소한으로 알아두어야 할 `펀더멘탈`이기 때문이다. - - 문제는 위의 개념들이 펀더멘탈임에도 이를 쉽게 전달하는 책을 거의 본 적이 없다. 귀무가설이나 유의수준이라는 용어들이 이미 직관적이지 않다. 개인적으로 번역의 역사에서 가장 실패한 번역 용어가 아닐까 싶을 정도이다. 개념 자체가 결코 쉽지 않은데 not의 not이라는 개념이 연속으로 엮이는 불확실한 용어들을 충분한 개념 정립이 되지 않은 상태에서 시간에 쫓기듯 비직관적으로 대체 용어를 선택한 느낌이다. - - 만약 해당 파트를 이해하기 쉽게 전달할 수 있다면 이 책의 저자는 자타공인 전문가임을 의심할 여지가 없으며, 나아가 훌륭한 선생님임을 의심할 여지가 없기에 다른 파트를 보지 않아도 책을 전반적으로 평가할 수 있다는 생각이 든다. - - 면면이 훌륭한 분들을 평가한다는 것은 주제넘지만 심도있게 읽은 결론을 먼저 말씀드리자면 `집필진이 고려사이버대학교 AI, 빅데이터 연구소 소속이라는 네임 밸류에 걸맞는 전문가 분들이라는 점과 전달력도 어느정도 괜찮다는 평`을 내리고 싶다. - - 해당 개념들을 상당부분 이해하고 있는 나로써는 난해한 부분을 깔끔하게 전달하고자 한 저자분들의 시도와 노력이 잘 전달된 느낌을 받았다. - - 특히 `고등학생들의 용돈 수준 조사나 두집단의 사료가 젖소의 우유생산량에 미치는 영향의 차이와 같은 일상에서 쉽게 이해할 수 있는 예제로 어려운 개념들을 설명한 부분이 책의 백미`라고 생각한다. - - 이런 예제 박스들은 좋은 연습문제를 만들고자 저자들의 노력한 흔적이 본문에 깔끔하게 정리된 형태가 아닐까 추측되는데 그렇기에 `계산을 필요로 하는 연습문제의 질이 좋다`. 실무에서 필요로 하는 계산은 물론 알고리즘을 이해할 수 있음은 물론이고, 이면에 숨은 개념을 확실히 이해할 수 있는 좋은 수단이기 때문이다. - - 다른 파트들을 차치하고서라도 이 장점 하나만으로도 충분히 합격점을 주고 싶은 실무서라는 생각이 들었다. - - - __동영상, CBT 온라인 모의고사 차별화__ - 5종의 수험서 통틀어 `무료 동영상 강의가 제공되는 유일한 수험서`이다. 내가 알기로는 다른 수험서 1종도 동영상이 제공되긴 하는데 유료로 제공되는 것으로 알고 있다. 나머지는 없는 것으로 알고 있다. - - 출판사 영진닷컴은 1990년대 부터 이미 수험서와 관련된 유명 출판사이고 그 외 우리나라 IT 지식 정보 전달에 지속적인 기여를 한 훌륭한 출판사라고 생각한다. 나 역시도 대학 시절부터 현재 사회 생활에 이르기까지 영진 수험서로 학습한 적이 많다. - - 이런 플랫폼을 꾸준히 가꿔온 출판사답게 동영상, CBT, 홈페이지 등 부가적인 학습 수단이 제공되는 점은 이 수험서의 차별화된 장점이다. 장기적으로 바라봤을 때 빅데이터분석기사의 시행 횟수가 늘어날수록 이런 플랫폼이 빛을 발할것 같다는 생각이 든다. 이기적으로 대표되는 이 출판사의 브랜드가 과거에서 이어져 온 경향으로 지속적으로 성장했기에 장기적인 믿음이 든다. - - - __핵심만 요약한 분량__ - 교재의 총 분량이 `약 370p` 정도에 지나지 않는다. 아마도 책의 제목에 "이기적"이라는 표현이 들어간 이유일 것이다. 최단 시간 내 가장 적은 시간과 노력으로 합격을 겨냥한 구성을 채택했기에 분량이 최소화 된 듯 하다. - ---- - -* __단점__ - - __동영상 강의의 2% 부족함__ - 동영상이 타 수험서 대비 차별화 된 장점임이 틀림없음에도 급하게 출간된 감이 없지 않다. 무료로 제공되긴 하나 기본 강의는 없고 `연습 문제 해설 동영상만` 제공된다는 점, 해설 강의의 수준이 `계산 유형의 해설은 탁월하나 개념 문제의 해설은 빈약하다`는 점이 단점이다. 예를 들면 정답에 대한 설명은 있는데 오답에 대한 보충 설명이 누락된 건들이 많다. - - - __분량을 줄이기 위해 희생된 전달력__ - 분량이 깔끔한 것은 장점이자 단점으로 작용하는 것 같다. 확실히 파트 1, 4는 암기식 위주의 학습이 필요한 부분이라 간결한 핵심 요약 내용이 도움이 된다. - - 물론 파트 2,3도 지식이 어느정도 있는 나에게는 깔끔한 요약이 마음에 들긴 했다. 다만, 본 기사 시험을 처음으로 준비하는 `초보 수험생의 경우는 무슨 내용인지 이해하기 매우 어려울 수` 있겠다는 생각이 든다. - - - __일부 연습문제의 빈약함__ - 앞서 언급했듯 계산 및 매커니즘을 이해하는 연습문제의 질은 매우 훌륭하다. 다만, `암기식 혹은 일반적인 개념을 묻는 서술형 문제는 창작에 있어 고심의 흔적이 덜 보인다`. 단순히 설명을 열거하고 단어 한 두개 누락 혹은 교체를 통해 연습문제를 쉽게 만든 흔적이 보인다. 이런 문제들은 충분한 이해 없이도 당장 맞출 수 있는 문제들이기에 실전에서의 일반화에 좋지 못한 효과로 작용하진 않을지 다소 우려가 된다. - - - __출제기준 불일치 파트__ - 이건 사실 단점이라기 보다는 어느 수험서나 안고 있는 문제이긴하다. 물론 출제기준 자체가 명확하지 않고 1회도 시행되지 않은 기사에서 흔히 발견되는 공통점이다. - - 특히 파트1, 4는 해석 여하에 따라 범위가 굉장히 가변적일 수 있다 생각한다. 때문에 각 수험서마다 상당히 내용이 달라진다. 아무래도 저자들이 몸담았던 연구 및 실무 분야의 지식들 위주로 구성된 경우가 흔하다. - - 본 도서 또한 파트1의 경우 출제 기준 이상으로 불필요한 내용이 과하게 들어있다는 생각이 들었고, 파트4의 경우 모수 유의성 검정이나 비즈니스 기여도 평가, 활용 시나리오 개발 등 일부 파트가 누락된 느낌이 들었다. - - 물론 시중 다른 수험서에서도 공통적으로 발견되는 양상으로 일부 누락 혹은 과함이 존재한다. 때문에 가장 마음에 드는 수험서 2종을 상호 비교해가며 교차 검증하며 읽는 편이 안전할 것으로 보인다. - - - __기타__ - 그 외 각 연습문제마다 문제에 정답과 해설이 같이 붙어있는 점, 파트3의 설명이 다소 빈약한 점은 개인적으로 약간 마음에 안드는 부분이다. 다만, 해당 부분이 실전에 어느정도 영향을 미칠지 몰라 무조건 단점이라고 치부하긴 어려울 것 같다. 실전이 아닌 내 스스로의 기준에 미치지 못해 적어본다. - ---- - -본 도서의 총평을 하자면 일단 앞서 언급한대로 수준있는 전문가가 잘 알고 기술한 책이므로 `좋은 책이라는 점에는 의심할 여지가 없다.` 다만, 독자의 현재 학습 수준, 여건 등에 따라 `호불호`가 확실히 갈릴 것 같다는 생각이 든다. - -이미 관련 전공자나 실무 경험이 있거나 혹은 다른 수험서로 준비가 탄탄한 수험생 들에게는 핵심 요약 내용이 메타지식을 재정립 시켜주고 시간대비 능률을 올려주기에 좋은 평을 얻을 수 있을 것 같다는 생각이 든다. - -반면 초보 수험생의 경우 파트 2,3의 경우 굉장히 난해할 수도 있겠다는 생각이 든다. 따라서 본 도서는 다른 수험서와 병행하여 크로스 체크 용도로 학습한다면 효과를 충분히 얻을 수 있지 않을까 생각이 들었다. - -결론적으로 아직 무엇하나 정해지지도 않고 투명하게 공개된 것이 없는 1회도 시행하지 않은 본 시험을 대비하는데 있어 `현 시점 가장 확실한 전략은 책 2권 정도는 병행해가며 정리하는 것도 괜찮은 전략`이 아닐까 싶다. - -마지막으로 본 시험을 대비하는데 있어 전체적인 전략을 요약해볼까 한다. 먼저 작성한 리뷰에서 밝혔듯 기본서로는 이지패스 수험서가 굉장히 전달력이 좋고 이해하기 쉽다. 대신 분량이 많기에 스스로 메타지식을 잘 정리해 나가야 한다. - -개인적으로는 이지패스 수험서를 기본서로 삼고 본 리뷰에서 다룬 이기적 수험서를 크로스 체크 및 보완서로 두면 좋은 효과가 나올 수 있는 구성으로 보인다. 경우에 따라서 초보 수험생의 경우 수제비 수험서를 처음으로 접하고 취향에 따라 한 권을 더 병행으로 봐도 괜찮겠다는 생각이 든다. - -물론 수험서 구매 예산이 충분하지 않거나 기본 실력에 어느정도 자신이 있는 분들은 본 포스팅과 이전 리뷰를 참고하여 스스로에게 부족한 부분을 잘 채워줄 수 있는 교재 한 권을 잘 선택하는 것이 좋을 듯 하다. - -끝으로 두편의 리뷰를 작성하기까지 1권은 개인 비용으로, 2권은 출판사 이벤트를 활용하였지만 이벤트에 당첨되었다는 이유로 편파적으로 리뷰를 작성하지 않고자 매우 노력했음을 밝힌다. 철저히 수험생의 입장에서 합격을 목표로 분석했음을 알린다. - -> 도서를 제공받아 작성된 글입니다. - - -* [책소개 - 2021 이기적 빅데이터분석기사 필기 기본서](http://www.yes24.com/Product/Goods/95736343?OzSrank=3) - diff --git a/_posts/2020-12-26-review-book-haljjak-psychology.markdown b/_posts/2020-12-26-review-book-haljjak-psychology.markdown deleted file mode 100644 index 8e88d23ea..000000000 --- a/_posts/2020-12-26-review-book-haljjak-psychology.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: post -title: "[리뷰] 할짝 심리학 2" -subtitle: "나도 모르는 내 마음의 병" -categories: review -tags: review book 심리학 만화 우울증 조현병 사이코패스 천재 정신질환 공황장애 예방주사 내마음 매커니즘 -comments: true -header-img: img/review/review-book-haljjak-psychology-1.png ---- - -> `한빛비즈` 출판사의 `"할짝 심리학 2(이한나 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-haljjak-psychology-1.png) - ---- - -개인적으로 만화를 좋아하는데 특히 한빛비즈 `교양툰 시리즈`를 참 좋아한다. 최근 리뷰를 올린 [퀀텀(quantum)](https://theorydb.github.io/review/2020/11/28/review-book-quantum/)을 예로 들면 양자 역학을 이처럼 알기 쉽게 풀어쓴 책은 본 적이 없다. 첫 진입 장벽이 특수상대성 이론인지라 결코 입문이 쉽지 않은데 단 십여 페이지로 깔끔하게 정리해줬던 강렬했던 첫 인상을 잊지 못한다. - -작년에 본 [까면서 보는 해부학 만화](http://www.yes24.com/Product/Goods/90473396) 또한 일품이었다. 특히 6살이었던 아들 녀석에게 `깊은 탐구심과 집중력을 선물`해 준 책이라는 점에서 감사하다. 호기심은 흥미로 이어지고 발견과 깨달음은 무엇이든 집중하게 만든다. - -본 리뷰에서 소개할 "할짝 심리학 2" 또한 이 교양툰 시리즈 중 하나이기에 믿고 볼만한 책이라 여겼다. 그동안 교양툰에서 느꼈던 여러 선례 덕분일까 이번 책 또한 기대가 상당했고 만족감 역시 기대와 일치했다. - -요즘 시중에 출간되는 서적을 보면 심리학, 감정, 정신이라는 주제가 대세인 듯 하다. 아마도 직장으로 대표되는 일상의 스트레스와 시간에 쫓기며 사는 인생 속에서 삶의 의미를 잃어버리는 일이 흔하기 때문이 아닐까 싶다. 나 역시 이런 주제를 다루는 책을 10권 이상은 읽은 듯 하다. - -읽다보면 현재까지 밝혀진 `몇가지 공통된 매커니즘`이 등장하는데 이 책의 큰 장점중의 하나가 이런 매커니즘을 모두 소개하고 있다는 것이다. 예를 들면 문명의 발전속도에 비해 인간의 몸과 마음은 최초 인류 대비 거의 진화하지 않았다는 점, 도파민을 대표로 하는 각종 호르몬 등의 화학적 성분 혹은 약물이 인간의 감정과 판단에 영향을 미치는 매커니즘을 들 수 있겠다. - -만화의 장점은 역시 재미와 가독성을 들 수 있겠는데 각종 심리학 대중서적에서 이구동성으로 언급하는 단골 소재가 전달력 끝판왕인 만화라는 도구를 통해 전달한다는 것은 심리학을 어려워하는 일반인들에게는 소중한 기회인 듯하다. - -물론 만화의 특성 상 대부분의 지면에 그림, 삽화가 포함되므로 한정된 지면 대비 전달하는 정보의 양이 적을 수 밖에 없는 것 또한 사실이지만 심리학과 감정 측면에 있어 전공 수준의 학습과 연구를 목표로 하지 않는 이상 우리 일상에 도움되는 지식을 얻는 것은 이 만화로 충분하다는 생각이 든다. - -할짝 심리학 2에서 다루는 굵직한 주제를 간단히 소개하자면 일상에서 흔히 들을 수 있었지만 매커니즘이 이해되지는 않았던 `우울증, 공황장애, 조현병, 사이코패스` 등을 다룬다. 더불어 한 때 유명했던 영화 `뷰티풀마인드 주인공의 실존인물인 존 내쉬`와 같은 천재들이 겪었던 질환도 소개되며, 절단 증후군이나 프레골리 망상과 같은 다소 신기한 질환도 소개된다. - -이런 주제들이 평소 궁금했지만 `진입 장벽이나 수준`이 높아 다가서지 못했던 지식들, 혹은 그럼에도 알고 싶으나 `주제가 우울하거나 무거워` 왠지 다가서기 꺼려졌던 분이라면 이 책에 가장 적합한 독자가 아닐까 싶다. 만화 속 주인공의 대사들은 하나같이 유머러스하고 해학적이며, 책의 표지만 봐도 알 수 있듯 `마치 이말년 작가를 상기시키는 병맛(?) 화풍`이 강렬하기 때문이다. 그만큼 친숙하고 흥미있게 궁금했던 주제들에 다가갈 수 있다. - -![도파민 등](https://theorydb.github.io/assets/img/review/review-book-haljjak-psychology-2.png) - -특히 위 현상들을 `직접 앓고 있다거나 혹은 주위 지인이나 가족들이` 앓고 있어 본인이 응대하기 난처로운 상황인 분들께 짧은 시간내에 현실과 이론을 파악할 수 있는 좋은 수단이 되리라 생각한다. - -위 현상들과 직간접적인 관련이 없더라도 일반인에게도 상당히 유익한 부분이 있다. 주위와의 상호작용으로 갑자기 위와 같은 현상들이 발현된다면 응급히 본인에게 어떤 조치를 해야 하는지 `일종의 심리적 예방 주사`를 미리 맞을 수 있는 기회이다. 더불어 `우리의 정신 세계와 심리의 매커니즘이 어떤 원리로 움직이는지 이해하기 쉬워져` 스스로도 몰랐던 행동과 판단에 대한 해석이 어느정도 가능해진다. - -다소 무겁지만 우리의 정신을 알기 위해 반드시 필요했던 지식들을 해학적이고 알기 쉽게 접근할 수 있다는 점에서 큰 획을 그을만한 책이라는 생각이 든다. - -세상은 점점 배워야 할 것이 많아지고, 시간은 점점 줄어들고, 주위 역시 해준다는 사람은 거의 없는데 해달라는 사람만 지천인 요즘의 현실에서 지피지기의 전략으로 먼저 나를 충분히 알고, 스스로의 정신을 튼튼히 하며, 상대의 심리를 이해할 수 있다면 조금 더 현명하고 슬기롭게 세상을 헤쳐나갈 수 있지 않을까? 바로 그런 점에서 본 교양 만화를 강력히 추천하고 싶다. - ---- - -* [책소개 - 할짝 심리학 2](http://www.yes24.com/Product/Goods/96091858?OzSrank=2) - diff --git a/_posts/2020-12-28-review-book-do-nothing.markdown b/_posts/2020-12-28-review-book-do-nothing.markdown deleted file mode 100644 index 887d36d66..000000000 --- a/_posts/2020-12-28-review-book-do-nothing.markdown +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: post -title: "[리뷰] 바쁨 중독" -subtitle: "매 순간 바쁘게 살아야 한다는 착각" -categories: review -tags: review book 바쁨 여유 시간 워커홀릭 삶의의미 여가 업무 미디어 관계 TEDx 헤들리 노동 -comments: true -header-img: img/review/review-book-do-nothing-1.png ---- - -> `한빛비즈` 출판사의 `"바쁨 중독(셀레스트 헤들리 저/김미정 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-do-nothing-1.png) - ---- - -> 매 순간, 바쁘게 사는 것이 잘 사는 것이다. - -언제부터인가 이 말은 진리처럼 받아들여졌다. 어린 시절 나는 한강의 기적 세대로 일컬어지는 아버지 세대 분들에게서 게으른 것은 나쁜 것이고, 마음의 근심은 먹고 살만 하거나 한가해서 생기는 잡념이라는 말을 듣곤 했다. 나 뿐만 아니라 아마 대부분의 청장년들은 게으름에 인색할 것은 물론, 스스로를 채찍질 하고 반성하며 게을러지지 않도록 반성하며 살지 않을까 싶다. - -그런데 나이가 들고 바쁨에 지칠 때마다 - 정확히는 시간 투자대비 별 효용이 없을 때마다 - 과연 이렇게 사는 것이 맞는 것인지에 대한 고민을 자주 하게 되었다. 그러다보면 삶의 의미나 행복이라는 근원적인 물음에 도달하게 된다. - -지난 30여년 간 지속적으로 이어져 온 양적완화는 최근 코로나 사태로 인해 극도로 심화되었고 자본주의의 커다란 맹점을 보여주고 있다. 시스템 자체에 커다란 결함이 있는 것인가 의구심이 들기도 하고 세상 부의 절반을 상위 1%의 사람들이 차지하고 있는 현실에 불만을 품기도 하며 관련 책들을 읽고 세계적인 석학의 고견도 들으며 노동, 시간, 자본에 대해 되짚어 보기도 했다. - -이러한 내용은 2장에 매우 잘 정리되어 있다. 책에 따르면 `호모사피엔스는 30만 년간 40시간씩 일하거나 연간 300일 이상 일하지도 않았다. 4천년 전의 고대 그리스 시대에는 축제일은 6개월에 달했으며 그 기간에는 노동을 하지 않았다.` 맥락이 유사한 또 다른 도서를 읽다보면 프랑스 혁명을 거치며 인류가 자본, 노동과 관련하여 투쟁해 온 역사를 읽어보면 노동이 일생의 시간을 얼마나 빼앗아 그만큼 행복과 건강을 위협하는지 여실히 알 수 있다. - -그런데도 왜 우리는 이렇게 바빠졌을까? - -이 책은 크게 2파트로 구성되어 있다. 하나는 우리가 `바쁨 중독에 빠지게 된 이유와 현실`에 대해 다루며 삶의 의미와 행복에 대해 독자로 하여금 다시 생각할 기회를 준다. 그 과정을 통해 `인간의 기본 욕구, 과학기술, 사회, 성차별, 인간의 본성` 등을 두루 살피며 시간이 줄어들게 된 직,간접적인 관련 요소들을 폭넓게 훑어볼 기회가 주어진다. - -또 다른 하나의 파트에서는 `여유를 찾기 위한 방안`에 대해 살펴본다. 무의미한 바쁨이라는 굴레에서 해방되고 사라진 시간을 되찾기 위해 저자는 자신의 경험과 노력으로 부터 깨달은 유용한 해결책을 몇가지 제시한다. 일부 효과적이라 생각하는 방법을 아래와 같이 정리해 보았다. - -* 시간 지각(Time Perception)과 일정표 - 지피지기면 백전백승이라는 고전의 진리는 여기서도 통한다. 이 해결책은 시간이 어디서 새어나가고 있는지 `자신의 시간 활용을 측정`하는데서 시작한다. 저자의 경우 공책 한 권을 준비한 후, 24시간을 30분 단위로 나눠 한시간에 한 번씩 3주에 걸쳐 스스로의 활동을 기록했다. 그 결과 인터넷 쇼핑과 SNS 활동으로 1주일에 3시간 이상을 쓴다는 사실을 알고 놀랐는데, 저자와 마찬가지로 우리는 우리를 측정함으로써 몰랐던 진실을 알 필요가 있다. - - 스스로의 시간 활용 패턴이 파악되었다면 다음으로 의미있는 작업은 `일정표`를 만드는 것이다. 주의할 점은 개인마다 직업에 따라 시간의 활용 패턴이 다를 것이기에 각자의 특수성이 반영되어야 의미있다. 예를 들면 대부분의 경우 주말/주중 일정표를 나누는 것이 현명할 것이다. - - 이를 통해 특정일에는 의미없는 것으로 판단되는 SNS활동이나 이메일 확인 및 답변과 같은 업무 활동을 전혀하지 않음으로써 평소의 걱정과는 달리 그런 활동이 없어도 일상에 지장이 없음을 깨닫고 해방감을 느낄 수 있게 될 것이다. - -* `비교`와 미디어 집착에서 벗어나기 - 저자는 위 방법대로 시간을 지각하고 일정표를 수립했지만 그 효과는 오래가지 못했다. 원인은 `또래 압력(Peer Pressure)`에 있었다. 스스로 시간이 충분하다는 것을 인지하고 일정표까지 수립했지만 또래와의 미팅에서 치과 예약할 시간도 없을 정도로 바쁘다는 주장과 더불어 얼마나 바쁜지 설득하는 것이 스스로의 능력을 증명하는 것이라는 일상의 착각으로 되돌아 왔다. - - 저자의 조언과는 별도로 이 대목에서 난 습관의 중요성을 다시금 실감했다. 나름의 방법을 스스로 고안하고 설득하였음에도 이를 꾸준히 이어가게 하는 성패 여부는 습관에 달려있는 것 같다. 어쨌든 저자는 미디어의 삶에는 상대방의 최선의 상태와 업적만이 올라오기에 비 현실적인 비교를 통해 스스로를 무의미한 바쁨 속에 빠뜨리지 않도록 경계를 권하고 있다. - -* 휴식과 삶의 균형 - `과도한 근무는 일반적으로 6 ~ 10 %의 임금 인상 효과`가 있다고 한다. 고작 그 정도의 성취를 위해 많은 이들이 건강과 행복을 내주는 현실을 냉철히 바라볼 필요가 있다. 대중적으로 유명해진 저자 역시 하루에 4시간까지만 집중할 수 있다고 밝힌 것을 감안해 볼 때 그 이상의 시간 투입은 효과없이 버려지는 시간이 아닐지 고민해봐야 할 것이다. - -* 뇌의 디폴트 모드와 연락을 주고 받지 않는 날 - 휴식은 뇌의 정신 건강과 창조적 신경 상태를 도와준다. 뇌에 일을 지시하지 않으면 뇌는 `디폴트 모드 네트워크(DNN)` 상태로 전환이 되는데 이 때 다음과 같은 일들이 발생한다. - - 과거 사건을 불러들여 맥락속에서 살펴보고 도덕적으로 평가한다. - - 미래에 대한 상상 - - 타인의 감정을 이해하며 자신의 감정과 결정을 성찰 - 이는 창의적 사고와 혁신의 원천이 되며, 기억과 감정의 퍼즐 조각을 재구성할 수 있는 소중한 기회이다. 따라서 여가와 휴식은 선택적인 존재가 아니라 필수적인 존재임을 상기해야 한다. - 더불어 업무 이메일 중독에서 의도적으로 벗어나려는 노력을 기울여야 한다. 저자는 의도적으로 월요일 하루를 연락하지 않는 날로 지정했다. - - > "저는 하루에 2-3번만 이메일을 확인합니다. 급한 일의 경우 전화하세요. 그런데 정말 급한 일인가요?" - - 다음과 같은 문구 하나만으로 실제 월요일에 연락이 오는 경우는 극히 드물다. 어쩌면 우리는 해보지도 않고 학습된 무기력에 빠져 하루라도 연락이 되지 않으면 큰일이 난다는 착각속에 빠져 사는 것은 아닐까? - -이 책은 이 시대 바쁘게 살아가야 하는 마치 선험 혹은 진리와도 같은 숙명에 의문을 던진다. 전제 조건의 진리 여부를 파악하고자 인류 전 역사를 살펴보고, 노동-자본-산업-문화-심리학을 살펴보며 인간의 특성에 대해 파악하고자 한다. 이런 과정을 통해 객관적인 지식을 토대로 스스로 삶의 의미와 행복에 대해 깊이 있게 성찰할 기회가 주어진다. - -그렇게 스스로 재 정립한 삶과 시간의 가치관이 현실이 될 수 있게끔 저자가 먼저 시행했던 조언을 참고하여 실전적인 방법을 도출할 수 있다. 때로는 프레임을 바꿔보고, 때로는 과감해지는 방법으로 현실을 바꾸고자 시도할 수 있기에 `한 번이라도 시간에 쫓겨 자유롭지 못한 현대인`에게는 필독서임을 강조하고 싶다. - ---- - -* [책소개 - 바쁨 중독](http://www.yes24.com/Product/Goods/96023879?OzSrank=1) - diff --git a/_posts/2020-12-31-review-book-no-wonder-nervous.markdown b/_posts/2020-12-31-review-book-no-wonder-nervous.markdown deleted file mode 100644 index 4996ae754..000000000 --- a/_posts/2020-12-31-review-book-no-wonder-nervous.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: post -title: "[리뷰] 불안한 것이 당연합니다" -subtitle: "어른을 위한 단단한 마음 수업" -categories: review -tags: review book 불안 어른 다스림 걱정 감정 화병 인생 목표 성공 -comments: true -header-img: img/review/review-book-no-wonder-nervous-1.png ---- - -> `한빛비즈` 출판사의 `"불안한 것이 당연합니다(한덕현 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-no-wonder-nervous-1.png) - ---- - -> 정신건강복지센터의 불안장애 상담 건수가 올해 상반기 1만 8,931건으로 지난해 1만 3,067건에 비해 44.8% 늘어났다. 지난해는 한 달 평균 1,089명이었지만 올해는 3,155명으로 사실상 3배 증가했다([중앙일보] 2020년 9월 30일 자). - -시간이 흐를수록 사람들의 불안은 점차 증가하고 있는 것 같다. 물론 위 기사는 시기적으로 코로나라는 중대 변수가 작용을 했을 것이기에 예년 증가세에 비해 두드러짐이 있겠지만 통계청의 자료를 살펴봐도 불안 증세에 대한 상담 건수는 꾸준히 우상향하고 있는 것이 사실이다. - -개인적으로도 세월이 흐르며 불안이 증가하고 있다. 나이를 먹으며 책임감이 늘기 때문이라는 막연한 원인을 떠올리며 그러려니, 그러는 것이 순리라고 생각하고 살아왔는데 뭔가 이상하다. 세상이 너무 빠르게 변하고 있고 시간은 줄어드는데 되려 알아야 할 것, 배워야 할 것은 늘어나고 있다. - -재미있는 것은 이 책의 저자 또한 그렇다고 한다. 정신건강의학과 교수이자 프로 스포츠 선수들에게 심리 자문 및 상담을 하고 있는 이론과 실전을 겸비한 전문가 본인 또한 불안에서 자유롭지 않다고 한다. - -`무엇이 나를 불안하게 하는 것인지, 왜 그렇게 불안해지는 것인지 몰랐던 매커니즘을 살펴볼 수 있었다는 점은 이 책을 통해 얻을 수 있는 가장 큰 수확`이었다. - -책에 따르면 불안이라는 용어는 정신분석학의 `무의식`과 진실 추구 장면에서 어김없이 등장하는 단어이다. 정신분석학의 핵심은 무의식에 있는 바 무의식에게는 무의식이 기억하는 사실이 진실이 된다. 진실이 왜곡되거나 숨겨질 때 조차 무의식은 위험 신호를 보내는데 무의식의 주인인 사람은 이 신호를 불안으로 감지한다고 한다. - -이러한 사실은 수백년간의 연구 결과로 부터 도출된 진실에 가까운 지식이겠지만 실제로도 우리를 돌이켜봐도 상당 부분 수긍이 간다. 우리는 불안할 때 막연히 초조해하기만 하지 본능적으로 `무엇이 불안한 것인지? 왜 불안한 것인지?` 분석적인 모드로 돌입하지는 않는 것 같다. 아마도 무의식 세계의 왜곡된 진실때문에 의식보다는 본능과 감정에 불안을 맡기는 것은 아닐까? - ---- - -때문에 불안을 완화시키기 위해서는 현실을 있는 그대로 냉철히 받아들이는 것이 중요한 일인 것 같다. 그리고 그동안 몰랐던 불안에 대한 `무지`를 충족시킬 필요가 있다. 본 도서는 크게 2부로 구성되어있는데 바로 이 내용이 1부에서 다루는 내용이다. - -예를 들어 비행기 기내에서 불안한 마음이 커질 것 같으면 억지로 참지 말고 승무원을 불러 응급키트나 나를 도와줄 사람이 있는지 물어보는 것만으로 훨씬 마음을 편하게 할 수 있다. 불안이 실재가 아님을 확인하는 절차만으로 일시적인 공황에서 벗어날 수 있다. - -또한 스스로의 감정이 어떻게 형성되는지 불안 통제에 도움을 줄 수 있는 감정은 어떻게 분화되는지 안정적으로 사는데도 불안이 발생하는 이유는 무엇인지 등 감정이 발생하는 매커니즘을 파악하며 불안에 대한 무지를 줄일 수 있다. - -이처럼 1부에서는 불안이 무엇인지 왜 발생하는지에 대한 지식을 배움으로써 막연했던 실체를 명확히 바라보게 되며 상황마다 요긴하게 쓸 수 있는 몇가지 팁을 얻을 수 있다. - ---- - -2부에서는 보다 적극적으로 `불안을 다스리는 방법`에 대해 배운다. 2부의 장점은 사람들이 대부분 겪고 있는 불안에 대한 거의 모든 케이스를 다룬다는 점에 있다. 직장과 목표에 대한 불안 외에도 결혼 생활과 친구 관계 심지어 실수를 두려워 하는 유형이나 자리의 무게를 감당하는 방법까지 국소적인 다양한 케이스에 대한 대응 방법을 익히게 된다. - -개인적으로 낙관적인 성향을 타고 났기에 이 중 80%는 거의 경험하지 못한 불안들이다. 물론 읽는 독자에 따라 80%가 해당되는 경우도 있겠지만 중요한 것은 상당히 폭넓은 유형을 다루고 있어 아마도 거의 모든 사람에게 도움을 줄 수 있지 않을까라는 생각이 든다. - -또 하나의 장점은 실제 사례를 다루고 있다는 점이다. 각 장의 조언은 실제 상담 사례를 예시로 들고 있기에 빠른 이해가 가능하며 읽으며 직접적인 처치 방법 외에도 간접적으로 상황에 대한 진실을 마주할 수 있기에 마음이 편안해지는 경험을 얻게 된다. - ---- - -이렇게 불안의 실체에 대해 확인해보고 유형별로 조치 방법을 알고 나면 책을 덮을때 즈음 마음이 많이 편안해지는 것을 느낀다. 그동안 어렴풋했던 불안의 실제가 고작 허상이었다는 것에 위안이 생기기도 하고 무의식이 멋대로 정의한 실체를 재정의하고 무의식을 다독거려줌으로써 삶에 대한 자신감 또한 상승한다. - -평소 불안에 휩싸여 삶을 지탱하기 어려운 분들이 있다면 이 책을 읽을 것을 추천한다. 그동안 몰랐던 것들 그리고 몰랐던 것들이 생각보다 별 것 아닌 것임을 확인하는 기회가 될 것이고 그 과정을 통해 상당 부분의 삶을 편하게 만들어 줄 수 있을테니 말이다. - ---- - -* [책소개 - 불안한 것이 당연합니다](http://www.yes24.com/Product/Goods/96024489?OzSrank=1) - diff --git a/_posts/2021-01-01-review-book-economist-2021.markdown b/_posts/2021-01-01-review-book-economist-2021.markdown deleted file mode 100644 index 42bdf6fdf..000000000 --- a/_posts/2021-01-01-review-book-economist-2021.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: post -title: "[리뷰] 이코노미스트 2021 세계경제대전망" -subtitle: "The world in 2021" -categories: review -tags: review book 2021 정치 경제 금융 국제 과학 기술 문화 각국 세계 지표 일정 -comments: true -header-img: img/review/review-book-economist-2021-1.png ---- - -> `한국경제신문사(한경비피)` 출판사의 `"이코노미스트 2021 세계경제대전망(영국 이코노미스트 저)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-economist-2021-1.png) - ---- - -> 21은 기회의 주사위일까? 20의 데자뷰일까? - -아침에 일어나면 신문을 읽 듯, 새해를 맞이하면 읽는 신문이 있는데 그것이 바로 이코노미스트 세계경제대전망 시리즈이다. 보통 한 해의 시작을 알릴 때 출간되는데 마치 한 권의 신문같은 느낌이다. 2000년 초반에 처음 접하게 되었는데 가급적 매년 읽고자 노력하고 있다. - -아침 신문 처럼 `내가 지금 어떤 시점의 한 가운데에 있는지, 또 내가 몰랐던 세상은 어떻게 움직이고 있는지` 세상의 좌표를 파악하는데 이만한 것이 없기 때문이다. - -특히 2008년 금융위기때 처럼 굵직한 사건이 있었던 해는 놓치지 않고 읽는다. 2020년은 그보다 위험하고 유명했던 코로나가 있었으니 올해 역시 이 도서는 내가 읽어야 할 필수 도서가 되었다. - -이 책은 예언서가 아니다. 따라서 2021년을 점보는 심정으로 읽을 수는 없다. 대신 2020년 한 해가 일목요연하게 정리되어 있으며 연속적으로 이어지는 팩트들이 등장하고 세계적 전문가들이 조심스레 미래를 예측한 기고가 수록되어 있다. 예측의 범위는 추상적이고 폭넓어 어느 한 구체적인 사례를 콕 집어 확신하지는 않는다. 부디 2009년 때처럼 부정적인 예견이 거의 빗나가 모든 것이 회복되길 바랄 뿐이다. - -세상의 좌표를 파악하는 것 외에도 이 책을 통해 얻을 수 있는 장점은 아래와 같이 여러가지가 있다. -* `세계 주요 일정`을 파악할 수 있다. -* 세상에 무슨 일이 일어나고 있는지 `국가별 대륙별 주요 이슈`를 한 눈에 정리할 수 있다. -* `산업 분야별` 주요 이슈와 전망을 살필 수 있다. -* 국가, 산업별 `주요 경제 지표`를 한 눈에 파악할 수 있다. -* 2021년을 전망한 `특별 섹션`(애프터쇼크) 컬럼을 통해 전문가들의 의견을 참조할 수 있다. - -이 책을 읽을 때 가장 먼저 확인하는 부분은 `2021년 세계 주요 일정`이다. 미래에 읽어날 굵직한 일들을 한 눈에 쉽게 파악할 수 있기 때문이다. 이 중 중요하다고 생각하는 것을 간추려 보았다. -* 1월 : `EU-영국 브렉시트` 발효, UN 생태계 복원 10개년 계획의 시작, `미국 대통령 취임식` -* 2월 : 화상 탐사선 Mars2020, 텐원 1호 등 화성 도착 예정 -* 5월 : 26일 경 아시아 지역에서 약 15분 간 개기일식 관측 가능 -* 6월 : 아마존, 리비안 전기 밴을 활용한 국내 배송 서비스 시작 -* 7월 : `도쿄 올림픽` 개최 예정, 프랑스 남성 유급 출산휴가 최소 7일 의무화 -* 8월 : MS 익스플로러 지원 중단 -* 9월 : 독일 연방 의회 선거. 메르켈 총리의 마지막 임기 종료. -* 10월 : `엑스포 2020` 개최(두바이), 러시아 탐사선 루나25 달 남극 착륙 예정, `제임스 웹 우주망원경` 발사 -* 11월 : `UN 기후변화협약(COP26)` 개최. 범 지구적 이행 점검이 포함될 예정 -* 12월 : 인도 최초 유인 우주 비행 계획. 조작 파문으로 인한 `리보 금리 공시 종료` - -다음으로는 2021년 `세계 주요 지표`를 살펴본다. 국가별로 우리나라의 경제 성장률은 어떻게 예측되는지 세계는 어떻게 예측되는지 미국이나 중국의 전망은 어떤지 살펴본다. 마찬가지로 산업별 지표도 다루고 있어 소속된 직종 혹은 투자 분야에 대한 전망을 살필 수 있어 유익하다. - -이어서 `지정학적 섹션에 해당하는 파트2`를 살핀다. 특히, 미국, 중국, 아시아는 꼼꼼하게 읽는다. 다음으로 유럽과 영국, 미주 동향을 살피고 그 후에 중동 및 기타 지역의 변화 양상을 살핀다. - -세계의 흐름이 어느정도 파악되면 본격적으로 핵심 부분인 파트1을 살핀다. 이미 파트2에서 다자 간 잇속 문제나 입장 차이를 살폈기 때문에 Actor에 의한 의도, 압력을 첨가하여 볼 수 있는 장점이 있다. `파트1에는 정치, 경제, 금융, 국제, 과학 기술, 문화 등 각 산업 분야별 전망`이 담겨있어 꼼꼼히 살펴볼 필요가 있다. 또 각 분야별로 초연결을 통한 협력 시너지가 파생될 수 있으므로 파트1에는 어느 하나 놓칠 섹션이 없이 정독하는 것이 좋다. - -마지막으로 `스스로 전망한 2021년의 동향을 검증`해 본다. 전문가들이 기고한 특별 세션 애프터 쇼크를 읽으며 개인적으로 판단한 예상과 전문가들의 예상의 합치 여부를 파악해봄으로써 조금 더 넓은 안목을 얻을 수 있다. - -이처럼 새해를 시작할 때는 이코노미스트의 세계경제대전망이라는 책이 참 유익하다. 다른 일반적인 도서와 달리 현 시점의 정보를 모두 모아 요약한 정보의 모음집이기에 꼭 한 번 읽어볼 것을 추천한다. 특히 막연히 새해의 개인 일정을 수립하기 전에 최대한 세계의 객관적인 정보를 확보한 후 계획을 세워보는 것이 보다 알찬 미래를 위한 경우의 수를 좁히는데 도움이 되리라 생각한다. - ---- -* [책소개 - 이코노미스트 2021 세계경제대전망](http://www.yes24.com/Product/Goods/95753726) diff --git a/_posts/2021-01-02-review-book-probability-again.markdown b/_posts/2021-01-02-review-book-probability-again.markdown deleted file mode 100644 index a5db0d14d..000000000 --- a/_posts/2021-01-02-review-book-probability-again.markdown +++ /dev/null @@ -1,100 +0,0 @@ ---- -layout: post -title: "[리뷰] 다시 확률 통계 : 확률편" -subtitle: "데이터 분석, 마케팅, 비즈니스를 위한 확률 통계 입문서" -categories: review -tags: review book 확률 통계 데이터분석 비즈니스 경우의수 순열 조합 사건 조건부확률 -comments: true -header-img: img/review/review-book-probability-again-1.png ---- - -> `길벗` 출판사의 `"다시 확률 통계 : 확률편(나가노 히로유키 저/장진희 역)"`를 읽고 작성한 리뷰입니다. - -![표지](https://theorydb.github.io/assets/img/review/review-book-probability-again-1.png) - ---- - -결론부터 먼저 말하자면 이 책은 확률의 기초를 튼튼하게 다지고, `확률에 숨겨진 진의를 파악하는데 있어 좋은 감각을 다질 수 있는 최고의 기본서`라고 평하고 싶다. 수알못인 학생들조차 고등학교 수학의 정석을 덮으면 옆면이 까맣게 보인다는 집합 부터 베이즈 정리의 기본까지 다룬다. - -다루는 범위가 너무 기초적이고 협소하다고 하여 본 도서를 그저 그런 기본서 정도로 취급하지 않았으면 좋겠다. 다른 수학 영역이라면 몰라도 과연 확률이 어려운 이유가 어려운 수식 때문일까? - -> 수식 때문이 아니라면, 확률이 어려운 이유는 무엇일까? - -위 질문을 먼저 던지는 이유는 확률의 무엇이 어려운지 정확히 알아야 과연 이 책이 어려움을 해소시켜주는 솔루션이 될 수 있을지 검증할 수 있기 때문이다. 본 리뷰는 개인적으로 확률이 왜 어려운 것인지 소개함과 동시에 본 도서가 그런 어려운 점을 어떻게 해소시켜 주는지 소개하는 방식으로 기술하려 한다. - ---- - -* __불확실성과 경우의 수__ - > `외판원 문제(순회 세일즈맨 문제)` - > : 세일즈맨이 n개 도시를 한 번씩 방문해서 출발 지점으로 돌아올 때 이동 거리가 최소가 되는 경로를 구하는 문제 - - 여기서 문제는 n의 값이 커질때마다 경우의 수가 기하급수적으로 늘어난다는 점이다. n=5 인경우 120가지에 그치지만, n=84인 경우 대략 3e+126의 경우의 수가 조합된다. 쉽게 말해 뒤에 0이 126개 붙는다고 보면 된다. 현존하는 최고 성능의 컴퓨터라 할지라도 이처럼 다항식이 아닌 NP-난해(NP-Hard)의 문제는 해결할 수 없다. 사람은 당연히 평생을 바쳐도 해결할 수 없는 문제가 된다. - ![조합폭발](https://theorydb.github.io/assets/img/review/review-book-probability-again-2.png) - - 확률을 계산하기 위한 가장 쉬운 방법은 모든 사건의 경우의 수를 구하는 것이다. 전체를 알면 확률 구하는 것은 그리 어려운 문제가 아니기 때문이다. 하지만 위 NP-Hard 문제는 차치하더라도 약간의 복잡한 문제가 주어지면 가장 쉽다는 경우의 수를 판별하기 조차 어렵다. - - 개인적으로 경우의 수가 가지는 진정한 의의는 특정 사건이 가지는 세계에 대한 이해와 친숙함을 도와주는데 있다고 생각한다. `경우의 수를 전부 알게 된다면` 사건이 형성하는 계(界)의 모양을 `전체 지도`를 펼쳐놓고 보는 것과 다름이 없다. - - 우리가 어떤 확률에 불안한 첫번째 이유는 경우의 수를 전부 볼 수 없기 때문이다. 경우의 수를 최대한 많이 보려고 해도 시간이 허락해주지 않는다. 항상 `불확실성`을 안고 문제를 접해야 하는 것이 내가 생각하는 확률이 어려운 근본적인 이유이다. - - 그렇기에 `미적분을 발명한 천재 라이프니츠 조차 주사위를 2번 던졌을 때 합이 9일 경우와 10일 경우가 같다고 착각한 것이 아닐까?` 본 도서는 한정된 학습 시간 내에 경우의 수의 본질에 흠뻑빠지게 해준다는 점이 백미이다. - ---- - -* __확률은 어디까지 적용이 가능할까?__ - 확률은, - - `반복`이 가능하며, - - 한 번의 시행은 `우연`에 좌우되지만, - - `전체`적으로는 수학 법칙을 찾아낼 수 있는 - 현상에 대해서만 관심을 갖는다. 일상의 무한에 가까운 사건에서 확률이 관심을 가지는 대상 범위만 바라보는 프레임만 형성해도 자신감이 생긴다. - - 그런데 중고교 과정에서 왜 이렇게 가장 중요한 것들을 먼저 알려주지 않는지 의문이다. 그런 점에서 본 도서가 정말 마음에 드는 점은 각 장의 초입마다 이런 확률의 본질을 명확하게 알려준다는 점이다. 배워볼만하게 징검다리를 놓아줌으로써 독자로 하여금 `나름의 체계`를 구축하게 해준다. - - 중복과 순서의 개념 또한 마찬가지이다. 순열과 조합의 개념이 등장하며 경우의 수도 다루기 만만찮아 지는데 일단 `중복과 순서를 하나의 프레임으로` 들고 문제를 바라보면 경우의 수 문제도 자신감이 생긴다. 그러한 기준점을 하나 들고 기준점과 달랐던 문제들로 나름의 체계를 갖춘다면 확률이 그리 낯설지만은 않을 것이다. - ![중복과 순서](https://theorydb.github.io/assets/img/review/review-book-probability-again-6.png) - ---- - -* __일상을 확률 세계로 대응하는 감각__ - > "비율을 볼 때는 항상 비율만 보지 말고, 그게 현실 세계에서 뭘 의미하는지 구체화시켜서 생각해야 해요. 아니면 통계는 그냥 `숫자놀음`에 불과하게 됩니다." - 오하이오의 낚시꾼 - - 통계에 대한 직관적인 인사이트를 선사하는 [오하이오의 낚시꾼](https://www.facebook.com/buckeyestatfisher/posts/750240282584022)페이스북 페이지에서 인용한 글이다. 통계적 수치가 현실 세계에서 어떤 의미를 가지는지 노력하지 않으면 라이프니츠의 실수를 번복하게 된다. - - 희박한 가능성에 믿음과 설득력을 부여하는 p-value를 남용하는 문제가 지속적으로 대두되는 것도 현실 세계와 동떨어진 숫자놀음의 한 일례라 생각한다. - - 그런데 어떻게 하면 현실 세계를 확률과 연결할 수 있을까? - - 통계와 확률의 귀납적 성질 때문일까. 아이러니하게도 `전체를 보지 못한 세계에서 전체를 보고자 노력하는 양상이니 훈련도 경험의 양이 중요`하다. 경우의 수의 도움을 받아보고 많은 문제를 풀어보고 그렇게 다진 감각으로 현실 세계의 문제와 연결도 지어보고 그렇게 타고난 감각을 쌓아야 한다고 생각한다. - - 그런점에서 본 도서가 가지는 장점은 다각도로 깊이 있는 생각에 도움이 되는 다양한 예제들이 가득차 있다는 점이다. 예제도 그냥 양만 많은것이 아니다. - ![몬티홀](https://theorydb.github.io/assets/img/review/review-book-probability-again-5.png) - - 보통 한 권의 책을 읽고 나면 누구나 2-3 단어 혹은 2-3 문장 정도의 가장 중요한 핵심 주제를 요약할 수 있을 것이다. 시간이 지나면 많은 구체적인 부분들은 망각되지만 그 핵심 몇 문장은 평생 가지고 가는데 큰 문제는 없다. - - 적어도 그동안 읽었던 수십 권의 확률 서적에서 가장 중요한 획들. 그러니까 무한의 확률 세계에서 나름의 체계를 잡아주던 기준들이 하나씩 예제로 등장한다. 그동안의 확률 서적에서 배웠던 것들을 총정리 하는 느낌이었고, 부족했던 감각은 보충할 수 있는 느낌이었다. 이 책 결코 기본서가 아니다. 밥솥의 뜸을 들이듯 사고의 영역에서 만큼은 그 어떤 책보다 심오하다. - - 확률 학습 만큼은 확실히 다양한 문제에 대한 경험, 밥솥에 뜸을 들이는 과정이 중요한 것 같다. 주변의 통계학과 출신의 지인들에게 확률과 통계에 대해 물어본 적이 있다. 놀라웠던 것은 `가르치니까 그런가보다하고 배워온 지식이 태반`이라고 한다. 앞서 말한 뜸들이는 과정이나 현실과 결부시켜보는 훈련을 하기에 고도의 사고가 필요하여 지치기 일쑤고 그런 방식으로는 속도가 너무 더뎌 비효율적이라는 판단에 마치 수학을 학습하듯 엄밀하고 딱떨어지는 논리 전개로의 확률에 치중하게 되었다는 것이다. - - > 동전의 앞면이 1000번 연속으로 나왔다면, 다음번 동전의 앞면이 나올 확률은 100%일까? 50%일까? 0%일까? - - 조건부확률과 베이즈 정리가 왜 어려울까? 단순히 사전 분포를 사후 분포를 매핑하는 과정이 추가되어서? 내 생각에 베이즈 정리가 어려운 이유는 확률의 본질에 자신이 없기 때문이다. 이러한 뜸들이는 과정이 없기 때문에, 불안하게 계속 공식만 외우고 그렇게 배웠왔기에 그런가보다 하고 쓰는 과정의 연속 때문에, 조금만 문제를 틀어도 머리속 사고력에 제약이 생기기 때문이다. - ![최고의결혼상대](https://theorydb.github.io/assets/img/review/review-book-probability-again-4.png) - - 비교적 직장인보다 학습할 시간이 많이 주어지는 학창시절이야말로 이 긴 뜸들이는 과정에 적합한 시간이 아닐까 하는 생각이 든다. 본 도서는 상당히 많은 문제가 등장한다. 비록 현실의 문제에 비할바는 못되지만 그래도 상당히 유연한 사고를 위한 양질의 문제가 주어진다. - - 3, 4장의 경우 온전히 문제로만 구성된 챕터인데 파트마다 별 4개짜리의 수능 난이도 문제가 등장한다. 물론 학생들의 입시에도 도움이 되겠지만 진리를 탐구하는 어른들에게도 도움이 된다. 재미있는 것은 수능 시절 왜 이 문제를 못풀었는지 당시의 기억이 떠오르기도 한다. 다시금 본 도서로 형성된 나름의 체계와 프레임으로 비춰보며 스스로의 사고 과정이 얼마나 향상되었는지 그동안 보지 못했던 사고력을 가시화 하는 기분은 뭐라 표현하기 힘든 즐거움이다. - ---- - -마지막으로 본 도서를 추천하고 싶은 독자는 다음과 같다. - -* __데이터 사이언티스트__ - MCMC(Markov chain Monte Carlo)와 강화학습을 심도있게 공부하는 사람이라면 이 책의 예제들은 마치 퀴즈책을 푸는 느낌이 들 것이다. 그런데 생각보다 난이도가 녹록치는 않을 것이다. 수식으로 전체를 설명하지 않는 현실 내 문제들이 제법 숨어있기 때문이다. 재미있게 풀어나가다보면 `스스로의 사고력에 부족했던 기본기를 채워주는 느낌`이 들 것이다. - -* __학생__ - 그저 문제를 잘 푸는 계산기가 되지 말고, 대학생까지 밖에 약빨이 안통하는 입시에만 집착하지 말고, 기초 과학이 어떻게 현실에 응용이 되는지 깨닫는 계기가 되었으면 한다. 공부는 점수를 높이는 보람으로 하는 것이 아닌 진리와 답을 알고 싶은 스스로의 호기심이 가장 큰 원동력이라 생각한다. 나는 알파고를 보고 수학을 이래서 배워야하는 거구나 하고 땅을 치고 후회했다. `기초과학이 왜 꿈을 이루게 하는지, 혹은 어떻게 돈이 되는지` 그 과정을 본 도서를 통해 잘 익혔으면 좋겠다. - ![벤포드](https://theorydb.github.io/assets/img/review/review-book-probability-again-3.png) - ---- - -* [책소개 - 다시 확률 통계 : 확률편](http://www.yes24.com/Product/Goods/90927118) diff --git a/_posts/2021-01-19-think-hello-world-2021.markdown b/_posts/2021-01-19-think-hello-world-2021.markdown new file mode 100644 index 000000000..d81929afe --- /dev/null +++ b/_posts/2021-01-19-think-hello-world-2021.markdown @@ -0,0 +1,21 @@ +--- +layout: post +title: "Hello Github Blog" +subtitle: "드디어..." +categories: think +tags: +comments: true +header-img: img/think/welcome.png +--- + +# 드디어 첫 삽. + +--- +# 시작 +## 여기 오기까지 +- 생각보다 수월하게 블로깅이 가능할 거라 예상했으나, 지금 이 페이지를 열기까지는 엄청난 삽질의 연속이었다. +- 정말 운좋게 [TheoryDB](https://theorydb.github.io/envops/2019/05/03/envops-blog-github-pages-jekyll/)님의 블로그를 만나 여기까지 올 수 있음에 무한한 감사를 드린다.. +- 사실 이 페이지도 Local Server에서 확인만 했지 실제로 github repo에 push 하게 되면 어떤 일이 일어날지 아직 모른다. +- 무작정 포스팅 보고 따라하고 이제서야 뭔가 블로그를 운영함에 있어 바늘구멍만큼 미세하게 알것 같은 느낌이 들지만, 계속 하다보면 더 나아지는 블로그가 되리라 믿는다. +- 기존 Template에서 좋은 글들이 있는것 같아 그 부분들은 남기기로 한다. +- 그럼 오늘은 여기까지. \ No newline at end of file diff --git a/about.md b/about.md index daacdc748..9a57d9c5c 100644 --- a/about.md +++ b/about.md @@ -7,8 +7,8 @@ order: 10 ## 소개 -Github pages 블로그를 운영하는 중입니다. 회사라는 틀에 박혀 찍어내기식 프로그래밍에 지친 나머지 블로그에서만큼은 제가 하고 싶은 프로젝트를 진행하고 싶어 만들게 되었습니다. -* AI, Data Science 중독자입니다. -* 책을 읽고, 리뷰를 쓰고, 베타리딩 및 베타테스트에 참가하길 좋아합니다. -* 소소하지만 살면서 얻은 깨달음이나, 개발자로서 경험하고 배웠던 것들을 공유할 예정이니 가끔 들려주시면 감사하겠습니다. :) +Github pages 블로그를 운영을 시도하는 중입니다. +* 기계설계 하다가 개발을 시작했습니다. +* 일단 배우고 보자는 생각으로 공부하고 있습니다.. +* 공부하면서 정리할 내용을 포스팅할 예정입니다. diff --git a/assets/img/cosmo.png b/assets/img/cosmo.png new file mode 100644 index 0000000000000000000000000000000000000000..e2c110e5186b86cb32524fe5da61b4cc2cf9dd24 GIT binary patch literal 52489 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

z z&lTBn*QcQ_9z6kU1)I;|7?!NVLkc#bW7$FHTTLX3eU=^QK_PWx!PY7mH1zE$KAtAl zYbX@75LdDbD7RW(VTwHcNrU5puwdIK6~_SNp%vd$V8YpJ?6Q6%%|&t7qaNl^eK~Rh zkFy)*=f%+Xia*gx?{-7QLXDknW@N`nyMEGdD&xE@A*jf*_qP6oa|Q;Qxv66fA#9{$ zc1Dd(!Ny#EQ88As@pDm6hJo6=%HJ3Grr|W=GAIq9f!m9~V<_t+72egCVIun|L5n`D z?Hi#euq)vDXOD*o@s0m-NALrvI|sciy8YoY3Pmy?tgBib@V#zkx3lFR@R9uj2QpP# zx1@4Z!+b+Vqc3&FaEc_|hO0*i2t<}Jlt3web=QYnPNhnu;LZ;wRhQpPGRqm^#4tAso zzcN!H)-2nCHsEkhpF?baq+i-WwT`;_Z_yVZg&%d{mU zw^EJp?6M*ylfG9o`u;589kaL3xvr|=maj0AhR7Xb5hSSk7sGm#| zur+NU&Yd`?58>1+ra?7PU9};@AK!ly;{JUG45kGx?uE@@;QHD&qZHAwGVhy&WcEL) z3GzrK38U`FZHwoV514QJnNdZA*0!`?Ukdm0ktl26%tneemv)C+(w5zYc2BS$AbHGj z{cfMp5Il~pO)wk}8FwPJ?_hcwDw{{nR3#b~Il4G%*{{B@eZBt{?-dxN`0V3Zz%I^I z+>4#|3j8>fywE&Qjrtn;I&I)j35_J{u7q3!oGpUhQJD%Qm+}+92;F{GOT%3H!p(p; zkV%;gb~x>TTnr0gOUukUhdKCc)HRbrbaT>_^-)f%X{F z{ul}J*H|)T?jCfm>EeyF`OQcw#m}cV6*@Nn8zwBOeg4l_n+AXSL(=241A5_~fk;~?gu}hewax=Cg1BfHWD-0QS zQJ%dYm%zfj_m{$Ln9^odKmvZ>tXzE~M0{}dt?sz*Vu0duED%2*zX;Rm3^bc!MlF1L6MTB_n60V*SztiyY0EcF7-3P!J14B)d$RnwfpWf zkqhA@%9woxlznY+D90oigB>(w#3P3z_+-IPuSHDPhi!2mD6|oJ@pl1F%0>nQu=KVU zaI<7x9WCZTnl|u*_za6}**aMx+@pK@>&*!T{gUMA$NDk>M!alg+isL}Xw)xsG-jRf z7~rLlAKE3+w~7&jVv|fz{&BwOavqM?KXoJMEN(UKgCN==mDGf7V-!u zK)LO3DsJ;w;=+UIp|_?&F&?zqIp*TtkiWFGoYNH^v^O^wOIBli6|VU3jKr}dRFPz8 zpH_x#5N4cuBg@GJ{XI}O^b6oPNEn4%u6 zP_=^rCSkZdSmbFeoTW5jR>-IuY~A z;ufv(!l9rj%6O>Y{;D8oqWTO9lYYy{!kRxoe6QP75C;&XDn`O)#`f`X5+`poeE%q> z2R11b2k;268$T8_nGeRBK);s4o7*(U!Uw3Sm0cWou^0sLm*fa0It;NdA6W~RGMPh` z_B^zMowSWc>?*e)nwL2Mn##(;Gj=A|$e&buzChbNDu=N6ThTQ{Qo5Og@m%vqr35%iFAP!XXb|cgentA%VUDZG;SQ zZzSBgqGTJ*@D7>)$Hlq5FxGpoK1(&9CQ`AE1RYC$NzQ_#pPu1|k90p8bl!zS=jmA9 zej&+=CPW*rbF#2q1!EjQy-EHT-cr(nDf?FJ7m5J$R|Q54h$!~qb48?J?~maIt9-*g z!NUrfck{k1T%n^@7jlx3k85Jz1Ql>xEr|e0pMMo-S`Fz7;dn*<@u!cZP!mtw9L7=k zdqS8F$a8!f-Jp-i{Jyp^iXg~v*%3LJ>02RYXfC&%p;`<9Yh^s0r zQ+;D6eSJVQHl@v>H~@apA(WkPjeW|ZhV0~{DJqWsC?*pCijX1<<+jf;6R-+w>`@#E z8Pud&#Dn)p*^|gx(&{Nv`^I{ChB=2}*fheNd>L62?z3)l2-!CD4^-Z&(6u}qr@oH+ z%anV5#yu4>nww5Vl6ma=7gU6oF35HI4HfbPbdtse#h_xvLyO-%P3rfNP!4k>^LX(< z^vRwhf6AmK-06%MGmObFlBb}JZXIW!RpKxhnlu(_b`m^A7^etU8WY3L!jBcaas_qVpVSl{H*t)Q#x zlh41=d|!6&wv!gA^(iLS!;}EFbTqqx%*k_C#rn6A`M0VbW>~qZ3O12E3!#UEDe&b!rmbqNk@QmD0~V#{h z!T$mSheo!(oCPLq0xtLA$Vx`(_&h;sqH*(KT$GJS4@$OSXsH*}RoBA?$ZiW^c&$pJ zLMw0X88Aj#)AL%-q}r^G$rWonr#+X4>Zr(~wCE3utskEY(!?zUox>3Wr7|j1<|+O2 z#hy%I_QXsAwy>)x18GvT+``vL{9#1DA(o|_MoA>%bxW9IsSre(qmQh#A@`yGi3mnd zCf~EkQGOn8(yW;)wMbc9VTncgWGp?&dnyZvrS|Ua__O6igz3kh61iez{~5| zzG@!`UnBn1gPw&hQM;oqHy0U*-f{@NSrxLzQZsc;#LI`;@9TEMZq zyL(=L&q0oF2(Zrlh1V%vyT|Kn?j&qB5b0xpXrS0n8I{QY(j~Ep!2XZF`B#tia76ORg|24txXz%w%Qg8=? zdFJk`{rkhD4vJRW=4;br7ddg2`*c1&WopXF0UCQE6=e|mH#*or!L$u#lbqO~bHiiX zDbFD(ClzVqSgnL`#^7yRc6gE<8+7d0$$mbzmMit?&zrEV>q+9XghFWCNEBS=6fX7e zmSRaZY_6g{seNcv1{Frn!>SjlI3@2P!Cs|PaulyacUcSIN5>n^4_3_{Ux2n!Wdu7npni2F$(NlTDF51-1 z+eke=wX54fTcABrxmOh&?l}S5Nm)_lw%iApz&2rG6kfjR zDs{t@U-qZGX0{R6zWAE`KVpQ#-O5f`Lk>24Zy%K<+-fO0P)`pvX3o^MMt)gDoA%98 zY8sr(zNaU;!3n5#NgX&N>H4k4r^I`uJvo78&DrW2KQm=&6Ggd@wQT+x@YH$UI_(hl zBcbv6lJE!E(L44-MJn&t>-1!h44J_$h1_MrfI!UNgEP=|j_Kk$8gl{JCX@&#P?4Kx zeRNp!H7JTaM}sqM+eIegYx8P|LW&TZ=a(Lj{w<$qpt&Sxh&}W7`)AZ<)o8Lb=1!gD znQM}>Yf)2`g-@#ZR2k|^f*`+N_3~#{F|EEr8*ofVt(b4L2HOwEUl26fTBb!TlW*T6lsl=wXu!WF@P zxev0#2Z@)oun?2#C`UG8UI3^Bc$NlxdbW7AszvO;N;E3EnSxw2Msz(@(m-!h);1LQQ>jAxhmsUu6$H^_0JJjYiJzlw);z1@ zAXQ&>$pKXIAg;Zd#%M_Z;uwaU8T&KaH2Cgq>G+?2fUH)Ujze_#YFyF1B}NtlkkW~$ zS#$iKov4VnpSco=lGnG%ItJw?mE|g#0TWWfoRP0Dmt)%$pDC_M?V}tt8VI!na8P+Z zGrSdk($>KuF{Z)^pxp{7fK3sxxLI4csi=N7Tm2R3C+2u2$xAzMJ$YrBxPu?+` zB!Hf9_HMbfD?L9n(3Ct-lh<^9A3%rWtyx&Ql2~v?aIHJPUHW}9a2XJYN&dZ_LFcN6`?0tnY zpnz1Jcp2t>kQEBhC?BW(ItYStCF5uN0kZ_|37!_$R+O(%IwTX>b`E z;Pkhu6b+&q^%d_KVcD>eaueJmhJDWia6stk@rubOvTez^)Po*4e+lye7z)kPRnuxxL1a zCoO0tbUxH{VQDxG*_-brmh#+<`4R5qVg2Q>D=$Uh04KwCec zsRmd`T{Jk9i-MVJd#@TZALHc4v+O*G>qjcQ&7m}pyv(ml4lj^VIM1|(a{LGx*06z* z?>kGX2M1Q^w+LH=@EqF>7wd1)fFb(4&d$RwzaG2}qFcQHP`6jU?m6fOz zX)2eu&C_8${j8+6#b%xZ_xXe#G*;62(HD9Kv5H&GH`IT91fQ6IajtwAtJFYF^E?C( zf##`muGaRm-9T^BD{KqJRJ1*Qkk+=lz>lSrYr0!>V=YybFy3jYq3h8JR~x}OZ*|qz ziU0}~h|h}He5joC1?Is#ST+YdNr`9V-4RL^Ob{P+@%!iB??}DMqB1BxD(^MiY>YA3 z)}f35-Lqc)2#r%3gLjh?t%|0nFl@ zSQ{c85YywD%p@g`){I@%@uRloWWK{KN?y6|FdT%WnH$?T(6Wjy=@&h!PXtaDRB8}j zzdxISgy3rM&|l_Rfajc#(;jl#48Vz>;q|~OM*^{KwIB>prH?!Z*4J2o2Pfe=cI`oh zUvErb#T>YU5br1i#SB7CeW`(wr6t$H2O8)Ov?Xua#-1}Nv4DBQWT$W)i%zpX71`c} z=dlx864Zj;>^ew*x&D4nMVfC*wa+$tCefwujLh5LXS^psNm(|YaLz>J#0ibi)cH&V zvf}~kp8##fA-HK9ojGmdJN)X_bx zmpbyBVp_F?_IJ?broGsi9_v*u^f~rHBykFd$hLFv)SrUs5urv~*3H3`?~!B$LTT{1 zEdTHm+5-GntgK;!5_o;tq_OW}gqKZcGPMLd1aUV>oIvsFfhkYKhJC;%DH~J>^*%Ov z;R?gz(hFlflB-GJMabc z|Cc%HWPM-ap5+g-nu}VJ%ve@vQf&XaXd2NOHcn_uwlCaP7qv^Ktl^s8bV zAg8SF_S(Se;(Av(oJ4|2m$9j*LMPm(OhtLwTn0*??p{lTs_x|P5A>74V-ArnDKDF} z7>sFOqW2B#pQ{7__OJcUXWt&xReU*CAmM&b#*~~`D)+g{HBP06br&GK+v)JC{m-PA zsiAr%LEo?xA@GPG=WV|V^6>j}5oz+FQdhJZ<|n#Ibs>7Hx*+tk2C9 z+8E_e3A)DJhCKyM^iOgoHe!BjIvmz#4z1EP?o)gXv*dHBMg9Ypf7mU34vOmOg5h09 zV3_OV!=@eXwxG9vb57$Wy-l8LNb}(X7aH*9s9&AKTI;V;ik55Cja$8ssRJQry)&(o z6*WV{b#ySusAm3B2Yb*7$y@7BX3GAz0Z^1Msex6&AA+M-l}qK>m`tS-7L?)%Z*4eF z=-Fls*Oz$KZ=nDT-^0-0s6r~l#QM!+E`8w9-jt4gvEA(mEc)ks=x30bM3&H+Z=jDE z26^io1tS4{fKclZOtqCX8_Tvo8lI$+OF0o7qX3(o1Ny&S_K;X4b zbBFJk22J2m!nX5oD$cbMDhS&P71Fj(w4ow7XURWOZ!dl&VU{e(-u?ru6JvGgDT5DO zfSj~}iOuo|O6U2wi&C+JF`V41WA41;-e|9vUiN%sMIrr{ajZtok9Wmo!tDOqMq~a& z%OlB9GNIcqW0H&hev;a!rZT9Cq`){BV2p?xBV24Lwx#h2bB*GyLq-#|YmA(}hS_vW zhWus4H}$Cw8*DuR4G}AKze#uw*KhIgJt27+`Vf(e?$NxgdpR!8j6-J{cFuui6Ow(- zCz%I94Qi0gnHwMTcO(m{e%>za3N+;$L!0q{b@`u=;b6V{R_WPjZof0s_C)44&TQ%L z<-CLK2si;vfw*}!P8l|^Kvr{~w*$>Bx;uQ0)5$i_96r~17U_!F`wUXmfdl6oPzZBd zC{cPN`v>QngY~oh%e;}-Ip-2qN&_ksj7$d9j1js<2tv8Lg|g`Yn7+iD{ZcZ;=>bIv zWjsL)ijb&mtnemiOfs|jCh3CE^GS49Q(*94WHA>YDJl4H5K}#SaAK+Jg-a9b@#0oy z0Q3=1+BH<#rl+y!ja|BLs3!h;`h;ZiITq-42cB+|sh4Nx7USN#%4le`-|i^YDKvIC z6CXs}tqCj(@w6g!ec z7s-A80kwHp;Po_c3DJElN_J>t8@gu$b-)3+gVN{OJfdk_26GAKrkYx_D3p}sqxDIW zouVdgR;QHp78lOeig70!F^(!{&<52tozj5x#C)kFEOOeJ8OYzT}jF)g-60J*Xp4(+`@NO3C zL0kF#(d8Q|PWeByxA##|MO=aTMV~;}2!aH-ea#~kF(F!xvCor| ze!jcDQi(&4zNu*$Zt8Q!`b7;osk0CW0`~sH9Yi+wcyYfyiKF@+tB2j}(FEL&Hw?gR z5f2I*2FEYwtx*iyt1$BvGKSX*SUh>Sc)V32o+K)<;%p9#8c*6 zLDMn^$OKbd^r!w^fhS2;OdF2Z3ysDTM=(&C8?6C!^g&6pn;?LejO8k=o=eW}yu@tlrCrCj!f7r%wfR9bPW=Z_c1#_y^dg50!Vz3aMi_oWNr(lJBRHLGsVmt zxq30d$B0oRM#;%Tv^+2*u&;}NpaOxO!dy6yCw!ef@hM@rJ=civC&7Qr3I6`wp<(2g zYQ5oBNQupyr=MxN4rSfyvg4Gm?JNOQU-(A*xE>)FXm%L;L!qMXcMrV5+n=$-K4%P{ z``TbNmHz-@nl>jVNN@oFp1I}_y@SCSd_yEjTTnybM4H5K2Z5*pVgPVtVUCDUUh#Jh zD*h*FM}hOGWg^eoVPax%N`zf}^hG~GOxO)F{{Ti1bg-@0dYoUk9YE$OLl8$RhzYp; z`)1%oQW2|qODZk2& zWkIWLjC8`9sgHiTc{5+Uquv=JRTy86mJLtlM3`>ECyaKA|w;q&+`+7iAb;B zARqUbBLJTN0OSlPv*!@g<{`{eqTGFiNnNZ6;s{GX4qz#WCW(H^HRcx6`~(GIk@?)@ zJ6ta_FZqLUI_5pcOI$<}geKuk***UK2p|Hmr=~RF&LMCEWCqi{1LhJ7^C*G}rWk$h zV-Rk#CKNU~T9{bC@6jxTJ73yb#Y?{HPGBrx&M$Eeq*FhBs!-gNiS zdU6->D$Bpj3vt;nla7qk<;q3-e>DZGui9A|jCW%^K}^^44mLc(P1#NR$9LxLW>_Sr zUwBH&<&$49I}iID2ub`N(_}>qG1?NX7D4R%D1mld)HHvX1WEfq0f$wqF+>G<77#QVC>dyd)`of#w1Y z{$dY5_Jkx;A*S47KpvLMn8PiCt~Fb7nl}lip%+w#8$L`ecv6WKr8{>=4mf@ z`cc`2-M;XU=m4q}0jdMC3|}wqQh=L|;~e>wvB&58g>lFF;3)DwCnhZ6 zO%5(<1PH7wHRFiGXb&9}K(rg8RZn;bh>;uV{{SHFPoS6$#DRQ$Od9+BMsVsCqv4`O;o~M z409>~6JoQ>sbEXN!2aQM%EkTxgwDZVh&jY1Z!iKxPtDB*0Zt%h+WsMOCW1Uf2*L1S z1OYvuYLBo=ffg4?r(a*d<39`iw-3vHi2|d&JQ0&7q=3taX9P{FFd7j-f z$NR*7FrbEe%n6jgF@57;8AJR`YZKlz)P%8zQ|Ia=Z;zs|PVz<`eyL+Vfd=jdXfwnD zVF+O&M#;&P%M|e#@8sef^BocX5D-o&d_zWTSxaOCyMaNCut5Zc{KtwA(GnQA z6(LAAY{>nfL`z(3#2ml!f$*)PP;WHGyXsh9kdiz{j;#w>_U{&KJk&|$!hleQ&*E1q z0PET;OSgy2@H=!hsB)(BziC5G6{`YIJqkdA&ccT!1@7SIh>vqL70g(lGQYXGlqVT) zv$PQ&4p+ZKK!V9^EJaT;p;Sgtcn2=(a`@;3&;)b{NtPiGEK$$xq8EHGHF@Q$Ol)Qca81E4Jv?GG@jx8P=R5y)7?BdV;9^9&uN6j7tw^NM#lWl zGP-IHDvYFklsFo&_ExWsox93eGJx-I(g6UH1w62Nca{35f*H>Gk3)oqk7o%jmj3Wq z{{S#&JVkf>3(Q9DssM+_iQKXpak9Z+s#!8@QWl2YKI#U+2eARc;Ua0h=NAOqbp%(_Q1b!!GT)%k3bpW2-er} z6|2M|-?Z|k00ZnGGYVZm84%eP54A%~&jb)>XS4+)CV<#QBK+;f5RpQ$4*-+xG8}Q< zSYVPj{6-Q$04IYR^U+v=m*#Hm{$Q_dc%0KFej&%^dE5lpc^}-#UvIp`J2wne4@~PB zuAWCnS5KDzV* zMhrdx{V?mUymVK-(D!1XD&!W)BpcthV6rH~q5VQhY?64tv_qB|Xf+YM8beWK;}CaS z2%SPq5hyd+Zc+YH!|)RzH3WpP+;#xv$FR{KXo;>q(UAxQHkBRC5MQ(@q34J(=iyDE zHc!kWhC%HpBa_S^g2>P@K*nos`0+b9`|%g~%i>+V<~SZhKHkv1xwVV#)uO<}AuZ;| z_W&9oKi|A(oacWt=c91u!3m%r{huE)p&}&Y`$nbrzA@3FNbmQa&=L@20)MWYo~F89 zy$+Ou-)|jF3f98JeMlgXLL-=@FA zlP&MebUVy2YQ>2BAd;)JtsyO9AV=l|H}O580JAg{V1okN+-YUc9_khaGrbvg5VOa` z8H|O-e$eQZH$V^h2q0lK`^;z$kp$uNjW9;T4A_w4Sey_Yxb4g z73H7WZpp%>=cx1dnGN3^r#Ce@r&9Wm5TaT8bm21I{6g7h?)sDZlAtYE^V_$k@1WQR zFeWm$5pu;kE4t~Sh%c7}Y5-pZUBD#AlL(N=I?ueZ3!QENvm60tp#7zkVTc6#N6x

YQ8v2yhJfI4gT>F)y=V2wYR0W<^b2ftKL!<2MTKQ=mibabZf zKT-6HGlJvwe*TbB`UC)lLGK8SZ#sk+1?pl-8D@vtUjx}pPkzt?kUxlx6`X89Dl!ev zydcmBL3h&6*)I^P#W8`56rnQLb7qS>FEPM1vLAfZWLVGV`iCO?4*t-L4FjW@Tu#!e zRel-!!)pNGt{`;;aL*ngwTYk{4!z~ULWgWRpJ)@m_l}+*@qGg#i$fwa5lW*P;f&!?B+wauQS+SmB20h%a@Imqeg0mCjqDF}<5SO@UA}ALCdA8&q^wb9MTMuY-W4pI1P|Ea9Ci$LhVn

-3Zk=pp=8e0 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 literal 0 HcmV?d00001 diff --git a/assets/img/main_left.jpg b/assets/img/main_left.jpg deleted file mode 100644 index 4506f4e41ecd3d17857f1f8ddfb140fcdccd6973..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319072 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

FT*wYosi(qrvME!KXiZ9r;s^+CG@zU}Y1ze9g7 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%0DpIxI5LmTC;VkXckaO*aBKAVrl&BM={(3ygD=% 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 cDEV2dtE;Fw(eNo1H~C~K=`^%`1JnK zBcWDjw_SR&Tkv7Sd6R769uNBW1*azKs_>A|pL`C#eY>$?U_kSZpE%=j|8-5icB<}y z75uY~y9*1hrU}UC#oQ+CH~}+20hkN{@$rR7-*JkO)I6LKP3$?p85n`!<#*4h-+P-H z?|WE>SA*_V{30sS-4}X56>NBceAZ3cC#DjDYmRpfe{*cxE3k-r{w!d~I$$3I>?{*I z7wzrdmZH}CLjQ6mawetZ`OlOIT^#xBxdtT~di8bz;w0Ge_W$X?NPhM-9Ni3edeD6) znK+ueVyr?pkxlAb#}Cj=4_L-OHNHVW10kNXSy%USB{j!R!D&3+GIhvZ)HBcOV`Y2BN1xP7CSvZOHMIDb+D4eig z%pIAN?b~K>SHTRZkr#@dxL&|~xcG_)9*n(5^`s59nx}5gm?LB9*MgT~$Z;bBX=h2w z#`EY6lPB#4JlvKc7q+)GU`HtA2Hl0v0l|8{9DGKsR~#WTkbjxYiVi2vv8%PanM!y1 zh%^Q*sFe+9+0~t|5>MJ9WCB7+*jdrT;I?WtBN;DDLjvP^>z0pwX)XwSGzQ`KD(yH9 zY`nR@O-9G{HAue|S;=|?4jfRw_u_g`%o{HB_x%k!D?)vuq|J0!@sG zfs0TMGjvf+C9ifF1lve;v?S*$PGn7+9K}2Y-q~(-O-U_nl3-m;Zd)%}gjyvQCsYzy z)-{Zb1h-J&CT-Q-bL0vVb|Vqfx!@d9dl063jAl!9lgDzoz`R)T*_Op z5b3so=ca79;W!3)hjC>Lcp$$!9t#d`gRlE z`hr2+0V5QMt#K|~b`eSNDqTd!uYH(=QUcCbYQF=S93VXEbM*fp+aO_fAKpakMY$Dx zz%iyw>nuuWr_5qX)2wfn+=j^U&?oKu>Qst)Pa_>nkb*83mDp!z4`=8qJ~^ z;SnC`bOF}Qt%QB@l@vQm`9tl9+0-B1%bIEZux0(vM76omK59G0B4xCmqdB?~5 z;rNOyarzb$fw%6MK(W9mL+IS5jJ5YvG$=RsQm$81q zG`)mkz{R;k=Onu4AoV|e@YR+X{#Qu^?m%sfm^JgH3O2LRarUUgox^t`?H7$4Z( zy*g4@^$W0kUhZeZFlU8MV8$wirA?Ct;vv^Sk5r`W2O$axTnI$f8VAbwz;!*68a=6>l-P)cjne) zdO`y=HEK@Y_iDrdY|SV>Rwq;6Isb@0foJ_<fMWY$j+xKl`&cT}V1?Q=$Ao``Bf$ z6{iIhIU;;0HYhg-Uy4ay7~W?0HI_kbhg#w3{M6B|$!LT9!L1#BY|>>>(?p8wW63y{ ziUG=D{CIYXqkstqA|0f04}OIspy$+UY_EQFHR0sRTyer;=yFk$-39>oUb}g}6mw#* zSNls*S@-P9#XTa7B#xdLglk5=2*KgKg2aeJATpNz9!arV{87t}>%!v8K!0&31flNJAy zWl21?TvgJCQ_7qaMAlNtITxpn$czdB*L~l=u}Ao?NWU^c2paXK3k7Lou#bIPwBrG} zH;`98(lOwAY?ebte%;6PmJZH8`P^f*qT2jopS4H; zAiD$akuaZ%l4M@HLhBZQT-#}&t~EcScKD=;`5rZnNKkfQm;n3{wuj;m8lx8_0!L*I z*hq3{K~1rBntS~x2og?qdAE{0SN`cqIak)z_@fcW{&=rAcm)>g<<1E?BaI)e`+`-) zGsqnc3v9>KmbE%~smnL1YYYYzjM(V|ppZDbk6r^@C%$}X8E6fkS}C5Wb}G$ucEe;==>A7F`lewJ%(vb44ZH;elAJ!4EGy02Y~0k~p*~Ys zFe|Wd2^b}Ur(FuH*w}=zpq_0A>{9!|Xt~4FcrMf8X1X*m7#b9cIHX@AOQFR!-L?(5 z_IamKIa}BgNA|H88f{n$qIKwylaN+U!I|4&zRg4=T(HTEi^jC(zMSxE&U3mGacb?+ zz0_^yHt6M&LB>I{xxC@{LN4Tn0Fzk4O-X8m`JqJysw8@3R`lsWcUt$&0?!OF=+f6` z>YZo8h=n#r9EuV8&}$SFYk*fE>gpD&Ax-M2u|k%Mk*B zPc188kPiOp-a(nKR|4m4DL%QQnS1k3Vp5E#m9qGRsw~x?OsdcNq&dq^=xXv_3sHuC z$N41?&<7vC1z}(0MpJBC;;mKbNsD2!pX*ggkUs|`FK*@ON?!)rDlGv)?4P9MN3~2S zZHRUsr8^}hK=>8Bt9?pCFX}})({}M&AXw1s>rEB@7$>d=Ik0RdH9n!;ukOFj`7KA^ zh9%w0CMf8A4pdDf;X3rLk**C7R1J+k&=K&+pTB)heiATLGp<2!BR`?m-|$S((lUOx zG0y>;ESHPf4tY{yElj%0V{hfXElL(iX}VCf*B|CGtC1e1G2GSeHmY%kg8Fs%vdx;2 zmo0-|dW56a>+Q?rdc}N&ANXkS5EGA|K4hkQW|de*ZPj=1X!2gQSR=W;StL!%(&Awt z_(RHJ$EEFUJ88gBBKE0(p<$Wvi4`Z4q+_gVI>MyWy$okN+#tYlS^C*f42IORf|W5d^SRY@?s5 z3-Zhje8Dr47yhnV^Km-a7922Oa`F6ph(hE~5zGL2@^?_1E>ai4DGNfGwr$@c{?v~> zSQ`5G)R7Zo#Wj6= zuWzzVc~@~qWKO}j?QP;W_rj0KsAG7@Z5}@wiTx+Rt)Rf&+W9AUbmH{ zBg0q;dkivj6<^4OnE!@^Ndq0%e;PYx%*?{3mLh(+^C~O3eO_5Jmj&1k6tG!M4rK1y zz46m(9qaw%mVr?3hqLW&yVHH5QN6G8T4uy3HiKTH zI9wd~4E<&{MIO#PgN5>`U#jkK81T7axht`P4vbBJK@oagRnSkER~q(XtSLtssXf`f zwW&F6fc^;7e?56l5Z}9?3~OiOFh=a4tisHGIR%*tuGO}?E%v?C>-Ad|-tb1V`Gfdg zfxO@^^$w%AJW?sfIrm^q5;$*qL2}|eYF;L|wd}|n^i`{`hMzs7VZmp|$UsJJ7NNsm z+{c(PenWn^H050NHpQ1O9wPL?r|8%HEqIRD)vOBe&ThWq_llYG{*za5`@32h09RZA zeLWYmLQsl7bgDqh&>74PobQw3dZ$M-{p@>g&8s$Br`aC-0$#9(k`$uq!xSGLP1J;z zD?OZZL5Q`MZEDiIEixxQo|opHc}rA4e=GaXR3p;U&JAc%WNl!O-4rWH`H)65S5SDw z_DEN$)?4VLNbS*E&N1%5%hZ?ZM=II))4B7msLcHge!g&Lr+f=wC0v(<5O#npTI<77 z*Px0S1&#IYf{>q6P@24!~%Z}4H^sINlr--R-IZg9#TZ^s>9+t_~sZTT%9Nk+D-%?E9qt$L^L?*Z~09E2-QEu z=a~G}@a3X!C&qrU*r$%+bjpEFLL*_#sjPfn4`|N7MB&{k5q#1)^#FPv(>rUu%{EeB ztOF^e^ViK8NgjoEu&}3ZqV+XB@UHR@0HfsE3(v9?K?UwH#OIGrU@dJX;}ed^EOCYv z=K1U)y3qI*080mH-JK#XB2%BnK7HG4Qcj|@vB*`Smz~MxaOONlrsqEfj0UtX-uhp_ zTx6%Irux0+>4a&CpU=q|o0GnOO;B8yW#A3Gym7I>GZvePK^F9;(YVc>HVXR-otTv0 zqCzeJr=lEEt)wR!n|lII|3Hy%0{+QuH=^ewd?0P!g@7DWWd}JXS1d@qI)pP*-y7y@JmZxt)du8ED=BzrkL?yM0>>;@;VsCjzi9R+DQ15f^w8ODAPMPo}$U zpcK9`g=Mb}`l4D6V~68<8CLd$CLo1)>Rk2zh3WTIib#=84R{g2g(hS?2JB1bw9t__ zb87>>+Ry0DXH!;d+9Pt4;xZ>v_7<4Jy>0<|wsWe&10yao*zM^%xa0_wvEqCbFnkmz zHB)C#J|zK6YSyV=iZHM`3b?ULCfH`M9W69wg3HwouBN+W_Ya}mVWJrqJpC+CFbj&4 znaOn=1|pJ>>2^#Pv}~Wf3_~VU{)UG%jAl_+r@yo5GZbwmyla@5 zVxOj&!<(D8PO|ltZ(*_$j55NbENY=(>uebfLKyY>bz;PnHS~JycJ4onw~{Ba2Sb~dMEQnVsd_x!-?&uen9ca@>O3gv;2RqyeV2s7ubg6Qg7i(6vlt zbWLjV5A`gwy8|Q5&V7hKd|On!#~5{UOCrqHV*ap8PdMT0>oqhdcy^$Q^m1S$Ln5aU zvqL^)q++&Qdp&@;993IPl}F1%2)P;?!?V^Oz)8QiYiM#NvXl*r1KS|o4{%JD+xUs2 zyW0}~4KZrr@jOOqugx8?i!iqhh^VSuFH(`my{_w2QGA=30t{ixP5b3;4-A>p_v7|G z5v@y&+prcH4pKPClHpJ9fczIztHk+0#?a!xdGVGlYqvnBb-Gnq_;{9>jKKtlP409Y zb#VKh)`-*F5O;d=gk|GNr;S}-?79}xN}57o`P4^pS9IaMQ0m$Ju(jeb0;lnMb=oJubTzr&J!h@-hWT}`zTUX!Q{fTFawi1A_b0h&@MQ$&ed|8#Y*N=V zrs25SU&!`5V)4CjP+xq0$+5scYbxS(jH(m7@@p)+#tkmm#V{km;K8XlW-&Y}^YbOo zTYY8VL0d@3kO$k&YAa4Rf#GRjemg?0dCMp$yr`EIKqm;0mIBx{9f;#lx67$DVh$Y13TUD?$)%3joQJA+c^Dxob8ik431u}$*w#UG zxbw%L(9P9DF*gMLq&*_zb7}^dkB42aC!jyjAKd-R1tFs@N6Z9DDY%a>{Ayd29;oY? z${&OFg++Qb{o%EiK0c9QaOoA!K*w9%gLX*SLyWa_X4Tmw-RBxNp&qNA8Fmvklp#qF z;)O16Ke-Kw7;?*%j3i^<(Yt^*u|#_z`E=Yc9q)Shsgo!d#-{ZASKY+z!DtS=d^Nf} zuwJs6%;Bb*M#N_sg9t7O+anMq%^ENR`<`c1o*W`E5hpT0UO0gbfvUo}lm)w)pEX&x zV?dnCNP&+`Oh)Yt1kVELA+Kh+=>!h-;v=Ns9f$lrD*h<{X&gU>y&x$3mJBxV^-*my z-ZtY>m*}HMxz)g2aBhDeeqn$S6#Lu*YXG)CZg1|r$#@+CXa~%4dN$i-1;?+BpK1Ea zNUrT6uFF_B-w!dK24F}z&EyuJC2gP`rn?-nS2Xkj`hl*hF!e|`86d&T%AZkvt+(6t z5EKp-v>&i5AI+9&!JhV4vD1qez&D(q*NhI0js|%q*SkeRzdkz1UAYD??mq!(5y4J- z9gmBp?dT&ngZ51wks=;}R!R%_b{nBkI*jWB{+*O3{StQQRXoWhqcVg22(3`>tbX~1 z)GzWliZbiItLnN|bNE_Q*0jg%!_^nu%U+HJ{s7e3Dn zNYayS-~!WM`IbL@Pf~=;30+?~=nE>F$DaD}a#(`XT^$egA4Jx6L=?(BAey~hT`tJm z5flH8N8S*8Y;2O&nIoe+A{t!P9~6yh+~&Qub{og+K-fN>_G`D?%JhvtvySqReX_M^ zPXCqef}7&$&sSpaNZLBKpqU)6u$QCgFPbvx(inP#jYOQ2OAQdpzIFXL_w0>;oj-?N zo>u;{YnvVc(*FRluLA>7PkXSgqFktCEUNuOmm9nz7LEV8A;(%2hWS^>{8-<46dHn% zVg1S*Ee2oWMak?F@8D)ki44D2{VB>=HW+ z!qEpE+`IQd%@1EI*rTGNlw-!Ze+V`iuYTiGg0x{;vw7ZM`Fzv ztS%h2>bReMW|s_XAtA-@*1IlFv+rhVu`2t6Mq2Pf=P56jb&JJrHsVf?uHj%D1RK%| zPLl7%5`#Cl!57%4_dg>~8_oFKa>_dK_>zF@8y1zc+w=^9*=)r!LMdv;tX`!b_E?7U zX(y-TI&?YJ`@t@}b()bjY%On@DN?rXB@w-I%0kURN)P7LtKXKiVxd%!6EVf78$gXz02<1 z#_V^C7dA}NUB#y&6`GO$9O!|_^hmGgU{3tOUkKoFW(XpVe^;ETu&os=hHa;#RsccY!Wu@7yZc9-e*aZDofM7$j4Seab0Q#*x0#~UZ($Lm^$_3~ z0%*yBaeadlOG>u@S%po889X!=IuzmHXEy)ywv3TE7P@__7K)_gZ5t4FVls6qty`eX zAI^p||7OJQ^!>?rf~;P#sejI2g+3F;GG%+_`x;vu1Q;>YiAIge58uf;BFSft?x1{5o6_OwEdkJo<;c$ zi2YTpnWN1zso$bf_n(PECD?E4n5r$N`KZJQv2uz7Ct+Rs($9q%yvmx^&8+$1&W8cn zEr>{G=UiR=3!q1jag9yNgq4GiLozsxkq9JHPz&k+CQM(r~wTQ2O%?l2TAK;Cox`#_F~R=GCwFbPbJe zxIY%kd75eIEi(i1{B-ANR#;r1oTL^+7)C7U@*%V=kO-d;KQN#YwsdJqjUe^DDbP29 zvRS8Mx0*zH$ONHQh{ZFIyAYY6ZK8l<2g0PpHo{zzGC+fNgny7*^YmVcgBHaIgR)*j z3zX)56-Py{+GhoPwg4}bueLLh8J}pjh{thNm#>%w7FJb|Mw>guU)@DRUovC^&lq>b z#G2VE$WU#M-!$GgssYhOIUBclOlVQ;&K6f3i5Y9VzQ``Tc;B!{^SM z^p|>Sus^b19>l5gN3@|Nj;!_vh-(KzI&Y8&9k#+B~8sKw;E4{MM^vt zrKRC_;e@tb;ny|`DSIOhm~R%VVbX$L^bV99HR4jJSJ2fpscM(}1BvtQ_UjX%eXER9 zsNfA07Wy(3$BPD@MT4lqGi%|)r*f}E76)sdwSEi?P~-=BNRaBc`RYa)w;;rXAangm zEwM#us514b`#6gg)wxHchpT&4U_9qu6>bj6OqqF^QkHi3kyC*3EV?`6ov{?f6PV|%)%^me!O zE_l5CbpsnizPo8Y7YtsZrHS^LrLtxRCLY+^jCAN>$<1BQu*yPnr7rp|$81r9qtP5( zox6z%^$ax4tz>n*KQ#=Z=gf}aYw;rl+Uo^okhaUcxYC9zCNMS zL}G5^r#y8g3o~b)F_c)cE7Kl?86xk~rR3d8_sA_yme08@f-~5qBAagO1k2euMrWXz zvCyf&yPGe!SIzIj4Pc$r??P4G22UYat#-j2hntmv^QQk^jYKlbl%4&Wi2txk{DhpA zfm~Z_o@=x?n{%&$m^AonsNmFN`NOpiGR97MLtWiDBhTsi?-!f@UGtu!Zb#ftEN}%f zcZ=(T$2neW(TlKv1W%%Bzw>_IUdNc1)t{=I>17knB`G!Dg*mBZ9mXC+%z6Mrq1LMe z4OU$}Pebj3k8hc|HW;zhbAw&s>`-#k=rDe;A9)*>Q=Rs5EKE}+?B8>^qUO_HPht-| zVm3pw+&Gh-B+VZ!y?)4--_ve2eb#q9L;UH{bN|o4&_=`dwHk&{F;|}9bS%V$SM@bM zQ&lK=CyeA*d+}SnsRu*JD_Q?c`dl?EP_EufJG}2qW9uyYWDTd2T5KMQ)V?hlj<-Q4 z5w6M%nOd>G5rt{Pw!pd}Js`{D#U;!=Q2d>cP|aoqdSVVTe((Zsg#INRC3~6>CUhRO z$d~R3Jgj``h8T~GvRl~eWgDd?9nyo(gn0*C9Q`_W$Pk|HQ-R~1F5I~=ar)_T5&n2tp#xn(ynZriU+NoG*GDfKX#L|sNo{fSJ^ch^4y z2gq2dvb?gw+h2=2ZIsV5HH1#+AT5j`P@6m&URYV$y1$ZTGk)Be4&oc#tCO-*byYm7 ztmKWk?|>flpS;!d?&H&PDO(`95QzSe4LquNE1pT4J-^2a`{#^{ZIbQF2|fiGFl--T zu-)s&tKHd7AK;t<1lBM`uYO8uH+Nyh>B)WwL7~@{u6{1s*GTELXsavcYBH}sOmf0y zv8H0LX1S6L680q6IF8#V`6d>S91PSX$#27nhvNUuX?l|Xj**tM-UAJoYb)mJgJ|H%MLf&2_xgpo#(TEv1%|Wr}x8>*a;1@nbDC7Y81t>J$l5s z#{G;OVGxj>GCr340^kto6u5N}#@=;HGKy?~$v9{VX5|V^Rma#iw!S z^T>ZaP-9wOW}*mx<-)fAqtXaj_AV=wlEeRP+>!}s9w(OkwlE-KUN{d6eE~L-cLrE&qjlM!PE7z@Gz&ixW7irg5txg zCs;x!zoT=Mwt>vv4Pl}NvTKixDGF*r;J+^%#CeYdM4VI7HpS9$E{18Z!3$jM(_#eliu_} z^qop_4N#lXfP2_rs~Dku%_xA`J^-T4$GMQGbV+|Bw2It~GNrC!Jws`-8oXP|O)<;m6xe>@xKuoqhdu6`HM_sOULBas0!wHaM>Ia2kt_)!!5b{i_Vj(hOr) z`2&3gAhfy~PVpBSD}K&9%Rtp02-|(O4}w9N^7z8wnSHS|1+7OV$S>d$rcB*LuHAs&?%38`AEDpXXbofa?qIg20Xt71W;m^NegxyJ4RLbS?Vs zU6UGJF0G zog1agBDG-9VRH4}V6QD;L>v~CxHz25c)f2tj?HQ`>A6M13;%gj(Wt{I|C_&PKad`L zfZ&~^!${`#*csDmnz8z9i^M-AcsxG{&24~W+E6ys=%Tv2qa1db)7j$Hri}XU&rxnfWrfA`j7ecfLNFhSaVf$u>{3BLH1jSK%(05CH4lRLVn1F- zh~Yz$gOnPkyZXFYM{67;^)?rd1pg^Y`DRKcOE=Ko^%K`H)39#Nn>Ug(E zZ?+|I(t1iQmZxKNtRE$?UmcXc_-gkk_7}oA+_e2RlG-^~W{!tbR#Xf3lvm^wv9C z;}5F%(r4vbRLTr%x!w=HYQ0T4sEYfvBai;=%YsSdf=##iWx-_U?=O8N18P%0&aigj z41iR^MRV_!k54j5QBs2jC{omM*D~u;rz%UDrDyu`XTj+B_I~2;Veq?HKS}(;+#KLK zSu)EDpUL+~=o6XK)?Y%mcMS1)`7`}7BiLZ7zXtO|IT^xXSo9i`l3HL4g@~e7k{EXp zb@75ak2bR|(Kuek=iPjNjsvW%KagF|qQgKNukVD4His!jOF4CInc8GZdi-WH(r}Vb zc(2h0=#3PA?Ga}qqj?mCbsDz~3W_X2X($Le{MaAmxkK$wyKSEsn_pBE)xdnsO(@SM z-C9@Av>5KE69$G%O)pW{nGY!z%+DI)>^^XOM#_f6{awI#GcgnD9ql^B^-b?uj^c<}Tq4ARv{OExpiul7J^B(^H6 zjpRDu8+hWPK$OBBZ0}(E2e-^wS3>USpjaS!`?HSIT5cQ*nlJ$540)<(*hIlAf1@!8 zRG;*hG6!v!$saZMizmjL+>^4#^I?h^70yy*>8T3>53F2KO55p())nu1 zS&otwq4?=y%1cHXUem@MH!!^G(rd468bap-PlzO6rw@iR zyQ8TzjLh7RaKF4$p zxGRp*Qorh7L7E6Sq+6r)Dz}4D-EqJ7jccsJc|J+`GGgI#axoFI5AWlv!**ux&I)7I zHe9`#ozaxOks_5?_4q|h=b{+=6He*okY|*ZW-vi}XbSRYkvH*WOCT>GoLzh$!2v}3wUaPtkR1HyyjlywhchAfvP<* zX$$r%0aY5~hVv@(>b}P>NsQrC1jYC-mDs~kwq14KT`8`AFA!m!xjudEgA& zp(QQhqzUxNdAk|P%i#OS6MJai$?c_U;sUvE`f<7HKn(SIODmYNj=pp@hyPr0{!~n{ z4SKQaWD0}Q_@ZLn3zI?um$h_+9v*tb$p<#hQK-in4t{zF$a5a3m`p7gt2vuzKYbHs zYXg=T7U2YjHA79^pFLY=r*chKgh~Jjw$hnELF)q2%2*kj%oXYlLI(f>w9-bj!ezR0E{~qv4qw+^RQ-0LDkXW8t^VWmfqPBv z$?a0%+fRz0nGQiVyw_7qxND#{5PuoYjNHha_>YzuE!Of~@AjXZ6TOU}_`_*QPKnKT zW)-WpGBGm_^$4DQ3>V<^?mmh(Fpz;4eRJV~uz`f`{)qQCh)d{#*1rl-$DN<;>dn_D zfWXWAMadBKI?8olTH3t6JGI`u!l_io{tuV3M2mF-6M=QT!456`s7*Jd4h4qbu*p^4 zpFt^_Fto`tP~Q_Sg%$m>8U;Bi3KV!RzqoZ*b|Q+YpoNiqRG>I%gM3!WTZwYr;Vw{i z_ML>ofmZF|pMtm92C!<+?J4s8t-ZmlZlaj{wb~;SbF_l5?OvOnV$7>TT&KU7S*=z5G?BXl?g3*F>HmMuE}8G z@{nt>9M0wUxeDE{)XaLerAx^G0``T47{GXYgx@ede`p(;!v$-XBDz0NwKsPb6ItEC zD}D{rAUt!azzKIa6L1$xgyFSd#&G7J_~|RU;yi^$WF7qqE^|ClwQB9qQS@3i;3atn zJWeC0Z+O!JDl6vD-!alv@JHTOQEox*?3o7x?!dxNdqbJ!oj;_)1|dZkzmQSUdc*}D z`?Ru61}vMm@-;aHWE~G?RIveyy;VPIwOP{tu{n$caO9=3x}0bLo!fg97(34QjJgL8 zZZb$JoN~yp>CMTD)tN1rg9CK%+0e{z%>3-C@R6T24488C{%FU9l|eBOS>(VM~V+eoiJByn-n@7 zI@&S^|4DL*eggTk>U1p#|JS^n$#rG8Yt~ORKCY(br$)wGzvwm4!zcI)!<2dxs&)|& zVL$^TWxtG{B!&HU809j?{c89k%$6duo*jq$!k{5C<)D>9?kv*?z2T{Cu~&SKVH==% zjolsmeL4_4Ezf(V#9)de?dCmqg|@S+&U2)whwygi+oNU!+CspT&#PL;Ovh{NdlkBS z>%y}Yzr+qyhnXJU5jlme1=VLPIWr3YD_rH#;BKjI80qL`EoqOQ0N3xFWAHefi6Hh? zU)Q@euOIGoJr}K_nC`O?QEZAyOZ%?)xGc%B3(cWy@|dh406d>HyCD~v1|=J&|5Mt( zir#$s158tVA%4MTQ`Eu(I&IqBP&MOL;krd61`N^KwcO2Sfj2Tyev|oSO%w@Cc zkn1H)3sGqw>1=iW>YCFz1bHH(XfhR|&{*%6dj&enz zw0Tg|gka3)f&2jgdh_kWk^w8QAXcfHVda3+OzRF2VRr0H%DW9o;tRx#RKA;@KOCoO1e(0?*RCPWj%x zNO30_Xorysw1DR+oA(@7om$W1%T=?3llExdz#^u8IU=Q2v9ud@kHQE{Bc%1K(05SQ zYfwaAE&I=_+h$yheu`B&lB%3bv1!d;CGhM@`^@@6^f-*6JVdzk=gcRT?4>=PI{eYe z8F$KhB1BZ-vY+I`S#`c^2WTk|%qX$aGH1XWQ9aWw%0;xpV)RJhy^=FN3L{)@%bX}+ zbT>($&{&iMK|{zbgkogLTj@4he&BX>6g5!5=*&3Z1L3j|(g9r=wU9`qY3E#6GuYtC z7hiY2+bbxcQA_AFnj@f>E+M34Ebv|@F`5?6oq~3Z0=|!+pswIl#S%4JrhsBigFae( z?xTdX9zpTX+#4oNGO0YMmuB&&yEA3lmoj|@y!rpQKA&XQzb&qcspSCX{elmzvXPE6 zyz$snz+&01U|-eU9yNjF6bKW|6>YS~2#2b!RVibCtldOy$R**gJMEIOwfX$RA=%O< zbzpg1o}C8tTyjCx+f<+dTYcdG+SfNl55{)n$LxR$Zq>;c@47e>T>CHRp)+;CMTh@ZU7rx|26{U`TTp^#k`cX zIlg=1^R(`nn`I?$pE49DZK)Tw4zYl?doC-i52vs)5d8pc1 zxwIs$JGjO62Tpb_lE8(K4$y07 zFI7gG46Wi80uf_G{E3sWq0$cDIAw@-U(AAAaKPSZ>HX!h560m!jG&2htms?5^Vj4z zZ+O)S78h{ACpw(i=f~kQkqQwg=YhdzwS`QY1vlpn37WEw+T4ymzT7;{q}>2_*8-cK z_Kfj=B%OOa)BXSd$6_UsPh_sACFED|qOLB~1M*zIWAiUgTW<2v2VlyR9U^(j-@*s7&CNt6R3l7} zN*S&4bU$hVB_#q-PpIeEyFx@5#Zc=mcxG{bM}^KgyEM9T<}sedPZXR;6Rscdf|!YD z*JhL5kR-S-NPlp|njwxFCd+*vC>myHfl}`z*j5RS23V!kwZu$T#I#HN_MCsinO21! zhJtm&9yjv)v;TzIQQ(6?EXJOu#;Mk347#sH_u*Sl#@aROVDiMdX=@KA{QZ?$DWihV zm;L=(Tr6fg!8_0OnY|nUOciLJ5$Ta`6pNB7E_h(J5c=aA-XoANn^NI_elE(%N-7Qn z9{}g-?smJfZmq(O4jM;L9@rq@j^TaTL&bX#enbMi^xnALHc;qnw*Cm0_$ytCbb41| z0VUg#ORR7ybZhL8wRH(#XEndTl$FZ*;Fmd!7dag$2x|pQ>oB{X(BMC$w_zCNmRd%W zh8EX6!Ru<>rv?V5OPtNX0-vclJk5^nmiCO*?rUWU8Ti!kr$V4SmoO@P;j$8`7%!}+ zhZNN+O==F;*f+tsc{ha4w1>4ImTOOA78t=MRW*|1jeD+VZaCveIo)TZGiF5i1Q(Qd zkyw;6#Us!)K+dg3!~!6dBbYyH38Lcm@m6cUy3LV!IBssnyJeYH1>_hhV+iI%dZTl8 z!{JinMnuEgfJ3&Xn-dW<#X!A^dyJRWomUy1&AhfG?2(|o&ckhyWu%YwIOQoEk_v!G#0`RM&; zqt&<}5A1%hs93c0kGZ1{hH!l6YYN-=ctr@`B~^!_JU~RS;!_s{WsZcb4Y5bU7j7%f zei588>9Uf`4BgoMG`6eW%e5Y~$Y9B-Ek*&7=F85#{SixNxAB3NA}OWVFO|))V?2%W ztC@AYWqf-~jV~4FlpyK13*@Kd4j+5TZEcGk?YssA4We&rJCw#`Cv-}YbVmI)D+3V+ zc*kK5Sj-zmA7rmkd-cGA-yI~XYf8o!NGrA;ceA?P1R=)6T0QXFMwChIs&{N{Ju$!2 zPNxIJU)TyWx=;|2`1Ko=2jvxkGfHl+UVhQGXfS>&LzOV5le(sSpFz9?g(B2Kur@^Z zcd*KMGazokh-^DvdWSLffOMR;aIQFuK}fLF$?6Wfvxk%;xO(m|_*4J$qB;VD&R!{t za{L@R9c01&9EQ@_@U-K z^|!nFhl<$2XD&rYDAhk~`N`ucYO<8VL?F=t&x}&^0CwwpgHZ$!A9DP;o9?BB&wlZQ znMNJaVsOqT*b+b@lmS+JABxrn3ks~x^_<&rkituGEFF*)Dzoep`kDJ;3|t=^!Z8^+ zeyVwxp$H0_8j`iK|Kias?oi@Qo7lKNW#gViJeOW&^NBBt25*VS{`@E@a*09ZMSvl% z6Yl}$wRM7v4DoI+OF5hE8q-K+#{;@mDb{~ThD&t#FnXUcT~^No0h{(LMZ@OUJo;YM zM3DJo=i67s1(P%U8k%J#4wJw!8`aww4cKOJrmUb%Z)Ot~%C@f6@hb$k=8AMc_&em?+goe_eIn#h>Nlh$bL?Rg`J6BPHAPA>ctOwjU35=2C)=-qWMmA z_MeLhbbj3q=ueX2rctK%bBQs<79IlV|Ayc_Lrt5=RbFZE&P-^*WSvLVftJlqurXl2 z&O4w=>e$o=6t!DK9R*=dr6=+|+-SlXtMDBPZ8UIfww$*0T`0V$1G1F611ew$Od03n zIkzT=biZ=a#j8(=mt!S}?|@K}Vs#UILrPiwA^>c^g8m6Zf@^DEjkdv;FUhh%eC){A zCItwK-p;;Ya8diD;C+tRI zxi39$d1+&{7d9g_G6Afn`&@uTxD>FCj^2M5C7mHP2|T0+MH5L+I38WD^wow0@Jy08 zbhOX#haRy;m93nmDa0)r<&+IfO+?|lPaS0t_JSi}U7^Hk&jcRG6;8x^s)CWskY+0q zI00%(PVGAljWbHl{bV&Ql_fy$4+nIkYjQYXnB3GnOpKDwUMjcz-loqhVs4Y}b@~P% zGdmyf7hPo1>7c8YL2Ahe}lZHn*Ii4S@_8yWgk zy~@2y&!saX-?JzUNbR}*AkGyI$p*<#Sc7}Q>F0iLMCg>?C)eMwzgN+%pL3 zo0-FtAH1!;ERJW|`B*3(=U!Z*9qePjO8N;~kEq&ov8h5Biz!NpgO~60tG~OldJE3f zPEwWi^a~=Z_Ip0k^*jwMmhZy^`cZjlB9|Bs{#dSU8n~vIzdZWcUctg>ykfD~Xr?9X z7I(F>IpTlsjhud7DFAB9D(_=?7%A*)x6;4--I@7SmmBj9C0E)!P+>N+e;z!uGbM2eC7etRFZ8zNbb_AE_%BZUU zo1|5>_dcN=$37(?5-dbuSlq4X4PYZX6mQ}r@6 zRGavf2va3ZVB{{+*PVfx4}0&JE*cbSR@xai5F~*_*+&YqzqY~0LhIxc2~SFxJ|UC% zZ|-4D5gHgQy5QZ^O*TxRrHqQK?Q`14s2ZJXLlw6r$TdG zO|77bQVc~$!@=E1DY>GVMQ@y3-Q%l;{jGX#Cs9)AEdXh^?CufQg*EDbOZVS7!lD~i z%-M${J9yj;SI7J|Pi?B;zIWs1j@i_0ewg8g=l3eWVh(&&CBg(p`-6Gp2T^mfL9@wunK+wlk4vXrkBf(h3iL4+jX^W?>14ZZ=6(~ zt$S)Kv|c?#Lx>3K0H&8=l*3ZW3n;dqtOI{nET@I9!4a4RPjinziXCtc&bjHbzQI}f zZJ9F4y677gX0%nVn{!3N_S0PMIoGM+l#&Du)o+H7Lr)()oMLzYnz;Nd^O;r5ONiXI z=xC|yzqk%Pddhaeu0JXMyPm}RWnPke9gydjJGlEg9T6=ta149s#iP;D#?2Nf0H>UH zMh!x$!5oO_Tzlt#FKQHS*w&G=(N0$VR5tV(U&dnT4~RMql%E^^OYSxB6x_Sw5@=0> z-^1HS5!@??#Y*{LWF@E=8;HX2ol+!uOqyuD6ZKMdR>fD4I%sIMY<_D7@K;L4!p)J3 znhr@Q-(Fylr+DC9w)b`lohSGQL$#~s0o%^$>hcHyEcA4m!UJ+|i& z1m~eU_#T6Z1-CbCeaH<6y6Xx1yrslz=2)1SLCFfU^gl=%w$AQ-fVq*cfA@*bT9BDx zLy(KKP*IHMavgSWs1S93f#AvGSy@(-&FsgxkSOG{|USdZG>q@1-u9s#(nr8E$=9FPsc6_T`WVmvfXBJS7}E)dL+6pXC0e%#d;i8& zv2lqsD$ZeF%$x5Z8?lvitAl1EVJa@lS4y7VaB>9Y#p*5)q|v8>{!lSBJX^LjM< zCH=5aP&Nf&!o*R40{;=g45?bF#WvmgMP>r0G+FkHYbPl`vJjo zd_XQOaS&Sjhwu3EFdVT7B1;~La8^JGzgE1GT%%g5Inv0fzNZJSx{p(Ya&jm*XwNyk zBF0Et4QWDtm>WoG8s==RyD}a%Thl3%V|rs{sw&}nEbzS-oZNL0vE&jjO=PMa{UqEA zx3LwsAj_T02G&UsRt> z&N-73Q~N5PMBzE1wq0!N&~zC`aSPkFOz0&<#2WYwUAl^;ayB*5+IEK0C8&n#tXE9z zyU+FDb$RVv2&3~T6*wA%Ag7Z7re}6N1$+Exl-VzgBz9pV2!RcMeFux`;L(&zTvvJp z()84t_L8e&i@Gqj!--2_(jZePrRou9UA#LW?{<;$cV5|(?Fc+~xN4g!g+1hm-B*_< z-Ai!JcpYo>3{+i?ajrdjplroY7Qu*wCqfrLe@lmT`~HHhD%+zxxE&&pKuJUbepkFp zTS!4p_jy09UL{sxnO^Og@1z`-!dlg7&>f^PAvF!!fYc*fWZv#Ku~sdDcGE{xYxi=sv%l0KfQQjw zT$l)wAGeg+t*@@m5lNGv9@k8I&MVDX<6HttEj{E)xj?gRI|`Z#s_v_rGuR%aFe;j^ zge2C$hCryb<15cVV2s$R=&xnoQB_1${F0LH+X^>gyISk+1C)DC?!&WE(crSshpUY8 zxA9h}eP6VKRUfw7j#0M11hMP-5tT62IM60I?C!v*D06JrusZn3ds|)1BU!#whZL{H zm<3mC>b9!~4UHjc!Qo{Ac{8ZQFnhLE{YU*vV4->u04D32c4{EH6XZr*+({>MY?-Eb za4*bV3w?W*XUcqc%tSupQ)S)Z@2cM*WMQk1aKcXKj^h~EN7-ifMl3><-_n&f7M#wR zHfIK(3SH_ZI33Z}(ktrw6&*wtAcxu72eP%vl=9)TYL9i(GiLIVR3ZOX{@C;JTJ#wL_xii0R7SKz~LDLQhvb=C7O9pF@wWkhWhgtS;8q zJ#Qe}b@U1cqPu@<7x(;nBW(gev6FP}t_-uC4`*V2=KXa;%C5NgzTYVaJ%j(g;b<9y zJ1lOBoCmq3m6@8aTrX(Goca_}Q_}X;iKvwH(CYM=&A~&n13L^2D^dG}|BIcRhqa!0 z)$|rL7Ypn5;@gD?+(xvU3+gYbtb}?w^mW8B{Iu_de&`Bp<;7zU20vn~&AVXgT%GQKF0ACLS?5e<_Z4-Snev^aA_1?`D9j#7 zX99xSX>DblSd**uf1Cd~YY1C+N|PZ*{FL_XDpxDW!!amsJ-X+&AV$?UOP> zV>pawukXS8{`7=tuo6&0@aBDF#)5+*8?*Z2EB7GXW$xtVVGv#OTig79ua5B)P>M*e z&y3(fcs1B+Q@1l~Powx(T5*3yH(=2DTkx9eyBySOv|$67?c{Mr$;Y90!4qDL%4-al+u&Z z-AJnPS^96@vleac_~I@Q!6SR_^h_Lb6WvoRv#V*=A{ghI5N8PHIL~_pu+@@}*T%1H z-b$I&^SzPMBh!OUF65Q0G>h%S^Kou678Ip?jc!P%3j^fYoMw!ETJyaZUP9;9*_)5C z3RhXVx9y3KEC>I@X!e>Axh#6RV>cYI5GX81cBtCPh!#92peY%~?k)c;L4=@$4XFF( zz^QrZeq;yeD=+GSRs7vrZ6oiL6zP3Ep9d9F*~3*u_m(R2K!noM#Tgcx2F}Lx;6WSZ z(4ZbiOT2Yy=cQcmHQLO!uP_^eV$fP=y$B8c(Dm*}52O>WXmH(?x!c@*nFhw3*Mp|= z0pWfcxuN!D#=foj?+Kg4YQSYa*Aqw%3n*Gy@ccr0i5h@74WfrDzUml*fAOv_ENsu* z9Q{)00~9hN{hl{fvrvD&=J;PWB5#Sc8$~7k%?(mQI>{H>fd6i?c|7><|G+~a&hh-X zF_*(2*NV)?w75K%C*uEY^q#b5nW9dC6L?DQxM{c@;!N zuVIVhcZcCoux+{5_(^BDXP=f9K#W^mcwzVFJg^;JQ$rq%UV?De@su#KuERn+qn=nl zpKbi=)qHk;_+#_;2^Odo!zS~E|JJR|NY9BQ z*Cm|4AH5Jzq?Y-`dIMP0w*3RV_xJ88<|Kp=&-Zu+_%`j1HJM-y z0%8=l4 zd4}nQKw_F`3wFrzGe?n}^wIinjq%j})#Dk*M2{i4c|)+!tu!#Y^b)8HQ$in=nQ%Ak ziyIl!aab^ocQ4gFP6a4s;wj}>HwAgRQX;C`bVf%6$D2q06Ii89UlrZ^&>~!#VwLKr zh@yq$2RXtJVQA=J!%AK-)xw9x?*tR;9;5mmI1Pg5Rr(`=AXSzahar(m)EKd){k&aoT4Wos2tPu`XBe;< zJB+@_Sm>lt;id7Z8MyTT>bGlKkRt8Sqy7A!Zs~a3aBiWbB*>zO3A&j|jE`R*G4@+t zVevj1g+AsA{pvSvzc_y7Fj{?4-|3>UQ=Gh_0p{et#t?`k0w@R0xOgW|*C@tjo;;oY@IEV_UAZqFB?Qjn{25)3NU>$QZU;hxu94Tb_2lG{Z_C3j2Z+p z)B+bUeFa&BqEd8zN?y0pK+f8kfEu&8<_IZIPs;q2JSp5CV5dsCJLoX4@A4>aPp49T z#eO(2^rgz_$KGY0{G`ind`j4>dj3QdjB zOXPHj7O9BT?@6_di_v_m;%hf3``KZ@jZes69p2kM+pYq{vsBY^PCbSRI?IY@8ueje z79kV=K^}TuUE}SGfo*WkA3!IAk9jn#r8c~2lr{_PD4dW2yWA5Ya>hVFUMG}OOW!^K zQ3bj4DT$?1`O>O2wH(s|#_bmIDIf2Y;hLG_Oh8Cgvrj{927YKl0ku`JZTe3?Z?^d!<7;0vJdK8_c^wC9w`RiRFQf9pi8`I~#|FtjXq`S<^b%6Xpl(^;wMPSJSU2CXP8zxp%0Z=BM+W zgIkV?X_Fsqgm`?yTeGjFEuoY71m`Ep6Xkcs4K0E(3PR`Cl|JMpkwc9fJ{bpAY3Vd5 zd{bjqf*3y-fC5Ezh8DDMadXSZ;2hVe+X_TmZ;#W=Wf6C9R3PfCACk~s4}tr zW?q+82S=+J_lGqc9Zl!BYRjoXb6<1M5BBP%uS;o}G-xn%4mKIKxE+~qsrJ0s-aP5} z^J+d2>`jz}#S+$Gkb;7#k)cF7AGl3zO$N_8YOqR?o@Og*jW4Ymr_QzIdQ6wyE4f8e zY;BjwI81HRcQRoi5;vUQ?v7;figFo2t@?y>9s`r7)Fdj70YH3eSI%&J2aL_3ZFE~n z!vX6m*fAKa3%g|)g9Fo}@tnewcuh}@6}>p&2rqOUYuj%hU03a$sxZ~;-#l^Nlu-r@U{vRbXQrurMA$6D%+3SK5~ z-%3qLTg`?(-|lUv7^WZ4DtXdcE4E|a+T%pM;0TW7tk-o~DN*)gQJ$3XqW-_t7ofim z8ZXd-?wC6@ewwD9Ty)CAV%v9Kt*;}mjt#=Di4d>zDi1)y+~A59A%TOT?`OairQ@YJ zSUOOGKJ{sY&Ns%Mj1h19)ir&`UyEa^jFo5B5 zjJjB**O2v<**C4_bqx#K31kqMr6QGGt$*=fE1S}{8=QyHfx|BS^4M{rOb2YLT#FFX zKAQ~UfV9Pf{f-Wyt32;Rl&GC6>xU1r0wJ-Q1GfEUlnVrmYeS=8yPR|> zWUc48>zUS~czP*nf$REce^=thNP!(yIqAApQEL`CDM9m#Cqa3sTP+PrM35%ijWUC@ zGMwlj-BY&opnc>_M8%%>2#Jrtq%Ks-IQa20b@tmX&-XebBQd5Z`55oh6)dz!CnbCTuiceOee#rg;Y?%Q z{El$a+X4e;A!s8Zt<7$V{s+5i|0h~>W^P7$wE4mUNg>=oN`Lex5%a<+<^_3Pjr$xh zl}0UC5DZUHK5oB#CMMc7V$ZhI>30WhSaNFFjnVC+&tuNNczvZluy1-ci>xKLPm6ch z_&71*j30(qe#cKnV6=&JcWYCjFQ&zx@T;*kM&Ff|>kRVIKYxFvSkgca)s3}-d3ZWK z`q4TbwYCrEjSbEEUR|3E|95BnLMnJ`J7j$up7@^+GIcGkN2}u}L1pj}H2psa@VFaZ zd)mI7G}4DZ-#;$`!qXS;y1AY2(>_@BV)Q=<{#yv1Ni9h&`VT@4c4)kBA0491>b6s= z!szrJw2fsz6>3OFZ*bji_AbKeRF&gSFzsX)_O3|QCtaT)|NeM`b_m}#r)luJyDwAsc!sO}EgE>*ueuGSM|SbOwDv-w#PrmqO6a>&GWnhN z42=hnPMc{gc1Z5(Mza2A4=}6bZy%`obl0dA-9<_4gC>X!n&MJ>-e@wrPesx`7K{OR zcc}ZdY@)@~0zC~j>)<5Hp*1vXRg=rDv*|p;?2jZ}T~o5%@8R6T_rBM`3jgrkWW?C- zD&8PmyI(&|OlbG`ov&qC=`q#l`|Y3D?6W1_lu~^hBk93o5{O8^&UFEwakgfX#|6S0@?Vu z7V{V&jXzz!y8zD{94?_Pu_&QcTEMIy7Y>5gG~t7&84UfT(#QNrWg9}lYM~RUBN~?y zKZ21kcVo)Z8>;A~%m*M#JKb5b00!SeGwan*W;sqrY}%$K_362~`jW9WbUQoFj-$R> zgyO>zD2TH0mddB}f3Yn{)jHVlQHQi9bdh-|40&L+~?hWEIp#!}xf189jH zQwx)La-pD1y#oskF+>%at#C^cL$iOljy-J_>ppW7<&gTU`+OaOC(yq^k<~;JC0DoH z3_c8>{uSxB)O42&Vwgou!)cfBQ^2|%D-n$v7y@bo*$EyLLNHGn9q9iltlnFPVCt)X zeI_9ru|=}3$IXi<*2SO4jS-*?f#T0W3mcl|v4w~@t4sy!)HT^&n!?s64vj55EQ;R@ zQjq;#`iV>9*e=kQs1w@l)oi?Xg)S1nPRT*>CNK)n#V zuiu(b)S6<38^U~{avX97eeD2NAm@iZ*wyM*i_nzv+cOV4B1nR8CyLPZcG)+k~- z0U|&1G<@In)R2trO`QM(fwbiWQfCad($3<5gjfgQg`T>R2S-b<)*5%hR%q+aW?oky zk~kW?IM>cR^Ud&tompvC)GaT+!?oxtb5@OVvW-j9KA0(m8uW1RL(%WGXOp)M0`WiD zEI_8C1Ab!2KqM7#;GyYMid|5`xvK-tm@yC~VLIOu!Hn(w=UQ*-6{_7^g;JSUwGaYG zV`CZMxDLmD&u=j}H5<#9+iFAVCUb<0vaP10b*v>f-Ssm0tT3LAj~{nVH;RlbP2dL1$RoQwwv1XPUCc< z2>%LwI4#&IK_AQyTzwC#2-*?_$O|IyHIQ;T5cK%v=M%punZj8LR_}{h?FZTzhMtm2 zTxA%5j3+^0oVfyIm|2u+7%K2J;qKdulr3X^N>oNLz$8aEIZ>yT_5TOge5yW9Z zt{_NATNNqej>>OA?}OVs?@ntsd$3g~-)6AfF`;Z%+?Dn799mF*r=$c?av4O@l#I{o zf@k{?8-zoFuyO=oh$E!_^rZ9&S>-u z>q7W97P`GI*}wj&`RZkSJZ=8kxeb@1cJ|7yc2np-HIss5<-X^d@{M42t#Atg-tiw% zm{OGBUKQrk4Pmo57^H-lZ$~HzFaU!Kl1NXl!Mi;>wvpaaST0X8B0?-ULb>7y?-#;_ zq&DBU-uosb9A`LZ&M%dK>e00SQDMm)ia>7$RjR%HKRKWGn>Nplh@FAdd4qmNYlkBL zMul0%>3z)+ikkoC;{gR7=rS&bU$&iz+%$7`T^k0du&9gJO@bJ=BOEx&s+6w$J!x`O z*O*s+`#(tNcQ<$?meVYCZOh&F_t)Xmta*)fXkkw*^rK9ieu80g5Pl#AV8E&fj^qoZ zhgH~)^2OW;J?~45FI>B)JfGsk9URrie%+}CAIw~zbPCrIJ z#cUs{ga0iHXujfW(pGIqQijoByvk@AFf@>Ocs%vz$c&#z9)?lU$Iv#o<@MAPE1yM< zOS!ePV-x8r4_T&DL;Ieer`Z5}4cqY!v<+=H{H!H#9Sa^%j*VHs`GWA1{12kTcABl# z1p#fQ_o=0TJv{3Q1NWfBM}Up?lp5W*O;w6xZDWB^X6=Lcd3ma-W>epiu4V*>2ef8A zR{gxO*7p87{TU2Ggh^prCNh^6VPJfhYk;HGfFB!Yve2Q3BsFAKQ9?&bDAt5+!A3sf z)5A@h9(yIn{&0Hqzg%_36y&!M5^5Vz&gP!VHh9p!R#TrHb-TR68M*+>MIC3b3EP>8 zyangddn~pgie}r;j@#War$GacR@bvh4@q`PnOw($T(viC*1z{xVn6XiT#Wl5DlxFo zl5@_ze_imba*or!mdn~tUGS{9j5uwp!83##k54^3@eZ|t6t0F!8oJLHa!cMMS_8!vGYbl0J618!wz zX1-Wk%SL@P*SW99npQuCf8n?I41-%we4hiRR0sFhn~T>( z>r9Uop$3q=?y#HfGNmb|b!qa3_kqG`Fy?>JBL^@0lj$cvOh>x9KizeB1NZ=2^&>qr z`+PIA{)6C-g*tFfr3#_c*=LV#obV)&Ny+=s#8uC`2KlLVM*u?R#g}EJ z=V8hC<2}c{6C!PonYi$APX9r=)GHG(J%(b~9saY!nhY)T=|^&uPlEQ+aD4NfmFA6S zwRRumPj@bm#;cR|A44#cnatR2S4Jd8QcXxwx2yB(wyJO}(CML9`mb`+9rQ>3Jbc7! zXcu8vS5GGi|24h0v&i&*q6)eWM&LyvCeR=lkWrvDpo^-HF zZ$!V_;kdROAftTmq}aFExWTEpCY}BK6OV)Ge{mvIJrx=0BP{ql7C0)S0Y3|zPp7NP zdH0sK;kbWjp_JCEGbyJIRakuRDb)`hoHP6N2 zL%M|!qXeq<*OZfg6G0WVRO#a(LzKz~PsKOouD3_WwXmha#8=iAwCN24{{CSE-)v5| z4^bbZ5`E)qgIJTj^I<}(MwJu{8am{xw+a$B#M3>r_3=~z@_(ebuvpD>f~_=2wXizi zPXy9Ocuy34Ttr2OBaD18GEB&?pNQ20<12ts9I&v>7iM}F8OGY?2L&X-MUi}`CK{C7 zU*-6TLuZ3CS-PXVHXiJGQIZ(6t>$$l7~&>vG%gNDjI}!RA7n;+%IxNmB1jlWR&Zhc zJ7GTfZaK9iFvp@s*~`h4CU0!?q(_}M+}YTD_H~%P#J)VKL<&M?l~*ZtRtdRqK?YL< zvcfX7&$L%}UJGPW%H=Z({iOT(&X>3UEnH@nTwJkIk~W$|^GAN^klK^20vqPq79{%V zOX|1Bcu;ETRS6JL(O0u^7LFibKO8VvcVqlOo=&j}ZY)Yl^KIvl zWDUn5n5H}lG#;`Vp8ekXo`QI_l#lXZL-HZ3fS}-u6r(AklZPMo`(9{E93~(0z|J|Q{C}A3@pp%RL8)N7yIg*z zltmUcxJUL$X9&sU;T$L_nNrv-;niZ`xhiEH(U|LLdR&xs<_e<%y{o|-ZPna2)wI@w z%)OE&pBKTUFSzX(S8MOh+^2Pvtlf8E-xS6}GC<^Ro9}w;vcp+l~o+8tSi(EDo>! z2T72(8pV6-?^}S|lC|B!T3!Q|`5z?>_m}cutM=OkO)bvOFo;PCMVx3{kF|Sup=RM3 z^UcsZqa}V+6rizJgzSIc*`b^ic1k~UH1aTXsVA^@dP0VnCvA(&jdi}}13c30AMSG5 ze8o4^#wGTj2tIDzb=UV4?fs}hs=e6tY%K0TT2ivllWJ^z^!;h=_7NQw2~N^>^-3n8 z^ZL;KWy3djG^Ju9l{3AtPC-lhzqud7_A<^jPLu@;-K(=Y&GoE|ejz^V+b4u9*k(0U zZQN&uJYc`Rv8vF12lHF*NEC76%Ja{?+-HUmrKyaEm-6B}`LR}m1riLk>}+=Fo!fez zI!(o2x(7h>uxv+~2|LfCJgc;@LhQy1Wk>0Hq#c0aJ8J7N4{EIX7cD@>tM6s8KxGsk zGJJyp(9GPTwL?DNjq<_t_J}L{{6I{S+81k`%)6ODJ@ekhVriMnDBek0UqgV7R)r|i zBeF&QFS!^=<1M%~v`er13jqUU$lr++hvm(XR%L=?KK+S~sN9eGu1cq_JIc9mK<1MZ zJNkB2Xc|Z%R`@$NAiB&bfJVGm0uhi^{dr=gM(AW>bU;IjH5Q816G(hdokcrr1|9Ob zo&a-Tyr9~))0N}OJgJmIkY^nDA+z~fWBai51%spSEZE->Jm4lP?r|pi0VM=|0&yEm zNvgK6lApEz$t#CMtR1>D+BiID);MF1nUTs-T!)^#Sj1eZ!H{j+hpX729RMaetGo!U zK~(|oqto!Ht1C}nI=Uj*E@il#W)micwEQl2^}z3*PpLSE=8Bk4>paTdM^v+wi3?k) zM9^gBShU2)bmg?@aAc2`8EHEEv~m_&)8BUEoI_`L_;zQw$_6c*GZ-JG~2tN-IC^ ziJ5x9gvxEp%9B*utk@Xl^wrR+*4g|3=;IyNqr`x3i-_r5r`gO6u1^4Dx9Ve`Q5 za+1#9fN8&Zaotg^+M?#`l<%b|F4sG-(H_E_CV`W$GE@nUfhi*C^BTXI=c+gq z0aDM6ZXE$sEOSK(=hOAVV8+**mJ z#mTFt{^r_>8T-Iy%|HtZOfAW)xU#12YSL_SP`(=lsOUg{Z8Y?I>wsdr;)QFk>1gB`E9`a3{`G>us3`UOa8gH)5GR_x_(xmh7%KnCai; zyVp1z8x{3Avav?5=}c_8{o0CenWry3AWRqLhqg+S1YwG6C%SuZM5&P#Q~W$yqI=R% zPlpQ3m4@Qd3Ltr7^aXSM4;VM`r7~k*Po4o8`?b!!qkcz(!wv^5zs)M!O+a z5@-KVZ{VbA(3LOoM7~?ARm9iqBaT69bS%Lf+j;;fSEc1LLz|U#uQZ-ta8{#NpGO;{ z1{WALEM!Mv+rr~+EYJ|6(VTd~5AcMjtS&f!{L~#t=U+m#-T>9ldvI3n6jU8ZA4zZq z8G4ql%@_k4zSji{?N9Ce!Z0deJE=ede?va?STx9F`S^O%HQ@l z{-rfx^o#F>_o3NXZRUmlARmTXzx{mGVo7e-4De$r8iD$O$w^% zsWzVtdueIL{C|FxBtNr7i?%iwS8<-#X@uF67wuoiv0C`T%0}NNc8vAPnjGS6}m^nU?kmYXX1w#G_`;%hi?btAWQvv;H6e zI`4C<|1Gs7(>cG*Df8nO>)r-6i6BX@9k&n8XoYlQ6U7|&Ao$9|85!C?$D^)FIHty+ zo$6n{$(2<&h)@09t+y6Q}8UuB!K*xO<@1@Co zli0cgQ}@h2qqrRVdLc%ng@T$~xcE)uvf8#^J>p0wCMSD8t#{_q^%UhJm}X|_gB5M7 zDIaUfv(N5jjAEVH)#`+OE@_ZYKpit&^yx*T<}X{+53PDqpGslH?=g(rch?$taMhL4 zEURC2mPd05$)`5&OWx7zYS|LY|0ugmS4mzsRxL&IKY#9hQ52*BM@V86D*F9T%-v3& z!0_D+x>4MctiFXPGDO?<&JZnYHo-69EkemguVDB6p>5TkB=-yZJ@+=Z+u! zG$td&c^_aDir^(T_1)B#`}DnqzGWlWko;zymS-KM4^cf`7QwEq)lbzTrJLkPMjPR&b{~>~0*TRCJvfmp0rufm;KxJdMom9I^uz9D7qv*9@v6LZZ-5YU1(jxszf50iX>c7?g~Eo)-ir zOv4hw^zoGg517OVRZ`n$gFNXdo!bsY{b&CR|^iUG23@^Ea-0&kfn@4$Gi9Jb~-^-=UAaRL{C^*f77zZ#* zlR)q5S4}5P-eZC5ctL}P0DiENFBc3??2Pr4JI#5d8_A`EZL?4DHWF;xP5wyFNgt%} z!toHpI%cWHBv8FjcW$u^WF}w~-r!1E3ae3?O7Z!OL?B|NXE*42y7P85J_TJRR+HKw zaIszFnK7`cU4gEYT6WA}X<{no@0bvp)qa(^0Kzvq%v+P<<*m8tjstO?|C1R`FYepVmR*XT8 z$AUw%t`if11Li~5vs@q&056cj84yOQexY+bV)HEBu8W4o1*#T^Kn-tI$p7O-d}?x; z*Qt_Pb))}4*#JzjZt$e!gKx@{sr~UAZs#=1Xbo-Wn%4e!Yx>)!U==6arZ&Zd_u;BUAu z8~e9&-y-b0KE$Sl%{=)L^IBI)5*JSrIVCZ_YaKKH@Jp zSRWXzdAHn7J%c^UY*N|8rM%F-BPCh`Sz|5uPluO$mMa43GhB)$(i*0 zUR#B2@BOB1gP6hc6piYq7e7E;qHc81RHvE)-O8A$wqqPq+6q=#9TNX@S_#p-xdYsV|fUc zU`zMD?-uBK0h#&-)ZZBbn1;jqr{lRj8l`-~KXUMkcp#JRyJRi`@k{l%O4QrV0<YjnB5 z_GbAl1$HBg6gWAK2a*gu5L;M{Pb7(>ZAOCo#9_)wR`^Okl72+_Hr#R?I!iOVCFH>h zxM%C^@SlicJeEM;ezy#LW$X5L&Bu5}Fa5?=!!?qXK^&5b00oXuim zq$Xx|qctnpdMr*sX7L{OfbG;xSlnH9NAKbJ1dth^@%GgVf#U5ax1$H$nWx$9l(~xg&*wGy*Z%}!( z1siJHxvtY&Oz5dsh31^*Twb#3?^3 z)#qu*C59VtFSutWXe^}K0_Wk6(r;*wkEz{CifP@lciLjvj8xOf(laz zBpzIW(~E$%<9n%jhZ@*0RK}rL3wDPgemIVeZz3MXa&dKp{cwT;8d}-kCq}Q$!{D@^yG$2ZtLuU`MfRJnVzY#EJ!W!NYQr_e>aD(e9y-P%s)=v((p z1&39LOZazK0<2WuchW~w#pxY6H zba!I(+3rzQcJR4>V=Xeii%5D4t-9_cH*vdR=OEPZ6^GI4aq=J~RL21|4xrM)!-v-t zuHWrTU+91f8#ImY$8{U84xk6F;a5;%)$4Py^-y8u6{yiF%}aYWM8si3y00bh{i$mu z?1p>P1F`Yt#~Brw@Cp6hVwk?V_Wt-(A97#$@egOKQn` zJcp7t&U3!3b`;f1gZ}1vCH=XZQMdn?oud{#AX{BlIvccL9=W5h&*&(zF6($& zlVE#ybl+90?R{bbwPCaY7>k8+}=Y6 zv-BF9+9iSbQF~}TzWW+uUSprQJz4~8wX4*Qd0O0o_~F6&;7geSM-{$^DPDOQJ_Z|B)WTmX8{-@k>B=yuO z9c*Sz^(Z}jm@RB6Xx~+JXI;~YT)4pXs0-9pS8}XbIr%+me-r7PMfjWel+}F~hfnNC z+YW8h|NABLo{Pr&mG>U~{YC9(&;7By81ruD)w+T>KX6kTHC%iDAc>j!78K0SEeDL( zWUG|uT}!P^Xy1b&Ve0{NDBNYQocwEOjI{|5Ipjl_=1UIxJ zP7DgCDccP{AA8M8wOLLrl*1L#&WJDy$3zTp0+7;LbM2z%lJb%0i}*!jdmaQ+%dxq- z7G{p5*D9>?%HPTb`{8~qj3&ciLBjgctvKHBlC7h*Iv`E`fZq5ISpT}Sd&pY|{)}>8 z-BsBty%Fy@MIoA;v1?G8G)Y`gu`han+9$Si`l1&rJ+k#e_y@zCjL-@RSwzf z@5UQOj_loh9B;9~E%6;TQ{#X^f-Tl6?aijUrM74&%YnA_hIJrzugCLdDG^A$ zF0E$5_11ZV)G}tBa?Tv-OHKm4aP4Kxa~CgNEfTh87%Us3meyUUaA|#Y2EvW%F{Fm}H0@oAd=<%E+!jaz&n@s+n0J23)o?0{1wG(eCN>;rviR2xWQ1tXM@l5k0vC+ z5mVygYZ@>p%qpwh01N_GSRJjz{Dqj zFtbPN1jH(crx`|SYBo#}f#K?2w_qhcXq=vGOXL6>K=m733e0&Kwd9UppVWa`j&JZ- z{5RIPzHRVm_?|LSm32W0Vo#t|Uf2EB)D9RssH6Otx|xv90k|FGoeAi6_lGZE)~-A? zFm{=#+60MH5Dh6m)uf^!IG*L%>b1LUKX7C}0iXq?(K9y>F6rei4~Z*HW6uHuWSTcL zK=o^-=AWoROoQj=V?C8Zy8fZ-i~OaKr~4eb#nYRC)DOf^(g&;xqpUzHMZxLrj>1X! zqR{)7nsw7nrtO#@k&T#|D{~_DQU*g34(G&?wa<$oI|Vw4O#dtYAS!u6XS9LPII$97@(xT#tPB_5%nf#dqUO#QC-8Q^~6un zutD&*3e|i&C!Ca~j8Dp-wr(y!AM=>DhLBP?O7k%;Udpft?lMuEo2U7xUlbhMes(yH zIHis4XxKB3oc@yS7g}1A_h_@j>rh?|BOqhs@YTAN1m4xgm+D-$TcA;%I_>no@HpH- zCjO_+hvc%#KwIZo^8Kf*YvujM-F7QBkK<-0dlz<}B)X$`j47`PJN_?wC<{Jwa-sQ7 zH475^FWo!^A#N8?K(QdB3X-u%TUAr zLH3|`vm-n^#3O?@-9$NRtp!_1sdFc6EzW^O@h#9bG~6|LuIzm=c>W)$C)GU}OQ_@1 zM_pzd4V6{cI@iZSp8cq?2)|@RFO0HQlT=s^T*YaHbGAQ)c(h&b&6%y3KMp2ZUVQto{rS>=5Tg&HDo>RM!>=qZtKTc_f7Z9V zV0P5w^V1cR%_>#oBigbW*JzL||?AyBDR$#Mx5R zlV@&hQnR}fyYqK!KxD`_m&UwHkNV#VL{7(EJyUZ;jSXUAzl;P*X6JXEypjq`zq2om zEtk3^W-Y(U)8=l^73@%2?668NpZodjm|dpRfo00)XR5Oq20cqxdWh1w%(|14Nbr*LPO`6;+`npn#WLWMXZDCnkk7++HQPx?I`L%#%&j) zSKI7=a76tqr^3qJYh~$C zD4GCbX3|=f!FL&oj+Fi(hklmUah8KmrN;@aR@Ce^iVtInv{1BY0Q<5jQhX?vcD<&``>iilMzhYXSpTJoKnS%SJJt~zBa_lVTG5Qc+$e%Bv zTx#-e2K>sK#(`*PPCW7`45&7TuEdfPYr!4A2ri>8d9-kQ$*^qmb6Pl76d1qZu@JB~ zE@4o@oA$FyS3vW*fOhygo}Wdw|boNd?~(_5Jc+6FRP*R zT4%Y+S#p#sL+Kgi4=A5K8JOE&u!wNPA;#@9k>xAp_APL|*Qtb+M6b~axkmVGU3-$+b=_IcMnN8U!O4>J>LycDYHW#fnE?Cz*nGrqf8?~MCE@8s)089eguEugEwnz#HT)>~&6)s|m=CE!`b zyH7I7qn4JaGx!ET_^&^|J#}!0ai)}#_p|iJf#z4%iya0|qIA30gX}19QuDxDeQ}S~ zRdY69(L|*mNdMe?`J0u$--u=H3k_A~&8|90hgD6%fJx{5VOXU=^I*oUPN?Zv{8Bsd zkC4=SW#sPU$zLI}nNGD^cCB_jCOnQQkFmOi$-TdKwc9zx7Ict1|2=2^hcJd=3 zFT6naUsH23%J2zjNJ-lN<_#8MRLx}{(*7m9#@ck~YafXRl?|qaKmJc?lvH`(qaUBR zW4&+%{&+}`$e%Xn-KK3QRm3X0#=szPSKN;oe`^D>H!8Ty!n#G^RBqjgUKGkapIs|7 zpvt`PlWK2bL|z4c4gP2FPcbi>6-dEg&m9ezj@l&!zOTm^5y77SY|)Q=DWKK^26g1O#Kf?TlE8vN%<$y;5E)0ecPRZ#(`R+kzuqk6G*{=)CZ zT7SPOW>eL97ESGu=1#w~oy%jes3;aQhBf?@ef8<5D>)aZ4V?9VbR{rvPWe6AR=XH9 zn57TGNb9dMeDmCEZGLfimdVtE#{(6D%>YW3w&WP=rb0eb z3rKsf@mbS81~dW>>=`bYL2%lb(t(!$CxlD?PEx?wEIzWpGn)<(r2df)XwoV%;Hxea zi8ujmT0cR||JiLSH61h|u0u@JrhW+hfJ}a8?eO4C<%NowL(dabAz;VT5%#BPZdTb* zC5eC)S)=Yef@N+Am$Bt07Z!C}F#4P^^#mY`EVtL=^MEU}TuIpkbgnLy(aI+$jQqi3 z;=0}cgQt$FpxK$eeO?VweuZ#8Do&$`R`D)3rb@bU2iot zQ&%Ub)wd_fL6@34AHSfK`BqfUd5+t`|9{cdoHduJt~<_-(uRrijj+s6Vr?HK%fjgT zwk>8*hE0c6ZW^o4c69#p;}*otQ|;RzLO}ZAu|Z&!Uo`s2_nI0ED2^~ltNYqFn~-hb zW+q&@=rokGxcI|6yMH(qf69MStp6wHPT~5zM=4<@?Giinq zi4;wji&vg%)vm@Xj^%8m1kJZ!jC^iisXuYN^O`EdC)GIrYW!AF{zi|uTa$UWk0N?pZ-po4{VNWh`&_PyGPu*&bV_>B zZ*xi6iPX##yo~14$6F%*js5l>H>CXTUYq)+S7DGvZeUH&@Wy*5`;vLxF6k+a*8(Um z@5R2C$`9>QzC3PMchLJs;QLtdhn0sLt{~()NJGDGOQ7)Lp6lfbTmL23X=42fYTW`d zl1C?YIUO2kTA`%(Jp8`kbRoVQk)?n!`2_WKKVQErxS>20wdf2R5Atps$C#-)>ZkJ8 z)NJpI5OKRzt`f(*tKRJ41#HQfF^=bot?#pEh zzx_S6;O*HMHP@usF`>(7E00&LonzVe#aGed^&S7XGX#<0G;^Liyq%tH^a1*U_hHxZ z?7(a?>z3VIf1l5?FX9HUIrg+=ZTfCownSVu`1qF|05T9oj^fAgSuFBqme+TAa~avX zxIO4NNi01nK5wa%F?KaEQLd*AnBA6!DkmefD9@86c6-YbAOM4S{Ez650?BIHyyLxO z8LRLcU1oq6qlt48r3)M5P1ZRrC#lKBh)gi#Y(Q-HfNJZLcK@O{Y~B&@IhXV)EN63f z6xc897v)2y@(~GNvky_lx$)*9ObY@nnCvUpPcBuMLV&%dGzyvACmi~AeDLRCkVlkx zbo66oORTjVshv)i(B5?s43~+*GoX+UKrioI%ckv$&`hO#9i?UcWThS+J+y129#@N^ z@%r`oQT3y`we>_$5_nBd01bvP>$(n@^Fzj@d$EX)MUpu$1)!U3_M~=(<+2oYD2*I6 z_-#M!+DCVD)oV|Vlr0Y@1plK4dK(T6h|Zf((ERl<+?{3q@voIY*^$?HeAN5rDt*f-vvGT zYq~-h%#X}7Oenu5d%_`YqZGWn4TqJWpKEl z=N~V`7Y#@w5g(H8MT&>^2yzYHEgTCpyKggWp4#7NTm>Ht$Yz z`4!Z|1J%#sAzgo+qY&CRI<(S*NoOH`c~0=&i;kT&q~sz=)t|nOKV#^oPqBk0{RqSDaICIQRyktF0pMVDHZd!CbzTv*Ajn@y zfAg);ub=NXGq?W4KQ+zn*H5hx4TIKtNI`I$a7ck$b6#rW0+yRD5gqMd#BdodU0D>?;0%|6j#X^ zB^!I*K5Tj+5Nqn~32NY0F#YY*FKmJKBIb%8#!&&VSmYtv%!o21%GcFC@J%?%P8pKv ztkYjh$jcWF_Lo12mIj*z$3yfG>4zsFl#fC6<~ng7Iv!uC;}%0Wwhp;t^KHA{pxo->JxBVzQzB&&-?;f4-TxXLVC(h>9Y!-1lc)KuUf zla+jFsb42t^8VT0YO%A)dwx~ZHTmMJae+(2HhbtdB(e8ggbK)&<0`@=?N!_DhhdVE zf~w&QHt<;_li?-|$K(Hz{`sYXFR}b;tZJVHWcIf>It%P5mJ(zGe38>mdacx9DuVI{ zhja0Q4pSN<0%tW+24mbM`5d3h-*ciY6yJ32Z#-S`gJf(EqMvEnx@+=K-eImVV3S|z z1x27w&|I4ePB4w(#!p5rjlMB61n`iaM@YUk$hFCn{MGM5pfdF(ul5>+f87{uGE!M; z+w+us&@TGG25X1+_~i&U`cML(Sb}2vuQDqKLFDJWB>zdpUYOP*{H@8oAsibqK3q6_ zg2k)lONrWdL3K#ipD0n@GFNnqmwKn^{ukCz*P3~Gm2J-=`G-zc$y7Ypl5fL<4ORLp z1hAvaLyuNzsV87n&X#Z2#YI9u!6;y;1v-t{^ELi}7*Ov3EG#YCFz@nY5iK4g3#r(Y zs{}Ay8)>I$3Jhm+UW2z-N>*Tlz+}qoSgv4h83}V#Z$U8q#Z@%$lI%|vOq+m|z+4ft zTgs0D8g(!V@p9esB^wuPH^_1UX$TyDMT3{inIMV=veT=5cs+HLfEya?MY50rgC$Rn z&PCZz8Hp9)cnO?MlX=<0Cxlag`SGnix{%tV1(E~h&Q}RsZHQ1tDp|A6Ofdf#6LV6n zTSI#HdwI>v-;5|@PDM48#~L5VvW5sCi|t?u4cdvG`Z{e=x3_#5xWEF`2jTTb%Un!P zm;N)|pn7cU6IDeG9jt0IXxLrs1^+l?%`m)Ck9h4}9`H(fD&Gg~kiBvJSt&%l`7#~f zo-mbD=4zCAVRjfkHkPDa&UUKT%vPvQhwHIwY$n-`6c=#!4_K@6lMx}wXK7t+W=P6C z2U%l=@qfyV&M7&6&kAzRVo4qL_Yycg4(Vbb2hsAxS>+ICk}t<+j$I#U@Soc{dFB7V z%%M)$$%$xG2lA^a4dSVqfbe_L_VxE;^502?wIf@OQ&P%7S3^nR3P1*&z0dyLZ0P&P zv?_9+>68{;0)nCoUb}cvJ8H!S2ZH`_Bm*9oDK1}E&Ec7X9$LsR+S6e{_WZHBE&yMp z1%2@g=;Wf%wvWmM*^Q50JvQ>9O_Zuy7r4ivWO0Isvfp0O~sPgj>f%$5j zkb*spH`FF&-Z`?+eE*{E@A{f%V?T#Tk5M$D+}x}DCP>Jc{|DL2GaaMSl#8pgUbypJ zI7v8bWdR72QDe@PTr@`gZG=)o-Km#Q(2w%sglxB8=SuO}AXMyvlE@iw(CHl}-HuOE9H_J)fml8Nhk)-NejEyaib?_U3Ln zEZE}8`zt2VT++&mi^Z6bzFptQ3LqF=Hj@nl(qv8V2{d}YL+Y7`ndro&zxy2ug&^wimD}P)F{( z$b-uHrp9I-2lau*wI9lRL(0z4QN8cG;BjXe&K$C0j)tnO9oyk%(J&eDp*{R+Lug$B z#K{uhsg3HzX_PkK6gm$pT7bi8@kc4?K;H>N%z6u*39H1^E$f@guI7_E%-@e~L<=<9r19wXoucK4%{-UObCp>f zEdt;`HC%eqP}4f67_Yc4e68RSyfl+=HIb$kR(fGFGyH0K^m9MIQEGS71+t6qhu8Ph zD#cCSBZZJT^WRqn+Fos3(D^*-@Mv#v4kUWNNM2UEPqbTSp#Rl{OLEgH+wB|m=#(CK z*-=~vX-r1aDEYI(S|O-EHOmMB*M80wmoO%-&0Wm%o`m-#F1(l> zJcp8(oc>hOkO2D?_hGlukKRyxh$J3I~C!Gag^j`oH-{rUX&6Hf~p zgz*^q@!E?W0MEIMY;leO549p`40`R=ms2u#|0w3-Jfcy!+LJ$e;*#*aX0+9|J;7s(PMB+lJM<67BMYB^CF**)LoSq zT$~|Oy#4~zypWyh6kvd#tUP!I|FS_d0jU(!26S<=W6>x&2IUcZCE5m*5Du-{K%{QM zl_U7cD9%|$>)oIqv@Z$R0n9x*Epcq1^3$Lf3T?|+(+2)sqZO&vWsqnkGl5n}(w+KL zd8rh>7Iz+TbJ8ssmpBUn8TAR6r&7e5i`R|xI9yvjn)QR@B#9JICWX2YmamQIb)1UL&gq}e55!mtLFV<0RX7AC?+wF;j3 z_yyo6FKp_F&ZoGrnAR8bGAqbKWoMMo9jGM_QyNXxPV&g=wmj*BKd`7BhIUHhrHJ(1 zX^FL1wFwI^(fxq@;7fvm{Ec~j#bp3%yb3JtJmMeiN%$1!Zo)w$=5*3=s(E`jZo~J^ zje%6;z|)axc6YSIKx)UHOaWVarLOs3@r_ty&SVVN8O#+@H;S}xHi!8fcWQ&BxF57*K`uh0qh9NA}+BZ_}quB$&=~Biz$Z^#+4+%ZU?)zoMhO zSMBZNSIaM6dK9tD<2t|J3v1F)bD@L@zFS_zSC{G|GLHJx{v=*N2aMZT)y;U$EretM zOUMIeZH6?8U&XgPYS;Oa)BzK^&FY>5EsM+j_d_Wv)26viHvzrD;mtm4ZF3yWd!GmE z?WHK*PovGNCh}Rk=d~zdFHWxSxDEV;0mtu%pK$lFoYL(3V6uw^{gB2qF^Yw;OL7{@rJjuG=(3CpYcDVP2$F z-h?OZ0r(SHxW4FsO$m>R&Q`k(Iw!gXKFkbxbTn{_G>)f&sd_EpbRa*vt42eB@}f~2 z=8~^jpIwbF%B9YNh0WG>-D6O(irlY)@R zswl9xP%eGvV^A$%*BlTPjV2{^4Mufec(A5$8%2TZ_p~jQKU}f#VlM@W%ZCtnbCv@s zcx)ypx|u)CSXO>uhk+E6QhP7UyxKsl47k*ttJ{xgzq_K4%-Y3riU(Y=Yd@GxK_9vz zSm5U_;Lkm7am)R`?ZU@FH8F8!xbVCZR~I*sd9a>enR|!%jB?+1On@-LyePi!? zaWd@FxK?ons4c<8nD!u!Fpd03qr)KJE4>yNXlBj503xmG0l?vc<#XFg3;=ZRP2@?{ zz|AD+VOUbGwpEv%_II7E?ES_gzE zS`I%xEDW6-Dmx(Ie+RLE{mC0)-~^p@p|MIL&@AwvcC5Z|%BoMG1C>PmcSB?SS*M;d zRuun(q^^+#D>x79f7Q+6v;h0jF-BB>*@H=8{*z45>V^D9Y$JciW@@TCrqU*KMxMLl z&scqas4q+sws0Lonk}7(*7kYz{YX`j1K!BLvV07pt@SV zTTaAR%dz9P_SqfPT{d?w#@J8sWdf!zT>FK*%6aT!0t(3VhVR`Av^Nw3B&t}q<5MtU zRKCc<@#!O#6y>yho!mN5rA(vpq7dl@z)?^QuASR|f;QnK7xzP6JiL$4f*9E%!JIXI`FMQ>_^@MvK!)ThO+KgEY2&BBlv3fKwhM&5T{s6AM_z;ZKXvn z_$1U9h{8jkX7suoX^0=tN2(6Vh-*>{v>Pr9-Pa8{Ujb&`ys(o3FeEnjrjwolm?T^J zXa7e^;Pv%U;=H-lUm>-;RTcXqwNoCC{1gV$RTtfbtfW23Kc|JO#hm{d8W0+ll4e+& z(exnltQ4Y?kBCg0S6nj>c5x?^FyNQHxV+z40HKdCn#IhwJDZu|sa=Dq${mmnin6i@ zK+3Cfk*DY}{FN)p?uAuytLpdJE9KG+w%xpt%C%Y`B!lhN1|ld&k2z4070tNo12-Gu zhLRlUTTj=Df!|jf5e}$MJL*sU0b{h~bv+(_@h%!u2cBK-5wF2nVfD&y5p0t{pntw! z@-j1XJSvqG?!{Z!PV}1C&;+7!;2mV(ZF5p2IPm8dI;70K_CajK;kZSB6I=Y%Ba{~d zRUM*7Eb>;;8Fj>I6yNTNv{0L45vzZv47?jQN(y-ptpMc%gq6zayi7ewiG%DkARg2p zk;OfSEY1xM->x|HSNIux{9Z5nPCdOOOdMseXT>0uI;8pmrMw@Yg1;25Us3=tY~v_{ ztK|eKexjN!)%4YxvvM0`i;G_tIp+jV@xav2M1jMR7h90Vtvgq$FB&}{2TdTTj*-G% zl0c)bHI)m{@-naVJB0Tt7c3}&`Xpm*4GJ<;;z#<+TMQHa|> z&HG<}=MmG*0G0fml@CYUIaIabbM6S}uE!+lO~OHKX|v+2+GH|G#EML)u55uLY=mF} zxv_I6PA9juLJ6!a)#jxhj>mHZd0or~!`Z>3Q_{cAXC(7ueakClV2`0J>V%hcfiog@ z^^thQeyae!()9iwo8_E+(>T5UytR$H2|-?R=&}$nHA|gtC)fb5gZsYVOC9E_;DQ`D zyr~;+C?g*^4gD3T#yhCmp_YK|343VmwqhqP5g;+J)goK9dktvlO+M?x^YEPx8?xT< zgu*4y9h+iX%_sJnKJ)~VYConkSfaU7J_6Z1CR=xSM&T{Vi^sG z@M6C)jLcwvyXdn&;Q8dSAZv8H?aq2vC<^F`zis~L8k{f4bHsfvJ&tfKhRmX9af3%Z zy}Me$pwIA4*~Mu8AEx^-WoM?&hd}O$=e_RzI*I2j!nyr-W3|(ekGRh1VNQRi;m@#~ z+KQ4a9)`~fNNDZnfW1){j|-@;@8X;=2Txp0zP6so%-bDyiYL}C`FA|4H(^JI`I)eB zZI0==z^MZTeNjI5@M_CA*P^0@R5689yN z;RDhhZsiY`+ijJ09ql?f3XHjmqqu1sKUBl7!Vt_I zG49fnmJ#1zx~ed2SK}k%?U-A`37Qgk*-V(`p@M`h%h|0(!IQ*7yy2A-VLMm5m_(@# zrQpQKF#g1PbxzBdhJ%M1tGLeAa-_JmYQ9o!NmZYux+Vdmh)SOS=Jfh|`N#9&P8TTN z`bk4rmZN*=6obd~jZqe>jjcQ6a~>RYdZNB{u>B)eCYn246JPMB}^o7kvH?fk)R2spJ}n(3r1y#vY;AIGMg|AZ`Kq4u{}NGC(9l3@zR+tiBT>0OLh433_{E`!8-SGOhgc=;e`+dwkZIZ5d6SE7n-8 zXpIj%fmjLQ5|JBv*c|xc7s}%c*plnRLr+~xfO8gJ{E4ud7bR=rssL90kpY_pxTqR| z!}zF~3BziU_|qmdu(|Ml7Ma4J^N1;pxlyChh95ln*8-E2xST5lzoU;Et!%pFNq4H+6Z(rQlfR*s#*dvUhk1#tbr3W8#?7PDRiAqbP*V_q z3=A>uCKB|@fYpd%5QS+r29K-#kPB!%3BsY@ICGT_yZ6UO($JF-y=zKxlsh#+5e=e- z15Ak^IegE%ixN;Xs6qD}CtE~KdlIjlP>)Iy(7tvIlyNFx2dLIi}ySNrBx$HqtcYX9(H^xx$H z-@10jzj(G&2mUeN0gd1tILBWo3%U$OAD~+`>#FgyR~F}1V^<+&f(^ok=@<^P1*Q$2 zBQx@u`81$beN^<>TUhh-h-U2A)ka06*U?$jC>`aX={Zp{BU!_edf7mV3&AUr4U+yg zxz2q&?VAp_xX&5DPXX@TPwp17+&XpAcrR|CWkl{k=E9IE2%7jnVF?6buUacTjuJHE z9^cnHL4+npUA=&1Vn9N+7(cnRX`PgC2!aMK`I6xTx*a=e(oM2hwdtIOXt}n5#H}I5SbAr=oSiYSZzp5z7_K5;p5&=_*4CV;`ABynCwQ?3 zUV0~mKwZ%6t=L8s^}iyrPOpIo!X*pzG)eQyt>gu5o_b5+(4RQjnh7a z-D@7Hp@yCTSA>LTHY^@me-$o z&W1)1wWISnBKrGaI#?~8O*%8^{7|9dlD}O==6LVFH!xMbl-#sr6mZyhVNxbY+6lmY z9&zfIH5A~<@ll2mhnx=bnr%!|Iq)AqIDCCmFL9cjCVGOs2^Jae`{-pfoss(f3$>${ zpUSfFtjw=&Lmvff>6pj0f56x~P+fB?6fOtx!%YTj&|Ieb-NEDJJfrL4@A5|FaS~a3 z{}1aPG+Y+F&QD!X0qylXYMub1w^v{L*MqFht_|hPdc%LVZ; zm}+7X(gqHhqvV%-4bW^Nsht&te_Y9nbzReJq&ArU^00|C1^ z@9VK)zR}`eMau^y+oy_@SKUJYbVDEMNjky;9>#DMMaLL6R9Uh{zgWI*Hak41fAn7+ zjzubc1gmU&81ywy^*`RNoh;yMl(F@6$KnW1$Db`@!5IkH7{Pz|7AgWj80{#ejRCXm znOh!WRgC#x|E3Vw@L9kaD}7NuG1wjLFFNx}T^eSw3=Cd(3QoqGlMkN%TM>LbRL)+@ z60n3`Tk-uPrhgnY0>>0rr7cvxjMr*puCn;0Nc=*?UC6g%vm!_Rn$Cg&@Nfr--92G< z1A?QGv@R9lp*aFcM|^3B(j;NE{d@iUJ99PXG*Ca69W`!{z&SWN5@B46%|tjU(i#WrD%LvrvJyL(R%Tll$ zduUB^W0k1?e&xAI=z2gVHUNV;&!jDtd^NLh<7u`oBhyVM}v-wC^ca(Kt_NDf&W zL_N+Qu74Wz=NItALnmu__;|w=TjFAwI@gh;XG!`9?edyGpZL-JLD;9LOI>K#d8?Me`%9-W7 zDySGm16!0Mo5BFVLiyS2B*BcNSZpfdbC&hn!N@5=Cwuh;)(!CBMYFCips9W28l(20 zX>%}nQ7)Cd=CYi_YWcF})Q35U$$9biKt&)D7A9Lma2%Zk70=(W{1w}DS3(k0TVc%Y zO6aqoB>CIi2b4B-dEHpBs(Em7!We-Atp$L2O;ViF3nli8dXo12JBiwAT5-LSzN<;> z%(3m(iq;%Cx|rdv2)=aj$cVe*Ia%v+ zNvGcTm4J2y`)_Mx=aP-j6lKd4j-UFSuPy^JdY8QrMe}%AkY8=-7P+K&5{lR}L0s(d ztJ!_I&#!ZHE>Omw>oPU%HO+GYFIopTs#vmY2LMWXn_5%pFLC8glY;#6Q$}8R?7EOa zm!*&!lkSQp`+K7S*2)yc8HTxZJU&kjiE*_c0z$NvP;Q|ddAyLE=pE2(ycB}D4rk#Y2u~e9c|FO73ib_oyz+na5S^;) zPN>i4M6Y&Eo%SYPW5&ZA`hR1Z55>lTl%wC|RU-`SshKP!Upz>%hl2qscsm4KFul7a zCmN=CLSqwqoy*n5B0vjzuYtcp{L9Op15x1jmu20ERvZNf((1MTSAOzq4vp%g!8sR* zc9K}`FMxV3(nFukUQ)a2sq!)fCTtJf&N$lsPq<1kTyL)M^vfE}7v9;V0NV0(Ky8%& zbQFrF?P;w4~7tVBeF&_t0=^7l~ zI9U5-vUUXP_Q*ulW)VsSYt{T6f^CE!Lg!B(SH4>iAN|{bwQ>FtV93uepA`0%x?Nnc zMQ$E`0bgAv(}M8=2Javgnpba&vGCemn;~B-SiNd`qs}F9xInEK^^rgDbe*!o4-q%8 zn()J~BcOVv**#)_JD7h3d{|}uNOdZ&KOF`Kd&T}-TN9UVhBIo(XR3A*aK(Iq^hy4Y z9)Ze6Twd)UI(vxmP{dUKgT7~2WL&fWT7ec0WIQ||Usoe<@~1jNwp=ssRYb2GX8N|y z)AQr84tHFq^gs%Hu3%M3wauS3red04E&QZ-dwY%On+b@fbwWE+UQ>r==hzf&1IVOK8a~Avt(k48qWG_2k9{9QSL%3~<(G zZnL+%T2})3)qySFEtGixkz-|fIHir!rmPAEMc-KJTrF}|5mhLbd9+sQWQh{?^sS=I z0sRI7?tD3ySRmAx6*Emyb4Ve=;VbEzYacedh4Oj%L~wdcn;aV>IB~!U1vKrW+O{&I zKqcZXcme;xg=(*on?*KY?Z$Qpxg;ZlYTrF5Y>B}8SsVt2E#MZP)L}F!;-2DZlmiPM z!FsQi8;{2{QWCHvZ+G@jgQT=%|A_Bt{Az~u!5TFd+eSJ-%P;8wv#?UybpU@}t%CRF zj%2(#5l7x^Kz(OU=p{HSDVoyMBHt%&uUys7d{t3Z+_Ie7|9~>kf+zOHzdB?4H`hw0A>0}JV{liL(53dFDInAto(f~S%eKn)f>NKN7{d8n=;8jxqSp92F&X<5%zieKbFO(X10`XD~D;!;SZ zmH-C$HGO87#(G@EqzlJ6&sgZR;hhE^BsrWvAG`WwbHD*HKU$Xvls$wMCzI0`tLaxL zNe(tEn|OTf(9ZHiuH?~GOpT=S!c5VCM9;7VK2-@aNkxE!aCxoAt5g0v1=>y3Us3ce z;2{3t%jZUH#Y>Qjh&9}6eL+o2H4BP4&mRQ0FZVstN^|#(;A#x6Ie)KsOQR-xLzxAA z%dad5yaaOv{(%LFmYM@Z#1JxCAKq!K5>k^l9sdx~>^A)FxBp~aeBbNgiy+{qmrLQ0 z)5QDCiNA`b7-H}()R*)EKubSpTU(ML1h=tyDkCfpTGe3@Pf0g{?3bg#hkDO*-kcC; zQ8O^`k;2hKqS4p{&^j&>olMzJ?FG7N>k$Toi0~t8Ky0^Y$pDTmwEAWRYuW~U#S(>X zsqB2+<<-w?iJa4DEdz4nf~%VVuzadN8&7JUUhiVep=G#Q1$8}m@tniD+MQ&n=IEYE zzZq$9wk-UFEE18_?5@SO;j)>^sJ7F%d?D?9lfSWZbNWB$n$*BymjWi0%dzV-2B%-v zE18&sV~TR(uNZ7s?ndJ8riaZvV8V9qJS>sH()hbRZc*p$_qst* z4H&Q7=~iy6e1wk7y`g3pZDCSpdSc<&3UWrLFJ|^K+w8H)1_~fbTrA zRu$DXFLXpw8mi*}Ny@A7F&LZ^>x^Wv$(M0MLc46kum9dY|9(dht1B& ziYVi@xxaW|)t}OT%gimoV)dfzi)}>-Mc$i1f=0xfFMd5t{tg?YI{9u2Zv^Bolk(Mh zQIJFOVMdyMr*P>@k+f5KxqV5HDKQfnqDQw_EL5i4UV(z8 zRN0XywQ4gpw^S0Y<|8JMdhZl@-0?x7M^@(VAzkoW5~}AESG(~=pZ)$YdO!)d6%B(< za&2fHR>1_mxXi*XNNDd9{0>$r^xIt^Tp}w(f@jmMMIwhIkvv8r7x^;Rlk|r`z4$$D zd30XpwY&SHai?Lpq{?eBhZLAtw8v9h0Ydg%Je+GDM{GwQvED{@V{~O=ahZu2O{6=a z0O~{lHGNae9`n(QdJm=>&7e+NV_^F^AGq$^QmX|;;DoVq@VMO>)~OS58^`G8I96o! z3s9ph(w~Cs!2!{Sxm`BNf$| z);VpNwRM7=ce6%Ui#{Y0W*_4pih2(Ir2JL ze~LBdB*kT}l=jOXHd-v;PEpF|={Ituky4f7nb%O)dCRcx|)T`8n zIbg8hx@Z=+OGar^U}%9ERYrWM%AK5OtfPBmR9M(b9#t80SFXO$>1w_yuUlgbG97~` zqNJlJ2-X@VFdm7BZ-WWME3HVbQNegpOjuh(NvgBC|VQ9RGqV}~jJ!GQ~e3oM{) zbi430TMZ7Yu*&lzxkLi_PQt?~Am@5dA&y(Gx$Qs6cX}mwR-2b<%mZUEw;U2w^2iwm z2V1B7lvpj|mpj#dWJo%g!l?zCz$&>@_Naz@4nUE6LOEkZCc+uGk<h1RaIfDhO1I^2T)%Rq^X+!6uL`R8txci%*l^< ztSBC~>mehP2T*Y{)~!^4zL}Zcqs<-p4*8OLg`AM5&k;yU>Iw9`8~a6Wbda`k**XKx z%O!EKWJuHGFJ(ncBdP`AVqi0o;XqTAoA{6b!U%dM4eYrA@Gw4{{97geCzP} zYzczOuUsK^Y_mrT09Yg;PQ+dWEJiDbk;AxuAK%}jNB?<@UAuOD z-iO!g`GO9X+2vf!;FQ%Cy}!0~NN^sh9MtYVD8jOfI(MuCFS)bHEst$b^Sdo> zkF=DaEs<5aF1jNE?QHg+v;IBA+t(*x|K2dMA8VWx8kr$dk8Px-o(wurct*Q>vkl&R z=94?mtnT*G&^4Iu+@1*99d`Q`!2NHJ0ZxN~zINRd?GW~Gj)LEo#_Cd<1+@4NUOC=pa>X4i;-uE8ONeCROe zn-Bq6OJYQbB#;I6=PdzW22nI?TLUC_lR-zJXaQcU#k@K&PgY=tfG`m_MSTnw(oS#k z?<0nuzrK|OC}rlOn2kd~ukT8|(&{)Z%|}R_H*qoEwV1emy+EwIOP5DIX@4$j63bwp z8>dVF8F(4v@hLFP>$CPvhppdnc_J&eN@LqIVZj0$SQkJ(C`fq4i`SXJeh1>G%lJf! zv@;vtOWS>$z2@Yu*}*6?%Jd#rZ@s1nB>Q1nJ5kDyg-@CH167mjZX5b;QCrb85=*`y zGcyg3DW0+q<+is5e7Ueahmp`(5idJQk?FOUdYjb*FR61|~ozyC%`c zri&l`_fP_O_6*zs-!E$~^=pifX7ny$m>up)4;P6dTaJPD&ooQs9S3Mqj+SnMR09>XTJrQal0q@C?MoWWjtcy4R-LAtld*6IJ?zPqiB>|~eQ-eep%ux7Q z6`#4jFIob)*MM6FMzT#FtO}tMlY5u88-)QBlvigg!p7y>!Z)=u7_g#h%qIo zPR%z6(F?jWU<9ejG)(wVmn=zB5~mvyn&smeQxy9?8+W?_yg{I&s%M-#aVPKpE&h9`>j08BY!v9 z_UjRMm$x%_x_-9vuN9kp)tHDecHS*F9~cROhvxnaAEgI-zYxj($os{obYSF=ohbSZ5v8ZQSAM6E z>MviHq(L^qi6hUp3o=(3=HR)20s2OFmXW@Hp>39wkrBX3WnC+l{1A^sRvz2i%}!vD zPUJ?egQ8;xR3-XY2by{`S)xyYk5Q)jxlNk^IJ&!|c1MC8c%gLwk4(pOEbvacbO}e> z>!Z^L3q1U$A$s$4E=i&*N(xx=XD%YJ2^$X6ttM-D=-I^r*eeNmmiBkh>mMgBJ(yo2 zbP%}eDdCjo~&KmgOmNi<)0;yrt z&s(j1+PM zeL+M$B_AaC{%HOZ?~6^Rm48BJil9LpfE9TDG6pLQe2A^C?*zM1Tb@pauSd{4u;|m1 z0TtvkFvWQ)$#&_(98UQG%pkkHFFCc*xTS3}x==cy4wSVQA}c>-j6lJ4(6wD%Vvro% z$G;|9@*4oflzYu75s-~^=~4?-`2OR{a%AHo+XK^(2pEw24jh(G>^#>4)1wth#}(9T z@W-M|%=`J6B-@csfU^Pc@b%gGMjnr)<1U1kd%>hdf)S2y(#u2!pN53$@~UjYy<1XJ z*1>oM!^zu;V7no+4!(J}LW%$eAhq1PFoy_FYE%~lW2M*jBweV)%wT2$AzrlK`QMkZ z54hYjk}~mfBJ&pmrgv)R*FL^5U1`A78g0$e^D2JPX>^Uj-3PY18~>P}^@qvkea$?! zlSwaVk|fauV_h(*PwrjwC&mc6YBPElq}^Z;UmRM36jK7>D>Si1dERl-N%(aq5_CL? zA!-;p7E1wT8`at#0(O&UL7pll$T1Ocvc>T5_-M?U@PrTqMzMBbCbn_FUwPwq=^YFEsa3+#*tFJy@uU-2dP7`a{h4Po4ftoJeUoesms|2&DWvJ=;rfjmhSHJS zK<37jZj2AK8@XO#^3YHMI8?;KnHzpD*-Nsc>W$%W zI#?55gh1P9%q>1MZ$^hj zI(o1ChDc7JDWpmJy*h9^I>7VNB)Hrz)gzF*&c1|^GKwpBHQWvA@qLdn9~=(W?Hha@ z9Amm$Wq41VNDr~~?q%o7#J26Y?b@Mt>)e281>Y5RKi;dVzr;3Ut(r5?6g+(WsAf*@ zt+SqsYj4v2x$`!$dwyMT5rdvGBCA9+5b#z|!Lh9>hE&_5s9UO&cV>8~4@4ixjiHiT zm503$+`y9Y4LCc!rvz8!i-Qg4CKtOKIboy zo*mcE;|8VA_+0e9p|2nyini}a-QA_V=8B;t*D*Dw;vr!Wd;LO^I6F2@q`SmcP+u*a zQdTB>MuS}Jr87PqJ(ikV=5qTD;o0s~w~(N}I*-#PpQp2P=U?`pl))G~|2ncrP_@)Lp>*>r75 z{>JGkmoVxOZ`c=+rppDRqFU9Kz&o!a?Q8`J`uqk7#i#8xAFyP#k_j=YP zBJm5h=5)4}gg?^1yJ=MGQ9lgM- z^b?m5KC)2CfY*Y=rG=7>UuF&L+M*PulyTS2-WQt+o(z3r1MwrXD9zh;%x?Qk!4j7AoXgshh?HN|WyXn%{ zF429at_zV9>C2zALnuon3w%w+(sB1yh{iHn79{FYg#@MxHaYk*A~-Q|R(UOs9Df5A z&$rrX2}zaak$BtA?eBpan6y;ZEd_?>{abNhAK;z88L$&JQnYk{fG8*d1CI1y)V)P8 zZ?}Cky?sD;0x+d3*1*seanZ=7rZB1IFc0OpKaaU%!Y%Z%4mj7suN6fL+I0R0jSR)1 z33VSNgp|R9;L%&JGhE90p6V0Ax;rGL$WK~br?5$=qN1*?^!fC`!h_4p(m2=e1KwWE zEzkw<9_5rRVnl8}^azlbl-#)s*zO*O%8YkHjc+@QW)u-X$c8mGUFV?(ePeE~2gdNx zsSk=U2*GIQyqhvK)uT^_NlCz7(t^Lf8J+8V2f^WnbE7Di5B)QLw^@Pl*Bn)RtNV&BOQ%%^rMb3e{zX-Z z%GDno17UF{Zru5%$L90V&i)my;^>Z0tJA%!k0SRz`3P1foQ=pdlHF0cd%I|#C)r(+Y_LVbaIT(_8_mounjQ7^$WWeoRCxu@=*zKDz%=Wgc zSd;bY3cPgrPR&4iS?Hb{QMWfe%$}Q?o%o6rw%FAi6LA4~Y1HsFe)S<)Q|k8Vxz$FEmGF=a+h1=YJkzB=^hC7-n(6#A0G@mwvOx~!1qXlW%6udR<5()Jj` z2qo-Ykz?U5mY+doqTlQ%uLAr!1vAAz3gw4UC1_tj0oo~-m z*|wN^?CFd|wRjlYJDj+iQ(Vs-2-@@gBa80ZW_vQt zZJs-bn_DU1VgqT-c8f|@gEKc?K9>rCtAUO0f?AA@Y{QA3)T7ozjRApiN+VTaV>ig- zrUN#X_f)!mjDTkA1w#3AXe=LCJJj;Q4`Vb02s$%JVCI0C;_TK6?%$?L*;rdO-XDl*WIqDl ztbD7N3UWapRi($dhOvkXq0c0kvOhrZ6Ooj`p{!t)Yt87y=a&@?Av#QkM1{@vZczUy zt3K+&vOCS);Ni^v0ibA3>J1DB9(qDi;ry0LlQA`P z8`gswzT3Z>LjbDrgs_p1ud0rsCFCi{BC{$msAU2zyEo%9K1nrXr=~H7p#iu!fuKd2 zw-wmi4jO4D*-Tk&sn!lCkR0iOiolA$x4pD6kp5cANEqf5{3Ra;z(Rb&7Cn62sl0BJ zb+;8Lms~vR%2@C@rjWA|C@vVJ3r_}NPm2}1CLnh729>mT2pEei1G1v7WkpG^u9Dqs zv)K*IH{Rz?rQ5MnZkP_3L%2#U+St$faO=khALXGpViBeo41Id9hZ(Uk;O+4UH9AW+ z9|*M$i{t!_vaU{$%~%EB(ezZjmr7?npvt(j)Maw)vTA3Iou{!o*xCvx1hV52{2==c zP(du6eKq5*q_i~WeAj6v`zguOLAc4#a}bxuJd{Yla;#Wz-0AJQJ;I-VSbTkvvJ9Z{ zEIXlF{USTfxigf7vg;u0V(AG!Q1Z5WIO4?aCB&BU$8MR|gGth|K(G^lSiTb}n|Wd| zE*_NE3wmIV=~#dupsbIO_je(HPRb{u)dMix_CsZVH1eV7qW=?#sB2U4tLP89${( zLIyKs&2?q-!4-`&VKgYi;J}9BMCrbo$2W^QX|KBxNpts|0MOpxx(Rc=wk_4eh3bvF z=)Dx11Kk~YSC7VD4FktNmp6A?Ks&uxx7>Il6+oy{4g$3+#g}mrKo;Zk8t5C2dBQt3 z^(|*{;1i=ws2ESILShkalocTE+9xXh7b@FQDf5p^kx(ou%R>NBkO*RcGj}^==!0Bl z(Ex)8(0!k)*hdc*m|^55lsvSJ3^RK6v*sPFNGcYos-AKrm>)JaBVK)#Nn9Nr4c?({ zygxTJUCc?*A}wqoF8k@#oRW;3N%j59-58pn7=NS5W}&j5FmHx)nUa+*(uU+WoH=+x zr{@~p!gpj;yFj-qHsIqV=V6ut9CUwWfpv1Pm@Fv8`oIAJhc(y2OBq%{&D06Z(!R?z zV9OX5IvZwgGS(MdUz!^kDy1v_db91vcs3B9p1s}w?Zdw;Q%Gz@*R8A)Sx`LW#!dzX z)%nyuv1B(qR(aelKdOD#xbxO%VG6h9=!vo88AS^ck+nLDajCz31CBTNiA`(JQ~lZA z`^aGy?1Smm0IpdNY}W)&$ty^G0tZ=z8!w?YHX^y`4_I?{o-Ap`t_q>8QKJ+ z*0Fi=LhXZ<{Hqnutt;B6MTeT@JB~)?i}k8c2=&}bu8p8K+mx~gcHcdHu@ch7H`TOw zIab2SfhhjTzmo1zYt)7K2^7dw?7Yq^&qb=#9lj^-!R0Bs?J~GsAb5&Zu_$~}RnA+N znTlq+549@U6lu2`GRw5RcQ3d^Y^rXA&x4lew7Vu-rncuh400z=FjUn1{r6Kwe}de^ zu@x6AexE8CecRbZlD~5KwZlrt)#_3DC-rUL)_E{+G1yl%{jhz{t#y3n>=}XApS9N` zYFvUsN?G~Kyh@(yp&}>1pfC(-{m zEJ>|l##@3NE4S#pTi(_l!@JMf+i_bFs;$7zCn8Z|wlkjrLMyjXlkEaqZJ#W7^2FiwNVea>=7c;ElTLYMlkpM9B)JWtEfob|g&j@XQL=Pw z{1Vh%<&37iTcrg*BLX+JwbM5C56Aq6>z3)puXFq!fcXs0Ajd4|Fjs7%35Nx$kBkG) zm_{9xHHS5P0w98wqF(|z(sg25aL<);BtU zoek3mOW;nf!om=#sA=vNk}Y&e`hd>1xF*N~O$67nR9CI-|7Qj{!2$}td~^^JfPsX! zuNI-{&~+E3U?4Th0n-qlfawGp%RxM3ay_=ug_;#7{Ns6f_e?6EbADk6V3x!H172D8 z8VVsBFYUU&>-p(wTU+hH#^Oo=CNM#+JBrf)^1MOK-3c2@S$YMAJ=95pDrWyVut+S- zxyh^#5jtHIUn-2HS+DY^S#4(tH7ri#2?;0C*ty{cf57(}CiR>1NsD0I0eF=UXZucL=zTEZ&v_RB^3nfji4ZpTAAX~X>W`z%9 z#+PQ#msdnbt{2MIeh~0;+#Q9oW4Y_Z!N`z3%#G<=ysEjJ!QuyZ4}{)H^{bZAXY@!J zJ6f1@-dx^b-+A+PDUz~n^Kzevj9cLfu`j=9Er955F77AT(a)DM^m-wUT$1*%+fZ0- z_!`|Q^2gYHmE(iE@{(AwRgypJr|X}36UJX!-*Z|!-9STKD;atAPgqBG8!UlPkmX~) zkd~JiW4}lCh4Hq_n1%1-bVLFZFjOY4K501rE)|>VrtmuJtgY2*6Mf-ynnFX`4m*>; z-}}K8E0j43u%qx9vPZh3N7O(YgV=e}y6-My!SP;kx)2HOX#IsK-ZHw*Df|07`6ia| z*2c#MuQbXQgj{%IUgU4cBt}ySG0|5h11}#{Dfy9t(~^*%4V(niB^9e>mQwLK2>mh(eM-UJ1r0q6tg9jyNEg7|J_Ue{mIUR zkAKgsp6!@buMYnbE$Z@`Ch;j&=}YLh*fYP_U5j?a2Hfr6*j`aR>;BR0Y-+D*-qZ6r zHU;9x&)pVE>i*-sIq}KRZubS3oP@vcN(aMRQ10)2PM!X6z;Xgz@O8ey-L~+GVD%oc zatTPhSANUJ(BOXGXhts736xvjaFB>{{=+AgIsh&0xj_41$$%wt@2+M&$I6wov-5%Y!i5>fM=9eU)yYd|t2wL3f3MpG zkI(!EsdfE2CZW1D&}9%;5YX>^$LWL_nE_Z0Bx{J`hNRoq=ogJXyLG@<+O$SVvCY;4@S^)ptqQJ)j0IXo9R^- z$0};ct7*g^=9yp7VJ>l8Mlc+1r!hd6A}a`GrrB9h#kCFD)zqgc75sehw)#yln-UH#1rqcD1$?km9Wf`H|ybQ2xux=rqM4ijY1K>lKm|c zqZ$b;PU$;*oK7q8X2u)yFVf4Mht6b1FaNY$WQ0morRl$UV;>0y z7b4%5>MMCiCc}hOKEe}b_niMo57?>t;7$YTZJ&PmT%1FZb<{&lA9Fmw-W}$UKGd+$ z%nYRGXR!B1aL;8`lNDv^=)8}+er;X ze(@k7B`>QntbXH=)NT64vbL7}G@&3*HsIx#JY}`?4#^5xwR;Aab$>-mh?PIkulb;I z>!U$feQvhhZXR06aIxpCf_5Ma@Me zpkGg&9$Zjrb+iEghkY^UhF1yc$~L}U`9gR%$iW~YoZTMXq5q^`<# z)axEkYLnhvOfOTj4b%V)#I?h}Y zYuQi%WSC8Gt!k%0o_&ZC(}BD0XQlv4hW$Kb0e3)I_R*F?*gdc(XwCA zFgmw{1f{HR-F!+}4}!J-wHVj7$$kszd^sC@8Y|v>8+uSn!gB2tdg^&nwquf|+V*7m{j? zQ`Z4|pEXZ>^lGOh@NoD}ph3XcU;<}L6)yusbUQ7IOhLTkePkovxnC<5MKnmaMd~}c z*}a+F>2KJe7V*U{qq(JBx@>S$5W4_vrxDFlebF!;1|*YUfOh01pvC)yHyqCYvHagHqO}opl{PjNX5S^g-V0+N<0=)@&Xiq??&KHZsh zH-E)S>=IhsqbKE*+YRWeE`(R6zl8fouNcZJJUn4)H2I$F%q{&q;ahCa(jNyNTG^eP zF^qr{V~?-?@XK^*GX#m3H-X~f9>yl5jmaS5GT$nhYalQR1v!DY@!8+iNr5pGBiy65 zr%fU%m-y(Cp8jn2CozVt*G8+9wvj%jjDW`;!jGQNpyJWzKIqybMt~Nf0OM4a&4>v6 z`&Qc_W;CGoqR1ZlwzTIt7orGFS5N$#`Iz;@twRggvWhtGQs z(!OK_%u>eKYdO6kihnQ7VCo)ZMP^O7R_o|23hjZ)=t5Gz{=KKnR2xrBNweQff5~2V zQ!dD@p#vQZe- z!6gYNOTd6YiztkU*Ta{o?gj;TP=8r`-K4XG65y zUJGV4R;iRufcO zHA)0ap9`uDGzI2+N!t8n_vA<6RnisD`8>AsjD=mwJY)@TivLUpNRnZAHI!|X-18q3N1G9E#bWbqWK?3SV&wr54 z4dH^W6YrA43d~nv>q9cMf2hKvDj{`kyOy_KTiA8Ao_%Vyh$m_mD!+qlzM6ONic<4> zmvryG^Tc$v9NsG(x1zP~y?69f^?FlaS?{_*#-gyk`B|^iuU9gCBw|oly;M(=I%!}1 zRo=~3>SAF>qxz%noWq-|8AbY6-P&?%9+uCBSvvYV?xppm;w5Vl!}a^t+pSoSEAMJu zVlLJCrSHGu@yIFi;+Z%lMwWz~q_SGr618c`|7(Hr7Ae#4p?_#e#*qN&2%4#nM$|a- zFuC@l+}VTTeo;ck9XQ|NCqCz!7y&bdH#?W69q~@T_Q&eL6hB-kZW$R<42e`7x`=xF zGy3aW!Ca8n5!tw9lXK+k5nKA{!Chf-Lt68Fwc=UwDxX)c%a>gO7_iHOu5FIJbNt5e zB>jE2(x1o4X8lqPKPKy9t)fId=~7J|kfxIzt%tGmO;-5hrtMM(0I6n}Q6HXtD2XB9 z)db>;W9QPEv1Y01!D@b|AKke2K^(~Vk4aR0^SD^&s&zN-^iLeJhTDXc>d1aVQwVE< zh~3rW;oR!JMKz9oMN?5zkFBn8Zxl0xjv$Xwub?C*S{DlFs`=y#g|1v)Q&@L>Cs=@tXPCvQes20y} ztJN_)?;`iQB!UUy#ajk=s}VCO&p;gI()8_Be|Z9n}F(mfl#6=ps3*U|gt z_`}tU!(Hndgm3<^bbA!p!7gPW>_d$BOmdeR^L9(rdyOd0(~C#*{t-`l(C6vj5>8WY z?^01F!*7uPgK$15rsuvH9bNI@^}U*2TQ@f zx|^d>6G}5`UM2PVvJ>Lp$>=-xooJtrQe=$X{SU(6LswSK2amRFFVAhpjaoQT+RrL1 zclU+#rOb1wqt7R%0*twz^+7D9k5IH|XMS&n0UvPn;d>;mIj5Wa#cqq|tRD6OUX@=% zFHGG3gZveG$E>VU`&R1`^3Udrf5z*6<+vtc%Iq0-V_g<3AH6`7bj1Ao!fXFDS;^nE z@OfFQL}2{fOL^J$lfp67&w+?aO!$}Sf9+6f?{`f)oe?YM`X6L<>U#*>A)xlh(0`Cq zzkV2f{bO>y@!6ri@hiiOGqxg!*6vd$e(sm9hnl1NsU zyqsm(&4i}RR#@y4RKIg3oP;?}vD+l+S9srYjr?Jr=aZAl=VX$xx%^kbq-jxgqjHMiG{wL6Cs^@c%(Z80>X5W zYEy6BojIER;)mbYz42IDwWg8puRg*4jICW;FQ`{+wzsrCJ8&DmIQ49%j2|4B&@-L2 zDI7V!;e)D4E50b}AgbtTW#@#GciK?OT_9lk-;*+zK7Ks0f>EciTa$}f!X7aiy%;1e z!oX$!W24y(G%v;GMU{=&e#7#jTfKbg!zoMZrc;I|(^nnGK5+Ub2b)E@jC2;onU>kq z8<)DUlu+qS!9O2Zx2m`PL}=uy=PoZF`*QCv(DVX~{v5}KRsg5FP`eOZz)`cY% zKb?{F0cgERJyo>Knco)P`T8;GO)Isd{ul3l%NV*uftZ_r-}b8d8FB>Q@BZVZ8ab__ z=p*A56P^_c?zu0rt64omPU)|D^< zs?-+VIxAor9^-fWHIcKGm+t6W)zswLnbnTW`OZAd{@(i$NnJwwm~Is{dy%Z~dsOsP zzyj0>sH1=T_T#?{!+LE#I-~h06KG^$`^oJCb77({{AUQxsn;7{pyG#@55(Lh)j~1R zUuUn8-Bm@sFuN%}6K9A{qDQXh=j2o3ri^+AP&bgm+v1n6$0MK>#?h-Bul&OFx-`o~ zG0>YEw?*&*nHM!D@WepXD_8B`%_#73QdYK(O#UF1RfbK}Ant-QrTL`oA$3ioq z>y&W~h=n>%I|(C!7286Uc_#cfgXMF-Q9Z|&hQpL{0yQswqFyOn9!f~%bTb#`d6k*h z?F|;!B33K1dNKqtG(2zk)YDCaK-Qd_nwO}yYAxp7-%j%}UFL{$3g3>jk2ZNxPR`I5 zI6!SPy~qtdU@~*eec1K&0SoS^QRY&q5I`n#x0FQ~PXMglR!9%Nb@Lt7Ad>x;pw^lV z6hw}`ZiYv5(DF0_qTe4e>d(ZLlC}9rvJr)(40sK9w5lA zMeHc)SUa`TCE&bvylZg*y;2G`EkL@7`iw*g9>8o}@L#p6#cOpr}6uS@YU{I^K3b+7+ z;cRoz9CC&TnH*xyI;^ZPJ`uXGUAH0^3Sx2c1CU?~DO{YNLz;jODzJf|U#!q>fmm7* z+k_b${so50Vk_(mB*I-%NcOnaE)ZOD0h`*NEc->8FMYdSn*>~(=+i)}&d&(nG7Huw zKsbXX3J}OtL0sR>2dh9qmDTFi2u9$SuDHk(M6Li$bUa^|7OY-f470Rl8lw531CiJ^ zihKte#Mc|w3oIr$0VM$?AsS;R;mMO% zwA-Msx5Jz6CMIxYl;y=hX9Wu2^kl$yy1xTXnnEKjWMUCNO0-B`00f=6%1JTbEd#_ll+DBowh3Vu=dNiMD)ia;XVW^xXVk~u%{Fk3`<4no4uo$4ARGddtObAAg{dx!d zI4+;Rr2)UrT4d?8 ztQKM%G~GPpX|T!K7n2++@`|~uz<6ImyEK!6Vmc&Un@QMkdgBZzq4E`Y_kGB9LdFBvi{;hTjmRPtfO0ZUtC1KV!&N^MkcbPHCVqQBy?P@c@ctuPM)>!HwV5Z}2|;H`X3^iN(reP# zcvT~}-*=I(2Z=2Q-4&Og%pFg%d&RB1sE7eJ&~=xFz>O_)qgzW{uC!mV zLHlRnBk9(8{GVaab$h3Pj!=-5I}pGimA`lWcv<7crH3{+zCOFek~E!x?{$> zHVGr%0i!Iw?^3BudOh+87#<|6H=bFGb34*wZvw_2yvnno+THfL3X7eFhhYh{;E{5Y z`SZwBIbMZ27Z5R2OnW{?(l_3pTXskpjGA{o?zUk{=K57mL!&f< z@kDOj7G{hXU#QsscF)wQl71oAsp@OV(uDlRAx_r4+q*S>=uTBSI(X%bZFzcD_88!k zrTl$Aw_9^0=Tn92hfIr2#jHC4YVG^wDDMMMbO3O3^VDu?3P_rdYs1H2sjecTVuKeg zfJpRol2Y9LzTdobH4ohbdBVvcl-qv~g4-LXZ&B$iWQgZK|w1h#| za1gbE{K@MO(XKf6Z+Z%Kbjq9`Q#_)WCw!@c3c34EW{vI2nM(Pd$eO<0>79MrDZkyK zsMEYA9>a%!Pjjc2rHsW2t)uH)@2A{EoPXhZszf>zMRdxZoKZ+pg#l@V%e++7)rf=Q zE(-o6$(p6{j_iZRf<1}y@=wNxe~_NX37KQk^9GK}B za`TFPc~aQ*5S?Pj8ZEaV^+NB<$45g+D5lxhy2wCQVEVUDH=iyo$pL!335TY78fa%SsmvDmv+_a=O$=)J6U$7*Pp(Y(kxS=$8t`h{69LkyQDz z{L@2~pJEyezh3*IUiu#dGzcnv(tNxs;_IOh=n2#P@0j%5($N;;uO?p?NnOZ9#D-g7 z(Hh=h$lTxTvoHXpzsWZfIHQD7TpGxMM|%H?jvTj}n~9smTsLK<9vETMWz>d>-+%Gu zW1VLbfGc}wrB?6FK-`;tE5Q)8ySlX2D2|t6PMVb6wfj*A_O$g~`42K&o7WZg$;iBx zoI`GsO;c1;KiS-R&CBWhB688l@j}&SM1j$}%A>av&M>vk9=F#nxGnfsQ#guh*X(le zpGt#JwSi-W7v3BDiB?5IcQscqmF{~sxY7e_HD>1=5(if|>y`{p(LdZiP+9wJya)u5 zQWqYqKfGVxPKyxdSPAX>>k#|ex~C$MRW2Kk7XN42x?;0JEwXWZ`-l2u@oMl8!)ybt z_k*WnlVOs8E&M%IWwwx_DEDAk=KgoT)*P36dC|r=Y`jsH^u1%FuQ||{PzkbP?pK!k zd~MF0X?q8S9n!WCh)RlFc!d_^k;(?VFtvA2Gkl@O$ubQ<6T^-FEG#ArlWF|oZ4)6+ zGJ4imrndLG3#XLKqRcsKh3A;DFsSp`stGbMJoX9A3VN$ZYTDwGDtu#CA)=mWBj}Blgc1f2rhrSyOnz>; zz>zPZz%T8aBBvz=K~^>+{;gW}hYlyYl{h4%&d`f$^s|(1*QB!obIr4K$>g&9lV{|O z`SwxhP*|=EWZi_hA|B`q-7&__e~nGmPWM?(xzD=#l>I8KlsgbPa?^}bnSzdB0d@S% zXZK~}@h+0x9AIESJ@LhbjM+A2y?H~Yn+D(c$IE`T2*Z_O{p7$zYM|z`iiD1MK5&S_#Rtzdh7Qwexa zvgfnZMIzGYZRiU;{Q--W5va@>?F!r4$a{@zk4UlBzXM(^;6I2>5y<*w65i25Y6li{^cAlHO{vF5SYwzc1E~%hO)Y4q9FRGzx9uLqTd-q?6%k(gl21$=U@S< zTQGE=3@uJkhW!8k;8@g$cxYi;oI6G%PGm46UbtYKhk4Vc4`XBRC&vdS$H*>|1=h*$j$p9WH`4yi7!CXdyO$ zf`e~|5(Mkt6og5~?(7=Ofk&>C6uDDP3(#Vm?xLye6ziy2qfD>bx%RC{v6yDGQD#ys z|9)jANdj2aP<+8`p>y{mwV`(+D^fcl# zg1#`%F;Oa-09zSUdQ9l0Mh3N7ouo#I1%em`xcSO!OXN083Fe8 z9VY|q@KUAM@J01kgOr?E6-CRGS-fppk0Dfoxve{} zJ)hEWYcQs*Z`VJ96RNL2KK{5w_j6S3;itCEUzCnpm2Qsh!+|m=)}VcA&*h_5d=tz# z`1Ejv^nS&CzrJpgo8RB#vV+rK{>t8HsqSgAO>Qm!Yq#*wbf+{Cs4RnlP>n4TOCxWZN(^^~44C>O3*{_C^HO&&Tt)ObuH4DgVG z8peP6ynSP1#;Sj4X`2)e9UrRddCa^off{-%D@91T6u}&PdE;v8u3v40qCAnFI)_yJ z5y~X~MdnL-a6Yvv7yBUd$r3XFD0+UhhOW^_R@eYkhDcAf`2giLw-((zbnFev5X5Lt zy%RY&m))3FUEV`}Z%Kpq*58qgV7okGf5R-AeODCAX)0k1c)VVJUs1j4=J?R%{%}x) z#0W>@ypEex--^yo84fd!sW6dpV zaML3F;k|kmP>1GZ(_m*hEVm+;hhs@Mk@Y|MLW#?v-gJpJ{$w zJqFlxaQEUW>kYilu&!r=iP&dnR@GbAQFdwV&#V8;RyXIZ(n8wYileTNc=jGmNPR_{ z3Y5272pT-_uS~2SbE)(8hE9@E?%bS|pvfP`==*uUV}Y2z>St8*kHm&kvdD4oe*Zqb z@`@s?Wn_%)C#c>1V(7jRpnBxqXGD9=7BP1fAv^S0hY2I7Js6HTdDZpAi5cBCnveAo z(>1SBGg{rH-lnz^dBm#IOD&{q$ndS_V*b}vmc`XML=*5tay)l|CsQs9W>G_>?!4T_eEEROWC%6p?khf%hB=k)CuW3b8pY? zeln}?m#ayfwek#~8D4jD-RA#tfPeFJYexWWsZu-2d-Z@x!uAVG=t5`EYq2cq9f4A6 zuHf)`-jANx+y)RrsznV8HMqkhA{Cz+h8irVG~~*Bi4lOKem?=&iK_k^w+9bA+BYp* zSsKAp^*)hB=E#@KPEoix;nV)#{?r$)3sC|d@JUo~ydqz$vPR3UyU;3VEMR(VR;rS7 zwNzA+j!8>c^Q&j}*MG-Yo^WgqO+{(wR$qHiT+>qQbsFosGHe=Q9T3E22YM{%Ox#5z z=LQwx5suwMa^gSUbNaZ|wQJ{_EmZw`-}x9rMc9`I*R=m}kYQ+;>xYg{Uar2ldp)+= zufZ-C#d}hDZ_pjtP){|z_?h0oPb=cDJIO;}tHsST%M~KKv@abtl36_XFYJkq_LxMR z^{S81T8Q_$PKRn%mys)c@V%Pf4VsIi2IDe~ys7OTnt@Zo;7;FMyE9Rdf6(l`>WGXv zij1pyxKOgxx;rcHg8Q-e}8NPaxZ9% z`QpjcL%mtIx~v=cqu6diE98i=Ygd$%A_dUHx$Rx}`Nm}{G74JJr9-y~dO{DtOMNAK zxgKceo8WZf%F@ejV)yJ>Ezs?ZmWuiha_RLyY60C$qsv>uYHt^Y2@wVl#mgF0VVk?r zsHEt%XH}@V(N!7UKt?T^QC*xb8q+?D)T??^8lMV0Nn2{kc4A`)h*_Qg8_^W@=`BC2 zOqg+Nv+r=4?ox|5ncPtSJ3_IycyK)FlcJ)7?@Dkl8&t^N-wPndc3<#NY*33S7 zg$&@Ar)1W7C@zgpOGS%T#-B1rE_b35@*=@Z2D8}$nT1Id6-lRpWTMK!Eh>bP)uMmk z)ie$$x<6IM-Mda!t;N>S&&eUduuGlSJa-TO24^qPc%;%k;GKE^RwWGDFEFj_5gYj%Y~6J zJd3#aq-U|PX|U?K0kp4(2`YfB6<~t}P#XGzY@A)M(U)LlEnO&uwAK%S$~48s_2G={ zg`<#3BELEPI~fk-u;bCdHJqvmY|4V#fTGs0Nq3L4BuWJ}Y}u8U7XuafO6^m_$Hj!q z|4B}JR|M^`R-pE>*JT31$bdgsf448eX<#CdlkN#Bhg2b15xaR?7(JbQIPeH@?pXGH@@Ox+kpvl%QV4a7Nx3Oyh=Y0q&^}59RgxP0i7W8 zkkxjqawUC`5x!I50576Ed&BR!h23(BtBu*4orz`J)6|K$BpH=7DHVMXUs$GXrX>x)NTh>%)En3v@jqrHAmO~5$1VFj zMdlq3!Wuw5J4Pj+$9tz(yqw*07`TH$%ux9*a6H)R4{~`ZvQ`GH2ayPrvBrw#5L)dz z$5^B|S1QjJK#Q7^Uy4CmR8AQcmZ_Y*6K8!c_H}xPSe#el26tzUTeca#rQD@|07>n$ zzOV}8Poq}x|L{rXY1M_VZXv7@05@hGAQ#S*Dd(Y#>zkWf%w)ggpAoxYfH3N0nlu6B zRowP(*aN1(@Zl?{T_|gB14n)+GPcR@1vMmu4GcmA9LAZ8sj=L(_wT zAK1%g(Cf7$ktqFrvWXz;Idz}`xDT-4P6f~jAY%rf=~r{0;2A90bKg!nTn2T_+KL7R zLboKTxa>9n)lQ-%{Lh*IQZt;50djUUcRZ&7YX(-BP?IG_FTlL|-AWjT+bVa1Ds-rF zPT0a1#>%}F8p;o2|4BT@2?Q;LLqj%Y^2#q`m`saqr>jw0`UR}xv{Eq033_JtHwsWy zxZ{vis!9of?NEm@92mx|L55~yM@OZ!$Tq;*xIb=1A~+71Q7ic5g^!X@@M`1P zg$dZZ6fSl0VN4rI655Y*%667n=dwGU0V9e*vb-hjeU zIdh!Gbh+Rk9py(2Q}OAJTZMnRmG#)!vPEBOe5x&byM~H;&p*notT+WYj-IK6?i@FSM+dQDuJarouu9k;wX*5+}LYVEZ*x=N32+g&pp zz#lXGUy|=|=g;i{9!_yn!JAfJ<|3kwlsj}8y!O6Fcy#wdJX*ysC!w)t^2mub;hrHv zr@o{5%KOHgJhGep+%{Vz73L>pl+y7%`r|jOE~#eRf9m%Fnbp))y-{f-W|{b`Fm$nU zM|702Hxf>{>&X@qeU^2osHC-M|L+f1sww9;$Ol{sI&Q9V7xJ0PZss4Pas#EqLmWk2 z7=V623P^{FVV32$mmaCo% zI;lY$JEgJl7erpuUQr3ELv=|Sx$}>KG7Dc>@!#nlbX$)94ojF&qCwT+N@S?*Cdx_cTmj5THTW>ZKVc>%sen1k+X>R+` z@HC)7<4WuWw9aNkXstwowe?n=#x%zl=lu#*&AhC^I2M1!nWxX+f7FhYYWRWUu*6Q zs=XnZ90F*LO<;-+jyY(f*1{Glq4PSvlr0!!J6vOQ?^F{~^{^3`8H&%kt7BcEAGU&ZD`W z&O+5^^WzAvo2Vk{ivV+l= z>2JEIC?e6s$M(xFSSe>+2{sNumR|W1A>CQJPAf=;J2P&fW+_~M&HI+=R0FGamp(yr zSyj(PTynpjwSW1V@t<`iHvV}k#FvuFqlxTMe5~)Pv?~dW#)NU#n9-Cwf2?9W-$kjC zQWDAt)DGG-tYM9I(dIttS5b7>mB&BmMeh9%F}qK^^Vy*-0;{ov!(hO>o~vVZ)5*f@ zxzqv=<`J>ia}JAYni9^(h%{^WWt38pEtn|*9sPtGC=Uy=SF%q3A?^VyDafEcz+zgx z{KxEu)Aiie-PrY<$ASRV-Pv8br3I#Hkl?r@-8ZFjP{FxXB+7 z)%xy<|JQY>%ME%RkHXJucTYdLK3(xTUbrQutml>q?#`7K^yt}ZH;s=y{G;auQZk|_ z{CWNi3QM7nTfX0{rruHL+Jbp+N!ji}UsizMfksQ_xQ%y?*ftHWzab*Mt;>RN=hEXN z4-O7X&af(o{nDsTmy2dCA^(5g3X;{Qrj4Dm`W0!pY0N?4otJS|NdXhXtzXAxFW=iW z#%Ye0v~mR{i$mMGwDiW0Z; zjU;CZ&y6LuAb9+zHKlJDa`?94C|aYkY8Eghom4YWqdg^~w^6q2xuU~-#2S;K?md8# zY_j(&7%n_mKIm@phU|pAh)#JSyk4|ksxM~pW`QVg9FnMR@D|X^^ zj+rg;ZCImX4bNhmBK6%zFA~Oi9KjYh15oL9ANu4ryU`8B zV=G@TI-FoTe)gLuT?I|Iw5^Z?4a|g_6fdM_6<0U#W^zuP2BD$b0G8X>j=yn@fk0K_KyXUC-t=LTEN2C z1XHVh)=-qoUlbrh03-?5PR~=bXf0p0WMu`zJ!tsN{>?v&S89>Jr`B=W999#P9q z_4!8)(aPZj`M^eAg1-Dm>T0;! zxaBqIZzQ$HZ>^i43k38)3_!U^cF48>HT<9vn?%9)6>Q>Mqaq?BuXJ=nUH?BxH`L)$ zV!edfW)8Ns=YZ<^=(W=X}bt zoNAN&z;8J@lP75Z+4hK0?olUGM9(0b>Ib^rG0YX6#$p-GO?>i zd`j`5ISNVlznqF5LHUP%SiO;&^)}Yn*7|=50m0);Ted{;d@5pMQjdDt%=081<&_%P zww3oNzK<*4l^^;MzA4Ew12xUFWG}9o?YODQ9R`fL^TF;+!}*3HZi{N+78RSACY3_r zy4GV<6pzDy-k!cf{=ddH>3)!ObVFU%nEhjFh^rNvrm@W8SBl94B7~lP1udycy z4`y;c*50?tytN-=pN;N{>A=O{UQr$=kdd`Wp zjPpikjs!4oN7 z*H=7FJGD^MVm}uxDA*Jt9uCYD_`B=_fp_XS@#scs_|Ff}c`Fm>{!YP4`s}{Y=KWf1 zI`715vWHen?$;X7)_e_t=J1TfN$IGpoETd3F}d`F;}Actp^M5Mp%@uLGLV77%T7r1 z=p^5q;@c;G*H!3G{Wy3Bf`qp(3Z{VDvo*tz_uavnH-|cqy+--^B7BGk<*(L|GwNj? z+^2?AP&Ay5l-La0UXSb{$Ffe0RR_FY_xoS;6B1Yc&Q(Xkd-c#{26s#Y!A~?I2tQSp7G!39ZX0Lx<7%$9 zHtdK(W%GoKG_TvP(tIazPDPMZ@s9Mz&WsHl=)+x2u+q2li^0(y$Ir)oGM z?(d1`qN?UAY4~2qqm!I)eb+Ax?YnjoSZFwngd61uiArSAx&{{S6jSZatYAw(ZBokQ z-Yj}S@*jUt&2>?uQQ=>oNM$q#CiS9Ex?ul9&_`|hznc%O(F7DQ@NJVy!XlUlq>+8- z2HEZdmP~j#VU5B=zde*15b*jF8nrWXnNOYh1z$5$G2B_PhK^Pwq`5d7>q;qgKrF!H zFo9ZIu||K%Fx`smtbW{v-`^iOShm-&48fxN-ksqhXO+D&XB0Snj%2XUB8Ua$yt1aT zm+U+NX?bzCA~H$FqTc$q(~S-3>XIZA3x6_Fu^=LQJ~}>Camp!_;SBDYs~q~mzK!z#3=NyZ6%B=+a>X-N%AyT^IXmC_`= zeWs`ZZtUNVClnLc_OCfr6Ew&T^0iy)2nrld(gfnrnHAXr23;KR8Vupu2}wfU;dl8X{LSneUlbnjj znvRhF%o+ZOXu$}OTS}60lY8nibK3ntmDJU%5O{>orbFas!4~8s#7t~Y-DKn$i2|~y zJ^@0UZ1IEDXO5U0pS3WHUM5${K6p+D8gJQuP`6=P9rGOk)axz0znPdbKIwGdJ;h#D z9UgTkk!xDW_q@*r*n&o(7x14t1SR+V*o?;Z0OJTIzc1NAj~$3sdth#oh422ddlDX@ z!X~a_>k5t)K(C+;}sI7SYvN628mpGsoQ8@qY{KpH?Goo;wvJY*&L1S zGfJE!c-N(2odSRo} zft2rRw0MsDSZ1_`UFDWyQ!0!JkzjF__tL15!`307C-b^Fjr&vIUNtrZh8xR0_iaW2LA7q1SOIaX%uiSS?Le3o2Gw*y8DptoR zd#lFKB52dkDj0PsN3~W~r^J&#OpkUElx1{Lxm>zQMY&&T{iM7P(slX8mE9}H#%0o2bD1dYlD!ta65?Vg8^2cVfiWT!{Ni4T z)73KV0i{bD5V!Q^656slOm!7zn-9-SWYHmLE*qXXF}AQ0ILyrDKPo=?l->8j>l%)Q zLxr6#EsfjBRR0XUH3Ha{aDT#c5Z=pL=NuIyuy4BY=zz|jb zJvI7aw%k7~*JFCrkPchREf7WO<YQc&Q{K=snBC-48d2Km!*hSBjP^n?wOGpn!*-!J(qJOrpJ|Kyx5-v^_} znHVHoKmR!WNT92Y#vOqF(}lUpmrJ43hcB}Q(3Gs*72OF>*t`N00O3g00ko~HtKokL zt?0cKuRNj%4^c=4hPJL^K^X4f9TWk@oqR0IKY^xdC5pCiZ=aEmCp`_u{3@71a{8aH zZJY?o=D|9C%f)9Y?eu{S38wWl^CbiV;y~Skls7Je@9%JghQ}#u+irr9hHMsLaKK^HGsP;s-T>YvwA1=KN<4SY=_*Sdc=s)CiIAgs*%pu zH5RwfWZWIPs}`tY557Kh3iR@R$!5D}!&JiMd~O2qog>na56EM8%IV>~P=m|1F$OmD;s<@z zJ{HgNWQ!3AAmsrwoUsiSG|`*e2qB=FrjtCQ)=0ZCZ(5PS&R^_h(E|Px*)wVdD4@mRY%~oMns|QjFHVU z#RwK^4y4`(PjRtEaxn?xRv)GHm*ldN9A0|h%+Bxmd{*c>s;+@S&T`c(%T93_MubxQ zaIz6`iVp%j04uNjP;_Ht`z1P|0W}QNMCpkuSV@M@w2LZN@B#f-@>8N_ z$_Z#yS`PBnb~G*sXb1%Qn6awSZ@Vf743|wiCfXz&j8^@UqwVsAlIrFL(Rq)aJa6E0 zXwGwMk6uK#t67qss}2p~EJM7cS5Wo^<&`yBbw3O>T?eJ9Iw&N&a_4$>w9rA-7`hyb z>jM4zTSnJ`1w(gLwW1%K%b zgf*nq+>*v69V%zqHmM~c)~EqB2*e>$?Q^2FF(VoEl462Da=!Tbu1Cx(q8ESVm?{F+ z)u4bwHfs;4^YbdaJ8Ln@bBK;^T_Nu!=|OlIeEKRDml5bGp6yeP4~KR;JH;ZX^^WHt z%eL)_Tou1F5?gdiMi+pV=4VMWV?;%;G9CfE#2v*&8}imYh#Qc!u^(gq@Srgf7wdE| ze4~IKv|TUVGh_*R#m$oX_sU@oAaqyj6>?02DE1t zJg>dy7Dq_eC;Ic&L)0cGTd4@68uL?(aWrVgR=>!;)bG!pyU+28oe=d^E3>wi` zCCBYUwL;x>- zD9Ocg=)B>;5m#bmP3Z3y?op75TX8B*M zzhD^ysa2z4$hkjDs+OPUM^(fOu-i3cSFHd>9oPWErES*?0Fc*#fN}8*Ftt;=t|ci> z@N9M~%f-wUj5>06A%|72%rQk$g?k{4Azc~C6y&(1UxZILy6>vO5{Xc$d(uUOk`JA( z-!bmy3dKrAlMnXh4EB4~V?RO^3=OirX(PDv#fcg8apXMoJ;g;gepk!qebVWyx~K>& z`)20@D5XD(mj^b!<#vMX+wNTSuiF$E;#}pOcT8KYd+x_DEM!;iK{OeQDdz7~>KO0J zK5O(7Hs}R#7cOluJ6l@6UO|a<0yV|nqUb+r9>TYqZ$v2yzGe>*us^ft?vl^;9-!nO zi(7JnZ0eMs)Oompdvf=+3nQra*W z&B4YVdYH#X@~r2t>ODj=G*%6o16ysOm?JzsZuL$(E%1!9N{EDF6mO1+E4KR4}$Gvi9bb{S35Wg5tS0 z`9F+FA-%k=OwbywPa?iBhN%gm0Olbz2}Q-XVDm^*^?pGoR@4D>^N5Qdkw=*N28Fa4 zTRv)|gyclQ1gbSjKsEj}EEuIW`v<1{as9%J(ftwit4>FSWM))fr*S#Em_6A8=9tDj zq7lL(BIH!$aBQ4CsP}9Xyc(1jpd2L@PKLxcF?_4w*0P34U*V>o4TxX-IK#dp{-v*e z->VMR#aT+D{0U5J@7fcYODw?$9Bixj&90qEYExe4q~Kmwi7Z6OHJbi_amQJ}!^a(7 zGm=2tkpG)3^)8?~;yyxaXFovD>4BAQWB_o^<(5Xoii-;m&GM5Kj-ZVz$9f#(--uhCv2-vbpbJuvlyMNLpPzr|cVUr2<(*!hG< zTAM!k^%j}Tq100F6={nPrBRh9YN%3T^=Cw`Vvf&P@}O48)!h|cgV>0BPIUxUP+LZ9 z;|@=Ffj*5@yk+W+;ImvG3b?T8j&<+}a~sokyTKm!yMyn8Mh06n5Dm;AN3&F71Ela^ z&um;;1l=e3K0M=N{OjX>GMEunSOWW4c@pH`60^pwwe{n(XqK)fnYRHQ#%PKH8xg-J ze?5;yGnYfDjo>uSvlQ3IOm*5b23HM3vaB*5!<#muJO+sdn{L~Zr^Tf68uFF)723m0 z>Gr5MW5vU)O6|dNH{> zPKHXDMEgoPsj%Q#kgusGP|2&FQgn72e9|(RI_FLzqziaLwrx90i65_LRYjZ-6v)bg zyD62L_!O0xny&n^Q`x6U?b;fp>-Zbxv?v#sdx9I zTMQrdg~UC0(J~D0&SU@1H?V@{fBfZ*D#KPwnGb({;J9f{jM~VIRW!-K?dpGu!F*f` z+RPiQ!M902;*%gUmYk#j_XdNJync629Vn!tuyKWa7%}BJcZ{+b`qtO6pfgzJTS-bo zenr;eG`ft!+yc{nOqxLY&C7+kJ-Z1<#zIZ9Vt1rOXQIaK!TM7;j`DXJgeeYU+^W6Z ztFhl09KTeu9qTZ~wCM)kA&$()EH(dMpHa z%OAmVx*@=@!-o6<;-I6*2(Iww&)9R5j0Kf%Qon8r_~zeC`gk@PxrXN##%lv z&a6s~f|k@;dm!Rdr^7Gj%p1<4MkVs1o~+v$p_9r*J^`k!3gcrGTbgB=;Q|MM-Ud>t zgSeeGtEFP*xGyGga-UD-r{LTDHkk1OjL{cvt>rB{=#8x5b~@VZyEGCWVpTIfO3~KC zfB)F;Hg+ZN5(i+Hw-t;nEU6Q_Af%7JIUcQgD=qUTB$l7(ECtUP>UhHZGO=(lo+u2R zVD~2_>aag;X>X?`)e_|kq;`$7Y+FjW%AsP7Nl&SBgdnr7Y~wIKd~>f8KlzBk z)BZ^lvZEF!;M|gR0Tk_P!@(QQ8hJCWc#j~mAx(Sq^p`yWkq5Nh0&)eFci;YD6e_8p zN*_e1X1T840*QP6q~E8J-Z9ZG@?VGBTMJuy-1e{oT6SmzQ(!p`!8NjIIDh&(LRE|i z)XV8_h{*n8vElJ?7q)HZz3y@tK8M5=PZK6>*?8xI zFI#(Go;UXBbV}I~0$TX`wmba@zTj(#KCYfJlh(A2C#*y-qo z1^PP28@RR-y$-K6f2Ic`xNt2k+jsbB1_Q)RtN!BG6Z;f_I{8pH zd?gymf2pAX+4HpScbLD7q1#yx;qQ0SpEyu<=U?aY>|Rm%_`DU1nO=NSuHPjZa45PD zFu)|D>=6`DTm93j_Sh!$Qe45jToigX`!MqP|H3hgtpe}QD8O_|yees&l;%uy)FyWcyR@~1UkWwyb@ zwC;xYr%<;uzG^z`vHknDTLeX%wgfj@{=nuaj0#J|*DzfwRypClr-V`q_rJ5lfsloUUfk%y- zi;(eaB3k;jv$Q%koY21K*8Vz3mCHFwm|H;zL13@VMHb>Gr_=G4?Qs~4!W{kK>u^o- z8Y)o%Dl$v&BgDwLqkf zd}y(Qe5}Y4q9j^NA!O@*cpR0YeJkT}bPEEOoibw=Pyd_MlrF`IJ|0=$dM+cWUaA2k zN1-`_O~v|c*Isy+}1xT-I^7>^T3-Csg=8-^w^7i*{T`E`^XS5vog6| z9R;ghT5d1!cI2#dc$+s2zDO{$JcyMidnD=Vo+GOKl-w*Zo)|w~fo7G@Imjnc0u{0sc#>W)PGOBKpM?Cf~eexftu@0woNmQE2w>dvNg05taYXK%MqQp>V^ z`*;WZL`=a`kIziBcaTn_Sgi2Kxc=OJ4{JvP&ek@_^)dy`v#OFs46OK>@jNY)^Ej#S z!@MP(s&tdjEK0i|?`DId5ZP>2>rw>qoHIyq`ZZp{EUmH>tm9SUj5qh%2~@~NbVbTF zDNf%6M#PO6Hghx%dEpLy3;k);)xq-AW zWvK=}503^a#gbR{kP!^(RcG~Ey0B>ZMUEBfRb?Vbf3D*3Y_WP;-*rXMX>Qzm&?p?1 zoy%d6!e|v3W5;M4vif;3f0lBGt)hM!e7vkmvzjX-6154MR9lo33#50i+?|)t9MO6y zUVl!Nq-JJ=K^BTMUZkO}U}1Ck`LU7`T!gJON}`8OLqswJ%lKQbJ3VPk6!8Y)LmGGq zl%SRp)OUS>e2q|6BA=WV%43Z0$E6H)o9 z#+$eYdlM&XC~li}Y`;eJ6!3boDsCvpr+&>Q#Ex(wC)$2poE$B3e{ETE^t-?;blY(6 zqYJm$k07j6Ke(08hn?6y42OM%1QM04YH%$wn_ed73L$1%AOLxxDFSc0yl|`)|_^b2wN1}x*Ux8!7e>sRfYh` zK+nTEDL%xEDD?C&>S7Byf87h2qKdD8eh``u-{u@_+Wy12f1;R*d$Son_AD zv{H^0iPErJ=VJ&&s~`Vherd;lh(~b`8XJ%?9L{XPUCC>h!np=4t$%D&T28z76!e*>)A;$CCH`IXQFwM$f9eoTtPp6`BGGOB1<2+`r3C5>=%r?MpZDjR#IEP z&5nyxZ!soaF0!)Hc}4e=FDgA$S#zawZvFtUqWSjEFO7uq<2-L5l^Rrp5N(}1e-;D9 z_Rqx}!#B|myqA*d%_CDTFpz{Fc8T99>F>#(`y03uaTW}i6rGB9zoxVzWSW6$!{xPZup*$Z> zJyt`_DLbC}vv7*Zt~AKEBmWu&$o4g&^BigmPkjBvJ+%U$TFJ*v@mNz%N-bt6`Y4rs zjmZ%@scSArHe~nOc2-P0jscBG68_i?cwSw2w(|(d0jZ_y#dCV!>2$M&oEo112G7&Z zk5+q#Ibf4%#1%mBu>GyX`cR_5*^DO}SKhegb|qFz#6^*MK_Vw*Ru13q7MT1xd+cY2 zZ^8~Fdl?peiOa|k518xOCl1UrQOoR4e^GXqwA` zL4Brb-;{OJwZ0oFIE}(D*O|#ZazKU)h14u9C5&LPKuM29Unnl{1R0`=QKu511b4{P z(3s1VCi!e`p}P9nEz2)4qN{=Z%x!x0(&lpavu3bz$wr1 z$=3+mHK~64czn|N{0oit)Q}dOCH17sQ3?nuL{esaKXUA|pFF|WJfb2?6L<|SKROpx z;El<;#-902Sa#&I1uq=#X!nN&T=-W=T;RqC^0(_})j){pKXSo&2(n_{4eLybPFFGZ z5R*5jaY!=530mHI{*GBEdCTU5T&gTN;xq9&A|`9x$to)N3_MRR;Q_hoY;d$Zd*pLQ z`{W3$)eO=%Li6o>a1D1xNMLpo3x2YK&cRG~Z%;pY>l#}tH+GJ;BM34FQ1m&Gp7qrn zv(*TUV9M#A;W&Rp3K9I6~3xD_l<}hjBBi=t^PeFa7;)jM$fwKJgme#45FHzWog3#>vHC z)z@<~4?aiYnP#)GR$P^X&LrIXAH6DH2KMhE=wP zr8s2_doJD(tY!&&b@i4VSK&+2rH1JqzJ3^9x@2J%%K(eWk8ZY0&3f8PYFWJHNR|s!q zH2C!V)~Fm%H`^E`E6wK1=`DHXm}5ziH;dB}j)T*H7_8UnL~9=xMmF!?Ln~d{`lVVf zGnKn#`w^t_2$9!ST+ug*HT+g&klk)9H7yVaFe!Sdh5&c(UUGJ#$IW!uO)^p z6mE-H~DnWo2C^Ud39>s@Q> zOU}4|(9zNKkGy$?Tcvi+E2{4Y6*8>v-`p3E%7*#Q zqaL}eSe;aPg31bRvba25p_2m2_d_vCpx&Nxc=o0yY|~`@OVDE9&xO%mFQjqb8nz{@ zh`*&?d{_T!Cl5iwTQg6Q>%Ym|w+Y>+)zL!?h5!$PCql=5SX^J`CeCXNhYBcmGx4V8EIWT z?iuU9i>1M1=bldhVz=+$;?F^+~{}fO?Z5ek83iF8P6Af5P~?(a%`$T5z+evxg>x$j>?PWgefoBL3ejy`5c)Esa5 zv|=XOOjKyI&u=9gYx>QD4b#Ryr$Zocna~$5_+YmoUTh?n;p5a`d}OiNA&>`q4s2#m z!q~HO$1HZfh>u|#>>ZsF>p5C!pe;|N1as9Af@u5leor${tEY^DAZXrJoPw5Wf}*9!G=sYsyKNi$w_dagWX@N4FTo!$Ky} zt-QP3JNG5?QeWD>==2*Z^|ImY)XcC+qm}Qjeo$mAXT<(zR+kP}n2V5W34nO?WMjJ;i7ca*se(W+174h1Z1j2YdVONc-mcpg%t6^ug@7uh4xePjo zw@;E+UsuGz$Gz?!Gw9o(ihr>GA5t(D@%6#IF-B{;%D`r7C`-ks@$=1T__?3;_YTCe zMw=~O*JZiycX1^y2O8M6k5#;&yk{X0#&S;v=6Ta{8kr&~F($jN>xd*P$%!AN^H7{t z{nAJ0u?xSi3XgKfC0V?YIC*@Sh|ef=L2}?Ls&u7z%&uQ_{%trXwlc1fn9808X4wpP zwotZFKYq~I(eE&37tcc9*0#nE_39PTYP?|Vg9%oO*Fcv(N&xmF@C*MWKy}KqahZtk z{*lXkU+%pnKx=?mC3`Jq`SdmBZg0fmuj2Q33xmy;4Hxhz7#`~+l`~V#)1A7`6Z@(! zBOrXP7^$(Sh^_G|Qefe6mZnYA5TOH4ymM~%m5WlnS%G?{sr%H#{+EmH>^vp;Azy5& zv`?)-!#SBZ-sii~bS@OhkN3T~+^{<&9&03&xqFfnihQ(y_5CMhm~I9Kk2Y`GFo|=uvBYWxN(lBY zpL~M;eO)E|$!}H~0jMp4@956G(yt4}R;o5hN6ocxGR52>?xk~Owbq7J$979e}L?N)Z_}8u!sEJ-&uw z`|);gIv42r+hB7$_#(m(hceV;Ds4e|mxYRN^qvQbI!k;A9G;liN z?a2ux9KPb(Ra)*azR9shGwe#~HxKDvcJuxT8yMv z?hp(4*PZDnkwz5fLstBws#pLQ936-pZUUc2@ymbT5Qrw=qOG__C51??;itessBvhz z7uLzY`VHel1ch~<6V8$UELy&o?#=7#3WU`TU0%S5>tM9csGqiXyUq#tfUa024X$zO z;H!ij)|BJf&**amHchvK86Q)6dGV85Wd$?4Hsek0A#DX2y>v>JkQ}Y_ z1_z}2LVD6YlIoFo8y!EgbQ;sM4|YFwVbn}pW>8nQ{u-62g&%flsVw?)UL2A4@;vqw z^m6Tt;o0VTgVeE2C^|%OV@5LHTN1jfjOGIt8MtynqUk)|`gk+;@**>ZXuM zpqGZE>{4nm@_I!r$~>hUs_c~${vfl7fyw=_QiD7=_AXSk-n#GTEKcJxKW2P4Im!Ct zc9nYT(|^ZdKI(~mxidUJ@~Uyy@|xUz2a^_&jF7m0b`MBnSa?6Z0YXgl$%J?XSoQch zK3fq(c5j;Fe^MBWP`*eF?>2{UmZ~YoZO0U;P(%<8efaW&N($Z&fs>j^TAM2CoM)~) z%O?HoQ$DR4F>4$;q4=!jVPS(9BPz=Dbbsw}fi+>-1IIO~OgYmvl=nLO;@CA{t?xSZ z<7_kQgs~})XD7~EO^pVM*9zrqwrW``*O_UvF>+Y3aU@*OQRxB+?yx^CnurfxE8yGc z%Z9S*tsVU69mifDsOF57j*t12Bb3D&`!JIs{7&@SSLE(IDmN%-;$-hhX$n3|Qru;v z=?VtEq|&7Oqg5?4SR>H2t&bwk^y@)^Q&M@cvX!g2h@?8&T%Sjv@R9p{N|WBiB=Pdx z&p&X!&?*45fa8g`0!X6KxSLfbH*BBoxTp09ShHxM6`j85+{&6|;WiUbcM;nC4cj_B zf-dwbM0NaJqnaT{5ej;|-mF3t`?;3{Y>jzvsNxgRszcQ7A8hgqhB6C|Ctgsu!R$Pp zFxz~n4PXZG8hO{Ra~Nqc1vPwjrR2nT3X@)E)K$@F;n9?-xw~UrFha>xCwFH^OGzB3 zdxrN&&ewU3`MuMs4ibkch=wBw*(*Mwg0RNuvAB;uRhS**s2hb2+#rN3`B<6ye~6|l z1~z==D8ZV6D!|Fy{~)?kr$O((Eh8Qvh5vTC7F-(zW2}XOTmcZG-ms>}s@>=pADq@* z&-^JU{;&geo69cHNKJjrMhXgHBgCOu{R(2IjH!MoDG6W(*f<3rL9JZy54q_eCW71Z z^0V)G9QZ5x!6dni+Tz@0SH55U&X&gl@%o{wL$RHR_;6IzTW|PqPtOpj~ zv~R-W^PRf~_VkrC+lo)Y?8r}4p&gbTII$}28v?UqrOW>H=j=@}L_ZYs|I`j9g`$Q^ z50#ZNdOA~VQ-atMsqAyIp+b`5hW+ml1QpGr1FA7m5KL_s)_i83E$n&)DOgV5ZMCW+ z9^ek;2*ZV+CVrzozT8I0#1t%-PT>brCLQegOp5;Wl>8N7G_uy_Q6#64!P z8XE1%`i2OuT5JTCw%@p0uT6qxU%Q`yP$7>vaP_2GGVX2Cw>g-3I3BM~53Wmx+2UvU z#ElK_#A^=qp18c{R7w6*{+N$NFq%ErY}r+Y5gC)oNlD5L5miXA90*UR)=A0g!B^Qs zXQYMs8yq{uXAB-*-umy@#Zc9BnMd9eQ5I~`&$GAiA#9N_oc-oQ{S8PNo@DBPVWP?i zeX%sislN5|rgRbg%8ZfYkZXT)fBt1g?_J9xgZi=g(k5JNHBsdid_sQe<_#Tcz5VxbCpbY3 zyG{r^o{BeIe~d!KEIa0Ug6LFJ^Zij(E-0K1Viv(xp?&@te+l(@jPcUyv+I9|UFXXT zsaKB(ijHzN{P$dA!Y_E8#yC6 zRCj@w9`09@*R^UWQH_s z(doB)P%@Wg`R>NKh&QSYA=WPY&01DY&tWSo*Fj^CR_uM7GB={HaNAz5?d+)rdj6=b zHIy44eO_}FSzWpFCt=yZ{-W*CWF=qZ+8@yC=yyo;JKWKoICP}t8ZRz?503+bJ8P|X z%Qb?6{I32Xx1iou_eOCN!HOhzRT^a)rnFf6&1E$(O7LGq8pU;T`Vw+Qg0>t=5vHAi z-R10;>}>J|q{*(Hv3$hXp84;|0`aEZcF=?JB!#(k!e%V`gIDHw@)w&2#Uu2 zvy-Jk$y~?0{^975aqMlZ6nFWwbsK6Is?z@83htDS0SiJ!l&tq7h}=0_Al$QmbK?-1a|?s3WDz))M=rqK@Z zb_HZa`g8&&@=TkSBG9@IUCz10Z~SiTmA7f0CzNRkFF@Tgi2})yU-i6kBj9P_N%DU{;F`Xj_H3<#zQN*szJKBQcW7?dQm=i6#rFy;4Ra zXx|P0MktSj|8y3H)$zppGYvbW*p;Uf$1ZXctSPZF z+FG2T8sUZ3p8r+I6~AO11I~r=?86eh*~;;Qe(KsE4Wk_8!nlg`$cp$CJxTF+FMcRi z!w0LNoe|2sX8X|-f&yiNvZCV=3(p9|v2^03(e;9VTHS52cfi|V*3#~W-P-foH>q~( z;9&!6@JSRaTo=F~{h!5KASjkRxlL&jh>e{v5J0jTcd?Qel>Dvuq&z_xJ!Mwqq)dGF z7=u*mN7a|pTn?iiqE%jqiVA5E0}?2ga};1V7vrN6 zJ#yOJKY%qaS}F#k2q$!S4t?=+QfWE8wRgS+gS&%>Bb-A-)=-2c+dDL~Mt{*1_DlD0 z**|l8CJ*BWu?hsMj(5->%G~HjpwdZ1*7(`WU-x)C84-s5S)!E2M9wvDzf$25oCHjO zz}xQtLI~Q@%mt;_>!@nHGxb*{l=A1}Nl>x;Cg#nG4j5RqmzKVG{_A+UC)8!mhXDz< zk(CWwE18czrc**S*Sj5@9RvV(j1RT7#3jeK^-TJSv!z-nG)KR(aG>niZ(g%I^3%eH zouQ2^)%34fT8Zp}O!r%3<6S-cuA$pe>4bRHT*0BH=yY;Y`lWtMD~oO`sdRdj|NS6h z8Z#v-+Fyg!D(pT`8pt&Nk^W}!YfjiB3wu#@k0m5FVO0O&9ltT5D5@uf_g!%+2%D9b?)k6dS(hpq9A?8((9P=_I%-J@0?LS!BX_ zjzHM6p)ly5nqB*L@JIy1kh-L{AH>c$lbgl-&@bFzBxg&q&XHx3U7%iX0&j^}kmu(U zIEZ{y;v+oMsj!;r?eptvD*M9C?^sNWpFsgKoo|w%XZlZY*u~ zY>7%80VR>OodL0|B`U+PBzh3 z{qt=LmME0!FVyPd{_vEGB8rM@1_O?gS0$dhQcbSCKfX+sZhie_ZbDV?4IE)i-?zW< zrqdLi`KKE?@o$ugd5;+x$vqJL^3sxHl4+iwn4TUCipku~t5K*~{+V*(a+`q9xA}cM zSc=<~aQSn!TR~%6qCjkuU_2}m+U;Hc9ikZYE`bAOLFj0!?k=gC0DWxNp#{l91`lFZ zF22{*B@u<6y;F89iq}3Ht6txT!L?<21InYE=6cIbQ>S`(%vjST({1y!{BW;_t#1~e z{i<3AM%9l-PKGr{`B+W7V`;!9v30ufl^TD)<-BZ2SN;8I!Wr}WsCUB3j>>8=ddfCQ zD`hadJA8MYATr|B?<7|D>1Ou6V=&BlZv7sQLO$n-itPIc`x4r>%oQi!zf^YrMGUR2 zwp%i_on_}A%^nD`WaiJ>vX#AFy#K^SP!m3;DtqrpN86sZc*PVM)Q{d>)WSZUd*yui zL+kf96wABkEHQ(?7-jhrJm&W+MHLKY(t}1l$)Ap5 zN{4H3)h=Z!NH==c)f^4nz0%Rfgrdrsv^|zKu06doa#jKKc0%6olX&_#5%U#jyk3@N`Gx)G1H`0Bor{$MzF%a^ugsyGNMp%S$1Fd+ zpXq9WMm>nv>eK3L-u^n;{Tss%H(>jDeADqv?sseBh(10Fe2Kz>R9>gwh#D)>JG1U! z!q4MOK+Ok zr^|}h=6#tn_AkxxeZb+-{U|O5{a4W&q9r7f1C5o#{rL=6p?wmSFpl3$SsReYi84uA+)r(C9tZiq6H^V>jgKw=~mn(q041zKyhCa(HzXd?a{ z5R6*p2DYq5f)OX7RAb<(39MZ$n-z9ZL-;)VHxESnhT|eK&(#}muxFnLa`IErtCrD4 z+u}89h7xL^)tow`X&iOc7T!P&u%Zwdbr$VTuBDXahwm+=yT=XRGE$t8`q3~^PDIKiW3wF!fy~b!;%g~hdSxJlp+gbYba?rACLt$m47Kc{<{!4fnF@8AKK>Os6D70nE zS>Z5(V+YN+cc23`YTPgKTU9ekRLU^hZPil7?Pey9fC}FL zRa}{}A~ti#yDW?-{Y7aok_t8=fyY2~MD8DC9~X|p88XpG6*k>PvaB3q$c}d`nr3)h zk8@0{OceC>C?JVO;lk6dqfw)E9{BX0laI{J=i{3WZBMd~i8pdIiZt-(4eY22-@_OT zhhDMb#SSD@Eqh|wDXYR0^iF8Y339jGu_)Ad+|_|twQybnEHI`AQ)+_tbYc_TG{cDV zhJTCAzsixI+b?pCP^(P{vYmZ)Avk-1Bi6UnmiJyAI`zLp`-QXeF(JRWU98}N6y?#Y z#mqcoiW<*eT*CO#pzQVBecWv23OatZP`|TlF%rUV-#oLTUCN!}{nBQcr|i7BTS6(& zP}jzDD;ZLKlFD1!KZn&Omf5O5GDV>(=tG~4Ln&GZTwXAe4eQt)TFWa=vTRFZwf4BT zza99vx7XP8Iojbf$`|m)A#q)Yo^pb!hqeDU+Dbfc*fsp9Y7g?Yhgs$m_SKT1=b*MY zz1)2n5Q{v=(TlyJRY{r@Hx;QjPD1h-k@}j+)0x1zOf3sNr+xFNFto)NS6Lh~Ny*q_ z?x9oV`{Z~WO-_o(u2iqtZfn1g_r-Wo^UD_>+MAl?P(yNW$2r2R zc>m!Ta6$;mA_fAKLtvk#RNZgH7aIvlrz`W0r@bz`~NsP_jsniKaNkzO2xN}kjpBS5E61XDug0;xob)+_iHX2Nf)<; zP;v`%ZC1kEFBNmiCBrcH5sT$E_ig=7zyE7{*ynuS=bZQZ^?JVUZ`90-0s@v8*I>bK|L*;kNMiQBfG;ki#o zhiMrhB+bE|lPrxAR!lqtSw1oO%ArRUSErGX=?V!4bFMqc3{jo~ex?5A0Sh6F#oM9H z4M3$Uv3C*Y!jkp?(Fc-lwq3LS=N6$HO*|3i_orqv=)^+4-tZ!TRswG&J;NE0`%O2E zdJ7tGUS~GlfgY5C2)6S@Jx1)__0%}nOXBNc;j_Qd^f#Nrc<1hz`i$6gd6Ewp9b(p5 zk35+Sa)4^_$eEsRk~su3zD-sjD~s=s&{&Nd_&mWu;xj4exACY-t!&ZO^XeSBHsM>t zJ;Bu^953TWpAcjy*ROlRBn(l=)VwqJ2&{Z2Zgi3uQVqk`(E8dZZ$67Ag%Fn z+GiK2G1`!VW&A2VV<7s~!nI~TiUrjiNKuiJP8vRG3fh+g3p(w>T+Kj6h8#PvFt%r< z;3=1(1o%sdGCqmbtIIKE`cgZOqf$IVL5@~mW#_CP=-m`lc3#>sB5eStd+$58a}?Q!ihNs#0jgaU2Z{F-mxMo^K(6Le%8XN*^7fd zK(G9nFi$<7!86>RW5=7eKXT)vy!XBhK((;&s$A*`o=^B5E_KV)Hh|qYJ#v9icq4yZ zS3Zl$jWE#O0VAKU{LQ@I)`~>8_g(SnMZ{T@I5_%#>esg|+<8xzhv@nwWV(N@C7QJ} zp>y||JnXA`y_(IBN+!hLF*Df1l8o#5$0;8w2!bMk2@@40U+rcmI44`j`TgrW2m=&9 z!Wl#cK)vy~r(2S|>h2PB3Ku+Mae2w4PgKEz%HNT3Y`$k(`cY8?(F~NMO$ix-SU(x6 zCL3UTx3WTar%tU}KqSEj^EI7ZXCzM~@I`GVvX)S9i%wIs->@wV(i@UMZ~Ew|arL@P zG5e=i4#CVU8cAOo<$8rfhdAx%%K)>{5)esV0rVEzd+t?h)ga3d(kwudPO6gm#?R?pV0%q zZGI;(uTicQ{*eCQ&yLOH%GX6^L;QSQmxpjjXy~9+*E{Llhw+V0S0U6L|Bs(Tg`ade zv7QvA(_wQ?*EZ=E+($Lici_$Mq{QdefL{4*)OSCrH?P5OtC><%8)e)9l%8nG`Ld%i z%F5=N8Ani+s&=iyh%N!qT!R1O6lTTMFAaGGX-kh4r(b+vs-iMWp4F~VvNMf=L6~OI z`ond3ir4d~X)W>)hc1V)=hK+r2mUyZH0olGN+}M+-q(YOijY%8oAln+ zQ)yV!i_42K>nz6`gzEimvmuwnIDsMC^6k*osD@9C%mA7LW`L%f{?lP1Gu+77%WPC% zs#HT^jiG@pGruIM3t7g}-Mn64 zao}X4XhM64oAb~xN-0!ner%@xi_P-8zC}`DFtB^hrMr0xxV29yy0ut*Qf2R#(>u<> z)mpq^uIaIR_uB*B1=Fi}nr=8=&K9+|JBm}2&5;2o&yS<6OT@Wa=Oq{frBbHzt-jX5 zcE@cyqr6)}Hd?l()NwZ4CLmLO`(eCoBdl=Ik_xoWF1NFz&>M@hFUw>MpOSxMZ;~Z*F7uj{YT+3!w7tBfJm3YcZ)z<{gwSI~7OlZ78~4 z%UeJOc<+EH!a)jId`}xAZz?EKKLO9Q0}+q!??mr3h)&jnIX?MFc}*L$c*le7djC7g z#I753RcWHlWU06(5j@pXr}3NLg+oNg7rW1`TD~3TqAL@Hi0HNov+t+xaeDkfu(=@Y zfSwh_yz(RlY3)HL-7<;3o_R-0iZJFJMVwAn5!~*Oktnxhfy=( ziu|HssL3m!N@o{akag?)S%#*Cn>LQVEY-|9hYtedK(aghX8?Vhe7x~OKL+OZGH9k$n;kPtg)`Cr8Svt@n}>F z6zNRxI>37!4Q9D2A5SXCukEnzaG_?l8j}DHiVc%g1do* ztV+GGaH&M4C}lI2q`Xa5iq;==%7y2Zj6jE2pRkV!!|wWI4fu;lu*qOg$GAqttw8AM)2$0jK8*amzzGgY z6yxNOpsaEAsrPQ%*7W#cL5|P6_mk;bJOYxJh?Lz{^hGBB1+BMAJR{6(9a`AS7l6MB!- zOWW@3)@@hpt+W~dbO1+pi#;BDX|Hc<;wko0O`Vgo0ryw@o;Qm$bYH3w0^=TxJ2job z`Fb3jv*=n4XQ+Wchs|pb=MoAqYyo$vg6zWfrPOJ?ab*!W%fDcnKO$I^T}eDlV$A?= zHT-M3*GsAf-1sZTi4?Amb7{OWM_8!(JRFYGTjjtQHTMfGG=qZ&@0=Z)qTH_W?<}|H zjZGqEFtlV)h0atb`ct0z|;$e+R z8@-xN!uh$Ha;^Z~c7age*t}?jPfX?YyS5iR(*qdc+A^AO8Gl@|8f?tKrmK^t#S(x7X+vVk)Nz?h7RJzp28hz%t54@7Zkmu9Cuw(b+j#?~+_p^zRC)WV?M z;ctPOYOvtkb4R;oog$Y>Cl5at2SL%aJI?(!w6dX7v7O^G0sEL)e6@ZFZ;LfYBDbnm z2N3WS--olU|J+Z#RS8@`SR+oTfY9jvT=viFnwtk{S*nA2 zTz>}B_bSA*4!a_scx;Pk)z5m|zqU7%L9U*vx}y2C#<;R*4;Qrr?2~1BTeaxQMT-sH z%p|0-@tV{-e?r=gQrju$1oczT6*PDJpI1F3Vqu}dEW01xfFb^CEci}5W6NZIi7`BM zev^>q^<7rT%S-yB|JSKqD#)OkD2dNs(O9)Bb(d5g)A;0r=`5+j9)!#Lu|qAhEkg2f z9#xKW_n!cNyKL&b9l70z?=z$5d=2LZ3RKiB5H<}mK1n_sy!m(5yQpXl@^n4Y`q${kGQdlf((YB|Ow zumHh*NHzNXlbQD0r&j@Mc#~YWSUCMF)O}oL=^cdWwq{S{o^8+BY!SBV?xx0mB_1G) zK*iRIF02OZ2&-WpXU~n+rrsT|md`dU8GbI{Ae32UGWncSkX>ny zpVqiQBfW-eJIXb^3gDW$wa7p)BWJRquQm<`9>`o#J(9g9WxRATg+!iXKSZj(pbetw zh5a+Mmuf~DSI|9@V&2eu*Rz=97dq5eKeal9Q5H7TRs!#q%b9s)DBrP;QFanxMwVU# zW-}!$1r2h~^gHTK>6F6{4q%_hu%%(%5dY1&=j7t!=o-C`&TpU${~fAhe8;{6MoRRB#o zF@CEMaYcE_TMFahdN+aEeN|a-uMWe9-!uyZ;{?Z)AMi>le;#=I(iXyx`4!!M_vqEA z3bk+O-auw=_gT)qRR9epw<#Sy_VSB=Gx08xk7*o`+$F;+qUShgOX_@MIaD<&^YK@4 zrVPgTBH8%Hc$!JVHOeo{-Xivq_LJ=DMN)zmJ_GYoW+ckXIe{9kAe<=939FAf48&TlM-L_i&@HI+2 z#%c8eA1-c%iYB`c+vY*k{Ir~OrE$qLF6-L zs1c<){%g5@xc9yuJlefw#`dk2U1CMZfT6T|=MbTA&i9nhA=x>yheZ?TSgMZpR`p^W zu(ib?Uxv6G3G9K+r>`olhEI;0Y6){>fI3={B~>f@pvgh9c5jY zTzZtni;SN+VvU&0$~Mre1wu>ewib0AFG&j6d-ZaEBIq3rNmG{&d{U+ggCU>lTYaC=5`;eOk4cvb_h;s`Yk+OhG#oW?F07gi`$iOl8x*LU z|Ge@bK6pW{KRt}xz+Y%6Eek-mhqQGxZR%^El!pJjXn(@aC;O`Qg3>X}P*#@6(0WJM zUr4=HK6q#oGm5=Q07U!?8#QyJ#^O;*_*J=>P808K@4t|zmV5c;V(1-I1;rAFnpjw! z#`!BhaN|;i+=9I<6}!I5?bE1DPfiFg4e2EwyLxn?WO!;t&eFEcTSA2!>M;0YAT_JS zwtsRj=pET8?l}2G7jna${1-wva;aWpW}oI>(O*a~X3-4Bi+s!ZBP?M=jIV^P7WtpE zx#g496``skD4~-3xKZabi+WrWtKRVoR%r4B2?@skRVUG(0xIDOKQh24#Bpv9CVp_F z9`!d*XvM&Ai1FZ_>GiqkC)Cfq)0FhD+242HiMz3#tZrT@vt$h*yuP@SJC}Z?*mwsf zoExGAHZJ@BnO>o{J!#-pTSFTm9VmLIW>3|b@=x;3u5KrriMT)lfte|def;n`FrE9* zlP+Z)P<(I@pOQLb-Dri?rIW~iG}d~MYIjP=hC~OSn6cA;G6gt1Ppl}nhJD>_SkJmZ zth&{z8z3~>vX1FHVVBfF8adBiW>wG%-(Ql_kp7KB?*;G1A&2Z{0*H@=fgjQ8UX^sD zAS%pc=h#wtb9a0W#C*9rb5t$If1Eh18$q|IuKbw$40$XB?BCFP|=8ZGq zw~E-`lSUl>7?Y+gZ?MTZ;8y%A9J=|nsSP5+G(pNaB zhd=r1@46&Zx@^}j5Wk74ok*xayO_rkq#NmQj?2^|_&joD>iCAnfMev^G9)2`irYsQ zSU&>^CHJCNQXQ6?A9IkBBh$@hx@MvC&5ZpqMYCT*lp7b3_&W+W?)8Z7X=w1X$HEVi z@8b2}1h%=KDAMNFPvfitw$ZSqFxxOACD@M`=hag=BWHUw^AU?cV&!bq4^;*#3opi&V#rJtS|5Nr+c&KM3w#Wn8L@6Mb+ONUH~&wbwe8X+5gsp0(iIb+}aa zkJTLu$8CcE$hRZPw2o!7%Si@ZIxO_FQ+_Y*T;QsE)U+eE@C_xu6~Vyr*LzNA0AJWl zW4Q4t2mDpng+rx=RNFYGBOH{(dw(JK0TLeQ=*p48qsiO%sdM1`b8E|TK&}mR*SsY< zp0uld-ezBNj~P18%r!y-l-*B#J{U`lj(_rbaTQfWqvx zW)DD;e(+~qkql^pZm-BCj@J7JfACv}VU5DfW0c!DSK8dcPcn-ul&-P`kNC{Jxa0bY zLLpeZhq3wI6RTz?u3&mh#(05z(`!|K{5j1_FZ~hOUyJo;HapBOXwfKuAK8(1i}J@3 z4N7N)6TZYTy6MD-=1@)ZW8N~kJ9|!ToRMI0;@9veG^O8fTki%ani`)NcYUhYH&g7= zkMw}USm!(MHC%d3_xktajK4QI7I%nWGb%3Jz0|$cNGU?Ii50T)PTe>(;{{w+J4upv zTi=Vv_tsViU%syu@0S43ah)|e)^qj&{#TRP1a*)@{S)V6b8$jWLxxizly7||IEx;9 zo~l^@mSSCs@&Z`Q8wG1mbkuaaW^vol%}RJV-Sd6;Xx8jjv+GfeGf*U#ycf-FxdjE& z&bG8xeA|pS{D?*5%um9ZY}&ocCF9p950D^Y97|LvWKI_T4*8zO(sa)5%(Yzy=)1)@ ztK{sHHHf|=-cW&EGx)T)PXuotI$klQGS{-I;S^>TPB$>rkwVgTvzldX1;jZ&_rg;2 zF8sy|MTpcagOz|?eH_KD41dWiN#4$yBkqsv<7`!Y(=1OESa{Y~l$= z4vax(;8=y;$F#LJvx&mw9-)uTS>8t9@UlWi;GIu+q_{@ z1elgOt_z7$O3@!Tn>GeE^%XA&s(q#nqwGtH2X(cq+T@#+@uFVG?O}F7bW9;u|I`;v zZE^hV)wqpa%h#QCr2(`;wt?&Aq4b87I$J~ZEb(Ji)#tc0Zgh`(-gdfj^}4cX(`GTQ(5>m7Ee%m!-qeAA&xT|&dhuJ5L-Ds zOzIjS)(YAdef=aHLXJ}~Q(6@coQ*?A%Q+|V{+JBDyrbEnIV$T|et+E{Q*@%# ziZY?`Y`aB(MbGiqkkp=87;uGyG1Tm>c?f45`Vei~d{NBx5%8ud%1U5GV=F5h_q^`j z!`BPBSuI&!{o&dVMyR+fdpR#v6aa1F*L>><=!L?KzHx+NQ%W7GFo2b-Jt|b_5Mu6CY6#;jB=EIKug>QX zjoP9@`{d4q0u953D3cJ|E^PMLNBBn?azy4mCYdl(xo^lq#GO>nguU8x3Q>a43W}66)1V)t#>NSA*EBTV~IM@qaggbcCcroHqXpnLdLFn)nOhunQbs-}+3ub8Rtl z{TMAlDj=dDsUZ(PzAa!VVhJ=$ir|h?gXtaqTv{ulE8be!t~l<$NpH4ZJ=ulz_lZ=u4Hd1OAWgi&Y6h8BO2@|smb zMeVRF1&_6HFp+9Km#$pV%s`o!UPP@nGfPVpQWR0PDCqgw<v~ zDgYr&kCq6w_qspp3~p&t^Dpd@PR(A?%lD5Bvf2EZMmQjrV?mEIkNu*u01#1@CU53< z{xJbnTAFFh(p&vLj^My?&Mqr8ka?V;bXZ0%E4#qG>8)6=I?vND%$XCMf+el_?JW@3 zLWNK@|2g};Lkp=5inc;%Hvtj31js)zi%CsfaVK+JLvDNMk#B@AuNB;_k?o7gZi5kvz-Eo4FLT(zUl1Egm9`83mJO0`J!t~XrL|NX7DE2{GalF6Dsqm@AkXpp!e z3|Lzh`Zhq=yR!Eji>$muH>j88wr9g2<%c7$hOw1p0^X3#lE!0AQ1?HYX zhFL?(P**|0r((sGs%(#hPur2}1QHPPqP?27&^GhA)(uY>G_xHabh6=yjtAe4*Omx3 zE>t#T@(F#p%wE4akW)ktXO^_-%W*k;Jqym=vUltD5$f>i6xZ=dP6B9@TZh}pRf4#ywTV(%AyVSlK2CpY~3tE z61VJMYdw5?)`L!Kl{|kVBO)A>H~KvXACpL8AN6EzSXkc5MxomyoL5Sdc1vqO(%R@` zjAGpH7w%QSjryYcv6I|CG~?|d%Z>IPC=D}bdim`X03b&jXyBR*PZfG(P2xXzb$eM7 zvA2Xh)D!6dsD?|=z0gdH3uN?SCEIJ%L0eDeW@GP^(#7{If5Mo3{L@Y9*eV#_m0tJe zf;5Xr0S@VQ1aUe>>4*yuQ2k1iG)CIax^}yUKB{Eb@dy1Es#0!UtUUBx{Y3-nH#e*{Zm%$~tEuMJ86>TgE)z`4`Ev&x`>1DPNbDIlB`yen+J5aIIY zA6p`2iB6eK`Q~xF+);W5PVM6vbmcus>ncuS1fS{hJUQ0_-WfF4+n}!dQ4st zk)sqy3D}(xgBE&zQ#@PUOpT;uWxsI0Tmejt5*qO7rs>$FaVU6)-i$q-O5##pl9KP9 zKf~CfreAMPjB2J2KP=Yv>NHKZ+Pj!!%<6;CL9*LBUKE5`^KlBKv;jl0K<^rMJury6 zxJbW&k?EY!?qR7j`uc?Q!T@+ut=okyUAoQP?$!WMyljyY^Ydkgc7ZT9!+dR_Vv)83 zRbwy@vptREL6#s>(kvR}9PI2`T8%&E0wpSc-55cdcyU+_$M4Zp8kP~at1=woj}LJ2}h=lmTw^<;Ju7ODMQW61k6v4h;>(whmQ{Pj7IfvdQ9b85c`6 zW05+G;Xh*>B(W96=U-%eG7trtHt#$w)d4?}Wv)!|sPo@BEtxuUfrb3gceskm2^{km ztCM|{>0=1S$Hb7Rgcntkj#VFoj37jjrXF_{k8(GEolqTY>SXjDfB!<<5s2P2dB-9e zl<&isW>k1-mVANg>rf{ukT{yG#eegvX}wXfr=c2>PW+GBKUN#4imC8`1-pbpZ6eED z><|TL*{`35mfbf-;U)&2n5`FmJ~0L{wxxmY3;2)K^ui7?e|th1i9(=_=I@!b$zy=3 zFFe2KYa($Yf6t+%Lp{V>Wiwa7w48J&mGWZffd{=IB}r8-i13sWE-C26Wi&(sFMd~7 zcyo&wqxGgtySgyI5mGG|TJ0}*k(e)o-?`&PoEf_w`XV9 zG*%515LFYk)(#W;>{w>}WYyaqCA5L}!23V*y9mX|^N9ps&F8t67JDCk{`eRVUqE`G z7jIe-%752dkEL!jU$ABFaTmylB;0!mOO+ojdh%8y7*^nhSLImC0CnEIxYZG)lUer! zzj#>X7&P|i2i3LH2UCcuG!cnx5#t1TE1gA$pG(J0xfU9eCbHIn0|jt)S&}Kr*q^es zZNeTOpRf=bbOS2O>JA<`uC=0_YNd%)xYOv;0V`d*`0ut}d^aOCZ^<6tb`z8c{}+qTe{ z<4=GrxmTy$aGGCHE-|%r82{&&5EDmr+pfseRe9GVCc%LA*y?s5a12Wx@z??GfbJ1+ zROJJ<4zF+Cb@qc*JLziR@DhC`BfK9XQj1W0SMM4>(a@^a4m8r9??(Q`KEOnl5g$~2ukYnL7tU)Xkf%mv|ojn{O58_J_ zW$!dl!U%sMSB>R}f}F#QlM=v-X%{+Zc2?Mf_$hy4m?}nVRkQVg@3W{?d-5oK9hobu z5CxNf$>RB7?-QoOB_jjP*5+Zi5i9wDnr~T`h9pXX-A@CI297vf6$J@vRc?o%b7EeF z?)hbApP8!${nw_vwK!q7`*!d754(+a8OucH>;pm#Znr=vuq~@0R!Ty9e5&_M-(7QZ zP0vrMVnGT1bv8p6C(kwIFh8^T&SqeoG@}Gd?wnmDiKv+w%E+;NZUUV!oMWNF{u<$i zu9D?WI2?Cek~*jSe_PrY^_F8h`l8L$lhYEO5s@3M7we>gv?>PGY=MK2n6V0WN?L*h ziX>iKa$5-eK$Y@Gm+$%R*e>fxbOaE_aNDAFaa6(#mt@#mVi%hO2)%~xi8uX)lvR{hrpbm6ve%8>PF946D=DP=_3?y5Pd>F2(KMAzr=iX? zw?-42+I7zM*K1RZYp6K~wTtJ<$DfRj?kncoMSlxVHgWM(5u=%T4a<`l@E2HwOy`n(bUo{zFb7^yT$k(^uJK*iwR= zH64NbPC>N-)lk@gG*5Nmz8)XSpTrmy|8m1!#sM3N02>xj>w$9u+TqPp$7xfz`u&=X z3i2!XLNY}4XnsI(9;vdT(6iiJv?r$)ELcvtM3T!iXt#f4 zUpkLc{+Niw@$NXEqee#P=svD&EIs@eGI`!?Q>tsll6iwN+9CVR>zkQ}r+~K~#*WG- zn+~D!_23dJ+po0CEgWofzr|p=s)ZHvlb%XR+)Xo-)lHjaoNo2KSQCgsqNN^rz9L?~ zzPgB6Y`s-32a}+Yjwtuy6(e><%bCx7XmK%F(wue{=XDo%;!LfBgru-r0Xr!h&uWz^ zWJ6}WnV3w-k-+mojQJS%G2snJhzswcIeZ#MwuOnY^I+4)q5@>G1x&AJC}~r;*6#wT zAp52IO^cMww314;O`2fK85gIJ|KzgUGE?lFBN#1$%sUS{rdd9^gYoMNS0M!j(YQF- zlrx+~vpnHaI@;$eZ34?#+V{`l^Wv)}nH7qtKJ#e1fDK{Oip*Ed#QV^VkE=Pq7v$zt zx0ZL!Z+zRO3Sai6uCgv|9OO*qIoJQWk{t-K$i z(Y&}lpKMe`GbGhGwDnypqH`N*qdNAItQY=+WinOw^wyuaAJ{-~=>=y=Y0%1%-rQ z_|Uu;^kI1_o)DwWnrTr{%-=7VVj&CEGqBrz_v%@D+e^1 zT$ng))4rdHEp2}?Uu}S!L3|B`o?+oU9UfHivYPgE%oO~;7~KbUvSI0{&ZIq5>@=aI z=@-m8kRY}`Zo4AA^FiwyA`1!(qoN^^G>kX6qTk&PvZ7167F_)b2HVfP?)9h-h>kel ztCgc+>)e|1V3p;TcWlGen6XWd?xIZPmX{4Tu~1>3UPpF=nd4!1);vb^$G4NX>F~QE zrB|JNRTMQl^nwaEe#v@yBs;F4bb2ca^pto1gKN4wDhAIU`G*0)Z|hb%9a>LL7;!do zJo>x(mk#l>6WFZ^hC0Fsu&VGz$9|c2cadgIg*H^kqM|NE-&Q5prWIfv5 zrz=7H7Q}%bVr;3KEQ#^`=~VTvwPm&p^>^6rGANf1m||Ps!^;1I-ae6@qL0HNgAB&ot)qn)q(Y`#Xt#sj;a&kJIG*otcU0sV zNZ=Tk-1eZ!bl3O2-ffqGJJVfdxwl2XoxdM#B;lEs)IWK?#fprS$%G$1eMqj2lSgfq zrvf8EoM_V!KpW&X!Wt;wBM@V8rtv&GMtxx7qY$cGT2%2bV9*~%C`aN`vkRiLD|DZ6 zIY9~gPX}clBlbp8ezjf?Q}Wj}jDUX7xMS+EZ$oG~E^sbdw5?13!n&hoel1ONGzcu} zNAK=qq<=Y~5B6@GJ0hc>tiv6$4PxLt<0sEId8(W%A-pK_`yR!)XjyD#Xhj1OTgl&D z1^*gzc1rq@mCsdId~Wj}s#AOMshv+h3?6t@eXgC>A>yvHLLV{P>${?MA_fZ-_7zp* z(%VsGl}oh_l%2Gr1BmSxqEi7(x98?PHzLP;;ie9cSRU<6LcnJ4k%BfPII{u@zIZVAU#I_W7ad$$MN61l9+5 zn29kWmo5~BU;g+PqBblNYWo1cLAs&Udr-JMiuPKPzZ$bYFLFEb9zF*yPCqEu=c)WF zm;Lp%@F8N^Rh{ctkF+i%bm;g}`a(q|TQ|w>i0?OA^$}FXa~EMxM^7zw<=fGd+iEVv zzVuvwp%m1^Gp+-JB|`p=f#5iRDlbcuTAW1JttsjJgwCCzR_Sf`AFkLBb%Or~?{R+? zazh518I=%`?$c)!q>wl45_h-gLOBa=iuzQ0eZ1CoMYeKQusL9p2uo3LxXJMiKOd9F zdX|Z0zUr3UJnzoi8|Oc}Rk{g)`?AdjU#x7Ocpx`PYtpzi4)!NrF9Sycg(^f8-Y9V# z&Vz*^J_%bO@(=cCi?34`&5KHL(!0Er5t*#)m80VI1UA13#z-#x<@oi6^TL5WasZb% zdT&FFG#Xjp?d_AG(!R)62zRW+fmy&+2eF>X=-ARCt^D{Y(E(7cwAX%VHGYd}S2g0f z;k4^3p_|f|#wo%p#s{~WG`tt$HRrwC-6({m5KzzC8!BLHeLjFGc`M+sNxxC1hRWtg zLH`2iEBT!me#1mvzG|jh=z)_J`XQ8!)88u}ln^|m(K;V$Yvap&U0_|Hm3hNG(6HYL zjztv2iyL1#u+>ha-R;d&-VZh9&k^ihD_rsqtlWLvIFovIgkf0qo*6$oK<5=A@0hi+ za)fVzV+(n4-$v-kZ7X6y{!x_xi57U{oA@;HZr=-#h)xs&v_+C0v zixSofE8HmNDR$ygpMzcJl8Sl%&FbdsFHWIJ@D#upJJ>KW_UgGFXR1K=^{2#L$(tFcSZR+2d2Vp~Ldj{WSCmkREClw`_TxQ7kGM?(Gsx9fOG_iI?xwgXU|$w<9b-Tw-c!4~X3 z(|^&3-&-_FVd(Va$|g&HcQTE(D zdu~Cm+`#xYhmkeX4Okj8nfMQIYlAIPWo>vn?K$p2_C}0aB#Cc-Ev^7%1uKLZw5neH zzHjFQ%3h)?Uk|fk8leGnLm!+o2SNO%2iuuWFR}GtS(8q;=4N;TYj!cu7ni){OHBCJ zFGd)itLNUJ1Qa>?rySEd(nPCg@V~pIPuQ!nt&V?J#8$CTx}S$|`&M+-obH$Yg&=KG zTR{9(4xfd8QPtFqi%_FW>>oO`{Tb+TwZ2cAYgHZW+N9r;SP&cwn&@4>Hxt(mQa|xo zBRA{Uv_v4#CanCPf-CEG6y?!OMy<<@kG#Y^u?DM8`hoW7DG(t{KV6j`GK}8b$Po}^ zVn9`-T-%{xnq!2Fbl}o;5o#VHEQzBL+;WG6w**=b^HP{iruO>MeEki3VO75k(gz8* zLFO!6@^Sijtv}EXLk(~j)6PzxeT)wEgiAX8EEHgo_I!XYzpB?L6K)TsV?|VK&@a-A z@_Goop4r#scFlOccozOaG>wbxnzbcL#_imMgmBz&Go3{(ML@TLe_@^JuG=2FQ8;OS zDa(mY%C7W5Tf3-o-m*z{r2^8#pOcd$uzCfUFLN@svx^am-Ufp18 z>S7mAo8IQo&toM`vjfhiNAZg@sWTICc%H&LdB|!|uq2{l2HQWF_)w)6Fl0 zjs#p1Kbva=+O~Dn-W|ZrP<1&rl#w36eT(@yro2`mgZJ`OV4Ix5s6uhS`oGY&n$sjt zfCCeMhdWMiqzQHx%P8*{7x12xDY!=clMxQ;ZeYK-@XnoW?vO{MEBkNiYH+Fc&sBAf zr&RH4)VkNXv5lI z_M}fuSS^3ZB7e-ph=@&NZchie z*VUv0rW(IQyV{>dEcqMkr+R%wG+76yln=q{o$i$Nj>zHnk4{!@3im%Me^Uns*Uvh3KzplDr!_ z;lV8@LnZP*HeIi&|CrWEmg}jGc>Ui$kKs^0n*v+^!M6CMa3~UTrWrhEwLLB>`w6Dq zbkmpa)ojNC)dv=+H$8b=lqZF-qCC&$G{qc6f}(xp3$aKHpVJyz;V4vpJa|u7>MvxU zHl`oz6|Z@)ec#YA0OHejgt0zb!q$G-6aD~glDIVfp41cD4fV5Oa6IC00r)2zVjv?x zmM8c{5Hkw03Bll3$c?gXFiv{!2$;Y%zP51FRNOu-dZ1ox;WzKvvhkind0qS=3RC~^ z-Z{C6a>t9fHFf8(3uWNvdhKK~?6k2w`oRmjxSD}}I2Fpt=KEt3=Dh*{LaF~1F(&e0 zSi4xNapbQl9qz2jtDx=)wk;J={9)j8l?-o6%&i7Guz0hwl3T#B# z``lTKWg_4)aqmj8`C*ZR2iKf>%Vt4?{n?~I*tsV$2fgcAbEOG>u`%HN2(*_0z2wbR z!%O*Ts|v;i=`7-lmMIbIS+pxl(-e+1mi@*uV}Q-0_lq{M>mABKYc1W-!gOeeg32_`CQlE2&fZ>~3Oz<% zDTS|;1?UK&T6*{L5e&S)aXjkijSAvH;(kw)-J$O=0p<}}|F}=@gx&hx^^B0pqVu)x z6+3=0D)t)E*XnGI>+bMoK)*E@$*)^eMKsMOS8~GC24DRM)IzY5RQK*TCM3_yM|KEn zX=py+;|#M|are!-P948R9Zl}>+3b&Rbf4U{&bnu$rqQ6v#ALZ_hn8IudJGj#$YZps z@^UQJw0wqy__6tx|3X%(>xGT2-deZS zW~z#R3=_V&dbvs}cP|&C=JjHCLYLwKd&N>NRQiVV;ym?Rnbt10(i(Ce&Ck?)aby)S zi~)2_d}}YShd}U)!gG0hddEN3mUZJ<)!0;-M19#6pkY&g8>UW1z*m>#vQ*&HX1p(K zNPe>(yRMl22J0}#mHBZ^OATKrIp#f^ANu^Ra~L=>*XO~aZ*{q|;taO=A@Ng%n^3q1jFwa$=H z58m#|4Y);yEpr%yuHUyj9@8ra0qG1aiKh#jjoMYMCsEiFH`ra-BQY@x4TC!xJp61v z&vF4e2q0T!O2DQ)OZ%qL!uRV0H5F+Kx2)gr772U|&5pnJEHkEtF=fsQ;`0hLl5GG9 zB^}Vs$AhG~7zaaq-WAfcX71G>UPLqd4QVCM)Nw`_fYJwFp{||7Btn3!;j<@7`A+Ka zTL)r+s>MgotJk(BQ-L00wym6kmfX3pn?{)q%!N*H5>B>mTa+N;U~QjYwAIzmUW9<6 zX%kD09$mRF9CE~Lmwi#{UPW3)EznYYW&g1JiQ7FNi(C0(jv@VHRs4l~B@A%1@sIdn zW+jZuFIg@QF3=7nc(H2EcVeMS1uCRWf;^q63!g>A-tk3`pJP<*5*;D&P zx#Wg2{0`Aiv9~}vo7bhdYo+}x|39%})1vv?-z3*bV(X>)D`-o>(M60elxEI9!_Ke% z>O&(4lp}6 z9R-hHf;psEpsxM?^fWA~kRZ^i5EeZ64be$m16(MiA})8a~g+w`ixa_z;z&G%f)xs^l2aN~Z-D_kbSYQV63j7GYR?p_0HwE&& zFzFvn`639}|aoXTXNWj303c`CF1LPR!h(@zbHMsbQVUaj_;&xJ+NiN^gHx?Nzg z_J!XmO>1B$M>tz%EO!TjMQ`|R3IGJJ0AN`VQ$p%x`%an|0ho?bEWjhDlw5)?&7qH= z-sDjoa=)>R4lc(bGzX=w5p^gdctdfR?|aGC8demFc_SKTTL4hG^vomYk|e@%9v>AC2y zG1b!S3a7v`JdNWeV`z>C!teOJ)er*gl(*TZ1MZCJfdIAL!RggJtC6*@dd?I^37gzH zUXeuq_x`+mqR3a`MY;puhgi94^0i}0xw+W5Sz-jb%&$DLSYdZ{S{L+rPr~J8jyrau>j)h#q&oYMb4j?O)v$^ZT1ld?jjhze7v zSWXqmX{k_z9EONFBxiHZX&XrjS>#Z1ikS0|Q;y4N4wb`l+Gvh3tQ>}!+2?nEfB$|+X95RAig}dZ^ z+@bEBozOVJdE|*~z3U$|cludu~Xgc!VM;|sgx@Ut@ ziyy|$^^`9iIs_9)b83@a={9kKGJ)*W@W)2{6e&E�aw=_U1_=Dy;x{xq@RzQ~|z$ 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 literal 163550 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 diff --git a/assets/img/think/welcome.png b/assets/img/think/welcome.png new file mode 100644 index 0000000000000000000000000000000000000000..f09d2317a7bc59f613c4064d3a2a49b7ed424187 GIT binary patch literal 15947 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 literal 0 HcmV?d00001 diff --git a/favicon.ico b/favicon.ico index e3888a638a7c1d085f9ada55ff661fae70e05c58..5f3a3a068f81b8fd8072fdf824d2db46a34011c3 100644 GIT binary patch literal 972 zcmW+!J&PDb6r30fO$-JM=rw|3VX_j8BN!97Lyq%|g64?Zh$%w!2{vAPD6&{6eiT9E z^dXX92prq_0~Ex<69zwuEycq4Rf$T9OEd1>7R&Cw<;}dASv~XQ$;U4o#$n8LpASB} z^8C5wC(f=sa{S@_`*xppZr%41Zoxyl_1$mp>>fZMfCK~>1t>%bltdAVQGrU-KuuJk z8VzVf3$#QNn$dwy^gvH^p&J7j#0ZSU5Qb-Om~g-e3!ayWO(KXSG;1tiAxp3%i&)GG zRiy(K4E%IXa>XGeBskL;OU*_{J9m?Lsz z4&`tfX{IBcX{D$7(`*VMq@Zbr3RI{PDybqBt3s8kp_-~vwHnl@7HX*`HLF9N>Y<+M zQnv;)s1X{eAq~rrDTkc0WbX!Hx-li0yk>Dmp}>VM;gT+Lu`68Z8m{RoSG&QDZsC@0 zah}4xc1+#sA!Xt|7tBjsdPldIrplKv^A-3Xm2C zrsq>slz^Z`z==Z Date: Wed, 20 Jan 2021 00:05:49 +0900 Subject: [PATCH 02/59] Update README.md --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a1630a66c..7fb211c45 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ ## 소개 -Github pages 블로그를 운영하는 중입니다. 회사라는 틀에 박혀 찍어내기식 프로그래밍에 지친 나머지 블로그에서만큼은 제가 하고 싶은 프로젝트를 진행하고 싶어 만들게 되었습니다. -* AI, Data Science 중독자입니다. -* 책을 읽고, 리뷰를 쓰고, 베타리딩 및 베타테스트에 참가하길 좋아합니다. +개발을 막 시작한 개린이입니다. +Github pages 블로그 운영을 시작했습니다. +* 여러모로 생각하고 연구하는걸 좋아합니다. +* 가끔 캘리그라피나 스케치를 하면서 새로운 영감을 얻을때도 있습니다. * 소소하지만 살면서 얻은 깨달음이나, 개발자로서 경험하고 배웠던 것들을 공유할 예정이니 가끔 들려주시면 감사하겠습니다. :) From 367dd1f6a623ca77af204c2b758f24f9730c3ea3 Mon Sep 17 00:00:00 2001 From: D-Gun Date: Thu, 21 Jan 2021 21:39:56 +0900 Subject: [PATCH 03/59] =?UTF-8?q?gitbash=20=EB=AA=85=EB=A0=B9=EC=96=B4=20?= =?UTF-8?q?=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/D-Gun.github.io/v16/.suo | Bin 49152 -> 49152 bytes .vs/slnx.sqlite | Bin 249856 -> 249856 bytes README.md | 6 +- _config.yml | 2 +- _posts/2021-01-21-git-command-list.markdown | 62 ++++++++++++++++++++ about.md | 1 + assets/img/post_img/git.png | Bin 0 -> 4294 bytes assets/img/post_img/gitrefrence.png | Bin 0 -> 43661 bytes 8 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 _posts/2021-01-21-git-command-list.markdown create mode 100644 assets/img/post_img/git.png create mode 100644 assets/img/post_img/gitrefrence.png diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index b38eaf34984c926d3bb92d61a51a2eee283fabec..5cd1dd45fae8429b08e6737b9a728b2ccf1bd6d0 100644 GIT binary patch delta 1782 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 diff --git a/README.md b/README.md index a1630a66c..82914c1f1 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ ## 소개 -Github pages 블로그를 운영하는 중입니다. 회사라는 틀에 박혀 찍어내기식 프로그래밍에 지친 나머지 블로그에서만큼은 제가 하고 싶은 프로젝트를 진행하고 싶어 만들게 되었습니다. -* AI, Data Science 중독자입니다. -* 책을 읽고, 리뷰를 쓰고, 베타리딩 및 베타테스트에 참가하길 좋아합니다. +개발을 막 시작한 개린이입니다. Github pages 블로그 운영을 시작했습니다. +* 여러모로 생각하고 연구하는걸 좋아합니다. (MBTI가 ISTP랍디다...) +* 가끔 캘리그라피나 스케치를 하면서 새로운 영감을 얻을때도 있습니다. (실력은 보증하지 않습니다.) * 소소하지만 살면서 얻은 깨달음이나, 개발자로서 경험하고 배웠던 것들을 공유할 예정이니 가끔 들려주시면 감사하겠습니다. :) diff --git a/_config.yml b/_config.yml index 05b982dc3..54dadfd77 100644 --- a/_config.yml +++ b/_config.yml @@ -18,7 +18,7 @@ tagline: "Wannabe a Good Developer" # A short description of the page, used in the sidebar and as fallback for the meta description tag. # Markdown enabled, but don't use more than one paragraph (enforced by `>`) description: > - Wannabe a Good Developer + Black stone # This should be the same author as first entry in `_data/authors.yml` author: diff --git a/_posts/2021-01-21-git-command-list.markdown b/_posts/2021-01-21-git-command-list.markdown new file mode 100644 index 000000000..e48cbeb91 --- /dev/null +++ b/_posts/2021-01-21-git-command-list.markdown @@ -0,0 +1,62 @@ +--- +layout: post +title: "Git bash command" +subtitle: "Git bash command" +categories: git +tags: +comments: true +header-img: img/post_img/git.png +--- + +# Git을 사용해보자 +git은 널리 알려진 VCS(Version Control System)중의 하나다. +- 사실 git을 사용한다기 보다 github를 사용한다는 표현이 옳다. +- git은 엄청나게 다양한 기능이 있다고 들었고, 사용하는 방법은 아직 다 알지 못한다. +- 내가 사용하는 방법은 아래 두가지 + - git bash, git CMD 같은 프롬프트 창을 이용하는 방법 + - IDE(Visual studio)와 연동하여 사용하는 방법 + +--- +## 설치는? +git설치는 [git download](https://git-scm.com/downloads)페이지에서 운영체제에 맞는 파일을 다운받아 설치하면 된다. +세부적인 부분들은 따로 정리하는것으로 하자. (간단해 보일수도 있지만 해야 할 일들이 생각보다 양이 많다.) +## Gitbash +- 앞서 말한대로 프롬프트창을 사용하는 형식이다. +- 지금 필요한건 Gitbash를 사용하는데 필요한 명령어다. +- 명령어를 찾아보자. +- #### 아래 명령어들을 사용하기 전 github에 계정부터 만드는 것, 잊지말자. + - 계정생성은 어렵지 않으니 금방 만들수 있다. +--- +### Gitbash 명령어 +- git 홈페이지에서 제공하는 Reference 를 살펴봤더니 +![Gitrefrence](../assets/img/post_img/gitrefrence.png) + + +역시나 많다... +- 필요한 부분 몇개만 챙겨서 살펴보도록 하자. 허나, + - 문서화된 부분을 읽어서는 기능을 이해하기 어려웠다. git의 구조를 어느정도 알고 있어야 이해가 가능할 것으로 보인다. + - 구글링으로 간단하게 정리되어 있는 명령어들만 가져와서 메모해본다. +- 명령어 + - 명령어 작성 중 tab 두번 : 명령어 자동완성 + - Gitbash는 리눅스 프롬프트의 명령어를 사용하는 것으로 보인다. + - `ls` : 해당 디렉토리 안의 파일과 디렉토리를 보여준다. + - `cd` : 폴더 내부로 접근시 사용한다. 상위 폴더로 빠져나오고 싶으면 `..`을 사용하자. + - 나머지 명령어들은 `git`으로 시작하는 명령어들이다. + - 사용할 폴더를 생성 후 git initialize를 위해 처음 사용되는 명령어 + - `git init` : git과의 연결을 위한 명령어다. `.git`이라는 숨김폴더를 생성한다. + - `git config --global user.name ` : github에 생성된 계정의 username을 등록한다. + - `git config --global user.email ` : github에 생성된 계정의 email을 등록한다. + - github repository 관련 명령어(clone, commit, pull, push) + - `git clone ` : github repository를 복사한다. + - `git add --all` : 수정된 파일을 포함한 모든 파일 local 저장소에 업로드 + - `git add test.txt` : test.txt파일만 local 저장소에 업로드 + - `git commit -m "commit message"` : github로 commit. commit message는 꼭 작성도록 하자. + - `git log` : commit 내용 확인 + - `git push -u origin master` : github에 push + - ##### 잊지말자, add-> commit-> pull-> push-> pull request + - `git status` : 현재 폴더의 git 정보 확인 + - `git branch ` : 등록된 저장소에 의 branch 생성 + - `git checkout ` : 의 branch로 이동 + - `git checkout -b ` : 의 branch를 생성하고 branch로 이동 + - `git --version` : git 버전 확인 +- 추가로 새롭게 알게된 명령어는 찾는데로 업데이트 하도록 하겠다. \ No newline at end of file diff --git a/about.md b/about.md index 9a57d9c5c..53db1547f 100644 --- a/about.md +++ b/about.md @@ -11,4 +11,5 @@ Github pages 블로그를 운영을 시도하는 중입니다. * 기계설계 하다가 개발을 시작했습니다. * 일단 배우고 보자는 생각으로 공부하고 있습니다.. * 공부하면서 정리할 내용을 포스팅할 예정입니다. +* 많이 미흡합니다. 귀엽게 봐주세요. diff --git a/assets/img/post_img/git.png b/assets/img/post_img/git.png new file mode 100644 index 0000000000000000000000000000000000000000..371440823a5181fd71fcdb6d24bf5966cf88fee5 GIT binary patch literal 4294 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 literal 0 HcmV?d00001 diff --git a/assets/img/post_img/gitrefrence.png b/assets/img/post_img/gitrefrence.png new file mode 100644 index 0000000000000000000000000000000000000000..c26aeaae69a197bf6d8b8b7e7e31b3574d951ec3 GIT binary patch literal 43661 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 literal 0 HcmV?d00001 From 8b68083a3547efdca88a4e3fb9eae271d54a13dc Mon Sep 17 00:00:00 2001 From: D-Gun Date: Thu, 21 Jan 2021 21:47:42 +0900 Subject: [PATCH 04/59] gitbash command2 --- .vs/D-Gun.github.io/v16/.suo | Bin 49152 -> 52224 bytes .vs/VSWorkspaceState.json | 3 +-- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes 3 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 5cd1dd45fae8429b08e6737b9a728b2ccf1bd6d0..6c2aad1a613751d3dad9f2b6311c7614356431e5 100644 GIT binary patch delta 4430 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 diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index c852fc2be..25ffa215a 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -1,11 +1,10 @@ { "ExpandedNodes": [ "", - "\\_featured_categories", "\\_layouts", "\\_plugins", "\\_posts" ], - "SelectedNode": "\\_posts\\2021-01-19-think-hello-world-2021.markdown", + "SelectedNode": "\\_config.yml", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index a2e7cfe8b959b63a3af9aca5fa0f6635c3ccc9e5..7c49a323ba18a27e25ab016a51233e9a2891536e 100644 GIT binary patch delta 25916 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 delta 25918 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 N{^=%P%`v!C`oB}Z{9XV6 From e8feb14bc7d58b2fcfdfee433d642ccbce112b85 Mon Sep 17 00:00:00 2001 From: D-Gun Date: Thu, 21 Jan 2021 21:56:36 +0900 Subject: [PATCH 05/59] gitbash command3 --- README.md | 6 ------ _posts/2021-01-21-git-command-list.markdown | 6 ++---- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e01c709f3..7fb211c45 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,9 @@ ## 소개 -<<<<<<< HEAD -개발을 막 시작한 개린이입니다. Github pages 블로그 운영을 시작했습니다. -* 여러모로 생각하고 연구하는걸 좋아합니다. (MBTI가 ISTP랍디다...) -* 가끔 캘리그라피나 스케치를 하면서 새로운 영감을 얻을때도 있습니다. (실력은 보증하지 않습니다.) -======= 개발을 막 시작한 개린이입니다. Github pages 블로그 운영을 시작했습니다. * 여러모로 생각하고 연구하는걸 좋아합니다. * 가끔 캘리그라피나 스케치를 하면서 새로운 영감을 얻을때도 있습니다. ->>>>>>> 91d7c87bcce8b4ff4e9dac09f585d28a7d818a97 * 소소하지만 살면서 얻은 깨달음이나, 개발자로서 경험하고 배웠던 것들을 공유할 예정이니 가끔 들려주시면 감사하겠습니다. :) diff --git a/_posts/2021-01-21-git-command-list.markdown b/_posts/2021-01-21-git-command-list.markdown index e48cbeb91..18e162610 100644 --- a/_posts/2021-01-21-git-command-list.markdown +++ b/_posts/2021-01-21-git-command-list.markdown @@ -29,11 +29,9 @@ git설치는 [git download](https://git-scm.com/downloads)페이지에서 운영 --- ### Gitbash 명령어 - git 홈페이지에서 제공하는 Reference 를 살펴봤더니 +![Git](../assets/img/post_img/git.png) ![Gitrefrence](../assets/img/post_img/gitrefrence.png) - - -역시나 많다... -- 필요한 부분 몇개만 챙겨서 살펴보도록 하자. 허나, +- 역시나 많다... 그러니 필요한 부분 몇개만 챙겨서 살펴보도록 하자. 허나, - 문서화된 부분을 읽어서는 기능을 이해하기 어려웠다. git의 구조를 어느정도 알고 있어야 이해가 가능할 것으로 보인다. - 구글링으로 간단하게 정리되어 있는 명령어들만 가져와서 메모해본다. - 명령어 From be7844f7f01d6a7878eb75c76ebefc66e1c4b8c5 Mon Sep 17 00:00:00 2001 From: D-Gun Date: Thu, 21 Jan 2021 22:02:04 +0900 Subject: [PATCH 06/59] gitbash command4 --- _posts/2021-01-21-git-command-list.markdown | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/_posts/2021-01-21-git-command-list.markdown b/_posts/2021-01-21-git-command-list.markdown index 18e162610..f0d228cf8 100644 --- a/_posts/2021-01-21-git-command-list.markdown +++ b/_posts/2021-01-21-git-command-list.markdown @@ -28,9 +28,8 @@ git설치는 [git download](https://git-scm.com/downloads)페이지에서 운영 - 계정생성은 어렵지 않으니 금방 만들수 있다. --- ### Gitbash 명령어 -- git 홈페이지에서 제공하는 Reference 를 살펴봤더니 -![Git](../assets/img/post_img/git.png) -![Gitrefrence](../assets/img/post_img/gitrefrence.png) +- git 홈페이지에서 제공하는 Reference를 살펴봤더니 +![Gitrefrence](https://D-Gun.github.io/assets/img/post_img/gitrefrence.png) - 역시나 많다... 그러니 필요한 부분 몇개만 챙겨서 살펴보도록 하자. 허나, - 문서화된 부분을 읽어서는 기능을 이해하기 어려웠다. git의 구조를 어느정도 알고 있어야 이해가 가능할 것으로 보인다. - 구글링으로 간단하게 정리되어 있는 명령어들만 가져와서 메모해본다. From 6ae17facb61ccef43ab2b1a4f06ac481d32e83d6 Mon Sep 17 00:00:00 2001 From: D-Gun Date: Tue, 26 Jan 2021 23:32:17 +0900 Subject: [PATCH 07/59] memory structure post --- .vs/D-Gun.github.io/v16/.suo | Bin 52224 -> 52224 bytes .vs/VSWorkspaceState.json | 4 +- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes ...2021-01-25-think-memory-structure.markdown | 70 ++++++++++++++++++ assets/img/post_img/memorystr.png | Bin 0 -> 165158 bytes assets/img/post_img/memorytitle.png | Bin 0 -> 10574 bytes 6 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 _posts/2021-01-25-think-memory-structure.markdown create mode 100644 assets/img/post_img/memorystr.png create mode 100644 assets/img/post_img/memorytitle.png diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 6c2aad1a613751d3dad9f2b6311c7614356431e5..d052f933dc3e415c629f3eaed0e59a90ff1d651e 100644 GIT binary patch delta 3405 zcmd5;drVVT7{BLIY70e*mZu^h2q%QA7IDe zK3}d_jus&Z7&S$Kfe(OApTkTKOcuJ=55+jfq(9aM#3DpELXOZNXabs9h9Em7)=Lm! z)BQlKjflmFTtq%10%1bLAVLue1o^74rtt!>PC{(qxFW7%S{XlGlVRelb{e)3ZyiCT_sqMnoxM6QT^U6hZc@r)z49rM}Tju8#awqU`o# zC|huRuO9vWCMPTlr^k>8Bv}y3h`a@e+2r|RKNUeX5_v@U;90{;0Z+3fc(*)cR}sYQq%NK8F5O0L>_6h|Zl2r(4et9o;R2+20u7~`^M%5|o(mzshrVJ?= zg+eAma)9xaa?fbOnjU9Mfr27~HcHaV4`8Q{hpv_~D5+0(wtgX_fRWU`d$6-goCr?h z#kfUrOh(}+DM47=<60_rmGaKGd?mx5pNyWPjw`31gmJ8CLBfg(xXK%RJJCo16R{hf z+(+f{K|dbrkL{eFeOgt7RX&Wyem}(Edxo)mkVWl<{xRWDo7XfX>Nc1uG| zy;-m{+3Z$}qe@8m#c(d$buh2G?B<>274|x~&=eJ9G-wUGi_C2f%WfQ@AhT*vC}FY` zYFOu)i`q zSZlVJ(#)xK2Aw52MH(Cw@1^6QiSSudn0oA#>2mf;-z_sU2CXxJ`j8qb6ZEb!-qpqr z=EdO&&ianMh@5TXoh>CYEm9_Jwl^#{C@4qLB_-)#yk$C`S}W(|pQ&Jl3EM_RA==X= zG2qsbv9e8uFhia5O(Ptf?2RS1Z%wm2Q~Sdw8_a+ zan?EQl>~n@Ca99rw5IeaMI|aC;iqb&CPRwJjyk>7R#nq(a|qy$Pg5?#XNv)g&e>QT z{pCPd)5>oyIjrATN9g1FJCd$6d@}r%&UO9Dh<^Wxm;e|xYT(cKzUXgHcXyeZe*4(L zzchGbwdwUAx&{BL=)cyD-E+skQ&rsTF?1*7fP1SNV-pzkeU5AA0>U?hVKtsGOB^F+m41R3JRXn)9f|tBhnTU0FQj<}HEkJ<;OYib6&& zDbJh7^U9?*^li2|Pxb_Qr`PA9SUkPM!kAHH-3NU@eZEW_IiJYjgCl2Pq_+ePnHS+| z>GCXs&kwHw!-pYa|IsWTFo=5?51WgN#ghJXzh|9H$j;^^UO@>o!Oi{mwlI5Z%Xf7`We*L656HUH j;Y_z0Zq#aU$0`4I!scr=P?H=6cgy5r+ova(%dPqsa%Bb# delta 2986 zcmcImdrXs86z~1|wY0QAf$~N{DFV`Vtvn3iqs$752u@KULwN~pwNfIjL+7KD%`Fq1 z^el_aY{u%If6T~d)Wu~XAu-FcOq}T4Gjo6Jk7d(r>JqmoJEwfLEzWJp+)aMpx%b?2 z&v(zc=bU@Jhos&^(u1aHoJ4FIi6j@hQpCN9i3#FL;pEE1ldWn_-um-R&&?aKh1l!k%!aC2)H&U3rt)L^hsY}MZox!-Nnd81ru_SW+5ewB(4?vOOZw+(hww@fix9? zn~=mI%!oupCZYzBjz~hN5Gjahh*<~)f^^3qEky7VNx4Li9a5@8Y7qO`NFPJwi{q6d z%@L^@X*`)b*lNk2frDj;TEuch9ikqw0#Se<<*SeiwX$r6W}evk559>yxVs4D@6tkS zv7!$0R1|_NATQC}!@NYs{97+6QFe-#Y9ibuLjgKL@(BGj+)Ff05c!Y9OHix)j(r9O zb&+}q^}dQAgTWa+o_$dqTtYgIxGau8M|u?j7L}IW1CQ#=f7K9ki6<9}@u~!OYy(fR zA7rp^;C5`ig5qO#IQt9m#MLQT1@h*G@zqyw@H&E;FLuczRW1uC7w)9hGx#V`5AKWs zpK}RM0UzA%F}IVkG4O2OH=L^DKyE#?LK$K+DXfof?f4aaDxTULCGDlu)LZAwqks9Pk_EJ}tU{LlU8IU=cEmZ7X%;Ikh%{jZEK(?xV&n7?b z=s45# zLLIRp$@k!34HmEDI^Gn;`M43EUk6zGka}ibp9T z_%m=fk13{By+HXK;;DS9j-qfS0vk+hS{hND!R@?2HAgmvvroe_-i7#rQv0T>VSlG- zc-|7mhZh>b?NPHhvYe5&$p$aYGYcbIEz;p)6t6~RXlEq@!`r=z^fky#3`pZT7F_GF zNEp1)Z_1zt4<>q`^+?=E=ZoVCn89VFH(sFk8MVJyJ_{_hg;2mH`TBSn`F3WYNE~~o zQ9he0gI-`SJ|`8%_n&9*`-xhi>fk)7pgsN*8$NAefg6eZA9*8f8Rz&p$PF5TcBiuF z)t~lU{N(yC%TJdJuWbEMrCNh~CaahvqK1K{KQ^MOHARdbsBuI1P^22C#8+roh)03K zrdIXZ9bIlio4vDb1KvJnta(wvB!QhaL!eToV?q?dd*zF==}|V>ibv?#nu`c`E}XFC z1XQqvkAr5P2Cl$t*yV^7qTl{4MzEZ*a>DoTzbj>Z@WiveL$`QgjV|1swu GQU3|^U}%v5 diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index 25ffa215a..abbe48f3b 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -1,10 +1,10 @@ { "ExpandedNodes": [ "", - "\\_layouts", + "\\_featured_categories", "\\_plugins", "\\_posts" ], - "SelectedNode": "\\_config.yml", + "SelectedNode": "\\_posts\\review-book-beauty-statistics.markdown", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 7c49a323ba18a27e25ab016a51233e9a2891536e..536fdb7d51c41fb93fa4434974f1ec5952069e86 100644 GIT binary patch delta 25406 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 delta 25254 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 - https://genesis8.tistory.com/181 + > - https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/ + > - http://www.tcpschool.com/c/c_memory_structure + > - https://velog.io/@hidaehyunlee/%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90 + > - http://www.programmerinterview.com/data-structures/difference-between-stack-and-heap/ + > - https://goodgid.github.io/Memory-Structure/ +## 메모리 구조 +프로그램을 실행할 때 컴퓨터의 메모리는 데이터를
+[Code](###code) +[Data](###data) +[Stack](###stack) +[Heap](###heap) + +이렇게 4가지로 분류되는 영역에 저장 공간을 할당해 사용한다. +개략적으로 그리면 아래와 같다. + +![Memorystr](https://D-Gun.github.io/assets/img/post_img/memorystr.png) +### Code +- 코드영역, 텍스트 영역이라고 불린다. +- Source code와 함수, 제어문, 상수가 저장된다. +- Hex파일이나 BIN파일 메모리다. 즉 컴파일 된 기계어로 저장된다는 말이다. +- Read Only인 변수가 저장된다. +- CPU는 이 영역에 저장되어 있는 명령어를 하나씩 가져가서 처리하게 된다. +### Data +- Static영역이라고 불리기도 한다. +- 전역변수(Global Variables), Static변수(Static Variables), 배열(Array), 구조체(Structure)가 저장된다. (_Static함수의 경우는 해당되지 않으니, 이와 혼동하지 말자._) +- 프로그램의 시작과 동시에 할당되고, 프로그램이 종료될 때까지 메모리는 소멸되지 않는다. +- 초기화된 데이터(Initialized data)는 이 영역에 저장된다. +- 초기화 되지 않은 데이터(Uninitialized data)는 BSS(Block Stated Symbol)에 저장된다. (BSS는 나중에 한번 더 정리하겠다.) +- Read-Write인 변수가 저장된다.(Static변수와 전역변수는 변경될 수 있으므로.) +### Stack +- 그렇다. 자료구조의 그 Stack과 동일한 구조다. +- push동작으로 데이터를 저장하고, pop동작으로 데이터를 인출한다. +- 후입선출(LIFO, Last In First Out)방식으로 동작한다. +- 함수의 호출과 관계되는 지역변수(Local Variables), 매개변수(Parameters)가 저장된다. +- 컴파일 시 크기가 결정된다. +- 함수의 호출과 함께 할당되고, 함수의 호출이 완료되면 소멸한다. +- 이 영역에 저장되는 함수의 호출 정보를 Stack Frame이라 한다. +- 할당은 메모리의 높은 주소->낮은 순서로 할당된다. +- 크기가 제한되어 있다.(제한된 크기는 OS에 따라 다르다) +- 이미 생성되어 있는 Stack 공간에 포인터의 위치만 바꿔주는 원리이므로, Heap 영역의 데이터보다 처리 속도가 빠르다. +- 하지만 크기의 제한으로, Stack 영역의 크기를 초과하게 되면 Heap 영역을 침범하여 오작동을 일으킬 수 있기 때문에, (Stack Overflow현상) 유연성이 부족하다. +- Stack영역에 저장되는 변수는 크기를 재설정 할 수 없다. +### Heap +- 동적 할당 영역, 사용자가 직접 할당하고 소멸 시킬 수 있다. +- 런타임에 크기가 결정된다. +- C, C++같은 Unmanaged Language의 경우 사용자가 직접 소멸 시켜줘야 한다.(_예로는, C: malloc()-free(), C++: new연산자 - delete연산자 사용_) +- Unmanaged Language에서 사용자가 이 영역의 데이터를 소멸 시키지 않았을 경우, 메모리 누수(Memory Leaking) 현상이 일어나 이후 일어날 대재앙의 씨앗을 심게 된다. +- Java, C# 같은 Managed Language 의 경우 생성된 데이터는 Garbage collection을 통해 소멸 시키기 때문에, 사용자가 직접 소멸 시킬 필요가 없다. +- 사용자에 의해서 동적으로 할당되기 때문에 크기의 재설정이 가능하므로, + - 개체의 개수나 크기를 미리 알 수 없는 경우 + - 개체가 Stack영역의 크기를 초과한 경우
에 사용이 가능하다. +- 사용자가 원하는 만큼 할당하기 때문에 메모리의 효율적인 관리가 가능하다. +- 하지만 할당 작업과 해체 작업으로 인한 속도 저하가 일어나므로 Stack보다는 느리다. +- 응용 프로그램에서 이중 해제, 해제 후 블록 사용, 블록 경계를 벗어난 덮어쓰기 등 Heap 블록을 적절하게 사용하지 않을 경우 힙 손상으로 인해 속도 저하를 발생될 수 있다. +- 다중 프로세서 시스템(Multithreading System)에서 두 개 이상의 Thread가 동시에 데이터에 Access를 시도하게 되면 경합이 발생하여 속도 저하가 일어날 수 있다. +- 위 문제를 해결하기 위한 방법은 직렬화(Serialize)를 통해 해결 가능하다. +- Stack과 마찬가지로 Heap영역을 초과하는 데이터는 Stack 영역을 침범하게 된다.(Heap Overflow현상) diff --git a/assets/img/post_img/memorystr.png b/assets/img/post_img/memorystr.png new file mode 100644 index 0000000000000000000000000000000000000000..3783fc9c04f5ed7f2f8788b54f16c8beb01a32a5 GIT binary patch literal 165158 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 bE^fX1ZZs-IOj)snf&d30jBo zWyFk(aOOdq)0THcE?h^5PlotLd+VQTSd!|7k0}Iaz1!5c5T`@bLE$L<{KamF|7niY z%qQpdZXwT~Z+>6;`%YYz>9;r^EVq)=*32kfI=Oc|)r|6$8Mf=w<5%QzQ1_2e6k4Mrm9{#4S)!c+GM0gRBkd3 zmy5ks`k@5PHTY`$sdHIYHKvj&6(0&tlL-*2CQ;y}+-iCbH?gGFHpwsLbg%P+Zptmp z-)A96=TJ?p*8P*Uy2Wf;sP0=D|8!m|PHM^Z!Pw3ZSKlm8MVq}(cSmV4Bwt6SG&vxJ! zRQ?{~bgcW&sujlPsL$us?e`dSbE@T8xLNv!NS`Gr;Ll1}{ci!Gsp$)wS_H@=WY6?> z_h=Wr%1PtxpHl0~Vqk%myid<T z+X`5cH>VE1E}rbM?9;RleScFr0=hZo1a}=a`18wsK!@!wwvv!t8=vDh-sVFQ7C_;$ zJ#KB)ma1^M0}8&^*{(p%?g}Jt%U5xZ&Jd?96b4`v^OzHQR96gNJL+tf^+JmNz~v>$ zE>7_?Mf@bdSsTatExnn->jK~C%p1g~8DN`@FsT)S%`MCZC28G`KldAxp@4R)N z#7isvkUi*sF7RO{3JM(mmg%E0rs`DUU*Ok#e0Kl}#rzw7Jq>(BZDun7I~lgYr))!O3)nbnwPbw= zQlu4CB^7Kky!B|>*eYuD(JFnH=UEP)*?v3U8lYW;9vVZ+@Bep_UiEguE8?4kgXZ`C zwC47o))s=8E4bzgNk#fad)kJHY+6-y8uP$X2JoVue^<&HPj)r;fJA?Kj{f z=G!Nfqo9sF46||I0k86?UVb$Sl*EpS!J$|X^SMFw>+!WW*c$3L{sojOv4EXYg@{%V z=)Q{ap;o91d}APn4PmE0So%|TYr4<&GiPH)^kdmawWmyBCVVfarXsG1rosb1Kb@Lq zsQEUPkxWE16&U^bz6n(X!-EkrycSF1j8pzbmfk&<>f1#Rzx`w3p1r=k-}UQrw0k0dNGfj^=Bcn+2eb9HG<>0klK@GbO@R;nVonvM9sDp~(lTz8DnU-ejMO9_+^ z+sL9vKcon}kE)e;%s3r4HBVw{Jzit)Q{Lq{ocQUR&ZiwOl8SYv?@Y2hHk(^7PtQ>Y zUk81}S_duPr_;!sG*wBYM6yj*yvLQo$UcoTB#(t~ripzkDoU%~eph6%dqIa46}8pg z)p2ot>E+ezzq|{L$wXloNXRCMx*hhFo6^a1;acjxDj&}`KbkP>do@{9R+zncJ+U3R zXsKo|-NnLao@-30uUwwf0dZ6WXoptazt_EiFc_{K`*7V`^-6cLt+DTux#fl5zyG5N zmJ9Z3KJdL-p*pwl54l=tFI+JlNEh{3`NuJ$ig=0_|LFYO|ArfxgJbzp!N2Skx0RV= zt?mualg@Wos?h88AMy&op5#e$eSWm^qm;g z(RlO8(~Bkd{gWj2mcBo$d~nK=cB`VLw#$JyIWutx?3u8EXeFts1mA)gX1beu|9qrB zpM$Q?kTu2nRY;3}q0Z?QS@SbNctGfch6?k`=PpWCGA(aUT7cdBp6B^@W-cBo5>_oGdS2cT zkrPD<=#J2jNN$b3>sLDzTBRE1-8rkuBz!dLq$eb2*K!wfS+S8jYra=!fo#PqM|(5= zAGx`Dyjlog!IG=*AQHT;dsoC4glVMVm&e2mOSP#n5Tvo&MjY;^$C#|@4N;WKH>why zq>?|eDSkPMwX$=qE8VPYO9hY~a=BQr68Kz(e6YL`+1OdAHSH>8MJc4SXEu!wy&-J$ zVPg88qKv(f_-W@nPU81ttSScenKyNdDLdyoUh00nqRwoo86u{l4vWt}FG%@&3B#ZJ z^gpnEoye-AUn$!!NgS#&Fg&{4apVz`RVJ7eWoo-U}<4|21p^O{zN-QpOykFI3x&AHIX{FxWpC!hB@cmaL* z2z^?KT+sp-C34u4F8Aa)bR`1Rn|2@GE8IOMZZChxDyU6KZaIEiYH)1^MP-}#^xa$155bhpAc$%sUp=f)T-$0ENe z`U{-X#b$kQo~lbNd}K#udZX1N|97{MPYa(_pr|))ug#*3fQ)Ru&;6qvt)QSy|HTU+ zs`zr56Y+ux<`v?c$qtaiHv%uAJ5$Z(mjkS*D6@qQm=$)>gqp^->kBmo7;+&>*|(M!roVL zm47=AXe`gYpIQe7-W?7BIOS2OHJ9DS@7jiji!&!)Ez{!eURnx~b@oiZ+Z!_XGX#ah z)R*$nK!lC~|4(VW+?lu>ZqJW0P!SR9&YhJ_e9#R_Yo|RvCLvo02-^7(Oc)`HXGXv1 z>BEVu)GCTb$o@`tjYvmD11bE=VLB*x<(B=ss)5N&)%hM7dcqH@FD(Cpt_1rt`F3k& zu~e9Tu?(9S8NK%D4BERrUa@uY6?qu%MN!>mgRslTBIhsu=Ki)j`ms7&=WNtpS7Ng( za)FKXRczpPfkif)#r2#1`qrW=1KiTyikT;$I#5+Yr*ps)kR>FF;PPlX0zyqq(-}iC z&`l%%LbtZ3T)m4;!AA=XCe8M)rDreq=VzcT67G^8x;xIZXL(&Vy)W%~ zOBNGX5uVm>-@k%DjCEAMEYS`OPA|i&vN8howYutBpq9Xs%z~6i$jfAk( zHL$$r4Bb1ir&B7gPGMTo_FmsBNh+%^eb>-gml=-g8uQp+#3mbN7Z6Cf#^>azcRp}m zRnV;PWsQZk1HnQPtB$qFocKlLx5WTYOAhCIn=Tt7tsBnz0)t)(AMZAt7fuNx?}()S6ow+wVJmR7Z2c2mOP?Y{Ogx@=!+(jq4(yM2 zO1E)2T{A`dG=gV9`wAMT&9VN5RW2$;)Ga2SC)8I4WI*i_9oYiBm696%y)B~&=rmiA zw9X$zUEQsSam5T(3POFWa16Swu~MO5JvHi~Y=@4KUGi<0C6f{6+fh+AP%(eU#d-n1 zL{^bO`mbv@y9E~)d61@vsJZ)6eSUso!(6^2uk76BG#j<_H@nEVR=6&`Hfh4^>iD<2 zO$}STB@9_&g(W}AQ)~C7h+U5)JagUUuiE$I8hu&+0!r#U)4JfqI8U!#^ZNl#@T3co2$I-uE)3AS%{Oucn+cA0$2Hc zqm$RfT%l|2Vu8nP!pSzIk6gIf0O9anQIT0MFAB4P>i1>K!AXvoMj~JM>$3<*(}Jf~ ziJG#Wo=~HY1Bdg+q)A(Ef4cY5m5WBSeblt#`&44XfrFP7Vd=-~c~KBv{!)>Rs-#S@ zB`=4;GVfc8E_e^juthE05_x95UK9O|SNd}*w9pdnzQea@kPnyGR*QK0i#BydY znPyTs2HR+s%}=7vfzxVlB~=S`xaDBhScz$0ubuHx2pN2Tp5JS0>U(wX#%fXbJ0bTo zR}i5*`|g8Z7wPa$mHcw0P)MH(Cifad;vf#K-&w*ggEX**#2{R|DCe2iD zA#21yUF|;iSDX*SUN3ETs)4=ICDshx8?{OL{9p7!U?shNo^LukE2BVnlPckWvxg3d zK$?w`_jF$mvSHL3jE@dBF zbyR}iV?)RD^wwLjcp9=42bB%9lUd$6R&-fYEvV&jK1;5zd}-$8xyB5S^BOFhuM>9s zrF45b^ zSHxMCG&y6Z)h$(u-`UG~U{B!F&8nm`EgdqH!ycx5d(ZDvqUOGafjNv%)FYq=(kLOZ zsA0<)Te;ys-8%WEWXWF-@$;2a2Q%wG_Wd)TeQF2`CS6WSGkRLKSd~d_Tw}CQ%Y1IJ z;a8(qWny$ob;ZWatPGKG*Yiy3&mciDzFWa%k;bbx`ZKh!;Mlz3xZj!J^Md)GRz~G& z@X>IBZQ_X2{EuuJ!oEtxISWNfhR5CnFAGb2%Nxly^QlwvxfD)6>gK4=9dWqN)@Hi3 zSYpV(-!lB;oUikkOp*?$?@3>tbYS z*g-g4|NT36NkqOL>Gt61bEaIE43A21>S7xI%J=3a0TnB&+iiBUkcZ<7pZefGj;|$R zez;h$A+=nQf53(l6StZchm0bwM4K-V2Wit&xb_@z`S?Z}tyA zs&g7~!hH3bpn&6H7{plyXxLh>FI}78M?s2G#~8Lxog8Z!wo@ zU$GW^&Ej{>sIipg9Iy7DH&XF7e-uGHC#>3^qdv3zU=RjDPFa~xK-k!Tn~f%ub~8wB z0~geS&CeG;x7d|TS#%bwN5&1^vfEi}R8ABw6RxBTxzIsDNZ4(xx;p1do(}|k=iZ`= zbWLf#W@9HVu_~kGO+uBXj|Z7n%_`*XRL02QO*+0$;c;XVc}Btgv&{k498}6`H~K5S zr7D8^1pS1(x8nJ#H-zeW;kxpxl)c&IT)VFZoG9|c-cK-TAkwz2q(eOl$*nbPb+5!M zxB$B(=x(nZ3eOO9ovtzt4Jv(QWu+V1QW36^cI^{m!3=+0s(p+6g%}Zj|DI*!O*N;j zQj7SB>UXWeHRmmOpJOsbHVXqm3R=L~zX9XrEf8nJN=W*8lE7QHs#-n$5*s(hMczpo zj2sDsZaO{@`Uz>j9R)wDZ2zljl??u}Ftn-_d6TX^R`85KNkv7Hoa#Px_H>xHlEJYsiukZZROT(E;`29 z(Y94-UQbOCxo@xbYSwLSb@~)Z<&%Q?PdW3j&aa!ih6dM^sE8FHb^N0x&bCSvg`@_)fo-lECrQK3KHd)~)3Jm!tB z5H7%<5<#fiR9Q{xasR)oK2`6-EYLF2VSGNqbA5>oFW?9GK*04y$NqNG&`=y_6#l|GGz8 zGhxv8N19itoybGi=H*l=mCKD`kIM_GL#F8(QO|dad<&T<&Xmdb`$#TB%TAWU*Jf2M zzPnUjeHMK1cMYDaKW{#*THDdh#CZMN5cLaSwl<2l`K%cKIUS@q2M>qcxys$^(Au16 zl9WQYf@I9TpZD>g^H!QE>>=VT;Os234+;z7s^6|AP6twMxfoL-M7jx6Y$yR) zlJRd~V~PwOAzK5BUVU<9Rp>a;HaK=4KGCCtyYSj)p{iG#eZ(aa%eK~a-y-u!b?(Dd z-9_A}|HYTHjndE+^HOtvOU`;+{UtS&e872I$#>1~-A9^c%)mXc%T4N>{Cv8j ziP6!K&2@78yKa3#7DDw*iLriBA6)Xlt7}FQTK+ zeYh$ymR_Gj1HR;(64G*fdKPp~V-*@QIO^B=E*L568Z$E%Q4U znLITdJONEj{$Q%>@&r$VG;%cMwXIo&-rx?mtOb(gZ**Fe>;| z<MEey1j|#hv94@v2lustVbB)BcZ2j@;v-Hr4I7G71-=J*)=bVQZPfMx#SI}XPmklU>9Xqt`$jYIdj)G*w_d+<>X)`@{+E)KiSQN_Njn-wh^eLUH8Wiidrd}vq$OK#)@pIl~cSA z4$pzv$=u#TL_`GS=&8E`)io7OEp<4!i|^U906A`9W)^Jsf3Du@FW}tU4g-XDP8z^eOr$x$=l1+W4yp6E-Y`-q$G~T53_uEtj*D-n%!`fDR(_Y`)dTS#1 z1Jd}iSyqJA#Nh~pN`^qa%izSu2Ezam)v+097j|c=lKx>g$>DkIH|jS!P45nrw6_OG z5lE{2Wls#2m-M7KT@JO2rLjY2ThJOB*5QV~;||z7(bq$sDoxt2;Nnq&7y%-N^W2U& z&L&WNI4sn0t>ehls2A@oxR{;>lfp&FeU9*;q(V-f(Z8QwJoh&mguU$7bGb-4kF?Nl za?Ko&cIJmC8*yELTGt!>jCRnT@|=Jg<8x1nJT(Ku4_j3(?*!tJtoLqiy@$DZt*wg} z%C`Grb%<1W>Wzm3)o<(-Ux>ts@AAt~;24T5Nc=x9daE!IG%P>ys)rNqdAZj=u^SVc zB?_;cK?06Jbb-B*O~3w!Rrh=EgqC?B>>7u0Ew9X1F%@xo$#Tw7X;$agjbfI_v2PBp zTW10o%wGQ5W=CAs00#{wePSw2c} za`GXd4iNUaF+VvH|N@DT{fi7Zsz55 zxg9&g^`&Y0iU{XdiV4AGK?XcI%#w0i_j(RRVj?iho$25ontlCma&%ma7H69lzprjX zYQ+Kbq6Z!?+1c57chZi+`6NQ>q0JXtuU;K*rEY9(2$G42i`7zx(uAkgmd&!JQIO%& ztY(r-mXu`|zO9XMa+?1u7enzB8@uf=5%0?#2pk0g6#y9#O6tbT$O0mVx6YQXQ){fL zRZG9_c z5LZ64I;RsUi#>?y{^BcxmzxSZAW@8|ABi^P)MLp1s#h6;OWX?1(BHn7oRJXklg*v= z)6esIpG9-@xZ%%v{L}l*(l!OIKEiz;0_;OxMa5yb=B>%!TSqqPPq)RDwgY0WraQs7 zv01_`}GT747rojWo0P(yF()e>}N-I%mX)fVgS6aN9x9A0bE zDMR&Q={EIrQ!>k`zgs>C#cMX068a!w-i7At3@Gww)v2+tqGh8~;hBL8N21q_0XK)B zX?qBKN0QKK!X4JgkjecC;NKnDPL?StC=i%&S|~@6#7T*9Sxno|kXE z7@xJ3)w@JYB`jqu0CYdSKCrwx*#TpQ^pGs@jp0W8N(Q=11XzVCyM>F*BYKo@gvJiW zvYj2B%G;sk=p(Q&^`>L|kp+X~qlSN?tX)bvmHL(z#$`R1JMAwxGz{2%J;9pcENSb{ z%V#h7iUR@i%}L-am*2J8p`D-}tbN5AAH=tO#m>>tGB01*5aCGkHT5tE0TW1G|H3|u z*tK_bjOf9d{_TR?0_6ygj$V4-p`1_fQc4aK{aPR@TZm?>$@4G0BqKzQL)Kp+)OqG0;5AK&Xg8vH{^T$K&=^^!(ySqcq*c-l@Ui znNnjP@AcUx%`D^cCPFYOk#z>OFZ2zd@pjeSc75zgrb2IvE9xRTY1{t zKzVA9FgALL82jx>ht1)BVR{c!P{)EMAQwNda-cLfGVV6Rav;Nb_u|D#1{A~d1gTi{ zd}^AVfBA6mcqxt7ZhxdOO?Z;cS*y6u0pjF&i!qwtpRlgl@FMg{y=?8ceKb19G+jn&tWFw8cp9Gb*xAx=G!3oSz*L+ z@_)L!tV3x$fK@q+S40crzfiMi^*gep4>Ze>d__cFHq>|d=H=lN)iUkhEa)Sl!!;%S z?hcFW?mGAaG#F~_ph%p}>DmvcvFuGMqP#w{pJ=%62h9(b4|176kS6Unii{5rYqn1^ z@WR1hGg&pYzs2?HK%GhBjUIX&-2F~F2&5s8xH5;IaR&PfKBJ4q%?)$|U4yGDe`Nt^ zPK!_0fCs2l&y|0}hl~AFc|MJx5#E%#`Q>NwD(X1K7F%HVtB27*-=jpDE^v%MU;Eb* zd22}mrwKQuPoF3?lpw_QY1F*F#L~*7&G!U)zia|BXq@T#xNXwLHrXBEP-9&i%pb6M z__<(Ea5QvwoO$Aucc0#mI6N}acD{v?3~NORV%+L{uvtmJsbZRUEm*NWlGRA*<1hiB z)p4M)e*53RS-q|ORJBwME#N-{!;6MjZGH9XrHgfvIOnV+9`0LHnitWs(z32QGpQ&H zRB}Iw^+{Z(xoEB>=EH68C=SB)yG4V2gv;v)}d zWp|dv1Kd`N`!bV0ca6i$e7T?HX4ihLqoL37CHuK{1$VEWvu+fyKHZ&N9jlPBm1)lh zg}RwucsK?=eRN*dHI+CM6*j0IU5-wU@2CpHH=K0qgF3=Q zmxc2w^w?ah+XS^azPRAP6U*1mL;^xX-jIBdQe(Gqg6JoS{LOV0!$RG>)L?BVhe-(e zf>&nA3u9kVKO*iboaQs%0iX%=YxF<=t4O%iSW9kMQ=IfJ%U2AWe1e^dD)SouzvmlA z77uhXDk;Xwu`T5DeNe;xeFLWtY#%5M!~(LW5A=)aRp;qvVzP^(F=6e+n@6&GF^F@7 zLCaRdhi+2uzZ|ABbHg-UjG8V%6>%O!eBUK*y%EbvUHFdW!%gWhY0#>-wMlM1vT8RF zXZ`gbDr&K zgOzm`%_oNY+ag1k`=?4PUV$n@H#aU8L^QPi8*rm4_IR&M$WNC{&@TaqQ&5e=GD+ik z8C*8o`b}gayPGz#(k6yvB%C1xKo3-%PC9PSZHmn`QvJ^X{v!W(&yP44 zl{`8++duwJLFq4+Y5uQOe;$@TLOB}ZRzwD#=jMH37WqtQloObJW)-G@%pBYoX<6B!+N6etxi{adSs#HF@0|CkrB}^5Q$;N1 zPJyxjkY z-1Kt7DO=Ee)2xI-Tr?TgFkXTsm-c5Y82HiRw@!CG3-$Ml-cH$>_j;#Y>xsSd`x0mW z4s?!uYyF86L~--&E%TZF*-6WR6s0mz9=i=BfQ!v0a*Ahv^lWb2_x2a(-Sxf+!6Z~j z7j}z6@uD#F0tvtu%K+|jpGx6wHj_gBE10QIr-3q@K?V?jHO(HkDr;{P_#mM;=?sRY zK`WDRsO)5>1+8;V^(qIfv0G3OV^bT@NgS7)@inO-4U>42!ti^XJF{r^-%|00R z&@WUQVFAFv1b?R6!-TH7@WgcVupV&zpK_T@ZA^2m^$yAK+r9T&nUe61;Wph$A5PTj znTY$svVwb8Pt7!DkaqyJLbYC#g@M&XZUN|Joaq+rKnFv}|O^=kPwNTDd zREU6!eY)dcBO@Y6xr_G!28T*2%*jy$y^wv{>B`ShhHm$QfvS4H%g25x;*B+A5V0e6 zuG~fLeA_!{(cXKmzITdA`9913a zkqKrBX!Q8~FswftOTo9cwoZqJaKqZcK`rR}kzd^P8tvvGOH0ONx3*G-v=Xx0 z*R!g5QMgb&6AtH}jUEdq0fRs#*u(6?LbtiisCXIp>h`wOnmme6w#H{^r&{3!GxMxV z3-E!Jh?xiEYgcR~?1=m!r!@tK>y|Ws}=Inv|0Jj13Gofz5Kj*@$(#rtP<&tG!It zEwf?i14d4@lO+=hN+u)|oRaG*vsvi&3Fa5}wF+{vX^X#R{@Vrdu!jeG*R$b>&bYtO zK~m(v6szt+>%O@8o)DnzTJGRZ6(Z;&IU|yY3y8;cYs@qO+3MVKOTQSqqTLGYU{kJt z+72es$l~PV)S7Mc;upMAO-?V-dE^zUbCkc(;722JeLLT=0b91{Po_7Hf@M`z)BsTp zu81O#wfq~pSx(4PG)PfK46NLIYDDD|10=sa(Vpa#Y)&Q#41ZfCZ72eS&5`d%G?a|b}_^0fBd{n@$==C>#`7j~!?eJSEbeusu zOkUf0N;w&?ro|arb6)%3Trplpu>$(W zfp3mWsPNx^InDAvKP=RNwO(F2Q(6soIN-ax_GOZ6dA^fCk950Ou>r%nmfrl_>;?3> zTnriTKYY=tMWge!Rp;AS;X@E#U7q+u_~CRQC_707+>?*S z=6<1tvZc3b^x*cc;DX9%WF1pEY8ycO@vBlFvqSLJWZ8&r^uiDTml7Fp1zAYZShB``u6i^!G5)s5GtsL2Jkcw8ohD_p;pk ziubfhzRxcc6gSqFe}KS@ly@9mh!?fho%zxi&3u|G?8NOjtTd@e$e)x!;UcJ<%F)d( z?6K5$sOg^G+e-Z3tDhMS0U2qV?*}@d8#&D}Ywc(BfrJjFhZFn65GbLWFC9!}qqEGo zSS!OrcL|CbPv<1(nX!#mgO4M+$g@lWO#P?1oLXR-luV~brdwNdbKu_MV48BD7DxoLx#=% zsayM-=aNnrP_gT}eSqLfJB?WIl?XX6Twc#DmYG0w0gY%Vc`G;_8Nyre)e?iYO2Tbz z3tqiAQYeI$UMGh5uyZ!DG%L4Rw}IcMuzj_t6bNIa9_xf%{{SZ?D5_?A>FZ^#bq<@_I3D>Q>FC1i++V&;09?@)Jrh$O3hZc#%lh%xn8$oKZpF}lKc9^ahkTTSb&0} zGL1fZA$tw4IxVKKb2>TSuftW_*nm9;wYTczaSP{WVAs)3gCt0Kwt z__B&6CrKRlA>Ij|)d@~_kwPMa0H~K+n$hK-JlYd$YIN?e`1oS=T1cK4Kt!~1gP=u1*yo#{3yNQO*8N7;!?|#?k098m`_o#c|06N%qIfzN_H0AEKkfJSY)}k;i%K{RVS|>e?7Q z>)q<7=FBhsE^ne;s0u#hHM^6=yRh2FKk|AF*qMSNv)8W~=Br&ioHy)7a#L1Rel0HU ze;F0!{QGx#S)es;<()5T$hx~=G_~e+K8<{ZHRn7nzMFMER>1&it>L+92_?JZ?2O$n z;l_v;?YE+UvO*mAoXjzQpy-)sv!Gj6lBxRIcHGoxB$`WB@VuBxazzwZl ztles8q;fk<_x+_wBLt~e^S@cn#NE_l*}TsK%& z%Xt|Y%WsWb1_Y~=7~U-AW&_}qtWOXY)O+({TD3xdQgPj|<-{mym8LQns9pH%^;ILZ z-Dxlm4*{T%9z*^o9mANKsse2#&2hd0%hLULuldv^)^abFLios2!JS6rD=U?wj6Zk| zo*w@JPK7l*5KQ_LqV(uSjN$VODt&QQBPdO45s+~lZ*#o~X^ch=V3JRq0?8uEfFsWo zXh&|{Hs2O$k-3MUx=)v7CXWc&>Vf|z7lI1xm7TT_OTb}!hW$=nEJS*;ix&M5jGKhJ zfAg+>1=L%}uoKVoo#I|bwO`&Tr+LhH(@WVj7hnSPFui@U2*r@&>y(A@Lj9y>WbfqU z`rlRXvm3w;b4)W&AE|e-1AXSv#(~s{+Oz-m(Ci=+l_AGg!PxTju22|E1I%qXB5zhs z<8~aGig#(wJ=H4%5j3;ab8GWF0#mIH{J0%$45UtvSEq&#p zY-};4E~@FmoEBrA0D9Xz#~^O?Lw7Bp7^OiHwd(5Xf-eGJlA^oX2?Lzra%V}AcB#IJ z<+GLkLHQ`FZ>?R^vVa-t-718rFWxlf?HZmUt`eL@;KEP!( z5m*4jso<1I*B<{4lZ$FhK|H)`Rk{-raR`+dNbd4dRa`K9;t~LwkvkY$zsoP~i|z2f z*eT!DC^|dy9FA;4-VTSFSs;Hbk)1E*MQUS{z7CG^^Ohh6;=$b9_DsKqp-63vn;M24 z_s=BCinXBQK@r{VoFky>U8A+$(AM=k9TT~gu~5erAl1Os-8)vtAO;c!xIF-~iFtlV zs&vl9lvBNn0?Y7D=xC>l?z2Ew(+P*+h`{Sm6!Fk5(C>RuV~p6v<#0HSygO;I_0CbN zlr0$>i!U?Fp%xZH4N8CJ0VfJNp`MqLLZAV%`15Fpm0dyH!Qkhq#g@eY(fPV1H4i+~JuO;L=(4@8S0C zR|Jp)dE5>*S!NBOywibTV`Y7QZ=s^nP@LVbV^3J`YjA-Nv$oIW9#)EO*a<&=v7J{G zB)J(7YNToykEz3(KKtfjU|;}5Ui5<}yX6wTmwf#S$@F_O4ag=IKfSQ^XU^9`bnd52 z+TSbOMoVopZIMF@W{Cy{qKS*2vog&tWc{ZH{g?FRqvi;O3n zC*8kJuRd3%Yf$USztwGYHjP{>f%H)zlRlu%s6wNQDoGDX0Tjcj%0S5)eFc*q|2_`n zeig3gZ9rKvT*)7#^hyl)W!>)y@&$C>^!P&YXq%V28B)<}aP3v-YWnJWyWo#?`6G+D za;46Bn5o%SDL_L4F;(@ptxZ`<g#(2 z4kC`g?jA!d=6h8iefk}N^^`UM@;1+T9FRTS)^k;E zMeZQ{_|A7Kxo>VBbrnra0ZI;>pj?)T`GSyOi$m~`TQ!T+ErrN!L=R`f0&yi!yjrhvCDHU*bE>LF(U z@^AzCwBxtjDIb67@iohCvVQFhEJ`PT<{ut3&f=4AC%d69NZ_4bVIdCzN86Vy*a%&= z=&8Tp!7`Un0T@xY^!3(puk!#p7;rOLs(fh|joR4w209Ugx(({{Ndr3w)tQh#kbTjt z+DRC;#{W)L2C5N`7piOWlK)QoK$WbrQiR`Js$K!)V=5Wkl~7al@<$45@T7E9H12XB!b!!JTz5OoFOV52 zJqh1kH|OkwJHElay$?P3bIbmDA9)Y9kb#;M0faKL{XQt`*_o(JCFEUwWAoDMy#5&& z>F4&+FQopRS>|x1&%VR$@zCU`Hhcy~40b7@L_X;1Fo}yr?j}2|q2Z33I+TdXC-&0m zG>7{ZSoHlA@IOSBHqS~=wj0AXKYN`n{AOY4eU)f>Dv>EK8TXb|q}hO7ubiRsU0{3| z5IXg7>Ofs-R->3HvHu`RJ+Y1eB)He8nHU;~dW5llj_)UF=PDz&w?xvu}D z9z&D$A*HVh_2b8zicL_>8#ejgTrN7<+Rc5mE0sB#0Lb_oS~;Ja$C&CiUrlqM8P{hA zpOQ|uQB`8iPpwPkqesVwcjq=+fg()?jZlqYbmV4Qby`L4>ilfU*o@-ps%7Z%Cxc#% zFBt8hw8ityT%*zR0FT&XgmJlHniRlX3aClF2Wxokt+y<1q%o;1aJU}y;{e%_*D^5) z;r8(wk2)Xf7>h|049!+cxNSILD9-O>BrGf}OwY5goPEa8e4n_$tm^TjM-^x_7X7+_ zjNb*MV2eLvH$~R;QLN~GH;{~VHXWRpEl8-AX{`2WA~QX9=b{Pl7fzdg0@FjWmKa;S z*R~p!w@ibMoGvI#Ow11fhsgbHLNzRYL?~b^;rBIrzr~b0`6**5r^IHOae;x3{)S?p zL=2CaPUW$2d%Z0$`pB}+;uHa>jE%udKs~DtYMW8uA@HV&b@LQ7qiiN@CTl)@XvoQr zfIfI;9>{K&CXNk;cZ-RhHJu)ui-&x&N)z{g5gm-)ZnKh{%;BMxP#{OC7Znjh{q^$e zAbN#W%l?Q+FLVC%!S>QYRNu=f56VhgsoxcJ$6K{{26BZ=>u3G0+r%=* zi2bg0@A1-_V&7#ni}`S#TVx+E7u!husB2cDT-k+?aT(yV=O)| zt)MoVC?mKHti6D^|t)-pQWk>!Qtn1 z+c1duPZp(Pp$zphXUdnj^A7I4G7h_5_d^z>tTD=b@c68kJQ{K~IMU1^zn%-J_bhEH zhz3>sY;4`0jZ7)!N|unwD*9vo_5324*?s$gOpQhyh!gjI(t{6isr~!ssi4&~dj{rm z0o$2-_ph#o z?H>5^-XDDM@g@88qc1Rgp$6t)_kiQ%y?=M+lwhWXcuR=9Brb3W`v`n*@15OEW(8KU zl!ky6dIHR#0Xua6o-gpTy$8l##FbIO-#i44&|j$F_wI?_eZ2CQIZ~08{Ck$bKP4Q`do8tdYr#mc6TByp1cy)>&OFM8azywj6wVwtT^ zSF8bv@yzfc*0*C{lrYlIALii^ljFa{Q|?h1uwxUG#ml9OXVOovq7bN&`8bD1kw%0^ zdd@7c&X(O%&@8uEK|9V9vC_A8&spEbM%Po`bpS;kbfxtY4CBdl{GwM8Uz)@BFbEs-#jhMADnV|jcy+Ux_QdJeUTR1mcbWdc&pJTN{;VZ4X( z%R}=-IQ(MSHcayJiFr7rN1ON03a;_5VfH=0r#IxVRQSt(v`S8CkC7Y=v{jMYwuF<+ zx{XeGTb<^cB+vb63w$r}((})3X%Dp_*@bxqE%5v6J%t+^x!UYO2CYw&pimr~Xq;z? z$Uu?%f0DqlIgjYj)Obpq7Vj{WTO1h3dv1Aw?*CYJrH^>ncgzQn4*4wVDzP_+v-bG) zOfiwg&oUj5P+3TD2tAWG#XSNA<&rnm3LTNwguJ{Xj&BO$16y9|lgjIy5fdEf{o;#T z|5{;W^e!hj6Z@LJ%=fq0qjt}L=&M(xBw4vr>RtB)pvu*6j-4BLdbhP0)vF3&EwZ?p zycwzrSI6`0@0=7B8Dt>8QjBx+bLU--y*|%u&srf@ zYA>s*c;uChZh4sYCTouN4bDTD9U|{}1sg+IXGN=R6DKvVNpwO&r9(qynZI!oT*(KG zx=DZT5^!uKyb_Vbz1#FLo@b{Oc3_CB@NBT}?FAQ=L3xq>T9SOwSg?X-@6f5Ou=k$; z)SvD6_&G18`{LNIxBm~ezA~)Jc4-?G!6g_hNBmnY&=L;mRiy0T)+S(yA%Gzm7Yd9cv5ccaVxolxw>%XvaxEtz_&Tu`J$ zWn~Dhv0!ARsN@T|P5Gu{p##3Cp;0Pa^H8=X+`KYZQ1T4|S_Uebw4Tm=#o?8(_-yhrM)?y-{NZ5Z2Bt6+$!6F& z3Y=>n)Lnhxx)ieolt~_!iHyTZ58d&MC%g>h8XpS}y|~7_;za16h3$jeNlUdS37tB^ znx0zoZ%E(u_O`chi}K>HRfy1hSrkn#e~%n{rr1Le8G+k_1E+61LT`@9NpKs75|x~a z3XYyW_-V60xgG^@$dr88;YHy5d93RqBJaXvsmwKN78dsFBsCGZN~0W_R3&Iwx8LeSMQ3!)$ZQw=FL86Mta z#n4(`Gj(|4A-Kk@)d*9mDH>2m1)_$4KuTj=k7r7e*3rQP$*6tJtWX{_&-^j$PI`(c z+(e3UD)m~`mIR8aEad~Yi=R}wIe7Ia5Mm%(X;j-PbnnNGXOtKe(z(*k2h2Y>$W&Gf zU?a*Kawk0Yg2>ic^ejU|=pH=Aft9NA)|eNT2&<~6!C+WW&wa8lW<{#Uu=@}Rt}YvR71I-f}O?N=@x$b25eYDgL-wwDDxsd+t44 zEI2}DrIpvtOT&;{QkSalG`){2Pml;fu0Y7G^AWBy>>NNH@6NzVt7N-~#H&?hs4Pvj z#}kW0>UzL8h=nw(B|D^qa14ya)N=+ljF2)2f{%d^{ueK#C9SVD3RDCF1-o_Q@ZuX+ z=jqqlv2St#uc8s|fpKRYl63`-dTe&-Z_a#(bSo z%g;Ir$_;tbDANx9gzh%6J(aWD$*>^3;J@^dx72IiHYF)o)BpJ`|A@* zIaEIqfp)YiIhZMTYSCy;!Ef5-m&KmX@<06%2oam}Lpb}+~x zm#f$v?#{BM8g!QZt-5GIsc6A!&I!BTnaAv_)iE%7VF?Fwc zyvV6ULCB|9Lekt?R>j$fHOS-&Xftzw#VHbK94{67528F*wUt1X@qfl&NL8CpG6jJ)}D%@ zh=p47CgUQH-U$u4YL$qx%n&ScNMJDR^(_v~5{bDYO|1z$H(o7u>-@r(e>rpE3*^Ky zJ});{!|BBROlivWbWg3&`vN!lmQdNkGbTpqBl{ac@Q+=CCxH+*=3<@cOr(=lCXlGK zRpT_*m2y04gkU`()R@M)(JR$T~EWe)f=JC3v`AHRy9w`sK zl?Y$Q6n4xlUHW!0Dgj0YUK9Zv0#Y#E!b*U|6fh~GDagxSZ47cX@V`!Q!$XUP zT*GI^#o>kDv8B|Vq>*4Jfp&|>P!i*a`8hBSFuPgE_hEvI}pgf*~gI7fa8}nt9z`S9MQlP$yAoe5z z5d}z>J&QohM-Ty%R5|sPfu7rh{M5F;R^_)$uM(uCfKXRO&i>By z;OqDqJ0q=wH(uFZE5{G{ptW>7V=&BMJK{pRt9$|82bvxQ=GNQKaD^Wj5gt5+_}}WP_!)RH#2_9w@i19LZ@TOJ;iT>Y@|htU=**W?+gHcW7WtR8yyB~U0#54;L3fhgZJZM z05*WpEt+O4c{lC*ZCnAR6er=2G|9uyinWsqcgVxFz3q3$;+YS)@5;snPODz9&s?I# zl$_nx)9}&#HX$zF9?d(}DF^1{`N!#eY0y|VHWM<>T?N%?DM>uay<>5s;^f~V2Py%!agN~ zo8Z@GdE~Q+oCMr&Fm56{9LGMyR*a6x%sWj*HhBufi>8^^ixJ(7OG&}hSN}+Pef6|N zj~p58WQNRYRxHe4m;UBK27!E9MY$VxyUQkl9!)%{wfD5A{bM)tAp3?FR*F&4}Liqu)B&1YN zsn0ChVQ}%%WBoY0;?&zoza=B9Q}~*uQGj{>=D{B*Q~ygaapI69uNU)>5j*U01$A@7 zJXyhUqYw`JR7Crguk%X}+BCnKzPKI>jTAFZk}Lx2_avacB$0d)xL(I?0yE0yO8E*d z7IszmuX~Y5pQM5|2(E6BI)^B@$0&ZmX0B4^7pYYKTHqxr6BUcCA52azZ@fVrcquU(ai-2fMbVI^ zdms+_>rc+ zLo`jVR?mFBinuwgDrBxT9Zr8!8eOigRG8!5(|^$JAHF3g0{+bp)_$h9`#w4F6-FGw zm)kw$#TVDozzc7hzi;WS;%WQ6KEq65oRZx!uyQ7DQf00s6`v2` zTnx~vIT8Y%il;6G?fN63k`V>9nvuItI*rIE*WYcSQSrDJo(H%;N** zmZ801rxT9rS+C@McAh*=XrjK?FBUy!*Lb&fHY;N^3Sd79wh|xYQ?rLG)=LARA4`Q< z4;XD~n8UEb#Y#B5wlsO8)#6~D7^zGU*r7Fw297@MzS;ONn8KU)b{w#=i44>$3}^_Z ztvB8>sU5{j@zq*9)OGE9S4jtt-i*S13sQm65t*M1QyIc+iJ1Y~Ue`w(D5i4q-s`+8 z#svH80r_D>`#`#uGXb*b$;oa(V#TRk5j5f`98T%$`U@xw*q7w5Vr=^hV+?Hx0VQcJCj60;aGF^PY1R5tH{ zRWwHmOrD$1H-83``YFEc%B>vDez(NFZ~g=DL!6Ir1euqC5Ea0ezx(TlAgsB;Fb4gu zT-lRNSpevW&F-&xI1Si*^>MX7JJfWlKo{q@>mvE?BM&-GViX)+q%BwO+D4zKrmUc- z7!)R{wfP7C{J{Sm@bckzTHKrRV2I!#5)mBexgbS(&I&If7|(I)SXK?2Ta9uUHY9>} zt60drgBk4f;KCyk4U%NlilUg^RgoWWn2B}bY9IR{*;e&DeMDoV^mm!;mE24fVT53! zScj$iBpG1qzdfz+TXdcV0{ljOpz#j(Jqgfd2fSeXPhyG^;YSL<2=buUF8g*gwW(Nl zBJF*n7~yfFHR6pkz&!^WzX)Z=_@m@IFyu?bKLGlCnrvKwaFdqx)zll~1u(+$PBRGmmGwMgKGG+G3s-cX61pSFJ+sWIZZ+PtY z4Kl5G-?=Cim<=$uc=oguIQJV z!&uo~VwY<)Z*+vPeELmX(g4*y7E&dhiV$S;q?)DjPP!nQ5InKqu@$h5K)ku%>3j%+ z$YtQ$9xv8Jtf5P@@c<9J{^y)QUkc?Xw|&3jx^tpTm9My39f)fMh<;K0Llm^wT%J@G zp?cQYSe)c~uUh=cm=M$hpxgdZ^Bcs7(~$y#r!(C)WrlZCmr*eB{fuDO7bX#weY26w zMsl^f9v zj1xmBd7csmSpXZ&{t3=jiHN!wE#`}kGfxPpliX>ps}mpcxorZEl$*O9DGti-5U$$z zusZRjy?3XNDAl`iz)+^WNe8j3=q8N-;z9u)~xOQ|7NnlRF!Da)-2_{*KnX?DWPu1d3%9J`ZR?QbdUf79*6t~P(_5R zgjtT&X&O$R9MIGShC`54-+AAGE3MY<9!i~ou{er1&ju}&MB=mDtE2W~p3)=sVaf7! zoFP2lKvy^oN+}b3p8Qnm5cK6H_aI36T%^#(G68WB#<{ z%;Lq>Qf5zo?ZyIx^AtvR`YWtCPP_M(AxhbO^@KUT4rAX1DE28@&naL0}oM(@Idb zyc~&tqBPBel}MHABKElg*rg*tBX#cf{s(-4AQ+h?1tR)*AUqLyF#5p@m0Lk@qLE!e znZ=!HA_~jf3yIh2tSm}1sVXPKY-g68nU{^XV=s^rtIk*K{h?F_$iO$DWWU2gs)yTT zoyNrIcu<4dr_C#q?~}}R{ZPbOQF&nqzrG_xA@=-H0>7s|NflXM277q8$xrmKN7qhn zpC2@7$y)6y`d7M@T_^T5c@-@)Pv@-}4RDnFg!49Pp6p`~Xyad-_5IG7GEEz>k>iDZ z{|q1Mbb;Ek6?-insk397+Oz#0;$`8KZ|jR}-1*bLu0-gWg(F7jDDh{Rq+b?%Z3p}4 z@_zj*rt|fU%?@rRhgWU9dwE2^Udl6XQ(5}h{%)EPhgT_(0)Kf_6kiqCJ092G43$B; zXg^q&`7+uL(tijQ&Q}1z*Z$6E=!Tdm)e(t5F3*dN&6G=`QSt^Q8CGj^N-}{bb|Uf=8nJdxOvLk2o*IzP#8< z7Bw@8X)4>#pqs@jhL9o^FOTa#!Kl-&9~Ld;g)uTYH=Hk!`IkLpyP&WpHzf9sB`<(i zRys7#jz4%UXq;)KAY|oK7@jCk8{DCxl7h^aFxpx_DuJt>AwN8;!R0=_#MNzWS=){Em_qf^jX*1~jcx%g;!AP0AsoA3K1)O*39IzNd(yrvpK^}I%53pq zlE%oCS?DXFk+-rA)Ms|6JZPVQhkg(*AM&;9#juu#hpS$x#rW}x?64M16MdLec2+Xg z!_m(WU*g|GAW{%KH3dQ(ilTNbs3#!bHRAYS{9A;GamaJ2t&|bhu+KU6a16;ZDFF`; zf7j{{vM8)Rt)gs$KQm9sZp*DPLsP0$0@iT756iR_TOM_cyjBEbL`S>q-jj|IG;!d4 z5ciBc71L^yc0Zn}TzB$;mtaZJQ395O07y<8hf$31>>hH;Yrg>PN?$Fs~7`AEfxiS zt)OTg?e#7r`D+ySy$Cv1t+7A~mC|g!+^{P5!l`=xXnmRRLkt^ci}q++WA^+{VUG0|?DO<=e2Z)iNv zCoxgjev^DF3zx<~6+xp(g^YxpdnR+otv~y&GV}mY}d318*lhN2MzseF0#z1y=)JIpn5KESn@Kvkob zdq*h)j(H~53Xyq#zu6!dB*?51?WZ`R?)H+^xJ~K;eDMERvN^%Q1uW zVbaq+O@FyTu^AKHQch_e|=~fJdTqC zM`$>9aDJq^zvo%3Wd?*l%>xUKj={2TyRrXl{b4`WO`GtOl7zIkC-iQjiC~0EW9-kT zKaH0Q@3T-EOO+}fZcdNY&sGKamRi|D_D|0*HnSXzZ+|R)iZV8UrNDz{ByfNlw zEg|uKz;ATLi4?x1(qfNkNjW3d*>v@;3NoOGU39{+1#vSRguZ;?aPg=7=fwk*!iFyFLABm`LS(Gt}`YZv?1S{<2SqG8se=>^j-5foTg@i2oa&lHQ8wrr(MHe zPRk9q)zuo8k=z{41xi^?@TiRxGtnvN>u#ui7j2t$ubM6aPK%@IcSD>i+n=R`N(3n1 zQ?b^8&u|+RUfAX?gcPJh3S5@ldkt9BT*2Ma%8DC{97p|xBDgKm7vI~KUb2wyM6{9M zgOHqYKtom9bcPm&W-+@v<0L=yXqBEYRan2!r0crP?#Fs~3@WkbQrT8Z1h-qVbmluH zuykP!2c#Fdve~{(S2a8AJXzbb*!gonQdQ6cV7`bl;H=}$?Xet_PjwMVO4lpZZ0yD1 z?)}dti8ut*)i-(#yAH!2RMcsIFz%Io_^}Z*gHvPJpde^0pC3aIn@2yj^zA3|#rnZw zWHGlKl=!A!JFXzUaL5?jGHqbo`jit}KO`7$Tf~5KovW|q36ziCAxbbrv}&zh97BFY zre{?Xpa>It0Hg*ykMbLk`T|GzN}mFu>|l%XLo*((6Z;Z3PfLR1xp-SiLbBJ*RE}<- z2bEP)xmY3bc5?i2Y-n+0=xN~b>x*($n#=lZs7PPPwxbo%>B;3yy!$ZTXN^%G-Id^X zNYR4fm8o*xw+fB}j*f8}DZ?W<^`3xBwoZr=B!;i{9i<0Kvfi%kY3d^z`B3zrCzUrP=|F*3xDroAyl?20U?2YCsYKiKjG*OX0+yPHIPDsR1Q{ZtobM1a~y0xmA z%?F(NDJRZ6%w}_^Q!~fw#msZe*qs^G9uBr<7GmA~6qwCkuD!o-h?((l<<|@ zF)?_&FT6URYG^1RLWnoC2g;Wd>>8vHk2z4H7@W=i6mZ^OzW_6Tb+WArv}SjDYDTd1tvk^Flf)W^+OB&Q}N0T`9C*Z7rUvqE*MlBDZ1{8zN38Xi<#X-`oZ2>@1)`yj>yq`|{o{}p*+;h2Sjo1;jc z?j8()=Z?GvNX{=94vg;8j)GSs7X`_U6NcqCc%b+p2-S`NpXl_=e$6H>Pa&2|9z15u z5|;r<@`$e?x#3?Mu>8^K!Tt@EckCix8um_QO_!V;O7{+~@#QZX+nV}ubea8ZBd~&V z!1JBw6KHCAWD4YS>LaVNwE_OL+?i=FMD=QU^$5))mBRHb!Oc5utsKIM*pR)Lu(jVq zMUiu}w8CS;IMX_rjV$64BJ^R=lHIK4eU?=BX$+I0WM?y`S>Mm_hZxJHpBoF$_4ng2 z61{VGCoQv4NrTuzI>Y1M=5mFkYC~-gZt2oV-V`^CAMSPPBh_7>;xYIJxN39CyKH8o z#zB1mm&clNM8rOEv$Y`tYG4(V44n*jJSR3|N_k}KCm{zP?c`*byp@E!v9MJ$ATh-a z6zobliH9S>oAThhd%{J4#;N@&AfCUXlfPJGVj?2+392E$AA)@; zK=YU^W71{^XD73>RQ*soPPR=Sp%u2Gf=;zz@2Y!k`4175VFzp1o68ChGJGQSyO-9} zu>)8*qZlA1aMt~HVA%CyvI={?-dM)c1=YLJ8PY3{ar|du%U9zUY3cPg%bmm843cU! zbmUCiP0#hAmLC8;7^mLwNo6o8wsecz=>@PqWaHuYv%kLE#06Bl!!n>lZ+dgFO0Ze@ zCQlmnwibWk$L`KXuyAt2T;1~H5L{D5e^J7SE|P0bcAC$kTftiwMJrt+uWp7llgPco7uBY#B! z@VwR55GSr(mlq~uBO4wd7u8#&-OQ=zQYg1Fywt<@hKD7hNAH~pL6jf#GrWY5ON_rz zZPeV@6U)wjOV-JS?;HK9ZEmo#ko!s$o z(EGAjM^F}$H$%AvF*8;Z`z6w>+25UCo$(<6K>1A88u*Z^?Xxy}{c2{|0DgamcYFrq z1$xB$_gsXeMuN2L9%)m?mOBK^nv?*Qy@006eQEVC#}2!AefaTyH)~a!e6XLq(Kc7( zld{|?ZHd^ImJFVg2`;aeq@3zWdU5J(^k^~Cym3<4N-O&Qi}Ya=%#K$N({B9aTj@YQ zh9`Ct^Za4!D-Wqa1+<8T98U-Gp=m3tAqyUsdWVNMTevYK4mE?3eL72DGXd#gB|RPZ zD#@Us@oxL+Q;MKx?#JgB)N3-$+VvwObnbdyV7G@&acfr{>xCy&A*qFsK#x}h13IOf zKQ<_wtorEh#oJw=!#^2XS7}IPz|1ot^6mI35Cnv0V*JJ=0b%gBZY9+XoYW`6ZN`3Z z9cx!p4b?`2J?Gb{kOfUZ#sSq1=5_6q&{6}b-HNEs{q;qgQO`GrgFsEz-rl7-Vi`wo zWBaF0Z$EfF4Qu+QkmfWku08gqdM3g&g z009f&zn(u=7+-!;D(ZG5!8bFkvDbq(Ba=HuC!gLW6>@}8x73t4<=(>^H01MFWXx-9 zx6B2a$0d<-+y!Vt*k11lw~f9XY|iT8KBIJ0-=;+&^jvzENJ^@D!bgA_lwa`}e`F25 zXZGUn{vi)t%cK(W=X&k{0A~${ukixj8gw0!+S5YbO z{^Wpy#jO|>2Mueb0o>q`=Q>VJ)wT;H}RZk_Wmo4c%;Z5075NgxZl>3U96$C0<_=M2ag zJ~-&u8wJFG;ehNf=$ew=dxi!<%CM_5#1+wyNkJzFP&!)3A`Y9Lho7(yN08`@jQx$i zjQm1WvV55J&ng>Vu^;6&4S31+YaU0HzrlLXRXt3G}kZ&<=kzKRzVp9g~BV9M*4XFMMFuf3lrYyWi#+R|8&lW%}a zm|hXUn&&F;hJN}KB^ZDvmL^HgBHRy<)HgEVXNUvdQ`nOBDd(|0wGf3pXL*STG&L%d zQ$D=1<*zvPS9<;28fR@-8>5FlKeHeeGY6(KI{y+!%E4SN1EKzk=k2pO4-d^FFDk6 z3om(0VEmIn7?65R47KGhzAs<2??F+;u(tNNcWSU~fPbv=Fik*-T(Dl_I)fqNZo2R1 zkS-l}fiIG%nABnKOf;U&agu_b0osnyr3fY-k!M~$ANeCe;-I?hO)W_b1bCr!cQ*qJ%SyRaPN_$3Y>$i;NH?X-4Wy=o-oK|eBhY$fI8;rx z%y%r6*uQ1bYoms|m)iDAg} z!ab_W6?@8cU3I@2+s+xdvHzzGhh_^%xc)Mipi}_I*?3pG$`iKU&T(pL9y*FRMmk8V z_2g18iLLF4zmx$ZJ?0|AiXoe*YBGM+u7j8%8KF#sCrRc^zlYJtEl$XUHW<7d-f3@c zp#QVSR03hut5LCqNJhFGsav}Q!*thMcx(3&%9%!j%#q|YJ zWye1Y1{PG4ff#)?*|>Pzv+5?kydDIEl*^Z5tpdN?*OK4FvkZUk_P%Ok>jJqUVVV9Gr_UjHF=eE{Y_D`Tsa?-tD z2R@Ow53~DqCCU8!uawi@;stUr138dx3+(LTv3)6uT#N62ZX$^qlbTs(CLOn)3Shl9HWrx1zeOVo7T0$DDvgW7as)NyrgRPDe>}h(S6WbyRfqB z+-xxD*TR$UO}|Cco;`mVbnF8ZBAx;K%;MF5qLTnG>@?RVH=bL^9@+w>m;5%NZR>m8 zJi4wt_c8q9f&p4Dg=Ow6(MJErA8*I2rqQM?rE)k!k8PGfUGIkjf+A|mU1#^Ep|cKWBL+r-3hk8TuZlCkEhAL@olN|f;S@t` zY>H%@&~RI|P*^O~5G%3+Xu|Dvhom%%uDA*_@=`x6Cch_hxnD5hd9q<)^}&_=x*wXV zYsvUAKlpDblnQzREj60;zzsE;pSM&wX24OSadE^=v|2m&zTTA<=fCKRkqCx?tO_vi zcJ}Usul=vYvxT8Z6HzRCQ#MoEQh5R1uFJ@&Q5U-scj1+F|xy3l< zXlMM4SguH+R-wztdE2<@nGORLET0_$f{e)4*}u!6g7P`qmG zyH_P%M}wNZNf9RfRaXw|^L2aHE=R_O-s0t`hf{D^DcL8g(B(npJvuoUXRU>s;5Tm} z+qP=Fa5b)HP}0BX#s7bQDUeeNkX!Q-JDV@>ikBR$p@FG!{zadT7TQoZLUprb5bBBj znS=4-UyQ4Z$WJ5B&Nqdw(8ep4*yzB|+O6S`6J#D=n%QMuAU z7jdqB$*<&MY!}Z;t#3qK)Hhmx-&mYn5J{Jl{?K5z{R^TV`$pHuei}~5PNaq{4)mp{r#sy^f|3w*~t-E zjZr7obi(S4>09M)*~i#lKn8}&=d!X3oF(zwZzLjyt9JlvAUyx6Y&s_uT5lEN1REq(K)+xHx#N2N&4mQm)wB zuCmdoLpp1>s}XGt-P*=I%#4C-b$Lm3pJv1YJN*3LwYt2y5JI)|=_ac~piZ zx0Jf0u3~%f%pZgI7~wQTy1_)M)002$M`UR?uHw zZwfc{^9t3U3USQLXe`NKX1v!w(Xdv-mIJ;lW9fgPIGLp}jle_u#zy%VOWDzqff9o- zU*-z}Ww-)wwpgJ!HWfLf zph@?bVm0T{KgxgwkeMf;OJOB+^7?-F`_%^>8(Ge%X>u=cY>ymTGVQBp)MhNl&}G0% zrpW(;Ul#py?q9j=tQEXuN3W@{kyh)VPH{SW6#Ax&y%alA<4kG~Pd_46HanmuN_n0o z%2&Rss{2*)?5}g%kb&ZzY_w$9bi`VKe|@90a{qv0eJg9AbPCDc;(bSh==# zL|=Q{LACXP-hV(Bb?=2EJ#|#G>*V;i2DeD|t?qvgk3t?HMntOd4u^nuEAhRLa6tU= zdYF@Hwt|*jc~w?J5UYL_r}1C@{ext>Jg_q7P5#CJBi_G3_%Weh=<0%{1n%FdHi)Cz z0Tmu@tLV$Q(0J_C6dZsDYDfzpImHDWx$-zE_}m`WQAbxT8_jkKcf2->n~dA}2MGna z$k5?8KuHXh8_GxbE@8z*?_(6=WC=ZK0Y;%BlgWxdo&uvu!FVx5_!V}M3nd*<^I#da zCE!ULHurNL5~-&hwL`NS!NlZr&k;QQta9=m&N6@MsiO}YKji5SrfPlo zpJN*Uw~ul4^P>HCU*%V2#f&h}DVklVDfy0=B}^zes~`=soQ7!K%wDw!WCtpjCnuAK zFJJB}!&3IS><(yG&|L<#-2_2mtr`h>D(|Ai(zJo1Ux;y+gd}K)=HT#|8_!C;6y^cD zs)xJz3b)PWC}#-@i;aK8Yv4)%%HMrT-OHQ!?ahh+nvDD-atl2DucHM$SR@*1=@#tq zXtKFBwf;gfj|qbXo~OxNTi@m<7vE~T{dGjryXUmPzl0L(M>}SouOwniDuUVZ9xUb! zv_Cm_(I_hhjArwNitEULiGc#`QvgH6^Z;LON_KCgym+&xa8yjvpTMmX1b=~Hr#+)5 z3e`b%M*VOzhIUUcG#P=iwuzCu0S6!@1auz9z}^0H(8@e^hth4k;cw-6Wa9tIO^6~z z!hhkQO90YH?n$wJxa!S4!9*(BmFq&fcEO3)>(^y4l6*}hM`qd6-8h}I5LFrF_vF^o zg`ik6Q#N;#cN=$Rl5(8;jo>>Vi)C_h*X3NU`fV{B1o^+kwP2+ zw;Ho}Yg^nMmO}8vosH}wIi|yI{(8754spsR6_HqBPOL{0Np;N(G0rJ6zyM?Z$)fzj zjuCrw~9^k)91TcjQ4{v*D;~%@@}$7%|0jF6T8%hwWna?lb-sTl!s3I405OUo4NS6F)1`YKp0UfL562!daD zR|E2fp*`iPqb)HXSa#!;k`s z|8PA&>qZCUMB(U)zGU|k>9Se=C&nXFyrDrmmr}SuLg}%`!-O0pCe6=C*xfdbj^qQU zHT@Apw^Z1aOXw>t3?yz;UjB2KN8JPhU4U@`7IDwbW7~WAF>#?~LTtIxSiUpsva+gY z;rh_R-aOzOsdE)R^vC~sP-NHh)a(@dw4@J2Msa^Ex#VeOQh*}WyGKhY6XX97&^x&= zlZYete<%^~n~NatP-kNCvg+#Toe8L}_hfuJp=pxQ?Fl$&C+mXgHf#CGL8yuBZ(0Y6=RZddp4pT?+0{~{LPC0w?4fW<0t(C^l@BH-stLj zU=wTVKXX=&<>gV{BN6sT$5T&(?Ek>1JB(n(sIZ<%ijGvzo(~+4M)c)#KR>$cX@B}M zjj(g#fCk7@tfv2sLn8w`#u8{lV{|?t$rAis$D>IN0wlplrQhNF$T{*~xZ2+^(EC%8*5}a-N3>&oQx4Qlu}}Ct^p7*@JzX&pZ9%SPzJht@amxPG&N0 zC*10H_)WP0e`CGBsJ|=!9!#k1c zW_?nlOm%Fmtvqc=HU%%Xh$V$fX(Dhu`2~=B0#x^(l+V9WWH$w3G|zJjv>3hF?-Pk2 zcO?nv^Vp22sX-(l&{p<=-=&OoN-nj@n!+itLyzdL(N8v z{HMV(V3zZP9u_&X20&U5b|`S8*?46kYnne` zS&#|9iGMk90JO_>R3RXjJEDd5ZXJGTV}EsX+a85TFn0U{C3@DYE^S!4qHU~{Z;%`R zpfw|vYoA*!hg%b{I~ZVhZ!z&C(nk;XCaVpj#)7HL-ykGl{s$gg6hh!YS>4spLdxlE zfQII~{^|+}JWC=xWidcD9RW(OhA$`zwPj(Oz zRBw74vupMh(jbsyttXJ!uz9ELY5R$zyjRVhG0DYDaC`MoLN7+J%9UjFNi<@n^LbZk z+w-a^AZmRS5NV^(vBU6&Z`M)ijoXTYa#Dz^n4U)PBE?`v3a!^*X{#nO%Bg1>l`=S2 z|EaMg2<4Ss7d_#Q*xrH2OL20w(A^T%Z(e@8?G;n8l*jZR0hDRe+j6Vt6u*|7u-nyWr`ScsTpZgik@Aho*_2_<> zhl5s{0y)X5f4f=pt-6)Abp>W!8?WzHO+a{d9 zWVB2IpQ6<3=_KKxAwR1}>WgkK+YkwZoeL$OHMDjD9(;Ylf_{rUs$kCb@<9wzS3$PD za2nJC^u@(Qs$16>ViR-y3RfO+cETeCMFP0lG8;>CxDSK7eQeyl(SOc7gNDFLj}G?G zNcs#c)-G8dYxVGgYoy+8`Z9C~)isyO zI5fI!sgOtK&1ChYg3Z|r;3=nB3%5q@N)!HK6j(Bdz&A!kBL?(eI-Q`NGP~@wm3OQa z3Uh~$mLAz8L~wu6%hUjGKaI@^ITD25Qzp5&0-=dx=sLwShq~4;bHiRJVrr|$+{tbY zW}N`9@P&WWrQJju_F3(7tE{=2C$P7uph2*aFbV~E*}3_lM27LaFzjHGgJpLVZUbGL z2&f>yD^E$mC_Ri;H6sO>h*^Kv7*D02fT7^&6lJgmwS6?Xd6rKl9^gsrCNqYPM<)6S z66n?~rqD%{z(8LhCo|8Hom4-|Z29W?eQ^FG{-qW`{GJX>IFsOY-{d?A?s;H#zx*~P zgFCK5z*owLHUwMw62loG$}|sq=Nh;DP5cOtXM~4*F7lvdWJ=pJvZ5qo%|UoAbLT9E zAc_b9pf9O!7W=Y|_mHmTZYZ+dHc~zO(I=FjA~3`;5nmql=yEdq3KM0C2C6}sqC@8= zZZrjfsN)}1C4%~3n{*q9y*m3IwS2Kmv9jr~?Zf5y(#GUFW2^PiNGU2(;l;~(V+Wvq zp+wc37(+bryxa zN#dj;{5bTAMMjqRdc}nAdb-Rjz$0O`tU~2t=2aPOmoCQn1=gOxr@P6BGsPGX+>03y6_kn`5;i1!~@yebcB$=HE{6YWRzqhy=9fj8hw>!NCKYQi^YWA?N zD(k~1Tq#W+6ev3Az9HBJz5KIt9Ben7-1TyFw3m^e?3oxLYrFoy+|;F@_BhILx%?^q zP!TP?Ma^VmdHQhCQOvlaWmh;xk~oE8F?sJA{h|s(&wS$9z&4Liq0)^H5Zw33D1l4c zfLKgy)l=hgrc_Fmr*$U@23!N)n%LN6hLLvR{QZfdz6W9lk{JJ)Epv-VyAWuC@`HYZ zYs>E>d^%%cL~bn)X~o1EMa6o-M=Dg4cN5sRbWObFeX+=CZ2LOp36SGJN{#Tcc#X2S zzrA0SgMPrJtfWTt_38UxIvsuU(6PzA`=d{`pFEI0kQio@WAv7#;nvP6@eup`s{tC1 z48)1|)IV|CpP3eDj0+9MO2gYS&E)a=nO=@BSX`T8db>V3F;TmHh9CY}^I0TplzKM8 zH7O_2N4*ou^KR2zus(N<3(8~LDY>_WYJz=&P3#V;y}bT8C-gJN{tWLf76s~_V{e9} zRrx8BtfxJuor@;iQFpj9oK#$qLtq}a;eMhW=)Y`3wo2*t;5Q?6I?qeM5VVuguwChH z!MizMjcD=U2bYS(B%L=uT&LB2{21-0Lg{|E#5zY&neAYlq3p3(oe;nc^*O(371y77 zk5sGOFbY@iPqyIn)t3AXR4wGQ{Zg?}9)hZ)9Lc%I#f+xQomTQK#_Y`t=O5uQDq2vk zz-BGPnKXJ{y2OTB6E>2Wrp+4=m`#>mP|j}Nn{-(o_5p7gD2eoanpR$XXXyff`h%hVPF z(Qx_rq}wT@|ERi`?UJ4mW)cM-bEZ5DLVN>s1a@}#YiW)$P!;AlL zkViuZpLsCN-Tixv<@_-=_5TQa>$s}7CVX^*AR-D#qXVeR6_CMaZVL{dIoZe6yF$>)d*N8jLc#giF5FvNc zqoA}|%nm3kzNque|U^Uc>z*c zCPLe4ICr{r(>f$f@pN$$vrY8jf<-JF*N+gv^SkZ(!ae)2qgx+T7%%y{m;J>)BCj3W zHVTBmw@eX%AsWG-dQB(-Gf@1>=uYc6iyZ&sp-Nn_ae2@^V~3I;`>|= zzzBbQ4#j(_LbA#8!V7;LvRon;bCr-!WUs?IMr#gy`He2B0I?+BWg35&GdBGJHS+N7 zB(s?a5{3kv-ptjIJ^N}1{rh4D$5nZ7zBH&<0eLpmHl!{Mf%LM-^oO0-xRYRI{76iq zM*3gTVNEda^}lv<{BT!$qzTR{(u;GImLtU?RSj8jYF^wNtmAb+`dt0Nyln7McWV-{#MS<8;ymoYw4^bBU@HvuSwMODo!PP!q zaz0TNi&mDjnzV>1qY-J;2PhOhmXh3CM^A3|nqjEPjYltBq{fhsqcDw?q5$o&ZD_!o zkVo;N&irYuJ)5`iz|52-(Mo@-0AlX<9jAf;z2uUg7fWcSdbSN95QIj^=o2Y~y0Mr$ zfsOGfd7`mJ73@wZ7LV~QLM_-XEN1)aEV?bJyl3Ud_Xkc#T`=V*&Y4)<**V`9 z08`MvnA$(Xye>;Pj&Z8Hc0#`uMQVx?Ig0h&g1?}8HJ#I!_6`g_nR$-nU2`7>OXx4jvB;cBww1A(%SwLK*H5BKpBon{xc7j6Ys}W{96D zG-N%tK9qNANS`&t?<KKrksp{?WiI;WW?&bg>1vOA)<#og_&VP1{SWs|3cOd92_t5ex7Sa^ zjznO6kv;o5z$JW#i$}Eak(?NJ2XU&4H9z%S!t&al58dKX{@4tap{b#9ewJ~BpU%1; z;e`sXgF!YKj5lgjGdwGja^TBB?&>d}Q<&V91v38?_DXJ11nLs=Kqq>~x7JeF72+4%IB_SM3)oR zhd9GTny|6pvuyO&Ixlyst(za_{*p{K11HMA+cS<1*& z^#wn@8AF91Az`gHAuxLM{? z9CV-*V7rvTFf7K)GkQ{co*b@%Ly1iDj1*%c3%flH2iLj*N;e>|(@yl$TgY)!)Y!jR z1U(bKq(}rEt<^p{s!TD3^iiwZB$qX2{JY?t167}*A{-Mksb7N>FO_A~%x7V&@u!__ zB`F?nTsCOad;LJB&#P0pzJ%6?C-YwJ0oFJuu*GMX;TC7tZNvo=a}L-Y{Qhic)CzbE zK-Z`8nT<@dtu*6cgIw~8Q~gJ#-9w4zxE*$SCv>;OiK5pN{iGZgdDp`i0l!93^%4jN z0AmpX+3rJ^#vrOYoD!vCt{<{#dAo(u}sZXN2adb%2ff9@&x93)JXK~VS~DsoNztNBPTK}mPfmy z#M!>Rld_0T_V8j`v$?heQ>E?}CmB-Izgwo4Mg4%i8V>P}bx7rV5~*z0gLuW05#oxQ z_EmBQJZr$IkwQ4!+p`?J{PvM_%xzg)Zbw$+OJ*+VzUspS>Z9~M`uL9q;<@}TIxLdq zMDfw~Czc?oyrS>ZyblT7(DCn}TpQ8$FiOt<%QeRw)z))RV`~rEXWXm2V^jSkjq5mc zCaL9%+#d`fO3^iRiIAn+qoOg`kneGNj=%ta&liAPz3+(PAAjqLGle*JtJPE2rW`h6 z2L};ve38h}wpulxO(lr|JoWu9z7PBi$_6%twp_jIWw+)Mxz~@6a?=BbT zBT_ISbFY11xH%+du%eT@Svx3?!BKs#LL4QSnWKNTClL+8%hJ`-e`s)GmlIq7AupzV zez8eLgVQ|Hv$BLXG>oYt?Wmxagfhn!f&=75Hp5od{Ak_5;If&W9CYt}Qi#)|gk8Kn{W_5AHL$iqa|ybQfjcURRS6}J>sNB#mN&ey5~AMdO` zD{JmyAqUWrxjT9E(i)PJ)Gn?!zKFsmu5qycN$xn{$;V!I{^8}`@j^T1G>4*|L^RH{ zev3&6-p1YVQK~)r8&esVjrMEr&h>8R^7m}-Q&Z-s(gorF=#X+>AN^K-XFJxRWW@gM zn5Q83r;;#nhPup|M6wSmn@xRn{T6FJynv)@8sOa-P%=8n8e4SQd}w9-C2N9T^ZV{ z5+eeDKrxqoxrSx-MWfK7^;$TKz16sRzNQp>mh!T@>F<>;3Fdg(nu(0t)^r(Y(%M2S zDphszMM`S)#!|4sxoAqy8}Y{@6sDo4Ht&iLugvJO5=}-v1k0M4&FT@w53PFwTJWpC zOZ*_rCGzBvI$t9usGFYKiYqVN5)J0op+L-?1!u5r&X!VD6-BL8CTEpwv)dNmoG@rd zAqYf?6H`r!eBOB&zzc#CzdLn6u-w5%i}b%)b0z!N6AU|*Hzb0WeNGHY^Q{6e%1dqX z9B=SY;~etn&^QU0wIaC^`*{98NpoRhw0i@Ofrw_;L>TYRz0#sFnb4lTBD)$0b6snD zhhN`8Q~Cw*g2m->MKcF)ySRmp8>Yu2rQn<;v^0XB?)aijvsh(mca=Q)J*2XDy2j35 zvPZdYaQA57%Lb5RJseaa9FODL*%dxc+*Fc1&e`tn0!dN{x&OK>#`y<90Ths~yu>8e ze!G4yke?rs#N1Z-J}nB{K<$f=jip8}^L5qk-DxvPRBN#O9119m(iyi|QSY4`@+si8gcd$6r42sG#VOB< z234=)+?jr^YQ?=*S+|(AJ`C$qSO-Z9_yeqQn=S#ns2N;oi6PHhVlpS&h@{N&k581& zp2d#U_3CYKNwp;il2oNvmnuX{0F}nAtuLd3i6l2P<32mM=dv{~6e$|x;>2w>Q&Os1><5^U{X(Zt$m_LT_xzp(=xR{6-6_2A{I3d-Co39;RdwQKSZJGo7b0_MX z(h`EqyS0!aaqVv-;KaGR7MSE1ndF$2Zgkw2It5B4wK}Ok|Ar|u)w(LfonjU|Wcq%O zUXlgvWg++mH6^F~d@{cGWqQa;@S{dS`+FCua?| zYCXfb*PL3jhQGeO)m5y6QxtSg*+T*8YO$@n2BNB@zr#COu1!12 zYFJ>FNs064N0i6`RN_`^N6y#mog1Lu?8lSX|I1NIhA(>tb`G2u;&udz*YR$j%$U*W z>So4iT&^Olg)Nbvyj-{LdO;r~?uRqzA3HhRi|R0u`#q0Ng)GrBK$GWlK+C0CwB{Ft zx5NAM49v98X|44Zh}gD_RK9Pjm=vZar;)z3emK(;|JzEZy2@&&SO`+^eqD=~#t^p@ zw#?uiAB}b&$MgWLm-We;mrqfbVX-MiqheD<%2S_`S>B!}4^j59 zXdbb#-NigsvqyS#TxdOHuD5ce}_l|VOKp8kW!u)r7QiyC=Y&$2hKE);EiMX8P4PM zube4GC3VHkt6Nc^b1k{I9FZ6w<`#+ILv?rC&QDk^)CbDekOt)Yo_6m&EhuSRbp1E( zqnT2orqX7(hKXcD>@{BD$)BZiVr2A8RYW8DyYwh7ZhG$#) >e_-wD3I4rM*wKLidH7VVi_X9) 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

SQQ+(zu%|;G|7=u>AB5` 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 Y)_D5;I+?3)bCPfhKo!|qY16>}0l<3JA^-pY literal 0 HcmV?d00001 From 44beb3965dac0a7acce78c2810b1f4d835cd64d9 Mon Sep 17 00:00:00 2001 From: D-Gun Date: Wed, 27 Jan 2021 11:49:56 +0900 Subject: [PATCH 08/59] memory st2 --- ...2021-01-25-think-memory-structure.markdown | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/_posts/2021-01-25-think-memory-structure.markdown b/_posts/2021-01-25-think-memory-structure.markdown index ea18f9328..0020b985e 100644 --- a/_posts/2021-01-25-think-memory-structure.markdown +++ b/_posts/2021-01-25-think-memory-structure.markdown @@ -1,28 +1,27 @@ -layout: post -title: "Git bash command" -subtitle: "Git bash command" +--- +layout: post +title: "Memory Structure" +subtitle: "Memory Structure" categories: think tags: comments: true - header-img: img/post_img/memorytitle.png --- # 메모리 구조에 대해 알아보자 - 아래 링크된 글들을 읽으며 정리해 보았다. > - https://genesis8.tistory.com/181 - > - https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/ + > - https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/ > - http://www.tcpschool.com/c/c_memory_structure > - https://velog.io/@hidaehyunlee/%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90 > - http://www.programmerinterview.com/data-structures/difference-between-stack-and-heap/ > - https://goodgid.github.io/Memory-Structure/ ## 메모리 구조 -프로그램을 실행할 때 컴퓨터의 메모리는 데이터를
-[Code](###code) -[Data](###data) -[Stack](###stack) -[Heap](###heap) - +프로그램을 실행할 때 컴퓨터의 메모리는 데이터를 +[Code](###-code) +[Data](###-data) +[Stack](###-stack) +[Heap](###-heap) 이렇게 4가지로 분류되는 영역에 저장 공간을 할당해 사용한다. 개략적으로 그리면 아래와 같다. From de56f0c1ab2403d82ea5f6a170bbda2e67c621ee Mon Sep 17 00:00:00 2001 From: D-Gun Date: Wed, 27 Jan 2021 21:50:15 +0900 Subject: [PATCH 09/59] inside link1 --- _posts/2021-01-25-think-memory-structure.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/_posts/2021-01-25-think-memory-structure.markdown b/_posts/2021-01-25-think-memory-structure.markdown index 0020b985e..9facbc348 100644 --- a/_posts/2021-01-25-think-memory-structure.markdown +++ b/_posts/2021-01-25-think-memory-structure.markdown @@ -18,15 +18,15 @@ header-img: img/post_img/memorytitle.png > - https://goodgid.github.io/Memory-Structure/ ## 메모리 구조 프로그램을 실행할 때 컴퓨터의 메모리는 데이터를 -[Code](###-code) -[Data](###-data) -[Stack](###-stack) -[Heap](###-heap) +[Code](#code) +[Data](#data) +[Stack](#stack) +[Heap](#heap) 이렇게 4가지로 분류되는 영역에 저장 공간을 할당해 사용한다. 개략적으로 그리면 아래와 같다. ![Memorystr](https://D-Gun.github.io/assets/img/post_img/memorystr.png) -### Code + ### Code - 코드영역, 텍스트 영역이라고 불린다. - Source code와 함수, 제어문, 상수가 저장된다. - Hex파일이나 BIN파일 메모리다. 즉 컴파일 된 기계어로 저장된다는 말이다. From 5862fd3eb0a259373c18a035b200b8fbf87c6fce Mon Sep 17 00:00:00 2001 From: D-Gun Date: Wed, 27 Jan 2021 21:54:02 +0900 Subject: [PATCH 10/59] inside link1 --- _posts/2021-01-25-think-memory-structure.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/2021-01-25-think-memory-structure.markdown b/_posts/2021-01-25-think-memory-structure.markdown index 9facbc348..8882dc7fe 100644 --- a/_posts/2021-01-25-think-memory-structure.markdown +++ b/_posts/2021-01-25-think-memory-structure.markdown @@ -24,9 +24,9 @@ header-img: img/post_img/memorytitle.png [Heap](#heap) 이렇게 4가지로 분류되는 영역에 저장 공간을 할당해 사용한다. 개략적으로 그리면 아래와 같다. - ![Memorystr](https://D-Gun.github.io/assets/img/post_img/memorystr.png) - ### Code + +### Code - 코드영역, 텍스트 영역이라고 불린다. - Source code와 함수, 제어문, 상수가 저장된다. - Hex파일이나 BIN파일 메모리다. 즉 컴파일 된 기계어로 저장된다는 말이다. From e5827fda051fbc6183a14a369d5cc22f77fce5a4 Mon Sep 17 00:00:00 2001 From: D-Gun Date: Wed, 27 Jan 2021 22:31:24 +0900 Subject: [PATCH 11/59] insidelink4 and git command insult --- _posts/2021-01-21-git-command-list.markdown | 10 +++++++++- _posts/2021-01-25-think-memory-structure.markdown | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/_posts/2021-01-21-git-command-list.markdown b/_posts/2021-01-21-git-command-list.markdown index f0d228cf8..c95ab838c 100644 --- a/_posts/2021-01-21-git-command-list.markdown +++ b/_posts/2021-01-21-git-command-list.markdown @@ -46,8 +46,16 @@ git설치는 [git download](https://git-scm.com/downloads)페이지에서 운영 - github repository 관련 명령어(clone, commit, pull, push) - `git clone ` : github repository를 복사한다. - `git add --all` : 수정된 파일을 포함한 모든 파일 local 저장소에 업로드 - - `git add test.txt` : test.txt파일만 local 저장소에 업로드 + - `git add <파일/디렉토리 경로>` : 해당파일 스테이징 + - `git add .` : 현재 디렉토리의 모든 변경 내용을 스테이징 + - `git add -A` : 모든 변경 내용을 스테이징 + - `git add -p` : 변경사항을 터미널에서 확인 후 스테이징 - `git commit -m "commit message"` : github로 commit. commit message는 꼭 작성도록 하자. + - `git reset HEAD <파일명>` : 해당파일 스테이징 취소. 파일명이 없으면 add한 파일 전체 취소 + - `git reset --soft HEAD^` : 해당파일 커밋 취소, 파일들은 staged상태로 워킹 디렉토리에 보존 + - `git reset --mixed HEAD^` : 해당파일 커밋 취소, 파일들은 unstaged상태로 워킹 디렉토리에 보존 + - `git reset HEAD~2` : 마지막 2개 커밋 취소 + - `git reset --hard HEAD^` : 커밋 취소, 파일들은 unstaged상태로 워킹 디렉토리에서 삭제 - `git log` : commit 내용 확인 - `git push -u origin master` : github에 push - ##### 잊지말자, add-> commit-> pull-> push-> pull request diff --git a/_posts/2021-01-25-think-memory-structure.markdown b/_posts/2021-01-25-think-memory-structure.markdown index 8882dc7fe..aecd6f23a 100644 --- a/_posts/2021-01-25-think-memory-structure.markdown +++ b/_posts/2021-01-25-think-memory-structure.markdown @@ -25,7 +25,7 @@ header-img: img/post_img/memorytitle.png 이렇게 4가지로 분류되는 영역에 저장 공간을 할당해 사용한다. 개략적으로 그리면 아래와 같다. ![Memorystr](https://D-Gun.github.io/assets/img/post_img/memorystr.png) - +--- ### Code - 코드영역, 텍스트 영역이라고 불린다. - Source code와 함수, 제어문, 상수가 저장된다. From 57ab9391510cd9ba30976e3882513669401811f8 Mon Sep 17 00:00:00 2001 From: D-Gun Date: Wed, 27 Jan 2021 22:37:56 +0900 Subject: [PATCH 12/59] horizontal line test1 --- ...2021-01-25-think-memory-structure.markdown | 2 +- "\357\200\233" | 660 ++++++++++++++++++ 2 files changed, 661 insertions(+), 1 deletion(-) create mode 100644 "\357\200\233" diff --git a/_posts/2021-01-25-think-memory-structure.markdown b/_posts/2021-01-25-think-memory-structure.markdown index aecd6f23a..9d7099375 100644 --- a/_posts/2021-01-25-think-memory-structure.markdown +++ b/_posts/2021-01-25-think-memory-structure.markdown @@ -25,7 +25,7 @@ header-img: img/post_img/memorytitle.png 이렇게 4가지로 분류되는 영역에 저장 공간을 할당해 사용한다. 개략적으로 그리면 아래와 같다. ![Memorystr](https://D-Gun.github.io/assets/img/post_img/memorystr.png) ---- +=== ### Code - 코드영역, 텍스트 영역이라고 불린다. - Source code와 함수, 제어문, 상수가 저장된다. diff --git "a/\357\200\233" "b/\357\200\233" new file mode 100644 index 000000000..237165218 --- /dev/null +++ "b/\357\200\233" @@ -0,0 +1,660 @@ +commit e5827fda051fbc6183a14a369d5cc22f77fce5a4 (HEAD -> master) +Author: D-Gun +Date: Wed Jan 27 22:31:24 2021 +0900 + + insidelink4 and git command insult + +commit 5862fd3eb0a259373c18a035b200b8fbf87c6fce (origin/master, origin/HEAD) +Author: D-Gun +Date: Wed Jan 27 21:54:02 2021 +0900 + + inside link1 + +commit de56f0c1ab2403d82ea5f6a170bbda2e67c621ee +Author: D-Gun +Date: Wed Jan 27 21:50:15 2021 +0900 + + inside link1 + +commit 44beb3965dac0a7acce78c2810b1f4d835cd64d9 +Author: D-Gun +Date: Wed Jan 27 11:49:56 2021 +0900 + + memory st2 + +commit 6ae17facb61ccef43ab2b1a4f06ac481d32e83d6 +Author: D-Gun +Date: Tue Jan 26 23:32:17 2021 +0900 + + memory structure post + +commit be7844f7f01d6a7878eb75c76ebefc66e1c4b8c5 +Author: D-Gun +Date: Thu Jan 21 22:02:04 2021 +0900 + + gitbash command4 + +commit e8feb14bc7d58b2fcfdfee433d642ccbce112b85 +Author: D-Gun +Date: Thu Jan 21 21:56:36 2021 +0900 + + gitbash command3 + +commit 8b68083a3547efdca88a4e3fb9eae271d54a13dc +Author: D-Gun +Date: Thu Jan 21 21:47:42 2021 +0900 + + gitbash command2 + +commit 4644eb8f3488ae89d3a6b6474322eb55becd7e7f +Merge: 367dd1f 91d7c87 +Author: D-Gun +Date: Thu Jan 21 21:42:49 2021 +0900 + + gitbash command + +commit 367dd1f6a623ca77af204c2b758f24f9730c3ea3 +Author: D-Gun +Date: Thu Jan 21 21:39:56 2021 +0900 + + gitbash 명령어 정리 + +commit 91d7c87bcce8b4ff4e9dac09f585d28a7d818a97 +Author: D-Gun <73294503+D-Gun@users.noreply.github.com> +Date: Wed Jan 20 00:05:49 2021 +0900 + + Update README.md + +commit 332d0fa08390f45c3307a511c7750e86e03e784f +Author: D-Gun +Date: Wed Jan 20 00:02:16 2021 +0900 + + updates + +commit 8f94bb5f3e4da1709442bff3fe0204e86fc23948 +Author: MIN-HEO +Date: Wed Jan 6 21:24:05 2021 +0900 + + updates + +commit fd61ad6907a19730169ee1285fed250da1405fc8 +Author: MIN-HEO +Date: Wed Jan 6 21:17:06 2021 +0900 + + updates + +commit c10269c1bc9f1797a1bd38ed2252b8a2fd60cc7f +Author: MIN-HEO +Date: Wed Jan 6 21:15:49 2021 +0900 + + updates + +commit 184edf1c9367df0616943ef71242f2088d7b12c7 +Author: MIN-HEO +Date: Sat Jan 2 10:57:17 2021 +0900 + + updates + +commit 42f3ba4f245ae265a5178d9f8da3ce2b87cb94f7 +Author: MIN-HEO +Date: Sat Jan 2 06:58:59 2021 +0900 + + updates + +commit af2f04aaea35fdcdda359c4cd005e5551ab8e171 +Author: MIN-HEO +Date: Sat Jan 2 06:41:08 2021 +0900 + + updates + +commit 626ff464383ad08fb2a02c1f266c68be932d7156 +Author: MIN-HEO +Date: Sun Dec 20 08:24:37 2020 +0900 + + updates + +commit 373d6befed239190d2c7cd96f3fee4e10f88691c +Author: MIN-HEO +Date: Sun Dec 20 00:05:04 2020 +0900 + + updates + +commit e43abee0399297abd60b2bf95f051ba4545ffab6 +Author: MIN-HEO +Date: Sat Dec 19 21:07:40 2020 +0900 + + updates + +commit eb05edcf93d4e6f69bcc69319f46429544bc113c +Author: MIN-HEO +Date: Wed Dec 2 07:32:11 2020 +0900 + + updates + +commit 039e7863b4064ef25ae525e0888e8b8ef2cbb2fb +Author: MIN-HEO +Date: Tue Dec 1 04:40:56 2020 +0900 + + updates + +commit c92275704bd0bce66670f96cb87334be34f2dfa8 +Author: MIN-HEO +Date: Mon Nov 30 07:38:03 2020 +0900 + + updates + +commit 3277a7f459d44d873d0d24f32f0eb18dcfb8e361 +Author: MIN-HEO +Date: Mon Nov 30 07:33:45 2020 +0900 + + updates + +commit e2a399374a6096dd39f4cc8e32bc89bc347910d9 +Author: MIN-HEO +Date: Mon Nov 30 06:47:28 2020 +0900 + + updates + +commit 7e7f8c0f9898f4c87b19a61fb10f8368abe8c512 +Author: MIN-HEO +Date: Sat Nov 28 21:24:06 2020 +0900 + + updates + +commit 710510209f1b600c321520c96ba12a39fd018f70 +Author: MIN-HEO +Date: Sat Nov 28 20:52:31 2020 +0900 + + updates + +commit 8dd970359af83870bc05c198ed7de8c12c571db8 +Author: MIN-HEO +Date: Sat Nov 28 20:36:37 2020 +0900 + + updates + +commit 1fa948aa66ac104ac9aac15298550e9f237b5d63 +Author: MIN-HEO +Date: Mon Nov 23 06:24:36 2020 +0900 + + updates + +commit 7cd4838b6f7529a442c0b4f3f433b1bb109dd566 +Author: MIN-HEO +Date: Fri Nov 20 22:26:53 2020 +0900 + + updates + +commit 5a01485d8acf4fa331e322203c83ccf8246aa5b3 +Author: MIN-HEO +Date: Fri Nov 20 21:41:13 2020 +0900 + + updates + +commit e0b53f7ecc6553101251b10570fc23e2d2546b45 +Author: MIN-HEO +Date: Mon Nov 16 22:12:47 2020 +0900 + + updates + +commit bf5bc32753127ce1a638a94a6d1e00ee4b1bb90f +Author: MIN-HEO +Date: Mon Nov 16 21:48:23 2020 +0900 + + updates + +commit 0342844f0a30f1f4bb47a1326da7ec882bae8647 +Author: MIN-HEO +Date: Wed Nov 11 12:46:07 2020 +0900 + + updates + +commit b605e9b6732a7ee32c257e35e6db397ca7efdee7 +Author: MIN-HEO +Date: Wed Nov 11 09:34:18 2020 +0900 + + updates + +commit 76d7fa4f9c84f0b6129f11b67676a99c56f514db +Author: MIN-HEO +Date: Sun Nov 8 03:43:27 2020 +0900 + + updates + +commit 1a4588043fd8569d195a2f88cc6c0144b1b43456 +Author: MIN-HEO +Date: Fri Nov 6 23:13:30 2020 +0900 + + updates + +commit d39f65173206c9d3f89bd3cf32c2bc5891672815 +Author: MIN-HEO +Date: Wed Nov 4 00:26:20 2020 +0900 + + updates + +commit 70a1f8b0e0b3070828fa6c4d8ee41fa824ab68e2 +Author: MIN-HEO +Date: Wed Nov 4 00:16:50 2020 +0900 + + updates + +commit 03c971c3986053b4626733d087df38d10de78c3a +Author: MIN-HEO +Date: Sat Oct 31 19:57:20 2020 +0900 + + updates + +commit 31618d3392d808cafa25d9207fb701a730bfcd0a +Author: MIN-HEO +Date: Sat Oct 24 19:43:07 2020 +0900 + + updates + +commit 899e67f840496af23ff89e1426a5386a7ac26fb9 +Author: MIN-HEO +Date: Sat Oct 24 19:41:43 2020 +0900 + + updates + +commit ec8433d3c6d56af417eb4d8f5a4dcc0393cffb93 +Author: MIN-HEO +Date: Fri Oct 23 22:45:37 2020 +0900 + + updates + +commit 3369025ac0024d5ada3e60039c8a88f76b48ba9d +Author: MIN-HEO +Date: Fri Oct 23 22:27:33 2020 +0900 + + updates + +commit b928355f53b2e6682954e88b1db07c06631c21ad +Author: MIN-HEO +Date: Sat Oct 17 22:57:38 2020 +0900 + + updates + +commit f3aec7e8f823827b4e1882fe965c593517bff0be +Author: MIN-HEO +Date: Sat Oct 17 06:05:10 2020 +0900 + + updates + +commit 58507a8a33632a963293d26a0c4a112efda8bbc2 +Author: MIN-HEO +Date: Wed Oct 14 04:21:02 2020 +0900 + + updates + +commit 0a662523260825f27a2567738c4d2b4dd5ff3e60 +Author: MIN-HEO +Date: Mon Oct 5 13:02:38 2020 +0900 + + updates + +commit 37248585913aa68fbdb5eb15cca0b1be6c4aaea9 +Author: MIN-HEO +Date: Mon Oct 5 09:58:21 2020 +0900 + + updates + +commit eca69b58e224860d501bdb3c0e0ce4fb8692eb73 +Author: MIN-HEO +Date: Mon Oct 5 08:33:03 2020 +0900 + + updates + +commit 7c6d4575ce0d2dbf79288439fa0515054fbb43c8 +Author: MIN-HEO +Date: Sun Oct 4 18:22:02 2020 +0900 + + updates + +commit 322de8cd266d3deac022b69bea5e32d43087520a +Author: MIN-HEO +Date: Sun Oct 4 18:11:05 2020 +0900 + + updates + +commit 20764cf015e4f7cbec47afb0f374a53a66fadca4 +Author: MIN-HEO +Date: Sat Sep 26 23:36:32 2020 +0900 + + updates + +commit c9a1b3eccac0a40d18c251b0b54f36abdd8dfdbe +Author: MIN-HEO +Date: Sat Sep 19 16:07:22 2020 +0900 + + updates + +commit d79c7e680b337df621bdd7bbc80fd50a8f683aef +Author: MIN-HEO +Date: Sat Sep 19 14:33:45 2020 +0900 + + updates + +commit b2cfde2648aa75d15269dca140adc56cefccbee6 +Author: MIN-HEO +Date: Sat Sep 19 14:14:02 2020 +0900 + + updates + +commit 47b5d538333a061ad98c586bad24a6e49081d7b4 +Author: MIN-HEO +Date: Fri Sep 18 18:23:05 2020 +0900 + + updates + +commit 2a70472fd8657392814570bbfeb108c53ff4ace6 +Author: MIN-HEO +Date: Fri Sep 18 01:08:24 2020 +0900 + + updates + +commit 91fd8b270228eec354332413e11fb8e3ab518d7e +Author: MIN-HEO +Date: Fri Sep 18 01:02:40 2020 +0900 + + updates + +commit 1ac855757dfa197f9d86a96e45caf7a62f859fa6 +Author: MIN-HEO +Date: Fri Sep 18 00:53:27 2020 +0900 + + updates + +commit 791ae0e61d0ad9e7fa6894f1435993153337ff9c +Author: MIN-HEO +Date: Thu Sep 17 22:45:40 2020 +0900 + + updates + +commit f93d6e174d878717f9d9be17f0b6f6d96b802a77 +Author: MIN-HEO +Date: Sun Sep 13 01:41:12 2020 +0900 + + updates + +commit 30ac0ddab16b8a22c1ad9c2c610c3ec52218ea42 +Author: MIN-HEO +Date: Sat Sep 12 23:52:38 2020 +0900 + + updates + +commit 72f47eda1d8ef0837803eb5fd264aaeea726cc5f +Author: MIN-HEO +Date: Sat Sep 12 23:41:55 2020 +0900 + + updates + +commit d87b9c0af60d88712b73d312d757405863ce3cef +Author: MIN-HEO +Date: Sat Sep 12 23:40:28 2020 +0900 + + updates + +commit 2d49f8b304500b4ca0fb61227d1ecb134b69ff2d +Author: MIN-HEO +Date: Sat Sep 12 17:56:25 2020 +0900 + + updates + +commit ec594a6baf0db8acee68dd6ca4e86483b2120683 +Author: MIN-HEO +Date: Sat Sep 5 21:04:58 2020 +0900 + + updates + +commit 55ed7c350485dfb48c4026a46c2f7b173239e331 +Author: MIN-HEO +Date: Sat Sep 5 20:14:30 2020 +0900 + + updates + +commit 8862f36f2225d97f223970745060eaf9008e28ee +Author: MIN-HEO +Date: Fri Sep 4 22:39:54 2020 +0900 + + updates + +commit ade5e5940f84177e219e17d3e120b54e44608040 +Author: MIN-HEO +Date: Fri Sep 4 22:32:45 2020 +0900 + + updates + +commit 11c31710a3af909cd9e7cc978969911b5a90a0e0 +Author: MIN-HEO +Date: Wed Sep 2 05:40:20 2020 +0900 + + updates + +commit 269b9ae20e64c38ae1aea83ad5f62ba5b1522467 +Author: MIN-HEO +Date: Wed Sep 2 05:35:45 2020 +0900 + + updates + +commit c1fc7307de1c5647005f161f27c6e19b8a2038fd +Author: MIN-HEO +Date: Wed Sep 2 05:22:44 2020 +0900 + + updates + +commit 95203466e207e70560e7e80a561497f77bf5ede9 +Author: MIN-HEO +Date: Mon Aug 31 01:20:57 2020 +0900 + + updates + +commit 753b225ce49393b7398c7bf3378ea7de20fa545e +Author: MIN-HEO +Date: Sun Aug 30 22:06:44 2020 +0900 + + updates + +commit 95c680fcd4288dc20b77f149cd4761f756894c5c +Author: MIN-HEO +Date: Sun Aug 30 22:03:46 2020 +0900 + + updates + +commit 91a283812032cdb23ca0e26ec1083d1612cc3b5a +Author: MIN-HEO +Date: Sat Aug 29 20:50:53 2020 +0900 + + updates + +commit 744c94362e8c44e442d1ede11f152b8f1b32988c +Author: MIN-HEO +Date: Sat Aug 29 20:48:10 2020 +0900 + + updates + +commit fa5e8f40d37df6286bbee528b8fe63d913d4cdeb +Author: MIN-HEO +Date: Sat Aug 29 20:43:23 2020 +0900 + + updates + +commit 65d1645d371533d8f55714c757cc79eb8badbcef +Author: MIN-HEO +Date: Thu Aug 27 23:29:40 2020 +0900 + + updates + +commit 21fe8dc7fbeb08063481a92f2dcc4e6f603385ec +Author: MIN-HEO +Date: Fri Aug 21 22:38:10 2020 +0900 + + updates + +commit 1940f3e24a33f999ba3d729a13aa80cef3a7db98 +Author: MIN-HEO +Date: Fri Aug 21 22:35:44 2020 +0900 + + updates + +commit 6f7961697f8daf1d5659eea1f9321b7017e759cd +Author: MIN-HEO +Date: Fri Aug 21 09:29:16 2020 +0900 + + updates + +commit b5a6e2b6e9465c6d05cd1b2753f93e5664de5542 +Author: MIN-HEO +Date: Fri Aug 21 08:07:25 2020 +0900 + + updates + +commit 8d4fd4b5956066fe38b61c01dad6d26c9a7e464a +Author: MIN-HEO +Date: Thu Aug 20 02:11:34 2020 +0900 + + updates + +commit a3c53241f6c99de3515c007b33c61d94248456cb +Author: MIN-HEO +Date: Thu Aug 20 01:33:18 2020 +0900 + + updates + +commit f5b3f797c433418b0fbf736d60e461afe6488dfe +Author: MIN-HEO +Date: Thu Aug 20 00:20:34 2020 +0900 + + updates + +commit 0b8630a176fc199203ffc3b3bb7acf38b6c9ec8a +Author: MIN-HEO +Date: Wed Aug 19 11:35:42 2020 +0900 + + updates + +commit 133c7236185c82861b0d78651421d5b5ba5bb3b4 +Author: MIN-HEO +Date: Wed Aug 19 08:07:09 2020 +0900 + + updates + +commit 224c8db14e4c17af932cae330df5c97814761719 +Author: MIN-HEO +Date: Fri Aug 14 21:48:54 2020 +0900 + + updates + +commit 1b60c35d6df532421e6ae04146127ce009e3a8e7 +Author: MIN-HEO +Date: Fri Aug 14 17:36:47 2020 +0900 + + updates + +commit 0841002fd353128c71f094c0f40fb52630774fd3 +Author: MIN-HEO +Date: Fri Aug 14 08:22:47 2020 +0900 + + updates + +commit 7624e988ae795f21adebe01e7567254f35c367b1 +Author: MIN-HEO +Date: Thu Aug 13 05:21:20 2020 +0900 + + updates + +commit fd7d2e1ff810f2b4bc6d5b7a24bcdff4d71e7d08 +Author: MIN-HEO +Date: Mon Aug 10 20:56:00 2020 +0900 + + updates + +commit cb214f5fbd044a875555fac76b52bc8c53eb6d98 +Author: MIN-HEO +Date: Sun Aug 9 20:39:48 2020 +0900 + + updates + +commit 4d918968fcc26577851ee7078e71003cf5d72d75 +Author: MIN-HEO +Date: Sun Aug 9 20:02:34 2020 +0900 + + updates + +commit 1bea542aa5650390519e8bacfbb20228d67b9fdb +Author: MIN-HEO +Date: Sun Aug 9 19:35:02 2020 +0900 + + updates + +commit f167f580826548d592f2bfd4d45c62be99654636 +Author: MIN-HEO +Date: Fri Aug 7 21:19:44 2020 +0900 + + updates + +commit 9d176cf8a018abbddf4c2f6883e21136e5dfa017 +Author: MIN-HEO +Date: Sun Aug 2 21:12:51 2020 +0900 + + updates + +commit 2bac8b684ab1316852a922abca2fc09110af0eab +Author: MIN-HEO +Date: Sun Aug 2 16:33:21 2020 +0900 + + updates + +commit d793a32da1d9df6f27d069277be58c8a09c5f3c2 +Author: MIN-HEO +Date: Mon Jul 27 04:32:41 2020 +0900 + + updates + +commit f991f92d3b35045d6f49b1bc95a6a14e1eb8e7b3 +Author: MIN-HEO +Date: Mon Jul 27 04:23:58 2020 +0900 + + updates + +commit 631b62280655dcdb4d38d910aa9a8ed588ac820c +Author: MIN-HEO +Date: Sat Jul 25 22:07:01 2020 +0900 + + updates + +commit aa57eced79b4940114c433882217269af00697e2 +Author: MIN-HEO +Date: Thu Jul 23 21:23:13 2020 +0900 + + updates + +commit 74a3868defeafd9e56138100b07c1135b484d79c +Author: MIN-HEO +Date: Sun Jul 19 22:07:03 2020 +0900 + + updates + +commit 556080e310d43495a95bfb16fac8f4901f26084f +Author: MIN-HEO +Date: Sun Jul 19 17:09:20 2020 +0900 + + updates + +commit f9ae174ac6f3d51e8a12441846f6c02ab2ede189 +Author: MIN-HEO +Date: Sun Jul 19 13:00:07 2020 +0900 + + updates + +commit 7efe5715469f89e725d03d98a23eb8588359a308 +Author: MIN-HEO +Date: Sun Jul 19 12:48:30 2020 +0900 + + updates + +commit d8e82f54cde7be20c5f28653427684fea000ede9 +Author: MIN-HEO +Date: Mon Jul 13 02:30:41 2020 +0900 + + updates From f0ad2bd432128db39bcf807ee0bd1cd1ca77e663 Mon Sep 17 00:00:00 2001 From: D-Gun Date: Wed, 27 Jan 2021 23:27:53 +0900 Subject: [PATCH 13/59] giveup horizontal line1 --- _posts/2021-01-25-think-memory-structure.markdown | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/_posts/2021-01-25-think-memory-structure.markdown b/_posts/2021-01-25-think-memory-structure.markdown index 9d7099375..26ad00e25 100644 --- a/_posts/2021-01-25-think-memory-structure.markdown +++ b/_posts/2021-01-25-think-memory-structure.markdown @@ -24,8 +24,7 @@ header-img: img/post_img/memorytitle.png [Heap](#heap) 이렇게 4가지로 분류되는 영역에 저장 공간을 할당해 사용한다. 개략적으로 그리면 아래와 같다. -![Memorystr](https://D-Gun.github.io/assets/img/post_img/memorystr.png) -=== +![Memorystr](https://D-Gun.github.io/assets/img/post_img/memorystr.png) ### Code - 코드영역, 텍스트 영역이라고 불린다. - Source code와 함수, 제어문, 상수가 저장된다. From 58416392db929a352652fe14a0c8fd770d92dc21 Mon Sep 17 00:00:00 2001 From: D-Gun Date: Wed, 27 Jan 2021 23:38:10 +0900 Subject: [PATCH 14/59] giveup horizontal line2 --- _posts/2021-01-25-think-memory-structure.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/_posts/2021-01-25-think-memory-structure.markdown b/_posts/2021-01-25-think-memory-structure.markdown index 26ad00e25..eafe9b6a4 100644 --- a/_posts/2021-01-25-think-memory-structure.markdown +++ b/_posts/2021-01-25-think-memory-structure.markdown @@ -16,6 +16,7 @@ header-img: img/post_img/memorytitle.png > - https://velog.io/@hidaehyunlee/%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90 > - http://www.programmerinterview.com/data-structures/difference-between-stack-and-heap/ > - https://goodgid.github.io/Memory-Structure/ +- 더 자세한 사항을 보고 싶으면 위 링크를 이용하자. ## 메모리 구조 프로그램을 실행할 때 컴퓨터의 메모리는 데이터를 [Code](#code) From f048f99506317dd1ca886a350bce6046ebd07660 Mon Sep 17 00:00:00 2001 From: D-Gun Date: Thu, 28 Jan 2021 14:40:23 +0900 Subject: [PATCH 15/59] horizontalline test3 --- _posts/2021-01-25-think-memory-structure.markdown | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/_posts/2021-01-25-think-memory-structure.markdown b/_posts/2021-01-25-think-memory-structure.markdown index eafe9b6a4..a520c3665 100644 --- a/_posts/2021-01-25-think-memory-structure.markdown +++ b/_posts/2021-01-25-think-memory-structure.markdown @@ -10,13 +10,13 @@ header-img: img/post_img/memorytitle.png # 메모리 구조에 대해 알아보자 - 아래 링크된 글들을 읽으며 정리해 보았다. - > - https://genesis8.tistory.com/181 - > - https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/ - > - http://www.tcpschool.com/c/c_memory_structure - > - https://velog.io/@hidaehyunlee/%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90 - > - http://www.programmerinterview.com/data-structures/difference-between-stack-and-heap/ - > - https://goodgid.github.io/Memory-Structure/ -- 더 자세한 사항을 보고 싶으면 위 링크를 이용하자. + > - + > - + > - + > - + > - + > - +


## 메모리 구조 프로그램을 실행할 때 컴퓨터의 메모리는 데이터를 [Code](#code) From f492b284636262af3e8fe1e38638efdb0fa23053 Mon Sep 17 00:00:00 2001 From: D-Gun Date: Wed, 7 Apr 2021 20:59:21 +0900 Subject: [PATCH 16/59] img change --- _posts/.vs/VSWorkspaceState.json | 7 ++ _posts/.vs/_posts/v16/.suo | Bin 0 -> 20992 bytes _posts/.vs/slnx.sqlite | Bin 0 -> 90112 bytes ...-03-17-java-class-instance-member.markdown | 92 ++++++++++++++++++ assets/img/post_img/memorystr.png | Bin 165158 -> 163091 bytes 5 files changed, 99 insertions(+) create mode 100644 _posts/.vs/VSWorkspaceState.json create mode 100644 _posts/.vs/_posts/v16/.suo create mode 100644 _posts/.vs/slnx.sqlite create mode 100644 _posts/2021-03-17-java-class-instance-member.markdown diff --git a/_posts/.vs/VSWorkspaceState.json b/_posts/.vs/VSWorkspaceState.json new file mode 100644 index 000000000..aa7a73316 --- /dev/null +++ b/_posts/.vs/VSWorkspaceState.json @@ -0,0 +1,7 @@ +{ + "ExpandedNodes": [ + "" + ], + "SelectedNode": "\\2021-01-25-think-memory-structure.markdown", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/_posts/.vs/_posts/v16/.suo b/_posts/.vs/_posts/v16/.suo new file mode 100644 index 0000000000000000000000000000000000000000..9ed6b910901885634a7d202065907336b33eb80a GIT binary patch literal 20992 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 literal 0 HcmV?d00001 diff --git a/_posts/.vs/slnx.sqlite b/_posts/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..2902ad4ee5b6ec17e254ee69bcaf4fbe227d30b2 GIT binary patch literal 90112 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 literal 0 HcmV?d00001 diff --git a/_posts/2021-03-17-java-class-instance-member.markdown b/_posts/2021-03-17-java-class-instance-member.markdown new file mode 100644 index 000000000..3747949af --- /dev/null +++ b/_posts/2021-03-17-java-class-instance-member.markdown @@ -0,0 +1,92 @@ + +--- +layout: post +title: "Class, Instance member in java" +subtitle: "member access" +categories: java +tags: +comments: true +header-img: +--- + +# java에서 class와 instance의 접근 +- 이 내용은 생활코딩의 너튜브를 보고 정리를 위해 작성하는 것이다. +- 자세한 내용은 아래의 너튜브 링크를 참고하면 되겠다. +- [생활코딩 - Java - 클래스 맴버, 인스턴스 맴버 (4/4) : 타입별 비교](https://youtu.be/AiquVwHyeGQ) +--- +## Class? Instance? +- Class + - 추상적으로 분류되는 한 부류를 의미한다. + - 외제차 M사의 E클래스, S클래스, B사의 7시리즈, 3시리즈 같이 나뉘어지는 부류다. + - 한 객체를 생성할 때 필요한 설계도 역할을 한다. + - main함수에서 생성되는 객체(instance)는 Class에 작성된 내용과 동일하게 생성된다. + - 식육목 -> 고양이아목 -> 고양이상과 -> 고양이과 처럼 나뉘는 부류를 일컫는다. + - 위의 글에서 고양이과는 고양이상과를 상속받는다. 자세한 부분은 상속에 대해 이야기 할 때 다시 다루도록 한다. +- Instance + - Class에 작성된 형식을 바탕으로 생성된 객체를 의미한다. + - 고양이과의 클래스에서 생성된 누렁이, 점박이, 까망이 는 고양이과의 클래스를 바탕으로 생성된 인스턴스이다. (여기서 인스턴스 명은 누렁이, 점박이, 까망이) + +## Class 멤버와 Instance 멤버의 접근 +- 아래 구문에서 Class멤버인 Static변수와 int형 변수, 이 Class를 바탕으로 생성한 Instance의 멤버로의 접근에 대해 알아보자. +```java +class C1 { //클래스 C1 + static int static_variable = 1; + // 클래스 Static 변수 선언 + + int instance_variable = 2; + // 객체 생성 시 인스턴스 변수로 선언됨 + + static void static_static() { // Static 메소드로 Static 변수 접근 + System.out.println("Static 메소드 실행, Static 변수의 값은"+static_variable+"이다"); // Static 메소드에서 클래스의 Static 변수 출력 + } + + static void static_instance() { // Static 메소드로 인스턴스 변수 접근 + //클래스 메소드에서는 인스턴스 변수에 접근 불가함. + //System.out.println(instance_variable); + } + void instance_static() { // 인스턴스 메소드로 Static 변수 접근 + //인스턴스 메소드에서는 클래스 변수에 접근 할 수 있다. + System.out.println("인스턴스 메소드 실행, static 변수의 값은"+static_variable+"이다" ); + } + void instance_instance() { // 인스턴스 메소드로 인스턴스 변수 접근 + System.out.println("인스턴스 메소드 실행, instance 변수의 값은" +instance_variable+"이다"); + } + +} + +public class ClassMemberDemo{ + public static void main(String[] args) { //메인함수 + C1 c = new C1(); //C1형식의 객채 c생성 + + //인스턴스를 이용해서 Static 메소드에 접근-> 성공 + //인스턴스 메소드가 Static 변수에 접근 ->성공 + c.static_static(); + + //인스턴스를 이용해서 Static 메소드에 접근->성공 + //Static 메소드가 인스턴스 변수에 접근->실패 + c.static_instance(); + + //인스턴스를 이용해서 인스턴스 메소드에 접근->성공 + //인스턴스 메소드가 클래스 변수에 접근->성공 + c.instance_static(); + + //인스턴스를 이용해서 인스턴스 메소드에 접근->성공 + //인스턴스 메소드가 인스턴스 변수에 접근->성공 + c.instance_instance(); + + //클래스를 이용해서 클래스 메소드에 접근->성공 + //클래스 메소드가 클래스 변수에 접근->성공 + C1.static_static(); + + //클래스를 이용해서 클래스 메소드에 접근->성공 + //클래스 메소드가 인스턴스 변수에 접근->실패 + C1.static_instance(); + + //클래스를 이용해서 인스턴스 메소드에 접근->실패 + //C1.instance_static(); + + //클래스를 이용해서 인스턴스 메소드에 접근->실패 + //C1.instance_instance(); + } +} +``` \ No newline at end of file diff --git a/assets/img/post_img/memorystr.png b/assets/img/post_img/memorystr.png index 3783fc9c04f5ed7f2f8788b54f16c8beb01a32a5..41c2e88cc0a3636954dadbbda172c6de5ca9e0e5 100644 GIT binary patch literal 163091 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≻-^_qr6)@(C$RhCO!8f}B5kQr= zg#KcMKqwylx6aCw1*2$B8_${-C*gZ_mkp*O3}>=mgC}EWC>CzXf&x_n3qD$m=5dBi zX+iP02FP$;FVcOq#gtp=CdXPMyL0UyY^yA@vZ-*x?gzHaa^ZEHY|_BY?ZIing1&Sb z{aTFsM9sZ`QGZ#!qtkzm*O!$>VHyWjzJnt-0{ofPKPY$WKw3Vr91{q^0QdnHhvtmNaHP?Y2WuRcwX1arAf!R0d# ztnevm4Zhk&A0&|n-VuMkUm!TT=k{;q&TvnUzeVEU9@ppoA#&%*$NPlAKBQSk03}*= zl-Fla95l{=Nzy#vWohw%h^yd^G$+@eaR(>805kYcfftABmOh2|3`xjL-{D85!3c&T z+Q;QRjbVP-u9W)l0^Jg4)}smTeXmCQ^WMnGSbd8mi9W2Yai;kqnO7tvyBUXt6$x`| zI!#dy+EG

$`yPe%PVwpEUuX>TejDxZI_n(2J+r_#XMKm+o_#`cEq-I)c|?Y~?Y1 zC=fY(RwL#o6mN`Tgg?=^UN>G}2nuyRQ%}YeS$kf^Xky4ANeM5o)H0W!D3ZY3B&+WT zrze!>I^<=upDW8JYih^*k6{U@LjdG7+i-4DtYMdzBlE@uqgxMpxa5R&Z7bv%fr)iR z%{SGTpj7X5{1K=s-uQgG7b->>t~;moTqs)~7LMjE>0yO$tSZ;aU57@By%DGu!b^b| z&!HQYo^Mq2P6(TtI_Y^#RJGTEFfxGyd{}JI41l>QCA6bh&CHk}Q)-ghKMkDY+>oU` z-%qEe`Sr=-kDTO9&7!|CeG61o;-eTxnX~R{K1BE~;yP+ScV>X{1CwxV#&zjch0U}7 zlsM!*j6T38sxXiN6B$tKUF`ijn5@x-lsqC6E``(W?NsWOk=c(T#{xY z(d*Y6lI@hut|Z4hPJN>Z!$#a`AGCi8ke<%vXB3THM5s_A_H-L2Uf2BBy z`QKTvTmU5rG~Am^taK*ql=L!4w+GJh4U%j=&3TmnL$lI3x+{#K3> z5UN#XHNg(c#H^?&^TN|sX_7e;3D*}&b5J+!sG}34DA|Yr^!^v-@zh={*M6@}@e5ZT zm>$9c_de_PPaJ2p$QmRz90^5Z&i+k|9oNtrLC$SuxpML1D`W*@1Oph8@eQZ|OM$n^ zqwd74xUC_3vxVzsN&>jI)$%NdhqsaAazD!8$d|pOw?M_EaQ@M0j9zWhU~h!0+1sQ> zsrGAhbb6RZ5pcugcYzFu^o3trPGzK)+-%H!BQBw$yY1S(It#oDB!;5fJCe7O-Rw

F@izR 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 C5RDK3 literal 165158 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 bE^fX1ZZs-IOj)snf&d30jBo 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 >e_-wD3I4rM*wKLidH7VVi_X9) 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

SQQ+(zu%|;G|7=u>AB5` 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 U>8Ed#=kGoY=NIEE Date: Sun, 20 Jun 2021 22:38:21 +0900 Subject: [PATCH 17/59] =?UTF-8?q?java=20class,=20instance=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/D-Gun.github.io/v16/.suo | Bin 52224 -> 52736 bytes .vs/VSWorkspaceState.json | 6 +----- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes ...-03-17-java-class-instance-member.markdown | 13 ++++++++----- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index d052f933dc3e415c629f3eaed0e59a90ff1d651e..4f0d63832db40bb0c5f0365ab924f43f6ace2652 100644 GIT binary patch delta 2846 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 diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index abbe48f3b..6b6114114 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -1,10 +1,6 @@ { "ExpandedNodes": [ - "", - "\\_featured_categories", - "\\_plugins", - "\\_posts" + "" ], - "SelectedNode": "\\_posts\\review-book-beauty-statistics.markdown", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 536fdb7d51c41fb93fa4434974f1ec5952069e86..edd3870886a8e4ae6ade014ef4ff6736ec5a5a38 100644 GIT binary patch delta 28507 zcmb7t2Ygh;_WzxkTesXzNN*$ok`ThClMs@Sgd!kaq(}>CKp>4IbTI60R@A2yqYOR^ z*t>urt0)5cR0L^0p9Mw3v!Ei)@+_$Q&%Jl=-Me|e&*%U9ebC*V@0{r~=bSk+bFyx` zW8HSgrZ{wdbNq00e%HLYiD+=wfyAg@1}26rpRNP5 zO6kOfh|3ry|HyX9m_tK25*M16 z+0wKCHv+&g4)}i%eeeUE5C^{?RbOnRTGWOCD~1Xv74Jjue2R!l+3|Gy3n`}a#f*7j-cODJVSol&Lg7qz8lDW97$Kp}qUy8z_yL*E7p9`#6;ILr?gj8}ANf{m^3?G;mRN zDDguNYfz@e8G?BRLBD1jNGS3XJ+4691v%5%>xG?Y=Xkq=S-@ODwqG1yIF2}W+E&@l zI<`7omRQF;$4H0M5h?#JpO9aa?~_-_bLEk8h8$x5*?!vgu6?h4t3BCvr+tBaq9xlt z#P*VHJDo5Oy(@g2cag-sT|twpP?`~#2m#3-GjKkgT!ngfZCJ`%pf)P?z&aI^)wNTh zqg^K}0;y_L3fi&{aaMz3V6~Rl!D(i&O3N%)S%?NH-CT|O8x=Ze4qSqOUOVR;dZijA z(vX+TWweb)%1O~uo@szy4y=8O>Z(u=1l z2%YD^yr}mA-BpVU41ycgB;7MOYq?HPJVi~kj+hd4RgMg#nXJYSWpSXM#gi0F&Q(^h zkr7Rtj|%mYN+!_c`6#n%!^%LalJP1g=LaS0I(c0n)mSan&{0O4O0L(SlQT_qE*Ycc zq%y-m1x_tM1;!Z33(;u3Hsi0OAq!Di*TmI<+KeBmV)Vj7WE3`jghp33o0H1)4(h5H zlU3%QX(7XS#(_k>b&wt#TER1+fHXD)pmGhW4M1Hx#zX+)QfF)UP@ai`6zvP^n-=%e z^NA?snHVK!RoobGR0+={0Nm2t)?QiPxWI@A2WAn&hYW*zrxgSRG&Vy)?d|h3^oGRd2FJB6TVTX> zImQ~D8JW#9aZp)ZRO#uXvXmzKaS+t$dPH<4&m=-bTl>m}Iz@!{)ngKzJd>`()HT%A zwAVw07PU1u8PTx=wHn<}S5=!derR20`-*lWGCV^Y)A`L!?SUMl2WVxfm0Q@}*kI6i zogEu)%+!zu6sb>+xHO(gfl4f^Yi-l3pmiT`#n@D(3NUl(Tb9U?RapOq+2{ zD7M(oQ=&nqQF0qMX86bnQ_N|iLA6n0>YHloRs_|6KGcNz>FtXJ-6jRdM%6XWuZM-v z&|I@vuWAJ7IB|hE9gYM&M;YJwb#=Ao`p1B>qjZ&tf9OdPLFvhYsOr|{oOPAx7ROdYHqF5Q$&Ggqx52C zU0XwaQ+r_g#esg4W<)r8B-_%0zB79GN(&lf1e{Auf%+w=z~b+Frz?ZL+J+KCixjC{ zpjW`@8lb_0d%)=$T-XEduflX4Xbv`0CTSY=pdQqz8uf$sA>JA&F-0TJ>p|R4BMx~P zaSkKvOc$*CvGhP2N(fhV9a9V}d@Y6^1eHbB3&?cAa`Z=ZKxUGWgudK{(v7bAwhax| zd#A+Jn||MhGDCyAp~RJ-!NJ{7;)+*cns~pdVI{6OjX1a$N?frToFCNQ5?73t2ke|o zU0LFaR$;_E=7ZlnkOwonR?B0T@kcuIqKJ==DDtL6_$f*P7een?WNMtn{P2S zBi9wGp_7&)!6a&wUmjpABxI$1+6nbZBb92Faxl&vrYToBM3QRcF2S%GpwRn^!S zt}>UTqQU)H<`PvjxI4>Sf`ZchE0GY$l~=KACam1W(T7%}+@Ae1X%#Bb)0Ml3O4GGt zvT0<>U06j!g9|QqAr+<*RtHKhcQINiJw|ccYEuWCg@CU5m9153+SR+257DP_&KjPX z3^JB3aiREd*oT_uL*{B_iidWfgs>t-RT`$J%3Nhc3=WQ1X+#tTN375zx;}5^?M6n+ zbvSHLF#R$kLRFCiMK9GO=+4`aDW`TF4^dTdBSBUheW(K^cRkn^(08+1Rg88#4O^1{ zC{*Y-#3YwT0)nRda} zZQEzN+ty?oZR=zG!}@`Br**w`k~P}WZF$1dWEmv=A-y5pF5Mu-ivJd$7F)$3A{LHt zFLAeWH*&G;*X#@I&2khwt(UM(Xcxu^z4;&c!~6q$D?iG2`#SVGj_He2 zfwW=snGkxD2Nl!%J!osH?EvFolNlw(FHl%{9K%}JFoYpl5_u(!9gpbqkDz3FQzr_c z@7{sl@y+f;y}=p-77pK^UNi`iLbj1^-iVyOH}6Enm~PmJa(p%G(HTO=d5{DK5wwSP z{|)u04Sz#cw2pQ^i=09!^G}Evr$*S+Wl_q!2S_wMbtl-5p1uQFFw?CB@)eWHlPYY} zxEJ#`Kw438V^=>=(nv`D&6>LdOoo)*UPY5Vw%d@WzZ%iI?*NIC59>=E|w>>_pu z`IJ0D7LgqME4~ZgTkm#y3ri~vy?>{LX{_M#LzE{NGV7-S8&jY3tw7 zGWx_ebQ4{7AL{Mn??VR>-F!cCiW)y-wrU}bCo$AF_W?8pcUaiRnBk;_CELiIq=U4` z(d2nHgH0l5xL>$K>^l29>@2px{;0jfKGQzP9%4Ihd)xMit;06UR%i>eUa}swJ_^HA zWF?k&E%#XFTGFJ;(#w)Z8ZSkOXT@j4rDB;Vaa~*;m&aaZ-%*Cnev$ZuZowyP5JKyO z5+RKLjz7e2I#EA*^ilMlk35c^LG5xZIt}^x4D9O{Ts*qsb*MMhHrV#}@##4Zf=(;jF!>a0H%$*RHl`su?UbCWpq{ga~ zU!D68)5*`HT*U_3pv(=WavAi4XHgOKc_cFqKhHSUImSC;<#X~L*(Lo=nlDvI@#3%I z`{GXV4soG8M=p{h?0s!N*bdn?*(zbG@3D86ElXj2E60I)zz6t|0NOj%sT!B=Jd1sV4a-Vhn}Pp4j`BE(T_g;3g`)0ZzB#fANzK_g7#z8ge|E2 zgt<=%_4sa@r+W)01H-K2JvzK%+aBG*Ac*HH>x4O`wo>GYDB`p?%5@0hBnuUi9<|POEudHa0Scu$PDaXH*L)SG7wy8?1O527 zOyslPLfHX|St>=SCV%vC%6H9FVa=dv)O*X@COcgz1oUi%xTe$cx6wd2OaYzDpdaFz zroq9v4{=RZ;U2luoWrQlXh*X-@SHht{;;XJS?`$AG`?dV$_cdP9hBa)khAZgV!M9_ zIKnlKXO`0?N05^q^&nfo_`2u_8a+<8`?;=Hj6@QzHm*ePqj1+44OSaxf=6qxI&ua~ z|2l%Ajm9M$Me#HEs#iMO7uGqKSFH>xEY1by zPQ{{C-CXT#ZEmYmMmA8$B(_$!eo$-brq?wtg7h-Ov{gH zKNFm%!V#(_ZouPQxdH<_qnzWYh;~oFe26J3$B62cqnfgfxUsHmHMb7+kj#KB`IO^f zN1J1WBLW2AOY&{>^t?#ar=po#-u_IekVL$<+pM4C%!19T5 z)Y~DlwtXNjD!xU1NKRfRJ@q-tqUe2;M$3Ojyzk^cQKX=xrbAC5(RckP2+kenDCB8u zDH_bE2ZKI17`y^nka#yUn%u&OPT?2fkU)h-VYm>(U*g~7@8g&7qxfX*ckZ9ubKH8z zX~!O}iYw+K*h}o|?A`1Fb_i@4y2);Gi(|cGrXvf~)Q{!oWsf{VcFNfPf&D4iOiZ-* zvHfg2Y`YJ(5*4;^>o=g*Zm?Ea^Q|JNuQ590}AwqD2~4MZxq9FZJ>WH`3NP&AS?V1(}ZrWGq=F082RO`ObK=UhWgNoI$A1V|5DMJcD%e9* z6}YoB+VUSw^`7t}$_>=psg?NIXJ$Elz(i8u&Y+WjM*V^HnB^DE`6-Z1fjeELq1VoX zdCHJ+1@8VDeEcVKUDH%hvy7N%Q#D#xLILqT;b(Ip{WOa1?}K{hpowOXyN}wQo{}x+ zKPI{EPNE^dfaL%DeRG?)1(EdDNUr_IR2lm(=1k%>ipF08P0M%3Y2d+snRK;$cdUx` z(3}d~G4$lGsJ~`nHT6TZ3e)kw1~M*iM`^UdT2_HOQlmWpw1yZs_N%$i!ZnJ-FN6B5 z>^Cz_FO^0!A{rH;yM7C33AzX@sw$%7Xp6CaW!+_6YaL^au$;9#XIW_(X$h6iNKZ*Cq)}3&_?5Uv^oSG1IN_YITj&s` zy|@A|Aj-b_rmoPL{ksmXP%a>$R3$*+9zY;u)ouVxQe$&gX6t0>q60DcU_8mClV#k` zuNj~ryQ@|##sY|(Vu%ae4)Q%E;2DBOs!csmmO!GuJIumwX9lq!$eJz5G1$S&@5_$> z&?;BJWs=YB&)e7X{kZeo3*1WR1A+g7e_9+bzAjy~mfFYKV{GT>&=8#KYY)K}2y5HU z6nC8+nMUEV1Lv3mLD&f^SH$4g5G4Yd%2{rJkfh?On4}lOF;BNg;v(7-fpckg1U|1^ z6YDCQ&07LlXp!q|7^LGUEzl8-1(kB*YR)$|3MV6rYL-Bw2a`5hA>e%9{%HIK98@vP zDCm!iF*t)BOvHk6eXK&OS)MZ|&l!l(esyGEj{X*p^VJIO9zP=$(W$-h@vhdHwOf+# z{t&-HUF-$}aUCes^i%~-iwfR76}#I4kpoQ|+45w3y|EBCLmqLkN3ra?Wnt+ zp6ZKJX;y*hRtqiZhbQY?WvY7tE$fFz(a-wf0N?pOh@wuT*pOnPxIZP3M}@nFcBJAw zdZ`cxct(Z0T0@&sP3hL8;=tzmU@9J}SESfoxurjL`mf39{Zj0ntDrr(n=1_mwzdb% zfj=RjXF1qClV0kN2WY201|J&izDb4U;DMvN`r~|~8^4D@AfIVkKEb0h*gaK+>Be+Z z10P5aRG`>Bg>FyB&K~xeV)qRi96UFQ-IGn0mL^JyAt_&V|qn zQ_oB^2kwM`-lAgnSh^_#Di&;DD0W}3!NCnJc8}5EV0k#qJ(`|%;`|;0ZkT(N3R7SL zCOeM985rwf?vYx`U;#1AJwi))(rN0@&w>&T(-H>PdziaIOSml)8;5hl+~pc=aIN#) zWvXJ{!}^rx9;)f3s8+oJYt?SR<{MXH zeaWS`7E@8e-Gfd*namSLBs)A>3=+ZC_%~vR$w}WSa`M-~HAl z>>}%RmaCS%mL-;f(mCm2X%6hgzXoCJhMjnC;d^19aGNkgNaKIwkHTqFGhfJEbd(CmuvE9)^Tgq{`Z(TWlg3#m%xESgTHVS5^m7Wa68C{d-4rd+ZOd4EI#C_>W zxcsc#fQHM?voYs8JpzaGbk|rsl9uyRJlqJ(f`GoBMtO4S+{qvs;U=+Z&R;Uq7u|pjL9Gc+(_r-!)C8xhFn#{UKxMN$DH_-fpi#ezH{yV@oir62%67J=4^5ti`v5C8 z*Du?Xtih_u$tW?~lcd5l=@v65%=RQ|aL6=MnZ2jsfkp);LqH#tY)`zFxoT4~GSBkF zX|2>QUh8bO!V^ogr-KknoNmh8Io%|#mOwzyyuuTulEe1d+@K0iq?Sw83{x(pGjQM{ zh$ozu&%l{<-mT`gm3YEb7`C|P{7O8%G+4E=8Eq)>glceb=_Q^J6$YVT&V>4I!cL=$ z&fkPb=&cy-vD1q;;UV<+Li4Ln=!I5zz_^K(D|M_bR%1F0j<>QP_M4 zB39zUfc6RZ9|GEEu*fTR!!3wFWUxk3?1q~VTI47^u)`RA3wsb4?=1{_3$WZWnX~^B z?2yg&QoGgmvF#b#T3d@!Q4c%7vW5sHb0RYkVJ(dg4ZbMx)Rt!d|v{I<=xB! zN>mX%mv{jJbCf^~tH01FqF>hH;l2|MIETbJo>@XCufSOmIl+Tm;hC&Q(K}aSQ6H^x&m^^ko+9M)m8OAD zTxAMWngiR+fzQo>#MS0B=D;>{;Pcfc(Ga&LAR3B1BWdq7IHL!zAM6=HPpttR?%*0z zj~riP+P!&(X%v$Vn0j)sr$R-0POXl$rcL0!wRni$F=d{iwESk699cJ;3M#!B2W}sB zm;;9(5J)>jOWS?BdFabLMJn7whbZ$5*5Kd~%l8!0Gm~)Y%;05hu{AQe{1gUGY9ipu z7lr#RC05Duf#nfPi>1`UNynsnK;upkuZbUtyTseY8nHyZwscr{SXd)W6SCnF(wDID zxRswmN3VmIcrEL2U*G0+_!hqT- zSp9uyDvr0R>LYqc2Ox60{yW~5mkDgVOxqICs*NBlMt0)6xh`krKpH*~4}?}S1->PB z;LW6C6!R5-I81s}+9v%S`fZcslP+6s;4fIlTSi-kTZUTx30t@CE$1x%w#C?n$w%e4 zq;SbD@!~bx5L=!t z#D;B>Z6It3uUdbyUa)>`{oMMIwd?13<@CTNT*TXY%T@AB`s*e9#;WbiU$0WQ>O0&V& zgTA`^@y}?2k^=7IXkV`?UywxmdYU5$NqyDNH1#t@KFRQYq>np=rSwSUBLc*Cw!f}W2!#41kyqg>&JXq@FzJw8F9d!gDFw#!s?-NQe}?Sg>mpuRD~y)+>3rmAux{_1p03)a%gnv*~chQP0?^rg2vX?Anici=6cnrVpm`*5Cx1ydM_g z7q8-_n9XJ@;fnJIKoqwZe?)IRfLG9vYSAwyom7OV#pSqy68N07iD{j50}gs<`vSBoq3 zr%DRE@b#7Ng9hw9h^vXt>j!k^)3P^kd`|(oDR8|xa61I_d<#1> zX~mncsR`cU7j`;Tm}b9e5=%qhG;L}+Gqi-kTkpco0b0UlhgmHv?1W1SN-@Fv(8A9C zDl7*JA3EJ{DDbrq*a1!r8^ z39mBr$SgyrF71RT89JO!yRVugdPZk5opcx{XzwZm%Hox`ahjp-B_1{f#+w7H51W+P zJ%>#jzANTH<~t_kea<^3)59hR=!2Er8Aa#41Llt4uE_3;RA4Xw9KqV7@qn2(yEDRw ziwNWsZh&%6Rb}H5JW%h zQFQK6EE*lvc+_Oc*=7!$f`DGXtWFzkISOW{;MtPZY1QE1LCxy4s4(65ta-|1bxIn% z|J{HJpV}$Xq+>W5%(UkErgjP{OdZEe(>>uB?xR;JwUbjRdQOApAR4041a}5K1T;nu ze0K~7p7O*VHwCUY2UbBqFT23AmTo?Q`}ff03p{I7n93&t4J`1i)@XyfuD}Bp1;~P~ z16rdl8%_jvDFvPtD#eW8xn&X4m?Qyi&n$4{I*9Nq91uPxFB1+6TjlHIUiQ!IPurK- zhuLM@Y1`wrW?P~4n)R@CvvsDmFX%HbT5h(Cg2T{Hq{pNcbka#Yl+HVedEbVUID}_~ zeX!eK;w63Qfi<9HpnnMa=!p+-8Y`_~#?w;@<4*h#Ta{pp!rUWR+g%I@ku?zUnhVZJ zA()~BlUeXnq4NI}deMao>Anwf7VCHb-ArA}a5j%V1zx*H`JF+peu5mG?!k2;hk<~d=0mJCk zKXG`#bmsgDr|Huzud`&!*Ej{vvCK<^ZvF~q8HJX=ZVLPfF@eN`mBc+b)PT-HO?m~- zO6qt6r|KyOcec=rv19YPDaz6Unmel$ZY0_^q2TnmiufTxL$#mWY zP?~~EqS+U4sxg)4Kp>D{f|`IH{KcdK4CoxMqM8#LLj@SnIZn$xcwW)ai>BO%UNqSn zI>*q8i(qRAPEgc2T7~I>Uva?Bm)|*xXQnGX-t8fY|22T=mrMsp^B|x%A-{739e4>$ zs0S~ZX4mmcIK#O2f)6rNQ9lOtvoA*D(K37|o{2L^JQmOw=m5IUdcu0IwFa)d%JyQg z{eA+r-_@|ycZz?CZ`($Ka(}mDk>xzte;>2;aSV0zlE0Ss!IpH9JWP(Y|6o62S!@XOFRuva8uiYzq0EoFI>qm1F`;sXdo*i{kpG zgwDHyr_-N*2mXBE3XZ2`hv9P|gp#k~w>kUW zOai9czQ&O_KU1OaOXpt0nf|Q;uzMv9&HDo%R%)BvwfJT$DxkZp1Uw9V0T+;Qg~F!; zmGLe46K_XcIy)K8Nw>WL+0DL&o8bM+QD!p!oq-2(PqFLSI(9hzopq2;$V=pQGMi*N z-g7+aSmqcFZ)3iPtHGV}Bst#x6PV;*uy3}v*srt4!<(4Hwg+u%Y}0JnHjDL3>uc7n z)<)|vYZOS{S1or~W?PCavC?nSM__H(A}y6BO6d|2&xk&8vzW0MwvTaeNcy_4Raha6 zW6uly_&@m%_~-aeeion0OI$a+j@iI9aM$ln4jF(Q+D=l1gP@2XMrr zyPU$rt$Kd)NgTP)vNwcmWc4YY+u1=6oyGm={%{gdW)jchOnp&ri6ABhzDA?odDgTb zUNceCZ4o4JSkt+JqH}P_TUJQ86l1Z+c)@>#Vghe#uBoqTP&^dG=;m>n6-grXqUpFu z5Rj|%0XK-JRrh0U#PLCF%m={%ExC9}f`#bpM5M9((yl zU!}U#2*lGPktAT%_S)&ONRrl5pC1xMa&$J{-wWOY$`q#3oKIp*7Uc(`NZ|0`-6+ym z@9X|vk)Dhuu{~L6ay01|py5>-`rtqkxTw?L%V}u&AhTND-^*%nHxLIDkYhplVU;8* zSp4O9!R3YeviRg6qP(g%3tpH@xt(yE5T->>X}&SWJi5!&(d{X=L%uL?INMd49=ngi z&Ngjggp>t|qFu2h&lvpku_QmkKlsVsG@i+U&Nev|sRVa2;P@m}A7OfZ97)z0bFvq< zv^^4JHr6YiQj7#KUfABM^H6ho0exV^_42~*R`E9jlgI#Ly|A}crl841T8dtLo)=sW zOeM;MDBp|vNkjDr8XHdnNABa|iE$#E@9j;q6G&>$jnIL35|BaOc$J1GCYTneGl695 z6EWW#>z8hy=a3ZBM7%G-RPM2az$7d5M$yfQB)x|+QRt0SVY)rnJj)8b5gK){dRFKS zSK*$zZFg_e6!G@bk_Ic1h2BuDpmm9+Hf=}@Bpl>*s0)yG=MgT-;2ajRlBp(BF_}uX zlYdZ45-INZ)q2Ld!|Jk5v8Gslw!8_CM(Zqtz^MK&*eG?f?@P1Ad19W(3m*&53aj{g z_)qu&aET?37o@SmLaBiJQA&Z6)HnF=`RCwS$+P@w@oR1w_aK+c-6o!fH>9sfqWB;F zFJS_h;Ul?G;vv3*n;|~T?jmlsQM{Aol0+Y{_1iFgr7ww()YchZ%pPYXJZ;MK<^;A7 zV|t*NM3Ps?YxElMXk7p{Xd$h0aHATcY(H{Dxo64aR^Rb{J@kJ|8Q_&vIPamPD9%?t^wx_fBaWI0G{*9A;swp20J4F)LBHLN5hZ$+PdnhR;|nr)F`b?4f&S| z!SK)*pKGmOu&~{!B-1G1!8<-j*AXQIcM%uEk`4tR3*H;t^vGb)hV4$)GE-9G%|q4+tkcA$CDHuKdAps zqJIq`5{6PCB1z$G9FOleV*OgpeJTK4Ee&??KwFhglH%~a%I|QJf&XhP>B$l@$!;TY zxJ{oKG^v!Vw^>OH*5?O(qLi$on{uGow4vm6-_9H|0c36==v*L;y3}7?2j>c^#su$% zlu6V?|0*OdHkK5sD>+J1-i)hDkG@t$lEP$?j7$qur;9|d(YO-wqE^1*#tUZi-g45+ zSNP>xymu{VB_K1vqf>n=IP+3xO>bRvM0>#jh~fiGagr7sMR#6D0*<+kUPog3`16eR zf}0N|QA7QICE`bs#DxYOTx?P37AnK0On#%>I4@k9NP(!@y7^U08+sHS?}cj{H^+#2~v&*2W#CVrzLRxdE z6ciWjZ2@OXs@B&Io}j>A>3O~9qP%beBMzcw&u^%235p8$g0Uh3gDW|R!C&bq;=S{s z&5)w8xwfvgseVbLEBl9Xb!ZkjeF%q%gG$>i%v zl&*V4dT)fj2i?iP3Jt2>-YKA^Lk)XyNrNEH3%4PZdDmLkP}L63x|HEIVxzrqAtGos z7*Tz^lX!+64<&)8zZXMI{p9FHV$1w3iSmwzSp$VMRV@oHAkGV~qm|+tVNzEu&}O1h z26c@!t+@NglDNQ%gNM=TN&=62!CBISy-Xc?rk80{$zM44S0SW37oThI?mKte~cpu#-vIbPvVR~dN@fo0*lNs zcZ@fs**Ts>8Dz&Hrqo~CXzyUHZ@}ZCvr!Szar%sm_7(=BYJ;L^{|O{vkw1$F?;!0} zwZ_6@_4HBRd~G0gsc6K6dBLe-1Po*ilxLvP-dwFbL#P^2bjJi!{f|u`nbZ7*_wv?i z>%O7B+F19oUhvJR3_&HZzoo!E&0AO|#@nHdf#Tb5X?0y@YjvVtXF7SJsoR%KB;oq1 ziS~kZRbghD|2yD425XA(E`o|fRBdb3@;a3-8F9V6^%`HPfhX&2&iPfqycEV|5X5*F zYKehcH>$28195h;k?ANScMyIC&w>{0IWptId1;DVsVO``hxbBtLJ zPY9ENMYS|HH`KL&3brzks^UfxX3XV=mrZNt?=PEnRPVk_0*_HDJtS~n_C5~@T+Us+ zj}#fp{1%uQ3X5)3{8cwrwJxr0Ufz^s)c5p0Q(@vOWV}(0*{=llwvp>$-6*a^udiBG zWuD*>>kG7nGOAv2J!s7C*!3{+mFa5I(TweB@AX48rmWPdb!B_KB1%E&DbZ^czaE^j zDwU4ZDB9XvgW~DLn@DV;zE;;~XjOnk0k0hmAFH(GCKL1g+f5|NXxi%iBvD@kq3eNL zgn`dPP_Fdy8E_)NB*W~lY+u=;iB+;5A}`p>@A^TF%+e#BCeho2MiI>5GqV~RrwHaA zv9x3+iLsjUr1NHy_#oiaToM)pT$)Q_Gfhbtr&2^q6*&5=Qk}B?cRBPz&s^tLlBl3u z*Hw}@@K_OOoZ9jl&`JKMdaIGuiqiBy6xLlyVg{JAQnZ^&|7J&}zs1~*bk{Tz7gU#P zvq(e`kT{#f_c!OLmJb4JsaAe)exI-F(WjNudotpP}xrDw%!ofPGcL;rG zze%8$%_Ru|UZ6Og{U3%|b;U|ub4hP#j2h^-z8|lSurUdb%{B4=^FV6EgjA{%!JjUP zSI5wZoe9Hb1lClV#C!4qQ#}t!$k=BpJ-PWhUE7mw`g5{Fs5M0r(v-Fd`fY(uNQmJE~ z<5nruG0l-Auy_xCj~~PB5Z>b|g;3!DS0eOd?-#!3{w_QwY!;RZHwhKE7y6mM6P@GF z^QYh@=R<5e-_G5EUE)^pPY2-(s_~tC3{SXo+szMdEa>6*rT|$W=0n z>x=%vv)Mn$-Rx2JW%dbHVsFJ`!Piy=`iSj|3-Cem6*)Y5L_QqQcYG*CfOVt%W#;6)R61!HZ~42 z@O#OnH8o@)y}O1i7^s$~yU7(o*hGW_J45^<+XM!*8rTISutjLgN)kl})sh_U3>d~L z>4I9)-)do_po)rn=NS4>Eh(^Y?|^r^%C;7$;F(%7H8h0n3j_f_$kB9s9T_S5oiQiU zzt@p0*#1H}3Rk4>)RE;Gc2;SO`ns}!c~z}dO>-MaYY>TW*-(@j8}>7KS~;IM={@sF zwJh4$D19Rx=uurQQBIPI-dr5 z^=a#KVC9}_O^5eFuQ?7m+>WV^WciF`gS;D@15M;NkgvdT-KT_yd{dFe~Gkyyx6 z_zM1UBM@c;5=N*e#bHrm#T6c=2e*_;=nHNJ3+XrWC^}n75+o^ z(C?R#VcaOz<-in8BNcSTa^mSHj$#}n8LKaf)bj`Qy;79w%pZ!#62~$ujaosR{7OcE zeIgyTf}~l&7pS$Sxn(67V`%FNG9s)ONy9-VJ^VBMWCa=4Ax#P7uO1bm3t=Q32m4WD z4oJ^2*6QZkmC!3nGyFfHgZ^REPCe>C7u9Ip3W$GHMoZhWkiF8YO81)f)%f`t3Sv6- z#ZOxXG6HD5YBsvX5dWZ*60j2D*VT+neDe{70K|c=NG6w${yWtpmMA9m*Gh1%2>ey9Ib30jS^n6ttV!uEeMly&kOSX#f9> zNvjw0{b~L;>XLecf4?GN`hkE^%A*IG$xt4hSAQqB;Y=QVr~a;L!)ZMFR{b5ih!pYY z8~t|_9n(Rw7v_=r|06FY`;}XW|9go-UQLHnLA|=eS$G?P9z* zSr8wWHcRWopQUCzUYZIHQqySUCXzB{pGY0wa?`m|ZXkJ|i{W_oS8%rcK6qr?!BX}% zwvnA9R*EgsGu#Amf;d>1Dn^Tfa9Q}5@Un2P;1=41I(9T33>O5~Z6f^^iaWVaz`xre zaQ3o|yIl$sJH-sgUbdIxR`BRH&>_hGmiNnBU&1SwSm}y%SlYI0Gm8ds{h8iav93k3 z83^~>#gl#E-~hl6>sxp7vTyudn%+X95X} z!h2=-3td>ZRS=)5VU42o_mVj6PjgK;f_dL}_mbbaIcgJnEEPCFu?Rmi^=vB<&xr-B z7bMFDajket_*xpmRdG|eVd6yapy%ZJaS4>npBS}LGRf05pT2Sp3vFn1QAg^!ZdVkkDEM~9Mq z3Y*kGe|M6X71^TyZJ4^|_MCW9Odp^m#<%NHl25V(frKIDPvR(|sIj3!9LCs{U?@q! zjp~QV-i+U+jweZS$sJY_r)Sz%Jj~erJxF|tL@)vhZ~3n((uya^bV>Y`kyKMB&3=kR zW+?2?ba4ScEG=XrHB%`3%{aK|Rb2;6c4Y>+3Db(B@c!eMCyDx}&73r3A4&GXpMP5( vDPEP*8Myp3*e4z&ml2k-p}R5!TJ{d%L&60DwmUfGR-VC>;s_t0hxq>ow>B)J delta 27546 zcmZvF2Ygh;_WzxkTel{VUPuCgK$1-_Ksrq+p-53_AqfEjX(XYSu)A4#`lK0U>|n(X zHkP6kE2uPkLxPHmB1L_6<$vzId&}nce|(;M=R0T4^f_nF%$%&-?p(Lsxj7bnxg~Bm z`tsR1vlCE3*TICyUfHgk99K?OPIh8;!O*O%q1idlf0tkhLH_4|&U7RuIDTd<_7fI{ zVe*_^&KsR?IVzol>?a&?4$<+Z0S3v=bxMNi!(JGkW`)^JeWCz9X~>=9VP(f zI^T5u*Ez$n)4|yfJKCJ#j#1C|X?e)bLR<=suY=O($$6Hb7XV47WlcDTW{tueUxGZ) z_+4ApM$$P~u!G+E54Q5@g={0j)V&mE^XPL(kwn)H#yNS}a;ZvCH6Q~+*aU><)-83- zZOCYx8;kt_X7^)9BCNK$tERabphCLkE)pY`Ba3eDN0Q~QKJ+Y$)8*EUku##FwxB#2 zkEShmBA1vW=TgAj`P{m-866+LRDJK+#5Y63cm_*|$CrpGL*0LT9NIeoT{NIx0q92q z3JpLP3@9W3eQ!X{0Ce7f95U1aS$=0=_5j&824o9B-x`oL0G%};O91LNASnQy2|(|D z9V!N(FLbCQR0v?Fbu5$*K%W~B7l3vIpeN6VvH|E36*|4*%TN-49@L=_%rgkuHA_cA zQGn=C8RDw%{e1V|&+S6HDsAsD^O-Bid8hL$=UdKQw!Kb|bD?vxCB~WKjC5ReeCK$_ z@qlB!qtP+Wk>!ZA|6~8s{-*sYJGHmjr`n5cEA7d4nL~6CfZ3V$$c)N!6$iExQZx7EuH16wpy1kCO@w?K)X8P*nM)*D3^EeTIn| zQllb=rg2t1MS8W$M;UKAO1IRYfqG#MnFE&~pq0!ui(aWg3AC&h2|6}Y#hT363Aq#W3W7*%eB<>*}14d zD@V~3nWC%v2F|Jz6irq*ts~f!W!1>SKm!#`QlhtU=8PsP87YgE&W9$zv{-DspnVsl3IbRW_x9i48q99~J0* z<5+;M)k;!1iiRveWnB|i86~M4sbKWS1x6QDj!@~!W^z)Q)_7eNqq9oYrVkm$GfpJ( zt@&DHXa&!N0@B!EK;|Ur^t)C|P3@UcxicGGj#~>2PE* z&%^`V(%jZwRo^&Yj|hY1A(|2S>bADJ_BM@6SfYwn$@DrJIYee6b?^<%^PA;ip>ydq zm}hze`*};6bS$QjXZj(DpI5yUgkMtz{6~)qFHlQa*R-^`rA>!><*RI9xi_$66@x-c zYVk14biUaUeF6~;)hn8pm_}|KG@+cJzNxlh$=o_UMOS)d zRGe+uSww*zBFEG>&8=IWArBy(!HFi6+^9_>P(*qH$x7KMfk@=vY$gQ1G*Va(q)NZ7S1vMqbhzL%$wFP~z3xz8!C|?h_7MlX~ zi&23k(55bT8hxn^C4>%9bWN=QE_bR5EBbhW0S{8)!XDHERaj9(Ow=g~Ot0R9c&ou< zfJ&U#gGYZA&g}swD{z>q3u{a=+%Un%(t~X%o*tx#cNh^c!2=OhdlBcuDSt9fP;$WFT0jpD*w%2re#RT-<~K_1!x^Wp>~vTKPlR%&=} zMPDAKN375z3T2JSh*+*gbe(B6Fl|C+I;0Lu;&U89Q4F=Gu1 z*0r(tpc3^a{3% zY;OjEa>F^56XnxAM^P+Y?L)sRMhLp| zJ|xm@>rp>Z6%oueCPbs@rC0_$8yI=M=$3N=Mv{|XQ=(0eUJUW_Su$aEbW$|_!X9LtGH?W zPy8`qg!G5>zO+laRazj8kP^ke#gD}ogg*R({4#zVpTzyjz0D|Ncv&dUy z3%P+L;BW9PcoL4b5Aff=8LdLBX81{`9nT{UTI!d%cJzuxh-55ktI+H_&{Dc-E9&R}><%;)@%4-V z)%JRBaYNX}z`Xi(luNhY4SdetgZlV4 z+=C7w=nCdedUiibqMyUi(1Qc)C5&t#yA$VVRm!8G_oM!PAWOzH;vRHkhlT85Mv$Ql zxrf|LR*?oWmrY>9$SJOXW7u|UG&_M!wftf^VR^#hv&^v+St6yMr4!PV(t4>@DwATx zU&Mpr&EjM+PBrT%{jx_-*L&Y*WqiEiYxyUSIG;(yyBj^|fxy@nbZpBO~DB_yAO9}XAKZ>42^z!2<%fImnG)I{ljdapR zlujo;gE*vor_gOj5bQkUi4g!`VgT^20l@4Cfk{iS;Ju!_F1X@zzRf zxaG8?iJaqN`J4H9!q37(T_F6Yuv``M zEZ6Tt?lEp9H;(<9eVSd$ma!t)NtTmg#D+h_+wnr2=Zx|{xC`Be6ce$ah-l^yCE(xj z9BM}X#1~K@)SPiBmCpvNcb?K?+T`Hq`WMkY3;z^jQJaTW>_&^(Sqzs$yLY3${!exz zkkgLM3=cD8*B%t__w7NmFk46#E3+VnR_sTu$VtE0kCN#PFTtX>?8ZUat}Af_ z$K3!!{{VHpf%@~zY31Ag5=ykH<3gSn2Pgn3vibV}ltHaZz}l^H{b)a$MGwD(QfcO! z^2qvR>ml@=E@CbnGBlAgcPl-76_g#-46TXsa`$3d{t66ad9kpS7;uXMs~U<4ZdR!? zUok0kC9j}jJF0gJOn45vnMBdL{DQ z(-qhe+<{x)G#T|uAfT}s>b{`_!?4{R+*xX1C#GP?LJlXhuiqiw-Z==L9 zngPK*Lbfb{d7}&EiS=N}SYGF9ThP3;uEC`gK&PTlyp0lc z<|p4q(R$!AWIHmDQ@p!OHL}&LaJ4U}b1kc05tLc18*HPp0j#FE#?{)~24<5MqbPLJ zJ1A~wfK|8~EThptIwW}05biDt;K4h9vF@RC%P~|!GlpPe*FDxfL_t++xxQVX<;T!9 zdJQ&0KpS#n-32O}tnt{i-5Kl7S72C7pz(A*W8HZwtZ4WqI9Gwg75!d^$GLL^26kN8 z$3ZTQFT#RT>x6OcY$N962+SLs?y>GHg;z&*P|g-x4QLb(F}76ePu6`_k9CZ-m*pD} zJsT}GmI8}K`a*gR1lnvVU$Ti`i!X_{iw)uk&>wyg-VyE-8ii89$#;V&^6-=SWbS|5 z5$+zYiL2nk*l*c=>;|@q&0-OGmptS=<$TcD=1dv^hl<}g_Bd{KOn0Q&|F$2uZ@0JF zN7y55-`V!rHri_Zx1B@}V7l%C3ZrY@S5>6v=;8~Ys6C|z(HEdVojQY3X!-vT@1OEM ziV*0=PeHnDdJhezm%jylZ`)_64+5nj`#egdC(a{|l%S#Vkzq1TcVdw~a2nR0?$43v zk35aegD{fWB|sJ(7JQ7k7VlvAANg1LyZB~)Bp=IN;oju#j29imUk@MEUlJNmKYH9uSn5brG-+d6efNz9ul`ggAWsP$Ecw_h>IjMytETcgPL6w*FdpeNUuDgGNo zk*`wxXr}lph$2^|nDvt>mqkArxfFP^>7<|0KzbY~w5$s}Sqj)gTorgSRoe2OP29%+ zjB>Pu`5u>&pK71dl(3OoZ;6sDD-sEq%gIgez8qNjX3WTMIU^i}HHxo0&_TO40b6QMEiztOEAvhdfV=3I~^}z!ObR{tjKa z{llP!h*HrL!Dyt4{u_)&sOZ7pO~pL+ySdTA6beVMrbWyCFw^u>X@Zp<`s^Qu-caBP zQD}PTfSDdAP5KK~#FmduRmk)>6jU{0>MfkmII^$rgW$snVmO~Lt2635trMeRdp3`OS6)GI8(wDiHt8nn_ zE^{wac{g1(ra+l{sS54_Q17Y(S5c8}XyYT90&<3NeBgN8vBojU(VzR8+r_Qst_9iM z%|690XGgNV$QkD`=iScv&O9fwe{bJuZ?_Mz{cC&G_8(iNt(Wx+>l4cGeT_7MCdp%s1b1`78b zI5dfFkHE$BqziL&SvdZNF0RByf}(FRySfg}DCsJj$G3}JxZIenGLsamn)`SKm=uNc<@<82Cayw&K;cO{qOhl8}Dg0#g_Hb#NK#MlZI!H!KLN|jar1lZs(X_b`3$X&I0qTkY)Yw zM7@m1`(a}r>Zzxv`r!dIBN?vX1qx1!lkp^N9hvHxPs@_=HS`NJ#f2b>I+bE$e-n>; z`x`teJhilA0M6~PO|9_MC@|eM*j(7v1F*5JJ~RNAYDFpXRBauIUCNX(mYO2ZYz2jh zV=}|LQ?RkAJ!lU60|AZWV9#`VX&_GRp;ip`+^E0~<)};VGWzU5oToR^1qc{?rYQ+% zi)7kc4fae`(M^L)4RhZhBmW}LWV(G2c7+CKROGo%g@c7^kq0IsP}8h9*m~*3D)LNJ zse{F9k!OMe_f%&>(@ZTh!5r8C0j)+wp0RXu8k8*9vQXq1qryG&8m+>?GH{sZT6)$6 zQy6BNsldZL*C=pLh0p0S`g)jWq(al9XNGx3s2pJ}GREr{K?#Sc6wlaAT`|m4p`zO| zu&&h(^OUQ31eZG3Q>JR-up2N0U9P7zfM%Ln% zW^Ocx+5K!g>muJc_d0#fNpJ{s-tnTt4R-Dr`?vNN?49;0_GH^Hup?V%y=49;_?Knj zWD=yYah5y79N*EFavbJgSB`fO+A$pWvnpjoZji+H&<93g z*x!}Fg`8b?SHfD;YIVs>KIA&A zTUSfHnG{XNS#;-h#<(r@W~kt00QFq{y$%o617(vrC$e6@F%lQP@mxe--QoP%q!bDcI1n6Q^Qb z&(8AprAgCpUzqpi@@09GR9HD%)(ev5O;li-c$2vxS>6N{4w+`kv(Ge~t`}eu1hhWM z^2VvmmHX>D^Gt87T6uM-YfV+*jiFiB!*EEr-o)H>y-8>-hJePr!W*fO!7iKzcZ?9$ukha2$-Ez@hgc6#wfJhW#5_jH`CC)jHaT$zqdcZ_C$A{J0BhImDq zH3O%qWg=dKub13)TQw8H}~Q(9@x!>i{*()2C-)<5a`5MkVPEBAGNB8`p0)LO{!Z zsAnbJG8?D&l*VEeE;RH{xLTp>pOL|vp&}1lurMNfDhzPRLXYeSRvRp=z+{sT7|T3M zy7Z@XMA|CNB_BvR5-WZP3+)s!RrsH9NcgWX4J6G4{yBa*Ukb->Z*dQDE4YbVit{7q zGazSX!cNKN_}cN3<90`bV}v8l{uMnS)2b z#h6B%O0U*pk+p0GLtIiFj#FM+(60UXTKQ`oO{~XB{!0t+DAqr}5%-c0l5r+|pbqD& zU!n6r<%ji;=h03j3V>WA%BD^%^t2Y2Mh`V(3&EMNMIKI4?Qj!D?sD{`LU8ydoFtT> zC$vDEOi22>R{hXm1nTG6W7ab?w!z9`kN4}1;*ZH`>)ok!2K;h{a|Xuh|O zKHZK}z-D2dy7Y;5Y}iJa9y*XSrsHv7Q!q=g1hmWisif1>P!! z@DdQ}1^s6U)~%Xl-dXfzc=`j%vAINL-kAyv#!fR#_boN#Z@G6m-Lf3#ID+LbEn8*? z{c`UO3JqQRl4(&Y_g=4{JtSkfcbZCkIhc5=imqF3s>8~oS(V^9*206akw1@K!Qz&|L>R@k$ znlSO>po(^^G3^ESt-(XJmMQa=((<)9n`W*xu;m7lE4WIjjdyc!6o5z)NG3+nwarQCR!;WJk>9}>cFKa8bVcN0|_w#RA zhi@XZdJ||WupO)=-dZ1AjgP;a}k&)=p`*G&8p0Bv|k5k z=>{yA5-9aYd-eE$hQCJvx;J3?UWLpOp4vh70Hmmil_;f^(2Gjc<&8L%4Sw=S>(1c8 z)VTp?`tQ9J&m$f4n6LOF;nKs>HfXXtq|I<4@3Q4O{*0y4a;;@JSOnj*9JgGsd~5mA z7Hu15n_#PUdYx;XE2Nj4?NYJjO=q)np)^eT+F1*-bDC|6^q6xZ|A}q7WS4mHs%?k)I7|J%1=o~38D;>72h7JZ25n|I<;+WRgX;gDZO z4#1D9Kacna-G%?a!(+&98HmBpsy{pBpJ@Dy`t!7nB@7Ca1Igq`B@oULgrt7Te^V61 zUw1G5AL>Al#o?o{y?P)HAAz5{_j>Rw>PwMql{bu8lpc(dO@r7l`)PejmMG4>0|ff zKJ-7^@JhZIP2;yQ)V3W*b!Ajf^RL~Gi?JvU7mGoC>h|w@5PwAI+T+CG-}WfJ5A}k4 zgc2Ms^DBYPDg5}yKZc(duIG+0DO>>~HHlWafOUbJ=CM%irEcdd6>=U7u<=l!B(H4J8p^saO_owExb zy|(PaqW`vC_+gfA*#|QM?Z?+`-H71^BHAs?ffG#m$u3+b3f&88v%Dx$$6ov%y;-LH zV;^?e)zwIuXszlKS?X*c93Bccrap!}atZnj=HO5|=_N2_*P8TKq{X->NIE5r!T zGrHv!!U(XPTNYc+XtenW`rI z0umaTfW2MLBv_d$>>Q}TJvU%;-Y{n~K%s$yF0*=*-U&C`uAwJi!(sH|8`z<#s3o1r zJX0^LsAmYtFbwG>o$y3M!v{qMi?otXc&4F8_K@Leok?`!5ggxB5xnvyPSIs+!Vy!T z(i~WI1m|dl8`=r)s%quJRs94Ht#z&S$`RB4E#s(36`ys~WIfmn0j))|I^kjXQLtD9 zH%nG$gbc$T{w;VkzVivQf|=DBuE&KNe8P0l(Nl%o^cGIn%3j(DkGL1fWzSkeQhW49 zPA9yknoJ+?lEiShqGaxwk=d1Z&rEB4eO}F^CxL6z_;=pa_WXF$=-Hr~&Xh(1RY5Oj_*FKF-JPCTi zoRgUMZ#;=ZcoOi)kjkRhg!A;ohj0p(;f7VZ`823unWP%iIjiA{O7j<3ps%~}9Qyl5 zIFq$}!bHdQfoDwMM;La9$F@~hl z%iov==D*+ITy49U)(N(Qk@QLoi3tnllh)a&#nA44#CU&~)(KXGK$768nAW*Si|Hv* zFMo@ThijenaNiBfw}FEfwFL?cw}H(t-SnL~={z-Qa9MLY;SB|Fq>1NE^~^YLPFSl_ zoZ!uUmepB9kDteV>C5JXZ=W{_h=0$6A{5x}<#$$rt%e?-Li*7bxZiFv_ALA!_c!`$ z7CixBdfC@^ zrr_nwR8)ykC0dF{f~oT>d<-2#_gMb1d}4jhy4pI*ngo|I-nQLiTV#XBSkf%X1?PZo zf;W-dowJ>Jmfe;v>vzsjc=WXwE_hTs@*Sb}^Kc9EF8g9jy`{nuCVeaIlQyWwXQD&+ z0iHBHB6#TP%Qy+$OYgsoBUpSDe@0)pj9ci?Ofslz@!CY%cmnDr+#=*Dmxj`EgVTEC3qp7_zTzp7XOUnc>e=`U>0Gg zmHzN2j-_Ay30v5MS6~GAufUpI`WJpvjX3ltTvK)Y1@iNuzwr_ID+`1IGm5(Z1mf*q zfliMrG$4kq`4cB9sQ>amcqLMKl>7}m7GA|$*?hJh(F6xc?NECb`h7{)_#P{Z9Kb`!st#+++RTcF4BX)&TqY zMC+f{_pQ%Z|6{GO7F$E%?(lxgW_Wv)WnrW<(gEo{X*C#9hDy=!9Ojs~Lv)KX#N2$* zDSRs&6gCUr>N$-m!hBg14NYYPh+JQcio{SsZY4#LWP^rRXz2avCLMF2k5kcu z!6>Vu-GCbVnPWlhutE|UtWIXbLk;!a@a3VTuVMLxft1q;xA>s{d&=ca(dM39s`O+} z0UYub&I>3Mg`MqcXP1?j#Z6&no0>A%PD!7QA-Q@3{t!d*(gIzb9ZoKG5oA+F<>v&=;n_a6>9+_;&X(jSOEemEZQkLEY{PRpE6BrW$QbFcRkb zoXRwd3f9*waHn%N*^kM7>PRF-=qEZRk;GRYmu8A{#9WaVK7qTKE8!XEXM8gMCLhit zX{@k7D&T&U`g13_m*H%42Uo{E$}bVWfoqU=a_O8`{FJZaUz9}gSN>mNypSbCa24WV zzKFX{e2{&XZ4@_fF|a`YhUrugfAYF1O8iHRq_}WXL?UIA$y=P_){QQnLgM|uCX)|P zgfvcmRE-RODdFOa4D0`F0QnqQ7#m(PzhQ-|ZmIw9KvFJrh#Q$1Xd2^ecaC&MI?f9x zg$IRpVU!TXf6pK0?}T?6qxg947w#Q+n(70S{59M_PGY}j--efwx7bS9MesVZH~E(A zCmTo=$tDDUfOp^(cq~r0foBkS8nFxHU6*5lV=(OdcGwfe4z$efa2`jS#TmB0OPvR7 zXKg3#yHTg@c2r|uBv#sFU^%=?9Ei5t-*7nXKifaE-6V$E^KJKuP0oiL zDZ;<$mVNFxeJ zBAZIC$8<{^N%Y4Rl2o2fEG6#V4w7VUIp-GyE}~8$i5;YqVaQI|LC%tzx{THud{qv& zSI>9VfM+MgLk#{`f$H1A5zN9id|3{)wbtTu@`vG82!E?bI7yOP=8QI3G<*dSj|N1L z>~aRfmXYjLfC&w*hWfU4m+UM@%?zxP5LZ99uBN(GMPLsJh+1J40ox?m+gd+=LAy() zR6(#ulD+i)-XyL=Hhh!4iZd*D69z7^(ULDdH&ZdHKLWRg5zRf!hMz_iKNH@7Zo1K&b*liRD?RqsON8HoDMg39IY6 z+?5e>*fb>}_=#DyYOilv;cBF1W#mQrXdanJNj_Omx8{>|w4i{zLgy5N?1xfz(Nm=) zmj1641~7=pzVgJ6!^F3{oHX+l0cjQITLYQ}$cfgvx%I8!QA_FgKANP6@`1Y!*%6oQ zs4O^&?ixkHbP4$OC=%T_z%$ARUOD7M@-Xa?h`)v;EYRuTvWQH#K<*W}>UzGhKDd?8 zAEM^g&8uG0(1S~y53VK1g@*2IX{~E(3r^hM2REdLKr}@wNJNLuG|C5;qvibcX=sXS z4MbJLYsR3WMEl?pgDiSgcS%8UQN9*%j-+UAftmb+)^d?PxY7^{QR(v<>RaSVu1AIW zz?KjW>Zcro&uJ;*eDipEDTIW_s+wjmU!5w~VPS~Zi0ImDNyMl?1IGGlK*&QL^-bVs zsZL!PKGjJ3_^RO*C&V^1SI-?jd9pSa-q#3dc_>NNj4}&DNuu_hI-2y+dv?NT5~BxN zMw7%+edxeOU+x8YWz)MlPU9Z#o31*cQ&(CYr^n37%(gKkvAjMiosLrJXm?d)ZIXZ0ds$!dqj`rt{ioLeId*=le$CXXeZC3TNA z&8K_El2~It!E0h=o`6%k9*GY1B9U6Qr+XP)7&neY4bVGkq&{65>%jG04;~f0NqCuB z#26nuBR2La!GzJiVLfMpQTk`b5#xB{^Kry@S^W1n60Z-S#7YvY2L^?azFOfInj>zl zG$q+pNh0+m$04R9P_HN-xJ8uPMRs4?sJO4y249q~(1=n!+iFpC;CK?hFu)?*m#;oU zZd2raj7Ajc%Y%sxtTj=m$Mp7r&%$tssRgN}qfx#bH9vKsHb>E&<4xs1HlAc??&^B^ z=Bg9Cp}t0+;4waMeJJ-p6)bE^U|lqCFqvpyhuQ^(c9Ec!nNFHuYW2kvNSHQ3qI_W1 zl$R;hMIEd~`l1uSdZCs!hcMFH% z7WEoo2Hc~L;eUq9%r-z`~V+@ z5yTRnxhZQGEM6wx6wFfXA#5U zfPIgVU-}*+zj3okqCUeC>c%Q!oGrXoMe+v+CUnGlnE0}*(S_AZ ztIg9ee0_o14&biPjMHbQnJVSD-X!eiyiCIFYAYtMhgn&O=#|+dQsVR>vFc?|_f-mp zVaG5@Fp;X-SG1_2n5+lFfTK-_%+w-XCUM<^Mi%B(?bS7~Es)jx90G(FY$l*sV!9_D_j3JlDcms(Lubo9VFpK4btd=gCs6h&x%t_V^x}>pfJ42 zXnJyvmdqk?1NE|z18Vjl3zw+bo2eh5?pY*ytUXV9^JC_|MfO8Mf7W-QYy;2<*h^11}qM?!e2WkG>!dQ1#26LsIb)yY&D` z&{l?(GfXr1ff*)&cW{PDm)vxK#A``}nWiKeGfnHq#F?fwBk7<~v{KXeu9+lWlW!Kh zmYI)sgot-pcU#v>C6dE>qcsiAD^7qPjY^9R+|=!G?vs{?Uy2U=6#ttT%k322<*I~G z;h;E3NM<(+7r49O3}TD01g;oXV1h34%ehTB5yb$SMKun+d3@jc%wRxgwbc zuGb(1Jyb)&Y_W1`)g5yd?XDqNG`yCKlEtvV*O5&6ZXH>cpyXcL+y-@k9epx+LP@9j zEKZ>9^N33lI5303+y$SE^GHpMosC9#i1L!IfY~pe0vlJAI;m*reDY7ajg3TD_2t97 zr4lP|2n(2(LfC##3&S~a6uo`{nJG%Mj4NAd(W;Rcot7FD7j-$=t}OVI8QHG+G_;0^sXwrpb9r^M23xR*xAL*VLg zEh&ZTXFovHL$sovWzkR3ZOlj`vOSfjS^t=gOVo{487PR8`K_@4Y;5(vSEJekqz@| zkJOAu2I3QA*ldi|r6y>pT~8hv$+-o!{)?dg7H&DS9=(#_e8{%WHpTLWX{ezGidt`JX>b1-+iNgn!(B%>eDXKW*}kjL>A@ELPI`xAZxybVs}MDiEhy^IGx zZ8zf;&MM+_j^=M8mn|ihboQ9^FKuZdu^ktsW8`DSn1!$PtLUjI#yHcD%yTH%CL z%8ry$SpvtO-;1B|E5(<^ZQ`wBD?0;@*{)%~g%|9D#7I#T{t|u^&T^5$3$V!CEUXlA zgb0DwuI`5VBWTq=2im*52MC+<7&@Rz_2Vxyv@Rw>^06zAtQaq9@> z=5y1yF&xKUqA`ofV|2+%SQTXBp#RKbGKJ8xB_y)IN@BIYh|({F^uwAuDy#PohLHY9 z2SCXf$Zups*#tw^Eg{$E$n^7?o7+Lxm-namh(sch;xRoXliu3B*e zF5s@`O1O0LJ{Jy;mw#cuWKXgO*eBU8*s(UUv&5<5JZTCyUK~yvHp5B6e>Rikh0d?J z&$#!v!|(`U8+Qx5R9h*gIiF>F!5#al&J-thoCa50U5+N$u7-ej&*$J=V~RZk-lBbJ zd&zd6ZLO`!R&GnOVe41c{njq)BI|H#tmS9R+u&k%3Hcgs?}tklq*vi)|Kex2SP%;} z=tEE5Nn#=+*fi9$`-;hn{>t0PC`{??_{e{yu!og}WHVXm5+%ncLsxFXKQB|}s5 z>~HK>a7OeTdxsP!_7yAOa>D#MsnbFL_c#j9vS)8bhF1VLgnZ zXX8i_y^oS;|FaL1JUA5~p{TK;Ld;|&#ab6i`eU=%4!?k?R|39lTQMv#C diff --git a/_posts/2021-03-17-java-class-instance-member.markdown b/_posts/2021-03-17-java-class-instance-member.markdown index 3747949af..1a30cb76f 100644 --- a/_posts/2021-03-17-java-class-instance-member.markdown +++ b/_posts/2021-03-17-java-class-instance-member.markdown @@ -1,4 +1,3 @@ - --- layout: post title: "Class, Instance member in java" @@ -18,13 +17,15 @@ header-img: - Class - 추상적으로 분류되는 한 부류를 의미한다. - 외제차 M사의 E클래스, S클래스, B사의 7시리즈, 3시리즈 같이 나뉘어지는 부류다. - - 한 객체를 생성할 때 필요한 설계도 역할을 한다. + - 한 객체를 생성할 때(Instance화 할 때) 적용되는 설계도 역할을 한다. - main함수에서 생성되는 객체(instance)는 Class에 작성된 내용과 동일하게 생성된다. - 식육목 -> 고양이아목 -> 고양이상과 -> 고양이과 처럼 나뉘는 부류를 일컫는다. - 위의 글에서 고양이과는 고양이상과를 상속받는다. 자세한 부분은 상속에 대해 이야기 할 때 다시 다루도록 한다. - Instance - - Class에 작성된 형식을 바탕으로 생성된 객체를 의미한다. - - 고양이과의 클래스에서 생성된 누렁이, 점박이, 까망이 는 고양이과의 클래스를 바탕으로 생성된 인스턴스이다. (여기서 인스턴스 명은 누렁이, 점박이, 까망이) + - Class에 작성된 형식을 바탕으로 객체를 생성함을 의미한다. + - 예를 들어, PickupTruck 클래스에서 생성한 Truck1은 PickupTruck를 Instance화 하여 생성된 객체이다. + - 여기서 객체인 Truck1은 color, size, isAutomationTranfer 등 클래스에서 작성되었던 내용들이 적용되는 것이다. + - 고양이과의 클래스에서 생성된 누렁이, 점박이, 까망이 는 고양이과의 클래스를 바탕으로 생성된 인스턴스이다. (여기서 인스턴스 명은 누렁이, 점박이, 까망이) ## Class 멤버와 Instance 멤버의 접근 - 아래 구문에서 Class멤버인 Static변수와 int형 변수, 이 Class를 바탕으로 생성한 Instance의 멤버로의 접근에 대해 알아보자. @@ -53,7 +54,9 @@ class C1 { //클래스 C1 } } - +``` +- 위와 같이 작성된 클래스는 아래 구문처럼 사용된다. +```java public class ClassMemberDemo{ public static void main(String[] args) { //메인함수 C1 c = new C1(); //C1형식의 객채 c생성 From 26ca0d4b13040b3ff908cbe5869d3b90ae161828 Mon Sep 17 00:00:00 2001 From: D-Gun Date: Sun, 20 Jun 2021 22:42:17 +0900 Subject: [PATCH 18/59] =?UTF-8?q?C#,=20=EB=82=B4=EC=9A=A9=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EC=8B=9C=EB=8F=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/D-Gun.github.io/v16/.suo | Bin 52736 -> 52736 bytes .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _featured_categories/Git.md | 2 +- _featured_categories/c#.md | 10 ++++++++++ 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 _featured_categories/c#.md diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 4f0d63832db40bb0c5f0365ab924f43f6ace2652..bfb0b6cd3086c8ecfb212c362fdb0495fe0f1ff2 100644 GIT binary patch delta 1841 zcmbtUZERCj7(VCjcDvm=ZRXfk*0F9BhDfm=n|5P}z`oRt6a2)F=oi8`OtwR2xTMBnDQ@7KBS zd!C;6++a^!uqW=gl}p{WOddx$n#_U5(>x@#YOI&rKe|RQNQd|p^^UZZ8?qT=laRl} zBPs^OmXS?%7*@h61{OzGi3RDfb#y>Z-<}7n0I&edfkMCztN_GHJ+u{Y0{OsF;88&2 z%+L=%SvXs8~I%r*U;zkWPL;+lFVK94WTioPgFm|#Z< zD2^;6ycmH**g8NE5S6vmr97}836T{f96*f3D%dd+BA*L?CJ7M}GM9u_1S2E_f$m0` zJlY>kgtt!sV#lYT-vCZW{R`0KN$i&|3B#CVP9BM7E<=yf`oug@CXh5t&P4samCBk` zDq8j`^w+>QD4nSWl8?wCy^)LsiM)_gJiPufVw&Yjeq0L*`nOQi`BBkJtuP ze@j1C%^Bb3gaQ}k4Kp*h13Df`D^bM!iTRAZLjF{jEC!i=$jSl9B=vTxj)xzUB$84$ z{Hx_DoZ?eH(Q+56h(nK+)*OR#EAn^Qr~j@HVgr$wbvkwuvES8+jR{J)_&ist;4TAV zb&|HisR1DBWL2r8hzlrYGqytYyTTe;9(YsB9!Gc{@!n@7`o7O<`r_ua5#RD{E%cSczeZ1Sdr>Wy5s(5t?z1>huZynRqYwj{V z;}T<;=rAQA>T1{~k~Ogc<8zP0~6!r z-n_D^)huDt31{Q+&iWhN^W-aw2i=oHqOQ0*LPA9)as~Y9gYg#~<>C6E%x7)Pz8Bqm zsQ*uwiop+qZ4Vy&W2A-T6)SaqU)Pzj^zpTYwPy!kPd<3~eb7v$``rmzixq;$ry%01 zbYR0ae5@?21>5cf1f^DJAAS}lNQy>o=pCSG0i~V5^LTpEz6}{K+ryf$q24AbRJ&2j z7nsnaT$v(>51w+)skg7ax@*YvOZDgb%I_B4EooO>=lZ#MADWQrrh-*3JH|_lb?+S- zsrUYwc3=Ir-zKYn&d6O?R@o?cXm@vPZ`j-6^M3#i>(rnp$cewRMqSfe%4xX4nP3Me z3u~sKch}$33@nPwz}(GIx91V{LS+#TrF=Fu@#3b&=5YSRn-qE0HC|x+lOp3UP9BB6 W>$CmeDb1cUrSmAbs``8Vb$nTd;~T9h|oQLcow(-Q6roRidm`N=pY@TIp{4MNl#6 z?q-uc0FikfJb1CE4ap`fbMvCc9|tdT(u;}fCLYXQJfMjl)c0*WW-R^zev?n;&3m7D z?=#=`zTf=yRr%|yuBe2Y^KK*rTEvb23|%8SpB9($H}5@xU-;jNZoK9m!y?}f?g+n`nna82}7#*E3DKLtH-7w+<2aTW`_ zf}{2y^-VSi*%$Plpu}YDVuhdkoS^bD(5{fc_6?pjx1giiSngR%V0G92FH!qM&dP=5 zu0B=?X!mqseXAZ03J0yJXn2||_TD4X59no^WmXkW;!D5rwp->6zV{B1xk`qu$Uqib zm5G6di*=3Vu#FUgQr*BK)>4j({gx^S$>AH&^0x{-gWKRguf0B+O~o@i|5yLoU-%<% z=E%brt)XlT=0$0jL&UN(Vd1gN7=CafEWEnZ{U zfkFm&J&=b1d$7FUFl3tQ;$WWC`MMvE+;Y9_yFc;Wn|*JBW3Xm$1I*8yz@X4s8BC1F z+LM`ZWJHV7@vIh)3`ePUHj_LbIty_go=4Y1YG`d+A~}{)5?VT)Q6@6kbX@VNKJOQ6T7F=} zEIB_@U;8!xs#~&lU|omVfpX{A_CrskQ)FFIjQnVx=pzSYu5zRd>R2G)cDRbe#zt}F zuoX{T`N$TBP4E3)V3(CiHE3^WW=3%e TU*;{>hdItm_I|@npZ@d_+Oy%~ diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index edd3870886a8e4ae6ade014ef4ff6736ec5a5a38..48e22c8d63f56a0b1fa57fd60e062c06db096dd3 100644 GIT binary patch delta 361 zcmYk0J4ixd7>3XPeV(f)4LK>OL}o%sWEZC(Dr&1hh%jnMsKG9lrh`I|T|nB@O7tHB`IqM+xoO6oQuS0nsDIYa`tmz{! zV|+t1Dzlktgs^G^yxruD@>$pc(>zs6Fv>2o;34v(@F!Z!!3TTD!@f*ZHggIRhyoI@ zW0@_T!R{eQ?8em|2Mtr428r4$E^r>A{hE!) z!m9gsQhFL`XsY6;#XGbzbs4`5WP|b{yaMTy-iFZ2Y9Ta9W*$_7jX*1-cdJ_kusMnQgiN delta 311 zcmXxUJ4ixN7y#gN{=e(JzR+F{X@gmdB)*!0D5)(1moRGRLW2p3S8GrRvIkU~*X0mI zs7qTGLBC7UR@Bg(Lqs4AVuLO%MK#0+U%q6^muv+mZ|bgT-n>wYetxst@l(go-zKCF zblyew>q$=aBzT8-Lr4Wk2}=dW>AV0V+}t)i{S&V`wCJ%2TSneXv&W!-%&RVVV2l<| zAhUDnwjY8hdC)~^56)WwzUe-IgrYWx76TkH2JfVg;kuJg3Mq=)2IcmT9&u15io>!g z%-mo!EN|pAQC`4)YQ(SuqPvEDrsr_WI#p~lhN66p4zeuaXBSThNyVzTQqfBg{T@%y*DA^~KM<0Jr{YY*HIPy?kj9`4N>0pWanx*_Vdj;TmdhmKw3o%r F*bgsSXRrVO diff --git a/_featured_categories/Git.md b/_featured_categories/Git.md index c164cb96f..fa4a6092e 100644 --- a/_featured_categories/Git.md +++ b/_featured_categories/Git.md @@ -4,7 +4,7 @@ title: Git slug: git menu: true submenu: false -order: 2 +order: 8 description: > git관련. --- diff --git a/_featured_categories/c#.md b/_featured_categories/c#.md new file mode 100644 index 000000000..eab81830b --- /dev/null +++ b/_featured_categories/c#.md @@ -0,0 +1,10 @@ +--- +layout: list +title: C# +slug: c# +menu: true +submenu: false +order: 9 +description: > + C#관련 내용 +--- From 9f0b190c1322a2c20236e18e508bcb23de61fb3c Mon Sep 17 00:00:00 2001 From: D-Gun Date: Sun, 20 Jun 2021 22:48:17 +0900 Subject: [PATCH 19/59] =?UTF-8?q?markdown=EC=98=A4=EB=A5=98=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=20=EC=88=98=EC=A0=95=EC=8B=9C=EB=8F=84=202=EC=B0=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _featured_categories/c.md | 2 +- _posts/2021-03-17-java-class-instance-member.markdown | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/_featured_categories/c.md b/_featured_categories/c.md index 0cfe81d04..7b3c2f917 100644 --- a/_featured_categories/c.md +++ b/_featured_categories/c.md @@ -3,7 +3,7 @@ layout: list title: C slug: c menu: true -submenu: true +submenu: false order: 3 description: > C언어 관련. diff --git a/_posts/2021-03-17-java-class-instance-member.markdown b/_posts/2021-03-17-java-class-instance-member.markdown index 1a30cb76f..985f6105a 100644 --- a/_posts/2021-03-17-java-class-instance-member.markdown +++ b/_posts/2021-03-17-java-class-instance-member.markdown @@ -29,6 +29,7 @@ header-img: ## Class 멤버와 Instance 멤버의 접근 - 아래 구문에서 Class멤버인 Static변수와 int형 변수, 이 Class를 바탕으로 생성한 Instance의 멤버로의 접근에 대해 알아보자. +``` ```java class C1 { //클래스 C1 static int static_variable = 1; @@ -55,7 +56,9 @@ class C1 { //클래스 C1 } ``` + - 위와 같이 작성된 클래스는 아래 구문처럼 사용된다. + ```java public class ClassMemberDemo{ public static void main(String[] args) { //메인함수 From b6e45747ccd6f0264bef09f33bfa76fdee1640e4 Mon Sep 17 00:00:00 2001 From: D-Gun Date: Sun, 20 Jun 2021 22:49:59 +0900 Subject: [PATCH 20/59] =?UTF-8?q?markdown=EC=98=A4=EB=A5=98=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=20=EC=88=98=EC=A0=95=EC=8B=9C=EB=8F=84=203=EC=B0=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _posts/2021-03-17-java-class-instance-member.markdown | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/_posts/2021-03-17-java-class-instance-member.markdown b/_posts/2021-03-17-java-class-instance-member.markdown index 985f6105a..212786924 100644 --- a/_posts/2021-03-17-java-class-instance-member.markdown +++ b/_posts/2021-03-17-java-class-instance-member.markdown @@ -29,7 +29,10 @@ header-img: ## Class 멤버와 Instance 멤버의 접근 - 아래 구문에서 Class멤버인 Static변수와 int형 변수, 이 Class를 바탕으로 생성한 Instance의 멤버로의 접근에 대해 알아보자. -``` + + + + ```java class C1 { //클래스 C1 static int static_variable = 1; @@ -57,8 +60,14 @@ class C1 { //클래스 C1 } ``` + + + - 위와 같이 작성된 클래스는 아래 구문처럼 사용된다. + + + ```java public class ClassMemberDemo{ public static void main(String[] args) { //메인함수 From e148cc42720d381f64bfab33867c5ca4e2a9fab9 Mon Sep 17 00:00:00 2001 From: D-Gun Date: Sun, 20 Jun 2021 22:54:48 +0900 Subject: [PATCH 21/59] =?UTF-8?q?markdown=EC=98=A4=EB=A5=98=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=20=EC=88=98=EC=A0=95=EC=8B=9C=EB=8F=84=204=EC=B0=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _posts/2021-03-17-java-class-instance-member.markdown | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/_posts/2021-03-17-java-class-instance-member.markdown b/_posts/2021-03-17-java-class-instance-member.markdown index 212786924..2f81345f1 100644 --- a/_posts/2021-03-17-java-class-instance-member.markdown +++ b/_posts/2021-03-17-java-class-instance-member.markdown @@ -32,6 +32,7 @@ header-img: +
```java class C1 { //클래스 C1 @@ -60,13 +61,10 @@ class C1 { //클래스 C1 } ``` - - +
- 위와 같이 작성된 클래스는 아래 구문처럼 사용된다. - - - +
```java public class ClassMemberDemo{ From 54b73b6d83cd571cf541949f3c1067be3880d3bb Mon Sep 17 00:00:00 2001 From: D-Gun Date: Sun, 20 Jun 2021 22:57:36 +0900 Subject: [PATCH 22/59] =?UTF-8?q?c=EC=96=B8=EC=96=B4=20=EA=B4=80=EB=A0=A8?= =?UTF-8?q?=20=EB=82=B4=EC=9A=A9=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/D-Gun.github.io/v16/.suo | Bin 52736 -> 52736 bytes .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _featured_categories/c.md | 10 ---------- 3 files changed, 10 deletions(-) delete mode 100644 _featured_categories/c.md diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index bfb0b6cd3086c8ecfb212c362fdb0495fe0f1ff2..1dbed6aede753d2ff0a5d70164ab76105c6219cb 100644 GIT binary patch delta 451 zcmZpe!`v{3c|#5p>xZHy^*fsj+4>nLu}Dmo;o#trXJBCX4+I=Qda@3S#pDzY36_6A zfyoUl20CUyQ2`*<0%9E?2B}mA(kf6kh_4T1D*^H5I~*#ElbCW?7x26>x-+?ushRQ4 z=C5p<8Fh?+vKl~a0K~|qfpnppw)qN21JmRX-Zh(eQW$w}0ae@vVvvLWZ7$^PXW8VW z!ZcY$Xg((+$nIdE+~kKw@{(L10+Z65H#>{%)m$XRxJZ<7lan*!in@gN~gcc<+EsEfpl;ObGHQ6yb zdUD+Yjmh^lI21N&)g7xYNDF9MX?ss5ts$Xv`KN{byBERogKbd;)1rbn03lJITL1t6 delta 490 zcmZpe!`v{3c|#5ptHI^G-8Ux}GBq<^-TakFnNdWZfq~&a5c~rXP%v4C#X?34C}9J{ zQcwjTIdLGH2Z$#(uo#$t1O$K_10c2lViO=%24Zs{2Fa-aX?-Z014su0@#H5g8H`Gk z6XRxv`vTi7QwddyMLZ*JkNgOM5K)N)5s*HgcX0i^D4Ko=euLR_SOx}Ejqk(Di z6jqhZ72IzaC#P`FS;WUONkC?@jKh=38K+z($?;6S;Ak+p0M4A$qBdDgWbWp}4z`Ry z_GUG)Tbh$>oH@ac1bJfeLnHag227lrOKf@=HwmdQZB}u)BRHwzFeifpP}&Ju$rmdg z#zhfai^7-|r7%qrbLM1p1xkY)hA>5}hjCE`+oY%l0VCUMY5Nsk`X4QK|7P{gC2#V? zG&2z!hJ1zshE#?;20I2`1}>mhpys%ENhO`cR3r05vm^uERAZBf^AH)clr&w_)WkGn dOOw>p$rs`jxun55z`7jbG$v;h&sbCt2LQU7n`{68 diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 48e22c8d63f56a0b1fa57fd60e062c06db096dd3..5720699e3a7e4a52f392aa3c564b100ae67d35f1 100644 GIT binary patch delta 167 zcmZozz~8Wde}XjQ`-w8njPDy0S`!$zCNM4PXSQN^I-PX_Q_}X#2~0VR+&|gQ!{GD> z6Pey_KRt;lpOb~hoq>J3-5jPPi#h5T{Mo|U_{FF5I55xIzRZF71}_WWB?htWO@7Qx zg3OtWPo}dcFt4A!BY|0U`t1bfzbs5#3_RQKBr>b=v9K^RbWCS0U|uQxc=q_OuC1xs06W*`RRx zgNaOUx1XNGl+Ve+#>~jH-EI!kk;Pn>7y{VB+4#lz>ZWr!Fwfb(!h!i3FN<)iKHK&t zKjtPu<}Ah=)7cZ4*E0d>Z3)b()9)rQ|7PK45oO$dCy`l|kA*d#p>sNG0rN^G7Ut>e Z3YfFDOBFJ|WMbiD7G>JbUc&q{8UXAYIeh>C diff --git a/_featured_categories/c.md b/_featured_categories/c.md deleted file mode 100644 index 7b3c2f917..000000000 --- a/_featured_categories/c.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: list -title: C -slug: c -menu: true -submenu: false -order: 3 -description: > - C언어 관련. ---- From 78eccfc325824aba2e96a7fc286bbcd0331bf567 Mon Sep 17 00:00:00 2001 From: d-gun Date: Mon, 28 Jun 2021 22:58:12 +0900 Subject: [PATCH 23/59] Java DI --- .vs/D-Gun.github.io/v16/.suo | Bin 52736 -> 68096 bytes .vs/VSWorkspaceState.json | 4 +- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _featured_categories/Git.md | 2 +- _featured_categories/Java.md | 2 +- _featured_categories/c#.md | 2 +- _featured_categories/favorites.md | 2 +- _featured_categories/sql.md | 2 +- ...7-java-class-instance-member (2).markdown} | 0 _posts/2021-06-28-java-Spring-DI.markdown | 134 ++++++++++++++++++ 10 files changed, 142 insertions(+), 6 deletions(-) rename _posts/{2021-03-17-java-class-instance-member.markdown => 2021-03-17-java-class-instance-member (2).markdown} (100%) create mode 100644 _posts/2021-06-28-java-Spring-DI.markdown diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 1dbed6aede753d2ff0a5d70164ab76105c6219cb..2c8fc149562223bebcc9bab0cfd8b899ca8a914a 100644 GIT binary patch delta 10303 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 LuW;^UI#c^UCZV3RF)qnHkeRc6#0?W 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 diff --git a/_featured_categories/Git.md b/_featured_categories/Git.md index fa4a6092e..fcad599e0 100644 --- a/_featured_categories/Git.md +++ b/_featured_categories/Git.md @@ -4,7 +4,7 @@ title: Git slug: git menu: true submenu: false -order: 8 +order: 7 description: > git관련. --- diff --git a/_featured_categories/Java.md b/_featured_categories/Java.md index bc31d101a..69155ba44 100644 --- a/_featured_categories/Java.md +++ b/_featured_categories/Java.md @@ -4,7 +4,7 @@ title: Java slug: java menu: true submenu: false -order: 2 +order: 3 description: > java관련. --- diff --git a/_featured_categories/c#.md b/_featured_categories/c#.md index eab81830b..4ccd6393d 100644 --- a/_featured_categories/c#.md +++ b/_featured_categories/c#.md @@ -4,7 +4,7 @@ title: C# slug: c# menu: true submenu: false -order: 9 +order: 2 description: > C#관련 내용 --- diff --git a/_featured_categories/favorites.md b/_featured_categories/favorites.md index ce39a7020..c3f4bf7b6 100644 --- a/_featured_categories/favorites.md +++ b/_featured_categories/favorites.md @@ -4,7 +4,7 @@ title: Favorites slug: favorites menu: true submenu: false -order: 7 +order: 8 description: > 개발, 일상 등 유용한 즐겨찾기 모음. --- diff --git a/_featured_categories/sql.md b/_featured_categories/sql.md index c59e0fc4c..efd882e28 100644 --- a/_featured_categories/sql.md +++ b/_featured_categories/sql.md @@ -4,7 +4,7 @@ title: SQL slug: sql menu: true submenu: false -order: 5 +order: 4 description: > SQL관련. --- diff --git a/_posts/2021-03-17-java-class-instance-member.markdown b/_posts/2021-03-17-java-class-instance-member (2).markdown similarity index 100% rename from _posts/2021-03-17-java-class-instance-member.markdown rename to _posts/2021-03-17-java-class-instance-member (2).markdown diff --git a/_posts/2021-06-28-java-Spring-DI.markdown b/_posts/2021-06-28-java-Spring-DI.markdown new file mode 100644 index 000000000..4b0081d1d --- /dev/null +++ b/_posts/2021-06-28-java-Spring-DI.markdown @@ -0,0 +1,134 @@ +--- +layout: post +title: "Spring-DI" +subtitle: "member access" +categories: java +tags: +comments: true +header-img: +--- + +# Spring Framework-DI +- 이 내용은 뉴렉처 채널의 너튜브를 보고 정리를 위해 작성하는 것이다. +- 자세한 내용은 아래의 너튜브 링크를 참고하자. +- [뉴렉처 - 스프링 프레임워크 강의 5강 - Dependency를 직접 Injection하기](https://youtu.be/gtqctgfywn4) +--- +## DI? +- DI(Dependency Injection) + - Dependency를 주입하는 작업을 의미한다. + - Dependency는 또 뭔가? 한글로 번역하면 의존성, 종속성이라고 한단다. + - 코드에서 두 모듈간의 연결. + - 객체지향 언어에서는 두 class간의 관계라고도 말한다. + - 일반적으로 둘 중 하나가 어떤 용도의 사용을 위해 다른 하나를 사용한다. +- 그렇다면, ```Exam exam = new Exam();```의 구문을 생각해보자. 여기서, Exam()이라는 생성자의 내용이 업데이트 되었다면, 해당 부분의 수정을 위해 Exam()생성자를 사용한 코드는 모두 수정해야 한다. +- 이 상태를 결합력이 높은 상태라고 부른다. +- 저런 구성의 코드가 100줄이 있다고 가정하면? 일일히 다 수정을 해야하는 상황이 생길수도 있다. +- 이런 불편함을 해결하기 위해 이 내용을 수정할수 있도록 결합력을 낮출 필요가 있다는 말이다. +- 여기서 사용되는 것이 DI이다. +- 그렇다면 어떻게 DI를 하는 것인가? + - 세가지로 나누어 진행한다. + - Constructor Injection + - Field Injection + - Method Injection +- 아래의 링크에서 자세한 내용을 확인하자. + - [DEPENDENCY(의존성)이란?](https://tony-programming.tistory.com/entry/Dependency-%EC%9D%98%EC%A1%B4%EC%84%B1-%EC%9D%B4%EB%9E%80) + +## 그럼, DI를 직접 만들어 보도록 하자. +- 아래 구문들을 보며 DI를 직접 만드는 과정을 살펴 보도록 하자. +- Spring Framework를 사용하지 않고 만들어 보면서 Framework의 고마움을 느껴 보도록 하자. + +
+ +Program 부분 +```java +package spring.di; + +//entity부분 형성 +import spring.di.entity.Exam; // Exam interface를 생성하고 객체를 생성한다. +import spring.di.entity.NewlecExam; // Exam 인터페이스를 implements하는 NewlecExam class를 생성하고, interface의 method를 overriding함으로서 해당 method를 구현한다. + +//ui부분 형성 +import spring.di.ui.ExamConsole; // ExamConsole 인터페이스 사용 +import spring.di.ui.GridExamConsole; // ExamConsole 인터페이스를 implements하는 GridExamConsole class를 생성하고 interface의 method overriding 하여 method실체 구현 +import spring.di.ui.InlineExamConsole; // ExamConsole 인터페이스를 implements하는 InlineExamConsole class를 생성하고 interface의 method overriding 하여 method실체 구현 + +public class Program { + + public static void main(String[] args) { + + Exam exam = new NewlecExam(); // Exam 인터페이스를 이용해 객체를 생성한다. + //ExamConsole console = new InlineExamConsole(exam); // ExamConsole 인터페이스를 이용해 객체를 생성하고, InlineExamConsole생성자에 exam을 Injection. + ExamConsole console = new GridExamConsole(exam); // ExamConsole 인터페이스를 이용해 객체를 생성하고, GridExamConsole생성자에 exam을 Injection. + console.print(); // 생성된 객체인 console의 print method에 접근 + } +} +``` + +
+ +Exam interface +
+ +```java +package spring.di.entity; //entity package에 interface 생성 + +public interface Exam { + int total(); + float avg(); +} +``` + +
+ +NewlecExam class +
+ +```java +package spring.di.entity; + +public class NewlecExam implements Exam { //Exam interface를 implements + private int kor; + private int eng; + private int math; + private int com; + + + //Exam interface의 method를 overriding으로 구현 + @Override + public int total() { + return kor + eng + math + com; + } + + @Override + public float avg() { + return total()/4.0f; + } +} + +``` +## Entity는 뭐야? +- 이 내용은 아래의 링크를 참조하여 만들었다. + - [엔티티란 무엇일까?](https://rh-cp.tistory.com/78) + - 자세한 내용은 링크를 참고 바란다. +- Entity는 RDB(관계형 데이터베이스)에서 사용되는 용어로, 데이터의 집합, 개체를 의미한다. +- Entity는 아래와 같은 특징을 가진다. + - Entity는 유일한 식별자를 가지고 있어야 한다. 예) 구로동 주민 Entity에서는 주민번호, 회원 Entity에서는 ID + - Entity는 2개 이상의 인스턴스를 가지고 있어야 한다. + - Entity는 반드시 Attribute(속성)을 가지고 있어야 한다. 예) 학생 Entity에서는 학번, 이름, 학년 등.. + - 다른 Entity와 최소 한개 이상의 관계가 있어야 한다. + - 업무에서 관리도어야 하는 집합이어야 한다. +- Entity는 그 구성에 따라 아래의 종류로 나뉜다. + +#### 유형, 무형에 따른 종류 +|종류|내용|예시| +| :---: | :--- | :--- | +| 유형 Entity | 지속적으로 사용되는 Entity | 학생, 선생님..etc +| 개념 Entity | 물리적 형태가 없는 Entity | 보험상품, 조직..etc +| 사건 Entity | Business process를 실행하면서 생성되는 Entity | 주문, 취소, 수수료..etc + +#### 발생 시점에 따른 종류 +|종류|내용|예시| +| :---: | :--- | :--- | +| 기본 Entity | 키 Entity 라고 불린다. 다른 엔티티에 영향을 받지 않는 독립적으로 생성되는 Entity | 고객, 상품..etc +| 중심 Entity | 기본 Entity와 행위 Entity 중간에서 기본 Entity로부터 발생하고 행위 Entity를 생성한다. | 주문, 취소, 체결..etc +| 행위 Entity | 2개 이상의 Entity로부터 발생된다. | 주문내용, 취소내용..etc \ No newline at end of file From 0f915282645bb9541bc73adc8716c03ce623f922 Mon Sep 17 00:00:00 2001 From: d-gun Date: Mon, 28 Jun 2021 23:01:35 +0900 Subject: [PATCH 24/59] Java-Spring-DI(2) --- .vs/D-Gun.github.io/v16/.suo | Bin 68096 -> 69632 bytes .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _posts/2021-06-28-java-Spring-DI.markdown | 6 +++++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 2c8fc149562223bebcc9bab0cfd8b899ca8a914a..4afd51a9e2364c6f37929b9a366fc4da786f93af 100644 GIT binary patch delta 2218 zcmchYdraF^6vulngh2D1Y)AQ?z`%;{Lhdth)7X=NglUzW`f z!y^2S3Q;%lryKvEfnLKOOOz#sWhTpnXwZ-)f{8IEE?FXw%w*Ja@z;oo#y^}l`ShH7 z?z7)}?)?d`D}^cLm?eQKW~m*KVn59kON2q5{n!|lt?s^j?^H* zNH?+%$w0J-9l^Epyea4;BQ_)rX+iiV647QNhma)1i14@xZT7e`I;>p|@L)Xp_2bS| zZP2cu0sRC-HSUaPk3#1ug!evy_Bir1a#D_+mMw4RC0DMu$<~7Q%&tCJvi~gFRN05w zOBQl*+^H97PpD($${vyjWRP^9*7!cs5$DJKv#PqIT?VtwXWHf2(zly!_v3ohP?*t@CC7cdga6 z?OO8Np839Y=*P(QIJ5_lc;q0WM+`^;l87WBMkEJoN+1=(g{H+~=xwrytSv@iYko)|WwEzFp8Z=aM& zJ%=@vX;K~#ai~(s9|Pa&%r!Jhq;e`2&lm>Y`?=W~D7bmeAyq2H(sE@X zU+3HS1XMNzT%}7v1sLE@f^Ttfl{F}NUit#TPOR|zr%}`Jm=n?v^<3l$C)|thynv~xs6^%X=g4;)Aq4Yx=Oc*c;eDe@ zspOBpua&vpnkCFQV#Ix3$>{^IHqeHhW&aIoI0KYHqdV=9qKZ^Q}4d4y!fK-boa1gLArwnYvbp z^d^;VQCObNX4#X=L~JVueTJIVPR$bOj?yEYC;mGb0~g+ZSt>>?{yA5#lV(`2i($fb z)Gd3mn|05xkjI&G#KFi{9l>MK5m{=EOMW$?#h delta 2770 zcmd6pe@s(X6vy9vZIKqJs0Aw^pj1SlK>3X#l);24@&$sozrtP=1rgw>;n5iJRsXTRo1AIbn7V>H2EDIgyB$_k@SwR=T6KA zN1Ase4Po*sI1WyL*T69F0-xwI##$a0 z0~=Tcl0bObD5asY88Ba5Hi}JUTT4}-x=}qA*NvPO*Nt>Eaz~n1KeI}42==ThZGw#g zJgZ6@VgHY+WN2bfMx>JAG#n`l*Z`<7LAp)t}u=ldW16r+b7;JwCSR>2?Qb1Uy%-k@i6mgzw8AM;aqo~V!B zj6ZZ83L3t@w?-FSqs+xUX1euQenXjCu}t(QOffzs+W4$BPqCP1m~0Z|B&Y`%yTAt% zxBqEOZ4y}~?_D2Y8+mWqFiTe+rbUUeUF0hsSQTr=cN%}PMN}*~GcoeFEH!`Yoz98W z`;9mIYaeZXRMXYb)-HJ*hr8WQM^9_5)5DD)WJQ%`+wzWYlUzNHJ|5%Djqh|wo?f?O zfp2>nxf+VIOXodLkSFW(SHy}+Y)b*tGpZ%Ex=?z!XV06y`Wh{@JpRMlbx2th_tf8t zEP65M8qym1#b!D$#q&eS(F<@Zfi3u=7V1{Zgys9 zdRp`4T_Tr0&QvmA-pP3X)Ej*AzCkhUeWXiTA~~H>A2RB3^eoKL0OiQMR5rIuebPeT zA@WUF%Gd4ab2|FrUC8>$Y4uW0J+HVH#v3Hps4!P-5&0#(jEy$`S3hNjf}(7-?tG1N zBmHY$)sV<h ztcIU-l>5(5sXLCEb!f*$F`TI23xXhwHb=7E%C3Pc%in&f|vPfkHz-7TotM*t7dcSVeYNXj29xxyTS~aWI#`w{O}|G z;9x?+>sUZ<3V)5v^;grm{q0Ha-kq+be|=Xo>esU>UL^-KXd$EHdh~qi9iP0v&wp`} z@!YFrk!t&?RM=gIft?#2*RWIk%5|f1>8HI$ZvVBEr({KcR%2ja=td{?%>MKvU!INs E14JxxG5`Po diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 743697b02358a7d4de08d0f96326ec922f53b3b1..a1b9e8d1fa0b29e5bd9ee3799d47c8fa177f1ab3 100644 GIT binary patch delta 24057 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 Yj1=Y<4-;7uRR7Ep9O{ofO1|X(9{?NHssI20 delta 24228 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 diff --git a/_posts/2021-06-28-java-Spring-DI.markdown b/_posts/2021-06-28-java-Spring-DI.markdown index 4b0081d1d..f64ff3798 100644 --- a/_posts/2021-06-28-java-Spring-DI.markdown +++ b/_posts/2021-06-28-java-Spring-DI.markdown @@ -116,10 +116,12 @@ public class NewlecExam implements Exam { //Exam interface를 implements - Entity는 2개 이상의 인스턴스를 가지고 있어야 한다. - Entity는 반드시 Attribute(속성)을 가지고 있어야 한다. 예) 학생 Entity에서는 학번, 이름, 학년 등.. - 다른 Entity와 최소 한개 이상의 관계가 있어야 한다. - - 업무에서 관리도어야 하는 집합이어야 한다. + - 업무에서 관리되어야 하는 집합이어야 한다. - Entity는 그 구성에 따라 아래의 종류로 나뉜다. #### 유형, 무형에 따른 종류 +
+ |종류|내용|예시| | :---: | :--- | :--- | | 유형 Entity | 지속적으로 사용되는 Entity | 학생, 선생님..etc @@ -127,6 +129,8 @@ public class NewlecExam implements Exam { //Exam interface를 implements | 사건 Entity | Business process를 실행하면서 생성되는 Entity | 주문, 취소, 수수료..etc #### 발생 시점에 따른 종류 +
+ |종류|내용|예시| | :---: | :--- | :--- | | 기본 Entity | 키 Entity 라고 불린다. 다른 엔티티에 영향을 받지 않는 독립적으로 생성되는 Entity | 고객, 상품..etc From 49cc5d09369ae0cbef2a13ba4b770c9d154c5007 Mon Sep 17 00:00:00 2001 From: d-gun Date: Mon, 28 Jun 2021 23:03:05 +0900 Subject: [PATCH 25/59] java-spring-di(3) --- _posts/2021-06-28-java-Spring-DI.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/_posts/2021-06-28-java-Spring-DI.markdown b/_posts/2021-06-28-java-Spring-DI.markdown index f64ff3798..23ae215f4 100644 --- a/_posts/2021-06-28-java-Spring-DI.markdown +++ b/_posts/2021-06-28-java-Spring-DI.markdown @@ -119,6 +119,8 @@ public class NewlecExam implements Exam { //Exam interface를 implements - 업무에서 관리되어야 하는 집합이어야 한다. - Entity는 그 구성에 따라 아래의 종류로 나뉜다. +
+ #### 유형, 무형에 따른 종류
@@ -128,6 +130,8 @@ public class NewlecExam implements Exam { //Exam interface를 implements | 개념 Entity | 물리적 형태가 없는 Entity | 보험상품, 조직..etc | 사건 Entity | Business process를 실행하면서 생성되는 Entity | 주문, 취소, 수수료..etc +
+ #### 발생 시점에 따른 종류
From d5b57b90cb8a2dd2010a9ee40485c1091a728b37 Mon Sep 17 00:00:00 2001 From: d-gun Date: Mon, 28 Jun 2021 23:04:02 +0900 Subject: [PATCH 26/59] java_spring_di(4) --- _posts/2021-06-28-java-Spring-DI.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2021-06-28-java-Spring-DI.markdown b/_posts/2021-06-28-java-Spring-DI.markdown index 23ae215f4..6a2f9e1cc 100644 --- a/_posts/2021-06-28-java-Spring-DI.markdown +++ b/_posts/2021-06-28-java-Spring-DI.markdown @@ -108,7 +108,7 @@ public class NewlecExam implements Exam { //Exam interface를 implements ``` ## Entity는 뭐야? - 이 내용은 아래의 링크를 참조하여 만들었다. - - [엔티티란 무엇일까?](https://rh-cp.tistory.com/78) + - [엔티티란 무엇일까?](https://rh-cp.tistory.com/78) - 자세한 내용은 링크를 참고 바란다. - Entity는 RDB(관계형 데이터베이스)에서 사용되는 용어로, 데이터의 집합, 개체를 의미한다. - Entity는 아래와 같은 특징을 가진다. From dd65d97d34413f3f6c460c0a607859069e7b64ee Mon Sep 17 00:00:00 2001 From: d-gun Date: Mon, 28 Jun 2021 23:15:40 +0900 Subject: [PATCH 27/59] java-spring-DI(5) --- _posts/2021-06-28-java-Spring-DI.markdown | 4 ---- 1 file changed, 4 deletions(-) diff --git a/_posts/2021-06-28-java-Spring-DI.markdown b/_posts/2021-06-28-java-Spring-DI.markdown index 6a2f9e1cc..369836c1f 100644 --- a/_posts/2021-06-28-java-Spring-DI.markdown +++ b/_posts/2021-06-28-java-Spring-DI.markdown @@ -122,8 +122,6 @@ public class NewlecExam implements Exam { //Exam interface를 implements
#### 유형, 무형에 따른 종류 -
- |종류|내용|예시| | :---: | :--- | :--- | | 유형 Entity | 지속적으로 사용되는 Entity | 학생, 선생님..etc @@ -133,8 +131,6 @@ public class NewlecExam implements Exam { //Exam interface를 implements
#### 발생 시점에 따른 종류 -
- |종류|내용|예시| | :---: | :--- | :--- | | 기본 Entity | 키 Entity 라고 불린다. 다른 엔티티에 영향을 받지 않는 독립적으로 생성되는 Entity | 고객, 상품..etc From 0757e8535f8e74e23ffce83098dd71282c50fa2c Mon Sep 17 00:00:00 2001 From: d-gun Date: Mon, 28 Jun 2021 23:17:38 +0900 Subject: [PATCH 28/59] java-spring-DI(6) --- _posts/2021-06-28-java-Spring-DI.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/_posts/2021-06-28-java-Spring-DI.markdown b/_posts/2021-06-28-java-Spring-DI.markdown index 369836c1f..8f126d387 100644 --- a/_posts/2021-06-28-java-Spring-DI.markdown +++ b/_posts/2021-06-28-java-Spring-DI.markdown @@ -122,6 +122,7 @@ public class NewlecExam implements Exam { //Exam interface를 implements
#### 유형, 무형에 따른 종류 + |종류|내용|예시| | :---: | :--- | :--- | | 유형 Entity | 지속적으로 사용되는 Entity | 학생, 선생님..etc @@ -131,6 +132,7 @@ public class NewlecExam implements Exam { //Exam interface를 implements
#### 발생 시점에 따른 종류 + |종류|내용|예시| | :---: | :--- | :--- | | 기본 Entity | 키 Entity 라고 불린다. 다른 엔티티에 영향을 받지 않는 독립적으로 생성되는 Entity | 고객, 상품..etc From 40f45de6ebbff9face087e9263d406262668b929 Mon Sep 17 00:00:00 2001 From: d-gun Date: Tue, 29 Jun 2021 16:40:12 +0900 Subject: [PATCH 29/59] =?UTF-8?q?Spring=5FTutorial=20=EC=82=AC=EC=A7=84?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/D-Gun.github.io/v16/.suo | Bin 69632 -> 67072 bytes .vs/VSWorkspaceState.json | 1 - .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _posts/2021-06-28-java-Spring-DI.markdown | 6 ++++-- assets/img/post_img/Spring_Tutorial_1jpg.jpg | Bin 0 -> 250494 bytes 5 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 assets/img/post_img/Spring_Tutorial_1jpg.jpg diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 4afd51a9e2364c6f37929b9a366fc4da786f93af..1b568bef5e1da40da35423d51d691e77011fc732 100644 GIT binary patch delta 2253 zcmb`Idu&rx9LMjuyL+_j#>TqQjSAhEbCzA`ZM$_$lrhI@L||oe7$C5&>)Zm8MK;+3 zSecPWB+B|zXCN{2f?^^X)|-eZVhKp1Au)&pL;M30V#HTsvJuh9{GM`)Q(lsIl23oX z^SkH#&f|M}PH0F9?UZ)S&8`##Apu+)A0LN_`S%U`riy9N4cE>TuRX`6AsV7?v6m?{ zCe}$SP^XK|>Esa8s4HQpFC78&9_J}i;m-%TKmulv0jj_(z}xXM6}|-|fk{9CS-=V& z1$p2J@F&_%f#rP`!)AjgK^m9|41!P~l)||m6an7Q30n*n>h%Zcur$4|05v|viKSL= z5s%fOZUQMFA1nh4Kn?JM$ABBe+b@A{)9Xf92k?P1J(i=}<$}-<>r|}=c!HI>@6m0e zZku!))Gcq@0>4$SubB|<9`JdrJqYxIjbIbl4EjI_gp;00+xfd4X@bmOKtu>Zs+EJOQ z2V~e;+Iz-@EPO9Hl$&zs`Qn2*QFj4%JU;B7$-?O!Y!!8;_b~^J;deH5PO6jm>DO-v zgQ*1Vk0QX!-J7!#Z7efYjO2AOHb~v_yL$`GqE=}6mZ{T3)hdPyI+CU$qa;yJ!SBpM zoiq9pryyXbtJ$(vWINB)LXkqrMa)h4VlGAVOB3-~V1vU3_Bd?`&KryxSS1tw>CTNz zu4XB#(U4yv@ySz1))E8b_f6x3s3`*pFCf4RW&R>-a`BmjNX{rr%*K~??W#N}T{D05 z6B}qZsgHt(RI~6b9N(KE3x? zkajm;d}(V-16@?ibfLzEsWR`pu(v(K;gB6Du^;YG$ZOYr@GehG;a3R1m;RpkqI#)( zLO>f`WD?bSQC*77@fFk3A1&+)n!jwA7CZ7tYH?>cA3odisqONT&o+3kR9vZEN41|E zR2z~=S#8lQtG;Jyr5I`KG$d>j1g)!WJ4+ixdj6-!-U{0&t*!O?r#1Cbs^U^g+#75B zYu5)UudOIy{Yqzi)SJf9YL6Ubk!QOkzAw-1NYupoYfRlNMK%{g`2Hc5!Y@(&KExMi zV%X)_V}+o4K#XjUrpo z`4kV704ic3pji;w-OlRP-uJS+mnQ$0-M0o@Uvt z1e#^P!{d>IP5yvC;0}}r0`5)Kd&sxHg6yqxwaU*!B4xf_MEQqi&^K>-_ExHlPM>Sa z?Z9NO7fbYcIQ(_wPfY@SeEL^9P*Z{`ScGEQOAZc(1R{dGD)>CCfjwPTeKa%jfo4Z@Ux>%}?z> zdkJl6SWZLVS?K(waHae*rm^;a~s& delta 2294 zcmchZe{54#6vywqecjg4!n&=ajJlOsU~X$^*Nt@(=7I}@D06ic5ekDcMhD#wSqlT> zHW0U={K0yH!v)Op!WJS(#(VJ>5}cybAdw#fRALAiG&2VL2T)A3o?BlL6BH8-FZuMG zd+v{S@Auw&UOTo69sRG zK7f98k9)cy;f|mg{V9m1$DLBk7y2~9TQ5Sp5P1e!qQq(x%j@}5pp;iC){b`d9c^ri zzXt7e#fPDGJKfsj&J44FuB>~{zfe4WZ&dM^+VMCNSDP!z)m9@hwXNvisWzYGKdH^@ zx!T;`O>HgKq1dI-26t1NZxipFhxTFQLBxXOAUr+;Z5Gg3DSz3D@fiJox5BBs@9(x^ zrc%$hqDb-o+zPEx;Oc@YvA|@Yf1E8IFrq(6DNjZVfkc;vSL9+LPkuA;G1}9d5dM$d z#|LQuLgU-14Q}AC6+#oL1wKjT(rL6g_`0JQ;7|CT&1sH&LqCp5X%;41@=j58Dt2#{ zZ%vG6Qfe!uJ7J@tOEfVtorz`^&Irb(V}nr@Y|8kBPJ~cqyE+X6Ir6P3@eICoB&lD- z_jby3)(;f)*Q~NNdsKCMr2VqRc10&Ar2kCCQYJ2A;q|T5EpMFT6yU(12g)j%lbV}a zyye!4P@`>ieb68B!Ei+m3@uFyA1IUNm8%n6I6l8ju?0hLfk)t577NJN7ibwgd)R5l z;O&QBWPbYjDdj1RKX7`!0sI$@kbG=0^nYoD3uj#L`g^IGCbH-xPbLHojTDDH+3-!Z zF)4rc`MUSb-#_v3hKiddH_ID=2GYS>ohClX#408(jKlSSW2sR#ddH}=Jfwk8@5|yE zD)v$-a6+YW9YttwZ-b>VBdBsbq|k&;SV$xpRaJH%T?#HI(;(>tp%>40&B6O z&Tg$Oa=MBO3Vn`MMRoF3NMYhG22}$S;L^Em@~%()RP2ib@p?IA=4$1t<3kkAeU=N$ z4jbgMQ?sd>CkO&tPPgfUt5!Fyt6$aP4f^XF*V-CtVJ|AlJk!9v+-Txii$e%bn2=?P z!wb`(3^H^!vVpXa=4f>^60byHam7OX$nnnngHeNrFWBPEx92;oc83*z@eEp5HZ?S? zXsopc>RW=gh8649);4Wu%pmxc@{EanCeb+{z z?W-+NHRh9j*FAdZw3OoC3N2)zIQ@|%5RSTf?Ud%weK2LLdgp6&F+BqMV@vQVqdq6* ns(GRx!MaC#FEZLqTjBK88mMs^;aX)fEH>`%{}1Y6 diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index 80d033c32..00648e1ec 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -3,6 +3,5 @@ "", "\\_posts" ], - "SelectedNode": "\\_posts\\2021-06-28-java-Spring-DI.markdown", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index a1b9e8d1fa0b29e5bd9ee3799d47c8fa177f1ab3..e983baa7b0d5e34d708ab637f031273d2c416757 100644 GIT binary patch delta 22645 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 D$%sQ1 delta 22610 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 z%0A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 We<~rI*K&*yrE8+%4LM0JiT@80@q!Bg diff --git a/_posts/2021-06-28-java-Spring-DI.markdown b/_posts/2021-06-28-java-Spring-DI.markdown index 8f126d387..2b75b54dd 100644 --- a/_posts/2021-06-28-java-Spring-DI.markdown +++ b/_posts/2021-06-28-java-Spring-DI.markdown @@ -66,7 +66,7 @@ public class Program {
-Exam interface +#### Exam interface
```java @@ -80,7 +80,7 @@ public interface Exam {
-NewlecExam class +#### NewlecExam class
```java @@ -106,6 +106,8 @@ public class NewlecExam implements Exam { //Exam interface를 implements } ``` +#### 구성을 보자면 아래 그림과 같다. +![Spring_Tutorial_1](https://D-Gun.github.io/assets/img/post_img/Spring_Tutorial_1jpg) ## Entity는 뭐야? - 이 내용은 아래의 링크를 참조하여 만들었다. - [엔티티란 무엇일까?](https://rh-cp.tistory.com/78) diff --git a/assets/img/post_img/Spring_Tutorial_1jpg.jpg b/assets/img/post_img/Spring_Tutorial_1jpg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..33eb78619d2d9c71d622f740e54486615d96cdea GIT binary patch literal 250494 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�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 Q{zYc|fAKTG`g`_&0CnfW+5i9m literal 0 HcmV?d00001 From 22215899505654f860608c900724b6dc0cb487ca Mon Sep 17 00:00:00 2001 From: d-gun Date: Tue, 29 Jun 2021 16:47:43 +0900 Subject: [PATCH 30/59] =?UTF-8?q?=EC=82=AC=EC=A7=84=20=ED=99=95=EC=9E=A5?= =?UTF-8?q?=EC=9E=90=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/D-Gun.github.io/v16/.suo | Bin 67072 -> 71168 bytes .vs/VSWorkspaceState.json | 1 + .vs/slnx.sqlite | Bin 249856 -> 249856 bytes ...utorial_1jpg.jpg => Spring_Tutorial_1.jpg} | Bin 4 files changed, 1 insertion(+) rename assets/img/post_img/{Spring_Tutorial_1jpg.jpg => Spring_Tutorial_1.jpg} (100%) diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 1b568bef5e1da40da35423d51d691e77011fc732..26b0ce2bd21e712d8fc7235b24e558dff4796e66 100644 GIT binary patch delta 4313 zcmeH~e^6A{702IwEWZ>HP{;}^EVvjz9=^AL{Ltu%2x4&m0cnsNf*=9 z&_tu`Nrt9&9P^OWNikJkqbXqw{;2)OR!v9a7$=pC)7oDt<0LjVO}F2>EXr7em`*zV zqi^Rk=ic+~uXoS6=iKesq3h_=?Uw1#3xWC&L0BmWf)Dto+wF!B7?^UnI7$p283+j& zsDGbDb9Du^i|uR;eJYmfB2cGca}3GiG-~tN=fp4qy1V@#r-Cm~o&~7`GXZ~>0~zKm z$3aE`J(vxq0|m?g2Jk3|1Omf)!#wy4FAc1LM9w-!qcp)8yKrk143z$Iys00rK z-kAn<1|`v3;fidO`RLYhI<7ArSC8!~j&cS;5$;vSL#_cvZ=HAGPZ{cbUn;!%wU8y? zF_7lfjka{VtGspDD{H-S!Cmd@M(eZP4Jg!mUuHozg3aDK4LObM*{~?tadUAKj+x6BA(z9K^owLEr84bnIH>fgN0xbcmym4OMnF|1vy|D$OXKA9%MdP0ak)l;2VIy8)G%Y z$uEMk7*v2#PzK5Y4NmEE{eOqBEK&{iALCdj;oq#{C z$u;XwUcq$h(cT;K1IZzE_|C>4C$w8LoJ>5$s6BjpENtj`zKf>Mf$xFs;CavqzOS)G zzh$mqgJ#fQ^X;G6#>C^i=Np>Ic!jy59e(i`^Q0fONB^D0QEQCTHx`N{?ba-RQH>KR z^kYer5`N?33d;?s#(+E&-&s@G*+6E6hR2jU+8I04lwg-BH-N|IjpJVVDHvP8{Qk)- zonpmVWYMSjmOwc|+f2)l+5+g5X^<={S9KrqVH>p97q4ULM$r|qLRUU+9L*8Y&$PL@ zms$TtCTeVj+sBpDCcfpXwdZVSYN6;V_>3iJw+j53S|Ymg`ixgcezoY(=3OzL|9t0n z2A$zAA1?eE`%%{3n!KN^Idk^>nGhOQX42I>bV))rezgSBPLH=DLLGG($|Xzf5j1W#+Dk70<1_Z1*_4|N^P4zxGb zw>s*Y8e7x~Keb4t*A6C8(x!{kj$?m#vKDb=c!j3bZSrXl%BgJ&Y+LR2r{O%@2?i9} zUnx^ZUE6#!LcJt7giS&nqTLph8w49@5?X{OQM2P+i_j|6LbeJmw5>4Qxc>aPYmxoN z>=%`SC(3@T_gVAHe?0H_X~*gQ>s22NX8t~bZ;!DR!=)h8*LenS6>N`OeEePGA6EZj zYyQpbo4Jj&yIc-2->p1XF5mu=Q}_B3t!+z)ZceJCWJsH>PgteedaKJ z-}o9^i!s5RNP8-?*)D8ABq^18O~0X;Jy^Fu8@^yME-_Om^yGTlcS%o|-^-*o-kC|R z&-B!B#^}HH>=bStim8}QreTAtEP*~M)zhz!#zsxx3|N_BFlQuZn4iwG*4u6T6vmg^ zZC~enLF4A@#HOTDQ*{9S^=K%qJ{Uy3O$q*roUEiho%i2$3jX<%a*FN}9V^jF+TLX2 zk8Zn8?U>pB>?xlB5qrq5r({JySGtRza=q=$ zH|H$VH!ryq_tNq&R-1FQYn=wB?hR015Y+=BmF%==mK{S(?Gx3PMD>tJIXkPh>fO~o zmbY;4`W)AClT|j$%7WAyDP68flhU%3OsPh$$&zeo=^54qX|gP5%A&A`%?lxk5_^jGFPtRmL4&OWJ&qsRLqHbAT4`gXb9Q;fEXtI(i~cQjdvLd~gZ<@YTnu zsCPOUk0dZ(T6v_FEUyhw%auZ{@I*f&^^;tRnHQuLsm+Y~j--V3+`Se_JuMR3Wa+W& zXL0urXP8uxk{%@L(NOQ7sV}eWe#bP4Tx|J&5mn`)S7ySfkivP3#m zuBWh*>kvPqr3X$mfs2rcnuXM7j#2Ri`-IC6z3?}W?{~3dI6Cn?mNG^oeT5VDfg8`C zoEv}D*!=GqZktt42Zq)vV`pRCm?)E|r$b5Oe{BPZ9K1TP4BI{&ro;6gZ>gnUcFiO6@_$V%9 Rej;r*EvDV3G!L>E@-I+#R2KjM delta 2736 zcmc(hYfKbZ6vyY@9aunEc?*bT7jOk+b!T~OL}=D^c_gLs@X^?+3s{IvsnUXlu3A>p zT4QJ;d(vQIVsz9rX|Pcyv1*JGAN^pOmTE&AYg=jRhbHX@<0I8Zw*R{fh!zstH0|B| z_MCg>&fGKezjN;R`(=NRyvJ_glHOt^$pzN{MuWkihzfts@w(aEG}t+MHK+9(_6#Ea zYVvU(Q|K;VF295TjW{yM&SR*{aG=|S08S5zYs`SZ1f&8PBmzt$xxoS;#)&o?ehLT& zGl2pUKss0o(m*wMh_SO^#W~AhlfX(41LlKBNt!Da!I=xJKn!%i=78t){ybPZBd4=W zvLq*T*Xm(0RJ7&jM}r7p0WW}ZPys4I6(|H_ql3X3_-4Hy1#1U&pjeM3>-I(6dUPw! zUn3rcaGZLuLAOo1ZPu+A(*l2k-hXvc{H@+PXSxr8Enq9y2HpnUzz+hv)#U2gzx~v> ze$R*WE1E(-GNGNAV0!I(>!z13 z9#i~X=`wK6KawsNCyM9Ppxb{}x~S6b(1T`@6b}-B=nIl3`Kj>J^nN<*9PkXt0A^qT znIH>fgSo&8=7AiL3-Z8xAg*nLT`=ZHg(eG4dc1Kl3;h2XrA=hyK#B#Ra4gl}=<&w+ zEMV#gUk5QxWRTC~V|Kc0>ShaR^UUt(e2hDbL!v$HuzXL%3Jez&MXz&_)RF&XWT^0n z8uKV>>lsMwV!TfxU&hCj?ar1(9^=Qg4)*}ltSQ&R0+}7*vyqA{lP~iDOQFqK-C?s3 z$kXm;7`bZYfl?1$v?yVSNsQ{0h18(TCQsQJSaS$Fm(ec`Oq-q;r#_KhO(YZ5vH^@I z6&;HyZXh5U#XYcTww$Ymf%qyWa}gPFnv6Qw*{)9uWuk(_`MzuIpmbYNTaiCb2OHM6V$>c!o?<`%rUu$IQGOn)SYCR`c zdk(#EKC$nBk;#W#Kd@Lw*>KA_^Di}*IxFv$-1BUt+H=R$RpF#;O3_j_wlP}mO{dxo zcHZ1fsor^p_BD=y3dS|o5H!-kqj{9KZaC%xZKWQU5I32lN1~8 zqv5U^TDrE3{7d|kr0T1eS-n=@^$AnA$^$#Hxt8s}o-pvvMHV5pKe0WJUm==7z0k*k z2u|}Xyc-Nzl99T+yVSjMz+%;`J2TnjPX{cp_j=U*5rND7=FWq+H&q(Sa(*4zwszQi zDapCg-FL%&_c!U42T3h`1+USFl1MjJnE%t2^bzCgF0S@-bvIX!ajJjcrMY?r4HP$2 zrB$6c$<#euJ^lF7np#TrET_Pp60Ib#ley}!aQ^_=MeEl)7CD<1*&Id1PFtbU*ko&R z6c*SDUUn)4Ma_y*T-3s(eaus0$8XCLM@6}_uv}5kb9FCQKjRd4!pRKu{h*h7_EGQA z67mf;(dwZYn(LsS)2%};^>aCFQ|CsOOUlt)I&dxikn1p`*N-S>2shEhSC823#cL^E zD$%H}eHK}H3Jva->Ee-6^$PB@zlAl>NPTM5RSXl~YD}V`>nEw_LzA#$xiC*Cwt6Uw zW}IFHTGVejb7}0S?-<42Y|uu3<}=BBGe^9NQB-^{{nKUP%pI#VBJz0mWTA zV0(f}u>;a{-L+EIin^4=F3SJhJMZ52UVi^wKfKBJoH=u*ojG%6=C0r2Sii%uIUYr9 zaSlfjd#n08QU3FHI%g80Ab(I^&hy_U#^xm2&T^`4m&|cofddkbV*6gld-fjoh4#sg zowl!@PnzVlNkDZLktVw3bChYz$y(C9h`VYZ$BF$&*V(ygTT_UD@!~G)y!_^aSq2KE;@(QqP(0u_%psAnS%3ja!b1YnwMrN*7djt@I-pz0_rbn zIk-Xe)RQEs>&{9wY*03-2KKz1%$!1?4Av-pwYsDNfo`6U(`e2OSbDDNM@N4zBNy4f>QJhpnd3sGCUwNPt&v%t#)kY!ixB%2)EWQud7{=2^_@=-xHw)ZEZ?# zpu+zK(en?G6u%H04oC()e*ovw^((Qcq7MN`&fzN&b;aRSdPv4{*Tjy#bkYhWirf~U zI=b%Z$fHRYu!wPO*NKk)asewo|GD+}Tt^+Zh`Yks6vr2~Gmazbbn8{y+qT_mh2wF@ zU5;h8`y4krvK$fi-|ZjUU$gJB-(hdEPqmj=&)6evzt{$;akllg#p)Vcs`aS#Ig6-f zTDMwPS?5@XTKihVEk9ZQWqH-|sO3&elVysf*b=AyPyJLqs6M6Mts><+<(~?5RiOuk z(_5wYITert40dT&~<8PU&Wv;1qrFvF}vOwLk-b%%Y4+|uf(B1@)9JOKACgrmH8-27T}(9czxpf?^7yi3?E) zD`&_An!FHY(IhD-(~$8DJhsrR*Qpzdjbet3)u~-&qs-b28N)JM4v})B4%%}<>v(z* z8tCr~`(iYPsWJWr8nzgfcTHR!P<{MJ9i#tUZ1l?b5sa&Rj-ZqqHS8LCV|KZ}$-{<; zoCC>XYoS36A1ZR;fHc$xpb7@n1fZ_nH%1otWki&TTr}ipUtHI?w2vVtvQ*?^HOcy{ zHergEpok8A0EZ`tTu)9GE0?qxnZi?9NlV%k1By^U4scbswbix<7zLI$Yq<&8lDVE5 zV`Xzwo1ZZviRBG~V2VYTbckF6QpEbEMNL{$o67YV2vR}kh07XEEUsAOQh<43_42v} zO^sRbk4cLxVs)%-T;9~&X2LxRnV6c|CuOE)`^h%!VeAy`pL1 z!U0CbqLZ-;2Yn0mh+6C=(pw5!Erbd$-m%-GzskXW%X?$%~`^t8c7BPU0 zfQ3zs?E!%?u=r?2>DnxAw=~q78M@Aojp#5Mp&x66#j9#+msBrUswvgmP%6GJBQCFP zZ8KCdhelkQrV9~Q#ih7vR_Oa3|50clN*e-hjl1Y zFD95Cm8c2ShHd?_MRkp4zNlV)yuNx>)3U(GkF-I>Kmou1U=$N6Gq}2@P3sy1j*@hB zM~l_-K}b+Nq6u`4R*%}Y`ntyUKt-JKFbp((7S>j`FKex>scf%aWNOtlW_&`azvE(K zp!q>WB}|Kjb&IlAHPjo$#zr$zTU~o?Lv?f3$^eNrHKM42x&erZ6uD#&(AqS=sl6?j zDLR5_chktBBgT&mQk%ZkXbgP%aU*h;FhSu=(6}3ikDM?im_H_rQR*6NYFB10ZV%EU zs|lq|)w9RhVUPuyRCmdYnnYPye=n@9tqImJ*1~ESWEPAp^zkO-9KsaiS@Btm>e}lT zH8!=@8cgw6FTe;wD|xMtU+)(Lm@I^8FPL&<`^Aj4whLJ zdVU!i))*yI=0rxBn zEnvAppgTh3EHm()`Joxw4MLc{T{AVxZlgOpP;%G9Z2@O9yH&^N(shQjncc#WZ2_d2 zA;$wq6GJvXjs#0Uej`J(J4{&(45)z1J8aL+sxPZs)FtY0)v5fXoKXIuxRlvSq2iD)$ZyCG z$t&auaq7kE*g z@9~XjCZc;bq8tk2U-UibMNzGN3Y+B zWIpg`#~sMRNSRV8_kMt|=1Is|%AMAc^M31@Ufn+c-;ddc_YUo`k$G787 zGy~i8Iv5qwwJ%`Sj@zu_qudz09YK2@Rkkbbc)QJQ8*huTeqnvqx=JZmRQW@Bw|tvi zEf1poH>2F4`^mkenT#cA1o5+kkA&xiP0~bZfb^U6p|n>Wp(aUpir2+|icg5^#3^Dw z;ZOXbP$^{d*ZGtDc0QSW>w9=J`W;#D&s-kF8~XE85DniCH9B-R;*~R;MGrz`(j#}H zvD!XW?D}l^K9%p_hWiN+n%GRkfFR71+PEaz{33GFj(gDMu9js9bQDDyU5(3A>GiEB z#h0`dsR&6LrK{I4@$TiR3337#0}+_qlFXcenR$ho;Ou8M)MwVE@?#O|x?GXe)o+=$ zVV?*M$|ca``%o-NxiEa`4#&S8&x(#t#~eq#@75itnedhexEymN+En;c^|z^W7rL2leg^fX zu($}m+0UZK5Gf=unY}1O8`XmEiCrjCP*1|3*2nZodgTe!R~x{vqx&a}!k;uCm;Lmm zW1fVD*P*@?25%Uo_Z)#)1H;ztPh0d6$(_{m0ui_Is; zne^1=6L}?-j1SBv8~y7kn2(wgzN1f}gNUBGAC?W@GiYs&itp#f;bsmut2y`?{F~#r z;{nGaM}Y&`PuL$+t;#pb>&ipQDrK6ItJvfVG;0s)J9Z+;;KPJ5;w*8$NaaN7n*5mT zu@Ln<#C;x8SF1P6mC^^&lafoCDP>Ed_&M1lW(a=?r-Vm@cA+Q#8UGmH$QP4O$fLeT z_Mj6;Z&gM2X1IItIeOwbR7Q6{q_r9)EnF7J?`t8JR_m&_Zj_oKA$V6 zC+|jmqVY~Gtqod;Te2?8&CSfEEzhI=wCY=wP05#Gbm%Cc&;p^aS=qi^QD`kbNg;uK_UoprRQft9 z^Ov+9lFV@^cGYiv1EteT0lq(9M}-D)iB7!yA`%p{INI_?fMK!5&`r%e*CKl5O)y!| zR001w&$UoT?Rskjq)mJ?;K9|fd{4b;)FaQefI;T~@+*HaC_}YQ?Nt4QQ4Q*+ctf>pNy7s}z!q zcaUoat#}7zgzIaGS>Hjf={iiaw+A)OAlEbGvLFH6x02$x$?BjLs9`8ly!* z6j86s5Mw+>xNc-HTRa2sXa+OCz<}vrM^T)=G6}~}FMqP)80y_yFD1@3LJNGr#<>=D z^^G-}6F1Pz?LCH){aKz2Bu^bf@qY9&$Q-Tg3z88 zpqk$_KeM%|tybIH1WKCx9_qz*@{z6~S|m&nOY|C=o^hmWupif}XyRjCgXosys1$as zpnDKpqQfl8Yr?eRIJ(iV{6mBPVVDR<9I55w~ zy7F~2QulSu!p6DsBn~zmxhGIbRIYw<6GY23X+3iFFs(@&>&nr^b%bV7NenjvpXKmb z+f`C(d&TA^%lTB>7+VkPC)P)-ORRb1H>+s*#PY1g4eNS;^)K~(a$0>tU9Zkmb5vP5 zr@X9eRu(H2O1OMpeopqtQ{`0YXXzd3KB-O`B00qWh%bt_iL=El5eXj%$-9JQ!VN++ z|1H1IaoX{Sqs=jbzta(E|Jv@e-^S0i&+^@U3c=zB{!cCivnNX2CGsqnis_-lC`pH{ zxK6VG?3b*pgFYq zpJ4xQI)k#zQx~5ktrORqTELwRpu)h^3U=i`3|{CE|RU%f25bC zjZ%#?ND33b1J8S#xLlkh_7{2KjPSB>w@@#X3*r2iypO+wpUda)gibhzhKb~3aD0CC z-FFVXg7uZm?-l&0oPblPp`W2Bw!ZDzf&|R{tR0P|&7<3xG|j?c7za_On>P^z!xJJckyp_lJ2q1D-N(gYHMb|djuP(EWQbQjZJSHQ1X zd&M-EcLq@l8TG#b>K{SWd`6x7KQr&r{~3~t+_`k}RdD%tp9wOHMeZDio(V;>8Cr4G zlr-TgDll}+)XQP}UeoTgmr`{^(} z@uM*{i`;z~Cp&jDWEHv77-z*#0Tq7=i0{LwjUNVY{tuZ9h3?+04x#G|&HdS2oZLw? z>=%^A0w{qxY!Bk-rE}2hKbtDpehK7vGHSywMpX*j@j4XF=7dp|0(Tta+c=8DUbxuY2bV=-W-iri5QJqV0`D|r0ZKodpiRC{Q< z((>N|96eb6b6Vro;5<-;MfY zyR8g569icp6!wQ%nO=XOOn<#5L6VKmY`3g4vgn}MYB_EQXiua`*HB_aXrJe}AzsfY z)OszTg22i<`!$62OfmUxo?f|zQoB_x-%S`CTD5#P)?s=MHHn zE#K9lquu*u^Pgru*IJe@``ZxJTx)c=TW6HJR_mTF-4w!I?z)9Jz@ZwKyH+t+4;z}* zE_bbDLNcx!4OH%0!Jx(eK6|~rLavc>q-)Z9#HFa9t9oUIZ;F8J1gx-jw(o74Yew8r`t+)CKySR##elsIJjzwLjwFSC!Z_Y~{I9N`z?fY2$7lX{3B%j4zO zm5Y{A+X7pz^*S9FhSPlQVfcMG2mXMbjKW2}m63QF!g3GouMfH&p0$L25{+|x!(;F~ zp8Ue4(p^rR+*L6vk6v=(|LMy~*St!}cRm6C7i~?#2km-e4R%9Ftrq+udU`1C8y#ve z2D{q=#EhVQLq#$k=Wq8dkYvMbg1ecfr{D^@xiH9ync!~H(eTjeKf&F|n0pn4FgNIE zcZ;8vVwSfe1>fW^`a}vg9DH{jJ)Hsjo{<`o(Cp6>03 zi~Mc%10)R*({<)=ov(v5NlyQk0{=}-wvf9&5u4R+t8L)|)duzND& z%yEWRcM{|7KEfvIaQEF(_yDsVCI*ssLDFc`v2^nQ(C3c<0e!~kP`7#wcHhY0P-8sI zJ(`}+#09j<8q|=(+@o}~yFcN`G&*ybdnC(uXQol`F!u-sodU?;+-HI^4AZIIM$a(! zP?l+XRzOY#;|$d_-(AjJx$?;12F-VuF?dq8S?auOY?}NbjQT22S(D|v2kTHr=q^?z zKXcjSb&kBQ_UFTupOx47>B?=&1SNvsV*8hEi*1}uw!UFqXB}ku+47vF5jFr{tBg5{F`|Gt(S zJekl7v~7v4m-T(?tx(5{5Zd~d7FFOrJ^207PN_{ADcQsi#fQXNv5+=b z;0T|)0vE$7JRIk;JqMc4x4>efA*-<{(Z&&YB$js4ouhCTJrxei#%Ck&UuYiOSptU~ zuC58hxX9*%zgiH@9St*j{X8uA{u+hQHZbwYntOpV$6F&nG+crHr*_%*L0laFLp8{ zS)1p0oPNgJgC}FQC!Xp0DdcCILp^acX9muvi8D-*nKR7gp#_o#V>Dy@9vBTMib2^k z&Ag>Ev2k+jiJ%oTVQf7ERF+|grzeAc2!eVrXu!<@u5cX!3mM!bLp))ObN!ugqs;6) z>bn_d`y1fc)DW_wC<)kW(z$u$86p6kTjYSF~+b_SfEvN zvHzI0*u&9tb8&jN)vMUup~Lj#TvP7nbFmRcb+6T_-B+v0^RRLMZ6hRE$%EXt&@J5z6`n<#tH3+mQiV?nT0k3CzJ>UZe$iDkJt9VHXwo8_?Yngm9<4A1Gdxht zD9t%M`~-=K4(+cD51i8K#PhpJLeRL$ZNbLX%&I_gQ;Ru3-U%eHLy`qA2YH%AZUJ@e zC;bM%0d?@mi1jqWB^52mSKD5l*==}iZpG34^yZB9)CaMJiWu)%3UM)so_>`Ka&!|< zW7_aw{|KAeh70`3Ep7M)fATX(vQ8cCSxC>e;X$zX3D&UCQ%j#|$9?Ixc5~P~*$(TG zu2`XG0i#ZABtgNLxMc=Ik*9j=a@>!uU1m(xB2Sf$oLE8vZeEe6QU^D$Cc*Rc&t=#j zFe&%UrLQf=x!`LAYgg`>qr>#sy5REnFE^}ug=ZGsvJ&TYt)CYxxO|1NdQ^C3>I}5} zvtYAV;hDkUUQI!2R(Pf}bjN`pdtBj}#!$ErZJ6_oE3t8oaT=0rAPn`~Byufu@=BZ? z$)cO)oEYkvY>?=IgIF?e{8V@*>B75PrL(Kdo=v>POjZVx+XKn7fn?(90B<0)@(+_BykG(skIl7}F6*9)_fmXAsL%_G(Zcm3vBbw5xnx z&`zb?Gm!B<8_ZkaDW;!K!fD`629Gt>wwlWmTR7WTTfFsq>nqkft(De%%a4{9Eq7UF zS^BC!s)yB$>TESd`5w-IS1ZGn1PHI5lpmK}@+>(Y0<2$4holFjc4>mt5AGg+CjMP) zaU64ObyUN3{~zE=L$f{4F4;b_?X|7Ow_@719w+&>tjC`SzS>*yIni{kw!$L;&C(Uo z%^f($xBD(U1$W%WofqG=E4$zdzyr#?5V!Uzm(`o3Fm=2-8m?QEsUN5(EFQ}`%g2^~ zT25MyTHdl8vbNqN<>R~e$dV|m*04`rD0rDdn(0l2<#mu0E)xMhW;T3W<&;>Y6q z;xVPS5+Pr=Otef_Y>KGFTSi-kS_WD2Eg6DLe7c3S-)PL{)Y!l5wB8QS?Eo@%i_f~6$#yxoVLz6%fHYsjfRm`Eb8 zv7bZi=T-LeJoP<{AMHT%fDVV!Gm^+5_?eVMUWK0Fz|UYO{uq7=ocJU7 z$#mj>!%vzM{|kN+ofw`xpcp6CPRzrd_yhP+omji+L7W(_cW~F7818g%KRGcRjB^*A z7|z7GZ=Coz{N$Z;;`iY9V<$caKkqx?@&?BpbK)cL^QIHO3qP+p@jLMIk`uoTKfCF) z?f7X$UWjfM@8HBcsJsKGqlT`m>gm4QcHn&Md+iZ?oJd+Ni@5#1Eq})!BJK5vG=v=1 zK=|>sKaMv_^5a}zX$^00q4FL)fmZFod9-;CmVI~cfg_Tx+;xL!>jCI8?O})S>;Z@q zu_@KxTR_X-z)qU;NAQ&0`iAL69eu+zE9#qOa!eq32PB!WVs925`WCn+p?-F;H&cgc z&RgbGFMG>$PrL&dbVLNxKnf z$nd6uD?m@Zi6iL6w{aNr9!kA%qr6V@9vp3`uWw6bmSKh(t{-rwcT{Ag8kX-#PE?`Ox@;brI(3IMNNg8buLYC4i@0yNW z))CW-nR~?C32cTW>!BPkY($UX-rcNyju*~xjzBw99L07Tf7DpebG(rz9&Jd7Fd=*Q zP28rVIE!gq=ItSJOEry~>q&ozDF;_Q&kGler_h}q0*44s6VYL=m3dycSnQ|FJBC$% z`!pOgcTn2{$H4{qn$~5UX zjtLLl2Bvu>9j1=s=3q`Zj{7i0(!7FB?cUc-K^%l}gbp5h7&!d3{q8t6Zr;Y7Fq2~f z$y*@F$}94$rCUyd6Sn(V614agdDbx4e$uF6k!Q6Ib!(y`5BU3?PIm5tpP4N0vvZdT6GF6%f?eU!qOEsuZZsa6t?Z!(>tH- zGl)t0MV~o@2N=(iXxL#qK=ogG&-Rwn^M`OU{qL8C#@XI74eCknIE*9BOqpNdbXNC# z?~tuu<5UPA29GT`M8&!O(kfoZ*=EK+0XH%Z)H2f9UmHdB_ZI6`uzR;T-oR;wh6BCL z^kN+8PcK6@e*u4ejSHFoH^2+t{z!Tyj>JWT4#EN627^M+rI3LA8Q=xa-=8IPFbwc6 zH7MPE!^_`b<5sh`j^Pf!^67SE)&897a-T*7v4_((lbBss)lvShja2ZTyJ&jx-W%!Ai{QnFGM9Kq z>u_|a{Vnj061f>#qn`Q=rv+Bb^h;*!t_qS&=>qQvnsEtEDGpsSTjj(hoaw(5jB2^* zh{K3OS>$QrA+ty>k!?GX7rlx9-^eeZFIbeScs_#|o z;jP)+0J>Kq$@Jt^{5RjNKjJ4O#deeva0)*X(Zg1fKuU3`FZ&v9MFRM3eK6heC61>% zzQ8=~_#Ng1q(pl8Pkf7S<6pQ9br1_T8SX<0uL}3$XN1N0j5r6bo%9hfe~$FvpXOKc z)A+vRH*(B8CX9pq#mjcDeUja2`;k0JZYPUvAK0F-b=aoa2H24GtaYEY%i3TaWlgsH zVL4@a%yJ9(`HAW!xHI{%x>lW|4p!ro-{5xZbIRW`l!b65CQklQJ|X{IUMEk4OEG_t z8>EwBCfwUzFWoHVNRoI4uEzXLT=0By*ku$>%DG|wH^$IlOEVYHZJ6ZJGnizm!WWzb zw0u%WxBP+oOL`B0;kbd2B+>Rk5*d!^_OEfgh>MJLly5zOXWHh=YBWYO9%=Lqf$a3% zC4w$c|H+W;4cyxoXD2KCmq+rv9rW;du!pZj5M%Zxp2u0n0Ai z|J|}qc(te9EvsJEzPPEiEi}t*Q6#~i<;f^wTqrvlMT}TXr;Q$uB7N!lk`T{tP&6^( zm#xtx%`f7iXkvu2-is!wY#R6LlMov?Y($A$iCQd85U_2`7XgZ2s*-eH_F%Gh3=HYL&Ts~=Pc#+Zm}q1w>~!dpBQ4bLQt|EFVmuGSf6w91iA?gz zJhFovrBO+w6W#0E20;QuH~xrIa#=>aki5xR@s#G)y2eG7PQDl!>8Z=wn_6L>SL$b+ zu;OEc95TrF zeh#^SsY4>Y6Lr@C*MWdIQv83*^j*s*_w-28gR(K5@Fpq|#*6kCTYq=i%NQ+m&kZEX zKWdNNK;n%I@ajp+P+#|dGKix{@+70fcH-}iCW`0;zd91bLv*0vuMC)u z8BOBi^t?SfYuO}iYh93F($|ePE&79_Nvyw-_l+h_f3hN+q?ilIl5mn}{?Y$NlH_Na zc%#YRd?V@2Ua~qn!N1iS5MBdkntkLnijM4@#h$|J@5yL6+eoplW9ouXGH zzH>V3wzj&O+WFP3dP@efPaZ>Jd+Cf(om1J1?zRQ3bUMart2MnTET$9U+aY7pB+(<`q?g$i7sE-M`G=zii8H>I5ZyT*UIT;t#_Hvvvg149 za=2D<1B|WeMQlI>#Jk3tLw?&>a|t~VKo9jGQD%{!_Xz43=Qv_q1|J+q4(&-IjIRj9 zbq)_+vO^V%?Hty9EC$qib{t9fclu}J%;o&rICE7=8gD9_9zl{#4VMJ)zl}G!_l!5k z+zCJj>wOZ_2_IF^TAe+Rg16l9#-NGmEDn%r>VrwN-vpAlSQil4S;+2?x3y?2aYk-? zkIou42kPtQn{yz#vw(Gx{xynV{+P}@RvPmGgGqGv1XJ_l6G-}Oz2Ml+#gGB!C)kVz z{c{L`sTkL}2$~gWfe#blFAdG&I^iP=+G1G=mS!0kst~tp@LQ57_g59=E9G5fC!7+@QHqopI45{teo@{iH_D^s8`EW*bU}Jg z+AZBKEs`pv1h~ofiTJ#@QEV2+iP>=b#9{x%(ckvFeWLA6a>D*EvfW-pzJWXDTh&)= zx7otfQ^aQ*Al!ENQvA~#QK$e=*aBXAeP`hirN4j zt9{%8p3-an$`GTq!#BVH>j_WkFRg#j!0h$d#^pl8!N&{c*Vks&HP+Wr$5axoI9A{; zt`I2nbUTTpWmAd5YZ!ISg+HsN5`q1>eJ(7IC(S=MP9=$quy-m+VJZ7O604l5I)A)E z7mzcLBn0J1nnq$7U#XeeJdeZ&v8wmX3-)I54v(mJ-2P#RT-`Z}_KAB;*OI92Bcw~c-XX}9=BbYRm^j4Tv z-H;;c&BOley`i^AwdU~;;!OvL(=-gvn7I-+B#KmTB3($zhF&7on#i9k`CyR2D}z4_ z$2fTdT=sC07{yeJb{r&;Y5pCJa|3*<1MU%umHsV_UWHqYD$xB0gKX!ygCy2et=vbF z%s&pS4=TQVx@p3$uP5;)Q?iRhn}3wMf&|-MCNU-@aS4z29>QGm2ImU+pAaVeUfa}XR63pH#ODQHdnW{ zuQGE*Z-Bed2|zQvb(7L#13bvloO|t2u~|szOp@YPx_%#g4a{EzePAC6L_y!%M+ywe z)|-iOYh=jH=GJcYeo|ug)2$uMUue+2Mbl8-y0oTgMPs1IPxc3ugJzM5{_^L%612>$ zokfg0GJ9tc8Av&_PCXA>iax@a~jF4u=z)CO2qG)pn2dUO%zCeA*(Jm-dzKvh~-wY9f~*dLlZhd2{-&d3e$Asp=) z6v&1b6XwT%Xw_>Z!e~3%Ima9#PtPIAY*v9&eY;ltaP8D=7zg(X!FH``hM?zESPcN{ z_5Yo>y7^H_9=8~M886>!*=m`qs>*43u5!Opt>h`hlBHf(Py1sqh4vrq&qD-ef?bBo zhfms8s#I+t-{He>LU&b2mp1bq!dK##!V=+KUXW6SjnV<>N#SX!qg|SVdt)TdL092L z&M(4h@g2NH^ayj%H_}k)N4Y|5#?fNAm@e9cUr7lMex;njzby9qnsS<`` z71s*_c?uqIf5smr58$(SHou6U%-_xD;~U@r(Lp{Wui{+%7)d5x(ttPMpCFIwJ6A=D zkQJ+ZG>0m+ujeGwsQIKRq9+gGuF8hGmGI#lHgU*pblZH=j~<^-YMtZ{P6BcS-xs*r zn(G=HVWrdzMl!jb-nf7y(uM_Old_jnnPhr>0f~!YLW5@`xg&uuL0eamXgZ;W`J{#m| z+H@0kk9>mbNh24LYv=?$u^1vUeHKFiP5&?-+)j~sbvOqP@)nb5GMtO26{|@!pT*Bc zS}KKV_iTI-btD451aXq<4-eATklr#JjHmOHAuy`_MVBlgrSy0MgaXz!l43J+KT?X$ zv2wI4GxWPgQby1dnEo{j43>VF4u3SRC4ID`c{mh*g67tfEbSfm6ZEzwGD2rgZi7=7 z^qmI6BjYyQPed1Vj?E3Eke+D6qKLjVfOOxpk*ImWDBK3o=-crsHHLKBw+T;?-|b#i;*TpQ$YtD7iO1QW zQ*ucwsp4PccPUByUHn=yRv9i=laI)IwodYZ@|tXs%f#*CCfO-}Dt#)wz>id>h;Pe( z%HK(kiMPn_%6sL9WiLNlZjr~sGxZMPw45O<7G_KT6}I!=NN@0Q;Pu@iD^6qy4QWZ+=tFDt$MD-;9Pp?Un~f zPx|o+l4eyFan|{@VI&1tFQdXrl3W;0Qla?3#vlKz3oy3k_bstjUX@FRUd|2{9z! zXo!%hf1e)M28n&BbsbquA6`cudkMa>7}hZXCI<~8zpB&KVM>?Mu6UG%@(A^$+^P1F zpHe+hJ zGC+x-_iQGqvv&!f!t>a}!gIoQ;SRM;5aj{#c|M9Qjq$Cv*T%;p?BDE=msI$~sWvCl@S{EW6od^|4R&&=_>n@s zj-J{Mf%J-d$T7Qr8>xMdFBU)Ti@ldDB?IL!J`n}xTs-#K`FMm4r-%5UlO5_(ldD1B zVB?qRp8H5DJ-(gf(+}?>PsgbjxHw%5e7&T36$Jeo4R?)>zne^?Z{1J+PVagEq7Wc( zfPP}t%lGjEBoVRuYf>TU+u%A{mal)=!9! zc0il+nkh3wZumDR8B8CdB$ht>B*~*+?1I^A#zRDFJzTs LhtGC|TowNxgM7zU delta 23004 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�FZUqID26B%wSi$m#;NQ%X3uT-1 zmGp|VNve^CNx$vT}Nmwil7ee`Op}HISd3+u(lF#Vm^Juti z>8JchIic+JY(I})$3ljqg3G1V-@q!=^EV_|Py_&iG6lXSX!19n1&sQWk9ysYn#ZWn#D1AC z{g;t>p*x3GUW5I@eqb=iYoR-vp=SfpEQXd}GZmS54dokZX6Qw+fQ8RS_Lv-n?sQuD zZ!}QVV=F$6oS%(63f-wX2a61t9EI+II!w=h9H3+hLmi(4pvep^|F=)cfBOm;pi_IV z5Qj~U0(U=Fjlji;=KNx=Xzm0W^eakcu?15}y33CvPUoOEe=&8i|LT*EVbuCx4bznG zj@BXgt_vpA%rf5{#W;6e1~=;buZU+&UFeRar~U(-w&iaDHIHB@3}XMT3}@)2Ks3zD z`yW%oFRvoY?VyR*Q6io9nV*tb zZdFHF)Xl7amfOyl4+JvX7<%?Mqy4hnRt5!KH>(qO9c6fzg~^a)Etlnn{T&p~LWgES z*=`7ePofFGqxg`(e$RHpwwY0=?RQ^!0xNHr3FWzYdi8gd#KNg&&UtRa;J`7T=f*lr z&qD@YEie6!a+sERZjMneo%U;_JXgDps=Bc;OQ2i+Fy&lpy>fpTn&!FI=uoe2D08jW zont!8zl1W^oeaHv5yF{f31zNT%#+rGX@2lZ#y#k!QCgX61%n#=pydoY0Fbw)hi;-$ z=3-dnxm+QCopXHT*y~vC810DRud7$ox76)womwuZ!+Lg9+6=*#6!DtaBi<+8Atpnp z<*=|(m?@+@SdI&^yx^tfxQnOdDjp!S`GbabSFar8xlh0-1a7%LD=b7;utKAa!Bf5)yLH~b%ff-egPspX~I?E6`@_Y zMY4%!T62q$Cdb5C0k{)ng9u*LVR3&m5BD1FX}x!F2Gt>O5Q z?o%@d(>@V6M?ZBTqWStJrXm?ndHR6 zNr$vp+(Y1iMtAVcfu3P;_%Eotd}i*p1l*(QE?co1f^tsqwCL#yoDv>rPKw>FKH?xh z54AiIkN0-XR!BPZtR}jfz?)I@ybAD;2zCg<@FOR>8~vzdeSCO>A3h`^&~2aSt`DFF z>Nn9{=TD{Q3jG(v75(vTUL{ZT$Hwl$T}w~*$H_Ev05(Qf$pCyin@3aKi)h&Zd@F4q zkNw^DAN@F-jAK)hDZewxkgsqrpzX;xuh-_I!aZMywNCU~RM#Y9V{>#k8J9B^irrP) z2I34F9|=CEIdzKNb2YU0Om?MUW1rIFOa1{#mf2wUOnP}BPNRoq?6dHL-FN7y8rVbh z;6PmHZLl99X=E`?XYRGq40catId4ui+u@N^qugTm?R0l4)WVvEy?eM~_iZ{99B7P+ z-Ia_pJ0`HclNonlhZnmi>2UAWI5^#Ghe^KVMo1csI*x8h2Ys%m`}7&BL%r%%>>k75 zK&w97J(^y~!1;8Z&95PcyKmLe-u{Ur!|2W7?omwcPZ>tR!`&kpbP6DEbD#AS7_L)$ zjiBM~3MRBG)0a;<;|$a^&t1m6!?IBS2F-I1WANlGv(&j+*jztK81)UHvL?%O7wb@a z;DogBX2kL`3M}(eV3#u`1iOrSu*&Cz?LwtsalFd^)zRgsbi}IPsV}K6b)p(=zi7Se{m;{! zjVp;w-&Q~bly`FTXip>_sM+ZJX#Q<3+8}B1QFaz2V}4`fQaUXkuMf6gKcXzc?t^fcQVTBZd#Y39|pr{jdn6Dj~x#~1vuaH+%P-^h4OV=F1gB)s}NSMJsZ|;!g^TCJC&WgvNR))X(WY`7;&GSbBGTP7I*A?{ zg~ecg5;ssgDyN^SGfg>78HvXV{0p3bY4${1Y|}S=+yUWloRCXT1>*tKHVWTBuqB)i zZohV54x_uePgP}moVVa5@U`hyoFeJN0Ij7tqhY?o0XM;O<5v7P**n5MpNw<8$>2&n z%A1@8N!H!BcI48zm3Rm{m1No-dfCT3683QlCZcC*Z^j#LKg->v-MfehBaTKT~#I!xD0F?7l5 zNM_JJKPZVo=K=ESbZH7U{Jn&!*z50Qcl4u)({MjJx7Kf>XLls(XfQh?Xslh?9SMy2 zKp=BGLxZN7WyMXynciY6A<5c2yCa6>svpPlt5G!5_3t3hI4e4$X!dj%p7GPoEHkE? zt4A{=4aRWB_yaH+5bQrS*{m6+Z0QVae7^1oq2)7hCVdX5OrWHrFN1#cgZeNi;ZIng z*>_;?zM`ZfSjXA%QnLmn9YH!At`B4r&gpP?zhiFw6Yl5dPW*5OzJ--Ny2DN{-GPUK zfrmhjDM?*3ah|vRUiBrf&cx=4g;}_WWig~frrEP_IxIB)Sq$lrbQq$l{xH1&g5I2C zXB&A`bntZdY-qF1v&}YpWVYGf7a(agE@F(c<`~Ua)WOm7b8u>}g|5imuEX>saC!^; zat<~^zV5X;wfDkSITsrz^EN?}6*|;?C*3+159-Yj9*;Fg9xYp8EFt9`GjtAG_JzNjQrcvfi)gxJ~4mY2`|s70TkTral!Nl?I6(>hTM|mUm3nGw*GN z&aE=LGyYC9S>;Ra@+HstlJTp3yuRcvU-H~)(+EYcF^tfVj!`sj4H&Y(@iw?)Bt5-G z^Xb=^6+f}Ybk{qEGwQBS{o8eLM+Jiqz2?6IXtM^7wazS{ zbR9Mh=(PKiM<8j)3}rII-tb#C%Q}YWXs_j=tYa`^-sjJp-%&)roQ#vf;q>o%i+vQA zD=y{ip|*e6Ub1!B?yzN8FIo3nH$ad((Q?W1y5(-mR7&8ZOes~utNpIJY)p0vJiecO82`nvUH>p|rW>$6IU?%2jk5-aTZ62M6X|szr*n4T zBobu(k>0xlPYL1)hk`ZE1oDFRkLSA`_;=KPkmGRF0P+m{({})Q8vd~<{RM)Mk^*T? zNrJEIzj={0(lDlIZs}Jzn{m$pHJf8qm^Fbv1c_#w?90`X%Z@`HN znE^e9n$J_+HfmuBdSp zgdd4SZ-cuMXsU}kGjy0{zik?UVQ-u6N@qF~3N+J2ooP(yEC?Cdr!vmK1-__rpbq!; z#^$}_Di)VL+ns~U8Lx>5fy*1hVKF(ws59{nBa!WOho9aj!#I^map4$m0pKqsoItYBs zc$SC`a}~|)gp&aCocx{c&s@4vsouCdc}ccS4etSJ<(ZZaoQ(+2u$4G%xH}!%+34QN_ZJ z)jHIxi3&Tw|JUT#1E;t6O(zY9t*~Pyqi)$xgkV!wi**l|po{?Xbqbeb>mEA!6dp$B zodVOc=@bsJ!lgiP)K`MvuH6aLZwGqhFYpW_fN=IOtbg9)_%!GUPPce}WObI&3x^>B zJ@r zXO+m^q1l5R5oZ0Y@6EZr9={iiW|6sILR_8PZW&G%arZT7sAa57f|LC(p zzT|00vI5gOE9tzSa14Bz4H$;mKjDGiEapJcV4kQm(;L6~4fM3m2|C(qf0Wiap5+`k zHfZoAGv{HKOi#aa46V2Xo_-+nkj~LM+$)Td-+8OZP1hRr)PHfZZ*!b_*$nZ`gCtWr zzjGuVbQ!*P9KLL}%8AQ3!+V$+ZQ`aPCr4al2FW6#eUE)5a-!$(8N3@e^CF&rQ?Y<9 zSpN(0+>O@7*1`7Ca18gN?G@YI$_{0zQmhEJ+w{|*ORS-me_2l2vK+%4ec*t|Yw9L- zi8@@3vj5BezU2wHj(VFV2~JUbAfJ)<$c=Q}6`U4CJ`t>NqV!dM6Tg5T%-iXUSMYe+ zT|)Xvg_+7mE)~k9Dsc_()tvcsnk|x)Z9n6?D9jrXV<+A8Gw$!X>u3CwL{I*Pqdl#^TbBRCf0QqQIvxD~bI<6I@)$qCExPGJ;2 zEA|ok3kVJwze%k8J^WNYmxm)dPDz zowpsbZMU`9#@mu@ob_|q^K@G8ux46rSWZ|TwXC(wwiH{Ul>aK9!k%L*bjGMbO1%7E zXy51LE_sfeDf80jSN~F_1 zBH0NROu%@tehb~RPXrxIfoKsIrjSYyK8pK!qExcNd#WY3vz;Ef00!~R5MoT<_zO7G zSOT_%64P|9VVnmpV96lULw>w;S12(8Yn>}8`WC0sObv1+~?6 z+I6x>Bc@BU!bpU7?vD>6QQjkRU2xw}J0e%TtZi{)OKYIW-C-owEAn(0G0w%kA4ZHY zO_!Y>4IIBu))o(I%tL5}-nhINKsrYENht|;m^QLYRn{d_JUbboFq z90h>>>%HV{j`VfKa=k0yBx-=M4f-1A8S8XWXB+FTvQmF{yr{F4i3YC0^k5Vz@V43y zQN;LonH){xz3A9z(w~{S#4gx5j+LK_x~SJgO|R4-Txxg{C7<#oX=vZ+X+KSq;OuRc*R#Q5egK8AQB z*7;p=G&>gd2!Xx_?TI0V74L%09&ph3SaWh@#1i9+PK__QBi1b7I0&$zQPdSqx5ksy zUh8U6SC|gdxpBnUu62bn&cHq@>I%`}-tOA@IJ0xR`mnrq4-V+Ku3!eQk2e+H6mJL> zbUE~SF(9zw7W^@{2;YP8Q}|0FgBhAjc9XYgL;~qT_jn#nAcxV`-5EkWUkV0zeHDqM z2l|l=gw2FkyGIfpUg5w=pdGq1!dZ0)|SBsZa4X1Rq%dDnU zWLGnrB<%ig0FB7Q1Cwtn2sGy zqM~%!K3z^W*IHW^#G3SVqfNuSV>F5M&Zt*MlNfKZJec%1*MlX&B;NdyHijg4nI?@f z`J2X&e(dsWOc(g6S_8tp+u~9%i86mU`j9B&rH1gX32*@!@^7eK9+-D@7o1hs zO0I{oRlSG}2w(QDapsWUInG=O5Bbo;eMp#DGgbAjysUalM)NqLpzi)!cePDt)=1u@w ztoKPo7rgPHwK}}kkWpU;*TuOhChEqS1v1!`EmXvx__dn`SFP)b(UUmWY=O4fcXhFqh5cI z!8aA7x)wpR0?qeY0{+I(EUF8hdC=CpDzG%mz)%HvPnDC1acRDOk~z~hO)}em-y{;o zR^*5-*g?laDeT5PmDzY8x3W3~x*3e$ukLJa>4 z|1tj@e=qOkZv`Lqy5lRyA;%s#PQS!b2%`2m#AC~`zG3|{Ib-W%y($m1{M)it zE+xAy2OTT6R)l#Tn@ld@rQdSFT*wBv|DavhSkOPyKke7AVH=xtIu5E`%94((hBxS$`a99eU3F+xJ5=w_n zAqpS8p}$DSO#$a_iNQxVA0jd4@GhSYZ$q7&LInERAreh5Lq_!aArh}=NfUeg=ISu` zK_^Wm5=qca9c%l8MRBdX0E4ZlKx&T>s}=(W>p@3mG}Z|AHGWRO-fYKLdf2C!HT(@Ym=h4T0c@Z)+Q(KeulBb|p&JUB z*}E0q9P^tVbkbbneX%8O!%&e+2U)E~EvwpU+u%_d@W{;>6SDzc-q99q#?ac<55x&dC6(JmQ*4TD4U=3_e%wE9ib*KD7(Dsxm-R*}SH-Fm|3 ztjBc=S=F|x$;syB255j%^l=@0yTT{w2#r(QkYdCQc_&ijiw9JvfEL89&i4^vgpe+{cbSrZ>SF z_yPN9!c-Ds3T&mPru+SDqg61))6C+~WDX9*idEhnH8WJc27#;6hk8hKkdNQ$8(ibG z!R6JHd$;#^F$nwgzVeM11K*}EMk}0k3sN>zz^9A3B$4ifKBI@;B(cnR9&G@3_3AIa|uBO_r+mGAtvyX%L%inE}+p26CHe@|% zske+E-{V){o8C1cQraSH5x)^n!;$i%RewGJ|O?ay~NDLEx6aK-+@$00|ewWI56Hl^NFgE#js=2)_;0@K5@e7LJ~p% zqZ1c^*F&yr=Mn1{kj=#r9M5vm-Y|-^^RXN<9{-W}Z(&z8KZH*~xT>|OwxI!*YpwSa z$vv_B5VUO-38xclNOoRdK1pNoGqmJh{oMjsEWrYho?t!^Vf`Eq3%Q{m=_@s)P!j6l zHhxtry;K9?r7epfzj7xjE*AbQoaa?nvhTLv!j#rr_vA)8NK) zD;_AJ@8Ik8M{vBf4bCv1XvLz0F8U!EjYN*pf9r=+wfo{j*jd^fz8Z$i);T2I^JG1l zf$8ZbWDff*t)1MV-AlswZ8U1BY@23fwbykfb}GS6|u;dYF0gsEStk1FfnM#V_gX8%UC zl7GOH4S6JASp<9YbCzLzJ+Y9d@KtEXaQs zcZr+jFeOX+yYx7mbDk)^BmW_PFW)BKDIb#$%8$yO{497mVHh7ItPoDigW&$)Ea@j< z7ym8XL3vTSN4itWm7*kBydp$^u}Bg3^98~5oIHp42un5yffG5x|(ne-<9KfmoII4X-%qCI|ay&x6azB*a@G6iY8I zCr6^@H`c7uw@UaemBeFhccO1Wu!kO9K}tk9nS)Vh)+7Ax~P*uDglBw+Ie7w|8A zNh)3dw{%-G7FO3VC;U4tGv9{cBCTFY+AT(i0RM}Azmkk{XiR2E0bipdR*@wB6em>C z<*P_-Ie5AbeM+)9;~Td-D8t5i1f$)zyC~g?1EHQp)rh^BwQ z>hloYy_zI>>Q|EsC_0Q};R<*^E~C1kCSwsiex^TCpdA{42RWvbzR{0q$*QJmcrmS7 zf1pk`7khMu6KmmsB2X7LHnuf1wmDmwV!ME7p(oc7{S_69<|h?mKwz@Klcm~06pQ8< z4N%DoT3S1W9!_$wULM`Cj)e0N8pRZHhtM#o)FyO)dUYLHLaXnDFO{>}$>aPm((awK zNADzEFT*pFK{M-N?o6;M|5DB>Q>_!v~0AjQ4U*{;t7^YOR1&5G??VVdmDEA zJN^v6geiF*Um}}{8wPzfnMg*G$Ay)0rxKwcVY*N%3?iQjk%CC)ZXsd)EKdj%<%#lO zX{sC{OVSnT6L=KlA;}GA+@1V*`A7K^x@`+dn&X7M)EVK3@Vu}~xYy!<2U*e`$N4bF zE=RLtgnYmer~X&{SlzF#S1aM&nrrsA><`)-?PKiyZGYI#+InoeZ7$n<+X&kL>+i75 zdKNxz%(muRZSeTT%jDw0tr*dW`$+*mMsPW3<^AN30e$%X2y2}HgHext;A2*J1qZR0 z0n_EDG(+CfO_p!F3STn|_*$@BL9&b`Vo3zSDBW$?P#FNI~4%t+Efa5&2 z9pq=8Uf53ZrdgzO+*1B)WXZCOgwH_@N|emYm!&iEX!!}5%6G}1N&i-+2-U*v!f<(p zP%LB!1B6gPyTFdNVwq zvlOn>jTTEqoA9adtgzlfl=I4)jxQarIVjwOD|G~^U#l;x_oz;_LXEZmSJ@3`>w4^u z*}LqE!K+HL-L!pXd%?ERw#Zgti?Ci+23lXUc3bPLqpWdoUF4MIDflooozSAa Date: Tue, 29 Jun 2021 16:54:00 +0900 Subject: [PATCH 31/59] =?UTF-8?q?=EC=82=AC=EC=A7=84=202=EC=B0=A8=EC=8B=9C?= =?UTF-8?q?=EB=8F=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/D-Gun.github.io/v16/.suo | Bin 71168 -> 74240 bytes .vs/VSWorkspaceState.json | 5 ++++- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _posts/2021-06-28-java-Spring-DI.markdown | 2 +- 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 26b0ce2bd21e712d8fc7235b24e558dff4796e66..242ef983963ee20f6879fda6cb506659c9c1e943 100644 GIT binary patch delta 2587 zcmchZe@s(X6vy9vErr%neu#>S(n1BnmK8*PDNqYyrv_yfbc$LKsty7~TeqQ;YPMx@ z{(v5h(V0b`i+?y=T<b{{N6nOK^N)E;@E(zT7|w3(-%M>uR*qWxrCkV`XcRZJBH-cRBjz zkh)X$Yh_y}+j_JvTB5X$iqSF6a+IDx<;9MQ)Pz~2N0L%PsH9YETn z7GVCk7nrzDfY!ug+!!BVz9ctG22WDCn&C1I(qR)!g8n2g(}O2@u~Hur)+FNO=ztLf zJ}^-f{jq;C*24cv3>SSVB~Y@Wkb6_SENm-w*xpf*9P>IlJCL2oE@U@1jQy1P%a{nU z_f6b9^$W$&toF*Y$_PYC6GVTJC~~oNKp~Zil0%g2N@wjMO$@6pX72GRr zf@sfesY(Tz&G9_GsfEF_s}f+*S_`X(tIgABnw&WY!{PApbVy&>8@U&sNhg3HFyR%5 zTy=+9c=`wP8TT}dRz6JMn5MDhnx=0qt7+U&57(O0MmjV9%iT=PL>!GSk>LAk8EPN{T4TR159dF`V1*N<<&m+1UA7% zrUGcs=LPTWW~r+)v$M1E>TAueOjnLMJ3l|uTsvcRo;km+E;rkiS({grl`RTyK*#X{ zp8i}flTM4$Q594iFXqKvXBe#C702V=xfL#*6XDGdt=#%qqsTiQ4(jOdF|e=(d>;j* zTuK|IMNi&e(0R#07dKVy79sct)+^~_gOyN=OA;K>*Lie8A^w7(-w-neIz%@Kv+;5+ z!y7(V0PEE*U!YLAx}e$vvjg#pI`bM>;Y@(`8xb_ciVHT_v0uk~0{Fpo?H}`~V-$Au zG-a$==U(fn%~;nAY$d%+7lX{+ENHl(J7WDBGj3R+YeQJriea9gG<+25Dwo3eYd66j z$bjEY#z1l3iMXLf!Ku@d(2Gz3!{JGAs80`DtCqo`>yzRBS{v@4Xwa#l<6n|iK4{|$q) zKbg4c;uQt7+;VZ(N+&y3m-#2dzd;cFt1#j#C delta 2415 zcmd6oZA?>F7{~8(TT06+Z}X)>r4>p=w5%;}icG5_3L>^DRovL93>8uc8ATnEfle8V z#>jm%B>H8!HGWvw;(C&a#waky5~JHfHfAPE#JCyvY01#&Ug(}9w;MCM&Fsq#`SHA* z=e+fQ@3|e9)g8U+qjo%VL}!Q>gc3mzRK!F$93~?G5%ZxZS&aShe7yF&|7%F$X)m^l zt+1Kh6Vsrbh6z+2){uRU_>KJ8WYxrUg7>W;o2dAyWRnR4F^7mF9K`d4kyuA05oHA5 z$1JjZj#9E(!bVIZ77*ovkS^qsqa&=u4#G)f5LLuHf)ByQ`F(&Gzzg)@HBNYsc#{%gh(SS1Q&+47s%(93zx0Nos&ksMTzlPOrT;V1w~4tnCxm| z4N*dr5^IUbU~bn_>?S;fm)J;bA}WYK>biYF>Ho2d*di@$I?Qhe9CMn`F6y8OTVmT` z9p0n=W!Mteu3tr)?;?1U{?!o8P+Wr^7a-@cz`%a zbP{h9UBo-Y1Y2&o1l>(WDb~o0hT9+)in37*&D;ax0H5YPW-*U~loWt;Y)LBDJ$h*Q zwG=rCjwf|MDz+qVRP&oDl8%~7N6BOlmqd$F>Pj8(jhLtOvq0)$K+l+onKH&yQX-X9 zQ#ZecB2%zH;u&C;tkG#w+e)3lZ=zTJ(%nWgxJpV{>C!%6qICkK4hyqP9|gHc3|T>B zuqLdMU7}nr%4MRwL6nO{*{hMmt|9D8+YpgeM6a;xpM>t5Q1U3T8m@FCN%A; z#H&@>V8<>{*Snnj1-RVAaN%D@aSH^H+G3!IhTA|BMqL0Tsp<< z7&Z0t?=T4H9_qstLvP9-Xffg9nm<>5)KPgc4X<2VJ1KDeT2RsJf_v(^@Y1zY#=lz= z#~jnUn-=0e@75l-3Jlm5DAR<)TRxAWpPqNwnfBBJ02hPnHvmU>TQFg08C%vn0BrE) zQjos)qkr7nlNbj@Xj-7BQ=b8hzhh>%#&6P*ce}xduXUzXQGlPSyYb diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index 96d4c9705..ae4eb1735 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -1,8 +1,11 @@ { "ExpandedNodes": [ "", + "\\assets", + "\\assets\\img", + "\\assets\\img\\post_img", "\\_posts" ], - "SelectedNode": "\\_posts\\2021-01-25-think-memory-structure.markdown", + "SelectedNode": "\\assets\\img\\post_img", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index db1bca8fe38cedc6694b92c0272eb099cd2a2b09..185cb80f51e20bf7f0a38b58570cd3e6e872ce7c 100644 GIT binary patch delta 22599 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 W>XQzW?LM delta 22220 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 Heh~i`bPo9< diff --git a/_posts/2021-06-28-java-Spring-DI.markdown b/_posts/2021-06-28-java-Spring-DI.markdown index 2b75b54dd..61fcc9087 100644 --- a/_posts/2021-06-28-java-Spring-DI.markdown +++ b/_posts/2021-06-28-java-Spring-DI.markdown @@ -107,7 +107,7 @@ public class NewlecExam implements Exam { //Exam interface를 implements ``` #### 구성을 보자면 아래 그림과 같다. -![Spring_Tutorial_1](https://D-Gun.github.io/assets/img/post_img/Spring_Tutorial_1jpg) +![Spring_Tutorial_1](https://D-Gun.github.io/assets/img/post_img/Spring_Tutorial_1.jpg) ## Entity는 뭐야? - 이 내용은 아래의 링크를 참조하여 만들었다. - [엔티티란 무엇일까?](https://rh-cp.tistory.com/78) From 7d8ea7f118d3c9d1207ccde45f2f1c49891d96d4 Mon Sep 17 00:00:00 2001 From: d-gun Date: Tue, 29 Jun 2021 17:22:02 +0900 Subject: [PATCH 32/59] =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/D-Gun.github.io/v16/.suo | Bin 74240 -> 70656 bytes .vs/VSWorkspaceState.json | 1 - .vs/slnx.sqlite | Bin 249856 -> 249856 bytes 3 files changed, 1 deletion(-) diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 242ef983963ee20f6879fda6cb506659c9c1e943..5dd1b7cc93c9e95014b81fb221e8dfb90c3588e0 100644 GIT binary patch delta 2068 zcmb`IaZKAq6vuyeZJ|IZu)&5<)|Pb)7+_0TVJM?eC>?HC7+}=Ru@M*>bFx{Kpp(XJ zI5T44_f#+@N`5iAKlTUf>5xRBV;dnZaaj!0C{emhjei)8fkom*eaC(TvJsiaYd(GV z?%nVG?!NbW^(Q=4Dv(HI6A~r}$--vr@QEpCHz3(aD)J=4$J1a)t&cOHmoJa-QNFX?@T*c!)IF7J zJ2V)2LJlXRbtB=jUnSdWv}=%B+0Q|{L+*|x|Q{HG1%)t*YdNDry}%^`~i5VG;^0dVno`UUZMf2sH}7*9h&kp~r@A0`)H zg)Aq25{{$x3G=cpC%yqbQEuwlrB>aewH_b*w_02AnU%E8#5sK93+;il-Y7qGzt);I zogVAnfbb1))??o!`|xJC$LK((L>_RWEkj($Hl!SR42%(a=87S} zAX^V+8b%I7tG0vefEjH?n84-DSQ_09tx+ACQe4g{gf~%J@}H8BQZ^G4L49jXl$l~D zi4;$zN2#QvVuFWkfYyW{Nru+Mol5@uTUedSh;L12v-)yeDPOu_NsxJxyNH-lqF#rC z{E!!(VxANXcumZ-?tKD|IEy9;(~RN_-k>s|XZqBD!pIZyb{t1fASaPd`#CnZT5j@Hun|(c0BXv=!PwD%R7u0)`3aOh)A5cl8 z(isZHJ$0X_Fb~E?+0U`}k zAWe2=|I|;UQ7SnpR1Ouh;;~`k8#WRZUe*GElxyF@xhvVwJfvmzFZ?PZ02wU=|44dV zkzmIEz%BUgoc}nmtdBwP!bh;DE}q&lnSazyn0Io5!sizq;GHaHPhCl&zHfe`vGd9C z1-uLt2ybAVD(Dq8ZW7aNzkT^ZtA8 z{XW0n57!Z;t6SM7Con14q9n;iu7VgG8X6K&;TujkCNb5QSKqOJjGNi>u!P@XQ=mmh zLo{n>9@*TWKani$A{mJ=qKFtv{6+JU$W9_+2rV&&NF&A(aYP9bODrLj!~~*@5NGJg zRuPfJ3}U<_#YRL+`r{}CfB>8=;%=bH1j35V~SxfIjzLY#4E%;Zb~@^9;*#)6J*|4 zwGXhOKaQJ|`xU;q%oA< z1HWpRHR^--+0Ap9r~Ff_9hi=qO1;OSMoVQJ-uOO_5-c2<4;nY7U_-SU^8+UAaU}8P zr*|uSjm*E3F=W=FyGd?84&3S@c^`C{FR%w*qiXmX`5$}2b^a{@h>#fFoA@e(?pq5~ z2SegEDK_6-!>eCAsPMF2Q5MHI3wU3v6?|_ivHYkDT^n4H-85Oe&KP~T_VY;oEAzi8 zittDu;4*h1FKp`sH1rhkf}>{uw|I=)==l+R#~Bv6tHsuUQLo#%{n&GmEvL(A*%`H| zS#oV=YUb>;+|*jRc6REz%&eT6>`Ymfb7dyI0k%Au{&vhyFD=Q*EJ^d7REp|3#C#p> z-bubL<~zyI(O$%hdO84M1EumIrE=nYI@Y!8dEw`sDt|`;sOl+sJtls3b<{G8dZJ6j zs*ZTP-ebYe)6;SAXtby6Fj_XoVrN&UrfzM+*80`Od8?M=nLrE86`Y_8NGIVE%j=HcF+*~7J6*PhI~ zE+QKdDDz!s{%;2vI{U}+sP6{!xNKr7M8Ek0i&+=BO!H5;#)F045EF3_`jg`2nERXU_^fsvBMR3xrHF#}C z6otll*J$BAZ<_`#LbungffL@3bPxlZ@XXB`Ec{Ie(cWGiyyY#_!!cA|$rTylxoRVQ zJZI6b{Y0#J3ZoX;DIne)&BL3o$%w(9%EG+I$G`@_H1Auh^ab?Tr2-iJ`me*^Jy B5yt=k diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index ae4eb1735..d784988ce 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -6,6 +6,5 @@ "\\assets\\img\\post_img", "\\_posts" ], - "SelectedNode": "\\assets\\img\\post_img", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 185cb80f51e20bf7f0a38b58570cd3e6e872ce7c..7b7a9352200af440de5c0a5b1b280d6d9a9afb88 100644 GIT binary patch delta 22610 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 delta 22831 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 Date: Sun, 22 Aug 2021 21:03:11 +0900 Subject: [PATCH 33/59] SELECT CALUSE UPDATE --- .vs/D-Gun.github.io/v16/.suo | Bin 70656 -> 70656 bytes .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _posts/2021-08-22-SQL-Basic.markdown | 64 +++++++++++++++++++++++++++ assets/img/post_img/SQL.png | Bin 0 -> 12295 bytes 4 files changed, 64 insertions(+) create mode 100644 _posts/2021-08-22-SQL-Basic.markdown create mode 100644 assets/img/post_img/SQL.png diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 5dd1b7cc93c9e95014b81fb221e8dfb90c3588e0..f4814bd544ea7fd4bf6b200330dcaf864f5aad68 100644 GIT binary patch delta 1573 zcmb`He`r%z6vyAaeW@>PqOFn{S8ZY&Yt8yJ$xB|^TJ5hii(1-5t0=S5{1S`(LtHwh zlQnE875azfhzNs$4+s6DNXhL$m_NF;)H(16qD7^;6*t)a5d0&B{bfDZG^MhF6m}jT z?!Di8@44rkci&46ipfE7xQFIj|G4q}?Xz&4enVQ>4BbWan*>3aMT^1?(c71gBkP=E z#P$dO2|r3(MIJb0q`D7AtKdTJg4=ww^1^7# z=2pOneta!224_7HgffKpZP;!=;6g!S4HtYkXhHnQr$_+V0hUxX~4p z-AY`M!w$tIJEGOmh%2Hh9&d~a-w|J}1D~%NUH%rYyTz$pp&zPzcfU4Fp?IR6)erql zw2=bs8s(Sn!4D?bKIVf1H?JG{A2Dm@(RwJm^Fn(drf-@^@p}`vfhGJOnPIN+t?w!E~ip+;X(IQ=LgcgSD<|tL_{K?Q!bz%6Y&_B{YM6jM)-k`(a5AZ%d zoO{3Ty>q|k+?$<{vJ=u&N;G+2EStNS!eipg5M#^Y9 zJV;oGCW3$Ernr^x5%t7l1lJ#+*hp+A>IfIX^#+O$5l*6+;2Ix)5dHd^&-pkY2)H82 zjkTor5as&&{dzn|@m}H)eXUT$L&hrWfGz~MkTup@Q@Rl3Lf$xSnjJB%DcjTyMsBza zyUf9+QYCMpx4dL-xm3wc{Mfu*;-;}^-tn&;`zhTWjy+sh>-c^y1a1bH_Fy6j?*(ynuZ8H?d*;Q&52a1sl14cKt_y6r6ey`B&R z5MD#uz!UlxuVW;(iEU2(0x0)av8qFPD3`rWjq>r1q15U=+~q6tAaO&t%~*kIUs+8j z2--0b3vMd^*;@t_U6B&5(&K>HGHT}W8=zL3&@|ejH)0ByE4v8VCQ3G0*OF8>GuXaLyAA>QG%g_C+-i(p2Tp_pY#tW{h@G3 z6yAciW-mQ2JnZXe4=U}lHbs^HO@sUR5or1H+!Z@)7}nb*2uqhnXl_9FXEzWIx3bph zSP*;qCA{@s1B4UHJ0rg-R^Q_pqC8Ct&YP zghjsj1bA-S+T2fK?WaGXyx_x;nF`kWU7hsTty%hex`9_E%zjJTe?Du_7De^itvmCu crE8URY(LDi`J*AoExG|e`f(dO`17RlCr|9;RR910 diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 7b7a9352200af440de5c0a5b1b280d6d9a9afb88..55ffbc859da012f7061f8247b299961a908e3301 100644 GIT binary patch delta 25426 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 delta 25995 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 $1@DQ8YA&6&2gFl*-%CUcU-L!C7$*yonis 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 diff --git a/_posts/2021-08-22-SQL-Basic.markdown b/_posts/2021-08-22-SQL-Basic.markdown new file mode 100644 index 000000000..3f0597e3f --- /dev/null +++ b/_posts/2021-08-22-SQL-Basic.markdown @@ -0,0 +1,64 @@ +--- +layout: post +title: "SQL Basic" +subtitle: "MSSQL_SELECT CLAUSE" +categories: SQL +tags: +comments: true +header-img: img/post_img/SQL.png +--- + +# MS-SQL +- 개발환경 +- MS-SQL Sever 2019 +- SSMS(MS SQL Server Management Studio)v18.9.1 +### SELECT +- SELECT는 굉장히 다양한 기능을 가지고 있다. +- 아래의 예제를 통해 공부해 보도록 하자 + - [MSDN-SELECT예제](https://docs.microsoft.com/ko-kr/sql/t-sql/queries/select-examples-transact-sql?view=sql-server-ver15) +- 첫번째 예제 +```SQL +USE [DB_Name]; +GO +SELECT * --전체 column선택 +FROM [Table_Name] +ORDER BY [Column_Name] ASC; --Column_Name의 Column을 오름차순으로 정렬 + +-- Alternate way. +USE DB_Name; +GO +SELECT p.* +FROM [Table_Name] AS p --Table_Name을 별칭 p로 설정하고 별칭p 테이블의 모든 column을 select +ORDER BY [Column_Name] ASC; --Column_Name의 Data를 기준으로 column을 오름차순 정렬 +GO +``` +
+ +이처럼 *을 통해 해당 테이블 내의 모든 정보를 검색할수도 있고 WHERE절을 사용해 조건에 해당되는 내용을 검색할수도 있다. +아래 예제를 보자 + +```SQL +USE [DB_Name]; +GO +SELECT [col_1], [col_2], [col_3] AS Price --col_1,col_2,col_3 값 검색, 단 col_3은 Price라는 별칭을 붙임. +FROM [Table_Name] +WHERE [col_4] = 'R' --col_4 column의 값이 'R'에 해당하고, col_5의 값이 4 미만인 조건을 만족하는 +AND [col_5] < 4 +ORDER BY [col_1] ASC; --col_1의 Data를 기준으로 column을 오름차순 정렬 +GO +``` + +
+ +위 예제의 쓰임 이외에도 +- SELECT-FOR +- SELECT-GROUP BY +- SELECT-HAVING +- SELECT-INTO +- SELECT-ORDER BY +- SELECT-OVER + +
+ +의 형태로 사용할수 있다. +추가로 사용디는 형태에 대해서는 따로 업데이트 해 볼 예정이다. \ No newline at end of file diff --git a/assets/img/post_img/SQL.png b/assets/img/post_img/SQL.png new file mode 100644 index 0000000000000000000000000000000000000000..6328fc643de15ffc7ac16f90f265ac9ab7fee128 GIT binary patch literal 12295 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 literal 0 HcmV?d00001 From 41f718cc6c1c987624999647628f82d443625201 Mon Sep 17 00:00:00 2001 From: d-gun Date: Sun, 22 Aug 2021 21:11:17 +0900 Subject: [PATCH 34/59] select clause --- _posts/2021-08-22-SQL-Basic.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/_posts/2021-08-22-SQL-Basic.markdown b/_posts/2021-08-22-SQL-Basic.markdown index 3f0597e3f..dea85a793 100644 --- a/_posts/2021-08-22-SQL-Basic.markdown +++ b/_posts/2021-08-22-SQL-Basic.markdown @@ -17,6 +17,9 @@ header-img: img/post_img/SQL.png - 아래의 예제를 통해 공부해 보도록 하자 - [MSDN-SELECT예제](https://docs.microsoft.com/ko-kr/sql/t-sql/queries/select-examples-transact-sql?view=sql-server-ver15) - 첫번째 예제 + +
+ ```SQL USE [DB_Name]; GO From 05e9da18d35c2be7e9d9da0fac3409c69b3b99a7 Mon Sep 17 00:00:00 2001 From: d-gun Date: Sun, 22 Aug 2021 21:11:52 +0900 Subject: [PATCH 35/59] select clause --- _posts/2021-08-22-SQL-Basic.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2021-08-22-SQL-Basic.markdown b/_posts/2021-08-22-SQL-Basic.markdown index dea85a793..d9de88fee 100644 --- a/_posts/2021-08-22-SQL-Basic.markdown +++ b/_posts/2021-08-22-SQL-Basic.markdown @@ -64,4 +64,4 @@ GO
의 형태로 사용할수 있다. -추가로 사용디는 형태에 대해서는 따로 업데이트 해 볼 예정이다. \ No newline at end of file +추가로 사용되는 형태에 대해서는 따로 업데이트 해 볼 예정이다. \ No newline at end of file From 13f455f35fb02f8d46e25900f6d14a4628ffaa8a Mon Sep 17 00:00:00 2001 From: d-gun Date: Tue, 24 Aug 2021 22:18:47 +0900 Subject: [PATCH 36/59] sqlconnection --- .vs/D-Gun.github.io/v16/.suo | Bin 70656 -> 82944 bytes .vs/VSWorkspaceState.json | 6 +- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes .../2021-08-23-CSharp-SqlConnection.markdown | 58 ++++++++++++++++++ 4 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 _posts/2021-08-23-CSharp-SqlConnection.markdown diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index f4814bd544ea7fd4bf6b200330dcaf864f5aad68..358de36b7daaeeb0963df231af7981cbd848a9b6 100644 GIT binary patch delta 9155 zcmd5?3s_TEwmv%~5Z)jl5fy?Uq7qC3@~RIc2>8SZIzCW{5EKmoNkB!E*w#l|bRerE zYFi)C>u7JaO6sGXKB!gN@piO!zP8hTT1!X$>a=y*?^^Gr)^gW6Ie`E^nD(2wbNqhy z-YaYGv-etSuf6sRTbwi{d*A5o>HEzs5Flxsq zEF3AVrBExXW!dn9C|4>)!axMHt0O=u@`crITk5lra1Y0DJ`!xxnD`2gXjJ#X`Uu1z zL@FW}F#(Z*7=R$YL@Wm*WJ22?OBEsrF$7VF2t!OqtVe_*G#ppYd1ECRL5uN4j7E$@ zj789lV-O028WD@2m&vj8LnI*{Lqs8>5%k+gEXN?q5blVT2rtBV#0o?NA`>wS@pGr9 zvy)ao3LBA#8HmYt#6^SBGgGL?V>uBq98rYuY|ZMpN zMNAUf%du1N2s}QRZ>jWD0p=T)0fqNW@QxWhJtMucV=k(VE zJQ{nL0I8cErx`p-^<*Xq2&d{voBdQhFE7-5JzwdM>OFAq5XAjdPim)$J5?Vjv`O_u zcdDN14%Is}-`Sbn+38e0{YZ~f^<)-gKcspsqL1p4HXD(LsB6-WsE@-64e%&4$PxJN zX9iP*-)J1C8B7ysk1&H7U1mU?8RIw+!VN)sm0;U*VL=i%VSOQw_ z(E4RqD?=_fB+&D3ue*|eh3>4D z7℘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 delta 4461 zcmd6qeNa@_6~Nzl?85TB!YYW!E~tpYn#b<)DH32;f<)y*X*KnOUBD7!&5CQWL}cq2 zYdegAcP2b1=~%m&$z-OfRbGY8B&IulB-1uioletEopz#){llrzOvY%y==Pjt7g0!p zvD4|@`ElPn_r7z_J?GwYFW!S%?;Dyv36H-SovIgv6@nl{5cdLs0967IGfyWP(sdEF!pH3)ORoRD$&-Qk_pE6X`@Pkw&Z}xPQu6-4lqU2UAEGPjxO4 zO%xCdh-_jZVIgve^#m*6+2j#RiFw3)g5^n6KS7j+-dV+tf$BzLEy2EALWC8p3O#R_Ad~2M6JhIbNVa`~0QhLpp`vWG*;VP^Rg#zSbN zucjM9YiI-><*Pzyo=ym}CMcT}!U`=2f=EOV8iMB&NwtB{5z#~p5lh4o@dWot4Aoc> zBk5U?5fbn-dSg=47m^@{SVSx)a)~^`OyI9$T4z5+4>iOJg1;K4-@3|I}=x+rIPBInUW&O~BY*4RXNONIO6&8&J2r#}2}ZYCx8STNzP zd22MBHN$AJL1!ibr^@h0=vmk+w>xy-AsOfN`||d+ z8qR>@f}8E<@r;-s=OQ7eNG`rBfbVqYi;&M1j^4J<;tV@h(*1mB)DVtW@#i1dvEhbM zHRfE7koTG3-U;W=px<2~C#0+CORmHRJ@@j1p7WKnb7WJtn(fX44W9&IYaj}D?dZ|Y zr5U@`5qp$~-aC#6?f_*4%B48aM6El|iCw^+D`p%Wjgvcb}*t zx>b71u^o@!m8c2-xn_zs|G>s%OHp2tWlyzp+s?Lwq;5ge&Ng3-M&97iaDc<%K+lH# zkb@%|p4JtS*v3s`M{zWIHum~fi-T(&5L};psNHXC>K$yPn6O+N(MUO((EHI!+|wBy)7Buj0NAG@b z`~cZOM?pWEMb*n$mnVYLc#(LtnD4 z7pJ3ZDx;GNt$F!lo_^5s%GGn!IotjP|H~N5cg_ZvQ&eXrFPqR}5*}yS$OijV$>sQT zlgpQEQ%XgAuX<>&)}cLn74|)AowR51@)aZ2DKmqMVN-XGy1PsVdS2fX_l432AkBVw zw>&R&3Y?ZxG5*Fv<#ZZ2(3q2;Hts$K@+OCl4|qQK!^=DJNAz-1i=$#5zP`zaHHJL& zZ0?oQC_8Zq;oDQVFM87I*j8;L?deYtlI@h{bm&Nan{vS5A=*4T>dkkM`(M1&%ex94 zhBEXvdF2R76uu*XXMZ7SfwTnh2bpFy`@lt**c20NB0Ykj-g`?F6IE0uY_qmm%}&W`F-tAQEiQ|z&{|N` zI>m5cFJ@ONhufX|tA zp)8jJTD*O!1uM?^zubhucm06RTwVffR0I0220*|aw{!8|x7N_9CI>3MPQO}l&MSVk zibpvm$F0Yhk$EC4;ygT7ZOi5R@>ogr^Z$0dK>4`kM8(CkbAv^)t0MdBGj@%z|a)RCepq;8Fg9P)T{M zT39X=(FN_BdaFNZcqtyb^<2>S%$sRy^6kan-1y4wxpd_+A*^~vaVJ3rj+Rx?RpC+~52`u|5CEuB;o4mh-8YgHeFS`huF=El;p>M*WnUWXM`LarR)5;3)EnT4 z`u-O-P>vQuwsKSlN%--0y|Q%{G%C%huurLthA$M`Z1}12lUQgRzAzh7BZdcNz*Z42 ze5?bbve^X6@ceuj5|s`eln<9{;54BBdN~g=Tx)<1akw=F9Pz^!t?;MFVb@ZK1I3mL QuHlYl5TjK-HN((<04Hga;Q#;t diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index d784988ce..aac54a884 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -1,10 +1,10 @@ { "ExpandedNodes": [ "", - "\\assets", - "\\assets\\img", - "\\assets\\img\\post_img", + "\\_featured_categories", + "\\_layouts", "\\_posts" ], + "SelectedNode": "\\_featured_categories\\sql.md", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 55ffbc859da012f7061f8247b299961a908e3301..5265c0893fe8ce1ebfb90009f6fb36be8bce9023 100644 GIT binary patch delta 24533 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 V6P?N_#A299sDbSN`fc!r{~yhAmVW>M delta 24230 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 B56u7o diff --git a/_posts/2021-08-23-CSharp-SqlConnection.markdown b/_posts/2021-08-23-CSharp-SqlConnection.markdown new file mode 100644 index 000000000..e84fc4681 --- /dev/null +++ b/_posts/2021-08-23-CSharp-SqlConnection.markdown @@ -0,0 +1,58 @@ +--- +layout: post +title: "C#-SqlConnection Class" +subtitle: "SqlConnection사용해보기" +categories: C# +tags: +comments: true +header-img: +--- +## SqlConnection class +#### MSDN - [SqlConnection](https://docs.microsoft.com/ko-kr/dotnet/api/system.data.sqlclient.sqlconnection?view=dotnet-plat-ext-5.0) +C#에서 MSSQL의 데이터를 연동하여 사용할때 필요한 SqlConnection Class에 대해 알아보자. +- SqlConnection class는 .NET Framework 에서 SQL Sever 데이터베이스에 대한 연결을 위한 기능을 제공한다. +- 상속관계는 아래와 같다. + > Object -> MarshalByRefObject -> Component -> DbConnection -> SqlConnection + > + > 구현은 Icloneable +- DB에 관련된 클래스 답게 DbConnection클래스를 상속받는다. +- 정의를 보면 아래와 같다. +```csharp +public sealed class SqlConnection : System.Data.Common.DbConnection, ICloneable +``` +- 정의를 보면 알겠지만, 사용하기 위해선 ```using.System.Data;```를 추가해줘야 한다. +- using.System.Data;와 더불어 SQL DB와의 연결을 위해 ConnectionString을 사용해야 한다. +- ConnectionString에 대해선 아래를 참고하자. + - MSDN - [ConnectionString](https://docs.microsoft.com/ko-kr/dotnet/api/system.data.sqlclient.sqlconnection.connectionstring?view=dotnet-plat-ext-5.0) +- 아래 예제를 보면서 ConnectionString과 SqlConnection이 어떻게 쓰이는지 조금은 알수 있을 것이다. + +
+ +```csharp +//using.System.Data; 전처리기는 미리 선언해준다. +private static void OpenSqlConnection() +{ + string connectionString = GetConnectionString(); + + using (SqlConnection connection = new SqlConnection()) + { + connection.ConnectionString = connectionString; + + connection.Open(); + + Console.WriteLine("State: {0}", connection.State); + Console.WriteLine("ConnectionString: {0}", + connection.ConnectionString); + } +} + +static private string GetConnectionString() +{ + // To avoid storing the connection string in your code, + // you can retrieve it from a configuration file. + return "Data Source=MSSQL1;Initial Catalog=AdventureWorks;" + + "Integrated Security=true;"; +} +``` + +- GetConnectionString() method의 주석에서 보이는 configuration file은 App.config파일의 `````` 태그를 이용하여 구현할 수 있다. From 6ba64dfdd9503332df7c9163e0fb90cecf612407 Mon Sep 17 00:00:00 2001 From: d-gun Date: Tue, 24 Aug 2021 22:26:33 +0900 Subject: [PATCH 37/59] sqlconnection --- .vs/D-Gun.github.io/v16/.suo | Bin 82944 -> 88576 bytes .vs/VSWorkspaceState.json | 1 - .vs/slnx.sqlite | Bin 249856 -> 249856 bytes .../2021-08-23-CSharp-SqlConnection.markdown | 4 +++- 4 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 358de36b7daaeeb0963df231af7981cbd848a9b6..60c7af69dcb1f4008e97c893e17dba8dccd2bef6 100644 GIT binary patch delta 3638 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 A`2YX_ delta 3523 zcmd^>ZBSI#8OQfrc9&gV1d+GYMHXBTfyLbg78X&LWl>D5uwXi!5s($piYY-{1XJs7 zswU2qc3>ZdHH~fT4zXsYAp^IQO~0s<7l&G#PfeR#3BWnySuJVCPVbs3 zrNh!mv5mfxT68+JWCOZk%O{JJN+Sv9{g^?8k@Gw}1^znl1aN>%uo<{O2H<{Gu&Y6? zQcr`mf>po(_JD7I9pD7W0gWIT)Bs*;DkuZ>DwSVV4To1&49vg=N&sKX2)hE7dXa#(8{|2S-3&1x)6FAPx*anBw!jp2@srVJJTR;)$ z2KsSNrN0mkcWQy{QGBlVD*k@h1E4{v_rY2~zf$MEwQ>F+{3D=Fi5-O<1|#76N{q*F z$-^2{KS1zFK>rd08dd1&M<|?l(f>Hg@>5U=V#=~wkE<*%jg@5^r)*4E{{zYGv>|w<~QtPfX>fl-MIw)x^1V~4E)wZH-Dz(!CHHi6Ax3vdc- zqy{)HzysZ|O<*hiE~%25lS{HXQR@PGKsWG$z2r&Gkf>Niz_}_#Z6)j9ee$$rAGN~W1jjW4#{>1);TX~f6mV$gSJG}zIo ziJph_XHZ=ySlqafH$LWK17%-vtI+WqiVwk9G-)p?y8uG> zi<%yHSjy5c3~boBT3-Fk=LxeepAa21)Ob?&c63UWDm)?0zUdY^KF0Wri(Qv|ktkPl40m1@Iy`1484TjYVhS zyaav%UIypDPr=W?E8sl1KjZZan)x6=0bc-$ia*Z>PncxW3m+%UUPzO~4=MfPX*&Lr zo{U3A`O-y~2>)0Lb~WmwFKjJlh^=_@U#DT*7Zll>WX`cFtW9!Ra~mvPU7h&*<12FVf)k zOgZ!VEfMT+>#P{ITzEVj(rDtTqa(opMUUea=n^IhkRLNA2y0fM0V4GP^#?wV?d%OhBvI#s$AywT??13 z^!C;`!gCT8-F$wrZpVE+NL zdwa!qy@QALJv-bl*6$ez-W^DHRQ2{&+8q@Zi?!BTdt4QqDCG}5WH?%UM>=d4o7HTw zo5?wGf%gD5`GY?kbozx4+yvDOQc_3n9j!-NmTvVDN7X%b9YgfxUvp`C+_jj6HkD z<+IPH+cy1S|7GJBE$xBDUBc8^}9B4BvdCG((a>>09HKH*ha>cwRkui%HSoI&5 CV+51{ diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index aac54a884..0109bd93f 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -5,6 +5,5 @@ "\\_layouts", "\\_posts" ], - "SelectedNode": "\\_featured_categories\\sql.md", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 5265c0893fe8ce1ebfb90009f6fb36be8bce9023..7078f3027c8cd3db8a615bcfd36d70786ec8c617 100644 GIT binary patch delta 22810 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 PvQ!CYk3K$z2lM|Av=S(Q delta 22853 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 sjg-``` 태그를 이용하여 구현할 수 있다. +- App.config파일을 다루는 내용은 차후 따로 다뤄보기로 한다. \ No newline at end of file From 334583beca46e39177e837327a36e45867fcfa36 Mon Sep 17 00:00:00 2001 From: d-gun Date: Tue, 24 Aug 2021 22:38:48 +0900 Subject: [PATCH 38/59] change categories --- .vs/D-Gun.github.io/v16/.suo | Bin 88576 -> 88576 bytes .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _posts/2021-08-22-SQL-Basic.markdown | 2 +- .../2021-08-23-CSharp-SqlConnection.markdown | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 60c7af69dcb1f4008e97c893e17dba8dccd2bef6..9a9f1a8c24cad9a28c7a5ac9f4c6073fb5450536 100644 GIT binary patch delta 2992 zcmcJRdu&rx9LMjuz3tYnyvLX@+>>sw7TdjHf*tMHB*Hd8MV-Kajj=6rK*vJ|D+AH! zG^{_uMBxu_$TAX@u#3#d9}+f`K^8&7B%%Q^K_w$T2MJM_-(S~`@sNO#(|mf)`JHpm zmtH~Rbg*{TDR4;Dqqif_w-URo`06`9%u`s-**K|Kj@KVEqR$N50_6qzJRE^c;ZX)5Ng;qY%9v0N3)IPODzwI; z5*IKeAfEy(AQ2>i;DgC1(+4Iioie$#sIWwx(SKT4CAyFjO?KHR)>7^8dXYg_@Sje# zBjy7f2fmZJH(gtnfXWpe1bHCzN8WH@FGv zJ80JuBEK{GEH0zqc;L%pu+?K(sPIiOXy~&nr2O(M@+P{dLw1;h(Stsc&*~yq`3&+} zJ41OSKI(%HdTfopa<{_Ap3YBj?xO#Ia zmdP9DL^<;&XcMX~>UKqo=Y_T_fLBUd>}E zfOBL=!cZBvY(284ymf!^nQYg>V;f&OT$uCZ@xy&OGhJ|mYt|j%B6QJ76K231`Au1L zv>}P2_eG9OnelbmXEB!wK3|`Ab^29zHJxg*s~Z&G&M6T&Sf&fBvP-l5KbMp$ZIZ~j zvxN@)G@iWcy!3ldGF7)GQr&JNeY<{AAe1z()hn8Rh!@3Lv3H-KgFRmIdc5Ynn4B+Q zNfHu`XiXz$ZMH5=%BIb=4Za$`&&g9$=#N5vISe|ZuLgd53YP4lR?q52U#vy5Y(J~> z6}$BQcW}_vny0uiIPqTtb8KqWEN|mHJ;##r!vhy?$n%JM+GhIP^j>W zky?27$NJ2SvgKKhjI^o&d)y)WF;?fAWt zlQKIuGcDJlb}AgDnzzm?c>L1_wM!<)x%o8zoM#k&=nbT(qx^Z1O=r&a(yW~`A1s#W zt2d{%$U>+Wh1#vCKg#O&GGfX?^ID_noBfGY^>b9_9dltmmRdKk035~?1iB4*7XDLk zByBjP3uyJ9TiTstg;NBsvkcL;!}%a*{xWtgtG^g_#fWaL`|mVCUta9ddis*}&9m%y zrS?{jZqGM}Pju=Hxy2-8>_lm9OA=M>Rc5g>4pXpIz+wC1w4`L|q= UMCX%7wy($%k*4;#>0(>-KejKZCIA2c delta 3177 zcmcJRe^6A{702Iw`-9yDaZw5sh%AC2u#fDnEGz^KKUQQ+jQnc5u{7-pi$Dw^>_ar7 zyhQvXEmhgmveQhQsZR^7V>^*&f|Iev8EwZpu{Ie~+i9nb)^uz$nQ1$i8Inf&y$i1e zliJiyFZ0=Z@3}wDz31F>c*-f0a>{hbMK7PWrr8CdRS*OtxHCIDi%MW%{mI5m(RikD z;?MMqxQ}_Y+hPtIvS9?1VujEC9QvOJTR<`hfEo}F_>N^D1EhgvU@35e;p3$OQ=imlGZYGAIEL0KT4= zXVK0Ag&-gB`)okH24sUxKmi{^UW~d4ph-C*mC>Nu!O+%eSJ_J}>B; zudyapw%^r%3jL?&WoxmR?ZQu*3zFTyKR?2kZbX~@&U#H%!wvuPhq;JZxj$llpaM%) zHJ__ny8t7f)!G)!b%1z!!I&|`eWu$t4()r{cO}N}wlBA*0(ATGQ|b1thkT)Z`Iv5B z-iD1S$NH)Eb^b5*E!XXvsoS>#C*c}-;r8Wq#Fm`Nt;w-4L9hbejz^sU$YpDAa=}V; zazHNN{XEq9VD)^T%Q$qx<{WMJYnk!+1}ozamK%(&d$PzSTG=!)HMGLi=)HvH@%}&N%qFvHPE8`E52edvp{+sAL3{bS$ z$C(&eSxe_dwYq4mjpX^spHoRn-bEvi9eonX`6H2DzmexL`uzjhcp~v6_ipCbqv_rTi->{pMGKx8 zq3Xvnw2bZV8Y08+K`utWylBR7gT)B}k2zhBHvM7(Q~N|Zd08Q4nQDC#**jkL*#%b;VBhU-!~qFBe670xX|KCamjf&mcSLBzi={3XBm@78Cb2|x|zl%k6&OG z{+#%K3jNfkRoG=#o7o>{yr09qb*wqA z{_wh0`lp93y;*EE3pG-6ONFa~h6V}>=9;dG-R`!Mj!-BVluF9nKB;7G>t;D9cZKDy zwr~>#Craj((8h^mYe#U$(|uiXD2##P$fgPt zB$zX2uKkP5m3Fjh2eV7AQpw|!x`R7{Qgd%#7c~sH{-c%O(hiTevDmaJbAY|Zmg-LW z$-ssWDn9VjLpR+2KAN3~Hy)9(aGlTSBs&`{J_vaL=~tp@XA9L2InDgJIZX7dw9#^R zTARx+G_&fFxzwPZk3~H)!emN4ql*qF$*C=i!iuI-U0UwsZ%yhJQ9U6}o`^Tvt4r(3 zi(y$g9Fpa(o^4vj%kMJvw5VP%QqzyCw5l`bc$fOlCTq!OUon-Hm%7%pZ{6yWLM0(M z(7UExD)+e1Z7cVbl>5rt*7&?kIKuq!I$T}tsas!Gvfizp5!E-$>RBVXuQpNBRXK@& zu+5dUb17)7ples(OXmj4)&~U7IefwiNx*-Uj$F=F-w`QePa)Z_xR6=$NO@ja;xNs9 zwpaz5Ajcl20S}WN-dAZz6b!U?-}CCP#3{wV6ui(Imh4aH#qJ4!=P_P4d7&N4r- zO<$}ylyy&ayVx?@)L;!8PW=aY CA; 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 diff --git a/_posts/2021-08-22-SQL-Basic.markdown b/_posts/2021-08-22-SQL-Basic.markdown index d9de88fee..c4a74c506 100644 --- a/_posts/2021-08-22-SQL-Basic.markdown +++ b/_posts/2021-08-22-SQL-Basic.markdown @@ -2,7 +2,7 @@ layout: post title: "SQL Basic" subtitle: "MSSQL_SELECT CLAUSE" -categories: SQL +categories: sql tags: comments: true header-img: img/post_img/SQL.png diff --git a/_posts/2021-08-23-CSharp-SqlConnection.markdown b/_posts/2021-08-23-CSharp-SqlConnection.markdown index e97dfe99d..ac5a7a1e7 100644 --- a/_posts/2021-08-23-CSharp-SqlConnection.markdown +++ b/_posts/2021-08-23-CSharp-SqlConnection.markdown @@ -2,7 +2,7 @@ layout: post title: "C#-SqlConnection Class" subtitle: "SqlConnection사용해보기" -categories: C# +categories: c# tags: comments: true header-img: From 692aff214ec9c0186ab2822d6a05430b7f80ae06 Mon Sep 17 00:00:00 2001 From: d-gun Date: Wed, 25 Aug 2021 21:37:54 +0900 Subject: [PATCH 39/59] =?UTF-8?q?git=20config=20--list=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/D-Gun.github.io/v16/.suo | Bin 88576 -> 90112 bytes .vs/VSWorkspaceState.json | 1 + .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _posts/2021-01-21-git-command-list.markdown | 1 + 4 files changed, 2 insertions(+) diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 9a9f1a8c24cad9a28c7a5ac9f4c6073fb5450536..c2177305746eebe0b4e94315b056d65fb40348b0 100644 GIT binary patch delta 5052 zcmeI0dr;KZ7037fc3E~8SW!U<4|%vEMizIMU0yD_z~Un+h#DnI)CCp=d?124s9`m! zsg)$Mr*TasimQT}=m@_|bXq%Md~{M1F=^9AQyU{Son(?ubxKmTQ|b3EyNHHFGeiIA zOfU19bKiS^_ndpqy*S?Tb9DIa)X|Ak%CKOGWUfRak%49{;7Py-&iBeXubc)s6J&rH-a6ioC#AO>*ROs=zr2?3 zlhIpI+*mL?w*&E5t%g1=oD6{B`5d1 z_+9nM$Fh2^wue>5RnuQ(e(1wh#+MNR83y=n4gq>F97KXgX%ZIpuqNvzfvDuF^anmw zrXv4+s`TxJPnA%iXJNkj$JHeN$oY~5y@MZCWiBTD@v4+aLcNO_d`%{DO$M&W3VG8=06vGc8qY9jJ`S8MNA>sN`@?i25f@fX^&H!#5^r8@0&CF4fR z{Y>BJ?i_;{A9jz4nh*_>agW*8R1@0Zj+9#%W)grD$bcV^1Am|ZN}vJ(AP@wB5HJMn z1!Pfa61YYqP>2Lkz-JXP$j5riqamq56(ck8%n6ldS_(3$APuC03@{OxK_-|4CIbt| z0@)x3SV1nB0%ie<33VBQ%1jNxB;3tf-O4 zVYW;q)m7xlc#P;%Om~HYMN@5Mec&kc;GUi*_avE9lS4VL&7z%}WI8M8#qQ?hV(4!6l3z{w`u>y z49eY{E=$oG(wybD72TCvE}Z=HD=Ozft6~ub@DS#kQ2rtc2mHmlpKW8#Dyxi#ult5w z^#U`}ovIlM9*B56@eQMzH4U!V;cTQha_N`;|F=A-;=h? z`Ny(%V!q5jzkces8Q)r0(awrASsEJpY^m>*1oS&4uKmd@m!cEY;+ze~rOvnw{}fTQ3|z$ZKg zc^uqpvrT2r7tSdXQQ()*`=9a)e2QQ$jwx@otA77+XOr6TlTW^SFE60u?%7+L&u82? z)p;TOPbIhVJSMSg@5=}U+pbEf?V^JmTOC0zY46=hj!Vx5S8ySlAT6`oX!7%BsZ64# z=bqpC-_)1b^Adtr*JxHmMUGOsTpj}rgbd|@nQs+Og_l(LT)!<7$+13x-}L$tzvJ%l zmX?&*YV6BaSC`w@7ELX$AzSMj_hm+%7i;PEKX)j-EhVGTV5IQYjcg15)=9L?WezYV z>P@|7xQ$m%RC5=2|J=~*^*Yxpg-p&ndhK-w@0donIx~kq*!h7&Rv%~38T4A+09}$+ z+Nvu{SFc~i#x1E@y|!j;(V%uswAl@*Hk#3u=~9HSKqY^3@Efm{nlC1W)K=R|`)}A& za1q{(Npm_n22~CFJX=Q%t;#{z_6E=X~+JV)40Uv?4j%JZ^fA+gLdE zjWx;HS52Rf*jp7nmFLBqj$r0Kt#F?b+`kcM&aW+^<#dPC{l47YA&~x~IpUm;jx%z0 zWQZAOwlT{Ayi5Lt$u;RFlcB_5H)+$12BX$kTBg&cnGB^`dzr4xSe&d+wV6_-xQbgd zbokqtWtftiYRuKUFAMzKi#YeJ{e356dk_Q)LkBcZ_oo8=_QMHm7rHFMF$ty0t)Y~1 zB?cB$NtR0;l;w(dMN4+Ew$1 zabM~mF~57m+EUdL##B`OMWX9wE=!R3~ND_hM{=&M!3PELzsr-F8=+0K(Y Pt*k1jrH~0NbC~=;N{tEM delta 3833 zcmd6q4Nz3q702Iw`vJ?BL|37Ju)s!0*d@EmBB+SKA`+t#j5Y{FML}alAo4JluCgK4 zItk6_9?hnWP0e#=lbLi9<#p8QB$gPPv7Knrj5e7x<5${@8Im@3(A3OS`#;Mr?htLJ zO(xU(=C}8rbHDF7_q?~hA%pMNhMkUVSqi6QNm`1c9$de1;|6PW;I4!9>2lJL|FKtw zpLtJYLNm06dgWeGqFs^GMV|p0Ztq5pERsiXvu4pKopm;jt$ z6374#f;6xUYy~O619*ZQ1Czm2zdh~ZulspIJJELT7@lsfx zh}<47uR^{ARD(G15a71Uk*@$N!Cb()CeHh~gtP{N1FQ>I&JO1t;hfuah08@zx}I=( z6Y@vFX5bC$xDTf-kg-o`KIjLFrA|DGWWiD>L0*}3|3CU~;T^_2;b8Az&-hOsF*?bO z8|)FZK%dcfJJYk9u<2s~O#ii(k3kzA{8pB)MO`_FSl)s%TORJ&7wQx-Jr6Jg6}$ts z@=eo^TAu6K^6Vn)GA#c$mbZob+_XH7`gW$T2saLyo@YWDZ~1xQHvhBbn?}bC{f;-i z5RxPV9pDo&AUA@Tu*|wRl;gv4B62gB5SFPT$C{r8Asu9ZsUQ<%0Sm|mIe-VEfgFoI zR5*}h4Rl#VEoJ1U?rJqBK7bZWz*26xt7RVT&29C^wI6KVE&NFyQ|R8ar_cpg7CB^- z=%${eJ~5rHB-O=cp@QSsSYi&4zcp1R>%=TWC{EG2so6N-cv2?TnZ!zTVLu-0HZrk} z-jJQ7OhRo7YTBY|4eN2fztpa!#~A%yk4dn@anK&?t$6E9p-awTdQ3awT|y@;Hd3|> z_^Ukhh6Te{VH)HkRrkm8C=W%qS3Co%S*H5Wvb3!H3%bE69$^xEWBE2mMl}vVcvhm` zlzT%99!YU%*1``H1O4TqmCo-p$2y%3o73&BdBK+<1XXuPrwfF1mOC>uKJ?M z&p`MY_&InM>;TzyD|fp%_23Z6T)An7!$C-d_DD+Ez?}#G(bCA1A6@ zl&+<>|5fK-Uagl|G3FG@w}}k8w*0-=m6(ZR+`%i0rYx$(^caP4y zI`e9E2Mukt1j!tP=JI;@_k*Wj{xHwxhQ}fQ&ub$95dmZXQK?hIzG~Wk4;qN~l z@_K%)kDc#GKW^LtXl6xgmB$Cv?RtN+#}N9~iWthso)*;6m$FR@HaCWbCf^gjM0PO# zFyrMv8AxsrMO5+UA@wQw8}9wx;ll66OmIm$ZgG$j_Qd(4;b=uDEG5)qWBk>@Dd0;J zL2A&Y*+yNVvs>wIb~#*5yTfUB729v?3QkH1ZZ}LvbSRPoq(4EZdvV-NGxrRMe9Qjiy!X=!+o$$E_tx2zpBAKC zy}a+#uUtQPQT_Pn_Tfj?Sm}b(tUbN$DWO?y9}0D!>~F4)<2*Eq<*+t9W%NMm-=?`dv z)whi5t1>xHFQ&JzD753EMf>=4n)qfuWGXJTIlMJ3?cI@Eq`oh!NA=V~X3c!|Q!#k# z_oBp6XFD-Jo?ImsQRjb`DXIoKgsgRx*)iWJ!d$EGK~&Umj9|p+i`I-;{EkGG^erhD-qM*^iNA&&xVxZ+}hluSC;+Fr=EQ6^uigw z=I3Tya%5*Oa}FQ>d&nlXF7tN~lrG_{W%bio%0A~I^I5-k=2U@>wp@AFz+NZOd#6j| z+2IkrIZ^wW2l>lPs&ycMjXrFZl!y?WZ*{%Zi2wiq diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index 0109bd93f..aac54a884 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -5,5 +5,6 @@ "\\_layouts", "\\_posts" ], + "SelectedNode": "\\_featured_categories\\sql.md", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 35efc880af144e1903c9b06547d9bb666c59ce8a..9a6db003381cad440424e34c53e0d4bf3fac7369 100644 GIT binary patch delta 22912 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 be^HTNgd)&Cbn9%*`#%D=5y(f9k7*=? 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 diff --git a/_posts/2021-01-21-git-command-list.markdown b/_posts/2021-01-21-git-command-list.markdown index c95ab838c..da2c05991 100644 --- a/_posts/2021-01-21-git-command-list.markdown +++ b/_posts/2021-01-21-git-command-list.markdown @@ -43,6 +43,7 @@ git설치는 [git download](https://git-scm.com/downloads)페이지에서 운영 - `git init` : git과의 연결을 위한 명령어다. `.git`이라는 숨김폴더를 생성한다. - `git config --global user.name ` : github에 생성된 계정의 username을 등록한다. - `git config --global user.email ` : github에 생성된 계정의 email을 등록한다. + - `git config --list` : git config의 list를 출력한다. - github repository 관련 명령어(clone, commit, pull, push) - `git clone ` : github repository를 복사한다. - `git add --all` : 수정된 파일을 포함한 모든 파일 local 저장소에 업로드 From cb342aaab9bce119d046f8e8b1659b5245464664 Mon Sep 17 00:00:00 2001 From: d-gun Date: Sun, 29 Aug 2021 22:25:57 +0900 Subject: [PATCH 40/59] =?UTF-8?q?git=20command=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/D-Gun.github.io/v16/.suo | Bin 90112 -> 75264 bytes .vs/VSWorkspaceState.json | 2 +- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _posts/2021-01-21-git-command-list.markdown | 20 +++++++++++++++++++- 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index c2177305746eebe0b4e94315b056d65fb40348b0..9637a7c82384f6c103c7c00a7da221689cdcd6f1 100644 GIT binary patch delta 3976 zcmdUxe^6A{7036yUDgGbWz`iZyR!V)2$5afA0Qy0{FWpVAflm$Ad3`BMA(!iNeRko zHL;OW*kgQcqfOXarkP2t@N7w)$&_e2lRuJ}PTO?s&;~mlrC-$N34Cfl%A=!JagW5EbHtH?v$=d)zHi|k5*$N3VWCJY4kDV6OGtWc%(H&82) zC?+C_c%qEZ5LzOSh#@kGLgGH6f>=lJXjNo0hC|_EOs}`}WDUXi*=JT<>1w^HP0_LV>?|d8Mguk^cbI z4-)-^kMIi}x}kX65=yGg(7#y8kczw_R&fQvDpK4OtYQSQgW%6Ml1(63uUNuCtR_sv zoiyh0WsUo96L}2{5E5BOb=K=%VzJ1q8xO)FZzPV(Z5EmRTtXUioi%2AyT)nDi_9-Q zFkEL|5Sh-)9Ywauv)zrz&P6K@Cvwg$k-xm0$N&n3Kqv{8CqlMd*HArDZby^V5;25< zh$V8cC^dasBGrt9iC9Y{5oRKp;89Y^rV$poy^d@;ks-IaPY67hYR5BCg=k7k7;ZJh zY^Of;#18H|?B0r}(proD@0RRClg_G2BE|5k(~Nc@5_+&l*AJQav93nN2?gIfatneQO}>U1gQlt@;B5l7#VqMfiawL69uFG5Ard!!r26~cJjQy`oL?2SJN1=0;OdFXw~VwnPeRL5BB3BbA!&5}9e zs?y(A774tM`FQ_xxW1amV1nke8S+ZAeOegLQtMFNxLLy|v0%|t^|RC%RN`lXRT^#F z1%b_~fI$e93wM}-6J}@zob9W}H7-k#1ZdgH4-Em`edjk`Tv-Cq7q?w3gf9o>yiI}L1Ka`>$M z?yv1@?Rv7)rf@0n>ElQJgOWB8C*C27KGL<%^s$m8COOpga20+Z(8*LIbI1K1r5u{X+*`T^<%Wvntr|ouo z;JhHFIw2eXb}&n7Ir9C8ibE99!vu?Tgg8n(LvTJgMm$IGM*B8d7UNsQAhDSkB8G{% zG53ow>@oRuCdrg&1ywRRL+YZ}IN(pRNS47Vz?CPgSaQXn55J=VZ331&Xq1c{YlP(K z7k|>FOMl_D&ra<5`^$qfH($@KYjV}qK6*hNvG?mgPaMFj4x_ZM^LYpi33oI0DIxGu z*o;=M`a&|R!Lrh796I3fHA?=niJUSRPSaHQd9Xs8x#M>`^}#zM&*pU6w%2X5 zmAcXQ$$A|5Z5&R1GWs86dC?b`62|>8AW}-rUpD?;tb2Tev|;+!fF0M8g4e_{SIN4i zVtrejAI9M;`R4G7@>Lk@6K-Xyd^nE}Tz z36pP3WAWS;+_I}Avf*+R$6WC0mOHlP>*kau0h}FsEIZ;d@p7+4uq2r!DADT+2N#8T$unax>;Yv k+V>0-^9BGI%?4pK0W{*p?O>WPZG>hOWfQ~1kOe&O52oDi(f|Me delta 5009 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 X4Twj{GoqlJH7kXCnXeruBZU740Bs|M delta 23558 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 H6bk=84!5|% diff --git a/_posts/2021-01-21-git-command-list.markdown b/_posts/2021-01-21-git-command-list.markdown index da2c05991..343f9ee43 100644 --- a/_posts/2021-01-21-git-command-list.markdown +++ b/_posts/2021-01-21-git-command-list.markdown @@ -58,7 +58,25 @@ git설치는 [git download](https://git-scm.com/downloads)페이지에서 운영 - `git reset HEAD~2` : 마지막 2개 커밋 취소 - `git reset --hard HEAD^` : 커밋 취소, 파일들은 unstaged상태로 워킹 디렉토리에서 삭제 - `git log` : commit 내용 확인 - - `git push -u origin master` : github에 push + - ##### git의 branch를 local에서 생성 후 remote repository에 push하기 위해선 remote repository를 등록해주어야 한다. + - `git remote` : remote repository 확인하기 + - `git remote -v` : remote repository의 단축이름과 URL보기 + - `git remote show ` : remote repository의 상세정보 보기 + - `git remote rename ` : remote repository 의 이름 바꾸기 + - `git remote add ` : 워킹 디렉토리에 새 의 remote repository 추가 + - `git remote rm ` : git remote repository 삭제 + - `git push --delete ` : github remote branch 삭제 + - `git fetch ` : 의 remote repo fetch,로컬에는 없지만, remote repo에 있는 데이터를 모두 가져온다. + - remote repo의 데이터를 모두 local로 가지오기는 하나, 자동으로 Merge하지 않는다. 따라서 수동으로 Merge해주어야 한다. + - 그럴바엔 차라리 pull을 사용하는게 더 편할수도 있다. + - `git branch` : branch목록 확인 + - `git branch -v` : banch 목록 및 마지막 커밋 메시지까지 확인 + - `git branch -merge` : branch merge여부 확인 + - `git branch -m ` : branch 이름 변경 + - `git branch -d ` : branch 삭제 + - `git checkout ` : branch로 switch. + - `git checkout -b ` : branch확인 후 없으면 생성 + - `git push -u origin master` : github master branch에 push - ##### 잊지말자, add-> commit-> pull-> push-> pull request - `git status` : 현재 폴더의 git 정보 확인 - `git branch ` : 등록된 저장소에 의 branch 생성 From 1bbfb31b76154bc578c7a9d9dbb05e663c11b42d Mon Sep 17 00:00:00 2001 From: d-gun Date: Sun, 29 Aug 2021 22:29:28 +0900 Subject: [PATCH 41/59] =?UTF-8?q?git=20command=20=EC=B6=94=EA=B0=80=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/D-Gun.github.io/v16/.suo | Bin 75264 -> 85504 bytes .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _posts/2021-01-21-git-command-list.markdown | 17 ++++++++--------- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 9637a7c82384f6c103c7c00a7da221689cdcd6f1..059236321b9120c6ec674963141763985b619a0e 100644 GIT binary patch delta 3386 zcmchZZBSI#8OQH)Sr&F#U_pWe5Eh{eD&Q_cK%#VE0ZmlIms&Kah-j>l6%}ftHf+&x znv@#YN4aRR;!WCqh)pSXrurdPY9?vZG7X(^I-2-`G?~$=sEyb*A<+NXU69l&w4=%5|ZG zx64hGqYcS3DJcYPdhj@i08s$lMvIV|KslG_k{g#I7Ym*M!C*3Q0%2)H`Weztq%*)A zPy%KFD-fQ{25Dd}5Pfoy&I3<^Wbi{EyiG-F09b^S4uoxrBsEIYQP>0$K@KPcqOlg~ zH$W0t1hT+PumaQoVKerK3B{8v5=pfbdXYL_Wk{4n-OT!u@4-7#-BkZ zjt}|g|8F)eJ~WjK-m^LtOXjOtiENV%w3{2k8Y!QL!j|b0CN|9GhVU{2EkvC-)Z-nJ zc?k9Yi-EMEh!D9u;dzn|OS~)bDSk_~^S#6@%^I6P!9pyt{l+Hd`nbjXmc?$=A&zI! zAW7QDWUH*DL|r5`Uha-gLEdtaJae1|?;Rud)mU$>UhN_+CFQkX?f0d5q-KVxMY39; z^DK9=bKWAYWz#`47hfd)$Zl?}i>mdYvv8pq>5sqxP~fi<_2OZa4}wFW4Je=;90o_g zk3k1G3Vs5PflhE7sNhxb8u+PJ`0`d#=bO}MSzV!1)8+1ZL`4~oN{H}4T&Z|?baexn zxM9sQow#7f7RdM3xXHi`Ya30$2#`3C;!%=9X|guC>UyBZh2{HSK@0cJEt8L-JvN$d7;76n$kUecS z%ZaAvwjR&_U4w&;Ro(gHp%3hpzgT-?X4~kyJKp(6)3ktIzG{!to@+Zqswemndw)(d zsU32+`wM0j5yDBBtGQoy%W9WSJtecb$Duji>>>3;u=*RB-9c8(`s?=txaf41R@Ku< zy!5o!AgKH7yOg_rea$+1cD5}e*H%-Lk!@dR%gDL;v8(SuK3V;f4u8-3Vosc4(#p?uk$O(%V*?Rfa6SXnMTpbvdvbcj7fJ=6 zIbY7N+}HT*g#z_F-22Mg$o;Hay-a*{AfCGh()hr8VZ8L&Ozyc9%Ar?wsFyL;6*vE~ zFF{Kfs3vs)<-gV?KI8zL5L-IH=M}denn~YLk}R}SY1Wfbb6j^2_gpK|&i<`{)N5g1 z;{bNwv=YB@E0dSsTE$1EMRESESbCG~caypPnw2|;Bl%XFS)2dKsmHnc+6v{9cq-!d z!HryZJCe<}t9WEElACV7$m(FF2=K{G(bOL9xwA#N7fyM6r^3V|cd}?cN8HZgf={CY z#l^c%`EwXO!W-%Z-tXhpA~TN@IG4T9kORMp4!BadzHRqiV76paVIe1jzj%aKrj0y za~+L`OAD0KM2E*5aQ#3yPzLiB|8kdRqe6V=xDel!N|#Kr)HN<^KG~J40eEW`4{uR= z11Ls`3?!cyxqPxF3Vm_=O3l7#m~WZIUMTR*wwKq=ih&1nlw+Z^fM4GodGfnK7@aDx zhFqR=)2Nt?6hEQ(hJoUh6a&pyT7v1IQWQd!$~hys=w}bc-(#c-e_(TJ%*ux$G%OUT zqBTC7y%n*TGgY}{qIHTKMo;@UQJOLsPI{#;j5@?(_{It$ShjLEoL-<#e=t@SV?oJS zP_GE4a@mYg2O{VX-c9A(4AIKkNput;@(Sv56k(KdW$R>WrO&`WJb!ZYr5&J~AEqd^#@tuSD#>0W85} AtpET3 delta 2752 zcmc(hYiyHc6vunsbz8e`V}sq;y6#rS*jCncExS0d-3^#>6G5XmHej9Tgk|dh8L*06 z3`}5sqLqj!FSwY11p6947!nsQDk_MQsF@&BzDT0qHX<6S|5Msg6DA~l@M(TI=Q;0l z|38Ag108|F^ zWw4FlA&?i0<-$%4`do)oG4eW5O|Z*BGpGXm{pp}(pHmz1=3wmkpq&|3rX%Qg zg~eR(A6BWvrFRqco5JFo;co%GzzsZ7d(^&EQ(l;bO8r+z5*~1Mr%2p2cL#DWoO) ztR>rfYl$g@i^-M#B_{U%J;gKyd%GVoEny=bPfXkWh#8Yq%(5^V!Vv=O>tJI+97qBa zfDH(Hj6F~x7nwX@1Y98>b}A?c=0lB&V=)EV83>kx3UNLrwZEf4=yiYm58W#IxT&Ni zKJEq}ezs%@v!tbN(H-AQMPf95vACLuG9tMbc98XmFrM$W<*QAqzxn;C$TYku9kQU@C`Lq zd?eYTNXkPgRgSJ>HXBt0ms!e5r+sE3Vu=l4q&qYDun>8s%nBV<0PBoBMpru-3=MS!>;^D9@{jr1-mu=$N2$ zetCm>oKXwMymW6z6s5g3Oci4IjRa-mmL23fcxUJq+9~4JmwC-uq!D|s86r3Jn9XKS zdcKmsW{AAG6Ui!m+cI5QvF%`_<0bUF74WdPf$d-i*a=<%y8sTQe=lqw;Nk88v%o&k zuk<&prT&hEzGw3#C4bKld7OFTLYLN9>8NY4mTiV21OjRGf3KzN(L6xq1CpoujE2?M zfY9bpMyg}UQ+!%WMTqh%7y2Sbig75UQsFZ7jkm9PW5`EH&2LMnUgQ)^$FJPXjF#jh zl5bOOKxoBvs85oQM}?MIxTCS&9}Pu#1_t%KTX_v4z=fsCSxwWKHql;IQ$202U%5PB zB>AL9eovA=mBeF5?TY>6V1&<26pQlwvPIz?+yF^S5}d6qF1)OPD8CYc-KzAQ+pZQh zN1K)AkKZA$Jc;T=R#B|7@Y@sQJ2go5!+1vjLR-d4o6WM)(rPnRSS?nQb(Pa>s<2sB znOdD@r*%bHX?csSJVJGd>Z;86^*AgI_2t(3QuznzE}Jo_yR&uG@|7*F*0!~st6RI4 zHMXp45qtMrX+4is!(-(lzAxM~$x-33nM&&&Gb$~?eetGvd$>vzt}}RN>nU0ONfH;G zCG`4O^!GGM_3G28KDevwwT|R>G}SYxZ=$9zGxu5r?XJBbfpM;=K!^ei|Z!qW@>N$ l!H7_uMCC5N18Ri*`k?%0x;HV6$^ru&`*izy7)YUne*ke&Zm|FW diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 06132922ca73d8fb4dae0d8e3d8166ec4bbe13c1..5afd8632acfa1fbeb9f8666535d398161d36d1e7 100644 GIT binary patch delta 22558 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%0DuU6=uvfMjo2ne|*PbA*A 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 Ws(cJCWgR1X` : remote repository의 상세정보 보기 - `git remote rename ` : remote repository 의 이름 바꾸기 - - `git remote add ` : 워킹 디렉토리에 새 의 remote repository 추가 + - `git remote add ` : 워킹 디렉토리에 새 ``의 remote repository 추가 - `git remote rm ` : git remote repository 삭제 - `git push --delete ` : github remote branch 삭제 - - `git fetch ` : 의 remote repo fetch,로컬에는 없지만, remote repo에 있는 데이터를 모두 가져온다. + - `git fetch ` : ``의 remote repo fetch,로컬에는 없지만, remote repo에 있는 데이터를 모두 가져온다. - remote repo의 데이터를 모두 local로 가지오기는 하나, 자동으로 Merge하지 않는다. 따라서 수동으로 Merge해주어야 한다. - 그럴바엔 차라리 pull을 사용하는게 더 편할수도 있다. - `git branch` : branch목록 확인 - `git branch -v` : banch 목록 및 마지막 커밋 메시지까지 확인 - `git branch -merge` : branch merge여부 확인 - `git branch -m ` : branch 이름 변경 - - `git branch -d ` : branch 삭제 - - `git checkout ` : branch로 switch. + - `git branch -d ` : `` branch 삭제 + - `git checkout ` : `` branch로 switch. - `git checkout -b ` : branch확인 후 없으면 생성 - `git push -u origin master` : github master branch에 push - ##### 잊지말자, add-> commit-> pull-> push-> pull request - `git status` : 현재 폴더의 git 정보 확인 - - `git branch ` : 등록된 저장소에 의 branch 생성 - - `git checkout ` : 의 branch로 이동 - - `git checkout -b ` : 의 branch를 생성하고 branch로 이동 - - `git --version` : git 버전 확인 -- 추가로 새롭게 알게된 명령어는 찾는데로 업데이트 하도록 하겠다. \ No newline at end of file + - `git branch ` : 등록된 저장소에 ``의 branch 생성 + - `git checkout ` : ``의 branch로 이동 + - `git checkout -b ` : ``의 branch를 생성하고 branch로 이동 + - `git --version` : git 버전 확인 \ No newline at end of file From d2f093f0eba1d45359ca596f20311079c13a4bb4 Mon Sep 17 00:00:00 2001 From: d-gun Date: Mon, 18 Oct 2021 21:52:17 +0900 Subject: [PATCH 42/59] =?UTF-8?q?SQL=20CREATE=20=EB=B0=8F=20GIT=20COMMAND?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/D-Gun.github.io/v16/.suo | Bin 85504 -> 73216 bytes .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _posts/2021-01-21-git-command-list.markdown | 8 ++- ...03-17-java-class-instance-member.markdown} | 0 ...arkdown => 2021-08-22-SQL-Select.markdown} | 2 +- _posts/2021-10-17-SQL-Create.markdown | 58 ++++++++++++++++++ 6 files changed, 64 insertions(+), 4 deletions(-) rename _posts/{2021-03-17-java-class-instance-member (2).markdown => 2021-03-17-java-class-instance-member.markdown} (100%) rename _posts/{2021-08-22-SQL-Basic.markdown => 2021-08-22-SQL-Select.markdown} (98%) create mode 100644 _posts/2021-10-17-SQL-Create.markdown diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 059236321b9120c6ec674963141763985b619a0e..153b09c7dd88ca9fb15eaa78191de47e715dda01 100644 GIT binary patch delta 5979 zcmd^@dr(y86~OOz-CbA~geZ>{Z~=vt=w7`0Kz0$$@(|xVgosHtkY(9b6airg31Y-Y zF-=3@o+CJxC&AL}ntH$o)tx+@ONGxJU%8*=SJ~ADN zN36(JWFwM=EJR8Xn)Ey@^N^LuS|q4AkQE4Q2sd0p9SA&tbx%}V#CmJET^!X<^6l8}4EJ@1%G979FE$9{`uH~0Lvx}{s+t!vDVdW@7=w^GNk_CfsePyBRHB}UIq7{eCzVm=Bx~-R(3}-0 zOy(p%n9Q7{kj$w@$eh%k%$%!GhRj)jkSlE9&^yTo$ei>tnRH5X&PJih%(*PAj1*30 z&gD^ZBztG(v@<-ZJTeVYAWB4q#2~SV8i_+_J@Mg^>WNst4*`3eRzV%$h%?+h7khG% zJVcMoL-LXN2nj8~(ts4g$+)>I7GbRju_88vBo<>?f-FInBKIKFUy5ZJQXXzoAF&+U zkg3tys<2Xx)Px1rV_ApPBlm{;8nE0DuHTR41Be6u6qk0eQwxVQotFRe9Y{E#W)ui@ z2)t{`0+Cm%9>KXXoI6hE+gMVwF1R@f3T;Uns_1-NfMQ#FgKj zHu>wjR!)QR2MhUQ4Ej<~GlfJ7&XLb5_hX|_9!puxVkwYQ(2k6;O6WcXv`bv01V06lgJRVUp`pb!47sl8~E4N6JZHX>!^_A1i$& z6;RQHn_5y2FQ*w`w4^3>3rbL;jI2aigN;mhbjdy#h(UXv(y>?`yDU*M;2jw{mCi6U z`k}O8+iW8zasu8sitztBu9jPaWjWWyxj852g+kUW`?( zN;&m`BWc-daVb9>_O9TiPqj=PTjy?bySxQk;eux#3_Ls#e**WBE;Bqgjf0;*X(^_Q z2zAhvXYrTS!VWdM@ zi;Z{~+y080qYK=cs4*Dr4?FCRp;>~-6r5>fwc(kvJn4#-r7DBn;Jmmtn{H2`C-Y1h zR_HKO-?UIC?nqab?=PK6HnFm@vfR9*zhrG|x2v+%*EJumUP*<4J=Gek!EEfWbhdT7 z_dr6g-v5XKN~<#DjG+%0l&(#eI#o>j^c7}>E6*g!eUA;Y;Q2I#&gTq8>^A%s-Fe1W zxfV_GChTf0#|Re-=UPkPK&u7oNzrxrTa_cg2=(0f~7d!Xi`|8aiuc%X@j2N394 zc?*|3_T9Rq|0({z>JYvIV)h0956%uAK7FWd-|7B&7f!9I{H$ZutIIb3TJZuTLe{htZLtj25@Y z+0*82@^0-c5{;z=UN;7Ix7XX+z7aBxAIr~2eR%AGi~q>>ZS31`KOQ*0&r$~`L!D4i^2u`u6NN_hhT~3$9Wp%kMJ1Xe)JpT*4^zLkyf*U$}#?2qc z?7px?H+kA-dAF6_Cl`}yv)G0>@-}jy;M^uQ^1_9o>4?@_=H}?>h*tlv{*zI=J7&T# zYqb;_OrZ!GE+~WL-P`T%s_E+Rw6?kP9CaN%T`sp{og42;jtXIUPkX_}*5TiuVfOJ8 z;wdtDWqtI;ev^dQ+qggbIctTi3v55b+mzpY<6i0N8j%jGLr1Ng?j{D@wQdPE4ebE zu0Axs3C}>tn^SMNafRI&RQ!4bj+H5v!{n|cA@diTaFu??wiivtq#s@ zA3}KkeLL9yZl}MXj6dUN;db{{5B3kw3_oFKf-MqPrZ_6K6Wc!dhP}Uq*fbRTpNSo7 zQm<`Z!I?<*oh*(Rr`Vk9^&SLqj zUS^*J)Taz=J(JgeV~=A;VcQo|{PvS-6ImKtC!I92ZPJCAEESr}+7XkAHS)pNAB8hl vK9ZizniY~hhl&3J{Z;^8 delta 5870 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 MYQ%G{8b3<^2j9JH>;M1& diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 5afd8632acfa1fbeb9f8666535d398161d36d1e7..9849c3b368759990017209ee8483c9004cc74ddc 100644 GIT binary patch delta 28357 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�e{Xt1Z18(!M%# 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 diff --git a/_posts/2021-01-21-git-command-list.markdown b/_posts/2021-01-21-git-command-list.markdown index f74e89704..e776232d6 100644 --- a/_posts/2021-01-21-git-command-list.markdown +++ b/_posts/2021-01-21-git-command-list.markdown @@ -24,7 +24,7 @@ git설치는 [git download](https://git-scm.com/downloads)페이지에서 운영 - 앞서 말한대로 프롬프트창을 사용하는 형식이다. - 지금 필요한건 Gitbash를 사용하는데 필요한 명령어다. - 명령어를 찾아보자. -- #### 아래 명령어들을 사용하기 전 github에 계정부터 만드는 것, 잊지말자. +- ##### 아래 명령어들을 사용하기 전 github에 계정부터 만드는 것, 잊지말자. - 계정생성은 어렵지 않으니 금방 만들수 있다. --- ### Gitbash 명령어 @@ -66,7 +66,7 @@ git설치는 [git download](https://git-scm.com/downloads)페이지에서 운영 - `git remote add ` : 워킹 디렉토리에 새 ``의 remote repository 추가 - `git remote rm ` : git remote repository 삭제 - `git push --delete ` : github remote branch 삭제 - - `git fetch ` : ``의 remote repo fetch,로컬에는 없지만, remote repo에 있는 데이터를 모두 가져온다. + - `git fetch ` : ``의 remote repo fetch,로컬에는 없지만, remote repo에 있는 데이터를 모두 가져온다. - remote repo의 데이터를 모두 local로 가지오기는 하나, 자동으로 Merge하지 않는다. 따라서 수동으로 Merge해주어야 한다. - 그럴바엔 차라리 pull을 사용하는게 더 편할수도 있다. - `git branch` : branch목록 확인 @@ -76,7 +76,9 @@ git설치는 [git download](https://git-scm.com/downloads)페이지에서 운영 - `git branch -d ` : `` branch 삭제 - `git checkout ` : `` branch로 switch. - `git checkout -b ` : branch확인 후 없으면 생성 - - `git push -u origin master` : github master branch에 push + - `git push -u origin master` : github origin 리모트 저장소의 master branch에 push + - -u 옵션은 해당 브런치를 자동으로 가리키게 되는 옵션이다. 위 명령을 한번 실행 후 이후부터는 `git push` 명령 실행 시 자동으로 기존 push된 설정대로 push한다. + - `git push -u ` : github origin 리모트 저장소의 해당 브랜치에 push - ##### 잊지말자, add-> commit-> pull-> push-> pull request - `git status` : 현재 폴더의 git 정보 확인 - `git branch ` : 등록된 저장소에 ``의 branch 생성 diff --git a/_posts/2021-03-17-java-class-instance-member (2).markdown b/_posts/2021-03-17-java-class-instance-member.markdown similarity index 100% rename from _posts/2021-03-17-java-class-instance-member (2).markdown rename to _posts/2021-03-17-java-class-instance-member.markdown diff --git a/_posts/2021-08-22-SQL-Basic.markdown b/_posts/2021-08-22-SQL-Select.markdown similarity index 98% rename from _posts/2021-08-22-SQL-Basic.markdown rename to _posts/2021-08-22-SQL-Select.markdown index c4a74c506..d21689d75 100644 --- a/_posts/2021-08-22-SQL-Basic.markdown +++ b/_posts/2021-08-22-SQL-Select.markdown @@ -1,6 +1,6 @@ --- layout: post -title: "SQL Basic" +title: "SQL Basic-Select" subtitle: "MSSQL_SELECT CLAUSE" categories: sql tags: diff --git a/_posts/2021-10-17-SQL-Create.markdown b/_posts/2021-10-17-SQL-Create.markdown new file mode 100644 index 000000000..34c379f4b --- /dev/null +++ b/_posts/2021-10-17-SQL-Create.markdown @@ -0,0 +1,58 @@ +--- +layout: post +title: "SQL Basic-Create" +subtitle: "MSSQL_CREATE TABLE CLAUSE" +categories: sql +tags: +comments: true +header-img: img/post_img/SQL.png +--- +### CREATE TABLE +- 아래 링크의 예제 중 하나를 통해 공부해 보자 + - [MSDN-CREATE TABLE예제](https://docs.microsoft.com/ko-kr/sql/t-sql/statements/create-table-transact-sql?view=sql-server-ver15) +- 간단한 구문 형식 +```SQL +-- Simple CREATE TABLE Syntax (common if not using options) +CREATE TABLE + { database_name.schema_name.table_name | schema_name.table_name | table_name } + ( { } [ ,...n ] ) +[ ; ] +``` +
+ +- 첫번째 예제를 보자 +```SQL +CREATE TABLE TABLECREATE_1( + COL1 INT PRIMARY KEY, + COL2 VARCHAR(20), + COL3 DATE NOT NULL +); +``` +
+ +- 풀어쓰면 아래와 같다. +
+ +```SQL + CREATE TABLE [테이블 이름] ( + [컬럼명] [데이터 형식] [추가옵션], + [컬럼명] [데이터 형식] [추가옵션], + ... + ); +``` + - 추가 옵션은 `NOT NULL`, `PRIMARY KEY`, `FOREIGN KEY`, `DEFAULT [기본값]` 등이 있다. + - 생성된 테이블이 탐색기에서 보이지 않을 때는 해당 DB 하위폴더가 보이지 않는 상태에서 새로 고침하게 되면 반영된 테이블을 볼 수 있다. + - 탐색기->테이블 우클릭->디자인 을 통해 데이터 형식과 기본값을 수정할 수 있지만, ALTER문 같은 쿼리를 사용하는데 더 익숙해져야 할 듯 하다. +
+ +- 두번째 예제는 임시 테이블을 생성하기 위한 구문이다. +```SQL +--CREATE TEMP TABLE +CREATE TABLE #TEMP_TABLECREATE_1( + TEMP_COL1 INT PRIMARY KEY, + TEMP_COL2 VARCHAR(20), + TEMP_COL3 DATE NOT NULL +); +``` + -임시 테이블은 말 그대로 SQL문이 실행되는 동안에만 임시로 생성되는 테이블이다. + -프로시저를 생성해 사용해야 할 때 유용하게 사용할 수 있을 듯 하다. \ No newline at end of file From 1ac6a46e32de3aebf6cf983c15ad42dec7346bd4 Mon Sep 17 00:00:00 2001 From: d-gun Date: Wed, 27 Oct 2021 11:55:20 +0900 Subject: [PATCH 43/59] sql update --- .vs/D-Gun.github.io/v16/.suo | Bin 73216 -> 73216 bytes .vs/VSWorkspaceState.json | 2 +- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _posts/2021-10-17-SQL-Create.markdown | 85 ++++++++++++-------------- _posts/2021-10-24-SQL-Update.markdown | 58 ++++++++++++++++++ 5 files changed, 97 insertions(+), 48 deletions(-) create mode 100644 _posts/2021-10-24-SQL-Update.markdown diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 153b09c7dd88ca9fb15eaa78191de47e715dda01..941e62de90b327ee2a63b629d045c87e726cfbf3 100644 GIT binary patch delta 2799 zcmd6pe@s(X6vy9vykc9ZAXf6KAG7w`)mt_~VZy+igBQ z_nzLL-+RtYn=f$97r1>ZN!sb+S!`&{q3@6MUV&P+g_KFZv-8M;xeUWR#Yq@qftcV(kL^2Q+@+z_zS%M@WNr(Yz5;EvzrMzAooKU> z*$C)lI++10N?0$`*ezJ2Q_xZtRHyBY*f#ooTm9A+)ThQ@uM6^tSg%JKkVZs+e%S}1 zk!QMsWDiXy^Qr7qa=H#JRB|eRu;f!-EO{Odd0EM2*!NkI(=AZRsr0lSj+RQEgZx8s zDkbeiB~M4F%GSWhZZ*G)n`$Wv$o{q^8eXLtIW9M-v~?qrB>SHOqvlt^L8kIt_WMvJ~_EWDp} z-&QSkyNv{j2UB3noz>7>-K?Sk7J+jUhGq7^r|vn>KcoiBc0MGWVL{y9)}E&%ruGwI zBnlqwikBSk93-v+>%@cGeHX`ni8#=eyRy}kmwPY%kDE95KJJokpB+?M1Prr> z7-CwZ-B@YoGc)uKhp|F$5;C27N4j9w^Ssl{^Mb>kAsAVvo!GLB_}P&w6y#@^@_EAdC9(u21E?w({yz}K!`NhM8UW`F9bh}W3{v=4Lp6TuEA{m)ZzS1l>D)nhq6&ZSy z)4}V_Mti#6RAo*xR#o!pl@$vo**z4yXT$QIVG<6;yWNm85CivaM52{@uKc&59VVpd zc#}VXKX%VYx#XTc0+z;HviGLQ?x;2!)@<>_YOUcVZjvkj0ntbvZ6WT~U4 zkU&n4Y2qHXLH9@|_O`?MF>2%B+?d&CZ}p^uZKM#!mPg6xYsJF;ksRn4he7o!}tbp0=tODvg=}|0j3Tm4_VkX2*KD@L$MZd z2FpjfXGY4*Xw64W)7XAR&Eyy}mIISxG9#5i$-^A5&}oMLuqo_Z*rmnH>-eY|M+)B?3DJM2AR`ctnOQM6!{^NEniYWFqOvJR|}6gD!w= z8S0CWxri9aL2?l}vH+QZ1R`2wBeDUBqgyIa(IexyNHWSq~wA|_BVNKHlHy&>RUYhttd6{z3>&$ z`UKywi;_t;4Lc1v4YNN&Lr&NA4LR+vMLRuWG|EV1Dgi?5coRS;(gaZXAPF$yT$%uy zxceo5u16CfL1+SK-;;ohdnRBxPNE4&MQHYD0%+D~0;uy6m@iaJM1KyHNEC(t6zx3E zeCk8ne~7juFI!3`V;1Ox`!pH?M;RQ$9;;$m<1TrhGWZ zs7NSm&U-OXhLh-}pw0b^fq8)a%KSynQX?4il)SwZ_xsRD#0@u0s}A_{B&u{e0?MQPX}R}BLPhZaC}|5|YDbjVKPw*=uLjKELu z61?Szg@s)`&ZmuHT9foW@~$py!A?2f(AGkn^+uMyGH`XyBbclJu-9K^X$g7f@^%{r zPe4n1g|B(c9!Q}3iUMZbToq3rv&k0IK_5E$@KKxJq!AbEh?`A6jUo`>cTSE^D7e?p zFRu;JDNQDmLA|3fdu5fa!c_Gn==bD>skk&1x1q|;Rn%?VSYBJn)l}K+Q0!0%Gqfpc z6&!XXij7>}=GxQ^Rj%j7?i4x0%d`7PYp#@NTHg;KGhzIN7~Z_=C}Fp{U1cz!3gsiW z3=`MxX<45Z$m914q-#I(KRd76nZv-q2nQC&JdzHF91Gyqa5UfRNF+{2j(0?uo|&Ri z!j}irVSG3cdL4S$=a4|#XgDlt`l6MIBsqM}s~yCddrm^CF){SD_hui)a#!D7VfkPv zQwa+(M&I(cU-xI+*`0)a&c{i*3&%Rqfa{ExnCMLh`{A!>)quThulrp&%gaynk?G}G ziqn0|6UN>wxX;b?b4JQ}`Kh-FtD^gO-Ppfu}5X_a$bczNX*mkBUgxuXoaSsEN=}4I&o|7C5P@kaj>x2L=vFBdB3y$Lh#fkxFOw~?`xM6s5u|Q z$DF@LT;DOSPgp1%Qt*oYZsM#kww{h4fqcQW)5LWKZ(k1%T<<2Xvk(6!nxLpTie9V) zO?paNqp7^cX7Pw-JYwP+o29;>zRp@zV@ZTtH^SXtcacnMW?H3HqqJ~lomI3ELFLFAdqwQgs9F|jHL{}42P0BAcKu~ zS7*caE6H$na5-EUkzp*upl-cC>=@KT{ZP}?cxQj0>mma=!%6U4zX^5>uYucxL4R|3 zd?X&WjcU<73K~XrRQjcqTWG*Rap^U_vtK(s=n!&44F{S+z<481I`JRjJUqJ*978tG z-m%AWeqx|-bUr*gqD5O2RFCLT%4o7caeYh{jvkXOwSxn4@U SjfSk^HK1P+%OAaIR{ROagLu*a diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index d67480c87..4c976d563 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -5,6 +5,6 @@ "\\_layouts", "\\_posts" ], - "SelectedNode": "\\_posts\\2021-01-21-git-command-list.markdown", + "SelectedNode": "\\_posts\\2021-10-24-SQL-Update.markdown", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 9849c3b368759990017209ee8483c9004cc74ddc..b84217a5132a0aa8eeb22187fce1acc9eaac81e2 100644 GIT binary patch delta 26028 zcmaKV2YeL8{`k(!-rnxs?Op=uxipfHgpl4S2}uw{I*5QGkOBb$X(XYG;c|&so)n`D zKBf4cy`rdR2UIK|h+@|#V0kvAJllIuh5vVVZp-EUK7aUdGy9$Id}ro6xAzpx;=pkPEv{)pn?d%sPR!_ez{f67yn zlhg`MR!&8595>SQntH3}Hr1)l_e6T8dn(n}lv8_?r(Lh`>JYA+?mB}84;-Gmv~4jO z3IJCDX~2-Jn6?&^c>4AZ;*fC@00wCZv~~#2a24v<)70O%6guib5=A{numfXf-~9P` z!Ng9;;iWatpe#xK4G`f^0sTZEsbN}_^LRXOaGp(EViD=9sfmGqsdURT*b#&7gVbRP zNkR)7np<<1bT&5)0Z1;*?;<(T1-Wf4i_sez1?`Wsgfv5tq_@FUrq@ctj;GTfLwU|p z4Zz*_MD5R>p??B+h(Hi7<2j%{uY9vNx$SO6 z2Bhhe9KJ||sV^1B@_=1L@7YC$2nV0TK<+Tn0MXhpf8hT&)B9l2_Saa~R@hkT+ON-#eFNI)jzJWsKR5k+b{i#^&_R z8)G(O-*r7L>OL4GR`jK7|%6Lb-jL)>xU!C+je^I3!o!u}jO0qRJ=g81$@c zE3140BXw+!t~Fy)(*(r6|8ymaDhue zlF-z;xK-;yvz7yfF&c|jw3x8CGJ#74;1bS{6iU@XD zLXN;?LFSHzriKNbjZlT99jz^?293C(tPYnq)GbV&+>qP3y3)CP9UZ{$ey|HCM(~5-+CW)w2jbqSbjO%94L?r>ov3Qp-S(CR(#3A-AEUsj;QAeSwh>g&3XO`nvjt zCJP=N!7^MvwtCFuu{KKHc<6ksy^9*^I#;weEUf9QTdXzCq06+s36m2lf`cqJ1_lBY zS_3m>QRCv=HCC%)qghf%V`oEiU7NkZbaxAiEN4SKCK9?ID73fMw{~{evEl{_Tsow* z)h$?7x41zcfkvC?`4$vEB1j>eQJ6ITlCe`}*c%cP#!?zv7B;Nbl_Dd5-|8u8<}h2{ zilTz7jdig~+a|w}B}o>zJg826d+Vx>hW22CZQU5dv(j=GH+D8IZfR{dJ3bx@Tn1zf zc1>ua0)zBYjtXt)Yh$dRZ$qUczC?Pu1LcMf3qddU zCFo$f`L8zKl>594Ig|gD^u=^W7wfwDEGxOa3~kbeKCy4xxL6CnMCNR z6==9o@8p#zFIewFUnH$th0B*rYs>ZLDpYPzs9bHueGm`UzS1XeTa60nrrT`9Dt(d;+_EtQ zC~Cm)P##wLoI2`@YmjJ?6m-x<3smKE(7V>5LON9&rm z@?jm?uh1$VV&tZ*GfS=VaXL&59lLbbI;-8MARbiFD%Wdu>`QDH!i>>haE-uC2VqB- z`;a#xN4GxA-p^g94d?JKlmO-UD7boeW^17^y%?wm)12yTOzQ;OkqhVJU$~H#pu`V>Eo{fE3 z`JKy@{G4(|`BZsJc|qB$Vl_@x)Q{9V)CJ1T$|9vwiE*EIA9DZQeT{pjJJ&6`zHq(Z z+U9C=O>m{j7v%Tlo$?|%SNcVILGpVxduDkO)C~1&^?|_L4QPhQt2ta74d0A%=*jDm z{#mAfYJ<^Hs$R)0G(VlCoF4$$eUH~<1X6B5Yj~lCbK=~U^w`a4K6!)V=}nu_3db0S z&w=QH$4~{S;0{y3EYJqO$YM}TwPp_wqnkIQ;x3u*;wEC3L^uJ zK2dfnP0BF54nIZ&hsQa=nI!xyyeaGyIz$)#R7w=Tli!nfd4_vlh(S6|x1VVtcMbVqo1Z$bp@;oEHz~ zC(=_pQ3Np}^z5_9Nsm5*1bY9iXdQSE5)@|I)`@;`7?(!twxc+yK!=573c^acziTDU zq`%*WI_Rlhlp5H!4c!H6vNVH>)pAGD+S^egJ#;(DWwDvtA$DRrbfmU+)6cepf#{Mr z5f|nc(3Lw;5ktH3c60?pOaCkS%mE#diD}(IluFSZ=(woYsDk^H?%svcgI);k6B>Re z%BFd*BLQmLE>PSlJUp$~SV3dWZsn}9=FPP%LtDsjr5ja;@goH}=-sXTb3;sbMb zqYe>!;%WH(C`Zy|54X`XUH_!8XgUIA51_9cx?6|-aX+d64;4#%`Y|-I3vcHp<9a8q z$GgQWPphZe<553U@4=rCHyOou3l9hzM9%r4^HFE7b1qpTeoD5ISEZ#=nd>!IpR3lD z<2fSC70QGG;?vSVmn45JACPy*Yvh@7f!e8Fq7G0_DSKp2IwtM*>`;1@IZB?wyWeu( z>YmHj@)h)&Jt)>S!Wkp{D!eP+EG`V(y$8L7wAz-6_ybM^Ru5-&Z@UjUdBFiw;^-5w z_QOv$E!qncVM7273f#CCt;3>N!zp@>#HWG%phGz6YRmY|QT zkAc?&&}N6kbGe0@=dI1D_Zkct4KqsDuefcl|8O3SdQN^>PJVF?ef&9)(_8nVp-x?j zaevi6WY!0_dzNx^#6DC@^2q|ab|)H2_dbg*FnnDp;dbgDnkwR;xzD2|+8hS&&Orp$ z-AN;!LD37SAn@PkQ59jCS#5T0+mF687PzzfP0?5BYo`Y;f@Ed>E<+wv`IghFmw|8l zj@zVgm9LFKYfgkfTNyO(WlLwMco|g~#chCiP|}w9nzp@yvglbG>Yp#8Vl#OuOa1~T zT7^*=y8IOz#u5#qUv&$8i|P4SfxYfmO_^NiTcpFbePEaRQ(v{|G7DLzJWw9pW@&}K z1q^%=Xc!n@8urh6dBguUWWP zzlI9T^sDvsaJCp2d?@zK(ZOnHUu}Ec@&i>sJV<1OZ#J!Z9SsfF2bkHs5x!YEn6}<& z>%$SgnL4x|X`C^(TMoO;qk?l6H)5 zlEAH^%MZc&`GX(1P4^sKdI*i5$dDp@6EshOB=z zFk%V5O6D4=Uz5|hq#f6YS;eK7lf|h?f_b2?6(e=s&nGYsF=n zl8}q(kMSg3!gq08Ha`>gO0-Xm@1n~;Lg|4oK14}k7e9`>j6`E)yV9y$swB97R?fIz zb8mMqb(fQ9w}Xsz9VOTBACSE+%7?q^_}#8-`4@Sge1klLUnyrv7p3>5ha{ggTgs6L z`9b_le2SkYZWbHGOT+}{Z_am|4>_-OPIIP${C!inQ)m@N3z3d*9WOd=aV&O}V@Ei> z_9Ti4{PiSygh&pBlXL+{!@q?Mf<<4UoxE}YB=X~5!%}_mS5P)`zef2^ntvK)(6e8F zq`mnxdQ_9BgJ|uK@TtdOdCu2lU5?h`G`jgmG&3;j47v*khi6gua9Wp#(`l8*=GCY1 z=TTu0qolixCZ2~f)}Oc5+nem^B`m!)3ESn)?{<_ThBEJ87Kvs5GK(nfE}+wYg04>z zYy-cvJD)+PghKNewCX2|)|8)6ky+gwy)0%;nkzTmXQ7mKXVdAwpiG#-+BTKBG8O!6 zQYr1u(ow>7FNKLx+MTI`>CvCf$z0lrSR&zkx9Hd}J5YyX+W=37xgXMo~Z){$-i-E&_w_26>I~r<;ifIrJ4&A(NFfySM%vEPHCchgT(^F~k zA1EmzwAT6E;F)GA^jyDU9jw?gMVBKTvwVHWqag1`cgwQ8(7X^dwL)DtqP+ zly5E^97{j*j%|Px`MPvy|4!QSrGG8iSLj!B%@ zCoU9AL;*~-`<-jRw2v1~3oi+qg<7FNz>fDE_c~U4-u2w=S?RgV<8@3@&#AAf+tntu z3JkehT=QK+$P#ys>p#v} zece4%IC_H%8g2`QmVLVZWxXc-Gb|V z*WIoTIwcIpO6S#m>do#(cUhn_4F4%3H*Jf@L;EIQc{}gEmn+oIThMwh9wR7(6AJU` zu>_o|$rJ}h!}W6yVaC~wI!&$>=I1b!%1G>_nF;t^>Wjna%oGGARy*zC(mNMrgY+6o ztK)G7Dh=c(;tsSe8NcLVI^D=_@R&7duD^GxaYl6LydT-!VI>Z=nM747c%sq2TOl4C z(o?$IXjUq&Vs2e?{!Qs_W#G_-XG(XA4vq;m5vFuEgYG41Rob%@S6Z6*;8d&7RjGKo zQGuhW*fd?b8|gc#creXP!{z`iPs5i7D>$=zF|AC)xR}7DQ+!5uk74wVA9@g1p_i6Vt z?jA>tdz#zp`oZ;_>ju}Aj$BuU{FA(ozem1Fp3VOxCrDpP4>&uWdBXR?Jwlz}b$saP z^St0$?J0(}{b6;9ng%PlBJLBHi>c0Eoo~9%2LA?@=VK3_?m*n7V6nie2fnQQqMY^y zM+7%66ta?TD8?nR&vJ1VycjUGV;(v6t*!L6V!WH4sKDiPZzZ10Ykq3_SP32;_+4+RC&6z8lrk4Q@ZL7i&f$l228D!E#I`C4wf;Z3I(F^f- zINdT1j|{wWDV|CKD<|Ojf-!ABnT89Dc=&V>7;GV@S3^8F1IGCa>HO&$jgLbtinBKK z;g@5>EjG%ZN6`$NPanJ79Au;XxeRs=U`7!aF2^H{c;yT$zF`J7Hr4X{L+JS{u%-us z&2KI|dHyUNOpooeO{YA6CPUVDiEPLj3>i)eTB>uNe=vhSdWBibJbyZaodlRsvolv< zQ#nkYi4Em2-#>_^%)*0UV%lq#?@wW1edo!nL%u&*2h-&1?9(FOpTxjnv#bIWXW<;9 z@aYf__Cmhj%P6yhgNBuq=Z|NN*8K-&fz|#vnm-#C(WKcH<(%1;3|S8GAmwU*w2lkQ zwY@3T{wPKw?@EhA#g*9HX7)$Wsw;6W-PvU0Yq@_QgPw+5!2-(t19TWHq4omG{oxE8 zT5h>Nj8RDbOUQ5wT!nKDzWi_%9vdWnnO~u2uEHZ|VvF5k_RYbC2KKYI`1v{5I$Llx zE)7x{?iXqP)i|4mwb~jp+z<9VK-JKS(^HVqAf7PSBvS3?>F&9}^v!cEj_sIhG5r+8 zO{OCq7fd%hPs;opJvk3fc1~Slt4CRP7lXb%&m#PfdDwI{cduvZCm@%l;!K~9%|msY zARa7wME6>{bv_>2Ul@utc$lfj!Pcs!$AwzmBfDXP)l8%(8?g{>49Ah(u*YhqO$$}g zWXC410Q^7BW(Ox9m;d4zCy#af-SNG1xKJR63xAjX;dDq3NGqjFq%iTMxJTR|PV>Cx z`HSarPmGx8Jnejrj;h5OWS#ICZL7uUfvvT;mG3*cejNO(OkjnfR-u7|ErS*U?`rY#5SJeR+t#2{<>`|aVA~A!dzua{k0mX-y&1$uh9|D z0-{mJKUZMGJyq$SM_*it3;N}%^v~77^x>6Ow&zxwa;eHchi+Ys3)N7$L@QUBVzA18 zrH(>d*AtrpRpp#Wr?{u*=j9PS@W6R*M9{f5gh{}}qtHDHmzS$DGsk6vRL8~)KOeb+~J(K^gu zt%Jeu7}B_|^_I!<+*(JZgy(hfkk?xjuNq?1YleS0!>6{#JZd6C8C2GE!tqxXGR4?3_ z7y!pjM3pEPl>aC{D`%w_l<%c-`3dD~<)k!P`U=iz9EYPRuPKj8_bbmieae&0+2Eod z?;PzM>CAD)IAv$JbFeeXS?najAFwfUM)*cJIa>HwcvmJ=x8pw47a+!6z*Em<1oP;6oOCz=HQ#@E!|}v*2A8yu*THEO@(%g-2O% zgavQ0;4ljgvEWS>yupIkS@0SQ4zl1?7Q6z%mNfDZ3m()0DOLZ?(0|kQ-$B~1ql-MM zhvWe*AkS#ON!m}M_7kuD#A-h=+E29h6Q%t`YCjR$&p_>Gfc6uv{e)>h9_>ffeiZG; zt^K&PAK)d&k%yDXYb-d((cyREHLBJx&%9152s*v^BM6$k_(KR5dEqDshibg|eF(1f;`bn!?#0I; znBc|la$Ov{#Eaj7&vGw520@7zzYRgI7axTn!;6nVknF{8K@jW3hani?#fKnpdGVVN z@LsIljr!Azp%L7#UJShA&U!I4g8SBsUxnZlbS?y+q>%?9I4-3+2trZ@#9!}{(jhn? z4T9h29pq66o^%lHuG1sr8Th>~34Z>T2tPaG;b(g+{Pe}Z&!%YjxgiREdLrScOS^Tp zb|Cz$7yv(Q;qbFey9KpKyKz;gU6Y!tofV$#hM&t_@H1IwcQkjY&Tp<#=QlS@=Qms% zJH89&316W(f}iVqt1c$s-HmtRz)OF_F+$((%T#R_&KdajejMv8kgK>1aWp4KOJ}5m z(w$O=G(j39{#Sfgd{FH6eB{~Vx!yC)6RUoqJ_ILwMv9|p?jCRp*6sm~ux$?(1GntK zJDn0x9Iq>ufsAMHQ*dZ)5l(?KP@4QfJM}O6*bUerR-he#T7c>DUIJd(k3gktc@F<# zm`g)?ifQF5*xO$&Z+pcufDXN4$yxbTD?Y&%zY*d=F;&)+OREp!tbTTMSx=4*ruhdg zsWgR~ zmL-<^rltJPd(*P@w?I6|%>15cTKgvWb*84;w88wIC=Ci$_aUspL0)@p^LyY3Uob7o zq!MAmRC>}GqHS+JgmZ#5AJsEJ;Ff7D&0j)>z@Cc-4H^a+vJ0#ovK=ux5EZuwii+1TI`>w6xv49v6ci4TZ`&w4Zk(uSa6Y zFTQ1t!NENuO+JES!b2TEgL|AhSi5g(YLE#>aB8qNgL@n-{oEgR>$%mA0a6(V)7(Gp z7zY5uX!Z9;uz40g?x+=?V2iJXc(BY;|9ZOhZLn5CXI82I8XZj4x6M|S`qweouE*@d zw$u++JW!w;0M)3)rngPYrqsWhrC+>&gO9%% z&+60CVs*7FNuNu5>7ZjcjZQm;N7342usUrzhPR2loXeHaJul(BF!ZQAoSVcfY&Z{C zM1TAkmuc=nrz)T2R5PKBPW~JSJ^wLo|kC(hR`l>+F|q%(=;c4g5gY}rgMTX z&q4QZgi-Nh50)?-KPhM>Spn~-cnps?T6+RqP2fHRCG}D5W9ic;aSd-Y{PX=d+q}>c zb^vF~!5cbxJ(cv-ejqwOH)N=d(x3zBjR!z~4WiPVuW@Fue~Nm_xBU~R!-j`_GSIDG z<9wsYs+Vz|ne|UdFtZNRvi37$hV+!NMLl%hQqL=Ruu<1xJ#F+%9B}B|Kdmmk@K0PE zH1V=~z`!3%&&QFth)^=wJc(B<)^XS{(!x@|X1tCk~ zTi@gS;F373=W2ng(U!!P(LgBo2a8a}50(^O4)Gw-yq+s*+iCDr>vtDS$&=SJn}I`@ zq`aP4I+*61HrbljGn2t;0A>ub=F_&t)E0jS;=z)K^h}2XM%YVV%CI|2@_)n`29mk${UqssyiHkWt(}QlhzA=`+%tv_Jqy~`{<9XFj-JIsjZ*>WHttSzJ%_IM ze1mp+-t#;KJO8(MHh5Y*^E~4{!#pV-mwG`xsUB9JRqs=8QP-#o)yvc}b&%>(k^G?Y zm2wO=-|tawQ#OM2xB#xV7b~gmkKOy+55Wn#>)k71-+j8f3T{WpaEk6D*CE%FuKQfn z)pe6=wX4Nd=bGxOb``qf<^Rgx$sfsY$WNgM{@Z!VdCd8&bBELC zY;|7Yyu?}POm#Yi^TKz+hZBT1gr|hv!e4|nLX$9DAddGP_c_)$u5jczWd3V@Kfjf) z=Zkoryie{W8^|0|OjLXpAH$F1TW|-y0+(O~eT`m3w{6{;raw1OR+Q`JjStC`$wQRD_qTS=g`?E-Jz;#dQ2P_ErIiaZ!&2bzm&(UxCg)FeY^R zMVw$L$3N>|3Y+!lryTw&I1+elIjq`uUc?Le621}96Zeojl1w(xb^pOd#cnr;1`_F$MYpX z|9%olz;L1Gf5DRmg!3r~x3#u5HMG^Wcdkhx8)?O_cq-lgD@feqzv4=I*S~PoXb+!& za7*3FU=c?mcsRw_+`6!#y`^z&J1_%(h5sq?;RwM!^J=|P%?%wL+I3D=ski9<|KOo? z+Rr$WF8d89(A$2)_l@!JDIBuybB4?OK!lqb>%kBW;}bAm2F+TnQU4nMs8fdvU{^a=r( zeLkr`m*H{nsa5aka6X+w!3)B(tn~%hJQBz|ZH1vl^J`3SR zjV*Oe;LxvY($5uh2lN*#j2p#nox^Z>wY42?-F9dt;m7IZ-*F=S_II2Hy_$-U?QUyY z8AU(g()e&b3FC$Bb*mcmKKmMfuX7b10;r%;gY zgyF_}PID8K6OW&P(`Qi5pXYJ*3<>%RULskUR-!nmFqz+MG_^@y7 zB6?mJ3_ATYN4qxNk(vdsow%TkMRhBh=%N4O0$C>vxDsqW{(+;jBlrx27r>$J&h|!V zFI+#4#SiHLvMYwq(=tM5LDo9`hCAR6d*&iBK}3^8{7(SYv_c#y{#=Jl{&`&(yU*Nhwk~-$k+@NSw`?6B=Ezb7#OXK zTifBhc-`WhrpAuW+$D7PIKp?~pWS>kq^IgbVxQi@{f?D$`=a>OWeL;DU6T(W!&O?AokN#Q)M) zoVpdAOIq85T-W>}Zp=Wrw&Y;-UeOs|4XnwjYgw4H7;ekwc4;T$xff-}XWWhWcI^JI z%cT;zSh+<`S0*SwxJ#7d(g^T`-le?gS||UmWV&OdZdZ%^jkFk!Hdjl_MUSiAHC^;e zx61Fj3gjs1HEE(4Ek!xM5EqFD#izu(;l>sxJ?t7JT_t@Xt`y&Q-7o&;8Ynwmx4U^) z*J;;r*VEEZ;s|gPkCQS$++>QP^NjO7=K;7nN1fL>mpkj7lbuD*SS7~EftdM1cwhWX zcv;vkJONkdHo}?odSSY7DV&==<=Ersk?)oLa;^JA_mdzg7iyQ{JZn6YJW1;BaItEy zx>>%&Jx*;`XR5>0c*o*2N3|oK|Al{>e}MP%^Y~)kMNW_hiJ#0RB_Nu2!(fWHy=@19;p!U()Q$m)QaNWcS?V~*; z71>^V7#eu_UQ&!@NhAZc#TlH0zur$qlnEppEo`ciNHo&lfXG%zf+-)#b=sG?B%hXG zPU;KX547O{k{aVC@!CqN)tfvilUT%_+9(a&_W-FuqLU1S1!83h6&@n1Rd{AWW%CI} zC8jq$L=uRXjHG*h!?E<;he-WEC7h(|i&Xo<`etoC#IS{`J-syHVX`C9MdI1&v$P{0 zhVKAN-jR)PQ|_CGNg+Ru_jzd5J!A}B@Cdnz9({yds=wP5D1DS1MgbH?HuFKvtgxqx z9ykTI!iy2aRA7@%;atN?+7?MHyW$##yXO>k8tL>U8#3J$NzDE2p4Ak61H0mzzQE2@ zca*ypa9>G~+*HB{yY zqlkI^wY=;ri#5``$9!=5>GCQJ)xzqbrG)W7xDzjIl$6`nv zTxy4&HZ@|J5(Bp)*e-2mub`vA(LOs$X0L;RLk+;pUS0>&eK8jAkJzb!LInl(Q^5;* z;c*Q8s`j}NWRT_CfzeRd17~`nH~Slhn`3R=vQqDs{)S-Km$=BVY0G*#S=Uuo*u58J zJsm7-sJ%fSk0Zqf?|z6QB}RO3JV`X-6XMCBpt7IR3r@lU=ug{=GP%u-+H);~jc$$Y z1&^UVPV@(7G;W${1A4(>7<@&?1jhA(w@@1-hR&lYwFb4KUU-gSCZa#YTOAwcCFT*K zNnT={DJkwvr1=Tp3=Himy3b2YW2V=uqtK)TtJ`uCNI}pJE$)pAnn(w3BZIAz9d{&H zB_2sI$4psoG~Jp+vgozjY|f6d-Y5p0pGZu1ZEqxleIAM#!JsO&o02CJtuF5!z%X_X z3+c|@a0cFxWVK^cl9{cf*P~CHF`=xG(Hw3TD#WOe7abcMGaWfKf z8$uu01$U@R`DKWPizJ^ulR}1u^M#zEn=slbzBGOuqW=&`Vn7%~et}!E+7oMDFk1v( z+s8dc35KrG$OtMkMZM9_NaIb5Ki-!Z>&&aocfp?qOERGeU;9$$k&c8WV zI>*7K^nc6CNlA699>p>X$LFz&*#l;ST;F=^-t+6E@g3%uggklO*q z4*tZ%eD*RDZ}d-9I7u}%ho#}5;TeA1A>&Dsfi-o!m7{GuNvUAvczeOYr*Yh}Ni-*c zQBY*>9QM*#N9P)_#7sCnY9n`cyrpBfCy*4g3A0#NcQh_+sIO~h7JxySPM<(xg3>Fh z_X_snR>y+&#r6O_Ge0~7NSyI%UUctd7#UEC>ESR+i0_39&RY2)-V7s^`oPpQ zI^fQU#A{9?xZ14G4|q2%v_W+L01{O+EQD>UnW}__Dm)*2GOGc zH{SZ{9md*kxeW}K#q^e0Negw4f{{csr;x-(Hf$q%OW57$j^!FooPnbb=v~MrmgXfg zpwYd>tpD^U3+?zZy@jkew%Xd0=wnl?${(3RGUu|QV|$lC7MPhftKTRnu6HqT7}8cY zw0E%A^6*zyVlL~OnxKm=L{XnUl|&h=YMyG%)lE}LTyUDi^up$bwm?~KFN1bWFYIn; zNv1{hwUHFtyOh<}=GQUO6!IlEj{HUDAL3{8S-kAo4;%cG;8fKKaRfOBui>m$=c`p} zSCaBO+{6kfTa|V=I+Uxp-QT(oyYF`QxaYeo-KnmN@I1~z*Dlw3*DP0&OO?;Tw%XnD zb#lEtmOKC#4?Y*e1wZ&_Cp!;1?-o81_K~;YEs=%fRw3N6Lk$S$9Pc%&N0Ec@ zaHPZfgHLlEfqSQsGjJklBV35rlvH^AG1+JW-93XO*Rrk&-w5MsAUv>kcEcS;y10Z> zVD5^#5*xh{E+!funwvJoK=WSL#n!=Q?cLnwy7pxYTUWJMrF`-n$uNhz_&k|xe$0KI zq>Kzsgq)4w$sZ5P0qp!0qm_8|IW*fXl*zmt(b2eTo(6$;f*y#C7=2>e0 z`g!nJE^8QlWF9fke4m;}%+sgJ6~sJ%J^l(}?#Xr8;3@OTz-7T{v$2#-o1pvAXnn*+ zc+5b1f`Pf93~<~=m>rq{u&SX6M!W9M9AzX%Z5*R5+L8bb)NF}zBZ0QgCn>=po49cV zTfjB8wy$B5)sF1l2yb#~@`oXGbhd}kO56zZToVA`3kdP58ihq|gsH97BIqnIY7tu! zxe*?q)Sgw)oZ)TOTc5P{MG|55US?4|~!~5-(fWbooq@VE+!AO(N{yxwAv@Kb=Wp z?dcc#<=-)z#MsmK%_iP4R(Y%`3&17+e^ibo)@$n0|55X#D@mL~r$p;!S)%^hStQXA z^&1B>ZKYrHgQIu^1X~-s5iV+LPpevfEpy#V-w4l?lwq1zL!xE!yvd-yK1-}~ z1aCb{ip`4E_(_TRafhE2m>=t&Bf|#<%am~(SC76G(YN?AD%O(ODQkr<@gV%XaE(wT zye~X2+$Ag)t`Ms6gTg?3*zud=3wmuWx$N<+UPRUBaAB_FL;aPl!gPMTeu?4#x1N&M zwLC-mE?g@*^7wgRg-)7BvU176Fg_K|3|fzp#^{cA{orpocSsO9nU4kp?XB3@zz6jN z5tnd1>^0Qr!jgX2KnilbdP!sC4J$$RBn4f%imz^>wXPYe2kMZs1)QG zp@bU{xMV9i%JWhY#|Of#@byZ+XFjQ9Lo&tABpMj z-6SQF^ynXU6Tf2#eQZ0)WE-y9E5a-48*%JPExk+$caGh}NcirXk z!+UKboIg2VcisUz=a)Dm;oSJM!cD?FAx}V#-k$jHDw=FK=zh&?s5}{7niO zOF!RA5;E|CD3XU)EN)tp(*Ou-7Q)+3ph9r3X?qr?ci<{p<9bd=!4@Qr#L z-41dV-=N1+ZU^y=uV?UB65-O1e__}uf=oyQ=sOkoIt!qCdvUJ`&~_&r0%qmtS=bJp zU&nZ71c_(Wfz60CGnPQ7{#DDhK}V_@Nzz#o#1ex=UTY*J(mf-I(@LkXy#!gWG1KAy z838pMud@JbzOB^(1z+Gy0k1LQsqo~5hP~PX==(Kzl>vaKi7UxqGKh?$pKb>?@=wFb uJYM@RPzF7{hwx!yxVV{vZPjf7aX;~k`mKWsbV0jeP=PK6cDz9rIR765=+PGd delta 26030 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 } [ ,...n ] ) -[ ; ] -``` -
+## UPDATE +- MSDN Ʒ . + - [UPDATE-MSDN](https://docs.microsoft.com/ko-kr/sql/t-sql/queries/update-transact-sql?view=sql-server-ver15) +- Ʒ 鼭 ˾ƺ.( MSDN ߴ.) +- ⺻ + ```SQL + UPDATE Person.Address SET ModifiedDate = GETDATE(); + ``` -- 첫번째 예제를 보자 -```SQL -CREATE TABLE TABLECREATE_1( - COL1 INT PRIMARY KEY, - COL2 VARCHAR(20), - COL3 DATE NOT NULL -); -``` -
+ - ```UPDATE [̸̺] SET [UPDATE۾]``` ̴. + - Person.Address̺ ModifieDate ÷ ¥ Էϴ ̴. -- 풀어쓰면 아래와 같다. -
+- Ʈ ϱ + ```SQL + UPDATE Sales.SalesPerson SET + Bonus = 6000, CommisionPct = 10, SaleQuota = NULL; + ``` + - ó SET ǥ Բ ÷ ϸ ÷ UPDATE ۾ ϴ. + - ⿡ WHERE ̿ϸ DZ ο UPDATE ִ. + - Ʒ ø -```SQL - CREATE TABLE [테이블 이름] ( - [컬럼명] [데이터 형식] [추가옵션], - [컬럼명] [데이터 형식] [추가옵션], - ... - ); -``` - - 추가 옵션은 `NOT NULL`, `PRIMARY KEY`, `FOREIGN KEY`, `DEFAULT [기본값]` 등이 있다. - - 생성된 테이블이 탐색기에서 보이지 않을 때는 해당 DB 하위폴더가 보이지 않는 상태에서 새로 고침하게 되면 반영된 테이블을 볼 수 있다. - - 탐색기->테이블 우클릭->디자인 을 통해 데이터 형식과 기본값을 수정할 수 있지만, ALTER문 같은 쿼리를 사용하는데 더 익숙해져야 할 듯 하다. -
+ ```SQL + UPDATE Production.Product + SET Color = N'Metallic Red' + WHERE Name LIKE N'Road-250%' AND Color = N'Red'; + ``` -- 두번째 예제는 임시 테이블을 생성하기 위한 구문이다. -```SQL ---CREATE TEMP TABLE -CREATE TABLE #TEMP_TABLECREATE_1( - TEMP_COL1 INT PRIMARY KEY, - TEMP_COL2 VARCHAR(20), - TEMP_COL3 DATE NOT NULL -); -``` - -임시 테이블은 말 그대로 SQL문이 실행되는 동안에만 임시로 생성되는 테이블이다. - -프로시저를 생성해 사용해야 할 때 유용하게 사용할 수 있을 듯 하다. \ No newline at end of file + - Production.Product ̺ Color ÷ N'Metallic Red' Ѵ. + - , Name Road-250 ϰ + - Color N'Red' Ǿִ ุ UPDATEѴ. + - N'Red' N ڵ带 ǹѴ. +- TOP Ͽ UPDATE + - TOP(n) nุŭ 븸 UPDATEϴ°͵ ϴ. + - Ʒ ø + + ```SQL + UPDATE TOP(10) HumanResources.Employee + SET VacationHours = VacationHours*1.25; + ``` + - HumanResources.Employee̺ 10 ࿡ VacationHours ÷ 25% UPDATE Ѵ. \ No newline at end of file diff --git a/_posts/2021-10-24-SQL-Update.markdown b/_posts/2021-10-24-SQL-Update.markdown new file mode 100644 index 000000000..34c379f4b --- /dev/null +++ b/_posts/2021-10-24-SQL-Update.markdown @@ -0,0 +1,58 @@ +--- +layout: post +title: "SQL Basic-Create" +subtitle: "MSSQL_CREATE TABLE CLAUSE" +categories: sql +tags: +comments: true +header-img: img/post_img/SQL.png +--- +### CREATE TABLE +- 아래 링크의 예제 중 하나를 통해 공부해 보자 + - [MSDN-CREATE TABLE예제](https://docs.microsoft.com/ko-kr/sql/t-sql/statements/create-table-transact-sql?view=sql-server-ver15) +- 간단한 구문 형식 +```SQL +-- Simple CREATE TABLE Syntax (common if not using options) +CREATE TABLE + { database_name.schema_name.table_name | schema_name.table_name | table_name } + ( { } [ ,...n ] ) +[ ; ] +``` +
+ +- 첫번째 예제를 보자 +```SQL +CREATE TABLE TABLECREATE_1( + COL1 INT PRIMARY KEY, + COL2 VARCHAR(20), + COL3 DATE NOT NULL +); +``` +
+ +- 풀어쓰면 아래와 같다. +
+ +```SQL + CREATE TABLE [테이블 이름] ( + [컬럼명] [데이터 형식] [추가옵션], + [컬럼명] [데이터 형식] [추가옵션], + ... + ); +``` + - 추가 옵션은 `NOT NULL`, `PRIMARY KEY`, `FOREIGN KEY`, `DEFAULT [기본값]` 등이 있다. + - 생성된 테이블이 탐색기에서 보이지 않을 때는 해당 DB 하위폴더가 보이지 않는 상태에서 새로 고침하게 되면 반영된 테이블을 볼 수 있다. + - 탐색기->테이블 우클릭->디자인 을 통해 데이터 형식과 기본값을 수정할 수 있지만, ALTER문 같은 쿼리를 사용하는데 더 익숙해져야 할 듯 하다. +
+ +- 두번째 예제는 임시 테이블을 생성하기 위한 구문이다. +```SQL +--CREATE TEMP TABLE +CREATE TABLE #TEMP_TABLECREATE_1( + TEMP_COL1 INT PRIMARY KEY, + TEMP_COL2 VARCHAR(20), + TEMP_COL3 DATE NOT NULL +); +``` + -임시 테이블은 말 그대로 SQL문이 실행되는 동안에만 임시로 생성되는 테이블이다. + -프로시저를 생성해 사용해야 할 때 유용하게 사용할 수 있을 듯 하다. \ No newline at end of file From fb092441baa179ec618b8d3605b5bbd881d67e19 Mon Sep 17 00:00:00 2001 From: d-gun Date: Wed, 27 Oct 2021 11:56:46 +0900 Subject: [PATCH 44/59] sql update2 --- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes ...arkdown => 2021-10-17-SQL-Update.markdown} | 0 ...arkdown => 2021-10-24-SQL-Create.markdown} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename _posts/{2021-10-17-SQL-Create.markdown => 2021-10-17-SQL-Update.markdown} (100%) rename _posts/{2021-10-24-SQL-Update.markdown => 2021-10-24-SQL-Create.markdown} (100%) diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index b84217a5132a0aa8eeb22187fce1acc9eaac81e2..fd74aca0bfa211c06f789f5216d0eca9718e1e1a 100644 GIT binary patch delta 139 zcmZozz~8Wde}Xh)$3z)t#*W5>)&$0_2~5i;FfZX*y`5_!(`HWQos2KGADG4Tgi(@> znUP6>`51&c4xx7Qd}QF;zIP6j-VSExqSWc{LYQ@@n;7ZMRHf-p2wG d6x_~{&ODC`EV#0extwkKvO=Irg9_#g;Q$%UE7t%3 delta 139 zcmZozz~8Wde}Xh)+e8^>#~j1z`PqoZQnbGNpA;pXhF*KcOlHW)6J5Y1-5I4GIR5S#I{=| iG4Epm2?}oKNN1kM1r}Uc$Xw1geOVz;r9lPrg>V34!7Oe7 diff --git a/_posts/2021-10-17-SQL-Create.markdown b/_posts/2021-10-17-SQL-Update.markdown similarity index 100% rename from _posts/2021-10-17-SQL-Create.markdown rename to _posts/2021-10-17-SQL-Update.markdown diff --git a/_posts/2021-10-24-SQL-Update.markdown b/_posts/2021-10-24-SQL-Create.markdown similarity index 100% rename from _posts/2021-10-24-SQL-Update.markdown rename to _posts/2021-10-24-SQL-Create.markdown From de17a8a6ac7efab94cd24bf49cb0c355b32b8717 Mon Sep 17 00:00:00 2001 From: d-gun Date: Wed, 27 Oct 2021 12:05:20 +0900 Subject: [PATCH 45/59] change create part --- .vs/D-Gun.github.io/v16/.suo | Bin 73216 -> 73216 bytes _posts/2021-10-24-SQL-Create.markdown | 60 +++++++++++++------------- 2 files changed, 29 insertions(+), 31 deletions(-) diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 941e62de90b327ee2a63b629d045c87e726cfbf3..56c74a23d04788735b00ace15eb0e3a3e5c87253 100644 GIT binary patch delta 1164 zcmcJKO-vI}5XavvyLA@|7Hy*ql5VYlKnrb!ib92cQ1FA0n2<;c6w!d9L9~?~ObBu? z9>BmpwebKktBGDb*fkgv3>xvECI$}@Px4_j@#3j+gE|`sHiUx*e915K-u!3g{byj3 z9hhWC?7)mVav<$#gNf1TEQQry-_tA1Ae>QtGZp|ZHL_i~JRwAf7?4b)7^y(Au*$a-mTL#b=EbaxpSQWg5idR&>dCASN33EM8Gv?>X=mW{Xhfxn8`mK23X zLPN5j+1#>Rua~TT{y%%B)7C2K_A8Jn)R^e_uakm<*oloeNm(qLheC1q@s#WS^J|{Z zW1)n5aa)C;F-&}K(baxTH{6ZJpar=% zOX~Is5JbU|Dn`18K<;Dc=(i%JXmB=73QY5xPq@i$v1R!d6Z58nGsg3v=bA__IU6(c zU=)MrVn5#X+B!ZwxRXE8U$M9xZJc*y4$sWDJ`7Lz7oOnudMeiJ*E!v@om1k^#<$VB erNc}99%ZKA4zk41fv&*T4U9kYf#Qq3yzvLK#aVd( delta 818 zcmb`DO=uHQ6ouzLXF|rL=|GdViH5X|{V`^m*lPM4wN12D3@&t05l0IeZIKwQUU%4vym_qKzmcwh-M!n5e-A z{01=ND?U)Ym;4anAp%4XQJ|%YcDqpriat(t2Z2pO5SsPFLIs$l7w<~GZE6HZ9d+z0 zCXBR`v<0`Cy?BWC|CyGXCD1K&3C*NrJSuo#H(n6}(5F8YX8=}Hg8}`%W$w2sJ7LY(M*%AF zlH+=2V?+|+93@8x{M6#XAQOccaNInO%Mo&B%*ow2C2u1wm1;dF7s^HMECnx=g!SdH zl~-M_1#Z~b{phZxphaJHSwV|3^;*uX(7yk#M1s!x?V83iy-~pEy=>+FU z-%967G=a9S^%z$gEuoOVb^EVQtX;BKw#t!%r`L8T@bUZrJ~>u}J^OcIYRRYjCi3gF uB-18&!y;MwfpE2;x*GI`TMLl6@d02QA1NOE_PJbBnX1hG&mpuslRp9cyana} diff --git a/_posts/2021-10-24-SQL-Create.markdown b/_posts/2021-10-24-SQL-Create.markdown index 34c379f4b..5c97e2b71 100644 --- a/_posts/2021-10-24-SQL-Create.markdown +++ b/_posts/2021-10-24-SQL-Create.markdown @@ -11,48 +11,46 @@ header-img: img/post_img/SQL.png - 아래 링크의 예제 중 하나를 통해 공부해 보자 - [MSDN-CREATE TABLE예제](https://docs.microsoft.com/ko-kr/sql/t-sql/statements/create-table-transact-sql?view=sql-server-ver15) - 간단한 구문 형식 -```SQL --- Simple CREATE TABLE Syntax (common if not using options) -CREATE TABLE - { database_name.schema_name.table_name | schema_name.table_name | table_name } - ( { } [ ,...n ] ) -[ ; ] -``` -
+ ```SQL + -- Simple CREATE TABLE Syntax (common if not using options) + CREATE TABLE + { database_name.schema_name.table_name | schema_name.table_name | table_name } + ( { } [ ,...n ] ) + [ ; ] + ``` - 첫번째 예제를 보자 -```SQL -CREATE TABLE TABLECREATE_1( - COL1 INT PRIMARY KEY, - COL2 VARCHAR(20), - COL3 DATE NOT NULL -); -``` -
+ ```SQL + CREATE TABLE TABLECREATE_1( + COL1 INT PRIMARY KEY, + COL2 VARCHAR(20), + COL3 DATE NOT NULL + ); + ``` + -- 풀어쓰면 아래와 같다. -
+ - 이해를 돕기 위해 풀어쓰면 아래와 같다. -```SQL + + ```SQL CREATE TABLE [테이블 이름] ( [컬럼명] [데이터 형식] [추가옵션], [컬럼명] [데이터 형식] [추가옵션], ... ); -``` + ``` - 추가 옵션은 `NOT NULL`, `PRIMARY KEY`, `FOREIGN KEY`, `DEFAULT [기본값]` 등이 있다. - 생성된 테이블이 탐색기에서 보이지 않을 때는 해당 DB 하위폴더가 보이지 않는 상태에서 새로 고침하게 되면 반영된 테이블을 볼 수 있다. - 탐색기->테이블 우클릭->디자인 을 통해 데이터 형식과 기본값을 수정할 수 있지만, ALTER문 같은 쿼리를 사용하는데 더 익숙해져야 할 듯 하다. -
- 두번째 예제는 임시 테이블을 생성하기 위한 구문이다. -```SQL ---CREATE TEMP TABLE -CREATE TABLE #TEMP_TABLECREATE_1( - TEMP_COL1 INT PRIMARY KEY, - TEMP_COL2 VARCHAR(20), - TEMP_COL3 DATE NOT NULL -); -``` - -임시 테이블은 말 그대로 SQL문이 실행되는 동안에만 임시로 생성되는 테이블이다. - -프로시저를 생성해 사용해야 할 때 유용하게 사용할 수 있을 듯 하다. \ No newline at end of file + ```SQL + --CREATE TEMP TABLE + CREATE TABLE #TEMP_TABLECREATE_1( + TEMP_COL1 INT PRIMARY KEY, + TEMP_COL2 VARCHAR(20), + TEMP_COL3 DATE NOT NULL + ); + ``` + - 임시 테이블은 말 그대로 SQL문이 실행되는 동안에만 임시로 생성되는 테이블이다. + - 프로시저를 생성해 사용해야 할 때 유용하게 사용할 수 있을 듯 하다. \ No newline at end of file From 37632cae55819d6a8e380aca4175a561a4ee12a6 Mon Sep 17 00:00:00 2001 From: d-gun Date: Wed, 27 Oct 2021 12:09:33 +0900 Subject: [PATCH 46/59] update change3 --- .vs/D-Gun.github.io/v16/.suo | Bin 73216 -> 73216 bytes .vs/slnx.sqlite | Bin 249856 -> 249856 bytes ...arkdown => 2021-10-27-SQL-Update.markdown} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename _posts/{2021-10-17-SQL-Update.markdown => 2021-10-27-SQL-Update.markdown} (100%) diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 56c74a23d04788735b00ace15eb0e3a3e5c87253..6813424310f9dd9976afcd54a56907234c460dfc 100644 GIT binary patch delta 449 zcmY+;%S!@L6b5kbH0CrEXliK>lA4Ir#$MEvl_|Y8K~#`Is6q6g2-<{8F^Jlfb^~b< z!4$QvnN5TcEn2j!MT-)eaMd4C_Km9=`0<^4=Wx$SWZ6WPO|{eO+p=_@m5`gs2F5tG z=z0H8x0owJdZ?52(^<}2U%+QJ7z{ti3Zw@HU=aH0DOo4I01)eV|WqBb#9qCSenT5C;7}br~hnt*#F%K&-mq%vJ+bJE+0bHvX)w_s zYh}w((J(hc?AWo|9>B2;{_RPhxGoZ;-&}RM{{Ejin!*caRanRorA{wuP>6z~cq32P zl!!*CYuF`kGjfcVLyWw^A6*K?z6|3aqAJE;Oqmc*Ix`$cZ0cC*j?i@8t-6!1B}WmB z##X{qih5m-Grp=qG_dr1KIc63OUuc#eEi~Ty?=jq=Q{Y%T1h`U?DQl$UYxeaD#rq& I3J1BvU&XM6y#N3J delta 413 zcmYk$&r1S96bJB~akO1AP*AK@TFDK{%Cid%Ds<@7KhP;+qko}ewtc5VIPlr`csuXS>kLI_D7tyZdn*a%d#qU8A5Je6-<@;* zz}Oy5i-P#^Jddh+J{Hq7Z4wq?2XbK+H&?=rfhQJOLOBW%ID!c(i6V9MBnx4+cuZ}t z&iHyodePU|K8^Hv^bkF2yt>msRL?l`#&_7Uvu|vWw8LbZmZ6=YUI+SEwJ6UGr)^%d z{)~NZ=cfLy%5qeid{A>4xwVu$4$3<&n?YIU@65bNTA)x1J5w#;EN0xUW`- L$t&^Sf7AU1k7RTV diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index fd74aca0bfa211c06f789f5216d0eca9718e1e1a..55af4bd3adfe2119143bd5edda012c8323ea1361 100644 GIT binary patch delta 84 zcmZozz~8Wde}Xh)*F+g-#;(SM)&$1Z1g5PC%v(Yjji!H0V;0-49m;IU&BCO__IP_n k0&@o&qtSMtcs3^s<75ur?Fj|UJJ}&hMYro$FkcJ@0FN^pC;$Ke delta 84 zcmZozz~8Wde}Xh)$3z)t#*W5>)&$1Z1g5PC%v(Yj4X1xhV;0-49m;IU&BFGWNojjV k0&@o&qv3X-cs3^s2QTB~?Fj|UJJ}&hMYro$FkcJ@0FFBwApigX diff --git a/_posts/2021-10-17-SQL-Update.markdown b/_posts/2021-10-27-SQL-Update.markdown similarity index 100% rename from _posts/2021-10-17-SQL-Update.markdown rename to _posts/2021-10-27-SQL-Update.markdown From a930d99f5a82ca2637c3dc371281d45611c85523 Mon Sep 17 00:00:00 2001 From: d-gun Date: Wed, 27 Oct 2021 12:27:27 +0900 Subject: [PATCH 47/59] upload test1 --- .vs/D-Gun.github.io/v16/.suo | Bin 73216 -> 87040 bytes .vs/VSWorkspaceState.json | 2 +- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _posts/2021-10-27-SQL-Update_1.markdown | 49 ++++++++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 _posts/2021-10-27-SQL-Update_1.markdown diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 6813424310f9dd9976afcd54a56907234c460dfc..990f1abb151545338196a31c04cebc6ab151b41b 100644 GIT binary patch delta 5069 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
Qky$ov#j6o%VC~*X@tkSKFuCbL@ihnew>OtPGW} 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 delta 22372 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 Date: Wed, 27 Oct 2021 17:19:24 +0900 Subject: [PATCH 48/59] update. create del --- .vs/D-Gun.github.io/v16/.suo | Bin 87040 -> 89600 bytes .vs/VSWorkspaceState.json | 4 +- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _posts/2021-10-24-SQL-Create.markdown | 56 ------------------------ _posts/2021-10-27-SQL-Update.markdown | 49 --------------------- _posts/2021-10-27-SQL-Update_1.markdown | 49 --------------------- 6 files changed, 1 insertion(+), 157 deletions(-) delete mode 100644 _posts/2021-10-24-SQL-Create.markdown delete mode 100644 _posts/2021-10-27-SQL-Update.markdown delete mode 100644 _posts/2021-10-27-SQL-Update_1.markdown diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 990f1abb151545338196a31c04cebc6ab151b41b..23517deccceaaef2f69b9d6f1d717a7d238b5bc4 100644 GIT binary patch delta 3444 zcmdUxe^6BA8pqFbIN-7@E4wbJpt9HjNm*Lf6s@4N4Lm1m=s^U*yk6SoM0Ac3**@o^X-3fNw#ND+;f%gf4R{{1d3 z;LTpvF1FJt?Q1cGTs*c4jd1|(_#)VfkUtleKexa}gG!JG9suKPy)Ko!%qyjI8F6m~ z@n8v91#SntmJDz&SOziy&+!8&hF=Owz%3vf!~*_Y4%q@&1Bd}Ga34qjw}GW#4R8oT zjj#fa3ET;mgBGwA@Zy_c^8p`teaLPIS>Co7{z{MrTEQJ)At(f?VBMjLl&*9*JeXhG zB7As9AP{T9{DNOqm-*NJ}Dlvy2KC@AcQ z^oF!!BnZ!d)p2UJh$F{!3?t%YXUd zXUspdT*sGmZbYLvpR{Ww50N-5vG#TQ0~x-XOB^f{nPSP%GA!4K%`;~Gwkp`D$$mjHhGjoCzFuv`qT(&4{akxr>vYU!1zV7(aplQ^xH zVX7D8snoHz`|PZ-cM-Fl$c(jT**n+P`kFoL(VjfE=5Z6NjJib|?J-cnK2-h?co_Tz zJOcKEzk)}>W8eUI9CU*xKo8*a!>_*|s;D!aMZ-V9Iq)37vbckSHTr>Phe_gFY}VUMQq2&E0s60#C|JUTM|w4XY+1Uh}W) zreKpa&?<|XoFv~cT9w2%<8W$21ya9<27aj(4qBnD=zKGNV4It)AN9Xcc;x$emfr71 zhmSVAEH8S#;HtZim7RX-Xi974OZTuVIf?A(_N{@sV%3^JMy;~@`KX(l;izDb80f8H z7e9$-OVmX5zo}HpF7$4g)?jM!H&-`#+}TO2v&N^R< z+tXaVxxw9*9XMRXiVoe$dJZq;t4td`Y@on#MY^$fBkygV?A_SVJe4EPu{6v1)7og` zVe_Vi*?it+zs>9S?D(akOupK-23|dn3=DKD#5;!uHh)H^&uGa6_+R)_1Of-2O^m=x)gGZgz$^&Ol1YQ@^ zyvv7(C2`BMaw1=K?$5>g>%BX-Big|ZeYBYUXXIX{JgvkJOFw;}Vg#Pdk}wb>eV zD0o`>|ERlhSSrIp4X<8pbmQ+w-avJ+E(^us05nygzq*_L;G#R(rM~Q&*faY>^TyBrsRqM3plAuy?z8!xZ1&*~P%bg|at5)jNI<7uK;dQNH zT@yypzPlC6I>)E*Zl4I0h#DV>oq7ax9^uPW=QX0XRXYhu;bO3M5Z|A%3w delta 2966 zcmchZZERFk8prQ*dt0VuX8Qg@TRPJ+)M`89%vfk?r#gK>Kr3yb8mSF3eF3VKVjZAX zHZ7X0e(0*b5B63?ghNVqfKdO!SK1V`COD+P|gHP=G!um3!58|-vLtQ>v_m?Kov*^9*_?5 z!4~dO@`ijUEd~})3dHPcfbdd`+zD2I60i=`fpV}GtOm<~3)~4RfCJb;Ehqw&zzSMH z0=OM)1b*O^qzlRI75YHRMe$x>2bF8?A^{YAL=J zDw%*#Nlag;B&=Vj60cKiLtD_33vLBwkPYg=U0|U?@n{nY*};FRkeEe`LPL>hHNfB^ zut1{g6cQ2sISSo^aW_*)IKDw4X>>#G|4yQ^1BwW?aj>kF%%T)cYHSZ(;meCRD&lwJ zGhQ3J<-~+hR0do;Xg;opb@HE<7NUJI2QAGe?A6G&iw@>+b_wU3%l<11Zgv#Ckw{O# z_HN;Dej*$$YBq^k?}=>;F8j6N$oQU&{J}C(?ALYmjZEe^64;SzHw~cUshCb9m^(sh zL9tP6ze0v1G();WR+D;};!)gXSmc==BRp;<{V%enCXkC= z2i2D*$c zFOvSIqB^kiw(F!cVnkFp^B%;}K!Zp>H{izH$>mT`Y~WLhS_reBOq2RyC|_JnuqVl2 z=2-Y#@`2yiHa}ZlS9>x4M`Px5N4$PqnLHaJmp5LL{t<^e${lcb1w54%&W;Xur?cE! zxz*XR(i?DkJX=?JJl>8#h1V_fH=liFocOSO@#OS#L>iwQtKyS0OZnMvb9s|?3j%HB zu|GbuP*#rQl|*U6HN*^1kk zFy(!0`RjUNBMmknvFouw|D#=fdv=&5nS&D}DPE7$<92!~oEuvjo%4RU^mL;6T2mm% zp$mD!NPNUdv?ivdowCzICUK{T@bKu&rsx8)3cPL@cUL;S-iYyy-M!tNLH^)EHij(W z;}@(+*E;oSMgNY}bGKz7fVdLG8{jG2@?Pm~yaOsE_MbbnIdNUiZM^UA`LPkhfP2Jty)`;3gmv9dexd(aRxjST&(|)hEL*Yn?m(~F zR+s`OyLPy?^#r%?>Tvb+wO`fcwVyOAhKP{n#fJ2n5-m4dK*j>OZaOHkFHVK)xWVTm z?EZoL#HbPt3s-Joe@$qz&QF|r+MaSP@bjt+!HQ7jx$r8HYtwdWN*9j{?CHppLCAun zrRLD%W9j5g_DOxxPP}w>;B97+lC)YYO^CyX3)^z^r^ysKckl&&6|NLV4{v{FoLZT_ z@77Y5Q)uFoAF`(gYv>qFeVR_=G?kG>yGhd(TB+?_LRp%xo@S@4dDKfx>m+Joi Lx={UL2f6cGRlRz3 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

B4uw82I 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 delta 23502 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 } [ ,...n ] ) - [ ; ] - ``` - -- 첫번째 예제를 보자 - ```SQL - CREATE TABLE TABLECREATE_1( - COL1 INT PRIMARY KEY, - COL2 VARCHAR(20), - COL3 DATE NOT NULL - ); - ``` - - - - 이해를 돕기 위해 풀어쓰면 아래와 같다. - - - ```SQL - CREATE TABLE [테이블 이름] ( - [컬럼명] [데이터 형식] [추가옵션], - [컬럼명] [데이터 형식] [추가옵션], - ... - ); - ``` - - 추가 옵션은 `NOT NULL`, `PRIMARY KEY`, `FOREIGN KEY`, `DEFAULT [기본값]` 등이 있다. - - 생성된 테이블이 탐색기에서 보이지 않을 때는 해당 DB 하위폴더가 보이지 않는 상태에서 새로 고침하게 되면 반영된 테이블을 볼 수 있다. - - 탐색기->테이블 우클릭->디자인 을 통해 데이터 형식과 기본값을 수정할 수 있지만, ALTER문 같은 쿼리를 사용하는데 더 익숙해져야 할 듯 하다. - -- 두번째 예제는 임시 테이블을 생성하기 위한 구문이다. - ```SQL - --CREATE TEMP TABLE - CREATE TABLE #TEMP_TABLECREATE_1( - TEMP_COL1 INT PRIMARY KEY, - TEMP_COL2 VARCHAR(20), - TEMP_COL3 DATE NOT NULL - ); - ``` - - 임시 테이블은 말 그대로 SQL문이 실행되는 동안에만 임시로 생성되는 테이블이다. - - 프로시저를 생성해 사용해야 할 때 유용하게 사용할 수 있을 듯 하다. \ No newline at end of file diff --git a/_posts/2021-10-27-SQL-Update.markdown b/_posts/2021-10-27-SQL-Update.markdown deleted file mode 100644 index 7c1791f06..000000000 --- a/_posts/2021-10-27-SQL-Update.markdown +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: post -title: "SQL Basic-Update" -subtitle: "MSSQL_UPDATE CLAUSE" -categories: sql -tags: -comments: true -header-img: img/post_img/SQL.png ---- -## UPDATE -- MSDN Ʒ . - - [UPDATE-MSDN](https://docs.microsoft.com/ko-kr/sql/t-sql/queries/update-transact-sql?view=sql-server-ver15) -- Ʒ 鼭 ˾ƺ.( MSDN ߴ.) -- ⺻ - ```SQL - UPDATE Person.Address SET ModifiedDate = GETDATE(); - ``` - - - ```UPDATE [̸̺] SET [UPDATE۾]``` ̴. - - Person.Address̺ ModifieDate ÷ ¥ Էϴ ̴. - -- Ʈ ϱ - ```SQL - UPDATE Sales.SalesPerson SET - Bonus = 6000, CommisionPct = 10, SaleQuota = NULL; - ``` - - ó SET ǥ Բ ÷ ϸ ÷ UPDATE ۾ ϴ. - - ⿡ WHERE ̿ϸ DZ ο UPDATE ִ. - - Ʒ ø - - ```SQL - UPDATE Production.Product - SET Color = N'Metallic Red' - WHERE Name LIKE N'Road-250%' AND Color = N'Red'; - ``` - - - Production.Product ̺ Color ÷ N'Metallic Red' Ѵ. - - , Name Road-250 ϰ - - Color N'Red' Ǿִ ุ UPDATEѴ. - - N'Red' N ڵ带 ǹѴ. -- TOP Ͽ UPDATE - - TOP(n) nุŭ 븸 UPDATEϴ°͵ ϴ. - - Ʒ ø - - ```SQL - UPDATE TOP(10) HumanResources.Employee - SET VacationHours = VacationHours*1.25; - ``` - - HumanResources.Employee̺ 10 ࿡ VacationHours ÷ 25% UPDATE Ѵ. \ No newline at end of file diff --git a/_posts/2021-10-27-SQL-Update_1.markdown b/_posts/2021-10-27-SQL-Update_1.markdown deleted file mode 100644 index 7c1791f06..000000000 --- a/_posts/2021-10-27-SQL-Update_1.markdown +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: post -title: "SQL Basic-Update" -subtitle: "MSSQL_UPDATE CLAUSE" -categories: sql -tags: -comments: true -header-img: img/post_img/SQL.png ---- -## UPDATE -- MSDN Ʒ . - - [UPDATE-MSDN](https://docs.microsoft.com/ko-kr/sql/t-sql/queries/update-transact-sql?view=sql-server-ver15) -- Ʒ 鼭 ˾ƺ.( MSDN ߴ.) -- ⺻ - ```SQL - UPDATE Person.Address SET ModifiedDate = GETDATE(); - ``` - - - ```UPDATE [̸̺] SET [UPDATE۾]``` ̴. - - Person.Address̺ ModifieDate ÷ ¥ Էϴ ̴. - -- Ʈ ϱ - ```SQL - UPDATE Sales.SalesPerson SET - Bonus = 6000, CommisionPct = 10, SaleQuota = NULL; - ``` - - ó SET ǥ Բ ÷ ϸ ÷ UPDATE ۾ ϴ. - - ⿡ WHERE ̿ϸ DZ ο UPDATE ִ. - - Ʒ ø - - ```SQL - UPDATE Production.Product - SET Color = N'Metallic Red' - WHERE Name LIKE N'Road-250%' AND Color = N'Red'; - ``` - - - Production.Product ̺ Color ÷ N'Metallic Red' Ѵ. - - , Name Road-250 ϰ - - Color N'Red' Ǿִ ุ UPDATEѴ. - - N'Red' N ڵ带 ǹѴ. -- TOP Ͽ UPDATE - - TOP(n) nุŭ 븸 UPDATEϴ°͵ ϴ. - - Ʒ ø - - ```SQL - UPDATE TOP(10) HumanResources.Employee - SET VacationHours = VacationHours*1.25; - ``` - - HumanResources.Employee̺ 10 ࿡ VacationHours ÷ 25% UPDATE Ѵ. \ No newline at end of file From 69abd5b76271bd1001091f37cc0ba776f514f25c Mon Sep 17 00:00:00 2001 From: d-gun Date: Wed, 27 Oct 2021 17:29:36 +0900 Subject: [PATCH 49/59] sql update, create again --- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes ...1-08-23-CSharp-SqlConnection (2).markdown} | 0 _posts/2021-10-27-sql-Create.markdown | 56 ++++++++++++++++++ _posts/2021-10-27-sql-Update.markdown | 49 +++++++++++++++ 4 files changed, 105 insertions(+) rename _posts/{2021-08-23-CSharp-SqlConnection.markdown => 2021-08-23-CSharp-SqlConnection (2).markdown} (100%) create mode 100644 _posts/2021-10-27-sql-Create.markdown create mode 100644 _posts/2021-10-27-sql-Update.markdown diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 0318b82313fcc5e059c8c32b274609264d6c1894..e1b696f09e820d2dfad15d6edfe9a30d1d95c664 100644 GIT binary patch delta 1085 zcmZuvTS#126uoEfbIyItags52@} zTeUS|2qeTw2xpQ=o6=}on+KYNODLEI@&IQDm6D`>)HbxGrBEo?q%nn3!<2@p^R>>$ z+H0+S_8K{@kDS)W3dls_xf(Jt9XRSG>Cq*xwd5r;o0$97qohAR)kUnSE@&<$Uw^{J zfUx6QTpJfO0Tb4R1RPVSEhy1r$;hi7g(CqM&Sl_>4BW^-Dg$Y2>LfH@Cffz8$3yZK z`oMA6(PkyWl)at#?xJ?+7mnQeD#`LjQK@ts_1SY`4re|5ww3qReouC-weV1SeeIe>nJ?1ufM zgnukL1K7em_zXNwB$|y<+CU&XdrnzQZKS4nH-trNvi)#QTn%EW==lbixD><)*(W?9 z+~a}Ul9o{}rnRd)YWmETRjm&~cm~N2qNW1_8*=gf|0S5tr(O`#1Gv`uz5|QYVM&sP zNVTMYrH|{K`pdfHOgod#c4xU`*>TNr(6QT5VE@s6&OTs&#je=qZKrIe&1(bgj`pec zwpORP)j!pgdPv=+I+gp%IpqzdTG8e2_%*)JQi%I}kEewU~CReq6=^8>t}o4ko{ z<1g_dt_-t>>{~X+rdg7WvVIn3t*nl%RG6)$%k*bDPp{J}^dmY(2dGI~=vG=r^C;r) zxQI9LGEU+V9L6qe#vQl?eYg&F_#1wMMYs*Ka2`H{!!QJ$&p+7gLMj~i=qU-G{~VcLrH;v|T|7`|Sp;;C}|bu+L4 delta 800 zcmYL{TWC~Q6o$`QYwvw-b1~3hjhCF5gc>hNtcXGJM(`nR!GK03lj)gbk}KQ_5BVw^To#yaC8{eS&ueV@KU z&(lV=BU-DrQVXlUtC!S+sw19?QE^WUigQAWv`C6AVxw3t7Ks9(@xS>WDgG-T;5|Ie zQ@n#a{4>6omvWOmV`J7&r*qyGI@GL*Njr!4GUn_>~xs9!kqy%lUrcg23+nc=|?ak%8 z+S~A)m{80~(B>qXr_o}R=Nl+r9!$_&|F;CqM5ZW8hkO } [ ,...n ] ) + [ ; ] + ``` + +- 첫번째 예제를 보자 + ```SQL + CREATE TABLE TABLECREATE_1( + COL1 INT PRIMARY KEY, + COL2 VARCHAR(20), + COL3 DATE NOT NULL + ); + ``` + + + - 이해를 돕기 위해 풀어쓰면 아래와 같다. + + + ```SQL + CREATE TABLE [테이블 이름] ( + [컬럼명] [데이터 형식] [추가옵션], + [컬럼명] [데이터 형식] [추가옵션], + ... + ); + ``` + - 추가 옵션은 `NOT NULL`, `PRIMARY KEY`, `FOREIGN KEY`, `DEFAULT [기본값]` 등이 있다. + - 생성된 테이블이 탐색기에서 보이지 않을 때는 해당 DB 하위폴더가 보이지 않는 상태에서 새로 고침하게 되면 반영된 테이블을 볼 수 있다. + - 탐색기->테이블 우클릭->디자인 을 통해 데이터 형식과 기본값을 수정할 수 있지만, ALTER문 같은 쿼리를 사용하는데 더 익숙해져야 할 듯 하다. + +- 두번째 예제는 임시 테이블을 생성하기 위한 구문이다. + ```SQL + --CREATE TEMP TABLE + CREATE TABLE #TEMP_TABLECREATE_1( + TEMP_COL1 INT PRIMARY KEY, + TEMP_COL2 VARCHAR(20), + TEMP_COL3 DATE NOT NULL + ); + ``` + - 임시 테이블은 말 그대로 SQL문이 실행되는 동안에만 임시로 생성되는 테이블이다. + - 프로시저를 생성해 사용해야 할 때 유용하게 사용할 수 있을 듯 하다. \ No newline at end of file diff --git a/_posts/2021-10-27-sql-Update.markdown b/_posts/2021-10-27-sql-Update.markdown new file mode 100644 index 000000000..9cb6241ec --- /dev/null +++ b/_posts/2021-10-27-sql-Update.markdown @@ -0,0 +1,49 @@ +--- +layout: post +title: "SQL Basic-Update" +subtitle: "MSSQL_UPDATE CLAUSE" +categories: sql +tags: +comments: true +header-img: img/post_img/SQL.png +--- +## UPDATE +- 참고할 MSDN 문서는 아래와 같다. + - [UPDATE-MSDN](https://docs.microsoft.com/ko-kr/sql/t-sql/queries/update-transact-sql?view=sql-server-ver15) +- 아래 예제를 보면서 사용법을 알아보자.(예제 역시 MSDN에서 발췌했다.) +- 기본 구문 + ```SQL + UPDATE Person.Address SET ModifiedDate = GETDATE(); + ``` + + - ```UPDATE [테이블이름] SET [UPDATE작업구문]``` 의 구성이다. + - Person.Address테이블의 ModifieDate 컬럼에 오늘 날짜를 입력하는 구문이다. + +- 여러 열 업데이트 하기 + ```SQL + UPDATE Sales.SalesPerson SET + Bonus = 6000, CommisionPct = 10, SaleQuota = NULL; + ``` + - 위의 예시처럼 SET 구정에 쉼표와 함께 컬럼을 지정하면 지정된 컬럼만 UPDATE 작업이 가능하다. + - 여기에 WHERE절을 이용하면 조건까지 부여된 UPDATE를 진행할 수 있다. + - 아래 예시를 보자 + + ```SQL + UPDATE Production.Product + SET Color = N'Metallic Red' + WHERE Name LIKE N'Road-250%' AND Color = N'Red'; + ``` + + - Production.Product 테이블의 Color 컬럼의 내용을 N'Metallic Red' 로 변경한다. + - 단, Name이 Road-250으로 시작하고 + - Color이 N'Red' 로 되어있는 행만 UPDATE한다. + - N'Red' 에서 앞의 N은 유니코드를 의미한다. +- TOP 사용하여 UPDATE + - TOP(n)을 사용해 n행만큼의 내용만 UPDATE하는것도 가능하다. + - 아래 예시를 보자 + + ```SQL + UPDATE TOP(10) HumanResources.Employee + SET VacationHours = VacationHours*1.25; + ``` + - HumanResources.Employee테이블의 상위 10개 행에서 VacationHours 컬럼의 값을 25%증가시켜 UPDATE를 진행한다. \ No newline at end of file From 402b0720a8a33ad24af85b98dbd6583ca4987f6a Mon Sep 17 00:00:00 2001 From: d-gun Date: Wed, 27 Oct 2021 17:30:27 +0900 Subject: [PATCH 50/59] sql update, create again2 --- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes ... 2021-08-23-CSharp-SqlConnection.markdown} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename _posts/{2021-08-23-CSharp-SqlConnection (2).markdown => 2021-08-23-CSharp-SqlConnection.markdown} (100%) diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index e1b696f09e820d2dfad15d6edfe9a30d1d95c664..bcc8f71d7ed997a05b408ddfc6aaf333d0bf78ee 100644 GIT binary patch delta 156 zcmZozz~8Wde}XjQvWYUzjLRAmS`!#s6PUIpFdGFhu`+L;62NTF!op$2U@-l92(u2S zdAk=ILo6dF+jPTnW_cmK+{B{nl>G8M1&*6Dl{+^bIk4R}l=&zZW6*Tw1m+aRu<02I z%&#~Yw==Nlv&1q^Hz;RT*j|;$+|I|ut~;H%fH{WIaC<@l^I0}_1_lNeUFKMbl8|!d GH4y+T?kwm4 delta 164 zcmZozz~8Wde}XjQ(up$8j7u96S`!#s6PUIpFdGFhv3%V=C4kwUg@x6aL23H+5N4g} zf}zY(3JMxVntHj3McFC&<#`GmH)kq$ZaQ*+!-|26A(oMo&1k!ADDzP+#_iLY6PQyN zgQjOBFu!6oW=Uman$8o-EYAYczr8Avxt))Rfnhpx0dowa?)HQN=Cf=phRmtRibBen H*F*pSu);0R diff --git a/_posts/2021-08-23-CSharp-SqlConnection (2).markdown b/_posts/2021-08-23-CSharp-SqlConnection.markdown similarity index 100% rename from _posts/2021-08-23-CSharp-SqlConnection (2).markdown rename to _posts/2021-08-23-CSharp-SqlConnection.markdown From b3e96f543f623ead2dbc73a17da79974ba81f6db Mon Sep 17 00:00:00 2001 From: d-gun Date: Thu, 28 Oct 2021 18:16:14 +0900 Subject: [PATCH 51/59] apiendpoint --- .vs/D-Gun.github.io/v16/.suo | Bin 89600 -> 91648 bytes .vs/VSWorkspaceState.json | 2 +- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes .../2021-10-28-think-APIandEndpoint.markdown | 58 ++++++++++++++++++ assets/img/post_img/apiendpoint.png | Bin 0 -> 26566 bytes 5 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 _posts/2021-10-28-think-APIandEndpoint.markdown create mode 100644 assets/img/post_img/apiendpoint.png diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index 23517deccceaaef2f69b9d6f1d717a7d238b5bc4..ac09a2f366e58c67491b2ba273c1914a97e859a7 100644 GIT binary patch delta 3232 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 F{tf^yfqMV| diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index 1b847fd8c..0378115c7 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -3,6 +3,6 @@ "", "\\_posts" ], - "SelectedNode": "\\_posts\\2021-10-27-SQL-Update_1.markdown", + "SelectedNode": "\\_posts\\2021-08-23-CSharp-SqlConnection.markdown", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index bcc8f71d7ed997a05b408ddfc6aaf333d0bf78ee..87b75c566eb12c3605e01dcc5debbec97d37aa7f 100644 GIT binary patch delta 24284 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 F{U7tds(Szc diff --git a/_posts/2021-10-28-think-APIandEndpoint.markdown b/_posts/2021-10-28-think-APIandEndpoint.markdown new file mode 100644 index 000000000..fe224621d --- /dev/null +++ b/_posts/2021-10-28-think-APIandEndpoint.markdown @@ -0,0 +1,58 @@ +--- +layout: post +title: "API? Endpoint?" +subtitle: "API & Endpoint" +categories: think +tags: +comments: true +header-img: img/post_img/apiendpoint.png +--- +## API와 Endpoint? +> 업무에서 자주 보였던 Endpoint에 대해 공부하다 보니, API와 연관되는 부분들이 많아서 이참에 정리 해보고자 한다. + +#### API +--- +- Application Programming Interface + - 응용프로그램에서 운영 체제나 프로그래밍 언어가 제공하는 기능을 사용할 수 있도록 만든 Interface이다. + - 인터넷에서 간단하게 정리되어 있는 많은 내용들의 표현을 빌리자면, 식당에서 서빙과 주문을 받는 홀의 직원? 웨이터? 라고 생각하면 되겠다. + >API가 두 Application 사이에서 Interaction(상호작용) 할 수 있도록 도와주는 역할을 한다는 것이다. + + - 운영체제와 프로그래밍 언어에서 제공하는 기능을 응용프로그램에게 보여주고 ***(메뉴를 보여주고 주문을 받는다.)*** + - 사용자는 이를 보고선 운영체제와 프로그래밍 언어에서 지정한 형식에 따라 필요한 기능을 요청하는 구문을 작성한다 ***(주문을 한다. 여기서 API는 이 주문대로 주방의 요리사에게 주문내용을 전달한다.)*** + - 운영체제나 프로그래밍 언어는 구문에 따라 해당 기능을 실행한다. ***(요리를 만든다. 결과에 따른 return값을 응용프로그램에게 전달하는데, 이 역할을 API가 한다.)*** +- Open API? Rest API? + - Open API + - 말 그대로 개방된 API이다. + - 네이버나 카카오의 Open API를 보면 알 수 있듯이, 네이버나 카카오에서 제공하는 기능을 Open API를 통해 누구나 사용할 수 있다. + - Rest API? + - **RE**presentational **S**tate **T**ransfer API의 약어. + - REST 아키텍처의 제약 조건을 준수하는 API라는 말이다. + - 종종 이 REST의 원리를 따르는 시스템을 **RESTful**이라고 부르기도 한다. +> REST라는 용어는 2000년 로이 필딩(Roy Fielding)의 박사학위 논문에서 소개되어진 소프트웨어 아키텍처의 한 형식이다. +- REST에 대한 자세한 내용은 아래 링크를 참고하면 되겠다. + - [위키피디아-REST](https://ko.m.wikipedia.org/wiki/REST) + - HTTP Protocol에서는 다양한 메서드를 지원하지만, REST에서는 CRUD(Create, Read, Update, Delete)에 해당되는 아래의 메서드만 지원한다. + - POST(Create) + - GET(Select,Read) + - PUT(Update) + - DELETE(Delete) + +#### Endpoint +--- +- '끝점', 말 그대로 끝에 위치한 노드를 의미한다. +- 우선, stack overflow 에 간단하게 정리되어 있는 내용을 참고하며 생각해보자. + - [stack overflow - what is an endpoint?](https://stackoverflow.com/questions/2122604/what-is-an-endpoint) +- 내용을 보면, URI를 통해 resource에 접근하는 것 뿐만 아니라, 같은 URI라도 메서드에 따라 기능을 실행 할 수 있도록 구분되어진 끝지점의 정보 라고 생각하면 될듯 하다. + - 예시 + +|메서드|URL| +|:----|:----| +|GET|https://example.com/this-is-an-endpoint| +|GET|https://example.com/another-endpoint| +|POST|https://example.com/this-is-an-endpoint| + +- 위의 표에서 같은 URL이지만 다른 메서드를 요청한다고 가정해보자 + - GET /this-is-an-endpoint + - POST /this-is-an-endpoint + - 이렇게 같은 URI 지만 요청하는 메서드에 따라 다른 Endpoint가 사용된다. +- 이처럼 Endpoint는 메서드를 사용할 때 말고도, 어떤 리소스가 저장되어있는 위치를 나타내는 것이라 생각하면 쉬울 듯 하다. \ No newline at end of file diff --git a/assets/img/post_img/apiendpoint.png b/assets/img/post_img/apiendpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..f8064e39a9960468934759e7cf2d530c67baff8c GIT binary patch literal 26566 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 z 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 WiCiKm^1-)vuBa(%DV07j_5UApoiNS- literal 0 HcmV?d00001 From e1a1a1bc769b7bdf566893fcb16103b5965c6f57 Mon Sep 17 00:00:00 2001 From: d-gun Date: Wed, 10 Nov 2021 20:35:57 +0900 Subject: [PATCH 52/59] =?UTF-8?q?vim,=20handshake=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/D-Gun.github.io/v16/.suo | Bin 91648 -> 101888 bytes .vs/VSWorkspaceState.json | 2 +- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes _posts/2021-10-30-sql-Select_OrderBy.markdown | 46 ++++++++++ ...21-11-02-think-3Way_4WayHandshake.markdown | 43 ++++++++++ .../2021-11-09-think-vim_in_vscode.markdown | 81 ++++++++++++++++++ assets/img/post_img/vim.png | Bin 0 -> 108685 bytes 7 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 _posts/2021-10-30-sql-Select_OrderBy.markdown create mode 100644 _posts/2021-11-02-think-3Way_4WayHandshake.markdown create mode 100644 _posts/2021-11-09-think-vim_in_vscode.markdown create mode 100644 assets/img/post_img/vim.png diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index ac09a2f366e58c67491b2ba273c1914a97e859a7..c0b2789ba042b64a5a972c5e88a5973cf438fe14 100644 GIT binary patch delta 9322 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 delta 4762 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 delta 26698 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 KUv-?^ZuvhM8os6g diff --git a/_posts/2021-10-30-sql-Select_OrderBy.markdown b/_posts/2021-10-30-sql-Select_OrderBy.markdown new file mode 100644 index 000000000..cb7626679 --- /dev/null +++ b/_posts/2021-10-30-sql-Select_OrderBy.markdown @@ -0,0 +1,46 @@ +--- +layout: post +title: "SQL Basic-Select_OrderBy_" +subtitle: "MSSQL_SELECT_ORDERBY_CLAUSE" +categories: sql +tags: +comments: true +header-img: img/post_img/SQL.png +--- +## SELECT-ORDER BY CLAUSE +- SELECT 문에서 결과를 정렬하기 위해 사용되는 절이다. + - 오름차순(ASC) 내림차순(DESC)의 옵션이 있다. 기본 정렬은 오름차순 정렬이다. + - 정렬 시 Null값은 가장 작은 값으로 취급한다. +- 기본 구성 +```sql +SELECT SCHEMA_NAME(schema_id) AS Sch FROM sys.objects +ORDER BY SchemaName; +``` +- 구문 작성시 주의할 점은 아래와 같다. + - 열 이름은 FROM절에서 지정한 테이블에 정의된 열과 같아야 한다. + - ORDER BY절에서 사용되는 열 이름은 그 일부분이 식으로 사용되어져서는 안된다. + - 잘못 사용한 예 + ```sql + SELECT SCHEMA_NAME(schema_id) AS Sch FROM sys.objects + ORDER BY SchemaName + ''; -- 이 부분이 잘못된 예시 + ``` +- WHERE 로 조건에 맞는 열을 추스린 후, ORDER BY 이후에 CASE WHEN 절을 추가하여 지정된 열 값에 따라 행의 정렬 순서를 조건부로 지정할 수 있다. + - 예시 + ```sql + SELECT BusinessEntityID, SalariedFlag + FROM HumanResources.Employee + ORDER BY CASE SalariedFlag WHEN 1 THEN BusinessEntityID END DESC, + CASE WHEN SalariedFlag = 0 THEN BusinessEntityID END; + ``` + - HumanResources.Employee 테이블의 SalariedFlag열의 값이 1일때 내림차순, 0일때 오름차순으로 정렬한다. + +위의 구문에서 +```sql +CASE WHEN SalariedFlag = 0 THEN BusinessEntityID END +``` +을 +```sql +CASE SalariedFlag WHEN 0 THEN BusinessEntityID END +``` + +으로 사용해도 된다. \ No newline at end of file diff --git a/_posts/2021-11-02-think-3Way_4WayHandshake.markdown b/_posts/2021-11-02-think-3Way_4WayHandshake.markdown new file mode 100644 index 000000000..173e05018 --- /dev/null +++ b/_posts/2021-11-02-think-3Way_4WayHandshake.markdown @@ -0,0 +1,43 @@ +--- +layout: post +title: "3Way-Handshake, 4Way-Handshake" +subtitle: "TCP ۰ ʿ " +categories: think +tags: +comments: true +header-img: +--- + +## 3-Way, 4-Way Handshake +### 3-Way Handshake +- TCP(Transmission Control Protocol) ̿ (Connection Establishment) μ Ȯ ֵ ϴ ̴. +- TCP ʱȭ Ѵ. +- Client Server ¸ ǥ Ÿ Ʒ . + - SYN : SYnchronize Sequence Number + - ACK : ACKnowledgements + - TCB : Transmission Control Block + - TCP ó ʿ ִ. + - Connection state(LISTEN, ESTABLISHED, TIME-WAIT) + - Receive window, Congestion Window, Sequence number, Ÿ̸ + +|Client State|Client|Server|Sever State| +|----|----|----|----| +|CLOSED|Wait For Server|Passive Open: Create TCB|CLOSED -> LISTEN| +|CLOSED -> SYN-SENT|Active Open: Create TCB, Send SYN|Wait For Client|LISTEN -> SYN-RECEIVED| +|SYN-SENT -> ESTABLISHED|Wait For ACK to SYN|Receive SYN, Send SYN+ACK|SYN-RECEIVED| +|ESTABLISHED|Receive SYN+ACK, Send ACK|Wait For ACK to SYN|SYN-RECEIVED -> ESTABLISHED| +|||Receive ACK|ESTABLISHED| + +### 4-Way Handshake +- TCP (Connection Termination) Ѵ. + +|Client State|Client|Sever|Sever State| +|----|----|----|----| +|ESTABLISHED -> FIN-WAIT-1|Receive Close Signal From App, Send FIN|Normal Operation|ESTABLISHED| +|FIN-WAIT-1|Wait for ACK and FIN From Server|Receive FIN, Send ACK, Tell App To Close|ESTABLISHED -> CLOSE-WAIT| +|FIN-WAIT-1 -> FIN-WAIT-2|Receive ACK|(Wait for App)|CLOSE-WAIT -> LAST-ACK| +|FIN-WAIT-2|Wait for Server FIN|App is Ready To Close, Send FIN|LAST-ACK| +|FIN-WAIT-2 -> TIME-WAIT|Receive FIN, Send ACK|Wait for ACK to FIN|LAST-ACK -> CLOSED| +|TIME-WAIT|Wait For Double Maximum Segment Life(MSL) Time|Receive ACK|CLOSED| +|CLOSED|||CLOSED| +- Server Client Ŷ FIN Ŷ ʰ Ͱ Ȳ Sever ð(Default : 240 sec) ׿ Ŷ ٸ . ̸ **TIME-WAIT**̶ Ѵ. \ No newline at end of file diff --git a/_posts/2021-11-09-think-vim_in_vscode.markdown b/_posts/2021-11-09-think-vim_in_vscode.markdown new file mode 100644 index 000000000..9ff4b80ff --- /dev/null +++ b/_posts/2021-11-09-think-vim_in_vscode.markdown @@ -0,0 +1,81 @@ +--- +layout: post +title: "VSCode Vim Editor" +subtitle: "ũ ɵ " +categories: think +tags: +comments: true +header-img: img/post_img/vim.png +--- +## Vim +> VS Code ϸ鼭 ˰ Extension ڶѴٴ Vim Editor ѹ Ѵ. +> Ű ͼ ؾ ⿡ ̸ д. + +### +||Ű| +|----|----| +|Ŀ ġ Է|i| +|Ŀ ġ ĭ Է|a| +|Ŀ ٿ Է|o| +|Ŀ ġ ڸ Է|s| +|Ŀ ִ պ Է|I (shift + i)| +|Ŀ ִ Է|A (shift + a)| +|Ŀ ִ ( ) Է|O (shift + o)| +|Ŀ ִ Է|S (shift + s)| + +--- +### Ŀ ̵ + +||Ű| +|----|----| +|Ŀ ĭ ̵|h| +|Ŀ Ʒ ĭ ̵|j| +|Ŀ ĭ ̵|k| +|Ŀ ĭ ̵|l(̰ ƴϰ )| +| ܾ ó ̵|w| +| ù ڷ ̵|^| +| ̵|$| +| ù ̵|gg| +| ̵|G (shift + g)| +|[ ȣ] ̵|[ ȣ]G(shift + g)| +|[ ȣ] ̵|:[ ȣ] + enter| +|ȭ鿡 ù ̵|H (shift + h)| +|ȭ鿡 ߰ ̵|M (shift + m)| +|ȭ鿡 ̵|L (shift + l)| +|page up|Ctrl + b| +|page Ʒ ̵|Ctrl + d| +|page down|Ctrl + f| +|scroll up|Ctrl + y| +|scroll down|Ctrl + e| + +--- +### , , ٿֱ +- ˾Ƶξ κ + - ÿ ӽ÷ ȴ. + - ٴ ߶󳻱⿡ . + +||Ű| +|----|----| +|Ŀ ġ ڸ (delete)|x(ҹ)| +|Ŀκ ܾ شǴ |dw(ҹ)| +|Ŀ ġ |dd(ҹ)| +|Ŀκ [ ] ŭ |[ ]dd(ҹ)| +|Ŀ ġ ȣ ο ִ , [ȣ] |di[ȣ({,[,<,( ϳ)]| +|Ŀ ִ |yy(ҹ)| +|Ŀκ [ ] ŭ |[ ]yy| +|Ŀ ġ ķ ٿֱ|p(ҹ)| +|Ŀ ġ ٿֱ|P(빮)| + +--- + +### ǵ, ˻ + +||Ű| +|----|----| +| (undo)|u(ҹ)| +|[ڿ] ڿ Ŀ ġ Ʒ ˻|/[ڿ] + enter| +|[ڿ] ڿ Ŀ ġ ˻|?[ڿ} + enter| +|˻ ڿ ڿ ġ ̵|n(ҹ)| +|˻ ڿ ڿ ġ ̵|N(빮)| + +- ɵ Ƽ ؾ κе . ɵ ϰ, ٸ ɵ ƴƴ ˰ Ǵ ߰ ̴. \ No newline at end of file diff --git a/assets/img/post_img/vim.png b/assets/img/post_img/vim.png new file mode 100644 index 0000000000000000000000000000000000000000..b28cb0a5021189ee505959e80572341012f04e70 GIT binary patch literal 108685 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

se6Tk3(j*TF7 zK-i?em*F4e{zRPw3^EF(%lPBpsJO(CjlzX}$Z8Wuvc+6lq&FPkCU}>d3#>$re5CKJ zAdUVgGmyw|1>=}=J-A3SeT;Ofb(xdUtrtnQlZEu}V!b(SyjgFMo&dh|vbrKho{!IB zxA)@t4Clm!+_9ZOp^Utx+EegL_}R!VO|sCiq|kKU8}$3V4>N%L@CeTRdl2|J6MwZuJrFAhKU_}E|LqodappS5zr}?Au1hlf-;tyGSD}lEbZfwG zsPk8PO8%`1yh6RQclv+-@LRD&(;yFWZjql2LOI&8HBs@ve=px={J%eY(0R2>`+w%0 tt4{BKXAnj1IGSkn?=SxU`2Y4>BU71QZ?axjUPVTMQPsYjt8D%7{{vS9b?pEE literal 0 HcmV?d00001 From a9d42638b4035c5c660456ae2c162a949cc2f79a Mon Sep 17 00:00:00 2001 From: d-gun Date: Wed, 10 Nov 2021 20:58:52 +0900 Subject: [PATCH 53/59] =?UTF-8?q?=EB=B9=94,=20=ED=95=B8=EB=93=9C=EC=89=90?= =?UTF-8?q?=EC=9D=B4=ED=81=AC2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _posts/2021-11-09-think-vim_in_vscode.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2021-11-09-think-vim_in_vscode.markdown b/_posts/2021-11-09-think-vim_in_vscode.markdown index 9ff4b80ff..6b9898bbd 100644 --- a/_posts/2021-11-09-think-vim_in_vscode.markdown +++ b/_posts/2021-11-09-think-vim_in_vscode.markdown @@ -1,7 +1,7 @@ --- layout: post title: "VSCode Vim Editor" -subtitle: "ũ ɵ " +subtitle: "Powerful editor extension" categories: think tags: comments: true From 88b0f0a534e3695413fc58d68fcd92741c7ef52d Mon Sep 17 00:00:00 2001 From: d-gun Date: Tue, 16 Nov 2021 22:15:42 +0900 Subject: [PATCH 54/59] vim, handshake post change type to UTF-8 --- .vs/D-Gun.github.io/v16/.suo | Bin 101888 -> 108544 bytes .vs/VSWorkspaceState.json | 2 +- .vs/slnx.sqlite | Bin 249856 -> 249856 bytes Gemfile | 3 +- Gemfile.lock | 4 +- _config.yml | 2 +- ...21-11-02-think-3Way_4WayHandshake.markdown | 19 ++-- .../2021-11-09-think-vim_in_vscode.markdown | 102 +++++++++--------- 8 files changed, 67 insertions(+), 65 deletions(-) diff --git a/.vs/D-Gun.github.io/v16/.suo b/.vs/D-Gun.github.io/v16/.suo index c0b2789ba042b64a5a972c5e88a5973cf438fe14..99894ec625b58d2e52c7aa4ed37a576ea5dcceed 100644 GIT binary patch delta 9833 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 Zs*|vN9tF}NzCNvxIG_5z*qTrF{{c$|lsNzZ delta 5416 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 Pc@+iW11rAyL5lh}HQkOR diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json index 1839da4b5..ec454ba6a 100644 --- a/.vs/VSWorkspaceState.json +++ b/.vs/VSWorkspaceState.json @@ -3,6 +3,6 @@ "", "\\_posts" ], - "SelectedNode": "\\_posts\\2021-10-30-sql-Select_OrderBy.markdown", + "SelectedNode": "\\_posts\\2021-11-02-think-3Way_4WayHandshake.markdown", "PreviewInSolutionExplorer": false } \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 8e2c7887b6d0d447fe75cf34a8171bf52d63c469..44553d5db29b9d0447be18b6478b33aa8b0d3150 100644 GIT binary patch delta 24368 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 delta 23954 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 1.0" gem "jekyll-redirect-from", "~> 0.12" gem "classifier-reborn" gem 'wdm', '>= 0.1.0' -gem "kramdown-parser-gfm" \ No newline at end of file +gem "kramdown-parser-gfm" +gem "webrick", "~> 1.7" diff --git a/Gemfile.lock b/Gemfile.lock index 8db4ee796..a866dbe51 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -65,6 +65,7 @@ GEM rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) wdm (0.1.1) + webrick (1.7.0) PLATFORMS x64-mingw32 @@ -78,6 +79,7 @@ DEPENDENCIES jekyll-sitemap (~> 1.0) kramdown-parser-gfm wdm (>= 0.1.0) + webrick (~> 1.7) BUNDLED WITH - 2.1.4 + 2.2.31 diff --git a/_config.yml b/_config.yml index 54dadfd77..dececc9c0 100644 --- a/_config.yml +++ b/_config.yml @@ -18,7 +18,7 @@ tagline: "Wannabe a Good Developer" # A short description of the page, used in the sidebar and as fallback for the meta description tag. # Markdown enabled, but don't use more than one paragraph (enforced by `>`) description: > - Black stone + BlackRock # This should be the same author as first entry in `_data/authors.yml` author: diff --git a/_posts/2021-11-02-think-3Way_4WayHandshake.markdown b/_posts/2021-11-02-think-3Way_4WayHandshake.markdown index 173e05018..408d7cffd 100644 --- a/_posts/2021-11-02-think-3Way_4WayHandshake.markdown +++ b/_posts/2021-11-02-think-3Way_4WayHandshake.markdown @@ -1,24 +1,23 @@ --- layout: post title: "3Way-Handshake, 4Way-Handshake" -subtitle: "TCP ۰ ʿ " +subtitle: "TCP통신의 시작과 끝에 필요한 기술" categories: think tags: comments: true header-img: --- - ## 3-Way, 4-Way Handshake ### 3-Way Handshake -- TCP(Transmission Control Protocol) ̿ (Connection Establishment) μ Ȯ ֵ ϴ ̴. -- TCP ʱȭ Ѵ. -- Client Server ¸ ǥ Ÿ Ʒ . +- TCP(Transmission Control Protocol) 통신을 이용해 연결을 설정(Connection Establishment) 함으로서 정확한 전송을 보장 할 수 있도록 하는 방법이다. +- TCP연결을 초기화 할 때 사용한다. +- Client와 Server의 상태를 표로 나타내면 아래와 같다. - SYN : SYnchronize Sequence Number - ACK : ACKnowledgements - TCB : Transmission Control Block - - TCP ó ʿ ִ. - - Connection state(LISTEN, ESTABLISHED, TIME-WAIT) - - Receive window, Congestion Window, Sequence number, Ÿ̸ + - TCP 연결 처리에 필요한 정보가 담겨저 있다. + - Connection state(LISTEN, ESTABLISHED, TIME-WAIT등) + - Receive window, Congestion Window, Sequence number, 재전송 타이머 등 |Client State|Client|Server|Sever State| |----|----|----|----| @@ -29,7 +28,7 @@ header-img: |||Receive ACK|ESTABLISHED| ### 4-Way Handshake -- TCP (Connection Termination) Ѵ. +- TCP의 연결을 해제할 때(Connection Termination) 사용한다. |Client State|Client|Sever|Sever State| |----|----|----|----| @@ -40,4 +39,4 @@ header-img: |FIN-WAIT-2 -> TIME-WAIT|Receive FIN, Send ACK|Wait for ACK to FIN|LAST-ACK -> CLOSED| |TIME-WAIT|Wait For Double Maximum Segment Life(MSL) Time|Receive ACK|CLOSED| |CLOSED|||CLOSED| -- Server Client Ŷ FIN Ŷ ʰ Ͱ Ȳ Sever ð(Default : 240 sec) ׿ Ŷ ٸ . ̸ **TIME-WAIT**̶ Ѵ. \ No newline at end of file +- Server측에서 Client에게 전송한 패킷이 FIN 패킷보다 늦게 도착해 데이터가 유실 될 상황을 대비해 Sever측은 일정 시간(Default : 240 sec)동안 잉여 패킷을 기다리는 과정을 가진다. 이를 **TIME-WAIT**이라 한다. \ No newline at end of file diff --git a/_posts/2021-11-09-think-vim_in_vscode.markdown b/_posts/2021-11-09-think-vim_in_vscode.markdown index 6b9898bbd..f429e04ae 100644 --- a/_posts/2021-11-09-think-vim_in_vscode.markdown +++ b/_posts/2021-11-09-think-vim_in_vscode.markdown @@ -8,74 +8,74 @@ comments: true header-img: img/post_img/vim.png --- ## Vim -> VS Code ϸ鼭 ˰ Extension ڶѴٴ Vim Editor ѹ Ѵ. -> Ű ͼ ؾ ⿡ ̸ д. +> VS Code를 사용하면서 알게 된 Extension 중 강력한 기능을 자랑한다는 Vim Editor를 한번 사용해 보려고 한다. +> 단축키가 익숙해지기 전까지는 깜빡 잊어버릴 일이 많을 것 같아 여기에 미리 정리해 둔다. -### -||Ű| +### 편집모드 +|기능|단축키| |----|----| -|Ŀ ġ Է|i| -|Ŀ ġ ĭ Է|a| -|Ŀ ٿ Է|o| -|Ŀ ġ ڸ Է|s| -|Ŀ ִ պ Է|I (shift + i)| -|Ŀ ִ Է|A (shift + a)| -|Ŀ ִ ( ) Է|O (shift + o)| -|Ŀ ִ Է|S (shift + s)| +|커서의 위치부터 입력|i| +|커서의 위치 다음 칸부터 입력|a| +|커서의 다음 줄에 입력|o| +|커서 위치의 한 글자를 지우고 입력|s| +|커서가 있는 줄의 맨 앞부터 입력|I (shift + i)| +|커서가 있는 줄의 맨 끝부터 입력|A (shift + a)| +|커서가 있는 줄의 이전 줄(한줄 위) 부터 입력|O (shift + o)| +|커서가 있는 줄을 지우고 입력|S (shift + s)| --- -### Ŀ ̵ +### 커서 이동 -||Ű| +|기능|단축키| |----|----| -|Ŀ ĭ ̵|h| -|Ŀ Ʒ ĭ ̵|j| -|Ŀ ĭ ̵|k| -|Ŀ ĭ ̵|l(̰ ƴϰ )| -| ܾ ó ̵|w| -| ù ڷ ̵|^| -| ̵|$| -| ù ̵|gg| -| ̵|G (shift + g)| -|[ ȣ] ̵|[ ȣ]G(shift + g)| -|[ ȣ] ̵|:[ ȣ] + enter| -|ȭ鿡 ù ̵|H (shift + h)| -|ȭ鿡 ߰ ̵|M (shift + m)| -|ȭ鿡 ̵|L (shift + l)| +|커서 왼쪽으로 한칸 이동|h| +|커서 아래로 한칸 이동|j| +|커서 위로 한칸 이동|k| +|커서 오른쪽으로 한칸 이동|l(아이가 아니고 엘)| +|다음 단어의 처음으로 이동|w| +|줄의 첫 문자로 이동|^| +|줄의 맨 끝으로 이동|$| +|제일 첫 행으로 이동|gg| +|제일 끝 행으로 이동|G (shift + g)| +|[행 번호]의 행으로 이동|[행 번호]G(shift + g)| +|[행 번호] 의 행으로 이동|:[행 번호] + enter| +|화면에서 첫 행으로 이동|H (shift + h)| +|화면에서 중간 행으로 이동|M (shift + m)| +|화면에서 마지막 행으로 이동|L (shift + l)| |page up|Ctrl + b| -|page Ʒ ̵|Ctrl + d| +|page 절반 아래로 이동|Ctrl + d| |page down|Ctrl + f| |scroll up|Ctrl + y| |scroll down|Ctrl + e| --- -### , , ٿֱ -- ˾Ƶξ κ - - ÿ ӽ÷ ȴ. - - ٴ ߶󳻱⿡ . +### 삭제, 복사, 붙여넣기 +- 알아두어야 할 부분 + - 삭제 기능은 삭제와 동시에 삭제된 내용이 임시로 저장된다. + - 삭제라기 보다는 잘라내기에 가깝다. -||Ű| +|기능|단축키| |----|----| -|Ŀ ġ ڸ (delete)|x(ҹ)| -|Ŀκ ܾ شǴ |dw(ҹ)| -|Ŀ ġ |dd(ҹ)| -|Ŀκ [ ] ŭ |[ ]dd(ҹ)| -|Ŀ ġ ȣ ο ִ , [ȣ] |di[ȣ({,[,<,( ϳ)]| -|Ŀ ִ |yy(ҹ)| -|Ŀκ [ ] ŭ |[ ]yy| -|Ŀ ġ ķ ٿֱ|p(ҹ)| -|Ŀ ġ ٿֱ|P(빮)| +|커서가 위치한 문자를 삭제(delete)|x(소문자)| +|커서로부터 단어에 해당되는 내용 삭제|dw(소문자)| +|커서가 위치한 행 삭제|dd(소문자)| +|커서로부터 [행 숫자] 만큼의 행 삭제|[행 숫자]dd(소문자)| +|커서의 위치가 괄호문자 내부에 있는 경우, [괄호] 내부의 내용 삭제|di[괄호({,[,<,(의 종류중 하나)]| +|커서가 있는 행 복사|yy(소문자)| +|커서로부터 [행 숫자] 만큼의 행 복사|[행 숫자]yy| +|커서가 위치한 행 이후로 붙여넣기|p(소문자)| +|커서가 위치한 행 이전으로 붙여넣기|P(대문자)| --- -### ǵ, ˻ +### 되돌리기, 검색 -||Ű| +|기능|단축키| |----|----| -| (undo)|u(ҹ)| -|[ڿ] ڿ Ŀ ġ Ʒ ˻|/[ڿ] + enter| -|[ڿ] ڿ Ŀ ġ ˻|?[ڿ} + enter| -|˻ ڿ ڿ ġ ̵|n(ҹ)| -|˻ ڿ ڿ ġ ̵|N(빮)| +|이전 명령 취소(undo)|u(소문자)| +|[문자열]과 같은 문자열을 커서 위치 기준 아래쪽 검색|/[문자열] + enter| +|[문자열]과 같은 문자열을 커서 위치 기준 위쪽 검색|?[문자열} + enter| +|검색한 문자열 결과 중 다음 문자열 위치로 이동|n(소문자)| +|검색한 문자열 결과 중 이전 문자열 위치로 이동|N(대문자)| -- ɵ Ƽ ؾ κе . ɵ ϰ, ٸ ɵ ƴƴ ˰ Ǵ ߰ ̴. \ No newline at end of file +- 기능들이 워낙 많아서 공부해야 할 부분들이 많다. 기초적인 기능들은 여기까지 정리 해 놓기로 하고, 이후 또 다른 기능들은 틈틈히 알게 되는 데로 추가할 예정이다. \ No newline at end of file From e41c4d9472006049bfd18804debff72cf1001697 Mon Sep 17 00:00:00 2001 From: d-gun Date: Tue, 16 Nov 2021 22:18:42 +0900 Subject: [PATCH 55/59] commit vim, 3handshake post changes --- _posts/2021-11-02-think-3Way_4WayHandshake.markdown | 2 ++ _posts/2021-11-09-think-vim_in_vscode.markdown | 3 +++ 2 files changed, 5 insertions(+) diff --git a/_posts/2021-11-02-think-3Way_4WayHandshake.markdown b/_posts/2021-11-02-think-3Way_4WayHandshake.markdown index 408d7cffd..c9d07395d 100644 --- a/_posts/2021-11-02-think-3Way_4WayHandshake.markdown +++ b/_posts/2021-11-02-think-3Way_4WayHandshake.markdown @@ -19,6 +19,8 @@ header-img: - Connection state(LISTEN, ESTABLISHED, TIME-WAIT등) - Receive window, Congestion Window, Sequence number, 재전송 타이머 등 +--- + |Client State|Client|Server|Sever State| |----|----|----|----| |CLOSED|Wait For Server|Passive Open: Create TCB|CLOSED -> LISTEN| diff --git a/_posts/2021-11-09-think-vim_in_vscode.markdown b/_posts/2021-11-09-think-vim_in_vscode.markdown index f429e04ae..d5dae6db0 100644 --- a/_posts/2021-11-09-think-vim_in_vscode.markdown +++ b/_posts/2021-11-09-think-vim_in_vscode.markdown @@ -11,7 +11,10 @@ header-img: img/post_img/vim.png > VS Code를 사용하면서 알게 된 Extension 중 강력한 기능을 자랑한다는 Vim Editor를 한번 사용해 보려고 한다. > 단축키가 익숙해지기 전까지는 깜빡 잊어버릴 일이 많을 것 같아 여기에 미리 정리해 둔다. +--- + ### 편집모드 + |기능|단축키| |----|----| |커서의 위치부터 입력|i| From 5384a28197b915ffca0ac8a9c0ec1737d0b7999a Mon Sep 17 00:00:00 2001 From: d-gun Date: Tue, 16 Nov 2021 22:22:31 +0900 Subject: [PATCH 56/59] commits3 --- _posts/2021-11-02-think-3Way_4WayHandshake.markdown | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/_posts/2021-11-02-think-3Way_4WayHandshake.markdown b/_posts/2021-11-02-think-3Way_4WayHandshake.markdown index c9d07395d..0bfbb3ae1 100644 --- a/_posts/2021-11-02-think-3Way_4WayHandshake.markdown +++ b/_posts/2021-11-02-think-3Way_4WayHandshake.markdown @@ -19,7 +19,6 @@ header-img: - Connection state(LISTEN, ESTABLISHED, TIME-WAIT등) - Receive window, Congestion Window, Sequence number, 재전송 타이머 등 ---- |Client State|Client|Server|Sever State| |----|----|----|----| @@ -29,9 +28,13 @@ header-img: |ESTABLISHED|Receive SYN+ACK, Send ACK|Wait For ACK to SYN|SYN-RECEIVED -> ESTABLISHED| |||Receive ACK|ESTABLISHED| + + ### 4-Way Handshake - TCP의 연결을 해제할 때(Connection Termination) 사용한다. + + |Client State|Client|Sever|Sever State| |----|----|----|----| |ESTABLISHED -> FIN-WAIT-1|Receive Close Signal From App, Send FIN|Normal Operation|ESTABLISHED| @@ -41,4 +44,6 @@ header-img: |FIN-WAIT-2 -> TIME-WAIT|Receive FIN, Send ACK|Wait for ACK to FIN|LAST-ACK -> CLOSED| |TIME-WAIT|Wait For Double Maximum Segment Life(MSL) Time|Receive ACK|CLOSED| |CLOSED|||CLOSED| + + - Server측에서 Client에게 전송한 패킷이 FIN 패킷보다 늦게 도착해 데이터가 유실 될 상황을 대비해 Sever측은 일정 시간(Default : 240 sec)동안 잉여 패킷을 기다리는 과정을 가진다. 이를 **TIME-WAIT**이라 한다. \ No newline at end of file From 74a46165a949381b00cfbb90b1581b52c4e06650 Mon Sep 17 00:00:00 2001 From: d-gun Date: Tue, 16 Nov 2021 22:23:52 +0900 Subject: [PATCH 57/59] c --- _posts/2021-11-02-think-3Way_4WayHandshake.markdown | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/_posts/2021-11-02-think-3Way_4WayHandshake.markdown b/_posts/2021-11-02-think-3Way_4WayHandshake.markdown index 0bfbb3ae1..5b9051d14 100644 --- a/_posts/2021-11-02-think-3Way_4WayHandshake.markdown +++ b/_posts/2021-11-02-think-3Way_4WayHandshake.markdown @@ -31,11 +31,8 @@ header-img: ### 4-Way Handshake -- TCP의 연결을 해제할 때(Connection Termination) 사용한다. - - - -|Client State|Client|Sever|Sever State| +- TCP의 연결을 해제할 때(Connection Termination) 사용한다. +- |Client State|Client|Sever|Sever State| |----|----|----|----| |ESTABLISHED -> FIN-WAIT-1|Receive Close Signal From App, Send FIN|Normal Operation|ESTABLISHED| |FIN-WAIT-1|Wait for ACK and FIN From Server|Receive FIN, Send ACK, Tell App To Close|ESTABLISHED -> CLOSE-WAIT| From 8be3f585e85c13d702fdbc66b80f8c464f924d13 Mon Sep 17 00:00:00 2001 From: d-gun Date: Tue, 16 Nov 2021 22:25:08 +0900 Subject: [PATCH 58/59] cc --- ...21-11-02-think-3Way_4WayHandshake.markdown | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/_posts/2021-11-02-think-3Way_4WayHandshake.markdown b/_posts/2021-11-02-think-3Way_4WayHandshake.markdown index 5b9051d14..e50512211 100644 --- a/_posts/2021-11-02-think-3Way_4WayHandshake.markdown +++ b/_posts/2021-11-02-think-3Way_4WayHandshake.markdown @@ -32,15 +32,16 @@ header-img: ### 4-Way Handshake - TCP의 연결을 해제할 때(Connection Termination) 사용한다. -- |Client State|Client|Sever|Sever State| -|----|----|----|----| -|ESTABLISHED -> FIN-WAIT-1|Receive Close Signal From App, Send FIN|Normal Operation|ESTABLISHED| -|FIN-WAIT-1|Wait for ACK and FIN From Server|Receive FIN, Send ACK, Tell App To Close|ESTABLISHED -> CLOSE-WAIT| -|FIN-WAIT-1 -> FIN-WAIT-2|Receive ACK|(Wait for App)|CLOSE-WAIT -> LAST-ACK| -|FIN-WAIT-2|Wait for Server FIN|App is Ready To Close, Send FIN|LAST-ACK| -|FIN-WAIT-2 -> TIME-WAIT|Receive FIN, Send ACK|Wait for ACK to FIN|LAST-ACK -> CLOSED| -|TIME-WAIT|Wait For Double Maximum Segment Life(MSL) Time|Receive ACK|CLOSED| -|CLOSED|||CLOSED| + + |Client State|Client|Sever|Sever State| + |----|----|----|----| + |ESTABLISHED -> FIN-WAIT-1|Receive Close Signal From App, Send FIN|Normal Operation|ESTABLISHED| + |FIN-WAIT-1|Wait for ACK and FIN From Server|Receive FIN, Send ACK, Tell App To Close|ESTABLISHED -> CLOSE-WAIT| + |FIN-WAIT-1 -> FIN-WAIT-2|Receive ACK|(Wait for App)|CLOSE-WAIT -> LAST-ACK| + |FIN-WAIT-2|Wait for Server FIN|App is Ready To Close, Send FIN|LAST-ACK| + |FIN-WAIT-2 -> TIME-WAIT|Receive FIN, Send ACK|Wait for ACK to FIN|LAST-ACK -> CLOSED| + |TIME-WAIT|Wait For Double Maximum Segment Life(MSL) Time|Receive ACK|CLOSED| + |CLOSED|||CLOSED| - Server측에서 Client에게 전송한 패킷이 FIN 패킷보다 늦게 도착해 데이터가 유실 될 상황을 대비해 Sever측은 일정 시간(Default : 240 sec)동안 잉여 패킷을 기다리는 과정을 가진다. 이를 **TIME-WAIT**이라 한다. \ No newline at end of file From dcefb9dd8777ad043bdfcf6f422101a422e408a7 Mon Sep 17 00:00:00 2001 From: d-gun Date: Tue, 16 Nov 2021 22:27:11 +0900 Subject: [PATCH 59/59] cccc --- .../2021-11-02-think-3Way_4WayHandshake.markdown | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/_posts/2021-11-02-think-3Way_4WayHandshake.markdown b/_posts/2021-11-02-think-3Way_4WayHandshake.markdown index e50512211..e2c899e7f 100644 --- a/_posts/2021-11-02-think-3Way_4WayHandshake.markdown +++ b/_posts/2021-11-02-think-3Way_4WayHandshake.markdown @@ -18,15 +18,13 @@ header-img: - TCP 연결 처리에 필요한 정보가 담겨저 있다. - Connection state(LISTEN, ESTABLISHED, TIME-WAIT등) - Receive window, Congestion Window, Sequence number, 재전송 타이머 등 - - -|Client State|Client|Server|Sever State| -|----|----|----|----| -|CLOSED|Wait For Server|Passive Open: Create TCB|CLOSED -> LISTEN| -|CLOSED -> SYN-SENT|Active Open: Create TCB, Send SYN|Wait For Client|LISTEN -> SYN-RECEIVED| -|SYN-SENT -> ESTABLISHED|Wait For ACK to SYN|Receive SYN, Send SYN+ACK|SYN-RECEIVED| -|ESTABLISHED|Receive SYN+ACK, Send ACK|Wait For ACK to SYN|SYN-RECEIVED -> ESTABLISHED| -|||Receive ACK|ESTABLISHED| + |Client State|Client|Server|Sever State| + |----|----|----|----| + |CLOSED|Wait For Server|Passive Open: Create TCB|CLOSED -> LISTEN| + |CLOSED -> SYN-SENT|Active Open: Create TCB, Send SYN|Wait For Client|LISTEN -> SYN-RECEIVED| + |SYN-SENT -> ESTABLISHED|Wait For ACK to SYN|Receive SYN, Send SYN+ACK|SYN-RECEIVED| + |ESTABLISHED|Receive SYN+ACK, Send ACK|Wait For ACK to SYN|SYN-RECEIVED -> ESTABLISHED| + |||Receive ACK|ESTABLISHED|