블로그 이미지
박공명

카테고리

분류 전체보기 (99)
된장 (7)
Dev (60)
Android (14)
Apache (6)
C (1)
Gauce (1)
Java (8)
Javascript (4)
JSP (3)
Mysql (2)
Oracle (3)
PHP (2)
Weblogic (1)
linux (8)
꼐..꼐임 (6)
식탐 (18)
우리 (0)
Etc (8)
개인자료 (0)
Total
Today
Yesterday

영문 숫자 조합의 문자열을 바이트별로 잘라야할 일이 생겼다.


인터넷 검색결과 보통 타이틀 길이를 제한하기위한 용도로만 사용하기에 어쩔수없이 새로만듬.


원하는 바이트의 배열 숫자만큼 그리고 길이가 초과하면 빈칸으로 채운 list를 반환한다.



결과 :

INFO : com.x2trade.base.controller.javaTest - 하이요1

INFO : com.x2trade.base.controller.javaTest - 하이요2

INFO : com.x2trade.base.controller.javaTest - 하이요3

INFO : com.x2trade.base.controller.javaTest - 하이요4

INFO : com.x2trade.base.controller.javaTest - 하이요5

INFO : com.x2trade.base.controller.javaTest - 

INFO : com.x2trade.base.controller.javaTest - 


소스 :

public void testSampleView()

{

String str = new String("하이요1하이요2하이요3하이요4하이요5");

List<String> strList = cutString(str,10,10,10,10,10,10,10);

for(String a : strList) {

logger.info(a);

}

}        

public List<String> cutString(String str,int...cuttingBytes) {

List<String> rtnList = new ArrayList<String>();

if(str == null) str = "";

int maxLength = str.length();

int i=0;

for(int cutBytes : cuttingBytes) {

StringBuffer sb = new StringBuffer("");

if(i>maxLength) {

rtnList.add("");

break;

}

for(;i<maxLength;i++) {

if(sb.toString().getBytes("utf-8").length + str.substring(i, i+1).getBytes("utf-8").length > cutBytes) break;

sb.append(str.substring(i, i+1));

}

rtnList.add(sb.toString());

}

return rtnList;

}

'Dev > Java' 카테고리의 다른 글

자바 컴파일 클래스패스 지정  (0) 2010.04.01
java.sql.SQLException: 스트림이 이미 종료되었습니다  (0) 2010.03.25
Full GC  (0) 2010.03.25
ftp upload  (0) 2010.03.24
ftp 파일삭제.  (0) 2010.03.24
Posted by 박공명
, |

javac -classpath ../lib/weblogic.jar ./co/kr/ CommonBean.java -d ../classes
다수의 라이브러리는 세미콜론; 으로 구분한다.

다수의 자바파일을 컴파일해야할경우에 매번 지정할수는 없지안흥가?
set CLASSPATH=.;D:\APPLICATION\j2sdk1.4.2_19\lib\tools.jar;D:\Project\ilmo\WEB-INF\classes\;
시스템 자체의 환경변수에 추가해버리면 아무런 문제가 없다.
도스도 유닉스도 마찬가지이다.
 참 쉽져?

'Dev > Java' 카테고리의 다른 글

java 문자열 바이트별로 자르기.  (1) 2014.12.16
java.sql.SQLException: 스트림이 이미 종료되었습니다  (0) 2010.03.25
Full GC  (0) 2010.03.25
ftp upload  (0) 2010.03.24
ftp 파일삭제.  (0) 2010.03.24
Posted by 박공명
, |

java.sql.SQLException: 스트림이 이미 종료되었습니다
 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
 at oracle.jdbc.driver.LongAccessor.getBytes(LongAccessor.java:151)
 at oracle.jdbc.driver.LongAccessor.getString(LongAccessor.java:193)
 at oracle.jdbc.driver.T4CLongAccessor.getString(T4CLongAccessor.java:422)
 at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:397)
 at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1515)
 at com.lnt.EventDBBean.getArticles(EventDBBean.java:260)

읽어들이는 테이블의 데이터 타입에 Long 형이 있으면 볼수있다.
resultSet.getString() 의 순서를 쿼리의 컬럼읽는순서와 동일하게 마춰주면 에러가 사라지더라.

