블로그 이미지
항상웃자 애바른2

카테고리

분류 전체보기 (99)
사진 (4)
비공개 (0)
업무 (1)
자동차 (6)
개발 (23)
가족 (33)
모바일 (13)
Total
Today
Yesterday

달력

« » 2025.12
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

공지사항

최근에 올라온 글


1. mac / linux

$ cd /tmp

$ dd if=/dev/zero of=10mb.bin bs=10m count=10

-> 1m * 10 =  10mb.bin 테스트 파일생성


2.windows

fsutil file createnew c:\temp\10mb.bin 10485760

-> 10mb.bin 테스트 파일생성

Posted by 애바른2
, |

Sharepoint , .asmx 란?

개발 / 2013. 10. 25. 14:52

.asmx란?

 - 웹메서드를 제공하기 위한 파일.

 - C#에서는 asmx를 참조함으로써 asmx 네임스페이스에 접근할 수 있다.

 - sharepoint에서는 아래 표와 같은 asmx를 서비스한다.


페이지 

설명 

 http://<server:5966>/_vti_adm/Admin.asmx

 사이트 생성이나 삭제등과 같은 관리 함수
- CreateSite
- DeleteSite
- GetLanguage
- RefreshConfigCache

 http://<server>/_vti_bin/Alerts.asmx

 경고와 관련된 작업을 하는 함수 
- DeleteAlerts
- GetAlerts

 http://<server>/_vti_bin/DspSts.asmx

 데이터와 스키마 검색과 관련된 함수 
- Query (sharepoint list와 site에 대한 query)

 http://<server>/_vti_bin/DWS.asmx

 문서 작업과 관련된 함수 
- CanCreateDwsUrl
- CreateDws
- CreateFolder
- FindDwsDoc
- GetDwsData
- GetDwsMetaData
- RemoveDwsUser
- RenameDws
- UpdateDwsData

 http://<server>/_vti_bin/Forms.asmx

 사용자 인터페이스 폼과 관련된 함수 
- GetForm
- GetFormCollection

 http://<server>/_vti_bin/Imaging.asmx

 사진 라이브러리와 관련된 함수 
- CheckSubwebAndList
- CreateNewFolder
- Delete
- Download
- Edit
- GetItemsByIds
- GetItemsXMLData
- GetListItems
- ListPictureLibrary
- Rename
- Upload

 http://<server>/_vti_bin/Lists.asmx

 리스트와 관련된 함수 
- AddAttachment
- AddDiscussionBoardItem
- AddList
- AddListFromFeature
- ApplyContentTypeToList
- DeleteAttachment
- DeleteContentType
- DeleteContentTypeXmlDocument
- DeleteList
- GetAttachmentCollection
- GetList
- GetListAndView
- GetListCollection
- GetListContentType
- GetListContentTypes
- GetListItemChanges
- GetListItemChangesSinceToken
- GetListItems
- GetVersionCollection
- UndoCheckout
- UpdateContentType
- UpdateContentTypesXmlDocument
- UpdateContentTypeXmlDocument
- UpdateList
- UpdateListItems

 http://<server>/_vti_bin/Meetings.asmx

 회의 작업과 관련된 함수
- AddMeeting
- AddMeetingFromICal
- CreateWorkspace
- DeleteWorkspacez
- GetMeetingInformation
- GetMeetingWorkspaces
- RemoveMeeting
- RestoreMeeting
- SetAttendeeResponse
- SetWorkspaceTitle
- UpdateMeeting
- UpdateMeetingFromICal

 http://<server>/_vti_bin/Permissions.asmx

 Sharepoint 보안과 관련된 함수 
- AddPermission
- AddPermissionCollection
- GetPermissionCollection
- RemovePermission
- RemovePermissionCollection
- UpdatePermission

 http://<server>/_vti_bin/SiteData.asmx

 Sharepoint 포탈 서버에서 사용되는 함수 
- EnumerateFolder
- GetAttachments
- GetChanges
- GetContent
- GetList
- GetListCollection
- GetListItems
- GetSite
- GetSiteAndWeb
- GetSiteUrl
- GetURLSegments
- GetWeb

 http://<server>/_vti_bin/Sites.asmx

 사이트 템플릿을 검색하기 위해 하나의 함수를 포함한다.
