root 패스워드 설정하기

>sudo passwd root
>비번입력
>비번입력.확인

 

1. INIT(BackgroundWorker/Redis Server Connect)
2. Get Music List & BLPUSH( with Redis Key)
3. BackgroundWorker Process(BLPOP with Redis Key)

 

 

UAPDBMQ0010.cs
0.01MB
program.cs
0.00MB
RADIO_K_18_00.cs
0.01MB

 



csc.exe /reference:ServiceStack.Common.dll,
ServiceStack.dll,ServiceStack.Interfaces.dll,
ServiceStack.ServiceInterface.dll,
Newtonsoft.Json.Net20.dll 
/out:MMM.exe 
/recurse:*.cs



RedisCheck.cs
0.00MB
RedisMusicData.cs
0.01MB
program.cs
0.00MB




csc.exe
/reference:ServiceStack.Common.dll,
ServiceStack.dll,
ServiceStack.Interfaces.dll,
ServiceStack.ServiceInterface.dll 
/out:MMM.exe 
/recurse:*.cs

 

설치)
apt-get install redis-server

버젼확인)
redis-server --version

재시작)
systemctl restart redis-server.service

root@sinfo:~# systemctl restart redis-server.service
root@sinfo:~# ps -ef | grep redis
redis       2778       1  0 03:53 ?        00:00:00 /usr/bin/redis-server 127.0.0.1:6379
root        2783    2101  0 03:53 pts/0    00:00:00 grep --color=auto redis
root@sinfo:~#
root@sinfo:~# netstat -an | grep 6379
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN
tcp6       0      0 ::1:6379                :::*                    LISTEN
root@sinfo:~#
root@sinfo:~# redis-cli
127.0.0.1:6379> set name1 member1
OK
127.0.0.1:6379> get name1
"member1"
127.0.0.1:6379> quit

레디스 Command 사용)
root@sinfo:~# redis-cli
127.0.0.1:6379> RPUSH name2 a b c
(integer) 3

Help>Blocking Pop, Delete Data
127.0.0.1:6379> BLPOP name2 name3 0
1) "name2"
2) "a"
127.0.0.1:6379> BLPOP name2 name3 1
1) "name2"
2) "b"
127.0.0.1:6379> BLPOP name2 name3 2
1) "name2"
2) "c"
root@sinfo:~#

방화벽오픈)
----------------------------------------------------------------------------------------------
일단 그럼 기존에 있던 방화벽을 삭제해봅시다!

dpkg -r iptables-persistent
dpkg -r netfilter-persistent
apt remove --purge iptables-persistent
----------------------------------------------------------------------------------------------
ufw enable  // 사용

ufw allow 22 // tcp,udp 둘다 허용
ufw allow 22/tcp //tcp만 허용 , udp는 뒤에 udp

ufw status // 활성 상태확인
----------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------
root@sinfo:~# ps -ef | grep redis
redis       1053       1  0 07:35 ?        00:00:00 /usr/bin/redis-server 127.0.0.1:15565
root        1656    1644  0 07:38 pts/0    00:00:00 grep --color=auto redis
root@sinfo:~# netstat -an | grep 15565
tcp        0      0 127.0.0.1:15565         0.0.0.0:*               LISTEN
tcp6       0      0 ::1:15565               :::*                    LISTEN
root@sinfo:~#
----------------------------------------------------------------------------------------------
REDIS 외부접속허용하기)
Redis설치후에, bind에 설정되어 있는 bind 127.0.0.1을 bind 0.0.0.0 으로 변경후에 재기동하면 외부에서도 접속이 가능하다.

----------------------------------------------------------------------------------------------(?????)
C:\Users\xterm>telnet 192.168.45.166 15565
연결 대상 192.168.45.166...호스트에 연결할 수 없습니다. 포트 15565: 연결하지 못했습니다.
----------------------------------------------------------------------------------------------


csc.exe /reference:ServiceStack.Common.dll,
ServiceStack.dll,
ServiceStack.Interfaces.dll,
ServiceStack.ServiceInterface.dll /out:MMM.exe /recurse:*.cs

해결을 위한 노력) 윈도우에서 설정했던,ㅡ,ㅡ환경,ㅡ들,ㅡㅡㅡㅡ

 

2023.11.11 windows

2023.11.11 ubuntu(linux)

