获取STEEM区块链数据的几种方式

STEEMIT网站以及工具等

从STEEM区块链获取数据最常用的方式,莫过于访问STEEMIT.COM网站了。在这个网站上,我们可以按照类目(tag)以及不同排序(new,hot,trending,promoted)来查看帖子,并且可以进行发帖、点赞、关注他人等操作。可以说STEEMIT可以满足大部分用户的大部分需求。

data-2723105_1280.jpg
(图源:pixabay)

除了STEEMIT.COM之外,STEEMD.COM也是我们常用的网站。STEEMD.COM被称作STEEM区块链浏览器,在这里我们可以查看STEEM区块链上发生的一切事情,并且可以查看很多STEEMIT上无法查到的信息。比如查看STEEM区块链的当前一些状态、查询某个指定区块内的所有操作、查询指定transaction、查询指定用户的信息、查询文章的点赞详细信息等等。

STEEMDB.COM是另外一个STEEM区块链浏览器,比STEEMD.COM功能要多一些,UI更友好一些。但是我还是比较喜欢简洁风格的STEEMD.COM.

除了上述站点,还有一些工具站,可以获得一些指定的信息,比如http://steemwhales.com/ 等等。
这里不一一列举了。

STEEM区块链的数据库表示

无论是STEEMIT、还是STEEMD、STEEMDB之类的站点,尽管用户可以获取数据,但是要将数据进行加工处理则非常不便。我看到有些用户采用从STEEMD或者STEEMDB抓取网页并进行分析的方式获取数据,着实佩服他们的毅力。说实话,差不多一年以前我也这么干过。😭

那么除了抓取网页,还有什么便捷的方式呢?答案是有的,那就是使用数据库

STEEM区块链的数据库表示,其实就是把区块链的数据装到数据库中。你可能会问,为何要这么做?这么做的原因很简单,方便查询。

我所知道的数据库有以下几个:

SteemData

提供者: @furion
数据库类型: MongoDB
首次发布贴见这里: Introducing SteemData - A Database Layer for STEEM
网址: https://steemdata.com/

SteemData hosted SBDS

提供者: @furion
数据库类型: MySQL
首次发布贴见这里: SteemData meets sbds - SQL Users Rejoice
网址: https://steemdata.com/sbds

Hive DB

提供者: @furion
数据库类型: MySQL
首次发布贴见这里: Upcoming: Hive DB
网址: https://steemdata.com/sbds

STEEMSQL

提供者: @arcange
数据库类型: MSSQL
首次发布贴见这里: [STEEMSQL.COM] A public SQL server database with all Steemit blockchain data
网址: http://steemsql.com/

AskSteem

提供者: @thekyle
数据库类型: 我不知道
首次发布贴见这里: Introducing AskSteem - A steem search engine
网址: https://www.asksteem.com/

asksteem原则上不是一个数据库,而是基于数据库的一个应用。但是用户可以使用它所提供的API进行一些高级的查询等。详情可以参考:
AskSteem: Search API Docs

几种数据库的简单评测

这些数据库&工具我基本都试用过,我个人一直比较喜欢SteemData,为了用明白这个数据库,还努力学习了MongoDB的用法,毕竟以前从未接触过。

可是SteemData 最近有些不太正常,总丢数据
https://api.steemdata.com/health
我与 @furion 沟通了一下,他说bug已经修复,希望早日正常吧。

至于 SteemData hosted SBDS ,从它发布之初我就试用过,一直寄予厚望,但是数据一直落后N久,不知何时能赶上。

STEEMSQL.COM 我在为 @jubi 查询 谷哥点名的时候用过几次

数据比较完整,算是比较大的优势。但是相对MongoDB而言,不够零活。

至于AskSteem 我用的比较少,还算很好用,深入的评价就做不出来了。

从STEEM区块链直接获取数据

除了上述方式,最简单粗暴的方式,当然是从STEEM区块链直接获取数据喽。

你可以自建节点,或者使用公共节点,然后就可以使用JSON API来查询数据了。具体方法STEEMIT上N多文章有讲,这里就不赘述啦。

从STEEM区块链直接获取数据的最大优点: 数据准确,不会有缺失或者篡改。
缺点是,现在API的查询功能还不是很完善,没法进行太复杂的查询。


This page is synchronized from the post: 获取STEEM区块链数据的几种方式

奇怪的梦

今天做了个很奇怪的梦。

spooky-2580619_1280.jpg
(图源:pixabay)

梦到我乘着一辆毛驴车,拉车的是一头非常可爱的小毛驴,特别听话。毛驴车悠闲地走在乡间的小路上,路两侧是一望无际的稻田,稻花的香气弥漫在空气中,心情无比舒畅。

