人在北京:上班的感觉

P1050544SP1050542S

从2003年以来,家就是办公室,习惯了自由自在、习惯了摇头晃脑,习惯了到处乱跑、习惯了自己给自己说话、习惯了站着办公 ……

现在要重新习惯一些新习惯了!

Continue reading » · Rating: · Written on: 11-23-12 · No Comments »

人在北京: 凤凰岭小走

和同事老顾两人,择11/17号周六下午在凤凰岭周边走了一小圈。从佛山陵园出发,经白虎涧,自凤凰岭景区路下,全程8.7KM。

凤凰岭

BJ-P1050479BJ-P1050503老顾BJ-P1050486终于看到雪了BJ-P1050501BJ-P1050509BJ-P1050511即是飞来塔上,怎来避雷针BJ-P1050535

Continue reading » · Rating: · Written on: 11-23-12 · No Comments »

Windows IOCTL Methods

在学习Windows内核开发之初,每个新手都会在DeviceIoControl上纠结一阵,然后就选择一个最得心应手的。拿在手中,去走遍全天下。等走了一圈之后就会感慨天下竟如此简单!

或许,天下就是这般简单,但DeviceIoControl却稍有些复杂。

DeviceIoControl的Buffer传输方式有三种:METHOD_BUFFERED,METHOD_IN_DIRECT & METHOD_OUT_DIRECT,METHOD_NEITHER。METHOD_IN_DIRECT和METHOD_OUT_DIRECT算作是同一类。

DeviceIoControl是用户层程序和内核驱动的一种通信方式。这个通信可完全看成是两人之间的私密,二者想怎么样就怎么样,只要双方都知晓并应用同一个规则即可。但如果还有个第三者的话,沟通起来就没有这么方便了,所以Windows内核要定义一个规则。可以说,根本上是因为Windows内核这个第三者的存在,也正是根据Windows内核在其中的参与度的不同才衍生出了这三种不同的ioctl方法。

用户层API定义:

BOOL WINAPI DeviceIoControl(
__in         HANDLE hDevice,
__in         DWORD dwIoControlCode,
__in_opt     LPVOID lpInBuffer,
__in         DWORD nInBufferSize,
__out_opt    LPVOID lpOutBuffer,
__in         DWORD nOutBufferSize,
__out_opt    LPDWORD lpBytesReturned,
__inout_opt  LPOVERLAPPED lpOverlapped
);

内核层Irp Stack中相关DeviceIoControl的参数(取自IRP及IO_STACK_LOCATION结构):

typedef struct DECLSPEC_ALIGN(MEMORY_ALLOCATION_ALIGNMENT) _IRP {
CSHORT Type;
USHORT Size;
PMDL MdlAddress;

union {
struct _IRP *MasterIrp;
LONG IrpCount;
PVOID SystemBuffer;
} AssociatedIrp;

……
PVOID UserBuffer;
……
} IRP, *PIRP;

typedef struct _IO_STACK_LOCATION {
UCHAR MajorFunction;
UCHAR MinorFunction;
……
union {
struct {
……
} Create;
……
struct {
ULONG OutputBufferLength;
ULONG POINTER_ALIGNMENT InputBufferLength;
ULONG POINTER_ALIGNMENT IoControlCode;
PVOID Type3InputBuffer;
} DeviceIoControl;
……
} Parameters;
……
} IO_STACK_LOCATION, *PIO_STACK_LOCATION;

用户层DeviceIoControl()参数及Irp成员之间的关系,针对不同的ioctl method不同的对应,详见下面的表格:

IOCTL-MTHODs

METHOD_BUFFERED:

这种方式是最简单,也是最常用的。内核驱动不用任何处理即可操作从应用层发过来的数据。实际上用户使用上的简单,正是因为内核做了相关的处理而省去了用户自己处理的繁琐。

在DeviceIoContro()阶段:NtDeviceIoControlFile()在构造Irp时,会于nInBufferSize及nOutBufferSize中选择大者以分配irp->AssociatedIrp.SystemBuffer,并将lpInBuffer中的数据复制至新分配的SystemBuffer中。