root@sinfo:~# redis-cli
127.0.0.1:6379> BLPOP QCS MMMM 1
1) "QCS"
2) "(2023-07-18 \xec\x98\xa4\xec\xa0\x84 7:00:00),(1\xeb\xb6\x80)"
127.0.0.1:6379> BLPOP QCS MMMM 1
1) "QCS"
2) "(00) today - john denver "
127.0.0.1:6379> BLPOP QCS MMMM 1
1) "QCS"
2) "(01) the girl is mine - michael jackson  paul mccartney"
127.0.0.1:6379> BLPOP QCS MMMM 1
1) "QCS"
2) "(02) what a fool believes - doobie brothers"
127.0.0.1:6379> BLPOP QCS MMMM 1
1) "QCS"
2) "(03) top of the world - carpenters"
127.0.0.1:6379> BLPOP QCS MMMM 1
1) "QCS"
2) "(04) the power of love - huey lewis and the news"
127.0.0.1:6379> BLPOP QCS MMMM 1
1) "QCS"
2) "(05) angel - sarah mclachlan "
127.0.0.1:6379> BLPOP QCS MMMM 1
1) "QCS"
2) "(06) vampire - olivia rodrigo (cbs pd\xeb\x93\xa4\xec\x9d\xb4 \xeb\xbd\x91\xec\x9d\x80 \xec\x9d\xb4 \xec\xa3\xbc\xec\x9d\x98 \xed\x8a\xb8\xeb\x9e\x99)"
127.0.0.1:6379> BLPOP QCS MMMM 1
1) "QCS"
2) "(08) smile again - newton family "
127.0.0.1:6379> BLPOP QCS MMMM 1
1) "QCS"
2) "(2023-07-18 \xec\x98\xa4\xec\xa0\x84 7:00:00),(2\xeb\xb6\x80)"
127.0.0.1:6379> BLPOP QCS MMMM 1
1) "QCS"
2) "(00) one love - blue"
127.0.0.1:6379> BLPOP QCS MMMM 1
1) "QCS"
2) "(01) i don't like to sleep alone - paul anka "
127.0.0.1:6379> BLPOP QCS MMMM 1
1) "QCS"
2) "(02) dust in the wind - kansas"


using System;
using System.Timers;
using System.IO;


class Program
{
    public static void Main()
    {
        CHKNMNM nmm = new CHKNMNM();
        nmm.CALCCHK();
        nmm.REALCHK();
        nmm.DISPCHK();
    }
}

class CHKNMNM
{
    string[] HOLIDAY = new string[]
    {
    "2024-01-01",
    "2024-02-09",
    "2024-02-12",
    "2024-03-01",
    "2024-04-10",
    "2024-05-01",
    "2024-05-06",
    "2024-05-15",
    "2024-06-06",
    "2024-08-15",
    "2024-09-16",
    "2024-09-17",
    "2024-09-18",
    "2024-10-03",
    "2024-10-09",
    "2024-12-25",
    };
    string[] HOLIDAYNM = new string[]
    {
    "2024-01-01(신정)",
    "2024-02-09(구정)",
    "2024-02-12(구정)",
    "2024-03-01(삼일절)",
    "2024-04-10(선거일)",
    "2024-05-01(노동절)",
    "2024-05-06(어린이날대체)",
    "2024-05-15(부처님오신날)",
    "2024-06-06(현충일)",
    "2024-08-15(광복절)",
    "2024-09-16(추석)",
    "2024-09-17(추석)",
    "2024-09-18(추석)",
    "2024-10-03(개천절)",
    "2024-10-09(한글날)",
    "2024-12-25(크리스마스)",
    };
    string[] YOIL = new string[]
    {
    "MONDAY",
    "TUESDAY",
    "WEDNESDAY",
    "THURSDAY",
    "FRIDAY",
    "SATURDAY",
    "SUNDAY",
    };
    string[] RANDOMNM = new string[]
    {
    "CHO","PARK","JIN",
    };

    const int MAX_CNT = 1024;
    string[] CHKNM = new string[MAX_CNT];
    string[] CHKDT = new string[MAX_CNT];
    string[] CHKYO = new string[MAX_CNT];
    string[] CHKRM = new string[MAX_CNT];

