πŸžν”„λ‘œκ·Έλž˜λ°

πŸžν”„λ‘œκ·Έλž˜λ°/Next.js

[정보] next.js localhost:3000 접속 λΆˆκ°€

해결방법 ν”„λ‘œμ νŠΈ ν΄λ”μ•ˆμ˜ .next νŒŒμΌμ„ μ‚­μ œν•˜κ³  npm run dev μˆ˜ν–‰ 원인섀λͺ… next.js에 처음 μž…λ¬Έν•˜κ³  intellijλ₯Ό ν†΅ν•΄μ„œ μƒ˜ν”Œ ν”„λ‘œμ νŠΈλ₯Ό dev둜 μ‹€ν–‰ν•˜κ³ μž ν–ˆλ‹€. 그런데 λ‚˜λŠ” http://localhost:3000μ—μ„œ μ„œλ²„κ°€ μ‹€ν–‰λ˜μ—ˆλ‹€λŠ” λ©”μ‹œμ§€λ§Œ ν™•μΈν•˜κ³  잘 λ˜μ—ˆλ‚˜ 보닀라고 ν•˜κ³  μ‹€ν–‰ν–ˆλ‹€. κ·ΈλŸ¬λ‚˜ 접속이 λΆˆκ°€ν•˜μ˜€λ‹€. μ™œλƒν•˜λ©΄ μ •μƒμ μœΌλ‘œ μ„œλ²„κ°€ 올라였렀면 μœ„μ˜ 사진과 같이 λ‹€ λ‚˜μ™€μ•Όν•˜λŠ” 것이닀. μ–΄μ©Œλ‹€ λ³΄λ‹ˆ powershell λ˜λŠ” μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈμ—μ„œ 잘 λ˜λŠ” 것을 보아 λ„ˆλ¬΄ μ˜μ•„ν•΄ ν–ˆλ‹€ 그러던 와쀑에 ν•΄κ²° 법을 μ°Ύμ•˜λ‹€. λ°”λ‘œ ν”„λ‘œμ νŠΈ ν΄λ”μ•ˆμ˜ .next νŒŒμΌμ„ μ‚­μ œν•˜κ³  npm run dev μˆ˜ν–‰ν•˜λ©΄ λ˜λŠ” 것이닀. https://stackoverflow.com/questions/7..

πŸžν”„λ‘œκ·Έλž˜λ°

[정보] λ‚˜μ˜ μ›Ή 개발 컀리큘럼

λ‚˜μ˜ ν”„λ‘œκ·Έλž˜λ° μŠ€ν‚¬ μŠ€νƒ λ³€ν™” 4ν•™λ…„ : Eclipse JSP/Servlet λ©‹ λͺ¨λ₯΄κ³  μ‹œμž‘ν•œ μ›Ή ν”„λ‘œκ·Έλž˜λ° μ‚¬νšŒμƒν™œ 3λ…„μ°¨ : Eclipse, JSP/Servlet νšŒμ‚¬μ—…λ¬΄ νˆ΄μ„ λ§Œλ“€κ²Œ λ˜λ‹€ μ‚¬νšŒμƒν™œ 4λ…„μ°¨ : Intellij, Mustache/Spring Boot 무료 ν…œν”Œλ¦ΏμœΌλ‘œ ν™ˆνŽ˜μ΄μ§€λ₯Ό λ§Œλ“€λ‹€. JPAλ₯Ό μ΅νžˆλ‹€ μ‚¬νšŒμƒν™œ 5λ…„μ°¨ : Intellij, Thymeleaf/Spring Boot ν…œν”Œλ¦Ώμ„ λˆμ„ μ£Όκ³  κ΅¬μž…ν•˜λ‹€. λ‹€ 수의 μ„œλΉ„μŠ€λ₯Ό λŸ°μΉ­ν•˜λ‹€. μ‚¬νšŒμƒν™œ 5λ…„μ°¨ : Intellij, Next.js(react), Spring Boot(Java) SPA에 λŒ€ν•˜μ—¬ μ ‘ν•˜λ‹€. 지속적인 Spring Boot λΉŒλ“œμ˜ ν”Όλ‘œκ°μ— νƒˆν”Όν•˜μ—¬ ν”„λ‘ νŠΈμ—”νŠΈ 개발의 이점을 λˆ„λ €λ³΄κ³ μž ν•œλ‹€.

πŸžν”„λ‘œκ·Έλž˜λ°

μΈν…”λ¦¬μ œμ΄ νƒ€μž„λ¦¬ν”„ th:object 빨간색 였λ₯˜ 작기

