traders_free custom_top_html:no
default debug random = 2 / type = READ / detected = READ / doc_Srl = 10257432

안녕하세요.

쌩광부입니다.

 

아래 도표는 우리가 만들어야될 각각의 스크린을 표시했는데요.

 

Navigation.png

 

Welcome - 시작화면

MyWallet - 내 지갑

AddWallet - 지갑 생성하기

ImportWallet - 지갑 불러오기

WalletDetail - 지갑 상세보기

Transactions - 거래내역 보기

SendCoin/Token - 코인/토큰 보내기

그냥 제목만 봐도 각각의 화면이 어떤 역할을 하는지 아시겠죠?

 

#3. Navigation 완성하기

 

그럼 이번 강좌에서는 각각의 화면을 만들고 네비게이션으로 연결하는 방법을 알려드립니다.

먼저 추가로 필요한 패키지를 설치합니다.

 

C:\Users\YOUR_USERNAME\topwallet> npm install react-native-actionsheet --save

 

ActionSheet는 iOS에서 자주볼 수 있는 팝업 메뉴인데요.

원래 RN에서는 ActionSheetIOS를 기본적으로 지원하지만 문제는 Android에서는 사용할 수가 없어요.

그렇기 때문에 별도의 Android, iOS 공용 패키지인 react-native-actionsheet를 이용하지요.

react-native-actionsheet 패키지에 대한 자세한 설명은 아래 링크를 참고하세요.

https://github.com/beefe/react-native-actionsheet

 

자 이제 본격적으로 코딩을 해볼까요?

 

우선 아래와 같은 소스 파일들을 ./src/screen 폴더에 생성하세요.

mywallet.js, addwallet.js, importwallet.js, welletdetail.js, transactions.js, sendcoin.js, icon-button.js

 

맨 마지막에 icon-button.js 파일은 Icon 형태의 버튼을 표시하기 위해 필요합니다.

 

mywallet.js 파일을 아래와 같이 코딩합니다.

 

import React, { Component } from 'react';

import { View, Text, Button } from 'react-native';

import ActionSheet from 'react-native-actionsheet'

import { IconButton } from './icon-button';

 

class MyWalletScreen extends Component {

  static navigationOptions =({navigation}) => ({

    title: '내 지갑',

    headerRight: (

      <View style={{marginRight: 5}}>

      <IconButton onPress={() => navigation.getParam('showMenu')() } 

source={require('../img/ico-menu.png')} />

      </View>

    )

  });

 

  componentWillMount() {

    this.props.navigation.setParams({showMenu: () => this.ActionSheet.show()});

  }

 

  render() {

    return (

      <View style={{padding: 5}}>

        <Text style={{marginBottom: 10}}>내 지갑 화면</Text>

        <Button onPress={() => this.props.navigation.navigate('WalletDetail')} 

title="지갑 상세보기"/>

        <View style={{marginBottom: 10}}/>

    <Button onPress={() => this.props.navigation.navigate('Transactions')} 

title="거래내역 보기"/>

        <ActionSheet

          ref={o => this.ActionSheet = o}

          title={'메뉴를 선택하세요.'}

          options={['지갑 생성하기', '지갑 불러오기', '취소']}

          cancelButtonIndex={2}

          destructiveButtonIndex={99}

          onPress={(index) => {

            if(index == 0) this.props.navigation.navigate('AddWallet');

            else if(index == 1) this.props.navigation.navigate('ImportWallet');

          }}

        />

      </View>

    );

  }

}

 

export default MyWalletScreen;

 

한줄 한줄 설명하겠습니다.

 

import { View, Text, Button } from 'react-native';

필요한 UI Component 패키지들을 불러옵니다.

 

import ActionSheet from 'react-native-actionsheet'

ActionSheet를 사용하기 위해 불러오기를 했습니다.

 

import { IconButton } from './icon-button';

아이콘 버튼을 표시하기 위해 불러오기를 했는데요. 좀 뒤에 코딩합니다.

 

여기서 잠깐!

위에 2개의 import를 보시면 from 뒤에 ./가 있는게 있고 없는게 있고 그렇죠?

./가 있다는 것은 현재 내 소스 파일이 있는 폴더에서 지정된 파일을 찾는다는 얘기고요.

