2015新年大礼:GFW再次大升级,fqrouter已死,goagent已死

上个月低GFW屏蔽Gmail服务之后,今年GFW一上来就来了一个惊喜,该屏蔽的都屏蔽了。
fqrouter的作者昨天在twitter上表示项目停止维护。而GoAgent的作者也停止了GoAgent这个项目。也就是说原本大约40%的翻墙者不得不更换新的工具。
这一次的屏蔽似乎并不是简简单单的普通的屏蔽,而是带有回访功能的更加智能的骨干网丢包。我这里的以前通过hosts修改来访问google,而现在当我查找到能使用的google ip并且尝试访问之后的几分钟之内,这个ip地址就被阻断,然而该ip可以ping通,而80端口tcp包却没有任何应答,而443端口的tcp也是中途就会丢失。由于并不知道google的mac地址,所以不能实际确定这次是使用的路由表污染还是使用的选择性丢包完成的。至于更进一步的研究就要等着我有更多时间之后进行仔细的研究。
至于这次的GFW升级的影响肯定还是很大的。不管GFW怎么升级,VPN或者SS这种麻雀战以及XX门这种XX功的东西肯定是不会消亡的。如果中国阻断PPTP协议的话,那么许多外国企业就完全没有办法在中国办公了。而XX门那种工具有着政治对手的支持肯定也不会消亡。所以这次升级直接的后果肯定就会使现在翻墙工具变得更加单一化。
总之,方教授真是给了一个新年大礼啊。本来还想写一篇关于GFW的论文,结果GFW就升级了……你特么在逗我

php文件函数windows系统编码bug

最近在windows的php环境突然发现windows的php的文件函数文件名都是使用的GBK编码没有使用utf-8编码。于是需要手动转换一下编码。当然了linux系统都是使用的utf-8编码就没有这些问题啦。

我写了一些常用的函数的包装,供大家方便使用

$Server_System;
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    $Server_System = 'windows';//filename will be changed into utf-8 in windows
} else {
    $Server_System = 'linux';
}

function my_file_exists($path)
{
    global $Server_System;
    if($Server_System == 'windows')
    {
        $path = iconv('utf-8','gbk',$path);
    }
    return file_exists($path);
}

function my_file_get_contents($path)
{
    global $Server_System;
    if($Server_System == 'windows')
    {
        $path = iconv('utf-8','gbk',$path);
    }
    return file_get_contents($path);
}

function my_filemtime($path)
{
    global $Server_System;
    if($Server_System == 'windows')
    {
        $path = iconv('utf-8','gbk',$path);
    }
    return filemtime($path);
}

function my_file_put_contents($path,$data)
{
    global $Server_System;
    if($Server_System == 'windows')
    {
        $path = iconv('utf-8','gbk',$path);
    }
    return file_put_contents($path,$data);
}

function my_is_dir($path)
{
    global $Server_System;
    if($Server_System == 'windows')
    {
        $path = iconv('utf-8','gbk',$path);
    }

    return is_dir($path);
}

function my_md5_file($path)
{
    global $Server_System;
    if($Server_System == 'windows')
    {
        $path = iconv('utf-8','gbk',$path);
    }
    
    return md5_file($path);
}

function my_sha1_file($path)
{
    global $Server_System;
    if($Server_System == 'windows')
    {
        $path = iconv('utf-8','gbk',$path);
    }
    
    return sha1_file($path);
}

快被bug弄崩溃了

到处都是bug,bug,bug。刚刚修复了那个php CDN的文件编码之类的bug,现在又出来了莫名其妙的调用失败的bug。

做的nodejs的蜘蛛也是被nodejs的异步给恶心到了,嘛,早知道就不用nodejs给自己自找麻烦了,哎,不能实时同步查询数据库简直无情。

神经网络这面的程序也是错误多的好多,莫名其妙的训练不了了……不管了,总之各种操蛋

轻量级php文件同步:LIGHTphpCDN

嘛,很不要脸的来推广自己的项目了。一个开源的轻量级的PHP写的文件同步系统。当然目的是为了管理CDN的了,所以名字也就叫CDN了,至于是不是CDN嘛,看你怎么用啦。

为什么要写这个项目呢,主要是前一段时间被我的php空间恶心到了,由于是虚拟主机,只能使用ftp进行上传。由于想利用php免费空间建立下载镜像,所以就一怒之下写了这个软件。

软件的说明什么的在项目目录里面,不过是英文写的罢了。

项目主页:https://github.com/manageryzy/Light-php-CDN

 

世界真的好小啊

前一段时间无意在网上发现了星光的博客,一下子找到了萌口组,发现这竟然是黑猫长的站。

最近又在MC的圈子里面发现了一些个人独立博客,追踪着这些友情链接真的发现了许许多多熟悉的身影呢。

突然见我萌生了一个念头:通过外链的分析建立一张独立博客的外链网络的可视化查询网站。

不管怎样,先把自己手头的活先干完啦。开的坑太多了 > _ <

Visual Studio插件推荐:resharper

一直以来不在Visual Studio编程,发现自己很火星的发现这么一个插件:resharper

众所周知,Visual Studio很强大,但是有一些功能跟屎一样:代码提示完全不区分上下文环境(简直就是NOTEPAD++水平);快捷键设计的让人完全体会不到有哪里快捷了。

在无意中发现了这么一款插件用来替换掉Visual Studio跟屎一样的代码提示。人们都说安装了resharper的VS和没安装的VS是两个IDE(不过我并不是微软阵营的开发者)。实际使用了一下,发现确实,这个代码提示很强大。不过他是收费的(在中国国情下……不说了)。如果你不能忍受这种商业软件,我推荐你还是不要使用Visual Studio了吧。免费的版本你能够获得30天的试用。

