把程序员修炼之道读薄

这是一篇技术书籍读后感

早在2014年的时候我就已经购入《程序员的修炼之道》.还是由于慵懒一直没有翻开,最近才把它从书柜里翻出来看完。

老实说这本书相比CodeComplete2来说,还是差那么点味道,但是它依旧是一本好书。本书通篇都在向读者灌输一种做一个注重实效的程序员的概念,这句话出现了不下几百次,200页的书这句话都够填10页了Orz。为了阐明作者观点,书中从以下几个方面进行了自我论证:

为何要注重实效

作者举了温水煮青蛙曳光弹等 去论证注重实效在软件开发中的作用之大。在这过程中 还把如果做好一个程序员等问题 进行了自我解答。更有趣的是,读完这部分我发现全世界的程序员都应该有一个共性 — 沟通能力普遍不足,因为作者甚至在如何沟通这个问题上 进行了大篇幅的教学,如何和程序员沟通,如何和用户沟通,如何和产品经理沟通,如何减少沟通 等等。

如果觉得自己工作过程中 无法流畅的和其他人沟通 不妨多读一读这本书。

如何注重实效

DRY

这部分的章节,我认为是本书最精华的部分,作者在很多地方都提了DRY原则-Don`t Respeat Yourself(不要重复自己),翻译过来 应该就是不要重复造轮子了。关于DRY原则 推荐一篇反DRY原则的经典文章 – DRY原则的误区,作者是一位有着神奇精力的程序员,做程序员做到他这样 估计就算到头了吧?

DRY原则在细微的事情上 并不一定值得推崇,例如我的很多博客分享的小知识点 其实都是重复造轮子,但是我是发现别人造的轮子不够完美的情况下 才会去重复造。虽然可能我的轮子在你那里也转动不起来!

继续阅读“把程序员修炼之道读薄”

把CodeComplete2读薄

这是一篇技术书籍读后感

CC

早在2013年的3月份的时候我就已经在亚马逊购入了CodeComplete2,由于一直的懒惰与本书看起来实在是厚才拖了那么久,在2014年下半年终于对自己的懒惰看不下去了,花了三个月的业余时间把它读薄.今晚终于到了最后一个章节.倒不是说读完一本书是多么值得庆贺的事情,只是读完这本书后让我无法入眠.觉得应该写点目前的想法,以供我想再读一遍的时候前后对比.

不得不说这真的是一本值得我再次回来精读一遍的书,看完本书之后,回头看扉页和书前几页摘录的所有对CodeComplete2的赞誉 三个月前我觉得那更多的可能是对作者花费那么大精力去写一本那么厚的尊重,而现在 我觉得那应该全都是仅仅出于对本书内容的肺腑之言.而现在我更惊叹于我仅仅花了不到100块人民币就已经拥有了它.

继续阅读“把CodeComplete2读薄”

[阅读]人生元编程

阅读是我心里一直坚定要继续的东西,但是在过去一年到现在一直断断续续买了各种人文,技术类的书,真正读完的只有70%不到,似乎心里和身体达不到一个平衡点,谁都喜欢追美剧刷微博,今天偶然看到一篇人民日报的文章,说到了现代人阅读缺乏的“心若磐石”,和缺乏阅读的习惯性,似乎多年的应试教育告诉我们读书就是为了考试。

可能我还需要花很多的时间才能从多年的教育思维中走出来,但是现在我知道阅读不能停.在初中到高中结束的年代我比较倾向于名著,古典名著,外国名著,但凡标明是名著的书,但凡作者一栏写的是鲁迅郭沫若,当时拿着总有一种高端大气的感觉.

但是今天的我反而比较喜欢比较小众的书籍,很多作者甚至还不能叫出名,或者只能在各自的圈子里出名.例如焉冰,不看山东台不关注西藏不关注民谣的可能根本连这个名字都没听过,但是他的那本书<他们最幸福>却让我爱不释手,不是因为我向往那种生活状态,而完全是因为我从作者身上看到了一种本质,那就是:

你完全可以成为你想象中的那个人.

继续阅读“[阅读]人生元编程”

Alchemy2:正式更名FlasCC,并且在性能 配置IDA上更新简单

官网:http://gaming.adobe.com/technologies/flascc/

Alchemy在之前的博文就有详细的介绍可入门教程对比;

ADOBE其实一直也在做这个东西  之前几年大牛们都觉得ALCHEMY不够成熟

所以在很少的地方能看到ALCHEMY的使用。

但是现在ALCHEMY2出来了。。并且叫了一个名字:FlasCC  虽然我更喜欢有点艺术气质的名字ALCHEMY。

马上入手研究研究。。新项目也进入了另外一个阶段了。走起!

AIR ANE打包之时间戳错误:could not generate timestamp handshake alert

AIR  ANE,既是AIR为移动开发所支持的本地拓展。

比较经典的HELLOWORLD教程在:这里

小博安装教程一步一步走下去,到了打包ANE的时候出现时间戳的错误。

could not generate timestamp handshake alert

继续阅读“AIR ANE打包之时间戳错误:could not generate timestamp handshake alert”

AIR移植ANDROID之STARLING开源项目:Whack

Starling简介以及中文站:http://www.starlinglib.com

在ADOBE AIR出到3.0之后,AIR跨平台的优势被越来越多的人发掘。

特别是拥有完美封装STAGE3D API的开源框架STARLING的出现。

让更多的人使用AIR进行跨平台开发特别是游戏开发成为可能。

这在三年前可是想都不敢想的事情。

试想一下  未来 使用AIR开发的游戏肯定鲜花洒满地。
继续阅读“AIR移植ANDROID之STARLING开源项目:Whack”

推荐一款FLASH开发优化利器:TheMiner

最近一直在学习关于FLASH开发中的内存优化问题,特别是在AIR FOR ANDROID上。

而发现FB自带的profiler无论是在修改了FlashBuilder.ini文件。

还是修改了用户路径 还是修改了DEBUG FLASH PALYER版本都不可连接。

偶然间发现一款叫做flash preload profiler的SWF程序分析程序。。

而在网上很多朋友都不知道如果使用或者说因为墙的关系无法登录作者的BLOG。

福音是现在作者已经考虑到了这一点,不仅如此。

还提供了中文版的flash preload profiler~NICE!
继续阅读“推荐一款FLASH开发优化利器:TheMiner”

使用Starling 对AIR 快速移植到ANDROID

最近在学习Starling与Air For Android开发。发现其实ADOBE的AIR为我们做了大部分的工作。包括一堆参数的设定等等。

接下来我们尝试对一个AS3写的PC端俄罗斯方块进行移植。

考虑到Starling的优势,我们先选择在纯FLASH 天然的情况下加入GPU渲染。

当中出现的问题的是:

1>尽量避免使用原生FLASH连接库

2>Texture纹理上传资源的限制,所以针对Texture.fromBitmap或者fromBitmapData的使用次数和上传的纹理大小要特别注意。

3>资源回收,这是个大问题,在单帧时间过长内存消耗过大的情况下,基本上是卡着不动的,GPU会耗死,总结了几点:
继续阅读“使用Starling 对AIR 快速移植到ANDROID”

FS寄存器和Kernel32.DLL基址获取方法

FS寄存器指向当前活动线程的TEB结构(线程结构)
偏移 说明
000 指向SEH链指针
004 线程堆栈顶部
008 线程堆栈底部
00C SubSystemTib
010 FiberData
014 ArbitraryUserPointer
018 FS段寄存器在内存中的镜像地址
020 进程PID
024 线程ID
02C 指向线程局部存储指针 TLS Thread Local Storage
030 PEB结构地址(进程结构)
034 上个错误号
得到KERNEL32.DLL基址的方法
[cc lang=”asm”]assume fs:nothing          ;打开FS寄存器
mov eax,fs:[30h]            ;得到PEB结构地址
mov eax,[eax + 0ch]        ;得到PEB_LDR_DATA结构地址
mov esi,[eax + 1ch]        ;InInitializationOrderModuleList
lodsd                      ;得到KERNEL32.DLL所在LDR_MODULE[/cc]
结构的InInitializationOrderModuleList地址
mov edx,[eax + 8h]         ;得到BaseAddress,既Kernel32.dll基址

8086伪指令[收集]

同一个程序中,标号或变量只能定义一次.

标号有三种属性:段、偏移、类型(NEAR PTR,WORD PTR,FAR PRT,DWORD PTR)

数值回送操作符:TYPE、LEGNTH、SIZE、OFFSET、SEG

TYPE    expression(or label)

如果表达式是变量,则回送该变量以字节数表示的类型:DB为 1, DW为 2, DD为 4…

如果表达式是标号,则回送该标号类型的数值:NEAR为 -1, FAR为 -2.

如果表达式是常量,则回送0.

array DW A110H,B02CH,C322H            ADD    AX, TYPE  array 等价于 ADD    AX, 2

LENGTH    variable 对于变量使用DUP的情况,将回送分配给该变量的单元数; 对其它情况则回送1.

fees DW 100 DUP(?)            MOV  CX, LEGNTH  fees 等价于MOV  CX, 100

SIZE    variable 回送分配给该变量的字节数

MOV    CX, SIZE  fees 等价于 MOV CX, 200

OFFSET    variable (or lable) 回送变量或标号的偏移地址.

MOV    BX,OFFSET OPER_ONE 等价于 LEA BX,OPER_ONE 语句 ,将OPER_ONE的偏移地址送入BX

SEG    variable(or lable) 回送变量或标号的段地址.

若OPER_ONE是DATA_SEG数据段中的一个变量,下面语句取得DATA_SEG段首地址

MOV    DS , SEG OPER_ONE 等价于 MOV    AX , DATA_SEG            MOV    DS , AX
继续阅读“8086伪指令[收集]”