TortoiseCVS 사용 시 Disk IO 성능 향상


지금까진 소스 버전관리를위한 CVS(Concurrent Versions System) 클라이언트로 WinCVS 나 Netbeans에
내장된 CVS를 사용하고 있었습니다.

이번 프로젝트에선 몇몇 이유로 TortoiseCVS 를 사용하게 되었는데요..
윈도우즈 쉘에 통합되어 마우스 오른쪽 클릭의 컨택스트 메뉴에서 CVS클라이언트 기능을 쉽고 직관적으로
사용 할 수 있어서 편하더군요.
사용자 삽입 이미지

파일이 생성되거나 수정될 때 CVS가 관리하는 파일/폴더라면 아이콘으로 상태를 표시해 주는 기능이 있는데
이를 확인하기위해 지속적인 Disk IO를 발생(비록 PC의 성능 저하가 미미하다곤 하지만..) 한다고 하네요..

이를 줄이는 방법이 있는데요..
TortoiseCVS 의 설정 메뉴중 고급탭을 선택하면
사용자 삽입 이미지
사용자 삽입 이미지

위와같이 '차단할 폴더' '포함할 폴더' 를 기술할 수 있는 입력상자가 있습니다.
여기에 TortoiseCVS 가 확인 하지 않아도 되는 폴더와 확인할 폴더를 세미콜론( ; )을 구분자로 죽 적어 주시면 됩니다.
2007/10/30 13:20 2007/10/30 13:20
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

프린터 드라이버 용어 : PCL 3 및 PCL 5/6 기능 및 차이점

    PCL이란?

    PCL(Printer Command Language) 언어는 시스템과 프린터 간에 최고 수준의 통신을 제공합니다. 호스트 시스템, 장치 드라이버, 입/출력 인터페이스 및 네트워크 통신으로부터 독립적으로 기능합니다. 이것은 HP 프린터를 공통으로 제어하기 위한 것입니다. PCL 언어가 제공하는 기능 호환성은 응용 프로그램 및 드라이버 소프트웨어에 들이는 비용을 줄여 주고 새로운 기능 및 기술을 사용하는 방법을 제공합니다.Hewlett-Packard에서 프린터 기능에 대한 액세스를 표준화하기 위해 PCL 프린터 언어를 개발했습니다.

    PS란?

    포스트스크립트(POSTSCRIPT) 언어는 강력한 그래픽 기능을 가진 간단한 해석 프로그래밍 언어입니다. 이 언어는 Adobe 이미지 모델에 따라 텍스트 모양, 그래픽 도형 및 인쇄되거나 표시된 페이지의 견본 이미지를 설명하는 데 주로 사용됩니다. 이 언어의 프로그램은 구성 시스템에서 인쇄 시스템으로 문서 설명을 전달하거나 디스플레이 상의 텍스트 및 그래픽 모양을 제어할 수 있습니다. 설명은 상위 수준이며 장치 독립적입니다.
컴퓨터에서 인쇄 - 일반적인 인쇄 경로

Microsoft PowerPoint와 같은 Windows 응용 프로그램에서 인쇄하는 경우 Windows 응용 프로그램은 인쇄 작업을 EMF 파일로 출력합니다. 아래 그림을 참조하십시오. EMF(Enhanced Meta File) 형식은 Microsoft Windows에 의해 정의된 이미지 설명 형식입니다. 서버의 프린터 드라이버는 EMF 파일을 대상 프린터에 알맞은 원시 데이터 형식으로 변환합니다. Windows 인쇄 시스템에서 원시 데이터는 PCL5/6 또는 PCL3Plus와 같이 프린터가 이해하는 언어로 프린터에 전송된 데이터로 정의됩니다.

언어의 차이는 원시 데이터 파일의 결과에 있습니다. 원시 데이터 '파일'의 크기는 데이터를 프린터에 보내는 데 사용되는 입/출력 대역폭의 크기를 나타내므로 중요합니다. 그림 2를 참조하십시오.

그림1:데이터 흐름

