0%

天气开始热了起来,感觉思维开始有些疲倦,今天一大早就在弄着项目的编译。不得不说,C++真的是个太复杂的编程语言,若不同的人,不同的风格加到同一项目里,真是会出现各种问题。Chia官方写C++的那些人的水平也真是一言难尽,一直在用各种方式给他们的Project打补丁,虽然最终是解决了所有的编译问题,但是过程的确是艰辛。

放一张周日的素描练习,这张其实要画的地方并不多,比较容易出效果。老师对于我的画里五官部分基本上满意的,但是手一开始画得很糟糕,然后专门花时间修改了手部的光影。未来会花更多的时间在起稿上,越来越觉得如果能在一开始把线稿准确绘制出来会在后期省掉很多不必要的修改。

周日素描练习

起因

2月28日真是特别的日子,约好了医院挂号去检查一下皮肤和配眼镜,车子扔在地下车库结果取车的时候发现被剐蹭,对方逃逸没有留下任何的联系方式。

被撞到的地方

处理步骤

发现被剐蹭后,找到了医院的保安,寻问处理方式。保安带我到监控室让我自己找相关的监控录像。终于在花了一个多小时的时间筛选录像找到并确认了对方的车牌。肇事车是在拐弯的时候用侧面撞到了我的车,发现无法继续行驶后,倒车然后离开。于是我打电话联系交警。交警让我第二天一早到交警支队报案。

第二天是周一,早上十点我到了交警支队报案,早上没拿驾驶执照,但是先给我登记了案件的情况,然后下午等到他们上班又把驾驶执照带了过去。先填写报案的资料,然后交警支队给我的汽车做了定损并且拍了相关的照片。受理的警察态度还是可以的,处理完所有的事情后让我回家等消息。

按理说已经有车牌的情况下,很容易能查到对方的电话号码,但是一周过去了仍然没有任何的消息。于是我在周五打电话寻问结果,得到的答复仍然是等待。直到下一周的周一我又打电话到交警支队问情况,得到的答复仍然是一样。但是当天临近中午的时候,授理的警官打了电话给我,让我下午三点上班的时候到交警支队处理案件,说是已经联系到了肇事车主。

下午三点按时到了交警支队,因为要处理的案件比较多,所以又等待了大概半小时的时间。见到了对方肇事的车主,他否认当时知道剐蹭这件事情,因为一旦承认了,就表示其的行为是逃逸。但同时我也表明在录像中所表现的并不是他所声称的那样。而交警只是想快速的把案子结了,不希望我扯出太多事情。最终,肇事车主除了赔给我一千一的修理费用(由交警定损)外还支付给交警305的定损费用。

一些总结

从始至终我都没有让保险公司介入,我觉得有交警在的话,应该在需要走保险的情况下他们会告诉我,于是没有多想。但是,其实最好的办法就是,在发生的第一时间打电话给保险公司,他们会指导你怎么做。最重要的是,如果没有找到肇事车辆或车主,那么保险公司因为从一开始就介入了整件事情,会让其比较容易进入理赔流程。像我这次的处理若没有找到肇事车辆,那么再找保险就会麻烦一些,因为需要证明对方逃逸并且自己没有造假。而且,找了保险公司后,除了取证外其它的事情应该都不需要再亲力亲为,对保险公司来说,是利益相关。

发生这样的事情如果不追责,让肇事车主逃逸无惩罚,对整个大的社会环境来说是一种伤害,并且自己心里也会很不舒服。如果追责,则会浪费很多的时间和精力,并且这些时间和精力并没有产生正面的价值。发生这样的事情后,只有在追责的过程中尽量减少不必要的时间浪费,在第一时间找到保险公司然后报警处理是最好的办法。

今天花了几个小时的时间研究了Hexo,把原Wordpress的数据进行了迁移并重新配置了网站以及对服务器进行了升级和优化。

最近报了一个素描班,学习人像素描。主要想知道素描的基本步骤以及希望该技能在未来能够支持游戏开发。老师是中央美院毕业的,很有耐心,会认真讲解交上去的每一幅画。

一些心得

