'분류 전체보기'에 해당되는 글 45건

  1. 2019.04.09 썸네일 이미지 갱신
  2. 2019.03.28 다른 페이지로 벗어날때 인터벌 정지시키기
  3. 2019.03.27 JQuery 영문+숫자만 Input Text 입력
  4. 2012.10.30 발암물질검출 ‘라면·조미료’ 회수 조치
  5. 2010.05.25 'SW개발자 신고제' 다시 원점으로?
  6. 2010.02.24 미용용어 정리
  7. 2010.01.27 간단한 트리뷰(treeview) 구현
  8. 2009.08.04 VSFlexGrid 그리드 헤더 편집시 인덱스값 자동편집
  9. 2009.05.06 본식 촬영 추천업체
  10. 2009.03.20 티스토리
  11. 2009.03.18 이미지맵
  12. 2009.03.18 div의 position속성
  13. 2009.03.17 outer join 에서 where 절에 써야 할지..관계절에 써야 할지...
  14. 2009.03.14 V라인 몸매를 위한 5가지 어깨훈련법 Part.1
  15. 2009.03.04 웹사이트 ( 신혼여행 )
  16. 2009.03.04 반대말 사전
  17. 2009.02.27 집회·시위는 시민의 권리 경찰은 도와줄 의무가 있다
  18. 2009.02.26 대통령 형제가 기습상정 ‘배후’…상임위마다 ‘강공’
  19. 2009.02.26 한나라당이 밀어 붙이려는 7대악법
  20. 2009.02.25 aspx 에서 Post 방식 페이지 호출
  21. 2009.02.25 Page의 실행주기
  22. 2009.02.25 사용자 정의 컨트롤이 부모 aspx 변수 값 접근 하는 방법
  23. 2009.02.25 < %# % > 바인딩 태그의 이용과 활용
  24. 2009.02.25 삭제 로직
  25. 2009.02.25 ASP.NET or .NET 초보자 FAQ
  26. 2009.02.25 CheckBoxList 동적 바인딩
  27. 2009.02.25 board source
  28. 2009.02.25 페이지 랜더링 순서
  29. 2009.02.25 텍스트박스에 엔터키 적용하여 PostBack발생
  30. 2009.02.25 DataTable Merge

카카오스토리

카카오스토리 공유하기시 만들어지는 미리보기의 이미지와 텍스트들은 서버 효율을 높이기 위해 스크랩 서버에 일정기간 캐쉬됩니다. 캐쉬 기간동안 이미지나 내용을 바꾸더라도 같은 URL을 공유하면 캐쉬된 이미지와 텍스트로 공유될 수 있습니다.

캐쉬를 삭제하려면 https://dev.kakao.com/docs/restapi/tool1.1천 의 [카카오스토리] 탭에서 /v1/api/story/linkinfo  캐시 삭제를 실행하시면 됩니다.

 


카카오톡

https://developers.kakao.com/docs/cache


페이스북

출처 : https://ooz.co.kr/43

 

방법은 간단합니다. 페이스북의 개발자 사이트의 Open Graph Object Debugger 페이지에 가서 공유하려는 페이지(수정된)의 링크를 입력하면 됩니다.

 

https://developers.facebook.com/tools/debug/og/object/

 

아래의 Input URL에 캐시를 갱신할 페이지의 URL을 입력한 후, 엔터키를 누르거나 Fetch new scrape Information 버튼을 클릭합니다.

 

 

 

다음과 같은 화면이 뜨면 (내용은 조금 다를 수 있지만) 해당 URL이 페이스북 캐시에 새로 갱신되고, 어떠한 메타 정보들을 포함하고 있으며, 공유 시, 페이스북에 어떻게 나타나는지 등에 대한 정보를 보여줍니다.

 

 

 

 

잠시 후, 해당 링크를 다시 페이스북에 공유해보면 새 메타 정보를 기반으로 갱신되었음을 알 수 있습니다.

 

페이스북 캐시 갱신에 시간이 좀 걸릴 수 있으니, 바로 갱신된 정보가 표시되지 않으면 1~2분 정도 있다가 다시 해보시기 바랍니다.



출처: https://ooz.co.kr/43 [이러쿵저러쿵]


# <head></head> 사이에 아래의 og태그 추가하기

<meta property="og:type" content="website">

<meta property="og:title" content="제목에 뜰 내용(굵은글씨)">

<meta property="og:url" content="링크걸릴주소">

<meta property="og:description" content="제목아래쪽에 한줄 나오는 짧은 소개글">

<meta property="og:image" content="썸네일이미지 경로"> 

 

# 밴드 링크 썸네일 캐시 갱신

http://developers.band.us/developers/ko/docs/share/debugger

 

# 카카오톡 링크 썸네일 캐시 갱신

https://developers.kakao.com/docs/cache



출처: https://jboa86.tistory.com/911 [♬]

출처: https://jboa86.tistory.com/911 [♬]

Posted by 뭉치냐옹
:

 

var vTimer;

jQuery(window).blur(function(){

  clearInterval(vTimer);

})


출처: https://tessjds.tistory.com/entry/다른-페이지로-벗어날때-인터벌-정지시키기 [잘하고 싶은 웹개발자]

Posted by 뭉치냐옹
:

$(document).ready(function(){
  //한글입력 안되게 처리
  $("input[name=aaa]").keyup(function(event){ 
   if (!(event.keyCode >=37 && event.keyCode<=40)) {
    var inputVal = $(this).val();
    $(this).val(inputVal.replace(/[^a-z0-9]/gi,''));
   }
  });
});

 

출처 : 출처: https://templar.tistory.com/2 [Templar Archive]

Posted by 뭉치냐옹
:

출처 :

 

식약청, 9개제품 결정

 기준치를 초과한 발암물질이 함유된 원료를 사용한 유명 식품업체들의 일부 라면과 조미료에 대해 자진회수 결정이 내려져 파문이 일고 있다. 식품의약품안전청은 25일 ‘벤조피렌’이 기준치 이상으로 검출된 가쓰오부시(가다랑어포)를 넣은 라면류와 조미료 제품 중 4개 업체 9개 제품에 대해 회수를 결정했다. 회수 대상 제품은 <얼큰한 너구리> <새우탕 큰사발면> 등 ㈜농심 제품 6종을 비롯해, 동원홈푸드의 <동원생우동해물맛>, 민푸드시스템의 <어묵맛조미>, 화미제당의 <가쓰오다시> 등 9종이다. 식약청은 회수 대상을 추가로 발표할 예정이어서 발암물질 식품 파문은 확산될 것으로 보인다.

 김소영 기자

Posted by 뭉치냐옹
:
출처 : http://www.etnews.co.kr/news/detail.html?id=201004220198


지식경제부가 소프트웨어(SW) 기술자 신고제도를 시행 8개월 만에 원점에서 재검토한다.

이 제도가 당초 취지와 달리 SW개발자들의 경력을 깎아 먹는 제도로 변질돼 실효성이 떨어진다는 지적을 적극 수용한 결과다. 본지 4월 13일자 1·3면 참조

유정열 지경부 SW산업정책과장은 22일 “SW기술자 신고제가 일부 SW개발자들의 경력 부풀리기를 막고 SW개발자들의 권익을 보호하겠다는 애초 취지가 퇴색한 면이 있어 제도 전면 폐지를 포함한 수정안을 준비 중”이라며 “월드베스트소프트웨어(WBS) 사업 등 현안을 일단락하는 대로 제도 개선을 위해 전문가들의 의견을 청취하는 기회를 가지겠다”고 밝혔다.

한국SW산업협회는 이와 관련, 최근 SW기술자 신고제도 개선을 위한 태스크포스(TF)를 구성했다. TF는 개발자들을 학력과 자격증으로 등급을 매기는 정량적 평가 대신 실제 프로젝트에서 어떤 역할을 수행했는지를 판단하는 정성적 평가 중심으로 제도를 개편하는 방안을 논의 중이다. 코딩, 설계 등 개발자들의 현장 경험을 반영해 경력을 산정하는 데 초점을 맞추고 있다.

오라클의 OCPMS의 MCSE 등 민간 자격증을 SW기술자 신고제로 편입하는 방안은 해당 다국적 기업들과 협력이 쉽지 않아 유보 쪽으로 기운 것으로 알려졌다. TF는 SW 기술자 신고제 전면 폐지도 검토 중이다. 다만, 이미 등록한 7만명가량의 SW개발자들과 형평성 문제를 해결하기 위해 심사숙고한다는 계획이다. TF 한 관계자는 “제도 개선과 함께 SW업계나 IT서비스업계가 프로젝트 단가를 높이기 위해 경력을 부풀리는 폐단을 막는 방법도 함께 검토 중”이라고 전했다.

정진욱기자 coolj@etnews.co.kr
Posted by 뭉치냐옹
:

미용용어 정리

Hair/용어 2010. 2. 24. 09:22 |
_가이드 라인(guide line) : 스타일을 만드는데 기준이 되는 머리의 길이. 
_강조(dominance) : 한 단위가 중점이 되어 두드러지게 표현 함으로서 디자인 내에 가장 큰 영향력을 미치게 한다. 
_개성(individuality) : 각 사물 또는 각 개체가 지닌 고유한 특징적 성격. 
_골덴 포인트(golden point) : 턱에서 양 귀를 연결한 선의 연장선이 두정부에서 만나는 지점. 
_기슈(guiches)(불): 이마와 뺨에 걸친 애교머리. 
_그라데이션(gradation) : 점차적 이행. 조금씩의 변화. 색채 용어에서는 선염법(농담을 점점 짙게 또는 엷게 하는 것) 농담. 백과 흑의 명도 단계의 변화 등이 있다. 
_구심(求心) : 회전하는 물체가 중심을 향하여 가까워지려고 하는 작용. 
얼굴 방향으로 모발의 흐름을 갖는 것. 
_꼬기(twist) : 하나, 둘 혹은 세 가닥의 머리를 교차하거나 꼬아서 밧줄 형태의 모양을 만들거나 똬리를 만들어 형태를 내는 방법. 

_내로우 웨이브(narrow wave) : 릿지(등성이)와 릿지의 폭이 좁거나 커브가 급한 웨이브. 파장이 많으므로, 전체가 곱슬곱슬한 머리에 가깝게 된다. 
_노트 (knot): 본래의 뜻은 매는 것으로 넥타이, 리본 등이 묶인 부분. 미용에서 가닥을 묶거나 얽는 매듭 부분. 또는 토대나 베이스를 만들기 위하여 만드는 부분의 의미. 
_뉘앙스(nuance)(불) : 색조, 농담, 음영, 그라데이션(선염법) 톤, 감정, 정서 등의 여러 가지 표현을 포함. 다른 것과 조금 다른 미묘한 특색을 표현하는 것. 개성미의 미묘한 차이가 뉘앙스의 특징이다. 뉘앙스는 감정과 기분, 여러 가지 상태 등의 모든 막연한 표현에서 찾아볼 수 있는데, 뉘앙스는 감각의 사용방법을 분별하면 스스로 표현 가능한 것이다. 개성은 각각 다른 뉘앙스를 가진다. 

_다운 세이핑(down shaping) : 다운은 밑 방향으로, 세이프는 윤곽, 형태란 뜻. 모발의 진행 방향이 아래로 향한 형태를 만드는 것. 
_다운 스템(down stem) : 스템은 모근에서 컬이 말리기 시작한 곳까지를 말하며 다운스템은 컬이 말리는 부위가 밑으로 길어지는 와인딩의 방법. 볼륨을 억제하는 효과를 갖는다. 
_다이아그램(diagram): 그림, 도해, 도표. 
_땋기(braid) : 셋 이상의 가닥으로 갈라서 엮어 한가닥으로 표현하는 방법. 
_똬리 : 머리에 짐을 받치는 고리 모양의 물건. 
_대상(object) : 예술에 있어서는 표현 작용을 향한 목표가 되는 소재, 제재 등을 총칭한다. 객관, 객체와 거의 같은 뜻으로 사용된다. 
_대조(contrast) : 반대적 요소의 바람직한 관계. 다양성을 만들어내고 서로 대립되는 요소가 디자인의 흥미를 자극한다. 
_대칭(symmetry): 점·선·면, 또는 이것들로 된 형태가 어떤 기준이 되는 점이나 선, 또는 면을 중심으로 서로 맞서는 자리에 놓이는 경우. 
_W형 핀 고정 : 핀을 꽂는 방법의 하나로, 가장 처음에 꽂는 핀의 앞과 다음 핀의 뒷부분을 W형으로 교차시켜 가는 기법. 머리숱이 많거나 토대가 없는 경우에 고정시키기 위한 방법으로 사용. 
_덜 웨이브(dull wave): 덜은 활발하지 않은, 둔한, 침체되었다는 뜻. 굴곡이 확실하지 않은 웨이브. 
_동선(traffic line) : 공간에 있어서의 인간과 물체의 움직이는 궤적. 
_디랙션(direction) :흐름, 방향. 
_디자인(design) : 예술성 있는 전체를 만들어내는 모양, 선 그리고 장식적인 효과의 배열. 
_디포메이션(deformation) : 형을 바꾼다. 모양을 바꾼다. 변형한다는 뜻이다. 
_&&__*법(等身法) : 머리에서 턱까지를 한 단위로 하여 신체를 나누어 나타내는 신체 비례법. 

_라운드 사이드 파트(round side part) : 사이드 파트가 곡선을 그린 파트 라인. 라운드 파트라고도 말함. 
_라이프 스타일(life style) : 패션을 생활전체에서 찾아내는 것이 라이프 스타일이다. 생활감각이 복장, 머리모양, 인테리어 전체에 반영되어, 하나의 스타일을 나타내는 것. 
_랫 테일 콤(rat_tail comb) : 쥐의 꼬리 같이 가는 자루가 붙어있는 빗. 일반적으로 테일 코움, 링 코움 등으로 불림. 자루 부분은 파트를 나누거나 머리 묶음을 나눌 때 사용된다. 
_러프(rough): 격식 없는, 조작 없는, 거친. 
_렉탱글러 파트(rectangular part) : 머리를 나누는 방법의 하나. 두정부를 장방형으로 나눈 것. 리탱글러는 장방형이란 의미. 
_로드(rod) : 웨이브를 만들 목적으로 머리카락을 마는 기구. 
_로마네스크(Romanesque) : 11세기, 12세기 중엽에 걸쳐 유럽 전 나라에서 행해진 고대 로마의 요소에 동양적인 수법을 가미한 건축, 조각, 회화의 양식. 
_로맨티지즘(romanticism) : 낭만주의. 
_ 몽상적, 감상적, 주관적 정서를 즐기는 경향. 
_ 8세기말부터 9세기에 걸쳐 프랑스에서 일어나, 유럽에 전개된 문예사조. 고전주의에 반항하여 자유스런 공상과 감정을 중시하는 경향. 
_로맨틱(romantic) : 공상적. 시적인. 
_로얄(royal) : 왕위의, 왕가에 어울리는. 고귀한. 
_로우(low) : 낮다는 의미. 로우 틴. 
_로우 웨이브(low wave) : 파상이 부드러운 산 모양의 완만한 웨이브. 
_로컬리티(locality) : 지방성, 지방색, 지방의 무늬. 
_롤러(roller) : 머리 모양에 볼륨을 위해 쓰는 세트용 컬러. 
_롤링(rolling) : 빗, 롤, 브러시를 반복 회전 시키는 동작. 
_롱 스템 롤러 컬(long stem roller curl) : 스템을 길게 롤로 만 컬. 머리 다발을 두피에 대해 45도 각도 이상으로 세이프 하여 만다. 
_루즈(loose) : 깔끔하지 못한 모양. 야무지지 못한. 
_리드미컬(rhythmical): 율동적. 박자가 좋은 것. 
_리듬(rhythm) : 운율, 박자. 일반적으로 규칙적인 반복운동. 
_리 디자인(redesign): 이미 디자인 되어있는 제품을 고쳐서 다시 디자인하는 것. 또는 개선하는 것. 
_리버스(reverse) : 뒷쪽이란 뜻으로 포워드의 반대되는 말이다. 어느 쪽에서나 얼굴의 위치에서 뒤로 방향을 잡는 것. 
_리세트(reset): 끝마무리나 콤 아웃(comb out). 브러시 아웃등으로 불리우는 기술로 최종의 끝마무리로 재차 고치는 작업. 
_리얼리티(reality): 현실. 실재성. 
_리젠트 스타일(regent style) : 앞머리, 양 사이드를 모두 뒤로 넘겨서 포마드를 듬뿍 바른 머리모양. 
_릿지(ridge) : 산등성이, 꼬리 부분의 근육이란 의미로부터, 미용에서는 웨이브의 융기, 융기선을 말한다. 

_마가렛(margaret) : 묶는 머리의 일종. 세 개로 땋아서 큰 원을 만들고, 리본으로 장식하여 뒤에 올린 형태. 
_매치(match): 조화된 것. 닮은 것. 
_메리트(merit): 가치, 이점, 업적, 공훈. 
_메슈(meche)(불) : 머리의 묶음(송이), 탈색하다 란 뜻으로, 머리의 일부분을 칼라링하는 것. 
_모던(modern): 현대적인, 근대적인. 
_모듈레이션(modulation) : 가감. 조정. 
_모드(mode) : 방법, 형식, 양식, 유행. 모드는 일반적으로 패션과 동의어로써 쓰여진다. 
_모울드(mould) : 모양을 만들다. 갖추다. 
_무브(move): 움직임. 움직이는 듯한 느낌. 
_무브망(movement)(불): 동세. 운동. 움직임이 있다는 것으로 나타내는 아름다움으로, 미를 만드는 하나의 요소가 된다. 작품의 선, 색채, 터치가 동적으로 생기 있는 표현효과를 나타내는 것. 
_미니멀리즘(minimalism): 장식적인 요소는 일절 제하고, 최소한으로 표현한 양식. 
_밀리톤(mirliton)(불) : 18세기 중기, 프랑스에서 유행한 머리 모양. 정면 아웃라인은 앞 머리와 사이드 머리를 짧게 하여, 작은 컬을 늘어놓은 듯 만들고, 타페라고 불리는 묶는 것으로 컬을 지탱해서, 꽃과 깃털의 장식을 달았다. 뒤는 올려, 그 머리끝을 프런트 컬의 중간에 넣었다. 

