분류 전체보기 85

HashMap vs HashTable vs ConcurrentHashMap

기본적으로 모두 형태의 자료구조이며, Key값의 중복을 허용하지 않고, Value의 중복을 허용한다. 1. HashMapJava 1.2부터 생겼으며 기존 HashTable의 Synchronized를 풀어 쓴 맵이다.동기화가 되어있지 않아 보통 단일 쓰레드에 사용되며, Java 1.8부터는 알고리즘을 개선하여 속도가 더 빨라졌다. 2. HashTableJava 1.0 ~ Java 1.1에 사용됐다.Synchronized가 되어있다. 3. SynchronizedMapMap을 Wrapping하여 HashTable처럼 동기화 시키는 방법이다.HashTable에 비해 속도가 빠르며, 보통 멀티 쓰레드 환경에서 사용한다. 4. ConcurrentHashMapJava 1.5 Concurrent 패키지가 생기면서 만들..

JAVA 2017.12.31

MVC vs MVP vs MVVM 용어 정리

MVC (Model View Controller) Model데이터를 의미한다.데이터를 관리/수정/수집 등을 하게 되는 부분이다. ViewUI를 그리는 곳이다. 화장자 .xml이나 안드로이드의 layout등이 이곳에 속한다. ControllerView와 Model을 연결해주는 역할이다.안드로이드에서는 Activity, Fragment등이 이 역할을 수행하며, V와 C의 역할 구분이 모호하여 안드로이드에서는 사용이 쉽지 않다.최근에는 xml을 강화하여 MVC를 사용하기 쉽게 만들어지고 있다. MVP (Model View Presenter) ModelMVC와 마찬가지로 데이터를 의미한다. ViewPresenter에서 전달받은 View의 이벤트를 처리한다. PresenterView에서 전달된 이벤트에 대한 처리..

안드로이드 2017.12.31

안드로이드 네이버 지도 사용하기 (Fragment)

네이버 지도 API를 사용 해보면 알겠지만.. 엄청나게 불편하다. Fragment에서 사용하는 방법을 위해 엄청난 노가다 끝에 만드는데 성공했다. 1. 라이브러리 추가하기https://github.com/navermaps/maps.android가장 최신 버전의 라이브러리를 app단 build.gradle에 추가한다. (현재 최신)dependencies { compile 'com.naver.maps.open:naver-map-api:2.1.2@aar'} 2. 필요한 클래스 파일을 만든다. - https://github.com/navermaps/maps.android/blob/master/app/src/main/java/com/nhn/android/mapviewer/NMapFragment.java - htt..

안드로이드 2017.12.26

안드로이드 리사이클러 뷰 그리드 레이아웃 아이템 세로 동적 비율

