posted by 권오성의 Biomedical Engineering 2008. 11. 1. 11:32
아래 링크에서 받을수 있습니다.

http://www.oracle.com/technology/software/tech/windows/ora_mts/htdocs/utilsoft.html
posted by 권오성의 Biomedical Engineering 2008. 6. 26. 08:17

docx 파일이 새로나온 오피스 2007 버전이라 안되시는것 같아요~

이전 버전을 쓰셨던 경우라면~

호환되는 프로그램을 다운 받으시면 된답니다..

http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=941b3470-3ae9-4aee-8f43-c6bb74cd1466

다운 받으시면~

갖고 계신 파일을

이전 버전인 doc로 저장할 수도 있고

docx 파일을 편집할 수도 있답니다.

posted by 써니루루 2008. 3. 26. 09:21

출처 : http://monac.egloos.com/1252483


자바스크립트와 첫 인연을 맺은 것은 1996년도인데, 진지하게 사용하는 일이 없기 때문에 계속해서 까먹기만 하는 유명한 언어로 인식되어 있는 중.

자바스크립트를 보면 금방 또 알지만 항상 잊어버리기 때문에 언제든지 새로운 기억을 주입시키기 위한 용도로 작성함. 게다가, 잘 정리된 형태의 글을 보기 힘들고, 내 입맛에 맞는 글을 보기 힘들기 때문에 내 입맛에 맞게 정리한다는 목적 + 다른 분들도 참고할 분은 참고가 되었으면 해서 정리함. 특히, Ajax 프로그래밍과 함께 다시 뜨고 있는 자바스크립트 때문에 괴로운 분들에게 도움이 되길.

자바스크립트는 HTML 페이지에 저장하고

<script type="text/javascript" language="javascript">
  여기에 자바스크립트 코드 추가
</script>

하는 형태면 되지만 불편함이 많으니 "자바스크립트 학습 환경 만들기(http://monac.egloos.com/1222893)"를 참고해서 환경을 만들어서 사용하시면 편함.


1. 경고 보여주기

window.alert( 'Hello, world' );

alert( 'Hello, world' );

두 가지가 다 가능한 형식. 자바스크립트는 언제 어디서나 참조할 수 있는 내장 객체를 갖고 있는 데 그 중에 하나가 window 객체로 우리가 보는 창과 관련된 모든 기능을 제공함. 그 중에 대표적인 것이 경고창 띄우기.


링크를 클릭했을 때, "정말 삭제할래?"등의 대화상자를 보여주고, yes/no 답변을 묻는 confirm() 함수도 마찬가지.

<a href="#" onclick="return confirm( "정말 날 떠날거야?")">click</a>
<a href="#" onclick="return window.confirm( "정말 날 떠날거야?")">click</a>

confirm(), window.confirm() 모두 동일. 그러니까, window 객체에 속한 함수들은 window라는 이름을 생략하고 사용할 수 있음.

사용자로부터 입력을 받는 예로는 prompt( "나이를 알려줘" ) 라든가, window.prompt( "나이를 알려줘" ) 라든가 하는 형태가 가능.


2. 변수

i = 0;
alert( i );

변수를 위해 특별히 선언하지 않고 사용해도 잘 되지만 보통은 var 키워드를 사용해서 변수를 사용하는 것을 선호하고 있고, 대부분의 Ajax 라이브러리들도 var 키워드를 사용해서 변수를 선언해서 사용하고 있음. 명시적으로 변수를 선언해서 사용하는 것이 더 좋다고 생각함.

var i = 0;
i = "hello world";
i = false;

스크립트 언어들은 C/C++/Java 같은 언어들과 달리 데이터 타입이 없는 경우가 대부분이며, 이는 프로그래밍을 간단하게 해준다는 장점이 있음.
그렇다고 해서, 실제로 데이터 타입이 없다거나 구분하지 않는 것은 아니며 내부적으로 데이터 타입을 갖고 있으며, 그에 따라 적절하게 알아서 동작하는 똑똑한 기능을 갖추고 있음. 그래서, 위와 같은 코드를 사용할 경우 알아서 데이터 타입을 변환하고, 알아서 동작함. 내부적으로 갖는 데이터타입을 서브 데이터 타입(sub data type)이라 함. 신경 안써도 됨. 이런 게 있으면 좋다라는 정도의 상식으로만 알고 있으면 되고, 이런 것 모르는 스크립터가 대부분이니 사는 데 지장없음!

첫번째는 정수형이고, 두번째는 문자열 형식이고, 세번째는 불리언(boolean) 형식임.

true/false는 자바스크립트 내부에서 지원하는 키워드. 진리값이니 뭐니 말은 많으나 다 필요없음. 참이면 참이고, 거짓이면 거짓임.

문자열은 "과 ' 모두 사용할 수 있는데, HTML에서 사용할 때는 HTML의 name="value"와 혼동되므로 '를 사용하는 것이 보통임.


3. 배열

var days = new Array( "Mon", "Tue", "Wed" );
days[3] = "Thu";

alert( days );

배열은 Array 클래스를 이용해서 선언함. 클래스 생성은 다른 언어들처럼 new 키워드를 사용함. 배열의 인덱스는 0 부터 세기 시작하는데, 위와 같이 초기값으로 3개의 요소를 주면 0, 1, 2 번째에 할당되고, 3번째에 새로운 요소를 할당하는 것도 자유로움.

배열 자체가 동적이니까 마음대로 편안하게 사용할 수 있음. 즉, 마음대로 꼬장부리면서 사용할 수 있다는 의미.

var days = new Array( "Mon", "Tue", "Wed" );

days[5] = "Thu";

alert( days );

이렇게 쓰면 중간에 비는 것들은 전부 비게되고, 5번째에 삽입이 됨. 꼬장은 그대의 자유.

new Array() 라고 안 쓰고 싶다면

var days = [ "Mon", "Tue" ];
days[2] = "Wed";
alert( days );

와 같이 사용할 수 있음.


4. 제어 구조

var rand = Math.random();
rand = Math.ceil( 6 * rand );

if( rand % 2 == 1 )
{
  alert( 'odd' );
}
else
{
  alert( 'even' );
}

Math 클래스에서는 다양한 수학함수들과 난수 생성을 할 수 있음. Math.cos(), Math.abs(), Math.sqrt() 등이 준비되어 있음.

다른 언어들처럼 if 구조는 축약형을 사용할 수 있음.

var output = (rand % 2 == 1 ) ? 'odd' : 'even';

alert( output );



4.1 swtich

switch ... case 구조도 물론 지원함.

var rand = Math.random();
rand = Math.ceil( rand * 6 );

switch( rand )
{
  case 1:
  case 3:
  case 5:
    alert( 'odd' );
  default:
    alert( 'even' );
}


5. 루프

일반적인 for, while을 모두 지원하며 사용법도 동일함.

var days = ["Mon", "Tue", "Wed", "Sun" ];  // 일주일이 4일 뿐이라서 3일 일하면 노는 세상을 꿈꾸는 무의식의 반영

for( var ctr = 0; ctr < days.length; ++ctr )
{
  alert( days[ctr] );
}

foreach와 비슷한 for .. in 구조는 다음과 같음

var days = [ "Mon", "Tue", "Wed" ];

for( var day in days )
{
  alert( days[ day ] );
}


while 문은 다음과 같음

var days = [ "Mon", "Tue", "Wed" ];

var ctr = 0;

while( ctr < days.length )
{
  alert( days[ ctr ] );
  ++ctr;
}



6. 정규표현식

