GIT을 통해 코드를 관리하는데 코드 이외 오디오 파일, 비디오 파일과 같은 큰 데이터 를 저장하려고 하고 싶을 때 LFS(Large File Storage)를 사용할 수 있다. https://git-lfs.github.com/ 1) LFS를 사용하면 인증절차가 3번(3 times)이나 이루어진다?? 이유까지는 잘 모르겠으나, LFS를 사용하고 git push 를 사용할떄 3번의 username과 password를 물어본다. LFS 사용하기 이전처럼 한번 인증을 하기 위해서는 아주 간단한 방법이 있는데 Git의 Credential 저장소를 이용하면 쉬워진다. https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Credential-%EC%A0%80%EC%9E%A..
Proxy란 1. 대리(권) 2. 대리인 3. (측정・계산하려는 다른 것을 대표하도록 이용하는) 대용물 등 대신 무엇을 하는 것을 뜻한다. proxy패턴 또한 무슨 일을 대신할 객체를 만들어서 사용하는 것인데, 하는 일에 따라 분류가 된다. 원격 프록시 원격에 있는 객체를 대신하여 주는 프록시 가상 프록시 생성하기에 비용이 많이 드는 객체가 준비가 완료될때까지 대신하여 주는 프록시 보호 프록시 원 객체에 대한 접근 보호 기능을 제공하기 위해사용되는 프록시 이 글에는 가상 프록시에 대한 글을 써보겠다.위에 테이블에 나온 글 그대로 가상 프록시는 무엇을 생성하는데, 그것의 생성하는 비용이 커서 준비할 동안 대신해준다. 예로 이미지를 보여주는데, 이미지 로드 시간이 길어서 Loading이라는 문구를 띄워주는 ..
Bridge Pattern(가교패턴)은 구조패턴의 하나로, 추상과 구현을 분리하여 다양성을 가질수 있도록하는 패턴이다. 가교패턴을 사용하면, 런타임에 구현방법을 선택할 수 있고, 추상과 구현이 분리 되어있기 때문에 추상개념만 연결하면 독립적으로 확장하는게 쉽다. 가교패턴을 살펴보면, 기본 구조(꼴)이 다음과 같이 보인다. 추상을 만들고 이를 상속하는 컨크리트클래스를 만들어서 구현한다. 이와 관련된 예시를 생각해보았으나 잘 생각나지 않아 위키에 있는 예제코드(조금 바꿈) 살펴보겠다. 기본적으로 추상으로써, DrawingAPI라는 인터페이스를 만들어서, 이를 상속받는 DrawingAPI1과 DrawingAPI2를 만들어 구현한다. (여기서 구현부는 출력만 되도록 되있다.) public interface Dr..
prototype pattern, 즉 원형패턴이란 원형이 되는 인스턴스를 활용해서 새로운 객체를 생성하는 생성패턴 중 하나이다. 원형패턴을 사용함으로써, 미리 원형으로 초기화를 해두고, 나중에 이와 같은 객체를 생성할때, 다시 초기화하지 않아도 되는 편리성을 제공한다. 즉, 새로운 객체는 일반적인 방법으로 객체를 생성(create)하는 고유의 비용이 매우 클 때, 이 비용을 감내하지 않을 수 있게 해준다. 또한, 런타임에 새로운 제품을 추가 및 삭제가 가능하고, 값들을 다양화할 수 있다. 일반적으로 원형패턴의 구조는 다음과 같다. 원형 패턴을 구현하기 위해서는 원형클래스를 다루는 원형 관리자가 있어야한다. 그리고, 복사를 해야하기 때문에, Clone연산이 필요하다. 간단하게 구현해보자. 게임에서 흔히 나..
의존성을 낮출 수 있는 생성패턴의 하나로 생성 방법이 바뀔 때마다 새로운 매개변수를 넘겨받음으로써, 생성할 객체의 유형을 바꿀 수 있는 추상 팩토리 패턴에 대한 예를 적어보고자 한다. 이런 생성 패턴을 사용하는 이유 중 가장 큰 이유가 의존성의 낮춤으로써, 유연성을 확보하는 데 목적을 둔다. 이 패턴을 설명하기위해 로봇을 생성하는 프로그램을 간단하게 제작해 보겠다. 우선, A, B, C라는 공장이 있다. A공장에서는 청소로봇을 생산하고, B공장은 전투로봇을 생산한다. 그리고 , C공장은 요리로봇 생산한다. 사용자는 청소로봇을 필요로 해서, A공장에 찾아가서 로봇을 만들어달라고 한다. 이 상황을 코드로 옮겨 보자. Client RobotFactory factory = new ARobotFactory(); ..
요즘 블러효과로 꾸며진 어플리케이션이 자주 나온다. 스크롤을 내렸을때, 정해진 지점까지 블러효과를 낼 수있는 방법에 대해 알아보자. 블러효과는 16버전 이후에 나온 기능이다.public static Bitmap blur(Context ct, Bitmap sentBitmap, int radius) { if (VERSION.SDK_INT > 16) { Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true); final RenderScript rs = RenderScript.create(ct); final Allocation input = Allocation.createFromBitmap(rs, sentBitmap, Allocation.MipmapCont..
메모리를 생각하면서 코딩하는 습관은 중요한 것같다. android를 코딩할 때 메모리를 고려한 방법을 제시해보겠다. 1. boolean타입의 변수를 많이 사용하게 될 경우에는 1bit만으로 표현이 가능한 값(true/ false)를 8bit나 주고 정의할 필요는 없어보인다. 이런경우 BitSet클래스를 활용해보는 것도 좋은 방법일 수 있다. 2. 작은 타입 변수를 사용하되, 타입변환이 없는 것이 좋다. 3. 캐쉬를 사용하면, 엄청나게 빨라짐과 동시에 메모리 효율에도 효과적이다. 4. 안드로이드의 레이아웃을 보면, 굳이 레이아웃 하나로 구성이 가능한데, 편하게 코딩하게 위해 여러개 생성하는 경우가 많다. 불필요한 객체는 생성하지 않는 것이 좋으므로, 최소한으로 사용하는 버릇을 들여보자.
안드로이드에서 opencv를 설치 및 설정하는 방법에 대해 알아보도록 하겠다.nvidia에서는 이런 과정을 모두 세팅해준다고는 하나 너무 지저분한 것들을 다설치해 버린다.ㅠ opencv를 사용하기 위해서는 우선, android용 opencv를 설치해야한다.http://opencv.org/downloads.html 위 링크를 통해 최신버전의 android용 opencv를 설치하자.opencv를 설치하기 전에, 혹시 ndk설치 및 설정도 하지 않았다면, 다음 링크를 통해 우선 ndk 개발환경 구축부터 하자. http://sks3297.tistory.com/87 ndk 개발환경 구축 및 opencv설치가 완료되었다면, 이제 opencv를 설정하고 활용해보자. 1. Android.mk 변경Android.mk 파..
android에서 자바 코드로 작성 외, C또는 C++로 코드를 작성하기위해서는 NDK를 설치해야한다.이를 설치하기 위한 방법 및 세팅에 대해 알아보곘다. 우선, Cygwin을 설치 해야한다.http://cygwin.com/install.html위 경로로 들어가서 cygwin을 설치한다. 32bit, 64bit를 확인하고 설치하기 바란다. Cygwin을 설치하게 되면, 다음과 같은 사이트 정보가 보이며, 아무거나 선택해도 괜찮다. 나의 경우에는 http://ftp.yz.yama......... 사이트를 선택해서 했다. 이를 확인하고 다음을 누르게 되면 아래와 같은 창이 보이게 된다. 모두, default라고 표기가 되어있으며, 우리는 Devel의 default를 선택하여 install문구로 변경한 후 다..
KNN 이란 무엇일까. KNN은 K-Nearest Neighbor의 줄인말이다. 라벨링 되어있는 데이터를 기준으로 어떤 데이터가 어떤 군집에 속하는지 알 수 있다. 즉, KNN은 거리를 통한 군집알고리즘이라고 할 수 있다. 위 이미지는 위키에 있는 KNN알고리즘을 설명하기 위한 그림이다.위 그림을 보면 무엇이 보이는가, 파랑색 네모와 빨간색 삼각형이 보이고, 가운데 녹색 원이 보인다. 녹색 원은 추가하고자 하는 데이터이며, 파랑색네모와 빨간삼각형은 이미 등록된 데이터이다. 이 데이터들은 이미 데이터 거리 기준으로 라벨링 된 것이다. 라벨링 된 데이터에 새로운 데이터를 추가하면, K값에 따라, 그 거리에서 가장 가까운 K개의 데이터의 라벨을 확인한다. K개의 값을 모두 확인하여 데이터 특성이 가장 많은 쪽..
- Total
- Today
- Yesterday