2024년 5월 15일 수요일

Android 14 새로운 기능

 


안드로이드 14의 새로운 기능은?


구글이 안드로이드 14에서 사용 가능한 새로운 기능 14가지를 소개해요.

안전성과 개인정보 보호에서 자동으로 PIN 확인 옵션을 추가하여 사용자들의 편의를 높였어요.

기존에는 적용되지 않았던 점으로, 전원을 켠 직후나 재부팅 후에도 사용할 수 있죠.

PIN을 설정한 후에 '설정 - 보안 및 개인정보 - 기기 잠금 방식 - 화면 잠금 - 최소한 6자리 코드 입력 - 자동으로 올바른 PIN 확인'으로 설정할 수 있어요.


분할 화면 기능 업그레이드 내용


분할 화면 기능이 개선되어 더 명확하게 각 애플리케이션의 레이아웃을 보여줘요.

세로나 가로 방향으로 태블릿을 사용할 때도 가능하며, split-screen 모드 진입 시 어플리케이션이 어디에 나타날지 이해하기 쉽게 변화시켰어요.

첫 번째 애플리케이션과 함께 사용할 경우에도 더 명확한 선택을 위해 첫 번째 애플리케이션에 더 잘 보이는 split-screen 진입 옵션이 있다요.


새로운 잠금 화면 시계 스타일 기능은?


안드로이드 14에서는 잠금 화면 시계를 8가지 사전 설정된 스타일 중 하나로 변경할 수 있는 편리한 기능이 추가돼요.

기술적으로는 16가지 스타일이 있지만, 선호하는 스타일이 작은 좌측 상단 시계라면 강제로 선택할 수 있어요.

이러한 스타일은 기본적으로 '다이나믹 컬러 설정'에 기반하지만, 원하는 경우 제한된 팔레트 옵션 중에서 선택할 수 있어요.

구글이 '메테리얼 U'를 계속 발전시킨다면 미래에는 튜닝 옵션을 더욱 확장할 것으로 기대돼요.

안드로이드에 적용된 이 옵션은 미래에는 튜닝 옵션을 더욱 확장하고 산재된 것과는 다른 매력을 제시하게 될 것이에요.


새 미니 게임과 예측 백 제스처


안드로이드 14에서 'About Phone'으로 이동하여 소프트웨어 빌드에 대한 Android 14 옵션을 찾은 후, 해당 옵션을 여러 번 누르거나 탭하여 Android 14 로고가 표시될 때까지 기다려요.

로고를 길게 누르면 우주선처럼 부서져 나가며, 이것만으로도 꽤 멋져요.

하지만 공간 테마에 따라 계속 진행되는, 보다 어렵게 보이는 새로운 '루나 미니 게임'으로 진입하게 돼요.

이러한 게임들의 부활을 보는 것이 좋으며, 사용자 본인이 직접 시도해보기를 강력히 추천해요.

또한, 안드로이드 14에서 예측 백 제스처가 새롭게 추가되어 개발자 옵션에서 토글로 숨겨져 있다는 점에 주목할 필요가 있어요.


안드로이드 14에서 사용자 경험의 주요 변경점?


안드로이드 14에서는 제스처 네비게이션으로 백 제스처를 사용할 때, 목적지 시스템 미리보기가 가능해져 부드럽고 세련된 애니메이션을 제공하고 있어요.

픽셀폰에 충전기를 연결할 때 새로운 애니메이션도 추가되어, 동적 색상의 작은 알약 모양으로 배터리 인디케이터가 변하는 것이 특징이에요.

안드로이드 14에서는 PIN 입력 확인 및 잠금 화면 스킵할 수 있게 되었으며, 키 누름 감지 시 이제는 이전 버전의 점과 원 대신 작은 머티리얼 UI 아이콘으로 표시되죠.

이러한 변화들은 안드로이드 14에서의 사용자 경험과 디자인 변화 중 하나로, 픽셀폰 사용자들이 소중히 여기는 구글이 도입하는 변화의 한 부분입니다.


픽셀 버전 안드로이드의 새로운 변화


픽셀 버전의 Android에서 시각적으로 중요한 새로운 변화인 플래시 통지 기능이 추가되었어요.

이는 새로운 알림이 도착했음을 시각적으로 알려주는 접근성 기능이죠.

앱 알림 도착 시 디스플레이에 번쩍이는 색상을 설정할 수 있고 12가지 색상 중 선택 가능하죠.

뿐만 아니라, 플래시 통지 설정으로 카메라 플래시를 깜박이는 대신 펄스 설정할 수 있어요.

또한, 기기의 제스처 네비게이션 영역을 투명하게 설정하는 기능도 추가되었어요.

이는 개발자 옵션 섹션에서 설정하는데, 흑백으로 주의를 분산시킬 수 있다는 점을 유의해야 해요.


Android 12의 미디어 플레이어와 애니메이션의 변화


화면을 좌나 우측에서 스와이프하면 UI에서 뒤로 이동하는 가이드 서클이 나타나죠.

