일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- list map
- 스피너
- ExoPlayer
- getChangePayload
- 시행착오
- AWS EC2
- doc2vec
- map
- DiffUtil.ItemCallback
- 유튜브
- Python
- FastAPI
- 안드로이드
- ChatGPT
- android custom view
- ktor api call
- android ktor
- kotlin collection
- ansi2html
- ListAdapter
- video caching
- ktor client
- build with ai
- android
- kotlin list
- llm
- exoplayer cache
- android exoplayer
- ListAdapter DiffUtil
- 독서
- Today
- Total
목록분류 전체보기 (100)
버튼 수집상
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Rza7l/btsg87oDdqz/5wEFR2lGsKY2L9BnhJm3s0/img.png)
- 포스트모더니즘 : 사람에겐 세계와 대한 모형과 세계에 대한 인지를 비교하면서 그 차이점을 인지하는 능력이 있다. 인지부조화 - 정향능력(orientation) 그러나 인식의 한계를 감안해서라도 세계의 모델은 완전할 수 없다. '인지'와 관련된 고릴라 실험 자신이 가지고 있는 가치 구조가 인식할 수 있는 것들을 결정한다. 가치관은 단순히 기대하거나 원하는 것만 결정하는 게 아니라 무엇을 보고 느끼고 있는지 마저도 결정. 즉, 우리는 99%의 세계를 보고도 보지 못한다. 바로 다음 예정된 행동을 실행할 수 있을 만큼의 아주 적은 양의 정보만 본다. - 인간이 일하면서 어떻게 어느 정도의 '해상도'를 유지해야하는지 아는가 한 체계에 존재하는 문제는 그 체계의 여러 단계중 어느 단계에서나 존재할 수 있다. ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/csivMQ/btsg2Zx8NII/j3k9rpVuuiihR2Ni7aUXLK/img.png)
미리 보는 결론 UI 컴포넌트를 바꿔야할 때는 프래그먼트를 사용해서 앱 반응속도를 개선한다. 안드로이드 리소스 (비디오 플레이어, 브라우저 등)를 쓸 때는 액티비티를 사용한다. 필요한 스펙에 맞는 필요한 구조를 선택한다. 배경 현재 재직중인 회사는 MVVM 구조의 쇼핑몰 웹뷰 앱을 운영하는데, 자바에서 코틀린으로 옮기듯이 액티비티 위주의 앱을 싱글액티비티로 개선해야하지 않겠냐는 이야기가 나왔다. 자사에서 서비스중인 앱에 싱글액티비티 + Jetpack Navigation Component 구조가 적합할지 알아봤다. 1- 안드로이드 싱글액티비티를 사용해야하는 이유 (2020.5.27) 아래 글 번역 + 정리 Reasons to use Android Single-Activity Architecture with..
프론트엔드 bleeding edge 6개월 뒤 빌드 되지 않는 코드 obsolete 와 deprecated 의 차이 [메모] obsolete vs deprecated 안드로이드 소스코드에서 심심찮게 보이는 가로줄과 @Derpecated 어노테이션. 이 함수는 더 이상 쓰지 말아라- 정도의 의미로 알고 팀원끼리도 '디프리케이티드' 라고 부르면서 작업했다. 문득 그 collectingbuttons.tistory.com 유지보수보다 신기능으로 갈아치워지는 경향이 있어서 코드의 유효기간이 짧다 프론트 깎는 장인 -> 성능 면에서 큰 차이 없음 물론 서버에서 받아오는 응답을 바로 잘 그리는 프론트는 차이를 보인다 현재 업계에서 시니어가 없어서 수요가 있다 (ex: iOS 10년차) 새로운 공부거리를 끊임없이 찾아..
배포를 목적으로 만든다 1. 도메인 파서 올려야지 2. (잘 안 될 것 같으면) 깃허브에 소스 올려야지 (오픈소스) 같은 로그인 페이지를 만들더라도 예외처리를 어떻게 할지 고민하고 꼼꼼하게 처리한다. 흔한 샘플 코드처럼 예외처리 블럭에 프린트만 찍을 경우, 예외를 발생시킨 실제 사용자는 아무런 반응이 없는 사이트를 보게 될 것이다. 같은 기능을 짜더라도 사용성을 고려하기.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dXvWbW/btsg7HCvwJK/QprjwFm7SIX2BGP65kkbPK/img.webp)
웹 크롤러에서 추출한 이미지 패스값을 저장하는데 이미지 패스가 중복될 경우, 수정한 사용자 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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Xhaxa/btsggMSqm3M/t7QYa7qsqBZNgE7EADDLxk/img.gif)
기본적인 건데 까먹는 바람에 스크롤 리스너 달아서 오프셋 값 저장하기 등등 쌩 난리를 쳤었다.. 다시 잊지 않도록 기록해둔다. 문제는 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회독 어치를 쌓는다. 뭘 읽든 기록한다! 필사도 괜찮다. 하루동안 눈에 들이는 텍스트는 차고 넘친다. 읽는 행위 자체는 특별하지 않다. 의미있는 문장을 스스로 만들어서 새기자.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nJamx/btsdtEYUxx9/IlPUhW1KR4rKTLAbKg2NIK/img.gif)
배경 이전에 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..