티스토리 뷰
삽질 모음
별도의 포스팅을 하기엔 애매한 간단한 삽질들을 기록
#Android #Java
Java 별도 포스팅 - '콜백 for 비동기 처리'
Google Firebase의 Firestore DB에서 값을 읽어와 외부로 넘겨 사용하려던 중,
Firestore의 get문장이 비동기로 이뤄지기때문에(나중에), 외부로 값을 전달하는 코드가 곧바로 실행되어 NULL상태로 or 해당변수의 자동초기화값 상태로 넘어가버림.
이에 따라, interface를 구현하여 Callback으로 값을 받아옴. 자세한 내용은 별도 참조.
생각해보면, Firebase에서 이미지를 받아올때도 나머지view가 먼저 보여지고 이미지는 후에 추가로 표시되었었다.
#Security #Reversing
Reversing 별도 포스팅 - 'DLL Injection w/ ~'
리버싱 DLL Injection 실습과정에서 안되서 코드에서만 문제를 찾다가,
VirtualBox Window7 가상환경을 64bit에서 32bit로 바꾸니 해결...
18.12.05 #Android #Java
안드로이드 어플내 게시판의 추천순-조회순-댓글순 등 정렬 기능 구현과정에서
정렬 Spinner를 선택하면 게시글 목록이 정상적으로 refresh되는데,
글 작성, 글 보기 state에서 뒤로가기를 통한 게시글 목록 진입시
spinner item이 selected된 상태라 refresh로직이 호출되어
(여기까지 호출되는건 상관없음)
refresh로직중 view에 대해 NullPointerException 발생.
-> spinner item을 선택할땐 view값이 전달되나, 뒤로가기를 통해 진입시 view가 NULL이였다.
if문으로 view!=NULL이면 정상적으로 refresh로직에 view또는 view.getRootView()를 전달하고
NULL일경우엔 view=getView()를 통해 view를 수동으로 구해서 전달해서 해결.
19.01.31 #Algorithm #Java
java.lang.ConcurrentModificationException
자바 프로그래머가 자주 실수 하는 10가지 - 1
구글링 결과 List에서 주로 발생하는 이슈인줄 알고 다른 원인을 계속 찾았으나, 결국 이 문제 맞았음.
내 코드의 HashMap이 같은 원인으로 문제가 발생하고 있었고, 해결책을 따라 map.remove(key)로 직접 지우는 대신 iterator.remove로 값을 삭제하니 해결되었다.
19.01.31 #Algorithm #Java
비슷한 기능이라도, @.length / @.size() 등 메소드가 다 다르다.
정확히 기억하고, 또한 가급적 IDE를 이용해 정확히 코딩하자.
19.01.31 #Algorithm #Java
java.lang.IndexOutOfBoundsException
배열의 size가 10인데 arr[10]처럼 index접근이 잘못된것이다.
중간과정에서 index를 출력시켜보며 디버깅해보자.
19.03.25 #Algorithm #Java
Arrays.asList(arr).contains(value) -> return: Boolean
배열은 기본contains 메소드가 없어, 배열이 특정값을 포함하는지 확인하기 위해 위와같은 방식을 자주 사용한다. (물론 다른 방법들도 존재하나, 이 방법이 간단해 자주 사용중)
이때 주의할점으로, String배열과 값을 비교하면 별 문제없으나, int배열과 값을 비교한다면
Arrays.asList는 제네릭스 타입을 리턴한다. 따라서 Integer타입으로 반환되어 비교해 잘못된 연산결과가 나올것이다. (심지어 false값이 리턴되며 컴파일에러도 발생하지않아 더욱 오류를 찾기 힘들어진다)
따라서, arr을 int[]형이아닌 Integer[]형으로 사용해야 제대로 동작한다.
Arrays.asList().contains() giving wrong result
18.07.11 #API
프로젝트 재활용으로 이미 Google Map API key 할당된 package name으로 작업하다, 새로운 API key가 당연히 계속 먹히지않아 map이 흰 화면으로 뜨는 현상 발생.
임시로 새로운 구글맵 프로젝트 생성후 API key 발급받아, 그 패키지명과 동일하게 진행중이던 프로젝트 패키지명 변경해 조치.
18.07.11 #AndroidStudio #IntelliJ
인텔리제이에서도 마찬가지인데, 분명히 코드상 문제가 없어보이는데도 내가 생각한대로 코드가 돌아가지 않는 경우가 '적지않게' 발생한다.
최근엔 인텔리제이에서 온갖짓을 다 해보아도 Lombok이 자동으로 classpath에 import되지않아, 결국 인텔리를 재설치하니 해결되기도 하였다.
Spring 프로젝트를 자꾸 재시작하다보면 뭔지모를이유(?)로 꼬이는 경우도 많아, 이땐 rebuild부터, cache를 지우고 restart하는 메뉴, '.idea'를 지우고 gradle을 다시 잡는 시도 등을 하다가 결국 안되면 로컬의 github repo를 날리고 새로 clone받기도 한다.
이런 단순무식한 방법으로 원인불명의 에러가 해결되는 경우가 적지않다. (물론 근본적인 에러해결방법은 에러코드를 이해하고 구글링하거나 내 프로젝트에서 원인을 찾아내, 이를 해결하는 것이다.)
블로그 이전을 하며, 예전의 이 삽질을 보니 생각나서 추가 포스팅,, Android Studio에선 비슷한 상황에서 다음과 같은 옵션들을 시도 했었었다.
- Android Studio에서 잘 되던게 안되면 시도해볼만한것들
- Emulator나 단말기의 apk 삭제후 Re-build&Run
- Build Menu - Clean Project
- File Menu - Invalidate Caches / Restart
- Tools Menu - AVD Manager - Cold Boot(Emul.)
'Etc' 카테고리의 다른 글
노션(Notion)을 활용한 개발자 이력서 관리 (0) | 2019.12.03 |
---|---|
Sync/Async, Blocking/Non-Blocking + Node.js / Spring WebFlux (0) | 2019.11.12 |
API vs Library vs Framework 차이 (0) | 2019.09.26 |
IntelliJ(인텔리제이) 한글 깨지는 이슈 (0) | 2019.09.19 |
Window SMTP Server 메일전송 (0) | 2019.09.11 |
- Total
- Today
- Yesterday
- git
- 개발자
- C
- sort
- Vo
- 회고
- Stack
- Android Studio
- dfs
- Android
- queue
- OneToMany
- Algorithm
- brute-force
- webhacking.kr
- graph
- mysql
- socket
- reversing
- 웹해킹
- Data Structure
- 리버싱
- 프로그래머스
- 우아한 테크코스
- FRAGMENT
- Java
- bfs
- 해외여행
- JPA
- javascript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |