• 카테고리
    • 전체 글

    • 카테고리1
    • 카테고리2
    • 카테고리3
    • 카테고리4
  • 태그
  • 방명록

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

  • 2020.09.29 2020년 후반기 ..
  • 2018.10.12 3개월 휴면 계정
  • 2018.06.09 왜 클래스 상속을 하는 걸까?
  • 2018.05.18 MS SQL Connection Timeout 1
  • 2018.04.26 SVN Hook 관련
  • 2018.04.18 악순환의 프로젝트 1
  • 2018.04.13 SVN Sync
  • 2018.04.12 리눅스 백그라운드 실행

2020년 후반기 ..

카테고리 없음 2020. 9. 29. 10:17

벌써, 2020년도 9월 말. 몇일 있으면 추석을 맞이한다.

다사다난했던 2017년, 18년, 19년을 모두 찍고, 현재 2020년 그것도 벌써 끝자락까지 왔다.

사실 2018년의 경우에는 진짜 사람 죽겠다 싶을정도로 일했었다. 내 인생을 돌이켜 보면, 그 처럼 일한적이 몇번 있었지만, 이 나이먹고 또 그 지랄맞는짓을 저지를 줄은 몰랐다. 그 덕에 당뇨까지.

여튼 간신히 산을 넘고 나름 인정 받을 것은 받으면서 여기까지 도착한 것은 맞는 것 같다.

그리고 2020년에는 좀 여유를 부리면서 뒷방 늙은이 짓거리 해보려고 했는데, 전세계의 코로나 바이러스 사태로 그 모든 계획은 물건너갔고, 감기 따위로 치부하던게 어느새 전세계 치명적 전염병으로 극상하시어 올해 반을 완전 초토화 했고, 지금은 코로나와 함께 끼고 살고 있다. 최소한 내가 일하는 도메인은 이 코로나 덕에 완전 부서진 상태이고.

그렇게해서 오늘이 되었고, 추석을 앞서다 보니,

그냥, 오전만 대충 근무하고 정리하고 나올듯.

오늘까지 문건하나만 작성하고 대충 정리하고 집에 가서 작업을 이어봐야 겠다.

728x90
저작자표시 (새창열림)
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

3개월 휴면 계정

카테고리 없음 2018. 10. 12. 23:55

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

그중 하나가 블로그.

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

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


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

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

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


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

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

728x90
저작자표시 (새창열림)
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

왜 클래스 상속을 하는 걸까?

카테고리 없음 2018. 6. 9. 22:28

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

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

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


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만 불리게 된다.


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

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

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


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


728x90
저작자표시 (새창열림)
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

MS SQL Connection Timeout

카테고리 없음 2018. 5. 18. 15:41

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

 

728x90
저작자표시 (새창열림)
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

SVN Hook 관련

기술자료/개발도구 2018. 4. 26. 12:52

Windows 기반에 SVN 서버가 동작할 때, Hook 설정이다.

특히 SVN에서 Commit Action에 Jenkins를 연결할 때 사용하는 방법이다.


1. hook 폴더로 이동.

2. post-commit.bat 파일 작성

3. post-commit.bat 파일 내에 아래와 같이 작성