如果有SystemBuffer的分配,Irp->Flags则会被设置标志位:    IRP_BUFFERED_IO | IRP_DEALLOCATE_BUFFER。如果lpOutBuffer不为空的话,Irp->Flags也会被置上标志: IRP_INPUT_OPERATION。这三个标志在Irp完成时会用到。

在此要注意一点,针对METHOD_BUFFERED,即使lpInputBuffer和lpOutputBuffer为同一个Buffer,调用DeviceIoControl()时也必须全部指定,否则不能正确将请求数据发送至内核层或者用户层接收不到返回的数据。

在IRP_MJ_DEVICE_CONTROL完成阶段:IopCompleteRequest()会根据Irp->Flags标志来完成后续的处理,针对IRP_BUFFERED_IO,即METHOD_BUFFERED:

  • 如果设置了IRP_INPUT_OPERATION标志,会将返回数据从SystemBuffer中转移至用户传递过来的lpOutBuffer
  • 如果设置了IRP_DEALLOCATE_BUFFER标志,则释放SystemBuffer内存至PagedPool

METHOD_IN_DIRECT & METHOD_OUT_DIRECT:

在DeviceIoContro()阶段:如果lpInBuffer存在的话(并且满足nInBufferSize > 0),I/O Manager会以METHOD_BUFFERED的方式来处理lpInBuffer,即会分配SystemBuffer并将输入数据从lpInBuffer转移至SystemBuffer。如果lpOutBuffer存在,则会创建Irp->MdlAddress并将lpOutBuffer所用页面全部锁定。

在IRP_MJ_DEVICE_CONTROL完成阶段:IopCompleteRequest()会解锁irp->MdlAddress中所占用的页面,并释放irp->MdlAddress。

可以看出,如果设置了lpInBuffer的话,系统还是会另外分配内存空间,并造成内存的浪费。好在用户完全可以不用lpInBuffer,而是将lpOutBuffer同时存放输入数据Buffer。另外METHOD_IN_DIRECT及METHOD_OUT_DIRECT的使用也完全由用户决定,系统只是个传递者,并不参与lpInBuffer及lpOutBuffer中数据的处理。

METHOD_NEITHER:

这种方式下,系统参与度最小,一般用于能够快速处理的操作。I/O Manager所做的工作只是将输入参数传递至内核,其它的什么事也不做。如果内核驱动要将Irp挂起来的话,它要将irpSp->Parameters.DeviceIoControl.Type3InputBuffer及Irp->UserBuffer所用页面锁定起来,并在完成时释放所占资源(如果将lpOutBuffer/Irp->UserBuffer锁定至irp->MdlAddress的话,IopCompleteRequest()在调用时会做释放工作)。

总结起来,METHOD_BUFFERED最省事,但会多消耗系统内存;METHOD_NEITHER最直接,虽然看起来并不“直/DIRECT”  :-) METHOD_IN_DIRECT或METHOD_OUT_DIRECT最适合大内存区的操作,即使需要将讲求挂起来,内核驱动也不用做额外的工作。但在内存虚拟地址空间紧缺时,特别是在32位系统上,对于特大的内存区操作,宜采用METHOD_NEITHER方式以节省地址资源。

Continue reading » · Rating: · Written on: 11-19-12 · No Comments »

那些天,我们一起走过的狼C

狼C行程统计: (2012/09/28 - 2012/10/07)

日期        D0    D1   D2   D3  D4   D5   D6     D7   D8     D9
里程(KM) 4.6  14.6 17.9  0  14.9 11.2 13.9 15.4  21.4  19.2 共133.1KM
上升(M)   260 850 1410  0   740 1134 948 1183 709    876

D0 09/28 乌鲁木齐-雀儿沟-白杨沟煤矿

                徒步里程:4.6KM 海拔上升: 260M
                印象: 一晚再晚,一错再错,遂将错就错

徒步起点标志: 废弃油罐

中午12:30才出发,部分队员27号火车晚点晚上23:00才到乌市,于上午分头准备物资、采购等耽搁不少时间,路上又遇大塞车,15:30左右到达雀儿沟,吃饭休息约1.5小时,等到达徒步起点时已是18:30。

