전체 글 412

Android Studio 업데이트 후 gradlew 실행시 에러

Android Studio를 업데이트 하였다(플라밍고) ./gradlew clean 사용하던 명령어가 갑자기 안된다. ERROR: JAVA_HOME is set to an invalid directory: /Applications/Android Studio.app/Contents/jre/Contents/Home vi 편집기로 .bash_profile안에 있는 JAVA_HOME경로를 살펴보자. 기존 JAVA_HOME경로에는 : jbr대신 jre로 되어있었음. 터미널 : cd ~/ 터미널 : vi .bash_profile Finder에서 보니 jre는 없고 jbr이 있어서 jbr로 변경해주었다. 변경 다해주고 source ~/.bash_profile로 적용시켜준다. echo $JAVA_HOME으로 잘 변경 ..

개발설정 2023.04.20

[Git] 다른 브랜치로 작업을 잘못 푸시했을 때

다른 브랜치로 작업을 잘못 푸시했을 때 수정해야할 브랜치 ABranch 잘못 올린 브랜치 BBranch BBranch로 ABranch 에 올릴 작업을 잘못 커밋하고 푸시를 하였다. 해결 방법: 1. ABranch에서 BBranch의 작업을 체리픽(Cherry Pick) 해온다.(커밋까지 같이 되도록) - 충돌이 나면 충돌 해결 후 커밋 후 푸시 2. BBranch에서는 Reset to this commit을 한다. hard로 reset한다.(mixed?)하게되면 커밋이 남음 hard는 다 날림. 그 다음 푸시된걸 다시 바로 잡아야 하니깐 push to origin으로 하드푸시를 해준다.(?)

Git 2023.04.20

[Android] 푸시 원하는 화면이동 parentActivityName

