목록IT (1350)
오늘도 공부
Transform 활용Stream 사용시 주어진 값들을 이용해서 가공할 일이 생길수 있다. 그럴경우 Transform 을 활용해서 가능하다.우선 예제를 보면서 살펴보자.이메일을 넣는 경우 유효성 체크 하는 validate stream 을 만든다고 가정하자.'@' 포함되는 경우 정상, 없는 경우 오류로 리턴하는 아주 간단한 예제우선 bloc 패턴을 이용할 예정이다.bloc 생성하자.StreamController 생성sink 정의transform 정의... final bloc = new Bloc(); ... class Bloc { final emailController = StreamController(); Function(String) get changeEmail => emailController.sink..
Android 에서 WebView사용시 정말 XX 한게 파일 업로드가 아닐수 없다. 이부분에서 괜찮은 소스가 보여서 공유 해본다. webView.setWebChromeClient(new WebChromeClient() { //The undocumented magic method override //Eclipse will swear at you if you try to put @Override here // For Android 3.0+ public void openFileChooser(ValueCallback uploadMsg) { mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Inten..
Android 배달앱 클론 스터디 부산에서 진행한 배달앱 클론을 진행하면서 공부한 내용을 정리 ( 1주차 )목표Android로 배달 앱을 클론 하면서 개발하는 방법과 패턴, RxJava등 사용법을 배우게 된다.MVP flow Base MVPView화면 단위를 뜻한다. Fragment, Adapter, ActivityModel데이터 연결 하는 부분을 담당한다. Sqlite, Retrofit등PresenterView Model 간의 연결을 도와주는 역할을 한다.Base 작성BaseMvpViewinterface BaseMvpView { fun getContext(): Context fun showError(error: String?) fun showError(@StringRes stringResId: Int)..
Relative Programming - BLoC 패턴아래 내용은 https://www.didierboelens.com/2018/08/reactive-programming---streams---bloc/ 을 공부하고 요약해놓은 글입니다.BLoC Pattern 은 구글 개발자 Paolo Soares 와 Cong Hui 에 의해서 디자인 되었다. 그리고 처음 발표된 건 2018년 DartConf 이다.관련 영상BLoC = Business Logic Component.하나 또는 여러개의 BLoC가 존재할수 있다.Presentation Layer(UI 부분)에서 가능하한 제거되며 로직부분만 분리해서 테스트가 용이함플랫폼 종속적이지 않다.환경에 종속적이지 않다.BLoC 패턴은 스트림을 이용해서 만들어진다.위젯은 ..
Reactive Programming part 1 - Stream스트림이란 무엇인가?스트림을 이해하기 위해선 파이프를 상상해야 한다.뭔가를 입력을 했다면 그것이 파이프 안에서 흘러서 다른 출구쪽으로 배출 되는 걸 뜻한다.그럼 Flutter 을 대입해보자면파이프는 Stream 이라고 부른다.Stream을 제어하기위해 우리는 자주 StreamController 를 이용한다.Stream 입력하기 하기 위해 StreamSink 를 사용한다.입력 할수 있는 것들은 어떤 것이든 가능하다.데이터, 오브젝트, map, 에러코드, 이벤트, 심지어 다른 스트림도 가능하다.배출은 어떻게 확인하나?일단 입력이 되면 Rx 처럼 subscribe 를 통해서 받을 수 있다. 이 과정을 flutter에서는 listen 한다고 말한다..
NodeJS 로 도커 시스템 구축package.json{ "dependencies": { "express": "*" }, "scripts": { "start": "node index.js" } }index.jsconst express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('Hi there'); }); app.listen(8080, () => { console.log('Listening on port 8080'); });Dockerfile# Specify a base image From node:alpine # install some depenendencies RUN npm install # De..
Container 레이아웃 치트시트https://medium.com/jlouage/container-de5b0d3ad184 Flutter Layouts Walkthrough: Row, Column, Stack, Expanded, Paddinghttps://medium.com/coding-with-flutter/flutter-layouts-walkthrough-row-column-stack-expanded-padding-5ed64e8f9584 Flutter Layout Cheat Sheethttps://proandroiddev.com/flutter-layout-cheat-sheet-5363348d037e 레이아웃 Flutter 영상 #1https://codingwithflutter.com/
Flutter App Tutorial #1이 글의 모든 내용은 udemy 강좌를 공부하고 따라해본 내용입니다.https://www.udemy.com/dart-and-flutter-the-complete-developers-guide완성 된 형태이다.첫 화면에서 오른쪽 아래 플로팅 버튼 클릭시 오른쪽 화면처럼 이미지와 글자를 가진 뷰가 하나씩 추가되는 형태이다.소스는 http json 을 통해서 가져왔다.소스는 https://github.com/bear2u/flutter-sample-pic.git 에서 확인가능하다. main.dart 시작flutter는 첫진입은 일반적으로 lib/main.dart 로 시작된다.매트리얼 테마를 사용하기 위해서 import를 한다.runApp 은 메테리얼 라이버러리를 통해 실..
Await / Future 비동기 함수 호출Http 로 통신할때 일반적으로 비동기로 호출을 하는 편이다. 비동기란 함수 호출시 블럭이 되지 않고 한번 다 훝고 콜백식으로 완료가 됐을 경우 다시 결과를 받는 경우를 말한다.만약 아래와 같은 코드에서 실행시 결과값은 마지막에 'I got the data' 로 떨어지게 된다.그리고 자바스크립트에서 Promise 형태와 비슷한 걸 볼수 있다.import 'dart:async'; void main () { print('1. start to fetch data'); get('http://weasds.com') .then((data) { print(data); }); print('3. finish call to fetch the data'); } Future get(..
JSON 핸들러서버와 통신시 제일 자주 사용되는 형태가 JSON 이다. 그럼 다트에서는 어떻게 다룰수 있는 지 살펴보겠다.테스트 환경은 https://dartpad.dartlang.org/ 에서 진행한다.import 'dart:convert'; void main() { var rawJson = '{"url": "http://blah.jpg","id":1}'; var parsedJson = json.decode(rawJson); print(parsedJson); print(parsedJson['url']); } ............. {url: http://blah.jpg, id: 1} http://blah.jpg그리고 모델 클래스를 만들어서 매핑하고자 할때에는 값을 키값을 줘서 값을 가져온다음 set ..
Flutter 카카오톡 오픈 채팅방 바로가기 : https://open.kakao.com/o/gsshoXJ StatefulWidgetStatefulWidget은 위젯에 변경되는 state 를 담고 있는 커스텀 위젯을 뜻한다.그럼 어떤식으로 만들어지는 지 살펴보자.우선 StatefulWidget 을 extends 한다.class App extends StatefulWidget { } State를 상속받은 클래스를 만든다.class AppState extends State { int counter = 0; Widget build(context) { return MaterialApp( home: Scaffold( body: Text('$counter'), appBar: AppBar( title: Text("L..
Flutter 카카오톡 오픈 채팅방 바로가기 : https://open.kakao.com/o/gsshoXJ 커스텀 위젯 추가하나의 파일에 많은 코드를 추가시 복잡해지고 길어지는 단점이 있다. 이럴때 파일로 빼서 분리를 할수 있다.임포트 방법내부에 src 폴더를 만들고 그 안에 app.dart 파일을 만들자.클래스 구조를 만들수 있다.import 매트리얼Stateless(StatefulWidget)Widget class 생성Build 함수 구현main.dart 에서 src/app.dart 호출# src/app.dart import 'package:flutter/material.dart'; class App extends StatelessWidget { Widget build(context) { return..
Scaffold 위젯 추가 Flutter 카카오톡 오픈 채팅방 바로가기 : https://open.kakao.com/o/gsshoXJ 기본적으로 모바일 구조가 상단에 Appbar가 있으며 하단에 바텀시트가 있으며 floating action button이 있다.그 구조를 기본적으로 지원하는 하나의 위젯이 Scaffold라고 보면 된다.그럼 하나씩 적용해보자.import 'package:flutter/material.dart'; void main() { var app = MaterialApp( home: Scaffold( appBar: AppBar(), // 추가 ), ); runApp(app); }짜잔~ 이런 타이틀바가 생긴걸 볼수 있다. 이걸 AppBar 라고 한다.그리고 아래 floating butt..
Flutter 시작하기. Flutter 카카오톡 오픈 채팅방 바로가기 : https://open.kakao.com/o/gsshoXJ Flutter는 구글에서 나온 모바일 프레임워크입니다. Reactive Native 와 비슷하다고 보면 될것 같습니다. 네이티브 성격을 가진 하이브리드 앱인 셈이죠.무엇보다 강력한 점은 각 플랫폼(Android, IOS)에 있는 대표 디자인 즉 메테리얼 디자인을 손쉽게 짤수가 있습니다.하지만 플랫폼별로 다르게 나올수가 있는데 그 이유는 메테리얼도 플랫폼에 맞게 바뀌어서 나올 수 있기 때문입니다.만약 IOS 에서 특유의 시스템을 이용하고 싶으면 쿠퍼티노 위젯을 사용하면 됩니다.그 외에도 안드로이드 스튜디어, 비쥬얼 스튜디어 코드등 통합 IDE 도 사용 가능한 점이 큰 메리트입..
GDG 부산 카페 바로가기상하이로 출국올해 처음 GDG 부산에 합류를 하게되었다. 부산에 마땅한 개발행사가 없고 특히나 수도권인 서울에 다 몰려있는 현실이 너무 안타까워서 나라도 나서자라는 마음에 시작하게 된 GDG 부산... 이리저리 착오끝에 구글 IO extended를 작게나마 진행했으며 다음 행사를 앞두고 있다. 그런 와중에 상하이에서 GDG Asia를 진행하니 신청하라고 공지를 봤다. 혹시나 하는 마음에 신청해보고 얼떨결에 뽑히게 되었다. 그렇게 나름 하나씩 준비를 해나가는 과정에서 같은달에 Google IO Extended 2018 Busan 을 개최를 하고 8월 마지막달에 드디어 GDG 아시아 분들이 모여있는 상해로 가게 되었다. 조은님께서 알려주신 유심을 구매를 따로 하고(완소) 입국을 하고..
Pm2를 이용한 Spring boot deployEC2에 노드 서비스를 배포 함에 있어서 forever와 pm2를 이용을 하는 편이다.Pm2는 슬랙이나 외부 연동도 좋아서 자주 이용되는 편이다.그래서 이번에 Spring boot 도 배포를 하는데 pm2 를 이용할 수 있을까 찾아보니 당연히 가능하다.우선 스프링 부트를 배포를 해보자.mvn package 그럼 war or jar 파일이 나올것이다.나온걸 서버로 올려놓고. 노드를 설치를 한다.나는 주로 nvm 을 이용해서 설치를 하는 편이다.https://medium.com/@jjeaby/nvm-node-%EC%84%A4%EC%B9%98-a4bcab00a5efhttps://github.com/creationix/nvm설치를 진행 한 다음 pm2를 설치를 하..
ou may need to try setting certain variables within your sessiontmp_table_sizemax_heap_table_sizeThese particular values may be too small for your DB Connection to fulfill the query efficiently. These can be set within as follows:To see what values these settings have currently do the following:SHOW VARIABLES LIKE 'max_heap_table_size';SHOW VARIABLES LIKE 'tmp_table_size';To set max_heap_table_s..
쿠폰 포함 ($11)ReactModern React with Redux - https://www.udemy.com/react-redux/?couponCode=4MORE1234Node with React: Fullstack Web Development - https://www.udemy.com/node-with-react-fullstack-web-development/?couponCode=4MORE1234The Complete React Native and Redux Course - https://www.udemy.com/the-complete-react-native-and-redux-course/?couponCode=4MORE1234React Native: Advanced Concepts - https:..
가변 인자를 보통 넣어서 사용시 ( ... )로 사용되는데 이를 Variadic 이라고 한다. 예를 보자. func sum(numbers ...int){ sum := 0 for _, num := range numbers { sum += num } return sum } sum(1,2,3) //6 sum([]int{1,2,3}...) //6 sum(1) //1Sum 함수는 int 인자값에 대한 가변적으로 가능하다. sum([]int{1,2,3}...) //6의 경우 뒤에 ... 을 붙여서 할수 있는데 더 예를 보자면func f(ids []int){ // } func service(id int){ f([]int{id}) } func service2(id []int){ f(id) }위를 Variadic 을 적..
apt-get update apt-get install python2.7 ln -s /usr/bin/python2.7 /usr/bin/python
Boltdb 연동공식 Github빠르고 효율적인 저레벨 DB 중 하나인 bolt db 이다. key, value 로 되어있고 byte로 값을 넣을 수 있다는 장점이 있다.우선 설치는$ go get github.com/boltdb/bolt/... // DB 여는 작업 package main import ( "log" "github.com/boltdb/bolt" ) func main() { // Open the my.db data file in your current directory. // It will be created if it doesn't exist. db, err := bolt.Open("my.db", 0600, nil) if err != nil { log.Fatal(err) } defer db..
반갑습니다. 개발자는 공부를 안하면 쉽게 도태되어 지고 흐름에 뒤쳐지게 됩니다.혹시 100일 뒤 돌아보면 그동안 뭐 했지 라는 후회를 하시고 계신가요?그럼 매일 15분씩이라도 공부하고 자기 계발을 하면 100일, 1년 후에 돌아보면 아주 커다란 자산이 되어 있을거라고 저는 믿고 있습니다. 여러분도 정말 얼마 안되는 15분이라는 시간을 자기계발에 쏟으시면 분명 멋진 개발자가 되실꺼라 믿고 있습니다. 응원해드리겠습니다. !! 전공 공부팀 1기 100일 완료 후기 바로 보기 이번 2기도 새롭게 인증방이 열리고 새로우신 분들과 진행을 하게 되었습니다. 그리고 새로운 방식의 인증으로 개발자 공부를 진행하고 있습니다.하지만 조금 정리가 안되어 있는 것 같아서 다시 한번 정리를 해보겠습니다. 슬랙주소 : every1..
안녕하세요. 블록체인 전공서적을 같이 읽어서 인증하는 스터디 모임을 개설했습니다. 전공 공부팀 카톡 오픈 채팅방 바로 가기처음 책으로는 비트코인, 블록체인과 금융의 혁신 책입니다. 원제로는 mastering bitcoin 1판 입니다. 현재 2판까지 나왔지만 번역은 아직 안된 상태입니다. http://www.yes24.com/24/Goods/22357437?Acode=101 책이 다소 두껍지만 내용은 정말 좋다고 생각합니다. 입문서로는 딱이라고 봅니다. 대상은 블록체인 처음 입문하시는 개발자분이거나 개념적으로 좀 더 공부를 하고 싶으신 분입니다.블록체인에 항상 관심만 있으신 분도 오셔서 같이 인증도 하시고 토론도 해보시는 자리가 되셨으면 합니다. 인증 방법은 카톡 오픈 채팅방으로 먼저 오십니다. ( 입장..
Golang 으로 CRUD Restfual Api 만들기최근 블록체인을 공부하면서 이더리움 코어를 보고 싶다는 생각이 자주 들었다. 그리고 하이퍼레저에서 스마트 계약 개발시 Go 로 짜고 있는 걸 보고 고랭을 배워야 겠다는 마음을 먹고 하나씩 보고 있습니다.언어를 제일 배우고 제일 먼저 해보는 건 무엇보다 게시판 하나 짜보는 거겠죠?그래서 Restful Api 를 먼저 구성해보고 화면단을 만들어서 해보도록 합니다.어설픈 TDD 방식으로 하나씩 짜보도록 하겠습니다.우선 Go 가 아직 설치가 안되신 분은 https://golang.org/dl/ 으로 가셔서 받으시길 바랍니다.그리고 환경 설정을 해줍니다.혹시 Gopath 와 Gopath bin 설정이 안되신 분은 여기 에서 따라해보시면 됩니다.현재 DB는 몽..
현재 매일 15분 이상 전공공부팀 제 2기를 시작했으며 관심있으신 분은 참가하셔서 같이 공부를 하시길 바랍니다. 매일 15분 전공공부팀 2기 안내글 바로가기 100일 성공 기록 목록들영어회화 매일 6문장씩 작성해서 인증하기매일 15분이상 독서 인증하기 최근 전공 팀 공부를 매일 15분이상(?)씩 해서 5월 초에 100일 성공을 했습니다. 이 공부팀에 대해서 간단하게 설명하면 매일 카톡 오픈 채팅방에 15분이상 공부한 내용을 인증을 하면 됩니다. 앱개발이 제 전문분야인데 웹이랑 블록체인을 주로 공부를 한 것 같네요. 로그들을 한번 정리를 해보았습니다. 수지아빠108일1일 / RxJava 그룹핑 예제 공부 / https://goo.gl/RfuQUY / 30분2일차 / 개인앱 개발 및 마켓 출시 완료 / 90..
출처 : https://stackoverflow.com/questions/29478751/how-to-cancel-an-emcascript6-vanilla-javascript-promise-chainWhile there isn't a standard way of doing this in ES6, there is a library called Bluebird to handle this.There is also a recommended way described as part of the react documentation. It looks similar to what you have in your 2 and 3rd updates.const makeCancelable = (promise) => { let ha..
https://ethereum.stackexchange.com/questions/28703/full-list-of-geth-terminal-commandsBy running geth and entering the start of each of the global objects I'm aware of I can get the following lists, but I won't mark this as the correct answer as I'm sure there is documentation out there somewhere.> eth.eth._requestManager eth.getBlockUncleCount eth.getWork eth.accounts eth.getCode eth.hashrate e..
5월 21일. 핫한 IT, 개발, Blockchain, 노마드 뉴스 TOP5 1. TOP 10 자바스크립트 에러 (5월 16일. code burst.) - 가장 흔한 자바스크립트 탑10 에러! - can not read property! - 어떻게 에러를 피하는지 팁 공개 2. 재택근무? 집에서 효율적으로 일하는 5가지 방법 (4월17일. Medium.) - 디지털노마드, 프리랜서라서 집에서 일하는 당신을 위한 팁 - 1번. 잠옷입고 일하지 마라 - 린이 추천합니다. 3. 봇을 만들며 알게된 7가지 레슨 (5월 18일. Hacker Noon.) - 트위터봇을 만든 개발자가 배운 7가지 레슨 - 1번. 타잎스크립트 까먹지마 4. 구글 자바스크립트 스타일 가이드 13가지 신박한 가이드 (3월 27일. fr..
윈도우 상에서 도커를 이용해서 몽고 DB 세팅윈도우상에서 몽고디비 설치시 가끔 오류 나는 부분이 있다. 그럼 설치도 안되고 개발도 안된다.그럴때 도커를 이용해서 빠르게 테스팅을 할수 있다.우선 도커를 켜서 다음 명령어를 하자.docker pull mongo docker run --name database -d -p 27017:27017 mongo --noauth --bind_ip=0.0.0.0 27017 포트에 0.0.0.0 으로 바인딩하는 문구이다.-noauth 는 아이디랑 비번없이 들어갈 수 있다.만약 설정시 아래와 같이 가능하다.docker run --name some-mongo -d mongo --auth docker exec -it some-mongo mongo admin db.createUse..