향상된 PCL 버전은 원시 파일의 크기를 줄임으로써 성능을 향상시켜 줍니다. 인쇄 품질 및 성능은 이미징 솔루션에 대한 고객 만족을 이끌어 내는 데 중요합니다. 이 문서는 여러 PCL 버전들을 비교하고, 현재 향상된 PCL 솔루션인 PCL 6 솔루션에 대해 상세히 설명합니다.

PCL 5/6과 PCL 3의 차이점

 

PCL 5/6

PCL 3

1

표준 메모리에서 복잡한 그래픽 이미지를 인쇄합니다.

특정 그래픽 데이터를 인쇄하려면 프린터에는 PCL3GUI 또는 High Performance Architecture와 같이 이미지 처리가 빠른 프린터 언어가 필요합니다.

2

이미지를 설명하는 데 사용되는 개체 기반 언어. 개체 기반 언어는 정사각형, 직사각형, 선, 원호, 원 등의 여러 개체들을 정의할 수 있습니다. 장점: 이러한 개체의 이미지는 PCL3GUI에서 사용된 픽셀 설명보다 적은 데이터를 사용하여 설명할 수 있습니다.

픽셀로 이미지를 설명하는 픽셀 기반 프린터 언어. 정사각형, 직사각형 등의 동일한 개체에 더 많은 데이터가 필요합니다. 비트맵 및 다른 복잡한 그림 형식의 개체는 개체 기반 언어를 사용하지만, 이 개체들은 복잡성 때문에 여전히 픽셀로 설명됩니다.

3

PCL 5/6은 스케일 가능 글꼴 및 다운로드 가능한 글꼴을 지원합니다. 또한 GL2 드라이버에 비해 이미지 래스터 기능이 더 뛰어납니다.

스케일 가능 글꼴 및 다운로드 가능한 글꼴을 지원하지 않습니다.

4

EMF에서 PCL5/6 개체 데이터로의 변환이 적습니다. 이것은 필요한 CPU 시간을 줄여 줍니다. 사용자들은 인쇄 작업을 시작한 후에 컴퓨터의 모든 리소스를 보다 빠르게 사용할 수 있습니다.

대부분의 EMF 개체 및 이미지는 EMF를 PCL3GUI 픽셀 데이터로 변환하는 데 보다 큰 CPU 대역폭이 필요합니다.

5

PCL5/6 프린터는 컴퓨터 시스템 대신 프린터에서 폰트/이미지를 래스터할 때 더 많은 프린터 메모리가 필요하고, 때때로 더 많은 프린터 하드 디스크가 필요합니다.

일반적으로 PCL3GUI 드라이버는 원시 데이터 파일을 생성할 때 PCL5/6 드라이버보다 컴퓨터에서 더 많은 메모리를 사용합니다. PCL3GUI 프린터는 초기 구매 비용이 PCL5/6 프린터에 비해 적게 드는 경제적인 종합 인쇄 솔루션입니다. 이것은 메모리 RAM과 처리 능력(processing power)을 적게 사용하기 때문입니다.

6

네트워크 환경에서 인쇄 서버는 PCL5/6 프린터를 PCL3GUI 프린터보다 효과적으로 제어할 수 있습니다. 일반적으로, PCL5/6 프린터는 인쇄 속도가 더 빠르므로 네트워크 지원 프린터에 사용됩니다.

클라이언트에서 서버로 인쇄 작업을 보내 서버에 포맷하는 클라이언트/서버 사용 모델을 사용하는 경우, 동일한 서버를 사용하여 네트워크에서 일정 수의 개인용 프린터를 공유하는 사용자가 많아질수록 성능은 더욱 느려집니다.

PCL 6 기능

