1월, 2022의 게시물 표시

Android @JvmDefault -Xjvm-default option error

이미지
사용 언어: Kotlin 1.6.10 사용 버전: Android Studio 2021.01.01 ​ 안드로이드 @JvmDefault -Xjvm-default option error를 알아보겠습니다. ​ 안드로이드 Gradle을 7.1.0으로 업데이트한 후 다음과 같은 오류 문구가 발생했습니다. Inheritance from an interface with '@JvmDefault' members is only allowed with -Xjvm-default option 문구를 보면 -Xjvm-default 옵션을 어떻게 하라고 나와있네요. 앱 용 build.gradle로 갑니다. jvmTarget을 VERSION_1_8 이상으로 설정합니다. 그리고 freeCompilerArgs를 설정합니다. 이곳에는 -Xjvm-default=enable을 적어줍니다. enable 또는 compatibility를 적어줍니다. 자세한 내용은 아래 페이지에서 확인 가능합니다. https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-default/ 이제 빌드가 됩니다. ​ 끝. 카테고리: Android

Android Make an apk from aab(Android App Bundle)

이미지
사용 언어: Kotlin 1.6.10 사용 버전: Android Studio 2021.01.01 ​ 안드로이드 Make an apk from aab(Android App Bundle)을 알아보겠습니다. ​ '.abb' 확장자를 가진 파일을 안드로이드 앱 번들(Android App Bundle)이라고 부릅니다. 이 파일은 구글에서 추천하는 앱 생성 방식이며, Play store에도 apk 파일보다는 abb 파일을 올리는 것을 권장하고 있습니다. ​ 이 abb 파일은 바로 휴대폰에 설치할 수 없습니다. 그래서 만약 abb 파일을 휴대폰에 설치하고 싶다고 한다면 apk로 변환한 다음에 설치해 줘야 합니다. 이번 시간에는 abb 파일로 apk 파일을 만들어서 설치하는 방법까지 해보겠습니다. ​ ​ abb 파일을 변환하기 위해서는 bundletool이라는 jar 파일이 필요합니다. 아래의 경로에서 받을 수 있습니다. https://github.com/google/bundletool/releases 여기서 최신 버전 jar 파일을 받아줍니다. 자 다운로드한 것은 원하는 폴더에 넣어줍니다. 저는 이곳에 넣었습니다. 'C:\Tools\android' ​ Android studio로 갑니다. Build - Build Bundle(s) / APK(s) - Build Bundle(s)를 누릅니다. 아래에 이렇게 뜹니다. locate를 눌러줍니다. ​ 자기가 알아서 파일을 열어줍니다. cmd를 쳐줍니다. ​ 그러면 cmd 창이 나옵니다. java -jar [bundletool 경로] build-apks --bundle=[bundle 경로] --output=[생성할 apks

Android Read an excel file

이미지
사용 언어: Kotlin 1.6.10 사용 버전: Android Studio 2021.1.1 ​ 안드로이드 Read an excel file을 알아보겠습니다. ​ 안드로이드에서 엑셀(Excel) 파일을 읽는 걸 해볼 건데요. 아무래도 일반 텍스트가 아니다 보니 라이브러리를 써줍니다. Apache에서 만든 POI 라이브러리를 씁니다. ​ https://poi.apache.org/ 이것을 바로 안드로이드에 사용하려면 복잡합니다. 그래서 marven repository를 사용합니다. https://mvnrepository.com/artifact/org.apache.poi/poi 여기서 최신 버전을 사용해 볼게요. 5.2.0으로 갑니다. 아래 페이지에서 Gradle (Short)의 내용을 복사해 줍니다. Module 용 build.gradle로 갑니다. dependencies에 붙여넣기하고 Sync Now를 합니다. implementation 'org.apache.poi:poi:5.2.0' 엑셀을 안드로이드 파일 구조에 넣기 위해서는 assets 폴더가 필요합니다. New - Folder - Assets Folder를 누릅니다. 이렇게 만든 assets에 excel 파일을 넣습니다. assets에 위치한 파일들을 읽기 위해서는 assetManager를 사용해야 합니다. assetManager를 정의하고, assetMana

Python Download a file from kaggle notebook