가이드 서클의 색상은 시스템 테마의 색상과 일치하며, Google은 이를 통해 안드로이드 12 이후부터 중요한 부분이 된 테마를 지원하기 위한 노력을 보여준다고 해요.

Google은 시스템 미디어 플레이어를 계속 발전시키고 있고, 올해는 미디어 플레이어 사용 시 파도 타는 빛나는 애니메이션 효과가 추가되었어요.

이전에 베타 버전에 있던 효과가 안정적인 안드로이드 빌드에 포함되며, 리파인된 잠금 화면 공개 애니메이션이 함께 업데이트되었답니다.


밝은 색을 좋아하지 않는 사람을 위한 옵션이 추가된 이유


동영상에서 동적 컬러 테마에 관한 이야기를 계속하고 있어요.

밝고 장난기 많은 색상을 좋아한다면 훌륭한 선택이에요.

그러나 이제는 화면 배경 및 스타일 앱에 단색 옵션이 추가되어, 휴대폰에서 밝은 색상을 좋아하지 않는 경우에도 선택할 수 있어요.

특별한 에디션은 아니지만, 대담한 색상을 좋아하지 않는다면 좀 더 간단하게 유지할 수 있는 옵션이 추가되었다.

이제 안드로이드 14에서는 잠금 화면 퀵 토글을 사용자 정의하거나 완전히 비활성화할 수 있게 되었어요.


One UI의 단축키 활용 방법


One UI에서 단축키는 디폴트 카메라, 비공개 모드, 구글 홈 컨트롤, 빠른 음소거 스위치, QR 코드 스캐너, 손전등 또는 토치 옵션, 비디오 카메라 모드 등 포함하여 8가지로 제한돼요.

이 단축키를 탭하거나 실수로 그럴 경우, 폰이 흔들리면서 진동으로 알려주며 완전히 해제하거나 액세스할 수 있도록 길게 눌러야 해요. 안드로이드 14에서는 애플리케이션 간 텍스트 복사가 편리해지고, 텍스트를 선택하고 길게 누른 뒤 다른 애플리케이션 텍스트 입력 창으로 끌어다 이동하여 즉시 붙여넣기할 수 있어요.

휴대폰 화면에서 사용하기에는 쉽지 않은 제스처이지만, 분할 화면 모드를 사용하거나 Pixel Fold나 Pixel Tablet 같은 큰 화면 기기를 사용할 때 유용하구요.

안드로이드 14의 최신 기능 14가지를 Pixel 폰에서 알아두어야 해요.



G
M
T
Y
음성 기능은 200자로 제한됨

2024년 5월 2일 목요일

Android 15 Beta 1

- 안드로이드 15 베타1 에서는 무엇을 다루나요?


안드로이드 15의 첫 공개 베타 버전에 대해 소개하며, 무료 라이트 모드 배경화면을 제공해요.


2,500개의 좋아요가 달리면 다크 모드 버전도 제공한다고 약속하며, 베타 1에서 새로워진 내용을 알아봅니다.


구독 유도를 하며, Android 15 관련 콘텐츠를 더 많이 받아보라고 권유하고, 딥 다이브 형식의 콘텐츠를 추구한다고 합니다.



- 안드로이드 15 Beta 1에서 구글 지갑 앱의 기본 설정과 보안 개선사항은?


안드로이드 15 Beta 1에서는 기기에 기본으로 설정할 수 있는 지갑 애플리케이션 기능이 추가됐어요.


기본 설정 앱을 변경하면 이제 NFC 결제가 처리되고, 기존 Pixel은 Google Wallet 앱으로 설정되지만 다른 어플은 이를 제어할 수 없죠.


기능을 완전히 비활성화도 가능하며, 기기 이름을 공유하지 않도록 하는 새로운 토글도 있어 개인정보 보호를 향상시켰어요.


또한, Android 15 beta 1에서는 셀룰러 네트워크 보안 메뉴를 통해 안전하지 않은 네트워크를 감지하고 이를 알리는 기능이 추가되었어요.



- 안드로이드 15 베타 1의 주요 변경 사항은?


안드로이드 15 베타 1의 중요한 변경 사항은 애플리케이션 내에서 정보를 프로파일링할 수 있는 개발자 기능이에요.


일반 사용자들을 위해서는 이는 개발자 옵션에서 메모리 사용량을 확인할 수 있는 기능으로 나타나죠.


베타 1에서는 이 추적 기능을 비활성화 또는 활성화할 수 있어요.


기본적으로 비활성화되어 있으며, 시간에 따라 전화기에서 사용 중인 메모리 용량을 확인하려면 재시동이 필요해요.


작은 UI 변경 사항과 조정이 많이 있지만, 원하는 대로 이 추적 기능을 활성화 또는 비활성화할 수 있는 옵션이 있어요.



- 안드로이드 15 베타 1 빌드의 새로운 변화와 이슈