@Getmapping μ—μ„œ model둜 μ–΄λ–€ 데이터인지 뷰에 전달해야지 인식이 κ°€λŠ₯ν•˜λ‹€. κ·Έ 후에 μ›ν•˜λŠ” λ‘œμ§μ„ μ§„ν–‰ν•˜λ©΄ λœλ‹€.

πŸžν”„λ‘œκ·Έλž˜λ°

[정보] Spring Boot Cache μ‚¬μš©λ°©λ²• 및 주의 사항

μ£Όμ˜μ‚¬ν•­ 캐싱쀑인 데이터에 save λ“± 데이터λ₯Ό μ €μž₯ν•˜κ³ μž ν•  λ•Œ 비ꡐꡬ문이 있으면 λ°˜λ“œμ‹œ @CacheEvict μ–΄λ…Έν…Œμ΄μ…˜μœΌλ‘œ μΊμ‹œλ₯Ό Purgeν•˜κ³  ν•΄μ•Ό κ°’μ˜ μ€‘λ³΅μ‚½μž…μ„ 방지할 μˆ˜μžˆλ‹€. 섀정방법 Spring Bootμ—μ„œ 캐싱 κΈ°λŠ₯을 μ‚¬μš©ν•˜λ €λ©΄, λ¨Όμ € @EnableCaching μ–΄λ…Έν…Œμ΄μ…˜μ„ 톡해 캐싱을 ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 아티클 정보λ₯Ό μ €μž₯ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 캐싱을 μ‚¬μš©ν•˜κ³ μž ν•œλ‹€λ©΄ λ‹€μŒκ³Ό 같이 μ„€μ •ν•©λ‹ˆλ‹€. 1.캐싱을 ν™œμ„±ν™”ν•˜λ €λ©΄, 메인 λ©”μ†Œλ“œμ— μžˆλŠ” ν΄λž˜μŠ€μ— @EnableCaching μ–΄λ…Έν…Œμ΄μ…˜μ„ μΆ”κ°€ν•©λ‹ˆλ‹€. @SpringBootApplication @EnableCaching public class Application { public static void main(String[] args..

πŸžν”„λ‘œκ·Έλž˜λ°

[정보] spring bootμ—μ„œ entity id 생성 μ „λž΅

Spring Bootμ—μ„œ JPA와 ν•¨κ»˜ μ‚¬μš©λ˜λŠ” Entity ID 생성 μ „λž΅μ€ 주둜 λ°μ΄ν„°λ² μ΄μŠ€μ˜ κΈ°λ³Έ ν‚€(primary key)λ₯Ό μžλ™ μƒμ„±ν•˜λŠ” 방식을 μ‚¬μš©ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ λ‹€μ–‘ν•œ μ „λž΅μ΄ μ‚¬μš©λ˜λ©°, μ£Όμš” μ „λž΅μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. GenerationType.AUTO (κΈ°λ³Έ μ „λž΅) 이 μ „λž΅μ€ JPAκ°€ λ°μ΄ν„°λ² μ΄μŠ€μ— 따라 μžλ™μœΌλ‘œ μ„ νƒν•˜λŠ” ID 생성 μ „λž΅μž…λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€μ— 따라 GenerationType.SEQUENCE, GenerationType.IDENTITY, GenerationType.TABLE 쀑 ν•˜λ‚˜λ₯Ό μ‚¬μš©ν•˜κ²Œ λ©λ‹ˆλ‹€. @Entity public class MyEntity { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long ..

πŸžν”„λ‘œκ·Έλž˜λ°

[정보] SQL 데이터 ν‚€ κ°’ 빈 곡백 μ±„μš°κΈ°

λ§Œμ•½ 빈 자리λ₯Ό ν•œ μΉΈμ”© λ‹ΉκΈ°λŠ” κ³Όμ •μ—μ„œ 또 λ‹€λ₯Έ 빈 μžλ¦¬κ°€ λ°œμƒν•œλ‹€λ©΄, 이λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” 반볡적으둜 빈 자리λ₯Ό κ²€μ‚¬ν•˜κ³  ν•„μš”ν•œ 경우 빈 자리λ₯Ό μ±„μ›Œμ£ΌλŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ‹€μŒμ€ 빈 자리λ₯Ό κ²€μ‚¬ν•˜κ³  ν•„μš”ν•œ 경우 빈 자리λ₯Ό μ±„μ›Œμ£ΌλŠ” μ˜ˆμ‹œ μ½”λ“œμž…λ‹ˆλ‹€. SET @current_no = 0; UPDATE ν…Œμ΄λΈ”μ΄λ¦„ SET no = (@current_no := @current_no + 1) WHERE no IS NOT NULL ORDER BY no ASC; μœ„ μ½”λ“œλŠ” λ¨Όμ € λ³€μˆ˜ @current_noλ₯Ό 0둜 μ΄ˆκΈ°ν™”ν•œ ν›„, no 값이 NULL이 μ•„λ‹Œ λͺ¨λ“  행을 번호 μˆœμ„œλŒ€λ‘œ μ—…λ°μ΄νŠΈ ν•©λ‹ˆλ‹€. μ΄λ•Œ, μ—…λ°μ΄νŠΈν•  λ•Œλ§ˆλ‹€ @current_no λ³€μˆ˜λ₯Ό 1μ”© μ¦κ°€μ‹œμΌœμ„œ 번호λ₯Ό λΆ€μ—¬ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ 빈 μžλ¦¬κ°€ ..

πŸžν”„λ‘œκ·Έλž˜λ°

[정보] jpa repository 쿼리문 μž‘μ„± μ‹œ 주의점

μ•„λž˜ μ½”λ“œλŠ” νšŒμ› κ°€μž… μ‹œ 이메일 μ£Όμ†Œμ˜ 쀑볡을 ν™•μΈν•˜κΈ° μœ„ν•œ JPA Repository ν•¨μˆ˜μž…λ‹ˆλ‹€. @Query μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄ email을 λ§€κ°œλ³€μˆ˜λ‘œ λ°›μŠ΅λ‹ˆλ‹€. 이 λ•Œ μ£Όμ˜ν•΄μ•Ό ν•  점은 v.email = :email λΆ€λΆ„μž…λ‹ˆλ‹€. String email을 λ§€ν•‘ν•˜κΈ° μœ„ν•΄μ„œλŠ” 콜둠(:)을 email에 λ°”λ‘œ λΆ™μ—¬μ„œ μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이λ₯Ό 지킀지 μ•ŠμœΌλ©΄ null Exception이 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ 이메일 인증을 ν†΅ν•œ νšŒμ›μ˜ 쑴재 및 μƒνƒœλ₯Ό ν™•μΈν•˜κ³  κ°€μž…μ— 인증을 μ²˜λ¦¬ν•˜λŠ” 둜직으둜 예λ₯Ό λ“ λ‹€. @Repository public interface SignUpRepository extends JpaRepository { /** * 주어진 이메일 μ£Όμ†Œκ°€ λ°μ΄ν„°λ² μ΄μŠ€μ— μ‘΄μž¬ν•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. ..

πŸžν”„λ‘œκ·Έλž˜λ°

[μžλ°”] OTP μΈμ¦μ½”λ“œ 생성 μ†ŒμŠ€μ½”λ“œ

Gradle dependencies { implementation 'com.warrenstrange:googleauth:1.4.0' } μ†ŒμŠ€μ½”λ“œ public String generateOtp2() { // Google Authenticator μ•±μ—μ„œ μƒμ„±λœ 16자리의 λΉ„λ°€ν‚€ String secretKey = "FCJ2I4M76ZOGE5NG52LK236HKRRCK6P4"; // GoogleAuthenticator μΈμŠ€ν„΄μŠ€ 생성 GoogleAuthenticator gAuth = new GoogleAuthenticator(); // ν˜„μž¬ μ‹œκ°„μ— ν•΄λ‹Ήν•˜λŠ” OTP 생성 return "XXX Service : " + gAuth.getTotpPassword(secretKey); } RestController둜 API..

πŸžν”„λ‘œκ·Έλž˜λ°

[정보] 파이썬 μ˜ˆμ™Έμ²˜λ¦¬ μ—¬λŸ¬κ°œ ν•˜κΈ°

νŒŒμ΄μ¬μ—μ„œλŠ” try-catch 문을 μ‚¬μš©ν•˜μ—¬ μ˜ˆμ™Έ 처리λ₯Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ try-catch 문을 μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬λ²ˆ μ˜ˆμ™Έλ₯Ό μ²˜λ¦¬ν•˜λŠ” μ½”λ“œμž…λ‹ˆλ‹€. try: # μ˜ˆμ™Έ λ°œμƒ κ°€λŠ₯ν•œ μ½”λ“œ result = some_function() except ValueError: # ValueError μ˜ˆμ™Έ 처리 print("ValueError occurred") except IndexError: # IndexError μ˜ˆμ™Έ 처리 print("IndexError occurred") except Exception as e: # κ·Έ μ™Έ λͺ¨λ“  μ˜ˆμ™Έ 처리 print("An error occurred:", e) finally: # μ˜ˆμ™Έ λ°œμƒ 여뢀에 상관없이 μ‹€ν–‰λ˜λŠ” μ½”λ“œ print("Execution complete") μœ„ μ½”λ“œ..

TwoIceFish
'πŸžν”„λ‘œκ·Έλž˜λ°' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘ (2 Page)