CS1-必学工具
日常学习工作流
Contributed by @HardwayLinka
计算机领域的知识覆盖面很广并且更新速度很快,因此保持终身学习的习惯很重要。但在日常开发和学习的过程中,我们获取知识的来源相对复杂且细碎。有成百上千页的文档手册,也有寥寥数语的博客,甚至闲暇时手机上划过的某则新闻和公众号都有可能包含我们感兴趣的知识。因此,如何利用现有的各类工具,形成一套适合自己的学习工作流,将不同来源的知识碎片整合进属于自己的知识库,方便之后的查阅与复习,就显得尤为重要。经过两年工作之余的学习后,我磨合出了以下学习工作流:

底层核心逻辑
一开始我学习新知识时会参考中文博客,但在代码实践时往往会发现漏洞和bug。我逐渐意识到我参考的信息可能是错误的,毕竟发博客的门槛低,文章可信度不高,于是我开始查阅一些相关的中文书籍。
中文书籍的确是比较全面且系统地讲解了知识点,但众所周知,计算机技术更迭迅速,又因为老美在 CS 方面一直都是灯塔,所以一般中文书籍里的内容会滞后于当前最新的知识,导致我跟着中文书籍实践会出现软件版本差异的问题。这时我开始意识到一手信息的重要性,有些中文书籍是翻译英文书籍的,一般翻译一本书也要一两年,这会导致信息传递的延迟,还有就是翻译的过程中信息会有损失。如果一本中文书籍不是翻译的呢,那么它大概率也参考了其他书籍,参考的过程会带有对英文原著中语义理解的偏差。
于是我就顺其自然地开始翻阅英文书籍。不得不说,英文书籍内容的质量整体是比中文书籍高的。后来随着学习的层层深入,以知识的时效性和完整性出发,我发现 源代码
> 官方文档
> 英文书籍
> 英文博客
> 中文博客
,最后我得出了一张 信息损失图
:

虽然一手信息很重要,但后面的 N 手信息并非一无是处,因为这 N 手资料里包含了作者对源知识的转化——例如基于某种逻辑的梳理(流程图、思维导图等)或是一些自己的理解(对源知识的抽象、类比、延伸到其他知识点),这些转化可以帮助我们更快地掌握和巩固知识的核心内容,就如同初高中学习时使用的辅导书。 此外,学习的过程中和别人的交流十分重要,这些 N 手信息同时起了和其他作者交流的作用,让我们能采百家之长。所以这提示我们学习一个知识点时先尽量选择质量更高的,信息损失较少的信息源,同时不妨参考多个信息源,让自己的理解更加全面准确。
现实工作生活中的学习很难像学校里一样围绕某个单一知识点由浅入深,经常会在学习过程中涉及到其他知识点,比如一些新的专有名词,一篇没有读过的经典论文,一段未曾接触过的代码等等。这就要求我们勤于思考,刨根究底地“递归”学习,给多个知识点之间建立联系。
选择合适的笔记软件
工作流的骨架围绕 单个知识点多参考源,勤于提问给多个知识点之间建立联系
的底层核心逻辑建立。我们写论文其实就是遵循这个底层逻辑的。论文一般会有脚注去解释一些关键字,并且论文末尾会有多个参考的来源,但是我们平时写笔记会随意得多,因此需要更灵活的方式。
平时写代码习惯在 IDE 里一键跳转,把相关的函数和实现很好地联系在了一起。你也许会想,如果笔记也能像代码那样可以跳转就好了。现在市面上 双链笔记软件
就可以很好地解决这一痛点,例如 Roam Research、Logseq、Notion 和 Obsidian。Roam Research 和 Logseq 都是基于大纲结构的笔记软件,而 大纲结构
是劝退我使用这两款软件的原因。一是 大纲结构
做笔记容易使文章纵向篇幅太长,二是如果嵌套结构过多会占横向的篇幅。Notion 页面打开慢,弃之。最终我选择了 Obsidian,原因如下:
- Obsidian 基于本地,打开速度快,且可存放很多电子书。我的笔记本是 32g 内存的华硕天选一代,拿来跑 Obsidian 可以快到飞起
- Obsidian 基于 Markdown。这也是一个优势,如果笔记软件写的笔记格式是自家的编码格式,那么不方便其他第三方拓展,也不方便将笔记用其他软件打开,比如 qq 音乐下载歌曲有自己的格式,其他播放器播放不了,这挺恶心人的
- Obsidian 有丰富的插件生态,并且这个生态既大又活跃,即插件数量多,且热门插件的 star 多,开发者会反馈用户 issue,版本会持续迭代。借助这些插件,可以使 Obsidian 达到
all in one
的效果,即各类知识来源可以统一整合于一处
信息的来源
Obsidian 的插件使其可以支持 pdf 格式,而其本身又支持 Markdown 格式。如果想要 all in one
,那么可以基于这两个格式,将其他格式文件转换为 pdf 或者 Markdown。 那么现在就面临着两个问题:
- 有什么格式
- 怎么转换为 pdf 或 Markdown

