본문 바로가기

분류 전체보기154

express의 middleware란? 개요 미들웨어 함수는 요청 오브젝트(req), 응답 오브젝트 (res), 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수에 대한 엑세스 권한을 갖는 함수 입니다. 그 다음의 미들웨어 함수는 일반적으로 next라는 이름의 변수로 표시됩니다. 미들웨어 함수는 다음과 같은 테스크를 수행할 수 있습니다. 모든 코드를 실행 요청 및 응답 오브젝트에 대한 변경을 실행 요청 - 응답 주기를 종료 스택 내의 그 다음 미들웨어를 호출 현재의 미들웨어 함수가 요청-응답 주기를 종료하지 않는 경우에는 next()를 호출하여 그 다음 미들웨어 함수에 제어를 전달해야 합니다. 그렇지 않으면 요청은 정지된 채로 방치됩니다. 예시) Hello World 애플리케이션에 대한 2개의 미들웨어 함수를 사용한 예제 개발.. 2019. 3. 12.
안드로이드 - volatile 이란 무엇이고, 왜 필요할까? volatile 키워드 volatile 키워드는 Java변수를 Main Memory에 저장하겠다는 것을 명시하는 것입니다. 즉 매번 변수의 값을 Read할 때마다 CPU cache에 저장된 값이 아닌 Main Memory에서 읽는 것입니다. 또한 변수의 값을 Write할 때마다 Main Memory에 까지 작성하는 것입니다. 왜 필요할까? volatile 변수를 사용하고 있지 않은 MultiThread 어플리케이션에서는 Task를 수행하는 동안 성능 향상을 위해 Main Memory에서 읽은 변수 값을 CPU Cache에 저장 하게 됩니다. 만약 MultiThread환경에서 Thread가 변수 값을 가져올때 각각의 CPU Cache에 저장된 값이 다르기 때문에 변수 값 불일치 문제가 생길 수 있습니다. .. 2019. 2. 26.
프레그먼트 - 프레그먼트 생성시 데이터 전달 프레그먼트의 데이터 전달 프레그먼트 생성시에 데이터를 Bundle로 설정해서 key-value값의 데이터를 넘겨줄수 있습니다. 이를 통해 프레그먼트간 전환시나 맨 처음 생성시에 필요한 기본 값들을 setting할 수 있게 됩니다. 프레그먼트생성시 onCreate에 데이터 전달 new Instance 메소드를 통해 필요한 파라미터로 데이터를 전달합니다. 이후 newInstance안에서 Fragment를 생성하고 Bundle를 통해 데이터를 넘겨줍니다. 이 때 Fragment의 setArgument를 사용합니다. 이는 추후에 Fragment의 onCreate에서 getArgument() 메소드를 통해 호출 할 수 있습니다. 프레그먼트 액티비티 생성후 첫 프레그먼트 전환시 사용 예 위의 Fragment의 ne.. 2019. 1. 29.
안드로이드 - 핸들러와 Looper의 동작과정 Handler와 Looper의 필요성 Handler와 Looper는 안드로이드 내에서 Thread 백그라운드 처리에 사용됩니다. 위의 그림은 병렬 처리로 돌아가고 있는 Main과 Sub 쓰레드에서 textView의 setText 메서드 사용시 어떤 것을 처리할지에 대한 이미지 인데요, 이런 동기화문제를 처리하기 위해 안드로이드는 메인 스레이드에서만 UI 작업이 가능하도록 제한하였습니다. Handler와 Looper를 이용해 Sub 쓰레드에서 Main 쓰레드로 UI 처리작업을 전달하거나, Main 쓰레드 자체적으로 처리하던지 해야 합니다. Handler와 Looper의 동작과정 Handler는 단어 그대로 무언가를 처리하는 역활을 합니다. Handler는 Message와 Runnable 객체를 처리합니다... 2019. 1. 28.
안드로이드 - 키스토어 개념 / 사용법 안드로이드에서 키스토어 발급받는 방식 2가지 키 스토어를 발급받는 방법에는 2가지가 있습니다. Android Studio에서 Key Store 생성 및 앱에 서명해서 APK 추출 구글 플레이 콘솔의 기능인 구글 플레이 앱 서명 기능 ex) 앱 서명 창 방법 1 : Android Studio에서 Key Store 생성 및 앱에 서명해서 APK 추출 기존의 앱 서명 개발자가 자신이 만든 키로 안드로이드 앱을 서명하고 구글 플레이에 업로드 합니다. 이 키를 잃어버리게 되면 아무리 내 구글계정으로 올린 앱이라고 하더라고 두번다시 이 앱을 업데이트 할 수 없습니다. 같은 키로 apk 서명을 해야 하는데 할 수가 없기 때문입니다. 방법 2 : 구글 플레이 콘솔의 기능인 구글 플레이 앱 서명 기능 새로운 방식 ( 구.. 2019. 1. 9.
안드로이드 - FragmentPagerAdapter, FragmentStatePagerAdapter 를 사용하여 ViewPager사용하기 Fragment는 Adnroid 3.0 (허니콤) 부터 추가된 기능입니다. Fragment의 개념적인 설명과 실제 사용시에 대한 설명은 아래 링크를 참조하시면 좋습니다. 개념적 설명 : http://androidhuman.tistory.com/469 실 사용 설명 : http://android-developers.blogspot.com/2011/02/android-30-fragments-api.html FragmentPagerAdapter 제한된(고정된) 개수의 항목(Fragment)들에 적합합니다. 한번 생성되면 Fragment의 인스턴스를 FragmentManager에서 정대로 제거하지 않기 때문 (Activity가 종료되지 않는 한) 현재 보이지 않는 Fragment에서 View들을 detach합니.. 2019. 1. 9.
좌표계 (wgs84, utm-k, utm) UTM 좌표계 (Universal Transverse Mercator Coordinate System) 전 지구상의 점들의 위치를 통일된 체계로 나타내기 위한 격자 좌표체계입니다. 1947년에 개발되었습니다. 지리 좌표계가 극지방으로 갈수록 직사각형이 크게 감소하는 반면 UTM 좌표계는 직사각형 모양을 유지하므로 거리, 면적, 방향등을 나타내는데 매우 편리하다는 장점이 있습니다. WGS84, GPS용 좌표계로 많이 사용됩니다. 2) UTM-K 좌표계 UTM과 같은 방법으로 투영계산을 거치지만, 적도에 기준원점을 두어 투영을 거치다 보니 한국은 많은 왜곡이 발생하게 됩니다. 이에 대한 대책으로 만들어진 것이 UTM-K좌표계이며, UTM좌표계에서 원점 및 가산수치만 다르게 적용된 경우입니다. 기준원점을 경도.. 2018. 12. 15.
안드로이드 - 앨범 / 카메라로 사진 이미지 가져오기 (+ Crop 기능) 안드로이드에서 프로필 사진을 바꾸거나, 맛집등록어플에서 음식사진을 올릴 때 보통 카메라나 앨범에서 이미지를 가져와서 올리는데요, 이를 코드상에서 어떻게 구현할수 있을지 한번 정리해봤습니다.! 기본작업 1. 상수를 선언한다. 기본적으로 4가지 상수를 선언합니다. 2. 갤러리, 및 사진촬영 버튼을 눌렀을 때 해당 동작을 수행하는 버튼 이벤트를 선언합니다. getImageFromAlbum getImageFromCamera 3 getImageFromAlbum : 앨범에서 사진 이미지 가져오기 생성자 변수로 Intent.ACTION_PICK을 넣어 Intent 객체를 생성합니다. MediaStore.Image.Media.CONTENT_TYPE 를 타입으로 설정합니다. 이후 인텐트를 수행합니다. 4. getImag.. 2018. 12. 14.
안드로이드 - compilesdkversion minsdkversion targetsdkversion buildtoolsversion 보통 이런 문제가 발생하게되면 compilesdkversion, minsdkversion 등을 확인해보게 됩니다. 그렇지만 잘 알고 쓴적은 없어서 이번기회에 한번 정리해보겠습니다. compileSdkVersion compileSdkVersion으로 gradle에 어떤 안드로이드 SDK 버전으로 앱을 컴파일 할지 알려줍니다. 컴파일 시에만 적용되므로 runtime동안에는 영향을 미치지 않습니다. 항상 최신 버전의 SDK로 지정하는 것이 좋습니다. 해당 버전에 포함된 API를 사용할 수 있다는 것을 의미합니다.import문으로참조되는 클래스나 메소드를 찾을 때 어떤 버전의 SDK에서 찾을 것인가를 결정해줍니다. 예를 들어 아래와 같은 경우를 보겠습니다. 맨 처음 첨부한 스크린샷에서 빨간줄은 현재 compil.. 2018. 12. 12.
Redux - redux-thunk란? [리덕스 미들웨어] redux-thunk 란? 리덕스를 사용하는 어플리케이션에서 비동기 작업을 사용할때 가장 기본적인 방법으로는 redux-thunk를 사용하는 것입니다. 해당 미들웨어는 리덕스를 개발한 Dan Abramov가 만든 것으로 redux 공식 메뉴얼에서도 해당 미들웨어를 이용하여 비동기 작업을 다룹니다. 해당 방법은 매우 직관적이고 간단하다는 장점이 있습니다. 그렇다면 thunk 란? thunk란 특정 작업을 나중에 하도록 미루기 위해서 함수형태로 감싼 것을 칭합니다. 예를들어서 1 + 1을 한다고 가정했을때 아래와 같이 코드를 작성하게 됩니다. 다음과 같이하면 어떨까요? 이렇게 하면 1 + 2 연산이 코드가 실행될 때 바로 이뤄지지 않고 나중에 foo() 가 호출되어야만 이뤄집니다. redux-thunk는 무.. 2018. 11. 26.