- ExportWeb
- GetSiteTemplates
- GetUpdatedFormDigest
- ImportWeb 

 http://<server>/_vti_bin/UserGroup.asmx

 사용자나 그룹과 관련된 작업 함수 
- AddGroup
- AddGroupToRole
- AddRole
- AddRoleDef
- AddUserCollectionToGroup
- AddUserCollectionToRole
- AddUserToGroup
- AddUserToRole
- GetAllUserCollectionFromWeb
- GetGroupCollection
- GetList
- GetListAndView
- GetListCollection
- GetGroupCollectionFromRole
- GetGroupCollectionFromSite
- GetGroupCollectionFromUser
- GetGroupCollectionFromWeb
- GetGroupInfo
- GetRoleCollection
- GetRoleCollectionFromGroup
- GetRoleCollectionFromUser
- GetRoleCollectionFromWeb
- GetRoleInfo
- GetRolesAndPermissionsForCurrentUser
- GetRolesAndPermissionsForSite
- GetUserCollection
- GetUserCollectionFromGroup
- GetUserCollectionFromRole
- GetUserCollectionFromSite
- GetUserCollectionFromWeb
- GetUserInfo
- GetUserLoginFromEmail
- RemoveGroup
- RemoveGroupFromRole
- RemoveRole
- RemoveUserCollectionFromGroup
- RemoveUserCollectionFromRole
- RemoveUserCollectionFromSite
- RemoveUserFromGroup
- RemoveUserFromRole
- RemoveUserFromSite
- RemoveUserFromWeb
- UpdataeGroupInfo
- UpdateRoleDefInfo
- UpdateRoleInfo
- UpdateUserInfo

 http://<server>/_vti_bin/versions.asmx

 file 버전과 관련된 작업 함수 
- DeleteAllVersions
- DeleteVersion
- GetVersions
- RestoreVersion

 http://<server>/_vti_bin/Views.asmx

 목록의 view와 관련된 함수 
- AddView
- DeleteView
- GetViewCollection
- GetViewHtml
- UpdateView
- UpdateViewHtml
- UpdateViewHtml2

 http://<server>/_vti_bin/WebPartPages.asmx 

 Web Part와 관련된 함수 
- AddWebPart
- AddWebPartToZone
- AssociateWorkflowMarkup
- ConvertWebPartFormat
- DeleteWebPart
- ExecuteProxyUpdates
- FetchLegalWorkflowActions
- GetAssemblyMetaData
- GetBindingResourceData
- GetCustomControlList
- GetDataFromDataSourceControl
- GetFormCapabilityFromDataSourceControl
- GetSafeAssemblyInfo
- GetWebPart
- GetWebPart2
- GetWebPartCrossPageCompatibility
- GetWebPartPage
- GetWebPartPageConnectionInfo
- GetWebPartPageDocument
- GetWebPartProperties
- GetWebPartProperties2
- RemoveWorkflowAssociation
- RenderWebPartForEdit
- SaveWebPart
- SaveWebPart2
- ValidateWorkflowMarkupAndCreateSupportObjects

 http://<server>/_vti_bin/Webs.asmx

 사이트와 하위 사이트와 관련된 작업 함수 
- CreateContentType
- CustomizeCss
- DeleteContentType
- GetActivatedFeatures
- GetAllSubWebCollection
- GetColumns
- GetContentType
- GetContentTypes
- GetCustomizedPageStatus
- GetListTemplates
- GetWeb
- GetWebCollection
- RemoveContentTypeXmlDocument
- RevertAllFileContentStreams
- RevertCss
- RevertFileContentStream
- UpdateColumns
- UpdateContentType
- UpdateContentTypeXmlDocument
- WebUrlFromPageUrl






Posted by 애바른2
, |
이번 포스트는 Sharepoint 2007의 WSDL을 활용하여 내용을 읽고 쓰는 방법을 소개 해드리겠습니다.
Sharepoint 2010은 Rest API를 지원하기 때문에 wsdl보다는 쉽게 활용이 가능할 것 같습니다.

Tutorial : Sharepoint의 내용 읽기

1. WSDL file 다운로드
Web service WSDL 파일을 다운로드 받기 위해서 현재 사용중인 sharepoint site주소 뒤에 아래와 같이 입력합니다.
브라우저에 나온 WSDL을 PC에 파일로 저장하세요.
1
http://sharepoint.com/_vti_bin/Lists.asmx?WSDL
2. Stub Code Generate