有什么格式
文件格式依托于其展示的平台,所以在看有什么格式之前,可以罗列一下我平时获取信息的来源:

可以看到主要分为文章
、论文
、电子书
、课程
四类,包含的格式主要有 网页
、pdf
、mobi
、azw
、azw3
。
怎么转换为 pdf 或 Markdown
在线的文章和课程等大多以网页形式呈现,而将网页转换为 Markdown 可以使用剪藏软件,它可以将网页文章转换为多种文本格式文件。我选择的工具是简悦,使用简悦可以将几乎所有平台的文章很好地剪藏为 Markdown 并且导入到 Obsidian。

对于论文和电子书而言如果格式本身就是 pdf 则万事大吉,但如果是其他格式则可以使用 calibre 进行转换:

现在利用 Obsidian 的 pdf 插件和其原生的 markdown 支持就可以畅快无比地做笔记并且在这些文章的对应章节进行无缝衔接地引用跳转啦(具体操作参考下文的“信息的处理”模块)。

如何统一管理信息来源
对于 pdf 等文件类资源可以本地或者云端存储,而网页类资源则可以分门别类地放入浏览器的收藏夹,或者剪藏成 markdown 格式的笔记,但是网页浏览器不能实现移动端的网页收藏。为了实现跨端网页收藏我选用了 Cubox,在手机端看到感兴趣的网页时只需小手一划,便能将网页统一保存下来。虽然免费版只能收藏 100 个网页,但其实够用了,还可以在收藏满时督促自己赶紧剪藏消化掉这些网页,让收藏不吃灰。

除此之外,回想一下我们平时收藏的网页,就会发现有很多并不是像知乎、掘金这类有完整功能的博客平台,更多的是个人建的小站,而这些小站往往没有移动端应用,这样平时刷手机的时候也看不到,放到浏览器的收藏夹里又容易漏了看,有新文章发布我们也不能第一时间收到通知,这个时候就需要一种叫 RSS
的通信协议。
RSS
(英文全称:RDF Site Summary 或 Really Simple Syndication),中文译作简易信息聚合,也称聚合内容,是一种消息来源格式规范,用以聚合多个网站更新的内容并自动通知网站订阅者。电脑端可以借助 RSSHub Radar
来快速发现和生成 RSS
订阅源,接着使用 Feedly
来订阅这些 RSS
订阅源(RSSHub Radar
和 Feedly
在 chrome 浏览器中均有官方插件)。

