도메인 정리중…

일상
현재 개인적으로 운영 도메인이 3개가 됩니다. 그외에 기기들과 함께 사용하다보니 도메인이 많아져서 분리해서 운영하기도 힘들고 해서 현재 정리중에 있습니다. 하루 아침에 변경을 할 수도 있는 도메인이 있는가 하면은 어느정도 시간을 들여서 변경을 해야 하는 도메인이 존재해서 하나하나 순차적으로 도메인에 대해서 접속 경로를 변경을 하고 이동중에 있습니다. 아마 변경으 완료 되고 나면은 1개로 축소 되지 싶은데 1개 도메인이 정말 버리기 아까워서 어떻게 해야 하나 현재 고민중입니다. 이것도 정리가 될려면은 연말이 되어야 하기 때문에 시간이 걸리지 않을까싶습니다.
Read More

FileWatch

CSharp
private void initWatcher() { string EqpDirPath = @"C:\TEST\"; FileSystemWatcher watcher = new FileSystemWatcher(); //1. FileSystemWatcher 생성자 호출 watcher.Path = EqpDirPath; //2. 감시할 폴더 설정(디렉토리) // 3. 감시할 항목들 설정 (파일 생성, 크기, 이름., 마지막 접근 변경등..) watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.DirectoryName | NotifyFilters.Size | NotifyFilters.LastAccess | NotifyFilters.CreationTime | NotifyFilters.LastWrite; //감시할 파일 유형 선택 예) *.* 모든 파일 watcher.Filter = "*.*"; // watcher.IncludeSubdirectories = true; // 4. 감시할 이벤트 설정 (생성, 변경..) watcher.Created += new FileSystemEventHandler(Changed); watcher.Changed += new FileSystemEventHandler(Changed); watcher.Renamed += new RenamedEventHandler(Renamed); // 5. FIleSystemWatcher 감시 모니터링 활성화 watcher.EnableRaisingEvents = true; } // 6. 감시할 폴더 내부 변경시 event 호출 private void Changed(object source, FileSystemEventArgs e) { MessageBox.Show(e.FullPath); } private void Renamed(object source, RenamedEventArgs e) { MessageBox.Show(e.FullPath); }
Read More

HTTPS를 HTTP로 리디렉션하는 방법

Linux
SSL 보안서버 인증서가 적용된 상태에서 HTTPS를 HTTP로 리디렉션하고 싶은 경우, 다음 코드를 .htaccess 파일에 추가하면 됩니다. RewriteCond %{HTTPS} on RewriteEngine On RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} 위의 코드가 잘 작동하지 않으면, 다음 코드를 시도해볼 수 있습니다. Options +FollowSymLinks RewriteEngine On RewriteCond %{ENV:HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] .conf 파일을 사용하는 경우: ServerName domain.com RewriteEngine On RewriteCond %{HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} SSLEngine on SSLCertificateFile /etc/apache2/ssl/domain.crt SSLCertificateKeyFile /etc/apache2/ssl/domain.key SSLCACertificateFile /etc/apache2/ssl/domain.crt Siteground에서는 다음과 같은 코드를 제안하네요. (출처: Redirect from HTTPS to HTTP) Redirect HTTPS to HTTP RewriteCond %{HTTP:X-Forwarded-Proto} =https RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 참고로 위의 코드는 모두 유효한 SSL 인증서가 있는 경우에만 작동합니다. 유효한 SSL 인증서가 없는 경우 https://…로 접속하면 보안인증서 오류가 표시되고 http://…로 리디렉션되지 않습니다.
Read More

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