_바이세트릭스(bisetrics): 2등분. 좌우 대칭. 
_바이어스(bias) : 사선. 비스듬한. 
_반복(repetition) : 모든 단위가 위치를 제외하고 동일할 때. 
_방사 분배(radial Distribution) : 머리를 한 시작점(중심)에서 360도로 분배하는 방식. 
_배럴 컬(barrel curl) : 배럴은 통의 의미. 원통형으로 감긴 폭이 넓은 컬. 
_백(back) : 안, 배경, 미용용어에서는 두발의 뒷부분. 머리 가름마를 타지 않고, 모두 뒷 방향으로 넘겨 만든 머리형에도 쓰인다. 올백 등. 
_백콤(back comb) : 볼륨을 더해주고 방향을 유도할 때 머리다발을 들어 올려 빗으로 밀어 넣는 동작. 
_밸런스(balance) : 균형. 디자인 요소들의 평형관계. 
_뱅(bang) : 잘라서 내린 앞부분의 머리. 
_버라이어티(variety) : 다양성, 변화. 
_베리에이션(variation) : 변화. 
_베이스(base) : 기본, 기준. 토대. 심지. 컬을 만들기 위해 나눈 머리 다발의 근원 부위를 말한다. 커트나 퍼머, 핀컬, 드라이 등을 시작할 때 제일 먼저 결정되어지는 머리의 두피 부분, 밑뿌리를 말하는 것으로 화장에서는 기초 밑바탕이 되는 밑화장을 말한다. 
_보이쉬 스타일(boyish style) : 남자아이 같은 머리형으로 자른 여성의 헤어스타일. 1930년경 영국의 여배우 베아트리스 리리에 의해 보이쉬 보브가 일반화되어, 제 2차 세계대전 후, 헤프 반 스타일, 세실 커트 등에 이어졌다. 
_보그(불)(vogue) : 유행. 인기. 가장 새로운 경향. 
_보헤미안(Bohemian) : 보헤미아 풍. 방랑적인 생활을 하는 사람. 예술가 등에서 보여지는 방랑자형. 집시의 다른 이름. 
_볼륨(volume):부피의 감각. 
_브러싱(brushing) : 머리를 브러시로 빗는 것. 머리를 가지런히 정리할 목적으로 사용된다. 
_브레이드(braid) : 셋 이상의 가닥으로 갈라서 엮어 한가닥으로 표현하는 방법. = 땋기 
_블로킹(blocking) : 미용 기술을 시술할 때, 머리카락을 크게 구분하여 나누는 것. 시술의 편위를 위하여 스타일에 맞추어서 구분 짓는 구획. 
_비조화(discord) : 단위들간 최대치의 간격. 극도의 대조. 
_비쥬얼 디자인(visual design) : 시각적으로 호소하는 것을 강조하는 디자인으로 신문, 잡지, 그 외의 인쇄물, 텔레비젼, 영화, 사진, 사인 보드 같은 대량생산매체 등, 모든 시각적인 표현에 관한 디자인을 총칭. 
_비쥬얼라이제이션(visualization) : 머리 안에 떠오른 이미지를 구체화하여 시각화해 표현하는 것. 

_사이드(side) : 양측두부. 
_사이케 놋(psyche knot) : 사이케는 그리스 신화 중, 에로스에게 사랑 받은 미녀. 19세기 중기이후, 그녀와 닮은 머리모양이 유행. 옷깃 가까이에 머리를 헐렁하게 비틀어 올린 헤어스타일. 
_샤기(shaggy) : 보풀이 일어난 긴 표면털(직물에 난 털)을 가진 모직물. 텁수룩한 털이란 뜻. 정돈되지 않은 듯한 질감 표현으로 자유스럽고 편안함을 갖는 미용의 질감 표현법. 
_서클 파트(circle part) : 서클은 기하학적 곡선으로 원, 원주. 파트는 원형으로 잡은 것. 라운드 파트와 같음. 
_선(line) : 연장된 점.(점들의 집합) 
_세미 롱(semi_long) : 숏과 롱의 중간의 머리 길이로 정돈된 머리 모양, 턱부터 약 1cm아래로 내려온 길이. 
_세이핑(hair shaping) : 빗으로 빗기면서 형을 만드는 것으로 컬과 웨이브를 만들기 위한 기초 기술 등을 말한다. 헤어스타일을 위한 업 세이핑(up shaping), 다운 세이핑 (down shaping)이 있다. 
_세트(set) : 본래 의미는 특정한 위치나 상태로 둔다 라는 뜻이지만 정리한다 라는 의미로 쓰인다. 
_섹션(section) : 부분, 구면, 칸막이 등의 의미로부터 블로킹으로 구분한 부분 또는 더 작게 나눈 부분. 
_센스(sense) : 라틴어의 센수스(감각)으로부터 유래. 감각, 사려, 사물의 미묘한 느낌, 의미를 생각하는 활동. 
_센시빌리티(sensibility) : 감수성. 
_센터 백 파트(center back part) : 두정부부터 네이프까지의 전체를 중앙으로 하여 나누는 것. 
_센터파트(center part) : 머리를 이마에서 정중선으로 부터 나눈 것. 
_소바쥬(sauvage)(불) : 야성의, 미개인, 야만인의 뜻. 자연적인 웨이브를 살리는 야성적 스타일. 
_스윙 웨이브(swing wave) : 스윙은 흔들리는, 진동한다는 뜻. 흔들리는 듯이 큰 움직임을 가진 웨이브. 
_스크런칭(scrunching) : 디퓨저를 사용해 머리를 말릴 때 부드럽게 머리를 쥐어주는 마무리 기법. 
_스퀘어(square) : 정방형(네모진). 
_스퀘어 베이스(square base) : 정방형 베이스. 
_스파이럴 컬(spiral curl): 나선형으로(스파이럴) 머리묶음을 땋는 컬. 
_스파이키(spiky) : 머리의 앞, 머리 묶음에 날카로움을 주는 것. 본래는 못 같이 앞부분을 날카롭게 한다는 뜻. 
_스타일(style) : 양식. 격식, 형. 좁은 뜻으로는 시대의 대표적인 형으로서 정착된 경우를 말한다. 복장에서는 룩, 패션과 같은 뜻으로 쓰인다. 
_스타일링(styling) : 양식. 실용적, 미적 효과를 높이기 위해 외견 스타일에 특색을 주는 것. 또는 프로세스를 말한다. 
_스타일리스트(stylist) : 패션쇼, 잡지, 텔레비젼, 영화 등의 의상과 소품 또는 실내장식품을 선정, 코디네이터 하는 사람. 세련됨을 중시하는 사람. 작가.(예술상의 형식주의자를 뜻하기도 함) 
_스탠드 업 컬(stand up curl) : 스템이 두피로부터 선 듯이 만든 컬. 볼륨을 만들고 싶을 때 사용. 마는 방향에 따라 포어드와 리버스의 두 종류가 있다. 
_스탠드 업 컬(stand up curl) : 컬을 두피상에 일으켜 세운 컬(직각으로). 
_스테이지 메이크 업(stage make up) : 무대용의 화장. 도란(화장용 유성분), 글리스 페인트 등을 사용. 
_스템(stem) : 베이스에서 부터 컬을 말기 시작한 곳까지를 말한다. 
_스트랜드(strand) : 실, 가닥 등의 의미로, 한 줄기의 모발 묶음, 한 가닥의 모발을 말한다. 
_스트림 라인(streamline) : 스트림은 흐르다, 경사의 뜻. 유선형. 
_스트레이트 백(straight back) : 스트레이트는 똑바른, 말끔하다는 의미. 머리를 전부 뒤로 넘긴 헤어스타일. 속칭 올백. 
_스페이스(space) : 공간, 장소, 여백, 건축, 조형 등에 있어서 3차원적인 공간과 넓이. 회화 글 등에서는 2차원 적인 화면, 여백 등의 의미로 쓰인다. 
_슬라이스(slice) : 한번 자른. 부분. 얇게 자른. 머리카락을 아주 적게 나누는 것. 
_슬리크 스타일(slick style) : 슬리크는 매끈매끈 하다는 뜻. 웨이브를 만들 지 않고 깔끔하면서 산뜻한 질감의 머리 모양. 
_슬림 실루엣(slim silhouette) : 내로우 실루엣과 같음. 전체를 마르게 보이게 한다. 
_시니어(senior) : 쥬니어에 대한 성년자란 의미. 연장자, 상급생. 
_시뇽(chignon)(불) : 틀어 올린 머리, 머리를 틀어 올리거나 업스타일에서 마지막 연출되는 머리끝의 모양. 
_시메트리(symmetry) : 좌우가 대조적으로 균형이 맞는 것. 좌우대칭. 
_실루엣(silhouette)(불) : 윤곽선. 라인과 같은 뜻으로 쓰임. 그림자. 18세기후반, 프랑스의 대장대신 실루엣이 재정 절약을 위해서 초상화에 색을 쓰지 않고 검은색 한 색만으로 그리는 것을 주장한데서부터 유래. 
_심볼(symbol) : 상징, 표상, 기호. 
_써멀 스타일링(thermal Styling) : 머리를 디자인하기 위해 열이 필요한 기구, 예를 들어 컬링 아이롱이나 전기 셋트와 같은 기구를 사용하는 것. 


_아니소토로피(anisotoropy) : 공간의 이방성. 같은 길이의 직선에서도 수직으로 놓여 있을 때와 수평으로 놓여 있을 때 수직으로 놓인 것이 더 길게 느껴진다. 선의 길이가 같아도 심리적 공간이 같지 않을 때를 말한다. 
_아라모드(a la mode)(불) : 유행에 따르다 라는 뜻으로, 최근 유행이나 현대식의 복장을 말한다. 
_아방 가르드(avant_garde)(불) : 아방가르드. 예술학적으로는 전위파, 전위미술을 의미한다. 제 1차 세계대전 후 프랑스에서 일어난 미술운동. 문학, 회화, 영화예술 등에서 전통을 부정하고 새로운 것을 추구한 것으로 일정한 유파가 아닌 예술 정신에 관한 것으로 혁신적인 예술가와 그 경향을 가리킨다. 특히 추상주의(애브스트랙트)와 초현실주의(슈레얼리즘)을 총칭하여 아방가르드라고 가리키는 경우가 많다. 변화하는 예술 운동의 안에서 기성 세대의 관념과 유파를 부정하고 항상 새롭고 혁명적인 것을 창조하자는 경향을 총칭하고 있다. 
_아웃라인(outline) : 외형, 윤곽, 약도, 사물의 대략적인 형태. 미용에서는 머리 모양의 실루엣(silhouette). 
_악시피탈 본(occipital bone) : 후두부에 튀어나은 뼈를 가리킴으로 후두부에서 움푹 들어간 부분과 대응함. 
_암 롱(arm long): 이브닝 드레스 등에 착용하는 팔 위쪽까지 올라오는 긴 장갑. 
_앙글레즈(anglaise)(불) : 길게 세로로 땋아 묶은 머리. 이탈리아 풍의 세로 롤의 머리모양에서 19세기중반 유행. 
_앙상블(emsemble)(불) : 정돈됨, 통일, 조화란 뜻. 정돈된 복장에서부터 장식품에 이르기까지 전체적으로 조화를 이룸. 
_앙포르메르(informel)(불) : 무형. 무형파. 비정형파. 이지적인 생각을 피하고, 우연의 효과에 의한 작품을 정리하는 방법을 말한다. 
_역모(逆毛) : 백콤의 결과로 이루어진 쌓인 모발, 이를 위한 과정. 
_애프터 이미지(after image) : 심리학 용어로서 잔상. 
_액세서리(accessory) : 장신구. 부속품, 주로 의복에 대해 복장을 제외한 것. 팔찌, 브로치, 귀걸이, 벨트, 모자, 장 갑, 손수건, 가방, 신발 등의 장식. 
_액센트(accent) : 강조, 강약, 억양, 어조. 즉 어느 부분을 강조하거나 눈에 띄게 하는 의미로 사용된다. 
_앰비밸런스(ambivalence) : 심리학 용어로 반대되는 감정의 양립, 양면 감정. 같은 대상에 대한 상대되는 감정의 공존. 
_앵글(angle) : 각, 각도, 시점이란 뜻으로, 대상과 시선 관계의 각도를 말한다. 
_양감(weight) : 볼륨. 물체의 크기, 무게, 두께 등의 느낌. 조형 예술에서는 대상물의 실재감, 입체감을 포함한다. 
_어낼러시스(analysis) : 분해. 분석. 어떤 디자인 전체를 부분으로 나누는 절차. 
_어레인지(arrange): 개작하다. 조정하다. 특별하게 각색하다. 
_어레인지먼트(arrangement) : 순서를 정하다. 배치, 배합. 장식을 의미하기도 한다. 
_어시메트리(asymmetry) : 비대칭, 불균형, 부조화를 말하는 것으로 머리카락의 흐름이나, 부풀어 있는 정도가 좌우 대조적으로 균형이 맞지 않는 것. 
_어코드(accord) : 일치성. 
_언더 브레이드(underbraid) : 바깥 가닥을 가운데 가닥의 아래로 교차 시키면서 땋는 방식. = 아래 땋기 
_언밸런스(unbalance) : 불균형. 불평형. 균형이 잡히지 않은 것으로 운동감을 주는 효과가 있다. 
_언폼드(unformed) : 형식이 없는 것. 
_업 다이아고널 파트(up diagonal part) : 다이아고널은 대각선, 경사의 뜻. 파트는 나눈다는 의미. 사이드 파트의 경우 나누는 선이 뒷 방향에서부터 올라가는 것을 말함. 
_업 스웹트 스타일(up swept style) : 빗이나 브러시로 쓸어 올린다는 의미. 
_업 스타일(up style) : 올림머리. 얹음머리. 머리 모양의 기본 중 하나. 끝 부분이나 양측 두부의 머리를 두정부에서 한데 합친 머리의 총칭. 
_엔드 오브 컬(end of curl) : 컬 상태로 만들어진 모발의 선단 부분. 컬의 끝 부분. 
_엔드 플러프(end fluff) : 플러프는 솜털, 푹신푹신한 느낌이란 뜻. 엔드 프루프는 머리카락의 처리를 볼륨을 주어 뜨게 하는 것. 라운드 프루프와 베이지 보이 프루프가 있다. 
_엘레강스(elegance) : 우아, 우미, 품격 높은, 바르고 우아함. 자연스럽게 감도는 부드러운 미. 
_오너먼트(ornament) : 장식품. 장식하는 것. 목걸이나 가슴의 꽃 등. 
_오리지날(original) : 원시의. 고유의. 독창적. 
_오리지날리티(originality) : 독창성. 창조력. 신기술의 구축. 작품의 아이디어, 표현의 수법 등에 작자의 독특한 새로움을 나타내는 성질. 
_오버랩(overlap) : 겹치다. 중복되다. 가닥과 가닥을 겹치는 것. 또한 좌우와 앞의 옷의 길을 적당히 겹치는 것. 부분적 중복을 말한다. 
_오벌 페이스(oval face) : 달걀형의 얼굴. 오벌은 달걀형, 타원형이란 뜻. 
_오브롱(oblong) : 장방형의, 직사각형의. 
_오스트리치 페더(ostrich feather) : 타조 털로 만든 장식. 모자나 머리장식에 사용됨. 
_오프 더 페이스(off the face) : 얼굴로부터 떨어져서라는 의미. 미용 용어에서는 머리를 뒤로 넘겨서 이마를 확실하게 드러내는 헤어스타일을 말한다. 다른 이름으로 풀 백 스타일, 오프 더 브라우가 있음. 
_와인딩(winding) : 모발을 로드에 마는 기법. 랩핑(wrapping)이라고도 한다. 
_원(circle) : 기하학적인 닫힌 곡선 모양으로 원주로 둘러싸여 있으며 중앙의 시작점에서 직경이 일정하다. 
_원랭스 커트(one length cut) : 모발의 컷트선이 일정한 라인을 유지하면서 인사이드와 아웃사이드의 단차가 없는 상태. 
_원 롤(one roll) : 양 귀의 후두부로부터 네이프에 따라서 밖으로 말아, 큰 롤상으로 전테가 말린 머리모양. 봉 모양으로 만들어진 보조머리를 싱으로 사용한다. 
_원심(遠心) : 회전하는 물체가 중심에서 멀어지려는 작용. 
얼굴 바깥으로 모발의 흐름을 갖는 것. 
_위그(wig) : 가발. 
_위로 땋기(over braid) : 바깥 가닥을 가운데 가닥 위로 교대로 겹치는 땋기. 
_위브(weave) : 한 끝에서 다른 끝까지 안과 밖을 엮으며 지나가기. 
_위스피(whispy) : 작은 묶음 상의, 이마에 걸친 머리를 얼굴 쪽으로 말아 발랄해 보이는 머리 스타일을 말한다. 
_윙 스타일(wing style) : 1954년 미국의 봄부터 처음 유행한 것으로 두부 양 사이드를 새의 날개처럼 옆으로 늘어 뜨리고 두정부는 평평하게 한 머리모양. 
_유니섹스(unisex) : 모노섹스. 복장등에서 남녀 구별이 없는 현상. 
_유니크(unique) : 독특한, 종류가 없는. 
_유니티(unity) : 단일, 일치, 합동. 조형미를 만들어내기 위한 기본원리의 하나. 
_유틸리티(utility) : 유효성. 실리. 
_유형(type) : 타입. 어떤 상징을 공유하는 한 무리의 사물에 대해서, 그 특징을 추출하여, 이상화시킨 형식. 유형은 어떤 범위 내에서의 보편적인 것을 말하나, 주로 개별적인 것으로 구체화되어, 형상으로서의 상태를 이룬다. 
_이레귤러(irregular) : 불규칙한, 파격적인, 정돈되지 않은, 규격이 아닌 것. 
_이미지(image): 모습, 모양, 꼴, 상징. 마음속에 그려지는 사물의 감각적인 영상. 
_이미지 라인(image line) : 얼굴, 턱, 두부의 형으로부터 전체 실루엣을 정해 헤어디자인을 위해 만드는 라인. 
_이어 투 이어 라인(ear to ear line) : 귀에서 귀를 잇는 선. 
_이어 투 이어 파트(ear to ear part) : 양귀를 연결한 선이 두정부를 가로로 지나면서 나누어지는 것. 
_익스텐디드 웨이브(extended wave) : 익스텐디드는 넓은, 넓혀진 이란 뜻. 웨이브를 연장한 경우, 우측으로 만 컬의 배열 다음, 좌측으로 만 컬, 그 다음에 다시 우측으로 만 컬로 교차해 배열하는 방법을 말한다. 우측 컬=C (크로크와이즈) 시계방향. 좌측 컬=CC(카운터 크로크 와이즈) 반시계방향. 
_익스텐션(extension) : 신장. 넓이. 붙이는 머리의 일종으로 머리의 길이, 양감, 다른 질감을 더하는 것. 원하는 부위에 자유스럽게 다룰 수 있는 것이 특징. 
_인덴테이션 라인(indentation line) : 거꾸로, 반대방향의 선. 
_인턴(intern) : 실습근무. 미용을 실제적으로 훈련하는 것. 
_인포멀(informal) : 비공식적인, 정식이 아닌. 형식없는 것. 

