6/16/2010

Windows 7. usb로 설치하기

마소에서 대학생 프로모션으로 @*.edu 메일을 가진 사람들에게 $30에 win 7 professional을 판매하기에(예전에도 프로모션이 있었지만 그때 놓쳐서 지금 신청했다 -_ㅠ) 살포시 구매해줬다.

$12을 더 내면 CD로 보내주긴 하지만 내겐 사치라 usb 버전으로 만들어 설치를 하려던 찰나
아주 친절하게도 usb로 win7의 iso 파일을 넘겨주는 프로그램을 마소에서 지원한다는걸 알았다.
그래서 요걸 써주는 센스!!

1. 프로그램 다운로드
2. 프로그램 설치 및 실행
3. ISO 경로 찾기 Next
4. USB연결 USB Device
5. Begin Copying

아 간단하여라~
 이제 설치해 볼까!!!?

관련링크
$30 win 7 professional promotion site : http://www.microsoft.com/student/office/en-us/default.aspx
windows 7 설치 usb 버전 설명 site : http://store.microsoft.com/Help/ISO-Tool



---

CMOS에서 USB 부팅우선순위 잡고 Windows  7을 설치했다.




---
영문 Windows 7 한글판으로 바꾸기
http://liverex.tistory.com/432

설치했는데 한글이 보이긴 했으니
알집, v3등을 설치할때 나타나는 한글깨짐 현상이 여전했다.
이건 '제어판' > '국가 및 언어의 ' > '관리자 옵션' 탭 > '시스템 로캘 변경' 에서
한국으로 바꿔주면 된다.

이제 즐겁게 윈7을 즐겨보자

6/01/2010

C# 형식지정

 String.Format 메소드등에서 쓰이는 형식을 지정할 때마다 헷갈려서 MSDN 링크해 놓는다.

형식항목의 구성요소와 형태
   {index[,alignment][:formatString]}

 

합성 형식 지정
숫자 형식 지정
날짜 및 시간 형식 지정
열거형 형식 지정
사용자 지정 형식 지정

Class 설계 System, Business Logic 그리고 Data

올바른 Class는 System, Business Logic 그리고 Data 순서로 설계되어야 한다는 걸 배웠다.


내가 처음에 작성한 잘못된 클래스 생성자는 아래와 같다.
  public PinPadOperation(SerialPort serialPort, string cardNum, string totalAmount);



클래스를 생성할 때 Serial Port와 Card Number 그리고 Total Amount를 받아온다.

이 클래스의 생성자가 잘못된 이유는 System과 Data를 한꺼번에 받아온다는데 있다.
이를 고쳐보면

  public PinPadOperation(SerialPort serialPort);   //생성자를 통한 System 변수 설정
  public bool CanUseSerialPort();  //System이 사용가능한지 체크
  public void SetPinPadData(string cardNum, string totalAmount);  //Input Data를 가지고 작업수행



이렇게 설계되었어야 정상이다.

즉, Business Logic에 필요한 System들을 먼저 설정하고 그것이 정상인지 체크한 후에
Data를 받아들여 Business Logic을 실행하는것이 올바른 클래스 설계라고 한다.

Thread C#

- 쓰레드에서 간단하게 Invoke 하기 - 
Thread를 사용하다 보면 하위 Thread에서 메인 Thread의 변수에 접근하기 위해 Invoke Method를 쓸 때가 종종 있다.

하지만 Invoke Method를 쓸 때 delegate와 그 delegate와 연결시킬 method가 필요한데, 이를 Event를 사용하면 소스코드가 한결 간단해진다.

그 예는 아래와 같다.


원본소스
private void StartThread()
{
    Thread thread = new Thread(new ThreadStart(SleepThread));
    thread.Start();
}

private void SleepThread()
{
    System.Threading.Thread.Sleep(800);

    this.Invoke(new SleppThreadDelegate(InvokeMethod));
}

public delegate void SleppThreadDelegate();

private void InvokeMethod()
{
    this.timer.Start();
}

이 소스를 아래와 같이 변경가능
private void StartThread()
{
    Thread thread = new Thread(new ThreadStart(SleepThread));
    thread.Start();
}

private void SleepThread()
{
    System.Threading.Thread.Sleep(800);

    this.Invoke(new EventHandler(delegate(object o, EventArgs a)
    {
        this.timer.Start();
    }));
}

http://blog.opennetcf.com/ctacke/2008/12/03/ControlInvokeWithoutExplicitDelegates.aspx




- 다중 매개변수를 갖는 쓰레드 돌리기 - 
// function that running in a thread
void DoSomething(string param1, string param2, string param3)
{
}
// The parameters.
string param1 = "Hey";
string param2 = "You";
stirng param3 = "There";

// The delegate to call.
ThreadStart ts = delegate() { DoSomething(param1, param2, param3) };

// The thread.
Thread t = new Thread(ts);

// Run the thread.
t.Start();