Ecoer Logo

@nbkmundotech

33

Aulas de desenvolvimento de software online

steemit.com/@nbkmundotech
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS61.08%
Net Worth
0.036USD
STEEM
0.060STEEM
SBD
0.045SBD
Effective Power
5.008SP
├── Own SP
0.185SP
└── Incoming Deleg
+4.822SP

Detailed Balance

STEEM
balance
0.060STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.000STEEM
STEEM POWER
Own SP
0.185SP
Delegated Out
0.000SP
Delegation In
4.822SP
Effective Power
5.008SP
Reward SP (pending)
0.127SP
SBD
sbd_balance
0.000SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.045SBD
{
  "balance": "0.060 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.000 STEEM",
  "vesting_shares": "301.327755 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "7842.332051 VESTS",
  "sbd_balance": "0.000 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "0.045 SBD",
  "conversions": []
}

Account Info

namenbkmundotech
id1131553
rank242,967
reputation7008751971
created2018-09-06T05:30:54
recovery_accountsteem
proxyNone
post_count50
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2019-06-10T01:56:57
last_root_post2019-06-10T01:56:57
last_vote_time1970-01-01T00:00:00
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power0
delayed_votes0
balance0.060 STEEM
savings_balance0.000 STEEM
sbd_balance0.000 SBD
savings_sbd_balance0.000 SBD
vesting_shares301.327755 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares7842.332051 VESTS
reward_vesting_balance253.881446 VESTS
vesting_balance0.000 STEEM
vesting_withdraw_rate0.000000 VESTS
next_vesting_withdrawal1969-12-31T23:59:59
withdrawn0
to_withdraw0
withdraw_routes0
savings_withdraw_requests0
last_account_recovery1970-01-01T00:00:00
reset_accountnull
last_owner_update1970-01-01T00:00:00
last_account_update2018-09-08T03:07:39
minedNo
sbd_seconds0
sbd_last_interest_payment1970-01-01T00:00:00
savings_sbd_last_interest_payment1970-01-01T00:00:00
{
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM6q7HUyECuQNsEifebVyx5rcirnh1RmEd8yhmpm7uSSdshCLomB",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "balance": "0.060 STEEM",
  "can_vote": true,
  "comment_count": 0,
  "created": "2018-09-06T05:30:54",
  "curation_rewards": 0,
  "delegated_vesting_shares": "0.000000 VESTS",
  "downvote_manabar": {
    "current_mana": 2035914951,
    "last_update_time": 1779078084
  },
  "guest_bloggers": [],
  "id": 1131553,
  "json_metadata": "{\"profile\":{\"name\":\"NBK Mundo Tech\",\"about\":\"Aulas de desenvolvimento de software online\",\"website\":\"https://www.youtube.com/channel/UC0leK16nPQYAErHagb8-eEg\",\"profile_image\":\"https://cdn.steemitimages.com/DQme5LrKF79yK4GJxAq37SKhiZhrofXSXLgARXZRCdaWzdd/nbkmundotech_thumb128.png\"}}",
  "last_account_recovery": "1970-01-01T00:00:00",
  "last_account_update": "2018-09-08T03:07:39",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_post": "2019-06-10T01:56:57",
  "last_root_post": "2019-06-10T01:56:57",
  "last_vote_time": "1970-01-01T00:00:00",
  "lifetime_vote_count": 0,
  "market_history": [],
  "memo_key": "STM4zaQ2y9uE3Hvhoe8Hfc152FmbuwZYhJa8D1LegRCn3itKDDCrE",
  "mined": false,
  "name": "nbkmundotech",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "other_history": [],
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM63escPs2eC5Hs6cXpypLRGFYNLpJvR44RQ61mcuvabaT7ob1BD",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "pending_claimed_accounts": 0,
  "post_bandwidth": 0,
  "post_count": 50,
  "post_history": [],
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM5ayb2wPNpkMcMVZbxWU1oMoFs7CjzvgEn6tDP5fDLwSZMi679P",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting_json_metadata": "{\"profile\":{\"name\":\"NBK Mundo Tech\",\"about\":\"Aulas de desenvolvimento de software online\",\"website\":\"https://www.youtube.com/channel/UC0leK16nPQYAErHagb8-eEg\",\"profile_image\":\"https://cdn.steemitimages.com/DQme5LrKF79yK4GJxAq37SKhiZhrofXSXLgARXZRCdaWzdd/nbkmundotech_thumb128.png\"}}",
  "posting_rewards": 348,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "proxy": "",
  "received_vesting_shares": "7842.332051 VESTS",
  "recovery_account": "steem",
  "reputation": "7008751971",
  "reset_account": "null",
  "reward_sbd_balance": "0.045 SBD",
  "reward_steem_balance": "0.000 STEEM",
  "reward_vesting_balance": "253.881446 VESTS",
  "reward_vesting_steem": "0.127 STEEM",
  "savings_balance": "0.000 STEEM",
  "savings_sbd_balance": "0.000 SBD",
  "savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_sbd_seconds": "0",
  "savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "sbd_balance": "0.000 SBD",
  "sbd_last_interest_payment": "1970-01-01T00:00:00",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "2018-09-22T19:58:33",
  "tags_usage": [],
  "to_withdraw": 0,
  "transfer_history": [],
  "vesting_balance": "0.000 STEEM",
  "vesting_shares": "301.327755 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "vote_history": [],
  "voting_manabar": {
    "current_mana": "8143659806",
    "last_update_time": 1779078084
  },
  "voting_power": 0,
  "withdraw_routes": 0,
  "withdrawn": 0,
  "witness_votes": [],
  "witnesses_voted_for": 0,
  "rank": 242967
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
steemdelegated 4.822 SP to @nbkmundotech
2026/05/18 04:21:24
delegateenbkmundotech
delegatorsteem
vesting shares7842.332051 VESTS
Transaction InfoBlock #106148348/Trx 97e5f79e26cb81c97b73cdd07cbf501aae561e40
View Raw JSON Data
{
  "block": 106148348,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "7842.332051 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-05-18T04:21:24",
  "trx_id": "97e5f79e26cb81c97b73cdd07cbf501aae561e40",
  "trx_in_block": 2,
  "virtual_op": 0
}
steemdelegated 3.155 SP to @nbkmundotech
2026/05/12 20:29:15
delegateenbkmundotech
delegatorsteem
vesting shares5130.121646 VESTS
Transaction InfoBlock #105995644/Trx 7deafee80dcd2de0604133d20b2b169699485d6a
View Raw JSON Data
{
  "block": 105995644,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "5130.121646 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-05-12T20:29:15",
  "trx_id": "7deafee80dcd2de0604133d20b2b169699485d6a",
  "trx_in_block": 1,
  "virtual_op": 0
}
steemdelegated 4.830 SP to @nbkmundotech
2026/04/26 03:35:51
delegateenbkmundotech
delegatorsteem
vesting shares7854.847807 VESTS
Transaction InfoBlock #105515884/Trx d2ff0271e4f624313632f4af100b48d31fe5023d
View Raw JSON Data
{
  "block": 105515884,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "7854.847807 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-04-26T03:35:51",
  "trx_id": "d2ff0271e4f624313632f4af100b48d31fe5023d",
  "trx_in_block": 3,
  "virtual_op": 0
}
steemdelegated 3.180 SP to @nbkmundotech
2026/01/23 18:49:24
delegateenbkmundotech
delegatorsteem
vesting shares5171.668465 VESTS
Transaction InfoBlock #102865017/Trx ba6ce536bffb4529935d36251f746d40b5f2eeb3
View Raw JSON Data
{
  "block": 102865017,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "5171.668465 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-01-23T18:49:24",
  "trx_id": "ba6ce536bffb4529935d36251f746d40b5f2eeb3",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 3.281 SP to @nbkmundotech
2024/12/17 14:01:03
delegateenbkmundotech
delegatorsteem
vesting shares5335.887662 VESTS
Transaction InfoBlock #91311262/Trx ee162acd9b6d56790fb99146bdf0183d5e42c745
View Raw JSON Data
{
  "block": 91311262,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "5335.887662 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2024-12-17T14:01:03",
  "trx_id": "ee162acd9b6d56790fb99146bdf0183d5e42c745",
  "trx_in_block": 4,
  "virtual_op": 0
}
steemdelegated 3.385 SP to @nbkmundotech
2023/11/14 05:42:39
delegateenbkmundotech
delegatorsteem
vesting shares5505.021194 VESTS
Transaction InfoBlock #79865430/Trx cab96343b29a3bbab3294aaf5ca5d090fc4388e0
View Raw JSON Data
{
  "block": 79865430,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "5505.021194 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-11-14T05:42:39",
  "trx_id": "cab96343b29a3bbab3294aaf5ca5d090fc4388e0",
  "trx_in_block": 4,
  "virtual_op": 0
}
steemdelegated 5.191 SP to @nbkmundotech
2023/09/22 08:05:51
delegateenbkmundotech
delegatorsteem
vesting shares8441.929980 VESTS
Transaction InfoBlock #78360123/Trx 435fdc83f205a5c0e9d6a45e87b4b98529b38ad3
View Raw JSON Data
{
  "block": 78360123,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "8441.929980 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-09-22T08:05:51",
  "trx_id": "435fdc83f205a5c0e9d6a45e87b4b98529b38ad3",
  "trx_in_block": 2,
  "virtual_op": 0
}
steemdelegated 5.328 SP to @nbkmundotech
2022/11/03 15:51:57
delegateenbkmundotech
delegatorsteem
vesting shares8663.981418 VESTS
Transaction InfoBlock #69118232/Trx 1117a70d41a0d4dc3b4e1252ed035775093f402e
View Raw JSON Data
{
  "block": 69118232,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "8663.981418 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-11-03T15:51:57",
  "trx_id": "1117a70d41a0d4dc3b4e1252ed035775093f402e",
  "trx_in_block": 8,
  "virtual_op": 0
}
steemdelegated 5.463 SP to @nbkmundotech
2022/01/17 21:14:54
delegateenbkmundotech
delegatorsteem
vesting shares8884.089019 VESTS
Transaction InfoBlock #60821701/Trx 3dc214b0424de4833b0e7cecfca727151819d5bc
View Raw JSON Data
{
  "block": 60821701,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "8884.089019 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-01-17T21:14:54",
  "trx_id": "3dc214b0424de4833b0e7cecfca727151819d5bc",
  "trx_in_block": 20,
  "virtual_op": 0
}
steemdelegated 5.576 SP to @nbkmundotech
2021/06/14 04:30:57
delegateenbkmundotech
delegatorsteem
vesting shares9068.283307 VESTS
Transaction InfoBlock #54612137/Trx e00b679ca07de3747a3426160dc142fb928293b7
View Raw JSON Data
{
  "block": 54612137,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "9068.283307 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-06-14T04:30:57",
  "trx_id": "e00b679ca07de3747a3426160dc142fb928293b7",
  "trx_in_block": 9,
  "virtual_op": 0
}
nbkmundotechpublished a new post: 34uele0i
2021/02/11 00:16:42
authornbkmundotech
body<center><a href='https://d.tube/#!/v/nbkmundotech/34uele0i'><img src='https://ipfs.io/ipfs/QmXe8V8mgnAec7K14eFn13YL3CLWkUxmwj9Yi2JvQA5tja'></a></center><hr> Confira o Curso de React Native para Iniciantes: https://www.udemy.com/aplicativos-moveis-com-o-react-native Aprenda o conceito de Selector (seletor) no Redux. Demonstração de como criar seletores para acessar o estado do aplicativo com React e Redux. Tópico relacionado ao react-redux, connect, mapStateToProps, reselect. Assista a série inteira aqui: https://www.youtube.com/watch?v=Ud2lp4Hrb10&list=PLUbb2i4BuuzDC2mvVwiqokO2ReWb6qSYI <hr><a href='https://d.tube/#!/v/nbkmundotech/34uele0i'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/QmPtpvCwEN9MYfDCiVZwWJQNuZgcsT7Fu8yze5FYUzsWPH'> ▶️ IPFS</a>
json metadata{"video":{"app":"dtube/0.8","videoId":"QmPtpvCwEN9MYfDCiVZwWJQNuZgcsT7Fu8yze5FYUzsWPH","providerName":"IPFS","title":"O Conceito de Selector (Seletor) (Aula React & Redux)","duration":"342.75","thumbnailUrl":"https://snap1.d.tube/ipfs/QmVAHi2fHhWCXdGAyh2QX9r3XzoZTSMY3V7TiZ3JsA6Nbs","ipfs":{"snaphash":"QmVAHi2fHhWCXdGAyh2QX9r3XzoZTSMY3V7TiZ3JsA6Nbs","spritehash":"QmcYZqCGSQwDBctFpj8TWjQe7cgK991UfwtGjLLeRY1HFu","videohash":"QmPtpvCwEN9MYfDCiVZwWJQNuZgcsT7Fu8yze5FYUzsWPH","video240hash":"QmYMXX4euvbWs95NXLiucJTYRmeKnpd7hi44aciQZJRg2e","video480hash":"QmeKzDwBJyDQVEdaAznJ9T4qwhuvVCFiVxKch4TEcXDEGi"},"tags":["dtube","redux","seletor","tutorial","pt"],"desc":"Aprenda o conceito de Selector (seletor) no Redux. Demonstração de como criar seletores para acessar o estado do aplicativo com React e Redux. Tópico relacionado ao react-redux, connect, mapStateToProps, reselect.\n\nAssista a série inteira aqui: https://www.youtube.com/watch?v=Ud2lp4Hrb10&list=PLUbb2i4BuuzDC2mvVwiqokO2ReWb6qSYI","filesize":""},"tags":["dtube","redux","seletor","tutorial","pt"],"app":"dtube/0.8"}
parent author
parent permlinkdtube
permlink34uele0i
titleO Conceito de Selector (Seletor) (Aula React & Redux)
Transaction InfoBlock #51106027/Trx 44ba3dd9d471fa2a72902b9db799ba511e07e8f1
View Raw JSON Data
{
  "block": 51106027,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "<center><a href='https://d.tube/#!/v/nbkmundotech/34uele0i'><img src='https://ipfs.io/ipfs/QmXe8V8mgnAec7K14eFn13YL3CLWkUxmwj9Yi2JvQA5tja'></a></center><hr>\n\nConfira o Curso de React Native para Iniciantes:\nhttps://www.udemy.com/aplicativos-moveis-com-o-react-native\n\nAprenda o conceito de Selector (seletor) no Redux. Demonstração de como criar seletores para acessar o estado do aplicativo com React e Redux. Tópico relacionado ao react-redux, connect, mapStateToProps, reselect.\n\nAssista a série inteira aqui: https://www.youtube.com/watch?v=Ud2lp4Hrb10&list=PLUbb2i4BuuzDC2mvVwiqokO2ReWb6qSYI\n\n<hr><a href='https://d.tube/#!/v/nbkmundotech/34uele0i'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/QmPtpvCwEN9MYfDCiVZwWJQNuZgcsT7Fu8yze5FYUzsWPH'> ▶️ IPFS</a>",
      "json_metadata": "{\"video\":{\"app\":\"dtube/0.8\",\"videoId\":\"QmPtpvCwEN9MYfDCiVZwWJQNuZgcsT7Fu8yze5FYUzsWPH\",\"providerName\":\"IPFS\",\"title\":\"O Conceito de Selector (Seletor) (Aula React & Redux)\",\"duration\":\"342.75\",\"thumbnailUrl\":\"https://snap1.d.tube/ipfs/QmVAHi2fHhWCXdGAyh2QX9r3XzoZTSMY3V7TiZ3JsA6Nbs\",\"ipfs\":{\"snaphash\":\"QmVAHi2fHhWCXdGAyh2QX9r3XzoZTSMY3V7TiZ3JsA6Nbs\",\"spritehash\":\"QmcYZqCGSQwDBctFpj8TWjQe7cgK991UfwtGjLLeRY1HFu\",\"videohash\":\"QmPtpvCwEN9MYfDCiVZwWJQNuZgcsT7Fu8yze5FYUzsWPH\",\"video240hash\":\"QmYMXX4euvbWs95NXLiucJTYRmeKnpd7hi44aciQZJRg2e\",\"video480hash\":\"QmeKzDwBJyDQVEdaAznJ9T4qwhuvVCFiVxKch4TEcXDEGi\"},\"tags\":[\"dtube\",\"redux\",\"seletor\",\"tutorial\",\"pt\"],\"desc\":\"Aprenda o conceito de Selector (seletor) no Redux. Demonstração de como criar seletores para acessar o estado do aplicativo com React e Redux. Tópico relacionado ao react-redux, connect, mapStateToProps, reselect.\\n\\nAssista a série inteira aqui: https://www.youtube.com/watch?v=Ud2lp4Hrb10&list=PLUbb2i4BuuzDC2mvVwiqokO2ReWb6qSYI\",\"filesize\":\"\"},\"tags\":[\"dtube\",\"redux\",\"seletor\",\"tutorial\",\"pt\"],\"app\":\"dtube/0.8\"}",
      "parent_author": "",
      "parent_permlink": "dtube",
      "permlink": "34uele0i",
      "title": "O Conceito de Selector (Seletor) (Aula React & Redux)"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-02-11T00:16:42",
  "trx_id": "44ba3dd9d471fa2a72902b9db799ba511e07e8f1",
  "trx_in_block": 4,
  "virtual_op": 0
}
nbkmundotechpublished a new post: ung9ri84
2021/02/11 00:16:15
authornbkmundotech
body<center><a href='https://d.tube/#!/v/nbkmundotech/ung9ri84'><img src='https://ipfs.io/ipfs/QmZXPfA1fxsZN57zTS6yprM1Et1oKLGhSXmDzXCLfVwyGR'></a></center><hr> Nesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo. Código completo no GitHub: https://github.com/nbkhope/lista-de-posts-redux Também leciono na Udemy: https://www.udemy.com/user/renan-martins-5/ Vamos nos conectar! Siga-me no: Twitter - https://twitter.com/nbkhope Github - https://github.com/nbkhope <hr><a href='https://d.tube/#!/v/nbkmundotech/ung9ri84'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/QmUC5ZJQ7dokLDocAKgyyKucQFnzDJAVodYtegRGgk98KJ'> ▶️ IPFS</a>
json metadata{"video":{"app":"dtube/0.8","videoId":"QmUC5ZJQ7dokLDocAKgyyKucQFnzDJAVodYtegRGgk98KJ","providerName":"IPFS","title":"Introdução ao Redux (Parte 3)","duration":"657.55","thumbnailUrl":"https://snap1.d.tube/ipfs/Qmdr9X3CvfsuADojYghFPeq5MfT97Kogb35tezBYDdS4BW","ipfs":{"snaphash":"Qmdr9X3CvfsuADojYghFPeq5MfT97Kogb35tezBYDdS4BW","spritehash":"QmWvNMVjQH8PUqN9cSc3gia9gWE8NGojJvJYUiozf9aEaP","videohash":"QmUC5ZJQ7dokLDocAKgyyKucQFnzDJAVodYtegRGgk98KJ","video240hash":"QmdCb4LihAMSjp7FshUwDvoPkAkcYx6QBVwG81WpR9oBeY","video480hash":"QmesVpCsPKWYCTVbM64vV6Cn8e6tPzth5ugNdjJhtp3s7A"},"tags":["javascript","react","reactnative","redux","dtube"],"desc":"Nesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo.","filesize":""},"tags":["javascript","react","reactnative","redux","dtube"],"app":"dtube/0.8"}
parent author
parent permlinkjavascript
permlinkung9ri84
titleIntrodução ao Redux (Parte 3)
Transaction InfoBlock #51106018/Trx f13b59bf506de12a9bf61918fa33f621b28d9086
View Raw JSON Data
{
  "block": 51106018,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "<center><a href='https://d.tube/#!/v/nbkmundotech/ung9ri84'><img src='https://ipfs.io/ipfs/QmZXPfA1fxsZN57zTS6yprM1Et1oKLGhSXmDzXCLfVwyGR'></a></center><hr>\n\nNesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo.\n\nCódigo completo no GitHub: https://github.com/nbkhope/lista-de-posts-redux\n\nTambém leciono na Udemy:\nhttps://www.udemy.com/user/renan-martins-5/\n\nVamos nos conectar! Siga-me no:\nTwitter - https://twitter.com/nbkhope\nGithub - https://github.com/nbkhope\n\n<hr><a href='https://d.tube/#!/v/nbkmundotech/ung9ri84'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/QmUC5ZJQ7dokLDocAKgyyKucQFnzDJAVodYtegRGgk98KJ'> ▶️ IPFS</a>",
      "json_metadata": "{\"video\":{\"app\":\"dtube/0.8\",\"videoId\":\"QmUC5ZJQ7dokLDocAKgyyKucQFnzDJAVodYtegRGgk98KJ\",\"providerName\":\"IPFS\",\"title\":\"Introdução ao Redux (Parte 3)\",\"duration\":\"657.55\",\"thumbnailUrl\":\"https://snap1.d.tube/ipfs/Qmdr9X3CvfsuADojYghFPeq5MfT97Kogb35tezBYDdS4BW\",\"ipfs\":{\"snaphash\":\"Qmdr9X3CvfsuADojYghFPeq5MfT97Kogb35tezBYDdS4BW\",\"spritehash\":\"QmWvNMVjQH8PUqN9cSc3gia9gWE8NGojJvJYUiozf9aEaP\",\"videohash\":\"QmUC5ZJQ7dokLDocAKgyyKucQFnzDJAVodYtegRGgk98KJ\",\"video240hash\":\"QmdCb4LihAMSjp7FshUwDvoPkAkcYx6QBVwG81WpR9oBeY\",\"video480hash\":\"QmesVpCsPKWYCTVbM64vV6Cn8e6tPzth5ugNdjJhtp3s7A\"},\"tags\":[\"javascript\",\"react\",\"reactnative\",\"redux\",\"dtube\"],\"desc\":\"Nesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo.\",\"filesize\":\"\"},\"tags\":[\"javascript\",\"react\",\"reactnative\",\"redux\",\"dtube\"],\"app\":\"dtube/0.8\"}",
      "parent_author": "",
      "parent_permlink": "javascript",
      "permlink": "ung9ri84",
      "title": "Introdução ao Redux (Parte 3)"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-02-11T00:16:15",
  "trx_id": "f13b59bf506de12a9bf61918fa33f621b28d9086",
  "trx_in_block": 1,
  "virtual_op": 0
}
nbkmundotechpublished a new post: 57l8wrif
2021/02/11 00:15:21
authornbkmundotech
body<center><a href='https://d.tube/#!/v/nbkmundotech/57l8wrif'><img src='https://ipfs.io/ipfs/QmVt7Ne45qzRgTgRku8YERY7iSryWX2XeqVm83h5NjchAy'></a></center><hr> Nesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo. Código completo no GitHub: https://github.com/nbkhope/lista-de-posts-redux Também leciono na Udemy: https://www.udemy.com/user/renan-martins-5/ Vamos nos conectar! Siga-me no: Twitter - https://twitter.com/nbkhope Github - https://github.com/nbkhope <hr><a href='https://d.tube/#!/v/nbkmundotech/57l8wrif'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/QmWxTUjPdwvLnrtWyAawv5qZSVc3oALbUFrP84UWXHyQYd'> ▶️ IPFS</a>
json metadata{"video":{"app":"dtube/0.8","videoId":"QmWxTUjPdwvLnrtWyAawv5qZSVc3oALbUFrP84UWXHyQYd","providerName":"IPFS","title":"Introdução ao Redux (Parte 2)","duration":"384.65","thumbnailUrl":"https://snap1.d.tube/ipfs/QmShnMMTDDuVYTRwRW5bdw4MvPQCe617nKCmki3iJJwf2U","ipfs":{"snaphash":"QmShnMMTDDuVYTRwRW5bdw4MvPQCe617nKCmki3iJJwf2U","spritehash":"QmahfqZLk5ZY4sbQxVutSTdZHwfb7H36QVt6HrdjhkRvJG","videohash":"QmWxTUjPdwvLnrtWyAawv5qZSVc3oALbUFrP84UWXHyQYd","video240hash":"Qmd3u2W9EgAP9BuKsakKgMgiT11swEsDG3epnC4Msk7YM5","video480hash":"QmcVf7WPZ5zUtw4chL5cUPmpme514PcUC5ZTN8UU4rAvZP"},"tags":["javascript","react","reactnative","redux","dtube"],"desc":"Nesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo.","filesize":""},"tags":["javascript","react","reactnative","redux","dtube"],"app":"dtube/0.8"}
parent author
parent permlinkjavascript
permlink57l8wrif
titleIntrodução ao Redux (Parte 2)
Transaction InfoBlock #51106000/Trx bc2d57bb2f332d241d953c494517872cf22c88ba
View Raw JSON Data
{
  "block": 51106000,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "<center><a href='https://d.tube/#!/v/nbkmundotech/57l8wrif'><img src='https://ipfs.io/ipfs/QmVt7Ne45qzRgTgRku8YERY7iSryWX2XeqVm83h5NjchAy'></a></center><hr>\n\nNesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo.\n\nCódigo completo no GitHub: https://github.com/nbkhope/lista-de-posts-redux\n\nTambém leciono na Udemy:\nhttps://www.udemy.com/user/renan-martins-5/\n\nVamos nos conectar! Siga-me no:\nTwitter - https://twitter.com/nbkhope\nGithub - https://github.com/nbkhope\n\n<hr><a href='https://d.tube/#!/v/nbkmundotech/57l8wrif'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/QmWxTUjPdwvLnrtWyAawv5qZSVc3oALbUFrP84UWXHyQYd'> ▶️ IPFS</a>",
      "json_metadata": "{\"video\":{\"app\":\"dtube/0.8\",\"videoId\":\"QmWxTUjPdwvLnrtWyAawv5qZSVc3oALbUFrP84UWXHyQYd\",\"providerName\":\"IPFS\",\"title\":\"Introdução ao Redux (Parte 2)\",\"duration\":\"384.65\",\"thumbnailUrl\":\"https://snap1.d.tube/ipfs/QmShnMMTDDuVYTRwRW5bdw4MvPQCe617nKCmki3iJJwf2U\",\"ipfs\":{\"snaphash\":\"QmShnMMTDDuVYTRwRW5bdw4MvPQCe617nKCmki3iJJwf2U\",\"spritehash\":\"QmahfqZLk5ZY4sbQxVutSTdZHwfb7H36QVt6HrdjhkRvJG\",\"videohash\":\"QmWxTUjPdwvLnrtWyAawv5qZSVc3oALbUFrP84UWXHyQYd\",\"video240hash\":\"Qmd3u2W9EgAP9BuKsakKgMgiT11swEsDG3epnC4Msk7YM5\",\"video480hash\":\"QmcVf7WPZ5zUtw4chL5cUPmpme514PcUC5ZTN8UU4rAvZP\"},\"tags\":[\"javascript\",\"react\",\"reactnative\",\"redux\",\"dtube\"],\"desc\":\"Nesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo.\",\"filesize\":\"\"},\"tags\":[\"javascript\",\"react\",\"reactnative\",\"redux\",\"dtube\"],\"app\":\"dtube/0.8\"}",
      "parent_author": "",
      "parent_permlink": "javascript",
      "permlink": "57l8wrif",
      "title": "Introdução ao Redux (Parte 2)"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-02-11T00:15:21",
  "trx_id": "bc2d57bb2f332d241d953c494517872cf22c88ba",
  "trx_in_block": 6,
  "virtual_op": 0
}
executive-boardsent 0.001 STEEM to @nbkmundotech- "❗ Hello nbkmundotech, great that you are using the STEEM blockchain. The Executive Board hereby invites you to https://discord.gg/KyBbmhh where you will get some insider infos on how you will earn the..."
2021/02/11 00:10:12
amount0.001 STEEM
fromexecutive-board
memo❗ Hello nbkmundotech, great that you are using the STEEM blockchain. The Executive Board hereby invites you to https://discord.gg/KyBbmhh where you will get some insider infos on how you will earn the most coins. It's easy, just follow the instructions. Warm regards, The Executive Board.
tonbkmundotech
Transaction InfoBlock #51105898/Trx 70f7e7ca8acb6aa1ea52ef1962b24103434c8c0e
View Raw JSON Data
{
  "block": 51105898,
  "op": [
    "transfer",
    {
      "amount": "0.001 STEEM",
      "from": "executive-board",
      "memo": "❗ Hello nbkmundotech, great that you are using the STEEM blockchain. The Executive Board hereby invites you to https://discord.gg/KyBbmhh where you will get some insider infos on how you will earn the most coins. It's easy, just follow the instructions. Warm regards, The Executive Board.",
      "to": "nbkmundotech"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-02-11T00:10:12",
  "trx_id": "70f7e7ca8acb6aa1ea52ef1962b24103434c8c0e",
  "trx_in_block": 11,
  "virtual_op": 0
}
nbkmundotechpublished a new post: m2b4gqno
2021/02/11 00:09:15
authornbkmundotech
body<center><a href='https://d.tube/#!/v/nbkmundotech/m2b4gqno'><img src='https://ipfs.io/ipfs/QmUfynQvX8qmJV6fK1ntMrTHbd3pUE3K633HTK8SwMpihq'></a></center><hr> <hr><a href='https://d.tube/#!/v/nbkmundotech/m2b4gqno'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/QmSXq2n2bASHpyktqXuTvN4iD6jwRsYhwJfvTwTQ8GqNd3'> ▶️ IPFS</a>
json metadata{"video":{"app":"dtube/0.8","videoId":"QmSXq2n2bASHpyktqXuTvN4iD6jwRsYhwJfvTwTQ8GqNd3","providerName":"IPFS","title":"Introdução ao Redux (Parte 1)","duration":"159.634333","thumbnailUrl":"https://snap1.d.tube/ipfs/QmaByAfDMbrwvsmhhYneobmM5QLfbo96i1McJD34F8KTEc","ipfs":{"snaphash":"QmaByAfDMbrwvsmhhYneobmM5QLfbo96i1McJD34F8KTEc","spritehash":"QmZtmPJsyRNeJSgLVas95pBa8y81cmYDmhNSKMJS2dd6GX","videohash":"QmSXq2n2bASHpyktqXuTvN4iD6jwRsYhwJfvTwTQ8GqNd3","video240hash":"QmcFWKAVHKUuortk1zLm57c4mWSY8CM3KUhTunXi8XkmrH","video480hash":"QmcjgN3vkNwpBLpk5iF63PWPcPdh946SgySHzz9RdiJ3Wj"},"tags":["javascript","react","reactnative","redux","dtube"],"desc":"Nesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo.","filesize":""},"tags":["javascript","react","reactnative","redux","dtube"],"app":"dtube/0.8"}
parent author
parent permlinkjavascript
permlinkm2b4gqno
titleIntrodução ao Redux (Parte 1)
Transaction InfoBlock #51105879/Trx aece821da1b388278395ffda65ca8d52e523ba68
View Raw JSON Data
{
  "block": 51105879,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "<center><a href='https://d.tube/#!/v/nbkmundotech/m2b4gqno'><img src='https://ipfs.io/ipfs/QmUfynQvX8qmJV6fK1ntMrTHbd3pUE3K633HTK8SwMpihq'></a></center><hr>\n\n\n\n<hr><a href='https://d.tube/#!/v/nbkmundotech/m2b4gqno'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/QmSXq2n2bASHpyktqXuTvN4iD6jwRsYhwJfvTwTQ8GqNd3'> ▶️ IPFS</a>",
      "json_metadata": "{\"video\":{\"app\":\"dtube/0.8\",\"videoId\":\"QmSXq2n2bASHpyktqXuTvN4iD6jwRsYhwJfvTwTQ8GqNd3\",\"providerName\":\"IPFS\",\"title\":\"Introdução ao Redux (Parte 1)\",\"duration\":\"159.634333\",\"thumbnailUrl\":\"https://snap1.d.tube/ipfs/QmaByAfDMbrwvsmhhYneobmM5QLfbo96i1McJD34F8KTEc\",\"ipfs\":{\"snaphash\":\"QmaByAfDMbrwvsmhhYneobmM5QLfbo96i1McJD34F8KTEc\",\"spritehash\":\"QmZtmPJsyRNeJSgLVas95pBa8y81cmYDmhNSKMJS2dd6GX\",\"videohash\":\"QmSXq2n2bASHpyktqXuTvN4iD6jwRsYhwJfvTwTQ8GqNd3\",\"video240hash\":\"QmcFWKAVHKUuortk1zLm57c4mWSY8CM3KUhTunXi8XkmrH\",\"video480hash\":\"QmcjgN3vkNwpBLpk5iF63PWPcPdh946SgySHzz9RdiJ3Wj\"},\"tags\":[\"javascript\",\"react\",\"reactnative\",\"redux\",\"dtube\"],\"desc\":\"Nesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo.\",\"filesize\":\"\"},\"tags\":[\"javascript\",\"react\",\"reactnative\",\"redux\",\"dtube\"],\"app\":\"dtube/0.8\"}",
      "parent_author": "",
      "parent_permlink": "javascript",
      "permlink": "m2b4gqno",
      "title": "Introdução ao Redux (Parte 1)"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-02-11T00:09:15",
  "trx_id": "aece821da1b388278395ffda65ca8d52e523ba68",
  "trx_in_block": 9,
  "virtual_op": 0
}
steemdelegated 5.692 SP to @nbkmundotech
2020/12/11 14:45:00
delegateenbkmundotech
delegatorsteem
vesting shares9255.705281 VESTS
Transaction InfoBlock #49359451/Trx de80bd634c2554f441884faa9c3c16defcd712fc
View Raw JSON Data
{
  "block": 49359451,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "9255.705281 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-11T14:45:00",
  "trx_id": "de80bd634c2554f441884faa9c3c16defcd712fc",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 1.176 SP to @nbkmundotech
2020/12/06 08:21:15
delegateenbkmundotech
delegatorsteem
vesting shares1912.543513 VESTS
Transaction InfoBlock #49210991/Trx ef009144bfbef3c48cc9751269895b684a672a0a
View Raw JSON Data
{
  "block": 49210991,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "1912.543513 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-06T08:21:15",
  "trx_id": "ef009144bfbef3c48cc9751269895b684a672a0a",
  "trx_in_block": 34,
  "virtual_op": 0
}
steemdelegated 5.695 SP to @nbkmundotech
2020/12/05 18:22:39
delegateenbkmundotech
delegatorsteem
vesting shares9261.913135 VESTS
Transaction InfoBlock #49194536/Trx 328d0d36737c429dfe1eec6a78b49583a82eff28
View Raw JSON Data
{
  "block": 49194536,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "9261.913135 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-05T18:22:39",
  "trx_id": "328d0d36737c429dfe1eec6a78b49583a82eff28",
  "trx_in_block": 1,
  "virtual_op": 0
}
steemdelegated 1.181 SP to @nbkmundotech
2020/11/02 23:08:45
delegateenbkmundotech
delegatorsteem
vesting shares1920.017158 VESTS
Transaction InfoBlock #48266645/Trx 3b4857bd1c2e1fb8edb8a48f67db0be035f253b4
View Raw JSON Data
{
  "block": 48266645,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "1920.017158 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-11-02T23:08:45",
  "trx_id": "3b4857bd1c2e1fb8edb8a48f67db0be035f253b4",
  "trx_in_block": 0,
  "virtual_op": 0
}
beemenginesent 0.001 STEEM to @nbkmundotech- "💎 Smartest Promotion Community, boosting your posts with community extra votes, automated 24/24, passive earnings and more. Checkout http://beemengine.live 🤙 or try it one month FOR ONLY 1 HIVE/STEE..."
2020/05/12 07:30:39
amount0.001 STEEM
frombeemengine
memo💎 Smartest Promotion Community, boosting your posts with community extra votes, automated 24/24, passive earnings and more. Checkout http://beemengine.live 🤙 or try it one month FOR ONLY 1 HIVE/STEEM 🤯 to @beemengine with memo: subscribe
tonbkmundotech
Transaction InfoBlock #43303535/Trx e6ca6acaf33f86dc3c778b786e68acc5ace0cdd1
View Raw JSON Data
{
  "block": 43303535,
  "op": [
    "transfer",
    {
      "amount": "0.001 STEEM",
      "from": "beemengine",
      "memo": "💎 Smartest Promotion Community, boosting your posts with community extra votes, automated 24/24, passive earnings and more. Checkout http://beemengine.live 🤙 or try it one month FOR ONLY 1 HIVE/STEEM 🤯 to @beemengine with memo: subscribe",
      "to": "nbkmundotech"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-05-12T07:30:39",
  "trx_id": "e6ca6acaf33f86dc3c778b786e68acc5ace0cdd1",
  "trx_in_block": 0,
  "virtual_op": 0
}
nbkmundotechpublished a new post: ozckrikx
2020/05/12 07:29:45
authornbkmundotech
body<center><a href='https://d.tube/#!/v/nbkmundotech/ozckrikx'><img src='https://ipfs.io/ipfs/QmUoZmg3UpbvWUjcNVj1T699uh1eu4jsUHn1UbG7tQ6KT6'></a></center><hr> Nesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo. Código completo no GitHub: https://github.com/nbkhope/lista-de-posts-redux Também leciono na Udemy: https://www.udemy.com/user/renan-martins-5/ Vamos nos conectar! Siga-me no: Twitter - https://twitter.com/nbkhope Github - https://github.com/nbkhope <hr><a href='https://d.tube/#!/v/nbkmundotech/ozckrikx'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/Qmb4P5QrA3Ve5joWa3qSNsFs8RU2dEDUHEmA1QZftiLBUa'> ▶️ IPFS</a>
json metadata{"video":{"app":"dtube/0.8","videoId":"Qmb4P5QrA3Ve5joWa3qSNsFs8RU2dEDUHEmA1QZftiLBUa","providerName":"IPFS","title":"Introdução ao Redux (Parte 18)","duration":"1038.15","thumbnailUrl":"https://snap1.d.tube/ipfs/QmUCJC7xPGG6amKjRYHzYwMNZMaPTye5zrdmxfLkXSM6jf","ipfs":{"snaphash":"QmUCJC7xPGG6amKjRYHzYwMNZMaPTye5zrdmxfLkXSM6jf","spritehash":"QmPwXMuGQTgesVQHHErJHkuwwYmMhB71W3y7qED7GcMjnh","videohash":"Qmb4P5QrA3Ve5joWa3qSNsFs8RU2dEDUHEmA1QZftiLBUa","video240hash":"QmQ9HZVYTTfydaCGFmEAH3YQ9MDo39KDAmfKhdfR6GJASb","video480hash":"Qmd3acGrYouk5BFC51X9biCKa6mTdUZCApT3pRw8m4LnPS"},"tags":["javascript","react","reactnative","redux","dtube"],"desc":"Nesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo.","filesize":""},"tags":["javascript","react","reactnative","redux","dtube"],"app":"dtube/0.8"}
parent author
parent permlinkjavascript
permlinkozckrikx
titleIntrodução ao Redux (Parte 18)
Transaction InfoBlock #43303517/Trx 9abdc581ae705bc1738de863f845b456e8880da5
View Raw JSON Data
{
  "block": 43303517,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "<center><a href='https://d.tube/#!/v/nbkmundotech/ozckrikx'><img src='https://ipfs.io/ipfs/QmUoZmg3UpbvWUjcNVj1T699uh1eu4jsUHn1UbG7tQ6KT6'></a></center><hr>\n\nNesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo.\n\nCódigo completo no GitHub: https://github.com/nbkhope/lista-de-posts-redux\n\nTambém leciono na Udemy:\nhttps://www.udemy.com/user/renan-martins-5/\n\nVamos nos conectar! Siga-me no:\nTwitter - https://twitter.com/nbkhope\nGithub - https://github.com/nbkhope\n\n<hr><a href='https://d.tube/#!/v/nbkmundotech/ozckrikx'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/Qmb4P5QrA3Ve5joWa3qSNsFs8RU2dEDUHEmA1QZftiLBUa'> ▶️ IPFS</a>",
      "json_metadata": "{\"video\":{\"app\":\"dtube/0.8\",\"videoId\":\"Qmb4P5QrA3Ve5joWa3qSNsFs8RU2dEDUHEmA1QZftiLBUa\",\"providerName\":\"IPFS\",\"title\":\"Introdução ao Redux (Parte 18)\",\"duration\":\"1038.15\",\"thumbnailUrl\":\"https://snap1.d.tube/ipfs/QmUCJC7xPGG6amKjRYHzYwMNZMaPTye5zrdmxfLkXSM6jf\",\"ipfs\":{\"snaphash\":\"QmUCJC7xPGG6amKjRYHzYwMNZMaPTye5zrdmxfLkXSM6jf\",\"spritehash\":\"QmPwXMuGQTgesVQHHErJHkuwwYmMhB71W3y7qED7GcMjnh\",\"videohash\":\"Qmb4P5QrA3Ve5joWa3qSNsFs8RU2dEDUHEmA1QZftiLBUa\",\"video240hash\":\"QmQ9HZVYTTfydaCGFmEAH3YQ9MDo39KDAmfKhdfR6GJASb\",\"video480hash\":\"Qmd3acGrYouk5BFC51X9biCKa6mTdUZCApT3pRw8m4LnPS\"},\"tags\":[\"javascript\",\"react\",\"reactnative\",\"redux\",\"dtube\"],\"desc\":\"Nesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo.\",\"filesize\":\"\"},\"tags\":[\"javascript\",\"react\",\"reactnative\",\"redux\",\"dtube\"],\"app\":\"dtube/0.8\"}",
      "parent_author": "",
      "parent_permlink": "javascript",
      "permlink": "ozckrikx",
      "title": "Introdução ao Redux (Parte 18)"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-05-12T07:29:45",
  "trx_id": "9abdc581ae705bc1738de863f845b456e8880da5",
  "trx_in_block": 3,
  "virtual_op": 0
}
nbkmundotechcustom json: community
2020/05/12 07:27:06
idcommunity
json["subscribe",{"community":"hive-196037"}]
required auths[]
required posting auths["nbkmundotech"]
Transaction InfoBlock #43303467/Trx f535184aa748350471cd4ed53aa808d8b1fbfcf2
View Raw JSON Data
{
  "block": 43303467,
  "op": [
    "custom_json",
    {
      "id": "community",
      "json": "[\"subscribe\",{\"community\":\"hive-196037\"}]",
      "required_auths": [],
      "required_posting_auths": [
        "nbkmundotech"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-05-12T07:27:06",
  "trx_id": "f535184aa748350471cd4ed53aa808d8b1fbfcf2",
  "trx_in_block": 13,
  "virtual_op": 0
}
steemdelegated 5.820 SP to @nbkmundotech
2020/05/09 09:22:18
delegateenbkmundotech
delegatorsteem
vesting shares9464.718494 VESTS
Transaction InfoBlock #43221290/Trx 4e2bde7a2b6b1f7d97006be1a59ffded3219ed31
View Raw JSON Data
{
  "block": 43221290,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "9464.718494 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-05-09T09:22:18",
  "trx_id": "4e2bde7a2b6b1f7d97006be1a59ffded3219ed31",
  "trx_in_block": 15,
  "virtual_op": 0
}
steemdelegated 1.201 SP to @nbkmundotech
2020/05/08 13:31:15
delegateenbkmundotech
delegatorsteem
vesting shares1953.311140 VESTS
Transaction InfoBlock #43198029/Trx 14389ca1d7a8407e1ef0d16cf45adebb0e0fcfd4
View Raw JSON Data
{
  "block": 43198029,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "1953.311140 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-05-08T13:31:15",
  "trx_id": "14389ca1d7a8407e1ef0d16cf45adebb0e0fcfd4",
  "trx_in_block": 9,
  "virtual_op": 0
}
nbkmundotechpublished a new post: 9rzvn5ie
2019/12/23 18:19:03
authornbkmundotech
body<center><a href='https://d.tube/#!/v/nbkmundotech/9rzvn5ie'><img src='https://ipfs.io/ipfs/QmbuUDV56C3iRf4Xfg6aZPdFquLYUvYK1gZZUoZNZP7mcu'></a></center><hr> Nesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo.
json metadata{"tags":["react","reactnative","redux","dtube"],"video":{"content":{"tags":["javascript","react","reactnative","redux"],"video480hash":"QmZuQBkKF9iJmdBxM35BxCAptMQpsQadz6zyCZ6PSScsTH","videohash":"QmeECdXKFJRL66Cmhn2kitncrVj2og2qi2TEgWetpJpRjE","description":"Nesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo.\n\nCódigo completo no GitHub: https://github.com/nbkhope/lista-de-posts-redux\n\nTambém leciono na Udemy:\nhttps://www.udemy.com/user/renan-martins-5/\n\nVamos nos conectar! Siga-me no:\nTwitter - https://twitter.com/nbkhope\nGithub - https://github.com/nbkhope","video240hash":"QmP6RcLYc8dX6GXrk1a88pAGu4WfBv4ACToTCaXVzRjwcv"},"info":{"filesize":217311488,"duration":514.316667,"spritehash":"QmYJ8CfUBJphqimPJtGe3WD9nYJowaXZhbKHaqbp5h1SSR","author":"nbkmundotech","title":"Introdução ao Redux (Parte 12)","permlink":"9rzvn5ie","snaphash":"QmYRo2DwWCwAnsjKD3hVJTxPSKs8CG2erCF2CceywFBZFb"}},"app":"steemit/0.1","image":["https://ipfs.io/ipfs/QmbuUDV56C3iRf4Xfg6aZPdFquLYUvYK1gZZUoZNZP7mcu"],"links":["https://d.tube/#!/v/nbkmundotech/9rzvn5ie"],"format":"markdown"}
parent author
parent permlinkjavascript
permlink9rzvn5ie
titleIntrodução ao Redux (Parte 12)
Transaction InfoBlock #39295532/Trx e38c8732e55a9019da357b3e3bec1c4e631d189d
View Raw JSON Data
{
  "block": 39295532,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "<center><a href='https://d.tube/#!/v/nbkmundotech/9rzvn5ie'><img src='https://ipfs.io/ipfs/QmbuUDV56C3iRf4Xfg6aZPdFquLYUvYK1gZZUoZNZP7mcu'></a></center><hr>\n\nNesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo.",
      "json_metadata": "{\"tags\":[\"react\",\"reactnative\",\"redux\",\"dtube\"],\"video\":{\"content\":{\"tags\":[\"javascript\",\"react\",\"reactnative\",\"redux\"],\"video480hash\":\"QmZuQBkKF9iJmdBxM35BxCAptMQpsQadz6zyCZ6PSScsTH\",\"videohash\":\"QmeECdXKFJRL66Cmhn2kitncrVj2og2qi2TEgWetpJpRjE\",\"description\":\"Nesta série de vídeos nós aprendemos a usar o Redux para lidar com os dados do nosso aplicativo.\\n\\nCódigo completo no GitHub: https://github.com/nbkhope/lista-de-posts-redux\\n\\nTambém leciono na Udemy:\\nhttps://www.udemy.com/user/renan-martins-5/\\n\\nVamos nos conectar! Siga-me no:\\nTwitter - https://twitter.com/nbkhope\\nGithub - https://github.com/nbkhope\",\"video240hash\":\"QmP6RcLYc8dX6GXrk1a88pAGu4WfBv4ACToTCaXVzRjwcv\"},\"info\":{\"filesize\":217311488,\"duration\":514.316667,\"spritehash\":\"QmYJ8CfUBJphqimPJtGe3WD9nYJowaXZhbKHaqbp5h1SSR\",\"author\":\"nbkmundotech\",\"title\":\"Introdução ao Redux (Parte 12)\",\"permlink\":\"9rzvn5ie\",\"snaphash\":\"QmYRo2DwWCwAnsjKD3hVJTxPSKs8CG2erCF2CceywFBZFb\"}},\"app\":\"steemit/0.1\",\"image\":[\"https://ipfs.io/ipfs/QmbuUDV56C3iRf4Xfg6aZPdFquLYUvYK1gZZUoZNZP7mcu\"],\"links\":[\"https://d.tube/#!/v/nbkmundotech/9rzvn5ie\"],\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "javascript",
      "permlink": "9rzvn5ie",
      "title": "Introdução ao Redux (Parte 12)"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-12-23T18:19:03",
  "trx_id": "e38c8732e55a9019da357b3e3bec1c4e631d189d",
  "trx_in_block": 2,
  "virtual_op": 0
}
steemdelegated 5.905 SP to @nbkmundotech
2019/09/09 02:54:12
delegateenbkmundotech
delegatorsteem
vesting shares9602.816208 VESTS
Transaction InfoBlock #36259238/Trx 985285fda04c06c3fb1cc84b34e7b095839f3dd0
View Raw JSON Data
{
  "block": 36259238,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "9602.816208 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-09-09T02:54:12",
  "trx_id": "985285fda04c06c3fb1cc84b34e7b095839f3dd0",
  "trx_in_block": 1,
  "virtual_op": 0
}
2019/09/06 06:46:30
authorsteemitboard
bodyCongratulations @nbkmundotech! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@nbkmundotech/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@nbkmundotech) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=nbkmundotech)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
parent authornbkmundotech
parent permlinkcomo-usar-protected-para-acessar-membros-privados-de-uma-base-classe-no-typescript
permlinksteemitboard-notify-nbkmundotech-20190906t064630000z
title
Transaction InfoBlock #36177804/Trx a398f07db930a95a2d2091c1199d6b5fecb689e5
View Raw JSON Data
{
  "block": 36177804,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @nbkmundotech! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@nbkmundotech/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@nbkmundotech) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=nbkmundotech)_</sub>\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
      "parent_author": "nbkmundotech",
      "parent_permlink": "como-usar-protected-para-acessar-membros-privados-de-uma-base-classe-no-typescript",
      "permlink": "steemitboard-notify-nbkmundotech-20190906t064630000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-09-06T06:46:30",
  "trx_id": "a398f07db930a95a2d2091c1199d6b5fecb689e5",
  "trx_in_block": 9,
  "virtual_op": 0
}
dtubesent 0.001 STEEM to @nbkmundotech- "Time is running out, claim your DTube account now before anyone else can! Login at https://d.tube"
2019/08/22 15:14:57
amount0.001 STEEM
fromdtube
memoTime is running out, claim your DTube account now before anyone else can! Login at https://d.tube
tonbkmundotech
Transaction InfoBlock #35778310/Trx 5cc474b75e20386a91028904de177352098dbe28
View Raw JSON Data
{
  "block": 35778310,
  "op": [
    "transfer",
    {
      "amount": "0.001 STEEM",
      "from": "dtube",
      "memo": "Time is running out, claim your DTube account now before anyone else can! Login at https://d.tube",
      "to": "nbkmundotech"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-08-22T15:14:57",
  "trx_id": "5cc474b75e20386a91028904de177352098dbe28",
  "trx_in_block": 4,
  "virtual_op": 0
}
steemdelegated 18.146 SP to @nbkmundotech
2019/07/16 09:32:03
delegateenbkmundotech
delegatorsteem
vesting shares29509.458018 VESTS
Transaction InfoBlock #34708810/Trx 6c151f185ff9f9a99edef1734dfc00d583a7f050
View Raw JSON Data
{
  "block": 34708810,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "nbkmundotech",
      "delegator": "steem",
      "vesting_shares": "29509.458018 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-07-16T09:32:03",
  "trx_id": "6c151f185ff9f9a99edef1734dfc00d583a7f050",
  "trx_in_block": 2,
  "virtual_op": 0
}
2019/06/19 01:23:24
authorsurpassinggoogle
bodyHi bro, I have some tasks related to vue and react all on Github and utopian approved. Can you help me with some? I have some steem bounty too and the bounty isn’t big as I am really short on funds but I will love to tip additional steem especially where contributions are timely. I really need help basically. Here is a list: https://steemit.com/utopian-io/@surpassinggoogle/in-dire-need-of-help-are-you-ready-to-make-your-picks-1500-steem-and-20-000-teardrops-shared-among-a-collection-of-development Most of the assigned tasks havent really been taken yet as those who were assigned became unavailable. The projects are steemgigs.org and ulogs.org
json metadata{"tags":["redux"],"links":["https://steemit.com/utopian-io/@surpassinggoogle/in-dire-need-of-help-are-you-ready-to-make-your-picks-1500-steem-and-20-000-teardrops-shared-among-a-collection-of-development"],"app":"steemit/0.1"}
parent authornbkmundotech
parent permlinko-conceito-de-seletores-no-redux
permlinkptbnv1
title
Transaction InfoBlock #33922383/Trx b5717242e2d37866185b423a6ba581117426c152
View Raw JSON Data
{
  "block": 33922383,
  "op": [
    "comment",
    {
      "author": "surpassinggoogle",
      "body": "Hi bro, I have some tasks related to vue and react all on Github and utopian approved. Can you help me with some? I have some steem bounty too and the bounty isn’t big as I am really short on funds but I will love to tip additional steem especially where contributions are timely. I really need help basically.\n\nHere is a list:\n\nhttps://steemit.com/utopian-io/@surpassinggoogle/in-dire-need-of-help-are-you-ready-to-make-your-picks-1500-steem-and-20-000-teardrops-shared-among-a-collection-of-development\n\nMost of the assigned tasks havent really been taken yet as those who were assigned became unavailable.\n\nThe projects are steemgigs.org and ulogs.org",
      "json_metadata": "{\"tags\":[\"redux\"],\"links\":[\"https://steemit.com/utopian-io/@surpassinggoogle/in-dire-need-of-help-are-you-ready-to-make-your-picks-1500-steem-and-20-000-teardrops-shared-among-a-collection-of-development\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "nbkmundotech",
      "parent_permlink": "o-conceito-de-seletores-no-redux",
      "permlink": "ptbnv1",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-19T01:23:24",
  "trx_id": "b5717242e2d37866185b423a6ba581117426c152",
  "trx_in_block": 11,
  "virtual_op": 0
}
nbkmundotechreceived 0.011 SBD, 0.037 SP author reward for @nbkmundotech / uma-breve-introducao-a-classes-no-typescript
2019/06/11 15:21:39
authornbkmundotech
permlinkuma-breve-introducao-a-classes-no-typescript
sbd payout0.011 SBD
steem payout0.000 STEEM
vesting payout59.744326 VESTS
Transaction InfoBlock #33709218/Virtual Operation #7
View Raw JSON Data
{
  "block": 33709218,
  "op": [
    "author_reward",
    {
      "author": "nbkmundotech",
      "permlink": "uma-breve-introducao-a-classes-no-typescript",
      "sbd_payout": "0.011 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "59.744326 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-11T15:21:39",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 7
}
menkarbitsent 0.001 STEEM to @nbkmundotech- "Obrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt"
2019/06/10 02:12:51
amount0.001 STEEM
frommenkarbit
memoObrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt
tonbkmundotech
Transaction InfoBlock #33664708/Trx e7d5cd7c3afcecdb00db47514d0566933e84be9d
View Raw JSON Data
{
  "block": 33664708,
  "op": [
    "transfer",
    {
      "amount": "0.001 STEEM",
      "from": "menkarbit",
      "memo": "Obrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt",
      "to": "nbkmundotech"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-10T02:12:51",
  "trx_id": "e7d5cd7c3afcecdb00db47514d0566933e84be9d",
  "trx_in_block": 9,
  "virtual_op": 0
}
2019/06/10 01:56:57
authornbkmundotech
bodyEm programação orientada à objetos, os atributos de um objeto são normalmente definidos com acesso privado para não serem lidos ou modificados diretamente. Em vez do acesso direto a propriedade, funções *getter* e *setter* são definidas para disponibilizar uma API de leitura e modificação, respectivamente. Por exemplo, suponha que temos uma classe que representa um veículo: ``` class Veiculo { private marca: string; constructor(aMarca: string) { this.marca = aMarca; } obterMarca() { return this.marca; } modificarMarca(novaMarca: string) { this.marca = novaMarca; } } ``` Podemos criar um veículo da seguinte maneira: ``` let carro = new Veiculo("Honda"); ``` Mas o acesso e modificação da marca do veículo após sua construção não é permitida: ``` console.log(carro.marca); carro.marca = "Toyota"; ``` O compilador mostra o seguinte erro para ambas as expressões: ``` Property 'marca' is private and only accessible within class 'Veiculo'. ``` Vamos agora criar uma classe derivadas de um Veiculo: `Carro`. Veja o código abaixo: ``` class Carro extends Veiculo { imprimirMarca() { console.log(this.marca); } } ``` A classe `Carro` herda o `constructor` da base classe `Veiculo`, então não precisamos defini-lo novamente. O metodo `imprimirMarca` vai dar erro porque `this.marca` não é acessível da classe derivada, `Carro`. A marca é uma propriedade da base classe `Veiculo`, com acesso `private`: ``` Property 'marca' is private and only accessible within class 'Veiculo'. ``` Para podermos ter acesso direto de uma propriedade da base classe na classe derivada, precisamos usar o modo de acesso **protected**: ``` class Veiculo { protected marca: string; // ... } ``` Agora, a chamada de `imprimirMarca` de um objeto da classe `Carro` irá funcionar sem problemas. O acesso à propriedade `marca` da superclasse `Veiculo` é permitido. Para aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech: https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb Nos vemos lá!
json metadata{"tags":["typescript","protected","private","class","pt"],"image":["https://img.youtube.com/vi/jOJYBcjJ0CE/0.jpg"],"links":["https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinktypescript
permlinkcomo-usar-protected-para-acessar-membros-privados-de-uma-base-classe-no-typescript
titleComo Usar protected para Acessar Membros Privados de uma Base Classe no TypeScript
Transaction InfoBlock #33664390/Trx 4b189f92be11c1d821b1bf76d41f9c2adc3d4211
View Raw JSON Data
{
  "block": 33664390,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "Em programação orientada à objetos, os atributos de um objeto são normalmente definidos com acesso privado para não serem lidos ou modificados diretamente. Em vez do acesso direto a propriedade, funções *getter* e *setter* são definidas para disponibilizar uma API de leitura e modificação, respectivamente.\n\nPor exemplo, suponha que temos uma classe que representa um veículo:\n\n```\nclass Veiculo {\n  private marca: string;\n\n  constructor(aMarca: string) {\n    this.marca = aMarca;\n  }\n\n  obterMarca() {\n    return this.marca;\n  }\n\n  modificarMarca(novaMarca: string) {\n    this.marca = novaMarca;\n  }\n}\n```\n\nPodemos criar um veículo da seguinte maneira:\n\n```\nlet carro = new Veiculo(\"Honda\");\n```\n\nMas o acesso e modificação da marca do veículo após sua construção não é permitida:\n\n```\nconsole.log(carro.marca);\ncarro.marca = \"Toyota\";\n```\n\nO compilador mostra o seguinte erro para ambas as expressões:\n\n```\nProperty 'marca' is private and only accessible within class 'Veiculo'.\n```\n\nVamos agora criar uma classe derivadas de um Veiculo: `Carro`. Veja o código abaixo:\n\n```\nclass Carro extends Veiculo {\n  imprimirMarca() {\n    console.log(this.marca);\n  }\n}\n```\n\nA classe `Carro` herda o `constructor` da base classe `Veiculo`, então não precisamos defini-lo novamente.\n\nO metodo `imprimirMarca` vai dar erro porque `this.marca` não é acessível da classe derivada, `Carro`. A marca é uma propriedade da base classe `Veiculo`, com acesso `private`:\n\n```\nProperty 'marca' is private and only accessible within class 'Veiculo'.\n```\n\nPara podermos ter acesso direto de uma propriedade da base classe na classe derivada, precisamos usar o modo de acesso **protected**:\n\n```\nclass Veiculo {\n  protected marca: string;\n\n  // ...\n}\n```\n\nAgora, a chamada de `imprimirMarca` de um objeto da classe `Carro` irá funcionar sem problemas. O acesso à propriedade `marca` da superclasse `Veiculo` é permitido.\n\nPara aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech:\n\nhttps://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb\n\nNos vemos lá!",
      "json_metadata": "{\"tags\":[\"typescript\",\"protected\",\"private\",\"class\",\"pt\"],\"image\":[\"https://img.youtube.com/vi/jOJYBcjJ0CE/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "typescript",
      "permlink": "como-usar-protected-para-acessar-membros-privados-de-uma-base-classe-no-typescript",
      "title": "Como Usar protected para Acessar Membros Privados de uma Base Classe no TypeScript"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-10T01:56:57",
  "trx_id": "4b189f92be11c1d821b1bf76d41f9c2adc3d4211",
  "trx_in_block": 16,
  "virtual_op": 0
}
menkarbitsent 0.001 STEEM to @nbkmundotech- "Obrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt"
2019/06/08 01:05:00
amount0.001 STEEM
frommenkarbit
memoObrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt
tonbkmundotech
Transaction InfoBlock #33605847/Trx e010d81ed0081678cdf47b68a2b2d49fb172d3ec
View Raw JSON Data
{
  "block": 33605847,
  "op": [
    "transfer",
    {
      "amount": "0.001 STEEM",
      "from": "menkarbit",
      "memo": "Obrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt",
      "to": "nbkmundotech"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-08T01:05:00",
  "trx_id": "e010d81ed0081678cdf47b68a2b2d49fb172d3ec",
  "trx_in_block": 11,
  "virtual_op": 0
}
2019/06/08 00:50:15
authornbkmundotech
permlinkheranca-de-classes-no-typescript
voteradvanticle
weight10000 (100.00%)
Transaction InfoBlock #33605552/Trx ab962490e5c6896d29e67386fabb3361656b2b6b
View Raw JSON Data
{
  "block": 33605552,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "heranca-de-classes-no-typescript",
      "voter": "advanticle",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-08T00:50:15",
  "trx_id": "ab962490e5c6896d29e67386fabb3361656b2b6b",
  "trx_in_block": 23,
  "virtual_op": 0
}
2019/06/08 00:49:24
authornbkmundotech
bodyA palavra-chave `class`, introduzida no ECMAScript 2015, nos permite definir uma classe em JavaScript. O TypeScript também tem suporte ao paradigma. Um dos elementos da programação orientada à objetos é a herança de classes para reutilizar o código. No JavaScript tradicional, a herança é feita através de protótipos. Já com a palavra-chave `class`, podemos fazer a herança através da palavra-chave `extends`. Vamos supor que temos uma base classe chamada `Individuo`. Vamos simplificar o nosso exemplo e considerar mais duas classes: um individuo poderia ser um estudante ou um funcionário de uma empresa. Por causa disso, podemos usar herança e definir que: ``` Um Estudante é um Individuo Um Funcionario é um Individuo ``` Então a base classe é `Individuo` e as classes derivadas são `Estudante` e `Funcionario`. O primeiro é também chamado de superclasse e os segundos são subclasses. Vamos aprender com um código. Primeiro definimos a base classe: ``` class Individuo { nome: string; constructor(oNome: string) { this.nome = oNome; } } ``` Agora, para herdarmos da base classe, usamos a palavra-chave `extends` logo após o nome dela. Depois segue com o nome da classe derivada: ``` class Estudante extends Individuo { } class Funcionario extends Individuo { } ``` Não definimos nenhum membro para as classes derivadas, mas ambas irão herdar a propriedade `nome` e o `constructor` de `Individuo`. Podemos então adicionar propriedades e métodos específicos para cada subclasse. Por exemplo, um `Estudante` tem uma `disciplina` de estudo e um funcionário tem um `salario`. ``` class Estudante extends Individuo { disciplina: string; constructor(oNome: string, aDisciplina: string) { super(oNome); this.disciplina = aDisciplina; } } class Funcionario extends Individuo { salario: number; constructor(oNome: string, oSalario: number) { super(oNome); this.salario = oSalario; } } ``` No exemplo acima, precisamos adicionar um novo `constructor` à cada classe derivada para poder iniciar as propriedades específicas de cada classe. Note que podemos reutilizar o código do constructor da base classe `Individuo` com a chamada de `super`. É importante ressaltar que `super` deve ser chamado para iniciar os valores compartilhados através da base classe e que não se deve referenciar `this.` no corpo do constructor antes da chamada de `super()`. Vamos testar nossas classes: ``` let fJoao: Funcionario = new Funcionario("Joao", 123); let eAna: Estudante = new Estudante("Ana", "Arquitetura"); ``` Note que também podemos criar uma variável do tipo da base classe e ainda armazenar tanto um `Estudante` como um `Funcionario`: ``` let individuo: Individuo = fJoao; individuo = eAna; ``` O código acima funciona porque um `Funcionario` é um `Individuo` e um `Estudante` também é um `Individuo`. Para aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech: https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb Nos vemos lá!
json metadata{"tags":["typescript","classes","heranca","inheritance","pt"],"image":["https://img.youtube.com/vi/jOJYBcjJ0CE/0.jpg"],"links":["https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinktypescript
permlinkheranca-de-classes-no-typescript
titleHerança de Classes no TypeScript
Transaction InfoBlock #33605535/Trx e594159c340471084a5eba812fbf485726b7eccd
View Raw JSON Data
{
  "block": 33605535,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "A palavra-chave `class`, introduzida no ECMAScript 2015, nos permite definir uma classe em JavaScript. O TypeScript também tem suporte ao paradigma. Um dos elementos da programação orientada à objetos é a herança de classes para reutilizar o código. No JavaScript tradicional, a herança é feita através de protótipos. Já com a palavra-chave `class`, podemos fazer a herança através da palavra-chave `extends`.\n\nVamos supor que temos uma base classe chamada `Individuo`. Vamos simplificar o nosso exemplo e considerar mais duas classes: um individuo poderia ser um estudante ou um funcionário de uma empresa. Por causa disso, podemos usar herança e definir que:\n\n```\nUm Estudante é um Individuo\nUm Funcionario é um Individuo\n```\n\nEntão a base classe é `Individuo` e as classes derivadas são `Estudante` e `Funcionario`. O primeiro é também chamado de superclasse e os segundos são subclasses.\n\nVamos aprender com um código. Primeiro definimos a base classe:\n\n```\nclass Individuo {\n  nome: string;\n  constructor(oNome: string) {\n    this.nome = oNome;\n  }\n}\n```\n\nAgora, para herdarmos da base classe, usamos a palavra-chave `extends` logo após o nome dela. Depois segue com o nome da classe derivada:\n\n```\nclass Estudante extends Individuo {\n}\n\nclass Funcionario extends Individuo {\n}\n```\n\nNão definimos nenhum membro para as classes derivadas, mas ambas irão herdar a propriedade `nome` e o `constructor` de `Individuo`.\n\nPodemos então adicionar propriedades e métodos específicos para cada subclasse. Por exemplo, um `Estudante` tem uma `disciplina` de estudo e um funcionário tem um `salario`.\n\n```\nclass Estudante extends Individuo {\n  disciplina: string;\n\n  constructor(oNome: string, aDisciplina: string) {\n    super(oNome);\n    this.disciplina = aDisciplina;\n  }\n}\n\nclass Funcionario extends Individuo {\n  salario: number;\n\n  constructor(oNome: string, oSalario: number) {\n    super(oNome);\n    this.salario = oSalario;\n  }\n}\n```\n\nNo exemplo acima, precisamos adicionar um novo `constructor` à cada classe derivada para poder iniciar as propriedades específicas de cada classe. Note que podemos reutilizar o código do constructor da base classe `Individuo` com a chamada de `super`.\n\nÉ importante ressaltar que `super` deve ser chamado para iniciar os valores compartilhados através da base classe e que não se deve referenciar `this.` no corpo do constructor antes da chamada de `super()`.\n\nVamos testar nossas classes:\n\n```\nlet fJoao: Funcionario = new Funcionario(\"Joao\", 123);\nlet eAna: Estudante = new Estudante(\"Ana\", \"Arquitetura\");\n```\n\nNote que também podemos criar uma variável do tipo da base classe e ainda armazenar tanto um `Estudante` como um `Funcionario`:\n\n```\nlet individuo: Individuo = fJoao;\nindividuo = eAna;\n```\n\nO código acima funciona porque um `Funcionario` é um `Individuo` e um `Estudante` também é um `Individuo`.\n\nPara aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech:\n\nhttps://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb\n\nNos vemos lá!",
      "json_metadata": "{\"tags\":[\"typescript\",\"classes\",\"heranca\",\"inheritance\",\"pt\"],\"image\":[\"https://img.youtube.com/vi/jOJYBcjJ0CE/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "typescript",
      "permlink": "heranca-de-classes-no-typescript",
      "title": "Herança de Classes no TypeScript"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-08T00:49:24",
  "trx_id": "e594159c340471084a5eba812fbf485726b7eccd",
  "trx_in_block": 16,
  "virtual_op": 0
}
2019/06/05 19:04:57
authornbkmundotech
permlinkuma-breve-introducao-a-classes-no-typescript
votermatheusggr
weight3000 (30.00%)
Transaction InfoBlock #33541128/Trx 364b14888f81f478c8352374506d3e4b159d5352
View Raw JSON Data
{
  "block": 33541128,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "uma-breve-introducao-a-classes-no-typescript",
      "voter": "matheusggr",
      "weight": 3000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-05T19:04:57",
  "trx_id": "364b14888f81f478c8352374506d3e4b159d5352",
  "trx_in_block": 45,
  "virtual_op": 0
}
2019/06/04 23:39:03
authorsteemitboard
bodyCongratulations @nbkmundotech! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) : <table><tr><td><img src="https://steemitimages.com/60x70/https://steemitboard.com/@nbkmundotech/voted.png?201906042254"></td><td>You received more than 50 upvotes. Your next target is to reach 100 upvotes.</td></tr> </table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@nbkmundotech) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=nbkmundotech)_</sub> <sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
parent authornbkmundotech
parent permlinkuma-breve-introducao-a-classes-no-typescript
permlinksteemitboard-notify-nbkmundotech-20190604t233902000z
title
Transaction InfoBlock #33517840/Trx 3c05df3992a4c16aeb998ffd06a2b54a636891ca
View Raw JSON Data
{
  "block": 33517840,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @nbkmundotech! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :\n\n<table><tr><td><img src=\"https://steemitimages.com/60x70/https://steemitboard.com/@nbkmundotech/voted.png?201906042254\"></td><td>You received more than 50 upvotes. Your next target is to reach 100 upvotes.</td></tr>\n</table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@nbkmundotech) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=nbkmundotech)_</sub>\n<sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub>\n\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
      "parent_author": "nbkmundotech",
      "parent_permlink": "uma-breve-introducao-a-classes-no-typescript",
      "permlink": "steemitboard-notify-nbkmundotech-20190604t233902000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-04T23:39:03",
  "trx_id": "3c05df3992a4c16aeb998ffd06a2b54a636891ca",
  "trx_in_block": 1,
  "virtual_op": 0
}
2019/06/04 21:15:03
authornbkmundotech
permlinkuma-breve-introducao-a-classes-no-typescript
voterdiscernente
weight100 (1.00%)
Transaction InfoBlock #33514963/Trx 73d97b3892bbed314e82e555faeefed1f2d33b9a
View Raw JSON Data
{
  "block": 33514963,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "uma-breve-introducao-a-classes-no-typescript",
      "voter": "discernente",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-04T21:15:03",
  "trx_id": "73d97b3892bbed314e82e555faeefed1f2d33b9a",
  "trx_in_block": 24,
  "virtual_op": 0
}
2019/06/04 15:43:00
authornbkmundotech
permlinkuma-breve-introducao-a-classes-no-typescript
votermarkitoelias
weight10000 (100.00%)
Transaction InfoBlock #33508329/Trx 8f291e4d4596f1e03c4626e7f68ac262caa13e55
View Raw JSON Data
{
  "block": 33508329,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "uma-breve-introducao-a-classes-no-typescript",
      "voter": "markitoelias",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-04T15:43:00",
  "trx_id": "8f291e4d4596f1e03c4626e7f68ac262caa13e55",
  "trx_in_block": 12,
  "virtual_op": 0
}
menkarbitsent 0.001 STEEM to @nbkmundotech- "Obrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt"
2019/06/04 15:37:51
amount0.001 STEEM
frommenkarbit
memoObrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt
tonbkmundotech
Transaction InfoBlock #33508227/Trx a9a211bc12b18fda1d96734349fbb60c4738db43
View Raw JSON Data
{
  "block": 33508227,
  "op": [
    "transfer",
    {
      "amount": "0.001 STEEM",
      "from": "menkarbit",
      "memo": "Obrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt",
      "to": "nbkmundotech"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-04T15:37:51",
  "trx_id": "a9a211bc12b18fda1d96734349fbb60c4738db43",
  "trx_in_block": 22,
  "virtual_op": 0
}
2019/06/04 15:21:39
authornbkmundotech
bodyA programação orientada à objetos no JavaScript é originalmente realizada através de funções e herança prototípica. Com o advento do ECMAScript 2015, coloquialmente chamado de “ES6”, foi adicionada a palavra chave **class**, agora nos permitindo criar classes de maneira similar à linguagens como C++, C#, e Java. O TypeScript também tem suporte a declaração de classes através da palavra chave `class`. Vamos ver um exemplo: ``` class Forma { nome: string; constructor(oNome: string) { this.nome = oNome; } } ``` O exemplo acima define uma classe chamada de `Forma`, que tem como atributo a propriedade `nome`. A função `constructor()` é chamada quando você construir um objeto baseado na classe e atribui um nome à forma. O acesso de membros da classe é por padrão `public`, se nada for definido explicitamente. Entao podemos instanciar um objeto e acessar a propriedade `nome` diretamente: ``` let retang: Forma = new Forma("Retangulo"); console.log(`O nome da forma é ${retang.nome}`); ``` A expressão acima primeiro declara uma variável do tipo `Forma` e atribui ao seu valor uma nova instância de `Forma`, com o nome Retangulo. Note que a string Retangulo é passada como argumento para o `constructor`, que por si atribui o nome do objeto `this.nome`. O `console.log` imprime uma mensagem que inclui acesso ao nome da Forma diretamente, sem passar por um método *getter*. Vamos adicionar duas propriedades à classe Forma: `largura` e `altura`. Ambas devem ser do tipo `number`. ``` class Forma { nome: string; largura: number; altura: number; constructor(oNome: string, aLargura: number, aAltura: number) { this.nome = oNome; this.largura = aLargura; this.altura = aAltura; } } ``` Agora podemos fazer um método para calcular a área da forma: ``` class Forma { // ... public obterArea(): number { return this.largura * this.altura; } } ``` Como já mencionado, o acesso dos membros de uma classe em TypeScript é `public` por padrão, mas o exemplo acima o define explicitamente. Acesso público significa que o membro pode ser referenciado por fora da classe. Isso é o oposto do acesso privado (`private`), em que é proibido a referência do membro de fora da classe ou instância. O método não tem nenhum parâmetro porque os valores necessários para calcular a área já são parte dos atributos do objeto. O tipo do valor de retorno do método `obterArea` é explicitamente definido como `number`, mas poderia ser omitido e o compilador deduziria o tipo ao analizar a expressão de retorno. Vamos testar o método `obterArea`: ``` let retang: Forma = new Forma("Retangulo", 3, 4); console.log(`A area do retângulo é ${retang.obterArea()}`); ``` Saída: ``` A area do retângulo é 12 ``` Para não expor os atributos `largura` e `altura` do objeto ao mundo de fora, que tal redefinir essas propriedades com acesso privado? ``` class Forma { // ... private largura: number; private altura: number; // ... } ``` Dessa maneira, se o usuário do objeto tentar referenciar `retang.largura`, o compilador irá emitir um erro dizendo que o acesso não é permitido devido a propriedade ser privada: ``` Property 'largura' is private and only accessible within class 'Forma'. ``` Para aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech: https://www.youtube.com/watch?v=czp3QV55v1k&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb Nos vemos lá!
json metadata{"tags":["typescript","classes","pt"],"image":["https://img.youtube.com/vi/czp3QV55v1k/0.jpg"],"links":["https://www.youtube.com/watch?v=czp3QV55v1k&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinktypescript
permlinkuma-breve-introducao-a-classes-no-typescript
titleUma Breve Introdução a Classes no TypeScript
Transaction InfoBlock #33507903/Trx fbff022377b4d0ed6bd71496d77bc0b2cb648aea
View Raw JSON Data
{
  "block": 33507903,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "A programação orientada à objetos no JavaScript é originalmente realizada através de funções e herança prototípica. Com o advento do ECMAScript 2015, coloquialmente chamado de “ES6”, foi adicionada a palavra chave **class**, agora nos permitindo criar classes de maneira similar à linguagens como C++, C#, e Java.\n\nO TypeScript também tem suporte a declaração de classes através da palavra chave `class`. Vamos ver um exemplo:\n\n```\nclass Forma {\n  nome: string;\n\n  constructor(oNome: string) {\n    this.nome = oNome;\n  }\n}\n```\n\nO exemplo acima define uma classe chamada de `Forma`, que tem como atributo a propriedade `nome`. A função `constructor()` é chamada quando você construir um objeto baseado na classe e atribui um nome à forma.\n\nO acesso de membros da classe é por padrão `public`, se nada for definido explicitamente. Entao podemos instanciar um objeto e acessar a propriedade `nome` diretamente:\n\n```\nlet retang: Forma = new Forma(\"Retangulo\");\nconsole.log(`O nome da forma é ${retang.nome}`);\n```\n\nA expressão acima primeiro declara uma variável do tipo `Forma` e atribui ao seu valor uma nova instância de `Forma`, com o nome Retangulo. Note que a string Retangulo é passada como argumento para o `constructor`, que por si atribui o nome do objeto `this.nome`.\n\nO `console.log` imprime uma mensagem que inclui acesso ao nome da Forma diretamente, sem passar por um método *getter*.\n\nVamos adicionar duas propriedades à classe Forma: `largura` e `altura`. Ambas devem ser do tipo `number`.\n\n```\nclass Forma {\n  nome: string;\n  largura: number;\n  altura: number;\n\n  constructor(oNome: string, aLargura: number, aAltura: number) {\n    this.nome = oNome;\n    this.largura = aLargura;\n    this.altura = aAltura;\n  }\n}\n```\n\nAgora podemos fazer um método para calcular a área da forma:\n\n```\nclass Forma {\n  // ...\n  public obterArea(): number {\n    return this.largura * this.altura;\n  }\n}\n```\n\nComo já mencionado, o acesso dos membros de uma classe em TypeScript é `public` por padrão, mas o exemplo acima o define explicitamente. Acesso público significa que o membro pode ser referenciado por fora da classe. Isso é o oposto do acesso privado (`private`), em que é proibido a referência do membro de fora da classe ou instância.\n\nO método não tem nenhum parâmetro porque os valores necessários para calcular a área já são parte dos atributos do objeto.\n\nO tipo do valor de retorno do método `obterArea` é explicitamente definido como `number`, mas poderia ser omitido e o compilador deduziria o tipo ao analizar a expressão de retorno.\n\nVamos testar o método `obterArea`:\n\n```\nlet retang: Forma = new Forma(\"Retangulo\", 3, 4);\nconsole.log(`A area do retângulo é ${retang.obterArea()}`);\n```\n\nSaída:\n\n```\nA area do retângulo é 12\n```\n\nPara não expor os atributos `largura` e `altura` do objeto ao mundo de fora, que tal redefinir essas propriedades com acesso privado?\n\n```\nclass Forma {\n  // ...\n  private largura: number;\n  private altura: number;\n  // ...\n}\n```\n\nDessa maneira, se o usuário do objeto tentar referenciar `retang.largura`, o compilador irá emitir um erro dizendo que o acesso não é permitido devido a propriedade ser privada:\n\n```\nProperty 'largura' is private and only accessible within class 'Forma'.\n```\n\nPara aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech:\n\nhttps://www.youtube.com/watch?v=czp3QV55v1k&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb\n\nNos vemos lá!",
      "json_metadata": "{\"tags\":[\"typescript\",\"classes\",\"pt\"],\"image\":[\"https://img.youtube.com/vi/czp3QV55v1k/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=czp3QV55v1k&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "typescript",
      "permlink": "uma-breve-introducao-a-classes-no-typescript",
      "title": "Uma Breve Introdução a Classes no TypeScript"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-04T15:21:39",
  "trx_id": "fbff022377b4d0ed6bd71496d77bc0b2cb648aea",
  "trx_in_block": 4,
  "virtual_op": 0
}
menkarbitsent 0.001 STEEM to @nbkmundotech- "Obrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt"
2019/06/03 16:33:06
amount0.001 STEEM
frommenkarbit
memoObrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt
tonbkmundotech
Transaction InfoBlock #33480560/Trx bdfb52f447682dd0cf63ee725b16521f305af0d4
View Raw JSON Data
{
  "block": 33480560,
  "op": [
    "transfer",
    {
      "amount": "0.001 STEEM",
      "from": "menkarbit",
      "memo": "Obrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt",
      "to": "nbkmundotech"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-03T16:33:06",
  "trx_id": "bdfb52f447682dd0cf63ee725b16521f305af0d4",
  "trx_in_block": 9,
  "virtual_op": 0
}
2019/06/03 16:16:51
authornbkmundotech
bodyNo JavaScript, temos funções nomeadas e funções anônimas. O segundo tipo pode ser armazenado em uma variável, como no exemplo abaixo, já escrito com anotações de tipo do TypeScript: ``` let minhaFuncao = function(a: string, b: number): string { return `O valor da string é ${a} e o valor do numero é ${b}`; }; ``` Variáveis no TypeScript podem ter uma anotação de tipo, por exemplo: ``` let meuNumero: number = 48; ``` A expressão acima declara uma variável do tipo `number` com o valor 48. Podemos adicionar o tipo de uma variável que armazena uma função da seguinte maneira, usando o nosso exemplo anterior: ``` let minhaFuncao: (x: string, y: number) => string = function(a: string, b: number): string { return `O valor da string é ${a} e o valor do numero é ${b}`; }; ``` No exemplo acima, o tipo da variável `minhaFuncao` é a assinatura de função `(x: string, y: number) => string`. Os nomes dos parâmetros foram mudados de propósito para você saber que o que importam são os tipos e não os nomes. O nome da variável na assinatura pode ser diferente da definição no lado direito do igual, mas os tipos não podem ser diferentes. Note que separamos os parâmetros de entrada do tipo do valor de saída com a seta `=>`. No exemplo, temos como parâmetros da função o `x` e `y`, de tipo `string` e `number`, respectivamente. O tipo do valor de retorno e declarado no lado direito da seta `=>`, nesse caso uma `string`. Declarar a assinatura do tipo da variável as vezes pode deixar a linha muito longa, então podemos aproveitar a inferência de tipo do compilador do TypeScript. Às vezes definindo de um lado da expressão basta para que o compilador deduza os tipos do outro lado. Para aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech: https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb Nos vemos lá!
json metadata{"tags":["typescript","tipo","variavel","funcao","pt"],"image":["https://img.youtube.com/vi/jOJYBcjJ0CE/0.jpg"],"links":["https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinktypescript
permlinkcomo-definir-o-tipo-de-uma-variavel-que-armazena-uma-funcao-no-typescript
titleComo Definir o Tipo de uma Variável que Armazena uma Função no TypeScript
Transaction InfoBlock #33480235/Trx 95e767b808734f904914f838f3b4cf98b24e2bbb
View Raw JSON Data
{
  "block": 33480235,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "No JavaScript, temos funções nomeadas e funções anônimas. O segundo tipo pode ser armazenado em uma variável, como no exemplo abaixo, já escrito com anotações de tipo do TypeScript:\n\n```\nlet minhaFuncao = function(a: string, b: number): string {\n  return `O valor da string é ${a} e o valor do numero é ${b}`;\n};\n```\n\nVariáveis no TypeScript podem ter uma anotação de tipo, por exemplo:\n\n```\nlet meuNumero: number = 48;\n```\n\nA expressão acima declara uma variável do tipo `number` com o valor 48.\n\nPodemos adicionar o tipo de uma variável que armazena uma função da seguinte maneira, usando o nosso exemplo anterior:\n\n```\nlet minhaFuncao: (x: string, y: number) => string = \nfunction(a: string, b: number): string {\n  return `O valor da string é ${a} e o valor do numero é ${b}`;\n};\n```\n\nNo exemplo acima, o tipo da variável `minhaFuncao` é a assinatura de função `(x: string, y: number) => string`.\n\nOs nomes dos parâmetros foram mudados de propósito para você saber que o que importam são os tipos e não os nomes. O nome da variável na assinatura pode ser diferente da definição no lado direito do igual, mas os tipos não podem ser diferentes.\n\nNote que separamos os parâmetros de entrada do tipo do valor de saída com a seta `=>`. No exemplo, temos como parâmetros da função o `x` e `y`, de tipo `string` e `number`, respectivamente. O tipo do valor de retorno e declarado no lado direito da seta `=>`, nesse caso uma `string`.\n\nDeclarar a assinatura do tipo da variável as vezes pode deixar a linha muito longa, então podemos aproveitar a inferência de tipo do compilador do TypeScript. Às vezes definindo de um lado da expressão basta para que o compilador deduza os tipos do outro lado.\n\nPara aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech:\n\nhttps://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb\n\nNos vemos lá!",
      "json_metadata": "{\"tags\":[\"typescript\",\"tipo\",\"variavel\",\"funcao\",\"pt\"],\"image\":[\"https://img.youtube.com/vi/jOJYBcjJ0CE/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "typescript",
      "permlink": "como-definir-o-tipo-de-uma-variavel-que-armazena-uma-funcao-no-typescript",
      "title": "Como Definir o Tipo de uma Variável que Armazena uma Função no TypeScript"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-03T16:16:51",
  "trx_id": "95e767b808734f904914f838f3b4cf98b24e2bbb",
  "trx_in_block": 9,
  "virtual_op": 0
}
menkarbitsent 0.001 STEEM to @nbkmundotech- "Obrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt"
2019/06/03 04:44:21
amount0.001 STEEM
frommenkarbit
memoObrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt
tonbkmundotech
Transaction InfoBlock #33466401/Trx 960c06c3a5855b860a60e7e080e2271b17eef75f
View Raw JSON Data
{
  "block": 33466401,
  "op": [
    "transfer",
    {
      "amount": "0.001 STEEM",
      "from": "menkarbit",
      "memo": "Obrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt",
      "to": "nbkmundotech"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-03T04:44:21",
  "trx_id": "960c06c3a5855b860a60e7e080e2271b17eef75f",
  "trx_in_block": 19,
  "virtual_op": 0
}
2019/06/03 04:28:09
authornbkmundotech
bodyConsidere uma simples função que leva dois números como argumento. O valor de retorno é a multiplicação dos dois números: ``` function multiplicar(a: number, b: number) { return a * b; } ``` O compilador do TypeScript é inteligente e deduz o tipo do valor de retorno da função acima baseado na expressão de retorno. Mas se você quiser definir o tipo do valor de retorno explicitamente, adicione os dois pontos e o tipo logo após a lista de parâmetros entre os parênteses: ``` function multiplicar(a: number, b: number): number { return a * b; } ``` No exemplo acima, a expressão `a * b` resulta em um valor do tipo `number`, o mesmo tipo definido explicitamente na parte de retorno da assinatura da função. Para aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech: https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb Nos vemos lá!
json metadata{"tags":["typescript","tipo","retorno","funcao","pt"],"image":["https://img.youtube.com/vi/jOJYBcjJ0CE/0.jpg"],"links":["https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinktypescript
permlinkcomo-adicionar-o-tipo-de-retorno-de-uma-funcao-em-typescript
titleComo Adicionar o Tipo de Retorno de uma Função em TypeScript
Transaction InfoBlock #33466077/Trx 7ef749d4dc09fd9883dcc2f3379ae0785ce85a2f
View Raw JSON Data
{
  "block": 33466077,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "Considere uma simples função que leva dois números como argumento. O valor de retorno é a multiplicação dos dois números:\n\n```\nfunction multiplicar(a: number, b: number) {\n  return a * b;\n}\n```\n\nO compilador do TypeScript é inteligente e deduz o tipo do valor de retorno da função acima baseado na expressão de retorno. Mas se você quiser definir o tipo do valor de retorno explicitamente, adicione os dois pontos e o tipo logo após a lista de parâmetros entre os parênteses:\n\n```\nfunction multiplicar(a: number, b: number): number {\n  return a * b;\n}\n```\n\nNo exemplo acima, a expressão `a * b` resulta em um valor do tipo `number`, o mesmo tipo definido explicitamente na parte de retorno da assinatura da função.\n\nPara aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech:\n\nhttps://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb\n\nNos vemos lá!",
      "json_metadata": "{\"tags\":[\"typescript\",\"tipo\",\"retorno\",\"funcao\",\"pt\"],\"image\":[\"https://img.youtube.com/vi/jOJYBcjJ0CE/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "typescript",
      "permlink": "como-adicionar-o-tipo-de-retorno-de-uma-funcao-em-typescript",
      "title": "Como Adicionar o Tipo de Retorno de uma Função em TypeScript"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-03T04:28:09",
  "trx_id": "7ef749d4dc09fd9883dcc2f3379ae0785ce85a2f",
  "trx_in_block": 15,
  "virtual_op": 0
}
2019/06/03 00:02:51
authornbkmundotech
permlinko-construtor-protegido-no-typescript
voterxmauron3
weight10000 (100.00%)
Transaction InfoBlock #33460778/Trx b43450ead1c266c407301311f07cefb1d4a848e9
View Raw JSON Data
{
  "block": 33460778,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "o-construtor-protegido-no-typescript",
      "voter": "xmauron3",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-03T00:02:51",
  "trx_id": "b43450ead1c266c407301311f07cefb1d4a848e9",
  "trx_in_block": 29,
  "virtual_op": 0
}
menkarbitsent 0.001 STEEM to @nbkmundotech- "Obrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt"
2019/06/02 14:01:12
amount0.001 STEEM
frommenkarbit
memoObrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt
tonbkmundotech
Transaction InfoBlock #33448756/Trx 0ae97931239c09e0efb4505f5e44cea1f51f8afb
View Raw JSON Data
{
  "block": 33448756,
  "op": [
    "transfer",
    {
      "amount": "0.001 STEEM",
      "from": "menkarbit",
      "memo": "Obrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt",
      "to": "nbkmundotech"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-02T14:01:12",
  "trx_id": "0ae97931239c09e0efb4505f5e44cea1f51f8afb",
  "trx_in_block": 5,
  "virtual_op": 0
}
2019/06/02 13:45:06
authornbkmundotech
bodyConsidere um exemplo de herança entre duas classes: a base classe Veiculo e a classe derivada Carro: ``` class Veiculo { constructor() { } } class Carro extends Veiculo { constructor() { super(); } } ``` Os construtores foram definidos em branco para focarmos no assunto de construtores protegidos. Considere as seguintes expressoes: ``` let umVeiculo: Veiculo; umVeiculo = new Carro(); ``` A variável `umVeiculo` é declarada com tipo `Veiculo`. Podemos atribuir um objeto do tipo `Carro` à essa variàvel porque um `Carro` é um `Veiculo`. Agora vamos ver outra expressão: ``` let veiculo: Veiculo = new Veiculo(); ``` Nesse caso criamos um objeto usando a base classe `Veiculo`. Mas há situações em que não queremos permitir a instanciação de objetos do tipo da base classe. Isto é, só queremos permitir a construção de instância de objetos cuja classe é `Carro`, `Moto`, etc. A maneira de resolver o problema é através da palavra chave **protected**. Basta adicionar à esquerda da assinatura do **constructor** da base classe: ``` class Veiculo { protected constructor() { } } ``` Agora, a seguinte expressão irá causar um erro: ``` let veiculo: Veiculo = new Veiculo(); ``` ``` Constructor of class 'Veiculo' is protected and only accessible within the class declaration. ``` Com a adição de `protected` antes da assinatura do `constructor()`, não é mais possível criar objetos baseados diretamente na base classe Veiculo. Em vez disso, o usuário tem criar objetos a partir de classes derivadas de `Veiculo`. No caso acima, temos que usar `new Carro()`. Para aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech: https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb Nos vemos lá!
json metadata{"tags":["typescript","construtor","protegido","protected","pt"],"image":["https://img.youtube.com/vi/jOJYBcjJ0CE/0.jpg"],"links":["https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinktypescript
permlinko-construtor-protegido-no-typescript
titleO Construtor Protegido no TypeScript
Transaction InfoBlock #33448434/Trx 41db5a706b04f9277aafd98373987f38642d54f0
View Raw JSON Data
{
  "block": 33448434,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "Considere um exemplo de herança entre duas classes: a base classe Veiculo e a classe derivada Carro:\n\n```\nclass Veiculo {\n  constructor() {\n  }\n}\n\nclass Carro extends Veiculo {\n  constructor() {\n    super();\n  }\n}\n```\n\nOs construtores foram definidos em branco para focarmos no assunto de construtores protegidos.\n\nConsidere as seguintes expressoes:\n\n```\nlet umVeiculo: Veiculo;\numVeiculo = new Carro();\n```\n\nA variável `umVeiculo` é declarada com tipo `Veiculo`. Podemos atribuir um objeto do tipo `Carro` à essa variàvel porque um `Carro` é um `Veiculo`.\n\nAgora vamos ver outra expressão:\n\n```\nlet veiculo: Veiculo = new Veiculo();\n```\n\nNesse caso criamos um objeto usando a base classe `Veiculo`. Mas há situações em que não queremos permitir a instanciação de objetos do tipo da base classe. Isto é, só queremos permitir a construção de instância de objetos cuja classe é `Carro`, `Moto`, etc.\n\nA maneira de resolver o problema é através da palavra chave **protected**. Basta adicionar à esquerda da assinatura do **constructor** da base classe:\n\n```\nclass Veiculo {\n  protected constructor() {\n  }\n}\n```\n\nAgora, a seguinte expressão irá causar um erro:\n\n```\nlet veiculo: Veiculo = new Veiculo();\n```\n\n```\nConstructor of class 'Veiculo' is protected\nand only accessible within the class declaration.\n```\n\nCom a adição de `protected` antes da assinatura do `constructor()`, não é mais possível criar objetos baseados diretamente na base classe Veiculo. Em vez disso, o usuário tem criar objetos a partir de classes derivadas de `Veiculo`. No caso acima, temos que usar `new Carro()`.\n\nPara aprender mais sobre o TypeScript, assista às aulas do NBK Mundo Tech:\n\nhttps://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb\n\nNos vemos lá!",
      "json_metadata": "{\"tags\":[\"typescript\",\"construtor\",\"protegido\",\"protected\",\"pt\"],\"image\":[\"https://img.youtube.com/vi/jOJYBcjJ0CE/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=jOJYBcjJ0CE&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "typescript",
      "permlink": "o-construtor-protegido-no-typescript",
      "title": "O Construtor Protegido no TypeScript"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-02T13:45:06",
  "trx_id": "41db5a706b04f9277aafd98373987f38642d54f0",
  "trx_in_block": 27,
  "virtual_op": 0
}
2019/06/02 02:47:57
authornbkmundotech
permlinkcomo-adicionar-anotacoes-de-tipo-nos-parametros-de-uma-funcao-em-typescript
voterhozn4ukhlytriwc
weight1500 (15.00%)
Transaction InfoBlock #33435307/Trx b1e75ed4fdc2efc3359ccbdf0580a420ff7e9320
View Raw JSON Data
{
  "block": 33435307,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "como-adicionar-anotacoes-de-tipo-nos-parametros-de-uma-funcao-em-typescript",
      "voter": "hozn4ukhlytriwc",
      "weight": 1500
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-02T02:47:57",
  "trx_id": "b1e75ed4fdc2efc3359ccbdf0580a420ff7e9320",
  "trx_in_block": 34,
  "virtual_op": 0
}
menkarbitsent 0.001 STEEM to @nbkmundotech- "Obrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt"
2019/06/02 02:15:45
amount0.001 STEEM
frommenkarbit
memoObrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt
tonbkmundotech
Transaction InfoBlock #33434663/Trx 294df6e2752b40d34369902a727c06e4fa4a6b93
View Raw JSON Data
{
  "block": 33434663,
  "op": [
    "transfer",
    {
      "amount": "0.001 STEEM",
      "from": "menkarbit",
      "memo": "Obrigado por postar! Voce ira receber 0.001 STEEM por divulgar o seu conteudo usando a tag #pt",
      "to": "nbkmundotech"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-02T02:15:45",
  "trx_id": "294df6e2752b40d34369902a727c06e4fa4a6b93",
  "trx_in_block": 30,
  "virtual_op": 0
}
2019/06/02 02:00:27
authornbkmundotech
bodyUma função trivial para adicionar dois números pode ser escrita da seguinte maneira em JavaScript: ``` function somar(a, b) { return a + b; } ``` Certos bugs como o seguinte podem às vezes acontecer: ``` let soma = somar("3", 5); console.log(soma); ``` O script acima imprime o seguinte: ``` 35 ``` Observe que 3 + 5 deveria ser 8, mas devido ao primeiro argumento não ser o número 3, mas uma string que contém o caractere "3", obtemos um resultado incorreto. Isto porquê no JavaScript uma `string` + `number` irá causar uma operação de concatenação, cujo resultado no exemplo é "35". Questões como essas podem ser detectadas facilmente no TypeScript na hora de compilação, sem termos que esperar até a hora de execução para verificar. Vamos adicionar uma anotação de tipo para cada parâmetro da função em exemplo: ``` function somar(a: number, b: number) { return a + b; } ``` Para definir o tipo do parâmetro, escreve-se dois pontos seguidos do tipo. No exemplo acima, o requiremento é que cada parâmetro seja um número, `number`. Agora, ao compilar a função acima junto a chamada de `somar` abaixo, o compilador irá indicar um erro. ``` let soma = somar("3", 5); console.log(soma); ``` ``` Argument of type '"3"' is not assignable to parameter of type 'number'. ``` Para consertar o problema, basta passar um número no primeiro argumento, sem aspas: ``` let soma = somar(3, 5); ``` Saída da Execução: ``` 8 ``` Um dos grandes benefícios do TypeScript é poder detectar códigos problemáticos cedo, na etapa de compilação. Isso previne ter que rodar o script e testar na hora de execução. É importante ressaltar que se escrevermos código diretamente em JavaScript, sem o passo da compilação do TypeScript, há uma chance do erro não ser detectado. Isso porque ainda que o script execute sem nenhum erro explícito, o JavaScript normal não tem cheque de tipos e, do seu ponto de vista, pensa que tudo está correto. Para aprender mais sobre TypeScript, assista às aulas do NBK Mundo Tech: https://www.youtube.com/watch?v=czp3QV55v1k&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb Nos vemos lá!
json metadata{"tags":["typescript","anotacao","tipo","funcao","pt"],"image":["https://img.youtube.com/vi/czp3QV55v1k/0.jpg"],"links":["https://www.youtube.com/watch?v=czp3QV55v1k&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinktypescript
permlinkcomo-adicionar-anotacoes-de-tipo-nos-parametros-de-uma-funcao-em-typescript
titleComo Adicionar Anotações de Tipo nos Parâmetros de uma Função em TypeScript
Transaction InfoBlock #33434357/Trx 0748ad9b33414a221efaf8c00e3331d1298af1a6
View Raw JSON Data
{
  "block": 33434357,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "Uma função trivial para adicionar dois números pode ser escrita da seguinte maneira em JavaScript:\n\n```\nfunction somar(a, b) {\n  return a + b;\n}\n```\n\nCertos bugs como o seguinte podem às vezes acontecer:\n\n```\nlet soma = somar(\"3\", 5);\nconsole.log(soma);\n```\n\nO script acima imprime o seguinte:\n\n```\n35\n```\n\nObserve que 3 + 5 deveria ser 8, mas devido ao primeiro argumento não ser o número 3, mas uma string que contém o caractere \"3\", obtemos um resultado incorreto. Isto porquê no JavaScript uma `string` + `number` irá causar uma operação de concatenação, cujo resultado no exemplo é \"35\".\n\nQuestões como essas podem ser detectadas facilmente no TypeScript na hora de compilação, sem termos que esperar até a hora de execução para verificar.\n\nVamos adicionar uma anotação de tipo para cada parâmetro da função em exemplo:\n\n```\nfunction somar(a: number, b: number) {\n  return a + b;\n}\n```\n\nPara definir o tipo do parâmetro, escreve-se dois pontos seguidos do tipo. No exemplo acima, o requiremento é que cada parâmetro seja um número, `number`.\n\nAgora, ao compilar a função acima junto a chamada de `somar` abaixo, o compilador irá indicar um erro.\n\n```\nlet soma = somar(\"3\", 5);\nconsole.log(soma);\n```\n\n```\nArgument of type '\"3\"' is not assignable to parameter of type 'number'.\n```\n\nPara consertar o problema, basta passar um número no primeiro argumento, sem aspas:\n\n```\nlet soma = somar(3, 5);\n```\n\nSaída da Execução:\n\n```\n8\n```\n\nUm dos grandes benefícios do TypeScript é poder detectar códigos problemáticos cedo, na etapa de compilação. Isso previne ter que rodar o script e testar na hora de execução.\n\nÉ importante ressaltar que se escrevermos código diretamente em JavaScript, sem o passo da compilação do TypeScript, há uma chance do erro não ser detectado. Isso porque ainda que o script execute sem nenhum erro explícito, o JavaScript normal não tem cheque de tipos e, do seu ponto de vista, pensa que tudo está correto.\n\nPara aprender mais sobre TypeScript, assista às aulas do NBK Mundo Tech:\n\nhttps://www.youtube.com/watch?v=czp3QV55v1k&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb\n\nNos vemos lá!",
      "json_metadata": "{\"tags\":[\"typescript\",\"anotacao\",\"tipo\",\"funcao\",\"pt\"],\"image\":[\"https://img.youtube.com/vi/czp3QV55v1k/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=czp3QV55v1k&list=PLUbb2i4BuuzBcH1iS242xjztUwMI4erNb\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "typescript",
      "permlink": "como-adicionar-anotacoes-de-tipo-nos-parametros-de-uma-funcao-em-typescript",
      "title": "Como Adicionar Anotações de Tipo nos Parâmetros de uma Função em TypeScript"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-06-02T02:00:27",
  "trx_id": "0748ad9b33414a221efaf8c00e3331d1298af1a6",
  "trx_in_block": 32,
  "virtual_op": 0
}
2019/05/12 19:56:03
authornbkmundotech
permlinkgolang-go-hash-map-pt
votermeedo
weight10000 (100.00%)
Transaction InfoBlock #32851522/Trx 22468e05c9bb137a361534c9dadfd5fa224f463d
View Raw JSON Data
{
  "block": 32851522,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "golang-go-hash-map-pt",
      "voter": "meedo",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-12T19:56:03",
  "trx_id": "22468e05c9bb137a361534c9dadfd5fa224f463d",
  "trx_in_block": 31,
  "virtual_op": 0
}
2019/05/12 18:44:03
authornbkmundotech
permlinkgolang-go-hash-map-pt
voterparedao
weight10000 (100.00%)
Transaction InfoBlock #32850083/Trx bf0805386a1aaa7a4ef9ae4cd057b07433b74162
View Raw JSON Data
{
  "block": 32850083,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "golang-go-hash-map-pt",
      "voter": "paredao",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-12T18:44:03",
  "trx_id": "bf0805386a1aaa7a4ef9ae4cd057b07433b74162",
  "trx_in_block": 22,
  "virtual_op": 0
}
nbkmundotechpublished a new post: golang-go-hash-map-pt
2019/05/12 18:05:45
authornbkmundotech
bodyA estrutura que associa uma chave à um valor na linguagem Golang é chamada de *Map*. O tipo é formado da seguinte maneira: ``` map[TIPO_DA_CHAVE]TIPO_DO_VALOR ``` Por exemplo, para criar um mapa de `string` para `int`: ``` map[string]int ``` A construção acima significa que o `map` aceita como chave uma **string**; essa string é associada à um valor do tipo **int**. Imagine que em uma escola, os alunos fazem uma prova e recebem uma nota como resultado. Podemos associar o nome de cada aluno ao valor de sua nota dessa maneira: ``` var notas map[string]int notas = make(map[string]int) notas["Ana"] = 9 notas["Maria"] = 10 // e assim por diante... ``` A primeira linha do exemplo acima declara uma variável para armazenar um map de `string` para `int`. Logo em seguida, criamos o map usando a função **make**. Vale a pena lembrar que `make` também é usado para criar *slices* (fatias de *array*). Nesse caso, usamos o `make` para criar um map que associa uma `string` à um valor `int`. As linhas que seguem associam o nome de cada estudante ao valor da nota recebida na prova. A notação para adicionar ou atualizar um par de chave-valor em Golang é, em geral: ``` notas[CHAVE] = VALOR ``` Podemos também acessar o valor correspondente a chave assim: ``` fmt.Println(notas["Maria"]) // => 10 ``` Mas temos que tomar cuidado porque pode ser que a chave não exista no Map, em cujo caso o valor zero do tipo do valor associado é retornado: ``` fmt.Println(notas["Estudante Que Nao Existe"]) // => 0 ``` A chave mapeia para um valor do tipo `int`, cujo valor zero é `0`. Há uma maneira de checar se a chave existe antes se referenciar o seu valor. Para aprender mais sobre a estrutura Map na linguagem Golang, assista às aulas do NBK Mundo Tech: https://www.youtube.com/watch?v=Zp1AA6dDQZ4&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW
json metadata{"tags":["golang","go","hash","map","pt"],"image":["https://img.youtube.com/vi/Zp1AA6dDQZ4/0.jpg"],"links":["https://www.youtube.com/watch?v=Zp1AA6dDQZ4&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkgolang
permlinkgolang-go-hash-map-pt
titleComo Criar uma Estrutura de Hash Map na Linguagem Golang
Transaction InfoBlock #32849318/Trx 437e80bc19b82a9eff6672c7d1b899638a370fe1
View Raw JSON Data
{
  "block": 32849318,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "A estrutura que associa uma chave à um valor na linguagem\nGolang é chamada de *Map*.\n\nO tipo é formado da seguinte maneira:\n\n```\nmap[TIPO_DA_CHAVE]TIPO_DO_VALOR\n```\n\nPor exemplo, para criar um mapa de `string` para `int`:\n\n```\nmap[string]int\n```\n\nA construção acima significa que o `map` aceita como chave uma **string**; essa string é associada à um valor do tipo **int**.\n\nImagine que em uma escola, os alunos fazem uma prova e recebem uma nota como resultado. Podemos associar o nome de cada aluno ao valor de sua nota dessa maneira:\n\n```\nvar notas map[string]int\nnotas = make(map[string]int)\n\nnotas[\"Ana\"] = 9\nnotas[\"Maria\"] = 10\n// e assim por diante...\n```\n\nA primeira linha do exemplo acima declara uma variável para armazenar um map de `string` para `int`.\n\nLogo em seguida, criamos o map usando a função **make**. Vale a pena lembrar que `make` também é usado para criar *slices* (fatias de *array*). Nesse caso, usamos o `make` para criar um map que associa uma `string` à um valor `int`.\n\nAs linhas que seguem associam o nome de cada estudante ao valor da nota recebida na prova. A notação para adicionar ou atualizar um par de chave-valor em Golang é, em geral:\n\n```\nnotas[CHAVE] = VALOR\n```\n\nPodemos também acessar o valor correspondente a chave assim:\n\n```\nfmt.Println(notas[\"Maria\"]) // => 10\n```\n\nMas temos que tomar cuidado porque pode ser que a chave não exista no Map, em cujo caso o valor zero do tipo do valor associado é retornado:\n\n```\nfmt.Println(notas[\"Estudante Que Nao Existe\"]) // => 0\n```\n\nA chave mapeia para um valor do tipo `int`, cujo valor zero é `0`.\n\nHá uma maneira de checar se a chave existe antes se referenciar o seu valor. Para aprender mais sobre a estrutura Map na linguagem Golang, assista às aulas do NBK Mundo Tech:\n\nhttps://www.youtube.com/watch?v=Zp1AA6dDQZ4&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW",
      "json_metadata": "{\"tags\":[\"golang\",\"go\",\"hash\",\"map\",\"pt\"],\"image\":[\"https://img.youtube.com/vi/Zp1AA6dDQZ4/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=Zp1AA6dDQZ4&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "golang",
      "permlink": "golang-go-hash-map-pt",
      "title": "Como Criar uma Estrutura de Hash Map na Linguagem Golang"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-12T18:05:45",
  "trx_id": "437e80bc19b82a9eff6672c7d1b899638a370fe1",
  "trx_in_block": 9,
  "virtual_op": 0
}
nbkmundotechpublished a new post: golang-go-hash-map-pt
2019/05/12 18:05:18
authornbkmundotech
bodyA estrutura que associa uma chave à um valor na linguagem Golang é chamada de *Map*. O tipo é formado da seguinte maneira: ``` map[TIPO_DA_CHAVE]TIPO_DO_VALOR ``` Por exemplo, para criar um mapa de `string` para `int`: ``` map[string]int ``` A construção acima significa que o `map` aceita como chave uma **string**; essa string é associada à um valor do tipo **int**. Imagine que em uma escola, os alunos fazem uma prova e recebem uma nota como resultado. Podemos associar o nome de cada aluno ao valor de sua nota dessa maneira: ``` var notas map[string]int notas = make(map[string]int) notas["Ana"] = 9 notas["Maria"] = 10 // e assim por diante... ``` A primeira linha do exemplo acima declara uma variável para armazenar um map de `string` para `int`. Logo em seguida, criamos o map usando a função **make**. Vale a pena lembrar que `make` também é usado para criar *slices* (fatias de *array*). Nesse caso, usamos o `make` para criar um map que associa uma `string` à um valor `int`. As linhas que seguem associam o nome de cada estudante ao valor da nota recebida na prova. A notação para adicionar ou atualizar um par de chave-valor em Golang é, em geral: ``` notas[CHAVE] = VALOR ``` Podemos também acessar o valor correspondente a chave assim: ``` fmt.Println(notas["Maria"]) // => 10 ``` Mas temos que tomar cuidado porque pode ser que a chave não exista no Map, em cujo caso o valor zero do tipo do valor associado é retornado: ``` fmt.Println(notas["Estudante Que Nao Existe"]) // => 0 ``` A chave mapeia para um valor do tipo `int`, cujo valor zero é `0`. Há uma maneira de checar se a chave existe antes se referenciar o seu valor. Para aprender mais sobre a estrutura Map na linguagem Golang, assista às aulas do NBK Mundo Tech: https://www.youtube.com/watch?v=Zp1AA6dDQZ4&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW
json metadata{"tags":["golang","go","hash","map","pt"],"image":["https://img.youtube.com/vi/Zp1AA6dDQZ4/0.jpg"],"links":["https://www.youtube.com/watch?v=Zp1AA6dDQZ4&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkgolang
permlinkgolang-go-hash-map-pt
titlegolang,go,hash,map,pt
Transaction InfoBlock #32849309/Trx 694bd0450a63b100ebe95ab19313bb89d59d6d21
View Raw JSON Data
{
  "block": 32849309,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "A estrutura que associa uma chave à um valor na linguagem\nGolang é chamada de *Map*.\n\nO tipo é formado da seguinte maneira:\n\n```\nmap[TIPO_DA_CHAVE]TIPO_DO_VALOR\n```\n\nPor exemplo, para criar um mapa de `string` para `int`:\n\n```\nmap[string]int\n```\n\nA construção acima significa que o `map` aceita como chave uma **string**; essa string é associada à um valor do tipo **int**.\n\nImagine que em uma escola, os alunos fazem uma prova e recebem uma nota como resultado. Podemos associar o nome de cada aluno ao valor de sua nota dessa maneira:\n\n```\nvar notas map[string]int\nnotas = make(map[string]int)\n\nnotas[\"Ana\"] = 9\nnotas[\"Maria\"] = 10\n// e assim por diante...\n```\n\nA primeira linha do exemplo acima declara uma variável para armazenar um map de `string` para `int`.\n\nLogo em seguida, criamos o map usando a função **make**. Vale a pena lembrar que `make` também é usado para criar *slices* (fatias de *array*). Nesse caso, usamos o `make` para criar um map que associa uma `string` à um valor `int`.\n\nAs linhas que seguem associam o nome de cada estudante ao valor da nota recebida na prova. A notação para adicionar ou atualizar um par de chave-valor em Golang é, em geral:\n\n```\nnotas[CHAVE] = VALOR\n```\n\nPodemos também acessar o valor correspondente a chave assim:\n\n```\nfmt.Println(notas[\"Maria\"]) // => 10\n```\n\nMas temos que tomar cuidado porque pode ser que a chave não exista no Map, em cujo caso o valor zero do tipo do valor associado é retornado:\n\n```\nfmt.Println(notas[\"Estudante Que Nao Existe\"]) // => 0\n```\n\nA chave mapeia para um valor do tipo `int`, cujo valor zero é `0`.\n\nHá uma maneira de checar se a chave existe antes se referenciar o seu valor. Para aprender mais sobre a estrutura Map na linguagem Golang, assista às aulas do NBK Mundo Tech:\n\nhttps://www.youtube.com/watch?v=Zp1AA6dDQZ4&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW",
      "json_metadata": "{\"tags\":[\"golang\",\"go\",\"hash\",\"map\",\"pt\"],\"image\":[\"https://img.youtube.com/vi/Zp1AA6dDQZ4/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=Zp1AA6dDQZ4&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "golang",
      "permlink": "golang-go-hash-map-pt",
      "title": "golang,go,hash,map,pt"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-12T18:05:18",
  "trx_id": "694bd0450a63b100ebe95ab19313bb89d59d6d21",
  "trx_in_block": 3,
  "virtual_op": 0
}
2019/05/03 06:46:39
authornbkmundotech
permlinkcomo-definir-estruturas-struct-na-linguagem-golang
votermerlin7
weight1 (0.01%)
Transaction InfoBlock #32576679/Trx 9ac3c164e343806657b6cf9817578667c6ea841c
View Raw JSON Data
{
  "block": 32576679,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "como-definir-estruturas-struct-na-linguagem-golang",
      "voter": "merlin7",
      "weight": 1
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-03T06:46:39",
  "trx_id": "9ac3c164e343806657b6cf9817578667c6ea841c",
  "trx_in_block": 6,
  "virtual_op": 0
}
2019/05/03 06:46:15
authornbkmundotech
permlinkcomo-definir-estruturas-struct-na-linguagem-golang
votersteemitboard
weight100 (1.00%)
Transaction InfoBlock #32576671/Trx 74bbd7ab5a58fd2d3073511039a8b7703a031c71
View Raw JSON Data
{
  "block": 32576671,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "como-definir-estruturas-struct-na-linguagem-golang",
      "voter": "steemitboard",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-03T06:46:15",
  "trx_id": "74bbd7ab5a58fd2d3073511039a8b7703a031c71",
  "trx_in_block": 3,
  "virtual_op": 0
}
2019/05/03 06:46:12
authorsteemitboard
bodyCongratulations @nbkmundotech! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) : <table><tr><td>https://steemitimages.com/60x70/http://steemitboard.com/@nbkmundotech/posts.png?201905030602</td><td>You published more than 40 posts. Your next target is to reach 50 posts.</td></tr> </table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@nbkmundotech) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=nbkmundotech)_</sub> <sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub> To support your work, I also upvoted your post! ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
parent authornbkmundotech
parent permlinkcomo-definir-estruturas-struct-na-linguagem-golang
permlinksteemitboard-notify-nbkmundotech-20190503t064611000z
title
Transaction InfoBlock #32576670/Trx c30f95a69e21caf65413eb59622fb2b97bcaf054
View Raw JSON Data
{
  "block": 32576670,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @nbkmundotech! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :\n\n<table><tr><td>https://steemitimages.com/60x70/http://steemitboard.com/@nbkmundotech/posts.png?201905030602</td><td>You published more than 40 posts. Your next target is to reach 50 posts.</td></tr>\n</table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@nbkmundotech) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=nbkmundotech)_</sub>\n<sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub>\n\n\nTo support your work, I also upvoted your post!\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
      "parent_author": "nbkmundotech",
      "parent_permlink": "como-definir-estruturas-struct-na-linguagem-golang",
      "permlink": "steemitboard-notify-nbkmundotech-20190503t064611000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-03T06:46:12",
  "trx_id": "c30f95a69e21caf65413eb59622fb2b97bcaf054",
  "trx_in_block": 1,
  "virtual_op": 0
}
2019/05/03 05:21:21
authormenkarbit
bodyObrigado por postar! Esse coment&aacute;rio &eacute; o novo bot que dar&aacute; upvote 5% para todos os posts que usam a tag #pt. [Ainda n&atilde;o votou em mim como witness? Clique aqui e d&ecirc; o seu voto! &Eacute; r&aacute;pido!](https://app.steemconnect.com/sign/account-witness-vote?witness=menkarbit&approve=true)
json metadata
parent authornbkmundotech
parent permlinkcomo-definir-estruturas-struct-na-linguagem-golang
permlinkre-como-definir-estruturas-struct-na-linguagem-golang-20190503t052121
title
Transaction InfoBlock #32574975/Trx 43633f12ac137b508b946874ee80b2d2a90f4eb8
View Raw JSON Data
{
  "block": 32574975,
  "op": [
    "comment",
    {
      "author": "menkarbit",
      "body": "Obrigado por postar! Esse coment&aacute;rio &eacute; o novo bot que dar&aacute; upvote 5% para todos os posts que usam a tag #pt. [Ainda n&atilde;o votou em mim como witness? Clique aqui e d&ecirc; o seu voto! &Eacute; r&aacute;pido!](https://app.steemconnect.com/sign/account-witness-vote?witness=menkarbit&approve=true)",
      "json_metadata": "",
      "parent_author": "nbkmundotech",
      "parent_permlink": "como-definir-estruturas-struct-na-linguagem-golang",
      "permlink": "re-como-definir-estruturas-struct-na-linguagem-golang-20190503t052121",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-03T05:21:21",
  "trx_id": "43633f12ac137b508b946874ee80b2d2a90f4eb8",
  "trx_in_block": 22,
  "virtual_op": 0
}
2019/05/03 05:21:21
authornbkmundotech
permlinkcomo-definir-estruturas-struct-na-linguagem-golang
votermenkarbit
weight500 (5.00%)
Transaction InfoBlock #32574975/Trx b9a9c0f617bdedb14a2d08b0fb3ebcbb3bf3b517
View Raw JSON Data
{
  "block": 32574975,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "como-definir-estruturas-struct-na-linguagem-golang",
      "voter": "menkarbit",
      "weight": 500
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-03T05:21:21",
  "trx_id": "b9a9c0f617bdedb14a2d08b0fb3ebcbb3bf3b517",
  "trx_in_block": 11,
  "virtual_op": 0
}
2019/05/03 05:06:39
authornbkmundotech
permlinkcomo-definir-estruturas-struct-na-linguagem-golang
votersteeming-hot
weight1 (0.01%)
Transaction InfoBlock #32574683/Trx 2c8b0d649cd156e64e8bc0ac8d04bb1d634bca15
View Raw JSON Data
{
  "block": 32574683,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "como-definir-estruturas-struct-na-linguagem-golang",
      "voter": "steeming-hot",
      "weight": 1
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-03T05:06:39",
  "trx_id": "2c8b0d649cd156e64e8bc0ac8d04bb1d634bca15",
  "trx_in_block": 18,
  "virtual_op": 0
}
2019/05/03 05:05:36
authornbkmundotech
bodyÀs vezes temos dados que são relacionados e que seria melhor encapsula-los em uma só entidade. Em um jogo de duas dimensões, por exemplo, precisamos de duas variáveis para manter a posição do jogador. No plano cartesiano, definimos o ponto com os valores `(x, y)`. ``` var x int = 48 var y int = 63 ``` No código acima, declaramos duas variáveis de tipo inteiro, `x` e `y`, com valores `48` e `63`, respectivamente. Na linguagem Golang, podemos encapsular vários tipos de dados em uma só entidade chamada de *struct* (estrutura). Podemos criar uma estrutura da seguinte maneira: ``` type Posicao struct { X int Y int } ``` A estrutura acima contém dois campos: X e Y. Ambos são do tipo inteiro. Podemos criar estruturas literais assim: ``` Posicao{48, 63} ``` O código acima cria uma struct literal usando 48 para o valor de X e 63 para o valor Y. Note que nesse exemplo a ordem é importante. Podemos acessar os campos de uma estrutura usando o ponto (`.`) depois do nome da variável que mantém a estrutura: ``` var pos Posicao = Posicao{48, 63} fmt.Println(pos.X) fmt.Println(pos.Y) ``` A saída do programa acima é: ``` 48 63 ``` Para modificar os valores de uma estrutura, basta usar a operação de atribuição assim: ``` pos.X = 87 ``` O valor de X na estrutura será substituído por 87. Para aprender mais sobre *struct* em Golang, assista às aulas do NBK Mundo Tech: https://www.youtube.com/watch?v=o8pBu-Yo8_Y&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW Nos vemos lá!
json metadata{"tags":["golang","go","struct","estrutura","pt"],"image":["https://img.youtube.com/vi/o8pBu-Yo8_Y/0.jpg"],"links":["https://www.youtube.com/watch?v=o8pBu-Yo8_Y&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkgolang
permlinkcomo-definir-estruturas-struct-na-linguagem-golang
titleComo Definir Estruturas (Struct) na Linguagem Golang
Transaction InfoBlock #32574662/Trx 37c9bcda17ccb2ba4267e5d6b0c56bbf2c0f6e6f
View Raw JSON Data
{
  "block": 32574662,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "Às vezes temos dados que são relacionados e que seria melhor encapsula-los em uma só entidade.\n\nEm um jogo de duas dimensões, por exemplo, precisamos de duas variáveis para manter a posição do jogador. No plano cartesiano, definimos o ponto com os valores `(x, y)`.\n\n```\nvar x int = 48\nvar y int = 63\n```\n\nNo código acima, declaramos duas variáveis de tipo inteiro, `x` e `y`, com valores `48` e `63`, respectivamente.\n\nNa linguagem Golang, podemos encapsular vários tipos de dados em uma só entidade chamada de *struct* (estrutura).\n\nPodemos criar uma estrutura da seguinte maneira:\n\n```\ntype Posicao struct {\n  X int\n  Y int\n}\n```\n\nA estrutura acima contém dois campos: X e Y. Ambos são do tipo inteiro. Podemos criar estruturas literais assim:\n\n```\nPosicao{48, 63}\n```\n\nO código acima cria uma struct literal usando 48 para o valor de X e 63 para o valor Y. Note que nesse exemplo a ordem é importante.\n\nPodemos acessar os campos de uma estrutura usando o ponto (`.`) depois do nome da variável que mantém a estrutura:\n\n```\nvar pos Posicao = Posicao{48, 63}\n\nfmt.Println(pos.X)\nfmt.Println(pos.Y)\n```\n\nA saída do programa acima é:\n\n```\n48\n63\n```\n\nPara modificar os valores de uma estrutura, basta usar a operação de atribuição assim:\n\n```\npos.X = 87\n```\n\nO valor de X na estrutura será substituído por 87.\n\nPara aprender mais sobre *struct* em Golang, assista às aulas do NBK Mundo Tech:\n\nhttps://www.youtube.com/watch?v=o8pBu-Yo8_Y&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW\n\nNos vemos lá!",
      "json_metadata": "{\"tags\":[\"golang\",\"go\",\"struct\",\"estrutura\",\"pt\"],\"image\":[\"https://img.youtube.com/vi/o8pBu-Yo8_Y/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=o8pBu-Yo8_Y&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "golang",
      "permlink": "como-definir-estruturas-struct-na-linguagem-golang",
      "title": "Como Definir Estruturas (Struct) na Linguagem Golang"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-03T05:05:36",
  "trx_id": "37c9bcda17ccb2ba4267e5d6b0c56bbf2c0f6e6f",
  "trx_in_block": 8,
  "virtual_op": 0
}
2019/05/03 02:32:57
authornbkmundotech
permlinkcomo-definir-ponteiros-na-linguagem-golang
voteralinequeiroz
weight5000 (50.00%)
Transaction InfoBlock #32571612/Trx a02154cc66ded7d8bba99653516bd5891a1ee8b0
View Raw JSON Data
{
  "block": 32571612,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "como-definir-ponteiros-na-linguagem-golang",
      "voter": "alinequeiroz",
      "weight": 5000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-03T02:32:57",
  "trx_id": "a02154cc66ded7d8bba99653516bd5891a1ee8b0",
  "trx_in_block": 24,
  "virtual_op": 0
}
2019/05/03 02:32:57
authornbkmundotech
permlinkcomo-definir-ponteiros-na-linguagem-golang
votercoiotes
weight5000 (50.00%)
Transaction InfoBlock #32571612/Trx 855b5a2d0624c7226bb3b5596d4d43366c3b7a4a
View Raw JSON Data
{
  "block": 32571612,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "como-definir-ponteiros-na-linguagem-golang",
      "voter": "coiotes",
      "weight": 5000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-03T02:32:57",
  "trx_id": "855b5a2d0624c7226bb3b5596d4d43366c3b7a4a",
  "trx_in_block": 22,
  "virtual_op": 0
}
2019/05/03 02:32:33
authornbkmundotech
permlinkcomo-definir-ponteiros-na-linguagem-golang
votercoyotelation
weight5000 (50.00%)
Transaction InfoBlock #32571604/Trx a7a5ff032d6bedd6713201d9cfd9abda00c98acd
View Raw JSON Data
{
  "block": 32571604,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "como-definir-ponteiros-na-linguagem-golang",
      "voter": "coyotelation",
      "weight": 5000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-03T02:32:33",
  "trx_id": "a7a5ff032d6bedd6713201d9cfd9abda00c98acd",
  "trx_in_block": 10,
  "virtual_op": 0
}
2019/05/03 01:56:51
authormenkarbit
bodyObrigado por postar! Esse coment&aacute;rio &eacute; o novo bot que dar&aacute; upvote 5% para todos os posts que usam a tag #pt. [Ainda n&atilde;o votou em mim como witness? Clique aqui e d&ecirc; o seu voto! &Eacute; r&aacute;pido!](https://app.steemconnect.com/sign/account-witness-vote?witness=menkarbit&approve=true)
json metadata
parent authornbkmundotech
parent permlinkcomo-definir-ponteiros-na-linguagem-golang
permlinkre-como-definir-ponteiros-na-linguagem-golang-20190503t015649
title
Transaction InfoBlock #32570892/Trx df35e01efae1dc1eadbf18c4c2b40da0abc38d88
View Raw JSON Data
{
  "block": 32570892,
  "op": [
    "comment",
    {
      "author": "menkarbit",
      "body": "Obrigado por postar! Esse coment&aacute;rio &eacute; o novo bot que dar&aacute; upvote 5% para todos os posts que usam a tag #pt. [Ainda n&atilde;o votou em mim como witness? Clique aqui e d&ecirc; o seu voto! &Eacute; r&aacute;pido!](https://app.steemconnect.com/sign/account-witness-vote?witness=menkarbit&approve=true)",
      "json_metadata": "",
      "parent_author": "nbkmundotech",
      "parent_permlink": "como-definir-ponteiros-na-linguagem-golang",
      "permlink": "re-como-definir-ponteiros-na-linguagem-golang-20190503t015649",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-03T01:56:51",
  "trx_id": "df35e01efae1dc1eadbf18c4c2b40da0abc38d88",
  "trx_in_block": 1,
  "virtual_op": 0
}
2019/05/03 01:56:48
authornbkmundotech
permlinkcomo-definir-ponteiros-na-linguagem-golang
votermenkarbit
weight500 (5.00%)
Transaction InfoBlock #32570891/Trx ece19d682522c9ee62689568000bb141681ae729
View Raw JSON Data
{
  "block": 32570891,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "como-definir-ponteiros-na-linguagem-golang",
      "voter": "menkarbit",
      "weight": 500
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-03T01:56:48",
  "trx_id": "ece19d682522c9ee62689568000bb141681ae729",
  "trx_in_block": 43,
  "virtual_op": 0
}
2019/05/03 01:48:21
authornbkmundotech
body@@ -829,17 +829,17 @@ %5Cn%22, *p) - +%0A // =%3E O @@ -981,9 +981,8 @@ %0A%60%60%60 -%0D %0A*p
json metadata{"tags":["golang","ponteiros","pointer","go","pt"],"image":["https://img.youtube.com/vi/BBUQZ7pJxn4/0.jpg"],"links":["https://www.youtube.com/watch?v=BBUQZ7pJxn4&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkgolang
permlinkcomo-definir-ponteiros-na-linguagem-golang
titleComo Definir Ponteiros na Linguagem Golang
Transaction InfoBlock #32570722/Trx e7936e036c9f2718bd43c49656ee176b4317e992
View Raw JSON Data
{
  "block": 32570722,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "@@ -829,17 +829,17 @@\n %5Cn%22, *p)\n- \n+%0A\n // =%3E O \n@@ -981,9 +981,8 @@\n %0A%60%60%60\n-%0D\n %0A*p \n",
      "json_metadata": "{\"tags\":[\"golang\",\"ponteiros\",\"pointer\",\"go\",\"pt\"],\"image\":[\"https://img.youtube.com/vi/BBUQZ7pJxn4/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=BBUQZ7pJxn4&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "golang",
      "permlink": "como-definir-ponteiros-na-linguagem-golang",
      "title": "Como Definir Ponteiros na Linguagem Golang"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-03T01:48:21",
  "trx_id": "e7936e036c9f2718bd43c49656ee176b4317e992",
  "trx_in_block": 46,
  "virtual_op": 0
}
2019/05/03 01:41:06
authornbkmundotech
bodyPonteiros são variáveis que armazenam o endereço da memória usada por uma certa informação. Por exemplo, vamos definir uma variável para armazenar um valor inteiro: ``` var a int = 37 ``` A variável `a` armazena o valor 37, um inteiro, na memória. Para criar um ponteiro que aponta para o endereço da variável `a`, usamos a seguinte notação: ``` var p *int = &a ``` Na expressão acima, declaramos um ponteiro com nome `p`. O tipo de dados é um ponteiro para um `int`, por isso tem um asterisco antes de `int`. No lado direito do sinal de igual, temos o *ampersand* & para obter o endereço da variável `a`. Com o ponteiro `p` acima, podemos acessar o valor apontado por ele usando o operador de desreferenciação (*dereferencing*), que é um asterisco antes do nome da variável: ``` fmt.Printf("O valor apontado por p é %d\n", *p) // => O valor apontado por p é 37 ``` Podemos também modificar o valor referenciado pelo ponteiro fazendo uma atribuição da seguinte maneira: ``` *p = 62 ``` Ao imprimir o valor de `a`, veremos que ele mudou: ``` fmt.Println(a) // => 62 ``` Para aprender mais sobre como definir ponteiros na linguagem Golang, assista à aula do NBK Mundo Tech: https://www.youtube.com/watch?v=BBUQZ7pJxn4&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW Nos vemos lá!
json metadata{"tags":["golang","ponteiros","pointer","go","pt"],"image":["https://img.youtube.com/vi/BBUQZ7pJxn4/0.jpg"],"links":["https://www.youtube.com/watch?v=BBUQZ7pJxn4&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkgolang
permlinkcomo-definir-ponteiros-na-linguagem-golang
titleComo Definir Ponteiros na Linguagem Golang
Transaction InfoBlock #32570577/Trx 50a96e57de1b5762d5498f386686a93210338110
View Raw JSON Data
{
  "block": 32570577,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "Ponteiros são variáveis que armazenam o endereço da memória usada por uma certa informação.\n\nPor exemplo, vamos definir uma variável para armazenar um valor inteiro:\n\n```\nvar a int = 37\n``` \n\nA variável `a` armazena o valor 37, um inteiro, na memória.\n\nPara criar um ponteiro que aponta para o endereço da variável `a`, usamos a seguinte notação:\n\n```\nvar p *int = &a\n```\n\nNa expressão acima, declaramos um ponteiro com nome `p`. O tipo de dados é um ponteiro para um `int`, por isso tem um asterisco antes de `int`. No lado direito do sinal de igual, temos o *ampersand* & para obter o endereço da variável `a`.\n\nCom o ponteiro `p` acima, podemos acessar o valor apontado por ele usando o operador de desreferenciação (*dereferencing*), que é um asterisco antes do nome da variável:\n\n```\nfmt.Printf(\"O valor apontado por p é %d\\n\", *p) // => O valor apontado por p é 37\n```\n\nPodemos também modificar o valor referenciado pelo ponteiro fazendo uma atribuição da seguinte maneira:\n\n```\r\n*p = 62\n```\n\nAo imprimir o valor de `a`, veremos que ele mudou:\n\n```\nfmt.Println(a) // => 62\n```\n\nPara aprender mais sobre como definir ponteiros na linguagem Golang, assista à aula do NBK Mundo Tech:\n\nhttps://www.youtube.com/watch?v=BBUQZ7pJxn4&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW\n\nNos vemos lá!",
      "json_metadata": "{\"tags\":[\"golang\",\"ponteiros\",\"pointer\",\"go\",\"pt\"],\"image\":[\"https://img.youtube.com/vi/BBUQZ7pJxn4/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=BBUQZ7pJxn4&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "golang",
      "permlink": "como-definir-ponteiros-na-linguagem-golang",
      "title": "Como Definir Ponteiros na Linguagem Golang"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-03T01:41:06",
  "trx_id": "50a96e57de1b5762d5498f386686a93210338110",
  "trx_in_block": 32,
  "virtual_op": 0
}
2019/05/01 21:09:06
authormenkarbit
bodyObrigado por postar! Esse coment&aacute;rio &eacute; o novo bot que dar&aacute; upvote 5% para todos os posts que usam a tag #pt. [Ainda n&atilde;o votou em mim como witness? Clique aqui e d&ecirc; o seu voto! &Eacute; r&aacute;pido!](https://app.steemconnect.com/sign/account-witness-vote?witness=menkarbit&approve=true)
json metadata
parent authornbkmundotech
parent permlinkcomo-adiar-defer-a-execucao-de-funcoes-na-linguagem-golang
permlinkre-como-adiar-defer-a-execucao-de-funcoes-na-linguagem-golang-20190501t210904
title
Transaction InfoBlock #32536356/Trx b89a9df59f33704867389cd1f93453f4b2c2ac6d
View Raw JSON Data
{
  "block": 32536356,
  "op": [
    "comment",
    {
      "author": "menkarbit",
      "body": "Obrigado por postar! Esse coment&aacute;rio &eacute; o novo bot que dar&aacute; upvote 5% para todos os posts que usam a tag #pt. [Ainda n&atilde;o votou em mim como witness? Clique aqui e d&ecirc; o seu voto! &Eacute; r&aacute;pido!](https://app.steemconnect.com/sign/account-witness-vote?witness=menkarbit&approve=true)",
      "json_metadata": "",
      "parent_author": "nbkmundotech",
      "parent_permlink": "como-adiar-defer-a-execucao-de-funcoes-na-linguagem-golang",
      "permlink": "re-como-adiar-defer-a-execucao-de-funcoes-na-linguagem-golang-20190501t210904",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-01T21:09:06",
  "trx_id": "b89a9df59f33704867389cd1f93453f4b2c2ac6d",
  "trx_in_block": 7,
  "virtual_op": 0
}
2019/05/01 21:09:03
authornbkmundotech
permlinkcomo-adiar-defer-a-execucao-de-funcoes-na-linguagem-golang
votermenkarbit
weight500 (5.00%)
Transaction InfoBlock #32536355/Trx 65703c70f6a0654d6091b7cc368a5681bcc1264d
View Raw JSON Data
{
  "block": 32536355,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "como-adiar-defer-a-execucao-de-funcoes-na-linguagem-golang",
      "voter": "menkarbit",
      "weight": 500
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-01T21:09:03",
  "trx_id": "65703c70f6a0654d6091b7cc368a5681bcc1264d",
  "trx_in_block": 28,
  "virtual_op": 0
}
2019/05/01 20:58:39
authornbkmundotech
permlinkcomo-adiar-defer-a-execucao-de-funcoes-na-linguagem-golang
votermodemser
weight100 (1.00%)
Transaction InfoBlock #32536147/Trx e34b7a3c7036bf51444f01b9d457f77aaa01994e
View Raw JSON Data
{
  "block": 32536147,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "como-adiar-defer-a-execucao-de-funcoes-na-linguagem-golang",
      "voter": "modemser",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-01T20:58:39",
  "trx_id": "e34b7a3c7036bf51444f01b9d457f77aaa01994e",
  "trx_in_block": 0,
  "virtual_op": 0
}
2019/05/01 20:53:45
authornbkmundotech
bodyAs linhas de código em Golang são normalmente executadas em sequência, na ordem em que são escritas. Mas será que há alguma maneira de adiar a chamada de uma certa função? A resposta é sim, usando a palavra-chave **defer**. Vamos aprender o conceito de adiar uma chamada de função com um exemplo. No código abaixo, temos duas linhas (dentro do corpo da função `main`) que imprimem texto ao console. ``` func main() { fmt.Println("Oi") fmt.Println("Tudo bem?") } ``` A ordem de execução dos comandos é como escrita, então esperamos ver o seguinte no terminal: ``` Oi Tudo bem? ``` Agora, o que será que acontece quando introduzimos a palavra-chave `defer` antes da chamada da primeira linha do corpo de `main`: ``` func main() { defer fmt.Println("Oi") fmt.Println("Tudo bem?") } ``` Aqui está a saída do código acima: ``` Tudo bem? Oi ``` Note que a segunda linha foi executada antes da primeira. Mas o que aconteceu? Bem, a palavra-chave **defer** faz a chamada da função que segue ser adiada. Em mais detalhes, há uma *stack* de chamadas. Essa pilha armazena todas as chamadas que foram adiadas usando `defer`. Se tivermos três chamadas para o `defer`, como o seguinte: ``` defer fmt.Println("1") defer fmt.Println("2") defer fmt.Println("3") ``` Então as três chamadas serão adicionadas a pilha de chamadas, na seguinte ordem, do topo para o fundo: ``` // topo da stack fmt.Println("3") fmt.Println("2") fmt.Println("1") // fundo da stack ``` Quando chegar no final do corpo da função `main()`, os comandos armazenados nessa stack serão executados, começando do topo da stack. Então a primeira chamada a ser adiada na verdade será a última a ser executada; A última chamada a ser adiada será a primeira a ser executada. Isso segue o conceito de *last-in-first-out* (LIFO): a última entrada é a primeira saída. Para concluir, no último exemplo veremos a seguinte saída: ``` 3 2 1 ``` Para aprender mais sobre o `defer`, assista às aulas do NBK Mundo Tech: https://www.youtube.com/watch?v=meofoK5_OCI&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW
json metadata{"tags":["golang","defer","go","pt"],"image":["https://img.youtube.com/vi/meofoK5_OCI/0.jpg"],"links":["https://www.youtube.com/watch?v=meofoK5_OCI&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkgolang
permlinkcomo-adiar-defer-a-execucao-de-funcoes-na-linguagem-golang
titleComo Adiar (defer) a Execução de Funções na Linguagem Golang
Transaction InfoBlock #32536049/Trx 03f2c276d8d22882c69e6e7ac18a6894d42866f3
View Raw JSON Data
{
  "block": 32536049,
  "op": [
    "comment",
    {
      "author": "nbkmundotech",
      "body": "As linhas de código em Golang são normalmente executadas em sequência, na ordem em que são escritas. Mas será que há alguma maneira de adiar a chamada de uma certa função?\n\nA resposta é sim, usando a palavra-chave **defer**. Vamos aprender o conceito de adiar uma chamada de função com um exemplo. No código abaixo, temos duas linhas (dentro do corpo da função `main`) que imprimem texto ao console.\n\n```\nfunc main() {\n  fmt.Println(\"Oi\")\n  fmt.Println(\"Tudo bem?\")\n}\n```\n\nA ordem de execução dos comandos é como escrita, então esperamos ver o seguinte no terminal:\n\n```\nOi\nTudo bem?\n```\n\nAgora, o que será que acontece quando introduzimos a palavra-chave `defer` antes da chamada da primeira linha do corpo de `main`:\n\n```\nfunc main() {\n  defer fmt.Println(\"Oi\")\n  fmt.Println(\"Tudo bem?\")\n}\n```\n\nAqui está a saída do código acima:\n\n```\nTudo bem?\nOi\n```\n\nNote que a segunda linha foi executada antes da primeira. Mas o que aconteceu? Bem, a palavra-chave **defer** faz a chamada da função que segue ser adiada. \n\nEm mais detalhes, há uma *stack* de chamadas. Essa pilha armazena todas as chamadas que foram adiadas usando `defer`. Se tivermos três chamadas para o `defer`, como o seguinte:\n\n```\ndefer fmt.Println(\"1\")\ndefer fmt.Println(\"2\")\ndefer fmt.Println(\"3\")\n```\n\nEntão as três chamadas serão adicionadas a pilha de chamadas, na seguinte ordem, do topo para o fundo:\n\n```\n// topo da stack\nfmt.Println(\"3\")\nfmt.Println(\"2\")\nfmt.Println(\"1\")\n// fundo da stack\n```\n\nQuando chegar no final do corpo da função `main()`, os comandos armazenados nessa stack serão executados, começando do topo da stack.\n\nEntão a primeira chamada a ser adiada na verdade será a última a ser executada;\n\nA última chamada a ser adiada será a primeira a ser executada.\n\nIsso segue o conceito de *last-in-first-out* (LIFO): a última entrada é a primeira saída.\n\nPara concluir, no último exemplo veremos a seguinte saída:\n\n```\n3\n2\n1\n```\n\nPara aprender mais sobre o `defer`, assista às aulas do NBK Mundo Tech:\n\nhttps://www.youtube.com/watch?v=meofoK5_OCI&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW",
      "json_metadata": "{\"tags\":[\"golang\",\"defer\",\"go\",\"pt\"],\"image\":[\"https://img.youtube.com/vi/meofoK5_OCI/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=meofoK5_OCI&list=PLUbb2i4BuuzCX8CLeArvx663_0a_hSguW\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "golang",
      "permlink": "como-adiar-defer-a-execucao-de-funcoes-na-linguagem-golang",
      "title": "Como Adiar (defer) a Execução de Funções na Linguagem Golang"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-01T20:53:45",
  "trx_id": "03f2c276d8d22882c69e6e7ac18a6894d42866f3",
  "trx_in_block": 27,
  "virtual_op": 0
}
2019/04/27 03:09:51
authornbkmundotech
permlinkslices-de-duas-dimensoes-matriz-na-linguagem-golang
votermarkitoelias
weight10000 (100.00%)
Transaction InfoBlock #32399652/Trx becfcd39805b0be65eeb9c0abdf896e2078b9e15
View Raw JSON Data
{
  "block": 32399652,
  "op": [
    "vote",
    {
      "author": "nbkmundotech",
      "permlink": "slices-de-duas-dimensoes-matriz-na-linguagem-golang",
      "voter": "markitoelias",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-04-27T03:09:51",
  "trx_id": "becfcd39805b0be65eeb9c0abdf896e2078b9e15",
  "trx_in_block": 4,
  "virtual_op": 0
}

Account Metadata

POSTING JSON METADATA
profile{"name":"NBK Mundo Tech","about":"Aulas de desenvolvimento de software online","website":"https://www.youtube.com/channel/UC0leK16nPQYAErHagb8-eEg","profile_image":"https://cdn.steemitimages.com/DQme5LrKF79yK4GJxAq37SKhiZhrofXSXLgARXZRCdaWzdd/nbkmundotech_thumb128.png"}
JSON METADATA
profile{"name":"NBK Mundo Tech","about":"Aulas de desenvolvimento de software online","website":"https://www.youtube.com/channel/UC0leK16nPQYAErHagb8-eEg","profile_image":"https://cdn.steemitimages.com/DQme5LrKF79yK4GJxAq37SKhiZhrofXSXLgARXZRCdaWzdd/nbkmundotech_thumb128.png"}
{
  "posting_json_metadata": {
    "profile": {
      "name": "NBK Mundo Tech",
      "about": "Aulas de desenvolvimento de software online",
      "website": "https://www.youtube.com/channel/UC0leK16nPQYAErHagb8-eEg",
      "profile_image": "https://cdn.steemitimages.com/DQme5LrKF79yK4GJxAq37SKhiZhrofXSXLgARXZRCdaWzdd/nbkmundotech_thumb128.png"
    }
  },
  "json_metadata": {
    "profile": {
      "name": "NBK Mundo Tech",
      "about": "Aulas de desenvolvimento de software online",
      "website": "https://www.youtube.com/channel/UC0leK16nPQYAErHagb8-eEg",
      "profile_image": "https://cdn.steemitimages.com/DQme5LrKF79yK4GJxAq37SKhiZhrofXSXLgARXZRCdaWzdd/nbkmundotech_thumb128.png"
    }
  }
}

Auth Keys

Owner
Single Signature
Public Keys
STM63escPs2eC5Hs6cXpypLRGFYNLpJvR44RQ61mcuvabaT7ob1BD1/1
Active
Single Signature
Public Keys
STM6q7HUyECuQNsEifebVyx5rcirnh1RmEd8yhmpm7uSSdshCLomB1/1
Posting
Single Signature
Public Keys
STM5ayb2wPNpkMcMVZbxWU1oMoFs7CjzvgEn6tDP5fDLwSZMi679P1/1
Memo
STM4zaQ2y9uE3Hvhoe8Hfc152FmbuwZYhJa8D1LegRCn3itKDDCrE
{
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM63escPs2eC5Hs6cXpypLRGFYNLpJvR44RQ61mcuvabaT7ob1BD",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM6q7HUyECuQNsEifebVyx5rcirnh1RmEd8yhmpm7uSSdshCLomB",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM5ayb2wPNpkMcMVZbxWU1oMoFs7CjzvgEn6tDP5fDLwSZMi679P",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "memo": "STM4zaQ2y9uE3Hvhoe8Hfc152FmbuwZYhJa8D1LegRCn3itKDDCrE"
}

Witness Votes

0 / 30
No active witness votes.
[]