<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>yueyoum</title>
    <link>https://ruby-china.org/yueyoum</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>[ANN] make-proxy 发布 4.0.0 版本</title>
      <description>&lt;p&gt;项目地址： &lt;a href="https://github.com/yueyoum/make-proxy" rel="nofollow" target="_blank"&gt;https://github.com/yueyoum/make-proxy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;已经稳定使用几年了。
以前也发过，但这次更新还是值得再次宣传一下的&lt;/p&gt;
&lt;h5 id="架构"&gt;架构&lt;/h5&gt;
&lt;p&gt;架构还是常见的 本地代理 + 外部服务器 的形式。 &lt;/p&gt;

&lt;p&gt;本次新版本几乎重写了整个项目，
并且使用了 成熟的 &lt;code&gt;ranch&lt;/code&gt; 库
所以整个代码更加清晰&lt;/p&gt;
&lt;h5 id="主要特性"&gt;主要特性&lt;/h5&gt;
&lt;p&gt;支持 HTTP, SOCKS4，SOCKS5 代理，而且都是代理在同一个端口上的。&lt;/p&gt;

&lt;p&gt;HTTPS 目前不支持，正在准备添加，但 HTTPS 就得单独一个端口了&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;开发 HTTP 代理的时候，居然发现 浏览器可能会把多个 site 的请求 发送到同一个连接上。&lt;/p&gt;

&lt;p&gt;比如 流程是这样的&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; 访问 site A，浏览器请求本地代理，打开一个连接，发送 GET A ... 这样的 HTTP 请求&lt;/li&gt;
&lt;li&gt; 访问 site B，如果此时 A 还在传输数据，连接没有关闭，那么浏览器居然会把 GET B 的请求继续发送到 A 的连接中。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;socks 是没有这个问题的，但 http 却遇到这个事情，于是只能撸一个完整的 http 协议解析，
并且把 发送到本地代理的请求 缓存起来，直到有一个完成的 http 请求后，才发给代理服务器。&lt;/p&gt;</description>
      <author>yueyoum</author>
      <pubDate>Sat, 15 Oct 2016 11:46:09 +0800</pubDate>
      <link>https://ruby-china.org/topics/31328</link>
      <guid>https://ruby-china.org/topics/31328</guid>
    </item>
    <item>
      <title>JSON VS Protobuf</title>
      <description>&lt;p&gt;&lt;a href="https://github.com/yueyoum/playground/tree/master/Json%20VS%20Protobuf" rel="nofollow" target="_blank"&gt;https://github.com/yueyoum/playground/tree/master/Json%20VS%20Protobuf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;周末两天都在搞这个东西，
手里几个项目都用的 protobuf，最初是觉得方便，
最近觉得 json 其实比 protobuf 还方便，特别是在服务端。&lt;/p&gt;

&lt;p&gt;于是自己就对 json 和 protobuf 在打包大小，速度方面做了测试。
特别加入了 C#，因为客户端用的这个。&lt;/p&gt;

&lt;p&gt;从客户端来看，protobuf 还是占有很大优势的。&lt;/p&gt;</description>
      <author>yueyoum</author>
      <pubDate>Mon, 27 Apr 2015 02:08:07 +0800</pubDate>
      <link>https://ruby-china.org/topics/25326</link>
      <guid>https://ruby-china.org/topics/25326</guid>
    </item>
    <item>
      <title>[make-proxy] 添加 http 代理</title>
      <description>&lt;p&gt;&lt;a href="https://github.com/yueyoum/make-proxy" rel="nofollow" target="_blank"&gt;https://github.com/yueyoum/make-proxy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;最初实现只支持 socks5 代理。
实际使用中会遇到一些程序只能走 http 代理，
虽然用第三方服务可以将 http 转换成 socks5 请求，
但是颇为麻烦。&lt;/p&gt;

&lt;p&gt;具体表现就是 每次 换个新环境，除了要 布置 make-proxy 以外，还要找支持 http 转 socks5 的软件。&lt;/p&gt;

&lt;p&gt;于是这几天就给 make-proxy 加上了 http 代理支持。&lt;/p&gt;

