AWS 로 이전중….완료!

일반
일단 AWS로 하나 하나 이전중입니다. 기존 서버도 좋지만 AWS에 이제 보금자리를 마련하력고 합니다. 뭔가 할려고 하면은 기존에는 많은 부분이 막혀서 제대로 하지를 못해서..... AWS에 서비스중 하나로 이전을 하였습니다. 이곳에서 이제 마지막 보급자리를 마련하지 않을까 싶습니다. 한달 넘게 테스트를 해보니 한국에서 싼편인 서버호스팅보다도 성능이 준수하고 사용하기에 편해서 다른곳으로 눈길이 전혀 가지 않을것 같아서 입니다. 이런것도 몇년이 지나면은 다르겠지만 개인이 가지고 있기에는 이곳의 서비스가 너무나도 준수해서 도저히 뿌리칠수 없다는 생각이 들어서 이곳에서 웹에 관련된 일을 멈출때까지는 벗어나지 못하것 이라고 생각이 듭니다.
Read More
[C#] [Build] 빌드시 EXE 에 DLL 포함 시키기

[C#] [Build] 빌드시 EXE 에 DLL 포함 시키기

CSharp
VS에서 빌드시에 참조 리소스등 DLL등을 별도로 포함을 해야 하는데, 보기보다 이작업이 상당히 귀찮은 작업니다. 물론 인스톨러를 사용하면은 간단하지만 단일 파일로 배포를 할 경우에 여러가지 파일이 있으면 사람들이 싫어 하는 편입니다. 그래서 EXE파일을 빌드 할 경우에 리소소를 포함 시켜서 배포를 하면은 사용하는 사람도 편하고 배포 하는 사람도 편하다는 생각에 기록을 남깁니다. nuget에서 Costura.Fody를 검색하신후에 설치하시면 자동으로 빌드시에 DLL등이 EXE 파일에 포함되어 집니다. nuget에서 캡쳐함 이미지
Read More

왜? 접속하시는지요?

일반
이 블로그는 정말 개인적으로 기록할 글을 남기기 때문에 공개되는 형태가 아닙니다.   그런데 접속을 하는 이유는 블로그를 무단으로 이용하려는 목적이 다분히 있다고 생각이 듭니다.   정보가 있는것도 아니고, 무언가를 전달하지도 않기에 방문의 목적이 뚜렷히 증가할 이유가 없는 부분이라서 방문의 이유를 도저히 생각을 할수가 없습니다.   검색봇이 오는것이야 막지 않지만 접속에 대해서 대부분 차단을 위주로 할것이고 그에 맞춰서 프로그램을 적용해서 계속 차단할 생각이니 이 블로그에 접속 하지 말아 주십시오.
Read More

[C#] WinForm 시스템 메뉴에 나만의 메뉴 추가하기

CSharp
using System; using System.Windows.Forms; using System.Runtime.InteropServices; namespace CaptionTimetableSupporet { public partial class MainForm : Form { // P/Invoke constants private const int WM_SYSCOMMAND = 0x112; private const int MF_STRING = 0x0; private const int MF_SEPARATOR = 0x800; // P/Invoke declarations [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool AppendMenu(IntPtr hMenu, int uFlags, int uIDNewItem, string lpNewItem); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool InsertMenu(IntPtr hMenu, int uPosition, int uFlags, int uIDNewItem, string lpNewItem); // ID for the About item on the system menu private int SYSMENU_ABOUT_ID = 0x1; protected override void OnHandleCreated(EventArgs e) { base.OnHandleCreated(e); // Get a handle to a copy of this form's system (window) menu…
Read More

[C#] Environment 를 통해 시스템 정보, OS 버전알아오기

CSharp
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // 현재 작업 디렉터리의 정규화된 경로를 가져오거나 설정합니다. txtWindowCode.Text += "@ 디렉토리 경로 : " + Environment.CurrentDirectory + "\r\n"; // 프로세스의 종료 코드를 가져오거나 설정합니다. txtWindowCode.Text += "@ 프로세스종료코드 : " + Environment.ExitCode + "\r\n"; // 이 로컬 컴퓨터의 NetBIOS 이름을 가져옵니다. txtWindowCode.Text += "@ NetBIOS 이름 : " + Environment.MachineName + "\r\n"; // OSVersion txtWindowCode.Text += "@ OSVersion : " + Environment.OSVersion.ToString() + "\r\n"; // 시스템 디렉터리의 정규화된 경로를 가져옵니다. txtWindowCode.Text += "@ 시스템디렉토리 : " + Environment.SystemDirectory + "\r\n"; // 시스템 시작 이후 경과 시간(밀리초)을 가져옵니다. txtWindowCode.Text +=…
Read More

[C#] 윈도우 OS 정보 얻기

CSharp
OperatingSystem os = System.Environment.OSVersion; Console.WriteLine("플랫폼 : " + os.Platform); Console.WriteLine("서비스팩 : " + os.ServicePack); Console.WriteLine("버전 : " + os.Version); Console.WriteLine("버전 : " + os.Version); Console.WriteLine("버전 문자열 : " + os.VersionString); Console.WriteLine("CLR버전 : " + System.Environment.Version); Console.ReadLine(); // 콘솔에서 확인할수 있도록 잠시 멈춤 사용자의 정보를 획득해야 될 일이 있을 경우에 위 기능을 사용해서 처리 할 수 있습니다.
Read More

[C/C++] 시간표시

프로그램
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <time.h> int main() { time_t timer; struct tm* t; timer = time(NULL); // 현재 시각을 초 단위로 얻기 t = localtime(&timer); // 초 단위의 시간을 분리하여 구조체에 넣기 printf("%d", t->tm_year + 1900); //현재 년 printf("%d", t->tm_mon + 1); //현재 월 printf("%d", t->tm_mday); //현재 일 printf("%d:", t->tm_hour); //현재 시 printf("%d:", t->tm_min); //현재 분 printf("%d", t->tm_sec); //현재 초 }
Read More

[C#] Picturebox를 투명하게

CSharp
LicenseLabel.Parent = pictureBox1; LicenseLabel.BackColor = Color.Transparent; LicenseLabel.BringToFront(); LicenseLabel.BackColor = Color.Transparent; LicenseLabel.Width = this.Width; LicenseLabel.Left = 0; LicenseLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; LicenseLabel.Parent = pictureBox1;
Read More

[C#] WebBrowser version 변경

CSharp
Program.cs 에서 다음을 사용하도록 합니다. using System.Runtime.InteropServices; using Microsoft.Win32; 레지스트리에 세팅하고 값이 정상적인지 체크하도록 하는 함수 입니다. private static void SetIEVersioneKeyforWebBrowserControl(string appName, int ieval) { string RegKeyPath = ""; RegistryKey Regkey = null; try { // x86, x64 구분 if (Environment.Is64BitProcess) { RegKeyPath = @"SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"; } else { RegKeyPath = @"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"; } // try { Regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(RegKeyPath, true); } catch (Exception ex) { Console.WriteLine(" 관리자 권한이 아니여서 접근이 불가능 합니다."); } finally { // 레지스트리의 값을 체크 if (Regkey == null) { // 찾지 못할 경우 그냥 PASS } else { // 실행 프로세스가 등록되어 있는지 값을 가져오기 string FindAppkey = Convert.ToString(Regkey.GetValue(appName)); // 이미 세팅 되어 있을 경우 if (FindAppkey == ieval.ToString()) { Regkey.Close(); } else { // 값 세팅하기 Regkey.SetValue(appName, unchecked((int)ieval), RegistryValueKind.DWord); //check for the key…
Read More

[C#] 폰트 설치 여부 체크해서 설정 도와주기

CSharp
class FontLibraryClass { public class FontLibrary { private string FontsFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Fonts); private static FontLibrary inst = new FontLibrary(); public PrivateFontCollection privateFont = new PrivateFontCollection(); /// <summary> /// /// </summary> public static FontFamily[] Families { get { return inst.privateFont.Families; } } /// <summary> /// /// </summary> public FontLibrary() { AddFontFromNanumgothic(); } /// <summary> /// 리소스에 포함된 폰트 파일을 로딩 /// </summary> private void AddFontFromMemory() { /* List<byte[]> fonts = new List<byte[]>(); fonts.Add(Properties.Resources.NanumGothic); fonts.Add(Properties.Resources.NanumGothicBold); foreach (byte[] FontData in fonts) { IntPtr fontBuffer = Marshal.AllocCoTaskMem(FontData.Length); Marshal.Copy(FontData, 0, fontBuffer, FontData.Length); privateFont.AddMemoryFont(fontBuffer, FontData.Length); } */ } /// <summary> /// 폰트 파일을 추가함. /// </summary> private void AddFontFromNanumgothic() { privateFont.AddFontFile(FontsFolder + @"\\NANUMGOTHIC.TTF"); } } /// <summary> /// 폰트 존재 여부 체크 /// </summary> public void FontInstallCheck() { bool FontInstallBoolNanum = false; // FontFamily[] fonts =…
Read More
[C#] 관리자 권한으로 실행하기

[C#] 관리자 권한으로 실행하기

CSharp
해당 작업은 Program.cs 에서 작업을 합니다. using System.Security.Principal; using System.Diagnostics; /// <summary> /// 관리자 권한 체크 /// </summary> /// <returns></returns> public static bool IsAdministrator() { WindowsIdentity identity = WindowsIdentity.GetCurrent(); if (null != identity) { WindowsPrincipal principal = new WindowsPrincipal(identity); return principal.IsInRole(WindowsBuiltInRole.Administrator); } return false; } 메인 실행전에 관리자 권한으로 실행 하도록 하면 됩니다. [STAThread] static void Main() { if (IsAdministrator() == false) { try { ProcessStartInfo procInfo = new ProcessStartInfo(); procInfo.UseShellExecute = true; procInfo.FileName = Application.ExecutablePath; procInfo.WorkingDirectory = Environment.CurrentDirectory; procInfo.Verb = "runas"; Process.Start(procInfo); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } return; } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } 위 방법으로로 처리 할 수 있지만 다른 방법도 있습니다. 프로그램  속성에서 보안의 "ClickOnce"를 선택합니다. 그러면은 위 처럼 "app.mainfest"가 생기게 됩니다. ※ 이방법을 할 경우에는 프로그램에 아이콘에 방패 모양이 생기게 됩니다. 원래 기본값이 "asInvoker'…
Read More

[MySQL] 상태가 sleep 인것 정리하기

Database
#!/bin/sh NOW=$(date +"%m-%d-%Y") FILE="/root/sleep_processes.$NOW.txt" /var/lib/mysql-5.1.40/bin/mysql -uroot --password='password' -e "select concat('KILL ',id,';') into outfile '/tmp/sleep_processes.txt' from information_schema.processlist where State = 'User sleep'" /var/lib/mysql-5.1.40/bin/mysql -uroot --password='password' -e "source /tmp/sleep_processes.txt;" if [ -s "/tmp/sleep_processes.txt" ]; then cp /tmp/sleep_processes.txt $FILE fi rm -f /tmp/sleep_processes.txt https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=81951&page=2
Read More

도메인 하나 버렸습니다….

일반
도메인 하나 버렸습니다....   가진 도메인인이 그렇게 많지는 않지만 용도에 맞게 구분을 할려다가 오히려 복잡하고 하나도 통일되지 않아서 도메인 1개는 이용기간이 남긴 하지만 그냥 버렸습니다. 그래도 누군가 가져가는것은 싫어서 일단 공사중으로 변경을 해 놓고 있습니다.     DNS를 관리할 수 있으니 이제는 서브도메인으로 이름을 관리하면 될것 같습니다. 도메인 1개로 여러가지 서비스를 통합하고 서로 연동되게 만들고 있어서 1개의 도메인이 편한편이기도 합니다.   아직 공개 하지 못하지만 차곡 차곡 제가 생각하는 기능들이 정리되어서 서로 결합(? 합체) 하면서 이뤄지기 때문에 단독서비스 처럼 움직이기 위해서 합칠 이유가 있을것 같습니다.
Read More