반응형
Posted by 1010
반응형
Posted by 1010
반응형
Posted by 1010
반응형
Posted by 1010
반응형
Posted by 1010
반응형
Posted by 1010
반응형
Posted by 1010
반응형
Posted by 1010
반응형
Posted by 1010
반응형
Posted by 1010
반응형
Posted by 1010
반응형
Posted by 1010
반응형
Posted by 1010
반응형
Posted by 1010
반응형
Posted by 1010
반응형

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script language='JavaScript'>
function checkAall(oElement){
 var newtime = new Date().getTime(); 
 for(var i=0;i<document.form1.chkA.length;i++){
  document.form1.chkA[i].checked = oElement.checked;
 }
 var newtime2 = new Date().getTime();

 td1.innerHTML="걸린시간 : "+(newtime2-newtime);
}

function checkBall(oElement){
 var newtime = new Date().getTime();

 var len = document.form1.chkB.length;
 for(var i=0;i<len;i++){
  document.form1.chkB[i].checked = oElement.checked;
 }

 var newtime2 = new Date().getTime();

 td2.innerHTML="걸린시간 : "+(newtime2-newtime);
}


function checkCall(oElement){
 var newtime = new Date().getTime();

 var len = document.form1.chkC.length;
 var chkArr = document.form1.chkC;
 var boolv =  oElement.checked;

 for(var i=0;i<len;i++){
  chkArr[i].checked = boolv;
 }

 var newtime2 = new Date().getTime();

 td3.innerHTML="걸린시간 : "+(newtime2-newtime);
}
</script>
</HEAD>
<BODY>
 <form name='form1'>
  <table border='1' width='700'>
   <tr>
    <td><input type='checkbox' id='chkAall' onclick='checkAall(this)'>전체 체크/해제</td>
    <td><input type='checkbox' id='chkBall' onclick='checkBall(this)'>전체 체크/해제</td>
    <td><input type='checkbox' id='chkCall' onclick='checkCall(this)'>전체 체크/해제</td>
   </tr>
   <tr>
    <td>
     <div id="divA" style="overflow-x: hidden; overflow-y: auto; width:100%; height:200; padding: 0px; border: 1;">  <script language='JavaScript'>
       for(var i=0;i<2000;i++){
        document.write("<input type='checkbox' id='chkA' value='"+i+"'>A의 "+i+" 번째 체크박스<br>")
       }
      </script>
     <div>
    </td>
    <td>
     <div id="divB" style="overflow-x: hidden; overflow-y: auto; width:100%; height:200; padding: 0px; border: 1;">  <script language='JavaScript'>
       for(var i=0;i<2000;i++){
        document.write("<input type='checkbox' id='chkB' value='"+i+"'>B의 "+i+"번째 체크박스<br>")
       }
      </script>
     <div>    
    </td>
    <td>
     <div id="divC" style="overflow-x: hidden; overflow-y: auto; width:100%; height:200; padding: 0px; border: 1;">  <script language='JavaScript'>
       for(var i=0;i<2000;i++){
        document.write("<input type='checkbox' id='chkC' value='"+i+"'>C의 "+i+"번째 체크박스<br>")
       }
      </script>
     <div>    
    </td>
   </tr>
   <tr>
    <td id='td1'>&nbsp;</td>
    <td id='td2'>&nbsp;</td>
    <td id='td3'>&nbsp;</td>
   </tr>
  <table>
 </form>
</BODY>
</HTML>

Posted by 1010
01.JAVA/Java2008. 7. 11. 17:59
반응형

/**
 *
 */
package com.sbdc.util;

import java.text.DecimalFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.*;
import java.io.*;

/**
 * @author jchhkr
 *
 */

public class EtcUtil {
 
 public String checkNull(String pStr){
  if(pStr == null || "NULL".equals(pStr.toUpperCase()))
   return "";
  else
   return pStr;
 }
 
 public String checkNull(String pStr, String retStr){
  if(pStr == null || "NULL".equals(pStr.toUpperCase()))
   return retStr;
  else
   return pStr;
 }
 
 public int checkNull(String pStr, int pInt){
  if(pStr == null || "".equals(pStr))
   return pInt;
  else
   return Integer.parseInt(pStr);
 }
 
 public float checkNull(String pStr, float pInt){
  if(pStr == null)
   return pInt;
  else
   return Float.parseFloat(pStr);
 }  
 
 public String getFomatDate(String strType, String strDate){
  String delim = "";
 
  if("1".equals(strType))
   delim = "-";
  else if("2".equals(strType))
   delim = ".";
  else if("3".equals(strType))
   delim = "/";

  if(strDate == null || "".equals(strDate)){
   return "";
  }else{
   if(strDate.length() == 8){
    return strDate.substring(0, 4) + delim + strDate.substring(4, 6) + delim + strDate.substring(6, 8);
   }else{
    return strDate;
   }
  }
 }

 // 로그파일 작성
 public void writeLog(String who, String msg, String sql){
  String LogDir = "D:/web_root/sbdc/log";

  String writeStr = "";
  writeStr = getTime() + " | " + who + " | " + msg;

  //파일이 없을 경우 생성
  String fileName = LogDir + "/sbdc_" +
        getYear() +  getMonth() + getDay() + ".log";
  try{
   makeFile(fileName);
   
   File file = new File(fileName);
   RandomAccessFile randomaccessfile = new RandomAccessFile(file, "rw");
   
   long i = randomaccessfile.length();
   randomaccessfile.seek(i);
   randomaccessfile.write(writeStr.getBytes());
   randomaccessfile.write("\n".getBytes());
   
   randomaccessfile.close();
 
  }catch(Exception e){
   System.out.println("Write Log Error :::: " + e.toString());
  }
 }
 
 public void makeFile(String fileName) throws Exception{
  File file = new File(fileName);
  if(!file.isFile()){
   file.createNewFile();
  }
 }
 
 //날짜와 시간 가져오기
 public static String getYear(){
  Calendar calendar = Calendar.getInstance();
  return Integer.toString(calendar.get(Calendar.YEAR));
 }
 
 //현재 월 가져오기
  public static String getMonth(){
  Calendar now = Calendar.getInstance();
  int monthN  = now.get(Calendar.MONTH)+1;
  String MON  = (monthN<10)? "0"+Integer.toString(monthN):Integer.toString(monthN) ;
 
  return MON;
  }
 
 //현재 일자 가져오기
 public static String getDay(){
  Calendar now = Calendar.getInstance();
  int dayN     = now.get(Calendar.DAY_OF_MONTH);
  if(dayN <10){
      return '0' + Integer.toString(dayN);
  }
  return Integer.toString(dayN);
 }
 
 public static String getDate(){ //년-월-일
  java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd");
  return  formatter.format(new java.util.Date());
 }
 public static String getTime(){ //년-월-일 시:분:초
  java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  return  formatter.format(new java.util.Date());
 }
 public static String getTime2(){ //시:분:초
  java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("HHmmss");
  return  formatter.format(new java.util.Date());
 }
 public static int getDateNum(){
  java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyyMMdd");
  return  Integer.parseInt(formatter.format(new java.util.Date()));
 }
 
 //한달전 일자 가져오기, sDay:현재일자 sMM:개월수(1은 1개월)
 public String getLastMonth() {
  Calendar cal = new GregorianCalendar();
 
  String sDay = getTime().substring(0,10);
  String sMM = "1";
 
  SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  Date d = df.parse(sDay, new ParsePosition(0));
 
  cal.setTime(d);
  cal.add(Calendar.MONTH, -Integer.parseInt(sMM));
 
  return df.format(cal.getTime());
 }
 
 // 한달후 일자 가져오기, sDay:현재일자 sMM:개월수(1은 1개월)
 public String getNextMonth() {
  Calendar cal = new GregorianCalendar();
 
  String sDay = getTime().substring(0,10);
  String sMM = "1";
 
  SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  Date d = df.parse(sDay, new ParsePosition(0));
 
  cal.setTime(d);
  cal.add(Calendar.MONTH, Integer.parseInt(sMM));
 
  return df.format(cal.getTime());
 }
 
 // 어제 일자 가져오기, sDay:현재일자 sMM:일수(1은 1일)
 public String getLastDate() {
  Calendar cal = new GregorianCalendar();
 
  String sDay = getTime().substring(0,10);
  String sMM = "1";
 
  SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  Date d = df.parse(sDay, new ParsePosition(0));
 
  cal.setTime(d);
  cal.add(Calendar.DATE, -Integer.parseInt(sMM));
 
  return df.format(cal.getTime());
 }
 
 //두 날짜 차이값 비교, sDay:일자1 pDay:일자2
 public long getDiffDate(String day1, String day2) {
 
  long retVal = 0;
  String sDay = day1;
  String pDay = day2;
 
  SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
 
  Date d1 = df.parse(sDay, new ParsePosition(0));
  Date d2 = df.parse(pDay, new ParsePosition(0));
 
  retVal = (d1.getTime() - d2.getTime()) / (1000*60*60*24);
   
  return retVal;
 }
 /**
    * 설명   한글코드처리
    * @param     --String s
    * @return    --String
    * @exception
    */

  public String convToKo(String s){
   String retStr = "";
    try{
     if(s != null){
      retStr = (new String(s.getBytes("8859_1"),"KSC5601"));
     }
    }catch (Exception e){
     retStr = "";
    }
   
    return retStr;
  }
 
  // 파일명변경
 public void setFilerename(String path, String filename_old, String filename_new){
  //파일명 변경..
  File ff = new File(path+"/"+filename_old);
  if(ff.exists()){
   File fileRename = new File(path+"/"+filename_new);
 
   ff.renameTo(fileRename);
  }
 }
 
 // 특수문자에 대해 HTML 형태로 변환
 public String convToDB(String str) {
 
  String tmpStr = "";
 
  if(str == null){
   str = "";
  }
 
  tmpStr = str.replaceAll("&quot;",  "\"");
  tmpStr = tmpStr.replaceAll("&lt;",  "<");
  tmpStr = tmpStr.replaceAll("&gt;",  ">");
  tmpStr = tmpStr.replaceAll("&nbsp;",  " ");
  tmpStr = tmpStr.replaceAll("&amp;",  "&");
 
  return tmpStr;
 }
 
 public String convToHtml(String str) {
 
  String tmpStr = "";
 
  if(str == null){
   str = "";
  }
 
  tmpStr = str.replaceAll("\"", "&quot;");
  tmpStr = tmpStr.replaceAll("<", "&lt;");
  tmpStr = tmpStr.replaceAll(">", "&gt;");
  tmpStr = tmpStr.replaceAll(" ", "&nbsp;");
 
  return tmpStr;
 }
 
 //파일 사이즈 가져오기
 public String getFileSize(File file){
  if(file.exists())
   return Long.toString(file.length());
  else
   return "0";
 }
 