./가 없다면 미리 등록된 패키지들 중에서 찾아옵니다.

물론 같은 폴더의 있는 파일들을 불러올때는 ./를 사용하지 않아도 됩니다.

그러나 ./를 지정함으로써 명확하게 이 파일은 내 소스에서 있다고 명시해줘야 차후 설치된 패키지들과의 충돌을 막을 수 있습니다.

 

title: '내 지갑'

이 화면의 이름을 '내 지갑'이라고 출력합니다.

 

headerRight: (

  <View style={{marginRight: 5}}>

  <IconButton onPress={() => navigation.getParam('showMenu')() } source={require('../img/ico-menu.png')} />

  </View>

)

화면 네비게이션바에 우측(headerRight)에 메뉴 버튼을 만듭니다.

그리고 onPress 프로퍼티에 버튼이 눌렸을때 호출할 명령을 작성합니다.

source 프로퍼티에는 메뉴 아이콘을 넣습니다.

아이콘은 아래에서 불러와서 ./src/img 폴더에 넣습니다.

https://github.com/topmining/topwallet/blob/master/src/img/ico-menu.png

 

여기서 잠깐!

지난 강좌에서 설명했듯이 < >안에 표시되는 것들은 Component를 라고 하고요.

그 다음 style, onPress, source 들을 우리는 프로퍼티(속성)라고 부릅니다.

그리고 이런 것들을 총칭해서 props라고 합니다.

앞으로의 소스에 보시면 props 라는 표현을 많이 사용하게 되는데요.

전부 프로퍼티(속성)를 의미합니다.

이런 props는 해당 Component의 고유 속성이라고 보시면 되겠습니다.

결론적으로 props를 어떻게 설정하고 어떻게 변경하느냐에 따라서 모양이 바뀌거나 프로그램의 흐름이 변경되거나 하겠죠. ^^

 

onPress={() => navigation.getParam('showMenu')() }

Component가 눌렸을때 navigation.getParam을 호출해서 showMenu를 불러와서 호출한다는 의미인데요. 어렵죠?

react-navigation을 사용할 경우 Navigation에서 우리가 만드는 Screen의 특정 함수를 직접 호출할 수 없기 때문에 우리가 만든 함수를 Navigation의 params로 연결하고 Navigation은 params를 다시 불러서 함수를 호출합니다. 복잡한 과정이지만 또 지금은 이해가 잘 안가시겠지만.

그냥 그렇구나 하고 그대로 코딩하시면 되겠습니다.

 

componentWillMount()

Component가 화면에 그려지기 직전에 호출되는 함수입니다. 

 

this.props.navigation.setParams({showMenu: () => this.ActionSheet.show()});

이 Component의 props에서 navigation을 불러오고 거기에 showMenu 속성에 이 Component의 ActionSheet.show 함수를 지정합니다. 이건 또 뭔소리?

하나 하나 살펴보면

this 이건 지금 실행되고 있는 이 Component 자신을 의미합니다.

props 이건 위쪽에 설명했던 고유속성을 말하는 거고요.

navigation 이건 저희가 react-navigation을 사용하는데요. 그런 경우 각각의 Screen으로 만든 Component들은 props에 navigation 속성이 추가됩니다.

즉, navigation과 데이터를 주고 받기 위해서는 이 속성이 꼭 필요하겠죠.

더 궁금하셔도 그냥 코딩하세요. 위와 같은 표현은 지속적으로 나오기 때문에 그냥 그렇게 해야되는구나 생각하시면 됩니다.

물론 다른 방법도 있겠지만 저희는 초보니까요. ^^

 

render() 함수에서는 간략하게 이 화면이 '내 지갑 화면'이라는 것을 출력하고요.

 

<Button onPress={() => this.props.navigation.navigate('WalletDetail')} title="지갑 상세보기"/>

지갑 상세보기 화면으로 이동하기 위한 버튼입니다.

 

<Button onPress={() => this.props.navigation.navigate('Transactions')} title="거래내역 보기"/>

거래내역 보기 화면으로 이동하기 위한 버튼입니다.

 

