A simple tool to check who muted you! / 查询谁把你拉黑了

On Steemit, you may mute the people you do not like,and can check who are muted by you at the setting field. For example, I muted three users for test purpose 😀

在STEEMIT,你可以拉黑不喜欢的人,比如SPAMER啥的,你可以在SETTING区域查看你都把谁拉黑了。比如为了测试,我随便拉黑了三个用户(对不起了,稍后会恢复),在设置区域可以看到如下内容:

But,I can not find out where to check that who muted me, This may not make sense, but it is interesting!😀 So I wrote a script to do this,very simple, but easy to use. Let me introduce it to you.

但是,遗憾的是在STEEMIT,却没法查到都谁把我拉黑了。这数据或许没啥意义,但是很有意思,不是吗?所以我写了个脚本来查查看,很简陋的脚本,但是好用。让我来简单介绍一下。


The URL

http://steemit.serviceuptime.net/mute.php
随便找个空间把脚本放上去,起名啥的大家就别纠结了。

The Input Form / 输入表单

Input the username you want to check, for example, your steemit account, and then click Check Button, you will get the list who mute you.

输入区域很简单,一个输入框加一个提交按钮。输入你先检查的用户名,比如你的steemit账户,然后点 Check,就会得到拉黑你的人的名单。

The Results Filed / 结果区域


So sad, a lot of users do not like me. 😭

如果输入无误,并且有人拉黑你,就会显示一个列表,左侧是用户名,右侧是对应用户的steemit主页,你可以点击直达。嗯,好多人不喜欢我,好伤感。


Are you curious about who doesn’t like you? Check it now!
是否好奇谁不喜欢你? 赶快来查查吧。


This page is synchronized from the post: A simple tool to check who muted you! / 查询谁把你拉黑了

介绍一个我几年前做的小工具 EzDig

和网络打交道就很难离开域名解析系统,至少目前看起来是这个样子的。

我在这篇文章

中简单地介绍过域名解析系统:

简单的讲,互联网的主机靠IP来区分,要访问一台主机上的服务(HTTP、 FTP、EMAIL、DATABASE等)我们首先要知道对方的IP地址。但是互联网的主机千千万,抽象的IP地址根本无法记忆,而域名就是给这个地址起一个好记的名字。所以,我们就可以通过www.baidu.com这样的域名来访问到百度,通过www.taobao.com这样的域名来访问到淘宝。

而从域名到IP的过程,就是域名解析,是由域名解析服务器(Name Server)来完成的。

其实DNS不单单可以干域名到IP的事情,还可以干好多事情,比如CNAME,给域名整个别名,MX设置域名的邮件交换记录等等。Windows比较常用的和DNS相关当属nslookup了,当时使用起来相当不便,尤其是对我这种记忆力不好的人而言。大多时候涉及域名解析的,我都用ping来测试,但是ping只能测试A记录,并且涉及DNS缓存的问题。Linux系统上dig的功能就强大好多了,但是一则要去Linux下操作,二则要命令行还是不如图形界面方便。于是大概在2011年前后,我就有个想法,写一个桌面域名查询工具,方便自己使用。

说起来容易,做起来很难,尤其是对我这种编程菜鸟而言。
域名解析涉及好多内容,为了实现我想要的功能,我仔细学习了下列文档

(实际上学习的比这要多,基本上每条记录都涉及一个RFC,但是时隔太久,都忘记了)

然后不断尝试和调试,终于实现了我期望的诸多功能。

外观有点难看

支持的查询类型

为了方便,我在程序中内置了一些DNS服务器

我将这个程序发布到http://download.cnet.com 以及 http://www.softpedia.com

从这两个站,大概过来一万次左右的下载吧。
并且收到一些热心用户的反馈,比如一个国外大学计算机系的教授,用我这个程序给学生们讲解DNS系统,并给我发了一封邮件说我界面上的recuse拼错了,应该是recurse,看了一下,我还没有改过来,惭愧。另外最兴奋的莫过于softpedia.com 的编辑,给我的软件写了个Review,并给了这款软件五星好评,真是受宠若惊啊。

还写了几篇博客,介绍一些相关内容

在这之后把这款软件升级到了3.0版本,加入了DNSSEC,递归查询等支持

但是后来忙于工作,就懒得去两个下载站发布了,博客也懒得写了。

一晃过了5年多,好多技术细节我都忘记的一干二净了。
但是这个工具基本每天都会用到。

前两天看IPFS的介绍,号称要颠覆HTTP,还有个IPNS子系统,域名解析系统也要被颠覆啦。吓得我赶紧写篇文章记录一下。以后回忆起来,可以和人说,在那个还用HTTP以及DNS的上古时代,我还曾经做过一个垃圾小工具呢。😭