'Dev > Java' 카테고리의 다른 글

java 문자열 바이트별로 자르기.  (1) 2014.12.16
자바 컴파일 클래스패스 지정  (0) 2010.04.01
Full GC  (0) 2010.03.25
ftp upload  (0) 2010.03.24
ftp 파일삭제.  (0) 2010.03.24
Posted by 박공명
, |

Full GC

Dev/Java / 2010. 3. 25. 15:08
이미지 리사이징 기능 수행시 웹로직에서는 이런 로그가 나타난다.
운영쪽에서는 자주나온다고 에러로 취급하는 느낌이다.

: 61982K->53561K(321536K), 0.4544700 secs] 185048K->53561K(505856K), [Perm : 108413K->108413K(131072K)], 0.4545180 secs]
1753432.930: [Full GC 1753432.930: [Tenured: 53561K->37065K(321536K), 0.4244530 secs] 57523K->37065K(505856K), [Perm : 108413K->98056K(131072K)], 0.4245010 secs]
1753433.442: [Full GC 1753433.442: [Tenured: 37065K->37106K(321536K), 0.3641750 secs] 38464K->37106K(505856K), [Perm : 98056K->98056K(131072K)], 0.3642220 secs]
1753433.834: [Full GC 1753433.834: [Tenured: 37106K->37218K(321536K), 0.3640000 secs] 37279K->37218K(505856K), [Perm : 98056K->98056K(131072K)], 0.3640450 secs]
1753434.243: [Full GC 1753434.243: [Tenured: 37218K->37367K(321536K), 0.3639820 secs] 37556K->37367K(505856K), [Perm : 98056K->98056K(131072K)], 0.3640280 secs]
1753434.644: [Full GC 1753434.644: [Tenured: 37367K->35407K(321536K), 0.3645940 secs] 37714K->35407K(505856K), [Perm : 98056K->98056K(131072K)], 0.3646390 secs]


ImageIO.write() 메소드가 실행될때 System.gc() 와같은게 같이 작용되는모양인데
뭐가 에러고 뭘 고쳐야할진 아직 모르겠군.

'Dev > Java' 카테고리의 다른 글

자바 컴파일 클래스패스 지정  (0) 2010.04.01
java.sql.SQLException: 스트림이 이미 종료되었습니다  (0) 2010.03.25
ftp upload  (0) 2010.03.24
ftp 파일삭제.  (0) 2010.03.24
정규표현식을 사용하여 스크립트 제거  (1) 2010.03.24
Posted by 박공명
, |

ftp upload

Dev/Java / 2010. 3. 24. 18:12


import sun.net.ftp.FtpClient;
import java.io.FileOutputStream;
import sun.net.TelnetOutputStream;
import java.io.IOException;
import sun.net.TelnetInputStream;
import java.io.FileInputStream;
import java.util.zip.*;
import java.util.*;
import java.io.*;

 public boolean doUpLoad(String mode,String s_server,String userid,String passwd) {
  FtpClient ftpClient = new FtpClient();
  TelnetOutputStream os =null ;
  FileInputStream is = null;
  try {
   
   System.out.println("doUpload in");
   ftpClient.openServer(s_server);
   System.out.println("server open");
   ftpClient.login(userid, passwd);
   System.out.println("server login");
   if (serverPath.length() != 0)
    ftpClient.cd(serverPath);
   //System.out.println("-4");
   if("asc".equals(mode)) 
    ftpClient.ascii();
   else
    ftpClient.binary();
   //System.out.println("-5");
   if("".equals(serverFile)) {
    serverFile =  localFile ;
   }
   System.out.println("write file path = " + serverPath+"/"+serverFile);
   os = ftpClient.put(serverPath +"/"+ serverFile );
   System.out.println("read file path = " + localPath+"/"+localFile);
   File file_in = new File(localPath+"/"+localFile);
   is = new FileInputStream(file_in);
   byte[] bytes = new byte[1024];
   int c;
   while ((c = is.read(bytes)) != -1) {
    os.write(bytes, 0, c);
   }
   System.out.println("doUpload complete");
   
   is.close();
   os.close();
   ftpClient.closeServer();
   System.out.println("doUpload close server");
   return true;
  }catch (IOException ie) {
   ie.printStackTrace();
   System.out.println("FTP Exeception -----" + ie.getMessage());
   return false;
  }catch(Exception e){
   e.printStackTrace();
   System.out.println("FTP Exeception -----" + e.getMessage());
   return false;
  }finally{
   try{
    is.close();
    os.close();
    ftpClient.closeServer();
   }catch(Exception e){} 
  }
 }


