如何善用搜索引擎?

前言 我们使用搜索引擎可能是为了搜集信息、或者是解决一些问题。但如果不能正确的使用搜索引擎,使用关键字等,可能搜到的答案就与问题相关不大,或者与我们的问题相差甚远。 这篇文章意在分享我个人在学习、工作中使用搜索引擎的一些技巧与思考,可能后续会不断的更新,如有纰漏,还请大家指正。 应该使用什么搜索平台? 想要提高搜索的效率,选择一个好的搜索引擎或者内容平台颇为重要。 下面列举的是我平时会使用的一些平台,列出的顺序代表了我个人对于他们的推荐程度: 通用搜索引擎:Google、Bing、DuckDuckGo、Baidu 编程相关问题:Stack Overflow、Github Issue、segmentfault、稀土掘金、腾讯云开发者社区、CSDN、华为云开发者社区 日常问题:V2EX 第一类为通用搜索引擎,例如 为什么最近头发掉的更多了? 在其上可以搜索任何问题,其中 Google 的使用门槛相对较高,而 Bing 针对国内用户来说是一个相对不错的选择,不建议常用 Baidu,因为其上广告非常多,有用信息密度相对较小。 第二类为编程相关问题,例如 CMake 为什么报错了? 其中 Stack Overflow、Github 虽均为国外的平台,但是国内是可以访问的,不过在 Baidu 搜索引擎中词条相对靠后,同时也需要使用英文来进行问题检索。(Btw,Stack 系列还有例如 Stack Exchange 平台,它的模式与前者相同,但是更偏日常一些。)除此以外,后面的平台均为国内平台,所列是我平时常见的一些,整体而言,前面的文章质量普遍会比后面的高一些,其中腾讯云开发者社区、CSDN、华为云开发者社区三者内容重叠度较高。 第三类为日常问题,例如 Mac 上有什么好用的 App ?可以在 V2EX 上寻找答案,当然,它也是包罗万象的,只不过我常用它来解决日常各类小问题。 如何正确的知道问题所在? 我们遇到一个问题,要首先能够定位这个问题的关键。 例如编译中出错了,可能有很多 log,你必须能够精确定位到到底哪一条 log 才是这次编译出错的关键,进而才能解决这个问题。 以 CMake 为例,编译时报错 log 一般为红色,警告 log 一般为黄色,普通 log 一般为白色。得益于这种等级/颜色分明的 log ,我们可以快速的定位报错。我们日常编程中,为了便于 Debug,最好也遵循这个规范,例如在 C++ 中打印错误 log 时推荐使用 std::stderr 而不是 std::stdout 。 见过很多身边的同学遇到了报错,就一股脑粘贴所有的报错 log,然后贴到搜索引擎中,发现相关的错误基本没有。这就是没有其中错误的关键,报错时的 log 可能 100 行只有 10 行是关键的,甚至只有一行是关键的,例如 100 行 log 中只有 未定义的引用(undefined reference to ‘xxx’) 这一句是最关键的。...

October 30, 2022 · 1 min · zzsqwq

为什么要使用条件变量?

为什么要使用条件变量? 前言 最近看了很多与线程有关的 C++ 新特性,条件变量是见的比较多的一个特性。 看的时候我发现,想要理解一个新的特性,关键的要看它的引入到底解决了哪些问题,没有什么特性我们要实现相同的功能要怎么做? 以我的理解来看,条件变量是一个线程间互相同步与通知的手段,他通过主动唤醒的方式减小了各个线程的开销,取代了简单但是消耗较大的一直被动循环检验与等待。 没有条件变量我们如何实现相同的需求? 这里采用现代C++教程1 中关于条件变量的一个例子作为基础: 不使用条件变量版本 #include <queue> #include <chrono> #include <mutex> #include <thread> #include <iostream> #include <condition_variable> int main() { std::queue<int> produced_nums; std::mutex mtx; // 生产者 auto producer = [&]() { for (int i = 0; ; i++) { std::this_thread::sleep_for(std::chrono::milliseconds(900)); std::unique_lock<std::mutex> lock(mtx); std::cout << "producing " << i << std::endl; produced_nums.push(i); } }; // 消费者 auto consumer = [&]() { while (true) { { std::unique_lock<std::mutex> lock(mtx); if(produced_nums....

August 24, 2022 · 2 min · zzsqwq

