단일 WAS 를 통해 트래픽이 낮은 서비스를 운영중이다. 해당 서비스는 모두 Let`s Encrypt SSL 인증서를 활용중이며 지속적으로 갱신 관리를 해주어야 하는 이슈가 발생했다. 갱신 명령어 certbot 명령어를 통해 도메인에 할당된 인증서 기간을 쉽게 갱신할 수 있다. $ certbot certonly -d [도메인주소] 갱신 과정 중, 아래와 같이 port 80 사용하는데 문제가 발생했다는 에러가 발생했을 경우 WAS 에서 사용중인 80 서비스를 중단 후, 재실행해준다. 유효기간 확인 80 서비스는 재시작 해주고, 인증서가 정상적으로 갱신되었는지 확인한다. 해결과제 1) 80서비스를 중단시키지 않은 상태에서 인증서를 갱신할 수 있는 방법에 대해서 고민해봐야한다. 2) 인증서 갱신주기 60일에 ..
PHPDoc Comment 는 정형화된 주석을 자동으로 생성하여, 프로그램의 가독성을 높이고 유지관리를 효율적으로 할 수 있게 도와주는 Plugin 입니다. 클래스, 함수, 변수에 대해 PHPDoc 블록을 자동으로 추가 해줍니다. PHPDoc Comment Plugin 단축키 - command + shift + i - 클래스, 함수, 변수에서 사용시 아래와같은 형태로 정형화된 주석을 자동으로 생성해줍니다. - 함수에 선언된 매개변수(parameter)를 자동으로 생성해줍니다.
문제.BinaryGap A binary gap within a positive integer N is any maximal sequence of consecutive zeros that is surrounded by ones at both ends in the binary representation of N. For example, number 9 has binary representation 1001 and contains a binary gap of length 2. The number 529 has binary representation 1000010001 and contains two binary gaps: one of length 4 and one of length 3. The number 20..
토이 프로젝트를 진행하면서, 메인 페이지 더보기 기능을 추가해야 했다. 버튼 방식과 무한 스크롤 방식에 대해 고민하였고 모바일 화면에서 좀 더 유연하게 대응할 수 있는 무한 스크롤 방식으로 구현해보았다. 기본개념 웹 브라우저 콘텐츠의 높이값을 이용하면, 쉽게 구현이 가능합니다. 필요한 속성값은 다음과 같습니다. Element.scrollHeight 읽기 전용 속성으로 요소 콘텐츠의 총 높이를 나타내며 화면에 보이지 않는 영역도 포함됩니다. Element.scrollY 읽기 전용 속성으로 콘텐츠가 수직으로 얼마나 스크롤됐는지 표현합니다. Element.clientHeight 읽기 전용 속성으로 엘리먼트의 내부 높이를 표현하며 정확한 영역은 내부 여백(padding)은 포함하지만, 외부 여백(margin)은..
python 문법을 통한 검색 알고리즘 선형 검색과 이진 검색에 대해서 알아보자. 선형 검색은 가장 기본적인 알고리즘으로 맨 앞부터 순수대로 검색하는 알고리즘이고, 이진 검색은 검색할 데이터의 기준값을 부여하여 선형 검색보다 빠르게 검색할 수 있는 알고리즘이다. 선형 검색 가장 기본적인 검색 알고리즘으로 원하는 값을 찾을때까지 맨 앞부터 순서대로 검색하는 알고리즘이다. 선형 검색은 검색 성공과 검색 실패 의 두 가지 종료 조건으로 나뉜다. # 선형검색 def line_search(list, key): for i in range(len(list)): # 검색 성공 if(list[i] == key): return list[i] else: # 검색 실패 return 'None' if __name__ == '_..
리덕스(redux)는 리액트 상태를 관리해주는 라이브러리다. 리덕스를 사용하면 컴포넌트의 상태 파악 및 컴포넌트 간 상태 공유가 가능하기 때문에 전역 상태를 관리할때 효과적이지만, 모든 프로젝트에서 리덕스 라이브러리를 필요로하는건 아니다. 컴포넌트 상태 관리 비교 리덕스를 사용했을때와 그렇지 않았을때 컴포넌트끼리 상태를 공유하는 과정을 알아보자. 먼저, 리덕스를 사용하지 않았을 경우 상태 관리 과정을 살펴보자. 지역 컴포넌트에서 상태가 변동되면, 상위 컴포넌트부터 최상위 컴포넌트 까지 상태 변경에 대한 관리가 필요하다. 즉, 관리해야하는 컴포넌트의 수가 많을 수록 상태 관리는 어려워지고 코드 유지보수성과 작업 효율이 낮아진다. 다음, 리덕스를 사용했을 경우 상태 관리 과정을 살펴보자. 지역 컴포넌트에서 ..
입력값에 URL 주소만 허용해야 하는 상황이 발생했을 때, 정규식을 통해 간편하게 유효성 검사를 처리할 수 있으며, 유효성 검사 정책에 따른 커스터마이징도 가능하니 살펴보도록 하겠다. 정규식 사용 아래와 같이 URL 입력값에 대한 정규식 처리로 원하는 유효성 처리를 수행하였다. # URL value var url = $("#url").val(); # 정규식 표현 셋팅 let regex = /^(http(s)?:\/\/)([^\/]*)(\.)(com|net|kr|my|shop)(\/)/gi # 유효성 처리결과 console.log(regex.test(url)); 선언한 정규식에 대한 해설은 다음과 간다. 예시1> /^(http(s)?:\/\/)([^\/]*)(\.)(com|net|kr|my|shop)(\/..