Git - Submodule 使用简单教程
最近在项目中使用了 Git Submodule
的功能,好处是如果是自己开发的封装库,比较方便调试,push 时可以同时上传项目和库的修改,别人通过主仓库地址下载工程的时候速度也会快上一些。
Git Submodule
的使用可以通过终端命令来操作(Git Submoudle 使用完整教程),或者通过 Git
第三方可视化客户端直接操作。本文展示的是通过 Git
第三方客户端 Sourcetree 来实现这个功能的。
最近在项目中使用了 Git Submodule
的功能,好处是如果是自己开发的封装库,比较方便调试,push 时可以同时上传项目和库的修改,别人通过主仓库地址下载工程的时候速度也会快上一些。
Git Submodule
的使用可以通过终端命令来操作(Git Submoudle 使用完整教程),或者通过 Git
第三方可视化客户端直接操作。本文展示的是通过 Git
第三方客户端 Sourcetree 来实现这个功能的。
每当我远离日常生活
就会被日常生活的场景感动
长椅上的老人他神色安详
两个骑单车的少年在树下相遇
停车说笑,相互点烟
恋人们手拉手穿过人行横道
那一刻的依恋是真心
每当我被这日常生活的场景感动
就忍不住要狠心逃开
看电影《桃姐》,总是让我想起这首诗。
电影里那些生活化的镜头和似曾相识的桥段,总让我想起和家中长辈相处的情形,在家庭关系里,我自觉自己是一个不通情达理和懂事妥帖的小孩,而电影勾起我的种种回忆,让我意识到我内心有一部分可能并没有我想象中的冷酷,这让我感到有点难为情。这种感觉,就像是以前在学校食堂吃午饭,奶奶来看我,在餐桌旁探着头,看我在吃什么,和我说话,叮嘱我要吃饱饭。虽然现在想起来觉得怀念和难过,但当时我只是难为情,想奶奶快点回家。
“每当我被这日常生活的场景感动,就忍不住要狠心逃开”。这是我看《桃姐》大部分时候的感受。一部分是因为剧情的演绎,另一部分是因为共情,共谁的情?桃姐刚入老人院的时候,因为被说名字听起来像佣人,桃姐生气说得罪你啦,要这样骂我,那时候共的是桃姐的情,桃姐过世,坚叔借钱买花,到了灵堂犹豫踌躇,那时候共的是坚叔的情,罗杰妈妈探望桃姐,给桃姐钱,两人互相推搡,那时候共的是亲近又有分寸感的两个人之间氛围的情,还有老人院的老头用粤语念诗,一字一句,相见时难别亦难,东风无力百花残。春蚕到死丝方尽,蜡炬成灰泪始干。晓镜但愁云鬓改,夜吟应觉月光寒。蓬山此去无多路,青鸟殷勤为探看。那时候共的是李商隐的情,也可以说是导演的情,但这个倒没让我难为情的想逃开,只觉得怅然若失。
虽然前面抒了很多严肃又沉重的情,看起来,《桃姐》这部电影又像是讲一个大爱无疆,高山仰止这类的故事,但其实电影整体的情绪并不激烈和沉重,相反,它平淡朴实的像一篇流水账日记,虽然也有很多家长里短的龌蹉部分藏在电影的角落头,但整体让人感受到的还是温暖积极的,很适合挑一个无所事事的晚上,准备点瓜子,一个人安静的看。
从整体出来,里面演员的表现也非常可圈可点,不提那些老戏骨的表现,就连演什么都像演自己的刘德华因为角色是电影监制,也算娱乐圈里的人,所以有时候有点端着,也不算违和。而让人惊喜的是,电影里面出现了很多很久没见过但在以前几乎家喻户晓的老明星,其中最让我影响深刻的就是罗兰了——我也是刚搜索她才知道名字,可能大家都很陌生,但是提起她演过的角色可能都有印象,比如陈浩民版的《封神榜》里李靖他妈,古天乐版《神雕侠侣》里公孙绿萼他妈以及等等慈眉善目和面目可憎的老太太。真是相当遥远的记忆了。另一个觉得很有意思的是黄秋生演的养老院院长,不知道扮演通过巧立名目对老人们收取各种不合理费用的角色时,他是否有预料到几年后,他也会扮演一个下肢瘫痪,单身寡居,脾气暴躁的老头?演员们因为年龄增长,而不可避免的只能出演中老年角色,再过几年是否也会看到华仔颤颤巍巍的在大屏幕上出现。想到这,忽觉时光流逝飞快,世事也不过都是面貌不同的轮回。
可能再过几年,迎头撞上这样的日常,我不会再想逃开,而是想着尽可能的和它多呆一会。
疫情蔓延的春天,待在家看了几本书,有一本是马家辉先生写的《龙头凤尾》,讲的是一个在动荡年代里一个香港黑帮龙头“南爷”的故事,和传统的江湖故事,历史演义不同,这本书没有在争斗和时局多费笔墨,只是把这些当做推动人物活动的一个必要的背景,更多的是关注南爷和他同性恋人的纠缠和他本身的心理活动。
起初这本书吸引我,是因为开头便知故事主角陆北才会当上后面的“南爷”,所以对南爷何以成为南爷,故事后续发展可能藏着的风波诡谲,存着微微雀跃的期待,有着像《新世界》的电影剧情的想象。
梦见一剑劈开了太阳,蛋黄浸透大半个银河系。我从岸上落下,在蛋液里浮沉,你在高处梨花带雨,你快上来,我不吃辣椒炒蛋了,快上来。太阳已经无可救药了,我想把剩下的星球都送给你。
梦见和北野武决斗,各有一名帮手在旁边掠阵。我和北野武持剑相对,一剑未出,我在北野武强大的气势下,不断后退,后退。另一边,他的帮手迟钝,只做防御,我的帮手灵活,在进攻的间隙,还能在北野武身上留下伤口。眼见我在稳定的后退中,即将取胜。北野武忽然大喝,我扑通一声掉入河面。原来我早已被逼退至岸边。
梦见住在一个位于大厦顶层的陌生公寓,公寓往外望有很多奇形怪状的建筑,有照相机形的,有裸体女人形的。
每天都有很多人从我房间经过,借道下楼,一开始还有点生气,但看到其他楼层也一样情况,就释然了。
后来大厦发生了杀人事件,一位漂亮的女士在她家里被杀,警察们以房间每日人流量太多,不予立案。
画面一转,看见我一身侦探打扮和凶手坐在他家的床上谈话,床下躺着那具漂亮女尸。后来不知道说到了什么,房间的气氛变得有点忧郁。我们四个都很难过。
我在这种难过中提前醒来。
梦见坐飞船到了外太空,发现一段在陨石碎片生长的走廊,日式风格,玄关处飘落很多纸片,捏中一张,立马看见远山炊烟,贞子伽椰子恐怖片里的各种子林立在田野。村里喜欢抱着猫上树的老太太说纸片上有字,我没看见。旁边窜出一个身患白化病的和尚,大声喝咒太上老君急急如律令,在我们两手上各划拉一刀,贴一块。上面写,九州怪谈,今日奇人奇事。
梦见去了德云社看李小龙讲相声,梳朝天辫,包袱听不太真切,台下一阵突兀响亮的喝彩,李小龙歪着头露出唐山大兄里得意的笑。
梦见脑袋里有个录音机,循环播放着四首记不起名字的老歌,最近播到第三首总是卡带引起的头疼,去看医生,开处方药,两盒周杰伦的专辑,早晚服食
梦见去了喜欢的女孩的卧室,天花板倒挂着两把打开的纸伞,伞面上龙飞凤舞的挂着几行毛笔字,一把伞上是,天生我材必有用,千金散去还复来。另一把伞上是,不许欺负小女孩。
梦见策划了一个展,展出有开发到一半但已然荒废的大厦,一只袖子没织的毛衣,加载着没通关游戏的游戏机,没寄出的信,树和他上面的风筝,被黄色警戒条围起来的女士讲述着一位先生追她追到一半忽然了无音讯的故事,会生产人们谈话回声的空旷房间,展会还没到尽头的位置挂着一块指示牌:由于本次展会的多个展品,在正式展出之前失去了适合展出的状态,请大家原路返回,由我们工作人员退还部分票价。
我老远就看见她了。
她松开挎着的男人手臂,朝我走来。
打完招呼,我插着裤兜,踢马路上的石子,头也不抬问她:“怎么和他在一块了?”
“其实他是个很有意思的人。”她笑了笑,“我原来也挺瞧不上他的,也是后来相处了一阵才发现的。”
我抬头看了看不远处的那个男人,察觉到我在看他,朝我憨厚的笑笑,脸上依稀还有些我记忆中的少年时代的样子,我点了点头,脑子里想起来的全是以前瞧不起他的印象。
“这几年都在干嘛啊,一直都不联系,还以为你消失了。要不要待会一起吃个饭,反正都是认识的,就在附近,刚好我知道有个馆子还不错,是你喜欢的口味……”
她一直滔滔不绝,我闷着头只顾踢路上的石子,没说话。最后她又问了一遍要不要一起吃饭,没办法,我抬头和她说,不了,待会还有点事,最近都好忙,而且这几年我的口味也都变了。
后来,我就醒了。
去年部门抽奖抽中一本《解忧杂货铺》,因为在那之前就已经看过这本书了,所以后来也就没有反抗的,让同事抢走归了她。到年底忽然想起这本书,索性就提笔写写。
《解忧杂货铺》讲的是几个小偷闯进了一个废弃的杂货铺,通过一个牛奶箱和不同年代的人通信,给与回应,不断解决不同人的问题,到最后也找到自己人生的出路。
整本书由几个不同的故事串联而成,简单易懂,不同于东野圭吾其他的推理小说,在结局的时候或者在过程中,推理有答案或者答案有了反转。甚至唯一一点略有神秘色彩的事件——信箱的信会穿越时空,也在事件出现之后的一两页内容里得到了答案。纵观全文,值得大书特书的内容有不少,但对我来说,那些值得一提的东西,温暖,感动,悔过,坚持自己等等这些书里的特质,都有些乏善可陈。
产生这样的心情当然也不是因为书写的不够好,书还可以,大概能打三星半。但抱着吃川味火锅店的心情,点菜的时候发现只有清淡偏甜的粤菜可点。因为结果低于期待,难免有所抱怨。
当然如果因为自己的期待就不允许火锅店的菜谱上只有粤菜可点,这种态度是不够端正的,虽然我不喜欢,但我也捍卫火锅店做粤菜的自由,而且也不是挂羊头卖狗肉,《解忧杂货铺》也没打着我是推理小说的招牌出来接活,所以不妨把它当做是作者的一种尝试。
梳理推理小说发展过程,从古典推理到侦探小说,到日本新本格出现,松本清张结合时事始创社会派推理小说,最后宫部美雪、伊坂幸太郎、绫辻行人、东野圭吾等作家让日本推理小说百花齐放。到这,我不禁有个疑问,为什么东野圭吾可以在同时代的同行作家中脱颖而出,让路人也有个好像在哪听过的印象?东野圭吾虽然也写过侦探破案的本格小说,但他真正让人印象深刻的作品,比如《白夜行》《嫌疑犯X的献身》,这些书无一不以事件中的人物纠葛为主色调,辅以推理破案,结尾真相大白,人物冲突达到最高峰。这些人事纠葛,日式风格的说法是,羁绊。因为羁绊,使得东野圭吾讲的故事多了些人情味,当然部分给人眼前一亮的推理也是一个地基式的存在,另一个方面东野圭吾小说被大量改编成了影视剧,吸引了不少推理小说圈外的路人粉,这也是东野圭吾火起来的一个原因,儿比起其他推理、侦探小说衍生的影视剧,东野圭吾书里在上述中提到的人情味所带来的晚间八点档狗血剧的氛围,冲淡了推理小说迷们和普通观众们之间的壁垒,像迪士尼动画片大人可以看到成年人的元素,小孩可以看到小孩子的元素,大家各取所需,皆大欢喜。
说完东野圭吾小说的整体风格,我们再来看这本书,比起他之前的那些作品——《黑笑小说》之类的不在对比范围,我们可以看到,《解忧杂货铺》推理味和人情味的配比,前者少,近乎于无,后者晚间八点档的氛围则被推到前作们所未有的地步。这种改变对于推理小说迷们来说是接受困难的,甚至是抵触:没想到东野圭吾你个浓眉大眼的家伙也写这种东西了?但对于东野圭吾、普通观众、普通读者,从现在结果来看,好处是远大于坏处的。而且这种改变从东野圭吾之前的作品中其实已经可以窥见端倪,对社会人性黑暗的长期注视,不可避免会产生两种态度,看透看破心灰意冷,或者一直乐观下去,对人之初性本善投赞成票。《解忧杂货铺》如果我们不把他粗暴的归类到是作者投读者们所好的一部纯商业作品——比如《阿弥陀佛么么哒》之流,而把他当做是作者在黑暗中得到的答案,似乎变得容易让人接受起来,甚至于作者本身跳出了推理小说家这个标签所带来的局限性,但这么看,似乎又给原本平庸的作品加了一个过分闪耀的光环。
无论如何,《解忧杂货铺》给我的观感仍然还是开头所提到的一样,三星半。至于东野圭吾先生之后的作品是在《解忧杂货铺》上一条道走到黑,还是又折回头写以前那类推理小说。我始终都会感谢他带来那么多优秀的作品。
在做蓝牙带屏音箱项目的时候,碰到一个问题,具体是在连接蓝牙音箱回连的时候,播放音乐会在手机端点击播放过一会就回被暂停。
调试了一下问题后,大概问题是这样的,一般情况下,我们在播放音乐时会请求系统音频焦点,然后在不播放的时候释放焦点。
在做项目下拉栏音量条拖动的时候,产品提了一个新需求,想拖动的时候让滑块选中时变大,未选中时就正常大小,这个需求如果在 iOS 项目,我会选择监听手势方法,监听按下和松开的时机,改变滑块的大小。在 Android 中我想应该也有类似的方法,但实际在网上搜索资料,发现问题简单,但找解决问题的方式非常困难,具体困难点在于,无法找到精确到“动态改变 seekbar 滑块大小”这个需求具体实现的文章,除了一方面很多文章来源自复制粘贴,另一部分在讲述 seekbar 的使用顺便提了一下选中和普通状态的样式改变,但这个方法的效果在新的版本里,不知道是不是从来就如此,还是接口变化导致不适用了。到最后我解决这个方法的姿势是:我想类似需求的实现出现最多的地方应该是在音乐播放器之类的项目,然后就在 GitHub 上搜索类似的工程,最后在 Recoderapp 这个项目最新更新的节点中看到有关 seekbar 的描述,抱着试一试的心态,下了,看了,解决了。具体方法会和上面那个不适用的方法一起放在后文。
我想大部分开发者在搜索问题解决的时候都会倾向于直接看代码,所以我这里的长篇累牍显得有点不太必要,但是还是想提一下的就是,由查找不到问题解决方式引发的一些思考,类似于,大家应该多多少少有动态改变滑块大小的需求,但是网上为什么没有这么精确的回答,如果是因为简单,但哪怕再简单的问题,也会有处于新手期的开发者会觉得这是一个难题——比如我,这篇文章也是基于这个思考才写的,而另一个原因是想到最近大火的电商——拼多多,他之所以能在淘宝京东的围杀中杀出重围,主要做的一件事就是渠道下沉。而渠道下沉的变体其实就是集中解决一部分人的需求。最近下的两三个 App 也给我这种感觉,一个是播放白噪音的软件,一个是类似于番茄钟的软件,但和传统的 GTD 软件区别在于后者的记录是主要针对你在做某一项技能的学习时的记录,最后会统计单一技能所花费的时间。不知道这个例子能不能解释清楚,总的来说,另一个原因可以总结成,既然没有人写简单问题的讲解,那我就来做为开发者来做一个技术方面渠道下沉的尝试。
上上个礼拜把读了十几年的《骆驼祥子》读完了,说读十几年的原因是因为第一次看《骆驼祥子》大概是我初中,老师让买了一套书,课外看,目的是为了提高阅读理解能力和作文水平。但当时我觉得不喜欢看文学名著,喜欢看小说,觉得文学名著太过严肃,有一张拒人于千里之外的旧学堂老先生凶巴巴的脸,整套书一共十二本,看完的好像只有鲁迅先生的《朝花夕拾》和一两本收录短篇故事的书,而祥子,总是看到祥子朝气逢勃拉着车子在北平窜来窜去的光景,我就抽身走人了,抽身的原因很简单,对于北京的想象和里面人们生活方式,当时我有我一套自己的想象,书里写的和我想象相差很远,所以就走了。
而重新捡起来看的原因,也很简单,起初是个巧合,因为好久没看书,翻开 kindle 看,前几本分别是《傻瓜式投资》、《软技能》、《退步集》、《骆驼祥子》,里面有故事情节又适合打发时间的好像只有《骆驼祥子》。
《骆驼祥子》的故事很简单,概述起来大概是讲还是军阀混战年代的北平,一个初入社会,叫祥子的年轻车夫,在攒出属于自己车的过程中,遇到了种种不幸,梦想破灭,人格也随之破产,最后活成浑浑噩噩苟且生活的行尸走肉的故事。
故事虽然一直都是这个故事,但现在看和以前看的心境完全不一样,在社会上打了几个滚的我,再去看祥子在刚入社会时,给自己打的算盘和不算远大的抱负,对我来说不再有雾里看花的隔阂,更多的是觉得,如果抛开因为时代和环境而产生的,具体到像攒一辆自己的车的这种事,祥子的所思所感,放在所有时代,对比所有时代的年轻人,包括二十一世纪现在的我的所思所想,其实一般无二,初出茅庐不怕虎,被雨打风吹后犹疑怨怼愤懑,最后因为个人际遇不同,有人跳出来后被当做励志的榜样,有人没跳出来被当做“二十岁就死了,但八十岁才被埋葬”,茶余饭后被提起,供人唏嘘的段子。祥子,祥子可能不到八十岁就会被埋葬掉吧。
和朋友聊天提起看完了这本书,他说了一句人人都是祥子。他大概是想说每个人在经历社会上的摸爬滚打之后,都会变成一种模样,即浑浑噩噩的样子。祥子的结局,有一部分是时代的必然性,所以是普遍如此,还是特定事件,值得商榷。在那之后我们又提到了电影《小丑》。
《小丑》的剧情就不展开讲了,总之还不错,推荐没看过的朋友可以去看看。
想想电影里的亚瑟和祥子是否存在一定相似性?祥子心心念念的车,是亚瑟扮成小丑,给人们带来笑声的梦想,亚瑟和祥子都被他们所面临的处境所伤害,受伤之后,亚瑟选择向伤害自己的人开枪,而祥子,因为很难说有某个清晰的、可以用来复仇的目标,最后他只好用钝刀挥向自己内心。
深究祥子或者亚瑟,何以成为他们本身,我尝试思考了以下两个问题:在同时代的人中,我想拥有他们同样遭遇的人肯定很多,但为什么只要祥子和亚瑟被选中,可以拥有他们的名字?祥子和亚瑟的结局是否拥有某种必然性?
为什么只有祥子和亚瑟拥有名字,其他遭受不幸的人们都在历史里模糊成某个群体,是祥子或者小丑存在某种值得书写的闪光点吗?关于祥子的答案,我想是否定的,作为《骆驼祥子》这个故事的男主角,他不存在,或者说不可能存在某种特别,相反,正因为他和当时普通的底层劳苦群众一般无二,所以才可以被当做一个例子,与其深究他和劳苦群众有哪里不同,不如直接说他是劳苦群众的一个代表。而亚瑟,亚瑟不是被选中的,他是自己跳出了的,之所以这样说是因为,如果去掉小丑这个辨识度极强的符号,亚瑟可能在每个时代都很多见,受压迫到歇斯底里后陷入疯狂的变态杀人狂,或是因为本身存粹的恶导致的无差别杀人。如果只是因为带着小丑面具杀人而被人记住,这种说法不免有点牵强,而事实上,亚瑟也不仅仅只是因为带着小丑的脸杀人而被人记住,他之所以得以被高举,是因为他杀人在群体围观之下被赋予某种意义,第一次在地铁开枪杀人,对于亚瑟本身来说,是失手和恐惧的混合——事后在厕所的舞蹈虽然可以解释成,他潜意识里本身就想杀人。但无论如何,都和被公众解释成是城市底层边缘人对精英阶层的一次控诉相去甚远,而亚瑟完成自己的蜕变,成为小丑在电视台的演讲,或许有那种意思,但在亚瑟这边,这个演讲,可能是对小丑自我的建立,一段初初登场的自我介绍,是一个开始的标志。而在群众眼里,因为经过舆论酝酿发酵,意义可能远不止于此,在地铁凶案的小丑,在众说纷纭的情况下,登台枪杀了主持人,洋洋洒洒发布了一段正中他们下怀的演讲,这对小丑自发组成的信徒们来说,这是一个集结号,一段对近期发生的所有事的结束陈词,一种思想成熟的标志。
祥子和亚瑟的结局是否拥有某种必然性?正如前文所述,祥子作为一个代表,他是存在一种必然性的,不在城外被军阀抢走车,也可能因为其他原因失去自己的车,没有被虎妞欺骗被迫结婚,也会因为其他的事情受到类似委屈等等,而亚瑟呢,如果他妈妈小时候没有虐待他导致他得精神病,如果他的同事没有两面三刀,如果那个主持人没有看轻他的梦想,是不是事情就会不一样?但除了他妈虐待他导致他得精神病这点,其他事其实在社会上也都很普遍,而得精神病的妈妈虐待自己孩子导致她孩子也患上精神病的这种事,如果把范围扩大,不止哥谭,我想偶然性也不是很小。那是不是有结论,哪怕没有名叫亚瑟这个小丑出现,也可能会有名叫杰克,或者露西的小丑。不过无论是祥子和亚瑟,预设条件,推导事情结果本身存在一定的不靠谱,所以我们只能通过结果本身去下定义,因为祥子有很多个,而小丑亚瑟只有一个,所以祥子的结局是存在必然性的,而小丑的产生是偶然性更多一点。
和朋友争论调侃小丑的主持人到底有没有错的时候,因为觉得其实主持人只是把嘲讽当做一个工作,甚至可能不存在任何恶意,虽然嘲笑别人可能不对,但因为嘲笑而收到子弹就太过分了吧。但另一边站在小丑的立场上,遭受如此多的不公平,选择复仇也是一种不得已的理所当然。所以我当时的回答是,只能说大家都运气不好吧。这个回答多少有点含糊其辞的成分,想想最近很多事,因为每次转换立场都觉得可以理解对方,而选择一个模棱两可的态度,这种态度多少有一点犬儒,所以我又深刻的想了想,决定给祥子和亚瑟一个坚定但坚决不是为了表明态度而煲鸡汤的态度:
祥子和亚瑟不仅是因为不幸,更多的是不公平,因为自己的付出没有得到预期的回报,勤勤恳恳拉车的祥子没有攒到自己梦想的新车,希望带给别人欢乐的亚瑟发现从头到尾自己都没得到过善待。面对不幸,我们仍然可以在种种不幸中保持着早期祥子热忱的心态,和亚瑟在公交车上逗小孩子笑的善良的脸。但面对不公呢,祥子和亚瑟大概是两个错误示范,就此沉沦和过激报复。因为不公的表现有很多,也没有万金油的解决方式,这里只能给一些我的建议,面对小事的不公平,豁达点用“就当是一种修行”的心态一笑了之,不豁达就一句“*他妈”了之,面对大事的不公平,如果不能依靠现有的社会机构解决,也绝不要采取会被现有社会机构解决的方式解决。