-
내사랑 현주 - 암 이기는 기록. 해피 앤딩 - 2
내사랑 현주 - 암 이기는 기록. 해피 앤딩 - 2 4/27일 아침 새벽 5시부터 잠이 안온다 어제 저녁..아이들을 재워두고 혼자 핸드폰으로 위암을 검색하며 눈물을 흘리는 그녀의 모습을 지울수가 없다. 해줄수 있는것도 없다….나란 참 무능력한 존재… 아무튼 이대로 접을수는없다. 생각대로 된단다…희망을 가져보자…오늘검사를 해봐야하지만 적어도 3-4기는 아닐거야 1-2기는 75%정도는 완치한다니까 힘내보자…힘내보자.. 자꾸 무섭고 겁나고.. 나도 그러는데 …본인은 어떨까? 아이들 생각에 눈물짓는 당신을 보고있으니 내 마음이 찢어지네요 . 못되게 한것만 생각하고 위암이 꼭 내 탓만 같고. 미안하오..사랑하오. 아직...
-
내사랑 현주 - 암 이기는 기록. 해피 앤딩 - 1
내사랑 현주 - 암 이기는 기록. 해피 앤딩 - 1 2016/04/26일 귀국하려고 고흥에 갓다가 광주에 들렷다 전주를 오는 스케줄이다. 바로 서울로 이동 해야해서 조금 서둘렀다. 광주에서 어제 선생님을 만나서 술도 많이 먹고 와이프도 몇잔 먹었다… 올라오는 버스에서 처형의 문자를 받았다… 조직 검사 결과가 현주가 직접 들어야한다는 것이였다. 불길했다. 집에 오자마자 애들을 맡겨두고 같이 병원으로 갔다.. 화장실이 급해서 화장실에 있엇는데 송현주님 보호자를 애타게 찾았다. 불길했다. 가보니 현주가 날 보며 “나 암이래”한다… 갑자기 어떻게 해야할지 아무것도 생각이...
-
C# Delegate - Event
C# Delegate - Event 기존 코드 비디오 인코드를 끝내고 완료 이메일을 보내라. 라는건데…이렇게 되잇음. public class Video { public string Title { get; set; } } public class Program { static void Main(string[] args) { var video = new Video() { Title = "Video 1 " }; var videoEncoder = new VideoEncoder(); //publisher var mailService = new MailService(); //subscriper videoEncoder.Encode(video); //만약에 여기에 5분 기다리라라는 코드가 있으면??? mailService.SendEmail(); } } public class MailService { public void...
-
C# Delegate
C# Delegate 델리게이트는 함수 포인터 이다. 왜 사용하는가? - 확장이 쉽게 가능하게 하기위해 사용한다. 예를들면 버튼을 만들면 버튼이 클릭될때 동작하는 것을 정의를 해야한다. 어떻게 해야할가?버튼은 마이크로소프트에서 제공을 한다고하고 나는 내가 만든 로직을 버튼 누르면 실행하게하고 싶다..마소에서 자기들 코드를 고쳐주지 않는다. 그러므로 마소에는 델리게이트를 받게끔 코딩을 해두고 난 델리게이트를 만들어서 그걸 넘겨주면된다. 그러므로 확장성이 잇게 된다. 결론 - 함수를 전달함으로 어플리케이션의 확장성이 추가 된다. 기존 코드 public class Photo { public static Photo Load(string path) {...
-
C# Generic
C# Generic 기존 리스트의 박싱, 언박싱의 문제를 해결하기 위해 도입 형태는 다음과 같음. public class GenericList<T> { public void Add(T value) { } public T this[int index] { get { throw new NotImplementedException(); } } } ** 일반적으로는 직접 만들어서 쓰는경우는 없고 List 등을 이용한다. ** 제너릭을 사용하면 박싱 언박싱이 필요없어진다. <> 이걸 사용하며 안쪽에 이름 어떤걸 넣어도 상관없다. 일반적으로 T로 (Type)을 사용한다. <>안에 넣는걸 형식 매개변수라고 한다. 형식 매개변수는 여러개여도 된다. public class GenericDictionary<TKey,...
-
Automapper - 5 - Db Update 쉽게 하기
Automapper에서 데이터 베이스 업데이트 코드 샘플 기존 코드 public IHttpActionResult PutUser(UserViewModel vm) { //entity를 가져오고 var entity = _unitOfWork.Users.SingleOrDefault(i => i.UserName == vm.userName); //vm에서 값을 가져다 엔티티를 업데이트해준다. entity.AssignedNodeCnt = (int)vm.AssignedNodeCnt; entity.FileServerId = (int)vm.FileServerId; entity.NodeGroupId = (int)vm.NodeGroupId; entity.PaymentType = vm.PaymentType; entity.UnitPrice = (double)vm.UnitPrice; entity.UserPriority = (int)vm.UserPriority; entity.Location = vm.Location; //entity가 업데이트 되었으므로 complete만 하면된다. _unitOfWork.Complete(); } 수정후 코드 public IHttpActionResult PutUser(UserViewModel vm) { // entity 가져오기 var entity = _unitOfWork.Users.SingleOrDefault(i => i.UserName == vm.userName); //map...
-
Automapper - 4 - Mapfrom Vs ResolveUsing
Automapper에서 Mapfrom Vs ResolveUsing AutoMapper에서 매핑하는 두가지 방법이 있다. ResolveUsing Mapper.CreateMap<SourceType, DestType>().ForMember(d => d.DestPropX, o => o.ResolveUsing(s => s.SourcePropY)); MapFrom Mapper.CreateMap<SourceType, DestType>().ForMember(d => d.DestPropX, o => o.MapFrom(s => s.SourcePropY)); 대부분의 경우에는 두개의 차이는 거의 없다. 특별한 경우 (오브젝트에 널이 있는경우 그리고 이런 객채의 리스트인 경우) 에는 고민해봐야할 부분이 있다. MapFrom은 null 체크를 한다. 예를 들면 ForMember(d => d.DestPropX, o => o.MapFrom(s => s.Person.Address.State)); 이런 코드에서 Person이나 Address 나 Status가 널일경우가 있다. 오토매퍼가 자동으로 Null Reference...
-
AutoMapper - 3 - CustomValueResolver
AutoMapper - 3 - customvalueresolver 왜 사용하는가? - 도메인 객체와 viewmodel사이를 매핑해주기 위해서 사용한다. 중요한 것은 전체 어플리케이션에서 한번만 매핑관련 정보를 세팅하고 그걸 계속 사용한다는 것이다. public class DBEntity { public int Value1 { get; set; } public int Value2 { get; set; } } public class ViewModel { public int Total { get; set; } } 전체 프로그램에서 DBEntity를 ViewModel객체로 매핑시 total에 value1과 value2를 합쳐서 보여주고싶다. DBEntity => ViewModel로 매핑설정 cfg.CreateMap<DBEntity, ViewModel>() .ForMember(dest =>...
-
AutoMapper -2 심화
AutoMapper - 2 왜 사용하는가? - 도메인 객체와 viewmodel사이를 매핑해주기 위해서 사용한다. 중요한 것은 전체 어플리케이션에서 한번만 매핑관련 정보를 세팅하고 그걸 계속 사용한다는 것이다. 기본 사용법 public class Invoice { public int Id { get; set; } public string UserName { get; set; } public DateTime? BillingDate { get; set; } public string Po { get; set; } public string PreBalance { get; set; } } public class InvoiceDetailViewModel { public int Id { get;...
-
AutoMapper - 1 기본
AutoMapper -1 왜 사용하는가? - 도메인 객체와 viewmodel사이를 매핑해주기 위해서 사용한다. 중요한 것은 전체 어플리케이션에서 한번만 매핑관련 정보를 세팅하고 그걸 계속 사용한다는 것이다. AutoMapper 설치 nugget package manager 설치 Install-Package AutoMapper mvc프로젝트를 Global.asx에 정의해놓으면 전체 어플리케이션에 적용이 된다. webapi 는 Startup.cs 에 정의해두자. 기본 사용법 객체가 두개가 있다. 하나는 디비에 저장하기 위한 엔티티 객체 두번째는 화면에 뿌리기 위한 viewmodel public class Order { public int ID { get; set; } public string Name { get;...