본문 바로가기

Android Studio 3.1, 데이터바인딩 오류 Android Studio(안드로이드 스튜디오) 버전을 3.1로 올린 후 데이터 바인딩 부분에서 오류가 발생했다. 증상처음에는 바인딩 객체가 이미 빌드 되어 있었기 때문에, 빌드 오류는 없었으나 실행시 오류가 발생했다. 오류내용은 "Didn't find class "android.arch.lifecycle.Observer" on path" 였다. 혹시나 하는 마음으로, 프로젝트를 새로이 빌드를 했더니, 아예 데이터바인딩 관련 객체가 생성되지 않았다. 처방구글, 안드로이드 개발자 사이트에서 버전업과 관련된 문서를 확인했지만, 답을 얻지 못했었는데, 그 이유는 한글판으로 보고 있었기 때문이다. 영문판 페이지에는 3.1로 버전업을 할 때, 어떻게 해야 하는지 자세히 기술되어 있다. 데이터바인딩을 사용하기 위해.. 더보기
자바스크립트, 싱글톤(Singleton) 객체 만들기 문득 자바스크립트 'class'선언을 이용할 때 싱글톤 객체를 만들어 보고 싶었다. 더 좋은 방법이 있는지 모르겠지만, 두가지 방법이 떠올라 테스트해 보았다. 첫번째 방법외부의 const로 선언한 변수를 이용하는 방법인데... 조금은 거슬리는 느낌...class TestSingletone{static get instance() { return __TestSingletoneInstance; } hello(){console.log("Hello World!");}}const __TestSingletoneInstance = new TestSingletone; 테스트/사용 코드는 아래에 있다. 동작은 잘 되는 것 같다. 다만 클래스 바깥에 코드가 있어야 되는 점이 거슬린다.TestSingletone.instanc.. 더보기
자바스크립트(ES6)에서 var, let의 차이 그리고 클래스 상수멤버 선언 자바스크립트에서 변수를 선언할 때 사용되는 예약어중 'var', 'let'의 차이를 보여주는 코드를 짜봤다. 아울러 클래스 멤버변수로 상수값을 선언하는 방법도 같이 짜봤다. var, let의 네임스페이스의 차이함수에서 선언된 변수가 함수 바깥에서 보이는지?function __declare(){var myvar = 10;let mylet = 20;} __declare();try { console.debug("accessable myvar=" + myvar); } catch(e) { console.error(e); }try { console.debug("accessable mylet=" + mylet); } catch(e) { console.error(e); } 실행결과는...test_code.html?_i.. 더보기
구글 클라우드 프린트(4) - 프린터 등록 구글에서 제공하는 페이지(https://developers.google.com/cloud-print/docs/privet)를 참조해서 시험삼아 가상의 클라우드 프린터용 Privet API 서비스를 구현하고 크롬 브라우저를 이용 등록해보았다. 몇몇 사항에 대해 자세히 설명이 되어 있지 않아서 여러번 시행 착오가 있었다. 다행스럽게 등록에 성공, 여기에 자세한 내용을 기술하고 작업한 소스코드를 공유한다. 사전에 준비할 것이 있는데, 프린터용으로 사용할 OAuth 2.0 client id가 없으면 구글페이지(https://developers.google.com/identity/protocols/OpenIDConnect#registeringyourapp)를 참조해서 만든다. 만약 https://console.d.. 더보기
JAVA9 jshell(REPL) JAVA9에 새로이 소개된 기능중에 하나는 jshell 프로그램이다. REPLRead Evaluate Print Loop의 약자인 REPL은 간단한 콘솔 입력 프로그램을 통해 개발자가 입력한 명령어를 실행하고 바로 화면에 출력하는 실행환경을 의미한다. 많은 프로그램 언어들이 이 방식을 지원하고 있다. JAVA9를 설치하고 'bin'디렉토리에 있는 'jshell' 프로그램을 터미널창 혹은 커맨드창에서 실행하면 된다. (JDK 9.0.4를 기준으로) 실행하면 '/help intro' 명령을 입력해보라고 한다. 아래 해당 사항 실행 및 결과이다. home:~$ ./apps/java/jdk1.9/bin/jshell | Welcome to JShell -- Version 9.0.4| For an introduct.. 더보기
Proxy 설정 (apt, wget) 리눅스 서버를 설치할 때 인터넷에 직접 연결하지 않는 경우, 인터넷 proxy를 사용하곤 한다. 이 때 패키지 설치때 사용하는 apt, wget에 대한 proxy 설정 방법에 대해 ubunt 서버 16.04를 기준으로 검토된 내용을 기록한다. apt패키지 설치툴, apt설정은 /etc/apt/apt.conf.d 디렉토리에 임의의 파일을 생성하거나 기존의 파일을 수정하여 아래의 내용을 넣으면 된다.형식)Acquire::http::Proxy "http://username:password@IPorHOSTNAME:port"; 예)Acquire::http::Proxy "http://proxy.net:8088"; 리눅스 배포본에 따라 디렉토리가 아닌 apt.conf 파일이 있을 수 있는데, 해당 파일을 수정해도 된.. 더보기
재생에너지 - (소)수력 발전 요즘 재생에너지에 대한 관심이 생겼다. 별다른 이유가 있기 보다는 이런저런 공상의 소재가 되었기 때문이다. 가끔 이론적으로는 불가능하지만 영구동력처럼 무한히 에너지를 만들 수 있는 방법은 없는지, 이리저리 고안을 해보는 것이 재밌다. 그런데 생각해본 이런저런 방법들은 대부분 구글링을 해보니 거진 이미 고안된 것들이었다. 이미 있을지 모르지만 몇가지 생각들을 정리해본다. (그림실력이 꽝 주의) 강물 유속-1강물의 유속을 빠르게 할 수 있다면 한강처럼 서서히 흐르는 큰강을 이용, 효과적인 수력발전을 할 수 있지 않을까 생각했다. 물론 이 방법은 충분히 이미 있을 수 있거나, 경제적으로 타당성이 없을 수 있다. 혹은 환경적으로 문제가 있을 수 있다. 다만 그냥 생각해본 것이다.그림처럼 강을 비스듬히 가로지르는.. 더보기