기본 콘텐츠로 건너뛰기

2월, 2018의 게시물 표시

Blockchain 기초

Blockchain 기초편 1.      What is Blockchain - Blockhain != 비트코인 - ‘ 분산 원장 ’ 으로 각 분야에 응용할 수 있는 범용성이 높은 기술 - 각 시스템이 개별적으로 데이터베이스에 저장하고 있던 원장 데이터를 블록체인 기술을 통해 네트워크로 공유할 수 있게 된다 . - 분산 원장 : MS soft Excel 의 ‘ 공유 통합 문서 ’ 기능과 비슷 , 한 명에게만 편집을 허용하고 다른 사람에게는 참조 권한만 부여하거나 , 같은 부분을 편집하는 것이 아니라면 여러사람에게 동시에 편집할 수 있는 권한을 부여하는 등의 권한관리 해주는 것 -  무역업이나 은행 등 중계자가 필요한 업무에 사용할 수 있음 2.      블록체인의 응용 블록체인의 특징 - 블록은 시간 별로 정렬되어 있다 . - 분산형 원장 구조 ( 변조가 어려움 , 기록의 객관적 시점 파악 , 거래기록의 타당성입증 ) 결제 및 거래에서의 응용 가상 화폐 - ‘ 누가 누구에게 얼마만큼 전달했다 ’ 라는 거래 기록을 블록이라는 단위에 기록해 연결함으로써 일련의 거래 기록을 시간순으로 모두 관리한다 . 이렇게 저장된 기록을 통해 모든 참가자의 잔고를 관리할 수 있다 . - 임의로 자신이 가진 화폐량을 부풀릴 수 없다 . 만약 화폐를 조작해 양을 늘린다 해도 블록체인에 참가한 다른 참가자로부터 거부당하기 때문에 정상 거래로 성립되지 않는다 . 비트코인 사례 - 일정 기간 내 올바르게 승인된 여러 거래 기록을 1 개의 블록으로 모으고 시간별로 연결한다 . - [ 그림 3] 에서 생성된 블록을 P2P 네트워크 시스템으로 공유 . 각 멤버가 서로 거래 기록을 송수신해 버킷 릴레이 같은 형식으로 데이터를 확산 . - [ 그림 4] 에서 거래

Refactoring

Refactoring - 마틴 파울러 - 1 일차 추후 수정할 부분 ? 1.       Refactoring 할 코드 부분에 대한 신뢰도 높은 각종 테스트 작성 . - 이 테스트 들은 반드시 자체 검사 되게 작성 2.       임시변수 최대한 없애기 3.       상속구조 만들기 Refactoring 개론 - 겉으로 드러나는 기능은 그대로 둔 채 , 알아보기 쉽고 수정하기 간편하게 소프트웨어 내부를 수정하는 작업 - Refactoring 기법을 연달아 적용해서 겉으로 드러나는 기능은 그대로 둔 채 소프트웨어 구조를 변경한다 해야하는 이유 ? - 소프트웨어 설계 개선 - 좀 더 쉽게 소프트웨어 이해하기 위해 - 버그를 좀 더 쉽게 찾기 위해 - 생산성 향상 Refactoring 이 필요할 때 ? - 같은 작업의 삼진 아웃 (3 번 반복 ) 때 - 기능 추가 - 버그 수정 - 코드 검수 Refactoring 관련 문제 - 데이터베이스 - 인터페이스 변경 - 설계를 수정하는 일 - 처음 코딩 작성시 - 납기 임박 시점 코드의 구린내 - 중복 코드 ( Duplicated Code ) - 장환한 메서드 ( Long Method ) - 방대한 클래스 ( Large Class ) - 과다한 매개변수 ( Long Paremeter List ) - 수정의 산발 ( Divergent Change ) - 기능의 산재 ( Shotgun Surgery ) - 잘못된 소속 ( Feature Envy ) - 데이터 뭉치 ( Data Clumps ) - 강박적 기본 타입 사용 ( Primitive Obsession ) - switch 문 - 평행 상속 계층 ( Parallel Inheritance Hierarchies ) - 직무 유기 클래스 ( Laze Class ) - 막연한 범용 코드

Machine Learning

Machine Learning " 컴퓨터 프로그램이 특정한 태스크 T 를 수행할 때 성능 P 만큼 개선되는 경험 E 를 보이면 그 컴퓨터 프로그램은 태스크 T 와 성능 P 에 대해 경험 E 를 학습했다라고 할 수 있다 " -Tom Mitchell- 학습 데이터에 레이블 (Label) 이 있다 => 지도 학습 (Supervised Learning) 학습 데이터에 레이블이 없다 => 비지도 학습 (Unsupervised Learning) 두 학습모델에는 특성 (feature) 을 갖는다 특성의 적절한 선정은 머신러닝의 정확성 및 효율성을 좌우 통계학에서는 ' 설명변수 ', ' 독립변수 ' , ' 예측변수 ' 로 표현 차후에 지도 학습과 비지도 학습에 대해 세분하여 알아볼 예정이다 Machine Learning Statistics ( 통계학 ) 네트워크 (Network) , 그래프 (Graphs) 모델 (Model) Weight Parameters Learning Fitting Generalization Test Set Performance Supervised Learning Regression / Classification Unsupervised Learning Density estimation, Clustering [ 일반적 통계와 Machine Learning 대비 표 ]