- 상수와 변수 // 상수 let a: Int = 20 // 변수 var b: Int = 100 - 컬렉션 타입 // Array // 데이터 타입의 값들을 순서대로 저장하는 리스트 var numbers: Array = Array() var names: [String] = [] numbers.append(1) // 추가 numbers[0] // 조회 numbers.insert(1, at: 2) // index로 추가 numbers.remove(at:0) // index로 삭제 // Dictionary // 순서없이 key, value 한 쌍으로 데이터를 저장하는 컬렉션 타입 var dic: Dictionary = Dictionary() var dic: [String, Int] = [:] var dic: [..
본 포스팅은 인프런 - Dowon Lee 님의 Jenkins를 이용한 CI/CD Pipeline 구축 강의를 듣고 정리한 내용입니다. 강의링크 CI (Continuous Integration) - 작업된 코드의 컴파일, 테스트, 패키징 작업이 포함 CD (Continuous Deployment) - CI에 의해서 패키징된 결과물을 서버에 배포하는 작업 - 지속적인 배포와 지속적인 제공 JenKins - CI/CD 툴 - 소프트웨어 개발 시 지속적 통합 서비스를 제공하는 툴이다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 Git등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해 준다 - 젠킨스 이미지 다운로드 docker pu..
현재 위치(경도,위도) 기반으로 범위 내 데이터를 구해야 할 이슈가 생겼다. 예시 - 현재 위치 37.579651 (Latitude) 126.977041 (Longitude) - DB 정보 table : locationMap 위도 : MAPX_LAT 경도 : MAPY_LON - 검색할 반경 : 20 = 20km (1km = 1) SELECT * FROM locationMap WHERE (6371*acos(cos(radians(37.579651))*cos(radians(MAPX_LAT))*cos(radians(MAPY_LON) - radians(126.977041))+sin(radians(37.579651))*sin(radians(MAPX_LAT)))) < 20 limit 0, 30 위처럼 쿼리를 날리면 ..
왜 사용하는지, 어떻게 돌아가는지는 하는 법 이후에 알아보도록 하자. gradle 에 spring-security-crypto 추가 dependencies { implementation 'org.springframework.security:spring-security-crypto:5.7.1' } maven을 쓴다면 아래처럼 추가 org.springframework.security spring-security-crypto 5.7.1 PasswordEncoder Bean 등록 @Configuration public class CommonConfig { @Bean public PasswordEncoder passwordEncoder() { return PasswordEncoderFactories.createD..
https://developer.apple.com/kr/news/?id=12m75xbj 6월 30일부터 시작되는 계정 삭제 요구 사항 - 최신 뉴스 - Apple Developer App Store 심사 지침 5.1.1(v)에 설명된 대로, 계정 생성을 지원하는 앱은 2022년 6월 30일부터 사용자가 앱 내에서 계정을 삭제할 수 있도록 허용해야 합니다. 해당 기한은 본 요구 사항을 적용하는 developer.apple.com 2022년 6월 30일 부터 iOS앱은 탈퇴 시, 애플 연동해제를 필수로 넣게 됐다. - 사족 ( 애플 연동해제를 넣게 된 과정 ) 더보기 2022 관광공모전을 준비하면서 우리가 준비한건 iOS앱이기 때문에 당연하게도 애플로 로그인을 넣어야했다 나는 서버를 맡았기에 앱을 맡은 친구..
Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException" 서버 API 제공을 위해서 swagger 설정을 하다가 해당 에러가 발생했다. 구글링해보니 Spring boot 2.6버전 이후에 spring.mvc.pathmatch.matching-strategy 값이 ant_apth_matcher에서 path_pattern_parser로 변경되면서 몇몇 라이브러리(swagger포함)에 오류가 발생한다고 한다. 따라서 application.properties 에 아래처럼 추가해주면 된다고 한다. spring.mvc.pathmatch.matching-strategy = ANT_..
Execution failed for task ':compileQuerydsl'. > invalid source release: 11 공모전 준비로 Querydsl 을 활용한 기본 프로젝트 생성 후, 빌드하는데 해당 오류가 났다. 첫줄만 보고 querydsl 문제인줄 알고 엄청 헤맸다. 그러다 다음 줄인 'invalid source release: 11'을 보고 아 버전문젠가..? 싶어서 확인해봤는데 뭐지.. 11로 다 설정되어있었다. 좀더 찾아보니 settings 에서도 설정을 바꿔주어야 했다. (Settings > Build, Execution, Deployment > gradle) 나는 gradle이라서 저 부분을 수정했지만 maven의 경우 바로 위에 있는 Maven탭에서 수정하면 되는 것 같다...
## Proxy 프록시 em.find() // DB를 통해 실제 엔티티 객체 조회 em.getReference() // DB 조회를 미루는 가짜(프록시) 엔티티 객체 조회 - 프록시 객체를 초기화 할 때 프록시 객체가 실제 엔티티로 바뀌는 것이 아니라 초기화되면 프록시 객체를 통해서 실제 엔티티에 접근 가능. - 프록시 객체는 처음 사용할 때 한 번만 초기화. - 프록시 ≠ 엔티티. - instanceOf 사용. (객체와 비교) - 프록시 객체는 원본 엔티티를 상속받음 - 영속성 컨텍스트에 이미 엔티티가 존재하면 프록시를 따로 반환하지 않음 (getRefer 해도 프록시가 아닌 엔티티 반환) - 프록시 먼저 호출하고, 엔티티를 호출하면 엔티티도 프록시를 반환함 - 영속성 컨텍스트를 날리면( em.deta..
** Transaction 안에서 하는 것이 중요 EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); //do something tx.commit(); em.close(); emf.close(); @Entity //@Table(name = "mbr") // Member 객체를 mbr 테이블에 매핑 public class Member { @Id // primary key // 값 직접 할당 //@GeneratedValue // 값 자동 할당 p..