一个基于 Hugo 的个人主页主题

背景 之前看到过学长学姐做过个人主页,多是用来申请一些学校的夏令营使用的,觉得非常的 Nice,自己也想搞一个。 大家之前好像大多用的是基于 Hexo 的一个主题 — hexo-theme-academia,但是由于之前我用过 Hexo,觉得他有一些比较明显的弊端,例如环境配置比较麻烦、需要安装 Nodejs、npm 等环境,然后再安装 Hexo。其次它的构建速度比较慢,用起来感觉比较僵硬。 后来随着了解增多,尝试了 Typecho、WordPress,Hugo 等主题后,目前还是决定使用 Hugo。它构建速度快,而且安装简单,在 Ubuntu 上只需要一行 sudo apt install hugo 即可,不可谓不简单。因此萌生了移植一个 Hugo 版本主题的想法,刚好可以锻炼一下自己。 欢迎点击 这里 查看我的个人主页。 一些难点 之前从来没有了解过 Hugo 主题的写法以及 Hexo 主题的写法,不过看了一下仓库的组织形式还算好理解。 这类静态博客生成器都是需要写一些模板文件,然后根据配置文件进行个性化构建。 Hugo 的文档 十分的完善,学习就像是学习一门编程语言,里面有很多函数和变量,还有各种条件结构、循环结构等。原主题是采用的 pug + stylus 的方式,而不是传统的 html + css 。不过这两者之间的转换并不麻烦,而且有一些工具可以参考着转换,例如 pug2html 以及 stylus2css 。 后续就参考着一点点的移植就可以,同时我也改写了一下配置文件(使用的 yaml 格式),大概是更易于配置了。 同时,得益于 Hugo 的强大,我很方便的完成了对多语言的支持。 最终效果 目前已经更新到了 v1.1.0 版本,欢迎大家体验,有问题可以及时反馈! 主题链接:https://github.com/zzsqwq/hugo-academia-theme 演示站:https://zzsqwq.github.io/academic-pages-demo/ 英文文档:https://github.com/zzsqwq/hugo-academia-theme/blob/master/README.md 中文文档:https://github.com/zzsqwq/hugo-academia-theme/blob/master/README.zh_cn.md 英文效果图: 中文效果图:

May 3, 2022 · 1 min · zzsqwq

Docker-Gitlab 与主机共用 ssh 的 22 端口

背景 在使用 Docker 搭建 Gitlab/Gitee 会导致无法与主机端共用 22 端口,这导致 ssh 连接的时候会使用形如 ssh://git@git.xxxx.cn:4022/zs/zsblog.git 的 ssh 链接,而不是像官方 Gitlab 那种非常干净的 git@git.xxxx.cn/zs/zsblog.git 链接。这对于我这种强迫症而言非常的难受啊,但因为主机的 22 端口已经被占用了,无法共用,所以需要考虑两者共享端口的问题。 虽说是两者共用,但其实还是使用类似于端口转发的特点,简单说就是在主机设置 git 用户,然后通过一个脚本将 git 用户的所有 ssh 流量转发到 Gitlab 容器中,从而完成对应的事情。 关于 Gitee 的设置,Gitee 官方的 Docker 部署教程1已经说的很清楚了,按照该步骤执行完全没问题。 而关于 Gitlab 貌似没有比较详尽的教程,搜索后发现了一个 Issue2 以及一篇博文3,后者讲的比较清楚,但是经过实践后发现存在一定问题,因此决定将可行的方案记录下来。 具体步骤 一、初始设置 在开始之前,docker-compose.yml 中设置比较关键的几个配置如下: gitlab-web: image: 'gitlab/gitlab-ce:latest' container_name: 'gitlab' restart: always environment: GITLAB_OMNIBUS_CONFIG: | gitlab_rails['gitlab_shell_ssh_port'] = 4022 ports: - '3090:80' - '4022:22' - '6060:6060' volumes: - '/srv/gitlab/config:/etc/gitlab' - '/srv/gitlab/logs:/var/log/gitlab' - '/srv/gitlab/data:/var/opt/gitlab' - ....

April 24, 2022 · 3 min · zzsqwq

关于春节期间的一些碎碎念

