반응형

구글 가족 그룹에 참여 시 실패하는 경우가 있다.

스토리지 용량 공유 때문에 공유하는데 실패함.

 

초대한 사람과 동일 국가에 있지 않아서 발생하는 문제..

 

국가 설정을 바꿔 보자.

국가 설정을 바꾸려면 결제 프로필을 다시 설정해야한다.

 

계정관리로 들어가서

 

결제 수단 관리로 들어간다.

 

설정으로 가서 '국가/지역'을 보면 다른 나라로 되어 있을 것이다.

명예 튀르키예인

연필 모양을 눌러 '새 프로필 만들기' 선택

 

대한민국을 선택

 

이제 결제 프로필이 만들어졌다.

 

하지만 사용할 결제 프로필이 선택 안되어있는 경우가 있다.

따라서 상단의 결제 프로필을 새로 만든 결제 프로필로 꼭 변경해준다.

 

그러면 이렇게 가족 그룹에 참여하기가

실패했다....

메인 결제 프로필이 튀르키예라서 아직 안되는듯하다.

 

다시 이전 튀르키예 프로필로 바꾸고

 

결제 프로필 삭제를 선택

 

사유 입력하고 계속 선택

 

확인 알림에서 최종적으로 삭제 선택

 

다시 결제 프로필 설정에 가보면

아까와 달리 결제 프로필 선택하는 UI가 사라지고 일반 설정으로 바뀌었다.

그리고 국가/지역도 대한민국으로 되었다.

 

그럼 다시 초대 메일로 가서 초대 수락을 하면

가족이 되었다.

 

나는 스토리지 용량 공유가 목적이었는데 

가족이 되어 용량이 늘어났다.

 

끝~

반응형
반응형

안드로이드 앱 개발 시 반드시 필요한게 keystore.jks 파일이다.

이 파일을 만드는 과정에서 비밀번호를 입력하는데 이를 잘 간수하지 않으면 나중에 생각이 안나서 난감해진다.

이렇게 비밀번호를 잊어버린 경우 찾는 방법이 있다.

구글에서도 공식 문서를 만들어 배포하기 때문에 위험하거나 어려운 방식은 아니다.

비밀번호에 사용했을 것 같은 단어 리스트를 만들고 이를 프로그램을 통해 조합하여 대입하는 방식으로 비밀번호를 찾는 것이다.

물론 사람이 계속 대입해서 찾을 수도 있지만 시간과 노력이 많이 들어가는 만큼 이 방법을 사용하면 좋을 것이다.

또한 이 방법은 연상되는 단어가 없을 경우 무용지물이니 악용하기는 힘들 것 같다.

 

테스트 keystore.jks 파일 생성

일단 테스트를 위해 "C:\KeystoreFile" 경로에 keystore.jks 파일을 만들겠다.

비밀번호는 "qwe!123~ASD"로 설정한다.

Android Studio를 통해 keystore.jks 파일을 생성한다. 비밀번호는 "qwe!123~ASD".
keystore.jks 파일이 생성되었다.

 

비밀번호를 잊어버렸다 가정하고 아무 비밀번호를 입력하면 에러가 발생한다.

"asdf"를 입하면 에러발생

 

잃어버린 비밀번호를 찾아보자

아래 과정은 다음 문서를 보고 따라한 것이다.

https://code.google.com/archive/p/android-keystore-password-recover/wikis/HowTo.wiki

 

Google Code Archive - Long-term storage for Google Code Project Hosting.

 

code.google.com

1. Java 7 설치

이 포스트를 보고 있다면 Java는 설치됐을 것이기 때문에 패스해도 되지만 혹시 모르니 Java 버전을 확인해보자.

Win + R 단축키로 실행창을 열고 "cmd" 입력

cmd 창에 다음을 입력

java -version

나는 Javs 1.8.0_302 버전이 설치되어 있다.

일단 java가 설치되어 있으니 넘어가자.

 

2. 다음 경로에서 프로그램 다운로드

https://drive.google.com/file/d/0B_Rw7kNjv3BATldrLXMwcVRud2c/edit?usp=sharing

 

AndroidKeystoreBrute_v1.05.jar

 

drive.google.com

AndroidKeystoreBrute_v1.05.jar 파일을 다운로드 폴더에 다운로드한다.

Download 폴더에 다운된 AndroidKeystoreBrute_v1.05.jar 파일

이 파일은 아래 생성할 wordlist.txt에 입력된 단어를 조합하여 사람을 대신해 비밀번호를 입력하고 비밀번호를 알아내는 프로그램이다.

 

3. wordlist.txt 파일 생성하기

