somoly.tistory.com
Kotlin Coroutine 개념
Kotlin 2023. 10. 5. 15:03

Kotlin Coroutine 개념 예시 suspend fun fetchDocs() { // Dispatchers.Main val result = get("https://developer.android.com") // Dispatchers.IO for `get` show(result) // Dispatchers.Main } suspend fun get(url: String) = withContext(Dispatchers.IO) { /* ... */ } 예시에서 get() 은 기본 스레드에서 실행되지만 네트워크 요청을 시작하기 전 Coroutine 을 정지(suspend)합니다. 네트워크 요청이 완료되면 get() 은 callback 을 사용하여 기본 스레드에 알리는 대신 정지(spspend)된 Corou..

kotlin euc-kr to utf-8 conversion
Kotlin 2023. 9. 9. 21:57

euc-kr 로 된 자막파일을 utf-8 로 변환하기 위해 사용한 것 import java.nio.charset.Charset import java.nio.file.Files import kotlin.io.path.Path import kotlin.io.path.extension import kotlin.io.path.readBytes fun main() { // 해당 경로의 파일 목록을 가져오기 val stream = Files.list(Path("path/files")) // smi 파일들만 필터링 stream.filter { it.extension == "smi" } .forEach { // 파일을 byte array 로 변환 val bytes = it.readBytes() // string 으로 ..

Find Primary IP Address of a Linux Machine
Linux 2023. 9. 7. 01:04

Network Interface Overview $ ip address show 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: enp1s0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether b..

Getting Started With Pacman Commands in Arch-based Linux
Linux 2023. 9. 6. 23:37

Install packages pacman -S package_name1 package_name2 ... Remove an installed package pacman -R package_name To remove a package and its dependencies which are not required by any other installed package pacman -Rs package_name Upgrading packages S stands for sync y is for refresh (local cache) u is for system update pacman -Syu Use pacman to search for packages pacman -Ss string1 string2 ... T..

article thumbnail
삼성전자, 77인치와 83인치 OLED TV 유럽 시장 출시
IT 2023. 9. 4. 20:33

올해 초 삼성은 55인치, 65인치, 77인치 QD-OLED TV를 선보였는데 몇 달 전 LG디스플레이의 WRGB OLED 패널을 사용한 83인치 OLED TV를 선보였고, 미국에서도 출시됐는데요, 이제 삼성은 유럽에서도 77인치와 83인치 WRGB OLED TV를 출시했습니다. 유럽 시장의 경우 삼성의 WRGB OLED TV는 77인치와 83인치로 출시됩니다. 이 TV들은 S89C와 S91C 두 가지 종류로 출시됩니다. S89C에는 폭을 조절할 수 있는 테이블 마운트 스탠드가 있고, S91C에는 삼성의 여러 고급 TV에서 볼 수 있는 전통적인 테이블 마운트 스탠드가 있습니다. 한국 기업은 2023년 베를린 TV 부스에서 OLED 신모델을 선보였습니다. S89C OLED TV는 77인치 버전의 모델 번호..

article thumbnail
애플, 아이폰 15 프로와 함께 USB-C 포트를 갖춘 새로운 에어팟 프로 출시 예정
IT 2023. 9. 4. 20:29

Apple은 9월 12일 Wonderlust 이벤트에서 수많은 업그레이드를 선보일 계획입니다. iPhone 15 라인업이 이벤트의 하이라이트가 될 것이지만, 곧 출시될 Apple Watch Series 9와 새로운 AirPods도 발표하는 것이 적절하다고 판단할 것입니다. 이제 AirPods Pro의 충전 케이스가 USB-C 포트로 업그레이드되지만 나머지 디자인은 동일하게 유지될 것으로 보고되었습니다. 애플은 Wonderlust 아이폰 15 이벤트에서 USB-C 포트로 에어팟 프로를 업그레이드할 예정이지만 디자인 변경은 예상되지 않습니다. Apple은 iPhone 15 라인업에서 USB-C 포트로 전환할 예정이며, 기존 장치에도 새 포트를 도입할 계획입니다. 최종 사용자의 경우 단일 USB-C 케이블을 ..

Apache POI sheet.autoSizeColumn() Speed Up
Kotlin 2023. 8. 8. 09:01

문제 Ajax 를 이용하여 300건 정도의 데이터를 Apache POI 를 이용하여 엑셀 파일 생성 중 Ajax timeout 을 10초로 해 두었는데 timeout 이 발생하여 원인을 확인한 결과 sheet.autoSizeColumn() 함수 처리에 시간이 오래 걸리는 현상을 발견 해결방법 row 마다 컬럼의 문자열 길이를 이용하여 너비를 가중치를 이용하여 늘려주는 방식 문자열 길이 최대 70 까지만 적용되도록 함 ( 문자열 길이가 너무 길어지면 너비가 너무 커짐 방지 ) fun setColumnSize(sheet: XSSFSheet, index: Int, value: String) { val defaultColumnWidth = 2048 val maxLength = 70 val characterWid..

How to install dynamodb local
Linux 2023. 6. 27. 09:33

다운로드 및 압축 해제 경로 : ~/dynamodb # download package curl -O https://s3.ap-south-1.amazonaws.com/dynamodb-local-mumbai/dynamodb_local_latest.tar.gz # create target directory mkdir dynamodb # uncompress to target directory tar -xvf dynamodb_local_latest.tar.gz -C ~/dynamodb .zprofile (쉘 시작시 실행 됨) 시작/종료 함수 추가 # .zprofile DYNAMODB_PATH=~/dynamodb dynamodb_start() { nohup java -Djava.library.path=$DYNAMO..

mysql 8.0 password reset
백엔드 2023. 6. 27. 00:11

mysql 8.0 password 초기화 1. mysql 서비스 종료 (mac) brew services stop mysql (linux) sudo systemctl stop mysqld 2. skip-grant-tables 옵션을 통해 데몬 시작 mysqld --console --skip-grant-tables 3. 비밀번호 초기화 (비밀번호 null 로 설정) mysql> update mysql.user set authentication_string=null where user='root'; mysql> flush privileges; 4. 데몬 종료 (ctrl +c) 5. mysql 서비스 시작 (mac) brew services start mysql (linux) sudo systemctl sta..

kotlin logger
Kotlin 2023. 6. 26. 23:01

kotlin 에서 slf4j logger 를 이용할 경우 불편한 점이 있어 LoggerDelegate 를 이용하여 사용하는 전략을 사용하고 있습니다. class LoggerDelegate : ReadOnlyProperty { private lateinit var logger: Logger override fun getValue(thisRef: Any, property: KProperty): Logger { if (!::logger.isInitialized) { logger = LoggerFactory.getLogger(thisRef.javaClass.name.substringBefore("\$Companion")) } return logger } } val loggerK: ReadOnlyProperty ..