_잔상(after image) : 주시하고 있는 물체가 사라져버릴 때, 잠시동안 그 형이 눈에 느껴지는 것. 같은 색의 잔상이 보이는 것을 적극적 잔상, 보색이 나타나는 것을 소극적 잔상이라고 한다. 
_장식(decoration) : 꾸미는 것. 장식한 것. 근대에서는 일반적으로 아름다움을 준다는 의미로 쓰인다. 
_조디아크(zodiaque)(불) : 머리 모양의 역사상 가장 기발한 스타일의 하나로 거대한 구체상의 머리에 천체를 조합한 것. 로코코후기, 프랑스 루이 16세 시대에 등장. 
_조형 : 형체를 만드는 것. 좁은 의미로는 조형예술을 가리키지만, 오늘날에는 여러 가지 미술적 요소를 지닌 것을 포함시킨 개념으로서 쓰인다. 또한 입체적 조형의 의미로서 쓰이는 경우도 있다. 
_조형예술 : 물질적 재료에 형태를 주는 것으로 공간적으로 고정되어, 시각에 호소하는 예술. 건축, 조각, 회화, 장식품 등의 총칭. 
_조화(harmony) : 한 가지 혹은 몇 가지 점에서 비슷한 단위들의 어울리는 혼합으로 모두가 다 같지는 않다. 어긋남이 없이 서로 잘 어울림. 
_지그쟈그(zigzag) : 지그재그. 
_진행(progression) : 모든 단위가 비슷하지만 비례에 따라 커지거나 작아지면 점진적으로 변화한다. 
_질감(texture) : 물질 그 자체의 독특한 재질의 느낌. 매끈매끈, 꺼칠꺼칠 한 것은 질감을 나타내는 말이며, 헤어스타일에서 질감은 시각적, 촉각적인 표현방식으로 전체 이미지에 강하게 영향을 미친다. 

_창작 : 예술적 감동을 문예, 회화, 음악 등의 작품으로서 독창적으로 표현하는 것. 그 심리과정에는 창작적 기분, 착상, 연상, 완성의 단계가 있다. 
_축(axis) : 어떤 물체의 주위를 회전하는 가상의 직선. 

_카우릭 파트(cowlick part) : 가르마를 타는 방법의 하나. 가마를 중심으로 해서 자연스런 머리의 흐름에 따라서 나누는 방법. 노파트로 된다. 
_커런트(current) : 유행의, 현재의, 사조, 풍조. 
_컨벡스(convex) : 구의 표면과 같이 바깥쪽으로 휘어진 모양. 
_컨슈머(consumer) : 소비자. 
_컨스트럭션(construction) : 구성, 구조. 
_컨케이브(concave) : 움푹 들어갔다는 의미. 기본적인 컷 라인의 하나로 인레이어와 아웃레이어로 구성되어 들어간 라인의 모양. 
_컨트라스트(contrast): 대조, 대비. 
_컨트롤(control) : 조절, 통제, 조정. 
_컬(curl) : 머리를 마는 것. 또는 말린 머리 그 자체. 컬의 목적은 웨이브를 만드는 것. 앞 머리에 변화를 주기 위하여, 볼륨감을 만들기 위해서 등이다. 
_컬러(curler) : 컬을 만들어 주는 말이 기구. 
_컴비네이션(combination) : 결합, 조합, 배합, 공동. 
_컴포지션(composition) : 작문, 구도, 구성. 여러 부분을 하나의 전체로 구성하는 수단. 
_코로넷(coronet) : 금이나 보석, 꽃 등으로 만들어진 부인용 머리장식. 원래는 왕족과 귀족의 왕관. 
_코밍(combing) : 빗을 이용해서 머리를 빗는 것. 
_코스튬(costume) : 복장, 머리모양 등을 포함하여, 어떤 국민, 계급, 지방, 시대 등에 특유한 옷차림. 의상, 특히 부인복. 연극의 시대의상. 
_코이퓨어(coiffeur)(불) : 꽃 머리 장식. 생화, 조화 또는 생화와 조화를 엮어 만든다. 귀여운 신부를 연출할 때 쓰는 소품의 하나. 
_콘 로잉(cornrowing) : 머리카락을 조금씩 나누어서 땋고, 그것을 전체형으로 만드는 머리모양. 콘로우는 옥수수 낱알의 열을 없애서 죽 늘어놓은 것. 1980년대부터 레게의 인기와 함께 일반에 알려지게 되었다. 
_콤(comb) : 빗. 
_콤 아웃(comb out) : 마무리 테크닉. 오리지날 셋에서 대충 형을 갖춘 머리를 콤이나 브러시로 희망하는 형으로 만드는 것. 
_크라운(crown) : 관. 옛날에 왕이 쓰던 위엄을 드높이는 장식구이었지만, 최근에는 신부가 웨딩 드레스에 맞추어 사용하는 대표적인 햇 드레스 정도가 되었다. 두부의 한 섹션. 전두부로 부터 후두부에 걸친 부분을 가리킨다. 
_크레스트(crest) : 볏, 깃털 장식, 파도의 가장 높은 곳. 웨이브의 가장 높은 부분. 
_크로스 피닝(cross pinning) : 십자로 교차시켜 핀을 꽂는 것. 
_크리에이트(create) : 창출하다. 창작하다. 
_클립(clip) : 모발을 일시 고정하기 위한 금속기구. 웨이브나 컬을 만들 때 머리에 끼우는 금속기구. 
_키스 컬(kiss curl): 17세기부터 유행한 것으로 뺨으로부터 옷깃에 걸친 애교머리. 

_타원(oval) : 원주로 둘러싸여진 기하학적 닫힌 곡선. 
_타이트(tight) : 꼭 끼다. 틈이 없는, 꽉 죄이다, 꼭 들어맞다 등의 의미. 
_테크니컬(technical) : 기술적인, 전문적인. 
_텐션(tension) : 장력, 팽팽하게 당겨지는 힘. 
_템플(temple) : 성당. 신전. 관자놀이. 측두부. 
_톱(top) : 정상. 선단. 최고위. 수상. 
_톱 헤어(top hair) : 두정부의 머리. 
_통일(unity) : 많은 것을 하나로 정리하는 것. 모든 요소, 소재 또는 조건을 선택하고 정리하여 하나의 완성체로 만드는 것. 철학적으로는 여러 가지의 몇가지 방법을 써서 하나로 보여지게 만드는 것. 예술작품에서는 작자의 개성이 통일의 주체가 된다. 
_투피(toupee) : 머리, 딴머리.(덧 넣는 머리) 
_트라이앵귤러 베이스(triangular base) : 삼각베이스. 
_트랜드(trend) : 방향, 경향. 
_트리밍(trimming) : 손질하는 것. 불필요한 부분을 버리고, 전체를 정리하는 등의 의미가 있다. 미용에서는 컷 기술의 하나. 형을 다 갖춘 라인을 희망하는 스타일로 마무리하기 위해서 머리끝을 가볍게 컷하는 기법. 
_트위스트(twist) : 꼬다. 비틀다. 1961년경부터, 세계 각 국의 젊은이들 사이에서 크게 유행한 춤. 

_파나쉬(panache)(불) : 깃털 장식(파나쉬)이 가볍게 겹쳐진 듯한 스타일. 프랑스 고등미용조합(SHCF)이 1952년 추동 시즌에 발표한 것. 
_파트레스(partless) : 모발에 나누어진 부분이 없는 것. 노 파트라고도 말함. 
_파티션(partition) : 분할, 경계의 나눔. 
_패널(panel) 
_ 미용에서는 가는 판상으로 나눈 머리. 
_ 건축용어로 벽, 천장, 창문 등의 틀 안에 싸여진 판. 벽판, 우목판. 
_ 디자인 용어, 종이를 펼치기 위한 틀, 판. 또는 포스터 등을 게시하는 판. 
_패러렐(parallel): 평행, 상이, 비교. 
_패셔너블(fashionable) : 유행의. 당 시대 풍의. 
_패턴(patten) : 형, 유형. 
_퍼룸(forum) : 소재, 질감, 양감, 움직임 등을 가미해서 만들어진 형. 
_퍼스탈리티(personality) : 개성, 인격. 
_퍼워드 컬(forward curl) : 귀의 외각에 따라 위에서 아래의 방향(전방)으로 말려진 컬. 
_퍼포먼스(performance) : 연기, 행사, 여흥, 성과, 행위, 순서. 예술의 완결성에 대하여 역의 기원을 두고 있는 미래파, 다다이즘 등의 표현행위에 의한 것으로, 우연성을 중시하는, ‘과정’ 의 작품을 말한다. 
_펑크스타일(punk style) : 머리 정수리 쪽의 머리카락이 가볍게 위로 치켜 올라가는 형. 
_페이스(face) : 얼굴, 얼굴 모양. 
_포니테일 (ponytail) : 1950년대에 미국의 10대 소녀들 사이에 크게 유행된 스타일로 지금도 끈질기게 인기가 거듭되고 있다. 뒷머리 부분의 머리 다발을 글자 그대로 말의 꼬리와 같이 내려진 머리형으로 쥬니어에게 어울리는 헤어스타일의 기본형이다. 그 후 성인 여성의 머리형으로도 크게 발전했다. 이것도 일종의 노트 스타일이라고 할 수 있다. 머리전체를 하나로 모아 정수리 위에 묶는 것. 
_포멀(formal) : 형식의, 정식의, 의례적인. 
_포워드 롤(forward roll) : 머리의 앞부분이 포워드가 된 스탠드 업 컬의 일종으로, 포워드 컬에 비교해 말린 머리의 폭이 넓은 롤의 형태가 된다. 
_포인트(point) : 요점, 시, 장소, 중요한 점. 
_포커 페이스(poker face) : 무표정한 얼굴. 
_퐁타쥬(fontage)(불) : 17세기말을 장식한 대표적 머리모양. 프랑스의 루이 14세의 애인 퐁타쥬가 고안하였다고 한다. 철사를 넣어서 정면을 넓게 만 컬의 묶음으로 장식하여 컬의 부족부분은 가발로 메운다. 여기에 퐁타쥬라고 불리는 부채꼴의 본넷을 앞 방향에 휘어진 모양으로 다는 머리모양. 
_폼(form) : 형, 형식, 자태, 형태. 
_퐁파두르(pompadour)(불) : 이마 선으로부터 앞머리 전체를 높게 올린 스타일을 말한다. 루이15세의 애인 퐁파두르 백작부인의 머리형에서 유래한 유명한 헤어스타일로 오늘날에도 유행 머리의 기본형의 하나로 되어 있다. 시뇽과 함께 포멀 헤어스타일의 대표격이다. 높이를 강조한 대표적인 머리모양. 원래는 테를 떼어서 위를 향하게 한 타운웨어 취향의 모자의 호칭이었다. 
_표현(expression!) : 심적 상태와 정신적, 주체적인 것을 외면적, 감성적 형상으로 나타내는 것. 창작의 근본작용으로, 내적인 표현을 예술적 형식의 결정체로 만드는 점에서 표출과 구별되어 사용된다. 
_플렛 컬(flat curl) : 납작하게 맨 살갗에 살짝 붙는 컬. 
_프로세스(process) : 과정, 순서. 
_프로포션(proportion) : 부분과 부분, 부분과 전체 길이의 비 등의 수량적 관계. 
_프로필(profile) : 옆얼굴, 측면관, 약력. 
_프런트(front) : 전두부. 
_피봇 포인트(pivot point) : 컬의 기점. 회전하는 포인트. 피봇은 선회축, 급소, 중심점, 회전하다 의 의미. 

_하모니(harmony) : 조화, 화합. 
_하트 브레이커(heart breaker) : 17세기, 남성을 힌트로 프랑스 궁정의 여성사이에서 유행한 머리모양. 러브 록과 함께 유행함. 옷깃에 걸치는 애교머리. 좌측 사이드의 머리를 일부분 길게 늘어뜨린 것. 
_햄 라인(hem line) : 머리가 나기 시작한 선. 
_헤비(heavy) : 무거운. 모량이 많은 느낌. 
_헤비 사이드(heavy side) : 파트를 나눈 경우, 머리 양이 극단적으로 많은 쪽을 가리킨다. 
_헤어 네트(hair net) : 머리의 흐트러짐을 방지하는 네트(그물). 
_헤어 모드(hair mode) : 머리 모양의 유행. 
_헤어 세팅(hair setting) : 머리카락을 특정의 위치, 상태에 놓는다는 것. 
_헤어 피스(hair piece) : 머리의 일부분에 붙이는 가발. 붙임 머리. 
_형태(form) : 디자인의 외형이나 윤곽선. 디자인의 3차원 모양. 
_호리존탈 웨이브(horizontal wave):호리존탈은 지평선, 수평선의 의미. 웨이브의 릿지가 수평으로 되어있는 것. 
_히피 스타일(hippie style) : 히피는 기성세대의 제도나 관습에 부정적인 젊은이들의 집합을 말함. 1960년대 후반, 미국에서 일어남. 장발에 비전통적 복장, 반문명적인 행동이 특징. 

Posted by 뭉치냐옹
:

treeview_shimpark.zip


출처 : 고수닷넷/GosuWeb/Article-detail.aspx?ArticleCode=1250

이번에는 새로 vs 2005 에서 제공하는 트리에 대해서 설명을 하고자 합니다.

 

다들 아시겠지만, 새로 접근하시는 분들을 위해서 강좌를 올리고자 합니다.

 

기존의 1.1 에는 treeview 컨트롤을 제공하지 않아서 유로 컴포넌트를 사던가 아니면

 

기존 vs.net 2003 에서 제공하지 않았지만, 비스무리한 treeview 를 제공한 iewebcontrol 이라는

 

것을 제공했습니다. 하지만 다루기가 만만치 않고, 까다롭고 많은 기능이 없어서 사용하기가

 

너무 어렵더군요.

 

따라서 서버 컨트롤인 treeview 가 vs 2005에서 제공해 주어서 편리하게 다루게 되었습니다.

 

우선 aspx 단에 아래와 같이 코딩을 합니다.

 

 

 

 

 <asp:TreeView ID="TreeView1" runat="server" OnTreeNodePopulate="TreeView1_TreeNodePopulate" ShowLines="True"
            >
            <Nodes>
                <asp:TreeNode Text="Customers" Value="Customers" PopulateOnDemand="True" Expanded="False"></asp:TreeNode>
            </Nodes>
        </asp:TreeView>

 

트리뷰를 aspx 디자인 페이지에 끌어다 두어서 위와 같이 편집을 하면 됩니다.

여기서 OnTreeNodePopulate 메소드는 TreeView 컨트롤의 TreeNodePopulate 이벤트를 발생시킵니다.  그러면 TreeNodePopulate 메소드가 하는 역할이 뭘까요?

"TreeView 컨트롤에서 PopulateOnDemand 속성이 true로 설정된 노드를 확장할 때 발생합니다. "

라도 설명이 되어 있더군요.  PopulateOnDemand 를 true 로 설정하면 트리의 노드를 확장시킬수

있고, 이벤트 시킬수 있다는 의미랍니다.

 

그래서  <asp:TreeNode Text="Customers" Value="Customers" PopulateOnDemand="True" Expanded="False"></asp:TreeNode> 의 소스를 보면 PopulateOnDemand 의 속성값을 true 로

주었습니다. 따라서 비하인드에 기술된 protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e) 메소드를 노드 클릭시 이벤트가 발생된다는 의미지요.

 

ShowLines 메소드는 트리 보여줄때 선을 보여줄지를 의미합니다. 보여주면 뽀대가..좀 나겠죠? ㅋㅋ

 

그리고 처음 tree를 페이지에 뜰경우 Text="Customers" Value="Customers" 을 지정해서 최상위

트리에 Customers 라는 트리노드의 글자가 나타나도록 해둡니다. 아무것도 안뜨면 트리의 어디

부분을 클릭해서 하위노드를 펼쳐줄 수 없잖아요.. ^^

흠..그리고 Expanded 가 false 라고 되어 있죠? 이 부분은 노드가 확장 상태인지 여부를 나타내는 값을 가져오거나 설정합니다. 따라서 지금은 최상위 노드만 보여주고 하위노드는 클릭시 나타나도록

하기 위해서  false 로 했습니다.

 

그려면..한번 로딩해볼까요? 비하인드는 아무것도 기술하지 않고요.

 



그러면 이제 저...노드를 클릭하면 이벤트를 발행시켜서 하위 노드를 추가해서 뽀대나는 트리를

구현해 보죠.

 

노드를 선택할 경우 이벤트를 발생하는 메소드를 구현해보죠.

 

protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
    {
        switch (e.Node.Depth)
        {
            case 0:
                FillCustomers(e.Node);
                break;
            case 1:
                FillOrders(e.Node);
                break;
        }
    }

 

depth 는 말그대로 깊이라는 의미인데요. 최상위 노드는 0 이고 그 밑의 자식은 1이 되겠죠?

1의 자식은 2가 되는거고요.

 

처음 노드를 클릭할 경우 0일 테고 FillCustomers(e.Node) 메소드를 실행하러 가겠죠?

 

private void FillCustomers(TreeNode parent)
    {
        DataSet ds = GetDataSet("select customerid,companyname from customers order by companyname");
        foreach (DataRow row in ds.Tables[0].Rows)
        {
            TreeNode node = new TreeNode();
            node.Text = row["companyname"].ToString();
            node.Value = row["customerid"].ToString();
            node.PopulateOnDemand = true;
            node.SelectAction = TreeNodeSelectAction.SelectExpand;
            parent.ChildNodes.Add(node);
        }
    }

 

 

GetDataSet 메소드는 실행할 경우 쿼리를 실행한 DataSet 값을 리턴해 줄것이고요. 그 DataSet

값을 받아 foreach 문을 실행해서 각각의 노드에 Text, Value , PopulateOnDemand 메소드 값 설정,

노드가 선택 모드에 있는 경우 노드가 선택될 때 발생하는 이벤트를 지정하려면 SelectAction 속성을 사용합니다. 그 속성에 TreeNodeSelectAction.SelectExpand 를 지정했는데요.

노드가 선택될 때 SelectedNodeChanged 이벤트와 TreeNodeExpanded 이벤트를 모두 발생시킬수 있답니다. 노드는 확장할 수만 있고 축소할 수는 없는 기능입니다.

이 기능뿐만 아니라 아래와 같은 기능들이 총 3가지 더 있습니다.

msdn 이 설치 되어 있다면 ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.ko/cpref16/html/P_System_Web_UI_WebControls_TreeNode_SelectAction.htm을 확인해 보시기 바랍니다.

 

 

하위 노드를 추가할 경우, parent.ChildNodes.Add(node); 을 사용하고 있는것을 살펴보고 있어요.

부모.자식.Add(node특성값) 이라는 구조를 가지고 있죠. ChildNodes 메소드를 추가해서 하위노드를

추가하는 모습을 볼 수 있죠.

 

 

이제 실행을 해볼까요?

 

 



위처럼 최상위 노드의 자식인 1depth 에 위 그림 처럼 출력이 됩니다.

 

그러면 저 1depth 의 많은 자식들 중에도 그 아래의 하위 자식들이 각각 있겠죠?

그러면 sql 쿼리의 where 조건에 선택한 노드의 값을 넣어서 그 밑의 자식값을 추출해와서

2depth 의 하위조직을 만들 수 있겠죠.

 

 case 1:
                FillOrders(e.Node);
                break;

 

위에서 보셨던 이벤트에서 기술한 소스 입니다.  이제 FillOrders 를 볼까요?

 

 

private void FillOrders(TreeNode parent)
    {
        DataSet ds = GetDataSet("select customerid,orderid from orders where customerid='" + parent.Value + "'");
        foreach (DataRow row in ds.Tables[0].Rows)
        {
            TreeNode node = new TreeNode();
            node.Text = row["orderid"].ToString();
            node.Value = row["orderid"].ToString();
            node.PopulateOnDemand = false;
            node.SelectAction = TreeNodeSelectAction.SelectExpand;
            parent.ChildNodes.Add(node);
        }
    }

 