    public void CALCCHK()
    {
        int ii = 0; //(1-MON, 7-SUNDAY)
        int day = 0;
        int mm = 0;
        int kk = 0;

DateTime now = DateTime.Now;
DateTime calcnow;

//POINT:CHKRM's INCREASE ITSELF
//POINT:RANDOMNM's INCREASE ITSELF
//POINT:CHKRM's INCREASE ITSELF
//POINT:RANDOMNM's INCREASE ITSELF

        while(true)
        {
            calcnow = now.AddDays(day);
            if(    Convert.ToInt32(calcnow.ToString("yyyy-MM-dd").Replace("-","")) < 20231231)
            {
                day++;
                continue;
            }
            if(    Convert.ToInt32(calcnow.ToString("yyyy-MM-dd").Replace("-","")) == 20250101) break;
            if(    Convert.ToInt32(calcnow.ToString("yyyy-MM-dd").Replace("-","")) == 20231231) ii=7;




    int check = 0;
    for(int ff =0; ff < HOLIDAY.Length; ff++)
    {
        if(calcnow.ToString("yyyy-MM-dd") == HOLIDAY[ff])
{
    check = 100;
    break;
}
    }


    if(check == 0)
    {
        if(ii==4) CHKRM[kk++] = RANDOMNM[ mm++ % 3];
else if(ii==5) CHKRM[kk++] = RANDOMNM[ mm++ % 3];
    }
    else
    {
        if(ii==1) CHKRM[kk++] = "PARK";
else if(ii==2) CHKRM[kk++] = "JIN";
else if(ii==3) CHKRM[kk++] = "CHO";
else if(ii==4) CHKRM[kk++] = RANDOMNM[ mm++ % 3];
else if(ii==5) CHKRM[kk++] = RANDOMNM[ mm++ % 3];
    }

    day++;
    ii++;
    
    if(ii == 8) ii = 1;
}
    }
    public void REALCHK()
    {
        int ii = 0; //(1-MON, 7-SUNDAY)
int day = 0;
int kk = 0;
int sum = 0;

DateTime now = DateTime.Now;
DateTime calcnow;

        while(true)
{
    calcnow = now.AddDays(day);
    if(    Convert.ToInt32(calcnow.ToString("yyyy-MM-dd").Replace("-","")) < 20231231)
    {
        day++;
continue;
    }
    if(    Convert.ToInt32(calcnow.ToString("yyyy-MM-dd").Replace("-","")) == 20250101) break;
    if(    Convert.ToInt32(calcnow.ToString("yyyy-MM-dd").Replace("-","")) == 20231231) ii=7;




    int check = 0;
    for(int ff =0; ff < HOLIDAY.Length; ff++)
    {
        if(calcnow.ToString("yyyy-MM-dd") == HOLIDAY[ff])
{
    check = 100;
    break;
}
    }


    if(check == 0)
    {
        if(ii==1)
{
    CHKNM[sum] = "PARK";
    CHKYO[sum] = YOIL[ii-1];
    CHKDT[sum] = calcnow.ToString("yyyy-MM-dd");
}
else if(ii==2)
{
    CHKNM[sum] = "JIN";
    CHKYO[sum] = YOIL[ii-1];
    CHKDT[sum] = calcnow.ToString("yyyy-MM-dd");
}
else if(ii==3)
{
    CHKNM[sum] = "CHO";
    CHKYO[sum] = YOIL[ii-1];
    CHKDT[sum] = calcnow.ToString("yyyy-MM-dd");
}
        else if(ii==4)
{
    CHKNM[sum] = CHKRM[kk++];
    CHKYO[sum] = YOIL[ii-1];
    CHKDT[sum] = calcnow.ToString("yyyy-MM-dd");
}
else if(ii==5)
{
    CHKNM[sum] = CHKRM[kk++];
    CHKYO[sum] = YOIL[ii-1];
    CHKDT[sum] = calcnow.ToString("yyyy-MM-dd");
}
else if(ii==6)
{
    CHKNM[sum] = "HOLIDAY";
    CHKYO[sum] = YOIL[ii-1];
    CHKDT[sum] = calcnow.ToString("yyyy-MM-dd");
}
else if(ii==7)
{
    CHKNM[sum] = "HOLIDAY";
    CHKYO[sum] = YOIL[ii-1];
    CHKDT[sum] = calcnow.ToString("yyyy-MM-dd");
}
    }
    else if(check == 100)
    {
        CHKYO[sum] = YOIL[ii-1];
        CHKDT[sum] = calcnow.ToString("yyyy-MM-dd");

int subcheck = 0;
for(int ff=0; ff<HOLIDAY.Length; ff++)
{
    if(CHKDT[sum] == HOLIDAY[ff])
    {
        CHKNM[sum] = HOLIDAYNM[ff];
subcheck = 100;
break;
    }
}
if(subcheck == 0)
{
    CHKNM[sum] = "SPECIAL";
}
    }

    day++;
    ii++;
    sum++;
    
    if(ii == 8) ii = 1;
}
    }
    public void DISPCHK()
    {
        int kk = 0;

        while(true)
{
    string dateTxt = "";
    string nameTxt = "";

    int check = 0;
    for(int ii=0; ii<7; ii++)
    {
        dateTxt += CHKDT[kk] + "/";
nameTxt += CHKNM[kk] + "/";

        if(CHKDT[kk] == "2024-12-31")
{
    check = 100;
    break;
}

kk++;
    }
    Console.WriteLine(dateTxt);
    Console.WriteLine(nameTxt);

    if(check == 100) break;
}
    }
}




        
    
        

