在这个日新月异的时代,似乎每天如果不有点进步似乎都不好意思出门见人,
也更不好意思,谈理想和人生。
汤铭有云:苟日新,日日新,又日新!
你我或许是稚子顽童,青年才俊 亦或许是老骥伏枥,均可意气风发,志在千里。
但千里之行,终须始于足下,
万丈高楼也需凭地基而起,
像大海一样的事业也是靠江河小流聚势而成。
《大学》里说: 物有本末,事有终始,知所先后,则近道矣。
本系列的目标即是研究,学习之道,自我提升之方法论。
欢迎一起参禅悟道,勇攀高峰!
我是晓光,希望能和你相伴。公众号:猫爪在线
在这个日新月异的时代,似乎每天如果不有点进步似乎都不好意思出门见人,
也更不好意思,谈理想和人生。
汤铭有云:苟日新,日日新,又日新!
你我或许是稚子顽童,青年才俊 亦或许是老骥伏枥,均可意气风发,志在千里。
但千里之行,终须始于足下,
万丈高楼也需凭地基而起,
像大海一样的事业也是靠江河小流聚势而成。
《大学》里说: 物有本末,事有终始,知所先后,则近道矣。
本系列的目标即是研究,学习之道,自我提升之方法论。
欢迎一起参禅悟道,勇攀高峰!
我是晓光,希望能和你相伴。公众号:猫爪在线
免费搭建一个静态独立博客。
关键词: 免费,静态独立博客。
免费的问题是通过GitHub解决的,Github有提供相关的免费服务,我们基于此可以构建免费的静态独立博客。
Git 是目前世界上最先进的分布式版本控制系统(没有之一)。这是使用 Git 的目的是将我们的网站部署到服务器(GitHub)上面去。
推荐: https://gitforwindows.org/
安装好 Git 后,只需要进行下面的配置即可
在终端进行操作,设置 user.name 和 user.email 配置信息,我这里设置为全局。
1 | git config --global user.name "你的GitHub用户名" |
通过注册的邮箱生成 ssh 密钥文件:
1 | ssh-keygen -t rsa -C "你的GitHub注册邮箱" |
然后直接三个回车即可,默认不需要设置密码。最后得到了两个文件:id_rsa和id_rsa.pub。
打开 id_rsa.pub 文件,将里面的内容全部复制。
登录自己的Github,选择 setting -> SSH and GPG keys
在SSH keys 项中 点击 New SSH key 按钮
Title可以自己定义, key中 拷贝入刚才在id_rsa.pub 文件 拷贝的内容
点击Add SSH key 配置完成。
1 | ssh -T git@github.com |
显示如下代表OK
1 | λ ssh -T git@github.com |
Hexo 基于 Node.js,因此需要先安装 Node.js;
你可以在这里进行对应电脑版本的下载:https://nodejs.org/en/download/
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
所有必备的应用程序安装完成后,即可使用 npm 安装 Hexo。
1 | npm install -g hexo-cli |
安装好 Hexo 后,马上就能使用了。首先初始化博客,输入:
1 | $ hexo init myBlog |
接下来,进入文件夹 myBlog,输入
1 | $ hexo s |
此时,在本地的你的博客已经运行起来,可以在浏览器中查看
然后,打开浏览器输入地址:
1 | localhost:4000 |
执行到这里事实上博客就已经搭建好了,接下来就是去完善它。
注意:下面的命令都是在 myBlog文件里进行操作的。
你可以将你平时写的文章直接导入到 _posts 文件夹里,注意文章类型得是 md格式。
你可以执行下列命令来创建一篇新文章。
1 | hexo new [layout] <title> |
使用 Hexo 生成静态文件快速而且简单。
1 | hexo generate |
输入以下命令以启动服务器,你的网站会在 http://localhost:4000 下启动。在服务器启动期间,Hexo 会监视文件变动并自动更新,无须重启服务器。
1 | hexo server |
如果你想要更改端口,或是在执行时遇到了 EADDRINUSE 错误,可以在执行时使用 -p 选项指定其他端口,如下:
1 | $ hexo server -p 5000 |
1、hexo init [folder] 初始化本地文件夹为hexo项目
2、hexo new “我的博客文章” #新建文章
3、hexo generate #生成网页
4、hexo server #启动服务预览
Hexo 提供了快速方便的一键部署功能,只需一条命令就能将网站部署到服务器上。
1 | $ hexo deploy |
在开始之前,必须先在 _config.yml 中修改参数,一个正确的部署配置中至少要有 type 参数,例如:
在_config.yml中进行修改。
修改其中的deploy 为自己的内容。
1 | # Extensions |
这一步的目的是将 Hexo 与 GitHub 进行关联。
配置好后通过
1 | $ hexo d |
命令,稍等片刻,网站就已经部署好了,可以在浏览器输入你的GitHub名称.github.io,这样一个免费的博客就已经搭建好了。
我的博客是
hexo 默认的主题可能显得有点呆板,你可以在 https://hexo.io/themes/index.html进行主题的挑选更换。将下好的主题安放在`themes`文件夹内,同时在`_config.yml`中进行主题修改就好了。
一般大佬们提供的主题都会提供文档说明,按照说明进行简单的设置就能拥有一个酷炫的页面了。
推荐链接:
hexo d
ERROR Deployer not found: git
执行以下命令即可
1 | $ npm install --save hexo-deployer-git |
INFO Checking dependencies
ERROR Package cheerio is not installed.
ERROR Please install the missing dependencies from the root directory of your Hexo site.
1 | $ npm install cheerio |
动手试一下吧!
很高兴大家来到这里,我是‘东胜神州’博客
在这里我会坚持优质的内容
坚持价值投资
坚持长期主义
热爱美食 旅行 编程 参禅悟道
坚持成就你我的梦想
坚持知行合一(实践类的话题坚持打磨出个不错的(或实习)产品,有所得)
如切如磋,如琢如磨
欢迎大家多提宝贵意见! 十分感谢!
开放包容 锐意进取 合作共赢!
有好的想法或创意欢迎加我!
我的公众号: 猫爪在线
Email: frank2019@yeah.net
QQ:454052811