거의 동일하죠??? 다른 점은 where 조건문을 보시면 알게 될겁니다.

선택한 노트의 값을 얻고자 한다면 parent.Value 을 사용하시면 값을 얻을 수 있습니다.

그 밑에 기술한 속성은 이미 위에서 미리 설명해서 여기서는 말씀드리지 않겠습니다.

 

 

어떠세요? 쉽게 제가 설명을 했는지 모르겠네요. 간단한 기능만 제가 설명을 해드렸는데요.

이 트리는 노드를 한번 선택했을 경우 sql 에서 값을 받아 노드를 셋팅하고, 다시 그 노드를

접거나 펼칠경우 이벤트를 다시 타서 sql 문을 실행하지 않으므로 속도면을 걱정할 필요는

없을 듯 합니다.

 

 

 

첨부해 드리니 테스트 해보시기 바랍니다.

감사합니다.

 

 

 

=======================================

사이트 : http://cafe.daum.net/aspdotnet

작성자 : 심재운

메일 : shimpark@gmail.com

=======================================



Posted by 뭉치냐옹
:

현업에서 그리드 헤더컬럼 수정요청시 VB스크립트 함수의 인덱스값을 수정해야 하는데
자동으로 VB스크립트 함수의 인덱스값을 수정해주는 프로그램이다.

/*프로그램명 : 그리드 컬럼 순서 변경
VSFlexGrid 헤더컬럼 편집시
그리드 인덱스값을 참조하는 함수에서 변경된 인덱스값을  자동으로 수정해주는 프로그램이다.
초기화버튼 클릭시 기존 그리드헤더를 단순화한후 출력해준다.
신규추가헤더구성버튼 클릭시 변경후 항목에 신규로추가된 컬럼을 포함한 html 소스를 출력해준다.
신규추가넓이구성버튼 클릭시 변경후 항목에 입력된 html 소스를 재출력 해준다.
신규추가정렬구성버튼 클릭시 변경후 항목에 입력된 html 소스를 재출력 해준다.
변경전 항목은 필터링된 단순헤더 순서
변경후 항목은 신규추가 컬럼을 입력하는 항목이다.
그리드헤더구성 항목은 초기에는 기본필터링 단순헤더 html 소스가 셋팅이되며 변경후 항목에서 신규추가 컬럼을 입력한후 신규추가헤더구성버튼을 클릭하면 신규추가 컬럼이 추가된 최종 html 소스를 표시해 준다.
본문삭제버튼 클릭시 전체 항목 초기화.
내용삭제버튼 클릭시 본문을 제외한 나머지항목 초기화.

그리드 컬럼 순서 변경 기본작업순서
1. 이전 그리드 헤더 html 소스 복사후 초기화버튼 항목에 붙여넣기
2. 초기화버튼 클릭
3-1. 그리드헤더 순서변경시에는 그리드헤더구성에 출력된 html 소스를 복사후 VS붙여넣기 한뒤 수정작업을 한다.
3-2. 그리드헤더 신규추가시에는 변경후 항목에 신규컬럼을 추가한뒤 신규추가헤더구성버튼 클릭후 그리드헤더구성 항목에 출력된 html 소스를 복사후 VS붙여넣기 한뒤 수정작업을 한다.
4. 그리드 GetSet Data 인덱스 수정 프로그램 실행후 수정작업을 한다.
*/

/*프로그램명 : 그리드 GetSet Data 인덱스 수정
VSFlexGrid 헤더컬럼 편집시 (현재 프로그램 실행전에 그리드 컬럼 순서 변경 프로그램 실행후 작업이 완료된 상태여야 한다.)
그리드 인덱스값을 참조하는 함수에서 변경된 인덱스값을  자동으로 수정해주는 프로그램이다.
(수정 인덱스 소스 : TextMatrix, ColKey, ColData)
이프로그램을 사용시 반드시 VB스크립트 함수단위로 사용을 해야한다.
작업하려는 함수는 반드시 Replace 작업을 우선적으로 해야한다.
(Replace 작업 : 콤마뒤 빈칸 제거 (i, , TextMatrix 문자열변환, ColKey 문자열변환, ColData 문자열변환 )
Replace 작업이 완료된 VB스크립트함수를 복사한뒤 첫번째 텍스트박스에 붙여넣는다.
변경항목은 그리드헤더중 순서가 변경되는 컬럼의 인덱스번호를 입력한다.
변경항목 인덱스 입력후 변경버튼 클릭시 VB스크립트 함수내에서 변경항목에 입력한 인덱스로 인해 전체적으로 인덱스값이 변경된 VB스크립트함수 소스를 추출한다.
이동항목은 그리드헤더중 순서가 변경되는 한개의 컬럼의 현재 인덱스번호와 이동할 인덱스번호를 입력한다.
이동항목 인덱스 입력후 이동버튼 클릭시 VB스크립트 함수내에서 이동항목에 입력한 인덱스로 인해 전체적으로 인덱스값이 변경된 VB스크립트함수 소스를 추출한다.
신규항목은 그리드헤더중 신규로 추가된 컬럼의 인덱스번호를 입력한다.
신규항목 인덱스 입력후 신규추가버튼 클릭시 VB스크립트 함수내에서 신규항목에 입력한 인덱스로 인해 전체적으로 인덱스값이 변경된 VB스크립트함수 소스를 추출한다.
본문삭제버튼 클릭시 전체 항목 초기화.
내용삭제버튼 클릭시 본문을 제외한 나머지항목 초기화.
*/





Posted by 뭉치냐옹
:
[본식촬영] 본식촬영DVD 업체모음

본식촬영을멋지게하고싶어서웹서핑의입소문을타고여기저기알아봤습니다.

 

맘에들면제예식날짜까진6~5개월전인데도불구하고

벌써선약이걸려있거나..(부지런한신부님들너무많으세요!!!^^;;)

비용이내예산과맞지않아 포기하게되었습니다.

 

이젠필요없는정보들이라그냥버려도되는데...

저처럼뭣모르고검색하느라 고생하시는분들도계실것같아서...

조금이남아도움이되고자정리해서올려봅니다.

 

샘플영상들이각사이트에들어가시면있으니 관심있으신홈페이지에가셔서 샘플구경도해보세요. 

 

 

러브인스토리http://www.loveinstory.co.kr/

: 본식 스냅촬영도함께한다고합니다. 편집도로맨틱하니깔끔하고예뻐서가장맘에들었어요.

 

 

뉴타입필름http://www.newtypefilm.com/

: 본식촬영을아래서위로촬영한게많아서분위기있고사람이슬립하고길게잘나오는것같아서맘에들었어요.

 

 

웨스턴필름 club.cyworld.com/westernfilm

: 일반 신부님들사이에서은근입소문이나있는곳인것같았어요.

  촬영업체정보찾느라웹서핑하면서여기촬영예약했단글들을여러번봤어요.

 

 

뮤미디어 http://www.muemedia.com/

 : 예비신부웨딩동우회사이트에서알게된정보인데...

   가격이저렴하고 편집이나촬영이괜찮아서무난한것 같아요.

 

 

엠필  http://www.emplproduction.co.kr/

: 가격이저렴하고 편집도잘되있고영상도멋져서 여기가맘에들었는데...

  5개월전에예약문의를했는데도 이미예약이꽉꽉다찼더라구요.

Posted by 뭉치냐옹
:

티스토리

카테고리 없음 2009. 3. 20. 16:55 |
Posted by 뭉치냐옹
:

이미지맵

카테고리 없음 2009. 3. 18. 14:07 |

<img src="/images/Event/20090213/Watchmen_body_01.jpg" border="0" usemap="#Map"/>
<map name="Map" id="Map">
      <area shape="rect" coords="x1,y1,x2,y2" href="/Event/Event_003_01.aspx" />
</map>

방법1.
x1,y1 : 알씨실행후 왼쪽 상단 포인터값
x2,y2 : 알씨실행후 우쪽 하단 포인터값


방법2.
지정하려고 하는 이미지 우측하단 꼭지점 부터 좌측상단 꼭지점 까지 드래그한 좌표값
Posted by 뭉치냐옹
:

1. absolute
ex)
 <div id="Layer1" style="position : absolute; top:200px; left:100px; width=100px; height:100px">contents</div>
흔히, 레이어라는 개념으로 알고있는 값이다.
웹브라우저 페이지를 기준으로 위치를 지정한다.

2. relative
ex)
<table id="MyTable" border="0" cellpadding="0" cellspacing="0" width="500">
<tr>
 <td><div id="Layer1" style="position : relative; top:0; left:0; width=100px; height:100px">contents</div></td>
</tr>
</table>

보통, 개체(table)에 종속적이다. 그 개체를 기준으로 위치를 지정한다.
위 예시의 경우 div는 MyTable 테이블을 기준으로(테이블안쪽) 좌상단에 위치한다

Posted by 뭉치냐옹
:

다음의 경우 T1은 강의테이블이고 T2는 강의를 들은 회원의 로그가 들어있는 테이블이다.

이경우 아래 2개의 쿼리중 옳은 것은?

 

[1번쿼리]

select T1.C1 강의코드,T2.C4 들은시각 from T1 a left outer join T2 b

on (a.C1 = b.C1 and a.C2=b.C2 and b.C3='특정사용자ID')

where a.C2='특정과목코드'

 

[2번쿼리]

select T1.C1 강의코드,T2.C4 들은시각 from T1 a left outer join T2 b

on (a.C1 = b.C1 and a.C2=b.C2 )

where a.C2='특정과목코드' and b.C3='특정사용자ID'

 

정답: 1번

 

설명: outer join 에서 옵셔널테이블(left join 이므로 right 에 있는 테이블이 옵셔널 테이블)의 상수조건(b.Column='일정한값' 이 되는 조건)은 관계(on 절)에 명시되어야 하지 필터링 조건(where 절) 에

명시되면 안된다.

 

2번쿼리의경우 b.C3 의 값을 where 절에 정의하게 되면 outer join 이 아니라 inner join이 되어

특정과목의 강의를 볼 수 없게 된다.


Posted by 뭉치냐옹
:

전면삼각근에서 후면삼각근까지 고루 단련하는 5가지 어깨운동을 시도한다

삼각근 훈련은 비교적 간단하게 구성된다. 단순관절운동과 복합관절운동을 조합해 세 개의 삼각근 머리를 고루 자극하는 것이 목표다. 어깨운동을 다양하게 응용한 5가지의 운동에 몰입해보자.

< 소개할 운동 >
- 시티드 오버헤드 덤벨 프레스
- 시티드 덤벨 래터럴 레이즈
- EZ-바 업라이트 로우
- 프런트 바벨 레이즈
- 리버스 펙-덱 플라이

시티드 오버헤드 덤벨 프레스(Seated Overhead Dumbbell Press)
덤벨은 오버헤드 프레스를 응용하기 좋은 방법 중 하나이다. 이것은 복합관절운동인데 어깨의 근매스를 한 가지 동작으로 대폭 향상시키는 효과가 있다. 저반복으로 할 때는 고중량으로 실시한다. 훈련의 처음에 하는 것이 좋다.
덤벨 대신 바벨로 바꾸어서(스미스 머신이나 프리 바) 함으로써 삼각근 훈련에 변화를 준다. 덤벨은 바벨보다 균형을 잡는 것이 더 어려우므로 바벨 프레스를 할 때보다 가벼운 중량으로 한다.
이 운동 후 단순관절운동을 이어서 한다. 그러면 세 개의 삼각근을 각각 골고루 자극하게 된다.

A
그립
오버핸드 그립으로 덤벨을 쥐고 엄지손가락으로 바를 감싸 최대한 균형을 유지한다.

자세
벤치에 똑바로 앉아서 가슴은 활짝 펴고 어깨를 뒤로 젖힌다. 허리는 아치형으로 유지하고 복부는 단단히 조인다. 발을 지면에 평평히 붙인다. 덤벨을 귀 옆에서 약간 앞쪽으로 위치시킨다.

각도
하위지점에서 상완은 지면과 평행을 이루고 팔꿈치는 양끝에서 바깥쪽을 향한다. 전완은 약간 안쪽으로 구부려 중량조절을 돕는다.

자세
머리를 곧게 들고 시선은 정면을 주시한다.

주의사항
하위지점에서 튕기듯 들어 올리면 관절에 과중한 부담이 된다.

B
요령
튕기듯 동작하지 말고 부드럽게 움직인다.

동작
덤벨을 들어올려 상위지점에서 서로 모은다. 덤벨이 서로 거의 맞닿을 때가지 팔을 완전히 뻗는다.
키 포인트
뉴트럴 그립(양손바닥이 마주 보는)은 전면삼각근과 흉근 상부를 상당량 자극하는 자세이다. 팔꿈치가 바깥쪽이 아닌 앞으로 나오도록 한다.

호흡
상위지점에서 숨을 내쉰다.

속도
상위지점에서 강력하되 천천히 수축한다. 잠시 멈춘 뒤 동작을 거꾸로 하며 시작자세로 돌아온다.

주의사항
피로를 느끼면 머리 위로 덤벨을 들어올리는 동작이 제대로 이루어 지지 않게 된다. 필요하다면 파트너에게 보조를 받도록 한다.

대체운동
머신 오버헤드 프레스
아놀드 프레스 스탠딩 밀리터리 프레스
시티드 바벨 프레스

-Part.2에서 계속-

김진건 기자(muscle@mnfkorea.com)
copyright ⓒ 건강과근육. 무단전재 및 재배포 금지(www.mnfkorea.com)

http://sports.media.daum.net/nms/general/expert/muscle&fitness/view.do?cate=25671&type=c&newsid=1137111

Posted by 뭉치냐옹
:
1순위
http://www.honeytree.co.kr/product/detail.asp?ctg_id=020100&prod_idx=375&term_idx=989


블로그

엘니도
http://blog.daum.net/admission
http://blog.daum.net/palawan21/25?srchid=BR1http%3A%2F%2Fblog.daum.net%2Fpalawan21%2F25
http://www.onfill.com
http://www.onfill.com/cts/recipe/BSdayV.asp?r=165

보라카이
디스커버리 쇼어 리조트 : http://www.onfill.com/cts/honey/BSstoryV.asp?r=462&p=1&editor_id=
더 타이드 리조트 : http://www.onfill.com/cts/honey/BSstoryV.asp?r=463&amp;p=1&amp;editor_id=

보라카이 후기
http://cafe.daum.net/zzanggirls/4QkF/394?docid=1DhKf|4QkF|394|20090125121647&q=%C7%C1%B6%F3%C0%CC%B5%A5%C0%CC%C1%EE&srchid=CCB1DhKf|4QkF|394|20090125121647

http://monsterdesign.tistory.com/298?srchid=BR1http%3A%2F%2Fmonsterdesign.tistory.com%2F298


여행사
http://www.honeystory.co.kr/default.asp
http://www.jintour.co.kr/


리조트
3. 파라다이스 가든 - 숲속의 작은 궁전이라는 애칭이 있을 정도로 정원이 너무나도 이쁜 리조트입니다.
다른 리조트들이 수영장과 건물 형태가 전부라면 파라다이스는 넓은 부지에 
파란 잔디 밭이 있는 정원을 갖추고 있기에 이국적인 느낌을 그대로 받을 수
있다.
다만 비치까지의 거리가 3~4분 정도 도보로 떨어져 있다는 것 객실 타입은 디럭스 룸, VIP룸, 오리엔탈 스윗 룸으로 나누어 지는데 디럭스 룸의 경우 허니문 객실로 적합하지 않으며 VIP룸 정도 이용하는 편이 좋다.
오리엔탈 스윗 룸은 거실과 침실이 분리된 형태의 룸으로 일반 룸에 비해 
2배 정도 크고 넓은 형태로 객실 내부 또한 현대적 컨셉을 갖추고 있다
 
4. 더 타이드 - 2007년 6월 신규 오픈한 리조트로 보라카이 뉴타운이라 할 수 있는 D몰 바로 옆에 있는 리조트로 디스커버리 다음으로 현대적인 객실
타입을 갖춘 리조트이다.
수영장이 1층에 있는 것이 아니 건물 옥상에 위치하고 있는 특이한 형태를 
띄고 있으며 수영장에서 바다가 보이는 전망을 갖추고 있다.
객실 타입은 에센셜 룸과 엑셉셔널 룸 두가지 형태로 나누어지며 객실 사이
즈는 동일하나 에센셜 룸에는 샤워부스는 있으나 욕조가 없으며 엑셉셔널 룸
에는 욕조가 있다라는 점 정도 객실 내부는 차이가 있다
Posted by 뭉치냐옹
:

반대말 사전

KMS/영어 2009. 3. 4. 11:41 |
Posted by 뭉치냐옹
:

“집회·시위는 시민의 권리 경찰은 도와줄 의무가 있다”
경찰종합학교 교장 박종환씨가 퇴임하면서 경찰의 가장 큰 의무는 인권 보호라고 밝혀 경찰 통신망을 뜨겁게 달궜다.
[76호] 2009년 02월 23일 (월) 15:32:02 문정우 대기자 mjw21@sisain.co.kr
   
ⓒ시사IN 백승기
박종환, 1954년 출생. 충북 음성 경찰서장, 경기 용인경찰서장, 서울 용산경찰서장, 서울청 감사관, 제주경찰청장, 충북경찰청장, 경찰종합학교 교장.
이명박 정부 들어와 국민과 가장 ‘가까워진’ 정부 기관은 아마도 경찰일 것이다. 촛불 시위에서부터 용산 참사까지 소통보다는 밀어붙이기에 능한 이명박 정부와 코드를 맞추려다 보니 경찰은 국민과 직접 몸으로 부딪히는 신세가 됐다. 어찌나 욕을 많이 먹는지 실로 오랜만에 온 나라가 경찰청장 이름을 외울 정도다. 정권에 충성을 다했지만 조직의 위상이 강화된 것도 없다. 어청수 경찰청장과 김석기 내정자가 울면서 옷을 벗어야 했다. 정권의 방패막이를 자처하다 폐기처분된 꼴이라는 탄식이 조직 내부에서 나온다. 그런 가운데 경찰 내부 통신망이 들끓는 일이 발생했다. 지난 2월18일 명예퇴직한 박종환 전 경찰종합학교 교장의 퇴임사가 전해진 것이다. 그는 경찰이 인권을 고려해야 하며 소수자를 따뜻하게 배려해야 한다고 말했다. 어 청장과 김 내정자가 그만두면서도 끝까지 법 질서를 강조했던 것과는 대조적이다. 효순·미선 양 사건과 제주 한·미 FTA 사건 시위에 대처한 경험이 있는 그를 퇴임한 바로 다음 날인 2월19일 인터뷰했다. 그는 우직한 경찰이고자 했던 자신을 ‘민주 투사’로 그리지 말아달라고 부탁했다. 

