采用 LSP 方式进行网络加速需要部署 SOCKS5 代理服务器作为加速节点,加速客户端自动选择最快的代理服务器作为当前的转发节点。

开发人员在客户端需要完成的动作有:

1.编写我们自己的 LSP 协议动态库,重新实现我们需要的相关 socket 函数,如 connect

2.在用户的主机安装我们自己的 LSP 协议,这一操作可以放入我们的应用程序部署的时候完成,也可以在我们的加速器每次启动的时候进行部署;

3.当游戏客户端调用 connect 函数(或 WSAConnect 函数)试图连接游戏服务器时,通过 LSP 将连接重定向到代理服务器,并采用 SOCKS5 协议规范与代理服务器进行数据协商,由代理服务器来连接真正的游戏服务器,并将游戏服务器的数据原封不动转发给用户、同时将用户的数据原封不动转发给游戏服务器。

- 阅读剩余部分 -

使用 fit 方法

public Intervention\Image\Image fit( int $width, [ [int $height], [Closure $callback, [ string $position ]] ])
// open file a image resource
$img = Image::make('public/foo.jpg');

// crop the best fitting 5:3 (600x360) ratio and resize to 600x360 pixel
$img->fit(600, 360);

// crop the best fitting 1:1 ratio (200x200) and resize to 200x200 pixel
$img->fit(200);

// add callback functionality to retain maximal original image size
$img->fit(800, 600, function ($constraint) {
    $constraint->upsize();
});

EventTarget 接口 addEventListener, removeEventLisener, dispatchEvent

// Simple implementation of EventTarget
var EventTarget = function() {
  this.listeners = {};
};

EventTarget.prototype.listeners = null;
EventTarget.prototype.addEventListener = function(type, callback) {
  if (!(type in this.listeners)) {
    this.listeners[type] = [];
  }
  this.listeners[type].push(callback);
};

EventTarget.prototype.removeEventListener = function(type, callback) {
  if (!(type in this.listeners)) {
    return;
  }
  var stack = this.listeners[type];
  for (var i = 0, l = stack.length; i < l; i++) {
    if (stack[i] === callback){
      stack.splice(i, 1);
      return;
    }
  }
};

EventTarget.prototype.dispatchEvent = function(event) {
  if (!(event.type in this.listeners)) {
    return true;
  }
  var stack = this.listeners[event.type];

  for (var i = 0, l = stack.length; i < l; i++) {
    stack[i].call(this, event);
  }
  return !event.defaultPrevented;
};

使用 python 的 MongoEngine 库时修改了模型, 删除某列字段后出现错误.

我是在 mongo shell 使用 update 语句 配合 $unset 原子操作来删除相应字段:

(env) F:\workspace\omrh>mongo
>use yourdb
>db.yourdb.update({}, {$unset: {the_delete_filed: ""}}, false, true)
WriteResult({ "nMatched" : 559173, "nUpserted" : 0, "nModified" : 559173 })

- 阅读剩余部分 -