PCL 6은 Hewlett-Packard PCL 언어 및 관련 기술의 최신 버전입니다. PCL 6의 세 가지 주요 구성 요소는 다음과 같습니다.

  • 첫 번째 구성 요소는 향상된 PCL 6(PCL 6 Enhance)으로서 Microsoft Windows 및 OS/2와 같은 그래픽 사용자 인터페이스(GUI)에서 인쇄하는 데 최적화되었습니다.

  • 두 번째 구성 요소는 PCL 6 표준(PCL 6 Standard)으로서 과거 HP LaserJet 프린터 제품과 완벽하게 호환됩니다.

  • 세 번째 구성 요소는 글꼴 합성(Font Synthesis)으로서 스케일 가능 글꼴을 제공합니다.

PCL6 드라이버는 WYSIWYG(What You See Is What You Get) 기능과 표준 드라이버에 대한 응용 프로그램 지원 성능이 향상되었습니다. PCL XL은 HP가 개발한 새 페이지 설명 언어로서 PCL 6의 일부분으로 GDI에 보다 가까우며, 많은 응용 프로그램에서 사용됩니다. 드라이버에서 언어 해석이 적게 발생하는데, 이것은 WYSIWYG 기능이 증가되고, 향상된 드라이버에 의해 구현된 이스케이프 시퀀스를 지원하는 응용 프로그램의 성능이 향상되었음을 의미합니다.

그래픽 페이지를 설명하는 데 필요한 명령 및 데이터의 수가 감소됩니다. 이로써 사용자가 응용 프로그램에 더 빨리 돌아올 수 있고, 표준 메모리에서 복잡한 그래픽 페이지를 인쇄할 수 있습니다. 프린터의 그래픽 명령을 GUI의 그래픽 인터페이스에 일치시킴으로써 사용자는 모든 페이지에서 진정한 WYSIWYG를 경험할 수 있습니다.

    객체 지향 프린터 언어

    PCL 6의 새 아키텍처는 객체 지향 명령을 사용하여 프린터와 통신합니다. 객체 지향 명령은 프린터가 페이지에 무엇을 인쇄할 것인지 알려 주는 데 사용되는 작고 간결한 데이터 조각들입니다. 코드 시퀀스의 긴 문자열 대신 객체 지향 명령을 사용하면 그래픽 인쇄 성능이 현저히 향상되고 응용 프로그램으로 빨리 돌아갈 수 있으며 네트워크 트래픽이 감소합니다.

    향상된 성능

    PCL 6 명령은 Microsoft Windows GDI(graphical direct interface) 명령과 거의 일치하도록 HP에 의해 설계되었습니다. 그 결과 사용자는 향상된 성능과 더 좋은 인쇄 품질을 얻을 수 있습니다. 예를 들어, PCL 6를 사용하면 프린터 드라이버가 이전보다 빨리 GDI를 PCL 6으로 해석할 수 있기 때문에 사용자가 PC 및 응용 프로그램의 제어권을 더 빨리 되찾을 수 있습니다. PCL 6은 이전 버전보다 더 작고 간결한 명령을 사용하므로 네트워크 작업 처리량이 향상됩니다. PCL 6은 특히 그래픽에 맞게 설계되었기 때문에 복잡한 그래픽이 빠르게 인쇄되고, 회색조 이미지는 객체로 처리되며 매끄럽고 고르게 보이며, 그래픽 및 스캔된 이미지의 인쇄 품질이 우수합니다. 또한 PCL 6과 GDI의 일관된 디자인은 WYSIWYG 인쇄를 더욱 향상시켜 줍니다.

    특정 네트워크 구성에서는 PCL 6가 작은 파일 크기를 생성하지만, 오늘날 호스트 프로세서 및 네트워크 속도 향상으로 작은 파일 크기의 성능상 이점이 상쇄되었습니다.
2007/10/29 21:26 2007/10/29 21:26
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

노트북, 새로 지급 받다.

회사에서 업무용 노트북을 새로 지급받았습니다.
삼성의 센스 R70 인데요...  3년 넘는 시간 동안 업무의 전장을 함께 했던 ThinkPad 와 헤어질 때가 된 거죠..

역시 시간의 흐름은 대단하다고 할까요.
지금까지 사용하던 TP로도 개발하는데 별반 불편함을 못 느꼈지만 이 녀석을 사용 해 보니 코웃음이 날 정도로
가볍게 TP를 눌러버릴 성능이더군요..

