10월, 2017의 게시물 표시

[카드뉴스] 강아지가 몸을 터는 이유는?

이미지
이 강아지가 몸을 터는 이유는? 1. 목욕해서 2. 그만 놀고 싶어서 3. 기분전환 4. 주인이 안놀아줘서 스트레스 *이 카드뉴스는 http://bit.ly/2vk8tqg 글을 참조하여 작성되었습니다 시바견을 입양했는데 개 대신 드릴이 왔어 Dolan 씨의 시바견이 왜 몸을 터는지는 모르지만...(드릴의 후예) 일반적인 강아지들이 몸을 터는 이유는 4가지 모두 정답입니다! - 목욕해서, 기분전환, 거부 의사 표현, 스트레스 드릴이 안멈춰. 이거 어떻게 끔? 강아지들이 몸을 터는 이유 알아보러 가기 강아지가 몸을 터는 이유 1 몸에 묻은 물기 제거 미국 조지아공대에서 '동물의 몸털기'분석을 했는데 강아지는 4초만에 몸에 묻어 있는 물기의 70%를 제거했다고 합니다. 몸에 물기가 있을 경우 행동이 느려지고 저체온증을 유발하여 생존에 위협이 되기 때문에 본능적으로 몸에 묻은 물을 털어내는 것이죠 강아지가 몸을 터는 이유 2 스트레스를 떨쳐냄 물기가 없는데도 몸을 터는 강아지들도 있습니다. 상대를 공격할 뜻이 없으며 같이 놀자는 표현이기도 하며 성견일 경우에는 자신을 향해 가까이 다가오는 동물이나 사람에 대해서 불편을 느낄 때에도 자신의 몸을 턴다고 합니다. 또는 지금 상황에 스트레스를 받거나 흥분했을 때 긴장을 푸는 행동입니다. 강아지가 몸을 터는 이유 3 자신을 진정시키고, 긴장 이완 산책 도중에 몸을 심하게 터는 강아지들도 있습니다. 익숙하지 않은 바깥세상, 낯선 사람들과 소리 등으로 인해 자신을 진정시키고 긴장을 이완하려고 몸을 터는 것입니다. 이럴 경우에는 산책하는 경로와 시간을 변경해주어서 한적하고 안전하게 느껴지는 곳에서 산책을 시켜주세요 강아지가 몸을 터는 이유 4 '이제 그만 놀고 싶어요' 신나게 놀던 강아지가 갑자기 서서 몸을 터는 경우도 있는데 이제 그만 놀자고 말하는 신호에요. 또는 낯선 사람의 손길이 닿았을

[social 연동]웹 환경에서 Social 연동해서 로그인하기 - Google 1) App Key 발급

이미지
저번에는 Facebook 로그인 연동을 위한 준비 작업인 App key 발급을 알아봤고 이번에는  Google 로그인 연동을 위한 준비 작업인 App key 발급을 알아보려고 합니다. 우선 다음 URL로 접속합니다. 접속하면 Google ID 와 패스워드를 입력하도록 창이 나오고 입력이 완료되면 다음과 같은 화면이 나옵니다. URL : https://console.developers.google.com/ 저는 이미 프로젝트를 생성한게 있어서 이렇게 보이고 없는 경우 프로젝트를 새로 생성 합니다. 우측 상단에 APIs 옆에 부분을 클릭하면 다음과 같이 프로젝트 생성 화면이 나옵니다. 팝업창 상단에 +를 클릭후 새로운 프로젝트를 생성합니다. 다음과 같은 화면을 보실수 있습니다. 왼쪽 메뉴중 사용자 인증 정보 클릭 합니다. 사용자 인증 만들기 클릭 한후 APP Key 생성 완료 키발급 완료 다음으로 상단에 사용자 인증 만들기를 클릭한 후   OAuth 2.0 클라이언트 ID   만들기를 클릭 하여 클라이언트 ID를 생성하면 구글 로그인을 이용하기 위한 준비끝

[AWS] 사용중인 EC2 인스터스의 Type 변경하기