素描最基础的要求是准确度,而准确度是要依靠长时间的练习来提升的。它要求人把一个3D对象投身到2D纸面上,相当于建模中,计算机根据该模型的3D的描述,计算并绘制出某个观察视角下该模型在2D平面上的影像。我在没有学习素描之前认为这是一件非常难的事情。这也是我计划要去制作游戏里的元素时,为什么会考虑使用3D建模的方式。

但是,在学习了素描之后,发现我忽略了一件很重要的事情,那就是:人对于投射在2D平面上3D对象的鉴别能力是与生俱来的。就是说,虽然你无法在一开始就能准确绘制出那些能够表示3D对象的2D图形,但是你却可以很容易发现这些图像里“哪里不对”。

这其实让我理解到,其实素描并没有我想像中的那么难。需要学习的就是透视和光影在2D平面上表现的基本规律,以及不断提升自己对于所见物理在2D平面的理解力。

好的素描

我一直都认为,只有深入了解事物后,才能得出比较客观的针对该事物的相关看法。在学习素描过程中一直思考,一幅好的素描应该是什么样子的。

一幅好的素描,可能要满足以下几点(按照重要程度排序):

  • 是否准确。所绘制出来的物体并不是仅仅指画本身是否让人脑看不出有什么问题,而是它必需能准确的表示被绘制的物体。我就犯这样的错误,花大量的时间去修正画里让人脑觉得不对的点,但是却不花精力去思考画中的物体与被画物体的差异。

  • 笔触是否干练。这是一个概括能力的体现。当你在做每一步都清楚的知道这一步要达成的目的和明确的知道如何去做的时候,你可以减少完成一幅画所需要的时间,同时会做到每一笔都是有用的。于是,画面修改会非常的少,而光影的表达会准确但是不刻意。

  • 意境表达。是否能够在画中看到你所想表达的情绪。这其实是我最在意的一点,但是却是在基础素描中最不重要的一点。我希望我不仅仅是一台“相机”,希望一幅画能够具有比照片更强的感染力。但是我很清醒的认识到,一开始必须严格的进行“相机”训练,因为那是基础,也是最重要的。

老师在课上同时教手绘和板绘。手绘就是传统的用纸和笔来绘制,而板绘使用数码板或iPad来绘制。手绘对于形的准确度的要求要比板绘高非常多,因为不好修改,所以每一步都得要仔细和认真,而板绘相对来说要容易不少。另外,板绘对于素描练习是非常方便的,因为可以针对某一个知识点来进行侧重练习。例如,可以练习形准,可以练习笔触,可以练习光影等。为了随时可以练习,我去上海的时候还顺便买了新的iPad,下面的素描都是在iPad的Procreate上完成。

手绘和板绘虽然难度不同,但是都相通,希望经过一段时间的板绘练习后,某一天拿起纸和笔也能够画出想要的画。

近期作品

我画的第一张素描,画的是美国的一个影星:安妮海瑟薇。很用心的花了三天的时间,期间还让老师点评了几次。我在画画的时候很容易画到画里。其实也是上面提到的,只关心画是否正确而忽略了是否准确。这幅画能完成主要归结于老师的耐心讲解和运气不错。

安妮海瑟薇

这幅画画的是现实中认识的一个女孩子,她经历过人生低谷期,最终努力走出来了。我花费了三小时完成了素描,希望能在这幅画里表达出一种坚强和希望。相比第一幅安妮海瑟薇,我更喜欢这一幅。

罗非

这幅画中的模特是我在逛网站的时候看到的一个女孩子的照片,叫Roseline,觉得挺适合拿来做素描练习,于是就开始画了,我并不认识她,也和她没有任何的交集。最后老师也提了些意见,这里是最终修改的版本。

Roseline

有一天晚上想要快速的画一幅画,于是在收集的照片中找了一张比较简单的,然后花了三小时完成,结果效果还行。不知道什么时候能够一小时内完成一幅这样的素描呢?

快速练习

后记

我进行了很多练习,也让我意识到自己的缺点以及技法上的不足。不断的练习和思考后,渐渐能够有效的缩短绘制时间,下笔也更加的大胆和简练。