한 때 하드웨어의 성능 하나하나에 관심을 두고 신제품이 나오면 리뷰 하나하나를 꼼꼼히 읽어대던 시절도 있었지만
본격적으로 '일'을 시작한 후론 그런 쪽에 대한 관심은 수그러들었습니다.
컴퓨터란 녀석은 프로그래밍 하는데 이해할 만한 성능만 내주면 별 불만이 없어진 거죠.

이번에 지급받은 R70도 하이엔드 스펙이라고 볼 순 없지만 업무를, 프로그래밍을 하는 데는 전혀 불만이 없을
정도의 성능을 내 주고 있습니다. 만...  
뭔가 만족스럽지 못한 부분은 있게 마련이더군요..

처음 지급받고 OS를 세팅한 후, '화면이 밝고 너무 차가운 것 같은데? 푸른 기운이 좀 심한 게 아닌가?'하는
느낌을 받아 제가 찍은 사진들을 열어봤습니다.
허 ㄱ.. 제가 지금까지 사용하던 노트북이나 모니터와는 너무나 이질감이 느껴지는 화면을 눈앞에 뿌려대고 있지 않겠습니까..
뭐랄까 분명 맑고 깨끗한 느낌은 드는데 너무 부자연스러운 느낌.. 지금껏 사용 해 왔던 다른 디스플레이 장치에 제 눈이
익숙해진 걸 고려하더라도, 지금껏 제가 사진을 잘못 찍고 있었나 하는 생각이 들 정도로, 정도가 심하더군요..

이게 그래픽카드 칩셋영향인지 LCD패널 때문인지는 잘 모르겠지만 어쨌든 색상과 감마값 조절은 불가피해 보입니다.
누구 모니터 캘리브레이터 가지신 분 안계신가요? T.T

2007/10/28 17:46 2007/10/28 17:46
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

WPF (Winsows Presentation Foundation) Application 개발 협업

wpf 어플리케이션 개발 협업도
전통적인 윈도우즈 어플리케이션 개발과 비교해 큰 차이점이라면 디자이너와 개발자 사이에
Integrator 역할이 추가되었다는 것.
관련 자료를 찾아보면 Integrator는 디자인 감각이 있는 senior 개발자가 맡는 것이 적당하다고 한다.

개발자와 디자이너가 서로의 영역을 더 잘 이해할 때 퀄리티 있는 어플리케이션 개발이 가능하다고 할까?
지난 몇 주간 디자이너들과 샘플 프로그램 작업을 하면서 절실히 느꼈던 부분이기도 하다.


2007/10/24 11:21 2007/10/24 11:21
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

터미널서버(Terminal Server)의 포트를 변경하는 방법

기본적으로 터미널 서버와 Windows 2000 / Windows Server 2003 터미널 서비스는 클라이언트 연결에 TCP 포트 3389를 사용합니다.
이 값은 변경하지 않는 것이 좋지만, 이 포트를 변경해야 할 경우에는 다음 방법을 참고하시면 됩니다.


서버쪽 변경부분

1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
2. "PortNumber" 하위 키를 찾아 값이 (3389)의 16진수 값인 00000D3D인지 확인합니다.
   10진수로 포트 번호를 수정하고 새 값을 저장합니다.

만약 터미널서버에서 특정연결을 만들었다면, 특정연결명의 포트번호도 변경하시면 됩니다.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\연결"PortNumber" 하위 키를 찾아
값이 (3389)의 16진수 값인 00000D3D인지 확인합니다. 10진수로 포트 번호를 수정하고 새 값을 저장합니다.


클라이언트 변경부분

