전체보기(316)
-
[2019.03.04] 개발 용어 정리
APM : Application Performance Monitor국내 APM 솔루션 : 제니퍼 소프트해외 APM 솔루션 : New Relic RPC : Remote Procedure Call원격 함수 호출요즘은 HTTP + JSON + REST로 대체 gRPC : 구글에서 다시 만든 RPCHTTP + JSON + REST 보다 좋은점1. 바이너리 프로토콜이라서 텍스트 기반보다 네트워크, 메모리, CPU 효율성이 좋음2. HTTP/2 지원 Netty : 고성능 네트워크 프레임워크 (자바)아파치, 톰캣보다 더 경량화한 것 그런데 경량화 하다보니 비동기적으로 동작한다.-> 에러 추적이 힘들다. Erlang : 병렬 프로그래밍 언어NDK : 자바만으로 모든 구현을 하기는 힘들다.NDK는 어플리케이션의 특정 부..
2019.03.04 -
[2019.03.04] 오픈소스 서버 기술셋
오픈소스 기술셋 상황 비고 스토리지 NoSQL (key, value) column family(key,value)에서 value가 (column, value)의 조합 해쉬 구조기 때문에 order by 가 존재 하지 않음 대신 order by key/value store가 존재 Cassandra 분산형 DB, NoSQL Elastic search 해쉬 테이블 방식의 O(1) 행 : Document 열 : Filed 스키마 : Mapping 인메모리 DB 메인 메모리에 설치되어 운영되는 DBMS 메모리에 데이터가 상주하기 때문에 디스크 접근 과정이 없어서 빠르다. 더 높은 예측 가능성 성능을 제공한다. 하지만 메모리에 상주한다 = 휘발성 데이터다. 라는 뜻이다. 따라서 전원이 차단될 경우 데이터 손실이 발..
2019.03.04 -
[2019.03.01] 클린 코드 (점진적 개선)
시스템을 망가뜨리는 변형을 하지 말아야한다. 어떤 목적 달성을 위해 코드를 작성하는 와중에도 해당 목적 만을 위한 TDD를 사용할 수 있다. 리팩토링 할 때의 TDD1. 현재 코드에서 동작하는 테스트 코드를 만든다.2. 코드를 리팩토링 할 때마다 테스트 케이스를 모두 돌려본다.3. 테스트가 실패하면, 리팩토링으로 인해 발생하는 실패 사례를 해결할 때까지 다음 리팩토링으로 넘어가지 않는다. 객체가 특정 클래스인지 확인하는 논리 연산Object instance of Class하지만 해당 논리연산을 너무 자주 사용하게 될 경우, 프로그램이 확장될 때 분기문에 의한 상황 처리가 계속 추가되게 된다. 그러므로 이를 사용하기 보다는 구조적으로 해결하려하자. 소프트웨어 설계는 분할만 잘해도 품질이 크게 높아진다.
2019.03.01 -
[2019.02.21] 객체지향의 오해와 진실 (7장~부록)
7장 Composition 관계 메뉴판 ◆― 메뉴 part of 관계 Aggregation 관계 메뉴 ◇― 이름 has a 관계 Association 관계 메뉴판 ―― 손님 도메인 모델에서 어떤 관계가 어떤 관계이고 이런 것은 중요하지 않다. 훌륭한 코드를 위한 3가지 관점- 개념 관점- 명세 관점- 구현 관점 인터페이스와 구현을 분리하라 (명세와 구현의 분리) 부록클래스는 객체가 공유하는 본질적인 속성을 정의한다.서브타입은 슈퍼타입의 부분집합이다. 100% 규칙 : 슈퍼 타입의 정의는 100% 서브타입에 적용돼야만 한다. 상속에서 구조적인 순응 : 100% 규칙상속에서 행위적인 순응 : 다형성 서브 타이핑 : 인터페이스 상속 - 설계의 유연성이 목표서브 클래싱 : 구현 상속 - 코드의 중복 제거가 목표..
2019.02.21 -
[2019.02.21] 안드로이드 가이드
원하는 상황 솔루션 List view 의 상위호환 Recycler view 끌어당겨서 리스트 뷰 새로고침 Swipe refresh layout 메뉴 Navigation drawer 탭으로 프래그먼트 이동 Tap layout + View pager List view 안의 아이템을 예쁘게 Card view 외부 통신 Volley 외부 통신 (Volley) Retrofit Json 파싱해주는 구글에서 제공하는 툴 Gson 메시지 출력 Toast 하단에 꽉찬 메시지 출력 Snackbar 하단에 떠있는 버튼 생성 Floating action button 하단에 프래그먼트와 같이 출력 Bottom sheet xml로 작성한 레이아웃 띄우기 Dialog fragment Http 통신으로 이미지 얻고 핸들링 Glide
2019.02.21 -
[2019.02.20] 객체지향의 사실과 오해 (5~6장)
5장자율적인 객체 = 스스로 정한 원칙으로 행동하는 객체객체가 행동하는 이유 = 다른 객체로부터 요청을 수신받았기때문 객체 B가 객체 A에게 목표 A를 수행하기 위해 행동 A를 하라고 하는 것은 자연스럽다.객체 B가 객체 A에게 목표 A를 수행하기 위해 행동 a,b,c,d를 순차 수행하라고 하는 것은 부자연스럽다.이 경우 객체 A는 목표 A를 위해 행동하는 것이 자유롭지 못하고 객체 B에 의존적이다. 메시지가 추상적이면 안된다.메시지는 어떻게가 아니라 무엇을 해야하는지 설명해야한다. (어떻게 = a,b,c,d, 무엇을 = A)메시지를 명시할 때 어떻게 수행될 지에대해 명시할 필요가 없다. 무엇이 실행되는지를 명시한다. 다형성= 동일한 메시지에 다르게 반응하는 것= 대체 가능성= 재사용 가능성= 확장이 가..
2019.02.21