我很热爱这些能够让自己安静下来的事情,编程,雕刻还是素描。也许在某一天,这些事情能够有效的组合起来,创造出些什么。如果没有,那也没关系,因为这些过程真的很享受。

为什么需要包管理

包管理系统并不是一开始就出现在编程的世界中的。C++语言对于通用代码的管理,最初使用的是函数。这在汇编中,将参数压栈再使用call指令来调用是同样的概念。慢慢的,开源软件开始流行,越来越多的项目会使用别人写好的库,虽然是方便,但导致项目依赖变得越来越复杂。新的编程语言都直接带了了官方的包管理工具,比如Go或Rust,而古老的C++语言也开始引入包管理工具。

C++包管理的发展简述

传统Linux下,使用各Linux发行版的包管理工具来安装程序要使用的扩展库,比如,在Debian下若要使用OpenSSL,则可以使用apt-get来安装libssl-dev,然后在代码中就可以用#include <openssl/sha.h>来使用OpenSSL中的功能。

C++迫切的需要一个具有跨平台能力的包管理工具,此时vcpkg就诞生了。例如,你可以使用vcpkg install openssl来下载并安装OpenSSL,并且可以指定版本号。安装完毕后,在当前的项目里稍做配置则可以使用OpenSSL库的各种功能。关于vcpkg可以查看vcpkg来了解它是如何被安装到各平台上的。

使用vcpkg可以方便的在不同的平台安装和管理依赖库,让跨平台开发中,对库的依赖变得简单和方便,但是,我们仍然会碰到一些库并没有被vcpkg收录的情况。

CMake与扩展库支持

CMake在3.14版本中引入了FetchContent模块,使用该模块可以使用不同的协议从互联网上下载依赖库到本地。于是我们可以使用该模块来下载并配置一些未被vcpkg收录的库。但是FetchContent需要被依赖的库是使用CMake来构建的,于是,那些不是使用CMake来构建的库,FetchContent模块则不适用了。

当FetchContent不适用的时候,我们可以使用CMake的ExternalProject模块,该模块和FetchContent模块很相似,也可以下载某个依赖库并且配置,编译和安装。使用它可以添加非CMake的项目,因为ExternalProject模块可以指定配置方式,编译方式等各种参数。

遵循的包管理原则

使用C++包管理和CMake,遵循一个简单的原则:若需要安装的扩展库在vcpkg中存在,则尽量使用vcpkg中的库,若该扩展库并没有被vcpkg收录,但是该扩展库使用了CMake作为项目管理,则使用CMake的FetchContent模块来下载和使用该库,否则,使用ExternalProject模块来下载和使用该库。

C++的包管理工具,不只有vcpkg,在世界上还有很多优秀的C++包管理器,vcpkg可能并不是最强大的。但是相对来说却是简单易用的。同时配合使用CMake的FetchContent和ExternalProject两个扩展模块,可以很好解决第一次配置工程前要手动下载、编译和安装扩展库的问题。

想要解决心中的杂乱,去读一本有用的书不失为一个好方法。

学习Rust

鸣神の 少しとよみて さし昙り 雨も降らんか 君を留めん
鸣神の 少しとよみて 降らずとも 我は止まらん 妹し留めば

隐约雷鸣 阴霾天空 但盼风雨来 能留你在此
隐约雷鸣 阴霾天空 即使天无雨 我亦留此地

——《言の葉の庭》

言叶之庭

这篇文章试图对人类的行为进行简单归纳,并找出它们之间的联系。若能从这种归纳中清晰地领悟到未来方向,那就再好不过。基本上来说,人类的产生种种行为原因至少有三大类别:基本的生理需求,情感产生的情绪波动,以及对优越感的追求。

基本生理需求

生理需求是指人类的食欲、性欲和睡眠欲等与生俱来的基础生理需求。任何人都会因为这些需求没得到满足而产生相关欲望,这些欲望会控制人类自身去满足这些需求。这些基础需求是保证一个人能够存活于这个世界上必不可少的条件。同时,这些欲望也会影响人类的情感和行为模式。

