자바·JSP2011. 5. 16. 16:07


Eclipse에서 작업하다보면 Project Explorer 상에 폴더나 파일 뒤에 파일명 + 리비전 번호 (ex: test.jsp 12345 )로 표시가 됩니다.
작업을 하다보면 내가 언제 작업을 했고, 누가 커밋을 했는지에 대한 정보가 필요할 때가 있습니다.
보통은 History perspective나 파일을 직접 열어서 확인을 하는데, Text Decorations 를 수정해 주시면
원하시는 정보가 파일명 뒤에 나오게 하실 수 있습니다. (ex: test.jsp 12345 2008-01-01 redrails )

우선 Window > Preferences에서 decoration으로 검색하시거나, Team > SVN > Lable Decorations 로 찾으신 뒤,

두번째 Tab Text Decorations를 선택합니다.

그리고 Format 부분에 File, Folder, Project 부분에서 보여질 부분을 선택하시면 됩니다.

{date}는 최종 수정 날짜이고, {author}는 마지막으로 커밋한 사람입니다.
그 외 필요하신 부분이 있으면 선택해 주시면 됩니다.
밑에 Preview 에서 바뀐 것들을 확인해 보실 수 있습니다.
그리고 Outgoing flag나 Added flag 부분의 문자열도 바꾸실 수 있습니다.


Posted by 미랭군
웹어플리케이션서버2011. 5. 16. 13:50


X11이 없는 리눅스 콘솔에서 발생하는 문제이기 때문에 간단히 java 실행시 headless 모드로 구동하면 된다.

웹서버 구동시 catalina.sh 파일에

CATALINA_OPTS="$CATALINA_OPTS -Djava.awt.headless=true"

라는 옵션을 추가한 후 재구동하면 해결 된다.



Posted by 미랭군

flex4에선 swf를 감싸는 html 템플릿 형식이 약간 변경되었다.

아래와 붉은 색과 같이 사용하면 된다.

  <script type="text/javascript">
          
            var swfVersionStr = "10.0.1";
            var xiSwfUrlStr = "playerProductInstall.swf";
            var flashvars = {};

            flashvars.type = "타입명";
            flashvars.name = "이름";

            var params = {};
            params.quality = "high";
            params.bgcolor = "#ffffff";
            params.allowscriptaccess = "sameDomain";
            params.allowfullscreen = "true";
            var attributes = {};
            attributes.id = "MKBSDashboard";
            attributes.name = "MKBSDashboard";
            attributes.align = "middle";
            swfobject.embedSWF(
                "MKBSDashboard.swf", "flashContent",
                "100%", "100%",
                swfVersionStr, xiSwfUrlStr,
                flashvars, params, attributes);
   <!-- JavaScript enabled so display the flashContent div in case it is not replaced with a swf object. -->
   swfobject.createCSS("#flashContent", "display:block;text-align:left;");
  </script>


Flex Application에선 필시 붉은 색 표시와 같이 creationComplete 이벤트 발생 후에 사용해야 한다.

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx"
      minWidth="955" minHeight="600"
      preinitialize="onPreinitialize()"
      creationComplete="onCreationComplete()"

   private function onCreationComplete():void
   {
    trace("파라미터", parameters.type as String);
   }

  ]]>
 </fx:Script> 
</s:Application>

'플렉스·플래시·액션스크립트3' 카테고리의 다른 글

null check에 대한 고찰..  (0) 2012.01.04
[Inspectable] 메타 태그 사용하기  (0) 2011.11.11
addEventListener 사용시 주의점  (0) 2011.05.04
AS3 KeyCode Table  (0) 2011.04.30
[FLEX] 드래그 기초  (0) 2010.11.29
Posted by 미랭군
웹어플리케이션서버2011. 5. 11. 13:21

tomcat6를 처음 설치하면(압축풀면)  webapps 폴더 안에 웹페이지에서 디플로이를 관리할 수 있는

host-manager, manager 등이 디폴트로 설치되어 있다. 하지만 이것은 보안적인 측면에서 위배되므로

보통 다 지우는 게 좋다.

하지만 이것을 그냥 지우게 되면

Error Message

심각: Error starting static Resources
java.lang.IllegalArgumentException: Document base /home/msp_solution/web/tomcat/webapps/host-manager does not exist or is not a readable directory

이와 같은 에러를 만나게 된다.

Solution

conf\Catalina\localhost 밑에 context명.xml으로 생성하면, tomcat은 \webapps\context를 docBase 경로로 판단하고 찾는다. 그래서 서버 구동시 위와 같은 에러를 발생시킨다.
아래 xml들을 찾아서 삭제해주면 에러는 발생하지 않는다.

