l null nullμ μ΄λ ν κ°μΌλ‘λ μ΄κΈ°ν λμ§ μλ κ°μ λλ€. ν λ©λͺ¨λ¦¬μ μμμ΄ μ‘΄μ¬νμ§λ μμ£ . λ§μ½ String str = null; μ΄λ° μμΌλ‘ μ μΈν΄μ€λ€λ©΄ λμ€μ μ¬μ©νκ² λ€ μκ³ ν μνμ΄μ§ μ‘΄μ¬νλ κ²μ μλλλ€. μ¬μ§μ²λΌ ν΄μ§κ½λ μλ μνμ΄μ£ . l "" ""μ νλμ Stringμ λλ€. "str", "strstrstrstr"μ κ°μ κ²μ λλ€. λ°λΌμ λ©λͺ¨λ¦¬μ ν λΉλμ΄ μλ μνμ λλ€. μ μ¬μ§μμ 0μ΄ ""μ κ°λ€κ³ μκ°νμλ©΄ λ©λλ€. null κ³Ό λ€λ₯΄κ² ν΄μ§κ½μ μμ΅λλ€. l μμ½ null : μ¬μ©νκ² λ€ μκ³ ν μν "" : μ΄λ―Έ μ¬μ©ν μν μ½μ΄μ£Όμ μ κ°μ¬ν©λλ€. μ§λ¬Έμ μΈμ λ νμν©λλ€. "λ λ°λμ λ°±μλ μμ΄ λ κ±°μΌ"
κ°λ°μ νμ λΆμ΄λΌλ©΄ κ°νΉ href="javascript:void(0)"λ₯Ό 보μ μ μ΄ μμ κ²λλ€. μ΄λ κ² λ§μ΄μ£ λ§ν¬ λ΄λΆλ§ν¬κ° μμΉν a νκ·Έμ μμ±μΌλ‘ μμ£Ό 보μ€μ μμ΅λλ€. κ°λ°μ λꡬμ μ°μ΄λ³΄λ©΄ undefinedκ° μΆλ ₯λλ κ²μ 보μ€μ μμ΅λλ€. κ·ΈλΌ λλ체 μ΄ ν¨μλ μ΄λμ μ¬μ©νλ κ²μΌκΉμ? l void(0)μ μ¬μ©νλ μ΄μ μ½κ³ μ§§κ² λ§νλ©΄ a νκ·Έ κ²½μ° λ΄λΆ λ§ν¬κ° κ±Έλ €μλλ° μ΄ λ§ν¬κ° μ μμ μΌλ‘ λμνμ§ μκ²λ νκΈ° μν¨μ λλ€. λ§μ½ a νκ·Έμ λ΄λΆλ§ν¬κ° κ±Έλ € μλλ° a νκ·Έμμ onclick μμ±μ λΆμ¬νκ³ μΆμ λ λ΄λΆ λ§ν¬λ₯Ό λμνμ§ μκ² ν μ μμ΅λλ€. href="" μ΄λ° μμΌλ‘ uriλ₯Ό μ¬μ©νμ§ μμΌλ©΄ λλ€ μκ° νμ€μλ μμ§λ§ λ§μ½ μ λ κ² ν κ²½μ° μ΅μμ λ§ν¬λ₯Ό μ΄λνκ² λ©λ..
λ§μ΄λ°ν°μ€λ μ€νλ§μμ λ°μ΄ν°λ² μ΄μ€ μ°λμ λμμ£Όλ νλ μμν¬μ λλ€. κΈ°μ‘΄μλ JDBC μ°λ κ³Όμ λ 볡μ‘νκ³ SQLλ¬Έμ΄ μ½λλ΄μ μμ¬ μ½λκ° μλΉν 볡μ‘ν΄μ‘μ΅λλ€. λ κ·Έλ λ― νλ μμν¬λ νΈμλ₯Ό μν΄ λ§λ€μ΄μ§λλ€. λ§μ΄λ°ν°μ€λ κ²°κ΅ κ°λ°μλ€μ νΈμμ±μ μνμ¬ λ§λ€μ΄μ‘μ΅λλ€. λ§μ΄λ°ν°μ€μ νΉμ§ sql μ€ν κ²°κ³Όλ₯Ό Map κ°μ²΄μ 맀νν΄μ€λλ€. sqlμ μμ€ μ½λκ° μλ XMLλ‘ λΆλ¦¬νμ¬ μμ±ν©λλ€. λ°μ΄ν°μμ€ κΈ°λ₯κ³Ό νΈλμμ μ²λ¦¬ κΈ°λ₯μ μ 곡ν΄μ€λλ€. κ·ΈλΌ κ°λ¨ν λ§μ΄λ°ν°μ€λ₯Ό μν κ°λ°νκ²½μ ꡬμΆν ν κ°λ¨ν sqlλ¬Έμ μ€ννμ¬ κ²°κ³Όκ°μ jspμ κ°μ Έμλ³΄κ² μ΅λλ€. DBMSλ μ€λΌν΄μ μ¬μ©νμμ΅λλ€. l λ§μ΄λ°ν°μ€ μ€μ μ μν xml νμΌλ€ SqlMapConfig.xml μ μ΄μ©νμ¬ λ§μ΄λ°ν°μ€ μ€μ μ ν΄μ€λλ€..
μ€νλ§μ νΉμ§μ 5κ°μ§λ‘ λλλ€λ©΄ λ€μκ³Ό κ°μ΄ λλ μ μμ΅λλ€. κ²½λ 컨ν μ΄λ DI(Dependency Injection, μμ‘΄μ± μ£Όμ ) IoC(μ μ΄μ μνλ¦, Inversion of Control) AOP(κ΄μ μ§ν₯νλ‘κ·Έλλ°, Aspect oriented Programming) POJO λ°©μμ νλ μμν¬ κ·Έ μ€ μ΄λ² κΈμμλ AOP(κ΄μ μ§ν₯νλ‘κ·Έλλ°)μ λν΄ μμλ³΄λ €κ³ ν©λλ€. l AOPλ μ νμν κΉ? μΉ μ ν리μΌμ΄μ μ λ§λ€λ€ 보면 ν΄νΉμ λλΉνκΈ° μν 보μ κΈ°λ₯, μ¬μ©μμ μ μ λ΄μμ μν λ‘κΉ κΈ°λ₯ κ·ΈμΈμ νΈλμμ , μ΄λ©μΌ λ°μ‘ κΈ°λ₯ λ± μλ§μ κΈ°λ₯λ€μ΄ μμ΅λλ€. μ΄λ€μ 곡ν΅μ μ 무μμΌκΉμ? λͺ¨λ μΉ μ ν리μΌμ΄μ μ ꡬμΆν λ 곡ν΅μ μΌλ‘ νμν κΈ°λ₯λ€ μ λλ€. κ·Έλ¦¬κ³ λλΆλΆμ ν΄λμ€λ€μ΄ μ΄λ¬ν κΈ°λ₯..
μλμ°¨μμ λ§μ½ μμ§μ΄ μ€λλμ μμ§μ λ°κΎΈκ³ μΆλ€λ©΄, μλμ μ μ²΄κ° μλ μμ§λ§ λ½μμ λ°κΏμ£Όλ©΄ λ©λλ€. κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμλ ν΄λμ€μ λν λ³κ²½μ΄ νμνλ©΄ λ€λ₯Έ ν΄λμ€μ μν₯μ λΌμΉμ§ μμΌλ©΄μ λ³κ²½μ΄ κ°λ₯ν΄μΌ ν©λλ€. μ΄λ¬ν μν©μ λ μμνκ² λ³κ²½μ΄ κ°λ₯μΌ λμμ€μ μλλ‘ λμ λ κΈ°λ₯μ΄ λ°λ‘ DI(Dependency Injection)μ IoC(Inversion of Control)μ λλ€. μλ°λ‘ νλ‘κ·Έλλ°μ νλ©΄μ κ°μ²΄λ₯Ό μμ±ν λ μ§μ ν΄λμ€μ new μ°μ°μλ₯Ό μ΄μ©νμ¬ μμ±νμ΅λλ€. νμ§λ§ DIλ κ°λ°μκ° μ§μ μ½λ©μ νμ¬ κ°μ²΄λ₯Ό μμ±νλ κ²μ΄ μλλΌ, 컨ν μ΄λκ° μ΄λ₯Ό μμ±μμΌ μ£Όλ κ²μ λλ€. κ·Έλ κ² λλ€λ©΄ μ½λμμ μ§μ μ μΈ μ°κ΄ κ΄κ³κ° λ°μνμ§ μμ κ° ν΄λμ€λ€μ λ³κ²½μ΄ μμ λ‘μ μ§λλ€...
"μλ°λ₯Ό μ λ§ λλκΉ.. μ‘κ΅°μ¬κ΄νκ΅ λμ€λ μ€λμ₯ κ°μ λλμ΄λ€.. μμ² λλ¨νμ§λ§ μ격ν΄μ μ«λ€κ³ ν΄μΌν κΉ.. λΆλͺ 보μ΄κΈ°μ κ°μ보μ΄μ§λ§ λ€λ₯Έκ² λ무 λ§λ€. μ€ν¬λ¦½νΈ μΈμ΄κ° κ΄λνκ²μ λΉν΄ μλ°λ μλΉν μ격νλ€. μ격ν κ³³μμ μ€λ μ₯μ μ λΆλͺ νμ§λ§ κ·Έλ§νΌ κ°λ°μλ€μ κ°λ κ΄΄λ‘νλ€." κ·Έλμ μ΄λ² κΈμλ μ λ₯Ό μμ²λκ² κ΄΄λ‘νλ equals() μ == μ μ°¨μ΄λ₯Ό μμλ³΄λ €κ³ ν©λλ€. κΈμ μμ μ΄ν΄νλλ° ν° λμμ μ£Όμ λ° λ³ΈλΆμ₯λκ» κ°μ¬μ μΈμ¬λ₯Ό λ립λλ€!! l String λ³μλ₯Ό μμ±ν λ Stringμ int, float, double λ±κ³Ό λ€λ₯΄κ² μλ°μμλ ν΄λμ€λ‘ ν΅ν©λλ€. ν΄λμ€μ΄κΈ° λλ¬Έμ λ€λ₯Έ λ°μ΄ν°νκ³Ό λ€λ₯΄κ² κ°μ²΄λ‘λ μμ±μ΄ κ°λ₯ν©λλ€. 리ν°λ΄μ μ΄μ©νμ¬ String μμ± new μ°μ°μ..
νμ λ³Όλλ§λ€ λ무 ν·κ°λ €μ κΈλ‘ μ¨λ΄ λλ€. l HashMap HashMapμ΄λ Map μΈν°νμ΄μ€ μ’ λ₯λ‘μ¨ keyμ value ννλ‘ λ°μ΄ν°λ₯Ό μ μ₯νλ ꡬ쑰λ₯Ό κ°μ§λλ€. κ·Έλ¦¬κ³ μ΄λ¦μμ μμ μλ―μ΄ hashing(ν΄μ±)μ λ§μ μμ λ°μ΄ν°λ₯Ό κ²μνλ λ° μμ΄μ λ°μ΄λ μ±λ₯ 보μ¬μ€λ€κ³ ν©λλ€. ν΄μ±μ΄λ?? λλΆλΆμ νμ λ°©λ²λ€μ νμ ν€λ₯Ό μ μ₯λ ν€ κ°κ³Ό λ°λ³΅μ μΌλ‘ λΉκ΅νλ©΄μ νμμ μνλ νλͺ©μ μ κ·Όν©λλ€. ν΄μ±μ ν€ κ°μ μ§μ μ°μ μ μΈ μ°μ°μ μ μ©νμ¬ νλͺ©μ΄ μ μ₯λμ΄ μλ ν μ΄λΈμ μ£Όμλ₯Ό κ³μ°νμ¬ νλͺ©μ μ κ·Όν©λλ€. μ΄λ λ― ν€ κ°μ μ°μ°μ μν΄ μ§μ μ κ·Όμ΄ κ°λ₯ν ꡬ쑰λ₯Ό ν΄μ ν μ΄λΈμ΄λΌ νκ³ , ν΄μ ν μ΄λΈμ μ΄μ©ν΄ νμνλ λ°©λ²μ ν΄μ±μ΄λΌκ³ ν©λλ€. keyλ μ€λ³΅λλ©΄ μλμ§λ§ λ§μ½ μ€λ³΅λλ€λ©΄ μ΅κ·Ό ke..
μ€λμ μλ°μμ λ§μ΄ μ¬μ©νλ ν¨μμΈ isEmptyμ λν΄ μμλ³΄κ² μ΅λλ€. isEmptyλ String ν΄λμ€μ λ©μλμ΄λ―λ‘ λ¨λ μΌλ‘ μ¬μ©ν μ μμ΅λλ€. κ·Έλ¦¬κ³ isEmptyλ nullμ 체ν¬ν΄μ£Όμ§ μμ΅λλ€. l μμ package com.ex01; public class test01 { public static void main(String[] args) { String str = "test"; String str2 = "";//곡백 μμ String str3 = " ";//곡백 μμ System.out.println(str.isEmpty());//=>false System.out.println(str2.isEmpty());//=>true System.out.println(str3.isEmpty())..
SELECT SBJECT_MASTR_SEQ.NEXTVAL FROM DUAL INSERT INTO SBJECT_MASTR (SBJECT_MASTR_SN, SBJECT_NM, SBJECT_CODE, SBJECT_CTGRY, EDC_TRGET, SRCHWRD, USE_YN, CM, REGIST_DT, REGIST_MBER_SEQ) VALUES (#{sn}, #{sbject_nm}, 'ES'||LPAD(#{sn}, 6, 0), #{sbject_ctgry}, #{edc_trget}, #{srchwrd}, #{use_yn}, #{cm}, SYSDATE, #{mber_seq}) μ€λΌν΄ κΈ°μ€μ κΈμ λλ€. νκ·Έλ₯Ό μ΄μ©νμ¬ νμ¬ μνμ€ λ€μμ μνμ€λ₯Ό κ°μ Έμ¬μ μμ΅λλ€. γ £SELECT SBJECT_MASTR_SEQ.NEX..
μ€νλ§ νλ μμν¬λ‘ μΈμ μ μ΄μ©ν΄ λ‘κ·ΈμΈμ κ°λ¨νκ² κ΅¬νν΄λ³΄κ² μ΅λλ€. μΈμ μ΄λ? μΈμ μ λν κ°λ μ κ°λ¨νκ² μκ³ κ°κ² μ΅λλ€. μΈμ μ μΏ ν€μ ν μΌμ’ μΌλ‘ session μΏ ν€λ₯Ό λ§ν©λλ€. μ΄λ₯Ό νΈνκ² μ°λ¦¬λ κ·Έλ₯ μΈμ μ΄λΌκ³ νμ£ . κ·Έλμ μΈμ κ³Ό μΏ ν€λ₯Ό λ€λ₯΄κ² μμλ λΆλ€μ΄ λ§μλ° μ¬μ€ μΈμ λ μΏ ν€μ μν©λλ€. μΏ ν€λ session μΏ ν€μ persistence μΏ ν€κ° μ‘΄μ¬ν©λλ€. κ·Έλ¦¬κ³ session μΏ ν€κ° μ΄λ² κΈμμ μ¬μ©ν μΏ ν€ μ λλ€. session μΏ ν€λ persistence μΏ ν€μ λ€λ₯΄κ² νλ°μ±μ λλλ€. λΈλΌμ°μ λ©λͺ¨λ¦¬μ μ μ₯λκΈ° λλ¬Έμ λ§μ½ session μΏ ν€κ° μ¬μ΄μ Έ μλ λΈλΌμ°μ κ° μ’ λ£λλ€λ©΄ session μΏ ν€λ μ¬λΌμ§κ² λ©λλ€. session μΏ ν€μ λν΄ κ°λ¨ν μ€λͺ νκ³ , μ΄λ»κ² μ΄λ₯Ό μ΄μ©..
μΏ ν€μ λν΄ μμΈν건 λ€λ₯Έ κΈμμ μμλ³΄κ³ , μ΄ κΈμμλ μΏ ν€λ₯Ό μ΄λ»κ² μ΄μ©νλμ§μ λν΄ μμλ³΄κ² μ΅λλ€. λ Persistence μΏ ν€μ session μΏ ν€μ λν΄ λμΆ© μκ³ λμ΄κ°κΈ°λ§ νλλ° μ΄λ² κΈμμλ μΏ ν€μ λν΄ μ§κ³ λμ΄κ°λ €ν©λλ€. μ΄ κΈμ μ½λλ μ νμ¬μ μ½λλ₯Ό κΈ°μ€μΌλ‘ μμ± νμκΈ°μ μ΄λ»κ² μλνλμ§ νλ¦ νμ νκΈ°μλ μ’μ§λ§, μ§κΈ λΉμ₯ μΏ ν€ κ΄λ ¨ν μ½λκ° νμνμ λΆμ μ ν©νμ§ μμ μ μμ΅λλ€. l μΏ ν€λ μ΄λμμκΉ? κ°λ°μ λꡬ Application νμ κ°λ³΄λ©΄ λΈλΌμ°μ μ μ μ₯λμ΄ μλ μΏ ν€μ μ 보λ₯Ό λ³Ό μ μμ΅λλ€. JSESSIONIDλ Session μΏ ν€μ κ΄ν μ 보μ΄κ³ , κ·ΈμΈμλ Persistence μΏ ν€μ κ΄ν κ²μΈλ° μ¬κΈ°μ Persitence μΏ ν€λ₯Ό κ·Έλ₯ μΏ ν€λΌκ³ μ§μΉνκ² μ΅λλ€..
μλ²μμ λ°μ λ°μ΄ν°λ€μ κ°λ°μ λꡬ μ½μμμ μΆλ ₯νλ λ°©λ²μ λν΄ μμλ³΄κ² μ΅λλ€. λ§μ½ μ΄λ―Έμ§μ κ°μ λ°μ΄ν°λ€μ μλ²μμ λ°μλ€κ³ νλ©΄ result.data.resultλ₯Ό μ λ ₯νμ λ μΆλ ₯μ΄ μλ¬μμ΄ λ κΉμ?? λ€ λ§μ΅λλ€. μλ©λλ€. μλ¬κ° λ°μν©λλ€. μ μλ¬κ° λ¬κ³ , μ΄λ»κ² μ κ·Όμ νλ©΄ λ κΉμ?? μ°μ μλ¬κ° λλ μ΄μ λ μ½κ² λ§ν΄ DOM κ°μ²΄μ result κ°μ΄ μκΈ° λλ¬Έμ λλ€. γ £κ°μ²΄μ λ΄μμ€μΌ νλ€! κ²°κ΅ κ°λ°μ λꡬ μ½μμμ result.data.result μ μ κ·ΌνκΈ° μν΄μλ ν΄λΌμ΄μΈνΈλ‘ λ°μ΄ν° κ°μ λ³΄λΌ λ ν μμμ κ°μ²΄ μμ λ£μ΄μ£Όλ©΄ λ©λλ€. var aaa = { dummy: null , init: function() { this.addEvent(); } , addEvent: fu..
μΉ κ°λ°μλΆλ€μ΄λΌλ©΄ DOM μ΄λΌλ λ¨μ΄ νλ²μ λλ λ€μ΄λ³΄μ ¨μ κ²λλ€. μ μμ DOMμ λν΄ λ§μ΄ λ€μ΄λ΄€μ§λ§ μ νν κ·Έκ² λ¬΄μμΈμ§λ μλͺ°λμ΅λλ€. κ°λ°μλΌλ©΄ κΆκΈν κ²μ λν΄ κ·Έλ₯ λμ΄κ°λ©΄ μλκΈ°μ DOMμ λν΄ κ³΅λΆν΄λ΄€μ΅λλ€. Aldevλ, Code Playgroundλ, WITλΈλ‘κ·Έμ κ³ μ°μλμ μλ£λ₯Ό ν λλ‘ μ κ° μ΄ν΄ν λ΄μ©μ λ°νμΌλ‘ μ 리νμ΅λλ€. νλ¦° λΆλΆμ΄ μμΌλ©΄ μΈμ λ μ§μ ν΄μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€. μ°Έκ³ ν λΈλ‘κ·Έλ€μ λν΄μλ νλ¨μ μ£Όμλ₯Ό λ¨κΉλλ€. l BOM κ³Ό DOM μΉμ κΈ°λ³Έμ μΌλ‘ μΉ λΈλΌμ°μ λ₯Ό ν΅ν΄ μλΉμ€ λ©λλ€. ν¬λ‘¬, μ¬ν리, μ΅μ€νλ‘μ΄ λ±μ΄ λ°λ‘ μΉ λΈλΌμ°μ μ λλ€. λΈλΌμ°μ λ html μ½μ΄λ€μ¬ μ¬μ©μμκ² λ³΄μ¬μ€λλ€. μ΄λ¬ν λΈλΌμ°μ μ κ΄λ ¨λ κ°μ²΄λ€μ μ§ν©μ λΈλΌμ°μ κ°μ²΄ λͺ¨λΈ μ¦..
μ¬μ§κ³Ό κ°μ΄ λμΌν ν΄λμ€μ λν΄μ λ€λ₯΄κ² css μμ±μ ν΄μ£Όκ³ μΆμ λ μ¬μ©νλ λ°©λ²μ λλ€. μλ₯Ό λ€μ΄ μμ 2κ°μ μ΄λ―Έμ§κ° μλλ° 2κ° λͺ¨λ λμΌν νκ·Έλ‘ μμ±λ λ€ λ°μ΄ν° κ°λ§ λ€λ₯΄κ² λ°μμ΅λλ€. μ΄λ―Έμ§ A μ΄λ―Έμ§ B λ§μ½ class="background" λΌκ³ ν λ $('.background').css("color", "red"); νκ² λλ©΄ 2κ°μ μ΄λ―Έμ§ λͺ¨λ ν°νΈκ° λΉ¨κ°μμΌλ‘ λ©λλ€. μ΄ κ²½μ° μ λ 첫λ²μ§Έ μ΄λ―Έμ§μλ§ λΉ¨κ°μ ν°νΈλ‘ νκ³ μΆμ λ λ€μκ³Ό κ°μ λ°©λ²μ μ¬μ©νμ¬ ν΄λΉ νκ·Έμ μ κ·Όνλ©΄ λ©λλ€. crud.list.onComplete = function(result) { console.log(result); if(result.result) { var dataList = result.dat..
# μλΈλ¦Ώ??!! μλΈλ¦Ώμ μλ² μͺ½μμ μ€νλλ©° ν΄λΌμ΄μΈνΈμ μμ²μ λμ μΌλ‘ μ²λ¦¬ν μ μκ²λ λμμ£Όλ μλ° ν΄λμ€μ λλ€. μλΈλ¦Ώμ μλ° ν΄λμ€μ΄λ―λ‘ μλ°μ μΌλ°μ μΈ νΉμ§μ λͺ¨λ κ°μ§κ³ μμ΅λλ€. νμ§λ§ μλ°μ λ¬λ¦¬ μλΈλ¦Ώμ ν°μΊ£κ³Ό κ°μ μλΈλ¦Ώ 컨ν μ΄λμμ μ€νλμΌ ν©λλ€. ν΄λΌμ΄μΈνΈκ° μΉ μλ²μ μμ²μ νλ©΄ μΉ μλ²λ κ·Έ μμ²μ ν°μΊ£κ³Ό κ°μ μΉ μ ν리μΌμ΄μ μλ²(WAS)μ μμν©λλ€. κ·Έλ¬λ©΄ WAS λ κ° μμ²μ ν΄λΉνλ μλΈλ¦Ώμ μ€νν©λλ€. κ·Έ ν μλΈλ¦Ώμ μμ²μ λν κΈ°λ₯μ μνν ν κ²°κ³Όλ₯Ό λ°ννμ¬ ν΄λΌμΈνΈμκ² μλ΅νκ² λ©λλ€. μλΈλ¦Ώμ νΉμ§ μλ²μμ μ€νλλ€. μ μ μΈ μΉ νλ‘κ·Έλ¨μ λμ μΌλ‘ μ²λ¦¬ν μ μκ² ν΄μ€λ€. μ€λ λ λ°©μμΌλ‘ μ€νλλ€. μλ° ν΄λμ€μ΄κΈ° λλ¬Έμ μλ°μ νΉμ§μ κ°λλ€. μλΈλ¦Ώ 컨..
λλΆλΆ μ¬λλ€μ λ°μ΄ν°λ² μ΄μ€μ λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν (DBMS : DataBase Management System)μ ꡬλ³νμ§ μκ³ νν λ°μ΄ν°λ² μ΄μ€λ‘ ν΅ν©ν΄μ λ§νκ³€ ν©λλ€. νμ§λ§ μ νν μ΄ λμ κ°λ μ μμ°ν λ€λ¦ λλ€. λ°μ΄ν°λ² μ΄μ€ μμ λ°μ΄ν°λ₯Ό κ΄λ¦¬ν΄μ£Όλ νλ‘κ·Έλ¨μ΄ λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν μ λλ€. μμ μλ Mysql λ μ€λΌν΄, λͺ½κ³ λΉλ λ±μ΄ μμ΅λλ€. λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν μ 1960λ λμ κ°λ°λμ΄ νμ¬κΉμ§λ κΎΈμ€ν μ§νλ₯Ό κ±°λνκ³ λ°μ λκ³ μμ΅λλ€. μ¬μ©νλ λ°μ΄ν° λͺ¨λΈμ λ°λΌ 4μΈλλ‘ λλμ μμ΅λλ€. 1μΈλμΈ λ€νΈμν¬ DBMS 2μΈλμΈ κ΄κ³ DBMS 3μΈλμΈ κ°μ²΄μ§ν₯ κ°μ²΄κ΄κ³ DBMS 4μΈλμΈ NoSQL, NewSQL DBMS (λ°μ΄ν° λͺ¨λΈμ΄λ? λ°μ΄ν°λ₯Ό λ°μ΄ν°λ² μ΄μ€μ μ μ₯νλ ꡬ쑰λ₯Ό..
μλ°μ€ν¬λ¦½νΈλ Java, Python μ²λΌ κ°μ²΄μ§ν₯μΈμ΄(Object-Oriented Programming, OOP)μ λλ€. κ°μ²΄μ§ν₯μ΄λ νλ‘κ·Έλ¨μ κ·Έμ λ°μ΄ν°μ μ²λ¦¬λ°©λ²μΌλ‘ λλλκ² μλκ³ , νλ‘κ·Έλ¨μ λ€μμ "κ°μ²΄"λ‘ λ§λ€κ³ , μ΄λ€μ΄ μλ‘ μνΈμμ©μ ν΅ν΄ λ§λ€μ΄μ§λ λ°©μμ λλ€. μλ₯Ό λ€μ΄ μλμ°¨κ° μλ€κ³ νλ©΄ μλμ°¨μ λ°ν΄, μμ§, λμ΄ λ±μ κ°μ²΄λΌκ³ ν μ μμ΅λλ€. μ΄ κΈμ νλ‘ν νμ μ κ΄ν κΈ μ΄λ―λ‘ κ°μ²΄ μ§ν₯μ λν΄μ μ΄ μ λλ§ μκ³ κ°κ² μ΅λλ€. νμ§λ§ ν΄λμ€κ° μ‘΄μ¬νλ Javaμλ λ¬λ¦¬ μλ°μ€ν¬λ¦½νΈ(μ΄ν JS)μλ ν΄λμ€λΌλ κ°λ μ΄ μμ΅λλ€. λμ JSμλ νλ‘ν νμ μ΄λΌλ κ°λ μ΄ μ‘΄μ¬ν©λλ€. μ΄ λλ¬Έμ JSκ° νλ‘ν νμ κΈ°λ°μ κ°μ²΄μ§ν₯ μΈμ΄λΌκ³ λΆλ¦¬λ μ΄μ μ λλ€. ECMA6μμ ν΄λμ€ λ¬Έλ²μ΄ ..
λ°μ΄ν°λ² μ΄μ€μ κ°μ₯ μμ΄μ μΈ λͺ©μ μ λ°μ΄ν°λ₯Ό μμ§νλ κ²μ λλ€. λ΄κ° νμν λ°μ΄ν°λ₯Ό μμ§νκΈ° μν΄μ λ¨Όμ μμ§ λμμ΄ λλ λ°μ΄ν°μ μ νμ νμ νκ³ μμ΄μΌ ν©λλ€. μΌλ°μ μΌλ‘ λ°μ΄ν°λ ννμ λ°λΌ μ ν λ°μ΄ν°, λ°μ ν λ°μ΄ν°, λΉμ ν λ°μ΄ν°λ‘ λΆλ₯ν μ μμ΅λλ€. μ ν λ°μ΄ν° μ νλ°μ΄ν°(structured data)λ μ΄λ¦ κ·Έλλ‘ κ΅¬μ‘°νλ λ°μ΄ν° μ λλ€. μ¦ λ―Έλ¦¬ ꡬ쑰λ₯Ό μ νμ¬ μ ν΄μ§ ꡬ쑰μ λ°λΌ μ μ₯λλ λ°μ΄ν°μ λλ€. νν κ΄κ³ λ°μ΄ν°λ² μ΄μ€μ ν μ΄λΈμ΄ λ΄κ³ μλ λ°μ΄ν°λ€μ΄ μ νλ°μ΄ν°μ λλ€. λ°μ ν λ°μ΄ν° λ°μ ν λ°μ΄ν°(semi-structured data)λ μ ν λ°μ΄ν°μ²λΌ ꡬ쑰μ λ°λΌ μ μ₯λμ§λ§ λ°μ΄ν° μμ ꡬ쑰μ λν μ€λͺ μ΄ ν¨κ» ν¬ν¨λμ΄ μμ΅λλ€. λ°λΌμ λ°μ΄ν° λ΄μ©μ λν μ€λͺ , μ¦ κ΅¬μ‘°λ₯Ό ν..
μ°λ¦¬λ νλμ¬νμμ λ°μ΄ν°μ μ 보λΌλ λ¨μ΄λ₯Ό λ§μ΄ μ¬μ©νκ³ μ€μ λ‘ μ΄λ₯Ό μ¬μ©νκ³ μμ΅λλ€. νλμ¬νμμ λ°μ΄ν°μ μ 보λ₯Ό μλΉν μ€μν μμλ‘ μ·¨κΈλκ³ μμ΅λλ€. μ°λ¦¬λ λ°μ΄ν°μ μ 보λ₯Ό κ°μ μλ―Έλ‘ λ§μ΄ μ¬μ©νκ³ μλλ°, λ°μ΄ν°μ μ 보λ₯Ό μμ°ν λ€λ¦ λλ€. λμ μ μλ₯Ό μ΄ν΄λ³΄λ©΄, λ°μ΄ν° : νμ€ μΈκ³μμ λ¨μν κ΄μ°°νκ±°λ μΈ‘μ νμ¬ μμ§ν μ¬μ€μ΄λ κ° μ 보 : λ°μ΄ν°λ₯Ό μμ¬κ²°μ μ μ μ©νκ² νμ©ν μ μλλ‘ μ²λ¦¬νμ¬ μ²΄κ³μ μΌλ‘ μ‘°μ§ν κ²°κ³Όλ¬Ό μ λλ€. μ½κ² λΉμ νμλ©΄ λ°μ΄ν° : λͺ©μ₯μμ λ§ μ§ μ°μ (μμ ) μ 보 : λͺ©μ₯μμ μ§ μ°μ λ₯Ό κ°κ³΅νμ¬ ν©μ λ΄μ μ°μ λΌκ³ λ³Όμ μμ΅λλ€. μ’μ μ°μ λ₯Ό μ»μΌλ €λ©΄ νμ§ μ’μ μμ λ₯Ό ν보ν΄μΌνλ κ²μ²λΌ, κ°μΉ μλ μ 보λ₯Ό μ»μΌλ €λ©΄ νμ¬ μν©μ μ νν κ΄μ°°νκ³ μΈ‘μ νμ¬ μλ―Έμλ ..
νμ¬μ μΈν΄μΌλ‘ μ μ¬λ₯Ό νκ³ , λνλκ»μ κ³Όμ νλλ₯Ό μ£Όμ ¨μ΅λλ€. μλ°μ€ν¬λ¦½νΈλ‘ κ°λ¨ν κ³μ°κΈ°λ₯Ό λ§λλ κ²μ΄μμ΅λλ€. μ΄λ ΅μ§ μκ² κ΅¬νμ νμκ³ , λνλκ» λ³΄μ¬λλ Έμ΅λλ€. κ³μ°κΈ° κΈ°λ₯ μ체μλ λ¬Έμ κ° μ νμμμΌλ.. κ³μ°κΈ°λ₯Ό ꡬνν μ½λλ₯Ό 보μκ³ λ μ΄λ° λ§μ νμ ¨μ΅λλ€. μμ§λ μ νν κΈ°μ΅λ©λλ€. μ¬μ§μ΄ λ§ν¬κΉμ§λ κΈ°μ΅μ΄ λ©λλ€. "μ½λμ μ² νμ΄ λ΄κ²¨ μμ§ μμ" β»μ²μμ μ κ° κ΅¬ννλ μ½λμ λλ€. μ½λκ° λ무 κΈΈμ΄ λ§ν¬λ‘ λ체ν©λλ€. μΌν보면 κ°λ μ±λ μκ³ λλ¦λλ‘ ν¨μνλ μμΌμ λ¬Έμ κ° μμ΄ λ³΄μΌμ μμ΅λλ€. νμ§λ§ λ§μ½ κ³μ°κΈ°μ λλ¨Έμ§λ₯Ό ꡬν΄μ£Όλ % κΈ°λ₯μ μΆκ°ν΄μ£Όκ³ μΆλ€λ©΄ κ³μ° κ΄λ ¨ν λ‘μ§μΌλ‘ λ€μ΄κ°μ λ΄λΆλ₯Ό λ―μ΄κ³ μ³μΌ ν©λλ€. λ¬Όλ‘ κ³μ°κΈ° κ΄λ ¨ μ½λλ 볡μ‘νκ³ κΈΈμ§ μμμ λ¬Έμ κ° λμ§ μμ§λ§ μ¬..
Expressλ κΈ°μ‘΄ Node.js μ½λμ κ°λ μ±κ³Ό νμ₯μ±μ΄ λ§μ΄ λ¨μ΄μ§λ€κ³ μκ°νμ¬ λ§λ€μ΄μ§ μΉ μλ² νλ μμν¬μ λλ€. Expressλ http λͺ¨λμ μμ²κ³Ό μλ΅ κ°μ²΄μ μΆκ° κΈ°λ₯λ€μ λΆμ¬νμ΅λλ€. λ λΌμ°ν°λ‘ μ½λλ₯Ό λΆλ¦¬νκΈ° μ¬μ μ μ§λ³΄μ λν μ©μ΄ν©λλ€. Express μΈμλ koaλ hapi κ°μ μΉ μλ² νλ μμν¬κ° μμ§λ§ λ€μ μ¬μ§κ³Ό κ°μ΄ Expressκ° μλμ μΌλ‘ μΈκΈ°κ° λ§μ΅λλ€. λ¬Όλ‘ μ¬μ©μκ° λ§λ€κ³ νμ μ’μ건 μλμ§λ§, μ¬μ©μκ° λ§μ κ²μλ μ΄μ κ° μμ΅λλ€. μ¬μ©μκ° λ§μ μλ‘ λ²κ·Έκ° μ κ³ , κΈ°λ₯ μΆκ°λ μ μ§λ³΄μλ νλ°μ΄ λκΈ° λλ¬Έμ λλ€. Express-generatorλ Express νκ²½μ κ°λ¨νκ² κ΅¬μΆν΄μ£Όλ npmμ λλ€. λ°λΌμ μ¬μ©νλ©΄ μ½κ² Node.js κ°λ°μ ν μ μμ΅λλ€...
bcryptλ? μΉ νμ΄μ§λ₯Ό ꡬνν λ 보μμ κ°μ₯ κΈ°λ³Έμ μΌλ‘ μνλμ΄μΌ ν μμμ λλ€. λΉλ°λ²νΈλ₯Ό ν μ€νΈ κ·Έλλ‘ λ°μ΄ν° λ² μ΄μ€μ μ μ₯ν΄ κ΄λ¦¬νλ κ²μ ν΄μ»€μκ² λλκ³ λ°μ΄ν°λ₯Ό μ£Όλ κ²κ³Ό λ€λ¦ μμ΅λλ€. μ΄λ₯Ό λ°©μ§νκ³ μ λΉλ°λ²νΈλ₯Ό μνΈν νλ κ²μ΄ bcrypt λͺ¨λμ λλ€. bcryptλ λ¨λ°©ν₯ ν΄μ ν¨μλ₯Ό μ΄μ©ν λͺ¨λλ‘μ¨ Salt λΌλ κ°λ μ μ¬μ©ν©λλ€. Salt λΌλ κ°κ³Ό ν΄μλ λΉλ°λ²νΈλ₯Ό ν©μ³ λ°μ΄ν°λ² μ΄μ€μ μ μ₯νκ² λλλ° μ΄λ κ² νλ©΄, λ§μ½ "1234" κ°μ λΉλ°λ²νΈλ₯Ό ν΄μν¨μμ λ£μμλ νμ λ€λ₯Έ κ°μ Salt κ°κ³Ό λΉλ°λ²νΈκ° ν©μ³μ ν΄μ»€λ€μ΄ λΉλ°λ²νΈλ₯Ό μ°Ύλλ° μμ΄ λμ± νλ€κ² λ§λλλ€. μ¬μ© λ°©λ² npm i bcryptλ₯Ό μνν©λλ€. const bcrypt = require('bcrypt'); ..