전체 글 536

[Python] 국내 주요 음원차트 API

Melon | melon-chart.py Bugs | bugs-chart.py Genie | genie-chart.py Vibe | vibe-chart.py Flo | flo-chart.py Flutter 강의를 막 떼서 음원차트 트래킹 앱을 만들어볼까싶었다. Front는 목록이랑 알림정도라서 난이도가 높지않아 보였지만, Backend는 국내 음원사이트 긁어오는 프로그램부터 만들어야하는데...생각에 현재 배포된 국내음원차트 API들을 살펴보았는데 대부분 웹 크롤링 방식이었다. 봇이라고 거르지도 않고, 음원사이트들이 그래도 몇년에 한번씩 단장하기때문에 꽤 괜찮은 방법이긴하지만 개인적으로는 진짜 API를 따오고 싶었다. 다행히도 내가 안드로이드 개발자이기 때문에 당장 떠오르는 방법이 있었다. 바로, 앱에서 ..

Flow.map() vs Flow.transform()

fun getPagedFavoritePosts(): Flow = Pager( config = PagingConfig(25), pagingSourceFactory = { GenericPagingSource { afterKey -> redditApi.loadFavoritePosts(getUserName(), afterKey) } } ).flow.transform { pagingData -> emit(pagingData.map { (it.data as PostDto).map() }) } 우연히 오픈소스 코드를 보다가, 나라면 map을 썼을 것 같던 구문에 transform을 사용한 것을 발견했다. transform? 처음 들어봤는데 이름이 map과 왠지 비슷한 일을 할 것같아서 찾아보았다. map Flow의 ..

Stable Diffusion 망한 AI 작업물 모음집

유튜브에서 AI가 생각한 "나루토" 캐릭터 등등이 유행하길래 나도 만들어보고 싶어서 시도를 해보았다. Stable Diffusion에다가 Realistic Vision V2.0 모델을 적용시키고 아래 키워드들을 사용했다. img2img로 만든 것도있지만, 이누야샤의 경우는 text2img의 결과물이다. photo of , detailed faces, highres, RAW photo 8k uhd, dslr 모든 것이 나루토 정도 퀄리티만 되어도 바로 유튜브 비디오 찍어내려고 했는데... 그나마 이 이미지들도 파라미터를 조절해가면서 얻은거라... 아마도 랜덤한 파라미터를 주면서 한 캐릭터당 5장씩 뽑아내도록 자동화를 해보면 괜찮아질 수도 있을거같기도하고...ㅋㅋㅋ 캐릭터가 너무 얼탱이 없어서 올려본다.

나/이슈 2023.03.29

[안드로이드] 특정 시간 내 중복 Request를 막는 OkHTTP Interceptor 구현하기

특정시간 안에 보낸 동일한 Request에 대해서 서버에 요청하지 않고, 이전에 받은 응답값을 그대로 내려주는 Interceptor를 구현해보았다. Response Body를 어떻게 재사용할 것인가 고민을 많이 했는데, ByteArray 형태로 읽어두고 중복된 요청일때 ResponseBody로 만들어주는 방법을 사용해보았다. 이렇게 짧은 시간안에 연속적으로 요청을하더라도, 500ms 이후에만 새로 요청을 하게된다. 개발중인 앱의 Request Method가 전부 POST이기때문에, Request body까지 읽어서 hashing을 하고있는데, 그럴 필요까지 없으신분들은 Request URL 자체를 hash 값으로 잡아도 무방할 것이다. 혹시 유용했다면 Star를~! HTML 삽입 미리보기할 수 없는 소스

구글 설문지 (Google Forms) 완료시 데이터 외부 API로 전송하기

