웹상에서 다른 사이트의 소스 가져오기

Posted by MD워시퍼
2018. 7. 9. 10:36 Study
728x90

----OtherDomainRead.html ----
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Button Test</title>
<script language="javascript" type="text/javascript" src="js/prototype.js"></script>
<script language="javascript" type="text/javascript" src="js/other.js"></script>
</head>
<body>
 <form id="imgform" name="imgform">
  <input id="url" name="url" type="text" value="http://www.kma.go.kr/weather_main.jsp" />
  <image src="originalfile.jpg" id="submitImg" name="submitImg"/>
 </form>
 <div id="result"></div>
</body>
</html>

---- other.js ----
Event.observe(window, "load", function() {
 Event.observe("submitImg", "click", Submitter.clickHandler);
});

var Submitter = {
 clickHandler : function(event) {
  var URL = "otherDomain.jsp?url="+$("url").value;
  new Ajax.Request(URL, {
   onComplete : function(xmlHttp) {
    $("result").innerHTML = xmlHttp.responseText;
   }
  });
 }
};

---- otherDomain.jsp ---- 맘대로 바꾸셔도 되는 부분이며, 여기에서 실제로 내용을 읽어오는 부분입니다.
<%@page import="java.net.MalformedURLException, java.io.IOException, java.io.InputStreamReader"%>
<%@page import="java.io.BufferedReader, java.io.OutputStreamWriter, java.io.BufferedWriter"%>
<%@page import="java.net.URLConnection, java.net.URL"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%
 BufferedWriter output = null;
 BufferedReader in = null;
 URLConnection conn = null;
 try {
  String strUrl = request.getParameter("url");
  String otherDomain = strUrl.substring(0, strUrl.lastIndexOf("/"));
  URL url = new URL(strUrl);
  conn = url.openConnection();
  conn.setDoOutput(true);
  output = new BufferedWriter( new OutputStreamWriter( conn.getOutputStream() ) );
  in = new BufferedReader( new InputStreamReader( conn.getInputStream() ) );
  String current;
  StringBuffer res = new StringBuffer(100);
  while ( (current = in.readLine()) != null ) {
   res.append(current)
    .append(" ");
  }
  current = res.toString().replaceAll("/images", otherDomain+"/images");
  current = current.replaceAll(""/", """+otherDomain+"/");
  current = current.replaceAll("src="/", "src=""+otherDomain+"/");
  out.print(current);
  System.out.println(current);
 } catch ( MalformedURLException ex ) {
  ex.printStackTrace();
 } catch ( IOException ex ) {
  ex.printStackTrace();
 } finally {
  if(null != output)
   output.close();
  if(null != in)
   in.close();
 }
%>

SVN 관련 이슈사항

Posted by MD워시퍼
2018. 6. 29. 12:49 Study
728x90
안녕하세요. MD워시퍼예요.

일을 하다보니, 생각지 못한 일들로 문제가 발생하게 되고,
그 문제를 해결하기 위해, 노력하다가 나중에 까먹을까봐 계속 블로그에 올리게 되네요.

오늘은 프로젝트단위로 일하는 SI개발자로써, 이미 알고 계시는 분들도 계시겠지만, 새롭게 시작하는 개발자들이나 관리자들이 도움이 될만한 것을 제공하고자 이렇게 글을 써봅니다

외부에서 일하다가, 내부에서 일하는 경우가 종종 일어나게 되면, SVN이 내부에 하나, 외부에 하나 존재해야할 경우가 있을 것입니다.
한번 svnadmin 프로그램을 활용하여, 전체 백업을 하고, 전체 복원을 하는 경우는 조금만 찾아보면 해결방법을 알 수 있습니다(혹시 못 찾는 사람을 위하여, 추후 링크를 달아놓도록 하겠습니다)
저는 기존에 복원을 한 상태에서, 외부와 내부의 svn서버의 버전이 동일하지 않아, 증분 백업을 한 후, 증분 복원을 진행해보고자 하려고 했는데, 생각보다 쉽지 않더라고요.
에러는 다음과 같이 표출되더고요.