到这里为止,收集信息的流程已经比较完备了。但资料再多,分类规整得再漂亮,也得真正内化成自己的才管用。因此在收集完信息后就得进一步地处理信息,即阅读这些信息,如果是英文信息的话还得搞懂英文的语义,加粗高亮重点句子段落,标记有疑问的地方,发散联想相关的知识点,最后写上自己的总结。那么在这过程中需要使用到什么工具呢?
信息的处理
英文信息
面对英文的资料,我以前是用 有道词典
来划词翻译,遇到句子的话就使用谷歌翻译,遇到大段落时就使用 deepl
,久而久之,发现这样看英语文献太慢了,得用三个工具才能满足翻译这一个需求,如果有一个工具能够同时实现对单词、句子和段落的划词翻译就好了。我联想到研究生们应该会经常接触英语文献,于是我就搜 研究生
+ 翻译软件
,在检索结果里我最终选择了 Quicker
+ 沙拉查词
这个搭配来进行划词翻译。

使用这套组合可以实现在浏览器外的其他软件内进行划词翻译,并且支持单词、句子和段落的翻译,以及每次的翻译会有多个翻译平台的结果。btw,如果查单词时不着急的话,可以顺便看看 科林斯高阶
的翻译,这个词典的优点就是会用英文去解释英文,可以提供多个上下文帮助你理解,对于学习英文单词也有帮助,因为用英文解释英文才更接近英语的思维。

多媒体信息
处理完文本类的信息后,我们还得思考一下怎么处理多媒体类的信息。此处的多媒体我特指英文视频,因为我没有用播客或录音学习的习惯,而且我已经基本不看中文教程了。现在很多国外名校公开课都是以视频的形式,如果能对视频进行做笔记会不会有帮助呢?不知道大家有没这样的想法,就是如果能把老师上课讲的内容转换成文本就好了,因为平时学习时我们看书的速度往往会比老师讲课的速度快。刚好 Language Reactor
这个软件可以将油管和网飞内视频的字幕导出来,同时附上中文翻译。
我们可以把 Language Reactor
导出的字幕复制到 Obsidian
里面作为文章来读。除了出于学习的需求,也可以在平时看油管的视频时打开这个插件,这个插件可以同时显示中英文字幕,并且可以单击选中英文字幕中你认为生僻的单词后显示单词释义。

但阅读文本对于一些抽象的知识点来说并不是效率最高的学习方式。俗话说,一图胜千言,能不能将某一段知识点的文本和对应的图片甚至视频画面操作联系起来呢?我在浏览 Obsidian
的插件市场时,发现了一个叫 Media Extended
的插件,这个插件可以在你的笔记里添加跳转到视频指定时间进度的链接,相当于把你的笔记和视频连接起来了!这刚好可以和我上文提到的生成视频中英文字幕搭配起来,即每一句字幕对应一个时间,并且能根据时间点跳转到视频的指定进度,如此一来如果需要在文章中展示记录了操作过程的视频的话,就不需要自己去截取对应的视频片段,而是直接在文章内就能跳转!

Obsidian
里还有一个很强大的插件,叫 Annotator
,它可以实现笔记内跳转到 pdf 原文

现在,使用 Obsidian
自带的双链功能,可以实现笔记间相互跳转,结合上述两个插件,可以实现笔记到多媒体的跳转,信息的处理过程已经完备。一般我们学习的过程相当于上山和下山,刚学的时候就好像上山,很陌生、吃力,所谓学而时习之,复习或练习的过程就像下山,没有陌生感,不见得轻松,但非走不可。那么如何把复习这一过程纳入工作流的环节里呢?
信息的回顾
Obsidian
内已经有一个连接 Anki
的插件,Anki
就是大名鼎鼎的、基于间隔重复的记忆软件。使用该插件可以截取笔记的片段导出到 Anki
并变成一张卡片,卡片内也有跳转回笔记原文的链接