Stub code생성을 위해 console창을 열어 JDK에서 제공하는 wsimport tool을 사용하여 하래와 같이 실행합니다.

1
wsimport -p com.microsoft.sharepoint -keep -extension sharepoint.wsdl

정상적으로 실행이 되었다면 실행한 folder에 stub code가 생성됩니다.

 
3. eclipse project 생성
eclipse 에서 새 프로젝트를 생성하시고, 생성된 stub code를 프로젝트에 import 합니다.

4. Authentication
Sharepoint web service에서 Authentication 방법입니다. 정상적으로 Auth가 되면 ListSoap Object가 리턴됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static ListsSoap Authentication(String userName, String password) throws Exception {
        ListsSoap port = null;
        if (userName != null && password != null) {
            Lists service = new Lists();
            port = service.getListsSoap();
            ((BindingProvider) port).getRequestContext()
                  .put(BindingProvider.USERNAME_PROPERTY, userName);
            ((BindingProvider) port).getRequestContext()
                  .put(BindingProvider.PASSWORD_PROPERTY, password);
        } else {
            throw new Exception("Fail: Authentication.");
        }
        return port;
    }

여기서 혹시 Authentication failure 등의 에러가 발생한다면, IIS서버 Authentication이 필요합니다.
IIS서버의 Authentication Type이 Basic과 NTLM 두 가지 모두를 지원한다고 하는데 자세한건 패스.
아래 방법은 NTLM Type으로 로그인 하는 방법입니다.

1
2
3
4
5
6
7
8
9
10
public static void NTLMAuth(final String userName, final String password) {
        if (userName != null && password != null) {
            Authenticator.setDefault(new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(userName, password.toCharArray());
                }
            });
        }
    }


5. Sharepoint list 읽기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void readSharePointList(ListsSoap port, String listName, ArrayList<string> listColumnNames, String rowLimit) throws Exception {
        if (port != null && listName != null && listColumnNames != null && rowLimit != null) {
            try {
                String viewName = "";
                GetListItems.ViewFields viewFields = null;
                GetListItems.Query query = null;
                GetListItems.QueryOptions queryOptions = null;
                String webID = "";
                 
                GetListItemsResponse.GetListItemsResult result =
                    port.getListItems(listName, viewName, query, viewFields,
                          rowLimit, queryOptions, webID);
                Object listResult = result.getContent().get(0);
                System.out.print(listResult);
            } catch (Exception ex) {
                throw new Exception("Exception :" + ex.toString() + "\n");
            }
        }
    } </string>
port 가 정상적으로 생성되었다면 관련 method들을 찾아서 call 하기만 하면 됩니다. 자세한건 패스^^

6.Test Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args) {
        String domain = "Domain\\";
        String userName = "userName";
        String password = "Password";
         
          
        httpService.NTLMAuth(domain+userName, password);
         
        try {
            ArrayList<string> listColumnNames = new ArrayList<string>();
            listColumnNames.add("Title");
            listColumnNames.add("Comments");
             
            ListsSoap port = sharepointService.Authentication(domain+userName, password);
            sharepointService.readSharePointList(port, "Issue Tracking", listColumnNames, "100");
        } catch (Exception e) {
            e.printStackTrace();
        }
    } </string></string>

여기까지 문제 없이 오셨다면 나머지는 혼자서 충분히 하실수 있으리라 생각합니다.


출처: http://xtech.tistory.com/entry/Sharepoint-%EB%82%B4%EC%9A%A9-%EC%9D%BD%EA%B8%B0-with-Java-Tutorial

Posted by 애바른2
, |

java에서 클래스 명, 라인 번호 찍기.


java에서 php의 __FILE__ __LINE__과 유사한 기능을 구현하는 방법!!!



String a = "hahaha";


System.out.println("===========디버깅 시작했다~================");

System.out.print("file:" + (new Throwable()).getStackTrace()[0].getClassName() + "  line");

System.out.println((new Throwable()).getStackTrace()[0].getLineNumber());

System.out.println(a);

System.out.println("===========디버깅 끝났다~================");




eclipse의 경우 템플릿을 지정해놓으면 더 쉽게 할 수 있다.


도구->환경설정->Java->편집기->템플리트