 //파일 확장자 가져오기
 public String getFileExt(String filenm){
  if(!"".equals(filenm))
   return filenm.substring(filenm.lastIndexOf(".")+1);
  else
   return "";  
 }
 
 //지정된 글자수를 초과한 문자열을 대체문자로 교체
 public String getCutUTFString(String s, int len, String tail){
  if (s == null)
   return null;
 
  int srcLen = s.getBytes().length;
  if (srcLen < len)
   return s;
  String tmpTail = tail;
 
  if (tail == null)
   tmpTail = "";
  int tailLen = tmpTail.getBytes().length;
 
  if (tailLen > len)
   return "";
  char a;
  int i = 0;
  int realLen = 0;
 
  for (i = 0; i < len - tailLen && realLen < len - tailLen; i++) {
   a = s.charAt(i);
   if ((a & 0xFF00) == 0)
    realLen += 1;
   else
    realLen += 2;
  }
 
  while (s.substring(0, i).getBytes().length > len - tailLen) {
   i--;
  }
  return s.substring(0, i) + tmpTail;
 }
 
 /**
  * 스트링 자르기
  * 지정한 정수의 개수 만큼 빈칸(" ")을 스트링을 구한다.
  * 절단된 String의 바이트 수가 자를 바이트 개수를 넘지 않도록 한다.
  *
  * @param <str>원본 String
  * @param <int>자를 바이트 개수
  * @param <char>+1 or -1
  * @return <String> 절단된 String
  */
 public String cutString(String str, int length, char type)
 {
     byte[] bytes = str.getBytes();
     int len = bytes.length;
     int counter = 0;

     if(length >= len)
     {
         StringBuffer sb = new StringBuffer();
         sb.append(str);

         for(int i=0;i<length-len;i++) sb.append(' ');
         return sb.toString();
     }

     for(int i=length-1; i>=0; i--)
     {
         if(((int)bytes[i] & 0x80) != 0) counter++;
     }

     String result = null;

     if(type == '+') result = new String(bytes, 0, length + (counter % 2));
     else if(type == '-') result = new String(bytes, 0, length - (counter % 2));
     else result = new String(bytes, 0, length - (counter % 2));
    
     return result + "..";
 }
 
 public String covToDate(String str) {
 
  String tmpStr = "";
  String tmpArray[] = new String[3];
  String retStr = "";
 
  if(!"".equals(str) && !"null".equals(str) && str != null) {
   
   tmpStr = str.replaceAll(" ", "");
   tmpStr = tmpStr.replaceAll("[.]", "-");
   tmpArray = tmpStr.split("-");
   
   if(tmpArray[0].length() < 4) {
    tmpArray[0] = "20" + tmpArray[0];
   }
   
   if(tmpArray[1].length() < 2) {
    tmpArray[1] = "0" + tmpArray[1];
   }
   
   if(tmpArray[2].length() < 2) {
    tmpArray[2] = "0" + tmpArray[2];
   }
   
   retStr = tmpArray[0] + "-" + tmpArray[1] + "-" + tmpArray[2];
  }
  return retStr;
 }
 
 //원본 문자를 구분자로 분해하여 배열을 리턴한다.
 //전화번호, 팩스의 경우 - 구분으로 3개의 배열값을 갖도록 할 경우 사용
 public String[] getSepStringArr(String tarVal, String sepVal, int arrLen){
  String[] retStrArr = new String[arrLen];
  String[] tarStrArr = tarVal.split(sepVal);
 
  for(int i=0; i<arrLen; i++){
   if(i>=tarStrArr.length){
    retStrArr[i] = "";
   }else{
    retStrArr[i] = tarStrArr[i];
   }
  }
  return retStrArr;
 }
 
 /**
  * 문자열의 특수문자장 줄바꿈 Escape 문자열을 HTML 문서의 줄바꿈 태그("&lt;br/&gt;")로 변경
  * 2007-07-16 김형섭 추가
  *
  * @param <String>input 변경할 문자열
  * @return <String>"\r\n"과 "\r"이 "&lt;br/&gt;"로 치환된 문자열
  *
  */
 public String toLineBreak(String input)
 {
  return input.replaceAll("\r\n", "<br/>").replaceAll("\r", "<br/>");
 }
 
 public String toLine(String input)
 {
  return input.replaceAll("<br/>", "\r\n").replaceAll("<br/>", "\r");
 }
 
 /**
  * 퍼센트를 계산
  * 2007-07-17 김형섭 추가
  *
  * @param <int>decimalCount 소수점 자릿수
  * @param <int>number 대상값
  * @param <int>sum 합계값
  * @return <float>퍼센트값
  *
  */
 public float getPercent(int decimalCount, int number, int sum)
 {
  return this.getPercent(decimalCount, (float)number, (float)sum);
 }

 /**
  * 퍼센트를 계산
  * 2007-07-17 김형섭 추가
  *
  * @param <int>decimalCount 소수점 자릿수
  * @param <int>number 대상값
  * @param <float>sum 합계값
  * @return <float>퍼센트값
  *
  */
 public float getPercent(int decimalCount, int number, float sum)
 {
  return this.getPercent(decimalCount, (float)number, sum);
 }

 /**
  * 퍼센트를 계산
  * 2007-07-17 김형섭 추가
  *
  * @param <int>decimalCount 소수점 자릿수
  * @param <float>number 대상값
  * @param <int>sum 합계값
  * @return <float>퍼센트값
  *
  */
 public float getPercent(int decimalCount, float number, int sum)
 {
  return this.getPercent(decimalCount, number, (float)sum);
 }

 /**
  * 퍼센트를 계산
  * 2007-07-17 김형섭 추가
  *
  * @param <int>decimalCount 소수점 자릿수
  * @param <float>number 대상값
  * @param <float>sum 합계값
  * @return <float>퍼센트값
  *
  */
 public float getPercent(int decimalCount, float number, float sum)
 {
     float devidedNumber = 0f;

     if(sum != (float)0) devidedNumber = number/sum;

  return formatDecimal(decimalCount, devidedNumber * 100f);
 }

 /**
  * 소수점 자릿수를 지정하여 변경
  * 2007-07-17 김형섭 추가
  *
  * @param <int>decimalCount 소수점 자릿수
  * @param <float>number 대상값
  * @return <float>변경된값
  *
  */
 public float formatDecimal(int decimalCount, float number)
 {
  String pattern = "#.";
 
  for(int i=0; i<decimalCount; i++)
  {
   pattern+= "0";
  }
 
  DecimalFormat dformat = new DecimalFormat(pattern);
  return Double.valueOf(dformat.format(number)).floatValue();
 }
 
 /**
  * 소수점 자릿수를 지정하여 변경
  * 2007-07-17 김형섭 추가
  *
  * @param <int>decimalCount 소수점 자릿수
  * @param <double>number 대상값
  * @return <float>변경된값
  *
  */
 public float formatDecimal(int decimalCount, double number)
 {
  String pattern = "#.";
 
  for(int i=0; i<decimalCount; i++)
  {
   pattern+= "0";
  }
 
  DecimalFormat dformat = new DecimalFormat(pattern);
  return Double.valueOf(dformat.format(number)).floatValue();
 }
 
 /**
  * 숫자를 받아 3자리마다 ,를 넣어 리턴
  * 2007-07-27 정상욱 추가
  *
  * @param <String>변경할 수
  * @return <String>변경된 값
  */

 public String convToMoney(String strNumber) {
  String Money = "";
  if (strNumber == null) {
   Money = "";
  } else {
   try{
    float floatMoney = Float.parseFloat(strNumber);
   
    java.text.DecimalFormat tstFormat = new java.text.DecimalFormat("#,###");
   
    Money = tstFormat.format(floatMoney);
   }catch(Exception e){
    Money = strNumber;
   }
  }
 
  return Money;
 }
 
 public String padStr (String orgStr, String direction, String repStr, int len) {
  orgStr = checkNull(orgStr, "");
  for(int i = 1; i <= len; i++){
   if("L".equals(direction))
    orgStr = repStr + orgStr;
   else
    orgStr = orgStr + repStr;
  }
 
  return orgStr;
 }

    /**
  * 현재의 날짜를 스트링으로 리턴
  * 2007/09/13 추가 (김형섭)
  *
     * @param <String>format 날짜포맷 (ex-yyyyMMdd)
  * @return <String>날짜
  */
    public String getCurrentDate(String format)
    {
        SimpleDateFormat formatter = new SimpleDateFormat(format, new Locale("ko", "KOREA"));

        return formatter.format(new Date());
    }

    /**
  * 지정한 자리수만큼 0을 채움
  * 2007/09/13 추가 (김형섭)
  *
     * @param <int>sourceNumber 대상숫자
     * @param <int>formatLength 자리수
  * @return <String>날짜
  */
    public String formatZeroString(int sourceNumber, int formatLength)
    {
        String sourceString = Integer.toString(sourceNumber);
        String result = "";

        for(int i=sourceString.length(); i<formatLength; i++) result+= '0';

        return result + sourceString;
    }
}


 

Posted by 1010
반응형

var n4 = (document.layers)?true:false;
var e4 = (document.all)?true:false;

//숫자만입력(onKeypress='return keyCheckdot(event)')
function keyCheck(e) {
if(n4) var keyValue = e.which
else if(e4) var keyValue = event.keyCode
if (((keyValue >= 48) && (keyValue <= 57)) || keyValue==13) return true;
else return false
}

//숫자및돗트입력(onKeypress='return keyCheckdot(event)')
function keyCheckDot(e) {
if(n4) var keyValue = e.which
else if(e4) var keyValue = event.keyCode
if (((keyValue >= 48) && (keyValue <= 57)) || keyValue==13 || keyValue==46) return true;
else return false
}

//공백제거
function Trim(string) {
for(;string.indexOf(" ")!= -1;){
string=string.replace(" ","")
}
return string;
}

//입력검사
function Exists(input,types) {
if(types) if(!Trim(input.value)) return false;
return true;
}

//영문검사+숫자검사(첫글자는 반드시영문)
function EngNum(input,types) {
if(types) if(!Trim(input.value)) return false;
var error_c=0, i, val;
for(i=0;i<Byte(input.value);i++) {
val = input.value.charAt(i);
if(i == 0) if(!((val>='a' && val<='z') || (val>='A' && val<='Z'))) return false;
else if(!((val>=0 && val<=9) || (val>='a' && val<='z') || (val>='A' && val<='Z'))) return false;
}
return true;
}

//영문검사+숫자검사
function EngNumAll(input,types) {
if(types) if(!Trim(input.value)) return false;
var error_c=0, i, val;
for(i=0;i<Byte(input.value);i++) {
val = input.value.charAt(i);
if(!((val>=0 && val<=9) || (val>='a' && val<='z') || (val>='A' && val<='Z'))) return false;
}
return true;
}

