라벨이 기타인 게시물 표시

JSP에서 git auto push 하기

JSP에서 Github autopush 환경 만들기 개발환경 Server : Tomcat8 OS : window10 구현 DB에 Data가 갱신될 때 마다 Github 저장소에 auto push 기능을 구현하고자 하였다. 이를 위해서 우선적으로 bat파일을 만들어 jsp환경에서 성공적으로 DB에 Update 시 실행하도록 하였다. batch 파일 코드 F: #batch파일이 존재하는 드라이브 위치 cd 'batch가 위치할 폴더 경로' #batch 파일이 위치 할 폴더 경로 git add . #git에 변경된 사항에 대해서 스테이징 한다. git commit -m "auto push(file upload)" #commit실행 git push origin master #git 저장소에 push jsp에서 Runtime의 exec함수를 사용하여 batch파일을 실행하도록 코드를 작성하였다. <%@ page import="java.lang.Runtime"%> //Runtime import Process process = Runtime.getRuntime().exec("파일경로"); process.waitFor(); //batch파일이 실행되기 까지 대기 //Option : 실행 결과에대해서 알고 싶은 경우 구현 BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); String line = null; while((line = br.readLine()) != null){ out.println(line); } br.close(); //Option 끝 process.destroy(); //완료된 프로세스 제거 이슈 batch파일을 터미널에서 실행 시 정상적으로 수행되었으나 jsp코드 상 실행 시 무한 loop가 걸리는...

React.js Hook 학습

React.js의 Hook에 대해서 학습 및 사용 학습의 경우 공식 홈페이지를 참고하여 진행( 공식홈페이지 ). React 버전 16.8.0이상, React Native 0.59이상에서 지원 등장 배경 기존 React에서 state를 사용하기 위해서는 class형태에서 React.component를 상속하여 사용 상속 없이 import 방식으로 Function이나 const같은 함수에서 state 사용할 수 있도록 지원하는 개념 함수 컴포넌트에서 React state와 생명주기 기능(lifecycle features)을 “연동(hook into)“할 수 있게 해주는 함수. 개념 state를 사용하기 위해 class를 사용하는데 이를 대체하여 class가 아니여도 state관리 및 rife-cycle사용이 가능하게 해주는 API 좀 더 재사용 가능한 컴포넌트를 작성하는데 도움을 주기 위해 나옴 class안에서는 동작하지 않음 문법 중복하여 사용 가능(state, effect 동일) State Hook state를 대체하는 개념으로 useState를 react로 부터 import하여 사용 useState는 2개의 항목을 가지는 배열을 반환. 인자로 주는 값의 경우 초기 변수 값을 나타낸다. 💡 return [현재 변수값, 변수를 바꾸는 setter 함수]; 사용 예시 import React, { useState } from 'react'; //useState가 hook function Example() { // "count"라는 새 상태 변수를 선언합니다 const [count, setCount] = useState(0); //useState는 중복하여 호출가능(각자 독립된 state를 가짐) const [fruit, setFruit] = useState('banana'); const [todos, setTodo...

slack에 notion 연동하기

이미지
slack에 notion 연동하기 notion 저장소 생성 좌측 상단의 현재 저장소의 이름을 선택하면 리스트 창이 나타나며 가장 하단의 생성 버튼을 선택 저장소 이름을 입력 후 'Next'버튼을 클릭 상단 버튼을 클릭 시 아래에서 선택한 템플릿으로 저장소 생성, 하단의 문자열을 선택 시 빈 템플릿으로 시작 새로운 페이지를 추가하고자 할 시 좌측 사이드바의 Templates을 선택 다음과 같이 Modal창이 나타나며 우측 사이드바에서 원하는 탬플릿을 선택 후 'Use This Template'버튼을 클릭 ex) 'Full Template Gallery'를 선택 시 사용자가 등록한 템플릿 사용 가능 생성 완료 시 좌측 사이드바에 해당 템플릿이 등록된 것을 확인할 수 있습니다. 새로운 글 등록 시 양식을 선택하여 생성할 수 있으며 '∨'버튼을 클릭하여 해당 창에서 선택할 수 있습니다. 또한, 해당 양식에 대해서 수정이 가능하며 양식 창에서 말줄임표를 선택 시 창이 나타납니다. 이 창에서 Edit 선택하여 나타난 Modal창에서 양식을 수정 할 수 있습니다.   slack과 연동하기 현재, 연동과 관련하여 가이드가 존재하며 이를 참고하여 진행하였습니다.( 링크 ) 상단의 Updates를 선택 후 'Connect Slack Channel' 토글을 활성화 합니다. 연동하고자 하는 slack채널을 선택 후 'Allow'버튼을 클릭합니다. 연결 완료 시 다음과 같이 변경 되며 slack의 채널에 연결 성공 메시지가 나타납니다. 다음과 같이 테스트용 글을 생성 시 알림이 발생하는 것을 확인 할 수 있습니다.(일정 시간이 지난 후 알림이 발생되고 있는것을 확인)