안드로이드 15 베타 1 빌드에서 빅스비 텍스트가 약간 덜 진해진 걸 발견했고, 텍스트 도중에 이중 헤더 또는 섹션 제목이 나타나는 현상을 관찰했어요.


새로운 시각적 변화 중에서는 일부가 약간 이상한 3D 효과를 나타내고, 두 번째 헤더는 데이터에 따라 다크 모드에서 더 나은 모습을 보였어요.


미래에는 안드로이드 15를 타겟팅하는 앱들이 베타 1부터 기본으로 에지를 표시할 것이고, 큰 화면에서 더 나은 시각적 경험을 제공할 예정이에요.


아직 이 변경사항을 지원하는 애플리케이션이 없지만, 향후 더 많은 앱 지원이 예상되고, 시간이 지날수록 더 많은 변화가 예정돼 있어요.



- Android 15 Beta 1에 미세한 변화는 무엇인가요?


Android 15 Beta 1에서는 예측 제스처에 미세한 변화가 있었어요.


대부분의 애플리케이션에서 널리 사용되지 않는 예측 제스처에서 새로운 옵션이 '프레잉 카드'처럼 더 자연스러운 디자인으로 변화되었다고 해요.


그러나 이 변화를 확인하려면 대부분은 개발자 옵션으로 이동하여 활성화해야 합니다.


Android 15 Beta 1에서는 그 외에 큰 변화보다는 이런 미세한 변화가 중심이었어요.


Android 15 Developer Preview 2

 


- Android 15 개발자 미리보기 2 업데이트의 핵심은?


구글이 Android 15 개발자 미리보기 2 업데이트를 공개했고, 유용한 추가 기능이 포함되었어요.


Android 15 중요 사용자 관련 변경 사항을 살펴보면, 새로운 오디오 공유 메뉴와 다운로드된 앱을 디바이스에 보관할 수 있는 기능이 주목할 만 합니다.


앱 정보 페이지의 '앱 열기' 버튼 옆에 '아카이브된' 앱이 위치하며, 홈 화면에서 회색으로 표시되어 Play Store에서 아이콘을 탭하여 다시 다운로드할 수 있어요.


픽셀을 웹캠으로 사용할 때 고품질 토글을 사용할 수 있으며, 비디오를 밝고 조금 더 선명하게 제공한다고 하네요.


또한, 개발자 미리보기 2에서 사소한 디자인 변경 사항이 소개되었지만 크게 변한 것은 없어요.


사용자에게 노출된 모든 변경 사항을 다룬 후, 더 많은 변경 사항에 대해 이야기할 예정이라고 해요.



- Android 15의 개발자 기능 기능성은?


Android 15에서 개발자가 이용할 수 있는 기술적 측면은 덮개가 있는 플리파블 기기에 대한 앱 호환성 선언이에요.


또한, 위성 연결도 주요 관심 사항 중 하나로 Android 15에서는 사용 중일 때의 새로운 상태 표시줄 아이콘 및 메시지 및 작동 방식에 대한 정보를 간단히 볼 수 있는 알림을 제공해요.


또한, SMS, MMS 및 RCS 메시징과 같은 앱은 위성 연결 기능을 활용하여 더 부드러운 사용자 경험을 제공할 수 있어요.


또한, 앱이 차가운, 따뜻한 또는 뜨거운 상태로 시작되었는지 추적할 수 있으며 앱이 다양한 출처에서 시작되었는지 확인할 수 있는 새로운 도구를 제공해요.


마지막으로, 앱이 화면 녹화 중인지 감지하고 사용자에게 알릴 수 있으며 NFC의 개선을 통해 더욱 원활한 탭하여 지불 트랜잭션을 제공해요.



- PDF 향상 기능과 안드로이드 15 업데이트의 주요 내용은?


앱에서 암호 보호된 파일, 주석, 양식 편집, 복사 검색 선택 등이 가능한 PDF 향상 기능이 곧 출시될 거예요.


기존 기능을 보완하는 주요 개발자 중점 기능 외에도 기술적인 내용은 링크로 안내되며, 안드로이드 15 설치를 원하는 경우 9to5Google 웹사이트에서 안내가 가능해요.


사용자 간의 큰 변경점이 많지 않아서 지금 안드로이드 15를 설치하는 건 권장되지 않지만, 개발자 중점 기능은 앞으로의 안드로이드 버전을 기대하게 만들어요.


2023년 7월 2일 일요일

경주 주상절리

경주여행 - 주상절리

경주하면 떠오르는 대표 관광지 중 하나인 주상절리는 용암이 빠르게 식으면서 기둥 모양으로 굳어진 지형입니다.

 

 제주도나 울릉도 등 다른 지역에서도 주상절리를 볼 수 있지만 경주의 주상절리는 독특한 형태로도 유명한데요. 부채꼴 모양의 주상절리가 특히 유명하답니다.

이번 주말엔 가족과 함께 경주 주상절리 구경하러 떠나보는건 어떨까요?

 

 

