2018년 11월 29일 목요일

[EtC] Windows 에서 SocketTest 사용시


Windows 환경에서 SocketTest 사용시,
한글이 깨지는 경우 -Dfile.encoding=utf-8 을 주고 실행 하면 해결 된다.

매번 cmd 에서 옵션 주기는 귀찮으니, SocketTest.bat 파일을 열어 수정 한다.

그리고 TCP 회신 전문에 첫 문자열이 한자나 한글인 경우 문자열이 깨지는 
버그가 있어, 개발자에게 알렸으나 SocketTest V3.0.0 에서 해결 되지 않은 상태.

2018년 11월 5일 월요일

[JaVa] SFTP Upload

1. 필요 라이브러리

compile('com.jcraft:jsch:0.1.54') 

* 최신 버젼은 maven repository 에서 확인 가능.


2. 테스트 코드
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

import com.jcraft.jsch.SftpException;


public class MyTest  {

/**
* SFTP Upload -> 게시물 원본 http://javacpro.tistory.com/22 참고
* */
public void sftpUploadTest() {

Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;

// SFTP 서버연결
String url = "192.168.0.100";
String user = "YOUR_SFTP_USER_ID";
String password = "YOUR_SFTP_USER_PASSWORD";
int port = 1234;
File uploadFile = new File("D:\\SFTP_UPLOAD_FILE.EXT");

// JSch 객체 생성
JSch jsch = new JSch();
try {
// 세션객체 생성 ( user , host, port )
session = jsch.getSession(user, url, port);
session.setPassword(password);

// 세션관련 설정정보 설정
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no"); // 호스트 정보 검사하지 않는다.
session.setConfig(config);
session.connect();

// sftp 채널 접속
channel = session.openChannel("sftp");
channel.connect();

} catch (JSchException e) {
// e.printStackTrace();
System.out.println(e.toString());
}

channelSftp = (ChannelSftp) channel;

// upload("./dat/", new File("C:\\Users\\jhkim1981\\Desktop\\20181102_TEST_UPLOAD.txt"));

FileInputStream in = null;
        try{ //파일을 가져와서 inputStream에 넣고 저장경로를 찾아 put
        in = new FileInputStream(uploadFile);
            channelSftp.cd("/home/freecatz/upload");
            channelSftp.put(in, uploadFile.getName());
        }catch(SftpException e){
// e.printStackTrace();
        System.out.println(e.toString());
        }catch(FileNotFoundException e){
// e.printStackTrace();
        System.out.println(e.toString());
        }finally{
            try{
                in.close();
            } catch(IOException e){
//    e.printStackTrace();
            System.out.println(e.toString());
            }
        }
   }


}

[JaAv] html parse


1. 필요 라이브러리.

compile('org.jsoup:jsoup:1.11.3')


최신버젼은 maven repository 에서  확인 가능.


2. 테스트 코드
package my.test.bed;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

public class MyTest {
/**
* html parse test
* */
public void htmlParseTest(String html) {
Document doc = Jsoup.parse(html); 
Elements imgs = doc.getElementsByTag("img");
int cnt = imgs.size();
if(cnt > 0) {
for(int i=0; i < cnt; i++) {
String imgSrc = imgs.get(i).attr("src").toString(); 
System.out.println("img src -> " + imgSrc);
}
}
}
}

2018년 11월 1일 목요일

[GraDle] org.eclipse.buildship.core.UnsupportedConfigurationException




무엇 때문에 그런건지 해결 방법을 알 수가 없다. 누가 좀 알ㄹ ㅕ주세요...ㅠㅠ




org.eclipse.buildship.core.UnsupportedConfigurationException: Project at 'C:\devel\workspace\sts\zTest' can't be named 'my.test.bed' because it's located directly under the workspace root. If such a project is renamed, Eclipse would move the container directory. To resolve this problem, move the project out of the workspace root or configure it to have the name 'zTest'.
at org.eclipse.buildship.core.workspace.internal.DefaultWorkspaceOperations.validateProjectName(DefaultWorkspaceOperations.java:183)
at org.eclipse.buildship.core.workspace.internal.ProjectNameUpdater.checkProjectName(ProjectNameUpdater.java:107)
at org.eclipse.buildship.core.workspace.internal.ProjectNameUpdater.ensureProjectNameIsFree(ProjectNameUpdater.java:71)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.addNewEclipseProjectToWorkspace(SynchronizeGradleBuildOperation.java:286)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeNonWorkspaceProject(SynchronizeGradleBuildOperation.java:270)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeGradleProjectWithWorkspaceProject(SynchronizeGradleBuildOperation.java:179)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.access$000(SynchronizeGradleBuildOperation.java:99)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation$1.run(SynchronizeGradleBuildOperation.java:134)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2240)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2262)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.synchronizeProjectsWithWorkspace(SynchronizeGradleBuildOperation.java:131)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildOperation.run(SynchronizeGradleBuildOperation.java:115)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildsJob.synchronizeBuild(SynchronizeGradleBuildsJob.java:85)
at org.eclipse.buildship.core.workspace.internal.SynchronizeGradleBuildsJob.runToolingApiJob(SynchronizeGradleBuildsJob.java:73)
at org.eclipse.buildship.core.util.progress.ToolingApiJob$1.run(ToolingApiJob.java:73)
at org.eclipse.buildship.core.util.progress.ToolingApiInvoker.invoke(ToolingApiInvoker.java:62)
at org.eclipse.buildship.core.util.progress.ToolingApiJob.run(ToolingApiJob.java:70)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)