Cogito ergo sum. StarRocks内置函数分享 2023-04-06T00:00:00+00:00 Mr.Think https://lishuming.github.io/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB-summary/2023/04/06/StarRocks内置函数分享 <h1 id="内置函数分享">内置函数分享</h1> <p>大家好,我是StarRocks的Contributor,我叫李书明。今天是“源码实验”的第一期活动,想和大家分享下,“在StarRocks中如何添加内置函数?”</p> <p>就像编程语言中的函数一样,数据库中的函数执行逻辑也是根据输入参数计算函数的具体实现,然后返回输出结果。那么下面就聊一聊StarRocks中的函数。</p> <p>在开始之前,先介绍下本次分享的大致内容,本次活动面向的是想在StarRocks中贡献的开发者,想通过本次活动能够帮助“新同学”源码开发StarRocks并贡献到社区,所以也想本次分享过程也会介绍下操作流程。总体包含4块内容:</p> <ol> <li>介绍下内置函数相关的背景内容,了解下实现一个内置函数相关的概念;</li> <li>介绍下内置函数的实现原理,从实现接口、实现原理上能有个清晰的认识;</li> <li>介绍下真实的操作流程及注意事项;</li> <li>推广下我们最近的“Function Tasks”活动,可以在我们的TaskLists认领想要贡献的函数,并有机会获得奖品。</li> </ol> <p>函数与表达式是整个数据库中实现核心计算逻辑的关键,因此在实践的过程中,会对StarRocks的类型系统、表达式执行及算子的执行有更加具体、全面的认识。同时函数、表达式的执行是计算密集型的,因此其对性能的要求非常高,所以在真正的实现过程中,会用到矢量化、SIMD及各种各样的Morden C++的使用技巧。函数实现是一门非常很技巧/技术含量的事情,也只有在实现过程中能够体会到“酸爽”的快感。欢迎大家踊跃尝试。</p> <h3 id="1-starrocks内置函数背景介绍">1. StarRocks内置函数背景介绍</h3> <p>下面开始第一部分,内置函数的背景介绍。</p> <p>我们先看下函数的分类,根据输入、输出的对应关系,可以将函数分为三类:</p> <ul> <li>1行输入对1行输出的,我们称为ScalarFunction,标量函数。像常见的abs/upper/lower等。</li> <li>多行输入对应1行输出的,我们称为AggregateFunction,聚合函数。像常见的min/max/sum/count。</li> <li>一行输入对应多行输出的,我们称为TableFunction,有时也叫SetReturnFunction。常见的unnest,将一行array展开为多行。</li> </ul> <p>而除了上述分类方法之外,也可以按照函数的实现来分:</p> <ul> <li>内置于数据库执行引擎内部的,用户直接可以用的,我们称为内置函数。</li> <li>而用户可以通过自己的代码实现其自定义的执行逻辑的,同时支持动态加载的,我们称之为user defined function,同时也按照上述的分类方法,又分为UDF/UDAF/UDTF,不同的系统支持不同语言的UDF,比如可以用SQL/python/c++/java实现的。而甚至有些引擎开始支持用WASM支持自定义函数。</li> </ul> <p>有小伙伴会问,我们常说的WindowFunction怎么没有分到?小伙伴们可以想一想,下面的介绍会给出答案。</p> <p>而同样在StarRocks我们也有内置函数和用户自定义函数,而本次分享的主题就是怎么实现一个内置函数,这样一次代码贡献就可以让所有的StarRocks用户用到,是很有成就感的一件事情。除此之外,我们也支持用户自定义函数,不过我们目前仅支持Java实现UDF。关于目前StarRocks内置函数及Java UDF的实现可以参考我们的官方文档及Github上的文档介绍。</p> <p>下面看看怎么样在10行以内实现一个内置函数?左边这个就是仅仅用了7行代码就实现了一个最简单”hello world”的dummy function。这个是一个标量函数,简单来说就两块内容,函数实现及函数注册,上面就是实现、下面是函数的注册。代码添加后,编译运行就可以像其他内置函数一样查询了。</p> <p>函数的实现需要定义函数的输入参数和输出参数类型,我们先看看StarRocks支持的类型。这里介绍了三个地方的类型,Thrift协议中定义的类型及FE、BE定义的类型映射关系。类型可以分为两大类,Primitive简单类型和Nested类型,复杂的嵌套类型,目前最新的3.0版本中我们都有支持。在FE中,PrimivitiveType类定义了FE到Thrift协议类型的映射,CataLog.Type是类型实现的抽象类,具体实现有ScalarType/ArrayType/MapType和StructType。在BE中,类型定义在logical_type.h文件中,除了提供跟Thrift协议一一映射的类型,同时还基于C++ traits和宏定义提供了方便类型匹配的模版函数,这样就可以在编译器基于TypeDispatch优化根据不同的类型执行特定类型的代码,甚至可以做特定的优化,消除了类型抽象的代价,减少执行开销。但弊端是代码膨胀、编译也会变慢。</p> <p>不同的数据类型映在BE测则是基于Column保存的。Column是StarRocks数据在内存中保存的数据结构,这个也是矢量化处理的基础,每个Column就是一列数据,多个Column就组成了Chunk。Column是基类,它提供了基本的操作函数,包括append添加数据、serialize序列化等操作。其派生类有FixedLengthColumn、BinaryColumn、JsonColumn、ArrayColumn、MapColumn等,而FixedLengthColumn作为模板类,可以根据不同的模板参数展开为固定长度的数据类型Column。</p> <p>除了数据类型Column,之外需要特别注意的两个常见Column,ConstColumn和NullableColumn,它们都是Column的派生类。</p> <p>ConstColumn表示这列数据都是相同的,只用1行数据表示,但真实长度则通过size来确定,访问任何一行数据,只需要返回第一行数据既可以,这样方便做一些特定函数的处理,比如标量函数中,针对ConstColumn可以只需要处理一行既可以返回。</p> <p>NullableColumn表示该数据Column是有Null值,包含了数据Column和Null值Column,其中Null值Column是一个uint_8的定长Column,通过0/1标识该行是否为空,1表示null, 0表示非null。</p> <p>而在函数处理,一定要小心,需要首先确定输入的Column是普通的Column还是ConstColumn、Nullable,对ConstColumn和NullableColumn一定要特定的处理。这里就不一一说明了,在真正写代码的时候,也建议增加ConstColumn/NullableColumn输入测试,我们遇到过很多这种CornerCase的bug,写代码的时候也要小心。值得一提的是,嵌套类型(array/map/struct)内部实现也是嵌套了多个Column组成的,相较于普通的数据类型需要展开后才能处理,增加了额外的难度,使用时也需要注意。</p> <p>最后也多提一句函数和表达式的关系,表达式是查询引擎中更加基础的概念,它不仅包含函数表达式还包含了SQL标准中的非函数表达,比如case when,比如算数表达式、比如Predicate表达式等等。而SclarFunction对应的则是VectorizedFunctionCallExpr表达式。而其他函数,比如AggFunction和TableFunction则是算子实现框架的一部分,并没有通过表达式框架来实现。最后强调一点,函数、表达式应该是实现StarRocks高性能的很重要的一部分,也是矢量化执行很重要的一部分,其核心逻辑是按列处理,并在此基础上做更多算法及SIMD优化。</p> <h3 id="2-starrocks的函数原理">2. StarRocks的函数原理</h3> <p>好,我们在介绍每类函数的实现原理。我们先说标量函数,聚合函数、窗口函数及Table函数我们后面会一一介绍。</p> <p>StarRocks的核心代码,分为两大块,FE和BE,其中FE用Java编写,BE则用C++编写。针对标量函数,FE测首先从SQL中将函数解析为FunctionCallExpr,然后再ExpressionAnalyze阶段根据函数id及输入、输出参数类型从函数表中获取对应的函数,并在Fragment分发阶段转换成对应的Thrift Plan。</p> <p>而在BE测,表达式初始化阶段会从thrift中生成VectorizedFunctionCallExpr,并prepare阶段通过函数id在BE测的函数表中获取相应的函数,并在Open阶段调用函数定义的prepare_func,然后不断的get_next执行函数逻辑,最后Close阶段调用函数定义的close_func,释放状态资源。多说一句关于函数实现定义中的<code class="language-plaintext highlighter-rouge">FunctionContext</code>参数,该参数保存了函数声明周期内的状态,便于在各个阶段交互,比如常量参数、参数类型以及内存使用等。</p> <p>在be测添加了一个函数接口之后,如何让这个函数可以用起来?下面再讲讲,刚刚那个例子中的注册逻辑实现的原理。针对标量函数,目前基于Python脚本将fe/be的实现了注册流程的自动化。只需要在functions.py中添加一行注册逻辑就行。</p> <p>这个注册代码包含了这几个字段,包括:函数id(必须保障其唯一性)、函数名、函数的返回类型以及函数的输入类型。同时也包括两个可选部分,如果函数依赖些状态传递,则需要实现prepare_func和close_func,比如函数有多个参数时,当有的参数是常量时,就可以在Prepare时将该参数解析并在close时销毁。</p> <p>StarRocks的标量函数支持多个输入参数也支持变参,可以根据需要灵活定义注册。添加完这个注册代码之后,在编译阶段会将该注册逻辑同时添加到FE和BE的代码中。在FE启动的时候,就会调用initBuiltins将内置函数注册到内存中,SQL运行期间就可以查到该内置函数的定义了。</p> <p>而类似,在BE测同样也会维护一个function_id到函数的映射。在函数表达式执行期间会根据function_id查找对应的函数。具体实现在BuiltInFunctions::find_builtin_function定义中。</p> <p>说完了标量函数,我们再说聚合函数,同样整体逻辑也包含两大块,函数实现及函数注册,先说函数实现。聚合函数相较于标量函数,稍微复杂是:</p> <ul> <li>在分布式调度执行逻辑中,聚合函数一般都会有多个阶段的,先会在本机做预聚合(local aggregate),然后再根据GroupByKey Shuffle之后再做聚合(final agg)。当然对于有distinct的聚合,可能还有3阶段、4阶段,这里就不展开了,有兴趣的同学可以自己试着阅读下SQL影响的Plan。</li> <li>还有一点是聚合函数必须要维护一个函数状态,用于预聚合和最终聚合时计算使用,比如sum agg,需要为维护一个总和值,在update或者merge时都需要更新该状态。函数状态也是函数实现的一部分了。</li> </ul> <p>了解了agg函数的背景之后,我们看看实现一个agg函数所需要实现的几个主要接口。</p> <ul> <li>update: 这个用于local agg,读取数据、不断地更新中间状态;</li> <li>serialize_to_column:在local agg结束以后,需要做Shuffle,这个时候需要将中间状态序列化成可以网络传输的列,很多状态都是直接基于BinaryColumn传输的。这个类型是在注册时指定的,后面会讲到;</li> <li>merge: 在final 阶阶段,agg算子的输入是已经预处理过的中间状态,这个时候调用merge函数对中间状态结果进行合并、更新;</li> <li>finalize_to_column:当final阶段处理完之后,需要将中间状态生成最终的结果,需要调用final_to_column函数,输出到指定结果类型的列。</li> </ul> <p>以上四个函数是聚合函数最重要的实现,除此之外还有些其他的一些接口,用作不同的目的,这里特别介绍的是convert_to_serialize_format接口,这个接口的实现是说当local agg聚合时发现预聚合没有太多用,group by key比较稀疏,就不多处理了,直接将input的原始数据按照中间状态类型输出结果。目前的这个实现是自适应的,因此实现agg函数的时候也要实现该接口。</p> <p>说完了agg函数的实现,讲一讲agg函数的注册逻辑。跟标量函数一样,同样需要在FE和BE测都需要注册,但是不一样的是聚合函数目前没有一个框架自动实现,需要开发者分别在FE、BE相应的代码上添加。现在StarRocks已经内置了大量的聚合函数,同学们也不用担心,可以参考下这些聚合函数的实现代码。在FE测,当新增一个内置函数式,需要在registerBuiltinAvgAggFunction中注册该聚合函数,要添加上每一个输入类型、输出类型及中间状态类型的可能。在BE测,则是有aggregate functions resolver实现的,之前这个文件太大了编译起来很耗时,现在拆成了多个函数,比如avg函数的注册方式就在register_avg定义中。</p> <p>聚合函数讲完了,我们再说一下窗口函数,窗口函数从其实现上,也是继承于聚合函数,因为它的处理逻辑也是多行输入返回一行输出结果。但不同的是聚合函数是讲相同的group by key聚合,而窗口函数则是按照窗口范围聚合数据聚合的。我们先了解下窗口函数的窗口是怎么定义的?</p> <p>窗口函数支持两种Frame类型,Rows和Range,Rows是根据行数定义范围的。Range则是按照数据值的范围定义的,比如range between。默认窗口是Range between unbounded preceding and current。而窗口函数从分类上可以分为3类:</p> <ul> <li>普通聚合函数的,比如count/sum/avg都可以用作窗口函数</li> <li>排序类型:rank/dense_rank/row_number,这类函数只能使用无界窗口;</li> <li>分析类型:lead/lag/first_value、last_value;</li> </ul> <p>StarRocks目前也实现了不少对应的窗口函数,在实现过程中也可以参考下实现。</p> <p>WindowFunction是继承AggreteFunction实现的,但额外增加了针对窗口的实现接口。窗口函数目前实现都是单阶段的,不用考虑分布式问题。其核心接口就是这三个:</p> <ul> <li>update_batch_single_state_with_frame,根据窗口的边界更新窗口函数</li> <li>get_values:获取(start, end)范围内的聚合结果。</li> <li>reset,会在Frame结束后调用。</li> </ul> <p>这里要区分几个概念:</p> <ul> <li>Partition: 分区键相同的行,也就是partittion by keys的划分的最小粒度。</li> <li>Frame: 根据上下届确定的窗口大小,用于窗口计算;</li> <li>PeerGroup: 则是为了更好地区分排序键引入的区别 <ul> <li>针对Rows Frame类型同分区键结果相同</li> <li>对于Range Frame类型则同排序键结果一样。</li> </ul> </li> </ul> <p>下面看一个具体的例子(无界窗口),对id列做partition和sort by操作之后然后求sum,针对range类型,其窗口是从partition 开始到相同的sort key结束,所以相同的id_int会有相同的结果。而对于rows base的窗口,则是每一行输出一个结果,所以看到相同的id_int会有不同的结果。</p> <div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="no">CREATE</span> <span class="no">TABLE</span> <span class="nf">test_window</span> <span class="o">(</span> <span class="n">id_int</span> <span class="no">INT</span> <span class="no">NOT</span> <span class="no">NULL</span><span class="o">,</span> <span class="n">value</span> <span class="no">INT</span> <span class="no">NOT</span> <span class="no">NULL</span> <span class="o">)</span> <span class="no">ENGINE</span><span class="o">=</span><span class="no">OLAP</span> <span class="no">DUPLICATE</span> <span class="nf">KEY</span><span class="o">(</span><span class="err">`</span><span class="n">id_int</span><span class="err">`</span><span class="o">)</span> <span class="no">DISTRIBUTED</span> <span class="no">BY</span> <span class="nf">HASH</span><span class="o">(</span><span class="err">`</span><span class="n">id_int</span><span class="err">`</span><span class="o">)</span> <span class="no">BUCKETS</span> <span class="mi">3</span> <span class="no">PROPERTIES</span> <span class="o">(</span> <span class="s">"replication_num"</span> <span class="o">=</span> <span class="s">"1"</span> <span class="o">);</span> <span class="no">SELECT</span> <span class="n">id_int</span><span class="o">,</span> <span class="n">sum</span><span class="o">(</span><span class="n">id_int</span><span class="o">)</span> <span class="no">OVER</span> <span class="o">(</span><span class="n">partition</span> <span class="n">by</span> <span class="n">id_int</span> <span class="n">order</span> <span class="n">by</span> <span class="n">id_int</span> <span class="no">RANGE</span> <span class="no">BETWEEN</span> <span class="no">UNBOUNDED</span> <span class="no">PRECEDING</span> <span class="no">AND</span> <span class="n">current</span> <span class="n">row</span><span class="o">)</span> <span class="n">as</span> <span class="n">range_window</span><span class="o">,</span> <span class="n">sum</span><span class="o">(</span><span class="n">id_int</span><span class="o">)</span> <span class="no">OVER</span> <span class="o">(</span><span class="n">partition</span> <span class="n">by</span> <span class="n">id_int</span> <span class="n">order</span> <span class="n">by</span> <span class="n">id_int</span> <span class="no">ROWS</span> <span class="no">BETWEEN</span> <span class="no">UNBOUNDED</span> <span class="no">PRECEDING</span> <span class="no">AND</span> <span class="n">current</span> <span class="n">row</span><span class="o">)</span> <span class="n">as</span> <span class="n">row_window</span> <span class="no">FROM</span> <span class="n">test_window</span> <span class="n">order</span> <span class="n">by</span> <span class="n">id_int</span><span class="o">;</span> </code></pre></div></div> <p>讲完了窗口函数的实现,窗口函数是如何注册的呢?他的注册逻辑跟聚合函数是类似的。多提一句,除了上述的窗口函数实现之外,针对简单的sum/count/avg我们还实现了一种滑动窗口式的removable cumulative的窗口时间,针对窗口的很多优化可以参考下paper。</p> <p>最后我们聊一下TableFunction,跟聚合函数一样,table函数也是内嵌于TableFunction算子内部的。其实现逻辑大致分为两块:</p> <ul> <li>上游算子push_chunk时,将输入chunk保存至TableFunction状态中;</li> <li>在TableFunction算子pull_chunk输出时,调用TableFunction的process逻辑,并根据State状态处理返回。</li> </ul> <p>TableFunction的定义主要有这几个函数:</p> <ul> <li>初始化:初始化TableFunctionState</li> <li>process:这也是窗口函数的核心逻辑,执行窗口函数并返回多行数组列及相应的offset</li> <li>close:销毁TableFunctionState</li> </ul> <p>目前TableFunction注册也需要手动在FE/BE上添加实现,在FE上,需要在TableFunction::InitBuiltIn方法中添加新的函数签名,注意添加该函数的输入类型和返回类型。同样在BE中也有TableFunctionResolver中注册新的函数签名。目前StarRocks也支持了部分TableFunction,包括,unnest/mutli_unnest/json_each和generate_series等。添加新的内置函数时可以参考下。</p> <h3 id="3-内置函数开发">3. 内置函数开发</h3> <p>现在基本的内置函数原理已经了解了,小伙伴们是不是蠢蠢欲动,想小试牛刀了?下面聊聊如何真正的开发实践?</p> <p>先大致说下基本的开发环境。硬件层面,我们一般都是本地+远端服务器配合开发,而且服务器尽量配置高一点,这样编译速度会快点。开发软件上,be一般是vscode或者clion,都可以的,fe因为都是java代码,还是会有Idea神器。基础工具,c++编译gcc/clang都支持,如果条件的话,推荐还是使用clang,编译性能会好点而且错误提示也比较友好。</p> <p>开发环境配置,首先是在本地/远程的代码clone,(小伙伴本最好先fork下我们的代码,方便后续提交pr)。配置环境的,强烈推荐基于docker环境开发,当然动手能力强的也可以直接在ubuntu/centos服务器上编译源码开发。因为docker环境中把开发依赖的组件都集成好,连三方依赖库也是编译好的。基本上开箱即用,等下我会按照docker环境的方式演示下。</p> <p>然后编译测试脚本,这里也不一一介绍了。我们官方文档中应该都有介绍。如果小伙伴在使用过程中,发现文档介绍不合理或者不清晰的话,可以即使在官方微信群或者在github上提issue提问或者修复。</p> <p>而等代码开发好了,怎么提交PR呢?</p> <ul> <li>创建一个issue,如果有issue的话就不用了;</li> <li>先把代码Push到自己fork的分支,然后提交到StarRocks的Project中。在提交之后,为了保证代码质量会有很多测试集成流程,小伙伴们在提交之后需要多加留意并耐心等待。</li> </ul> <p>下面我花几分钟简单演示下,开发流程是如何操作的。</p> <h3 id="4-函数认领任务">4. 函数认领任务</h3> <p>到最后宣传下我们的2023函数认领任务。所有的Functions Tasks都在这个issue里。</p> <ul> <li>在认领时,记得@通知下我们的社区同学,告知下你认领了这个函数。</li> <li>在开发过前记得同社区同学即使沟通实现的思路或者函数的行为定等。</li> <li>在开发过程中切记同社区同学一起讨论,有问题也可以在issue或者论坛即使反馈。</li> <li>如果开发后发现有其他时间没法完成了,也没关系,联系我们的社区同学,以便于重新assign。</li> </ul> <h3 id="附件">附件</h3> <ul> <li><img src="/assets/ppts/2023/如何在StarRocks中添加内置函数?.key" alt="如何在StarRocks中添加内置函数?.key" /></li> <li><img src="/assets/ppts/2023/内置函数分享.pdf" alt="内置函数分享.pdf" /></li> </ul> 毕业即是回忆 2015-06-25T00:00:00+00:00 Mr.Think https://lishuming.github.io/%E8%87%AA%E6%88%91%E6%80%BB%E7%BB%93-summary/2015/06/25/毕业即是回忆 <h3 id="日落黄昏前">日落黄昏前</h3> <p>5月20日,答辩,题目不表。</p> <p>我是下午硕士答辩组第二位,下身牛仔裤,上身黑色衬衫,评委老师有五位,我老板坐在最远端,学弟、师兄、同门做右手边。</p> <p>PPT做了50来页,按规定30分钟的报告被Y通知25分钟完成。</p> <p>寥寥数语,结束,五个良好。</p> <p>后为狗尾续貂。</p> <p>5月29日,广州,Geekthon。</p> <p>粉蕉、蚵仔煎、炒花甲、河蚌。</p> <p>潮湿、闷热。</p> <p>31号获奖后江边漫步,江水徐缓,吉他声宁,微风清扬。</p> <p>对了,还有出租车司机不绝于耳的聊天。</p> <p><img src="/assets/images/2015/6/6_1.jpg" alt="某人·某夜" /></p> <h3 id="午夜降临前">午夜降临前</h3> <p>厦门</p> <p>高挑的椰子树,风中摇曳;落地的榕树,与地依偎。</p> <p>芙蓉隧道,大学的气息,“我们来厦大读个博吧”。</p> <p>环岛路边的公路,自行车在和风一起奔跑。</p> <p>杭州</p> <p>雨中、傍晚、西湖、苏堤。</p> <p>灵隐寺旁的一线天。</p> <p>与阿里巴巴擦肩而过。</p> <p><img src="/assets/images/2015/6/6_2.jpg" alt="相对一笑" /></p> <h3 id="黎明破晓前">黎明破晓前</h3> <p>端午节,一个人静下来了。</p> <p>许多人都不在,像是断了线的风筝,被抛弃了。</p> <p>这才发觉,原来都是要离开的。</p> <p>没必要哀伤,没必要犹豫,</p> <p>送上祝福。</p> <p><img src="/assets/images/2015/6/6_3.jpg" alt="我们都是孤单的" /></p> 2014年总结及新年祝福 2015-01-01T00:00:00+00:00 Mr.Think https://lishuming.github.io/%E8%87%AA%E6%88%91%E6%80%BB%E7%BB%93-summary/2015/01/01/2014年总结以及新年祝福 <p>新年第一天又是自己一个人过的:今天北京的天气特别好,阳光温暖的有着烤地瓜的味道,实验室里也难得就我一个人在这里,在走廊里自己晒了好久的太阳,又是习惯性的刷了好久的微博、知乎、微信,还要听一听最近流行的音乐,难得的享受时光。</p> <p><img src="/assets/images/2015/1_1.JPG" alt="春游颐和园" /></p> <p>还是想给这一年做一个总结,不管是技术方面还是生活方面。2014年,对于23岁的自己来讲,显得那么的沉重和疲惫,当然也有这些换取来的甜蜜和开心了。回忆起这一年来自己的生活经历,如果用自己的话语来描述可能跟别人看到的不大一样,但每一个时间关卡自己给自己的安慰与动力却最是刻骨铭心的,今天想在这平静的实验室里,把电脑放在了桌边,自己可以靠在椅子后背的靠背上舒服地回忆今年一年发生的点滴,算作是过去一年对自己的交代吧,同时也希望能给新的一年多一点启示。</p> <p>去年离开家里拿着行李来北京的场景自己依然还都记得,带着迷茫和不自信的心,希望自己能够平静下来。当时自己乱学了许多东西,主要还是web方面的简单的积累,也想静下心来把c++/java给重新学习一下,但总体来讲效果并不是很好。</p> <p>在没经过多长时间的3月末,接到了百度实习的消息,两轮匆匆的面试伴随着对百度LBS楼层一篇的新鲜感,自己感觉到前所未有的happy,记得当时好友JZ也正在一辆一路向北的火车上前来参加他在北京的实习。面试的过程及结果都不大理想,因为自己的基础确实有点差,但是还是谢谢ZS和ZK的赏识,自己竟然拿到了那里一个实习生的offer。</p> <p>可在记下来的日子里自己并不是特别好过,在百度上班的时间自己确实很是开心,接触的一个两个东西,自己都特兴奋,也记不清了有多少次的周末自己一个人在闷热的空荡的楼层里,对面放着一个摇头扇,独自依然在那里学习着,百度内部的技术社区、内部的开源软件,加上内部飞喷的网速,自己在电脑里下载了大量的资料(现在都还没来得及看呢),在那里认识了许多朋友,虽然现在大家联系的也不是很多,但我打心眼里谢谢你们,在当时特别压抑与自我恐慌的情况下,大家都那么的坦诚和信任。</p> <p><img src="/assets/images/2015/1_2.JPG" alt="乌兰布统" /></p> <p>离开了实习的日子,在实验室里的日子可谓难熬。“熬”,你知道是什么意思吗?就像是夏天里走在滚烫沸腾的马路上的爬虫,走不尽的马路、说不完的舒服。在经过老板生气批评之后(这段日子现在都不敢正视,心里还有余悸),最艰苦的一段时间,自己是这么过的:早上老早来到实验室把能做的都做完,中午匆匆吃点东西,甚至于不吃东西就坐上328/528公交车坐到上地环岛东,惊慌滴来到奎科大厦4楼自己的工位,还好大部分时间领导们都刚刚在这个时间吃饭,所以自己也可以偷偷滴溜到自己的位置上。</p> <p>辛苦当然有的辛苦,但收获也是很多的,在这里刚开始的时候,修改了一个项目的小问题,然后自己独立开发一个内部用的平台系统,再后来本可以做一个数据挖掘平台的二期呢,可暑假时间也真的来不及了,所以在经过百度8月8号summer party之后,自己就匆匆忙忙地赶回来了学校。</p> <p>这之间对我最多的影响是,既然自己选择了这份职业一定要好好滴去做。所以之前很恐慌甚至于不敢想象的问题,这次实习经历之后很多问题虽然还摆在那里,但我已经像翻过了一座山一样可以回头看看那山下的一切,暑假里用着实习的工资买了kindle,买了《unix环境高级编程》《网络编程》《代码大全》《操作系统》《编译原理》都重新又翻了一遍,虽然到现在为止许多概念自己依然还是囫囵吞枣,但也明白了这个专业的轮廓,不至于听到许多词语而惊慌。</p> <p>后来实习之后ZK通知我可以留下来,更是开心啦。这应该是今年对于我最重要的事情了。当然除了这些之外,自己觉得生活还是很精彩的啊,JZ的到来之后我们每个周末都会想着去哪里玩,北京他刚来几个月玩的比我都还熟,陪同他一起去的草莓音乐节也很是狂欢,而跟随百度人去葫芦岛、乌兰布统自己也很是开心啊。</p> <p>回到所里,对我自身而言最重要的关键词则是“麻辣工作室”。这个小的名堂,真的让我学习了太多东西了。在实验室自己没闲着,虽然到弄了太多东西,但都是小打小闹,跟着LH接触过了许多项目,自己井喷的学习能力让自己都给累跪了,spring/laravel/mongodb/avos,运维部署,centos/ubuntu操作系统,nginx/apache/tomcat/php-fpm,自己都要熟练学习。当然,这一两月自己也确实消瘦了好多,但在马上回家的日子里,想了想自己将来的生活和今天开心的心情,自己还是不禁的微微一笑啦~</p> <p>当然,如果还有一个关键词的话,那就是成长与感激。之前的种种也都不过是自己的新路历程,而最重要的是陪伴你的、激励着你身边的朋友、家人、同时,之前的那个不懂事任性的小毛孩现在自己都觉得自己太过幼稚,生活给我了许多机会和感动,每一次自己回忆起来,就像咬着牙跑完了十公里的路程,带着自己都不敢相信自己的心情,发现一路走来是那么的不容易。之前种种的门槛和不可能现在看来也不过是自欺欺人的心理障碍,成长的步伐是谁也挡不住的时间的车轮,现在也不过就像一个刚刚开始的故事,特别期待接下来的剧情发展啦。</p> <p><img src="/assets/images/2015/1_3.JPG" alt="金秋奥运" /></p> <hr /> <p><em>插曲</em></p> <p>间隔了好尝试时间以后又开始拿起笔来想把这篇文章给写完。中间因为github博客部署换了ip地址,导致这个博客更新一直有问题,自己辗转与万网(绑定的手机号码又变了,联系了好几次阿里才搞定)的DNS解析,所以到了今天才发现这个问题才解决掉。</p> 2013年总结之生活篇 2014-01-06T00:00:00+00:00 Mr.Think https://lishuming.github.io/%E8%87%AA%E6%88%91%E6%80%BB%E7%BB%93-summary/2014/01/06/2013年总结之生活篇 <p>再过一天就到元旦了,2013年就这样毫无遮拦的走了过去。想像一名收割者去收获自己一年里播种的庄稼,回过头来才发现农田被垦的破碎难堪、狗刨的一般,到头来还是一阵慌乱、一片难堪。还是要硬着头皮、哭笑不得地走下去,时间的车轮何以螳臂当车停止它的脚步。”让过去的日子如流水,让将来的日子如拂晓”,也希望将来的日子多些平静、少一些无谓的情绪,多一些积极乐观、少一些消极抱怨,如果幸福是种遥远的奢求,那就让我在平静的日子里汩汩徐行。</p> <h5 id="生活">生活</h5> <p>前几天去长沙玩耍的哥们从岳麓山上打来电话,应该正值长沙晴朗高照,极言那里风光不错,有山有水还有妹子,问我如何这么两手空空度过大学四年时光。是啊,现在回忆起四年的时间,就像是电影里回忆的画面,有些虚无飘渺了,甚至于不实在。和大学同学聊天,都是讲安乐的日子、幸福的时光太多了,人倒是很安逸,可走出来才后都有些懊恼当时的无欲无求了。对大学,到现在都还没有一个总结,搁在当时是置身其中、不敢触碰,放到现在则是置身事外、无从下手。  </p> <p>而今年的日子过得则特别的刻骨铭心,挣脱于许许多多未曾有过的瓜葛、冲突、欲望,沉陷在无穷无尽的迷茫、恐慌、蹉跎,没有了天朗气清,多了些阴霾严寒,没有了许多水乳交融,倒添了许多人心叵测、世事难料,没有了“如胶似漆”,倒开始欣赏心领神会、情止于水,虽然还是疯疯颠颠、大大咧咧,可开始告别过去、谨言慎行。总的来讲,如果真的把自己当作跑马场、一位置身事外的试验品,或者是“不以物喜、不以己悲”的孤行僧,当下的生活是美妙的,是从未有过的精彩、五颜六色,是揭盖面纱之后的琳琅满目。以前渴望希求的是天真浪漫的纯色调,天空一般的纯蓝色、雨后碧树的翠绿色、清澈空明的流水色,认清现实之后方领悟到黑色到白色之间有无数的渐进色,光是蓝色调,毕加索的蓝色少年时期的忧郁的蓝与梵高星空下流萤般陶醉的蓝是不一样的,梵高的向日葵里的疯狂沉迷的黄色与自画像里的忧伤的黄色也不一样的。揭开生活的面纱,尝试默默生活的滋味,品读社会这本大书,慢慢地才发现人生之广阔之富丽之有趣之惨烈之精彩。还是没有办法断绝掉自己滥肠挂肚的情绪,还是有点书生气。请再给我一点时间,原谅我的迟缓吧。  </p> <p>上半年的生活是在玉泉路度过,人生最后一段的学生时代,当时竟然没有珍惜。如果没有记错的话,这段时间是从2月19号从家里来的北京开始,到7月16早晨从学校搬家到所里来结束的,从刚进学校大雪漫舞到离开时的夏日酷暑,从刚进来时的热热闹闹到离开时的人去楼空。当时也没有太多的心理压力,对于将来也是一味的理想与冲动。来到北京的第一天自己就报名6月份的GRE,从此开始了一边上课一边自习的紧张生活。这段日子是枯燥的,英语学习对我来讲原本是充满快乐事情,可每天红皮书、要你命3000、完形填空、36套的轮番上阵,一个人呆在自习室里的沉闷,有时候也生出许多颓废的想法,每星期都想着要摆脱既定的轨迹去尝试些新的事物,害怕自己老死在自习室里。所以偶尔的逛书店、同学聚会都是难得的放松。忘不了7月6号在北京工商大学结束了考试之后,一个人回到宿舍躺在滚热的凉席上全身掏空的感觉,有些喜悦可尽是疲惫。GRE最后的结果已不重要,只是这次经历对于我这位大学都不怎么好好学习的同学来说,成了磨练意志的训练营,眼看着同学享受大五的轻松时光,自己割舍自己的喜悦去坚持自己给自己的承诺,想明白自己到底想要些什么。没有懊恼,只是挑战。</p> <p>上半年的学习也没多少轻松,喜欢跟LH聊天,在研一上半学期还同他一起到中关村上课,这学期自己放弃了去中关村的机会,倒也聆听他的教会,也借过他的几本书,开始了解计算机方面的知识。从Java编程思想,到服务器,到beans,到swig等等,囫囵吞枣地翻阅了好多东西。课程GIS开发、WebGIS都让我眼界大开,关于技术问题下面想分开来说。</p> <p>5月份的遥感大会,我去做了一个星期的志愿者,认识了我们所的几位外国人,见识到国际学术大会的场面,不过也因学术的枯燥而略带失望。6月份的院里篮球比赛,是这学期难得的课外活动,对于我这位只会随便玩玩的纯业余球员来说,因为篮球认识了许多同学朋友,已是喜出望外的。6月份还有高中几个同学的大学毕业,Z的去英国留学,都是满满的回忆。</p> <p>这学期比较有意思的回忆还有“生活中的心理学”和“女性电影欣赏”这两门课。心理学纵然每晚过去难免瞌睡,可也零星地接触到学术角度的心理学是如何探讨心理问题的,比如东西文化差异、同性恋等社会问题。女性电影的四部电影,《安东尼娅的家族》《更好的世界》《蒙娜丽莎的微笑》《海鸥食堂》,还有北影的杨慧老师,美妙的回忆。</p> <p>生活应当从7月16号搬回所里切开来看,此前此后想不到的差异。来到奥运园区,来到所里,沉闷的空气、乏味的工作,都曾让我伤透脑筋。随着日子的走远,本来学生时代自我安排、自我调整的生活挥之远去,也慢慢熟悉了这边按部就班的日子,而且还要感激实验室无比自由的学习环境,还有师兄们轻松愉悦的交流。</p> <p>8月中旬的回家一个星期,缓和了自己许多情绪。也开始自己计划的生活,完成实验室的安排,学习自己感兴趣的计算机知识。自己在10月份咬着牙报名了12月21号的托福。白天是紧张的做东西,晚上还要倒转模式去学习英语。有许多工作族学习托福应付考试的例子,还有许多非常励志的转行做自己感兴趣事情的例子,他们都是伟大的,自己一路走来的则是拗不过自己的情绪、心情。</p> <p>9月23号打篮球自己意外的脚伤让我体会到许多滋味。人生第一拄拐,在夜幕降临的人群中一个人去食堂打饭的无奈,还要多谢几位同学的还有老师的来访,都是永远难忘的记忆。这次经历让我在宿舍宅了两个多星期,每天好轻松地看闲书、看电影、学英语,思考自己将来的去向,纵然没有得到答案,可也让我明白“珍惜当下”的意义,生活在一呼一息间的平静。</p> <p>而接下来的是跟着老板的两次出差,一次是去昆山,一次去信阳。都是玩耍潇洒,没做什么事情。回来后,经历了灰暗的岁月,迷茫与挣扎,在考托福前夕,两个多星期每晚自己一个人去旁边的农大去自习,可再也找不到上学期那种心如止水、追求理想的感觉了。在临考试前的第10天,自己模拟成绩一塌糊涂,回来后听到几个同学在组个乐队一人在弹电子琴、另外两位在玩吉他,回想自己在农大冰冷的教室里的苦僧形象,当时就果绝地退掉了考试,想忙完这段时间再等等吧。这是我最怂的一次面对考试,倒不是胆怯,确实因为果实明白自己的实力;我也承认自己的失败,可也想以后干净利索的生活。</p> <p>不再每天提心吊胆地生活,自己开始了自我学习的生活。去参加了“12~12”小津50周年忌日展,有幸看到大学只看了一半的电影 《早安》,去国家博物馆看了卢浮宫的展览,去美术馆看了“西部生活”的会画展,托同学的义气去国家大剧院欣赏到了“蓝色多瑙河”和维瓦尔第的“四季”。元旦晚会自己大着脸充胖子尝试了人生第一次做主持人的角色,虽然有少许难堪,可也顺利完成。而在13~14跨年的那一天,我第一次号召我们班里去玩桌游,原本小范围的聚会,到后来15位同学参加,联系场地、张罗人员,最后搞定了这次聚会,发现自己也是个玩货,因为之前曾在桌游吧玩过一次的缘故,跟大家充当解说,玩狼人杀时,我还充当法官。  </p> <p>很感谢班长最后的肯定:小明,长大了啊~</p> 2013年总结之读书篇 2014-01-05T00:00:00+00:00 Mr.Think https://lishuming.github.io/%E8%87%AA%E6%88%91%E6%80%BB%E7%BB%93-summary/2014/01/05/2013总结之读书篇 <h4 id="读书">读书</h4> <p>还记得去年元旦前为自己添置了好几本经典名著,有《战争与和平》、《安娜卡列尼娜》、《永别了,武器》、《乞力马扎罗的雪》、《 大教堂》、《城堡》还有珍藏版的《红楼梦》,当时的计划是:书忌滥读,宜重温玩赏,每一次重读都会有不同的体会,所以想抱着这几本书每年重温一边,每一次都能稍加注释上自己的阅历。还听说黑泽明有读过15遍的《战争与和平》,一个人钟爱一本书至深就应当痴迷至此吧,百读不厌,回味悠长。可这计划随着生活的动荡最后也不得不破产流失,最后的成果如下:</p> <ul> <li>读完《战争与和平》第一部,场面宏大、人物繁多,老托想保罗万象,其描写之简练准确、语言之丰富、心理之细腻都让人叹为观止。</li> <li>《安娜卡列尼娜》今年未读,看奈特利的舞台电影之一半,看自己钟爱的列文的尴尬出场而弃置。  </li> <li>《红楼梦》在刚回所的几周,翻到五十回左右,俏晴雯冒寒为贾宝玉补衣一节。到目前最喜欢的一段是也是五十回左右好戏连台的“史湘云割腥啖膻”一段。</li> <li>其他的均未怎么动弹,惭愧。</li> </ul> <p>总算告别了学校时光,有喜也有悲,想想昨日整天里背着书包抢位、按部就班的做笔记、老实巴交地听老师讲课,竟如遥远的过去并略带喜感了。玉泉路里的破图书馆里自己也借了好几次书,因为同学说想去看美国大都会的展览,自己想补补自己的艺术知识,在图书馆里就借了硬皮油印的《艺术的故事》,在每次自习的间隙,拿着这本砖头厚的大书,聆听着从远古到中世纪到文艺复兴到近代的艺术转型,作者用丰富却浅显的语言讲述着一个个流派是如何从之前的窠臼、之前的体系里创新改造,还有一个个流派其艺术价值的独特性,所以我也明白了中世纪人物壁画的呆板、面无表情倒不是在说那些技艺高超的艺术家不懂的从古希腊罗马人身上学习生动活泼的绘画技巧,而是因为其宗教立场而虔诚地改变自己的画风而进行另外一种形式的创造,其艺术价值同后来文艺复兴创造出的形形色色的、美妙绝伦的油画一样有着其独特的魅力。这是一本很值得拥有的一本书,只是价格不菲,它告诉了我,纵然没有艺术家的才能,但我们倒可以享乐者一般去欣赏艺术的世界。</p> <p>来到所里,一次偶然的机会在豆瓣二手市场上买到了《电影的故事》和《论摄影》两本书,书是非常棒的,价格也很划算。《电影的故事》比大学买的《认识电影》要耐读的多,因为其涵盖了从电影诞生一直到现在数码技术横行的一百多年的历史,总括了全球各地的电影特色、发展历程。彩色油印的纸张还有一幅幅珍藏的图片,在我一个人的时间里让我乐此不疲。有人讲,相较于其他的艺术形式,在电影的世界里,五年就算一代,其翻陈出新之快、发展之迅速,让人望尘莫及,所以这本书林林总总的电影叙述,才让我了解到电影世界其宏伟浩大。</p> <p>今年手里有两本有作家签名的书:《木乃伊防腐指南》和《我承认我不曾历经沧桑》。第一本是去北京库布里克书店,大学都仰慕已久的影评人大虎旗皮所签,书是Moviegoer网站十年的精选集,都是当下著名的影评人的文章。他们是一批历经淘碟、互联网、电影院从90年代一直到现在的电影发烧友,评论涵盖很多题材,从摄影到采访到影评,因为缺乏整体的编辑整本书的评论却也良莠不齐、杂乱不堪。第二本是在中国美术学院里仅比我大一岁多的蒋方舟所签,书是当时现场做活动便宜购入的,内容主要是她在新周刊为杂志所写文章的合集。她自己言,这部书是她走下天才少女席位的第一部书,纵然毁誉参半,可有争议方正常吧,书匆匆读完,印象较深的还是其书评里对张爱玲、木心的推崇。</p> <p>十一脚伤买过一批书,有米奇的两本,有《禅者的初心》,有原研哉的《设计中的设计》,有《最后的读书会》,还有《三天学会铅笔画》。其他零零散散读的书还有《苏菲的世界》、《积极生活》、《当我跑步时我谈些什么》、《旧山河》、《国史大纲》等。</p> <p>如果还算上去年寒假在家所读之书,则还有《乡关何处》、《你永远无法叫醒一个装睡的人》、《复活》。去年寒假前,大学好友来京,陪他参加凤凰读书会的一个年度十大图书活动,在活动现场碰到周濂、郭小凯还有一位和北岛有接触又与野夫玩的不错的女编辑(名字忘记了),经他们推荐当时就买了前两本“年度十佳”的图书。《乡关何处》是从未有过的读书经历,仿若置身当代的一位古人,用着古生古色的语调还有几百年前读书人的神情去讲述发生在当代的荒诞不经却性情不羁的一些人、一些事,味道十足。《你永远无法叫醒一个装睡的人》则有些学术味,后半部分的影评不错。《复活》是读老托里最让我感动的一部,讲述的所一位有自我意识的罪人如何去拯救自己、如何去重拾良知的故事,而老托在这部里对整个社会制度的批判则至于颠倒整个世界的威力,“在这个社会上,如果你是一位有良知的人,监狱是你最好的去处”。故事主人公最后抛家弃产同妓女踏上赎罪的征程,其对美好之热爱、对人与人之间爱意的执着甚至对世俗主流的不屑不顾,都让人感动。</p> 2013年总结之电影篇 2014-01-05T00:00:00+00:00 Mr.Think https://lishuming.github.io/%E8%87%AA%E6%88%91%E6%80%BB%E7%BB%93-summary/2014/01/05/2013总结之电影篇 <h5 id="电影">电影</h5> <p>看电影可以分两部分,一部分是在影院所观看的,一部分自己一个人对着电脑随意观看的。    </p> <p>去电影院的机会不多,每一次自己都蛮珍惜的,而每次也都让人流连忘返,忘记了时间的流淌。从家里来到北京的晚上,宿舍就我一个人,自己一个人跑到王府井横店影院看了周星驰的《西游降魔片》,印象不算太好,因为一直对无厘头都是不痛不痒的,而是钟情于周的《功夫》和《长江七号》的电影。4月1号哥哥忌日,Z找我跑到了挺偏远的一个影院,去看之前禁映这次在影院胶片播放的《霸王别姬》。早上影院稀稀拉拉都是张的影迷,胶片断断续续甚至有一会儿投影都投错了好一段时间,漆黑的老影院、小小的荧屏,很有怀旧的感觉。刚开始刺耳的噪音一般的声响回忆蝶衣来到戏班的场景,振聋发聩,是回忆里的冰冷;而蝶衣一世“不成魔,不疯火”到最后人戏不分、雌雄难辩,其性情之极同时代背景的格格不入,却让人叹息爱怜;而蝶衣与哥哥的戏里戏外,让人也不禁唏嘘。这次观影体验,其感觉是再难有的,以致后来跟人屡屡提及这次触动。《一代宗师》是在大钟寺附近跟同学一起看的,特别欣赏在金楼南拳北拳的比武,每一副画面都是精致的,颜色也是美轮美奂,可整个故事的支离破碎感让我们几个都摸不着头脑,后来在网上翻阅别人一个个的注解,都觉得无味,而其映射的真实也让人无从推敲。想看这部电影的冲动是从Mtime上看到王家卫走访全国各地采访武林各派的17分钟左右的宣传片,一位人物这么诚诚恳恳地做这么基础的工作,其电影也一定是有味道的吧。在五棵松附近的耀莱影城,我看了《在北京遇见西雅图》、《中国合伙人》、《悲惨世界》、《盲探》。这些都是发生在玉泉路的故事。  </p> <p>回到所里面,同学联系减少,欢乐减少,生活也索然无味了。值得回忆的有:我曾想跑到过位于积水潭附近的中国电影资料馆两次去看华纳电影影展,两天四部电影,主要有史诗级的《宾虚》还有《2001太空漫游》,但每次都落了场空,结果也没看成。在那里看过唯一的一部电影是在脚受伤前夕看的谢添的《茶馆》,其横跨60多年的叙事,20年、20年的光景仿佛一刹那,从清末到建国前夕,贵贱浮沉,生如泡影,人去楼空的感触,则近乎一位绝望的超脱者的悲观写照。从这部电影开始我一直对建国后的一些电影特别感兴趣,比如《乌鸦和麻雀》,石挥的几部,还有谢添的《我这一辈子》等,他们的叙述很有历史感,民国也好、清末也好,其沧桑感都是这批从旧朝到新中国的亲历者才能体悟到的。在那里有许多观影的机会,价格也很划算,只可惜去的很少。去798观看小津的影展,第一次感觉到自己作为影迷的热忱,看了他一部晚期有些轻喜剧的《早安》,观影前止庵和戴锦华老师的讲座也受益匪浅,只可惜没有看到《秋日和》和《东京物语》。在旁边的CGV看了一部电影《独行侠》;原本想看《无人区》的,却在海淀黄庄中关村那里看了《私人定制》。</p> <p>在学校的时候,因为时间可以自由控制,所以还可以随着自己的性子看看电影,可是回到了所里自己在电脑上看电影的时间越來越少,看的电影也越来越少了。主要集中在两个时间段,一个是研一的学生生活,还有就是暑假回家的一个星期。</p> <p>上个学期的学生生活,自己特别喜欢港片和美国西部片。港片看的最多的是银河映像推出的电影,最钟爱的当然是老杜的电影:不温不火却力道十足好一个帅气的《枪火》,情深意浓帅到掉渣、爱有几吨重的《放逐》、危机四伏暗潮涌动的《PTU》,人性暗处、不事声张却心狠手辣的《黑社会》,感人至深又玩意十足、游戏人生的《暗战》,神经兮兮疑神疑鬼的《神探》,宿命论因果报应的《大只佬》,所以在影院里特别想看老杜的《盲探》,老杜一度在我的世界里占据着很重要的地位,这位爱吃爱玩的导演,个性十足、不拘形式、灵活多变,是位惹人喜爱的男人,就连和大陆和拍的《毒战》也不忘老杜的个性,片尾那全部死光光的场景调度也唯有他才能玩的出来。其他像编剧韦家辉执导的《一个字头的诞生》,一个故事两个结局,现实和理想的差距,对江湖的玩笑、不屑甚至撕裂许多现实来玩耍,都可见这位编剧天才的创造,韦导一露脸都是这么的严肃认真。游达志也是那是发现的了不起的导演,他的《非常突然》里雨总下个不停,刘青云和任达华的较量,三角的爱情故事,有着让你想不到的警匪片、黑帮片的精彩剧情。而特别意外的另外一部神作《两个只能活一个》,则有着王家卫的情怀,画面感则像是是染彩一般通红通红,镜头随意倾斜摇摆仿若喝醉了酒、发了疯的癫狂;金城武饰演的那少年混混有着流氓的潇洒,李若彤饰演的情人痴情至深,却也刚裂,两人晃晃荡荡,在浮华的城市、人群中游走穿梭、无知无觉。他的另一部作品《暗花》也有着诡异的色调,未曾见过的警匪片,片尾那段在镜子里的打斗戏酣畅淋漓,味道十足。</p> <p>而西部片里面钟情于伊斯特伍德的“镖客三部曲”,道尽人性的卑劣和险恶,讲的是一个男人在一片没有道德、法律束缚的荒凉的沙漠里,在“手枪至上”的弱肉强食的世界里的个人英雄主义、个人自由主义的故事,三部曲都特别好看,赛尔乔·莱翁内这位伟大的导演让西部片大方光彩。《虎豹小霸王》里写尽保罗纽曼的帅气。萨姆·佩金帕《日落黄沙》的苍凉与伟大,看这部电影让人血脉喷张、野性十足,生命一点都不值得去珍惜而是应该去冒险、去尽兴。《正午》则是讲一个男人如何恪守职责的故事,伟大的电影。</p> <p>而同时期也看了许多其他的电影,老马的《纽约黑帮》、《无间道风云》,黑泽明的《七武士》、《姿三四郎》,杨德昌的《麻将》《恐怖分子》,其他像《十一罗汉》《十二罗汉》《与郎共舞》《燃情岁月》《阳光小美女》《银翼杀手》《寻找小糖人》《云图》《V字仇杀队》《将军号》《安妮霍尔》《美妙的人生》等。  </p> <p>回家的一个星期陪妹妹一起看动画片也是我难得的享受,主要是放在皮克斯系列和吉卜力工作室的电影上,和妹妹相处的时光现在至少有了34部电影的长度,每一部电影都留下美好的回忆,不想多述。  </p> <p>来到所里,时间没有那么多了。看电影也大打折扣,零星的几个有:《灿烂人生》《黄昏清兵卫》《侠女》《龙门客栈》。</p> 2013年总结之技术篇 2014-01-05T00:00:00+00:00 Mr.Think https://lishuming.github.io/%E8%87%AA%E6%88%91%E6%80%BB%E7%BB%93-summary/2014/01/05/2013年总结之技术篇 <p>####技术  </p> <p>#### 一、所参与的项目  </p> <p>这学期花在计算机上的时间越來越多,对它的热爱也越來越深。这一年参与的计算机项目有零星的几个,同时大部分的时间是自我学习。上半年课程里的GIS开发是基于ArcEngine的二次开发,利用C#语言编写了矢量数据、珊格数据的读写保存、网络分析等简单的功能,WebGIS最后实现的是在Geobeans服务器端加载矢量图层而在web窗口以饼状、柱状图来显示数据的功能,这次考核让我了解太多的东西,cgi,fastcgi,tomcat,apache等等。  </p> <p>来到所里,参与科院内部的一个Android开发小比赛,我负责的是交互模块,主要的任务有利用.net平台的Webservice功能发布Android所需要的数据库数据,并在Android端利用Soap解析数据的功能,以及在Android端图片的上传、存储功能。关于Webservice的协议,跨平台的服务发布也都是第一次尝试。  </p> <p>而在实验室里帮着师兄完成“卫星网站”的后台工作,从数据库的设计到php端口函数的封装,虽然两天都搞定了,而且任务较少,但对网站假设却有了很深的认识,又学习了php语言。  </p> <p>而另外一项比较有成就感的事情是自己搭建了属于自己的<a href="alemontree.com">网站</a>,先是用wordpress玩了一段时间,而后从师兄那里了解到Jkyll和Github的搭建方法,在11份自己完成了自己网站的工作。在这方面自己不得不从CSS学起,了解页面布局以及html语法。还有一个重头戏就是git语法使用以及Jkyll语法的原理。  </p> <p>#### 二、自学的内容  </p> <p>自学的过程主要分三个方面叙述:编程语言、算法的学习,网络框架的了解以及Linux相关的学习。  </p> <h5 id="1编程语言学习">1)、编程语言学习  </h5> <p>编程语言的学习有C++,python,javascript,C,markdown,org等等。  </p> <h5 id="2网站框架了解">2)、网站框架了解  </h5> <p>网络框架理解到的则有基于php和apache构建网站的大众模式,有基于Jkyll的静态网站,基于Ruby的Rails,基于javascript的Node.js框架和基于Python的Django等。  </p> <p>而HTTP协议的学习也很想了解。  </p> <h5 id="3linux世界">3)、Linux世界</h5> <p>Linux世界的大门只要打开,其必发光发亮;这个世界的缤纷多彩、绚丽夺目甚至于惹人眼球。自己的电脑从大学开始一直是双系统,Win7+Ubuntu12.04,但Ubuntu只是新鲜吧了,花在上面的时间却很少,但到现在为止,除了支付宝付钱还有周末ipv6看NBA比赛不得不把电脑换到Win7下之外,自己一直钟爱迅速流畅、界面优美的Linux世界,在windows下总显得臃肿不堪。  </p> <p>Linux世界的大门是从Stallman的emacs开始的,在编写php程序时一直使用emacs编辑器,自己配置.emacs和.emacs.d文件,自动缩放和高亮显示,mode-org模式进行时间管理,python-mod(还未成功)、ditaa、graphviz、Latex的使用,这才领略到计算机技术的厉害。从此以往又学习vim编辑器,也十分钟爱。  </p> <p>开始探索了Linux/Unix的世界,在win7还有Ubuntu12的虚拟机上尝试过的Linux系统有:Debian,UbuntuServer,OpenSuse,Minix,ArcLinux还有Unix的FreeBSD。打开世界的大门,才发现有如此好玩的在等着你开发、学习。  </p> <p>从基本的ls,cd命令到mv,rename,rm命令对linux的shell脚本也很感兴趣,慢慢学习grep正则化语法、sed、awk语法等。再到现在希望学习Linux基于C的网络编程。下一步则是想对计算机结构参考着Linux内核进行学习。  </p> 理想的田园牧歌,黄昏的清兵卫 2013-12-18T00:00:00+00:00 Mr.Think https://lishuming.github.io/%E8%8D%92%E5%94%90%E4%B8%96%E7%95%8C-book/2013/12/18/理想的田园牧歌,黄昏的清兵卫 <p>周末一个人静悄悄地看完了山田洋次的“武士三部曲”的第一部——英文字幕,纵然囫囵吞枣般明白了人物的对白,还是深深地爱上了这部平和的电影。它有着我心目中“理想电影”的许多特点:不要特别的冲突、戏剧化的情节,但又娓娓道来、不绝如缕;有着回忆里的甜蜜、真实,足以打动人心的故事,能够勾起你怀念的瞬间;它要教会人热爱生活,珍惜点点滴滴,它能让人平静,而不是勾起欲望;它应该像个收藏家,把生活中有足够韵味的片段切割、记录下来;它应该是一个画家,懂得怎么去描绘,懂得怎么去表达自己的想法;它应该是一个个性十足的大师,眼中的世界一定要有异于别人,个性十足,让人哪怕只看一眼,能流连忘返;最好能够折射出整个时代,有声有色地记录着那个时代的人物,就像坐着“时光机”一般在广阔无垠的宇宙里无拘无束地遨游。在许鞍华的生活类电影里(比如《女人四十》《桃姐》)、小津安二郎的电影里(《秋日和》《东京物语》《早安,你好》)、侯孝贤(《恋恋风尘》《童年往事》《冬冬的假期》)、杨德昌(《一一》)的电影里,都能获得那份平和、生活的安详、岁月的无情抑或某种寂寥的哲理。</p> <p>故事讲述是一个没落的武士,生不逢时的武士,或者是整个武士时代的落幕。主人公清兵卫是一位潦倒的武士,生不逢时的在一个“不崇拜武士”、时局动荡、万象革新的年代,不懂得人情世故却有着自己的武士精神,纵不能奋起力搏、阿谀奉承,却独守着自己的原则,经营着自己的天地,没有怨天忧人,反而像一个“大隐隐于市”的隐士侠客,平静地享受自己的田园生活。</p> <p>故事的一开始,一个大环镜头,从一个病床上环绕一圈然后定格在五岁的Itou懵懂的眼神上,一个老人的画外音在平和中叙述着自己母亲的去世,这才明白这五岁的孩子原来是这个故事的叙述者。他的父亲清兵卫一出场就带有着几番的落破,在府邸的办公地他显得那么的不合群——全身不洁的衣冠加上蓬松的头发,潦倒的背后是作为一个俸禄不多的武士,在他妻子去世后生活是那么的难堪。清兵卫有两个女儿,还有一个年迈健忘的母亲,微不足道的俸禄还有不会逢迎的态度迎来的只是人们背后的嘲讽。</p> <p>在一次检查中,他的丑态、破烂打扮被一个统领给发现,更是成为嘲弄的对象,连他强势的叔叔都要数落他一番。清兵卫却依然穿着漏脚趾的袜子,并略带无奈地拒绝了他叔叔给他安排的婚礼:人生纵然再是低谷,也不愿违背自己的原则。他儿时玩伴Toemb的出现,却给他的生活带来了无限的阳光和欢乐。Toemb的丈夫是个酒鬼,经常动手打Toemb,Toemb就跑到了她哥哥家,跟她的丈夫离了婚。</p> <p>而在接下来的清兵卫和她之前丈夫的决斗,让人看到了清兵卫隐忍背后的强大。当然,故事半部分的重点是清兵卫和Toemb的爱情故事,我本以为故事会在清兵卫意识到自己像个傻瓜一样就结束,可没想到Toemb会一直等到他回来;这又让人心中有泛起涟漪,相信那个时代的真情,以至于我都怀疑Toemb的那些话是在骗清兵卫,让他死了心方能舍掉一切的去决斗。不管如何,结局是那么的美好。</p> <p>而结尾处清兵卫和另外一个武士在密闭房间的烂打,仿佛在书写着武士时代的结束,只是他们的选择告别的方式不同:那位统领想像一个武士一样死去,而清兵卫则希望那位统领逃到山的那边继续平和的生活。</p> <p>这样一部电影,回头想一想也没有讲太多事情,没有特别大的起伏,可电影每一幕的安排仿佛都值得留恋。比如去酒店吃酒的一群官吏,在酒桌上和酒店女老板说笑,女老板背对着镜头安坐于一角,面对着一群丑陋肮脏的男人,始终都没有扭转过脸庞,仿佛就在讲述:那个时代女人的地位是那么的卑微;又比如Toemb的第一次出现在清兵卫的家里,两人的略微尴尬,清兵卫努力安耐住自己的情绪,在他自己家里还是显得那么的紧张;又比如清兵卫不得不接受城堡统领里的命令去杀掉那反叛的统领,在画面里那无力的上级蛮横的直立的身影、不容反驳的语气象征着那个时代不可忽视的统治等级制度;又比如清兵卫教女儿读论语的画面,让她学着“纵然世界再怎么变,读读书可以教会你学会思考的”。。。</p> <p>电影里有许多《七武士》的影子,反叛的统领在杀死第一个前来挑战的人时,统领人都没有显现,只听一刀落下,而前来挑战的人已从门缝中退了出来,扑通倒下,这像极了《七武士》里那位领袖的故事。导演是会说故事的人,许多话只在只是一带而过,表达的意思却那么多,前后镜深的故事手法,在前面几个导演里都有用到。在描写清兵卫和Toemb哥哥谈论Toemb的事情时,镜头深处的画面则是武士们开始训练火枪的玩笑画面。对了,故事里有许多小津安二郎式的幽默,平静、有趣,惹人发笑。</p> <p>最后的画面仿佛日本的版画,雪白的富士山,悠长的小道,一幅幅优美的风景,像电影一般平和,像清兵卫一般沉稳。结尾处五岁的Itou已经变成了年迈优雅的老人,她正在她的父母亲的墓地看望她们,她说:他的父亲一生那么的短暂仓促潦倒,人们或者以为她的父亲是一个不幸的人,但她觉得他父亲是幸福的,他热爱他的两个女儿,而且还有美丽的Toemb做他的妻子,他是幸福的。</p> 《爱的艺术》随想录 2013-12-18T00:00:00+00:00 Mr.Think https://lishuming.github.io/%E8%8D%92%E5%94%90%E4%B8%96%E7%95%8C-book/2013/12/18/《爱的艺术》随想录 <p>放假几天在家闲翻了弗洛姆的这本小书,薄薄的一本,却引发了许多遐想。</p> <p>一、关于“人的生存”的本质问题</p> <p>孤寂感是各种恐惧的根源。”亚当和夏娃的寓言有着丰富的含义,在他们偷食“苹果”之前,居住于天堂,无忧无虑、相忘于灵境;可偷食过“善恶之树”的果实之后,他们“这才发现自己是赤身裸体的,感到很是惭愧”。 “苹果”的寓意是智慧,是男女之间意识到双方的距离感,或者说人与人之间那种永远不可逾越的个体的存在感。当你意识到“我是我,不是他/她”,这一种赤裸裸的孤独感就诞生了,你也被放逐出了天堂,你会充满负罪和恐惧。 这也像人们从孩提成长到成年人的过程,婴儿以及短暂的童年是无忧无虑、天真无邪的,因为还没有和这个世界发生太多的关系,等你长到“洋洋”(电影《一一》中的男孩)那么大,当你开始思考“如果一个人只能往前看,那他怎么看到他的背后面的呢”的时候,你就开始成长了。</p> <p>存在的本质是什么?人从自然界中走出来,带着原始的野性,但也同时失去了同自然亲密相处的和谐状态,意味着“带着火剑的天神挡住了人的归途”。而“人对他的单一存在的觉悟,对他短暂生命的觉悟,人意识到身不由己,死的必然,人知道自己的孤独感和与世隔绝, 意识到面对社会和自然威力自己的无能为力—所有的这一切都使得他的特殊和孤寂的存在成为无法忍受的监禁。”活着与成长,这是每个人都必须面对的问题,三毛曾比喻生命为一次孤独的长跑;无论有没有别人的扶持,这条“活下去”的道路只能自己走完。人到了一定的年龄,都会有这样的痛苦, 感到了人生的迷茫、无聊,拷问着存在的意义,这些也只能自己来寻找答案。人忙着都是为了速度地老去,因为都有老去的那一天,有的人选择了放浪形骸,有的人则悲天悯人、惆怅迷惘,有的人肆无忌惮、一意孤行,有的人在集体中寻找安慰,殊途同归。何妨吟啸且徐行,即明白死之必然以及生之无常,何不优哉游哉,一边欣赏路上的风景一边淡然地走完这必经之路。</p> <p>人都面临着这个问题:如何超越这种孤独感,如何超越个人的天地?不同形式的纵欲,原始的集体崇拜、饮酒、吸毒、性都可让人在那一刹那忘记自我的存在,达到灵魂的狂欢,使自己克服孤独感,但只能维持很短的时间。还一种方法就是“通过与别人保持一致,与他人完全一样”,这样就可以在集体中寻找到安全感,弗洛姆在这里批判了现代社会, 不论是专制的国家形式还是民主制度,都使人失去自己的个性,趋向一种标志、一致,而不是真正的个人的发展。书上说道:真正平等的概念是指发展个性的条件,正如康德所言,人永远不应该是实现他人目标的工具,人本身就是目标,从这个意义上,所有人都是一样的。</p> <p>作者指出第三中途径是创造性的劳动。什么是创造性劳动,是指“创造者同他的物质——组成人的周围世界的物质达成一致”。在劳动中,创造自我,实现自我的价值。当然,创造并不限于艺术领域,不论是农民种田还是制造业,只要用心,像铸造自己、修炼自己一般进行创造, 而不是流水线式的机械工作,都是创造性的劳动。这才应该是解决这个问题的途径。</p> <p>二、关于“爱”的问题</p> <p>作者顺着上面的思路,开始展开讨论本身的主题“爱”。“成熟的爱情,是再保留自己完整性和独立性的条件下,和他人合二为一。”“爱情是一项创造性、积极的活动。”所以爱情首先是给予而不是获得。</p> <p>三、关于东西方逻辑的问题</p> <p>书中在谈到“神爱”时,探讨了东西方逻辑的问题。西方逻辑所遵循的亚里士多德哲学逻辑的基础是同一律、矛盾论和排中律,强调“X即是A,又不是A”的论调的荒谬性,而东方的“悖论逻辑”则完全与它对立,但黑格尔与马克思的辩证法却也源于此。庄子云,“是亦彼也,彼亦是也,此亦一是非,彼亦一是非”。印度的婆罗门哲学也是掺杂着多样性与统一之间的关系, “可见的矛盾不是反映事物的本质,而是反映感觉到的精神状态”,“只要人的精神状态只能在矛盾中感觉实现,就不可能对神下一个肯定的定义”,所以东方不会像西方那样有绝对的宗教,人只能在矛盾中才能感觉到现实,人永远无法在思想上把握实体,把握宇宙。所以东方世界得出“人要重视正确生活道路”的结论,把重点放在体验而不是思想上,“无论是婆罗门教、佛教还是道教,宗教的最终目的都不是正确的信仰,而是正确的生活”,悖论逻辑引起的第二种变化是“重视人的改造,而不是一面发展教义,一面发展科学”,所以“宗教的任务不是让人正确的思考,而是要得到体验而在聚精会神的禅坐过程中同一结成一体。” 西方社会则是相信有着神的存在,相信通过正确的思想可以达到最终的真理,所以把重点放在思想上,这也导致信仰成为宗教态度的目的。“因此东方的思想导致宽容和努力改造人自身,而西方的立场导致不宽容、教义和科学、天主教、原子能的诞生。”</p> <p>四、关于”资本主义社会“的问题<br /> ”资本统治劳动力,无生命的东西比劳动力,比人的才能和一切有生命的物体的价值更高“,这是资本主义的基础。而因此而来的劳动组的特殊形式,高度集中、分工严密,是的个人成为真个大机器的一个齿轮,失去了人的个性。 而这一切造成的结果便是“现代人对自己、对同代人、对大自然的异化”,人变成 了一件商品,生命力变成一笔资本,而他要在既定的市场条件下实现最大利润化。人的安全基础就是想法设法靠拢一群人,在思想、感情和行动中同这一群人保持一致。 “光靠工作秩序还不够,因此人通过享受,通过娱乐工业提供的音乐、电影以及不断地购买新的物品区减少这尚未意识到的绝望。”</p> <p>作者引用赫胥黎《美丽新世界》的句子:营养充分,穿戴整洁,性欲得到满足,但却没有自我,同他时代的人也只是表面的接触。</p> <p>爱情也变得像一桩交易买卖。妻子应该善良贤惠,丈夫应该精明能干,妻子应该体贴细心,丈夫应该理解妻子,为了维持“”幸福”的家庭,丈夫、妻子都要表现的和和睦睦,谙熟打情卖笑、幽默风趣游戏的规则,“但这两个人一辈子都会互不了解对方,而是相敬如宾,尽量让对方舒适罢了”。</p> <p>六、关于“爱的实践”的问题</p> <p>行使任何一门艺术都需要一些基础的东西,首先是纪律,然后是集中,还要有耐心。</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> 草稿与2013年8月25日深 </code></pre></div></div> 读《苏菲的世界》小感 2013-12-14T00:00:00+00:00 Mr.Think https://lishuming.github.io/%E8%8D%92%E5%94%90%E4%B8%96%E7%95%8C-book/2013/12/14/读《苏菲的世界》小感 <center>一</center> <p>Mephisto问:各位先哲们,冒昧的打搅了你们!我是不幸的21世纪的子民,尤为不幸者还是当今人口最多的国家的子民,现在快要踏入社会,就像漂泊的浮萍,失去了所有的依靠,我失去了自己,我不知如何存活。以为可以力争上游、力挽狂澜、一呼百应,如今只好嘲笑自己的幼稚,有人说长大就是慢慢地接受“不喜欢的自己”的过程,成熟呢就是让自己变得强大、脸皮厚一点,可要我如何接受这一切:我想高贵地活着,可生活却教会了我苟延残喘;我曾想笔直地走路,可规矩的横梁却让我弯下了腰;我也想过未经思考的人生是不值一提的,可荒诞的现实却只能让我忘怀的大笑;我想躲进小楼成一统,世俗的圆滑却让我逢迎拍马;我也想归去来兮,可回头发现一屋千金,世外桃源只是天方夜谭;我也曾坚持过什么,可经验的教训却教会了我别抱太多期望。终无奈,我百思不得其解,纵然真是“赤条条来去无牵挂”,人活着到底有什么意义?这个世界上到底什么是真实的,我该相信着什么?抑或这些都是我的罪过,上帝给我惩罚?</p> <p>希腊自然派哲学家:小子,来不及听你抱怨,我们刚来到这个世界,还没来得及弄明白这个世界从哪来的。这大山大水是亘古不变还是瞬息万变,这世界是亘古长存还是一眨眼的事情?那流动的河流奔流不息,那万物都是变化的,这是“普遍的真理”“普遍法则”(赫拉克里特斯言)。土、气、火、水四者交替不朽,这世界才永垂不朽,这美好的大自然、美好的世界哪来得及烦恼呢?(恩培窦)</p> <p>戴尔菲神论:这一切都是命运啊,生有时,死有时,富贵在天,顺其自然,万事莫强求啊!</p> <p>苏格拉底:我知道一件事,那就是我一无所知。但我热爱智慧,对之孜孜不倦,我热爱真理、永不放弃,我是雅典的牛虻,我要叮咬住驽马不放。孩子,我要告诉你:知善者必能善行,请相信你内心的理性,人违反了他的理性是不会快乐的。</p> <p>柏拉图:我关心的是永远不变的真善美,“物质世界”永远都在流动变化,所谓的永恒就像“马”这一概念一样永远存在概念模型里,在那里“马”才是纯粹的马。你听说过“黑暗的洞穴”的故事吗?真正的理想国在洞穴的外边,那里才是世外桃源。对了,忘了告诉你一点了,一个人如果想要达到和谐的状态,要做到:理性追求智慧,意志追求勇气,欲望则要“自制”。</p> <p>亚里士多德:楼上你弄错了,哪有所谓纯粹的概念,一件事物的形式乃是它的特征,“马”的模型或形式都是我们看过许多真实的马之后总结出来它们的特征啊。你要相信,你的这些痛苦、无奈都是有目的的,“目的因”告诉我们,不久的将来它会告诉你现在存在的意义,恕我不能多言了。但唯有平衡、节制,人才能过上快乐和谐的生活。</p> <p>希腊文化四大流派:</p> <p>犬儒学派:真正的幸福不是建立在外在环境——丰腴的物质、强大的政治力量和健康的身体——之上的,人不应该担心自己的健康、不应该为生老病死忧愁,也不必担心别人的痛苦让自己受罪,我要告诉你的只有一条:没心没肺就没有痛苦。好吧,赶紧滚得远远地,别妨碍我晒太阳。 斯多葛学派:每个人都是一个小宇宙,我们要冷静的思考,不要感情用事,你太多情绪了。你要相信冥冥之中的“神明的律法”,没有任何事情是偶然的,每一件事都有其必然性。当命运敲响了你家大门,不用抱怨,接受他吧。 伊壁鸠鲁学派:享乐吧,那才是至善之物。有时间可以到我们的花园里享受,今朝有酒今朝醉。记住:神不足惧,死不足忧,祸苦易忍,福乐易求。 新柏拉图哲学(普罗汀):世间仅存着“上帝”之光,唯有在灵魂中与上帝合二为一,我们的生命才能伟大。 上帝(我知道我的罪孽太多,我知道我的出生就带着原罪,我只能我这一生去救赎,一秒也不能松懈才能请求你的原谅。他没有回答我。)</p> <p>圣多玛斯:请不要怀疑上帝,我们透过理性也能证明上帝的永存。我们所能做的只能信仰“上帝”,这样才能救赎你。</p> <p>莎士比亚:世界是一座舞台,所有的男男女女不过是演员:有上场的时候,也有下场的时候,每个人的一生中都扮演着几种角色。我们的本质原来也和梦一样,短短的一生,在睡梦中度过。。。</p> <p>笛卡尔:我思故我在,你知道吗?世界中存在这两种完全不同的实体,一种是思想或者叫灵魂,另外一种则是扩延或者叫物质。物质的世界是没有意识的,是要怀疑的,你怎能确定现在这一刻这一秒不是在梦里?唯有一条是真是的,那就是你在怀疑。灵魂是属于意识的,不受外界的世界左右。这两种实体都来自上帝,唯有上帝是独立存在的,是“完美的实体”,是与生俱来的。你要怀疑你现在的烦恼,你要怀疑现在的真实,唯有上帝才是永远的真理。</p> <p>斯宾诺莎:Sub Specie aeternitatis:从永恒的观点看每一件事。人可以去争取自由,但永远也不可能获得“自由意志”,人并没有自由的灵魂,他被囚禁在类似机器的体内。我们都没有办法获得真正的幸福与和谐,那是因为我们的野心和欲望。你要领悟每一件事都是有关联的,你是真个大自然的一部分,而世界则在上帝之中,你要一种全新接纳的观点去理解这世间的事情,这样你才能满足和幸福。Sub Specie aeternitatis!</p> <p>经验主义者休姆:上帝只是由某个无限智慧、无限聪明、无限善良的事物组成的一个“复合概念”,如果我们不推翻那些长久以来主导哲学思想的无稽之谈,那真让哲学家蒙羞了。“世间复合之物必然衰朽,应勤勉修持以求己身之解脱。”我们,我们的心灵只不过是一个剧场,在这个剧场里,不同的感觉人知在各种位置和情况下轮流出现、经过、再现、消退及融合,并没有什么“自我的同一性”。我,是一个不可知论者。你渴望通过诉说痛苦以获取怜悯、赢得褒奖,太幼稚了,你这习惯性期待!像一个哲学家思考、坚定吧。</p> <p>启蒙运动:反抗权威!相信理性!回归自然!争取人权!</p> <p>康德:理性是什么?人类对世界的认识有两部分:一个是透过感官才能认识到,这个是知识的原料;另一个是人类内在的情况,因果律、时空,这个是知识的形式。因果律是人理性的特色,我们是透过知识的形式来了解我们能感觉到的事物的。所以事物本身和我们看到的事物是不一样的。而对于理性而言,上帝存不存这个问题我们无法从经验中获取,这已超出理性范围。但“为了道德的缘故,我们必须假设上帝的存在。”每个人都有“实践理性”。就像“1+1=2”一样,人辨别是非的理性是与生俱来的,那一套“无上命令”的自然法则是:尊重每一个人的本身,而不要把他当做达成某个外在目的的手段。人只有遵守只一套自然法则,才会是自由和独立的。你知道吗?你要恪守道德的自然法则。</p> <p>浪漫主义:神秘之路通往内心!写一篇诗歌、研究植物的生命抑或钻研岩石的构造都是一体的两面,因为大自然就是一个活生生的世界精神,物质乃是沉睡的智性。热爱你现在的一切吧,一切都有生命,一切都有着世界精神,一沙一世界,一叶一菩提。还要什么烦恼呢。</p> <p>黑格尔:历史已经告诉了我们:没有永恒的真理,没有永久的理性。理性只不过是动态的过程,而真理也不过是个动态的过程。有时候错的,现在对了,以前合理的,现在则是荒谬,哪有什么永恒的,只有否定的否定。你要知道:无法在国家中找到定位的人是没有历史的人,人不能舍弃社会,如果一个人连他们生活的社会都不屑一顾,而去一心一意的寻求自己的灵魂,那是会被可笑的。所以孩子,让自己在社会中发挥自己的价值,你所有的痛苦源于你做的太少、想得太多了。努力工作,获得肯定,你会开心的。</p> <p>祁克果:撤屁!真理是主观的,真正的真理是属于个人的,只有这些真理“对我而言是真实的”。“1+1=2”这样的理性思考永远是对的、客观的,但在现实生活中,你却弄不明白她喜欢不喜欢你、她会不会原谅你这些跟你关切的问题,理性问题解决不了这些问题。信仰也是,Credo quia absuerdum:因为荒谬,我信。正是因为是非理性的,我才相信。你有没有听说过“人生三阶段”,孩子,你太多愁善感了,你只是追求表面的快乐、无忧、轻松、愉悦,这只是人生的第一阶段——美感阶段:你只为现在而活着,你以为凡事你厌烦的,都是不好的,在美感阶段的人容易患得患失、容易感到焦虑空虚;而人生的第二阶段——道德阶段则是对人生抱持一种认真的态度,并始终一贯的作符合道德的选择,人应该努力为道德活着,而不是追求快感;但如果彻底的过着道德的生活,人是会厌倦的,变成不食人间烟火的道德先生,所以要进入最后一个阶段——信仰阶段。你明白我的意思吗?</p> <center>二</center> <p>自己不知道为何拿起了这本小书,每天中午午休回来的时候要看上半个小时,晚上睡觉前还要看一看,把睡觉的时间都给挤掉了好多,不到一个星期就轻松地翻阅完了。为什么要钟情于这高贵的哲学呢?或许是现实的生活中没有玩伴,人是越长大越孤单的动物,随着年岁的增长、世俗的圆滑,越是很难找到志同道合、一拍即合的朋友,于是只能诉求于这虚无缥缈的东西。曾很苦恼于这种孤单,现在才明白一个人的生活才是常态,以后的世态炎凉、人间冷暖、酸甜苦辣、各种滋味也只能一个独品;倒没有什么可以伤感的,有时候这种清闲反而是难得的享受。而坐卧在高塔之上的哲学家们,不用为生计发愁,思考着最真实、最认真的问题,一个个态度鲜明、立场坚定,誓死力争、好玩有趣,谁会像苏格拉底一样胡搅蛮缠、一根筋又充满智慧?谁会像康德一般准时认真、身份卑微,思考的、解答的确是整个时代的问题?谁会像斯宾诺莎一般一边磨着镜片,一边告诫着世人:上帝教给我们的是爱?打开这本“哲学教科书”——一本写给十五岁女孩子的读物,最主要的收获可以说轻松愉悦的结交了许多新朋友:他们能言善辩,一个个都有着自己的理论,都以为自己能够解释这个世界,把一切都看的透彻。“存在先于本质”,萨特悄悄的说,并没有苏格拉底所说的“高贵的、永恒的理性”,在存在面前都是那么不堪一击。你赞成也罢、不接受也罢,一个个都可爱至极。</p> <p>可哲学到底是什么呢?黑格尔言:“哲学是世界精神的镜子”,可它不能解答怎么挣钱、怎么找工作、怎么样才能做一个男人这样的问题。哲学家们在追问些什么?他们苦思冥想于什么问题?我所知道的是哲学家们是最热忱、最认真的人,他们不允许自己一丝一毫的疏忽,一定要找到问题的根源。看完这本小说,发现哲学研究的问题也是在不断的变化的,每个时代都有着自己时代鲜明的问题,于是也产生了属于那个时代的哲学智慧。</p> <p>希腊哲学派的哲学们像刚学会思考的孩子,睁大眼睛想看看,我们所住的人间到底是什么样,他们争辩的是“世界从哪里来”的问题。到了雅典鼎盛辉煌的时候,在诡辩术盛行其道的时候,有位坦诚自己一无所的真诚的哲学家在追问着“智慧”的问题,他开始思考人类的生命、理性的命题。到了柏拉图,他说讲的模型世界、概念,都是对理想国人类世界的构想。亚里士多德因为懂得太多、看的太透彻,开始思考真实的世界和模型世界的关系,他也开始思考万物存在的意义,不过他的解释是“目的因”。希腊罗马时期,时局动荡,人们开始询问“人们怎么样生活才幸福”这样的态度、伦理问题,犬儒、斯多葛、伊壁鸠鲁学派都在找寻着答案。漫长的中世纪,上帝的命题压住了一切。当文艺复兴把“人”的命题再次提起时,笛卡尔首先思考的是“怀疑一切”的命题,但他的“二元论”得到的答案却是上帝才是永恒的真理。斯宾诺莎开始怀疑经书,却被赶出教会,众叛亲离,只能磨镜片聊以糊口,他的“一元论”听起来那么美好:我们都是这个大自然的一部分,我们都生活在上帝之中,平静的接受这一切,方能获得幸福。上帝的话题在经验主义学派、康德、黑格尔、祁克果的哲学里都没有消失,然而哲学的范围却又无所不包,开始从最基本的“感觉”和“理性”重新思考起,在伦理学中,道德概念也在不断翻新,他们关心依然是最贴切的问题,得到的答案也都好高明。看到休姆,我觉得当今最高明的科幻电影《The Matrix》说讲的思想问题,也无过于他;看到祁克果,身旁最愤世嫉俗、最有想法的人也没有他极端,没有他率性。直到现代的尼采宣称“上帝已死”,各种价值观于是重建,而哲学也开始五花八门、缤纷异彩起来。马克思、弗洛伊德、达尔文,唯物、科学的角度阐释着许多哲学命题,都有颠覆传统的威力。而当今存在主义哲学、生态哲学也都大放异彩,每一个时代都应该有它的哲学,因为哲学是那个时代的镜子。</p> <p>可惜的是简短的故事里没有东方的哲学,作者也丝毫没有提到中国古代的哲学家们。中国的哲学太过早熟,早熟到先秦诸子的典籍到了明清都还在考究。胡适有本《中国古代哲学史》、李泽厚有本《中国古代思想史》、钱穆有本《国故新论》都略微翻过,中国思想没有西方那么缤纷多彩、种类繁多,而且两者差别悬殊,不能同日而语,这在民国以来各位大家都有论述。《爱的艺术》里有讲,西方思想的根基是逻辑,讲究是一是一,二是二;而东方则是悖论说,此亦是也,彼亦是也,无所谓绝对,注重人天合一、人的修养,这两种思维方式也影响了近代东西方文明的发展。</p> <p>哲学是万学之母,她太高贵了。但为何要对这本“无用之材呢”?歌德言:不能汲取三千年经验的人也没有未来可言。我说:多认识几个朋友,纵然狐朋狗友,也不妨潇洒一世,抱抱取暖。还有就是《苏菲的世界》这本小书,故事性好强,看到一半才把苏菲给揪出来,到最后人书合一,分不清现实、虚构了,作者也是人疯子,玩的不亦乐乎。</p> /feed>