<<< 새로운 트랜잭션 시작, 리비전 1565에 기반함.
svnadmin: 파일이 이미 존재함: 파일시스템 '/home/svn/md82/db', 트랜잭션 '1564-17s', 경로 'TEST'
* 경로 추가중 : TEST ...

버전을 아무리 낮추고, 높여도, 계속 이 에러..

<<< 새로운 트랜잭션 시작, 리비전 1564에 기반함.
svnadmin: 파일이 이미 존재함: 파일시스템 '/home/svn/md82/db', 트랜잭션 '1564-17t', 경로 'TEST'
* 경로 추가중 : TEST...

그래서 조금 검색을 해보았더니 이런 내용이 있더라고요.

You have to start over with a fresh repository and load the transactions from the original repository first.

svnadmin dump recovered-repo > dumpfile
svnadmin load new-repo < dumpfile

Then load the new transactions from the end of the current repository you've been working in since the crash. Be sure to specify your revisions to only take the new stuff.

svnadmin dump current-repo -r firstnewrev:lastnewref --incremental > newdumpfile
svnadmin load new-repo < newdumpfile

Because I don't have any repositories to test with, I haven't actually tested this so be careful and don't mess with anything you don't have backed up.



dump를 할 때, --incremental 기능을 사용하지 않았었는데, 한번 회사 복귀하면, 덤프 뜨고, 테스트를 진행해봐야 할 것 같습니다.

※ 추후에 상단의 내용을 위해서, 결국 해결을 했는데, SVN의 증분백업과 증분복원 을 참고하시기 바랍니다.

[Android] 기존 화면에 웹뷰 추가하기

Posted by MD워시퍼
2018. 4. 16. 18:56 Study
728x90
안녕하세요. MD워시퍼입니다.
다른 기업에서 앱을 만든 것을 저희 회사에서 유지보수를 하게 되었습니다.
첫번째로 화면이 추가되었을 때를 위해 추가적으로 작업해야할 것들과 주의해야할 것들을 정리해보고,
추후에 참고하여 개발을 진행해보려고요.
혹시 Android 또는 IOS 개발을 진행하고자 하는 사람이 있다면, 참고하셔도 괜찮습니다.

  1. 이미지 파일 만들기
      일반버튼 이미지
      클릭된 이미지
      웹뷰화면에서의 타이틀 이미지
      ※ 단, 파일명은 대문자를 사용하지 말라는 내용이 있다
      ㅇ 에러 내용 : 'S' is not a valid file-based resource name character: File-based resource names must contain only lowercase a-z, 0-9, or underscore
      ㅇ 해결방안 : 대문자가 들어있으면 소문자로 변경한다. _를 이용하여 구분하는 것도 좋은 방법이다.
  2. layout폴더에 xml파일(디자인파일) 만들기
      웹뷰에 표출할 내용을 만든다. 난 일단 기존에 있던 파일을 복사해서 하나 더 만들었다.

libpcre.so.1: cannot open shared object file: No such file or directory

Posted by MD워시퍼
2018. 3. 28. 23:39 Study/Centos
728x90
안녕하세요. MD워시퍼입니다.

오랫만에 글을 올리네요.ㅋㅋ

오늘은 개인적으로 일을 하다가 문제 발생시, 해결방법을 올려볼까 해서 이렇게 블로그에 글을 올립니다.

Centos 6 버전에서 yum 으로 몇 가지 라이브러리 업데이트를 한 후에, apache를 실행하려고 헀더니, 에러가 발생했네요..ㅠㅠ

에러 메시지는 다음과 같습니다.
/usr/local/apache2/bin/httpd: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

이럴 때는 어떻게 처리를 할까? 검색을 하다가 아래와 같은 방법으로 해결을 해보았습니다.