//영문검사+숫자검사+'_'
function EngNumAll2(input,types) {
if(types) if(!Trim(input.value)) return false;
var error_c=0, i, val;
for(i=0;i<Byte(input.value);i++) {
val = input.value.charAt(i);
if(!((val>=0 && val<=9) || (val>='a' && val<='z') || (val>='A' && val<='Z') || val=='_')) return false;
}
return true;
}

//영문검사
function Eng(input,types) {
if(types) if(!Trim(input.value)) return false;
var error_c=0, i, val;
for(i=0;i<Byte(input.value);i++) {
val = input.value.charAt(i);
if(!((val>='a' && val<='z') || (val>='A' && val<='Z'))) return false;
}
return true;
}

//숫자만입력
/*
function numberonlyinput() {
var ob = event.srcElement;
ob.value = noSplitAndNumberOnly(ob);
return false;
}
*/

//돈(3단위마다 컴마를 붙인다.)
function checkNumber() {
var ob=event.srcElement;
ob.value = filterNum(ob.value);
ob.value = commaSplitAndNumberOnly(ob);
return false;
}

//한정액(일정금액 이상이 되면 올라기지 않게 한다.)
function chkhando(money) {
var ob=event.srcElement;
ob.value = noSplitAndNumberOnly(ob);
if(ob.value > money) ob.value = money;
return false;
}

//이자율(소수점 사용가능)
function checkNumberDot(llen,rlen) {
if(llen == "") llen = 8;
if(rlen == "") rlen = 2;
var ob=event.srcElement;
ob.value = filterNum(ob.value);

spnumber = ob.value.split('.');
if( spnumber.length >= llen && (spnumber[0].length >llen || spnumber[1].length >llen)) {
ob.value = spnumber[0].substring(0,llen) + "." + spnumber[1].substring(0,rlen);
ob.focus();
return false;
}
else if( spnumber[0].length > llen ) {
ob.value = spnumber[0].substring(0,llen) + ".";
ob.focus();
return false;
}
else if(ob.value && spnumber[0].length == 0) {
ob.value = 0 + "." + spnumber[1].substring(0,rlen);
ob.focus();
return false;
}
ob.value = commaSplitAndAllowDot(ob);
return false;
}

//참조함수
function filterNum(str) {
re = /^\$|,/g;
return str.replace(re, "");
}

//참조함수(컴마불가)
function commaSplitAndNumberOnly(ob) {

var txtNumber = '' + ob.value;
if (isNaN(txtNumber) || txtNumber.indexOf('.') != -1 ) {
ob.value = ob.value.substring(0, ob.value.length-1 );
ob.value = commaSplitAndNumberOnly(ob);
ob.focus();
return ob.value;
}
else {
var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
var arrNumber = txtNumber.split('.');
arrNumber[0] += '.';
do {
arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2');
}
while (rxSplit.test(arrNumber[0]));

if (arrNumber.length > 1) {
return arrNumber.join('');
}
else {
return arrNumber[0].split('.')[0];
}
}
}

//참조함수(컴마가능)
function commaSplitAndAllowDot(ob) {

var txtNumber = '' + ob.value;
if (isNaN(txtNumber) ) {
ob.value = ob.value.substring(0, ob.value.length-1 );
ob.focus();
return ob.value;
}
else {
var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
var arrNumber = txtNumber.split('.');
arrNumber[0] += '.';
do {
arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2');
}
while (rxSplit.test(arrNumber[0]));

if (arrNumber.length > 1) {
return arrNumber.join('');
}
else {
return arrNumber[0].split('.')[0];
}
}
}

//숫자만가능
function noSplitAndNumberOnly(ob) {
var txtNumber = '' + ob.value;
if (isNaN(txtNumber) || txtNumber.indexOf('.') != -1 ) {
ob.value = ob.value.substring(0, ob.value.length-1 );
ob.focus();
return ob.value;
}
else return ob.value;
}


//바이트검사
function Byte(input) {
var i, j=0;
for(i=0;i<input.length;i++) {
val=escape(input.charAt(i)).length;
if(val== 6) j++;
j++;
}
return j;
}

//팝업메뉴
function popupmenu_show(layername, thislayer, thislayer2) {
thislayerfield.value = thislayer;
thislayerfield2.value = thislayer2;
var obj = document.all[layername];
var _tmpx,_tmpy, marginx, marginy;
_tmpx = event.clientX + parseInt(obj.offsetWidth);
_tmpy = event.clientY + parseInt(obj.offsetHeight);
_marginx = document.body.clientWidth - _tmpx;
_marginy = document.body.clientHeight - _tmpy ;
if(_marginx < 0) _tmpx = event.clientX + document.body.scrollLeft + _marginx ;
else _tmpx = event.clientX + document.body.scrollLeft ;
if(_marginy < 0) _tmpy = event.clientY + document.body.scrollTop + _marginy + 20;
else _tmpy = event.clientY + document.body.scrollTop ;
obj.style.posLeft = _tmpx - 5;
obj.style.posTop = _tmpy;

layer_set_visible(obj, true);
layer_set_pos(obj, event.clientX, event.clientY);
}
function layer_set_visible(obj, flag) {
if (navigator.appName.indexOf('Netscape', 0) != -1) obj.visibility = flag ? 'show' : 'hide';
else obj.style.visibility = flag ? 'visible' : 'hidden';
}
function layer_set_pos(obj, x, y) {
if (navigator.appName.indexOf('Netscape', 0) != -1) {
obj.left = x;
obj.top = y;
} else {
obj.style.pixelLeft = x + document.body.scrollLeft;
obj.style.pixelTop = y + document.body.scrollTop;
}
}


//페이지이동
function move(url) {
location.href = url;
}

//닫기
function toclose() {
self.close();
}

//위치변경
function winsize(w,h,l,t) {
if(window.opener) resizeTo(w,h);
}

//포커스위치
function formfocus(form) {
var len = form.elements.length;
for(i=0;i<len;i++) {
if((form.elements[i].type == "text" || form.elements[i].type == "password") && Trim(form.elements[i].value) == "") {
form.elements[i].value = "";
form.elements[i].focus();
break;
}
}
}

// 날짜,시간 format 함수 = php의 date()
function date(arg_format, arg_date) {
if(!arg_date) arg_date = new Date();

var M = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var F = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var K = new Array("일","월","화","수","목","금","토");
var k = new Array("日","月","火","水","木","金","土");
var D = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
var l = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
var o = new Array("전","후");
var O = new Array("오전","오후");
var a = new Array("am","pm");
var A = new Array("AM","PM");

var org_year = arg_date.getFullYear();
var org_month = arg_date.getMonth();
var org_date = arg_date.getDate();
var org_wday = arg_date.getDay();
var org_hour = arg_date.getHours();
var org_minute = arg_date.getMinutes();
var org_second = arg_date.getSeconds();
var hour = org_hour % 12; hour = (hour) ? hour : 12;
var ampm = Math.floor(org_hour / 12);

var value = new Array();
value["Y"] = org_year;
value["y"] = String(org_year).substr(2,2);
value["m"] = String(org_month+1).replace(/^([0-9])$/,"0$1");
value["n"] = org_month+1;
value["d"] = String(org_date).replace(/^([0-9])$/,"0$1");
value["j"] = org_date;
value["w"] = org_wday;
value["H"] = String(org_hour).replace(/^([0-9])$/,"0$1");
value["G"] = org_hour;
value["h"] = String(hour).replace(/^([0-9])$/,"0$1");
value["g"] = hour;
value["i"] = String(org_minute).replace(/^([0-9])$/,"0$1");
value["s"] = String(org_second).replace(/^([0-9])$/,"0$1");
value["t"] = (new Date(org_year, org_month+1, 1) - new Date(org_year, org_month, 1)) / 86400000;
value["z"] = (new Date(org_year, org_month, org_date) - new Date(org_year, 0, 1)) / 86400000;
value["L"] = ((new Date(org_year, 2, 1) - new Date(org_year, 1, 1)) / 86400000) - 28;
value["M"] = M[org_month];
value["F"] = F[org_month];
value["K"] = K[org_wday];
value["k"] = k[org_wday];
value["D"] = D[org_wday];
value["l"] = l[org_wday];
value["o"] = o[ampm];
value["O"] = O[ampm];
value["a"] = a[ampm];
value["A"] = A[ampm];

var str = "";
var tag = 0;
for(i=0;i<arg_format.length;i++) {
var chr = arg_format.charAt(i);
switch(chr) {
case "<" : tag++; break;
case ">" : tag--; break;
}
if(tag || value[chr]==null) str += chr; else str += value[chr];
}

return str;
}

// 해상도에 맞는 크기 사용
function screensize() {
self.moveTo(0,0);
self.resizeTo(screen.availWidth,screen.availHeight);
}

// 주민등록번호체크( 입력폼 1개)
function check_jumin(jumin) {
var weight = "234567892345"; // 자리수 weight 지정
var val = jumin.replace("-",""); // "-"(하이픈) 제거
var sum = 0;

if(val.length != 13) { return false; }

for(i=0;i<12;i++) {
sum += parseInt(val.charAt(i)) * parseInt(weight.charAt(i));
}

var result = (11 - (sum % 11)) % 10;
var check_val = parseInt(val.charAt(12));

if(result != check_val) { return false; }
return true;
}

// 주민등록번호체크( 입력폼 2개)
function check_jumin2(input, input2) {
input.value=Trim(input.value);
input2.value=Trim(input2.value);
var left_j=input.value;
var right_j=input2.value;
if(input.value.length != 6) {
alert('주민등록번호를 정확히 입력하세요.');
input.focus();
return true;
}
if(right_j.length != 7) {
alert('주민등록번호를 정확히 입력하세요.');
input2.focus();
return true;
}
var i2=0;
for(var i=0;i<left_j.length;i++) {
var temp=left_j.substring(i,i+1);
if(temp<0 || temp>9) i2++;
}
if((left_j== '') || (i2 != 0)) {
alert('주민등록번호가 잘못 입력되었습니다.');
j_left.focus();
return true;
}
var i3=0;
for(var i=0;i<right_j.length;i++) {
var temp=right_j.substring(i,i+1);
if (temp<0 || temp>9) i3++;
}
if((right_j== '') || (i3 != 0)) {
alert('주민등록번호가 잘못 입력되었습니다.');
input2.focus();
return true;
}
var l1=left_j.substring(0,1);
var l2=left_j.substring(1,2);
var l3=left_j.substring(2,3);
var l4=left_j.substring(3,4);
var l5=left_j.substring(4,5);
var l6=left_j.substring(5,6);
var hap=l1*2+l2*3+l3*4+l4*5+l5*6+l6*7;
var r1=right_j.substring(0,1);
var r2=right_j.substring(1,2);
var r3=right_j.substring(2,3);
var r4=right_j.substring(3,4);
var r5=right_j.substring(4,5);
var r6=right_j.substring(5,6);
var r7=right_j.substring(6,7);
hap=hap+r1*8+r2*9+r3*2+r4*3+r5*4+r6*5;
hap=hap%11;
hap=11-hap;
hap=hap%10;
if(hap != r7) {
alert('주민등록번호가 잘못 입력되었습니다.');
input2.focus();
return true;
}
return false;
}

