QProcess用于启动一个外部程序,并提供了与之通信的接口。
使用setProgram来设置要启动的外部程序,setArguments来设置要传递给这个外部程序的参数。
setArguments需要一个QStringList类型的参数,在构造这个参数的时候要注意不能把外部程序需要的参数作为一整个字符串。
举个例子:要用QProcess执行find -name abc.txt
1 | QProcess process; |
QProcess用于启动一个外部程序,并提供了与之通信的接口。
使用setProgram来设置要启动的外部程序,setArguments来设置要传递给这个外部程序的参数。
setArguments需要一个QStringList类型的参数,在构造这个参数的时候要注意不能把外部程序需要的参数作为一整个字符串。
举个例子:要用QProcess执行find -name abc.txt
1 | QProcess process; |
在osx系统下, qt程序菜单项的名字如果是“quit”,”about”(不区分大小写), 这个菜单项就会消失, 如果这个菜单只包含这些会消失的菜单项, 那么这个菜单也会消失.
猜测: 这应该是由于跟osx系统默认给程序提供了一些菜单项有冲突的关系.
问题示例代码:
1 | SimpleMenu::SimpleMenu(QWidget *parent) |
更新:
可以使用rdnetto/YCM-Generator插件来自动生成.ycm_extra_conf.py
当前操作系统: osx 10.13
使用brew安装的qt5
qt安装目录在哪里不需要管, 因为使用brew更新qt后安装目录会随着版本变动而变动, 但不管哪个版本brew都会在/usr/local/opt/
创建一个链接指向真正的目录, 我只安装了qt5, 所以上述目录下有两个链接, qt和qt5, 这两个目录都指向qt5的安装目录, 任选一个路径用于下面的命令即可, 这里使用这个路径:/usr/local/opt/qt
.
执行一个命令来找到所有需要的库的路径:
1 | find /usr/local/opt/qt/ -name "Headers" | grep "framework\/Headers" > ~/headers |
执行完毕后会在HOME下生成headers
文件, 文件的内容就是qt5所有的库的路径(头文件), 接下来就是将这些路径添加到ycm的配置文件.ycm_extra_conf.py
里了, 下面是我修改好的, 保存为:.ycm_extra_conf.py
放到项目目录下(或上级目录), ycm就会自动读取了.
1 | from distutils.sysconfig import get_python_inc |
场景:
osx,deepin linux, windows三系统, 需要扩大黑苹果的分区.
osx下的磁盘工具简直不能更难用,有下面几个坑,很重要,要想扩容osx系统分区需要知道这些:
上面三个坑, 尤其是第三个, 搞得我差点重装osx, 磁盘工具竟然不自动格式化分区就直接和osx的系统盘合并了,
导致虽然系统盘容量增大了, 但却出现一个分区里却有两块不同格式的磁盘空间, 幸好我记得合并进去的分区是多大,
又动手压缩出来了, 然后格式化为osx系统分区格式, 再次合并才成功
osx下的磁盘工具虽然难用, 但是要扩大osx系统分区只能用这个工具, 不像linux或windows可以在livecd或者pe下调整.
正文:
草草画了几个图, 当时操作的时候没有截图, 下面这张图是我的硬盘的分区:
既然是扩容osx分区, 那就需要从其他分区压缩出来一部分空间, 推荐在linux下使用gparted工具压缩和移动分区,
当然windows下也可以, 可以用diskgenius软件操作.
我需要从linux分区中压缩出来100G分给osx, 那么我就压缩之后的样子如下图:
虽然压缩出来的空间已经挨着osx的分区了, 但是osx的磁盘工具不能将osx之前的分区合并到osx的系统分区中,
所以仅仅是压缩出来是不够的, 还需要将压缩出来的分区移动到osx分区之后, 且紧挨着osx分区, 移动后如下图:
然后格式化那块压缩出来的空间, 如果gparted或者diskgenius不支持当前osx分区的格式, 那就格式化成fat32格式,
格式化完成之后就可以启动到osx系统了, 打开磁盘工具, 将那块压缩出来的分区的格式改成当前osx分区的格式,
切记!! 一定要与当前osx分区的格式相同!!
然后点击磁盘工具上的‘分区’按钮, 再点击那块格式化好的压缩出来的分区, 再点一下’+‘旁边的’-‘号按钮,
也就是删除这个分区, 点击确定就行了, 删除这个分区后磁盘工具就会将其合并到osx的分区了.
大功告成, 如下图:
本文不一定适用于所有电脑,需要自己找到对应的设备文件
我的电脑中,风扇对应到linux下的设备文件的路径是:
1 | /sys/class/hwmon/hwmon2/pwm1 |
其他电脑即便不是这个文件,也在类似的目录下,这个文件的内容是”0-255“的数值,
相应的数值大小对应相应的风扇转速,向这个文件中写入不同的数据风扇就控制风扇的转速了。
我的电脑中这个文件的默认值是”85“。
下面附上我写的一个shell脚本,放到PATH里就可以方便的控制风扇转速了:
1 | #!/bin/bash |
注意如果上述提到的设备文件不同,需要修改脚本中的路径。
将上述代码保存为一个shell文件,如fancontrol.sh
,并为其增加可执行权限:
1 | chmod a+x fancontrol.sh |
然后复制到PATH下,如/bin
下。
本文是学习这篇博客所得的收获:
Android:Layout_weight的深刻理解
当子控件有layout_weight
属性时, 系统将先按照layout_width
或layout_hight
属性
先把子控件放到父控件中, 之后才解析layout_weight
属性, 然后计算父控件中的剩余空间,
最后按比例分配剩余空间给子控件.
看一下处理layout_weight
时所用到的公式:
1 | # 实际尺寸: 子控件最终展示出来的尺寸 |
当控件的layout_width
以及layout_hight
的值为0
或者wrap_content
时,layout_weight
属性很容易预测最终效果, 它们会按照自己的weight比例
去
分配剩余空间尺寸
.
需要留意的是当控件的layout_width
或layout_hight
的值为fill_parent
的时候,
此时每个子控件在刚被放到父控件中, 且系统还没有解析子控件的layout_weight
时,
父控件就已经没有剩余空间了,
因为此时所有子控件的当前尺寸都等于父控件的尺寸, 且第一个子控件就已经占满了父控件!
那么套用上述公式, 计算子控件最终实际尺寸的过程如下:
下面假设一个父控件中有三个子控件, 其比重为1 : 2 : 3,
则子控件的weight比例
依次为1/6
,2/6
,3/6
剩余空间的计算如下:
1 | 剩余空间 = 父控件尺寸 - 子控件1当前尺寸 - 子控件2当前尺寸 - 子控件3当前尺寸 |
一张图解释Dockerfile中CMD和ENTRYPOINT的关系,
另外使用’docker run’新建容器时, 镜像后面跟的命令会覆盖Dockerfile中的CMD.
使用如下命令启动一个php容器, 并将php项目的目录映射到容器内的apache容器下:
1 | docker run -p 80:80 --name php_app -v "/project/directory":/var/www/html -d php |
然后访问127.0.0.1
, 结果网站无法运行, 提示:Permission denied
,
进入正在运行的php容器, 去看看项目目录在容器里的权限是什么:
1 | docker exec -it php_app bash |
发现文件的拥有者和属组都无法识别, 直接显示的UID和GID, 都是1000,
这是因为项目文件在容器外, 也就是主机本地的拥有者和属组是都是我的用户,
而我的用户的UID和GID在主机中是1000,
但是php容器里却没有我这个账户, 所以也就无法正常识别所有者了,
自然网站无法正常运行. 要想解决这个问题就得知道php这个容器
使用的是哪个用户来启动apache和php服务, 经过搜索得知是”www-data”用户,
那么修改这个用户的UID和GID为我的就行了(这里都是1000):
1 | groupmod -g 1000 www-data && usermod -u 1000 -g 1000 www-data |
然后重启php容器即可:
1 | docker restart php_app |
当前操作系统: deepin基于debian
默认的命令pip可能是来自pip2也可能是pip3, 这取决于安装pip2和pip3的顺序,
安装pip2或pip3时会覆盖原有pip可执行文件, 所以在使用pip安装python模块时,
最好明确指出使用pip2还是pip3, 而不是直接使用pip命令, 这样可以避免明明要安装python3的模块库, 下载安装的却是python2的模块库.
使用pip命令安装模块时, 是否使用sudo提权会影响安装路径.
会安装模块到以下路径:
1 | /usr/lib/python*(版本不同,具体目录不同) |
1 | /usr/local/lib/python*(版本不同,具体目录不同) |
cocos2d-x v3.15版, 在linux下编译之后执行test里的demo时报错:
1 | $ ./cpp-tests |
从报错可以看出缺少libfmod.so.6
这个库文件, 网上搜索后得知这个文件在:$COCOS2D_HOME/external/linux-specific/fmod/prebuilt/64-bit
目录下,
而且是在执行$COCOS2D_HOME/build/install-deps-linux.sh
时发生报错的,
他们的解决办法是将上述目录下的两个库文件libfmod.so
和libfmodL.so
,
复制到/usr/local/lib/
目录下, 并创建链接文件, 然后接着执行install-deps-linux.sh
,
但是这个方法对我没有作用, 可能是因为我是用的系统的缘故(deepin linux)
.
如果上述方法对你也没用就试试下面的方法:
复制两个库文件到/usr/lib/
目录下, 然后创建链接文件:
1 | #在cocos2d目录下执行 |
然后就可以直接测试demo了, 不用重新编译