admin 发布的文章

qt翻译国际化

一、简单一个例子,比如下面代码,使用tr()来控制需要翻译的代码
void MainWindow::on_Test_clicked()
{

QString a = tr("Do a test.");
qDebug() << a;
Dialog * aa = new Dialog();
aa->show();

}
二、对tr里面的内容进行翻译和发布
1、使用lupdate命令和lrelease命令进行转化
2、使用QT Creator进行可视化操作
update.jpg
如果使用第二种办法的话还需要更改.pro文件,增加以下代码
TRANSLATIONS = zh_cn.ts
对生成的ts文件进行修改,内容是xml格式的,文本编辑器进行更改就可以,确认无误后就把translation里面的type标签去掉,然后就可以进行发布。
三、进行发布
修改main.cpp,大概结构如下,有两个需要注意的地方
int main(int argc, char *argv[])
{

QApplication a(argc, argv);

QTranslator tsor;           //创建翻译器
/*
 * 加载语言包,注意:
 * a.如果是在IDE中调试的话就要把qm文件放到Makefie的同级目录
 * b.如果是直接运行exe文件的话就要把qm文件放到exe的同级目录
 */
bool ret = tsor.load("zh_cn.qm");
qDebug() << ret;
a.installTranslator(&tsor); //安装翻译器

MainWindow w;
w.show();

return a.exec();

}

rhel 7使用unbound部署ddns

1、首先第一步安装,我这里已经安装过了
[root@colourstek wangmin]# yum install unbound
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Package unbound-1.4.20-26.el7.x86_64 already installed and latest version
Nothing to do
[root@colourstek wangmin]# systemctl restart unbound //启动DNS服务
[root@colourstek wangmin]# systemctl enable unbound //开机自动启动DNS服务
ln -s ‘/usr/lib/systemd/system/unbound.service‘ ‘/etc/systemd/system/multi-user.target.wants/unbound.service‘

2、修改配置文件
unbound安装好之后,默认配置文件地址为/etc/unbound/unbound.conf
贴上我的配置文件,加粗部分为我的修改
dns1.jpg
dns2.jpg
dns3.jpg
dns4.jpg
dns5.jpg
dns6.jpg
dns7.jpg
dns8.jpg
3、验证
[root@colourstek wangmin]# unbound-checkconf
[1476341835] unbound-checkconf[176447:0] warning: root hints /etc/unbound/root.hints: no NS content
unbound-checkconf: no errors in /etc/unbound/unbound.conf

4、重启unbound服务,如果防火墙是开的最好关掉
[root@colourstek wangmin]# systemctl restart unbound

Linux下的scp命令用法详解

常用用法举例:

1、复制远程服务器的文件到本地:
scp root@120.18.50.33:/data/a.gz /home/
2、复制远程服务器的目录到本地:
scp -vrp root@120.18.50.33:/data/a/ /home/
3、复制本地的文件到远程服务器:
scp /home/a.gz root@120.18.50.33:/data/
4、复制本地的目录到远程服务器:
scp -vrp /home/ root@120.18.50.33:/data/

SCP 命令语法<!--more-->
scp [-1245BCpqrv] [-c cipher] [F ssh_config] [-I identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:] file1 […] [[suer@]host2:]file2

SCP 命令说明
Scp在主机间复制文件。他使用 ssh(1)作为数据传输。而且用同样认证和安全性。 scp将在认证中请求输入密码所有的文件可能需要服务器和用户的特别描述来指明文件将被复制到/从某台服务器。两个远程登录的服务器间的文件复制是允许的。

SCP 命令选项
-1 强制scp 用协议1
-2 强制scp 用协议2
-4 强制scp用IPV4的网址
-6 强制scp用IPV6的网址
-B 选择批处理模式(防止输入密码)
-C 允许压缩。 标注-C到ssh(1)来允许压缩
-c cipher
选择cipher来加密数据传输。这个选项直接传递到ssh(1)
-F ssh_config
设定一个可变动的用户配置给ssh.这个选项直接会被传递到ssh(1)
-i identity_file
选择被RSA认证读取私有密码的文件。这个选项可以直接被传递到ssh(1)
-l limit
限制传输带宽,也就是速度 用Kbit/s的速度
-o ssh_option
可以把ssh_config中的配置格式传到ssh中。这种模式对于说明没有独立的scp文件中断符的scp很有帮助。关于选项的如下。而他们的值请参看ssh_config(5)
-P port
指定连接远程连接端口。注意这个选项需要写成大写的模式。因为-p已经早保留了次数和模式
-S program
指定一个加密程序。这个程序必须可读所有ssh(1)的选项。
-p 指定修改次数,连接次数,还有对于原文件的模式
-q 把进度参数关掉
-r 递归的复制整个文件夹
-S program
指定一个加密程序。这个程序必须可读所有ssh(1)的选项。
-V 冗余模式。 让 scp 和 ssh(1) 打印他们的排错信息, 这个在排错连接,认证,和配置中非常有用。

SCP 命令诊断
scp 返回0 成功时,不成功时返回值大于0

SCP 命令不需要输入用户密码的使用方法

在两台机器的两个用户之间建立安全的信任关系后,可实现执行scp命令时不需要输入用户密码。

  1. 在机器A上root用户执行 ssh-keygen 命令,生成建立安全信任关系的证书。

[root@A root]# ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <– 直接输入回车
Enter passphrase (empty for no passphrase): <– 直接输入回车
Enter same passphrase again: <– 直接输入回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is: ……

注意:在程序提示输入 passphrase 时直接输入回车,表示无证书密码。
上述命令将生成私钥证书 id_rsa 和公钥证书 id_rsa.pub,存放在用户目录的 .ssh 子目录中。

  1. 将公钥证书 id_rsa.pub 复制到机器B的root目录的.ssh子目录中,同时将文件名更换为authorized_keys。

[root@A root]# scp -p .ssh/id_rsa.pub root@机器B的IP:/root/.ssh/authorized_keys
root@192.168.3.206’s password: <– 输入机器B的root用户密码

在执行上述命令时,两台机器的root用户之间还未建立安全信任关系,所以还需要输入机器B的root用户密码。
经过以上2步,就在机器A的root和机器B的root之间建立安全信任关系。下面我们看看效果:

[root@A root]# scp -p test root@机器B的IP地址:/root

成功后就真的不再需要输入密码了。















































- 阅读剩余部分 -

firefox的预处理问题(400 Bad Request)

今天发现了一个很奇怪的bug,调试的时候发现是由firefox 18浏览器中的预处理出现了一点问题。
首先看一下问题:
通过抓包发现如下图所示:
11
首先看一下337的这一条数据包。它是一个TCP数据包,是TCP建立连接三次握手中的第一步SYN包,当我查看具体的数据包的时候感觉特么的奇怪。如下图所示:<!--more-->
22
竟然是400 Bad Request的请求包,可是在HTTP的服务端打印出来的时候也很奇怪,是空的请求。
其实解决办法也很简单,就是如果是空请求报直接reset掉它,不知道算不算firefox的一个bug.








- 阅读剩余部分 -