편의를 위해 AndroidKeystoreBrute_v1.05.jar 파일과 같은 경로인 Download 폴더에 wordlist.txt 파일을 생성한다.

Download 폴더에서 우클릭 후 text 파일 생성
wordlist.txt로 이름 변경

wordlist.txt 파일을 열고 연상되는 비밀번호의 단어 조각을 입력한다.

테스트 keystore 파일의 비밀번호를 "qwe!123~ASD"로 설정했으니 다음과 같이 단어의 조각들을 입력하고 저장한다.

123
qwe
ASD
!
~

 

4. AndroidKeystoreBrute_v1.05.jar 파일을 실행하여 wordlist.txt에 입력된 문자를 기반으로 비밀번호 찾기 실행

아까처럼 Win + R 단축키로 cmd를 열고 다음을 입력한다.

(AndroidKeystoreBrute_v1.05.jar, keystore.jks, wordlist.txt 파일의 경로는 본인의 경로를 입력)

java -jar C:\Users\A\Downloads\AndroidKeystoreBrute_v1.05.jar -m 3 -k "C:\KeystoreFile\keystore.jks" -d "C:\Users\A\Downloads\wordlist.txt"

AndroidKeystoreBrute_v1.05.jar 프로그램이 wordlist.txt 파일에 입력한 단어를 조합하여 비밀번호를 찾아준다.

단어를 조합하여 8초만에 "qwe!123~ASD" 비밀번호를 찾았다.

 

5. 자 이제 비밀번호를 잊어버리지 않게 잘 간직하자!!!

 

 

반응형

'Dev Story' 카테고리의 다른 글

[macOS] Ventura에서 Monterey로 다운그레이드 하기  (0) 2023.03.04
[Graphics] Variance shadow maps  (0) 2023.01.31
[C++] pragma pack(1)  (1) 2022.06.09
반응형

맥에서 언리얼 엔진4 C++ 프로젝트를 빌드하려 보니 xcode14에서 다음과 같은 에러가 났다.

Cannot code sign because the target does not have an Info.plist file

 

이것저것 찾아보니 xcode13에서 빌드해야하는데 xcode13은 Ventura에서 실행이 안된다고 한다.

따라서 가장 먼저 MacOS를 Monterey로 다운 그레이드 해야한다.

 

부팅 디스크 만들기

일단 Monterey라는 특정 버전으로 설치해야하기 때문에 부팅디스크를 만들어 설치하기로 하고 부팅 디스크를 만들기 위해 AppStore에서 Monterey 다운로드 받았다.

App Store에서 Monterey를 받는다.

다운받은 Monterey는 Application 폴더에 있다.

Application 폴더에 받아진 Monterey.

당연하지만 이 상태에서 바로 설치는 불가능하다.

Ventura에서 바로 다운그레이드는 안된다.

 

부팅 디스크를 만들기 위해 다음 애플 공식 문서를 참고하였다.

https://support.apple.com/ko-kr/HT201372

 

부팅 가능한 macOS용 설치 프로그램 생성하기

외장 드라이브나 보조 볼륨을 시동 디스크로 사용하여 Mac 운영 체제를 설치할 수 있습니다.

support.apple.com

"사용 가능한 저장 공간이 14GB 이상 있고 Mac OS 확장으로 포맷된 USB 플래시 드라이브"가 필요하므로 USB 메모리를 꼽고 디스크 유틸리티를 실행하여 USB를 Mac OS 확장포맷으로 포맷해줬다.

USB 메모리 포맷

 

그 후 터미널을 열고 다음 명령어를 입력하니 설치가 부팅가능한 USB 메모리가 됐다.(왠일로 한 번에 성공)

MyVolume 부분을 자신의 USB 이름으로 변경하고 실행하면 된다.

만약 공백이 있으면 "로 감싸준다.

sudo /Applications/Install\ macOS\ Monterey.app/Contents/Resources/createinstallmedia --volume "/Volumes/My Volume"

터미널에서 부팅디스크 만들기. 100%가 될 때까지 기다리면 된다.

 

Ventura 삭제

지금 설치된 Ventura를 제거하기 위해 맥을 재시동하며 Shift+Option+Command+R을 누르면 다음과 같은 복구 모드가 나온다.

일단 네트워크를 선택
복구모드로 부팅중
macOS 유틸리티 실행 완료 (Ventura 일 때 찍은 사진이 없어서 Monterey로 다운그레이드하고 다시 찍은 사진)

 

디스크 유틸리티를 선택하고 지금 Ventura가 설치된 볼륨을 삭제하며 볼륨의 이름은 "Mac"으로 포맷은 "APFS"로 설정한다.

과감히 삭제.
Ventura 삭제 완료.

