C샵 2020. 4. 16. 20:32

 

C#은 .NET Framework 버전 및 Visual Studio 버전과 밀접한 관련이 있으며, 다음 도표에서 각 버젼별 연관성을 살펴 볼 수 있다.

 

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 1열 선택1열 다음에 열 추가
  • 2열 선택2열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가
  • 1행 선택1행 다음에 행 추가
  • 2행 선택2행 다음에 행 추가
  • 3행 선택3행 다음에 행 추가
  • 4행 선택4행 다음에 행 추가
  • 5행 선택5행 다음에 행 추가
  • 6행 선택6행 다음에 행 추가
  • 7행 선택7행 다음에 행 추가
  • 8행 선택8행 다음에 행 추가
  • 9행 선택9행 다음에 행 추가
  • 10행 선택10행 다음에 행 추가
  • 11행 선택11행 다음에 행 추가
  • 12행 선택12행 다음에 행 추가
  • 13행 선택13행 다음에 행 추가

열 너비 조절

행 높이 조절

.NET 버전

C# 버전

Visual Studio

.NET 1.0

C# 1.0

Visual Studio .NET

.NET 1.1

C# 1.1

Visual Studio .NET 2003

.NET 2.0

C# 2.0

Visual Studio 2005

.NET 3.0

C# 2.0

Visual Studio 2005 Extensions

.NET 3.5

C# 3.0

Visual Studio 2008

.NET 4.0

C# 4.0

Visual Studio 2010

.NET 4.5

C# 5.0

Visual Studio 2012

Visual Studio 2013

.NET 4.6

C# 6.0

Visual Studio 2015

.NET 4.6.2

C# 7.0

Visual Studio 2017

.NET 4.7

C# 7.1

Visual Studio 2017 Update 15.3

.NET 4.7.1

C# 7.2

Visual Studio 2017 Update 15.5

.NET 4.7.2

C# 7.3

Visual Studio 2017 Update 15.7

.NET Core 3.0

C# 8.0

Visual Studio 2019 Update 16.3 + .NET Core 3.0

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Visual Studio 2010은 .NET 4.0 뿐만 아니라 .NET 2.0, .NET 3.0, .NET 3.5도 지원한다.

Visual Studio 2008은 .NET 3.5 뿐만 아니라 .NET 2.0, .NET 3.0도 지원한다.

C# 7.1, C# 7.2, C# 7.3은 Minor 버전으로 자동으로 Enable되지 않으며, VS에서 C# 프로젝트 속성창 => Build 탭 => Advanced 버튼 => Language Version 콤보박스에서 해당 버전을 선택해야 한다.

C# 8.0을 사용하기 위해서는 VS 2019를 Update 16.3 이상으로 업데이트하고 .NET Core 3.0 을 설치한 후 사용한다. C# 8.0은 .NET Framework 4.8에서 사용할 수 없다.

 

 


C# 버전별 주요 기능

 

다음은 C# 버전별로 새로 추가된 주요 기능들을 요약한 것이다.

 

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 1열 선택1열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가
  • 1행 선택1행 다음에 행 추가
  • 2행 선택2행 다음에 행 추가
  • 3행 선택3행 다음에 행 추가
  • 4행 선택4행 다음에 행 추가
  • 5행 선택5행 다음에 행 추가
  • 6행 선택6행 다음에 행 추가
  • 7행 선택7행 다음에 행 추가

열 너비 조절

행 높이 조절

C# 버전

주요 기능

C# 2.0

C# Generics

Anonymous Method (무명 메서드)

Nullable Type

Partial Type

C# yield 키워드

Delegate에 대한 Covariance / Contravariance

C# 3.0

Lambda Expression (람다식)

Anonymous Type (익명 타입)

Extension Method (확장 메서드)

C# var 키워드 (implicit type)

LINQ

Expression Tree

C# 4.0

C# dynamic (Late binding)

Named Argument

Optional Argument

Indexed Property

