用程序收取指定账户的收益 / Claim rewards from the specified account by scripts

在好久之前,我曾写过一篇文章How to claim your rewards automatically? / 如何自动收取你的收益,这个脚本很简单,我将其设置到crontab里,帮我自动Claim每天的奖励。


(图源 :pixabay)

虽然这个脚本工作良好,但是偶尔我也需要手动claim一下账户的收益,以往steemit网站和steemit钱包在一起的时候,我只需登录网站然后进入钱包页面,点一下Claim就好。

可是自从steemit网站和steemit钱包分离,这个操作就变得相当繁琐,我要重新登录一下钱包网站然后输入密码,再进行操作。

所以我简单改造了一下之前的脚本,让其更适合在命令行使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python
import click
from steem import Steem

@click.command()
@click.argument('account')

def claim_reward(account):
steem=Steem()
try:
user_info = steem.get_account(account)
reward_sbd = float(user_info['reward_sbd_balance'].split(' ')[0])
reward_steem= float(user_info['reward_steem_balance'].split(' ')[0])
reward_vesting = float(user_info['reward_vesting_balance'].split(' ')[0])
reward_sp = float(user_info['reward_vesting_steem'].split(' ')[0])

if reward_sbd > 0 or reward_steem > 0 or reward_vesting > 0:
steem.claim_reward_balance(account = account)
print(f"{account} Claimed rewards: {reward_steem} STEEM {reward_sbd} SBD {reward_sp} STEEM POWER")
else:
print('No rewards need to be claimed: {}'.format(account))
except:
print("Error occured!")
raise

if __name__ == "__main__":
claim_reward()

使用起来极其简单:

./claim.py oflyhigh

与之前的脚本相比,这个会简单的打印出收取到的奖励的数量,比如:

如果没有奖励可以收取,也会提示:

另外,一些相关技术背景以及如何设置steem-python以及私钥等内容,请参考文末链接,我就不再赘述了。

编码水平有限,如有谬误,请及时指正,深表谢意。

相关链接


Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh and click VOTE

Vote @oflyhigh via Steemconnect
Thank you!

This page is synchronized from the post: ‘用程序收取指定账户的收益 / Claim rewards from the specified account by scripts’

自给自足小菜园

虽然我比较懒,几乎没怎么打理我的菜园,导致它杂草丛生几近荒芜,但是菜也产出了不少。

目前看起来,蔬菜基本上够我们每天食用的啦,随便拍一些,得瑟一下。

其实还有黄瓜、苦苣、生菜、小葱、青蒜、白菜等,不过长得太难看,就不拍啦。

最后这个小南瓜现在还不能吃,不过实在是太漂亮了,忍不住一起发上来,哈哈。


Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh and click VOTE

Vote @oflyhigh via Steemconnect
Thank you!

This page is synchronized from the post: ‘自给自足小菜园’

每天进步一点点: 将node.js 应用绑定到80端口的方法

历尽千辛万苦,我终于将node.js的应用运行了起来,看起来貌似一切正常的样子。

可是新的问题来了,别人的网站都直接可以通过域名访问,并且一般都是80或者443(HTTPS)端口,而我这个是8080端口又是怎么回事?又该如何解决呢?


(图源 :pixabay)

直接换端口的方式肯定是行不通的啦,因为Linux下是不允许普通用户应用绑定特权端口(0至1023)的,那就要想别的方法了。

iptables转发

方法之一是使用iptables转发,以前做过类似的操作,执行下列指令即可:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

当然,除此之外,要确定已经配置了允许转发:

sudo vi /etc/sysctl.conf

在其中将net.ipv4.ip_forward = 0修改为net.ipv4.ip_forward = 1,然后执行如下指令使其生效:

sudo sysctl -p

Nginx

另外一种方法是使用Nginx。

如果还没有安装Nginx,那么可以使用如下指令安装:

sudo apt-get install nginx

安装完成之后,浏览器中直接访问IP,可以看到默认站点已经生效。

接下来我们创建一个简单的配置文件:

sudo vi /etc/nginx/sites-available/myapp

大致内容如下:

1
2
3
4
5
6
7
8
9
server {
listen 80;
server_name myapp.com;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://127.0.0.1:8080";
}
}

接下来在sites-enabled目录下创建指向我们配置文件的软链接

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/myapp

还有删除指向默认配置文件的软链接

sudo rm /etc/nginx/sites-enabled/default

重启Nginx,使我们的配置文件激活

sudo service nginx restart

再次在浏览器中直接访问IP,啊哈,我们的应用正常显示啦(80端口)。

其它方法

除了上述两个办法以外,还有一些其它方法可以达成此目标,我了解到的有如下可行办法:

  • setcap
  • authbind
  • SSH转发

因为nginx很好地满足了我的需求,我就不折腾啦,感兴趣的朋友自己测试啦。

相关链接


Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh and click VOTE

Vote @oflyhigh via Steemconnect
Thank you!

This page is synchronized from the post: ‘每天进步一点点: 将node.js 应用绑定到80端口的方法’

乌云