前言 春节期间,走亲访友是必不可少的。交谈的多了,免不得一些问题的讨论。 读了很多书,经历了很多事,似乎想法也有一些”离经叛道“,记一下自己目前的一些想法,不知道多年后的自己看这篇文章会是什么想法,还会一如既往的坚持吗。 讨论的话题 打点关系 无论是父母,还是各方亲戚,大家好像都喜欢打点关系,以此来获得一些好处。 最常见的是求人办事,很多时候是我们常说的”走后门“,想让孩子上个好点的小学,避免不了又送礼又吃饭。 事件上升的恶劣一些,定然就是贪污受贿,这肯定是错的,大家都知道,但是度在哪里呢。 和我儿时的哥哥探讨中,他认为,这种送礼打点关系是必要的,送点小礼没啥问题。而我总觉得,这就是0、1、无穷的区别,有一就有二,有二就有无穷。 从出生到现在,试问自己从没遇到过必须送礼才能办成的事,或许以后会遇到,但我想、我应该宁愿放弃这个机会也不会去送礼打点。 大家都对我说:“你现在是这个想法,是没有经历过社会的毒打,你踏入社会就也会这样了。”,我无言。 或许吧,或许以后也会变成善于打点关系、整天辗转于酒局的人。 至少我现在,还是个滴酒不沾、不屑于打点的鸟人。 酒文化 我是个滴酒不沾的人 有两点比较重要的原因 一个是因为酒真的很难喝,好喝也就罢了,难喝为什么要喝呢? 二是因为我真的很讨厌饭桌上推杯换盏,你推我我推你,大家都喝得烂醉如泥。村里有很多喝酒出事去世的例子,小时候看见一个哥哥的朋友,喝醉后在大街上和别人干架,然后在欢喜的日子里一起进医院···何必呢? 推杯换盏还导致饭菜里会混入多多少少的酒,真的不好吃。 大家为什么都不能别这么执拗,这里用执拗可能不合适,不过没想到什么好的词语。人家明明都说了不喝、不吃,为什么还总要一遍遍的推脱?最后立场不坚定的,只能不情愿地吃了。立场坚定的,又闹得双方不愉快似的。 还有很多明明想喝、想吃,却又怕尴尬嘴上说着不喝不吃,一样可恶。 硬唠 平时在家总喜欢窝在自己的屋子里,倒腾自己的事情。 亲戚来了,似乎不出去跟他们聊天就是个错误。总是要数落你一下,在饭桌上调侃你一下,跟家长阴阳怪气一下你。 不想说的是,真的感觉没有什么共同话题,聊不到一起去,实在是没什么话说,只能在那里低头玩手机,哦对了,手机也不得玩,玩多了也会被说。只能在那里干坐着东看西看,听大家侃大山,却因为离家过久大多事都没听说过,时间白白的浪费。 人际关系真的蛮烦的。 关于入党 最近舅家的哥哥萌生了入党的想法,说:”就算无论花多少钱,也得入党。“ 我问,那你入党又是为了做什么呢? 他说,入党好啊,入党好啊,入党可以在村委里谋个一官半职,可以轻松一些,赚钱也多。 我说你不应该为了自己的私利来入党,他说,人不为己天诛地灭,没有人不顾自己的私利。 实话的讲,我哥哥是个不错的人,乐于与村里人交善,村民家里出什么事他也喜欢帮忙。但是这个入党的观念真的让我不理解,入党是应该认为认同,而不是因为利益驱使。 大家入党好似都是为了后续能谋个公务员的出路,如果能贯彻为人民服务的宗旨还好,如果一心为了钱,很容易会变成蛀虫、老虎,那这样的话,不如踏踏实实另谋出路。 后记 春节期间思考了很多,感觉与周围的很多亲戚们都格格不入。 文章算是想到什么写什么,可能看起来杂乱无章,见谅。文章也只是我自己的一些看法,不代表普遍性,也无言对错,大家看看就好。 还好的是,我的亲戚们大多不会问我,考的咋样,有对象了没…… 之前与一个舅家的哥哥很要好(与上文不是同一个),因为之前感觉我们两人观念很类似,亲戚们也都觉得我们两个像。 这个春节与他进一步交流了一些,似乎观念不尽相同了。 现在他步入社会,参加了工作,开始应付酒局,也会打点关系了。也开始教导我应该善于打点。 我以后也会这样吗?

February 10, 2022 · 1 min · zzsqwq