이미지
AWS Free Tier 사용목적으로 계정을 생성하고 Amazon EC2 인스턴스를 생성하게 되면 일반적으로 Free Tier 지원이 가능한 t2.micro Type 의 인스턴스 를 구성하게 됩니다. 하지만 서버구성후 개발 프로그램 테스트를 진행하다 보면 리소스 부족으로 인해 인스턴스 Type 변경이 필요한 경우가 생기게 됩니다. 이때 인스턴스 Type 을  변경하기 위한 두가지 방법이 존재 합니다. 첫번째 방법은 AMI 이미지 생성 후 해당 이미지를 복원하여 신규 EC2 인스턴스를 생성하는 방법입니다. 이 방법은 서버 절체 시간을 최소화 할수 있는 장점이 있지만 VPC,  Subnet, Securety Group 등 설정 작업이 필요합니다. 두번째 방법은  현재 인스턴스  형상 그대로 Type 만 변경하는 방법으로 매우 편리하게 Type 변경이 가능하지만 서버 운영을 잠시 중단했다가 다시 시작해 주어야 합니다. 24시간 운영되는 서비스가 아닌 테스트용 서버의 경우에는 번거로움을 최소화 하는 두번째 방법으로 인스턴스 타입 변경이 가능합니다. 두번째 방법을 통해 EC2 인스턴스의 타입 변경방법을 확인해 보도록 하겠습니다. 1. 인스턴스 중지 EC2 대시보드에서 변경하고자 하는 인스턴스를 선택 후 작업 > 인스턴스 상태 > 중지 를 선택합니다. 2. 변경 유형 선택 인스턴스 중지가 완료 되면 작업 > 인스턴스 설정 > 인스턴스 유형변경을 선택 합니다. 인스턴스 유형변경 팝업이 노출되면 변경 하고자 하는 인스턴스 타입을 선택하고 “적용” 합니다. m4.large 를 선택해 보겠습니다. 타입 변경 후 인스턴스 유형을 확인해 보면 m4.large 로 변경된 것을 확인할 수 있습니다. 3. 인스턴스 재실행 이제 인스턴스 실행을 위해 작업  > 인스턴스 상태 > 시작을 선택 합니다. 해당 인스턴스 부팅

[social 연동]웹 환경에서 Social 연동해서 로그인하기 - Facebook 1) App Key 발급

이미지
웹에서 Facebook 연동해서 로그인하는 방법을 알아보기 전에 Facebook Api 를 이용하기 위해 App Key를 발급받아야 합니다. 우선 Facebook 개발자 센터를 접속합니다. Facebook developer URL : https://developers.facebook.com/ 화면 위에 상단에 로그인을 버튼을 누르고 facebook ID 와 Password 로 로그인을 합니다. (처음 시작하기전에 facebook 회원가입을 언급 하지 않았지만 facebook api 사용하기 위해서는 facebook 회원가입은 필수 입니다.) 로그인 후에 위 상단에 앱만들기를 누르면 위와 같은 팝업이 보이고 표시이름을 넣고 앱만들기 버튼을 클릭합니다. 클릭하면 보안관련 캡챠 화면이 보이고 입력이 끝나면 다음과 같은 화면이 보입니다. 왼쪽 메뉴에서 Dashboard 를 누르면 다음과 같은 화면 보입니다. 대쉬보드에 앱시크릿 코드에 보기 버튼을 클릭합니다. 클릭 후에 비밀번호 입력 창이 나오고 Facebook 비밀번호를 입력 한후 제출 버튼 클릭 합니다. 그다음 화면에서 앱연동할 때 사용하는 앱 시크릿 코드가 발급 된 정보를 보실 수 있습니다. 다음 시간에는 앱 시크릿코드와 앱 ID로 자바 프로그램에서 연동하는 걸 공유 하겠습니다.

Android Context 개념