퇴임식 뒤풀이가 성황이었다고 들었다. 무슨 얘기들을 했나?
전국에서 나를 따르던 중·하위 계급 경찰관과 퇴직 경찰관 30여 명이 찾아와줘 늦게까지 술 좀 했다.(웃음) 경찰이 경찰권을 행사하더라도 헌법 명령에 따라야 하지 않느냐, 법 질서를 잡자고 하더라도 균형 잡힌 사고를 해야 하지 않느냐는 얘기들을 심각하게 나눴다. 굳이 KDI의 통계를 들먹이지 않더라도 법 질서를 유지하지 못하면 국가 손실이 크다는 것은 누구나 공감하는 사실이다. 하지만 그 못지않게 헌법과 천부 인권도 중요하다. 경찰권 행사가 정당성을 인정받으려면 국민의 인권을 보호하고, 소수자의 절박한 요구에 귀 기울여야 한다. 경찰 편의, 경찰 중심으로 대처해선 안 된다. 국민이 어느 한 군데가 응어리져 있다고 느낀다면 법 질서 유지 자체가 불가능하다.

현장 요원들에게는 너무 원론적이어서 공허하게 들릴 수 있지 않겠나?
원론은 중요하다. 지휘관이 강경대응만 강조하면 에스컬레이트된다. 나는 이렇게 표현한다. 강하게 대처하되, 천천히 뚜벅뚜벅 걸어가자. 목적이 정당하더라도 과정이 적정해야 한다. 과잉은 금물이다. 비례도 고려해야 한다. 참새를 보고 대포를 쏠 수야 있나. 그런 원칙만 지킨다면 현장에서 요원이 당황할 일이 없다.

경험에서 우러나온 얘기처럼 들린다.
2002년 용산 경찰서장으로 있을 때 효순·미선 양 사건이 일어났다. 7~8개월간을 백 수십개 중대를 지휘하며 미군 부대 앞에서 시위대와 대치했다. 그때도 분명하고 단호한 원칙을 지켰다. 이를테면 시위대가 1만명, 2만명 모이면 차로 한두 차선 틔워줘서는 안 된다. 경찰은 불법 폭력 시위를 막아야 하기도 하지만 시위를 도와줄 의무도 있다. 집회와 시위는 시민의 권리이기 때문이다. 그때 시위대에게 편도 차선을 모두 틔워줄 테니까 신속하게 이동하라고 제안했다. 그 대신 허용한 차선에서 벗어나면 강력하게 대응했다. 경찰은 시민이 불법 시위를 하지 않도록 도와줘야 한다. 불법이 발생하면 천천히 회복해야 하고.

퇴임사에서 인권을 강조한 것은 요즘 경찰이 균형 있는 사고를 못한다고 걱정하기 때문인가?
아까도 얘기했지만 현장 경찰은 지휘관의 메시지를 따라가게 돼 있다. 경찰권 발동의 목적이 정당하더라도 방법이 적정한지, 성급하지 않은지, 균형 있는 판단과 사고가 부족하지 않은지 우려된다.

요즘처럼 경찰이 국민의 관심을 받았던 적이 또 있었나 싶다.
경찰의 역할이 커졌다기보다는, 행동대장처럼 몸으로 때우는 쪽으로 간다. 타 기관들(검찰이나 국정원을 지칭하는 듯)은 지나치다 싶게 직무 범위가 확대되고, 권한이 강화되는데 법이나 제도상 경찰의 힘은 예전 그대로다. 이를테면 집회와 시위에 관한 관계 기관 대책회의를 한다면 당연히 주무 부처는 경찰청이 돼야 한다. 모든 자료와 정보가 집중되는 곳이기 때문이다. 경찰청장이 경찰청에서 회의를 주재하는 것이 옳다. 집회와 시위에 관한 한 다양하고 쓰라린 실패 경험을 쌓은 경찰에게 판단을 맡기면 잘할 텐데 회의는 경찰청 밖 타 기관에서 열리고, 판단도 타 기관 몫이다. 촛불 집회 때 보지 않았는가. 현장 경찰은 강경에서 온건으로, 좌에서 우로 회의가 춤춘다고 느낀다. 청와대 가는 시위대 막는 사람이 국정원 직원인가, 검찰 직원인가. 경찰 아닌가. 그런데 왜 엉뚱한 사람들이 판단하는가.

어청수 청장이나 김석기 내정자는 이명박 정부에 충성을 다했는데, 끝내 옷을 벗었다. 경찰 내부에서는 어떻게 받아들이는지 궁금하다.
공무원은 대통령의 통치 철학을 따라야 한다. 코드가 맞는 사람이 중요 보직을 맞는 게 맞다. 정부도 마음에 안 드는 사람은 나가라고 하지 않았는가. 그런데 어 청장은 열심히 하지 않았나. 정의의 관점에서나 혹은 헌법의 명령을 잘 따랐는가 하는 기준에서는 어떤지 몰라도 정부 방침에는 정말 충실했다. 그런데도 나가라니, 납득할 이유가 없는 거다. 김석기씨를 시키기 위해서였는지, 그건 확인을 못했으니 나도 모르겠는데. 어쨌든 같은 임기제에 똑같이 노무현 정부가 임명한 검찰총장은 멀쩡하니까, 이거 경찰을 너무 가볍게 보는 거 아니냐, 막 대하는 것 아니냐는 불만이 경찰 내부에 있다. 김석기씨도 살려보려고 내부에서 노력들을 많이 했다. 인터넷 여론조사에도 참가하고 글도 남기고. 김석기씨가 예뻐서가 아니라 조직의 수장이 두 번이나 하차하는 걸 막기 위해서였다. 경찰로서는 뼈아픈 일이다.

말씀하시는 걸 들으니 용산 참사 사건을 보면서도 아쉬움이 많을 것 같다.
당연히 법 질서는 확립해야 한다. 화염병이 등장하고 폭력적인 방법이 모두 동원되는 현장인데. 그런데 성급했다. 농성하러 들어가는 걸 포착했다면 바로 뒤따라 들어가 잡아내도 괜찮다. 하지만 이미 농성자가 화염병과 시너를 쌓아놓고 자위력을 갖췄다면 그건 바로 진압할 수 없는 거다. 위험 물질을 거의 소진할 때까지 기다려야 한다. 그분들도 밥을 먹어야 하고, 배설도 해야 하기 때문에 시간이 지나면 나 좀 데려갔으면 하고 바라는 때가 온다. 시너가 폭발했을 경우에 대비해 다른 소화 장치도 마련했어야 했다. 사건이 처음 났을 때 나는 참모들한테 그랬다. 열흘 정도는 갈 것 같다고. 그런데 아침에 출근하면서 보니 득달같이 진압했더라. 아마도 경험이 많은 경비 계통이나 정보 라인에서는 좀더 기다릴 것을 건의하지 않았을까 싶다. 불법 무질서를 제압한다고 그 사람이 죽어도 좋을 정도로 해도 된다는 건 아니다.

이명박 정부 인수위 때 경찰청장직을 외부에 개방해야 한다고 건의해 화제가 됐다.
순혈주의 폐해가 심하다. 경찰은 뭐랄까, 나는 난장이라고 표현하는데, 알아서 기는 게 체질화됐다. 이런 데서 청장이 나와선 안 된다. 흔들림 없이 국민만 쳐다보면서 경찰권을 행사할 수 있는 문민이 맡았으면 한다. 전문성이 떨어진다는 지적을 하는 분도 있지만 리더는 철학만 뚜렷하면 된다. 실무는 차장이 다 할 수 있다.

   
ⓒ뉴시스
2월19일 용산 참사를 덮으려고 연쇄살인을 부각한 경찰의 행태를 비판하는 야당 의원들.
어찌 보면 경찰은 청장 자리 하나 보면서 수십 년 동안 고생한다고도 볼 수 있는데, 내부에서 욕을 많이 먹었겠다.

싫어했다. 조직을 팔아먹는다는 소리까지 들었다. 그러나 중·하위 계급은 무슨 소리인지 이해하고 좋아한다. 중·하위 계급은 경찰권 행사에서도, 사회적으로도, 정치적으로도 제 목소리를 내지 못한다. 상급자 앞에서는 쪼그라들고 마는 이런 순혈주의로는 아무것도 할 수 없다는 걸 누구보다 잘 안다. 중·하위직은 내 의견에 대부분 동조하는 걸로 안다. 정치인이든 법률가든 외풍을 막아줄 수 있는 사람이면 좋겠다. 이를테면 이재오 전 의원이나 한완상 전 총리, 강금실 전 장관 같은 분들.

충북지방경찰청장 때는 지역 기관장 모임에 좀처럼 참석하지 않아 말이 많았던 걸로 아는데….
술 마시고, 골프 치고, 여흥하고, 대개는 친목 모임이더라. 토호들까지 낀 그런 모임이 한 두 군데가 아닌데 어떤 때는 40~50명이 모일 때도 있었다. 무엇보다도 시간이 없어서 한두 번 가다 말았다. 그래도 필요하면 당사자와 직접 만나 술도 먹고 골프도 치고 다 했다. 그런데도 지역 질서와 화합을 해친다는 말이 들렸다. 모임에 잘 나가 어울리고 타 기관 민원에 신경 썼으면 적이 많지 않았을 텐데, 결국 내 손해다.

2006년 제주경찰청장 때 한·미 FTA 제주도 회담을 둘러싸고도 타 기관과 갈등을 빚은 것으로 안다.
처음에 회의가 제주도에서 열린다는 소문을 듣고 이의를 제기했다. 서울에서 5000명, 제주에서 1만명, 합쳐서 1만5000명 정도가 시위에 참석할 것으로 보이는데 그러면 경찰 병력도 백개 중대는 서울서 내려와야 한다. 그런데 병력을 수송할 수단도, 숙박 대비도 안 돼 있었다. 내가 또다시 경찰관을 체육관에서 재울 수는 없다고 버티는 바람에 발표가 늦어졌다. 타 기관에서 내가 한·미 FTA를 반대한다, 시위 인원을 부풀려 보고했다는 식으로 비난했다. 청와대에서도 관계 기관 대책회의를 열라고 권했으나 듣지 않았다. 집회 시위는 경찰청 소관이니 타 기관은 정보만 제공하면 그만이라며 버텼다. 제주도 58개 시민단체 대표를 매일 돌아가며 만나 시위가 과격해지지 않도록 설득했다. 하루에 저녁을 세 번이나 먹었다. 그렇게 해서 제주경찰청 주관으로 큰 사고 없이 행사를 치러냈다.

최근 청와대 비서관이 연쇄살인범 강호순 사건을 활용해 용산 참사를 덮으라는 식의 메일을 보낸 데서도 알 수 있듯이, 경찰에 대한 외압이 심한 것 같다.
일선에서 느끼는 압박감은 말도 못한다. 뼈 아픈 것은 홍보를 강조하다 보니 수사 기법이 범죄꾼들에게 모두 알려졌다는 것이다. 가뜩이나 범행 수법이 발전하고 요행 범죄가 늘어나 해결이 어려운데 걱정스러운 일이다.

정작 중요한 수사 기법은 공개하지 않았다고 경찰은 해명했는데?

내가 보기엔 선을 넘었다.

내근 요원을 현장으로 돌리거나, 3교대 근무를 4교대로 바꾸는 등 현장에 각별한 애정을 쏟아온 것으로 알려졌다.
현장의 일선 경찰에게 관심을 가져달라. 2~3일에 한 번씩은 밤을 꼬박 새운다. 그냥 대기하는 게 아니라 온갖 잡무를 처리하면서. 사흘에 한 번씩 시차 적응을 하는 꼴이다. 고위직으로서 누릴 걸 다 누렸으면서도 현장을 개선하지 못해 미안하다.

인원이 부족하기보다는 경찰 간부가 눈에 보이는 행정에 집착해 일선이 골탕을 먹는다는 불만이 많던데.

높은 사람들이 면피하려는 게 문제다. 일은 자기가 할 수 있는 만큼만 시켜야 한다.

앞으로 뭘 할 건가?

전국을 다니며 그동안 친하게 지냈던 일선 경찰들과 소주 한잔씩 나누려 한다. 한 6개월 걸리겠지.

Posted by 뭉치냐옹
:

대통령 형제가 기습상정 ‘배후’…상임위마다 ‘강공’
“좌고우면 해서는 안된다” “방송법도 이번엔 가야”
민주, 무효 주장…한나라, ‘FTA·4대보험’도 힘으로
국회 파행 불가피…정국 국회의장 선택에 달려
 
 
  이유주현 기자 
 
여야가 치열한 힘겨루기를 벌이던 언론 관련법이 25일 상임위에서 기습적으로 상정되면서, 2월 국회 분위기가 순식간에 ‘냉전’에서 ‘열전’으로 돌변했다.
고흥길 문화체육관광방송통신위원장이 “미디어법을 상정할 수밖에 없다”며 의사봉을 두드릴 무렵, 다른 상임위에서도 한나라당은 강공으로 밀어붙였다. 외교통상통일위원회 법안심사소위는 민주당 의원들이 퇴장한 상태에서 한-미 자유무역협정(FTA) 비준동의안을 가결해 전체회의로 넘겼다. 보건복지위원회에서도 한나라당은 야당 의원들의 불참 속에 건강보험·국민연금·고용보험·산재보험의 4대 보험을 통합해 징수하도록 하는 국민건강보험법·국민연금법 개정안을 의결했다. 민주당·친박연대·민주노동당 의원들이 통합징수에 반대 의견을 밝히며 퇴장한 뒤였다.

 

 
 
한나라당이 갑자기 강행처리에 나선 것은, 취임 1주년을 맞아 속도전·강공을 주문하는 정권 핵심의 뜻에 영향을 받은 것으로 보인다. 이명박 대통령은 이날 청와대 확대비서관 회의에서 “우리는 5년 국정운영의 결과로 평가받는 것이다. 일희일비하거나 좌고우면해서는 안 된다”고 말했다. 대통령 친형인 이상득 의원은, 이날 오전 한나라당 최고위원·중진 연석회의에서 “방송법 때문에 다른 법안도 논의되지 않는다”며 “방송법도 이번에 가야 한다”고 주문한 것으로 전해졌다. 이 의원은 회의 뒤 고 위원장과 박진 외교통상통일위원회 위원장을 각각 따로 만나 법안처리를 독려한 것으로 알려졌다.

하지만 정부 여당은 이로써 정국이 급격히 얼어붙는 부담을 안게 됐다. 당장 고 위원장이 법안을 상정하자마자 ‘효력 논쟁’이 벌어졌다. 민주당 간사인 전병헌 의원은 “법안을 상정할 때는 법안명을 거론하고 의원들에게 상정 의사를 물어야 하는데, 그러지도 않았으면서 상정됐다고 하는 것은 억지주장”이라며 원천무효를 주장했다.

상황에 따라서는 민주당이 원외투쟁을 벌일 수도 있다. 당장은 한나라당이 다른 쟁점법안도 ‘날치기’를 시도할 수 있다는 점에서 ‘국회 보이콧’ 전술은 채택하지 않았지만, 가능성은 항상 열려 있다. 이럴 경우 국회파행은 불가피하다. 한나라당이 역점을 두고 있는 쟁점 법안 중 금산분리 완화, 출자총액 제한제 폐지, 산업은행법 등은 아직 정무위원회를 통과하지 못했고, 불법 집단행위 집단소송법, 집시법, 국정원법, 북한인권법안 등도 앞길이 더욱 험난해졌다.

원외에서도 언론노조가 지난달 6일 중단했던 파업을 26일부터 재개하기로 했다. 원내 대결을 넘어서, 언론노조를 포함한 시민사회 전체와 다시 한번 맞서야 하는 상황으로 치닫고 있는 것이다.

그러나 여당이 이러한 위험을 감수하면서 상정한 언론 관련법이 최종적으로 통과될지는 불투명하다. 한나라당이 단독으로 문방위에서 관련법안을 통과시켜도 유선호 민주당 의원이 위원장을 맡고 있는 법제사법위원회가 가로막고 있다. 김형오 국회의장도 걸림돌이다. 김 의장은 지난 23일 “모든 법안은 해당 상임위에서 상정돼야하고 상임위에서 충분히 토론하고 충실한 논의과정을 거쳐야 한다”며 “상임위에 상정됐다고 곧바로 본회의에 가져오지 않을 것”이라고 공개적으로 밝힌 바 있다.

 


하지만 한나라당은 김 의장에게 직권상정을 요구하며 계속 압박할 가능성이 높다. 홍준표 원내대표는 사석에서 기회가 닿을 때마다 “김 의장이 직권상정 의지가 없다”며 거침없이 비난해 왔다. 이번 임시국회가 끝나는 3월3일까지 김 의장이 어떤 선택을 하느냐에 따라 정국 방향은 크게 달라질 것으로 보인다. 이유주현 기자 edigna@hani.co.kr

 

Posted by 뭉치냐옹
:

한나라당이 밀어 붙이려는 7대악법

1. 재벌 방송법(신문법,방송법7대악법)

 이명박 정부는 YTN과 KBS의 낙하산 인사도 모자라 방송을 통째로 뺏어 족벌신문과 거대재벌에 바치려고 하고 있습니다. 정부여당의 신문 방송법 개정안은 신문과 대기업의 지상파 방송 진출을 허용하고, 그 지분의 20%까지 보유할 수 있도록 하고 있습니다. 만약 대기업들이 한 방송사의 지분을 20%씩 소유해 카르텔을 형성한다면 방송사는 하루 아침에 재벌에게 넘어가게될 것입니다. 또 족벌신문이 방송마저 장악하면 방송은 비판기능이 사라지고 정권 홍보의 나팔수로 전락하게 될게 뻔합니다.

    2008년 12월23일 경향신문

                                          

2. 재벌은행법(금산분리 관련4법)

 금산분리를 완화하겠다고 합니다. 산업자본과 금융자본의 벽을 허물겠다는 것입니다. 현 정권이 지향하는 모델은 골드만삭스, 메릴린치 등과 같은 세계적인 투자은행입니다. 그러나 이들은 이미 서브프라임모기지 사태로 파산 또는 인수,합병된 실패한 모델들입니다.

 산업자본이 은행을 소유하면 은행은 재벌의 사금고로 전락할 가능성이 큽니다. 재벌의 경영권방어, 자금조달 등에 활용될 수가 있는 것입니다. 만약 기업의 부실이 은행의 부실로 이어진다면 국가경제에 치명적인 결과를 낳게 됩니다. 나라경제가 어떻게 되든, 서민과 중산층의 삶이 어떻게 되든 소수 재벌과 대기업의 이익을 위해서는 앞뒤 안 가리는 ‘비지니스프렌들리’ 때문이다.                2008년 10월15일 광주드림


3. 마스크처벌법(집시법)

 MB정권이 집시법을 개정해 신원확인을 어렵게 할 목적으로 복면 등의 도구를 소지하거나 착용하는 것을 금지하겠다는 것입니다. 소지하는 것만으로도 처벌이 가능하므로 집회현장에 마스크를 갖고 있으면 안됩니다.

 촛불민심에 놀란 정권이 국민의 비판과 행동의 자유를 원천적으로 봉쇄하겠다는 것입니다. 국민을 겁주고, 억압하고,길들이는 전형적인 독재정권의 공포통치적 행태가 아닐 수 없습니다.



