IN cmd
>mode con cols=80 lines=50

'c# 언어' 카테고리의 다른 글

basic 3*3 frm hexa,cs,code  (0) 2023.07.13
Xamarin 1.1 자마린 소개,교육자료  (0) 2023.07.10
REDIS 필수정리  (0) 2022.08.31
객체 지향(Object oriented) 프로그래밍  (0) 2022.06.17
tris::common_chek(int direction)::final  (0) 2022.04.18



/*
public int CompareTo (Version? value);

매개 변수
현재 Version 개체와 비교할 Version 개체이거나, null입니다.

반환 값 의미
0보다 작음 현재 Version 개체가 value 이전의 버전입니다.
0 현재 Version 개체가 value와 같은 버전입니다.
0보다 큼 현재 Version 개체가 value 이후의 버전이거나 value이 null입니다.
*/
/*
설명

이 메서드는 인터페이스를 System.IComparable<T> 구현하고 매개 변수의 받은 편지함을 value 해제할 필요가 없으므로 메서드보다 CompareTo 약간 더 잘 수행합니다.
중요도를 줄이는 의 구성 요소는 Version 주, 부, 빌드 및 수정입니다. 
알 수 없는 구성 요소는 알려진 구성 요소보다 오래된 것으로 간주됩니다. 
예를 들면 다음과 같습니다.

버전 1.1은 버전 1.1.0보다 이전 버전입니다.
버전 1.1은 버전 1.1.1보다 이전 버전입니다.
버전 1.1은 버전 1.1.2.3보다 이전 버전입니다.
버전 1.1.2는 버전 1.1.2.4보다 이전 버전입니다.
버전 1.2.5는 버전 1.2.3.4보다 최신 버전입니다.
*/

using System;

class Program
{
    public static void Main()
    {
        VersionManage nm = new VersionManage();
nm.running();
    }
}
class VersionManage
{
    public void running()
    {
        Version serverVersion = new Version("23.06.07.01");
        Version localVersion = new Version("10.1.20");

if (serverVersion.CompareTo((object)localVersion) > 0)
{
    Console.WriteLine("UPDATE NEEDED!!");
}
else
{
    Console.WriteLine("SAME!!");
}
    }
}

/*
C:\Users\xterm\Downloads>aa12
UPDATE NEEDED!!
*/

    

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;

public class MyFormControl : Form
{
    public delegate void AddListItem(String myString);
    public AddListItem myDelegate;
    private Button myButton;
    private Thread myThread;
    private ListBox myListBox;
    public MyFormControl()
    {
        myButton = new Button();
        myListBox = new ListBox();
        myButton.Location = new Point(72, 160);
        myButton.Size = new Size(152, 32);
        myButton.TabIndex = 1;
        myButton.Text = "Add items in list box";
        myButton.Click += new EventHandler(Button_Click);
        myListBox.Location = new Point(48, 32);
        myListBox.Name = "myListBox";
        myListBox.Name = "myListBox";
        myListBox.Size = new Size(200, 95);
        myListBox.TabIndex = 2;
        ClientSize = new Size(292, 273);
        Controls.AddRange(new Control[] {myListBox,myButton});
        Text = " 'Control_Invoke' example ";
        myDelegate = new AddListItem(AddListItemMethod);
    }
    static void Main()
    {
        MyFormControl myForm = new MyFormControl();
        myForm.ShowDialog();
    }
    public void AddListItemMethod(String myString)
    {
        myListBox.Items.Add(myString);
    }
    private void Button_Click(object sender, EventArgs e)
    {
        myThread = new Thread(new ThreadStart(ThreadFunction));
        myThread.Start();
    }
    private void ThreadFunction()
    {
        MyThreadClass myThreadClassObject  = new MyThreadClass(this);
        myThreadClassObject.Run();
    }
}

//In Logic,,,,,,Thread, When must control "UI Control", then, "Invoke", "BeginInvoke" use ,,,,!!!!!!
//In Logic,,,,,,Thread, When must control "UI Control", then, "Invoke", "BeginInvoke" use ,,,,!!!!!!
public class MyThreadClass
{
    MyFormControl myFormControl1;
    public MyThreadClass(MyFormControl myForm)
    {
        myFormControl1 = myForm;
    }
    String myString;