보다 쉬운 Office COM API 지원

C# 5.0

C# async / await

Caller Information

C# 6.0

널 조건 연산자 (Null-conditional operator)

문자열 내삽(內揷) 기능 (String Interpolation)

Dictionary Initializer

nameof 연산자

using static 문

catch/finally 블럭에서 await 사용

Exception Filter 지원

자동 속성 초기자 (Auto-Property Initializer)

읽기전용 자동 속성 (Getter only)

Expression-bodied member 사용

C# 7.0

C# 7.0: 패턴 매칭

C# 7.0: 튜플 (Tuple)

C# 7.0: 로컬 함수 (Local Function)

C# 7.0: out 파라미터

C# 7.0: 자리수 분리자와 이진 리터럴

C# 7.0: Deconstructor

C# 7.0: ref local 과 ref return

C# 7.0: async 커스텀 리턴 타입

C# 7.0: 향상된 Expression-bodied 표현

C# 7.0: throw expression

C# 8.0

C# 8.0: 디폴트 인터페이스 멤버 (Default Inteface Members)

C# 8.0: 향상된 패턴 매칭 기능 (Pattern Matching)

C# 8.0: Nullable Reference Type

C# 8.0: 인덱싱과 슬라이싱 (Indexing / Slicing)

C# 8.0: 비동기 스트림 (Async Stream)

C# 8.0: using 선언

C# 8.0: 널 병합 할당 연산자 (Null-coalescing assignment)

C# 8.0: 구조체(struct) 읽기 전용 멤버

C# 8.0: 기타 기능들

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

 

posted by 핵커 커뮤니티
:
C샵 2020. 4. 16. 20:29

C# 프로그래밍 언어 

C#은 마이크로소프트에서 개발된 객체 지향 프로그래밍 언어로서 Java 나 C++와 비슷한 면들을 많이 가지고 있다. C#을 이야기 하면 자연스럽게 .NET Framework을 함께 이야기 해야할 정도로 C#은 .NET Framework을 이용하여 프로그래밍하는 대표적인 언어이다. C#은 윈도우 프로그래밍, 웹 프로그래밍, 게임 및 모바일 프로그래밍 등 모든 영역에서 사용되는 범용 프로그래밍 언어이다 


C# 프로그램 소스코드 

C# 프로그램은 .cs 라는 확장자를 사용한다.
   예) test.cs, test.aspx.cs, test.xaml.cs 
C++와 다르게 C#은 *.h과 같은 별도의 헤더 파일이 없다.

C# 프로그램으로부터 실행 파일을 만들기 위해서는 (1) Visual Studio를 사용하는 경우 C# 프로젝트를 빌드하여 실행파일을 생성하며 (2) Visual Studio 없이 .NET Framework에서 제공되는 C# 컴파일러인 csc.exe를 이용하여 실행파일을 생성할 수 있다. 


 

 

 

 


아주 간단한 C# 프로그램 

다음은 아주 간단한 C# 프로그램 예제로서 Hello World 라는 텍스트를 콘솔 화면에 출력하는 프로그램이다. 

예제

namespace Intro_Ex1 {     class Program     {         static void Main(string[] args)         {             System.Console.WriteLine("Hello World...");         }     } }

  • 모든 C# 프로그램은 Main()이라는 시작 함수(메서드)를 가져야 한다. Main() 메소드는 임의의 클래스 안에서 존재하며, 프로그램 상에 단 1개만 있어야 한다.
  • Main()는 static으로 선언되며, 메소드 인자는 string[] 문자열이다.
  • System.Console은 .NET Framework 클래스이며, WriteLine은 화면에 데이타를 Console클래스의 출력하는 메서드이다.

C# 코멘트 

C# 에서 코멘트를 사용하기 위해서는 (1) 한 라인에 대해 코멘트할 경우 // 을 사용하고 (2) 복수 라인에 대해 코멘트를 할 경우는 /* */ 를 사용한다. 