새로작성


이름: dprt

컨텍스트: java

자동삽입에 체크

설명: 디버깅용 프린트

패턴:

//* debugging~~ ${date} ${time}

System.out.println("===========디버깅 시작했다~================");

System.out.println("time:" + new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date()));

System.out.print(new Throwable().getStackTrace()[0].getClassName() +"." + new Throwable().getStackTrace()[0].getMethodName() + "()" );

System.out.println("  line: " + new Throwable().getStackTrace()[0].getLineNumber());

System.out.println(${cursor});

System.out.println("===========디버깅 끝났다~================");

// the end of debuuging.. */


요렇게 넣고 확인하면..


java 코드에서 "dprt"라고 치고 ctrl+space 치면 위의 구문들이 찍힌다. 디버깅용으로 굉장히 편하다.


log4j 써도 된다~


출처:http://iilii.egloos.com/2856745

Posted by 애바른2
, |



httpd.conf 파일이나, .htaccess 파일을 이용해,

ErrorDocument command 로 오류 처리를 할 수 있다.

'ErrorDocument 404 /404.html'

만약, /404.html 은 동작안하고, http://도메인/404.html 은 동작할경우, 
404.html 파일 용량이 512k가 넘도록 만들어야 한다.

안그러면 성의없는 답변으로 explore 자체에서 무시해 버린다.

이 오류로 한참 찾았음....

Posted by 애바른2
, |

1. 케스팅 문제

  reinstance_cast, const_cast, 등 2가지가 더 있다. 찾아라~

2. vector 와 list 의 차이 그리고 당신이라면 어떤 경우에 어떤 자료형을 사용 할 것인가.

3. map과 hash map 의 차이와 어떤 경우에 어떤 자료형?

4. 너라면 게임 서버 설계를 어찌 할 것인가?, 그리고 왜???

5. 사용해본 패턴들과 그 패턴의 설명 (난 preactor 패턴이랑 singleton 말 했음. 각자 패턴 1~2개 설명 해봐~)

6. TCP/UDP 차이

7. DataBase 사용 여부와 DB에 어떤 방법을 접근했는지.

8. class와 struct의 차이

9. 오버로딩, 오버라이딩의 차이

10. 상속과 포함의 차이와 언제 어떻게 사용 할 것인가.

11. 설계를 하고 코딩을 하는가?

12. 내 서버 설명.


출처) http://cafe.naver.com/networkach.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=116


Posted by 애바른2
, |

정규표현식 - 기초

개발 / 2009. 11. 18. 15:16
항상 쓸때마다 간단한거 같으면서 헤깔리는게 정규표현식이다.

주의사항 몇개만 알아보자.


1. 앞에붙는 표현
----------------------------------
\   특수문자앞에붙이는거
^    문자열의시작
*   0번이상반복
+   1번이상반복

ex)  /^A/    A로시작하는 문자


2. 뒤에붙는 표현
----------------------------------
$   문자열의 마지막
?   0또는1번
.    첫라인제외한모든글자

ex) /t$/    t로끝나는 문자


앞에붙이는표현과,뒤에붙이는 표현에 주의를 하면 문법적 오류를 막을수있으니 필히 명심할것!!!


ex) 대괄호내부와 외부 구분하기
[xxxx,xxxx,xxxx,xxxx] xxx,xxx,xxx,xxx,xxx,xxx ....
/^([\[].+\]) (.+)/




Posted by 애바른2
, |

일부 호스팅의 경우, 이미지 리사이즈할때 오류가 발생하는 경우가 발생,

난, imagecreatefromjpeg 함수 호출시, 이미지의 사이즈가 큰 경우 글이 저장이 안되거나, 리스트가

깨지는 형상이 발생하였음.

php.ini 파일에서 memory_limit 설정 용량을 디폴트 8M 에서 그 이상으로 변경해 주면 해결되나,

호스팅 받는 입장이다보니, 다른방법을 찾게된다..

나의경우,,,


 XE루트/classes/file/FileHandler.class.php 에

401 ~ 425 라인부근이 switch~ gif,jpeg,png...등 imagecreatefromXXX 함수분기하는 부분이다.

즉 switch 함수 시작 윗 라인에..

