2014년 12월 16일 화요일
[MyBatis] parametertype string test (There is no getter for property named 'xxxx' in 'class java.lang.String')
Mybatis에서 parametertype이 String이나 int 같은 기본형인 경우
=============================
<if test="abc == null ">
...
</if>
=============================
위와 같이 사용시
There is no getter for property named 'abc' in 'class java.lang.String'
라는 에러 발생
...
이럴때는
=============================
<if test="_parameter == null ">
...
</if>
=============================
위와 같이 테스트할 파라미터 이름을 '_parameter' 로 바꿔주면
정상적으로 동작한다.
참고 :
http://devwa.com/47
2014년 11월 26일 수요일
[JavaScript] 팝업창 열기, 닫기 (popup window open and close)
function fnPopup() {
var popupOption = 'directories=no, toolbar=no, location=no, menubar=no, status=no, scrollbars=no, resizable=no, left=400, top=200, width=440, height=550';
window.open(URL, name, popupOption);
}
function fnClose() {
window.opener.location.href = URL;
window.close();
}
참고 :
http://www.w3schools.com/jsref/met_win_open.asp
2014년 11월 19일 수요일
[RegExp] Non-breaking space (char code 160) replace
- Non-breaking space
- ASCII character 160
- char code 160
-  
- \u00A0
- %A0
-
볼때는 일반적인 공백으로 보이지만 따로 처리해줘야 할 경우가 생겼다.
RegExp = /\u00A0/ or / /
value = value.replace(/\u00A0/g, ' ');
or
value = value.replace(/ /g, ' ');
출처 :
http://stackoverflow.com/questions/3794919/replace-all-spaces-in-a-string-with
http://www.adamkoch.com/2009/07/25/white-space-and-character-160/
- ASCII character 160
- char code 160
-  
- \u00A0
- %A0
-
볼때는 일반적인 공백으로 보이지만 따로 처리해줘야 할 경우가 생겼다.
RegExp = /\u00A0/ or / /
value = value.replace(/\u00A0/g, ' ');
or
value = value.replace(/ /g, ' ');
출처 :
http://stackoverflow.com/questions/3794919/replace-all-spaces-in-a-string-with
http://www.adamkoch.com/2009/07/25/white-space-and-character-160/
2014년 11월 17일 월요일
[SQL] VARCHAR 필드 숫자로 정렬 (SORT A VARCHAR2 FIELD AS A NUMERIC FIELD)
- 해당 필드에 숫자만 있는 경우
ORDER BY TO_NUMBER(FIELD);
- 해당 필드에 숫자 이외의 값도 있는 경우
ORDER BY LPAD(FIELD, 10);
// 10 == FIELD.length
출처 :
http://www.techonthenet.com/oracle/questions/sort1.php
[RegExp] 8자리 이상 16자리 이하 영문, 숫자, 특수문자 조합
암호규칙 정규식
var pwReg = /^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,16}$/;
if (pwReg.test(pw)) {
return true;
} else {
return false;
}
var pwReg = /^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,16}$/;
if (pwReg.test(pw)) {
return true;
} else {
return false;
}
2014년 11월 12일 수요일
[Spring] Spring @responsebody 한글 깨짐
======================================
스프링 3.1 이하
======================================
- 리턴을 ResponseEntity 타입으로 함
- 헤더에 캐릭터셋을 설정해서 보냄
@RequestMapping("/ajax")
@ResponseBody
public ResponseEntity handleAJAX() {
....로직....
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.add("Content-Type", "text/html; charset=utf-8");
return new ResponseEntity("한글", responseHeaders, HttpStatus.CREATED);
}
======================================
스프링 3.2 이상
======================================
- @RequestMapping의 produces 옵션이 생겨 좀 더 쉽게 적용 가능함
@RequestMapping(value = "/ajax", produces = "application/json; charset=utf8")
public String handleAJAX() {
....로직....
return "한글"
}
출처 :
http://softline21c.blogspot.kr/2012/06/springmvc-responsebody.html
http://novafactory.net/archives/3126
스프링 3.1 이하
======================================
- 리턴을 ResponseEntity 타입으로 함
- 헤더에 캐릭터셋을 설정해서 보냄
@RequestMapping("/ajax")
@ResponseBody
public ResponseEntity handleAJAX() {
....로직....
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.add("Content-Type", "text/html; charset=utf-8");
return new ResponseEntity("한글", responseHeaders, HttpStatus.CREATED);
}
======================================
스프링 3.2 이상
======================================
- @RequestMapping의 produces 옵션이 생겨 좀 더 쉽게 적용 가능함
@RequestMapping(value = "/ajax", produces = "application/json; charset=utf8")
public String handleAJAX() {
....로직....
return "한글"
}
출처 :
http://softline21c.blogspot.kr/2012/06/springmvc-responsebody.html
http://novafactory.net/archives/3126
2014년 11월 5일 수요일
[JavaScript] 영문, 숫자, 특수문자, 자릿수 제한 (정규식 이용)
var check = /^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,16}$/;
if (!check.test(pw)) {
// fail
} else {
// success
}
if (!check.test(pw)) {
// fail
} else {
// success
}
2014년 11월 4일 화요일
[Spring] @ModelAttribute를 배열(ArrayList)로 받아서 사용하기
public class TestVo {
//자기 자신을 참조하여 리스트를 리턴하도록 한다.
private List<TestVo> testList;
private String key;
private String name;
private String phone;
private Date birth;
private int age;
private boolean married;
public List<TestVo> getTestList() {
return testList;
}
public void setTestList(List<TestVo> testList) {
this.testList = testList;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isMarried() {
return married;
}
public void setMarried(boolean married) {
this.married = married;
}
}
JSP :
<input name="testList[0].name" />
...
<input name="testList[1].name" />
...
참고 :
http://reikop.tistory.com/16
http://viralpatel.net/blogs/spring-mvc-multi-row-submit-java-list/
//자기 자신을 참조하여 리스트를 리턴하도록 한다.
private List<TestVo> testList;
private String key;
private String name;
private String phone;
private Date birth;
private int age;
private boolean married;
public List<TestVo> getTestList() {
return testList;
}
public void setTestList(List<TestVo> testList) {
this.testList = testList;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isMarried() {
return married;
}
public void setMarried(boolean married) {
this.married = married;
}
}
JSP :
<input name="testList[0].name" />
...
<input name="testList[1].name" />
...
참고 :
http://reikop.tistory.com/16
http://viralpatel.net/blogs/spring-mvc-multi-row-submit-java-list/
[SQL] 테이블 컬럼 카멜 표기법 변환기 (HTML)
<html>
<head>
<title>테이블 컬럼 카멜 표기법 변환기</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="css/style.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>
$(document).ready(function() {
// default data
var sample = ['USER_ID\n'];
sample.push('ADDR_HOME_STREET\n');
sample.push('YOU_LOVE_ME_SO_MUCH\n');
$('#monkeyinput').text(sample.join(''));
$('#code_basic').click();
});
function convert() {
var input = $('#monkeyinput').val();
var count = 0;
var output1 = '';
var output2 = '';
var lines = input.split(/\n/);
for(var i = 0, maxi = lines.length; i < maxi; i++) {
var before = lines[i];
before = $.trim(before.toLowerCase());
// skip empty lines
if(before == '') {
continue;
}
// conversion
var after = before.replace(/_(\w)/g, function(word) {
return word.toUpperCase();
});
after = after.replace(/_/g, "");
// console.log('\t' + before + ' ->> ' + after);
// make result for each
if($('#code_basic:checked').val()) {
output1 += (after + '\n');
}
// Value Object
else if($('#code_vo:checked').val()) {
var modifier = $('#modifier option:selected').val();
var datatype = $('#datatype option:selected').val();
// hibernate annatation
if(document.conf.hibernate.checked) {
output1 += ('@Column(name = "' + before + '")\n' + modifier + ' ' + datatype + ' ' + after + ';\n\n');
}
else {
output1 += (modifier + ' ' + datatype + ' ' + after + ';\n');
}
}
// ResultMap
else if($('#code_resultmap:checked').val()) {
output1 += ('\t<result property="' + after + '" column="' + before + '" />\n');
}
// Select
else if($('#code_select:checked').val()) {
before=before.toUpperCase();
if(count == 0) {
output1 += (before + ' AS ' + after);
}
else {
output1 += (',\n\t' + before + ' AS ' + after);
}
if(count == 0) {
output2 += (before + ' = #{' + after + '}\n');
}
else {
output2 += ('AND\t' + before + ' = #{' + after + '}\n');
}
}
// Insert
else if($('#code_insert:checked').val()) {
if(count == 0) {
output1 += (before);
}
else {
output1 += (', ' + before);
}
if(count == 0) {
output2 += ('#{' + after + '}');
}
else {
output2 += (', #{' + after + '}');
}
}
// Update
else if($('#code_update:checked').val()) {
if(count == 0) {
output1 += (before + ' = #{' + after + '}#');
}
else {
output1 += (',\n\t' + before + ' = #{' + after + '}');
}
if(count == 0) {
output2 += (before + ' = #{' + after + '}\n');
}
else {
output2 += ('AND\t' + before + ' = #{' + after + '}\n');
}
}
// Delete
else if($('#code_delete:checked').val()) {
if(count == 0) {
output1 += (before + ' = #{' + after + '}\n');
}
else {
output1 += ('AND\t' + before + ' = #{' + after + '}\n');
}
}
else {
output1 += (after + '\n');
}
count++;
}
var output = '';
if($('#code_basic:checked').val()) {
output = output1;
}
else if($('#code_vo:checked').val()) {
output = output1;
}
else if($('#code_resultmap:checked').val()) {
output = '<resultMap id="' + document.conf._id.value + '" class="' + document.conf._class.value + '">\n';
output += output1;
output += '</resultMap>';
}
else if($('#code_select:checked').val()) {
output = 'SELECT\t';
output += output1 + '\n';
output += 'FROM\t' + getTableName() + ' \n';
output += 'WHERE\t';
output += output2;
}
else if($('#code_insert:checked').val()) {
output = 'INSERT INTO ' + getTableName() + '(' + output1 + ') \n';
output += 'VALUES(' + output2 + ')';
}
else if($('#code_update:checked').val()) {
output = 'UPDATE\t' + getTableName() + ' \n';
output += 'SET\t' + output1 + '\n';
output += 'WHERE\t';
output += output2;
}
else if($('#code_delete:checked').val()) {
output = 'DELETE FROM ' + getTableName() + ' \n';
output += 'WHERE\t';
output += output1;
}
$('#monkeyoutput').text(output);
}
function getTableName() {
var tableName = $('input[name=table]').val();
if(tableName != '') {
return tableName;
}
return '[table_name]';
}
function fillOptionBox() {
var html = [];
html.push('<p>');
html.push('Table: <input id="table" type="text" name="table" onkeyup="convert();" />');
html.push('</p>');
$('#options').html(html.join(''));
$('#table').focus();
convert();
}
</script>
</head>
<body>
<h1>테이블 컬럼 카멜 표기법 변환기</h1>
<p>이 프로그램을 통해 Underscore Notation으로 표기된 테이블 컬럼명을 Camel Notation으로
변환된 자바 필드명으로 변경할 수 있다.</p>
<h2>사용법</h2>
<ol>
<li>테이블정의서에서 복사한 컬럼명을 왼쪽 Textarea에 붙여넣는다.</li>
<li>자동으로 Camel Notation으로 변경된 결과가 우측 Textarea에 표시된다.</li>
<li>필요한 경우 여러가지 Conversion Style을 선택할 수 있다.
<ul>
<li>Basic: 기본적인 Camel Notation 변환만 수행</li>
<li>VO: 자바의 필드 선언문으로 변환 (Hibernate Annotation도 추가로 지정 가능)</li>
<li>ResultMap: iBatis에서 사용하는</li>
<li>Select: iBatis에서 사용하는 select 쿼리문으로 변환</li>
<li>Insert: iBatis에서 사용하는 insert 쿼리문으로 변환</li>
<li>Update: iBatis에서 사용하는 update 쿼리문으로 변환</li>
<li>Delete: iBatis에서 사용하는 delete 쿼리문으로 변환</li>
</ul>
</li>
<li>우측 Textarea의 결과를 복사하여 필요한 곳에서 사용한다.</li>
</ol>
<form name="conf">
<fieldset>
<legend> Configurations </legend>
<p>
<strong>Conversion Style</strong> <br>
<input id="code_basic" type="radio" name="code" checked />
<label for="code_basic">Basic</label>
<input id="code_vo" type="radio" name="code" />
<label for="code_vo">VO</label> <input id="code_resultmap" type="radio" name="code" />
<label for="code_resultmap">ResultMap</label>
<input id="code_select" type="radio" name="code" />
<label for="code_select">Select</label>
<input id="code_insert" type="radio" name="code" />
<label for="code_insert">Insert</label>
<input id="code_update" type="radio" name="code" />
<labelfor="code_update">Update</label>
<input id="code_delete" type="radio" name="code" />
<label for="code_delete">Delete</label>
<script type="text/javascript">
$('#code_basic').click(function() {
$('#options').html('');
convert();
});
$('#code_vo').click(function() {
var html = [];
html.push('<p>');
html.push('<strong>Modifier Datatype</strong><br>');
html.push('<select id="modifier" onchange="convert();">');
html.push(' <option>public</option>');
html.push(' <option>protected</option>');
html.push(' <option selected>private</option>');
html.push('</select>');
html.push('<select id="datatype" onchange="convert();">');
html.push(' <option>int</option>');
html.push(' <option>long</option>');
html.push(' <option>float</option>');
html.push(' <option>double</option>');
html.push(' <option>byte[]</option>');
html.push(' <option>boolean</option>');
html.push(' <option>char</option>');
html.push(' <option selected>String</option>');
html.push('</select>');
html.push('</p>');
html.push('<p>');
html.push('<strong>Hibernate</strong><br>');
html.push('<input type="checkbox" name="hibernate" value="hibernate" id="hibernate" onclick="convert();" /><label for="hibernate">Use hibernate annotation</label>');
html.push('</p>');
$('#options').html(html.join(''));
convert();
});
$('#code_resultmap').click(function() {
var html = [];
html.push('<p>');
html.push('id: <input id="_id" type="text" name="id" onkeyup="convert();" /> ');
html.push('class: <input id="_class" type="text" name="class" onkeyup="convert();" />');
html.push('</p>');
$('#options').html(html.join(''));
$('#_id').focus();
convert();
});
$('#code_select').click(fillOptionBox);
$('#code_insert').click(fillOptionBox);
$('#code_update').click(fillOptionBox);
$('#code_delete').click(fillOptionBox);
</script>
</p>
<div id="options"></div>
</fieldset>
</form>
<br>
<p>
<textarea id="monkeyinput" class="camel" style="width: 48.5%; height: 50%;" onkeyup="convert();"></textarea>
<textarea id="monkeyoutput" class="camel" style="width: 48.5%; height: 50%;" readonly></textarea>
</p>
</body>
</html>
<head>
<title>테이블 컬럼 카멜 표기법 변환기</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="css/style.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>
$(document).ready(function() {
// default data
var sample = ['USER_ID\n'];
sample.push('ADDR_HOME_STREET\n');
sample.push('YOU_LOVE_ME_SO_MUCH\n');
$('#monkeyinput').text(sample.join(''));
$('#code_basic').click();
});
function convert() {
var input = $('#monkeyinput').val();
var count = 0;
var output1 = '';
var output2 = '';
var lines = input.split(/\n/);
for(var i = 0, maxi = lines.length; i < maxi; i++) {
var before = lines[i];
before = $.trim(before.toLowerCase());
// skip empty lines
if(before == '') {
continue;
}
// conversion
var after = before.replace(/_(\w)/g, function(word) {
return word.toUpperCase();
});
after = after.replace(/_/g, "");
// console.log('\t' + before + ' ->> ' + after);
// make result for each
if($('#code_basic:checked').val()) {
output1 += (after + '\n');
}
// Value Object
else if($('#code_vo:checked').val()) {
var modifier = $('#modifier option:selected').val();
var datatype = $('#datatype option:selected').val();
// hibernate annatation
if(document.conf.hibernate.checked) {
output1 += ('@Column(name = "' + before + '")\n' + modifier + ' ' + datatype + ' ' + after + ';\n\n');
}
else {
output1 += (modifier + ' ' + datatype + ' ' + after + ';\n');
}
}
// ResultMap
else if($('#code_resultmap:checked').val()) {
output1 += ('\t<result property="' + after + '" column="' + before + '" />\n');
}
// Select
else if($('#code_select:checked').val()) {
before=before.toUpperCase();
if(count == 0) {
output1 += (before + ' AS ' + after);
}
else {
output1 += (',\n\t' + before + ' AS ' + after);
}
if(count == 0) {
output2 += (before + ' = #{' + after + '}\n');
}
else {
output2 += ('AND\t' + before + ' = #{' + after + '}\n');
}
}
// Insert
else if($('#code_insert:checked').val()) {
if(count == 0) {
output1 += (before);
}
else {
output1 += (', ' + before);
}
if(count == 0) {
output2 += ('#{' + after + '}');
}
else {
output2 += (', #{' + after + '}');
}
}
// Update
else if($('#code_update:checked').val()) {
if(count == 0) {
output1 += (before + ' = #{' + after + '}#');
}
else {
output1 += (',\n\t' + before + ' = #{' + after + '}');
}
if(count == 0) {
output2 += (before + ' = #{' + after + '}\n');
}
else {
output2 += ('AND\t' + before + ' = #{' + after + '}\n');
}
}
// Delete
else if($('#code_delete:checked').val()) {
if(count == 0) {
output1 += (before + ' = #{' + after + '}\n');
}
else {
output1 += ('AND\t' + before + ' = #{' + after + '}\n');
}
}
else {
output1 += (after + '\n');
}
count++;
}
var output = '';
if($('#code_basic:checked').val()) {
output = output1;
}
else if($('#code_vo:checked').val()) {
output = output1;
}
else if($('#code_resultmap:checked').val()) {
output = '<resultMap id="' + document.conf._id.value + '" class="' + document.conf._class.value + '">\n';
output += output1;
output += '</resultMap>';
}
else if($('#code_select:checked').val()) {
output = 'SELECT\t';
output += output1 + '\n';
output += 'FROM\t' + getTableName() + ' \n';
output += 'WHERE\t';
output += output2;
}
else if($('#code_insert:checked').val()) {
output = 'INSERT INTO ' + getTableName() + '(' + output1 + ') \n';
output += 'VALUES(' + output2 + ')';
}
else if($('#code_update:checked').val()) {
output = 'UPDATE\t' + getTableName() + ' \n';
output += 'SET\t' + output1 + '\n';
output += 'WHERE\t';
output += output2;
}
else if($('#code_delete:checked').val()) {
output = 'DELETE FROM ' + getTableName() + ' \n';
output += 'WHERE\t';
output += output1;
}
$('#monkeyoutput').text(output);
}
function getTableName() {
var tableName = $('input[name=table]').val();
if(tableName != '') {
return tableName;
}
return '[table_name]';
}
function fillOptionBox() {
var html = [];
html.push('<p>');
html.push('Table: <input id="table" type="text" name="table" onkeyup="convert();" />');
html.push('</p>');
$('#options').html(html.join(''));
$('#table').focus();
convert();
}
</script>
</head>
<body>
<h1>테이블 컬럼 카멜 표기법 변환기</h1>
<p>이 프로그램을 통해 Underscore Notation으로 표기된 테이블 컬럼명을 Camel Notation으로
변환된 자바 필드명으로 변경할 수 있다.</p>
<h2>사용법</h2>
<ol>
<li>테이블정의서에서 복사한 컬럼명을 왼쪽 Textarea에 붙여넣는다.</li>
<li>자동으로 Camel Notation으로 변경된 결과가 우측 Textarea에 표시된다.</li>
<li>필요한 경우 여러가지 Conversion Style을 선택할 수 있다.
<ul>
<li>Basic: 기본적인 Camel Notation 변환만 수행</li>
<li>VO: 자바의 필드 선언문으로 변환 (Hibernate Annotation도 추가로 지정 가능)</li>
<li>ResultMap: iBatis에서 사용하는</li>
<li>Select: iBatis에서 사용하는 select 쿼리문으로 변환</li>
<li>Insert: iBatis에서 사용하는 insert 쿼리문으로 변환</li>
<li>Update: iBatis에서 사용하는 update 쿼리문으로 변환</li>
<li>Delete: iBatis에서 사용하는 delete 쿼리문으로 변환</li>
</ul>
</li>
<li>우측 Textarea의 결과를 복사하여 필요한 곳에서 사용한다.</li>
</ol>
<form name="conf">
<fieldset>
<legend> Configurations </legend>
<p>
<strong>Conversion Style</strong> <br>
<input id="code_basic" type="radio" name="code" checked />
<label for="code_basic">Basic</label>
<input id="code_vo" type="radio" name="code" />
<label for="code_vo">VO</label> <input id="code_resultmap" type="radio" name="code" />
<label for="code_resultmap">ResultMap</label>
<input id="code_select" type="radio" name="code" />
<label for="code_select">Select</label>
<input id="code_insert" type="radio" name="code" />
<label for="code_insert">Insert</label>
<input id="code_update" type="radio" name="code" />
<labelfor="code_update">Update</label>
<input id="code_delete" type="radio" name="code" />
<label for="code_delete">Delete</label>
<script type="text/javascript">
$('#code_basic').click(function() {
$('#options').html('');
convert();
});
$('#code_vo').click(function() {
var html = [];
html.push('<p>');
html.push('<strong>Modifier Datatype</strong><br>');
html.push('<select id="modifier" onchange="convert();">');
html.push(' <option>public</option>');
html.push(' <option>protected</option>');
html.push(' <option selected>private</option>');
html.push('</select>');
html.push('<select id="datatype" onchange="convert();">');
html.push(' <option>int</option>');
html.push(' <option>long</option>');
html.push(' <option>float</option>');
html.push(' <option>double</option>');
html.push(' <option>byte[]</option>');
html.push(' <option>boolean</option>');
html.push(' <option>char</option>');
html.push(' <option selected>String</option>');
html.push('</select>');
html.push('</p>');
html.push('<p>');
html.push('<strong>Hibernate</strong><br>');
html.push('<input type="checkbox" name="hibernate" value="hibernate" id="hibernate" onclick="convert();" /><label for="hibernate">Use hibernate annotation</label>');
html.push('</p>');
$('#options').html(html.join(''));
convert();
});
$('#code_resultmap').click(function() {
var html = [];
html.push('<p>');
html.push('id: <input id="_id" type="text" name="id" onkeyup="convert();" /> ');
html.push('class: <input id="_class" type="text" name="class" onkeyup="convert();" />');
html.push('</p>');
$('#options').html(html.join(''));
$('#_id').focus();
convert();
});
$('#code_select').click(fillOptionBox);
$('#code_insert').click(fillOptionBox);
$('#code_update').click(fillOptionBox);
$('#code_delete').click(fillOptionBox);
</script>
</p>
<div id="options"></div>
</fieldset>
</form>
<br>
<p>
<textarea id="monkeyinput" class="camel" style="width: 48.5%; height: 50%;" onkeyup="convert();"></textarea>
<textarea id="monkeyoutput" class="camel" style="width: 48.5%; height: 50%;" readonly></textarea>
</p>
</body>
</html>
2014년 11월 3일 월요일
[Toad] 토드 단축키 정리
테이블 정보 상세보기
F4 : Table, View, Proc, Funct, Package를 DESC(테이블명 위에 커서를 두고 F4키)
자동완성
Ctrl+. : Table Completion (매칭되는 테이블목록 출력)
Ctrl+T : Columns Dropdown (해당테이블의 컬럼목록 표시)
SQL문 실행
F5 : SQL Editor내의 모든 SQL문 실행
Ctrl+Enter : 현재 커서의 SQL문 실행
F9 : SQL문 실행 후 Grid에 출력
히스토리(과거 수행SQL문 조회)
F8 : 과거에 실행한SQL문 HISTORY 목록
Alt+Up : History UP
Alt+Down : History DOWN
텍스트 대/소문자 변환
CTRL+L : 텍스트를 소문자로
CTRL+U : 텍스트를 대문자로
주석처리
Ctrl+B : 주석처리
Ctrl+Shift+B : 주석해제
편집 창 전환(이동)
F6 : SQL Editor와 결과창간의 이동
F2 : SQL Editor창 전체화면 전환
Shift+F2 : Grid Output창 전체화면 전환
기타 단축키
F7 : 화면을 모두 CLEAR
Ctrl+Shift+F : 쿼리문을 보기좋게 정렬
Ctrl+F9 : SQL문 Validate (SQL문을 수행하지 않음)
F1
|
Toad 도움말 파일의 SQL Editor 부분이 표시됩니다.
|
F2
|
전체 화면 Editor와 Editor/Results 패널 표시 장치 사이를 전환합니다.
|
<SHIFT>F2
|
전체 화면 그리드를 전환합니다.
|
F3
|
다음으로 일치하는 것을 찾습니다.
|
<SHIFT>F3
|
이전에 일치하는 것을 찾습니다.
|
F4
|
팝업 창의 테이블, 뷰, 프로시저, 함수, 또는 패키지를 설명합니다.
|
F5
|
스크립트로 실행합니다.
|
F6
|
커서를 Editor와 Results 패널 사이로 전환합니다.
|
F7
|
모든 텍스트를 지웁니다.
|
F8
|
이전 SQL 문을 재호출합니다(SQL Statement Recall 창을 불러옵니다).
|
F9
|
실행문을 실행합니다.
|
<CTRL>F9
|
실행(구문 분석) 없이 실행문을 검사합니다.
|
<SHIFT>F9
|
커서 위치에서 현재 실행문을 실행합니다.
|
F10
|
오른쪽 클릭 메뉴를 표시합니다.
|
F11
|
Script와 같은 것 실행(=F5)
|
F12
|
편집기 내용을 지정된 외부 편집기로 전달합니다.
|
<CTRL>A
|
모든 텍스트를 선택합니다.
|
<CTRL>C
|
복사
|
<CTRL>D
|
프로시저 인수를 표시합니다.
|
<CTRL>E
|
현재 실행문에서 Explain Plan을 실행합니다.
|
<CTRL>F
|
텍스트를 찾습니다(Find Text 창을 불러옵니다).
|
<CTRL>G
|
라인으로 이동합니다(Goto Line 창을 불러옵니다).
|
<CTRL>L
|
텍스트를 소문자로 변환합니다.
|
<CTRL>M
|
Make Code Statement
|
<CTRL>N
|
이름이 지정된 SQL 문을 재호출합니다(SQL Statement Recall 창을 불러옵니다).
|
<CTRL>O
|
텍스트 파일을 엽니다.
|
<CTRL>P
|
Strip Code Statement(쓸데없는 태그들을 정리해 줍니다. 유용함)
|
<CTRL>R
|
검색 및 바꾸기(Find and Replace Text 창을 불러옵니다)
|
<CTRL>S
|
파일을 저장합니다.
|
<SHIFT><CTRL>S
|
파일을 다른 이름으로 저장합니다.
|
<CTRL>T
|
열 드롭다운을 표시합니다.
|
<CTRL>U
|
텍스트를 대문자로 변환합니다.
|
<CTRL>V
|
붙여넣기
|
<CTRL>X
|
잘라내기
|
<SHIFT><CTRL>Z
|
마지막으로 취소한 작업을 재실행합니다.
|
<ALT><UP>
|
이전 실행문을 표시합니다.
|
<ALT><DOWN>
|
다음 실행문을 표시합니다(<ALT><UP>을 사용한 후 사용)
|
<ALT><PgUp>
|
이전 탭으로 이동
|
<ALT><PgDn>
|
다음 탭으로 이동
|
<CTRL><ALT><PgUp>
|
이전 결과 패널 탭으로 이동
|
<CTRL><ALT><PgDn>
|
다음 결과 패널 탭으로 이동
|
<CTRL><HOME>
|
데이터 그리드에서는 맨 위의 레코드셋으로 이동하며, 결과 그리드에서는 커서가 위치한행의 첫 번째 열로 이동하고, 편집기에서는 텍스트의 첫 번째 열과 첫 번째 행으로 이동합니다.
|
<CTRL><END>
|
데이터 그리드에서는 레코드셋의 맨 끝으로 이동하며, 편집기에서는 텍스트의 마지막 열과 마지막 행으로 이동합니다. 이 단원의 "주의"를 참조하십시오.
|
<CTRL><SPACE>
|
코드 완성 템플릿을 활성화합니다.
|
<CTRL><TAB>
|
MDI Child 창의 콜렉션을 순환합니다.
|
<CTRL><ENTER>
|
커서 이치에서 현재 SQL 문을 실행합니다.
|
<CTRL>. (마침표)
|
테이블 이름을 자동으로 완성합니다.
|
출처 :
http://unions5.tistory.com/39
피드 구독하기:
글 (Atom)