Ecoer Logo
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS0.00%
Net Worth
0.069USD
STEEM
0.000STEEM
SBD
0.072SBD
Effective Power
5.001SP
├── Own SP
0.628SP
└── Incoming Deleg
+4.373SP

Detailed Balance

STEEM
balance
0.000STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.000STEEM
STEEM POWER
Own SP
0.628SP
Delegated Out
0.000SP
Delegation In
4.373SP
Effective Power
5.001SP
Reward SP (pending)
0.022SP
SBD
sbd_balance
0.000SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.072SBD
{
  "balance": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.000 STEEM",
  "vesting_shares": "1022.037761 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "7121.622045 VESTS",
  "sbd_balance": "0.000 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "0.072 SBD",
  "conversions": []
}

Account Info

namehardtack
id768649
rank547,347
reputation487735537
created2018-02-19T10:02:57
recovery_accountsteem
proxyNone
post_count1
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2018-02-19T10:53:24
last_root_post2018-02-19T10:53:24
last_vote_time2018-05-18T09:33:57
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power0
delayed_votes0
balance0.000 STEEM
savings_balance0.000 STEEM
sbd_balance0.000 SBD
savings_sbd_balance0.000 SBD
vesting_shares1022.037761 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares7121.622045 VESTS
reward_vesting_balance44.953168 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_update1970-01-01T00:00:00
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": [
      [
        "STM7ynSmwmvPpuSuYAt2KxPyGBYuchkuqsD8iybgZUfmC4Yn2enpQ",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "balance": "0.000 STEEM",
  "can_vote": true,
  "comment_count": 0,
  "created": "2018-02-19T10:02:57",
  "curation_rewards": 0,
  "delegated_vesting_shares": "0.000000 VESTS",
  "downvote_manabar": {
    "current_mana": 2035914951,
    "last_update_time": 1779065952
  },
  "guest_bloggers": [],
  "id": 768649,
  "json_metadata": "",
  "last_account_recovery": "1970-01-01T00:00:00",
  "last_account_update": "1970-01-01T00:00:00",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_post": "2018-02-19T10:53:24",
  "last_root_post": "2018-02-19T10:53:24",
  "last_vote_time": "2018-05-18T09:33:57",
  "lifetime_vote_count": 0,
  "market_history": [],
  "memo_key": "STM5Ure7DZktp4kCtXWCKDHtM1HKX9QJuACxqmMDsvzYtvWinhcTT",
  "mined": false,
  "name": "hardtack",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "other_history": [],
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM51jdDxoPJX4k4yKLMgxtXxXMvNMnBz547pXZQNQxJMaRpKZr1S",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "pending_claimed_accounts": 0,
  "post_bandwidth": 0,
  "post_count": 1,
  "post_history": [],
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8Ruwzd18e8hAETXbBVhwczqM1Ya9pNwzcN3mcPE1ZE2AnGWX2x",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting_json_metadata": "",
  "posting_rewards": 44,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "proxy": "",
  "received_vesting_shares": "7121.622045 VESTS",
  "recovery_account": "steem",
  "reputation": 487735537,
  "reset_account": "null",
  "reward_sbd_balance": "0.072 SBD",
  "reward_steem_balance": "0.000 STEEM",
  "reward_vesting_balance": "44.953168 VESTS",
  "reward_vesting_steem": "0.022 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": "1970-01-01T00:00:00",
  "tags_usage": [],
  "to_withdraw": 0,
  "transfer_history": [],
  "vesting_balance": "0.000 STEEM",
  "vesting_shares": "1022.037761 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "vote_history": [],
  "voting_manabar": {
    "current_mana": "8143659806",
    "last_update_time": 1779065952
  },
  "voting_power": 0,
  "withdraw_routes": 0,
  "withdrawn": 0,
  "witness_votes": [],
  "witnesses_voted_for": 0,
  "rank": 547347
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
steemdelegated 4.373 SP to @hardtack
2026/05/18 00:59:12
delegatorsteem
delegateehardtack
vesting shares7121.622045 VESTS
Transaction InfoBlock #106144325/Trx 3b41cb1fe5bfabb0f013c26742d48b3d9b089217
View Raw JSON Data
{
  "trx_id": "3b41cb1fe5bfabb0f013c26742d48b3d9b089217",
  "block": 106144325,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-05-18T00:59:12",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "7121.622045 VESTS"
    }
  ]
}
steemdelegated 2.708 SP to @hardtack
2026/05/12 06:48:27
delegatorsteem
delegateehardtack
vesting shares4409.411640 VESTS
Transaction InfoBlock #105979262/Trx bb208c6a8c2e01799e41d335963da1c09016afd2
View Raw JSON Data
{
  "trx_id": "bb208c6a8c2e01799e41d335963da1c09016afd2",
  "block": 105979262,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-05-12T06:48:27",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "4409.411640 VESTS"
    }
  ]
}
steemdelegated 4.381 SP to @hardtack
2026/04/26 00:18:48
delegatorsteem
delegateehardtack
vesting shares7134.137801 VESTS
Transaction InfoBlock #105511954/Trx 160ca91f5df8f01ce32879fc955d4a6b2c250525
View Raw JSON Data
{
  "trx_id": "160ca91f5df8f01ce32879fc955d4a6b2c250525",
  "block": 105511954,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-04-26T00:18:48",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "7134.137801 VESTS"
    }
  ]
}
steemdelegated 2.733 SP to @hardtack
2026/01/23 09:45:45
delegatorsteem
delegateehardtack
vesting shares4450.958459 VESTS
Transaction InfoBlock #102854161/Trx 3d2f64c40695e325c84445baa24389a7811d3cfa
View Raw JSON Data
{
  "trx_id": "3d2f64c40695e325c84445baa24389a7811d3cfa",
  "block": 102854161,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-01-23T09:45:45",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "4450.958459 VESTS"
    }
  ]
}
steemdelegated 2.834 SP to @hardtack
2024/12/17 05:03:54
delegatorsteem
delegateehardtack
vesting shares4615.177656 VESTS
Transaction InfoBlock #91300545/Trx 529a30852b14cc92faac713c3ae2d74b3309ac5f
View Raw JSON Data
{
  "trx_id": "529a30852b14cc92faac713c3ae2d74b3309ac5f",
  "block": 91300545,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2024-12-17T05:03:54",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "4615.177656 VESTS"
    }
  ]
}
steemdelegated 2.938 SP to @hardtack
2023/11/13 20:46:27
delegatorsteem
delegateehardtack
vesting shares4784.311188 VESTS
Transaction InfoBlock #79854737/Trx a6846755386b2ce3ff352549a4eafc6d2f566c3b
View Raw JSON Data
{
  "trx_id": "a6846755386b2ce3ff352549a4eafc6d2f566c3b",
  "block": 79854737,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2023-11-13T20:46:27",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "4784.311188 VESTS"
    }
  ]
}
steemdelegated 4.742 SP to @hardtack
2023/09/21 22:41:27
delegatorsteem
delegateehardtack
vesting shares7721.589974 VESTS
Transaction InfoBlock #78348859/Trx bf30c271322cdc0f7e2662b82c00c833f092c722
View Raw JSON Data
{
  "trx_id": "bf30c271322cdc0f7e2662b82c00c833f092c722",
  "block": 78348859,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2023-09-21T22:41:27",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "7721.589974 VESTS"
    }
  ]
}
steemdelegated 4.878 SP to @hardtack
2022/11/03 12:22:30
delegatorsteem
delegateehardtack
vesting shares7943.271412 VESTS
Transaction InfoBlock #69114065/Trx 24c2e895e6204f34b9173549c0990309a8cfeddc
View Raw JSON Data
{
  "trx_id": "24c2e895e6204f34b9173549c0990309a8cfeddc",
  "block": 69114065,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2022-11-03T12:22:30",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "7943.271412 VESTS"
    }
  ]
}
steemdelegated 5.013 SP to @hardtack
2022/01/17 11:35:09
delegatorsteem
delegateehardtack
vesting shares8163.804643 VESTS
Transaction InfoBlock #60810166/Trx 57e960a18393fc4cd45136a918ff5d9a01af7881
View Raw JSON Data
{
  "trx_id": "57e960a18393fc4cd45136a918ff5d9a01af7881",
  "block": 60810166,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2022-01-17T11:35:09",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "8163.804643 VESTS"
    }
  ]
}
steemdelegated 5.126 SP to @hardtack
2021/06/14 01:28:39
delegatorsteem
delegateehardtack
vesting shares8347.573301 VESTS
Transaction InfoBlock #54608515/Trx eec284b325195dfcf7f85146417d9b38f95c40bc
View Raw JSON Data
{
  "trx_id": "eec284b325195dfcf7f85146417d9b38f95c40bc",
  "block": 54608515,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2021-06-14T01:28:39",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "8347.573301 VESTS"
    }
  ]
}
steemdelegated 5.241 SP to @hardtack
2020/12/11 11:46:24
delegatorsteem
delegateehardtack
vesting shares8534.995275 VESTS
Transaction InfoBlock #49355946/Trx 2bd2cde5aa267824de8af452bb21dbc6023ba8ca
View Raw JSON Data
{
  "trx_id": "2bd2cde5aa267824de8af452bb21dbc6023ba8ca",
  "block": 49355946,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-11T11:46:24",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "8534.995275 VESTS"
    }
  ]
}
steemdelegated 1.174 SP to @hardtack
2020/12/06 05:23:33
delegatorsteem
delegateehardtack
vesting shares1912.543513 VESTS
Transaction InfoBlock #49207505/Trx 85a7a6b4f6d1574a2a0e84a03fcd8e6d57d6bac8
View Raw JSON Data
{
  "trx_id": "85a7a6b4f6d1574a2a0e84a03fcd8e6d57d6bac8",
  "block": 49207505,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-06T05:23:33",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "1912.543513 VESTS"
    }
  ]
}
steemdelegated 5.245 SP to @hardtack
2020/12/05 15:24:21
delegatorsteem
delegateehardtack
vesting shares8541.203129 VESTS
Transaction InfoBlock #49191038/Trx e880f1b40fff2c995c9a000ea5ae645554b1c0bf
View Raw JSON Data
{
  "trx_id": "e880f1b40fff2c995c9a000ea5ae645554b1c0bf",
  "block": 49191038,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-05T15:24:21",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "8541.203129 VESTS"
    }
  ]
}
steemdelegated 1.179 SP to @hardtack
2020/11/02 16:58:42
delegatorsteem
delegateehardtack
vesting shares1920.017158 VESTS
Transaction InfoBlock #48259377/Trx ede325dabc197e56161ed0af12408257c9a3e8c8
View Raw JSON Data
{
  "trx_id": "ede325dabc197e56161ed0af12408257c9a3e8c8",
  "block": 48259377,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-11-02T16:58:42",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "1920.017158 VESTS"
    }
  ]
}
steemdelegated 5.370 SP to @hardtack
2020/05/09 06:21:36
delegatorsteem
delegateehardtack
vesting shares8744.008488 VESTS
Transaction InfoBlock #43217765/Trx f78739604fc86c7b44ecd7b204121d66b1ec6d8a
View Raw JSON Data
{
  "trx_id": "f78739604fc86c7b44ecd7b204121d66b1ec6d8a",
  "block": 43217765,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-05-09T06:21:36",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "8744.008488 VESTS"
    }
  ]
}
steemdelegated 1.200 SP to @hardtack
2020/05/08 10:03:48
delegatorsteem
delegateehardtack
vesting shares1953.311140 VESTS
Transaction InfoBlock #43193978/Trx 57712f9141495520b470959ee6d4b130cbb9bf45
View Raw JSON Data
{
  "trx_id": "57712f9141495520b470959ee6d4b130cbb9bf45",
  "block": 43193978,
  "trx_in_block": 8,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-05-08T10:03:48",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "1953.311140 VESTS"
    }
  ]
}
2020/02/19 10:18:12
parent authorhardtack
parent permlinkwtf-1
authorsteemitboard
permlinksteemitboard-notify-hardtack-20200219t101812000z
title
bodyCongratulations @hardtack! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@hardtack/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@hardtack) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=hardtack)_</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/steemitboard/@steemitboard/valentine-s-day-challenge-give-a-badge-to-your-beloved"><img src="https://steemitimages.com/64x128/http://i.cubeupload.com/LvDzr5.png"></a></td><td><a href="https://steemit.com/steemitboard/@steemitboard/valentine-s-day-challenge-give-a-badge-to-your-beloved">Valentine's day challenge - Give a badge to your beloved!</a></td></tr></table> ###### [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"]}
Transaction InfoBlock #40953033/Trx e60a622e33fcbb4f4849d8d1cf0813416da1ea19
View Raw JSON Data
{
  "trx_id": "e60a622e33fcbb4f4849d8d1cf0813416da1ea19",
  "block": 40953033,
  "trx_in_block": 10,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-02-19T10:18:12",
  "op": [
    "comment",
    {
      "parent_author": "hardtack",
      "parent_permlink": "wtf-1",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-hardtack-20200219t101812000z",
      "title": "",
      "body": "Congratulations @hardtack! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@hardtack/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@hardtack) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=hardtack)_</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/steemitboard/@steemitboard/valentine-s-day-challenge-give-a-badge-to-your-beloved\"><img src=\"https://steemitimages.com/64x128/http://i.cubeupload.com/LvDzr5.png\"></a></td><td><a href=\"https://steemit.com/steemitboard/@steemitboard/valentine-s-day-challenge-give-a-badge-to-your-beloved\">Valentine's day challenge - Give a badge to your beloved!</a></td></tr></table>\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\"]}"
    }
  ]
}
steemdelegated 5.468 SP to @hardtack
2019/08/03 02:19:03
delegatorsteem
delegateehardtack
vesting shares8904.166999 VESTS
Transaction InfoBlock #35217462/Trx 42102440b852192cb2855b2ece3424fe3a34d789
View Raw JSON Data
{
  "trx_id": "42102440b852192cb2855b2ece3424fe3a34d789",
  "block": 35217462,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-08-03T02:19:03",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "8904.166999 VESTS"
    }
  ]
}
2019/02/19 10:51:27
parent authorhardtack
parent permlinkwtf-1
authorsteemitboard
permlinksteemitboard-notify-hardtack-20190219t105126000z
title
bodyCongratulations @hardtack! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@hardtack/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table> <sub>_[Click here to view your Board](https://steemitboard.com/@hardtack)_</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/valentine/@steemitboard/valentine-challenge-love-is-in-the-air"><img src="https://steemitimages.com/64x128/http://i.cubeupload.com/LvDzr5.png"></a></td><td><a href="https://steemit.com/valentine/@steemitboard/valentine-challenge-love-is-in-the-air">Valentine challenge - Love is in the air!</a></td></tr></table> > Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
Transaction InfoBlock #30482089/Trx 92e76d0682e937e80ec9f6407b54d00ab2ebbfcd
View Raw JSON Data
{
  "trx_id": "92e76d0682e937e80ec9f6407b54d00ab2ebbfcd",
  "block": 30482089,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-02-19T10:51:27",
  "op": [
    "comment",
    {
      "parent_author": "hardtack",
      "parent_permlink": "wtf-1",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-hardtack-20190219t105126000z",
      "title": "",
      "body": "Congratulations @hardtack! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@hardtack/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table>\n\n<sub>_[Click here to view your Board](https://steemitboard.com/@hardtack)_</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/valentine/@steemitboard/valentine-challenge-love-is-in-the-air\"><img src=\"https://steemitimages.com/64x128/http://i.cubeupload.com/LvDzr5.png\"></a></td><td><a href=\"https://steemit.com/valentine/@steemitboard/valentine-challenge-love-is-in-the-air\">Valentine challenge - Love is in the air!</a></td></tr></table>\n\n> Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
    }
  ]
}
steemdelegated 5.590 SP to @hardtack
2018/08/17 10:47:06
delegatorsteem
delegateehardtack
vesting shares9102.737969 VESTS
Transaction InfoBlock #25144636/Trx 2085dc4b483bedb045726d4cd0655869657dfe38
View Raw JSON Data
{
  "trx_id": "2085dc4b483bedb045726d4cd0655869657dfe38",
  "block": 25144636,
  "trx_in_block": 15,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-08-17T10:47:06",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "9102.737969 VESTS"
    }
  ]
}
steemdelegated 18.114 SP to @hardtack
2018/05/19 17:05:48
delegatorsteem
delegateehardtack
vesting shares29496.015972 VESTS
Transaction InfoBlock #22572401/Trx 3072ec7ca73470eb937e2caa81174789e6beaf2a
View Raw JSON Data
{
  "trx_id": "3072ec7ca73470eb937e2caa81174789e6beaf2a",
  "block": 22572401,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-19T17:05:48",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "hardtack",
      "vesting_shares": "29496.015972 VESTS"
    }
  ]
}
hardtackupvoted (100.00%) @mmmagazine / 2-2
2018/05/18 09:33:57
voterhardtack
authormmmagazine
permlink2-2
weight10000 (100.00%)
Transaction InfoBlock #22534572/Trx a2cfe708a57a0b4120eef00cfa90c46d34887a8d
View Raw JSON Data
{
  "trx_id": "a2cfe708a57a0b4120eef00cfa90c46d34887a8d",
  "block": 22534572,
  "trx_in_block": 39,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-18T09:33:57",
  "op": [
    "vote",
    {
      "voter": "hardtack",
      "author": "mmmagazine",
      "permlink": "2-2",
      "weight": 10000
    }
  ]
}
hardtackreceived 0.072 SBD, 0.028 SP author reward for @hardtack / wtf-1
2018/02/26 10:53:24
authorhardtack
permlinkwtf-1
sbd payout0.072 SBD
steem payout0.000 STEEM
vesting payout44.953168 VESTS
Transaction InfoBlock #20205869/Virtual Operation #3
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 20205869,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 3,
  "timestamp": "2018-02-26T10:53:24",
  "op": [
    "author_reward",
    {
      "author": "hardtack",
      "permlink": "wtf-1",
      "sbd_payout": "0.072 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "44.953168 VESTS"
    }
  ]
}
2018/02/20 10:20:15
parent authorhardtack
parent permlinkwtf-1
authorsteemitboard
permlinksteemitboard-notify-hardtack-20180220t102017000z
title
bodyCongratulations @hardtack! You have completed some achievement on Steemit and have been rewarded with new badge(s) : [![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/firstpost.png)](http://steemitboard.com/@hardtack) You published your First Post [![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/firstvote.png)](http://steemitboard.com/@hardtack) You made your First Vote [![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/firstvoted.png)](http://steemitboard.com/@hardtack) You got a First Vote Click on any badge to view your own Board of Honor on SteemitBoard. For more information about SteemitBoard, click [here](https://steemit.com/@steemitboard) If you no longer want to receive notifications, reply to this comment with the word `STOP` > Upvote this notification to help all Steemit users. Learn why [here](https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png)!
json metadata{"image":["https://steemitboard.com/img/notifications.png"]}
Transaction InfoBlock #20032443/Trx a31ccb9617b3f59b2d93c165fde4a91ddbcac95a
View Raw JSON Data
{
  "trx_id": "a31ccb9617b3f59b2d93c165fde4a91ddbcac95a",
  "block": 20032443,
  "trx_in_block": 60,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-20T10:20:15",
  "op": [
    "comment",
    {
      "parent_author": "hardtack",
      "parent_permlink": "wtf-1",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-hardtack-20180220t102017000z",
      "title": "",
      "body": "Congratulations @hardtack! You have completed some achievement on Steemit and have been rewarded with new badge(s) :\n\n[![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/firstpost.png)](http://steemitboard.com/@hardtack) You published your First Post\n[![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/firstvote.png)](http://steemitboard.com/@hardtack) You made your First Vote\n[![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/firstvoted.png)](http://steemitboard.com/@hardtack) You got a First Vote\n\nClick on any badge to view your own Board of Honor on SteemitBoard.\nFor more information about SteemitBoard, click [here](https://steemit.com/@steemitboard)\n\nIf you no longer want to receive notifications, reply to this comment with the word `STOP`\n\n> Upvote this notification to help all Steemit users. Learn why [here](https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png)!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notifications.png\"]}"
    }
  ]
}
hardtackpublished a new post: wtf-1
2018/02/20 09:59:39
parent author
parent permlinkprogramming
authorhardtack
permlinkwtf-1
titleWTF - 1
body@@ -3926,16 +3926,24 @@ %EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4. %0A +%3Cstrike%3E %EC%9D%B4%EB%9F%AC%ED%95%9C %EA%B0%9C%EB%85%90%EC%9D%84 @@ -3972,16 +3972,25 @@ eact%EC%9E%85%EB%8B%88%EB%8B%A4. +%3C/strike%3E %0A%0A%EB%8B%A4%EB%A5%B8 %EC%98%88%EB%A1%9C,
json metadata{"tags":["programming","functional","reactive","language"],"links":["https://ko.wikipedia.org/wiki/튜링_완전"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #20032031/Trx 806b62e4041e696e38f9fb9d1038065115a05cd2
View Raw JSON Data
{
  "trx_id": "806b62e4041e696e38f9fb9d1038065115a05cd2",
  "block": 20032031,
  "trx_in_block": 14,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-20T09:59:39",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "programming",
      "author": "hardtack",
      "permlink": "wtf-1",
      "title": "WTF - 1",
      "body": "@@ -3926,16 +3926,24 @@\n  %EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4. %0A\n+%3Cstrike%3E\n %EC%9D%B4%EB%9F%AC%ED%95%9C %EA%B0%9C%EB%85%90%EC%9D%84 \n@@ -3972,16 +3972,25 @@\n eact%EC%9E%85%EB%8B%88%EB%8B%A4.\n+%3C/strike%3E\n %0A%0A%EB%8B%A4%EB%A5%B8 %EC%98%88%EB%A1%9C,\n",
      "json_metadata": "{\"tags\":[\"programming\",\"functional\",\"reactive\",\"language\"],\"links\":[\"https://ko.wikipedia.org/wiki/튜링_완전\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/02/20 09:58:18
required auths[]
required posting auths["hardtack"]
idfollow
json["follow",{"follower":"hardtack","following":"authors.leage","what":["ignore"]}]
Transaction InfoBlock #20032004/Trx 356138660075865c4e1beef6c1ba04013600e0e2
View Raw JSON Data
{
  "trx_id": "356138660075865c4e1beef6c1ba04013600e0e2",
  "block": 20032004,
  "trx_in_block": 17,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-20T09:58:18",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "hardtack"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"hardtack\",\"following\":\"authors.leage\",\"what\":[\"ignore\"]}]"
    }
  ]
}
authors.leageupvoted (10.00%) @hardtack / wtf-1
2018/02/20 08:23:54
voterauthors.leage
authorhardtack
permlinkwtf-1
weight1000 (10.00%)
Transaction InfoBlock #20030116/Trx b6a167b87f1f6b237c3005759206ecf3a837bec0
View Raw JSON Data
{
  "trx_id": "b6a167b87f1f6b237c3005759206ecf3a837bec0",
  "block": 20030116,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-20T08:23:54",
  "op": [
    "vote",
    {
      "voter": "authors.leage",
      "author": "hardtack",
      "permlink": "wtf-1",
      "weight": 1000
    }
  ]
}
2018/02/20 08:23:48
parent authorhardtack
parent permlinkwtf-1
authorauthors.leage
permlinkre-hardtack-wtf-1-20180220t082418
title
body### Greetings my friend! **I am glad that our community has increased with one more member! I hope that you will find here a way to realize yourself, and to benefit others Be yourself, be sincere, be honest and worthy of the place you are in.** I Upvoted your post and Resteem of your greeting in my feed, where you you can search friends and other minnows... I think you can use this collected information: --- First off all! Most answers to your questions you can find here https://www.steemithelp.net/ --- Blockchain Explorer [https://steemd.com/@_Your_Steemit_Nickname](https://steemd.com) Blockchain Explorer and statistics [https://steemdb.com/@_Your_Steemit_Nickname_](https://steemdb.com) Your account achievements [https://steemitboard.com](https://steemitboard.com/board.html?user=clixmoney) Navigate the prices and exchanges where you can buy Steem or sell SBD [Steem](https://coinmarketcap.com/currencies/steem/#markets) [SBD](https://coinmarketcap.com/currencies/steem-dollars/#markets) --- _For the your first post use please #introduceyourself tag! Thank you:)_ _You can become a participant in the competitions, by selecting the desired in the tag #contest or invent and organize your own._ _More_ [_useful tips_](https://steemit.com/inspiration/@clixmoney/the-best-steemit-tips-for-my-dear-followers-and-all-steemit-users) _and_ [_steemit app_](https://steemit.com/steemit/@clixmoney/the-best-steemit-tools-for-my-dear-followers-and-all-steemit-users) _you can find in #steemit & #steem tag_ --- There is a Steemit chat with various rooms, in which you can ask questions, advice, or place your post to advertise it to the community https://steemit.chat Upvote chat in the telegram massager: https://t.me/steem https://t.me/intercambiosteemit https://t.me/Steemplus Similarly, by reading the posts of other Steemians you can find invitations to the Discord channels! They often contain upvote chats, and you can easily find friends of interest in them Here are some of them: <sub>_World Of Photography https://discord.gg/4Ezx2eM_ _MinnowBOOSTER https://discord.gg/k7fWQD7_ _SteemSports https://discord.gg/ApvKKUF_ _WhaleShares https://discord.gg/DX7zErC_ _Steem Gigs https://discord.gg/NuFVxKA_ _SteemTrail https://discord.gg/gHt2aGN_ _Minnow-Power channel https://discord.gg/WvFQzXu_ <sub>notify</sub> _Steemit Lover https://discord.gg/EVKhssF_ _GuideSteemit https://discord.gg/nkwh36Y_ _BuildAWhale https://discord.gg/yebax27_ _Steemit ramble https://discord.gg/9pUSjv8_ _VotoVZLA https://discord.gg/VhgeFJQ_ _Steem Life https://discord.gg/SD3ReMm_ _SteemLab https://discord.gg/phWQveU_ _MinnowsUnite https://discord.gg/CJEEfgb_ _Steemians https://discord.gg/uR95R7t_ _Society for Narwhal https://discord.gg/repxc9v_</sub> Territorial communities <sub>Steemit Philippines https://discord.gg/VyG83AN | https://discord.gg/Q8956PF Steem NIGERIA https://discord.gg/Y3u2z6T East Coast Steem https://discord.gg/QXduBuk Ukraine SteemOn https://discord.gg/cxq8JQd Ru-Steem Trail https://discord.gg/8KyDBUx</sub> _Let us know if you know more or create new!_ --- **Alternative interfaces:** https://zappl.com https://busy.org https://steepshot.io (-mobile app have to) Forums https://chainbb.com --- **Mobile app** - eSteem : for Android https://play.google.com/store/apps/details?id=com.netsolutions.esteem&hl=ru for iOS https://itunes.apple.com/us/app/esteem-mobile/id1141397898?mt=8 --- **Forget about youtube! There is https://d.tube!** **Have fun and joke yourself with https://dmania.lol/** --- A public SQL database with all blockchain data http://steemsql.com https://sql.steemhelpers.com From Developers https://steemconnect.com **Rewarding Open Source Contributors** **https://utopian.io | https://discord.gg/kPYBCYK** --- **Autocuration**1 https://steemvoter.com **Autocuration**2 https://streemian.com/profile/curationtrail/trailing/943 **Bot Tracker** https://s3.amazonaws.com/yabapmatt/bottracker/bottracker.html#paid --- Use @minnowbooster for boost your rewards! More https://www.minnowbooster.net https://www.minnowbooster.net/minnowbannericon.jpg --- ## You also need to select witnesses and vote for them. These are people who ensure decentralization of the work of the blockchain. Make your choice consciously, by choosing responsible and useful delegates https://steemit.com/~witnesses --- **[Golos](https://steemit.com/sbdgiveaway/@dimarss/dejstvitelno-li-golos-russkoyazychnaya-platforma-12-08) wait for you too!** Find more [here](https://coinmarketcap.com/currencies/golos/) about Golos.io blockchain platform - analogue Steemit! This is Steemit,s younger brother! **Join us: https://golos.io/create_account** --- _Regarding the correction, insertion or deletion of your information, please contact @Dimarss_
json metadata{"app":"steem-go"}
Transaction InfoBlock #20030114/Trx ddf242992f8a76bc52f9248b94a3ef2c6aa7e817
View Raw JSON Data
{
  "trx_id": "ddf242992f8a76bc52f9248b94a3ef2c6aa7e817",
  "block": 20030114,
  "trx_in_block": 40,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-20T08:23:48",
  "op": [
    "comment",
    {
      "parent_author": "hardtack",
      "parent_permlink": "wtf-1",
      "author": "authors.leage",
      "permlink": "re-hardtack-wtf-1-20180220t082418",
      "title": "",
      "body": "### Greetings my friend!\r\n**I am glad that our community has increased with one more member!\r\nI hope that you will find here a way to realize yourself, and to benefit others\r\nBe yourself, be sincere, be honest and worthy of the place you are in.**\r\n\r\nI Upvoted  your post and Resteem of your greeting in my feed, where you you can search friends and other minnows...\r\n\r\n\r\nI think you can use this  collected information:\r\n\r\n---\r\nFirst off all! Most answers to your questions you can find here https://www.steemithelp.net/\r\n---\r\n\r\nBlockchain Explorer [https://steemd.com/@_Your_Steemit_Nickname](https://steemd.com)\r\nBlockchain Explorer and statistics [https://steemdb.com/@_Your_Steemit_Nickname_](https://steemdb.com)\r\nYour account achievements [https://steemitboard.com](https://steemitboard.com/board.html?user=clixmoney)\r\n\r\nNavigate the prices and exchanges where you can buy Steem or sell SBD\r\n[Steem](https://coinmarketcap.com/currencies/steem/#markets)\r\n[SBD](https://coinmarketcap.com/currencies/steem-dollars/#markets)\r\n\r\n---\r\n\r\n_For the your first post use please #introduceyourself tag! Thank you:)_\r\n_You can become a participant in the competitions, by selecting the desired in the tag #contest or invent and organize your own._\r\n_More_ [_useful tips_](https://steemit.com/inspiration/@clixmoney/the-best-steemit-tips-for-my-dear-followers-and-all-steemit-users) _and_ [_steemit app_](https://steemit.com/steemit/@clixmoney/the-best-steemit-tools-for-my-dear-followers-and-all-steemit-users) _you can find in #steemit & #steem tag_\r\n\r\n---\r\n\r\nThere is a Steemit chat with various rooms, in which you can ask questions, advice, or place your post to advertise it to the community https://steemit.chat\r\n\r\nUpvote chat in the telegram massager: \r\nhttps://t.me/steem\r\nhttps://t.me/intercambiosteemit\r\nhttps://t.me/Steemplus\r\n\r\n\r\nSimilarly, by reading the posts of other Steemians you can find invitations to the  Discord channels! They often contain upvote chats, and you can easily find friends of interest in them\r\nHere are some of them:\r\n<sub>_World Of Photography https://discord.gg/4Ezx2eM_\r\n_MinnowBOOSTER https://discord.gg/k7fWQD7_\r\n_SteemSports https://discord.gg/ApvKKUF_\r\n_WhaleShares https://discord.gg/DX7zErC_\r\n_Steem Gigs https://discord.gg/NuFVxKA_\r\n_SteemTrail https://discord.gg/gHt2aGN_\r\n_Minnow-Power channel https://discord.gg/WvFQzXu_ <sub>notify</sub>\r\n_Steemit Lover https://discord.gg/EVKhssF_\r\n_GuideSteemit https://discord.gg/nkwh36Y_\r\n_BuildAWhale https://discord.gg/yebax27_\r\n_Steemit ramble https://discord.gg/9pUSjv8_\r\n_VotoVZLA https://discord.gg/VhgeFJQ_\r\n_Steem Life https://discord.gg/SD3ReMm_\r\n_SteemLab https://discord.gg/phWQveU_\r\n_MinnowsUnite https://discord.gg/CJEEfgb_\r\n_Steemians https://discord.gg/uR95R7t_\r\n_Society for Narwhal https://discord.gg/repxc9v_</sub>\r\n\r\nTerritorial communities\r\n<sub>Steemit Philippines https://discord.gg/VyG83AN | https://discord.gg/Q8956PF\r\nSteem NIGERIA https://discord.gg/Y3u2z6T\r\nEast Coast Steem https://discord.gg/QXduBuk\r\nUkraine SteemOn https://discord.gg/cxq8JQd\r\nRu-Steem Trail https://discord.gg/8KyDBUx</sub>\r\n_Let us know if you know more or create new!_\r\n\r\n---\r\n\r\n**Alternative interfaces:**\r\nhttps://zappl.com\r\nhttps://busy.org\r\nhttps://steepshot.io (-mobile app have to)\r\nForums https://chainbb.com\r\n\r\n---\r\n\r\n**Mobile app** - eSteem :\r\nfor Android https://play.google.com/store/apps/details?id=com.netsolutions.esteem&hl=ru\r\nfor iOS https://itunes.apple.com/us/app/esteem-mobile/id1141397898?mt=8\r\n\r\n---\r\n\r\n**Forget about youtube! There is https://d.tube!**\r\n**Have fun and joke yourself with https://dmania.lol/**\r\n\r\n---\r\n\r\nA public SQL database with all blockchain data http://steemsql.com https://sql.steemhelpers.com\r\nFrom Developers https://steemconnect.com\r\n**Rewarding Open Source Contributors**\r\n**https://utopian.io | https://discord.gg/kPYBCYK**\r\n\r\n---\r\n**Autocuration**1 https://steemvoter.com\r\n**Autocuration**2 https://streemian.com/profile/curationtrail/trailing/943\r\n**Bot Tracker** https://s3.amazonaws.com/yabapmatt/bottracker/bottracker.html#paid\r\n\r\n---\r\nUse @minnowbooster for boost your rewards!\r\nMore https://www.minnowbooster.net\r\nhttps://www.minnowbooster.net/minnowbannericon.jpg\r\n\r\n---\r\n\r\n## You also need to select witnesses and vote for them. These are people who ensure decentralization of the work of the blockchain. Make your choice consciously, by choosing responsible and useful delegates\r\nhttps://steemit.com/~witnesses\r\n\r\n---\r\n\r\n**[Golos](https://steemit.com/sbdgiveaway/@dimarss/dejstvitelno-li-golos-russkoyazychnaya-platforma-12-08) wait for you too!** Find more [here](https://coinmarketcap.com/currencies/golos/) about Golos.io blockchain  platform - analogue Steemit! This is Steemit,s younger brother! **Join us: https://golos.io/create_account**\r\n---\r\n\r\n_Regarding the correction, insertion or deletion of your information, please contact @Dimarss_",
      "json_metadata": "{\"app\":\"steem-go\"}"
    }
  ]
}
2018/02/20 06:51:27
voterhardtack
authordevxoul
permlinkre-hardtack-wtf-1-20180219t200429296z
weight10000 (100.00%)
Transaction InfoBlock #20028267/Trx 04ddf89af4406bc5c5434dd8ea5b36609330651b
View Raw JSON Data
{
  "trx_id": "04ddf89af4406bc5c5434dd8ea5b36609330651b",
  "block": 20028267,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-20T06:51:27",
  "op": [
    "vote",
    {
      "voter": "hardtack",
      "author": "devxoul",
      "permlink": "re-hardtack-wtf-1-20180219t200429296z",
      "weight": 10000
    }
  ]
}
hardtackpublished a new post: wtf-1
2018/02/20 06:28:24
parent author
parent permlinkprogramming
authorhardtack
permlinkwtf-1
titleWTF - 1
body@@ -4472,16 +4472,17 @@ %EC%9E%98 %EC%82%B4%EB%A6%B0 %EB%8F%84%EA%B5%AC +%EA%B0%80 Apache
json metadata{"tags":["programming","functional","reactive","language"],"links":["https://ko.wikipedia.org/wiki/튜링_완전"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #20027807/Trx 71073cf9d5f37a01b1d3881a5015ad137535a553
View Raw JSON Data
{
  "trx_id": "71073cf9d5f37a01b1d3881a5015ad137535a553",
  "block": 20027807,
  "trx_in_block": 62,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-20T06:28:24",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "programming",
      "author": "hardtack",
      "permlink": "wtf-1",
      "title": "WTF - 1",
      "body": "@@ -4472,16 +4472,17 @@\n  %EC%9E%98 %EC%82%B4%EB%A6%B0 %EB%8F%84%EA%B5%AC\n+%EA%B0%80\n  Apache \n",
      "json_metadata": "{\"tags\":[\"programming\",\"functional\",\"reactive\",\"language\"],\"links\":[\"https://ko.wikipedia.org/wiki/튜링_완전\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
carpent.ianupvoted (100.00%) @hardtack / wtf-1
2018/02/20 05:13:42
votercarpent.ian
authorhardtack
permlinkwtf-1
weight10000 (100.00%)
Transaction InfoBlock #20026313/Trx 246e86e69f38adafe661711f035327c17c76c931
View Raw JSON Data
{
  "trx_id": "246e86e69f38adafe661711f035327c17c76c931",
  "block": 20026313,
  "trx_in_block": 14,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-20T05:13:42",
  "op": [
    "vote",
    {
      "voter": "carpent.ian",
      "author": "hardtack",
      "permlink": "wtf-1",
      "weight": 10000
    }
  ]
}
traveler.terryupvoted (100.00%) @hardtack / wtf-1
2018/02/19 22:38:39
votertraveler.terry
authorhardtack
permlinkwtf-1
weight10000 (100.00%)
Transaction InfoBlock #20018414/Trx b7d070a3a77677d58e15272b3c50a5d486764531
View Raw JSON Data
{
  "trx_id": "b7d070a3a77677d58e15272b3c50a5d486764531",
  "block": 20018414,
  "trx_in_block": 14,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-19T22:38:39",
  "op": [
    "vote",
    {
      "voter": "traveler.terry",
      "author": "hardtack",
      "permlink": "wtf-1",
      "weight": 10000
    }
  ]
}
tanikeerupvoted (100.00%) @hardtack / wtf-1
2018/02/19 21:26:57
votertanikeer
authorhardtack
permlinkwtf-1
weight10000 (100.00%)
Transaction InfoBlock #20016982/Trx cb5c1bb8ad2552da2945975685c5aeac5ed2dd8a
View Raw JSON Data
{
  "trx_id": "cb5c1bb8ad2552da2945975685c5aeac5ed2dd8a",
  "block": 20016982,
  "trx_in_block": 67,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-19T21:26:57",
  "op": [
    "vote",
    {
      "voter": "tanikeer",
      "author": "hardtack",
      "permlink": "wtf-1",
      "weight": 10000
    }
  ]
}
viobosupvoted (100.00%) @hardtack / wtf-1
2018/02/19 21:26:57
voterviobos
authorhardtack
permlinkwtf-1
weight10000 (100.00%)
Transaction InfoBlock #20016982/Trx fab1e278285e87e310cdd056cb800aa047d279e3
View Raw JSON Data
{
  "trx_id": "fab1e278285e87e310cdd056cb800aa047d279e3",
  "block": 20016982,
  "trx_in_block": 51,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-19T21:26:57",
  "op": [
    "vote",
    {
      "voter": "viobos",
      "author": "hardtack",
      "permlink": "wtf-1",
      "weight": 10000
    }
  ]
}
2018/02/19 20:04:30
parent authorhardtack
parent permlinkwtf-1
authordevxoul
permlinkre-hardtack-wtf-1-20180219t200429296z
title
body```diff - 이러한 장점을 잘 살린 도구 Apache Spark입니다. + 이러한 장점을 잘 살린 도구가 Apache Spark입니다. ```
json metadata{"tags":["programming"],"app":"steemit/0.1"}
Transaction InfoBlock #20015336/Trx 269116644bb69654d06613f194bf2e11e121fa2b
View Raw JSON Data
{
  "trx_id": "269116644bb69654d06613f194bf2e11e121fa2b",
  "block": 20015336,
  "trx_in_block": 20,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-19T20:04:30",
  "op": [
    "comment",
    {
      "parent_author": "hardtack",
      "parent_permlink": "wtf-1",
      "author": "devxoul",
      "permlink": "re-hardtack-wtf-1-20180219t200429296z",
      "title": "",
      "body": "```diff\n- 이러한 장점을 잘 살린 도구 Apache Spark입니다.\n+ 이러한 장점을 잘 살린 도구가 Apache Spark입니다.\n```",
      "json_metadata": "{\"tags\":[\"programming\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
devxoulupvoted (100.00%) @hardtack / wtf-1
2018/02/19 19:47:24
voterdevxoul
authorhardtack
permlinkwtf-1
weight10000 (100.00%)
Transaction InfoBlock #20014995/Trx fc7ba9ed4e945aeddcbc7e51ea52cd03f86457dc
View Raw JSON Data
{
  "trx_id": "fc7ba9ed4e945aeddcbc7e51ea52cd03f86457dc",
  "block": 20014995,
  "trx_in_block": 12,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-19T19:47:24",
  "op": [
    "vote",
    {
      "voter": "devxoul",
      "author": "hardtack",
      "permlink": "wtf-1",
      "weight": 10000
    }
  ]
}
lhamedupvoted (100.00%) @hardtack / wtf-1
2018/02/19 16:09:42
voterlhamed
authorhardtack
permlinkwtf-1
weight10000 (100.00%)
Transaction InfoBlock #20010653/Trx 9d13a638051ef68bb268111524673cf829219e6c
View Raw JSON Data
{
  "trx_id": "9d13a638051ef68bb268111524673cf829219e6c",
  "block": 20010653,
  "trx_in_block": 47,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-19T16:09:42",
  "op": [
    "vote",
    {
      "voter": "lhamed",
      "author": "hardtack",
      "permlink": "wtf-1",
      "weight": 10000
    }
  ]
}
hardtackpublished a new post: wtf-1
2018/02/19 11:31:57
parent author
parent permlinkprogramming
authorhardtack
permlinkwtf-1
titleWTF - 1
body@@ -533,17 +533,17 @@ %EC%88%98 %EA%B7%B8%EB%A6%AC%EA%B3%A0 %EC%9D%B5%EB%AA%85 -%ED%95%A9 +%ED%95%A8 %EC%88%98%0A%0A%ED%95%A8%EC%88%98%ED%98%95 %ED%94%84
json metadata{"tags":["programming","functional","reactive","language"],"links":["https://ko.wikipedia.org/wiki/튜링_완전"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #20005102/Trx 53a359a507b51929d59b2cfca142288b9a642fd9
View Raw JSON Data
{
  "trx_id": "53a359a507b51929d59b2cfca142288b9a642fd9",
  "block": 20005102,
  "trx_in_block": 46,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-19T11:31:57",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "programming",
      "author": "hardtack",
      "permlink": "wtf-1",
      "title": "WTF - 1",
      "body": "@@ -533,17 +533,17 @@\n %EC%88%98 %EA%B7%B8%EB%A6%AC%EA%B3%A0 %EC%9D%B5%EB%AA%85\n-%ED%95%A9\n+%ED%95%A8\n %EC%88%98%0A%0A%ED%95%A8%EC%88%98%ED%98%95 %ED%94%84\n",
      "json_metadata": "{\"tags\":[\"programming\",\"functional\",\"reactive\",\"language\"],\"links\":[\"https://ko.wikipedia.org/wiki/튜링_완전\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
hardtackpublished a new post: wtf-1
2018/02/19 11:31:36
parent author
parent permlinkprogramming
authorhardtack
permlinkwtf-1
titleWTF - 1
body@@ -432,17 +432,17 @@ %EC%88%98 %EA%B7%B8%EB%A6%AC%EA%B3%A0 %EC%9D%B5%EB%AA%85 -%ED%95%A9 +%ED%95%A8 %EC%88%98%0A%0A* Rea
json metadata{"tags":["programming","functional","reactive","language"],"links":["https://ko.wikipedia.org/wiki/튜링_완전"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #20005095/Trx 13320dc7c9258469a7dd5d4602824f51ffaa25ac
View Raw JSON Data
{
  "trx_id": "13320dc7c9258469a7dd5d4602824f51ffaa25ac",
  "block": 20005095,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-19T11:31:36",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "programming",
      "author": "hardtack",
      "permlink": "wtf-1",
      "title": "WTF - 1",
      "body": "@@ -432,17 +432,17 @@\n %EC%88%98 %EA%B7%B8%EB%A6%AC%EA%B3%A0 %EC%9D%B5%EB%AA%85\n-%ED%95%A9\n+%ED%95%A8\n %EC%88%98%0A%0A* Rea\n",
      "json_metadata": "{\"tags\":[\"programming\",\"functional\",\"reactive\",\"language\"],\"links\":[\"https://ko.wikipedia.org/wiki/튜링_완전\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
hardtackpublished a new post: wtf-1
2018/02/19 11:05:30
parent author
parent permlinkprogramming
authorhardtack
permlinkwtf-1
titleWTF - 1
body@@ -3150,16 +3150,18 @@ %EB%82%98%EC%A4%91%EC%97%90 %EB%8B%A4%EB%A4%84%EB%B3%B4%EA%B2%A0 +%EC%8A%B5%EB%8B%88 %EB%8B%A4.%0A%0A%EA%B7%B8%EB%9F%AC%EB%A9%B4
json metadata{"tags":["programming","functional","reactive","language"],"links":["https://ko.wikipedia.org/wiki/튜링_완전"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #20004573/Trx d05c062a1d5d412fa9e82b283c3c35d51742c328
View Raw JSON Data
{
  "trx_id": "d05c062a1d5d412fa9e82b283c3c35d51742c328",
  "block": 20004573,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-19T11:05:30",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "programming",
      "author": "hardtack",
      "permlink": "wtf-1",
      "title": "WTF - 1",
      "body": "@@ -3150,16 +3150,18 @@\n %EB%82%98%EC%A4%91%EC%97%90 %EB%8B%A4%EB%A4%84%EB%B3%B4%EA%B2%A0\n+%EC%8A%B5%EB%8B%88\n %EB%8B%A4.%0A%0A%EA%B7%B8%EB%9F%AC%EB%A9%B4 \n",
      "json_metadata": "{\"tags\":[\"programming\",\"functional\",\"reactive\",\"language\"],\"links\":[\"https://ko.wikipedia.org/wiki/튜링_완전\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
hardtackupvoted (100.00%) @hardtack / wtf-1
2018/02/19 10:59:18
voterhardtack
authorhardtack
permlinkwtf-1
weight10000 (100.00%)
Transaction InfoBlock #20004449/Trx 2c8b0b6efd7adf5e5030e7c4d1c450b3282cce16
View Raw JSON Data
{
  "trx_id": "2c8b0b6efd7adf5e5030e7c4d1c450b3282cce16",
  "block": 20004449,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-19T10:59:18",
  "op": [
    "vote",
    {
      "voter": "hardtack",
      "author": "hardtack",
      "permlink": "wtf-1",
      "weight": 10000
    }
  ]
}
hardtackpublished a new post: wtf-1
2018/02/19 10:53:24
parent author
parent permlinkprogramming
authorhardtack
permlinkwtf-1
titleWTF - 1
body# What is the functional programming ## 개요 최근 Apache spark, Reactive Extension, Scala 등이 널리 사용되며 함수형 프로그래밍도 함께 많은 관심을 받고있습니다. 하지만 대부분 multi-paradigm 이라는 명목하에 객체지향 프로그래밍과 섞여 사용되면서 함수형 프로그래밍 그 자체의 장점을 많이 이끌어내지 못하는 것 같습니다. 본 글에서는 함수형 프로그래밍의 장점을 극대화 할 수 있도록 이와 관련된 여러가지 개념을 간단하게 소개해 보고자 하며 객체지향 프로그래밍에서 해결하던 문제를 함수형 프로그래밍에선 어떻게 해결하는지 소개해보려합니다. ## 함수형 프로그래밍과 연관된 개념들 함수형 프로그래밍의 장점을 높이기 위해서 이 글에서 소개할 개념들은 다음과 같습니다. * 1급 시민 함수와, 고차함수 그리고 익명합수 * Reactive 프로그래밍 * 정적 타이핑 내용 자체를 깊게 다루지는 않을것이며, 유용성에 대해서 논해보고자 합니다. ### 1급 시민 함수와, 고차함수 그리고 익명합수 함수형 프로그래밍에 대해 공부하면 첫번째로 만나는 개념일것입니다. 먼저 1급 시민 함수에 대해 알아보겠습니다. 1급 시민이란, * 변수에 할당 될 수 있고 * 인자로 넘겨질 수 있으며 * 함수의 반환값으로 사용될 수 있는 요소들을 이야기합니다. 즉, 1급 시민 함수는 특정 프로그래밍 언어에서 함수가 위와같은 조건을 만족한다는 뜻입니다. Scala를 예로 들어 보겠습니다. 다음과 같은 Scala 함수가 있습니다. ``` scala def function(foo: String, bar: String) = foo + "=" + bar ``` 위 함수는 변수에 할당 될 수 있고 ``` scala val f1 = function _ ``` 인자로 넘겨질 수 있으며 ``` scala def f2(x: String, f: (String, String) => String) = f(x, x * 2) f2("foo", function) ``` 함수의 반환값으로 사용될 수 있습니다. ``` scala def f3(x: Int) = function _ ``` 그러므로 스칼라의 함수는 1급 시민이라고 할 수 있는 것입니다. 이러한 특성을 이용해 함수를 조금 더 자유자재로 다룰 수 있을 것입니다. 이어서, 고차함수란 함수를 인자로 받는 함수들을 이야기합니다. 예를 들면 리스트의 각 인자를 변형하고자 할 때 다음과 같은 함수를 만들 수 있습니다 ``` scala def map(f: Int => Int, list: List[Int]): List[Int] = list match { case head::tail => f(head) :: map(f, tail) case Nil => Nil } def square(x) => x * x map(square, List(1,2,3)) ``` 위 코드에서 `map()` 함수는 함수 `f`를 인자로 받으므로 고차함수라 부를 수 있습니다. 함수형 프로그래밍은 이러한 고차함수들을 이용해 함수를 조합하고 다룹니다. 익명함수는 이름 그대로 이름이 없는 함수를 이야기합니다. 주로 람다 대수 표기법을 이용해 표현되며, 다음과 같은 모양을 가집니다. ``` scala (x, y) => x * y ``` 위의 고차함수에 적용한다면 ``` scala map(x => x * x, List(1, 2, 3)) ``` 이런 표현이 가능할 것입니다. 함수형 프로그래밍 언어는 이러한 람다대수를 기반으로 설계가 되었으며, 이는 [튜링 완전](https://ko.wikipedia.org/wiki/튜링_완전) 하다는 것이 증명되었습니다. 즉, 절차지향적이지 않은 표현식들이지만 완전한 프로그램을 작성할 수 있다는 것이 수학적으로 참이라는 것입니다. ## Reactive 프로그래밍 함수형 프로그래밍을 하게 되면 필연적으로 마주치게 될 개념이 Reactive 프로그래밍일 것 입니다. Reactive 프로그래밍이란, Mutable한 값을 가진 변수와 그를 참조하는 변수가 존재할 때, 참조받는 변수의 값이 변경되면 참조하는 변수의 값도 그 값을 따르는 것을 이야기합니다. 잘 이해가 되지 않는다면, 다음 수도-코드(pseudo-code)를 보겠습니다. ``` var a = 4 var b = a * 2 print(b) // (1) a = 2 print(b) // (2) ``` 위의 수도-코드 에서 Reactive 프로그래밍이 아니라면, 출력값은 _(1)_, _(2)_ 모두 동일하게 `8`이 될 것입니다. 그러나, Reactive 프로그래밍을 따른다는 가정을 한다면 출력값은 `8`, `4` 가 될 것입니다. 그 이유는, b 가 참조하고 있는 a의 값이 4에서 2로 바뀌었고, b는 그 변경을 반영하기 때문입니다. 이처럼 특정 값이 다른 값에 종속이 되면, 그 값의 변화에 반응하기 때문에 Reactive 프로그래밍이라고 부르게 됩니다. 그렇다면, Reactive 프로그래밍과 함수형 프로그래밍에는 어떤 연관이 있을까요? 가장 중요한 연관점은 Reactive 프로그래밍을 구현하기 위한 가장 훌륭한 방법은 함수라는 점입니다. Reactive 프로그래밍을 구현하기 위해서 필요한 시맨틱은 크게 두가지가 있습니다. 1. 변하는 값을 담을 _변수_ 2. 관계를 나타낼 _표현식_ 먼저 관계를 나타낼 표현식은 이미 훌륭한 것이 존재합니다. 바로 함수입니다. 위의 수도-코드에서 a와 b의 관계를 함수로 나타낸다면 이렇게 될 것입니다. ``` scala val relationshipAB = (a: Int) => a * 2 ``` 그렇다면 변수는 어떻게 정의하면 좋을까요? 한가지 방법으로 변수를 값의 Stream으로 나타내는 것입니다. Reactive Extension의 stream인 observable을 빌려 표현하자면, ``` scala val a: Observable[Int] = ??? val b = a.map((a) => a * 2) ``` 이렇게 표현할 수 있을것입니다. `Observable` 이라는 stream으로 변수를 나타내고, map이라는 고차함수에 관계를 나타내는 함수를 넘김으로써 a와 b의 관계가 성립됩니다. 위 변수는 stream 뿐만 아니라 모든 _모나드_ 에 대해서 유효하지만 이와 관련된 내용은 나중에 다뤄보겠다. 그러면 이제, Reactive 프로그래밍의 장점에 대해 이야기 해보겠습니다. Reactive 프로그래밍을 이용하면 크게 두가지 장점을 찾아볼 수 있는데, 첫째로, 비동기 프로그래밍에 유리합니다. 실제 세계에서 일어나는 일들은 모두 비동기적으로 일어납니다. 유저의 클릭이벤트, 네트워크 패킷의 유입 등 비동기로 일어나는 일들을 Stream 등에 담고, 값을 직접 변화하는것이 아니라 관계를 나타내어 변화가 반영되게 한다면 비동기적인 일을 다루기에 쉬워집니다. 예를 들어보면, 사용자의 값 증가 버튼 클릭 이벤트를 반영한다면 다음과 같이 나타낼 수 있을것입니다. ``` scala val button = Observable.just(Button("Up")) // 클릭 이벤트를 나타내는 stream val clickEvent: Observable[Event] = button.flatMap(x => x.clickEvent) // 현재 값을 나타내는 stream val count = clickEvent.scan(0)((x, _) => x + 1) // 값을 보여주는 label을 나타내는 stream val label = count.map(x => Label(x.toString)) // 전체 UI를 나타내는 stream val userInterface = button.zip(label)(b, l => VerticalLayout(l, b)) ``` 위의 코드를 보면, 어떠한 값도 변경하지 않고 관계만으로 UI와 Interaction을 나타내고 있습니다. 이러한 개념을 활용하여 설계한 대표적인 라이브러리가 React입니다. 다른 예로, 웹 어플리케이션을 개발한다고 했을때, Reactive programming을 활용한다면, Request stream을 받아 Response stream으로 변경해주는 함수를 만들면 웹 어플리케이션을 만들 수 있습니다. ``` scala def echo(requestFuture: Future[Request]) = reqeustFuture.map(request => Response(200, request.body())) ``` 마찬가지로 어떠한 side-effect도 만들지 않고 관계만을 나타내고 있습니다. 비동기적으로 일어나는일을 관계로 나타냄으로써 자연스러운 표현을 가질 수 있게 되었습니다. 둘째로, 연산 자체를 관리하는데에 유리합니다. 잘 구현된 Reactive 프로그래밍에서는 실제로 사용될 값에 대한 연산만 이루어 지기 때문에 불필요한 연산은 일어나지 않게 됩니다. 또한 연산 자체가 함수로써 잘 분배되어있어 분산처리에도 매우 유리합니다. 이러한 장점을 잘 살린 도구 Apache Spark입니다. 이러한 연산은 컴퓨터 클러스터 뿐만 아니라 단일 컴퓨터에서도 관리하는데에 더욱 유리할 것 입니다. Reactive 프로그래밍의 장점을 정리해보면, 비동기 프로그램을 자연스럽게 표현할 수 있고, 연산 자체에 대한 관리 효율성이 증가한다는 점입니다. 이러한 장점을 가진 Reactive 프로그래밍을 함수형 프로그래밍을통해 쉽게 구현할 수 있기 때문에 이 둘은 단짝처럼 함께하고 있습니다. 정적타이핑을 포함한 뒷 이야기 또한 매우 긴 글이 될 것 같아 이번 글에서는 여기까지만 다루고자 합니다. 미래의 저에게 책임감을 넘기며 저는 이만... 주석: 본 글의 코드는 대부분 개념을 설명하기 위한 수도-코드입니다. 동작하지 않더라도 너그럽게 이해해주시면 감사하겠습니다.
json metadata{"tags":["programming","functional","reactive","language"],"links":["https://ko.wikipedia.org/wiki/튜링_완전"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #20004331/Trx 5820b82660f7b552285346ffb0e86a04e95fe4ce
View Raw JSON Data
{
  "trx_id": "5820b82660f7b552285346ffb0e86a04e95fe4ce",
  "block": 20004331,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-19T10:53:24",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "programming",
      "author": "hardtack",
      "permlink": "wtf-1",
      "title": "WTF - 1",
      "body": "# What is the functional programming\n\n## 개요\n\n최근 Apache spark, Reactive Extension, Scala 등이 널리 사용되며 함수형 프로그래밍도 함께 많은 관심을 받고있습니다. 하지만 대부분 multi-paradigm 이라는 명목하에 객체지향 프로그래밍과 섞여 사용되면서 함수형 프로그래밍 그 자체의 장점을 많이 이끌어내지 못하는 것 같습니다.\n본 글에서는 함수형 프로그래밍의 장점을 극대화 할 수 있도록 이와 관련된 여러가지 개념을 간단하게 소개해 보고자 하며 객체지향 프로그래밍에서 해결하던 문제를 함수형 프로그래밍에선 어떻게 해결하는지 소개해보려합니다.\n\n## 함수형 프로그래밍과 연관된 개념들\n\n함수형 프로그래밍의 장점을 높이기 위해서 이 글에서 소개할 개념들은 다음과 같습니다.\n\n* 1급 시민 함수와, 고차함수 그리고 익명합수\n\n* Reactive 프로그래밍\n\n* 정적 타이핑\n\n내용 자체를 깊게 다루지는 않을것이며, 유용성에 대해서 논해보고자 합니다.\n\n### 1급 시민 함수와, 고차함수 그리고 익명합수\n\n함수형 프로그래밍에 대해 공부하면 첫번째로 만나는 개념일것입니다. 먼저 1급 시민 함수에 대해 알아보겠습니다.\n\n1급 시민이란,\n\n* 변수에 할당 될 수 있고\n\n* 인자로 넘겨질 수 있으며\n\n* 함수의 반환값으로 사용될 수 있는\n\n요소들을 이야기합니다. 즉, 1급 시민 함수는 특정 프로그래밍 언어에서 함수가 위와같은 조건을 만족한다는 뜻입니다.\n\nScala를 예로 들어 보겠습니다.\n\n다음과 같은 Scala 함수가 있습니다.\n\n``` scala\n\ndef function(foo: String, bar: String) = foo + \"=\" + bar\n\n```\n\n위 함수는 변수에 할당 될 수 있고\n\n``` scala\n\nval f1 = function _\n\n```\n\n인자로 넘겨질 수 있으며\n\n``` scala\n\ndef f2(x: String, f: (String, String) => String) = f(x, x * 2)\n\nf2(\"foo\", function)\n\n```\n\n함수의 반환값으로 사용될 수 있습니다.\n\n``` scala\n\ndef f3(x: Int) = function _\n\n```\n\n그러므로 스칼라의 함수는 1급 시민이라고 할 수 있는 것입니다. 이러한 특성을 이용해 함수를 조금 더 자유자재로 다룰 수 있을 것입니다.\n\n이어서, 고차함수란 함수를 인자로 받는 함수들을 이야기합니다. 예를 들면 리스트의 각 인자를 변형하고자 할 때 다음과 같은 함수를 만들 수 있습니다\n\n``` scala\n\n\ndef map(f: Int => Int, list: List[Int]): List[Int] = list match {\n  case head::tail => f(head) :: map(f, tail)\n  case Nil => Nil\n}\n\ndef square(x) => x * x\n\nmap(square, List(1,2,3))\n\n```\n\n위 코드에서 `map()` 함수는 함수 `f`를 인자로 받으므로 고차함수라 부를 수 있습니다. 함수형 프로그래밍은 이러한 고차함수들을 이용해 함수를 조합하고 다룹니다.\n\n익명함수는 이름 그대로 이름이 없는 함수를 이야기합니다.\n주로 람다 대수 표기법을 이용해 표현되며, 다음과 같은 모양을 가집니다.\n\n``` scala\n\n(x, y) => x * y\n\n```\n\n위의 고차함수에 적용한다면\n\n``` scala\n\nmap(x => x * x, List(1, 2, 3))\n\n```\n\n이런 표현이 가능할 것입니다.\n\n함수형 프로그래밍 언어는 이러한 람다대수를 기반으로 설계가 되었으며, 이는 [튜링 완전](https://ko.wikipedia.org/wiki/튜링_완전) 하다는 것이 증명되었습니다.\n즉, 절차지향적이지 않은 표현식들이지만 완전한 프로그램을 작성할 수 있다는 것이 수학적으로 참이라는 것입니다.\n\n## Reactive 프로그래밍\n\n함수형 프로그래밍을 하게 되면 필연적으로 마주치게 될 개념이 Reactive 프로그래밍일 것 입니다. Reactive 프로그래밍이란, Mutable한 값을 가진 변수와 그를 참조하는 변수가 존재할 때, 참조받는 변수의 값이 변경되면 참조하는 변수의 값도 그 값을 따르는 것을 이야기합니다. 잘 이해가 되지 않는다면, 다음 수도-코드(pseudo-code)를 보겠습니다.\n\n```\n\nvar a = 4\nvar b = a * 2\nprint(b)  // (1)\na = 2\nprint(b)  // (2)\n\n```\n위의 수도-코드 에서 Reactive 프로그래밍이 아니라면, 출력값은 _(1)_, _(2)_ 모두 동일하게 `8`이 될 것입니다. 그러나, Reactive 프로그래밍을 따른다는 가정을 한다면 출력값은 `8`, `4` 가 될 것입니다. 그 이유는, b 가 참조하고 있는 a의 값이 4에서 2로 바뀌었고, b는 그 변경을 반영하기 때문입니다.\n\n이처럼 특정 값이 다른 값에 종속이 되면, 그 값의 변화에 반응하기 때문에 Reactive 프로그래밍이라고 부르게 됩니다.\n\n그렇다면, Reactive 프로그래밍과 함수형 프로그래밍에는 어떤 연관이 있을까요? 가장 중요한 연관점은 Reactive 프로그래밍을 구현하기 위한 가장 훌륭한 방법은 함수라는 점입니다.\nReactive 프로그래밍을 구현하기 위해서 필요한 시맨틱은 크게 두가지가 있습니다.\n\n1. 변하는 값을 담을 _변수_\n\n2. 관계를 나타낼 _표현식_\n\n먼저 관계를 나타낼 표현식은 이미 훌륭한 것이 존재합니다. 바로 함수입니다. 위의 수도-코드에서 a와 b의 관계를 함수로 나타낸다면 이렇게 될 것입니다.\n\n``` scala\n\nval relationshipAB = (a: Int) => a * 2\n\n```\n\n그렇다면 변수는 어떻게 정의하면 좋을까요? 한가지 방법으로 변수를 값의 Stream으로 나타내는 것입니다. Reactive Extension의 stream인 observable을 빌려 표현하자면,\n\n``` scala\n\nval a: Observable[Int] = ???\n\nval b = a.map((a) => a * 2)\n\n\n```\n\n이렇게 표현할 수 있을것입니다. `Observable` 이라는 stream으로 변수를 나타내고, map이라는 고차함수에 관계를 나타내는 함수를 넘김으로써 a와 b의 관계가 성립됩니다.\n위 변수는 stream 뿐만 아니라 모든 _모나드_ 에 대해서 유효하지만 이와 관련된 내용은 나중에 다뤄보겠다.\n\n그러면 이제, Reactive 프로그래밍의 장점에 대해 이야기 해보겠습니다. Reactive 프로그래밍을 이용하면 크게 두가지 장점을 찾아볼 수 있는데, \n\n첫째로, 비동기 프로그래밍에 유리합니다. 실제 세계에서 일어나는 일들은 모두 비동기적으로 일어납니다. 유저의 클릭이벤트, 네트워크 패킷의 유입 등 비동기로 일어나는 일들을 Stream 등에 담고, 값을 직접 변화하는것이 아니라 관계를 나타내어 변화가 반영되게 한다면 비동기적인 일을 다루기에 쉬워집니다.\n\n예를 들어보면, 사용자의 값 증가 버튼 클릭 이벤트를 반영한다면 다음과 같이 나타낼 수 있을것입니다.\n\n``` scala\n\nval button = Observable.just(Button(\"Up\"))\n\n// 클릭 이벤트를 나타내는 stream\nval clickEvent: Observable[Event] = button.flatMap(x => x.clickEvent)\n\n// 현재 값을 나타내는 stream\nval count = clickEvent.scan(0)((x, _) => x + 1)\n\n// 값을 보여주는 label을 나타내는 stream\nval label = count.map(x => Label(x.toString))\n\n// 전체 UI를 나타내는 stream\nval userInterface = button.zip(label)(b, l => VerticalLayout(l, b))\n\n```\n\n위의 코드를 보면, 어떠한 값도 변경하지 않고 관계만으로 UI와 Interaction을 나타내고 있습니다. \n이러한 개념을 활용하여 설계한 대표적인 라이브러리가 React입니다.\n\n다른 예로, 웹 어플리케이션을 개발한다고 했을때, Reactive programming을 활용한다면, Request stream을 받아 Response stream으로 변경해주는 함수를 만들면 웹 어플리케이션을 만들 수 있습니다.\n\n``` scala\n\ndef echo(requestFuture: Future[Request]) =\n  reqeustFuture.map(request => Response(200, request.body()))\n\n```\n\n마찬가지로 어떠한 side-effect도 만들지 않고 관계만을 나타내고 있습니다. 비동기적으로 일어나는일을 관계로 나타냄으로써 자연스러운 표현을 가질 수 있게 되었습니다.\n\n둘째로, 연산 자체를 관리하는데에 유리합니다. 잘 구현된 Reactive 프로그래밍에서는 실제로 사용될 값에 대한 연산만 이루어 지기 때문에 불필요한 연산은 일어나지 않게 됩니다. 또한 연산 자체가 함수로써 잘 분배되어있어 분산처리에도 매우 유리합니다. 이러한 장점을 잘 살린 도구 Apache Spark입니다. 이러한 연산은 컴퓨터 클러스터 뿐만 아니라 단일 컴퓨터에서도 관리하는데에 더욱 유리할 것 입니다.\n\nReactive 프로그래밍의 장점을 정리해보면, 비동기 프로그램을 자연스럽게 표현할 수 있고, 연산 자체에 대한 관리 효율성이 증가한다는 점입니다. 이러한 장점을 가진 Reactive 프로그래밍을 함수형 프로그래밍을통해 쉽게 구현할 수 있기 때문에 이 둘은 단짝처럼 함께하고 있습니다.\n\n정적타이핑을 포함한 뒷 이야기 또한 매우 긴 글이 될 것 같아 이번 글에서는 여기까지만 다루고자 합니다.\n\n미래의 저에게 책임감을 넘기며 저는 이만...\n\n주석: 본 글의 코드는 대부분 개념을 설명하기 위한 수도-코드입니다. 동작하지 않더라도 너그럽게 이해해주시면 감사하겠습니다.",
      "json_metadata": "{\"tags\":[\"programming\",\"functional\",\"reactive\",\"language\"],\"links\":[\"https://ko.wikipedia.org/wiki/튜링_완전\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
steemcreated a new account: @hardtack
2018/02/19 10:02:57
fee0.500 STEEM
delegation29700.000000 VESTS
creatorsteem
new account namehardtack
owner{"weight_threshold":1,"account_auths":[],"key_auths":[["STM51jdDxoPJX4k4yKLMgxtXxXMvNMnBz547pXZQNQxJMaRpKZr1S",1]]}
active{"weight_threshold":1,"account_auths":[],"key_auths":[["STM7ynSmwmvPpuSuYAt2KxPyGBYuchkuqsD8iybgZUfmC4Yn2enpQ",1]]}
posting{"weight_threshold":1,"account_auths":[],"key_auths":[["STM8Ruwzd18e8hAETXbBVhwczqM1Ya9pNwzcN3mcPE1ZE2AnGWX2x",1]]}
memo keySTM5Ure7DZktp4kCtXWCKDHtM1HKX9QJuACxqmMDsvzYtvWinhcTT
json metadata
extensions[]
Transaction InfoBlock #20003322/Trx 9217cad1ba0e5a011afae5adcda1bff4f926bf5c
View Raw JSON Data
{
  "trx_id": "9217cad1ba0e5a011afae5adcda1bff4f926bf5c",
  "block": 20003322,
  "trx_in_block": 21,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-19T10:02:57",
  "op": [
    "account_create_with_delegation",
    {
      "fee": "0.500 STEEM",
      "delegation": "29700.000000 VESTS",
      "creator": "steem",
      "new_account_name": "hardtack",
      "owner": {
        "weight_threshold": 1,
        "account_auths": [],
        "key_auths": [
          [
            "STM51jdDxoPJX4k4yKLMgxtXxXMvNMnBz547pXZQNQxJMaRpKZr1S",
            1
          ]
        ]
      },
      "active": {
        "weight_threshold": 1,
        "account_auths": [],
        "key_auths": [
          [
            "STM7ynSmwmvPpuSuYAt2KxPyGBYuchkuqsD8iybgZUfmC4Yn2enpQ",
            1
          ]
        ]
      },
      "posting": {
        "weight_threshold": 1,
        "account_auths": [],
        "key_auths": [
          [
            "STM8Ruwzd18e8hAETXbBVhwczqM1Ya9pNwzcN3mcPE1ZE2AnGWX2x",
            1
          ]
        ]
      },
      "memo_key": "STM5Ure7DZktp4kCtXWCKDHtM1HKX9QJuACxqmMDsvzYtvWinhcTT",
      "json_metadata": "",
      "extensions": []
    }
  ]
}

Account Metadata

POSTING JSON METADATA
None
JSON METADATA
None
{
  "posting_json_metadata": {},
  "json_metadata": {}
}

Auth Keys

Owner
Single Signature
Public Keys
STM51jdDxoPJX4k4yKLMgxtXxXMvNMnBz547pXZQNQxJMaRpKZr1S1/1
Active
Single Signature
Public Keys
STM7ynSmwmvPpuSuYAt2KxPyGBYuchkuqsD8iybgZUfmC4Yn2enpQ1/1
Posting
Single Signature
Public Keys
STM8Ruwzd18e8hAETXbBVhwczqM1Ya9pNwzcN3mcPE1ZE2AnGWX2x1/1
Memo
STM5Ure7DZktp4kCtXWCKDHtM1HKX9QJuACxqmMDsvzYtvWinhcTT
{
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM51jdDxoPJX4k4yKLMgxtXxXMvNMnBz547pXZQNQxJMaRpKZr1S",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM7ynSmwmvPpuSuYAt2KxPyGBYuchkuqsD8iybgZUfmC4Yn2enpQ",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8Ruwzd18e8hAETXbBVhwczqM1Ya9pNwzcN3mcPE1ZE2AnGWX2x",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "memo": "STM5Ure7DZktp4kCtXWCKDHtM1HKX9QJuACxqmMDsvzYtvWinhcTT"
}

Witness Votes

0 / 30
No active witness votes.
[]