2016-10-26 ALEX LIN
更新日志 Method Swizzle(方法调配、方法混合、方法调和、方法混写) 是 Objective-C 运行时的黑魔法之一。我们可以通过 Swizzle 的手段,在运行时对某些方法的实现进行替换,这是 Objective-C 甚至说 Cocoa 开发中最为华丽,同时也是最为危险的技巧之一。Swizzle 使用了 Objective-C 的动态派发,对于 NSObject 的子类是可以直接使用的。 通过此方案,可以为那些『完全不知道其具体实现的』黑盒方法增加日志记录功能,这非常有助于程序调试。然而,次做法只在调试程序时有用。很少有人在调试程序之外的场合用上述『Method Swillze』来永久改动某个类的功能。不能仅仅因为 继续阅读 »
2015-08-14 王财勇
我们下载了Github上的代码,并仔细阅读了其中的细节。最后我们对源代码做了一些修正(新代码已上传到Github),主要包括: 修复了代码运行中出现的一些bug 添加了一些函数,使代码更简洁 训练阶段我们采用了分批处理,优化了内存 参考论文《Extended Supervised Descent Method for Robust Face Alignment》,优化了源程序 在测试阶段,我们使用了逆的缩放和平移变换将得到的aligned_shape 转换为原始图片的特征点true_shape 添加了详细的注释,使之更容易明白。 more Dependency: Vlfeat library: http://www.vlfeat 继续阅读 »
2016-10-13 曹强
php
简介 在[PHP设计模式(七):设计模式分类][2]中我们提到过创建设计模式(Creation patterns),创建设计模式专注于设计对象(Object)和实例(Instance)的创建过程。 创建设计模式包括下面五种设计模式: 抽象工厂设计模式(Abstract Factory) 生成器模式(Builder) 工厂设计模式(Factory Method) 原型设计模式(Prototype Method) 单例设计模式(Singleton) 当程序逐渐扩展的时候,需要更多的新对象,新对象的创建不应该依赖于创建者,换句话说,新对象的创建过程,不应该依赖调用创建函数的对象。为了减少冗余,增加拓展性,工厂模式就是一种 继续阅读 »
2018-04-04 findneo
note of https://www.ichunqiu.com/course/56927 Hacking三步曲 理解系统(Understanding) 系统性的基础课程学习,深入理解计算机系统运作机制。 破坏系统(Breaking) 学习与创造漏洞挖掘与利用技巧 重构系统(Reconstruction) 设计与构建系统防护 基础课程学习 核心基础课程——计算机的工作原理 体系结构 CPU的设计与实现 机器指令与汇编语言 指令的解码、执行 内存管理 CMU 18-447 Introduction to Computer Architecture https://www.ece.cmu.edu/~ece447/s15/dok 继续阅读 »
2013-11-05 veryyoung
I have a class that needs to obtain a reference to it's application's AssetManager. This class does not extend any sort of android UI class, so it doesn't have a getContext() method, or anything similar. Is there some sort of static Context.getCurrentApplicationContext() type of method? To clarify: my class is inte 继续阅读 »
2015-09-09 Jason Liao
function 里的 this 在不同的时候,会有不同的表现,一般会有以下四种情况 Invocation as a function Invocation as a method Invocation as a constructor Invocatuon with the apply() and call() method 继续阅读 »
2013-11-28 veryyoung
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下: Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下: public interface Sourceable { public void method(); } public class Source implements Sourceable { @Override public void method() { System.out.println("the original 继续阅读 »
2017-04-06 Eric Wang
缘起 每个人的大脑都有其自己的舒适区,比如说从家到公司开车上班,大脑会优先选择走熟悉的路线,而不是每天变个花样走陌生的路线,所以大脑其实是有惰性的,它总是会优先选择自己最熟悉、最不费力、也最简单的策略。长此以往,如果你不主动跳出舒适区的话,大脑自己是无法成长的。这一点小马(马克·扎克伯格,不是马云爸爸哦)也已经认识到了,不得不说,牛人就是牛人,尽管衣食无忧,此生不必奋斗了,但是依然在不断进步,让自己变得更加优秀。小马自己说“每年我都要给自己设立一个挑战,去学习新的东西,让自己在工作之外得到成长”。所以他特别为自己制定了每一年的挑战计划,列表如下: 2009年挑战每天戴领带上班 2010年挑战学习汉语 2011年挑战只吃自己亲手屠 继续阅读 »
2015-08-15 王财勇
论文《Extended Supervised Descent Method for Robust Face Alignment》对SDM方法做了扩展,使程序更鲁棒。 more 论文主要在三方面做了Improments,分别是: Adaptive Feature Block 在初始的SDM方法中,我们使用fixed-size blocks去提取SIFT特征进而预测shape。但实际上,从直观上来看,the feature extraction block size与the value of shape increment有很大关系。当shape increment比较大时,我们应该提取较大块的SIFT特征,这样就可以获取更多有用 继续阅读 »
2014-04-26 Xiaosong Gao
我们可以在Objective-C运行时将一个类中的一个方法,动态的替换为该类中的另一个方法。并且在替换后的方法中,依然可以调用以前的方法。 ``` import void MethodSwizzle(Class aClass, SEL orig_sel, SEL alt_sel) { Method orig_method = nil, alt_method = nil; // First, look for the methods orig_method = class_getInstanceMethod(aClass, orig_sel); alt_method = class_getInstanceMet 继续阅读 »