1. 원격데스크톱연결 프로그램에서 127.0.0.1:xxxx 와 같이 접속한다.
2. 커넥션파일을 이용할경우 노트패드에서 "Server Port=3389"를 "Server Port=xxxx"로 변경
3. 웹 ActiveX 클라이언트는
     1. 터미널서비스웹디렉토리\TsWeb 폴더의 Default.htm 파일을 찾습니다.
     2. 메모장이나 다른 텍스트 편집기에서 Default.htm을 엽니다.
     3. "MsRdpClient.AdvancedSettings2"로 시작하는 항목을 찾습니다.
     4. 이러한 항목 뒤에 아래의 행을 추가합니다.
         MsRdpClient.AdvancedSettings2.RDPPort = xxxx

2007/10/23 01:24 2007/10/23 01:24
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

Windows 2003 서버의 터미널서버 접속 하기


작성:
 불나방


윈도우 2003 서버는 설치될 때 기본으로 터미널 서비스를 어플리케이션 모드로 설치를 하는데 이렇게 되면 접속하는 장치당 최초 접속으로 부터 90일간의 사용기간을 주고 이 기간이 지나면 접속이 안되게 된다. 물론 돈을 주고 라이센스를 사야하는 경우가 발생하는 것이다. 라이센스 비용이 만만치 않으므로 서버 관리자만 서버를 리모트로 접속할 경우라면(대부분 이러한 경우일 것이다.) 터미널 서버 설치 모드를 관리자 모드로 바꾸어야 한다.


제어판>시스템>원격


에 들어가서 이 컴퓨터의 원격지원을 허용함을 체그하면 관리자 모드로 전환되고 2개의 관리자 세션은 라이센스 없이 영구히 사용할 수 있다. 접속할 사용자를 원격 사용자 그룹에 추가하는 것도 잊지 말자.


일단 접속이 안되는 상태로 되면 설정을 바꿀수가 없게 되는데 이럴때 IDC로 달려가지는 말고 서버에 접속한 적이 없는 다른 사람컴퓨터로 접속하면 일단 접속이 되므로 이를 이용하여 설정을 바꾸면 된다.

2007/10/23 01:20 2007/10/23 01:20
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

換わりはいくらでもある。


換わりはいくらでもある。

그 이면을 이해한다면 그다지 분하거나 슬픈 말 만은 아닐 것이다.
2007/10/21 22:17 2007/10/21 22:17
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

WPF 어플리케이션 트레이 아이콘으로 실행하기

2007/10/16 22:34

서비 .NET & WPF ,

아래는 WPF로 작성된 윈도우즈 어플리케이션을 트레이 아이콘으로 실행 할 수 있는 코드.

public partial class Window1 : System.Windows.Window
{

    public Window1()
    {
        InitializeComponent();

        System.Windows.Forms.NotifyIcon ni = new System.Windows.Forms.NotifyIcon();
        ni.Icon = new System.Drawing.Icon("Main.ico");
        ni.Visible = true;
        ni.DoubleClick += 
            delegate(object sender, EventArgs args)
            {
                this.Show();
                this.WindowState = WindowState.Normal;
            };
    }

    protected override void OnStateChanged(EventArgs e)
    {
        if (WindowState == WindowState.Minimized)
            this.Hide();

        base.OnStateChanged(e);
    }
}


트레이 아이콘에서 제거 하고 싶으면 NotifyIcon 클래스의 Visible 프로퍼티를 조작한다.
ni.Visible = false;





2007/10/16 22:34 2007/10/16 22:34
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

이은미 :: 어떤 그리움

고향을 떠나 대학 생활을 막 시작하던 시절
동아리방에서 카세트 테잎으로 듣기 시작했던 이은미씨의 음반들.

그 중에 기억에 남는 '어떤 그리움'


2007/10/15 02:52 2007/10/15 02:52
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

가을 빛 속으로...

2007/10/14 22:33

서비 Photo , ,


지난 주말 억새가 한창인 하늘공원을 찾았습니다.
오전까지 꾸물거리던 하늘도 오후 들어 고운 햇살을 내비치며 멋진 날씨를 선사해 주더군요.
풍성한 가을 햇살을 받으며 뽈뽈거리며 돌아다니고 야간엔 불꽃축전까지 관람하는 꽤 스테미너를 요하는
여정이었지만 역시나 따듯했던 햇살의 느낌이나 불꽃의 아름다움을 생각하면 조금 지치는 건
당연한 게 아닐까 하는 생각마저 들 정도였습니다.


