3개월 휴면 계정

2018.10.12 23:55 from 분류없음

프로젝트 때문에, 많은 부분을 놓고 있었는데,

그중 하나가 블로그.

잠깐 참고할 자료가 필요해서 예전 기록을 뒤지다가 로그인하려하니,

3개월이라는 시간이 흘러 휴면계정이 되었다.


진짜 박터지고 머리 아프고, 온몸이 아픈 상황인지라

무엇하나 건사못하는 상황이라 이제와 블로그질을 해볼까 하는 생각조차 들지는 않지만,

잠깐 내가 어디까지 놓치고 있나라는 생각을 아주 잠깐이나마 하게 해줬다.


이제... 승부의 날은 다음 주.

다음 주만 아니, 다다음 주까지 어떻게든 잘 끝나야 할텐데...

Posted by 하인도 트랙백 0 : 댓글 0

댓글을 달아 주세요

내가 만드는 프로젝트들은 상속에 상속을 자주 하곤 한다.

리펙토링을 하다가 보면, 왜 이렇게 짰지 할 정도로 상속하는 경우가 있다.

되돌려서 생각해보면 상속하게 되는 조건은 다음과 같다.


1. 반복적으로 작성된 코드의 Generaiize - 일반화 구성

  프로그램을 짤 때 제일 중요하게 여기는 부분은 같은 코드 또 안짜기다.

  똑같이 동작하는 코드들이 산재되어 있을 때를 바라보면, 각 클래스들은 무언가 공통적인 부분이 존재한다.

  그런 경우 해당 클래스들의 역할과 내용을 보고 비슷한 애들끼리 다시 묶는다.

  묶어주는 상위 클래스에서 공통적인 코드들을 제공한다.

  물론 static 클래스와 같이 Util 을 제공하는 방법도 있지만,

  나름 멤버 변수등을 통해서 데이터를 유지하면서 공통적인 코드를 실행하는 방법은

  역시 일반화 구성을 통해 상위 클래스로 묶는 방법이다.


2. Polimophism - 다형성 구성

   프로그램을 짜다가 보면, 미묘하게 if ~ else 혹은 switch ~ case 문을 이용하여

   내부 구조를 짜는 경우가 있다. 그런데 가만히 보면 한정적인 부분에 사용되는게 아니라,

   클래스 전반적으로 이 같이 짜는 경우가 있다.

   A 라는 클래스를 만들었는데, Start와 Stop이라는 메소드가 있다.

   그런데 내부 설정에 Type이라는 것을 만들어 Type 별로 Start와 Stop의 동작이 구분되는 경우가 있다.

   이를 구현할 때, Start 안에 switch case로 Stop안에 switch case로 구현하여 제공한다.

   사람마다 관점이 다르긴 한데, 하나의 파일에 하나의 소스 안에 모든 내용이 들어 있어

   관리하기 편하다고 하긴 하는데, 이러면 코드가 엄청 길어지는 모습을 보게 된다.

   필자는 이 경우 차라리 switch case 문으로 갈릴 바에는, 각 switch case에 대응되는 클래스들을 만들고

   그 클래스를 대표하는 상위 클래스로 만든 뒤, abstract 혹은 virtual을 통해 나누어 구현한다.

   switch 기준이 되는 Type이 1, 2, 3, 4 가 있다면, 차라리 c1, c2, c3, c4 라는 클래스를 만들고,

   cbase 라는 클래스를 상속하게 한다. 이렇게 하면, 외부에서는 cbase라는 클래스만 가지고 start, stop을 하면,

   c1으로 new해서 만들면, c1에 대한 start, stop이 불리고, c2를 new해서 만들면 c2에 대한 start, stop만 불리게 된다.


상속이라는게 디버깅하다가 보면 매우 까다롭기도 하고, 왠지 프로그램 전체에 대한 이해가 떨어지면 매우

복잡해 보인다는 문제가 있다. 하지만, 한번 잘 정리가 되면 이 보다 강력한 무기가 있을까?

코드들이 알아서 실행되고, 나뉘고 분리되고, 잘만 짜면 재활용도 가능하게 된다.


아직은 더 배우고 실험해볼 구석도 많긴 하지만 아직은 재미 넘치는 분야인듯 싶다.


Posted by 하인도 트랙백 0 : 댓글 0

댓글을 달아 주세요

MS SQL Connection Timeout

2018.05.18 15:41 from 분류없음

MS SQL에서 연결 Timeout을 설정할 수 있다.

설정 방법은 SQL ConnectionString을 수정하면 된다.


Data Source=DBServer;Initial Catalog=DBName;User ID=userid;Password=Password;Connect Timeout=30


대부분의 경우 위의 Connect Timeout의 값이 설정되지 않으면 기본값으로 15(초)로 설정된다.

그런데, 최소 값은 반드시 4을 초과해야 한다.

만일 1, 2, 3, 4 중의 숫자로 입력하는 경우에는 약 28초 이상을 Timeout으로 갖게 된다.


Connection이 되는지 여부를 판단 하기 위해서 Connection을 수행하는데, 이 Timeout을 3이하로 하니까 원하는 결과를 제대로 얻지를 못했다. 그래서 확인해보니 5 보다 작은 숫자를 넣으면 최소값으로 인정받지 못하고 무시되는 형태로 보인다. ( Connection Pool의 상황에 따라 1~2초 차이는 있다. 간혹 3초에서 되기도 하고 4초에서 되기도 한다.)


그러므로 최소값으로 설정하고 싶으면 5 이상의 값을 넣어야 된다.


Data Source=DBServer;Initial Catalog=DBName;User ID=userid;Password=Password;Connect Timeout=5


Posted by 하인도 트랙백 0 : 댓글 0

댓글을 달아 주세요


티스토리 툴바