반응형

git 에서 실수로 commit 을 잘못했을 경우 파일을 다시 원복하는 방법.

 

1. 깃 로그 확인

$ git reflog

 

2. 깃 리셋 (reset, 되돌리기)

위 HEAD 번호를 입력한다.

혹은 commit id로 되돌리고 싶으면, HEAD@{5} 대신에 7381c1c 라는 id 값을 입력해도된다.

$ git reset --hard HEAD@{5}

 

2번까지 완료하면, 로컬 git 디렉토리에는 이전 상태로 돌아갔지만, 서버에는 아직 이전 파일 그대로이다.

 

3. 변경된(리셋) 상태 push 하기.

$ git push origin +master

 

만약 3번에서 아래와 같은 에러가 발생시에, gitlab 권한을 확인한다.

 

 

권한 확인 방법.

gitlab -> 설정 -> 저장소 -> Protected branches

 

Allow force push 가 체크가 안되어있을 경우, 체크를 한 후에 다시 push 한다(3번 재진행) 

 

 

반응형
반응형

Failed to load resource: net::ERR_CONTENT_LENGTH_MISMATCH

해당 에러 발생시에 여러 사유가 있지만, request 와 response의 header을 확인해야된다.

 

요청하는 곳에서는 아래와 같이 되어있지만,

<%@ page language="java" contentType="text/html;charset=UTF-8" %>

 

요청받은 곳에서는 아래와 같이 되어있었다.

<%@ page language="java" contentType="text/html;charset=euc-kr" %>

 

크롬측에서 최근에 패치하여 발생하게된 에러로 보인다.

이전에 개발시에는 문제가 없었으나, 현재는 ERR_CONTENT_LENGTH_MISMATCH 에러가 발생하여 수정하였다.

반응형
반응형

톰캣 재시작 sh 만들기

 

linux에서 tomcat 재시작시에 

tomcat 설치경로/bin/startup.sh 후에 

tomcat 설치경로/bin/shutdown.sh 을 하거나,

 

servie 를 등록하여 restart하는 방법이 있다.

 

하지만, 본 글에서는 

매번 실서버용 으로 수정하여 배포하고, 테스트 서버로 다시 수정하여 개발하기 번거롭기때문에

실서버에 실서버 환경설정 파일을 올리고 교체하여 재시작하는 쉘스크립트이다.

 

unzip 은 실제 업로드할 war파일이고, database.properties는 실서버에 적용될 파일이다.

서버에 설치된 톰캣 경로와 업드로할 war파일의 경로, 실제 적용할 database.properties의 경로를 수정하여 사용하면 된다.

(tomcat이 shutdown.sh 후에 바로 안죽을 수 있기때문에 5초 뒤에 프로세스를 강제로 죽이고 startup하는 sh 파일이다,)

 

 

/home/test/tomcat8/bin/shutdown.sh


unzip /home/test/tomcat8/tmp/TestApp.war -d /home/test/tomcat8/webapps
cp /home/test/tomcat8/webapps/TestApp/WEB-INF/classes/database.properties /home/test/tomcat8/tmp/database.properties




#!/bin/bash
export LANG=ko_KR.UTF-8

## 이곳에 각자 톰캣 경로를 넣어주면 됨
C_HOME=/home/test/tomcat8
C_PATH=$C_HOME/bin


## FUNCTION WAIT FOR 5 SECS
function standby() {
  # full bar, e.g. 20 chars
  BAR='####################'
  VAC='                    '

  for i in {1..20}; do
    # waited sec
    var=`echo "0.25*$i"|bc`
    # print $i chars of $BAR from 0 position && from $i to 20
    echo -ne "\r>> STANBY [${BAR:0:$i}${VAC:$i:20}] $var sec << "
    # wait 250ms between "frames"
    sleep .25
  done
  echo -ne "\n"
}

### CHECK IS SERVER ALIVE
function isAlive() {
  if [ -z "`ps -eaf | grep java | grep $C_PATH`" ]; then
    # END
    echo 0
  else
    # RUN
    echo 1
  fi
}

## CHECK THE PROCESS ENDED
if [ isAlive == 0 ]; then
  echo -e "\n\t>>> Tomcat was terminated successfully. <<<\n"
else
  ## IF IT HAS NOT ENDED KILL PROCESS
  ps -eaf | grep java | grep $C_PATH | awk '{print $2}' |
  while read PID
  do
    standby
    echo "Killing $PID... "
    kill -9 $PID
    echo -e "Tomcat($PID) is being killed\n"
  done

fi

echo -e "\n\t>>> try to restart tomcat now <<<\n"

## RUN STARTUP.SH
bash $C_PATH/startup.sh

if [ isAlive == 0 ]; then
  echo -e "\n\t>>> ERROR!!! CAN NOT START TOMCAT!!  <<<"
else
  ## IF IS PROCESS RUN, CHECK USER WANNA TAIL LOG
  echo -e "\n\t>>> TOMCAT STARTUP COMMAND IS ON ACTION. <<<"
fi
반응형
반응형

jasypt 설정 파일을 모두 다 설정 후에도 복호화가 안될 경우

 

context-properties.xml 파일에

아래와 같이 이미 properties를 불러오고 있는지, 

혹은 DB password가 입력된 파일을 이미 어디서 불러오고 있는지 체크하면 된다.

<context:property-placeholder location="classpath:egovframework/test.properties"  />

 

반응형
반응형

mysql 에서 table partitioning 방법

 

partition이란

데이터양이 많은 테이블에 쿼리를 수행할 때, 인덱스를 사용한다 하더라도,

데이터양이 많을수록 쿼리 속도는 느려지게 됩니다.

