기본 개념.. 따로 정리할 필요는 없을듯..

ㅇ. 구조적인 예외처리
: Try ~ Catch ~ Finally ~ End Try
: 오류 필터링
: 안정적이고 쉽게 오류에 대한 대응
형식)
Try
Try Statements
Catch [exception[As Type]][When expression]
catchstatements
[exit try]
Catch [exception[As Type]][When expression]
catchstatements
[exit try]
....
[Finally
finallystatements
End Try


: Exception 클래스
- 표준 코드와 분리하여 예외를 처리
- 지원 속성 (StackTrace, InnerException, Message,
HelpLink, Hresult, Source, TargetSite)




ㅇ. 비구조적인 오류 처리
: On Error ~
: 프로시져 내에서 오류처리
: 프로그램 속도 저하
: 디버그나 유지 보수가 어렵다.

형식)
On Error GoTo Line (or Label)

On Error Resume Next

On Error Goto 0 (에러처리 안함)

On Error Goto -1 (에러처리 루틴이 활성화 되어 있으면 Off 시킴)


: Err 개체
- 에러 발생시 에러 정보를 가진다.
- Raise 메서드 -> 일부러 Run-time 에러 발생
- Clear -> 강제로 Err 개체를 Reset


ㅇ. 오류의 종류
: 문법 오류 (Syntax Error)
: 실시간 오류 (Run-time Error)
: 로직 오류 (Logic Error)


Sample)

Try
Devide = Cint(First/Second)
carch when Second = 0
msgbox("Devide by Zero")
Finally

End Tty
ㅇ. 다형성이란
: 많은 클래스들이 동일한 속성과 메서드를 가지고 있을 경우 호출한 쪽에서는 현재 사용중인 개체가 어느 클래스를 기반으로 하고 있는지 알필요가 없다.

ㅇ. 다형성을 이용한 클래스 작성 접근방법

-. 인터페이스(Interface) 기반
: 기존의 VB6.0에서 사용
: 클래스 안에서 인터페이스 멤버를 구현한다.
- Interface키워드를 사용하여 인터페이스 정의
- Implements 키워드를 사용
: Overloads 키워드 사용 가능

형식)
Interface tmpInterface
Function Method1(ByRef s As String) As Boolean
Overloads Sub Method2()
Overloads Sub Method2(ByVal i As Integer)
End Interface

Ex)

Interface iPerson
Property LastName() As String
Sub Display()
End Interface

Class Emp
Implements iPerson
Private strName As String
Private strCompant As String

Public Sub Display() Implements iPerson.Display
MsgBox(LastName & " " & strCompant, , "Employee")

End Sub

Public Property LastName() As String Implements iPerson.LastName
Get
Return strName
End Get
Set(ByVal Value As String)

End Set
End Property

Public Property Company() As String
Get

End Get
Set(ByVal Value As String)

End Set
End Property
End Class

Dim perPerson As Iperson, empEmp As New Emp
empEmp.Company = "Company Name"
perPerson = empEmp
perPerson.LastName = "Yoo"
perPerson.Display()
empEmp.Display()


-. 상속(Inheritance)을 기반
: VB.NET에 새롭게 추가됨
: 베이스 클래스에서 메서드를 작성
: 파생된 클래스에서 오버라이딩

Ex)
상속을 이용한 클래서 두어개 만들고..
서브루틴 함수 호출해만서 클래스변수를 넘겨 주면..
해당 루틴안에서 어떤 클래스건 상관없이 공통의 메소드를 실행시켜 준다는 건데..
예제가 좀 기네..



사실.. 별거 아닌듯..

인터페이스를 기반으로 한거나.. 상속을 기반으로 한거나...

설명이 간단해서 그런가..

동영상 강좌로 공부하고 있는데..


별거 없지 싶은.. 쩝..

말만 너무 어려워서.. 쯧... -_-++
VB개발만 하다보니.. 개념이 헷갈려서.. 쯧..

ㅇ. 이미 존재하는 클래서(Base Class)로 부터 새로은 클래서(Derived Class)를 만들기 위해 사용.

ㅇ. 파생된 클래서에서는 속성, 메서드, 이벤트, 필드, 이벤트 핸들러등을 그대로 혹은 새롭게 정의해서 사용 가능

ㅇ. 한 프로젝트 내에서 다른 클래서로부터 혹은 프로젝트에서 찹조하고 있는 개체로부터 상속 가능

ㅇ. Array
-. VB6.0
: 배열첨자의 시작은 기본적으로 0
: Option Base문을 이용하여 1부터 시작하도록 지정 가능
: tmpArr(1 to 10) 가능
: 첨자가 0부터 시작하는 경우 Upper Bound +1이다.
Dim tmpArr(20) as Single : 21개의 요소를 가진다.


-. VB.NET
: 배열 첨자는 0부터 시작
: Option Base 문은 지원하지 않는다.
: 배열 참저는 0 ~ 배열크그 -1 이다.
Dim tmpArr(20) as Single : 20개의 요소를 가진다.


.NET FrameWork




Common Langauge Runtime




Base Class Liabrary

ㅇ. 상속 (Ingeritance)
-. 클래스 정의 이후 해당 클래스를 상속받아 새로운 클래스를 생성
-. 부모 클래스(base class)의 메서드를 파생된 클래스(child class)에서 새롭게 구성할수 있다.
-. 기본적으로 모든 클래스는 상속가능
-. Form등의 User Interface를 갖는 상속은 Visual Inheritance라고 한다.

"인터넷 한겨레에서 무료로 배포 하니 그 글씨체를 니 컴터에 설치해놔라..."

한겨레 매니아이신 아버지가 아침에 식사시간에 하신말씀..


"네.. 마마... -_-;;;"


한겨레 사이트 뒤지다가 겨우 발견..

왜 요샌 이런거 하나 찾기가 이리 힘들지.. 쯧..



한겨레결체 다운로드
또 오라클.. -_-;;

이번엔 윈도우 오라클이..


고객이 연락와서 데이터가 안올라 온다고 해서 확인해 봤더니..
상기와 같은 오류가...




사실 난 이대로 안하고 걍.. TS의 MAX 사이즈만 수정해주고 해결했는데..

알아둬야 할것 같아서.. 쩝..
아침에 출근해서 담배한대 피고 있는데..
고객이 전화와서 데이터가 한개도 안올라 온다고.. 쩝..
확인해 보니 이런 에러가..

어딘가 시스템이 트랜젝션이 제대로 안먹고 있나본데.. 쯧..

시스템을 첨부터 일일이 뜯어볼수도 없고.. 젠장.. 쯧...



다음 내용은 절대적인 것은 아님을 밝혀둔다.

예전에 우리 회사 대리가 밑에 개발자들 참고하라고 살짝 간단히 정리해 준건데..
살짝 코멘트를 달아 보았다.

참고하면 괜찮을듯..



다 아시는 내용이지만 Procedure 사용에서 락 발생 다수 시 조치 사항입니다

1. TEMP 테이블 사용을 제한 - TEMP테이블의 경우 부하가 많은경우 락 발생이 급격하게 늘어나기 때문에 사용은 최소화 한다.
->
사실 그닥 좋은 방법이 아님은 누구나 다 알것이다.
다량의 DB작업을 하면서 임시로 쓰는것은 뭐 괜찮지만.
프로시져나 프로그램 내에서 Temp 테이블을 사용하는것은 결코 좋은 방법이 아니다.

2. 다이나믹 쿼리의 제한 - 차라리 조회 조건에서 select 을 전부 써버리는 것이 더 났습니다.
->
이 부분은 노코멘트..
사실 뭐가 성능향상에 좋은지 잘 모르겠다.
실상 테이블명이나 필드명등의 객체명이 유동적일때 다이나믹 쿼리를 자주 사용하는데..
걍 select를 다 해줘버려라.. 훔....
말했던대로 노코멘트.


3. 함수를 사용할 경우 다수의 값을 받아오는 경우에는 함수를 사용하기보다도 JOIN사용이 더 낫습니다.

함수를 사용할 경우 2건 이상인 경우에는 1건 1건씩 리턴값을 주기 때문에 리턴값이 늘어날 경우 점점 더 느려지게 됩니다.
->
예를 들어서 사번을 가지고 이름을 가져오고 메일주소를 가져올때..
보통 사번과 이름, 이메일 주소는 하나의 테이블에 있을것이다.
사원테이블 조인해서 이메일 주소와 이름을 가져오면 되는데.
함수를 사용하면 사원테이블에 접속해서 이름을 가져오고, 또 사원테이블에 접속해서 이메일 주소를 가져와야 한다. 두번 접속하게 된다.
당근.. 성능에는 치명적이다.



4. 잘 쓰지 않고 건수가 적더라도 테이블에는 반드시 인덱스를 잡는다. 실 예로 8건 밖에 안되는 코드성 테이블에 인덱스 잡는 것으로 전체 시스템 성능이 5-6배가 된 경우도 있습니다.
->
뭐 다들 알테니깐..

하지만 트랜젝션 처리가 빈번한 테이블에 인텍스는 치명적이라는 것도 알테고..

뭐 적당히 테이블 분위기 봐서 블루스를 추던 탱고를 추던 살사를 추던 해야 겠지..

+ Recent posts