사진제공 - 경주시 관광자원 영상이미지
(https://www.gyeongju.go.kr/gyeongjuimage/page.do?cmd=2&mnu_uid=2440&con_uid=4199)

 

주상절리는 어떻게 만들어지나요? 주상절리는 화산활동시 분출되는 뜨거운 용암이 지표면에 흘러내리면서 급격히 식어서 만들어진 육각형 또는 사각형 돌기둥을 말합니다. 이러한 절리(틈)들이 수직방향으로 발달하면서 형성되는데요. 이 때 암석이 냉각될 때 부피가 수축되면서 사이사이에 틈이 생기게 됩니다. 그리고 오랜 시간동안 풍화작용을 거치면 균열이 생긴 암석 조각들이 떨어져 나가면서 지금의 모습처럼 멋진 주상절리를 이루게 된답니다.


경주의 주상절리는 어떤 특징이 있나요? 앞서 말했듯이 경주의 주상절리는 특이한 형태로도 유명한데요. 위 사진 속 부채꼴 모양의 주상절리가 보이시나요?

이렇게 큰 규모의 부채꼴 모양의 주상절리는 국내에서는 유일하게 경주에서만 볼 수 있다고 합니다. 또한 바다 근처에 위치해서 파도소리길이라는 산책로를 걸으며 아름다운 자연경관을 감상할 수 있답니다.


주변에 가볼만한 곳이 있나요? 부채꼴모양의 주상절리 뿐만 아니라 다양한 종류의 주상절리를 한 눈에 볼 수 있는 읍천항 벽화마을 추천드려요. 마을 곳곳에 그려진 예쁜 벽화들을 보며 걷다보면 마음속 힐링 제대로 느낄 수 있으실 꺼에요. 주변에 카페도 많으니 여유롭게 커피한잔 하며 둘러보는것도 좋을 것 같아요.


2019년 10월 10일 목요일

Android NDK


Android Studio 에서 App 빌드후 생성된 so ndk-build.cmd 생성한 so 파일의 크기가 다르다. 왜일까?
또한 ndk-build 이용해야 so libs 복사된다.(내부 install 명령을 통해서)

Android Studio Ndk-build 설정
File - Settings - Tools - External Tools - add

Build 추가
Program : sdk 설치폴더\ndk-bundle\ndk-build.cmd
Working dir : 프로젝트\app\src\main (or jni)

Clean 추가
Program : sdk 설치폴더\ndk-bundle\ndk-build.cmd
Arguments : clean
Working dir : 프로젝트\app\src\main (or jni)

 

 

[Build error : Error fatal error opening dependency file … No such file or directory]

D:/xxx/yyy/zzz/D_/build/xxx/yyy 형태로 중복 출력되는 경우

프로젝트의 경로가 너무 길어 발생하는 문제

 

2019년 8월 29일 목요일

Android Studio build error

  • java.lang.UnsatisfiedLinkError

Jni library를 추가 하거나, 빌드된 Library를 추가 했을 경우 아래와 같은 에러 발생
1. gradle.properties 파일  -> 아래 한 줄을 추가
   android.useDeprecatedNdk=true
2. app/build.gradle 파일 -> 아래 소스 추가
   defaultConfig {
        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
        }
    }

  • GCM java.io.IOException: SERVICE_NOT_AVAILABLE

시스템 환경설정 시간을 자동으로 설정

  • More than one file was found with OS independent path 'lib/armeabi-v7a/libxxx.so' 
해당 모듈의 build.gradle 에 추가.

 
packagingOptions {
    pickFirst 'lib/arm64-v8a/*'
    pickFirst 'lib/armeabi-v7a/*' 
}
 

2019년 7월 18일 목요일

Android SECRET_CODE

디버깅 로그 확인을 위해 SECRET_CODE 를 사용하였는데 언제부터인가 안되는 단말이 생기기 시작했다.
관련 내용을 정리해본다.

기본 dialer 앱을 통해 동작시켜야 한다.
*#*#code#*#* 이 동작하지 않을 경우는 adb 를 이용하는 방법도 있다.

adb shell am broadcast -a android.provider.Telephony.SECRET_CODE -d android_secret_code://codeNumber

but, Android Oreo(?) 이후부터는 exception 발생한다.
java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.provider.Telephony.SECRET_CODE

API29 에서 ACTION_SECRET_CODE 가 생긴다는데 추후 확인 필요하다.

현재까지의 결론은, S 폰은 위 방법들로는 안되는거 같고, 내가 가지고 있는 일부 폰에서는 dialer app 에서는 동작은 한다.

2018년 6월 26일 화요일

Android Runtime Exception


  • Only the original thread that created a view hierarchy can touch its views
Original Thread으로만 UI를 변경하여야 함.
Main Thread 외의 새로 생성한 Thread를 이용하여 임의로 UI를 업데이트 할 경우 발생.
Handler를 이용하여 Main Thread를 간접적으로 사용하여하 함.




2017년 11월 30일 목요일

Git



git status
git add .
git commit -m "내용" (status 로 확인)
git log