apt-get install samba
smbpasswd -a sinfo
vim /etc/samba/smb.conf

[homes] [homes]를 표기하는 경우, 각 사용자의 home directory (~/아이디)를 검색하여 그리로 연결해 줍니다.
comment 이 section (여기서는 homes)을 나타내는 주석입니다.
valid users 이 서비스에 로그인 가능한 사용자를 할당합니다.

%S는 서비스의 이름을 나타내는데 곧 samba를 사용할 권한이 있는 사용자가 됩니다.
browseable 네트워크 상에서 사용 가능한 공유 목록에 표시되게 할지 말지 정합니다.
read only guest 계정이 접근할 경우 등 필요 시 read only를 yes 해주시면 됩니다.


service smbd restart
ps -ef | grep samba

 

root@sinfo:~# ps -ef | grep samba
root        4027    4022  0 23:23 ?        00:00:00 /usr/lib/x86_64-linux-gnu/samba/samba-bgqd --ready-signal-fd=45 --parent-watch-fd=11 --debuglevel=0 -F
root        4186    2350  0 23:30 pts/0    00:00:00 grep --color=auto samba
root@sinfo:~#

 

<윈도우연결>

samba service를 체크한다.

탐색기에서 samba설치되어진 ip address를 입력 \\192.168.49.489후
samba설치시에 등록한 sinfo아이디 + password를 입력한다.
나타나는 화면은 다음과 같다.

위의 모습을 윈도우형식으로 보여준다. 윈도우처럼 복사 & 붙여넣기 사용가능

SETUP폴더 복사후 ---,,,, 반드시 해줘야 하는

1. Product Code -> New 버튼으로 새로 생성(안하면 기존  SETUP파일과 겹침)
2. Upgrade Code -> New 버튼으로 새로 생성(안하면 기존  SETUP파일과 겹침)
3. 메뉴폴더  ShorCut Name Change 
4. 바탕화면 바로가기  ShorCut Name Change

c언어)

 

date_2024.h
0.01MB
date_2024.c
0.01MB

 

c#언어)

 

CHKNM_2024.cs
0.01MB

 

c#언어,GUI)

CALENDERCHK.cs
0.02MB
CALENDERCHK.Designer.cs
0.00MB
program.cs
0.00MB
apublicnm.cs
0.01MB

/*
1. 조건: 증권시장이 열리는 날에만 근무한다.
2. 월요일 - A, 화요일 - B, 수요일 - C로 3명으로 구성되며, 목금은 A->B->C의 순서로 돌아가면서 담당한다.
예외) 국경일이 월화수에 할당되면, 국경일에 해당되는 당번이 목금에 우선순위로 먼저선다.
위의 조건을 활용하여, 2024년도 당번일지를 작성하라

2024년도 국경일은 다음과 같다.
string[] HOLIDAY = new string[]
{
"2024-01-01",//신정
"2024-02-09",//구정
"2024-02-12",//구정
"2024-03-01",//삼일절
"2024-04-10",//국회의원선거일
"2024-05-01",//노동절
"2024-05-06",//어린이날대체휴무
"2024-05-15",//부처님오신날
"2024-06-06",//현충일
"2024-08-15",//광복절
"2024-09-16",//추석
"2024-09-17", //추석
"2024-09-18", //추석
"2024-10-03",//개천절
"2024-10-09",//한글날
"2024-12-25",//크리스마스
};
*/


