知道吗?狐儿,当时的你,是我心中最美的诗意。我甚至觉得,观世音菩萨大概就是你的样子。看到人间的苦痛,她总会流泪。她手中的宝瓶里,盛的全是她的泪水吧?她将这泪水,一次又一次地撒向娑婆大地,一次又一次地祈愿,希望世界上再也没有痛苦,希望所有生灵都能离苦得乐,希望幸福之光、安详之光永远照耀着有情世界。
狐儿,“千处祈求千处应,苦海常作渡人舟”,这大概也你的心事?
狐儿,其实我跟你一样,我也想赶走那秃鹰,就像小时候想赶走毒王后,保护白雪公主。但我心里还有一个声音,它告诉我秃鹰和毒王后也是弱小的生命,前者为生存,后者被噩梦所困,都是受苦的众生。
——雪漠《爱不落下》p59
真的太冷了。
今天工作又遇到麻烦的问题卡着了,畏难情绪又生起,就怕这种遇到问题又一时找不着原因还必须得解决,这时候容易陷进去,感觉时间又过得很快,又被浪费了,想要赶紧有结果,又没有结果,就会着急起来。
有时候又是效率很高,遇到问题处理的得心应手的那种状态。
时而这种状态,时而那种,还是心不能急躁,耐心点。
一时解决不了的,换个思路,或者换个切入点再尝试。现在在做的这个项目确实不容易,许多东西无从参考、询问。先是要把资源管理器嵌入的原理结合代码给搞清楚,然后又是嵌入的Dll跟跑的exe服务程式的管道通信,然后还有接口网络请求的部分,三个部分串起来,代码庞大复杂。前期花了不少时间把资源管理器COM组件、ATL那套东西结合Demo先把原理的东西弄清楚,不然看不懂无从下手。好在以前有C++ Windows的开发基础,有MFC、Win32API这方面的。微软的文档,看的不少,都是一些操作手册,API说明文档,这些也必须得大概熟悉,从COM、Windows Shell扩展相关的看了不少。刚开始做了C#的Demo验证,可以实现在资源管理器嵌入登录页,以及文档目录结构的呈现,因为许多东西是由资源管理器控制的,编写的Dll就是遵循那套规则,找不到如何像普通的程式那样由登录切换到主页的触发方式。前面那些文档缺少那种诠释为什么的。这方面的文档比较缺乏,算是比较古老的技术,最后在codeproject以及social.microsoft.com上查到了很多年前的里零几年左右的资料。里面的Demo截图还是XP甚至更古老的系统的,虽然最后编出来的没有完全生效,命名空间嵌入是生效的,终于找到了C++的Demo了,验证了Demo,读了那些Demo相关的英文文档后,总算把资源管理器这块基本掌握了,最起码知道如何下手了。这样可以结合Google Driver的源码来分析了。原先Google Driver的代码是比较难懂的,因为缺乏这方面的技术基础。
Google Driver的资源管理器嵌入是C++写的,exe服务程式和UI的部分是C#写的,API是Dll反编译出来的C#的。Google Driver API调用的部分都是一些Dll,把这些Dll反编译成源码,Google的OAuth2的授权码模式,分析了这部分代码。想把token认证那套改下,改简单点,先调用我们自己的登录接口能跑通存储token,再调用自己的文件列表获取接口,目的是这一套东西先跑通,确认可行,再说下一步业务接口的开发。C#的很多东西不熟悉,摸着石头过河。遇到问题查资料。改接口Dll暂时不能弄通的话,只有先让资源管理器双击嵌入的入口触发加载文件列表时,造个假数据,先呈现一下,确认一下资源管理器这边是OK的再说。
涉及到的技术大概有,COM组件ATL技术、Windows Shell Extensions、UI线程和工作线程、C#反射、特性、管道通信。没有这方面的经验,做这方面开发的极少,几乎没有可以问的同事,碰到问题只有硬着头皮处理。工作是需要出结果的,不可能给足够的时间让你一直调研。压力山大。
好了,接着处理问题,希望能顺利一点,不怕遇到问题,就希望不卡顿,不浪费时间。处理问题也是在积累经验。有时候可能就是思路不对,不能陷入其中,换个思路,寻找解决方案,求助搜索引擎。
网友评论