λͺ©λ‘λΆλ₯ μ 체보기 (124)
DevLog πΆ
π± λ€μ΄κ°κΈ° μ μ§λ ν¬μ€ν μμλ νλ‘ν μ½ μ€νμμμ λ°μ΄ν° μ‘/μμ λ° λ§μ κ³Όμ μ λν΄μ μμ보μλ€. μ΄λ² ν¬μ€ν μμλ TCP / IPμμ ν¨ν·μ μ΄λ»κ² μ²λ¦¬νκ³ LAN μ΄λν°λ‘ μ΄λ»κ² μ‘μ λλμ§ μμ보μ. κ·Έλ¦¬κ³ κ°λ¨νκ² UDPμμμ μ‘,μμ λμμ μμ보μ! π± ν¨ν·μ μ΄λ»κ² ꡬμ±λμ΄ μμκΉ? ν¨ν·μ ν¬κ² ν€λμ λ°μ΄ν°λ‘ ꡬμ±λλ€. ν€λμλ μμ μ²λ₯Ό λνλ΄λ μ£Όμ κ°μ μ μ΄ μ λ³΄κ° λ€μ΄μμΌλ©°, λ°μ΄ν°μλ μ€μ λ‘ μ΄λ°λλ λ°μ΄ν°κ° λ€μ΄μλ€. μμ±λ ν¨ν·μ μ€κ³ μ₯μΉλ‘ λμ°©νκ³ , μ€κ³ μ₯μΉλ ν€λ μ 보λ₯Ό λ°νμΌλ‘ ν¨ν·μ λͺ©μ μ§λ₯Ό νλ¨νλ€. μ΄λ, μ€κ³ μ₯μΉ λ΄μλ μ΄λ μμ μ²κ° μ΄λμ μλμ§μ λν΄ κΈ°λ‘λ νκ° μ‘΄μ¬νλ©°, ν΄λΉ νλ₯Ό λ°νμΌλ‘ ν¨ν·μ λͺ©μ μ§λ₯Ό νλ¨νλ€. μ¬λ¬ κ°μ μ€κ³ μ₯μΉλ₯Ό κ±°μ³μ ν¨..
π± ν°λ―Έλμμ μλ° λ²μ λ°κΎΈκΈ° π¬ μ€μΉλμ΄ μλ λͺ¨λ μλ° λ²μ (μμΉ) νμΈ /usr/libexec/java_home -V π¬ JAVA_HOME λ³κ²½νκΈ° vim ~/.bash_profile μμμ νμΈν μλ° λ²μ λ°λΌμ JAVA_HOME λ³κ²½ν΄μ£ΌκΈ° JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME export PATH π¬ μ λ°μ΄νΈλ μ¬ν μ μ© source ~/.bash_profile βοΈ λ§μ½, zsh μμ μ¬μ©νκ³ μλ€λ©΄ νκ²½ μ€μ μ λ³΄κ° λ§μμμ§κΈ° λλ¬Έμ μ¬κΈ°μ κΌ λ³κ²½ν΄μ€μΌ νλ€. vi ~/.zshrc # Path to your oh-my-zs..
π± λ€μ΄κ°κΈ° μ ν μ½ν‘μμ μ§νν μΈμ¦κ³Ό μΈκ° κ΄λ ¨ μλ£λ€μ λ°νμΌλ‘ κΈμ μμ±νμμ΅λλ€ :D π± μΈμ¦ (Authentication) 보νΈλ 리μμ€μ μ κ·Όνλ κ²μ νμ©νκΈ° μ΄μ μ, λ±λ‘λ μ μ μ μ μμ μ μ¦νλ κ³Όμ μ΄λ€. μλ³ κ°λ₯ν μ 보λ₯Ό λ°νμΌλ‘, μλΉμ€μ λ±λ‘λ μ μ μ μ μμ μ μ¦νλ κ³Όμ ! ex) μ΄λ€ μ¬μ΄νΈμμ κΈμ μμ±νκΈ° μν΄μλ ν΄λΉ μ¬μ΄νΈμ νμμ΄μ΄μΌ νλ€. 'λ‘κ·ΈμΈνμ§ μμ νμ'μ κ²½μ° κΈμ μμ±ν μ μμΌλ©°, ν΄λΉ νμμ λ‘κ·ΈμΈ μ¬λΆλ₯Ό νμΈνλ κ³Όμ μ΄ 'μΈμ¦'μ΄λ€. π± μΈκ° (Authorization) μμ²λ 리μμ€μ μ κ·Όν μ μλ κΆνμ΄ μλ μΈμ¦λ μ μ μΈμ§ μ μ¦νλ κ³Όμ μ΄λ€. ex) λ‘κ·ΈμΈκΉμ§λ μλ£νλλ°, ν΄λΉ μ¬μ©μλ κ·Έ μ¬μ©μκ° μμ±ν κΈλ§ μ κ±°νκ±°λ μμ μ΄ κ°λ₯νλ€. ..
βοΈ μν , μ± μ, νλ ₯ (κΈ°μ΅μμ μνμ‘κ² μ§λ§) 1μ₯μμ μΈκΈνμλ μμ λ₯Ό λ€μ κ°μ Έμ보μ. μλλ₯μ΄ μΉ΄νμμ 컀νΌλ₯Ό μ£Όλ¬ΈνκΈ°κΉμ§ λ€μκ³Ό κ°μ μμ²κ³Ό μλ΅μ΄ μ΄λ£¨μ΄μ§λ€. 1. μλλ₯μ μλ°λ₯μκ² μ»€νΌλ₯Ό μμ²νλ€. 2. μλ°λ₯μ μ °νλ₯μκ² μ»€νΌλ₯Ό λ§λ€ κ²μ μμ²νλ€. 3. μμ²μ λ°μ μ °νλ₯μ 컀νΌλ₯Ό λ§λ€κΈ° μμνλ©΄μ μλ΅νλ€. μ΄λ μλλ₯μ μ»€νΌ μ£Όλ¬Έμ λν μλ΅μ΄κΈ°λ νλ€. 4. λ§λ 컀νΌλ₯Ό μλ°λ₯μ΄ κ±΄λ€λ°μ μλλ₯μκ² μλ΅νλ€. μ¬κΈ°μ μ °νλ₯μ΄ μ»€νΌλ₯Ό λ§λ€λΌλ μμ²μ λ°μ μ μλ μ΄μ κ° λ¬΄μμ΄μμκΉ? μ °νλ₯μ λ°λ¦¬μ€ν μ격μ¦μ΄ μκΈ° λλ¬Έμ 컀νΌλ₯Ό λ§λ€λΌλ μμ²μ λν΄ μ ν©νκ² λμν μ μμκΈ° λλ¬Έμ΄λ€. κ°μ²΄μ§ν₯ μΈκ³μμ μ΄λ€ κ°μ²΄κ° μ΄λ€ μμ²μ λλ΅ν μ μκ±°λ μ μ ν νλμ ν μλ¬΄κ° μλ κ²½..
π± λ¬Έμ μν© λ―Έμ μ§ννλ©΄μ gradleλ‘ λΉλνλ €κ³ νλ €κ³ λ€μκ³Ό κ°μ΄ μ§ννμλ€. ./gradlew clean build κ·Όλ° λ€μκ³Ό κ°μ μ€λ₯κ° λ°μνμλ€... java.lang.IllegalAccessError: class org.gradle.internal.compiler.java.ClassNameCollector (in unnamed module @0x757e40cf) cannot access class com.sun.tools.javac.code.Symbol$TypeSymbol (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.code to unnamed module @0x757e4..
μ λ² ν¬μ€ν μμλ νλ‘ν μ½ μ€ν λ°, μμμ μμΌ μμ±μ λν λΆλΆμ μμ보μμλ€. μ΄λ² ν¬μ€ν μμλ ꡬ체μ μΌλ‘ νλ‘ν μ½ μ€νμ λ°μ΄ν° μ‘μμ λ° λ§μ κ³Όμ μ λν΄μ μμλ³΄κ³ μ νλ€. βοΈ μμΌμ μ μνκΈ° μμΌμ λ§λ€λ©΄ μ ν리μΌμ΄μ (λΈλΌμ°μ )λ connect()λ₯Ό νΈμΆνκ³ , νλ‘ν μ½ μ€νμ λ³ΈμΈ μͺ½μ μμΌμ μλ² μΈ‘μ μ μνλ€. μ΄λλ·μ΄λ ν΅μ νμ μ κΈ°λ³Έμ μΌλ‘ νμ μΌμ΄λΈμ΄ μ°κ²°λμ΄ μκΈ° λλ¬Έμ, μΈμ λ μ§ μ νΈλ₯Ό λ³΄λΌ μ μμ΄μ λ°μ΄ν°λ₯Ό μ νΈλ‘λ§ λ³ννλ©΄ λλ€. νμ§λ§ λ§μ½ μμΌμ λ§λ λ€μμ μ ν리μΌμ΄μ μμ μ‘μ μλ’°κ° μ¨λ€λ©΄, νλ‘ν μ½ μ€νμ μ΄λ»κ² λ κΉ? μ°μ , κΈ°λ³Έμ μΌλ‘ μμΌμ μμ±ν λ€μμλ μ무κ²λ μκΈ° λλ¬Έμ ν΅μ μλλ λͺ¨λ₯Έλ€. κ·Έλμ μλ’°κ° μ¨λ€λ©΄ λ°μ΄ν°λ₯Ό μ΄λλ‘ λ³΄λ΄λ©΄ μ’μμ§λ μ ..
π± λ€μ΄κ°κΈ° μ μ€νλ§ λΉ λ±λ‘ κ³Όμ μ λν΄ μ¬λ¬ μ 보λ₯Ό μ°Ύμ보λ€κ°, inner classμ κ²½μ° λΉμΌλ‘ λ±λ‘λ μ μλ€λ κΈμ 보μλ€. λκ° λ±λ‘μ΄ λ κ² κ°μλ° μ λλ€κ³ ν΄μ μ§μ μ€νμ ν΄λ³΄μλ€ π€ βοΈ inner classμ static class μ°μ , λ κ°μ§μ λν κ°λ λΆν° μ λλ‘ μ‘κ³ κ°μΌ νλ€. νν λ΄λΆ ν΄λμ€λΌκ³ νλ€λ©΄, static ν€μλλ₯Ό μ¬μ©νμ¬ μμ±νλ κ²½μ°κ° λ§κΈ° λλ¬Έμ μ΄ λμ κ°μ κ°λ μΌλ‘ νΌλνλ κ²½μ°κ° μλ€. μ νν κ°λ μ μκΈ° μν΄ Oracle 곡μ λ¬Έμλ₯Ό νμΈν΄λ³΄μ. π± The Java programming language allows you to define a class within another class. Such a class is called a nes..
μ§λ ν¬μ€ν μμλ, ν΄λΌμ΄μΈνΈμ μλ² μ¬μ΄μ μ΄λ€ μμΌλ‘ μμΌμ΄ μμ±λλμ§ μμ보μλ€. κ·Έ μ¬μ΄μλ λ 'νλ‘ν μ½ μ€ν' μ΄λΌλ μΉκ΅¬κ° μμλλ°, μ΄λ² ν¬μ€ν μμλ νλ‘ν μ½ μ€νμ΄ λμ§ μ‘°κΈ λ ꡬ체μ μΌλ‘ μμλ³΄κ³ μ νλ€. μμΌλ‘ ν¬μ€ν μ μ§ννλ©΄μ μλΆλΆμ μ μ°¨λ€μ νλνλμ© μμλκ° μμ μ΄λ€. βοΈ νλ‘ν μ½ μ€νμ΄λ? μμ κ·Έλ¦Όμ 보μ. μ΅μλ¨μ λ€νΈμν¬ μ ν리μΌμ΄μ μ λΈλΌμ°μ , μΉ μλ² λ±μ νλ‘κ·Έλ¨μ΄ ν΄λΉνλ©°, μ¬κΈ°μλΆν° μλλ‘ ν₯νκ² λλ€. μ°λ¦¬κ° μ΄μ ν¬μ€ν κΉμ§ λ€λ£¨μλ λ΄μ©μ΄ μ ν리μΌμ΄μ μμ μμΌ λΌμ΄λΈλ¬λ¦¬, κ·Έλ¦¬κ³ λ¦¬μ‘Έλ²λ₯Ό ν΅ν΄ DNS μλ²μ μ‘°ννκ³ μμΌμ λ§λλ κ³Όμ κΉμ§ λ€λ£¬ κ²μ΄λ€. κ·Έ λ€μ λ¨κ³λ OSμ λ΄λΆμ΄λ©°, μ¬κΈ°μ νλ‘ν μ½ μ€νμ΄ μ‘΄μ¬νλ€. νλ‘ν μ½ μ€νμ TCP / UDPλΌ..
π± λ€μ΄κ°κΈ° μ μ§λ ν¬μ€ν κΉμ§λ μ΄λ»κ² λλ©μΈμΌλ‘ IP μ£Όμλ₯Ό μ»μ΄μ€λμ§ λ°°μ λ€. μ΄λ² ν¬μ€ν μμλ OS λ΄λΆμ μλ νλ‘ν μ½ μ€νμ μ΄λ»κ² λ©μμ§λ₯Ό μ‘μ νλλ‘ νλμ§, κ·Έ νλ‘μ°λ₯Ό μμλ³Ό μμ μ΄λ€. βοΈ λ°μ΄ν°μ μ‘-μμ μ μ΄λ»κ² μΌμ΄λ κΉ? μ°μ κΈ°λ³Έμ μΌλ‘ DNS μλ²μ IP μ£Όμλ₯Ό μ‘°ννλ κ²μ²λΌ, μ΄λ²μλ μμΌ λΌμ΄λΈλ¬λ¦¬λ₯Ό νμ©νλ€. μ κ·Έλ¦Όμ 보면, μ΄λ€ νμ΄ν κ°μ κ²μ ν΅ν΄μ λ°μ΄ν°κ° νλ₯΄κ³ μλ κ²μ λ³Ό μ μλ€. μ€μ²΄νλ κ²μ μλκ³ , κ·Έμ 'λ°μ΄ν°μ ν΅λ‘'λ‘μ νμͺ½ λμμ λ€λ₯Έ μͺ½ λκΉμ§ νμ΄νλ₯Ό ν΅ν΄μ λ°μ΄ν°κ° νλ₯΄λ κ²μ΄λ€. μ¬κΈ°μ 'μμΌ'μ΄λΌλ μΉκ΅¬κ° μλ κ²μ λ³Ό μ μλ€. νμ΄νμ μλμ μ‘΄μ¬νλ λ°μ΄ν°μ μΆμ ꡬμ΄λ€. μλ²κ° μμΌμ λ§λ€κ³ , ν΄λΌμ΄μΈνΈμμλ μμΌμ λ§λ€μ΄μ νμ΄..
π± λ€μ΄κ°κΈ° μ μ΄λ² μλμ°¨ κ²½μ£Ό λ―Έμ μ μ§ννλ©΄μ λ 벨 1 λ νλ μ½λλ₯Ό 리ν©ν°λ§μ νλ€ λ³΄λ νμ΄μ 'λΆλ³ κ°μ²΄λ‘ λ§λλ κ² μ΄λ λλ μ견μ λ°μλ€. λΉμ λ 벨 1 λ―Έμ μ μ§νν λλ λΆλ³ κ°μ²΄μ μ μμ λν΄μ μ μμ§ λͺ»νμκ³ , λ―Έμ μ μ§ννλ©΄μ λΆλ³μΌλ‘ λ§λλ κ² μ¬λ¬ κ°μ§ μ΄μ μ΄ μλ€λ κ±Έ 곡λΆνμκΈ° λλ¬Έμ λ³ μκ° μμ΄ κ·Έλ κ² μ§ννκ³ μ νλ€. public class Car { private static final int CAR_FORWARD_NUMBER = 4; private final CarName name; private final CarPosition position; ... public Car move(final int power) { if (power >= CAR_FORWARD_N..