πŸ“š Study

    Gitaction vs Jenkins κ°œλ…κ³Ό μž₯단점

    Gitaction μž₯점 GitHubμ™€μ˜ κΈ°λ³Έ 톡합: GitActionsλŠ” GitHubμ—μ„œ μ†Œμœ ν•˜λ―€λ‘œ GitHub 리포지토리 및 μ›Œν¬ν”Œλ‘œμ™€ μ›ν™œν•˜κ²Œ ν†΅ν•©λ©λ‹ˆλ‹€. κ°„νŽΈν•œ μ„€μ • 및 μ‚¬μš©: GitActionsμ—λŠ” κ°„λ‹¨ν•˜κ³  직관적인 μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€κ°€ μžˆμ–΄ μ„€μ • 및 μ‚¬μš©μ΄ μ‰½μŠ΅λ‹ˆλ‹€. 무료 CI/CD μ„œλΉ„μŠ€ 제곡: GitActionsλŠ” 맀달 λ„‰λ„‰ν•œ 무료 λΉŒλ“œ μ‹œκ°„μ„ μ œκ³΅ν•˜λ―€λ‘œ μ†Œκ·œλͺ¨ ν”„λ‘œμ νŠΈμ— 맀λ ₯적인 μ˜΅μ…˜μž…λ‹ˆλ‹€. 단점 μ œν•œλœ μ‚¬μš©μž μ •μ˜: GitActionsμ—λŠ” λ§Žμ€ κΈ°λ³Έ 제곡 μž‘μ—…μ΄ μžˆμ§€λ§Œ 일뢀 λ‹€λ₯Έ λ„κ΅¬λ§ŒνΌ λ§Žμ€ μ‚¬μš©μž μ •μ˜λ₯Ό μ œκ³΅ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μ œν•œλœ 타사 톡합: GitActionsλŠ” 타사 λ„κ΅¬μ™€μ˜ 톡합이 μ œν•œλ˜μ–΄ μžˆμ–΄ 일뢀 ν”„λ‘œμ νŠΈμ˜ 단점이 될 수 μžˆμŠ΅λ‹ˆλ‹€. μ œν•œλœ ν™•μž₯μ„±: GitActionsλŠ” ..

    User@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)ꡳ이 RANDOM_PORTλ₯Ό ν•˜λŠ” 이유

    1. 포트 좩돌 방지 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•  λ•Œ κΈ°λ³Έ 포트인 8080이 이미 μ‚¬μš© 쀑인 경우, 랜덀 포트λ₯Ό μ‚¬μš©ν•˜λ©΄ 포트 μΆ©λŒμ„ 방지할 수 μžˆμŠ΅λ‹ˆλ‹€. 2. 병렬 ν…ŒμŠ€νŠΈ μˆ˜ν–‰ κ°€λŠ₯ ν…ŒμŠ€νŠΈλ₯Ό λ³‘λ ¬λ‘œ μˆ˜ν–‰ν•  λ•Œ, μ—¬λŸ¬ ν…ŒμŠ€νŠΈκ°€ 같은 포트λ₯Ό μ‚¬μš©ν•˜λ©΄ 좩돌이 λ°œμƒν•˜μ—¬ ν…ŒμŠ€νŠΈκ°€ μ‹€νŒ¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 랜덀 포트λ₯Ό μ‚¬μš©ν•˜λ©΄ λ³‘λ ¬λ‘œ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 3. 톡합 ν…ŒμŠ€νŠΈ μˆ˜ν–‰ @SpringBootTest μ–΄λ…Έν…Œμ΄μ…˜μ€ Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹œμž‘ν•˜κ³ , ν…ŒμŠ€νŠΈ μˆ˜ν–‰μ— ν•„μš”ν•œ λΉˆμ„ μžλ™μœΌλ‘œ λ“±λ‘ν•˜μ—¬ 톡합 ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•  수 μžˆλ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€. 랜덀 포트λ₯Ό μ‚¬μš©ν•˜λ©΄ μ—¬λŸ¬ 개의 ν…ŒμŠ€νŠΈμ—μ„œ 같은 μ„œλ²„λ₯Ό κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν…ŒμŠ€νŠΈν•  λ•Œ @SpringBootTest μ–΄λ…Έ..

    repository, domain, controller, service ν…ŒμŠ€νŠΈ μ½”λ“œλ‘œ λ‹€ ν…ŒμŠ€νŠΈ ν•΄μ•Όν•˜λŠ”μ§€? ν…ŒμŠ€νŠΈ μˆœμ„œλ„ μ•Œμ•„λ³΄μž

    일반적으둜 Spring Boot ν”„λ‘œμ νŠΈμ—μ„œλŠ” Repository, Service, Controller λ“±μ˜ 계측(layer)λ³„λ‘œ ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€. Repository λ°μ΄ν„°λ² μ΄μŠ€μ— λŒ€ν•œ CRUD(Create, Read, Update, Delete) λ‘œμ§μ„ λ‹΄λ‹Ήν•˜λŠ” μ½”λ“œλ₯Ό ν…ŒμŠ€νŠΈν•©λ‹ˆλ‹€. 보톡 In-Memory DB(예: H2)λ₯Ό μ΄μš©ν•΄μ„œ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€. Service λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ λ‹΄λ‹Ήν•˜λŠ” μ½”λ“œλ₯Ό ν…ŒμŠ€νŠΈν•©λ‹ˆλ‹€. Repositoryλ₯Ό Mockingν•˜μ—¬ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€. Controller HTTP μš”μ²­κ³Ό 응닡 처리λ₯Ό λ‹΄λ‹Ήν•˜λŠ” μ½”λ“œλ₯Ό ν…ŒμŠ€νŠΈν•©λ‹ˆλ‹€. MockMvcλ₯Ό μ΄μš©ν•΄μ„œ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€. λ˜ν•œ, Domain은 일반적으둜 λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ λ‹΄κ³  μžˆλŠ” 클래슀둜, λ³„λ„μ˜ ν…ŒμŠ€νŠΈμ½”λ“œκ°€ ν•„μš”ν•˜..

    junit4 와 junit 5 의 차이점과 μž₯단점 그리고 뭐λ₯Ό λ”λ§Žμ΄ μ“°μ΄λŠ”μ§€?

    junit4 와 junit 5 의 차이점과 μž₯단점 그리고 뭐λ₯Ό λ”λ§Žμ΄ μ“°μ΄λŠ”μ§€?

    JUnit은 Java μ–Έμ–΄λ₯Ό μœ„ν•œ λ‹¨μœ„ ν…ŒμŠ€νŠΈ ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€. JUnit4λŠ” 이전에 많이 μ‚¬μš©λ˜μ—ˆκ³ , JUnit5λŠ” JUnit4의 λ¬Έμ œμ μ„ λ³΄μ™„ν•˜κ³  μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•œ λ²„μ „μž…λ‹ˆλ‹€. JUnit4의 μž₯단점 - μž₯점 JUnit4λŠ” μ•ˆμ •μ μ΄κ³  μ„±μˆ™ν•œ ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€. ν’λΆ€ν•œ κΈ°λŠ₯을 μ§€μ›ν•˜λ©° λŒ€λΆ€λΆ„μ˜ Java κ°œλ°œμžλ“€μ΄ μ΅μˆ™ν•©λ‹ˆλ‹€. λ˜ν•œ λ‹€μ–‘ν•œ IDEμ—μ„œ μ§€μ›λ˜μ–΄ μ‚¬μš©μ΄ νŽΈλ¦¬ν•©λ‹ˆλ‹€. - 단점 JUnit4λŠ” ν™•μž₯성이 떨어지고 ν…ŒμŠ€νŠΈ μ½”λ“œμ˜ ꡬ성이 μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ λ©€ν‹°μŠ€λ ˆλ“œ ν…ŒμŠ€νŠΈ 지원이 λΆˆμ•ˆμ •ν•˜λ‹€λŠ” 문제점이 μžˆμŠ΅λ‹ˆλ‹€. JUnit5의 μž₯단점 - μž₯점 JUnit5λŠ” JUnit4의 λ¬Έμ œμ μ„ λ³΄μ™„ν•˜κ³  μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€. ν…ŒμŠ€νŠΈ μΈμŠ€ν„΄μŠ€ 라이프사이클을 μ§€μ›ν•˜κ³ , 동적 ν…ŒμŠ€νŠΈλ₯Ό μ§€μ›ν•˜λ©°, ν…ŒμŠ€νŠΈ 파라미..

    CI/CD κΈ°λ³Έ κ°œλ…

    CI/CD κΈ°λ³Έ κ°œλ…

    κ°œλ… μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ 개발 단계뢀터 배포 λ•ŒκΉŒμ§€ 이 λͺ¨λ“  단계듀을 μžλ™ν™”λ₯Ό ν†΅ν•΄μ„œ 쑰금 더 효율적이고 λΉ λ₯΄κ²Œ μ‚¬μš©μžμ—κ²Œ 빈번이 배포할 수 μžˆλ„λ‘ λ§Œλ“œλŠ” 것을 λ§ν•œλ‹€. CI : Continuous Integration 지속적인 톡합 메인 λ ˆν¬μ§€ν† λ¦¬μ— 주기적으둜 λΉŒλ“œλ˜κ³  ν…ŒμŠ€νŠΈκ°€ λ˜μ–΄μ„œ λ¨Έμ§€λ˜λŠ” 것이닀. 1. μ½”λ“œ 변경사항을 주기적으둜 λΉˆλ²ˆν•˜κ²Œ 머지해야 ν•œλ‹€. λ‚˜μ€‘μ— λ¨Έμ§€ν•˜λ €κ³  ν•˜λ©΄ μ„œλ‘œ λ‹€λ₯Έ μ½”λ“œλ₯Ό μ–΄λ–»κ²Œ ν†΅ν•©ν•΄μ„œ μ μš©ν•΄ λ‚˜κ°ˆκ»€μ§€ λ¬Έμ œκ°€ λ°œμƒ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” μ‹œκ°„λ³΄λ‹€ λ¨Έμ§€ν•˜λŠ” μ‹œκ°„μ΄ 더 였래 κ±Έλ¦¬λŠ” λ¬Έμ œκ°€ λ°œμƒ μž‘μ€ λ‹¨μœ„λ‘œ λ‚˜λˆ„μ–΄μ„œ ν†΅ν•©ν•˜λŠ” 것이 μ€‘μš” 2. 톡합을 μœ„ν•œ 단계 (λΉŒλ“œ, ν…ŒμŠ€νŠΈ, 머지)의 μžλ™ν™” CD : Continuous Delivery(μˆ˜λ™) or Deployment(μžλ™) 지속적인 제곡 ,λ°°..

    jQuery - $(document).ready() λŒ€μ‹  $()λ₯Ό μ‚¬μš©ν•˜μž

    μ‚¬μš©λ²• $(document).ready(function(){ // μ‹€ν–‰ν•  κΈ°λŠ₯을 μ •μ˜ν•΄μ£Όμ„Έμš”. }); 일반적으둜 μ‚¬μš©λ˜λŠ” 방법은 μœ„μ—μ„œ μ œμ‹œν•œ 예제 μ½”λ“œμ™€ κ°™μŠ΅λ‹ˆλ‹€. .ready()λ₯Ό μ‚¬μš©ν•˜λŠ” λŒ€ν‘œμ μΈ μ½”λ“œλ“€μ€ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. $(handler) $(document).ready(handler) $("document").ready(handler) jQuery 3.0 버전 μ΄ν›„λΆ€ν„°λŠ” 첫 λ²ˆμ§Έμ— ν•΄λ‹Ήν•˜λŠ” ꡬ문만 μ‚¬μš©ν•˜λŠ” 것을 ꢌμž₯λ“œλ¦½λ‹ˆλ‹€. .ready() EventλŠ” 1.8 λ²„μ „μ—μ„œλŠ” deprecated λ˜μ—ˆμœΌλ©° 3.0μ—μ„œλŠ” μ§€μ›ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. $(documet).ready() λŒ€μ‹  $()λ₯Ό μ‚¬μš©ν•˜μž $(function(){ // μ‹€ν–‰ν•  κΈ°λŠ₯을 μ •μ˜ν•΄μ£Όμ„Έμš”. });

    jQuery / Method / .val() - 양식(form)의 값을 κ°€μ Έμ˜€κ±°λ‚˜ 값을 μ„€μ •ν•˜λŠ” λ©”μ†Œλ“œ

    jQuery / Method / .val() - 양식(form)의 값을 κ°€μ Έμ˜€κ±°λ‚˜ 값을 μ„€μ •ν•˜λŠ” λ©”μ†Œλ“œ

    .val() .val()은 양식(form)의 값을 κ°€μ Έμ˜€κ±°λ‚˜ 값을 μ„€μ •ν•˜λŠ” λ©”μ†Œλ“œμž…λ‹ˆλ‹€. 문법 1 .val() μ„ νƒν•œ μ–‘μ‹μ˜ 값을 κ°€μ Έμ˜΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ var jb = $( 'input#jbInput' ).val(); 은 아이디가 jbInput인 input μš”μ†Œμ˜ 값을 λ³€μˆ˜ jb에 μ €μž₯ν•©λ‹ˆλ‹€. 문법 2 .val( value ) μ„ νƒν•œ μ–‘μ‹μ˜ 값을 μ„€μ •ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ $( 'input#jbInput' ).val( 'ABCDE' ); λŠ” 아이디가 jbInput인 input μš”μ†Œμ˜ 값을 ABCDE둜 μ •ν•©λ‹ˆλ‹€. 예제 1 양식에 ν…μŠ€νŠΈλ₯Ό μž…λ ₯ν•˜κ³  λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄, μž…λ ₯ν•œ 값을 좜λ ₯ν•©λ‹ˆλ‹€. Click 예제 2 select μ–‘μ‹μ—μ„œ 값이 λ°”λ€Œλ©΄, κ·Έ 값을 좜λ ₯ν•©λ‹ˆλ‹€. One Two Three 예제 3 λ²„νŠΌμ„ 클..

    JQuery

    JQuery

    κ°œμš” JavaScriptλŠ” ν•˜λ‚˜μ˜ κΈ°μ—…μ—μ„œ 혼자 λ§Œλ“€κ³ , 혼자 μ‚¬μš© ν™˜κ²½κΉŒμ§€ λ°°ν¬ν•΄μ£ΌλŠ” μ–Έμ–΄κ°€ μ•„λ‹™λ‹ˆλ‹€. ν‘œμ€€κ³Ό κ·œμ•½μ΄ 있고 λΉ λ₯΄κ²Œ λ°œμ „ν•˜κ³  μžˆκΈ°λŠ” ν•˜μ§€λ§Œ κ·œμ•½μ΄ μ œλŒ€λ‘œ 정해지기 μ „ λ‚˜μ™”λ˜ κ΅¬ν˜• λΈŒλΌμš°μ € (Internet Explorer 9 μ΄ν•˜)μ—μ„œλŠ” JavaScript ν•¨μˆ˜λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠλŠ” 것이 μžˆμ–΄ μ½”λ“œκ°€ μ œλŒ€λ‘œ λ™μž‘ν•˜μ§€ μ•ŠλŠ” κ²½μš°λ„ λ§ŽμŠ΅λ‹ˆλ‹€. jQueryλŠ”, 이런 λΈŒλΌμš°μ € ν˜Έν™˜μ„±μ„ ν•΄κ²°ν•˜κ³  자주 μ‚¬μš©ν•˜λŠ” μ½”λ“œλ₯Ό μž¬μ‚¬μš©ν•  수 μžˆλ„λ‘ λ§Œλ“€μ–΄μ§„ λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€. μƒλ‹Ήνžˆ λ§Žμ€ μ›Ήμ‚¬μ΄νŠΈκ°€ ν˜„μž¬λ„ jQueryλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. jQuery 곡식 ν™ˆνŽ˜μ΄μ§€ 이 κ°•μ˜μ—μ„œ μƒμ„Έν•˜κ²Œ 닀루진 μ•Šμ„ μ˜ˆμ •μ΄λ©°, JavaScript μž‘μ—…μ΄ 많이 ν•„μš”ν•œ ν™ˆνŽ˜μ΄μ§€μ—λŠ” jQuery μ‚¬μš©μ„ ꢌμž₯λ“œλ¦½λ‹ˆλ‹€. μ‚¬μš©λ²• var span..

    CSS의 μ„ νƒμž

    κ°œμš” CSSλŠ” μ–΄λ–€ νƒœκ·Έλ“€μ—κ²Œ μŠ€νƒ€μΌ 효과λ₯Ό μ£ΌλŠ” μ–Έμ–΄μž…λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ μ–΄λ–€ νƒœκ·Έμ— μ μš©ν•˜λŠ”μ§€λ₯Ό μ •μ˜ν•˜λŠ” 문법이 ν•„μš”ν•˜κ²Œ λ˜λŠ”λ°, μ΄λ•Œμ˜ 문법을 μ„ νƒμž 라고 ν•©λ‹ˆλ‹€. μ„ νƒμž { 속성1: κ°’1; 속성2: κ°’2; } CSSλŠ” μœ„ 처럼 μ„ νƒμžλ₯Ό λ¨Όμ € μ“°κ³  μ€‘κ΄„ν˜Έ {} μ•ˆμ— 속성과 값을 μ λŠ” λ°©μ‹μœΌλ‘œ 이루어져 μžˆμŠ΅λ‹ˆλ‹€. μ’…λ₯˜ CSS의 μ„ νƒμžλŠ” λ‹€μŒ 3개둜 이루어져 μžˆμŠ΅λ‹ˆλ‹€. νƒœκ·Έ μ„ νƒμž id μ„ νƒμž class μ„ νƒμž νƒœκ·Έ μ„ νƒμž κ°œμš” νƒœκ·Έμ΄λ¦„ { 속성1: 속성값1; 속성2: 속성값2; } 처럼 μ‚¬μš©ν•˜λ©° ν•΄λ‹Ήλ˜λŠ” νƒœκ·Έ 전뢀에 μŠ€νƒ€μΌμ„ μ μš©μ‹œν‚΅λ‹ˆλ‹€. μ‚¬μš©λ²• span { color:#F00; } div { color:#0F0; } id,class μ„ νƒμž κ°œμš” νƒœκ·Έμ—μ„œ μ„€μ •ν•œ idλ‚˜ class 속성에 따라 μŠ€νƒ€μΌμ„ 지..

    DB table ν•œκΈ€ μž…λ ₯ 되게 λ§Œλ“€κΈ°

    DB table ν•œκΈ€ μž…λ ₯ 되게 λ§Œλ“€κΈ°

    μ—λŸ¬μ‚¬ν•­ ν•΄κ²°μ±… ALTER TABLE univerlist CONVERT TO CHARSET utf8 ν•˜λ©΄ λ˜μ§€λ§Œ FK μ œμ•½ 쑰건이 κ±Έλ €μžˆμ–΄ λ˜μ§€μ•Šμ•˜λ‹€. κ·Έλž˜μ„œ μ™Έλž˜ν‚€λ₯Ό μž μ‹œ 끄고 λ‹€μ‹œ 킨닀. SET FOREIGN_KEY_CHECKS = 0; ALTER TABLE univerlist CONVERT TO CHARSET utf8 μž…λ ₯ λ‚˜μ€‘μ— λ‹€μ‹œμ‹€ν–‰ SET FOREIGN_KEY_CHECKS = 1;