4. 휴대폰 도청법(통신비밀법)

 현정부와 한나라당이 국민의 휴대통화 전부를 엿들으려고 합니다. 이동통신사업자와 인터넷사업자에게 휴대전화와 이메일, 인터넷메신저에 대한 감청장비 설치를 의무화하고 통화내역과 위치 등을 1년간 저장하도록 하겠다는 것입니다. 이는 국민들을 잠재적 범죄자로 취급하는 것입니다.

 특히 현 정부에 비판적인 정치인, 지식인, 언론인, 시민사회 등에 대한 일상적 감시와 도청을 합법화하겠다는 것은 민간독제 장기집권을 획책하겠다는 것입니다.



5. 네티즌통제법(형법/정보통신망법) - 댓글 처벌

 피해자의 고소,고발이 있어야 공소할 수 있는 형법상 명예훼손과 모욕죄와 달리 사이버상의 명예훼손과 모욕죄에 대해서 피해자의 고소,고발과 상관없이 가중 처벌하도록 하겠다는 것입니다.

 헌법상 보장된 의사표시의 자유, 표현의 자유를 극도록 제약할 소지가 많음은 물론입니다. 이 법의 기초는 지난 여름 쇠고기 촛불정국에서 만들어졌습니다. 댓글 하나 잘못해도 징역9년까지 처벌이 가능하도록 추진 하는 것은 네티즌에 대한 통제와 탄압을 ....

                                                2008년 12월 26일 한국일보...

                      



6. 안기부 부활법(국정원법)

 80년대 공포의 대상이었던 안기부를 기억하십니까? 국정원의 불법적인 정치사찰 활동에 대해 합법성을 부여하기 위해 국정원법 개정을 시도하고 있습니다. 국정원의 직무범위를 ‘국가안보, 국익에 중대한 영향을 미치는 국가정책 수립에 필요한 정보’의 수집, 작성, 배포등으로 확대하려는 것입니다.

국정원의 직무범위를 무제한적으로 허용함으로써 도청, 정치개입, 권한남용, 인권침해는 물론 정치사찰을 공식적으로 합법화하는 계기가 될 것이 분명합니다. 현 정권이 국정원을 공포의 안기부로 부활시키고 있는 것입니다.

     2008년 7월 17일 미디어오늘 중에서..

Posted by 뭉치냐옹
:

Set  - form 태그의 runat="server" 제거

<form id="form1" action="Default2.aspx" method=post>
    <div>
        Default.aspx<br />
        <br />
        <input id="txtName" type="text" name="txtName" />
        <input id="Pwd" type="text" name="Pwd"/><br />
        <input type=hidden id=txtTest name=txtTest value="000" />
        <input id="btnSend" type=submit value="button"/></div>
    </form>

 

 

Get - 코드비하인드에서 받음

    protected void Page_Load(object sender, EventArgs e)
    {
        string strName = Request.Form["txtName"].ToString();
        string strTest = Request.Form["txtTest"].ToString();
        string Name = Request.Form["Pwd"];
    }


Posted by 뭉치냐옹
:

Page_Init

 

- 가장 먼저 발생하는 이벤트

- 컨트롤들의 값을 초기화하거나, 이벤트들을 매핑

 

Page_Load

 

- 페이지가 실질적으로 로드되는 시점에 발생하는 이벤트

- ASP.NET 페이지를 만들며, 이벤트에 응답하는 작업들을 수행

- IsPostBack 속성을 사용하여 페이지가 처음 로드되는 것인지 포스트백 중인지 체크

  (주로 첫 로드시에 데이터 바인딩 작업 수행)

- 이 이벤트 전에 ViewState 를 사용하여 서버 컨트롤들의 상태를 복원

 

Page_DataBind

 

페이지에서 DataBind 메서드가 호출될 때 발생하는 이벤트

 

Page_PreRender

 

- ViewState 상태가 저장되기 전, 컨트롤이 렌더링되기 바로 직전에 발생하는 이벤트

 

Page_Unload

 

- 페이지가 렌더링을 끝마친 뒤에, 모든 작업을 마무리할 때 발생하는 이벤트






서버 컨트롤의 실행주기

컨트롤 생성

Init

ViewState 복구

PostBack 데이터 처리

Load

데이터 변경 이벤트

PastBack 이벤트

PreRenser

ViewState 저장

Render

UnLoad


Posted by 뭉치냐옹
:

[사용자 정의 컨트롤이 부모 aspx 변수 값 접근 하는 방법]

 

부모 페이지에 public 변수를 선언하고...

예) 부모.aspx - public string index;

 

그러면 자식 컨트롤(ascx)에서 다음과 같이 참조..

예) 자식.ascx - ((부모페이지 클래스)Context.Handler).index


Posted by 뭉치냐옹
:
요약설명 ASP.NET에는 기존의 '< % % >'태그 외에 데이터 바인딩을 위한 새로운 태그 '< %# % >'를 제공한다. 이 태그는 많은 유연성를 가지고 있어서 특정
데이터 소스 뿐만 아니라 컬렉션이나 메소드를 이용해서 바인딩할 수 있으므로 개발자에게 많은 편의성을 제공한다.

프로퍼티   

Customer : <%# CustomerID %>

표현식    

Contact : <%# (Customer.Firstname + Customer.LastName) %>

메소드

Total : <%# GetTotal(CustomerID) %>

컬렉션

Orders : <asp:ListBox id = "List1" datasource='<%# myArray %>' runat="server">

    

 

    1. 프로퍼티 데이터 바인딩

 

    웹 폼을 생성하고 Label 컨트롤을 추가한 후 Label 컨트롤의 속성창에'(DataBindings)'의 확장버튼을 클릭하면 DataBindings 창이 뜨는 것을

    확인할 수 있을 것이다. 프로퍼티 중에서 데이터바인딩할 것은 Text 프로퍼티이다. 데이터바인딩 창에서 Text 프로퍼티를 선택하고,

    '사용자 지정 바인딩 식'을 선택한 후 'CustomName'이라고 입력하자.

    여기서 CustomName이 바로 우리가 사용할 프로퍼티 변수의 이름이다. 즉, 페이지 클래스의 CustomName 프로퍼티 값을 이용해서 Label 컨트롤의

    Text 프로퍼티를 데이터바인딩 할 것이다.

 

    property.aspx

<form id="Form1" method="post" runat="server">

        <P><FONT face="굴림">Simple Property 데이터바인딩</FONT></P>

        <P><FONT face="굴림"> 안녕하세요.&nbsp;

            <asp:Label id=lblName runat="server" Text="<%# CustomerName %>"> </asp:Label>님 반갑습니다.</FONT></P>

    </form>

    public string CustomerName

    {

        get

        {

            return "Younho~~";

        }

    }

    private void Page_Load(object sender, System.EventArgs e)

    {

        Page.DataBind();

    }

 

    2. 표현식 데이터바인딩

    웹 폼을 생성하고 TextBox 컨트롤 2개와 Button 컨트롤, Label 컨트롤을 추가하자. Label 컨트롤의 속성창에서 '(DataBindings)'의 확장버튼을

    클릭하여 데이터바인딩 창을 띄우고 Text 프로퍼티를 선택하고 '사용자 지정 바인딩식'을 선택한 후 "<%# TextBox1.Text + TextBox2.Text %>"

    라고 입력하자.

 

    expression.aspx

 

    <form id="Form1" method="post" runat="server">

        <P><FONT face="굴림">Expression 데이터바인딩</FONT></P>

        <P><FONT face="굴림">

            텍스트1 : <asp:TextBox id="TextBox1" runat="server"></asp:TextBox><br>

            텍스트2 : <asp:TextBox id="TextBox2" runat="server"></asp:TextBox></FONT></P>

        <P><FONT face="굴림">

            <asp:Button id="btnOK" runat="server" Text="Button"></asp:Button></FONT></P>

        <P><FONT face="굴림">

            <asp:Label id="lblMessage" runat="server" Text="<%# TextBox1.Text + TextBox2.Text %>"></asp:Label>

        </FONT></P>

    </form>

    private void btnOK_Click(object sender, System.EventArgs e)

    {

        Page.DataBind();

    }

 

    3. 메소드 데이터바인딩

    웹 폼을 생성하고 TextBox, Button, Label을 추가하자. Html 뷰어에서 추가한 Label의 Text 프로퍼티에 직접

    '<%# CaculateAge(txtYear.Text) %>'를 추가한다.

    method.aspx

 

 

    <form id="Form1" method="post" runat="server">

        <P><FONT face="굴림">Method 데이터바인딩</FONT></P>

        <P><FONT face="굴림">태어난 년도를 입력하세요.</FONT></P>

        <P>

            <asp:TextBox id="txtYear" runat="server"></asp:TextBox><FONT face="굴림">년

            <asp:Button id="btnOK" runat="server" Text="Button"></asp:Button></FONT></P>

        <P><FONT face="굴림">올해

            <asp:Label id="lblAge" runat="server" Text="<%# CaculateAge(txtYear.Text) %>">

            </asp:Label>&nbsp;세 입니다.</P>

        </FONT>

    </form>

    public int CaculateAge(string BirthYear)

    {

        int Age;

        Age = DateTime.Now.Year - int.Parse(BirthYear) + 1;

        return Age;

    }

    private void btnOK_Click(object sender, System.EventArgs e)

    {

        Page.DataBind();

    }

 

    

    4. 컬렉션 바인딩

    데이터바인딩 방법에서 가장 많이 사용될 부분은 데이터베이스로 부터 쿼리한 데이터를 이용해서 결과를 페이지에 보여 주는 것이다.

    그러나 이러한 경우의 데이터는 단일의 값이 아니라 여러 레코드로 구성되어 있고 게다가 하나의 레코드도 여러 칼럼으로 구성되어 있는 복작한

    구조일 것이다. .NET에서 컬렉션을 구성할 수 있는 자료구조는 여러가지 형태가 있는데 여기서는 ArrayList, HashTabel, Stack, Queue

    그리고 ADO.NET 객체를 이용한 방법을 통한 데이터바인딩을 알아 보도록 한다.

    1) ArrayList : 간단한 값들의 리스트들을 저장할 수 있으며 ListBox나 DropDownList 컨트롤의 아이템을 구성하는데 유용하게 사용될 수 있는

       데이터 소수이다. 간단히 Add() 메소드를 이용해서 값을 추가할 수 있다.

       웹 폼을 생성하고 DropDownList 컨트롤을 추가하자. DropDownList 컨트롤에서 주목해야 될 것은 DataSource 프로퍼티와 DataBind() 메소드이다.

       대부분의 웹 서버 컨트롤은 배열이나 XML, 데이터베이스와 바인딩함으로써 구성될 수 있도록 DataSource 프로퍼티를 제공한다. DataSource 프로퍼티

       에 바인딩할 데이터의 소스를 설정한 후 DataBind() 메소드를 호출하면 지정한 소스로 부터 가져온 값에 의해 컨트롤이 구성된다.

 

       col_arraylist.aspx

 

        <form id="Form1" method="post" runat="server">

            <P><FONT face="굴림">Collection 데이터바인딩 - ArrayList</FONT></P>

            <P><asp:DropDownList id="comArray" runat="server"></asp:DropDownList></P>

        </form>

        private void Page_Load(object sender, System.EventArgs e)

        {

            if(!Page.IsPostBack)

            {

                // ArrayList 아이템 구성

                ArrayList arr = new ArrayList();

                arr.Add("손경동");

                arr.Add("한동균");

                arr.Add("어정두");

                arr.Add("윤석헌");

                // DropDownList 컨트롤 데이터 바인딩

                // DataSource에 ArrayList를 대입시킨다.

                comArray.DataSource = arr;

                comArray.DataBind();

            }

        }

 

    2) HashTable : 키(key)와 값(value)의 짝을 이루는 아이템으로 구성된 자료구조이다. HashTable은 사전(dictionary) 스타일의 데이터를

       저장하는데 흔히 쓰인다. 그리고 키와 값을 저장하고 검색하는데 있어서 내부적으로 해시 알고리즘을 사용한다.

       Add 메소드로 아이템을 추가하고 Remove 메소드를 이용해서 아이템을 삭제할 수 있다.

       웹 폼을 생성하고 RadioButtonList 컨트롤을 추가하자. 여기선 HashTable의 자료를 통해 RadioButtonList 컨트롤을 구성할 것이다.

       RadioButtonList 컨트롤의 Item이 선택되면 라운드트립이 발생할 수 있도록 AutoPostBack을 'True'로 설정한다.

 

       col_hashtable.aspx

 

        <form id="Form1" method="post" runat="server">

            <P><FONT face="굴림">Collection 데이터바인딩 - HashTable</FONT></P>

            <P><asp:RadioButtonList id="optHash" runat="server" AutoPostBack="True"></asp:RadioButtonList></P>

        </form>

        HashTable에 저장할 키(key)로 '가수명'을 그리고 값(value)으로 '노래명'을 짝지어 저장하고

        private void Page_Load(object sender, System.EventArgs e)

        {

            if(!Page.IsPostBack)

            {   

                // HashTable 아이템 구성

                Hashtable htSong = new Hashtable();

                htSong.Add("서태지", "울트라맨이야");

                htSong.Add("마이클잭슨", "Invincible");

                htSong.Add("CBMASS", "휘파람");

                htSong.Add("문윤호", "선하신 목자");

                // RadioButtonList 컨트롤 데이터바인딩

                optHash.DataSource = htSong;

                optHash.DataTextField = "Value";

                optHash.DataValueField = "Key";

                optHash.DataBind();

            }

        }

        private void optHash_SelectedIndexChanged(object sender, System.EventArgs e)

        {

            Response.Write("선택한 아이템 : " + optHash.SelectedItem.Text + "(" + optHash.SelectedItem.Value + ")<hr>");

        }

 

    3) Stack : LIFO(Last-In First-Out) 형태의 컬렉션 구조를 가지는 자료구조이다. 데이터를 저장하는 행위를 'Push'라고 하며

       데이터를 가져오는 행위를 'Pop'이라고 한다. .NET에서는 Stack 자료구조를 BCL 차원에서 지원 해주며 데이터 처리를 위해

       Pop과 Push 메소드를 제공하고 있다.

       웹 폼을 생성하고 ListBox 컨트롤을 추가하자.

 

       col_stack.aspx

 

        <form id="Form1" method="post" runat="server">

            <P><FONT face="굴림">Collection 데이터바인딩 - Stack</FONT></P>

            <P>

                <asp:ListBox id="lstStack" runat="server" SelectionMode="Multiple" Rows="3"></asp:ListBox></P>

        </form>

        private void Page_Load(object sender, System.EventArgs e)

        {

            if(!Page.IsPostBack)

            {

                // Stack 아이템 구성

                Stack st = new Stack();

                st.Push("John Petrucci");

                st.Push("Eric Johnson");

                st.Push("Pat Mathney");

                st.Push("Steve Vai");

                // ListBox 컨트롤 데이터바인딩

                lstStack.DataSource= st;

                lstStack.DataBind();

            }

        }

 

    4) Queue : FIFO(First-In First-Out) 형태의 컬렉션 구조를 가지는 자료구조이다. 데이터를 입력하는 행위를 'Enqueue'라고 하며

       데이터를 추출하는 행위를 'Degueue'라고 한다.

       웹 폼을 생성하고 CheckBoxList 컨트롤을 추가하자.

 

       col_queue.aspx

       <form id="Form1" method="post" runat="server">

            <P><FONT face="굴림">Collection 데이터바인딩 - Queue</FONT></P>

            <P><FONT face="굴림"><asp:CheckBoxList id="chkQueue" runat="server"></asp:CheckBoxList></FONT></P>

        </form>

        private void Page_Load(object sender, System.EventArgs e)

        {

            if(!Page.IsPostBack)

            {

                // Queue 아이템 구성

                Queue q = new Queue();

                q.Enqueue("HDD");

                q.Enqueue("CPU");

                q.Enqueue("VGA");

                q.Enqueue("RAM");

                // CheckBoxList 컨트롤 데이터바인딩

                chkQueue.DataSource = q;

                chkQueue.DataBind();

            }

        }

 

 

    

    5. DataBinder.Eval 메소드

    Repeater나 DataList, DataGrid와 같은 컨트롤은 데이터바인딩에 템플릿(template)을 사용한다. 이때 실제 데이터소스와 연결된 것은 아이템을

    구성하는 템플릿이 아니라 이를 포함하고 있는 부모 객체이므로 템플릿 내에서는 부모객체의 데이터소스에 접근하기 위해서

    Container.DataItem("필드이름")과 같은 형태로접근해야 한다. 바인딩할 아이템을 지정하기 위해 DataBinder.Eval()메소드를 이용한다.

    ex : <%# DataBinder.Eval(Container.DataItem, "CategoryName") %>

    웹 폼 컨트롤을 데이터바인딩할 때 실제 데이터소스의 값이 아니라 어떠한 변형과정을 거쳐서 출력하고자 할 경우, 또는 숫자 값이나 날짜 데이터를

    특정 형태로 보여주고자 할 때에는 DataBinder.Eval() 메소드를 이용해서 표현식을 정의할 수 있다.

    ex : <%# DataBinder.Eval(Container.DataItem, "RegistrationDate", "{0:s}") %>

    숫자 관련 표현식 1

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

    형식 문자                   설명                        예

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

    C/c             화페형(currency)            \1,500,000 , $1,302.50

    D/d             10진수(decimal)         203, 1032, -83

    E/e             지수형(exponential)     3.56E+12, -1.5e+3

    F/f             고정소수점(fix-point)       35.200, -0.291

    G/g             일반형(general)         실제값에 따라 달라짐

    N/n             숫자형(number)          2,593.12 16.21

    P/p             확률형(%)               25.3% -20%

    X/x             16진수(hex)             &H2f89 0x2931

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

    숫자 관련 표현식 2

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

    형식 문자                   설명

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

    0               지정된 자리에 값이 없으면 0으로 표시

    #               지정된 값을 표시하고 값이 없으면 무시

    .               소수점 표시

    ,               컴마로 숫자 그룹을 표시

    %               퍼센트 문자 표시

    ;               양수, 음스, 0일때 값을 구분지어서 표현식을 지정

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

    EX : 1.2345     "00#.##"                001.23

        -1.1234     "00#.##;(00#.##);[0]"   (001.12)

    

    날짜 관련 표현식

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

    형식 문자           설명                                예

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

    d       Short date                  2001-12-21

    D       Long date                   2001년 12월 21일 금요일

    f       full(long date, short time) 1996년 4월 7일 목요일 오전 12:00

    F       Full(long date, long time)  1996년 4월 7일 목요일 오전 12:00:00

    g       일반(short date, short time)    2001-12-21 오전 12:00

    G       일반(short date, long time) 2001-12-21 오전 12:00:00

    M/m     월일                            7월 4일

    R/r     RFC1123 형식                    Thu, 04 Jul 1996 00:00:00 GMT

    s       ISO8601 지역시간                1996-04-07T00:00:00

    t       short time                  오전 12:00

    T       Ling time                   오전 12:00:00

    u       ISO8601 세계시간                1996-07-04 00:00:00Z

    U       Universal date/time         1996년 7월 3일 수요일 오후 3:00:00

    Y/y     년월                            1996년 7월  

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

    웹 폼을 추가하자. DataList, SqlDataAdapter 컨트롤을 추가한다. Northwind DB의 Orders 테이블의 내용을 연결하고

    DataSet은 'DsOrders1' 이름으로 추가한다. DataList 컨트롤의 데이터바인딩을 처리하기 위해서 속성을 설정해 준다.

    DataSource는 'DsOrders1', DataMember는 'Orders', DataKeyFiled는 'OrderID'로 각각 지정한다.

    DataList 컨트롤의 템플릿을 구성하기 위해 컨텍스트 메뉴에서 '템플릿 편집-항목 템플릿'을 선택한다.

    템플릿 편집모드의 ItemTemplate에 Label 컨트롤을 4개 추가한다. Label의 데이터바인딩을 하기 위해 속성을 설정하자.

    (DataBindings) 확장버튼을 클릭하여 Text 프로퍼티를 설정하는데 단순바인딩을 선택하고 'DataItem-OrderID'와 같이

    바인딩할 필드를 설정해 준다.

    각 컨트롤별 서식은 다음과 같이 지정하자

    컨트롤              유형                서식

    lblOrderID          Number          {0:N}

    lblOrderDate        Long Date       {0:D}

    lblShippedDate      Short Date      {0:d}

    lblFreight          Fixed Point     {0:F2}

 

    format.aspx

 

    <form id="Form1" method="post" runat="server">

        <P><FONT face="굴림">DataBinder.Eval - format expression</FONT></P>

        <P>

        <asp:DataList id=DataList1 runat="server" DataSource="<%# dsOrders1 %>" DataMember="Orders" DataKeyField="OrderID">

            <ItemTemplate>

                <FONT face="굴림">주문번호 :

                <asp:Label id=lblOrderID runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.OrderID", "{0:N}") %>'></asp:Label><BR>

                주문일 :

                <asp:Label id=lblOrderDate runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.OrderDate", "{0:D}") %>'></asp:Label>&nbsp; 선적일 :

                <asp:Label id=lblShippedDate runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.ShippedDate", "{0:d}") %>'></asp:Label><BR>

                운임 :

                <asp:Label id=lblFreight runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Freight", "{0:F2}") %>'></asp:Label>

                </FONT>

            </ItemTemplate>

        </asp:DataList>

        </P>

    </form>

    private void Page_Load(object sender, System.EventArgs e)

    {

        if(!Page.IsPostBack)

        {

            sqlDataAdapter1.Fill(dsOrders1);

            DataList1.DataBind();

        }

    }

 