powershell -Command (New-Object System.Net.WebClient).DownloadString(\"http:///job//build?delay=0sec\");


4. 저장 후 Commit.


만일 인증 토큰을 이용하는 경우에는 URL 부분을 좀 손을 봐야 한다.

powershell -Command (New-Object System.Net.WebClient).DownloadString(\"http://:@/job//build?token=&delay=0sec\");


Linux인 경우에는 CUrl 이라는 명령으로 처리한다.

728x90
저작자표시 (새창열림)
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

악순환의 프로젝트

잡글/작업로그 2018. 4. 18. 01:21

대략적으로 만들어야 하는 제품을 기준으로 각 구성요소들을 단순 무식하게 계산하여 약 400 M/M 사이즈 프로젝트가 있다고 하자.

1인당 1달 유지비를 1천만원(유지비에는 월급, 행정 처리, 프로젝트 진행 잡비 등등)으로 잡는다고 했을 때, 이 프로젝트는 최소한 40억은 있어야 한다. 그 외에는 별개로 이익 5% 까지 계산하면, 42억 정도 잡힌다.

24개월 기준으로 보면 최소 16명이 있어야 되며, 16명이 24개월 정도 업무를 수행해야 한다. 그런데, 이 M/M에는 함정이 있다. 바로 인력의 개개별의 능력이나 속도 그 외 업무에 대한 이해도 따위는 전혀 없다.

다행히 1~2명은 사업에 대한 이해나, 관련 기술의 이해가 있다고 치다.

문제는 주변인이다. 많게 쳐서 4명이 잘 안다고 해도, 16 명 중 4명 빼면 12명이 있는데, 이 사람들은 이 사업에 대한 이해에서 부터 기술이 전무하다고 하면 아주 진행이 웃기게 된다.


자.. 이것이 한국형 계산법이다.

그런데 한국에서는 저 40억이라고 하면 무척 많은 금액이라고 한다. 그러니 자연스럽게 400 M/M이 걸리는 작업을 마구 후려쳐서 200 M/M으로 계산한다. 즉 40억을 20억으로 줄인다. 상도덕 적으로 40억을 20억으로 줄였으니 전체적인 업무를 줄여야 하는데, 또 그렇지가 않다. 즉 400 M/M짜리를 금액만 200M/M 으로 줄이게 된다.

이와 같은 형태가 되면 어떻게 될까? 그나마 16명으로 어떻게든 유지해보려는 프로젝트는 8명이 해야 되고, 일은 2배가 된다. 인력이 마구 투입된다고 자연스럽게 흘러가지도 않겠지만, 그렇다고 무턱대고 줄이면, 그 나머지 업무를 결국 개개인에게 쏠리게 된다.

이게 야근의 원리다.

결국 전체적인 프로젝트의 퀄리티는 저하될 수 밖에 없고, 개발자는 자연스럽게 허덕이고 야근하고 개발을 하게 된다.


그런데 저 사이즈의 프로젝트가 되게 되면 자연스럽게 개발과는 상관 없는 사업관리 조직이 생긴다. 줄어든 금액에서 또 쪼개 쪼개서 사업관리를 하게 된다. 금액의 절약은 다시 개발자에게 얹어지게 되고, 개발자는 더 많은 일을 할 수 밖에 없는 구조가 계속 진행되게 된다.


이렇게 만들어 놓고 많은 금액을 투입했으니, 넉넉한 기간을 주었으니 잘 만들어 달라고 한다.


?





728x90
저작자표시 (새창열림)
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

SVN Sync

기술자료/개발도구 2018. 4. 13. 10:20

SVN 기능 중 Svnsync 라는 기능이 있어, 원격에서 서로 다른 레파지토리를 동기화 시킬 수 있다.
물론 양 측의 리비전을 맞추기 위해서는 저장 대상이 되는 위치는 빈 데이터이여야 한다.

그런데 복사해야할 레파지토리가 오래된 경우 데이터가 매우 커서 한번 Sync를 시도하면 세월아 내월하가 될 수 있다. 더욱이 특정 버전에서 파일크기가 크면, http 기반의 svn 서버 중 일부는 에러를 내고 이야기를 진행하지 못하는 경우도 있다.

이 경우에 처리하는 방법은 다음과 같다.

1. svnadmin dump를 이용해서 원본 데이터를 뜬다.

2. 복제 대상에 원본 데이터를 svnadmin load를 이용해서 붇는다.

3. svnsync init 할 때, --allow-non-empty를 넣어 처리한다.


즉 svnsync 초기화 할 때, --allow-non-empty를 하면된다.


그리고 그 뒤는 sync로 연속.


만일 sync 중 오류가 나면, 해당 revision만 dump를 뜨고 다시 대상에서 붇고 sync를 다시해준다.


중요한 것은 쌍방의 버전이 동일하게 진행되어야 한다.


728x90
저작자표시 (새창열림)
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

리눅스 백그라운드 실행

카테고리 없음 2018. 4. 12. 01:11

참조글 : https://www.linuxquestions.org/questions/linux-software-2/rtorrent-how-to-make-it-run-in-the-background-596041


보통 리눅스 작업을 하면 SSH와 같은 원격 접속 쉘을 사용한다.

여러가지 명령들을 사용해서 백그라운드로 실행하는데, 만일 백그라운드로 실행시키지 않았을 때, 해당 SSH를 닫으면 프로그램이 같이 종료된다. 그래서 보통 nohup 과 같은 유틸을 이용해서 백그라운드로 실행을 한다.

그런데 Console 기반의 프로그램 중에는 ANSI를 이용해서 예전 도스 프로그램 처럼 사용자와 In/Out 하는 프로그램들이 있다. 그냥 단순하게 백그라운드 실행을 하게 되면, 해당 화면을 다시 불러오지 못하는 경우가 발생하는데, 이 때 사요하는 유틸이 있었다.

screen "실행할 프로그램"

을 하면 프로그램이 실행이 된다.

여기서 키보드로 Ctrl 과 A를 누른뒤 D를 치면 프로그램을 백그라운드로 돌리고 보통 쉘 창으로 빠져나올 수 있다.

만일 다시 화면으로 돌아가고 싶으면..

screen -r 

을 하면 된다.

Ctrl-A + D를 한 뒤에 SSH를 닫고 나중에 다시 로그린 한 뒤, screen -r을 하면 원래대로 복귀.

리눅스는 역시 무궁 무진 한듯.

728x90
저작자표시 (새창열림)
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

  • «
  • 1
  • ···
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • ···
  • 157
  • »
250x250

블로그 내에 소스 코드 삽입 이사온 기념 스킨도... RSS 전문 기능 비활성화 관련. 스킨 바꾸어 보았습니다. 서버 파일 정리 좀 했습니다.

«   2026/11   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

오류 SharePoint 협업 WSS 블로그 Tutorial 좀 moss 불만 windows me2dayzm 비스킷 친구 지름신 것 매뉴얼 수 me2photo 개발환경 Visual Studio 2010 me2sms java MOSS 2007 Azure Buscuit Google Apps Engine e-book 인터파크 twi2me

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015-2025 Socialdev. All Rights Reserved.

Copyright © 2015-2025 Socialdev. All Rights Reserved.

티스토리툴바