[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

[Ubuntu] 원격 IP로 MySQL(MariaDB)에 접속이 되지 않을 때의 해법

Database
원격 IP로 MySQL(MariaDB)에 접속이 되지 않을 때의 해법 ※ Ubuntu 16.04 MariaDb 10.0의 상황과 원격 IP의 주소가 111.222.33.44라고 가정한다. Java에서 다음과 같이 원격의 MySQL에 접속을 시도할때 String url = "jdbc:mysql://111.222.33.44:3306/나의DB명"; Connection refused 에러가 발생하거나 telnet을 이용해서 MySQL이 설치된 IP의 3306포트로 접속시 연결이 되지 않을 때의 해법이다. 네트워크의 연결 상태에따라 다양한 이유가 있을 수 있다. 예를들어 공유기 아래 서버가 물려있을 때 공유기에서 3306에 대한 포트 포워딩이 되어있지 않다면 아래의 방법이 통할수 없을 것이다. 다양한 원인들이 있으나 본 포스트는 3306 포트에 listening이 외부 IP로 설정되지 않고 127.0.0.1로 설정되어 있을 경우에 대한 해법이다. telnet을 이용해서 해당 IP로 3306포트로 접속이 되는지부터 확인해보자. 일단 Windows에서는 기본적으로 telnet을 사용할수 없는 상태로 설정되어 있다. 다음과 같이 하여 telnet을 사용할수 있도록 변경한다. 제어판 - 프로그램 제거 또는 변경 - Windows 기능 켜기/끄기 - 텔넷 클라이언트 체크 MS-DOS 창에서…
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

쉘스크립트 비교연산자 활용

프로그램
쉘스크립트 비교연산자 활용 정수 비교 -eq     같음     if [ "$a" -eq "$b" ] -ne     같지 않음     if [ "$a" -ne "$b" ] -gt     더 큼     if ["$a" -gt "$b" ] -ge     더 크거나 같음     if [ "$a" -ge "$b" ] -lt     더 작음     if [ "$a" -lt "$b" ] -le     더 작거나 같음     if [ "$a" -le "$b" ] <     더 작음(이중 소괄호에서)     (("$a" < "$b")) <=     더 작거나 같음(이중 소괄호에서)     (("$a" <= "$b")) >     더 큼(이중 소괄호에서)     (("$a" > "$b")) >=     더 크거나 같음(이중 소괄호에서)     (("$a" >= "$b")) 문자열 비교 =     같음     if [ "$a" = "$b" ] ==     같음     if [ "$a" == "$b"…
Read More

[PHP] MySQL 데이터 출력

PHP
1. mysql_fetch_row()mysql_fetch_row()는 데이터를 0으로 시작하는 숫자형 인덱스 배열로 반환합니다. $row = mysql_fetch_row($result); echo $row[0]; 2. mysql_fetch_assoc()mysql_fetch_assoc()는 데이터를 문자형 연관 배열로 반환합니다.배열의 키 이름으로는 필드의 이름을 갖습니다. $row = mysql_fetch_assoc($result); echo $row['key']; 3. mysql_fetch_array()mysql_fetch_array()는 $result_type의 값에 따라 반환될 배열의 형태가 다릅니다. $result_type의 값으로는 아래와 같은 상수가 올 수 있으며, 기본값은 MYSQL_BOTH입니다.  - MYSQL_NUM: 이 상수를 사용하면 숫자형 인덱스 배열을 반환합니다.  =  mysql_fetch_row()  - MYSQL_ASSOC: 이 상수를 사용하면 문자형 연관 배열을 반환합니다.  =  mysql_fetch_assoc()  - MYSQL_BOTH: 이 상수를 사용하면 인덱스 배열과 연관 배열을 동시에 반환합니다. ex) $row = mysql_fetch_array($result, MYSQL_BOTH) echo $row['key']; 4. mysql_result()mysql_result($query,0,0);    =>  ' 0행 0열 값 'mysql_result($query,0,1)     =>  ' 0행 1열 값 'mysql_result($query,1,1)     =>  ' 1행 1열 값 ' 5. 주의 사항mysql_fetch_row(), mysql_fetch_assoc(), mysql_fetch_array() 세 함수는 한 행에서 데이터를 읽습니다.또한 데이터를 읽은 후 함수 내부의 포인터를 증가시켜 다시…
Read More

[MySQL]: “Access denied for user ‘debian-sys-maint’@’localhost’”

Database
# # sudo cat /etc/mysql/debian.cnf # 파일 수정 # Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = 비밀번호 socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] user = debian-sys-maint password = 비밀번호 socket = /var/run/mysqld/mysqld.sock basedir = /usr MySQL 로그인 #mysql -u root -p <password> DB 에 비밀번호 적용 mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '비밀번호'; 재시작 #sudo /etc/init.d/mysql restart
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

[PHP] twitter API를 통해서 데이터 얻기

PHP
API 파일 출처 : http://github.com/j7mbo/twitter-api-php 위 사이트에서 API 파일을 획득 하였으며, 해당 기능을 위해서 사용을 합니다.트위터에 글을 올릴수도 있지만 현재 제가 사용하는 기능은 특정 계정의 글을 수집해서 서버에 저장 하기 위해서 필요한 기능입니다.API 파일에는 그 밖에도 많은 기능이 있지만은 전 일방적으로 글 내용을 가져오는 기능으로만 코드를 정리 합니다. /** * API 사용을 위한 기본 설정 **/ $SETTINGS = array( 'consumer_key' => "트위터에서 제공해주는 값", 'consumer_secret' => "트위터에서 제공해주는 값", 'oauth_access_token' => "트위터에서 제공해주는 값", 'oauth_access_token_secret' => "트위터에서 제공해주는 값" ); $URL = 'https://api.twitter.com/1.1/statuses/user_timeline.json'; /** * 트위터에 요청하고 결과값 받기 **/ $getfield = '?screen_name=트위터 계정명&count=받아올 숫자'; $twitterObj = new TwitterAPIExchange($SETTINGS); $response = $twitterObj->setGetfield($getfield)->buildOauth($URL, 'GET')->performRequest(); $response = json_decode($response, true); 이 이후 설정을 자신의 결과값을 보고 필요한 형태로 가공을 하면 됩니다.현재 가공 정보가 제가 독자적으로 가공하는 정보여서 기본 형태를 새롭게 만들경우에 해당 글을…
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

[PHP] 랜덤 문자열 생성

PHP
코딩시 가끔 무작위문자열이 필요할때가 있는데 시스템이나 내장함수에서 제공하는 방식은 원하는 기준으로 맞추기가 번거롭다.단순 비교만 사용되는 토큰이나 인증코드 등은 기본난수를 해시화해서 다루면 되지만 암호찾기 등으로 변경된 암호를 사용자에게 알릴 필요가 있을때에는 상황에 따라 정돈된 무작위문자열이 필요한 경우가 있다.랜덤문자를 원하는 조합으로 원하는 길이만큼 생성할 수 있도록 만들어 보았다. function get_random_string($type = '', $len = 10) {     $lowercase = 'abcdefghijklmnopqrstuvwxyz';     $uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';     $numeric = '0123456789';     $special = '`~!@#$%^&*()-_=+\\|[{]};:\'",<.>/?';     $key = '';     $token = '';     if ($type == '') {         $key = $lowercase.$uppercase.$numeric;     } else {         if (strpos($type,'09') > -1) $key .= $numeric;         if (strpos($type,'az') > -1) $key .= $lowercase;         if (strpos($type,'AZ') > -1) $key .= $uppercase;         if (strpos($type,'$') > -1) $key .= $special;     }     for ($i =…
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