본문 바로가기

전체 글88

메일 수신과 삭제 with OpenPoP.NET Open Pop.NET http://hpop.sourceforge.net/ OpenPop.NET은 C#으로 이메일을 제어 가능한 라이브러리입니다. 아래는 OpenPop.NET을 이용해서 메일의 수신과 삭제를 실행하는 부분을 정리한 내용입니다. 메일 수신과 삭제 기능의 호출 부분 using (Pop3Client pop3Client = GetPop3Client()) { var pop3 = new Pop3Mail(); List receivedMailList = pop3.ReceiveMails(pop3Client); pop3.DeleteMessageByMessageId(client, 1); // MessageId } Pop3Client생성 public static Pop3Client GetPop3Client().. 2019. 1. 21.
log4net의 버젼 차이에 따른 문제 해결 log4net 버젼 차이에 따른 문제 프로젝트 A : 새로운 프로젝트. 당연히 log4net도 최신 버젼을 도입합니다. 하지만 프로젝트 B의 비지니스 로직을 참고해야 합니다... log4net 버젼 : 1.2.15.0 프로젝트 B : 공통 비지니스 로직을 포함하고 있는 오래된 프로젝트로 log4net의 버젼도 당연히 옛날 버젼 입니다... log4net 버젼 : 1.2.10.0 … 그리고 상기의 사양대로 코딩을 했더니 프로젝트 A가 단독으로 움직일때는 문제가 없지만 프로젝트 B의 로직을 호출(Add References로 dll 참조)하면 프로젝트 B에서 로그를 출력하는 타이밍에서 에러가 발생했습니다. 에러 메세지 Could not load file or assembly 'log4net, Version=1.. 2019. 1. 21.
Entity Framework에서 tinyint(1)를 sbyte로 인식 시키고 싶을 경우의 해결 방법 1. config 파일을 수정 Web.config 또는 App.config의 에 “TreatTinyAsBoolean=false”를 추가합니다. 2. DB의 edmx 파일을 수정 SSDL content 부분의 bool를 tinyint로 수정합니다. 그리고 CSDL content 부분의 Boolean을 SByte로 수정합니다. 현재(2016.12) Web.config의 설정만으로 edmx가 자동으로 대응해 주는 방법은 없어서 exmd 파일에서 해당 컬럼과 모델 항목 설정을 일일이 수정해 줄 필요가 있습니다. 그리고 edmx에 변경이 발생할 때마다 (테이블의 추가/변경/삭제 등) 기존의 수동 설정은 새로 리셋되기 때문에 갱신 할때마다 설정을 수정하지 않으면 안됩니다. 처음부터 새로 DB를 구축할때 Entity.. 2019. 1. 21.
timestamp/DateTime에서 현재시간을 기준으로 경과시간을 취득 DateTime에서 경과시간을 취득 public static string GetLapsedTimeFromDateTime(DateTime dt) { string timeString = string.Empty; TimeSpan ts = DateTime.Now.Subtract(dt); int DayPeriod = Math.Abs(ts.Days); if (DayPeriod < 1) { int HourPeriod = Math.Abs(ts.Hours); if (HourPeriod < 1) { int MinutePeriod = Math.Abs(ts.Minutes); if (MinutePeriod < 1) { int SecondPeriod = Math.Abs(ts.Seconds); return SecondPeriod... 2019. 1. 21.
Ace Editor로 소스코드를 표시하는 방법 티스토리에서 마크다운을 지원해 주면 제일 좋고 편하지만, 지원해 주지 않는 고로 티스토리 블로그에서 소스코드를 표시하는 방법을 이리저리 찾아보고 시행착오를 해 본 결과 현재 시점에서는 개인적으로 제일 마음에 드는 Ace editor를 티스토리에 도입하는 방법을 간단히 소개합니다. https://ace.c9.io/ Ace - The High Performance Code Editor for the Web 도입 전제조건 적용할 스킨은 TISTORY 제공의 Letter CDN으로 도입 가급적 깔끔하게 소스의 수정은 최소한으로 소스 코드내에 HTML태그도 포함 1. 스킨편집 - HTML편집 하기 링크에서 사용할 ace.js의 주소를 복사해서 의 사이에 삽입합니다. https://cdnjs.com/librarie.. 2019. 1. 17.
EPPlus 템플릿 파일을 사용해서 엑셀파일을 작성 using System.IO; using OfficeOpenXml; // 사전에 수식등이 설정되어 있는 엑셀 파일(템플릿 파일)을 기반으로 // DB등에서 취득한 값을 지정한 셀에 설정하여 byte[]를 엑셀로 다운로드 시킬 경우 byte[] source; MemoryStream stream = new MemoryStream(); using (var template = System.IO.File.OpenRead(AppDomain.CurrentDomain.BaseDirectory + "/App_Data/template.xlsx")) using (var package = new ExcelPackage(stream, template)) { ExcelWorksheet worksheet = null; worksh.. 2019. 1. 16.
EPPlus로 엑셀파일 작성 ASP.NET 기반의 업무용 웹 어플에서 엑셀 출력 기능을 개발하면서 찾아본 내용등을 간단히 정리한 내용입니다. using OfficeOpenXml; using OfficeOpenXml.Style; /// /// Model 데이터를 기반으로 Excel 작성 /// /// /// byte[] public byte[] MakeDetailsAsExcel(ContractExcelModel excelModel) { using (var package = new ExcelPackage()) { var worksheet = package.Workbook.Worksheets.Add("Sheet1"); worksheet.Column(1).Width = 3; var allRangeHeight = 500; // workshe.. 2019. 1. 16.
정수의 N위치에서 반올림 /// /// 정수의 N위치에서 반올림 /// 엑셀파일과 같은 반올림을 할 경우엔 MidpointRounding.AwayFromZero를 이용 /// ex) GetExcelRound(13405, 1) // return 13410 /// ex) GetExcelRound(13405, 2) // return 13400 /// /// /// /// public static double GetExcelRound(double value, int digit) { var val1 = double.Parse((0.01 * Math.Pow(0.1, digit - 1)).ToString(), System.Globalization.NumberStyles.Float); var val2 = 100 * Math.Pow(10, di.. 2019. 1. 16.
iTextSharp로 PDF 작성 ASP.NET 기반의 업무용 웹 어플에서 PDF 출력 기능을 개발하면서 찾아본 내용등을 미래의 자신을 위해 간단히 정리한 내용입니다. 기본적으로 PDF 작성은 각 요소를 테이블로 작성하는 편이 조정할때 편한 것 같습니다. using iTextSharp.text; using iTextSharp.text.pdf; /// /// PDF 파일 작성 /// ※1. 포맷용의 PDF가 있을 경우 /// ※2. 복수 페이지의 PDF를 연속으로 출력할 경우도 대응가능 /// ※3. 웹 어플&응용 콘솔 양쪽에서 호출될 경우를 상정(공통로직) /// /// PDF스트림 /// PDF작성용 모델(리스트) /// 웹/응용 콘솔 양쪽에서 호출된 경우의 판단용 public void MakePdfStream(MemoryStream .. 2019. 1. 16.