在白杨沟煤矿过桥后,路向左右分开,向左为呼图壁林场方向(路况较差,比较窄,可通越野车);向右为白杨沟达板方向,沿此方向行进行10KM即到达徒步起点,标志是一个废弃油罐。在徒步起点处,简易土公路向左转弯,徒步线路则是沿河谷逆流而上。

今天只徒步4.6KM,因天色已晚,便择地扎营。前队选择了高绕并在水西侧扎营,后队则选择过河于东侧扎营,两队隔水相望,倒也别一有番情调。

在路线上还有段小插曲:在狼C线路选择上,主要以大宝2010年夏季之行为主,起点定为呼图壁林场。由于千沟通,出发后司机直接开向白杨沟煤矿,不是最初计划的呼图壁林场。在分叉路口研究了一下地图,看到两边路是互通的,主要是司机坚持这边路好走,我们就没再坚持。等到了白杨沟煤矿后,煤矿工作人员告知前往呼图壁林场的路不通。又通过司机联系到了前阵子刚从此线路走过的领队”刚刚好“,问询了一下详情,得知沿白杨河逆流而上便可直达白杨沟达板,路程比从呼图壁林场出发短些,并且少翻了一个克拉玛依纳克达板。“刚刚好”在电话中详细告知了相关行程细节,并且前面曾有多支队伍从此处经过,所以此段虽没有GPS轨迹及相关攻略,但走出去应该问题不大。

建议:队伍早点从乌鲁木齐出发,第一天争取多走些路,第二天便可以直接翻白杨沟达坂。

D1 09/29 白杨沟-沿白杨河逆流而上

                徒步里程:14.6KM 海拔上升: 850M
                印象1:多次涉冰水,冷但可以忍受,相比简易木桥更惊险!
             
  印象2:营地晒着太阳喝咖啡,真是神仙日子

今天开始尝试淌水,并没有想像中的可怕,但水深处也要没及大腿,水面较宽时还会有刺骨之感。上岸后不亦停留,走起来后腿脚很快会缓过来。

前小半路(航点“过河12支流”前),基本都是在河谷简易小桥13里行走,全是穿着溯溪鞋走下来的。在连续过河后,开始上切至右岸,行进方向由西转向南,开始走牧道,路迹明显,此后即可换鞋。过了两根木头搭成的简易桥13后,均在水左侧行走,直到又走到机耕道上。

沿机耕道走不多久,便到达地质队的帐篷营地,大家在营地稍作休整,然后脱离机耕道,走西侧的小桥,沿水右侧的牧场围栏向西南行进(路比较窄,不时还会看到断坍塌),不久又会回到机耕道上。过地质队营地后也可沿着机耕道走,但要过水。再往下走,机耕道开始盘旋向上绕行,此地便脱离机耕道,沿着河谷右侧小径直行。

此时路径比较多,走河谷亦可,但河谷内碎石横生,小路比较窄,好处是没有海拔起伏;河谷右侧牧场草地上有牧道,不好之处就是要上上下下,体力消耗稍大。

考虑到后队的情况,和领队吃饱点商议后,16点到时便择地扎营。营地本身可谓6星级,只是离明天的目标白杨河达坂还有段距离。

D2 09/30 白杨沟-白杨沟达坂-马鞍形营地-峡谷营地

                 徒步里程:17.9KM 海拔上升: 1410M
                
印象1:河谷里乱石丛生,新疆特色
                 印象2:刀队神勇,小守宙爆发
                 印象3:洪彪等三队友身体原因决定原路返回

出发后队伍大放羊,因为到处都有路,哪里都可以走。河谷中乱石丛生,但隐约有路可寻;河谷右侧草地上有牧道;左侧显示有大宝的10年行走时的轨迹,应该也有路。

沟底处是一小海子,实际上就是一滩水,这应该是大宝攻略里所说的的小冰湖。过冰湖,沿右侧(西侧)上升即达白杨沟达坂,此处为一关键点,因为东侧也有路,但并不通往白杨沟达坂,后面就曾遇到过在此处走错路的队伍。

白杨沟达坂算是最难的一个达坂了,一则是海拔高,实测3858M,二者背负重,背着后面几天的食品呢,三者路线较长,且有起伏,而且阴面全是积雪。但难点并不在上升段,而是从白杨沟达坂下降时,有多处路段相当陡峭,坚硬的路面上覆盖着层层碎石,必须用登山杖撑着小心下降方可;其它大部分路段则是在碎石堆里腰绕,碎石此可谓是新疆特色了。

从白杨沟小冰湖开始就没有活水源了,直到过了马鞍形营地,方见小溪流。过三条小溪后,可沿着沟下降至台普希马河支流。虽是支流,水势也比较大,必须涉水才能通过。

下降至河谷后得知63岁的老鱼有点状况,我和先锋放下包前去迎接,见面后得知问题不大,接下他的包后便返回。等队伍到达峡谷营地时,刀队早已等得不耐烦了。营地扎在河谷的碎石滩上,比之昨天的营地,真是天上地下,但后来证明,这已是最好最大的营地了,向下再走1个多小时才能见到更好的营地。

建议:马鞍形营地取水不便,不宜扎营。从马鞍形营地下降到小溪流处,可扎两顶帐篷左右。大队伍的话,只能向下走至峡谷择地扎营。

D3 10/01 营地休整一天

                徒步里程:0 海拔上升: 0
               
印象1:先下雨,再下雪,峡谷内相当冷
                印象2:领队吃饱点看云识天气超级准!

昨天从白杨沟达坂下撤时,对讲中就传来吃饱点的建议:云层正往山顶堆积,天气要变,营地尽量选择高地。结果当天晚上便开始下雨,好在雨量不大,先锋还特地做了个水标以观测水量。

今天后面的行程要涉水,在这个阴冷的下雨天里过河绝不是个好主意,大家便休整一天。

我和刀队一在窝在帐篷里研究攻略。网上收集的攻略都放在我电子书、手机上了,另外吃饱点和先锋去前面探路的时候还捡到一打别人的攻略,正好派上用场。

下午等雪停的间隙,大家开了个会,决定由刀队带领5名队友走狼B线,估计两天可以出山;剩余10名队友继续狼C。

不曾想,刀队等6人因为水大桥被冲坏,没能走通狼B,只得退回白杨沟。实实在在地走了一条虐线。当然,这是后话了。

D4 10/02 沿台普希马河逆流而上-库勒阿特腾阿苏达坂沟口

                徒步里程:14.9KM 海拔上升: 740M
               
印象1: 一路涉水,河水冰泠
   
            印象2:篝火烤火腿肠,香煞人

拔营后顺流而下,到达三岔口河流交汇处,队伍分两队分奔西东。

狼C队伍从早到晚共过河20多次,水深处没及大腿,清晨气温低,峡谷中更是不见一丝阳光,还伴有冷风吹过,刚从水中上来时,腿脚全无知觉。

全程只有两处拉了绳子,都是水又急又深的地方,其余过河处,水势相对较缓,涉水比较安全。

路线选择上也可以选择高绕,考虑到队伍体力消耗、行进速度及安全性,我们均选择涉水。全队一致行动,快速通过,行进速度很快。

之后河谷越来越窄,路线蜿蜒向上开始高绕。此段线路看起来险恶,但走起来却还可以,够宽够平。

走出峡谷,视野逐渐开阔,左侧是草坡,右侧还是陡岩。沿着河流左侧小路便直达库勒阿特腾阿苏达坂沟口处的营地。此沟口相当隐蔽,要特别注意。如果向前走的话,则是河源峰方向了。

今天路程走下来还比较轻松。放下大包后,往河源峰方向走了走,回来时又往库坂方向探了探路。

建议:过河要果决,统一行动,相对高绕,更节省体力/时间

D5 10/02 翻过库勒阿特腾阿苏达坂

               徒步里程:11.2KM 海拔上升: 1134M
              
印象: 遭遇羊群,狼塔牧场吃羊肉的打算落空

从沟口走不多远,便碰到了从狼塔牧场撤出来的牧民,以及他们的1000多只羊。雪地上已被羊群蹚出一条宽阔的羊路来,我们一行人等按着痕迹行走,免去了踏雪寻路之苦。

