본문 바로가기

Flutter 시작하기 for Window 윈도우 설치도 크게 어려울게 없더라.. 1. 초기 필요 환경 설정하기(Windows PowerShell 5.0 or git) 필요.파워쉘보다 깃이 설치가 더 편하니 깃을 설치하도록 한다. 링크 2. Flutter SDK 설치Flutter 공식 홈페이지에 올라와 있는 SDK를 설치한다. 링크 3. 압축 해제설치한 경로로 이동하여 합축을 해제한다. (이 때 주의할 점은 압축 해제한 파일의 경로에는 한글이 있으면 안된다.) 4. 환경 변수 설정윈도우즈키 + R로 실행창을 열고sysdm.cpl 입력 후 확인고급 탭으로 이동하여 하단에 환경변수 클릭사용자 변수에 Path를 더블클릭 하여 설치한 Flutte의 경로를 등록한다.(설치 경로\flutter\bin) 5. Flutter 실행설치된 Flutter 경로로 가..
Flutter 시작하기 for Mac 구글에서 열심히 밀고 있는 (개인적인 생각..) Flutter를 다뤄보기로 했다.Android와 iOS를 하나의 프레임워크로 만들 수 있다는 점에서 기존 네이티브 앱 보다 좋은 이점을 가지고는 있으나..역시 새로운 언어를 배우는 것은... 흥미롭다 (응?) Flutter은 공식 홈페이지를 제외하고는 아직 자료가 그렇게 풍부하지 않은 것 같다. (이것 또한 개인 생각..)우선은 설치부터 알아보기로.. 이 글의 설치 기준은.. Mac OS윈도우는 열심히 공식 홈페이지를... 1. Flutter SDK 설치하기Flutter 공식 홈페이지에서 제공하는 SDK를 설치한다. (https://flutter.io/setup-macos/)2. 압축된 파일을 받아왔기 때문에 압축을 해제한다.(설치 한 폴더에서 해도 좋고,..
비트코인 정리 이 페이지는 '비트코인, 블록체인과 금융의 혁신' 이라는 책을 보며 공부한 내용을 정리한 페이지입니다. 비트코인 중앙 장치 없이 P2P(Peer to Peer) 기반 분산 데이터베이스를 사용하며 256bit 해시 함수 알고리즘을 사용하는 디지털 화폐 * 돈이 아니라 분산화된 신뢰 네트워크 * 분산화된 시스템의 경우에도 회복력이 있고 중앙 권력이나 계급, 복잡한 역할 분담 없이도 복잡성이 새롭게 만들어지며 믿기 힘들 정도의 정교함이 생길 수 있다는 사실 가위개미(leafcutter ant) 무리의 행동양식 * 채굴자들은 평균 10분마다 누군가가 지난 10분동안 발생시킨 거래들에 대해 입증하고 채굴에 성공하는 경우 새로 생성된 비트코인으로 보상 받음. * 비트코인 프로토콜은 비트코인 공급량을 ..
자바8 - 8. 리팩토링, 테스팅, 디버깅 리팩토링, 테스팅, 디버깅 1. 가독성과 유연성을 개선하는 리팩토링 간결성, 유연성 1.1 코드 가독성 개선 가독성이 좋다 : 어떤 코드를 다른 사람도 쉽게 이해할 수 있다. 자바8에서 제공하는 코드 가독성에 도움을 주는 기능 * 코드의 장황함을 줄여서 쉽게 이해할 수 있는 코드를 구현할 수 있다. * 메서드 레퍼런스와 스트림 API를 이용해서 코드의 의도를 쉽게 표현할 수 있다. 1.2 익명 클래스를 람다 표현식으로 리팩토링하기 ex) 익명 클래스 사용하는 이전 코드 aidl Runnable r1 = new Runnable() { public void run() { System.out.println("Hello"); } }; ex) 람다 사용 aidl Runnable r2 = () -> System.o..
자바8 - 7. Stream - 4 병렬 데이터 처리와 성능 포크/조인 프레임워크 스트림을 이용하면 순차 스트림을 병렬 스트림으로 자연스럽게 바꿀 수 있음. 1. 병렬 스트림 컬렉션에 parallelStream을 호출하면 병렬 스트림이 생성 ex) 모든 숫자 합계 메서드 aidl public static long sequentialSum(long n) { return Stream.iterate(1L, i -> i + 1) .limit(n) .reduce(0L, Long::sum); } ex) 전통 자바 예시 aidl public static long iterativeSum(long n) { long result = 0; for( long i = 1L; i i +1) .limit(n) .parallel() .reduce(0L, Long::s..
자바8 - 6. Stream - 3 스트림으로 데이터 수집 ex) 통화별로 트랜잭션을 그룹화한 코드(명령형 버전) ```aidl 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, transactionsForCu..
자바8 - 5. Stream - 2 스트림 활용 필터링 프레디케이트 필터링 > 프레디케이트를 인수로 받아 일치하는 모든 요소를 포함하는 스트림 반환. ex) 프레디케이트 필터링 예시 aidl List vegetarianMenu = menu.stream() .filter(Dish::isVegetarian) .collect(toList()); 고유요소 필터링 > 고유 요소로 이뤄진 스트림을 반환하는 distinct 메서드 지원. ex) distinct 필터링 예시 aidl // 중복 없이 짝수만 추출. List numbers = Arrays.asList(1,2,1,3,3,2,4); numbers.stream() .filter(i -> i % 2 == 0) .distinct() .forEach(System.out::println); 스트림 축소..
자바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.g..