[C#] DLLImport 방법
- DllImport

User32.DLL 파일을 Import 하여, 함수를 호출하는 방법입니다.

/*
[DllImport("user32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("User32.dll", EntryPoint = "PostMessage")]
public static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("User32.dll")]
public extern static IntPtr GetWindowDC(IntPtr hWnd);
[DllImport("User32.dll")]
public extern static IntPtr GetDCEx(IntPtr hWnd);
[DllImport("User32.dll")]
public extern static int ReleaseDC(IntPtr hWnd, IntPtr hDC);
[DllImport("user32.dll")]
public static extern Int32 GetWindowLong(IntPtr hWnd, Int32 Offset);
[DllImport("user32.dll")]
public static extern Int32 SetWindowLong(IntPtr hWnd, Int32 Offset, Int32 newLong);
[DllImport("user32.dll")]
public static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
[DllImport("user32.dll")]
public static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
//EnableMenuItem Win32 API Declaration - Set the enabled values of the title bar (from GetSystemMenu) items
[DllImport("user32.dll")]
public static extern int EnableMenuItem(IntPtr hMenu, int wIDEnable, int wValue);
[DllImport("user32.dll")]
public static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
[DllImport("user32.dll")]
public static extern int SetWindowPos(IntPtr hWndChild, int hwndInsertAfter, int x, int y, int cx, int cy, int wFlag);
[DllImport("user32.dll")]
public static extern int Mouse_Event(int dwFlags, int dx, int dy, int cButtons, IntPtr dwExtreInfo);
[DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
[DllImport("user32.dll")]
public static extern bool IsWindow(IntPtr hWnd);
*/

외부 라이브러리 사용(DllImport)
#. 내용.
 - 외부 라이브러리를 사용하기 위한 선언입니다. Dll 파일을 C# 프로젝트가 인식할 수 있도록 해야 하며 대게 해당 파일을 C:/Program Files/ 내지는 프로젝트 내의 bin/debug 또는 bin/release에 복사해 두면 됩니다.

#. 사용 방법.
using System.Runtime.InteropServices; //선언

//사용하고자 하는 dll 파일을 첫번째 인수에 넣음.
[DllImport("user32.dll")]

//public 및 static의 정적 메소드로 선언해야 하고, extern 한정자는 메소드가 C# 코드 외부에서 구현됨을 나타 냅니다.
public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
.
.
.
//이런 식으로 사용하면 됩니다.
hHook = SetWindowsHookEx(WH_MOUSE, MouseHookProcedure, (IntPtr)0, AppDomain.GetCurrentThreadId());

#. 주의사항.
 - 인자값과 리턴 값의 자료형을 정확하게 맞춰줘야 합니다. 그렇지 않을 경우 데이터를 주고 받다가 데이터가 소실되는 경우가 발생합니다.


program.cs
0.00MB
RADIO_K_18_00.cs
0.01MB
UAPDBMQ0010.cs
0.01MB
UAPDBMQ0010.Designer.cs
0.00MB
apublicnm.cs
0.00MB

 

 

List<string> MusicList = new List<string>();
//By.BackGround(BackgroundWorker Using)
MusicList = nmm.running(ref KID, ref KPOST_NO, ref KDATE, ref DATE_MODIFIED, ref USER_NAME);
//By.BackGround(Invoke Using)
DisplayNM( MusicList);

/*
출력 시작 ROW NUMBER -> lvList.Rows.Count = lvList.Rows.Fixed;
*/

/*
csc.exe /reference:C1.Win.C1FlexGrid.4.dll,Newtonsoft.Json.Net20.dll /out:MMM.exe /recurse:*.cs
*/

 

 

 

//Array를 Object로 변환해서, 한번에 Row에 출력하기.혹은 저장하기

/*
string n = "1234";

Method.1
int outValue = Convert.ToInt32(n);

Method.2
int outValue = int.Parse(n);

Method.3
int outValue;
int.TryParse(n, out outValue);
*/


class Program
{
    static void Main(string[] args)
    {
        Application.Run(new NMNM());
    }
}

public class NMNM : Form
{
    private DataGridView control_datagridview;

    public NMNM()
    {
        DESIGN();
        DATA();
    }

    void DESIGN()
    {
         control_datagridview = new DataGridView();

         control_datagridview.Dock = DockStyle.Fill;
         control_datagridview.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
         control_datagridview.MultiSelect = false;
         control_datagridview.Location = new Point(362, 150);
         control_datagridview.Name = "control_datagridview";
         control_datagridview.Size = new Size(240, 150);
    }
    void DATA()
    {

        List<string> AuthorList = new List<string>();

         AuthorList.Add("Mahesh Chand");
         AuthorList.Add("Praveen Kumar");
         AuthorList.Add("Raj Kumar");
         AuthorList.Add("Nipun Tomar");
         AuthorList.Add("Dinesh Beniwal");

         control_datagridview.Rows.AddItem(AuthorList.ToArray());
    }
}

 

궁금합니다) system.reflection.targetinvocationexception 예외처리

