《#诗盗#·咦,洞!》:一入洞中十八年,左右互撸屌成仙。最终虽然死翘翘,必留秘籍后人练。
注解
喷一下武侠小说的套路。
《#诗盗#·咦,洞!》:一入洞中十八年,左右互撸屌成仙。最终虽然死翘翘,必留秘籍后人练。
喷一下武侠小说的套路。
《#诗盗#·晒机》:新家采光很给力,早上起来晒机机。沃草晒黑怎么办?切掉再长最牛逼!
从 18 楼搬到 28 楼,早上进来采光比较好,机机表示有点不习惯……
《#诗盗#·没得匹》:天生丽质难自弃,不少妹子等哥匹。匹来匹去皆嘴炮,活该匹完被拉黑!
台风天,夜独行,来吐槽一下自己!
匹:批处理打嘴炮。
《#诗盗#·贱肥》:十个晚跑九个肥,九个胖子八个痿。当初要不吃成猪,今日何苦来遭罪。
软件园散步观后感。
《#诗盗#·高端黑草根》:穷逼青年技术高,撸来外挂领风骚。腾讯告,十年牢,撸管撸到真屌爆!
惊闻软件园有人因为做外挂被捕而作。
《#诗盗#·好湿》:夏来一周雨,滋润草林木。泥哥没带伞,半路淋成猪。
骑车去上班,结果半路下大雨……
这篇文章是用 Surface RT 写的。先喷一下这设备不爽的地方!
Surface RT = sqrt(1366^2+768^2)/10.6
= 147.8
XPS 15 = sqrt(1920^2+1080^2)/15.6
= 141.2
居然才比 XPS 15 高了一小点!
再来要说的是,微软的自残行为。UMU 用过 iOS、Android 平板,甚至见过有人用 XP 平板,但相信,论系统本身 Windows RT 是最强大的。不过微软为了战略目标,把 RT 强大的一面给锁起来了。对开发人员来说,这锁表现在以下几点:
系统本身不允许运行没有微软签名的 EXE;
VS2012 默认无法编译 ARM 程序;
VS2012 自带的 ARM lib 缺失。
下面就是简单介绍一下如何突破这三个封锁:
RT Jailbreak Tool By Netham45, Version 1.20
http://forum.xda-developers.com/showthread.php?t=2092158
另外,有很多开源软件已经移植,在开发自己的程序之前,可以先试试,Desktop apps ported to Windows RT:http://forum.xda-developers.com/showthread.php?t=2092348
You can edit the file:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Platforms\ARM\Microsoft.Cpp.ARM.Common.props
对 VS2013 路径是:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Platforms\ARM\Platform.Common.props
In the
section add the line:
<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
before
</PropertyGroup>
And that’s all, you can build ARM desktop apps with VS2012.
某些工程需要强制定义 _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE 才可以。
开源工具应运而生:https://github.com/peterdn/dll2lib
然后,炫耀一下,UMU 已经把自己的一个小作品“天翼宽带智能提速”移植成功。这个程序比较小,一两个小时从解锁到移植开发全部搞定。
最后,如果程序是 .NET 4.x 写的,是可以直接跑在 RT 上的,所以为了省力气,也许应该考虑多用 .NET。
《#诗盗#·震邦》:汶川宝宝芦山没,装逼作秀唱你妹。各种悲剧各种坑,一半红情一半黑。
评新闻《汶川地震宝宝芦山地震去世》和《韩红怒斥赈灾歌曲:唱歌比救援还重要?》,顺便纪念过世的好友陈震邦。
本文不是介绍奇技淫巧,甚至本质上并不是技术,而是态度,心法。
简单地说,A 有八哥,B 依赖 A,所以导致依赖 B 的 C 出问题,您会通过修改 B 来解决问题吗?正常人都知道要先解决 A 的八哥,蛋似,稍微复杂、含蓄点的问题就有人迷糊了:
一个浮动小窗体,不希望在任务栏上出现标签。
UMU 见过有人使用了 ITaskbarList 对象的 DeleteTab 方法来删掉任务栏上的标签,很高端的做法。蛋似,不够本质,我们要的是不让它出现,而不是出现后擦掉……很早以前,explorer.exe 挂掉后,任务栏通知区域的 QQ 图标就消失了,因为当时 QQ 没有处理任务栏重建的通知消息 TaskbarCreated,重新添加图标。前面说的方法,有同样的问题,explorer.exe 重启后,标签又会出现,还要再删除一次。
正确的主流做法有两个,看情况采用:(1)、WS_EX_TOOLWINDOW;(2)、指定一个隐藏窗体为自己的拥有者。
另一个脱裤子放屁的例子:获得一个文本文件大小,然后 new 一个够大的 char 数组 p,把内容读到 p 上,最后 ::std::string str = p; delete[] p;,这个见太多次,都懒得喷了。::std::string 有 resize 方法,可以直接分配,不需要 new 一个临时数组,再 delete……
《判断系统是不是 XP》,也包含了这一哲学,表面上看有好多函数可以获得系统信息,但要明白他们的本质其实有差别,不是都可以混用。
Y2K 已经过去了,但还有一个 Y2K38,又称 Unix Millennium Bug,历史原因 Unix 时间戳是一个 32 位整数,记录从 1970 年 01 月 01 日开始的秒数,它所能保存的最大时间长度大概是 68.1 年,2038 年 1 月 19 日 03:14:07 之后。
以前硬盘容量小,也不看高清,很多代码都认为文件大小用 32 位表示就够了,结果后来出现很多 ISO、高清电影,都超过 4G……还见过有人采集流量用 32 位整形表示,时间跑久了就溢出了。
远见未必人人都有,退一步说,UMU 敢保证,有很多人即使知道 32 位不够用,还是继续用着,明知道 IPv6 已经出现了很久,还是各种硬编码,认为 IP 地址一定是 IPv4 的地址。态度问题!
遇到不合理的情况,UMU 认为应该给力地告诉该知道的人。比如,函数不希望入参是某指,可是调用者偏偏就输入了那个值,怎么办?打印调试信息?不够给力,容易被忽视,应该中断一下,告诉开发者。
配置文件字段被改错,怎么办?如果这个文件是技术人员维护的,应该抛出异常,死给修改配置文件的人看;如果是一般的最终用户,那应该弹出界面,友好提示哪里、怎么错了。
早期,很多程序员为了避免头文件被重复包含,就用了以下代码:
1 |
|
后来,大家喜欢用 #pragma once,省事,又不容易漏掉最后的 #endif。但是这样做之后会……姑息养奸!除非十分通用的工具类,对严谨的人来说,重复包含是不应该的!所以应该这样:
1 |
|
有重复包含立刻告警,而且都是集中在开头,不存在漏掉 #endif 的问题。
态度问题!这里只是举几个简单的例子~
快游(网游加速器)包含一个 LSP,属于加速核心组件,在测试 LSP 期间,发现一个奇怪的现象:反注册它,并 netsh winsock reset 加重启好几次……依然有程序加载它。用 Process Explorer 查看是:IpOverUsbSvc.exe 和 daemonu.exe。把 LSP 的 DLL 文件删掉,再重启,可以消灭这个奇怪的现象。但后来想重现这个怪现象时,却无法重现。
问题自然重现,继续研究。这两个进程对应的服务名是:IpOverUsbSvc 和 nvUpdatusService。手动重启这两个服务后,即不再加载 LSP。推理:这两个服务很可能每次重启机器时都没有正常关闭,系统提供了某种机制让他们在下一次重启后快速恢复了运行现场(保留了有 LSP 注册时的环境)。
时隔三个月,偶然看到介绍"混合式关机"的文章,恍然大悟,原来是这货引发的八哥!
在安装 Win8 后,很多人都体验到了其开关机惊人的速度,尤其是开机速度,相比 Win7 之下,它提升的不止是一点半点。在某些超极本和配备了 SSD 的机器上,其开关机速度可以在数秒以内。例如 Surface Pro,其实测系统引导速度为2秒,从启动到自动登录到开始屏幕只要6秒。
究竟是什么技术提升了 Win8 的开关机速度呢?如果要用最简单的一句话概括,那应该是"系统会话休眠",或者更简单的,“混合式关机”。
在 以往的 Windows OS 中,典型的关机顺序为:
单击"关机"。
Windows 广播运行应用程序关机信息,让应用程序可以保存数据和设置。应用程序也可以要求一些额外的时间以结束其当前工作。
Windows 为每个登录用户关闭用户会话。
Windows 向服务发送关机信息,通知已开始关机,接着关闭服务。如果服务未响应,系统将强制关闭。
Windows 向设备广播信息,示意设备进行关闭。
Windows 关闭系统会话(也称为"会话 0")。
Windows 刷新系统驱动器待决数据,以确保完全保存。
Windows 通过 ACPI 界面向系统发送信号以给计算机断电。
看着以上的典型关机步骤,你是不是也有想到一些步骤对应的屏幕上的 UI 表现呢~
再来看看 Windows 8 采用的混合式关机主要步骤:
单击"关机"。
Windows 广播运行应用程序关机信息,让应用程序可以保存数据和设置。应用程序也可以要求取得一些额外的时间以结束其当前工作。
Windows 为每个登录用户关闭用户会话。
系统会话休眠,并掉电。
可见,Windows 8 只关闭用户会话而不像以前那样完全关闭计算机。此时, Windows 不再等待并结束系统服务和关闭会话 0,而是让其进入休眠。这种关闭用户会话+休眠系统服务和系统会话的做法,被称为"混合式关机",也就不难理解了。
或者说得通俗点,就好比你之前打扫卫生时,需要先组装专业的拖布,组装好了以后,才能开始打扫卫生。而现在,你可以拿起拖布直接开始打扫,因为你上次打扫完之后,并没有将拖布这一工具像以往那样拆卸下来收好。
开机在结构上是关机的逆过程,所以有了混合式关机,开机自然也就快了。但是,除了 RAID 卡外,一般硬盘的读取速度会比写入速度略快,加上关机的时候,系统会通知并等待应用程序退出,所以从感官上,开机过程会比关机过程显得要快一些。