基础欲望会被纵容,有时候会陷入追求类似口腹之欲的漩涡中,吃下过多的不需要的食物,导致肥胖甚至疾病。现在并不是以前物资缺乏的时候了,不再需要为了生存尽量涉入够多的能量,保证身体的健康应该要比满足口腹之欲重要。

情感产生的情绪

情绪由这个人的情感产生,情感是一种感受,这种感受是人对经历过的各种事件的总结。在未来某个相似事件发生时,情感会迅速触发情绪,这种情绪会尝试去指导人的后续反应,这可以被称作情感的处理模式。情感的处理模式就像是一段已经被编译好的代码,可以被快速执行并获取结果(产生情绪),而不需要人再次对某个事件进行深入的思考(重新编写代码)。

人在每时每刻都在接受新的信息,这些信息会不同程度的影响情感的处理模式,所以情感的处理模式是可以被修正和改进的,这种修正可以是被动的,也可以是主动的。但是,越早期形成的情感处理模式,对人的影响越大,也越难在未来做出本质上的修正。这也是为什么0-3岁形成的依恋模式会对一个人的行为影响是巨大的。

虽然,人受情绪影响的行为经过练习后是可以得到一定控制。但是,因为人与人之间的个体参数差异,情绪对人本身的影响力也不尽相同。所以练习如何去控制情绪,需要花费的时间和精力也会因人而异。每个人都需要学习如何和自身情绪打交道,要学习如何去控制它们,同时也要学习如何去正确引导它们。

对优越感的追求

阿德勒在《自卑与超越》里写到,每个人都有自卑情节,而这种自卑情节会促使人类去追求优越感,这种对于优越感的追求会在方方面面影响着人类的行为,是人类社会得以发展的基础。从开始使用火把到现在的航天科技,种种成果都不断影响和促进着人类社会的进步。

人类社会的发展依赖着前人不断积累的知识。阅读、思考和学习可以让人迅速掌握他人一生的经验,快速获取某个领域的知识,而不需要自己亲自去研究。每天进行阅读,思考以及学习,对未知事务的探索,很可能并不直接带来金钱或物质的反馈,很可能“没有用”。但是,这种“没有用”其实是一种非常狭隘的认知,建立在当前资本主义社会的规则之下。事实上,很多人对科学的研究都只是从有趣开始,逐步获得探索未知事物带来的满足感。孩童时期的“玩”也是对未知世界的探索,这种探索和对优越感的追求是与生俱来的。

《超越自卑》中提到,人之所以会去追求优越,是因为其内心深处的自卑情节。而这种自卑情节是一种不良的情绪,它会让人陷入焦虑。而为了弥补这种情绪,人会致力于寻求优越感。

人类所有的行为都潜藏着对优越感的追求,这也是人类社会能够得以发展的源头。所有对于优越感的追求 ,它们的共同点就是追求者极力想变成神,梦想自己能够成为上帝,成为所有人关注、钦佩的对象。

但是,哪怕在同一条寻求优越感的路上,不同的人对于优越感的寻求方式也存在有不同。在阿德勒的书里举了个例子,同样以教师为职业目标的人,他们相互之间也是有区别:有些教师高高在上,只是为了通过掌控比自己更弱的学生而得到优越感;但有些教师把学生放在同自己平等的位置来看待,希望能够通过将他们培养成为有用之人来获得优越感。虽然这两类教师都能够通过这个行业获得优越感,但是对这个社会所产生的影响却是完全不同的。那些对能够促进社会发展的优越感的追求往往是困难的,因为这类追求需要花费大量的精力和汗水才能达成。

反观我们生活中的事情,很多对于优越感的追求也存在着不同。有些人会因为读过一本别人没读过的书获得优越感,而有些人的优越感是因为从这本书中获取到了新的知识。很多人思考不够深入,会对那些声称自己读过某些书籍的人产生崇拜心理,却忽略了是否能够理解并运用这些书本中的知识才更加重要。在这些不同的类型的优越感获取方式的背后,透露出不同的价值观、人生观。所以,不要只看一个人的外在形象,要去探究其本质。