이미지를 가져오다 보니 모든 디스플레이에서 균등한 비율로 작업해야 할 일이 생겨버렸다. 단순 글라이드 라이브러리를 사용하여 wrap_content로 할 경우 재사용 뷰의 특성 때문에 스크롤 시 이미지의 사이즈를 0으로 두기에 다시 불러오면서 스크롤의 부자연스러움이 생긴다. 해결 방법으로 동적 사이즈를 자바 코드로 하여금 만들었다. [ 해결방법 ] 1. 아이템의 레이아웃은 부모 레이아웃을 제외하고는 모두 match_parent로 바꾼다. (필요 시 가로만, 혹은 세로만 바꾼다.) 2. 리사이클러뷰의 adapter로 들어가 onBindViewHolder에 다음과 같은 라인을 작성한다. DisplayMetrics displayMetrics = new DisplayMetrics();((Activity) hold..

안드로이드 2017.12.23

다음 지도 api 갤럭시 s8 .so 파일 찾을 수 없는 오류 해결 방법

다른 핸드폰 잘 되는데 사용하고 있는 갤8+에서 so 파일 못찾는다고 터진다. E/net.daum.mf.map.n.api.NativeMapLibraryLoader: Can`t load DaumMapEngineApi.so file 구글링을 통해 해볼 수 있는 방법을 다 해보다가 겨우 발견.. 엄청난 삽질.... 우선.. 아마 이 글을 보기 전 jniLibs 폴더와 so 파일을 main에 잘 넣었는지 확인하자. https://m.blog.naver.com/PostView.nhn?blogId=mingjn&logNo=221014259167&proxyReferer=&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F 진짜 이 분은 구원자다. 덕분에 해결.. [ 해결 방법 ] app..

안드로이드 2017.12.21

node.js에서 mp3 메타 데이터 한글 깨짐 현상 해결 방법.

윈도우에서 리눅스로 mp3 파일을 전송할 경우 tag정보가 깨지는 일이 있다. 리눅스 문제인지, 한글 인코딩의 문제인지 겁나 삽질 하다가 겨우 해결방법을 찾아냈다. 자세한 내용은 http://stevek.tistory.com/1 이 사이트를 참고하면 된다.[해결 방법] 1. pip를 인스톨한다.sudo apt-get install python-pip 2. pip를 통해 mp3 파일을 변환시킨다.mid3iconv -e cp949 [파일이름]ex) mid3iconv -e cp949 *.mp3 mid3iconv -e cp949 다비치-01-거북이 3. 해결 완료... [music metadata 읽어오기]메타 데이터를 가져오는 방법은 상당히 간단하다. https://blog.l0gic.me/node-js-no..

Node.js 2017.12.04

Intent와 Bundle의 차이

Intent와 Bundle에 대해서 면접을 보면서 질문 받은 적이 있다. 그 당시에는 잘 몰랐었기에.. 공부를 해봤고, 알고보니 Intent를 한 번이라도 들어가봤다면, 까봤다면 알 수 있는 기초 지식이었다. Intent는 전달을 하는 이동 수단이고, Bundle은 저장을 하는 저장 공간이다. 흔히 많이 예로 드는 택배로 따지면, Intent는 택배를 전달하는 택배기사, 택배차가 되고, Bundle은 택배가 된다. 그래서 값을 전송할 때 Intent에 담는 것 보다는 Bundle에 담아 Intent에 저장하여 전송하는 편이 더 좋다.

안드로이드 2017.11.14

windows bash 에서 npm을 써보자.

윈도우에 ubuntu 패치를 하고 bash로 node.js를 설치한 뒤 놀려고 했는데... 아 또 오류 터진다. npm을 찾지 못한다. not foundram Files/nodejs/npm nodejs는 문제 없이 설치가 되나 npm은 오류가 터지길래 해결책을 찾아 다녔다. http://blog.hazard.kr/archives/tag/%EB%A6%AC%EB%88%85%EC%8A%A4 아주 감사하게 이 방법으로 해결했다. 처음엔 reg를 등록 하려 했는데 이마저도 오류가 터져서 vi ~/ .bashrc 를 커맨드에 입력한 뒤 function path_remove { # Delete path by parts so we can never accidentally remove sub paths PATH=${PA..

Linux 2017.11.10

그래서 코틀린은 왜 쓰는데?

Why use Kotlin? 이번 구글 I/O에서 안드로이드 스튜디오 3.0부터 코틀린을 공식적으로 안드로이드 언어로 지정했다.자바도 잘 못쓰는데 Kotlin을 써야할까? 아쉽게도... 공식적으로 지정된 만큼 써.야.한.다. 그래도 장점, 단점, 써야하는 이유라도 알아두자. 코틀린 공식 홈페이지에는 다음과 같은 4개의 이유가 나와있다.https://kotlinlang.org/ 1. Concise (간결성)2. Safe (안정성)3. Interoperable (상호운용가능성)4. Tool-friendly (도구 친화성) 하나씩 자세히 (자세히 모르지만..) 알아보자.1. Concise (간결성)Kotlin을 쓰면 기존 Java로 짜왔던 소스에 비해서 간결해진다.실제로 약 12370라인과 5490 메서드로 ..

안드로이드 2017.11.08