&lt;p&gt;特性：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;   socks5 代理&lt;/li&gt;
&lt;li&gt;   http 代理（不支持 https）&lt;/li&gt;
&lt;li&gt;   aec_cbc128 加密数据&lt;/li&gt;
&lt;li&gt;   稳定可靠（socks5 代理部分自己用了快 2 年了，现在还和别人一起共享 server 端）&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>yueyoum</author>
      <pubDate>Tue, 21 Apr 2015 02:12:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/25221</link>
      <guid>https://ruby-china.org/topics/25221</guid>
    </item>
    <item>
      <title>[ANN] Arrow - An Erlang Datetime Library</title>
      <description>&lt;p&gt;arrow 这个名字直接借鉴了 python 的 arrow 库。&lt;/p&gt;

&lt;p&gt;erlang 的这个 library 能够帮助你更加简单方便的处理时间。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/yueyoum/arrow" rel="nofollow" target="_blank" title=""&gt;github link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;方便之处：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;时间戳，&lt;/li&gt;
&lt;li&gt;erlang datetime {{Year, Month, Day}, {Hour, Minute, Second}},&lt;/li&gt;
&lt;li&gt;"YYYY-MM-DD HH:mm:ss" 格式的字符串&lt;/li&gt;
&lt;li&gt;&amp;lt;&amp;lt;"YYYY-MM-DD HH:mm:ss"&amp;gt;&amp;gt; 二进制&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这四种格式 对于 这个库的使用者是 透明的，基本不用关心输入的是什么。&lt;/p&gt;

&lt;p&gt;简单的 API：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;get/0, get/1
从时间戳，字符串，二进制解析成 erlang datetime 格式&lt;/li&gt;
&lt;li&gt;format/1
任意合法输入 格式化成“YYYY-MM-DD HH:mm:ss”字符串&lt;/li&gt;
&lt;li&gt;compare/2
比较两个时间大小&lt;/li&gt;
&lt;li&gt;diff/2
两个时间相差的秒数&lt;/li&gt;
&lt;li&gt;in/2
是否在时间段内&lt;/li&gt;
&lt;li&gt;add_*/2
添加/减去  年/月/日/小时/分钟/秒&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>yueyoum</author>
      <pubDate>Tue, 07 Apr 2015 19:40:38 +0800</pubDate>
      <link>https://ruby-china.org/topics/25039</link>
      <guid>https://ruby-china.org/topics/25039</guid>
    </item>
    <item>
      <title>[make-proxy] Erlang 实现的 socks5 代理</title>
      <description>&lt;p&gt;自己已稳定用了一年多，
最近更新到 2.0.0 版本。&lt;/p&gt;

&lt;p&gt;在这里： &lt;a href="https://github.com/yueyoum/make-proxy" rel="nofollow" target="_blank"&gt;https://github.com/yueyoum/make-proxy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;特点：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;速度快&lt;/li&gt;
&lt;li&gt;消耗系统资源少。同时开两个 youtube 1080p 视频，服务端内存占用 16MB&lt;/li&gt;
&lt;li&gt;安全通信。用 aes_cbc128 加密&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>yueyoum</author>
      <pubDate>Sun, 09 Nov 2014 23:56:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/22576</link>
      <guid>https://ruby-china.org/topics/22576</guid>
    </item>
    <item>
      <title>来一场 AI 对战吧</title>
      <description>&lt;p&gt;折腾了一个月，把自己一直想做的东西终于折腾出来了。&lt;/p&gt;

&lt;p&gt;AI 对战，你写的 AI 和 别人的 AI 进行 对战。&lt;/p&gt;

&lt;p&gt;先看演示示例：&lt;/p&gt;

&lt;p&gt;youtube：&lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//www.youtube.com/embed/V6PkjlUXV6w" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;
youku:&lt;span class="embed-responsive embed-responsive-16by9"&gt;&lt;iframe class="embed-responsive-item" src="//player.youku.com/embed/XNTk0OTk2Mjg0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;CodeBattle 这个项目包含四个部分。&lt;/p&gt;

&lt;p&gt;server: &lt;a href="https://github.com/yueyoum/codebattle-server" rel="nofollow" target="_blank"&gt;https://github.com/yueyoum/codebattle-server&lt;/a&gt;
client: &lt;a href="https://github.com/yueyoum/codebattle-client" rel="nofollow" target="_blank"&gt;https://github.com/yueyoum/codebattle-client&lt;/a&gt;
proto: &lt;a href="https://github.com/yueyoum/codebattle-proto" rel="nofollow" target="_blank"&gt;https://github.com/yueyoum/codebattle-proto&lt;/a&gt;
ai: &lt;a href="https://github.com/yueyoum/codebattle-ai" rel="nofollow" target="_blank"&gt;https://github.com/yueyoum/codebattle-ai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;client 是一个 unity3d 的项目，它用来建立房间，以及显示 AI 的操作.
proto，client 和 server 之间的数据交互 使用了 google protobuf 来序列化和反序列化数据.
ai 这个就是此项目的重头戏，你根据数据交互格式，以及游戏规则写自己的 AI，来和别人的 AI 对战。&lt;/p&gt;