Exception thrown: 'System.Reflection.TargetInvocationException' in mscorlib.dll(?)
Exception thrown: 'System.Reflection.TargetInvocationException' in mscorlib.dll(?)
Exception thrown: 'System.Reflection.TargetInvocationException' in mscorlib.dll(?)

B210145@DESKTOP-IE5O3G0 MINGW64 /c/Windows
$ find ./ -name mscorlib.dll
./Microsoft.NET/assembly/GAC_32/mscorlib/v4.0_4.0.0.0__b77a5c561934e089/mscorlib.dll
./Microsoft.NET/assembly/GAC_64/mscorlib/v4.0_4.0.0.0__b77a5c561934e089/mscorlib.dll
./Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
./Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll

 

https://developercommunity.visualstudio.com/t/exception-thrown-systemreflectiontargetinvocatione/773645

 

Exception thrown: 'System.Reflection.TargetInvocationEx...

<p>When using Visual Studio 2017 running exactly the same code, I have no errors but when using Visual Studio 2019 I get the following exceptions when...

developercommunity.visualstudio.com

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jg1223&logNo=220006001600 

 

'System.Reflection.TargetInvocationException' 형식의 예외가 mscorlib.dll에서 발생했지만 사용자 코드에서 처

'System.Reflection.TargetInvocationException' 형식의 예외가 mscorlib.dll에서 발생했지만 사용자 ...

blog.naver.com

 

public class Program
{
    public static void Main()
    {
        DateMN nm = new DateMN();
        nm.running();
    }
}
public class DateMN
{
    DateTime now;
    string manualDT = "20230901070000";
    double rate = 0.0586;
    int middle_pay = 95000000;
    double rate_sum = 1300000;