This page is synchronized from the post: 介绍一个我几年前做的小工具 EzDig

请MSSQL高手指点一下JSON的问题

@jubi 小友今天与我探讨如何使用STEEMSQL查询符合条件的帖子用了哪些标签。

有关STEEMSQL的介绍以及一些我学习的记录,可以参考:

读取标签

他问的这个问题,我并不以为是个难题,所以爽快的答应了下来。

在STEEMDATA中TAGS数据已经解析好了,我们可以直接拿到,我以为STEEMSQL也是如此,结果却并不是这么回事。Comments数据表中不存在TAGS字段,仅有json_metadata字段:
json_metadata varchar 0 -1
这篇帖子为例, json_metadata数据是这个样子

在数据库中作为字符串存储。

所以要把tags数据拿出来,我们需要对这部分数据进行解析,幸运的是SQL Server 从2016版本开始,加入了JSON的支持。
详情可以参考: JSON Functions (Transact-SQL)
https://docs.microsoft.com/en-us/sql/t-sql/functions/json-functions-transact-sql

经过对上述网页以及其内相关链接的学习,我觉得我们应该用
JSON_QUERY Extracts an object or an array from a JSON string.

cur.execute("SELECT title, JSON_QUERY(json_metadata, '$.tags') as tags FROM Comments WHERE author= 'oflyhigh' and title like N'%区块链%'")


哪里不对?
我期望返回tags应该类似['literature', 'poem', 'cn'],这样的列表
结果却是: '["literature","poem","cn"]'这样的字符串!吐血!

看这个文档:
https://docs.microsoft.com/en-us/sql/t-sql/functions/json-query-transact-sql
上边介绍说的是:Extracts an object or an array from a JSON string.
底下却又说:Returns a JSON fragment of type nvarchar(max).

例子中,返回的也是列表

到底应该返回啥,我有点方。

但是问题总得要解决是吧,SQL我尝试了各种方法实在没辙,我想到的方法就是在程序这端解决,比如这样:

更进一步

这算是解答了 @jubi 小友的问题, 但是依然有以下疑问。

  • 如何用SQL直接返回tags列表, 例如:['literature', 'poem', 'cn']
  • 如果想查询包含指定tag的文章,该如何操作?比如查询包括cn tag 的文章。

因为json_metadata是字符串存储,所以对于问题二, jubi小友提出使用like '%cn%'或者正则匹配等方式,这也不失为一个好办法。或者我们还可以用JSON_QUERY(json_metadata, '$.tags') like '%cn%'缩小搜索范围,但是能否有精确匹配的查询方法呢?如果JSON_QUERY返回的是列表,我或许可以想些办法试试,但是返回的是字符串,我只好跪了。

期望各位程序大牛, SQL大牛不吝赐教,不胜感激。

参考文章


This page is synchronized from the post: 请MSSQL高手指点一下JSON的问题

我怀念有一年的夏天, 一场大雨把你留在我身边

哈哈哈,被骗进来了吧,原谅我又标题党了一把。图也是网上搜的啦,图文无关,标题党当然要配图文无关的图喽。


话说天气预报早早就说今天有雨,结果一整天那也没去,临近傍晚,闲的实在无聊,合计带孩子去生鲜超市转转,弄点大鱼大肉补补。生鲜超市离家不远,步行也就是15分钟多说,尽管天阴沉着,但是它已经阴沉一天了,我速去速回,速战速决,应该不会这么巧这段时间下雨吧。

于是带着孩子,出发!外面虽然阴天,但是不显闷热,出来转转真好啊。路上一个初中生模样的小孩子和我打招呼,叔叔好,现在的小孩多乖多有礼貌啊,我想了半天也没想起这是谁家的小娃娃。还有一个美女和我擦肩而过,我不由得想起那句佛说:“前世五百次的回眸才换来今生的擦肩而过”,我回眸回眸回眸再回眸,也许来世就会擦出火花呢,谁知道呢,哈哈!小区门口的管家房漆上了新颜色,看起来更加漂亮了。美女保安大姐帮我刷开小区门,还敬了一个礼,我和她说,不用这么客气。总之这一路心情好极了。

走了大概五分之四的路程,生鲜超市已经遥遥在望了,突然大雨猝不及防的下了起来。估算了一下路途往回跑肯定不如前进来的快,冲吧,带着孩子一路狂奔,冲进超市。这雨,该不会是给我准备的吧?不管咋说,总算到达目的地了,我买买买。牛肉看起来不错,来二斤;鸡翅看起来很新鲜,来二斤;黄花鱼据说是新进来的,来两条;水果也都很新鲜诱人,买买买买;哦,再来点鸡蛋。一转眼,战绩颇丰,然而,雨不但没有停却越下越大了。好多人和我一样没有带雨具,还有一些带着雨伞,因为雨太大而继续在超市内等待。我也等等吧

