嵌入式Hacker (es-hacker)

Embedded bsp developer enjoys thinking and hacking opensource and develop boards(NanoPi, LicheePi, RPi...)

0%

哈喽,我是老吴,继续记录我的学习心得

作为一个高度自律的人,我喜欢跑步,为此受过伤病的困扰,万恶的足底筋膜炎!

跑步数据

作为程序员和写作爱好者,是非常需要锻炼身体。

如果你也喜欢跑步,可以考虑阅读这本书:

《无伤跑法》

如何评估一本书是否值得阅读?

好书那么多,我要避免浪费时间在烂书上。下面以《无伤跑法》这本书为例分享一下我是如何评估一本书的。

1) 检查基本信息:

1
作者: 戴剑松 / 郑家轩
2
出版年: 2018-12-1
3
页数: 268
4
...
5
豆瓣评分 8.8 272人评价

该书评价人数虽然不高,但是评分较高。

2) 检查作者的专业度:

1
南京体育学院 / 体能康复实验中心主任
2
南京医科大学 / 公共卫生与预防医学博士
3
知乎运动健身专栏作家(182篇文章)

我去知乎查阅了一下戴老师的文章,质量很高。

3. 查阅目录,确定有自己感兴趣的新知识:

1
...
2
第五章 没有伤痛才能轻盈奔跑
3
    第十一节 一网打尽足底痛
4
...

第五章就是我想重点阅读的章节,里面大概率有我需要的知识。

4. 一本书如果读了 3 章感觉收获不大,就要考虑换书了。


每天一点C / 位和字节

正文目录:

1
1 位相关的运算符
2
2 位相关的用法
3
3 位字段 (bit field)
4
4 怎样判断机器的字节顺序?
5
5 怎样将整数转换到二进制或十六进制?
6
6 怎样高效地统计整数中为1的位的个数?
7
相关参考

写作目的:

  • 记录一些 C 语言中位和字节相关的操作。

测试环境:

  • Ubuntu 16.04
  • gcc version 5.4.0
阅读全文 »

哈喽,我是老吴。

今天分享一篇18年应届生的总结文。文章于首发于[嵌入式大杂烩] (2019-10-16)。

一名嵌入式软件工程师的成长总结

文章里干货多多,各位慢慢品读吧。

以下是原文。


目录:

1
一、我的工作经历
2
    1.1 第一家公司
3
    1.2 第二家公司
4
    1.3 第三家公司
5
二、小、中、大公司的特点
6
    2.1 小公司
7
    2.2 中等公司
8
    2.3 大公司
9
三、实习、校招、社招
10
    3.1 关于实习
11
    3.2 关于校招
12
    3.3 关于社招
13
四、嵌入式确实很杂
14
    4.1 专业不对口的工作
15
    4.2 找异地工作
16
    4.3 要多注意身体
阅读全文 »

哈喽,我是老吴,继续记录我的学习心得。

每天一点系列是我对微习惯的践行。现在能做到每天一点 C,将来就会有更多的每天一点系列,没人规定嵌入式软件工程师就只能学习 C 语言和折腾 Linux,不要给自己设限。

为什么是每天一点?
养成写作习惯的第一步:放弃追求大段的、固定的、安静的写作时间,培养随时写作的能力。

同样的技巧也能应用到技术学习上,工程师也可以放弃追求大段的、固定的、安静的看书写代码的时间。遇到一个新知识,第一时间找到相关资料,找到切入点并将其记录在自己的技术笔记中,并且定期复查及完善。

30 岁的中年工程师能做到每天坚持学习,你还抱怨没时间学习吗?


每天一点C / 数组和指针

正文目录:

1
1. 数组名是该数组首元素的地址
2
2. 用指针操作数组
3
3. 数组和指针的关系密切
4
4. 编写处理一维数组的函数:传递数组起始地址+数组长度
5
5. 编写处理一维数组的函数:传递数组起始地址+结束地址
阅读全文 »

哈喽,继续记录我的学习心得。

每天一点系列是我对微习惯的践行。现在能做到每天一点 C,将来就会有更多的每天一点系列,没人规定嵌入式软件工程师就只能学习 C 语言和折腾 Linux,不要给自己设限。

为什么是每天一点?
养成写作习惯的第一步:放弃追求大段的、固定的、安静的写作时间,培养随时写作的能力。

