[HTML] λ“œλ‘­λ‹€μš΄ λͺ©λ‘
Β·
Frontend/HTML
μœ„ κ·Έλ¦Όκ³Ό 같이 μž…μ°° λ‹¨μœ„ λ‚΄μš©μ— λ“œλ‘­λ‹€μš΄ λͺ©λ‘μ„ μ‚¬μš©ν•΄ λ³΄μ•˜μŠ΅λ‹ˆλ‹€. λ“œλ‘­λ‹€μš΄ λͺ©λ‘μ€ μ‚¬μš©μžκ°€ λ‚΄μš©μ„ 직접 μž…λ ₯ν•˜μ§€ μ•Šκ³  μ—¬λŸ¬ μ˜΅μ…˜ μ€‘μ—μ„œ 선택할 수 μžˆλ„λ‘ ν•΄μ€λ‹ˆλ‹€. μ„ νƒν•˜μ„Έμš” 1,000 원 3,000 원 5,000 원 1,0000 원 νƒœκ·Έλ‘œ λ“œλ‘­λ‹€μš΄ λͺ©λ‘μ˜ μ‹œμž‘κ³Ό 끝을 ν‘œμ‹œν•˜κ³ , κ·Έ μ•ˆμ— νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ μ›ν•˜λŠ” ν•­λͺ©μ„ μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ● νƒœκ·Έμ˜ 속성 size: 화면에 ν‘œμ‹œν•  λ“œλ‘­λ‹€μš΄ ν•­λͺ©μ˜ 개수λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€. (default = 1) multiple: λ“œλ‘­λ‹€μš΄ λͺ©λ‘μ—μ„œ λ‘˜ μ΄μƒμ˜ ν•­λͺ©μ„ 선택할 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€. ● νƒœκ·Έμ˜ 속성 value: ν•΄λ‹Ή ν•­λͺ©μ„ 선택할 λ•Œ μ„œλ²„λ‘œ λ„˜κ²¨μ€„ 값을 μ§€μ •ν•©λ‹ˆλ‹€. selected: λ“œλ‘­λ‹€μš΄ 메뉴λ₯Ό μ‚½μž…ν•  λ•Œ 기본적으둜 μ„ νƒν•΄μ„œ 보여 쀄 ν•­λͺ©μ„ μ§€μ •ν•©λ‹ˆλ‹€.
[CSS] Bootstrap νƒ­ μ‚¬μš©λ²•
Β·
Frontend/CSS
μ›Ή κ°œλ°œμ„ ν•˜λ©΄μ„œ 탭은 맀우 μœ μš©ν•˜κ²Œ μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. μœ„ 사진은 μ œκ°€ 직접 Bootstrap을 μ‚¬μš©ν•˜μ—¬ λ§Œλ“  νƒ­ μž…λ‹ˆλ‹€. μ°¨λ‘€λŒ€λ‘œ νƒ­ μ‚¬μš©λ²•μ— λŒ€ν•΄ μ•Œλ €λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€. ● μ™ΈλΆ€ μŠ€νƒ€μΌμ‹œνŠΈ 적용 기본적으둜 νƒœκ·Έ μ•ˆμ— λ„£μ–΄ μ£Όμ…”μ•Ό ν•©λ‹ˆλ‹€. ● νƒ­ 메뉴 ꡬ성 νŒλ§€ν˜„ν™© κ΅¬λ§€ν˜„ν™© , νƒœκ·Έλ₯Ό μ΄μš©ν•˜μ—¬ μˆœμ„œ μ—†λŠ” λͺ©λ‘μ„ λ§Œλ“€κ³  λ²„νŠΌμœΌλ‘œ νƒ­ 메뉴λ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€. ● 메뉴별 λ‚΄μš© ꡬ성 μƒν’ˆλͺ… μ΅œκ³ μž…μ°°κ°€ κ²½λ§€μƒνƒœ 남은 λ§ˆκ°μ‹œκ°„ HTML CSS JAVASCRIPT ... νƒœκ·Έλ₯Ό μ΄μš©ν•˜μ—¬ 메뉴별 λ‚΄μš©μ„ κ΅¬μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€. νƒœκ·Έλ₯Ό μ΄μš©ν•˜μ—¬ 각 μ—΄λ§ˆλ‹€ λ„ˆλΉ„λ₯Ό μ§€μ •ν•˜μ˜€μŠ΅λ‹ˆλ‹€. ● νƒ­ μ „ν™˜ JS 적용 ● Bootstrap JavaScript plugin 적용 λ₯Ό νƒœκ·Έκ°€ λ‹«νžˆκΈ° 전에 νŽ˜μ΄μ§€ 끝 뢀뢄에 λ„£μ–΄ ν™œμ„±ν™” μ‹œν‚΅λ‹ˆλ‹€. μ§€κΈˆκΉŒμ§€ ..
[Spring] 쒋은 객체 지ν–₯ μ„€κ³„μ˜ 5가지 원칙(SOLID)
Β·
Backend/Spring
SRP(Single responsibility principle) 단일 μ±…μž„ 원칙 ν•œ ν΄λž˜μŠ€λŠ” ν•˜λ‚˜μ˜ μ±…μž„λ§Œ κ°€μ Έμ•Ό ν•œλ‹€. μ€‘μš”ν•œ 기쀀은 변경이닀. 변경이 μžˆμ„ λ•Œ νŒŒκΈ‰ νš¨κ³Όκ°€ 적으면 단일 μ±…μž„ 원칙을 잘 λ”°λ₯Έ 것이닀. ex) UI λ³€κ²½, 객체의 생성과 μ‚¬μš©μ„ 뢄리 OCP(Open/closed principle) 개방-폐쇄 원칙 μ†Œν”„νŠΈμ›¨μ–΄ μš”μ†ŒλŠ” ν™•μž₯μ—λŠ” μ—΄λ € μžˆμœΌλ‚˜ λ³€κ²½μ—λŠ” λ‹«ν˜€ μžˆμ–΄μ•Ό ν•œλ‹€. λ‹€ν˜•μ„±μ„ μ‚¬μš©ν•˜λ”λΌλ„ OCP 원칙을 지킬 수 μ—†λ‹€λŠ” 문제점(ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œ λ³€κ²½)이 μžˆλ‹€. 객체λ₯Ό μƒμ„±ν•˜κ³ , 연관관계λ₯Ό λ§Ίμ–΄μ£ΌλŠ” λ³„λ„μ˜ 쑰립, μ„€μ •μžκ°€ ν•„μš”ν•˜λ‹€. (μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆμ˜ μ—­ν• ) LSP(Liskov substitution principle) λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙 ν”„λ‘œκ·Έλž¨μ˜ κ°μ²΄λŠ” ν”„λ‘œκ·Έλž¨μ˜ 정확성을 깨뜨..
[Java] μ—΄κ±°ν˜•(enum)μ΄λž€?
Β·
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 μ—΄κ±°..
[Java] μ˜€λ²„λΌμ΄λ”©(overriding)μ΄λž€?
Β·
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) ..
[Java] Map μΈν„°νŽ˜μ΄μŠ€
Β·
Backend/Java
* λ³Έ λ‚΄μš©μ€ 을 μ°Έκ³ ν•˜μ—¬ μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€. ● MapμΈν„°νŽ˜μ΄μŠ€λŠ” ν‚€(key)와 κ°’(value)을 ν•˜λ‚˜μ˜ 쌍으둜 λ¬Άμ–΄μ„œ μ €μž₯ν•˜λŠ” μ»¬λ ‰μ…˜ 클래슀λ₯Ό κ΅¬ν˜„ν•˜λŠ” 데 μ‚¬μš©λœλ‹€. ν‚€λŠ” 쀑볡될 수 μ—†μ§€λ§Œ 값은 쀑볡을 ν—ˆμš©ν•œλ‹€. 기쑴에 μ €μž₯된 데이터와 μ€‘λ³΅λœ 킀와 값을 μ €μž₯ν•˜λ©΄ 기쑴의 값은 없어지고 λ§ˆμ§€λ§‰μ— μ €μž₯된 값이 λ‚¨κ²Œ λœλ‹€. MapμΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ ν΄λž˜μŠ€λ‘œλŠ” Hashtable, HashMap, LinkedHashMap, SortedMap, TreeMap 등이 μžˆλ‹€. β€» MapμΈν„°νŽ˜μ΄μŠ€μ—μ„œ κ°’(value)은 쀑볡을 ν—ˆμš©ν•˜κΈ° λ•Œλ¬Έμ— Collectionνƒ€μž…μœΌλ‘œ λ°˜ν™˜ν•˜κ³ , ν‚€(key)λŠ” 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— Setνƒ€μž…μœΌλ‘œ λ°˜ν™˜ν•œλ‹€.
[Java] λžŒλ‹€μ‹(Lambda Expression)
Β·
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; }..
[Spring] MVC(Model, View, Controller) 정리
Β·
Backend/Spring
● MVC(Model, View, Controller)λŠ” μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€, 데이터 및 논리 μ œμ–΄λ₯Ό κ΅¬ν˜„ν•˜λŠ” 데 널리 μ‚¬μš©λ˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ λ””μžμΈ νŒ¨ν„΄μž…λ‹ˆλ‹€. μ†Œν”„νŠΈμ›¨μ–΄μ˜ λΉ„μ§€λ‹ˆμŠ€ 둜직과 화면을 κ΅¬λΆ„ν•˜λŠ”λ° 쀑점을 두고 μžˆμŠ΅λ‹ˆλ‹€. MVC의 λͺ©μ μ€ ν™”λ©΄κ³Ό 데이터 처리λ₯Ό 뢄리해 μ½”λ“œκ°„μ˜ 쒅속성을 쀄이고 κ΅¬μ„±μš”μ†Œκ°„μ˜ 역할을 λͺ…ν™•ν•˜κ²Œ ν•¨μœΌλ‘œμ¨ μ½”λ“œ 뢄리가 쉽고 ν˜‘μ—…μ„ μš©μ΄ν•˜κ²Œ ν•˜λŠ”λ° μžˆμŠ΅λ‹ˆλ‹€. ● λͺ¨λΈ(Model) μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 무엇을 ν•  것인지 μ •μ˜ν•œλ‹€. λ‚΄λΆ€ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ 역할을 ν•œλ‹€. 즉, 데이터 μ €μž₯μ†Œ(ex. DB)와 μ—°λ™ν•˜μ—¬ μ‚¬μš©μžκ°€ μž…λ ₯ν•œ λ°μ΄ν„°λ‚˜ μ‚¬μš©μžμ—κ²Œ 좜λ ₯ν•  데이터λ₯Ό 닀룬닀. 특히, μ—¬λŸ¬ 개의 데이터 λ³€κ²½ μž‘μ—…(ex. μΆ”κ°€, λ³€κ²½, μ‚­μ œ)λ₯Ό ν•˜λ‚˜μ˜ μž‘μ—…μœΌλ‘œ 묢은 νŠΈλžœμž­μ…˜μ„ λ‹€λ£¨λŠ” ..
_μ„±ν˜Έ_
🌱 μ„±ν˜Έ λΈ”λ‘œκ·Έ