对于那些不能通过正确途径获取优越感的人,他们其实就是在追求目标的时候选错了方向,然后做出了错误的行为。而能够修正这些错误行为的方式就是通过接触社会,在与人合作的过程中提高社会责任感。当社会责任感提高了之后,则会在追求优越感的过程中更注重本质的东西,而不再是关注表面。

超越自卑

焦虑情绪

婴儿一出生就面临着如何在这个世界上存活下来这个问题,但是婴儿没有任何的防御能力,只能求助于父母,特别是母亲。只有被母亲抱在怀中,才能感受到满足和安全。一旦离开了母亲的怀抱或安全区域,就会开始焦躁不安,这是源自于心底最深处的对死亡的恐惧引发的焦虑。其实焦虑是正向的,它会让婴儿开始哭闹,引起父母的注意,以试图重新回到安全区域。

依恋类型

0到3岁期间是塑造一个人的依恋类型的最关键的时间,这一期间所发生的事情会塑造这个人对生存环境的理解。生存的环境是否安全,是否能够吃得饱穿得暖;特别是,亲密的人(父母)对于我的焦虑是怎么回应的,是否不需要太多呼唤就能满足我的安全诉求。各种不同的对于焦虑的回应方式,影响了婴儿长大成人后一辈子的心理状态。

安全型依恋:大部分的婴儿,得到了很好的安全满足,他们长大成人后对于事物的看法是乐观的,并且对于自我肯定大部分都是正向,哪怕遇到了挫折,都很容易调节好自己的状态,每天的生活都能是比较自在并且充满了满足感。

焦虑型依恋:有一小部分的婴儿,小时候的安全诉求并没有得到非常好的回应,但是勉强来说也是得到了一些回应,哪怕这些回应是负面的,比如:婴儿哭闹时,被大声斥责或甚至被拍打,但最终回到了母亲怀抱感受到了安全。他们长大成人后对于事物的看法是谨慎小心的,并且会经常处于焦虑的状态,但是总体来说,还是能够以积极的状态面对友情,亲情以及爱情。

回避型依恋:还有一小部分的婴儿,小时候的安全诉求完全没有得到回应,哭闹完全没有任何效果,没有人会理会这个婴儿的诉求,最终让它发现,原来哭闹是没有用处的,于是婴儿开始停止哭闹。他们会逐渐在这一过程建立自己的安全区域,把自己封闭在一个充满谎言的漂亮的城堡中。他们讨厌父母,但是却把这些讨厌隐藏了起来,同时也把自己对父母的依恋需求隐藏了起来。到了长大成人后,又不得不开始与人打交道,于是使用小时候所学习的各种表演技巧,将冷酷的内心伪装,不被别人发现。但是,渴望亲密关系是刻在每个人的基因里的,他们自然也无法避免,一开始和别人接触使用的各种表演技巧会让人感觉到这真是一个完美的恋人。然而,随着时间的推移,对方慢慢走近让他感到窒息,因为再多走一步就可能要发现这个城堡中隐藏的真正的那个幼稚而混乱的世界了。这时候他们将会把对方推开,然后自己独自躲回城堡中。

混乱型(或称恐惧型)依恋:同时具有回避型依恋和焦虑型依恋,会根据不同的环境转向不同的依恋类型,这种依恋类型称为恐惧型依恋。

值得注意的是,这里的依恋类型并不是指恋爱中的依恋,而是指婴儿0岁到3岁时和父母,特别是母亲建立起来的依恋方式。其中,回避型依恋和焦虑型依恋称为不安全型依恋。事实上,大多数人都会同时具有三种依恋类型,只是不同的依恋类型占比会不同。而且随着时间和认知的改变,这些依恋类型有一定机率会开始向安全型转变。

例如,焦虑型依恋的人发现自己在一些时间(特别是独自的时间)会产生出一种焦虑感,于是焦虑型依恋的人找出原因,并通过改善自己的生活环境来改善自己的焦虑,然后慢慢向安全型转变。对于不安全型依恋(焦虑型和回避型)来说,这一个转变过程是困难的,并且需要自身认识到缺点和不足后才有可能通过自身努力开始转变。