본문 바로가기

Programming66

[C#] 확장 메소드 (Extension Methods) 확장 메소드 (Extension Methods) C#에서 이미 만들어진 클래스에 메소드를 추가하는 방법에 대하여 알아보자. 확장 메소드란? 프로그래밍을 하다보면 이미 만들어진 클래스에 새로운 메소드를 추가해야 할 때가 생긴다. 직접 만든 클래스라면 메소드를 추가하여 수정이 가능하지만, 남이 만든 클래스(라이브러리, C# 기본 제공 클래스 등)는 소스코드를 수정할 수 없다. 대표적인 대안으로 부모클래스를 상속하여 자식클래스에서 메소드를 추가해 확장하는 방법이 있는데, 이는 메소드가 추가될 뿐인데 상속을 유발하기 때문에 프로그램 설계상 가장 좋은 방법은 아니다. C#은 상속을 하지 않고도 이미 만들어진 클래스에 새로운 메소드를 추가 확장할 수 있는 방법을 제공하며, 이를 확장 메소드(Extension met.. 2019. 11. 21.
[Javascript] 세미콜론 자동 삽입과 중괄호 위치 버그 세미콜론 자동 삽입과 중괄호 위치 버그 자바스크립트의 세미콜론 자동 삽입에 의해 나타날 수 있는 현상인 중괄호 위치 버그에 대해 알아보자. 세미콜론 자동 삽입 프로그래머가 세미콜론(;)을 삽입하지 않은 채 행을 종료하면, 자바스크립트에서는 코드가 실행될 때 행의 마지막에 세미콜론을 자동 삽입한다. // 예시 1 var number = 100 // 예시 2 console.log(number) 위 코드 두 줄은 각각 행의 마지막에 세미콜론을 붙이지 않은 코드이지만 실제로는 동작한다. 세미콜론을 넣지 않고 number 변수에 100을 할당하는 코드이다. 실제로 number 변수의 값을 조사해보면 100이 할당된 것을 확인해 볼 수 있다. console.log 함수를 이용해 number 변수의 값을 다시 한 번.. 2019. 11. 10.
[Javascript] 문자열 replace와 replaceAll ▶ 주제 : 문자열 replace와 replaceAll. 자바스크립트에서의 문자열 replace 처리 동작과 replaceAll 하는 방법을 알아보자. ▶ 문자열 replace 문자열 replace 기법은 주어진 문자열의 내부에서 패턴 A에 해당하는 부분을 문자열 B로 교체하는 방법이다. 'aaa?bbb?ccc' 이라는 문자열에서 ?을 @로 교체(replace)한다고 했을 때 'aaa@bbb@ccc'로 변경된다고 이해하면 된다. 겨우 이런 것 가지고 글을 쓰는 이유는 Javascript에서의 replace 함수가 다른 메이저 언어들의 replace 함수와 동작이 다르기 때문이다. ▷ Javascript의 replace : let str = 'aaa?bbb?ccc'; console.log(str.repla.. 2019. 10. 20.
[프로그래밍 이론] 반각문자 @와 전각문자 @ ▶ 주제 : 반각문자 @와 전각문자 @ 반각문자와 전각문자에 대해 알아보고 실제 프로그래밍 상황에서 어떤 문제가 발생하는지에 대해 알아보자. ▶ 상황 다국어를 지원하는 모바일 앱을 개발 및 테스트 하던 도중 일본어 환경에서 회원가입이 되지 않는 문제가 발생하였다. 정규식을 통해 이메일 형식 아이디를 입력받게 구현되있었는데, 제대로 입력했음에도 정규식이 통과하지 않는 것이었다! ▶ 원인 위의 상황이 발생한 원인은 일반적인 자판의 반각 골뱅이표시(@)와 일본어 자판의 전각 골뱅이표시(@)가 서로 다른 문자이기 때문에 반각 골뱅이표시만으로 이메일 형식을 검사하는 정규식에 통과하지 못했던 것이다. 즉, 두 골뱅이표시를 나타내는 유니코드가 각각 다르다. 완전히 다른 문자라는 것이다. (이 글을 보고있는 환경에 따.. 2019. 10. 10.
[C#] string + string 과 StringBuilder.Append() 차이 ▶ 주제 : 문자열을 더할때 자주 쓰이는 string + string 연산과 StringBuilder 클래스의 Append 함수 연산의 차이를 비교해보자. ▶ 문자열을 더하는 방법 C#에서 문자열을 더하는 방법은 여러가지가 있지만 가장 잘 알려진 방법은 아래와 같은 방법일 것이다. string result = "hello" + "world"; // "helloworld" 문자열과 문자열을 더하기 기호로 이어붙이는 방법이다. 단순하게 표현할 수 있어서 C# 이외에도 대부분의 언어들이 지원하고 있는 기능이다. 두 번째로 알려진 방법은 StringBuilder 클래스의 Append 함수를 이용하여 builder 객체에 문자열을 이어붙인 후 꺼내는 방법이다. var builder = new StringBuild.. 2019. 9. 23.
[Flutter] Windows 10에 Flutter 개발환경 설치하기 Windows 10에 Flutter 개발환경 설치하기 윈도우 환경에서 플러터 앱을 개발하는 방법을 알아보자 작성 환경 OS : Windows 10 IDE : Android studio 3.5 이상 (또는 Intellij IDEA 2019.1.2 이상) 작업 순서 1. Intellij IDEA 또는 Android studio 설치 2. Flutter plugin과 SDK 설치 3. Android SDK 설치 Intellij IDEA 또는 Android studio 설치 Flutter 어플리케이션을 제작하기 위한 IDE를 설치해야한다. 이 글에서는 Android studio로 셋팅할 것이다. Download link : https://developer.android.com/studio 2019. 9. 15.
[Flutter] Mac에 Flutter 개발환경 설치하기 ▶ 주제 : Mac에 Flutter 개발환경 설치하기. ▶ 작성 환경 ▷ OS : Mac ▷ IDE : Android studio 3.5 이상 (또는 Intellij IDEA 2019.1.2 이상) ▶ 작업 순서 ▷ 1. Intellij IDEA 또는 Android studio 설치 ▷ 2. Flutter plugin과 SDK 설치 ▷ 3. Android 개발환경 설정 ▷ 4. iOS 개발환경 설정 ▶ 1. Intellij IDEA 또는 Android studio 설치 Flutter 어플리케이션을 제작하기 위한 IDE를 설치해야한다. 보통은 Android studio나 VS Code를 사용한다. 참고로 말하자면 Android studio에서도 Flutter iOS 앱 개발이 가능하니 혹시나 개발이 안될거.. 2019. 8. 31.
[Node.js] PayloadTooLargeError: request entity too large PayloadTooLargeError: request entity too large. Node.js에서 PayloadTooLargeError가 발생하는 경우와 해결법에 대하여 알아보자. 발생 원인 보통 express를 이용하여 Node.js에서 웹 서버를 구축할 때 const app = express(); ... app.use(express.json()); // 혹은 bodyParser.json() app.use(express.urlencoded()); // 혹은 bodyParser.urlencoded() ... request의 내용을 파싱하여 라우터가 이용할 수 있도록 위와 같이 두 가지 파서(body-parser 패키지에 있음)를 등록하게 된다. PayloadTooLargeError가 발생하는 원인은.. 2019. 8. 11.
[Node.js] .env 환경변수 ▶ 주제 : .env 환경변수 Node.js에서 프로그래밍에 필요한 값들을 서술할 수 있는 .env 환경변수 파일에 대하여 알아보자. ▶ 예시 Node.js에서는 프로젝트 디렉토리에 .env라는 이름의 파일이 존재하면 환경변수처럼 소스코드로 가져와서 사용할 수 있다. .env 파일의 내용은 key=value 형태로 써야하며 문장의 맨 앞에 #를 붙이면 주석을 쓸 수도 있다. # This is sample .env MESSAGE=hello NUMBER=1234 .env을 이용하기 위해서는 프로젝트에 dotenv 패키지를 설치해야한다. var express = require('express'); var router = express.Router(); require('dotenv').config(); rout.. 2019. 5. 24.
[프로그래밍 이론] JWT (Json Web Token) ▶ 주제 : JWT (Json Web Token). 서버가 클라이언트의 권한 및 인증정보가 표현된 JSON을 암호화 후 Token으로 발급하여, 클라이언트가 서버에 통신할 때 Session 없이 상태를 표현할 수 있도록 해주는 인증방식. ▶ Stateless (상태없음) JWT를 왜 사용하는지에 대해서는 Stateful&Stateless 서버의 차이점부터 알아야 한다. ▷ Stateful 서버 : 서버가 클라이언트의 상태정보(Session)를 보유 및 유지하며, 상태정보를 바탕으로 클라이언트에게 서비스를 제공한다. 상태정보는 서버 컴퓨터의 메모리 혹은 DB에서 관리된다. ▷ Stateless 서버 : 서버가 클라이언트의 상태정보를 보유하지 않으며 클라이언트측의 요청만으로 서비스를 제공한다. 상태정보라는 .. 2019. 4. 19.
[Spring boot] Spring boot에서 다국어 지원하기 (2) ▶ 주제 : Spring boot에서 다국어 지원하기 (2). 클라이언트의 언어&국가정보를 바탕으로 각기 다른 언어 리소스를 호출하는 방법을 알아보자. ▶ 관련 문서 ▷ Spring boot에서 다국어 지원하기 (1) [Spring boot] Spring boot에서 다국어 지원하기 (1) ▶ 주제 : Spring boot에서 다국어 지원하기 (1). Spring boot에서 클라이언트의 언어&국가정보를 인식하는 방법과 언어&국가정보가 없을 경우에 대해 대처하는 방법을 알아보자. ▶ 관련 문서 ▷ Spring boot에서.. spiralmoon.tistory.com ▶ 작성 환경 ▷ Spring boot 2.0 ▶ 방법 Spring에서는 미리 준비해둔 여러 언어 리소스들을 클라이언트의 언어&국가정보에 따.. 2019. 4. 8.
[Spring boot] Spring boot에서 다국어 지원하기 (1) ▶ 주제 : Spring boot에서 다국어 지원하기 (1). Spring boot에서 클라이언트의 언어&국가정보를 인식하는 방법과 언어&국가정보가 없을 경우에 대해 대처하는 방법을 알아보자. ▶ 관련 문서 ▷ Spring boot에서 다국어 지원하기 (2) [Spring boot] Spring boot에서 다국어 지원하기 (2) ▶ 주제 : Spring boot에서 다국어 지원하기 (2). 클라이언트의 언어&국가정보를 바탕으로 각기 다른 언어 리소스를 호출하는 방법을 알아보자. ▶ 관련 문서 ▷ Spring boot에서 다국어 지원하기 (1) [Spring boo.. spiralmoon.tistory.com ▷ ISO 639-1 List of ISO 639-1 codes - Wikipedia Wikim.. 2019. 4. 2.
반응형