본문 바로가기

IT/Teckweek32

Debounce / Throttle Reactive Programing에 대해 알게 된 지 얼마되지는 않았지만 (..) 물론 여전히 나는 헤매는 중이지만.. 간단히 Reactive Programing은 비동기적 데이터 흐름을 다루는 프로그래밍이다Reactive programming is programming with asynchronous data streams. 이 관련 얘기는 꽤나 길어질 듯하고, 더 공부해야할 부분이 많으니 다음 주제로 써먹도록(?) 하고.. 간단하게 이 주제를 왜 선정했느냐 하면, 1. 앞서 얘기한 리액티브 프로그래밍에 대해 공부하다가 자주 나온 개념 중 하나이고, 2. 회사에서 ThrottleLast가 아니라 ThottleFirst를 써야하지 않느냐라는 코드리뷰에서 뭔 소리인지 못 알아먹었었기 때문이며, 3. 자바.. 2021. 3. 18.
어노테이션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.
해시 충돌 면접 질문으로 유명한 해시 충돌이다. 해시 충돌에 대해 이야기하려면 먼저 해시에 대해 알아야 하고, 왜 충돌이 일어나게 되는 지도 알아야 한다. 해시란 무엇인가? 해시 알고리즘에 대해서는 많이들 들어봤을 것이다. 자바에서 HashMap/Set을 사용해 보았을 수도 있고, 기본적으론 무언가를 저장하고, 다시 찾는 것에 아주 속도가 빠른 알고리즘으로 기억하고 있다. 명확하게 해싱Hashing을 하는 것은 다음을 의미한다. 해싱은 가변 크기의 입력값에서 고정된 크기의 출력값을 생성해 내는 과정. 이는 해시 함수(해싱 알고리즘으로 구현됨)라 알려진 수학적 공식을 따라 진행된다. 출처 : academy.binance.com/ko/articles/what-is-hashing 이렇게 해싱을 거친 값들은 일반적으로 해.. 2020. 12. 27.
DI (Dependency Injection)란? DI는 의존성 주입을 의미한다. 여기에서 의존성과, 주입에 대해 각각에 대한 의미를 알아보자. 위의 사진에서 ClassA에 대해 ServiceA와 ServiceB는 모두 의존성을 갖고 있다. (각각의 서비스에서 ClassA를 사용한다) 따라서 이러한 상황에서 오른쪽의 경우 ClassA를 따로 생성하여 외부에서 ServiceA와 ServiceB에 주입하는 모습을 볼 수 있다. DI (Dependency Injection)란? 어떠한 객체 A내에 선언된 B를 할당하게 되면 A는 B에 의존성을 갖게 된다. 이러한 상황에서 DI를 사용하게 되면 외부에서 생성한 B객체를 A에 주입하기만 하면 되고, B 객체 할당도 여러번 일어나지 않는다. 따라서 DI를 사용하게 되면 재사용성이 높아지고, Unit 테스트에 좋아진.. 2020. 12. 21.
안드로이드 클린 아키텍처 최근 회사에서 프로젝트를 진행하면서 '클린 아키텍쳐'라는 것을 처음 들었다. 물론 클린 아키텍쳐라는 용어에서 오는 느낌에서부터, 코드를 깔끔하고, 객체 지향적으로 짜기 위한 아키텍쳐일 것이라는 느낌이 오기는 했다. 그런 의미에서 안드로이드 클린 아키텍쳐에 대해 알아보자. 클린 아키텍처란? 2012년 Uncle Bob은 Clean Architecture라는 새로운 소프트웨어 아키텍처 패턴을 발표했습니다. 그는 이 패턴을 활용한다면 SW 개발의 체계적인 구조와 계층들을 분할함에 따라 이전보다 효율적으로 프로그램을 구현가능할 것이라고 말했습니다. 출처: https://juyeop.tistory.com/25 [글 쓰는 개발자의 꿈] Uncle Bob이라는 사람이 발표한 것으로, 엔터프라이즈에서 논의되고 있던 내.. 2020. 12. 18.
TDD란? 익히 들어온 TDD..에 대해서 알아보고자 한다! TDD는 뭔가 개인적으로 코딩 테스트 당시에 나오는 테스트 케이스 확장자 파일? 로 은근 봐왔던 것 같다. 실제로 개발 과정에서 테스트 케이스를 만들었고, 이러한 테스트를 통과하기 위한 코드를 짜는 것을 TDD라고 한다. TDD에 대해 자세히 알아보자! TDD란? Test Driven Development. 테스트 주도 개발. 테스트가 개발을 이끌어나가는 것을 의미한다. 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성하고, 그 테스트 케이스를 통과하기 위한 코드를 생성한다. 그리고 해당 코드를 리팩토링하는 기법이다. 위의 과정을 간단히 이미지로 표현하면 다음과 같다. TDD .. 2020. 12. 9.
머신러닝과 딥러닝의 차이 면접을 보면서 받았던 질문에 대해 정리해보는 시간을 갖고자 한다. 면접을 보면서 해당 직무 중에선 관심분야가 AI 이다.. 라고 말을 했다가 굉장히 많은 질문을 받았었다. 그중 흐지부지하게 대답한 것이 있다면 단호하게 말할 수 있을 정도로 ~하는 상황에서 딥러닝과 머신러닝 중 무엇을 선택하시겠습니까? 라는 질문에서 다소 어처구니 없는 답변을 했던 것 같다(..) 면접 결과는 나오지 않았지만 개인의 궁금증 해결을 위해 해보는 차이점 알아보기! 간단히 말해서 인공지능 내에 머신러닝이, 그리고 머신러닝에 딥러닝이 포함되는 형태이다. 구체적인 차이점은 다음과 같다. 머신러닝 통계적인 경험을 통해 문제의 해법을 찾아가는 인간의 특징을 기계에 적용한 것이다. 그러나 인간의 실수까지도 기계가 그대로 학습한다는 단점이.. 2020. 11. 30.