// 비밀번호 체크
function check_passwd(input, input2, min) {
if(!input.value) {
alert('비밀번호를 입력해 주십시오.');
input.focus();
return false;
}
else if(BYTE(input.value) < min) {
alert('비밀번호의 길이가 너무 짧습니다.');
input.focus();
input.value='';
input2.value='';
return false;
}
else if(!input2.value) {
alert('확인비밀번호를 입력해 주십시오.');
input2.focus();
return false;
}
else if(input.value != input2.value) {
alert('비밀번호가 서로 다르게 입력되었습니다.');
input2.value='';
input2.focus();
return false;
}
else return true;
}

//콤마 넣기(정수만 해당)
function comma(val) {
val = get_number(val);
if(val.length <= 3) return val;

var loop = Math.ceil(val.length / 3);
var offset = val.length % 3;

if(offset==0) offset = 3;
var ret = val.substring(0, offset);

for(i=1;i<loop;i++) {
ret += "," + val.substring(offset, offset+3);
offset += 3;
}
return ret;
}

//문자열에서 숫자만 가져가기
function get_number(str) {
var val = str;
var temp = "";
var num = "";

for(i=0; i<val.length; i++) {
temp = val.charAt(i);
if(temp >= "0" && temp <= "9") num += temp;
}
return num;
}

//주민등록번호를 나이로 변환
function agechange(lno,rno) {
var refArray = new Array(18,19,19,20,20,16,16,17,17,18);
var refyy = rno.substring(0,1);
var refno = lno.substring(0,2);
var biryear = refArray[refyy] * 100 + eval(refno);

var nowDate = new Date();
var nowyear = nowDate.getYear();
return nowyear - biryear + 1;
}

//레디오박스 체크검사
function radio_chk(input, msg) {
var len = input.length;
for(var i=0;i<len;i++) if(input[i].checked == true && input[i].value) return true;
alert(msg);
return false;
}

//셀렉트박스 체크검사
function select_chk(input, msg) {
if(input[0].selected == true) {
alert(msg);
return false;
}
return true;
}

//새창띄우기
function open_window(url, target, w, h, s) {
if(s) s = 'yes';
else s = 'no';
var its = window.open(url,target,'width='+w+',height='+h+',top=0,left=0,scrollbars='+s);
its.focus();
}



<?
//셀렉트
function optionlist($optionlist, $getvalue="", $keyfield="key", $valuefield="value") {
foreach($optionlist as $key => $value) {
if($getvalue && $getvalue == ${$keyfield}) $chk = "selected";
else $chk = "";
echo "<option value='{${$keyfield}}' {$chk}>{${$valuefield}}</option>";
}
echo "\n";
}

//셀렉티드
function selected($checkkey, $getvalue="") {
echo "value='$checkkey'";
if($getvalue && $checkkey == $getvalue) echo " selected";
}

//체크드
function checked($checkkey, $getvalue="") {
echo "value='$getvalue'";
if($getvalue && $checkkey == $getvalue) echo " checked";
}

//주민번호 검사
function RegiNum($reginum) {
$weight = '234567892345'; // 자리수 weight 지정
$len = strlen($reginum);
$sum = 0;

if ($len <> 13) { return false; }

for ($i = 0; $i < 12; $i++) {
$sum = $sum + (substr($reginum,$i,1) * substr($weight,$i,1));
}

$rst = $sum%11;
$result = 11 - $rst;

if ($result == 10) {$result = 0;}
else if ($result == 11) {$result = 1;}

$jumin = substr($reginum,12,1);

if ($result <> $jumin) {return false;}
return true;
}

//사업자번호 검사
function comRegiNum($reginum) {
$weight = '137137135'; // 자리수 weight 지정
$len = strlen($reginum);
$sum = 0;

if ($len <> 10) { return false; }

for ($i = 0; $i < 9; $i++) {
$sum = $sum + (substr($reginum,$i,1) * substr($weight,$i,1));
}
$sum = $sum + ((substr($reginum,8,1)*5)/10);
$rst = $sum%10;

if ($rst == 0) {$result = 0;}
else {$result = 10 - $rst;}

$saub = substr($reginum,9,1);

if ($result <> $saub) {return false;}
return true;
}


//글자르기
function cut_str($msg,$cut_size,$tail="...") {
if($cut_size <= 0) return $msg;
$msg = strip_tags($msg);
$msg = str_replace("&mp;quot;","\"",$msg);
if(strlen($msg) <= $cut_size) return $msg;

for($i=0;$i<$cut_size;$i++) if(ord($msg[$i])>127) $han++; else $eng++;
if($han%2) $han--;

$cut_size = $han + $eng;

$tmp = substr($msg,0,$cut_size);
$tmp .= $tail;
return $tmp;
}

// 모든한글의 글자를 출력
function hangul_code() {
$count = 0;
for($i = 0x81; $i <= 0xC8; $i++) {
for($j = 0x00; $j <= 0xFE; $j++) {
if(($j >= 0x00 && $j <= 0x40) || ($j >= 0x5B && $j <= 0x60) || ($j >= 0x7B && $j <= 0x80) || ($j >= 0x00 && $j <= 0x40) ||
(($i >= 0xA1 && $i <=0xAF) && ($j >= 0xA1 && $j <= 0xFE)) || ($i == 0xC6 && ($j >= 0x53 && $j <= 0xA0)) ||
($i >= 0xC7 && ($j >= 0x41 && $j <= 0xA0))) continue;
echo chr($i).chr($j)." ";
$count++;
}
}
echo $count;
}

// 한글검사
function is_han($str) {
if(strlen($str) != 2) return false;

$i = ord ($str[0]);
$j = ord ($str[1]);

if($i < 0x81 || $i > 0xC8 || $j > 0xFE || ($j >= 0x00 && $j <= 0x40) || ($j >= 0x5B && $j <= 0x60) || ($j >= 0x7B && $j <= 0x80) ||
($j >= 0x00 && $j <= 0x40) || (($i >= 0xA1 && $i <=0xAF) && ($j >= 0xA1 && $j <= 0xFE)) ||
($i == 0xC6 && ($j >= 0x53 && $j <= 0xA0)) || ($i >= 0xC7 && ($j >= 0x41 && $j <= 0xA0))) return false;
else return true;
}


// 랜덤값 생성
function random_string($length) {
$randomcode = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
'A', 'B', 'C', 'd', 'E', 'F', 'G', 'H', 'x', 'J',
'K', 'b', 'M', 'N', 'y', 'P', 'r', 'R', 'S', 'T',
'u', 'V', 'W', 'X', 'Y', 'Z');
mt_srand((double)microtime()*1000000);
for($i=1;$i<=$length;$i++) $Rstring .= $randomcode[mt_rand(1, 36)];
return $Rstring;
}


// 디렉토리 리스트
function DirList($path="./") {
$path = opendir($path);
while($list = readdir($path)) if($list != "." && $list != "..") $Arraydir[] = $list;
closedir($path);
return $Arraydir;
}

// 15자리의 유일한 숫자값 만들기
function uniquenumber() {
$temparray = explode(" ", microtime());
$temparray2 = substr($temparray[0],2,5);
$number =$temparray[1].$temparray2;
return $number;
}

// 파일이름과 확장자 분리
function ExplodeFile($filename) {
$filename = strtolower($filename);
$elements = explode('.',$filename);
$elemcnt = count($elements)-1;
if(count($elements)==1) $ext = '';
else $ext = $elements[$elemcnt];
unset($elements[$elemcnt]);
$fname = implode($elements,'');

$fileinfo["name"] = $fname;
$fileinfo["ext"] = $ext;
return $fileinfo;
}

// 그림확장자
function ImageType($filename) {
$webimg = explodefile($filename);

$webext = $webimg["ext"];
$defineexp = array("gif","jpg","png");

$count = count($defineexp);

for($i=0;$i<$count;$i++) {
if($defineexp[$i] == $webext) return true;
}
return false;
}

// 유닉스날짜 포맷
function date_format($unixtime,$format="Y.m.d",$empty="&nbsp;") {
if($unixtime) return date($format, $unixtime);
else return $empty;
}

//YYYY-MM-DD 형식을 유닉스 타임으로
function unix_format($times, $operator="-", $type=true) {
if($type == true) {
$times = trim($times);
$arry = explode($operator,$times);
if(count($arry) != 3) return date_format(0);
$mktime = mktime(0,0,0,$arry[1],$arry[2],$arry[0]);
return date("U", $mktime);
} else {
$formats = "Y{$operator}m{$operator}d";
return date($formats, $times);
}
}

// 주민등록번호 포맷
function jumin_format($juminno, $cutno=3, $des="x", $empty="&nbsp;") {
$juminno = str_replace("-","",$juminno);
if(strlen($juminno) != 13) return $empty;
for($i=0;$i<$cutno;$i++) $x .= $des;
$juminno = substr($juminno,0,13-$cutno).$x;
$juminno = substr($juminno,0,6)."-".substr($juminno,6);
return $juminno;
}

// 홈페이지 포맷
function url_format($url, $ltype=false, $title=false, $other="", $htype="http://", $empty="&nbsp;") {
$url = eregi_replace("http://","",trim($url));
if($url) $url = $htype.$url;
else return $empty;

if($title) $turl = $title;
else $turl = $url;

if($ltype) return "<a href='{$url}' {$other}>{$turl}</a>";
else return $url;
}

// 전송값 초기화
function post_format($str, $type) {
switch($type) {
case "url":
$str = trim($str);
$str = eregi_replace("http://","",$str);
break;
case "num":
$str = trim($str);
$str = str_replace(",","",$str);
break;
}
return $str;
}

// 이메일 포맷
function mail_format($email, $ltype=false, $title=false, $empty="&nbsp;") {
$email = trim($email);
$title = trim($title);

if(!$email && !$title) return $empty;
else if(!$email) return $title;

if($title) $temail = $title;
else $temail = $email;

if($ltype) return "<a href='mailto:{$email}'>{$temail}</a>";
else return $email;
}

// 전화번호 포맷
function tel_format($num1, $num2, $num3, $format="-", $empty="&nbsp;") {
$num1 = trim($num1);
$num2 = trim($num2);
$num3 = trim($num3);

if(!$num1) $num1 = "02";

if($num2 && $num3) return $num1.$format.$num2.$format.$num3;
else return $empty;
}

