Dydx使用c++下单签名 教程

dydx python下单发现耗时了150ms
定位源码发现是签名耗时了90ms

垃圾python,官方说可以用c++的签名
弄了一晚上,终于编译出来了

不熟练Linux的劝退

编译:

  1. 下载并解压
    https://github.com/starkware-libs/crypto-cpp

  2. sudo apt install golang-go

  3. ./presubmit.sh


坑1:nodejs版本太低,编译失败
升级:
sudo npm install n -g
sudo n stable
hash -r


坑2:gmock不存在,gmock最新版本还编译失败,CNM
下载并解压
https://github.com/google/googletest/tree/release-1.8.0

安装:
./travis.sh
cmake ./CMakeLists.txt
make
sudo make install


苏慕白 发布于  2023-4-23 20:06 

必胜方法,矩阵堆量 教程

0x1 问题

今天不讲量化,来聊聊其他的

铁废柴一年到头也想不明白,那些几万人用的程序,几百万人关注的自媒体账号
到底是怎么做出来的啊

为什么我发一百个视频才赚100块钱
我要怎么才可以过上小康生活?

0x2 答案

矩阵,堆数量
万物一切问题都可以靠堆数量来解决

废柴一个视频能赚一块钱,那如果他一天发1000个视频呢?
废柴一个闲鱼号一天能赚10元,那如果他有100个闲鱼号呢?
废柴一个陌陌账号,一天能加10个老色批,那如果他有10个陌陌呢?
.............

白哥,我知道了,但是账号要怎么解决呀?

  1. 无忧卡,5元一个月月租
  2. 招很多代理小白,分销,让他帮你操作,你供货,55分
  3. 同学、死党、父母,七大姑不大姨,社交不会差很好解决
  4. 接吗平台,一毛钱一条短信
  5. 二手手机,300元一台

白哥,我不但是个废柴,还是个懒狗,咋办?
我可真服你了,去找个三流程序员,把发视频发帖流程化,一天发1000000+帖

有资本后可以全程让代理操作,收徒,998,你买不了吃亏买不了上当
轻轻松松比小白领过的滋润


0x3 结

SEM推流小说推文一天,广告消耗100元,产出150元。有价差利润可以图,那么只管放大

万物都可以用堆量来解决,必胜的公式
如果你不是精英,早点认清自己早点找出自己的路




苏慕白 发布于  2023-4-11 19:37 

Python Aws Ubuntu20 配置多IP 教程

1. 业务场景:

高频次交易需要多次访问接口,配置单服务器多IP绕过币安单个IP频率限制

2. AWS实例选择:

t3系列,东京A区,ubuntu20
这是我测试的币安延迟最低的配置(平均6ms)
换一个区域、一个系统,延迟变化可能会变大几百ms

Okx需要阿里云香港,B区,同理也可以配置多IP,不过网上的文档很多,也许下一篇我会写(平均8ms)

3. 配置AWS:

图片alt
图片alt
图片alt
图片alt
图片alt
图片alt
图片alt

4.配置服务器:

使用指令把新加的ip添加到网卡中:
172.31.34.174为分配的内部IP

ip addr add 172.31.34.174/20 dev ens5
echo 'ip addr add 172.31.34.174/20 dev ens5' >> /etc/rc.local
ip a

或者修改文件:
/etc/netplan/50-cloud-init.yaml
修改addresses 节点 把aws分配的内网ip写在 addresses节点下

ethernets:
    ens5:
        dhcp4: true
        dhcp6: false
        match:
            macaddress: 0a:5e:a8:b4:c3:5e
        set-name: ens5
        addresses:
           - 172.31.1.144/20
           - 172.31.0.140/20
version: 2

图片alt

修改完成后重启

5.Python使用多IP:

'''获取本地ip'''
import netifaces as ni
DuoIp = []
# print('检测服务器网络配置')
for dev in ni.interfaces():
    print('dev:',dev)
    if 'ens' in dev or 'eth' in dev or 'enp' in dev:
        if len(ni.ifaddresses(dev)) > 2:
            # print(ni.ifaddresses(dev))
            for i in ni.ifaddresses(dev)[2]:
                ip=i['addr']
                print(f"检测到私有ip:{ip}")
                if ip not in DuoIp:
                    DuoIp.append(ip)
print(f"当前服务器私有ip为{DuoIp}")

from requests_toolbelt.adapters import source  #指定出口IP
sb = requests.Session()
new_source = source.SourceAddressAdapter(DuoIp[1])
sb.mount('http://', new_source)
sb.mount('https://', new_source)

print(sb.get("http://ip-api.com/json"))

苏慕白 发布于  2022-10-23 01:39 

php 实现https Ssl证书到期监听 教程

1.为什么需要

服务器和域名太多,宝塔的自动续签又不管用
三四次因为Ssl证书到期网站不能正常访问导致经济损失了

这里安利一个免费的Ssl申请网站:https://freessl.cn/

2.Php

    function index(){
        $domains = [
            'sumubai.cc',
        ];
        foreach($domains as $domain)
        {
            try{

                $cert_info = get_cert_info($domain);
                $dn = $cert_info['subject']['CN']; //证书保护域名
                $validFrom_time_t = date('m-d H:i', $cert_info['validFrom_time_t']); //证书开始时间
                $validTo_time_d = date('m-d H:i', $cert_info['validTo_time_t']); //证书结束时间

                echo "+-证书保护域名:" . $dn . " -+------------------+\n";
                echo "+-证书开始时间:" . $validFrom_time_t . " -+------------------+\n";
                echo "+-证书结束时间:" . $validTo_time_d . " -+------------------+\n";

                echo '';
                // 7天内到期
                if($cert_info['validTo_time_t']-time() < 7*24*60*60)
                {
                   // 这里我接入了钉钉通知
                   // (new \app\api\controller\DingController)->DingdingGo($domain." 证书到期 ".$validTo_time_d, 1, $domain." 证书到期 ".$validTo_time_d);
                    echo "$domain." 证书到期 ".$validTo_time_d, 1, $domain." 证书到期 ".$validTo_time_d\n";
                }
            } catch (Exception $e)
            {

            }
        }

        die;

    }

    function get_cert_info($domain){

        set_time_limit(100);

        $context = stream_context_create(['ssl' => [

        'capture_peer_cert' => true,
        'capture_peer_cert_chain' => true,

        'verify_peer' =>  false, // You could skip all of the trouble by changing this to false, but it's WAY uncool for security reasons.
        'cafile' => '/etc/ssl/certs/cacert.pem',
        //'CN_match' => 'example.com', // Change this to your certificates Common Name (or just comment this line out if not needed)
        'ciphers' => 'HIGH:!SSLv2:!SSLv3',
        'disable_compression' => true,

        ],

        ]);

        $client = stream_socket_client("ssl://".$domain.":443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);

        if($client==false) {

        return false;

        }

        $params = stream_context_get_params($client);
        $cert = $params['options']['ssl']['peer_certificate'];
        $cert_info = openssl_x509_parse($cert);
        return $cert_info;
    }

    index();

3. 自动运行

代码弄好了之后就是自动运行了
宝塔添加计划任务即可

图片alt


苏慕白 发布于  2022-5-25 18:56 

ThinkPHP5 Mysql Varchar字符串排序 教程

1.实现

ThinkPHP5 Mysql Varchar字符串排序
百度各种搜索最终三个方法:
ORDER BY name+0 desc
ORDER BY CAST(name as SIGNED) desc
ORDER BY CONVERT(name as SIGNED) desc

但是经过实践不知道为什么排序出来的结果只有倒序,没有正续

2.另一个

经过Google后。。
第二个实现方法:
ORDER BY LPAD(LOWER(name), 10,0) DESC

原文地址:https://stackoverflow.com/questions/4686849/sorting-varchar-field-numerically-in-mysql

3. PHP

$order2 = "$order $desc";
if(in_array($order, ['name', 'ip']))
{
    $order2 = "LPAD(LOWER($order), 10,0) $desc";
}

Db::name('xxxx')->orderRaw($order2)->paginate(50, false,['query'=>request()->param()])

苏慕白 发布于  2022-5-25 18:50 

Python Okex 四舍五入取10的整倍数 教程

今天对接Okex发现开仓量必须是10的整倍数

def Beishu(a):
    a = round(a, 0)
    if a%10 == 0:
        return a

    s = str(a)
    z = int(s[-1])
    if z < 5:
        t = list(s)
        if len(t) > 1:
            t[-1] = '0'
            return ''.join(t)
        else:
            return 10

    return int(s) + (10-z)

print(Beishu(1))
print(Beishu(111))
print(Beishu(120))

结果:
图片alt


苏慕白 发布于  2022-1-16 19:24 

JS让浏览器刷新后不记住滚动栏的位置 教程

今天晚上在做刷新后记录滚动栏的位置的时候与浏览器默认的此功能冲突了

放一行Js代码即可解决:

history.scrollRestoration = 'manual'; //告诉浏览器不要重置我的滚动栏

苏慕白 发布于  2022-1-3 20:39 

Linux给Zip压缩包添加自定义注释 教程

zip filename.zip -z

然后会叫你输入内容
先输入注释
然后回车另起一行输入 .

图片alt


Shell脚本实现,保存为:do_zipm:

#!/bin/bash

f=$1
z=$2
echo "${f}  ${z}"
zip ${f} -z << EOF
${z}
.
EOF

使用:./do_zipm 文件名 注释内容

图片alt


苏慕白 发布于  2021-12-20 10:32 

Nginx if多重判断 指定域名强制Https 教程

set $tag 0;
if ($server_port !~ 443) {
set $tag "${tag}1";
}
if ($host = "baidu.com") {
set $tag "${tag}1";
}
if ($tag = "011"){
rewrite ^(/.*)$ https://$host$1 permanent;
}

苏慕白 发布于  2021-12-7 21:17 

Linux cenots 修改yum为国内源 教程

cd /etc/yum.repos.d/
rm -f CentOS-Base.repo CentOS-AppStream.repo CentOS-PowerTools.repo CentOS-centosplus.repo CentOS-Extras.repo
curl -o CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
yum makecache


苏慕白 发布于  2021-12-7 12:55 

Python3 Linux Cenots 安装Talib 教程

指令:

yum install gcc gcc-c++ -y
yum install python36-devel -y

sudo wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
tar -zxvf ta-lib-0.4.0-src.tar.gz
cd ta-lib/
sudo ./configure --prefix=/usr  
sudo make
sudo make install
echo "export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH" >> /etc/profile
source /etc/profile

pip3 install --upgrade pip
pip3 install numpy==1.16.6
pip3 install TA-Lib

yum install python36-devel -y 这句要根据python版本修改


安装成功后删除文件:

cd ..
rm -rf ta-lib*

苏慕白 发布于  2021-11-23 17:32 

Python3 获取小数位数 删除小数尾部0 教程

今天做获取小数位数的时候遇到了两个坑

  1. 浮点数 尾部0也计入了
  2. 用float 或者 format 把尾部0清除 太小的数会变成科学计数

下面我的解决方法

import re

def WeiShu(val):
    val_str = str(val)
    if "." not in val_str:
        return 0

    #删除尾部0,float不行,会科学计数
    rgx = re.compile(r'(?:(\.)|(\.\d*?[1-9]\d*?))0+(?=\b|[^0-9])')
    val_str = rgx.sub(r'\2', val_str)

    digits_location = val_str.find('.')
    if digits_location:
        return len(val_str[digits_location + 1:])

    return 0

a = '0.00000010'
print(WeiShu(a))

结果:7


苏慕白 发布于  2021-11-23 17:12 

Layer tips实时悬浮显示隐藏 教程

引用:

<script src="//cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<link href="//cdn.bootcss.com/layer/3.0.1/skin/default/layer.css" rel="stylesheet">
<script src="//cdn.bootcss.com/layer/3.0.1/layer.min.js"></script> 

HTML:

<span tan="啦啦啦"></span>

JS:

$('span').on({ 
     mouseenter:function(){ 
         var that = this; 
         var nei = $(this).attr("tan"); 
         if(nei){ 
             tips =layer.tips("<span style='color:#000;font-size:20px;'>"+nei+"</span>",that,{tips:[2,'#fff'],time:0,area: 'auto',maxWidth:500}); 
         } 
     }, 
     mouseleave:function(){ 
        layer.close(tips); 
    } 
 }); 

样式和位置可自己修改

标签: Layer tips

苏慕白 发布于  2021-11-2 14:45 

【JS图片阅览器】安装使用Viewer.js 并用JS让Viewer.js显示图片 教程

1. 下载

Viewer.js官网下载地址:https://fengyuanchen.github.io/viewerjs/
网盘下载地址:https://zijieyunpan.com/E8f4Vo1Z4iK

2. 安装

引用文件 (需先引用jquery,然后放在jquery的后面)

<script type="text/javascript" src="/viewer/viewer.min.js"></script>
<script type="text/javascript" src="/viewer/jquery-viewer.min.js"></script>
<link rel="stylesheet" href="/viewer/viewer.min.css">

给图片加入class属性:viewer
如图:
图片alt

JS启用插件

$('.viewer').viewer();

然后点击图片即可查看效果~

3. 扩展:用JS让Viewer.js显示图片

例子:

<img src="https://fengyuanchen.github.io/viewerjs/images/thumbnails/tibet-1.jpg" id="viewer41930" style="display: none;">
<script>
var image = new Viewer(document.getElementById("viewer41930"),{url: "src"});
document.getElementById("viewer41930").click();
</script>
标签: Viewer.js

苏慕白 发布于  2021-11-1 16:14