[branch 생성 및 checkout]
git branch xxx
git checkout xxx
(git check -b xxx : 2명령어를 한번에.)

원격 브치가 이미 존재 할 경우 원격 브랜치를 기준으로 로컬 브랜치를 만드는 방법
git checkout -b dev origin/dev

이미 존재하는 브랜치를 바로 가져오기
git bash 를 관리자 권한으로 실행 - 폴더 이동
git clone -b dev(브랜치명) http://xxx/xxx.git xxx_dev(폴더명 지정)

[work 브랜치에서 작업]
git add .
git commit -m "xxx"
git push origin work (work push)

[리모트 서버로부터 동기화]
git fetch origin

[work branch master merge & push]
git branch (현재 위치 확인)
git checkout master (master 로 변경)
git merge xxx (merge 할 브랜치 이름)
git push origin master (master push)

[remote branch push commit 삭제]
git reset --hard commit_id (id push 이전의 id, 내가 올리기전 마지막 id)
git push -f origin master (reset 이후 강제 push)

[add 취소]
git reset HEAD 파일명 (파일명 입력하지 않으면 모두 취소)

[commit 취소]
[방법 1] commit을 취소하고 해당 파일들은 staged 상태로 워킹 디렉터리에 보존
$ git reset --soft HEAD^
[방법 2] commit을 취소하고 해당 파일들은 unstaged 상태로 워킹 디렉터리에 보존
$ git reset --mixed HEAD^ // 기본 옵션
$ git reset HEAD^ // 위와 동일
$ git reset HEAD~2 // 마지막 2개의 commit을 취소
[방법 3] commit을 취소하고 해당 파일들은 unstaged 상태로 워킹 디렉터리에서 삭제
$ git reset --hard HEAD^

[push 취소]
가장 최근의 commit을 취소 (기본 옵션: --mixed)
$ git reset HEAD^

Reflog(브랜치와 HEAD가 지난 몇 달 동안에 가리켰었던 커밋) 목록 확인
$ git reflog 또는 $ git log -g
 
원하는 시점으로 워킹 디렉터리를 되돌린다.
$ git reset HEAD@{number} 또는 $ git reset [commit id]

commit message 수정
$ git commit -m "Write commit messages"

push
$ git push origin [branch name] -f 또는 $ git push origin +[branch name]


[충돌시]
Android Studio 이용시 unlink 에러는 read-only 이거나 write 가 안되는 상황 (다른 프로세스에서 잡고 있는 경우)
error: Your local changes to the following files would be overwritten by checkout:
Please commit your changes or stash them before you switch branches.


[Option]
git add -A : stages All
git add .  : stages new and modified, without deleted
git add -u  : stages modified and deleted, without new
//git remote add origin <원격서버주소>

git show <tag명>  : 태그정보와 해당 태그의 commit 정보를 확인한다.
ex : git show v1.4

git tag
git tag -l 'v.1.4.*' : Tag 목록조회 [v1.4 버전들의 목록만 조회]
git tag -a <tag명> -m '[tag message]' : 태그 추가
ex>git tag -a v1.0 -m 'add first release tag'
git push origin v1.4 : 태그 반영

git remote [-v] // 원격 저장소 정보 확인
git remote show <remote명> //리모트 저장소 살펴보기

comment message 수정
git commit --amend -> 내용 수정
git commit --amend -m "New commit message"

git pull

소스 수정사항 원복시키기(서버 상태 동기화?)
git fetch origin
git reset --hard origin/master

git config --global --list
현재 설정정보 조회할 수 있습니다. --global옵션은 전역설정에 대한 옵션이며 현재 프로젝트에만 적용할때는 주지 않습니다.
git config --global user.name "사용자명"
사용자명을 등록합니다 (필수)
git config --global user.email "이메일주소"
이메일 주소를 등록합니다. (필수)
git config --global color.ui “auto”
터미널에 표시되는 메시지에 칼라를 표시해줌


git에 대해서 사전에 알아야 될 부분은 아래와 같습니다.

git의 저장소는 3가지 단계로 나누어 집니다. 커밋한 소스가 보관되는 저장소와 현재 프로젝트 파일들이 있는 작업트리, 저장소와 작업트리사이의 버퍼영역으로 커밋될 대상이 저장되는 스테이징 영역입니다.
    git은 빈 디렉토리는 추적하지 않습니다.
    형상관리를 하지 않을 파일은 .gitignore 파일에 추가합니다.
    HEAD는 현재 브랜치의 가장 최신커밋을 의미한다.
    기본원격 저장소를 origin이라고 부릅니다.


[멀티 계정 사용시]
나의 경우 github(개인), bitbucket(회사) 2개를 동시에 사용하고자 할 경우
1. 각 계정별 ssh key 생성 및 등록
git bash home 에서 .ssh 폴더로 이동하여 생성
ssh-keygen -t rsa -b 4096 -C "abc@xxx.com"
ssh-add ~/.ssh/id_rsa_xxx
clip < ~/.ssh/id_rsa.pub (클립보드 복사)
각 사이트에 ssh key 붙여넣기