路上遇到的三个哈萨克人,见人就问有没有烟,说是已经断烟几天了。他们是9月份进的山,在狼塔住了一个多月,赶在大雪封山前将羊群赶出去。

因为下雪及冰冻,上库勒阿特腾阿苏达坂前的走一步滑半步的流沙坡好走了不少。到顶后,我先向右前方沿着大宝的轨迹探了探路,然后折回又沿着羊群的痕迹向左前方走了个大半圈,推测此路应该也能到达狼塔,但再往前是个大斜草坡,考虑到海拔损失太多,便折回与众人汇合。

等全队到齐休整完毕,接着赶路。后面的路况相当好,比前面探路时所预想的好了太多。很多路段完全可以跑起来,权作放松。行至三岔口时,右行的话要过河,讨论之后,领队决定就地扎营。

晚上点上篝火,听歌,聊天……

建议:时间紧张的话,可适当向前赶路,第二天可以直接翻过蒙格特开增达坂。

D6 10/03 狼塔高山牧场牧场-狼CD交叉口

                徒步里程:13.9KM 海拔上升: 948M
               
印象1:过河,还是过河
                印象2:高山牧场上的柔软时光

今天的行程比较短,下午14点便扎营休息,因为再往下走就要翻蒙格特开增和哈尔嘎特开尔茨达坂了,时间上又不够,所以大家正好来享受一下高山牧场上的柔软时光。

今天过河也有15次之多,一路大家基本都是穿着溯溪鞋走过来的。刚出发不久就有一个关键点:在三岔河谷处拔营后,向右连续涉水过河,之后会遇到一个三岔河谷,左边的峡谷非常平坦而且阳光灿烂,右侧是一片阴森森的树林。但正确的路却是进入树林,沿着溪流向上。

营地选择在近达狼C与D线交叉口处,虽全是草坡,但地却不平,全队5个帐篷很分散。此处海拔接近3000,已找不到可以烤火的树木,但有一些小的灌木可供取暖之用。

D7 10/04 蒙格特开增达坂-哈尔嘎特开尔茨达坂-泥水溪交汇处

                徒步里程:15.4KM 海拔上升: 1183M
               
印象1:雪路行进
                印象2:星汉灿烂,银河横贯长空,震撼人心

昨天休息很充分,所以今天出发较早。拔营后一直沿着左侧河谷向上,河谷里面、左岸及右岸都有路,我们选择海拔缓升的右岸慢慢上升,直到到达群山环绕的一块平地,平地中间还有冰湖,此地亦有扎营的痕迹,还有丢弃的垃圾等。

过了小冰湖,从左侧开始上山,此处要特别注意,走错至右侧的话,路将会很难走。此后一路向上,雪深处左膝盖,还好有前面队伍走下来的脚印,我们一直踩着他们的脚印缓慢向上攀登。

P1050242右侧为横切小路

用了约5个小时,到达蒙格特开增达坂,此后一路一直在腰绕,新疆特色的向阳坡碎石路已让我们不胜其烦,但又无可奈何。好在基本是平路或缓坡,一直通到哈尔嘎特开尔茨达坂。

在等后队的空隙,搭了个玛尼堆,站在高处欣赏风景。但这份兴致很快就被下降途中的乱石路给搅黄了,再次感慨这种新疆特色路简直烂透了,有人竟然还要重走狼C !?

路上不时会看到牧民搭的小房子,但现在已经空了。从达坂下来后基本是沿着河谷顺流而下,有几处要过河但不用换鞋,雨季水量大时就不好说了P1050297

下午到达三岔河谷时,发现上游来水全是泥汤,前面开矿所致。本来计划继续向前多赶些路的,因泥水溪无法饮用又者天色将晚,全队只好在三岔口择地扎营,波波看着此营地绝望地坐在地上,只吐出了三个字:没心情。此处有前队扎营的痕迹,但是要找出个平地来,还是要费点功夫的,何况我们有五顶帐篷。

晚上的夜空,星汉灿烂,银河横贯长空,震撼人心!

D8 10/05 泥水溪交汇处-金矿-木屋

                徒步里程:15.4KM 海拔上升: 1183M
               
