목록프로그래밍 (299)
Dharma
안드로이드 어플리케이션 개발 시 YoutubeStandAlonePlayer 를 쓸 일이 있었서 사용했는데 예상치 못한 버그가 발생하더군요. 그 현상과 해결방법을 정리합니다. 1 현상 안드로이드 앱 개살시 메인 어플리케이션을 Portrait 전용으로 개발중이였습니다. Intent intent = YouTubeStandalonePlayer.createVideoIntent(context, DEVELOP_KEY, youtubeCode); context.startActivity(intent); 와 같은 식으로 유튜브 플레이어를 띄우니 띄운 액티비티(Activity) 와 그 스택에 쌓여있던 액티비티 들의 onResume 이 호출되는 현상이 있습니다. 그래서 플레이중에 멋대로 호출된 Activity 로 튕깁니다. 게..
ADT (Android Developer Tool)를 사용하다 보면 중대한 한가지 문제(한가지 뿐이겠냐만은..)가 있습니다. 여러명이 작업을 할 때 한명이 프로젝트를 생성하고 git 레파지토리에 프로젝트를 올린 것을 다른 사람들이 받아서 프로젝트를 세팅할려고 할 때 문제가 발생합니다. ~/work/android-projects/Original 에 소스를 받았다고 하면 ADT 나 Eclipse 는 바로 저 위치에서 프로젝트를 만들 수가 없습니다. 바로 workspace 에 복사를 하던가 import 를 해야 하기 때문이지요. 강제로 같은 곳을 지정해주면 에러가 발생합니다. 이 부분은 정말 많은 구글링을 해봐도 거의 답이 없다는 것이 정설입니다. 많은 사람들이 Eclipse 를 욕합니다. 개발자들이 점점 g..
Multiple dex files define Landroid/support/v4 관련된 어쩌구 저쩌구 에러가 발생했을 때의 대처법입니다. 100% 제 환경에서 발생하는 일이였습니다. 먼저 환경을 소개하자면 회사에서 개발하는 안드로이드 (Android) 프로젝트인데 전부 환경이 달라서 문제가 발생했습니다. PM 인 저는 Command Line 에서 프로젝트를 개발합니다. 사용하고 있는 툴(Tool)은 Emacs 에 Ant 를 이용해서 빌드합니다. 회사에서 작업하는 개발자는 Android Studio 를 이용해서 개발합니다. 회사 외부에서 개발하는 개발자는 ADT (Android Development Tool) 을 이용합니다. 저와 외부에서 개발하는 개발자간의 호환은 별 문제가 없습니다. Eclipse 와..
제가 좋아하는 무협용어로 바꾸어봐도 비슷한 이야기라고 생각합니다. 고수와 중수의 차이란? 요즘 프로젝트들이 실패하는 광경을 여러번 봤기 때문에 다시금 이러한 생각을 하게 되는군요. 고수(고급)와 중수(중급)는 기술상으로는 별 차이가 없다고 봅니다. 가장 큰 차이는 무엇이 있을까? 라는 고민을 해보니 기술적으로 보면 그리 큰 차이가 없다고 봅니다. 구글이 모든 프로그래머들의 성전이 된 지금에 있어서는 고수도 검색하고 중수도 검색하고 하수도 검색합니다. 같은 기술을 찾아서 적용하는 것은 이해 속도의 차이일뿐 기술적으로 난이도가 크지는 않습니다. (예전에는 당연히 이것도 고수가 되는 조건중의 하나였을 것입니다) 1. 적응성 고수들은 새로운 개발 환경, 새로운 언어에 적응이 빠릅니다. 새로 리눅스 환경에서 개발..
하둡(hadoop) 의 옛버젼이 필요할 때가 있습니다. 예를 들면 최근 하둡(hadoop) 은 2.6.0 버젼대로 올렸지만 스파크(Spark) 는 1.2.0 버젼이 최신인데 하둡(hadoop)은 2.4.1 버젼과 맞춰줘야 하는 문제가 있습니다. 따라서 옛날 버젼의 하둡(hadoop)을 원하신다면 아래의 링크에 가서 원하는 버젼을 고르시면 됩니다. http://archive.apache.org/dist/hadoop/core/
매번 버젼이 바뀔때 마다 쓰는 것이 지겨워서 한동안 안쓰고 있었는데 예전에 설치하던 시절하고 너무 많이 바껴서 정리를 할 필요가 있겠더군요. http://rocksea.tistory.com/282 위의 링크는 제자가 열심히 정리한 버젼입니다. 이번 포스트는 저 포스트에서 부족한 부분을 채우는 식으로 정리할려고 합니다. 1 준비 사항 HOST OS: OSX Yosemite 가상 컴퓨터 소프트웨어: VMWare 7.0 (아니면 Virtual Box) Linux Ubuntu 14.04 LTS (Server Version) 1.1 버추얼 박스(Virtual Box) 굳이 버추얼 박스가 아니라도 괜찮습니다. VMWare 나 Parallel 도 괜찮습니다. 버추얼 박스는 공짜기 때문에 제목으로 달아논 것이고 저는 ..
리모트 브랜치 그대로 업데이트 외부의 소스를 받아서 변경점 그대로 업데이트 하고 싶을 때가 있습니다. 즉 외부 소스를 받아서 컴파일을 해서 사용하는 경우인데 변경된 점이 남아 있어서 'git pull' 명령을 쓰자니 컴파일을 위해서 생성된 파일들과 merge 가 되버려서 관리가 힘든 경우가 있지요. 이때 지금 변경된 것을 무시하고 리모트 브랜치로 강제로 변경하는 방법에 대해서 알아보겠습니다. GIT 가이드 에 가시면 자세한 git 사용법에 대해서 배울 수가 있습니다. 사실 이 명령도 거기서 나온 방법이지요. $ git fetch origin $ git reset --hard origin/master 자주 안 쓸거 같아서 알고만 있었는데 의외로 자주 사용하게 되더군요.
1 플라스크 (Flask) 소개 파이썬 에서 쓰이는 웹 프레임워크라고 하면 장고 를 떠올리기 쉽습니다. 그런데 실은 장고는 이제 덩치가 많이 커져서 예전만 못하다는 이야기가 많습니다. 그래서 정말 간단한 웹이나 모바일 앱 서버를 만들기에 적합한 웹프레임워크를 찾게 됐는데 그게 바로 플라스크 입니다. 소개만 하고 직접 가셔서 보시는게 빠를 것 같습니다. 정말 단순하고 빠르게 웹을 만들 수가 있습니다. 제가 지금까지 접해온 웹 프레임워크중에 가장 가볍게 빠를꺼라고 자부합니다. (express 안녕~) http://flask-docs-kr.readthedocs.org/ko/latest/index.html 위에 가서 보시면 되고 한글화도 잘 되어 있습니다. 빠르게 시작하기(Quick Start) 와 튜토리얼(T..
data-generate 빅데이타 인프라를 구축했는데 막상 뭔가 테스트 해보고 싶어도 돌릴만한 예제가 없는 분들을 위해서 만들어 본 라이브러리입니다. 뭐 대단한 것은 아니고 ‘ID,TIMESTAMP,TRANSACTION’ 형식으로 세개짜리 필드로 은행권 로그를 모방했습니다. 일단 급한대로 만들어 쓸려고 만든것이기 때문에 더 만들어야 할게 많습니다. 나름 동접처리를 한다고 쓰레드 방식으로 동접으로 접속해서 처리하는 것도 시뮬레이션 했습니다.추후에는 - 트랜잭션중에 자주 일어나는 것에 대한 빈도수 조절이 가능해질 것입니다. - 현재는 랜덤으로 사용자를 뽑아오지만 충성고객에 대한 범위를 지정할 수가 있을것입니다. - MAC 이나 IP Address 생성룰을 고민해서 붙일 수도 있을것입니다. 결과입니다. EDI..
클로져는 정말 멋지게도 언어레벨에서 Concurrency 를 지원합니다. 물론 그래서 어렵다는 평을 받긴 하지만 이미 개념을 알고 있는 사람들은 이보다 더 편할 수가 없습니다. 게다가 자바와의 연계성이 뛰어난 점 때문에 클로져는 정말 멋진 언어입니다. 최근 무어의 법칙이 더이상 통하지 않고 CPU 의 코어수만 늘어나는 상황하에서 멀티쓰레드 프로그래밍을 모른다면 진정한 컴퓨팅 파와를 쓸 수가 없습니다. 그렇기 때문에 저는 예전부터 클로져를 눈여겨 왔었는데요. 그 클로져의 Concurrent Programming 에 관한 괜찮은 글을 찾아서 여기에 소개합니다. http://blakesmith.me/2012/05/15/understanding-clojure-concurrency-part-1.html 위는 간단..