Backend/Sequelize
π₯ λ°μν λ¬Έμ getBoards ν¨μλ μΉ΄ν
κ³ λ¦¬μ ν΄λΉνλ κ²μκΈ μ 체λ₯Ό νμ΄μ§ μ²λ¦¬νκΈ° μν ν¨μλ€. (κ°λ
μ±μ μν΄ κ΄λ ¨ μλ μ½λ μΌλΆ μλ΅) /* νμ΄μ§ μ²λ¦¬λ₯Ό μν ν¨μλ€(μ°Έκ³ μ©) const getPagination = (page, size) => { const limit = size ? +size : 10; // κ°μ Έμ¬ λ°μ΄ν° μ const offset = page ? page * limit : 0; // κ°μ Έμ¬ λ°μ΄ν°μ μ΄κΈ° μμΉκ° return { limit, offset }; }; const getPagingData = (data, page, limit) => { // count: where μ , μ°κ²° κ΄κ³ λ±μ 쑰건μ λΆν©νλ λ μ½λμ μ 체 κ°μ // rows: where μ , μ°κ²° κ΄..
Backend/Spring
SRP(Single responsibility principle) λ¨μΌ μ±
μ μμΉ ν ν΄λμ€λ νλμ μ±
μλ§ κ°μ ΈμΌ νλ€. μ€μν κΈ°μ€μ λ³κ²½μ΄λ€. λ³κ²½μ΄ μμ λ νκΈ ν¨κ³Όκ° μ μΌλ©΄ λ¨μΌ μ±
μ μμΉμ μ λ°λ₯Έ κ²μ΄λ€. ex) UI λ³κ²½, κ°μ²΄μ μμ±κ³Ό μ¬μ©μ λΆλ¦¬ OCP(Open/closed principle) κ°λ°©-νμ μμΉ μννΈμ¨μ΄ μμλ νμ₯μλ μ΄λ € μμΌλ λ³κ²½μλ λ«ν μμ΄μΌ νλ€. λ€νμ±μ μ¬μ©νλλΌλ OCP μμΉμ μ§ν¬ μ μλ€λ λ¬Έμ μ (ν΄λΌμ΄μΈνΈ μ½λ λ³κ²½)μ΄ μλ€. κ°μ²΄λ₯Ό μμ±νκ³ , μ°κ΄κ΄κ³λ₯Ό λ§Ίμ΄μ£Όλ λ³λμ 쑰립, μ€μ μκ° νμνλ€. (μ€νλ§ μ»¨ν
μ΄λμ μν ) LSP(Liskov substitution principle) 리μ€μ½ν μΉν μμΉ νλ‘κ·Έλ¨μ κ°μ²΄λ νλ‘κ·Έλ¨μ μ νμ±μ κΉ¨λ¨..
Backend/Java
* λ³Έ λ΄μ©μ μ μ°Έκ³ νμ¬ μμ±νμμ΅λλ€. β μ΄κ±°νμ μ¬λ¬ μμλ₯Ό μ μΈν΄μΌ ν λ, νΈλ¦¬νκ² μ μΈν μ μλ λ°©λ²μ΄λ€. β μΌλ°μ μΌλ‘ μμλ₯Ό μ μΈνλ λ°©λ² class Card { static final int CLOVER = 0; static final int HEART = 1; static final int DIAMOND = 2; static final int SPADE = 3; final int kind; } β μ΄κ±°νμ μ΄μ©νμ¬ μμλ₯Ό μ μΈνλ λ°©λ² class Card { enum Kind { CLOVER, HEART, DIAMOND, SPADE } final Kind kind; } λ°λ‘ κ°μ μ§μ ν΄μ£Όμ§ μμλ μλμ μΌλ‘ 0λΆν° μμνλ μ μκ°μ΄ ν λΉλλ€. μ΄κ±°νμ μ μνλ λ°©λ² - enum μ΄κ±°..
Backend/Java
* λ³Έ λ΄μ©μ μ μ°Έκ³ νμ¬ μμ±νμμ΅λλ€. β μ μ μ‘°μ ν΄λμ€λ‘λΆν° μμλ°μ λ©μλμ λ΄μ©μ λ³κ²½νλ κ²μ λ§νλ€. μμλ°μ λ©μλλ₯Ό κ·Έλλ‘ μ¬μ©νκΈ°λ νμ§λ§, μμ ν΄λμ€ μμ μ λ§κ² λ³κ²½ν΄μΌνλ κ²½μ°κ° λ§λ€. μ΄λ΄ λ μ‘°μμ λ©μλλ₯Ό μ€λ²λΌμ΄λ©νλ€. class Point { int x; int y; String Location() { return x + y; } } class Point3D extends point { int z; String Location() { return x + y + z; } } β μ€λ²λΌμ΄λ©μ 쑰건 μ μΈλΆκ° μ‘°μ ν΄λμ€μ λ©μλμ μΌμΉν΄μΌ νλ€. μ κ·Ό μ μ΄μλ₯Ό μ‘°μ ν΄λμ€μ λ©μλλ³΄λ€ μ’μ λ²μλ‘ λ³κ²½ν μ μλ€. (public > protected > (default) ..
Backend/Java
* λ³Έ λ΄μ©μ μ μ°Έκ³ νμ¬ μμ±νμμ΅λλ€. β MapμΈν°νμ΄μ€λ ν€(key)μ κ°(value)μ νλμ μμΌλ‘ λ¬Άμ΄μ μ μ₯νλ 컬λ μ
ν΄λμ€λ₯Ό ꡬννλ λ° μ¬μ©λλ€. ν€λ μ€λ³΅λ μ μμ§λ§ κ°μ μ€λ³΅μ νμ©νλ€. κΈ°μ‘΄μ μ μ₯λ λ°μ΄ν°μ μ€λ³΅λ ν€μ κ°μ μ μ₯νλ©΄ κΈ°μ‘΄μ κ°μ μμ΄μ§κ³ λ§μ§λ§μ μ μ₯λ κ°μ΄ λ¨κ² λλ€. MapμΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€λ‘λ Hashtable, HashMap, LinkedHashMap, SortedMap, TreeMap λ±μ΄ μλ€. β» MapμΈν°νμ΄μ€μμ κ°(value)μ μ€λ³΅μ νμ©νκΈ° λλ¬Έμ Collectionνμ
μΌλ‘ λ°ννκ³ , ν€(key)λ μ€λ³΅μ νμ©νμ§ μκΈ° λλ¬Έμ Setνμ
μΌλ‘ λ°ννλ€.
Backend/Java
* λ³Έ λ΄μ©μ μ μ°Έκ³ νμ¬ μμ±νμμ΅λλ€. β λλ€μ(Lambda Expression)μ λ©μλλ₯Ό νλμ 'μ(expression)'μΌλ‘ ννν κ²μ΄λ€. λλ€μμ ν¨μλ₯Ό κ°λ΅νλ©΄μλ λͺ
ννκ² ννν μ μκ² ν΄μ€λ€. λ©μλλ₯Ό λλ€μμΌλ‘ νννλ©΄ λ©μλμ μ΄λ¦κ³Ό λ°νκ°μ΄ μμ΄μ§λ―λ‘, λλ€μμ 'μ΅λͺ
ν¨μ(anonymous function)'λΌκ³ λ νλ€. μ¦, λλ€μμΌλ‘ μΈν΄ λ©μλλ₯Ό λ³μμ²λΌ λ€λ£¨λ κ²μ΄ κ°λ₯ν΄μ§ κ²μ΄λ€. β λλ€μ μμ±νκΈ° int max(int a, int b) { return a > b ? a : b; } λ©μλμμ μ΄λ¦κ³Ό λ°ννμ
μ μ κ±°νκ³ λ§€κ°λ³μ μ μΈλΆμ λͺΈν΅{} μ¬μ΄μ '->'λ₯Ό μΆκ°νκΈ°λ§ νλ©΄ λλ€. (int a, int b) -> { return a > b ? a : b; }..
Backend/Spring
β MVC(Model, View, Controller)λ μ¬μ©μ μΈν°νμ΄μ€, λ°μ΄ν° λ° λ
Όλ¦¬ μ μ΄λ₯Ό ꡬννλ λ° λ리 μ¬μ©λλ μννΈμ¨μ΄ λμμΈ ν¨ν΄μ
λλ€. μννΈμ¨μ΄μ λΉμ§λμ€ λ‘μ§κ³Ό νλ©΄μ ꡬλΆνλλ° μ€μ μ λκ³ μμ΅λλ€. MVCμ λͺ©μ μ νλ©΄κ³Ό λ°μ΄ν° μ²λ¦¬λ₯Ό λΆλ¦¬ν΄ μ½λκ°μ μ’
μμ±μ μ€μ΄κ³ ꡬμ±μμκ°μ μν μ λͺ
ννκ² ν¨μΌλ‘μ¨ μ½λ λΆλ¦¬κ° μ½κ³ νμ
μ μ©μ΄νκ² νλλ° μμ΅λλ€. β λͺ¨λΈ(Model) μ΄ν리μΌμ΄μ
μ΄ λ¬΄μμ ν κ²μΈμ§ μ μνλ€. λ΄λΆ λΉμ¦λμ€ λ‘μ§μ μ²λ¦¬νκΈ° μν μν μ νλ€. μ¦, λ°μ΄ν° μ μ₯μ(ex. DB)μ μ°λνμ¬ μ¬μ©μκ° μ
λ ₯ν λ°μ΄ν°λ μ¬μ©μμκ² μΆλ ₯ν λ°μ΄ν°λ₯Ό λ€λ£¬λ€. νΉν, μ¬λ¬ κ°μ λ°μ΄ν° λ³κ²½ μμ
(ex. μΆκ°, λ³κ²½, μμ )λ₯Ό νλμ μμ
μΌλ‘ λ¬Άμ νΈλμμ
μ λ€λ£¨λ ..
Backend/Spring
β μ€λΉλ¬Ό JDK: Java 11 μ€μΉ IDE: IntelliJ μ€μΉ β μ€νλ§ νλ‘μ νΈ μμ± http://start.spring.io μ¬μ΄νΈλ‘ μ΄λνμ¬ νλ‘μ νΈ μμ±(λ³ΈμΈμ νλ‘μ νΈμ λ§κ² μ ν ν GENERATE ν΄λ¦) β Open or Import Project IntelliJ IDEA μ€ν Open or Import μ ν μμΆμ νΌ νμΌμ build.gradle μ ν Open as Project(μμ±) β λμ νμΈ κΈ°λ³Έ λ©μΈ ν΄λμ€ μ€ν μ€νλ§ λΆνΈ λ©μΈ μ€ν ν μλ¬ νμ΄μ§λ‘ κ°λ¨νκ² λμ νμΈ(http://localhost:8080)