2. git config 에 각 계정 등록 (이 부분이 실제로 필요한지 확인이 안됨)
touch config
아래 내용 작성
# seesky89
Host seesky89
HostName github.com
User seesky89
IdentityFile ~/.ssh/id_rsa_seesky89

# aaa
Host aaa
HostName abc.com (포트 특정시 abc.com:7990)
User aaa
IdentityFile ~/.ssh/id_rsa_aaa

3. 그 이후에는 사용하던대로 하면 된다.
(대부분 해당 툴에서 계정 연동 팝업이 뜬다.)
bash 환경에서 할 경우 아래처럼 설정해줘도 된다.
git config --local user.name "aaa"
git config --local user.email "bbb@ccc.com"



[기본적인 명령어]
git --version
현재 git의 버전을 확인합니다.

git init
현재 디렉토리에 git 저장소를 생성합니다.

git add 파일명
git add는 2가지를 하는데 untracked files의 파일들을 git가 추적하도록 하거나 파일은 수정했지만 아직 스테이징 영역에 올라가지 않은(Changed but not updated) 파일들을 스테이징 영역에 올립니다. -i 옵션을 주면 대화형모드가 시작되며 파일의 일부분만 선택해서 스테이징하는 것이 가능합니다. -p 옵션을 사용하면 -i 대화형모드없이 바로 패치모드를 사용할 수 있습니다.

git commit -m "커밋메시지"
스테이징 영역에 올라가 있는 파일들을 커밋합니다. -m 은 커밋메시지를 주는 옵션으로 여러 줄의 커밋메시지를 쓸 경우 -m 을 여러개 사용할 수 있습니다. -a 옵션을 사용하면 스테이징에 올리는 작업과 커밋을 동시에 할 수 있습니다.(추적되지 않는 파일은 추가하지 않습니다.) -m을 사용하지 않을때 -v옵션을 사용하면 편집기에 커밋하려는 변경사항의 다른점을 보여줍니다. 특정파일만 커밋하려면 마지막에 파일명을 추가해주면 됩니다.

git commit -C HEAD -a --amend
지정한 커밋의 로그메시지를 다시 사용하여 기존커밋을 수정합니다. -c를 사용하면 기존메시지를 수정할 수 있는 편집기를 실행해 줍니다.

git status
커밋되지 않은 변경사항을 조회합니다.

git diff
스테이징영역과 현재 작업트리의 차이점을 보여줍니다. --cached 옵션을 추가하면 스테이징영역과 저장소의 차이점을 볼 수 있다. git diff HEAD를 입력하면 저장소, 스테이징영역, 작업트리의 차이점을 모두 볼 수 있다. 파라미터로 log와 동일하게 범위를 지정할 수 있으며 --stat를 추가하면 변경사항에 대한 통계를 볼 수 있습니다.

git mv 파일명 새파일명
기존에 존재하는 파일을 새파일로 이동합니다. 변경이력은 그대로 유지합니다.

git checkout -- 파일명
아직 스테이징이나 커밋을 하지 않은 파일의 변경내용을 취소하고 이전 커밋상태로 돌립니다. svn에서 revert와 동일합니다.



Branch와 Tag
git branch
현재 존재하는 브랜치를 조회합니다. -r 옵션을 사용하면 원격저장소의 브랜치를 확인할 수 있습니다.

git branch 브랜치명B 브랜치명A
브랜치명A에서 새로운 브랜치 브랜치명B를 만듭니다. (git에서 기본 브랜치는 master라는 이름을 사용합니다.)

git branch 브랜치명
브랜치명의 새로운 브랜치를 만듭니다.(체크아웃은 하지 않습니다.)

git branch -d 브랜치명
브랜치를 삭제합니다.

git branch -m 존재하는브랜치명 새로운브랜치명
존재하는 브랜치를 새로운브랜치로 변경합니다. 이미 존재하는 브랜치명이 있을 경우에는 에러가 나는데 -M 옵션을 사용하면 이미 있는 브랜치의 경우에도 덮어씁니다.

git tag 태그명 브랜치명
브랜치명의 현재시점에 태그명으로 된 태그를 붙힙니다. git tag만 입력하면 현재 존재하는 태그 목록을 볼 수 있습니다.

git checkout 브랜치명/태그명
해당 브랜치나 태그로 작업트리를 변경합니다.

git checkout -b 브랜치명B 브랜치명A
브랜치명A에서 브랜치명B라는 새로운 브랜치를 만들면서 체크아웃을 합니다.

git rebase 브랜치명
브랜치명의 변경사항을 현재 브랜치에 적용합니다.

git merge 브랜치명
브랜치명의 브랜치를 현재 브랜치로 합칩니다. --squash 옵션을 주면 브랜치명의 모든 커밋을 하나의 커밋으로 만듭니다.