1. cd /usr/local/apache2/bin 명령어를 실행하여, 해당 폴더로 이동해봅니다.

2. ldd httpd 를 실행한다. 그럼 다음과 같이 조회가 됩니다.


linux-vdso.so.1 => (0x00007fff691ff000)
libpcre.so.1 => not found
libaprutil-1.so.0 => /usr/local/apache2/lib/libaprutil-1.so.0 (0x00007ff847f31000)
libapr-1.so.0 => /usr/local/apache2/lib/libapr-1.so.0 (0x00007ff847d00000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff847ae3000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff847726000)
libexpat.so.0 => /usr/local/apache2/lib/libexpat.so.0 (0x00007ff8474fb000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007ff8472c2000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff8470be000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff848165000)

역시 libpcre.so.1가 존재하지 않네요. 그럼..

3. libpcre.so.1를 찾아야겠죠?
기본적으로는 /usr/local/lib 안에 있습니다.(출처는 조금만 검색해보시면 아실수 있어요~^^)
근데 확인해봤더니, 이 파일이 없더라고요.
그럼 어디 있을까? 파일명 검색은 find 명령어를 통해 확인해보았습니다.


# find / -name libpcre.so.1


4. 여러 폴더중에 /usr/local/lib_bak 폴더에 있다고 검색이 되었어요.
다른 사람이 여기다가 백업해 놓은 것같은 스멜이~~

5. 해당 파일을 /usr/local/lib로 복사하기 위해 다음과 같은 명령어를 실행했어요

cp /usr/local/lib_bak/libpcre.so.1 /usr/local/lib/


6. 다시 아파치를 실행해보았어요.
# service httpd start
서비스가 제대로 동작한 것 같네요. 웹사이트도 제대로 뜨는 것 같네요.


그럼 다른 문제는 없는지 확인해볼께요~

[TRIRIGA] Form Builder에서 Radio Button으로 Visible 하게 하는 방법

Posted by MD워시퍼
2015. 11. 13. 12:26 Study/ARCHIBUS & TRIRIGA
728x90


List 으로 Data Modeler를 생성한 후, Form Builder에서 Display Type을 Radio로 지정하면 됨.

[TRIRIGA] "열려는 레코드에 레이아웃이 설정되어 있지 않습니다." 에러 해결 방법

Posted by MD워시퍼
2015. 10. 30. 00:00 Study/ARCHIBUS & TRIRIGA
728x90


특정 Form의 내용을 저장이 되지 않는다.

1. 새로운 리스트를 만들었다.
2. 새로운 필드를 만들었다.(1번의 리스트 이용)
3. Form에 2번 필드를 넣었다.
4. OnChange 기능을 추가했다.
5. 4번에 Workflow를 넣었다.

해결방법은 모르겠지만, Import 도중에 뭔가 꼬인듯 하다

[Centos] 재설치 후 yum 설치 리스트

Posted by MD워시퍼
2015. 10. 13. 19:05 Study/Centos
728x90
  • ifconfig 명령어 설치
    # yum install net-tools
  • wget 명령어 설치
    # yum install wget
  • ntfs-3g mount
    1. # wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
    2. # rpm -Uvh rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
    3. # yum install ntfs*
    4. # mount -t ntfs /dev/sdb1 ./HDD1

[Centos] ssh 원격 접속 장애 (WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!)

Posted by MD워시퍼
2015. 10. 12. 06:53 Study/Centos
728x90
어제 Centos를 재설치했다. 노트북에 Putty 로 ssh 접속 테스트를 해보았는데, 문제없이 잘 접속이 되었다.
아침에 식사를 마치고, 맥북에서 ssh 접속을 해보았더니, 아래와 같은 것이 뜨면서, 접속이 안되는 것이다.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:lE9TM7sHONclMNYVtHrwfefdIV3lsn88ZJLuWYc6Rz8.
Please contact your system administrator.
Add correct host key in /Users/md/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/md/.ssh/known_hosts:1
RSA host key for XXX.XXX.XXX.XXX has changed and you have requested strict checking.
Host key verification failed.

