spring MVC 에러페이지 설정 : chichi-story.tistory.com/9?category=884464

위와 더불어 spring security 403 에러페이지는 따로 security xml 설정파일에서 적용해야함.

 

  • controller 생성
@RequestMapping(value = "/error/403", method = RequestMethod.GET)
public String error() {
	return "error/403";
}

 

  • security-context의 http 영역 내에 <security:access-denied-handler error-page="/error/403"/> 태그 작성
.....
<security:http auto-config="true" use-expressions="true">
  ......
  <security:access-denied-handler error-page="/error/403"/> <!-- error page 설정 -->
</security:http>

 

  • GET MAPPING 잡아준 url 화면 jsp 생성

   

  • 권한을 부여받지 않은 member가 admin 에 접근했을 때 에러 메세지 화면이 나타나는걸 확인

 

 

 

MQTT broker 암호화

- user password 설정

* mosquitto broker가 설치되어있는 환경기반으로 진행된것이므로 broker가 없다면 설치 후 진행

 

# cd /etc/mosquitto  //-- mosquitto위치로 이동

# vi mosquitto.conf  //--설정파일 맨 밑에 추가

# 비밀번호 파일경로 설정
password_file /etc/mosquitto/passwd

# 익명접속차단
allow_anonymous false

 

# vi /etc/mosquitto/passwd   // 비밀번호 파일생성

# username:password
user:1234

 

# mosquitto_passwd -U /etc/mosquitto/passwd  // passwd 파일암호화

# cat passwd  // 암호화 확인

# service mosquitto stop  
# service mosquitto start

 

# mosquitto_sub -h localhost -t /topic  //-- 유저 지정이 없을경우 connection error

 

# mosquitto_sub -h localhost -t /topic -u user -P 1234   // subscribe

# mosquitto_pub -h localhost -t /topic -u user -P 1234 -m "test"  //publish

 

Tip) user 추가시 "mosquitto_passwd -b PW파일위치 ID PW" 로 설정가능 
# mosquitto_passwd -b /etc/mosquitto/passwd admin root1234

'개발일지 > 기타' 카테고리의 다른 글

[Android] FCM push 1  (0) 2020.12.16
docker container를 image로 저장 후 tar 생성  (0) 2020.11.26
이클립스 zip 파일 import  (0) 2020.10.06

같은 페이지에 jQuery 각각 다른 버전 사용하기 (jQuery 버전 충돌 해소)

- bootstrap 내장 jQuery 버전과 추가구현할 기능의 jQuery 버전이 달라 충돌이 일어나 error가 발생할 경우 충돌해소 방법

그냥 아래와 같이 적용을 하면 충돌이 생겨 기존 기능에서 에러가 발생한다. (기존 적용된 기능이 안되던가 새로 추가된 기능이 안되던가)

<!-- bootstrap 내장 jquery -->
<script src="/assets/global/plugins/jquery-ui/jquery-ui.min.js"	type="text/javascript"></script>

<!-- 추가할 jquery -->
<script src="/js/jquery-3.4.1.min.js"></script>	

 

새로 적용할 jquery버전에 $.noConflict(true); 문법을 사용한다.

<script src="/js/jquery-3.4.1.min.js"></script>	
<script>
var $j341 = jQuery.noConflict();
</script>

 

새로운 버전의 jquery를 사용하기 위해서는 아래처럼 $j341을 사용해주어야 한다.

<script>
$j341.ajax({...})
$j341("#button").click(function () {... });
</script>

 

각 라이브러리에 쓰인 js파일에 버전별로 j341로 바꿔야지 문제가 없이 실행 될 수있다.

(js파일 맨 밑만 수정하면 된다.) 

;(function ($, window, document, undefined) {
	var pluginName = "lib",
		defaults = {
			onDislike: null,
			onLike: null,
			animationRevertSpeed: 200,
			animationSpeed: 400,
			threshold: 1,
		};
		.
		.
		.
		
})($j341, window, document);
 //(jquery, window, document); > ($j341, window, document);

 

 

참고 : velog.io/@ddusi/jquery-1

java poi excel 셀 스타일 설정

  • Font 설정

Font font = wb.createFont();
font.setFontName("바탕"); //폰트이름
font.setFontHeight((short)260); //폰트 size -> 260 = 13point
font.setBold(true); // Bold 설정

 

  • cell 너비(width) 설정

sheet.setDefaultColumnWidth(7); // sheet 전체 기본 너비설정
sheet.setColumnWidth(4, 2100); // 특정 cell 설정 => 5번째(e) cell 2100=7.63
sheet.setColumnWidth(7, 3400); // 7번째(h) cell 3400=12.63

 

 

  • cell style