同样的技巧也能应用到技术学习上,工程师也可以放弃追求大段的、固定的、安静的看书写代码的时间。遇到一个新知识,第一时间找到相关资料,找到切入点并将其记录在自己的技术笔记中,并且定期复查及完善。

30 岁的中年工程师能做到每天坚持学习,你还抱怨没时间学习吗?


每天一点C / 一维数组的初始化

正文目录:

1
1. 用以逗号分隔的值列表来初始化数组
2
2. 把数组设置为只读
3
3. 忘记初始化数组
4
4. 部分初始化数组
5
5. 让编译器自动推导数组大小
6
6. 指定初始化器 (designated initializer )
阅读全文 »

一、让人失控的自我批评

我们一直被灌输一种的观点:
失败时,你要重视自己的失败,在没达到自己设定的预期目标时作自我批评。我们需要一个严厉的声音,来控制自己的胃口、本能和弱点,同时威胁自己再这么下去会有严重的后果。如果无视内心的审视和批评,我们会完全失去自控。觉得自我批评是自控的基础,自我同情会导致自我放纵。

这是一种错误的观点,事实恰恰相反:
许多科学实验已经表明了:自我批评会导致情绪低落,进而削弱自控力。促使人增强责任感并做出改变的并不是自我批评,而是自我谅解。持自我同情态度的人比持自我批评的态度的人更愿意承担责任。他们也更愿意接受别人的反馈和建议,更可能从这种经历中学到东西。

现代人工作、生活、学习的压力已经非常大了,我们最不缺的就是给我们带来愧疚、焦虑的自我批评了。
当你遇到挫折并感到失败时,试下原谅自己,谅解自己,这样反而更容易促使你做出改变。

二、Linux系统编程-通用文件模型

写作目的:

  • 学习 Linux 文件模型相关的知识。

正文目录:

1
1. Linux 的两大抽象
2
3
2. 文件类型
4
5
3. 文件描述符
6
7
4. 通用文件模型:简介
8
    4.1 演示 demo
9
    4.2 相关要点: 与 VFS 的关系
10
11
5. 通用文件模型:文件描述符和打开文件的关系
12
    5.1 相关的内核数据结构
13
    5.2 列举几种打开文件的情景
阅读全文 »

早,几天不见,是否有人想念我。

你是在进行无效阅读吗?

1. 什么是无效阅读:

  • 每天都读十几篇干货满满的文章,但读完也就忘了,记不住也学不到,这就是无效阅读。

  • 无效阅读的目标不是要通过阅读解决一个什么问题、学习一个什么技巧、思考一个什么话题。一篇文章或者一本书读完了,任务也就完成了,这样的阅读只能起到自我安慰的作用。

  • 很多人把阅读目标定为 “我这周要读完2本书”,“我今天要看完10篇文章”,其实根本没用,因为读完不是目的,吸收才是目的。

2. 几个提高阅读效果的技巧:

  • 要带着目标和预期阅读;

  • 边阅读边思考,创造环境去做笔记,善用手机,善用微信。

  • 进行主题式聚焦阅读;

  • 好内容要反复阅读;

  • 带着批判性思维和学习的心态阅读;

  • 阅读时,不断代入自己的工作和生活场景。

以下是正文,先明确正文目的:

  • 举例说明在 Linux 中如何使用 pipe 进行父子进程间的同步。
    阅读全文 »

早,继续记录我的学习心得。

当你厌倦了自己的目标时,怎样继续保持专注?

误区:
成功人士说的都是自己如何“满怀热情”去努力实现他们的目标。不管是在商业、体育还是艺术界,我们听到的都是“一切都归结于激情”或者“你必须真的渴望得到它”之类的说法。这让我们认为成功人士会有无限的激情,如果我们感到自己激情消退了,仿佛说明了我们不如他们,这让人很沮丧。

事实是:
他们没把话说完整。成功人士也会和普通人一样感到激情消退,这是任何有都无法逃脱的。熟能生巧。但是你练习的次数越多,它就变得越无聊,越像是机械地重复。

成功的最大威胁不是失败,而是倦怠。我们厌倦了好习惯,因为它们不再让我们开心。就好像写作一样,长期来看会给我带来好的结果,但是总会有那么几天我也会感觉写作是枯燥的。

