From 3720d9f63a29a316bceb14c9781c8b0b6633a03b Mon Sep 17 00:00:00 2001 From: hou27 Date: Tue, 10 Jan 2023 14:31:52 +0900 Subject: [PATCH] =?UTF-8?q?README.md=20=EB=B3=B5=EA=B5=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 복구 및 멤버 목록 수정 --- README.md | 121 +++++++++ .../.gradle/7.6/checksums/checksums.lock" | Bin 0 -> 17 bytes .../dependencies-accessors.lock" | Bin 0 -> 17 bytes .../7.6/dependencies-accessors/gc.properties" | 0 .../executionHistory/executionHistory.bin" | Bin 0 -> 129408 bytes .../executionHistory/executionHistory.lock" | Bin 0 -> 17 bytes .../.gradle/7.6/fileChanges/last-build.bin" | Bin 0 -> 1 bytes .../.gradle/7.6/fileHashes/fileHashes.bin" | Bin 0 -> 20197 bytes .../.gradle/7.6/fileHashes/fileHashes.lock" | Bin 0 -> 17 bytes .../7.6/fileHashes/resourceHashesCache.bin" | Bin 0 -> 19993 bytes .../chap02/.gradle/7.6/gc.properties" | 0 .../buildOutputCleanup.lock" | Bin 0 -> 17 bytes .../buildOutputCleanup/cache.properties" | 2 + .../buildOutputCleanup/outputFiles.bin" | Bin 0 -> 19127 bytes .../chap02/.gradle/file-system.probe" | Bin 0 -> 8 bytes .../chap02/.gradle/vcs-1/gc.properties" | 0 .../chap02/.idea/compiler.xml" | 6 + .../chap02/.idea/gradle.xml" | 17 ++ .../chap02/.idea/jarRepositories.xml" | 20 ++ .../chap02/.idea/misc.xml" | 8 + .../chap02/.idea/uiDesigner.xml" | 124 +++++++++ .../chap02/.idea/vcs.xml" | 6 + .../chap02/.idea/workspace.xml" | 241 ++++++++++++++++++ .../main/com/hou27/chap02/Calculator.class" | Bin 0 -> 420 bytes .../com/hou27/chap02/Chap02Application.class" | Bin 0 -> 739 bytes .../com/hou27/chap02/PasswordStrength.class" | Bin 0 -> 1250 bytes .../hou27/chap02/PasswordStrengthMeter.class" | Bin 0 -> 1158 bytes .../com/hou27/chap02/CalculatorTest.class" | Bin 0 -> 571 bytes .../chap02/Chap02ApplicationTests.class" | Bin 0 -> 537 bytes .../chap02/PasswordStrengthMeterTest.class" | Bin 0 -> 2363 bytes ...u27.chap02.PasswordStrengthMeterTest.html" | 136 ++++++++++ .../reports/tests/test/css/base-style.css" | 179 +++++++++++++ .../build/reports/tests/test/css/style.css" | 84 ++++++ .../build/reports/tests/test/index.html" | 133 ++++++++++ .../build/reports/tests/test/js/report.js" | 194 ++++++++++++++ .../test/packages/com.hou27.chap02.html" | 103 ++++++++ .../build/resources/main/application.yml" | 1 + ...ou27.chap02.PasswordStrengthMeterTest.xml" | 15 ++ .../test-results/test/binary/output.bin" | 0 .../test-results/test/binary/output.bin.idx" | Bin 0 -> 1 bytes .../test-results/test/binary/results.bin" | Bin 0 -> 877 bytes .../previous-compilation-data.bin" | Bin 0 -> 13008 bytes .../PasswordStrength.class.uniqueId0" | Bin 0 -> 1250 bytes .../PasswordStrengthMeter.class.uniqueId2" | Bin 0 -> 1150 bytes ...PasswordStrengthMeterTest.class.uniqueId1" | Bin 0 -> 2363 bytes .../previous-compilation-data.bin" | Bin 0 -> 16211 bytes 46 files changed, 1390 insertions(+) create mode 100644 README.md create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/checksums/checksums.lock" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/dependencies-accessors/dependencies-accessors.lock" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/dependencies-accessors/gc.properties" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/executionHistory/executionHistory.bin" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/executionHistory/executionHistory.lock" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/fileChanges/last-build.bin" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/fileHashes/fileHashes.bin" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/fileHashes/fileHashes.lock" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/fileHashes/resourceHashesCache.bin" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/gc.properties" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.gradle/buildOutputCleanup/buildOutputCleanup.lock" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.gradle/buildOutputCleanup/cache.properties" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.gradle/buildOutputCleanup/outputFiles.bin" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.gradle/file-system.probe" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.gradle/vcs-1/gc.properties" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.idea/compiler.xml" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.idea/gradle.xml" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.idea/jarRepositories.xml" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.idea/misc.xml" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.idea/uiDesigner.xml" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.idea/vcs.xml" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/.idea/workspace.xml" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/classes/java/main/com/hou27/chap02/Calculator.class" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/classes/java/main/com/hou27/chap02/Chap02Application.class" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/classes/java/main/com/hou27/chap02/PasswordStrength.class" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/classes/java/main/com/hou27/chap02/PasswordStrengthMeter.class" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/classes/java/test/com/hou27/chap02/CalculatorTest.class" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/classes/java/test/com/hou27/chap02/Chap02ApplicationTests.class" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/classes/java/test/com/hou27/chap02/PasswordStrengthMeterTest.class" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/classes/com.hou27.chap02.PasswordStrengthMeterTest.html" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/css/base-style.css" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/css/style.css" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/index.html" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/js/report.js" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/packages/com.hou27.chap02.html" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/resources/main/application.yml" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/test-results/test/TEST-com.hou27.chap02.PasswordStrengthMeterTest.xml" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/test-results/test/binary/output.bin" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/test-results/test/binary/output.bin.idx" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/test-results/test/binary/results.bin" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/tmp/compileJava/previous-compilation-data.bin" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/tmp/compileTestJava/compileTransaction/stash-dir/PasswordStrength.class.uniqueId0" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/tmp/compileTestJava/compileTransaction/stash-dir/PasswordStrengthMeter.class.uniqueId2" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/tmp/compileTestJava/compileTransaction/stash-dir/PasswordStrengthMeterTest.class.uniqueId1" create mode 100644 "\352\271\200\354\240\225\355\230\270/chap02/build/tmp/compileTestJava/previous-compilation-data.bin" diff --git a/README.md b/README.md new file mode 100644 index 0000000..e79ad36 --- /dev/null +++ b/README.md @@ -0,0 +1,121 @@ +# 2022-2023 TDD 스터디 + +[22-23 GDSC MJU 1기] TDD 스터디를 위한 저장소 +
+ +## 구성원 + +### 🚘 담당 Core Member + +김연지 김정호 + +### 🤷‍♂️ 참여 Member + +
멤버 목록 +
+ +한규범 + +이재준 + +박소정 + +장채은 + +신동민 + +임건영 + +이상민(M) + +김규리 + +정창우 + +
+ +
+ +## ✨ 스터디 개요 + +### 🎈 목표 + +- Spring Boot를 사용하며 TDD 방법론을 실제로 적용할 수 있도록 한다. +- 테스트 코드를 능숙하게 작성하고 테스트하기 쉬운 코드를 작성한다. + +### ✒️ 진행 방식 + +[테스트 주도 개발 시작하기](http://www.yes24.com/Product/Goods/89145195) + +위 책을 가이드로 삼아 실습하며 온라인으로 진행할 예정입니다. + +- _1주에 챕터 하나를 목표로 합니다. (Chapter 2 ~ 9 목표)_ +- _기본적으로 책 내용을 실습하되, 각자 응용 케이스를 작성해보도록 합니다._ + - 매주 한 챕터씩 읽고 실습해보는 시간을 가집니다. **(각자)** + - 모두가 해당 챕터에 해당하는 이론 문제를 하나씩 준비해온 후 풀어봅니다. - **기술면접 대비** + - 본인 문제 포함 총 12개의 문제를 스터디 시간에 풀게 됩니다. + 정답에 대한 간단한 부연 설명을 덧붙여주면 좋습니다. + - 문제는 스터디 시간 전까지 코어 멤버에게 따로 보냅니다. + - 공부하면서 멤버들과 함께 다루고 싶은 부분이 생긴다면 스터디 시간에 가져와 함께 토론하여 의견을 나눠도 좋습니다. + - 이 과정을 매주 개인 블로그에 포스팅합니다. + - 랜덤으로 한명이 gdsc 티스토리에 포스팅을 작성할 예정입니다. + +
+ +## 😎 개인 스터디 방법 가이드 + +
+매주 issue가 올라올 예정입니다. + +해당 주차별 이슈를 각자 발행하고, 본인의 branch(영문이름)에서 본인의 이름으로 디렉토리 생성 후 그 안에서 작업합니다. +
+매주 작업 내역을 issue에서 한눈에 볼 수 있도록 정리해주세요. + +각자 발행하는 issue명은 해당 주차에 해당하는 이슈명에 - [본인 이름]을 붙여주세요 + +
예시 +
+ +### 해당 주차에 맞게 이슈가 올라옵니다. + +![공지용 image1](https://user-images.githubusercontent.com/65845941/210167396-43018066-ebd7-41d3-a96e-415eae74ceaf.png) + +### 해당 이슈명에 맞게 개인의 이슈를 발행합니다. + +![공지용 image2](https://user-images.githubusercontent.com/65845941/210167398-085c1c90-dfd8-422b-889b-568aa5e7638d.png) + +`코어멤버가 발행한 이슈에 ' - [본인 이름] ' 형식을 추가해서 발행한 모습입니다.` + +![공지용 image2-1](https://user-images.githubusercontent.com/65845941/210167399-ec689a99-42bc-4f89-8ff3-1816d03a1a01.png) + +`이렇게 해당 주차 이슈에 본인이 발행한 이슈가 보여야합니다.` + +### 본인 이름으로 된 브랜치에서 해당 이슈명을 포함한 커밋으로 공부 내역을 기록합니다. + +![공지용 image3](https://user-images.githubusercontent.com/65845941/210167400-c6ea916b-623d-4e40-ae19-3edbe8a87da5.png) + +`자신이 발행한 이슈에 위와 같이 공부한 기록을 하셔야 합니다.` + +![공지용 image4](https://user-images.githubusercontent.com/65845941/210167402-5e7066cb-8e73-495f-8ecb-846d976a85d9.png) + +`이렇게 본인 영문이름으로 된 브랜치를 사용하셔야 합니다.` +`또한, 본인의 이름으로 된 디렉토리를 생성하고 그 안에서 진행하셔야 합니다.` + +
+ +
+
+ +### 📆 진행 일정 + +| 주차 | 주제 | +| ----- | --------------------------------- | +| 1주차 | 간단한 OT 및 진행방식에 관한 투표 | +| 2주차 | 2장 - TDD 시작 | +| 3주차 | 3장 - 테스트 코드 작성 순서 | +| 4주차 | 4장 - TDD / 기능 명세 / 설계 | +| 5주차 | 5장 - JUnit 5 기초 | +| 6주차 | 6장 - 테스트 코드의 구성 | +| 7주차 | 7장 - 대역 | +| 8주차 | 8장 - 테스트 가능한 설계 | +| 9주차 | 9장 - 테스트 범위와 종류 | diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/checksums/checksums.lock" "b/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/checksums/checksums.lock" new file mode 100644 index 0000000000000000000000000000000000000000..043b159ed751de72f518e46e6c427dffb330570d GIT binary patch literal 17 TcmZSnB$KmbPS##s1}FdkG#LaE literal 0 HcmV?d00001 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/dependencies-accessors/dependencies-accessors.lock" "b/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/dependencies-accessors/dependencies-accessors.lock" new file mode 100644 index 0000000000000000000000000000000000000000..fb39d19f0cfe57916d109d9e4bda6570983b91e4 GIT binary patch literal 17 TcmZQJ@>^baLL}-G0~7!NELa1n literal 0 HcmV?d00001 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/dependencies-accessors/gc.properties" "b/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/dependencies-accessors/gc.properties" new file mode 100644 index 0000000..e69de29 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/executionHistory/executionHistory.bin" "b/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/executionHistory/executionHistory.bin" new file mode 100644 index 0000000000000000000000000000000000000000..f9a8a38892545975c6f8cba5ab46bb9cd41d5793 GIT binary patch literal 129408 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 a^eq0z?-L3fS9O*E literal 0 HcmV?d00001 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/executionHistory/executionHistory.lock" "b/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/executionHistory/executionHistory.lock" new file mode 100644 index 0000000000000000000000000000000000000000..89f10294056414ab4bd007910d3ae18d4a2e383f GIT binary patch literal 17 UcmZR+t?=OI59@{q1_)RW06(b(k^lez literal 0 HcmV?d00001 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/fileChanges/last-build.bin" "b/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/fileChanges/last-build.bin" new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/fileHashes/fileHashes.bin" "b/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/fileHashes/fileHashes.bin" new file mode 100644 index 0000000000000000000000000000000000000000..e2deea5b2262dc6e7ad84f7058249882c897ca22 GIT binary patch literal 20197 zcmeI3c~BEq9LIAZA|R*{lwyIX$faf?C^a6SB80oj)uOa`a8$%n71RQShy{luK&o=6 zu~sUlEde=F3vE@PBUUgd9fxQK6rlowQ^5=AZr(nWgg@GU`bX#YX0qA&WWVpd-{i-(%RS{O*{q{Rd5qD|F{Fm9W z?Q&KPOvNNX6Z zqIe?a+Vv;5CJj|f5%=)LT(>B^;EJyKmx#M9#oSo$)ztEGaRK74Ow2j^ySE=3yYeB` zzt=eb$#0EAd=2(6g1Px^J5I>T95y;$up4u$x)o)dO0ydj=VNX&D_}4(foDvOJBs=8 zZcm-+!aO^~-G?w=z4CsZ=H8(eiq~WA=*6(K-Yg={GqQO+!hGX}*ieU8H)V*s6ksmM zaNxM#%cIUWH!4FSWNL`%)^5@ zexvbb-%$N%VIH|6jllWz87ri0G&KnU6XCrqP&==r`Dc0WbgtzyKHk z17H9QfB`T72EYIq00UqE41fVJ00zJS7ytuc01SWuFaQR?02lxRU;qq&0WbgtzyKHk z17H9QfB`T72L5{k%ZMS#2i?uckA7cpU%pH?`Hofpj+v}k&lb^W^drJc0pfef z#6;$TzOmzH@0v1m!VMo)`Sy^B*jv?MC_yKm9al+2dLOmXw6$Fj-}!Lq+CQU?DaYtt zx0_0wQ%|%#;gyP{&)3xN5y-#Iu3WB6$QvG`1fxqmVV+f(dn@J6jHG+VPv*2ZUnCQU zWsUwQ!6TnsSDDo#&A9t_oojcs4B1Gm6(NF&b#J17s_3-Ot{*xABVtX3 zt-lTs?_(%urH#7Re5yVx#z&RYi{cXEzL&}OcemS`k_ln&!x$=YNIh|TTUAKvwPeL5 z=K1i}X}Uz;q}}^oD8VA@QK`c)>yH_dn4bAti(|uhK^h-VOic4tPlzhYOBSvw$T)h0 z!J8*Jxqf1Tour;9`Q!rwu4BJ`bj8ILU%Y$0gG>VzScAg)Q(F*M6= zFVdLF^*JXnvZHsEzg8w>P0lExHOV#D+|}vOXO(hxH&3Q7vx@57gS0SELqxi9zOH@iEYWVmrI!WT+uSb)@ rhimr0dv^XA1K+FFr##WD8i_NKY%KDPCzU!TwJU4%PzGo$rQN>)N9I|? literal 0 HcmV?d00001 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/fileHashes/fileHashes.lock" "b/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/fileHashes/fileHashes.lock" new file mode 100644 index 0000000000000000000000000000000000000000..431c67a17a870037c2e70b23d79df9a138c1f0b1 GIT binary patch literal 17 VcmZSHwS8LUiw~F78Nh%^8vsM-1%dzo literal 0 HcmV?d00001 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/fileHashes/resourceHashesCache.bin" "b/\352\271\200\354\240\225\355\230\270/chap02/.gradle/7.6/fileHashes/resourceHashesCache.bin" new file mode 100644 index 0000000000000000000000000000000000000000..750ed067b58a9ce5982660337f7997747d799e02 GIT binary patch literal 19993 zcmeI3`!|$n9KZ)5xikzFN{N|>m^j*!%MdLyhRCI@RI+8Ul9a{Dr6QMP&_>i$uGu+~ zT5Tn_$~|Wk<(^#9hN7gKtTp?-&vtg+{(wDuzH`p-p3i*F_j%sW%x^P~6^XQnJcB<- zUmi+dF5wCaKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02KJY6mXfnk$Kq7 zEYcMfT+IK8M54>gUg$>6Z#R|T)ZN2gW=W&(4~{u071PWuyD@J23*yni{1&;S>s=UU zEXR%o#@UY$Z;Z{~_)4Yh@0uhMD**8}C!@{O>DnC3w{=9kQ;{Nj zElAED<2Lz-4?J^XC@|%x@pX?PKDy|zk7R|+ZhT!f;_p99jP$sV-@-WSBjTbj6}|Kt zYiRf!bHwLL|9aFyc8NR2ZGT5x%I(atu?r^O<6Iwc`5{UMUtY!^pP!02CHtsdvSk4q zpYMUVszt}xYnPez7-vf%uC8S>&E)q!#kgHH;u=MJjV(vidvN|7ajN~TYDspqHaPr0Fj?|^Y;E#fA@p202*chuPeafYi|>qB2sC%$eJ;u{X= zP^_&E?ZDT)hPX{(%+1`AN-oB2>Jhi)coh}JN8s-l+aGaOeB{ATHHHe9&vHPVZG76W zL8PMvpW})6=FhLF$G7)A#<<;1#9d3PIEI$3gBZ7!MSSbnoQU%s1ra#!K-^2NMk88M zMg-?mi2E7T=tQyuhB0mvjre}=#W^u%Cpb7CLHtn2r{`e{9y(*3`2unDpG2Co8hZ`? zLIEfM1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU@LwokIJ*hu*{8hVNj7*RlaV>N&1{&eH!wc@ZgLi?{oB}o z?f}m}M!Wj9_DZ$YR=p-fWAh&OzzLVn(yY!Wf#wAl!-)pdyF^PvdHw?{^1Go+dwH@% z!&*GHs&9{jq4+D_q%~7+_T+-_K13Kb^}S6#{ZkZ0hAvO@CDDjY8J4=(6SSPc-g^`FH6=ltp{$Pm_K$*!nHeP~Y>NSn}i$%AuU@$>?_zc`Y9G-^bRTJb za(!27>JP!$&ZpK0J`zGRSVLhdein4~wgnR5^V0YUL}TTH6uKy5ZPe|3M(3CE{l*cZhjxxnits~ZgQwl<>G_gH<0^Xh+=T~zZ+gA*H<@1rhWtsZ@=c$fcdS&H% zo{9*5Q7<&ZA})+4=4A3sdYz==!8N|+L}SY%T5(_WN6D(nkp7R&dTm6b??RTCYS@bC zI?;6RX6}tLq7mgm>sd&CpeYej;4M+WrxOjw;M7~_c6|3wmTbL>EY#N5sjZk9W0yPbk6zhSyvq=|Ci- z_izPe$(2N-MO&>q+`WQ2qU7sfYA&NoG~6y9ewS_f=|Irvr8l7&mncNzQ1TcfQG5Mb z*HIp=-nhS#XtX`cmcRP72W|G?u*ixI0nH^4N{~Xtx)FQ!7GE&sSyU TYb!WYwm51l6~DN%L}2^{a7o_Gk^i3KLAC<1@8a= literal 0 HcmV?d00001 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.gradle/buildOutputCleanup/cache.properties" "b/\352\271\200\354\240\225\355\230\270/chap02/.gradle/buildOutputCleanup/cache.properties" new file mode 100644 index 0000000..256d788 --- /dev/null +++ "b/\352\271\200\354\240\225\355\230\270/chap02/.gradle/buildOutputCleanup/cache.properties" @@ -0,0 +1,2 @@ +#Thu Jan 05 19:37:43 KST 2023 +gradle.version=7.6 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.gradle/buildOutputCleanup/outputFiles.bin" "b/\352\271\200\354\240\225\355\230\270/chap02/.gradle/buildOutputCleanup/outputFiles.bin" new file mode 100644 index 0000000000000000000000000000000000000000..cfce88c6966883593ae4e398b71db0cc2c12a86c GIT binary patch literal 19127 zcmeI%T}V@L7{~FmtlYG87it{RIQ|q|cRadxQSUhuPN$;*UTECn7 z#kkF{#~Nz=wEjN#%Pw!BvZpGJ`cdw-J&&@F%Oq0jX70DH{@nP$d83c!w{gEcFxi)x zG{)kY+ygZL$#0lQ@2y^Q>Kr3T6oSNcWJTztIqJUmFDDdkF1kLn4TQVr8y?<@J!{!)^*tP8-9?p`VIFLw)*iYqhgHKcX3Z>UgL-=|FxBR6ZgcXZil1ibPDwZ z?nxCkdrtcyHT44SO3C~0gF~{VV%Hqxo?KfrQtt5Z``y7k&06D(_JFTTt)Z8_H%5TAm*;4=j literal 0 HcmV?d00001 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.gradle/file-system.probe" "b/\352\271\200\354\240\225\355\230\270/chap02/.gradle/file-system.probe" new file mode 100644 index 0000000000000000000000000000000000000000..e04d154faaba8576f98bf9e00367b353533bee23 GIT binary patch literal 8 PcmZQzU~Fx=ylWl+2|5Eb literal 0 HcmV?d00001 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.gradle/vcs-1/gc.properties" "b/\352\271\200\354\240\225\355\230\270/chap02/.gradle/vcs-1/gc.properties" new file mode 100644 index 0000000..e69de29 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.idea/compiler.xml" "b/\352\271\200\354\240\225\355\230\270/chap02/.idea/compiler.xml" new file mode 100644 index 0000000..b589d56 --- /dev/null +++ "b/\352\271\200\354\240\225\355\230\270/chap02/.idea/compiler.xml" @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.idea/gradle.xml" "b/\352\271\200\354\240\225\355\230\270/chap02/.idea/gradle.xml" new file mode 100644 index 0000000..611e7c8 --- /dev/null +++ "b/\352\271\200\354\240\225\355\230\270/chap02/.idea/gradle.xml" @@ -0,0 +1,17 @@ + + + + + + + \ No newline at end of file diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.idea/jarRepositories.xml" "b/\352\271\200\354\240\225\355\230\270/chap02/.idea/jarRepositories.xml" new file mode 100644 index 0000000..fdc392f --- /dev/null +++ "b/\352\271\200\354\240\225\355\230\270/chap02/.idea/jarRepositories.xml" @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.idea/misc.xml" "b/\352\271\200\354\240\225\355\230\270/chap02/.idea/misc.xml" new file mode 100644 index 0000000..365df8d --- /dev/null +++ "b/\352\271\200\354\240\225\355\230\270/chap02/.idea/misc.xml" @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.idea/uiDesigner.xml" "b/\352\271\200\354\240\225\355\230\270/chap02/.idea/uiDesigner.xml" new file mode 100644 index 0000000..2b63946 --- /dev/null +++ "b/\352\271\200\354\240\225\355\230\270/chap02/.idea/uiDesigner.xml" @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.idea/vcs.xml" "b/\352\271\200\354\240\225\355\230\270/chap02/.idea/vcs.xml" new file mode 100644 index 0000000..b2bdec2 --- /dev/null +++ "b/\352\271\200\354\240\225\355\230\270/chap02/.idea/vcs.xml" @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/.idea/workspace.xml" "b/\352\271\200\354\240\225\355\230\270/chap02/.idea/workspace.xml" new file mode 100644 index 0000000..89de9ea --- /dev/null +++ "b/\352\271\200\354\240\225\355\230\270/chap02/.idea/workspace.xml" @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Generated by +Gradle 7.6 at Jan 6, 2023, 5:58:55 AM

+ + + + diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/css/base-style.css" "b/\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/css/base-style.css" new file mode 100644 index 0000000..4afa73e --- /dev/null +++ "b/\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/css/base-style.css" @@ -0,0 +1,179 @@ + +body { + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 12pt; +} + +body, a, a:visited { + color: #303030; +} + +#content { + padding-left: 50px; + padding-right: 50px; + padding-top: 30px; + padding-bottom: 30px; +} + +#content h1 { + font-size: 160%; + margin-bottom: 10px; +} + +#footer { + margin-top: 100px; + font-size: 80%; + white-space: nowrap; +} + +#footer, #footer a { + color: #a0a0a0; +} + +#line-wrapping-toggle { + vertical-align: middle; +} + +#label-for-line-wrapping-toggle { + vertical-align: middle; +} + +ul { + margin-left: 0; +} + +h1, h2, h3 { + white-space: nowrap; +} + +h2 { + font-size: 120%; +} + +ul.tabLinks { + padding-left: 0; + padding-top: 10px; + padding-bottom: 10px; + overflow: auto; + min-width: 800px; + width: auto !important; + width: 800px; +} + +ul.tabLinks li { + float: left; + height: 100%; + list-style: none; + padding-left: 10px; + padding-right: 10px; + padding-top: 5px; + padding-bottom: 5px; + margin-bottom: 0; + -moz-border-radius: 7px; + border-radius: 7px; + margin-right: 25px; + border: solid 1px #d4d4d4; + background-color: #f0f0f0; +} + +ul.tabLinks li:hover { + background-color: #fafafa; +} + +ul.tabLinks li.selected { + background-color: #c5f0f5; + border-color: #c5f0f5; +} + +ul.tabLinks a { + font-size: 120%; + display: block; + outline: none; + text-decoration: none; + margin: 0; + padding: 0; +} + +ul.tabLinks li h2 { + margin: 0; + padding: 0; +} + +div.tab { +} + +div.selected { + display: block; +} + +div.deselected { + display: none; +} + +div.tab table { + min-width: 350px; + width: auto !important; + width: 350px; + border-collapse: collapse; +} + +div.tab th, div.tab table { + border-bottom: solid #d0d0d0 1px; +} + +div.tab th { + text-align: left; + white-space: nowrap; + padding-left: 6em; +} + +div.tab th:first-child { + padding-left: 0; +} + +div.tab td { + white-space: nowrap; + padding-left: 6em; + padding-top: 5px; + padding-bottom: 5px; +} + +div.tab td:first-child { + padding-left: 0; +} + +div.tab td.numeric, div.tab th.numeric { + text-align: right; +} + +span.code { + display: inline-block; + margin-top: 0em; + margin-bottom: 1em; +} + +span.code pre { + font-size: 11pt; + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; + margin: 0; + background-color: #f7f7f7; + border: solid 1px #d0d0d0; + min-width: 700px; + width: auto !important; + width: 700px; +} + +span.wrapped pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: break-all; +} + +label.hidden { + display: none; +} \ No newline at end of file diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/css/style.css" "b/\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/css/style.css" new file mode 100644 index 0000000..3dc4913 --- /dev/null +++ "b/\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/css/style.css" @@ -0,0 +1,84 @@ + +#summary { + margin-top: 30px; + margin-bottom: 40px; +} + +#summary table { + border-collapse: collapse; +} + +#summary td { + vertical-align: top; +} + +.breadcrumbs, .breadcrumbs a { + color: #606060; +} + +.infoBox { + width: 110px; + padding-top: 15px; + padding-bottom: 15px; + text-align: center; +} + +.infoBox p { + margin: 0; +} + +.counter, .percent { + font-size: 120%; + font-weight: bold; + margin-bottom: 8px; +} + +#duration { + width: 125px; +} + +#successRate, .summaryGroup { + border: solid 2px #d0d0d0; + -moz-border-radius: 10px; + border-radius: 10px; +} + +#successRate { + width: 140px; + margin-left: 35px; +} + +#successRate .percent { + font-size: 180%; +} + +.success, .success a { + color: #008000; +} + +div.success, #successRate.success { + background-color: #bbd9bb; + border-color: #008000; +} + +.failures, .failures a { + color: #b60808; +} + +.skipped, .skipped a { + color: #c09853; +} + +div.failures, #successRate.failures { + background-color: #ecdada; + border-color: #b60808; +} + +ul.linkList { + padding-left: 0; +} + +ul.linkList li { + list-style: none; + margin-bottom: 5px; +} diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/index.html" "b/\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/index.html" new file mode 100644 index 0000000..c1b605b --- /dev/null +++ "b/\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/index.html" @@ -0,0 +1,133 @@ + + + + + +Test results - Test Summary + + + + + +
+