总结
这个工作流是在我这两年业余时间学习时所慢慢形成的,在学习过程中因为对一些重复性的过程而感到厌倦,正是这种厌倦产生了某种特定的需求,恰好在平时网上冲浪时了解到的一些工具满足了我这些需求。不要为了虚无的满足感而将工具强行拼凑到自己的工作流中,人生苦短,做实事最紧要。
btw,此篇文章是讲解工作流的演化思路,如果对此工作流的实现细节感兴趣,建议阅读完本文后再按顺序阅读以下文章
实用工具箱
下载工具
- Sci-Hub: Elbakyan 女神向你挥手,旨在打破知识壁垒的革命性网站。
- Library Genesis: 电子书下载网站。
- Z-library: 电子书下载网站(在 Tor 下运行较佳,链接)。
- Z-ePub: ePub 电子书下载网站。
- PDF Drive: PDF 电子书搜索引擎。
- MagazineLib: PDF 电子杂志下载网站。
- BitDownloader: 油管视频下载器。
- qBittorrent: BitTorrent 客户端。
- uTorrent: BitTorrent 客户端。
- 全国标准信息公共服务平台:各类标准查询和下载官方平台。
- 标准知识服务系统:检索与阅读所需标准。
- MSDN,我告诉你: Windows 操作系统镜像下载站,也有许多其他软件的下载。
设计工具
- excalidraw: 一款手绘风格的绘图工具,非常适合绘制课程报告或者PPT内的示意图。
- tldraw: 一个绘图工具,适合画流程图,架构图等。
- draw.io: 强大简洁的在线的绘图网站,支持流程图,UML图,架构图,原型图等等,支持 Onedrive, Google Drive, Github 导出,同时提供离线客户端。
- origamiway: 手把手教你怎么折纸。
- thingiverse: 囊括各类 2D/3D 设计资源,其 STL 文件下载可直接 3D 打印。
- iconfont: 国内最大的图标和插画资源库,可用于开发或绘制系统架构图。
- turbosquid: 可以购买各式各样的模型。
- flaticon: 可下载免费且高质量的图标。
- 标准地图服务系统: 可以下载官方标准地图。
- PlantUML: 可以使用代码快速编写 UML 图。
编程相关
- sqlfiddle: 一个简易的在线 SQL Playground。
- sqlzoo:在线练习 sql 语句。
- sqlable:一个 SQL 工具网站(格式化器、验证器、生成器,SQL Playground)。
- godbolt: 非常方便的编译器探索工具。你可以写一段 C/C++ 代码,选择一款编译器,然后便可以观察生成的具体汇编代码。
- explainshell: 你是否曾为一段 shell 代码的具体含义感到困扰?manpage 看半天还是不明所以?试试这个网站!
- regex101: 正则表达式调试网站,支持各种编程语言的匹配标准。
- typingtom: 针对程序员的打字练习/测速网站。
- wrk: 网站压测工具。
- gbmb: 数据单位转换。
- tools: 在线工具合集。
- github1s: 用网页版 VS Code 在线阅读 GitHub 代码。
- visualgo: 算法可视化网站。
- DataStructureVisual: 数据结构可视化网站。
- Data Structure Visualizations: 数据结构与算法的可视化网站。
- learngitbranching: 可视化学习 git。
- UnicodeCharacter: Unicode 字符集网站。
- cyrilex: 一个用于测试和可视化正则表达式的网站,支持各种编程语言标准。
- mockium: 生成测试数据的平台。
学习网站
- HFS: 各类软件教程。
- Shadertoy: 编写各式各样的 shader。
- comments-for-awesome-courses: 名校公开课评价网。
- codetop: 企业题库。
- cs-video-courses: 带有视频讲座的计算机科学课程列表。
- bootlin: 在线阅读 Linux 源码。
- ecust-CourseShare: 华东师范大学研究生课程攻略共享计划。
- REKCARC-TSC-UHT: 清华大学计算机系课程攻略。
- seu-master: 东南大学研究生课程资料整理。
- 菜鸟教程: 计算机相关知识的简要的教程。
- FreeBSD 从入门到跑路: 一本 FreeBSD 的中文教程。
- MDN Web Docs: MDN 网络开发入门手册。
- Hello 算法: 动画图解、能运行、可提问的数据结构与算法快速入门教程。
百科网站/词典性质的网站
- os-wiki: 操作系统技术资源百科全书。
- FreeBSD Documentation: FreeBSD 官方文档。
- Python3 Documentation: Python3 官方中文文档。
- C++ Reference: C++ 参考手册。
- OI Wiki: 编程竞赛知识整合站点。
- Microsoft Learn: 微软官方的学习平台,包含了绝大多数微软产品的文档。
- Arch Wiki: 专为 Arch Linux 而写的 Wiki,包含了大量 Linux 相关的知识。
- Qt Wiki: Qt 官方 Wiki。
- OpenCV 中文文档: OpenCV 的社区版中文文档。
- npm Docs: npm 官方文档。
交流平台
- GitHub: 许多开源项目的托管平台,也是许多开源项目的主要交流平台,通过查看 issue 可以解决许多问题。
- StackExchange: Stack Exchange 是由 181 个问答社区组成(其中包括 Stack Overflow)的编程社区。
- StackOverflow: Stack Overflow 是一个与程序相关的 IT 技术问答网站。
- Gitee: 一个类似于 GitHub 的代码托管平台,可以在对应项目的 issue 里查找一些常见问题的解答。
- 知乎: 一个类似于 Quora 的问答社区,可以在其中提问,一些问答包含有计算机的知识。
- 博客园: 一个面向开发者的知识分享社区,拥有一些常见问题的博客,正确率不能保证,请谨慎使用。
- CSDN: 拥有一些常见问题的博客,正确率不能保证,请谨慎使用。
杂项
- tophub: 新闻热榜合集(综合了知乎、微博、百度、微信等)。
- feedly: 著名的 RSS 订阅源阅读器。
- speedtest: 在线网络测速网站。
- public-apis: 公共 API 合集列表。
- numberempire: 函数求导工具。
- sustech-application: 南方科技大学经验分享网。
- vim-adventures: 一款基于 vim 键盘快捷键的在线游戏。
- vimsnake: 利用 vim 玩贪吃蛇。
- keybr: 学习盲打的网站。
- Awesome C++: 很棒的 C/C++ 框架、库、资源精选列表。
- HelloGitHub: 分享 GitHub 上有趣、入门级的开源项目。
- Synergy: 一套键鼠能控制多台电脑。
毕业论文
为什么写这份教程
2022年,在开始动手写毕业论文的时候,尴尬地发现,对 Word 的掌握程度仅限于调节字体、保存导出这些傻瓜功能。曾想转战 Latex,但论文的段落格式要求调整起来还是用 Word 更为方便,经过一番痛苦缠斗之后,总算是有惊无险地完成了论文的写作和答辩。为了不让后来者重蹈覆辙,遂把相关资源整理成一份开箱即用的文档,供大家参考。
如何用 Word 写毕业论文
正如将大象装进冰箱需要三步,用 Word 写毕业论文也只需要简单三步:
- 确定论文的格式要求:通常学院都会下发毕业论文的格式要求(各级标题的字体字号、图例和引用的格式等等),如果更为贴心的话甚至会直接给出论文模版(如是此情况请直接跳转到下一步)。很不幸的是,我的学院并没有下发标准的论文格式要求,还提供了一份格式混乱几乎毫无用处的论文模版膈应我,被逼无奈之下我找到了北京大学研究生的论文格式要求,并按照其要求制作了一份模版,大家需要的话自取,本人不承担无法毕业等任何责任。
- 学习 Word 排版:到达这一步的童鞋分为两类,一是已经拥有了学院提供的标准模版,二是只有一份虚无缥缈的格式要求。那现在当务之急就是学习基础的 Word 排版技术,对于前者可以学会使用模版,对于后者则可以学会制作模版。此时切记不要雄心勃勃地选择一个十几个小时的 Word 教学视频开始头悬梁锥刺股,因为生产一份应付毕业的学术垃圾只要学半小时能上手就够了。我当时看的一个 B 站的教学视频,短小精悍非常实用,全长半小时极速入门。
- 生产学术垃圾:最容易的一步,大家八仙过海,各显神通吧,祝大家毕业顺利~~
信息检索
前言
碰到问题,记住第一件事是 翻阅文档 ,不要一开始就直接搜索或者找人问,翻阅FAQ可能会快速找到答案。
信息检索,我的理解来说,实际上就是灵活运用搜索引擎中,方便快捷的搜到需要的信息,包括但不限于编程。
编程最重要的,就是 STFW(search the fucking web) 和 RTFM(read the fucking Manual) ,首先要读文档,第二要学会搜索,网上那么多资源,怎么用,就需要信息检索。
要搜索,我们首先要搞清楚搜索引擎是如何工作的:
搜索引擎工作原理
搜索引擎的工作过程大体可以分成三阶段:[^1]
- 爬行和抓取:搜索引擎蜘蛛通过跟踪链接访问网页,获取网页 HTML 代码存入数据库。
- 预处理:索引程序对抓取来的网页数据进行文字提取,中文分词,索引等处理,以备排名程序调用。
- 排名:用户输入关键词后,排名程序调用索引库数据,计算相关性,然后按一定格式生成搜索结果页面。
第一步,就是大家经常听说的网络爬虫,一般 Python 卖课的都会吹这个东西。简单可以理解为,我用一个自动的程序,下载网站中的所有文本、图片等相关信息,然后存入本地的磁盘。
第二步是搜索引擎的核心,但是对于我们使用来说,并不是特别关键,大致可以理解为洗干净数据,然后入库页面,每个页面加入关键字等信息方便我们查询。
第三步跟我们息息相关,不管是什么搜索网站, google 、百度、 Bing ,都一样,输入关键字或者需要查询的内容,搜索引擎会给你返回结果。本文就是教你如何获取更好的结果。
基础搜索技巧
根据上述的工作原理,我们大致就能明白,其实可以把搜索引擎当作一个比较聪明的数据库,更好的使用查询条件就能更快速的找到你想要的信息,下面介绍一些搜索的技巧:
使用英文
首先我们要知道一件事,编程中,最好使用英文搜索。原因主要有几点:
- 编程和各种软件操作中,英文资料质量比中文资料和其他语言资料高,英文通用性还是更好些
- 因为翻译问题,英文的名词比中文准确通用
- 中文搜索中,分词系统不准会导致歧义,比如 Google 搜中文可能会搜不出几条有用结果
如果你英文不好,用百度翻译或者搜狗翻译,足够了。
当然下面的文档为了举例方便,都还是用中文例子。
提炼关键词
搜索时不要搜索整句话,虽然搜索引擎会自动帮助我们分词检索,但是整句和关键字搜索出来的结果再准确度和顺序上会有很大差别。搜索引擎是机器,并不是你的老师或者同事,看上面的流程,搜索实际上是去检索搜索引擎爬出来的数据库,你可以理解为关键字比模糊检索要快而且准确。
我们需要提炼问题,确定我们到底需要解决什么问题。
例如,我想知道 vcpkg 如何集成到工程上而不是全局中,那么搜索 vcpkg如何集成到工程上而不是全局中
这种长句可能无法找到相关的结果,最好是拆分成单词,vcpkg 集成到 工程 全局
这样的搜索。其实这里只是举个例子,针对本条其实都能搜索出相关信息,但是越具体的问题,机器分词越可能出问题,所以最好是拆分关键字,使用词组或者断句来进行搜索。
替换关键字
还是上面那个例子,如果搜不出来,可以试试把工程换成项目,或者移出集成,如果不行,试一下高级搜索。
高级搜索
普通搜索引擎一般都支持高级搜索,包括 google , bing ,百度, ecosia ,等等,大部分都支持,不过可能语法不同,一般通用的表示:
- 精准匹配: 精准匹配能保证搜索关键词完全被匹配上,一般是用双引号括起来
- 比如搜索线性代数,可以在输入框内输入 “线性代数”,搜索引擎将只匹配完整包含 “线性代数” 的页面,而不会搜索拆分成线性和代数两个词的页面
- 不包含关键字: 用 – 减号连接关键字,用于排除某些干扰词
- 包含关键字: 用 + 加号连接关键字
- 搜索特定文件类型:
filetype:pdf
直接搜索 pdf 文件 - 搜索特定网址:
site:stackoverflow.com
只搜索特定网站内的页面
一般可以参照网站说明,比如百度可以参照 高级搜索 ,Bing 可以参照 高级搜索关键字 和 高级搜索选项。
GitHub 的高级搜索
可以直接用 高级搜索页面 进行搜索,也可以参照 Github查询语法 进行查找,简单说几个:
in:name <关键字>
仓库名称带关键字查询in:description <关键字>
仓库描述带关键字查询in:readme <关键字>
README 文件带关键字查询stars(fork): >(=) <数字> <关键字>
star 或 fork 数大于(或等于)指定数字的带关键字查询stars(fork): 10..20 <关键词>
star 或 fork 数在 10 到 20 之间的带关键字查询size:>=5000 <关键词>
限定仓库大于等于 5000K 的带关键字查询pushed(created):>2019-11-15 <关键字>
更新 或 创建 日期在 2019 年 11 月 16 日之后的带关键字查询license:apache-2.0 <关键字>
LICENSE 为 apache-2.0 的带关键字查询language:java <关键词>
仓库语言为 Java 的带关键字查询user:<用户名>
查询某个用户的项目org:<组织名>
查询某个组织的项目 这些可以混合使用,也可以先查找某一类的 awesome 仓库,然后从 awesome 库里找相关的资源,github 里有很多归纳仓库,可以先看看已有的收集,有时候会节省很多时间
更多技巧
使用中,实际上我会去特定网站找一些问题:
- 如果是语言本身相关,比如 c++/Qt/OpenGL 如何实现什么功能,可以直接加上
site:stackoverflow.com
- 如果是具体的业务/开发环境或者软件相关,可以先在 BugList 、IssueList ,或者相关论坛里先找一下,比如 Qt 的问题就可以直接去 Qt 论坛,QGis 或者 GDAL 相关问题可以在 stackExchange 里去搜
- QQ 群也是一个提问的地方,但是需要你提的问题有意义,否则大部分人不会回你,而且 QQ 群回复并不及时。
- 知乎专栏、简书、博客园、 CSDN 中有大量中文笔记,这些都是别人嚼烂了的东西,基本是别人踩坑的经验
关于百度
大部分编程人都会告诉你别用百度,用 Google 或者 Bing 国际版,但是 Bing 中文搜索的准确率并不高, Google 需要科学上网,如果真的需要,可以使用 Ecosia 、 Yandex 之类的搜索引擎。而且中文搜索来说,百度可能还真是最好的。
百度的问题主要在于排序算法,可能两页都没啥对的内容,但是收录比 Bing 还是好一些的(百度以前并不遵守 robots.txt ,会抓取所有页面,所以有些个人网站甚至专门对百度做了屏蔽),甚至有时候比 Google 好。从数据库来说,百度比 Google 和 Bing 收录的中文内容要多,如果你碰到的时中文相关的问题而且确实找不到相关内容,那么就用百度,搜索引擎是工具,能用好用才是王道。
代码搜索
我们除了搜索引擎查找问题,还有可能会搜一些代码,可能是自己写的,也可能是项目中的,下面推荐一些工具:
代码检索有两种,第一是本地的代码检索,第二是要写个啥算法,需要在网上搜索
本地代码搜索
- ACK 或者 ACK2,老牌搜索工具,perl 写的
- The Silver Searcher c 实现的
- The Platinum Searcher go 实现的
- FreeCommander 自带的搜索,如果是固态硬盘速度还不错
- IDE 自带的,搜索有些时候并不太好用
开源代码搜索
- Searchcode 搜索开源代码,速度比较快
- 一行代码 国产的,有些国产工具很好用
all by csdiy.wiki