ex)
-----------------------------------------------------
....
...
@imagefilledrectangle(........

ini_set('memory_limit',-1);          

// 원본 이미지의 타입으로 임시 ....
switch($type) {
   case 'gif'....
.....
....

-----------------------------------------------------

ini_set 함수를 선언하여 해결함^^ 이제 아주 잘됨^^
Posted by 애바른2
, |

* 내부에 유선공유기를 사용중일경우, 같은 IP대역대에 무선공유기를 사용하고 싶을때가 있음.
  즉, 인터넷만 하면 전혀 문제가 없지만, 네트워크 공유등에서는 문제 발생함.


* 세팅방법

1. 유선공유기가 설치되어있고, IP대역은 192.168.0.1 ~ 192.168.0.255 일경우(예제)
2. 무선공유기+PC를 연결후, 무선공유기 설정화면에 접속
   (ex: 192.168.123.254 070공유기예제)

 => 내부IP주소를  192.168.123.254  => 192.168.0.254 등으로 변경,즉 유선공유기 C클래스 IP대역으로 변경
 => DHCP설정에 동적IP주소 범위를 192.168.0.200 ~ 192.168.0.250 등으로 변경
    ( C클래스만 맞추고 0~255내로 아무거나 하면됨,  나는 혹시나 하여, 200번이상은 무선으로 구분하려고 설정함!!)

 => 공유기 모드를 '스위치' 모드로 변경


* 연결주의 사항


 1. 유선공유기 <-> 무선공유기의 PC단자에 연결 (인터넷단자에 연결하면 동작안함!!!)

 위처럼만 하면 같은대역대의 무선을 사용가능하다..
 
추가로 무선 보안을 위해 WEP 암호등을 설정하고 사용하길 권장합니다^^

  
가장 헤맸던 부분이 PC단자에 연결하는 것입니다. 참고하세요!
Posted by 애바른2
, |

    1 <script language="javascript">

    2 <!--

    3 function resizeImg(imgObj) {

    4     // 이미지 별도 로딩으로 원래 사이즈 추출

    5     var maxHight=265;  // 최대 이미지 사이즈

    6     var maxWidth=320;  // 최대 이미지 사이즈

    7     var imgOriginal = new Image();

    8     imgOriginal.src = imgObj.src;

    9     // 가로와 세로 중 어느걸 기준으로 줄일지 결정

   10     if(imgOriginal.width >= maxWidth && imgOriginal.height >= maxHight ){

   11         var baseAxis;

   12         if ( (imgOriginal.width / maxWidth) > (imgOriginal.height / maxHight) ){

   13             baseAxis = 'width';

   14         }else{

   15             baseAxis = 'height';

   16         }

   17 

   18         // 결정된 기준을 바탕으로 나머지 길이를 리사이징

   19         if (baseAxis == 'width') { 

   20             imgObj.height = Math.round(imgOriginal.height *(maxWidth / imgOriginal.width));

   21             imgObj.width = Math.round(imgOriginal.width * (imgObj.height / imgOriginal.height));  

   22         }else{ // baseAxis == 'height' 

   23             imgObj.width = Math.round(imgOriginal.width * (maxHight / imgOriginal.height));

   24             imgObj.height = Math.round(imgOriginal.height *(imgObj.width / imgOriginal.width));

   25         }   

   26 

   27     }else if(imgOriginal.width >= maxWidth && imgOriginal.height < maxHight ){ 

   28         imgObj.width = maxWidth;

   29         imgObj.height = Math.round(imgOriginal.height *(maxWidth / imgOriginal.width)); 

   30 

   31     }else if(imgOriginal.width < maxWidth && imgOriginal.height >= maxHight ){

   32         imgObj.width = Math.round(imgOriginal.width * (maxHight / imgOriginal.height));       

   33         imgObj.height = maxHight; 

   34 

   35     }else{

   36         imgObj.height=imgOriginal.height;

   37         imgObj.width=imgOriginal.width;

   38     }

   39 }

   40 //-->

   41 </script>

   42 

   43 <table width="100%" border="0" cellspacing="1" cellpadding="0" bgcolor="#DDDDDD">

   44     <tr>

   45         <td height="310" bgcolor="#FFFFFF" align="center">

   46             <img src="이미지 경로" id="bg" name="imgsrc" onload="resizeImg(this);"></td>

   47     </tr>

   48 </table>

 

Posted by 애바른2
, |