구글 설문지를 완료했을때 보상을 주거나, 추가 정보를 처리해야 할 일이 있을 수 있다. 그래서 구글 설문지를 완료하면 외부 API로 데이터를 보내는 방법을 정리해보려한다. OAuth Scope 추가하기 먼저 더보기 메뉴에서 [스크립트 편집기]로 진입한다. 외부 API로 요청을 보내기 위해서 아래 scope에 대한 권한이 필요한데, 이것을 정의하려면 appsscript.json을 편집해야한다. "https://www.googleapis.com/auth/script.external_request" 프로젝트 설정 > 편집기에 [appsscript.json 매니페스트 파일 표시] 체크를 하면 편집기에서 appsscript.json이 생긴 것을 볼 수 있을 것이다. { "timeZone": "Asia/Seoul"..

[PC] 레데리2 치트키 및 사용법

RDR2 치트 사용법 최고의 서부낭만 갓겜 레데리2...치트코드마저도 낭만이 뚝뚝 떨어지네요. 레드데드리뎀션2에서 치트를 쓰려면 옵션 > 설정 > 치트에서 치트를 입력하면됩니다. 치트키 *대소문자 상관없습니다! 특수문자, 띄어쓰기는 유의해주세요. 효과 설명 치트키 기본 무기 세트 기본 무기들을 얻습니다. A simple life, a beautiful death 스텔스 무기 세트 스텔스 무기들을 얻습니다. Death is silence 건슬링거 무기 세트 건슬링거 무기들을 얻습니다. History is written by fools 500달러 추가 500달러를 추가합니다. Greed is now a virtue 모든 의상 해금 모든 의상을 해금합니다. Vanity. All is vanity 모든 조리법 ..

[Kotlin] 클로저(Closure)에 대해 알아보자

Closure와 일반함수의 차이점 Closure는 outer scope에 있는 변수에 접근할 수 있지만, 일반 함수는 그렇지 못하다. 일반 함수는 자신이 정의된 영역 내에서만 변수를 사용할 수 있다. Closure는 함수를 값으로 취급하여 변수에 저장하거나 다른 함수의 인자나 반환값으로 사용할 수 있지만, 일반 함수는 그렇지 못하다. 일반 함수는 이름을 통해서만 호출할 수 있다. Closure는 실행 시점에 생성되고 소멸되지만, 일반 함수는 컴파일 시점에 생성되고 소멸되지 않는다. Closure는 상황에 따라 다른 값을 가질 수 있지만, 일반 함수는 항상 동일한 값을 가진다. Kotlin closure Kotlin에서 Closure는 상위 함수의 영역에 있는 변수에 접근할 수 있는 함수다. Kotlin은..

[GTA5] 치트키 모음 / 사용법 (복사가능) PC, 콘솔

치트키를 사용하면 게임을 더 재미있게 즐길 수 있지만 도전과제 달성이 불가능해지니 주의하세요. 치트 쓰는 법 PC (steam | epic): ~ 키를 눌러 치트키 입력창을 열어 치트 입력 Console (플스): L1 + R1 동시에 누르기 Console (엑박): LB + RB 동시에 누르기 치트키 목록 PC 치트키 효과 PAINKILLER 5분 동안 무적 SLOWMO 게임이 느려짐 (슬로우 모드 / 최대 3회 중첩) CATCHME 달리기 속도가 빨라짐 GOTGILLS 수영 속도가 빨라짐 HOPTOIT 점프 높이가 높아짐 TURTLE 체력과 아머가 최대치로 충전되고 차량이 수리됨 FUGITIVE 지명수배 레벨이 증가함 LAWYERUP 지명수배 레벨이 감소함 MAKEITRAIN 날씨가 변경됨 (안개 -..

Kotlin은 왜 나왔고, 왜 Android 공식언어로 채택되었을까?

Kotlin은 어떤 언어? Intelij IDE로 유명한 Jetbrains에서 개발 2017년 구글에서 안드로이드 개발 정식언어로 채택 (왜 채택?) ‘Interoperatablity’ 강조, 틈새를 파고드는 전략 → 기존에 개발된 프로젝트 / 라이브러리를 그대로 사용가능 엄청 특별한건 아님… JVM language들 다 되긴함 Scala / Groovy / Jython… Kotlin In Action: Kotlin의 주요 목표는 더 간결하고, 생산적이면서 안전한 Java의 대안을 제공하는 것. → But Java의 대안에 초점보다는 실용적임 / 간결함 / 안전한 언어에 초점 객체지향 프로그래밍 뿐만아니라 함수형 프로그래밍 스타일도 지원 일급함수(First-class functions) 불변값 (Immu..

vim Cheatsheet

u 뒤로 (Undo) y 복사 (Yank) p 붙여넣기 (Put) c 변경 (Change) d 삭제 (Delete) r 대치 R 단어모두 대치 x 지우기 o 다음줄 삽입 O 이전줄 삽입 w 다음 단어 시작으로 이동 e 다음 단어 끝으로 이동 b 뒤로 한 단어만큼 이동 gg 처음으로 G 끝으로 Ctrl + G 현재 문서에대한 정보 Ctrl + f 다음 페이지 (Forward) Ctrl + b 이전 페이지 (Backward) / 검색 (문서 처음부터) ? 검색 (문서 끝부터) n 다음 검색결과 N 이전 검색결과 :/s/old/new/g 현재 한 줄에있는 old를 new로 변경 :! 외부 명령어 사용 :set nu 라인넘버 보이게 :set hls 검색시 하이라이트 켜기 (highlight search) :se..