The person who says he knows what he thinks but cannot express it usually does not know what he thinks.
— Mortimer Adler
生硬翻译一下是:
心里感觉知道,但是不能准确的表达清楚,其实并非真正地知道。
理查德·费曼
美国理论物理学家,量子电动力学创始人之一,纳米技术之父。
有一种学习方法被归于费曼的名下,虽然并没有事实证据是由费曼提出,但这个方法帮助了很多人快速学习一门技能。
费曼学习法总共分四部(以下为众多版本之一):
选择一个你要学习的概念,或者说是技能点;
想象把这个概念教给一个外行(或者八岁小孩), 不使用任何高级的词汇或复杂的概念(因为使用它们时你很容易又陷入自欺的怪圈),使用小学生都可以听懂的语言。用这种方法讲授时,其实是在迫使自己更深刻的理解这个概念。同样重要的是,会发现自己在那些地方理解的还不够透彻。
概念是一切知识架构的基石。所谓的“独立思考” ,对其最朴素的描述无非是:能够独立地、正确地使用正确的概念。
—-李笑来在《新生》一书
[With first principles thinking] you boil things down to the most fundamental truths … and then reason up from there.
[当你使用基本原则思维时] 你将事情追溯到最基本的真理…然后,从最基本的真理出发,向上逻辑推导。
—马斯克
“你从头读,尽量往下读,直到你一窍不通时再从头开始,这样坚持往下读,直到你完全读懂为止”。
–费曼
董遇字季直,性质讷而好学。人有从学者,遇不肯教,而云“必当先读百遍!”言:“读书百遍,其义自见”。从学者云:“苦渴无日。”遇言“当以‘三余’。”或问“三余”之意,遇言“冬者岁之余,夜者日之余,阴雨者时之余也。
<三国志>
“是故学然后知不足,教然后知困。知不足然后能自反也,知困然后能自强也。故曰教学相长也。”
《礼记·学记》
PS: 这不就是费曼学习法吗?
如果你想更多的了解费曼的思想,不妨读读下面几本书。
《别闹了,费曼先生》
《你干吗在乎别人怎么想?》
《发现的乐趣》
《费曼手札》
《费曼传》
《费曼物理学讲义》
2013年,BBC播出了一个费曼的记录片:The Fantastic Mr. Feynman,1个小时,也可以找来看看。
公众号: 猫爪在线
两则典故,关于学习方法,关于教学相长。
原文
虽有佳(嘉)肴,弗食,不知其旨也;虽有至道,弗学,不知其善也。是故学然后知不足,教然后知困。知不足,然后能自反也。知困,然后能自强也。故曰:教学相长也。兑命曰:“学学半。”其此之谓乎?
译文
即使有美味的菜肴,不吃,不会知道它的味道鲜美;即使有最好的道理,不学,不会知道它的高妙。因此,(通过)学习然后知道(自己)有不足的地方,(通过)教然后知道(自己)有困惑不解的地方。知道(自己)有不足的地方,然后(才)能够督促自己(进一步学习);知道(自己)有困惑不解的地方,然后才能够自我奋发进取。所以说:教和学是互相促进、共同提高的。《兑命》说:教别人也是自己学习的一半。大概说的就是这个道理吧。
原文
剑虽利,不厉不断;材虽美,不学不高。虽有嘉肴①,不尝不知其旨②;虽③有善道,不学不达其功。故学然后知不足,教然后知不究④。不足,故自愧而勉;不究,故尽师而熟。由此观之,则教学相长也。
译文
剑刃虽然锐利,不磨就不能斩断他物;人的资质虽然聪颖,不认真学习,就不能提高修养。虽然有美酒佳肴,不亲口品尝,就不能知道它们的味美;虽然有正确的道理,不努力学习,就不能通达它们的功用。所以说,通过学习,然后才会发现自己的不足;通过传授,然后才知道自己研究不深。发现自己的不足,就会心愧而努力学习,知道自己的研究不深,就会遍天下求师而弄透事理。从这些看来,传授与学习是相互促进的。
PS: 古代经典还是很有必要读的,不然死后不好意思见古人!
古人说: 格物、致知、诚意、正心 , 修身、齐家、治国、平天下 。
古人又说: 立德、立功、立言 ,三不朽。 写博客也算立言的开始吧。
我觉得这是金玉良言啊。
那么咱们谈谈,我觉得写博客的好处具体有那些?
如果你对独立博客感兴趣,可以加入群聊。一起交流
独立博客爱好群QQ群: 1071329826
用于给APP提供访问hardware的Camera API2,通过binder来访问camera service。
1 | frameworks\base\core\java\android\hardware\camera2 |
frameworks\av\camera 是camera framework与camera service IPC通讯的数据载体等等
CameraManager:
Camera2操作camera主要类
CameraDeviceImpl:
CameraCaptureSession:
1 | frameworks\av\services\camera\libcameraservice |
主要类或文件
CameraDeviceClient.cpp
CameraProviderManager.cpp
Camera3Device.cpp
1 | frameworks/av/camera/aidl/android/hardware |
(1) ICameraService 是相机服务的接口。用于请求连接、添加监听等。
(2) ICameraDeviceUser 是已打开的特定相机设备的接口。应用框架可通过它访问具体设备。
(3) ICameraServiceListener 和 ICameraDeviceCallbacks 分别是从 CameraService 和 CameraDevice 到应用框架的回调。
1 | hardware\interfaces\camera\provider\2.4 |
CameraProvider.cpp android.hardware.camera.provider@2.4-service.rc
1 | hardware\interfaces\camera\common\1.0 |
1 | vendor\qcom\proprietary\camx\src\core |
主要类
camerahal3entry.cpp: camera hal 调用的入口 camxhal3.cpp: camera hal接口主要实现类,capture_Request与capture_Result中转类,主要通过这个类来处理capture request与回调 capture result. camxhaldevice.cpp: camxhal3module.cpp
vendor\qcom\proprietary\chi-cdk\vendor\node
核心算法都在这里
作为开发人员,我们都面临着向程序引入图形界面的痛苦。传统的GUI库增加了一定程度的复杂性,如果您正在制作用于调试的工具,则可能不需要这些复杂性。在这里,我们提供了一个库,使创建记录器、配置文件器、调试器甚至整个游戏编辑器成为可能。这里介绍的整个示例可在Github上查阅。
Dear ImGui 是一个令人惊叹的C++ UI 库,主要应用在游戏开发。该项目是开源软件,基于MIT license。Dear ImGui专注于简单性和生产力,使用的是Inmediate Mode GUI paradigm。
即时模式GUI不同于传统的保留模式界面,因为小部件是在每个帧上创建和绘制的,而传统的方法是首先创建小部件并向其添加回调。这种模式的一些好处是您的UI“更接近”您的数据,并且它允许快速原型化。
Dear ImGui主要设计用于开发人员在内容创建和调试工具中使用..它是渲染器不可知论的方式,您必须提供工具来呈现数据,但它非常容易集成到您自己的代码中,因为它有多个绑定的不同窗口和事件处理库(如GLFW,SDL2和GLUT)和多个渲染器(如OpenGL,DirectX和Vulkan)。
Dear ImGui配备了许多小部件,如窗口、标签、输入框、进度条、按钮、滑块、树等。你可以在下面的图片中看到一些例子。