    public void Run()
    {
        for (int i = 1; i <= 5; i++)
        {
            myString = "Step number " + i.ToString() + " executed";
            Thread.Sleep(1000);

            myFormControl1.Invoke(myFormControl1.myDelegate,
            new Object[] {myString});
        }
    }
}

/*
Invoke란
1. Control.Invoke
> 컨트롤의 내부 핸들이 있는 스레드에서 지정된 대리자를 실행하는 방법
: UI 컨트롤 스레드에서 실행되지만 호출 스레드가 실행되기 앞서 기존 스레드 완료를 기다리고 호출된다.

2. Delegate.Invoke
> 동일한 스레드에서 사용할 대리자를 동기적으로 실행하는 방법

** Invoke 정리
> 컨트롤의 본인 스레드가 아닌 다른 스레드를 이용하여 해당 컨트롤 객체를 동기식으로 실행하는 방법이다.
*/

/*
Invoke 메서드 구조

public Object Invoke(
        Delegate method, --대리자 메서드
        params Object[] args -- 대리자 파라미터 (생략 가능)
)
*/

APMFileDownLoadDlg.cpp
0.03MB
APMFileDownLoad.cpp
0.00MB
MM.cs
0.00MB


/*
텍스트파일을 모두 대문자로 바꾸어서 문자열을 찾을때에,ㅡㅡㅡㅡㅡㅡ
*/


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.ComponentModel;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Timers;
using System.Diagnostics;
using System.Xml.XPath;
using System.Reflection;
using System.Collections;
using System.Xml;
using System.IO;
using System.Net;


class Program
{
    public static void Main()
    {
        MMMMMMMM nm = new MMMMMMMM();
nm.running();
    }
}
class MMMMMMMM
{    
    void ____read_txt(string filename)
    {
        int kk, ii;
        string mmmText = "";
        string mmmsubText = "";
        string ____findStr = "SERVERINFO.XML";

        mmmText = Syste m.IO.File.ReadAllText(filename); 
        mmmText = mmmText.ToUpper();
        Console.WriteLine(mmmText);
    }
    public void running()
    {
        int kk;

        string folderName = Syste m.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName); 
        string[] files = Directory.GetFiles(folderName, "*", SearchOption.AllDirectories);

        for(kk=0; kk<files.Length; kk++)
        {
            Console.WriteLine(files[kk]);

            if(files[kk].IndexOf(".cpp") >=0)
            {
                ____read_txt(files[kk]);
            }
        }
    }
}




/*
기존에 사용해왔던 방식대로, 구조체를 구성한다면, 아무런 문제없이 변수를 사용할수 있다.
즉 public만 사용해서, 코드를 구상한다고 생각하면, 기존처럼 코딩해도 아무런 문제가 없음,,,,,,,,,,,
그러나, 변수에 직접접근을 허락하지 않게 하려면, private, public의 기법을 사용해서 아래와 같이 접근할수 있다. 
*/

/*
private, public을 사용하면 좋은예제는, 
주식에서 삼성전자 현재가격을 내부  private 변수에 세팅하고, public 변수를 통해서 삼성전자현재 가격을 얻는다면
아주좋은 케이스일것 같다.
삼성전자현재가 가격은 마음대로 누구나가 셋팅할수 없는 변수라고 생각하면 된다.
웹페이지등에서 조회시에 public 변수로 조회하면 적당할듯하다.
*/

namespace TailCommon{
public class StockHyunPriceSearch
{
    private static StockHyunPriceSearch hyun;
    private StockHyunPriceSearch() { }
    public static StockHyunPriceSearch GetInstance
    {
        get
        {
            if (hyun == null)
            hyun = new StockHyunPriceSearch();
            return hyun;
        }
    }
    private IntPtr hyunValue;
    public IntPtr HyunValue
    {
        get { return hyunValue; }
    }
    public IntPtr SecurityNeededHyunValue
    {
        set { hyunValue = value; }
    }
}}

ex)
using namespace & DLL참조를해서 사용시에, 아래와 같은 코드는 허용될까(?),  곰곰히 한번 생각해보자.

using TailCommon;

TAILMemory.GetInstance.tailHandle = 10; (?)
Console.WriteLine(TAILMemory.GetInstance.tailHandle); (?)