Test Summary

+
+ + + + + +
+
+ + + + + + + +
+
+
9
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.042s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Packages

+ + + + + + + + + + + + + + + + + + + + + +
PackageTestsFailuresIgnoredDurationSuccess rate
+com.hou27.chap02 +9000.042s100%
+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+com.hou27.chap02.PasswordStrengthMeterTest +9000.042s100%
+
+
+ +
+ + diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/js/report.js" "b/\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/js/report.js" new file mode 100644 index 0000000..83bab4a --- /dev/null +++ "b/\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/js/report.js" @@ -0,0 +1,194 @@ +(function (window, document) { + "use strict"; + + var tabs = {}; + + function changeElementClass(element, classValue) { + if (element.getAttribute("className")) { + element.setAttribute("className", classValue); + } else { + element.setAttribute("class", classValue); + } + } + + function getClassAttribute(element) { + if (element.getAttribute("className")) { + return element.getAttribute("className"); + } else { + return element.getAttribute("class"); + } + } + + function addClass(element, classValue) { + changeElementClass(element, getClassAttribute(element) + " " + classValue); + } + + function removeClass(element, classValue) { + changeElementClass(element, getClassAttribute(element).replace(classValue, "")); + } + + function initTabs() { + var container = document.getElementById("tabs"); + + tabs.tabs = findTabs(container); + tabs.titles = findTitles(tabs.tabs); + tabs.headers = findHeaders(container); + tabs.select = select; + tabs.deselectAll = deselectAll; + tabs.select(0); + + return true; + } + + function getCheckBox() { + return document.getElementById("line-wrapping-toggle"); + } + + function getLabelForCheckBox() { + return document.getElementById("label-for-line-wrapping-toggle"); + } + + function findCodeBlocks() { + var spans = document.getElementById("tabs").getElementsByTagName("span"); + var codeBlocks = []; + for (var i = 0; i < spans.length; ++i) { + if (spans[i].className.indexOf("code") >= 0) { + codeBlocks.push(spans[i]); + } + } + return codeBlocks; + } + + function forAllCodeBlocks(operation) { + var codeBlocks = findCodeBlocks(); + + for (var i = 0; i < codeBlocks.length; ++i) { + operation(codeBlocks[i], "wrapped"); + } + } + + function toggleLineWrapping() { + var checkBox = getCheckBox(); + + if (checkBox.checked) { + forAllCodeBlocks(addClass); + } else { + forAllCodeBlocks(removeClass); + } + } + + function initControls() { + if (findCodeBlocks().length > 0) { + var checkBox = getCheckBox(); + var label = getLabelForCheckBox(); + + checkBox.onclick = toggleLineWrapping; + checkBox.checked = false; + + removeClass(label, "hidden"); + } + } + + function switchTab() { + var id = this.id.substr(1); + + for (var i = 0; i < tabs.tabs.length; i++) { + if (tabs.tabs[i].id === id) { + tabs.select(i); + break; + } + } + + return false; + } + + function select(i) { + this.deselectAll(); + + changeElementClass(this.tabs[i], "tab selected"); + changeElementClass(this.headers[i], "selected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var h2 = document.createElement("H2"); + + h2.appendChild(document.createTextNode(this.titles[i])); + this.headers[i].appendChild(h2); + } + + function deselectAll() { + for (var i = 0; i < this.tabs.length; i++) { + changeElementClass(this.tabs[i], "tab deselected"); + changeElementClass(this.headers[i], "deselected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var a = document.createElement("A"); + + a.setAttribute("id", "ltab" + i); + a.setAttribute("href", "#tab" + i); + a.onclick = switchTab; + a.appendChild(document.createTextNode(this.titles[i])); + + this.headers[i].appendChild(a); + } + } + + function findTabs(container) { + return findChildElements(container, "DIV", "tab"); + } + + function findHeaders(container) { + var owner = findChildElements(container, "UL", "tabLinks"); + return findChildElements(owner[0], "LI", null); + } + + function findTitles(tabs) { + var titles = []; + + for (var i = 0; i < tabs.length; i++) { + var tab = tabs[i]; + var header = findChildElements(tab, "H2", null)[0]; + + header.parentNode.removeChild(header); + + if (header.innerText) { + titles.push(header.innerText); + } else { + titles.push(header.textContent); + } + } + + return titles; + } + + function findChildElements(container, name, targetClass) { + var elements = []; + var children = container.childNodes; + + for (var i = 0; i < children.length; i++) { + var child = children.item(i); + + if (child.nodeType === 1 && child.nodeName === name) { + if (targetClass && child.className.indexOf(targetClass) < 0) { + continue; + } + + elements.push(child); + } + } + + return elements; + } + + // Entry point. + + window.onload = function() { + initTabs(); + initControls(); + }; +} (window, window.document)); \ No newline at end of file diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/packages/com.hou27.chap02.html" "b/\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/packages/com.hou27.chap02.html" new file mode 100644 index 0000000..323bab5 --- /dev/null +++ "b/\352\271\200\354\240\225\355\230\270/chap02/build/reports/tests/test/packages/com.hou27.chap02.html" @@ -0,0 +1,103 @@ + + + + + +Test results - Package com.hou27.chap02 + + + + + +
+

Package com.hou27.chap02

+ +
+ + + + + +
+
+ + + + + + + +
+
+
9
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.042s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Classes

+ + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+PasswordStrengthMeterTest +9000.042s100%
+
+
+ +
+ + diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/build/resources/main/application.yml" "b/\352\271\200\354\240\225\355\230\270/chap02/build/resources/main/application.yml" new file mode 100644 index 0000000..8b13789 --- /dev/null +++ "b/\352\271\200\354\240\225\355\230\270/chap02/build/resources/main/application.yml" @@ -0,0 +1 @@ + diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/build/test-results/test/TEST-com.hou27.chap02.PasswordStrengthMeterTest.xml" "b/\352\271\200\354\240\225\355\230\270/chap02/build/test-results/test/TEST-com.hou27.chap02.PasswordStrengthMeterTest.xml" new file mode 100644 index 0000000..52969fe --- /dev/null +++ "b/\352\271\200\354\240\225\355\230\270/chap02/build/test-results/test/TEST-com.hou27.chap02.PasswordStrengthMeterTest.xml" @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/build/test-results/test/binary/output.bin" "b/\352\271\200\354\240\225\355\230\270/chap02/build/test-results/test/binary/output.bin" new file mode 100644 index 0000000..e69de29 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/build/test-results/test/binary/output.bin.idx" "b/\352\271\200\354\240\225\355\230\270/chap02/build/test-results/test/binary/output.bin.idx" new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/build/test-results/test/binary/results.bin" "b/\352\271\200\354\240\225\355\230\270/chap02/build/test-results/test/binary/results.bin" new file mode 100644 index 0000000000000000000000000000000000000000..3a0611f8d614ee2f29b96a08cd733061d8b93d33 GIT binary patch literal 877 zcmZQ(WLlk^pR1RVUutBomzYz<9f)WFTW$iO-?uQVseGq0eu1mbDWyt2fc%oGhxoDvL-P#0ZcVB3a2 zG(!stQj3xki&IeplssK8^Zp#<*7Ck$K!k{u)opav`%THtMO!#Y*4n`wBe37|> zh%c8&X|a*_{2`i}swWy+)YrD#hmJNJHU@DQ$OTgR#aq*b)0>ROg-49v_UzuJ&A1|O ztoAsQ@yrBfBBR78Bc~)%t4YXdnVnQ9wz8D+Z3Qs-p~;B5nM5L=f&}m#-*jz&~?(@kbD6FE~AP^d!?XZFv({yG1v5QEKRR2ijN zh>y%%DzuZsoLt1;j&FX5ZzWhD6kAGYZ9FNyX4#8mjg(Zo8?)y;Q8SsnagOR-<9XUM z<|E!Pt4uEC+bux61Xe;QI&m1pODvP~#pVKa#LIydFz`LI)jhN!-gqw=b2%s4zd*K- z(O?!aiy0+NL|H?K=Ul)$8&RO0Bwr8j2}$yScw3~ve;srX2EXX7$vIkSRM zT8Vgp6yyR&`6_k*IhWq}L*CF4=_=Q(9rBu^VphMJS;J^CYZ>Krh$kO7vKH_VFOkH` z3V75;JY*tEO&cy9mKy7UZ+*NfzD2$F$mF?-I>ze_bs0To1EbF zBHlvaP%7q&xOCik)pPc?bxI$%Wcw{X;M=#0w_9}&Z?EA#WI3qIoWpGq^t-GXl?r=vdCIIZ90w0DnLU|#lL)rZU(3r4_LGD=p6hnavcmRTcS zmV9%tVkaTuWyhDwSd*YPn|?iL=vj1Mtzp6(pXIINY)lTRig)WyF-Xm= z>4}@itqqcd4Y)Lz|LjoX#7Ru-Hrg{%X2k)H4DqnFlSt)q5S~cD&O`UFT)S7|-ZX{j zcmA4a_4d63bC@~8=sP05GJ#ac7YUCFq)v#J3`_|=+g|9Hiy~`ix8IiADK$rp`hVW6u3`u<<10j501LqvVRh&|nW1 z4kBO=2p2TVDC`J+q#$^@d!X_)p5ikz~sbqqogPnaE84u+DLZ#$?6 zt2IOKsyEG^DqOyt-y4&CBm`yjxO94{nqm71Eou3btQ7S{ysS`E?<~6c9J)CSWzNHp z7hp*uKG zFeN7r`OqIM3^uM*m4kZ>0@?s zEHv*#`0ec@r%{p7yxZu8JLu+QR67M_?t-42IH|xonE5>*0Ig{-jX*4r4x;w(B@2?n zUS_OVn10LJXERTbjxrgn!Q2Oy{~#`x4zL+F`qkqg)z& zm&&o9v(WV8ku@QA&p$DKh;Dd<>SUq1GakcajzW1h5QzoMNxN#@n_h5lcf3m~ZwfYi#t7LY|okGy)~ii*O}6UGns$BcccV)X)LUZTwQT$op82h!2t-&Xy# zpzZpY3za{zTo!rcp~kOJqkL4S0A&h6>aU@rKzx`}gd%?b>@a*Yk)RmlFO}E{q;jV> zPz3i99R~FBAG>a#eAEuamAfy&w(G#R5|k-LnKIDEs&ZJB)gQSExHNY}XG+DoA=5_Y z=$tFKvG+&?YE+4uR-wkRXf=xX435XnQv=fj%)T9*?y!)>)7@@KblK8&gVwVLH{c6L zdeov!9dPsxy4Zq2z#he=FRk08^aNd8^YUS^(QD^}8|zVC18Vpl)ow%?OVGDL97^99 zer{@en1@BEhVkBSRoBQSbmQD+FjBEl{tv*=Avepm#um~i&5!SVB44#8s0C$OQDy}g z@06YU7JBDwop0rrVs?&SRlA+uz4@AU@58Y-HG;l|&02(&wxQeGQQiksrvqg^f|=b% zIh`=N1hzq`1B-E=Sf2iK35CSeYCaN+n{}qJFa<+Oevk1M=)HP4gSC@G2%tIC9&_QfExx1>5e5skWgUHwGazw1!@Ee{=A3B!QQuQw7Lr>8w-Ldr^n05!O$vtH zPYh7X3xiNWBpRISr|rS6T8Bo>mUU+o0~+dWys?cw7~_jEN`4psH|&T43A-P2{4u~q z3xOke%nF&*>(r88?V$r_at|zBvM2yE3B+_xW6T+h(GP;b!GXbO<(yy)@fj?#kRAd9 z2&9LFuvtv%xYleEkbfvXzI1ZO*48 z@&A{94Mv`COoqJe7H=7?+pg)8Gt1UG0%MMV-@K_-KOen$^qsO)o4{f#<*OKT4P&l@ z93o*rb2g%3amUV)6Ln_wxdT^EPU#{xAoe$~?NOM~P0X+njfQ19$k~~T(JqvJ;Itn=V=(3x#%zy;UJ$Rz9b{bk#mmLCrZ_gWL00cMBBmLQ!%X5a9s2|f zB0bo*#b6bQz=SzpOl$kC+!d&3LTMYmyMY|!FW%x9W$O`h?~Gn zp$4TZT7w+FZP8wFKiz&!m5<;~4yz|Ft#vsn?OZIrcEIZ5!HSokmOsZ#_Q>g-g&F%I z8~rjTH|pp-&p90R0%KlcOfKj(4?M|1E)=~2gEfN~Tw-a-rE|2lXFsZ1xhN;cQN5~T z(wcmXcN;4JGyd29D5JyoT{tAQ(S3B&#J!e(LM5OO(|e6+7h!-$MS}o9-_)O+s^#K+ z{oIV@qv*#zRmB+d24fbp_Or64ZK3lst=MoUz3SjvM}7&$l!EcYa>_w=mJ+EgUtR%P zgUwtZ7uo{i-qG}XHh$EpEGGH(!_}STL3+# zW_Gy#g|3B%uFoGLIPX2A7GspP>4^nSMFIYcxfd7I=WPwWGNKOCdxx3UV@w0aYCJiPg^EgCc_YR&VN5eH;By4wUnRdDIop|{wd+o}- zEtp;_rjvuV!6<)@2%y+~OMd;--*$e^+?vRb!>c$d?U>;QkPl48`3O>H<9Y*nrcz)o zwzhBUJ&xtqfekaZc4EvY76-b39Wlf*hXsyY+E!y%R)O#F6T>scnXNmAuI$G2dN9>E zi~|du?b6_MDADlO_?Is{?(Us;;WNg3!I-bG&~GpVUuFkZW&=x}#(Pe!p=Ty##KyWE z$}TNdpOyp9O?hX(^p8`F;(7R_qS=Z@FxU8A7V?1~$?;fAs3DIB7E zxwXW?9Y?(R?75V6aU~b+Lmw*MtyIqKoU-;Ow#Nh4@x*yvxX#uhRG|%{#}}NbE{j5s zub%ZpesKKLP;Z>^!6CTz#SwRq1{`dh>b695ChRPp)b`-q=|@-N{BRwAd_w@v1mXbR zr*XvRALtfHIcIQyU9c&kc@Qk(52C{&j(vUXg3f}RzEGg26{c(8R&ON@HiKRKKo3GV2P? zM6go13ZFvC0%qpY9v>fcD*Y8~lrY-FKyYvV@M}189cLnO<_3?WuV z4vQ>UL_=}#d@3}jk7UpIJEnic8|MZLo2{iUjloS~&|5J2pEDGFc&hHZqq~Pz%u_$O zWkGnl&j3m%PYN9+NLRIU^`EuW<9peXSll=c-yV;vR-&8)7@7}9F~HL|DDA*)zAM*M z%W`awYCql`|05AMNy3e8n6<|^bCmyUK(yMr^yIFo`iN_TO@ zS2!3Ju>nRZ{?CzG1Yyje_3=Xvi-g}t&oR!)Q{SogX5Kxp15jlpFQDMus8K_Ymw(eS z@?O!KhU=!|IvF_cKCYUHn^a+P4vRYvz^cTMf}q!*#Hy|fyk9MUaDl6FUOeL=4z9$d zO=DW7><#{5+A1pxxVcur;1O$LTzcI`|CtLPIhp=ietcR8wv1K@e)**8L)*B4bTtKXdvVREw&ybSF_>8w%5Qu<#>)>TgoudljR z9r7AC0ni6Im_x))zt^b>Yuj_FK44w>rm>aVZx!Rr8=N@~X1y(9$>v{Ue}?g%3>!~G zyf|KhuP?>dcc5jkOo5#M!YZ-3Q#t$NPhtqpUMW$5iXRotf+s0#JvuYk;bR4ESc#k1 z7vTo9pI`f2>nDQQ35Mv&_8Oddi^D++fH6H+IwmyR@KoisPv0-E@U^SOjqC9B?{IB9Hg>EB zum6)};!A1GlFjQ%-1>gzbo?4hN{i42oOzEks*RuwE2%_s7?|X@*IZWVT~hWqQgUI# zVx#9xIMd8JI!v_DQ@d)@)E!~RcDx=v!xB|(!I=$Q+EB0YNz%%@qiMagCIf29+*aJQ z4cD{3gTWrZotCC|C$=@#by|D=9hfz~9gvetXVmq(8E<%XAXmfe>8|-&RUdGs1BcE0 zBN#fkG9*ygvn7|dI<2)%m0R{c)5~ICV7c?tPFyDd55nocM^|e8-s7d{sCfAP>jx9^ zKjC^^IB#D!Xiy~N%X+}sLG--mecyvibRxC4t;P4QD8N7C%opJGD}aER%$iHHIk3&g zO2WD(?^A1bOVIj;YtQ%&7zSA(z{h>EFGn>H@22Vt^A_P%&*t>vIzMpjpSaG9B6L20 zbkO*=j!6|EPuy0d?K)P}l+uSA^y9`V12DIP_$@{cZA|ZLey4XZ{(z!G-_SzaUpVs{ zXY`#3$fC)eL=X{tbe_2OTf$Pq!>@|%o+!Iyx)6r0gpnIzVt)!cv8HI@P9W}VMlTzs zKNuuA-`=9XuTCiR4D^G%fv8|_CeLL9L z@Tlh7MxUlpscBvW;|&cy1mX$)F^C%OqgKBrp z_x!q}AKX}&$D>3?(}5>wo@)$^BdV^x%d0Tw4<&`O!|n7D}-?c z4v5~m@o(qxK~Fpov_CSvd{tfq!MjT6ZvDjqOyr{l`;LHdPbbu$G(tRke;*IjwnOl$C$WJGXGl=c?36o3$T%Gd(ScP1b*vbt92HJVI z#_vxYm3m?L$!%P{fxjOT%p-zX!G_uqeaF9vCNE2m7_m4S9otZqMVLG$bg~JZCj|49 zfW62GaxcMH2u4qDy1es-qr;0k%E!-qYetfv5s<&)((Q}PG{t8*YFEDmo*ilbcw`P? z{G8BzK^Qec;PDccVIc&xSwMdo;@Z@b^!Qj#d~{^MZ`b*`1e3=qmWe#RCxlj&g5jGT&Y_vVbS$@|iuooS0y#Flp zHDP>_H5-S4(v;8zUvhZc5>x!Cdl&rD%1Om2{^oS>6B@Y z9iPt}u_boAEW}0SRQwx)DIu6rf>A01TN2oqu@c&#&^Gk=ITf3e^*_Jn9*GzzCv++Z z(?+xg1*{CO_+DZjF@MPIu!1R9eO|1qB#h5u)hNBKtB`ksBksFUba6z4cW+7+p<7Mx zY6zpPZ&}N7VxtQMW4i2@_{L6^cM=SiJhd(Y4iXi!+p3 z^DN6p^}Qzy8(CxI8_>fR9=PWhZ#8LulKF(<%&r4XgmEXnfd0UnnDTCBKiR+5e}vaj z?`j%|vc2&Ri*EMZIZ zTIKen{BMnkI*rCBC95ZJx(WRrLiaPFJ$>32a34o=0bBw}#9vv#4T2RtQ$eJ=sEg;Y z?xsR1FJEi>H-h;Ndc%65JA2Jz!IxTaX~#65L-!w-j~(kj%DQ~4#f~2Y^OJy+&r&XZ zK2ZC?@8>Tf?pS7L{xx9W&_|f`6D9-1#$&$#?ZkEt^526FB;ebg$LP+#%6E3YcA7;$ z+*ghkd9*u|kelSvCfd9kb-w-s@!#zil)R4Da3Qz9ARwoqRYO1Cx^lTrmh*-CYoivW zxsv*Br1mLta|h~9LSD*NV3CTR!sv)Sm@Jx@~Gi!|^;y~)AD zDvRlCvW#9b#n5wFzJFcy;jG{$=Zs1plJO-OOFt4h4R=z5c~HTip8>Qj{Cnnf`(+=; zp6YVGzfjSj$)7Z;#sWwX-rx-yomO;Y`^A|rlKno%548!|H8hZ9PLs@vGbH3l*whu5 zo}IYBFrsqkkxBQDHrTwp*%L&&D_4+?{X-p-Exz0jC-p9px|c}P%Os>x;LM$aLnLc>_6{<|EqBRpa&<{*Z4vJZ z2}f=&-F)*A_gak1v%l&uv%`fa7e$Z|x!w_vha07#i415>T=hsBy)`fJh%=M zTRMmbZ$=% zlO2K+4eGI$LM$w{Qm0L;tk#!Y2~{@Ky?eP}kD_%9$=o90NEr*4y?hzCdb4yl0c>+iA-Q& zOh;Zf5k_}}Z5rtr_Es^j*5WqF+##9c$)Hg)2TPD2mu_3}gfjiT<>A9yvBlI&oy936 zbC-kwAA(BHVo^(Lndu72sTJY!AjkStlDWq=rGX6KygYbU$fZk-g6W{CYj-ec`+ zYEYX_G8teK_hA(R_KJ{8*IxVj?)EMVs%Eu$Nq&f0nnc$a^SM1hn&LZKYt0@CYi-~zy@rbb`ZHGDO+mh9K4=5 z`bTLsIcB%^E0UK_8WfPmTTgsrLyN7i8*jH3g_!&2wW-;DibU+_{)ML!Ytjlz-{`3= z&7A$iv5+);O>QqD4Ks;iSgC_ZE`&Xn1n9G)yQ9ATdRB7Z;>_8N@lUSUuP%Yf!3^~) z|Gr;g>3R4`S=5P@*GfxCri_HcNI8iFviF<+xt8M6WpN9X$F7(e=i+!h>ch(d*9vk& zCCOBgOf{IC4gU~abMX&wYJll~?lLUs50$^}p4WYTW=GJNSsKi&fwv@6OTw-I$T}zW z*n|^XGC%D&^}FL)iNU=(Qs*;q1*09Q^9D(ZZSPg+tEcA=j9BuHWaW}g{TRz@#QJVdA#ZA3mjU>~=@&Qe=(qE2Rt`(Ny z*B$2P=fBCa8T1H9bZD)Wa@m>H4p!cjPmQSV_WD3F9jv>4WW@~E3tYOp^V|1JqD?a=TwOiVWE66xlQjH9 zs(!;c5Wy=Ka>`%t&MUg6rE>3MT*reh(zu&kpA1K|1vJj6-?y1uwWqw(BeJ5{TcL;4 z`%G$oAq|Q!Z*p*MjVq(=L&K&%xfJ;`p>p5Fy;US_G;pA^VFMo6aek{F_vDrU2PpD2U+)kzK~A$Lam!E__T(baL8W$IHKpwshPWL zq)O|eXC!EPQxF>XPyl>ZGP>x)8ZW1*Q{N>UXxx^i2S)f(j2}BBSlQM3F+=)xO(gN% zCo@M~c&6)585qH-&h^`ePh97WgJr_XM;uq}Z|;PnV>s<7+4Md>%AnEBf@ z-}|j`*}A(iS35JDGQLO|9lHc_mrB@&FCsR=Zr%GRTA}ptR@Ia(W%#@^mnr571)Biy z`tyKFUSD8`mQd+MnizX{HiBZVQjFjlg#^H30`{hd4F*{l|GfV5@kNTwcMonebD8Kn zyzn~3i=+&0P&z-*kJunQ)kfC6P@SM1G;CniH-cwXA4QqWDZ*)f^QO0D>VgVQ$=H=Q zUEOnTQcN@jrW!*bKJZq+g3ZCQ;8&y(tGz1(QCX7y^>@$kC5a^c_-@|^g^I3`PY&5F zcrb38)kEutW{=tIws#%TZbS_O#|0~ZL} zt&UD?MjhwnZ;p3)Mw*8tQOs?MS$qd{G5EfO4f)sN$e*0L1sP@nh;PeZ};NY7IJ@CivZ_m`n=xB2ZrLX*{>| zerW(aUuxBC4XJ)W=~ZD6h#X4^Yl^CBSyw6lQ1`3X{=-8G^0i#rVeVFSJMKWTqKorI z%sk}eBUTG=UAw$w$dtUS`d6eqhx!>6l|`+8OqrgB6izu#$0mGKE7-5|YvuN-IgwiW z-Psh}Z#|(PT?S8I=r+m9Ss4zI{jqz~CO_BgseMW@&p;2@9g0gwFAFbJ|H))576cU} zt#0_8Lm5_M26SxSv@;`=>rCeU=4@(-?L70Gf}od6_tq!Q$(a{t^RdA+a@m_K>IKET zWKFaewDjP(leOE$wJPzVfmp2@rD3@glSeTtUcoAa8q49lRa@Kbd2=^*)M0#G{{+>G z)AK3a2DAV?MI>Oeru2dMPX!SLpS+!{><;-2Y51#9HgBS1tLTccIKR z<>66{B8n-dV7GY#pYsP_Q2@w9t?N;>s+HGQ=X$qZo`9B65KFsZ^iS`Tb8nNMPrSYQ zX^7kNjPz0f5P+>b;OCw=>5bD)PQw1Q2XD(?4>c{Pv@591UJzraqICY3A4)6jKZCiq?U3*;s->K4qL|<~_f1Yw5?a!s!|O)9nPUIsMw4nI)Zjr_av2Hj7g> zIfbC#H$Qr%od0-(N`1J(=e`*l?ZF)Y6tk#{-CEcuS}Zu7-93q0U$zV` zOeVj*l=bO;H^uZoH|#TXvV{B-JpJR+^2u4p?hGp&wr11O(1A6AV*{7T=15cx-U-e{bWnt-!=B>dWD|vK zhN=_-*#%?|Vgr9ghy?y-;mA=GA$2a`;Zze94W~7DQ;3$}NGQrEkqu-H_5y1po5^CV1p7cXVx8D$>?`>l>%)Fy zeWW)YjECSJR4DFCUBNF?5!4<09{v!&Nj<`EQSsDsJb^046R9Ms8n43dQ#JS_>LJyD zKc$-R7W_GQXD;;tZ^sL%&v+5_3-=_vh)U`$RZRsD@2CsJCE_yCOkE>x5S>&v^@Tz% z1K+rc2VRIFF;K)}aCZ#34JA@B4pXVcdr;&d{6bZbCoIXtk-5;T3GKy^XMgJRSQ1Af z6)deHkb0JOqe#=A=IuzTtpwhu{dt3_BC%9agLk3KpLdK5L@w+rMwV*YsHs@AQGxnM z5^=>*gz^Blx{PO0tjG}$wx$JBi6{H;W+ItD{GbAD0x7T!DxgrR2Yp3?Lx!^ri8ykZ zrCAhm4M$S`cYWs84BQy9M#EkgGXLBa{?}q-*w4WV2S7fQ2cC(?k^Sg5Jc2-C*%nw* zB1^$;(^v|E$N~y7I!7Q+*&0P8m#s))WmO0z;uQ!ug1Am0ui1KER+S}eDHn$x6;J}R zLuy$H3TkC(H->bwJ(>s)0{H|bvYVAs0BaB5*bXX4FH8Dxq>rT_ITr%@SKuH@4=Aw$ z@?|NQ(jI6KJ;#thwg;F;FiTaM3FI7G$OH>VuCQI<(+HLVN6{<=ON(cz2uTEjc~YRS zWVS*Dxyx3R;I255&Q<_JSuD*%ksP+A5OW1)+0p=8SI(AlS)iz7d!5CQDwcv(X0nUF zfFbYUH%CYEi_FB+saiY@16ek)eXB@rT3#A;H{wz=1%z@oeo}Xmk`Ng*SgBwynfnQISg4(@V+73x^p!i$>eIx)%m?D^C zAluYMB4=0%p9Hg%l`c!6<8`3m`yi|+wnhy}WEqJkdvP@+jzVt#FCYKwq44(nzZgko zNAbgvG+gc9}?u-F;mcTE- zViyuAXWLy#q@6XW%P5ip6k|DUfQJ7c_xDCtAORH81Qh=h9U-ky#)3!{TS5Q%J!`5iEG(vX z%;V#?o_}ZrzU9_}dK3(@4h3O`u(7vWDn4hJF8sGI#~UL$qN1@_+TC6+@X{3>IxneP z#qxS#>nX2Y)zQyu^8V)f3tqUUBaQ(AB?$9!(_l!v>S3gYAq=Y+&~Y6%7?i5xxfa7< zGF3P-Pt3Gqy0vua;K-^5ISr$@sbWmWIBwAuegQV!W`jnbm`>9wy=KTJySg_V(kItd zAf0Ttmg}Ct2?YOyj!8_BZh70agC`8b-Bg{sa{l|c|SYk4eyWy=r7o=Rctm6EPu~DaHz8Umy4u&P?#ZJ@T#U$Hhr5jb?9W* zY!GYwPhA*d+g4Eb4tGqSFoEUMB63i-DQF3cluERF``QUP&vs3RA!^t)*9@9I@k+^5 znaq^0IvpLeU4yvV`5vzRBu5hsujyBS$aV8Od9BG6Eeu*OQ(Bf?N z93vNC93Q%bU!aQKMj?Ym${x_8Fl63wD47hBAj?pc=t!NN8#}}85A^q6Oe&W67J?}n zLN*3Gq-R;Qti&|#J{rka%0i|$Fs^<9t4J+KMn!HxH7ZJrG_8bN=rj1OFK-#aBdl~N z_B#~0&%_X)md=nkg(Q+YvPe{s%qSw!L~=JQlD=~!PZ8tGvRN+-3ti literal 0 HcmV?d00001 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/build/tmp/compileTestJava/compileTransaction/stash-dir/PasswordStrengthMeter.class.uniqueId2" "b/\352\271\200\354\240\225\355\230\270/chap02/build/tmp/compileTestJava/compileTransaction/stash-dir/PasswordStrengthMeter.class.uniqueId2" new file mode 100644 index 0000000000000000000000000000000000000000..62964e23774d9d358a98cbb66ef578e155faacb4 GIT binary patch literal 1150 zcmaizOH zz=a!jx_41o;EW5GF8oZ6^XdCte2Cq81B_oKC1X)2C%5UHk770acE4AbSl^1O^; z#3aNOT*76BWZ#H2-PSDzxvtx*Oh;C1v9l7xK+Wdb{u)1UQ6ogqFn8Cv z#T^97BG=4AOVd{k(cj3Q7sesZisPd*7^d4S9xtc`1n8ZmU5-{pt3UM#>?0W-a>4m5 zq;q5|JppcFo^}kkaGO*j_^tRsXicZTLQbDRI)ZeJfo_WIi-m;$o!DOKCIXI;=pN&0 zm*ifj#1x&eC=`Z-A;^ePp%Dzw1scROd1mOh5alO&CEW5<40mvsFk*;f0rv=DkyIi0 z!rt!~WI^1gt)G!fG($Jvg?;0~s@?+OO+|w55qRxk>1gr<>XB>TIJFZWDE>TY+{qTE pe023G?;h;$rDVmu>NPf1mm)I*9h(jXkpaQHkZL*Bt%`U!||_2eN+L}^ zRy}RfX=nNY`k^}6lN3y*Hh))%r~uWzGL;*ck<1S)>~cAA8U^Dvt_qVU7MS2 zw{yf@ZYL2(G=Wj5aeSs?4C4&B>xI_1L&`V00>iLazFt&8C{75aG{eqf`KlJmOE=qv zrEm~2zQD~mCRKciuNX3x-OgY1sRQ)v>6A}i>*@KT<8a&6Ez@C8sd!o({?ykDS}qI= z`%Nqir4sBc)fG%LjIOP36rb!L9ByuHCoqezDo^xAx-cxa3c*aYWda+zOP_W7X1?vovOh&;bgQA@`Tb$quwiy!M>UF!Li|}0) z--__q*RzQESPtxzjgj!c!F9v0BHPt$DLfnzLQb zU8iUm`?i=iU2D`j+-y*sWwsfnPWq;+cX?fRbjr7AnwF~tgE(834{MO#sz0KvU zd|wT$78Y^^dF=D@!W4nF26&nvU2Yae13%*BQXIKx9}K&1TN=? z1UL%DA)a~?<9LP)ArmD2Jy}td$UhMw2hc0=drq%>?cJb`WG+2*iJ5oEUdj3uqzE)I zR6#P3d_f%1jj~5Pk`ceT#Dau)lZca{#EOiVlM|5Qbydm#EzuF%S2oW sC7#HL59GvEBCdrJPi4f1a^e;dw?m0F8F5ced_crP2$A6xjcWw;4+JdgF8}}l literal 0 HcmV?d00001 diff --git "a/\352\271\200\354\240\225\355\230\270/chap02/build/tmp/compileTestJava/previous-compilation-data.bin" "b/\352\271\200\354\240\225\355\230\270/chap02/build/tmp/compileTestJava/previous-compilation-data.bin" new file mode 100644 index 0000000000000000000000000000000000000000..be5e73649c6bdbe00af2a4f165597c4e6f5ea747 GIT binary patch literal 16211 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 KSO@>%-~R!7M02kI literal 0 HcmV?d00001