Vue.js template
2019-04-10 00:00:00 +0000Vue 템플릿
- 를 사용하고 중간에 el 속성이나 자바스크립트 문법 사용
- 간단한 문법만 사용할 것
- if문은 사용하면 안됨.
<body>
<div id="test">
<div></div>
<div>1</div>
<div>1</div>
</div>
</body>
<script>
new Vue({
el: '#test'
})
</script>
v-html
- 아래 예제를 실행하면 a 태그를 사용해서 링크를 걸었지만 그냥 일반텍스트로 출력된다
- 는 일반 텍스트만 해석. 실제 html을 사용하고 싶을 땐 v-html 사용 해야한다.
<body>
<div id="test">
</div>
</body>
<script>
new Vue({
el: '#test',
data:{ url : "<a href='http://www.naver.com'>네이버</a>"}
})
</script>
- el 설정이 된 하위 dom에서 v-html 태그 속성을 사용해야 url링크가 적용된다
<body>
<div id="test">
<div v-html="url"></div>
</div>
</body>
- 그 외 v-if, v-for, v-bind, v-text, v-on 등 다양한 문법이 있다
- v-if는 if문처럼 true, false 결과를 전달한다
- v-on은 클릭했을 때 데이터를 갱신시킬 수 있음
- v-for은 data를 list 형태로 보여줌
<body>
<div id="test">
<div v-if="1 == 1"> 표시됨 </div>
<div v-if="1 == 0"> 표시안됨 </div>
<div v-text="text">text</div>
<button v-on:click="text='클릭 했습니다'">클릭하면 글자가 바뀝니다</button>
<ul>
<li v-for="value in list">
</li>
</ul>
</div>
</body>
<script>
var vue = new Vue({
el: '#test',
data:{ text : "클릭 안했어요",
list :["apple","banana","grape"]}
}
})
</script>
Vue.js 소개
2019-04-09 00:00:00 +0000Vue.js란?
- 사용자 인터페이스를 만들기 위한 프레임워크
- ECMAScript5 기능을 사용하여 ECMAScript 5 호환 브라우저 지원(IE8 이하 버전 미지원)
- 단일 프레임 워크와 달리 다른 라이브러리와의 통합이 쉬움
- vue.js 한글번역문서
기본 예제
- message가 ‘Hello Vue.js’라는 단어로 대체되었다
- new로 Vue를 생성. message, text, study 속성을 가진다
- el은 vue 인스턴스와 태그(id)를 연결한다
- data는 vue 내부에서 변수처럼 사용할 수 있는 값
- 지정한 id 안의 dom을 제어할 수 있다. id 안에 존재하지 않는다면 값을 제어할 수 없다
- 생성될 때 있었던 변수만 반응형(예를 들어 vue 생성 시 b 속성이 없다가 후에 만들면 반응형 작동을 하지 않는다)
- dom과 vue 인스턴스를 연결하여 템플릿, 이벤트, 디렉티브, 컴포넌트를 사용한다
<!-- 도움되는 콘솔 경고를 포함한 개발 버전 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- 상용버전, 속도와 용량이 최적화됨. -->
<!--<script src="https://cdn.jsdelivr.net/npm/vue"></script>-->
</head>
<body>
<div id="app">
<p></p>
<p></p>
</div>
<p></p>
</body>
<script>
new Vue({
el: '#app',
data: {
message: 'Hello Vue.js!',
text: 'Hi Vue.js!',
study: 'Study Vue.js'
}
})
</script>
Nexacro 설명
2019-04-02 00:00:00 +0000Nexacro
- 넥스크로 플랫폼은 비즈니스 UI/UX 플랫폼
- UI/UX를 쉽게 편집할 수 있는 강력한 도구이다
- 화면을 배치하는 부분은 XML기반으로 컴포넌트 등의 정보를 저장
- 빌드과정을 거쳐 자바스크립트 기반의 코드로 변환됨
- xprj 확장자는 Project 정보 파일
- *.xfdl 확장자는 화면, 컴포넌트, 스크립트 등의 파일
- 공식 메뉴얼 : http://docs.tobesoft.com/getting_started_nexacro_17_ko
단축키
- CTRL+SHIFT+N : 새로운 프로젝트 만들기
- Ctrl+N : 새로운 폼 만들기(width:800 height:600)
- Crtl+F6 : 실행
프로젝트 설명
- 오브젝트의 세부창에 번개모양 아이콘을 글릭하면 기본함수명, 사용자 함수명을 정의할 수 있다
- 기본 함수명은 event 옆에 더블클릭, 사용자 함수명은 그냥 작성
- 실행버튼은 돋보기+번개모양 아이콘. 설정으로 웹으로 올릴수도 있으나 라이센스가 필요함
- Service는 이미지 소스,스크립트,서버경로 등을 편집하는 곳
기본예제
- 버튼 아이콘을 눌러서 버튼을 생성한다. 그리고 그 버튼을 더블 클릭한다.
- 임의의 이름을 가진 클릭 이벤트가 생성된다. 클릭 시 동작할 코드를 작성한다.
- 아래처럼 알람을 추가한다. 실행 후 버튼을 클릭하면 알람창이 뜬다.
arelt("hello world");
ControllerAdvice
2019-04-01 00:00:00 +0000ControllerAdvice
- @ControllerAdvice는 스프링 프레임워크 3.2부터 사용 가능
- 예외 상황은 @ExceptionHandler와 @ControllerAdvice를 사용해서 처리할 수 있다(다른 방법으로 @ResponseEntity를 사용할 수 있다)
- AOP를 이용하는 방식(공통사항은 따로 분리하는 방식)
- 기존 방식으로 예외를 처리하면 예외 처리가 있을 때 마다 중복작성된다. 하지만 AOP 개념을 도입하면 한곳에서만 처리하면 된다.(if문으로 체크하지 않고 예외를 발생시키는 이유)
- 체계적으로 로직검사를 하여 유지보수가 쉬워진다
- @Valid를 사용하여 Setter 호출 시 형식체크를 해서 값을 넣지 않을 수도 있다)
설정
- CommonExceptionAdvice java 파일 생성
- 예외를 처리하는 클래스
- 먼저 pom.xml에서 버전 등을 알맞게 세팅한다
<java-version>1.8</java-version>
<org.springframework-version>5.0.7.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
ControllerAdvice 처리 클래스 추가
- @ControllerAdvice는 해당 객체가 스프링의 컨트롤러에서 발생하는 예외를 처리하는 존재임을 명시
- @ExceptionHandler는 해당 메서드가 괄호에 들어가는 예외를 처리한다는 의미
package test.exam.advice;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import lombok.extern.log4j.Log4j;
@ControllerAdvice
@Log4j
public class CommonExceptionAdvice {
@ExceptionHandler(Exception.class)
public String except(Exception ex, Model model){
log.error("Exception"+ex.getMessage());
model.addAttribute("exception", ex);
log.error(model);
return "error";
}
}
패키지 추가
- ControllerAdvice 어노테이션 클래스를 알 수 있도록 scan
<context:component-scan base-package="test.exam.advice" />
에러화면 추가
- jsp를 추가하고 아래 코드를 작성해서 view 단을 만든다
- 그리고 일부러 예외가 발생하는 코드를 만든다(ex. 4/0 같은..)
- 그리고 그 에러가 나는 코드가 있는 url로 접속해서 예외를 강제로 발생시킨다.
- 그러면 ExceptionHandler 어노테이션이 발생했으므로 해당 함수가 호출되어 error 페이지로 이동한다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h4><c:out value="${exception.getMessage()}"></c:out></h4>
</body>
</html>
404 에러 페이지 추가
- 스프링 MVC의 요청은 DispatcherServlet을 이용해서 처리되므로 404 에러도 같이 처리되도록 web.xml 수정
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<init-param>
<param-name>throwExceptionIfNoHandlerFound</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
- 404 에러 시 호출 될 함수 추가
@ExceptionHandler(NoHandlerFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public String error404(NoHandlerFoundException ex){
return "error404";
}
- jsp 추가 후 404 페이지 처리
- 없는 페이지 url 을 입력하면 해당 jsp 출력
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1>해당 페이지를 찾을 수 없습니다</h1>
</body>
</html>
Batch
2019-04-01 00:00:00 +0000Batch
- 대용량의 데이터를 추가나 수정하는 경우 MyBatis에서 쿼리를 하나하나씩 실행하면 느리다.
- 이 때 Batch를 사용할 수 있다. Batch는 MyBatis를 사용하지 않고 여러개의 쿼리를 한번에 실행할 수 있기 때문에 빠르게 데이터 수정이 가능하다.
- addBatch함수는 쿼리문을 실행하지 않고 저장하는 역활을 한다.
- executeBatch함수는 저장된 쿼리문을 한번에 실행한다.
- 1만건 데이터를 5000개 씩 2번 insert 했을 때는 0.149287886초 걸림
- Batch를 사용하지 않고 하나씩 insert 했을 때는 0.757761344초 걸림
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
// 1만건 데이터 넣기
List<String> list = new ArrayList<String>();
for(int i = 0; i < 10000; ++i) {
list.add(""+i);
}
Connection conn = null;
PreparedStatement ps = null;
String sql = "INSERT INTO TEST(NAME, AGE) VALUES (?, ?)";
try {
Class.forName("oracle.jdbc.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "id", "pass");
conn.setAutoCommit(false);
ps = conn.prepareStatement(sql.toString());
int i = 0;
long startTime=System.nanoTime();
for(String str:list) {
ps.setString(1, str);
ps.setString(2, "100");
ps.addBatch(); // 쿼리문 저장
ps.clearParameters(); // 파라메터 초기화
++i;
if(0 == (i%5000)) { // 500개 단위로 끊어서 전달
i = 0;
ps.executeBatch(); // 누적된 batch 실행
ps.clearBatch(); // 누적된 batch 초기화
conn.commit();
}
}
long endTime=System.nanoTime();
double elapsedTime=(endTime-startTime)/1000000000.0; // 나노초를 초로 변환
System.out.println(elapsedTime+"초");
}catch(Exception e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}finally {
try {
ps.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Posts
Interceptor(인터셉터)
Android Studio Install
계층형 게시판
VirtualBox Ubuntu 18.04.2 LTS
TransactionAwareDataSourceProxy Error
Java Coding Conventions
Java Long과 long의 차이
Mybatis 객체 안에 객체 매핑
JavaConfig mariadb 연결
DataTable
관리자 페이지
MappingJackson2JsonView
Spring Javaconfig
게시판 만들기-제품 등록
게시판 만들기-제품 페이지 제작
게시판 만들기-회원탈퇴 및 게시판 삭제 플래그 추가
footer 하단에 고정시키기
bootstrap4 사용법
Spring 데이터 검증 @Valid, BindingResult
brackets 실시간 미리보기
Spring 기본설정(pom.xml, web.xml, encoding)
Vue.js computed, methods, watch
javascript onkeyup
Maria DB Incorrect string value Error
javascript 암호화(md5, base64)
Vue.js template
Vue.js 소개
Nexacro 설명
ControllerAdvice
Batch
html 페이지 로딩 순서
소수구하기(PrimeNumber)
최소공배수,최대공약수
Stream
Lambda(람다식)
inner class(내부 클래스)
final 키워드
file upload
파이썬 빅 데이터 K-평균(K-means)
아나콘다(Anaconda), 주피터 개발환경 세팅
텐서플로우(TensorFlow) 아키텍쳐 및 Session
텐서플로우(TensorFlow)상수, 변수, 함수
머신러닝 기초
한글 리스트 오름차순, 내림차순
연속된 글자의 갯수 출력
java spring5 프로젝트 설정
restController
spring 세팅 및 기본설정
mybatis trim
jquery datepicker
ajax로 데이터 전달/응답 받는법
mybatis error
mybatis 게시판 만들기 순서
Java Jsp Mybatis Dynamic Query
mybatis
git 소개
node.js 개발환경 구축
node.js 기본 내장 모듈
node.js의 전역 객체
node.js http module
node.js event
jdbc
자바빈
jsp, servlet 정리
java null object pattern
다음지도 key 등록(kakao map)
공공 데이터 open api
facebook login api
sourcetree 사용법
JavaScript event3
JavaScript jquery
JavaScript dom
JavaScript ajax
JavaScript 이벤트2
JavaScript 캡슐화
JavaScript Array,내장객체
JavaScript var
JavaScript 객체,생성자
JavaScript 함수,클로저
JavaScript Event
javascript eclipse 자동완성(with tern)
CSS position
HTML5,CSS 선택자
자바 시간 측정
git,eclipse 연동
HTML 기초 정리
Eclipse Web 환경세팅
피보나치의 수
Oracle 반복문,커서,예외,저장 서브프로그램
Oracle PL/SQL
Oracle 다중쿼리(Multiple row query)
Oracle 인덱스, 뷰, 시퀀스, 트랜잭션, 세션 정리
Oracle JOIN 정리
Oracle DDL, DML 정리
Oracle 문자열 함수 정리
Oracle 숫자,날짜,자료형 변환 함수 정리
Oracle 제약조건 정리
Oracle 기초 쿼리 정리
문제2775
DFS
junit
json
algorithmus basic
circular queue(원형큐)
binary search(이진탐색)
port forwarding(포트포워딩)
kakao chatbot(카카오 챗봇)
java io
sort comparable, comparator
Unresolved compilation problem
ArrayList, HashMap
Regular(정규표현식)
Enum Class
String Function
refactoring 이란(상수,제어플래그,assert)
reference,abstract 정리
FileNotFoundException Solve
static
Thread Synchronization(스레드동기화,원자성)
Java Exception(예외처리)
Java 생성자, this, super
roomnum
BeeHouse
Git Reset, Revert
Git Log
Array
stack
pyramid draw
Star Draw(별 그리기4)
Star Draw(별 그리기3)
Star Draw(별 그리기2)
Star Draw(별 그리기1)
Loop(While, For)
자바 데이터 타입, 데이터 연산
시계방향 달팽이 그리기
정수값의 짝수,홀수 갯수 구하기
java, Scanner 정리
draw dog
subscribe via RSS