/*
값의 입력은 private로
값의 조회는 public 으로,ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
*/



Remove item from Dropdownitems in a context menustrip(?)

void DeleteItem()
{
    foreach (ToolStripItem oSubitem in ListMenuItem.DropDownItems)
    {
        if (oSubitem is ToolStripMenuItem)
        {
            if (oSubitem.Text.StartsWith("Show"))
            {
                ListMenuItem.DropDownItems.RemoveAt(1);
            }
       }
   }
}

//Specific.FILE. 1 Line.Read & 1 Line Append Write,,,,,,


using System;
using System.IO;
using System.Text;

class Program
{
    public static void Main(string[] args)
    {
        if(args.Length == 1) 
        {
            RadioFileManage nm = new RadioFileManage();
            nm.open_radio_music(args[0]);
         }
    }
}       
class RadioFileManage
{
    public void open_radio_music(string fileName)
    {
            if (File.Exists(fileName))
            {
                using (StreamReader reader = new StreamReader(fileName, Encoding.Default))
                {
                    string line;
                    while ((line = reader.ReadLine()) != null)
                    {
                        int kk = line.IndexOf("2부");
                        if( !( kk >= 0))
                        {
                            if (true)
                            {
                            string ____path = @"default_" + fileName;
                            using (StreamWriter sw = File.AppendText(____path))
                            {
                                sw.WriteLine(line);
                            }
                       }
                }
            }
        }
    }
}

csc.exe /reference:*.dll /out:*.exe /recurse:*.cs

menu_build.cs
0.00MB


WindowsBase.dll/PresentationFramework.DLL/PresentationCore.DLL
WindowsBase.dll : WPF를 위한 기본 서비스 제공.
PresentationCore.dll
PresentationFramework.dll : using System.Windows.Controls

1. WPF개요

Windows Presentation Foundation
MS의 UI, 미디어 및 문서가 통합된 프로그래밍 모델(닷넷 3.0에 소개)
브라우저와 데스크톱에서 동시에 실행될 수 있는 프로그래밍 모델 제공.
Markup(XAML)과 코드 프로그래밍을 동시에 지원한다.
디자인이 가능한 프로그램 모델을 개발하였다. (Blend 프로그램으로 가능)
WPF는 DirectX를 Application UI에 통합했다.

2. WPF Architecture

 PresentationFramework
 PresentationCore
 Common Language Runtime

milcore 
 User32 DirectX 
 Kernel


PresentationFramework, PresentationCore : 순수한 관리코드로만 구성. 서로 분리되어 있음.
PresentationCore : API형태의 라이브러리, 컴포넌트 형태


WPF관련 어셈블리
WindowsBase.dll : WPF를 위한 기본 서비스 제공.
  DispatcherObject 
    Dispatcher : 복수의 작업을 대기시킬 수 있는 큐.
    namespace : System.Windows.Threading
    ※ STA : 실행 context에 하나의 쓰레드만 존재.
    Frame Queueing 가능 : Invoke(), BeginInvoke()

  DependencyObject
    WPF의 속성 시스템의 지원을 받기 위해 필요.
    프레임 수준의 바인딩 종속성, 손쉬운 데이터 공유 등을 객체 인스턴스에 저장하지 않고 가능.
    데이터 구조 중심 프로그래밍(XAML에서 이벤트와 액션까지 모델화하고 선언적으로 처리)

PresentationCore.dll
  Visual
    랜더링을 담당하는 객체. 컨트롤 클래스의 시작점. micore 컴포넌트와 밀접한 관련.
    WPF는 멀리 있는 객체를 먼저 그리고 가까이 있는 객체를 나중에 그린다.
    주요 기능 : 출력 표시. 변환, 클리핑, 적중 테스트, 경계 상자 계산.
    입출력, 이벤트 레이아웃 X