成功人士更强大的地方在于:
尽管感到枯燥乏味,他们仍想办法坚持下去。

对抗枯燥感的小技巧:
在开始做自己不不想做的事情时: 先一边听音乐一边干,15分钟后再摘下耳机。必须控制时间,因为听得越多,音乐给你带来的满足感就会越少。

以下是正文,先明确一下正文的目的:

  • 举例说明 Linux 下父子进程如何使用管道进行通讯。
    阅读全文 »

早,继续记录我的学习心得。

机械的练习:
只是埋头干!我一直在挥着球拍,努力去击球。我一直在看这道数学题,正试着解答。我一直在重复写代码,试图成为技术大牛。

有准确目的的练习:
意味着要比机械的练习更有目的性,考虑更周全,从而让自己变得更专注。

以玩模拟赛车 acc 为例,怎么样才算是有准确目的的练习:

  • 比较明确的目标: 每天跑圈提升 0.5 秒。
  • 更明确的目标: 过某个弯提升多少速度。
  • 更更明确的目标:过某个弯时应在哪里刹车、应如何控制刹车/油门/方向盘,怎么走线等。

学以致用,明确一下本文的目的:

  • 举例说明 Linux 不会对标准信号进行排队处理。

  • 文末分享《自控力》里提到的一个提升自控力的小技巧:进行有效锻炼 (重点)。

正文目录:

1
一、待处理的信号 (Pending Signals)
2
	1. 一个简单的例子 (sig_pending.c)
3
		1) 分解代码
4
		2) 运行效果
5
二、不对待处理的标准信号进行排队处理
6
	1. 仍是那个简单的例子 (sig_pending.c)
7
		1) 运行效果
8
	2. 查看 Linux 内核里 Signal Pending 相关的实现 (非重点)
9
		1) 相关数据结构
10
		2) 信号的产生
11
		3) 信号的传递
12
三、相关参考
13
四、如何高效地学习:了解自控力 (Self-control)
14
	1. 此书的基本信息
15
	2. 一个关于提高自控力的小技巧:锻炼身体
阅读全文 »

早,继续记录我的学习心得。

机械的练习:
只是埋头干!我刚刚挥起球拍,努力去击球。我刚刚听到了那些数字,想办法去记住。我刚刚看到了那些数学题,正试着解答。

有准确目的的练习:
意味着要比机械的练习更有目的性,考虑更周全,从而让自己变得更专注。

以玩模拟赛车 acc 为例,怎么样才算是有准确目的的练习:

  • 比较明确的目标: 每天跑圈提升 0.5 秒。
  • 更明确的目标: 过某个弯提升多少速度。
  • 更更明确的目标:过某个弯时应在哪里刹车、应如何控制刹车/油门/方向盘,怎么走线等。

Linux系统编程-信号机制入门2

写作目的:

  • 举例说明 Linux 信号集 (Signal Set)、信号屏蔽字 (Signal Mask) 相关的知识点。

  • 分享一个《刻意练习》里提到的概念:心理表征 (Mental Representations)。

正文目录:

1
一、信号集 (Signal Set)
2
二、信号屏蔽字 (Signal Mask)
3
    2.1 基础概念
4
    2.2 实验 demo
5
三、待处理的信号 (Pending Signals)
6
四、相关参考
7
五、如何高效学习:心理表征 (Mental Representations)
8
六、欢迎关注我的公众号 (嵌入式Hacker)
阅读全文 »

早,继续记录我的学习心得。

每日的微进步

人们很容易高估某个决定性时刻的重要性,也很容易低估每天进行微小改进的价值

以前我也以为大规模的成功需要大规模的行动,现在我不这么认为了。长期来看,由于复利效果,一点小小的改进就能产生惊人的变化。

还有一点值得注意的情况,大多数人有了家庭和子女后,并且现在国内盛行加班文化,很难载集中精力能抽出大块的时间进行学习了,部分还能坚持学习的人几乎都是以牺牲睡眠时间为代价的,我个人不太认为这种做法,我始终认为有更合理健康的方法能形成一个工作、生活、学习、娱乐的有效循环,或许 认识到微进步的重要性就是一个很好的开始 吧。

本文就是我的微进步,欢迎阅读。

阅读全文 »