안드로이드 푸시 & 스킴처리 & 앱 내부 알림 목록에서 이동 시 화면이동 처리에 관해. 원하는 동작 : 푸시 노티 클릭 시 메인화면 -> 원하는 화면 띄워주려고 함. 앱 내부 알림 클릭 시 메인화면 -> 원하는 화면 띄워주려고 함. (보던 화면은 다 날아감) 1. 푸시(FCM)에서 Intent를 이용해 매니페스트에 parentActivityName가 지정되어있으면 notification 클릭 시 해당 'parentActivityName'가 부모가 되고 호출한 Intent가 뜬다. 나의 소스를 보니 아래 소스처럼 PendingIntent를 만들고 있었다. addNextIntentWithParentStack 이 부분이 푸시 클릭 시 parentActivityName를 앞에 깔고 호출된다.(다른 화면 다 종료..

안드로이드 2023.04.19

챗Gpt OpenAi (ChatGPT)에 알아보자.

OpenAI는 샘 알트만(Sam Altman)이 2015년 12월 11일 설립한 인류에게 이익을 주는 것을 목표로 하는 인공지능 회사.인공지능의 정보를 오픈소스화 하여 더 안전한 인공지능의 발전을 추구하며 GPT-3등 거대 언어 모델 기반 서비스를 제공GPT 시리즈GPT-1인간과 간단한 대화 가능GPT-2 연구용으로 활용할 가치는 있으나 매개변수 15억개로 너무 적어 답변의 정확도가 매우 떨어짐(상용성 기대 어렵다.) 빅스비나 시리 수준 GPT-3 2020년 6월 출시, 11월에는 GPT-3.5가 출시 매개변수 1750억개 자기회귀 언어 모델 GPT-3의 오픈베타 공개는 OpenAI가 더이상 늘어나는 GPT개발비를 감당하지 못하고 마이크로소프트와 협약을 맺어 대중적으로 공개 원격 API호출등의 유료 기능..

ChatGPT 2023.04.18

자바 함수 및 exception 발생 여부

exception 이 발생할 수도 있을 것 같아서 try/catch를 띄워주면 좋을 것 같아요. 그리고, 관련 메서드들이, java 코드라서, 반환값이 NotNull을 보장할 수 없기 때문에, null 예외처리도 해주면 좋을 것 같아요함수를 만들었는데 그 함수가 exception이 발생할 수 있는지 확인하고, 사용하는 함수가 안에 자바로 되어있을 경우 null예외처리도 생각하자.!

코딩/코드리뷰 2023.04.11

웹뷰에서 base64 이미지 받을때 에러 (ScopeStorage Primary directory)

ScopeStorage Primary directory Download not allowed for media 웹뷰에서 받은 이미지-> base64 String값을 이미지 저장하려고 한다. 해결방법 base64 String 값을 비트맵으로 만든 뒤에 -> jpg or png로 변환하여 저장하는 방법. (올바른 방법이 아닐 수도 있음) Android는 Q버전 이상부터 ScopeStorage가 적용되었다. 나는 Q버전 이상과 Q버전 미만으로 나누어 파일 저장을 하였습니다. 이전글에 저장공간에 대해 적어둔 것이 있습니다. 저장공간 정의 저장 폴더 Q버전 이상 : [외부-공용] Download/앱이름 폴더 Q버전 미만 : [외부-공용] Download/앱이름 폴더 에러 발생 Primary directory Do..

[Android] 입출력 스트림(InputStream, OutputStream)

Stream이란 외부에서 데이터를 읽거나 외부로 데이터를 출력하는 작업이 자주 일어난다. 이때 데이터가 이동하는 통로를 Stream이라고 한다. InputStream, OutputStream 추상 클래스이며 추상 메서드를 오버라이딩해서 역할을 수행 (예: 파일, 네트워크, 메모리 입출력)InputStream외부에서 데이터를 읽는 역할 바이트 기반 입력 스트림 최상위 추상 클래스 파일 데이터를 읽거나 네트워크 소켓을 통해 데이터를 읽거나 키보드에서 입력한 데이터를 읽을 때 사용.public abstract int read() throws IOException;입력 스트림에서 1 바이트씩 읽고 읽은 바이트를 반환한다. 데이터를 모두 읽었다면 -1을 반환public int read(byte buffer[]) ..

카테고리 없음 2023.04.10

코틀린 원시타입(Kotlin Primitive Type)

코틀린 원시타입원시 타입(Primitive type) : 값이 들어감참조 타입(Reference type) : 객체 위치 값정수의 Collection을 정의하고 싶다자바 : Collection // 원시 타입 값을 감쌀 래퍼 타입을 사용해서 참조 타입을 만듬코틀린 Collection // 원시 타입과 래퍼 타입 구분 없음원시 타입과 참조 타입이 같다면 코틀린은 항상 객체로 표현하나? 놉 효율적인 방식으로 표현됨. 코틀린 Int → 자바 int로 컴파일 자바 원시 타입은 null이 안됨. 따라서 코틀린 int? 경우 자바 Integer로 됨. int aa = null x Integer aa = null o 제네릭 클래스에서 사용하는 경우에는 자바 Integer로 됨. JVM은 제네릭의 타입 인자로 원시 타..

웹뷰 shouldOverrideUrlLoading 호출되지 않을 때.

질문 : 웹뷰 처음에 web url 호출할 때 shouldOverrideUrlLoading 이거 호출된 후에 그 다음엔 다음 페이지 같은거 이동될 때 호출 안되는데요 페이지 이동 되면 원래 호출 되야 하지 않나요!? 지인 답변 :웹 구현방식에 따라 다름, 페이지 링크로 새로 이동되면 호출될거고, 내부적으로 라우팅방식 이동이면 호출안될수 있음정확한 답은 아닙니다! 프론트에 물어보니 href로 이동? 그냥 url이 변경 된다고 함 그래서 좀 더 검색 해보다가 doUpdateVisitedHistory 를 발견. 이 방법으로는 History를 확인 할 수 있었다.@Override public void doUpdateVisitedHistory(WebView view, String url, boolean isRel..

안드로이드 2023.04.04

코틀린 타입 종류 Null가능성

타입 시스템코틀린의 타입 시스템은 코드의 가독성을 향상시키는데 도움이되는 몇가지 특성을 새로 제공널 가능성 (nullability)NullPointerException오류를 피할 수 있게 돕기 위한 코틀린 타입 시스템의 특성null에 대한 접근 방법을 실행시점 → 컴파일 시점널이 될 수 있는 타입 (nullable type)타입 시스템이 널이 될수 있는 타입을 명시적으로 지원타입 이름 뒤에 물음표(?)를 명시fun strLenSafe(s: String?) = ... null과 비교하고 나면 컴파일러는 그 사실을 기억하고, 해당 값을 널이 될 수 없는 타입의 값처럼 사용할 수 있다.fun strLenSafe(s: String?) : Int = if(s != null) s.length else 0 자바에서 ..