  UIElement
    Layout, 입력 및 이벤트 등의 핵심 기능을 담당.
    Measure : 크기를 정의, Arrange : 위치와 정렬. (2단계 레이아웃)
    입력과 Command의 분리 가능. -> CommandBinding으로 관리 가능.

PresentationFramework.dll
  FrameworkElement
    WPF 프레임워크 수준 요소 클래스와 UIElement 서비스를 연결해 주는 지점.
    레이아웃 시스템 정의 : 핵심 기능 손상 없이 새로운 레이아웃을 정의 가능.
    논리적 트리 : markup을 이용해 구조를 표현할 때 이용.
    객체 수명 이벤트 : Initialized, Loaded, Unloaded 세가지 지원.
    데이터 바인딩 및 동적 리소스 참조 지원 : Expression으로 바인딩 -> Framework는 해석.
    스타일 : 컨트롤의 외관을 변형하기 위해 사용.
    에니메이션 지원 

  Control
    탬플릿 지원 기능 : UI를 편리하게 수정 가능. 속성, 이벤트, Command, Template 기능 지원.
     XAML을 통한 탬플릿 정의 -> 랜더링 시 스트립트를 읽어 들여 반영

/*
csc.exe 사용하기. 옵션포함
*/

-----,----,---- 왠만한건,다 된다.
ex)csc.exe /reference:APMPublicLib.DLL,Newtonsoft.Json.Net20.DLL /out:GoodMorning.exe /recurse:*.cs
ex)csc.exe /reference:APMPublicLib.DLL,Newtonsoft.Json.Net20.DLL /out:GoodMorning.exe /recurse:*.cs
ex)csc.exe /reference:APMPublicLib.DLL,Newtonsoft.Json.Net20.DLL /out:GoodMorning.exe /recurse:*.cs
ex)csc.exe /reference:APMPublicLib.DLL,Newtonsoft.Json.Net20.DLL /out:GoodMorning.exe /recurse:*.cs
ex)csc.exe /reference:APMPublicLib.DLL,Newtonsoft.Json.Net20.DLL /out:GoodMorning.exe /recurse:*.cs

우선 c# 컴파일러의 주요 옵션들에 대해 알아보자.

입력 플래그 정의
/recurse 프로젝트의 하위 디렉터리 구조에 있는 C# 파일을 컴파일하도록 csc.exe에 알린다.
이 플래그는 와일드카드 구문을 지원한다.
/reference (/r) 현재 컴파일에서 참조할 외부 어셈블리를 지정하는 데 사용된다.
/addmodule 다중 파일 어셈블리에 포함할 모듈을 지정하는 데 사용된다.

[ 1]c# 컴파일러 입력 옵션

출력 플래그 정의
/out 생성할 어셈블리 이름을 지정한다. 이 플래그를 생략하면 출력 파일 이름은 *.dll 어셈블리의 경우에는 초기 입력 파일 이름을 기반으로, *.exe 어셈블리의 경우에는 Main() 메서드를 정의하는 클래스를 기반으로 지정된다.
/target (/t) 만들 어셈블리의 파일 형식을 지정한다.
/doc XML 문서 파일을 생성하는 데 사용된다.
/delaysign 강력한 이름의 서명 연기를 사용하여 어셈블리를 빌드할 수 있도록 한다.
/keyfile 어셈블리에 강력한 이름을 지정하는 데 사용되는 *.snk 파일 경로를 지정한다.

ComponentOne 프로젝트에 컨트롤 추가하고, 빌드하기
ComponentOne 프로젝트에 컨트롤 추가하고, 빌드하기
ComponentOne 프로젝트에 컨트롤 추가하고, 빌드하기


1.
본문에서는 새 프로젝트를 생성하고, ComponentOne 컨트롤을 도구상자로 불러온 후, 컨트롤을 폼 또는 프로젝트에 추가하는 과정을 설명하고 있습니다.

2.
도구상자에 컨트롤 추가하기

3.
ComponentOne 컨트롤들은 WinForms 에디션을 설치하는 동안 자동으로 비주얼 스튜디오 도구상자에 추가됩니다.
비고)
ComponentOne 컨트롤들은 WinForms 에디션을 설치는 ComponentOne 사이트에서 다운로드받을수 있습니다.

4.
도구모음에 컨트롤 추가하기

5.
컨트롤을 폼에서 사용후에 빌드하기

6. 
빌드가 안되면, 참조에 추가해서 다시 빌드하기



MSI와 EXE의 차이점(2) - MSI 직접만들어보기

1.

Visual Studio에 Installer 설치가 되어 있어야만 msi 프로젝트를 만들수 있다.

2.

 

MSI와 EXE의 차이점