이미지
'context라는 무엇인가?' 란 질문을 들었을때 뭐라고 대답해야 할지 애매한 경험 있으신가요? 개발을 하면서 사용 안되는 곳이 없을 정도로 다양한데 정의를 물어보면 사용법 같은걸로 대신 대답을 해서 위기를 모면하는 경우도 참 많았던 것 같습니다. 그래서 context의 개념을 알아보고자 합니다. context 가장 사용 많이 하는 곳은 어디인가요? 대부분의 개발자들은 Activity를 이야기 할 것이라고 생각합니다. UI에서 context값은 항상 필수로 사용 됩니다. 이렇게만 사용 할때는 좀 context를 알것 같다 생각이 듭니다. getApplicationContext() 같이 Application 의 context를 쓰면서 부터는 정말 헷갈리기 시작합니다. Activity에서는 context를 활용해서 다이얼로그 띄우는등의 UI에서 사용 할수 있었습니다. getApplicationContext()를 활용 해서는 UI를 그리는 작업은 에러가 나면서 안되는 것을 보면서 서로 다른건가?란 생각을 하게 될 것입니다. Context기본 역할 1) 어플리케이션에 관하여 시스템이 관리하고 있는 정보에 접근하기   -> getPackageName(), getResource()등의 함수 호출 2) 안드로이드 시스템 서비스에서 제공하는 API 를 호출 할 수 있는 기능   -> startActivity(), bindService()등의 함수 호출  설명을 정리하자면 Android App내에서 시스템 API를 호출 하기 위해 사용되는 객체라고 할 수 있습니다. context를 활용 해야지만 시스템의 함수를 호출 할수 있는 이유는 어플리케이션과 프로세스의 관계 때문이라고 합니다. Android 같은 경우는 프로세스 같은 경우는 OS 커널에서 관리되고 어플리케이션의 Activity같은 경우는 ActivityManagerService에서 관리되고 있다고 합니다.  처음에 이야기 했던 context 인

[AWS] 운영중인 EC2 Instance의 EBS 볼륨 확장하기

이미지
EC2 인스턴스는 실행중인 서버의 스토리지 볼륨을 확장 할 수 있습니다. 콘솔에서 EBS의 볼륨 크기를 수정하고 인스턴스에 접속하여 파티션을 확장해 주면 됩니다. 1. AWS 콘솔에서 EBS 볼륨 확장하기 EC2 대시보드 에서 확장하고 싶은 EBS 선택한 후 작업 > 볼륨수정 을 선택합니다. 볼륨수정 팝업이 표출되면 크기를 원하는 사이즈로 변경한 후  “수정” 버튼을 선택합니다. 확인 메시지가 출력되면 “예” 를 선택합니다. 대시보드에서 확인해 보면 크기가 8GB 에서 10GB 로 변경된 것을 확인할 수 있습니다. 변경작업이 완료될 때 까지 상태가 “Optimizing” 으로 표시됩니다.   확장이 완료 되었습니다. 2. 인스턴스의 볼륨 파티션 확장하기 AWS 콘솔을 통한 볼륨 확장이 완료되면 인스턴스에 접속하여 파티션을 확장해 주어야 합니다. 인스턴스에 SSH 접속 후 $ lsblk 명령어를 통해 파티션 영역을 확인합니다. 디스크는 10GB 로 확장되었지만 파티션 영역은 8GB 만 사용되고 있는걸 확인할 수 있습니다. 파티션 확장을 위하여 $ sudo growpart /dev/xvda 1 명령어를 입력합니다. $ lsblk 명령을 실행해 파티션이 확장 되었는지 확인합니다. 파티션이 10G 로 변경된 것을 확인할 수 있습니다. $ df –h 명령어를 통해 마운트 영역을 확인해 보면 /dev/xvda1  은 여전히 8GB의 디스크 공간만 사용되고 있음을 확인 할 수 있습니다. 디스크공간을 확장하기 위해  $ sudo resize2fs /dev/xvda1 명령을 실행합니다. $ df –h 명령을 실행해 디스크 공간을  확인 합니다. AWS 콘솔을 통해 확장한 만큼 10GB 영역이 마운트 되어 있는 것을 확인할 수 있습니다.

Intent란 무엇인가?

Intent는 안드로이드 앱 내부 혹은 외부 컴포넌트간의 호출및 정보 전달을 하는 역할을 합니다. 앱 구성요소(컴포넌트) * Activity * Service * BroadCast Receiver * Content Provider 앱의 구성요소는 위의 4가지 이며 해당 구성요소간의 호출및 정보를 전달하는데 사용하는 것이 Intent 입니다. 명시적 인텐트와 암시적 인텐트 2가지로 분류 할수 있습니다. 1. 명시적인텐트 - 호출할 대상을 지정 하여 사용 Intent intent = new Intent(context, CallActivity.class) ; startActivity(intent) ; 다른 Acitivity를 시작 하는 소스입니다. 시작할 Acitivity를 지정하여 Intent를 생성 하여 사용합니다. Intent intent = new Intent(context, MyService.class) ; startService(intent) ; 로컬서비스를 시작하는 소스입니다. (참고로 원격서비스는 바인딩하는 방식으로 구현됩니다.) Acitivity 시작하는 것과 크게 다르지 않게 Service를 지정하여 Intent를 생성하여 사용 하는 것을 알수있습니다. 2. 암시적인텐트  - 컴포넌트외의 속성(컴포넌트를 지정하면 명시적 인텐트가 된다)들로 구성하여 속성에 부합하는 컴포넌트를 실행 Intent intent = new Intent( "android.intent.action.CALL" , Uri.parse(tel)) ; startActivity(intent) ; 전화걸기를 요청 하는 소스입니다. Action값을 android.intent.action.CALL을 지정해서 Acitivity를 실행하면 디바이스내에 해당 Action값 속성을 가지고 있는 Activity를 선택할수 있는 창이 노출 됩니다. 위에 보이는 소스는