이미지
파이썬 Download a file from kaggle notebook을 알아보겠습니다. ​ kaggle notebook을 사용하다 이런 경우가 발생했습니다. output 파일을 받아야 하는데 버퍼링이 한정 없이 돌고 있습니다. 캐글은 사용 안 하면 자동으로 꺼지기 때문에 서둘러 저장을 해야 하는데 난감합니다. ​ 이럴 때에는 다음과 같은 방법을 사용해 줍니다. 우선 모든 파일을 압축해 줍니다. !zip -r file.zip /kaggle/working 이러면 file.zip이라는 압축 파일이 생성됩니다. 이것을 다운로드할 건데요. ​ from IPython.display import FileLink를 사용합니다. FileLink로 다운로드할 폴더명을 넣어서 실행합니다. 안될 가능성도 있는데 운이 좋기를 바랍니다. 위의 file.zip을 클릭하면 다운로드 해집니다. ​ ​ ​ 끝. 카테고리: Python

Python pandas.DataFrame.to_csv()

이미지
사용 버전: Python 3.7.9 사용 프로그램: Jupyter-lab ​ 파이썬 pandas.DataFrame.to_csv()를 알아보겠습니다. ​ 괄호 안에는 아래의 것들이 들어갑니다. pandas.DataFrame.to_csv()는 DataFrame을 csv로 저장할 때 사용합니다. ​ kaggle이나 dacon에 보면, 결과 제출을 csv로 해라는 경우가 많습니다. 이런 파일이 있는데, csv로 저장해 볼게요. 우선 path_or_buf에는 저장할 경로를 적어줍니다. 저장된 거 보이시나요? ​ ​ sep는 구분자를 의미합니다. 기본적으로 ','로 구분되는데요. 만약 다른 걸로 구분하고 싶다 하면 해당 옵션을 사용합니다.  구분자가 ',' 대신 '+'로 저장될 겁니다. Delimiter가 ','로 돼서 칸이 안 나눠져서 보이네요. na_rep은 빈 데이터를 어떻게 처리할 건지입니다. 기본이 ''이고 제 데이터에는 null이 없기 때문에 효과가 없습니다. index는 숫자를 포함할 건지를 설정합니다. 기본 값은 True이며 False를 하면 row 번호 없이 저장된 것을 볼 수 있습니다. index_label은 index 전용 label을 설정할 수 있습니다. encoding은 원하는 인코더로 저장할 수 있습니다. 기본은 'utf-8'입니다. 끝. 카테고리: Python, Pandas

Python pandas.DataFrame.replace()

이미지
사용 버전: Python 3.7.9 사용 프로그램: Jupyter-lab ​ 파이썬 pandas.DataFrame.replace()를 알아보겠습니다. ​ 괄호 안에는 이러한 것들이 들어갑니다. Python pandas.DataFrame.replace()replace()는 어떠한 값을 변경할 때 사용합니다. to_replace 값을 value로 변경합니다. ​ ​ 아래의 csv 파일을 봅시다. 5, 6 번째 줄에 숫자가 아닌 '-'가 들어 있습니다. 이렇게 되면, 분석을 하거나 데이터 타입을 변경할 때 황당합니다. 보면, Dtype이 int64가 아닌 object가 되어버렸습니다. ​ 또한, '-'는 입력이 되어 있기 때문에 null로 잡히지도 않습니다. 이 값을 0으로 변경해 봅시다. replace를 사용합니다. ​ to_replace에는 변경하려는 값을 넣습니다. 여기에는 숫자(numeric), 글자(str), 정규 표현식(regex), 배열(list), 사전(dictionary) 따위가 들어갈 수 있습니다. value에는 변경된 값을 넣습니다. 여기에는 글자(str), 정규 표현식(regex), 배열(list), 사전(dictionary) 따위가 들어갈 수 있습니다. ​ 글자(str)의 경우 데이터에 해당하는 글자들을 원하는 글자로 변경합니다. 배열(list)의 경우 해당하는 모든 값을 원하는 값으로 변경합니다. Bon에 5 가 있는데 0으로 변경되지 않은 이유는 Bon의 Dtype이 Object이기 때문입니다. 그래서 인식이 안되었습니다.