// 문자 포맷
function text_format($str, $empty="&nbsp;") {
$str = trim($str);
if($str) return $str;
else return $empty;
}

// 새창띄우기
function win_format($title, $url, $target, $width, $height, $scrollbars=1, $empty) {
$title = text_format($title, $empty);
return "<a href='#' onclick=\"open_window('{$url}', '{$target}', {$width}, {$height}, {$scrollbars})\">{$title}</a>";
}

// 나이(주민등록번호를 이용)
function AGE_jumin($lno,$rno) {
$refArray = Array(18,19,19,20,20,16,16,17,17,18);
$refyy = substr($rno,0,1);

$biryear = $refArray[$refyy] * 100 + substr($lno,0,2);
$nowyear = date("Y");
return $nowyear - $biryear + 1;
}

// URL 존재확인
function URL_exists($url) {
$url = str_replace("http://", "", $url);
list($domain, $file) = explode("/", $url, 2); // 도메인부분과 주소부분으로 나눕니다.
$fid = fsockopen($domain, 80); // 도메인을 오픈합니다.
fputs($fid, "GET /$file HTTP/1.0\r\nHost: $domain\r\n\r\n"); // 파일 정보를 얻습니다.
$gets = fgets($fid, 128);
fclose($fid);

if(ereg("200 OK", $gets)) return TRUE;
else return FALSE;
}

// 조사 꾸미기
$array = "뵤 벼 뱌 배 베 보 버 바 비 뷰 부 브 뱨 볘 봐 봬 붜 붸 뵈 뷔 븨 뾰 뼈 뺘 빼 뻬 뽀 뻐 빠 삐 쀼 뿌 쁘 뺴 뼤 뽜 뽸 뿨 쀄 뾔 쀠 쁴 죠 져 쟈 재 제 조 저 자 지 쥬 주 즈 쟤 졔 좌 좨 줘 줴 죄 쥐 즤 쬬 쪄 쨔 째 쩨 쪼 쩌 짜 찌 쮸 쭈 쯔 쪠 쪠 쫘 쫴 쭤 쮀 쬐 쮜 쯰 됴 뎌 댜 대 데 도 더 다 디 듀 두 드 댸 뎨 돠 돼 둬 뒈 되 뒤 듸 뚀 뗘 땨 때 떼 또 떠 따 띠 뜌 뚜 뜨 떄 뗴 똬 뙈 뚸 뛔 뙤 뛰 띄 교 겨 갸 개 게 고 거 가 기 규 구 그 걔 계 과 괘 궈 궤 괴 귀 긔 꾜 껴 꺄 깨 께 꼬 꺼 까 끼 뀨 꾸 끄 꺠 꼐 꽈 꽤 꿔 꿰 꾀 뀌 끠 쇼 셔 샤 새 세 소 서 사 시 슈 수 스 섀 셰 솨 쇄 숴 쉐 쇠 쉬 싀 쑈 쎠 쌰 쌔 쎄 쏘 써 싸 씨 쓔 쑤 쓰 썌 쎼 쏴 쐐 쒀 쒜 쐬 쒸 씌 묘 며 먀 매 메 모 머 마 미 뮤 무 므 먜 몌 뫄 뫠 뭐 뭬 뫼 뮈 믜 뇨 녀 냐 내 네 노 너 나 니 뉴 누 느 냬 녜 놔 놰 눠 눼 뇌 뉘 늬 요 여 야 애 에 오 어 아 이 유 우 으 얘 예 와 왜 워 웨 외 위 의 료 려 랴 래 레 로 러 라 리 류 루 르 럐 례 롸 뢔 뤄 뤠 뢰 뤼 릐 효 혀 햐 해 헤 호 허 하 히 휴 후 흐 햬 혜 화 홰 훠 훼 회 휘 희 쿄 켜 캬 캐 케 코 커 카 키 큐 쿠 크 컈 켸 콰 쾌 쿼 퀘 쾨 퀴 킈 툐 텨 탸 태 테 토 터 타 티 튜 투 트 턔 톄 톼 퇘 퉈 퉤 퇴 튀 틔 쵸 쳐 챠 채 체 초 처 차 치 츄 추 츠 챼 쳬 촤 쵀 춰 췌 최 취 츼 표 펴 퍄 패 페 포 퍼 파 피 퓨 푸 프 퍠 폐 퐈 퐤 풔 풰 푀 퓌 픠";
function lastCon($str) {
global $array;
if(ord($str[strlen($str)-1]) < 128) return false;
$str = substr($str, strlen($str)-2);
if(strstr($array, $str)) return false;
return true;
}
function ul_rul($str) {
return $str.(lastCon($str) ? "을" : "를");
}
function gwa_wa($str) {
return $str.(lastCon($str) ? "과" : "와");
}
function un_num($str) {
return $str.(lastCon($str) ? "은" : "는");
}
function i_ga($str) {
return $str.(lastCon($str) ? "이" : "가");
}

// 도메인 또는 문서가 존재하는지 검사
function exists_url($url, $port="80") {
$fp = @fsockopen($url, $port);
if($fp) return true;
else return false;
}

// 숫자를 한글로 바꾸기
function numtokor($num) {
$text ='';
$d_symbol = array('4' => "만", '8' => "억", '12' => "조", '16' => "경", '20' => "해", '24' => "시", '28' => "양", '32' => "구", '36' => "간", '40' => "정", '44' => "재", '48' => "극", '52' => "항하사", '56' => "아승지", '60' => "나유타", '64' => "불가사의", '68' => "무량대수");
$p_symbol = array('0' => "", '1' => "십", '2' => "백", '3' => "천");
$t_symbol = array('0' => "", '1' => "일", '2' => "이", '3' => "삼", '4' => "사", '5' => "오", '6' => "육", '7' => "칠", '8' => "팔", '9' => "구");

if(substr($num,0,1) == '-') {
$num = substr($num ,1);
$text .= '마이너스';
}
$length_of_num = strlen($num);
if($length_of_num > 72) {
$text = "존재할 수 없는 수치 입니다.";
} else {
//실행
for ($k=0; $k< $length_of_num; $k++) {
$striped_value = substr($num, $k, 1);
$text .= $t_symbol[$striped_value];
$power_value = ($length_of_num - $k -1) % 4;
if ($striped_value <> 0) $text .= $p_symbol[$power_value];
if ($power_value == 0) $text .= $d_symbol[$length_of_num - $k -1];
}
}
return $text;
}

//검색쿼리작성
function querystring($query) {
if($query) {
$queryarray = explode("&", $query);
$count = count($queryarray);

foreach($queryarray as $key => $value) {
$array2st = explode("=", $value);
if($array2st[1]) {
if($querystring) $querystring .= "&".$value;
else $querystring = $value;
}
}

return $querystring;
}
else return "";
}

//페이징
function pagelist($tables, $nowpage, $primarykey , $chartline, $chartpage, $wheres="", $findquery="", $others="", $orders="", $urlquery="", $lastopt=true, $allopt=true, $firstbutton="[처음]", $prebutton="[이전]", $nextbutton="[다음]",$lastbutton="[끝]") {

if($wheres) $wheres = " where {$wheres} ";
if($others) $wheres .= " and {$others} ";

if(!$chartline) $chartline = 10;
if(!$chartpage) $chartpage = 10;

if(intval($nowpage) == 0) $nowpage = 1;
if(intval($nowstep) == 0) $nowstep = 1;

##마지막버튼 유무 체크
if($lastopt) {
$query = "select count(*) count from {$tables} {$wheres} {$others} {$findquery}";
$result = mysql_query($query);
$total = mysql_fetch_object($result);
#총카운트 $total->count;
}

##총검색수
if($allopt) {
$query = "select count(*) count from {$tables} {$wheres}";
$result = mysql_query($query);
$all = mysql_fetch_object($result);
#총검색수 $all->count;
}

##설정값계산
$nowstep = ceil($nowpage/$chartpage);
if($lastopt) {
$allstep = ceil($total->count/($chartpage*$chartline));
$allpage = ceil($total->count/$chartline);
}
$startpage = 1 + ($nowstep-1) * $chartpage;
$endpage = $startpage + $chartpage - 1;

if($lastopt && $endpage > $allpage) $endpage = $allpage;

##다음버튼 유무 체크
$nextline = $nowstep * $chartline * $chartpage;
$nextlimitquery = " limit {$nextline}, 1";
$query = "select {$primarykey} from {$tables} {$wheres} {$others} {$findquery} {$nextlimitquery}";
$result = mysql_query($query);
$nextok = mysql_affected_rows();

##처음버튼 및 이전버튼
if($nowstep > 1) {
$fir = " <a href='$PHP_SELF?$urlquery&nowpage=1'>{$firstbutton}</a> ";
$prepage = $startpage - $chartpage;
$pre = " <a href='$PHP_SELF?$urlquery&nowpage=$prepage'>{$prebutton}</a> ";
} else {
$fir = " <font color='#C0C0C0'>{$firstbutton}</font> ";
$pre = " <font color='#C0C0C0'>{$prebutton}</font> ";
}

##NEXT 버튼 활성화
if($nextok) {
$nextpage = $endpage + 1;
$next = " <a href='$PHP_SELF?$urlquery&nowpage=$nextpage'>{$nextbutton}</a> ";
} else {
$next = " <font color='#C0C0C0'>{$nextbutton}</font> ";
}

##중간페이지
for($i=$startpage;$i<=$endpage;$i++) {
if($i == $nowpage) $pagelist .= " <font color='#6600FF'><b>$i</b></font> ";
else $pagelist .= " <a href='$PHP_SELF?$urlquery&nowpage=$i'>$i</a> ";
}

##끝페이지
if($lastopt && $allstep > $nowstep) {
$lastpage = $allpage;
$last = " <a href='$PHP_SELF?$urlquery&nowpage=$nextpage'>{$lastbutton}</a> ";
} else {
$last = " <font color='#C0C0C0'>{$lastbutton}</font> ";
}


$firstlimit = 0 + ($nowpage-1) * $chartline;
$limitquery = " limit {$firstlimit}, {$chartline}";
$query = "select * from {$tables} {$wheres} {$others} {$findquery} {$orders} {$limitquery}";
$result = mysql_query($query);
while($fetch = mysql_fetch_array($result)) $get[] = $fetch;

$get[0]["count"] = count($get);
$get[0]["page"] = $fir.$pre." [ ".$pagelist." ] ".$next.$last;
if($lastopt) $get[0]["total"] = $total->count;
if($allopt) $get[0]["allto"] = $all->count;

return $get;

}

//업로드
function file_upload($upfile,$upfile_name,$upfile_size,$dir,$newfilename) {
if($upfile_size) {

$is_file = is_file("{$dir}/{$newfilename}");
if($is_file) unlink("{$dir}/{$newfilename}");

move_uploaded_file($upfile, "{$dir}/{$newfilename}");
chmod("{$dir}/{$newfilename}", 0644);

return true;

} else return false;
}

