π 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 μ μ°¨μ΄μ κ³Ό μ₯λ¨μ κ·Έλ¦¬κ³ λλ₯Ό λλ§μ΄ μ°μ΄λμ§?
JUnitμ Java μΈμ΄λ₯Ό μν λ¨μ ν μ€νΈ νλ μμν¬μ λλ€. JUnit4λ μ΄μ μ λ§μ΄ μ¬μ©λμκ³ , JUnit5λ JUnit4μ λ¬Έμ μ μ 보μνκ³ μλ‘μ΄ κΈ°λ₯μ μΆκ°ν λ²μ μ λλ€. JUnit4μ μ₯λ¨μ - μ₯μ JUnit4λ μμ μ μ΄κ³ μ±μν νλ μμν¬μ λλ€. νλΆν κΈ°λ₯μ μ§μνλ©° λλΆλΆμ Java κ°λ°μλ€μ΄ μ΅μν©λλ€. λν λ€μν IDEμμ μ§μλμ΄ μ¬μ©μ΄ νΈλ¦¬ν©λλ€. - λ¨μ JUnit4λ νμ₯μ±μ΄ λ¨μ΄μ§κ³ ν μ€νΈ μ½λμ ꡬμ±μ΄ μ΄λ €μΈ μ μμ΅λλ€. λν λ©ν°μ€λ λ ν μ€νΈ μ§μμ΄ λΆμμ νλ€λ λ¬Έμ μ μ΄ μμ΅λλ€. JUnit5μ μ₯λ¨μ - μ₯μ JUnit5λ JUnit4μ λ¬Έμ μ μ 보μνκ³ μλ‘μ΄ κΈ°λ₯μ μΆκ°νμ΅λλ€. ν μ€νΈ μΈμ€ν΄μ€ λΌμ΄νμ¬μ΄ν΄μ μ§μνκ³ , λμ ν μ€νΈλ₯Ό μ§μνλ©°, ν μ€νΈ νλΌλ―Έ..
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)μ κ°μ κ°μ Έμ€κ±°λ κ°μ μ€μ νλ λ©μλ
.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
κ°μ 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 νκΈ μ λ ₯ λκ² λ§λ€κΈ°
μλ¬μ¬ν ν΄κ²°μ± 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;