원인은 재설치한 Centos에 ssh을 접속하였기 때문이라고 한다.
이전에 접속한 RSA 키 값으로 자꾸 접속하려니까 맞지 않았던 것이라고..
결론은 지우면 된다는거.

ssh-keygen -R [ IP or DomainName]


상단의 내용을 치니, 다음과 같이 나온다.
# Host XXX.XXX.XXX.XXX found: line 1
/Users/md/.ssh/known_hosts updated.
Original contents retained as /Users/md/.ssh/known_hosts.old

이렇게 뜬다면 성공한 것이다.

출처 : 팔팔청춘

[Node.js] NodeJS 를 Centos OS에서 설치방법(Ver. 4.1.2)

Posted by MD워시퍼
2015. 9. 25. 06:55 Study/Centos
728x90
  1. wget https://nodejs.org/dist/v4.1.2/node-v4.1.2.tar.gz
  2. tar xvfvz node-v4.1.2.tar.gz
  3. cd node-v4.1.2
  4. ./configure
  5. make
  6. sudo make install

[TRIRIGA Workflow] triRequest - Synchronous - Move Request - Populate Temporary Request Class

Posted by MD워시퍼
2015. 9. 7. 09:06 Study/ARCHIBUS & TRIRIGA
728x90
1. Start
- Name : triRequest - Synchronous - Move Request - Populate Temporary Request Class
- Concurrence : Synchronous
- Temporary Data : Temporary
- Module : triRequest
- Propagate Integration Status : check

2. Get Temp Task Properties
- Label : Get Temp Record
- Records : Take the Business Object of Task Start(triRequest)
Object type : triRequest

3. Retrieve Task Properties
- Label : Get Building from Request
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get Temp Record(triRequest)
Use its Association Has Building
Object Type : triBuilding
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triRequest)
Use it
Object type : triRequest

4. Associate Task Properties
- Label : DeAssociate Temporary Request Class from Request
- Remove the association : Temporary
- Formulas : Recalculate as Needed
- Remove the association from : Take the Businuss Object of Task Get Temp Record(triRequest)
Use it
Object Type : triRequest
- Where the associated record is : Workflow Activity
Take the Business Object of Task Get Temp Record(triRequest)
Use its Association Temporary
Object type : triRequestClass

5. Switch Condition
- Expression : Get Building from Request :: Result Count > 0
- Y : 6 / N : END

6. Switch Condition
- Expression : Get Building from Request :: triBuilding :: RecordInformation :: triManagedServiceBL == "TRUE"
- Y : 7 / N : 20

7. Define Variable Task Properties
- Label : VAR Request Class
- Module : Classification
- Object : triRequestClass
- value : Clear

8. Switch Condition
- Expression : Get Temp Record :: triRequest :: RecordInformation :: triFormNameSY == "triAddPerson"
- Y : 9 / N : 12

9. Retrieve Task Properties
- Label : Get Add Person Request Class from triBuilding
- Retrieve : A List
- From Records : Take the Businuss Object of Task Get Building from Request(triBuilding)
Use its Association : Has Request Class
Object Type : triRequestClass
- Filter Using
Left DataOperatorRiget Data
RecordInformation::triPathTXContainsRecordInformation::triRequestClassPathTXAND
RecordInformation::triNameTXEqualsAdd Person
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triRequest)
Use it
Object type : triRequest

10. Assign Variable Task Properties
- Label : VAR Add Person
- Retrieve : A List
ㅇ Assign Variable - Variable : VAR Request Class(triRequestClass)
- Object Type : triRequestClass
Object Type : triBuilding
- Filter Records : Workflow Activity
Take the Business Object of Task Start(triRequest)
Use it
Object type : triRequest