&lt;p&gt;大家主要看的是 proto 和 ai 这两个 repo， 
proto 定义的数据格式，ai 里面有游戏规则，以及示例 ai。&lt;/p&gt;

&lt;p&gt;如何开始：&lt;/p&gt;

&lt;p&gt;在 client repo 中找到 编译好的 client 下载链接，下载解压后运行。
如果你使用 我提供的 server，那么 默认的 ip 和 port 不用更改，直接 create room。
你就会到达一个新场景，顶部是 room id，但场景中没有一个 marine。&lt;/p&gt;

&lt;p&gt;这需要你的 AI 加入这个 room，才会为你的 AI 创建 marines，当两个 AI 都加入同一个房间后，
对战就开始了。&lt;/p&gt;

&lt;p&gt;刚开始你没有自己的 AI，可以运行 ai 这个 repo 中的示例 AI，来感受一下整个流程。&lt;/p&gt;

&lt;p&gt;当然，你也可以设计出新的玩法，然后 checkout server repo，修改后在你本地运行。
client 中也包含了 unity3d 的项目文件，你也可以 checkout 后 自行修改，添加自己想要的功能&lt;/p&gt;</description>
      <author>yueyoum</author>
      <pubDate>Mon, 12 Aug 2013 18:10:46 +0800</pubDate>
      <link>https://ruby-china.org/topics/13273</link>
      <guid>https://ruby-china.org/topics/13273</guid>
    </item>
    <item>
      <title>骚年，讲个故事吧</title>
      <description>&lt;p&gt;&lt;a href="http://try.codeshift.org/" rel="nofollow" target="_blank"&gt;http://try.codeshift.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;其实这是一个很简单的网站，（还在开发中，所以请无视这个测用的域名）
每个人可以发一个段子，然后其他人跟帖，接着写。&lt;/p&gt;

&lt;p&gt;但这个有一点不一样的地方就是：如果你不喜欢某个地方的后续发展，你可以添加自己的分支，
从而让故事在这里分叉，向多个方向发展。（目前设定一个地方的分叉最多 5 个）&lt;/p&gt;

&lt;p&gt;网站陆陆续续开发了两个月，在如何展示分支 这个地方纠结了很久，
前台代码也在这里改了很多次，&lt;/p&gt;

&lt;p&gt;所以请大伙去用用，给我一些宝贵的意见和建议。
除过功能，在页面设计，或者域名方面都尽情的把你们的砖头仍过来吧&lt;/p&gt;

&lt;p&gt;现在有最核心的发帖功能。&lt;/p&gt;

&lt;p&gt;其他的 比如 今日/本周热门 还不可用，第三方登录不可用，所以只能麻烦大家先注册一下帐号。&lt;/p&gt;

&lt;p&gt;希望大伙给予宝贵的意见和建议。
你可以直接发 email 与我交流 yueyoum (at) gmail.com&lt;/p&gt;</description>
      <author>yueyoum</author>
      <pubDate>Sun, 26 May 2013 19:49:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/11241</link>
      <guid>https://ruby-china.org/topics/11241</guid>
    </item>
    <item>
      <title>实时插入排名的设计</title>
      <description>&lt;p&gt;应用场景就是 游戏中玩家与玩家PK，排名低的人如果赢了，就直接插入到排名高的人前面。
相应受影响的人排名都后移。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/yueyoum/redis-lua-scripts" rel="nofollow" target="_blank"&gt;https://github.com/yueyoum/redis-lua-scripts&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;在 github 中有详细说明。&lt;/p&gt;

&lt;p&gt;也欢迎大家提供不同解决办法！&lt;/p&gt;</description>
      <author>yueyoum</author>
      <pubDate>Tue, 21 May 2013 23:15:19 +0800</pubDate>
      <link>https://ruby-china.org/topics/11138</link>
      <guid>https://ruby-china.org/topics/11138</guid>
    </item>
  </channel>
</rss>