ㅇㅇㅇ

file.delete(); 만 추가하면 upload 가 아니구 move가 되겠지

'Dev > Java' 카테고리의 다른 글

java.sql.SQLException: 스트림이 이미 종료되었습니다  (0) 2010.03.25
Full GC  (0) 2010.03.25
ftp 파일삭제.  (0) 2010.03.24
정규표현식을 사용하여 스크립트 제거  (1) 2010.03.24
이미지 리사이징 , image resize  (0) 2010.03.24
Posted by 박공명
, |

ftp 파일삭제.

Dev/Java / 2010. 3. 24. 16:21

ftp기능을 만지다보니 생각지도못하게

원격지파일 삭제기능을 지원하는 라이브러리가 없는거 같더라.

뭐 내가 못찾았을수도 있고...

한 4가지를 모두 사용해보구 되는거 한개를 찾았다.

org.apache.commons.net.ftp.FTP

아파치꺼네


public void deleteFtp() throws Exception {
  
    FTPClient client = null;
    BufferedInputStream bis = null;
    try {
     client = new FTPClient();

  client.setControlEncoding("euc-kr");
  client.connect(server , Integer.parseInt(port));
  int resultCode = client.getReplyCode();
  
  if(FTPReply.isPositiveCompletion(resultCode) == false){
   throw new Exception("FTP 서버에 연결할 수 없습니다.");
  }
  else {
   client.setSoTimeout(5000);
   boolean isLogin = client.login(user, password1);
   if(isLogin == false) {
    throw new Exception("FTP 서버에 로그인 할 수 없습니다.");
   }
   client.setFileType(FTP.BINARY_FILE_TYPE);
   String deleteFile = serverPath + "/" + serverFile;
   System.out.println("delete path = " + deleteFile);
  boolean delflag =  client.deleteFile(deleteFile);
  //System.out.println("파일 전송 성공여부 : "+isSuc);
  if(delflag == false) {
   throw new Exception("파일삭제에 실패 하였습니다.");
  }
 
      client.logout();
     }
    } catch (Exception e) {
     e.printStackTrace();
     throw e;
    }
    finally {
    
     if(bis != null) {
      try {bis.close(); } catch (Exception e) { }
     }
     if(client != null && client.isConnected()) {
      try { client.disconnect(); } catch (Exception e) {}
     }
    }
   
   }


단지 파일삭제기능을 수행하는 메소드가 필요할뿐인데 왜 다른데서는 못찾았을까??? 정말없나?

'Dev > Java' 카테고리의 다른 글

java.sql.SQLException: 스트림이 이미 종료되었습니다  (0) 2010.03.25
Full GC  (0) 2010.03.25
ftp upload  (0) 2010.03.24
정규표현식을 사용하여 스크립트 제거  (1) 2010.03.24
이미지 리사이징 , image resize  (0) 2010.03.24
Posted by 박공명
, |

import java.util.regex.*;
이놈이 필요하다.

 public String getRemoveScript(String strContent){
  if(strContent == null) strContent = "";
  Pattern patternTag=Pattern.compile("\\<(\\/?)(\\w+)*([^<>]*)>");
  Pattern patternScript=Pattern.compile("(?i)\\<script(.*?)</script>");
  Pattern patternMouseOver=Pattern.compile("(?i) onmouseover=[\"']?([^>\"']+)[\"']*");
  Pattern patternMouseOut=Pattern.compile("(?i) onmouseout=[\"']?([^>\"']+)[\"']*");
  Pattern patternMouseClick=Pattern.compile("(?i) onclick=[\"']?([^>\"']+)[\"']*");
  Matcher matcherContent=patternScript.matcher(strContent);
  strContent=matcherContent.replaceAll("");
  Matcher matcherMouseOver=patternMouseOver.matcher(strContent);
  strContent=matcherMouseOver.replaceAll("");
  Matcher matcherMouseOut=patternMouseOut.matcher(strContent);
  strContent=matcherMouseOut.replaceAll("");
  Matcher matcherMouseClick=patternMouseClick.matcher(strContent);
  strContent=matcherMouseClick.replaceAll("");
  return strContent;
 }

