일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Data Structure
- 도커
- github
- git
- C언어 포인터
- c언어
- jupyter
- vim
- c# 윈폼
- c# winform
- Unity
- 포인터
- C# delegate
- gitlab
- c#
- 유니티
- docker
- HTML
- 다트 언어
- Algorithm
- 구조체
- Python
- jupyter lab
- c# 추상 클래스
- dart 언어
- 깃
- Flutter
- Houdini
- C++
- 플러터
- Today
- Total
목록분류 전체보기 (507)
nomad-programmer
로컬 함수 (Local Function)는 메소드 안에서 선언되고, 선언된 메소드 안에서만 사용되는 특별한 함수이다. 클래스의 멤버가 아니기 때문에 메소드가 아니라 함수 (Function)라고 부른다. 선언 방법은 메소드와 다르지 않지만, 로컬 함수는 자신이 존재하는 지역에 선언되어 있는 변수를 사용할 수 있다. 로컬 함수는 메소드 밖에서는 다시 쓸 일 없는 반복적인 작업을 하나의 이름 아래 묶어 놓는 데 제격이다. 람다식과 더불어 프로그래머에게 코드를 간추릴 수 있는 또 하나의 옵션을 제공하는 것이다. using System; namespace CSharpExample { class MainApp { static string ToLowerString(string input) { // arr -> cha..
메소드의 매개 변수는 기본 값을 가질 수 있다. 기본 값을 가지는 매개 변수는 필요에 따라 데이터를 할당하거나 할당하지 않을 수 있기 때문에 이를 "선택적 매개 변수 (Optional Parameter)" 라고 부른다. 선택적 매개 변수는 메소드의 사용자에게 사용하지 않는 매개 변수를 염두에 두지 않도록 편의를 제공하지만, 또 한편으로는 모호함이라는 스트레스도 같이 준다. 코드를 작성할 때는 자동 완성의 도움을 받아 어느 매개 변수에 데이터를 할당하는지 파악할 수 있지만, 작성한 지 한참이 지난 코드를 다시 들려다 보면 어느 코드에 데이터를 할당했는지 분간이 잘 안될 때도 있다. 매개 변수의 수가 많고 여기에 선택적 매개 변수도 여럿 포함되면 더 헛갈려진다. 이런 경우 명명된 매개 변수의 도움을 받으면 ..
메소드를 호출할 때 매개 변수 목록 중 어느 매개 변수에 데이터를 할당할 것인지를 지정하는 것은 "순서"이다. 대개의 경우 순서에 근거해서 매개 변수에 데이터를 할당하는 스타일을 사용하지만, C#은 또 다른 스타일도 지원한다. 물론 C#뿐 아니라 다른 언어에서도 지원한다. 명명된 매개 변수 (Named Parameter) 말 그대로 메소드를 호출할 때 매개 변수의 이름에 근거해서 데이터를 할당하는 기능이다. 명명된 매개 변수를 사용하기 위해 메소드 선언에 손댈 일은 전혀 없다. 메소드를 호출할 때만 매개 변수의 이름 뒤에 콜론(:)을 붙인 뒤 그 뒤에 할당할 데이터를 넣어주면 된다. using System; namespace BrainCSharp { class HelloWorld { static void..
코딩을 하다 보면 똑같은 그저 매개 변수의 "수"가 다르다는 이유만으로 똑같은 메소드를 여러 가지 버전으로 오버로딩하고 싶을 때가 있다. 이런 경우를 위해 C#은 "가변 길이 매개 변수"라는 기능을 제공한다. 가변 길이 매개 변수란, 그 개수가 유연하게 변할 수 있는 매개 변수를 말한다. 이것을 이용하면 다음과 같이 입력되는 모든 매개 변수의 합을 구하는 Sum() 메소드를 오버로딩하지 않고도 구현할 수 있다. int total = 0; total = Sum(1, 2); total = Sum(1, 2, 3); total = Sum(1, 2, 3, 4, 5, ...); 가변 길이 매개 변수는 params 키워드와 배열을 이용해서 선언한다. 매개 변수의 개수가 유연하게 정해져 있다면 가변 길이 매개 변수보다..
대개의 경우 메소드의 결과는 하나면 충분하다. 허나 두 개 이상의 결과를 요구하는 특별한 메소드도 있다. 이를테면 나눗셈을 구현할 때 제수와 피제수를 매개 변수로 넘겨받고 결과는 몫과 나머지 두 개로 반환할 필요가 있다. 이런 경우, ref 키워드를 이용해 메소드를 구현하면 몫과 나머지를 한 번에 반환할 수 있다. ref만으로도 여러 개의 결과를 메소드로부터 얻어올 수 있지만 C#은 조금 더 "안전한 방법"으로 똑같은 일을 할 수 있게 해준다. 바로 "out" 키워드를 이용한 "출력 전용 매개 변수"가 그것이다. out 키워드의 사용법은 간단하다. 메소드의 선언부와 호출부에 ref키워드 대신 out 키워드를 사용하는 것이 전부이다. 하지만 out은 ref에게는 없는 "안전 장치"가 있다. ref 키워드를..
C#에서 참조에 의한 매개 변수 전달은 아주 쉽다. ref 키워드만 입력해주면 된다. 물론 C++도 쉽지만... C#의 ref 키워드는 C++의 &(참조자)와 똑같은 개념이다. 매개 변수를 메소드에 참조로 전달 using System; namespace SwapRef { class MainApp { static void Swap(ref int a, ref int b) { int temp = b; b = a; a = temp; } static void Main(string[] args) { int x = 3; int y = 4; Console.WriteLine($"x:{x}, y:{y}"); Swap(ref x, ref y); Console.WriteLine($"x:{x}, y:{y}"); } } } /*..
goto 레이블; 레이블: // 코드 goto 문은 레이블이 가리키는 곳으로 바로 뛰어 넘어간다. 상당수의 프로그래머들은 goto문을 별로 좋아하지 않는다. goto문이 코드의 흐름을 자주 끊어 읽기 어렵게 만들기 때문이다. 컴퓨터 과학 학계에서는 "goto의 해악"을 주제로 하는 논문도 여러 편 발표된적이 있다. 그럼에도 불구하고 goto문도 유용한 경우가 있는데. 다음 코드처럼 대표적인 예가 중첩된 반복문을 단번에 뚫고 나오기 위해 사용하는 것이다. using System; namespace CSharpExam { class GotoExample { static int Main(string[] args) { Console.Write("종료 조건 입력: "); string input = Console...
정수와 문자열 형식 외에도, C# 7.0부터 switch문에 데이터 형식을 조건으로 사용할 수 있게 되었다. 데이터 형식에 따라 분기할 때에는 case 절에서 데이터 형식 옆에 반드시 식별자를 붙여줘야 한다. 선언한 식별자는 case 절 안에서 사용할 수 있다. 또한 when 절을 이용하여 추가적인 조건 검사를 수행할 수 있다. when은 case 절에 붙여 사용한다. when 절을 if 문과 비슷하다고 생각하면 된다. using System; namespace CSharpExam { class SwitchExample { static int Main(string[] args) { object obj = null; string s = Console.ReadLine(); if (int.TryParse(s,..
null 병합 연산자 ?? 는 null 조건부 연산자처럼 프로그램에서 종종 필요한 변수/객체의 null 검사를 간결하게 만들어주는 역할을 한다. ?? 연산자는 두 개의 피연자를 받아들이고 왼쪽 피연산자가 null인지를 평가한다. 평가 결과가 null이 아닌 것으로 나타나면 왼쪽 피연산자를 그대로 반환하고, 만약 왼쪽 피연산자가 null인 것으로 평가되면 오른쪽 피연산자를 반환한다. using static System.Console; namespace BrainCSharp { class HelloWorld { static int Main(string[] args) { int? num = null; WriteLine($"{num ?? 0}"); num = 99; WriteLine($"{num ?? 0}");..
널(null) 조건부 연산자 ?.는 C# 6.0에서 도입되었다. ?. 가 하는 일은 객체의 멤버에 접근하기 전에 해당 객체가 null인지 검사하여 그 결과가 참(즉, 객체가 null)이면 그 결과로 null을 반환하고, 그렇지 않은 경우에는 . 뒤에 지정된 멤버를 반환한다. // == 연산자를 이용한 코드 Foo foo = null; int? bar; if (foo == null) bar = null; else bar = foo.member; // ?. 연산자를 이용한 코드 Foo foo = null; int? bar; bar = foo?.member; ?[] 연산자 ?[] 연산자도 동일한 기능을 수행하는 연산자이다. ?[] 는 ?. 와 비슷한 역할을 하지만, 객체의 멤버 접근이 아닌 배열과 같은 컬렉션..
날짜와 시간을 표현하기 위해서는 DateTime 클래스가 필요하다. 그리고 System.Globalization.CultureInfo 클래스의 도움을 받으면 C# 코드만으로 날짜 및 시간 서식을 통제할 수 있다. 서식 지정자 대상 서식 설명 y 연도 yy: 두 자릿수 연도 yyyy: 네 자릿수 연도 M 월 M: 한 자릿수 월 MM: 두 자릿수 월 d 일 d: 한 자릿수 일 dd: 두 자릿수 일 h 시 (1~12) h: 한 자릿수 시 hh: 두 자릿수 시 H 시 (1~23) H: 한 자릿수 시 HH: 두 자릿수 시 m 분 m: 한 자릿수 분 mm: 두 자릿수 분 s 초 s: 한 자릿수 초 ss: 두 자릿수 초 tt 오전/오후 tt: 오전/오후 ddd 요일 ddd: 약식 요일 dddd: 전체 요일 Cultu..
공용 형식 시스템의 형식 클래스 이름 C# 형식 C++ 형식 VB 형식 System.Byte byte unsigned char Byte System.SByte sbyte char SByte System.Int16 short short Short System.Int32 int int 또는 long Integer System.Int64 long __int64 Long System.UInt16 ushort unsigned short UShort System.UInt32 uint unsigned int 또는 unsigned long UInteger System.Uint64 ulong unsigned __int64 ULong System.Single float float Single System.Double do..
C#은 변수나 상수에 대해 꼼꼼히 형식 검사를 진행하는 강력한 형식의 언어이다. 강력한 형식 검사는 프로그래머의 실수르 줄여 주는 장점이 있다. 의도치 않은 형식의 데이터를 읽거나 할당하는 일을 막아준다. 예를 들어 원래는 정수 형식의 데이터를 담기 위해 n이라는 변수를 선언했는데, 다른 프로그래머가 이 코드를 물려받아서는 중간에 문자열 형식을 담아 쓰려고 할 수 있다. 약한 형식 검사는 이런 문제를 막을 수 없지만, 강력한 형식 검사는 이 문제를 컴파일 타임에 찾아내 드러내 준다. 하지만 약한 형식 검사가 단점만 있는 것은 아니다. 코드를 작성하는 단계에서는 약한 형식 검사가 더 편리하다. 귀찮게 int, long, uint, ulong 등과 같은 형식을 외울 필요 없이 일단 변수를 선언해서 데이터를 ..
오버플로우 (Overflow) 변수는 데이터를 담는 그릇과 같다. 그릇에 용량을 넘어사는 양의 물을 담으면 넘치는 것처럼, 변수에도 데이터 형식의 크기를 넘어서는 값을 담으면 넘쳐 흐른다. 이런 현상을 "오버플로우(Overflow)"라고 한다. using System; namespace FlowExam { class FlowExample { static int Main(string[] args) { byte variable = byte.MaxValue; Console.WriteLine($"{variable}"); // 오버플로우 발생 variable++; Console.WriteLine($"{variable}"); return 0; } } } /* 결과 255 0 */ byte의 최대값은 255이다. 2..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cEVo5P/btqGAVi88Gy/7qHDe7hoHTaPXml0Ok1zaK/img.png)
파라미터 그룹 생성 한 후 파라미터 편집을 클릭하여 편집 모드에 들어간다. 타임존 변경 Character Set 변경 character 항목들은 모두 utf8mb4로 변경. collation 항목들은 utf8mb4_general_ci로 변경. utf8과 utf8mb4의 차이? 이모지 저장 가능 여부 character_set_client character_set_connection character_set_database character_set_filesystem character_set_results character_set_server collation_connection collation_server Max Connection 변경 RDS의 Max Connection은 인스턴스 사양에 따라 자동으로..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/pwq17/btqGvdEi861/4J9LzF5qdGNK5CUsUQryR0/img.png)
위치 관련 position 속성 * 자손의 position 속성에 absolute 키워드를 적용하면 부모는 height 속성을 사용해야 한다. * 자손의 position 속성에 absolute 키워드를 적용하면 부모의 position 속성에는 relative 키워드를 적용해야 한다. float 속성 * 자손에 float 속성을 적용하면 부모의 overflow 속성에는 hidden 키워드를 적용해야 한다. 위의 예를 보듯이 자식이 float속성을 지녔을 때 부모는 overflow 속성의 hidden을 가지고 있어야 제대로 나오는 것을 확인할 수 있다. 1 2 clear 속성에 both 키워드를 적용해도 마찬가지 기능을 수행한다. 하지만 현대에는 overflow 속성을 더 많이 사용한다. 레이아웃을 구성할 ..
Lorem ipsum lorem ipsum dolor sit amet, consectetur adipiscing elit. 체크박스를 체크해보세요 lorem ipsum lorem ipsum dolor sit amet, consectetur adipiscing elit.
더미 이미지가 필요하다면? 웹 페이지를 디자인하다보면 이미지를 아직 완성하지 못해 넣을 수 없는 경우가 있다. 이미지 크기는 아는데 아직 이미지가 없을 때 사용할 수 있는 사이트는 소개한다. https://placeholder.com/ Placeholder.com: Placeholder.com – The Free Image Placeholder Service Favoured By Designers What Is Placeholder.com? Placeholder.com generates custom placeholder images on the fly, like these examples:- How To Use Our Placeholders Just specify the image size after o..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RQKEQ/btqQLl7gUZd/4bnOKZnW4lCQGYZrTcKW70/img.gif)
트랜지션 속성은 한 스타일에서 다른 스타일로 바뀔 때 진행 시간을 지정해서 부드럽게 변화하도록 한 것이다. 따라서 트랜지션을 잘 활용해도 부드러운 애니메이션 효과를 만들 수 있다. 하지만 animation 속성을 이용하면 트랜지션보다 애니메이션을 더 쉽게 만들 수 있다. animation 속성과 transition 속성 animation 속성과 transition 속성은 비슷한 점이 많다. 시작 스타일과 끝나는 스타일을 지정하면 CSS에서 중간 스타일을 자동으로 추가하여 전체적으로 부드럽게 변화하는 애니메이션 효과를 만들어낸다. animation 속성은 애니메이션에 소요되는 시간이나 지연 시간 등을 지정하는 것은 transition 속성과 같지만, 애니메이션의 시작에서부터 끝날 때까지 어느 지점이든 @k..
최신 브라우저라 하더라도 HTML5 스펙의 기능들이 어떤 브라우저에서는 되고, 어떤 브라우저에서는 안되는 것을 브라우저 파편화(browser fragmentation)이라고 한다. 이런 파편화를 줄이고 비슷하게라도 같은 결과를 만들기 위해 여러 가지 방법들을 동원하는데 이런 방법들을 통틀어 "심(shim)"이라고 부르며, "폴백(fallback)"이라 부르기도 한다. html5shim.js도 shim의 일종이다. https://github.com/aFarkas/html5shiv aFarkas/html5shiv This script is the defacto way to enable use of HTML5 sectioning elements in legacy Internet Explorer. - aFark..