MSI 파일은 최신 Microsoft Windows 시스템에서 소프트웨어를 설치, 유지 관리 및 제거하는 데 사용되는 실행 파일입니다. 
EXE 파일은 '실행 파일'의 줄임말이며 확장명은 .exe입니다. 
실행 파일의 주된 목적은 컴퓨터에 이미 설치되어있는 파일을 설치하거나 실행하는 것입니다.

컴퓨터에 소프트웨어를 설치하려면 인터넷을 통해 구매하거나 무료로 다운로드하여 설치 프로그램을 다운로드해야합니다. 
소프트웨어, MIS 또는 EXE를 설치하는 동안 발생할 수있는 두 가지 유형의 파일이 있습니다. 
이 두 파일은 실행 가능 확장 파일입니다. 
이 두 파일은 동일한 기능을 수행하지만 설치 및 실행 프로그램은 다른 방식으로 수행합니다.

MSI 파일은 최신 Microsoft Windows 시스템에서 소프트웨어를 설치, 유지 관리 및 제거하는 데 사용되는 실행 파일입니다. 
'MSI'라는 용어는 Microsoft Installer라는 이름에서 파생되었으며 Windows Installer로 변경되었습니다. 
MSI 파일에 대한 정보는 설치 패키지에 저장되며 파일의 확장자는 .msi입니다. 
MSI 파일은 windows installer와 함께 사용되며 프로세스를 시작하거나 응용 프로그램을 실행하기 위해 EXE 파일이 필요합니다. 
MSI 파일은 Windows 업데이트 또는 응용 프로그램에 Microsoft에서 가장 일반적으로 사용됩니다.

MSI 파일을 두 번 클릭하면 Windows Installer가 화면에 팝업으로 나타나 패키지에서 파일 추출을 시작하고 사용자가 지정한 드라이브에 필요한 폴더와 파일을 만들고 패키지에 언급 된 바로 가기도 만들 수 있습니다 . MSI 파일은 MAC 컴퓨터에서 실행되지 않으며 적절한 변환 소프트웨어를 사용하여 EXE 파일로 변환해야합니다. MSI 파일 사용의 이점은 무인 설치를 위해 설계되었으므로 설치 관리자가 파일 다운로드를 위해 할당 된 키 입력 또는 클릭 기록을 유지할 수 있다는 것입니다. MSI 파일을 사용하면 얻을 수있는 또 다른 이점은 표준 GUI를 사용할 수 있다는 것입니다. 표준 GUI는 특정 수준으로 사용자 지정할 수 있으며 자신의 인터페이스를 만드는 복잡성을 제거합니다. MSI는 또한 주문형 설치 옵션을 제공합니다.
이 옵션은 컴퓨터에 부 파일 만 다운로드하고 응용 프로그램을 처음 실행할 때 나머지 파일을 다운로드합니다.

EXE 파일은 '실행 파일'의 줄임말이며 확장명은 .exe입니다. 
실행 파일의 주 목적은 다음과 같은 파일을 설치하거나 실행하는 것입니다.
컴퓨터에 이미 설치되어 있습니다. 
컴퓨터에 설치된 MSI 파일조차도 특정 파일을 실행하기 위해 하나 또는 두 개의 EXE 파일이 있습니다. 
EXE 파일을 사용하면 개발자가 설치 프로그램이 사용자와 상호 작용하는 방법에 대한 모든 자유를 얻을 수 있습니다. 
이러한 파일은 최신 게임 파일을 실행하는 데 가장 일반적으로 사용됩니다. 
이 게임 설치 프로그램은 대화식의 다채로운 인터페이스를 사용하여 패키지를 설치하는 동안 사용자를 즐겁게합니다.
EXE 파일은 거의 모든 운영 체제와 호환되지만 DOS, OpenVMS, Microsoft Windows, Symbian 및 OS / 2에서 가장 일반적으로 사용됩니다. 
실행 가능한 프로그램과 함께 많은 EXE 파일은 리소스라고하는 다른 구성 요소도 포함합니다. 
여기에는 실행 가능 프로그램이 GUI 용으로 사용할 수있는 비트 맵 및 아이콘이 포함될 수 있습니다. 
설치하는 동안 선택 사항을 기억할 수있는 MSI 파일과 달리 EXE 파일은 설치하는 동안 사용자가 '확인'또는 '다음'을 클릭해야 할 수 있습니다. 
EXE 파일은 위험한 파일로 간주되어 알려지지 않은 파일은 바이러스 또는 기타 악의적 인 루틴을위한 전송 시스템으로 사용할 수 있으므로 다운로드하지 않아야합니다.
소프트웨어 설치 프로그램을 개발할 때 선택할 실행 파일 유형을 결정하려면 설치 프로그램에 넣으려는 프로그램의 양과 노력 정도에 따라 결정하십시오. 
EXE를 사용하면 사용자 지정 가능한 옵션으로 설치 프로그램을 만들 수 있지만 MSI는 미리 설정된 표준을 준수하여 작업을 단순화합니다.