slack에 github 연동하기

이미지
Slack에 github 연동하기 slack에 github App 추가 좌측 사이드바에서 Apps선택 후 'Browse App Directory'버튼 클릭 github 검색 후 결과창에서 선택 'Add to Slack'버튼 클릭 'Continue'버튼 클릭하여 진행 'Select channels'카테고리 3개 중 1개를 고른 후 Install 진행 (추후 설정 변경 가능) 진행 시 다음과 같은 이미지가 보이게 되며 완료 시 " open this link in your browser. "문구를 클릭하여 slack으로 이동 slack이 이미 활성화되어 있는 경우 현재 창을 닫아도 무방 진행중 완료 시 이미지 정상적으로 GitHub App이 설치된 경우 좌측 사이드바에 GitHub라는 항목이 추가 된다. GitHub관련 알람을 변경하고자 할 때 GitHub페이지의 About을 선택한다. Settings를 선택 기존 설치단계에서 설정했던 채널관련 수정이 가능하며 필요 시 수정한다. GitHub 저장소 연결 및 알림설정 GitHub 저장소 연결을 하기 위해서는 다음과 같은...

[프로그래머스] 파일명 정렬 javascript

[2018 KAKAO BLIND RECRUITMENT] [3차] 파일명 정렬 javascript 조건 files 는 1000 개 이하의 파일명을 포함하는 문자열 배열이다. 각 파일명은 100 글자 이하 길이로, 영문 대소문자, 숫자, 공백("  ), 마침표( . ), 빼기 부호( -")만으로 이루어져 있다. 파일명은 영문자로 시작하며, 숫자를 하나 이상 포함하고 있다. 중복된 파일명은 없으나, 대소문자나 숫자 앞부분의 0 차이가 있는 경우는 함께 주어질 수 있다. ( muzi1.txt ,  MUZI1.txt ,  muzi001.txt ,  muzi1.TXT 는 함께 입력으로 주어질 수 있다.) 제한사항 파일명은 크게 HEAD, NUMBER, TAIL의 세 부분으로 구성된다. HEAD는 숫자가 아닌 문자로 이루어져 있으며, 최소한 한 글자 이상이다. NUMBER는 한 글자에서 최대 다섯 글자 사이의 연속된 숫자로 이루어져 있으며, 앞쪽에 0이 올 수 있다.  0 부터  99999  사이의 숫자로,  00000 이나  0101  등도 가능하다. TAIL은 그 나머지 부분으로, 여기에는 숫자가 다시 나타날 수도 있으며, 아무 글자도 없을 수 있다. 파일명 HEAD NUMBER TAIL foo9.txt foo 9 .txt foo010bar020.zip foo 010 bar020.zip F-15 F- 15 (빈 문자열) 파일명을 세 부분으로 나눈 후, 다음 기준에 따라 파일명을 정렬한다. 파일명은 우선 HEAD 부분을 기준으로 사전 순으로 정렬한다. 이때, 문자열 비교 시 대소문자 구분을 하지 않는다.  MUZI 와  muzi ,  MuZi 는 정렬 시에 같은 순서로 취급된다. 파일명의 HEAD 부분이 대소문자 차이 외에는 같을 경우, NUMBER의 숫자 순으로 정렬한다. 9 < 10 ...

[프로그래머스] 캐시 javascript