이제 삭제된 볼륨에 컨테이너를 추가하여 MacOS를 설치할 수 있게 만들어 준다.

볼륨을 선택하고 컨테이너를 추가한다.(볼륨 + 버튼을 눌렀던거 같다.)
볼륨이름이 사진에는 "무제"이지만 "Mac"으로 입력하고 컨테이너를 추가했다.

 

Monterey 설치

Monterey가 설치된 USB를 꼽은 상태로 맥을 재시동하며 Option을 누르고 있으면 부팅 디스크 선택모드가 나온다.

option 버튼을 꾸욱 누른다.
Monterey 부팅디스크가 꼽혀있으면 다음과 같이 설치 가능 옵션이 나온다.

Install macOS Monterey를 클릭하여 다음으로 넘어가면 복구모드가 나타나고 "macOS Monterey 설치"를 선택하여 설치한다.

"macOS Monterey 설치"를 선택
설치중... 난 아이맥 2017 이라서 30분정도 걸렸다.
설치 완료.

자 드디어 Monterey로 다운그레이드 했다.

맥은 업그레이드를 아무 생각없이하면 안된다는 교훈을 얻었다.

반드시 사용해야하는 프로그램이 있다면 확인하고 macOS를 업그레이드 하길 바란다.

Ventura가 더 편한거 같지도 않았다...

이제 Monterey에 맞는 어플을 설치해서 즐기면 된다~~

 

반응형

'Dev Story' 카테고리의 다른 글

[Android] keystore 비밀번호 찾기  (0) 2023.03.05
[Graphics] Variance shadow maps  (0) 2023.01.31
[C++] pragma pack(1)  (1) 2022.06.09
반응형

Variance shadow maps are a type of shadow mapping technique used in 3D graphics to accurately represent the shadows cast by 3D objects in a scene. They are designed to eliminate the artifact known as "shadow acne" (where shadows appear as dots or jagged lines on the surface of objects) and provide more consistent and smooth shadows.

The variance shadow map algorithm uses two maps to store information about the depth of the shadow: a depth map, which stores the depth of each pixel from the light source, and a variance map, which stores the variance of that depth value. The depth map is used to calculate the shadows and the variance map is used to determine the quality of the shadows.

Variance shadow maps provide more accurate shadows by using a statistical approach to calculate the shadow values. They are also faster than traditional shadow maps because they reduce the number of samples needed to get accurate shadow results.

Overall, variance shadow maps offer a better representation of shadows in 3D graphics compared to traditional shadow maps, making them an important tool for creating realistic and immersive 3D environments.


분산 그림자 맵은 장면에서 3D 객체가 드리우는 그림자를 정확하게 표현하기 위해 3D 그래픽에 사용되는 일종의 그림자 매핑 기술입니다. 그들은 "그림자 여드름"(그림자가 개체 표면에 점이나 들쭉날쭉한 선으로 나타나는 현상)으로 알려진 아티팩트를 제거하고 보다 일관되고 부드러운 그림자를 제공하도록 설계되었습니다.

분산 그림자 맵 알고리즘은 그림자의 깊이에 대한 정보를 저장하기 위해 두 개의 맵을 사용합니다. 광원에서 각 픽셀의 깊이를 저장하는 깊이 맵과 해당 깊이 값의 분산을 저장하는 분산 맵입니다. 깊이 맵은 그림자를 계산하는 데 사용되고 분산 맵은 그림자의 품질을 결정하는 데 사용됩니다.

분산 그림자 맵은 그림자 값을 계산하기 위해 통계적 접근 방식을 사용하여 보다 정확한 그림자를 제공합니다. 또한 정확한 그림자 결과를 얻는 데 필요한 샘플 수를 줄이기 때문에 기존 그림자 맵보다 빠릅니다.

전반적으로 분산 그림자 맵은 기존 그림자 맵에 비해 3D 그래픽에서 그림자를 더 잘 표현하므로 사실적이고 몰입감 있는 3D 환경을 만드는 데 중요한 도구입니다.

반응형
반응형

서버와 주고 받는 패킷을 정의하는 코드 상단에 #pragma pack(1)이란 전처리문을 발견했다.

이 전처리문은 이 후 정의되는 구조체의 크기를 1바이트 단위로 지정할 수 있도록 한다.

구조체의 크기는 프로그램이 실행되는 플랫폼에 따라 데이터가 처리될 때 가장 빨리 실행될 수 있는 데이터의 기본 단위로 맞춰진다. 32/64비트의 운영체제에서는 4바이트가 기준이다. 만약 구조체의 크기가 4의 배수가 안될 경우 패딩비트라는 것으로 채워서 어떻게든 4바이트를 만들어 처리 속도를 최적화 한다.