印象1:金矿,富了少数人却坏了祖宗江山
                印象2:
天气说变就变,一路走来无数纠结

前半程都是被现代文明所糟蹋的痕迹,因为金矿开采,不仅整条河成了泥汤水,整个河谷也被推土机推平了。直到过了金矿,其上游的又恢复了清彻的原貌。

P1050317P1050337

今天的计划是要一定翻过哈尔哈提达坂。但人算总跟不上天算,在离达坂沟口约1小时路程的时候,气温骤降,达坂上空乌云密布,空中开始飘起了雪花。我们的行程计划再度被打乱。遂决定全队撤回至金矿,打算乘矿上的车去巴伦台。

谁料老天又给我们开了个玩笑:返回途中,云开雾散,阳光重又普照大地。同领队吃饱点商议是否回头再翻达坂,吃饱点坚持大家安全出山最重要。可更没料到的是,返回路上碰到了一个22人的大队伍,问了一下他们领队,说是坚持要走出去的。我和先锋轻装先去金矿问了一下车子事宜,其他人在原地休息。等我们俩个返回后,22人的大队伍已经出发,我们遂下定决心,按原计划走出狼C。

但经此一折腾,近3个小时过去了,今天再翻达坂已无可能。如果不变天的话,这个时间我们应该快到达坂了。

天阴了起来,人站在风中瑟瑟发抖。行走至小木屋时,提议大家今晚在屋内打地铺,明早收拾也更快捷。天色渐晚,漫天的雪花亦是不期而至,洒满了整个山谷,也掩却了狼C的路。

D8营地哈尔哈提达坂沟口的木屋

一整天我都穿着溯溪鞋,本打算淌水过河的,但望着这流淌着的泥水,实在没有淌水的心情,便找了找高绕的路,呵呵,看来更多的人和我同样的想法。高绕下来后,也要过几次河,但有前队放好的石头,所以全程穿徒步靴即可。

建议:营地选择上,可在哈尔哈提达坂沟口的木屋内打地铺,参见轨迹内航点:好营地(两木屋),共有两个,但不紧挨相距有些远,屋内可睡8人左右。这样第二天便可以直接翻达坂,中午时分就可以到古仁格勒桥。