function html_escape( str )
{
  return str.replace( /&/g, "&amp;" ).replace( /</g, "&lt;" ).replace( />/g, "&gt;" ).replace( /"/g, "&quot;" ).replace( /'/g, "&apos;" );
}

함수는 function 키워드로 선언하면 되고, 데이터 타입이 없으니까 반환 타입 지정 같은 것도 없음.
정규표현식은 어떤 문자열이든 점(.) 찍고 replace() 메서드를 호출하면 됨.

"Hello World".replace( /Hello/, "Cruel");

alert(  "Hello World".replace( /Hello/, "Cruel")   );   // 원래 세상은 잔인햇!!!!

객체지향 언어적인 특성도 갖고 있기 때문에 위에처럼 메서드 연쇄로 쭈욱 호출하면서 처리해도 됨.

위에 코드는 HTML로 쓰인 것들을 안전한 문자열로 변환하기 위해 만든 자바스크립트 함수. 다음 코드로 결과 확인

alert( html_espcae( "<HTML>" ) );



6.1 함수 가변 인자

function make_list()
{
  var ctr = 0;

  for( ctr = 0; ctr < arguments.length; ++ctr )
  {
    alert( arguments[ctr] );
  }
}

make_list( "Mon", "Tue", "Wed" );

함수의 인자는 arguments 내장 객체로 전달되므로 이를 이용해서 처리.



7. 이벤트

자바스크립트는 몇가지 이벤트들을 정의하고 있음. 대표적인 것이 onload 이벤트로 페이지가 로딩될 때 실행하는 처리들을 이곳에서 할 수 있음.

<body onload="alert( 'Hahaha' );" >

이벤트에 직접 자바스크립트를 쓰는 것도 가능하고, 함수 이름을 지정하는 것도 가능함.

function init()
{
  alert( '오빠왔다!!' );
}

window.onload = init;

body 태그에 쓰는 것도 창과 관련된 것이므로 window 객체의 onload 이벤트에 해당 함수 이름을 지정함. init 뒤에 ()를 붙이지 않음. C언어처럼 말하자면 함수의 주소만 지정하는 것이므로.

자바스크립트는 함수 이름을 지정하지 않아도 되니까 위 코드를 다음과 같이 하나로 합치는 것이 가능함.

window.onload = function() {
  alert( '오빠왔대두!!!' );
}

init 함수 정의해서 init만 삭제하고, 합쳐놓은 것과 똑같은 것을 알 수 있음.

인자가 있는 함수를 정의한다면

window.onload = function( a, b ) {
  alert( a + b );
  alert( "오빠 다녀갔어~~!" );
}


8. 클래스

자바스크립트는 객체지향 언어의 특성도 갖고 있음.(다소 부족한 기능이지만)
자바스크립트는 클래스를 위한 키워드가 존재하지 않음. 그냥 클래스도 함수임.

객체지향 언어에서 생성자를 정의한다고 하는데, 사실상 생성자라는 것이 "()" 함수를 정의하는 것이라 할 수 있음.
인자가 있는 생성자라면 "(a, b)"를 정의하는 것이라 할 수 있고.

예를 들어, C++을 보면

size_t length(0);
string arg1( ARGV[1] ), arg2( ARGV[2] );

이런식으로 변수를 선언할 수 있는 것도 생성자의 "()"이 함수이기 때문.

자바스크립트에서 클래스는 함수로 정의함.


function Character( name, gender )
{
  var _name = name;
  var _gender = gender;


  this.get_name = function() { return _name; }
  this.set_name = function(value) { _name = value; }


  this.get_gender = function() { return _gender; }
  this.set_gender = function(value) { _gender = value; }


  this.toString = function() { return _name + ":" + _gender  }
}

var nadia = new Character( "Nadia" );
nadia.set_gender( "F" );

alert( nadia.get_name() );
alert( nadia.get_gender() );

alert( nadia.toString() );

new 키워드로 인스턴스를 생성할 때, 함수의 인자 수를 정확하게 맞추지 않아도 된다는 것.

클래스 정의의 대부분은 이처럼 함수를 직접 선언하는 형태로 구현됨.

이처럼 함수에 이름을 주지 않고, 마음 내키는 대로 함수를 남발하는 것을 익명 함수(Anonymous function or Anonymous method)라 부름. 굳이 기억할 필요없는 함수들은 이름을 주지 않고, 관리를 편하게 하자는 나름대로의 합리적인 이유가 있음.

this 키워드는 현재 인스턴스를 가리키기 위해 사용되는 것으로 다른 객체지향 언어들과 쓰임이 동일함.

자바스크립트에도 루비와 마찬가지로 eval() 이라는 함수가 존재해서 문자열을 코드로 해석하게 하는 기능이 있음.

eval( "alert( 3 + 5 )" );

을 실행하면

alert( 3 + 5 );

가 되어 결과 8이 출력되는 것을 볼 수 있음.

루비의 class_eval(http://monac.egloos.com/1158938)에서 보면 class_eval() 함수를 사용해서 클래스 멤버에 대한 get/set 메서드를 자동으로 생성하는 기능을 구현하는 것을 설명한 적이 있고, 실제 루비의 attr_accessor 키워드가 이렇게 구현되어 있는데, 자바스크립트도 eval() 함수가 있기 때문에 이와 같은 구현을 하는 것이 가능함.

class Person
    attr_accessor :name
end

루비는 이렇게 해주면 name에 대한 getter/setter가 모두 자동으로 만들어지니까 간편하다는 이야기들을 자주하는데, 자바스크립트는 이 보다 더 황당하게 간단함.(한 줄!)
자바스크립트에서 루비처럼 attr_accessor 키워드를 제공하는 것은 아니지만 나중에 소개할 Extjs 같은 Ajax 프레임워크들은 eval을 적극 활용해서 그런 기능을 대부분 자체적으로 만들어서 사용하고 있음.



9. document 객체

document 객체는 웹브라우저에서 문서와 관련된 모든 요소들을 관리함.

document.embeds 배열은 <embed> 태그로 선언된 모든 요소들의 목록을 갖고 있음.

document.forms 배열은 <form> 태그로 선언된 모든 요소들의 목록을 갖고 있음.

document.frames, document.images, document.links 배열이 있음.

<form>
  <input type='text' name='text1' />
</form>

이 경우 text1 텍스트박스에 접근하려면

alert( document.forms[0].elements[ 'text1' ].value );

텍스트 상자의 값을 출력하게 됨. 첫번째 폼이기 때문에 forms[0]로 지정한 것임.

<form name='my_form'> 으로 선언되어 있다면

document.forms[ 'my_form' ].elements[ 'text1' ].value

와 같은 형식으로도 접근 가능함.

<script>
function showme( f )
{
  alert( f.elements[ 'text1' ].value );
}
</script>

<form name='my_form' >
  <input type='text' name='text1' />
  <input type='button' onclick='showme( this.form );' />
</form>

함수 인자에서 this.form으로 폼에 대한 참조를 넘겼음. this.form은 document.forms[ 'my_form' ]과 의미가 같음.

document.forms[ 'my_form' ].elements[ 'text1' ].value 를

f.elements['text1'].value 로 축약한 것임. f는 함수에 전달된 인자.

checkbox, radio 버튼은 checked 속성이 true/false로 지정

select로 표현하는 드랍다운리스트는 selectedIndex로 인덱스를 가져올 수 있음.
option은 selected와 value 멤버로 접근함.


웹페이지에서 컨트롤을 찾는 방법은 documents.forms... 복잡하게 찾아가는 방법도 있지만,  document.getElementById()를 쓰는 방법도 있음.



<script>
function showme( f )
{
  var label = document.getElementById( 'label1' );
  label.innerHTML = html_escape( f.elements['text1'].value );
}
</script>

<form name='my_form' >
  <input type='text' name='text1' />
  <input type='button' onclick='showme( this.form );' />
</form>

<span id='label1'>---</span>


html_escape() 함수는 위에 정의한 것을 사용.


getElementById()는 전체 컨트롤을 전부 탐색하기 때문에 느리다는 것을 명심해야 하고, 화면에 컨트롤이 많다면 성능저하의 주범이 될 수 있으므로 조심해서 사용해야 함. ASP.NET 같은 언어는 Page.FindControl() 메서드로 컨트롤을 탐색하는 데, 이것도 역시 이와 마찬가지.


10. DOM 처리

DOM은 Document Object Model의 약자. 문서 객체 모델이라는 데, 문서의 각 구성 요소 전부를 트리 구조 형태로 표현하는 것.

getElementById() 함수도 바로 이 DOM 트리를 탐색하는 것임. FireFox에서도 Web Developer 플러그인을 설치하면 DOM Inspector를 통해 DOM 트리를 볼 수 있음.

getElementsByTagName( name )

태그 이름으로 해당 요소 검색하는 것. 근데, 웹 페이지에 P 태그가 얼마나 많이 쓰이겠나. 그러니까, 반환 타입은 배열형식임.

var p = document.getElementsByTagName( 'p' )[0];

뒤에 [0]이면 첫번째 p 태그를 가져올 수 있음.

var p_arr = document.getElementsByTagName( 'p' );   // 배열로 가져오기

createElement( name )

DOM 트리에 새로운 요소 만들기.

createAttribute( name )

새로운 속성 만들기... name="value"로 되는 특성에서 name  만들기.

createTextNode( name )
  name을 키로 하고, 텍스트를 값으로 갖는 노드 만들기.

appendChild( node )
  현재 요소를 node에 자식으로 추가하기. 그러니까, 어느날 갑자기 node에겐 딸린 자식이 생긴다는 의미...;;


<script>
function show( f )
{
  var p = document.getElementsByTagName( 'p' )[0];
  var label = document.createElement( 'span' );
  var text = document.createTextNode( f.elements['text1'].value );
 
  label.appendChild( text );
  p.appendChild( label );
}
</script>

<form>
  <input type="text" name="text1" />
  <input type="button" value="show text" onclick="show(this.form);" />
  <p>Entered Text: </p>
</form>

p.innerHTML을 사용하면 내용을 바꾸는 게 되지만 appendChild()를 썼기 때문에 내용이 추가되는 형태가 되었음.

DOM 트리 구조를 보면 이해하기 쉬우므로 DOM Inspector 사용을 권함.

===== 기본적인 명령들 =====
1. 간단하게 팝업창 두개 띄우기 [참고로 (main.html)안에서 모두 작성한 것임..]
<HEAD>
<script language="javascript">
 function recruit()  //채용공고 팝업을 띄울때
 {
  window.open("/recruit.htm","new1","width=507 height=680");
 }

 function initiate()  //공지사항 팝업을 띄울때.
 {
  window.open("/initiate.htm","new2","width=680 height=420");
 }

 function mypop() //두개의 팝업을 썩기..
 {
  window.open("/recruit.htm","new1","width=507 height=680");
  window.open("/initiate.htm","new2","width=680 height=420");
 }
</script>
</HEAD>

// onload는 페이지 로드 시 팝업 띄우기.
// onunload는 페이지 닫힐 때 팝업 띄우기.
<BODY onload="mypop()" onunload="recruit()">  //여기에서 스크립트 함수 호출

Tip. 만약 팝업창을 클릭하면 닫히게 하고 싶다면 이 명령을 추가...
<img src="파일.htm" onClick="window.close()">


//팝업창 닫히면서 페이지 이동
<script Language="JavaScript">
function golistview()
{
var firstWin = window.opener;
firstWin.location.href="Index.asp";
window.close(this);
}
</script>

<a href="javascript:golistview()"><img src="/Images/but_list.gif" border="0" name="but_list"></a>

posted by 권오성의 Biomedical Engineering 2008. 3. 13. 13:43
서울대병원, IT아웃소싱 새 사업자 선정나서

서울대학교병원이 IT서비스 자회사인 이지케어텍과의 IT아웃소싱 서비스 계약기간이 곧 종료됨에 따라 새 IT아웃소싱 사업자 선정 절차에 돌입했다.

이는 정부투자기관의 조달계약시 경쟁입찰을 실시해야 한다는 관련 법령에 의한 것이지만, IT아웃소싱 서비스를 제공하는 IT서비스 자회사를 두고 있는 상황에서 입찰 방식으로 새 사업자 선정에 나서는 것은 이례적이라는 점에서 업계의 이목이 쏠리고 있다.

서울대병원은 10일 `종합의료정보시스템 종합관리 용역` 사업자 선정을 위한 제안요청(RFP) 설명회를 열고, 오는 3월1일부터 내년 2월말까지 1년간 총 47억원 규모의 IT 아웃소싱 프로젝트를 발주한다고 밝혔다.

이번에 발주된 IT아웃소싱의 범위는 서울대병원의 종합의료정보시스템과 강남헬스케어센터의 각종 IT인프라. 계약기간은 1년이지만 상호 합의에 의해 1년에 한해 연장이 가능하다.
입찰자격은 최근 3년내 800병상 이상 의료기관의 종합의료정보시스템을 운영한 경험이 있는 회사로, 현재 IT아웃소싱 서비스를 제공하고 있는 이지케어텍은 물론 주요 대형 SI업체들에 제안 가능성이 열려 있다.

외형적으로는 이번 입찰이 서울대병원과 이지케어텍의 재계약을 위한 요식행위에 불과한 것으로 보이지만, 앞으로 매 2년마다 입찰이 진행될 경우 사업자 교체의 가능성도 배제할 수 없다는 것이 전문가의 의견.

최근 2~3년간 강원대, 제주대 등 일부 대학병원, 종합병원을 중심으로 신정보시스템 구축 후 시스템관리를 위탁하는 사례가 늘어나는 등 병원 IT아웃소싱 시장은 최근 2~3년간 서서히 기지개를 켜는 분위기다.

이에 대해 서울대병원 관계자는 "자격조건에 부합한 모든 SI업체가 입찰에 참여할 수 있으며, 기술력과 서비스제공능력을 중심으로 평가할 계획"이라고 밝혔다. 이지케어텍 관계자는 "기존 서비스 경험과 노하루를 고려했을 때 무난하게 재계약을 할 것으로 예상한다"고 말했다.

앞서 지난 2001년 서울대병원 본원의 IT부서 인력들이 분사해 의료정보서비스 전문회사인 이지케어텍을 설립했으며, 당시 5년간 200억원 규모의 서울대병원 IT아웃소싱 서비스 계약을 체결한 바 있다. 이지케어텍은 설립당시 서울대병원과 이지케어텍 임직원, 삼성SDS가 함께 지분을 참여했지만, 삼성SDS가 지분을 매각하면서 현재는 서울대병원이 39.4%의 지분으로 최대주주이며, 나머지 지분은 개인주주들이 보유하고 있다.
posted by 권오성의 Biomedical Engineering 2008. 3. 4. 12:28
손톱을 얼마나 자주 깎으세요?
때로는 금새 자라는 손톱때문에 귀찮을때가 많습니다. 하지만 너무 바짝 자르거나 손톱을 다쳐 빠지기라도 한다면 그제서야 손톱의 고마움을 느끼게 됩니다.

사용자 삽입 이미지
손톱의 역할은 크게 두가지로 나눌수있는데 바로 손가락끝을 보호하는 역할과 도구로써의 역할입니다.
그러나 손톱의 가장 중요하면서도 잘 몰랐던 역할이 있습니다. 바로 건강의 척도를 알수 있게 해주는 '건강알리미'의 역할입니다.
신체에 이상이 생겼을 경우 손톱의 변화만으로 쉽게 몸속 건강을 의심해 볼 수 있습니다.

손톱은 옅은 분홍빛을 띄며 단단한 단백질 조직으로 이루어져 있습니다. 특별한 외부에 자극이 없더라도 몸에 이상이 생기면 변화를 일으키며 일주일에 한번 정도는 길어진 손톱을 깎을때 색이나 모양에 변화를 체크하고 관찰하는 습관을 갖아야 합니다. 만약 이상한 점을 발겨했을 경우 병원으로 찾아가 진단을 받아보는 것이 중요합니다.

피부 표면에 붙어있는 손톱은 각질층이 변화되어 죽은 세포 조직입니다. 마치 손톱이 계속 자란다고 생각하기 쉽지만 이는 세포조직이 계속 밖으로 밀려나는 것입니다.
케라틴이라는 단백질이 손톱의 주성분이며 월 평균 2.5mm씩 자라납니다. 겨울보다는 여름에 더 빠르게 자라는것으로 알려져 있으며 건강한 손톱은 0.5mm 두께로 투명하고 단단한 분홍빛이 돕니다. 또한 매끈하고 윤기가 나는 표면이 정상적인 손톱의 모양입니다.

사용자 삽입 이미지
손톱이 중요한 이유는 여러가지가 있는데 동맥과 정맥으로 복잡하게 얽혀져 있는 손가락을 보호하며 또한 손가락에 힘을 부여해서 물건을 들어올리거나 집을때 지지대 역할을 수행합니다. 가려운곳을 긁거나 방어의 역할을 하기도 합니다.
손톱의 일부는 신체의 내부건강에 이상이 생겼을때 동시에 손톱에도 질병이 나타나는 신호를 보내기도 합니다. 뿐만 아니라 예쁘게 손질하므로써 미용적인 역할로 이미지 변신에도 종종 쓰이고 있습니다.
문제는 손톱이 신체말단에 위치하고 있으므로 훼손의 위험과 세균 감염에 쉽게 노출되어 있다는 것입니다. 따라서 청결하게 유지하고 영양제를 발라 보호해야 합니다.
무심히 손톱을 눌렀는데 하얗게 변한 색상이 원래의 분홍빛으로 회복되는데 시간이 오래 걸린다면, 빈혈이나 호르몬 부족, 생리통 혹은 생리불순을 의심헤 봐야 합니다. 이는 혈액순환이 잘 안되기 때문입니다.

특히 철 결핍성 빈혈의 경우 손톱이 창백한 색을 띠는 동시에 끝이 얇아지면서 숟가락처럼 가운데가 파인 모양을 나타내기도 합니다. 갑상선질환, 관상동맥질환, 매독이나 간질환 등도 이와 비슷한 현상이 생길수 있습니다.
또한 손톱의 색이 녹색빛으로 변한다면 외부로부터 균에 감염을 의심할 수 있습니다. 그리고 갈색이나 검정색을 나타내면 암의 일종인 흑색종일 가능성이 있습니다.
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
만약 손톱이 세로로 골을 만든다면 순환기계통의 이상을 의심해야 한다. 가로로 난 골은 출산, 폐렴, 홍역 등의 열성질환이나 약물등이 원인이 될수 있습니다.
손톱에 작은 함몰이 있다면 만성습진, 원형탈모, 관절염을 의심하고, 손톱끝이 둥글게 말렸다면 만성호흡기질환이나 선천성 심장질환일 수 있습니다. 손톱끝 부분이 얇고 흰달걀 껍질처럼 변한다면 영양부족 혹은 신경계통에 이상일 수도 있으며, 손톱에 검은 선이 보이면 곰팡이 균에 감염됐거나 약물과 외상을 의심하게 됩니다.

마지막으로 손톱이 자꾸 부스러지거나 갈라진다면 갑상선 기능이 저하되었거나 건선, 아토피, 세균감염 등이 원인일 수 있습니다.

손톱건강을 위해서 지켜야 할 5가지

첫째
, 손톱을 너무 짧게 자르지말고 손톱주변 각질은 적당히 제거합니다. 손톱을 너무 짧게 깎는다면 주변의 각질은 더욱 많이 생기며 외부 자극을 더 많이 받게 됩니다. 따라서 1mm정도는 늘 남겨두고 자르면 좋습니다.

둘째, 손톱을 정리하기 위한 도구인 손톱깎기나 줄칼같은 도구의 청결이 중요합니다. 이런 도구에 세균을 통해 감염될 수 있습니다. 특히나 대중목욕탕의 손톱깎기나 가족중에 무좀이 있는 사람이 있다면 개인 손톱깍기를 마련하거나 더욱더 신경을 써야 합니다.

셋째, 여성의 경우 매니큐어를 일주일 이상 바른 상태로 유지했다면 손톱에 착색되거나 화학성분이 손톱건강을 해칠 수 있으므로 며칠동안은 손톱이 쉴 수 있게 아무것도 바르지 않은 상태로 놔둬야 합니다.

넷째, 손톱은 주성분이 단백질로 이루어져 있으므로 손톱건강을 위해 단백질이 많이 함유된 쇠고기, 우유, 달걀같은 음식 섭취가 중요하다. 또한 과일이나 녹황색 채소도 손톱을 건강하게 만드는데 도움이 됩니다.

다섯째, 손에 바르는 핸드크림을 바를시 손톱에도 같이 바르면 좋습니다. 보통을 손톱에 신경을 안 쓰는 경우가 많은데 손가락으로 손톱과 손톱 주변의 각질까지 꼼곰히 발라준다면 네일 케어 효과가 있습니다.
posted by 권오성의 Biomedical Engineering 2008. 2. 25. 15:16

1. 오라클 백업과 복구전략

2. 데이타 마이닝은 무엇이면 어떤 노력을 해왔나? 또는 어떤 노력을 할 것이냐?

3. PK 와 FK (AK) 에 대해 아는대로 설명

4. 제약조건에 대해서 아는대로 설명

5. 옵티마이져에 대해 아는대로 기술

6. 트랜젝션의 4가지 특성에 대해 아는대로 기술

7. 시퀀스와 캐쉬

8. SELECT SS FROM TABLE WHERE AA=AA ....  과 같은 구분의 처리 순서는?

9. 오라클의 커서는 무엇인가?

10. RBO 는 무었인가?

12. 부분범위처리는 무엇이며, 왜 필요한가?

13. 트리거란?
데이터베이스 내에서 트리거가 가지는 조건 테이블에 어떤 이벤트(UPDATE, INSERT 등)가 발생할 때마다, 트리거가 생성될 때 정의된 BEGIN ~ END사이의 문장들을 먼저 처리하여 사용자가 원치않는 테이블의 변경작업을 방지할 수 있는 방법

14. 시노님(SYNONYM) or 시노늄이란?
복잡하고 긴 사용자명과 테이블명을 간단하게 요약해서 사용하는 방법

15. 시퀀스와 캐쉬는?

16. PL/SQL 에 관한 경험이 있는가?

17. 바인딩 쿼리는 무엇인가?

18. 오라클 설치시 문제점 또는 까다로웠던점, 어려웠던 점.

posted by 권오성의 Biomedical Engineering 2008. 2. 21. 16:59

ALL_ROWS

             /*+ ALL_ROWS */

-         최소한의 자원을 사용하여 결과값의 전체를 추출하게 합니다.

 

AND_EQUAL

             /*+ AND_EQUAL (table index index [index] [index] [index] ) */

-         복수의 단일 컬럼을 스캔하여 머지 방식으로 처리하게 합니다.

 

APPEND_HINT

             /*+ APPEND */

-         직렬 모드 데이터베이스에서 Direct INSERT를 실행하게 합니다.

-         Enterprise Edition 이 아닌 데이터베이스의 기본 모드는 직렬 모드입니다. 이러한 직렬 모드 데이터 베이스에서의 INSERT 작업은 Conventional를 기본값으로 하고 병렬 처리 시에는 Direct INSERT를 기본값으로 합니다.

 

CACHE_HINT

             /*+ CACHE (table) +/

-         풀 테이블 스캔의 사용 시, 테이블에서 읽어온 블럭을 버퍼의 LRU 리스트 의 MRU 쪽에 위치시킵니다. 작은 테이블의 사용 시 유용합니다.

 

CHOOSE_HINT

             /*+ CHOOSE +/

-         Rule-Based 와 Cost-Based 방식 간의 선택을 유도합니다. 선택 기준은 사용 객체의 분석 정보 존재 여부이며, 사용되는 객체들중 하나라도 분석 정보가 존재한다면 Cost-Based 방식을 사용하게 됩니다.

 

CLUSTER_HINT

             /*+ CLUSTER (table) +/

-         지정 테이블의 클러스터 스캔을 유도합니다. 클러스터된 객체에만 사용할 수 있습니다.

 

CURSOR_SHARING_EXACT

             /*+ CURSOR_SHARING_EXACT +/

-         바인드 변수 값의 교체를 불가능하게 합니다.

-         기본적으로 CURSOR_SHARING 파라미터를 사용하여, 안전하다고 판단될 시 SQL 내의 바인드 변수 값을 교체할 수 있게 되어 있습니다.

 

DRIVING_SITE

             /*+ DRIVING_SITE (table) +/

-         오라클이 선택한 SITE 대신, 지정한 SITE를 사용하여 쿼리를 실행합니다. Rule-Based 와 Cost-Based, 두 모드 다 사용 가능합니다.

 

DYNAMIC_SAMPLING

             /*+ DYNAMIC_SAMPLING ( [table] n ) +/

-         해당 객체의 Selectivity 와 Cardinality 에 대한 보다 자세한 정보를 자동으로 생성시켜 실행합니다.

-         값은 0 부터 10 까지 지정할 수 있으며, 높을 수록 보다 자세한 정보를 생성하게 됩니다. 테이블에 해당 값을 지정하지 않았을 경우, 기본 값은 CURSOR 레벨의 값이 쓰여집니다.

 

EXPAND_GSET_TO_UNION

             /*+ EXPAND_GSET_TO_UNION +/

-         GROUP BY GROUPING SET 혹은 GROUP BY ROLLUP 등과 같은 구문을 포함하는 쿼리에 사용할 수 있습니다.

-         이 힌트는 기존의 쿼리를 개별적인 그룹 생성 후, UNION ALL 방식으로 실행되게 유도합니다.

 

FACT_HINT

             /*+ FACT (table) +/

-         스타 변형 구문에서 사용되며 해당 테이블이 FACT 테이블로 사용되게 유도합니다.

 

FIRST_ROWS

             /*+ FIRST_ROWS (n) +/

-         전체 결과값의 반환 대신 지정한 숫자만큼 로우의 결과값을 반환하는데 집중하게 유도합니다.

 

FULL_HINT

             /*+ FULL (table) */

-         지정한 테이블에 대해 풀 테이블 스캔을 유도합니다.

 

HASH_HINT

             /*+ HASH (table) */

-         지정한 테이블에 대해 hash 스캔을 수행하도록 유도합니다.

-         클러스터 테이블 만을 대상으로 합니다.

 

HASH_AJ

             /*+ HASH_AJ */

-         EXISTS 구문 뒤에 오는 서브 쿼리에 사용되며 HASH_SJ, MERGE_SJ 혹은 NL_SJ 등을 사용할 수 있습니다.

-         HASH_SJ 은 hash semi-join 이고, MERGE_SJ 은 sort merge semi-join 이며 NL_SJ 은 nested loop semi-join 입니다.

 

INDEX

             /*+ INDEX (table index [index] [index] ... ) */

-         지정한 테이블의 인덱스 스캔을 실행하도록 유도합니다.

-         Domain, B-tree, bitmap, bitmap join 인덱스 등이 사용될 수 있으나, bitmap 인덱스 들의 사용 시, INDEX 힌트보다는 INDEX_COMBINE 힌트 사용이 추천됩니다.

 

INDEX_ASC

             /*+ INDEX-ASC (table [index] [index] ... ) +/

-         해당 테이블의 인덱스를 순차적 방식으로 스캔하게 합니다.

-         해당 쿼리가 인덱스 범위 스캔의 사용 시, 인덱스 값의 순차적 방식으로 읽게 됩니다.

 

INDEX_COMBINE

             /*+ INDEX_COMBINE (table [index] [index] ... ) +/

-         해당 테이블에 Bitmap 인덱스의 존재 시, Bitmap 인덱스를 통한 액세스를 유도합니다.

-         힌트 내에 인덱스의 이름이 쓰여지지 않을 시, 해당 인덱스의 Boolean 값을 사용하여 최적의 Cost를 산출하여 실행하게 됩니다.

 

INDEX_DESC

             /*+ INDEX_DESC (table [index] [index] ... ) +/

-         지정한 인덱스에 대해 인덱스 스캔을 역순으로 실행합니다.

-         해당 쿼리가 인덱스 범위 스캔의 사용 시, 인덱스 컬럼의 값을 사용하여 역순으로 실행합니다.

-         파티션 인덱스에서는 파티션 별 개별적인 실행이 이루어집니다.

 

INDEX_FFS

/*+ INDEX_FFS (table [index] [index] ... ) +/

-         풀 테이블 스캔 대신에 빠른 풀 테이블 스캔의 실행을 유도합니다.

 

LEADING_HINT

             /*+ LEADING (table) +/

-         테이블 간의 조인 시에 지정한 테이블을 먼저 수행하도록 유도합니다.

-         두 개 이상의 LEADING 힌트의 사용 시, 힌트 자체가 사용되어 지지 않습니다.

-         ORDERED 힌트와 더불어 사용시, LEADING 힌트는 사용되지 않습니다.

 

MERGE

             /*+ MERGE (table) +/

-         각 쿼리의 결과값을 머지합니다.

-         해당 쿼리 내에 GROUP BY 절의 사용 이나 SELECT 구문에 DISTINCT 가 사용되었을 시, 머지의 실행이 가능할 경우에만 힌트가 실행됩니다.

-         IN 과 서브 쿼리의 사용 시, 서브 쿼리와 상위 쿼리 간의 상호 관계가 없을 때에만 머지의 실행이 가능합니다.

-         이 힌트는 Cost-based 가 아닙니다. 따라서 액세스하는 실행 쿼리 블럭에 MERGE 힌트가 반드시 명시되어야만 합니다. 그렇지 않을 경우 옵티마이저는 다른 실행 계획을 수립합니다.

 

MERGE_AJ

             HASH_AJ 를 참조하십시요.

 

MERGE_SJ

             HASH_AJ 를 참조하십시요.

 

NL_AJ

             HASH_AJ 를 참조하십시요.

 

NL_SJ

             HASH_AJ 를 참조하십시요.

 

NOAPPEND

             /*+ NOAPPEND +/

-         병럴 모드에서의 INSERT 작업을 Conventional 방식으로 수행합니다.

-         병렬 모드에서는 Direct-path INSERT 가, 직렬 모드에서는 Conventional INSERT가 기본값입니다.

 

NOCACHE

             /*+ NOCACHE (table) +/

-         풀 테이블 스캔의 사용 시, 테이블에서 읽어온 블럭을 버퍼의 LRU 리스트 의 LRU 쪽에 위치시킵니다. 기본 모드입니다.

 

NO_EXPAND

             /*+ NO_EXPAND +/

-         실행 쿼리 내에 OR 나 WHERE 절의 IN 이 사용되었을 시, Cost-Based 옵티마이저가 쿼리 처리를위해 OR 를 사용한 확장을 사용하는 것을 방지합니다.

-         일반적으로 옵티마이저는 위와 같은 경우 OR – 확장의 가격이 확장을 사용하지 않는 것보다 적을 시, 확장 방식으로 수행합니다.

 

NO_FACT

             /*+ NO_FACT (table) +/

-         Star 변형 시, 해당 테이블의 FACT 테이블로서의 사용을 방지합니다.

 

NO_INDEX

             /*+ NO_INDEX (table [index] [index] ... ) +/

-         지정 테이블의 인덱스 사용을 방지합니다.

 

NO_MERGE

             /*+ NO_MERGE (table) +/

-         머지 처리 방식의 사용을 방지합니다.

 

NOPARALLEL

             /*+ NOPARALLEL (table) +/

-         지정한 테이블의 병렬 처리를 방지합니다.

-         테이블의 지정된 PARALLEL 값에 대해서 우선권을 가집니다.

-         중첩 테이블에 대해서는 병렬 처리를 할 수 없습니다.

 

NOPARALLEL_INDEX

             /*+ NOPARALLEL_INDEX (table [index] [index] ... ) +/

-         인덱스 스캔 작업의 병렬 처리를 방지합니다.

-         인덱스에 지정된 PARALLEL 값에 우선권을 가집니다.

 

NO_PUSH_PRED

             /*+ NO_PUSH_PRED (table) +/

-         결과값에 대한 조인 방식 서술의 강제적 수행을 방지합니다.

 

NO_PUSH_SUBQ

             /*+ NO_PUSH_SUBQ +/

-         서브 쿼리의 결과값을 머지하지 않는 실행 계획이 실행 계획 설립 단계에서 제일 마지막으로 참조되는 것을 방지합니다.

-         일반적으로 서브 쿼리의 Cost 가 높거나, 처리 로우의 갯수를 크게 줄여주지 못할 때에는 서브 쿼리를 마지막에 참조하는 것이 성능 향상에 도움이 됩니다.

 

NOREWRITE

             /*+ NOREWRITE +/

-         해당 쿼리 블럭의 쿼리 재생성의 실행을 방지합니다.

-         QUERY_REWRITE_ENALBE 파라미터에 대해 우선권을 가집니다.

-         NOREWRITE 힌트의 사용 시, Function-Based 인덱스의 사용이 금지됩니다.

 

NO_UNNEST

             /*+ NO_UNNEST +/

-         해당 서브 쿼리 블럭의 UNNESTING 설정의 사용을 방지합니다.

 

ORDERED

             /*+ ORDERED +/

-         FROM 절에 나열된 테이블의 순서대로 조인 작업을 실행합니다.

 

ORDERED_PREDICATE

             /*+ ORDERED_PREDICATE +/

-         옵티마이저에 의한 조인 관계의 Cost를 산출하기 위해 미리 정해둔 조인 관계 별 실행 순서의 사용을 방지합니다.

n         인덱스 키를 사용한 조인 관계들은 제외됩니다.

-         이 힌트는 쿼리의 WHERE 절에 사용하십시요.

 

PARALLEL

             /*+ PARALLEL (table [ [, n |, DEFAULT |, ] [, n | DEFAULT ] ] ) +/

-         병렬 처리에 사용될 서버 프로세스의 갯수를 설정합니다.

-         병렬 처리 조건에 위배될 시, 힌트는 사용되지 않습니다.

-         임시 테이블에 대한 PARALLEL_HINT 사용 시, 힌트는 사용되지 않습니다.

 

PARALLEL_INDEX

             /*+ PARALLEL_INDEX (table [ [index] [, index]...]

[ [, n |, DEFAULT |, ] [, n | DEFAULT ] ] ) +/

-         파티션 인덱스의 인덱스 범위 스캔 작업의 병렬 처리에 할당될 서버 프로세스의 갯수를 지정합니다.

 

PQ_DISTRIBUTE

             /*+ PQ_DISTRIBUTE (table [,] outer_distribution, inner_distribution) +/

-         병렬 조인 시, Producer 프로세스와 Consumer 프로세스 간의 데이터 전달 방식을 지정합니다.

 

PUSH_PRED

             /*+ PUSH_PRED (table) +/

-         결과값에 대한 조인 방식 서술의 강제적 수행을 실행합니다.

 

PUSH_SUBQ

             /*+ PUSH_SUBQ +/

-         머지가 불가능한 서브 쿼리들의 우선 실행 계획을 실행 계획 수립시 먼저 참조하도록 합니다.

-         서브 쿼리의 사용 객체가 Remote 테이블이거나, 머지 조인의 사용 시 힌트는 실행되지 않습니다.

 

REWRITE

             /*+ REWRITE [ ( [materialized_view] [materialized_view]...) ] +/

-         실행 계획의 가격에 상관없이 Materialized View 를 사용하여 쿼리 재생성을 하도록 합니다.

-         Materialized View 를 지정할 시, 지정한 Materialized View 의 가격에 상관없이 무조건 쿼리 재생성을 실행합니다.

-         Materialized View 를 지정하지 않을 시, 오라클은 사용 가능한 모든 Materialized View 를 참조하여 그 중 가장 가격이 낮은 Materialized View 를 사용하여 쿼리 재생성을 합니다.

-         Materialized View 를 지정하지 않는 힌트의 사용이 권장됩니다.

 

ROW_ID

             /*+ ROWID (table) +/

-         지정한 테이블의 스캔을 ROWID 방식으로 수행하게 합니다.

 

RULE

             /*+ RULE +/

-         실행 계획을 Rule-Based 방식으로 실행하게 합니다.

-         해당 쿼리 블럭에 다른 힌트 또한 사용되었을 경우, 다른 힌트들은 사용되지 않습니다.

 

STAR

             /*+ STAR +/

-         Star 쿼리 계획이 사용 가능하다면, 실행하게 합니다.

-         Star 쿼리 계획이란 가장 큰 테이블이 마지막 순서로 조인되며, 조인될 시 가장 큰 테이블 내의 Concatenated 인덱스에 대해 Nested Loop 조인 방식으로 실행되는 것을 말합니다.

-         최소한 세개 이상의 테이블이 사용되며, 제일 큰 테이블의 Concatenated 인덱스의 생성에 최소한 세 개 이상의 컬럼이 사용되어야 하며, 액세스나 조인 방식에 충돌이 없어야만 이 힌트는 사용됩니다.

 

STAR_TRANSFORMATION

             /*+ STAR_TRANSFORMATION +/

-         옵티마이저가 Star 변형 작업에 최적화된 실행 계획을 수립, 실행하도록 합니다.

-         힌트를 사용하지 않을 시, 옵티마이저는 일반적인 작업에 최적화된 실행 계획을 수행합니다.

-         힌트를 사용하였어도 변형 작업에 맞추어진 실행 계획을 실행한다는 보장은 없습니다. 다른 일반적인 힌트의 사용과 마찬가지로 비교 분석 후, 오라클의 판단에 따라 다른 실행 계획이 실행될 수 있습니다.

 

UNNEST

             /*+ UNNEST +/

-         서브 쿼리 블럭에 대해 인증성 만을 검사하게 합니다.

-         인증이 되었다면 그 이상의 검증 작업없이 서브쿼리에 대한 UNNESTING 의 설정을 가능하게 합니다.

 

USE_CONCAT

             /*+ USE_CONCAT +/

-         WHERE 절의 OR 조인 을 UNION ALL 로 변경하여 수행하게 합니다.

-         일반적으로 이러한 변경은 결과값의 병합 수행의 가격이 수행하지 않을 시의 가격 보다 낮을 때에만 실행됩니다.

 

USE_HASH

             /*+ USE_HASH (table [table]...) +/

-         Hash 조인 방식으로 각 테이블을 조인하게 합니다.

 

USE_MERGE

             /*+ USE_MERGE (table [table]...) +/

-         Sort-Merge 방식으로 각 테이블을 조인하게 합니다.

 

USE_NL

             /*+ USE_NL (table [table]...) +/

- Nested-Loop 방식으로 각 테이블을 조인하게 합니다

posted by 권오성의 Biomedical Engineering 2008. 2. 6. 11:19


사용자 삽입 이미지

2006년부터 다양한 HD인코딩장비 및 IP Base의 HD(Headend)송출장비에 수요가 확대됨에 따라 IPTV는 기존 인터넷 방송을 넘어 새롭게 창출된 사업분야로 새로운 멀티미디어 시장을 형성하게 됐다. (주)스트림비젼(대표 배승길ㆍwww.streamvision.co.kr)은 국내 최초로 IPTV 사내방송시스템 장비 및 구축사업, IPTV Headend 장비 등을 연구ㆍ개발해 1인 1방송 시대에 알맞은 제품을 상품화하며 국내 IPTV와 인터넷방송 시장을 이끌어 오고 있다.

스트림비젼은 2005년 어려운 자금 상황에서 회사를 설립했다. 국내 IPTV 단말(셋톱박스) 회사들이 HD장비를 본사에서 OEM(주문자생산방식)또는 해외에서 구매해 서비스를 구축하는 반면 스트림비젼은 부족한 자금을 200페이지 분량의 사업계획서를 작성하며 국가에서 지원하는 다양한 R&D사업을 통해 확보할 수 있었다. 이에 IPTV HD신제품을 개발ㆍ생산해 판매를 진행하고 3개월 주기로 고객의 제품평가 항목에 따라 문제점을 보완ㆍ수정해 기존 고객에게 새로운 제품을 무상으로 지원함으로써 경쟁사와의 차별화를 뒀다.

스트림비전은 현재 IPTV HD영상압축서비스장비, 세계적인 IPTV 비표준연동포털시스템 연구ㆍ개발, IPTV 방송편성서비스장비 사업을 추진하고 있다. 배승길 대표는 “앞으로 2~3년 안에 사업영역 확장을 목표로 IPTV HD장비에 대한 연구ㆍ개발에 더 많은 투자를 진행할 계획이다”며 “이 IPTV HD장비를 기반으로 3~5년에는 세계 IPTV서비스 컨텐츠를 연동하기 위한 최초의 IPTV포털 사업을 추진할 계획이다”고 한다.

posted by 권오성의 Biomedical Engineering 2008. 1. 14. 18:53

===============================================================================
※ 수치함수
===============================================================================

▣ 소수점 아래 n자리수가 되게 column, expression 또는 value를 반올림
ROUND(column/value, n)
 ex) ROUND(45.923, 2) ☞ 45.923을 소수점 두자리까지 반올림하여 45.92를 리턴

▣ 소수점 아래 n자리수가 되게 column이나 value를 절삭. n이 음수면 소수점 왼쪽수치 0으로 절삭
TRUNC(column/value, n)
ex) TRUNC(45.923)  ☞ 45.923 소수점 아래를 절삭하여 45를 리턴

▣ 해당 컬림이 NULL이면 express-2의 값을, NULL이 아니면 express-1의 값을 리턴
NVL2(Column, Express1, Express2)
ex) select sal, nvl2(comm, comm, 0)
        from emp
     where deptno = 30);

▣ 정의된 컬럼의 값이 NULL인 경우 지정한 값으로 대체하는 기능
NVL(Column, Express1)
ex) select sal, nvl(comm, 0)
        from emp
     where deptno = 30);


===============================================================================
※ 문자함수
===============================================================================


◈ column이나 문자상수 value로부터 위치번호 pos에서 시작하여 n문자 길이의 스트링을 리턴,
만약 n이 생략되었다면, 스트링은 pos로부터 column이나 문자상수 value의 끝까지를 가져온다.
SUBSTR(column/value, pos, n)
ex) SUBSTR(ename, 2, 3) ☞ ENAME의 2번째 위치에서부터 3자리를 리턴한다.

◈ 숫자 75를 문자값으로 변환합니다.
SQL> select chr(75) from dual;

CHR(75)
--------
K

◈ 2개의 문자값을 결합합니다.
SQL> select concat(concat(ename, ' is a '), job) from emp;

CONCAT(CONCAT(ENAME,'ISA'),JOB)
--------------------------------------------------
SMITH is a CLERK
ALLEN is a SALESMAN
...................................................

◈ 정의된 문장 단어의 첫 번째 문자를 대문자로 변환
SQL> select initcap('the soap') from dual;

INITCAP('THESOAP
----------------
The Soap

◈ 정의된 문장을 모두 소문자로 변환합니다.
SQL> select lower('MR. samuel hillhouse') from dual;

LOWER('MR.SAMUELHILLHOUSE')
----------------------------------------
mr. samuel hillhouse

◈ 정의된 문장을 모두 대문자로 변환합니다.
SQL> select upper('mr. SAMUEL hillhouse') from dual;

UPPER('MR.SAMUELHILLHOUSE')
----------------------------------------
MR. SAMUEL HILLHOUSE


===============================================================================
※ 기타함수
===============================================================================


◎  PL/SQL에서 사용되는 IF-THEN-ELSE 문장과 유사한 방법으로 해독
DECODE함수는 각각의 search 값과 비교한 다음에 표현식(expression)을 해독
만약 표현식이 Search와 같으면, result를 리턴한다.
DECODE(expression, search, result, default)
ex)select ename
             ,deptno
             ,decode (deptno, 10, 'AC'
                                     ,20, 'RE'
                                     ,30, 'SA'
                                     ,40, 'OP',
                                           'NONE')
       from emp;

◎ 해당날짜가 속한 달의 마지막 날짜를 반환합니다.
LAST_DAY(sysdate)....
ex)select sysdate today
            , last_day(sysdate)
        from dual;
 

posted by 권오성의 Biomedical Engineering 2007. 11. 30. 17:14

자기소개

--> 통상 2~3분 가량 자기소개를 Free Style 로 해보라고 많이 한다. 이럴경우 2~3분을 그저그런 내용으로 소모할것이 아니라

도입부 30%는 일반적인 사항(출생년도, 고향, 전공을 선택한 동기 등20

중간 부문 50%는 업무관련 자기 업적 자랑(개발자는 뭐를 어떻게 개발했다. 영업은 무엇을 누구에게 어떻게 영업했다) : 2

마무리 20%는 인생의 좌우명이나 가치관 직업관등으로 클로징하면 효율적이고 인상적인 자기 소개가 될 수 있다. :40

==> 자기소개서를 앵무새처럼 줄줄 말하면 외워서 온듯한 느낌이 들기 때문에 한문구 한문구 말할때마다 0.5초 정도의 간격을 두면서 지금 생각하면서 말하는듯한 느낌이 들수있도록 하십시요.

너무 준비를 많이 해서 후보자중에 앵무새처럼 일사천리로 말해 버려 좋지 않은 결과가 나오는 경우가 종종 있습니다.

면접의 정답은 없습니다.

다만 면접관의 맘을 사로 잡을수 있는 임기응변과 진실된 자세만이 좋은 결과를 가져올 수 있습니다.

 

  이직사유(전직사유)

 --> 솔직하게 말하되 부연설명을 명확하게 해야함.

솔직하되 합리적인 솔직함이 되도록 이직/전직 사유을 나름대로 가다듬어야 한다. 전직장의 비판은 절대로 하지 말아야함. 

면접관들이 주목하고 있는 것은 전직장에서 어떤 경력을 가지고 있으며 자신의 미래와 비전과 역량을 가지고 있으며 전 직장에서 어떤 평가를 받았는지를 가장 궁금해 한다.

 

  언제나 긍정적인 답변
 -->
인터뷰는 지원자의 약점이나 성격적 결함을 찾고자 하는게 아니다

지원자의 긍정적인 측면을 발견해 합격을 시킬 당위성을 발견하고자 하는 긍정적적인 측면이 강하다

그렇기에 무슨 대답을 하던 언제나 마무리는 긍정적으로 끝을 맺어야 한다.


1) 영어를 잘하십니까

     --- 모범답안 : 토익 450점으로 만족할만한 수준이 아닙니다. 하지만 매일 어학학원을 다니며 꾸준히 1시간씩 공부하고 있습니다.


2) ** 개발(보유지식)험이 있습니까?

     --- 모범답안 : 제가 직접 개발 경험은 없지만 이와 유사한 것을 많이 개발해 보았기에 저에게 시간만 조금 주신다면 누구보다 빨리 싶게 업무에 적응 할 수 있을거라고 생각합니다.


 

좋은 인상을 주어야 합니다.

:. 자신감을 가집시다.

일단 서류심사를 통과했다는 것은 기본적 요구사항을 충족한 것이고 회사에서도 관심을 표명한 것입니다.
따라서 본인의 경력사항에 대해 자신감을 갖고 회사가 요구하는 직무에 충분히 적합한 능력을 보유하고 있으며 열심히 일하겠다는 긍정적인 표현을 하는 자세가 필요합니다.
여유있는 자세와 밝은 표정은 필수입니다.

 

:. 믿음을 주어야 합니다.

         신중하고 믿음을 줄 수 있는 답변태도를 보여야 합니다.
임기응변식이 아닌 실제의 경험에서 비롯된 신뢰감을 줄 수 있는 답변이 좋습니다.
너무 많이 웃어도 가벼워 보일 수 있으며 경직된 표정도 곤란합니다.
인터뷰 동안 바른 자세를 유지하는 것이 좋습니다.

 

:. 필요한 답변을 간결히 합니다.

      짧은 질문에 장황한 답변은 절대 금물입니다. 면접관의 질문은 끝까지 경청하고 신중하게 생각하는 듯 2-3초 간의 간격을 두고 답변을 시작하되 질문의 요지에 맞게 간결한 어법으로 답변하는 것이 좋습니다.
구체적인 예시로 답변을 더욱 충실히 할 때도 객관적인 시각으로 간결히 합니다.
특히 전직장의 이직사유 같은 질문이나 다른 부정적인 질문에 대한 답변은 간결하고 분명하게 하는 것이 좋습니다.

대화의 흐름을 유지해야 합니다.

      시종일관 자연스런 대화분위기를 유지하고 특정 질문에 대한 답을 하면서 또 다른 긍정적인 내용을 설명할 수 있는 질문을 유도할 수 있다면 대단한 인터뷰 스킬을 보유했다고 할 수 있습니다.
공격적인 질문에도 우호적인 답변을 해야 합니다.
어느 회사는 의도적으로 공격적인 질문을 하여 그 반응을 보려고 합니다. 이런 때는 당황하지 말고 질문의 의도를 정확히 파악하여 객관적이고 여유 있는 자세로 대답을 하고 오히려 반대되는 가벼운 질문으로 답변을 대신 할 수도 있습니다.

 

급여나 복리후생제도에 관한 질문은 미루어 두십시오.
자세한 급여수준이나 복리후생제도에 관하여는 다소 여유 있는 모습을 보이는 것이 좋습니다. 
회사 내의 규정이나 기존 직원들과의 형평 등 여러 요인들이 감안되므로 회사의 결정에 맡긴다거나 헤드헌터가 중간에서 조정할 수 있도록 미루어 두는 것이 좋습니다.
특히 복리후생제도는 새로운 입사자 뿐만이 아니라 모든 직원에게 공통으로 적용되는 것이니 만큼 필요 이상의 질문으로 업무기여 보다는 보상에 더 신경을 쓰는 듯한 오해를 줄 필요가 없습니다.
 

    

본인 이력서의 내용을 숙지해야 합니다.

:. 연도별 경력사항을 충분히 숙지해야 합니다.

첫 인터뷰는 우선 이력서에 기재된 내용을 중심으로 경력을 확인하기가 쉽습니다.
연도별로 또는 분야별로 책임을 맡았던 업무에 대하여 충분히 숙지하여야 합니다. 혹시 이력서의 내용과 다른 설명이 된다면 이력서 상의 기재사항이나 인터뷰 내용에 믿음을 얻기 어렵습니다.

 

:. 구체적인 업무 성과를 정리해 둡시다.

이력서에 기재된 내용 이상으로 자세한 업무를 질문 받습니다.
본인의 책임 하에 진행되었던 프로젝트, 특별한 성과를 내었던 업무 중심으로 자신의 능력을 충분히 나타낼 수 있는 설명을 준비합시다. 본인의 성과에 대하여 이야기할 때는 겸손하게 하여야 합니다.

 

:. 오픈되어 있는 직무의 성격 및 채용조건을 숙지해야 합니다.
응시 회사에서 찾고 있는 직무에 대한 이해를 충분히 하여 어떤 조건의 사람을 원하는가를 파악하는 것이 중요합니다.
자신의 경험에서 그 조건과 부합되는 내용을 충분히 인지시키는 기술이 필요합니다. 헤드헌터를 적극 활용하는 것도 한 방안입니다.


--> 면접 시 태도 및 자세 항상 긍정적으로 그리고 열정적인 모습으로 취해주시면 좋은 결과 나올실겁니다.

* 현대정보기술 면접내용 *
1. 다른 기업에도 지원했는가? 다른 기업에도 합격한다면 어디를 다니겠는가?
2. 자신이 왜 이 회사에 직원이 되어야 한다고 생각하는가?
3. 이직 사유는?
4. 개발과 운영중 어느것이 더 어려운가?
5. 웹 경력은 얼마나 되는가?
6. 주로 어느업무를 개발또는 운영했는가?
7. 의료분야 개발이나 운영에서 가장 어려운 업무가 무엇인가?
- 수납부분이라고 생각합니다.
8. 수납업무를 설명하라.
9. 처방되어 가져간 약을 환불하는 업무 루틴은?
10. 파우더 처리는 어떻게 했나?
11. 이전직장에서의 개발방법론에 대해 설명하라.
12. CBD에 대해 설명하라
13. 자신이 지향하는 이상적인 솔루션은?
14. 사용자에 대해서 정의하라.
민법상으로는 노무를 제공할 것을 약정한 상대방(피고용자)에게 보수를 지급할 것을 약정한 자(655 ·756조 참조), 노동법상으로는 사업주 또는 사업의 경영담당자 기타 근로자에 관한 사항에 관하여 사업주를 위하여 행동하는 자(근로기준법 15조, 노동조합법 5조).
- 사용자란 끊임없이 요구하는 사람이다.
15. 기타 기술적인 질문들과 신변에 관련된 한두개의 질문