2012년 8월 30일 목요일

C# StringBuilder

정말 원시시대에서 살다가 왔는지 처음보는 것들, 모르는 것들이 너무 많다. ㅠㅠ
열심히 공부하자.

C#에 StringBuilder 라는 것이 있다.

StringBuilder sb = new StringBuilder();

이런식으로 선언하면 된다.

sb 자체는 하나의 object로 인식되는 듯 하다.

sb.Append(list[i]._holdOrgName);
sb.Append(";"); 

이렇게 사용하면 각 변수의 항목이 sb에 순서대로 붙는다.

strcat 같은 함수를 더 편하게  사용하는 느낌이다.


txtOrg 라는 TextBox에 문자열을 출력하기 위해 다음과 같이 사용할 수 있다.
private System.Windows.Forms.TextBox txtOrg;
...
txtOrg.Text = sb.ToString();    // 화면에 출력

신기한 C# -_-;

string 형식으로도 충분히 구현가능 할텐데 왜 StringBuilder를 만들었을까?

단순히 편의성을 위해?

StringBuilder에 대해 좀 더 확인해봐야겠다.

추가
MSDN에서 확인해봤다.
http://msdn.microsoft.com/ko-kr/library/system.text.stringbuilder.aspx
단순한 문자객체가 아니라 class 였구나.
쓸만한 멤버 변수도 많아 보인다.
음... 속도는 어떨까?
속도도 한번 더 확인해보자.

C#에서 FarPoint Spread ActiveSheet

C#에서 FarPoint Spread를 사용할 때

public partial class frmSendFile : Form, IKisSmsForm
{
    private SheetView _ActiveSheet;
    ...
    
    public frmSendFile()
    {
        InitializeComponent();
        _ActiveSheet = fpSpread1.ActiveSheet;
    }
    ...
}
이렇게 선언해 놓으면 _ActiveSheet 변수를 사용하여 Spread를 컨트롤 할 수 있다.

예를 들어


_ActiveSheet.AddRows(_ActiveSheet.Rows.Count, 1);
_ActiveSheet.SetValue(i, COL_STATUS, ConvertStatusString(ADD));
요렇게 사용한다던가

int cnt = _ActiveSheet.Rows.Count;

_ActiveSheet.ColumnCount = COL_MAX;

이런식으로 사용할 수 있다.

C# string format

C#에서 새로 생긴 기능인지는 모르겠지만, 특이한 것을 발견했다.

private string ERR_MSG_FORMAT = "CHK_ID : [0] //  [1] : [2] - [{3} : {4}]";
이렇게 선언하고,
string.Format(ERR_MSG_FORMAT,
data._checkID
, "UPDATE"
, _ActiveSheet.GetValue(i, COL_ORG_NAME).ToString()
, _ActiveSheet.GetValue(i, COL_FILE_NO).ToString()
, _ActiveSheet.GetValue(i, COL_FILE_NAME).ToString())
이런식으로 사용하면 string 형식의 값(?)이 만들어진다.

잘 활용하면 좋을 듯 하다.

2012년 8월 29일 수요일

C#에서 Enum 사용하기

public enum FileSendDiv
{
    FTP = 1
    , MAIL = 2
    , 통신프로그램 = 3
    , 기관처리 = 4
    , 재송신 = 5
}

위와 같은 enum 형식의 변수(?)가 있을 때



public string ConvertTransTypeToString(string transType)
{
    return ((FileSendDiv)int.Parse(transType)).ToString();
}
public int ConvvertTransTypeToInt(string transType)
{
    FileSendDiv tran = (FileSendDiv)Enum.Parse(typeof(FileSendDiv), transType);
    return (int)tran;
}

요런 code를 사용해서 서로 변환을 했다.

뭔가 비효율적인것 같은데 개선할 방법은 잘 모르겠다 -_ㅜ


2012년 8월 21일 화요일

20120821

개발일정이 계속 지연되고 있어 스트레스가 심하다.

여러가집 잡무에 시간을 뺏기다가 다시 개발을 하려고 자리에 앉으면 어디서부터 시작해야 할지 너무 막막하다.

팀장님에게 고민 상담을 할까 생각해봤지만 지금까지 너무 성과없이 불만만 얘기한 것 같고 딱히 대안도 없다.

내가 하고있는 잡무를 누구에게 대신 해달라고 할 수도 없는 일이고... 애초에 개발에만 전념할 수 있는 구조가 아니다.

그래서 오늘 저녁 식사 이후 시간에 '어떻게 하면 좋을까' 곰곰히 생각해 보다가 다음과 같은 결론을 내렸다.

1. 해야 할 일을 분명히 파악하자.
애매하게 해야 할일의 제목만 적어 놓으면 막상 일을 하려고 할때 어떻게 진행해야 할지 또 고민하게 된다. ToDoList를 작성할 때 한번 더 생각하고 구체적으로 기록해야 한다.

2. 불필요한 시간을 최대한 줄이자.
바쁘다고 투덜대고 있지만 분명히 버리는 시간이 있다. 휴식시간을 얘기하는게 아니다. 쓸데없는 생각을 하고 있는 시간, 웹서핑 하고 있는 시간을 줄이자.

3. 개발해야 할 것들의 명세를 상세히 기록하자.
개발 중간에 자리를 비웠다가 돌아와서 복기하지 않고 바로 다시 시작할 수 있으려면 코딩 중에는 논리를 생각하지 않을 수 있어야한다. 코딩 중에 논리를 생각하지 않으려면 미리 논리가 완성되어 있어야 한다. 그리고 코딩 중에 논리가 막히면 문서부터 다시 기록하자.

개발일정 지연으로 인해 운동계획도 못 지키고 있고 가정에도 충실하지 못하고 있다.

반성하자. 그리고 조금 더 노력하자.

2012년 8월 20일 월요일

20120820

일 욕심에 계획이 흐트러지고 있다.

오늘부터 운동을 할 생각이었는데 오전 오후를 기타 업무로 시간을 보내고 밤 늦게까지 코딩을 했다.

사소한 업무를 몰아서 처리하고 코딩할 시간을 벌어야 하는데 참 쉽지 않다.

내일은 회사 일 마치고 꼭 운동하고 집에가자.

...

아내에게 그리고 딸에게 좋은 남편, 좋은 아빠가 되고 싶다.

열심히 살자.


2012년 8월 14일 화요일

20120814 하루 하나, 나와의 약속

20120814

운동하자.

운동. 운동.

매주 2번 이상.

월화에 한번, 목금에 한번 꼭 운동을하고 운동 일기를 쓴다.

운동일기는 매일의 운동량과 다음 운동의 목표, 그리고 목표를 향한 진행 상황을 기록한다.


나도 이런 근육 한번 만들어보자.

blog, 새롭게 시작

요즘은 나날이 정체되고 있다는 느낌이다.

회사 업무는 차근차근 진행되고 있지만 공부, 독서, 운동 어느 것 하나 꾸준히 진행되는 일이 없다.

어떻게든 생활에 변화를 주기위해 다시 일기를 쓸 생각이다.

꾸준한 계획과 실천, 그리고 반성만이 정체된 생활의 탈출구가 될 것이라고 믿는다.

하루 하나 나와의 약속도 다시 시작하겠다.

하루하루 노력하는 삶을 살자.

여러모로 부족한 나에게는 그것만이 답이다.



포기하지 말고 열심히 노력하자.