//현재디렉토리
function nowdir() {
global $DOCUMENT_ROOT;
global $PHP_SELF;
$getdir = pathinfo($DOCUMENT_ROOT.$PHP_SELF);
return $getdir["dirname"];
}

Posted by 1010
98..Etc/Etc...2008. 7. 11. 17:50
반응형

String ref = request.getHeader("REFERER");

ref에 변수에 호출된 URL정보가 들어갑니다.

ref값이 null일 경우가 있는데 이는 브라우저 URL입력창에 입력 호출했을때는
null이 됩니다.

위의 방법을 이용해 자신의 컨텐츠가 무단 도용당하는걸 막거나 할때 유용하게 쓸수 있습니다.





레퍼러값을 체크하는 방법 2가지 입니다. 먼저, 레퍼러값이 null 값일경우 Default.aspx 페이지로 리다이렉팅. 만일 레퍼러값이 있을경우 현재, 사이트의 도메인과 레퍼러주소의 도메인이 다를경우 다시 Redirect 를 합니다. 바로 Redirect 를 해도 되지만, 자바스크립트로 Alert 를 띄운후 처리..
public void UrlReferrerCheck(string refferUrl)
{
     if(Request.UrlReferrer == null)
          {
 string script = "< script>alert('직접 접근할 수 없습니다!!');" +
       "location.href='/Default.aspx';";
 Page.RegisterClientScriptBlock("done", script);
 //Response.Redirect(refferUrl);
 
          }
          else
          {
 string refer = Request.UrlReferrer.ToString();
 string ServerPath = Request.Url.ToString();
 ServerPath = ServerPath.Substring(0,ServerPath.LastIndexOf("/"));

 if(refer.IndexOf(ServerPath) == -1)
 {
      string script = "< script>alert('직접 접근할 수 없습니다!!');" +
            "location.href='/Default.aspx';";
      Page.RegisterClientScriptBlock("done", script);
      //Response.Redirect(refferUrl);
 }
          }
}




<%@ page contentType="text/html; charset=MS949"  %>
<%
    String referer = request.getHeader("Referer");
    String url = request.getRequestURL().toString();
    String ctxPath = request.getContextPath();
    int port = request.getServerPort();
    String host = request.getServerName();
    String tmp = "";
    if (port == 80) {
        tmp = "http://" + host + ctxPath;
    }
    else {
        tmp = "http://" + host + ":" + port + ctxPath;
    }

    if (referer == null) {
%>
<HTML>
<HEAD><TITLE>Sorry</TITLE></HEAD>
<BODY>
<CENTER>

       Sorry... <br />
       <font color=red>URL 주소 직접 치고 들어 오지 마세요...</font>

</CENTER>
</BODY>
</HTML>
<%
        return;
    }
    else if (!url.startsWith(tmp)) {
%>
<HTML>
<HEAD><TITLE>Sorry again</TITLE></HEAD>
<BODY>
<CENTER>

       Sorry again... <br />
       <font color=red>다른데서 여기를 링크 걸지 마세요...</font>

</CENTER>
</BODY>
</HTML>
<%
        return;
    }
%>

<HTML>
<HEAD><TITLE>Success</TITLE></HEAD>
<BODY>
<CENTER>

       <font color=blue>성공!!</font> <br /> <br />
       <font size=+2 color=blue>환영!!</font>

</CENTER>
</BODY>
</HTML>
 
 
 
 
 PHP
if (!eregi($_SERVER['HTTP_HOST'], $_SERVER['HTTP_REFERER'])){
 echo "<SCRIPT>alert('외부접근을 허용하지않습니다.');".$parent."location.href='javascript:history.go(-1);';</SCRIPT>"; exit;
}

ASP
Request.ServerVariables("HTTP_REFERER")

Posted by 1010
01.JAVA/Java2008. 7. 11. 17:15
반응형


/**
  *
  * @param input
  *            체크할 값
  *
  * 한글 , 영어 , 특수 기호 값을 체크
  */
 public static void testChar(String input){
  boolean test = false;
  char[] charArray=input.toCharArray();


  for (int j=0; j<charArray.length; j++) {
   System.out.println(" 0x"+Integer.toHexString((int)charArray[j]));

   if (charArray[j] >= 'A' && charArray[j] <= 'Z' || charArray[j] >= 'a' && charArray[j] <= 'z'){
    System.out.println(charArray[j]+"=>"+"(English)");

   }else if (charArray[j]>='\uAC00' && charArray[j]<='\uD7A3'){
    System.out.print(charArray[j]+" =>"+"(한글)");

   }else if (
     (charArray[j]>='!' && charArray[j]<='/')  ||
     (charArray[j]>='[' && charArray[j]<=0x60)  ||
    
     (charArray[j]>='{' && charArray[j]<='~') ||
     (charArray[j]>=':' && charArray[j]<='@')
   ){
    System.out.println(charArray[j]+" =>"+"(특수 문자)");

   }else if (charArray[j]>='0' && charArray[j]<='9'){
    System.out.println(charArray[j]+"=>"+"(숫자)");

   }else {
    test = false;
    for (int jnx=0; jnx<ChoSung.length; jnx++){
     if(charArray[j]== ChoSung[jnx]){
      System.out.println(ChoSung[jnx]+ "초성");
      test = true;
      break;
     }
    }
    for (int jnx=0; test == false && jnx<JwungSung.length; jnx++){
     if(charArray[j]== JwungSung[jnx]){
      System.out.println(JwungSung[jnx] + " 중성 ");
      test = true;
      break;
     }
    }
    for (int jnx=0; test == false && jnx<JongSung.length; jnx++){
     if(charArray[j]== JongSung[jnx]){
      System.out.println(JongSung[jnx] + "종성");
      test = true;
      break;
     }
    }
   }
   System.out.println("");

  }

 }

Posted by 1010
01.JAVA/Java2008. 7. 11. 17:15
반응형

/  ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ
   static char[] ChoSung   = { 0x3131, 0x3132, 0x3134, 0x3137, 0x3138, 0x3139, 0x3141, 0x3142, 0x3143, 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e };
   // ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ ㅢ ㅣ
   static char[] JwungSung = { 0x314f, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160, 0x3161, 0x3162, 0x3163 };
   // ㄱ ㄲ ㄳ ㄴ ㄵ ㄶ ㄷ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ ㅄ ㅅ ㅆ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ
   static char[] JongSung  = { 0, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140, 0x3141, 0x3142, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e };
Posted by 1010
01.JAVA/Java2008. 7. 11. 10:48
반응형

 