昨天新闻媒体、物业管家以及朋友圈好友各种转发推送冰雹红色预警信息。

说是晚上将会出现直径2厘米左右的强冰雹天气,同时可能伴有短时大风、强降水等强对流天气,让大家减少玩出,注意安全。

朋友喊我出去喝茶聊天,我断然拒绝,说一会大雹子砸一脑袋包,被朋友们一通鄙视。

在家等了半天,这大雨大雹子也没来,我最终还是决定去朋友那小坐,当然了,伞一定是要带的,以免真下雹子了。

出来的时候发现天空的乌云果然看起来很恐怖,貌似大雨冰雹下到别的区域了。

在朋友那坐了快到10点,这雹子也没下来,倒是半夜时候狂风暴雨加闪电来袭,听听雷声雨声,感觉还蛮好的,哈哈,这雹子没落自己脑袋上就好。


Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh and click VOTE

Vote @oflyhigh via Steemconnect
Thank you!

This page is synchronized from the post: ‘乌云’

每天进步一点点:让node.js 应用一直运行的方法

这两天和一个node.js应用较劲,其实我这玩意我的外行中外行,七窍通了六窍——一窍不通,不过慢慢学呗。


(图源 :pixabay)

昨天好不容易把程序运行起来了,浏览器也可以访问了,大松了一口气,可是早晨起来再一试,怎么访问不了啦?再一想,这也合理,我的ssh终端窗口都死掉了,程序当然一起死掉啦。

但是我又不能一直开着终端窗口啊,那如何才能让node.js程序一直运行呢?平时遇到这样的情况,我常用的方法有nohup以及screen等,想必应该也好用,让我来试试。

nohup

nohup 使用起来很简单了,只需在执行的指令之前加上nohup即可。

比如待执行的命令为:node app.js 那么使用nohup来运行的指令如下:

nohup node app.js

执行后会提示:

nohup: ignoring input and appending output to ‘nohup.out’

执行后试了一下浏览器访问,一切正常。关掉ssh窗口,再试浏览器访问,擦,访问不到了,说明使用nohup是不可行的。

(网上有人用nohup执行node.js程序没任何问题,所以不成功的原因可能和我运行的程序有关,懒得深究了)

screen

既然nohup失败了,我只好寄希望于screen了。

screen使用起来超级简单,先用如下命令开一个虚拟窗口

screen

然后正常执行命令即可

node app.js

用浏览器测试访问,一起正常,关闭SSH终端窗口再测试访问,一切正常,说明使用screen让node.js一直运行是可行的。

forever

网上搜索较为常用的方式是使用forever,使用之前需要先安装forever,一般是选择全局安装

sudo npm install -g forever

因为我不打算全局使用,所以只安装到项目目录:

npm install forever

然后使用如下指令运行:

node_modules/forever/bin/forever start app.js

然而关掉终端窗口后,浏览器浏览器依旧可以正常访问,看来这个是行得通的。

PM2

另外一种更高级的方式据说是PM2,全局安装的方式如下:

sudo npm install pm2 -g

我还是安装在项目目录内:

npm install pm2

启动应用:

node_modules/pm2/bin/pm2 start api.js

关闭SSH终端窗口测试浏览器访问,一切正常。据说这个PM2还支持很多高级功能,比如说聚簇模式(Cluster Mode: Node.js Load Balancing & Zero Downtime Reload),这个暂时就不测试啦,感兴趣的同学自己去文末链接里探索吧。

相关链接


Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh and click VOTE

Vote @oflyhigh via Steemconnect
Thank you!

This page is synchronized from the post: ‘每天进步一点点:让node.js 应用一直运行的方法’

试用共享电动车

最近发现路上多了好多蓝白相间的哈啰共享电动车,看起来挺有意思,甚至朋友们短距离出行都不开车了,改骑共享电动车了。


(图源 :百度图片)

昨天下午外出,原本打算搭出租车回来,等车的时候发现周边好多哈啰共享电动车,突发奇想何不试试共享电动车呢?

用支付宝扫开了一辆,骑上去试试,发现操作起来还是很简单的,即可以当普通自行车,又可以拧右手车把内侧的转盘来提供助力。

美滋滋地骑上路,当我把电动助力(油门)开启到最大时,发现这电动车最大的速度也没我骑自行车快呢,想想也是,毕竟安全第一,再有这个是按时常收费的,如果太快岂不是少赚了?😳

我一路骑到小区门口,停好打算锁车,结果提示我这个地方不允许停车,必须停到他们所谓的P点,否则就要收15元的调度费,擦,那岂不是比打车还贵多了?

找了一下,最近的停车点(P点),在马路对面,距离我小区门口约七八十米的样子,哎,骑过去吧。老老实实骑过去,停好,软件中锁车走人,又多走几十米的冤枉路。/(ㄒoㄒ)/~~


(图源 :百度图片)

骑共享电动车回来,一共收费两元,这价格和空调公交一样,比普通公交还贵,速度还慢并且还晒得要死,亏大啦。


Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh and click VOTE

Vote @oflyhigh via Steemconnect
Thank you!

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

×