참고문헌:ASP.NET Prgoramming Bible

 

msdn : http://www.gosu.net/GosuWeb/ArticleMSView.aspx?ArticleCode=400


Posted by 뭉치냐옹
:

.aspx

<script language="javascript">
  // 지분투자 회사 삭제
  function Delete(companyID)
  {
   document.all.hidDelCompanyID.value = companyID ;
   
   if(!SrcConfirmDialog("623", "264px", "136px"))
    return false;
   else
    __doPostBack('btnDel','') ;
  }
  </script>

 

 

Common.js

/*
 1. 메서드내용 : 팝업창 띄우기 --> 팝업창으로 어떤 문제에 대해서 확인을 받아야하는 경우 사용
 2. 매개변수
  (1) iMsgCode : 컨펌창에 표시될 문장코드
  (2) obj   : Parent 오브젝트를 나타냄
  (3) widthPX  : 팝업창 가로 길이
  (4) heightPX : 팝업창 세로길이
  (5) scrollOX : 팝업창의 스크롤 여부 (디폴트 : auto)
  (6) popTitle : 팝업창의 제목표시줄에 표시될 제목 (디폴트 : iPopup)
 3. 반환값  : 팝업창의 리턴값
*/
function SrcConfirmDialog(messageInfo, widthPX, heightPX)
{
 return ConfirmSrcPopupDialog('../WCommon/PopupConfirm.aspx?messageInfo='+messageInfo, window, widthPX, heightPX, 'no', '확인메시지' )
}

 

 

