[C#] HTML 에서 Text만 추출

CSharp
/// <summary> /// HTML 에서 Text만 추출한다. /// </summary> /// <param name="Html"></param> /// <returns></returns> public static string StripHtml(string Html) { string output = Html; output = System.Text.RegularExpressions.Regex.Replace(output, "<br>", Environment.NewLine); output = System.Text.RegularExpressions.Regex.Replace(output, "<br/>", Environment.NewLine); output = System.Text.RegularExpressions.Regex.Replace(output, "<br />", Environment.NewLine); //get rid of HTML tags output = System.Text.RegularExpressions.Regex.Replace(output, "<[^>]*>", string.Empty); //get rid of multiple blank lines output = System.Text.RegularExpressions.Regex.Replace(output, @"^\s*$\n", string.Empty, System.Text.RegularExpressions.RegexOptions.Multiline); output = System.Text.RegularExpressions.Regex.Replace(output, " ", " "); return output; }
Read More

C# serial communication

CSharp
using System; //using OpenNETCF.IO.Ports; using System.IO.Ports; namespace ConsoleApp1 { class Program { static void Main(string[] args) { SerialPort port = new SerialPort("COM43", 115200, Parity.None, 8, StopBits.One); port.Open(); System.Threading.Thread.Sleep(1000); // waiting for Arduino reset for (int i = 0; i < 1000; i++) { Console.WriteLine(port.BytesToRead); // it write on the console only zeros, so no data is received System.Threading.Thread.Sleep(100); } port.Close(); } } }
Read More
[C#] dll을 포함한 단일 exe배포 방법

[C#] dll을 포함한 단일 exe배포 방법

CSharp
일반적으로 프로그램을 배포시 exe파일과 Application이 호출하는 dll파일은 동일한 폴더(또는 dll 파일이 System폴더에 위치)에 있어야 한다. Microsoft 공식 배포처에서는 exe와 호출하는 라이브러리를 병합하는 프로그램을 배포중이지만, 컴파일러단에서 자체 해결할 수 있는 방법도 존재한다. 사용하고자 하는 dll을 프로젝트에 참조해당 dll을 프로젝트 리소스에 추가리소스에 추가된 dll의 속성 -> 빌드작업 속성 값을 포함 리소스로 지정프로그램 진입점(Program.cs)에 코드를 아래와 같이 변경리소스에 dll 파일 포함하기dll 파일 => 속성 => 빌드작업 ++ 포함리소스로 변경 using System.Reflection; using System.IO; /// <summary> /// 해당 응용 프로그램의 주 진입점입니다. /// </summary> [STAThread] static void Main() { // 리소스 dll 취득 AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(ResolveAssembly); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } // .NET 4.0 이상 static Assembly ResolveAssembly(object sender, ResolveEventArgs args) { Assembly thisAssembly = Assembly.GetExecutingAssembly(); var name = args.Name.Substring(0, args.Name.IndexOf(',')) + ".dll"; var resources = thisAssembly.GetManifestResourceNames().Where(s => s.EndsWith(name)); if (resources.Count() > 0)…
Read More

[C#] 원하는 URL 원하는 웹브라우저로 실행하기

CSharp
WinForm을 만들여서 특정한 URL에 대해서 웹으로 접근해야 합니다.내장현 브라우저를 사용해도 되지만 사용자가 사용하는 웹브라우저는 분명히 존재하거나 혹은 기본으로 설정해 놓은 값이 다르면은 츨력에 에러가 발생할때도 있습니다.그래서 단순하게 OS에 기본 브라우저를 믿을것이 아니라 개발자가 직접 지정을 해서 실행을 하면은 좀 더 명확하게 원하는 웹브루어저로 웹에 접근을 할 수 있을것 같아서 찾아본것입니다. ProcessStartInfo cmd = new ProcessStartInfo(); Process process = new Process(); cmd.FileName = @"cmd"; cmd.WindowStyle = ProcessWindowStyle.Hidden; // cmd창이 숨겨지도록 하기 cmd.CreateNoWindow = true; // cmd창을 띄우지 안도록 하기 cmd.UseShellExecute = false; cmd.RedirectStandardOutput = true; // cmd창에서 데이터를 가져오기 cmd.RedirectStandardInput = true; // cmd창으로 데이터 보내기 cmd.RedirectStandardError = true; // cmd창에서 오류 내용 가져오기 process.EnableRaisingEvents = false; process.StartInfo = cmd; process.Start(); process.StandardInput.Write(@"start explorer http://naver.com "+ Environment.NewLine); // 크롭 //process.StandardInput.Write(@"start firefox http://naver.com "+ Environment.NewLine); // 파이어폭스 //process.StandardInput.Write(@"start whale http://naver.com "+ Environment.NewLine); //…
Read More

[C#] datagridview에 아이콘 표시 하기

CSharp
[C#] datagridview에 아이콘 표시 하기 Datagrid에 Header부터 행 처리에 있어서 필요한 코드만 정리해 놓은것입니다.사용 방법은 자신이 원하는 형태로 처리 하시기 바랍니다. // header dataGridView1.Visible = true; dataGridView1.AutoGenerateColumns = false; dataGridView1.RowHeadersVisible = false; dataGridView1.MultiSelect = false; dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True; dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.Red; dataGridView1.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText = "제목", ReadOnly = true, AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill, FillWeight = 10 }); dataGridView1.Columns.Add(new DataGridViewImageColumn() { HeaderText = "아이콘 출력 ", Width = 40, ReadOnly = true, AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill, ValuesAreIcons = true, FillWeight = 5 }); // 아이콘 정의 Icon New = Properties.Resources.newicon; // icon의 x 자 표시 없애주기 dataGridView1.Columns[1].DefaultCellStyle.NullValue = null;
Read More

[C#] Treeview 문자 검색 하여서 노드 찾기

CSharp
[C#] Treeview 문자 검색 하여서 노드 찾기 Treeview 사용에 있어서 정확하게 node를 지정할 수 있으면 가장 편하지만은 사용자의 값을 넣다 보면은 규칙적으로 변하지 않을 경우에 강제로 treeview에서 node로 검색을 해서 추가 해야 합니다.해당 기능의 소스 입니다. private TreeNode SearchNode(string SearchText, TreeNode StartNode) { TreeNode node = null; while (StartNode != null) { if (StartNode.Text.ToLower().Contains(SearchText.ToLower())) { node = StartNode; break; }; if (StartNode.Nodes.Count != 0) { node = SearchNode(SearchText, StartNode.Nodes[0]); //Recursive Search if (node != null) { break; }; }; StartNode = StartNode.NextNode; }; return node; }
Read More

[C#] Treeview에 아이콘 표시 방법

CSharp
winform 작업할 경우에 treeview를 사용할때 아이콘을 표시해서 좀 더 명확하게 보여주어야 할때가 있습니다.이럴 경우에 아이콘을 사용하면은 글을 읽이 않아도 아이콘 모양으로 한번에 알아 보기 쉽도록 하기 위해서 필요한 기능입니다. 리소스에 아이콘을 추가 하고 해당이름으로 리스트를 만듭니다.이 이후에 treeview에 node에 맞춰서 추가를 해 주면 됩니다. // 아이콘 리스트 만들기 ImageList myimageList = new ImageList(); myimageList.Images.Add(Properties.Resources.icon); // 아이콘 1 myimageList.Images.Add(Properties.Resources.icon2); //아이콘 2 treeView1.ImageList = myimageList; // 아이콘 추가 TreeNode AllCreator = new TreeNode("이름"); AllCreator.ImageIndex = 0; AllCreator.SelectedImageIndex = 0; treeView1.Nodes.Add(AllCreator);
Read More
[C#] 편성표 사이트 API를 통한 데이터 출력

[C#] 편성표 사이트 API를 통한 데이터 출력

CSharp
[C#] 편성표 사이트 API를 통한 데이터 출력 제작환경 : Visual Studio 2017 필수 : .Net FrameWork 4.5 이상 지신이 필요해서 제작을 하였으며, 편성표 사이트에서 제공하는 API를 통해서 데이터를 가공해서 보여주게 되었습니다.API를 제공하는 사이트는 2곳이여서 개별적으로 접속을 해서 확인을 해야 하기에 2곳을 모두 모아서 처리해서 보여 주게 되어 있습니다.JSON처리를 하여서  데이터 처리를 하였습니다. ※ 현재 해당 프로그램의 공개는 하지 않고 있습니다. 상위 개발로 하위 버전을 배포하지 않고 있습니다.
Read More

[C#] 디렉토리, 파일 유무 체크

CSharp
// 디렉토리 유무 체크 System.IO.DirectoryInfo di = new System.IO.DirectoryInfo("디렉토리 경로"); if(di.Exists) { // 디렉토리 존재 } else { // 디렉토리 없음. } // 파일 유무 체크 string _Filestr = "파일 경로"; System.IO.FileInfo fi = new System.IO.FileInfo(_Filestr); if(fi.Exists) { // 파일 존재 } else { // 파일 없음. }
Read More

[C#] – Unix TimeStamp를 DateTime으로 변환하기

CSharp
C# – Unix TimeStamp를 DateTime으로 변환하기 Unix 시스템에서는 1970년 1월 1일(GMT)을 기준으로 초를 측정하여 시간을 나타냅니다. static DateTime ConvertFromUnixTimestamp(double timestamp) { DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0); return origin.AddSeconds(timestamp); } static double ConvertToUnixTimestamp(DateTime date) { DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0); TimeSpan diff = date - origin; return Math.Floor(diff.TotalSeconds); }
Read More

[C#] 숫자 3자리 마자 콤마 찍기

CSharp
int won = 123456890; Console.WriteLine(string.Format("{0:n0}", won)); Console.WriteLine(string.Format("{0}", won.ToString("n0"))); ; Console.WriteLine(string.Format("{0:#,##0}", won)); Console.WriteLine(string.Format("{0}", won.ToString("#,##0"))); //결과 //123,456,890 //123,456,890 //123,456,890 //123,456,890
Read More
[PHP] skechers.com 스크래핑 웹페이지 소스 얻기

[PHP] skechers.com 스크래핑 웹페이지 소스 얻기

CSharp, PHP
# 요구사항 1. 전체 상품을 모두 가져와야 한다. 2. 각 상품의 모든 보여주는 이미즈를 모두 저장해야 한다. 3. 각 상품의 고유한 정보는 정리해서 모두 등록한다. # 작업환경 Visual Stuido 2013 C# WinForm, MySQL PHP 7.0.4 (cli) 초기 작업은 C#으로 이줘졌지만은 이후 작업은 Local에서 순수 PHP (cli)만드로 작업이 되었습니다. 1. 각 상품의 대분류에 따라서 이미지 저장을 달리함. 일단 영문자, - 외에는 모두 제거 하여서 Web상에서 사용할 경우에도 주소를 획일한 시켜드림 각 이미지 파일은 원본 사이트의 순수 이름 그대로 인용하여서 처리 하였습니다. 2. 각 상품상세정보 페이지에서 가져온 원본 소스와 해당 정보를 추리하는 JSON값을 추출하여서 별도로 분리하여서, 웹스크래핑 당시의 전체 웹페이지를 눈으로 확인 할 수 있습니다. 아울러 JSON으로 별도로 저장해서 상품상세페이지에서 정보를 한눈에 볼 수 있도록 파일을 만들어 드렸습니다. 아래의 캡쳐 화면은 원본 사이트의 순서 소스를 그대로 저정한 화면이기때문에 바로 로컬에서 웹페지를 확인해…
Read More
[C#] 연봉정보 검색 후 상세정보 수집

[C#] 연봉정보 검색 후 상세정보 수집

CSharp
[C#] 연봉정보 검색 후 상세정보 수집 Jobkorea의 연봉검색을 통해서 전체 기업명과, 기업의 연봉정보를 직급결로 수집하는것입니다. 한번에 전체 수집도 있지만, 개별적으로 검색해서 수집을 할 수 있는 기능을 포함을 요청 하였습니다. 작업환경 Visual Studio 2013 C# WinForm HtmlAgilityPack 라이브러리 사용 요구사항 1. Jobkorea 로그인 하여서 연봉 검색후 파일 저장 요청 2. 전체 기업 목록을 수집 3. 원하는 기업 검색후 해당 기업만 선택후 수집 4. 각 기업의 상세정보의 직급별 정보를 요청함 작업 화면 (※ 작업화면의 결과는 일반적으로 공개되지 않으면은 일부 내용을 삭제 처리하여서 난독화 시켜 놓습니다.) 1. 초기 화면 1-1. 연봉 전체 검색시 화면 1-2. 개별 검색 화면 2. 목록 파일 생성 결과 화면 해당 목록의 파일을 생성합니다. 중복을 최대한 억제하기 위해서 개별적으로 날짜와 시간을 넣어서 파일명의 동일할 경우에 덮어쓰지 않도록 하였습니다. 파일은 CSV(Tab 구분)으로 생성하여서 파일을 생성한 화면 입니다. 3. 개별 상세…
Read More