using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    public static void Main()
    {
        CalcManage nm = new CalcManage();
nm.running();
    }
}

class CalcManage
{
    public void running()
    {
        string[] arr = {""};
List<string> list = new List<string>(arr.ToList());

        list.Add("10.1.191.117");
list.Add("10.1.191.118");
list.Add("10.1.191.119");
list.Add("10.1.191.116");
list.Add("10.1.191.115");
list.Add("10.1.191.114");
list.Add("10.1.191.113");

        arr = list.ToArray();
        
foreach(var e in arr)
        {
            Console.WriteLine(e);
        }
/*------------------------------------------*/
display_packet(list, arr);
    }
    void display_packet(List<string> list, string[] arr)
    {
        foreach(var e in arr)
        {
            Console.WriteLine(e);
        }
    }

}

결과

10.1.191.117
10.1.191.118
10.1.191.119
10.1.191.116
10.1.191.115
10.1.191.114
10.1.191.113

10.1.191.117
10.1.191.118
10.1.191.119
10.1.191.116
10.1.191.115
10.1.191.114
10.1.191.113

sed -i 's/\r//g' cron_batch.sh(엑셀에 의해서 일괄로 만들어진 파일)

-rw-r--r-- 1 release release  4305 2023-01-12 08:56 send_to_be_mst_kse.c?
-rw-r--r-- 1 release release  4808 2023-01-12 08:56 send_to_be_detail_data_p.c?
-rw-r--r-- 1 release release  3350 2023-01-12 08:56 send_to_be_mst_kosdaq.c?
-rw-r--r-- 1 release release  3828 2023-01-12 08:56 send_to_be_detail_data_cnt.c?
-rw-r--r-- 1 release release  2873 2023-01-12 08:56 send_to_be_data_kse.c?
-rw-r--r-- 1 release release 26977 2023-01-12 08:56 send_to_be_kse_jisu.c?
-rw-r--r-- 1 release release  3450 2023-01-12 08:56 send_to_be_trade.c?
-rw-r--r-- 1 release release  3386 2023-01-12 08:56 send_to_be_trade_for_master.c?
-rw-r--r-- 1 release release 11134 2023-01-12 08:56 send_to_be_kse_file.c?
-rw-r--r-- 1 release release 27946 2023-01-12 08:56 send_to_be_kosdaq_jisu.c?
-rw-r--r-- 1 release release 11769 2023-01-12 08:56 send_to_be_elw_file.c?
-rw-r--r-- 1 release release  4305 2023-01-12 09:22 send_to_be_mst_kse.c
-rw-r--r-- 1 release release  4808 2023-01-12 09:22 send_to_be_detail_data_p.c
-rw-r--r-- 1 release release  3350 2023-01-12 09:22 send_to_be_mst_kosdaq.c
-rw-r--r-- 1 release release  3828 2023-01-12 09:22 send_to_be_detail_data_cnt.c
-rw-r--r-- 1 release release  2873 2023-01-12 09:22 send_to_be_data_kse.c
-rw-r--r-- 1 release release 26977 2023-01-12 09:22 send_to_be_kse_jisu.c
-rw-r--r-- 1 release release  3450 2023-01-12 09:22 send_to_be_trade.c
-rw-r--r-- 1 release release  3386 2023-01-12 09:22 send_to_be_trade_for_master.c
-rw-r--r-- 1 release release 11134 2023-01-12 09:22 send_to_be_kse_file.c
-rw-r--r-- 1 release release 27946 2023-01-12 09:22 send_to_be_kosdaq_jisu.c
-rw-r--r-- 1 release release 11769 2023-01-12 09:22 send_to_be_elw_file.c
[release@nticker1 test_port_to_be]$