git cherry-pick 커밋명
커밋명의 특정 커밋만을 선택해서 현재 브랜치에 커밋으로 만듭니다. -n 옵션을 주면 작업트리에 합치지만 커밋은 하지 않기 때문에 여러개의 커밋을 합쳐서 커밋할 수 있습니다.



로그 관리
git log
커밋로그들을 볼 수 있으면 -1나 -2같은 옵션을 주어 출력할 커밋로그의 갯수를 지정할 수 있습니다. --pretty=oneline 옵션을 주면 한줄로 간단히 보여주고 --pretty=format:"%h %s"처럼 형식을 정해줄 수 있습니다. -p 옵션을 사용하면 변경된 내용을 같이 보여줍니다. --since="5 hours" 이나 --before="5 hours"같은 옵션도 사용가능합니다. --graph 옵션을 주면 브랜치 트리를 볼 수 있습니다.

git log 커밋명
해당 커밋명의 로그를 볼 수 있습니다. 커밋명A..커밋명B (마침표2개)와 같이 입력하면 커밋명A이후부터 커밋명B까지의 로그를 볼 수 있습니다. ^은 -1과 동일해서 HEAD^라고 하면 최신바로 이전 커밋이고 HEAD^^^와 같이 쓸 수 있으며 HEAD~3을 하면 HEAD의 3개 이전의 커밋을 뜻합니다.

git blame 파일명
갈 줄 앞에 커밋명과 커밋한 사람등의 정보를 볼 수 있습니다.

git blame -L 10,15 파일명
-L 옵션을 사용하면 10줄부터 15줄로 범위를 지정해서 볼수 있고 15대신 +5와 같이 사용할 수 있습니다. 숫자의 범위 대신 정규식도 사용이 가능합니다.

git blame -M 파일명
-M 옵션을 사용하면 반복되는 패턴을 찾아서 복사하거나 이동된 내용을 찾아줍니다.  -C -C 옵션을 사용하면 파일간의 복사한 경우를 찾아줍니다. -C -C는 git log에서도 사용가능하며 내용의 복사를 찾을때는 git log에서 -p옵션을 사용합니다.

git revert 커밋명
기존의 커밋에서 변경한 내용을 취소해서 새로운 커밋을 만듭니다. -n옵션을 사용하면 바로 커밋하지 않기 때문에 revert를 여러번한 다음에 커밋할 수 있습니다.(항상 최신의 커밋부터 revert해야 합니다.)

git reset 커밋명
이전 커밋을 수정하기 위해서 사용합니다. --soft 옵션을 사용하면 이전 커밋을 스테이징하고 커밋은 하지 않으며 --hard옵션은 저장소와 작업트리에서 커밋을 제거합니다. git reset HEAD^와 같이 입력하면 최근 1개의 커밋을 취소할 수 있습니다.

git rebase -i 커밋범위
-i옵션으로 대화형모드로 커밋 순서를 변경하거나 합치는 등의 작업을 할 수 있습니다.



원격저장소
git clone 저장소주소 폴더명
원격저장소를 복제하여 저장소를 생성합니다. 폴더명을 생략가능합니다.

git fetch
원격저장소의 변경사항 가져와서 원격브랜치를 갱신합니다.

git pull
git fetch에서 하는 원격저장소의 변경사항을 가져와서 지역브랙치에 합치는 작업을 한꺼번에 합니다. 파라미터로 풀링할 원격저장소와 반영할 지역브랜치를 줄 수 있습니다.

git push
파라미터를 주지 않으면 origin 저장소에 푸싱하며 현재 지역브랜치와 같은 이름의 브랜치에 푸싱합니다. --dry-run 옵션을 사용하면 푸싱된 변경사항을 확인할 수 있습니다. 로컬에서 tag를 달았을 경우에 기본적으로 푸싱하지 않기 때문에 git push origin 태그명이나 모든 태그를 올리기 위해서 git push origin --tags를 사용해야 합니다.

git remote add 이름 저장소주소
새로운 원격 저장소를 추가합니다.

git remote
추가한 원격저장소의 목록을 확인할 수 있습니다.

git remote show 이름
해당 원격저장소의 정보를 볼 수 있습니다.

git remote rm 이름
원격저장소를 제거합니다.



서브모듈
git submodule
연관된 하위모듈을 확인할 수 있습니다.

git submodule add 저장소주소 서브모듈경로
새로운 하위모듈을 해당경로에 추가합니다. 추가만하고 초기화 하지는 않으며 커밋해쉬앞에 마이나스(-) 표시가 나타납니다.

git submodule init 서브모듈경로
서브모듈을 초기화 합니다.

git submodule update 서브모듈경로
서브모듈의 변경사항을 적용합니다.(저장소의 최신커밋을 추적하지 않습니다.)



기타 명령어
git archive --format=tar --prefix=폴더명/ 브랜치혹은태그 | gzip > 파일명.tar.gz
git archive --format=zip --prefix=폴더명/ 브랜치혹은태그 > 파일명.zip
해당 브랜치나 태그를 압축파일로 만듭니다. --prefix를 주면 압축하일이 해당폴더 안에 생성되도록 할 수 있습니다.

