본문 바로가기

전체 글

바코드, QR CODE 생성 및 스캐너 바코드는 문자와 숫자를 막대와 공백으로 표시함으로서 상품관리를 편리하게 하는 것으로 가장 간단하게 구현하는 방법에 대해 알아보겠습니다. gradle에 다음의 라이브러리들을 추가합니다. //바코드 읽기 implementation 'com.budiyev.android:code-scanner:2.1.0' //바코드 쓰기 implementation('com.journeyapps:zxing-android-embedded:3.6.0') { transitive = false } zxing에서 제공하는 바코드 유형은 17개정도인데 아래는 QR_CODE를 생성하는 예제입니다. 이 외에도 CODE_39나 CODE_93등의 바코드 유형도 생성가능합니다. val barcodeEncoder = BarcodeEncoder() v.. 더보기
webview scroll detecting 프로젝트를 진행하던 중 웹뷰의 스크롤에 따라 toolbar를 collapse, expand를 하는 기능을 만들게 되었다. 안드로이드에서는 web view의 스크롤을 감지하는 Listener를 제공하는데 다음과 같다. webView.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY -> // insert your code } 하지만 문제가 있었는데 위의 기능은 API 23부터 제공하는 기능이었다. 그렇다면 23이전에서는 어떻게 스크롤을 탐지할 수 있을까? 구글링의 결과 끝에 원하는 답을 찾을 수 있었다. class CustomWebView : WebView { private var oldY: Float = 0.toFloat() .. 더보기
Room에서 LiveData사용과 paging처리 Room을 이용하여 내부에 대량의 데이터를 저장할 경우. 저장된 데이터를 페이징처리를 통하여 효율적인 리스트를 표현하는 것이 좋다. Dao @Query("SELECT * FROM table") abstract fun selectList() : DataSource.Factory 페이징처리 부분 val config = PagedList.Config.Builder() .setInitialLoadSizeHint(20) //최초 로드사이즈는 20개 .setPageSize(10) // 페이징당 10개 .setPrefetchDistance(10) // 10개마다 다음페이지를 미리불러오기 .setEnablePlaceholders(true) .build() var pagedItems = LivePagedListBuild.. 더보기
SharedPreferences 똑똑하게 사용하기. 예전에 우리가 자바에서 사용하던 방법 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = preferences.edit(); editor.putString("key","value"); editor.apply(); 코틀린으로 사용하면? private val pref = PreferenceManager.getDefaultSharedPreferences(context) @Suppress("IMPLICIT_CAST_TO_ANY") fun get(key: String, defaultValue: T): T { return when (defaultValue).. 더보기
오라클 날짜 관련 - 현재일자 구하기SELECT SYSDATE FROM DUAL;SELECT CURRENT_DATE FROM DUAL; - DATE형식을 STRING FORMAT으로 변형TO_CHAR( SYSDATE , '데이트형식') FROM DUAL; - 데이트형식CC : 세기YYYY : 년도Y,YYY : 년도에 콤마추가YEAR : 년도를 글자로 변형Q : 분기MM : 달RM : 달을 로마숫자로 표기MONTH : 달을 글자로 변형WW: 년도의 주W : 이달의 주DDD : 년도의 일자DD : 월의 일자D : 주의 일자DAY : 요일DY : 요일의 약자J : Julian Date , 4712BC의 1월1일부터.HH : 시간 (12)HH24 : 시간(24)MI : 분SS : 초SSSSS : 자정이후 경과된 초 - 달의 마지.. 더보기
x86 emulation currently requires hardware acceleration 이글은 windows10 / android studio 3.3.1을 기준으로 작성되었습니다. 안드로이드 에뮬레이터를 사용하려고 할 때 다음과 같은 에러가 출력이 되었다. x86 emulation currently requires hardware acceleration x86에뮬레이터를 쓰려면 하드웨어 가속이 필요하다는 것인데. 아래와 같이 박스친 툴을 설치하면 된다. 하지만 설치 한 이후에도 계속 같은 오류가 발생한다면 BIOS설정에서 Virtualization Technology 기능을 활성화 해야한다. 또한 Windows 기능 켜기/끄지 설정에서 Windows 하이퍼바이저 플랫폼이 활성화 되있는지도 체크하자. 완료가 되었다. 이제 즐겁게 개발하면 된다. 더보기
오라클 random함수 사용하기 랜덤한 숫자 생성하기 SELECT DBMS_RANDOM.VALUE(0, 1000) FROM DUAL * 정수로 값이 떨어지게 하려면 ROUND함수를 이용하자. 랜덤한 문자 생성하기 SELECT DBMS_RANDOM.STRING('u', 10) FROM DUAL * 첫번째 인자. 'u', 'U' : 대문자'l', 'L' : 소문자'a', 'A' : 대소문자 구분없는 영문자'x', 'X' : 영문자와 숫자 혼합'p', 'P' : 문자 혼합두번째 인자는 자릿수 랜덤으로 정렬하기 ORDER BY DBMS_RANDOM.RANDOM() 랜덤한 날짜생성하기 TO_DATE( TRUNC ( DBMS_RANDOM.VALUE( TO_CHAR(SYSDATE - 10, 'YYYYMMDD'), TO_CHAR(SYSDATE, 'Y.. 더보기
리눅스에 크롬 설치하기 해당글은 cent os기준으로 작성됨 1. yum의 repo파일 생성 후 저장 vi /etc/yum.repos.d/google-chrome.repo [google-chrome]name=google-chromebaseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearchenabled=1gpgcheck=1gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub 2. yum명령어를 이용하여 stable설치 - dependency까지 자동으로 설치됨yum install google-chrome-stable 3. 설치 및 버전확인 google-chrome --version 더보기