일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- AWS EC2
- DiffUtil.ItemCallback
- 유튜브 요약
- ListAdapter DiffUtil
- 유튜브
- kotlin collection
- android exoplayer
- 안드로이드
- llm
- 스피너
- ktor api call
- android custom view
- list map
- Python
- kotlin list
- map
- FastAPI
- ktor client
- ChatGPT
- video caching
- android ktor
- doc2vec
- getChangePayload
- build with ai
- ExoPlayer
- 시행착오
- ListAdapter
- exoplayer cache
- Zsh
- android
- Today
- Total
목록전체 글 (106)
버튼 수집상

웹 크롤러에서 추출한 이미지 패스값을 저장하는데 이미지 패스가 중복될 경우, 수정한 사용자 ID만 업데이트하고 중복되지 않을 경우엔 이미지 패스와 저장한 사용자 ID를 저장하는 쿼리를 짰다. db = pymysql.connect(host='0.0.0.0', port=8000, user='userName', password='****', db='crawler', charset='utf8') cur = db.cursor() #... for path in paths: insert_dict = {'crawler_idx': 0, 'insertUser': userId, 'updateUser': userId, 'imgPath': path} # 이미지 저장하거나 덮어쓸 인덱스 # @position 변수할당 var_sq..

기본적인 건데 까먹는 바람에 스크롤 리스너 달아서 오프셋 값 저장하기 등등 쌩 난리를 쳤었다.. 다시 잊지 않도록 기록해둔다. 문제는 onBindViewHolder 가 호출되는 시점에 매번 RecylerView.Adapter를 세팅해주고 있었던 것. adapter를 최초 한 번만 세팅하면 전체 세로 스크롤을 오르내리면서 onBindViewHolder()를 부르더라도 뷰홀더 안 쪽의 가로 스크롤 위치가 유지된다. 수정 전 (제대로 안 돌아감) private val mAdapter = GoodsAdapter() override fun onBind(data: Any?, position: Int) { initUI(data) } private fun initUI(data: ModuleData) = with(bin..
1. 읽고 싶은 책을 책상에 신줏단지 모시듯 세워둔다 2. 짬이 잠깐 생기거나 폰 보면서 시간이나 때울 성싶을 때, 책으로 손을 뻗어서 훌훌 읽는다. 3. 이 때 클로바노트를 켜둔다. (보이스 메모) 4. 읽으면서 기억에 남는 구절은 페이지 넘버와 함께 바로바로 기록한다. 5. 혹은 연필로 대충 밑줄을 긋는다. 6. 듬성듬성 읽은 1회독 분의 감상을 짧게 적어둔다. 1~5의 과정을 반복하여 빈 페이지를 채우면서 n회독 어치를 쌓는다. 뭘 읽든 기록한다! 필사도 괜찮다. 하루동안 눈에 들이는 텍스트는 차고 넘친다. 읽는 행위 자체는 특별하지 않다. 의미있는 문장을 스스로 만들어서 새기자.

배경 이전에 sticky view 를 구현할 땐 LinearLayout.firstVisibleItemPosition 을 가지고 sticky를 띄울지 말지 판단했었다. // 예시 recyclerView.addOnScrollListener(object: RecyclerView.OnScrollListener() { override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { super.onScrolled(recyclerView, dx, dy) val lm = recyclerView.layoutManager as LinearLayoutManager val firstVisiblePosition = lm.findFirstVisibleItemPosi..

배경 리사이클러뷰 안에서 다른 뷰홀더를 덮으면서 펼쳐지는 두 줄짜리 리스트를 구현해야 했다. 그래서 드롭다운 UI가 액티비티 최상위에 그려지는 스피너 Spinner 를 선택했다. (참고 PopUpWindow) 과제1 드롭다운 리스트가 펼쳐지고 닫히는 시점을 알기 위해 AppCompatSpinner를 상속하는 커스텀뷰를 만들고 리스너 인터페이스를 달았다. 참고한 스택오버플로우 답변 Spinner: get state or get notified when opens Is it possible to know whether a Spinner is open or closed? It would even be better if there was some sort of onOpenListener for Spinners...
컬렉션 안에 필요한 정보를 끄집어낼 때 몇 겹씩 되는 for문을 돌리는 대신 고차함수를 쓰면 편리하다. 그렇다고 소스코드에서 for문을 안 쓰는 것은 아니나 데이터의 뎁스가 깊을 때 가독성이 좋아진다는 장점이 있다. List 를 다룰 때 유용한 고차함수들을 간략하게 정리해봤다. 예시 데이터1 data class SubCategory( val title: String = "", var isChecked: Boolean = false ) all list.all { it -> 체크하고 싶은 조건문 } 모든 요소가 조건에 해당하는지 true/ false 리턴 val isAllChecked: Boolean = subCategory.all { it -> it.isChecked } // 전부 체크됐는지 여부 coun..
배경 같은 종류의 데이터가 각기 다른 json 키 이름으로 들어오는 api 가 있었다. 구글의 gson 라이브러리는 json 키와 데이터 클래스 변수명을 1:1로 매핑시키므로 별도의 처리가 필요했다. 예시 데이터 클래스 data class TestResponse( // 키 이름이 다른 json 값들을 읽어서 List에 add. val areaList: List? ) { data class AreaData( @SerializedName("itemType") val itemType: String?, @SerializedName("imagePath") val imagePath: String? ) } 응답값 json { "banner1" : { "itemType" : "banner1", "imagePath" :..

themes.xml 파일에서 windowIsTranslucent=true 옵션을 지우고 앱을 다시 설치하니까 해결됐다. 관련 스택오버플로우 번역
class Tester( val title : String, val list: List ) class Category( val cateNm: String, val goodsList: List ) class Goods( val goodsNm: String, val tagList: List ) fun main() { // 2차원 리스트 val list2d : List = listOf( Tester(title = "1", list = listOf("이것을", "지금부터")), Tester(title = "2", list = listOf("하나의", "리스트로", "쭈우욱")), Tester(title = "3", list = listOf("뽑을", "것입니다.")) ) val flatten : List = l..
배경 인트로에서 메인으로 넘어간 후, 웹뷰가 그려지기 전까지 하얀 화면이 비치는게 거슬렸다. 메인 액티비티 위에서 프래그먼트를 띄우는 방법밖엔 떠오르지가 않는다. 인트로 화면을 액티비티로 가져가면서 메인 액티비티에 웹뷰를 미리 그릴 수는 없는지 알아보면서 서치. Preloading an activity before displaying it? I am developing a game for android, it takes a few seconds of time to load everything before you can play. During this time or the splash screen, I would like to display a progress bar to show the ... stack..