<ActionSheet

  ref={o => this.ActionSheet = o}

  title={'메뉴를 선택하세요.'}

  options={['지갑 생성하기', '지갑 불러오기', '취소']}

  cancelButtonIndex={2}

  destructiveButtonIndex={99}

  onPress={(index) => {

if(index == 0) this.props.navigation.navigate('AddWallet');

else if(index == 1) this.props.navigation.navigate('ImportWallet');

  }}

/>

 

ActionSheet를 화면에 표시하기위한 코딩입니다.

지갑 생성하기, 지갑 불러오기 메뉴를 표시하고 각각을 클릭했을때 각각의 화면으로 이동하는 코딩이 되어있습니다.

나중에 실행해 보시면 아! 이런거구나 알게됩니다.

onPress에는 버튼이 눌렸을때 각각 어느 화면으로 이동하는지를 설정합니다.

 

this.props.navigation.navigate('AddWallet')

AddWallet 화면으로 이동하라는 명령입니다.

위와 같이 this.props.navigation.navigate 함수를 호출하면 간단하게 다른 화면으로 이동할 수 있습니다.

 

icon-button.js 파일은 아래와 같이 코딩합니다.

 

import React from 'react';

import { StyleSheet, TouchableHighlight, Image } from 'react-native';

 

export const IconButton = ({ source, onPress, style }) => (

    <TouchableHighlight style={[styles.container, style]} onPress={onPress}

        underlayColor="#d0d0d0">

        <Image style={styles.image} source={source} />

    </TouchableHighlight>

);

 

const styles = StyleSheet.create({

  container: {

    width: 42,

    height: 42,

    alignItems: 'center',

    justifyContent: 'center',

    borderRadius: 21

  },

  image: {

    width: 32,

    height: 32

  }

});

 

react-native에 기본적인 아이콘 버튼이 없기 때문에 별도로 Component를 제작했습니다.

 

const styles = StyleSheet.create

이곳을 보시면 버튼의 모양을 정의하는 내용이 포함됩니다.

style에 대한 내용은 차후에 다시 설명하도록 하겠습니다.

 

addwallet.js, importwallet.js, welletdetail.js, transactions.js, sendcoin.js 파일의 소스는 깃허브에서 확인하시고 그대로 코딩하시면 됩니다.

https://github.com/topmining/topwallet/tree/master/src/screen

 

여기까지해서 각각의 페이지들을 만들어봤는데요.

이 상태로 실행해봤자 맨 첫 'MyWallet(내 지갑)' 페이지를 연결해주지 않았기 때문에 재대로 실행되지 않겠죠.

 

기존에 만들었던 App.js 파일을 열어 아래와 같이 수정합니다.

 

import React from 'react';

import { createStackNavigator } from 'react-navigation';

 

import WelcomeScreen from './src/screen/welcome';

import MyWalletScreen from './src/screen/mywallet';

import AddWalletScreen from './src/screen/addwallet';

import ImportWalletScreen from './src/screen/importwallet';

import WalletDetailScreen from './src/screen/welletdetail';

import TransactionsScreen from './src/screen/transactions';

import SendCoinScreen from './src/screen/sendcoin';

 

const App = createStackNavigator({

  Welcome: { screen: WelcomeScreen },

  MyWallet: { screen: MyWalletScreen },

  AddWallet: { screen: AddWalletScreen },

  ImportWallet: { screen: ImportWalletScreen },

  WalletDetail: { screen: WalletDetailScreen },

  Transactions: { screen: TransactionsScreen },

  SendCoin: { screen: SendCoinScreen },

},

{

  initialRouteName: "Welcome",

  cardStyle: { backgroundColor: '#FFFFFF' },

});

 

export default App;

 

빨강색으로 표시된 부분이 추가된 부분인데요.

Navigation에 각각의 페이지를 등록해줘야 합니다.

 

이제 ./src/screen 폴더에 있는 welcome.js 파일을 열어 아래와 같이 수정합니다.

  

import React, { Component } from 'react';

import { View, Image } from 'react-native';

import { StackActions, NavigationActions } from 'react-navigation';

 

class WelcomeScreen extends Component {

  static navigationOptions =({navigation}) => ({

    title: "",

    headerTransparent: true

  });

 