자바에서 각 문자는 내부적으로 유니코드값으로 저장되므로
char의 값을 유니코드 테이블과 비교해보면 이것이 영어인지 한글인지 혹은 한자인지 알수 있을 것입니다.
(질문은 단어가 한글인지 영문인지를 묻는데
단어는 물론 한영이 섞여 있을 수도 있고 자바 내부에서는
유니코드로 처리되므로 큰 의미가 없을 것입니다.


// charTest.java

class charTest {
	public static void main(String args[]) {
		for (int i=0;i<args.length;i++) {
			System.out.println("args["+i+"]="+args[i]);	
			char[] charArray=args[i].toCharArray();
			for (int j=0; j<charArray.length; j++) {
				System.out.print(" 0x"+Integer.toHexString((int)charArray[j]));
				if (charArray[j]>='A' && charArray[j]<='z')
					System.out.print("(English)");
				else if (charArray[j]>='\uAC00' && charArray[j]<='\uD7A3')
					System.out.print("(한글)");
			}
			System.out.println("");
		}
	}
}

실행 예
C:\javaworks>java charTest AbZz 가나다라한글
args[0]=AbZz
0x41(English) 0x62(English) 0x5a(English) 0x7a(English)
args[1]=가나다라한글
0xac00(한글) 0xb098(한글) 0xb2e4(한글) 0xb77c(한글) 0xd55c(한글) 0xae00(한글)

Posted by 1010
반응형
유바(You Bar)는 특히 운동을 즐기고, 건강식을 섭취하고자 하는, 웰빙 시대를 살아가는 개성적인 현대인들을 겨냥한 상품이다. 여기서 고객들은 개인적인 선호에 따라 각종 곡물과 재료들을 선택, 주문한다. 그러면 며칠 내에 그는 자신을 위한 맞춤형 곡물바 12개입이 든 팩을 받아볼 수 있다.

이 팩의 가격은 배송료를 포함해서 40달러 선이다. 한 개 당 약 3.33달러인 셈이다. 결코 싸지 않은 가격이지만, 대신 주문과 동시에 갓 만들어지기에 신선하고 개인 취향들을 충족시켜준다. 그냥 인기가 많은 곡물바도 주문할 수 있다. 이것의 가격은 30 달러. 자신이 고안해낸 곡물바가 인기를 얻게 되면, 그 고객은 자신이 좋아하는 곡물바를 더욱 싼 가격에 살 수 있는 것이다. 따라서 사람들은 ‘자신의 곡물바’를 선전하게 되고, 이것은 곧 제품 자체에 대한 선전이자, 판매 전략이 되는 것이다. 

유 바가 만들어진 배경은 다음과 같다. 미국의 한 마라톤 선수는 우유 알레르기 때문에 대부분의 곡물바를 먹을 수 없었다. 그리고 대량 생산, 제조되는 곡물바들의 일률적인 맛에도 질려가고 있었다. 거의 매일같이 먹는 거, 좀 다른 맛을 없을까, 라고 생각한 끝에 자신과 친구들을 위해 맞춤형 곡물바를 만들어보았다. 그리고 이렇게 취미가 결국 사업이 된 것이다.


홈페이지 : http://www.youbars.com/
자료출처 : Best practice 블로그(독어)

Posted by 1010
반응형

혼자 사는 사람들 중에는 집에 식물을 꼭 키우고 싶지만, 잦은 출장 등으로 주기적으로 화분에 물을 줄 수 없는 이들이 있다. 그렇다고 식물을 돌보아 달라고 부탁할 사람도 없지 않은가. 이 문제에 대해 비아 텔레콤(Via Telecom)의 왕 쟌(Jian Wang)씨와 유 빈(Bin Yu)씨는 고민한 끝에 ‘똑똑한 화분’을 고안해냈다.

제품의 원리는 다음과 같다. 화분 주변에는 태양광 전지가 달려 있어, 빛을 흡수한다. 이를 통해 얻은 전력은 응축기를 통해 공기를 응축시키고, 여기서 생기는 수분은 식물들에게 제공된다. 본 상품 아이디어는 레드 닷 디자인 어워드(reddot design award) 2006에서 디자인 컨셉 상을 수상하기도 했다.

업체명(디자인): VIA Telecom (Hangzhou) CO., LTD
홈페이지: http://www.red-dot.sg/concept/porfolio/06/10ia/R059SF.htm(레드닷 디자인 어워드 홈페이지)
자료출처 : Best practice 블로그(독어)

Posted by 1010
반응형

“혹시 집에서 하기로 한 데이트 약속이 있으십니까? 집안은 충분히 매혹적으로 꾸며져 있습니까? 엉망이었던 방은 다 정리되었습니까? 촛불은 준비되어 있나요? 이불과 베게 커버는 알맞게 씌워졌습니까? 자신이 없다면 긴급 실내장식 서비스를 예약하십시오. 다음날에 손님을 매료시키고 싶으시다면 제가 마술을 부릴 수 있는 기회를 주십시오.”

콘스탄체 쾹(Constanze Köpp)은 이와 같이 자신의 서비스를 홍보하고 있다. 38세인 그녀는 독립적인 실내장식가로 일하고 있으며, 일반 실내 인테리어와 차별화한 것이 특징이다.

“청소하기-방비우기-정리하기-재배치하기-상담하기”라는 것을 모토로 하여 그녀는 우선 발견하는 것부터 처리하는 것에 중점을 두고 있다. 왜냐하면 어떻게 하는지 그 방법만 알고 있다면 값비싼 투자를 하지 않아도 멋진 실내장식을 할 수 있다는 사실을 경험으로부터 알고 있기 때문이다. 함부르크(Hamburg) 출신인 그녀의 이러한 노하우 덕분에 그녀는 일급으로 300유로를 벌고 있다.

고객들 중에서는 개인고객 이외에도 개인병원, 숙박업소 및 진열창을 직접 꾸미는 상점들도 있다. 실내장식 서비스의 블로그에는 전후사진을 감상할 수 있어 미래의 잠재고객들에게 홍보하고 있다.

홈페이지 : www.wohnkosmetik.com
자료출처 : Die Geschäftsidee(독어)

Posted by 1010
98..Etc/Etc...2008. 7. 10. 14:13
반응형
<?xml version="1.0" encoding="UTF-8"?> 
<bookmarks> 
   <site name="Spring IDE updatesite" url="http://springide.org/updatesite/" web="false" selected="false" local="false"/> 
   <site name="Aptana" url="http://update.aptana.com/install/3.2/" web="false" selected="false" local="false"/> 
   <site name="RDT" url="http://updatesite.rubypeople.org/release" web="false" selected="false" local="false"/> 
   <site name="RadRails" url="http://radrails.sourceforge.net/update" web="false" selected="false" local="false"/> 
   <site name="JavaFX Plugin Update Site" url="http://download.java.net/general/openjfx/plugins/eclipse/site.xml" web="false" selected="false" local="false"/> 
   <site name="Eclipse Visual Editor" url="http://update.eclipse.org/tools/ve/updates/1.0" web="false" selected="false" local="false"/> 
   <site name="jMaki Plugin Updates" url="https://ajax.dev.java.net/eclipse" web="false" selected="false" local="false"/> 
   <site name="Visual Editor update site" url="http://update.eclipse.org/tools/ve/updates/1.0/" web="false" selected="false" local="false"/> 
   <site name="Azzurri Plugins (DB ER 작성)" url="http://www.azzurri.co.jp/eclipse/plugins" web="false" selected="true" local="false"/> 
   <site name="m2eclipse" url="http://m2eclipse.codehaus.org/update/" web="false" selected="false" local="false"/> 
   <site name="Subversive SVN connectors update site 2.0.x" url="http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/" web="false" selected="true" local="false"/> 
   <site name="The Eclipse Project Updates" url="http://update.eclipse.org/updates/3.3" web="false" selected="false" local="false"/> 
   <site name="Subversive SVN connectors update site 2.0.x" url="http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/" web="false" selected="false" local="false"/> 
   <site name="Europa Discovery Site" url="http://download.eclipse.org/releases/europa" web="false" selected="false" local="false"/> 
   <site name="Web Tools Platform (WTP) Updates" url="http://download.eclipse.org/webtools/updates" web="false" selected="false" local="false"/> 
   <site name="Dali Java Persistence API Tools (JPA) Updates" url="http://download.eclipse.org/webtools/updates/" web="false" selected="false" local="false"/> 
   <site name="Data Tools Platform (DTP) Updates" url="http://download.eclipse.org/datatools/updates" web="false" selected="false" local="false"/> 
   <site name="EMF Service Data Objects (SDO) Updates" url="http://download.eclipse.org/modeling/emf/updates/" web="false" selected="false" local="false"/> 
   <site name="Eclipse Modeling Framework Technologies (EMFT) Updates" url="http://download.eclipse.org/technology/emft/updates/" web="false" selected="false" local="false"/> 
   <site name="Graphical Editing Framework (GEF) Update Site" url="http://download.eclipse.org/tools/gef/update-site/releases/site.xml" web="false" selected="false" local="false"/> 
   <site name="Subversive update site 0.7.x (Incubation)" url="http://download.eclipse.org/technology/subversive/0.7/update-site/" web="false" selected="false" local="false"/> 
   <site name="Spring IDE" url="http://springide.org/updatesite" web="false" selected="false" local="false"/> 
   <site name="Model Developement Tools (MDT) Updates" url="http://download.eclipse.org/modeling/mdt/updates/" web="false" selected="false" local="false"/> 
   <site name="Mylyn Extras" url="http://download.eclipse.org/tools/mylyn/update/extras" web="false" selected="false" local="false"/> 
   <site name="Mylyn" url="http://download.eclipse.org/tools/mylyn/update/e3.3" web="false" selected="false" local="false"/> 
</bookmarks> 
Posted by 1010
반응형
수많은 회사들에서 통나무 오두막집 키트를 판매하고 있다. 하지만 아르고스(Argos)야말로 두 사람이 이틀만에 지을 수 있는 매력적이고 저렴한 모델을 시장에 내놓은 최초의 소매업체라고 생각된다. 이 영국 회사의 가로 8미터, 세로 5미터의 기본적인 방 5개짜리 오두막집은 10,099파운드이다. 바닥 난방이 가능한 얇은 판으로 된 바닥재 같은 편의시설이 첨가된 업그레이드모델은 13,099 파운드이다. 두 모델 모두 1년 내내 살기에 적당하며 친환경 삼림의 나무를 사용하는 핀란드의 목재 회사 핀포레스트(Finnforest) 제품이다.


아르고스의 오두막집은 몇 가지 신사업 기회를 제공한다. 사업을 처음 하는 사람에게는 먼저 조립을 해야 하는 오두막집보다는 이동식 오두막집 시장이 더 클 가능성이 높다. 따라서 한 가지 선택 안은 이 오두막집 키트를 사서 조립한 후 되파는 것이다. 짧은 조립시간과 함께 이 오두막집의 저렴한 가격은 기존에 짓는데 몇 주가 걸리는 집보다 훨씬 더 큰 이문을 남길 수 있을 것이다. 두 번째 기회는 열두 채 정도의 오두막집을 산 후 오두막집 휴양지를 만드는 것이다. 이것은 또 다른 저가 주택 제조업체 뱀부 리빙(Bamboo Living)에서 제안하는 것이다. 하와이에 본사를 둔 이 회사의 키트 주택은 빠르게 성장하고 있는 환경 친화적인 대나무로 베트남에서 제조되어 전세계로 수출되고 있다. 뱀부 리빙은 이미 발리, 벨리즈, 쿡 아일랜드, 하와이 그리고 베트남에 휴양지 사업에 진출했다. 한편 최근 매출이 급증하고 있는 이케아(IKEA)의 보크로크(BoKlok) 조립식 가옥은 스스로 만드는 DIY제품이 아니라 현지 건축업자가 짓는 집이다.

어떠한 조립식 주택 사업이라도 시작하기 전에 기억해야 할 것이 두 가지가 있다. 첫째 현지의 건축법을 주의 깊게 살펴야 한다. 키트 주택은 기존과 다른 건축 방법을 쓰기 때문이다. 또한 마찬가지로 현장 실사, 수도 및 전기 연결 그리고 허가와 같은 건축 사업에 관련된 비용들도 고려해야 한다.

웹사이트: www.argos.co.uk
이메일주소: www.argos.co.uk/static/StaticDisplay/includeName/ContactUs.htm
자료출처 : Springwise.com


Posted by 1010
01.JAVA/Java2008. 7. 8. 18:19
반응형
Posted by 1010
06.Ajax2008. 7. 8. 18:12
반응형

AJAX : A Basic Example and a Bookmarklet
Okay now what you all been waiting for: my example on AJAX. Waring: I am not going to go into extreme detail; you can get Dave Crane’s and my book (AJAX in Action) for that when it comes out later this year. First lets see an example of AJAX working right here under our noses.

Now everyone in a JavaScript world says. How can I protect my pages with a username and password without a server side language? Well it can not be done, but you can make it hard to find your content. In this example below you can see a textbox, a password box and the wonderful submit button. Try entering in a username and password.

User Name:
Password:  
Error: username and password is not correct!

Look at the source and you will see there is no username and password. Instead we are using the username and password field to see if the file exists. With AJAX, we look to see if this file is there. If it is, we go there, if not we get the error. Well I am sure you want to see the location so the username is Eric and the password is pass. Now you are able to go there and see my message.

So what is the code to do this? Well now we all know the fun we have coding JavaScript, nothing works the same for different browsers. With IE we need to use ActiveX to do it. Mozilla has there own method to do it.

First we have two things. We have the code that does the request, and then we have a function that handles the returned data. If you are using one of those libraries, you may not have seen this, so open up your eyes wide. Now I am just going to explain the code with comments. (Yeah that is cheating compared to my normal discussion style here on my blog, but I am trying to write a book you know!)

<html>
  <head>
    <script type="text/javascript">

      //We need a wonderful global variables to hold our request object!
      //So we can pass it around.
      var reqXML;
      //We need to have a global variable to hold the url.
      //It keeps us from having to repeat code!
      var url;

      //Create our function to start the request
      function VerifyLogin(){

        //inform there is an action!
        document.getElementById("spanLog").innerHTML = "<span style='color:green'> Checking Information</span>";

        //Grab our form field values
        var strName = document.Form1.username.value;
        var strPass = document.Form1.password.value;
        
        //Make the URL for the request
        url = "http://radio.javaranch.com/pascarello/files/" + strName + strPass + ".html";

        //determine if the browser is Moz, FF, NN, Op
        if (window.XMLHttpRequest){ 
          reqXML = new XMLHttpRequest();            //set the request
          reqXML.onreadystatechange = LoginUser;    //function to call on each set
          reqXML.open("GET", url, true);            //set the page to request
          reqXML.send(null);                        //initialize the request 
        }
        //ActiveX - can we say IE?
        else if(window.ActiveXObject){ 
          //Create our RequestObject
          reqXML = new ActiveXObject("Microsoft.XMLHTTP"); 
          if(reqXML){ 
            reqXML.onreadystatechange = LoginUser  //function to call on each step
            reqXML.open("GET", url, true);         //set the page to request
            reqXML.send(null);                     //initialize the request
          }
        }
        else{  //I do not support this so I need to do something!
           window.location.href = url;
        }       
      }
          
      function LoginUser(){

        //Look to see if the request is in the 4th stage (complete)         
        if(reqXML.readyState == 4){
          //Make sure that we get a sucess page status   
          if(reqXML.status == 200){
            //change our location
            window.location.href = url;
          }
          //For all of the wrong error pages here
          else{
            document.getElementById("spanLog").innerHTML = "<span style='color:red'> Error: username and password is not correct!</span>";
          }
        }
      }
    </script>
  </head>
  <body>
    <form name="Form1" onsubmit="VerifyLogin();return false;">
      <span style="font-family:courier">User Name: </span><input type="text" name="username"><br/>
      <span style="font-family:courier">Password:  </span><input type="password" name="password"><br/>
      <input type="submit" name="btnSub" value="Login" style="font-family:courier">
    </form>
  </body>
</html>

Now I added the event handler to the form to allow us to submit it, I did not think that needed a comment! Now you may be wondering what some things actually mean.

Now the XMLHttpRequest Object has an event handler onreadystatechange that we set to call LoginUser. Now when the XMLHttpRequest is executed we go through 5 stages:

  • 0 - un-initialized
  • 1 - loading
  • 2 - loaded
  • 3 - interactive
  • 4 - complete

We also need to check the status of the document that has been returned. We are looking for a status code of 200 since that means success! We do not want to see that 404 error!

I know I just went over this fast, but you can get more details in AJAX in Action when it comes out. But you may be saying why would I ever want to use this? Well with some minor changes, creating a JS file, and creating a bookmarklet, we can make a very very very very (did I say very) useful tool for a web master that has to check pages to see if all of the links are correct.

Let’s try this out then I will give you the source code. The first step is create a bookmarklet. Take the link below, right click on it, and save it as a bookmark. Agree to the security warning because the link is a JavaScript statement that executes some code. You will be shown the code for the bookmark on the example page.

Verify Links!

After you bookmarked that link above, you need to do open up this link below, go to your bookmarks/favorites and select the one that you just saved. It will then got through all of the links and verify them if they are good or bad. Good is marked in green and bad are marked in red! Give this code to your webmaster!

The test page for you.

There are good and bad links for you!

Now have you seen anyone else use AJAX like this? I do not think so. Hopefully you can see why AJAX is not hype. You can make it do things that you can run from a command in your bookmarks! Now below is the source code so you can save it to your server. Change the bookmark to point to where you saved this document.

      //Set those global variables!
      var reqXML;
      var url;
      var arrLinks;
      var intErrors = 0;
      var currentLink = 0; //We need a counter!
      var timeOutTimer;
      var maxWaitTime = 10000; //Milliseconds!
      var strErrColor = "red";
      var strValidColor = "green";

      function TestThatLink(){
        window.status = "testing: " + url.href;
        timeOutTimer = setTimeout("reqXML='';intErrors++;FinishRequest('" + strErrColor + "');",maxWaitTime);
        try {
	  if (netscape.security.PrivilegeManager.enablePrivilege) {
		netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
	  }
        }
        catch (ex) { // eat it
        }
        if (window.XMLHttpRequest){ 
          reqXML = new XMLHttpRequest(); 
          reqXML.onreadystatechange = TestLink;
          reqXML.open("GET", url.href, true); 
          reqXML.send(null);
        }
        else if(window.ActiveXObject){ 
          reqXML = new ActiveXObject("Microsoft.XMLHTTP"); 
          if(reqXML){ 
            reqXML.onreadystatechange = TestLink;
            reqXML.open("GET", url.href, true); 
            reqXML.send(); 
          } 
        }
        else{
          alert("Test browser does not support this!");
        }       
      }
          
      function TestLink(){         
        try {
	  if (netscape.security.PrivilegeManager.enablePrivilege) {
		netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
	  }
        } 
        catch (ex) { // eat it
        }
        if(reqXML.readyState == 4){
          window.clearTimeout(timeOutTimer);
          try {
          if(reqXML.status == 200){
            strColor = strValidColor; 
          }
          else{
            strColor = strErrColor;
            intErrors++;
          }
          }
          catch(ex){
            strColor = strErrColor;
            intErrors++;
          }

          FinishRequest(strColor);
        }
      }

      function FinishRequest(xColor){
        window.clearTimeout(timeOutTimer);
        url.style.backgroundColor = xColor;
        currentLink++;
        if(arrLinks.length > currentLink){
          url = arrLinks[currentLink];
          TestThatLink();
        }
        else{
          alert(intErrors + " broken link(s) were found!");
          window.status = "done";
        }
      }

      arrLinks = document.links;  //Grab those Links
      url = arrLinks[currentLink];  //Get the link

      TestThatLink()

Hopefully you can understand what is going on in the code. We are grabbing all of the links, checking to see if they exist, and showing the result on the page. See AJAX does not need to use server side code like everyone says! If you want to understand more about this code, ask away in the comments in this page. (If I do not answer, it is because I am sitting on the beach!)

Now it is Friday, so I think we need to put your brain to rest until Monday where we will talk about AJAX with server side code! But if you want to see a Moderator’s game that uses AJAX, take a look at Bear’s Blackbox here: Blackbox. Or you can sit back and play my JavaScript game (no AJAX) until my bandwidth is used up: Reversi.



Eric Pascarello
Moderator of HTML/JavaScript at www.JavaRanch.com
Author of: JavaScript: Your Visual Blueprint for Dynamic Web Pages

Posted by 1010
06.Ajax2008. 7. 8. 18:09
반응형

AJAX EXAMPLE CODES / DEMO'S

  1. Ajallerix : AJAX, simple, fast Web image gallery demo ; at Novell
  2. AJAX - microlink pattern tutorial : A microlink is a link that opens up content below it.
  3. Ajax BBC News RSS Reader : demo by Nigel Crawley
  4. AJAX Chat in Python with Dojo : at AquaAjax
  5. Ajax Chess : multiplayer chess
  6. Ajax examples at BackBase : examples demonstrating several aspects of the Backbase technology.
  7. Ajax examples at Rico : Inner HTML, JavaScript updater etc.
  8. Ajax examples using ColdFusionMX, SQLServer, SOAP : Contact Manager, NOAA 7 Day Forecast code and demos.
  9. Ajax Feed TV : News feed
  10. Ajax inline dictionary : Highlight any text on this site then right click. A tooltip containing the definition of the selected word should show up.
  11. Ajaxload : Ajax loading gif generator.
  12. Ajax Login Demo : Creating a secure login system using XMLHttpRequest
  13. Ajax Newsletter Signup : A newsletter signup form that shows Thank You on the same page.
  14. ajaxProject : Project Management applicaiton with rich UI
  15. Ajax Rater : A star rating system that uses Ajax.
  16. AJAX-S : An Ajax-based slideshow system.
  17. AJAX Spell Checker : spell check text / form content.
  18. Ajax Toolbox : Tools for the Ajax Developer
  19. Amazon Catalog Tree : Amazon Catalog Tree
  20. Amazon Zuggest : Amazon product suggestion (like google suggest)
  21. Askeet by symfony : Digg-like AJAX interactions; open source
  22. Backbase - Ajax Demos : Ajax demos at BackBase
  23. Basic Ajax Examples : Ping, track changes, drop down, Google suggest hack etc at Clearnova
  24. Behaviour : Fading lists, Sortable lists, Dropout boxen, Shaky lists
  25. chat.app : ajax chat
  26. Chihuahua Word Puzzle : daily word puzzles
  27. Coloir : Ajax Slideshow
  28. DHTML arcade/action games : a collection that demonstrate the power of DHTML
  29. DomAPI : Windows Desktop, Outlook-like, RSS Reader
  30. Drag and Drop Shopping Cart Demo : at CyberDummy
  31. Easy AJAX inline text edit 2.0 : edit a piece of text inline
  32. FileChucker : File upload and progress bar at Encodable.com
  33. Gmail Style Check Username AJAX Demo : at CyberDummy
  34. Google Web Toolkit Example Projects : Hello World, Dynamic Table, Desktop App Clone etc
  35. GreyBox : Pop up window using idea of light box.
  36. FiftyFourEleven: Ajax Examples
  37. IntuiCat - ajax Catalogue : Ajax-based Catalogue Demo
  38. jsLINB programming demos : LINB(Lazy INternet and Browser)
  39. JSlog : Ajax logging tool.
  40. JS/UIX Unix Shell : JS/UIX is an UN*X-like OS for standard web-browsers, written entirely in JavaScript.
  41. Lace : free web chat application
  42. Lightbox : simple, unobtrusive script used to overlay images on the current page.
  43. Leightbox : Light Box with inline div’s instead of AJAX calls.
  44. Live Quote Demo : Simple way of creating an updating stock quote table in ajax.
  45. Magnetic Poetry : drag and drop poetry
  46. Metatron Chat Engine : PHP/MySQL/JavaScript powered chat engine
  47. Monket Calendar : online calendar
  48. Multi List Drag Drop Demo : at CyberDummy
  49. NetDirector : open and extensible framework for managing configurations of common open source network services.
  50. nexImage : Image processing demo
  51. Opera Platform : Enabling AJAX applications on mobile phones
  52. Orbeon examples : various examples illustrating the capabilities of OPS, from the OPS Tutorial examples to XForms examples
  53. OVO Suite : Online Virtual Office : virtual office limited demo
  54. phpFreeChat : php Free Chat
  55. S5: A Simple Standards-Based Slide Show System : S5 is a slide show format based entirely on XHTML, CSS, and JavaScript.
  56. script.aculo.us Reflector : image reflector script that uses uses opacity-based fades
  57. Slider Bar Demo : at CyberDummy
  58. SmallestAjax : Smallest Ajax example in the world?
  59. Spell Check demo : by Primal Grasp
  60. Super Maryo World : Japanese game demo
  61. Tacos : Tacos provides a library of useful Tapestry components. This application provides some examples to get you started.
  62. theList : to-do list / bug-tracker
  63. ThickBox : ThickBox is a Lightbox than can show html pages as well as images.
  64. Tooltip.js : Tooltip.js is a simple class to make it possible to add tooltips to your page.
  65. Treehouse Chat : ajax chat
  66. Tudu Lists : open-source to-do lists
  67. WeBoggle : Ajax Boggle
  68. XHTML live Chat : ajax chat
  69. YahooSearchAsYouType : Yahoo search as you type
  70. ZK Demo : demo programs for various components
Posted by 1010