2018λ νκ³ λ‘
μλ νμΈμ. μ΄μ 2018λ μ΄ μ λ§ λ§μ§λ§ λ μ΄ λ€κ°μλ€μ. λ€λ€ ν ν΄ λ§λ¬΄λ¦¬ μνμκ³ , λ΄λ μλ λ μ’μ μΌλ§ κ°λνκΈ°λ₯Ό κΈ°μν©λλ€.
μ€λμ μ μ 2018λ μ λλμ보λ νκ³ λ‘μ μ²μμΌλ‘ μμ±ν΄λ³΄λ € ν©λλ€. νκ³ λ‘μ΄κΈ° λλ¬Έμ 격μ체λ κ±°μ μ¬μ©νμ§ μμ κ²μ΄λ©° μ²μ μ°λ νκ³ λ‘μΈ λ§νΌ μλ―Έμλ μκ°μ λ€μ Έλ³΄κΈ° μνμ¬ κΈ°λ‘ν©λλ€.
νκ³ λ‘μ μμ±
μλ μλ 2017λ ν°μ€ν 리 κ²°μ° κΈ°λ₯μ μ΄μ©νμ¬ λΈλ‘κ·Έλ₯Ό κ²°μ°νκ³ ν ν΄λ₯Ό λλμ보며 μ΄λ ν λΈλ‘κ·Έμ κΈμ΄ λ ꡬλ μ΄ λ§μκ³ μ΄λ ν μ μ΄ λΆμ‘±νλμ§ λ±μ μμ보λ μκ°μ κ°μ‘λ€.
νμ§λ§ μ¬ν΄λ λΈλ‘κ·Έμ κΈ μκ° λ§μ΄ μ€μκ³ , (νμΈν΄λ³΄λ μ λ§ λ§μ΄ μ€μ΄μμλ€.) λ°©λ¬Έμ μλ μμ λ§νΌ λͺ»νμλ€. λ¬Όλ‘ λμ κ²μΌλ¦μ΄ κ°μ₯ ν° μμΈμΌ μ μκ² λ€. κ·Έλ¦¬κ³ μ΄λ² ν°μ€ν 리μμλ λΈλ‘κ·Έ κ²°μ°μ νμ§ μλλ€κ³ νλ λ§μΉ¨ νκ³ λ‘μ μμ±νκΈ° κ°μ₯ μ’μ μκΈ°λΌκ³ μκ°λκΈ°λ νμλ€.
κ·Έ μμ€μλ λΈλ‘κ·Έμ ν¬μ€νΈλ₯Ό κ²μ리 νλ©΄μ μ¬νκΉμ§ ν΄μλ μΌλ€μ μ 리νκ³ μ΄λ₯Ό ν λλ‘ λ΄λ μλ μ΄λ ν μΌλ€μ ν΄λ³Όμ§ μ‘°κΈ μκ°ν΄λ³΄λ μκ°μ κ°μ Έλ³΄κΈ°λ‘ νλ€.
Algorithm Study
μ§κΈ λ΄κ° κ°μ§κ³ μλ μλ μ€μ κ°μ₯ λΆμ‘±νλ©΄μλ μκΈν κ²μ λ°λ‘ μκ³ λ¦¬μ¦ κ³΅λΆμ΄λ€. μ¬μ€ μκ³ λ¦¬μ¦ κ³΅λΆλ μ¬λ¬λͺ¨λ‘ λμ μ·¨μ½μ μ€μ νλλΌκ³ μκ°νλ€. μνμ μΈ μ§μμ λ¬Όλ‘ μ΄μ΅κ³ λ¬Έμ νΈλ λ°©μ λ±μ΄ μκ°λ³΄λ€ μ κΈ(?)νμ¬ λ§μ κ³΅λΆ μκ°μ μꡬνκ³ μμ§λ§ μ¬μ€μ μ μ§μΌμ§μ§ μκ³ μλ€.
κ·Έλμ λ΄κ° μ νν κ²μ μκ³ λ¦¬μ¦μ μ’ λ μ¬λ°κ² 곡λΆν΄λ³΄κΈ° μν΄ μ΄ν΄κ° μ’ μ½λ€κ³ μκ°ν΄μ κΌ½μ μμ μ± μ ꡬμ νμ¬ μκ³ λ¦¬μ¦ κ³΅λΆλ₯Ό μμνκ² λμλ€.
DFS, BFS λ±λΆν° μμνμ¬ λ€μ΄λλ―Ή νλ‘κ·Έλλ°κΉμ§ μ λ§ λ§μ μκ³ λ¦¬μ¦ ν΄κ²° λ°©λ²λ€μ΄ μ‘΄μ¬νμκ³ μ΄λ€μ 곡λΆνλ λ° μμ΄ μ΄λ €μμ μμμ§λ§ μμ§λ μ€μ μμλ λ§μ λΆμ‘±ν¨μ΄ μμλ€. ν λ¬Έμ κ° μ£Όμ΄μ‘μ λ ν΄κ²° λ°©λ²μ μ¬λ¬κ°μ§κ° μκ² μ§λ§ μ΄ λ¬Έμ μμ μ΄λ€ λ°©λ²μΌλ‘ νμ΄ λ°©μμ μ κ·Όνλ κ² Best solutionμΌμ§, μμ§ κ°μ μ‘κΈ°κ° μ΄λ ΅λ€. μΌλ¨ 무μ보λ€λ μ€μ μ½λ©ν μ€νΈμμλ μκ° μΈμμ΄ μΉμ΄νκ² λ²μ΄μ§κΈ° λλ¬Έμ λ κΈ΄μ₯ν μ λ°μ μλ€.
κ·Έλ¦¬κ³ λλ μ΄λ₯Ό λ°νμΌλ‘ μ€μ μ½λ©ν μ€νΈμ μ°Έμ¬νκ² λμλ€. μ¬μ΄ μκ³ λ¦¬μ¦ λ¬Έμ , νΉμ μκ³ λ¦¬μ¦ μΈμ μ€μ GUI νλ‘κ·Έλ¨μ μ½λ©νλ λ± μ¬λ¬ λ¬Έμ κ° μμμ§λ§ λμκ² μμ΄ κ°μ₯ ν° λ¬Έμ μ μ μκ³ λ¦¬μ¦μ νλ©΄μ μ¬μ©νλ μ£Ό λ©μλλ€μ μκ° λ³΅μ‘λ λ±μ κ³ λ €νμ§ μκ³ νΈλ λ¬Έμ μ μ΄ μ‘΄μ¬νμΌλ©° λ νμ§ μ’μ νλ‘κ·Έλ¨μ λ΄κΈ° μν΄μλ μ΄λ¬ν λ©μλλ€μ νΉμ±μ κ³ λ €νκ³ μ€κ³νλ©° νλ‘κ·Έλλ°μ ν΄μΌλ§μ μ μ μμλ€.
Back-end Development
λλ μ΄μ λΆν° 리λ μ€ μλ²μ λν΄ κ΄μ¬μ΄ λ§μμκ³ μ΄λ₯Ό λ°νμΌμ κ΅°μν λμ μ μ°μ€μμ 근무νλ κ²½νμ κ°μ§κ³ μ€μ μλ² μ΄μμ μ΄λ°μ§λ₯Ό ν μ λ μμλ€.
μ΄λ₯Ό λ°νμΌλ‘ μ§μ μλ²λ₯Ό κ°λ°ν΄λ³΄μλΌλ λ§μμ κ°μ§κ² λμκ³ , μλ§μ νλ μμν¬ μ€ Spring bootμ Flaskλ₯Ό 곡λΆνκ² λμλ€. λ¬Όλ‘ μ΄λ€ νλ μμν¬μ λν΄ μ 체μ μΌλ‘ 곡λΆν κ²μ΄ μλ λ°±μλ μλ² κΈ°λ₯ μ€μμλ κ°μ₯ κΈ°λ³Έ κ³¨κ²©μΈ Restful APIμ λν΄μλ§ λμ μ¬ λ΄€λ€.
REST APIλ₯Ό μ²μ μ νμ λ μ΄ μΈν°νμ΄μ€λ‘ ν μ μλ κ²μ΄ μ λ§ λ§λ€λ κ²μ μμλ€. κΈ°λ³Έμ μΈ μΌνλͺ°λΆν° νμ¬ λμ ννμ΄μ§ κ΄λ¦¬, λ‘κ·Έ λ± μ£Όμ μμ€ν μ κΈ°λ₯λ€μ μ΄λ‘ ꡬνν μ μλ€λ κ²μ κ΅μ₯ν λλΌμ κ³ λλ μ΄λ₯Ό λ°νμΌλ‘ 무μΈκ°λ₯Ό λ§λ€μ΄λ³΄κΈ°λ‘ νλ€.
νκ΅λ μ‘Έμ νμ§λ§ μ΄μ μ λ€λκ³ μμλ λμ리μ μ΄λ¦μΌλ‘ μ±λ΄μ νλ κ°λ°νμλ€. λμ리λ₯Ό ν보νλ κ²Έ νμλ€μ νΈμμ¬νμΌλ‘ μλ¨κ³Ό λ²μ€ μ 보λ₯Ό νμΈν μ μλ κ°λ¨ν μ±λ΄μ΄μλ€.
Restful APIλ₯Ό μ¬μ©νμ¬ κ°λ°νμκ³ Pythonμ Flaskλ₯Ό μ¬μ©νμλ€. 무μ보λ€λ λ¨μ μ±λ΄μ΄κΈ° λλ¬Έμ κ°λ³κ³ λΌμ΄νΈν Flask νλ μμν¬κ° μ 격μ΄λΌκ³ νλ¨νμλ€. νμ¬ μ΄ μλΉμ€λ Amazon Web Servicesμμ MSA(Micro-Service Architecture) ννλ‘ μ΄μ μ€μ μλ€.
νμ§λ§ 곡κ΅λ‘κ²λ κΈ°μ‘΄ APIλ₯Ό μ¬μ©ν μ±λ΄ μλΉμ€κ° 2019λ 12μ 31μΌμ λ§μ§λ§μΌλ‘ μλΉμ€κ° μ’ λ£λλ€κ³ νλ€. μκ°μ΄ λλ€λ©΄ λ€λ₯Έ μ±λ΄μ κ°λ°νμ¬ μλΉμ€ν΄λ³Ό μκ°λ νμμ§λ§ μμ½κ²λ μ΄λ μ€νλμ§ λͺ»ν κ² κ°λ€.
Source CodeChallenge Hackathon
ν΄μ»€ν€μ ν λ² λμ ν΄λ³΄μλΌλ μκ°μ κ½€ λ§μ΄ μμμλ€. νμ§λ§ μ‘Έμ νκΈ° μ μμ¦μλ μ·¨μ μ€λΉλ μμκ³ λλ κ·Έλμ μμ λ‘μ΄ ν΄μ»€ν€μΈ GCPUG Hackathon 2018μ μ°Έμ¬ν΄λ³΄κΈ°λ‘ νμλ€. 무μ보λ€λ κ²½μμ΄ μλ μμ λ‘κ² λ¬΄μΈκ°μ λμ ν΄λ³΄μ λΌλ λΆλ΄κ°μ΄ λν ν΄μ»€ν€μ΄λΌλ μ κ³Ό μλ²μ κ΄μ¬μ΄ μλ ν μμ§λμ΄λ‘μ¨ ν΄λΌμ°λμ μ§μ μλ²λ₯Ό μ΄μνλ κ²μλ μ΄λ ν λ°©μμ μ°¨μ΄κ° μλμ§λ κ²½νν΄λ³΄κ³ μΆμκΈ° λλ¬Έμ΄λ€.
νμ§λ§ μκ°μ λλ₯Ό νλ½ν΄μ£Όμ§ μμλ€. λ§μΉ¨ λΉμΌμ κΈν λ©΄μ μΌμ μ΄ μ‘νκ² λμκ³ , λλ λΆλμ΄νκ² μ΄ μΌμ μ μ·¨μν μ λ°μ μμ΄, ν΄μ»€ν€μ μ°Έμ¬κΈ°νλ κ·Έλ κ² λ¬΄μ°λκ³ λ§μλ€. μ·¨μ μ κΈΈμ λμ¬μλ μ¬λμΌλ‘μ¨ λ©΄μ λ³΄λ€ ν΄μ»€ν€μ λ μ€μμν μλ μμκΈ° λλ¬Έμ΄λ€.
λͺ μ£Ό λ€, λλ λͺ¨ νμ¬μμ μ£Όμ΅νλ ν΄μ»€ν€ κ³΅κ³ λ¬Έμ λ³΄κ² λμλ€.
μ§κΈλ μ΄ νμ΄μ§κ° μμ§ μ΄μμλλ°, μλ§ μ°¨νλ λμ λ³κ²½λ λ―νλ€. μ΄μ¨λ λλ μ΄ ν΄μ»€ν€μ μ°Έμ¬νκΈ° μν΄ νμ΄μ§λ₯Ό λ°©λ¬Ένμλ€.
κ·Έλ°λ° μ΄ ν΄μ»€ν€μ λ€λ₯Έ ν΄μ»€ν€κ³Ό λ€λ₯΄κ² μ°Έκ° μ격μ μ νμ΄ μμλ€. μμΈν 보λ μ΄ ν΄μ»€ν€μ μ±μ©κ³Ό κ΄λ ¨λ ν΄μ»€ν€μ΄μκ³ κ·Έλ κΈ° λλ¬Έμ μΌμ’ μ μλ₯μ νκ³Ό μ½λ©ν μ€νΈκ° μ‘΄μ¬νλ€. ν΄μ»€ν€μ λμ ν΄λ³΄κ² λ€λ μκ°μ λ³ν¨μ΄ μμκΈ° λλ¬Έμ κ³Όκ°ν λλ μ΄ κ³Όμ μ λͺ¨λ μ°Έμ¬ν΄λ³΄κΈ°λ‘ νλ€.
κ·Έλ¦¬κ³ λΉλΉν ν΄μ»€ν€ μμ μ ν©κ²©νμκ³ , μ€λ¦¬μν μ΄μ μ μ°Έκ°νκ³ μ νμλ€. κ·Έλ°λ° ν΄μ»€ν€μ μμ ν©κ²©νκ³ λμ μκ°λκ² μμλ€. 'λ΄κ° μ΄λ ν¬μ§μ μ μ§μνλλΌ?'
μ΄μ¨λ 첫 ν΄μ»€ν€μ΄μκ³ μ°Έμ¬νκΈ° μ λΆν° μ€λ μκ³Ό κΈ΄μ₯κ°μ΄ κ°λνμλ€. λͺ¨λ₯΄λ μ¬λλ€κ³Ό κ°μ΄ κ°λ°νλ€λ κ² κ³Όμ° μ΄λ€ μ¦κ±°μμ΄ μκ³ λ¨μ μ΄ μμκΉ λΌλ μκ°μ΄ κ°λνμλ€. μ΄μ©λ©΄ μ΄ κ°λ° κ²½νμ΄ μμΌλ‘ μ°¨νμ λμ νμ¬ μνκ³Όλ μ°κ΄μ΄ μμ κ²μ΄κ³ μ΄μ λν μ¬μ μ°μ΅μ΄λΌ μκ°νκ³ κΈμ μ μΈ λ§μμΌλ‘ μ°Έμ¬νμλ€.
ν΄μ»€ν€μ μ°Έμ¬ν 지λ§ν νκΈ°λ μλ‘ λͺ¨λ₯΄λ μ¬λλΌλ¦¬ κ°λ°νλ©΄μ λνλλ μ¦κ±°μκ³Ό μλ‘κ° κ°μ§κ³ μλ λ¬Έμ μ κ³Ό κ³ λ―Ό λ±μ μμ λ‘κ² μ΄μΌκΈ°ν μ μλ μκ° λ±μ κ°μ§ μ μμλ€λ κ²μ κ΅μ₯ν λ§μ 보λμ λκΌλ€. κ·Έλ¦¬κ³ λ¨Ήμ κ±° κ±±μ μνκ³ κ°λ°ν μ μλ€λ κ². (μ΄κ±° μ λ§ μ’μ κ² κ°λ€. κ·Έλ°λ° μ§μ§ μκ° μκ° μμ΄ κ°λ°νκ³ μλλ°, λ¨Ήμ κ² κ³μ λμ¨λ€. ) κ·Έλ°λ° μ΄κ² λ μμ’μ μ μ΄ μλ€. κ°λ° μ§μ²μ΄ μ μλκ³ μλλ°, λ²μ¨ λ°₯μκ°. μ μ΄κ±°λ μ λ§ λΉν©μ€λ½μ§ μμ μ μμλ€. λμ±μ΄ μ΄ ν΄μ»€ν€μ μ·¨μ κ³Ό μ°κ³λμ΄ μλ ν΄μ»€ν€μ΄κΈ°λν΄μ λ΄κ° νΉμ μ νμ§ λͺ»ν΄ μ΄ λΆλ€μ μ·¨μ μ κ±Έλ¦Όλμ΄ λμ§ μμκΉ λΌλ μ°λ €λ μ‘°κΈμ μμλ€. κ·Έλ° λΆλ΄κ°μ΄ μμ΄μ κ·Έλ¬λμ§λ λͺ°λΌλ μκ°λ³΄λ€ λ°±μλ ν¬μ§μ μμ λμ μν μ μλ²½ 2μμ 무μ¬ν λ§μΉ μ μμλ€.
ν΄μ»€ν€ μ΄ν, μ’ λ¬΄λ¦¬κ° μμλ κ²μ μ μ λͺ»μ νμ λͺΈμ νΌλ‘κ° λ§μ΄ μμΈλ€λ μ μ΄λ€. λ§μ½ νμ¬ μνμ νλ©΄μ ν΄μ»€ν€μ νλ κ²μ΄λΌλ©΄? κ·Έ μ λ μ ν΄κ° μ°λ κ²μ λ§€μ° μ¬κ°νκ² κ³ λ €νλ κ²μ μΆμ².
Source CodeOpen Source Contribution
ν΄μ»€ν€μ΄ λ§λ¬΄λ¦¬λκ³ λ ν, λλ μ·¨μ§μ νκ² λμλ€. κ·Έκ³³μμ λ°μ΄ν° μμ§λμ΄ μ 무λ₯Ό λ§‘κ² λμκ³ μ¬κΈ°μ 맑μ 첫 νλ‘μ νΈλ μμμν μ΄λ―Έμ§μ κ³΅ν΅ λ°μ΄ν° λͺ¨λΈμ κ°λ°νλ κ²μ΄μλ€. κ³΅ν΅ λ°μ΄ν° λͺ¨λΈμ΄λ, ν©μ΄μ§ λ°μ΄ν°λ₯Ό μΌμ ν λΆμ μ©λλ₯Ό μ¬μ©νκΈ° μν΄ λͺ¨μΈ κ³΅ν΅ λ°μ΄ν° ννλ‘μ¨ CDM(Common Data Model)μ΄λΌκ³ λ νλ€. μ€μ λ‘ μν λ°μ΄ν°μμ λ§μ΄ μ°λ μ©μ΄μΈ λ―νλ€.
μ¬κΈ°μμ μΌνλ©΄μ μ΄ κ³³μ΄ μ€ν μμ€ λΌμ΄λΈλ¬λ¦¬, λͺ¨λ, νλ‘κ·Έλ¨μ μ¬μ©νκ³ μμλ€. νΉν ν κ·Έλ£Ήμ μ€ν μμ€ μννΈμ¨μ΄λ₯Ό λ§μ΄ μ¬μ©ν΄μ μ¬κΈ°μ μλ² κ΄λ¦¬ μ 무λ λμμ 맑λ€λ³΄λ κ·Έμ κ΄ν λ¬Έμ μ λν΄ κ³ λ―Όμ λ§μ΄ νκ² λμλ€.
μννΈμ¨μ΄μ λν λ¬Έμ λ₯Ό ν΄κ²°νλ€λ κ²μ κ°λ°μλ‘μ¨μ κΈ°λ³Έ μλμ΄κΈ°λ νλ€. νμ§λ§ λ΄κ° λ§λ μννΈμ¨μ΄κ° μλ λ€λ₯Έ 3μμ μννΈμ¨μ΄μ λ¬Έμ κ° μμ΄ μ½λλ₯Ό μμ ν΄μΌ νλ€λ©΄ μ΄λ»κ² ν΄μΌ ν κΉ? κ·Έλ₯ λ΄κ° μμ νκ³ λλ§ μ¬μ©νλ κ²μ΄ λ§λ κ±ΈκΉ? μλλ©΄ λ²μ κ΄λ¦¬λ μ μ§λ₯Ό μν΄μ μ΄λ₯Ό issueμ λ±λ‘νκ³ μ½λλ₯Ό κΈ°μ¬νλ κ²μ΄ λ§λ κ±ΈκΉ?
μ¬μ€ μ·¨μ§νκΈ° μ μλ λ§μ΄ μκ°νλ λΆλΆ μ€μ νλμλ€. μ½λλ₯Ό κΈ°μ¬νλ€λ κ². κ·Έκ²μ λ¬΄μ¨ μλ―Έκ° μλ κ²μΌκΉ? μ΄ μκ°μ ν λλ§λ€ κ°λμ λ΄κ° κ°λ° μλμ΄ μμ§λ λ©μꡬλ λΌλ μλ±ν μκ°μ ν μ λ μμκ³ μ΄μ©λ©΄ μ²μμΌλ‘ μ΄λ¬ν νλμ νκΈ° μ μ μ΄λ¬ν μκ°μ νλ€λ κ²μ λΉμ°ν κ²μ΄λ€. λΌλ μκ°μ κ°μ§κΈ°λ νμλ€. νμ§λ§ λ΄ λ΅μ μ΄κ±°μλ€. λ΄κ° μ΄ μννΈμ¨μ΄λ₯Ό κ³μ μ°λ μ΄μ μ΄κ²μ΄ λ¬Έμ μΈ κ²μ μμκ³ μ΄κ²μ΄ μ°¨κΈ° λ²μ μλ μν₯μ λ―ΈμΉλ κ²μ΄λΌλ©΄ 곡μμ μΌλ‘ issueλ₯Ό μ κΈ°νκ³ λͺ ννκ² λ¬Έμ ν΄κ²°μ μ μνκ±°λ μλ‘ νμ΄λκ°λ κ²μ΄ λ§λ€κ³ λ΄€λ€.
μ²μμΌλ‘ λ°κ²¬ν μ΄μμ λν΄μλ ν° μ΄μκΉμ§λ μλμλ€. μ ν리μΌμ΄μ configuration μ€ Microsoft SQL Serverμ μ°λνμ λ λ°κ²¬ν λ¬Έμ μλλ°, λ¨μ μ½λ μ€νλ‘ μκΈ΄ μ€λ₯μ¬μ issueμ μ¬λ € ν΄κ²°ν λ¬Έμ κΉμ§λΌκ³ λ μλλΌ μκ°νλ€. νμ§λ§ μ§κΈμμμ μκ°ν΄λ³΄λ©΄ μ΄λ¬ν λ¬Έμ ν΄κ²° λ°©λ²μ΄ λ³λ‘ μ’λ€κ³ λλΌμ§ λͺ»ν λκ° λ§μ΄ μμλ€.
κ³΅ν΅ λ°μ΄ν° λͺ¨λΈμ κ°λ°νμ λ λλ DatabaseConnectorλΌλ Rμ ν¨ν€μ§λ₯Ό μ¬μ©νμλ€. μ¬κΈ°μμλ Data frameμ insert ν΄μ£Όλ ν¨μλ μμλλ°, 곡κ΅λ‘κ²λ μ΄ ν¨μκ° DATETIMEμ΄λ BIGINT μλ£νμ λν΄μ μλ¬΄λ° μ§μμ νμ§ μμλ€λ κ²μ΄ μμ¬μ λ€. κ·Έλμ λλ μ΄ λΌμ΄λΈλ¬λ¦¬μμ DATETIME, BIGINT νμ μ μ½μ μ μ§μνλλ‘ μ½λλ₯Ό κΈ°μ¬νμλ€.
BIGINT μ§μμ΄ R μ½λμμ μ μνλμ§ μμ μ΄μ λ Rμμλ C++λ Javaμ²λΌ κΈ°λ³Έ μλ£νμΌλ‘ INT64λ₯Ό μ§μνμ§ μκΈ° λλ¬Έμ΄λ€. κ·Έλ λ€λ©΄ 2^32 μ΄μλλ μ«μλ μ΄λ»κ² ννμ νλ? FLOATλ‘ ννν΄μΌνλ€. λλ μ΄ λΆλΆμ λ무 λΆνΈν μ¬κ²Όλ€. νμ§λ§ μ΄λ¬ν μλ£νμ΄ μμ΄λ BIGINTλ₯Ό μ½μ ν μ μλλ‘ κ΅¬ννλ κ²μ ν° λ¬Έμ κ° λμ§ μμμμ μμκΈ°μ κ·Έλ¦¬κ³ λμ κ°μ μκ°μ νλ©΄μ κ°μ μ λ°λΌκ³ μλ€λ μ¬λμ΄ μμ μ μλ€λ μκ°μ κ³Όκ°ν μ½μ΄ λΆλ¬Έμλ μ½λλ₯Ό κΈ°μ¬νκ² λμλ€.
λ¬Όλ‘ μ€ν μμ€μ κΈ°μ¬κ° νμ Accept λλ κ²μ μλμλ€. λͺ κ°μ μ νμ¬μμ μ¬μ©νκ³ μλ μΉ νλ μμν¬ μ€ νλμ XSS μ·¨μ½μ λ¬Έμ κ° μμ΄ λ¬Έμ μ μ½λλ₯Ό μμ νκ³ PRμ μ¬λ Έμ§λ§ ν΄λΉ μ ν리μΌμ΄μ μ λμμΈ ν¨ν΄κ³Ό μ ν©νμ§ μλ€λ μ΄μ λ‘ Reject λκ±°λ 보λ₯λκΈ°λ νμλ€. ν λ λ°±μλ κ°λ°μ 곡λΆνλ μ¬λμΌλ‘μ¨ μ΄ λΆλΆμ λ μμ μκ² μ€λ§μ κ°μΆμ§ μμ μ μμλ€.
GithubλΌλ κ²μ μ¬μ©ν κ²μ μ¬ν΄λ‘ 3λ μ΄ λμ΄κ°λ€. λ¬Όλ‘ μ κ²μ 2012λ λλΆν°μμ§λ§ κ΅° μν λ±μ μ΄μ λ‘ μ¬μ©νμ§ μμλ€. μ¬νκΉμ§λ μμ€ μ½λ 보κ΄μ©μ΄λ μλ μ¬λκ³Ό κ°μ΄ νλ νλ‘μ νΈλ₯Ό ν λ μ¬μ©νλ μ λκ° μ λΆμκ³ λ€λ₯Έ μννΈμ¨μ΄ μ½λμ μ§μ μ μΈ μ½λλ₯Ό κΈ°μ¬νμ¬ μ°Έμ¬ν κ²μ μ΄λ²μ΄ μ²μμ΄μλ€. λλ €μ λ κ²μ μμ΄λΌλ λμ μ₯λ²½μ΄ μμκΈ° λλ¬Έμ΄λ€. λ¬Όλ‘ μ½λ 리λ©νλ κ²λ 리뷰νλ κ²λ λ§μ΄ λΆμ‘±νλ κ²μ΄ μ¬μ€μ΄λ€. νμ§λ§ κΈ°λ³Έμ μΈ μμ¬μν΅μ΄ μ΄λ ΅λ€λ©΄ μ΄λ»κ² μ½λλ₯Ό κΈ°μ¬ν μ μκ² λκ°, νμ§λ§ μ΄λ² μ½λ κΈ°μ¬λ₯Ό ν΅ν΄ μκ² λ κ²μ Tryνλ κ²μ λλ €μνμ§ λ§μλΌλ κ²μ΄λ€. μ§κΈλ μμ΄λΌλ μ₯λ²½μ΄ λ무 λμ μν΅μ΄ μ μλμ§λ§ μ΄λ κ² μ½λλ₯Ό κΈ°μ¬νλ μ΅κ΄μ λ€μ΄λ€λ³΄λ©΄ μΈμ κ° λ΄ μμ΄ μ€λ ₯λ ν₯μμ΄ λμ§ μμκΉ? γ ...
μμΌλ‘μ κ³ν...
2018λ μλ μ λ§ λ§μ μΌμ΄ μμλ€. μλ§ λ΄κ° λΈλ‘κ·Έ νλμ λͺ κ°μ μν λμ λμ Github Contribution λνΈκ° μμ¬μλ€. μ κ²°λ‘ μ μΌλ‘ λ§νμλ©΄ μ¬κΈ°μ λ²μ¨ μ¬λ―Έ λΆμΈ κ² κ°λ€;; μμΌλ‘λ λ΄κ° μ΄ νλμ κ³μνλ λμ μ§κΈνκ³ μλ κ·Έλ£Ή λΏλ§μ΄ μλλΌ λ€λ₯Έ μ΄λκ°μμλ μ½λ κΈ°μ¬λ₯Ό νκ³ μμ κ²μ΄λ€.
2019λ μλ Deep Learningμ μ‘°κΈ μ΅νλ³΄κ³ μ νλ€. μ§κΈ λ΄κ° λ€λκ³ μλ νμ¬μμλ λ°μ΄ν°λ₯Ό μ£Όλ‘ λ€λ£¨κ³ μκ³ μ§κΈμ ETL λͺ¨λ μ΄κΈ° λ²μ μ μμ±ν κ²μ΄ μ λΆλ€. λ¬Όλ‘ κ·Έ λ°μ΄ν° λͺ¨λΈμ κΈ°λ°μΌλ‘νμ¬ κ°λ¨ν μ ν리μΌμ΄μ μ κ°λ°νκΈ°λ νμ§λ§ μ¬μ€μ κ°λ¨νκ³ λ¨μν μ ν리μΌμ΄μ μ΄κΈ° λλ¬Έμ R μΈμ΄λ₯Ό μ°μ΅νλ μ©λμ κ·ΈμΉλ μ λλ€. κΉκ² 곡λΆνμ§ μμλ λμ λꡬλ μ½κ² κ°λ°ν μλ μλ€.
μ¬ν΄ νμ¬μ μ μ¬ν΄μ Deep Learningμ λν΄ μμ 곡λΆλ₯Ό νμ§ μμλ κ²μ μλμλ€. νμ§λ§ μκ°λ³΄λ€ μ΄ λ μνν ν₯λ―Έλ₯Ό κ°μ§λ€λ κ²μ΄ μ½μ§ μμλ€. ννλ λͺ λ² κ°μκ³ κ·Έλ₯Ό ν΅ν΄μ λ€λ₯Έ μ¬λλ€μ νλ‘μ νΈλ μ΄ν΄λ³΄κ³ μ΄λ»κ² μ¬μ©νλμ§, λ¬Έμ μ μ 무μμ΄ μμλμ§ λ± λ€λ°©λ©΄μΌλ‘ λ³΄κ³ λλ¦λλ‘ κ³΅λΆν΄λ΄€μ§λ§ μ¬μ ν ν₯λ―Έλ₯Ό λλΌκ³ μμ§ λͺ»νλ€. νμ§λ§ μνμ΄ μμλ κ²μ μλλ€. νμ΅μ΄ μ΄λ»κ² μ΄λ£¨μ΄μ§λμ§, μ΄λ€ μμΌλ‘ μ κ·Όν΄μΌνλμ§ μ λλ μ΄ν΄ν μ μμκ³ μ€μ λ‘ λ¨Έμ λ¬λ μμ§λμ΄λ€μ΄ νλ μΌμ΄ μ΄λ€ μΌμ΄κ³ μ΄κ²μ΄ λμ€μ μ΄λ»κ² μ¬μ©λ μ§ μ λλ λμΆ© κ°μ μ‘μ μ μμλ€.
νμ¬μ λ€μ΄κ°κΈ° μ κ²½νν 첫 ν΄μ»€ν€ μ°Έμ¬ κ·Έλ¦¬κ³ μ±λ΄μ κ°λ° λ± μ¬ν΄λ λμκ² μμ΄ νλ‘μ νΈμ λν μ΄μΌκΈ°κ° λ§μ΄ μ‘΄μ¬νλ€. λ¬Όλ‘ μ½μμ μ·¨μ λ μμκ³ λ¬΄μλ³΄λ€ νκ΅λ₯Ό μ‘Έμ νκΈ° λλ¬Έμ κ·Έλ§νΌ 곡백μ μκ°λ λ§μ΄ μμκΈ° λλ¬Έμ΄λΌκ³ μκ°νλ€.
λΉλ‘ 짧μ 6κ°μ λμμ νμ¬ μνμ΄μκ³ Deep Learningμ 곡λΆνλ κ²λ λ¨λ μκ°μ μ§¬μ§¬μ΄ νλ μμ£Ό κΉ¨μκ°μ μκ°μ΄μμ§λ§ μ΄ μκ°λμ μ€ν μμ€ κΈ°μ¬, ETLκ³Ό λ°μ΄ν° μ²λ¦¬μ κ³΅λΆ λͺ¨λμ κ°λ° λ±μ ν μ μμ΄ λλ¦ λ»κΉμ μκ°μ 보λλ€κ³ μκ°νλ€. κ·Έλμ μμΌλ‘ λ μ€ν νλ‘μ νΈ κΈ°μ¬μ μ§μ€νκ³ κ΅¬κΈμμ μ 곡νλ λ¨Έμ λ¬λ λ¨κΈ° μ§μ€ κ³Όμ μ ν΅ν΄μ 본격μ μΈ κ³΅λΆλ₯Ό μμν΄λ³΄κ³ μ¬ν΄ κ°λ°ν΄ λ³Έ λ°μ΄ν° λͺ¨λΈμ μ΄λ»κ² μ¬μ©ν μ μμμ§ κ³ λ―Όμ ν΄ λ³Ό νμκ° μκ² λ€.
μ¬ν΄ 곡λΆν μκ³ λ¦¬μ¦ κ³΅λΆλ λμ κ°λ° μλμ λμ΄λ λ° μ€μΆμ μΈ μν μ νμλ€. νμ§λ§ μ§κΈλ κ°λ μκ³ λ¦¬μ¦ λ¬Έμ λ₯Ό νκ³ μκ³ ν λλ§λ€ λλΌλ κ²μ "κ³Όμ° μ΄κ² μ΅μ μΈκ°"μ΄λ€. λ μ’μ μ½λ, κΉλν μ½λλ₯Ό λ§λ€ μ μμ κ² κ°μλ° λΌλ μκ°μ κ°μ§κ³ μμ§λ§ λ§μ§λ§μ λ΅μ 보거λ λκ΅°κ°κ° 리뷰λ₯Ό ν΅ν΄μμΌ μκ² λλ€. κ·Έλμ λλ μ§κΈλ μ½λ 리뷰λ₯Ό κ΅μ₯ν μ€μνκ² μ¬κΈ°κ³ μκ³ κ·Έκ²μ λκ΅°κ°κ° ν΄μ€λ€κ³ νλ€λ©΄ κΈ°κΊΌμ΄ νμνλ€. νμ§λ§ μ§κΈ λ΄κ° κ°μ§κ³ μλ λ¬Έμ λ μ΄λ¬ν λ¬Έμ κ° μλλ€. μμ§κΉμ§ λ΄κ° μκ³ λ¦¬μ¦μ μμ±νλ€κ³ νλ€λ©΄ κΈ°λ³Έμ μΈ μλ£κ΅¬μ‘°λ₯Ό μ¬μ©ν΄μ 주먹ꡬꡬμμΌλ‘ νΈλ λ°©λ²μ΄λ€. μ΄λ κ² ν΄κ²°νλ λ°©λ²μ΄ κ²°μ½ μλͺ»λ κ²μ μλλ€. κ·Έλ λ€κ³ μν μΌλ μλλ€. μ μ ν μκ³ λ¦¬μ¦ ν΄κ²° λ°©λ²μ μ¬μ©νκΈ° μν΄ μ¬ν΄ λ°°μ΄ DFSμ BFSμ λν΄ λ€μ ν λ² λμ§μ΄λ³΄κ³ μ΄λ₯Ό μ€λ¬΄μ μ μ©ν΄ λ΄ κ²μΌλ‘ λ§λ€ νμκ° λ°λμ μ‘΄μ¬νλ€. λ¬Όλ‘ λ κ°μ§ λ€ νκΈ° νλ€λ€λ©΄ νλλΌλ κΌ μλν΄λ³΄μ.
λ°μ΄ν° μμ§λμ΄ μ 무λ₯Ό νλ©΄μ κ°μ₯ κ±±μ μΈ κ²μ λ°λ‘ μ¬νκΉμ§ λ΄κ° μννΈμ¨μ΄ μμ§λμ΄ κ³΅λΆλ₯Ό νλ©΄μ λ°°μ΄ μν€ν μ²λ λμμΈ ν¨ν΄μ΄λ€. μμ¦ μ μ λ°μ΄ν° μ²λ¦¬μ μ΄λͺ©μ΄ μ§μ€λλ©΄μ νλ‘κ·Έλ¨μ λμμΈ ν¨ν΄μ΄λ μν€ν μ² κ³΅λΆμ κ΅μ₯ν μνν΄μ§κ³ μλ€. μ΄λ κ² λλ©΄ μ°¨νμ ν° μ ν리μΌμ΄μ μ κ°λ°ν λ λ€μ λ°°μμΌνλ λ¬Έμ μ μ μ§λκ³ μλ€. νμ¬ λ€λκ³ μλ κ³³μμ μ¬μ©νκ³ μλ Back-endμ μ½λλ₯Ό 리λ©ν΄λ³΄κ³ κΈ°μ¬ν΄λ³΄λλ‘ νμ. μ΄ μ ν리μΌμ΄μ μμ μ¬μ©νλ μν€ν μ²μ λμμΈ ν¨ν΄μ λ΄κ° μ½λλ₯Ό 리뷰νκ±°λ κΈ°μ¬ν΄λ³Ό μ λλ‘ κ²¬μ€λ§ν μ€νμ μ§λκ³ μλ€.
λ§μΉλ©°...
μ¬κΈ°κΉμ§ 2018λ μ μ νκ³ λ‘μ μμ±ν΄λ΄€μ΅λλ€. μ λ§ 1λ μ΄λΌλ μκ°μ 짧μΌλ©΄μλ κΈ°λ€μ. νκ³ λ‘μ μ°λ©΄μ μ΄ κΈμ μ΄λ»κ² λ§λ¬΄λ¦¬ μ§μ§? μ΄λκΉμ§ μΈκΉ?λ₯Ό μ λ§ λ§μ΄ κ³ λ―Όνμ΅λλ€. κ·Έλλ νμ€ν 건 μ¬ν΄ μ λ§ μ κ° νλ‘μ νΈμ μ°Έμ¬νκΈ° μν΄ λ§μ λ Έλ ₯μ κΈ°μΈμμκ³Ό λμμ λ»κΉμ μΌλ€μ΄ λ§μλ€λ μ μ΄μμ΅λλ€.
λ΄λ μλ λ μ¬λ°κ³ λ»κΉμ μκ°κ³Ό κ°λ°μ΄ λ§μμΌλ©΄ μ’κ² λ€μ. ^^;
μ κ·Έλ¦¬κ³ μμΌλ‘μ λΈλ‘κ·Έ νλμ κ³μ μ΄μ΄κ° κ²μ΄μ§λ§ μ§κΈμ κΈ λ°ν νμλ₯Ό λ΄μ μ’ λ λ
Έλ ₯ν΄μΌκ² μ£ ...γ
γ
λ μ’κ³ μ μ΅ν κΈλ‘ λ§λλ΅ μ μλλ‘ νκ² μ΅λλ€. μλ
μ²λΌ 1κ°μμ ν κ°μ ν¬μ€νΈλ μμ±ν μ μλλ‘ νκ² μ΅λλ€.
μ¬κΈ°κΉμ§ μ½μ΄μ£Όμ μ κ°μ¬λ립λλ€.