그리고 지우는 방법

1. 현재 디렉토리
find . -name "*.c?" -print -exec rm {} \;
find . -name "*.cpp?" -print -exec rm {} \;

find ./ -maxdepth 1 -name "*.c?" -print -exec rm {} \;
find ./ -maxdepth 1 -name "*.cpp?" -print -exec rm {} \;

2. 하위디렉토리
find ./ -name "*.c?" -print -exec rm {} \;
find ./ -name "*.cpp?" -print -exec rm {} \;

단 .cs .cc 같은 파일도 동시에 지워지므로, 아주 조심해서 사용해야 한다.
단 .cs .cc 같은 파일도 동시에 지워지므로, 아주 조심해서 사용해야 한다.
단 .cs .cc 같은 파일도 동시에 지워지므로, 아주 조심해서 사용해야 한다.
단 .cs .cc 같은 파일도 동시에 지워지므로, 아주 조심해서 사용해야 한다.

sed -i 's/STANDBY/ACTIVE/gi' ./INTERNET_OPTION/tickerplant.conf.internet.real.standby.x64.groupe
sed -i 's/STANDBY/ACTIVE/gi' ./INTERNET_OPTION/tickerplant.conf.internet.real.standby.x64.groupe.relay
sed -i 's/STANDBY/ACTIVE/gi' ./INTERNET_OPTION/tickerplant.conf.internet.real.standby.x64.groupe.koscom
sed -i 's/STANDBY/ACTIVE/gi' ./INTERNET_FUTURE/tickerplant.conf.internet.real.standby.x64.groupd.relay
sed -i 's/STANDBY/ACTIVE/gi' ./INTERNET_FUTURE/tickerplant.conf.internet.real.standby.x64.groupd
sed -i 's/STANDBY/ACTIVE/gi' ./INTERNET_FUTURE/tickerplant.conf.internet.real.standby.x64.groupd.koscom
sed -i 's/STANDBY/ACTIVE/gi' ./INTERNET_KSE/tickerplant.conf.internet.real.standby.x64.groupa
sed -i 's/STANDBY/ACTIVE/gi' ./INTERNET_KSE/tickerplant.conf.internet.real.standby.x64.groupa.koscom
sed -i 's/STANDBY/ACTIVE/gi' ./INTERNET_KSE/tickerplant.conf.internet.real.standby.x64.groupa.relay
sed -i 's/STANDBY/ACTIVE/gi' ./INTERNET_KOSDAQ/tickerplant.conf.internet.real.standby.x64.groupb.koscom
sed -i 's/STANDBY/ACTIVE/gi' ./INTERNET_KOSDAQ/tickerplant.conf.internet.real.standby.x64.groupb.relay
sed -i 's/STANDBY/ACTIVE/gi' ./INTERNET_KOSDAQ/tickerplant.conf.internet.real.standby.x64.groupb
sed -i 's/STANDBY/ACTIVE/gi' ./INTERNET_ELW/tickerplant.conf.internet.real.standby.x64.groupc.koscom
sed -i 's/STANDBY/ACTIVE/gi' ./INTERNET_ELW/tickerplant.conf.internet.real.standby.x64.groupc
sed -i 's/STANDBY/ACTIVE/gi' ./INTERNET_ELW/tickerplant.conf.internet.real.standby.x64.groupc.relay