function ConfirmSrcPopupDialog()
{
 var passURL, obj, widthPX, heightPX, scrollOX, popTitle, SrcPopupArgs = ConfirmSrcPopupDialog.arguments;
 
 passURL  = SrcPopupArgs[0]; // 팝업창에 보여줄 화면 Url
 obj   = SrcPopupArgs[1];  // 팝업창을 띄우는 parent object
 widthPX  = SrcPopupArgs[2];  // 팝업창의 가로길이
 heightPX = SrcPopupArgs[3];  // 팝업창의 세로길이
 scrollOX = (SrcPopupArgs[4]== null ? 'auto' : SrcPopupArgs[4]) ;  // 팝업창의 스크롤여부
 popTitle = (SrcPopupArgs[5]== null? 'iPopup' : SrcPopupArgs[5]) ; // 팝업창의 제목표시줄에 표시될 제목
 var srcURL = "../WCommon/iConfirmPopupMng.aspx?passURL="+escape(passURL)+'&scrollOX='+scrollOX +'&popTitle='+popTitle+'&height='+heightPX;
    var res  = window.showModalDialog(srcURL, obj, "dialogHeight:"+heightPX+"px; dialogWidth:"+widthPX+"px; help:no; status:no; scroll:no ; unadorned:no;");
    return res;

Posted by 뭉치냐옹
:
ASP.NET or .NET 초보자 FAQ
[한빛미디어] 2002-03-04 14:57  
저자: 한동훈(lorikeet@unitel.co.kr)

.NET Framework가 나오고, C#이 세상에 나온 것이 2000년도였고, 베타1에서 ASP.NET 응용 프로그램을 작성하면서 새로운 기능들을 조금씩 익혀나갔던 기억이 난다. 지금은 벌써 2002년이고, .NET Framework 정식버전이 나왔고, VS.NET도 출시가 되었다. 그럼에도 불구하고 여전히 많은 것들이 정리가 되지 않은 듯하고, 비슷한 시행착오를 겪고 있으며 많은 닷넷 관련서적들이 출간이후 절판되었고, 개발자마다 모두 사용하는 방법이 다르다.

그중에 가장 자주 질문하는 몇가지만 알아보자. 여기서는 .NET Framework v 1과 VS.NET 정식버전을 기준으로 설명한다.

Q. .NET Framework v 1 또는 VS.NET을 설치한 이후에 ASP.NET을 실행하면 'Server Application Unavailable'이라고 나타나면서 실행되지 않습니다.

A. ASP.NET은 ASPNET이라는 계정으로 실행되며, 이 계정은 아주 제한된 권한만을 갖고 있습니다. 베타2까지는 ASP.NET은 SYSTEM 계정으로 실행되었습니다. SYSTEM 계정은 관리자 권한을 갖고 있기 때문에 보안상 문제가 될 수 있기 때문에 정식버전에서부터는 SYSTEM 계정을 사용하지 않습니다. 그러나 도메인 컨트롤러로 사용중인 윈도우 2000 서버에서 ASP.NET을 실행하려면 SYSTEM 권한이 필요합니다.

C:\WINNT\Microsoft.NET\Framework\v1.0.3705\CONFIG\machine.config 파일에서 <processModel> 태그를 찾아서 userName="SYSTEM" 으로 변경해야합니다. 최초 설치시에는 userName=machine으로 설정되어 있습니다. 이것은 worker thread로 동작하는 것이도 대부분의 ASP.NET 응용 프로그램에는 적합합니다.

<processModel userName="SYSTEM"…>
이와 같이 변경하면 문제없이 실행할 수 있습니다. 이 증상은 도메인 컨트롤러에서 ASP.NET을 실행할때만 나타납니다.

만약 윈도우 닷넷 서버를 사용하고 있다면 ASPNET 사용자 계정을 사용하는 경우에 IIS 5는 Isolation(격리) 모드에서만 동작합니다. 이 경우에는 NetworkService로 이용하는 것이며, application pool level에서 사용하는 것을 뜻합니다.

Q. 마우스를 버튼에 위치시키거나 링크를 위치시킬 때 색상을 변경하려면 어떻게 합니까?

A. 웹 폼에 버튼을 하나 두고, 이름은 Button1이라고 하면 다음과 같은 코드를 Page_Load 메소드에 추가하면 됩니다.

private void Page_Load(object sender, System.EventArgs e)
{
  if ( !Page.IsPostBack )
  {
    Button1.Attributes.Add("onmouseover", "this.style.backgroundColor='lightyellow';");
    Button1.Attributes.Add("onmouseout", "this.style.backgroundColor='white';");
  }
}
if 문장에서와 같이 페이지를 처음 로드하는 경우인지를 확인해야한다. 그렇지 않으면 폼이 갱신될때마다 브라우저에서 동작하는데는 문제가 없지만 동일한 이벤트에 대해서 자바스크립트가 계속해서 중복되어 생성되는 현상이 나타난다.

Q. 텍스트 박스에 포커스가 있을 때 배경색을 변경하고 싶습니다.

A. 마우스 이벤트를 이용하는 코드와 같다. 위 코드에서 onmouseover 대신에 onfocus를 사용하고 onmouseout 대신에 onfocusout을 사용하면 된다. onfocus는 텍스트 박스에 포커스가 이동할 때 발생하는 이벤트를 정의한다. onfocusout은 텍스트 박스가 포커스를 잃을 때 발생한다. 이들은 모두 클라이언트 스크립트로 동작하기 때문에 서버와 데이터를 주고 받지않고 동작한다.

Q. 삭제 버튼을 클릭하면 대화창을 띄워서 확인하고 싶습니다.

A. 게시판의 삭제나 레코드의 삭제를 실행하기전에 확인창을 띄우는 것은 좋은 프로그래밍 습관이다. 이와 같이 하려면 Button1 버튼에 대해서 다음과 같은 코드를 Page_Load 이벤트에 추가한다.

Button1.Attributes.Add("onclick", "return confirm('Delete?');");
Q. 기존에 SQL 서버에 연결할 때는
SqlConnection myConnection = new SqlConnection("server=localhost;database=pubs;uid=sa;pwd=;");
과 같이 사용했는데
SqlConnection DbCon = new SqlConnection("Initial Catalog=Northwind;
                      Data Source=localhost;Integrated Security=SSPI;");
와 같이 사용하는 것을 보았습니다. VS.NET에서부터 바뀐것인가요?


A. 그렇지 않습니다. 이것은 ADO에서부터 사용되던 방법입니다. 최근에 닷넷에서 프로그래밍을 하는 경우에 Integrated Security와 같은 연결 문자열을 사용하는 것을 많이 볼 수 있기는 하지만, 전혀 새로운 것은 아닙니다. 다만, Integrated Security등의 사용은 스테이지 서버에서 프로덕션 서버로 패키지를 옮기거나 다양한 환경에서 보안설정상의 실수로 인해서 제대로 동작하지 않을 수 있고, 다양한 보안환경에 적용하기에는 무리가 있으므로 크게 사용하는 것을 권하지는 않습니다. uid와 pwd를 사용하는 것을 MSDN에서는 권하고 있습니다.

ADO에서는 Integrated Security를 다음과 같이 사용할 수 있습니다.

Dim dc As New ADODB.Connection
'저는 Data Connection의 의미로 dc라는 약어를 즐겨 사용합니다  
dc = "Provider=MSOLAP; SSPI=Negotiate; Prompt=1"  
dc.Open
SSPI는 인증된 연결(Authenticated Connection)을 통해서 데이터를 교환하기 위한 인터페이스이기 때문에 SSPI는 해당 프로바이더에서 지원할 수도 있고, 하지 않을 수도 있습니다.

SSPI는 Security Support Provider Interface의 약자입니다. MSOLAP는 MS OLAP 서비스에서 제공하는 프로바이더이며, 여기서 사용할 수 있는 인증에는 NTLM, Kerberos, Negotiate, Anonymous User가 있습니다.

Q. 닷넷은 XML 기반이라기에 XML, XSL을 공부중에 잘못된 부분이 있으면 깨진글자로 에러를 알려주는데 해결할 방법은 무엇인가요? encoding에 EUC_KR, ISO8859_1 같은 걸 넣었더니 그런 인코딩은 지원하지 않는다고 합니다.

A. encoding="euc-kr"로 하시면 됩니다. XML 관련 툴이나 파서에 대한 것은 http://www.garshol.priv.no/download/xmltools/에서 확인할 수 있습니다.

Q. 데이터 구조나 알고리즘에 대해서 C#으로 된 것이 있습니까?

A. Bruno R. Preiss의 홈페이지로 가세요. 이곳에 Java, C#, C++ 버전으로 된 각각의 문서가 있습니다.

이곳에는 Data Structures and Algorithms with Object-Oriented Design Patterns 온라인 도서를 세 가지 언어별로 볼 수 있습니다.

또한 자바와 C#의 VM, CLR에서 가비지 컬렉션에 사용하고 있는 알고리즘의 하나인 Mark & Sweep Garbage Collector에 대해서 설명하고 있으니, 가비지 컬렉션이나 닷넷에서의 자원 관리가 궁금한 분들은 참고하시기 바랍니다.

http://labsoftware.com/labsoftware/CSharpPats/design_patterns_in_c.htm 이곳에는 C# 버전으로 된 Design Patterns를 받아볼 수 있습니다. 이 책은 Design Patterns의 저자가 C# 버전으로 작성한 것입니다.

Q. 데이터그리드에서 게시판에 번호등을 표시하고 싶습니다. 어떻게 하면 될까요?

A. ASP.NET에서 게시판과 같이 번호를 매기고, 목록을 보여주는 방법은 다양합니다. 기존의 ASP에서 하던 것과 같은 방법에서부터 ASP.NET의 새로운 클래스들을 이용하는 방법까지 있습니다. 여기서는 그중의 하나인 DataRow를 이용해서 각각의 컬럼을 커스터마이징하는 방법에 대해서 설명합니다. 데이터그리드를 커스터마이징하려면 데이터그리드의 AutoGenerateColumns 속성을 False로 변경합니다.

ICollection CreateDataSource()
    {
      DataTable dt = new DataTable();
      DataRow dr;

      dt.Columns.Add(new DataColumn("Number", typeof(int)));
      dt.Columns.Add(new DataColumn("Name", typeof(string)));
      dt.Columns.Add(new DataColumn("Title", typeof(string)));
      dt.Columns.Add(new DataColumn("WriteTime", typeof(System.DateTime)));

      string query = "SELECT Name, Title WriteTime FROM Info ORDER BY ID DESC";
      string connectionString = "server=(local); database=BBSTable; uid=sa; pwd=;"
      SqlDataAdapter da = new SqlDataAdapter(query, connectionString);

      DataSet ds = new DataSet();
      da.Fill(ds, "AuthorInfo");
      DataTable dtList = new DataTable();
      dtList = ds.Tables["AuthorInfo"];

      int loopctr = dtList.Rows.Count;

      foreach( DataRow row in dtList.Rows)
      {
          dr = dt.NewRow();
          dr[0] = loopctr;
          dr[1] = row["Name"];
          dr[2] = CreateTitleLink(row["Title"].ToString());
          dr[3] = Convert.ToDateTime(row["WriteTime"]).ToString();

          dt.Rows.Add(dr);
          loopctr--;
      }

      DataView dv = new DataView(dt);

      return dv;
    }  // end of CreateDataSource();
처음에 DataTable을 생성하고 테이블에 사용할 컬럼을 추가하기위해 DataTable.Columns.Add를 사용합니다. loopctr은 DataTable.Rows.Count 값을 저장하고 목록에 보여줄 때는 1씩 증감하면서 출력합니다. 이렇게 하면 일반 게시판 목록을 만들 수 있습니다.

각각의 foreach 루프에 대해서 DataRow = DataTable.NewRow()를 사용하여 동적으로 새로운 열을 추가하고 질의를 통해 가져온 값은 DataRow["FieldName"]으로 직접 가져올 수 있습니다. 게시판의 제목부분에 링크를 위한 태그와 같은 별도의 처리가 필요하다면 직접 코드를 넣는 대신에 public void CreateTitleLink(string sTitle)과 같은 함수에서 처리하도록 하고, 여기서는 함수를 이용합니다. 표시할 열을 모두 만들었으면 DataView를 생성합니다. DataView는 가상의 레코드집합으로 일종의 필터와 같은 역할을 합니다.

중요한 것은 이 함수는 ICollection이 반환값으로 되어 있습니다. 즉, ICollection 인터페이스를 구현한 클래스에서 이 함수의 반환값을 모두 사용할 수 있다는 것을 뜻합니다.

웹폼에 있는 ASP.NET 데이터그리드의 이름이 myDataGrid라고 한다면 Page_Load에 다음과 같이 사용하면 됩니다.

myDataGrid.DataSource = CreateDataSource();
myDataGrid.DataBind();
데이터그리드역시 ICollection 인터페이스를 구현하고 있습니다. 이렇게 커스터마이징한 데이터를 데이터그리드에 표시하려면 데이터그리드도 수정해야합니다. 다음은 데이터그리드부분만을 가져온 것입니다.

<asp:datagrid id="myDataGrid" runat="server" Width="800px" PageSize="10" PagerStyle-
HorizontalAlign="Right" PagerStyle-NextPageText="Next" PagerStyle-PrevPageText="Prev" Font-
Name="굴림체" AllowPaging="True" AutoGenerateColumns="False">
          <EditItemStyle HorizontalAlign="Center" Height="25px" 
VerticalAlign="Middle"></EditItemStyle>
          <AlternatingItemStyle Font-Size="X-Small" HorizontalAlign="Center" 
VerticalAlign="Middle" BackColor="AliceBlue"></AlternatingItemStyle>
          <ItemStyle Font-Size="X-Small" HorizontalAlign="Center" Height="25px" 
VerticalAlign="Middle"></ItemStyle>
          <HeaderStyle Font-Size="X-Small" Font-Bold="True" HorizontalAlign="Center" 
Height="25px" VerticalAlign="Middle" BackColor="Gainsboro"></HeaderStyle>
          <Columns>
            <asp:BoundColumn DataField="Number" HeaderText="번호"></asp:BoundColumn>
            <asp:BoundColumn DataField="Name" HeaderText="이름"></asp:BoundColumn>
            <asp:BoundColumn DataField="Title" HeaderText="제목"></asp:BoundColumn>
            <asp:BoundColumn DataField="WriteTime" HeaderText="등록일"></asp:BoundColumn>
          </Columns>
</asp:datagrid>
컬럼을 정의하기 위해 <asp:BoundColumn>을 사용합니다. 또한 컬럼에 대해서 필드명 대신에 제목을 표시하기 위해 HeaderText를 사용합니다. 주의할 것은 dt.Columns.Add(new DataColumn("Number", typeof(int)));에서 사용한 컬럼명 "Number"가 <asp:BoundColumn>의 DataField에 있는 값과 일치해야합니다. 이제 이것으로 데이터그리드를 커스터마이징 할 수 있었습니다.

ASP에서 처럼 데이터를 직접 질의하고 처리할것이라면 DataReader를 사용하는 것이 더 좋으며, ASP.NET에서 데이터그리드외에 Repeater를 사용하는 것도 좋습니다. 실제로 대부분의 ASP.NET 게시판은 DataReader와 Repeater를 사용하여 구현되어 있습니다.

Q. ASP.NET에서 데이터그리드를 사용하여 페이징을 구현하고 싶습니다.

A. 데이터그리드의 이벤트에서 PageIndexChanged에 myDataGrid_Page를 입력합니다. 또는 직접 텍스트 편집기를 사용하여 다음과 같이 입력할 수 있습니다.

<asp:datagrid OnPageIndexChanged="myDataGrid_Page" … >
이것은 페이징에 대한 처리를 myDataGrid_Page에서 처리하라는 것을 뜻합니다. 이 함수는 다음과 같이 작성하면 됩니다.

public void myDataGrid_Page(object sender, DataGridPageChangedEventArgs e)
{
  int startindex;
  startindex = myDataGrid.CurrentPageIndex * myDataGrid.PageSize;
  myDataGrid.CurrentPageIndex = e.NewPageIndex;
  myDataGrid.DataSource = CreateDataSource();
  myDataGrid.DataBind();
}
한 페이지에 몇 개의 목록을 보여줄지를 결정하는 PageSize, 현재 페이지 번호를 알려주는 NewPageIndex 등은 DataGridPageChangedEventArgs에서 가져옵니다.

실제로 페이징을 처리하는 이벤트는 다음 함수에서 발생합니다.

public void PagerButtonClick(Object sender, EventArgs e) 
    {
      // Used by external paging UI.
      string arg = ((LinkButton)sender).CommandArgument;
      string SearchType = String.Empty;
      string SearchString = String.Empty;

      switch(arg)
      {
        case ("next"):
          if (myDataGrid.CurrentPageIndex < (myDataGrid.PageCount - 1))
            myDataGrid.CurrentPageIndex ++;
          break;
        case ("prev"):
          if (myDataGrid.CurrentPageIndex > 0)
            myDataGrid.CurrentPageIndex --;
          break;
        case ("last"):
          myDataGrid.CurrentPageIndex = (myDataGrid.PageCount - 1);
          break;
        default:

          // Page number.
          myDataGrid.CurrentPageIndex = Convert.ToInt32(arg);
          break;
      }

    }
다음은 데이터그리드입니다. 데이터그리에서는 PageSize="10"으로 되어 있습니다. 이것은 하나의 페이지에 10개의 레코드만을 보여주는 것을 뜻합니다. 페이징을 위해서 OnPageIndexChanged="myDataGrid_Page"로 되어 있는 것을 볼 수 있습니다. 또한 AllowPaging="True"로 설정했습니다.

<asp:datagrid id="myDataGrid" runat="server" Width="800px" PageSize="10" PageCount="1" 
PagerStyle-HorizontalAlign="Right" PagerStyle-NextPageText="Next" PagerStyle-
PrevPageText="Prev" OnPageIndexChanged="myDataGrid_Page" Font-Name="굴림체" AllowPaging="True" 
AutoGenerateColumns="False">
          <EditItemStyle HorizontalAlign="Center" Height="25px" 
VerticalAlign="Middle"></EditItemStyle>
          <AlternatingItemStyle Font-Size="X-Small" HorizontalAlign="Center" 
VerticalAlign="Middle" BackColor="AliceBlue"></AlternatingItemStyle>
          <ItemStyle Font-Size="X-Small" HorizontalAlign="Center" Height="25px" 
VerticalAlign="Middle"></ItemStyle>
          <HeaderStyle Font-Size="X-Small" Font-Bold="True" HorizontalAlign="Center" 
Height="25px" VerticalAlign="Middle" BackColor="Gainsboro"></HeaderStyle>
<Columns>
            <asp:BoundColumn DataField="Number" HeaderText="번호"></asp:BoundColumn>
            <asp:BoundColumn DataField="Name" HeaderText="이름"></asp:BoundColumn>
            <asp:BoundColumn DataField="Title" HeaderText="제목"></asp:BoundColumn>
            <asp:BoundColumn DataField="WriteTime" HeaderText="등록일"></asp:BoundColumn>
          <PagerStyle VerticalAlign="Middle" NextPageText="다음" Height="25px" 
BorderWidth="0px" Font-Size="X-Small" PrevPageText="이전" BorderStyle="None" 
HorizontalAlign="Right"></PagerStyle>
        </asp:datagrid>
이와 같이 하면 데이터그리드를 이용하여 페이징을 손쉽게 구현할 수 있습니다.

Q. 입력, 수정, 조회, 검색을 하나로 하고 싶습니다. 어떻게 할까요?

A. 입력, 수정, 조회, 검색등은 화면에 표시되는 정보에 있어서 약간의 차이가 있을 뿐, 대개의 경우에 나머지는 동일합니다. 이러한 경우에 하나의 폼을 웹 컨트롤로 작성하고 이것을 컨트롤로 이용하는 방법이 있습니다. 조회 화면에서는 TextBox1.ReadOnly = True로 하고, 수정화면에서는 TextBox1.ReadOnly=False로 하여 수정할 수 있습니다.

또는 모든 텍스트박스의 AutoPostBack 속성을 True로 설정하고, 데이터를 변경하는 경우에 실시간으로 업데이트하도록 할 수도 있습니다.

추천하는 방법은 웹 컨트롤로 작성하고, 각각의 화면에 따라서 적절하게 컨트롤의 ReadOnly 속성을 설정하거나, Visible 속성을 이용해서 화면에서 안보이도록 하는 것입니다.

Q. 데이터베이스에 입력하고 조회를 하니 모든 데이터가 한 줄로 나타납니다. 어떻게 하면 줄 바꿈을 할 수 있을까요?

A. 줄 바꿈을 위해서는 엔터키에 해당하는 아스키(ASCII) 코드 13번 값을 HTML에서 사용하는 <br> 태그로 변환해야합니다. 이와 같이 하려면 다음과 같은 코드를 사용합니다.

string sResult = String.Empty;
StringBuilder sbText = new StringBuilder(TextBox1.Text);
sbText.Replace("\r\n", "<br>");
sResult = sbText.ToString();
반대로 수정화면에서 원래의 코드로 변환하려면 Replace 함수 부분만 다음과 같이 바꿔주면 됩니다.

sbText.Replace("<br>", "\r\n");
Q. 드롭다운리스트를 데이터베이스에 있는 값으로 동적으로 채우려면 어떻게 합니까?

A. DropDownList를 데이터베이스에서 동적으로 채우려면 다음과 같은 코드를 사용한다. 테이블에는 숫자필드인 ID, 문자열 필드인 Name이 있다고 가정한다.

public void FillDropDownList1()
    {
      string query = "SELECT ID, Name FROM Field";

      SqlConnection dc = new SqlConnection("server=(local); database=FieldDB; 
      uid=sa;pwd=;");
      dc.Open();

      SqlCommand myCommand = new SqlCommand(query, dc);
      SqlDataReader myReader = myCommand.ExecuteReader();

      int idxID = myReader.GetOrdinal("ID");
      int idxName = myReader.GetOrdinal("Name");

      while ( myReader.Read() )
      {
        DropDownList1.Items.Add(new ListItem(myReader.GetValue(idxName).ToString(), 
        myReader.GetValue(idxID).ToString()) );
      }

      myReader.Close();
      dc.Close();

    }
여기서는 간단히 하기위해 DataReader를 사용하여 테이블을 채우고 있다. DataReader.GetOrdinal("FieldName")은 레코드에서 현재 위치에 대한 참조를 설정하는 것이다. 각각의 루프를 돌면서 위와 같이 테이블을 채울 수 있다.

Q. CSV 형식을 읽어들이려면 어떻게 해야합니까?

A. CSV 형식은 ','로 각 필드가 구분된 형식을 뜻한다. 이 경우에는 다음과 같은 코드를 사용한다.

string sSource = "Hello,World, 4";
string [] arrStr = {};

arrStr = sSource.Split( new Char[] {','} );

foreach( string str in arrStr )
{
  Console.WriteLine(str.ToString());
}
이와 같이 하면 Hello,World, 4를 각각의 토큰으로 분리한다는 것을 알 수 있을 것이다. 여백은 구분하지 않는다.

Q. ASP.NET 디버깅 정보가 나타나지 않습니다. 또는 어떤 것은 디버깅 정보가 나타나고 어떤 것은 디버깅 정보가 나타나지 않습니다. 어떻게 된 일이죠?

A. <%@ Page language="c#" Debug="True"%>와 같이 설정하면 됩니다. 또는 web.config 파일에 다음과 같이 입력합니다.

<compilation 
         defaultLanguage="c#"
         debug="true"
    />
일부 시스템에서 이러한 문제가 나타나지만 저역시 왜 이러한 문제가 나타나는지 정확하게 알지는 못합니다. 만약 사용자 계정에서 ASP.NET을 전혀 디버깅할 수 없다면 다음 항목들을 확인하도록 합니다. 사용자 계정이 ASP.NET 디버깅을 비롯해서 디버거를 사용하여 사용자가 생성된 프로세스에 대해서 디버깅할 수 있도록 하려면 관리자 권한이 필요합니다. 이를 위해서 .NET Framework를 설치하면 Debugger Users 그룹이 생성됩니다. 사용자를 이 그룹에 추가합니다. ASP.NET을 실행하는 동안에 생성되는 임시 파일이나 어셈블리 바인딩 로그등은 모두 C:\WINNT\Microsoft.NET\Framework\v1.0.3705\Temporary ASP.NET Files에 있습니다. 따라서 탐색기등을 이용하여 이곳에 해당 계정에 대한 사용권한이 있는지 확인합니다. 도메인 컨트롤러에서는 SYSTEM 계정을 사용하기 때문에 SYSTEM 계정은 이 폴더에 대해서 모든 권한을 갖고 있어야합니다. 마찬가지로 도메인 컨트롤러가 아닌 시스템에서도 문제가 생긴다면 ASPNET과 같은 계정에 이 폴더에 대한 권한을 부여해야합니다.

Q. 작성한 ASP.NET 응용 프로그램을 다른 웹 서버로 옮기려고 하는데 어떻게 해야합니까?

A. 작성한 ASP.NET 응용 프로그램이 있는 가상 디렉터리를 압축해서 다른 웹 서버로 옮기고, 해당 디렉터리에 대해서 가상 디렉터리로 설정해야합니다. 새로운 서버로 옮긴 다음에 VS.NET등에서 읽기 위치를 해당 ASP.NET 응용 프로그램의 URL로 지정하면 됩니다.

VS.NET에서는 기본 설정이 파일 공유(File Share) 모드입니다. VS.NET Solution Explorer에서 마우스 오른쪽 버튼을 클릭한 다음에 Project Property Pages | Common Properties | Web Settings를 선택하면 Web Server Connection 밑에 Web Access Mode를 변경할 수 있습니다. 이것을 FrontPage로 설정하면 Visual InterDev에서처럼 FrontPage 모드로 액세스할 수 있습니다. FrontPage 모드로 설정한 경우에 다른 웹 서버에 있는 프로젝트를 불러들이기가 편합니다.

이 보다 편한 방법은 VS.NET의 Solution Explorer에서는 다른 위치에 있는 각각의 Solution을 읽어들일 수 있습니다. 따라서 스테이지 서버의 솔루션과 프로덕션 서버의 솔루션을 모두 열어둔 다음에 Solution Explorer에서 스테이지 서버에서 복사할 파일들을 선택해서 프로덕션 서버 솔루션에 드랙앤 드롭만 하셔도 됩니다.(실제로 가장 간편합니다)

Q. ASP.NET 세션 기간을 늘리려면 어떻게 합니까?

A. VS.NET에서 global.aspx를 선택한 다음에 마우스 오른쪽 버튼을 클릭해서 Code View를 선택한 다음에 protected void Session_Start(Object sender, EventArgs e)에 다음과 같이 작성합니다.

Session.TimeOut = 60;
세션을 60분동안 유지하도록 설정하는 것이며 ASP와 같습니다. 이것은 HttpSessionState.TimeOut을 이용합니다. web.config 파일에서도 설정할 수 있으며 web.config의 설정 형식은 다음과 같습니다.

<sessionState 
            mode="InProc"
            cookieless="false" 
            timeout="20" 
    />
Q. 연결 문자열을 web.config 파일에 두고 이용할 수 있다고 하는데 어떻게 하는지요?

A. web.config에 파일의 경로나 데이터베이스 연결 문자열등을 다음과 같이 저장합니다.

<appSettings>
    <add key="ConnectionString" value="server=(local); database=BS_TABLE; uid=sa; pwd=;" />
<add key="FileLocation" value="ftp://localhost/public/" />
  </appSettings>
코드에서 이 값을 가져오려면 다음과 같이 합니다.

string connectionString = 
System.Configuration.ConfigurationSettings.AppSettings["connectionString"];
string fileLocation = System.Configuration.ConfigurationSettings.AppSettings["FileLocation"];
Q. 기존에 작성한 COM DLL을 ASP.NET에서 이용하거나 C#으로 작성한 DLL을 ASP에서 이용할 수 있습니까?

A. COM DLL을 ASP.NET에서 이용하려면 먼저 어셈블리로 변환해야합니다. 변환하려면 tlbimp.exe를 사용합니다. 이 프로그램의 위치는 VS.NET을 설치한 경우에 c:\program files\microsoft visual studio .net\FrameworkSDK\bin 입니다. 반대로 C#에서 작성한 DLL을 ASP에서 이용하려면 어셈블리를 COM DLL로 변환하는 것입니다. 이 경우에는 tlbexp.exe를 사용합니다. 사용법은 다음과 같습니다.

tlbimp.exe myCOM.DLL /out:myCOM2.DLL
이와 같이하면 COM으로 작성된 myCOM.DLL을 myCOM2.DLL 어셈블리로 변환합니다.

Q. ASP.NET에서 데이터베이스를 이용하여 프로그래밍을 하는데 한글이 깨집니다.

A. ASP.NET에서 web.config 파일에서 기본 값은 다음과 같습니다.

<globalization 
            requestEncoding="utf-8" 
            responseEncoding="utf-8" 
   />
일반적으로 영문 버전이나 한글 버전에 관계없이 한글이 깨지는 일은 없습니다. 데이터베이스에서 유니코드를 사용하도록 했다면 큰 문제는 없습니다. 만약에 한글이 깨진다면 utf-8 대신에 ks_c_5601-1987을 사용하도록 합니다.

Q. 파일을 업로드하는데 용량이 큰 파일은 업로드가 되지 않습니다.

A. 용량이 큰 파일을 업로드하는 경우에 처리 시간이 길어지기 때문에 timeout 되는 경우가 발생합니다. 또한 ASP.NET에서는 최대 요청 길이인 maxRequestLength를 설정할 수 있다. 이 설정은 web.config에서 할 수 있으며 다음과 같이 합니다.

<system.web>
<httpRuntime 
executionTimeout="600" 
maxRequestLength="20480" 
useFullyQualifiedRedirectUrl="false" />
</system.web>
이와 같이 설정하면 실행시간은 600초로 설정하고, 최대 전송 크기는 20M로 설정할 수 있습니다.
 

Posted by 뭉치냐옹
:

CheckBoxList ch=new CheckBoxList();

ListItem items=new ListItem("텍스트","벨류");
ListItem items2=new ListItem("텍스트","벨류");

ch.Items.Add(items);
ch.Items.Add(items2);

PlaceHolder1.Controls.Add(ch);

Response.Write(ch.Items[0].Value+"<br>");
Response.Write(ch.Items[1].Value+"<br>");

Posted by 뭉치냐옹
:
Posted by 뭉치냐옹
:

사용자정의 컨트롤.cs -> base.cs -> Presentation.cs


Posted by 뭉치냐옹
:

Page_Load에 써준다..

 

searchTXT.Attributes["onkeypress"] = " if( event.keyCode == 13 ){" + Page.GetPostBackEventReference(Button1) + "; return false;}";

 

브라우저 소스보기를 하면 다음의 결과가 나타난다..

<input name="searchTXT" type="text" id="searchTXT" onkeypress=" if( event.keyCode == 13 ){__doPostBack('Button1',''); return false;}" />

<input type="submit" name="Button1" value="검색" id="Button1" />


Posted by 뭉치냐옹
:

ADO.NET 2's DataTable.Merge

  OK, so its not ground breaking, earth shattering nor will it solve world hunger ... but I am pretty stoked over the addition of the Merge method to the DataTable object in ADO.NET 2. It has always been an annoyance of mine that when I want to merge a DataTable into another one that I have to have a DataSet to perform the operation. What if I don't have nor want a DataSet? Well, in ADO.NET 1.x you have to create a DataSet anyway. I know its just an extra line of code or 2, but its the point of creating an object that really serves no purpose in my context that bothers me. OK, so this is not a huge issue by itself but again I feel like it strays from sound development practices. If the DataSet is already there ... fine.

In the following code sample I set up 2 DataTable objects manually and then merge them. Unfortunately, I have to create a DataSet to perform the merge.

ADO.NET 1.1 - DataSet.Mergeprivate void Button1_Click( object sender, System.EventArgs e)
{
    // Set up a DataTable
    DataTable oDt= new DataTable("Colors");
    oDt.Columns.Add("ColorID", System.Type.GetType("System.Int32"));
    oDt.Columns.Add("ColorName", System.Type.GetType("System.String"));
    oDt.PrimaryKey = new DataColumn[]{oDt.Columns["ColorID"]};
    oDt.Rows.Add(new object[]{1,"Red"});
    oDt.Rows.Add(new object[]{2,"Teal"});
    oDt.Rows.Add(new object[]{3,"Yellow"});
    oDt.AcceptChanges();

    // Set up a another DataTable that I will use to Merge
    DataTable oDtMoreColors= new DataTable("Colors");
    oDtMoreColors.Columns.Add("ColorID", System.Type.GetType("System.Int32"));
    oDtMoreColors.Columns.Add("ColorName", System.Type.GetType("System.String"));
    oDtMoreColors.PrimaryKey = new DataColumn[]{oDtMoreColors.Columns["ColorID"]};
    oDtMoreColors.Rows.Add(new object[]{1,"Red"});
    oDtMoreColors.Rows.Add(new object[]{2,"Blue"});
    oDtMoreColors.Rows.Add(new object[]{4,"Green"});
    oDtMoreColors.AcceptChanges();

    // Create a DataSet so I can merge the DataTable objects
    DataSet oDs = new DataSet("WhyOhWhy");
    oDs.Tables.Add(oDt);
    oDs.Merge(oDtMoreColors);
}


In ADO.NET 2 I can skip creating the DataSet and instead use the following line of code.

ADO.NET 2 - DataTable.Merge    oDt.Merge(oDtMoreColors);


While some topics like MARS are grabbing more of the press in ADO.NET 2, tweaks like the DataTable Merge method are flying under the radar. After all, I use these types of features all the time so if we can make it work better, then I am all for it.

Share this post: Email it! | bookmark it! | digg it! | reddit!

 

 

출처 : http://codebetter.com/


Posted by 뭉치냐옹
: