C# 使单一程序支持以命令行程序或Windows应用程序两种形式执行

几个月前重拾C#写了一个小程序, 最近把它更新了下, 支持在命令行中运行, 这样就能配合脚本使用.

在开发途中遇到了一个小问题: 以Windows应用程序运行时, Console.WriteLine输出的结果是不可见的. 即以Windows应用程序形式运行时, 作为Console的实例并不存在, 所以程序无法输出任何信息.

继续阅读

我的Chromebook折腾血泪史

自上周收到海淘来的Chromebook之后, 我就走上了一条折腾Chromebook的不归之路, 这将近一周的折腾下来, 感觉小有收获, 便在此做出记录, 也许能节省后人的一些时间.

我当时折腾的中心思想是, 把 Chromebook的Chrome OS充分利用起来, 不搞什么歪门邪道的给Chromebook换系统, 因为这个是很奇怪的一件事情, 你买了Chromebook, 结果给装上一个Windows, 或者装上一个Ubuntu, 那都是违背使用Chromebook的初衷的, 我要的就是全Web App情况下的体验(超酷), 在上网之余顺便还能当作简单的开发机来使用.

继续阅读

JavaScript 在对象中查找指定值并返回引用路径

该函数用于在对象中查找指定的数值, 返回包含该值的引用路径的数组.

参数allowCircleStruct用于设定是否递归环状结构, 通常设为false即可, 若设为true在一些情况下可能造成堆栈溢出.

参数allowEnumProto用于设定是否允许枚举Prototype中的可枚举属性, 设为true时将使用for-in循环, 设为false将使用Object.keys返回的数组循环.

参数depth用于设定递归深度.

据说ES6支持尾递归, 不过看了下好像也改造不成尾递归, 就没有继续做进一步优化.

继续阅读

JavaScript 反混淆的一般套路和技巧: 结

本来《JavaScript 反混淆的一般套路和技巧》是打算作为一篇单独的长文来写的, 后来硬生生被我拆成了《起》、《承》、《转》、《结》四章, 在《转》里面整个反混淆的事情其实已经被我们解决了, 结果就是这作为最后一篇的《结》, 变成了多余的一章. 这章该写些什么让我想了很久, 最后决定还是想到什么写什么.

继续阅读

JavaScript 反混淆的一般套路和技巧: 转

把没用的多余的简写的代码处理完后, 代码就差不多有个基本的样子了, 不过现在还没到休息的时候. 由于函数错综复杂、变量名表达不出语义等原因, 我们的代码虽然可读性较之前已经得到了提高, 但想要完整理解代码的意图, 在当前的情况下仍然是一件麻烦的事.

继续阅读

JavaScript 反混淆的一般套路和技巧: 起

最近发现网上没有什么专门深入去讲解JavaScript反混淆的文章, 能找到的, 基本都是针对于某一种加密方式的简单解密方法, 虽然能够解决一时的问题, 但从学习和研究的角度去看, 并没有太多价值. 加之近日从他人手中接手了一个算是有些棘手的反混淆单子, 感觉有所收获, 遂将自己在反混淆方面的一些理解和方案, 做一下记录, 于是便有了此文.

继续阅读