conf\Catalina\localhost\host-manager.xml
conf\Catalina\localhost\manager.xml


Posted by 미랭군

public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void

 

마지막의 weakRefence가 true이면 레퍼런스 오브젝트가 없어지면 자동으로 이벤트 리스너가 메모리에서 해제된다. 하지만 strong즉 false(default)일 경우 강제로 remove해주지 않으면 메모리를 차지 하고 있는다.


Posted by 미랭군

Tomcat 구동 시에 발생하는 에러!!(항상은 아니고, 가끔;)

ioexception while loading persisted sessions java.io.eofexception 
톰캣을 종료할 때 세션을 저장해 두었다가 리스타트 시 저장된 세션을 복구 할때 실패할 경우 발생하는 에러이다.
 

톰캣은 persist session을 저장 할 수 있다고 한다. 
persist session
은 톰캣을 shutdown, restart 할때 생성이 되고, start는 삭제된다고 한다.
그런데 이러한 작업을 실패했을 때, java.io.EOFException이 발생한다는 것이다.


또한, JSP 파일의 파일명의 대소문자를 변경했는데 변경 전 파일을 참조하여 404 에러가 발생하는 경우도 이 경우이다.
예를 들어, 최초 파일 생성을 Test.jsp 로 생성했다가 test.jsp 로 변경하였는데, 실제 접속 시 기존 파일(Test.jsp)을 참조하여 클래스를 찾을 수 없다는 NoClassDefFoundError 에러가 발생할 경우에도 아래와 같이 대처하면 된다.)


해결 방법
1. Tomcat work에 있는 session.ser 파일 삭제 (ser는 SERIALIZED OBJECT FILE )

    이클립스에서 구동시: 
    - workspce 폴더\.metadata\.plugins  \org.eclipse.wst.server.core\tmp0\work\Catalina\localhost

또는, 
2. Context.xml 파일에  <Manager className="org.apache.catalina.session.StandardManager" pathname=""/> 
    추가 해주기 
 
Posted by 미랭군

기능키 1 (상단)

숫자, 기호

알파벳

 기능키 2

우측 숫자판


ESC=27

F1=112
F2=113
F3=114
F4=115
F5=116
F6=117
F7=118
F8=119
F9=120
F10=121
F11=122
F12=123

CAPSLOOK=20
SCROLLLOCK=145
PAUSEBREAK=19

