검색결과 리스트
개발에 해당되는 글 144건
- 2015.12.02 시간 지나면 자동으로 페이지 이동
- 2015.11.25 ORA-00054 에러
- 2015.11.24 접속 기기가 PC , 모바일인지 구분하는 스크립트.
- 2015.09.14 해당 컬럼이 있는 테이블 찾기
- 2015.08.11 도메인 자동 주소 변경
- 2015.04.01 하루동안 열지 않기 [쿠키]
- 2015.03.12 url로 파일 다운로드
- 2015.03.12 JSON 파싱 사용하기
- 2015.01.16 테이블 정보 조회
- 2014.11.06 오라클 UPDATE SELECT 문
글
시간 지나면 자동으로 페이지 이동
페이지가 변경되어, 안내 창이 나오고 시간 지나면 자동으로 페이지 이동을 하고 싶다.
두가지 방법이 있는데
가장 쉬운 방법은
<meta http-equiv="refresh" content="5; url=http://hoon2kc.tistory.com/" />
이 한줄만 넣어주면 된다. content 의 값으로 시간을 조절 할 수 있다.
두번째 방법은, 화면상에 00 초 후에 페이지를 이동합니다 라는 안내 문구를 띄우고 싶을때 하는 방법이다.
먼저 <span id="timeString"></span> 으로 안내 문구 위치를 잡아준다.
그 다음으로,
<script type="text/javascript">
<!--
var MOVE = function(param){
var self=this;
this.object = document.getElementById(param.id);
this.time = param.time||60; //페이지 이동 시간을 정해 준다. 여기선 1분
this.url = param.url||'';
this.timer = null;
this.run = function(){
timeString.innerHTML = this.time + '초 후 자동으로 이동 합니다.';
this.time--;
if(this.time < 0){
if(this.url!=''){
location.href = this.url;
window.clearTimeout(this.timer);
}
}else{
this.timer = window.setTimeout(
function(){self.run();}
,1000
)
}
};
this.run();
}
window.onload = function(){
new MOVE({id:'prt',url:'http://freetsim.freet.co.kr'}); //이동할 URL
}
//-->
</script>
이상입니다.
'개발 > 실전' 카테고리의 다른 글
자바스크립트 날짜 계산 (0) | 2016.06.20 |
---|---|
더보기 클릭 했을때 (0) | 2016.03.30 |
접속 기기가 PC , 모바일인지 구분하는 스크립트. (0) | 2015.11.24 |
도메인 자동 주소 변경 (0) | 2015.08.11 |
하루동안 열지 않기 [쿠키] (0) | 2015.04.01 |
설정
트랙백
댓글
글
ORA-00054 에러
ORA-00054: resource busy and acquire with NOWAIT specified
위와 같은 에러메시지가 출력되면서 해당 DML이나 DDL 명령이 안될때가 있다.
증산은 DML문장이나 DDL문장 실행을 하게 되면 그냥 멈춰버리는 증상이다.
원인은 Commit이 수행되지 않았을 경우등의 문제로 발생하는 등 원인이 다양하다.
어쨋든 이 증상은 해당 테이블이 바쁘게 사용중일 때 나타나는데 일명 LOCK이 걸린것이다.
가장 확실한 방법은 DB를 재시작하는 것이다.
그러나 사실 필드에서는 말도 안되는 짓이다. 서비스중인 db를 잠깐이라도 내린다는것 자체가 미친짓이라 할 수 있다.
허나, test용으로 만든 서버라면 db재시작도 상관없다.
결국은 아래와 같이 Lock을 풀어주는게 가장 적당한 방법이다.
1. sqlplus 오라클 접속(시스템 계정으로 접속한다. 토드로 이용해도 무관)
#sqlplus / as sysdba
2.SQL> select a.sid, a.serial#
from v$session a, v$lock b, dba_objects c
where a.sid=b.sid and
b.id1=c.object_id and
b.type='TM' and c.object_name='TABLE이름';
위 명령어를 입력하면 SID와 SERIAL NUMBER가 출력된다.
LOCK이 걸린 테이블의 SID이다.
3. 세션을 죽인다.
SQL> alter system kill session 'SID, SERIAL';
여기까지는 시스템계정을 알고 있는 사용자에 한해서의 해결책이다.
일반 사용자는 어떻게 할것인가???
간단하게 commit 명령어로 해결될 가능성이 높다. 이 명령어가 수행되고 나면 restore작업은 불가능하다.
SQL>commit
'개발 > DB' 카테고리의 다른 글
Clob 타입을 varchar2 타입으로 (0) | 2018.02.14 |
---|---|
오라클 REGEXP_LIKE (0) | 2015.12.16 |
해당 컬럼이 있는 테이블 찾기 (0) | 2015.09.14 |
테이블 정보 조회 (0) | 2015.01.16 |
오라클 UPDATE SELECT 문 (0) | 2014.11.06 |
설정
트랙백
댓글
글
접속 기기가 PC , 모바일인지 구분하는 스크립트.
웹 개발 도중에 pc버전, 모바일 버전 두가지로 개발하는데
자동으로 모바일로 접속하면 모바일 버전으로 이동하는 스크립트를 찾았다
<script language="Javascript">
var uAgent = navigator.userAgent.toLowerCase();
var mobilePhones = new Array('iphone','ipod','android','blackberry','windows ce','nokia','webos','opera mini','sonyericsson','opera mobi','iemobile');
for(var i=0;i<mobilePhones.length;i++)
if(uAgent.indexOf(mobilePhones[i]) != -1)
document.location="링크될 주소";
</script>
최초 index 페이지에 넣어주면 끝~
'개발 > 실전' 카테고리의 다른 글
더보기 클릭 했을때 (0) | 2016.03.30 |
---|---|
시간 지나면 자동으로 페이지 이동 (0) | 2015.12.02 |
도메인 자동 주소 변경 (0) | 2015.08.11 |
하루동안 열지 않기 [쿠키] (0) | 2015.04.01 |
checkbox 사용 (0) | 2014.10.29 |
설정
트랙백
댓글
글
해당 컬럼이 있는 테이블 찾기
SELECT A.TABLE_NAME FROM COLS A, TAB B WHERE A.COLUMN_NAME = '컬럼이름' GROUP BY TABLE_NAME
'개발 > DB' 카테고리의 다른 글
오라클 REGEXP_LIKE (0) | 2015.12.16 |
---|---|
ORA-00054 에러 (0) | 2015.11.25 |
테이블 정보 조회 (0) | 2015.01.16 |
오라클 UPDATE SELECT 문 (0) | 2014.11.06 |
오라클 단일행 함수 정리 (0) | 2014.11.05 |
설정
트랙백
댓글
글
도메인 자동 주소 변경
A 도메인 주소에서 B로 변경될 상황이 있었다.
구글링 결과 아주 쉬운 방법!!
<script type="text/javascript"> <!--
//기본 도메인 입력
var url1 = 'A';
//2차 도메인 입력
var url2 = 'B';
var online = document.URL;
if(online.match(url1))
document.location.href = online.replace(url1,url2);
//-->
</script>
이제 A의 도메인 경로로 들어와도 자동으로 B의 경로로 된다
'개발 > 실전' 카테고리의 다른 글
시간 지나면 자동으로 페이지 이동 (0) | 2015.12.02 |
---|---|
접속 기기가 PC , 모바일인지 구분하는 스크립트. (0) | 2015.11.24 |
하루동안 열지 않기 [쿠키] (0) | 2015.04.01 |
checkbox 사용 (0) | 2014.10.29 |
오라클 long 타입 insert (0) | 2014.08.28 |
설정
트랙백
댓글
글
하루동안 열지 않기 [쿠키]
<p style="float:left"><input type="checkbox" name="checkbox" value="checkbox" id="checkPopClose">하루동안 보지않음</p>
<a href="javascript:closeWin();" class="close" id="closePopup">닫기</a>
// JavaScript Document
$(function()
{
checkCookie();
$('#closePopup').click(function()
{
//checkbox 체크여부 확인
if($('#checkPopClose').is(':checked')) //check 박스에 체크를 했으면
{
closeWin('1');
}
else
{
$('#headbanner').slideUp(300);
}
});
})
function closeWin(obj)
{
if (obj == "1" )
{
setCookie2( "topBanner", "done" , 1);
}
$('#headbanner').slideUp(300);
}
function setCookie2( name, value, expiredays )
{
var todayDate = new Date();
todayDate.setDate( todayDate.getDate() + expiredays );
document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";"
}
function checkCookie()
{
//쿠키값이 있으면 element를 가려준다
if(getCookie2("topBanner") == "done")
document.getElementById("headbanner").style.display="none";
//쿠키값이 없으면 element를 보여준다
else
document.getElementById("headbanner").style.display="block";
}
function getCookie2( name )
{
var nameOfCookie = name + "=";
var x = 0;
while ( x <= document.cookie.length )
{
var y = (x+nameOfCookie.length);
if ( document.cookie.substring( x, y ) == nameOfCookie )
{
if ( (endOfCookie=document.cookie.indexOf( ";", y )) == -1 )
endOfCookie = document.cookie.length;
return unescape( document.cookie.substring( y, endOfCookie ) );
}
x = document.cookie.indexOf( " ", x ) + 1;
if ( x == 0 )
break;
}
return "";
}
'개발 > 실전' 카테고리의 다른 글
접속 기기가 PC , 모바일인지 구분하는 스크립트. (0) | 2015.11.24 |
---|---|
도메인 자동 주소 변경 (0) | 2015.08.11 |
checkbox 사용 (0) | 2014.10.29 |
오라클 long 타입 insert (0) | 2014.08.28 |
getInstance() 란 무엇인가 (0) | 2014.06.18 |
설정
트랙백
댓글
글
url로 파일 다운로드
package com.space.rentalServer.batch;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
public class mobigoFileDown
{
/**
* 버퍼 사이즈
*/
final static int size = 1024;
/**
* fileAddress에서 파일을 읽어, 다운로드 디렉토리에 다운로드
*
* @param fileAddress
* @param localFileName
* @param downloadDir
*/
public static void fileUrlReadAndDownload(String fileAddress,String localFileName, String downloadDir)
{
OutputStream outStream = null;
URLConnection uCon = null;
InputStream is = null;
try
{
System.out.println("-------Download Start------");
URL Url;
byte[] buf;
int byteRead;
int byteWritten = 0;
Url = new URL("http://ext.mobigo.co.kr/freet.json.php");
outStream = new BufferedOutputStream(new FileOutputStream(downloadDir + localFileName));
uCon = Url.openConnection();
is = uCon.getInputStream();
buf = new byte[size];
while ((byteRead = is.read(buf)) != -1)
{
outStream.write(buf, 0, byteRead);
byteWritten += byteRead;
}
System.out.println("Download Successfully.");
System.out.println("File name : " + localFileName);
System.out.println("of bytes : " + byteWritten);
System.out.println("-------Download End--------");
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
is.close();
outStream.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
/**
*
* @param fileAddress
* @param downloadDir
*/
public static void fileUrlDownload(String fileAddress, String downloadDir)
{
int slashIndex = fileAddress.lastIndexOf('/');
int periodIndex = fileAddress.lastIndexOf('.');
// 파일 어드레스에서 마지막에 있는 파일이름을 취득
String fileName = fileAddress.substring(slashIndex + 1);
if (periodIndex >= 1 && slashIndex >= 0 && slashIndex < fileAddress.length() - 1)
{
fileUrlReadAndDownload(fileAddress, fileName, downloadDir);
}
else
{
System.err.println("path or file name NG.");
}
}
/**
* main
*
* @param args
*/
public static void main(String[] args)
{
// 파일 어드레스
String url = "http://ext.mobigo.co.kr/freet.json"; //freet.json의 파일 이름으로 저장된다
// 다운로드 디렉토리
String downDir = "/data4/rcpro/mobigo/";
// 다운로드 호출
fileUrlDownload(url, downDir);
}
}
'개발 > 코딩' 카테고리의 다른 글
JSP 드래그, 오른쪽 클릭 막기 (0) | 2017.01.25 |
---|---|
메뉴 클릭하면 이미지 변경 (0) | 2016.03.21 |
JSON 파싱 사용하기 (0) | 2015.03.12 |
session을 통해 값넘기기 (0) | 2014.06.11 |
request.getParameter로 값 넘기기 (0) | 2014.06.11 |
설정
트랙백
댓글
글
JSON 파싱 사용하기
먼저 json-sample-1.2 jar를 다운 받아야한다.
<%@ page language="java" contentType="text/html; charset=euc-kr" import="org.json.simple.*" %>
<%@ taglib uri="/spacenet/taglibs/dispData" prefix="dd" %>
<%@ page import="java.util.*, spacenet.func, spacenet.database.BlobQuery" %>
<%@ page import="java.io.PrintWriter"%>
<%@ page import="rental.*"%>
<%@ page import="java.util.*, spacenet.func, spacenet.ppplus.ppagencyuser.ppagencyUser" %>
<%
WriteLog log = new WriteLog("/home/ppplus/logs/mobigo.log");
String ppAgencyNo=func.NVL(request.getParameter("aid")); // http://partner.freet.co.kr/mobigo/mobigo.jsp?aid=
log.write(" === mobigo start ===");
log.write(" ppAgencyNo: ["+ppAgencyNo+"]");
String ppAgencyName="";
String operType="";
int remain = 0;
String resultCode = "99";
//////////////// 해당 대리점 정상, 잔액 여부 쿼리 Start//////////////////////
Hashtable param = new Hashtable();
param.put("1" , "SELECT PP_AGENCY_NAME, REMAIN, OPER_TYPE FROM PP_AGENCY_INFO WHERE PP_AGENCY_NO = '"+ppAgencyNo+"' ");
%>
<dd:data db="ppc" sql="REPLACE_QRY" params="<%=param%>" paramsReplace="true">
<%
ppAgencyName = String.valueOf(data.get("1"));
remain =Integer.parseInt(String.valueOf(data.get("2")));
operType = String.valueOf(data.get("3"));
log.write(" ppAgencyName: ["+ppAgencyName+"]");
log.write(" remain: ["+remain+"]");
log.write(" operType: ["+operType+"]");
%>
</dd:data>
<%
//////////////// 해당 대리점 정상, 잔액 여부 쿼리 End//////////////////////
if(operType.equals("A"))
{
if(remain >= 1000)
resultCode = "00"; // 대리점 영업이 정상일 경우
else
resultCode = "99"; //정상이면서 잔액이 없는 경우
}
else
resultCode = "99"; //대리점 영업이 정상이 아닐 경우
log.write(" resultCode: ["+resultCode+"]");
String callBack = request.getParameter("callBack"); // 서버로 부터 넘어온 데이터를 받아옴
log.write(" callBack: ["+callBack+"]");
log.write(" === mobigo end ===");
JSONObject jObject = new JSONObject(); //하나의 정보를 저장할 JSONObject를 설정
PrintWriter pw = response.getWriter();
jObject.put("id", ppAgencyNo); //데이터를 삽입
jObject.put("resultCode", resultCode); //데이터를 삽입
pw.print(callBack + "("+jObject.toString()+")");
// pw.print("("+jObject.toString()+")");
pw.flush();
pw.close();
%>
============================ json 파싱 ============================================
JSON형태로 저장된 파일을 읽어서 DB에 저장
******** json 파일 start *****************
{
"date":"2015-03-03",
"rowCount":2,
"rows":
[
{
"aid":"ID1",
"aname":"\ub300\ub9ac\uc810\uba851",
"acode":"\ub300\ub9ac\uc810\ucf54\ub4dc1",
"dc":"7",
"dp":"6300",
"mc":"21"
},
{
"aid":"ID2",
"aname":"\ub300\ub9ac\uc810\uba852",
"acode":"\ub300\ub9ac\uc810\ucf54\ub4dc2",
"dc":"5",
"dp":"4500",
"mc":"15"
},
{
"aid":"ID3",
"aname":"\ub300\ub9ac\uc810\uba853",
"acode":"\ub300\ub9ac\uc810\ucf54\ub4dc3",
"dc":"7",
"dp":"7500",
"mc":"75"
}
]
}
******** json 파일 end *****************
******** 파싱 및 DB저장 ****************
<%@ page language="java" contentType="text/html; charset=euc-kr"%>
<%@ page import="org.json.simple.*" %>
<%@ page import="java.io.*,rental.*"%>
<%@page import="org.json.simple.parser.*" %>
<%@ page import="java.util.*, spacenet.func, spacenet.database.BlobQuery" %>
<%!
public String replaceString(String src, String oldStr, String newStr)
{
if (src == null)
return null;
StringBuffer dest = new StringBuffer("");
int oldLen = oldStr.length();
int srcLen = src.length();
int pos = 0;
int oldPos = 0;
while ((pos = src.indexOf(oldStr, oldPos)) >= 0)
{
dest.append(src.substring(oldPos, pos));
dest.append(newStr);
oldPos = pos + oldLen;
}
if (oldPos < srcLen)
dest.append(src.substring(oldPos));
return dest.toString();
}
%>
<%
WriteLog log = new WriteLog("/home/ppplus/logs/mobigo.log");
BlobQuery db = null;
int qryno = 0, n = 0;
JSONParser parser = new JSONParser();
String acode="", aid="", aname="", dp="", mc="", dc="";
try
{
Object obj = parser.parse(new FileReader("/data4/rcpro/mobigo/freet.json")); // myJson.json파일을 읽어와 Object로 파싱
JSONObject jsonObject =(JSONObject) obj;
JSONArray msgList =(JSONArray) jsonObject.get("rows"); // key 값으로 list가져오기
/*
Iterator iterator = msgList.iterator();
while(iterator.hasNext()) iterator 로 파일 읽기
{
out.println(iterator.next());
}
*/
String date = (String) jsonObject.get("date"); //날짜
int rowCount = func.objToInt(jsonObject.get("rowCount")); //레코드 갯수
date = replaceString((date),"-",""); // YYYY-MM-DD 형식에서 YYYYMMDD 형식으로
log.write(" date: ["+date+"]");
log.write(" rowCount: ["+rowCount+"]");
try
{
db = new BlobQuery();
//db에 접속하기
if (!db.getConnect("ppc"))
{
out.println("<script>alert('db 접속오류가 발생하였습니다. 다시 시도해주세요.'); history.back(); </script>");
}
db.SQL = "INSERT INTO MOBIGO (PROCESS_DATE, ROW_COUNT, ID, PP_AGENCY_NO, PP_AGENCY_NAME, DAY_COUNT, DAY_FEE, VAT_DAY_FEE, MONTH_COUNT) "
+"VALUES ( ? ,?, ?, ?, ?, ?, ?, ? ,? ) ";
qryno = db.prepareStatement();
for(int i=0; i < msgList.size(); i++)
{
JSONObject jsonobj=(JSONObject)msgList.get(i); //각각의 값을 개별로 가져오기 위해 JSON 배열 파싱후 각각의 key로 value 값 출력
aid=(String) jsonobj.get("aid"); //ID
aname=(String) jsonobj.get("aname"); //대리점명
acode=(String) jsonobj.get("acode"); //대리점코드
dc=(String) jsonobj.get("dc"); //일일누적건수
dp=(String) jsonobj.get("dp"); //일일 누적 금액
mc=(String) jsonobj.get("mc"); //월 누적건수
double vatDp = Double.parseDouble(dp) * 1.1; //일일 누적금액에 부가세 포함
log.write(" aid: ["+aid+"]");
log.write(" aname: ["+aname+"]");
log.write(" acode: ["+acode+"]");
log.write(" dc: ["+dc+"]");
log.write(" dp: ["+dp+"]");
log.write(" mc: ["+mc+"]");
log.write(" vatDp: ["+vatDp+"]");
db.Statements(qryno).setString(1, date);
db.Statements(qryno).setInt(2, rowCount);
db.Statements(qryno).setString(3, aid);
db.Statements(qryno).setString(4, acode);
db.Statements(qryno).setString(5, aname);
db.Statements(qryno).setInt(6, Integer.parseInt(dc));
db.Statements(qryno).setInt(7, Integer.parseInt(dp));
db.Statements(qryno).setDouble(8, vatDp);
db.Statements(qryno).setInt(9, Integer.parseInt(mc));
n = db.executeUpdate(qryno);
log.write(" RESULT: ["+n+"]");
}
db.Close(qryno);
db.commit();
}
catch(Exception e)
{
log.write("error: " + e.getMessage());
db.rollback();
}
finally
{
db.freeConnect();
}
} catch (Exception e)
{
e.printStackTrace();
log.write("error: " + e.getMessage());
}
%>
'개발 > 코딩' 카테고리의 다른 글
메뉴 클릭하면 이미지 변경 (0) | 2016.03.21 |
---|---|
url로 파일 다운로드 (0) | 2015.03.12 |
session을 통해 값넘기기 (0) | 2014.06.11 |
request.getParameter로 값 넘기기 (0) | 2014.06.11 |
request, response 객체 (0) | 2014.04.03 |
설정
트랙백
댓글
글
테이블 정보 조회
테이블 내의 컬럼이 뭐가 들어있는지, 속성은 무엇인지 알고 싶을 때 사용하는 쿼리
SELECT
TABLE_NAME,
COLUMN_NAME,
DATA_TYPE,
DATA_LENGTH,
DATA_PRECISION,
DATA_SCALE,
NULLABLE,
COLUMN_ID,
DATA_DEFAULT,
CHAR_LENGTH
FROM
USER_TAB_COLUMNS
WHERE
TABLE_NAME = 'SA_MEMBER'
'개발 > DB' 카테고리의 다른 글
ORA-00054 에러 (0) | 2015.11.25 |
---|---|
해당 컬럼이 있는 테이블 찾기 (0) | 2015.09.14 |
오라클 UPDATE SELECT 문 (0) | 2014.11.06 |
오라클 단일행 함수 정리 (0) | 2014.11.05 |
오라클 PARTITION BY (1) | 2014.10.30 |
설정
트랙백
댓글
글
오라클 UPDATE SELECT 문
UPDATE문을 짜다가
UPDATE TABLE1 SET A = (SELECT D FROM TABLE2 WHERE G='AAA'),
B=(SELECT E FROM TABLE2 WHERE G='AAA')
WHERE H='111'
이런식으로 작성하다가 이건 너무 비효율적인 방법이라서 찾아봤는데
아래와 같은 방법이 있었다....
UPDATE TABLE1
SET( A, B, C) = (SELECT D, E, F FROM TABLE2 WHERE G= 'AAA')
WHERE H = '111'
매우 간단하죠~?ㅋㅋ
'개발 > DB' 카테고리의 다른 글
해당 컬럼이 있는 테이블 찾기 (0) | 2015.09.14 |
---|---|
테이블 정보 조회 (0) | 2015.01.16 |
오라클 단일행 함수 정리 (0) | 2014.11.05 |
오라클 PARTITION BY (1) | 2014.10.30 |
해당 숫자에 몇건이 있는가? (0) | 2014.06.25 |