ImGui的典型用途是当您已经有了一个启用3D管道的应用程序,如内容创建或游戏开发工具,您希望在其中添加GUI。让我们看看在我们的应用程序中集成ImGui是多么容易。我们的示例应用程序使用OpenGL3呈现三角形。我们将使用GLFW管理窗口创建和事件处理。由于ImGui独立于渲染系统和平台,我们必须为我们的渲染系统引入一些绑定。幸运的是, Dear ImGui的设计中包含预先的绑定,比如我们在使用的Dear ImGui v1.69中我们包含以下头文件:
使此工作的最小代码在main.cpp中。首先,初始化用于呈现的窗口,然后必须初始化DearImGui上下文以及助手平台和Renderer绑定。如果您愿意,也可以更改渲染样式。
1 | // Setup Dear ImGui context |
然后,您进入主应用程序循环,在那里您可以清楚地看到与经典保留模式GUI的区别。
1 | while (!glfwWindowShouldClose(window)) |
当然,当循环结束时,做一些清理。
1 | ImGui_ImplOpenGL3_Shutdown(); |
所以,这就是我们得到的:

例如,让我们说,我们想要改变三角形的位置/方向和颜色。这就像调用一些滑块和选色器,并通过着色器将数据传递给三角形一样简单:
1 | // render your GUI |