0=48
1=49
2=50
3=51
4=52
5=53
6=54
7=55
8=56
9=57
= =187
- =189
` =192
\ =220

백 스패이스=8

대소문자는 구별되지
않으나,
[한/영] 전환에서
한글로 되어 있으면
229로만 입력됩니다.

A=65
B=66
C=67
D=68
E=69
F=70
G=71
H=72
I=73
J=74
K=75
L=76
M=77
N=78
O=79
P=80
Q=81
R=82
S=83
T=84
U=85
V=86
W=87
X=88
Y=89
Z=90

PAGEUP=33
PAGEDN=34
END=35
HOME=36
INSERT=45
DELETE=46

TAB=9
ENTER=13
SHIFT=16
CTRL=17
ALT=18
SPACE=32

← =37
↑ =38
→ =39
↓ =40

한/영=21
한자=25
윈도우키(좌)=91
윈도우키(우)=92
기능키=93

NUMLOCK=144

0 = 96
1 = 97
2 = 98
3 = 99
4 = 100
5 = 101
6
= 102
7 = 103
8 = 104
9 = 105
. = 110
/ = 111
* = 106
+ = 107
- = 109

Posted by 미랭군
자바·JSP2011. 4. 18. 20:29

 public String callService(DflCallServiceParam param)
 throws InstantiationException, IllegalAccessException, ClassNotFoundException, InvocationTargetException, RemoteException, NoSuchMethodException {
    
  UiServiceImpl obj = new UiServiceImpl();
  String result = "";
  int mc;
  
  Class oClass = obj.getClass();
     Method[] methods = oClass.getDeclaredMethods();
    
        for(int i=0; i < methods.length; i++)
        {
         if(param.getMid().equals(methods[i].getName()));
         {
          mc = i;
         }
        }
       
        Method method = oClass.getDeclaredMethod(param.getMid(), new Class[]{new String().getClass()});
        Ret ret = (Ret)method.invoke(obj, new Object[]{new String("aaa")});

  return result;
 }

Posted by 미랭군
카테고리 없음2011. 2. 15. 11:12

ACL (Access Control List) ; 접근제어목록

ACL[에이씨엘]은 개개의 사용자들이 디렉토리나 파일과 같은 특정 시스템 개체에 접근할 수 있는 권한을 컴퓨터의 운영체계에 알리기 위해 설정해 놓은 표라고 할 수 있다. 각 개체는 접근제어목록을 식별할 수 있는 보안 속성을 가지며, 그 목록은 접근권한을 가진 각 시스템 사용자들을 위한 엔트리를 가진다. 가장 일반적인 권한은 1개의 파일이나 또는 한 개의 디렉토리 안에 있는 모든 파일들을 읽을 수 있고(Read), 기록할 수 있으며(Write), 그리고 만약 그것이 실행가능한 파일이나 프로그램인 경우라면 실행시킬 수 있는(Execute) 권한 등을 포함한다.

ACL을 사용하는 대표적인 운영체계들로는, 윈도우NT, 노벨 네트웨어, 디지털의 OpenVMS, 그리고 유닉스 기반의 시스템들을 들 수 있지만, 각 운영체계마다 이러한 ACL은 각각 다르게 구현된다. 윈도우NT에서 ACL은 각 시스템 개체로 구성되어 있다.

각 ACL은 사용자의 이름이나 사용자 그룹으로 이루어지는 하나 또는 그 이상의 접근통제엔트리(ACE)를 가진다. 사용자는 프로그래머, 테스터 등과 같이 그 역할을 지칭하는 이름이 될 수도 있다. 이렇게, 사용자들이나 그룹 또는 각자의 역할에 따라 액세스 마스크(access mask)라고 불리우는 비트 스트링에 접근권한이 적히게 있다. 일반적으로 시스템관리자나 해당 개체의 소유자가 그 개체에 대한 ACL을 생성한다.

한 예로서, 한명은 프로그래머, 다른 한명은 프로그램 테스터, 그리고 세 번째는 시스템 그 자체로 3명의 사용자를 가지는 운영체계를 가정해 보자. 이때, 주어진 프로그램 개체에 대한 ACL은 다음과 같이 될수 있다.

 
프로그래머
테 스 터
시 스 템 read
read write execute
execute
execute

Posted by 미랭군

package {

  import flash.display.Sprite;
  import flash.events.Event;
  import flash.events.MouseEvent;
  import flash.text.TextField; 

  public class AnagramDragDrop extends Sprite {
    private var dragTarget:Sprite;

    public function AnagramDragDrop() {
      var board:Sprite = new Sprite();
      var letters:Array = new Array("d","i","r","t","y","r","o","o","m")
      var l:String;
      var xPos:uint = 50
      var yPos:uint = 100
      for each (l in letters) {
        var tile:Sprite = new Sprite();
        tile = createLetterTile(l as String) // size, color yellow
        tile.x = xPos;
        tile.y = yPos;
        xPos += 50;
        board.addChild(tile);
        tile.addEventListener(MouseEvent.MOUSE_DOWN, dragStarter, false);
        tile.addEventListener(MouseEvent.MOUSE_UP, dragStopper);
      }
      addChild(board)

      var instructions:TextField = new TextField();
      instructions.text = "Re-order the letters to form another word."
      instructions.x = 20
      instructions.y = 20
      instructions.width = 300;
      addChild(instructions)

    }

    private function dragStarter(event:MouseEvent):void {
      if (event.target is Sprite) {
        dragTarget = event.target as Sprite;
        dragTarget.startDrag();
      }
    }

    private function dragStopper(event:MouseEvent):void {
      dragTarget.stopDrag();
    }
       
    private function createLetterTile(txt:String):Sprite {
      var s:Sprite = new Sprite();
      var letter:TextField = new TextField();
      var tileBackColor:uint = 0xDBD9A6;
      var tileShadowColor:uint = 0x676420;
      var tileBorderColor:uint = 0x000000;
     
      s.graphics.beginFill(tileShadowColor);
      s.graphics.drawRect(-2, 2, 40, 40);
      s.graphics.endFill();
      s.graphics.beginFill(tileBackColor);
      s.graphics.drawRect(0, 0, 40, 40);
      s.graphics.endFill();
      s.graphics.lineStyle(1, tileBorderColor, 100);
      s.graphics.drawRect(0, 0, 40, 40);
   
      letter.text = txt
      letter.selectable = false;
      letter.mouseEnabled = false;
      letter.x = 14
      letter.y = 14
      letter.width = 14
      letter.height = 16
      s.addChild(letter)
 
      return s;
    }
  }
}

Posted by 미랭군