윈도우를 사용하다가 보면...분명 파일에 대해 사용을 끝냈음에도 불구하고
이전에 사용한 프로그램이나 시스템이 해당 파일에 대한 핸들을 계속 잡고 있어서
파일 수정이나 삭제를 못하는 경우가 종종 발생한다.

이때 Unlocker란 프로그램을 이용하면 쉽게 해당 핸들을 닫을 수 있다.
(http://www.softpedia.com/get/System/System-Miscellaneous/Unlocker.shtml)

설치 화면에서 "오른쪽 탐색기 메뉴 활성화"를 선택하고 설치를 끝내면,
Lock이 걸린 파일에서 오른쪽 클릭을 하면 Unlocker프로그램을 바로 실행시켜 Lock걸린
핸들을 풀수가 있다.

사용자 삽입 이미지

Creative Commons License
Creative Commons License
TAG Unlocker

.NET Framework 2.0 이 설치 된 이후에 IIS가 설치되면 IIS가 인식을 못한 다고 한다...
(왜 그렇지.. -_-)

어쨋뜬.... 이럴 경우

혹시나 모르니깐 Uninstall 해주고
C:\WINDOWS\Microsoft.NET\Framework\v.2.0.50727\aspnet_regiis -u

다시 Install 해주면 오키도키!
C:\WINDOWS\Microsoft.NET\Framework\v.2.0.50727\aspnet_regiis -I

Creative Commons License
Creative Commons License

버튼컨트롤 태그 안에

style="text-decoration:none; color:black;

이렇게 추가를 하면

실제 컨트롤 속성에는 style이 없지만

html 로 렌더링시에 들어가기 때문에 링크표시를 삭제 할 수 있다!!
Creative Commons License
Creative Commons License
TAG ASP.NET
ASP.NET 환경에서 LoadBalancing 기법 시, 또는 개발시 Session 정보를 계속 유지 하기 위해서

State 서버라는 것을 사용 할 수 있다.

State 서버의 서비스를 이용하여 Session 정보를 그 Process에 유지 할 수 있다.

분산된 서버는 해당 State서버에 접속(기본 포트 42424)하여 Session 정보를 유지 할 수 있다.

세팅 방법

1. Web.config 파일에 SessionState항목을 다음과 같이 바꾸어 준다.
    mode는 기본적으로 InProc으로 되어 있다. 이는 WorkProcess안에서 실행된다는 말이다.
    (분산된 환경에서는 당연히 각 분산된 서버 자체 메모리에 각각의 Session 정보가 저장이 되므로
     서로 공유하기가 어렵다.)
사용자 삽입 이미지

2. stateConnectionString을 세팅한다. 이는 StateServer의 ip addr 및 port정보이다.


3. 해당 State Server의 ASP .NET State Service를 동작 시켜 준다.
사용자 삽입 이미지


이로써 끝!! ㅋㅋㅋ


Creative Commons License
Creative Commons License

xstation에 올릴 커널을 컴파일하여 uImage를 생성해야 했는데,

UIMAGE  arch/arm/boot/uImage
"mkimage" command not found - U-Boot images will not be built
 Image arch/arm/boot/uImage is ready

위와 같은 메시지가 나오면서 uImage가 생성이 안되는 것이었다!

분명 제공된 CD에서 mkimage 파일을 /usr/bin에 복사 했는데 오류가 발생했다.

그래서 쉘에서 mkimage를 입력해보았는데 허가 거부됨 이라는 오류메시지가 리턴됐다.

제공된 파일이 잘못된 것인지...결국 인터넷을 뒤지다가 u-Boot를 컴파일하면 mkimage가 같이 생성된다는 것을 알아냈다.

u-Boot가 컴파일된 디렉토리 하위에 보면 tools란 디렉토리가 있는데 그 안에 mkimage가 생성되어있다.

./mkimage로 실행하여보니 허가 거부란 에러메시지가 뜨지 않고 잘 실행된다.

이 파일을 /usr/bin으로 복사 해주면 문제 해결~!!

Creative Commons License
Creative Commons License
방학을 맞아 OS Study를 하게 되면서 인텔 아키텍쳐 매뉴얼을 찾아 볼 기회가 있었는데,
어떤 사람이 online print copy를 신청 한 것을 보고, 나도 따라서 해보았다~ㅎㅎ
order mail보내자 마자 온 답장은 이러하였으니...
---------------------------------------------------------------------------------------------------
Hello,

The new version of the Intel® 64 and IA-32 Architecture Software Developer's Manuals are estimated to be here mid January. I will hold your request until that time and then place your order but do feel free to go to the web site listed and use the manuals in their PDF form http://developer.intel.com/products/processor/manuals/index.htm

Thank you,

Judy Nahler
Intel® Customer Service
Phone: (800) 548-4725
---------------------------------------------------------------------------------------------------
인텔사에서 직접 보내주는 것이 아니라, 메일을 보낸 hibbertgroup에서 직접 보내 주는 것 인듯?
그래서 그냥 기다리기로 했다. 결국 1달이 지난 후
사용자 삽입 이미지

주문이 접수되었다고 메일이 왔다. 물론...shipping 되는데 얼마나 걸릴지는 모르지만 하핫;;;
어쨋든 공짜로 프린트된 아키텍쳐 매뉴얼을 얻는다니 신기하네..ㅋ
Creative Commons License
Creative Commons License

제9회 한국 자바 개발자 컨퍼런스

Computer 2008/02/07 18:15 Posted by chanz


음...적어도 내가 취업하기 전에 꼭 배워야 할 Java...

완전 빡빡한 일정인데? ㅎㅎ
도중에 와서 예배 드리러 가야 겠다..

Creative Commons License
Creative Commons License

likely / unlikely macros in kernel

Computer 2007/09/14 17:03 Posted by chanz

Reference : http://kerneltrap.org/node/4705
---------------------------------------------------------------------------------------


Ever wondered what the likely and unlikely macros in the linux kernel are ?

The macros are defined as :

#define likely(x)       __builtin_expect((x),1)
#define unlikely(x)     __builtin_expect((x),0)

The __builtin_expect is a method that gcc (versions >= 2.96) offer for programmers to indicate branch prediction information to the compiler. The return value of __builtin_expect is the first argument (which could only be an integer) passed to it.

To check it out how it could be beneficial, an excerpt from "info gcc" :

     if (__builtin_expect (x, 0))
                foo ();

[This] would indicate that we do not expect to call `foo', since we expect `x' to be zero.

Based on this information the compiler generates intelligent code, such that the most expected result is favored.



Let us consider it with a simple example function :
[kedar@ashwamedha ~]$ cat abc.c
int
testfun(int x)
{
        if(__builtin_expect(x, 0)) {
                              ^^^--- We instruct the compiler, "else" block is more probable
                x = 5;
                x = x * x;
        } else {
                x = 6;
        }
        return x;
}
 
[kedar@ashwamedha ~]$ gcc -O2 -c abc.c
[kedar@ashwamedha ~]$ objdump  -d abc.o
 
abc.o:     file format elf32-i386
 
Disassembly of section .text:
 
00000000 :
   0:   55                      push   %ebp
   1:   89 e5                   mov    %esp,%ebp
   3:   8b 45 08                mov    0x8(%ebp),%eax
   6:   85 c0                   test   %eax,%eax
   8:   75 07                   jne    11 < testfun+0x11 >
                                ^^^ --- The compiler branches the "if" block and keeps "else" sequential
   a:   b8 06 00 00 00          mov    $0x6,%eax
   f:   c9                      leave
  10:   c3                      ret
  11:   b8 19 00 00 00          mov    $0x19,%eax
  16:   eb f7                   jmp    f < testfun+0xf >

And let us see what happens if we make the "if" block more likely.

[kedar@ashwamedha ~]$ cat abc.c
int
testfun(int x)
{
        if(__builtin_expect(x, 1)) {
                              ^^^ --- We instruct the compiler, "if" block is more probable
                x = 5;
                x = x * x;
        } else {
                x = 6;
        }
        return x;
}
                                                                                                    
[kedar@ashwamedha ~]$ gcc -O2 -c abc.c
[kedar@ashwamedha ~]$ objdump  -d abc.o
                                                                                                    
abc.o:     file format elf32-i386
                                                                                                    
Disassembly of section .text:
                                                                                                    
00000000 :
   0:   55                      push   %ebp
   1:   89 e5                   mov    %esp,%ebp
   3:   8b 45 08                mov    0x8(%ebp),%eax
   6:   85 c0                   test   %eax,%eax
   8:   74 07                   je     11 < testfun+0x11 >
                                ^^^ --- The compiler branches the "else" block and keeps "if" sequential 
   a:   b8 19 00 00 00          mov    $0x19,%eax
   f:   c9                      leave
  10:   c3                      ret
  11:   b8 06 00 00 00          mov    $0x6,%eax
  16:   eb f7                   jmp    f < testfun+0xf >
Creative Commons License
Creative Commons License

요즘들어 리눅스를 자주 사용 하게 되면서 느끼는 묘한 느낌...

그냥 이상하게 친숙한 콘솔...

문득 국민학교 6학년때 컴퓨터를 처음사서 까만화면에 커서 하나 깜빡거리는거

왜 샀는지 정말 의문 투성이였던게 생각난다..

그래픽 후질후질 하지만 그 당시 최고였던 게임들을 하려고 메모리 확보해가며...

콘솔창에서 씨름하던게 우습기만 하다...

그당시 최고 유명했던...동X생을 하기위해 J-DOS까지 까는 미친짓도 수없이 반복하고...

1.2mb짜리 플로피 디스크 가지고 데이터 손상될까 안절부절 못하던 모습도 기억난다..ㅋㅋ

콘솔과 함께 했던 추억들 때문인가...

갑자기 리눅스가 친근해지고 하고싶은 건...

Creative Commons License
Creative Commons License