AWS RDS parameter group을 이용해 character-set 변경(utf8), 타임존 변경하기

이미지
지난 포스팅에선 AWS RDS 파라미터 그룹을 생성하고 function을 생성할 수 있는 권한을 만들기 위해서 log_bin_trust_function_creators 변수를 변경해주었습니다. 이번 포스팅에선 지난 포스팅에서 생성한 파라미터 그룹을 이용하여 character-set , 타임존을 변경해보겠습니다. 우선 RDS 대시보드 콘솔로 이동합니다. 왼쪽 메뉴의 파라미터 그룹으로 이동합니다. 지난 포스팅에서 생성한 my-parameter-group 이 있습니다. 선택하시고 파라미터 편집으로 이동합니다. 필터에 character_set 으로 검색하면 6개의 항목이 나오는데 값 편집으로 모두 utf8로 변경합니다. character_set_client : utf8 character_set_connection :  utf8   character_set_database :  utf8 character_set_filesystem :  utf8 character_set_results :  utf8 character_set_server :  outfit 그 다음으로, collation으로 검색을 하면 두가지 항목이 나오는데 utf8_unicode_ci로 변경합니다. collation_connection :  utf8_unicode_ci collation_server : utf8_unicode_ci 여기까지 수정하셨다면, 데이터베이스의 utf8 설정이 완료 된 상태입니다. 이제 timezone을 설정해보겠습니다. MySQL Workbench에서 해당 RDS에 접속하고 한글화 설정을 위한 프로시져를 등록합니다. DELIMITER | CREATE PROCEDURE '설치한 DB명' . `store_time_zone` () IF NOT (POSITION( 'rdsadmin@' IN CURRENT_USER ()) = 1 ) THEN SET SESSION

github X jenkins (CI: Continuous Integration) 구성하기 with private Repository #1 - github ssh 접속

이미지
private Repository 는 일반적으로 개인적인 프로젝트가 아닌 회사에서 product 를 할 경우에 많이 이용하는데요, 일반적으로 github public Repository로 CI를 구성하는 방법은 많이 있지만 private Repository는 처음에 구축할 경우 permission 및 권한 문제로 난관에 봉착하는 경우가 많습니다.  private Repository 를 가지고 github와 jenkins을 가지고 CI 환경을 설명하도록 하겠습니다. * github와 jenkins을 가지고 CI 환경이란??? github 에서 소스 변경사항을 push하면 자동으로 jenkins에서 빌드가 되는 환경을 말합니다.  github와 jenkins을 가지고 CI 환경구성하기 위해  아래의 단계로 설정하면 됩니다. # 구성순서 1. SSH 공개키 만들기 2. github에 공개키 등록 3. github ssh 접속 테스트 4. jenkins plugin 설치 5. jenkins에 github 서버 등록 6. jenkins 프로젝트 구성 7. github 프로젝트에 jenkins서비스등록 8. 빌드확인(프로젝트 push후 자동 빌드 확인) 위의 순서로 구성하면 되지만 , 여기서는 3번까지 구성하여 github ssh 접속 구성을 진행하겠습니다. 1. SSH 공개키 만들기  github 원격 git 레파지토리에 접속하기 위해 SSH 공객키 인증으로 접속해야 합니다. 모든 운영체제에서공개키를 만드는 방법은 비슷합니다. 공개키 생성하는 방법 1) 터미널을 열고 2) github 계정의 이메일을 주소를 입력하여 공개키를 생성합니다.  3) "Enter a file in which to save the key," 메시지가 나오면 엔터를 입력 합니다.  4) 인증서 암호화를 위해 key를 입력하고 , 다시한번 입력하여 확인합니다.  5) 그러면 (사용자홈디렉토