等啊等啊,等了大概半个小时,孩子表示不耐烦了,我也很无聊啊,雨一点也没有见停的迹象,一直持续高强度的泼水。突然很恐慌,这要是下一宿,也不是不可能的吧。叫人来送雨伞,别闹了,这么大的雨,雨伞根本没用; 叫人开车来接我,估计人到车上也就湿透了。这也不行那也不行,难道要在超市过夜?这可不是一个好办法。于是我学聪明的一休,开动脑筋,欸,有了!超市最不缺的就是购物塑料袋了,花五毛钱,买了两大一小三个塑料袋,先用小塑料袋把手机保护好,这可是比命还重要的东西啊。然后两个大塑料袋套我和孩子脑袋上,准备出发!

超市的水果摊的收银小妹乐不可支,提醒我说不行啊,这样容易浇感冒。我说没问题,家近,回家马上冲个热水澡,问题不大。于是在所有人掺杂羡慕、嫉妒、嘲讽、担忧等诸多表情的目光中,我和孩子冲进大雨里。这雨真大啊,瞬间我就失身了,哦,不对,是湿身了。孩子兴奋得不得了,扶着脑袋上的塑料袋开心的奔跑,然后和我说爸爸,下大雨真好玩啊,太好玩了,我好喜欢。我则一手扶着脑袋上的塑料袋,一手拎着我战果辉煌的购物包,我的牛肉、我的鸡肉、我的黄花鱼、我的水果、我的鸡蛋等等等。宁愿自己浇湿,也要保护好战果!

在历经艰苦卓绝堪比两万五千里长征的与大雨奋斗,我们终于到家了。还好,我的战果都保护的很好,鸡蛋也一个都没有碎。冲了一个热水澡,好舒服。孩子和我说,好喜欢在大暴雨里玩,呃,我其实没有那么喜欢。


或许许多年以后,孩子会想起来有一年的夏天,我带着他在大雨里狂奔的那一瞬吧。那时候,他还会不会一如现在这般喜欢在雨里玩呢?


This page is synchronized from the post: 我怀念有一年的夏天, 一场大雨把你留在我身边

测试一下Viewly / Test Viewly

昨天,继 @heimindanger 发布DTube之后, @furion 马上发布了Viewly 的最新进展,相关详情见:

这种百花齐放百家争鸣的现象非常好,会极大促进STEEM区块链的发展,更多功能,更多精彩。这两个平台都是基于STEEM以及IPFS,我粗略了解一下,可谓各有千秋吧。两个平台的站点:

今天我测试了一下使用Viewly.


使用流程

上传界面非常简洁


上传很迅速


上传完成


发布需要STEEM用户账户和POSTING 私钥


发布成功


来看一下帖子,有预览图片和正常的文字
点击预览图片可以进入到view.ly的对应播放页面


播放试试


实现机制

略微探索了一下它是如何使用STEEM区块链保存数据的

就是将一些数据存储在json_metadata区域,播放的时候再来steem区块链中读回这部分数据

至于IPFS部分,我就一点也不懂啦。

结论

从上传视频到播放,整个流程都很顺畅。
简洁的风格和STEEMIT很搭
不足之处就是没法在STEEMIT上直接播放,如果能像Youtube的视频能在STEEMIT文章中直接插入和播放就完美啦。

至于Comments没有同步过去之类的小问题,不算啥问题,估计解决起来是相当简单的啦。

附,我上传的测试视频
费玉清莫文蔚合唱《当你老了》,旋律动人,歌词感人。
https://steemit.com/cn/@oflyhigh.test/5659--2017-08-13--test-viewly-dang-ni-lao-liao


This page is synchronized from the post: 测试一下Viewly / Test Viewly

使用pymssql以及STEEMSQL的一点经验

昨天写了个STEEMSQL相关的帖子

主要介绍了如何安装pymssql以及用中文关键字查询数据
因为我对MSSQL以及pymssql都不熟悉,所以使用过程中遇到了很多问题,限于篇幅,昨天没有过多讲述,今天整理一下,希望学习pymssql或者想使用STEEMSQL的朋友少走一些弯路。

查询所有数据库名 / Query all database names

昨天我们帖子中说了
SteemSQL 官网地址: http://steemsql.com/
但是很遗憾上边的链接信息不全,没有Database的信息

