软件相关的小问题记录

0.此博客主要来记录在开发过程中, 遇到的一些小问题(new or surprise to me).
Keep a record of information that was new or surprising to me and some troubleshouting.

1.Ubuntu解压zip文档时出现乱码

1.1. 我们可以通过查看/usr/share/i18n/SUPPORTED此文件中支持的中文字符集情况, 我电脑情况如下:

zh_CN.UTF-8 UTF-8
zh_CN.GB18030 GB18030
zh_CN.GBK GBK
zh_CN GB2312

1.2.方法: 可以通过unzip指定字符集来消除乱码, 命令如下:

unzip -O GBK <your.zip file>

2.搭建自己的学术网站

2.1. 知乎回答:见此处
里面回答了很多很多种构建学术网站的方法, 可以选择一个自己认为合适的方法进行搭建.
2.2. 上面知乎中讲到了好多种搭建学术网站的方法:

  • Hugo(个人比较推荐: 可以使用Hugo的Academic主题来完成)
    Hugo 初学(用Hugo快速建一个网站)
  • 利用github搭建academicpages(这个已经成功搭建, 很快就可以搭建成功), 对应的github地址为: academicpages.
  • Hexo搭建自己的博客(可以使用各种主题)
    hexo官网介绍点击此处.

2.3. 搭建完属于自己的学术网站或实验室网站以后, 可以通过github pages来完成发布.
2.3.1. Github Pages(一):一个最基础的个人网站.

3. Ubuntu 安装微信

3.0. 企鹅场居然没有为Linux开发一个微信, 所以就只能安装大神第三方做的微信程序.
3.1. 在此处下载微信安装包, 不建议下载源码然后编译安装;
3.2. 将解压后的微信文件移动到/opt/目录下(因为/opt/目录一般是为电脑安装额外的软件所提供的目录):

sudo mv electronic-wechat-linux-x64/ /opt/electronic-wechat-linux-x64

3.3. 启动微信后,在微信图标处点击锁定到启动器, 下次就可以直接点击Dash微信图标就打开微信了.

Dash Home 的图标一般在两个位置 /usr/share/applications 或者 ~/.local/share/applications 只要在一个位置创建图标就可以了

3.4. 在Ubuntu中安装wine环境可以安装Windows中的软件.(完整版的微信可通过此方式安装, 可查看参考资料[1])
3.4.1. 关于wine的维基百科

4. home目录下的隐藏文件夹占用空间太大的问题

4.0. 主要是~/.cache和 ~/.kingsoft文件夹;
4.1. 我自己电脑home目录下的~/.cache居然有8.9个G! 这个该怎么合适地处理掉?(好像没有好的方法, 自己没有去清理他们, 要不然毁了配置和某些文件就得不偿失了)
4.1.1. 注意这个cache和内存中的cache不一样, home下的主要是存放一些软件的配置和缓存信息, 而内存中的cache是为了能在下一次打开同样软件时很快运行起来的机制.
4.2. ~/.kingsoft文件夹占用了2个G空间, 主要是backup这个备份文件夹占用了很多空间, 我把里面的东西直接全选删除了.

5. CMake

5.1. 各个版本CMake的官方下载地址点击此处.
5.2. 注意: CLion软件创立的开发环境, 没有对家目录中的.bashrc进行source, bashrc对bash终端有用, 对CLion没有用, 所以在编译的时候有可能找不到这个库找不到那个库(比如OpenCV就找不到, 而终端就可以找到).

/etc/bash.bashrc也有一个bashrc.

5.3. 常用编译器有:
Windows: MSVC
Linux: GCC, G++, clang
Mac: Clang
我们可以在CMakeLists.txt中指定要使用哪种编译器(方法有很多种).
5.4. 代码静态检测工具: Clang-Tidy, Cppcheck(都很不错)
5.5. 代码格式化工具:
5.5.1. clang-format
5.5.2. CLion最新版已经支持自定义命名约定了, 不错.
5.6. CLion各个版本的下载地址.
5.7. CLion官方主题说明地址.
5.8. g++ 和gcc分别都可以编译c, c++, 但一般情况下, 我们编译c语言使用gcc编译器, 编译c++使用g++编译器即可, 可以省去很多麻烦, 具体解释见此处.

6. Linux系统的结构

6.1. 先借用一张图来简单概括一下Linux系统的结构[3]:
在这里插入图片描述在这里插入图片描述6.2. Linux 命令大全-菜鸟教程
6.3. 查看进程名的ID:

ps -ef|grep <进程名>

查看该进程ID的占用资源情况:

top -p <进程ID>

6.4. NVIDIA JETSON Nano切换功耗模式方法见此处.
6.5. NANO与TX2主频对比见此处.
6.6. shell脚本中echo显示内容带颜色.

7. 小软件的安装

7.1. Mathpix的安装(第一次安装的时候突然就退出了, 我再次运行同样的指令就安装成功了):

sudo snap install mathpix-snipping-tool

7.2. jetson nano安装jtop.

sudo pip3 install jetson-stats

7.3. 录屏软件kazam的安装

sudo apt-get install kazam 

7.4. 终端复用tmux软件的安装

sudo apt-get install tmux

7.5. Ubuntu版的CAJViewer:
下载地址见此处.
注意:使用的时候需要将下载到的.appimage文件改成可执行程序.
(右键-属性-权限-允许作为程序执行文件)

8. 系统内核问题导致开不了机