D9 10/06 木屋-哈尔哈提达坂-古仁格勒桥(地质队帐篷

                徒步里程:15.4KM 海拔上升: 1183M
               
印象1:饭是捡来的香
                印象2:
破釜沉鞋,只为古仁格勒的一米阳光,最后看到的却是地质队小伙们热情的笑脸

昨天粮食就开始告急了,还好一路之上有不少前面队伍为了减负而丢弃的生米、挂面等,我们一路行来,吃得绝对算是丰盛,只希望我们后面的队伍带了足够的粮食,经过我们扫荡后他们可是没得捡了。

早上7点多时雪还没停,昨晚已下了一夜,直到8点左右雪开始变小,等我们吃完近10点时,雪完全停了。大家继续前行,一定要走完狼C最后一段路。

不知前队22人的情况怎样了,即使他们不走的话,我们也必须出山。出发前和三彬、先锋商议上达坂时轮流踩雪。等我们到沟口时,发现他们已经拔营了,此后我们一直沿着他们的脚印走。

路过沟口的小木屋时,发现里面是各种物资,防潮垫要以打来算,垃圾也是以堆来计,因为是狼C最后一天了,能扔的都扔了,能减的负全给减了。

到达哈尔哈提达坂前的路真是绕,在湿冷的云雾里走了个半圈,才隐约看到哈尔哈提达坂的面貌。从达坂下降时,才用上已背了8天的简易河爪,穿上它下山得力多了,一路可以小跑着下山。

在天一色地一色的蓝白世界里,我们急速奔走、谈笑风生,轻松自在,一点不像走了9天的疲惫之师,也许只因为狼C就要结束了。

等到了古仁格勒桥,看到了地质队的帐篷,但并没有所预想的村庄。通过队长得知古仁格勒村子早没人了,这个季节人牧民都进城呆着了。

P1050397P1050402

由于附近手机没有信号,必须要到8公里外的哑口,领队吃饱点向地质队借了马,同一名地质队小伙骑马扬长而去。本以为他们能快去快回,可等了半天也不见个人影。就在大家决定派两个人去接应时,他们回来了,此时已过去了4个多小时了。

好消息是车子明天一早过来;坏消息是车子明天才能来,我们还要呆上一晚。还有个更坏的消息,走B线的队伍昨天才走出来,还有人受伤了,其它情况不明。但让我们稍许安心的是他们已经安全抵达乌鲁木齐。

晚上在地质队帐篷里结结实实地吃了顿大餐,我、波波、吃饱点、先锋接着在外面扎营,其他人睡地质队的帐篷。

建议:在古仁格勒桥,可以拦矿上的车去垭口打电话联系车辆或通报队伍安全出山的消息,然后再搭车回来即可。矿上来往的车比较多,半小时内应该能等到,当然等多久绝对是由人品决定的。

D10 10/07 包车-巴伦台-G216-胜利达坂-乌鲁木齐

                  印象:胜利达坂----最后的纠结

10点左右接我们的车子来了,大伙同地质队队长及小伙子们合影,然后挥手道别。

P1030222

师傅说好是要走G314-G312绕路到乌鲁木齐的,后来一通电话,说是G216翻垭口的路可以通行,虽然险,但路程短,只有200多公里路。于是先折回巴伦台吃饭,饭后开上G216,结果发现路太滑,车在硬雪上面完全没了抓地力,摇头摆尾似的,引得我们阵阵惊呼。最后全队下车步行,司机开着车子悠悠地开过胜利达坂,我们的狼C徒步却还在继续。

晚上23:30,终于到达乌鲁木齐。可爱的乌鲁木齐呀,我们又来了。

Continue reading » · Rating: · Written on: 11-08-12 · 1 Comment »

悦由心生

昨晚翻了翻以前的照片,发现05/06年初涉户外时的照片差不多每张脸上都挂着笑容,即便06年元旦的小五台之行,虽然此次活动相当失败(队伍大,雪大,计划中的三台只走了一台),但自始至终,却是笑容满面。

在当时来说,只要出去,就是愉快的,只要在路上,就是值得雀跃的。反到是现在,走得也算爽,风景也相当得嗨,一路走来也高兴过,可这般喜悦劲老觉得欠些火候,总是不温不火,或者不冷不淡。

想起了余秋雨写的一段话:成熟,是一种明亮但不刺眼的光辉,是一种洗刷了偏激的淡漠,是一种无须声张的厚实,是一种并不陡峭的高度。

难道?!

可我确信,还未达到他所说的那种并不陡峭的高度,充其量,也就熟了个半拉。这个“半拉”,太让人无奈。无奈得又让我想起了05年时的无奈感。

当时工作较忙,忙着写设计文档。工作忙已让人很无奈,但写设计文档对每个工程师来说,可谓是最无奈的事。又值我刚踏入户外圈子,瘾头正浓,看着别人东走西跑上窜下跳,真是打心底里羡慕妒忌恨!

现在看来,当时的无奈恰是所谓“为赋新诗强说愁”,以当年乱填的一首词为证:

凤栖舞

三千妙文三千言,读来数遍,总觉心头叹。
清凉峰顶擦肩过,内蒙大漠亦无缘。

书房枯坐强自咽,文案如山,终究意难安。
窗外高楼窗外天,高楼却挡天一半。

2005/08/17

注1:三千越甲,我第一次户外的队友,他也是第一次户外,众人称他为“3000”或“身怀六甲”。此前五泄之旅本算时个相当轻松腐败的活动,却因为麦莎台风的眷顾,彻头彻尾地虐了我们一把。更因为三千连续剧般的游记,让此次驴行成为了经典!

注2:清凉峰穿越计划,虽然报了名,但因为工作还是没能去成,更别说要长达一周时间的赤峰沙漠徒步了。

往事想来总是很好笑,不论当时是苦或乐。秋高气爽,或秋风萧瑟;良辰美景虚设,或良宵苦短,皆出乎于心。

没啥事且偷着乐吧,等笑完了,再接着写我的设计文档 ……

Continue reading » · Rating: · Written on: 11-06-12 · No Comments »