http://www.jetbrains.com/resharper/

以上是它的官方网站。

新坑预告:Minecraft Mod开发框架

在现在这个时代开发Minecraft Mod已经比起过去轻松多了,但是仍然是一件非常繁琐的事情。你不得不把所有的数据都在代码里面处理,你必须是程序员、是美工、是游戏设计师、是游戏测试人员。所以我准备开发一套更加方便的Minecraft Mod开发框架,提供图形化界面的代码生成、资源文件管理以及实用API的提供。

 

项目的地址(现在这个只是图形化界面的库项目,算是代码模板吧):https://github.com/manageryzy/Minecraft-Forge-Class-Template

 

走过路过的,如果你也热爱Minecraft 请给我的项目星星或者关注啦,当然如果你能够贡献代码,请务必联系我

自定义你的eclipse forge-gradle workspace

如果你使用eclipse来开发你的minecraft mod,你可能会直接使用Minecraft Forge提供的workspace,这样子虽然方便,但是有的时候你就会意识到你正在做一些非常愚蠢的低级的事情:在不同版本的mod之间来回复制代码。就算是你通过版本控制软件(比如git或者subversion)来解决了这个问题,有的时候你还是会发现你没有办法来解决工程之间的依赖,也没办法在一个workspace下面开发多个mod。今天我来粗浅的介绍一下如何在eclipse的一个workspace里面开发并且调试自己定制的forge-gradle的工程。


 

不管怎么样,你在开发之前你必须要拥有你的开发工具了。在你安装eclipse之后很有可能你的eclipse是不支持gradle的,你可能会需要手动安装gradle插件。为了安装的方便我推荐你通过MarketSpace来安装你的插件。如果你的eclipse没有Market请你自行在网络上搜索如何获得MarketSpace。通过MarketSpace你可以轻松的获得Gradle插件。

虽然有了Gradle插件你就可以开始开发了,但是由于这个插件并不是很好用,所以我还是在这里来具体的说一下你该如何操作吧。

  1. 解压你下载回来的minecraft forge src文件
  2. 在命令行或者终端里面执行gradle的初始化反编译环境任务,并且执行eclipse任务。具体的可以参考forge gradle环境搭建教程
  3. 在eclipse 的File菜单里面选择Import,选择已经存在的工程。找到你的解压出的目录并且导入
  4. 导入之后你的工程通常不会有一个友好的名称,推荐你通过F2来调用重命名来给工程起一个容易识别的名字
  5. 推荐你在之后的开发中通过Git来管理你的软件版本,这样也方便你进行多个分支的开发
  6. 在eclipse配置运行选项。为了方便,通常我会配置运行选项为Gradle GUI。不要忘了给你的运行选项起一个容易识别的名字
  7. 启动你的刚刚配置的工程。如果一切顺利的话,你应该可以看到已经列出来的可用命令(不过这一步在我这里通常需要花费一定的时间)。
  8. 推荐你把常用的runClient以及runServer添加到favorite里面
  9. 如果你需要调试,请在你的Gradle启动任务的时候添加上–debug-jvm参数。这个时候还并不是完全的。你还需要去eclipse里面去配置项目的调试的方式。具体做法是:在Debug As里面选择远程Java应用程序,然后设置端口。这时候你应该先在Gradle里面启动任务之后然后通过eclipse来调试程序

以上,就是全部的自定义你的ForgeGradle WorkSpace的流程了

减小Visual Studio的解决方案体积

最近,迫于生计,去使用Visual Studio去开发了一些闭源的项目。是用Visual Studio的时候发现了一个现象就是解决方案目录体积过大(明明早就发现了好么,只是在重新炒冷饭好么)。

其实如果你熟悉eclipse或者idea的话,你可能就对解决方案是什么有一个基本的了解了。Visual Studio的解决方案eclipse的WorkSpace。eclipse为了代码的智能提示会把代码进行分析之后储存在解决方案的目录下面的隐藏目录下,当然了,这个目录下面也有当前WorkSpace的所有配置。

而Visual Studio的做法是:把解决方案的配置放在.suo文件里面,而那些肥大的代码提示放在一个SQL数据库文件里面(喂,这么不智能的提示也能算提示么)。如果你想要干掉这个肥大的文件,一个办法就是通过配置让Visual Studio把这个文件储存在系统临时目录下。具体的做法如下(我假设你使用的是中文版的Visual Studio):

  1. 点击“工具”菜单,选择“选项”
  2. 选择“文本编辑器”-“C/C++“-高级
  3. 设定”始终使用回退位置“为TRUE

在进行上面的操作之后肥大的代码提示文件被出掉了。如果要进一步的缩减解决方案的体积不要忘记在每次Build之后Clean你的解决方案

[原创]Minecraft Mod-AutoFishing

这是一个作弊向的Mod,你只需要在客户端安装就能实现挂机钓鱼。如果你认为这个是不道德的,请不要在服务器使用。MCBBS以及MinecraftForum上有一些钓鱼的挂机Mod,但是主要的两种挂机钓鱼MOD有分别有各自的问题:需要修改Minecraft文件以及不能在1.7.10运行。这个Mod兼容各种各种已知的钓鱼扩展,水产mod等钓鱼扩展也适用。

API需求:FORGE
安装方法:下载合适版本放入MOD文件夹
软件协议:GPLv3

版本记录:
2014.12.10 发布第一版。支持1.7.2以及1.7.10。已知BUG有灵活行动可能有的时候可能造成右键误动作

下载地址:度盘