git mergetool
설정에 merge.tool의 값에 있는 머지툴을 찾아서 실행합니다.

git gc
저장소의 로그를 최적화 합니다. 로그가 변경되지는 않고 저장하는 방식만 최적화 합니다. --aggressive 옵션을 주면 더 자세하게 최적화합니다.

git rev-parse --show-toplevel
git 저장소내에서 입력하면 루트디렉토리를 알려줍니다.

2017년 5월 22일 월요일

공유기 추가 설정

IPTV 공유기를 다른방에서 사용시 와이파이 속도가 느린 감이 있어 공유기를 추가 설치
공유기 추가 방법에는 여러가지가 있을수 있겠다.

1. sub 공유기를 WDS 모드로 설정하여 사용
2. sub 공유기를 AP/스위치(허브) 형태로 연결하여 사용 (그림 1)
3. sub 공유기를 main 공유기에 연결하여 사용(?) (그림 2)
4. sub 공유기의 wifi 를 main 공유기와 동일한 이름으로 설정하기(무선 멀티브리지 기능 이용)


그림 1


그림 2

나의 경우에는 집안의 네트워크를 하나로 연결하기 위해 2번 방법으로 연결하였다.
여기서 사용된 공유기 환경은 main 공유기는 SK broadband 공유기이며, sub 공유기는 iptime 공유기이다.

SKB 공유기 초기값
웹설정 주소 : 192.168.35.1
사용자 계정 : admin
사용자암호 : XXXXXX_admin
(영문 대문자 사용, 공유기 뒷면 MAC주소 참고)

IPTIME 공유기 초기값
웹설정 주소 : 192.168.0.1

세팅
작업은 sub 공유기에서만 하면 된다.

(1) 공유기의 내부IP 주소 변경
공유기에 접속하여 [관리도구] - [고급설정] - [네트워크관리] - 
[내부네트워크 설정]을 클릭하고,
내부IP주소의 끝자리를 임의적으로 변경후 저장.
공유기 재부팅.

초기값 : 192.168.0.1 -> 변경 예 : 192.168.0.10

(2) 공유기의 DHCP 기능 중지
재부팅후, [내부네트워크 설정] 하단의 [DHCP 서버 설정]을 [중지]로 체크.
재부팅.

랜선 연결은 그림 2 처럼 연결.

참고.
1. DHCP 사용안함 선택시, sub 공유기에 접속하려면 초기화 해야한다.
(변경된 ip 로 접속안됨)
2. iptime 설정은 해당 홈페이지 참고
http://iptime.com/iptime/?page_id=67&uid=7433&mod=document

2017년 5월 10일 수요일

Annotation

Custom Annotation

선언
@Retention(용도)
@Target(범위)
public @interface XXX {
    ...
}

용도
RetentionPolicy.java (java.lang.annotation)
/**
 * @since 1.5
 */
public enum RetentionPolicy {
    /**
     * Annotations are to be discarded by the compiler.
     * 컴파일러가 사용하고 클래스 파일 안에 포함되지 않음 (단순 주석용, 컴파일러용)
     */
    SOURCE,

    /**
     * Annotations are to be recorded in the class file by the compiler
     * but need not be retained by the VM at run time.  This is the default
     * behavior.
     * 컴파일시 클래스 파일 안에 포함되나 VM에서 무시함
     */
    CLASS,

    /**
     * Annotations are to be recorded in the class file by the compiler and
     * retained by the VM at run time, so they may be read reflectively.
     * 컴파일시 포함되고 VM에서 인식함
     * @see java.lang.reflect.AnnotatedElement
     */
    RUNTIME
}

범위
ElementType.java (java.lang.annotation)
/**
 * @since 1.5
 */
public enum ElementType {
    /** Class, interface (including annotation type), or enum declaration */
    TYPE,

    /** Field declaration (includes enum constants) */
    FIELD,

    /** Method declaration */
    METHOD,

    /** Formal parameter declaration */
    PARAMETER,

    /** Constructor declaration */
    CONSTRUCTOR,

    /** Local variable declaration */
    LOCAL_VARIABLE,

    /** Annotation type declaration */
    ANNOTATION_TYPE,

    /** Package declaration */
    PACKAGE,

    /**
     * Type parameter declaration
     *
     * @since 1.8
     * @hide 1.8
     */
    TYPE_PARAMETER,

    /**
     * Use of a type
     *
     * @since 1.8
     * @hide 1.8
     */
    TYPE_USE
}

안드로이드(Android) 16 소개

    안드로이드 16이 드디어 출시되었어요!  🎉 이번 포스팅에서는 안드로이드 16의 다양한 기능과 장점에 대해 자세히 알아보도록 할게요.  1. 안드로이드 16 소개 안드로이드 16은 구글의 모바일 운영 체제인 안드로이드의 최신 버전으로, 많은 ...