[2018 KAKAO BLIND RECRUITMENT] [1차] 캐시 javascript 조건 캐시 교체 알고리즘은  LRU (Least Recently Used)를 사용한다. cache hit 일 경우 실행시간은  1 이다. cache miss 일 경우 실행시간은  5 이다. 제한사항 캐시 크기( cacheSize )와 도시이름 배열( cities )을 입력받는다. cacheSize 는 정수이며, 범위는 0 ≦  cacheSize  ≦ 30 이다. cities 는 도시 이름으로 이뤄진 문자열 배열로, 최대 도시 수는 100,000개이다. 각 도시 이름은 공백, 숫자, 특수문자 등이 없는 영문자로 구성되며, 대소문자 구분을 하지 않는다. 도시 이름은 최대 20자로 이루어져 있다. 입출력 예 캐시크기(cacheSize) 도시이름(cities) 실행시간 3 [ Jeju ,  Pangyo ,  Seoul ,  NewYork ,  LA ,  Jeju ,  Pangyo ,  Seoul ,  NewYork ,  LA ] 50 3 [ Jeju ,  Pangyo ,  Seoul ,  Jeju ,  Pangyo ,  Seoul ,  Jeju ,  Pangyo ,  Seoul ] 21 2 [ Jeju ,  Pangyo ,  Seoul ,  NewYork ,  LA ,  SanFrancisco ,  Seoul ,  Rome ,  Paris ,  Jeju ,  NewYork ,  Rome ] 60 5 [ Jeju ,  Pangyo ,  Seoul ,  NewYork ,  LA ,  SanFra...

[프로그래머스] 비밀지도 javascript

[2018 KAKAO BLIND RECRUITMENT] [1차] 비밀지도 javascript 조건 지도는 한 변의 길이가  n 인 정사각형 배열 형태로, 각 칸은  공백 ("  ) 또는 벽 ( #") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각  지도 1 과  지도 2 라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. 지도 1 과  지도 2 는 각각 정수 배열로 암호화되어 있다. 암호화된 배열은 지도의 각 가로줄에서 벽 부분을  1 , 공백 부분을  0 으로 부호화했을 때 얻어지는 이진수에 해당하는 값의 배열이다. 제한사항 1 ≦  n  ≦ 16 arr1 ,  arr2 는 길이  n 인 정수 배열로 주어진다. 정수 배열의 각 원소  x 를 이진수로 변환했을 때의 길이는  n  이하이다. 즉, 0 ≦  x  ≦ 2 n  - 1을 만족한다. 입출력 예 매개변수 값 n 5 arr1 [9, 20, 28, 18, 11] arr2 [30, 1, 21, 17, 28] 출력 ["#####","# # #", "### #", "# ##", "#####"] 매개변수 값 n 6 arr1 [46, 33, 33 ,22, 31, 50] arr2 [27 ,56, 19, 14, 14, 10] 출력 ["######", "### #", "## ##", " #### ", " #####", "### # "] 코드 function solution(n, arr1, arr2) { var answer = []; const len = arr1.length;...

[프로그래머스] 다트 게임 javascript

[2018 KAKAO BLIND RECRUITMENT] [1차] 다트 게임 javascript 조건 다트 게임은 총 3번의 기회로 구성된다. 각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다. 점수와 함께 Single( S ), Double( D ), Triple( T ) 영역이 존재하고 각 영역 당첨 시 점수에서 1제곱, 2제곱, 3제곱 (점수 1  , 점수 2  , 점수 3  )으로 계산된다. 옵션으로 스타상( * ) , 아차상( # )이 존재하며 스타상( * ) 당첨 시 해당 점수와 바로 전에 얻은 점수를 각 2배로 만든다. 아차상( # ) 당첨 시 해당 점수는 마이너스된다. 스타상( * )은 첫 번째 기회에서도 나올 수 있다. 이 경우 첫 번째 스타상( * )의 점수만 2배가 된다. (예제 4번 참고) 스타상( * )의 효과는 다른 스타상( * )의 효과와 중첩될 수 있다. 이 경우 중첩된 스타상( * ) 점수는 4배가 된다. (예제 4번 참고) 스타상( * )의 효과는 아차상( # )의 효과와 중첩될 수 있다. 이 경우 중첩된 아차상( # )의 점수는 -2배가 된다. (예제 5번 참고) Single( S ), Double( D ), Triple( T )은 점수마다 하나씩 존재한다. 스타상( * ), 아차상( # )은 점수마다 둘 중 하나만 존재할 수 있으며, 존재하지 않을 수도 있다. 제한사항 점수는 0에서 10 사이의 정수이다. 보너스는 S, D, T 중 하나이다. 옵선은 *이나 # 중 하나이며, 없을 수도 있다. 입출력 예 예제 dartResult answer 설명 1 1S2D*3T 37 1 1  * 2 + 2 2  * 2 + 3 3 2 1D2S#10S 9 1 2  + 2 1  * (-1) + 10 1 3 1D2S0T 3 1 2  + 2 1  + 0 3 4 1S*2T*3S 23 1 1  *...