看着身边的车辆纷纷疾驰而去,我突然觉得我的毛驴车太慢了,于是我就挥舞小鞭子,轻声喊:“驾、驾、驾”,于是我小毛驴开始撒开蹄子狂奔起来,超越一辆又一辆的汽车。然后马路不再是乡间的小路,变成的城市的柏油路,路两侧弥漫着淡淡稻花香的稻田,变成了冷冷冰冰钢筋混凝土的高楼。

donkey-2645860_1280.jpg
(图源:pixabay)

不知何时,我的毛驴和我的毛驴车也不见了。那种悠闲的、舒畅的心情变成了无比焦虑,因为我挚爱的人不理我了,我有种预感,如果我不去找她并做出挽留,那么我从此以后,我们将从亲密爱人变成陌路。

然后我和我的朋友骑自行车去找她,或许找到她之后,聊一聊能解开彼此的心结,让我们和好如初。可惜柏油路又变成泥泞的土路,自行车的车胎似乎没有充足气,总之骑起来是相当的吃力,我们艰难无比的前行。

我总觉这样并不是和办法,前路艰难又漫长无比,我觉得还是开车去或许会好一些。但是我找不到我的车停到哪里去了,于是场景又变成大雨滂沱的漆黑夜晚,我到处寻找我的汽车。直到我终于找到了它。

可是我还没有走近发动它,旁边的一辆汽车启动不小心撞到我的车,而后边就是几十米深的悬崖,于是很不幸我的车掉进悬崖,让后撞到一棵非常粗壮的大树上,燃起了熊熊大火。

photoshop-707102_1280.jpg
(图源:pixabay)

我非常庆幸,还好我没上车呢,不然岂不是要被活活烧死。大火很快被雨水浇熄灭,我去试了一下,这车居然还能发动。于是我发动车子,绕了一大圈从悬崖底下爬了上来。准备继续去找我挚爱的人。

可是上路之后,我发现,大火烧过的车,还真的挺难开的。车窗都被烧碎裂了,大雨直接拍在我的脸上。后视镜车灯之类的统统都烧没了,我一手擦拭脸上的雨水,一手握着烧的只剩铁圈的方向盘,在大雨的夜里,缓慢前行,因为我发现不管我如何踩油门,车速就是上不去。

身体极度疲倦、内心极度彷徨,前路在哪里?挚爱的人在何方?
在这个大雨滂沱的漆黑夜晚,开着烧的几乎只剩铁架子的破车,突然我很想哭。

light-574403_1280.jpg
(图源:pixabay)

雨更大了,风更猛了,然后——我醒了。

想想这个梦,这是什么乱七八糟的梦啊。
再想想现在,这是什么乱七八糟的人生啊!


This page is synchronized from the post: 奇怪的梦

微信公众号支持查询feed信息啦

上班,坐车,上厕所,晚上躺床上无聊,不要去刷微博刷朋友圈浪费时间啦,来刷STEEMIT吧。😀

想又省流量又快捷的知道我关注的朋友们有没有发表新文章?但是打开steemit.com 网页太慢太费流量,别着急,现在你有个新选择啦,关注微信公众号: steemit

输入@steemid?feed 或者@steemid?fd
就可以查看对应ID的feed列表中最新五篇文章啦。

Screenshot_2017-09-22-19-53-34.jpeg
(别人的STEEMIT朋友圈)


如何查询 / 查看自己的朋友圈

输入@steemid?feed@steemid?fd

例如:
@oflyhigh?fd

以下是我测试时返回的结果
Screenshot_2017-09-22-19-50-29.jpeg
由于国内网络的缘故,或者图片过于庞大,可能出现图片不显示或者加载慢的情况,这个问题暂时没啥办法

(想过在服务器端抓取图片,然后使用程序缩图,微信这边显示缩减后并放在自己服务器上的图像,但是由于服务器读取和处理图片也需要时间,而一旦时间太长,公众号就会返回错误,所以暂且作罢,等以后有精力在测试是否可行)


邪恶功能 / 查看别人的朋友圈

你有没有很好奇,别人的朋友圈都是啥样子?

以下是我偷偷看了一下别人的朋友圈,至于是谁的就不列出来啦,万一因为偷窥挨打呢?
Screenshot_2017-09-22-19-53-51.jpeg

题外话

现在无论是CN区还是全网,帖子越来越多啦,颇有些目不暇接的感觉,所以feed列表的重要性将会越来越高。 被别人关注(follow), 你的文章就会出现在对方的feed中。这样你的文章被对方查阅和点赞的机会就会大幅增高。

