728x90

정리가 필요한 카테고리(추후 정리) 58

Xamarin] Nuget 패키지 설치 시 오류 해결 방법

Android.Support.v4나 v7, v13 같은 것들을 사용하기 위해 Nuget 패키지를 설치하려고 하는데 설치에 실패하는 경우가 있다. Visual Studio 영문판 오류 메세지 You are trying to install this package into a project that targets 'MonoAndroid,Version=v6.0', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author. Visual Studio 한글판 오류 메세지MonoAndr..

C#WPF] 텍스트박스에 숫자만 입력하게 만들기

명백히 숫자만 들어올 텍스트 박스에는 숫자만 들어가게끔 하는 것이 좋다.유저가 숫자만 입력할 수 있는 컨트롤이라는 것을 인지하게끔 해당 컨트롤에 입력하기 전에 숫자만 입력할 수 있다는 사실을 알리는 것이 가장 효과가 크지만, 호기심으로 혹은 실수로 숫자가 아닌 것이 입력하는 경우가 있기 때문에 입력 자체를 제한하는 것이 필요할 때가 있다. WPF에서는 KeyDown 이벤트나 PreviewKeyDown 이벤트가 발생할 때 아래 메서드를 작동시켜, 해당 컨트롤에 숫자 외의 텍스트가 입력되는 것 자체를 막는 방법을 사용할 수 있다. private void TextBoxFrequency_PreviewKeyDown(object sender, KeyEventArgs e) { if (!Char.IsDigit((cha..

C#] C# 6.0 요약

컴파일러를 C#으로 완벽히 재작성했으며 이를 오픈소스로 공개(Roslyn).컴파일러 파이프라인을 라이브러리를 통해 외부로 노출하여 누구든지 소스에 대해 분석이 가능함. Elvis 연산자 ; 널 상태 연산자해당 연산자 이용 시, 메서드 호출, 형식 멤버 접근 전에 명시적인 널을 확인할 필요가 없어, Null Reference Exception을 마주하지 않아도 됨. Expression-bodied Function ; 표현식 본문 함수표현식 하나로 메서드, 속성, 연산자, 인덱서를 람다로 작성 Property Initializer ; 속성 초기자자동 속성에 초기값을 배정하여 초기화되는 속성을 read-only로 만들 수가 있음.read-only 속성은 생성자에서 설정이 가능하며 이는 불변이 형식 작성 시에 ..

C#] 리스트뷰(ListView) 컬럼 클릭하여 정렬하기

리스트뷰 요소를 잘 보면 상단에 버튼처럼 클릭이 활성화된 항목들이 존재한다. 간혹 뭔가를 만들다 보면, 이들 항목을 기준으로, 즉 해당 칼럼을 기준으로 아이템들을 정렬해야 하는 경우가 생긴다. 이때 해당 리스트뷰(ListView)의 속성의 이벤트 탭에서 ColumnClick이라는 이벤트를 처리할 메서드를 지정하고 그 메서드에서 클릭된 칼럼을 분류, 그에 따른 정렬을 구현해주면 된다. 아래 그림은 DirectoryCleaner라는 말 그대로 디렉토리를 정리해주는 윈폼 프로그램으로 필자가 개인적으로 만들고 있는 프로그램 중 하나다. 특정 디렉토리에 저장된 파일들, 하위 디렉토리의 파일들까지 모두 탐색한 결과를 리스트뷰에 담아서 보여주고 있다. 이름, 경로, 최종 수정일, 용량에 대한 정보를 리스트 뷰에 저장..

Xamarin] Xamarin.Forms 공식 가이드 따라 시작하기

일전에 자마린에서 제공하는 공식 가이드를 따라 'Phoneword'라는 간단한 앱을 만들었는데, 전화번호를 입력 받아 통화를 거는 그 간단한 앱을 통해서 Xamarin.Android에서는 어떤 식으로 앱을 개발하는지 알아봤다. 이번에도 역시 해당 앱을 통해서 Xamarin.Forms에 대해서 경험해보도록 하자. 일단 새 프로젝트를 만들어야 한다.(Ctrl+Shift+N)새 프로젝트 생성 폼에서 'Visual C#>Cross-Platform>Cross Platform App(Xamarin.Forms or Native)'를 선택하고 솔루션 이름을 'Phoneword'로 정해주고 적합한 위치에 프로젝트 경로를 지정해준 후 프로젝트를 생성하자. 곧장 프로젝트가 생성되어 코딩하는 것이 아니라 'New Cross ..

[Android] Xamarin으로 카메라 플래시 사용하기

우리나라에는 아직까지(혹은 앞으로도) 자마린 관련한 한글 가이드가 없다.앞으로는 어떻게 될지 모르겠지만, 이런저런 이유로 국내에서는 자마린 활용도가 떨어지는 편인데, 그럼에도 불구하고 C#과 Visual Studio를 포기할 수 없다면서 자마린을 시도하려는 사람들에게 작은 도움이 되고자 계속 글을 올리고 있다. 나 또한 배우고 있는 입장이고, 이런저런 자투리 정보들을 끌어모은 결과물을 바탕으로 글을 쓰고 있다. 앞으로 선 보일 예제 등에서도 파워포인트로 도형 그리기를 해서 자작한 버튼으로, 디자인 쪽에서의 퀄리티가 다소 떨어질 수 있으나, 예제에 사용할 목적으로 만들었으니 신경쓰지 않았으면 한다. 제목에 적혀 있듯, 오늘 만들어 볼 예제용 앱은 카메라 플래시를 켜고 끄는 앱(속칭 손전등 앱)이다. 아래처..

[Android] 자마린 안드로이드 가이드 따라가기 #2

지금까지 애플리케이션을 구동시키는 소스를 작성했다.이것이 정상적으로 작동하게 하기 위해서는 한 가지 해줘야 하는 작업이 있는데, 바로 '퍼미션 설정'이다.앱 개발을 해본 사람들은 알겠지만, 스마트폰의 어떤 것에 접근하기 위해 권한 요청을 하는 작업이다. 참고로, 접근 권한에 대해서 좀 더 엄격해졌다. 과거에는 앱이 설치되는 즉시 명시해놓은 접근 권한에 대해서는 암묵적으로 동의하는 것으로 간주하고 앱 설치 이후에는 명시해놓은 정보들에 무차별 접근했으나, 최근 법이 바뀌어, 사용자가 설치하더라도 해당 권한에 접근하려는 경우 반드시 거기에 따른 권한 허가를 받아야만 한다. 퍼미션에 대한 것은 안드로이드 스튜디오에서와 마찬가지로 AndroidManifest.xml에서 관리한다. 이외에도 xml에 직접 코드를 넣..

[Android] 자마린 안드로이드 가이드 따라가기 #1

자마린 안드로이드 가이드는 다른 가이드처럼 Hello, Android로 시작한다.Hello, Android 가이드는 두 파트로 나뉘어져 있다. 일단 하라는 대로 따라가면서 먼저 만들고 보는 Quickstart와 세부사항들에 대해서 다루고 있는 Deep Dive 두 가지로 나뉘어져 있다. 이번 포스트에서 다룰 가이드는 Quickstart로 드디어 처음으로 C#을 이용해 안드로이드 어플리케이션을 만들어 볼 차례다. 이 가이드를 보고 따라가기 앞서 두 가지 시스템 요구 사항이 존재한다. Windows 7 이상Visual Studio 2013 프로페셔널 혹은 그 이상 버전(커뮤니티도 가능) 자 이제 프로젝트를 생성해보자.여타 다른 프로젝트와 다를 것 없이 프로젝트를 생성해주면 된다. Visual C#>Andro..

[Android] Xamarin(자마린) 시작하기

진정한 크로스 플랫폼 개발 툴로, 이상적인 경우 10~15% 내외의 OS별 특징적인 설정을 제외하고는 나머지 모든 것을 공유하게 끔 하는 마법의 도구로 불려진다고 한다. 자마린 하나로 거의 완성형에 가까운 앱을 만들 수 있다는 것과 마이크로소프트가 강력하게 푸쉬하고 있는 C#, Visual Studio를 이용할 수 있다는 점이 크게 장점이라고는 한다. 개인적으로 양대OS(안드로이드, iOS)별 네이티브 앱 개발에 이미 능숙한 사람들이 모여 각자의 언어(java, Swift)로 다루어 내는 것이 훨씬 빠르지 않을까 하는 생각이긴 하지만, 향후 생산성 측면에서는 자마린도 나쁘지 않다고 생각한다. 뭐 이런저런 이야기는 다 고사하고, 필자에게는 C#으로 플랫폼을 뛰어넘는 앱 개발이 가능하다는 것 그 자체가 매력..

C#] 접근 수정자(Acces Modifier)

캡슐화를 강화하는 목적으로 형식이나 형식의 멤버의 접근성(accessibility)을 설정할 수 있으며, 그 형식이나 멤버에 다른 어떤 형식이나 어셈블리가 접근할 수 있는지 결정함.접근성을 설정하기 위해 형식이나 멤버 선언 시 적용하는 다섯 가지 접근자가 존재함. - public모든 형식과 어셈블리가 접근 가능한 공용.열거형이나 인터페이스의 모든 멤버에는 암묵적으로 이 수준이 적용됨. - internal형식이 속한 어셈블리나 그 어셈블리와 friend 관계인 어셈블리에서만 접근 가능함.비내포 형식(non-nested type; 다른 형식에 내포된 것이 아닌 형식)의 기본 접근성 - private멤버가 속한 형식 안에서만 접근 가능한 전용.이는 클래스나 구조체 멤버들의 기본 접근성. - protected멤..

728x90