其实这不是大问题,因为数据库信息是可以自行获取的,查询语句如下:
SELECT Name FROM Master..SysDatabases ORDER BY Name

示例代码

1
2
3
4
5
6
import pymssql
conn = pymssql.connect(host ="sql.steemsql.com",user="steemit",password="steemit", charset="utf8")
cur = conn.cursor()
cur.execute("SELECT Name FROM Master..SysDatabases ORDER BY Name")
rows = cur.fetchall()
for row in rows: print(row[0])

结果如下:

1
2
3
DBSteem
master
tempdb

好了,DBSteem就是我们要的数据库啦。

(测试了一下,不选择数据库,居然也可以执行正常的查询,比如查询Comments表下的数据,莫非有默认设置?)

查询数据库中所有数据表 / Query all data tables in the database

我们知道了DBSteem是我们要用到的数据库,但是这个库下边都有哪些表呢?

查询语句如下:
SELECT Name FROM DatabaseName..SysObjects Where XType='U' ORDER BY Name

  • XType=’U’:表示所有用户表;
  • XType=’S’:表示所有系统表;

试着查一下DBSteem下的用户表
cur.execute("Select Name From DBSteem..SysObjects Where XType='U' order By Name")
(查询当前数据库可以省略路径DBSteem..)

结果如下:

Accounts
Blocks
Comments
Tokens
Transactions
TxAccountCreates
TxAccountRecovers
TxAccountUpdates
TxAccountWitnessProxies
TxAccountWitnessVotes
TxClaimRewardBalances
TxComments
TxCommentsOptions
TxConverts
TxCustoms
TxDelegateVestingShares
TxDeleteComments
TxEscrowApproves
TxEscrowDisputes
TxEscrowReleases
TxEscrowTransfers
TxFeeds
TxLimitOrders
TxPows
TxTransfers
TxVotes
TxWithdraws
TxWithdrawVestingRoutes
TxWitnessUpdates
VOAuthorRewards
VOCurationRewards
VOFillConvertRequest
VOFillOrders
VOFillVestingWithdraws
VOInterests
VOShutdownWitnesses

这样我们就知道哪些表可用啦。

查询数据表中的字段 / Query fields in a data table

知道数据库了,知道数据表了,我们还要知道表中都有哪些字段,才能方便我们查询,不是吗?

查询语句如下:
SELECT Name FROM DatabaseName..SysColumns WHERE id=Object_Id('TableName')

来试试Comments表
cur.execute("SELECT Name FROM DBSteem..SysColumns WHERE id=Object_Id('Comments')")
(查询当前数据库下的表可以省略路径DBSteem..)

结果如下:

abs_rshares
active
active_votes
allow_curation_rewards
allow_replies
allow_votes
author
author_reputation
author_rewards
beneficiaries
body
body_language
body_length
cashout_time
category
children
children_abs_rshares
created
curator_payout_value
depth
dirty
ID
json_metadata
last_payout
last_update
max_accepted_payout
max_cashout_time
mode
net_rshares
net_votes
parent_author
parent_permlink
pending_payout_value
percent_steem_dollars
permlink
promoted
reblogged_by
replies
reward_weight
root_comment
root_title
title
total_payout_value
total_pending_payout_value
total_vote_weight
TS
url
vote_rshares

查询数据表中的字段详细信息 / Query fields details in a data table

有了上述基础,我们可以进一步查询字段的详细信息
TxComments表为例:
cur.execute("SELECT SysColumns.Name,SysTypes.Name,SysColumns.IsNullable,SysColumns.Length FROM SysColumns, SysTypes WHERE SysColumns.XUserType = SysTypes.XUserType AND SysColumns.Id = object_id('TxComments')")

结果如下:

1
2
3
4
5
6
7
8
9
10
ID              int             0       4
tx_id int 0 4
author varchar 0 50
permlink varchar 0 512
parent_author varchar 0 50
parent_permlink varchar 0 512
title nvarchar 0 -1
body nvarchar 0 -1
json_metadata varchar 0 -1
timestamp datetime 0 8

结论 / Conclusions

我们探讨了如何通过SQL语句

  • 查询数据库名 / Query all database names
  • 查询数据库中所有数据表 / Query all data tables in the database
  • 查询数据表中的字段 / Query fields in a data table
  • 查询数据表中的字段详细信息 / Query fields details in a data table

通过了解这些信息,便于我们更好的实现我们的查询程序。
图形界面的程序,应该都会内置这些功能,大家不想深入了解的话,直接使用图形界面程序最方便了。


以上内容仅供参考,如有错漏欢迎指正。


This page is synchronized from the post: 使用pymssql以及STEEMSQL的一点经验

Your browser is out-of-date!

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

×