    public void running()
    {
        int kk = 0;
        now = DateTime.ParseExact(manualDT, "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture);

        while(true)
        {
            DateTime manual = now.AddDays(kk);
            if("2023-12-15" == manual.ToString().Substring(0,4+2+2+2)) middle_pay = middle_pay + 60000000;
            rate_sum = rate_sum + rate * middle_pay / 365.0;

            kk++;
            Console.WriteLine("[" + kk.ToString("0000") + "]" + manual.ToString() + "/" + middle_pay + "/" + rate_sum);

            if(kk > 200) break;
        }
    }
}

 

 

C#, 변수, 상수, 기본구조
C#, HelloWorld, Main 함수
C#, 연산자, 자료형(Value Type, Reference Type)
사용자정의타입(열거형, 구조체)
조건문, 제어문, 반복문(if, switch, for, while, forEach)
가변길이 매개변수(params), 명명된 인수 및 선택적 인수
프로퍼티(Property)
C# 객체지향 프로그래밍
클래스(Class), 객체, 상속, 추상클래스, 인터페이스, 다형성
C# 코드 최적화, 객체생성 및 멤버,필드 초기화
C# new, virtual, partial 한정자
값전달, 참조전달(ref, out)
C# 배열(Array)
C# 일반화 프로그래밍(Generic)
C# 컬렉션 클래스(Collection Class)
C# 델리게이트, 델리게이트 체인
C# 이벤트(Event)
C# 람다식(Lambda Expression)
C# Func, Action 델리게이트
C# 링크(Linq)




Xamarin 1.1 자마린 소개
1.2 자마린 설치
1.3 자마린 안드로이드(Xamarin.Android)
1.4 자마린 특징
2. Xamarin.Android
2.1 Hello Android(Xamarin.Android Application) Example
2.2 Hello Xamarin Android 구조
2.2.1 Resources
2.2.2 Xamarin.Android Activity란
2.2.3 Activity Life Cycle
2.2.4 Hello Xamarin Android의 기타 요소들
2.2.5 Xamarin Android Intent(인텐트)
2.2.6 Simple Intent Example(웹페이지 오픈하기)
2.2.7 Simple Intent Example(현재 위치를 얻은 후 지도에 표시하기, 마시멜로이후 권한 획득방법 구현)
2.2.8 Android Service 개요
2.3 Hello Android MultiScreen Example
2.4 Built-In List Item Layouts(내장 리스트아이템 레이아웃)
2.5 Xamarin.Android(With .JAR, .AAR, Native Android Library)
2.5.1 Binding Java Library(Consuming Java libraries from C#)
2.5.2 Xamarin.Android EmbeddedJar Binding(안드로이드 JAR 라이브러리 바인딩)
2.5.3 Xamarin.Android .AAR Binding(안드로이드 .AAR File을 자마린 바인딩 자바 라이브러리로 구현 후 Xamarin.Android 프로젝트에서 호출하기)
3. Xamarin.iOS
3.1 Xamarin.iOS 설치, 개발환경
3.2 Xamarin.iOS HelloWorld(단일 뷰) 실습
3.3 Xamarin.iOS HelloWorld 자세히 살펴보기
3.3.1 Xamarin.iOS HelloWorld 해부하기
3.3.2 Architecture and App Fundamentals
3.3.3 User Interface(iOS Designer, Storyboards)
3.4.4 View Controllers and the View Lifecycle
3.3.5 추가적인 사항
3.4 Xamarin.iOS HelloWorld(멀티 뷰) 실습
3.4.1 Xamarin.iOS HelloWorld(멀티 뷰) 자세히 살펴보기_MVC, Navigation Controller, View Controller
3.5 네비게이션 컨트롤러(Navigation Controller)
3.6 루트 뷰 컨트롤러(Root View Controller)
4. Xamarin.Forms
4.1 Xamarin.Forms Requirements
4.2 Xamarin.Forms Quick Start
4.3 Xamarin.Forms HelloWorld 분석
4.3.1 Xamarin.Forms HelloWorld 프로젝트 구조
4.3.2 Xamarin.Forms HelloWorld Fundamentals
4.3.3 Xamarin.Forms HelloWorld PCL 및 플랫폼별 코드 분석
4.3.4 Xamarin.Forms HelloWorld 사용자 인터페이스
4.3.5 Xamarin.Forms HelloWorld User Interaction
4.3.6 Xamarin.Forms HelloWorld 추가적인 개념
4.4 Xamarin.Forms Multiscreen Quick Start Example
4.5 Views And Layout
4.5.1 Stack Layout
4.5.2 Lists in Xamarin.Forms
4.5.3 ListView Data Sources
4.5.4 Selecting an Item in a ListView
4.5.5 DataTemplateSelector
4.5.6 ListView, DataTemplateSelector Example
4.6 MVVM개요 및 MVVM Example
4.6.1 ViewModel을 View에 연결하기
4.6.2 Creating a View Model Declaratively
4.6.3 Creating a View Model Programmatically
4.7 XAML 데이터 바인딩(Data Binding)
4.7.1 데이터 바인딩(Data Binding) 개요
4.7.2 View-to-View 데이터 바인딩
4.7.3 ListView 심플 데이터 바인딩, 컬렉션 바인딩(Collection Binding), ListView에서 클릭시 새창 띄우면서 데이터 넘기기
4.7.4 Backwards 바인딩
4.7.5 MVVM에서 데이터 바인딩 사용하기
4.7.6 MVVM, ViewModel을 이용한 ListView 데이터 바인딩
4.7.7 MVVM, XAML을 이용한 간단한 계산기 구현
4.8 SQLite.Net with Xamarin.Forms
4.8.1 Local SQLite Access Example
4.8 Hierarchical Navigation
4.8.1 Pushing Pages to the Navigation Stack
4.8.2 Popping Pages from the Navigation Stack
4.8.3 Passing Data when Navigating
4.8.4 Hierarchical Navigation Example
4.8.5 Login Flow Example
5. Xamarin.Forms & REST WebService
5.1 Rest service를 위한 클래스(HttpClient, HttpResponseMessage, HttpContent, HttpWebRequest)
5.2 Xamarin.Forms 안드로이드에서 자바기반 스프링 프레임워크(스프링 부트)로 작성한 웹서비스 호출 실습.
5.3 자마린 앱에서 스프링프레임워크/스프링부트 RESTful기반 웹서비스 Call 실습, JSON 파싱하기[웹서비스는 자바,스프링으로 모바일 앱은 자마린으로!]

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

ClickOnce 보안 및 배포  (0) 2023.07.18
basic 3*3 frm hexa,cs,code  (0) 2023.07.13
mode con cols=80 lines=50  (0) 2023.06.11
REDIS 필수정리  (0) 2022.08.31
객체 지향(Object oriented) 프로그래밍  (0) 2022.06.17

수정코드)

void AddTxtLines(System.Windows.Forms.RichTextBox tmp, string text, int maxLines)
{
    if(true)
    {
        try
        {
            if(tmp.Lines.Count() >= maxLines)
            {
                List<string> lines = tmp.Lines.ToList();
                lines.RemoveAt(0);
                tmp.Lines = lines.ToArray();
            }
        }
        catch(AccessViolationException accexp)
        {
            Console.WriteLine("[MUSIC_DEBUG]:" + accexp.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("[MUSIC_DEBUG]:" + e.Message);
        }
    }
    try
    {
        tmp.AppendText(text);
        tmp.ScrollToCaret();
    }
    catch(AccessViolationException accexp)
    {
        Console.WriteLine("[MUSIC_DEBUG]:" + accexp.Message);
    }
    catch(Exception e)
    {
        Console.WriteLine("[MUSIC_DEBUG]:" + e.Message);
    }
}

music_22_00.Designer.cs
0.01MB
program.cs
0.00MB
music_22_00.cs
0.01MB

수정코드)

void AddTxtLines(System.Windows.Forms.RichTextBox tmp, string text, int maxLines)
{
    if(true)
    {
        try
        {
            if(tmp.Lines.Count() >= maxLines)
            {
                List<string> lines = tmp.Lines.ToList();
                lines.RemoveAt(0);
                tmp.Lines = lines.ToArray();
            }
        }
        catch(AccessViolationException accexp)
        {
            Console.WriteLine("[MUSIC_DEBUG]:" + accexp.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("[MUSIC_DEBUG]:" + e.Message);
        }
    }
    try
    {
        tmp.AppendText(text);
        tmp.ScrollToCaret();
    }
    catch(AccessViolationException accexp)
    {
        Console.WriteLine("[MUSIC_DEBUG]:" + accexp.Message);
    }
    catch(Exception e)
    {
        Console.WriteLine("[MUSIC_DEBUG]:" + e.Message);
    }
}

music_18_00.Designer.cs
0.01MB
program.cs
0.00MB
music_18_00.cs
0.01MB

수정코드)

void AddTxtLines(System.Windows.Forms.RichTextBox tmp, string text, int maxLines)
{
    if(true)
    {
        try
        {
            if(tmp.Lines.Count() >= maxLines)
            {
                List<string> lines = tmp.Lines.ToList();
                lines.RemoveAt(0);
                tmp.Lines = lines.ToArray();
            }
        }
        catch(AccessViolationException accexp)
        {
            Console.WriteLine("[MUSIC_DEBUG]:" + accexp.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("[MUSIC_DEBUG]:" + e.Message);
        }
    }
    try
    {
        tmp.AppendText(text);
        tmp.ScrollToCaret();
    }
    catch(AccessViolationException accexp)
    {
        Console.WriteLine("[MUSIC_DEBUG]:" + accexp.Message);
    }
    catch(Exception e)
    {
        Console.WriteLine("[MUSIC_DEBUG]:" + e.Message);
    }
}

 

music_14_00.Designer.cs
0.01MB
program.cs
0.00MB
music_14_00.cs
0.01MB

+ Recent posts