예제

namespace Intro_Ex2 {         class Program     {         static void Main(string[] args)         {             // 코멘트: 한 라인 코멘트는 두개의 슬래시 사용함                    int a = 1;             int b = 1;  // 코멘트: 하나의 문장 뒤에 코멘트를 달 수 있음             /*                복수 라인에 대한 코멘트                int c;                int d;              */         }     } }

'C샵' 카테고리의 다른 글

[C#] C# 데이터 타입 배워보기 (종류)  (1) 2020.04.16
[C#] C#의 버전 알아보자  (0) 2020.04.16
[C#] TXT 불러오기 소스  (0) 2020.04.13
[C#] 네이버 카페 인증소스  (0) 2020.04.13
posted by 핵커 커뮤니티
:
C++ 2020. 4. 15. 09:11

<stdio.h>#include <Windows.h>#include <conio.h> //로컬디스크 D 에 ID 라는 파일을 생성해주세요 (대문자)#include <string.h> //프로젝트 - 속성 - c/c++ - 전처리기 ;_CRT_SECURE_NO_WARNINGS 를 추가#include <stdlib.h>#include <ctype.h>

void menu(int*); //로그인프로그램메뉴void login(char*, char*); //로그인void singup(char*, char*); //회원가입

int main(void){ int cho; //선택화면에서 선택값을 저장하는곳 char loginid[15]; //로그인에서 아이디를 저장하는곳 char loginpassword[15]; //로그인에서 비밀번호를 저장하는곳 char singupid[15]; //회원가입에서 아이디를 저장하는곳 char singuppassword[15]; //회원가입에서 비밀번호를 저장하는곳

menu(&cho);

switch (cho) { case 1: login(loginid, loginpassword); break; case 2: singup(singupid, singuppassword); break; default: printf("잘못입력하셨습니다."); main(); break; }}

void menu(int *cho) //메인화면{ printf_s("제작자 : staff2303@gmail.com \n"); printf_s("==============================================. \n"); printf_s("1.login \n"); printf_s("2.sing up \n"); printf_s("주의! 문자입력시오류! (수정중)\n"); scanf_s("%d", cho); system("cls");

}

void login(char *loginid, char *loginpassword) //로그인화면

{ FILE *rfp; char file[50]; char loginpassword2[15]; int amo; printf_s("login. \n"); printf_s("==========================================. \n"); printf_s("  I  D   : "); scanf_s("%s", loginid, 15); sprintf_s(file, "D:\\ID\\%s.txt", loginid); // 아이디와 똑같은 파일을 오픈 fopen_s(&rfp, file, "r"); // 파일이없어서열수없을경우 rfp에는 NULL이들어온다. 

if (rfp == NULL) { system("cls"); printf_s("아이디가없습니다. \n"); printf_s("==========================================. \n"); system("Pause"); system("cls"); main(); }

printf_s("PASSWORD : "); scanf_s("%s", loginpassword, 15); printf("암 호 키 : "); scanf_s("%d", &amo); FILE* fp = fopen(file, "r");   //파일오픈 fgets(loginpassword2, 15, fp); //메모장에서 password를  password2로 저장 fclose(fp); for (int i = 0; loginpassword2[i] != '\0'; i++) //password 복호화 { if (isalpha(loginpassword[i])) { if (loginpassword2[i] - amo < 'a') { int plus = 'a' + amo - 1 - loginpassword2[i]; loginpassword2[i] = 'z'; loginpassword2[i] -= plus; } else loginpassword2[i] -= amo; } else { if (loginpassword2[i] - amo < '0') { int plus = '0' + amo - 1 - loginpassword2[i]; loginpassword2[i] = '9'; loginpassword2[i] -= plus; } else loginpassword2[i] -= amo; } }

if (strcmp(loginpassword, loginpassword2) == 0) // 입력한 password와 복호화된 password를 비교 { printf_s("\n로그인완료\n"); system("Pause"); system("cls"); exit(1); } else { system("cls"); printf_s("비밀번호 혹은 암호키가 틀립니다.\n"); system("Pause"); system("cls"); main(); }}

void singup(char *singupid, char *singuppassword)

{ FILE *fp; char file[50]; int amo; printf_s("sing up. \n"); printf_s("==========================================. \n"); printf_s("아이디를입력하시오(15자이내). \n"); scanf_s("%s", singupid, 15); sprintf(file, "D:\\ID\\%s.txt", singupid); // 폴더의 이름과 경로를 file 에 저장 (아이디 = 폴더의 이름) fp = fopen(file, "w+"); fclose(fp); Sleep(1000); system("cls");

printf_s("sing up. \n"); printf_s("==========================================. \n"); printf_s("비밀번호를입력하세요(영문, 숫자 15자이내).\n"); scanf_s("%s", singuppassword, 15); printf_s("암호키를 입력하세요(1~5) \n"); scanf_s("%d", &amo);

for (int i = 0; singuppassword[i] != '\0'; i++) //password 암호화 { if (isalpha(singuppassword[i])) { if (singuppassword[i] + amo > 'z')

{ int less = singuppassword[i] - 'z';

singuppassword[i] = 'a' + amo - 1; singuppassword[i] += less; } else singuppassword[i] += amo; } else { if (singuppassword[i] + amo > '9')

{ int less = singuppassword[i] - '9';

singuppassword[i] = '0' + amo - 1; singuppassword[i] += less; } else singuppassword[i] += amo; } } fp = fopen(file, "w+"); fprintf(fp, "%s", singuppassword); fclose(fp); Sleep(1000); system("cls"); //완료창  printf_s("회원가입완료. \n"); printf_s("==========================================. \n"); Sleep(1000); system("cls"); main();}

'C++' 카테고리의 다른 글

[C++] 네이버 RSA 로그인 소스  (0) 2020.04.14
posted by 핵커 커뮤니티
:
VB 2020. 4. 15. 09:08

먼저 폼에 커맨드버튼 1개, 텍스트 박스 1개를 준비한후,

프로젝트▶구성 요소로 들어간다음 잘 찾아보시면

Microsoft Internet controls 가 있습니다. 그것을 체크하신후,

확인을 누르면 도구 탭에 지구(?)가 등록되는 대요,

그걸 클릭하고 폼에 추가 해 줍니다.

커맨드버튼에 무엇을 입력하냐면

Private sub CommandButton1_click()

WebBrowser1.Navigate (Text1)

End sub 가 되겠죠.

그리고 Text1에 주소를 입력하고 커맨드 버튼을 누르면 웹 브라우저에 인터넷이 표시됩니다.

만약 뒤로, 앞으로, 홈으로, 새로고침 을 추가 하고 싶다면,

뒤로는

Private sub CommandButton1_click()

WebBrowser1.GoBack

End sub 이고

앞으로는

Private sub CommandButton1_click()

WebBrowser1.GoForward

End sub 이고

홈으로는

Private sub CommandButton1_click()

WebBrowser1.GoHome

End sub 이고

새로고침은

Private sub CommandButton1_click()

WebBrowser1.Refresh 가 되겠죠.

만약 웹브라우저에서 새로운 창을 추가하면,

Internet Explorer 로 새 창이 나옵니다.

만약 만든 브라우저로 새 창을 열고 싶을때는,

이 코드를 폼에 추가 하면 됩니다.

Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean)

Dim frm As Form1

Set frm = New Form1

Set ppDisp = frm.WebBrowser1.Object

frm.Show

End Sud

'VB' 카테고리의 다른 글

[VB] 랜덤숫자을 출력해보자  (0) 2020.04.15
[VB] 다음 로그인 소스  (0) 2020.04.15
[VB] 스마일파일 로그인 소스  (0) 2020.04.15
[VB] 한글판 패치하기  (0) 2020.04.15
posted by 핵커 커뮤니티
:
VB 2020. 4. 15. 09:05

Function DaumLogin(id As String, Pw As String) As Boolean

winhttp.Open "POST", "https://logins.daum.net/accounts/login.do?slogin=2", True

winhttp.SetRequestHeader "Host", "logins.daum.net"

winhttp.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0"

winhttp.SetRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"

winhttp.SetRequestHeader "Referer", "https://logins.daum.net/accounts/loginform.do"

winhttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"

winhttp.Send "id=" & id & "&pw=" & Pw

winhttp.WaitForResponse

 

If InStr(winhttp.ResponseText, "Daum 로그인 오류") = 0 Then

 

Login = True

Else

Login = False

 

End If

 

End Function

'VB' 카테고리의 다른 글

[VB] 인터넷창 띄우기 (소스)  (0) 2020.04.15
[VB] 랜덤숫자을 출력해보자  (0) 2020.04.15
[VB] 스마일파일 로그인 소스  (0) 2020.04.15
[VB] 한글판 패치하기  (0) 2020.04.15
posted by 핵커 커뮤니티
:
JAVA 2020. 4. 15. 09:00

public class MyThread extends Thread {//쓰레드 정의 private int id = -1; public MyThread(int id){ this.id = id;//생성할때 받을 인자 } public void run(){ System.out.println( id + "Thread" ); try { Thread.sleep(1000); //1초쉬고 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println( "Thread OUT" );//쓰레드 끝 } public static void main(String[] args) { for(int i = 0 ; i < 10 ; i++ ){//10번 반복 MyThread t = new MyThread(i);//쓰레드 생성 t.start(); //쓰레드 시작 } System.out.println("End"); } }

'JAVA' 카테고리의 다른 글

[JAVA] 자바 다운받기  (0) 2020.04.11
posted by 핵커 커뮤니티
:
SQL 2020. 4. 14. 19:28

JOIN 의 개념

서로 다른 테이블을 공통 컬럼을 기준으로 합치는(결합하는) 테이블 단위 연산

조인의 결과 테이블은 이전 테이블의 컬럼 수의 합과 같다.

SELECT * FROM 테이블 1 JOIN 테이블 2 ON 테이블1.컬럼명 = 테이블2.컬럼명 ...

조인 시 서로 다른 테이블에 같은 컬럼명이 존재하면 구분을 위해 테이블명.컬럼명으로 사용해서 표시

 

예제

- city 테이블과 country 테이블을 조인하시오. (city.CountryCode = country.Code)

- 국가코드와 해당 나라의 GNP 를 표시하시오

 

결과 확인

- SELECT * FROM city JOIN country ON city.CountryCode = country.Code;

- SELECT city.CountryCode, country.GNP FROM city join country ON

city.CountryCode = country.Code;

 

 

 

 

 

 

JOIN 의 종류

조인 시 NULL 값을 허용하는 내부 조인(불가)과 외부조인(허용)으로 구분

INNER JOIN / LEFT JOIN / RIGHT JOIN / FULL JOIN

 

INNER JOIN

조인 시 NULL 값을 허용하지 않음

(NULL 값을 가진 레코드는 조인결과에 빠짐)

LEFT JOIN

조인 시 JOIN 의 왼쪽 테이블의 NULL 값을 포함해서 표시

RIGHT JOIN

조인 시 JOIN 의 오른쪽 테이블의 NULL 값을 포함해서 표시

FULL JOIN

MySQL 은 지원하지 않음

 

 

예제

- city 테이블에 국가코드가 없는 도시가 있는지 확인

- country 테이블에는 존재하지만 도시가 하나도 없는 나라가 있는지 확인

- 이 때 INNER JOIN / LEFT JOIN / RIGHT JOIN 의 차이점으로 확인

 

결과 확인

- SELECT COUNT(*) FROM city WHERE CountryCode is NULL;

- SELECT COUNT(*) FROM city LEFT JOIN country ON city.CountryCode = country.Code;

(country 값이 존재하지 않는 city 는 포함)

- SELECT COUNT(*) FROM city RIGHT JOIN country ON city.CountryCode = country.Code;

(country 중 도시 수가 하나도 없는 country 는 포함)

 

 

 

 

 

 

별명(ALIAS)

SQL 쿼리 결과 생성 시 컬럼명에 대한 별명을 사용해 표시하는 기능

SELECT 테이블명1.컬럼명1 AS 별명1, 테이블명2.컬럼명2 AS 별명2 FROM ....

조인할 때 많이 사용된다

 

예제

- city 테이블과 country 테이블을 조인해서 국가코드 'KOR' 인 나라의 축약표시명(Abbr) 과 정식명(Full Name)을 표시하시오

 

결과 확인

- SELECT city.CoutryCode AS Abbr, country.Name AS FullName FROM city JOIN country on city.CountryCode = country.Code WHERE city.CountryCode = 'KOR';

 

 

 

 

뷰 (VIEW)

SQL 쿼리의 결과값을 임시 테이블로 저장해서 사용할 수 있음

사용 용도가 끝나면 명시적으로 삭제해야 함 (DROP VIEW ....)

CREATE VIEW 뷰명 AS SELECT ...

 

예제

CREATE VIEW sampleView AS SELECT city.CountryCode AS Abbr, country.Name AS FullName FROM city JOIN country ON city.CountryCode = country.Code WHERE city.CountryCode = 'KOR';

SELECT * FROM sampleView;

posted by 핵커 커뮤니티
:
SQL 2020. 4. 14. 19:21

결과값 일부 조회 (ROWNUM, TOP)

SQL 쿼리 결과 중 상위 몇 개만 보여주는 쿼리

SELECT 컬럼명 1, 컬럼명 2, ... FROM 테이블명 WHERE 조건절 LIMIT 숫자

대표적인 비표준기능 (DBMS 종류마다 다름)

예제

- 국가코드가 'KOR' 인 도시들 중 인구수 많은 순서로 상위 10개만 표시하시오

결과 확인

- SELECT CountryCode FROM city WHERE CountryCode = 'KOR' ORDER BY Population DESC LIMIT 10;

집합함수 (Aggregation Function)

테이블의 전체 레코드를 대상으로 특정 컬럼을 적용해서 한 개의 값을 리턴하는 함수

COUNT(), AVG(), SUM(), MIN(), MAX(), FIRST(), LAST(), ....

     - COUNT()   ->  레코드의 개수를 리턴하는 함수

     - SUM() / AVG()   ->   컬럼값의 합/평균을 리턴

     - MIN() / MAX()   ->   컬럼값의 최소/최대값을 리턴

사용법 : SELECT aggregation_function(컬럼명) FROM 테이블명 WHERE 조건절

예제

- City 테이블에서 국가코드가 'KOR' 인 도시의 수를 표시하시오

- City 테이블에서 국가코드가 'KOR' 인 도시들의 인구수 총합 / 평균을 구하시오

- City 테이블에서 국가코드가 'KOR' 인 도시들의 인구수 중 최대값 / 최소값을 구하시오

결과 확인

- SELECT COUNT(*) FROM city WHERE CountryCode = 'KOR'

- SELECT SUM(Population) FROM city WHERE CountryCode = 'KOR'

- SELECT AVG(Population) FROM city WHERE CountryCode = 'KOR'

- SELECT MIN(Population) FROM city WHERE CountryCode = 'KOR'

- SELECT MAX(Population) FROM city WHERE CountryCode = 'KOR'

유용한 함수들

LENGTH() - 레코드의 문자열 컬럼의 글자수를 리턴한다.

MID() - 문자열의 중간부분을 리턴한다.

UPPER() / LOWER() - 문자열을 대문자/소문자로 리턴한다.

ROUND() - 레코드의 숫자 컬럼값을 반올림

posted by 핵커 커뮤니티
: