今天参考 qt4 的书籍,在 qt5 的平台上面,用了 QSignalMapper,结果收到警告“ QSignalMapper is deprecated"。

经过一番查找,找到了相应的说明, 参考自:https://doc.qt.io/qt-5/qsignalmapper.html This class is obsolete. It is provided to keep old source code working. We strongly advise against using it in new code. 官方建议 qt5 里面使用 lambda 方式表达。

下面是旧的方式:

class ButtonWidget : public QWidget
{
    Q_OBJECT

public:
    ButtonWidget(const QStringList &texts, QWidget *parent = 0);

signals:
    void clicked(const QString &text);

private:
    QSignalMapper *signalMapper;
};
ButtonWidget::ButtonWidget(const QStringList &texts, QWidget *parent)
    : QWidget(parent)
{
    signalMapper = new QSignalMapper(this);

    QGridLayout *gridLayout = new QGridLayout;
    for (int i = 0; i < texts.size(); ++i) {
        QPushButton *button = new QPushButton(texts[i]);
        connect(button, SIGNAL(clicked()), signalMapper, SLOT(map()));
        signalMapper->setMapping(button, texts[i]);
        gridLayout->addWidget(button, i / 3, i % 3);
    }

    connect(signalMapper, SIGNAL(mapped(QString)),
            this, SIGNAL(clicked(QString)));

    setLayout(gridLayout);
}

This class was mostly useful before lambda functions could be used as slots. The example above can be rewritten simpler without QSignalMapper by connecting to a lambda function. 下面是新的方式:

ButtonWidget::ButtonWidget(const QStringList &texts, QWidget *parent)
    : QWidget(parent)
{
    QGridLayout *gridLayout = new QGridLayout;
    for (int i = 0; i < texts.size(); ++i) {
        QString text = texts[i];
        QPushButton *button = new QPushButton(text);
        connect(button, &QPushButton::clicked, [=] { clicked(text); });
        gridLayout->addWidget(button, i / 3, i % 3);
    }
    setLayout(gridLayout);
}

弄好了 vps 以后,感觉网络流量走的有点多,决定查查看到底什么情况。 首先安装 sar 来看看各个设备消耗的流量

apt-get install sysstat

sar 的参数 DEV 表示网口, 1 表示每秒去一次数值,4表示连续取值4次。

sar -n DEV 1 4

然后看到 eth0 消耗的流量比较大,每秒 200k+。

再安装 iptraf 来具体查查各个端口的数据量。

apt-get install iptraf

然后使用 iptraf-ng 来查看具体端口的数据量,我这边发现是 22号和 30512号特别多。 然后使用 netstat 来看看 具体的进程。

netstat -tunp | grep 22

也可以使用 lsof -i:22 来查看端口的进程。

还可以安装 iftop, 使用 iftop -P 来查看具体流量。

最近搞了一个 vps,是 hostdare 上面的,选择了亚洲优化 CN2的主机。付款之后,需要等待几个小时,又供应商开通服务,注意邮件接收就可以了。 然后在网站的控制面板里面设置系统是 debian9.4,之后通过 putty 登录系统,使用下面命令来安装 ss:

wget –-no-check-certificate -O shadowsocks-go.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-go.sh && chmod +x shadowsocks-go.sh && ./shadowsocks-go.sh 2>&1 | tee shadowsocks-go.log

安装的时候,设置好密码,端口,加密算法,即可。 然后下载 ss 客户端,注意 win7 的系统需要安装 .net 4.6.2,否则打不开软件。

需要多用户使用时,需要修改配置文件,去掉 port 和 password 两项,增加如下面的语句: vi /etc/shadowsocks/config.json

    port_password : {
        "port" : "password" ,
        "port" : "password"
    },

然后使用命令重启 ss 服务:

 /etc/init.d/shadowsocks restart

最近在搞 netgear 上面的 openvpn. 路由器上面设置比较简单, 开通 DDNS, 然后开启 openvpn 就可以了. win 和 android 的软件需要到 netgear 的官网上面下载就可以. 但是碰到一个坑爹的事情, 官网的教程 win 版本是没有问题的, android 版本是有问题的, 卡了我好多天, 才搞定.

android 的版本其实和 win 版本一样是4个文件, 直接解压就可以工作了, 不要像教程里面那样, 手动合称一个文件, 那样反而有问题.

没有问题的教程链接: win: https://kb.netgear.com/23854/How-do-I-use-the-VPN-service-on-my-Nighthawk-router-with-my-Windows-client android: https://kb.netgear.com/29783/How-do-I-use-VPN-service-on-my-Nighthawk-router-with-my-Android-device How do I use VPN service on my Nighthawk router with my Android device?

有问题的教程链接: android: http://club.ntgrchina.cn/Knowledgebase/Document_detail.aspx?Did=1198 如何在Android设备上使用夜鹰路由器的VPN服务

最近在折腾 vpn 的事情。家里面的设置是: 路由器 - netgear 开通 openvpn 家里nas - gentoo 开启 wol + pm-utils. 笔记本 - win7 安装了 PocketWOL

现象是笔记本放在家里面的时候,可以通过 pocketwol 来唤醒 nas,但是当我在外面的时候,通过 openvpn 连接到家里面的网络,可以查看 nas 上面的内容,可以休眠 nas,但是无法唤醒 nas。 经过在网上找了好长时间,有很多种说法,最终使用了另外一个 唤醒软件就搞定了。

软件名称是 WakeMeOnLan, 版本 1.84,主页: http://www.nirsoft.net/utils/wake_on_lan.html#DownloadLinks . 只有 windows 版本。

据说可用的 android 软件是以下几个: https://play.google.com/store/apps/details?id=com.overlook.android.fing https://play.google.com/store/apps/details?id=com.benfinnigan.wol&hl=pl

参考了下面一些说法:

转自: http://www.eeworld.com.cn/mp/Renesas/a15839.jspx

目前为止,我们已分2次向大家介绍了BLDC电机的特点与优点。BLDC电机既小巧又高效,最适合用于需要省空间、省能量的系统开发。一直以来大家都觉得初次控制BLDC电机时难度太高,但现在只要采用瑞萨电子的解决方案就可以大幅度降低难度。瑞萨电子电机控制评估套件“24V Motor Control Evaluation System for RX23T(以下称为“电机RSSK”)”中有一套逆变板和各种控制软件、开发支持工具,让我们使用电机RSSK来实际进行一次电机控制吧。

- 阅读剩余部分 -