Pastel Ocean - Happy Birthday 2 Us




















minolta @7, minolta 50mm, 100mm macro, kodak 100UC


사용자 삽입 이미지
2007/10/14 22:33 2007/10/14 22:33
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 가끔 들러보고 갑니다만...모르는게 없으신 분 같습니다.
    *미놀타 @7은 후회가 없었던 기종입니다..다시 잡아보고 싶군요.

  2. fairwinds 님 과찬이세요..
    @7 끝까지 사용하고 싶은 기종이긴 하지만..
    들어가는 필름값이 만만치 않아서 디지털 바디를 장만하고
    싶다는 유혹을 많이 받고 있습니다.

JavaScript Base64 Encode / Decode

// This code was written by Tyler Akins and has been placed in the
// public domain.  It would be nice if you left this header intact.
// Base64 code from Tyler Akins --
http://rumkin.com

var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

function encode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) +
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
  
   return output;
}

function decode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}
function encode64Han(str) {
  return encode64(escape(str))
}
function decode64Han(str) {
  return unescape(decode64(str))
}

2007/10/12 20:47 2007/10/12 20:47
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

JAVA Base64 Encoding / Decoding

2007/10/12 20:44

서비 JAVA ,

//Ok how about this pure Java API solution.
//Yours for free free free, no unintened theft.
//Completely portable per the Java promise.
//This code sets no preferences! The class just extends AbstractPreferences to get access to the put and get and over rides them.
//The super still calls the Base64 to do the encoding and decoding.
//This extension intercepts the encoded/decoded strings and makes them visible.
//TaDa Java API supports, has, allows, does base64 encoding, for the clever anyway.

package yourpackage;
public class YourPreferences extends java.util.prefs.AbstractPreferences {
//keep the key state
    private java.util.Hashtable encodedStore = new java.util.Hashtable();
   