  componentDidMount() {

    setTimeout(() => this.gotoMyWallet(), 1000);

  }

 

  gotoMyWallet() {

    const resetAction = StackActions.reset({

      index: 0,

      actions: [NavigationActions.navigate({ routeName: 'MyWallet' })],

    });

    this.props.navigation.dispatch(resetAction);

  }

 

  render() {

    return (

      <View style={{alignItems: 'center', justifyContent: 'center', flex: 1}}>

        <Image source={require('../img/ico-esn.png')} />

      </View>

    );

  }

}

 

export default WelcomeScreen;

 

마찬 가지로 빨강색으로 표시된 부분이 추가된 부분인데요.

 

componentDidMount()

Component가 화면에 그려진 이후 호출되는 함수인데요.

 

여기서 잠깐!

위에 설명했던 componentWillMount와 componentDidMount는 어떤 차이가 있을까요.

둘다 화면이 그려질때 호출되는 함수인데요.

componentWillMount은 화면이 그려지기 이전에 호출됩니다. 

componentDidMount은 화면이 그려진 이후에 호출됩니다.

 

setTimeout(() => this.gotoMyWallet(), 1000);

1000ms(1초) 뒤에 gotoMyWallet 함수를 호출합니다.

 

gotoMyWallet() {

  const resetAction = StackActions.reset({

    index: 0,

    actions: [NavigationActions.navigate({ routeName: 'MyWallet' })],

  });

  this.props.navigation.dispatch(resetAction);

}

원래 this.props.navigation.navigate 함수를 호출해 다른 화면으로 이동한다고 설명했는데요.

여기서는 this.props.navigation.dispatch 함수를 이용해 이제 다시 뒤로 돌아올 필요가 없다고 지정하는 것입니다.

StackActions.reset을 이용해 Navigation 흐름을 삭제하고 MyWallet으로 이동합니다.

즉, WelcomeScreen은 다시 되돌아갈 이유가 없기 때문이죠.

 

만약 

gotoMyWallet() {

  this.props.navigation.navigate('MyWallet');

}

으로 코딩하고 실행하면 어떤 상황이 발생되는지는 직접 확인해보시면 좋겠네요.

 

이제 가상 머신을 뛰우고 실행을 해보겠습니다.

 

C:\Users\YOUR_USERNAME\topwallet> react-native run-android

 

버튼들을 하나씩 클릭해 보시면 아래와 같은 화면들을 볼 수 있습니다.

 

AllScreen.png

 

각 화면들에는 뒤로가기 버튼에 대한 어떠한 코딩도 없는데 희한하게 잘 작동합니다.

바로 react-navigation을 이용했기 때문에 기본적으로 뒤로가기 기능이 작동되는 것이지요.

언밀하게 저희는 StackNavigation기능을 이용한 것인데요.

그외에도 몇 가지 Navigation기능이 더 있습니다. 물론 저희는 이것으로 충분하지요. ^^

 

Tip. 가상 머신에서 RN 디버깅 단축키

가상 머신 실행창에서 Ctrl+M 버튼을 누르면 다양한 옵션을 사용 할 수 있는데요.

그중에 Enable Live Reload, Enable Hot Reloading 기능을 활성화하면 소스 파일이 저장 될때마다 자동으로 빌드되어 실행됩니다.

실제 개발시에는 이것을 활성화하고 코딩을 하면 매우 편리하겠죠.

만약 소스 코드에 오류가 있으면 빨간 배경의 오류창을 볼 수 있기 때문에 바로 바로 소스를 수정 할 수 있겠죠.  ^^

 

오늘 강좌는 여기까지입니다.

이전 강좌를 보고 싶으시면 제 블로그를 방문해주세요.

https://www.ddengle.com/@TopMining

좋아요 많이 부탁합니다.


