본문 바로가기

전체 글124

[자바스크립트] 함수의 파라미터 사용시 필수 주의사항! 만약에 파라미터 3개를 가지는 함수가 존재한다고 가정해보자. function pay_check(member_num, mediaName, mediaCode) { // 사용자별로 결제 매체정보를 확인 } 그런데, html 코드 내에서는 파라미터 2개를 가지는 함수를 호출한다. 과연 결과는 어떻게 될까? 일반적으로 많이 사용하는 Java 언어에서는 함수를 정의할 때, 파라미터의 갯수에 따라 함수가 다르게 호출된다. 그러나 JavaScript에서는 예외이다. 자바스크립트에서는 함수를 정의할 때는 매개변수의 타입을 따로 명시하지 않는다. 함수를 호출할 때에도 인수(argument)로 전달된 값에 대해 어떠한 타입 검사도 하지 않는다. 함수를 호출할 때 함수의 정의보다 적은 수의 인수가 전달되더라도, 다른 언어와는.. 2021. 7. 2.
To use Coroutine features, you must add `ktx` artifact from Room as a dependency To use Coroutine features, you must add `ktx` artifact from Room as a dependency 안드로이드 Room을 이용해서 ViewModel, DataBinding을 학습하던 중, Build 과정에서 위와 같은 에러를 확인했습니다. 기존의 build.gradle에는 implementation "androidx.room:room-runtime:$room_version" 만 추가하여 사용하였습니다. error 문장을 확인해보면 you must add 'ktx' artifact from Room as a dependency. 라는 말이 있습니다. 직역하자면, Room과 연관된 ktx를 추가해야 한다고 하는군요. Room | Android 개발자 | Andro.. 2021. 6. 25.
Glide를 활용한 WebView 이미지 로드 속도 높이기 최근에 회사 프로젝트를 진행하면서 한 가지 이슈에 봉착했었습니다. * 이슈 : WebView 내에서 여러 이미지를 Load 할 때 지연되거나 일부 절반만 불러오는 현상. 웹 브라우저에서는 동일한 URL을 호출했을 때, 빠른 속도로 이미지가 Load 되고 형광펜 후처리까지 정상적이었습니다. 해당 증상은 Android/iOS 모두 동일했습니다. 모바일에서 제공하는 WebView의 성능이 여러 이미지를 한꺼번에 Load할 정도로 우수하지 않다는 사실을 인지했습니다. 구글링하던 중, Glide 라이브러리를 이용해서 WebView에 이미지 로딩성능을 높이는 방법을 확인했습니다. 1. Glide 라이브러리 추가 implementation ‘com.github.bumptech.glide:glide:4.11.0’ an.. 2021. 6. 15.
LiveData와 MutableLiveData 차이점 ▷ LiveData : LiveData는 Data 변경을 관찰할 수 있는 Data Holder 클래스입니다. 일반적인 Observable과는 달리, 안드로이드 생명주기(LifeCycle)를 알고 있습니다. Activity, Fragment, Service와 같은 안드로이드 Component LifeCycle를 인식하고 그에 따라 LiveData는 활성상태(Active)일때만 데이터를 Update합니다. * 활성상태 : STARTED / RESUMED 를 의미 - LiveData 특징 ● Observer 패턴에 따라 데이터 변경이 일어날 때마다 Observer 객체에 알려줍니다. 매번 UI를 업데이트 하는 코드 작성할 필요없이 데이터 상태와 UI를 일치시켜줍니다. ● 메모리 누수가 없습니다. Observe.. 2021. 5. 19.
크롬 80 버전 - SameSite CORS 이슈 PHP 최근에 고객으로부터 회원가입 과정에서 이메일 인증에 오류가 발생하여, 정상적으로 회원가입이 어렵다는 문의를 받았다. 재현을 위해서 다양한 브라우저에서 시도해보았다. Explorer, Edge 환경에서는 회원가입이 정상적이었으나, Chrome 환경에서는 세션값이 제대로 전달되지 않는 문제가 발생했다. 특정 브라우저에서만 안되는 문제를 찾기 위해 구글링 하던중, SameSite CORS 라는 키워드를 발견. 여기서 CORS는 Cross-Origin Resource Sharing의 줄임말이다. 리소스 공유를 서로 다른 도메인간에는 금지. 한마디로 도메인이 서로 다른 사이트간에 통신은 보안상의 이슈로 제한한다는 내용이다. 나의 경우는, 도메인은 동일했지만 서브 도메인이 약간 달랐다. ex) https://pg... 2021. 5. 8.
구글과 페이스북 개발자들이 일하는 방식은? "매일 할 일이 너무 많아요. 해도 해도 끝이 없네요." 대부분의 직장인들은 이 말을 자주 하고, 들을 것이다. 하지만 역설적이게도, 우리가 하는 일들은 끝이 날 수 없다. 특히 IT회사의 경우 모든 업무를 완벽히 끝낸다는 것은 불가능에 가깝다. 산업의 발전이 너무 빠르고 매일 생겨나는 이슈들이 엄청 많기 때문이다. 구글과 페이스북의 경영 방식은 적극적이고 능동적이다. 소프트웨어를 개발할 때는 사전에 개발 임무를 명확히 정해놓고 실행한다. 코딩을 얼마나 오랫동안 했는지가 아니라, 오로지 얼마나 많은 성과로 회사에 기여했는지를 본다. 소위 '가성비'를 중요하게 생각하는 것이다. ▷ 성장을 위한 필요조건 첫째. 직원들이 "어떻게 하면 회사의 이익을 극대화 할 수 있을까"라는 생각을 갖고 일하게 만들어야 한다.. 2021. 5. 3.
코딩 잘하는 3가지 팁 (현직 개발자 추천) 개발을 오랫동안 진행하다보면, 자주 겪게 되는 현상이 있습니다. 하나의 함수를 만들었는데, 나중에 보니 비슷한 함수가 이미 만들어져 있는 경우입니다. (함수 중복) 생각의 흐름대로 코드를 작성하다보면, 하나의 함수에 많은 기능을 포함시키거나 안드로이드 개발 시, onCreate() 함수에서 자동로그인 확인, 사용자 정보 불러오기 (네트워크 통신) 기능을 구현하여 코드 유지보수 과정에서 복잡하게 보여지는 경우가 많습니다. 개발자라면 누구나 쉽게 파악이 가능한 코드를 만들고 싶어합니다. 이를 실현하기 위해서는 3가지 원칙을 지키면 됩니다. ▷ DRY: Don't Repeat Yourself - '반복하지 마라' 원칙 - 시스템에서 지식과 로직은 단 한곳에서 명확하고 신뢰할 수 있도록 존재해야 한다. - 여러.. 2021. 4. 30.
[MMS 서비스] 문자 이미지 첨부, 최대 용량은? 최근에 회사의 앱 서비스를 운용하다가, 고객의 문의사항이 접수되었다. 이슈사항은 "앱에서는 원본 해상도 이미지가 잘 보여지는데, 이를 문자로 전송하면 화질이 깨진다"는 것이다. 재현을 해보았을 때, 2가지 문제점이 발견되었다. 첫째. MMS 이미지 첨부과정에서 해상도가 자동으로 낮아진다. 둘째. 안드로이드 기종에서 문제가 발생했다. 아이폰의 iMessage에서는 이미지 해상도가 나쁘지 않았다. 최근에 출시한 스마트폰의 기본 MMS 앱에서는 해상도를 설정하는 옵션이 존재하지 않는 것으로 확인했다. iOS / Android 각각 기기에서 해상도의 차이를 확인하고, 구글링으로 확실한 수치를 검색해본 결과는 아래와 같다. 스마트폰 카메라 화질이 좋아지면서, 왠만한 사진 1개의 용량이 2~3MB를 넘어선다. MM.. 2021. 4. 29.
[라인개발실록] 안드로이드 앱 빌드 시간 꿀팁 (feat. 질문 채택) 최근 들어 IT회사의 개발자 수요가 급증하면서, 관련 유튜브 콘텐츠들도 많아지고 있다. 그중에서도 양질의 정보를 제공하는 개발자 관련 유튜브 채널 '라인개발실록'을 소개한다. 최신 업로드된 영상 중에, '안드로이드 개발 빌드 시간을 줄여주는 꿀팁'에 대한 영상이 있어 소개한다. 라인에서 안드로이드 현업 개발자 (차영호, 장혁재) 두 분이 나오셔서, 실무에서 사용 중인 기술과 꿀팁에 대해서 자세하게 설명해주신다. 사전에 채널 커뮤니티 게시판에 '1억 명이 쓰는 안드로이드 앱은 어떻게 만들어질까?' 주제에 대한 사전 질문을 모집하는 글을 확인하고, 실무 개발자로서 비동기 처리는 어떻게 진행하는지가 궁금했다. 그 이유는, 최근에 회사에서 Kotlin을 도입하여 신규 프로젝트를 진행하는 과정에서 RxJava3을.. 2021. 4. 28.