본문 바로가기

안드로이드 EditText 항목 쓰기방지(read-only)로 만들기 EditText 위젯을 읽기전용(read only)로 설정하고자 했는데, XML상 속성 "android:editable", 폐기예정이므로 몇가지 방법들을 찾아봤다. XML에서 설정"android:inputType" 속성을 제거하고, "android:focusable" 속성값을 "false"로 한다.코드상에서 설정setInputType 함수를 사용한다. 매개값으로 InputType.TYPE_NULL을 넘기면 된다. EditText editWord = (EditText)findViewById(R.id.editWord);editWord.setInputType(InputType.TYPE_NULL); 추가팁 (나만 몰랐던)"LinearLayout" 에서 어떤 위젯이 남은 공간 채우도록 만들기 위해 구글링된 여러 .. 더보기
기계학습 - Spark(8) - PCA 코드분석2 Spark, .../mlib/feature/PCA.scala 코드를 분석한 글이다. PCA의 원리에 대해 이해를 하기 위해 소스를 분석했는데 조금은 원리를 알게 되었지만, 수학으로 인한 장벽은 여전했다. SPARK's PCA.sala1. 'pc'로 명칭된 값과 Explained Variance을 구한다.val mat = new RowMatrix(sources) val (pc, explainedVariance) = mat.computePrincipalComponentsAndExplainedVariance(k) 변수 pc : K값으로 보정된 SVD의 U행렬변수 explainedVariance : Explained Variance 2. 입력된 벡터들을 차례대로 pc에 곱한 결과를 구한다.pc.transpose.. 더보기
JAVA 9 모듈방식(modularity) 코딩 힐끗보기 JAVA 9가 점점 우리에게 다가오는 것이 느껴진다. 소개된 새로운 특징들을 보니, 모듈방식 코딩 지원과 'jshell'이 눈에 띈다. 모듈방식 (Modularity)모듈에 대한 구체적인 지원을 담는 내용이 포함된 이유는 무엇일까? 모듈 혹은 서비스 그리고 이전에는 객체 중심의 개발이 설계 및 유지보수등에 주는 이점에 대한 얘기는 너무도 당연하게 여겨지는데, JAVA 9 에서는 이를 언어스펙으로 넣어 버렸다. 그래서 코딩단계부터 컴파일 심지어는 새로이 도입된 링크에 모듈 기능이 추가 되었고, 20년 이상 유지해온 기존의(레거시) 라이브러리들 또한 재설계를 했다.모든 개발자들의 마음이 같지 않다.보통 인터페이스 와 이를 구현한 객체, 부모 객체와 자식 객체가 있다면 데이터 형을 선언할 때 가능한 상위 객체.. 더보기
[GIT 정리] 이미 commit/push된 파일을 .gitignore에 등록하기 이 글은 GIT의 기초를 설명하기 보다는 흔히 현장에서 발생할 수 있는 상황에 대처할 수 있는 실용적인 방법들을 설명하기 위한 두번째 글이다. 프로젝트를 진행하다보면 뒤늦게, 혹은 실수로 이미 소스저장소에 올려진 파일을 .gitignore에 등록해야 할 때가 생긴다. GIT에 대한 이해가 적을 때, 이 작업은 무지 난해한 작업이었다. 그러나 자세히 정리해보니 생각보다 간단한 작업이었다. 1. .gitignore 파일이 정확히 동작하는지 확인하기.gitignore에 소스관리하지 않을 파일을 등록한 후 제대로 동작하는지 확인할 필요가 있다. 그러나 정확하게 명령을 내리지 않으면 정보가 누락되어 잘못된 판단을 할 수 있다. 우선 데모를 위해 이전회의 저장소 및 클론에서 몇가지 상황을 추가했다.클론저장소는 클론.. 더보기
[GIT 정리] 여러 조회 방법 및 충돌 파일 간단 처리 이 글은 GIT의 기초를 설명하기 보다는 흔히 현장에서 발생할 수 있는 상황에 대처할 수 있는 실용적인 방법들을 설명하기 위한 첫번째 글이다. 소스 공유 툴을 사용할 때, 모든 참여자들이 정확히 방법을 숙지하고, 정상적인 경우만 있다면 아무 문제가 없지만, 대부분은 누군가 이상한 작업을 해서 뒤죽박죽 뭔가 섞였을 때... 해결을 못하고 아마도 소스를 백업받고 아예 엎어치는 경우가 종종 있다. 이럴 때면 이걸 왜 쓰지 하는 생각이 들기도 한다. 게다가 SVN보다 GIT이 사용하기 어렵다. 솔직히 너무 어렵게 만든 것 같고 무엇보다도 명령어들이 나에게는 직관적이지 않아서 더욱 어렵다. 언젠가 확실히 이해할 필요가 있다고 생각하던 중, 시간이 되서 정리를 시작해 본다. 1. GIT 클론 저장소와 원격저장소간 .. 더보기
안드로이드 시뮬레이터, root권한 없이 SQLite DB 파일 접근 이 글은 제목 그대로 안드로이드 시뮬레이터에 있는 앱의 SQLite DB 파일을 접근하는 방법을 설명하는데, root권한 없이 간단히 할 수 있는 방법을 설명한다. 먼저 안드로이드 시뮬레이터에 콘솔을 연결해야 하는데, 일반적으로 'adb'프로그램을 사용한다. 이 프로그램은 안드로이드 SDK의 번들로 제공되는 프로그램으로 SDK 설치 디렉토리 아래 '.../platform-tools' 디렉토리에 있다. OSX인경우 기본설정으로 설치했다면 SDK의 위치는 '~/Library/Android/sdk' 이다. 'adb'프로그램은 실물 안드로이드 기기에 연결이 될 뿐만 아니라 안드로이드 시뮬레이터에도 접속이 된다. 이 글에서는 시뮬레이터에 대한 부분만 다루기로 한다. adb devices시뮬레이터를 구동중이라면 아.. 더보기
JAVA 람다함수 총정리 유래λ-calculus(람다대수)에서 유래했다. 어것은 1930년경 논리학등에 사용하기 위해 제안된 수학적 형식인데, 예를 들면 아래와 같다. 의미는 "매개변수를 받아 1을 더해서 반환한다" 이다.λx.x+1 'λ'다음에 매개변수 'x'가 선언되고, '.'뒤에 함수의 내용이 정의된다. 이 형식은 2가지 중요한 의미를 가진다. 하나는 '함수를 정의' 한다는 것이고 다른 하나는 함수의 이름이 없다는 것이다. 따라서 λ는 Anonymous function을 의미한다. 왜 λ(람다)를 쓰게 되었을까?현대의 프로그래밍 언어는 대부분 객체지향이거나 적어도 이 방식에 근거를 한다. 대표적인 언어가 JAVA인데, 객체지향적인 언어의 규약이 가끔은 비효율적인 경우가 있다. λ(람다)는 이를 해결하기 위해 도입이 되었다... 더보기