所以我们发文不要刷屏,就好像微信朋友圈的微商广告刷屏的,我是见一个屏蔽一个的。STEEMIT也是如此,希望大家被越来越多的人关注,而不是取消关注,更不是被拉黑(muted)哦。


公众号添加方法

  • 方式一:
    进入微信通讯录->点击公众号->点右上角加号->搜索steemit,关注即可。

  • 方式二:
    直接扫描以下二维码:

欢迎大家多提宝贵意见啊。


This page is synchronized from the post: 微信公众号支持查询feed信息啦

随便聊聊代码重构

代码重构

做为一个半吊子程序员,一直以来我写程序的第一原则都是先让其跑起来。所以在做一个新软件或者实现一个新功能的时候,为了实现功能,我往往无所不用其极,什么硬编码啊、各种全局变量啊,甚至传说中的GOTO语句,只要能迅速地实现功能,我才不管什么高内聚、低耦合啥的乱七八糟的原则呢。

为什么总是急于让程序或功能模块跑起来呢?我想大致是我不是很自信,有些东西,我不确定以我的能力能否实现,或者说以我所掌握的技术而言,是否具有可实现性。万一我规划了一个不可能的任务,然后按部就班的去规划去实现,最终发现有个无法逾越的高山,那样就悲催了,毕竟时间还是很珍贵的嘛。


(图源:pixabay)

当我看到代码运行起来,我的心里就会无比的踏实。比如说我做的PC收发短信的软件,我看到短信发出去了,或者通过命令行,我可以读出来短信了,这时候我就会确定,我的思路和方向至少是没有错误的,凭我的水平慢慢雕琢是可以实现的。这时候我都会考虑重构一下代码,这样便于自己维护(排除BUG以及添加新功能等)以及为了自己以后阅读(很多时候,自己写的代码过一段时间就看不懂了)

我重构最复杂的一款软件是前公司一款科学计算软件,这个软件因为一些授权的关系有两个版本:V1和V2。我解决V2版本存在的一些BUG,以及做一些优化等等。接手以后,我发现V1和V2版本的代码是混在一起的,通过无处不在的宏定义在编译时编译成两个版本。里边好多变量、类以及函数被V1和V2公用,但是因为V1和V2实现上的差异,一些V1上的函数用在V2上就会导致问题。

我和相关负责人沟通,打算对这款软件进行重构,当然第一步就是把V2版本拆分出来。这个公司是个化工公司,负责人是搞化工出身的,他们认为既然这个软件能跑只是有一些BUG,导致几百个测试用例中有数十个测试用例没法跑或者得出的结果不对,那么我们就针对这些用例逐一解决即可,去动软件的框架风险太大,而且浪费时间。

按他们的思路,我工作了一段时间,发现把自己搞得很累,有时候此处改了就会导致彼处出问题,调试的时候也极其麻烦,有时候调着V2,却发现程序跳进V1的库函数中去,总之身心俱疲。后来在没有人表示支持的情况下,我用了大概三天多,几乎不眠不休,将V2版本独立出来。

原本整套软件C++代码30多万行,我拆出来之后V2只有10万行。拆分之后,再去跑几百个测试用例,好多之前无法通过的用例,一下子都正常了。其它出问题的用例,我也可以很轻松的定位出出问题的地方,解决起来事半功倍。

这些都是很久以前的事啦,之所以又聊到代码重构,是发现我的微信公众号程序越来越复杂啦。然后因为代码太长太滥,导致我添加或者修改一些功能的时候,经常导致出错,比如说少写个括号,少写个;之类的。代码逻辑看起来也比较乱,着实愁人。

于是今天着手重新规划了一下代码,将底层、功能模块、接口等都独立出来,现在看起来好多了,维护起来也很方便。比如我添加一个音乐的功能,只需要短短几段代码就可以实现了,对原来的程序和逻辑不会造成任何影响。

另外公众号添加了关注欢迎语,以及帮助提示等等。

推荐好歌

顺便给大家推荐一首好听的歌

公众号中回复music,就可以看到了

其实说了这么多,主要就是为了继续推广一下公众号啦,我是不是很机智 😀

至于代码重构啥的,我真的讲不出来啥,让一个半吊子程序员讲这个,有点难度,哈哈。


公众号添加方法

  • 方式一:
    进入微信通讯录->点击公众号->点右上角加号->搜索steemit,关注即可。

  • 方式二:
    直接扫描以下二维码:

欢迎大家多提宝贵意见啊。


This page is synchronized from the post: 随便聊聊代码重构

微信公众号支持查询SP委派/代理(SP delegation)信息啦!

SP委派 (SP delegation)简介

