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. 比较优雅的方法:

  • Ubuntu通过/etc/default/grub文件来优雅地切换内核, 方法见此处;
  • 或者知乎这个方法更优雅一些: 使用grub-set-default命令).

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坐标系的变换矩阵: TbcT_{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++是什么,有什么区别?

软件相关的小问题记录相关推荐

  1. 【软件相关】Proteus仿真STM32记录

    文章目录 0 前期教程 1 前言 2 先说说建议的流程 3 需要注意的事项 3.1 供电网配置不要忘了 3.2 ADC模块的使用 3.3 元器件查询手册 4 一些小技巧 4.1 快速添加标号 4.2 ...

  2. 对于linux socket与epoll配合相关的一些心得记录

    对于linux socket与epoll配合相关的一些心得记录 没有多少高深的东西,全当记录,虽然简单,但是没有做过测试还是挺容易让人糊涂的 int nRecvBuf=32*1024;//设置为32K ...

  3. 360如何查看计算机配置文件,在电脑360安全卫士软件上如何查看拦截记录

    在电脑360安全卫士软件上如何查看拦截记录 腾讯视频/爱奇艺/优酷/外卖 充值4折起 小伙伴在使用电脑时肯定会遇到一些容易解决或者很麻烦问题,那么这是后我们可以通过查看拦截记录,那么如何在在电脑360 ...

  4. Deepin——使用小知识记录

    使用小知识记录 一.命令使用 1.deepin-xxxx命令 2.编辑命令edit系列 二.系统设置 1.开机延时设置 2.系统切换 3.时尚模式和高效模式 4.普通模式和特效模式 5.启动器(菜单栏 ...

  5. 视频消重软件百度云 小视频修改md5

             视频消重软件百度云 小视频修改md5          微网剧每集内的场景数量.镜头切换频率非常重要,标准将在后续的文章中深度分析.                      在短视 ...

  6. 微信小程序记录用户行为浏览记录和停留时间以及小程序全局分享

    微信小程序记录用户行为浏览记录和停留时间以及小程序全局分享 项目需求 1.后台统计一个用户在我们小程序的每个页面的停留时间 2,前台用户可以在个人中心看到自己的分享记录以及多少人查看 需求分析 需求一 ...

  7. 五.软件相关(各种各样的手机和电脑软件, 急速提升你使用手机和电脑的效率, 大大方便你的生活)

    本文是众多使用技巧中其中的一篇, 全部使用技巧点击链接查看, , 或直接查看本专栏其他文章, 保证你收获满满 我主页中的思维导图中内容大多从我的笔记中整理而来,相应技巧可在笔记中查找原题, 有兴趣的可 ...

  8. 工具软件中的一些操作记录

    工具软件中的一些操作记录 0. 目的: A. Visio A01.Visio图跨文件复制保持原样 A02.带有公式的visio 插入到word后模糊变形,如何保持原样? B. Windows系统 B0 ...

  9. JavaScript 本地对象和内置对象,2018哪个软件可以查车辆出险记录

    2018哪个软件可以查车辆出险记录,具体是如何解读车架号知道什么字母代表出厂日期是哪年的呢?我们下面文章就带大家了解下,让你通过车架号就能掌握是否是2019款的车了. 使用车架号可以查询到车辆的基本信 ...

最新文章

  1. 车道线检测--Towards End-to-End Lane Detection: an Instance Segmentation Approach
  2. TSNE 有代码实现有附3D 2D效果图
  3. SQL Server自带备份整个数据库脚本工具
  4. 织梦html不能生成,内容预览及生成HTML
  5. 中国新十大军工企业名单及简称 十大军工集团 原十大军工集团
  6. node开启子线程_多进程 amp; Node.js web 实现
  7. Spring事务CallbackPreferringPlatformTransactionManager
  8. Vue应用框架整合与实战--Vue技术生态圈篇
  9. 怎么抽象mysql数据库_一个用于mysql的数据库抽象层函数库
  10. 常见linux服务器系统异常问题
  11. 中英文对照 —— 饮食与美食
  12. Hive with as语法
  13. 线性代数及其应用第一章总结
  14. Java学习之多线程
  15. 如何设计一个小而美的秒杀系统(抢红包)?
  16. centos8安装中文版man帮助手册
  17. 园区网的网关部署在接入层还是汇聚层 面试官与求职者之间谈话
  18. 浏览器交互导出excel
  19. ORA-03113 错误分析与解决
  20. 网站使用手机相机_手机如何修改证件照片大小和分辨率

热门文章

  1. ROS: an open-source Robot Operating System
  2. iphone竖屏视频旋转_如何在iPhone上旋转视频
  3. MindMapper中的分支格式怎样进行修改
  4. 通俗说法+专业解释,载波聚合
  5. Mybatis-笔记1
  6. 使用python绘制奥运五环
  7. 飞秋(FeiQ)关闭好友上下线提示功能
  8. 卡西欧计算机亮度,卡西欧怎么调3秒灯
  9. HTML基础--CSS样式表(二)
  10. 关于global_step参数