본문 바로가기

IT79

컴퓨터 비전 스터디 1주차 : 21.03.21 1주차에는 간단히 컴퓨터 비전에 대한 설명이 적힌 1장과, 이미지 해상도, 그리고 이미지가 매트릭스로 이루어져있다는 설명의 2장의 초반까지 진도를 나갔다. 1. 디지털 영상이란? 1. 디지털 영상의 태동 디지털 영상의 응용은 신문 산업에서 일어났다. 이전에는 영상을 배편으로 전달했는데, 유럽 -> 대서양 -> 미국에 이르기까지 몇 주가 걸렸다. 따라서 영상을 인쇄할 쯔음에는 해당 뉴스는 사람들의 관심에서 멀어졌다. 그러던 중 2시간 정도면 영상을 전달할 수 있게 되자, 미디어 산업에 혁명이 일어났다. 대략 이 이후로 1세기가 지난 지금, '컴퓨터 비전과 인터넷의 교차점'에 초점을 맞춘 인터넷 비전이라는 연구 분야가 생겨날 정도로 영상처리와 컴퓨터 비전은 주목 받고 있다. 2. 획득과 표현 카메라는 사람의.. 2021. 3. 21.
Debounce / Throttle Reactive Programing에 대해 알게 된 지 얼마되지는 않았지만 (..) 물론 여전히 나는 헤매는 중이지만.. 간단히 Reactive Programing은 비동기적 데이터 흐름을 다루는 프로그래밍이다Reactive programming is programming with asynchronous data streams. 이 관련 얘기는 꽤나 길어질 듯하고, 더 공부해야할 부분이 많으니 다음 주제로 써먹도록(?) 하고.. 간단하게 이 주제를 왜 선정했느냐 하면, 1. 앞서 얘기한 리액티브 프로그래밍에 대해 공부하다가 자주 나온 개념 중 하나이고, 2. 회사에서 ThrottleLast가 아니라 ThottleFirst를 써야하지 않느냐라는 코드리뷰에서 뭔 소리인지 못 알아먹었었기 때문이며, 3. 자바.. 2021. 3. 18.
람다와 익명클래스 괴담 "람다 함수로 작성한 코드는 로그 출력이 되는데, 익명 클래스로 작성한 코드는 로그 출력이 안 되는데 이유가 뭐지..!" 엥, 그거 그냥 익명 클래스로 코드 작성을 잘못한 거 아니야? "아냐, 둘다 토스트 띄우는 건 성공했단 말이야." 로그 레벨이 다르게 되어있는 거 아니야? "그랬으면 람다에서도 출력이 안 되지 않나..?" 그랬다. 때는 3일 전. 전 회사에 같이다녔던 오빠가 대뜸 카톡으로 람다와 익명클래스 괴담에 대해 물어보았다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 회사에서 야근?을 빙자한 저녁 먹고 퇴근 하던 도중에 이 질문에 묘하게 꽂혀서 "anonymous class java listener log not working" 같은 검색어를 쳐가며 스택오버플로우를 .. 2021. 3. 14.
Serializable vs Parcelable Serializable은 코드 작성이 편하다. 대신에 Parcelable보다 속도가 느리다. Serializable은 null에 엄격하다. 2021. 2. 19.
어노테이션Annotation 안드로이드 개발을 하면서, 어노테이션이라는 이야기를 자주 듣게된다. 간단히 찾아보면 @가 붙은 문구들을 어노테이션이라고 하는데, 이를테면 @Override와 같은 것들이다. 그래서 아, 그런 용도군! 정도로만 알고 살아가다가 (..) 문득 왜 이런 어노테이션을 쓰는 지에 대해 궁금해져서 간단히 조사해봤다. 어노테이션은 주석이란 뜻으로, 인터페이스를 기반으로 한 문법이다. 우리가 아는 주석 // /* ~ */ 와 같은 것과 다르게 클래스에 특별한 의미를 부여하거나 기능을 주입하는 것이다. 또 해석되는 시점을 정할 수 있다. 어노테이션은 크게 3가지 존재한다. JDK에 내장되어 있는 built-in annotation 어노테이션에 대한 정보를 나타내기 위한 어노테이션 meta annotation 개발자가 직.. 2021. 2. 9.
딥 링크Deep Link 회사에서 정신 없이 일을 하다보면, 새로운 용어를 많이 듣는다. '어떠한 것'이 있는지 알고는 있지만 용어는 모르다가, 나중에 찾아보고 '아 그거였구나!' 하게 되는 부분들이 있는데 딥 링크가 바로 그런 부분이었다. 딥 링크의 정의는 아래와 같다. World Wide Web에서의 딥 링크는 웹 사이트의 홈 페이지가 아닌 웹 사이트의 특정, 일반적으로 검색 가능하거나 색인이 생성 된 웹 콘텐츠에 링크하는 하이퍼 링크를 사용하는 것입니다. In the context of the World Wide Web, deep linking is the use of a hyperlink that links to a specific, generally searchable or indexed, piece of web con.. 2021. 2. 5.
그로스 해킹이란? 회사에서 그로스 해킹이 핫하다. 사실 나는 아직 단어의 뜻조차 잘 모른다.... 그래서 한 번 찾아보는 그로스 해킹. 솔직한 심정으론 Hacking이라는 자체가, 무슨 마케팅 기법이라는데. 뭘 의미하는 지가 좀 궁금하긴 했다. 그로스 해킹이란? 그로스 해킹(Growth hacking)은 창의성, 분석적인 사고, 소셜 망을 이용하여 제품을 팔고, 노출시키는 마케팅 방법으로 스타트업회사들에 의해 개발되었다. 온라인 마케팅의 한 종류라고 볼 수 있는데, 그로스 해커(growth hacker)들은 검색엔진 최적화, 웹사이트 분석, 컨텐츠 마케팅, A/B 테스팅과 같은 이미 대중화된 기술을 잘 이용하고있다. 그로스 해커(growth hacker)들은 낮은 비용으로 라디오, 뉴스, 텔레비전 광고 등과 같은 기존 미.. 2021. 1. 21.
코드 컨벤션 코드 컨벤션이란 건 무엇일까? 막연히 팀 프로젝트에서 일정한 코드 '규칙'을 정해서, 그러한 규칙에 맞춰서 코딩하는 것을 주로 코드 컨벤션이라고 해왔을 것이다. 규칙들엔 다양한 부분들이 있다. 들여쓰기 (indent) 띄어쓰기 (, 이후 한 칸 / 중괄호, 소괄호 이후 한 칸 등) 변수 작명법 주석 규칙 .. 이 중 흔하게 쓰이는 변수 작명법Naming Convention에 대해 살펴보자면 크게 3가지가 있다. 1. 스네이크 표기법 Snake Case 단어 별로 _를 붙여 이어나가는 표기법이다. 변수명 / 함수명 / 데이터 타입 / 네임 스페이스명 등에 사용된다. 올바른 예시 : snake_case 2. 파스칼 표기법 Pascal Case 파스칼 표기법은 쌍봉낙타 표기법Upper Camel Case라고도.. 2021. 1. 15.
Epoxy 사용법 정리 에어비앤비 라이브러리 Epoxy requestModelBuild() = notifyDataSetChanged() 와 동일하다. buildModels()의 함수를 재 실행한다. buildModels에는 ItemHolder나 Item(model)을 구현하여서 넣을 수 있다. 케이스에 따라 addIf를 추가하여 특정 Boolean일 때만 해당 모델이 빌드되도록 만들 수도 있다. 이 기능을 이용하여 로딩중일 때나, 오류가 났을 때 보여질 모델을 따로 추가할 수 있다. // build.gradle implementation "com.airbnb.android:epoxy:4.2.0" implementation 'com.airbnb.android:epoxy-paging:4.1.0' // Add the annotati.. 2021. 1. 1.
해시 충돌 면접 질문으로 유명한 해시 충돌이다. 해시 충돌에 대해 이야기하려면 먼저 해시에 대해 알아야 하고, 왜 충돌이 일어나게 되는 지도 알아야 한다. 해시란 무엇인가? 해시 알고리즘에 대해서는 많이들 들어봤을 것이다. 자바에서 HashMap/Set을 사용해 보았을 수도 있고, 기본적으론 무언가를 저장하고, 다시 찾는 것에 아주 속도가 빠른 알고리즘으로 기억하고 있다. 명확하게 해싱Hashing을 하는 것은 다음을 의미한다. 해싱은 가변 크기의 입력값에서 고정된 크기의 출력값을 생성해 내는 과정. 이는 해시 함수(해싱 알고리즘으로 구현됨)라 알려진 수학적 공식을 따라 진행된다. 출처 : academy.binance.com/ko/articles/what-is-hashing 이렇게 해싱을 거친 값들은 일반적으로 해.. 2020. 12. 27.