Steem 硬分叉 0.18 (HF 0.18 ) 之后多了个新功能,叫做 SP代理/委派 (SP delegation)

  • delegator 委托人: 将股权委派的账户
  • delegatee 受托者: 接收股权委派的账户

委托人将股权(vesting_shares)委派给受托人,股权(vesting shares)仍由原始账户(委托人)所有,但是投票权、投票收益以及带宽分配等权益被转移(委派)给受托者。


(图源:pixabay)

查询SP委派/代理(SP delegation)的意义

一: 查询别人的SP代理名单

大家都知道 ned 代理给一些作者很多SP,你想知道详细的名单吗? 想知道名单中是否有你吗?

二: 查询自己的SP代理名单

@justyy 和 @shenchensucc 弄了个CN区的最低保障系统,详情可以参考

其中一个重要的步骤就是参与者代理SP给 @justyy 或者将来的公共账户。对于参与者而言。查查自己将SP代理给谁了以及代理出去了多少,或者有助于妥善安排资产。

如何查询

输入 @steemid?dg@steemid?delegations就可以开始查询啦。

@oflyhigh?dg

比如,查询我都将SP代理给了谁,分别是多少?

@ned?dg

看看 @ned 都将SP代理给了谁,分别是多少?

@dapeng

听说 @dapeng 给 @justyy 代理了好多SP


这才是真爱啊!

其它说明

说明一

系统内实际上叫的是vesting delegations, 实际上代理过去的和收到的都是vesting shares,STEEM POWER是vesting shares的表现形式,但是有所不同。

比如我代理给 aaaa 账户4142028.451502 VESTS,代理时,计算下来可能是 2000 SP, 过了2个月,VEST还是4142028.451502, 折算成SP可能是2010 SP啦。
(以上数据非实测数据)

说明二

微信公众号有返回数据长度的限制,据说是2048字节。

所以当返回数据内容过多,则公众号会返回如下信息:

当然了,这种情况属于少数,原则上我可以通过减少显示的项目,比如说不显示时间,不显示VESTS来回避这个问题,但是这样又对大多数情况不友好。所以如果你遇到上述错误,那就是这个用户将SP代理给N多用户。


公众号添加方法

  • 方式一:
    进入微信通讯录->点击公众号->点右上角加号->搜索steemit,关注即可。

  • 方式二:
    直接扫描以下二维码:

欢迎大家多提宝贵意见啊。


This page is synchronized from the post: 微信公众号支持查询SP委派/代理(SP delegation)信息啦!

微信公众号支持查询内部市场信息啦

在之前的文章中,我介绍过一些内部市场的信息。


(图源:pixabay)

其实内部市场真的是很好玩哦,比如可以将文章收益的SBD购买成STEEM然后POWER UP,还可以通过低买高卖赚取差价,最重要的是内部市场交易,没有手续费!!!

说了这些,你一定心动了吧,心动不如行动,内部市场投资交易搞起来!(当然我不会告诉你我做了个投资策略再跑,已经帮我亏了好多SBD😭)

好吧,跑题了,无论去购买STEEM来POWER UP,还是做自动交易来赚钱,你可能都非常关心内部市场的价格,比如我本人就非常关心。然后呢?打开网页,进入Market页面,等啊等啊,等了好久,才会见到页面刷新出来,而这个时候的价格是不是最新,我无从得知。就算不是最新也无所谓,但是漫长的等待实在是忍受不了!(当然,可能是国内网速和国际出口问题)

现在,这些都不是问题啦,公众号:steemit 支持查询内部市场信息啦。

查询内部市场报价

输入?ticker或者?tk, 查询内部市场报价

示例如下:

其中:

  • Bid: 亦即Highest bid, 买单中出价最高的
  • Ask: 亦即Lowest ask, 卖单中叫价最低的

查询市场订单信息

输入?orderbook或者?ob, 查询内部订单信息

效果等同于:

由于手持设备屏幕受限,所以仅简单显示买单和卖单各五组信息

简要说明

关于买和卖。可以简单的理解成

  • 提供SBD,想得到STEEM的行为为买。
  • 提供STEEM,想得到SBD的行为为卖。

顺便再贴一遍我对ASK和BID的理解

  • Ask 是要价,亦即出售
  • Bid是出价,亦即购买
  • Highest bid 买单中出价最高的
  • Lowest ask 卖单中叫价最低的

公众号添加方法

  • 方式一:
    进入微信通讯录->点击公众号->点右上角加号->搜索steemit,关注即可。

  • 方式二:
    直接扫描以下二维码:

欢迎大家多提宝贵意见啊。


This page is synchronized from the post: 微信公众号支持查询内部市场信息啦

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×