CellStyle basicStyle = wb.createCellStyle(); //style선언
basicStyle.setFont(font); // 위에 선언한 font 적용
basicStyle.setAlignment(HorizontalAlignment.CENTER); // 가로 가운데 정렬
basicStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); // 세로 가운데 정렬
basicStyle.setBorderTop(BorderStyle.THIN); // 셀 위 테두리 실선 적용
basicStyle.setBorderBottom(BorderStyle.THIN); // 셀 아래 테두리 실선 적용
basicStyle.setBorderLeft(BorderStyle.THIN); // 셀 왼쪽 테두리 실선 적용
basicStyle.setBorderRight(BorderStyle.THIN); // 셀 오른쪽 테두리 실선 적용
basicStyle.setWrapText(true); // 셀 크기에 맞추어 개행

 

 

 

1. firebase project 생성

> firebase.google.com 로 접속하여 "시작하기" 클릭 후 google 계정으로 로그인

> 프로젝트 생성

> 이름 입력후 계속 

> (2/3) 계속

> (3/3) 애널리틱스 위치 [대한민국] 선택 후 약관 동의

> 프로젝트 생성 완료

2.  앱 등록

> 안드로이드 클릭

> 패키지 명 입력

> 안드로이드 프로젝트의 패키지명 입력 (AndroidManifest.xml) 

 

3. google-services.json을 안드로이드 프로젝트에 추가

> 다운로드 버튼을 클릭하여 다운로드 실행

> 파일을 [프로젝트명>app] 밑에 추가

3. 안드로이드 프로젝트에 SDK 추가

> 화면에 나오는 절차대로 실행

> 추가된 소스

> 수정한 뒤 Sync Now를 클릭

 

docker container 백업 시 사용

1. 실행 중인 container stop 

docker stop  [container nama]
# docker ps -a

  > 상태확인 시 Exited

2. docker image로 저장

// docker commit <CONTAINER_NAME> <IMAGE_NAME>:<TAG>
# docker commit sub sub_server:1.0
# docker images

>  이미지 생성 확인 

 

3. docker image 생성 완료 후 tar로 저장 

// docker save <옵션> <tar파일명.tar> <저장할이미지명:tag>
# docker save -o sub_server.tar sub_server:1.0
# ls -l

 > tar 파일 생성 확인

 

'개발일지 > 기타' 카테고리의 다른 글

mosquitto MQTT broker 암호화 (user password 설정)  (0) 2021.02.17
[Android] FCM push 1  (0) 2020.12.16
이클립스 zip 파일 import  (0) 2020.10.06

1. File > import 선택

2. General > Existing Projects into Workspace 선택

 

3. Select archive file 을 선택하고 Browse...를 클릭하여 해당 zip 선택

4. Project Exploer에 생성 완료!

 

 

동적으로 table 데이터 추가하기 

 

예제1) javascript 배열 데이터 table에 나타내기

- javascript

function tableCreate(){

  var table_value = new Array();
  var html = '';

  table_value.push({value : '25.5', time : '2020-08-26'}); 
  table_value.push({value : '22.4', time : '2020-08-26'}); 
  table_value.push({value : '10.58', time : '2020-08-26'}); 
  table_value.push({value : '3.44', time : '2020-08-26'}); 
  table_value.push({value : '8.5', time : '2020-08-26'}); 

  for(i in table_value){
  html += '<tr>';
  html += '<td>'+table_value[i].value+'</td>';
  html += '<td>'+table_value[i].time+'</td>';
  html += '</tr>';
  }

  $("#kgTable").empty();
  $("#kgTable").append(html);
			
}

- html

<table id="kgTable">
  <thead>
    <tr>
      <th>중량값</th>
      <th>작동 시간</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td></td>
      <td></td>
    </tr>
  </tbody>
</table>
<button onclick="tableCreate()">table_append</button>

 

예제2) javascript ajax for문 데이터 table로 나타내기 

		$.ajax ({
			url : "url",  
			cache : false,
			async:false,
			success : function (data) { 
				var html = '';
				for(var i=0; i<Object.keys(data.data).length; i++ ){
					$('#kgTable > tbody').empty(); //기존 테이블데이터 삭제
					html += '<tr>';
					html += '<td>'+data.data[i].kg_value+'</td>';
					html += '<td>'+ data.data[i].time+'</td>';
					html += '</tr>';
				}
				$("#kgTable").append(html); // 새로운 데이터 덮어쓰기
			
			}
		});

 

+ Recent posts