    /** Creates a new instance of YourPreferences*/
    public YourPreferences(java.util.prefs.AbstractPreferences prefs, java.lang.String string) {
 super(prefs, string);
    }
//main acts as a driver i.e. used to test this class not required by this class
    public static void main(java.lang.String[] args ){
 java.util.prefs.AbstractPreferences myprefs = new yourpackage.YourPreferences(null, "");
 
 java.lang.String stringToEncode = "Aladdin:open sesame";
 java.lang.String key = "Aladdin:open sesame";
 java.lang.String key_ = "KEYisNOTtheSAMEasTHEstring";
 try{
     java.lang.String encoded = ((yourpackage.YourPreferences)myprefs).encodeBase64(stringToEncode);
     java.lang.System.out.println("ENCODED STRING TO: " + encoded);
     java.lang.String base64 = (java.lang.String)((yourpackage.YourPreferences)myprefs).encodedStore.get(key);
     java.lang.String decoded = ((yourpackage.YourPreferences)myprefs).decodeBase64("newkey",base64);
     java.lang.System.out.println("DECODED STRING TO: " + decoded);
    
     java.lang.String encoded_ = ((yourpackage.YourPreferences)myprefs).encodeBase64(key_,"ALONGSTRANGESTRINGTHATMAKESNOSENCEATALLBUTCANBEENCODEDANYWAYREGARDLESS");
     java.lang.System.out.println("ENCODED STRING TO: " + encoded_);
     java.lang.String base64_ = (java.lang.String)((yourpackage.YourPreferences)myprefs).encodedStore.get(key_);
     java.lang.String decoded_ = ((yourpackage.YourPreferences)myprefs).decodeBase64(key_,base64_);
     java.lang.System.out.println("DECODED STRING TO: " + decoded_);
     java.lang.System.out.println("\n");
     java.util.Enumeration enum = ((yourpackage.YourPreferences)myprefs).encodedStore.keys();
     java.lang.String enumKey = null;
     while(enum.hasMoreElements()){
  enumKey = (java.lang.String)enum.nextElement();
  java.lang.System.out.print(enumKey);
  java.lang.System.out.println(" : " +((yourpackage.YourPreferences)myprefs).encodedStore.get(enumKey).toString());
     }
 }catch(java.io.UnsupportedEncodingException uee){
     uee.printStackTrace();
 }catch(java.io.IOException ioe){
     ioe.printStackTrace();
 }
    }
    public java.lang.String encodeBase64(java.lang.String key, java.lang.String raw)throws java.io.UnsupportedEncodingException{
 java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
 java.io.PrintWriter pw = new java.io.PrintWriter(
     new java.io.OutputStreamWriter(baos,"UTF8"));
 pw.write(raw.toCharArray());
 pw.flush();//ya know
 byte[] rawUTF8 = baos.toByteArray();
 this.putByteArray(key, rawUTF8);
 
 return (java.lang.String)this.encodedStore.get(key);
    }
    public java.lang.String encodeBase64(java.lang.String raw)throws java.io.UnsupportedEncodingException{
 
 java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
 java.io.PrintWriter pw = new java.io.PrintWriter(
     new java.io.OutputStreamWriter(baos,"UTF8"));
 pw.write(raw.toCharArray());
 pw.flush();//ya know
 byte[] rawUTF8 = baos.toByteArray();
 this.putByteArray(raw, rawUTF8);
 
 return (java.lang.String)this.encodedStore.get(raw);
    }
    public java.lang.String decodeBase64(java.lang.String key, java.lang.String base64String)
    throws java.io.UnsupportedEncodingException, java.io.IOException{
 byte[] def = {(byte)'D',(byte)'E',(byte)'F'};//not used at any point
 this.encodedStore.put(key,base64String);
 char[] platformChars = null;
 byte[] byteResults = null;
 byteResults = this.getByteArray(key, def);
 java.io.InputStreamReader isr = new java.io.InputStreamReader(
     new java.io.ByteArrayInputStream(byteResults),"UTF8");
 platformChars = new char[byteResults.length];
 isr.read(platformChars);
 
 return new java.lang.String(platformChars);
    }
//intercept key lookup and return our own base64 encoded string to super
    public String get(String key, String def) {
 return (java.lang.String)this.encodedStore.get(key);
    }
//intercepts put captures the base64 encoded string and returns it
    public void put(String key, String value){
 this.encodedStore.put(key, value);//save the encoded string
    }
//dummy implementation as AbstractPreferences is extended to get acces to protected
//methods and to overide put(String,String) and get(String,String)
    protected java.util.prefs.AbstractPreferences childSpi(String name) {return null;}
    protected String[] childrenNamesSpi() throws java.util.prefs.BackingStoreException {return null;}
    protected void flushSpi() throws java.util.prefs.BackingStoreException {}
    protected String getSpi(String key) {return null;}
    protected String[] keysSpi() throws java.util.prefs.BackingStoreException {return null;}
    protected void putSpi(String key, String value) {}
    protected void removeNodeSpi() throws java.util.prefs.BackingStoreException {}
    protected void removeSpi(String key) {}
    protected void syncSpi() throws java.util.prefs.BackingStoreException {}
}

2007/10/12 20:44 2007/10/12 20:44
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

갤러리 2.2.3 보안문제 수정 릴리즈 Gallery 2.2.3 Security Fix Release

2007/10/07 11:01

서비 Photo

사용자 삽입 이미지
 지난 8월 29일 갤러리 2.2.3 이 릴리즈 되었습니다.
새로운 기능추가는 없지만 reupload 와 webdav 모듈에서의
심각한 보안문제를 해결 했다고 합니다.

업그래이드버전은 여기에서 다운로드할 수 있습니다.




아래는 2.2.3 릴리즈에대한 원문입니다.

Gallery 2.2.3 is now available for download. This release adds no new features. It fixes critical application security bugs in the WebDAV and Reupload modules. If the WebDAV or Reupload modules are active in your Gallery we strongly recommend that you either disable them, upgrade them via Downloadable Plugins or perform a complete upgrade to version 2.2.3. Thanks go to Merrick Manalastas and Nicklous Roberts for reporting the issues to the Gallery Security team!

Gallery 2.2.3 is a small security upgrade from 2.2.2 and has the same requirements as 2.2.2. If you haven't upgraded to 2.2.x yet, please refer to the release announcement of Gallery 2.2 for highlights of changes and the requirements of the Gallery 2.2 release.

Read on for more details and upgrade instructions...

Is your Gallery installation affected? You can check whether the WebDAV or Reupload module is active on the Site Admin » Plugins page of your Gallery. If these module are not active, you can safely skip Gallery 2.2.3.

Upgrading instructions:
  • Users of Gallery 2.2 or later versions can upgrade the WebDAV and Reupload modules via Downloadable Plugins from the official plugin repository. This is certainly the fastest and the easiest solution.
  • Upgrading is quick and easy, but if you're upgrading from 2.1 or earlier there are a few things you should know first so be sure to scan the upgrading instructions. Upgrading from Gallery 2.2, 2.2.1 or 2.2.2 is even easier since you don't need to replace all your gallery2/ files, but changed files in the specific modules only.
Security vulnerabilities - Gallery 2.2.3 addresses the following security vulnerabilities:
  • Unauthorized renaming of items possible with WebDAV (reported by Merrick Manalastas)
  • Unauthorized modification and retrieval of item properties possible with WebDAV
  • Unauthorized locking and replacing of items possible with WebDAV
  • Unauthorized editing of data file possible via linked items with Reupload and WebDAV (reported by Nicklous Roberts)

Bounties - As part of Gallery's Bounty Program, Merrick Manalastas will receive a bounty of $500 and Nicklous Roberts a bounty of $200 for reporting the security vulnerabilities to the Gallery Security team. Please remember that to receive the full bounty you should report security issues to security@gallery.menalto.com and not make them public at all (not even in the bug tracker) before we had a chance to fix the issue.

2007/10/07 11:01 2007/10/07 11:01
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

WPF (Winsows Presentation Foundation) Class Hierarchy

2007/10/05 23:35

서비 .NET & WPF ,

WPF (Winsows Presentation Foundation) Class Hierarchy

WPF (Winsows Presentation Foundation) Class Hierarchy

Windows Presentation Foundation 의 Class 계층도
2007/10/05 23:35 2007/10/05 23:35
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

엑스테 (Exte: Hair Extensions, エクステ)

엑스테 Exte
소녀의 사체에서 머리카락이....「헤어 익스텐션」
요코하마 컨테이너에서 발견된 많은 양의 머릿카락. 그 안에는 소녀 유체가 묻혀 있었다.
죽었는데도 여전히 머리카락이 자라고 있는 여자에 놀란 사체안치소 관리인 야마자키(오오스기렌)은
그 머리카락으로 헤어익스텐션(가발)을 만들도록 미용실에 나눠줬다.
그리고 그 가발을 쓴 사람이 차례로 죽어가는데....

왜 소녀의 사체에서 그런 저주스런 일이 벌어지는지는 끝까지 밝혀지지 않는 인과관계가 명확하지 않은 공포물.
하지만 소녀의 사체뿐 만이나리 산 사람의 상처,안구,손톱사이에 이르기까지 털이 자라는 모양이 섬뜩해 도무지
맘이 안정되지 않는 영화.

피가 튀는건 싫지만 오싹해지는 공포를 원하는 사람에게는 안성맞춤이다. 소노시온감독 작품.

여주인공은 영화 킬빌에서 철퇴를 휘두르는 연기를 보여준 구리야마 치아키.
카미팬을 연기하는 오오스기렌은 튀는 연기로 째째한 이미지를 벗었다. 이번 작품에서 가장 무서운것은
오오스기의 집착일지도 모른다.


2007/10/05 16:15 2007/10/05 16:15
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다