8.0. 在Ubuntu系统上格式化了一个SD卡后, 重启电脑发现进不了Ubuntu系统了(Windows正常), 经过一下午时间的摸索, 将问题锁定在了内核损坏上, 所以就想了几个办法来解决; (内核文件initrd.img-4.15.0-122-generic很小, 正常是67.5M, 而此时却只有10多M, 所以怀疑内核已经被损坏了, 所以就换成了启动initrd.img-4.15.0-120-generic内核)
在这里插入图片描述问题:

  • ALERT! UUID=xxxxxxxxx does not exist. Dropping to a shell!, 网上博客的处理方式见此处:换了另一台电脑相同的内核.
  • couldn’t get size 0x8000000000e.

8.1. 修复Ubuntu系统内核崩溃错误.(还没有试这种方法)
8.2. 在Ubuntu上使用恢复模式及Recovery Mode各选项的使用方法.
8.3. 我的解决方法:
将/boot/grub/grub.cfg文件中的内容直接修改成了我要启动的内核了, 这样不需要update-grub;
8.3.1. 比较优雅的方法:

8.3.2. 我的疑惑: 在什么情况下会触发系统在boot下生成initrd.img-4.15.0-xxx-generic以及vmlinuz-4.15.0-xxx-generic文件呢? 内核的主要版本号倒是没有变, 而xxx这个会递增.
8.4. 查看内核版本命令:

uname -a 或者 uname -r

8.5.通过ls来查看Ubuntu下的内存映像:

ls /boot/

8.6.原来/boot/grub/grub.cfg文件就是定义了开机时的grub引导界面, 在启动菜单上按e进入命令行以后, 就是此文件里的一段内容, 也就是首选项0的内容(以menuentry开头的启动选项, 没有缩进).
在这里插入图片描述8.7. 通过lsb_release -a来查看系统版本, 我电脑输出系统版本信息如下:

No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 16.04.6 LTS
Release:	16.04
Codename:	xenial

9. ssh相关问题

9.1. 服务器端的电脑IP地址发生改变后, ssh再次连接会连接不上, 这时需要我们:

ssh-keygen -R <new IP>

9.2. Jetson Nano板子的ssh服务是默认开启的.
9.3. 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server。
9.4. 注意, ssh连接的时候要使用用户名, 而不是设备名称;
即打开终端以后, 绿色字符串 lyf@lyf-Legion-Y7000-2019-PG0 @符号前面表示用户名, 后面表示设备名称.

10. ROS主从机配置

10.1. 主机和从机连接到一个路由器下
10.2. 主机bashrc中追加:

export ROS_MASTER_URI=http://192.168.43.166:11311
export ROS_HOSTNAME=192.168.43.166

10.3. 从机bashrc中追加:

export ROS_MASTER_URI=http://192.168.43.166:11311 # 主机IP
export ROS_HOSTNAME=192.168.43.170 # 从机IP

11. catkin

11.1. 安装python-catkin-tools, 可以使用catkin build/clean

注意使用catkin clean之前需要catkin init

12. vim

12.1. vim显示行号
在家目录中建立文件(家目录创建的文件属于vim的个人配置): ~/.vimrc
然后输入:set nu

13. 模板编程

13.1. 模板编程主要是编译器在发挥作用。

14. 编译期

14.1. 以后输出log日志的时候,最好通过#define Debug的方式来控制log信息的输出,这样就可以在编译期中打开log输出的开关,而不必在运行期进行判断再决定是否输出log日志。

#define DEBUG

#ifdef DEBUG
#define LOG(m) \
{\    
printf(m);
\ }\
#else
#define LOG(m)
#endif

15. ROS中的tf

可以通过如下几个命令进行查看:
15.1. rosrun rqt_tf_tree rqt_tf_tree
15.2. rosrun tf tf_echo body camera (打印出camera坐标系到body坐标系的变换矩阵: T b c T_{bc} Tbc)
注意: 打印出的四元数为: [x, y, z, w]

16. VScode 在打开新文件覆盖上一个窗口的问题

16.1. 点击文件名是预览模式, 会覆盖上一个窗口, 如果直接双击的话就会打开新的窗口而不覆盖.
16.2. 或者直接关闭预览模式, 方法见此处.

17. 代码规范

17.1. 安装clang-format工具:

sudo apt-get install clang-format

17.2. 代码风格指南,这里参考的是谷歌开源代码指南;

18. 数据总线

18.1. 我们平常说的64位, 32位应该是针对于数据总线而言的, 而不是地址总线, 因为电脑一般会标明最大内存为64G等参数, 说明地址总线并没有那么多, 不然我们的内存条可以是2^64这么大字节的空间, 显然不现实.

19. 引用

在这里插入图片描述

20. operator的两种用法

C++中的operator,有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换)。点击此处进行具体查看.

21.WPS开启多个窗口而不是新标签页

方法: WPS文字(也就是左上角)-选项-视图-勾选在任务栏中显示所有窗口

22. 一直不明白的rosdep妙用

其实他这个就是在安装该package需要的依赖包,比如rosserial等,如果依赖多的话需要输入很多次的apt-get install ros-<xxx>-xxx,而使用rosdep一句话就可以了,更加的方便快捷。
具体讲解见此处:ROS 之 rosdep 妙用:一键解决package依赖包问题

100. 疑惑

9.1. xorg compiz unity这几个之间的关系是什么呀?

10000. 参考资料

[1]. [wine5.0] ubuntu完美安装运行微信
[2]. .bashrc not sourced on Intellij IDEA’s terminal
[3]. Linux之shell以及bash、dash的详解
[4]. gcc和g++是什么,有什么区别?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值