Ecoer Logo
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS76.69%
Net Worth
0.135USD
STEEM
0.000STEEM
SBD
0.205SBD
Effective Power
5.001SP
├── Own SP
0.629SP
└── Incoming Deleg
+4.372SP

Detailed Balance

STEEM
balance
0.000STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.000STEEM
STEEM POWER
Own SP
0.629SP
Delegated Out
0.000SP
Delegation In
4.372SP
Effective Power
5.001SP
Reward SP (pending)
0.056SP
SBD
sbd_balance
0.000SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.205SBD
{
  "balance": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.000 STEEM",
  "vesting_shares": "1024.877816 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "7118.781990 VESTS",
  "sbd_balance": "0.000 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "0.205 SBD",
  "conversions": []
}

Account Info

nameagainme
id529486
rank745,517
reputation1216779157
created2017-12-26T08:19:51
recovery_accountsteem
proxyNone
post_count26
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2018-06-15T04:40:21
last_root_post2018-06-15T04:40:21
last_vote_time2018-01-06T20:21:18
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_shares1024.877816 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares7118.781990 VESTS
reward_vesting_balance114.266282 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
{
  "id": 529486,
  "name": "againme",
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM7pgjmar8MGNAexwMbbcdiF9yH3F9ndws9BX2S92B8zPB9WA44j",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM8LYBeNGjLML7ZRHVGtQ152idpREuDofPMbfiY5rpTeX3d5r7u8",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM6u3y2pE1gHjJ6n64Kf33ZbAb3NS3VEfWLvvFR1ykQ8b1aiS4FA",
        1
      ]
    ]
  },
  "memo_key": "STM6RuTo8g8Xpwioc2XHxjqpCECDE1dtDifBvgheGbk2NgEfAGLr8",
  "json_metadata": "",
  "posting_json_metadata": "",
  "proxy": "",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_account_update": "1970-01-01T00:00:00",
  "created": "2017-12-26T08:19:51",
  "mined": false,
  "recovery_account": "steem",
  "last_account_recovery": "1970-01-01T00:00:00",
  "reset_account": "null",
  "comment_count": 0,
  "lifetime_vote_count": 0,
  "post_count": 26,
  "can_vote": true,
  "voting_manabar": {
    "current_mana": "8143659806",
    "last_update_time": 1779051474
  },
  "downvote_manabar": {
    "current_mana": 2035914951,
    "last_update_time": 1779051474
  },
  "voting_power": 0,
  "balance": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "sbd_balance": "0.000 SBD",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "1970-01-01T00:00:00",
  "sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_sbd_balance": "0.000 SBD",
  "savings_sbd_seconds": "0",
  "savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "reward_sbd_balance": "0.205 SBD",
  "reward_steem_balance": "0.000 STEEM",
  "reward_vesting_balance": "114.266282 VESTS",
  "reward_vesting_steem": "0.056 STEEM",
  "vesting_shares": "1024.877816 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "7118.781990 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "withdrawn": 0,
  "to_withdraw": 0,
  "withdraw_routes": 0,
  "curation_rewards": 3,
  "posting_rewards": 106,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "witnesses_voted_for": 0,
  "last_post": "2018-06-15T04:40:21",
  "last_root_post": "2018-06-15T04:40:21",
  "last_vote_time": "2018-01-06T20:21:18",
  "post_bandwidth": 0,
  "pending_claimed_accounts": 0,
  "vesting_balance": "0.000 STEEM",
  "reputation": 1216779157,
  "transfer_history": [],
  "market_history": [],
  "post_history": [],
  "vote_history": [],
  "other_history": [],
  "witness_votes": [],
  "tags_usage": [],
  "guest_bloggers": [],
  "rank": 745517
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
steemdelegated 4.372 SP to @againme
2026/05/17 20:57:54
delegatorsteem
delegateeagainme
vesting shares7118.781990 VESTS
Transaction InfoBlock #106139518/Trx a393d2ce824c6590ea1026f02aa89977056585e0
View Raw JSON Data
{
  "trx_id": "a393d2ce824c6590ea1026f02aa89977056585e0",
  "block": 106139518,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-05-17T20:57:54",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "7118.781990 VESTS"
    }
  ]
}
steemdelegated 2.706 SP to @againme
2026/05/11 16:37:21
delegatorsteem
delegateeagainme
vesting shares4406.571585 VESTS
Transaction InfoBlock #105962288/Trx be68a59d1f6ba33737981a7f417b87eacabfe0e5
View Raw JSON Data
{
  "trx_id": "be68a59d1f6ba33737981a7f417b87eacabfe0e5",
  "block": 105962288,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-05-11T16:37:21",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "4406.571585 VESTS"
    }
  ]
}
steemdelegated 4.379 SP to @againme
2026/04/25 20:23:51
delegatorsteem
delegateeagainme
vesting shares7131.297746 VESTS
Transaction InfoBlock #105507263/Trx 82d54a2a011cdac7f5fd2c9c05336201cc265271
View Raw JSON Data
{
  "trx_id": "82d54a2a011cdac7f5fd2c9c05336201cc265271",
  "block": 105507263,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-04-25T20:23:51",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "7131.297746 VESTS"
    }
  ]
}
steemdelegated 2.732 SP to @againme
2026/01/22 23:00:03
delegatorsteem
delegateeagainme
vesting shares4448.118404 VESTS
Transaction InfoBlock #102841272/Trx a7f2154dd83645d97f666b1b12e0f45c64327f50
View Raw JSON Data
{
  "trx_id": "a7f2154dd83645d97f666b1b12e0f45c64327f50",
  "block": 102841272,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-01-22T23:00:03",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "4448.118404 VESTS"
    }
  ]
}
steemdelegated 2.832 SP to @againme
2024/12/16 18:21:12
delegatorsteem
delegateeagainme
vesting shares4612.337601 VESTS
Transaction InfoBlock #91287720/Trx 08b64a82c63dda0590eea5de2ef8103148cf252a
View Raw JSON Data
{
  "trx_id": "08b64a82c63dda0590eea5de2ef8103148cf252a",
  "block": 91287720,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2024-12-16T18:21:12",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "4612.337601 VESTS"
    }
  ]
}
steemdelegated 2.936 SP to @againme
2023/11/13 10:07:24
delegatorsteem
delegateeagainme
vesting shares4781.471133 VESTS
Transaction InfoBlock #79842006/Trx 30a381eea6b1589b7e8c9947a80c89582ccdcf8e
View Raw JSON Data
{
  "trx_id": "30a381eea6b1589b7e8c9947a80c89582ccdcf8e",
  "block": 79842006,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2023-11-13T10:07:24",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "4781.471133 VESTS"
    }
  ]
}
steemdelegated 4.740 SP to @againme
2023/09/21 17:57:24
delegatorsteem
delegateeagainme
vesting shares7718.749919 VESTS
Transaction InfoBlock #78343200/Trx 1421eab4ea7be4ca82db8f6a20711f115d546ba9
View Raw JSON Data
{
  "trx_id": "1421eab4ea7be4ca82db8f6a20711f115d546ba9",
  "block": 78343200,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2023-09-21T17:57:24",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "7718.749919 VESTS"
    }
  ]
}
steemdelegated 4.876 SP to @againme
2022/11/03 08:12:36
delegatorsteem
delegateeagainme
vesting shares7940.431357 VESTS
Transaction InfoBlock #69109086/Trx 518321a2669d06e9f7b2e6371ce1d3b6fba031cd
View Raw JSON Data
{
  "trx_id": "518321a2669d06e9f7b2e6371ce1d3b6fba031cd",
  "block": 69109086,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2022-11-03T08:12:36",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "7940.431357 VESTS"
    }
  ]
}
steemdelegated 5.012 SP to @againme
2022/01/17 07:47:36
delegatorsteem
delegateeagainme
vesting shares8160.964588 VESTS
Transaction InfoBlock #60805641/Trx 73babaa38b6ab0e98ec2865f17a12c2113be66e4
View Raw JSON Data
{
  "trx_id": "73babaa38b6ab0e98ec2865f17a12c2113be66e4",
  "block": 60805641,
  "trx_in_block": 21,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2022-01-17T07:47:36",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "8160.964588 VESTS"
    }
  ]
}
steemdelegated 5.124 SP to @againme
2021/06/13 21:50:51
delegatorsteem
delegateeagainme
vesting shares8344.733246 VESTS
Transaction InfoBlock #54604191/Trx d74735a003a7191289560d03d1ded837fe69d46d
View Raw JSON Data
{
  "trx_id": "d74735a003a7191289560d03d1ded837fe69d46d",
  "block": 54604191,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2021-06-13T21:50:51",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "8344.733246 VESTS"
    }
  ]
}
steemdelegated 5.239 SP to @againme
2020/12/11 08:14:09
delegatorsteem
delegateeagainme
vesting shares8532.155220 VESTS
Transaction InfoBlock #49351775/Trx e3e3d55350140fc17751dc7d534f96e957a5bdc5
View Raw JSON Data
{
  "trx_id": "e3e3d55350140fc17751dc7d534f96e957a5bdc5",
  "block": 49351775,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-11T08:14:09",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "8532.155220 VESTS"
    }
  ]
}
steemdelegated 1.174 SP to @againme
2020/12/06 01:51:30
delegatorsteem
delegateeagainme
vesting shares1912.543513 VESTS
Transaction InfoBlock #49203343/Trx 563a8ac0bb9715e7821d11b70e02daa85d063173
View Raw JSON Data
{
  "trx_id": "563a8ac0bb9715e7821d11b70e02daa85d063173",
  "block": 49203343,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-06T01:51:30",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "1912.543513 VESTS"
    }
  ]
}
steemdelegated 5.250 SP to @againme
2020/11/25 14:44:03
delegatorsteem
delegateeagainme
vesting shares8549.281837 VESTS
Transaction InfoBlock #48906433/Trx b5b82f14e3ce884193a5a9e0e248c038c79c9a3c
View Raw JSON Data
{
  "trx_id": "b5b82f14e3ce884193a5a9e0e248c038c79c9a3c",
  "block": 48906433,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-11-25T14:44:03",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "8549.281837 VESTS"
    }
  ]
}
steemdelegated 5.368 SP to @againme
2020/05/09 02:46:12
delegatorsteem
delegateeagainme
vesting shares8741.168433 VESTS
Transaction InfoBlock #43213557/Trx 355eb12a3e9d7df66b62a7299c485a680af1044a
View Raw JSON Data
{
  "trx_id": "355eb12a3e9d7df66b62a7299c485a680af1044a",
  "block": 43213557,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-05-09T02:46:12",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "8741.168433 VESTS"
    }
  ]
}
steemdelegated 1.199 SP to @againme
2020/05/08 05:54:54
delegatorsteem
delegateeagainme
vesting shares1953.311140 VESTS
Transaction InfoBlock #43189115/Trx 8e00e17240a9d7af2d60037ebeead2ef623a76f0
View Raw JSON Data
{
  "trx_id": "8e00e17240a9d7af2d60037ebeead2ef623a76f0",
  "block": 43189115,
  "trx_in_block": 19,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-05-08T05:54:54",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "1953.311140 VESTS"
    }
  ]
}
2019/12/26 08:57:48
parent authoragainme
parent permlinkqicycle-firmware-update
authorsteemitboard
permlinksteemitboard-notify-againme-20191226t085748000z
title
bodyCongratulations @againme! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@againme/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/@againme) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=againme)_</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"]}
Transaction InfoBlock #39370571/Trx b5ea083dbbf62bb75c8cf1f23e3c6279cda7a14e
View Raw JSON Data
{
  "trx_id": "b5ea083dbbf62bb75c8cf1f23e3c6279cda7a14e",
  "block": 39370571,
  "trx_in_block": 7,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-12-26T08:57:48",
  "op": [
    "comment",
    {
      "parent_author": "againme",
      "parent_permlink": "qicycle-firmware-update",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-againme-20191226t085748000z",
      "title": "",
      "body": "Congratulations @againme! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@againme/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/@againme) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=againme)_</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\"]}"
    }
  ]
}
steemdelegated 5.457 SP to @againme
2019/08/27 12:32:00
delegatorsteem
delegateeagainme
vesting shares8886.476006 VESTS
Transaction InfoBlock #35918832/Trx 13393df3486a8cb6aa0d2d84990c8ccbfb543567
View Raw JSON Data
{
  "trx_id": "13393df3486a8cb6aa0d2d84990c8ccbfb543567",
  "block": 35918832,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-08-27T12:32:00",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "8886.476006 VESTS"
    }
  ]
}
2018/12/26 09:46:15
parent authoragainme
parent permlinkqicycle-firmware-update
authorsteemitboard
permlinksteemitboard-notify-againme-20181226t094615000z
title
bodyCongratulations @againme! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@againme/birthday1.png</td><td>1 Year on Steemit</td></tr></table> <sub>_[Click here to view your Board](https://steemitboard.com/@againme)_</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends-the-party-continues"><img src="https://steemitimages.com/64x128/http://i.cubeupload.com/kf4SJb.png"></a></td><td><a href="https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends-the-party-continues">Christmas Challenge - The party continues</a></td></tr><tr><td><a href="https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends"><img src="https://steemitimages.com/64x128/http://i.cubeupload.com/kf4SJb.png"></a></td><td><a href="https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends">Christmas Challenge - Send a gift to to your friends</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 #28898197/Trx 9bc7d5da35e9dcb70ae770f27051d63d75fa721b
View Raw JSON Data
{
  "trx_id": "9bc7d5da35e9dcb70ae770f27051d63d75fa721b",
  "block": 28898197,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-12-26T09:46:15",
  "op": [
    "comment",
    {
      "parent_author": "againme",
      "parent_permlink": "qicycle-firmware-update",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-againme-20181226t094615000z",
      "title": "",
      "body": "Congratulations @againme! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@againme/birthday1.png</td><td>1 Year on Steemit</td></tr></table>\n\n<sub>_[Click here to view your Board](https://steemitboard.com/@againme)_</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends-the-party-continues\"><img src=\"https://steemitimages.com/64x128/http://i.cubeupload.com/kf4SJb.png\"></a></td><td><a href=\"https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends-the-party-continues\">Christmas Challenge - The party continues</a></td></tr><tr><td><a href=\"https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends\"><img src=\"https://steemitimages.com/64x128/http://i.cubeupload.com/kf4SJb.png\"></a></td><td><a href=\"https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends\">Christmas Challenge - Send a gift to to your friends</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.579 SP to @againme
2018/09/14 06:42:18
delegatorsteem
delegateeagainme
vesting shares9084.756578 VESTS
Transaction InfoBlock #25945767/Trx 9c1880086cf0c0fe4b33dfa631e5595e58266d3f
View Raw JSON Data
{
  "trx_id": "9c1880086cf0c0fe4b33dfa631e5595e58266d3f",
  "block": 25945767,
  "trx_in_block": 8,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-09-14T06:42:18",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "9084.756578 VESTS"
    }
  ]
}
againmepublished a new post: qicycle-firmware-update
2018/06/15 04:40:21
parent author
parent permlinkqicycle
authoragainme
permlinkqicycle-firmware-update
titleqicycle firmware update 치사이클 펌웨어 업데이트 방법
bodyhttps://en.xiaomitoday.it/qicycle-aumentare-il-limite-a-29km-h-con-un-firmware-custom.html
json metadata{"tags":["qicycle","firmware","update"],"links":["https://en.xiaomitoday.it/qicycle-aumentare-il-limite-a-29km-h-con-un-firmware-custom.html"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #23333969/Trx 09be20d85c2d1b0e7097cd8db90ba50895517947
View Raw JSON Data
{
  "trx_id": "09be20d85c2d1b0e7097cd8db90ba50895517947",
  "block": 23333969,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-06-15T04:40:21",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "qicycle",
      "author": "againme",
      "permlink": "qicycle-firmware-update",
      "title": "qicycle firmware update 치사이클 펌웨어 업데이트 방법",
      "body": "https://en.xiaomitoday.it/qicycle-aumentare-il-limite-a-29km-h-con-un-firmware-custom.html",
      "json_metadata": "{\"tags\":[\"qicycle\",\"firmware\",\"update\"],\"links\":[\"https://en.xiaomitoday.it/qicycle-aumentare-il-limite-a-29km-h-con-un-firmware-custom.html\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
anomalyupvoted (1.00%) @againme / css-media
2018/06/07 08:15:27
voteranomaly
authoragainme
permlinkcss-media
weight100 (1.00%)
Transaction InfoBlock #23108498/Trx cf8950e9f8d7c865105624ee1010d7403719fc12
View Raw JSON Data
{
  "trx_id": "cf8950e9f8d7c865105624ee1010d7403719fc12",
  "block": 23108498,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-06-07T08:15:27",
  "op": [
    "vote",
    {
      "voter": "anomaly",
      "author": "againme",
      "permlink": "css-media",
      "weight": 100
    }
  ]
}
raise-me-upupvoted (0.60%) @againme / css-media
2018/06/07 07:44:27
voterraise-me-up
authoragainme
permlinkcss-media
weight60 (0.60%)
Transaction InfoBlock #23107878/Trx 00ae034dda59293c8d69033a5d367016570e41d3
View Raw JSON Data
{
  "trx_id": "00ae034dda59293c8d69033a5d367016570e41d3",
  "block": 23107878,
  "trx_in_block": 36,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-06-07T07:44:27",
  "op": [
    "vote",
    {
      "voter": "raise-me-up",
      "author": "againme",
      "permlink": "css-media",
      "weight": 60
    }
  ]
}
againmepublished a new post: css-media
2018/06/07 07:43:36
parent author
parent permlinkcss
authoragainme
permlinkcss-media
titlecss : @media 쿼리
bodyhttp://naradesign.net/wp/2012/05/30/1823/ https://developer.mozilla.org/ko/docs/Web/Guide/CSS/Media_queries
json metadata{"tags":["css","media","query"],"links":["http://naradesign.net/wp/2012/05/30/1823/","https://developer.mozilla.org/ko/docs/Web/Guide/CSS/Media_queries"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #23107861/Trx 155f475735020e9ca70e178ca6019c69745323e9
View Raw JSON Data
{
  "trx_id": "155f475735020e9ca70e178ca6019c69745323e9",
  "block": 23107861,
  "trx_in_block": 7,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-06-07T07:43:36",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "css",
      "author": "againme",
      "permlink": "css-media",
      "title": "css : @media 쿼리",
      "body": "http://naradesign.net/wp/2012/05/30/1823/\n\n\nhttps://developer.mozilla.org/ko/docs/Web/Guide/CSS/Media_queries",
      "json_metadata": "{\"tags\":[\"css\",\"media\",\"query\"],\"links\":[\"http://naradesign.net/wp/2012/05/30/1823/\",\"https://developer.mozilla.org/ko/docs/Web/Guide/CSS/Media_queries\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
againmepublished a new post: javascript-yarn
2018/05/29 05:23:06
parent author
parent permlinkjavascript
authoragainme
permlinkjavascript-yarn
titlejavascript : yarn
bodyYarn의 특징과 성능에 대한 정리 http://happygrammer.tistory.com/154 YARN은 다음과 같은 특징을 내세우고 있습니다. 빠르다 안전성 신뢰성 NPM은 배포가 쉽고 종속성을 쉽게 해결할 수 있다는 장점이 있지만 패키지가 중복으로 설치될 수 있다는 단점이 있습니다. 파일이 많은 경우 문제가 됩니다. 그래서 최근 페이스북의 node_modules를 관리하면서의 불편한 점을 개선하기 위해 Yarn이 탄생됐습니다. Yarn은 다음과 같은 특징이 있습니다. NPM3보다 패키지 설치 속도가 빠릅니다. json 포맷을 사용하지 않습니다. 오프라인 모드가 가능합니다. 설치 파일을 통해 설치가 가능합니다. 설치 페이지에서 인스톨러를 다운로드 받아 설치합니다. 그럼 커맨드 창에서 yarn명령어를 이용할 수 있습니다. npm에 기반한 설치는 다음과 같은 과정으로 진행합니다. npm install --global yarn YARN의 최신 버전은 다음과 같이 업데이트 합니다. yarn self-update Yarn은 다음과 같은 명령어로 초기화할 수 있습니다. yarn init Yarn을 이용해 패키지를 추가하려면 add 옵션을 이용합니다. yarn add [package-name]@[version-or-tag] [option] 예를 들어 react 패키지를 설치하려면 다음 명령어를 입력합니다. 출처: http://happygrammer.tistory.com/154 [해피그래머의 개발 노트] Yarn: 처음 보는 자바스크립트의 새 패키지 매니저 (Yarn: First Look at the New Package Manager for JavaScript) https://www.vobour.com/yarn-%EC%B2%98%EC%9D%8C-%EB%B3%B4%EB%8A%94-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%83%88-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80-yarn-fir
json metadata{"tags":["javascript","yarn"],"links":["http://happygrammer.tistory.com/154","https://www.vobour.com/yarn-%EC%B2%98%EC%9D%8C-%EB%B3%B4%EB%8A%94-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%83%88-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80-yarn-fir"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #22845931/Trx f3e6ec15cb28c841338efc7cc7ffcc250eaec566
View Raw JSON Data
{
  "trx_id": "f3e6ec15cb28c841338efc7cc7ffcc250eaec566",
  "block": 22845931,
  "trx_in_block": 46,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-29T05:23:06",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "javascript",
      "author": "againme",
      "permlink": "javascript-yarn",
      "title": "javascript : yarn",
      "body": "Yarn의 특징과 성능에 대한 정리\n\nhttp://happygrammer.tistory.com/154\n\nYARN은 다음과 같은 특징을 내세우고 있습니다.\n\n빠르다\n\n안전성\n\n신뢰성\n\nNPM은 배포가 쉽고 종속성을 쉽게 해결할 수 있다는 장점이 있지만 패키지가 중복으로 설치될 수 있다는 단점이 있습니다. 파일이 많은 경우 문제가 됩니다. 그래서 최근 페이스북의 node_modules를 관리하면서의 불편한 점을 개선하기 위해 Yarn이 탄생됐습니다. Yarn은 다음과 같은 특징이 있습니다.\n\nNPM3보다 패키지 설치 속도가 빠릅니다.\n\njson 포맷을 사용하지 않습니다.\n\n오프라인 모드가 가능합니다.\n\n설치 파일을 통해 설치가 가능합니다. 설치 페이지에서 인스톨러를 다운로드 받아 설치합니다. 그럼 커맨드 창에서 yarn명령어를 이용할 수 있습니다.\n\nnpm에 기반한 설치는 다음과 같은 과정으로 진행합니다.\n\nnpm install --global yarn\nYARN의 최신 버전은 다음과 같이 업데이트 합니다.\n\nyarn self-update\nYarn은 다음과 같은 명령어로 초기화할 수 있습니다.\n\nyarn init\nYarn을 이용해 패키지를 추가하려면 add 옵션을 이용합니다.\n\nyarn add [package-name]@[version-or-tag] [option]\n예를 들어 react 패키지를 설치하려면 다음 명령어를 입력합니다.\n\n출처: http://happygrammer.tistory.com/154 [해피그래머의 개발 노트]\n\n\nYarn: 처음 보는 자바스크립트의 새 패키지 매니저 (Yarn: First Look at the New Package Manager for JavaScript)\n\nhttps://www.vobour.com/yarn-%EC%B2%98%EC%9D%8C-%EB%B3%B4%EB%8A%94-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%83%88-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80-yarn-fir",
      "json_metadata": "{\"tags\":[\"javascript\",\"yarn\"],\"links\":[\"http://happygrammer.tistory.com/154\",\"https://www.vobour.com/yarn-%EC%B2%98%EC%9D%8C-%EB%B3%B4%EB%8A%94-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%83%88-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80-yarn-fir\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
againmepublished a new post: javascript-yarn
2018/05/29 05:22:36
parent author
parent permlinkjavascript
authoragainme
permlinkjavascript-yarn
titlejavascript : yarn
bodyYarn의 특징과 성능에 대한 정리 http://happygrammer.tistory.com/154 YARN은 다음과 같은 특징을 내세우고 있습니다. 빠르다 안전성 신뢰성 NPM은 배포가 쉽고 종속성을 쉽게 해결할 수 있다는 장점이 있지만 패키지가 중복으로 설치될 수 있다는 단점이 있습니다. 파일이 많은 경우 문제가 됩니다. 그래서 최근 페이스북의 node_modules를 관리하면서의 불편한 점을 개선하기 위해 Yarn이 탄생됐습니다. Yarn은 다음과 같은 특징이 있습니다. NPM3보다 패키지 설치 속도가 빠릅니다. json 포맷을 사용하지 않습니다. 오프라인 모드가 가능합니다. 설치 파일을 통해 설치가 가능합니다. 설치 페이지에서 인스톨러를 다운로드 받아 설치합니다. 그럼 커맨드 창에서 yarn명령어를 이용할 수 있습니다. npm에 기반한 설치는 다음과 같은 과정으로 진행합니다. npm install --global yarn YARN의 최신 버전은 다음과 같이 업데이트 합니다. yarn self-update Yarn은 다음과 같은 명령어로 초기화할 수 있습니다. yarn init Yarn을 이용해 패키지를 추가하려면 add 옵션을 이용합니다. yarn add [package-name]@[version-or-tag] [option] 예를 들어 react 패키지를 설치하려면 다음 명령어를 입력합니다. YARN은 다음과 같은 특징을 내세우고 있습니다. 빠르다 안전성 신뢰성 NPM은 배포가 쉽고 종속성을 쉽게 해결할 수 있다는 장점이 있지만 패키지가 중복으로 설치될 수 있다는 단점이 있습니다. 파일이 많은 경우 문제가 됩니다. 그래서 최근 페이스북의 node_modules를 관리하면서의 불편한 점을 개선하기 위해 Yarn이 탄생됐습니다. Yarn은 다음과 같은 특징이 있습니다. NPM3보다 패키지 설치 속도가 빠릅니다. json 포맷을 사용하지 않습니다. 오프라인 모드가 가능합니다. 설치 파일을 통해 설치가 가능합니다. 설치 페이지에서 인스톨러를 다운로드 받아 설치합니다. 그럼 커맨드 창에서 yarn명령어를 이용할 수 있습니다. npm에 기반한 설치는 다음과 같은 과정으로 진행합니다. npm install --global yarn YARN의 최신 버전은 다음과 같이 업데이트 합니다. yarn self-update Yarn은 다음과 같은 명령어로 초기화할 수 있습니다. yarn init Yarn을 이용해 패키지를 추가하려면 add 옵션을 이용합니다. yarn add [package-name]@[version-or-tag] [option] 예를 들어 react 패키지를 설치하려면 다음 명령어를 입력합니다. yarn add react 출처: http://happygrammer.tistory.com/154 [해피그래머의 개발 노트] Yarn: 처음 보는 자바스크립트의 새 패키지 매니저 (Yarn: First Look at the New Package Manager for JavaScript) https://www.vobour.com/yarn-%EC%B2%98%EC%9D%8C-%EB%B3%B4%EB%8A%94-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%83%88-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80-yarn-fir
json metadata{"tags":["javascript","yarn"],"links":["http://happygrammer.tistory.com/154","https://www.vobour.com/yarn-%EC%B2%98%EC%9D%8C-%EB%B3%B4%EB%8A%94-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%83%88-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80-yarn-fir"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #22845921/Trx d0c128a445e705ceca8c62a06235b6c1cb725356
View Raw JSON Data
{
  "trx_id": "d0c128a445e705ceca8c62a06235b6c1cb725356",
  "block": 22845921,
  "trx_in_block": 19,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-29T05:22:36",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "javascript",
      "author": "againme",
      "permlink": "javascript-yarn",
      "title": "javascript : yarn",
      "body": "Yarn의 특징과 성능에 대한 정리\n\nhttp://happygrammer.tistory.com/154\n\nYARN은 다음과 같은 특징을 내세우고 있습니다.\n\n빠르다\n\n안전성\n\n신뢰성\n\nNPM은 배포가 쉽고 종속성을 쉽게 해결할 수 있다는 장점이 있지만 패키지가 중복으로 설치될 수 있다는 단점이 있습니다. 파일이 많은 경우 문제가 됩니다. 그래서 최근 페이스북의 node_modules를 관리하면서의 불편한 점을 개선하기 위해 Yarn이 탄생됐습니다. Yarn은 다음과 같은 특징이 있습니다.\n\nNPM3보다 패키지 설치 속도가 빠릅니다.\n\njson 포맷을 사용하지 않습니다.\n\n오프라인 모드가 가능합니다.\n\n설치 파일을 통해 설치가 가능합니다. 설치 페이지에서 인스톨러를 다운로드 받아 설치합니다. 그럼 커맨드 창에서 yarn명령어를 이용할 수 있습니다.\n\nnpm에 기반한 설치는 다음과 같은 과정으로 진행합니다.\n\nnpm install --global yarn\nYARN의 최신 버전은 다음과 같이 업데이트 합니다.\n\nyarn self-update\nYarn은 다음과 같은 명령어로 초기화할 수 있습니다.\n\nyarn init\nYarn을 이용해 패키지를 추가하려면 add 옵션을 이용합니다.\n\nyarn add [package-name]@[version-or-tag] [option]\n예를 들어 react 패키지를 설치하려면 다음 명령어를 입력합니다.\n\nYARN은 다음과 같은 특징을 내세우고 있습니다.\n\n빠르다\n\n안전성\n\n신뢰성\n\nNPM은 배포가 쉽고 종속성을 쉽게 해결할 수 있다는 장점이 있지만 패키지가 중복으로 설치될 수 있다는 단점이 있습니다. 파일이 많은 경우 문제가 됩니다. 그래서 최근 페이스북의 node_modules를 관리하면서의 불편한 점을 개선하기 위해 Yarn이 탄생됐습니다. Yarn은 다음과 같은 특징이 있습니다.\n\nNPM3보다 패키지 설치 속도가 빠릅니다.\n\njson 포맷을 사용하지 않습니다.\n\n오프라인 모드가 가능합니다.\n\n설치 파일을 통해 설치가 가능합니다. 설치 페이지에서 인스톨러를 다운로드 받아 설치합니다. 그럼 커맨드 창에서 yarn명령어를 이용할 수 있습니다.\n\nnpm에 기반한 설치는 다음과 같은 과정으로 진행합니다.\n\nnpm install --global yarn\nYARN의 최신 버전은 다음과 같이 업데이트 합니다.\n\nyarn self-update\nYarn은 다음과 같은 명령어로 초기화할 수 있습니다.\n\nyarn init\nYarn을 이용해 패키지를 추가하려면 add 옵션을 이용합니다.\n\nyarn add [package-name]@[version-or-tag] [option]\n예를 들어 react 패키지를 설치하려면 다음 명령어를 입력합니다.\n\nyarn add react\n\n\n출처: http://happygrammer.tistory.com/154 [해피그래머의 개발 노트]\n\n\nYarn: 처음 보는 자바스크립트의 새 패키지 매니저 (Yarn: First Look at the New Package Manager for JavaScript)\n\nhttps://www.vobour.com/yarn-%EC%B2%98%EC%9D%8C-%EB%B3%B4%EB%8A%94-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%83%88-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80-yarn-fir",
      "json_metadata": "{\"tags\":[\"javascript\",\"yarn\"],\"links\":[\"http://happygrammer.tistory.com/154\",\"https://www.vobour.com/yarn-%EC%B2%98%EC%9D%8C-%EB%B3%B4%EB%8A%94-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%83%88-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80-yarn-fir\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
againmepublished a new post: javascript-yarn
2018/05/29 05:15:33
parent author
parent permlinkjavascript
authoragainme
permlinkjavascript-yarn
titlejavascript : yarn
bodyYarn: 처음 보는 자바스크립트의 새 패키지 매니저 (Yarn: First Look at the New Package Manager for JavaScript) https://www.vobour.com/yarn-%EC%B2%98%EC%9D%8C-%EB%B3%B4%EB%8A%94-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%83%88-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80-yarn-fir Yarn의 특징과 성능에 대한 정리 http://happygrammer.tistory.com/154
json metadata{"tags":["javascript","yarn"],"links":["https://www.vobour.com/yarn-%EC%B2%98%EC%9D%8C-%EB%B3%B4%EB%8A%94-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%83%88-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80-yarn-fir","http://happygrammer.tistory.com/154"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #22845780/Trx dfdb1c4a1c368f54d7486c5e4b0e1e9d34d662b9
View Raw JSON Data
{
  "trx_id": "dfdb1c4a1c368f54d7486c5e4b0e1e9d34d662b9",
  "block": 22845780,
  "trx_in_block": 112,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-29T05:15:33",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "javascript",
      "author": "againme",
      "permlink": "javascript-yarn",
      "title": "javascript : yarn",
      "body": "Yarn: 처음 보는 자바스크립트의 새 패키지 매니저 (Yarn: First Look at the New Package Manager for JavaScript)\n\nhttps://www.vobour.com/yarn-%EC%B2%98%EC%9D%8C-%EB%B3%B4%EB%8A%94-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%83%88-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80-yarn-fir\n\nYarn의 특징과 성능에 대한 정리\n\nhttp://happygrammer.tistory.com/154",
      "json_metadata": "{\"tags\":[\"javascript\",\"yarn\"],\"links\":[\"https://www.vobour.com/yarn-%EC%B2%98%EC%9D%8C-%EB%B3%B4%EB%8A%94-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%83%88-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%A7%A4%EB%8B%88%EC%A0%80-yarn-fir\",\"http://happygrammer.tistory.com/154\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/05/23 10:38:45
parent authoragainme
parent permlinkadnroid-adb
authorsteemitboard
permlinksteemitboard-notify-againme-20180523t103844000z
title
bodyCongratulations @againme! You have completed some achievement on Steemit and have been rewarded with new badge(s) : [![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/voted.png)](http://steemitboard.com/@againme) Award for the number of upvotes received 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` > Do you like **SteemitBoard**'s project? **[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 #22679832/Trx 687e02086ca5946275ac8799b3d217eea90af480
View Raw JSON Data
{
  "trx_id": "687e02086ca5946275ac8799b3d217eea90af480",
  "block": 22679832,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-23T10:38:45",
  "op": [
    "comment",
    {
      "parent_author": "againme",
      "parent_permlink": "adnroid-adb",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-againme-20180523t103844000z",
      "title": "",
      "body": "Congratulations @againme! 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/voted.png)](http://steemitboard.com/@againme) Award for the number of upvotes received\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> Do you like **SteemitBoard**'s project? **[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\"]}"
    }
  ]
}
againmepublished a new post: adnroid-adb
2018/05/23 08:10:24
parent author
parent permlinkadnroid
authoragainme
permlinkadnroid-adb
titleadnroid : adb
body@@ -562,24 +562,32 @@ es%3C/strong%3E%3C - +/p%3E%0A%3Cp%3E%3C br%3E%0A3. conne @@ -691,24 +691,32 @@ %EB%A0%B9%EC%96%B4%3C/strong%3E%3C - +/p%3E%0A%3Cp%3E%3C br%3E%0A4. insta @@ -936,24 +936,32 @@ %EC%84%A4%EC%B9%98%3C/strong%3E%3C - +/p%3E%0A%3Cp%3E%3C br%3E%0A5. Kill @@ -1070,25 +1070,24 @@ me%5D%3C/strong%3E - + %3Cbr%3E%0A%3Cbr%3E%0A6. @@ -1274,22 +1274,15 @@ br%3E%0A -%3Cbr%3E%0A %3C/p%3E%0A%3Cp -re %3E%3Cco @@ -1329,18 +1329,28 @@ code%3E%3C/p -re +%3E%0A%3Cp%3E%3Cbr%3E%3C/p %3E%0A%3Cp%3E8. @@ -1454,16 +1454,24 @@ ng%3E%3Cbr%3E%0A - +%3C/p%3E%0A%3Cp%3E 9. adb l @@ -1574,32 +1574,40 @@ %EC%B9%98)%3C/strong%3E%3Cbr%3E%0A +%3C/p%3E%0A%3Cp%3E %3Cstrong%3E4. %EA%B7%B8%EC%99%B8 %EB%AA%85%EB%A0%B9 @@ -3895,17 +3895,16 @@ /strong%3E - %3Cbr%3E%0Adum
json metadata{"tags":["adnroid","adb"],"links":["https://developer.android.com/studio/command-line/adb?hl=ko"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22676871/Trx 1cb624f3752ce1bbeecbfd253ac441bc3487589d
View Raw JSON Data
{
  "trx_id": "1cb624f3752ce1bbeecbfd253ac441bc3487589d",
  "block": 22676871,
  "trx_in_block": 42,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-23T08:10:24",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "adnroid",
      "author": "againme",
      "permlink": "adnroid-adb",
      "title": "adnroid : adb",
      "body": "@@ -562,24 +562,32 @@\n es%3C/strong%3E%3C\n-\n \n+/p%3E%0A%3Cp%3E%3C\n br%3E%0A3. conne\n@@ -691,24 +691,32 @@\n %EB%A0%B9%EC%96%B4%3C/strong%3E%3C\n-\n \n+/p%3E%0A%3Cp%3E%3C\n br%3E%0A4. insta\n@@ -936,24 +936,32 @@\n %EC%84%A4%EC%B9%98%3C/strong%3E%3C\n-\n \n+/p%3E%0A%3Cp%3E%3C\n br%3E%0A5. Kill \n@@ -1070,25 +1070,24 @@\n me%5D%3C/strong%3E\n- \n \n+\n %3Cbr%3E%0A%3Cbr%3E%0A6.\n@@ -1274,22 +1274,15 @@\n br%3E%0A\n-%3Cbr%3E%0A\n %3C/p%3E%0A%3Cp\n-re\n %3E%3Cco\n@@ -1329,18 +1329,28 @@\n code%3E%3C/p\n-re\n+%3E%0A%3Cp%3E%3Cbr%3E%3C/p\n %3E%0A%3Cp%3E8. \n@@ -1454,16 +1454,24 @@\n ng%3E%3Cbr%3E%0A\n-\n \n+%3C/p%3E%0A%3Cp%3E\n 9. adb l\n@@ -1574,32 +1574,40 @@\n %EC%B9%98)%3C/strong%3E%3Cbr%3E%0A\n+%3C/p%3E%0A%3Cp%3E\n %3Cstrong%3E4. %EA%B7%B8%EC%99%B8 %EB%AA%85%EB%A0%B9\n@@ -3895,17 +3895,16 @@\n /strong%3E\n- \n %3Cbr%3E%0Adum\n",
      "json_metadata": "{\"tags\":[\"adnroid\",\"adb\"],\"links\":[\"https://developer.android.com/studio/command-line/adb?hl=ko\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
swaggerupvoted (0.03%) @againme / adnroid-adb
2018/05/23 08:10:24
voterswagger
authoragainme
permlinkadnroid-adb
weight3 (0.03%)
Transaction InfoBlock #22676871/Trx fb155bd0c399cff91497505545a904505cad250d
View Raw JSON Data
{
  "trx_id": "fb155bd0c399cff91497505545a904505cad250d",
  "block": 22676871,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-23T08:10:24",
  "op": [
    "vote",
    {
      "voter": "swagger",
      "author": "againme",
      "permlink": "adnroid-adb",
      "weight": 3
    }
  ]
}
2018/05/23 08:10:12
voteryoungogmarqs
authoragainme
permlinkadnroid-adb
weight2 (0.02%)
Transaction InfoBlock #22676867/Trx c9be297b5559e5b877758527bf99fa908c8919b2
View Raw JSON Data
{
  "trx_id": "c9be297b5559e5b877758527bf99fa908c8919b2",
  "block": 22676867,
  "trx_in_block": 96,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-23T08:10:12",
  "op": [
    "vote",
    {
      "voter": "youngogmarqs",
      "author": "againme",
      "permlink": "adnroid-adb",
      "weight": 2
    }
  ]
}
againmepublished a new post: adnroid-adb
2018/05/23 08:09:18
parent author
parent permlinkadnroid
authoragainme
permlinkadnroid-adb
titleadnroid : adb
body<html> <p>&nbsp;</p> <h1>Android 디버그 브리지</h1> <p>Android 디버그 브리지(adb)는 에뮬레이터 인스턴스나 연결된 Android 기기와 통신할 수 있는 다목적 명령줄 도구입니다. 이 도구는 앱 설치 및 디버깅과 같은 다양한 기기 작업을 쉽게 해주고, 에뮬레이터나 연결된 기기에서 다양한 명령을 실행하는 데 사용할 수 있는 Unix 셸 액세스를 제공합니다. 이 도구는 다음과 같은 세 가지 구성 요소를 포함하는 클라이언트-서버 프로그램입니다.&nbsp;</p> <p><br></p> <p>https://developer.android.com/studio/command-line/adb?hl=ko</p> <p><br></p> <p>&nbsp;1. Restart Android device: 안드로이드 장비를 재시작한다.<br> <strong>adb reboot</strong><br> <br> 2. Check android device connectivity: 사용자 PC에 연결된 안드로이드 장비 혹은 애뮬레이터를 확인한다.<br> <strong>adb devices</strong><br> 3. connect a certain one device: 2개 이상일 때는 특정기기로만 명령어로 보내야 한다.<br> <strong>adb shell -s [Serial Number] 명령어</strong><br> 4. install android application: 앱 파일명을 이용해 안드로이드 apk를 설치한다.ex) adb install c:\test.apk<br> <strong>adb install [FILENAME].apkadb install -r [FILENAME].apk : 설치된 어플을 재설치(단 데이터 삭제는 불가)adb install -s [FILENAME].apk : 메모리카드에 설치</strong><br> 5. Kill package name: 패키지 명을 이용하여 구동중인 안드로이드 어플리케이션을 강제 종료 시킨다.<br> <strong>adb shell am force-stop [packagename]</strong> <br> <br> 6. remove app: 안드로이드 앱을 언인스톨하여 삭제한다.<br> <strong>adb&nbsp;uninstall pakagename</strong><br> 7. uninstall package: 안드로이드 앱을 언인스톨하여 삭제한다.<br> <strong>adb uninstall pakagename</strong><br> <br> </p> <pre><code>adb shell am force-stop packagename</code></pre> <p>8. list package app: 안드로이드 장비에 설치된 모든 앱의 패키지명을 가져온다.<br> <strong>adb shell pm list packages -f</strong><br> 9. adb ls&nbsp;: 안드로이드 장비 중 해당 폴더의 리스트를 불러온다.<br> <strong>adb shell ls mnt/sdcard/documentadb shell (폴더위치)</strong><br> <strong>4. 그외 명령어</strong><br> <strong>시스템 기본정보: 하드웨어, 커널 등</strong><br> cat /proc/version : 커널 버전<br> cat /proc/cpuinfo : 프로세서 정보, CPU타입, 모델 제조사 등<br> cat /porc/meminfo : 메모리 정보, 실제 메모리 및 가상 메모리<br> cat /proc/devices : 현재 커널에 설정되어 있는 장치 목록<br> mount : 마운트된 모든 장치 정보<br> df : 하드디스크 사용량<br> cat /porc/filesystems : 커널에 설정되어 있는 파일시스템 목록<br> cat /proc/swaps : 스왑 파티션의 크기와 사용량<br> cat /proc/interrupts : 장치가 사용중인 인터럽트(IRQ)목록 표시<br> cat /proc/ioports : 현재 사용중인 input/output 포트<br> cat /proc/partitions : 파티션 정보<br> cat /proc/uptime : 시스템이 얼마나 살아있었는지<br> cat /proc/stat : 시스템 상태에 관한 다양한 정보, CPU 사용 통계, 부팅이후 page fault 발생 횟수 등<br> cat /proc/zoneinfo : ZONEINFO<br> dmesg : 시스템 부팅시 나왔던 메시지<br> ps : 실행중인 프로세스 정보<br> ps -p - t : 프로세스와 쓰레드 목록<br> set or printenv : 환경설정값 출력<br> </p> <p><strong>시스템 리소스 사용 현황</strong><br> vmstat : 시스템 리소스 상황 모니터, CPU, I/O, Memory 등<br> cat /proc/diskstats : 디스크 utilization과 throughput. 즉 디스크 I/O현황<br> top : 시스템 프로세스 상황 모니터링/ 프로세스별 CPU사용량, 메모리와 스왑 사용량 등<br> procrank : 프로세스별 메모리<br> dumpsys meminfo [PID] : 해당 프로세스 메모리 상세 정보<br> cat /proc/[PID]/stat : 해당 프로세스에 대한 정보, 시작시간, 상태, CPU 사용량 등<br> cat /proc/[PID]/maps : 해당 프로세스의 메모리 맵 정보<br> cat /proc/vmstat : 버추얼 메모리 통계?<br> librank : 라이브러리별 메모리 사용량?<br> </p> <p><strong>네트워크 관련</strong><br> cat /proc/net/netlink : 네트워크 정보<br> netcfg : 네트워크 인터페이스와 IP주소 목록<br> netstat : 네트워크 연결상태 확인<br> nc : 네트워크용 cat 명령어(netcat)<br> ifconfig : 네트워크 인터페이스 설정 정보. 장치명을 파라미터로 받음. ip 주소. 서브넷마스크 등<br> tcpdump : 실시간 패킷 모니터링<br> iftop : 네트워크를 위한 top<br> route : 해당 호스트까지 연결하는 중간 경로 정보인 라우팅 테이블 표시<br> ping : 원격 호스트와의 연결 테스트<br> cat /proc/net/route : Route<br> </p> <p><strong>안드로이드 제공</strong><br> logcat : 로그캣 보기<br> pm : package manager의 약자. 패키지/permission/instrumentation/feature 목록, 패키지 설치/제거 등<br> am : activity manager의 약자, 액티비티 시작, Intent 브로드캐스팅, Instrumentation 시작, profiling 시작 / 중지 등<br> service : 안드로이드 서비스 목록 표시, 서비스에 명령 전달<br> monkey : 애플리케이션에 랜덤 이벤트 발생시킴. 사용자 이벤트, 시스템 이벤트의 무작위 발행<br> cat /data/anr/traces.txt : VM TRACES (쓰레드 덤프)<br> cat /proc/binder/proc/[PID] : 바인더 프로세스 상태<br> cat /proc/binder/xxx : 바인더 관련 정보(xxx은 transaction, transaction_log, failed_transaction_log, stats 등)<br> cat /data/system/packages.xml : 설치된 패키지 세팅 정보<br> setprop : system property 셋팅<br> getprop : 셋팅된 system property 목록 출력<br> </p> <p><strong>종합 리포트</strong> <br> dumpsys [service] : app/service 상태정보 덤프, 서비스별로 추가 파라미터 받을 수 있음<br> dumpstate : device 상태정보 덤프. 상태정보를 추출하는 여러 명령어들의 조합으로 구성<br> dumpcrash : 애플리케이션이 crach될 때의 상태정보 덤프<br> bugreport : logcat + dumpsys + dumpstat<br> </p> <p><br></p> <p><br></p> </html>
json metadata{"tags":["adnroid","adb"],"links":["https://developer.android.com/studio/command-line/adb?hl=ko"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22676849/Trx 72671f9465785dd2efa68d15ba3db2ea72d81182
View Raw JSON Data
{
  "trx_id": "72671f9465785dd2efa68d15ba3db2ea72d81182",
  "block": 22676849,
  "trx_in_block": 17,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-23T08:09:18",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "adnroid",
      "author": "againme",
      "permlink": "adnroid-adb",
      "title": "adnroid : adb",
      "body": "<html>\n<p>&nbsp;</p>\n<h1>Android 디버그 브리지</h1>\n<p>Android 디버그 브리지(adb)는 에뮬레이터 인스턴스나 연결된 Android 기기와 통신할 수 있는 다목적 명령줄 도구입니다. 이 도구는 앱 설치 및 디버깅과 같은 다양한 기기 작업을 쉽게 해주고, 에뮬레이터나 연결된 기기에서 다양한 명령을 실행하는 데 사용할 수 있는 Unix 셸 액세스를 제공합니다. 이 도구는 다음과 같은 세 가지 구성 요소를 포함하는 클라이언트-서버 프로그램입니다.&nbsp;</p>\n<p><br></p>\n<p>https://developer.android.com/studio/command-line/adb?hl=ko</p>\n<p><br></p>\n<p>&nbsp;1. Restart Android device: 안드로이드 장비를 재시작한다.<br>\n<strong>adb reboot</strong><br>\n<br>\n2. Check android device connectivity: 사용자 PC에 연결된 안드로이드 장비 혹은 애뮬레이터를 확인한다.<br>\n<strong>adb devices</strong><br>\n3. connect a certain one device: 2개 이상일 때는 특정기기로만 명령어로 보내야 한다.<br>\n<strong>adb shell -s [Serial Number] 명령어</strong><br>\n4. install android application: 앱 파일명을 이용해 안드로이드 apk를 설치한다.ex) adb install c:\\test.apk<br>\n<strong>adb install [FILENAME].apkadb install -r [FILENAME].apk : 설치된 어플을 재설치(단 데이터 삭제는 불가)adb install -s [FILENAME].apk : 메모리카드에 설치</strong><br>\n5. Kill package name: 패키지 명을 이용하여 구동중인 안드로이드 어플리케이션을 강제 종료 시킨다.<br>\n<strong>adb shell am force-stop [packagename]</strong> <br>\n<br>\n6. remove app: 안드로이드 앱을 언인스톨하여 삭제한다.<br>\n<strong>adb&nbsp;uninstall pakagename</strong><br>\n7. uninstall package: 안드로이드 앱을 언인스톨하여 삭제한다.<br>\n<strong>adb uninstall pakagename</strong><br>\n<br>\n</p>\n<pre><code>adb shell am force-stop packagename</code></pre>\n<p>8. list package app: 안드로이드 장비에 설치된 모든 앱의 패키지명을 가져온다.<br>\n<strong>adb shell pm list packages -f</strong><br>\n9. adb ls&nbsp;: 안드로이드 장비 중 해당 폴더의 리스트를 불러온다.<br>\n<strong>adb shell ls mnt/sdcard/documentadb shell (폴더위치)</strong><br>\n<strong>4. 그외 명령어</strong><br>\n<strong>시스템 기본정보: 하드웨어, 커널 등</strong><br>\ncat /proc/version : 커널 버전<br>\ncat /proc/cpuinfo : 프로세서 정보, CPU타입, 모델 제조사 등<br>\ncat /porc/meminfo : 메모리 정보, 실제 메모리 및 가상 메모리<br>\ncat /proc/devices : 현재 커널에 설정되어 있는 장치 목록<br>\nmount : 마운트된 모든 장치 정보<br>\ndf : 하드디스크 사용량<br>\ncat /porc/filesystems : 커널에 설정되어 있는 파일시스템 목록<br>\ncat /proc/swaps : 스왑 파티션의 크기와 사용량<br>\ncat /proc/interrupts : 장치가 사용중인 인터럽트(IRQ)목록 표시<br>\ncat /proc/ioports : 현재 사용중인 input/output 포트<br>\ncat /proc/partitions : 파티션 정보<br>\ncat /proc/uptime : 시스템이 얼마나 살아있었는지<br>\ncat /proc/stat : 시스템 상태에 관한 다양한 정보, CPU 사용 통계, 부팅이후 page fault 발생 횟수 등<br>\ncat /proc/zoneinfo : ZONEINFO<br>\ndmesg : 시스템 부팅시 나왔던 메시지<br>\nps : 실행중인 프로세스 정보<br>\nps -p - t : 프로세스와 쓰레드 목록<br>\nset or printenv : 환경설정값 출력<br>\n</p>\n<p><strong>시스템 리소스 사용 현황</strong><br>\nvmstat : 시스템 리소스 상황 모니터, CPU, I/O, Memory 등<br>\ncat /proc/diskstats : 디스크 utilization과 throughput. 즉 디스크 I/O현황<br>\ntop : 시스템 프로세스 상황 모니터링/ 프로세스별 CPU사용량, 메모리와 스왑 사용량 등<br>\nprocrank : 프로세스별 메모리<br>\ndumpsys meminfo [PID] : 해당 프로세스 메모리 상세 정보<br>\ncat /proc/[PID]/stat : 해당 프로세스에 대한 정보, 시작시간, 상태, CPU 사용량 등<br>\ncat /proc/[PID]/maps : 해당 프로세스의 메모리 맵 정보<br>\ncat /proc/vmstat : 버추얼 메모리 통계?<br>\nlibrank : 라이브러리별 메모리 사용량?<br>\n</p>\n<p><strong>네트워크 관련</strong><br>\ncat /proc/net/netlink : 네트워크 정보<br>\nnetcfg : 네트워크 인터페이스와 IP주소 목록<br>\nnetstat : 네트워크 연결상태 확인<br>\nnc : 네트워크용 cat 명령어(netcat)<br>\nifconfig : 네트워크 인터페이스 설정 정보. 장치명을 파라미터로 받음. ip 주소. 서브넷마스크 등<br>\ntcpdump : 실시간 패킷 모니터링<br>\niftop : 네트워크를 위한 top<br>\nroute : 해당 호스트까지 연결하는 중간 경로 정보인 라우팅 테이블 표시<br>\nping : 원격 호스트와의 연결 테스트<br>\ncat /proc/net/route : Route<br>\n</p>\n<p><strong>안드로이드 제공</strong><br>\nlogcat : 로그캣 보기<br>\npm : package manager의 약자. 패키지/permission/instrumentation/feature 목록, 패키지 설치/제거 등<br>\nam : activity manager의 약자, 액티비티 시작, Intent 브로드캐스팅, Instrumentation 시작, profiling 시작 / 중지 등<br>\nservice : 안드로이드 서비스 목록 표시, 서비스에 명령 전달<br>\nmonkey : 애플리케이션에 랜덤 이벤트 발생시킴. 사용자 이벤트, 시스템 이벤트의 무작위 발행<br>\ncat /data/anr/traces.txt : VM TRACES (쓰레드 덤프)<br>\ncat /proc/binder/proc/[PID] : 바인더 프로세스 상태<br>\ncat /proc/binder/xxx : 바인더 관련 정보(xxx은 transaction, transaction_log, failed_transaction_log, stats 등)<br>\ncat /data/system/packages.xml : 설치된 패키지 세팅 정보<br>\nsetprop : system property 셋팅<br>\ngetprop : 셋팅된 system property 목록 출력<br>\n</p>\n<p><strong>종합 리포트</strong> <br>\ndumpsys [service] : app/service 상태정보 덤프, 서비스별로 추가 파라미터 받을 수 있음<br>\ndumpstate : device 상태정보 덤프. 상태정보를 추출하는 여러 명령어들의 조합으로 구성<br>\ndumpcrash : 애플리케이션이 crach될 때의 상태정보 덤프<br>\nbugreport : logcat + dumpsys + dumpstat<br>\n</p>\n<p><br></p>\n<p><br></p>\n</html>",
      "json_metadata": "{\"tags\":[\"adnroid\",\"adb\"],\"links\":[\"https://developer.android.com/studio/command-line/adb?hl=ko\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
againmepublished a new post: adnroid-adb
2018/05/23 07:46:45
parent author
parent permlinkadnroid
authoragainme
permlinkadnroid-adb
titleadnroid : adb
body<html> <p>&nbsp;</p> <h1>Android 디버그 브리지</h1> <p>Android 디버그 브리지(adb)는 에뮬레이터 인스턴스나 연결된 Android 기기와 통신할 수 있는 다목적 명령줄 도구입니다. 이 도구는 앱 설치 및 디버깅과 같은 다양한 기기 작업을 쉽게 해주고, 에뮬레이터나 연결된 기기에서 다양한 명령을 실행하는 데 사용할 수 있는 Unix 셸 액세스를 제공합니다. 이 도구는 다음과 같은 세 가지 구성 요소를 포함하는 클라이언트-서버 프로그램입니다.&nbsp;</p> <p><br></p> <p>https://developer.android.com/studio/command-line/adb?hl=ko</p> <p><br></p> </html>
json metadata{"tags":["adnroid","adb"],"links":["https://developer.android.com/studio/command-line/adb?hl=ko"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22676399/Trx bfd6ca4931b7d9b72eba559255ce99a0d3012505
View Raw JSON Data
{
  "trx_id": "bfd6ca4931b7d9b72eba559255ce99a0d3012505",
  "block": 22676399,
  "trx_in_block": 8,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-23T07:46:45",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "adnroid",
      "author": "againme",
      "permlink": "adnroid-adb",
      "title": "adnroid : adb",
      "body": "<html>\n<p>&nbsp;</p>\n<h1>Android 디버그 브리지</h1>\n<p>Android 디버그 브리지(adb)는 에뮬레이터 인스턴스나 연결된 Android 기기와 통신할 수 있는 다목적 명령줄 도구입니다. 이 도구는 앱 설치 및 디버깅과 같은 다양한 기기 작업을 쉽게 해주고, 에뮬레이터나 연결된 기기에서 다양한 명령을 실행하는 데 사용할 수 있는 Unix 셸 액세스를 제공합니다. 이 도구는 다음과 같은 세 가지 구성 요소를 포함하는 클라이언트-서버 프로그램입니다.&nbsp;</p>\n<p><br></p>\n<p>https://developer.android.com/studio/command-line/adb?hl=ko</p>\n<p><br></p>\n</html>",
      "json_metadata": "{\"tags\":[\"adnroid\",\"adb\"],\"links\":[\"https://developer.android.com/studio/command-line/adb?hl=ko\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
2018/05/21 08:44:30
required auths[]
required posting auths["againme"]
idfollow
json["follow",{"follower":"againme","following":"kilu83","what":["blog"]}]
Transaction InfoBlock #22619969/Trx fa300ee2c0707b499a54cc2c2945e46253d1663b
View Raw JSON Data
{
  "trx_id": "fa300ee2c0707b499a54cc2c2945e46253d1663b",
  "block": 22619969,
  "trx_in_block": 20,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-21T08:44:30",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "againme"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"againme\",\"following\":\"kilu83\",\"what\":[\"blog\"]}]"
    }
  ]
}
steemdelegated 18.112 SP to @againme
2018/05/18 18:34:21
delegatorsteem
delegateeagainme
vesting shares29494.642109 VESTS
Transaction InfoBlock #22545379/Trx d73773a9ea1304bd82d66eb666603d6b0cefe530
View Raw JSON Data
{
  "trx_id": "d73773a9ea1304bd82d66eb666603d6b0cefe530",
  "block": 22545379,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-18T18:34:21",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "againme",
      "vesting_shares": "29494.642109 VESTS"
    }
  ]
}
againmepublished a new post: node-js-npm-install-option
2018/05/17 07:15:21
parent author
parent permlinknodejs
authoragainme
permlinknode-js-npm-install-option
titlenode.js : npm install option
body<html> <p>&nbsp;&nbsp;</p> <h4>--save 옵션</h4> <pre><code>$ npm install github --save</code></pre> <p>만약 현재 경로에 <code>package.json</code> 이 존재하면 아래와 같이 <code>dependencies</code> 항목에 자동으로 포함된다.</p> <p>{</p> <p>&nbsp;&nbsp;"name": "node-github-test",</p> <p>&nbsp;&nbsp;"version": "0.0.0",</p> <p>&nbsp;&nbsp;"description": "node-github test",</p> <p>&nbsp;&nbsp;"dependencies": {</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;"github": "^0.2.4"</p> <p>&nbsp;&nbsp;}</p> <p>}</p> <p><br></p> <p><strong>--save-dev 옵션</strong></p> <p>$ npm install mocha --save-dev</p> <p>만약 현재 경로에 package.json 이 존재하면 아래와 같이 devDependencies 항목에 자동으로 포함된다.</p> <p>{</p> <p>&nbsp;&nbsp;"name": "fourdollar.js",</p> <p>&nbsp;&nbsp;"version": "0.1.3",</p> <p>&nbsp;&nbsp;"dependencies": {},</p> <p>&nbsp;&nbsp;"devDependencies": {</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;"mocha": "^2.3.4"</p> <p>&nbsp;&nbsp;}</p> <p>}</p> <p><br></p> <p>-v: --version</p> <p>-h, -?, --help, -H: --usage</p> <p>-s, --silent: --loglevel silent</p> <p>-q, --quiet: --loglevel warn</p> <p>-d: --loglevel info</p> <p>-dd, --verbose: --loglevel verbose</p> <p>-ddd: --loglevel silly</p> <p>-g: --global</p> <p>-C: --prefix</p> <p>-l: --long</p> <p>-m: --message</p> <p>-p, --porcelain: --parseable</p> <p>-reg: --registry</p> <p>-f: --force</p> <p>-desc: --description</p> <p>-S: --save</p> <p>-P: --save-prod</p> <p>-D: --save-dev</p> <p>-O: --save-optional</p> <p>-B: --save-bundle</p> <p>-E: --save-exact</p> <p>-y: --yes</p> <p>-n: --yes false</p> <p>ll and la commands: ls --long</p> <p><br></p> <p><code>npm install express@4 --save-dev</code></p> <p><code>npm install ejs@2 --save</code></p> <p><code>npm install -g bower</code></p> <p><code>bower install skeleton</code></p> <p><code>npm install express-session@1 --save</code></p> <p><code>npm install firebase@2 --save</code></p> <p><code>npm install body-parser@1 --save</code></p> <p><code>npm install cookie-parser@1 --save</code></p> <p><br></p> <p><br></p> </html>
json metadata{"tags":["nodejs","npm"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22503005/Trx 80fcfa44a33de269fcaa9a81b094cf4abb6c030a
View Raw JSON Data
{
  "trx_id": "80fcfa44a33de269fcaa9a81b094cf4abb6c030a",
  "block": 22503005,
  "trx_in_block": 36,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-17T07:15:21",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "nodejs",
      "author": "againme",
      "permlink": "node-js-npm-install-option",
      "title": "node.js : npm install option",
      "body": "<html>\n<p>&nbsp;&nbsp;</p>\n<h4>--save 옵션</h4>\n<pre><code>$ npm install github --save</code></pre>\n<p>만약 현재 경로에 <code>package.json</code> 이 존재하면 아래와 같이 <code>dependencies</code> 항목에 자동으로 포함된다.</p>\n<p>{</p>\n<p>&nbsp;&nbsp;\"name\": \"node-github-test\",</p>\n<p>&nbsp;&nbsp;\"version\": \"0.0.0\",</p>\n<p>&nbsp;&nbsp;\"description\": \"node-github test\",</p>\n<p>&nbsp;&nbsp;\"dependencies\": {</p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\"github\": \"^0.2.4\"</p>\n<p>&nbsp;&nbsp;}</p>\n<p>}</p>\n<p><br></p>\n<p><strong>--save-dev 옵션</strong></p>\n<p>$ npm install mocha --save-dev</p>\n<p>만약 현재 경로에 package.json 이 존재하면 아래와 같이 devDependencies 항목에 자동으로 포함된다.</p>\n<p>{</p>\n<p>&nbsp;&nbsp;\"name\": \"fourdollar.js\",</p>\n<p>&nbsp;&nbsp;\"version\": \"0.1.3\",</p>\n<p>&nbsp;&nbsp;\"dependencies\": {},</p>\n<p>&nbsp;&nbsp;\"devDependencies\": {</p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\"mocha\": \"^2.3.4\"</p>\n<p>&nbsp;&nbsp;}</p>\n<p>}</p>\n<p><br></p>\n<p>-v: --version</p>\n<p>-h, -?, --help, -H: --usage</p>\n<p>-s, --silent: --loglevel silent</p>\n<p>-q, --quiet: --loglevel warn</p>\n<p>-d: --loglevel info</p>\n<p>-dd, --verbose: --loglevel verbose</p>\n<p>-ddd: --loglevel silly</p>\n<p>-g: --global</p>\n<p>-C: --prefix</p>\n<p>-l: --long</p>\n<p>-m: --message</p>\n<p>-p, --porcelain: --parseable</p>\n<p>-reg: --registry</p>\n<p>-f: --force</p>\n<p>-desc: --description</p>\n<p>-S: --save</p>\n<p>-P: --save-prod</p>\n<p>-D: --save-dev</p>\n<p>-O: --save-optional</p>\n<p>-B: --save-bundle</p>\n<p>-E: --save-exact</p>\n<p>-y: --yes</p>\n<p>-n: --yes false</p>\n<p>ll and la commands: ls --long</p>\n<p><br></p>\n<p><code>npm install express@4 --save-dev</code></p>\n<p><code>npm install ejs@2 --save</code></p>\n<p><code>npm install -g bower</code></p>\n<p><code>bower install skeleton</code></p>\n<p><code>npm install express-session@1 --save</code></p>\n<p><code>npm install firebase@2 --save</code></p>\n<p><code>npm install body-parser@1 --save</code></p>\n<p><code>npm install cookie-parser@1 --save</code></p>\n<p><br></p>\n<p><br></p>\n</html>",
      "json_metadata": "{\"tags\":[\"nodejs\",\"npm\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
againmepublished a new post: node-js-npm-install-option
2018/05/17 06:59:12
parent author
parent permlinknodejs
authoragainme
permlinknode-js-npm-install-option
titlenode.js : npm install option
body<html> <p>&nbsp;&nbsp;</p> <h4>--save 옵션</h4> <pre><code>$ npm install github --save</code></pre> <p>만약 현재 경로에 <code>package.json</code> 이 존재하면 아래와 같이 <code>dependencies</code> 항목에 자동으로 포함된다.</p> <pre><code>{<br> <br> <br> <br> &nbsp;"name": "node-github-test",<br> <br> <br> <br> &nbsp;"version": "0.0.0",<br> <br> <br> <br> &nbsp;"description": "node-github test",<br> <br> <br> <br> &nbsp;"dependencies": {<br> <br> <br> <br> &nbsp;&nbsp;&nbsp;"github": "^0.2.4"<br> <br> <br> <br> &nbsp;}<br> <br> <br> <br> }</code></pre> <h4>--save-dev 옵션</h4> <pre><code>$ npm install mocha --save-dev</code></pre> <p>만약 현재 경로에 <code>package.json</code> 이 존재하면 아래와 같이 <code>devDependencies</code> 항목에 자동으로 포함된다.</p> <pre><code>{<br> <br> <br> <br> &nbsp;"name": "fourdollar.js",<br> <br> <br> <br> &nbsp;"version": "0.1.3",<br> <br> <br> <br> &nbsp;"dependencies": {},<br> <br> <br> <br> &nbsp;"devDependencies": {<br> <br> <br> <br> &nbsp;&nbsp;&nbsp;"mocha": "^2.3.4"<br> <br> <br> <br> &nbsp;}<br> <br> <br> <br> }</code></pre> <p><br></p> <pre><code>-v: --version<br> <br> <br> <br> -h, -?, --help, -H: --usage<br> <br> <br> <br> -s, --silent: --loglevel silent<br> <br> <br> <br> -q, --quiet: --loglevel warn<br> <br> <br> <br> -d: --loglevel info<br> <br> <br> <br> -dd, --verbose: --loglevel verbose<br> <br> <br> <br> -ddd: --loglevel silly<br> <br> <br> <br> -g: --global<br> <br> <br> <br> -C: --prefix<br> <br> <br> <br> -l: --long<br> <br> <br> <br> -m: --message<br> <br> <br> <br> -p, --porcelain: --parseable<br> <br> <br> <br> -reg: --registry<br> <br> <br> <br> -f: --force<br> <br> <br> <br> -desc: --description<br> <br> <br> <br> -S: --save<br> <br> <br> <br> -P: --save-prod<br> <br> <br> <br> -D: --save-dev<br> <br> <br> <br> -O: --save-optional<br> <br> <br> <br> -B: --save-bundle<br> <br> <br> <br> -E: --save-exact<br> <br> <br> <br> -y: --yes<br> <br> <br> <br> -n: --yes false<br> <br> <br> <br> ll and la commands: ls --long</code></pre> <p><code>npm install express@4 --save-dev</code></p> <p><code>npm install ejs@2 --save</code></p> <p><code>npm install -g bower</code></p> <p><code>bower install skeleton</code></p> <p><code>npm install express-session@1 --save</code></p> <p><code>npm install firebase@2 --save</code></p> <p><code>npm install body-parser@1 --save</code></p> <p><code>npm install cookie-parser@1 --save</code></p> <p><br></p> <p><br></p> </html>
json metadata{"tags":["nodejs","npm"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22502682/Trx 7139403a14c2eecf900f509e0d54f1ed66aeed45
View Raw JSON Data
{
  "trx_id": "7139403a14c2eecf900f509e0d54f1ed66aeed45",
  "block": 22502682,
  "trx_in_block": 36,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-17T06:59:12",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "nodejs",
      "author": "againme",
      "permlink": "node-js-npm-install-option",
      "title": "node.js : npm install option",
      "body": "<html>\n<p>&nbsp;&nbsp;</p>\n<h4>--save 옵션</h4>\n<pre><code>$ npm install github --save</code></pre>\n<p>만약 현재 경로에 <code>package.json</code> 이 존재하면 아래와 같이 <code>dependencies</code> 항목에 자동으로 포함된다.</p>\n<pre><code>{<br>\n<br>\n<br>\n<br>\n &nbsp;\"name\": \"node-github-test\",<br>\n<br>\n<br>\n<br>\n &nbsp;\"version\": \"0.0.0\",<br>\n<br>\n<br>\n<br>\n &nbsp;\"description\": \"node-github test\",<br>\n<br>\n<br>\n<br>\n &nbsp;\"dependencies\": {<br>\n<br>\n<br>\n<br>\n &nbsp;&nbsp;&nbsp;\"github\": \"^0.2.4\"<br>\n<br>\n<br>\n<br>\n &nbsp;}<br>\n<br>\n<br>\n<br>\n}</code></pre>\n<h4>--save-dev 옵션</h4>\n<pre><code>$ npm install mocha --save-dev</code></pre>\n<p>만약 현재 경로에 <code>package.json</code> 이 존재하면 아래와 같이 <code>devDependencies</code> 항목에 자동으로 포함된다.</p>\n<pre><code>{<br>\n<br>\n<br>\n<br>\n &nbsp;\"name\": \"fourdollar.js\",<br>\n<br>\n<br>\n<br>\n &nbsp;\"version\": \"0.1.3\",<br>\n<br>\n<br>\n<br>\n &nbsp;\"dependencies\": {},<br>\n<br>\n<br>\n<br>\n &nbsp;\"devDependencies\": {<br>\n<br>\n<br>\n<br>\n &nbsp;&nbsp;&nbsp;\"mocha\": \"^2.3.4\"<br>\n<br>\n<br>\n<br>\n &nbsp;}<br>\n<br>\n<br>\n<br>\n}</code></pre>\n<p><br></p>\n<pre><code>-v: --version<br>\n<br>\n<br>\n<br>\n-h, -?, --help, -H: --usage<br>\n<br>\n<br>\n<br>\n-s, --silent: --loglevel silent<br>\n<br>\n<br>\n<br>\n-q, --quiet: --loglevel warn<br>\n<br>\n<br>\n<br>\n-d: --loglevel info<br>\n<br>\n<br>\n<br>\n-dd, --verbose: --loglevel verbose<br>\n<br>\n<br>\n<br>\n-ddd: --loglevel silly<br>\n<br>\n<br>\n<br>\n-g: --global<br>\n<br>\n<br>\n<br>\n-C: --prefix<br>\n<br>\n<br>\n<br>\n-l: --long<br>\n<br>\n<br>\n<br>\n-m: --message<br>\n<br>\n<br>\n<br>\n-p, --porcelain: --parseable<br>\n<br>\n<br>\n<br>\n-reg: --registry<br>\n<br>\n<br>\n<br>\n-f: --force<br>\n<br>\n<br>\n<br>\n-desc: --description<br>\n<br>\n<br>\n<br>\n-S: --save<br>\n<br>\n<br>\n<br>\n-P: --save-prod<br>\n<br>\n<br>\n<br>\n-D: --save-dev<br>\n<br>\n<br>\n<br>\n-O: --save-optional<br>\n<br>\n<br>\n<br>\n-B: --save-bundle<br>\n<br>\n<br>\n<br>\n-E: --save-exact<br>\n<br>\n<br>\n<br>\n-y: --yes<br>\n<br>\n<br>\n<br>\n-n: --yes false<br>\n<br>\n<br>\n<br>\nll and la commands: ls --long</code></pre>\n<p><code>npm install express@4 --save-dev</code></p>\n<p><code>npm install ejs@2 --save</code></p>\n<p><code>npm install -g bower</code></p>\n<p><code>bower install skeleton</code></p>\n<p><code>npm install express-session@1 --save</code></p>\n<p><code>npm install firebase@2 --save</code></p>\n<p><code>npm install body-parser@1 --save</code></p>\n<p><code>npm install cookie-parser@1 --save</code></p>\n<p><br></p>\n<p><br></p>\n</html>",
      "json_metadata": "{\"tags\":[\"nodejs\",\"npm\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
againmepublished a new post: node-js-npm-install-option
2018/05/17 06:47:18
parent author
parent permlinknodejs
authoragainme
permlinknode-js-npm-install-option
titlenode.js : npm install option
body<html> <p>&nbsp;&nbsp;</p> <h4>--save 옵션</h4> <pre><code>$ npm install github --save</code></pre> <p>만약 현재 경로에 <code>package.json</code> 이 존재하면 아래와 같이 <code>dependencies</code> 항목에 자동으로 포함된다.</p> <pre><code>{<br> <br> &nbsp;"name": "node-github-test",<br> <br> &nbsp;"version": "0.0.0",<br> <br> &nbsp;"description": "node-github test",<br> <br> &nbsp;"dependencies": {<br> <br> &nbsp;&nbsp;&nbsp;"github": "^0.2.4"<br> <br> &nbsp;}<br> <br> }</code></pre> <h4>--save-dev 옵션</h4> <pre><code>$ npm install mocha --save-dev</code></pre> <p>만약 현재 경로에 <code>package.json</code> 이 존재하면 아래와 같이 <code>devDependencies</code> 항목에 자동으로 포함된다.</p> <pre><code>{<br> <br> &nbsp;"name": "fourdollar.js",<br> <br> &nbsp;"version": "0.1.3",<br> <br> &nbsp;"dependencies": {},<br> <br> &nbsp;"devDependencies": {<br> <br> &nbsp;&nbsp;&nbsp;"mocha": "^2.3.4"<br> <br> &nbsp;}<br> <br> }</code></pre> <p><br></p> <pre><code>-v: --version<br> <br> -h, -?, --help, -H: --usage<br> <br> -s, --silent: --loglevel silent<br> <br> -q, --quiet: --loglevel warn<br> <br> -d: --loglevel info<br> <br> -dd, --verbose: --loglevel verbose<br> <br> -ddd: --loglevel silly<br> <br> -g: --global<br> <br> -C: --prefix<br> <br> -l: --long<br> <br> -m: --message<br> <br> -p, --porcelain: --parseable<br> <br> -reg: --registry<br> <br> -f: --force<br> <br> -desc: --description<br> <br> -S: --save<br> <br> -P: --save-prod<br> <br> -D: --save-dev<br> <br> -O: --save-optional<br> <br> -B: --save-bundle<br> <br> -E: --save-exact<br> <br> -y: --yes<br> <br> -n: --yes false<br> <br> ll and la commands: ls --long</code></pre> <p><code>npm install express@4 --save-dev</code></p> <p><code>npm install ejs@2 --save</code></p> <p><code>npm install -g bower</code></p> <p><code>bower install skeleton</code></p> <p><br></p> </html>
json metadata{"tags":["nodejs","npm"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22502444/Trx cb25cb73401d3252527aee6e624dfdb91015223f
View Raw JSON Data
{
  "trx_id": "cb25cb73401d3252527aee6e624dfdb91015223f",
  "block": 22502444,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-17T06:47:18",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "nodejs",
      "author": "againme",
      "permlink": "node-js-npm-install-option",
      "title": "node.js : npm install option",
      "body": "<html>\n<p>&nbsp;&nbsp;</p>\n<h4>--save 옵션</h4>\n<pre><code>$ npm install github --save</code></pre>\n<p>만약 현재 경로에 <code>package.json</code> 이 존재하면 아래와 같이 <code>dependencies</code> 항목에 자동으로 포함된다.</p>\n<pre><code>{<br>\n<br>\n &nbsp;\"name\": \"node-github-test\",<br>\n<br>\n &nbsp;\"version\": \"0.0.0\",<br>\n<br>\n &nbsp;\"description\": \"node-github test\",<br>\n<br>\n &nbsp;\"dependencies\": {<br>\n<br>\n &nbsp;&nbsp;&nbsp;\"github\": \"^0.2.4\"<br>\n<br>\n &nbsp;}<br>\n<br>\n}</code></pre>\n<h4>--save-dev 옵션</h4>\n<pre><code>$ npm install mocha --save-dev</code></pre>\n<p>만약 현재 경로에 <code>package.json</code> 이 존재하면 아래와 같이 <code>devDependencies</code> 항목에 자동으로 포함된다.</p>\n<pre><code>{<br>\n<br>\n &nbsp;\"name\": \"fourdollar.js\",<br>\n<br>\n &nbsp;\"version\": \"0.1.3\",<br>\n<br>\n &nbsp;\"dependencies\": {},<br>\n<br>\n &nbsp;\"devDependencies\": {<br>\n<br>\n &nbsp;&nbsp;&nbsp;\"mocha\": \"^2.3.4\"<br>\n<br>\n &nbsp;}<br>\n<br>\n}</code></pre>\n<p><br></p>\n<pre><code>-v: --version<br>\n<br>\n-h, -?, --help, -H: --usage<br>\n<br>\n-s, --silent: --loglevel silent<br>\n<br>\n-q, --quiet: --loglevel warn<br>\n<br>\n-d: --loglevel info<br>\n<br>\n-dd, --verbose: --loglevel verbose<br>\n<br>\n-ddd: --loglevel silly<br>\n<br>\n-g: --global<br>\n<br>\n-C: --prefix<br>\n<br>\n-l: --long<br>\n<br>\n-m: --message<br>\n<br>\n-p, --porcelain: --parseable<br>\n<br>\n-reg: --registry<br>\n<br>\n-f: --force<br>\n<br>\n-desc: --description<br>\n<br>\n-S: --save<br>\n<br>\n-P: --save-prod<br>\n<br>\n-D: --save-dev<br>\n<br>\n-O: --save-optional<br>\n<br>\n-B: --save-bundle<br>\n<br>\n-E: --save-exact<br>\n<br>\n-y: --yes<br>\n<br>\n-n: --yes false<br>\n<br>\nll and la commands: ls --long</code></pre>\n<p><code>npm install express@4 --save-dev</code></p>\n<p><code>npm install ejs@2 --save</code></p>\n<p><code>npm install -g bower</code></p>\n<p><code>bower install skeleton</code></p>\n<p><br></p>\n</html>",
      "json_metadata": "{\"tags\":[\"nodejs\",\"npm\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
2018/05/17 05:58:48
authoragainme
permlinknode-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js
sbd payout0.096 SBD
steem payout0.000 STEEM
vesting payout65.113963 VESTS
Transaction InfoBlock #22501473/Virtual Operation #3
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 22501473,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 3,
  "timestamp": "2018-05-17T05:58:48",
  "op": [
    "author_reward",
    {
      "author": "againme",
      "permlink": "node-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js",
      "sbd_payout": "0.096 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "65.113963 VESTS"
    }
  ]
}
againmepublished a new post: node-js-npm-install-option
2018/05/16 07:35:48
parent author
parent permlinknodejs
authoragainme
permlinknode-js-npm-install-option
titlenode.js : npm install option
body<html> <p>&nbsp;&nbsp;</p> <h4>--save 옵션</h4> <pre><code>$ npm install github --save</code></pre> <p>만약 현재 경로에 <code>package.json</code> 이 존재하면 아래와 같이 <code>dependencies</code> 항목에 자동으로 포함된다.</p> <pre><code>{<br> &nbsp;"name": "node-github-test",<br> &nbsp;"version": "0.0.0",<br> &nbsp;"description": "node-github test",<br> &nbsp;"dependencies": {<br> &nbsp;&nbsp;&nbsp;"github": "^0.2.4"<br> &nbsp;}<br> }</code></pre> <h4>--save-dev 옵션</h4> <pre><code>$ npm install mocha --save-dev</code></pre> <p>만약 현재 경로에 <code>package.json</code> 이 존재하면 아래와 같이 <code>devDependencies</code> 항목에 자동으로 포함된다.</p> <pre><code>{<br> &nbsp;"name": "fourdollar.js",<br> &nbsp;"version": "0.1.3",<br> &nbsp;"dependencies": {},<br> &nbsp;"devDependencies": {<br> &nbsp;&nbsp;&nbsp;"mocha": "^2.3.4"<br> &nbsp;}<br> }</code></pre> <p><br></p> <pre><code>-v: --version<br> -h, -?, --help, -H: --usage<br> -s, --silent: --loglevel silent<br> -q, --quiet: --loglevel warn<br> -d: --loglevel info<br> -dd, --verbose: --loglevel verbose<br> -ddd: --loglevel silly<br> -g: --global<br> -C: --prefix<br> -l: --long<br> -m: --message<br> -p, --porcelain: --parseable<br> -reg: --registry<br> -f: --force<br> -desc: --description<br> -S: --save<br> -P: --save-prod<br> -D: --save-dev<br> -O: --save-optional<br> -B: --save-bundle<br> -E: --save-exact<br> -y: --yes<br> -n: --yes false<br> ll and la commands: ls --long</code></pre> <p><br></p> </html>
json metadata{"tags":["nodejs","npm"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22474621/Trx 193c025c2a04cb09a8322188d667554373b8b309
View Raw JSON Data
{
  "trx_id": "193c025c2a04cb09a8322188d667554373b8b309",
  "block": 22474621,
  "trx_in_block": 12,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-16T07:35:48",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "nodejs",
      "author": "againme",
      "permlink": "node-js-npm-install-option",
      "title": "node.js : npm install option",
      "body": "<html>\n<p>&nbsp;&nbsp;</p>\n<h4>--save 옵션</h4>\n<pre><code>$ npm install github --save</code></pre>\n<p>만약 현재 경로에 <code>package.json</code> 이 존재하면 아래와 같이 <code>dependencies</code> 항목에 자동으로 포함된다.</p>\n<pre><code>{<br>\n &nbsp;\"name\": \"node-github-test\",<br>\n &nbsp;\"version\": \"0.0.0\",<br>\n &nbsp;\"description\": \"node-github test\",<br>\n &nbsp;\"dependencies\": {<br>\n &nbsp;&nbsp;&nbsp;\"github\": \"^0.2.4\"<br>\n &nbsp;}<br>\n}</code></pre>\n<h4>--save-dev 옵션</h4>\n<pre><code>$ npm install mocha --save-dev</code></pre>\n<p>만약 현재 경로에 <code>package.json</code> 이 존재하면 아래와 같이 <code>devDependencies</code> 항목에 자동으로 포함된다.</p>\n<pre><code>{<br>\n &nbsp;\"name\": \"fourdollar.js\",<br>\n &nbsp;\"version\": \"0.1.3\",<br>\n &nbsp;\"dependencies\": {},<br>\n &nbsp;\"devDependencies\": {<br>\n &nbsp;&nbsp;&nbsp;\"mocha\": \"^2.3.4\"<br>\n &nbsp;}<br>\n}</code></pre>\n<p><br></p>\n<pre><code>-v: --version<br>\n-h, -?, --help, -H: --usage<br>\n-s, --silent: --loglevel silent<br>\n-q, --quiet: --loglevel warn<br>\n-d: --loglevel info<br>\n-dd, --verbose: --loglevel verbose<br>\n-ddd: --loglevel silly<br>\n-g: --global<br>\n-C: --prefix<br>\n-l: --long<br>\n-m: --message<br>\n-p, --porcelain: --parseable<br>\n-reg: --registry<br>\n-f: --force<br>\n-desc: --description<br>\n-S: --save<br>\n-P: --save-prod<br>\n-D: --save-dev<br>\n-O: --save-optional<br>\n-B: --save-bundle<br>\n-E: --save-exact<br>\n-y: --yes<br>\n-n: --yes false<br>\nll and la commands: ls --long</code></pre>\n<p><br></p>\n</html>",
      "json_metadata": "{\"tags\":[\"nodejs\",\"npm\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
2018/05/12 14:16:12
voterdtrailers
authoragainme
permlinkjavascript-a-guide-to-javascript-regular-expressions
weight10000 (100.00%)
Transaction InfoBlock #22367438/Trx 2f161980674a2591ce941474daece73b07ef2699
View Raw JSON Data
{
  "trx_id": "2f161980674a2591ce941474daece73b07ef2699",
  "block": 22367438,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-12T14:16:12",
  "op": [
    "vote",
    {
      "voter": "dtrailers",
      "author": "againme",
      "permlink": "javascript-a-guide-to-javascript-regular-expressions",
      "weight": 10000
    }
  ]
}
2018/05/11 04:36:18
voterubg
authoragainme
permlinkjavascript-a-guide-to-javascript-regular-expressions
weight100 (1.00%)
Transaction InfoBlock #22327041/Trx f6a91a77c9a076df3fb3c4f8851c568523476076
View Raw JSON Data
{
  "trx_id": "f6a91a77c9a076df3fb3c4f8851c568523476076",
  "block": 22327041,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-11T04:36:18",
  "op": [
    "vote",
    {
      "voter": "ubg",
      "author": "againme",
      "permlink": "javascript-a-guide-to-javascript-regular-expressions",
      "weight": 100
    }
  ]
}
2018/05/11 00:30:06
parent author
parent permlinkjavascript
authoragainme
permlinkjavascript-a-guide-to-javascript-regular-expressions
titlejavascript : A GUIDE TO JAVASCRIPT REGULAR EXPRESSIONS
body<html> <p>https://flaviocopes.com/javascript-regular-expressions/</p> <p>&nbsp;</p> <h2>Introduction to Regular Expressions</h2> <p>A regular expression (also called <strong>regex</strong>) is a way to work with strings, in a very performant way.By formulating a regular expression with a special syntax, you can</p> <ul> <li><strong>search text</strong> a string</li> <li><strong>replace substrings</strong> in a string</li> <li><strong>extract information</strong> from a string</li> </ul> <p>Almost every programming language implements regular expressions. There are small differences between each implementation, but the general concepts apply almost everywhere.Regular Expressions date back to the 1950s, when it was formalized as a conceptual search pattern for string processing algorithms.Implemented in UNIX tools like grep, sed, and in popular text editors, regexes grew in popularity and were introduced in the Perl programming language, and later in many others.JavaScript, among with Perl, is one of the programming languages that have regular expressions support directly built in the language.</p> <h2>Hard but useful</h2> <p>Regular expressions can appear like absolute nonsense to the beginner, and many times also to the professional developer, if one does not invest the time necessary to understand them.Cryptic regular expressions are <strong>hard to write</strong>, <strong>hard to read</strong>, and <strong>hard to maintain/modify</strong>.But sometimes a regular expression is <strong>the only sane way</strong> to perform some string manipulation, so it’s a very valuable tool in your pocket.This tutorial aims to introduce you to JavaScript Regular Expressions in a simple way, and give you all the information to read and create regular expressions.The rule of thumb is that <strong>simple regular expressions are simple</strong> to read and write, while <strong>complex regular expressions can quickly turn into a mess</strong> if you don’t deeply grasp the basics.</p> <h2>How does a Regular Expression look like</h2> <p>In JavaScript, a regular expression is an <strong>object</strong>, which can be defined in two ways.The first is by instantiating a <strong>new RegExp object</strong> using the constructor:</p> <pre><code>const re1 = new RegExp('hey')<br> </code></pre> <p>The second is using the <strong>regular expression literal</strong> form:</p> <pre><code>const re1 = /hey/<br> </code></pre> <p>You know that JavaScript has <em>object literals</em> and <em>array literals</em>? It also has <em>regex literals</em>.In the example above, <code>hey</code> is called the <strong>pattern</strong>. In the literal form it’s delimited by forward slashes, while with the object constructor, it’s not.This is the first important difference between the two forms, but we’ll see others later.</p> <h2>How does it work?</h2> <p>The regular expression we defined as <code>re1</code> above is a very simple one. It searches the string <code>hey</code>, without any limitation: the string can contain lots of text, and <code>hey</code> in the middle, and the regex is satisfied. It could also contains just <code>hey</code>, and it will be satisfied as well.That’s pretty simple.You can test the regex using <code>RegExp.test(String)</code>, which returns a boolean:</p> <pre><code>re1.test('hey') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//✅<br> re1.test('blablabla hey blablabla') //✅<br> <br> <br> re1.test('he') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//❌<br> re1.test('blablabla') //❌<br> </code></pre> <p>In the above example we just checked if <code>"hey"</code> satisfies the regular expression pattern stored in <code>re1</code>.This is the simplest it can be, but you already know lots of concepts about regexes.</p> <h2>Anchoring</h2> <pre><code>/hey/<br> </code></pre> <p>matches <code>hey</code> wherever it was put inside the string.If you want to match strings that <strong>start</strong> with <code>hey</code>, use the <code>^</code> operator:</p> <pre><code>/^hey/.test('hey') &nbsp;&nbsp;&nbsp;&nbsp;//✅<br> /^hey/.test('bla hey') //❌<br> </code></pre> <p>If you want to match strings that <strong>end</strong> with <code>hey</code>, use the <code>$</code> operator:</p> <pre><code>/hey$/.test('hey') &nbsp;&nbsp;&nbsp;&nbsp;//✅<br> /hey$/.test('bla hey') //✅<br> /hey$/.test('hey you') //❌<br> </code></pre> <p>Combine those, and match strings that exactly match <code>hey</code>, and just that string:</p> <pre><code>/^hey$/.test('hey') //✅<br> </code></pre> <p>To match a string that starts with a substring and ends with another, you can use <code><strong>.*</strong></code>, which matches any character repeated 0 or more times:</p> <pre><code>/^hey.*joe$/.test('hey joe') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//✅<br> /^hey.*joe$/.test('heyjoe') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//✅<br> /^hey.*joe$/.test('hey how are you joe') //✅<br> /^hey.*joe$/.test('hey joe!') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//❌<br> </code></pre> <h2>Match items in ranges</h2> <p>Instead of matching a particular string, you can choose to match any character in a range, like:</p> <pre><code>/[a-z]/ //a, b, c, ... , x, y, z<br> /[A-Z]/ //A, B, C, ... , X, Y, Z<br> /[a-c]/ //a, b, c<br> /[0-9]/ //0, 1, 2, 3, ... , 8, 9<br> </code></pre> <p>These regexes match strings that contain at least one of the characters in those ranges:</p> <pre><code>/[a-z]/.test('a') &nbsp;//✅<br> /[a-z]/.test('1') &nbsp;//❌<br> /[a-z]/.test('A') &nbsp;//❌<br> <br> /[a-c]/.test('d') &nbsp;//❌<br> /[a-c]/.test('dc') //✅<br> </code></pre> <p>Ranges can be combined:</p> <pre><code>/[A-Za-z0-9]/<br> </code></pre> <pre><code>/[A-Za-z0-9]/.test('a') //✅<br> /[A-Za-z0-9]/.test('1') //✅<br> /[A-Za-z0-9]/.test('A') //✅<br> </code></pre> <h2>Matching a range item multiple times</h2> <p>You can check if a string contains one an only one character in a range, by using the <code>-</code> char:</p> <pre><code>/^[A-Za-z0-9]$/<br> <br> /^[A-Za-z0-9]$/.test('A') &nbsp;//✅<br> /^[A-Za-z0-9]$/.test('Ab') //❌<br> </code></pre> <h2>Negating a pattern</h2> <p>The <code>^</code> character at the beginning of a pattern anchors it to the beginning of a string.Used inside a range, it <strong>negates</strong> it, so:</p> <pre><code>/[^A-Za-z0-9]/.test('a') //❌<br> /[^A-Za-z0-9]/.test('1') //❌<br> /[^A-Za-z0-9]/.test('A') //❌<br> /[^A-Za-z0-9]/.test('@') //✅<br> </code></pre> <h3>Meta characters</h3> <ul> <li><code><strong>\d</strong></code> matches any digit, equivalent to <code>[0-9]</code></li> <li><code><strong>\D</strong></code> matches any character that’s not a digit, equivalent to <code>[^0-9]</code></li> <li><code><strong>\w</strong></code> matches any alphanumeric character, equivalent to <code>[A-Za-z0-9]</code></li> <li><code><strong>\W</strong></code> matches any non-alphanumeric character, equivalent to <code>[^A-Za-z0-9]</code></li> <li><code><strong>\s</strong></code> matches any whitespace character: spaces, tabs, newlines and Unicode spaces</li> <li><code><strong>\S</strong></code> matches any character that’s not a whitespace</li> <li><code><strong>\0</strong></code> matches null</li> <li><code><strong>\n</strong></code> matches a newline character</li> <li><code><strong>\t</strong></code> matches a tab character</li> <li><code><strong>\uXXXX</strong></code> matches a <a href="https://flaviocopes.com/unicode/">unicode</a> character with code XXXX (requires the <code>u</code> flag)</li> <li><code><strong>.</strong></code> matches any character that is not a newline char (e.g. <code>\n</code>) (unless you use the <code>s</code>flag, explained later on)</li> <li><code><strong>[^]</strong></code> matches any character, including newline characters. It’s useful on multiline strings</li> </ul> <h2>Regular expressions choices</h2> <p>If you want to search one string <strong>or</strong> another, use the <code>|</code> operator.</p> <pre><code>/hey|ho/.test('hey') //✅<br> /hey|ho/.test('ho') &nbsp;//✅<br> </code></pre> <h2>Quantifiers</h2> <p>Say you have this regex, that checks if a string has one digit in it, and nothing else:</p> <pre><code>/^\d$/<br> </code></pre> <p>You can use <strong>the</strong> <code><strong>?</strong></code> <strong>quantifier</strong> to make it optional, thus requiring zero or one:</p> <pre><code>/^\d?$/<br> </code></pre> <p>but what if you want to match multiple digits?You can do it in 4 ways, using <code>+</code>, <code>*</code>, <code>{n}</code> and <code>{n,m}</code>.</p> <h3><code>+</code></h3> <p>Match one or more (&gt;=1) items</p> <pre><code>/^\d+$/<br> <br> /^\d+$/.test('12') &nbsp;&nbsp;&nbsp;&nbsp;//✅<br> /^\d+$/.test('14') &nbsp;&nbsp;&nbsp;&nbsp;//✅<br> /^\d+$/.test('144343') //✅<br> /^\d+$/.test('') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//❌<br> /^\d+$/.test('1a') &nbsp;&nbsp;&nbsp;&nbsp;//❌<br> </code></pre> <h3><code>*</code></h3> <p>Match 0 or more (&gt;= 0) items</p> <pre><code>/^\d+$/<br> <br> /^\d*$/.test('12') &nbsp;&nbsp;&nbsp;&nbsp;//✅<br> /^\d*$/.test('14') &nbsp;&nbsp;&nbsp;&nbsp;//✅<br> /^\d*$/.test('144343') //✅<br> /^\d*$/.test('') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//✅<br> /^\d*$/.test('1a') &nbsp;&nbsp;&nbsp;&nbsp;//❌<br> </code></pre> <h3><code>{n}</code></h3> <p>Match exactly <code>n</code> items</p> <pre><code>/^\d{3}$/<br> <br> /^\d{3}$/.test('123') &nbsp;//✅<br> /^\d{3}$/.test('12') &nbsp;&nbsp;//❌<br> /^\d{3}$/.test('1234') //❌<br> <br> /^[A-Za-z0-9]{3}$/.test('Abc') //✅<br> </code></pre> <h3><code>{n,m}</code></h3> <p>Match between <code>n</code> and <code>m</code> times:</p> <pre><code>/^\d{3,5}$/<br> <br> /^\d{3,5}$/.test('123') &nbsp;&nbsp;&nbsp;//✅<br> /^\d{3,5}$/.test('1234') &nbsp;&nbsp;//✅<br> /^\d{3,5}$/.test('12345') &nbsp;//✅<br> /^\d{3,5}$/.test('123456') //❌<br> </code></pre> <p><code>m</code> can be omitted to have an open ending to have at least <code>n</code> items:</p> <pre><code>/^\d{3,}$/<br> <br> /^\d{3,}$/.test('12') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//❌<br> /^\d{3,}$/.test('123') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//✅<br> /^\d{3,}$/.test('12345') &nbsp;&nbsp;&nbsp;&nbsp;//✅<br> /^\d{3,}$/.test('123456789') //✅<br> </code></pre> <h2>Optional items</h2> <p>Following an item with <code>?</code> makes it optional:</p> <pre><code>/^\d{3}\w?$/<br> <br> /^\d{3}\w?$/.test('123') &nbsp;&nbsp;//✅<br> /^\d{3}\w?$/.test('123a') &nbsp;//✅<br> /^\d{3}\w?$/.test('123ab') //❌<br> </code></pre> <h2>Groups</h2> <p>Using parentheses, you can create groups of characters: <code>(...)</code>This example matches exactly 3 digits followed by one or more alphanumeric characters:</p> <pre><code>/^(\d{3})(\w+)$/<br> <br> /^(\d{3})(\w+)$/.test('123') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//❌<br> /^(\d{3})(\w+)$/.test('123s') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//✅<br> /^(\d{3})(\w+)$/.test('123something') //✅<br> /^(\d{3})(\w+)$/.test('1234') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//✅<br> </code></pre> <p>Repetition characters put after a group closing parentheses refer to the whole group:</p> <pre><code>/^(\d{2})+$/<br> <br> /^(\d{2})+$/.test('12') &nbsp;&nbsp;//✅<br> /^(\d{2})+$/.test('123') &nbsp;//❌<br> /^(\d{2})+$/.test('1234') //✅<br> </code></pre> <h2>Capturing Groups</h2> <p>So far, we’ve seen how to test strings and check if they contain a certain pattern.A very cool feature of regular expressions is the ability to <strong>capture parts of a string</strong>, and put them into an array.You can do so using Groups, and in particular <strong>Capturing Groups</strong>.By default, a Group is a Capturing Group. Now, instead of using <code>RegExp.test(String)</code>, which just returns a boolean if the pattern is satisfied, we use one of</p> <ul> <li><code>String.match(RegExp)</code></li> <li><code>RegExp.exec(String)</code></li> </ul> <p>They are exactly the same, and return an Array with the whole matched string in the first item, then each matched group content.If there is no match, it returns <code>null</code>:</p> <pre><code>'123s'.match(/^(\d{3})(\w+)$/)<br> //Array [ "123s", "123", "123s" ]<br> <br> /^(\d{3})(\w+)$/.exec('123s')<br> //Array [ "123s", "123", "s" ]<br> <br> 'hey'.match(/(hey|ho)/)<br> //Array [ "hey", "hey" ]<br> <br> /(hey|ho)/.exec('hey')<br> //Array [ "hey", "hey" ]<br> <br> /(hey|ho)/.exec('ha!')<br> //null<br> </code></pre> <p>When a group is matched multiple times, only the last match is put in the result array:</p> <pre><code>'123456789'.match(/(\d)+/)<br> //Array [ "123456789", "9" ]<br> </code></pre> <h3>Optional groups</h3> <p>A capturing group can be made optional by using <code>(...)?</code>. If it’s not found, the resulting array slot will contain <code>undefined</code>:</p> <pre><code>/^(\d{3})(\s)?(\w+)$/.exec('123 s') //Array [ "123 s", "123", " ", "s" ]<br> /^(\d{3})(\s)?(\w+)$/.exec('123s') //Array [ "123s", "123", undefined, "s" ]<br> </code></pre> <h3>Reference matched groups</h3> <p>Every group that’s matched is assigned a number. <code>$1</code> refers to the first, <code>$2</code> to the second, and so on. This will be useful when we’ll later talk about replacing parts of a string.</p> <h3>Named Capturing Groups</h3> <p>This is a new, <a href="https://flaviocopes.com/ecmascript/">ES2018</a> feature.A group can be assigned to a name, rather than just being assigned a slot in the result array:</p> <pre><code>const re = /(?&lt;year&gt;\d{4})-(?&lt;month&gt;\d{2})-(?&lt;day&gt;\d{2})/<br> const result = re.exec('2015-01-02')<br> <br> // result.groups.year === '2015';<br> // result.groups.month === '01';<br> // result.groups.day === '02';<br> </code></pre> <h2>Using match and exec without groups</h2> <p>There is a difference with using <code>match</code> and <code>exec</code> without groups: the first item in the array is not the whole matched string, but the match directly:</p> <pre><code>/hey|ho/.exec('hey') &nbsp;&nbsp;// [ "hey" ]<br> <br> /(hey).(ho)/.exec('hey ho') // [ "hey ho", "hey", "ho" ]<br> </code></pre> <h2>Noncapturing Groups</h2> <p>Since by default groups are Capturing Groups, you need a way to ignore some groups in the resulting array. This is possible using <strong>Noncapturing Groups</strong>, which start with an <code>(?:...)</code></p> <pre><code>'123s'.match(/^(\d{3})(?:\s)(\w+)$/)<br> //null<br> '123 s'.match(/^(\d{3})(?:\s)(\w+)$/)<br> //Array [ "123 s", "123", "s" ]<br> </code></pre> <h2>Flags</h2> <p>You can use the following flags on any regular expression:</p> <ul> <li><code>g</code>: matches the pattern multiple times</li> <li><code>i</code>: makes the regex case insensitive</li> <li><code>m</code>: enables multiline mode. In this mode, <code>^</code> and <code>$</code> match the start and end of the whole string. Without this, with multiline strings they match the beginning and end of each line.</li> <li><code>u</code>: enables support for unicode (introduced in ES6/ES2015)</li> <li><code>s</code>: (new in <a href="https://flaviocopes.com/ecmascript/">ES2018</a>) short for <em>single line</em>, it causes the <code>.</code> to match new line characters as well</li> </ul> <p>Flags can be combined, and they are added at the end of the string in regex literals:</p> <pre><code>/hey/ig.test('HEy') //✅<br> </code></pre> <p>or as the second parameter with RegExp object constructors:</p> <pre><code>new RegExp('hey', 'ig').test('HEy') //✅<br> </code></pre> <h2>Inspecting a regex</h2> <p>Given a regex, you can inspect its properties:</p> <ul> <li><code>source</code> the pattern string</li> <li><code>multiline</code> true with the <code>m</code> flag</li> <li><code>global</code> true with the <code>g</code> flag</li> <li><code>ignoreCase</code> true with the <code>i</code> flag</li> <li><code>lastIndex</code></li> </ul> <pre><code>/^(\w{3})$/i.source &nbsp;&nbsp;&nbsp;&nbsp;//"^(\\d{3})(\\w+)$"<br> /^(\w{3})$/i.multiline &nbsp;//false<br> /^(\w{3})$/i.lastIndex &nbsp;//0<br> /^(\w{3})$/i.ignoreCase //true<br> /^(\w{3})$/i.global &nbsp;&nbsp;&nbsp;&nbsp;//false<br> </code></pre> <h2>Escaping</h2> <p>These characters are special:</p> <ul> <li><code>\</code></li> <li><code>/</code></li> <li><code>[ ]</code></li> <li><code>( )</code></li> <li><code>{ }</code></li> <li><code>?</code></li> <li><code>+</code></li> <li><code>*</code></li> <li><code>|</code></li> <li><code>.</code></li> <li><code>^</code></li> <li><code>$</code></li> </ul> <p>They are special because they are control characters that have a meaning in the regular expression pattern, so if you want to use them inside the pattern as matching characters, you need to escape them, by prepending a backslash:</p> <pre><code>/^\\$/<br> /^\^$/ // /^\^$/.test('^') ✅<br> /^\$$/ // /^\$$/.test('$') ✅<br> </code></pre> <h2>String boundaries</h2> <p><code>\b</code> and <code>\B</code> let you inspect whether a string is at the beginning or at the end of a word:</p> <ul> <li><code><strong>\b</strong></code> matches a set of characters at the beginning or end of a word</li> <li><code><strong>\B</strong></code> matches a set of characters not at the beginning or end of a word</li> </ul> <p>Example:</p> <pre><code>'I saw a bear'.match(/\bbear/) &nbsp;&nbsp;&nbsp;//Array ["bear"]<br> 'I saw a beard'.match(/\bbear/) &nbsp;&nbsp;//Array ["bear"]<br> 'I saw a beard'.match(/\bbear\b/) //null<br> 'cool_bear'.match(/\bbear\b/) &nbsp;&nbsp;&nbsp;&nbsp;//null<br> </code></pre> <h2>Replacing using Regular Expressions</h2> <p>We already saw how to check if a string contains a pattern.We also saw how to extract parts of a string to an array, matching a pattern.Let’s see how to <strong>replace parts of a string</strong> based on a pattern.The <code>String</code> object in JavaScript has a replace() method, which can be used without regular expressions to perform a <em>single replacement</em> on a string:</p> <pre><code>"Hello world!".replace('world', 'dog') //Hello dog!<br> "My dog is a good dog!".replace('dog', 'cat') //My cat is a good dog!<br> </code></pre> <p>This method also accepts a regular expression as argument:</p> <pre><code>"Hello world!".replace(/world/, 'dog') //Hello dog!<br> </code></pre> <p>Using the <code>g</code> flag is <strong>the only way</strong> to replace multiple occurrences in a string in vanilla JavaScript:</p> <pre><code>"My dog is a good dog!".replace(/dog/g, 'cat') //My cat is a good cat!<br> </code></pre> <p>Groups let us do more fancy things, like moving around parts of a string:</p> <pre><code>"Hello, world!".replace(/(\w+), (\w+)!/, '$2: $1!!!')<br> // "world: Hello!!!"<br> </code></pre> <p>Instead of using a string you can use a function, to do even fancier things. It will receive a number of arguments like the one returned by <code>String.match(RegExp)</code> or <code>RegExp.exec(String)</code>, with a number of arguments that depends on the number of groups:</p> <pre><code>"Hello, world!".replace(/(\w+), (\w+)!/, (matchedString, first, second) =&gt; {<br> &nbsp;console.log(first);<br> &nbsp;console.log(second);<br> <br> &nbsp;return `${second.toUpperCase()}: ${first}!!!`<br> })<br> //"WORLD: Hello!!!"<br> </code></pre> <h2>Greediness</h2> <p>Regular expressions are said to be <strong>greedy</strong> by default.What does it mean?Take this regex</p> <pre><code>/\$(.+)\s?/<br> </code></pre> <p>It is supposed to extract a dollar amount from a string</p> <pre><code>/\$(.+)\s?/.exec('This costs $100')[1]<br> //100<br> </code></pre> <p>but if we have more words after the number, it freaks off</p> <pre><code>/\$(.+)\s?/.exec('This costs $100 and it is less than $200')[1]<br> //100 and it is less than $200<br> </code></pre> <p>Why? Because the regex after the $ sign matches any character with <code>.+</code>, and it won’t stop until it reaches the end of the string. Then, it finishes off because <code>\s?</code> makes the ending space optional.To fix this, we need to tell the regex to be lazy, and perform the least amount of matching possible. We can do so using the <code>?</code> symbol after the quantifier:</p> <pre><code>/\$(.+?)\s/.exec('This costs $100 and it is less than $200')[1]<br> //100<br> </code></pre> <blockquote><em>I removed the</em> <code><em>?</em></code> <em>after</em> <code><em>\s</em></code> <em>otherwise it matched only the first number, since the space was optional</em></blockquote> <p>So, <code>?</code> means different things based on its position, because it can be both a quantifier and a lazy mode indicator.</p> <h2>Lookaheads: match a string depending on what follows it</h2> <p>Use <code>?=</code> to match a string that’s followed by a specific substring:</p> <pre><code>/Roger(?=Waters)/<br> <br> /Roger(?= Waters)/.test('Roger is my dog') //false<br> /Roger(?= Waters)/.test('Roger is my dog and Roger Waters is a famous musician') //true<br> </code></pre> <p><code>?!</code> performs the inverse operation, matching if a string is <strong>not</strong> followed by a specific substring:</p> <pre><code>/Roger(?!Waters)/<br> <br> /Roger(?! Waters)/.test('Roger is my dog') //true<br> /Roger(?! Waters)/.test('Roger is my dog and Roger Waters is a famous musician') //false<br> </code></pre> <h2>Lookbehinds: match a string depending on what precedes it</h2> <p>This is an <a href="https://flaviocopes.com/ecmascript/">ES2018</a> feature.Lookaheads use the <code>?=</code> symbol. Lookbehinds use <code>?&lt;=</code>.</p> <pre><code>/(?&lt;=Roger) Waters/<br> <br> /(?&lt;=Roger) Waters/.test('Pink Waters is my dog') //false<br> /(?&lt;=Roger) Waters/.test('Roger is my dog and Roger Waters is a famous musician') //true<br> </code></pre> <p>A lookbehind is negated using <code>?&lt;!</code>:</p> <pre><code>/(?&lt;!Roger) Waters/<br> <br> /(?&lt;!Roger) Waters/.test('Pink Waters is my dog') //true<br> /(?&lt;!Roger) Waters/.test('Roger is my dog and Roger Waters is a famous musician') //false<br> </code></pre> <h2>Regular Expressions and Unicode</h2> <p>The <code>u</code> flag is mandatory when working with Unicode strings, in particular when you might need to handle characters in astral planes, the ones that are not included in the first 1600 Unicode characters.Like Emojis, for example, but not just those.If you don’t add that flag, this simple regex that should match one character will not work, because for JavaScript that emoji is represented internally by 2 characters (see <a href="https://flaviocopes.com/javascript-unicode/">Unicode in JavaScript</a>):</p> <pre><code>/^.$/.test('a') //✅<br> /^.$/.test('🐶') //❌<br> /^.$/u.test('🐶') //✅<br> </code></pre> <p>So, always use the <code>u</code> flag.Unicode, just like normal characters, handle ranges:</p> <pre><code>/[a-z]/.test('a') &nbsp;//✅<br> /[1-9]/.test('1') &nbsp;//✅<br> <br> /[🐶-🦊]/u.test('🐺') &nbsp;//✅<br> /[🐶-🦊]/u.test('🐛') &nbsp;//❌<br> </code></pre> <p>JavaScript checks the internal code representation, so 🐶 &lt; 🐺 &lt; 🦊 because <code>\u1F436</code> &lt; <code>\u1F43A</code> &lt; <code>\u1F98A</code>. Check the <a href="https://unicode.org/emoji/charts/full-emoji-list.html">full Emoji list</a> to get those codes, and to find out the order (tip: the macOS Emoji picker has some emojis in a mixed order, don’t count on it)</p> <h2>Unicode property escapes</h2> <p>As we saw above, in a regular expression pattern you can use <code>\d</code> to match any digit, <code>\s</code>to match any character that’s not a white space, <code>\w</code> to match any alphanumeric character, and so on.Unicode property escapes is an <a href="https://flaviocopes.com/ecmascript/">ES2018</a> feature that introduces a very cool feature, extending this concept to all Unicode characters introducing <code>\p{}</code> and is negation <code>\P{}</code>.Any <a href="https://flaviocopes.com/unicode/">unicode</a> character has a set of properties. For example <code>Script</code> determines the language family, <code>ASCII</code> is a boolean that’s true for ASCII characters, and so on. You can put this property in the graph parentheses, and the regex will check for that to be true:</p> <pre><code>/^\p{ASCII}+$/u.test('abc') &nbsp;&nbsp;//✅<br> /^\p{ASCII}+$/u.test('ABC@') &nbsp;//✅<br> /^\p{ASCII}+$/u.test('ABC🙃') //❌<br> </code></pre> <p><code>ASCII_Hex_Digit</code> is another boolean property, that checks if the string only contains valid hexadecimal digits:</p> <pre><code>/^\p{ASCII_Hex_Digit}+$/u.test('0123456789ABCDEF') //✅<br> /^\p{ASCII_Hex_Digit}+$/u.test('h') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//❌<br> </code></pre> <p>There are many other boolean properties, which you just check by adding their name in the graph parentheses, including <code>Uppercase</code>, <code>Lowercase</code>, <code>White_Space</code>, <code>Alphabetic</code>, <code>Emoji</code>and more:</p> <pre><code>/^\p{Lowercase}$/u.test('h') //✅<br> /^\p{Uppercase}$/u.test('H') //✅<br> <br> /^\p{Emoji}+$/u.test('H') &nbsp;&nbsp;//❌<br> /^\p{Emoji}+$/u.test('🙃🙃') //✅<br> </code></pre> <p>In addition to those binary properties, you can check any of the unicode character properties to match a specific value. In this example, I check if the string is written in the greek or latin alphabet:</p> <pre><code>/^\p{Script=Greek}+$/u.test('ελληνικά') //✅<br> /^\p{Script=Latin}+$/u.test('hey') //✅<br> </code></pre> <p>Read more about all the properties you can use <a href="https://github.com/tc39/proposal-regexp-unicode-property-escapes">directly on the proposal</a>.</p> <h2>Examples</h2> <h3>Extract a number from a string</h3> <p>Supposing a string has only one number you need to extract, <code>/\d+/</code> should do it:</p> <pre><code>'Test 123123329'.match(/\d+/)<br> // Array [ "123123329" ]<br> </code></pre> <h3>Match an email address</h3> <p>A simplistic approach is to check non-space characters before and after the <code>@</code> sign, using <code>\S</code>:</p> <pre><code>/(\S+)@(\S+)\.(\S+)/<br> <br> /(\S+)@(\S+)\.(\S+)/.exec('[email protected]')<br> //["[email protected]", "copesc", "gmail", "com"]<br> </code></pre> <p>This is a simplistic example however, as many invalid emails are still satisfied by this regex.</p> <h3>Capture text between double quotes</h3> <p>Suppose you have a string that contains something in double quotes, and you want to extract that content.The best way to do so is by using a <strong>capturing group</strong>, because we know the match starts and ends with <code>"</code>, and we can easily target it, but we also want to remove those quotes from our result.We’ll find what we need in <code>result[1]</code>:</p> <pre><code>const hello = 'Hello "nice flower"'<br> const result = /"([^']*)"/.exec(hello)<br> //Array [ "\"nice flower\"", "nice flower" ]<br> </code></pre> <h3>Get the content inside an HTML tag</h3> <p>For example get the content inside a span tag, allowing any number of arguments inside the tag:</p> <pre><code>/&lt;span\b[^&gt;]*&gt;(.*?)&lt;\/span&gt;/<br> <br> /&lt;span\b[^&gt;]*&gt;(.*?)&lt;\/span&gt;/.exec('test')<br> // null<br> /&lt;span\b[^&gt;]*&gt;(.*?)&lt;\/span&gt;/.exec('&lt;span&gt;test&lt;/span&gt;')<br> // ["&lt;span&gt;test&lt;/span&gt;", "test"]<br> /&lt;span\b[^&gt;]*&gt;(.*?)&lt;\/span&gt;/.exec('&lt;span class="x"&gt;test&lt;/span&gt;')<br> // ["&lt;span class="x"&gt;test&lt;/span&gt;", "test"]</code></pre> </html>
json metadata{"tags":["javascript","reqex"],"links":["https://flaviocopes.com/javascript-regular-expressions/","https://flaviocopes.com/unicode/","https://flaviocopes.com/ecmascript/","https://flaviocopes.com/javascript-unicode/","https://unicode.org/emoji/charts/full-emoji-list.html","https://github.com/tc39/proposal-regexp-unicode-property-escapes"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22322117/Trx 51ef2b9c123596a27f9c7fb389340a7c69d48032
View Raw JSON Data
{
  "trx_id": "51ef2b9c123596a27f9c7fb389340a7c69d48032",
  "block": 22322117,
  "trx_in_block": 49,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-11T00:30:06",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "javascript",
      "author": "againme",
      "permlink": "javascript-a-guide-to-javascript-regular-expressions",
      "title": "javascript : A GUIDE TO JAVASCRIPT REGULAR EXPRESSIONS",
      "body": "<html>\n<p>https://flaviocopes.com/javascript-regular-expressions/</p>\n<p>&nbsp;</p>\n<h2>Introduction to Regular Expressions</h2>\n<p>A regular expression (also called <strong>regex</strong>) is a way to work with strings, in a very performant way.By formulating a regular expression with a special syntax, you can</p>\n<ul>\n  <li><strong>search text</strong> a string</li>\n  <li><strong>replace substrings</strong> in a string</li>\n  <li><strong>extract information</strong> from a string</li>\n</ul>\n<p>Almost every programming language implements regular expressions. There are small differences between each implementation, but the general concepts apply almost everywhere.Regular Expressions date back to the 1950s, when it was formalized as a conceptual search pattern for string processing algorithms.Implemented in UNIX tools like grep, sed, and in popular text editors, regexes grew in popularity and were introduced in the Perl programming language, and later in many others.JavaScript, among with Perl, is one of the programming languages that have regular expressions support directly built in the language.</p>\n<h2>Hard but useful</h2>\n<p>Regular expressions can appear like absolute nonsense to the beginner, and many times also to the professional developer, if one does not invest the time necessary to understand them.Cryptic regular expressions are <strong>hard to write</strong>, <strong>hard to read</strong>, and <strong>hard to maintain/modify</strong>.But sometimes a regular expression is <strong>the only sane way</strong> to perform some string manipulation, so it’s a very valuable tool in your pocket.This tutorial aims to introduce you to JavaScript Regular Expressions in a simple way, and give you all the information to read and create regular expressions.The rule of thumb is that <strong>simple regular expressions are simple</strong> to read and write, while <strong>complex regular expressions can quickly turn into a mess</strong> if you don’t deeply grasp the basics.</p>\n<h2>How does a Regular Expression look like</h2>\n<p>In JavaScript, a regular expression is an <strong>object</strong>, which can be defined in two ways.The first is by instantiating a <strong>new RegExp object</strong> using the constructor:</p>\n<pre><code>const re1 = new RegExp('hey')<br>\n</code></pre>\n<p>The second is using the <strong>regular expression literal</strong> form:</p>\n<pre><code>const re1 = /hey/<br>\n</code></pre>\n<p>You know that JavaScript has <em>object literals</em> and <em>array literals</em>? It also has <em>regex literals</em>.In the example above, <code>hey</code> is called the <strong>pattern</strong>. In the literal form it’s delimited by forward slashes, while with the object constructor, it’s not.This is the first important difference between the two forms, but we’ll see others later.</p>\n<h2>How does it work?</h2>\n<p>The regular expression we defined as <code>re1</code> above is a very simple one. It searches the string <code>hey</code>, without any limitation: the string can contain lots of text, and <code>hey</code> in the middle, and the regex is satisfied. It could also contains just <code>hey</code>, and it will be satisfied as well.That’s pretty simple.You can test the regex using <code>RegExp.test(String)</code>, which returns a boolean:</p>\n<pre><code>re1.test('hey') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//✅<br>\nre1.test('blablabla hey blablabla') //✅<br>\n<br>\n<br>\nre1.test('he') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//❌<br>\nre1.test('blablabla') //❌<br>\n</code></pre>\n<p>In the above example we just checked if <code>\"hey\"</code> satisfies the regular expression pattern stored in <code>re1</code>.This is the simplest it can be, but you already know lots of concepts about regexes.</p>\n<h2>Anchoring</h2>\n<pre><code>/hey/<br>\n</code></pre>\n<p>matches <code>hey</code> wherever it was put inside the string.If you want to match strings that <strong>start</strong> with <code>hey</code>, use the <code>^</code> operator:</p>\n<pre><code>/^hey/.test('hey') &nbsp;&nbsp;&nbsp;&nbsp;//✅<br>\n/^hey/.test('bla hey') //❌<br>\n</code></pre>\n<p>If you want to match strings that <strong>end</strong> with <code>hey</code>, use the <code>$</code> operator:</p>\n<pre><code>/hey$/.test('hey') &nbsp;&nbsp;&nbsp;&nbsp;//✅<br>\n/hey$/.test('bla hey') //✅<br>\n/hey$/.test('hey you') //❌<br>\n</code></pre>\n<p>Combine those, and match strings that exactly match <code>hey</code>, and just that string:</p>\n<pre><code>/^hey$/.test('hey') //✅<br>\n</code></pre>\n<p>To match a string that starts with a substring and ends with another, you can use <code><strong>.*</strong></code>, which matches any character repeated 0 or more times:</p>\n<pre><code>/^hey.*joe$/.test('hey joe') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//✅<br>\n/^hey.*joe$/.test('heyjoe') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//✅<br>\n/^hey.*joe$/.test('hey how are you joe') //✅<br>\n/^hey.*joe$/.test('hey joe!') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//❌<br>\n</code></pre>\n<h2>Match items in ranges</h2>\n<p>Instead of matching a particular string, you can choose to match any character in a range, like:</p>\n<pre><code>/[a-z]/ //a, b, c, ... , x, y, z<br>\n/[A-Z]/ //A, B, C, ... , X, Y, Z<br>\n/[a-c]/ //a, b, c<br>\n/[0-9]/ //0, 1, 2, 3, ... , 8, 9<br>\n</code></pre>\n<p>These regexes match strings that contain at least one of the characters in those ranges:</p>\n<pre><code>/[a-z]/.test('a') &nbsp;//✅<br>\n/[a-z]/.test('1') &nbsp;//❌<br>\n/[a-z]/.test('A') &nbsp;//❌<br>\n<br>\n/[a-c]/.test('d') &nbsp;//❌<br>\n/[a-c]/.test('dc') //✅<br>\n</code></pre>\n<p>Ranges can be combined:</p>\n<pre><code>/[A-Za-z0-9]/<br>\n</code></pre>\n<pre><code>/[A-Za-z0-9]/.test('a') //✅<br>\n/[A-Za-z0-9]/.test('1') //✅<br>\n/[A-Za-z0-9]/.test('A') //✅<br>\n</code></pre>\n<h2>Matching a range item multiple times</h2>\n<p>You can check if a string contains one an only one character in a range, by using the <code>-</code> char:</p>\n<pre><code>/^[A-Za-z0-9]$/<br>\n<br>\n/^[A-Za-z0-9]$/.test('A') &nbsp;//✅<br>\n/^[A-Za-z0-9]$/.test('Ab') //❌<br>\n</code></pre>\n<h2>Negating a pattern</h2>\n<p>The <code>^</code> character at the beginning of a pattern anchors it to the beginning of a string.Used inside a range, it <strong>negates</strong> it, so:</p>\n<pre><code>/[^A-Za-z0-9]/.test('a') //❌<br>\n/[^A-Za-z0-9]/.test('1') //❌<br>\n/[^A-Za-z0-9]/.test('A') //❌<br>\n/[^A-Za-z0-9]/.test('@') //✅<br>\n</code></pre>\n<h3>Meta characters</h3>\n<ul>\n  <li><code><strong>\\d</strong></code> matches any digit, equivalent to <code>[0-9]</code></li>\n  <li><code><strong>\\D</strong></code> matches any character that’s not a digit, equivalent to <code>[^0-9]</code></li>\n  <li><code><strong>\\w</strong></code> matches any alphanumeric character, equivalent to <code>[A-Za-z0-9]</code></li>\n  <li><code><strong>\\W</strong></code> matches any non-alphanumeric character, equivalent to <code>[^A-Za-z0-9]</code></li>\n  <li><code><strong>\\s</strong></code> matches any whitespace character: spaces, tabs, newlines and Unicode spaces</li>\n  <li><code><strong>\\S</strong></code> matches any character that’s not a whitespace</li>\n  <li><code><strong>\\0</strong></code> matches null</li>\n  <li><code><strong>\\n</strong></code> matches a newline character</li>\n  <li><code><strong>\\t</strong></code> matches a tab character</li>\n  <li><code><strong>\\uXXXX</strong></code> matches a <a href=\"https://flaviocopes.com/unicode/\">unicode</a> character with code XXXX (requires the <code>u</code> flag)</li>\n  <li><code><strong>.</strong></code> matches any character that is not a newline char (e.g. <code>\\n</code>) (unless you use the <code>s</code>flag, explained later on)</li>\n  <li><code><strong>[^]</strong></code> matches any character, including newline characters. It’s useful on multiline strings</li>\n</ul>\n<h2>Regular expressions choices</h2>\n<p>If you want to search one string <strong>or</strong> another, use the <code>|</code> operator.</p>\n<pre><code>/hey|ho/.test('hey') //✅<br>\n/hey|ho/.test('ho') &nbsp;//✅<br>\n</code></pre>\n<h2>Quantifiers</h2>\n<p>Say you have this regex, that checks if a string has one digit in it, and nothing else:</p>\n<pre><code>/^\\d$/<br>\n</code></pre>\n<p>You can use <strong>the</strong> <code><strong>?</strong></code> <strong>quantifier</strong> to make it optional, thus requiring zero or one:</p>\n<pre><code>/^\\d?$/<br>\n</code></pre>\n<p>but what if you want to match multiple digits?You can do it in 4 ways, using <code>+</code>, <code>*</code>, <code>{n}</code> and <code>{n,m}</code>.</p>\n<h3><code>+</code></h3>\n<p>Match one or more (&gt;=1) items</p>\n<pre><code>/^\\d+$/<br>\n<br>\n/^\\d+$/.test('12') &nbsp;&nbsp;&nbsp;&nbsp;//✅<br>\n/^\\d+$/.test('14') &nbsp;&nbsp;&nbsp;&nbsp;//✅<br>\n/^\\d+$/.test('144343') //✅<br>\n/^\\d+$/.test('') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//❌<br>\n/^\\d+$/.test('1a') &nbsp;&nbsp;&nbsp;&nbsp;//❌<br>\n</code></pre>\n<h3><code>*</code></h3>\n<p>Match 0 or more (&gt;= 0) items</p>\n<pre><code>/^\\d+$/<br>\n<br>\n/^\\d*$/.test('12') &nbsp;&nbsp;&nbsp;&nbsp;//✅<br>\n/^\\d*$/.test('14') &nbsp;&nbsp;&nbsp;&nbsp;//✅<br>\n/^\\d*$/.test('144343') //✅<br>\n/^\\d*$/.test('') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//✅<br>\n/^\\d*$/.test('1a') &nbsp;&nbsp;&nbsp;&nbsp;//❌<br>\n</code></pre>\n<h3><code>{n}</code></h3>\n<p>Match exactly <code>n</code> items</p>\n<pre><code>/^\\d{3}$/<br>\n<br>\n/^\\d{3}$/.test('123') &nbsp;//✅<br>\n/^\\d{3}$/.test('12') &nbsp;&nbsp;//❌<br>\n/^\\d{3}$/.test('1234') //❌<br>\n<br>\n/^[A-Za-z0-9]{3}$/.test('Abc') //✅<br>\n</code></pre>\n<h3><code>{n,m}</code></h3>\n<p>Match between <code>n</code> and <code>m</code> times:</p>\n<pre><code>/^\\d{3,5}$/<br>\n<br>\n/^\\d{3,5}$/.test('123') &nbsp;&nbsp;&nbsp;//✅<br>\n/^\\d{3,5}$/.test('1234') &nbsp;&nbsp;//✅<br>\n/^\\d{3,5}$/.test('12345') &nbsp;//✅<br>\n/^\\d{3,5}$/.test('123456') //❌<br>\n</code></pre>\n<p><code>m</code> can be omitted to have an open ending to have at least <code>n</code> items:</p>\n<pre><code>/^\\d{3,}$/<br>\n<br>\n/^\\d{3,}$/.test('12') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//❌<br>\n/^\\d{3,}$/.test('123') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//✅<br>\n/^\\d{3,}$/.test('12345') &nbsp;&nbsp;&nbsp;&nbsp;//✅<br>\n/^\\d{3,}$/.test('123456789') //✅<br>\n</code></pre>\n<h2>Optional items</h2>\n<p>Following an item with <code>?</code> makes it optional:</p>\n<pre><code>/^\\d{3}\\w?$/<br>\n<br>\n/^\\d{3}\\w?$/.test('123') &nbsp;&nbsp;//✅<br>\n/^\\d{3}\\w?$/.test('123a') &nbsp;//✅<br>\n/^\\d{3}\\w?$/.test('123ab') //❌<br>\n</code></pre>\n<h2>Groups</h2>\n<p>Using parentheses, you can create groups of characters: <code>(...)</code>This example matches exactly 3 digits followed by one or more alphanumeric characters:</p>\n<pre><code>/^(\\d{3})(\\w+)$/<br>\n<br>\n/^(\\d{3})(\\w+)$/.test('123') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//❌<br>\n/^(\\d{3})(\\w+)$/.test('123s') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//✅<br>\n/^(\\d{3})(\\w+)$/.test('123something') //✅<br>\n/^(\\d{3})(\\w+)$/.test('1234') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//✅<br>\n</code></pre>\n<p>Repetition characters put after a group closing parentheses refer to the whole group:</p>\n<pre><code>/^(\\d{2})+$/<br>\n<br>\n/^(\\d{2})+$/.test('12') &nbsp;&nbsp;//✅<br>\n/^(\\d{2})+$/.test('123') &nbsp;//❌<br>\n/^(\\d{2})+$/.test('1234') //✅<br>\n</code></pre>\n<h2>Capturing Groups</h2>\n<p>So far, we’ve seen how to test strings and check if they contain a certain pattern.A very cool feature of regular expressions is the ability to <strong>capture parts of a string</strong>, and put them into an array.You can do so using Groups, and in particular <strong>Capturing Groups</strong>.By default, a Group is a Capturing Group. Now, instead of using <code>RegExp.test(String)</code>, which just returns a boolean if the pattern is satisfied, we use one of</p>\n<ul>\n  <li><code>String.match(RegExp)</code></li>\n  <li><code>RegExp.exec(String)</code></li>\n</ul>\n<p>They are exactly the same, and return an Array with the whole matched string in the first item, then each matched group content.If there is no match, it returns <code>null</code>:</p>\n<pre><code>'123s'.match(/^(\\d{3})(\\w+)$/)<br>\n//Array [ \"123s\", \"123\", \"123s\" ]<br>\n<br>\n/^(\\d{3})(\\w+)$/.exec('123s')<br>\n//Array [ \"123s\", \"123\", \"s\" ]<br>\n<br>\n'hey'.match(/(hey|ho)/)<br>\n//Array [ \"hey\", \"hey\" ]<br>\n<br>\n/(hey|ho)/.exec('hey')<br>\n//Array [ \"hey\", \"hey\" ]<br>\n<br>\n/(hey|ho)/.exec('ha!')<br>\n//null<br>\n</code></pre>\n<p>When a group is matched multiple times, only the last match is put in the result array:</p>\n<pre><code>'123456789'.match(/(\\d)+/)<br>\n//Array [ \"123456789\", \"9\" ]<br>\n</code></pre>\n<h3>Optional groups</h3>\n<p>A capturing group can be made optional by using <code>(...)?</code>. If it’s not found, the resulting array slot will contain <code>undefined</code>:</p>\n<pre><code>/^(\\d{3})(\\s)?(\\w+)$/.exec('123 s') //Array [ \"123 s\", \"123\", \" \", \"s\" ]<br>\n/^(\\d{3})(\\s)?(\\w+)$/.exec('123s') //Array [ \"123s\", \"123\", undefined, \"s\" ]<br>\n</code></pre>\n<h3>Reference matched groups</h3>\n<p>Every group that’s matched is assigned a number. <code>$1</code> refers to the first, <code>$2</code> to the second, and so on. This will be useful when we’ll later talk about replacing parts of a string.</p>\n<h3>Named Capturing Groups</h3>\n<p>This is a new, <a href=\"https://flaviocopes.com/ecmascript/\">ES2018</a> feature.A group can be assigned to a name, rather than just being assigned a slot in the result array:</p>\n<pre><code>const re = /(?&lt;year&gt;\\d{4})-(?&lt;month&gt;\\d{2})-(?&lt;day&gt;\\d{2})/<br>\nconst result = re.exec('2015-01-02')<br>\n<br>\n// result.groups.year === '2015';<br>\n// result.groups.month === '01';<br>\n// result.groups.day === '02';<br>\n</code></pre>\n<h2>Using match and exec without groups</h2>\n<p>There is a difference with using <code>match</code> and <code>exec</code> without groups: the first item in the array is not the whole matched string, but the match directly:</p>\n<pre><code>/hey|ho/.exec('hey') &nbsp;&nbsp;// [ \"hey\" ]<br>\n<br>\n/(hey).(ho)/.exec('hey ho') // [ \"hey ho\", \"hey\", \"ho\" ]<br>\n</code></pre>\n<h2>Noncapturing Groups</h2>\n<p>Since by default groups are Capturing Groups, you need a way to ignore some groups in the resulting array. This is possible using <strong>Noncapturing Groups</strong>, which start with an <code>(?:...)</code></p>\n<pre><code>'123s'.match(/^(\\d{3})(?:\\s)(\\w+)$/)<br>\n//null<br>\n'123 s'.match(/^(\\d{3})(?:\\s)(\\w+)$/)<br>\n//Array [ \"123 s\", \"123\", \"s\" ]<br>\n</code></pre>\n<h2>Flags</h2>\n<p>You can use the following flags on any regular expression:</p>\n<ul>\n  <li><code>g</code>: matches the pattern multiple times</li>\n  <li><code>i</code>: makes the regex case insensitive</li>\n  <li><code>m</code>: enables multiline mode. In this mode, <code>^</code> and <code>$</code> match the start and end of the whole string. Without this, with multiline strings they match the beginning and end of each line.</li>\n  <li><code>u</code>: enables support for unicode (introduced in ES6/ES2015)</li>\n  <li><code>s</code>: (new in <a href=\"https://flaviocopes.com/ecmascript/\">ES2018</a>) short for <em>single line</em>, it causes the <code>.</code> to match new line characters as well</li>\n</ul>\n<p>Flags can be combined, and they are added at the end of the string in regex literals:</p>\n<pre><code>/hey/ig.test('HEy') //✅<br>\n</code></pre>\n<p>or as the second parameter with RegExp object constructors:</p>\n<pre><code>new RegExp('hey', 'ig').test('HEy') //✅<br>\n</code></pre>\n<h2>Inspecting a regex</h2>\n<p>Given a regex, you can inspect its properties:</p>\n<ul>\n  <li><code>source</code> the pattern string</li>\n  <li><code>multiline</code> true with the <code>m</code> flag</li>\n  <li><code>global</code> true with the <code>g</code> flag</li>\n  <li><code>ignoreCase</code> true with the <code>i</code> flag</li>\n  <li><code>lastIndex</code></li>\n</ul>\n<pre><code>/^(\\w{3})$/i.source &nbsp;&nbsp;&nbsp;&nbsp;//\"^(\\\\d{3})(\\\\w+)$\"<br>\n/^(\\w{3})$/i.multiline &nbsp;//false<br>\n/^(\\w{3})$/i.lastIndex &nbsp;//0<br>\n/^(\\w{3})$/i.ignoreCase //true<br>\n/^(\\w{3})$/i.global &nbsp;&nbsp;&nbsp;&nbsp;//false<br>\n</code></pre>\n<h2>Escaping</h2>\n<p>These characters are special:</p>\n<ul>\n  <li><code>\\</code></li>\n  <li><code>/</code></li>\n  <li><code>[ ]</code></li>\n  <li><code>( )</code></li>\n  <li><code>{ }</code></li>\n  <li><code>?</code></li>\n  <li><code>+</code></li>\n  <li><code>*</code></li>\n  <li><code>|</code></li>\n  <li><code>.</code></li>\n  <li><code>^</code></li>\n  <li><code>$</code></li>\n</ul>\n<p>They are special because they are control characters that have a meaning in the regular expression pattern, so if you want to use them inside the pattern as matching characters, you need to escape them, by prepending a backslash:</p>\n<pre><code>/^\\\\$/<br>\n/^\\^$/ // /^\\^$/.test('^') ✅<br>\n/^\\$$/ // /^\\$$/.test('$') ✅<br>\n</code></pre>\n<h2>String boundaries</h2>\n<p><code>\\b</code> and <code>\\B</code> let you inspect whether a string is at the beginning or at the end of a word:</p>\n<ul>\n  <li><code><strong>\\b</strong></code> matches a set of characters at the beginning or end of a word</li>\n  <li><code><strong>\\B</strong></code> matches a set of characters not at the beginning or end of a word</li>\n</ul>\n<p>Example:</p>\n<pre><code>'I saw a bear'.match(/\\bbear/) &nbsp;&nbsp;&nbsp;//Array [\"bear\"]<br>\n'I saw a beard'.match(/\\bbear/) &nbsp;&nbsp;//Array [\"bear\"]<br>\n'I saw a beard'.match(/\\bbear\\b/) //null<br>\n'cool_bear'.match(/\\bbear\\b/) &nbsp;&nbsp;&nbsp;&nbsp;//null<br>\n</code></pre>\n<h2>Replacing using Regular Expressions</h2>\n<p>We already saw how to check if a string contains a pattern.We also saw how to extract parts of a string to an array, matching a pattern.Let’s see how to <strong>replace parts of a string</strong> based on a pattern.The <code>String</code> object in JavaScript has a replace() method, which can be used without regular expressions to perform a <em>single replacement</em> on a string:</p>\n<pre><code>\"Hello world!\".replace('world', 'dog') //Hello dog!<br>\n\"My dog is a good dog!\".replace('dog', 'cat') //My cat is a good dog!<br>\n</code></pre>\n<p>This method also accepts a regular expression as argument:</p>\n<pre><code>\"Hello world!\".replace(/world/, 'dog') //Hello dog!<br>\n</code></pre>\n<p>Using the <code>g</code> flag is <strong>the only way</strong> to replace multiple occurrences in a string in vanilla JavaScript:</p>\n<pre><code>\"My dog is a good dog!\".replace(/dog/g, 'cat') //My cat is a good cat!<br>\n</code></pre>\n<p>Groups let us do more fancy things, like moving around parts of a string:</p>\n<pre><code>\"Hello, world!\".replace(/(\\w+), (\\w+)!/, '$2: $1!!!')<br>\n// \"world: Hello!!!\"<br>\n</code></pre>\n<p>Instead of using a string you can use a function, to do even fancier things. It will receive a number of arguments like the one returned by <code>String.match(RegExp)</code> or <code>RegExp.exec(String)</code>, with a number of arguments that depends on the number of groups:</p>\n<pre><code>\"Hello, world!\".replace(/(\\w+), (\\w+)!/, (matchedString, first, second) =&gt; {<br>\n &nbsp;console.log(first);<br>\n &nbsp;console.log(second);<br>\n<br>\n &nbsp;return `${second.toUpperCase()}: ${first}!!!`<br>\n})<br>\n//\"WORLD: Hello!!!\"<br>\n</code></pre>\n<h2>Greediness</h2>\n<p>Regular expressions are said to be <strong>greedy</strong> by default.What does it mean?Take this regex</p>\n<pre><code>/\\$(.+)\\s?/<br>\n</code></pre>\n<p>It is supposed to extract a dollar amount from a string</p>\n<pre><code>/\\$(.+)\\s?/.exec('This costs $100')[1]<br>\n//100<br>\n</code></pre>\n<p>but if we have more words after the number, it freaks off</p>\n<pre><code>/\\$(.+)\\s?/.exec('This costs $100 and it is less than $200')[1]<br>\n//100 and it is less than $200<br>\n</code></pre>\n<p>Why? Because the regex after the $ sign matches any character with <code>.+</code>, and it won’t stop until it reaches the end of the string. Then, it finishes off because <code>\\s?</code> makes the ending space optional.To fix this, we need to tell the regex to be lazy, and perform the least amount of matching possible. We can do so using the <code>?</code> symbol after the quantifier:</p>\n<pre><code>/\\$(.+?)\\s/.exec('This costs $100 and it is less than $200')[1]<br>\n//100<br>\n</code></pre>\n<blockquote><em>I removed the</em> <code><em>?</em></code> <em>after</em> <code><em>\\s</em></code> <em>otherwise it matched only the first number, since the space was optional</em></blockquote>\n<p>So, <code>?</code> means different things based on its position, because it can be both a quantifier and a lazy mode indicator.</p>\n<h2>Lookaheads: match a string depending on what follows it</h2>\n<p>Use <code>?=</code> to match a string that’s followed by a specific substring:</p>\n<pre><code>/Roger(?=Waters)/<br>\n<br>\n/Roger(?= Waters)/.test('Roger is my dog') //false<br>\n/Roger(?= Waters)/.test('Roger is my dog and Roger Waters is a famous musician') //true<br>\n</code></pre>\n<p><code>?!</code> performs the inverse operation, matching if a string is <strong>not</strong> followed by a specific substring:</p>\n<pre><code>/Roger(?!Waters)/<br>\n<br>\n/Roger(?! Waters)/.test('Roger is my dog') //true<br>\n/Roger(?! Waters)/.test('Roger is my dog and Roger Waters is a famous musician') //false<br>\n</code></pre>\n<h2>Lookbehinds: match a string depending on what precedes it</h2>\n<p>This is an <a href=\"https://flaviocopes.com/ecmascript/\">ES2018</a> feature.Lookaheads use the <code>?=</code> symbol. Lookbehinds use <code>?&lt;=</code>.</p>\n<pre><code>/(?&lt;=Roger) Waters/<br>\n<br>\n/(?&lt;=Roger) Waters/.test('Pink Waters is my dog') //false<br>\n/(?&lt;=Roger) Waters/.test('Roger is my dog and Roger Waters is a famous musician') //true<br>\n</code></pre>\n<p>A lookbehind is negated using <code>?&lt;!</code>:</p>\n<pre><code>/(?&lt;!Roger) Waters/<br>\n<br>\n/(?&lt;!Roger) Waters/.test('Pink Waters is my dog') //true<br>\n/(?&lt;!Roger) Waters/.test('Roger is my dog and Roger Waters is a famous musician') //false<br>\n</code></pre>\n<h2>Regular Expressions and Unicode</h2>\n<p>The <code>u</code> flag is mandatory when working with Unicode strings, in particular when you might need to handle characters in astral planes, the ones that are not included in the first 1600 Unicode characters.Like Emojis, for example, but not just those.If you don’t add that flag, this simple regex that should match one character will not work, because for JavaScript that emoji is represented internally by 2 characters (see <a href=\"https://flaviocopes.com/javascript-unicode/\">Unicode in JavaScript</a>):</p>\n<pre><code>/^.$/.test('a') //✅<br>\n/^.$/.test('🐶') //❌<br>\n/^.$/u.test('🐶') //✅<br>\n</code></pre>\n<p>So, always use the <code>u</code> flag.Unicode, just like normal characters, handle ranges:</p>\n<pre><code>/[a-z]/.test('a') &nbsp;//✅<br>\n/[1-9]/.test('1') &nbsp;//✅<br>\n<br>\n/[🐶-🦊]/u.test('🐺') &nbsp;//✅<br>\n/[🐶-🦊]/u.test('🐛') &nbsp;//❌<br>\n</code></pre>\n<p>JavaScript checks the internal code representation, so 🐶 &lt; 🐺 &lt; 🦊 because <code>\\u1F436</code> &lt; <code>\\u1F43A</code> &lt; <code>\\u1F98A</code>. Check the <a href=\"https://unicode.org/emoji/charts/full-emoji-list.html\">full Emoji list</a> to get those codes, and to find out the order (tip: the macOS Emoji picker has some emojis in a mixed order, don’t count on it)</p>\n<h2>Unicode property escapes</h2>\n<p>As we saw above, in a regular expression pattern you can use <code>\\d</code> to match any digit, <code>\\s</code>to match any character that’s not a white space, <code>\\w</code> to match any alphanumeric character, and so on.Unicode property escapes is an <a href=\"https://flaviocopes.com/ecmascript/\">ES2018</a> feature that introduces a very cool feature, extending this concept to all Unicode characters introducing <code>\\p{}</code> and is negation <code>\\P{}</code>.Any <a href=\"https://flaviocopes.com/unicode/\">unicode</a> character has a set of properties. For example <code>Script</code> determines the language family, <code>ASCII</code> is a boolean that’s true for ASCII characters, and so on. You can put this property in the graph parentheses, and the regex will check for that to be true:</p>\n<pre><code>/^\\p{ASCII}+$/u.test('abc') &nbsp;&nbsp;//✅<br>\n/^\\p{ASCII}+$/u.test('ABC@') &nbsp;//✅<br>\n/^\\p{ASCII}+$/u.test('ABC🙃') //❌<br>\n</code></pre>\n<p><code>ASCII_Hex_Digit</code> is another boolean property, that checks if the string only contains valid hexadecimal digits:</p>\n<pre><code>/^\\p{ASCII_Hex_Digit}+$/u.test('0123456789ABCDEF') //✅<br>\n/^\\p{ASCII_Hex_Digit}+$/u.test('h') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//❌<br>\n</code></pre>\n<p>There are many other boolean properties, which you just check by adding their name in the graph parentheses, including <code>Uppercase</code>, <code>Lowercase</code>, <code>White_Space</code>, <code>Alphabetic</code>, <code>Emoji</code>and more:</p>\n<pre><code>/^\\p{Lowercase}$/u.test('h') //✅<br>\n/^\\p{Uppercase}$/u.test('H') //✅<br>\n<br>\n/^\\p{Emoji}+$/u.test('H') &nbsp;&nbsp;//❌<br>\n/^\\p{Emoji}+$/u.test('🙃🙃') //✅<br>\n</code></pre>\n<p>In addition to those binary properties, you can check any of the unicode character properties to match a specific value. In this example, I check if the string is written in the greek or latin alphabet:</p>\n<pre><code>/^\\p{Script=Greek}+$/u.test('ελληνικά') //✅<br>\n/^\\p{Script=Latin}+$/u.test('hey') //✅<br>\n</code></pre>\n<p>Read more about all the properties you can use <a href=\"https://github.com/tc39/proposal-regexp-unicode-property-escapes\">directly on the proposal</a>.</p>\n<h2>Examples</h2>\n<h3>Extract a number from a string</h3>\n<p>Supposing a string has only one number you need to extract, <code>/\\d+/</code> should do it:</p>\n<pre><code>'Test 123123329'.match(/\\d+/)<br>\n// Array [ \"123123329\" ]<br>\n</code></pre>\n<h3>Match an email address</h3>\n<p>A simplistic approach is to check non-space characters before and after the <code>@</code> sign, using <code>\\S</code>:</p>\n<pre><code>/(\\S+)@(\\S+)\\.(\\S+)/<br>\n<br>\n/(\\S+)@(\\S+)\\.(\\S+)/.exec('[email protected]')<br>\n//[\"[email protected]\", \"copesc\", \"gmail\", \"com\"]<br>\n</code></pre>\n<p>This is a simplistic example however, as many invalid emails are still satisfied by this regex.</p>\n<h3>Capture text between double quotes</h3>\n<p>Suppose you have a string that contains something in double quotes, and you want to extract that content.The best way to do so is by using a <strong>capturing group</strong>, because we know the match starts and ends with <code>\"</code>, and we can easily target it, but we also want to remove those quotes from our result.We’ll find what we need in <code>result[1]</code>:</p>\n<pre><code>const hello = 'Hello \"nice flower\"'<br>\nconst result = /\"([^']*)\"/.exec(hello)<br>\n//Array [ \"\\\"nice flower\\\"\", \"nice flower\" ]<br>\n</code></pre>\n<h3>Get the content inside an HTML tag</h3>\n<p>For example get the content inside a span tag, allowing any number of arguments inside the tag:</p>\n<pre><code>/&lt;span\\b[^&gt;]*&gt;(.*?)&lt;\\/span&gt;/<br>\n<br>\n/&lt;span\\b[^&gt;]*&gt;(.*?)&lt;\\/span&gt;/.exec('test')<br>\n// null<br>\n/&lt;span\\b[^&gt;]*&gt;(.*?)&lt;\\/span&gt;/.exec('&lt;span&gt;test&lt;/span&gt;')<br>\n// [\"&lt;span&gt;test&lt;/span&gt;\", \"test\"]<br>\n/&lt;span\\b[^&gt;]*&gt;(.*?)&lt;\\/span&gt;/.exec('&lt;span class=\"x\"&gt;test&lt;/span&gt;')<br>\n// [\"&lt;span class=\"x\"&gt;test&lt;/span&gt;\", \"test\"]</code></pre>\n</html>",
      "json_metadata": "{\"tags\":[\"javascript\",\"reqex\"],\"links\":[\"https://flaviocopes.com/javascript-regular-expressions/\",\"https://flaviocopes.com/unicode/\",\"https://flaviocopes.com/ecmascript/\",\"https://flaviocopes.com/javascript-unicode/\",\"https://unicode.org/emoji/charts/full-emoji-list.html\",\"https://github.com/tc39/proposal-regexp-unicode-property-escapes\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
2018/05/10 10:51:54
parent authoragainme
parent permlinknode-js-web3-js-ethereum-javascript-api
authorsteemitboard
permlinksteemitboard-notify-againme-20180510t105156000z
title
bodyCongratulations @againme! You have completed some achievement on Steemit and have been rewarded with new badge(s) : [![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/posts.png)](http://steemitboard.com/@againme) Award for the number of posts published 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 #22305758/Trx 3a9e0f9e36d2a45011dba4d85631857d1297f30d
View Raw JSON Data
{
  "trx_id": "3a9e0f9e36d2a45011dba4d85631857d1297f30d",
  "block": 22305758,
  "trx_in_block": 45,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-10T10:51:54",
  "op": [
    "comment",
    {
      "parent_author": "againme",
      "parent_permlink": "node-js-web3-js-ethereum-javascript-api",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-againme-20180510t105156000z",
      "title": "",
      "body": "Congratulations @againme! 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/posts.png)](http://steemitboard.com/@againme) Award for the number of posts published\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\"]}"
    }
  ]
}
2018/05/10 08:07:57
parent author
parent permlinknode
authoragainme
permlinknode-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js
titlenode.js : Mocha is a powerful and easy to use testing framework for Node.js
body@@ -584,24 +584,518 @@ %3Cp%3E%3Cbr%3E%3C/p%3E%0A +%3Cp%3E// package.json%3C/p%3E%0A%3Cp%3E%7B%3Cbr%3E%0A %22name%22: %22inbox%22,%3Cbr%3E%0A %22version%22: %221.0.0%22,%3Cbr%3E%0A %22description%22: %22%22,%3Cbr%3E%0A %22main%22: %22index.js%22,%3Cbr%3E%0A %22scripts%22: %7B%3Cbr%3E%0A &nbsp;&nbsp;&nbsp;%3Cstrong%3E&nbsp;%22test%22: %22mocha%22%3C/strong%3E%3Cbr%3E%0A &nbsp;%7D,%3Cbr%3E%0A %22author%22: %22%22,%3Cbr%3E%0A %22license%22: %22ISC%22,%3Cbr%3E%0A %22dependencies%22: %7B%3Cbr%3E%0A %22ganache-cli%22: %22%5E6.1.0%22,%3Cbr%3E%0A %3Cstrong%3E%22mocha%22: %22%5E5.1.1%22,%3C/strong%3E%3Cbr%3E%0A %22solc%22: %22%5E0.4.23%22,%3Cbr%3E%0A %22web3%22: %22%5E1.0.0-beta.26%22%3Cbr%3E%0A &nbsp;%7D%3Cbr%3E%0A%7D%3C/p%3E%0A%3Cp%3E%3Cbr%3E%3C/p%3E%0A%3Cp%3E// run test%3C/p%3E%0A%3Cp%3Enpm run test%3C/p%3E%0A%3Cp%3E%3Cbr%3E%3C/p%3E%0A %3Cp%3E&nbsp;%3Ca @@ -3996,24 +3996,29 @@ adder%22%7B%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -4058,32 +4058,37 @@ dder(done)%7B%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4142,32 +4142,37 @@ then(done);%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4179,32 +4179,42 @@ sp;%7D);%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4274,32 +4274,37 @@ tion(done)%7B%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4347,24 +4347,29 @@ er(7,3)%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -4419,32 +4419,37 @@ on(result)%7B%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4521,24 +4521,29 @@ == 10);%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -4572,32 +4572,37 @@ sp;&nbsp;%7D)%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4637,32 +4637,37 @@ then(done);%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4674,32 +4674,42 @@ sp;%7D);%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4769,24 +4769,29 @@ ber%22, %7B%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -4839,24 +4839,29 @@ r(7,-3)%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -4915,24 +4915,29 @@ esult)%7B%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -5012,24 +5012,29 @@ == 4);%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -5067,24 +5067,29 @@ nbsp;%7D)%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -5132,24 +5132,29 @@ (done);%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -5165,32 +5165,42 @@ sp;%7D);%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -5232,24 +5232,29 @@ (done)%7B%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -5304,24 +5304,29 @@ cleanup%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -5364,24 +5364,29 @@ done();%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -5399,16 +5399,21 @@ ;%7D)%3Cbr%3E%0A +%3Cbr%3E%0A %7D);%3C/cod
json metadata{"tags":["node","js","mocha"],"links":["http://mochajs.org/","http://stateofjs.com/2016/testing/","http://chaijs.com/api/assert/","https://crossbrowsertesting.github.io/login-form.html","https://help.crossbrowsertesting.com/selenium-testing/frameworks/mocha/?_ga=2.150825782.1202929143.1525931692-1869093701.1525931692","http://blog.jeonghwan.net/mocha/"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22302484/Trx 9b46a8cddf5654af5dd2592212b216989d79bf53
View Raw JSON Data
{
  "trx_id": "9b46a8cddf5654af5dd2592212b216989d79bf53",
  "block": 22302484,
  "trx_in_block": 26,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-10T08:07:57",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "node",
      "author": "againme",
      "permlink": "node-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js",
      "title": "node.js :  Mocha is a powerful and easy to use testing framework for Node.js",
      "body": "@@ -584,24 +584,518 @@\n %3Cp%3E%3Cbr%3E%3C/p%3E%0A\n+%3Cp%3E// package.json%3C/p%3E%0A%3Cp%3E%7B%3Cbr%3E%0A %22name%22: %22inbox%22,%3Cbr%3E%0A %22version%22: %221.0.0%22,%3Cbr%3E%0A %22description%22: %22%22,%3Cbr%3E%0A %22main%22: %22index.js%22,%3Cbr%3E%0A %22scripts%22: %7B%3Cbr%3E%0A &nbsp;&nbsp;&nbsp;%3Cstrong%3E&nbsp;%22test%22: %22mocha%22%3C/strong%3E%3Cbr%3E%0A &nbsp;%7D,%3Cbr%3E%0A %22author%22: %22%22,%3Cbr%3E%0A %22license%22: %22ISC%22,%3Cbr%3E%0A %22dependencies%22: %7B%3Cbr%3E%0A %22ganache-cli%22: %22%5E6.1.0%22,%3Cbr%3E%0A %3Cstrong%3E%22mocha%22: %22%5E5.1.1%22,%3C/strong%3E%3Cbr%3E%0A %22solc%22: %22%5E0.4.23%22,%3Cbr%3E%0A %22web3%22: %22%5E1.0.0-beta.26%22%3Cbr%3E%0A &nbsp;%7D%3Cbr%3E%0A%7D%3C/p%3E%0A%3Cp%3E%3Cbr%3E%3C/p%3E%0A%3Cp%3E// run test%3C/p%3E%0A%3Cp%3Enpm run test%3C/p%3E%0A%3Cp%3E%3Cbr%3E%3C/p%3E%0A\n %3Cp%3E&nbsp;%3Ca \n@@ -3996,24 +3996,29 @@\n adder%22%7B%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4058,32 +4058,37 @@\n dder(done)%7B%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4142,32 +4142,37 @@\n then(done);%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4179,32 +4179,42 @@\n sp;%7D);%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4274,32 +4274,37 @@\n tion(done)%7B%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4347,24 +4347,29 @@\n er(7,3)%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4419,32 +4419,37 @@\n on(result)%7B%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4521,24 +4521,29 @@\n == 10);%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4572,32 +4572,37 @@\n sp;&nbsp;%7D)%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4637,32 +4637,37 @@\n then(done);%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4674,32 +4674,42 @@\n sp;%7D);%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4769,24 +4769,29 @@\n ber%22, %7B%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4839,24 +4839,29 @@\n r(7,-3)%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4915,24 +4915,29 @@\n esult)%7B%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -5012,24 +5012,29 @@\n  == 4);%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -5067,24 +5067,29 @@\n nbsp;%7D)%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -5132,24 +5132,29 @@\n (done);%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -5165,32 +5165,42 @@\n sp;%7D);%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -5232,24 +5232,29 @@\n (done)%7B%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -5304,24 +5304,29 @@\n cleanup%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -5364,24 +5364,29 @@\n done();%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -5399,16 +5399,21 @@\n ;%7D)%3Cbr%3E%0A\n+%3Cbr%3E%0A\n %7D);%3C/cod\n",
      "json_metadata": "{\"tags\":[\"node\",\"js\",\"mocha\"],\"links\":[\"http://mochajs.org/\",\"http://stateofjs.com/2016/testing/\",\"http://chaijs.com/api/assert/\",\"https://crossbrowsertesting.github.io/login-form.html\",\"https://help.crossbrowsertesting.com/selenium-testing/frameworks/mocha/?_ga=2.150825782.1202929143.1525931692-1869093701.1525931692\",\"http://blog.jeonghwan.net/mocha/\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
2018/05/10 07:44:48
parent author
parent permlinknode
authoragainme
permlinknode-js-web3-js-ethereum-javascript-api
titlenode.js : web3.js Ethereum JavaScript API
body<html> <p><br></p> <p><strong>web3.js&nbsp;</strong></p> <p>Ethereum JavaScript API</p> <p>This is the Ethereum compatible <a href="https://github.com/ethereum/wiki/wiki/JavaScript-API">JavaScript API</a> which implements the <a href="https://github.com/ethereum/wiki/wiki/JSON-RPC">Generic JSON RPC</a> spec. It's available on npm as a node module, for bower and component as an embeddable js and as a meteor.js package. &nbsp;&nbsp;&nbsp;&nbsp;You need to run a local Ethereum node to use this library.<a href="https://github.com/ethereum/wiki/wiki/JavaScript-API">Documentation</a></p> <h2>Installation</h2> <h3>Node.js</h3> <pre><code>npm install web3</code></pre> <h3>Yarn</h3> <pre><code>yarn add web3</code></pre> <h3>Meteor.js</h3> <pre><code>meteor add ethereum:web3</code></pre> <h3>As Browser module</h3> <p>CDN</p> <pre><code>&lt;script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"&gt;&lt;/script&gt;</code></pre> <p>Bower</p> <pre><code>bower install web3</code></pre> <p>Component</p> <pre><code>component install ethereum/web3.js</code></pre> <ul> <li>Include <code>web3.min.js</code> in your html file. (not required for the meteor package)</li> </ul> <h2>Usage</h2> <p>Use the <code>web3</code> object directly from global namespace:</p> <pre><code>console.log(web3); // {eth: .., shh: ...} // it's here!</code></pre> <p>Set a provider (HttpProvider)</p> <pre><code>if (typeof web3 !== 'undefined') {<br> &nbsp;web3 = new Web3(web3.currentProvider);<br> } else {<br> &nbsp;// set the provider you want from Web3.providers<br> &nbsp;web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));<br> }</code></pre> <p>Set a provider (HttpProvider using <a href="https://en.wikipedia.org/wiki/Basic_access_authentication">HTTP Basic Authentication</a>)</p> <pre><code>web3.setProvider(new web3.providers.HttpProvider('http://host.url', 0, BasicAuthUsername, BasicAuthPassword));</code></pre> <p>There you go, now you can use it:</p> <pre><code>var coinbase = web3.eth.coinbase;<br> var balance = web3.eth.getBalance(coinbase);</code></pre> <p>You can find more examples in <a href="https://github.com/ethereum/web3.js/tree/master/example"><code>example</code></a> directory.</p> <h2>Contribute!</h2> <h3>Requirements</h3> <ul> <li>Node.js</li> <li>npm</li> </ul> <pre><code>sudo apt-get update<br> sudo apt-get install nodejs<br> sudo apt-get install npm<br> sudo apt-get install nodejs-legacy</code></pre> <h3>Building (gulp)</h3> <pre><code>npm run-script build</code></pre> <h3>Testing (mocha)</h3> <pre><code>npm test</code></pre> <h3>Community</h3> <ul> <li><a href="https://gitter.im/ethereum/web3.js?source=orgpage">Gitter</a></li> <li><a href="https://forum.ethereum.org/categories/ethereum-js">Forum</a></li> </ul> <h3>Other implementations</h3> <ul> <li>Python <a href="https://github.com/ethereum/web3.py">Web3.py</a></li> <li>Haskell <a href="https://github.com/airalab/hs-web3">hs-web3</a></li> <li>Java <a href="https://github.com/web3j/web3j">web3j</a></li> <li>Scala <a href="https://github.com/mslinn/web3j-scala">web3j-scala</a></li> <li>Purescript <a href="https://github.com/f-o-a-m/purescript-web3">purescript-web3</a></li> <li>PHP <a href="https://github.com/sc0Vu/web3.php">web3.php</a></li> <li>PHP <a href="https://github.com/digitaldonkey/ethereum-php">ethereum-php</a></li> <li><br></li> </ul> <p>https://github.com/ethereum/web3.js/<br> </p> </html>
json metadata{"tags":["node","js","web3"],"links":["https://github.com/ethereum/wiki/wiki/JavaScript-API","https://github.com/ethereum/wiki/wiki/JSON-RPC","https://en.wikipedia.org/wiki/Basic_access_authentication","https://github.com/ethereum/web3.js/tree/master/example","https://gitter.im/ethereum/web3.js?source=orgpage","https://forum.ethereum.org/categories/ethereum-js","https://github.com/ethereum/web3.py","https://github.com/airalab/hs-web3","https://github.com/web3j/web3j","https://github.com/mslinn/web3j-scala","https://github.com/f-o-a-m/purescript-web3","https://github.com/sc0Vu/web3.php","https://github.com/digitaldonkey/ethereum-php","https://github.com/ethereum/web3.js/"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22302021/Trx 3dc422b9d74f9012ab01a268d7b4ae8a60b45a1a
View Raw JSON Data
{
  "trx_id": "3dc422b9d74f9012ab01a268d7b4ae8a60b45a1a",
  "block": 22302021,
  "trx_in_block": 53,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-10T07:44:48",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "node",
      "author": "againme",
      "permlink": "node-js-web3-js-ethereum-javascript-api",
      "title": "node.js : web3.js Ethereum JavaScript API",
      "body": "<html>\n<p><br></p>\n<p><strong>web3.js&nbsp;</strong></p>\n<p>Ethereum JavaScript API</p>\n<p>This is the Ethereum compatible <a href=\"https://github.com/ethereum/wiki/wiki/JavaScript-API\">JavaScript API</a> which implements the <a href=\"https://github.com/ethereum/wiki/wiki/JSON-RPC\">Generic JSON RPC</a> spec. It's available on npm as a node module, for bower and component as an embeddable js and as a meteor.js package. &nbsp;&nbsp;&nbsp;&nbsp;You need to run a local Ethereum node to use this library.<a href=\"https://github.com/ethereum/wiki/wiki/JavaScript-API\">Documentation</a></p>\n<h2>Installation</h2>\n<h3>Node.js</h3>\n<pre><code>npm install web3</code></pre>\n<h3>Yarn</h3>\n<pre><code>yarn add web3</code></pre>\n<h3>Meteor.js</h3>\n<pre><code>meteor add ethereum:web3</code></pre>\n<h3>As Browser module</h3>\n<p>CDN</p>\n<pre><code>&lt;script src=\"https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js\"&gt;&lt;/script&gt;</code></pre>\n<p>Bower</p>\n<pre><code>bower install web3</code></pre>\n<p>Component</p>\n<pre><code>component install ethereum/web3.js</code></pre>\n<ul>\n  <li>Include <code>web3.min.js</code> in your html file. (not required for the meteor package)</li>\n</ul>\n<h2>Usage</h2>\n<p>Use the <code>web3</code> object directly from global namespace:</p>\n<pre><code>console.log(web3); // {eth: .., shh: ...} // it's here!</code></pre>\n<p>Set a provider (HttpProvider)</p>\n<pre><code>if (typeof web3 !== 'undefined') {<br>\n &nbsp;web3 = new Web3(web3.currentProvider);<br>\n} else {<br>\n &nbsp;// set the provider you want from Web3.providers<br>\n &nbsp;web3 = new Web3(new Web3.providers.HttpProvider(\"http://localhost:8545\"));<br>\n}</code></pre>\n<p>Set a provider (HttpProvider using <a href=\"https://en.wikipedia.org/wiki/Basic_access_authentication\">HTTP Basic Authentication</a>)</p>\n<pre><code>web3.setProvider(new web3.providers.HttpProvider('http://host.url', 0, BasicAuthUsername, BasicAuthPassword));</code></pre>\n<p>There you go, now you can use it:</p>\n<pre><code>var coinbase = web3.eth.coinbase;<br>\nvar balance = web3.eth.getBalance(coinbase);</code></pre>\n<p>You can find more examples in <a href=\"https://github.com/ethereum/web3.js/tree/master/example\"><code>example</code></a> directory.</p>\n<h2>Contribute!</h2>\n<h3>Requirements</h3>\n<ul>\n  <li>Node.js</li>\n  <li>npm</li>\n</ul>\n<pre><code>sudo apt-get update<br>\nsudo apt-get install nodejs<br>\nsudo apt-get install npm<br>\nsudo apt-get install nodejs-legacy</code></pre>\n<h3>Building (gulp)</h3>\n<pre><code>npm run-script build</code></pre>\n<h3>Testing (mocha)</h3>\n<pre><code>npm test</code></pre>\n<h3>Community</h3>\n<ul>\n  <li><a href=\"https://gitter.im/ethereum/web3.js?source=orgpage\">Gitter</a></li>\n  <li><a href=\"https://forum.ethereum.org/categories/ethereum-js\">Forum</a></li>\n</ul>\n<h3>Other implementations</h3>\n<ul>\n  <li>Python <a href=\"https://github.com/ethereum/web3.py\">Web3.py</a></li>\n  <li>Haskell <a href=\"https://github.com/airalab/hs-web3\">hs-web3</a></li>\n  <li>Java <a href=\"https://github.com/web3j/web3j\">web3j</a></li>\n  <li>Scala <a href=\"https://github.com/mslinn/web3j-scala\">web3j-scala</a></li>\n  <li>Purescript <a href=\"https://github.com/f-o-a-m/purescript-web3\">purescript-web3</a></li>\n  <li>PHP <a href=\"https://github.com/sc0Vu/web3.php\">web3.php</a></li>\n  <li>PHP <a href=\"https://github.com/digitaldonkey/ethereum-php\">ethereum-php</a></li>\n  <li><br></li>\n</ul>\n<p>https://github.com/ethereum/web3.js/<br>\n</p>\n</html>",
      "json_metadata": "{\"tags\":[\"node\",\"js\",\"web3\"],\"links\":[\"https://github.com/ethereum/wiki/wiki/JavaScript-API\",\"https://github.com/ethereum/wiki/wiki/JSON-RPC\",\"https://en.wikipedia.org/wiki/Basic_access_authentication\",\"https://github.com/ethereum/web3.js/tree/master/example\",\"https://gitter.im/ethereum/web3.js?source=orgpage\",\"https://forum.ethereum.org/categories/ethereum-js\",\"https://github.com/ethereum/web3.py\",\"https://github.com/airalab/hs-web3\",\"https://github.com/web3j/web3j\",\"https://github.com/mslinn/web3j-scala\",\"https://github.com/f-o-a-m/purescript-web3\",\"https://github.com/sc0Vu/web3.php\",\"https://github.com/digitaldonkey/ethereum-php\",\"https://github.com/ethereum/web3.js/\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
2018/05/10 07:20:27
parent author
parent permlinknode
authoragainme
permlinknode-js-ganache-is-your-personal-blockchain-for-ethereum-development
titlenode.js : Ganache is your personal blockchain for Ethereum development.
body@@ -14,16 +14,42 @@ sp;%3C/p%3E%0A +%3Cp%3ELocal Test Network%3C/p%3E%0A %3Cp%3EGanac
json metadata{"tags":["node","js","ganache"],"links":["https://github.com/trufflesuite/ganache"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22301534/Trx dbe720e10ed5206a51959896b0d71923a337d109
View Raw JSON Data
{
  "trx_id": "dbe720e10ed5206a51959896b0d71923a337d109",
  "block": 22301534,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-10T07:20:27",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "node",
      "author": "againme",
      "permlink": "node-js-ganache-is-your-personal-blockchain-for-ethereum-development",
      "title": "node.js : Ganache is your personal blockchain for Ethereum development.",
      "body": "@@ -14,16 +14,42 @@\n sp;%3C/p%3E%0A\n+%3Cp%3ELocal Test Network%3C/p%3E%0A\n %3Cp%3EGanac\n",
      "json_metadata": "{\"tags\":[\"node\",\"js\",\"ganache\"],\"links\":[\"https://github.com/trufflesuite/ganache\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
2018/05/10 06:54:39
parent author
parent permlinknode
authoragainme
permlinknode-js-ganache-is-your-personal-blockchain-for-ethereum-development
titlenode.js : Ganache is your personal blockchain for Ethereum development.
body<html> <p>&nbsp;</p> <p>Ganache is your personal blockchain for Ethereum development.&nbsp;</p> <p><br></p> <p>https://github.com/trufflesuite/ganache</p> </html>
json metadata{"tags":["node","js","ganache"],"links":["https://github.com/trufflesuite/ganache"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22301018/Trx 9ca04c6556bdda276b092ef5c7490c80f7e3aba0
View Raw JSON Data
{
  "trx_id": "9ca04c6556bdda276b092ef5c7490c80f7e3aba0",
  "block": 22301018,
  "trx_in_block": 29,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-10T06:54:39",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "node",
      "author": "againme",
      "permlink": "node-js-ganache-is-your-personal-blockchain-for-ethereum-development",
      "title": "node.js : Ganache is your personal blockchain for Ethereum development.",
      "body": "<html>\n<p>&nbsp;</p>\n<p>Ganache is your personal blockchain for Ethereum development.&nbsp;</p>\n<p><br></p>\n<p>https://github.com/trufflesuite/ganache</p>\n</html>",
      "json_metadata": "{\"tags\":[\"node\",\"js\",\"ganache\"],\"links\":[\"https://github.com/trufflesuite/ganache\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
2018/05/10 06:31:12
votermagpielover
authoragainme
permlinknode-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js
weight10000 (100.00%)
Transaction InfoBlock #22300549/Trx ed35e3ff9b88e06a4e9ed26357dcdca8be7727b9
View Raw JSON Data
{
  "trx_id": "ed35e3ff9b88e06a4e9ed26357dcdca8be7727b9",
  "block": 22300549,
  "trx_in_block": 17,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-10T06:31:12",
  "op": [
    "vote",
    {
      "voter": "magpielover",
      "author": "againme",
      "permlink": "node-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js",
      "weight": 10000
    }
  ]
}
2018/05/10 06:28:39
voterhr1
authoragainme
permlinknode-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js
weight2 (0.02%)
Transaction InfoBlock #22300498/Trx 1389e9311a73fa53da4b8cc94b25eef09c255bd6
View Raw JSON Data
{
  "trx_id": "1389e9311a73fa53da4b8cc94b25eef09c255bd6",
  "block": 22300498,
  "trx_in_block": 31,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-10T06:28:39",
  "op": [
    "vote",
    {
      "voter": "hr1",
      "author": "againme",
      "permlink": "node-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js",
      "weight": 2
    }
  ]
}
2018/05/10 06:22:57
parent author
parent permlinknode
authoragainme
permlinknode-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js
titlenode.js : Mocha is a powerful and easy to use testing framework for Node.js
body@@ -139,33 +139,32 @@ %ED%8A%B8 %EC%BD%94%EB%93%9C %EC%9E%91%EC%84%B1%3Cbr%3E%0A%3Cem%3E - &nbsp;&nbsp;&nbs @@ -197,33 +197,32 @@ %7B%3C/em%3E%3Cbr%3E%0A%3Cem%3E - &nbsp;&nbsp;&nbs @@ -297,17 +297,16 @@ br%3E%0A%3Cem%3E - &nbsp;&n @@ -3502,39 +3502,24 @@ adder%22%7B%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -3563,39 +3563,24 @@ (done)%7B%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -3633,71 +3633,8 @@ et() -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .the @@ -3642,39 +3642,24 @@ (done);%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -3674,34 +3674,24 @@ );%3Cbr%3E%0A%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -3759,39 +3759,24 @@ (done)%7B%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -3823,39 +3823,24 @@ er(7,3)%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -3894,39 +3894,24 @@ esult)%7B%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -3987,39 +3987,24 @@ == 10);%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -4037,39 +4037,24 @@ nbsp;%7D)%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -4097,39 +4097,24 @@ (done);%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -4129,34 +4129,24 @@ );%3Cbr%3E%0A%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -4210,39 +4210,24 @@ ber%22, %7B%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -4275,39 +4275,24 @@ r(7,-3)%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -4346,39 +4346,24 @@ esult)%7B%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -4438,39 +4438,24 @@ == 4);%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -4488,39 +4488,24 @@ nbsp;%7D)%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -4548,39 +4548,24 @@ (done);%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -4580,34 +4580,24 @@ );%3Cbr%3E%0A%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -4633,39 +4633,24 @@ (done)%7B%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -4700,39 +4700,24 @@ cleanup%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp @@ -4759,31 +4759,16 @@ ();%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;& @@ -4785,31 +4785,16 @@ ;%7D)%3Cbr%3E%0A -%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A %7D);%3C/cod
json metadata{"tags":["node","js","mocha"],"links":["http://mochajs.org/","http://stateofjs.com/2016/testing/","http://chaijs.com/api/assert/","https://crossbrowsertesting.github.io/login-form.html","https://help.crossbrowsertesting.com/selenium-testing/frameworks/mocha/?_ga=2.150825782.1202929143.1525931692-1869093701.1525931692","http://blog.jeonghwan.net/mocha/"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22300384/Trx 7fa59db644ac86accb8b54c25fc5c3d3d3755a89
View Raw JSON Data
{
  "trx_id": "7fa59db644ac86accb8b54c25fc5c3d3d3755a89",
  "block": 22300384,
  "trx_in_block": 19,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-10T06:22:57",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "node",
      "author": "againme",
      "permlink": "node-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js",
      "title": "node.js :  Mocha is a powerful and easy to use testing framework for Node.js",
      "body": "@@ -139,33 +139,32 @@\n %ED%8A%B8 %EC%BD%94%EB%93%9C %EC%9E%91%EC%84%B1%3Cbr%3E%0A%3Cem%3E\n- \n &nbsp;&nbsp;&nbs\n@@ -197,33 +197,32 @@\n  %7B%3C/em%3E%3Cbr%3E%0A%3Cem%3E\n- \n &nbsp;&nbsp;&nbs\n@@ -297,17 +297,16 @@\n br%3E%0A%3Cem%3E\n- \n &nbsp;&n\n@@ -3502,39 +3502,24 @@\n adder%22%7B%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -3563,39 +3563,24 @@\n (done)%7B%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -3633,71 +3633,8 @@\n et()\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n .the\n@@ -3642,39 +3642,24 @@\n (done);%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -3674,34 +3674,24 @@\n );%3Cbr%3E%0A%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -3759,39 +3759,24 @@\n (done)%7B%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -3823,39 +3823,24 @@\n er(7,3)%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -3894,39 +3894,24 @@\n esult)%7B%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -3987,39 +3987,24 @@\n == 10);%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4037,39 +4037,24 @@\n nbsp;%7D)%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4097,39 +4097,24 @@\n (done);%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4129,34 +4129,24 @@\n );%3Cbr%3E%0A%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4210,39 +4210,24 @@\n ber%22, %7B%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4275,39 +4275,24 @@\n r(7,-3)%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4346,39 +4346,24 @@\n esult)%7B%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4438,39 +4438,24 @@\n  == 4);%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4488,39 +4488,24 @@\n nbsp;%7D)%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4548,39 +4548,24 @@\n (done);%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4580,34 +4580,24 @@\n );%3Cbr%3E%0A%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4633,39 +4633,24 @@\n (done)%7B%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4700,39 +4700,24 @@\n cleanup%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4759,31 +4759,16 @@\n ();%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&\n@@ -4785,31 +4785,16 @@\n ;%7D)%3Cbr%3E%0A\n-%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A\n %7D);%3C/cod\n",
      "json_metadata": "{\"tags\":[\"node\",\"js\",\"mocha\"],\"links\":[\"http://mochajs.org/\",\"http://stateofjs.com/2016/testing/\",\"http://chaijs.com/api/assert/\",\"https://crossbrowsertesting.github.io/login-form.html\",\"https://help.crossbrowsertesting.com/selenium-testing/frameworks/mocha/?_ga=2.150825782.1202929143.1525931692-1869093701.1525931692\",\"http://blog.jeonghwan.net/mocha/\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
2018/05/10 06:19:54
parent author
parent permlinknode
authoragainme
permlinknode-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js
titlenode.js : Mocha is a powerful and easy to use testing framework for Node.js
body@@ -1,15 +1,606 @@ %3Chtml%3E%0A +%3Cp%3E&nbsp;// descript : test %ED%95%A0 suit&nbsp;%3C/p%3E%0A%3Cp%3E%3Cem%3Edescribe('test suit', () =&gt; %7B%3C/em%3E%3C/p%3E%0A%3Cp%3E&nbsp;&nbsp;&nbsp;&nbsp;// it : %ED%85%8C%EC%8A%A4%ED%8A%B8 %EC%BD%94%EB%93%9C %EC%9E%91%EC%84%B1%3Cbr%3E%0A%3Cem%3E &nbsp;&nbsp;&nbsp;it('test name', () =&gt; %7B%3C/em%3E%3Cbr%3E%0A%3Cem%3E &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assert.equal(car.park(), 'stopped');%3C/em%3E%3Cbr%3E%0A%3Cem%3E &nbsp;&nbsp;&nbsp;%7D);%3C/em%3E%3Cbr%3E%0A%3Cbr%3E%0A%3Cem%3E%7D);%3C/em%3E%3C/p%3E%0A%3Cp%3E%3Cem%3E// before() : descript %EC%8B%A4%ED%96%89%EC%A0%84 %ED%95%9C%EB%B2%88 %EC%88%98%ED%96%89%3C/em%3E%3C/p%3E%0A%3Cp%3E%3Cem%3E// beforeEach() : %EB%AA%A8%EB%93%A0 descript %EC%8B%A4%ED%96%89%EC%A0%84 &nbsp;%EC%88%98%ED%96%89%3C/em%3E%3C/p%3E%0A%3Cp%3E%3Cem%3E// after() : descript %EC%8B%A4%ED%96%89%ED%9B%84 %ED%95%9C%EB%B2%88 %EC%88%98%ED%96%89%3C/em%3E%3C/p%3E%0A%3Cp%3E%3Cem%3E// afterEach() : %EB%AA%A8%EB%93%A0 descript %EC%8B%A4%ED%96%89%ED%9B%84 &nbsp;%EC%88%98%ED%96%89%3C/em%3E%3C/p%3E%0A%3Cp%3E%3Cbr%3E%3C/p%3E%0A%3Cp%3E%3Cbr%3E%3C/p%3E%0A %3Cp%3E&nbsp @@ -3506,32 +3506,42 @@ dder%22%7B%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -3582,32 +3582,42 @@ done)%7B%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -3664,32 +3664,42 @@ eset()%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -3739,32 +3739,42 @@ done);%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -3781,32 +3781,42 @@ sp;%7D);%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -3881,32 +3881,42 @@ done)%7B%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -3960,32 +3960,42 @@ r(7,3)%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4046,32 +4046,42 @@ sult)%7B%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4154,32 +4154,42 @@ = 10);%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4219,32 +4219,42 @@ bsp;%7D)%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4294,32 +4294,42 @@ done);%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4336,32 +4336,42 @@ sp;%7D);%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4432,32 +4432,42 @@ er%22, %7B%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4512,32 +4512,42 @@ (7,-3)%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4598,32 +4598,42 @@ sult)%7B%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4705,32 +4705,42 @@ == 4);%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4770,32 +4770,42 @@ bsp;%7D)%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4845,32 +4845,42 @@ done);%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4887,32 +4887,42 @@ sp;%7D);%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -4955,32 +4955,42 @@ done)%7B%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -5037,32 +5037,42 @@ leanup%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -5107,32 +5107,42 @@ one();%3Cbr%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -5156,16 +5156,26 @@ r%3E%0A%3Cbr%3E%0A +%3Cbr%3E%0A%3Cbr%3E%0A %7D);%3C/cod
json metadata{"tags":["node","js","mocha"],"links":["http://mochajs.org/","http://stateofjs.com/2016/testing/","http://chaijs.com/api/assert/","https://crossbrowsertesting.github.io/login-form.html","https://help.crossbrowsertesting.com/selenium-testing/frameworks/mocha/?_ga=2.150825782.1202929143.1525931692-1869093701.1525931692","http://blog.jeonghwan.net/mocha/"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22300323/Trx a287117061005a18af89fb2658e0e10e7dea34ef
View Raw JSON Data
{
  "trx_id": "a287117061005a18af89fb2658e0e10e7dea34ef",
  "block": 22300323,
  "trx_in_block": 22,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-10T06:19:54",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "node",
      "author": "againme",
      "permlink": "node-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js",
      "title": "node.js :  Mocha is a powerful and easy to use testing framework for Node.js",
      "body": "@@ -1,15 +1,606 @@\n %3Chtml%3E%0A\n+%3Cp%3E&nbsp;// descript : test %ED%95%A0 suit&nbsp;%3C/p%3E%0A%3Cp%3E%3Cem%3Edescribe('test suit', () =&gt; %7B%3C/em%3E%3C/p%3E%0A%3Cp%3E&nbsp;&nbsp;&nbsp;&nbsp;// it : %ED%85%8C%EC%8A%A4%ED%8A%B8 %EC%BD%94%EB%93%9C %EC%9E%91%EC%84%B1%3Cbr%3E%0A%3Cem%3E &nbsp;&nbsp;&nbsp;it('test name', () =&gt; %7B%3C/em%3E%3Cbr%3E%0A%3Cem%3E &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assert.equal(car.park(), 'stopped');%3C/em%3E%3Cbr%3E%0A%3Cem%3E &nbsp;&nbsp;&nbsp;%7D);%3C/em%3E%3Cbr%3E%0A%3Cbr%3E%0A%3Cem%3E%7D);%3C/em%3E%3C/p%3E%0A%3Cp%3E%3Cem%3E// before() : descript %EC%8B%A4%ED%96%89%EC%A0%84 %ED%95%9C%EB%B2%88 %EC%88%98%ED%96%89%3C/em%3E%3C/p%3E%0A%3Cp%3E%3Cem%3E// beforeEach() : %EB%AA%A8%EB%93%A0 descript %EC%8B%A4%ED%96%89%EC%A0%84 &nbsp;%EC%88%98%ED%96%89%3C/em%3E%3C/p%3E%0A%3Cp%3E%3Cem%3E// after() : descript %EC%8B%A4%ED%96%89%ED%9B%84 %ED%95%9C%EB%B2%88 %EC%88%98%ED%96%89%3C/em%3E%3C/p%3E%0A%3Cp%3E%3Cem%3E// afterEach() : %EB%AA%A8%EB%93%A0 descript %EC%8B%A4%ED%96%89%ED%9B%84 &nbsp;%EC%88%98%ED%96%89%3C/em%3E%3C/p%3E%0A%3Cp%3E%3Cbr%3E%3C/p%3E%0A%3Cp%3E%3Cbr%3E%3C/p%3E%0A\n %3Cp%3E&nbsp\n@@ -3506,32 +3506,42 @@\n dder%22%7B%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -3582,32 +3582,42 @@\n done)%7B%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -3664,32 +3664,42 @@\n eset()%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -3739,32 +3739,42 @@\n done);%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -3781,32 +3781,42 @@\n sp;%7D);%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -3881,32 +3881,42 @@\n done)%7B%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -3960,32 +3960,42 @@\n r(7,3)%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4046,32 +4046,42 @@\n sult)%7B%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4154,32 +4154,42 @@\n = 10);%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4219,32 +4219,42 @@\n bsp;%7D)%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4294,32 +4294,42 @@\n done);%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4336,32 +4336,42 @@\n sp;%7D);%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4432,32 +4432,42 @@\n er%22, %7B%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4512,32 +4512,42 @@\n (7,-3)%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4598,32 +4598,42 @@\n sult)%7B%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4705,32 +4705,42 @@\n == 4);%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4770,32 +4770,42 @@\n bsp;%7D)%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4845,32 +4845,42 @@\n done);%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4887,32 +4887,42 @@\n sp;%7D);%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -4955,32 +4955,42 @@\n done)%7B%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -5037,32 +5037,42 @@\n leanup%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -5107,32 +5107,42 @@\n one();%3Cbr%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -5156,16 +5156,26 @@\n r%3E%0A%3Cbr%3E%0A\n+%3Cbr%3E%0A%3Cbr%3E%0A\n %7D);%3C/cod\n",
      "json_metadata": "{\"tags\":[\"node\",\"js\",\"mocha\"],\"links\":[\"http://mochajs.org/\",\"http://stateofjs.com/2016/testing/\",\"http://chaijs.com/api/assert/\",\"https://crossbrowsertesting.github.io/login-form.html\",\"https://help.crossbrowsertesting.com/selenium-testing/frameworks/mocha/?_ga=2.150825782.1202929143.1525931692-1869093701.1525931692\",\"http://blog.jeonghwan.net/mocha/\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
2018/05/10 06:04:42
parent author
parent permlinknode
authoragainme
permlinknode-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js
titlenode.js : Mocha is a powerful and easy to use testing framework for Node.js
body@@ -2914,24 +2914,29 @@ adder%22%7B%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -2976,32 +2976,37 @@ dder(done)%7B%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -3052,24 +3052,29 @@ reset()%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -3113,32 +3113,37 @@ then(done);%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -3145,32 +3145,37 @@ p;&nbsp;%7D);%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -3235,32 +3235,37 @@ tion(done)%7B%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -3308,24 +3308,29 @@ er(7,3)%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -3380,32 +3380,37 @@ on(result)%7B%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -3482,24 +3482,29 @@ == 10);%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -3533,32 +3533,37 @@ sp;&nbsp;%7D)%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -3598,32 +3598,37 @@ then(done);%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -3630,32 +3630,37 @@ p;&nbsp;%7D);%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp;&nb @@ -3720,24 +3720,29 @@ ber%22, %7B%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -3790,24 +3790,29 @@ r(7,-3)%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -3866,24 +3866,29 @@ esult)%7B%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -3963,24 +3963,29 @@ == 4);%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -4018,24 +4018,29 @@ nbsp;%7D)%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -4083,24 +4083,29 @@ (done);%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -4115,24 +4115,29 @@ bsp;%7D);%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -4173,24 +4173,29 @@ (done)%7B%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -4245,24 +4245,29 @@ cleanup%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -4305,24 +4305,29 @@ done();%3Cbr%3E%0A +%3Cbr%3E%0A &nbsp;&nbsp @@ -4340,16 +4340,21 @@ ;%7D)%3Cbr%3E%0A +%3Cbr%3E%0A %7D);%3C/cod @@ -4579,24 +4579,24 @@ t easy!%3C/p%3E%0A - %3Ch2%3Ehttps:// @@ -4736,15 +4736,67 @@ br%3E%3C/p%3E%0A +%3Cp%3Ehttp://blog.jeonghwan.net/mocha/%3C/p%3E%0A%3Cp%3E%3Cbr%3E%3C/p%3E%0A %3C/html%3E
json metadata{"tags":["node","js","mocha"],"links":["http://mochajs.org/","http://stateofjs.com/2016/testing/","http://chaijs.com/api/assert/","https://crossbrowsertesting.github.io/login-form.html","https://help.crossbrowsertesting.com/selenium-testing/frameworks/mocha/?_ga=2.150825782.1202929143.1525931692-1869093701.1525931692","http://blog.jeonghwan.net/mocha/"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22300019/Trx e812f2ff8c2e1e226fd51741cc6840b5a645a0dc
View Raw JSON Data
{
  "trx_id": "e812f2ff8c2e1e226fd51741cc6840b5a645a0dc",
  "block": 22300019,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-10T06:04:42",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "node",
      "author": "againme",
      "permlink": "node-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js",
      "title": "node.js :  Mocha is a powerful and easy to use testing framework for Node.js",
      "body": "@@ -2914,24 +2914,29 @@\n adder%22%7B%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -2976,32 +2976,37 @@\n dder(done)%7B%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -3052,24 +3052,29 @@\n reset()%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -3113,32 +3113,37 @@\n then(done);%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -3145,32 +3145,37 @@\n p;&nbsp;%7D);%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -3235,32 +3235,37 @@\n tion(done)%7B%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -3308,24 +3308,29 @@\n er(7,3)%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -3380,32 +3380,37 @@\n on(result)%7B%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -3482,24 +3482,29 @@\n == 10);%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -3533,32 +3533,37 @@\n sp;&nbsp;%7D)%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -3598,32 +3598,37 @@\n then(done);%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -3630,32 +3630,37 @@\n p;&nbsp;%7D);%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp;&nb\n@@ -3720,24 +3720,29 @@\n ber%22, %7B%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -3790,24 +3790,29 @@\n r(7,-3)%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -3866,24 +3866,29 @@\n esult)%7B%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -3963,24 +3963,29 @@\n  == 4);%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4018,24 +4018,29 @@\n nbsp;%7D)%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4083,24 +4083,29 @@\n (done);%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4115,24 +4115,29 @@\n bsp;%7D);%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4173,24 +4173,29 @@\n (done)%7B%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4245,24 +4245,29 @@\n cleanup%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4305,24 +4305,29 @@\n done();%3Cbr%3E%0A\n+%3Cbr%3E%0A\n  &nbsp;&nbsp\n@@ -4340,16 +4340,21 @@\n ;%7D)%3Cbr%3E%0A\n+%3Cbr%3E%0A\n %7D);%3C/cod\n@@ -4579,24 +4579,24 @@\n t easy!%3C/p%3E%0A\n-\n %3Ch2%3Ehttps://\n@@ -4736,15 +4736,67 @@\n br%3E%3C/p%3E%0A\n+%3Cp%3Ehttp://blog.jeonghwan.net/mocha/%3C/p%3E%0A%3Cp%3E%3Cbr%3E%3C/p%3E%0A\n %3C/html%3E\n",
      "json_metadata": "{\"tags\":[\"node\",\"js\",\"mocha\"],\"links\":[\"http://mochajs.org/\",\"http://stateofjs.com/2016/testing/\",\"http://chaijs.com/api/assert/\",\"https://crossbrowsertesting.github.io/login-form.html\",\"https://help.crossbrowsertesting.com/selenium-testing/frameworks/mocha/?_ga=2.150825782.1202929143.1525931692-1869093701.1525931692\",\"http://blog.jeonghwan.net/mocha/\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
2018/05/10 05:58:48
parent author
parent permlinknode
authoragainme
permlinknode-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js
titlenode.js : Mocha is a powerful and easy to use testing framework for Node.js
body<html> <p>&nbsp;<a href="http://mochajs.org/"><strong>Mocha</strong></a> is a powerful and easy to use testing framework for Node.js. Its power comes from its flexibility. With support for all the popular test writing styles (BDD, TDD, Exports, QUnit or Require) and seemingly endless ways to output test results, it's no wonder Mocha has a <a href="http://stateofjs.com/2016/testing/"><strong>94% satisfaction rating</strong></a> among those who have used it.</p> <h2>Install and Setup</h2> <p>Unlike other frameworks, it's dead simple to get started with Mocha.To install Mocha globally:</p> <pre><code>$ npm install -g mocha</code></pre> <p>To install Mocha as a project dependency:</p> <pre><code>$ npm install --save-dev mocha</code></pre> <p>Once Mocha is installed, the only other setup you'll need to do is create a <code>test</code> directory in your project root. That's where Mocha will look for <code>*.js</code> (or, alternatively, <code>*.coffee</code>) files to run.</p> <h4>Optional: Install an Assertion library</h4> <p>You can use Node's built-in <code>assert()</code> function in your automated tests, but great tests require more nuanced assertions than <code>assert()</code> allows. If you have a favorite assertion library, go ahead and use it. If you don't, I recommend <a href="http://chaijs.com/api/assert/"><strong>Chai</strong></a>. Install it the same way we installed Mocha:Globally:</p> <pre><code>$ npm install -g chai</code></pre> <p>Or for your project:</p> <pre><code>$ npm install --save-dev chai</code></pre> <h2>Writing Tests</h2> <p>For this example we'll be testing a simple <a href="https://crossbrowsertesting.github.io/login-form.html">login page</a> to make sure that it rejects bad login attempts, and accepts good login attempts.Definitely take a look at the example test in this repo! It's heavily commented, so hopefully it's easy to read and understand.The basic structure of each test is as follows:</p> <ul> <li>Each test suite, or "feature", is enclosed in a <code>describe()</code> block.</li> <li>For each <code>describe()</code> block, you can call special methods <code>before()</code>, <code>after()</code>, <code>beforeEach()</code>, and <code>afterEach()</code>. Those methods will run before the whole suite, after the whole suite, before each test case, and after each test case, respectively.</li> <li>Tests are defined by calling <code>it()</code> inside a <code>describe()</code> block.</li> <li>Each function inside a <code>describe()</code> block will block execution of other tests until <code>done()</code> is called.</li> </ul> <p>Here's an example of a simple test of a function that adds two numbers together and returns a promise. Before each test we call a <code>reset</code> method on the adder. We also have a <code>cleanUp</code> function at the bottom to where we would put any test cleanup code.</p> <pre><code>describe("number adder"{<br> &nbsp;&nbsp;&nbsp;beforeEach(function resetAdder(done){<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numberAdder.reset()<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.then(done);<br> &nbsp;&nbsp;&nbsp;});<br> &nbsp;&nbsp;&nbsp;it("returns the sum of two positive numbers", function(done){<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numberAdder(7,3)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.then(function(result){<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assert(result == 10);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.then(done);<br> &nbsp;&nbsp;&nbsp;});<br> &nbsp;&nbsp;&nbsp;it("returns the sum of a positive and negative number", {<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numberAdder(7,-3)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.then(function(result){<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assert(result == 4);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.then(done);<br> &nbsp;&nbsp;&nbsp;});<br> &nbsp;&nbsp;&nbsp;after(function cleanUp(done){<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// any test cleanup<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done();<br> &nbsp;&nbsp;&nbsp;})<br> });</code></pre> <p>Take a look at <code>login.js</code> and you'll see a very similar structure.</p> <h2>Running tests</h2> <p>To run your tests, just navigate to the root project folder and run <code>$ mocha</code>. It's that easy!</p> <h2>https://help.crossbrowsertesting.com/selenium-testing/frameworks/mocha/?_ga=2.150825782.1202929143.1525931692-1869093701.1525931692</h2> <p><br></p> </html>
json metadata{"tags":["node","js","mocha"],"links":["http://mochajs.org/","http://stateofjs.com/2016/testing/","http://chaijs.com/api/assert/","https://crossbrowsertesting.github.io/login-form.html","https://help.crossbrowsertesting.com/selenium-testing/frameworks/mocha/?_ga=2.150825782.1202929143.1525931692-1869093701.1525931692"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22299901/Trx 6217aca9a0660ccd1fcd50868ee4ae7d9006266d
View Raw JSON Data
{
  "trx_id": "6217aca9a0660ccd1fcd50868ee4ae7d9006266d",
  "block": 22299901,
  "trx_in_block": 19,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-10T05:58:48",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "node",
      "author": "againme",
      "permlink": "node-js-mocha-is-a-powerful-and-easy-to-use-testing-framework-for-node-js",
      "title": "node.js :  Mocha is a powerful and easy to use testing framework for Node.js",
      "body": "<html>\n<p>&nbsp;<a href=\"http://mochajs.org/\"><strong>Mocha</strong></a> is a powerful and easy to use testing framework for Node.js. Its power comes from its flexibility. With support for all the popular test writing styles (BDD, TDD, Exports, QUnit or Require) and seemingly endless ways to output test results, it's no wonder Mocha has a <a href=\"http://stateofjs.com/2016/testing/\"><strong>94% satisfaction rating</strong></a> among those who have used it.</p>\n<h2>Install and Setup</h2>\n<p>Unlike other frameworks, it's dead simple to get started with Mocha.To install Mocha globally:</p>\n<pre><code>$ npm install -g mocha</code></pre>\n<p>To install Mocha as a project dependency:</p>\n<pre><code>$ npm install --save-dev mocha</code></pre>\n<p>Once Mocha is installed, the only other setup you'll need to do is create a <code>test</code> directory in your project root. That's where Mocha will look for <code>*.js</code> (or, alternatively, <code>*.coffee</code>) files to run.</p>\n<h4>Optional: Install an Assertion library</h4>\n<p>You can use Node's built-in <code>assert()</code> function in your automated tests, but great tests require more nuanced assertions than <code>assert()</code> allows. If you have a favorite assertion library, go ahead and use it. If you don't, I recommend <a href=\"http://chaijs.com/api/assert/\"><strong>Chai</strong></a>. Install it the same way we installed Mocha:Globally:</p>\n<pre><code>$ npm install -g chai</code></pre>\n<p>Or for your project:</p>\n<pre><code>$ npm install --save-dev chai</code></pre>\n<h2>Writing Tests</h2>\n<p>For this example we'll be testing a simple <a href=\"https://crossbrowsertesting.github.io/login-form.html\">login page</a> to make sure that it rejects bad login attempts, and accepts good login attempts.Definitely take a look at the example test in this repo! It's heavily commented, so hopefully it's easy to read and understand.The basic structure of each test is as follows:</p>\n<ul>\n  <li>Each test suite, or \"feature\", is enclosed in a <code>describe()</code> block.</li>\n  <li>For each <code>describe()</code> block, you can call special methods <code>before()</code>, <code>after()</code>, <code>beforeEach()</code>, and <code>afterEach()</code>. Those methods will run before the whole suite, after the whole suite, before each test case, and after each test case, respectively.</li>\n  <li>Tests are defined by calling <code>it()</code> inside a <code>describe()</code> block.</li>\n  <li>Each function inside a <code>describe()</code> block will block execution of other tests until <code>done()</code> is called.</li>\n</ul>\n<p>Here's an example of a simple test of a function that adds two numbers together and returns a promise. Before each test we call a <code>reset</code> method on the adder. We also have a <code>cleanUp</code> function at the bottom to where we would put any test cleanup code.</p>\n<pre><code>describe(\"number adder\"{<br>\n &nbsp;&nbsp;&nbsp;beforeEach(function resetAdder(done){<br>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numberAdder.reset()<br>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.then(done);<br>\n &nbsp;&nbsp;&nbsp;});<br>\n &nbsp;&nbsp;&nbsp;it(\"returns the sum of two positive numbers\", function(done){<br>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numberAdder(7,3)<br>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.then(function(result){<br>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assert(result == 10);<br>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})<br>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.then(done);<br>\n &nbsp;&nbsp;&nbsp;});<br>\n &nbsp;&nbsp;&nbsp;it(\"returns the sum of a positive and negative number\", {<br>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numberAdder(7,-3)<br>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.then(function(result){<br>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assert(result == 4);<br>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})<br>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.then(done);<br>\n &nbsp;&nbsp;&nbsp;});<br>\n &nbsp;&nbsp;&nbsp;after(function cleanUp(done){<br>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// any test cleanup<br>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done();<br>\n &nbsp;&nbsp;&nbsp;})<br>\n});</code></pre>\n<p>Take a look at <code>login.js</code> and you'll see a very similar structure.</p>\n<h2>Running tests</h2>\n<p>To run your tests, just navigate to the root project folder and run <code>$ mocha</code>. It's that easy!</p>\n<h2>https://help.crossbrowsertesting.com/selenium-testing/frameworks/mocha/?_ga=2.150825782.1202929143.1525931692-1869093701.1525931692</h2>\n<p><br></p>\n</html>",
      "json_metadata": "{\"tags\":[\"node\",\"js\",\"mocha\"],\"links\":[\"http://mochajs.org/\",\"http://stateofjs.com/2016/testing/\",\"http://chaijs.com/api/assert/\",\"https://crossbrowsertesting.github.io/login-form.html\",\"https://help.crossbrowsertesting.com/selenium-testing/frameworks/mocha/?_ga=2.150825782.1202929143.1525931692-1869093701.1525931692\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
againmepublished a new post: solidity
2018/05/10 05:45:45
parent author
parent permlinksolidity
authoragainme
permlinksolidity
titlesolidity
body<html> <p>Ethereum dev language</p> <p><br></p> <p>npm install --save mocha ganache-cli [email protected]</p> <p><br></p> </html>
json metadata{"tags":["solidity"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22299640/Trx 493b04d3a905c34eec24746e6c2e22550c758a6c
View Raw JSON Data
{
  "trx_id": "493b04d3a905c34eec24746e6c2e22550c758a6c",
  "block": 22299640,
  "trx_in_block": 14,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-10T05:45:45",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "solidity",
      "author": "againme",
      "permlink": "solidity",
      "title": "solidity",
      "body": "<html>\n<p>Ethereum dev language</p>\n<p><br></p>\n<p>npm install --save mocha ganache-cli [email protected]</p>\n<p><br></p>\n</html>",
      "json_metadata": "{\"tags\":[\"solidity\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
2018/05/09 00:36:39
parent author
parent permlinkjavascript
authoragainme
permlinkjavascript-get-array-from-url-querystring
titlejavascript : get array from url querystring
body<html> <p>javascript : get array from url querystring</p> <p><br></p> <p>/*</p> <p>&nbsp;* Returns a map of querystring parameters</p> <p>&nbsp;*&nbsp;</p> <p>&nbsp;* Keys of type &lt;fieldName&gt;[] will automatically be added to an array</p> <p>&nbsp;*</p> <p>&nbsp;* @param String url</p> <p>&nbsp;* @return Object parameters</p> <p>&nbsp;*/</p> <p>function getParams(url) {</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;var regex = /([^=&amp;?]+)=([^&amp;#]*)/g, params = {}, parts, key, value;</p> <p><br></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;while((parts = regex.exec(url)) != null) {</p> <p><br></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key = parts[1], value = parts[2];</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var isArray = /\[\]$/.test(key);</p> <p><br></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isArray) {</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;params[key] = params[key] || [];</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;params[key].push(value);</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else {</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;params[key] = value;</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;}</p> <p><br></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;return params;</p> <p>}</p> <p><br></p> <p>url = 'http://www.somewhere.com/index.html?field[]=history&amp;field[]=science&amp;field[]=math';</p> <p>getParams(url);</p> <p><br></p> </html>
json metadata{"tags":["javascript","array","url"],"users":["param","return"],"links":["http://www.somewhere.com/index.html?field"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22264661/Trx cc2757dacb14d568eaab60e19c3c8bb373f5f47c
View Raw JSON Data
{
  "trx_id": "cc2757dacb14d568eaab60e19c3c8bb373f5f47c",
  "block": 22264661,
  "trx_in_block": 12,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-09T00:36:39",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "javascript",
      "author": "againme",
      "permlink": "javascript-get-array-from-url-querystring",
      "title": "javascript : get array from url querystring",
      "body": "<html>\n<p>javascript : get array from url querystring</p>\n<p><br></p>\n<p>/*</p>\n<p>&nbsp;* Returns a map of querystring parameters</p>\n<p>&nbsp;*&nbsp;</p>\n<p>&nbsp;* Keys of type &lt;fieldName&gt;[] will automatically be added to an array</p>\n<p>&nbsp;*</p>\n<p>&nbsp;* @param String url</p>\n<p>&nbsp;* @return Object parameters</p>\n<p>&nbsp;*/</p>\n<p>function getParams(url) {</p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;var regex = /([^=&amp;?]+)=([^&amp;#]*)/g, params = {}, parts, key, value;</p>\n<p><br></p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;while((parts = regex.exec(url)) != null) {</p>\n<p><br></p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key = parts[1], value = parts[2];</p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var isArray = /\\[\\]$/.test(key);</p>\n<p><br></p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isArray) {</p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;params[key] = params[key] || [];</p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;params[key].push(value);</p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else {</p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;params[key] = value;</p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;}</p>\n<p><br></p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;return params;</p>\n<p>}</p>\n<p><br></p>\n<p>url = 'http://www.somewhere.com/index.html?field[]=history&amp;field[]=science&amp;field[]=math';</p>\n<p>getParams(url);</p>\n<p><br></p>\n</html>",
      "json_metadata": "{\"tags\":[\"javascript\",\"array\",\"url\"],\"users\":[\"param\",\"return\"],\"links\":[\"http://www.somewhere.com/index.html?field\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
2018/05/08 14:31:21
required auths[]
required posting auths["againme"]
idfollow
json["follow",{"follower":"againme","following":"andrewholloway","what":["blog"]}]
Transaction InfoBlock #22252555/Trx f6a2a5d9d8125fe21080c672de69a0170bf47244
View Raw JSON Data
{
  "trx_id": "f6a2a5d9d8125fe21080c672de69a0170bf47244",
  "block": 22252555,
  "trx_in_block": 13,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-08T14:31:21",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "againme"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"againme\",\"following\":\"andrewholloway\",\"what\":[\"blog\"]}]"
    }
  ]
}
ax3upvoted (1.00%) @againme / solidity
2018/05/04 05:25:45
voterax3
authoragainme
permlinksolidity
weight100 (1.00%)
Transaction InfoBlock #22126487/Trx 12d9f3631ae244b84c78b507cfee57dbe82f7df6
View Raw JSON Data
{
  "trx_id": "12d9f3631ae244b84c78b507cfee57dbe82f7df6",
  "block": 22126487,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-04T05:25:45",
  "op": [
    "vote",
    {
      "voter": "ax3",
      "author": "againme",
      "permlink": "solidity",
      "weight": 100
    }
  ]
}
againmepublished a new post: solidity
2018/05/04 05:25:33
parent author
parent permlinksolidity
authoragainme
permlinksolidity
titlesolidity
body<html> <p>Ethereum dev language</p> </html>
json metadata{"tags":["solidity"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #22126483/Trx 23e5a7defcb8111646e50e21923c64082c99c784
View Raw JSON Data
{
  "trx_id": "23e5a7defcb8111646e50e21923c64082c99c784",
  "block": 22126483,
  "trx_in_block": 29,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-04T05:25:33",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "solidity",
      "author": "againme",
      "permlink": "solidity",
      "title": "solidity",
      "body": "<html>\n<p>Ethereum dev language</p>\n</html>",
      "json_metadata": "{\"tags\":[\"solidity\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
2018/05/02 05:37:00
required auths[]
required posting auths["againme"]
idfollow
json["follow",{"follower":"againme","following":"nida-io","what":["blog"]}]
Transaction InfoBlock #22069125/Trx ee580b00e439609d8a3d4b376dcb0dbfc13d5548
View Raw JSON Data
{
  "trx_id": "ee580b00e439609d8a3d4b376dcb0dbfc13d5548",
  "block": 22069125,
  "trx_in_block": 16,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-02T05:37:00",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "againme"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"againme\",\"following\":\"nida-io\",\"what\":[\"blog\"]}]"
    }
  ]
}
2018/04/27 07:20:51
required auths[]
required posting auths["againme"]
idfollow
json["follow",{"follower":"againme","following":"etainclub","what":["blog"]}]
Transaction InfoBlock #21927238/Trx dd898dca352dbb7467b823dfc07c0cd7adebfd5d
View Raw JSON Data
{
  "trx_id": "dd898dca352dbb7467b823dfc07c0cd7adebfd5d",
  "block": 21927238,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-04-27T07:20:51",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "againme"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"againme\",\"following\":\"etainclub\",\"what\":[\"blog\"]}]"
    }
  ]
}
2018/02/02 10:59:45
required auths[]
required posting auths["againme"]
idfollow
json["follow",{"follower":"againme","following":"koreancrypter","what":["blog"]}]
Transaction InfoBlock #19515508/Trx 240baa3f385e78a53b91556283388600911dfbc3
View Raw JSON Data
{
  "trx_id": "240baa3f385e78a53b91556283388600911dfbc3",
  "block": 19515508,
  "trx_in_block": 50,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-02T10:59:45",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "againme"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"againme\",\"following\":\"koreancrypter\",\"what\":[\"blog\"]}]"
    }
  ]
}
againmefollowed @maa
2018/01/26 01:57:00
required auths[]
required posting auths["againme"]
idfollow
json["follow",{"follower":"againme","following":"maa","what":["blog"]}]
Transaction InfoBlock #19303254/Trx 10f68393ec827abf12275e15c67454407b50946a
View Raw JSON Data
{
  "trx_id": "10f68393ec827abf12275e15c67454407b50946a",
  "block": 19303254,
  "trx_in_block": 52,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-26T01:57:00",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "againme"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"againme\",\"following\":\"maa\",\"what\":[\"blog\"]}]"
    }
  ]
}
2018/01/19 05:37:18
required auths[]
required posting auths["againme"]
idfollow
json["follow",{"follower":"againme","following":"bkrinvest","what":["blog"]}]
Transaction InfoBlock #19106149/Trx 5605f852bd19ec6546b9961c32407af37df941a6
View Raw JSON Data
{
  "trx_id": "5605f852bd19ec6546b9961c32407af37df941a6",
  "block": 19106149,
  "trx_in_block": 22,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-19T05:37:18",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "againme"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"againme\",\"following\":\"bkrinvest\",\"what\":[\"blog\"]}]"
    }
  ]
}
2018/01/17 06:27:00
required auths[]
required posting auths["againme"]
idfollow
json["follow",{"follower":"againme","following":"musicholic","what":["blog"]}]
Transaction InfoBlock #19049564/Trx 50c58c96fea343f624ba7e045def3ba5044cddd6
View Raw JSON Data
{
  "trx_id": "50c58c96fea343f624ba7e045def3ba5044cddd6",
  "block": 19049564,
  "trx_in_block": 24,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-17T06:27:00",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "againme"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"againme\",\"following\":\"musicholic\",\"what\":[\"blog\"]}]"
    }
  ]
}
2018/01/17 06:24:42
required auths[]
required posting auths["againme"]
idfollow
json["follow",{"follower":"againme","following":"twinbraid","what":["blog"]}]
Transaction InfoBlock #19049518/Trx 73935f54e7e316fd2cb36e50f7d2c0aed109d47f
View Raw JSON Data
{
  "trx_id": "73935f54e7e316fd2cb36e50f7d2c0aed109d47f",
  "block": 19049518,
  "trx_in_block": 25,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-17T06:24:42",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "againme"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"againme\",\"following\":\"twinbraid\",\"what\":[\"blog\"]}]"
    }
  ]
}
2018/01/16 08:30:03
required auths[]
required posting auths["againme"]
idfollow
json["follow",{"follower":"againme","following":"admljy19","what":["blog"]}]
Transaction InfoBlock #19023229/Trx 517d7f46d4837b0acd71d2f0be4ec37fd77ed8c6
View Raw JSON Data
{
  "trx_id": "517d7f46d4837b0acd71d2f0be4ec37fd77ed8c6",
  "block": 19023229,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-16T08:30:03",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "againme"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"againme\",\"following\":\"admljy19\",\"what\":[\"blog\"]}]"
    }
  ]
}
2018/01/16 05:19:21
required auths[]
required posting auths["againme"]
idfollow
json["follow",{"follower":"againme","following":"chobocorin","what":["blog"]}]
Transaction InfoBlock #19019415/Trx 97ceeb3f7aff658f58374f9e58e85b23e1771b72
View Raw JSON Data
{
  "trx_id": "97ceeb3f7aff658f58374f9e58e85b23e1771b72",
  "block": 19019415,
  "trx_in_block": 17,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-16T05:19:21",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "againme"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"againme\",\"following\":\"chobocorin\",\"what\":[\"blog\"]}]"
    }
  ]
}
againmereceived 0.109 SBD, 0.026 SP author reward for @againme / qtum
2018/01/12 16:02:06
authoragainme
permlinkqtum
sbd payout0.109 SBD
steem payout0.000 STEEM
vesting payout43.008248 VESTS
Transaction InfoBlock #18917179/Virtual Operation #26
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 18917179,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 26,
  "timestamp": "2018-01-12T16:02:06",
  "op": [
    "author_reward",
    {
      "author": "againme",
      "permlink": "qtum",
      "sbd_payout": "0.109 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "43.008248 VESTS"
    }
  ]
}
againmereceived 0.004 SP curation reward for @hadam / qtum-2018-01-05
2018/01/12 13:11:24
curatoragainme
reward6.144071 VESTS
comment authorhadam
comment permlinkqtum-2018-01-05
Transaction InfoBlock #18913775/Virtual Operation #6
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 18913775,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 6,
  "timestamp": "2018-01-12T13:11:24",
  "op": [
    "curation_reward",
    {
      "curator": "againme",
      "reward": "6.144071 VESTS",
      "comment_author": "hadam",
      "comment_permlink": "qtum-2018-01-05"
    }
  ]
}
2018/01/09 19:41:45
parent authoragainme
parent permlink5eamua
authorcheetah
permlinkcheetah-re-againme5eamua
title
bodyHi! I am a robot. I just upvoted you! I found similar content that readers might be interested in: http://news.mk.co.kr/newsReadPrint.php?year=2011&no=335359
json metadata
Transaction InfoBlock #18835223/Trx f2120fa329c5bfb60c28ec625fa5a3e0bc0f9ce6
View Raw JSON Data
{
  "trx_id": "f2120fa329c5bfb60c28ec625fa5a3e0bc0f9ce6",
  "block": 18835223,
  "trx_in_block": 10,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-09T19:41:45",
  "op": [
    "comment",
    {
      "parent_author": "againme",
      "parent_permlink": "5eamua",
      "author": "cheetah",
      "permlink": "cheetah-re-againme5eamua",
      "title": "",
      "body": "Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:\nhttp://news.mk.co.kr/newsReadPrint.php?year=2011&no=335359",
      "json_metadata": ""
    }
  ]
}
2018/01/09 15:57:18
voteragainme
authordhy03196
permlink1-guide-for-charts-analysis-for-newbie
weight-10000 (-100.00%)
Transaction InfoBlock #18830736/Trx 6d8338bb7bd513560d3b34aca56738009819b302
View Raw JSON Data
{
  "trx_id": "6d8338bb7bd513560d3b34aca56738009819b302",
  "block": 18830736,
  "trx_in_block": 65,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-09T15:57:18",
  "op": [
    "vote",
    {
      "voter": "againme",
      "author": "dhy03196",
      "permlink": "1-guide-for-charts-analysis-for-newbie",
      "weight": -10000
    }
  ]
}
2018/01/09 15:53:48
required auths[]
required posting auths["againme"]
idfollow
json["follow",{"follower":"againme","following":"dhy03196","what":["blog"]}]
Transaction InfoBlock #18830666/Trx a7bd5914329f3693004d964c765db2cf7c0a14c3
View Raw JSON Data
{
  "trx_id": "a7bd5914329f3693004d964c765db2cf7c0a14c3",
  "block": 18830666,
  "trx_in_block": 12,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-09T15:53:48",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "againme"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"againme\",\"following\":\"dhy03196\",\"what\":[\"blog\"]}]"
    }
  ]
}
againmepublished a new post: 5eamua
2018/01/09 13:18:09
parent author
parent permlinkchart
authoragainme
permlink5eamua
title차트
body<html> <p>&nbsp;<a href="https://youtu.be/k2cVQbB6gO8">https://youtu.be/k2cVQbB6gO8</a> &nbsp;</p> <h2>볼린저밴드</h2> <p>기술적인 분석가들이 신뢰하는 도구시장에서 거래되는 회사의 주가는 하루도 빼먹지 않고 변한다. 주가는 그 회사의 실적과 영업경쟁력, 미래의 성장가능성은 물론 그 나라 경제상황과 글로벌 경제의 흐름까지 반영한다. 하지만 막상 하루하루 변하는 개별회사의 주가를 보면 그 흐름과 패턴을 찾기는 불가능에 가깝다. 어떤 주식이 회사 본래가치에서 고평가된 것인지, 저평가된 것인지도 모호하기 짝이 없다. 투자자들은 그래서 현재 주가수준이 어떤지를 판단하기 위해 여러 가지 기준을 원한다. 투자자 중 일부는 주가의 변동성과 흐름을 분석해 이를 지표로 삼기도 한다. 볼린저밴드는 이런 수요에서 1980년대 초반 존 볼린저(Jonh Bollinger)라는 투자전문가가 고안해 낸 지표를 말한다. 구체적으로는 주가의 변동이 <a href="http://dic.search.naver.com/search.naver?where=kdic&amp;sm=ncc_clk&amp;ie=utf8&amp;query=%ED%91%9C%EC%A4%80%EC%A0%95%EA%B7%9C%EB%B6%84%ED%8F%AC">표준정규분포</a> 함수에 따른다고 가정하고 주가를 따라 위아래로폭이 같이 움직이는 밴드를 만들어 주가를 그 밴드를 기준선으로 판단하고자 고안된 지표를 말한다.<br> </p> <p>볼린저밴드 공식 홈페이지는 볼린저밴드의 정의를 ‘1980년대 초반 존 볼린저가 개발한 기술적인 거래도구로 주식의 변동성 자체가 가변적이고, 일정하지 않다는 당시 시장상황에서 적합한 매매범위를 찾기 위해 만들어졌다’고 설명한다. 그래프의 모양과 추세를 보고 투자 여부 결정에 참고한다는 점에서 볼린저밴드는 기술적인 분석의 대표적인 도구로 평가된다.</p> <h4><strong>이동평균선, 상단밴드, 하단밴드로 구성</strong></h4> <p>볼린저밴드는 주가가 상한선과 하한선을 경계로 등락을 거듭하는 경향이 있다는 전제에서 출발한다. 이에 따라 주식 가격의 움직임을 포착할 수 있도록 설계된 중간의 <a href="http://dic.search.naver.com/search.naver?where=kdic&amp;sm=ncc_clk&amp;ie=utf8&amp;query=%EC%9D%B4%EB%8F%99%ED%8F%89%EA%B7%A0%EC%84%A0">이동평균선</a>과 상단밴드, 하단밴드로 구성된다. 이동평균선을 추세 중심선으로 사용하며 상, 하한 변동 폭은 추세 중심선의 표준편차로 계산한다. 이 때 이동평균과 표준편차의 관계는 통계학에서 일반적으로 활용되는 표준정규분포를 가정해 산출하게 된다. 볼린저밴드는 일정 기간 가격에 대한 변동성 측정치이므로 가격 변동이 심할 때에는 변동 폭이 좁아지는 자기 조정 기능을 발휘하기도 한다.세부적으로 볼린저밴드는 중심선인 ‘20일 이동평균선’과 중심선에서 ‘표준편차×2’를 더한 상한선, ‘표준편차×2’를 뺀 하한선으로 구성된다. 주가는 90% 이상 볼린저밴드 내에서 수렴과 발산을 반복하면서 움직이게 된다. 가격변동 띠의 폭이 이전보다 상대적으로 크거나, 큰 상태에서 줄어들 경우에는 볼린저밴드를 매도와 매수가 과도하게 집중된 상황을 반영하는 지표로 활용할 수 있다.볼린저밴드의 구성 &lt;출처: http://www.bollingerbands.com&gt;주가는 일정한 기간 동안 과매수나 과매도 상태가 될 수 있기 때문에 상대적으로 가격이 높거나 낮은지를 알면 매도와 매수시기를 가늠할 적기를 선별하는 데 도움이 된다. 볼린저밴드는 여기에 주가의 상대적인 가격 수준과 변동성을 확인할 수 있고, 가격 움직임이나 기타 지표들과 결합해 신호를 만들고 움직임을 예측하는 데도 도움을 준다.</p> <h4><strong>기술적인 분석가들이 가장 신뢰하는 도구</strong></h4> <p>보통 주식시장을 분석하는 수단에는 기본적 분석과 기술적 분석이 있다. 기술적 분석가는 주가 그래프를 보고 기본적 분석가는 기업의 재무제표를 본다. 기업의 모습과 기업의 주식 사이에는 분명 연관성이 있지만 주식이 그 기업은 아니며 기업 역시 주식이 아니다. 기술적 분석가들은 기본적 분석과 기술적인 분석법을 통합할 수 있는 분석수단으로 볼린저밴드를 제시한다. 볼린저밴드를 설정하기 위해 필요한 데이터가 주가와 거래량, 그리고 변동성이다. 주가와 거래량을 통해 기술적인 측면을 살핀다면 변동성에는 기업의 실질가치와 투자 심리가 반영된다. 때문에 이 둘을 결합한 볼린저밴드가 합리적 투자결정의 토대가 된다는 것이 기술적인 분석가들의 주장이다.</p> <h4><strong>존 볼린저가 충고하는 투자요령</strong></h4> <p>기술적인 분석을 선호하는 투자자들에게 볼린저밴드 투자기법은 광범위하게 사용되고 있다. 존 볼린저는 국내에도 출간된 ‘볼린저밴드 투자기법’을 통해 볼린저밴드를 활용한 핵심적인 투자기법 세가지를 공개한 바 있다.볼린저밴드를 고안한 투자전문가 존 볼린저 &lt;출처 : wikipedia&gt;첫 번째 투자기법은 밴드 자체의 폭이 수축하거나, 확장하는 변동성을 활용하는 것이다. 존 볼린저는 밴드 자체의 폭이 축소되면서 밀집구간을 거친 후에는 상단 밴드를 돌파할 때 주식을 사들이고, 하단 밴드에서 하향 이탈할 때 주식을 공매도하라고 충고한다. 두 번째 투자기법은 상단, 하단 밴드와 지표를 활용하는 추세 추종기법이다. 주가가 상단 밴드에 접근할 때 각종 지표들이 주가의 강세를 확증하면 매수하고, 주가가 하단 밴드에 접근할 때 지표가 주가의 약세를 확증하면 매도하는 방법이다. 마지막 기법은 반전기법으로 복수의 밴드 접촉과 지표를 활용한다. 주가가 상단 밴드를 여러 번 건드리는 반면 주가지표는 점진적 약세를 보일 때, 그리고 주가가 하단 밴드를 여러 번 건드리는 반면 지표는 점진적 강세를 보일 때 주가흐름의 반전을 예측할 수 있다. 볼린저는 저서를 통해 각 기법이 어떤 과정을 통해 개발되었는지를 밝히고 승률을 높이기 위한 최적의 설정 방법, 지표 선택 방법을 설명하고 있다.</p> <h4><strong>기술적 분석, 한계도 명확하다는 점 인지해야</strong></h4> <p>볼린저밴드를 기술적 분석과 기업 경영지표 분석의 통합 수단으로 추켜세우는 의견도 있지만 여전히 정규 투자이론을 따르는 축에서는 그 가치를 인정하는데 미온적이다. 차트의 움직임만으로 어떤 기업의 주식가치를 따지는 것 자체가 무리라는 얘기다. 한 연금펀드 운용자는 “볼린저밴드라는 말이 전문적인 투자용어로 보여도 사실은 증권방송 출연하는 분들이 근거로 내세우는 기술적인 지표분석의 도구에 불과하다”고 말했다. 이 운용자는 “결국 개인 투자자들은 이런 식의 차트 분석을 통한 단기투자에 매달리기보다는 기업의 본질가치를 보고 장기투자에 나서는 것이 좋다”고 충고했다.<strong>[네이버 지식백과]</strong> <a href="http://terms.naver.com/entry.nhn?docId=3571973">볼린저밴드</a> - 기술적인 분석가들이 신뢰하는 도구 (금융사전)&nbsp;</p> </html>
json metadata{"tags":["chart"],"links":["https://youtu.be/k2cVQbB6gO8","http://dic.search.naver.com/search.naver?where=kdic&sm=ncc_clk&ie=utf8&query=%ED%91%9C%EC%A4%80%EC%A0%95%EA%B7%9C%EB%B6%84%ED%8F%AC","http://dic.search.naver.com/search.naver?where=kdic&sm=ncc_clk&ie=utf8&query=%EC%9D%B4%EB%8F%99%ED%8F%89%EA%B7%A0%EC%84%A0","http://www.bollingerbands.com","http://terms.naver.com/entry.nhn?docId=3571973"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #18827554/Trx 821b63e41a4135d581749b7438d82dc340d875b6
View Raw JSON Data
{
  "trx_id": "821b63e41a4135d581749b7438d82dc340d875b6",
  "block": 18827554,
  "trx_in_block": 50,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-09T13:18:09",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "chart",
      "author": "againme",
      "permlink": "5eamua",
      "title": "차트",
      "body": "<html>\n<p>&nbsp;<a href=\"https://youtu.be/k2cVQbB6gO8\">https://youtu.be/k2cVQbB6gO8</a> &nbsp;</p>\n<h2>볼린저밴드</h2>\n<p>기술적인 분석가들이 신뢰하는 도구시장에서 거래되는 회사의 주가는 하루도 빼먹지 않고 변한다. 주가는 그 회사의 실적과 영업경쟁력, 미래의 성장가능성은 물론 그 나라 경제상황과 글로벌 경제의 흐름까지 반영한다. 하지만 막상 하루하루 변하는 개별회사의 주가를 보면 그 흐름과 패턴을 찾기는 불가능에 가깝다. 어떤 주식이 회사 본래가치에서 고평가된 것인지, 저평가된 것인지도 모호하기 짝이 없다. 투자자들은 그래서 현재 주가수준이 어떤지를 판단하기 위해 여러 가지 기준을 원한다. 투자자 중 일부는 주가의 변동성과 흐름을 분석해 이를 지표로 삼기도 한다. 볼린저밴드는 이런 수요에서 1980년대 초반 존 볼린저(Jonh Bollinger)라는 투자전문가가 고안해 낸 지표를 말한다. 구체적으로는 주가의 변동이 <a href=\"http://dic.search.naver.com/search.naver?where=kdic&amp;sm=ncc_clk&amp;ie=utf8&amp;query=%ED%91%9C%EC%A4%80%EC%A0%95%EA%B7%9C%EB%B6%84%ED%8F%AC\">표준정규분포</a> 함수에 따른다고 가정하고 주가를 따라 위아래로폭이 같이 움직이는 밴드를 만들어 주가를 그 밴드를 기준선으로 판단하고자 고안된 지표를 말한다.<br>\n</p>\n<p>볼린저밴드 공식 홈페이지는 볼린저밴드의 정의를 ‘1980년대 초반 존 볼린저가 개발한 기술적인 거래도구로 주식의 변동성 자체가 가변적이고, 일정하지 않다는 당시 시장상황에서 적합한 매매범위를 찾기 위해 만들어졌다’고 설명한다. 그래프의 모양과 추세를 보고 투자 여부 결정에 참고한다는 점에서 볼린저밴드는 기술적인 분석의 대표적인 도구로 평가된다.</p>\n<h4><strong>이동평균선, 상단밴드, 하단밴드로 구성</strong></h4>\n<p>볼린저밴드는 주가가 상한선과 하한선을 경계로 등락을 거듭하는 경향이 있다는 전제에서 출발한다. 이에 따라 주식 가격의 움직임을 포착할 수 있도록 설계된 중간의 <a href=\"http://dic.search.naver.com/search.naver?where=kdic&amp;sm=ncc_clk&amp;ie=utf8&amp;query=%EC%9D%B4%EB%8F%99%ED%8F%89%EA%B7%A0%EC%84%A0\">이동평균선</a>과 상단밴드, 하단밴드로 구성된다. 이동평균선을 추세 중심선으로 사용하며 상, 하한 변동 폭은 추세 중심선의 표준편차로 계산한다. 이 때 이동평균과 표준편차의 관계는 통계학에서 일반적으로 활용되는 표준정규분포를 가정해 산출하게 된다. 볼린저밴드는 일정 기간 가격에 대한 변동성 측정치이므로 가격 변동이 심할 때에는 변동 폭이 좁아지는 자기 조정 기능을 발휘하기도 한다.세부적으로 볼린저밴드는 중심선인 ‘20일 이동평균선’과 중심선에서 ‘표준편차×2’를 더한 상한선, ‘표준편차×2’를 뺀 하한선으로 구성된다. 주가는 90% 이상 볼린저밴드 내에서 수렴과 발산을 반복하면서 움직이게 된다. 가격변동 띠의 폭이 이전보다 상대적으로 크거나, 큰 상태에서 줄어들 경우에는 볼린저밴드를 매도와 매수가 과도하게 집중된 상황을 반영하는 지표로 활용할 수 있다.볼린저밴드의 구성 &lt;출처: http://www.bollingerbands.com&gt;주가는 일정한 기간 동안 과매수나 과매도 상태가 될 수 있기 때문에 상대적으로 가격이 높거나 낮은지를 알면 매도와 매수시기를 가늠할 적기를 선별하는 데 도움이 된다. 볼린저밴드는 여기에 주가의 상대적인 가격 수준과 변동성을 확인할 수 있고, 가격 움직임이나 기타 지표들과 결합해 신호를 만들고 움직임을 예측하는 데도 도움을 준다.</p>\n<h4><strong>기술적인 분석가들이 가장 신뢰하는 도구</strong></h4>\n<p>보통 주식시장을 분석하는 수단에는 기본적 분석과 기술적 분석이 있다. 기술적 분석가는 주가 그래프를 보고 기본적 분석가는 기업의 재무제표를 본다. 기업의 모습과 기업의 주식 사이에는 분명 연관성이 있지만 주식이 그 기업은 아니며 기업 역시 주식이 아니다. 기술적 분석가들은 기본적 분석과 기술적인 분석법을 통합할 수 있는 분석수단으로 볼린저밴드를 제시한다. 볼린저밴드를 설정하기 위해 필요한 데이터가 주가와 거래량, 그리고 변동성이다. 주가와 거래량을 통해 기술적인 측면을 살핀다면 변동성에는 기업의 실질가치와 투자 심리가 반영된다. 때문에 이 둘을 결합한 볼린저밴드가 합리적 투자결정의 토대가 된다는 것이 기술적인 분석가들의 주장이다.</p>\n<h4><strong>존 볼린저가 충고하는 투자요령</strong></h4>\n<p>기술적인 분석을 선호하는 투자자들에게 볼린저밴드 투자기법은 광범위하게 사용되고 있다. 존 볼린저는 국내에도 출간된 ‘볼린저밴드 투자기법’을 통해 볼린저밴드를 활용한 핵심적인 투자기법 세가지를 공개한 바 있다.볼린저밴드를 고안한 투자전문가 존 볼린저 &lt;출처 : wikipedia&gt;첫 번째 투자기법은 밴드 자체의 폭이 수축하거나, 확장하는 변동성을 활용하는 것이다. 존 볼린저는 밴드 자체의 폭이 축소되면서 밀집구간을 거친 후에는 상단 밴드를 돌파할 때 주식을 사들이고, 하단 밴드에서 하향 이탈할 때 주식을 공매도하라고 충고한다. 두 번째 투자기법은 상단, 하단 밴드와 지표를 활용하는 추세 추종기법이다. 주가가 상단 밴드에 접근할 때 각종 지표들이 주가의 강세를 확증하면 매수하고, 주가가 하단 밴드에 접근할 때 지표가 주가의 약세를 확증하면 매도하는 방법이다. 마지막 기법은 반전기법으로 복수의 밴드 접촉과 지표를 활용한다. 주가가 상단 밴드를 여러 번 건드리는 반면 주가지표는 점진적 약세를 보일 때, 그리고 주가가 하단 밴드를 여러 번 건드리는 반면 지표는 점진적 강세를 보일 때 주가흐름의 반전을 예측할 수 있다. 볼린저는 저서를 통해 각 기법이 어떤 과정을 통해 개발되었는지를 밝히고 승률을 높이기 위한 최적의 설정 방법, 지표 선택 방법을 설명하고 있다.</p>\n<h4><strong>기술적 분석, 한계도 명확하다는 점 인지해야</strong></h4>\n<p>볼린저밴드를 기술적 분석과 기업 경영지표 분석의 통합 수단으로 추켜세우는 의견도 있지만 여전히 정규 투자이론을 따르는 축에서는 그 가치를 인정하는데 미온적이다. 차트의 움직임만으로 어떤 기업의 주식가치를 따지는 것 자체가 무리라는 얘기다. 한 연금펀드 운용자는 “볼린저밴드라는 말이 전문적인 투자용어로 보여도 사실은 증권방송 출연하는 분들이 근거로 내세우는 기술적인 지표분석의 도구에 불과하다”고 말했다. 이 운용자는 “결국 개인 투자자들은 이런 식의 차트 분석을 통한 단기투자에 매달리기보다는 기업의 본질가치를 보고 장기투자에 나서는 것이 좋다”고 충고했다.<strong>[네이버 지식백과]</strong> <a href=\"http://terms.naver.com/entry.nhn?docId=3571973\">볼린저밴드</a> - 기술적인 분석가들이 신뢰하는 도구 (금융사전)&nbsp;</p>\n</html>",
      "json_metadata": "{\"tags\":[\"chart\"],\"links\":[\"https://youtu.be/k2cVQbB6gO8\",\"http://dic.search.naver.com/search.naver?where=kdic&sm=ncc_clk&ie=utf8&query=%ED%91%9C%EC%A4%80%EC%A0%95%EA%B7%9C%EB%B6%84%ED%8F%AC\",\"http://dic.search.naver.com/search.naver?where=kdic&sm=ncc_clk&ie=utf8&query=%EC%9D%B4%EB%8F%99%ED%8F%89%EA%B7%A0%EC%84%A0\",\"http://www.bollingerbands.com\",\"http://terms.naver.com/entry.nhn?docId=3571973\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
againmepublished a new post: 7uc3z7
2018/01/09 13:10:09
parent author
parent permlinkcryptocurrency
authoragainme
permlink7uc3z7
title국가 통화 별 비트코인 거래량
body<html> <p><br></p> <p>&nbsp;</p> <h1>국가 통화 별 비트코인 거래량</h1> <p>https://www.coinhills.com/ko/market/currency/</p> <p><br></p> </html>
json metadata{"tags":["cryptocurrency","bitcoin"],"links":["https://www.coinhills.com/ko/market/currency/"],"app":"steemit/0.1","format":"html"}
Transaction InfoBlock #18827394/Trx 712b05342f457217b66e20369c242ba0c26df469
View Raw JSON Data
{
  "trx_id": "712b05342f457217b66e20369c242ba0c26df469",
  "block": 18827394,
  "trx_in_block": 56,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-09T13:10:09",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "author": "againme",
      "permlink": "7uc3z7",
      "title": "국가 통화 별 비트코인 거래량",
      "body": "<html>\n<p><br></p>\n<p>&nbsp;</p>\n<h1>국가 통화 별 비트코인 거래량</h1>\n<p>https://www.coinhills.com/ko/market/currency/</p>\n<p><br></p>\n</html>",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"bitcoin\"],\"links\":[\"https://www.coinhills.com/ko/market/currency/\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}"
    }
  ]
}
2018/01/09 09:08:33
parent author
parent permlinkxrp
authoragainme
permlink1-10-buy-ripple-xrp-in-india
title1월 10일 리플 인도에 상장 : Buy Ripple (XRP) in India
body<html> <p><a href="https://bitbns.com/ripple/">https://bitbns.com/ripple/</a></p> <p>Buy Ripple (XRP) in India</p> <p>Registrations for the flash sale are closed!</p> <p>However, you can still register to trade on Bitbns.</p> <p>Flash sale would be held on 10th January 2018 12PM.</p> <p>What is this about:</p> <p><br></p> </html>
json metadata{"tags":["xrp","ripple","india"],"app":"steemit/0.1","format":"html","links":["https://bitbns.com/ripple/"]}
Transaction InfoBlock #18822565/Trx f0aa2267209355d7030de53b27c62b4d427c8aed
View Raw JSON Data
{
  "trx_id": "f0aa2267209355d7030de53b27c62b4d427c8aed",
  "block": 18822565,
  "trx_in_block": 22,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-09T09:08:33",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "xrp",
      "author": "againme",
      "permlink": "1-10-buy-ripple-xrp-in-india",
      "title": "1월 10일 리플 인도에 상장 : Buy Ripple (XRP) in India",
      "body": "<html>\n<p><a href=\"https://bitbns.com/ripple/\">https://bitbns.com/ripple/</a></p>\n<p>Buy Ripple (XRP) in India</p>\n<p>Registrations for the flash sale are closed!</p>\n<p>However, you can still register to trade on Bitbns.</p>\n<p>Flash sale would be held on 10th January 2018 12PM.</p>\n<p>What is this about:</p>\n<p><br></p>\n</html>",
      "json_metadata": "{\"tags\":[\"xrp\",\"ripple\",\"india\"],\"app\":\"steemit/0.1\",\"format\":\"html\",\"links\":[\"https://bitbns.com/ripple/\"]}"
    }
  ]
}

Account Metadata

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

Auth Keys

Owner
Single Signature
Public Keys
STM7pgjmar8MGNAexwMbbcdiF9yH3F9ndws9BX2S92B8zPB9WA44j1/1
Active
Single Signature
Public Keys
STM8LYBeNGjLML7ZRHVGtQ152idpREuDofPMbfiY5rpTeX3d5r7u81/1
Posting
Single Signature
Public Keys
STM6u3y2pE1gHjJ6n64Kf33ZbAb3NS3VEfWLvvFR1ykQ8b1aiS4FA1/1
Memo
STM6RuTo8g8Xpwioc2XHxjqpCECDE1dtDifBvgheGbk2NgEfAGLr8
{
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM7pgjmar8MGNAexwMbbcdiF9yH3F9ndws9BX2S92B8zPB9WA44j",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM8LYBeNGjLML7ZRHVGtQ152idpREuDofPMbfiY5rpTeX3d5r7u8",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM6u3y2pE1gHjJ6n64Kf33ZbAb3NS3VEfWLvvFR1ykQ8b1aiS4FA",
        1
      ]
    ]
  },
  "memo": "STM6RuTo8g8Xpwioc2XHxjqpCECDE1dtDifBvgheGbk2NgEfAGLr8"
}

Witness Votes

0 / 30
No active witness votes.
[]