그런데 서버와 패킷을 주고 받는 경우 1바이트 단위가 아니면 전송 데이터가 늘어나고 패킷을 처리하는 데이터 단위가 달라질 수 있다. 

이를 막기 위해 운영체제와 상관없이 무조건 1바이트 단위로 구조체의 크기를 결정하도록 하는 전처리 지시문이 #pragma pack(1)이다.

pack(1)에서 숫자 1을 2로 바꾸면 2바이트 단위로 구조체의 크기를 결정하게 된다.

이렇게 구조체의 크기 단위를 임의로 설정하는 구간이 끝나면 #pragma pack()으로 다시 기본 상태로 돌려 놓아서 다른 구조체의 크기 최적화를 방해하지 않도록 한다.

 

// #pragma pack(1)를 지정하지 않은 경우
typedef struct A_ { char c; } A;
int main()
{
    A a;
    sizeof(a); // 크기가 4byte로 나온다.
}


// ------------------------------ //

// #pragma pack(1)를 지정하여 구조체의 기본 크기 단위를 1바이트로 저정한 경우
#pragma pack(1)

typedef struct A_ { char c; } A;
int main()
{
    A a;
    sizeof(a); // 크기가 1byte로 나온다.
}

// 구조체의 기본 크기 단위를 플랫폼 기본값으로 설정하여 구조체의 기본 크기를 4byte로 돌린다.
#pragma pack()

 

참고

https://hydroponicglass.tistory.com/229

 

[C, C++] pragma pack 개념과 사용이유

구조체의 크기 구조체의 크기는 구조체 변수 중 크기가 가장 큰 자료형을 기준으로 배수만큼 커진다. 즉 구조체의 크기는 변수의 크기에 패딩비트(구조체 크기를 가장 큰 자료형 기준으로 배수

hydroponicglass.tistory.com

https://docs.microsoft.com/ko-kr/cpp/preprocessor/pack?view=msvc-170 

 

팩 pragma

Microsoft C/C++의 pack pragma 지시문에 대해 자세히 알아보기

docs.microsoft.com

 

반응형
반응형

UE4.19.2에서 모델을 불러왔을 때 머티리얼이 적용안되는 경우가 있다.

머티리얼에 문제가 있는 것 같아 머티리얼을 열어보니 다음과 같이 에러가 나있었다.

"Metal Shared PCH generation failed"로 검색하니 그냥 엔진 업데이트하여 해결했다는 글이 있어서 4.26으로 업그레이드하니 해결되었다.

 

UE4.26에서 해결된 모습

 

참고

https://answers.unrealengine.com/questions/853042/problem-with-ue-419-on-mojave.html

반응형
반응형

어느날 갑자기 트랙패드가 충전이 안됐다.

별짓을 다해도 안돼서 배터리 교체해볼까? 라는 가벼운 마음으로 분해해보았다.

 

나는 상판부터 분해했다.

왜 그랬을까...

상판 벌리다 힘들어 찍은 사진...
저 끈적이는 것을 칼로 잘라야했다.
상판 분해 완료

그런데 뭔가 이상하다.

아무리 봐도 배터리가 쉽게 탈착되지 않는 구조였다.

이런 구조면 배터리 수리가 너무 힘들지 않나? 하곤 다시 분해 시작.

힘으로 분해. 배터리 터질까봐 엄청 긴장됐다.
배터리 케이블 단선. 모든 분해는 단선 전과 후로 나뉜다.

약간 포기 상태였는데 이 때부터 파.괴.본.능.

부순다.
부순다.
부순다.
부순다.
부순다.
부셨다.

이제 뒷판을 분해해 보았다.

분해해보니 느낌이 싸~하다.

배터리 커낵터가 바로 보이는 것 같다.

응?
원래 이런 모양새인가?

아~ 뒷판부터 분해하는 거구나~

 

 

Apple 2021년 Magic Trackpad 터치패드 MK2D3KH/A, 화이트 Apple 2021년 Magic Trackpad 터치패드, MMMP3KH/A, 블랙

(쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.)

반응형
반응형

CrxMouse는 크롬에서 마우스 제스처를 사용할 수 있는 확장 기능이다.

몇년간 아주 잘 사용했는데 제거했다.

이유는 다음과 같다.

 

1. 맥에서 크롬 사용시 우클릭을 두 번 해야한다.

CrxMouse가 우클륵으로 작동하기 때문에 충돌한다.

 

2. 권한 요청이 과도하다.

  • Read your browsing history
  • Read and change your bookmarks
  • Read and modify data you copy and paste

앞으로 좀 불편해지겠지만 습관을 바꾸면 괜찮을거다.

반응형

+ Recent posts