전체 글 203

깃(git) - 프로젝트 진행 중 저장소로부터 최신 소스 받아오기

git으로 관리중인 프로젝트에서 소스 코드를 막 변경하며 개발하다가, 저장소의 자신이 속한 branch의 소스가 다른 사람으로 인해 업데이트 되면 받아야 할 때가 생깁니다. 그냥 git pull 하면 충돌의 여지가 아주 많기 때문에 진행이 잘 되지 않습니다. 간단한 수정 또는 테스트용으로 살짝만 바꿨는데도 git pull이 잘 안 된다면, 아래와 같은 방법이 있습니다. 1. 기존 변경 사항을 무시 git reset --hard HEAD git pull reset --hard HEAD 는 가장 최근 커밋으로 소스 코드를 돌려버립니다. 이제 원격 저장소의 가장 최근 커밋과 같은 소스가 됐으니, 충돌이 일어날 리가 없죠. 이 상태에서 git pull을 하는 원리입니다. 아니면, git fetch --all g..

Programming/Git 2017.05.23

깃(git) - .gitignore 업데이트 후 적용하기

.gitignore 은 git으로 프로젝트를 관리할 때 관리하길 원하지 않는 파일명 규칙을 모아둡니다. 말이 어려운데, 만약 저 파일 안에 *.c 가 있으면 모든 C 소스 파일은 add, commite 되지 않아요. 버전 관리에 포함시키지 않습니다. 근데 처음 git 프로젝트를 생성할 때 같이 .gitignore을 생성했다면 몰라도, 프로젝트 진행 중 .gitignore을 업데이트 한다면 후에 적용해야 할 문제가 생깁니다. 그 문제를 손봐줍시다. 먼저 .gitignore을 입맛에 맞게 업데이트 해줍니다. 그리고, 새로운 .gitignore 규칙을 기존 파일들에도 적용하기 위해 아래의 명령어를 순서대로 쳐줍니다. 지우고, add하고, 다시 commit해주는 과정입니다. git rm -r --cached ...

Programming/Git 2017.05.23

안드로이드 - MVP 패턴 2. 분석

이번엔 본격적으로 구글에서 제공하는 "안드로이드 MVP 디자인 패턴 적용 샘플 어플리케이션"인 https://github.com/googlesamples/android-architecture/tree/todo-mvp/ 해당 샘플 코드를 분석하려고 합니다. 앞서 말씀드린 대로, 이번 포스트 시리즈는 앱이 가진 고유의 기능을 분석하다기 보단 해당 샘플로부터 어떻게 MVP 코드를 적용했는가 추출하는데 집중하려 합니다. 이번 포스트는 추출 전 전체적인 앱의 구조 파악입니다. 1. 흐름도 위 이미지는 해당 샘플에 대한 Github에서 제공되는 흐름도입니다. Activity 안에 Fragment가 있고, View로 사용하네요. 그리고 Activity 범위 안에 Presenter가 있습니다. 그 Presenter에서..

안드로이드 - MVP 패턴 1. 개념

안드로이드에서 MVC 패턴의 미묘함에 대해 포스팅한 적이 있습니다.2017/03/11 - [프로그래밍/기타] - 안드로이드 - MVC 패턴 개념, 안드로이드에서 MVC 패턴의 미묘함 그래서 안드로이드의 MVP 패턴을 공부하고 있는데, 구글에서 샘플 코드도 올려주고 아주 친절해요. https://github.com/googlesamples/android-architecture 여기서 일정관리 프로그램를 다양한 디자인 패턴을 통해 개발하는데, 이 중엔 MVP에 기반한 것도 있습니다. 이걸 분석하면서 한창 앱 하나를 개발하고 있습니다. 이번 포스트 시리즈는 그 나름의 분석 내용입니다. 그리고 앱의 기능을 분석한다기 보다 MVP 패턴으로 개발하려면 이렇게 하면 되는구나는 걸 추출하려고 노력했습니다. 참고하실 분..

안드로이드 - 서비스와 액티비티간 통신

간단하게 말로만 정리하겠습니다. 서비스와 액티비티간 통신이 많이 필요할 때가 있습니다. 그냥 많이 필요합니다. 경험상 상황별로 다음의 방법이 가장 좋네요. 1. Local 서비스와 액티비티간, 일방적으로 간단한 정보를 보낼 땐 브로드캐스트 리시버가 최고라고 생각합니다. 코딩도 그나마 간단하구요. 하지만 복잡하며 좋은 성능이 필요하고, 마치 자신의 메서드인냥 실행하고 반환값을 얻고 하려면 Local Binder입니다. 2. Remote 간단하면 역시 브로드캐스트 리시버입니다. 하지만, 리시버를 받는 입장에서 액션에 대한 공개 범위? 가 모든 프로세스라면 보안에 취약해질 수 있습니다. 그럼 바인더를 사용해야 할텐데, 서비스가 다른 프로세스에서 작동한다면 Local Bind가 불가능하죠. Remote로 해야합..