还有一些基本的绘图工具。

如果您想探索不同的库小部件和选项,最好的方法是调用ImGui:ShowDemoWindow()并查看不同的示例。
使用Connan建立一个使用ImGui的项目是一个几分钟的问题。这里显示的示例是使用Windows和Visual Studio2017,但在MacOS或Linux中非常相似。
如果您想尝试一下,可以从Connan示例中下载所有文件:
1 | git clone https://github.com/conan-io/examples.git |
首先,让我们检查CMake项目。它有GLFW和OpenGL3的绑定,还有两个文件来处理OpenGL阴影和文件读取。它还将复制每次重新编译应用程序时呈现三角形的着色器到工作目录。
1 | cmake_minimum_required(VERSION 3.0) |
我们还需要conanfile来声明它所依赖的库。除了GLF W库,我们还谈到了我们需要GLE W库来处理OpenGL函数加载。我们将使用cmake_multi为Debug和Release配置生成项目。还添加了一个导入部分,以下载GLFW和OpenGL3所需的绑定。
1 | [requires] |
现在让我们构建项目并运行应用程序。
1 | cd dear-imgui-conan-example |
Dear ImGui是一个强大的库,具有易于使用的API,它几乎无缝地集成到3D管道启用的应用程序中。它有很多小部件,可以成为一个很好的工具来制作调试软件,如分析器、记录器或任何类型的对象编辑器。此外,目前正在开发新的功能,如对接或多个视图端口。现在是时候体验Dear ImGUI了,并使它与您自己的代码交互了!