원하는 표현식을 제거할수있다.

프레임웍같은걸 안쓰니깐 여러가지 신경써야할것이 많다.

자바스크립트 전문가와 함께있으니 배우는게 많구나 ㅋㅋㅋ

'Dev > Java' 카테고리의 다른 글

java.sql.SQLException: 스트림이 이미 종료되었습니다  (0) 2010.03.25
Full GC  (0) 2010.03.25
ftp upload  (0) 2010.03.24
ftp 파일삭제.  (0) 2010.03.24
이미지 리사이징 , image resize  (0) 2010.03.24
Posted by 박공명
, |



리사이징에는 jai 도 필요 없더이다..

출처는 잘 모르겠구 jai로했을때는 사이즈가 변할때 깨지는일이 있었는데

이건 갠찬네.

사이즈 변경안할때 이미지가 아닌것을 넣으면 널포인트 난다는것에 주의하자.

참 쉽쥬?


import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.ImageIcon;

// com.sun.image.codec.jpeg package is included in sun and ibm sdk 1.3
import com.sun.image.codec.jpeg.*;

public class ImageUtil{
 public static final int RATIO = 0;
 public static final int SAME = -1;
 
 public  void resize(File src, File dest, int width, int height) throws IOException {
  Image srcImg = null;
  String suffix = src.getName().substring(src.getName().lastIndexOf('.')+1).toLowerCase();
  if (suffix.equals("bmp") || suffix.equals("png") || suffix.equals("gif")) {
   srcImg = ImageIO.read(src);
  } else {
   // BMP가 아닌 경우 ImageIcon을 활용해서 Image 생성
   // 이렇게 하는 이유는 getScaledInstance를 통해 구한 이미지를
   // PixelGrabber.grabPixels로 리사이즈 할때
   // 빠르게 처리하기 위함이다.
   srcImg = new ImageIcon(src.toURL()).getImage();
  }
  
  int srcWidth = srcImg.getWidth(null);
  int srcHeight = srcImg.getHeight(null);
  
  int destWidth = -1, destHeight = -1;
  
  if (width == SAME) {
   destWidth = srcWidth;
  } else if (width > 0) {
   destWidth = width;
  }
  
  if (height == SAME) {
   destHeight = srcHeight;
  } else if (height > 0) {
   destHeight = height;
  }
  
  if (width == RATIO && height == RATIO) {
   destWidth = srcWidth;
   destHeight = srcHeight;
  } else if (width == RATIO) {
   double ratio = ((double)destHeight) / ((double)srcHeight);
   destWidth = (int)((double)srcWidth * ratio);
  } else if (height == RATIO) {
   double ratio = ((double)destWidth) / ((double)srcWidth);
   destHeight = (int)((double)srcHeight * ratio);
  }
  Image imgTarget = srcImg.getScaledInstance(destWidth, destHeight, Image.SCALE_SMOOTH);
  int pixels[] = new int[destWidth * destHeight];
  PixelGrabber pg = new PixelGrabber(imgTarget, 0, 0, destWidth, destHeight, pixels, 0, destWidth);
  try {
   pg.grabPixels();
  } catch (InterruptedException e) {
   throw new IOException(e.getMessage());
  }
  BufferedImage destImg = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);
  destImg.setRGB(0, 0, destWidth, destHeight, pixels, 0, destWidth);
  ImageIO.write(destImg, "jpg", dest);
 }

 public  int getHeight(String strImage,int intMaxWidth){
  Image imgSrc=new ImageIcon(strImage).getImage();
  return imgSrc.getHeight(null)*intMaxWidth/imgSrc.getWidth(null);
 }

}

'Dev > Java' 카테고리의 다른 글

java.sql.SQLException: 스트림이 이미 종료되었습니다  (0) 2010.03.25
Full GC  (0) 2010.03.25
ftp upload  (0) 2010.03.24
ftp 파일삭제.  (0) 2010.03.24
정규표현식을 사용하여 스크립트 제거  (1) 2010.03.24
Posted by 박공명
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함