본문 바로가기
반응형

개발/기타49

DevOps란 DevOps 개발(Dev)과 운영(Ops)의 합성어 개발자와 운영자 간의 소통, 협업, 통합을 강조하는 개발문화, 방법론, 프로세스, 도구 등을 의미 개발조직과 운영조직 간의 상호 의존적 대응이며 조직이 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목적 DevOps 도입 배경 It's not my code, it's your machines! 일반적으로 SW를 개발하는 팀과 개발된 서비스를 운영하는 운영팀으로 나누어지게 되는데, 이 개발팀과 운영팀 간의 프로세스, 도구의 차이, 서로 다른 목적 등으로 빈번한 충돌이 발생한다. 이런 문제를 근본적으로 해결을 위해서는 시스템과 프로그램 도입 이외에, 개발팀과 운영팀의 협업,소통,통합 그리고 문화적 개선 등 다양한 노력이 필요(DevOps)... 2022. 3. 1.
Mybatis parameterType List foreach insert(Oracle, MySQL) Mybatis에서 foreach를 사용해서 List를 Insert하는 방법 아래와 같이 리스트에 데이터를 담아서 넘기는 경우 List list = new ArrayList(); list.add(new TestVO(1)); list.add(new TestVO(2)); insert("namespace.listInsert", list); Oracle 기준으로는 mybatis 쿼리를 아래와 같이 작성한다. INTO MY_TABLE ( NUM, DATE ) VALUES ( #{item.num}, SYSDATE ) 실행 쿼리는 아래와 같이 실행된다 INSERT ALL INTO MY_TABLE (NUM, DATE) VALUES (...) INTO MY_TABLE (NUM, DATE) VALUES (...) ... S.. 2022. 2. 21.
Maven Build 옵션(pl, am, amd) - 멀티모듈에서 특정 모듈만 빌드 Maven에서 멀티모듈로 빌드 설정을 할 경우 자식 모듈들 중 특정 모듈(프로젝트)만 빌드를 수행하고 싶을 때가 있다. 이 때 특정 프로젝만 빌드를 할 경우 Parent나 의존성이 걸린 타 모듈들의 설정 등으로 원하는 프로젝트만 빌드할 때 에러가 발생해서 안될때가 있다. 그래서 매번 Parent기준 전체 빌드를 해주는 경우가 있는데 maven pl, am, amd 옵션을 활용하면 특정 프로젝트만 쉽게 빌드가 가능하고 빌드 시간도 당연히 줄어든다. Parent - A - B - C 위와 같이 Parent에 A, B, C 프로젝트가 자식 모듈로 들어 있는 경우 1. -pl 옵션 특정 프로젝트만 빌드를 수행할 수 있다 # A 프로젝트만 빌드(여러 개일 경우 ,로 구분) mvn install -pl A 2. -.. 2022. 2. 18.
Java List removeIf(), 안전한 List 루프 Item Remove java List객체에서 조건에 해당하는 아이템을 list에서 제거할 때 일반적으로 생각할 수 있는게 List를 루프 돌면서 해당 아이템에 대해 remove() 처리를 하는 것이다. 그러나 다음 코드와 같이 실행했을 때 아래와 같은 에러 등이 발생한다. 각 아이템을 List에서 제거하면서 List 내부조정에 따른 아이템의 인덱스 등이 달라지기 때문이다 public static void main(String[] args){ ArrayList numbers = new ArrayList( Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); for (Integer num: numbers){ if(num % 2 ==0){ numbers.remove(num); } } } java 8.. 2022. 2. 15.
jQuery 동적추가(append, html) Click 이벤트 처리 jQuery 사용 시 Click이벤트 바인딩을 아래와 같이 많이 하는데 html(), append() 등으로 동적으로 추가되는 엘리먼트들에 대해서는 이벤트가 동작하지 않는다. Page가 로드되는 시점에 존재 않는 엘리먼트들에 대해서는 이벤트가 안먹힌다고 한다 $('.mydiv').on("click",function(){ // 이벤트 처리 } 동적으로 추가되는 class가 ".mydiv"인 엘리먼트에 이벤트를 위에처럼 바인딩해줬을 때는 동작하지 않는다 이럴때는 Page가 로드될 때 존재하고 동적으로 변하지 않는 상위 엘리먼트를 기준으로 바인딩 설정을 해준다 /** * ... * */ $('.myDivParent').on("click", '.mydiv', function(){ // 이벤트 처리 } class.. 2022. 2. 11.
Nginx 설치 from Source(Mac기준) 1. 설치 디렉토리 /app/nginx 생성 2. nginx 다운로드 - http://nginx.org/en/download.html - stable 버전 다운로드, /app/nginx 디렉토리에 압축해제(/app/nginx/nginx-1.20.2) 3. PCRE 다운로드 - https://www.pcre.org/ -> https://sourceforge.net/projects/pcre/files/ (pcre2 아님) - tar.gz 파일 다운로드 /app/nginx 디렉토리에 압축해제(/app/nginx/pcre-8.45) * PCRE 라이브러리는 http_rewrite_module와 Location Directive의 정규식 표현에 필요하다 함. 4. Nginx 설치 > cd /nginx/nginx-.. 2022. 1. 18.
Cookie 공유 범위 1. Cookie는 기본적으로 Cookie를 생성한 서버로만 전송 2. Cookie는 도메인 기준으로 관리 및 전송으로 동일 도메인의 Port가 다를 경우 공유 - 가끔 동일 도메인에 다른 Port 사용하는 어플리케이션끼리 Cookie 덮어쓰는 문제 발생 함 3. 상위도메인 기준으로 하위도메인까지는 Cookie 공유 가능 - 아래와 같이 Cookie domain 설정필요 Cookie cookie = new Cookie("key", "value"); cookie.setDomain("mydomain.com"); Domain 세팅하면 아래와 같이 domain 정보에 값이 설정됨 테스트로 'dev.mydomain.com' 으로 어플리케이션 하나 더 실행해 보면 cookie가 공유되는 것 확인 2022. 1. 10.
네트워크 도메인 - DNS, A레코드, CNAME, TTL DNS(Domain Name System) naver.com이라는 문자열의 도메인을 x.x.x.x 같은 IPv4 주소로 변환해주는 네트워크 서비스 DNS Record DNS는 아래처럼 '도메인-IP' 매핑 정보를 Record라는 이름으로 관리 google.com 172.0.17.1 A Record 타입 mytest.com test.com CNAME 타입 A 레코드 (A Record) 위 표의 1행처럼 도메인과 IP 주소를 직접 매핑하는 방법 하나의 도메인에 여러 IP를 매핑도 가능 한번의 요청으로 접속할 서버의 IP를 바로 알 수 있음 IP가 자주 바뀌는 환경에서는 안좋음 CNAME(Canonical Name) 위 표의 2행처럼 도메인에 다른 도메인을 매핑하는 방법 실제 IP주소를 얻기위해 여러번 DNS.. 2021. 12. 17.
반응형