[알림: 이 게시글은 관리자에 의해 ''에서 '트레이더스'로 이동되었습니다]
27,934
댓글 16
  • profile
    굿터치 2018.11.17 23:28
    문과출신이 광부님 작성하신 글을 백퍼 이해하기위해서는 어떤 학습이나 학원코스를 익히면 좋을까요?
    이해가 안돼서 무지 답답합니다.ㅠ
  • profile
    쌩광부 2018.11.17 23:43
    @굿터치
    저도 학원을 다녀본적이 없어서 뭐라 말씀을 드릴수 없네요.
    힘드셔도 그냥 1편 부터 따라 하시면 됩니다.
    뭐든 그렇지만 프로그래밍도 정말 많은 시간을 투자해야 되겠죠. ^^
  • profile
    고독한코인가 2018.11.17 23:39
    멋진강좌입니다. 이 강좌는 땡글과 쌩광부님이 유일한것 같습니다.
  • profile
    ddengle BOT 2018.11.17 23:39
    @고독한코인가
    고독한코인가님 축하합니다. 4 보너스 캐시에 당첨되셨습니다.!!
  • profile
    쌩광부 2018.11.17 23:44
    @고독한코인가
    좋은 말씀 감사합니다.
    좋은 말씀 쓰시니 보너스 캐시도 당첨되네요. ^^
  • profile
    고독한코인가 2018.11.17 23:45
    @쌩광부
    ㅋㅋㅋㅋ 그러네용! 좋은밤 되십시오^^
  • ?
    Investor 2018.11.18 00:36
    좋은 자료 감사합니다 열심히 공부해보겠습니다
  • profile
    ddengle BOT 2018.11.18 00:36
    @Investor
    Investor님 축하합니다. 4 보너스 캐시에 당첨되셨습니다.!!
  • profile
    청록 2018.11.18 01:19
    너무 어려운 코드들이 있어 이해 불가입니다.
  • profile
    abcoin 2018.11.18 07:59
    좋은 강좌입니다. 어렵지만 최선을 다해 공부합니다. 감사합니다.
  • ?
    존버중 2018.11.18 08:33
    늘 감사하게 보고있습니다. ^^
  • ?
    nadana 2018.11.18 11:37
    시도하고 성공하면 성공작품을 올리겠습니다.~~^^
  • ?
    nadana 2018.11.18 23:00
    헉 자꾸 빨간 화면만 나타나네요 ㅜㅜ
  • profile
    쌩광부 2018.11.18 23:51
    @nadana
    어딘가에 오류가 있다는 건데요.
    github에서 정확하게 확인해 보세요.
  • ?
    남다른풀빵생각 2018.11.18 23:31
    좋은 강좌 감사합니다!!!
  • ?
    김상가 2018.11.23 10:29
    좋아요 눌렀어용~