/*
csc /reference:Newtonsoft.Json.Net20.dll,ServiceStack.dll,ServiceStack.Interfaces.dll,ServiceStack.ServiceInterface.dll /out:frm01.exe frm01.cs dbmsfrm9801.cs
csc /out:frm01.exe frm01.cs dbmsfrm9801.cs
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;//Marshal
using System.Timers;

class Program
{
    public static void Main(string[] args)
    {
        Application.Run(new CommonLibManage());
    }
}
class dbmsfrm9801 : Form
{
public IntPtr localHandle = IntPtr.Zero;
public IntPtr ____localHandle
{
get{ return localHandle;  }
set{ localHandle = value; }
}

public dbmsfrm9801()
{
localHandle = Handle;

this.Text = "[" + localHandle.ToString() + "]";
}
protected override bool ProcessCmdKey(ref Message m, Keys keyData)
{
const int WM_KEYDOWN = 0x0100;
if(m.Msg==WM_KEYDOWN)
{
switch(keyData.ToString())
{
case "Escape":
Close();
break;
}
}

return base.ProcessCmdKey(ref m, keyData);
}
}
class CommonLibManage : Form
{
public CommonLibManage()
{
//
}
protected override bool ProcessCmdKey(ref Message m, Keys keyData)
{
const int WM_KEYDOWN = 0x0100;
if(m.Msg==WM_KEYDOWN)
{
switch(keyData.ToString())
{
case "Return":
dbmsfrm9801 frm = new dbmsfrm9801();
Console.WriteLine(frm.____localHandle.ToString());
frm.Show();
break;
case "Escape":
Application.Exit();
break;
}
}

return base.ProcessCmdKey(ref m, keyData);
}
}



우분투 NTP 시간 동기화 설정/우분투 NTP 시간 동기화 설정/우분투 NTP 시간 동기화 설정
우분투 NTP 시간 동기화 설정/우분투 NTP 시간 동기화 설정/우분투 NTP 시간 동기화 설정
우분투 NTP 시간 동기화 설정/우분투 NTP 시간 동기화 설정/우분투 NTP 시간 동기화 설정

0.
apt-get install -y ntp

1.
root@sinfo:~# vi /etc/ntp.conf

>>주석처리
#pool 0.ubuntu.pool.ntp.org iburst
#pool 1.ubuntu.pool.ntp.org iburst
#pool 2.ubuntu.pool.ntp.org iburst
#pool 3.ubuntu.pool.ntp.org iburst
>>추가
server 1.kr.pool.ntp.org
server 1.asia.pool.ntp.org
server time.bora.net
server 203.248.240.140 iburst


2.
>>ntp 서비스 실행
root@sinfo:~#systemctl start ntp (서비스 실행)
root@sinfo:~#systemctl status ntp (서비스 상태 확인)

root@sinfo:~#
root@sinfo:~#
root@sinfo:~# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ap-northeast-2. 10.84.87.146     2 u   24   64    5    3.934   -1.094   8.041
 x.ns.gin.ntt.ne 129.250.35.222   2 u   31   64    7   35.498   -4.566   0.861
 time.bora.net   101.55.81.10     3 u   96   64    2    4.299   -3.241   0.000
-106.247.248.106 216.239.35.0     2 u   25   64    7    2.822    2.408   0.928
+121.174.142.81  220.73.142.66    3 u   23   64    7    9.265   -0.952   1.292
*193.123.243.2   125.185.190.74   2 u   25   64    7    2.322   -0.115   1.223
+send.mx.cdnetwo 125.185.190.74   2 u   23   64    7    2.355   -0.387   1.212
-ntp1.torix.ca   .PTP0.           1 u   21   64    7  177.186   -4.221   1.216
-ns2.tdc.akl.tel 202.46.178.18    2 u   18   64    7  189.169    0.644   1.666
 185.125.190.58  167.28.20.25     2 u   21   64    7  237.671   -8.107   0.991
-ntp4.flashdance 192.36.143.150   2 u   20   64    7  243.052   -4.914   1.725
 185.125.190.57  167.28.20.25     2 u   20   64    7  239.424   -7.351   0.919
-magnat.ip-conne 31.28.161.68     2 u   21   64    7  268.196  -10.977   1.606
 alphyn.canonica 142.3.100.2      2 u   24   64    7  206.479   11.904   0.847
 pugot.canonical 17.253.108.125   2 u   17   64    7  255.509    1.233   1.575
 185.125.190.56  179.208.94.190   2 u   21   64    7  232.582   -6.133   1.044



4.
UTC(협정 세계시)로 설정됨

root@sinfo:~# date
Sat 31 Dec 2022 06:19:36 AM UTC
root@sinfo:~#
root@sinfo:~#
root@sinfo:~#



5. 
서울 시간(KST)로 변경 해 됨겠습니다.
root@sinfo:~# timedatectl set-timezone Asia/Seoul
root@sinfo:~# date
Sat 31 Dec 2022 03:20:11 PM KST
root@sinfo:~#
root@sinfo:~#

+ Recent posts