운영체제 마다 서로 다른 줄바꿈 문자를 사용합니다. 대표적으로 Microsoft 계열 운영체제에서는 CR+LF, Unix 계열 운영체제에서는 LF를 사용합니다. Unix계열인 Linux, iPhone, Android 운영체제도 LF를 개행문자로 사용합니다. Windows, Unix 계열 이외에도 여러 운영체제가 존재하며 줄바꿈 문자로 CR만 사용하거나 LF+CR, NL, RS 등 다양한 문자를 사용합니다. 이렇게 운영체제 마다 서로 다른 줄바꿈 문자를 사용하기 때문에, 운영체제가 달라지면 텍스트가 다르게 출력되거나 예기치 못한 프로그램 오류로 이어지기도 합니다. 여기에서는 왜 Windows와 Unix 계열 운영체제가 서로 다른 개행문자를 사용하게 되었는지 소개합니다. 줄바꿈? CR, LF란? CR과 LF..
수를 표현하기 위한 문자들을 숫자라고 합니다. 보통 0~9까지 10개의 문자를 사용하여 수를 표현하는데 이러한 문자를 아라비아 숫자라고 합니다. 굳이 아라비아 숫자가 아니더라도 Ⅰ,Ⅱ,Ⅲ...Ⅸ나 一二三...九 등 다양한 숫자들이 존재합니다. 또한 자릿수를 올리는 단위에 따라 다양한 진법들이 존재하는데 일상생활에서는 10진법을 많이 사용합니다. 소프트웨어 개발 분야에서는 2진법, 16진법, 64진법(Base64) 등이 주로 사용됩니다. 대부분 아라비아 숫자+10진법 조합을 많이 사용하지만, 이 외에도 다양한 조합들이 존재합니다. 대부분의 프로그래밍 언어들은 아라비아 숫자와 2진법, 8진법, 16진법, 64진법을 기본 지원합니다. 하지만 32진법, 62진법 등을 사용해야하거나 아라비아 숫자 외에 다른 문자..
C#에서 Object를 복제하는 것은 쉽고 단순해 보이지만 실제로는 복잡하고 실수가 발생하기 쉬운 작업 입니다. 여기서는 C# Object 복제에 관한 다양한 방법들을 소개합니다. 얕은복사 vs 깊은복사 객체를 복사하는 방법은 크게 얕은복사(Shallow Cloning)와 깊은복사(Deep Cloning) 2가지로 나뉩니다. 구분 값 유형 (Value Type) 참조 유형 (Reference Type) 얕은복사 값 복사 참조된 객체 공유 깊은복사 값 복사 참조된 객체 복사 두 방식 모두 값 유형(Value Type)의 멤버변수에 대해서는 동일하게 값 복사를 진행합니다. 참조 유형(Reference Type)의 멤버변수에 대해, 얕은복사는 주소 값을 공유하며 깊은복사는 객체를 복사합니다. 그림으로 나타내면..
2012년 소개된 C# 5부터 사용 가능한 CallerMemberName Attribute를 사용하면 함수 호출자의 이름을 전달받을 수 있습니다. 예를들어 다음 소스코드를 실행하면, 컴파일러는 매개변수 callerName에 함수를 호출한 "Main"을 할당합니다. [샘플코드] static void Main(string[] args) { DoWork(); } //[CallerMemberName]를 사용하면, 컴파일러는 매개변수 callerName에 함수를 호출한 "Main"을 할당함 static void DoWork([CallerMemberName] string callerName = null) { Console.WriteLine("함수 호출자 이름 : " + callerName); } [실행결과] Cal..
우리는 MVVM을 위해 다음처럼 복잡한 INotifyPropertyChanged 코드를 매번 작성해야 했습니다.public class UserViewModel : INotifyPropertyChanged{ private string _UserName; public string UserName { get => _UserName; set => SetProperty(ref _UserName, value); } private DateTime? _BirthDate; public DateTime? BirthDate { get => _BirthDate; set => SetProperty(ref _BirthDate, value); } public event PropertyChangedEven..
UTF-8 기준 문자열 길이 계산 UTF-8은 문자코드 값에 따라 문자당 1~4 Byte를 사용합니다. JavaScript에서 UTF-8 Byte 길이 계산 시 주의해야 할 부분이 있는데, JavaScript는 내부적으로 문자열을 UTF-16(UCS-2)로 처리하기 때문에 UTF-16의 특성을 고려해주어야 합니다. 예를들어 UTF-8에서 4Byte 문자인 '𒀀'의 경우 UTF-16에서는 문자 2개를 결합하여 표현합니다. 아래 함수는 이러한 특성을 고려하여 작성되어 있습니다. function getByteLengthOfUtf8(str) { //UTF8 기준 Byte Length 계산 var byteLength = 0; for (var i = 0, strLength = str.length; i < strLe..
쿠키의 유형 쿠키는 영구쿠기와 세션쿠키라는 유형으로 나뉩니다. 세션쿠키(Session Cookie/Temporary Cookie) : 브라우저가 쿠키를 메모리에 저장하게 됩니다. 브라우저가 종료되는 즉시 쿠키도 소멸합니다. 즉 브라우저의 세션(브라우저가 실행되는 시간) 동안만 유지되는 쿠키입니다. 쿠키를 생성할 때 만료날짜를 지정하지 않을 경우 세션쿠키가 됩니다. 영구쿠키(Persistent Cookie) : 브라우저가 쿠키를 디스크에 저장하게 됩니다. 브라우저가 종료되더라도 쿠키의 값은 유지가 됩니다. 브라우저를 종료하고 다시 실행하면 디스크에 저장된 쿠키를 복구하게 됩니다. 쿠키를 생성할 때 만료날짜를 지정할 경우 영구쿠키가 됩니다. 영구쿠키의 만료날짜가 지나면 자동으로 삭제됩니다. 세션쿠키와 영구쿠..
Language-Culture Codes 국가별 언어코드에서 대한민국은 ko-KR, 북한은 ko-KP로 표현됩니다. 여기서 앞 ko는 언어코드(한글)을 의미하며 KR, KP는 국가/지역코드로 각각 대한민국(Republic of Korea), 북한(Democratic People's Republic of Korea)을 의미합니다. 다른 예시로 영어-미국(United State)은 en-US, 영어-영국(Great British)은 en-GB를 사용합니다. C#에서는 이러한 언어, 국가/지역 코드를 바탕으로 문자열을 비교할 수 있습니다. 문자열을 비교할 때 StringComparison 매개변수를 통해서 언어, 국가/지역의 특수성을 어떻게 반영할 지 결정할 수 있습니다. StringComparison 열거형..
AntDesign에서 Modal을 Draggable로 만들기 위해서는 react-draggable 모듈을 사용하면 간단히 구현이 가능합니다. react-draggable 모듈을 설치합니다. > npm install react-draggable AntDesign의 Modal과 Draggable을 조합하여 모달을 구성합니다. import { Button, Modal } from 'antd'; import React, { useRef, useState } from 'react'; import Draggable from 'react-draggable'; const ModalSample: React.FC = () => { const draggleRef = useRef(null); const [visible, se..
Material-UI는 리액트에서 사용되는 UI 컴포넌트 라이브러리로서 리액트에 Google Material Design을 손쉽게 적용 할 수 있게 도와줍니다. 리액트 개발자로서 수많은 프로젝트에 Material-UI를 사용한 경험이 있기 때문에 Material-UI가 훌륭한 라이브러리라는 것을 잘 알고 있습니다. Material-UI의 수많은 컴포넌트, 그리드 시스템, 일관된 UI를 바탕으로 매우 빠르게 앱을 개발할 수 있습니다. 몇년간 Material-UI를 만족하며 사용해왔지만 개인적인 오픈소스 프로젝트인 Ammo를 개발하면서 심각한 문제를 발견하였습니다. Ammo에 대한 간단한 소개 : Ammo는 HTTP 요청을 캡쳐하여 네트워크 부하 테스트 엔진 스크립트로 변환하는 오픈소스 프로젝트입니다. (G..
- flutter
- .NET Standard
- Xamarin.Forms
- Android
- windows
- MS SQL
- Xamarin.Forms 요약
- Xamarin.Forms eBook
- material-ui
- Xamarin.iOS
- Xamarin
- ASP.NET Core
- npm
- VisualStudio
- WPF
- TypeScript
- React
- Vue
- linux
- ios
- Total
- Today
- Yesterday