'IT/기본에충실'에 해당되는 글 6건

  1. 2009.10.06 Serialize
  2. 2009.09.30 값, 참조 타입
  3. 2009.09.15 [ASP.NET] 페이지 CacheTest
  4. 2009.09.15 [C#] pdb 파일
  5. 2009.09.15 [ASP.NET] Transfer, Redirect, Excute..
  6. 2009.09.15 기본... 여기는...
posted by 방랑군 2009. 10. 6. 09:24


직렬화란 무엇인가
영어 원어로부터 이야기를 시작해 보겠다. 시리얼(serial)이라는 표현은 영어 사전을 찾아보면 영화나 TV의 연속물, 연재물을 뜻하는 명사이거나 ‘연속적인’, ‘순차적인’이라는 의미의 형용사라는 것을 알 수 있다. 여기서 요점은 ‘순서가 있는 연속물’이라는 점이다. 2부를 1부보다 먼저 하는 경우는 없다. 컴퓨터 제품이나 소프트웨어를 구입하면 시리얼 번호라는 것을 흔하게 볼 수 있다. 시리얼 번호의 한글 번역은 ‘일련 번호’에 해당한다. 각 제품의 순차적인 번호를 적은 것이다.
serialize는 ‘serial하게 만든다’는 뜻의 동사로서, 연재물로 상영한다 또는 순서대로 나열하다라는 뜻이다. 최종적으로 이 동사의 명사화인 serialization은 ‘무엇인가를 연속적인 형태로 나열하는 행위’를 말한다.
정의하자면, 직렬화란 우리가 프로그램에서 다루고자 하는 모든 객체를 쉽게 저장하거나 네트워크로 전송할 수 있게, 컴퓨터의 가장 원초적인 자료 표현 형식인 바이트(byte)의 연속 형태로 변환하는 과정을 말한다. 당연히 디스크에 파일 형태로 저장되어 있거나 네트워크를 통해 전송받아 메모리에 저장한 바이트 연속물(byte stream)을 다시 원래의 객체로 변환하는 복원 과정도 항상 고려해야 한다. 이를 de-serialization이라 한다

[출처] 시리얼라이즈|작성자 썬더스

'IT > 기본에충실' 카테고리의 다른 글

값, 참조 타입  (0) 2009.09.30
[ASP.NET] 페이지 CacheTest  (0) 2009.09.15
[C#] pdb 파일  (0) 2009.09.15
[ASP.NET] Transfer, Redirect, Excute..  (0) 2009.09.15
기본... 여기는...  (0) 2009.09.15
posted by 방랑군 2009. 9. 30. 15:04
변수는 값 타입과 참조 타입이 있으며 값 타입에는 int, double, char 등이며 참조 타입은 class 등입니다. 

 값 타입은 스택이라는 영역의 메모리에 저장됩니다. 

 반면에 참조 타입은 new라는 연산자를 통해서 객체가 생성되면 멤버변수들은 힙이라는 영역의 메모리에 저장되며 이 객체 변수는 힙 영역에 메모리를 가리키는 주소값을 가지며 스택에 저장이 됩니다. 
그래서 참조 타입이라고 불립니다.

'IT > 기본에충실' 카테고리의 다른 글

Serialize  (0) 2009.10.06
[ASP.NET] 페이지 CacheTest  (0) 2009.09.15
[C#] pdb 파일  (0) 2009.09.15
[ASP.NET] Transfer, Redirect, Excute..  (0) 2009.09.15
기본... 여기는...  (0) 2009.09.15
posted by 방랑군 2009. 9. 15. 13:26

 역시 궁금한거 해 놓으신 게 있어서...

감사...

 읽는 건 역시 나주에 ^^;;

참조 : http://blog.naver.com/kkwangjjang/100065860275


ASP.NET에서는 페이지를 cache할수 있는 기능이 있다는 사실은 모두 알것이다.

갑자기 궁금해졌다.

이 cache가 어떻게 동작하는지...

그래서 Test를  해보기로 했따.

 

OUtputCache 지시자를 쓰면 해당 페이지가 모두 Doration 만큼 캐쉬되어 져있다가 그 이후에 한번 refresh 되어진다.

이때, cache에서 제외될 부분만 Substitution Control로 처리하면 해당 부분만 cache되지 않고 페이지에 접근할 떄 마다 새롭게 갱신된다.

 

페이지 이벤트를 모두 걸고 실행해보았다.

캐쉬되어 있는 동안에는 새로고침을 해도 OnPreInit, OnInit, OnPreLoad, OnLoad, OnPreRender 이벤트 모두 일어나지 않았다.

캐쉬가 만료될때만 해당 이벤트들이 모두 실행되고 있었다.

Substitution 컨트롤의 callback Method로 지정된 놈만 계속 실행되고 있었다.

파란 부분이 Substitution 컨트롤 부분이다. 이부분만 캐쉬되지 않고 매번 갱신 되어진다.

눈으로 바뀌는것을 확인하기 위해 각 이벤트에 날짜를 프리트 하도록 해보았다. 파란 부분만 갱신되고 있음이 확인된다.

그렇다면 웹의 메인페이지 같은곳에서도 위와 같은 기능을 사용하면 되겠구나 싶어졌다.

 

UserControl을 이용해서 웹페이지를 조각해서 해당 UserContorl만 cache를 해주면 되지 않을까..싶은 마음에 UserContorl조각들을 만들고

한개의 페이지에서 그 조각들을 가져다가 써보기로 결심했다.!

 

A, B를 C에서 가져가다 쓰는 test를 해보았다. 여러가지 case로 해보기로 했다.

aspx페이지에는 서버코드가 존재하지 않고 cs페이지의 pageLoad이벤트에서 현재 시간을 찍는 test를 했다.

 

첫번째

A, B, C모두 캐쉬모드로 선언한다.

A, B의 Duration 을 C의 Duration 보다 작게 준다.

A, B의 Duration 과 관계없이 C의 duration 에 따라 동작한다. 즉, A,B가 10초마다 갱신되도록 설정이 되어 있다고 해도 C가 15초마다 갱신되도록 설정되어 있다면, A.B도 15초마다 갱신되는 것이다.

 

두번째

A, B, C모두 캐쉬모드로 선언한다.

A, B의 Duration 을 C의 Duration 보다 크게 준다.

이때 이상한 현상이 발생하게 된다. 화면에서 A,B가 나타나지 않는 시간이 있게된다.

 

처음엔 이해 할수없는 현상이였다.ㅜㅜ

그러나 사용자 컨트롤이 없이 test했을때가 떠올랐다.

일단 캐쉬가적용되면 해당 시간동안은 Page 및 UserControl의 이벤트가 발생하지 않는다.

그런데 test코드는 onLoad 이벤트에 존재한다. 캐쉬가 적용된 기간을 살펴보자.

C(A, B를 담고 있는 page)의 기간이 A,B의 캐쉬기간보다 짧다. 따라서 C가 갱신되어도, A,B의 캐쉬 만료기간이 되지 않아서, A,B의 내부 이벤트가일어나지 않게 되는것.

따라서 해당 이벤트에서 일어나고있는 액션은 일어나지 않는다. 그리고 C는 캐쉬가 만료되어서 새로 페이지 이벤트를 일으킨다.

그사이에 시간에는 C는 A,B를 담아서 그려내었던 캐쉬가 만료되어서 페이지에 A,B에 관한 내용을 그려낼수없는것이다. (아 참으로 오묘하도다!!!)

그런데 이해 할 수 없는 부분이 있다. aspx 페이지에 onLoad event에 있던 서버코드를 코딩하면 잘나온다. (사실 이부분을 아직 잘 이해 못하겠다ㅡ.ㅡa)

aspx 페이지에 서버코드를 넣지 않고, 저렇게 쓰려면...UserControl의 어떤 이벤트에 매칭을 시켜야 하는것일까..ㅜㅜ

 

세번째

A, B 만 캐쉬모드로 선언한다.

C는 캐쉬모드로 선언하지 않는다.

이렇게 되면, 처음 페이지를 로드할때는 A,B,C가 모두 실행된다. 그렇지만 다시 페이지를 로드하게되면 C만 실행된다.

(A,B는 캐쉬모드로 선언되어져 있으므로, 페이지 이벤트가 발생하지 않는다!!!)

이렇게 되면 A,B 의 캐쉬가 만료되는 시간에만 잠깐씩 A,B의 내용을 볼수있고, 나머지 시간에는 볼수없게 되는것이다.

C는 캐쉬모드가 아니므로!

 

기억해야 할것은..

반드시 페이지에서 캐쉬모드로 선언된 사용자 컨트롤을 사용할 경우, 그 페이지를 캐쉬모드로 선언해야 한다는 것이다!

세번째 같은 오류를 줄이기 위해서라면..!!

[출처] ASP.NET 페이지 CacheTest|작성자 꽝짱

'IT > 기본에충실' 카테고리의 다른 글

Serialize  (0) 2009.10.06
값, 참조 타입  (0) 2009.09.30
[C#] pdb 파일  (0) 2009.09.15
[ASP.NET] Transfer, Redirect, Excute..  (0) 2009.09.15
기본... 여기는...  (0) 2009.09.15
posted by 방랑군 2009. 9. 15. 13:23

갑자기 매일 컴파일하고 빌드하면 dll 또는 exe 파일과 함께 만들어지는 pdb 란 확장자를 가진놈의 정체가 궁금해졌다.

요새 msdn 과 친해지려는 노력중이라, MSDN 에게 물어봤다. 요약하면 다음과 같다.

  1. PDB 는 Program DataBase 의 줄임말이다.
  2. pdb 파일에는 프로그램의 디버깅 및 프로젝트 상태 정보가 저장되어 진다.
  3. C# 및 Visual Basic 의 경우는 /debug 모드로 빌드할 때만 만들어 진다. Release 모드일때는 만들어 지지않는다. => 강제로 만들려면, /debug:pdbonlt 를 사용한다. 이것을 사용하게 되면 pdb가 생성은 되지만 디버그 정보를 사용할수 없다. (/debug:full 을 사용하여 빌드해야만 디버깅 할 수 있는 코드가 생성된다.)
  4. Visual Studio 디버거는 project.pdb 파일을 찾기 위해 EXE 또는 DLL 파일에서 PDB의 경로를 사용합니다. 디버거가 해당 위치에서 PDB 파일을 찾을 수 없거나 프로젝트를 다른 컴퓨터로 옮긴 경우와 같이 경로가 올바르지 않으면 디버거는 EXE가 포함된 경로를 검색한 다음 옵션 대화 상자에 지정된 기호 경로를 검색합니다. 이 경로는 일반적으로 기호 노드의 디버깅 폴더입니다. 디버그 대상 이진 데이터와 일치하지 않는 PDB는 디버거에서 로드할 수 없습니다.

===========출처 MSDN (http://msdn.microsoft.com/ko-kr/library/ms241903.aspx)===========

 

좀더 찾아보니, .pdb  파일들은 디버거가 바이너리에 대한 원본 소스 파일을 찾고 해당 소스 파일의 코드에 있는 중단점을 매핑하기 위해서 사용한다. 디버깅을 위해서는 반드시 pdb 파일이 있어야 함을 여기서 알 수 있다.

 

그리고 pdb파일의 종류는 매우 다양하다. 따라서 어떤 종류의 pdb 파일인지 알수있는 가장 간단한 방법은,

pdb파일을 notepad로 보면 (물론 깨져 보인다;;;) header 부분만은 깨지지 않고 보이게 된다. 물론 절대적인 꼼수이긴 하지만..ㅋㅋㅋ

 

 

[출처] C# pdb 파일|작성자 꽝짱

'IT > 기본에충실' 카테고리의 다른 글

Serialize  (0) 2009.10.06
값, 참조 타입  (0) 2009.09.30
[ASP.NET] 페이지 CacheTest  (0) 2009.09.15
[ASP.NET] Transfer, Redirect, Excute..  (0) 2009.09.15
기본... 여기는...  (0) 2009.09.15
posted by 방랑군 2009. 9. 15. 13:20

 초창기 이거 나올때 구분지어서 알았는데, 
지금 먼지 모르겠다.... 또 확실히 구분지어 이해하려면 시간이 걸린다...

머리 나빠 다시 보아서 구분을 지을려고 해서 시간이 많이 걸리기 때문에 귀찮은 것들 중에 하나다...

일단 참조로 설명 해 놓은거 놓는다...
솔직히 머리나뻐서 한번 속독해서 먼소린지 잘 모르겠다 . --;

나중에 시간 되면 정리하자....

 참조 : http://blog.naver.com/kkwangjjang/100058429953

일단 transfer를 메모해두기전에, 요놈을 공부하면서 HttpContext란놈이 또 등장했다.

HttpContext란 개념은 많이 들어보긴했지만, 웬지 생소한..그림그려봐!라고 하면 못그릴것같은 놈이다.

이놈은 서버를 통해 들어오고 나가는 클라이언트 측 요청과 응답정보를 관리하는 개체이다.

즉, 클라이언트의 요청으로 한개의 프로세스가 모두 마쳐지고 서버가 클라이언트로 응답을 보내기까지의

한개의 덩어리 라고 하면 이해가 좀 쉬워지는 놈이다.

 

자자 이제 본론으로 궈궈

  • HttpResponse.Redirect와 다른점은 Redirect는 Client에서 Http헤더를 전송해서 브라우저가 새로운 페이지를 요청하게 하는 기술이다. (302 "Object Moved"를 요청한다.)
  • 이에반해서 Transfer는 서버측 페이지 이동이다. Transfer는 페이지간 포스트백과 비슷한 면이 존재한다. (Cross-Page Postback)
    • 원본페이지의 공유멤버와 포함된 컨트롤들을 엑세스 할 수 있다.
    • PreviousPage 속성을 이용해서 원본페이지의 개체를가져올수 있다. 그러나 여기서 다른점이 존재한다.
      Cross-Page Postback에서의 Page Event발생 flow를 보면, 대상페이지가 원본페이지의 개체를 액세스 할때, 원본페이지는 PreInit -> Init -> InitComplete -> PreLoad -> Load -> LoadComplete 까지 수행되어 진다.
      정 상적인 Page의 Event Flow : PreInit -> Init -> InitComplete -> PreLoad -> Load -> LoadComplete -> PreRender -> Render
      그러나 Transfer의 경우 원본페이지는 대상페이지를 실행 한 후에도 여전히 메모리에 존재함으로써 새로 페이지객체가 생성되어 지지 않게 된다!
  • Transfer는 서버측 페이지 이동이므로, 클라이언트(브라우저)의 주소창의 내용이 갱신되지 않는다.
  • 이외에 Excute와의 다른점인 페이지 제어권이 있다.
    • Transfer는 대상페이지가 실행되면 바로 원본페이지의 실행을 멈추고 제어권을 대상페이지에게 넘긴다.
    • Execute의경우, 대상페이지가를 호출한 후 제어가 다시 원본페이지로돌아오게 된다.

기본에 충실하자는 마음으로 기본적인 내용을 보다보니, 까먹지 말아볼까~하는 내용이 눈에 들어온다.

요것도 그것중하나!

메모하는 습관^^

내용 출처 : IT Expert ASP.NET 2.0 (산지 한2년됐뜨니 Naver 책DB에도 없네;;쩝;;)

[출처] HttpServerUtility.Transfer|작성자 꽝짱


'IT > 기본에충실' 카테고리의 다른 글

Serialize  (0) 2009.10.06
값, 참조 타입  (0) 2009.09.30
[ASP.NET] 페이지 CacheTest  (0) 2009.09.15
[C#] pdb 파일  (0) 2009.09.15
기본... 여기는...  (0) 2009.09.15
posted by 방랑군 2009. 9. 15. 13:13


  분명히 봤다... 그리고 안다.. 했을때는...

그러나, 시간이 지나면 잊어버린다.... 
내가 안정적인 위치에 있지 않기 때문에 밑바닥이 튼튼한 놈으로 보여야 하는데....

중요한 순간에 잊어버린 이 기본들 때문에 의기 소침에 빠진다..... --;

그래서, 여기 순서에 상관없이 정리 해두기 위해 만들었다 ^^;;


'IT > 기본에충실' 카테고리의 다른 글

Serialize  (0) 2009.10.06
값, 참조 타입  (0) 2009.09.30
[ASP.NET] 페이지 CacheTest  (0) 2009.09.15
[C#] pdb 파일  (0) 2009.09.15
[ASP.NET] Transfer, Redirect, Excute..  (0) 2009.09.15