오드로이드 XU4 를 개인 클라우드 서버로 - CPU Governor

Tweak 출처: https://obihoernchen.net/1235/odroid-xu4-with-openmediavault/ 고성능의 프로세서는 보통 높은 클럭에서 돌아갑니다. 오늘날 한 프로세서당 2Ghz를 넘는 건 일반적이죠. 초당 1Hz 에 한 가지 명령어를 수행한다고 쳤을 때, 2Ghz면 2,000,000,000가지 명령어를 수행할 수 있습니다. 말 그대로 명령어 수행 사이클을 20억 번 도는 겁니다. 하지만 컴퓨터가 아무 작업도 하지 않는 아이들(idle) 상태일 땐 그렇게 많이 돌 필요가 있을까요? 실제로 20억 번 돌지만, 15억 번 이상은 아무 명령어도 가지고 있지 않은 채 돌고 있는 겁니다. 즉, 쓸모없는 소비 전력과 발열이 발생합니다. CPU Governor는 이런 현상을 방지해줍니..

오드로이드 XU4 를 개인 클라우드 서버로 - IRQ Balancing

Tweak 출처: https://obihoernchen.net/1416/odroid-xu4-tune-network-and-usb-speed/ 멀티 프로세서 시스템의 경우 하드웨어 인터럽트를 한 프로세서에서만 다룰 필요가 없습니다. 오드로이드 XU4의 AP도 멀티 프로세서이니, 각 USB에서 발생하는 인터럽트를 각기 다른 프로세서로 보내 성능을 올립시다. 170621https://forum.odroid.com/viewtopic.php?f=146&t=26986&sid=3611efeb6c2314a807ba6eb688f56aba 4.9.27 버전부터 기본적으로 적용되어 있는 것으로 보입니다. 이전 버전 사용자들만 적용해주세요 :) 1. 현재 상태 확인 오드로이드의 프로세서들을 봅시다. awesometic@odr..

오드로이드 XU4 를 개인 클라우드 서버로 - 10. 무료 SSL

웹 접속 보안은 SSL이 최곱니다. SSL 인증서는 보통 무료로 받기 어려운 점이 있었는데, LetsEncrypt 는 무료로 굉장히 쉽게 발급받고 갱신할 수 있도록 해줍니다. 바로 적용하러 갑시다. 170505 h5ai에 SSL 적용 시 스트리밍에 문제가 생기네요. 첫 영상은 부드럽게 켜지는데 두 번째부턴 잘 안 되는 문제입니다. 스트리밍에 대한 SSL 설정 관련 문제인 것 같은데, 알아보고 해결책을 찾으면 업데이트하도록 하겠습니다. 1. Certbot 설치 리눅스 패키지용 LetsEncrypt는 Certbot입니다. 저장소를 추가하고, 설치합니다. sudo add-apt-repository ppa:certbot/certbot sudo apt-get update && sudo apt-get install..

오드로이드 XU4 를 개인 클라우드 서버로 - 9. 무료 도메인

외부에서 접속할 때, 매번 자신의 아이피와 포트로 접속하는 건 굉장히 불편한 일입니다. 도메인을 얻어 사용합시다. 전 내도메인.한국 으로부터 무료 도메인으로 kro.kr 을 받아 사용 중입니다. 1. 가입 및 도메인 얻기 먼저 내도메인.한국 에 접속해 가입합시다. 그리고, 도메인 등록 메뉴를 통해 간편하게 등록합시다. 도메인이 등록되셨으면, 새로 등록한 도메인에 대한 관리 페이지로 가세요. 그리고 DNS 부분에 밑의 스크린샷처럼 원하는 이름과 외부 IP를 넣어 설정해 A 도메인을 얻어줍시다. 도메인 체계에 관해선 구글 검색을.. 2. Nginx 설정 Nginx에서 서버 이름, 즉 도메인을 통해 각기 다른 페이지를 보여주려 합니다. 가상 호스트 방법도 있지만, h5ai는 지원하지 않아요. 전문 분야가 아니..

오드로이드 XU4 를 개인 클라우드 서버로 - 8. Wordpress

Wordpress 는 무료 웹 사이트, 블로그를 만드는데 좋은 프로그램입니다. 전세계 수많은 사용자들로 이루어진 커뮤니티는 물론이고, 다양한 플러그인을 통해 간단한 동작 만으로도 알찬 웹 사이트/블로그를 만들 수 있어요. 여기선 워드프레스를 올리는 것, 웹에서 다루기에 무리가 없는 수준까지만 하겠습니다. Apache나 Nginx 등 웹 서버와 PHP, MySQL(MariaDB)가 필요합니다. 이 포스트 시리즈의 처음부터 따라오신 분은 그대로 진행하시면 돼요 0. MariaDB에 워드프레스에서 사용할 DB 추가 워드프레스의 각종 데이터는 데이터베이스를 이용합니다. 따라서 서버에 워드프레스를 위한 데이터베이스를 마련해 줘야 합니다.sudo mysql -u root MariaDB 커맨드로 넘어오면 DB를 추가..