List of Articles
번호 제목 추천 수 조회 수 글쓴이 날짜
공지 [땡글운영위] 이사진 구성원 변경 공지 7 file 13 725
땡글운영위
2019.09.03
공지 로그인이 안되시는 분은 문의해주시기 바랍니다. 3 4 1561
땡글개발자
2019.08.21
공지 개인 정보 유출에 따른 사과문 54 file 8 3387
땡글개발자
2019.08.21
17479 살까요? 팔까요? &lt;1일차&gt;   어메, 흑삼병을 맞아부렀네 이건 기계적 매도지   &lt;2일차&gt;   헉, 이게 뭐시다냐   &lt;3일차&gt; 와, 이럴수가   &lt;4일차&gt; 그럼그렇지 ㅎㅎ 넌 뒤졌어   &lt;5일차&gt; 패닉상태   &lt;6일차&gt; 분노의 심정으로 바라봄   &lt;7... 9 file 3 773
굿터치
2018.11.29
17478 11월 29일 ~ 11월 30일 코인호재 및 코인일정 11월 29일   모나코인 (XMCC) - MIB 서밋2   스트라티스(STRAT) - 블록체인 엑스포 CA   제네시스비전(GVT) - 런던 일정   11월 30일   비트코인(BTC) - CME 11월 만기일   에이다(ADA) - Metaps에 통합   이더리움 ... 3 557
찐이짜
2018.11.29
17477 11월 29일 코인 주요일정      [11월 29일 암호화폐 업계 주요 일정]       1. NKN코인(NKN, 시가총액 406위), 미국 캘리포니아서 밋업 진행   2. 스텔라(XLM, 시가총액 5위), 미국 뉴욕서 밋업 진행   3. 스트리머데이터코인(DATA, 시가총액 ... 1 277
블루코인
2018.11.29
17476 또 팍팍 뛰고 있네요~!!! 이번 상승장 좋은데요~ 또 팍팍 올라갑니다~ 제발 이 분위기를 이어가길~       앗싸~           ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에 적어주... 68 file 10 2618
크림메일
2018.11.29
17475 이란/랜섬웨어/미재무부----관찰 포인트     2015년부터 이란의 해커들이 비트코인 탈취를 위해 공격을 준비하고 있다는 뉴스가 나왔었는데요 최근 랜섬웨어가 기승을 부리면서 이란해커와 연루된 비트코인 두개주소를 식별했다고 미국재무부가 발표를 했습... 3 file 3 523
굿터치
2018.11.29
17474 이번 상승은...   챠트에서 보듯이.. 빗썸 자전거 이후 떡락한 모습입니다. 그리고 상승하는 모습인데요..   이제 떨어 질 만큼 떨어졌다 봐도 되겠습니다.   버거형들이 많이들 사주네요..   즐트....ㅋㅋ                        ... 24 file 9 2452
청록
2018.11.29
17473 공부해 보아요.   출처: https://coinpan.com/index.php?mid=coin_info&amp;page=2&amp;document_srl=112671885   세력의 매매방식과 통정거래에 대해 쉽게 잘 설명해 두었네요 매매하시는 분 중 모르는 분들도 계실거 같아 꼭 보심 ... 22 file 19 1602
카네모치
2018.11.28
17472 가뭄의 단비   얼마만에 오는 상승인지,    믿기지 않을 정도로 하락에 단련되어 있었네요...   만족할 순없지만, 정말 가뭄의 단비오듯 ....촉촉한 느낌입니다.           가뭄의 단비가....... 소나기. 태풍이 되길 기원해 봅니... 13 file 9 1274
험험
2018.11.28
17471 가즈아~!! &lt;p&gt;이 얼마만에 보는 대장주 빔인가요~??&lt;br /&gt; 눈물이 ㅠㅠ&lt;br /&gt; 전고점 향해 가즈아~!!!&lt;/p&gt; 7 file 5 536
삽질로벌어
2018.11.28
17470 비트코인 에스브이도 무시못한다던데.. &lt;p&gt;비트코인을 던지는 놈이 있다보니..&lt;br /&gt; 전체시세를 좌지우지 하니, 비캐보다 더 파워가 있지 않나요?&lt;br /&gt; 지금 시세가 엎치락 뒷치락 하고 있지만.. 아무래도 에스브이가심상찮은데... 어떻게 생각하세요??&lt;/p&gt; 7 1216
슈퍼비트
2018.11.28
17469 [18.11.28] 5천만원으로 거래소 오픈! 100개까지 국내 거래소가 늘었다? 다양한 소식들!     하양이아빠입니다.   ☆ 오늘의 Pick 뉴스 가상화폐 시장 죽어가는데 국내 거래소 100개까지 늘었다 '5,000만원이면 암호화폐 거래소 연다?'...안전장치는 전무   =&gt; 오늘은 답답한 상황과 더불어 말도 안되는 소... 17 file 13 1429
하양이아빠
2018.11.28
17468 비트코인 지키자 ~!   나라가 망하면 백성은 노예가 됩니다.   비트코인 망하면 개미들은 앞날이 없습니다.   티깍티깍 쌈질말고, 울먹울먹 걱정만 말고 비트코인과 울 개미들 사는 크립토시장을 지켜냅시다.   화잇팅 ! 5 5 654
모봉
2018.11.28
17467 [순간포착]허매수지만... ㄷㄷㄷ 버거스탈..   11억이 넘는돈인데..ㅠㅠ                         ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에 적어주세요.   비트코인 암호화화폐 커뮤니티 땡... 4 file 736
청록
2018.11.28
17466 굿 가이 찰리 리.. ㅠ   Charlie Lee [LTC ⚡]‏Verified account @SatoshiLite (2017.12.11) FollowingFollowing @SatoshiLite More Ok, sorry to spoil the party, but I need to reign in the excitement a bit... Buying LTC is extremel... 14 file 6 2303
김혁
2018.11.28
17465 자 오늘은 달려볼까요~ ↑↑↑↑↑↑↑↑ 자~! 오늘은 달려요~~~!!!   물론 아직 상황은 최악입니다....ㅠㅠ   어쨌든 오늘은 좋은 분위기로 달아오르고 있는듯 하네요~ 오늘 부터는 쭉쭉 달렸으면 좋겠습니다~   자~ 이제 문이 열렸으니~   몸은 빈약해 졌지... 19 file 7 1212
크림메일
2018.11.28
17464 비트 137개 순간 매집...ㅎㄷㄷ                         ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에 적어주세요.   비트코인 암호화화폐 커뮤니티 땡글~ 땡글~ -----------------... 7 file 4 1581
청록
2018.11.28
17463 블록체인 – 위조 상품을 방지 하는 기록    일반적인 리튬 충전지는 일정횟수를 이용하고 나면 급격히 효율이 떨어집니다. 이때문에 저는 얼마전 인터넷 쇼핑몰로부터 핸드폰 배터리를 구매하였죠.  여기서 몇가지 문제가 발생합니다. 배터리는 정품을 구분... 10 file 17 1066
틴톰
2018.11.28
17462 갈때는 조용히. 올때는 조심히.     유시민의 말대로 암호화폐가 망했다고 생각하는 분들은 빨리 떠나시는게 서로서로 좋을거 같습니다.   떠나면서 &quot;같이 안떠날래?? 나만 떠나는거 같아 왠지 불안한데??&quot; 이런 말씀 하지 마시고 조용히들 가셔주세... 36 18 1220
더라
2018.11.28
17461 [DeadCatBounce] 181128 비트코인 차트 (181127 어제자 분석입니다) 매도세와 매수세가 부딛히는며 가격은 수렴의 형태로 고점을낮추고 저점을 높히고있으며 이 이탈방향에 시장이 민감하게 반응할수 있으니 대응이 필요하다는 입장이었습니다.   --------... 2 file 11 519
DeadCatBounce
2018.11.28
17460 하양이아빠의 암호화폐이야기 <71.선물거래란? 72.선물거래 용어 - CME와 CBOE란?>   하양이아빠의 정말 쉬운 암호화폐이야기 &lt;No.36&gt;   71.선물거래란? 72.선물거래 용어 - CME와 CBOE란?   하양이아빠입니다.    블록체인과 암호화폐를 쉽게 이해하기 어려운 초보자 분들을 위해 작은 도움이 되고... 10 file 10 699
하양이아빠
2018.11.28
목록
Board Pagination Prev 1 ... 144 145 146 147 148 149 150 151 152 153 ... 1022 Next
/ 1022

개인 정보 유출에 따른 안내

개인정보 유출에 따른 사과문

https://www.ddengle.com/board_free/11420106

8월20일 땡글 해킹사고 경과 보고

https://www.ddengle.com/board_free/11420345

로그인이 안되시는 분

https://www.ddengle.com/board_free/11420465
8월18일~20일 해커에 의해 땡글 사이트에서 땡글 회원님들의 아이디 및 비밀번호가 유출되고 있음을 발견하였습니다.
더이상 피해가 발생하지 않도록 조치된 상태이나 일부 사용자의 개인정보가 유출되었으며, 해커는 추가적으로 사용자 정보를 불법적으로 공개하겠다고 합니다.
  • 최근에 접속한 사용자의 경우 ID와 비번이 유출되었을 가능성이 높습니다. 최대 비번을 꼭 바꿔주시기 바랍니다. (특히 8월부터 8월21일까지)
  • 최근에 접속하지 않은 사용자의 경우에도 해커는 사용자 정보를 입수하여 그 일부 정보를 불법적으로 공개하였습니다.
  • 해커에 의한 사용자 도용을 방지하고자, 최근 수개월간 비번 변경을 하지 않은 약 1만8천명의 사용자를 이용정지시켰습니다.
이 글을 보시는 땡글 유저분은 자신이 계정이 정지된 상태라면 [email protected] 혹은 [email protected] 으로 메일주셔서 자신임을 간단히 인증하여 다시 계정을 활성화시키는 해킹 안내메일을 받으시기 바라며, 혹은 기존 계정 삭제 요청을 해주시기 바랍니다.
Close