Untitled Post - 169
cURL stands for “see URL” or “client for URLs”, the recursive version is “Curl URL Request Library”.
cURL stands for “see URL” or “client for URLs”, the recursive version is “Curl URL Request Library”.
rkt是一个容器引擎和规范,Kubernetes已经支持rkt容器引擎,rkt兼容docker,但其更unix更安全。
Kubernetes + rkt可以组建基于容器的云计算平台,而openstack是为虚拟化而生。
openstack结合Kubernetes可以组建既有虚拟化又有容器的混合云计算平台。
安装rkt
当前debian官方只有sid源里有rkt包,而且版本略滞后,因此可以这样安装最新版本的rkt
1 | $ wget https://raw.githubusercontent.com/coreos/rkt/master/scripts/install-rkt.sh |
install-rkt.sh脚本会生成deb包再安装。
卸载
1 | $ sudo apt remove rkt --purge |
References:
[1]Installing rkt on popular Linux distributions
===
[erq]
netcat大名鼎鼎,功能多样。
netcat衍生版本众多,nmap.org提供的版本ncat是其中的佼佼者。
ncat带宽测量
机器A:
1 | $ ncat -l -p 2000 > /dev/null |
机器B:
1 | $ dd if=/dev/zero bs=1024M count=1 ncat address_of_A 2000 |
两台机器之间的带宽大约在82MB/s。
使用pv
可以更动态、更直观的看到两者之间的速度
机器A:
1 | $ ncat -l -p 2000 pv > /dev/null |
机器B:
1 | $ dd if=/dev/zero bs=256M pv ncat address_of_A 2000 |
iperf3带宽评估
iperf/iperf3是更为专业的网络吞吐量测工具,使用也很简。
服务端:
1 | $ iperf3 -s |
客户端
1 | $ iperf3 -c ip_of_server |
iperf3会有更细致的吞吐量报告。
更详细的使用参见man。
References:
[1]Netcat for Windows
===
[erq]
System Integrity Protection关闭打开的方法:启动mac时按住command+R,然后打开终端执行:csrutil disable enable,然后reboot即可。
nmap实现了一个功能更丰富的netcat,叫做ncat,随nmap一起发行,同样是跨平台的。
升级xcode 8.0后,编译qt程序时:
1 | $ qmake -project |
修改文件Qt_install_folder/5.7/clang_64/mkspecs/features/mac/default_pre.prf
将
1 | isEmpty($$list($$system("/usr/bin/xcrun -find xcrun 2>/dev/null"))): \\ |
更改为
js isEmpty($$list($$system("/usr/bin/xcrun -find xcodebuild 2>/dev/null"))): \\
也就是将find后面的xcrun改为xcodebuild
===
[erq]
以tomcat8用户运行soffice服务:
1 | $ sudo -u tomcat8 soffice --accept="socket,host=0,port=8100;urp;StarOffice.ServiceManager" --headless --nofirststartwizard --nologo --nodefault --nocrashreport --nolockcheck & |
提示错误:
1 | \[Java framework\] Error in function createSettingsDocument (elements.cxx). |
这是由于soffice没有权限无法写配置文件造成的错误。
tomcat8的用户主目录为/usr/share/tomcat8,此目录的所有者和组都是root,soffice需要在用户主目录下写.config和其他配置文件才能正常工作,所以造成了以上问题。
如果非要使用tomcat8用户来运行soffice,则可以这样来解决此问题:
1 | $ sudo chown tomcat8:tomcat8 /usr/share/tomcat8 |
如果一个用户对自己的主目录都没有所有权,这怎么也说不过去吧。
update(17/10/2019):
tomcat9 on debian buster系统,启动soffice时提示:
1 | javaldx failed! |
tomcat9在系统内的用户为tomcat,主目录为/
1 | $ sudo systemctl stop tomcat9.service |
再次运行soffice一切正常。
1 | sudo -u tomcat8 /usr/bin/tomcat soffice --accept="socket,host=0,port=8100;urp;StarOffice.ServiceManager" --headless --nofirststartwizard --nologo --nodefault --nocrashreport --nolockcheck & |
===
[erq]
XA是open group提出的分布式事务处理规范,JTA支持XA规范,JTA只规定了接口,有些应用容器提供实现,也有一些三方的开源实现可用,比如Atomikos。
如果PostgreSQL参与分布式事务(XA)处理,则需要在配置文件postgres.conf中设置max_prepared_transactions参数,此参数用于指定分布式事务中两步提交准备事务的最大数量。默认值为0,此时不支持分布式事务。
max_prepared_transactions参数值不应该小于max_connections参数值,这样每一个session都可以至少有一个可用的准备事务。
1 | max_connections = 100 |
如果有standby服务器,则standby服务器上这两个参数值都不能小于master服务器上的相应值。
References:
[1]Configuring PostgreSQL for XA
[2]PREPARE TRANSACTION
[3]18.4. Resource Consumption
===
[erq]
使用JODConverter转换文档时,需要连接到正在运行的OpenOffice并执行API调用,这需要openoffice创建一个UNO监听器并运行于监听模式下。
下面记叙openoffice以TCP监听模式启动作为后台服务的配置方法。
安装
当前的debian testing官方源已经不再提供openoffice,因为这货被libreoffice替代了。去ooo官方下载Linux 64-bit(x86-64)(DEB)版本,下载的为tar.gz包,解压后进入en_US/DEBS目录,安装此目录下的所有deb包。
1 | # dpkg -i *.deb |
ooo被安装在了/opt/openoffice4目录,可执行程序soffice位于/opt/openoffice4/program目录下。
监听模式启动ooo
1 | $ unset DISPLAY |
这样ooo在本地所有网络接口地址的TCP 8100端口上启动监听服务。如果只在本地回环地址监听,可以设置host为127.0.0.1或localhost。
服务模式启动时不要设置DISPLAY变量。
libreoffice
ooo自从被收入o记囊中,是一天不如一天了,最近又传闻因为没有活跃的开发者要项目要关闭了。ooo当前最新的4.1.2还是2015年10月发布了,这货是没救了。
libreoffice则开发活跃,如日中天,开源社区真不是哪家公司可以一手遮天的,再大的公司也不行。
其实本篇所述的监听模式启动ooo是完全适用于libreoffice的,因此不必大费周章的安装openoffice,直接官方源安装libreoffice-common和libreoffice-writer即可。soffice bin存在于libreoffice-common包中,同时还需要安装jdk和libreoffice-java-common包。
使用libreoffice时,命令行参数使用双中线开头,不然会有deprecated提示:
1 | Warning: -nologo is deprecated. Use --nologo instead. |
注:ooo是openoffice.org曾经的简称,不知道现在为何官方不再使用了。
为libreoffice设置systemd服务
编辑libreoffice.service单元文件:
1 | \[Unit\] |
将编辑好的文件拷贝到/lib/systemd/system文件夹,然后启用该unit文件,最后启动libreoffice服务。
1 | $ sudo cp libreoffice.service /lib/systemd/system/ |
可以看到libreoffice已经启用了后台服务,并在8100端口进行监听。
update(17/10/2019):
debian buster系统:
只安装libreoffice-common和libreoffice-writer包即可,tomcat9的系统用户为tomcat,权限问题参考权限导致soffice(libreoffice/openoffice)无法运行的问题
References:
[1]systemd service script for libreoffice/openoffice
[2]Libreoffice LSB init script
[3]Starting Multiple OpenOffice Instances
===
[erq]
传统上,第一个程序就是hello world, Qt也不例外。
1 | #include <QApplication> |
编译
1 | $ qmake -project |
出现错误:
1 | hello.cpp:1:24: fatal error: QApplication: No such file or directory |
是因为Qt5将大部分桌面部件移到了Qt Widgets模块中,即QApplication已经从原来的QtGui/QApplication移动到QtWidgets/QApplication了。
而qmake默认只连接core和gui下的模块,因此需要修改生成的hello.pro,最后面添加widgets里面的模块:
1 | QT += widgets |
然后重新qmake和make就可以生成动态连接的目标文件hello,执行
1 | $ ./hello |
一个最简单的Qt5 GUI程序就出现了。
===
[erq]