mysql은 크기가 큰 테이블을 물리적으로 여러 개로 분할하는 파티셔닝 기능을 제공합니다. 

물리적으로 분할은 되지만 하나의 테이블처럼 사용이 가능하다.

partition 종류

  • 범위 분할 (range partitioning)
  • 목록 분할 (list partitioning)
  • 해시 분할 (hash partitioning)
  • 키 분할 (key partitioning)
  • 등등....

 

partition 방법

본 글에서는 키 파티셔닝에으로 설명하겠습니다. (그 외 파티셔닝은 구글링으로...)

테이블명과 파티션을 나눌 개수를 작성하면 된다. 

 

신규 테이블 생성시

CREATE TABLE test (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(20)
)
PARTITION BY KEY()
PARTITIONS 10;

 

기존 테이블 파티셔닝으로 변경시

ALTER TABLE test PARTITION BY KEY() PARTITIONS 10 ;

 

파티셔닝 테이블 조회

 

아래 쿼리로 조회시에 결과 값이 해당 테이블 이름으로 있으면 파티셔닝이 된것이다.

SELECT * FROM information_schema.`PARTITIONS` WHERE PARTITION_NAME IS NOT NULL;
반응형
반응형

구글플레이에서 안드로이드앱 누적 다운로드 수 구하는 방법

1. 구글플레이 콘솔 이동

2. 앱 선택

3. 통계 탭 이동

4. 보고서 설정 아래 에서 설정

 

5. 보고서 설정 수정 (수정 버튼 클릭)

 

6. 설정 변경

 

 

7. 하단 내용 확인

반응형
반응형

html에서 특정 영역 이외에 클릭시에 이벤트입니다.

아래는 부모중 class = "test" 이 아닌것과 자신의 class ="test" 가 아닌것이다.

$('html').click(function(e) {   
	if($(e.target).parents('.test').length < 1 && !$(e.target).hasClass('test')){   
		console.log('영역 이외');
	}
});

부모중만 체크하려면 아래와 같이

$('html').click(function(e) {   
	if($(e.target).parents('.test').length < 1){   
		console.log('영역 이외');
	}
});

자신의 것만 아닌 경우는 아래와 같이 

$('html').click(function(e) {   
	if(!$(e.target).hasClass('test')){   
		console.log('영역 이외');
	}
});

 

반응형

'개발 > JQuery' 카테고리의 다른 글

[Jquery] Jqeury alert - 제이쿼리 alert  (0) 2019.03.19
[JQuery] 선택자  (0) 2019.02.26
반응형

### Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 문자가 부적합합니다

 

해당 쿼리를 DB 접속 툴에서 실행시에 이상이 없는데, 소스에서 위와 같은 에러가 날 경우 

쿼리문에 ; (세미클론)이 들어가 있는 경우 발생된다.

반응형
반응형

oracle 에서 피벗 테이블 사용하는 방법.

우선 당연한 이야기지만, mysql 사용법과는 다르다.

mysql에서 피벗테이블 생성하는 방법보다 코드가 길어지거나 유연성이 없어보인다.

 

아래 쿼리를 예시로 보면, PIVOT절 안에 해당 컬럼명을 명시해줘야 된다.
(무조건적인것은 아니나, 아래 내용을 보면 이렇게 짤수밖에 없는 이유가 있다.)

with data as (
select '스타벅스' cafe,  '서울' location from dual union all
select '스타벅스' cafe,  '서울' location from dual union all
select '빽다방' cafe,  '서울' location  from dual union all
select '이디야' cafe,  '서울' location from dual union all
select '빽다방' cafe,  '인천' location from dual union all
select '스타벅스' cafe,  '경기도' location from dual union all
select '스타벅스' cafe,  '인천' location  from dual
)
select * from data
PIVOT (
  COUNT(*)
  FOR cafe IN ('스타벅스','이디야','빽다방')
);

 

mysql 에서는 동적 표출할 컬럼명을 group_concat으로 만들었으나, oracle은 정적으로 표출할 컬럼명을 지정하였다.

 

이유는 아래와 같다.

mysql 에서는 GROUP_CONCAT으로 컬럼명을 만들면 됐다.

oracle 에서는 LISTAGG 로 컬럼명을 만들면 된다.

 

각각 제한 사이즈가 있다.

mysql은 쉽게 제한 사이즈를 변경이 가능하나, oracle은 12version 이후에 사이즈 변경이 가능하다고 나와있다.

 

레가시 프로젝트를 진행하다보면 oracle의 경우에는 유료이기 때문에 구매를 하면 version update가 불가능하기때문에 
각 버전에 맞춰서 쿼리를 작성해야되는 경우가 발생한다....

 

 

mysql 피벗 테이블 방법

https://wwwnghks.tistory.com/114

 

반응형
반응형

ORA-28001: the password has expired

비밀번호 만료시 나오는 에러이다.

아래 2가지 방법이 있다.

1번의 방법이 추후에 귀찮음을 덜어줄수 있을것이다....

 

우선 centos 기준으로는 아리 sqlplus를 접속하고 나서 아래 방법에서 골라서 사용하면 된다.

아래 방법은 sqlplus 접속한 후의 내용이다.

#root 계정 접속
su - l
#oracle 계정 접속
su - oracle
#sqlplus 접속
sqlplus "/as sysdba"

 

1. 비밀번호 만료일 제거

select * from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME';

로 검색하면 180일로 나올것이다.

alter profile default limit password_life_time unlimited;

위와 같이 unlimited 로 변경한다.

select * from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME';

로 다시 검색하면 unlimited로 변경되어있을것이다.

 

2. 비밀번호 변경

alter user 유저명 identified by 비밀번호;

 

반응형

+ Recent posts