[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

[Ubuntu] APM 설치

Linux
]# sudo apt-get install php ]# sudo apt-get install apache2 ]# sudo apt-get install mariadb-server ]# sudo apt-get install libapache2-mod-php7.0 ]# sudo mysql > SET PASSWORD FOR root@localhost = PASSWORD('원하는 패스워드 입력'); > quit; ]# sudo /usr/bin/mysql_secure_installation /* 이미 암호는 앞에서 지정했기 때문에 첫 번째 패스워드를 변경하겠냐는 질문에는 n을 나머지는 (이 설정에 대해서 잘 모르는 분이라면) 엔터키를 끝날 때까지 눌러 주세요. */ ]# sudo mysql > USE mysql; > UPDATE user SET plugin='' WHERE user='root'; > FLUSH privileges; > quit; ]# sudo apt-get install php-mysql INSERT INTO mysql.user (host,user,password) VALUES ('%','root',password('CAFE8848')); GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES; ]# sudo vi /etc/php/7.0/apache2/php.ini ]# sudo vi /etc/php/7.0/cli/php.ini /*** default_charset="UTF-8" data.timezone=”Asia/Seoul” mbstring.language = Korean mbstring.internal_encoding = UTF-8 mbstring.http_input = UTF-8 mbstring.http_output = pass mbstring.encoding_translation = On mbstring.detected_order = UTF-8 mbstring.substitute_charcter…
Read More

[Linux] Crontab에 프로세스 정지와 실행을 등록

Linux
[Linux] Crontab에 프로세스 정지와 실행을 등록 #!/bin/sh count=0 cd /opt/monitoring for line in `ps -ef | grep "monitoring" | grep -v grep | awk '{ printf("%s\n", $2); }'` do if [ $line -ge 1 ]; then #echo $line #프로세스 죽이기는 아래것중 아무것나 사용하면 됩니다. #kill -TERM $line kill -9 $line fi #echo $count if [ $count -eq 0 ]; then rm -rf /opt/monitoring/*.out /usr/bin/nohup /opt/monitoring/device.php & #echo bakgroundstart count=$(($count+1)) fi done
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

리눅스 로그 파일 정리

Linux
일단 사이즈가 가장 큰 것부터 정리하는 것이 좋겠죠.. . 보통은 messages 파일을 정리하시면 좋습니다. 지우지는 마시고 다음과 같이 하세요. cat /dev/null > /var/log/messages.2 cat /dev/null > /var/log/messages.1 messages 파일도 열어서 오래된 내용들은 삭제하셔도 됩니다. dmesg는 부팅시 기록되는 정보들인데 특별한 경우를 제외하고는 별로 필요가 없습니다. cat /dev/null > dmesg cron은 주기적으로 실행시킨 명령들에 대한 정보인데 해킹을 당한 경우가 아니라면 별로 필요 없습니다. cat /dev/null > cron.3 cat /dev/null > cron.2 cat /dev/null > cron.1 vsftp.log는 ftp를 통해 주고 받은 파일들에 대한 정보, ftp 서버에 로그인했던 사용자에 대한 정보들이 있는데 역시 별로 필요없습니다. cat vsftp.log.1 cat vsftp.log.2 cat vsftp.log.3 maillog는 메일서버와 관련된 로그입니다. 필요없으시면 이 역시 마찬가지로 작업.. secure는 접속 기록과 su 명령과 관련된 기록입니다. 필요없으시면 이 역시 마찬가지로 작업.. 이 정도면 대충 정리될 것 같은데요.. 일단 사이즈가 가장 큰 것부터 정리하는…
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

[윈도우] Windows10 성능 안정화 팁

Windows
윈도우10 성능 안정화 팁 1. 빠른 시작 끄지 제어판 > 하드웨어 및 소리 > 전원옵션 > 시스템 설정 "종료설정" 에서 "빠른 시작 켜기(권장)" 을 체크 해제 합니다. 2. HPET 끄기 HPET는 고정밀 타이머로 8코어 이상에서는 오히려 문제를 일으키는 기능으로 다음과 같은 증상을 만듭니다. a. 화면 티어링 b. 1000 폴링 레이트로 사용하는 마우스 포인터의 튀는 현상 c. 화면과 소리의 싱크 안맞음 CMD 관리자 모드 에서 "bcdedit /set useplatformclock false" 명령어로 기능을 끕니다.
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