![]() |
|
It works
우리는 무엇이든지 이룰 수 있다.
그방법은 단지 간절히 원하고 아래의 세가지 적극적 규칙을 준수하는 것이다.
성취의 세 가지 적극적 규칙
1.원하는 목록을 날마다 아침 점심 저녁 세차례 읽는다.
2.원하는 대상을 가급적 자주 생각한다.
3.아무에게도 이 플랜을 말하지 않고 오로지 자신의 마음속에 있는 위대한
능력에게만 이야기한다. 그러면 이 능력이 자신의 객관적 의식에게 소원 성취의
비결을 제시해준다.
+김수영의 "멈추지마, 다시 꿈부터 써봐" 에서도 언급했었는데 역시 이것도 리스트를 작성하고
항상 생각하고 간절히 소망하기만 하면된다.
그럼 NLP 처럼 그것이 효과가 나타나기 시작할 것이다.
"당신은 이것을 받아들일 수도 있고 또 거절할 수도 있다" 수용여부에 따라서 우리는 예전 그대로 일 수도있고
원하는 것을 얻을 수도있다. 선택은 우리의 몫이다.
+이책은 거의 30페이지 분량이다. 내용도 간단하고 읽기도 쉽다.
이제 현실에서 불평과 불만만 하지 않고 진정으로 나를 바꾸기를 원한다면 한번 시도해보자
(솔직히 그런 불평을 하는 나도 그 불평을 어느새 당연하다고 생각하고 받아들이는 경우가 많다..)
어차피 손해도 아니니까..
단 주의할점은 절대 타인에게나 자신에게 해가되는 것을 소망하면 안된다.
그리고 간단한것부터 시작하라~
'책 후기 > 1.문학 및 기타' 카테고리의 다른 글
내아이를 위한 감정코칭 -존 가트맨 (0) | 2015.03.24 |
---|---|
창문 넘어 도망친 100세 노인 - 요나스 요나손 (0) | 2015.03.24 |
주진우의 정통시사활극 주기자 (0) | 2015.03.20 |
배려 (0) | 2015.03.20 |
멈추지마, 다시 꿈부터 써봐 (김수영) (0) | 2015.03.20 |
코딩을 하면서 자주 사용하는 IF 구문이나 FOR 구문을 사용할때 전체 코드를 다 타이핑 하지 않고
if를 입력후에 TAB을 두번 누르면 해당 IF 구문이 자동적으로 추가가 됩니다. 이런것을 코드조각이라고 합니다.
이처럼 시스템에 미리 있는 코드조각 말고 사용자가 추가적으로 정의해서 사용이 가능합니다.
아래의 예제는 사용자가 MSSQL DB Connection String을 자동적으로 생성하게 도와줍니다. 또한 코드 조각의 일부를
사용자가 바꾸게 하는 기능도 가능합니다.
<?xml version="1.0" encoding="utf-8"?> <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title></Title> </Header> <Snippet> <Code Language=""> <![CDATA[]]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>
위에서 Title에 해당 코드조각의 이름을 넣어주고 Code에 넣을 코드를 넣으면 됩니다.
<?xml version="1.0" encoding="utf-8"?> <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title>HongsMSSSQLConnectionString</Title> </Header> <Snippet> <Code Language="csharp"> <![CDATA[ string $VariableName$ = "Data Source=$SqlServerIP$;Database=$SqlDataBaseName$;User Id=$LogInID$;Password=$LoginPWD$"; ]]> </Code> <Declarations> <Literal> <ID>VariableName</ID> <ToolTip>Replace with a Variable string.</ToolTip> <Default>"Variable string Name"</Default> </Literal> <Literal> <ID>SqlDataBaseName</ID> <ToolTip>Replace with a Database Name string.</ToolTip> <Default>"SQL Database Name string"</Default> </Literal> <Literal> <ID>SqlServerIP</ID> <ToolTip>Replace with a SQL Server IP string.</ToolTip> <Default>"SQL SQL Server IP string"</Default> </Literal> <Literal> <ID>LogInID</ID> <ToolTip>Replace with a Login ID string.</ToolTip> <Default>"SQL Login ID string"</Default> </Literal> <Literal> <ID>LoginPWD</ID> <ToolTip>Replace with a Login Password string.</ToolTip> <Default>"SQL Login Password string"</Default> </Literal> </Declarations> </Snippet> </CodeSnippet> </CodeSnippets>
위에서 <Declarations> 노드를 추가해서 사용자가 대체할 수 있는 문자나 객체를 선언해주면 된다.
코드 내용에는 대체되는 변수를 $$로 감싸야 한다. Language="csharp"로 설정해야한다.
'프로그래밍 > C#' 카테고리의 다른 글
[C#] 해시테이블 vs 딕셔너리 ( hashtable vs. dictionary ) (10) | 2015.03.25 |
---|---|
[C#] 리플렉션 ( Reflection ) (1) | 2015.03.24 |
[C#] 이벤트 생성 및 사용자 정의 EventArg (3) | 2015.03.23 |
[C#] XML 다루기 - Property 와 Node 접근하기, 네임스페이가 있는 Node처리리 (0) | 2015.03.20 |
[C#] XML 다루기 - REST 데이터 받아서 처리하기 (0) | 2015.03.20 |
이벤트를 사용자가 생성하고 구독하는 방법에 대해서 살펴보겠습니다.
이벤트를 받을때 파라미터로 데이터를 받으려면 EventArg클래스를 상속받아서 원하는 항목을 추가해서
사용이 가능합니다.
아래는 이벤트를 발생시키는 클래스와 EventArg를 재정의한 클래스, 그리고 그 이벤트를 사용하는 예제입니다.
1.EventArg
/// Event Arguments Class /// </summary> public class HongsEventArgs : EventArgs { public string Message { get; set; } public string SimpleData { get; set; } public List<Object> Data { get; set; } }
위의 HongsEventArgs는 EventArgs를 상속받아서 3가지의 멤버변수를 추가했습니다.
여기에서 위의 2개는 단순 데이터 전달을 위해서 추가했구요, 마지막은 어디서나 사용가능하게
object를 리스트로 선언해서 어떠한 데이터라도 받을 수 있게 처리하였습니다.
2.이벤트 발생클래스
class SomethingEvent { public event EventHandler eventSomthingClicked; public void RaseEvent() { try { if (eventSomthingClicked != null) { HongsEventArgs nowEventArg = new HongsEventArgs(); nowEventArg.Message = "이벤트 클릭"; nowEventArg.SimpleData = "NewSimpleData"; nowEventArg.Data = new List<object>(); nowEventArg.Data.Add(32); nowEventArg.Data.Add("HongJinHyeon"); nowEventArg.Data.Add(new List<string>()); eventSomthingClicked(null, nowEventArg); } } catch (Exception) { throw; } } }
위에서는 이벤트를 event EventHandler 로 선언해주고, 이벤트를 발생하는 부분에서 HongsEventArgs를 인스턴스화 해서 값 들을
할당을 해줍니다. 그리고 eventSomthingClicked(null,nowEventArg)로 이벤트를 발생시켜줍니다.
여기서 if로 eventSomthingClicked가 null 인지 체크하는 부분이 있는데요. 이 체크를 안하고 그냥 이벤트를 발생시켜버리면 오류가
발생합니다. 이유는 이 이벤트를 실행하는 것이 델리게이트를 실행하는것과 비슷한데요 그 대상 함수가 없으니 오류가 발생하는 것입니다.
3.이벤트 구독
private void Form1_Load(object sender, EventArgs e) { try { SomethingEvent EventCreator = new SomethingEvent(); EventCreator.eventSomthingClicked += EventCreator_eventSomthingClicked; EventCreator.RaseEvent(); } catch (Exception) { throw; } } void EventCreator_eventSomthingClicked(object sender, EventArgs e) { try { HongsEventArgs RecievedEventArg = e as HongsEventArgs; Console.WriteLine(RecievedEventArg.SimpleData); } catch (Exception) { throw; } }
사용은 위에서처럼 이벤트를 구독한 후에, 이벤트를 구독하는 메서드에서 EventArgs를 as로 형변환을 해주고 사용해주면 됩니다.
'프로그래밍 > C#' 카테고리의 다른 글
[C#] 리플렉션 ( Reflection ) (1) | 2015.03.24 |
---|---|
[C#] 사용자 정의 코드조각 추가하기 (Code Snippet) (1) | 2015.03.23 |
[C#] XML 다루기 - Property 와 Node 접근하기, 네임스페이가 있는 Node처리리 (0) | 2015.03.20 |
[C#] XML 다루기 - REST 데이터 받아서 처리하기 (0) | 2015.03.20 |
[C#] List Collection 재정의(Override) 하기 (2) | 2015.03.19 |