분류 전체보기 71

Flutter 시작하기 for Mac

구글에서 열심히 밀고 있는 (개인적인 생각..) Flutter를 다뤄보기로 했다.Android와 iOS를 하나의 프레임워크로 만들 수 있다는 점에서 기존 네이티브 앱 보다 좋은 이점을 가지고는 있으나..역시 새로운 언어를 배우는 것은... 흥미롭다 (응?) Flutter은 공식 홈페이지를 제외하고는 아직 자료가 그렇게 풍부하지 않은 것 같다. (이것 또한 개인 생각..)우선은 설치부터 알아보기로.. 이 글의 설치 기준은.. Mac OS윈도우는 열심히 공식 홈페이지를... 1. Flutter SDK 설치하기Flutter 공식 홈페이지에서 제공하는 SDK를 설치한다. (https://flutter.io/setup-macos/)2. 압축된 파일을 받아왔기 때문에 압축을 해제한다.(설치 한 폴더에서 해도 좋고,..

안드로이드 2018.10.20

비트코인 정리

이 페이지는 '비트코인, 블록체인과 금융의 혁신' 이라는 책을 보며 공부한 내용을 정리한 페이지입니다. 비트코인중앙 장치 없이 P2P(Peer to Peer) 기반 분산 데이터베이스를 사용하며 256bit 해시 함수 알고리즘을 사용하는 디지털 화폐돈이 아니라 분산화된 신뢰 네트워크 * 분산화된 시스템의 경우에도 회복력이 있고 중앙 권력이나 계급, 복잡한 역할 분담 없이도 복잡성이 새롭게 만들어지며 믿기 힘들 정도의 정교함이 생길 수 있다는 사실 가위개미(leafcutter ant) 무리의 행동양식 * 채굴자들은 평균 10분마다 누군가가 지난 10분동안 발생시킨 거래들에 대해 입증하고 채굴에 성공하는 경우 새로 생성된 비트코인으로 보상 받음. * 비트코인 프로토콜은 비트코인 공급량을 4년마다 절반으로 낮추..

Blockchain 2018.10.04

자바8 - 8. 리팩토링, 테스팅, 디버깅

리팩토링, 테스팅, 디버깅 1. 가독성과 유연성을 개선하는 리팩토링 간결성, 유연성 1.1 코드 가독성 개선 가독성이 좋다 : 어떤 코드를 다른 사람도 쉽게 이해할 수 있다. 자바8에서 제공하는 코드 가독성에 도움을 주는 기능 코드의 장황함을 줄여서 쉽게 이해할 수 있는 코드를 구현할 수 있다. 메서드 레퍼런스와 스트림 API를 이용해서 코드의 의도를 쉽게 표현할 수 있다. 1.2 익명 클래스를 람다 표현식으로 리팩토링하기 ex) 익명 클래스 사용하는 이전 코드 Runnable r1 = new Runnable() { public void run() { System.out.println("Hello"); } }; ex) 람다 사용 Runnable r2 = () -> System.out.println("He..

JAVA 2018.10.02

자바8 - 7. Stream - 4

병렬 데이터 처리와 성능 포크/조인 프레임워크 스트림을 이용하면 순차 스트림을 병렬 스트림으로 자연스럽게 바꿀 수 있음. 1. 병렬 스트림 컬렉션에 parallelStream을 호출하면 병렬 스트림이 생성 ex) 모든 숫자 합계 메서드 public static long sequentialSum(long n) { return Stream.iterate(1L, i -> i + 1) .limit(n) .reduce(0L, Long::sum); } ex) 전통 자바 예시 public static long iterativeSum(long n) { long result = 0; for( long i = 1L; i i +1) .limit(n) .parallel() .reduce(0L, Long::sum); } 병렬 ..

JAVA 2018.10.02

자바8 - 6. Stream - 3

스트림으로 데이터 수집 ex) 통화별로 트랜잭션을 그룹화한 코드(명령형 버전) Map transactionByCurrencies = new HashMap(); for (Transaction transaction : transactions) { Currency currency = transaction.getCurrency(); List transactionsForCurrency = transactionsByCurrencies.get(currency); if(transactionsForCurrency == null) { transactionsForCurrency = new ArrayList(); transactionByCurrencies.put(currency, transactionsForCurrency);..

JAVA 2018.10.02

자바8 - 5. Stream - 2

Stream 멀티 스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있음. ex) 저 칼로리 요리 반환 후 칼로리 기준으로 요리 정렬 (기존 코드) // 400칼로리보다 작은 요리 선택 List lowCaloricDishes = new ArrayList(); for(Dish d: menu) { if(d.getCalories() < 400) { lowCaloricDishes.add(d); } } // 익명 클래스로 요리 정렬 (칼로리 순) Collections.sort(lowCaloricDishes, new Comparator() { public int compare(Dish d1, Dish d2) { return Integer.compare(d1.getCalories(), d2.getCa..

JAVA 2018.10.02

자바8 - 4. Stream - 1

Stream 멀티 스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있음. ex) 저 칼로리 요리 반환 후 칼로리 기준으로 요리 정렬 (기존 코드) // 400칼로리보다 작은 요리 선택 List lowCaloricDishes = new ArrayList(); for(Dish d: menu) { if(d.getCalories() < 400) { lowCaloricDishes.add(d); } } // 익명 클래스로 요리 정렬 (칼로리 순) Collections.sort(lowCaloricDishes, new Comparator() { public int compare(Dish d1, Dish d2) { return Integer.compare(d1.getCalories(), d2.getCa..

JAVA 2018.10.02

자바8 - 3. 람다

Lambda 메서드로 전달할 수 있는 익명 함수를 단순화한 것. 특징 익명 : 이름 없는 메서드 함수 : 메서드처럼 특정 클래스에 종속되지 않음. 하지만 메서드처럼 파라미터 리스트, 바디, 반환 형식, 가능한 예외 리스트를 포함. 전달 : 람다 표현식을 인수로 전달하거나 변수로 저장 간결성 : 익명 클래스처럼 많은 자질구레한 코드를 구현할 필요X ex) 기존 코드 Comparator byWeight = new Comparator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()); } };ex) 개선한 람다 코드 Comparator byWeight = (Apple a1, Apple a2) -..

JAVA 2018.10.02

자바8 - 2. 동적 파라미터화

Behavior Parameterization 자주 바뀌는 요구사항에 효과적 대응 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미. ex) 어떤 기준으로 사과를 분류하는 메서드 (기존 방식) public static List filterApples (List inventory, String color, int weight, boolean flag) { List result = new ArrayList(); for(Apple apple : inventory) { if((flag && apple.getColor().equals(color)) || (!flag && apple.getWeight() > weight)) { result.add(apple); } } return result; } Lis..

JAVA 2018.10.02

node.js 한국 시간 구하기

서버 시간이 한국 시간과 다르면 new Date()를 찍어도 한국 시간과 다른 시간이 찍혀버린다. 검색 실력이 부족한건지 필요한 정보는 안알려주고 다른 정보만 잔뜩 알려준다. 해결책은 상당히 간단하다. 1. npm install moment // moment 설치 2. var moment = require('moment'); 3. require('moment-timezone'); 4. moment.tz.setDefault("Asia/Seoul"); 5. var date = moment().format('YYYY-MM-DD HH:mm:ss'); 6. console.log(date); var moment = require('moment'); require('moment-timezone'); moment.tz..

Node.js 2018.06.19