본문 바로가기

2017/01

(8)
[C#] char[]를 string으로 변환하기 안녕하세요,밤마다 이어지는 모스크바의 눈발 때문에-퇴근길이 험난하기만한 개발자 윤진입니다. C#의 문자열을 살펴보다가 의문이 들어 포스팅을 시작하려 합니다. :) C에서 포인터로 들어간 문자열(문자들 + '\0')을 관리하였습니다만, char *s = "string"; C#에는 포인터 대신 string class로 문자열을 관리하고 있습니다. string s = "string"; 이 사실을 접하자마자 처음 든 의문은,C#에서 char[]을 string처럼 사용할 수 있는지 여부였습니다. char[]와 string은 모두 다수의 문자를 저장할 수 있지만,char는 struct, string은 class인 만큼 둘 사이에 간극은 큽니다.그렇기 때문에 char[]는 string이라고 말할 수 없고,char[]..
[C#] bool.Parser vs Convert.ToBoolean() 안녕하세요,러시아 모스크바에서 생활하고 있는 개발자 윤진입니다.영하 24도로 시작하는 상쾌한 아침이라 외출하기가 너무 겁나네요.그래서 이렇게 두문불출하고 있습니다. 우훗. 이번에는 모든 프로그래밍 언어의 기본이라 할 수 있는 자료형변환에 대해 살짝 살펴보겠습니다.C언어에서는 0, 1 값을 false, true로 매핑하여 사용했는데요,(물론, stdbool.h를 불러와서 사용할 수도 있었죠.)C#에도 아래 코드처럼 int를 boolean으로 바꿀 수 있지 않을까 기대했었죠. Console.WriteLine(Boolean.Parse(1)); 하지만, 위의 코드는 동작하지 않더군요. :) C#에서는 boolean structure를 사용해서 false, true 값을 지정할 수 있습니다.[Serializabl..
[C#] Unicode에서 한글 초성/중성/종성에 대한 짧은 고찰 안녕하세요, 러시아에서 아주 가끔 코딩을 하는 개발자 윤진입니다. 유니코드를 뒤적뒤적 살펴보다가, 유니코드에 한글이 어떻게 매핑되어 있는지 궁금해졌습니다. 유니코드에 매핑된 문자를 확인하고 싶으면 유니코드 공식홈페이지를 찾으면 됩니다. 공식 홈페이지에 올라와있는 Unicode 9.0 Character Code Charts에는, 한글 자소와 완성형 한글이 45장에 걸쳐 빽빽하게 기록된 것을 볼 수 있습니다. 한글자소는 초성/중성/종성으로 나눠져 세 그룹으로 표현되어 있습니다. 현대 한글에서 사용하는 초성은, 'ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ'로 총 19자입니다. 그렇지만, 한글자소 테이블에는 위의 한글 외에도 기이한 형태의 자음이 복합된 초성이 포함되어 있습니다. 'ㅎ'에 이어서 'ㄴㄱ'이나 'ㄴㄴ',..
[C#] UTF-16의 캐릭터 크기에 대한 간단한 탐구 안녕하세요,러시아에 살고 있는 개발자 윤진입니다. C#을 비롯한 .Net 플랫폼에서는 문자를 인코딩하는 방식으로,Unicode Transformation Format인 UTF-16을 사용합니다. UTF-16은 기본적으로 16비트-2바이트를 취하지만, 항상 2바이트는 아닙니다.사상되는 문자의 종류에 따라 4바이트로 확장되기도 합니다. 2바이트로 표현되는 영역은 U+0000부터 U+FFFF까지입니다.U+0000은 제어 문자와 라틴 기본 영역에 속해있죠.U+0000 ~ U+007F128자제어 문자와 라틴 기본 U+FFFF는 특수 제어 문자 영역에 속해있습니다.U+FFF0 ~ U+FFFF16자특수 제어 문자 그렇다면, 4바이트 사상되는 U+000000~ 코드 이상의 문자는 무엇을 보고 4바이트 문자인지 판별할 ..
[C#] int.MaxValue 코딩컨벤션에 대한 사소한 의문 안녕하세요, 개발자 윤진입니다. '17년 1월초 러시아에 파견나와 아침을 먹으며 C# 책을 뒤적거리다가 문득 궁금한게 생겼습니다.'int.MaxValue'에 적용된 코딩컨벤션을 보면,'int'는 class 혹은 struct로 보이지만, 첫글자가 소문자인 camelCase가 적용되어 있고,MaxValue는 멤버변수이지만 첫글자가 대문자인 PascalCase가 적용되어 있는데요. 책에서 읽은 바에 따르면, - class & struct는 PascalCase를 따르고,- 멤버변수는 camelCase를 따르게 되어 있습니다. C#으로 된 남의 코드를 읽어본 경험이 전무하기 때문에,책에 명시된 내용과 사뭇 다른 코드를 보니,책에서 제대로 혹은 충분히 설명하지 않았을 것이란 생각이 들었습니다. 그래서, 약간의 검색..
[C#] 코딩컨벤션, linux_kernel_coding_style vs camelCase vs PascalCase 안녕하세요, 개발자 윤진입니다. 코더로서 개발을 막 시작하고 얼마 후-코딩컨벤션으로 개발자들끼리 핏대를 세워가며 언성을 높이는 것을 목격하였습니다.당시에는 '간단한 함수의 경우 헤더에 함수를 정의해도 되는가'라는 주제로 피튀기게 양 진영이 거세게 싸웠는데요,이후에 파일명, 함수명, 변수명의 이른바 '온갖 것에 대한 작명'에 대한 혈투가 개전되어, 모두가 가열차게 답메일을 보내 메일함이 폭발한 적이 있습니다.그리고, 프로그래밍에서는 '작명'이 가장 어렵다는 결론을 내리며 훈훈하게 마무리되었죠.'작명'이 가장 어렵다는 결론은 아직까지 유효합니다. :)함수나 변수의 역할을 그 이름만으로 정확하게 파악할 수 있게 만드는 것은 프로그래밍의 영역이라기 보다는 예술의 영역에 가깝습니다.그리고 이 영역에서 프로그래머의..
[Visual Studio] Start debugging vs Start without debugging 안녕하세요, 리눅스 개발환경에만 익숙하여,Visual Studio 환경이 그저 낯설기만한 개발자 윤진입니다. 간헐적으로 Visual Studio를 사용할 때마다 궁금했던 것이 있었습니다.수시로 코드상태를 체크하기 위해 F5키나 Ctrl+F5키를 눌러 결과를 확인하는데요,F5는 실행이 완료되는 순간 커맨드라인 창이 사라지고,Ctrl+F5는 실행이 끝나도 커맨드라인 창이 남아있습니다.이게 무슨 의미인지도 모르고 신나게 사용하던 때가 있었습니다. :)하지만, 단지 커맨드라인 창의 동작방식으로 F5와 Ctrl+F5를 구분했을까요? F5와 Ctrl+F5는 각각의 이름이 있습니다. F5 : 디버깅 시작(Start debugging) Ctrl+F5 : 디버그하지 않고 시작(Start without debugging)..
[Moonlight] 사요나라, 문라이트 프로젝트 안녕하세요, 가끔 IT 개발서를 읽는 개발자 윤진입니다. ‘15년 12월 초판 발행된 IT 서적을 읽다가 문라이트 프로젝트(moonlight project)에 대한 설명을 보았습니다. 문라이트 프로젝트에 대한 설명은 한 문단이었는데 충분히 호기심을 일게 만들었습니다. 과연 무엇을 하는 프로젝트이고 지금도 개발을 지속하고 있을까요? 문라이트 프로젝트는 마이크로소프트의 실버라이트(Silverlight)를 리눅스 위에서 돌아가도록 환경을 구축하는 오픈소스 프로젝트입니다. 실버라이트의 첫 릴리스가 ‘07년이고, 문라이트 프로젝트는 ‘07년부터 2년 정도 개발하여 ‘09년에 Moonlight 1.0을 세상에 내놓았습니다. 당시 십년이 넘게 플래시가 세상을 지배하고 있었지만, 플래시를 대체한다는 마이크로소프트의 공..